diff --git a/.classpath b/.classpath index eabc35c4180..574e1c7f83d 100644 --- a/.classpath +++ b/.classpath @@ -4,7 +4,6 @@ - @@ -16,17 +15,17 @@ - + - + - + diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 00000000000..e1a034449f9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1 @@ +Please read the Issues section of the Contributing Rules at the "Contributing" link to the right before submitting an issue report. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 00000000000..0257f89eea7 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,17 @@ +### All Submissions: + +* [ ] Have you followed the guidelines in our Contributing document? +* [ ] Have you checked to ensure there aren't other open [Pull Requests](https://github.com/arduino/Arduino/pulls?q=) for the same update/change? + + + +### New Feature Submissions: + +1. [ ] Does your submission pass tests? +2. [ ] Have you lint your code locally prior to submission? + +### Changes to Core Features: + +* [ ] Have you added an explanation of what your changes do and why you'd like us to include them? +* [ ] Have you written new tests for your core changes, as applicable? +* [ ] Have you successfully ran tests with your changes diff --git a/.github/workflows/ant.yml b/.github/workflows/ant.yml new file mode 100644 index 00000000000..0a2e0a343e6 --- /dev/null +++ b/.github/workflows/ant.yml @@ -0,0 +1,34 @@ +name: Java CI + +on: + push: + pull_request: + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Set up JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Build with Ant + working-directory: ./build + run: | + sed -i 's###' build.xml + ant clean dist + - name: Install X virtual framebuffer + run: sudo apt-get install -y xvfb + - name: Run tests + working-directory: ./app + run: xvfb-run --auto-servernum --server-args "-screen 0 1024x768x24" ant test -Drunning-from-github-action=1 + - name: Publish results + uses: actions/upload-artifact@v1 + with: + name: html-results + path: app/test-bin/results/html/ + - name: Cleanup xvfb + uses: bcomnes/cleanup-xvfb@v1 diff --git a/.gitignore b/.gitignore index 0ff213c4047..52ef58c5d36 100644 --- a/.gitignore +++ b/.gitignore @@ -48,6 +48,7 @@ build/linux/*.tar.bz2 build/linux/*.zip build/linux/libastylej* build/linux/liblistSerials* +build/shared/arduino-examples* build/shared/reference*.zip build/shared/Edison*.zip build/shared/Galileo*.zip diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d4b6b1e8dd7..e84deb9c3a0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,102 +1,80 @@ -## Contributing guide -This document serves as a checklist before contributing to this repository. It includes includes links to read up on if topics are unclear to you. - -This guide mainly focuses on the proper use of Git. It has some overlap with the more general information found in the [Development Policy File](https://github.com/arduino/Arduino/wiki/Development-Policy). - -### 1. Before using the issue tracker -To report a bug or a small enhancement please use the [issue tracker](http://github.com/arduino/Arduino/issues). But check the following boxes before posting an issue: - -- [ ] `Your issue is NOT a question about an Arduino sketch.` Sketch questions are handled on the [Arduino Forum](http://forum.arduino.cc/). -- [ ] `Check if your issue has already been resolved in the` [hourly build](http://www.arduino.cc/en/Main/Software#hourly) -- [ ] `Your issue is not a duplicate.` So search for similar open and closed issues and pull-requests. -- [ ] `Make sure you are working on the right repository. See the table below.` - -| Repositories | Projects | -|---|---| -|[Arduino](https://github.com/arduino/Arduino) | Arduino IDE, arduino.cc (but not the Arduino Playground), Library Manager | -|[Arduino Playground](http://forum.arduino.cc/index.php?board=24.0) | This is a publicly editable wiki. Please either make the edit yourself or create a post | -|[Arduino Forum](https://github.com/arduino/forum-issues) | Issues about the Arduino Forum | -| [Libraries for Arduino IDE](https://github.com/arduino-libraries) | Changing libraries for the IDE | -| [Arduino-builder](https://github.com/arduino/arduino-builder)| | -|[Arduino Web Editor](https://github.com/arduino/arduino-create-agent) | | -|[Arduino SAMD Boards](https://github.com/arduino/ArduinoCore-samd)|Zero, MKR1000, MKRZero, etc. | -|[Arduino SAM Boards](https://github.com/arduino/ArduinoCore-sam)| Due | -|[Arduino AVR Boards toolchain (avr-gcc)](https://github.com/arduino/toolchain-avr)| | -|[Arduino's build of AVRDUDE](https://github.com/arduino/avrdude-build-script)|| -|Third party repository | for third party libraries, hardware packages or sketches | - -### 2. Posting the issue -When you have checked the previous boxes. Please consider the following points before posting the issue. - -- [ ] `Describe the issue based on the behaviour you were expecting` -- [ ] `Post complete error messages using markdown code fencing:` [Markdown Code Fencing Example](https://guides.github.com/features/mastering-markdown/#examples) -- [ ] `Provide a full set of steps necessary to reproduce the issue` -- [ ] `Demonstration code should be complete, correct and the minimum amount necessary to reproduce the issue` -- [ ] `Library Manager submissions: make sure your library meets all the requirements listed in the` [Library Manager FAQ](https://github.com/arduino/Arduino/wiki/Library-Manager-FAQ) - -### 3. Pull Requests -Before starting to work on bigger topics like modifying the API or changes with backward compatibility trade-offs please discuss them in the [mailing list](https://groups.google.com/a/arduino.cc/forum/#!forum/developers) first. - -### 4. Commit messages -An easy to read pull request will speed up the merging process. Your commit messages need to be logically separate. And containing enough information on their own. When this is done consistently your pull request will have an easy to read log of changes. - -Your commits need to be [atomic](https://www.freshconsulting.com/atomic-commits/) which allows the repository to remain flexible after merging. - -If you did not read the following 7 points before or just want to fresh up. Please read up on them on this [website](https://chris.beams.io/posts/git-commit) by Chris Beams. - -1. Separate subject from body with a blank line -2. Limit the subject line (first line) to 50 characters -3. Capitalize the subject line -4. Do not end the subject line with a period `(.)` -5. Use the imperative mood in the subject line. -This should be in the written as giving an instruction for example "Fixed save-as bug" (it shows what the PR achieves when merging it) -6. Wrap body at 72 characters -7. Use the body to explain what, why and how - -If your pull request fixes, closes or resolves an issue please reference it in the body with the following [syntax](https://help.github.com/articles/closing-issues-via-commit-messages/). Also see the last lines of the following example. - -A general example with these 7 guidelines in mind is shown below (from the same website of [Chris Beams](https://chris.beams.io/posts/git-commit)): -``` -Summarize changes in around 50 characters or less - -More detailed explanatory text, if necessary. Wrap it to about 72 -characters or so. In some contexts, the first line is treated as the -subject of the commit and the rest of the text as the body. The -blank line separating the summary from the body is critical (unless -you omit the body entirely); various tools like `log`, `shortlog` -and `rebase` can get confused if you run the two together. - -Explain the problem that this commit is solving. Focus on why you -are making this change as opposed to how (the code explains that). -Are there side effects or other unintuitive consequences of this -change? Here's the place to explain them. - -Further paragraphs come after blank lines. - - - Bullet points are okay, too - - - Typically a hyphen or asterisk is used for the bullet, preceded - by a single space, with blank lines in between, but conventions - vary here - -If you use an issue tracker, put references to them at the bottom, -like this: - -Resolves: #123 -See also: #456, #789 -``` - -### 5. Rebasing pull requests -When different people are working on the Arduino project simultaneously, pull requests can go stale quickly. A "stale" pull request is one that is no longer up to date with the latest merges in the project. It needs to be updated before it can be merged. - -Most often pull requests become stale when merge conflicts occur. This happens when two pull requests both modify similar lines in the same file and one gets merged, the unmerged request will now have a merge conflict and needs updating. - -When your pull request is stale, you will need to rebase your branch on the current master branch before you can merge it without conflicts. - -More information about rebasing can be found at the repository of [edX](https://github.com/edx/edx-platform/wiki/How-to-Rebase-a-Pull-Request). - -### 6. Merged! -When your pull request is merged please update the documentation if the changes require it: - -- [ ] Edit appropiate [Wiki pages](https://github.com/arduino/Arduino/wiki/_pages) -- [ ] Submit an [issue report](https://github.com/arduino/Arduino/issues/new) requesting changes to the [arduino.cc reference pages](https://www.arduino.cc/en/Reference/HomePage) +# Contributing Rules +Thanks for your interest in contributing to this free open source project! Arduino welcomes help from the community. There are several ways you can get involved: + +| Type of contribution | Contribution method | +|-|-| +| - Support request
- Question
- Problem with your Arduino
- Discussion | Post on the [Arduino Forum](http://forum.arduino.cc) | +| - Bug report
- [Arduino website](https://www.arduino.cc/) issue or improvement
- Feature request | Issue report (read the [issue guidelines](#issues)) | +| - Bug fix
- Enhancement | Pull Request (read the [pull request guidelines](#pull-requests)) | +| Translations for the Arduino IDE | [transifex](https://www.transifex.com/mbanzi/arduino-ide-15/) | +| Translations for the [Language Reference](https://www.arduino.cc/reference) | [Reference repositories](https://github.com/arduino?q=reference-) | +| Monetary | - [Donate](https://www.arduino.cc/en/Main/Contribute)
- [Buy official products](https://store.arduino.cc) | + + +## Issues +- Do you need help or have a question about using Arduino? Support requests should be made to the appropriate section of the [Arduino forum](http://forum.arduino.cc) rather than an issue report. **Issue reports are to be used to report bugs or make feature requests only.** +- Check if your issue has already been resolved in the [hourly build](http://www.arduino.cc/en/Main/Software#hourly). +- Submit issue reports to the correct repository: + +| Issue topic | Report at | +|-|-| +| Arduino IDE, arduino.cc (but not the Arduino Forum), Library Manager additions | [arduino/Arduino](https://github.com/arduino/Arduino/issues) | +| [Language Reference](https://www.arduino.cc/reference) | [Reference repositories](https://github.com/arduino?q=reference-) | +| Arduino Forum | [arduino/forum-issues](https://github.com/arduino/forum-issues/issues) | +| Arduino libraries | [arduino-libraries](https://github.com/arduino-libraries) | +| Built-in examples | [arduino/arduino-examples](https://github.com/arduino/arduino-examples/issues) | +| arduino-builder | [arduino/arduino-builder](https://github.com/arduino/arduino-builder/issues) | +| [Arduino Web Editor](https://create.arduino.cc/editor) | [**Create > Editor** section of the Arduino Forum](http://forum.arduino.cc/index.php?board=101.0) | +| Arduino AVR Boards (Uno, Mega, Leonardo, etc.) | [arduino/ArduinoCore-avr](https://github.com/arduino/ArduinoCore-avr/issues) | +| Arduino SAMD Boards (Zero, MKR1000, MKRZero, etc.) | [arduino/ArduinoCore-samd](https://github.com/arduino/ArduinoCore-samd/issues) | +| Arduino SAM Boards (Due) | [arduino/ArduinoCore-sam](https://github.com/arduino/ArduinoCore-sam/issues) | +| AVR Toolchain for Arduino | [arduino/toolchain-avr](https://github.com/arduino/toolchain-avr/issues) | +| Arduino's build of AVRDUDE | [arduino/avrdude-build-script](https://github.com/arduino/avrdude-build-script/issues) | +| Security vulnerability | See: [Coordinated Vulnerability Disclosure Policy](https://github.com/arduino/arduino-cvd-policy) | +| 3rd party libraries, hardware, or sketches | Report issues to the author of the software, *not* Arduino. | + +When you're not sure where your issue belongs, report it at [arduino/Arduino](https://github.com/arduino/Arduino) and we'll move it to where it belongs (but remember: Only bug reports and feature requests, do not ask for help with your own code there). + +- Search [existing pull requests and issues](https://github.com/arduino/Arduino/issues?q=) to be sure it hasn't already been reported. If you have additional information to provide about an existing issue then please comment on that issue. If you simply want to express your support then use the [Reactions feature](https://github.com/blog/2119-add-reactions-to-pull-requests-issues-and-comments). +- State the newest version of the Arduino IDE you have verified the issue with and which operating system you are using. +- The issue title should be concise yet descriptive. Vague titles make it difficult to know the purpose of the issue when looking through the list of reports and may cause your issue to not be given proper attention. +- Describe the issue and what behavior you were expecting. Post complete error messages using [Markdown code fencing](https://guides.github.com/features/mastering-markdown/#examples), three backticks before and after the error message: + ```` + ``` + my error message here + ``` + ```` +- Provide a full set of steps necessary to reproduce the issue. Demonstration code should be complete, correct, and simplified to the minimum amount of code necessary to reproduce the issue. Please use [Markdown code fencing](https://guides.github.com/features/mastering-markdown/#examples), three backticks before and after the code: + ```` + ``` + my code here + ``` + ```` +- Be responsive. We may need you to provide more information, please respond as soon as possible. +- If you find a solution to your problem update your issue report with an explanation of how you were able to fix it and close the issue. +- Library Manager submissions: make sure your library meets all the requirements listed in the [Library Manager FAQ](https://github.com/arduino/Arduino/wiki/Library-Manager-FAQ). + + +## Pull Requests +Pull requests are an easy and effective way to submit a proposal for a change to the content of one of Arduino's repositories. The Arduino team can merge your change with a single click! You can find more information about pull requests [here](https://help.github.com/articles/creating-a-pull-request/). +- Big changes, changes to the API, or changes with backward compatibility trade-offs should be first discussed in the [Arduino Developers Mailing List](https://groups.google.com/a/arduino.cc/forum/#!forum/developers). +- Search [existing pull requests](https://github.com/arduino/Arduino/pulls?q=) to see if one has already been submitted for this change. Search the [issues](https://github.com/arduino/Arduino/issues?q=is%3Aissue) to see if there has been a discussion on this topic and whether your pull request can close any issues. +- Code formatting should be consistent with the style used in the existing code. +- Don't leave commented out code. A record of this code is already preserved in the commit history. +- All commits must be atomic. This means that the commit completely accomplishes a single task. Each commit should result in fully functional code. Multiple tasks should not be combined in a single commit, but a single task should not be split over multiple commits (e.g. one commit per file modified is not a good practice). For more information see http://www.freshconsulting.com/atomic-commits. +- Each pull request should address a single bug fix or enhancement. This may consist of multiple commits. If you have multiple, unrelated fixes or enhancements to contribute, submit them as separate pull requests. +- Commit messages: + - Use the [imperative mood](http://chris.beams.io/posts/git-commit/#imperative) in the title. For example: "Apply editor.indent preference" + - Capitalize the title. + - Do not end the title with a period. + - Separate title from the body with a blank line. If you're committing via GitHub or GitHub Desktop this will be done automatically. + - Wrap body at 72 characters. + - Completely explain the purpose of the commit. Include a rationale for the change, any caveats, side-effects, etc. + - If your pull request fixes an issue in the issue tracker, use the [closes/fixes/resolves syntax](https://help.github.com/articles/closing-issues-via-commit-messages) in the body to indicate this. + - See http://chris.beams.io/posts/git-commit for more tips on writing good commit messages. +- Pull request title and description should follow the same guidelines as commit messages. +- Rebasing pull requests is OK and encouraged. After submitting your pull request some changes may be requested. Rather than adding unnecessary extra commits to the pull request, you can squash these changes into the existing commit and then do a force push to your fork. When you do a force push to your fork, the PR will be updated with your new changes, so there is no need to open a new PR to make changes. Leave a comment on the pull request thread to explain that the history has been changed. This will help to keep the commit history of the repository clean. +- After your pull request is merged please update the documentation if the changes require it: + - Edit appropriate [Wiki pages](https://github.com/arduino/Arduino/wiki/_pages). + - Submit an [issue report](https://github.com/arduino/Arduino/issues/new) requesting changes to the [arduino.cc reference pages](https://www.arduino.cc/en/Reference/HomePage). +- For more contributing guidelines, see the [Arduino Development Policy](https://github.com/arduino/Arduino/wiki/Development-Policy). diff --git a/README.md b/README.md index 0bc3e34fb3a..ab7504dd2fc 100644 --- a/README.md +++ b/README.md @@ -1,54 +1,59 @@ -Arduino -======== - -* Arduino is an open-source physical computing platform based on a simple I/O -board and a development environment that implements the Processing/Wiring -language. Arduino can be used to develop stand-alone interactive objects or -can be connected to software on your computer (e.g. Flash, Processing and MaxMSP). -The boards can be assembled by hand or purchased preassembled; the open-source -IDE can be downloaded for free at https://www.arduino.cc/en/Main/Software - -* For more information, see the website at: https://www.arduino.cc/ -or the forums at: https://forum.arduino.cc/ -You can also follow Arduino on Twitter at: https://twitter.com/arduino or -like Arduino on Facebook at: https://www.facebook.com/official.arduino - -* To report a *bug* in the software or to request *a simple enhancement* go to: -https://github.com/arduino/Arduino/issues - -* More complex requests and technical discussion should go on the Arduino Developers -mailing list: -https://groups.google.com/a/arduino.cc/forum/#!forum/developers - -* If you're interested in modifying or extending the Arduino software, we strongly -suggest discussing your ideas on the Developers mailing list *before* starting -to work on them. That way you can coordinate with the Arduino Team and others, -giving your work a higher chance of being integrated into the official release -https://groups.google.com/a/arduino.cc/forum/#!forum/developers - -Installation ------------- -Detailed instructions for installation in popular operating systems. -For Linux: https://www.arduino.cc/en/Guide/Linux (see also the Arduino playground page https://playground.arduino.cc/Learning/Linux) -For macOS X: https://www.arduino.cc/en/Guide/MacOSX -For Windows: https://www.arduino.cc/en/Guide/Windows - -Credits --------- -Arduino is an open source project, supported by many. - -The Arduino team is composed of Massimo Banzi, David Cuartielles, Tom Igoe -and David A. Mellis. - -Arduino uses -[GNU avr-gcc toolchain](https://gcc.gnu.org/wiki/avr-gcc), -[GCC ARM Embedded toolchain](https://launchpad.net/gcc-arm-embedded), -[avr-libc](http://www.nongnu.org/avr-libc/), -[avrdude](http://www.nongnu.org/avrdude/), -[bossac](http://www.shumatech.com/web/products/bossa), -[openOCD](http://openocd.org/) -and code from [Processing](https://www.processing.org) -and [Wiring](http://wiring.org.co). - -Icon and about image designed by [ToDo](https://www.todo.to.it/) +

+ +

+**Important Notice**: This repository contains the legacy Arduino IDE 1.x, which is no longer in active development. For the latest features and updates, please visit the [Arduino IDE 2.x](https://github.com/arduino/arduino-ide) repository. If you encounter issues related to the newer IDE, please report them there. + +Arduino is an open-source physical computing platform based on a simple I/O board and a development environment that implements the Processing/Wiring language. Arduino can be used to develop stand-alone interactive objects or can be connected to software on your computer (e.g. Flash, Processing and MaxMSP). The boards can be assembled by hand or purchased preassembled; the open-source IDE can be downloaded for free at [https://arduino.cc](https://www.arduino.cc/en/Main/Software). + +![Github](https://img.shields.io/github/v/release/arduino/Arduino) + +## More info at + +- [Our website](https://www.arduino.cc/) +- [The forums](https://forum.arduino.cc/) +- Follow us on [Twitter](https://twitter.com/arduino) +- And like us at [Facebook](https://www.facebook.com/official.arduino) + +## Bug reports and technical discussions + +- To report a *bug* in the software or to request *a simple enhancement*, go to [Github Issues](https://github.com/arduino/Arduino/issues). +- More complex requests and technical discussions should go on the [Arduino Developers mailing list](https://groups.google.com/a/arduino.cc/forum/#!forum/developers). +- If you're interested in modifying or extending the Arduino software, we strongly suggest discussing your ideas on the [Developers mailing list](https://groups.google.com/a/arduino.cc/forum/#!forum/developers) *before* starting to work on them. That way you can coordinate with the Arduino Team and others, giving your work a higher chance of being integrated into the official release. + +### Security + +If you think you found a vulnerability or other security-related bug in this project, please read our [security policy](https://github.com/arduino/Arduino/security/policy) and report the bug to our Security Team 🛡️. Thank you! + +e-mail contact: security@arduino.cc + +## Installation + +Detailed instructions for installation on popular operating systems can be found at: + +- [Linux](https://www.arduino.cc/en/Guide/Linux) (see also the [Arduino playground](https://playground.arduino.cc/Learning/Linux)) +- [macOS](https://www.arduino.cc/en/Guide/macOS) +- [Windows](https://www.arduino.cc/en/Guide/Windows) + +## Contents of this repository + +This repository contains just the code for the Arduino IDE itself. Originally, it also contained the AVR and SAM Arduino core and libraries (i.e. the code that is compiled as part of a sketch and runs on the actual Arduino device), but those have been moved into their own repositories. They are still automatically downloaded as part of the build process and included in built releases, though. + +The repositories for these extra parts can be found here: +- Non-core specific Libraries are listed under: [Arduino Libraries](https://github.com/arduino-libraries/) (and also a few other places, see `build/build.xml`). +- The AVR core can be found at: [ArduinoCore-avr](https://github.com/arduino/ArduinoCore-avr). +- Other cores are not included by default but can be installed through the board manager. Their repositories can also be found under [Arduino GitHub organization](https://github.com/arduino/). + +## Building and testing + +Instructions for building the IDE and running unit tests can be found on the wiki: +- [Building Arduino](https://github.com/arduino/Arduino/wiki/Building-Arduino) +- [Testing Arduino](https://github.com/arduino/Arduino/wiki/Testing-Arduino) + +## Credits + +Arduino is an open-source project, supported by many. The Arduino team is composed of Massimo Banzi, David Cuartielles, Tom Igoe, and David A. Mellis. + +Arduino uses [GNU avr-gcc toolchain](https://gcc.gnu.org/wiki/avr-gcc), [GCC ARM Embedded toolchain](https://launchpad.net/gcc-arm-embedded), [avr-libc](https://www.nongnu.org/avr-libc/), [avrdude](https://www.nongnu.org/avrdude/), [bossac](http://www.shumatech.com/web/products/bossa), [openOCD](http://openocd.org/), and code from [Processing](https://www.processing.org) and [Wiring](http://wiring.org.co). + +Icon and about image designed by [ToDo](https://www.todo.to.it/). diff --git a/app/.classpath b/app/.classpath index f851717ca2a..ea9425b4990 100644 --- a/app/.classpath +++ b/app/.classpath @@ -4,7 +4,6 @@ - @@ -30,20 +29,17 @@ - - - + - - + @@ -53,4 +49,8 @@ + + + + diff --git a/app/build.xml b/app/build.xml index cc38670adc6..d2e9ad0069d 100644 --- a/app/build.xml +++ b/app/build.xml @@ -1,5 +1,5 @@ - + @@ -105,7 +105,20 @@ - + + + + + + + + + + + + + + @@ -117,9 +130,20 @@ + + - - + + + + + + + + + + + @@ -127,6 +151,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/lib/rsyntaxtextarea-BSD.txt b/app/lib/RSyntaxTextArea.License.txt similarity index 95% rename from app/lib/rsyntaxtextarea-BSD.txt rename to app/lib/RSyntaxTextArea.License.txt index 3a6e638904a..f0f2d4c743e 100644 --- a/app/lib/rsyntaxtextarea-BSD.txt +++ b/app/lib/RSyntaxTextArea.License.txt @@ -21,4 +21,4 @@ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/app/lib/commons-io-2.6.jar b/app/lib/commons-io-2.6.jar new file mode 100644 index 00000000000..00556b119d4 Binary files /dev/null and b/app/lib/commons-io-2.6.jar differ diff --git a/app/lib/commons-lang3-3.3.2.jar b/app/lib/commons-lang3-3.3.2.jar deleted file mode 100644 index 2ce08ae99d1..00000000000 Binary files a/app/lib/commons-lang3-3.3.2.jar and /dev/null differ diff --git a/app/lib/commons-lang3-3.8.1.jar b/app/lib/commons-lang3-3.8.1.jar new file mode 100644 index 00000000000..2c65ce67d5c Binary files /dev/null and b/app/lib/commons-lang3-3.8.1.jar differ diff --git a/app/lib/jackson-module-mrbean-2.9.5.jar b/app/lib/jackson-module-mrbean-2.9.5.jar deleted file mode 100644 index dc7f5a05721..00000000000 Binary files a/app/lib/jackson-module-mrbean-2.9.5.jar and /dev/null differ diff --git a/app/lib/jmdns-3.5.3.jar b/app/lib/jmdns-3.5.3.jar deleted file mode 100644 index d4d9c67f46c..00000000000 Binary files a/app/lib/jmdns-3.5.3.jar and /dev/null differ diff --git a/app/lib/jmdns-3.5.5.jar b/app/lib/jmdns-3.5.5.jar new file mode 100644 index 00000000000..a8b65ff2ec7 Binary files /dev/null and b/app/lib/jmdns-3.5.5.jar differ diff --git a/arduino-core/lib/jssc-2.8.0-arduino1.jar b/app/lib/jssc-2.8.0-arduino4.jar old mode 100755 new mode 100644 similarity index 94% rename from arduino-core/lib/jssc-2.8.0-arduino1.jar rename to app/lib/jssc-2.8.0-arduino4.jar index 3cf257ea634..623a3833bce Binary files a/arduino-core/lib/jssc-2.8.0-arduino1.jar and b/app/lib/jssc-2.8.0-arduino4.jar differ diff --git a/app/lib/jtouchbar-1.0.0.jar b/app/lib/jtouchbar-1.0.0.jar new file mode 100644 index 00000000000..2c473bec881 Binary files /dev/null and b/app/lib/jtouchbar-1.0.0.jar differ diff --git a/app/lib/jtouchbar.LICENSE.MIT.txt b/app/lib/jtouchbar.LICENSE.MIT.txt new file mode 100644 index 00000000000..f4fa99707a0 --- /dev/null +++ b/app/lib/jtouchbar.LICENSE.MIT.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 thizzer.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/app/lib/rsyntaxtextarea-2.6.1.jar b/app/lib/rsyntaxtextarea-2.6.1.jar deleted file mode 100644 index b834e2d412b..00000000000 Binary files a/app/lib/rsyntaxtextarea-2.6.1.jar and /dev/null differ diff --git a/app/lib/rsyntaxtextarea-3.0.3-SNAPSHOT.jar b/app/lib/rsyntaxtextarea-3.0.3-SNAPSHOT.jar new file mode 100644 index 00000000000..e1844494aca Binary files /dev/null and b/app/lib/rsyntaxtextarea-3.0.3-SNAPSHOT.jar differ diff --git a/app/src/cc/arduino/contributions/ContributionsSelfCheck.java b/app/src/cc/arduino/contributions/ContributionsSelfCheck.java index 7812f62ad7f..50e5e8617ea 100644 --- a/app/src/cc/arduino/contributions/ContributionsSelfCheck.java +++ b/app/src/cc/arduino/contributions/ContributionsSelfCheck.java @@ -29,32 +29,33 @@ package cc.arduino.contributions; +import cc.arduino.UpdatableBoardsLibsFakeURLsHandler; import cc.arduino.contributions.libraries.LibraryInstaller; import cc.arduino.contributions.libraries.filters.UpdatableLibraryPredicate; import cc.arduino.contributions.packages.ContributionInstaller; import cc.arduino.contributions.packages.filters.UpdatablePlatformPredicate; import cc.arduino.view.NotificationPopup; -import processing.app.Base; -import processing.app.BaseNoGui; -import processing.app.Editor; -import processing.app.I18n; +import processing.app.*; import javax.swing.*; import javax.swing.event.HyperlinkListener; import java.awt.event.WindowEvent; import java.awt.event.WindowFocusListener; +import java.net.URL; import java.util.TimerTask; import static processing.app.I18n.tr; -public class ContributionsSelfCheck extends TimerTask { +public class ContributionsSelfCheck extends TimerTask implements NotificationPopup.OptionalButtonCallbacks { private final Base base; private final HyperlinkListener hyperlinkListener; private final ContributionInstaller contributionInstaller; private final LibraryInstaller libraryInstaller; private final ProgressListener progressListener; + private final String boardsManagerURL = "http://boardsmanager/DropdownUpdatableCoresItem"; + private final String libraryManagerURL = "http://librarymanager/DropdownUpdatableLibrariesItem"; private volatile boolean cancelled; private volatile NotificationPopup notificationPopup; @@ -81,13 +82,41 @@ public void run() { return; } - String text; + boolean setAccessible = PreferencesData.getBoolean("ide.accessible"); + final String text; + final String button1Name; + final String button2Name; + String openAnchorBoards = ""; + String closeAnchorBoards = ""; + String openAnchorLibraries = ""; + String closeAnchorLibraries = ""; + + // if accessibility mode and board updates are available set the button name and clear the anchors + if(setAccessible && updatablePlatforms) { + button1Name = tr("Boards"); + openAnchorBoards = ""; + closeAnchorBoards = ""; + } + else { // when not accessibility mode or no boards to update no button is needed + button1Name = null; + } + + // if accessibility mode and libraries updates are available set the button name and clear the anchors + if (setAccessible && updatableLibraries) { + button2Name = tr("Libraries"); + openAnchorLibraries = ""; + closeAnchorLibraries = ""; + } + else { // when not accessibility mode or no libraries to update no button is needed + button2Name = null; + } + if (updatableLibraries && !updatablePlatforms) { - text = I18n.format(tr("Updates available for some of your {0}libraries{1}"), "", ""); + text = I18n.format(tr("Updates available for some of your {0}libraries{1}"), openAnchorLibraries, closeAnchorLibraries); } else if (!updatableLibraries && updatablePlatforms) { - text = I18n.format(tr("Updates available for some of your {0}boards{1}"), "", ""); + text = I18n.format(tr("Updates available for some of your {0}boards{1}"), openAnchorBoards, closeAnchorBoards); } else { - text = I18n.format(tr("Updates available for some of your {0}boards{1} and {2}libraries{3}"), "", "", "", ""); + text = I18n.format(tr("Updates available for some of your {0}boards{1} and {2}libraries{3}"), openAnchorBoards, closeAnchorBoards, openAnchorLibraries, closeAnchorLibraries); } if (cancelled) { @@ -96,7 +125,13 @@ public void run() { SwingUtilities.invokeLater(() -> { Editor ed = base.getActiveEditor(); - notificationPopup = new NotificationPopup(ed, hyperlinkListener, text); + boolean accessibleIde = PreferencesData.getBoolean("ide.accessible"); + if (accessibleIde) { + notificationPopup = new NotificationPopup(ed, hyperlinkListener, text, false, this, button1Name, button2Name); + } + else { // if not accessible view leave it the same + notificationPopup = new NotificationPopup(ed, hyperlinkListener, text); + } if (ed.isFocused()) { notificationPopup.begin(); return; @@ -122,6 +157,26 @@ public void windowGainedFocus(WindowEvent evt) { }); } + private void goToManager(String link) { + try { + ((UpdatableBoardsLibsFakeURLsHandler) hyperlinkListener) + .openBoardLibManager(new URL(link)); + } catch (Exception e) { + System.err.println("Error while attempting to open board manager: " + + e.getMessage()); + } + } + + // callback for boards button + public void onOptionalButton1Callback() { + goToManager(boardsManagerURL); + } + + // callback for libraries button + public void onOptionalButton2Callback() { + goToManager(libraryManagerURL); + } + static boolean checkForUpdatablePlatforms() { return BaseNoGui.indexer.getPackages().stream() .flatMap(pack -> pack.getPlatforms().stream()) diff --git a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryReleasesComparator.java b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryReleasesComparator.java index b302306523c..11436b2ccfb 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryReleasesComparator.java +++ b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryReleasesComparator.java @@ -32,7 +32,9 @@ import cc.arduino.contributions.libraries.ContributedLibrary; import cc.arduino.contributions.libraries.ContributedLibraryReleases; +import java.util.Arrays; import java.util.Comparator; +import java.util.List; public class ContributedLibraryReleasesComparator implements Comparator { @@ -47,9 +49,11 @@ public int compare(ContributedLibraryReleases o1, ContributedLibraryReleases o2) ContributedLibrary lib1 = o1.getLatest(); ContributedLibrary lib2 = o2.getLatest(); - if (lib1.getTypes() == null || lib2.getTypes() == null) { - return compareName(lib1, lib2); - } + List types1 = lib1.getTypes(); + List types2 = lib2.getTypes(); + if (types1 == null) types1 = Arrays.asList(); + if (types2 == null) types2 = Arrays.asList(); + if (lib1.getTypes().contains(firstType) && lib2.getTypes().contains(firstType)) { return compareName(lib1, lib2); } diff --git a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellEditor.java b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellEditor.java index 7f46ba7e903..7c2ecff383f 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellEditor.java +++ b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellEditor.java @@ -98,33 +98,34 @@ public Component getTableCellEditorComponent(JTable table, Object value, editorCell.downgradeChooser.addItem(tr("Select version")); final List notInstalledPrevious = new LinkedList<>(); - final List notIInstalledNewer = new LinkedList<>(); + final List notInstalledNewer = new LinkedList<>(); notInstalled.stream().forEach(input -> { if (!mayInstalled.isPresent() || VersionComparator.greaterThan(mayInstalled.get(), input)) { notInstalledPrevious.add(input); } else { - notIInstalledNewer.add(input); + notInstalledNewer.add(input); } }); - notIInstalledNewer.forEach(editorCell.downgradeChooser::addItem); + notInstalledNewer.forEach(editorCell.downgradeChooser::addItem); notInstalledPrevious.forEach(editorCell.downgradeChooser::addItem); editorCell.downgradeChooser .setVisible(mayInstalled.isPresent() && (!notInstalledPrevious.isEmpty() - || notIInstalledNewer.size() > 1)); + || notInstalledNewer.size() > 1)); editorCell.downgradeButton .setVisible(mayInstalled.isPresent() && (!notInstalledPrevious.isEmpty() - || notIInstalledNewer.size() > 1)); + || notInstalledNewer.size() > 1)); editorCell.versionToInstallChooser.removeAllItems(); notInstalled.forEach(editorCell.versionToInstallChooser::addItem); editorCell.versionToInstallChooser .setVisible(!mayInstalled.isPresent() && notInstalled.size() > 1); + editorCell.setForeground(Color.BLACK); editorCell.setBackground(new Color(218, 227, 227)); // #dae3e3 return editorCell; } diff --git a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellJPanel.java b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellJPanel.java index 99d4b66d23e..a5bb940babc 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellJPanel.java +++ b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellJPanel.java @@ -3,21 +3,12 @@ import static processing.app.I18n.format; import static processing.app.I18n.tr; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Insets; +import java.awt.*; import java.util.Optional; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTable; -import javax.swing.JTextPane; +import javax.swing.*; import javax.swing.border.EmptyBorder; +import javax.swing.border.TitledBorder; import javax.swing.event.HyperlinkEvent; import javax.swing.text.Document; import javax.swing.text.html.HTMLDocument; @@ -28,10 +19,12 @@ import cc.arduino.contributions.libraries.ContributedLibraryReleases; import cc.arduino.contributions.ui.InstallerTableCell; import processing.app.Base; +import processing.app.PreferencesData; import processing.app.Theme; public class ContributedLibraryTableCellJPanel extends JPanel { + final JButton moreInfoButton; final JButton installButton; final Component installButtonPlaceholder; final JComboBox downgradeChooser; @@ -40,12 +33,22 @@ public class ContributedLibraryTableCellJPanel extends JPanel { final JPanel buttonsPanel; final JPanel inactiveButtonsPanel; final JLabel statusLabel; + final JTextPane description; + final TitledBorder titledBorder; + private final String moreInfoLbl = tr("More info"); public ContributedLibraryTableCellJPanel(JTable parentTable, Object value, boolean isSelected) { super(); setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + // Actual title set below + titledBorder = BorderFactory.createTitledBorder(""); + titledBorder.setTitleFont(getFont().deriveFont(Font.BOLD)); + setBorder(titledBorder); + + moreInfoButton = new JButton(moreInfoLbl); + moreInfoButton.setVisible(false); installButton = new JButton(tr("Install")); int width = installButton.getPreferredSize().width; installButtonPlaceholder = Box.createRigidArea(new Dimension(width, 1)); @@ -72,13 +75,19 @@ public ContributedLibraryTableCellJPanel(JTable parentTable, Object value, versionToInstallChooser .setMinimumSize(new Dimension((int)versionToInstallChooser.getPreferredSize().getWidth() + 50, (int)versionToInstallChooser.getPreferredSize().getHeight())); - makeNewDescription(); + description = makeNewDescription(); + add(description); buttonsPanel = new JPanel(); buttonsPanel.setLayout(new BoxLayout(buttonsPanel, BoxLayout.X_AXIS)); buttonsPanel.setOpaque(false); buttonsPanel.add(Box.createHorizontalStrut(7)); + if (PreferencesData.getBoolean("ide.accessible")) { + buttonsPanel.add(moreInfoButton); + buttonsPanel.add(Box.createHorizontalStrut(5)); + buttonsPanel.add(Box.createHorizontalStrut(15)); + } buttonsPanel.add(downgradeChooser); buttonsPanel.add(Box.createHorizontalStrut(5)); buttonsPanel.add(downgradeButton); @@ -111,13 +120,13 @@ public ContributedLibraryTableCellJPanel(JTable parentTable, Object value, add(Box.createVerticalStrut(15)); ContributedLibraryReleases releases = (ContributedLibraryReleases) value; - JTextPane description = makeNewDescription(); // FIXME: happens on macosx, don't know why if (releases == null) return; ContributedLibrary selected = releases.getSelected(); + titledBorder.setTitle(selected.getName()); Optional mayInstalled = releases.getInstalled(); boolean installable, upgradable; @@ -139,9 +148,9 @@ public ContributedLibraryTableCellJPanel(JTable parentTable, Object value, installButtonPlaceholder.setVisible(!(installable || upgradable)); String name = selected.getName(); - String author = selected.getAuthor(); - // String maintainer = selectedLib.getMaintainer(); - String website = selected.getWebsite(); + // String author = selected.getAuthor(); + String maintainer = selected.getMaintainer(); + final String website = selected.getWebsite(); String sentence = selected.getSentence(); String paragraph = selected.getParagraph(); // String availableVer = selectedLib.getVersion(); @@ -152,15 +161,15 @@ public ContributedLibraryTableCellJPanel(JTable parentTable, Object value, String desc = ""; // Library name... - desc += format("{0}", name); +// desc += format("{0}", name); if (mayInstalled.isPresent() && mayInstalled.get().isIDEBuiltIn()) { desc += " Built-In "; } // ...author... desc += format("", midcolor); - if (author != null && !author.isEmpty()) { - desc += format(" by {0}", author); + if (maintainer != null && !maintainer.isEmpty()) { + desc += format(" by {0}", maintainer); } // ...version. @@ -187,13 +196,14 @@ public ContributedLibraryTableCellJPanel(JTable parentTable, Object value, desc += format("{0}", paragraph); desc += "
"; } - if (author != null && !author.isEmpty()) { - desc += format("More info", website); + if (maintainer != null && !maintainer.isEmpty()) { + desc = setButtonOrLink(moreInfoButton, desc, moreInfoLbl, website); } desc += ""; description.setText(desc); - description.setBackground(Color.WHITE); + // copy description to accessibility context for screen readers to use + description.getAccessibleContext().setAccessibleDescription(desc); // for modelToView to work, the text area has to be sized. It doesn't // matter if it's visible or not. @@ -203,20 +213,29 @@ public ContributedLibraryTableCellJPanel(JTable parentTable, Object value, InstallerTableCell .setJTextPaneDimensionToFitContainedText(description, parentTable.getBounds().width); + } - if (isSelected) { - setBackground(parentTable.getSelectionBackground()); - setForeground(parentTable.getSelectionForeground()); - } else { - setBackground(parentTable.getBackground()); - setForeground(parentTable.getForeground()); + // same function as in ContributedPlatformTableCellJPanel - is there a utils file this can move to? + private String setButtonOrLink(JButton button, String desc, String label, String url) { + boolean accessibleIDE = PreferencesData.getBoolean("ide.accessible"); + String retString = desc; + + if (accessibleIDE) { + button.setVisible(true); + button.addActionListener(e -> { + Base.openURL(url); + }); } + else { + // if not accessible IDE, keep link the same EXCEPT that now the link text is translated! + retString += format("{1}
", url, label); + } + + return retString; } + // TODO Make this a method of Theme private JTextPane makeNewDescription() { - if (getComponentCount() > 0) { - remove(0); - } JTextPane description = new JTextPane(); description.setInheritsPopupMenu(true); Insets margin = description.getMargin(); @@ -242,7 +261,6 @@ private JTextPane makeNewDescription() { } }); // description.addKeyListener(new DelegatingKeyListener(parentTable)); - add(description, 0); return description; } @@ -251,4 +269,13 @@ public void setButtonsVisible(boolean enabled) { buttonsPanel.setVisible(enabled); inactiveButtonsPanel.setVisible(!enabled); } + + public void setForeground(Color c) { + super.setForeground(c); + // The description is not opaque, so copy our foreground color to it. + if (description != null) + description.setForeground(c); + if (titledBorder != null) + titledBorder.setTitleColor(c); + } } diff --git a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellRenderer.java b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellRenderer.java index bc4b3ffd940..d107f90208a 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellRenderer.java +++ b/app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCellRenderer.java @@ -46,6 +46,7 @@ public Component getTableCellRendererComponent(JTable table, Object value, value, isSelected); cell.setButtonsVisible(false); + cell.setForeground(Color.BLACK); if (row % 2 == 0) { cell.setBackground(new Color(236, 241, 241)); // #ecf1f1 } else { diff --git a/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java b/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java index 2eae83e875b..69ab10006c9 100644 --- a/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java +++ b/app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java @@ -35,12 +35,12 @@ import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Optional; -import java.util.function.Predicate; import javax.swing.Box; import javax.swing.JComboBox; @@ -52,6 +52,7 @@ import cc.arduino.contributions.libraries.ContributedLibraryReleases; import cc.arduino.contributions.libraries.LibraryInstaller; import cc.arduino.contributions.libraries.LibraryTypeComparator; +import cc.arduino.contributions.libraries.ui.MultiLibraryInstallDialog.Result; import cc.arduino.contributions.ui.DropdownItem; import cc.arduino.contributions.ui.FilteredAbstractTableModel; import cc.arduino.contributions.ui.InstallerJDialog; @@ -65,13 +66,16 @@ public class LibraryManagerUI extends InstallerJDialog typeFilter; @Override protected FilteredAbstractTableModel createContribModel() { return new LibrariesIndexTableModel(); } + private LibrariesIndexTableModel getContribModel() { + return (LibrariesIndexTableModel) contribModel; + } + @Override protected TableCellRenderer createCellRenderer() { return new ContributedLibraryTableCellRenderer(); @@ -85,7 +89,7 @@ protected void onInstall(ContributedLibrary selectedLibrary, Optional selected = (DropdownItem) typeChooser.getSelectedItem(); previousRowAtPoint = -1; - if (selected != null && typeFilter != selected.getFilterPredicate()) { - typeFilter = selected.getFilterPredicate(); + if (selected != null && extraFilter != selected.getFilterPredicate()) { + extraFilter = selected.getFilterPredicate(); if (contribTable.getCellEditor() != null) { contribTable.getCellEditor().stopCellEditing(); } - updateIndexFilter(filters, categoryFilter.and(typeFilter)); + updateIndexFilter(filters, categoryFilter.and(extraFilter)); } } }; + private Collection oldCategories = new ArrayList<>(); + private Collection oldTypes = new ArrayList<>(); + public void updateUI() { - DropdownItem previouslySelectedCategory = (DropdownItem) categoryChooser.getSelectedItem(); - DropdownItem previouslySelectedType = (DropdownItem) typeChooser.getSelectedItem(); + // Check if categories or types have changed + Collection categories = BaseNoGui.librariesIndexer.getIndex().getCategories(); + List types = new LinkedList<>(BaseNoGui.librariesIndexer.getIndex().getTypes()); + Collections.sort(types, new LibraryTypeComparator()); - categoryChooser.removeActionListener(categoryChooserActionListener); - typeChooser.removeActionListener(typeChooserActionListener); + if (categories.equals(oldCategories) && types.equals(oldTypes)) { + return; + } + oldCategories = categories; + oldTypes = types; // Load categories categoryFilter = x -> true; + categoryChooser.removeActionListener(categoryChooserActionListener); categoryChooser.removeAllItems(); categoryChooser.addItem(new DropdownAllLibraries()); - Collection categories = BaseNoGui.librariesIndexer.getIndex().getCategories(); for (String category : categories) { categoryChooser.addItem(new DropdownLibraryOfCategoryItem(category)); } - categoryChooser.setEnabled(categoryChooser.getItemCount() > 1); - categoryChooser.addActionListener(categoryChooserActionListener); - if (previouslySelectedCategory != null) { - categoryChooser.setSelectedItem(previouslySelectedCategory); - } else { - categoryChooser.setSelectedIndex(0); - } + categoryChooser.setSelectedIndex(0); - typeFilter = x -> true; + // Load types + extraFilter = x -> true; + typeChooser.removeActionListener(typeChooserActionListener); typeChooser.removeAllItems(); typeChooser.addItem(new DropdownAllLibraries()); typeChooser.addItem(new DropdownUpdatableLibrariesItem()); typeChooser.addItem(new DropdownInstalledLibraryItem()); - List types = new LinkedList<>(BaseNoGui.librariesIndexer.getIndex().getTypes()); - Collections.sort(types, new LibraryTypeComparator()); for (String type : types) { typeChooser.addItem(new DropdownLibraryOfTypeItem(type)); } typeChooser.setEnabled(typeChooser.getItemCount() > 1); typeChooser.addActionListener(typeChooserActionListener); - if (previouslySelectedType != null) { - typeChooser.setSelectedItem(previouslySelectedType); - } else { - typeChooser.setSelectedIndex(0); - } + typeChooser.setSelectedIndex(0); filterField.setEnabled(contribModel.getRowCount() > 0); } @@ -201,6 +202,10 @@ protected void onUpdatePressed() { setProgressVisible(true, ""); installer.updateIndex(this::setProgress); onIndexesUpdated(); + if (contribTable.getCellEditor() != null) { + contribTable.getCellEditor().stopCellEditing(); + } + getContribModel().update(); } catch (Exception e) { throw new RuntimeException(e); } finally { @@ -212,18 +217,35 @@ protected void onUpdatePressed() { installerThread.start(); } - public void onInstallPressed(final ContributedLibrary lib, final Optional mayReplaced) { + public void onInstallPressed(final ContributedLibrary lib) { + List deps = BaseNoGui.librariesIndexer.getIndex().resolveDependeciesOf(lib); + boolean depsInstalled = deps.stream().allMatch(l -> l.getInstalledLibrary().isPresent() || l.getName().equals(lib.getName())); + Result installDeps; + if (!depsInstalled) { + MultiLibraryInstallDialog dialog; + dialog = new MultiLibraryInstallDialog(this, lib, deps); + dialog.setLocationRelativeTo(this); + dialog.setVisible(true); + installDeps = dialog.getInstallDepsResult(); + if (installDeps == Result.CANCEL) + return; + } else { + installDeps = Result.NONE; + } clearErrorMessage(); installerThread = new Thread(() -> { try { setProgressVisible(true, tr("Installing...")); - installer.install(lib, mayReplaced, this::setProgress); - // TODO: Do a better job in refreshing only the needed element + if (installDeps == Result.ALL) { + installer.install(deps, this::setProgress); + } else { + installer.install(lib, this::setProgress); + } + onIndexesUpdated(); if (contribTable.getCellEditor() != null) { contribTable.getCellEditor().stopCellEditing(); } - ((LibrariesIndexTableModel) contribModel).update(); - onIndexesUpdated(); + getContribModel().update(); } catch (Exception e) { throw new RuntimeException(e); } finally { @@ -250,12 +272,11 @@ public void onRemovePressed(final ContributedLibrary lib) { try { setProgressVisible(true, tr("Removing...")); installer.remove(lib, this::setProgress); - // TODO: Do a better job in refreshing only the needed element + onIndexesUpdated(); if (contribTable.getCellEditor() != null) { contribTable.getCellEditor().stopCellEditing(); } - ((LibrariesIndexTableModel) contribModel).update(); - onIndexesUpdated(); + getContribModel().update(); } catch (Exception e) { throw new RuntimeException(e); } finally { diff --git a/app/src/cc/arduino/contributions/libraries/ui/MultiLibraryInstallDialog.java b/app/src/cc/arduino/contributions/libraries/ui/MultiLibraryInstallDialog.java new file mode 100644 index 00000000000..75f7703f430 --- /dev/null +++ b/app/src/cc/arduino/contributions/libraries/ui/MultiLibraryInstallDialog.java @@ -0,0 +1,177 @@ +/* + * This file is part of Arduino. + * + * Copyright 2017 Arduino LLC (http://www.arduino.cc/) + * + * Arduino 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 of the License, 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; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * As a special exception, you may use this file as part of a free software + * library without restriction. Specifically, if other files instantiate + * templates or use macros or inline functions from this file, or you compile + * this file and link it with other files to produce an executable, this + * file does not by itself cause the resulting executable to be covered by + * the GNU General Public License. This exception does not however + * invalidate any other reasons why the executable file might be covered by + * the GNU General Public License. + */ + +package cc.arduino.contributions.libraries.ui; + +import static processing.app.I18n.format; +import static processing.app.I18n.tr; + +import java.awt.BorderLayout; +import java.awt.Container; +import java.awt.Insets; +import java.awt.Window; +import java.awt.event.WindowEvent; +import java.util.List; + +import javax.swing.Box; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JPanel; +import javax.swing.JTextPane; +import javax.swing.WindowConstants; +import javax.swing.border.EmptyBorder; +import javax.swing.text.Document; +import javax.swing.text.html.HTMLDocument; +import javax.swing.text.html.StyleSheet; + +import cc.arduino.contributions.libraries.ContributedLibrary; +import cc.arduino.contributions.libraries.UnavailableContributedLibrary; +import processing.app.Base; +import processing.app.Theme; + +public class MultiLibraryInstallDialog extends JDialog { + + enum Result { + ALL, NONE, CANCEL + } + + private Result result = Result.CANCEL; + + public MultiLibraryInstallDialog(Window parent, ContributedLibrary lib, + List dependencies) { + super(parent, format(tr("Dependencies for library {0}:{1}"), lib.getName(), + lib.getParsedVersion()), + ModalityType.APPLICATION_MODAL); + Container pane = getContentPane(); + pane.setLayout(new BorderLayout()); + + pane.add(Box.createHorizontalStrut(10), BorderLayout.WEST); + pane.add(Box.createHorizontalStrut(10), BorderLayout.EAST); + + { + JButton cancel = new JButton(tr("Cancel")); + cancel.addActionListener(ev -> { + result = Result.CANCEL; + setVisible(false); + }); + + JButton all = new JButton(tr("Install all")); + all.addActionListener(ev -> { + result = Result.ALL; + setVisible(false); + }); + + JButton none = new JButton(format(tr("Install '{0}' only"), lib.getName())); + none.addActionListener(ev -> { + result = Result.NONE; + setVisible(false); + }); + + Box buttonsBox = Box.createHorizontalBox(); + buttonsBox.add(all); + buttonsBox.add(Box.createHorizontalStrut(5)); + buttonsBox.add(none); + buttonsBox.add(Box.createHorizontalStrut(5)); + buttonsBox.add(cancel); + + JPanel buttonsPanel = new JPanel(); + buttonsPanel.setBorder(new EmptyBorder(7, 10, 7, 10)); + buttonsPanel.setLayout(new BoxLayout(buttonsPanel, BoxLayout.Y_AXIS)); + buttonsPanel.add(buttonsBox); + + pane.add(buttonsPanel, BorderLayout.SOUTH); + } + + { + String libName = format("{0}:{1}", lib.getName(), + lib.getParsedVersion()); + String desc = format(tr("The library {0} needs some other library
dependencies currently not installed:"), + libName); + desc += "

"; + for (ContributedLibrary l : dependencies) { + if (l.getName().equals(lib.getName())) + continue; + if (l.getInstalledLibrary().isPresent()) + continue; + if (l instanceof UnavailableContributedLibrary) + continue; + desc += format("- {0}
", l.getName()); + } + desc += "
"; + desc += tr("Would you like to install also all the missing dependencies?"); + + JTextPane textArea = makeNewDescription(); + textArea.setContentType("text/html"); + textArea.setText(desc); + + JPanel libsList = new JPanel(); + libsList.setLayout(new BoxLayout(libsList, BoxLayout.Y_AXIS)); + libsList.add(textArea); + libsList.setBorder(new EmptyBorder(7, 7, 7, 7)); + pane.add(libsList, BorderLayout.NORTH); + } + + pack(); + setResizable(false); + setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); + + WindowEvent closing = new WindowEvent(this, WindowEvent.WINDOW_CLOSING); + Base.registerWindowCloseKeys(getRootPane(), e -> dispatchEvent(closing)); + } + + // TODO Make this a method of Theme + private JTextPane makeNewDescription() { + JTextPane description = new JTextPane(); + description.setInheritsPopupMenu(true); + Insets margin = description.getMargin(); + margin.bottom = 0; + description.setMargin(margin); + description.setContentType("text/html"); + Document doc = description.getDocument(); + if (doc instanceof HTMLDocument) { + HTMLDocument html = (HTMLDocument) doc; + StyleSheet s = html.getStyleSheet(); + s.addRule("body { margin: 0; padding: 0;" + + "font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;" + + "color: black;" + "font-size: " + 15 * Theme.getScale() / 100 + + "; }"); + } + description.setOpaque(false); + description.setBorder(new EmptyBorder(4, 7, 7, 7)); + description.setHighlighter(null); + description.setEditable(false); + add(description, 0); + return description; + } + + public Result getInstallDepsResult() { + return result; + } +} diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java index 3545b1ff42b..fc516512d44 100644 --- a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java +++ b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformReleases.java @@ -44,12 +44,14 @@ public class ContributedPlatformReleases { public final List releases; public final List versions; public ContributedPlatform selected = null; + public boolean deprecated; public ContributedPlatformReleases(ContributedPlatform platform) { packager = platform.getParentPackage(); arch = platform.getArchitecture(); releases = new LinkedList<>(); versions = new LinkedList<>(); + deprecated = platform.isDeprecated(); add(platform); } @@ -65,7 +67,9 @@ public void add(ContributedPlatform platform) { if (version != null) { versions.add(version); } - selected = getLatest(); + ContributedPlatform latest = getLatest(); + selected = latest; + deprecated = latest.isDeprecated(); } public ContributedPlatform getInstalled() { @@ -89,6 +93,10 @@ public ContributedPlatform getSelected() { return selected; } + public boolean isDeprecated() { + return deprecated; + } + public void select(ContributedPlatform value) { for (ContributedPlatform plat : releases) { if (plat == value) { diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellEditor.java b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellEditor.java index 26bcb1c9d3b..7fe221fa340 100644 --- a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellEditor.java +++ b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellEditor.java @@ -129,7 +129,8 @@ public Component getTableCellEditorComponent(JTable table, Object _value, cell.versionToInstallChooser .setVisible(installed == null && uninstalledReleases.size() > 1); - cell.update(table, _value, true, !installedBuiltIn.isEmpty()); + cell.update(table, _value, !installedBuiltIn.isEmpty()); + cell.setForeground(Color.BLACK); cell.setBackground(new Color(218, 227, 227)); // #dae3e3 return cell; } diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellJPanel.java b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellJPanel.java index b4537ce94cc..19961c1c97f 100644 --- a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellJPanel.java +++ b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellJPanel.java @@ -32,20 +32,11 @@ import static processing.app.I18n.format; import static processing.app.I18n.tr; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Insets; - -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTable; -import javax.swing.JTextPane; +import java.awt.*; + +import javax.swing.*; import javax.swing.border.EmptyBorder; +import javax.swing.border.TitledBorder; import javax.swing.event.HyperlinkEvent; import javax.swing.text.Document; import javax.swing.text.html.HTMLDocument; @@ -57,11 +48,14 @@ import cc.arduino.contributions.packages.ContributedPlatform; import cc.arduino.contributions.ui.InstallerTableCell; import processing.app.Base; +import processing.app.PreferencesData; import processing.app.Theme; @SuppressWarnings("serial") public class ContributedPlatformTableCellJPanel extends JPanel { + final JButton moreInfoButton; + final JButton onlineHelpButton; final JButton installButton; final JButton removeButton; final Component removeButtonPlaceholder; @@ -72,13 +66,26 @@ public class ContributedPlatformTableCellJPanel extends JPanel { final JPanel buttonsPanel; final JPanel inactiveButtonsPanel; final JLabel statusLabel; + final JTextPane description; + final TitledBorder titledBorder; + private final String moreInfoLbl = tr("More Info"); + private final String onlineHelpLbl = tr("Online Help"); public ContributedPlatformTableCellJPanel() { super(); setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); + // Actual title set by update() + titledBorder = BorderFactory.createTitledBorder(""); + titledBorder.setTitleFont(getFont().deriveFont(Font.BOLD)); + setBorder(titledBorder); + { installButton = new JButton(tr("Install")); + moreInfoButton = new JButton(moreInfoLbl); + moreInfoButton.setVisible(false); + onlineHelpButton = new JButton(onlineHelpLbl); + onlineHelpButton.setVisible(false); int width = installButton.getPreferredSize().width; installButtonPlaceholder = Box.createRigidArea(new Dimension(width, 1)); } @@ -108,13 +115,21 @@ public ContributedPlatformTableCellJPanel() { versionToInstallChooser .setMaximumSize(versionToInstallChooser.getPreferredSize()); - makeNewDescription(); + description = makeNewDescription(); + add(description); buttonsPanel = new JPanel(); buttonsPanel.setLayout(new BoxLayout(buttonsPanel, BoxLayout.X_AXIS)); buttonsPanel.setOpaque(false); buttonsPanel.add(Box.createHorizontalStrut(7)); + if (PreferencesData.getBoolean("ide.accessible")) { // only add the buttons if needed + buttonsPanel.add(onlineHelpButton); + buttonsPanel.add(Box.createHorizontalStrut(5)); + buttonsPanel.add(moreInfoButton); + buttonsPanel.add(Box.createHorizontalStrut(5)); + buttonsPanel.add(Box.createHorizontalStrut(15)); + } buttonsPanel.add(downgradeChooser); buttonsPanel.add(Box.createHorizontalStrut(5)); buttonsPanel.add(downgradeButton); @@ -149,11 +164,27 @@ public ContributedPlatformTableCellJPanel() { add(Box.createVerticalStrut(15)); } - void update(JTable parentTable, Object value, boolean isSelected, - boolean hasBuiltInRelease) { - ContributedPlatformReleases releases = (ContributedPlatformReleases) value; + // same function as in ContributedLibraryTableCellJPanel - is there a utils file this can move to? + private String setButtonOrLink(JButton button, String desc, String label, String url) { + boolean accessibleIDE = PreferencesData.getBoolean("ide.accessible"); + String retString = desc; - JTextPane description = makeNewDescription(); + if (accessibleIDE) { + button.setVisible(true); + button.addActionListener(e -> { + Base.openURL(url); + }); + } + else { + // if not accessible IDE, keep link the same EXCEPT that now the link text is translated! + retString += " " + format("{1}
", url, label); + } + + return retString; + } + + void update(JTable parentTable, Object value, boolean hasBuiltInRelease) { + ContributedPlatformReleases releases = (ContributedPlatformReleases) value; // FIXME: happens on macosx, don't know why if (releases == null) { @@ -161,6 +192,7 @@ void update(JTable parentTable, Object value, boolean isSelected, } ContributedPlatform selected = releases.getSelected(); + titledBorder.setTitle(selected.getName()); ContributedPlatform installed = releases.getInstalled(); boolean removable, installable, upgradable; @@ -186,7 +218,7 @@ void update(JTable parentTable, Object value, boolean isSelected, removeButtonPlaceholder.setVisible(!removable); String desc = ""; - desc += "" + selected.getName() + ""; +// desc += "" + selected.getName() + ""; if (installed != null && installed.isBuiltIn()) { desc += " Built-In "; } @@ -200,6 +232,9 @@ void update(JTable parentTable, Object value, boolean isSelected, + format(tr("version {0}"), installed.getParsedVersion()) + " INSTALLED"; } + if (releases.isDeprecated()) { + desc += " DEPRECATED"; + } desc += "
"; desc += tr("Boards included in this package:") + "
"; @@ -216,21 +251,23 @@ void update(JTable parentTable, Object value, boolean isSelected, } else if (selected.getParentPackage().getHelp() != null) { help = selected.getParentPackage().getHelp(); } + if (help != null) { String url = help.getOnline(); if (url != null && !url.isEmpty()) { - desc += " " + format("Online help
", url); + desc = setButtonOrLink(onlineHelpButton, desc, onlineHelpLbl, url); } } String url = selected.getParentPackage().getWebsiteURL(); if (url != null && !url.isEmpty()) { - desc += " " + format("More info", url); + desc = setButtonOrLink(moreInfoButton, desc, moreInfoLbl, url); } desc += ""; description.setText(desc); - description.setBackground(Color.WHITE); + // copy description to accessibility context for screen readers to use + description.getAccessibleContext().setAccessibleDescription(desc); // for modelToView to work, the text area has to be sized. It doesn't // matter if it's visible or not. @@ -240,20 +277,9 @@ void update(JTable parentTable, Object value, boolean isSelected, int width = parentTable.getBounds().width; InstallerTableCell.setJTextPaneDimensionToFitContainedText(description, width); - - if (isSelected) { - setBackground(parentTable.getSelectionBackground()); - setForeground(parentTable.getSelectionForeground()); - } else { - setBackground(parentTable.getBackground()); - setForeground(parentTable.getForeground()); - } } private JTextPane makeNewDescription() { - if (getComponentCount() > 0) { - remove(0); - } JTextPane description = new JTextPane(); description.setInheritsPopupMenu(true); Insets margin = description.getMargin(); @@ -277,7 +303,6 @@ private JTextPane makeNewDescription() { Base.openURL(e.getDescription()); } }); - add(description, 0); return description; } @@ -288,4 +313,12 @@ public void setButtonsVisible(boolean enabled) { inactiveButtonsPanel.setVisible(!enabled); } + public void setForeground(Color c) { + super.setForeground(c); + // The description is not opaque, so copy our foreground color to it. + if (description != null) + description.setForeground(c); + if (titledBorder != null) + titledBorder.setTitleColor(c); + } } diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellRenderer.java b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellRenderer.java index cc4b1d0c186..b6f6aae015c 100644 --- a/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellRenderer.java +++ b/app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCellRenderer.java @@ -44,8 +44,9 @@ public Component getTableCellRendererComponent(JTable table, Object value, int column) { ContributedPlatformTableCellJPanel cell = new ContributedPlatformTableCellJPanel(); cell.setButtonsVisible(false); - cell.update(table, value, isSelected, false); + cell.update(table, value, false); + cell.setForeground(Color.BLACK); if (row % 2 == 0) { cell.setBackground(new Color(236, 241, 241)); // #ecf1f1 } else { diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java b/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java index f143e33172a..2c9939849bb 100644 --- a/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java +++ b/app/src/cc/arduino/contributions/packages/ui/ContributionIndexTableModel.java @@ -36,6 +36,7 @@ import processing.app.BaseNoGui; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -47,12 +48,29 @@ public class ContributionIndexTableModel private final List contributions = new ArrayList<>(); private final String[] columnNames = { "Description" }; private final Class[] columnTypes = { ContributedPlatform.class }; + private Predicate filter; + private String[] filters; public void updateIndexFilter(String[] filters, Predicate filter) { + this.filter = filter; + this.filters = filters; + updateContributions(); + } + + private void updateContributions() { contributions.clear(); + + // Generate ContributedPlatformReleases from all platform releases for (ContributedPackage pack : BaseNoGui.indexer.getPackages()) { for (ContributedPlatform platform : pack.getPlatforms()) { + addContribution(platform); + } + } + + // Filter ContributedPlatformReleases based on search terms + contributions.removeIf(releases -> { + for (ContributedPlatform platform : releases.releases) { String compoundTargetSearchText = platform.getName() + "\n" + platform.getBoards().stream() .map(ContributedBoard::getName) @@ -62,9 +80,25 @@ public void updateIndexFilter(String[] filters, } if (!stringContainsAll(compoundTargetSearchText, filters)) continue; - addContribution(platform); + return false; } - } + return true; + }); + + // Sort ContributedPlatformReleases and put deprecated platforms to the bottom + Collections.sort(contributions, (x,y)-> { + if (x.isDeprecated() != y.isDeprecated()) { + return x.isDeprecated() ? 1 : -1; + } + ContributedPlatform x1 = x.getLatest(); + ContributedPlatform y1 = y.getLatest(); + int category = (x1.getCategory().equals("Arduino") ? -1 : 0) + (y1.getCategory().equals("Arduino") ? 1 : 0); + if (category != 0) { + return category; + } + return x1.getName().compareToIgnoreCase(y1.getName()); + }); + fireTableDataChanged(); } @@ -89,12 +123,12 @@ private boolean stringContainsAll(String string, String set[]) { private void addContribution(ContributedPlatform platform) { for (ContributedPlatformReleases contribution : contributions) { - if (!contribution.shouldContain(platform)) + if (!contribution.shouldContain(platform)) { continue; + } contribution.add(platform); return; } - contributions.add(new ContributedPlatformReleases(platform)); } @@ -146,6 +180,7 @@ public ContributedPlatform getSelectedRelease(int row) { } public void update() { + updateContributions(); fireTableDataChanged(); } diff --git a/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java b/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java index 6f9c903c3c0..c00e91e9d13 100644 --- a/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java +++ b/app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java @@ -29,7 +29,6 @@ package cc.arduino.contributions.packages.ui; -import cc.arduino.contributions.DownloadableContribution; import cc.arduino.contributions.packages.ContributedPlatform; import cc.arduino.contributions.packages.ContributionInstaller; import cc.arduino.contributions.ui.*; @@ -41,6 +40,7 @@ import javax.swing.table.TableCellRenderer; import java.awt.*; +import java.util.ArrayList; import java.util.Collection; import java.util.LinkedList; import java.util.List; @@ -92,30 +92,28 @@ public ContributionManagerUI(Frame parent, ContributionInstaller installer) { this.installer = installer; } + private Collection oldCategories = new ArrayList<>(); + public void updateUI() { - DropdownItem previouslySelectedCategory = (DropdownItem) categoryChooser - .getSelectedItem(); + // Check if categories have changed + Collection categories = BaseNoGui.indexer.getCategories(); + if (categories.equals(oldCategories)) { + return; + } + oldCategories = categories; categoryChooser.removeActionListener(categoryChooserActionListener); - - filterField.setEnabled(getContribModel().getRowCount() > 0); - - categoryChooser.addActionListener(categoryChooserActionListener); - // Enable categories combo only if there are two or more choices + filterField.setEnabled(getContribModel().getRowCount() > 0); categoryFilter = x -> true; categoryChooser.removeAllItems(); categoryChooser.addItem(new DropdownAllCoresItem()); categoryChooser.addItem(new DropdownUpdatableCoresItem()); - Collection categories = BaseNoGui.indexer.getCategories(); for (String s : categories) { categoryChooser.addItem(new DropdownCoreOfCategoryItem(s)); } - if (previouslySelectedCategory != null) { - categoryChooser.setSelectedItem(previouslySelectedCategory); - } else { - categoryChooser.setSelectedIndex(0); - } + categoryChooser.addActionListener(categoryChooserActionListener); + categoryChooser.setSelectedIndex(0); } public void setProgress(Progress progress) { @@ -142,10 +140,12 @@ public void onUpdatePressed() { installerThread = new Thread(() -> { try { setProgressVisible(true, ""); - List downloadedPackageIndexFiles = installer - .updateIndex(this::setProgress); - installer.deleteUnknownFiles(downloadedPackageIndexFiles); + installer.updateIndex(this::setProgress); onIndexesUpdated(); + if (contribTable.getCellEditor() != null) { + contribTable.getCellEditor().stopCellEditing(); + } + getContribModel().update(); } catch (Exception e) { throw new RuntimeException(e); } finally { @@ -171,6 +171,10 @@ public void onInstallPressed(final ContributedPlatform platformToInstall, } errors.addAll(installer.install(platformToInstall, this::setProgress)); onIndexesUpdated(); + if (contribTable.getCellEditor() != null) { + contribTable.getCellEditor().stopCellEditing(); + } + getContribModel().update(); } catch (Exception e) { throw new RuntimeException(e); } finally { @@ -209,6 +213,10 @@ public void onRemovePressed(final ContributedPlatform platform, setProgressVisible(true, tr("Removing...")); installer.remove(platform); onIndexesUpdated(); + if (contribTable.getCellEditor() != null) { + contribTable.getCellEditor().stopCellEditing(); + } + getContribModel().update(); } catch (Exception e) { throw new RuntimeException(e); } finally { diff --git a/app/src/cc/arduino/contributions/ui/FilterJTextField.java b/app/src/cc/arduino/contributions/ui/FilterJTextField.java index 9dc7fd8d6b5..83aeba45430 100644 --- a/app/src/cc/arduino/contributions/ui/FilterJTextField.java +++ b/app/src/cc/arduino/contributions/ui/FilterJTextField.java @@ -41,6 +41,7 @@ public class FilterJTextField extends JTextField { private final String filterHint; private boolean showingHint; + private Timer timer; public FilterJTextField(String hint) { super(hint); @@ -48,6 +49,10 @@ public FilterJTextField(String hint) { showingHint = true; updateStyle(); + timer = new Timer(1000, e -> { + applyFilter(); + timer.stop(); + }); addFocusListener(new FocusListener() { public void focusLost(FocusEvent focusEvent) { @@ -68,34 +73,44 @@ public void focusGained(FocusEvent focusEvent) { getDocument().addDocumentListener(new DocumentListener() { public void removeUpdate(DocumentEvent e) { - applyFilter(); + spawnTimer(); } public void insertUpdate(DocumentEvent e) { - applyFilter(); + spawnTimer(); } public void changedUpdate(DocumentEvent e) { - applyFilter(); + } }); - } - - private String lastFilter = ""; - - private void applyFilter() { - String filter = showingHint ? "" : getText(); - filter = filter.toLowerCase(); - // Replace anything but 0-9, a-z, or : with a space - filter = filter.replaceAll("[^\\x30-\\x39^\\x61-\\x7a^\\x3a]", " "); + addActionListener(e -> { + if (timer.isRunning()) { + timer.stop(); + } + applyFilter(); + }); + } - // Fire event only if the filter is changed - if (filter.equals(lastFilter)) - return; + private void spawnTimer() { + if (timer.isRunning()) { + timer.stop(); + } + timer.start(); + } - lastFilter = filter; - onFilter(filter.split(" ")); + public void applyFilter() { + String[] filteredText = new String[0]; + if (!showingHint) { + String filter = getText().toLowerCase(); + + // Replace anything but 0-9, a-z, or : with a space + filter = filter.replaceAll("[^\\x30-\\x39^\\x61-\\x7a^\\x3a]", " "); + + filteredText = filter.split(" "); + } + onFilter(filteredText); } protected void onFilter(String[] strings) { @@ -112,4 +127,23 @@ private void updateStyle() { setFont(getFont().deriveFont(Font.PLAIN)); } } + + @Override + public void paste() { + + // Same precondition check as JTextComponent#paste(). + if (!isEditable() || !isEnabled()) { + return; + } + + // Disable hint to prevent the focus handler from clearing the pasted text. + if (showingHint) { + showingHint = false; + setText(""); + updateStyle(); + } + + // Perform the paste. + super.paste(); + } } diff --git a/app/src/cc/arduino/contributions/ui/InstallerJDialog.java b/app/src/cc/arduino/contributions/ui/InstallerJDialog.java index 3dd864134c4..8abff8f3454 100644 --- a/app/src/cc/arduino/contributions/ui/InstallerJDialog.java +++ b/app/src/cc/arduino/contributions/ui/InstallerJDialog.java @@ -45,8 +45,10 @@ import java.awt.event.WindowEvent; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; +import java.awt.event.WindowAdapter; import java.util.function.Predicate; +import javax.swing.Action; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; @@ -54,6 +56,7 @@ import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; @@ -64,10 +67,10 @@ import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; +import javax.swing.text.DefaultEditorKit; import cc.arduino.contributions.ui.listeners.AbstractKeyListener; import processing.app.Base; -import processing.app.Theme; public abstract class InstallerJDialog extends JDialog { @@ -78,6 +81,7 @@ public abstract class InstallerJDialog extends JDialog { protected final FilterJTextField filterField; protected final JPanel filtersContainer; // Currently selected category and filters + protected Predicate extraFilter = x -> true; protected Predicate categoryFilter; protected String[] filters; protected final String noConnectionErrorMessage; @@ -129,6 +133,32 @@ protected void onFilter(String[] _filters) { updateIndexFilter(filters, categoryFilter); } }; + filterField.getAccessibleContext().setAccessibleDescription(tr("Search Filter")); + + // Add cut/copy/paste contextual menu to the search filter input field. + JPopupMenu menu = new JPopupMenu(); + + Action cut = new DefaultEditorKit.CutAction(); + cut.putValue(Action.NAME, tr("Cut")); + menu.add(cut); + + Action copy = new DefaultEditorKit.CopyAction(); + copy.putValue(Action.NAME, tr("Copy")); + menu.add(copy); + + Action paste = new DefaultEditorKit.PasteAction(); + paste.putValue(Action.NAME, tr("Paste")); + menu.add(paste); + + filterField.setComponentPopupMenu(menu); + + // Focus the filter field when the window opens. + addWindowListener(new WindowAdapter() { + @Override + public void windowOpened(WindowEvent e) { + filterField.requestFocus(); + } + }); filtersContainer = new JPanel(); filtersContainer.setLayout(new BoxLayout(filtersContainer, BoxLayout.X_AXIS)); @@ -150,7 +180,6 @@ protected void onFilter(String[] _filters) { contribTable.setDragEnabled(false); contribTable.setIntercellSpacing(new Dimension(0, 1)); contribTable.setShowVerticalLines(false); - contribTable.setSelectionBackground(Theme.getColor("status.notice.bgcolor")); contribTable.addKeyListener(new AbstractKeyListener() { @Override @@ -300,7 +329,6 @@ private void setErrorMessageVisible(boolean visible) { } protected final ActionListener categoryChooserActionListener = new ActionListener() { - @Override public void actionPerformed(ActionEvent event) { DropdownItem selected = (DropdownItem) categoryChooser.getSelectedItem(); @@ -310,7 +338,7 @@ public void actionPerformed(ActionEvent event) { if (contribTable.getCellEditor() != null) { contribTable.getCellEditor().stopCellEditing(); } - updateIndexFilter(filters, categoryFilter); + updateIndexFilter(filters, categoryFilter.and(extraFilter)); } } }; @@ -320,6 +348,7 @@ public void setFilterText(String filterText) { listener.focusGained(new FocusEvent(filterField, FocusEvent.FOCUS_GAINED)); } filterField.setText(filterText); + filterField.applyFilter(); } public void selectDropdownItemByClassName(String dropdownItem) { diff --git a/app/src/cc/arduino/contributions/ui/ProgressJProgressBar.java b/app/src/cc/arduino/contributions/ui/ProgressJProgressBar.java index 12b39742fa3..7c946e4993e 100644 --- a/app/src/cc/arduino/contributions/ui/ProgressJProgressBar.java +++ b/app/src/cc/arduino/contributions/ui/ProgressJProgressBar.java @@ -38,8 +38,13 @@ public class ProgressJProgressBar extends JProgressBar { public void setValue(Progress p) { setValue((int) p.getProgress()); - if (p.getStatus() != null) + if (p.getStatus() != null) { setString(p.getStatus()); + // copy status to accessibility context for screen readers to use + getAccessibleContext().setAccessibleDescription(p.getStatus()); + // make status focusable so screen readers can get to it + setFocusable(true); + } } } diff --git a/app/src/cc/arduino/packages/MonitorFactory.java b/app/src/cc/arduino/packages/MonitorFactory.java index 83d849dd6ef..3be7723b586 100644 --- a/app/src/cc/arduino/packages/MonitorFactory.java +++ b/app/src/cc/arduino/packages/MonitorFactory.java @@ -39,7 +39,7 @@ public AbstractMonitor newMonitor(BoardPort port) { if ("network".equals(port.getProtocol())) { if ("yes".equals(port.getPrefs().get("ssh_upload"))) { // the board is SSH capable - return new NetworkMonitor(port); + return new NetworkMonitor(port); } else { // SSH not supported, no monitor support return null; diff --git a/app/src/cc/arduino/view/NotificationPopup.java b/app/src/cc/arduino/view/NotificationPopup.java index 2334d6e14bd..2de079c8525 100644 --- a/app/src/cc/arduino/view/NotificationPopup.java +++ b/app/src/cc/arduino/view/NotificationPopup.java @@ -36,12 +36,7 @@ import java.awt.Frame; import java.awt.Image; import java.awt.Point; -import java.awt.event.ComponentAdapter; -import java.awt.event.ComponentEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; +import java.awt.event.*; import java.util.Timer; import java.util.TimerTask; @@ -55,22 +50,46 @@ import javax.swing.event.HyperlinkListener; import cc.arduino.Constants; +import processing.app.PreferencesData; import processing.app.Theme; -public class NotificationPopup extends JDialog { +import java.awt.event.KeyEvent; + +import static processing.app.I18n.tr; +public class NotificationPopup extends JDialog { private Timer autoCloseTimer = new Timer(false); private boolean autoClose = true; + private OptionalButtonCallbacks optionalButtonCallbacks; + + public interface OptionalButtonCallbacks { + void onOptionalButton1Callback(); + void onOptionalButton2Callback(); + } public NotificationPopup(Frame parent, HyperlinkListener hyperlinkListener, String message) { - this(parent, hyperlinkListener, message, true); + this(parent, hyperlinkListener, message, true, null, null, null); } public NotificationPopup(Frame parent, HyperlinkListener hyperlinkListener, String message, boolean _autoClose) { + this(parent, hyperlinkListener, message, _autoClose, null, null, null); + } + + public NotificationPopup(Frame parent, HyperlinkListener hyperlinkListener, + String message, boolean _autoClose, OptionalButtonCallbacks listener, String button1Name, String button2Name) { super(parent, false); - autoClose = _autoClose; + + if (!PreferencesData.getBoolean("ide.accessible")) { + // often auto-close is too fast for users of screen readers, so don't allow it. + autoClose = _autoClose; + } + else { + autoClose = false; + } + optionalButtonCallbacks = listener; + setLayout(new FlowLayout()); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); setUndecorated(true); @@ -90,6 +109,74 @@ public NotificationPopup(Frame parent, HyperlinkListener hyperlinkListener, text.addHyperlinkListener(hyperlinkListener); add(text); + if (button1Name != null) { + JButton optionalButton1 = new JButton(tr(button1Name)); + MouseAdapter button1Action = new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (optionalButtonCallbacks != null) { + optionalButtonCallbacks.onOptionalButton1Callback(); + } + } + }; + optionalButton1.addMouseListener(button1Action); + + KeyListener button1Key = new KeyListener() { + // Ignore when the key is typed - only act once the key is released + public void keyTyped(KeyEvent e) { + // do nothing here, wait until the key is released + } + + // Ignore when the key is pressed - only act once the key is released + public void keyPressed(KeyEvent e) { + // do nothing here, wait until the key is released + } + + public void keyReleased(KeyEvent e) { + int key = e.getKeyCode(); + if ((key == KeyEvent.VK_ENTER) || (key == KeyEvent.VK_SPACE)) { + optionalButtonCallbacks.onOptionalButton1Callback(); + } + } + }; + optionalButton1.addKeyListener(button1Key); + add(optionalButton1); + } + + if (button2Name != null) { + JButton optionalButton2 = new JButton(tr(button2Name)); + MouseAdapter button2Action = new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + if (optionalButtonCallbacks != null) { + optionalButtonCallbacks.onOptionalButton2Callback(); + } + } + }; + optionalButton2.addMouseListener(button2Action); + + KeyListener button2Key = new KeyListener() { + // Ignore when the key is typed - only act once the key is released + public void keyTyped(KeyEvent e) { + // do nothing here, wait until the key is released + } + + // Ignore when the key is pressed - only act once the key is released + public void keyPressed(KeyEvent e) { + // do nothing here, wait until the key is released + } + + public void keyReleased(KeyEvent e) { + int key = e.getKeyCode(); + if ((key == KeyEvent.VK_ENTER) || (key == KeyEvent.VK_SPACE)) { + optionalButtonCallbacks.onOptionalButton2Callback(); + } + } + }; + optionalButton2.addKeyListener(button2Key); + add(optionalButton2); + } + Image close = Theme.getThemeImage("close", this, scale(22), scale(22)); JButton closeButton = new JButton(new ImageIcon(close)); closeButton.setBorder(null); @@ -97,6 +184,26 @@ public NotificationPopup(Frame parent, HyperlinkListener hyperlinkListener, closeButton.setHideActionText(true); closeButton.setOpaque(false); closeButton.setBackground(new Color(0, 0, 0, 0)); + closeButton.getAccessibleContext().setAccessibleDescription(tr("Close")); + KeyListener closeKey = new KeyListener() { + // Ignore when the key is typed - only act once the key is released + public void keyTyped(KeyEvent e) { + // do nothing here, wait until the key is released + } + + // Ignore when the key is pressed - only act once the key is released + public void keyPressed(KeyEvent e) { + // do nothing here, wait until the key is released + } + + public void keyReleased(KeyEvent e) { + int key = e.getKeyCode(); + if ((key == KeyEvent.VK_ENTER) || (key == KeyEvent.VK_SPACE)) { + close(); + } + } + }; + closeButton.addKeyListener(closeKey); add(closeButton); MouseAdapter closeOnClick = new MouseAdapter() { @@ -145,6 +252,7 @@ public void close() { if (autoClose) { autoCloseTimer.cancel(); } + setModal(false); dispatchEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING)); } @@ -158,5 +266,9 @@ public void run() { }, Constants.NOTIFICATION_POPUP_AUTOCLOSE_DELAY); } setVisible(true); + if (PreferencesData.getBoolean("ide.accessible")) { + requestFocus(); + setModal(true); + } } } diff --git a/app/src/cc/arduino/view/preferences/Preferences.java b/app/src/cc/arduino/view/preferences/Preferences.java index 0f8d9803dbc..005d2f83e54 100644 --- a/app/src/cc/arduino/view/preferences/Preferences.java +++ b/app/src/cc/arduino/view/preferences/Preferences.java @@ -91,7 +91,7 @@ public Preferences(Window parent, Base base) { Base.registerWindowCloseKeys(getRootPane(), this::cancelButtonActionPerformed); - showPrerefencesData(); + showPreferencesData(); } /** @@ -132,10 +132,9 @@ private void initComponents() { enableCodeFoldingBox = new javax.swing.JCheckBox(); verifyUploadBox = new javax.swing.JCheckBox(); externalEditorBox = new javax.swing.JCheckBox(); - cacheCompiledCore = new javax.swing.JCheckBox(); checkUpdatesBox = new javax.swing.JCheckBox(); - updateExtensionBox = new javax.swing.JCheckBox(); saveVerifyUploadBox = new javax.swing.JCheckBox(); + accessibleIDEBox = new javax.swing.JCheckBox(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); scaleSpinner = new javax.swing.JSpinner(); @@ -180,7 +179,7 @@ private void initComponents() { sketchbookLocationLabel.setText(tr("Sketchbook location:")); sketchbookLocationLabel.setLabelFor(sketchbookLocationField); - + sketchbookLocationField.setColumns(40); browseButton.setText(I18n.PROMPT_BROWSE); @@ -193,7 +192,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { comboLanguageLabel.setText(tr("Editor language: ")); requiresRestartLabel.setText(tr(" (requires restart of Arduino)")); - + comboLanguage.getAccessibleContext().setAccessibleName("Editor language (requires restart of Arduino)"); fontSizeLabel.setText(tr("Editor font size: ")); @@ -248,7 +247,7 @@ public void mouseEntered(java.awt.event.MouseEvent evt) { arduinoNotRunningLabel.setForeground(Color.GRAY); arduinoNotRunningLabel.setText(tr("(edit only when Arduino is not running)")); - checkboxesContainer.setLayout(new javax.swing.BoxLayout(checkboxesContainer, javax.swing.BoxLayout.Y_AXIS)); + checkboxesContainer.setLayout(new GridLayout(0,2)); displayLineNumbersBox.setText(tr("Display line numbers")); checkboxesContainer.add(displayLineNumbersBox); @@ -277,18 +276,15 @@ public void mouseEntered(java.awt.event.MouseEvent evt) { checkboxesContainer.add(externalEditorBox); - cacheCompiledCore.setText(tr("Aggressively cache compiled core")); - checkboxesContainer.add(cacheCompiledCore); - checkUpdatesBox.setText(tr("Check for updates on startup")); checkboxesContainer.add(checkUpdatesBox); - updateExtensionBox.setText(tr("Update sketch files to new extension on save (.pde -> .ino)")); - checkboxesContainer.add(updateExtensionBox); - saveVerifyUploadBox.setText(tr("Save when verifying or uploading")); checkboxesContainer.add(saveVerifyUploadBox); + accessibleIDEBox.setText(tr("Use accessibility features")); + checkboxesContainer.add(accessibleIDEBox); + jLabel1.setText(tr("Interface scale:")); jLabel2.setText(tr(" (requires restart of Arduino)")); @@ -307,7 +303,7 @@ public void itemStateChanged(java.awt.event.ItemEvent evt) { autoScaleCheckBox.getAccessibleContext().setAccessibleName("Automatic interface scale (requires restart of Arduino"); jLabel3.setText("%"); - + comboThemeLabel.setText(tr("Theme: ")); comboTheme.getAccessibleContext().setAccessibleName("Theme (requires restart of Arduino)"); @@ -322,7 +318,7 @@ public void itemStateChanged(java.awt.event.ItemEvent evt) { .addContainerGap() .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(sketchbookLocationField, javax.swing.GroupLayout.DEFAULT_SIZE, 553, Short.MAX_VALUE) + .addComponent(sketchbookLocationField, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(browseButton)) .addComponent(checkboxesContainer, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) @@ -631,13 +627,13 @@ public void actionPerformed(java.awt.event.ActionEvent evt) { getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 691, Short.MAX_VALUE) + .addGap(0, 800, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGap(0, 580, Short.MAX_VALUE) + .addGap(0, 400, Short.MAX_VALUE) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); @@ -721,6 +717,7 @@ private void autoScaleCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {// private javax.swing.JCheckBox autoScaleCheckBox; private javax.swing.JButton browseButton; private javax.swing.JCheckBox checkUpdatesBox; + private javax.swing.JCheckBox accessibleIDEBox; private javax.swing.JPanel checkboxesContainer; private javax.swing.JComboBox comboLanguage; private javax.swing.JLabel comboLanguageLabel; @@ -730,7 +727,6 @@ private void autoScaleCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {// private javax.swing.JCheckBox enableCodeFoldingBox; private javax.swing.JButton extendedAdditionalUrlFieldWindow; private javax.swing.JCheckBox externalEditorBox; - private javax.swing.JCheckBox cacheCompiledCore; private javax.swing.JTextField fontSizeField; private javax.swing.JLabel fontSizeLabel; private javax.swing.JLabel jLabel1; @@ -759,7 +755,6 @@ private void autoScaleCheckBoxItemStateChanged(java.awt.event.ItemEvent evt) {// private javax.swing.JLabel showVerboseLabel; private javax.swing.JTextField sketchbookLocationField; private javax.swing.JLabel sketchbookLocationLabel; - private javax.swing.JCheckBox updateExtensionBox; private javax.swing.JCheckBox verboseCompilationBox; private javax.swing.JCheckBox verboseUploadBox; private javax.swing.JCheckBox verifyUploadBox; @@ -793,7 +788,7 @@ private void savePreferencesData() { Language newLanguage = (Language) comboLanguage.getSelectedItem(); PreferencesData.set("editor.languages.current", newLanguage.getIsoCode()); - + if (comboTheme.getSelectedIndex() == 0) { PreferencesData.set("theme.file", ""); } else { @@ -834,13 +829,9 @@ private void savePreferencesData() { PreferencesData.setBoolean("editor.external", externalEditorBox.isSelected()); - PreferencesData.setBoolean("compiler.cache_core", cacheCompiledCore.isSelected()); - PreferencesData.setBoolean("update.check", checkUpdatesBox.isSelected()); - PreferencesData.setBoolean("editor.update_extension", updateExtensionBox.isSelected()); - - PreferencesData.setBoolean("editor.save_on_verify", saveVerifyUploadBox.isSelected()); + PreferencesData.setBoolean("ide.accessible", accessibleIDEBox.isSelected()); PreferencesData.set("boardsmanager.additional.urls", additionalBoardsManagerField.getText().replace("\r\n", "\n").replace("\r", "\n").replace("\n", ",")); @@ -849,13 +840,17 @@ private void savePreferencesData() { PreferencesData.set(Constants.PREF_PROXY_MANUAL_TYPE, manualProxyTypeButtonGroup.getSelection().getActionCommand()); PreferencesData.set(Constants.PREF_PROXY_MANUAL_HOSTNAME, manualProxyHostName.getText()); PreferencesData.set(Constants.PREF_PROXY_MANUAL_PORT, manualProxyPort.getText()); - PreferencesData.set(Constants.PREF_PROXY_MANUAL_USERNAME, manualProxyUsername.getText()); - PreferencesData.set(Constants.PREF_PROXY_MANUAL_PASSWORD, String.valueOf(manualProxyPassword.getPassword())); - PreferencesData.set(Constants.PREF_PROXY_AUTO_USERNAME, autoProxyUsername.getText()); - PreferencesData.set(Constants.PREF_PROXY_AUTO_PASSWORD, String.valueOf(autoProxyPassword.getPassword())); + if (PreferencesData.get(Constants.PREF_PROXY_TYPE).equals(Constants.PROXY_TYPE_MANUAL)) { + PreferencesData.set(Constants.PREF_PROXY_USERNAME, manualProxyUsername.getText()); + PreferencesData.set(Constants.PREF_PROXY_PASSWORD, String.valueOf(manualProxyPassword.getPassword())); + } + if (PreferencesData.get(Constants.PREF_PROXY_TYPE).equals(Constants.PROXY_TYPE_AUTO)) { + PreferencesData.set(Constants.PREF_PROXY_USERNAME, autoProxyUsername.getText()); + PreferencesData.set(Constants.PREF_PROXY_PASSWORD, String.valueOf(autoProxyPassword.getPassword())); + } } - private void showPrerefencesData() { + private void showPreferencesData() { sketchbookLocationField.setText(PreferencesData.get("sketchbook.path")); String currentLanguageISOCode = PreferencesData.get("editor.languages.current"); @@ -864,7 +859,7 @@ private void showPrerefencesData() { comboLanguage.setSelectedItem(language); } } - + String selectedTheme = PreferencesData.get("theme.file", ""); Collection availablethemes = Theme.getAvailablethemes(); comboTheme.addItem(tr("Default theme")); @@ -906,11 +901,17 @@ private void showPrerefencesData() { externalEditorBox.setSelected(PreferencesData.getBoolean("editor.external")); - cacheCompiledCore.setSelected(PreferencesData.get("compiler.cache_core") == null || PreferencesData.getBoolean("compiler.cache_core")); + if (PreferencesData.get("compiler.cache_core") == null) { + PreferencesData.setBoolean("compiler.cache_core", true); + } checkUpdatesBox.setSelected(PreferencesData.getBoolean("update.check")); - updateExtensionBox.setSelected(PreferencesData.get("editor.update_extension") == null || PreferencesData.getBoolean("editor.update_extension")); + if (PreferencesData.get("editor.update_extension") == null) { + PreferencesData.setBoolean("editor.update_extension", true); + } + + accessibleIDEBox.setSelected(PreferencesData.getBoolean("ide.accessible")); saveVerifyUploadBox.setSelected(PreferencesData.getBoolean("editor.save_on_verify")); @@ -927,16 +928,16 @@ private void showPrerefencesData() { if (!PreferencesData.get(Constants.PREF_PROXY_PAC_URL, "").isEmpty()) { autoProxyUsePAC.setSelected(true); autoProxyPACURL.setText(PreferencesData.get(Constants.PREF_PROXY_PAC_URL)); - autoProxyUsername.setText(PreferencesData.get(Constants.PREF_PROXY_AUTO_USERNAME)); - autoProxyPassword.setText(PreferencesData.get(Constants.PREF_PROXY_AUTO_PASSWORD)); + autoProxyUsername.setText(PreferencesData.get(Constants.PREF_PROXY_USERNAME)); + autoProxyPassword.setText(PreferencesData.get(Constants.PREF_PROXY_PASSWORD)); } } else { manualProxy.setSelected(true); manualProxyFieldsSetEnabled(true); manualProxyHostName.setText(PreferencesData.get(Constants.PREF_PROXY_MANUAL_HOSTNAME)); manualProxyPort.setText(PreferencesData.get(Constants.PREF_PROXY_MANUAL_PORT)); - manualProxyUsername.setText(PreferencesData.get(Constants.PREF_PROXY_MANUAL_USERNAME)); - manualProxyPassword.setText(PreferencesData.get(Constants.PREF_PROXY_MANUAL_PASSWORD)); + manualProxyUsername.setText(PreferencesData.get(Constants.PREF_PROXY_USERNAME)); + manualProxyPassword.setText(PreferencesData.get(Constants.PREF_PROXY_PASSWORD)); } String selectedManualProxyType = PreferencesData.get(Constants.PREF_PROXY_MANUAL_TYPE, Constants.PROXY_MANUAL_TYPE_HTTP); diff --git a/app/src/processing/app/AbstractMonitor.java b/app/src/processing/app/AbstractMonitor.java index 52c5b65b56b..b6ba0d7652e 100644 --- a/app/src/processing/app/AbstractMonitor.java +++ b/app/src/processing/app/AbstractMonitor.java @@ -17,6 +17,7 @@ public abstract class AbstractMonitor extends JFrame implements ActionListener { private StringBuffer updateBuffer; private Timer updateTimer; + private Timer portExistsTimer; private BoardPort boardPort; @@ -27,6 +28,7 @@ public AbstractMonitor(BoardPort boardPort) { this.boardPort = boardPort; addWindowListener(new WindowAdapter() { + @Override public void windowClosing(WindowEvent event) { try { closed = true; @@ -41,6 +43,7 @@ public void windowClosing(WindowEvent event) { KeyStroke wc = Editor.WINDOW_CLOSE_KEYSTROKE; getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(wc, "close"); getRootPane().getActionMap().put("close", (new AbstractAction() { + @Override public void actionPerformed(ActionEvent event) { try { close(); @@ -71,6 +74,26 @@ public void actionPerformed(ActionEvent event) { updateTimer = new Timer(33, this); // redraw serial monitor at 30 Hz updateTimer.start(); + ActionListener portExists = new ActionListener() { + @Override + public void actionPerformed(ActionEvent ae) { + try { + if (Base.getDiscoveryManager().find(boardPort.getAddress()) == null) { + if (!closed) { + suspend(); + } + } else { + if (closed && !Editor.isUploading()) { + resume(boardPort); + } + } + } catch (Exception e) {} + } + }; + + portExistsTimer = new Timer(1000, portExists); // check if the port is still there every second + portExistsTimer.start(); + closed = false; } @@ -90,6 +113,11 @@ public void suspend() throws Exception { close(); } + public void dispose() { + super.dispose(); + portExistsTimer.stop(); + } + public void resume(BoardPort boardPort) throws Exception { setBoardPort(boardPort); @@ -165,6 +193,7 @@ private synchronized String consumeUpdateBuffer() { return s; } + @Override public void actionPerformed(ActionEvent e) { String s = consumeUpdateBuffer(); if (s.isEmpty()) { @@ -173,4 +202,13 @@ public void actionPerformed(ActionEvent e) { message(s); } } + + /** + * Read and apply new values from the preferences, either because + * the app is just starting up, or the user just finished messing + * with things in the Preferences window. + */ + public void applyPreferences() { + // Empty. + }; } diff --git a/app/src/processing/app/AbstractTextMonitor.java b/app/src/processing/app/AbstractTextMonitor.java index 72b5c4dee9f..00eabb20649 100644 --- a/app/src/processing/app/AbstractTextMonitor.java +++ b/app/src/processing/app/AbstractTextMonitor.java @@ -3,16 +3,21 @@ import static processing.app.I18n.tr; import java.awt.BorderLayout; +import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.KeyListener; +import java.awt.event.MouseWheelListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.StringTokenizer; +import javax.swing.Action; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; @@ -20,13 +25,13 @@ import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; +import javax.swing.JPopupMenu; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.SwingUtilities; import javax.swing.border.EmptyBorder; -import javax.swing.text.BadLocationException; import javax.swing.text.DefaultCaret; -import javax.swing.text.Document; +import javax.swing.text.DefaultEditorKit; import cc.arduino.packages.BoardPort; @@ -41,28 +46,35 @@ public abstract class AbstractTextMonitor extends AbstractMonitor { protected JButton clearButton; protected JCheckBox autoscrollBox; protected JCheckBox addTimeStampBox; - protected JComboBox lineEndings; - protected JComboBox serialRates; + protected JComboBox lineEndings; + protected JComboBox serialRates; - private SimpleDateFormat logDateFormat; - public AbstractTextMonitor(BoardPort boardPort) { super(boardPort); - logDateFormat = new SimpleDateFormat("HH:mm:ss.SSS"); } - + + @Override + public synchronized void addMouseWheelListener(MouseWheelListener l) { + super.addMouseWheelListener(l); + textArea.addMouseWheelListener(l); + } + + @Override + public synchronized void addKeyListener(KeyListener l) { + super.addKeyListener(l); + textArea.addKeyListener(l); + textField.addKeyListener(l); + } + + @Override protected void onCreateWindow(Container mainPane) { - Font consoleFont = Theme.getFont("console.font"); - Font editorFont = PreferencesData.getFont("editor.font"); - Font font = Theme.scale(new Font(consoleFont.getName(), consoleFont.getStyle(), editorFont.getSize())); mainPane.setLayout(new BorderLayout()); - textArea = new TextAreaFIFO(8000000); + textArea = new TextAreaFIFO(8_000_000); textArea.setRows(16); textArea.setColumns(40); textArea.setEditable(false); - textArea.setFont(font); // don't automatically update the caret. that way we can manually decide // whether or not to do so based on the autoscroll checkbox. @@ -71,7 +83,7 @@ protected void onCreateWindow(Container mainPane) { scrollPane = new JScrollPane(textArea); mainPane.add(scrollPane, BorderLayout.CENTER); - + JPanel upperPane = new JPanel(); upperPane.setLayout(new BoxLayout(upperPane, BoxLayout.X_AXIS)); upperPane.setBorder(new EmptyBorder(4, 4, 4, 4)); @@ -79,11 +91,29 @@ protected void onCreateWindow(Container mainPane) { textField = new JTextField(40); // textField is selected every time the window is focused addWindowFocusListener(new WindowAdapter() { + @Override public void windowGainedFocus(WindowEvent e) { textField.requestFocusInWindow(); } }); + // Add cut/copy/paste contextual menu to the text input field. + JPopupMenu menu = new JPopupMenu(); + + Action cut = new DefaultEditorKit.CutAction(); + cut.putValue(Action.NAME, tr("Cut")); + menu.add(cut); + + Action copy = new DefaultEditorKit.CopyAction(); + copy.putValue(Action.NAME, tr("Copy")); + menu.add(copy); + + Action paste = new DefaultEditorKit.PasteAction(); + paste.putValue(Action.NAME, tr("Paste")); + menu.add(paste); + + textField.setComponentPopupMenu(menu); + sendButton = new JButton(tr("Send")); clearButton = new JButton(tr("Clear output")); @@ -107,28 +137,17 @@ public void windowGainedFocus(WindowEvent e) { minimumSize.setSize(minimumSize.getWidth() / 3, minimumSize.getHeight()); noLineEndingAlert.setMinimumSize(minimumSize); - lineEndings = new JComboBox(new String[]{tr("No line ending"), tr("Newline"), tr("Carriage return"), tr("Both NL & CR")}); - lineEndings.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent event) { - PreferencesData.setInteger("serial.line_ending", lineEndings.getSelectedIndex()); - noLineEndingAlert.setForeground(pane.getBackground()); - } - }); - if (PreferencesData.get("serial.line_ending") != null) { - lineEndings.setSelectedIndex(PreferencesData.getInteger("serial.line_ending")); - } - if (PreferencesData.get("serial.show_timestamp") != null) { - addTimeStampBox.setSelected(PreferencesData.getBoolean("serial.show_timestamp")); - } - addTimeStampBox.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - PreferencesData.setBoolean("serial.show_timestamp", addTimeStampBox.isSelected()); - } + lineEndings = new JComboBox<>(new String[]{tr("No line ending"), tr("Newline"), tr("Carriage return"), tr("Both NL & CR")}); + lineEndings.addActionListener((ActionEvent event) -> { + PreferencesData.setInteger("serial.line_ending", lineEndings.getSelectedIndex()); + noLineEndingAlert.setForeground(pane.getBackground()); }); + addTimeStampBox.addActionListener((ActionEvent event) -> + PreferencesData.setBoolean("serial.show_timestamp", addTimeStampBox.isSelected())); lineEndings.setMaximumSize(lineEndings.getMinimumSize()); - serialRates = new JComboBox(); + serialRates = new JComboBox<>(); for (String rate : serialRateStrings) { serialRates.addItem(rate + " " + tr("baud")); } @@ -146,27 +165,41 @@ public void actionPerformed(ActionEvent e) { pane.add(Box.createRigidArea(new Dimension(8, 0))); pane.add(clearButton); + applyPreferences(); + mainPane.add(pane, BorderLayout.SOUTH); } - protected void onEnableWindow(boolean enable) - { - textArea.setEnabled(enable); - clearButton.setEnabled(enable); + @Override + protected void onEnableWindow(boolean enable) { + // never actually disable textArea, so people can + // still select & copy text, even when the port + // is closed or disconnected + textArea.setEnabled(true); + if (enable) { + // setting these to null for system default + // gives a wrong gray background on Windows + // so assume black text on white background + textArea.setForeground(Color.BLACK); + textArea.setBackground(Color.WHITE); + } else { + // In theory, UIManager.getDefaults() should + // give us the system's colors for disabled + // windows. But it doesn't seem to work. :( + textArea.setForeground(new Color(64, 64, 64)); + textArea.setBackground(new Color(238, 238, 238)); + } + textArea.invalidate(); scrollPane.setEnabled(enable); textField.setEnabled(enable); sendButton.setEnabled(enable); - autoscrollBox.setEnabled(enable); - addTimeStampBox.setEnabled(enable); - lineEndings.setEnabled(enable); - serialRates.setEnabled(enable); } public void onSendCommand(ActionListener listener) { textField.addActionListener(listener); sendButton.addActionListener(listener); } - + public void onClearCommand(ActionListener listener) { clearButton.addActionListener(listener); } @@ -174,32 +207,59 @@ public void onClearCommand(ActionListener listener) { public void onSerialRateChange(ActionListener listener) { serialRates.addActionListener(listener); } - - public void message(final String s) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - if (addTimeStampBox.isSelected()) { - String[] lines = s.split("(?<=\\n)"); - Document doc = textArea.getDocument(); - for (String currentLine : lines) { - try { - if (doc.getLength() == 0 || ((int) doc.getText(doc.getLength() - 1, 1).charAt(0) == 10)) { - textArea.append(logDateFormat.format(new Date()) + " -> " + currentLine); - } else { - textArea.append(currentLine); - } - } catch (BadLocationException e) { - e.printStackTrace(); - } - } - } else { - textArea.append(s); - } - - if (autoscrollBox.isSelected()) { - textArea.setCaretPosition(textArea.getDocument().getLength()); - } + + @Override + public void message(String msg) { + SwingUtilities.invokeLater(() -> updateTextArea(msg)); + } + + private static final String LINE_SEPARATOR = "\n"; + private boolean isStartingLine = true; + + protected void updateTextArea(String msg) { + if (addTimeStampBox.isSelected()) { + textArea.append(addTimestamps(msg)); + } else { + textArea.append(msg); + } + if (autoscrollBox.isSelected()) { + textArea.setCaretPosition(textArea.getDocument().getLength()); + } + } + + @Override + public void applyPreferences() { + + // Apply font. + Font consoleFont = Theme.getFont("console.font"); + Font editorFont = PreferencesData.getFont("editor.font"); + textArea.setFont(Theme.scale(new Font( + consoleFont.getName(), consoleFont.getStyle(), editorFont.getSize()))); + + // Apply line endings. + if (PreferencesData.get("serial.line_ending") != null) { + lineEndings.setSelectedIndex(PreferencesData.getInteger("serial.line_ending")); + } + + // Apply timestamp visibility. + if (PreferencesData.get("serial.show_timestamp") != null) { + addTimeStampBox.setSelected(PreferencesData.getBoolean("serial.show_timestamp")); + } + } + + private String addTimestamps(String text) { + String now = new SimpleDateFormat("HH:mm:ss.SSS -> ").format(new Date()); + final StringBuilder sb = new StringBuilder(text.length() + now.length()); + StringTokenizer tokenizer = new StringTokenizer(text, LINE_SEPARATOR, true); + while (tokenizer.hasMoreTokens()) { + if (isStartingLine) { + sb.append(now); } - }); + String token = tokenizer.nextToken(); + sb.append(token); + // tokenizer returns "\n" as a single token + isStartingLine = token.equals(LINE_SEPARATOR); + } + return sb.toString(); } } diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index 3cfa4c502b8..cdac3059f6d 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -27,7 +27,10 @@ import cc.arduino.UpdatableBoardsLibsFakeURLsHandler; import cc.arduino.UploaderUtils; import cc.arduino.contributions.*; -import cc.arduino.contributions.libraries.*; +import cc.arduino.contributions.libraries.ContributedLibrary; +import cc.arduino.contributions.libraries.LibrariesIndexer; +import cc.arduino.contributions.libraries.LibraryInstaller; +import cc.arduino.contributions.libraries.LibraryOfSameTypeComparator; import cc.arduino.contributions.libraries.ui.LibraryManagerUI; import cc.arduino.contributions.packages.ContributedPlatform; import cc.arduino.contributions.packages.ContributionInstaller; @@ -35,10 +38,11 @@ import cc.arduino.contributions.packages.ui.ContributionManagerUI; import cc.arduino.files.DeleteFilesOnShutdown; import cc.arduino.packages.DiscoveryManager; +import cc.arduino.packages.Uploader; import cc.arduino.view.Event; import cc.arduino.view.JMenuUtils; import cc.arduino.view.SplashScreenHelper; - +import com.github.zafarkhaja.semver.Version; import org.apache.commons.compress.utils.IOUtils; import org.apache.commons.lang3.StringUtils; import processing.app.debug.TargetBoard; @@ -62,15 +66,16 @@ import java.awt.*; import java.awt.event.*; import java.io.*; -import java.util.*; import java.util.List; import java.util.Timer; +import java.util.*; import java.util.logging.Handler; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; import java.util.stream.Stream; +import static processing.app.I18n.format; import static processing.app.I18n.tr; @@ -136,7 +141,7 @@ static public void main(String args[]) throws Exception { if (OSUtils.isMacOS()) { System.setProperty("apple.laf.useScreenMenuBar", String.valueOf(!System.getProperty("os.version").startsWith("10.13") - || com.apple.eawt.Application.getApplication().isAboutMenuItemPresent())); + || isMacOsAboutMenuItemPresent())); ThinkDifferent.init(); } @@ -149,6 +154,11 @@ static public void main(String args[]) throws Exception { } } + @SuppressWarnings("deprecation") + public static boolean isMacOsAboutMenuItemPresent() { + return com.apple.eawt.Application.getApplication().isAboutMenuItemPresent(); + } + static public void initLogger() { Handler consoleHandler = new ConsoleLogger(); consoleHandler.setLevel(Level.ALL); @@ -261,6 +271,8 @@ public Base(String[] args) throws Exception { splash.splashText(tr("Initializing packages...")); BaseNoGui.initPackages(); + parser.getUploadPort().ifPresent(BaseNoGui::selectSerialPort); + splash.splashText(tr("Preparing boards...")); if (!isCommandLine()) { @@ -278,8 +290,9 @@ public Base(String[] args) throws Exception { pdeKeywords = new PdeKeywords(); pdeKeywords.reload(); - contributionInstaller = new ContributionInstaller(BaseNoGui.getPlatform(), new GPGDetachedSignatureVerifier()); - libraryInstaller = new LibraryInstaller(BaseNoGui.getPlatform()); + final GPGDetachedSignatureVerifier gpgDetachedSignatureVerifier = new GPGDetachedSignatureVerifier(); + contributionInstaller = new ContributionInstaller(BaseNoGui.getPlatform(), gpgDetachedSignatureVerifier); + libraryInstaller = new LibraryInstaller(BaseNoGui.getPlatform(), gpgDetachedSignatureVerifier); parser.parseArgumentsPhase2(); @@ -293,11 +306,10 @@ public Base(String[] args) throws Exception { if (parser.isInstallBoard()) { ContributionsIndexer indexer = new ContributionsIndexer( BaseNoGui.getSettingsFolder(), BaseNoGui.getHardwareFolder(), - BaseNoGui.getPlatform(), new GPGDetachedSignatureVerifier()); + BaseNoGui.getPlatform(), gpgDetachedSignatureVerifier); ProgressListener progressListener = new ConsoleProgressListener(); - List downloadedPackageIndexFiles = contributionInstaller.updateIndex(progressListener); - contributionInstaller.deleteUnknownFiles(downloadedPackageIndexFiles); + contributionInstaller.updateIndex(progressListener); indexer.parseIndex(); indexer.syncWithFilesystem(); @@ -305,7 +317,12 @@ public Base(String[] args) throws Exception { ContributedPlatform selected = null; if (boardToInstallParts.length == 3) { - selected = indexer.getIndex().findPlatform(boardToInstallParts[0], boardToInstallParts[1], VersionHelper.valueOf(boardToInstallParts[2]).toString()); + Optional version = VersionHelper.valueOf(boardToInstallParts[2]); + if (!version.isPresent()) { + System.out.println(format(tr("Invalid version {0}"), boardToInstallParts[2])); + System.exit(1); + } + selected = indexer.getIndex().findPlatform(boardToInstallParts[0], boardToInstallParts[1], version.get().toString()); } else if (boardToInstallParts.length == 2) { List platformsByName = indexer.getIndex().findPlatforms(boardToInstallParts[0], boardToInstallParts[1]); Collections.sort(platformsByName, new DownloadableContributionVersionComparator()); @@ -346,7 +363,12 @@ public Base(String[] args) throws Exception { ContributedLibrary selected = null; if (libraryToInstallParts.length == 2) { - selected = indexer.getIndex().find(libraryToInstallParts[0], VersionHelper.valueOf(libraryToInstallParts[1]).toString()); + Optional version = VersionHelper.valueOf(libraryToInstallParts[1]); + if (!version.isPresent()) { + System.out.println(format(tr("Invalid version {0}"), libraryToInstallParts[1])); + System.exit(1); + } + selected = indexer.getIndex().find(libraryToInstallParts[0], version.get().toString()); } else if (libraryToInstallParts.length == 1) { List librariesByName = indexer.getIndex().find(libraryToInstallParts[0]); Collections.sort(librariesByName, new DownloadableContributionVersionComparator()); @@ -366,7 +388,7 @@ public Base(String[] args) throws Exception { library, mayInstalled.get().getParsedVersion()))); libraryInstaller.remove(mayInstalled.get(), progressListener); } else { - libraryInstaller.install(selected, mayInstalled, progressListener); + libraryInstaller.install(selected, progressListener); } } @@ -450,7 +472,7 @@ public Base(String[] args) throws Exception { if (!parser.isForceSavePrefs()) PreferencesData.setDoSave(true); if (handleOpen(file, retrieveSketchLocation(".default"), false) == null) { - String mess = I18n.format(tr("Failed to open sketch: \"{0}\""), path); + String mess = format(tr("Failed to open sketch: \"{0}\""), path); // Open failure is fatal in upload/verify mode if (parser.isVerifyOrUploadMode()) showError(null, mess, 2); @@ -597,7 +619,12 @@ private int[] retrieveSketchLocation(String index) { .get("last.sketch" + index + ".location"); if (locationStr == null) return defaultEditorLocation(); - return PApplet.parseInt(PApplet.split(locationStr, ',')); + + int location[] = PApplet.parseInt(PApplet.split(locationStr, ',')); + if (location[0] > screen.width || location[1] > screen.height) + return defaultEditorLocation(); + + return location; } protected void storeRecentSketches(SketchController sketch) { @@ -746,7 +773,20 @@ protected File createNewUntitled() throws IOException { if (!newbieFile.createNewFile()) { throw new IOException(); } - FileUtils.copyFile(new File(getContentFile("examples"), "01.Basics" + File.separator + "BareMinimum" + File.separator + "BareMinimum.ino"), newbieFile); + + // Initialize the pde file with the BareMinimum sketch. + // Apply user-defined tab settings. + String sketch = FileUtils.readFileToString( + new File(getContentFile("examples"), "01.Basics" + File.separator + + "BareMinimum" + File.separator + "BareMinimum.ino")); + String currentTab = " "; + String newTab = (PreferencesData.getBoolean("editor.tabs.expand") + ? StringUtils.repeat(" ", + PreferencesData.getInteger("editor.tabs.size")) + : "\t"); + sketch = sketch.replaceAll( + "(?<=(^|\n)(" + currentTab + "){0,50})" + currentTab, newTab); + FileUtils.writeStringToFile(newbieFile, sketch); return newbieFile; } @@ -910,46 +950,23 @@ public void actionPerformed(ActionEvent actionEvent) { * @return true if succeeded in closing, false if canceled. */ public boolean handleClose(Editor editor) { - // Check if modified -// boolean immediate = editors.size() == 1; - if (!editor.checkModified()) { - return false; - } if (editors.size() == 1) { - storeScreenDimensions(); - storeSketches(); - - // This will store the sketch count as zero - editors.remove(editor); - try { - Editor.serialMonitor.close(); - } catch (Exception e) { - //ignore + if (!handleQuit()) { + return false; } - rebuildRecentSketchesMenuItems(); - - // Save out the current prefs state - PreferencesData.save(); - - // Since this wasn't an actual Quit event, call System.exit() - System.exit(0); - + // Everything called after handleQuit will only affect OSX + editor.setVisible(false); + editors.remove(editor); } else { // More than one editor window open, // proceed with closing the current window. + // Check if modified + if (!editor.checkModified()) { + return false; + } editor.setVisible(false); editor.dispose(); -// for (int i = 0; i < editorCount; i++) { -// if (editor == editors[i]) { -// for (int j = i; j < editorCount-1; j++) { -// editors[j] = editors[j+1]; -// } -// editorCount--; -// // Set to null so that garbage collection occurs -// editors[editorCount] = null; -// } -// } editors.remove(editor); } return true; @@ -972,11 +989,19 @@ public boolean handleQuit() { // ignore } + // kill uploader (if still alive) + UploaderUtils uploaderInstance = new UploaderUtils(); + Uploader uploader = uploaderInstance.getUploaderByPreferences(false); + if (uploader != null && Uploader.programmerPid != null && Uploader.programmerPid.isAlive()) { + // kill the stuck programmer + Uploader.programmerPid.destroyForcibly(); + } + if (handleQuitEach()) { // Save out the current prefs state PreferencesData.save(); - if (!OSUtils.hasMacOSStyleMenus()) { + if (!OSUtils.isMacOS()) { // If this was fired from the menu or an AppleEvent (the Finder), // then Mac OS X will send the terminate signal itself. System.exit(0); @@ -1112,7 +1137,7 @@ public void actionPerformed(ActionEvent e) { importMenu.addSeparator(); } lastLibType = libType; - JMenuItem platformItem = new JMenuItem(I18n.format(tr("{0} libraries"), tr(lastLibType))); + JMenuItem platformItem = new JMenuItem(format(tr("{0} libraries"), tr(lastLibType))); platformItem.setEnabled(false); importMenu.add(platformItem); } @@ -1123,7 +1148,7 @@ public void actionPerformed(ActionEvent event) { try { activeEditor.getSketchController().importLibrary(l); } catch (IOException e) { - showWarning(tr("Error"), I18n.format("Unable to list header files in {0}", l.getSrcFolder()), e); + showWarning(tr("Error"), format("Unable to list header files in {0}", l.getSrcFolder()), e); } } }; @@ -1255,7 +1280,7 @@ public void rebuildExamplesMenu(JMenu menu) { if (!platformLibs.isEmpty()) { menu.addSeparator(); platformLibs.sort(); - label = new JMenuItem(I18n.format(tr("Examples for {0}"), boardId)); + label = new JMenuItem(format(tr("Examples for {0}"), boardId)); label.setEnabled(false); menu.add(label); for (UserLibrary lib : platformLibs) { @@ -1266,7 +1291,7 @@ public void rebuildExamplesMenu(JMenu menu) { if (!referencedPlatformLibs.isEmpty()) { menu.addSeparator(); referencedPlatformLibs.sort(); - label = new JMenuItem(I18n.format(tr("Examples for {0}"), referencedPlatformName)); + label = new JMenuItem(format(tr("Examples for {0}"), referencedPlatformName)); label.setEnabled(false); menu.add(label); for (UserLibrary lib : referencedPlatformLibs) { @@ -1288,6 +1313,7 @@ public void rebuildExamplesMenu(JMenu menu) { if (!sketchbookIncompatibleLibs.isEmpty()) { sketchbookIncompatibleLibs.sort(); JMenu incompatible = new JMenu(tr("INCOMPATIBLE")); + MenuScroller.setScrollerFor(incompatible); menu.add(incompatible); for (UserLibrary lib : sketchbookIncompatibleLibs) { addSketchesSubmenu(incompatible, lib); @@ -1411,8 +1437,9 @@ public void actionPerformed(ActionEvent actionevent) { String filterText = ""; String dropdownItem = ""; if (actionevent instanceof Event) { - filterText = ((Event) actionevent).getPayload().get("filterText").toString(); - dropdownItem = ((Event) actionevent).getPayload().get("dropdownItem").toString(); + Event e = ((Event) actionevent); + filterText = e.getPayload().get("filterText").toString(); + dropdownItem = e.getPayload().get("dropdownItem").toString(); } try { openBoardsManager(filterText, dropdownItem); @@ -1432,41 +1459,42 @@ public void actionPerformed(ActionEvent actionevent) { boardMenu.add(new JSeparator()); // Generate custom menus for all platforms - Set customMenusTitles = new HashSet<>(); for (TargetPackage targetPackage : BaseNoGui.packages.values()) { for (TargetPlatform targetPlatform : targetPackage.platforms()) { - customMenusTitles.addAll(targetPlatform.getCustomMenus().values()); + for (String customMenuTitle : targetPlatform.getCustomMenus().values()) { + JMenu customMenu = new JMenu(tr(customMenuTitle)); + customMenu.putClientProperty("platform", getPlatformUniqueId(targetPlatform)); + customMenu.putClientProperty("removeOnWindowDeactivation", true); + boardsCustomMenus.add(customMenu); + MenuScroller.setScrollerFor(customMenu); + } } } - for (String customMenuTitle : customMenusTitles) { - JMenu customMenu = new JMenu(tr(customMenuTitle)); - customMenu.putClientProperty("removeOnWindowDeactivation", true); - boardsCustomMenus.add(customMenu); - } List menuItemsToClickAfterStartup = new LinkedList<>(); ButtonGroup boardsButtonGroup = new ButtonGroup(); Map buttonGroupsMap = new HashMap<>(); + List platformMenus = new ArrayList<>(); + // Cycle through all packages - boolean first = true; for (TargetPackage targetPackage : BaseNoGui.packages.values()) { // For every package cycle through all platform for (TargetPlatform targetPlatform : targetPackage.platforms()) { - // Add a separator from the previous platform - if (!first) - boardMenu.add(new JSeparator()); - first = false; - // Add a title for each platform String platformLabel = targetPlatform.getPreferences().get("name"); - if (platformLabel != null && !targetPlatform.getBoards().isEmpty()) { - JMenuItem menuLabel = new JMenuItem(tr(platformLabel)); - menuLabel.setEnabled(false); - boardMenu.add(menuLabel); - } + if (platformLabel == null) + platformLabel = targetPackage.getId() + "-" + targetPlatform.getId(); + + // add an hint that this core lives in sketchbook + if (targetPlatform.isInSketchbook()) + platformLabel += " (in sketchbook)"; + + JMenu platformBoardsMenu = new JMenu(platformLabel); + MenuScroller.setScrollerFor(platformBoardsMenu); + platformMenus.add(platformBoardsMenu); // Cycle through all boards of this platform for (TargetBoard board : targetPlatform.getBoards().values()) { @@ -1475,14 +1503,40 @@ public void actionPerformed(ActionEvent actionevent) { JMenuItem item = createBoardMenusAndCustomMenus(boardsCustomMenus, menuItemsToClickAfterStartup, buttonGroupsMap, board, targetPlatform, targetPackage); - boardMenu.add(item); + platformBoardsMenu.add(item); boardsButtonGroup.add(item); } } } + platformMenus.sort((x,y) -> x.getText().compareToIgnoreCase(y.getText())); + + JMenuItem firstBoardItem = null; + if (platformMenus.size() == 1) { + // When just one platform exists, add the board items directly, + // rather than using a submenu + for (Component boardItem : platformMenus.get(0).getMenuComponents()) { + boardMenu.add(boardItem); + if (firstBoardItem == null) + firstBoardItem = (JMenuItem)boardItem; + } + } else { + // For multiple platforms, use submenus + for (JMenu platformMenu : platformMenus) { + if (firstBoardItem == null && platformMenu.getItemCount() > 0) + firstBoardItem = platformMenu.getItem(0); + boardMenu.add(platformMenu); + } + } + + if (firstBoardItem == null) { + throw new IllegalStateException("No available boards"); + } + + // If there is no current board yet (first startup, or selected + // board no longer defined), select first available board. if (menuItemsToClickAfterStartup.isEmpty()) { - menuItemsToClickAfterStartup.add(selectFirstEnabledMenuItem(boardMenu)); + menuItemsToClickAfterStartup.add(firstBoardItem); } for (JMenuItem menuItemToClick : menuItemsToClickAfterStartup) { @@ -1491,6 +1545,10 @@ public void actionPerformed(ActionEvent actionevent) { } } + private String getPlatformUniqueId(TargetPlatform platform) { + return platform.getId() + "_" + platform.getFolder(); + } + private JRadioButtonMenuItem createBoardMenusAndCustomMenus( final List boardsCustomMenus, List menuItemsToClickAfterStartup, Map buttonGroupsMap, @@ -1514,6 +1572,7 @@ public void actionPerformed(ActionEvent actionevent) { onBoardOrPortChange(); rebuildImportMenu(Editor.importMenu); rebuildExamplesMenu(Editor.examplesMenu); + rebuildProgrammerMenu(); } }; action.putValue("b", board); @@ -1528,7 +1587,7 @@ public void actionPerformed(ActionEvent actionevent) { PreferencesMap customMenus = targetPlatform.getCustomMenus(); for (final String menuId : customMenus.keySet()) { String title = customMenus.get(menuId); - JMenu menu = getBoardCustomMenu(tr(title)); + JMenu menu = getBoardCustomMenu(tr(title), getPlatformUniqueId(targetPlatform)); if (board.hasMenu(menuId)) { PreferencesMap boardCustomMenu = board.getMenuLabels(menuId); @@ -1536,11 +1595,16 @@ public void actionPerformed(ActionEvent actionevent) { @SuppressWarnings("serial") Action subAction = new AbstractAction(tr(boardCustomMenu.get(customMenuOption))) { public void actionPerformed(ActionEvent e) { - PreferencesData.set("custom_" + menuId, ((TargetBoard) getValue("board")).getId() + "_" + getValue("custom_menu_option")); + PreferencesData.set("custom_" + menuId, ((List) getValue("board")).get(0).getId() + "_" + getValue("custom_menu_option")); onBoardOrPortChange(); } }; - subAction.putValue("board", board); + List boards = (List) subAction.getValue("board"); + if (boards == null) { + boards = new ArrayList<>(); + } + boards.add(board); + subAction.putValue("board", boards); subAction.putValue("custom_menu_option", customMenuOption); if (!buttonGroupsMap.containsKey(menuId)) { @@ -1568,7 +1632,9 @@ private void filterVisibilityOfSubsequentBoardMenus(List boardsCustomMenu JMenu menu = boardsCustomMenus.get(i); for (int m = 0; m < menu.getItemCount(); m++) { JMenuItem menuItem = menu.getItem(m); - menuItem.setVisible(menuItem.getAction().getValue("board").equals(board)); + for (TargetBoard t_board : (List)menuItem.getAction().getValue("board")) { + menuItem.setVisible(t_board.equals(board)); + } } menu.setVisible(ifThereAreVisibleItemsOn(menu)); @@ -1591,9 +1657,9 @@ private static boolean ifThereAreVisibleItemsOn(JMenu menu) { return false; } - private JMenu getBoardCustomMenu(String label) throws Exception { + private JMenu getBoardCustomMenu(String label, String platformUniqueId) throws Exception { for (JMenu menu : boardsCustomMenus) { - if (label.equals(menu.getText())) { + if (label.equals(menu.getText()) && menu.getClientProperty("platform").equals(platformUniqueId)) { return menu; } } @@ -1625,40 +1691,50 @@ private static JMenuItem selectVisibleSelectedOrFirstMenuItem(JMenu menu) { throw new IllegalStateException("Menu has no enabled items"); } - private static JMenuItem selectFirstEnabledMenuItem(JMenu menu) { - for (int i = 1; i < menu.getItemCount(); i++) { - JMenuItem item = menu.getItem(i); - if (item != null && item.isEnabled()) { - return item; + public void rebuildProgrammerMenu() { + programmerMenus = new LinkedList<>(); + ButtonGroup group = new ButtonGroup(); + + TargetBoard board = BaseNoGui.getTargetBoard(); + if (board != null) { + TargetPlatform boardPlatform = board.getContainerPlatform(); + TargetPlatform corePlatform = null; + + String core = board.getPreferences().get("build.core"); + if (core != null && core.contains(":")) { + String[] split = core.split(":", 2); + corePlatform = BaseNoGui.getCurrentTargetPlatformFromPackage(split[0]); } + + addProgrammersForPlatform(boardPlatform, programmerMenus, group); + if (corePlatform != null) + addProgrammersForPlatform(corePlatform, programmerMenus, group); + } + + if (programmerMenus.isEmpty()) { + JMenuItem item = new JMenuItem(tr("No programmers available for this board")); + item.setEnabled(false); + programmerMenus.add(item); } - throw new IllegalStateException("Menu has no enabled items"); } - public void rebuildProgrammerMenu() { - programmerMenus = new LinkedList<>(); + public void addProgrammersForPlatform(TargetPlatform platform, List menus, ButtonGroup group) { + for (String programmer : platform.getProgrammers().keySet()) { + String id = platform.getContainerPackage().getId() + ":" + programmer; - ButtonGroup group = new ButtonGroup(); - for (TargetPackage targetPackage : BaseNoGui.packages.values()) { - for (TargetPlatform targetPlatform : targetPackage.platforms()) { - for (String programmer : targetPlatform.getProgrammers().keySet()) { - String id = targetPackage.getId() + ":" + programmer; - - @SuppressWarnings("serial") - AbstractAction action = new AbstractAction(targetPlatform.getProgrammer(programmer).get("name")) { - public void actionPerformed(ActionEvent actionevent) { - PreferencesData.set("programmer", "" + getValue("id")); - } - }; - action.putValue("id", id); - JMenuItem item = new JRadioButtonMenuItem(action); - if (PreferencesData.get("programmer").equals(id)) { - item.setSelected(true); - } - group.add(item); - programmerMenus.add(item); + @SuppressWarnings("serial") + AbstractAction action = new AbstractAction(platform.getProgrammer(programmer).get("name")) { + public void actionPerformed(ActionEvent actionevent) { + PreferencesData.set("programmer", "" + getValue("id")); } + }; + action.putValue("id", id); + JMenuItem item = new JRadioButtonMenuItem(action); + if (PreferencesData.get("programmer").equals(id)) { + item.setSelected(true); } + group.add(item); + menus.add(item); } } @@ -1687,19 +1763,12 @@ public int compare(File file, File file2) { }); boolean ifound = false; - for (File subfolder : files) { - if (FileUtils.isSCCSOrHiddenFile(subfolder)) { - continue; - } - - if (!subfolder.isDirectory()) continue; - - if (addSketchesSubmenu(menu, subfolder.getName(), subfolder)) { + if (!FileUtils.isSCCSOrHiddenFile(subfolder) && subfolder.isDirectory() + && addSketchesSubmenu(menu, subfolder.getName(), subfolder)) { ifound = true; } } - return ifound; } @@ -1784,7 +1853,7 @@ public void actionPerformed(ActionEvent event) { try { activeEditor.getSketchController().importLibrary(l); } catch (IOException e) { - showWarning(tr("Error"), I18n.format("Unable to list header files in {0}", l.getSrcFolder()), e); + showWarning(tr("Error"), format("Unable to list header files in {0}", l.getSrcFolder()), e); } } }; @@ -1873,6 +1942,75 @@ public void handleFontSizeChange(int change) { getEditors().forEach(Editor::applyPreferences); } + /** + * Adds a {@link MouseWheelListener} and {@link KeyListener} to the given + * component that will make "CTRL scroll" and "CTRL +/-" + * (with optional SHIFT for +) increase/decrease the editor text size. + * This method is equivalent to calling + * {@link #addEditorFontResizeMouseWheelListener(Component)} and + * {@link #addEditorFontResizeKeyListener(Component)} on the given component. + * Note that this also affects components that use the editor font settings. + * @param comp - The component to add the listener to. + */ + public void addEditorFontResizeListeners(Component comp) { + addEditorFontResizeMouseWheelListener(comp); + addEditorFontResizeKeyListener(comp); + } + + /** + * Adds a {@link MouseWheelListener} to the given component that will + * make "CTRL scroll" increase/decrease the editor text size. + * When CTRL is not pressed while scrolling, mouse wheel events are passed + * on to the parent of the given component. + * Note that this also affects components that use the editor font settings. + * @param comp - The component to add the listener to. + */ + public void addEditorFontResizeMouseWheelListener(Component comp) { + comp.addMouseWheelListener(e -> { + if (e.isControlDown()) { + if (e.getWheelRotation() < 0) { + this.handleFontSizeChange(1); + } else { + this.handleFontSizeChange(-1); + } + } else { + if (e.getComponent() != null && e.getComponent().getParent() != null) { + e.getComponent().getParent().dispatchEvent(e); + } + } + }); + } + + /** + * Adds a {@link KeyListener} to the given component that will make "CTRL +/-" + * (with optional SHIFT for +) increase/decrease the editor text size. + * Note that this also affects components that use the editor font settings. + * @param comp - The component to add the listener to. + */ + public void addEditorFontResizeKeyListener(Component comp) { + comp.addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + if (e.getModifiersEx() == KeyEvent.CTRL_DOWN_MASK + || e.getModifiersEx() == (KeyEvent.CTRL_DOWN_MASK + | KeyEvent.SHIFT_DOWN_MASK)) { + switch (e.getKeyCode()) { + case KeyEvent.VK_PLUS: + case KeyEvent.VK_EQUALS: + Base.this.handleFontSizeChange(1); + break; + case KeyEvent.VK_MINUS: + if (!e.isShiftDown()) { + Base.this.handleFontSizeChange(-1); + } + break; + default: + } + } + } + }); + } + public List getBoardsCustomMenus() { return boardsCustomMenus; } @@ -1934,10 +2072,9 @@ static protected File promptSketchbookLocation() { static public void openURL(String url) { try { BaseNoGui.getPlatform().openURL(url); - } catch (Exception e) { showWarning(tr("Problem Opening URL"), - I18n.format(tr("Could not open the URL\n{0}"), url), e); + format(tr("Could not open the URL\n{0}"), url), e); } } @@ -1959,10 +2096,9 @@ static protected boolean openFolderAvailable() { static public void openFolder(File file) { try { BaseNoGui.getPlatform().openFolder(file); - } catch (Exception e) { showWarning(tr("Problem Opening Folder"), - I18n.format(tr("Could not open the folder\n{0}"), file.getAbsolutePath()), e); + format(tr("Could not open the folder\n{0}"), file.getAbsolutePath()), e); } } @@ -2027,60 +2163,6 @@ static public void registerWindowCloseKeys(JRootPane root, // ................................................................. - static public void showReference(String filename) { - showReference("reference/www.arduino.cc/en", filename); - } - - static public void showReference(String prefix, String filename) { - File referenceFolder = getContentFile(prefix); - File referenceFile = new File(referenceFolder, filename); - if (!referenceFile.exists()) - referenceFile = new File(referenceFolder, filename + ".html"); - - if(referenceFile.exists()){ - openURL(referenceFile.getAbsolutePath()); - }else{ - showWarning(tr("Problem Opening URL"), I18n.format(tr("Could not open the URL\n{0}"), referenceFile), null); - } - } - - public static void showEdisonGettingStarted() { - showReference("reference/Edison_help_files", "ArduinoIDE_guide_edison"); - } - - static public void showArduinoGettingStarted() { - if (OSUtils.isMacOS()) { - showReference("Guide/MacOSX"); - } else if (OSUtils.isWindows()) { - showReference("Guide/Windows"); - } else { - openURL("http://www.arduino.cc/playground/Learning/Linux"); - } - } - - static public void showReference() { - showReference("Reference/HomePage"); - } - - - static public void showEnvironment() { - showReference("Guide/Environment"); - } - - - static public void showTroubleshooting() { - showReference("Guide/Troubleshooting"); - } - - - static public void showFAQ() { - showReference("Main/FAQ"); - } - - - // ................................................................. - - /** * "No cookie for you" type messages. Nothing fatal or all that * much of a bummer, but something to notify the user about. @@ -2296,7 +2378,7 @@ public void handleAddLibrary() { String libName = libFolder.getName(); if (!BaseNoGui.isSanitaryName(libName)) { - String mess = I18n.format(tr("The library \"{0}\" cannot be used.\n" + String mess = format(tr("The library \"{0}\" cannot be used.\n" + "Library names must contain only basic letters and numbers.\n" + "(ASCII only and no spaces, and it cannot start with a number)"), libName); @@ -2320,7 +2402,7 @@ public void handleAddLibrary() { // copy folder File destinationFolder = new File(BaseNoGui.getSketchbookLibrariesFolder().folder, sourceFile.getName()); if (!destinationFolder.mkdir()) { - activeEditor.statusError(I18n.format(tr("A library named {0} already exists"), sourceFile.getName())); + activeEditor.statusError(format(tr("A library named {0} already exists"), sourceFile.getName())); return; } try { diff --git a/app/src/processing/app/CommandHistory.java b/app/src/processing/app/CommandHistory.java new file mode 100644 index 00000000000..cae3c2fc498 --- /dev/null +++ b/app/src/processing/app/CommandHistory.java @@ -0,0 +1,167 @@ +package processing.app; + +import java.util.LinkedList; +import java.util.ListIterator; + +/** + * Keeps track of command history in console-like applications. + * @author P.J.S. Kools + */ +public class CommandHistory { + + private final LinkedList commandHistory = new LinkedList(); + private final int maxHistorySize; + private ListIterator iterator = null; + private boolean iteratorAsc; + + /** + * Create a new {@link CommandHistory}. + * @param maxHistorySize - The max command history size. + */ + public CommandHistory(int maxHistorySize) { + this.maxHistorySize = (maxHistorySize < 0 ? 0 : maxHistorySize); + this.commandHistory.addLast(""); // Current command placeholder. + } + + /** + * Adds the given command to the history and resets the history traversal + * position to the latest command. If the latest command in the history is + * equal to the given command, it will not be added to the history. + * If the max history size is exceeded, the oldest command will be removed + * from the history. + * @param command - The command to add. + */ + public void addCommand(String command) { + if (this.maxHistorySize == 0) { + return; + } + + // Remove 'current' command. + this.commandHistory.removeLast(); + + // Add new command if it differs from the latest command. + if (this.commandHistory.isEmpty() + || !this.commandHistory.getLast().equals(command)) { + + // Remove oldest command if max history size is exceeded. + if (this.commandHistory.size() >= this.maxHistorySize) { + this.commandHistory.removeFirst(); + } + + // Add new command and reset 'current' command. + this.commandHistory.addLast(command); + } + + // Re-add 'current' command and reset command iterator. + this.commandHistory.addLast(""); // Current command placeholder. + this.iterator = null; + } + + /** + * Gets whether a next (more recent) command is available in the history. + * @return {@code true} if a next command is available, + * returns {@code false} otherwise. + */ + public boolean hasNextCommand() { + if (this.iterator == null) { + return false; + } + if (!this.iteratorAsc) { + this.iterator.next(); // Current command, ascending. + this.iteratorAsc = true; + } + return this.iterator.hasNext(); + } + + /** + * Gets the next (more recent) command from the history. + * @return The next command or {@code null} if no next command is available. + */ + public String getNextCommand() { + + // Return null if there is no next command available. + if (!this.hasNextCommand()) { + return null; + } + + // Get next command. + String next = this.iterator.next(); + + // Reset 'current' command when at the end of the list. + if (this.iterator.nextIndex() == this.commandHistory.size()) { + this.iterator.set(""); // Reset 'current' command. + } + return next; + } + + /** + * Gets whether a previous (older) command is available in the history. + * @return {@code true} if a previous command is available, + * returns {@code false} otherwise. + */ + public boolean hasPreviousCommand() { + if (this.iterator == null) { + return this.commandHistory.size() > 1; + } + if (this.iteratorAsc) { + this.iterator.previous(); // Current command, descending. + this.iteratorAsc = false; + } + return this.iterator.hasPrevious(); + } + + /** + * Gets the previous (older) command from the history. + * When this method is called while the most recent command in the history is + * selected, this will store the current command as temporary latest command + * so that {@link #getNextCommand()} will return it once. This temporary + * latest command gets reset when this case occurs again or when + * {@link #addCommand(String)} is invoked. + * @param currentCommand - The current unexecuted command. + * @return The previous command or {@code null} if no previous command is + * available. + */ + public String getPreviousCommand(String currentCommand) { + + // Return null if there is no previous command available. + if (!this.hasPreviousCommand()) { + return null; + } + + // Store current unexecuted command and create iterator if not traversing. + if (this.iterator == null) { + this.iterator = + this.commandHistory.listIterator(this.commandHistory.size()); + this.iterator.previous(); // Last element, descending. + this.iteratorAsc = false; + } + + // Store current unexecuted command if on 'current' index. + if (this.iterator.nextIndex() == this.commandHistory.size() - 1) { + this.iterator.set(currentCommand == null ? "" : currentCommand); + } + + // Return the previous command. + return this.iterator.previous(); + } + + /** + * Resets the history location to the most recent command. + * @returns The latest unexecuted command as stored by + * {@link #getPreviousCommand(String)} or an empty string if no such command + * was set. + */ + public String resetHistoryLocation() { + this.iterator = null; + return this.commandHistory.set(this.commandHistory.size() - 1, ""); + } + + /** + * Clears the command history. + */ + public void clear() { + this.iterator = null; + this.commandHistory.clear(); + this.commandHistory.addLast(""); // Current command placeholder. + } +} diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index 2cc41efdd59..a307bde8fbb 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -22,6 +22,72 @@ package processing.app; +import static processing.app.I18n.tr; +import static processing.app.Theme.scale; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Component; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Rectangle; +import java.awt.Toolkit; +import java.awt.datatransfer.DataFlavor; +import java.awt.datatransfer.Transferable; +import java.awt.event.ActionEvent; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.print.PageFormat; +import java.awt.print.PrinterException; +import java.awt.print.PrinterJob; +import java.io.File; +import java.io.FileFilter; +import java.io.FilenameFilter; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.ConnectException; +import java.net.URL; +import java.net.URLClassLoader; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.function.Predicate; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; + +import javax.swing.AbstractAction; +import javax.swing.Box; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JSplitPane; +import javax.swing.JTextArea; +import javax.swing.KeyStroke; +import javax.swing.SwingUtilities; +import javax.swing.TransferHandler; +import javax.swing.event.MenuEvent; +import javax.swing.event.MenuListener; +import javax.swing.text.BadLocationException; + +import org.fife.ui.rsyntaxtextarea.folding.FoldManager; + +import com.jcraft.jsch.JSchException; + +import cc.arduino.CompilerProgressListener; import cc.arduino.packages.BoardPort; import cc.arduino.packages.MonitorFactory; import cc.arduino.packages.Uploader; @@ -29,8 +95,6 @@ import cc.arduino.view.GoToLineNumber; import cc.arduino.view.StubMenuListener; import cc.arduino.view.findreplace.FindReplace; -import cc.arduino.CompilerProgressListener; -import com.jcraft.jsch.JSchException; import jssc.SerialPortException; import processing.app.debug.RunnerException; import processing.app.forms.PasswordAuthorizationDialog; @@ -45,35 +109,6 @@ import processing.app.tools.MenuScroller; import processing.app.tools.Tool; -import javax.swing.*; -import javax.swing.event.*; -import javax.swing.text.BadLocationException; -import java.awt.*; -import java.awt.datatransfer.DataFlavor; -import java.awt.datatransfer.Transferable; -import java.awt.event.*; -import java.awt.print.PageFormat; -import java.awt.print.PrinterException; -import java.awt.print.PrinterJob; -import java.io.File; -import java.io.FileFilter; -import java.io.FilenameFilter; -import java.io.IOException; -import java.net.ConnectException; -import java.net.URL; -import java.net.URLClassLoader; -import java.util.*; -import java.util.List; -import java.util.function.Predicate; -import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; -import java.util.ArrayList; - -import static processing.app.I18n.tr; -import static processing.app.Theme.scale; - -import processing.app.helpers.FileUtils; - /** * Main editor panel for the Processing Development Environment. */ @@ -100,17 +135,21 @@ public boolean test(SketchController controller) { } } - private static class ShouldSaveReadOnly implements Predicate { + private static class CanExportInSketchFolder + implements Predicate { @Override - public boolean test(SketchController sketch) { - return sketch.isReadOnly(); + public boolean test(SketchController controller) { + if (controller.isReadOnly()) { + return false; + } + if (controller.getSketch().isModified()) { + return PreferencesData.getBoolean("editor.save_on_verify"); + } + return true; } } - private final static List BOARD_PROTOCOLS_ORDER = Arrays.asList("serial", "network"); - private final static List BOARD_PROTOCOLS_ORDER_TRANSLATIONS = Arrays.asList(tr("Serial ports"), tr("Network ports")); - final Base base; // otherwise, if the window is resized with the message label @@ -143,7 +182,7 @@ public boolean test(SketchController sketch) { private int numTools = 0; - public boolean avoidMultipleOperations = false; + static public boolean avoidMultipleOperations = false; private final EditorToolbar toolbar; // these menus are shared so that they needn't be rebuilt for all windows @@ -181,7 +220,7 @@ public boolean test(SketchController sketch) { private JMenuItem saveAsMenuItem; //boolean presenting; - private boolean uploading; + static private boolean uploading; // undo fellers private JMenuItem undoItem; @@ -193,8 +232,8 @@ public boolean test(SketchController sketch) { Runnable presentHandler; private Runnable runAndSaveHandler; private Runnable presentAndSaveHandler; - Runnable exportHandler; - private Runnable exportAppHandler; + private UploadHandler uploadHandler; + private UploadHandler uploadUsingProgrammerHandler; private Runnable timeoutUploadHandler; private Map internalToolCache = new HashMap(); @@ -229,8 +268,6 @@ public void windowActivated(WindowEvent e) { // added for 1.0.5 // http://dev.processing.org/bugs/show_bug.cgi?id=1260 public void windowDeactivated(WindowEvent e) { - fileMenu.remove(sketchbookMenu); - fileMenu.remove(examplesMenu); List toolsMenuItemsToRemove = new LinkedList<>(); for (Component menuItem : toolsMenu.getMenuComponents()) { if (menuItem instanceof JComponent) { @@ -279,7 +316,7 @@ public void windowDeactivated(WindowEvent e) { status = new EditorStatus(this); consolePanel.add(status, BorderLayout.NORTH); - console = new EditorConsole(); + console = new EditorConsole(base); console.setName("console"); // windows puts an ugly border on this guy console.setBorder(null); @@ -459,6 +496,9 @@ public void applyPreferences() { tab.applyPreferences(); } console.applyPreferences(); + if (serialMonitor != null) { + serialMonitor.applyPreferences(); + } } @@ -471,11 +511,11 @@ private void buildMenuBar() { fileMenu.addMenuListener(new StubMenuListener() { @Override public void menuSelected(MenuEvent e) { - List components = Arrays.asList(fileMenu.getComponents()); + List components = Arrays.asList(fileMenu.getMenuComponents()); if (!components.contains(sketchbookMenu)) { fileMenu.insert(sketchbookMenu, 3); } - if (!components.contains(sketchbookMenu)) { + if (!components.contains(examplesMenu)) { fileMenu.insert(examplesMenu, 4); } fileMenu.revalidate(); @@ -504,7 +544,7 @@ public void menuSelected(MenuEvent e) { toolsMenu.addMenuListener(new StubMenuListener() { @Override public void menuSelected(MenuEvent e) { - List components = Arrays.asList(toolsMenu.getComponents()); + List components = Arrays.asList(toolsMenu.getMenuComponents()); int offset = 0; for (JMenu menu : base.getBoardsCustomMenus()) { if (!components.contains(menu)) { @@ -534,37 +574,28 @@ private JMenu buildFileMenu() { fileMenu.setMnemonic(KeyEvent.VK_F); item = newJMenuItem(tr("New"), 'N'); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - try { - base.handleNew(); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - }); + item.addActionListener(event -> { + try { + base.handleNew(); + } catch (Exception e1) { + e1.printStackTrace(); + } + }); fileMenu.add(item); item = Editor.newJMenuItem(tr("Open..."), 'O'); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - try { - base.handleOpenPrompt(); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - }); + item.addActionListener(event -> { + try { + base.handleOpenPrompt(); + } catch (Exception e1) { + e1.printStackTrace(); + } + }); fileMenu.add(item); base.rebuildRecentSketchesMenuItems(); recentSketchesMenu = new JMenu(tr("Open Recent")); - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - rebuildRecentSketchesMenu(); - } - }); + SwingUtilities.invokeLater(() -> rebuildRecentSketchesMenu()); fileMenu.add(recentSketchesMenu); if (sketchbookMenu == null) { @@ -582,45 +613,25 @@ public void run() { fileMenu.add(examplesMenu); item = Editor.newJMenuItem(tr("Close"), 'W'); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - base.handleClose(Editor.this); - } - }); + item.addActionListener(event -> base.handleClose(Editor.this)); fileMenu.add(item); saveMenuItem = newJMenuItem(tr("Save"), 'S'); - saveMenuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - handleSave(false); - } - }); + saveMenuItem.addActionListener(event -> handleSave(false)); fileMenu.add(saveMenuItem); saveAsMenuItem = newJMenuItemShift(tr("Save As..."), 'S'); - saveAsMenuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - handleSaveAs(); - } - }); + saveAsMenuItem.addActionListener(event -> handleSaveAs()); fileMenu.add(saveAsMenuItem); fileMenu.addSeparator(); item = newJMenuItemShift(tr("Page Setup"), 'P'); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - handlePageSetup(); - } - }); + item.addActionListener(event -> handlePageSetup()); fileMenu.add(item); item = newJMenuItem(tr("Print"), 'P'); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - handlePrint(); - } - }); + item.addActionListener(event -> handlePrint()); fileMenu.add(item); // macosx already has its own preferences and quit menu @@ -628,21 +639,13 @@ public void actionPerformed(ActionEvent e) { fileMenu.addSeparator(); item = newJMenuItem(tr("Preferences"), ','); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - base.handlePrefs(); - } - }); + item.addActionListener(event -> base.handlePrefs()); fileMenu.add(item); fileMenu.addSeparator(); item = newJMenuItem(tr("Quit"), 'Q'); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - base.handleQuit(); - } - }); + item.addActionListener(event -> base.handleQuit()); fileMenu.add(item); } return fileMenu; @@ -659,58 +662,36 @@ private void buildSketchMenu(JMenu sketchMenu) { sketchMenu.removeAll(); JMenuItem item = newJMenuItem(tr("Verify/Compile"), 'R'); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - handleRun(false, Editor.this.presentHandler, Editor.this.runHandler); - } - }); + item.addActionListener(event -> handleRun(false, presentHandler, runHandler)); sketchMenu.add(item); item = newJMenuItem(tr("Upload"), 'U'); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - handleExport(false); - } - }); + item.addActionListener(event -> handleExport(false)); sketchMenu.add(item); item = newJMenuItemShift(tr("Upload Using Programmer"), 'U'); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - handleExport(true); - } - }); + item.addActionListener(event -> handleExport(true)); sketchMenu.add(item); - item = newJMenuItemAlt(tr("Export compiled Binary"), 'S'); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (new ShouldSaveReadOnly().test(sketchController) && !handleSave(true)) { - System.out.println(tr("Export canceled, changes must first be saved.")); - return; - } - handleRun(false, new ShouldSaveReadOnly(), Editor.this.presentAndSaveHandler, Editor.this.runAndSaveHandler); - } - }); + item.addActionListener(event -> { + if (!(new CanExportInSketchFolder().test(sketchController))) { + System.out.println(tr("Export canceled, changes must first be saved.")); + return; + } + handleRun(false, new CanExportInSketchFolder(), presentAndSaveHandler, runAndSaveHandler); + + }); sketchMenu.add(item); // item = new JMenuItem("Stop"); -// item.addActionListener(new ActionListener() { -// public void actionPerformed(ActionEvent e) { -// handleStop(); -// } -// }); +// item.addActionListener(event -> handleStop()); // sketchMenu.add(item); sketchMenu.addSeparator(); item = newJMenuItem(tr("Show Sketch Folder"), 'K'); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Base.openFolder(sketch.getFolder()); - } - }); + item.addActionListener(event -> Base.openFolder(sketch.getFolder())); sketchMenu.add(item); item.setEnabled(Base.openFolderAvailable()); @@ -722,11 +703,7 @@ public void actionPerformed(ActionEvent e) { sketchMenu.add(importMenu); item = new JMenuItem(tr("Add File...")); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - sketchController.handleAddFile(); - } - }); + item.addActionListener(event -> sketchController.handleAddFile()); sketchMenu.add(item); } @@ -783,6 +760,20 @@ private JMenu buildToolsMenu() { toolsMenu.add(item); toolsMenu.addMenuListener(new StubMenuListener() { + public JMenuItem getSelectedItemRecursive(JMenu menu) { + int count = menu.getItemCount(); + for (int i=0; i < count; i++) { + JMenuItem item = menu.getItem(i); + + if ((item instanceof JMenu)) + item = getSelectedItemRecursive((JMenu)item); + + if (item != null && item.isSelected()) + return item; + } + return null; + } + public void menuSelected(MenuEvent e) { //System.out.println("Tools menu selected."); populatePortMenu(); @@ -794,15 +785,9 @@ public void menuSelected(MenuEvent e) { String basename = name; int index = name.indexOf(':'); if (index > 0) basename = name.substring(0, index); - String sel = null; - int count = menu.getItemCount(); - for (int i=0; i < count; i++) { - JMenuItem item = menu.getItem(i); - if (item != null && item.isSelected()) { - sel = item.getText(); - if (sel != null) break; - } - } + + JMenuItem item = getSelectedItemRecursive(menu); + String sel = item != null ? item.getText() : null; if (sel == null) { if (!name.equals(basename)) menu.setText(basename); } else { @@ -900,11 +885,9 @@ public boolean accept(File dir, String name) { String title = tool.getMenuTitle(); JMenuItem item = new JMenuItem(title); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - SwingUtilities.invokeLater(tool); - //new Thread(tool).start(); - } + item.addActionListener(event -> { + SwingUtilities.invokeLater(tool); + //new Thread(tool).start(); }); //menu.add(item); toolItems.put(title, item); @@ -975,11 +958,7 @@ JMenuItem createToolMenuItem(String className) { tool.init(Editor.this); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - SwingUtilities.invokeLater(tool); - } - }); + item.addActionListener(event -> SwingUtilities.invokeLater(tool)); return item; } catch (Exception e) { @@ -1022,21 +1001,6 @@ private void addInternalTools(JMenu menu) { } - class SerialMenuListener implements ActionListener { - - private final String serialPort; - - public SerialMenuListener(String serialPort) { - this.serialPort = serialPort; - } - - public void actionPerformed(ActionEvent e) { - selectSerialPort(serialPort); - base.onBoardOrPortChange(); - } - - } - private void selectSerialPort(String name) { if(portMenu == null) { System.out.println(tr("serialMenu is null")); @@ -1060,22 +1024,20 @@ private void selectSerialPort(String name) { //System.out.println(item.getLabel()); BaseNoGui.selectSerialPort(name); - if (serialMonitor != null) { - try { + try { + boolean reopenMonitor = ((serialMonitor != null && serialMonitor.isVisible()) || + serialPlotter != null && serialPlotter.isVisible()); + if (serialMonitor != null) { serialMonitor.close(); - serialMonitor.setVisible(false); - } catch (Exception e) { - // ignore } - } - - if (serialPlotter != null) { - try { + if (serialPlotter != null) { serialPlotter.close(); - serialPlotter.setVisible(false); - } catch (Exception e) { - // ignore } + if (reopenMonitor) { + handleSerial(); + } + } catch (Exception e) { + // ignore } onBoardOrPortChange(); @@ -1084,8 +1046,34 @@ private void selectSerialPort(String name) { //System.out.println("set to " + get("serial.port")); } + class BoardPortJCheckBoxMenuItem extends JCheckBoxMenuItem { + private BoardPort port; + + public BoardPortJCheckBoxMenuItem(BoardPort port) { + super(); + this.port = port; + setText(toString()); + addActionListener(e -> { + selectSerialPort(port.getAddress()); + base.onBoardOrPortChange(); + }); + } + + @Override + public String toString() { + // This is required for serialPrompt() + String label = port.getLabel(); + if (port.getBoardName() != null && !port.getBoardName().isEmpty()) { + label += " (" + port.getBoardName() + ")"; + } + return label; + } + } private void populatePortMenu() { + final List PROTOCOLS_ORDER = Arrays.asList("serial", "network"); + final List PROTOCOLS_LABELS = Arrays.asList(tr("Serial ports"), tr("Network ports")); + portMenu.removeAll(); String selectedPort = PreferencesData.get("serial.port"); @@ -1094,36 +1082,48 @@ private void populatePortMenu() { ports = platform.filterPorts(ports, PreferencesData.getBoolean("serial.ports.showall")); - Collections.sort(ports, new Comparator() { - @Override - public int compare(BoardPort o1, BoardPort o2) { - return BOARD_PROTOCOLS_ORDER.indexOf(o1.getProtocol()) - BOARD_PROTOCOLS_ORDER.indexOf(o2.getProtocol()); - } + ports.stream() // + .filter(port -> port.getProtocolLabel() == null || port.getProtocolLabel().isEmpty()) + .forEach(port -> { + int labelIdx = PROTOCOLS_ORDER.indexOf(port.getProtocol()); + if (labelIdx != -1) { + port.setProtocolLabel(PROTOCOLS_LABELS.get(labelIdx)); + } else { + port.setProtocolLabel(port.getProtocol()); + } + }); + + Collections.sort(ports, (port1, port2) -> { + String pr1 = port1.getProtocol(); + String pr2 = port2.getProtocol(); + int prIdx1 = PROTOCOLS_ORDER.contains(pr1) ? PROTOCOLS_ORDER.indexOf(pr1) : 999; + int prIdx2 = PROTOCOLS_ORDER.contains(pr2) ? PROTOCOLS_ORDER.indexOf(pr2) : 999; + int r = prIdx1 - prIdx2; + if (r != 0) + return r; + r = port1.getProtocolLabel().compareTo(port2.getProtocolLabel()); + if (r != 0) + return r; + return port1.getAddress().compareTo(port2.getAddress()); }); - String lastProtocol = null; - String lastProtocolTranslated; + String lastProtocol = ""; + String lastProtocolLabel = ""; for (BoardPort port : ports) { - if (lastProtocol == null || !port.getProtocol().equals(lastProtocol)) { - if (lastProtocol != null) { + if (!port.getProtocol().equals(lastProtocol) || !port.getProtocolLabel().equals(lastProtocolLabel)) { + if (!lastProtocol.isEmpty()) { portMenu.addSeparator(); } lastProtocol = port.getProtocol(); - - if (BOARD_PROTOCOLS_ORDER.indexOf(port.getProtocol()) != -1) { - lastProtocolTranslated = BOARD_PROTOCOLS_ORDER_TRANSLATIONS.get(BOARD_PROTOCOLS_ORDER.indexOf(port.getProtocol())); - } else { - lastProtocolTranslated = port.getProtocol(); - } - JMenuItem lastProtocolMenuItem = new JMenuItem(tr(lastProtocolTranslated)); - lastProtocolMenuItem.setEnabled(false); - portMenu.add(lastProtocolMenuItem); + lastProtocolLabel = port.getProtocolLabel(); + JMenuItem item = new JMenuItem(tr(lastProtocolLabel)); + item.setEnabled(false); + portMenu.add(item); } String address = port.getAddress(); - String label = port.getLabel(); - JCheckBoxMenuItem item = new JCheckBoxMenuItem(label, address.equals(selectedPort)); - item.addActionListener(new SerialMenuListener(address)); + BoardPortJCheckBoxMenuItem item = new BoardPortJCheckBoxMenuItem(port); + item.setSelected(address.equals(selectedPort)); portMenu.add(item); } @@ -1132,153 +1132,44 @@ public int compare(BoardPort o1, BoardPort o2) { private JMenu buildHelpMenu() { - // To deal with a Mac OS X 10.5 bug, add an extra space after the name - // so that the OS doesn't try to insert its slow help menu. JMenu menu = new JMenu(tr("Help")); menu.setMnemonic(KeyEvent.VK_H); - JMenuItem item; - /* - // testing internal web server to serve up docs from a zip file - item = new JMenuItem("Web Server Test"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - //WebServer ws = new WebServer(); - SwingUtilities.invokeLater(new Runnable() { - public void run() { - try { - int port = WebServer.launch("/Users/fry/coconut/processing/build/shared/reference.zip"); - Base.openURL("http://127.0.0.1/" + port + "/reference/setup_.html"); - - } catch (IOException e1) { - e1.printStackTrace(); - } - } - }); - } - }); - menu.add(item); - */ - - /* - item = new JMenuItem("Browser Test"); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - //Base.openURL("http://processing.org/learning/gettingstarted/"); - //JFrame browserFrame = new JFrame("Browser"); - BrowserStartup bs = new BrowserStartup("jar:file:/Users/fry/coconut/processing/build/shared/reference.zip!/reference/setup_.html"); - bs.initUI(); - bs.launch(); - } - }); - menu.add(item); - */ - - item = new JMenuItem(tr("Getting Started")); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Base.showArduinoGettingStarted(); - } - }); + JMenuItem item = new JMenuItem(tr("Getting Started")); + item.addActionListener(event -> Base.openURL("https://www.arduino.cc/en/Guide")); menu.add(item); item = new JMenuItem(tr("Environment")); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Base.showEnvironment(); - } - }); + item.addActionListener(event -> Base.openURL("https://www.arduino.cc/en/Guide/Environment")); menu.add(item); item = new JMenuItem(tr("Troubleshooting")); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Base.showTroubleshooting(); - } - }); + item.addActionListener(event -> Base.openURL("https://support.arduino.cc/hc/en-us")); menu.add(item); item = new JMenuItem(tr("Reference")); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Base.showReference(); - } - }); - menu.add(item); - - menu.addSeparator(); - - item = new JMenuItem(tr("Galileo Help")); - item.setEnabled(false); - menu.add(item); - - item = new JMenuItem(tr("Getting Started")); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Base.showReference("reference/Galileo_help_files", "ArduinoIDE_guide_galileo"); - } - }); - menu.add(item); - item = new JMenuItem(tr("Troubleshooting")); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Base.showReference("reference/Galileo_help_files", "Guide_Troubleshooting_Galileo"); - } - }); - menu.add(item); - - menu.addSeparator(); - - item = new JMenuItem(tr("Edison Help")); - item.setEnabled(false); - menu.add(item); - - item = new JMenuItem(tr("Getting Started")); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Base.showReference("reference/Edison_help_files", "ArduinoIDE_guide_edison"); - } - }); - menu.add(item); - item = new JMenuItem(tr("Troubleshooting")); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Base.showReference("reference/Edison_help_files", "Guide_Troubleshooting_Edison"); - } - }); + item.addActionListener(event -> Base.openURL("https://www.arduino.cc/reference/en/")); menu.add(item); menu.addSeparator(); item = newJMenuItemShift(tr("Find in Reference"), 'F'); - item.addActionListener(this::handleFindReference); + item.addActionListener(event -> handleFindReference(getCurrentTab().getCurrentKeyword())); menu.add(item); item = new JMenuItem(tr("Frequently Asked Questions")); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Base.showFAQ(); - } - }); + item.addActionListener(event -> Base.openURL("https://support.arduino.cc/hc/en-us")); menu.add(item); item = new JMenuItem(tr("Visit Arduino.cc")); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - Base.openURL(tr("http://www.arduino.cc/")); - } - }); + item.addActionListener(event -> Base.openURL("https://www.arduino.cc/")); menu.add(item); // macosx already has its own about menu if (!OSUtils.hasMacOSStyleMenus()) { menu.addSeparator(); item = new JMenuItem(tr("About Arduino")); - item.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - base.handleAbout(); - } - }); + item.addActionListener(event -> base.handleAbout()); menu.add(item); } @@ -1293,7 +1184,7 @@ private JMenu buildEditMenu() { undoItem = newJMenuItem(tr("Undo"), 'Z'); undoItem.setName("menuEditUndo"); - undoItem.addActionListener(e -> getCurrentTab().handleUndo()); + undoItem.addActionListener(event -> getCurrentTab().handleUndo()); menu.add(undoItem); if (!OSUtils.isMacOS()) { @@ -1302,61 +1193,37 @@ private JMenu buildEditMenu() { redoItem = newJMenuItemShift(tr("Redo"), 'Z'); } redoItem.setName("menuEditRedo"); - redoItem.addActionListener(e -> getCurrentTab().handleRedo()); + redoItem.addActionListener(event -> getCurrentTab().handleRedo()); menu.add(redoItem); menu.addSeparator(); JMenuItem cutItem = newJMenuItem(tr("Cut"), 'X'); - cutItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - getCurrentTab().handleCut(); - } - }); + cutItem.addActionListener(event -> getCurrentTab().handleCut()); menu.add(cutItem); JMenuItem copyItem = newJMenuItem(tr("Copy"), 'C'); - copyItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - getCurrentTab().getTextArea().copy(); - } - }); + copyItem.addActionListener(event -> getCurrentTab().getTextArea().copy()); menu.add(copyItem); JMenuItem copyForumItem = newJMenuItemShift(tr("Copy for Forum"), 'C'); - copyForumItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - getCurrentTab().handleDiscourseCopy(); - } - }); + copyForumItem.addActionListener(event -> getCurrentTab().handleDiscourseCopy()); menu.add(copyForumItem); JMenuItem copyHTMLItem = newJMenuItemAlt(tr("Copy as HTML"), 'C'); - copyHTMLItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - getCurrentTab().handleHTMLCopy(); - } - }); + copyHTMLItem.addActionListener(event -> getCurrentTab().handleHTMLCopy()); menu.add(copyHTMLItem); JMenuItem pasteItem = newJMenuItem(tr("Paste"), 'V'); - pasteItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - getCurrentTab().handlePaste(); - } - }); + pasteItem.addActionListener(event -> getCurrentTab().handlePaste()); menu.add(pasteItem); JMenuItem selectAllItem = newJMenuItem(tr("Select All"), 'A'); - selectAllItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - getCurrentTab().handleSelectAll(); - } - }); + selectAllItem.addActionListener(event -> getCurrentTab().handleSelectAll()); menu.add(selectAllItem); JMenuItem gotoLine = newJMenuItem(tr("Go to line..."), 'L'); - gotoLine.addActionListener(e -> { + gotoLine.addActionListener(event -> { GoToLineNumber goToLineNumber = new GoToLineNumber(Editor.this); goToLineNumber.setLocationRelativeTo(Editor.this); goToLineNumber.setVisible(true); @@ -1366,96 +1233,80 @@ public void actionPerformed(ActionEvent e) { menu.addSeparator(); JMenuItem commentItem = newJMenuItem(tr("Comment/Uncomment"), PreferencesData.get("editor.keys.shortcut_comment", "/").charAt(0)); - commentItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - getCurrentTab().handleCommentUncomment(); - } - }); + commentItem.addActionListener(event -> getCurrentTab().handleCommentUncomment()); menu.add(commentItem); JMenuItem increaseIndentItem = new JMenuItem(tr("Increase Indent")); increaseIndentItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0)); - increaseIndentItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - getCurrentTab().handleIndentOutdent(true); - } - }); + increaseIndentItem.addActionListener(event -> getCurrentTab().handleIndentOutdent(true)); menu.add(increaseIndentItem); JMenuItem decreseIndentItem = new JMenuItem(tr("Decrease Indent")); decreseIndentItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, InputEvent.SHIFT_MASK)); decreseIndentItem.setName("menuDecreaseIndent"); - decreseIndentItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - getCurrentTab().handleIndentOutdent(false); - } - }); + decreseIndentItem.addActionListener(event -> getCurrentTab().handleIndentOutdent(false)); menu.add(decreseIndentItem); menu.addSeparator(); - JMenuItem increaseFontSizeItem = newJMenuItem(tr("Increase Font Size"), '+'); - increaseFontSizeItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - base.handleFontSizeChange(1); - } - }); + JMenuItem increaseFontSizeItem = newJMenuItem(tr("Increase Font Size"), KeyEvent.VK_PLUS); + increaseFontSizeItem.addActionListener(event -> base.handleFontSizeChange(1)); menu.add(increaseFontSizeItem); - - JMenuItem decreaseFontSizeItem = newJMenuItem(tr("Decrease Font Size"), '-'); - decreaseFontSizeItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - base.handleFontSizeChange(-1); - } + // Many keyboards have '+' and '=' on the same key. Allowing "CTRL +", + // "CTRL SHIFT +" and "CTRL =" covers the generally expected behavior. + KeyStroke ctrlShiftEq = KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, SHORTCUT_KEY_MASK | ActionEvent.SHIFT_MASK); + menu.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(ctrlShiftEq, "IncreaseFontSize"); + KeyStroke ctrlEq = KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, SHORTCUT_KEY_MASK); + menu.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(ctrlEq, "IncreaseFontSize"); + menu.getActionMap().put("IncreaseFontSize", new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + base.handleFontSizeChange(1); + } }); + + JMenuItem decreaseFontSizeItem = newJMenuItem(tr("Decrease Font Size"), KeyEvent.VK_MINUS); + decreaseFontSizeItem.addActionListener(event -> base.handleFontSizeChange(-1)); menu.add(decreaseFontSizeItem); menu.addSeparator(); JMenuItem findItem = newJMenuItem(tr("Find..."), 'F'); - findItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (find == null) { - find = new FindReplace(Editor.this, Base.FIND_DIALOG_STATE); - } - if (!OSUtils.isMacOS()) { - find.setFindText(getCurrentTab().getSelectedText()); - } - find.setLocationRelativeTo(Editor.this); - find.setVisible(true); + findItem.addActionListener(event -> { + if (find == null) { + find = new FindReplace(Editor.this, Base.FIND_DIALOG_STATE); + } + if (!OSUtils.isMacOS()) { + find.setFindText(getCurrentTab().getSelectedText()); } + find.setLocationRelativeTo(Editor.this); + find.setVisible(true); }); menu.add(findItem); JMenuItem findNextItem = newJMenuItem(tr("Find Next"), 'G'); - findNextItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (find != null) { - find.findNext(); - } + findNextItem.addActionListener(event -> { + if (find != null) { + find.findNext(); } }); menu.add(findNextItem); JMenuItem findPreviousItem = newJMenuItemShift(tr("Find Previous"), 'G'); - findPreviousItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (find != null) { - find.findPrevious(); - } + findPreviousItem.addActionListener(event -> { + if (find != null) { + find.findPrevious(); } }); menu.add(findPreviousItem); if (OSUtils.isMacOS()) { JMenuItem useSelectionForFindItem = newJMenuItem(tr("Use Selection For Find"), 'E'); - useSelectionForFindItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - if (find == null) { - find = new FindReplace(Editor.this, Base.FIND_DIALOG_STATE); - } - find.setFindText(getCurrentTab().getSelectedText()); + useSelectionForFindItem.addActionListener(event -> { + if (find == null) { + find = new FindReplace(Editor.this, Base.FIND_DIALOG_STATE); } + find.setFindText(getCurrentTab().getSelectedText()); }); menu.add(useSelectionForFindItem); } @@ -1538,8 +1389,10 @@ private void resetHandlers() { presentHandler = new BuildHandler(true); runAndSaveHandler = new BuildHandler(false, true); presentAndSaveHandler = new BuildHandler(true, true); - exportHandler = new DefaultExportHandler(); - exportAppHandler = new DefaultExportAppHandler(); + uploadHandler = new UploadHandler(); + uploadHandler.setUsingProgrammer(false); + uploadUsingProgrammerHandler = new UploadHandler(); + uploadUsingProgrammerHandler.setUsingProgrammer(true); timeoutUploadHandler = new TimeoutUploadHandler(); } @@ -1599,8 +1452,10 @@ public void selectTab(final int index) { // This must be run in the GUI thread SwingUtilities.invokeLater(() -> { codePanel.removeAll(); - codePanel.add(tabs.get(index), BorderLayout.CENTER); - tabs.get(index).requestFocusInWindow(); // get the caret blinking + EditorTab selectedTab = tabs.get(index); + codePanel.add(selectedTab, BorderLayout.CENTER); + selectedTab.applyPreferences(); + selectedTab.requestFocusInWindow(); // get the caret blinking // For some reason, these are needed. Revalidate says it should be // automatically called when components are added or removed, but without // it, the component switched to is not displayed. repaint() is needed to @@ -1702,20 +1557,25 @@ protected void removeTab(SketchFile file) throws IOException { tabs.remove(index); } + // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - void handleFindReference(ActionEvent e) { - String text = getCurrentTab().getCurrentKeyword(); + void handleFindReference(String text) { String referenceFile = base.getPdeKeywords().getReference(text); + String q; if (referenceFile == null) { - statusNotice(I18n.format(tr("No reference available for \"{0}\""), text)); + q = text; + } else if (referenceFile.startsWith("Serial_")) { + q = referenceFile.substring(7); } else { - if (referenceFile.startsWith("Serial_")) { - Base.showReference("Serial/" + referenceFile.substring("Serial_".length())); - } else { - Base.showReference("Reference/" + referenceFile); - } + q = referenceFile; + } + try { + Base.openURL("https://www.arduino.cc/search?tab=&q=" + + URLEncoder.encode(q, "UTF-8")); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); } } @@ -1798,8 +1658,17 @@ public void removeAllLineHighlights() { } public void addLineHighlight(int line) throws BadLocationException { - getCurrentTab().getTextArea().addLineHighlight(line, new Color(1, 0, 0, 0.2f)); - getCurrentTab().getTextArea().setCaretPosition(getCurrentTab().getTextArea().getLineStartOffset(line)); + SketchTextArea textArea = getCurrentTab().getTextArea(); + FoldManager foldManager = textArea.getFoldManager(); + if (foldManager.isLineHidden(line)) { + for (int i = 0; i < foldManager.getFoldCount(); i++) { + if (foldManager.getFold(i).containsLine(line)) { + foldManager.getFold(i).setCollapsed(false); + } + } + } + textArea.addLineHighlight(line, new Color(1, 0, 0, 0.2f)); + textArea.setCaretPosition(textArea.getLineStartOffset(line)); } @@ -1939,7 +1808,7 @@ protected boolean handleOpenInternal(File sketchFile) { // copy the sketch inside File properPdeFile = new File(properFolder, sketchFile.getName()); try { - FileUtils.copy(new File(sketchFile.getParent()), properFolder); + Base.copyFile(sketchFile, properPdeFile); } catch (IOException e) { Base.showWarning(tr("Error"), tr("Could not copy to a proper location."), e); return false; @@ -1970,7 +1839,7 @@ protected boolean handleOpenInternal(File sketchFile) { return true; } - private void updateTitle() { + public void updateTitle() { if (sketchController == null) { return; } @@ -2115,32 +1984,30 @@ public boolean handleSaveAs() { private boolean serialPrompt() { - int count = portMenu.getItemCount(); - Object[] names = new Object[count]; - for (int i = 0; i < count; i++) { - names[i] = portMenu.getItem(i).getText(); - } - - // FIXME: This is horribly unreadable - String result = (String) - JOptionPane.showInputDialog(this, - I18n.format( - tr("Serial port {0} not found.\n" + - "Retry the upload with another serial port?"), - PreferencesData.get("serial.port") - ), - "Serial port not found", - JOptionPane.PLAIN_MESSAGE, - null, - names, - 0); - if (result == null) return false; - selectSerialPort(result); + List items = new ArrayList<>(); + for (int i = 0; i < portMenu.getItemCount(); i++) { + if (portMenu.getItem(i) instanceof BoardPortJCheckBoxMenuItem) + items.add((BoardPortJCheckBoxMenuItem) portMenu.getItem(i)); + } + + String port = PreferencesData.get("serial.port"); + String title; + if (port == null || port.isEmpty()) { + title = tr("Serial port not selected."); + } else { + title = I18n.format(tr("Serial port {0} not found."), port); + } + String question = tr("Retry the upload with another serial port?"); + BoardPortJCheckBoxMenuItem result = (BoardPortJCheckBoxMenuItem) JOptionPane + .showInputDialog(this, title + "\n" + question, title, + JOptionPane.PLAIN_MESSAGE, null, items.toArray(), 0); + if (result == null) + return false; + result.doClick(); base.onBoardOrPortChange(); return true; } - /** * Called by Sketch → Export. * Handles calling the export() function on sketch, and @@ -2169,14 +2036,20 @@ synchronized public void handleExport(final boolean usingProgrammer) { avoidMultipleOperations = true; new Thread(timeoutUploadHandler).start(); - new Thread(usingProgrammer ? exportAppHandler : exportHandler).start(); + new Thread(usingProgrammer ? uploadUsingProgrammerHandler : uploadHandler).start(); } - // DAM: in Arduino, this is upload - class DefaultExportHandler implements Runnable { - public void run() { + class UploadHandler implements Runnable { + boolean usingProgrammer = false; + public void setUsingProgrammer(boolean usingProgrammer) { + this.usingProgrammer = usingProgrammer; + } + + public void run() { try { + uploading = true; + removeAllLineHighlights(); if (serialMonitor != null) { serialMonitor.suspend(); @@ -2185,16 +2058,20 @@ public void run() { serialPlotter.suspend(); } - uploading = true; - - boolean success = sketchController.exportApplet(false); + boolean success = sketchController.exportApplet(usingProgrammer); if (success) { statusNotice(tr("Done uploading.")); } } catch (SerialNotFoundException e) { - if (portMenu.getItemCount() == 0) statusError(e); - else if (serialPrompt()) run(); - else statusNotice(tr("Upload canceled.")); + if (portMenu.getItemCount() == 0) { + statusError(tr("Serial port not selected.")); + } else { + if (serialPrompt()) { + run(); + } else { + statusNotice(tr("Upload canceled.")); + } + } } catch (PreferencesMapException e) { statusError(I18n.format( tr("Error while uploading: missing '{0}' configuration parameter"), @@ -2221,9 +2098,18 @@ public void run() { } } + static public boolean isUploading() { + return uploading; + } + private void resumeOrCloseSerialMonitor() { // Return the serial monitor window to its initial state if (serialMonitor != null) { + try { + Thread.sleep(200); + } catch (InterruptedException e) { + // noop + } BoardPort boardPort = BaseNoGui.getDiscoveryManager().find(PreferencesData.get("serial.port")); long sleptFor = 0; while (boardPort == null && sleptFor < MAX_TIME_AWAITING_FOR_RESUMING_SERIAL_MONITOR) { @@ -2270,55 +2156,6 @@ private void resumeOrCloseSerialPlotter() { } } - // DAM: in Arduino, this is upload (with verbose output) - class DefaultExportAppHandler implements Runnable { - public void run() { - - try { - if (serialMonitor != null) { - serialMonitor.suspend(); - } - if (serialPlotter != null) { - serialPlotter.suspend(); - } - - uploading = true; - - boolean success = sketchController.exportApplet(true); - if (success) { - statusNotice(tr("Done uploading.")); - } - } catch (SerialNotFoundException e) { - if (portMenu.getItemCount() == 0) statusError(e); - else if (serialPrompt()) run(); - else statusNotice(tr("Upload canceled.")); - } catch (PreferencesMapException e) { - statusError(I18n.format( - tr("Error while uploading: missing '{0}' configuration parameter"), - e.getMessage())); - } catch (RunnerException e) { - //statusError("Error during upload."); - //e.printStackTrace(); - status.unprogress(); - statusError(e); - } catch (Exception e) { - e.printStackTrace(); - } finally { - avoidMultipleOperations = false; - populatePortMenu(); - } - status.unprogress(); - uploading = false; - //toolbar.clear(); - toolbar.deactivateExport(); - - resumeOrCloseSerialMonitor(); - resumeOrCloseSerialPlotter(); - - base.onBoardOrPortChange(); - } - } - class TimeoutUploadHandler implements Runnable { public void run() { @@ -2381,6 +2218,7 @@ public void handleSerial() { return; } + base.addEditorFontResizeListeners(serialMonitor); Base.setIcon(serialMonitor); // If currently uploading, disable the monitor (it will be later @@ -2550,6 +2388,8 @@ private void handleBurnBootloader() { SwingUtilities.invokeLater(() -> statusError(tr("Error while burning bootloader."))); // error message will already be visible } + } catch (SerialNotFoundException e) { + SwingUtilities.invokeLater(() -> statusError(tr("Error while burning bootloader: please select a serial port."))); } catch (PreferencesMapException e) { SwingUtilities.invokeLater(() -> { statusError(I18n.format( @@ -2581,9 +2421,9 @@ private void handleBoardInfo() { for (BoardPort port : ports) { if (port.getAddress().equals(selectedPort)) { label = port.getBoardName(); - vid = port.getVID(); - pid = port.getPID(); - iserial = port.getISerial(); + vid = port.getPrefs().get("vid"); + pid = port.getPrefs().get("pid"); + iserial = port.getPrefs().get("iserial"); protocol = port.getProtocol(); found = true; break; @@ -2753,12 +2593,7 @@ private void statusEmpty() { // . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . protected void onBoardOrPortChange() { - Map boardPreferences = BaseNoGui.getBoardPreferences(); - if (boardPreferences != null) - lineStatus.setBoardName(boardPreferences.get("name")); - else - lineStatus.setBoardName("-"); - lineStatus.setSerialPort(PreferencesData.get("serial.port")); + lineStatus.updateBoardAndPort(); lineStatus.repaint(); } diff --git a/app/src/processing/app/EditorConsole.java b/app/src/processing/app/EditorConsole.java index f656798f0cb..3942908a1da 100644 --- a/app/src/processing/app/EditorConsole.java +++ b/app/src/processing/app/EditorConsole.java @@ -27,6 +27,8 @@ import javax.swing.text.*; import java.awt.*; import java.io.PrintStream; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import static processing.app.Theme.scale; @@ -37,20 +39,21 @@ public class EditorConsole extends JScrollPane { private static ConsoleOutputStream out; private static ConsoleOutputStream err; + private int startOfLine = 0; + private int insertPosition = 0; - private static synchronized void init(SimpleAttributeSet outStyle, PrintStream outStream, SimpleAttributeSet errStyle, PrintStream errStream) { - if (out != null) { - return; - } + // Regex for linesplitting, see insertString for comments. + private static final Pattern newLinePattern = Pattern.compile("([^\r\n]*)([\r\n]*\n)?(\r+)?"); - out = new ConsoleOutputStream(outStyle, outStream); - System.setOut(new PrintStream(out, true)); + public static synchronized void setCurrentEditorConsole(EditorConsole console) { + if (out == null) { + out = new ConsoleOutputStream(console.stdOutStyle, System.out); + System.setOut(new PrintStream(out, true)); - err = new ConsoleOutputStream(errStyle, errStream); - System.setErr(new PrintStream(err, true)); - } + err = new ConsoleOutputStream(console.stdErrStyle, System.err); + System.setErr(new PrintStream(err, true)); + } - public static void setCurrentEditorConsole(EditorConsole console) { out.setCurrentEditorConsole(console); err.setCurrentEditorConsole(console); } @@ -61,7 +64,7 @@ public static void setCurrentEditorConsole(EditorConsole console) { private SimpleAttributeSet stdOutStyle; private SimpleAttributeSet stdErrStyle; - public EditorConsole() { + public EditorConsole(Base base) { document = new DefaultStyledDocument(); consoleTextPane = new JTextPane(document); @@ -109,24 +112,64 @@ public EditorConsole() { setPreferredSize(new Dimension(100, (height * lines))); setMinimumSize(new Dimension(100, (height * lines))); - EditorConsole.init(stdOutStyle, System.out, stdErrStyle, System.err); + // Add font size adjustment listeners. + if (base != null) + base.addEditorFontResizeListeners(consoleTextPane); } public void applyPreferences() { + + // Update the console text pane font from the preferences. Font consoleFont = Theme.getFont("console.font"); Font editorFont = PreferencesData.getFont("editor.font"); Font actualFont = new Font(consoleFont.getName(), consoleFont.getStyle(), scale(editorFont.getSize())); + AttributeSet stdOutStyleOld = stdOutStyle.copyAttributes(); + AttributeSet stdErrStyleOld = stdErrStyle.copyAttributes(); StyleConstants.setFontSize(stdOutStyle, actualFont.getSize()); StyleConstants.setFontSize(stdErrStyle, actualFont.getSize()); - out.setAttibutes(stdOutStyle); - err.setAttibutes(stdErrStyle); + // Re-insert console text with the new preferences if there were changes. + // This assumes that the document has single-child paragraphs (default). + if (!stdOutStyle.isEqual(stdOutStyleOld) || !stdErrStyle.isEqual(stdOutStyleOld)) { + if (out != null) + out.setAttibutes(stdOutStyle); + if (err != null) + err.setAttibutes(stdErrStyle); + + int start; + for (int end = document.getLength() - 1; end >= 0; end = start - 1) { + Element elem = document.getParagraphElement(end); + start = elem.getStartOffset(); + AttributeSet attrs = elem.getElement(0).getAttributes(); + AttributeSet newAttrs; + if (attrs.isEqual(stdErrStyleOld)) { + newAttrs = stdErrStyle; + } else if (attrs.isEqual(stdOutStyleOld)) { + newAttrs = stdOutStyle; + } else { + continue; + } + try { + String text = document.getText(start, end - start); + document.remove(start, end - start); + document.insertString(start, text, newAttrs); + } catch (BadLocationException e) { + // Should only happen when text is async removed (through clear()). + // Accept this case, but throw an error when text could mess up. + if (document.getLength() != 0) { + throw new Error(e); + } + } + } + } } public void clear() { try { document.remove(0, document.getLength()); + startOfLine = 0; + insertPosition = 0; } catch (BadLocationException e) { // ignore the error otherwise this will cause an infinite loop // maybe not a good idea in the long run? @@ -142,14 +185,53 @@ public boolean isEmpty() { return document.getLength() == 0; } - public void insertString(String line, SimpleAttributeSet attributes) throws BadLocationException { - line = line.replace("\r\n", "\n").replace("\r", "\n"); - int offset = document.getLength(); - document.insertString(offset, line, attributes); + public void insertString(String str, SimpleAttributeSet attributes) throws BadLocationException { + // Separate the string into content, newlines and lone carriage + // returns. + // + // Doing so allows lone CRs to move the insertPosition back to the + // start of the line to allow overwriting the most recent line (e.g. + // for a progress bar). Any CR or NL that are immediately followed + // by another NL are bunched together for efficiency, since these + // can just be inserted into the document directly and still be + // correct. + // + // The regex is written so it will necessarily match any string + // completely if applied repeatedly. This is important because any + // part not matched would be silently dropped. + Matcher m = newLinePattern.matcher(str); + + while (m.find()) { + String content = m.group(1); + String newlines = m.group(2); + String crs = m.group(3); + + // Replace (or append if at end of the document) the content first + int replaceLength = Math.min(content.length(), document.getLength() - insertPosition); + document.replace(insertPosition, replaceLength, content, attributes); + insertPosition += content.length(); + + // Then insert any newlines, but always at the end of the document + // e.g. if insertPosition is halfway a line, do not delete + // anything, just add the newline(s) at the end). + if (newlines != null) { + document.insertString(document.getLength(), newlines, attributes); + insertPosition = document.getLength(); + startOfLine = insertPosition; + } + + // Then, for any CRs not followed by newlines, move insertPosition + // to the start of the line. Note that if a newline follows before + // any content in the next call to insertString, it will be added + // at the end of the document anyway, as expected. + if (crs != null) { + insertPosition = startOfLine; + } + } } public String getText() { - return consoleTextPane.getText().trim(); + return consoleTextPane.getText(); } } diff --git a/app/src/processing/app/EditorHeader.java b/app/src/processing/app/EditorHeader.java index 25c09a8dfaa..c5695cf8abd 100644 --- a/app/src/processing/app/EditorHeader.java +++ b/app/src/processing/app/EditorHeader.java @@ -73,6 +73,7 @@ public class EditorHeader extends JComponent { static final int PIECE_WIDTH = scale(4); static final int PIECE_HEIGHT = scale(33); + static final int TAB_HEIGHT = scale(27); // value for the size bars, buttons, etc // TODO: Should be a Theme value? @@ -270,8 +271,8 @@ public void paintComponent(Graphics screen) { int textLeft = contentLeft + (pieceWidth - textWidth) / 2; g.setColor(textColor[state]); - int baseline = (sizeH + fontAscent) / 2; - //g.drawString(sketch.code[i].name, textLeft, baseline); + int tabMarginTop = sizeH - TAB_HEIGHT; + int baseline = tabMarginTop + ((TAB_HEIGHT + fontAscent) / 2) ; g.drawString(text, textLeft, baseline); g.drawImage(pieces[state][RIGHT], x, 0, null); diff --git a/app/src/processing/app/EditorLineStatus.java b/app/src/processing/app/EditorLineStatus.java index 7d4e80b6577..f768b597c28 100644 --- a/app/src/processing/app/EditorLineStatus.java +++ b/app/src/processing/app/EditorLineStatus.java @@ -51,8 +51,7 @@ public class EditorLineStatus extends JComponent { String text = ""; String name = ""; - String serialport = ""; - String serialnumber = ""; + String port = ""; public EditorLineStatus() { background = Theme.getColor("linestatus.bgcolor"); @@ -92,13 +91,8 @@ public void set(int newStart, int newStop) { public void paintComponent(Graphics graphics) { Graphics2D g = Theme.setupGraphics2D(graphics); - if (name.isEmpty() && serialport.isEmpty()) { - PreferencesMap boardPreferences = BaseNoGui.getBoardPreferences(); - if (boardPreferences != null) - setBoardName(boardPreferences.get("name")); - else - setBoardName("-"); - setSerialPort(PreferencesData.get("serial.port")); + if (name.isEmpty() && port.isEmpty()) { + updateBoardAndPort(); } g.setColor(background); Dimension size = getSize(); @@ -110,11 +104,17 @@ public void paintComponent(Graphics graphics) { g.drawString(text, scale(6), baseline); g.setColor(messageForeground); - String tmp = I18n.format(tr("{0} on {1}"), name, serialport); - - Rectangle2D bounds = g.getFontMetrics().getStringBounds(tmp, null); - - g.drawString(tmp, size.width - (int) bounds.getWidth() - RESIZE_IMAGE_SIZE, + + String statusText; + if (port != null && !port.isEmpty()) { + statusText = I18n.format(tr("{0} on {1}"), name, port); + } else { + statusText = name; + } + + Rectangle2D bounds = g.getFontMetrics().getStringBounds(statusText, null); + + g.drawString(statusText, size.width - (int) bounds.getWidth() - RESIZE_IMAGE_SIZE, baseline); if (OSUtils.isMacOS()) { @@ -126,12 +126,8 @@ public void setBoardName(String name) { this.name = name; } - public void setSerialPort(String serialport) { - this.serialport = serialport; - } - - public void setSerialNumber(String serialnumber) { - this.serialnumber = serialnumber; + public void setPort(String port) { + this.port = port; } public Dimension getPreferredSize() { @@ -145,4 +141,13 @@ public Dimension getMinimumSize() { public Dimension getMaximumSize() { return scale(new Dimension(3000, height)); } + + public void updateBoardAndPort() { + PreferencesMap boardPreferences = BaseNoGui.getBoardPreferences(); + if (boardPreferences != null) + setBoardName(boardPreferences.get("name")); + else + setBoardName("-"); + setPort(PreferencesData.get("serial.port")); + } } diff --git a/app/src/processing/app/EditorTab.java b/app/src/processing/app/EditorTab.java index 8c5fb86a7d8..59bfe3c77d7 100644 --- a/app/src/processing/app/EditorTab.java +++ b/app/src/processing/app/EditorTab.java @@ -30,9 +30,8 @@ import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.MouseWheelListener; -import java.awt.event.MouseWheelEvent; - +import java.awt.event.FocusEvent; +import java.awt.event.FocusListener; import java.io.IOException; import javax.swing.Action; @@ -68,7 +67,7 @@ /** * Single tab, editing a single file, in the main window. */ -public class EditorTab extends JPanel implements SketchFile.TextStorage, MouseWheelListener { +public class EditorTab extends JPanel implements SketchFile.TextStorage { protected Editor editor; protected SketchTextArea textarea; protected RTextScrollPane scrollPane; @@ -110,7 +109,7 @@ public EditorTab(Editor editor, SketchFile file, String contents) file.setStorage(this); applyPreferences(); add(scrollPane, BorderLayout.CENTER); - textarea.addMouseWheelListener(this); + editor.base.addEditorFontResizeMouseWheelListener(textarea); } private RSyntaxDocument createDocument(String contents) { @@ -177,23 +176,20 @@ private SketchTextArea createTextArea(RSyntaxDocument document) editor.lineStatus.set(lineStart, lineEnd); }); + textArea.addFocusListener(new FocusListener() { + public void focusGained(FocusEvent e) { + Element root = textArea.getDocument().getDefaultRootElement(); + int lineStart = root.getElementIndex(textArea.getCaret().getMark()); + int lineEnd = root.getElementIndex(textArea.getCaret().getDot()); + editor.lineStatus.set(lineStart, lineEnd); + }; + public void focusLost(FocusEvent e) {}; + }); ToolTipManager.sharedInstance().registerComponent(textArea); configurePopupMenu(textArea); return textArea; } - - public void mouseWheelMoved(MouseWheelEvent e) { - if (e.isControlDown()) { - if (e.getWheelRotation() < 0) { - editor.base.handleFontSizeChange(1); - } else { - editor.base.handleFontSizeChange(-1); - } - } else { - e.getComponent().getParent().dispatchEvent(e); - } - } private void configurePopupMenu(final SketchTextArea textarea){ @@ -251,7 +247,7 @@ public void actionPerformed(ActionEvent e) { menu.add(item); final JMenuItem referenceItem = new JMenuItem(tr("Find in Reference")); - referenceItem.addActionListener(editor::handleFindReference); + referenceItem.addActionListener(ev -> editor.handleFindReference(getCurrentKeyword())); menu.add(referenceItem); final JMenuItem openURLItem = new JMenuItem(tr("Open URL")); @@ -446,6 +442,9 @@ public void setText(String what) { } finally { caret.setUpdatePolicy(policy); } + // A trick to force textarea to recalculate the bracket matching rectangle. + // In the worst case scenario, this should be ineffective. + textarea.setLineWrap(textarea.getLineWrap()); } /** diff --git a/app/src/processing/app/EditorToolbar.java b/app/src/processing/app/EditorToolbar.java index 00da0f37ac7..a2a9b804e70 100644 --- a/app/src/processing/app/EditorToolbar.java +++ b/app/src/processing/app/EditorToolbar.java @@ -23,11 +23,25 @@ package processing.app; +import javax.imageio.ImageIO; import javax.swing.*; import javax.swing.event.MouseInputListener; + +import com.thizzer.jtouchbar.JTouchBar; +import com.thizzer.jtouchbar.item.TouchBarItem; +import com.thizzer.jtouchbar.item.view.TouchBarButton; + +import cc.arduino.contributions.VersionComparator; +import processing.app.helpers.OSUtils; + import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.awt.image.BufferedImage; +import java.io.ByteArrayOutputStream; +import java.io.IOException; import static processing.app.I18n.tr; import static processing.app.Theme.scale; @@ -48,7 +62,7 @@ public class EditorToolbar extends JComponent implements MouseInputListener, Key * Titles for each button when the shift key is pressed. */ private static final String[] titleShift = { - tr("Verify"), tr("Upload Using Programmer"), tr("New"), tr("Open"), tr("Save As..."), tr("Serial Monitor") + tr("Verify"), tr("Upload Using Programmer"), tr("New"), tr("Open"), tr("Save As..."), tr("Serial Plotter") }; private static final int BUTTON_COUNT = title.length; @@ -92,10 +106,13 @@ public class EditorToolbar extends JComponent implements MouseInputListener, Key private final Color bgcolor; private static Image[][] buttonImages; + private static com.thizzer.jtouchbar.common.Image[][] touchBarImages; private int currentRollover; private JPopupMenu popup; private final JMenu menu; + private JTouchBar touchBar; + private TouchBarButton[] touchBarButtons; private int buttonCount; private int[] state = new int[BUTTON_COUNT]; @@ -133,10 +150,60 @@ public EditorToolbar(Editor editor, JMenu menu) { statusFont = Theme.getFont("buttons.status.font"); statusColor = Theme.getColor("buttons.status.color"); + if (OSUtils.isMacOS() && VersionComparator.greaterThanOrEqual(OSUtils.version(), "10.12")) { + editor.addWindowListener(new WindowAdapter() { + public void windowActivated(WindowEvent e) { + if (touchBar == null) { + buildTouchBar(); + + touchBar.show(editor); + } + } + }); + } + addMouseListener(this); addMouseMotionListener(this); KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(this); } + + private void buildTouchBar() { + if (touchBarImages == null) { + loadTouchBarImages(); + } + + touchBar = new JTouchBar(); + touchBarButtons = new TouchBarButton[BUTTON_COUNT]; + touchBar.setCustomizationIdentifier("Arduino"); + + for (int i = 0; i < BUTTON_COUNT; i++) { + final int selection = i; + + // add spacers before NEW and SERIAL buttons + if (i == NEW) { + touchBar.addItem(new TouchBarItem(TouchBarItem.NSTouchBarItemIdentifierFixedSpaceSmall)); + } else if (i == SERIAL) { + touchBar.addItem(new TouchBarItem(TouchBarItem.NSTouchBarItemIdentifierFlexibleSpace)); + } + + touchBarButtons[i] = new TouchBarButton(); + touchBarButtons[i].setImage(touchBarImages[i][ROLLOVER]); + touchBarButtons[i].setAction(event -> { + // Run event handler later to prevent hanging if a dialog needs to be open + EventQueue.invokeLater(new Runnable() { + @Override + public void run() { + handleSelectionPressed(selection); + } + }); + }); + + TouchBarItem touchBarItem = new TouchBarItem(title[i], touchBarButtons[i], true); + touchBarItem.setCustomizationLabel(title[i]); + + touchBar.addItem(touchBarItem); + } + } private void loadButtons() { Image allButtons = Theme.getThemeImage("buttons", this, @@ -157,6 +224,36 @@ private void loadButtons() { } } } + + private void loadTouchBarImages() { + Image allButtonsRetina = Theme.getThemeImage("buttons", this, + BUTTON_IMAGE_SIZE * BUTTON_COUNT * 2, + BUTTON_IMAGE_SIZE * 3 * 2); + touchBarImages = new com.thizzer.jtouchbar.common.Image[BUTTON_COUNT][3]; + + for (int i = 0; i < BUTTON_COUNT; i++) { + for (int state = 0; state < 3; state++) { + BufferedImage image = new BufferedImage(BUTTON_WIDTH * 2, BUTTON_HEIGHT * 2, + BufferedImage.TYPE_INT_ARGB); + Graphics g = image.getGraphics(); + + int offset = (BUTTON_IMAGE_SIZE * 2 - BUTTON_WIDTH * 2) / 2; + g.drawImage(allButtonsRetina, -(i * BUTTON_IMAGE_SIZE * 2) - offset, + (-2 + state) * BUTTON_IMAGE_SIZE * 2, null); + + // convert the image to a PNG to display on the touch bar + ByteArrayOutputStream pngStream = new ByteArrayOutputStream(); + + try { + ImageIO.write(image, "PNG", pngStream); + + touchBarImages[i][state] = new com.thizzer.jtouchbar.common.Image(pngStream.toByteArray()); + } catch (IOException e) { + // ignore errors + } + } + } + } @Override public void paintComponent(Graphics screen) { @@ -305,6 +402,15 @@ private void setState(int slot, int newState, boolean updateAfter) { if (updateAfter) { repaint(); } + + if (touchBarButtons != null) { + if (newState == INACTIVE) { + // use ROLLOVER state when INACTIVE + newState = ROLLOVER; + } + + touchBarButtons[slot].setImage(touchBarImages[slot][newState]); + } } @@ -339,6 +445,20 @@ public void mousePressed(MouseEvent e) { if (sel == -1) return; currentRollover = -1; + handleSelectionPressed(sel, e.isShiftDown(), x, y); + } + + public void mouseClicked(MouseEvent e) { + } + + public void mouseReleased(MouseEvent e) { + } + + private void handleSelectionPressed(int sel) { + handleSelectionPressed(sel, false, 0, 0); + } + + private void handleSelectionPressed(int sel, boolean isShiftDown, int x, int y) { switch (sel) { case RUN: if (!editor.avoidMultipleOperations) { @@ -347,10 +467,10 @@ public void mousePressed(MouseEvent e) { } break; -// case STOP: -// editor.handleStop(); -// break; -// +// case STOP: +// editor.handleStop(); +// break; +// case OPEN: popup = menu.getPopupMenu(); popup.show(EditorToolbar.this, x, y); @@ -365,7 +485,7 @@ public void mousePressed(MouseEvent e) { break; case SAVE: - if (e.isShiftDown()) { + if (isShiftDown) { editor.handleSaveAs(); } else { editor.handleSave(false); @@ -375,12 +495,16 @@ public void mousePressed(MouseEvent e) { case EXPORT: // launch a timeout timer which can reenable to upload button functionality an if (!editor.avoidMultipleOperations) { - editor.handleExport(e.isShiftDown()); + editor.handleExport(isShiftDown); } break; case SERIAL: - editor.handleSerial(); + if (isShiftDown) { + editor.handlePlotter(); + } else { + editor.handleSerial(); + } break; default: @@ -388,15 +512,6 @@ public void mousePressed(MouseEvent e) { } } - - public void mouseClicked(MouseEvent e) { - } - - - public void mouseReleased(MouseEvent e) { - } - - /** * Set a particular button to be active. */ diff --git a/app/src/processing/app/SerialMonitor.java b/app/src/processing/app/SerialMonitor.java index 45adbd7d54b..b2656ca653d 100644 --- a/app/src/processing/app/SerialMonitor.java +++ b/app/src/processing/app/SerialMonitor.java @@ -21,9 +21,10 @@ import cc.arduino.packages.BoardPort; import processing.app.legacy.PApplet; -import java.awt.*; +import java.awt.Color; import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; import static processing.app.I18n.tr; @@ -33,17 +34,21 @@ public class SerialMonitor extends AbstractTextMonitor { private Serial serial; private int serialRate; + private static final int COMMAND_HISTORY_SIZE = 100; + private final CommandHistory commandHistory = + new CommandHistory(COMMAND_HISTORY_SIZE); + public SerialMonitor(BoardPort port) { super(port); serialRate = PreferencesData.getInteger("serial.debug_rate"); serialRates.setSelectedItem(serialRate + " " + tr("baud")); - onSerialRateChange(new ActionListener() { - public void actionPerformed(ActionEvent event) { - String wholeString = (String) serialRates.getSelectedItem(); - String rateString = wholeString.substring(0, wholeString.indexOf(' ')); - serialRate = Integer.parseInt(rateString); - PreferencesData.set("serial.debug_rate", rateString); + onSerialRateChange((ActionEvent event) -> { + String wholeString = (String) serialRates.getSelectedItem(); + String rateString = wholeString.substring(0, wholeString.indexOf(' ')); + serialRate = Integer.parseInt(rateString); + PreferencesData.set("serial.debug_rate", rateString); + if (serial != null) { try { close(); Thread.sleep(100); // Wait for serial port to properly close @@ -56,16 +61,41 @@ public void actionPerformed(ActionEvent event) { } }); - onSendCommand(new ActionListener() { - public void actionPerformed(ActionEvent e) { - send(textField.getText()); - textField.setText(""); - } + onSendCommand((ActionEvent event) -> { + String command = textField.getText(); + send(command); + commandHistory.addCommand(command); + textField.setText(""); }); - - onClearCommand(new ActionListener() { - public void actionPerformed(ActionEvent e) { - textArea.setText(""); + + onClearCommand((ActionEvent event) -> textArea.setText("")); + + // Add key listener to UP, DOWN, ESC keys for command history traversal. + textField.addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + switch (e.getKeyCode()) { + + // Select previous command. + case KeyEvent.VK_UP: + if (commandHistory.hasPreviousCommand()) { + textField.setText( + commandHistory.getPreviousCommand(textField.getText())); + } + break; + + // Select next command. + case KeyEvent.VK_DOWN: + if (commandHistory.hasNextCommand()) { + textField.setText(commandHistory.getNextCommand()); + } + break; + + // Reset history location, restoring the last unexecuted command. + case KeyEvent.VK_ESCAPE: + textField.setText(commandHistory.resetHistoryLocation()); + break; + } } }); } @@ -93,6 +123,7 @@ private void send(String s) { } } + @Override public void open() throws Exception { super.open(); @@ -106,13 +137,13 @@ protected void message(char buff[], int n) { }; } + @Override public void close() throws Exception { super.close(); if (serial != null) { int[] location = getPlacement(); String locationStr = PApplet.join(PApplet.str(location), ","); PreferencesData.set("last.serial.location", locationStr); - textArea.setText(""); serial.dispose(); serial = null; } diff --git a/app/src/processing/app/SerialPlotter.java b/app/src/processing/app/SerialPlotter.java index 363753749fe..81b21cd7860 100644 --- a/app/src/processing/app/SerialPlotter.java +++ b/app/src/processing/app/SerialPlotter.java @@ -26,8 +26,12 @@ import java.util.ArrayList; import javax.swing.*; import javax.swing.border.EmptyBorder; +import javax.swing.text.DefaultEditorKit; import java.awt.*; +import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; @@ -40,12 +44,18 @@ public class SerialPlotter extends AbstractMonitor { private Serial serial; private int serialRate, xCount; + private JLabel noLineEndingAlert; + private JTextField textField; + private JButton sendButton; + private JComboBox lineEndings; + private ArrayList graphs; private final static int BUFFER_CAPACITY = 500; private static class Graph { public CircularBuffer buffer; private Color color; + public String label; public Graph(int id) { buffer = new CircularBuffer(BUFFER_CAPACITY); @@ -185,12 +195,24 @@ public void paintComponent(Graphics g1) { g.setTransform(AffineTransform.getTranslateInstance(xOffset, 0)); float xstep = (float) (bounds.width - xOffset - xPadding) / (float) BUFFER_CAPACITY; - int legendLength = graphs.size() * 10 + (graphs.size() - 1) * 3; + // draw legend + int legendXOffset = 0; for(int i = 0; i < graphs.size(); ++i) { graphs.get(i).paint(g, xstep, minY, maxY, rangeY, bounds.height); - if(graphs.size() > 1) { - g.fillRect(bounds.width - (xOffset + legendLength + 10) + i * 13, 10, 10, 10); + if(graphs.size() > 1) { + //draw legend rectangle + g.fillRect(10 + legendXOffset, 10, 10, 10); + legendXOffset += 13; + //draw label + g.setColor(boundsColor); + String s = graphs.get(i).label; + if(s != null && s.length() > 0) { + Rectangle2D fBounds = fm.getStringBounds(s, g); + int sWidth = (int)fBounds.getWidth(); + g.drawString(s, 10 + legendXOffset, 10 + (int)fBounds.getHeight() /2); + legendXOffset += sWidth + 3; + } } } } @@ -220,12 +242,14 @@ public SerialPlotter(BoardPort port) { String rateString = wholeString.substring(0, wholeString.indexOf(' ')); serialRate = Integer.parseInt(rateString); PreferencesData.set("serial.debug_rate", rateString); - try { - close(); - Thread.sleep(100); // Wait for serial port to properly close - open(); - } catch (Exception e) { - // ignore + if (serial != null) { + try { + close(); + Thread.sleep(100); // Wait for serial port to properly close + open(); + } catch (Exception e) { + // ignore + } } }); @@ -254,10 +278,111 @@ protected void onCreateWindow(Container mainPane) { pane.add(serialRates); mainPane.add(pane, BorderLayout.SOUTH); + + textField = new JTextField(40); + // textField is selected every time the window is focused + addWindowFocusListener(new WindowAdapter() { + @Override + public void windowGainedFocus(WindowEvent e) { + textField.requestFocusInWindow(); + } + }); + + // Add cut/copy/paste contextual menu to the text input field. + JPopupMenu menu = new JPopupMenu(); + + Action cut = new DefaultEditorKit.CutAction(); + cut.putValue(Action.NAME, tr("Cut")); + menu.add(cut); + + Action copy = new DefaultEditorKit.CopyAction(); + copy.putValue(Action.NAME, tr("Copy")); + menu.add(copy); + + Action paste = new DefaultEditorKit.PasteAction(); + paste.putValue(Action.NAME, tr("Paste")); + menu.add(paste); + + textField.setComponentPopupMenu(menu); + + sendButton = new JButton(tr("Send")); + + JPanel lowerPane = new JPanel(); + lowerPane.setLayout(new BoxLayout(lowerPane, BoxLayout.X_AXIS)); + lowerPane.setBorder(new EmptyBorder(4, 4, 4, 4)); + + noLineEndingAlert = new JLabel(I18n.format(tr("You've pressed {0} but nothing was sent. Should you select a line ending?"), tr("Send"))); + noLineEndingAlert.setToolTipText(noLineEndingAlert.getText()); + noLineEndingAlert.setForeground(pane.getBackground()); + Dimension minimumSize = new Dimension(noLineEndingAlert.getMinimumSize()); + minimumSize.setSize(minimumSize.getWidth() / 3, minimumSize.getHeight()); + noLineEndingAlert.setMinimumSize(minimumSize); + + + lineEndings = new JComboBox(new String[]{tr("No line ending"), tr("Newline"), tr("Carriage return"), tr("Both NL & CR")}); + lineEndings.addActionListener((ActionEvent event) -> { + PreferencesData.setInteger("serial.line_ending", lineEndings.getSelectedIndex()); + noLineEndingAlert.setForeground(pane.getBackground()); + }); + lineEndings.setMaximumSize(lineEndings.getMinimumSize()); + + lowerPane.add(textField); + lowerPane.add(Box.createRigidArea(new Dimension(4, 0))); + lowerPane.add(sendButton); + + pane.add(lowerPane); + pane.add(noLineEndingAlert); + pane.add(Box.createRigidArea(new Dimension(8, 0))); + pane.add(lineEndings); + + applyPreferences(); + + onSendCommand((ActionEvent event) -> { + send(textField.getText()); + textField.setText(""); + }); + + } + + private void send(String string) { + String s = string; + if (serial != null) { + switch (lineEndings.getSelectedIndex()) { + case 1: + s += "\n"; + break; + case 2: + s += "\r"; + break; + case 3: + s += "\r\n"; + break; + default: + break; + } + if ("".equals(s) && lineEndings.getSelectedIndex() == 0 && !PreferencesData.has("runtime.line.ending.alert.notified")) { + noLineEndingAlert.setForeground(Color.RED); + PreferencesData.set("runtime.line.ending.alert.notified", "true"); + } + serial.write(s); + } + } + + public void onSendCommand(ActionListener listener) { + textField.addActionListener(listener); + sendButton.addActionListener(listener); + } + + public void applyPreferences() { + // Apply line endings. + if (PreferencesData.get("serial.line_ending") != null) { + lineEndings.setSelectedIndex(PreferencesData.getInteger("serial.line_ending")); + } } protected void onEnableWindow(boolean enable) { - serialRates.setEnabled(enable); + textField.setEnabled(enable); + sendButton.setEnabled(enable); } private void onSerialRateChange(ActionListener listener) { @@ -276,23 +401,70 @@ public void message(final String s) { messageBuffer.delete(0, linebreak + 1); line = line.trim(); + if (line.length() == 0) { + // the line only contained trimmable characters + continue; + } String[] parts = line.split("[, \t]+"); if(parts.length == 0) { continue; } int validParts = 0; + int validLabels = 0; for(int i = 0; i < parts.length; ++i) { - try { - double value = Double.valueOf(parts[i]); + Double value = null; + String label = null; + + // column formated name value pair + if(parts[i].contains(":")) { + // get label + String[] subString = parts[i].split("[:]+"); + + if(subString.length > 0) { + int labelLength = subString[0].length(); + + if(labelLength > 32) { + labelLength = 32; + } + label = subString[0].substring(0, labelLength); + } else { + label = ""; + } + + if(subString.length > 1) { + parts[i] = subString[1]; + } else { + parts[i] = ""; + } + } + + try { + value = Double.valueOf(parts[i]); + } catch (NumberFormatException e) { + // ignored + } + //CSV header + if(label == null && value == null) { + label = parts[i]; + } + + if(value != null) { if(validParts >= graphs.size()) { graphs.add(new Graph(validParts)); } graphs.get(validParts).buffer.add(value); validParts++; - } catch (NumberFormatException e) { - // ignore } + if(label != null) { + if(validLabels >= graphs.size()) { + graphs.add(new Graph(validLabels)); + } + graphs.get(validLabels).label = label; + validLabels++; + } + if(validParts > validLabels) validLabels = validParts; + else if(validLabels > validParts) validParts = validLabels; } } diff --git a/app/src/processing/app/SketchController.java b/app/src/processing/app/SketchController.java index e66f138f284..ce9e468cc68 100644 --- a/app/src/processing/app/SketchController.java +++ b/app/src/processing/app/SketchController.java @@ -438,7 +438,7 @@ protected boolean saveAs() throws IOException { //editor.sketchbook.rebuildMenusAsync(); editor.base.rebuildSketchbookMenus(); editor.header.rebuild(); - + editor.updateTitle(); // Make sure that it's not an untitled sketch setUntitled(false); @@ -674,7 +674,7 @@ private File saveSketchInTempFolder() throws IOException { FileUtils.copy(sketch.getFolder(), tempFolder); for (SketchFile file : Stream.of(sketch.getFiles()).filter(SketchFile::isModified).collect(Collectors.toList())) { - Files.write(Paths.get(tempFolder.getAbsolutePath(), file.getFileName()), file.getProgram().getBytes()); + Files.write(Paths.get(tempFolder.getAbsolutePath(), file.getFileName()), file.getProgram().getBytes("UTF-8")); } return Paths.get(tempFolder.getAbsolutePath(), sketch.getPrimaryFile().getFileName()).toFile(); @@ -846,8 +846,9 @@ private static String checkName(String origName) { if (!newName.equals(origName)) { String msg = - tr("The sketch name had to be modified. Sketch names can only consist\n" + - "of ASCII characters and numbers and be less than 64 characters long."); + tr("The sketch name had to be modified.\n" + + "Sketch names must start with a letter or number, followed by letters,\n" + + "numbers, dashes, dots and underscores. Maximum length is 63 characters."); System.out.println(msg); } return newName; diff --git a/app/src/processing/app/UpdateCheck.java b/app/src/processing/app/UpdateCheck.java index 39c555069a1..4c736e60413 100644 --- a/app/src/processing/app/UpdateCheck.java +++ b/app/src/processing/app/UpdateCheck.java @@ -51,7 +51,7 @@ */ public class UpdateCheck implements Runnable { Base base; - String downloadURL = tr("http://www.arduino.cc/latest.txt"); + String downloadURL = "https://www.arduino.cc/latest.txt"; static final long ONE_DAY = 24 * 60 * 60 * 1000; @@ -66,14 +66,14 @@ public UpdateCheck(Base base) { public void run() { //System.out.println("checking for updates..."); - // generate a random id in case none exists yet - Random r = new Random(); - long id = r.nextLong(); - + long id; String idString = PreferencesData.get("update.id"); if (idString != null) { id = Long.parseLong(idString); } else { + // generate a random id in case none exists yet + Random r = new Random(); + id = r.nextLong(); PreferencesData.set("update.id", String.valueOf(id)); } @@ -116,7 +116,7 @@ public void run() { options, options[0]); if (result == JOptionPane.YES_OPTION) { - Base.openURL(tr("http://www.arduino.cc/en/Main/Software")); + Base.openURL("https://www.arduino.cc/en/software"); } } } diff --git a/app/src/processing/app/macosx/ThinkDifferent.java b/app/src/processing/app/macosx/ThinkDifferent.java index e946bdc0fd7..590196ace95 100644 --- a/app/src/processing/app/macosx/ThinkDifferent.java +++ b/app/src/processing/app/macosx/ThinkDifferent.java @@ -23,6 +23,8 @@ package processing.app.macosx; import com.apple.eawt.*; +import com.apple.eawt.AppEvent.AppReOpenedEvent; + import processing.app.Base; import processing.app.Editor; @@ -45,6 +47,20 @@ public class ThinkDifferent { static public void init() { Application application = Application.getApplication(); + + application.addAppEventListener(new AppReOpenedListener() { + @Override + public void appReOpened(AppReOpenedEvent aroe) { + try { + if (Base.INSTANCE.getEditors().size() == 0) { + Base.INSTANCE.handleNew(); + } + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + }); application.setAboutHandler(new AboutHandler() { @Override public void handleAbout(AppEvent.AboutEvent aboutEvent) { diff --git a/app/src/processing/app/syntax/SketchTextArea.java b/app/src/processing/app/syntax/SketchTextArea.java index c13d4ca5767..ba10bfc7af3 100644 --- a/app/src/processing/app/syntax/SketchTextArea.java +++ b/app/src/processing/app/syntax/SketchTextArea.java @@ -30,11 +30,13 @@ package processing.app.syntax; +import java.awt.Color; +import java.awt.Cursor; +import java.awt.Font; +import java.awt.Insets; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; -import java.io.File; -import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; @@ -43,29 +45,27 @@ import java.util.logging.Logger; import javax.swing.KeyStroke; +import javax.swing.event.EventListenerList; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; +import javax.swing.text.BadLocationException; +import javax.swing.text.Segment; + import org.apache.commons.compress.utils.IOUtils; -import org.fife.ui.rsyntaxtextarea.*; +import org.fife.ui.rsyntaxtextarea.LinkGenerator; +import org.fife.ui.rsyntaxtextarea.LinkGeneratorResult; +import org.fife.ui.rsyntaxtextarea.RSyntaxDocument; +import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; +import org.fife.ui.rsyntaxtextarea.Style; +import org.fife.ui.rsyntaxtextarea.Theme; import org.fife.ui.rsyntaxtextarea.Token; +import org.fife.ui.rsyntaxtextarea.TokenImpl; +import org.fife.ui.rsyntaxtextarea.TokenTypes; import org.fife.ui.rtextarea.RTextArea; import org.fife.ui.rtextarea.RTextAreaUI; + import processing.app.Base; -import processing.app.BaseNoGui; import processing.app.PreferencesData; - -import javax.swing.event.EventListenerList; -import javax.swing.event.HyperlinkEvent; -import javax.swing.event.HyperlinkListener; -import javax.swing.text.BadLocationException; -import javax.swing.text.Segment; -import java.awt.*; -import java.awt.event.MouseEvent; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.Map; -import java.util.logging.Logger; import processing.app.helpers.OSUtils; /** @@ -89,14 +89,11 @@ public SketchTextArea(RSyntaxDocument document, PdeKeywords pdeKeywords) throws public void setKeywords(PdeKeywords keywords) { pdeKeywords = keywords; - setLinkGenerator(new DocLinkGenerator(pdeKeywords)); } private void installFeatures() throws IOException { setTheme(PreferencesData.get("editor.syntax_theme", "default")); - setLinkGenerator(new DocLinkGenerator(pdeKeywords)); - setSyntaxEditingStyle(SYNTAX_STYLE_CPLUSPLUS); } @@ -175,48 +172,6 @@ public void getTextLine(int line, Segment segment) { } } - private static class DocLinkGenerator implements LinkGenerator { - - private final PdeKeywords pdeKeywords; - - public DocLinkGenerator(PdeKeywords pdeKeywords) { - this.pdeKeywords = pdeKeywords; - } - - @Override - public LinkGeneratorResult isLinkAtOffset(RSyntaxTextArea textArea, final int offs) { - Token token = textArea.modelToToken(offs); - if (token == null) { - return null; - } - - String reference = pdeKeywords.getReference(token.getLexeme()); - - if (reference != null || (token.getType() == TokenTypes.DATA_TYPE || token.getType() == TokenTypes.VARIABLE || token.getType() == TokenTypes.FUNCTION)) { - - return new LinkGeneratorResult() { - - @Override - public int getSourceOffset() { - return offs; - } - - @Override - public HyperlinkEvent execute() { - - LOG.fine("Open Reference: " + reference); - - Base.showReference("Reference/" + reference); - - return null; - } - }; - } - - return null; - } - } - /** * Handles http hyperlinks. diff --git a/app/src/processing/app/tools/MenuScroller.java b/app/src/processing/app/tools/MenuScroller.java index 3523ec7ceca..d934a4583ca 100644 --- a/app/src/processing/app/tools/MenuScroller.java +++ b/app/src/processing/app/tools/MenuScroller.java @@ -3,6 +3,8 @@ */ package processing.app.tools; +import processing.app.PreferencesData; + import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; @@ -14,6 +16,7 @@ import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelListener; import java.awt.event.KeyEvent; +import java.util.Arrays; /** * A class that provides scrolling capabilities to a long menu dropdown or @@ -31,6 +34,7 @@ public class MenuScroller { private JPopupMenu menu; private Component[] menuItems; + private Component[] allMenuItems; private MenuScrollItem upItem; private MenuScrollItem downItem; private final MenuScrollListener menuListener = new MenuScrollListener(); @@ -537,7 +541,8 @@ public void popupMenuCanceled(PopupMenuEvent e) { } private void setMenuItems() { - menuItems = menu.getComponents(); + allMenuItems = menu.getComponents(); + menuItems = Arrays.stream(allMenuItems).filter(x -> x.isVisible()).toArray(Component[]::new); if (keepVisibleIndex >= topFixedCount && keepVisibleIndex <= menuItems.length - bottomFixedCount && (keepVisibleIndex > firstIndex + scrollCount @@ -552,7 +557,7 @@ private void setMenuItems() { private void restoreMenuItems() { menu.removeAll(); - for (Component component : menuItems) { + for (Component component : allMenuItems) { menu.add(component); } } @@ -567,6 +572,43 @@ public MenuScrollTimer(final int increment, int interval) { public void actionPerformed(ActionEvent e) { firstIndex += increment * accelerator; refreshMenu(); + if (PreferencesData.getBoolean("ide.accessible")) { + // If the user has chosen to use accessibility features, it means that they are using a screen reader + // to assist them in development of their project. This scroller is very unfriendly toward screen readers + // because it does not tell the user that it is scrolling through the board options, and it does not read + // the name of the boards as they scroll by. It is possible that the desired board will never become + // accessible. + // Because this scroller is quite nice for the sighted user, the idea here is to continue to use the + // scroller, but to fool it into scrolling one item at a time for accessible features users so that the + // screen readers work well, too. + // It's not the prettiest of code, but it works. + String itemClassName; + int keyEvent; + + // The blind user likely used an arrow key to get to the scroller. Determine which arrow key + // so we can send an event for the opposite arrow key. This fools the scroller into scrolling + // a single item. Get the class name of the new item while we're here + if (increment > 0) { + itemClassName = menuItems[firstIndex + scrollCount - 1].getClass().getName(); + keyEvent = KeyEvent.VK_UP; + } + else { + itemClassName = menuItems[firstIndex].getClass().getName(); + keyEvent = KeyEvent.VK_DOWN; + } + + // Use the class name to check if the next item is a separator. If it is, just let it scroll on like + // normal, otherwise move the cursor back with the opposite key event to the new item so that item is read + // by a screen reader and the user can use their arrow keys to navigate the list one item at a time + if (!itemClassName.equals(JSeparator.class.getName()) ) { + KeyboardFocusManager manager = KeyboardFocusManager.getCurrentKeyboardFocusManager(); + Component comp = manager.getFocusOwner(); + KeyEvent event = new KeyEvent(comp, + KeyEvent.KEY_PRESSED, System.currentTimeMillis(), 0, + keyEvent, KeyEvent.CHAR_UNDEFINED); + comp.dispatchEvent(event); + } + } } }); } diff --git a/app/test/cc/arduino/contributions/GzippedJsonDownloaderTest.java b/app/test/cc/arduino/contributions/GzippedJsonDownloaderTest.java index e1e231acd3a..0892c361516 100644 --- a/app/test/cc/arduino/contributions/GzippedJsonDownloaderTest.java +++ b/app/test/cc/arduino/contributions/GzippedJsonDownloaderTest.java @@ -4,10 +4,11 @@ import cc.arduino.utils.MultiStepProgress; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.module.mrbean.MrBeanModule; import org.junit.After; import org.junit.Before; import org.junit.Test; + +import processing.app.BaseNoGui; import processing.app.helpers.FileUtils; import java.io.File; @@ -38,11 +39,13 @@ public void tearDown() throws Exception { @Test public void testJsonDownload() throws Exception { - new GZippedJsonDownloader(downloader, new URL("http://downloads.arduino.cc/libraries/library_index.json"), new URL("http://downloads.arduino.cc/libraries/library_index.json.gz")).download(tempFile, new MultiStepProgress(1), "", new NoopProgressListener()); + BaseNoGui.initPlatform(); + new GZippedJsonDownloader(downloader, new URL("http://downloads.arduino.cc/libraries/library_index.json"), + new URL("http://downloads.arduino.cc/libraries/library_index.json.gz")) + .download(tempFile, new MultiStepProgress(1), "", new NoopProgressListener(), true); InputStream indexIn = new FileInputStream(tempFile); ObjectMapper mapper = new ObjectMapper(); - mapper.registerModule(new MrBeanModule()); mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); mapper.configure(DeserializationFeature.EAGER_DESERIALIZER_FETCH, true); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); diff --git a/app/test/cc/arduino/contributions/JsonDownloaderTest.java b/app/test/cc/arduino/contributions/JsonDownloaderTest.java index ebf3c0913ce..1315fe223a0 100644 --- a/app/test/cc/arduino/contributions/JsonDownloaderTest.java +++ b/app/test/cc/arduino/contributions/JsonDownloaderTest.java @@ -4,10 +4,11 @@ import cc.arduino.utils.MultiStepProgress; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.module.mrbean.MrBeanModule; import org.junit.After; import org.junit.Before; import org.junit.Test; + +import processing.app.BaseNoGui; import processing.app.helpers.FileUtils; import java.io.File; @@ -38,11 +39,12 @@ public void tearDown() throws Exception { @Test public void testJsonDownload() throws Exception { - new JsonDownloader(downloader, new URL("http://downloads.arduino.cc/libraries/library_index.json")).download(tempFile, new MultiStepProgress(1), "", new NoopProgressListener()); + BaseNoGui.initPlatform(); + new JsonDownloader(downloader, new URL("http://downloads.arduino.cc/libraries/library_index.json")) + .download(tempFile, new MultiStepProgress(1), "", new NoopProgressListener(), true); InputStream indexIn = new FileInputStream(tempFile); ObjectMapper mapper = new ObjectMapper(); - mapper.registerModule(new MrBeanModule()); mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); mapper.configure(DeserializationFeature.EAGER_DESERIALIZER_FETCH, true); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); diff --git a/app/test/cc/arduino/contributions/UpdatableLibraryTest.java b/app/test/cc/arduino/contributions/UpdatableLibraryTest.java index e06c12710bf..0dab3531cd1 100644 --- a/app/test/cc/arduino/contributions/UpdatableLibraryTest.java +++ b/app/test/cc/arduino/contributions/UpdatableLibraryTest.java @@ -36,8 +36,7 @@ public void testUpdatableLibrary() throws Exception { LibrariesIndexer indexer = new LibrariesIndexer(index_SD_only); BaseNoGui.librariesIndexer = indexer; indexer.parseIndex(); - indexer.setLibrariesFolders(folders); - indexer.rescanLibraries(); + indexer.setLibrariesFoldersAndRescan(folders); ContributedLibrary sdLib = indexer.getIndex().getInstalled("SD").get(); assertTrue("SD lib is installed", sdLib.isLibraryInstalled()); @@ -46,7 +45,7 @@ public void testUpdatableLibrary() throws Exception { assertTrue(ContributionsSelfCheck.checkForUpdatableLibraries()); folders.add(new UserLibraryFolder(SD121, Location.SKETCHBOOK)); - indexer.setLibrariesFolders(folders); + indexer.setLibrariesFoldersAndRescan(folders); sdLib = indexer.getIndex().getInstalled("SD").get(); assertTrue("SD lib is installed", sdLib.isLibraryInstalled()); @@ -63,8 +62,7 @@ public void testUpdatableLibraryWithBundled() throws Exception { LibrariesIndexer indexer = new LibrariesIndexer(index_Bridge_only); BaseNoGui.librariesIndexer = indexer; indexer.parseIndex(); - indexer.setLibrariesFolders(folders); - indexer.rescanLibraries(); + indexer.setLibrariesFoldersAndRescan(folders); ContributedLibrary l = indexer.getIndex().getInstalled("Bridge").get(); assertTrue("Bridge lib is installed", l.isLibraryInstalled()); @@ -73,7 +71,7 @@ public void testUpdatableLibraryWithBundled() throws Exception { assertTrue(ContributionsSelfCheck.checkForUpdatableLibraries()); folders.add(new UserLibraryFolder(Bridge170, Location.SKETCHBOOK)); - indexer.setLibrariesFolders(folders); + indexer.setLibrariesFoldersAndRescan(folders); l = indexer.getIndex().getInstalled("Bridge").get(); assertTrue("Bridge lib is installed", l.isLibraryInstalled()); diff --git a/app/test/cc/arduino/contributions/VersionHelperTest.java b/app/test/cc/arduino/contributions/VersionHelperTest.java index fecbcb8a8cb..de7463da16d 100644 --- a/app/test/cc/arduino/contributions/VersionHelperTest.java +++ b/app/test/cc/arduino/contributions/VersionHelperTest.java @@ -30,28 +30,38 @@ package cc.arduino.contributions; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import java.util.Optional; import org.junit.Test; +import com.github.zafarkhaja.semver.Version; + public class VersionHelperTest { + public void assertOptionalEquals(String expected, Optional value) { + assertTrue(value.isPresent()); + assertEquals(expected, value.get().toString()); + } + @Test public void testVersions() throws Exception { - assertEquals("1.0.0", VersionHelper.valueOf("1.0.0").toString()); - assertEquals("1.0.0", VersionHelper.valueOf("1.0").toString()); - assertEquals("1.0.0", VersionHelper.valueOf("1").toString()); - assertEquals("1.0.0-abc", VersionHelper.valueOf("1.0.0-abc").toString()); - assertEquals("1.0.0-abc", VersionHelper.valueOf("1.0-abc").toString()); - assertEquals("1.0.0-abc", VersionHelper.valueOf("1-abc").toString()); - assertEquals("1.0.0+abc", VersionHelper.valueOf("1.0.0+abc").toString()); - assertEquals("1.0.0+abc", VersionHelper.valueOf("1.0+abc").toString()); - assertEquals("1.0.0+abc", VersionHelper.valueOf("1+abc").toString()); - assertEquals("1.0.0-def+abc", VersionHelper.valueOf("1.0.0-def+abc").toString()); - assertEquals("1.0.0-def+abc", VersionHelper.valueOf("1.0-def+abc").toString()); - assertEquals("1.0.0-def+abc", VersionHelper.valueOf("1-def+abc").toString()); - assertEquals("1.0.0+def-abc", VersionHelper.valueOf("1.0.0+def-abc").toString()); - assertEquals("1.0.0+def-abc", VersionHelper.valueOf("1.0+def-abc").toString()); - assertEquals("1.0.0+def-abc", VersionHelper.valueOf("1+def-abc").toString()); + assertOptionalEquals("1.0.0", VersionHelper.valueOf("1.0.0")); + assertOptionalEquals("1.0.0", VersionHelper.valueOf("1.0")); + assertOptionalEquals("1.0.0", VersionHelper.valueOf("1")); + assertOptionalEquals("1.0.0-abc", VersionHelper.valueOf("1.0.0-abc")); + assertOptionalEquals("1.0.0-abc", VersionHelper.valueOf("1.0-abc")); + assertOptionalEquals("1.0.0-abc", VersionHelper.valueOf("1-abc")); + assertOptionalEquals("1.0.0+abc", VersionHelper.valueOf("1.0.0+abc")); + assertOptionalEquals("1.0.0+abc", VersionHelper.valueOf("1.0+abc")); + assertOptionalEquals("1.0.0+abc", VersionHelper.valueOf("1+abc")); + assertOptionalEquals("1.0.0-def+abc", VersionHelper.valueOf("1.0.0-def+abc")); + assertOptionalEquals("1.0.0-def+abc", VersionHelper.valueOf("1.0-def+abc")); + assertOptionalEquals("1.0.0-def+abc", VersionHelper.valueOf("1-def+abc")); + assertOptionalEquals("1.0.0+def-abc", VersionHelper.valueOf("1.0.0+def-abc")); + assertOptionalEquals("1.0.0+def-abc", VersionHelper.valueOf("1.0+def-abc")); + assertOptionalEquals("1.0.0+def-abc", VersionHelper.valueOf("1+def-abc")); } } diff --git a/app/test/cc/arduino/net/CustomProxySelectorTest.java b/app/test/cc/arduino/net/CustomProxySelectorTest.java index 005f5cce822..411f1aa2366 100644 --- a/app/test/cc/arduino/net/CustomProxySelectorTest.java +++ b/app/test/cc/arduino/net/CustomProxySelectorTest.java @@ -83,8 +83,8 @@ public void testProxyPACHTTP() throws Exception { public void testProxyPACHTTPWithLogin() throws Exception { preferences.put(Constants.PREF_PROXY_TYPE, Constants.PROXY_TYPE_AUTO); preferences.put(Constants.PREF_PROXY_PAC_URL, CustomProxySelectorTest.class.getResource("proxy_http.pac").toExternalForm()); - preferences.put(Constants.PREF_PROXY_AUTO_USERNAME, "auto"); - preferences.put(Constants.PREF_PROXY_AUTO_PASSWORD, "autopassword"); + preferences.put(Constants.PREF_PROXY_USERNAME, "auto"); + preferences.put(Constants.PREF_PROXY_PASSWORD, "autopassword"); CustomProxySelector proxySelector = new CustomProxySelector(preferences); Proxy proxy = proxySelector.getProxyFor(uri); @@ -154,8 +154,8 @@ public void testManualProxyWithLogin() throws Exception { preferences.put(Constants.PREF_PROXY_MANUAL_TYPE, Constants.PROXY_MANUAL_TYPE_HTTP); preferences.put(Constants.PREF_PROXY_MANUAL_HOSTNAME, "localhost"); preferences.put(Constants.PREF_PROXY_MANUAL_PORT, "8080"); - preferences.put(Constants.PREF_PROXY_MANUAL_USERNAME, "username"); - preferences.put(Constants.PREF_PROXY_MANUAL_PASSWORD, "pwd"); + preferences.put(Constants.PREF_PROXY_USERNAME, "username"); + preferences.put(Constants.PREF_PROXY_PASSWORD, "pwd"); CustomProxySelector proxySelector = new CustomProxySelector(preferences); Proxy proxy = proxySelector.getProxyFor(uri); diff --git a/app/test/cc/arduino/packages/uploaders/MergeSketchWithUploaderTest.java b/app/test/cc/arduino/packages/uploaders/MergeSketchWithUploaderTest.java index 384aa169deb..2f048b2a48b 100644 --- a/app/test/cc/arduino/packages/uploaders/MergeSketchWithUploaderTest.java +++ b/app/test/cc/arduino/packages/uploaders/MergeSketchWithUploaderTest.java @@ -35,18 +35,29 @@ import processing.app.helpers.FileUtils; import java.io.File; +import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.util.List; import static org.junit.Assert.assertEquals; public class MergeSketchWithUploaderTest { private File sketch; + private File bootloader; @Before public void setup() throws Exception { - File originalSketch = new File(MergeSketchWithUploaderTest.class.getResource("/sketch.hex").getFile()); + File originalSketch = getResourceFile("/sketch.hex"); sketch = new File(System.getProperty("java.io.tmpdir"), "sketch.hex"); FileUtils.copyFile(originalSketch, sketch); + removeCariageReturns(sketch); + + File originalBootloader = getResourceFile("/optiboot_atmega328.hex"); + bootloader = new File(System.getProperty("java.io.tmpdir"), "optiboot_atmega328.hex"); + FileUtils.copyFile(originalBootloader, bootloader); + removeCariageReturns(bootloader); } @After @@ -57,11 +68,24 @@ public void removeTmpFile() { @Test public void shouldMergeWithOptiboot() throws Exception { assertEquals(11720, sketch.length()); + assertEquals(1432, bootloader.length()); - File bootloader = new File(MergeSketchWithUploaderTest.class.getResource("/optiboot_atmega328.hex").getFile()); + File bootloader = getResourceFile("/optiboot_atmega328.hex"); new MergeSketchWithBooloader().merge(sketch, bootloader); assertEquals(13140, sketch.length()); } + private static File getResourceFile(String resourcePath) throws Exception { + return new File(URLDecoder.decode( + MergeSketchWithUploaderTest.class.getResource(resourcePath).getFile(), "UTF-8")); + } + private static void removeCariageReturns(File file) throws Exception { + List lines = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8); + StringBuilder contentBuilder = new StringBuilder(); + for(String line : lines) { + contentBuilder.append(line).append('\n'); + } + Files.write(file.toPath(), contentBuilder.toString().getBytes(StandardCharsets.UTF_8)); + } } diff --git a/app/test/processing/app/AbstractGUITest.java b/app/test/processing/app/AbstractGUITest.java index d1db60d98aa..efc68c1df84 100644 --- a/app/test/processing/app/AbstractGUITest.java +++ b/app/test/processing/app/AbstractGUITest.java @@ -29,42 +29,36 @@ package processing.app; -import cc.arduino.files.DeleteFilesOnShutdown; +import javax.swing.JPopupMenu; + import org.fest.swing.edt.FailOnThreadViolationRepaintManager; import org.fest.swing.edt.GuiActionRunner; import org.fest.swing.edt.GuiQuery; import org.junit.After; import org.junit.Before; -import processing.app.helpers.ArduinoFrameFixture; -import processing.app.helpers.FileUtils; -import javax.swing.*; -import java.util.Random; +import processing.app.helpers.ArduinoFrameFixture; -public abstract class AbstractGUITest { +public abstract class AbstractGUITest extends AbstractWithPreferencesTest { protected ArduinoFrameFixture window; @Before public void startUpTheIDE() throws Exception { + // This relies on AbstractWithPreferencesTest to set up the + // non-gui-specific stuff. + System.setProperty("mrj.version", "whynot"); //makes sense only on osx. See https://github.com/alexruiz/fest-swing-1.x/issues/2#issuecomment-86532042 - Runtime.getRuntime().addShutdownHook(new Thread(DeleteFilesOnShutdown.INSTANCE)); FailOnThreadViolationRepaintManager.install(); - BaseNoGui.initPlatform(); - BaseNoGui.getPlatform().init(); - PreferencesData.init(null); JPopupMenu.setDefaultLightWeightPopupEnabled(false); - Theme.init(); BaseNoGui.getPlatform().setLookAndFeel(); - Base.untitledFolder = FileUtils.createTempFolder("untitled" + new Random().nextInt(Integer.MAX_VALUE), ".tmp"); - DeleteFilesOnShutdown.add(Base.untitledFolder); window = GuiActionRunner.execute(new GuiQuery() { @Override protected ArduinoFrameFixture executeInEDT() throws Throwable { - return new ArduinoFrameFixture(new Base(new String[0]).editors.get(0)); + return new ArduinoFrameFixture(createBase().editors.get(0)); } }); } diff --git a/app/test/processing/app/AbstractWithPreferencesTest.java b/app/test/processing/app/AbstractWithPreferencesTest.java index f0d2f3a2b07..1075aebda4f 100644 --- a/app/test/processing/app/AbstractWithPreferencesTest.java +++ b/app/test/processing/app/AbstractWithPreferencesTest.java @@ -29,26 +29,88 @@ package processing.app; -import cc.arduino.files.DeleteFilesOnShutdown; +import static org.junit.Assert.assertEquals; import org.junit.Before; +import org.junit.After; + import processing.app.helpers.FileUtils; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; import java.util.Random; +import java.util.List; +import java.util.LinkedList; public abstract class AbstractWithPreferencesTest { + /** + * Files or directories that will be deleted after each test. + * Subclasses can add files here in @Test or @Before functions. + */ + protected List deleteAfter = new LinkedList(); + protected File preferencesFile; @Before public void init() throws Exception { - Runtime.getRuntime().addShutdownHook(new Thread(DeleteFilesOnShutdown.INSTANCE)); + File settingsDir = Files.createTempDirectory("arduino_test_settings").toFile(); + deleteAfter.add(settingsDir); + + preferencesFile = new File(settingsDir, "preferences.txt"); + File sketchbookDir = new File(settingsDir, "sketchbook"); + sketchbookDir.mkdir(); + BaseNoGui.initPlatform(); BaseNoGui.getPlatform().init(); - PreferencesData.init(null); + + PreferencesData.init(preferencesFile); + // Do not read anything from e.g. ~/.arduino15 + PreferencesData.set("settings.path", settingsDir.toString()); + // Do not read or write the default ~/Arduino sketchbook + PreferencesData.set("sketchbook.path", sketchbookDir.toString()); + // Do not perform any update checks + PreferencesData.set("update.check", sketchbookDir.toString()); + // Write the defaults, with these changes to file. This allows them + // to be reloaded when creating a Base instance (see getBaseArgs() + // below). + PreferencesData.save(); + Theme.init(); BaseNoGui.initPackages(); Base.untitledFolder = FileUtils.createTempFolder("untitled" + new Random().nextInt(Integer.MAX_VALUE), ".tmp"); - DeleteFilesOnShutdown.add(Base.untitledFolder); + deleteAfter.add(Base.untitledFolder); } + /** + * Returns arguments to be passed to the Base constructor or on the + * commandline to set up the created dummy environment. + */ + protected String[] getBaseArgs() { + return new String[] { + // Preferences are loaded (using --preferences-file) before + // processing any other commandline options (e.g. --pref), so only + // use --preferences-file here. Also, this does not affect the + // "action" mode, for tests that require the GUI to be loaded. + "--preferences-file", preferencesFile.toString(), + }; + } + + /** + * Creates a new instance of Base. Always use this rather than calling + * it directly, to ensure the right settings are used. + */ + protected Base createBase() throws Exception { + Base base = new Base(getBaseArgs()); + // Doublecheck that the right preferencesFile was loaded + assertEquals(preferencesFile, PreferencesData.preferencesFile); + return base; + } + + @After + public void cleanup() throws IOException { + for (File f : deleteAfter) + FileUtils.recursiveDelete(f); + deleteAfter = new LinkedList(); + } } diff --git a/app/test/processing/app/CommandLineTest.java b/app/test/processing/app/CommandLineTest.java index bf8eb8904c1..92c0dfec83e 100644 --- a/app/test/processing/app/CommandLineTest.java +++ b/app/test/processing/app/CommandLineTest.java @@ -32,22 +32,32 @@ import static org.junit.Assert.*; import java.io.File; +import java.io.IOException; +import java.util.List; +import java.util.ArrayList; +import java.util.Arrays; import org.apache.commons.compress.utils.IOUtils; import org.fest.assertions.Assertions; -import org.junit.Before; +import org.junit.BeforeClass; import org.junit.Test; import processing.app.helpers.OSUtils; import processing.app.helpers.PreferencesMap; -public class CommandLineTest { +/** + * This extends AbstractWithPreferencesTest which initializes part of + * the internal Arduino structures. Most of that is not required, but it + * also conveniently sets up a settings directory and preferences file, + * which we can use here (through getBaseArgs()). + */ +public class CommandLineTest extends AbstractWithPreferencesTest { - File buildPath; - File arduinoPath; + private static File buildPath; + private static File arduinoPath; - @Before - public void findBuildPaths() throws Exception { + @BeforeClass + public static void findBuildPaths() throws Exception { buildPath = new File(System.getProperty("user.dir")); while (!new File(buildPath, "build").isDirectory()) { buildPath = buildPath.getParentFile(); @@ -72,58 +82,60 @@ public void findBuildPaths() throws Exception { System.out.println("found arduino: " + arduinoPath); } - @Test - public void testCommandLineBuildWithRelativePath() throws Exception { + public Process runArduino(boolean output, boolean success, File wd, String[] extraArgs) throws IOException, InterruptedException { Runtime rt = Runtime.getRuntime(); - File wd = new File(buildPath, "build/shared/examples/01.Basics/Blink/"); - Process pr = rt - .exec(arduinoPath + " --board arduino:avr:uno --verify Blink.ino", null, - wd); - IOUtils.copy(pr.getInputStream(), System.out); + + List args = new ArrayList(); + args.add(arduinoPath.getAbsolutePath()); + args.addAll(Arrays.asList(getBaseArgs())); + args.addAll(Arrays.asList(extraArgs)); + + System.out.println("Running: " + String.join(" ", args)); + + Process pr = rt.exec(args.toArray(new String[0]), null, wd); + if (output) { + IOUtils.copy(pr.getInputStream(), System.out); + IOUtils.copy(pr.getErrorStream(), System.out); + } pr.waitFor(); - assertEquals(0, pr.exitValue()); + if (success) + assertEquals(0, pr.exitValue()); + return pr; + } + + @Test + public void testCommandLineBuildWithRelativePath() throws Exception { + File wd = new File(buildPath, "app/testdata/sketches/Blink/"); + runArduino(true, true, wd, new String[] { + "--board", "arduino:avr:uno", + "--verify", "Blink.ino", + }); } @Test public void testCommandLinePreferencesSave() throws Exception { - Runtime rt = Runtime.getRuntime(); File prefFile = File.createTempFile("test_pref", ".txt"); prefFile.deleteOnExit(); - Process pr = rt.exec(new String[] { - arduinoPath.getAbsolutePath(), + runArduino(true, true, null, new String[] { "--save-prefs", "--preferences-file", prefFile.getAbsolutePath(), - "--get-pref", // avoids starting the GUI + "--version", // avoids starting the GUI }); - IOUtils.copy(pr.getInputStream(), System.out); - IOUtils.copy(pr.getErrorStream(), System.out); - pr.waitFor(); - assertEquals(0, pr.exitValue()); - pr = rt.exec(new String[] { - arduinoPath.getAbsolutePath(), + runArduino(true, true, null, new String[] { "--pref", "test_pref=xxx", "--preferences-file", prefFile.getAbsolutePath(), }); - IOUtils.copy(pr.getInputStream(), System.out); - IOUtils.copy(pr.getErrorStream(), System.out); - pr.waitFor(); - assertEquals(0, pr.exitValue()); PreferencesMap prefs = new PreferencesMap(prefFile); assertNull("preference should not be saved", prefs.get("test_pref")); - pr = rt.exec(new String[] { - arduinoPath.getAbsolutePath(), + runArduino(true, true, null, new String[] { "--pref", "test_pref=xxx", "--preferences-file", prefFile.getAbsolutePath(), "--save-prefs", }); - IOUtils.copy(pr.getInputStream(), System.out); - IOUtils.copy(pr.getErrorStream(), System.out); - pr.waitFor(); - assertEquals(0, pr.exitValue()); prefs = new PreferencesMap(prefFile); assertEquals("preference should be saved", "xxx", prefs.get("test_pref")); @@ -131,32 +143,23 @@ public void testCommandLinePreferencesSave() throws Exception { @Test public void testCommandLineVersion() throws Exception { - Runtime rt = Runtime.getRuntime(); - Process pr = rt.exec(new String[]{ - arduinoPath.getAbsolutePath(), + Process pr = runArduino(false, true, null, new String[] { "--version", }); - pr.waitFor(); - Assertions.assertThat(pr.exitValue()) - .as("Process will finish with exit code 0 in --version") - .isEqualTo(0); Assertions.assertThat(new String(IOUtils.toByteArray(pr.getInputStream()))) - .matches("Arduino: \\d+\\.\\d+\\.\\d+.*"); + .matches("Arduino: \\d+\\.\\d+\\.\\d+.*\r?\n"); } @Test public void testCommandLineMultipleAction() throws Exception { - Runtime rt = Runtime.getRuntime(); - Process pr = rt.exec(new String[]{ - arduinoPath.getAbsolutePath(), + Process pr = runArduino(true, false, null, new String[] { "--version", "--verify", }); - pr.waitFor(); Assertions.assertThat(pr.exitValue()) - .as("Multiple Action will be rejected") - .isEqualTo(3); + .as("Multiple Action will be rejected") + .isEqualTo(3); } } diff --git a/app/test/processing/app/DefaultTargetTest.java b/app/test/processing/app/DefaultTargetTest.java index 37819c84cff..24767bee30d 100644 --- a/app/test/processing/app/DefaultTargetTest.java +++ b/app/test/processing/app/DefaultTargetTest.java @@ -57,7 +57,7 @@ public void testDefaultTarget() throws Exception { PreferencesData.set("board", "unreal_board"); // should not raise an exception - new Base(new String[0]); + createBase(); // skip test if no target platforms are available Assume.assumeNotNull(BaseNoGui.getTargetPlatform()); diff --git a/app/test/processing/app/EditorConsoleTest.java b/app/test/processing/app/EditorConsoleTest.java new file mode 100644 index 00000000000..308523ce6ef --- /dev/null +++ b/app/test/processing/app/EditorConsoleTest.java @@ -0,0 +1,155 @@ +/* + * This file is part of Arduino. + * + * Copyright 2020 Arduino LLC (http://www.arduino.cc/) + * + * Arduino 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 of the License, 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; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * As a special exception, you may use this file as part of a free software + * library without restriction. Specifically, if other files instantiate + * templates or use macros or inline functions from this file, or you compile + * this file and link it with other files to produce an executable, this + * file does not by itself cause the resulting executable to be covered by + * the GNU General Public License. This exception does not however + * invalidate any other reasons why the executable file might be covered by + * the GNU General Public License. + */ + +package processing.app; + +import static org.junit.Assert.assertEquals; + +import org.junit.Before; +import org.junit.Test; + +public class EditorConsoleTest extends AbstractWithPreferencesTest { + private EditorConsole console; + + @Before + public void createConsole() { + console = new EditorConsole(null); + } + + public String escapeString(String input) { + // This escapes backslashes, newlines and carriage returns, to get + // more readable assertion failures. + return input.replace("\\", "\\\\").replace("\n", "\\n").replace("\r", "\\r"); + } + + public void assertOutput(String output) { + assertEquals(escapeString(output), escapeString(console.getText())); + } + + @Test + public void testHelloWorld() throws Exception { + console.insertString("Hello, world!", null); + + assertOutput("Hello, world!"); + } + + @Test + public void testCrNlHandling() throws Exception { + // Do some basic tests with \r\n + console.insertString("abc\r\ndef", null); + assertOutput("abc\r\ndef"); + + console.insertString("xyz", null); + assertOutput("abc\r\ndefxyz"); + + console.insertString("000\r\n123", null); + assertOutput("abc\r\ndefxyz000\r\n123"); + + console.insertString("\r\n", null); + assertOutput("abc\r\ndefxyz000\r\n123\r\n"); + } + + @Test + public void testNlHandling() throws Exception { + // Basic tests, but with just \n + console.insertString("abc\ndef", null); + assertOutput("abc\ndef"); + + console.insertString("xyz", null); + assertOutput("abc\ndefxyz"); + + console.insertString("000\n123", null); + assertOutput("abc\ndefxyz000\n123"); + + console.insertString("\n", null); + assertOutput("abc\ndefxyz000\n123\n"); + } + + @Test + public void testCrHandling() throws Exception { + // Then test that single \r clears the current line + console.clear(); + console.insertString("abc\rdef", null); + assertOutput("def"); + + // A single \r at the end is not added to the document + console.insertString("\r", null); + assertOutput("def"); + + // Nor are multiple \r at the end + console.insertString("\r\r\r", null); + assertOutput("def"); + + // But it does clear the line on the next write + console.insertString("123", null); + assertOutput("123"); + + // Same when combined with some data + console.insertString("\r456\r\r", null); + assertOutput("456"); + + console.insertString("000", null); + assertOutput("000"); + + // Then add a newline so preceding data is kept + console.insertString("\r\nxxx\r", null); + assertOutput("000\r\nxxx"); + + // But data after the newline is removed + console.insertString("yyy", null); + assertOutput("000\r\nyyy"); + + // When a \r\n is split across inserts, it becomes a lone \n + console.insertString("\r", null); + assertOutput("000\r\nyyy"); + console.insertString("\n", null); + assertOutput("000\r\nyyy\n"); + } + + @Test + public void testCrPartialOverwrite() throws Exception { + console.insertString("abcdef\r", null); + assertOutput("abcdef"); + + console.insertString("123", null); + assertOutput("123def"); + + console.insertString("4", null); + assertOutput("1234ef"); + + console.insertString("\r\n56", null); + assertOutput("1234ef\r\n56"); + } + + @Test + public void testTogether() throws Exception { + console.insertString("abc\n123456\rdef\rx\r\nyyy\nzzz\r999", null); + assertOutput("abc\nxef456\r\nyyy\n999"); + } +} diff --git a/app/test/processing/app/HittingEscapeOnCloseConfirmationDialogTest.java b/app/test/processing/app/HittingEscapeOnCloseConfirmationDialogTest.java index 83897b1963c..00539b15b29 100644 --- a/app/test/processing/app/HittingEscapeOnCloseConfirmationDialogTest.java +++ b/app/test/processing/app/HittingEscapeOnCloseConfirmationDialogTest.java @@ -29,16 +29,18 @@ package processing.app; +import static org.junit.Assert.assertEquals; +import static processing.app.I18n.tr; + +import java.awt.event.KeyEvent; + import org.fest.swing.core.KeyPressInfo; +import org.fest.swing.core.matcher.DialogMatcher; import org.fest.swing.finder.WindowFinder; import org.fest.swing.fixture.DialogFixture; import org.junit.Test; -import processing.app.helpers.SketchTextAreaFixture; -import javax.swing.*; -import java.awt.event.KeyEvent; - -import static org.junit.Assert.assertEquals; +import processing.app.helpers.SketchTextAreaFixture; public class HittingEscapeOnCloseConfirmationDialogTest extends AbstractGUITest { @@ -49,7 +51,8 @@ public void shouldJustCloseTheDialog() throws Exception { window.close(); - DialogFixture dialog = WindowFinder.findDialog(JDialog.class).using(window.robot); + DialogMatcher matcher = DialogMatcher.withTitle(tr("Close")).andShowing(); + DialogFixture dialog = WindowFinder.findDialog(matcher).using(window.robot); dialog.pressAndReleaseKey(KeyPressInfo.keyCode(KeyEvent.VK_ESCAPE)); EditorConsole console = (EditorConsole) window.scrollPane("console").component(); diff --git a/app/test/processing/app/helpers/StringUtilsTest.java b/app/test/processing/app/SerialTest.java similarity index 64% rename from app/test/processing/app/helpers/StringUtilsTest.java rename to app/test/processing/app/SerialTest.java index 1ddbf51b35e..63280811e24 100644 --- a/app/test/processing/app/helpers/StringUtilsTest.java +++ b/app/test/processing/app/SerialTest.java @@ -1,6 +1,8 @@ /* * This file is part of Arduino. * + * Copyright 2020 Arduino LLC (http://www.arduino.cc/) + * * Arduino 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 of the License, or @@ -23,20 +25,34 @@ * the GNU General Public License. This exception does not however * invalidate any other reasons why the executable file might be covered by * the GNU General Public License. - * - * Copyright 2015 Arduino LLC (http://www.arduino.cc/) */ -package processing.app.helpers; +package processing.app; + +import static org.junit.Assert.assertEquals; import org.junit.Test; -import static org.junit.Assert.assertEquals; +public class SerialTest { + class NullSerial extends Serial { + public NullSerial() throws SerialException { + super("none", 0, 'n', 0, 0, false, false); + } + + @Override + protected void message(char[] chars, int length) { + output += new String(chars, 0, length); + } -public class StringUtilsTest { + String output = ""; + } @Test - public void shouldJoinAnArray() { - assertEquals("1 - 2 - 3", StringUtils.join(new String[]{"1", "2", "3"}, " - ")); + public void testSerialUTF8Decoder() throws Exception { + NullSerial s = new NullSerial(); + // https://github.com/arduino/Arduino/issues/9808 + String testdata = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789°0123456789"; + s.processSerialEvent(testdata.getBytes()); + assertEquals(s.output, testdata); } } diff --git a/app/test/processing/app/UpdateTextAreaActionTest.java b/app/test/processing/app/UpdateTextAreaActionTest.java new file mode 100644 index 00000000000..b32ea1850be --- /dev/null +++ b/app/test/processing/app/UpdateTextAreaActionTest.java @@ -0,0 +1,91 @@ +package processing.app; + +import static org.fest.assertions.Assertions.assertThat; + +import org.junit.Before; +import org.junit.Test; + +import cc.arduino.packages.BoardPort; +import processing.app.helpers.PreferencesMap; + +public class UpdateTextAreaActionTest { + + private static final String TIMESTAMP_REGEX = "\\d\\d:\\d\\d:\\d\\d.\\d\\d\\d"; + + class DummyTextMonitor extends AbstractTextMonitor { + public DummyTextMonitor(BoardPort boardPort) { + super(boardPort); + } + } + + @Before + public void setup() { + PreferencesData.defaults = new PreferencesMap(); + PreferencesData.set("editor.font", "Monospaced,plain,12"); + PreferencesData.set("gui.scale", "100"); + Theme.defaults = new PreferencesMap(); + Theme.table.put("console.font", "Monospaced,plain,12"); + } + + @Test + public void noTimestampAdded() { + DummyTextMonitor textMon = new DummyTextMonitor(new BoardPort()); + textMon.addTimeStampBox.setSelected(false); + + textMon.updateTextArea("line1\nline2\r\nline3"); + assertThat(textMon.textArea.getText()).matches("line1\nline2\r\nline3"); + } + + @Test + public void all3LinesHaveTimestampAdded() { + DummyTextMonitor textMon = new DummyTextMonitor(new BoardPort()); + textMon.addTimeStampBox.setSelected(true); + + textMon.updateTextArea("line1\nline2\r\nline3"); + assertThat(textMon.textArea.getText()) + .matches(TIMESTAMP_REGEX + " -> line1\\n" + // + TIMESTAMP_REGEX + " -> line2\\r\\n" + // + TIMESTAMP_REGEX + " -> line3"); + } + + @Test + public void emptyLinesHaveTimestampToo() { + DummyTextMonitor textMon = new DummyTextMonitor(new BoardPort()); + textMon.addTimeStampBox.setSelected(true); + + textMon.updateTextArea("line_1\n\nline_2"); + assertThat(textMon.textArea.getText()) + .matches(TIMESTAMP_REGEX + " -> line_1\\n" + // + TIMESTAMP_REGEX + " -> \\n" + // + TIMESTAMP_REGEX + " -> line_2"); + } + + @Test + public void newLinesAreRememberedWhenNewBufferIsUsed() { + DummyTextMonitor textMon = new DummyTextMonitor(new BoardPort()); + textMon.addTimeStampBox.setSelected(true); + + textMon.updateTextArea("no newline"); + assertThat(textMon.textArea.getText()) + .matches(TIMESTAMP_REGEX + " -> no newline"); + + textMon.updateTextArea(" more text"); + assertThat(textMon.textArea.getText()) + .matches(TIMESTAMP_REGEX + " -> no newline more text"); + + textMon.updateTextArea("\n"); + assertThat(textMon.textArea.getText()) + .matches(TIMESTAMP_REGEX + " -> no newline more text\n"); + + textMon.updateTextArea("\n"); + assertThat(textMon.textArea.getText()) + .matches(TIMESTAMP_REGEX + " -> no newline more text\n" + // + TIMESTAMP_REGEX + " -> \n"); + + textMon.updateTextArea("third line"); + assertThat(textMon.textArea.getText()) + .matches(TIMESTAMP_REGEX + " -> no newline more text\n" + // + TIMESTAMP_REGEX + " -> \n" + // + TIMESTAMP_REGEX + " -> third line"); + } +} \ No newline at end of file diff --git a/app/test/processing/app/debug/TargetPlatformStub.java b/app/test/processing/app/debug/TargetPlatformStub.java index a8048c514a4..59b655f96f5 100644 --- a/app/test/processing/app/debug/TargetPlatformStub.java +++ b/app/test/processing/app/debug/TargetPlatformStub.java @@ -99,4 +99,10 @@ public TargetBoard getBoard(String boardId) { public TargetPackage getContainerPackage() { return targetPackage; } + + @Override + public boolean isInSketchbook() { + // TODO Auto-generated method stub + return false; + } } diff --git a/app/testdata/libraries/Bridge_1.6.3/Bridge/examples/HttpClient/HttpClient.ino b/app/testdata/libraries/Bridge_1.6.3/Bridge/examples/HttpClient/HttpClient.ino index 47a37c3f2eb..b0a6c21ffbe 100644 --- a/app/testdata/libraries/Bridge_1.6.3/Bridge/examples/HttpClient/HttpClient.ino +++ b/app/testdata/libraries/Bridge_1.6.3/Bridge/examples/HttpClient/HttpClient.ino @@ -37,7 +37,7 @@ void loop() { HttpClient client; // Make a HTTP request: - client.get("http://www.arduino.cc/asciilogo.txt"); + client.get("http://arduino.tips/asciilogo.txt"); // if there are incoming bytes available // from the server, read them and print them: diff --git a/build/shared/examples/01.Basics/Blink/Blink.ino b/app/testdata/sketches/Blink/Blink.ino similarity index 100% rename from build/shared/examples/01.Basics/Blink/Blink.ino rename to app/testdata/sketches/Blink/Blink.ino diff --git a/arduino-core/.classpath b/arduino-core/.classpath index 9bc707f562a..3f0d53aaaf6 100644 --- a/arduino-core/.classpath +++ b/arduino-core/.classpath @@ -5,10 +5,9 @@ - + - @@ -16,13 +15,14 @@ - - + + + diff --git a/arduino-core/lib/commons-io-2.6.jar b/arduino-core/lib/commons-io-2.6.jar new file mode 100644 index 00000000000..00556b119d4 Binary files /dev/null and b/arduino-core/lib/commons-io-2.6.jar differ diff --git a/arduino-core/lib/commons-lang3-3.3.2.jar b/arduino-core/lib/commons-lang3-3.3.2.jar deleted file mode 100644 index 2ce08ae99d1..00000000000 Binary files a/arduino-core/lib/commons-lang3-3.3.2.jar and /dev/null differ diff --git a/arduino-core/lib/commons-lang3-3.8.1.jar b/arduino-core/lib/commons-lang3-3.8.1.jar new file mode 100644 index 00000000000..2c65ce67d5c Binary files /dev/null and b/arduino-core/lib/commons-lang3-3.8.1.jar differ diff --git a/arduino-core/lib/jackson-module-mrbean-2.9.5.jar b/arduino-core/lib/jackson-module-mrbean-2.9.5.jar deleted file mode 100644 index dc7f5a05721..00000000000 Binary files a/arduino-core/lib/jackson-module-mrbean-2.9.5.jar and /dev/null differ diff --git a/arduino-core/lib/jmdns-3.5.3.jar b/arduino-core/lib/jmdns-3.5.3.jar deleted file mode 100644 index d4d9c67f46c..00000000000 Binary files a/arduino-core/lib/jmdns-3.5.3.jar and /dev/null differ diff --git a/arduino-core/lib/jmdns-3.5.5.jar b/arduino-core/lib/jmdns-3.5.5.jar new file mode 100644 index 00000000000..a8b65ff2ec7 Binary files /dev/null and b/arduino-core/lib/jmdns-3.5.5.jar differ diff --git a/app/lib/jssc-2.8.0-arduino1.jar b/arduino-core/lib/jssc-2.8.0-arduino4.jar old mode 100755 new mode 100644 similarity index 94% rename from app/lib/jssc-2.8.0-arduino1.jar rename to arduino-core/lib/jssc-2.8.0-arduino4.jar index 3cf257ea634..623a3833bce Binary files a/app/lib/jssc-2.8.0-arduino1.jar and b/arduino-core/lib/jssc-2.8.0-arduino4.jar differ diff --git a/arduino-core/src/cc/arduino/Compiler.java b/arduino-core/src/cc/arduino/Compiler.java index ad7a964b466..5ad4484d98d 100644 --- a/arduino-core/src/cc/arduino/Compiler.java +++ b/arduino-core/src/cc/arduino/Compiler.java @@ -101,8 +101,8 @@ public class Compiler implements MessageConsumer { tr("Couldn't determine program size: {0}"); tr("Global variables use {0} bytes ({2}%%) of dynamic memory, leaving {3} bytes for local variables. Maximum is {1} bytes."); tr("Global variables use {0} bytes of dynamic memory."); - tr("Sketch too big; see http://www.arduino.cc/en/Guide/Troubleshooting#size for tips on reducing it."); - tr("Not enough memory; see http://www.arduino.cc/en/Guide/Troubleshooting#size for tips on reducing your footprint."); + tr("Sketch too big; see https://support.arduino.cc/hc/en-us/articles/360013825179 for tips on reducing it."); + tr("Not enough memory; see https://support.arduino.cc/hc/en-us/articles/360013825179 for tips on reducing your footprint."); tr("Low memory available, stability problems may occur."); tr("An error occurred while verifying the sketch"); tr("An error occurred while verifying/uploading the sketch"); @@ -134,7 +134,7 @@ enum BuilderAction { } } - private static final Pattern ERROR_FORMAT = Pattern.compile("(.+\\.\\w+):(\\d+)(:\\d+)*:\\s*(fatal)?\\s*error:\\s*(.*)\\s*", Pattern.MULTILINE | Pattern.DOTALL); + private static final Pattern ERROR_FORMAT = Pattern.compile("(.+\\.\\w+):(\\d+)(:\\d+)*:\\s*((fatal)?\\s*error:\\s*)(.*)\\s*", Pattern.MULTILINE | Pattern.DOTALL); private final File pathToSketch; private final Sketch sketch; @@ -405,7 +405,7 @@ private void runRecipe(String recipe, PreferencesMap prefs) throws RunnerExcepti String[] cmdArray; String cmd = prefs.getOrExcept(recipe); try { - cmdArray = StringReplacer.formatAndSplit(cmd, dict, true); + cmdArray = StringReplacer.formatAndSplit(cmd, dict); } catch (Exception e) { throw new RunnerException(e); } @@ -516,16 +516,14 @@ public void message(String s) { if (pieces != null) { String msg = ""; - int errorIdx = pieces.length - 1; - String error = pieces[errorIdx]; String filename = pieces[1]; int line = PApplet.parseInt(pieces[2]); - int col; - if (errorIdx > 3) { + int col = -1; + if (pieces[3] != null) { col = PApplet.parseInt(pieces[3].substring(1)); - } else { - col = -1; } + String errorPrefix = pieces[4]; + String error = pieces[6]; if (error.trim().equals("SPI.h: No such file or directory")) { error = tr("Please import the SPI library from the Sketch > Import Library menu."); @@ -585,11 +583,8 @@ public void message(String s) { String fileName = ex.getCodeFile().getPrettyName(); int lineNum = ex.getCodeLine() + 1; int colNum = ex.getCodeColumn(); - if (colNum != -1) { - s = fileName + ":" + lineNum + ":" + colNum + ": error: " + error + msg; - } else { - s = fileName + ":" + lineNum + ": error: " + error + msg; - } + String column = (colNum != -1) ? (":" + colNum) : ""; + s = fileName + ":" + lineNum + column + ": " + errorPrefix + error + msg; } if (ex != null) { diff --git a/arduino-core/src/cc/arduino/Constants.java b/arduino-core/src/cc/arduino/Constants.java index 8d67f6ed9f1..20858ea99f3 100644 --- a/arduino-core/src/cc/arduino/Constants.java +++ b/arduino-core/src/cc/arduino/Constants.java @@ -37,6 +37,7 @@ public class Constants { public static final String PREF_REMOVE_PLACEHOLDER = "___REMOVE___"; public static final String PREF_BOARDS_MANAGER_ADDITIONAL_URLS = "boardsmanager.additional.urls"; public static final String PREF_CONTRIBUTIONS_TRUST_ALL = "contributions.trust.all"; + public static final String ALLOW_INSECURE_PACKAGES = "allow_insecure_packages"; public static final String DEFAULT_INDEX_FILE_NAME = "package_index.json"; public static final String BUNDLED_INDEX_FILE_NAME = "package_index_bundled.json"; @@ -57,10 +58,8 @@ public class Constants { public static final String PREF_PROXY_PAC_URL = "proxy.pac.url"; public static final String PREF_PROXY_MANUAL_HOSTNAME = "proxy.manual.hostname"; public static final String PREF_PROXY_MANUAL_PORT = "proxy.manual.port"; - public static final String PREF_PROXY_MANUAL_USERNAME = "proxy.manual.username"; - public static final String PREF_PROXY_MANUAL_PASSWORD = "proxy.manual.password"; - public static final String PREF_PROXY_AUTO_USERNAME = "proxy.manual.username"; - public static final String PREF_PROXY_AUTO_PASSWORD = "proxy.manual.password"; + public static final String PREF_PROXY_USERNAME = "proxy.manual.username"; + public static final String PREF_PROXY_PASSWORD = "proxy.manual.password"; public static final String PACKAGE_INDEX_URL; public static final String LIBRARY_INDEX_URL; @@ -74,7 +73,7 @@ public class Constants { if (extenalPackageIndexUrl != null && !"".equals(extenalPackageIndexUrl)) { PACKAGE_INDEX_URL = extenalPackageIndexUrl; } else { - PACKAGE_INDEX_URL = "http://downloads.arduino.cc/packages/package_index.json"; + PACKAGE_INDEX_URL = "https://downloads.arduino.cc/packages/package_index.json"; } String externalLibraryIndexUrl = System.getProperty("LIBRARY_INDEX_URL"); @@ -87,8 +86,8 @@ public class Constants { LIBRARY_INDEX_URL_GZ = ""; } } else { - LIBRARY_INDEX_URL = "http://downloads.arduino.cc/libraries/library_index.json"; - LIBRARY_INDEX_URL_GZ = "http://downloads.arduino.cc/libraries/library_index.json.gz"; + LIBRARY_INDEX_URL = "https://downloads.arduino.cc/libraries/library_index.json"; + LIBRARY_INDEX_URL_GZ = "https://downloads.arduino.cc/libraries/library_index.json.gz"; } } diff --git a/arduino-core/src/cc/arduino/UploaderUtils.java b/arduino-core/src/cc/arduino/UploaderUtils.java index ec27b496148..875f41d7676 100644 --- a/arduino-core/src/cc/arduino/UploaderUtils.java +++ b/arduino-core/src/cc/arduino/UploaderUtils.java @@ -35,7 +35,7 @@ import processing.app.BaseNoGui; import processing.app.PreferencesData; import processing.app.Sketch; -import processing.app.debug.TargetPlatform; +import processing.app.debug.TargetBoard; import java.util.LinkedList; import java.util.List; @@ -45,15 +45,14 @@ public class UploaderUtils { public Uploader getUploaderByPreferences(boolean noUploadPort) { - TargetPlatform target = BaseNoGui.getTargetPlatform(); - String board = PreferencesData.get("board"); - BoardPort boardPort = null; if (!noUploadPort) { - boardPort = BaseNoGui.getDiscoveryManager().find(PreferencesData.get("serial.port")); + String port = PreferencesData.get("serial.port"); + boardPort = BaseNoGui.getDiscoveryManager().find(port); } - return new UploaderFactory().newUploader(target.getBoards().get(board), boardPort, noUploadPort); + TargetBoard board = BaseNoGui.getTargetBoard(); + return new UploaderFactory().newUploader(board, boardPort, noUploadPort); } public boolean upload(Sketch data, Uploader uploader, String suggestedClassName, boolean usingProgrammer, boolean noUploadPort, List warningsAccumulator) throws Exception { diff --git a/arduino-core/src/cc/arduino/contributions/DownloadableContribution.java b/arduino-core/src/cc/arduino/contributions/DownloadableContribution.java index 531ad5b3dc9..87ef9cee465 100644 --- a/arduino-core/src/cc/arduino/contributions/DownloadableContribution.java +++ b/arduino-core/src/cc/arduino/contributions/DownloadableContribution.java @@ -32,6 +32,7 @@ import com.github.zafarkhaja.semver.Version; import java.io.File; +import java.util.Optional; public abstract class DownloadableContribution { @@ -66,10 +67,10 @@ public void setDownloadedFile(File downloadedFile) { } public String getParsedVersion() { - Version version = VersionHelper.valueOf(getVersion()); - if (version == null) { - return null; + Optional version = VersionHelper.valueOf(getVersion()); + if (version.isPresent()) { + return version.get().toString(); } - return version.toString(); + return null; } } diff --git a/arduino-core/src/cc/arduino/contributions/DownloadableContributionVersionComparator.java b/arduino-core/src/cc/arduino/contributions/DownloadableContributionVersionComparator.java index b7f9959a475..f500a9e4186 100644 --- a/arduino-core/src/cc/arduino/contributions/DownloadableContributionVersionComparator.java +++ b/arduino-core/src/cc/arduino/contributions/DownloadableContributionVersionComparator.java @@ -33,15 +33,9 @@ public class DownloadableContributionVersionComparator implements Comparator { - private final VersionComparator versionComparator; - - public DownloadableContributionVersionComparator() { - versionComparator = new VersionComparator(); - } - @Override public int compare(DownloadableContribution lib1, DownloadableContribution lib2) { - return versionComparator.compare(lib1.getParsedVersion(), lib2.getParsedVersion()); + return VersionComparator.compareTo(lib1.getParsedVersion(), lib2.getParsedVersion()); } diff --git a/arduino-core/src/cc/arduino/contributions/DownloadableContributionsDownloader.java b/arduino-core/src/cc/arduino/contributions/DownloadableContributionsDownloader.java index 3157514f876..620152abf83 100644 --- a/arduino-core/src/cc/arduino/contributions/DownloadableContributionsDownloader.java +++ b/arduino-core/src/cc/arduino/contributions/DownloadableContributionsDownloader.java @@ -30,34 +30,40 @@ package cc.arduino.contributions; import cc.arduino.utils.FileHash; +import cc.arduino.utils.MultiStepProgress; import cc.arduino.utils.Progress; import cc.arduino.utils.network.FileDownloader; +import org.apache.commons.io.FilenameUtils; +import processing.app.BaseNoGui; +import processing.app.PreferencesData; import java.io.File; import java.net.URL; -import java.nio.file.Files; -import java.nio.file.LinkOption; -import java.nio.file.Path; -import java.nio.file.Paths; +import java.nio.file.*; +import java.util.Collection; import static processing.app.I18n.format; import static processing.app.I18n.tr; public class DownloadableContributionsDownloader { - private final File stagingFolder; public DownloadableContributionsDownloader(File _stagingFolder) { stagingFolder = _stagingFolder; } - public File download(DownloadableContribution contribution, Progress progress, final String statusText, ProgressListener progressListener) throws Exception { - return download(contribution, progress, statusText, progressListener, false); + public File download(DownloadableContribution contribution, Progress progress, final String statusText, ProgressListener progressListener, boolean allowCache) throws Exception { + return download(contribution, progress, statusText, progressListener, false, allowCache); } - public File download(DownloadableContribution contribution, Progress progress, final String statusText, ProgressListener progressListener, boolean noResume) throws Exception { + public File download(DownloadableContribution contribution, Progress progress, final String statusText, ProgressListener progressListener, boolean noResume, boolean allowCache) throws Exception { URL url = new URL(contribution.getUrl()); - Path outputFile = Paths.get(stagingFolder.getAbsolutePath(), contribution.getArchiveFileName()); + // Filter out paths from file name + String filename = new File(contribution.getArchiveFileName()).getName(); + Path outputFile = Paths.get(stagingFolder.getAbsolutePath(), filename).normalize(); + if (outputFile.toFile().isDirectory()) { + throw new Exception(format("Can't download {0}: invalid filename or exinsting directory", contribution.getArchiveFileName())); + } // Ensure the existence of staging folder Files.createDirectories(stagingFolder.toPath()); @@ -70,7 +76,7 @@ public File download(DownloadableContribution contribution, Progress progress, f while (true) { // Need to download or resume downloading? if (!Files.isRegularFile(outputFile, LinkOption.NOFOLLOW_LINKS) || (Files.size(outputFile) < contribution.getSize())) { - download(url, outputFile.toFile(), progress, statusText, progressListener, noResume); + download(url, outputFile.toFile(), progress, statusText, progressListener, noResume, allowCache); downloaded = true; } @@ -116,12 +122,12 @@ private boolean hasChecksum(DownloadableContribution contribution) { return algo != null && !algo.isEmpty(); } - public void download(URL url, File tmpFile, Progress progress, String statusText, ProgressListener progressListener) throws Exception { - download(url, tmpFile, progress, statusText, progressListener, false); + public void download(URL url, File tmpFile, Progress progress, String statusText, ProgressListener progressListener, boolean allowCache) throws Exception { + download(url, tmpFile, progress, statusText, progressListener, false, allowCache); } - public void download(URL url, File tmpFile, Progress progress, String statusText, ProgressListener progressListener, boolean noResume) throws Exception { - FileDownloader downloader = new FileDownloader(url, tmpFile); + public void download(URL url, File tmpFile, Progress progress, String statusText, ProgressListener progressListener, boolean noResume, boolean allowCache) throws Exception { + final FileDownloader downloader = new FileDownloader(url, tmpFile, allowCache); downloader.addObserver((o, arg) -> { FileDownloader me = (FileDownloader) o; String msg = ""; @@ -140,4 +146,81 @@ public void download(URL url, File tmpFile, Progress progress, String statusText } } + public void downloadIndexAndSignature(MultiStepProgress progress, URL packageIndexUrl, ProgressListener progressListener, SignatureVerifier signatureVerifier) throws Exception { + // Extract the file name from the url + final String indexFileName = FilenameUtils.getName(packageIndexUrl.getPath()); + final File packageIndex = BaseNoGui.indexer.getIndexFile(indexFileName); + + final String statusText = tr("Downloading platforms index..."); + + // Create temp files + final File packageIndexTemp = File.createTempFile(indexFileName, ".tmp"); + try { + // Download package index + download(packageIndexUrl, packageIndexTemp, progress, statusText, progressListener, true, true); + final URL signatureUrl = new URL(packageIndexUrl.toString() + ".sig"); + + if (verifyDomain(packageIndexUrl)) { + if (checkSignature(progress, signatureUrl, progressListener, signatureVerifier, statusText, packageIndexTemp)) { + Files.move(packageIndexTemp.toPath(), packageIndex.toPath(), StandardCopyOption.REPLACE_EXISTING); + } else { + FileDownloader.invalidateFiles(packageIndexUrl, signatureUrl); + } + } else { + // Move the package index to the destination when the signature is not necessary + Files.move(packageIndexTemp.toPath(), packageIndex.toPath(), StandardCopyOption.REPLACE_EXISTING); + } + } catch (Exception e) { + throw e; + } finally { + // Delete useless temp file + Files.deleteIfExists(packageIndexTemp.toPath()); + } + } + + public boolean verifyDomain(URL url) { + final Collection domain = PreferencesData. + getCollection("http.signature_verify_domains"); + if (domain.size() == 0) { + // Default domain + domain.add("downloads.arduino.cc"); + } + if (domain.contains(url.getHost())) { + return true; + } else { + return false; + } + } + + public boolean checkSignature(MultiStepProgress progress, URL signatureUrl, ProgressListener progressListener, SignatureVerifier signatureVerifier, String statusText, File fileToVerify) throws Exception { + // Signature file name + final String signatureFileName = FilenameUtils.getName(signatureUrl.getPath()); + final File packageIndexSignature = BaseNoGui.indexer.getIndexFile(signatureFileName); + final File packageIndexSignatureTemp = File.createTempFile(signatureFileName, ".tmp"); + + try { + // Download signature + download(signatureUrl, packageIndexSignatureTemp, progress, statusText, progressListener, true); + + if (PreferencesData.areInsecurePackagesAllowed()) { + Files.move(packageIndexSignatureTemp.toPath(), packageIndexSignature.toPath(), StandardCopyOption.REPLACE_EXISTING); + return true; + } + + // Verify the signature before move the files + final boolean signatureVerified = signatureVerifier.isSigned(fileToVerify, packageIndexSignatureTemp); + if (signatureVerified) { + // Move if the signature is ok + Files.move(packageIndexSignatureTemp.toPath(), packageIndexSignature.toPath(), StandardCopyOption.REPLACE_EXISTING); + } else { + System.err.println(format(tr("{0} file signature verification failed. File ignored."), signatureUrl.toString())); + } + return signatureVerified; + } catch (Exception e) { + throw e; + } finally { + Files.deleteIfExists(packageIndexSignatureTemp.toPath()); + } + } + } diff --git a/arduino-core/src/cc/arduino/contributions/GZippedJsonDownloader.java b/arduino-core/src/cc/arduino/contributions/GZippedJsonDownloader.java index 6b6f3812327..8a717dcf26c 100644 --- a/arduino-core/src/cc/arduino/contributions/GZippedJsonDownloader.java +++ b/arduino-core/src/cc/arduino/contributions/GZippedJsonDownloader.java @@ -29,13 +29,16 @@ package cc.arduino.contributions; +import cc.arduino.Constants; import cc.arduino.utils.Progress; import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; import org.apache.commons.compress.compressors.gzip.GzipUtils; import org.apache.commons.compress.utils.IOUtils; +import org.apache.commons.io.FilenameUtils; import java.io.*; import java.net.URL; +import java.nio.file.Files; public class GZippedJsonDownloader { @@ -49,18 +52,22 @@ public GZippedJsonDownloader(DownloadableContributionsDownloader downloader, URL this.gzippedUrl = gzippedUrl; } - public void download(File tmpFile, Progress progress, String statusText, ProgressListener progressListener) throws Exception { + public void download(File tmpFile, Progress progress, String statusText, ProgressListener progressListener, boolean allowCache) throws Exception { + File gzipTmpFile = null; try { - File gzipTmpFile = new File(tmpFile.getParentFile(), GzipUtils.getCompressedFilename(tmpFile.getName())); + String tmpFileName = FilenameUtils.getName(new URL(Constants.LIBRARY_INDEX_URL_GZ).getPath()); + gzipTmpFile = File.createTempFile(tmpFileName, GzipUtils.getCompressedFilename(tmpFile.getName())); // remove eventual leftovers from previous downloads - if (gzipTmpFile.exists()) { - gzipTmpFile.delete(); - } - new JsonDownloader(downloader, gzippedUrl).download(gzipTmpFile, progress, statusText, progressListener); + Files.deleteIfExists(gzipTmpFile.toPath()); + + new JsonDownloader(downloader, gzippedUrl).download(gzipTmpFile, progress, statusText, progressListener, allowCache); decompress(gzipTmpFile, tmpFile); - gzipTmpFile.delete(); } catch (Exception e) { - new JsonDownloader(downloader, url).download(tmpFile, progress, statusText, progressListener); + new JsonDownloader(downloader, url).download(tmpFile, progress, statusText, progressListener, allowCache); + } finally { + if (gzipTmpFile != null) { + Files.deleteIfExists(gzipTmpFile.toPath()); + } } } diff --git a/arduino-core/src/cc/arduino/contributions/JsonDownloader.java b/arduino-core/src/cc/arduino/contributions/JsonDownloader.java index 88f9e7783f1..5b932d08064 100644 --- a/arduino-core/src/cc/arduino/contributions/JsonDownloader.java +++ b/arduino-core/src/cc/arduino/contributions/JsonDownloader.java @@ -44,9 +44,9 @@ public JsonDownloader(DownloadableContributionsDownloader downloader, URL url) { this.url = url; } - public void download(File tmpFile, Progress progress, String statusText, ProgressListener progressListener) throws Exception { + public void download(File tmpFile, Progress progress, String statusText, ProgressListener progressListener, boolean allowCache) throws Exception { try { - downloader.download(url, tmpFile, progress, statusText, progressListener); + downloader.download(url, tmpFile, progress, statusText, progressListener, allowCache); } catch (InterruptedException e) { // Download interrupted... just exit } diff --git a/arduino-core/src/cc/arduino/contributions/SignatureVerificationFailedException.java b/arduino-core/src/cc/arduino/contributions/SignatureVerificationFailedException.java deleted file mode 100644 index 77136cb46cb..00000000000 --- a/arduino-core/src/cc/arduino/contributions/SignatureVerificationFailedException.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * This file is part of Arduino. - * - * Copyright 2015 Arduino LLC (http://www.arduino.cc/) - * - * Arduino 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 of the License, 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * As a special exception, you may use this file as part of a free software - * library without restriction. Specifically, if other files instantiate - * templates or use macros or inline functions from this file, or you compile - * this file and link it with other files to produce an executable, this - * file does not by itself cause the resulting executable to be covered by - * the GNU General Public License. This exception does not however - * invalidate any other reasons why the executable file might be covered by - * the GNU General Public License. - */ - -package cc.arduino.contributions; - -import processing.app.I18n; - -import static processing.app.I18n.tr; - -@SuppressWarnings("serial") -public class SignatureVerificationFailedException extends Exception { - - public SignatureVerificationFailedException(String filename) { - super(I18n.format(tr("{0} file signature verification failed"), filename)); - } - - public SignatureVerificationFailedException(String filename, Throwable cause) { - super(I18n.format(tr("{0} file signature verification failed"), filename), cause); - } -} diff --git a/arduino-core/src/cc/arduino/contributions/SignatureVerifier.java b/arduino-core/src/cc/arduino/contributions/SignatureVerifier.java index 6e2a80626b1..a4ea7a7ba53 100644 --- a/arduino-core/src/cc/arduino/contributions/SignatureVerifier.java +++ b/arduino-core/src/cc/arduino/contributions/SignatureVerifier.java @@ -50,6 +50,15 @@ public boolean isSigned(File indexFile) { } } + public boolean isSigned(File indexFile, File signature) { + try { + return verify(indexFile, signature, new File(BaseNoGui.getContentFile("lib"), "public.gpg.key")); + } catch (Exception e) { + BaseNoGui.showWarning(e.getMessage(), e.getMessage(), e); + return false; + } + } + protected abstract boolean verify(File signedFile, File signature, File publicKey) throws IOException; } diff --git a/arduino-core/src/cc/arduino/contributions/VersionComparator.java b/arduino-core/src/cc/arduino/contributions/VersionComparator.java index ccdca994091..af6a1fdb376 100644 --- a/arduino-core/src/cc/arduino/contributions/VersionComparator.java +++ b/arduino-core/src/cc/arduino/contributions/VersionComparator.java @@ -34,41 +34,36 @@ import cc.arduino.contributions.libraries.ContributedLibrary; import java.util.Comparator; +import java.util.Optional; public class VersionComparator implements Comparator { - @Override - public int compare(String a, String b) { - // null is always less than any other value - if (a == null && b == null) - return 0; - if (a == null) - return -1; - if (b == null) + public static int compareTo(String a, String b) { + Optional versionA = VersionHelper.valueOf(a); + Optional versionB = VersionHelper.valueOf(b); + if (versionA.isPresent() && versionB.isPresent()) { + return versionA.get().compareTo(versionB.get()); + } + if (versionA.isPresent()) { return 1; + } + if (versionB.isPresent()) { + return -1; + } + return 0; + } - Version versionA = VersionHelper.valueOf(a); - Version versionB = VersionHelper.valueOf(b); - - return versionA.compareTo(versionB); + @Override + public int compare(String a, String b) { + return compareTo(a, b); } public static boolean greaterThan(String a, String b) { - // null is always less than any other value - if (a == null && b == null) { - return false; - } - if (a == null) { - return false; - } - if (b == null) { - return true; - } - - Version versionA = VersionHelper.valueOf(a); - Version versionB = VersionHelper.valueOf(b); + return compareTo(a, b) > 0; + } - return versionA.greaterThan(versionB); + public static boolean greaterThanOrEqual(String a, String b) { + return compareTo(a, b) >= 0; } public static String max(String a, String b) { @@ -79,8 +74,11 @@ public static ContributedLibrary max(ContributedLibrary a, ContributedLibrary b) return greaterThan(a, b) ? a : b; } - public static boolean greaterThan(ContributedLibrary a, - ContributedLibrary b) { + public static boolean greaterThan(ContributedLibrary a, ContributedLibrary b) { return greaterThan(a.getParsedVersion(), b.getParsedVersion()); } + + public static int compareTo(ContributedLibrary a, ContributedLibrary b) { + return compareTo(a.getParsedVersion(), b.getParsedVersion()); + } } diff --git a/arduino-core/src/cc/arduino/contributions/VersionHelper.java b/arduino-core/src/cc/arduino/contributions/VersionHelper.java index 0f108aed5a7..bead8d46ebf 100644 --- a/arduino-core/src/cc/arduino/contributions/VersionHelper.java +++ b/arduino-core/src/cc/arduino/contributions/VersionHelper.java @@ -29,13 +29,15 @@ package cc.arduino.contributions; +import java.util.Optional; + import com.github.zafarkhaja.semver.Version; public class VersionHelper { - public static Version valueOf(String ver) { + public static Optional valueOf(String ver) { if (ver == null) { - return null; + return Optional.empty(); } try { // Allow x.y-something, assuming x.y.0-something @@ -49,7 +51,7 @@ public static Version valueOf(String ver) { } String[] parts = version.split("\\."); if (parts.length >= 3) { - return Version.valueOf(ver); + return Optional.of(Version.valueOf(ver)); } if (parts.length == 2) { version += ".0"; @@ -57,11 +59,13 @@ public static Version valueOf(String ver) { if (parts.length == 1) { version += ".0.0"; } - return Version.valueOf(version + extra); + return Optional.of(Version.valueOf(version + extra)); } catch (Exception e) { - System.err.println("Invalid version found: " + ver); - return null; + return Optional.empty(); } } + public static int compare(String a, String b) { + return valueOf(a).get().compareTo(valueOf(b).get()); + } } diff --git a/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibrary.java b/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibrary.java index 3aa1198882c..603b46909b3 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibrary.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibrary.java @@ -32,40 +32,70 @@ import cc.arduino.contributions.DownloadableContribution; import processing.app.I18n; import processing.app.packages.UserLibrary; +import static processing.app.I18n.tr; import java.util.Comparator; +import java.util.ArrayList; import java.util.List; import java.util.Optional; -import static processing.app.I18n.tr; +import cc.arduino.contributions.VersionHelper; + +public class ContributedLibrary extends DownloadableContribution { + + private String url; + private String version; + private String checksum; + private long size; + private String archiveFileName; + private String name; + private String maintainer; + private String author; + private String website; + private String category; + private String licence; + private String paragraph; + private String sentence; + private ArrayList architectures; + private ArrayList types; + private ArrayList dependencies; + private ArrayList providesIncludes; + + public String getUrl() { return url; } + + public String getVersion() { return version; } + + public String getChecksum() { return checksum; } -public abstract class ContributedLibrary extends DownloadableContribution { + public long getSize() { return size; } - public abstract String getName(); + public String getArchiveFileName() { return archiveFileName; } - public abstract String getMaintainer(); + public String getName() { return name; } - public abstract String getAuthor(); + public String getMaintainer() { return maintainer; } - public abstract String getWebsite(); + public String getAuthor() { return author; } - public abstract String getCategory(); + public String getWebsite() { return website; } - public abstract void setCategory(String category); + public String getCategory() { return category; } - public abstract String getLicense(); + public void setCategory(String category) { this.category = category; } - public abstract String getParagraph(); + public String getLicense() { return licence; } - public abstract String getSentence(); + public String getParagraph() { return paragraph; } - public abstract List getArchitectures(); + public String getSentence() { return sentence; } - public abstract List getTypes(); + public List getArchitectures() { return architectures; } - public abstract List getRequires(); + public List getTypes() { return types; } - public abstract List getProvidesIncludes(); + public List getDependencies() { return dependencies; } + + public List getProvidesIncludes() { return providesIncludes; } public static final Comparator CASE_INSENSITIVE_ORDER = (o1, o2) -> o1.getName().compareToIgnoreCase(o2.getName()); @@ -145,8 +175,8 @@ public String info() { } res += "\n"; res += " requires :\n"; - if (getRequires() != null) - for (ContributedLibraryReference r : getRequires()) { + if (getDependencies() != null) + for (ContributedLibraryDependency r : getDependencies()) { res += " " + r; } res += "\n"; @@ -166,7 +196,7 @@ public boolean equals(Object obj) { String thisVersion = getParsedVersion(); String otherVersion = other.getParsedVersion(); - boolean versionEquals = (thisVersion != null && otherVersion != null + boolean versionEquals = (thisVersion != null && thisVersion.equals(otherVersion)); // Important: for legacy libs, versions are null. Two legacy libs must @@ -176,9 +206,18 @@ public boolean equals(Object obj) { String thisName = getName(); String otherName = other.getName(); - - boolean nameEquals = thisName == null || otherName == null || thisName.equals(otherName); + boolean nameEquals = thisName != null && thisName.equals(otherName); return versionEquals && nameEquals; } + + public boolean isBefore(ContributedLibrary other) { + return VersionHelper.compare(getVersion(), other.getVersion()) < 0; + } + + @Override + public int hashCode() { + String hashingData = "CONTRIBUTEDLIB" + getName() + getVersion(); + return hashingData.hashCode(); + } } diff --git a/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibraryReference.java b/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibraryDependency.java similarity index 85% rename from arduino-core/src/cc/arduino/contributions/libraries/ContributedLibraryReference.java rename to arduino-core/src/cc/arduino/contributions/libraries/ContributedLibraryDependency.java index f4edd57327f..4da5ba6f75b 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibraryReference.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/ContributedLibraryDependency.java @@ -29,16 +29,17 @@ package cc.arduino.contributions.libraries; -public abstract class ContributedLibraryReference { +public class ContributedLibraryDependency { - public abstract String getName(); + private String name; + private String version; - public abstract String getMaintainer(); + public String getName() { return name; } - public abstract String getVersion(); + public String getVersion() { return version; } @Override public String toString() { - return getName() + " " + getVersion() + " (" + getMaintainer() + ")"; + return getName() + " " + getVersion(); } } diff --git a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java index 7998525a152..02ff0475cfa 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndex.java @@ -29,6 +29,7 @@ package cc.arduino.contributions.libraries; +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashSet; @@ -37,9 +38,15 @@ import java.util.Optional; import java.util.stream.Collectors; -public abstract class LibrariesIndex { +import cc.arduino.contributions.VersionComparator; - public abstract List getLibraries(); +public class LibrariesIndex { + + private ArrayList list = new ArrayList<>(); + + public List getLibraries() { + return list; + } public List find(final String name) { return getLibraries().stream() // @@ -98,4 +105,78 @@ public Optional getInstalled(String name) { ContributedLibraryReleases rel = new ContributedLibraryReleases(find(name)); return rel.getInstalled(); } + + public List resolveDependeciesOf(ContributedLibrary library) { + List solution = new ArrayList<>(); + solution.add(library); + if (resolveDependeciesOf(solution, library)) { + return solution; + } else { + return null; + } + } + + public boolean resolveDependeciesOf(List solution, + ContributedLibrary library) { + List requirements = library.getDependencies(); + if (requirements == null) { + // No deps for this library, great! + return true; + } + + for (ContributedLibraryDependency dep : requirements) { + + // If the current solution already contains this dependency, skip over + boolean alreadyInSolution = solution.stream() + .anyMatch(l -> l.getName().equals(dep.getName())); + if (alreadyInSolution) + continue; + + // Generate possible matching dependencies + List possibleDeps = findMatchingDependencies(dep); + + // If there are no dependencies available add as "missing" lib + if (possibleDeps.isEmpty()) { + solution.add(new UnavailableContributedLibrary(dep)); + continue; + } + + // Pick the installed version if available + ContributedLibrary selected; + Optional installed = possibleDeps.stream() + .filter(l -> l.getInstalledLibrary().isPresent()).findAny(); + if (installed.isPresent()) { + selected = installed.get(); + } else { + // otherwise pick the latest version + selected = possibleDeps.stream().reduce(VersionComparator::max).get(); + } + + // Add dependency to the solution and process recursively + solution.add(selected); + if (!resolveDependeciesOf(solution, selected)) { + return false; + } + } + return true; + } + + private List findMatchingDependencies(ContributedLibraryDependency dep) { + List available = find(dep.getName()); + if (dep.getVersion() == null || dep.getVersion().isEmpty()) + return available; + + // XXX: The following part is actually never reached. The use of version + // constraints requires a much complex backtracking algorithm, the following + // is just a draft placeholder. + +// List match = available.stream() +// // TODO: add more complex version comparators (> >= < <= ~ 1.0.* 1.*...) +// .filter(candidate -> candidate.getParsedVersion() +// .equals(dep.getVersionRequired())) +// .collect(Collectors.toList()); +// return match; + + return available; + } } diff --git a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java index e088cca845f..57460fc19e1 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java @@ -31,9 +31,11 @@ import cc.arduino.Constants; import cc.arduino.contributions.packages.ContributedPlatform; + +import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.module.mrbean.MrBeanModule; import org.apache.commons.compress.utils.IOUtils; import processing.app.BaseNoGui; import processing.app.I18n; @@ -54,6 +56,7 @@ import java.util.List; import java.util.Optional; +import static processing.app.I18n.format; import static processing.app.I18n.tr; public class LibrariesIndexer { @@ -72,11 +75,14 @@ public LibrariesIndexer(File preferencesFolder) { } public void parseIndex() throws IOException { + index = new LibrariesIndex(); // Fallback + if (!indexFile.exists()) { - index = new EmptyLibrariesIndex(); - } else { - parseIndex(indexFile); + return; } + + parseIndex(indexFile); + // TODO: resolve libraries inner references } @@ -85,7 +91,6 @@ private void parseIndex(File file) throws IOException { try { indexIn = new FileInputStream(file); ObjectMapper mapper = new ObjectMapper(); - mapper.registerModule(new MrBeanModule()); mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); mapper.configure(DeserializationFeature.EAGER_DESERIALIZER_FETCH, true); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); @@ -97,15 +102,23 @@ private void parseIndex(File file) throws IOException { .forEach(library -> library.setCategory("Uncategorized")); index = newIndex; + } catch (JsonParseException | JsonMappingException e) { + System.err.println( + format(tr("Error parsing libraries index: {0}\nTry to open the Library Manager to update the libraries index."), + e.getMessage())); } catch (Exception e) { - System.err.println("Error parsing library.index:" + e.getMessage()); + System.err.println(format(tr("Error reading libraries index: {0}"), e.getMessage())); } finally { IOUtils.closeQuietly(indexIn); } } public void setLibrariesFolders(List folders) { - librariesFolders = folders; + this.librariesFolders = folders; + } + + public void setLibrariesFoldersAndRescan(List folders) { + setLibrariesFolders(folders); rescanLibraries(); } @@ -178,10 +191,10 @@ private void scanInstalledLibraries(UserLibraryFolder folderDesc) { badLibNotified.add(subfolderName); String mess = I18n.format(tr("The library \"{0}\" cannot be used.\n" - + "Library names must contain only basic letters and numbers.\n" - + "(ASCII only and no spaces, and it cannot start with a number)"), + + "Library folder names must start with a letter or number, followed by letters,\n" + + "numbers, dashes, dots and underscores. Maximum length is 63 characters."), subfolderName); - BaseNoGui.showMessage(tr("Ignoring bad library name"), mess); + BaseNoGui.showMessage(tr("Ignoring library with bad name"), mess); } continue; } @@ -203,7 +216,7 @@ private void scanLibrary(UserLibraryFolder folderDesc) throws IOException { LegacyUserLibrary lib = LegacyUserLibrary.create(folderDesc); String[] headers = BaseNoGui.headerListFromIncludePath(lib.getSrcFolder()); if (headers.length == 0) { - throw new IOException(lib.getSrcFolder().getAbsolutePath()); + throw new IOException(format(tr("no headers files (.h) found in {0}"), lib.getSrcFolder())); } addToInstalledLibraries(lib); return; @@ -213,7 +226,7 @@ private void scanLibrary(UserLibraryFolder folderDesc) throws IOException { UserLibrary lib = UserLibrary.create(folderDesc); String[] headers = BaseNoGui.headerListFromIncludePath(lib.getSrcFolder()); if (headers.length == 0) { - throw new IOException(lib.getSrcFolder().getAbsolutePath()); + throw new IOException(format(tr("no headers files (.h) found in {0}"), lib.getSrcFolder())); } addToInstalledLibraries(lib); diff --git a/arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java b/arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java index f06cc736bbf..64a15e7b2b3 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java @@ -31,10 +31,13 @@ import cc.arduino.Constants; import cc.arduino.contributions.DownloadableContributionsDownloader; +import cc.arduino.contributions.GPGDetachedSignatureVerifier; import cc.arduino.contributions.GZippedJsonDownloader; import cc.arduino.contributions.ProgressListener; import cc.arduino.utils.ArchiveExtractor; import cc.arduino.utils.MultiStepProgress; +import cc.arduino.utils.network.FileDownloader; +import org.apache.commons.io.FilenameUtils; import processing.app.BaseNoGui; import processing.app.I18n; import processing.app.Platform; @@ -43,63 +46,111 @@ import java.io.File; import java.io.IOException; import java.net.URL; +import java.nio.file.Files; +import java.nio.file.StandardCopyOption; +import java.util.ArrayList; +import java.util.List; import java.util.Optional; import static processing.app.I18n.tr; public class LibraryInstaller { - private final Platform platform; + private final GPGDetachedSignatureVerifier signatureVerifier; - public LibraryInstaller(Platform platform) { + public LibraryInstaller(Platform platform, GPGDetachedSignatureVerifier signatureVerifier) { this.platform = platform; + this.signatureVerifier = signatureVerifier; } public synchronized void updateIndex(ProgressListener progressListener) throws Exception { - final MultiStepProgress progress = new MultiStepProgress(2); + final MultiStepProgress progress = new MultiStepProgress(3); DownloadableContributionsDownloader downloader = new DownloadableContributionsDownloader(BaseNoGui.librariesIndexer.getStagingFolder()); // Step 1: Download index File outputFile = BaseNoGui.librariesIndexer.getIndexFile(); - File tmpFile = new File(outputFile.getAbsolutePath() + ".tmp"); + // Create temp files + String signatureFileName = FilenameUtils.getName(new URL(Constants.LIBRARY_INDEX_URL).getPath()); + File libraryIndexTemp = File.createTempFile(signatureFileName, ".tmp"); + final URL libraryURL = new URL(Constants.LIBRARY_INDEX_URL); + final URL libraryGzURL = new URL(Constants.LIBRARY_INDEX_URL_GZ); + final String statusText = tr("Downloading libraries index..."); try { - GZippedJsonDownloader gZippedJsonDownloader = new GZippedJsonDownloader(downloader, new URL(Constants.LIBRARY_INDEX_URL), new URL(Constants.LIBRARY_INDEX_URL_GZ)); - gZippedJsonDownloader.download(tmpFile, progress, tr("Downloading libraries index..."), progressListener); + GZippedJsonDownloader gZippedJsonDownloader = new GZippedJsonDownloader(downloader, libraryURL, libraryGzURL); + gZippedJsonDownloader.download(libraryIndexTemp, progress, statusText, progressListener, true); } catch (InterruptedException e) { // Download interrupted... just exit return; } progress.stepDone(); - // TODO: Check downloaded index + URL signatureUrl = new URL(libraryURL.toString() + ".sig"); + if (downloader.verifyDomain(signatureUrl)) { + if (downloader.checkSignature(progress, signatureUrl, progressListener, signatureVerifier, statusText, libraryIndexTemp)) { + // Replace old index with the updated one + if (libraryIndexTemp.length() > 0) { + Files.move(libraryIndexTemp.toPath(), outputFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + } + } else { + FileDownloader.invalidateFiles(libraryGzURL, libraryURL, signatureUrl); + } + } - // Replace old index with the updated one - if (outputFile.exists()) - outputFile.delete(); - if (!tmpFile.renameTo(outputFile)) - throw new Exception(tr("An error occurred while updating libraries index!")); + // Step 2: Parse index + BaseNoGui.librariesIndexer.parseIndex(); - // Step 2: Rescan index + // Step 3: Rescan index + rescanLibraryIndex(progress, progressListener); + + } + + public void install(ContributedLibrary lib, ProgressListener progressListener) throws Exception { + ArrayList libs = new ArrayList<>(); + libs.add(lib); + install(libs, progressListener); + } + + public synchronized void install(List libs, ProgressListener progressListener) throws Exception { + MultiStepProgress progress = new MultiStepProgress(3 * libs.size() + 1); + + for (ContributedLibrary lib : libs) { + // Do install library (3 steps) + performInstall(lib, progressListener, progress); + } + + // Rescan index (1 step) rescanLibraryIndex(progress, progressListener); } - public synchronized void install(ContributedLibrary lib, Optional mayReplacedLib, ProgressListener progressListener) throws Exception { + private void performInstall(ContributedLibrary lib, ProgressListener progressListener, MultiStepProgress progress) throws Exception { if (lib.isLibraryInstalled()) { System.out.println(I18n.format(tr("Library is already installed: {0}:{1}"), lib.getName(), lib.getParsedVersion())); return; } - DownloadableContributionsDownloader downloader = new DownloadableContributionsDownloader(BaseNoGui.librariesIndexer.getStagingFolder()); + File libsFolder = BaseNoGui.getSketchbookLibrariesFolder().folder; + File destFolder = new File(libsFolder, lib.getName().replaceAll(" ", "_")); - final MultiStepProgress progress = new MultiStepProgress(3); + // Check if we are replacing an already installed lib + LibrariesIndex index = BaseNoGui.librariesIndexer.getIndex(); + Optional replacedLib = index.find(lib.getName()).stream() // + .filter(l -> l.getInstalledLibrary().isPresent()) // + .filter(l -> l.getInstalledLibrary().get().getInstalledFolder().equals(destFolder)) // + .findAny(); + if (!replacedLib.isPresent() && destFolder.exists()) { + System.out.println(I18n.format(tr("Library {0} is already installed in: {1}"), lib.getName(), destFolder)); + return; + } + DownloadableContributionsDownloader downloader = new DownloadableContributionsDownloader(BaseNoGui.librariesIndexer.getStagingFolder()); // Step 1: Download library try { - downloader.download(lib, progress, I18n.format(tr("Downloading library: {0}"), lib.getName()), progressListener); + downloader.download(lib, progress, I18n.format(tr("Downloading library: {0}"), lib.getName()), progressListener, false); } catch (InterruptedException e) { // Download interrupted... just exit return; } + progress.stepDone(); // TODO: Extract to temporary folders and move to the final destination only // once everything is successfully unpacked. If the operation fails remove @@ -108,7 +159,6 @@ public synchronized void install(ContributedLibrary lib, Optional getArchitectures() { + return new ArrayList<>(); + } + + @Override + public List getTypes() { + return new ArrayList<>(); + } + + @Override + public List getDependencies() { + return new ArrayList<>(); + } + + @Override + public String getUrl() { + return ""; + } + + @Override + public String getVersion() { + return version; + } + + @Override + public String getChecksum() { + return ""; + } + + @Override + public long getSize() { + return 0; + } + + @Override + public String getArchiveFileName() { + return ""; + } + + @Override + public String toString() { + return "!" + super.toString(); + } + + @Override + public List getProvidesIncludes() { + return new ArrayList<>(); + } +} diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributedBoard.java b/arduino-core/src/cc/arduino/contributions/packages/ContributedBoard.java index 7017ced5d10..c29110376bc 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributedBoard.java +++ b/arduino-core/src/cc/arduino/contributions/packages/ContributedBoard.java @@ -29,8 +29,9 @@ package cc.arduino.contributions.packages; -public interface ContributedBoard { +public class ContributedBoard { - String getName(); + private String name; + public String getName() { return name; } } diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributedHelp.java b/arduino-core/src/cc/arduino/contributions/packages/ContributedHelp.java index a8f998f668b..2156f5c48c9 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributedHelp.java +++ b/arduino-core/src/cc/arduino/contributions/packages/ContributedHelp.java @@ -29,8 +29,9 @@ package cc.arduino.contributions.packages; -public abstract class ContributedHelp { +public class ContributedHelp { - public abstract String getOnline(); + private String online; + public String getOnline() { return online; } } diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributedPackage.java b/arduino-core/src/cc/arduino/contributions/packages/ContributedPackage.java index 507a63be11d..8b260527ae5 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributedPackage.java +++ b/arduino-core/src/cc/arduino/contributions/packages/ContributedPackage.java @@ -29,25 +29,33 @@ package cc.arduino.contributions.packages; +import java.util.ArrayList; import java.util.List; -public abstract class ContributedPackage { +public class ContributedPackage { - public abstract String getName(); + private String name; + private String maintainer; + private String websiteURL; + private String email; + private ArrayList platforms = new ArrayList(); + private ArrayList tools = new ArrayList(); + private ContributedHelp help; + private boolean trusted; - public abstract String getMaintainer(); + public String getName() { return name; } - public abstract String getWebsiteURL(); + public String getMaintainer() { return maintainer; } - public abstract String getEmail(); + public String getWebsiteURL() { return websiteURL; } - public abstract List getPlatforms(); + public String getEmail() { return email; } - public abstract List getTools(); + public List getPlatforms() { return platforms; } - public abstract ContributedHelp getHelp(); + public List getTools() { return tools; } - private boolean trusted; + public ContributedHelp getHelp() { return help; } public ContributedPlatform findPlatform(String architecture, String version) { if (architecture == null || version == null) { diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatform.java b/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatform.java index 24222a2b4fc..6c11a4cc26b 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatform.java +++ b/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatform.java @@ -29,32 +29,67 @@ package cc.arduino.contributions.packages; -import cc.arduino.contributions.DownloadableContribution; -import com.fasterxml.jackson.annotation.JsonIgnore; - import java.io.File; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Comparator; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import com.fasterxml.jackson.annotation.JsonIgnore; -public abstract class ContributedPlatform extends DownloadableContribution { +import cc.arduino.contributions.DownloadableContribution; - public abstract String getName(); +public class ContributedPlatform extends DownloadableContribution { + + private String url; + private String version; + private long size; + private String archiveFileName; + private String name; + private String category; + private String architecture; + private String checksum; + private ArrayList toolsDependencies = new ArrayList<>(); + private ArrayList boards = new ArrayList<>(); + private ContributedHelp help; + private boolean installed; + private File installedFolder; + private boolean builtIn; + private Map resolvedToolReferences; + private ContributedPackage parentPackage; + private boolean deprecated; - public abstract String getCategory(); + @Override + public String getUrl() { return url; } - public abstract void setCategory(String category); + @Override + public String getVersion() { return version; } - public abstract String getArchitecture(); + @Override + public long getSize() { return size; } @Override - public abstract String getChecksum(); + public String getArchiveFileName() { return archiveFileName; } - public abstract List getToolsDependencies(); + public String getName() { return name; } - public abstract List getBoards(); + public String getCategory() { return category; } - public abstract ContributedHelp getHelp(); + public void setCategory(String category) { this.category = category; } - private boolean installed; + public String getArchitecture() { return architecture; } + + @Override + public String getChecksum() { return checksum; } + + public List getToolsDependencies() { return toolsDependencies; } + + public List getBoards() { return boards; } + + public ContributedHelp getHelp() { return help; } public boolean isInstalled() { return installed; @@ -64,8 +99,6 @@ public void setInstalled(boolean installed) { this.installed = installed; } - private File installedFolder; - public File getInstalledFolder() { return installedFolder; } @@ -74,8 +107,6 @@ public void setInstalledFolder(File installedFolder) { this.installedFolder = installedFolder; } - private boolean builtIn; - public boolean isBuiltIn() { return builtIn; } @@ -87,13 +118,9 @@ public void setBuiltIn(boolean builtIn) { public static final Comparator BUILTIN_AS_LAST = (x, y) -> { int px = x.isBuiltIn() ? 1 : -1; int py = y.isBuiltIn() ? 1 : -1; - return py - px; + return px - py; }; - private Map resolvedToolReferences; - - private ContributedPackage parentPackage; - public List getResolvedTools() { return new LinkedList<>(resolvedToolReferences.values()); } @@ -131,6 +158,14 @@ public void setParentPackage(ContributedPackage parentPackage) { this.parentPackage = parentPackage; } + public boolean isDeprecated() { + return deprecated; + } + + public void setDeprecated(boolean deprecated) { + this.deprecated = deprecated; + } + @Override public String toString() { return getParsedVersion(); diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributedTool.java b/arduino-core/src/cc/arduino/contributions/packages/ContributedTool.java index cafeb9aef84..915dc28489b 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributedTool.java +++ b/arduino-core/src/cc/arduino/contributions/packages/ContributedTool.java @@ -33,17 +33,24 @@ import processing.app.Platform; import java.io.File; +import java.util.ArrayList; import java.util.List; -public abstract class ContributedTool { +public class ContributedTool { - public abstract String getName(); + private String name; + private String version; + private ArrayList systems = new ArrayList(); + private boolean installed; + private File installedFolder; + private boolean builtIn; + private ContributedPackage contributedPackage; - public abstract String getVersion(); + public String getName() { return name; } - public abstract List getSystems(); + public String getVersion() { return version; } - private boolean installed; + public List getSystems() { return systems; } public boolean isInstalled() { return installed; @@ -53,8 +60,6 @@ public void setInstalled(boolean installed) { this.installed = installed; } - private File installedFolder; - public File getInstalledFolder() { return installedFolder; } @@ -63,8 +68,6 @@ public void setInstalledFolder(File installedFolder) { this.installedFolder = installedFolder; } - private boolean builtIn; - public boolean isBuiltIn() { return builtIn; } @@ -73,8 +76,6 @@ public void setBuiltIn(boolean builtIn) { this.builtIn = builtIn; } - private ContributedPackage contributedPackage; - public ContributedPackage getPackage() { return contributedPackage; } diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributedToolReference.java b/arduino-core/src/cc/arduino/contributions/packages/ContributedToolReference.java index 7d86f234f23..3faf0cbbd31 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributedToolReference.java +++ b/arduino-core/src/cc/arduino/contributions/packages/ContributedToolReference.java @@ -31,13 +31,17 @@ import java.util.Collection; -public abstract class ContributedToolReference { +public class ContributedToolReference { - public abstract String getName(); + private String name; + private String version; + private String packager; - public abstract String getVersion(); + public String getName() { return name; } - public abstract String getPackager(); + public String getVersion() { return version; } + + public String getPackager() { return packager; } public ContributedTool resolve(Collection packages) { for (ContributedPackage pack : packages) { diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java b/arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java index c75d1352a8c..1540ce54c40 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java +++ b/arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java @@ -62,7 +62,6 @@ import static processing.app.I18n.tr; public class ContributionInstaller { - private final Platform platform; private final SignatureVerifier signatureVerifier; @@ -98,7 +97,7 @@ public synchronized List install(ContributedPlatform contributedPlatform // Download all try { // Download platform - downloader.download(contributedPlatform, progress, tr("Downloading boards definitions."), progressListener); + downloader.download(contributedPlatform, progress, tr("Downloading boards definitions."), progressListener, false); progress.stepDone(); // Download tools @@ -106,7 +105,7 @@ public synchronized List install(ContributedPlatform contributedPlatform for (ContributedTool tool : tools) { String msg = format(tr("Downloading tools ({0}/{1})."), i, tools.size()); i++; - downloader.download(tool.getDownloadableContribution(platform), progress, msg, progressListener); + downloader.download(tool.getDownloadableContribution(platform), progress, msg, progressListener, false); progress.stepDone(); } } catch (InterruptedException e) { @@ -122,10 +121,10 @@ public synchronized List install(ContributedPlatform contributedPlatform // all the temporary folders and abort installation. List> resolvedToolReferences = contributedPlatform - .getResolvedToolReferences().entrySet().stream() - .filter((entry) -> !entry.getValue().isInstalled() - || entry.getValue().isBuiltIn()) - .collect(Collectors.toList()); + .getResolvedToolReferences().entrySet().stream() + .filter((entry) -> !entry.getValue().isInstalled() + || entry.getValue().isBuiltIn()) + .collect(Collectors.toList()); int i = 1; for (Map.Entry entry : resolvedToolReferences) { @@ -141,7 +140,7 @@ public synchronized List install(ContributedPlatform contributedPlatform assert toolContrib.getDownloadedFile() != null; new ArchiveExtractor(platform).extract(toolContrib.getDownloadedFile(), destFolder.toFile(), 1); try { - findAndExecutePostInstallScriptIfAny(destFolder.toFile(), contributedPlatform.getParentPackage().isTrusted(), PreferencesData.getBoolean(Constants.PREF_CONTRIBUTIONS_TRUST_ALL)); + findAndExecutePostInstallScriptIfAny(destFolder.toFile(), contributedPlatform.getParentPackage().isTrusted(), PreferencesData.areInsecurePackagesAllowed()); } catch (IOException e) { errors.add(tr("Error running post install script")); } @@ -160,7 +159,7 @@ public synchronized List install(ContributedPlatform contributedPlatform contributedPlatform.setInstalled(true); contributedPlatform.setInstalledFolder(destFolder); try { - findAndExecutePostInstallScriptIfAny(destFolder, contributedPlatform.getParentPackage().isTrusted(), PreferencesData.getBoolean(Constants.PREF_CONTRIBUTIONS_TRUST_ALL)); + findAndExecutePostInstallScriptIfAny(destFolder, contributedPlatform.getParentPackage().isTrusted(), PreferencesData.areInsecurePackagesAllowed()); } catch (IOException e) { e.printStackTrace(); errors.add(tr("Error running post install script")); @@ -240,7 +239,7 @@ public synchronized List remove(ContributedPlatform contributedPlatform) } List errors = new LinkedList<>(); try { - findAndExecutePreUninstallScriptIfAny(contributedPlatform.getInstalledFolder(), contributedPlatform.getParentPackage().isTrusted(), PreferencesData.getBoolean(Constants.PREF_CONTRIBUTIONS_TRUST_ALL)); + findAndExecutePreUninstallScriptIfAny(contributedPlatform.getInstalledFolder(), contributedPlatform.getParentPackage().isTrusted(), PreferencesData.areInsecurePackagesAllowed()); } catch (IOException e) { errors.add(tr("Error running post install script")); } @@ -278,76 +277,27 @@ public synchronized List remove(ContributedPlatform contributedPlatform) return errors; } - public synchronized List updateIndex(ProgressListener progressListener) throws Exception { + public synchronized void updateIndex(ProgressListener progressListener) { MultiStepProgress progress = new MultiStepProgress(1); - List downloadedPackageIndexFilesAccumulator = new LinkedList<>(); - downloadIndexAndSignature(progress, downloadedPackageIndexFilesAccumulator, Constants.PACKAGE_INDEX_URL, progressListener); + final DownloadableContributionsDownloader downloader = new DownloadableContributionsDownloader(BaseNoGui.indexer.getStagingFolder()); - Set packageIndexURLs = new HashSet<>(); - String additionalURLs = PreferencesData.get(Constants.PREF_BOARDS_MANAGER_ADDITIONAL_URLS, ""); - if (!"".equals(additionalURLs)) { - packageIndexURLs.addAll(Arrays.asList(additionalURLs.split(","))); - } + final Set packageIndexURLs = new HashSet<>( + PreferencesData.getCollection(Constants.PREF_BOARDS_MANAGER_ADDITIONAL_URLS) + ); + packageIndexURLs.add(Constants.PACKAGE_INDEX_URL); - for (String packageIndexURL : packageIndexURLs) { + for (String packageIndexURLString : packageIndexURLs) { try { - downloadIndexAndSignature(progress, downloadedPackageIndexFilesAccumulator, packageIndexURL, progressListener); + // Extract the file name from the URL + final URL packageIndexURL = new URL(packageIndexURLString); + + downloader.downloadIndexAndSignature(progress, packageIndexURL, progressListener, signatureVerifier); } catch (Exception e) { System.err.println(e.getMessage()); } } progress.stepDone(); - - return downloadedPackageIndexFilesAccumulator; - } - - private void downloadIndexAndSignature(MultiStepProgress progress, List downloadedPackagedIndexFilesAccumulator, String packageIndexUrl, ProgressListener progressListener) throws Exception { - File packageIndex = download(progress, packageIndexUrl, progressListener); - downloadedPackagedIndexFilesAccumulator.add(packageIndex.getName()); - try { - File packageIndexSignature = download(progress, packageIndexUrl + ".sig", progressListener); - boolean signatureVerified = signatureVerifier.isSigned(packageIndex); - if (signatureVerified) { - downloadedPackagedIndexFilesAccumulator.add(packageIndexSignature.getName()); - } else { - downloadedPackagedIndexFilesAccumulator.remove(packageIndex.getName()); - Files.delete(packageIndex.toPath()); - Files.delete(packageIndexSignature.toPath()); - System.err.println(I18n.format(tr("{0} file signature verification failed. File ignored."), packageIndexUrl)); - } - } catch (Exception e) { - //ignore errors - } - } - - private File download(MultiStepProgress progress, String packageIndexUrl, ProgressListener progressListener) throws Exception { - String statusText = tr("Downloading platforms index..."); - URL url = new URL(packageIndexUrl); - String[] urlPathParts = url.getFile().split("/"); - File outputFile = BaseNoGui.indexer.getIndexFile(urlPathParts[urlPathParts.length - 1]); - File tmpFile = new File(outputFile.getAbsolutePath() + ".tmp"); - DownloadableContributionsDownloader downloader = new DownloadableContributionsDownloader(BaseNoGui.indexer.getStagingFolder()); - boolean noResume = true; - downloader.download(url, tmpFile, progress, statusText, progressListener, noResume); - - Files.deleteIfExists(outputFile.toPath()); - Files.move(tmpFile.toPath(), outputFile.toPath()); - - return outputFile; - } - - public synchronized void deleteUnknownFiles(List downloadedPackageIndexFiles) throws IOException { - File preferencesFolder = BaseNoGui.indexer.getIndexFile(".").getParentFile(); - File[] additionalPackageIndexFiles = preferencesFolder.listFiles(new PackageIndexFilenameFilter(Constants.DEFAULT_INDEX_FILE_NAME)); - if (additionalPackageIndexFiles == null) { - return; - } - for (File additionalPackageIndexFile : additionalPackageIndexFiles) { - if (!downloadedPackageIndexFiles.contains(additionalPackageIndexFile.getName())) { - Files.delete(additionalPackageIndexFile.toPath()); - } - } } } diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndex.java b/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndex.java index 4ca65863939..6b86b0fb234 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndex.java +++ b/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndex.java @@ -38,9 +38,10 @@ import java.util.List; import java.util.stream.Collectors; -public abstract class ContributionsIndex { +public class ContributionsIndex { - public abstract List getPackages(); + private ArrayList packages = new ArrayList<>(); + public List getPackages() { return packages; } public ContributedPackage findPackage(String packageName) { for (ContributedPackage pack : getPackages()) { diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java b/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java index 1ec4c365faa..b0db6ca1981 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java +++ b/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java @@ -31,15 +31,14 @@ import cc.arduino.Constants; import cc.arduino.contributions.DownloadableContribution; -import cc.arduino.contributions.SignatureVerificationFailedException; import cc.arduino.contributions.SignatureVerifier; - import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.module.mrbean.MrBeanModule; import org.apache.commons.compress.utils.IOUtils; -import processing.app.I18n; +import org.apache.commons.io.FilenameUtils; + +import processing.app.BaseNoGui; import processing.app.Platform; import processing.app.PreferencesData; import processing.app.debug.TargetPackage; @@ -52,9 +51,12 @@ import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URL; import java.util.*; import java.util.stream.Collectors; +import static processing.app.I18n.format; import static processing.app.I18n.tr; import static processing.app.helpers.filefilters.OnlyDirs.ONLY_DIRS; @@ -73,7 +75,7 @@ public ContributionsIndexer(File preferencesFolder, File builtInHardwareFolder, this.builtInHardwareFolder = builtInHardwareFolder; this.platform = platform; this.signatureVerifier = signatureVerifier; - index = new EmptyContributionIndex(); + index = new ContributionsIndex(); packagesFolder = new File(preferencesFolder, "packages"); stagingFolder = new File(preferencesFolder, "staging" + File.separator + "packages"); } @@ -87,24 +89,33 @@ public void parseIndex() throws Exception { File defaultIndexFile = getIndexFile(Constants.DEFAULT_INDEX_FILE_NAME); if (defaultIndexFile.exists()) { // Check main index signature - if (!PreferencesData.getBoolean("allow_insecure_packages") && !signatureVerifier.isSigned(defaultIndexFile)) { - throw new SignatureVerificationFailedException(Constants.DEFAULT_INDEX_FILE_NAME); + if (signatureVerifier.isSigned(defaultIndexFile)) { + mergeContributions(defaultIndexFile); + } else if (PreferencesData.areInsecurePackagesAllowed()) { + System.err.println(format(tr("Warning: forced trusting untrusted contributions"))); + mergeContributions(defaultIndexFile); + } else { + BaseNoGui + .showWarning(Constants.DEFAULT_INDEX_FILE_NAME, + tr("A package index has an invalid signature and needs to be updated.\n" + + "Please open the Board Manager from the menu\n" + + "\n" // + + " Tools -> Board -> Board Manager\n" + + "\nto update it"), + null); } - - mergeContributions(defaultIndexFile); } // Set main and bundled indexes as trusted index.getPackages().forEach(pack -> pack.setTrusted(true)); // Overlay 3rd party indexes - File[] indexFiles = preferencesFolder.listFiles(new TestPackageIndexFilenameFilter(new PackageIndexFilenameFilter(Constants.DEFAULT_INDEX_FILE_NAME))); - + List indexFiles = get3rdPartyIndexFiles(); for (File indexFile : indexFiles) { try { - mergeContributions(indexFile); + mergeContributions(indexFile); } catch (JsonProcessingException e) { - System.err.println(I18n.format(tr("Skipping contributed index file {0}, parsing error occured:"), indexFile)); + System.err.println(format(tr("Skipping contributed index file {0}, parsing error occured:"), indexFile)); System.err.println(e); } } @@ -133,13 +144,41 @@ public void parseIndex() throws Exception { index.fillCategories(); } + private List get3rdPartyIndexFiles() { + List indexFiles = new ArrayList<>(); + for (String urlString : PreferencesData.getCollection(Constants.PREF_BOARDS_MANAGER_ADDITIONAL_URLS)) { + URL url; + try { + url = new URL(urlString); + String filename = FilenameUtils.getName(url.getPath()); + indexFiles.add(getIndexFile(filename)); + } catch (MalformedURLException e) { + System.err.println(format(tr("Malformed Additional Board Manager URL '{0}': {1}"), urlString, e.getMessage())); + } + } + + File[] testIndexFiles = preferencesFolder.listFiles((dir, name) -> { + if (!new File(dir, name).isFile()) + return false; + if (!name.startsWith("test_package_") || !name.endsWith("_index.json")) + return false; + return true; + }); + if (testIndexFiles == null) { + System.err.println( + format(tr("Error reading package indexes folder: {0}\n(maybe a permission problem?)"), preferencesFolder)); + } + indexFiles.addAll(Arrays.asList(testIndexFiles)); + return indexFiles; + } + private void mergeContributions(File indexFile) throws IOException { if (!indexFile.exists()) return; ContributionsIndex contributionsIndex = parseIndex(indexFile); boolean signed = signatureVerifier.isSigned(indexFile); - boolean trustall = PreferencesData.getBoolean(Constants.PREF_CONTRIBUTIONS_TRUST_ALL); + boolean trustall = PreferencesData.areInsecurePackagesAllowed(); for (ContributedPackage contributedPackage : contributionsIndex.getPackages()) { contributedPackage.setTrusted(signed || trustall); @@ -156,7 +195,7 @@ private void mergeContributions(File indexFile) throws IOException { } else { if (contributedPackage.isTrusted() || !isPackageNameProtected(contributedPackage)) { if (isPackageNameProtected(contributedPackage) && trustall) { - System.err.println(I18n.format(tr("Warning: forced trusting untrusted contributions"))); + System.err.println(format(tr("Warning: forced trusting untrusted contributions"))); } List platforms = contributedPackage.getPlatforms(); if (platforms == null) { @@ -194,7 +233,6 @@ private ContributionsIndex parseIndex(File indexFile) throws IOException { try { inputStream = new FileInputStream(indexFile); ObjectMapper mapper = new ObjectMapper(); - mapper.registerModule(new MrBeanModule()); mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true); mapper.configure(DeserializationFeature.EAGER_DESERIALIZER_FETCH, true); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); @@ -211,7 +249,7 @@ public void syncWithFilesystem() throws IOException { } private void syncBuiltInHardware() throws IOException { - if (index == null) { + if (index == null || builtInHardwareFolder == null) { return; } for (File folder : builtInHardwareFolder.listFiles(ONLY_DIRS)) { diff --git a/arduino-core/src/cc/arduino/contributions/packages/EmptyContributionIndex.java b/arduino-core/src/cc/arduino/contributions/packages/EmptyContributionIndex.java deleted file mode 100644 index 200dce3c2fe..00000000000 --- a/arduino-core/src/cc/arduino/contributions/packages/EmptyContributionIndex.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * This file is part of Arduino. - * - * Copyright 2014 Arduino LLC (http://www.arduino.cc/) - * - * Arduino 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 of the License, 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * As a special exception, you may use this file as part of a free software - * library without restriction. Specifically, if other files instantiate - * templates or use macros or inline functions from this file, or you compile - * this file and link it with other files to produce an executable, this - * file does not by itself cause the resulting executable to be covered by - * the GNU General Public License. This exception does not however - * invalidate any other reasons why the executable file might be covered by - * the GNU General Public License. - */ - -package cc.arduino.contributions.packages; - -import java.util.ArrayList; -import java.util.List; - -class EmptyContributionIndex extends ContributionsIndex { - List packs = new ArrayList<>(); - - @Override - public List getPackages() { - return packs; - } -} \ No newline at end of file diff --git a/arduino-core/src/cc/arduino/contributions/packages/HostDependentDownloadableContribution.java b/arduino-core/src/cc/arduino/contributions/packages/HostDependentDownloadableContribution.java index 9209c77fc3f..2b692a54fb8 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/HostDependentDownloadableContribution.java +++ b/arduino-core/src/cc/arduino/contributions/packages/HostDependentDownloadableContribution.java @@ -32,9 +32,26 @@ import cc.arduino.contributions.DownloadableContribution; import processing.app.Platform; -public abstract class HostDependentDownloadableContribution extends DownloadableContribution { +public class HostDependentDownloadableContribution extends DownloadableContribution { - public abstract String getHost(); + private String url; + private String version; + private String checksum; + private long size; + private String archiveFileName; + private String host; + + public String getUrl() { return url; } + + public String getVersion() { return version; } + + public String getChecksum() { return checksum; } + + public long getSize() { return size; } + + public String getArchiveFileName() { return archiveFileName; } + + public String getHost() { return host; } @Override public String toString() { @@ -60,6 +77,8 @@ public boolean isCompatible(Platform platform) { // Debian 7.9 on BBB: "arm-linux-gnueabihf" // Raspbian on PI Zero: "arm-linux-gnueabihf" return host.matches("arm.*-linux-gnueabihf"); + } else if (osArch.contains("aarch64")) { + return host.matches("aarch64.*-linux-gnu*"); } else if (osArch.contains("amd64")) { return host.matches("x86_64-.*linux-gnu"); } else { diff --git a/arduino-core/src/cc/arduino/contributions/packages/PackageIndexFilenameFilter.java b/arduino-core/src/cc/arduino/contributions/packages/PackageIndexFilenameFilter.java deleted file mode 100644 index bfc016750a5..00000000000 --- a/arduino-core/src/cc/arduino/contributions/packages/PackageIndexFilenameFilter.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * This file is part of Arduino. - * - * Copyright 2015 Arduino LLC (http://www.arduino.cc/) - * - * Arduino 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 of the License, 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * As a special exception, you may use this file as part of a free software - * library without restriction. Specifically, if other files instantiate - * templates or use macros or inline functions from this file, or you compile - * this file and link it with other files to produce an executable, this - * file does not by itself cause the resulting executable to be covered by - * the GNU General Public License. This exception does not however - * invalidate any other reasons why the executable file might be covered by - * the GNU General Public License. - */ - -package cc.arduino.contributions.packages; - -import java.io.File; -import java.io.FilenameFilter; - -public class PackageIndexFilenameFilter implements FilenameFilter { - - private final String defaultPackageIndexFileName; - - public PackageIndexFilenameFilter(String defaultPackageIndexFileName) { - this.defaultPackageIndexFileName = defaultPackageIndexFileName; - } - - @Override - public boolean accept(File file, String name) { - return new File(file, name).isFile() && !defaultPackageIndexFileName.equals(name) && name.startsWith("package_") && name.endsWith("_index.json"); - } -} diff --git a/arduino-core/src/cc/arduino/contributions/packages/TestPackageIndexFilenameFilter.java b/arduino-core/src/cc/arduino/contributions/packages/TestPackageIndexFilenameFilter.java deleted file mode 100644 index fdcd08384bb..00000000000 --- a/arduino-core/src/cc/arduino/contributions/packages/TestPackageIndexFilenameFilter.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * This file is part of Arduino. - * - * Copyright 2015 Arduino LLC (http://www.arduino.cc/) - * - * Arduino 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 of the License, 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * As a special exception, you may use this file as part of a free software - * library without restriction. Specifically, if other files instantiate - * templates or use macros or inline functions from this file, or you compile - * this file and link it with other files to produce an executable, this - * file does not by itself cause the resulting executable to be covered by - * the GNU General Public License. This exception does not however - * invalidate any other reasons why the executable file might be covered by - * the GNU General Public License. - */ - -package cc.arduino.contributions.packages; - -import java.io.File; -import java.io.FilenameFilter; - -public class TestPackageIndexFilenameFilter implements FilenameFilter { - - private final FilenameFilter parent; - - public TestPackageIndexFilenameFilter(FilenameFilter parent) { - this.parent = parent; - } - - public TestPackageIndexFilenameFilter() { - this(null); - } - - @Override - public boolean accept(File file, String name) { - boolean result = false; - if (parent != null) { - result = parent.accept(file, name); - } - result = result || (new File(file, name).isFile() && name.startsWith("test_package_") && name.endsWith("_index.json")); - return result; - } -} diff --git a/arduino-core/src/cc/arduino/net/CustomProxySelector.java b/arduino-core/src/cc/arduino/net/CustomProxySelector.java index 6bb29879e10..32a0894e89e 100644 --- a/arduino-core/src/cc/arduino/net/CustomProxySelector.java +++ b/arduino-core/src/cc/arduino/net/CustomProxySelector.java @@ -75,7 +75,7 @@ public Proxy getProxyFor(URI uri) throws IOException, ScriptException, NoSuchMet } private Proxy pacProxy(String pac, URI uri) throws IOException, ScriptException, NoSuchMethodException { - setAuthenticator(preferences.get(Constants.PREF_PROXY_AUTO_USERNAME), preferences.get(Constants.PREF_PROXY_AUTO_PASSWORD)); + setAuthenticator(preferences.get(Constants.PREF_PROXY_USERNAME), preferences.get(Constants.PREF_PROXY_PASSWORD)); URLConnection urlConnection = new URL(pac).openConnection(); urlConnection.connect(); @@ -141,7 +141,7 @@ private URL toUrl(URI uri) { } private Proxy manualProxy() { - setAuthenticator(preferences.get(Constants.PREF_PROXY_MANUAL_USERNAME), preferences.get(Constants.PREF_PROXY_MANUAL_PASSWORD)); + setAuthenticator(preferences.get(Constants.PREF_PROXY_USERNAME), preferences.get(Constants.PREF_PROXY_PASSWORD)); Proxy.Type type = Proxy.Type.valueOf(preferences.get(Constants.PREF_PROXY_MANUAL_TYPE)); return new Proxy(type, new InetSocketAddress(preferences.get(Constants.PREF_PROXY_MANUAL_HOSTNAME), Integer.valueOf(preferences.get(Constants.PREF_PROXY_MANUAL_PORT)))); } diff --git a/arduino-core/src/cc/arduino/packages/BoardPort.java b/arduino-core/src/cc/arduino/packages/BoardPort.java index 0e85ffe135d..397c0818a49 100644 --- a/arduino-core/src/cc/arduino/packages/BoardPort.java +++ b/arduino-core/src/cc/arduino/packages/BoardPort.java @@ -29,22 +29,36 @@ package cc.arduino.packages; +import processing.app.BaseNoGui; +import processing.app.debug.TargetBoard; +import processing.app.debug.TargetPackage; +import processing.app.debug.TargetPlatform; import processing.app.helpers.PreferencesMap; public class BoardPort { - private String address; - private String protocol; + private String address; // unique name for this port, used by Preferences + private String protocol; // how to communicate, used for Ports menu sections + private String protocolLabel; // protocol extended name to display on GUI private String boardName; - private String vid; - private String pid; - private String iserial; - private String label; - private final PreferencesMap prefs; - private boolean online; + private String label; // friendly name shown in Ports menu + private final PreferencesMap identificationPrefs; // data to match with boards.txt + private final PreferencesMap prefs; // "vendorId", "productId", "serialNumber" + private boolean online; // used by SerialBoardsLister (during upload??) public BoardPort() { this.prefs = new PreferencesMap(); + this.identificationPrefs = new PreferencesMap(); + } + + public BoardPort(BoardPort bp) { + prefs = new PreferencesMap(bp.prefs); + identificationPrefs = new PreferencesMap(bp.identificationPrefs); + address = bp.address; + protocol = bp.protocol; + boardName = bp.boardName; + label = bp.label; + online = bp.online; } public String getAddress() { @@ -63,6 +77,14 @@ public void setProtocol(String protocol) { this.protocol = protocol; } + public String getProtocolLabel() { + return protocolLabel; + } + + public void setProtocolLabel(String protocolLabel) { + this.protocolLabel = protocolLabel; + } + public String getBoardName() { return boardName; } @@ -75,6 +97,10 @@ public PreferencesMap getPrefs() { return prefs; } + public PreferencesMap getIdentificationPrefs() { + return identificationPrefs; + } + public void setLabel(String label) { this.label = label; } @@ -91,28 +117,80 @@ public boolean isOnline() { return online; } - public void setVIDPID(String vid, String pid) { - this.vid = vid; - this.pid = pid; - } - - public String getVID() { - return vid; - } - - public String getPID() { - return pid; - } - - public void setISerial(String iserial) { - this.iserial = iserial; - } - public String getISerial() { - return iserial; - } - @Override public String toString() { - return this.address+"_"+this.vid+"_"+this.pid; + return this.address; + } + + public String toCompleteString() { + return this.address + "_" + this.getPrefs().get("vid") + "_" + this.getPrefs().get("pid"); + } + + // Search for the board which matches identificationPrefs. + // If found, boardName is set to the name from boards.txt + // and the board is returned. If not found, null is returned. + public TargetBoard searchMatchingBoard() { + if (identificationPrefs == null || identificationPrefs.isEmpty()) return null; + for (TargetPackage targetPackage : BaseNoGui.packages.values()) { + for (TargetPlatform targetPlatform : targetPackage.getPlatforms().values()) { + for (TargetBoard board : targetPlatform.getBoards().values()) { + if (matchesBoard(board)) { + setBoardName(board.getName()); + return board; + } + } + } + } + return null; + } + + public boolean matchesBoard(TargetBoard board) { + PreferencesMap identificationProps = getIdentificationPrefs(); + PreferencesMap boardProps = board.getPreferences(); + + String wildMatcher = identificationProps.get("."); + if (wildMatcher != null) { + if (wildMatcher.equals(board.getId())) { + return true; + } + if (wildMatcher.equals(board.getFQBN())) { + return true; + } + } + + // Identification properties are defined in boards.txt with a ".N" suffix + // for example: + // + // uno.name=Arduino/Genuino Uno + // uno.vid.0=0x2341 + // uno.pid.0=0x0043 + // uno.vid.1=0x2341 + // uno.pid.1=0x0001 + // uno.vid.2=0x2A03 + // uno.pid.2=0x0043 + // uno.vid.3=0x2341 + // uno.pid.3=0x0243 + // + // so we must search starting from suffix ".0" and increasing until we + // found a match or the board has no more identification properties defined + + for (int suffix = 0;; suffix++) { + boolean found = true; + for (String prop : identificationProps.keySet()) { + String value = identificationProps.get(prop); + prop += "." + suffix; + if (!boardProps.containsKey(prop)) { + return false; + } + if (!value.equalsIgnoreCase(boardProps.get(prop))) { + found = false; + break; + } + } + if (found) { + return true; + } + } } + } diff --git a/arduino-core/src/cc/arduino/packages/DiscoveryManager.java b/arduino-core/src/cc/arduino/packages/DiscoveryManager.java index b1ec50d85c4..21876ffc47e 100644 --- a/arduino-core/src/cc/arduino/packages/DiscoveryManager.java +++ b/arduino-core/src/cc/arduino/packages/DiscoveryManager.java @@ -29,13 +29,22 @@ package cc.arduino.packages; -import cc.arduino.packages.discoverers.NetworkDiscovery; -import cc.arduino.packages.discoverers.SerialDiscovery; +import static processing.app.I18n.format; +import static processing.app.I18n.tr; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.io.File; -import static processing.app.I18n.tr; +import cc.arduino.packages.discoverers.PluggableDiscovery; +import cc.arduino.packages.discoverers.serial.SerialDiscovery; +import cc.arduino.packages.discoverers.NetworkDiscovery; +import processing.app.PreferencesData; +import processing.app.debug.TargetPackage; +import processing.app.debug.TargetPlatform; +import processing.app.helpers.PreferencesMap; +import processing.app.helpers.StringReplacer; public class DiscoveryManager { @@ -43,17 +52,57 @@ public class DiscoveryManager { private final SerialDiscovery serialDiscoverer = new SerialDiscovery(); private final NetworkDiscovery networkDiscoverer = new NetworkDiscovery(); - public DiscoveryManager() { +// private final Map packages; + + public DiscoveryManager(Map packages) { +// this.packages = packages; + discoverers = new ArrayList<>(); discoverers.add(serialDiscoverer); discoverers.add(networkDiscoverer); + // Search for discoveries in installed packages + for (TargetPackage targetPackage : packages.values()) { + for (TargetPlatform platform: targetPackage.getPlatforms().values()) { + //System.out.println("installed: "+platform); + PreferencesMap prefs = platform.getPreferences().subTree("discovery"); + PreferencesMap pathPrefs = new PreferencesMap(); + File platformFolder = platform.getFolder(); + pathPrefs.put("runtime.platform.path", platformFolder.getAbsolutePath()); + pathPrefs.put("runtime.hardware.path", platformFolder.getParentFile().getAbsolutePath()); + for (String discoveryName : prefs.firstLevelMap().keySet()) { + PreferencesMap discoveryPrefs = prefs.subTree(discoveryName); + + String pattern = discoveryPrefs.get("pattern"); + if (pattern == null) { + System.out.println(format(tr("No recipes defined for discovery '{0}'"),discoveryName)); + continue; + } + try { + if (PreferencesData.getBoolean("discovery.debug")) { + System.out.println("found discovery: " + discoveryName + " -> " + pattern); + System.out.println("with pathnames -> " + pathPrefs); + System.out.println("with preferencess -> " + discoveryPrefs); + } + pattern = StringReplacer.replaceFromMapping(pattern, PreferencesData.getMap()); + pattern = StringReplacer.replaceFromMapping(pattern, pathPrefs); + String[] cmd = StringReplacer.formatAndSplit(pattern, discoveryPrefs); + discoverers.add(new PluggableDiscovery(discoveryName, cmd)); + } catch (Exception e) { + if (PreferencesData.getBoolean("discovery.debug")) { + System.out.println(format(tr("Could not start discovery '{0}': {1}"), discoveryName, e.getMessage())); + } + } + } + } + } + // Start all discoverers for (Discovery d : discoverers) { try { new Thread(d).start(); } catch (Exception e) { - System.err.println(tr("Error starting discovery method: ") + d.getClass()); + System.err.println(tr("Error starting discovery method: ") + d.toString()); e.printStackTrace(); } } diff --git a/arduino-core/src/cc/arduino/packages/Uploader.java b/arduino-core/src/cc/arduino/packages/Uploader.java index 54b5c7abd1e..0847027e2ac 100644 --- a/arduino-core/src/cc/arduino/packages/Uploader.java +++ b/arduino-core/src/cc/arduino/packages/Uploader.java @@ -37,35 +37,35 @@ import processing.app.debug.MessageConsumer; import processing.app.debug.MessageSiphon; import processing.app.helpers.ProcessUtils; -import processing.app.helpers.StringUtils; import java.io.File; -import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.concurrent.TimeUnit; +import org.apache.commons.lang3.StringUtils; + import static processing.app.I18n.tr; public abstract class Uploader implements MessageConsumer { - private static final List STRINGS_TO_SUPPRESS; - private static final List AVRDUDE_PROBLEMS; + private static final String[] STRINGS_TO_SUPPRESS; + private static final String[] AVRDUDE_PROBLEMS; static { - STRINGS_TO_SUPPRESS = Arrays.asList("Connecting to programmer:", + STRINGS_TO_SUPPRESS = new String[] {"Connecting to programmer:", "Found programmer: Id = \"CATERIN\"; type = S", "Software Version = 1.0; No Hardware Version given.", "Programmer supports auto addr increment.", "Programmer supports buffered memory access with buffersize=128 bytes.", - "Programmer supports the following devices:", "Device code: 0x44"); + "Programmer supports the following devices:", "Device code: 0x44"}; - AVRDUDE_PROBLEMS = Arrays.asList("Programmer is not responding", + AVRDUDE_PROBLEMS = new String[] {"Programmer is not responding", "programmer is not responding", "protocol error", "avrdude: ser_open(): can't open device", "avrdude: ser_drain(): read error", "avrdude: ser_send(): write error", - "avrdude: error: buffered memory access not supported."); + "avrdude: error: buffered memory access not supported."}; } protected final boolean verbose; @@ -106,7 +106,7 @@ public String getAuthorizationKey() { } // static field for last executed programmer process ID - static protected Process programmerPid; + static public Process programmerPid; protected boolean executeUploadCommand(Collection command) throws Exception { return executeUploadCommand(command.toArray(new String[command.size()])); @@ -155,7 +155,7 @@ public String getFailureMessage() { @Override public void message(String s) { // selectively suppress a bunch of avrdude output for AVR109/Caterina that should already be quelled but isn't - if (!verbose && StringUtils.stringContainsOneOf(s, STRINGS_TO_SUPPRESS)) { + if (!verbose && StringUtils.containsAny(s, STRINGS_TO_SUPPRESS)) { s = ""; } @@ -175,8 +175,8 @@ public void message(String s) { error = tr("Device is not responding, check the right serial port is selected or RESET the board right before exporting"); return; } - if (StringUtils.stringContainsOneOf(s, AVRDUDE_PROBLEMS)) { - error = tr("Problem uploading to board. See http://www.arduino.cc/en/Guide/Troubleshooting#upload for suggestions."); + if (StringUtils.containsAny(s, AVRDUDE_PROBLEMS)) { + error = tr("Problem uploading to board. See https://support.arduino.cc/hc/en-us/sections/360003198300 for suggestions."); return; } if (s.contains("Expected signature")) { diff --git a/arduino-core/src/cc/arduino/packages/discoverers/NetworkDiscovery.java b/arduino-core/src/cc/arduino/packages/discoverers/NetworkDiscovery.java index 71395669052..8619a92f0fd 100644 --- a/arduino-core/src/cc/arduino/packages/discoverers/NetworkDiscovery.java +++ b/arduino-core/src/cc/arduino/packages/discoverers/NetworkDiscovery.java @@ -113,15 +113,12 @@ public void serviceResolved(ServiceEvent serviceEvent) { String label = name + " at " + address; if (board != null && BaseNoGui.packages != null) { String boardName = BaseNoGui.getPlatform().resolveDeviceByBoardID(BaseNoGui.packages, board); - if (boardName != null) { - label += " (" + boardName + ")"; - } + port.setBoardName(boardName); } else if (description != null) { label += " (" + description + ")"; } port.setAddress(address); - port.setBoardName(name); port.setProtocol("network"); port.setLabel(label); @@ -165,7 +162,7 @@ public void stop() { @Override public List listDiscoveredBoards() { - synchronized (reachableBoardPorts) { + synchronized (reachableBoardPorts) { return getBoardPortsDiscoveredWithJmDNS(); } } @@ -179,8 +176,8 @@ public List listDiscoveredBoards(boolean complete) { public void setReachableBoardPorts(List newReachableBoardPorts) { synchronized (reachableBoardPorts) { - this.reachableBoardPorts.clear(); - this.reachableBoardPorts.addAll(newReachableBoardPorts); + reachableBoardPorts.clear(); + reachableBoardPorts.addAll(newReachableBoardPorts); } } diff --git a/arduino-core/src/cc/arduino/packages/discoverers/PluggableDiscovery.java b/arduino-core/src/cc/arduino/packages/discoverers/PluggableDiscovery.java new file mode 100644 index 00000000000..3f7202fa6a9 --- /dev/null +++ b/arduino-core/src/cc/arduino/packages/discoverers/PluggableDiscovery.java @@ -0,0 +1,293 @@ +/* + * This file is part of Arduino. + * + * Arduino 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 of the License, 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; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * As a special exception, you may use this file as part of a free software + * library without restriction. Specifically, if other files instantiate + * templates or use macros or inline functions from this file, or you compile + * this file and link it with other files to produce an executable, this + * file does not by itself cause the resulting executable to be covered by + * the GNU General Public License. This exception does not however + * invalidate any other reasons why the executable file might be covered by + * the GNU General Public License. + * + * Copyright 2018 Arduino SA (http://www.arduino.cc/) + */ + +package cc.arduino.packages.discoverers; + +import static processing.app.I18n.format; + +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.lang3.StringUtils; + +import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import cc.arduino.packages.BoardPort; +import cc.arduino.packages.Discovery; +import processing.app.PreferencesData; + +public class PluggableDiscovery implements Discovery { + + private final String discoveryName; + private final String[] cmd; + private final List portList = new ArrayList<>(); + private Process program=null; + private Thread pollingThread; + + private void debug(String x) { + if (PreferencesData.getBoolean("discovery.debug")) + System.out.println(discoveryName + ": " + x); + } + + public PluggableDiscovery(String discoveryName, String[] cmd) { + this.cmd = cmd; + this.discoveryName = discoveryName; + } + + @Override + public void run() { + // this method is started as a new thread, it will constantly listen + // to the discovery tool and keep track of the discovered ports + try { + start(); + InputStream input = program.getInputStream(); + JsonFactory factory = new JsonFactory(); + JsonParser parser = factory.createParser(input); + ObjectMapper mapper = new ObjectMapper(); + mapper.setVisibility(PropertyAccessor.ALL, Visibility.NONE); + mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + + while (program != null && program.isAlive()) { + JsonNode tree = mapper.readTree(parser); + if (tree == null) { + if (program != null && program.isAlive()) { + System.err.println(format("{0}: Invalid json message", discoveryName)); + } + break; + } + debug("Received json: " + tree); + + processJsonNode(mapper, tree); + } + debug("thread exit normally"); + } catch (InterruptedException e) { + debug("thread exit by interrupt"); + e.printStackTrace(); + } catch (Exception e) { + debug("thread exit other exception"); + e.printStackTrace(); + } + try { + stop(); + } catch (Exception e) { + } + } + + private void processJsonNode(ObjectMapper mapper, JsonNode node) { + JsonNode eventTypeNode = node.get("eventType"); + if (eventTypeNode == null) { + System.err.println(format("{0}: Invalid message, missing eventType", discoveryName)); + return; + } + + switch (eventTypeNode.asText()) { + case "error": + try { + PluggableDiscoveryMessage msg = mapper.treeToValue(node, PluggableDiscoveryMessage.class); + debug("error: " + msg.getMessage()); + if (msg.getMessage().contains("START_SYNC")) { + startPolling(); + } + } catch (JsonProcessingException e) { + e.printStackTrace(); + } + return; + + case "list": + JsonNode portsNode = node.get("ports"); + if (portsNode == null) { + System.err.println(format("{0}: Invalid message, missing ports list", discoveryName)); + return; + } + if (!portsNode.isArray()) { + System.err.println(format("{0}: Invalid message, ports list should be an array", discoveryName)); + return; + } + + synchronized (portList) { + portList.clear(); + } + portsNode.forEach(portNode -> { + BoardPort port = mapJsonNodeToBoardPort(mapper, node); + if (port != null) { + addOrUpdate(port); + } + }); + return; + + // Messages for SYNC updates + + case "add": + BoardPort addedPort = mapJsonNodeToBoardPort(mapper, node); + if (addedPort != null) { + addOrUpdate(addedPort); + } + return; + + case "remove": + BoardPort removedPort = mapJsonNodeToBoardPort(mapper, node); + if (removedPort != null) { + remove(removedPort); + } + return; + + default: + debug("Invalid event: " + eventTypeNode.asText()); + return; + } + } + + private BoardPort mapJsonNodeToBoardPort(ObjectMapper mapper, JsonNode node) { + try { + BoardPort port = mapper.treeToValue(node.get("port"), BoardPort.class); + // if no label, use address + if (port.getLabel() == null || port.getLabel().isEmpty()) { + port.setLabel(port.getAddress()); + } + port.searchMatchingBoard(); + return port; + } catch (JsonProcessingException e) { + System.err.println(format("{0}: Invalid BoardPort message", discoveryName)); + e.printStackTrace(); + return null; + } + } + + @Override + public void start() throws Exception { + try { + debug("Starting: " + StringUtils.join(cmd, " ")); + program = Runtime.getRuntime().exec(cmd); + } catch (Exception e) { + program = null; + return; + } + debug("START_SYNC"); + write("START_SYNC\n"); + pollingThread = null; + } + + private void startPolling() { + // Discovery tools not supporting START_SYNC require a periodic + // LIST command. A second thread is created to send these + // commands, while the run() thread above listens for the + // discovery tool output. + debug("START"); + write("START\n"); + Thread pollingThread = new Thread() { + public void run() { + try { + while (program != null && program.isAlive()) { + debug("LIST"); + write("LIST\n"); + sleep(2500); + } + } catch (Exception e) { + } + } + }; + pollingThread.start(); + } + + @Override + public void stop() throws Exception { + if (pollingThread != null) { + pollingThread.interrupt(); + pollingThread = null; + } + write("STOP\n"); + if (program != null) { + program.destroy(); + program = null; + } + } + + private void write(String command) { + if (program != null && program.isAlive()) { + OutputStream out = program.getOutputStream(); + try { + out.write(command.getBytes()); + out.flush(); + } catch (Exception e) { + } + } + } + + private void addOrUpdate(BoardPort port) { + String address = port.getAddress(); + if (address == null) + return; // address required for "add" & "remove" + + synchronized (portList) { + // if address already on the list, discard old info + portList.removeIf(bp -> address.equals(bp.getAddress())); + portList.add(port); + } + } + + private void remove(BoardPort port) { + String address = port.getAddress(); + if (address == null) + return; // address required for "add" & "remove" + synchronized (portList) { + portList.removeIf(bp -> address.equals(bp.getAddress())); + } + } + + @Override + public List listDiscoveredBoards() { + synchronized (portList) { + return new ArrayList<>(portList); + } + } + + @Override + public List listDiscoveredBoards(boolean complete) { + // XXX: parameter "complete "is really needed? + // should be checked on all existing discoveries + synchronized (portList) { + return new ArrayList<>(portList); + } + } + + @Override + public String toString() { + return discoveryName; + } +} diff --git a/arduino-core/src/cc/arduino/contributions/libraries/EmptyLibrariesIndex.java b/arduino-core/src/cc/arduino/packages/discoverers/PluggableDiscoveryMessage.java similarity index 77% rename from arduino-core/src/cc/arduino/contributions/libraries/EmptyLibrariesIndex.java rename to arduino-core/src/cc/arduino/packages/discoverers/PluggableDiscoveryMessage.java index f85ab46ef3c..3a377d0643f 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/EmptyLibrariesIndex.java +++ b/arduino-core/src/cc/arduino/packages/discoverers/PluggableDiscoveryMessage.java @@ -1,8 +1,6 @@ /* * This file is part of Arduino. * - * Copyright 2016 Arduino LLC (http://www.arduino.cc/) - * * Arduino 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 of the License, or @@ -25,20 +23,21 @@ * the GNU General Public License. This exception does not however * invalidate any other reasons why the executable file might be covered by * the GNU General Public License. + * + * Copyright 2018 Arduino SA (http://www.arduino.cc/) */ -package cc.arduino.contributions.libraries; - -import java.util.ArrayList; -import java.util.List; +package cc.arduino.packages.discoverers; -public class EmptyLibrariesIndex extends LibrariesIndex { +public class PluggableDiscoveryMessage { + private String eventType; // "add", "remove", "error" + private String message; // optional message, e.g. "START_SYNC not supported" - private List list = new ArrayList<>(); - - @Override - public List getLibraries() { - return list; + public String getEventType() { + return eventType; } + public String getMessage() { + return message; + } } diff --git a/arduino-core/src/cc/arduino/packages/discoverers/SerialDiscovery.java b/arduino-core/src/cc/arduino/packages/discoverers/SerialDiscovery.java deleted file mode 100644 index 4de78552c97..00000000000 --- a/arduino-core/src/cc/arduino/packages/discoverers/SerialDiscovery.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * This file is part of Arduino. - * - * Arduino 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 of the License, 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; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * As a special exception, you may use this file as part of a free software - * library without restriction. Specifically, if other files instantiate - * templates or use macros or inline functions from this file, or you compile - * this file and link it with other files to produce an executable, this - * file does not by itself cause the resulting executable to be covered by - * the GNU General Public License. This exception does not however - * invalidate any other reasons why the executable file might be covered by - * the GNU General Public License. - * - * Copyright 2013 Arduino LLC (http://www.arduino.cc/) - */ - -package cc.arduino.packages.discoverers; - -import cc.arduino.packages.BoardPort; -import cc.arduino.packages.Discovery; -import cc.arduino.packages.discoverers.serial.SerialBoardsLister; - -import java.util.LinkedList; -import java.util.List; -import java.util.Timer; - -public class SerialDiscovery implements Discovery, Runnable { - - private Timer serialBoardsListerTimer; - private final List serialBoardPorts; - private SerialBoardsLister serialBoardsLister = new SerialBoardsLister(this); - - public SerialDiscovery() { - this.serialBoardPorts = new LinkedList<>(); - } - - @Override - public List listDiscoveredBoards() { - return getSerialBoardPorts(false); - } - - @Override - public List listDiscoveredBoards(boolean complete) { - return getSerialBoardPorts(complete); - } - - private List getSerialBoardPorts(boolean complete) { - if (complete) { - return new LinkedList<>(serialBoardPorts); - } - List onlineBoardPorts = new LinkedList<>(); - for (BoardPort port : serialBoardPorts) { - if (port.isOnline() == true) { - onlineBoardPorts.add(port); - } - } - return onlineBoardPorts; - } - - public void setSerialBoardPorts(List newSerialBoardPorts) { - serialBoardPorts.clear(); - serialBoardPorts.addAll(newSerialBoardPorts); - } - - public void forceRefresh() { - serialBoardsLister.retriggerDiscovery(false); - } - - public void setUploadInProgress(boolean param) { - serialBoardsLister.uploadInProgress = param; - } - - public void pausePolling(boolean param) { serialBoardsLister.pausePolling = param;} - - @Override - public void run() { - start(); - } - - @Override - public void start() { - this.serialBoardsListerTimer = new Timer(SerialBoardsLister.class.getName()); - serialBoardsLister.start(serialBoardsListerTimer); - } - - @Override - public void stop() { - this.serialBoardsListerTimer.purge(); - } -} diff --git a/arduino-core/src/cc/arduino/packages/discoverers/serial/SerialBoardsLister.java b/arduino-core/src/cc/arduino/packages/discoverers/serial/SerialDiscovery.java similarity index 53% rename from arduino-core/src/cc/arduino/packages/discoverers/serial/SerialBoardsLister.java rename to arduino-core/src/cc/arduino/packages/discoverers/serial/SerialDiscovery.java index d055a921ab4..fc86c950ecd 100644 --- a/arduino-core/src/cc/arduino/packages/discoverers/serial/SerialBoardsLister.java +++ b/arduino-core/src/cc/arduino/packages/discoverers/serial/SerialDiscovery.java @@ -30,75 +30,121 @@ package cc.arduino.packages.discoverers.serial; import cc.arduino.packages.BoardPort; -import cc.arduino.packages.discoverers.SerialDiscovery; +import cc.arduino.packages.Discovery; import processing.app.BaseNoGui; import processing.app.Platform; import processing.app.debug.TargetBoard; +import processing.app.helpers.BoardCloudResolver; import java.util.*; -public class SerialBoardsLister extends TimerTask { +public class SerialDiscovery implements Discovery, Runnable { - private final SerialDiscovery serialDiscovery; - private final List boardPorts = new LinkedList<>(); - private List oldPorts = new LinkedList<>(); + private Timer serialBoardsListerTimer; + private final List serialBoardPorts = new ArrayList<>(); + private final List boardPorts = new ArrayList<>(); + private final List oldPorts = new ArrayList<>(); public boolean uploadInProgress = false; public boolean pausePolling = false; - private BoardPort oldUploadBoardPort = null; + private final BoardCloudResolver boardCloudResolver = new BoardCloudResolver(); - public SerialBoardsLister(SerialDiscovery serialDiscovery) { - this.serialDiscovery = serialDiscovery; + + @Override + public List listDiscoveredBoards() { + return listDiscoveredBoards(false); + } + + @Override + public synchronized List listDiscoveredBoards(boolean complete) { + if (complete) { + return new ArrayList<>(serialBoardPorts); + } + List onlineBoardPorts = new ArrayList<>(); + for (BoardPort port : serialBoardPorts) { + if (port.isOnline() == true) { + onlineBoardPorts.add(port); + } + } + return onlineBoardPorts; + } + + public synchronized void setSerialBoardPorts(List newSerialBoardPorts) { + serialBoardPorts.clear(); + serialBoardPorts.addAll(newSerialBoardPorts); } - public void start(Timer timer) { - timer.schedule(this, 0, 1000); + public void setUploadInProgress(boolean param) { + uploadInProgress = param; } - public synchronized void retriggerDiscovery(boolean polled) { + public void pausePolling(boolean param) { + pausePolling = param; + } + + @Override + public void run() { + start(); + } + + @Override + public void start() { + serialBoardsListerTimer = new Timer(SerialDiscovery.class.getName()); + serialBoardsListerTimer.schedule(new TimerTask() { + @Override + public void run() { + if (BaseNoGui.packages != null && !pausePolling) { + forceRefresh(); + } + } + }, 0, 1000); + } + + @Override + public void stop() { + serialBoardsListerTimer.cancel(); + } + + public synchronized void forceRefresh() { Platform platform = BaseNoGui.getPlatform(); if (platform == null) { return; } - if (polled && pausePolling) { - return; - } - List ports = platform.listSerials(); if (ports.equals(oldPorts)) { return; } - // if (updating) {} - // a port will disappear, another will appear - // use this information to "merge" the boards - // updating must be signaled by SerialUpload class - oldPorts.clear(); oldPorts.addAll(ports); + // set unreachable ports offline for (BoardPort board : boardPorts) { - if (ports.contains(board.toString())) { - if (board.isOnline()) { - ports.remove(ports.indexOf(board.toString())); - } - } else { - if (uploadInProgress && board.isOnline()) { - oldUploadBoardPort = board; - } + if (!ports.contains(board.toCompleteString())) { board.setOnlineStatus(false); } } + // add information for newly added ports for (String newPort : ports) { - String[] parts = newPort.split("_"); + // if port has been already discovered bring it back online + BoardPort oldBoardPort = boardPorts.stream() // + .filter(bp -> bp.toCompleteString().equalsIgnoreCase(newPort)) // + .findAny().orElse(null); + if (oldBoardPort != null) { + oldBoardPort.setOnlineStatus(true); + continue; + } + // Otherwise build a BoardPort object out of it and add it to + // to the known boardPorts + + String[] parts = newPort.split("_"); if (parts.length < 3) { // something went horribly wrong continue; } - if (parts.length > 3) { // port name with _ in it (like CP2102 on OSX) for (int i = 1; i < (parts.length-2); i++) { @@ -110,76 +156,37 @@ public synchronized void retriggerDiscovery(boolean polled) { String port = parts[0]; - Map boardData = platform.resolveDeviceByVendorIdProductId(port, BaseNoGui.packages); - - BoardPort boardPort = null; - boolean updatingInfos = false; - int i = 0; - // create new board or update existing - for (BoardPort board : boardPorts) { - if (board.toString().equals(newPort)) { - updatingInfos = true; - boardPort = boardPorts.get(i); - break; - } - i++; - } - if (!updatingInfos) { - boardPort = new BoardPort(); - } + BoardPort boardPort = new BoardPort(); + boardPorts.add(boardPort); boardPort.setAddress(port); boardPort.setProtocol("serial"); boardPort.setOnlineStatus(true); + boardPort.setLabel(port); - String label = port; - + Map boardData = platform.resolveDeviceByVendorIdProductId(port, BaseNoGui.packages); if (boardData != null) { boardPort.getPrefs().put("vid", boardData.get("vid").toString()); boardPort.getPrefs().put("pid", boardData.get("pid").toString()); - boardPort.setVIDPID(parts[1], parts[2]); String iserial = boardData.get("iserial").toString(); - if (iserial.length() >= 10) { - boardPort.getPrefs().put("iserial", iserial); - boardPort.setISerial(iserial); - } - if (uploadInProgress && oldUploadBoardPort!=null) { - oldUploadBoardPort.getPrefs().put("iserial", iserial); - oldUploadBoardPort.setISerial(iserial); - } + boardPort.getPrefs().put("iserial", iserial); TargetBoard board = (TargetBoard) boardData.get("board"); if (board != null) { String boardName = board.getName(); - if (boardName != null) { - label += " (" + boardName + ")"; - } boardPort.setBoardName(boardName); } + } else if (!parts[1].equals("0000")) { + boardPort.getPrefs().put("vid", parts[1]); + boardPort.getPrefs().put("pid", parts[2]); + // ask Cloud API to match the board with known VID/PID pair + boardCloudResolver.getBoardBy(parts[1], parts[2]); } else { - if (!parts[1].equals("0000")) { - boardPort.setVIDPID(parts[1], parts[2]); - // ask Cloud API to match the board with known VID/PID pair - platform.getBoardWithMatchingVidPidFromCloud(parts[1], parts[2]); - } else { - boardPort.setVIDPID("0000", "0000"); - boardPort.setISerial(""); - } - } - - boardPort.setLabel(label); - if (!updatingInfos) { - boardPorts.add(boardPort); + boardPort.getPrefs().put("vid", "0000"); + boardPort.getPrefs().put("pid", "0000"); + boardPort.getPrefs().put("iserial", ""); } } - serialDiscovery.setSerialBoardPorts(boardPorts); - } - - @Override - public void run() { - if (BaseNoGui.packages == null) { - return; - } - retriggerDiscovery(true); + setSerialBoardPorts(boardPorts); } } diff --git a/arduino-core/src/cc/arduino/packages/ssh/SSHConfigFileSetup.java b/arduino-core/src/cc/arduino/packages/ssh/SSHConfigFileSetup.java index 2f2e53cff44..5d4cb66cf7e 100644 --- a/arduino-core/src/cc/arduino/packages/ssh/SSHConfigFileSetup.java +++ b/arduino-core/src/cc/arduino/packages/ssh/SSHConfigFileSetup.java @@ -46,7 +46,6 @@ public SSHConfigFileSetup(SSHClientSetupChainRing nextChainRing) { @Override public Session setup(BoardPort port, JSch jSch) throws JSchException, IOException { String ipAddress = port.getAddress(); - String hostname = port.getBoardName().contains(".local") ? port.getBoardName() : port.getBoardName() + ".local"; File sshFolder = new File(System.getProperty("user.home"), ".ssh"); File sshConfig = new File(sshFolder, "config"); @@ -62,7 +61,7 @@ public Session setup(BoardPort port, JSch jSch) throws JSchException, IOExceptio jSch.setConfigRepository(new OpenSSHConfigWrapper(configRepository, ipAddress)); - return jSch.getSession(hostname); + return jSch.getSession(ipAddress); } public static class OpenSSHConfigWrapper implements ConfigRepository { diff --git a/arduino-core/src/cc/arduino/packages/uploaders/GenericNetworkUploader.java b/arduino-core/src/cc/arduino/packages/uploaders/GenericNetworkUploader.java index ab7667787dc..0cf2ba04be5 100644 --- a/arduino-core/src/cc/arduino/packages/uploaders/GenericNetworkUploader.java +++ b/arduino-core/src/cc/arduino/packages/uploaders/GenericNetworkUploader.java @@ -95,7 +95,7 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String pattern = prefs.get("upload.network_pattern"); if(pattern == null) pattern = prefs.getOrExcept("upload.pattern"); - String[] cmd = StringReplacer.formatAndSplit(pattern, prefs, true); + String[] cmd = StringReplacer.formatAndSplit(pattern, prefs); uploadResult = executeUploadCommand(cmd); } catch (RunnerException e) { throw e; diff --git a/arduino-core/src/cc/arduino/packages/uploaders/MergeSketchWithBooloader.java b/arduino-core/src/cc/arduino/packages/uploaders/MergeSketchWithBooloader.java index a6f34b265d2..bbab2bd7b09 100644 --- a/arduino-core/src/cc/arduino/packages/uploaders/MergeSketchWithBooloader.java +++ b/arduino-core/src/cc/arduino/packages/uploaders/MergeSketchWithBooloader.java @@ -29,19 +29,19 @@ package cc.arduino.packages.uploaders; -import processing.app.helpers.FileUtils; - import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; import java.util.List; public class MergeSketchWithBooloader { public void merge(File sketch, File bootloader) throws IOException { - List mergedSketch = FileUtils.readFileToListOfStrings(sketch); + List mergedSketch = Files.readAllLines(sketch.toPath(), StandardCharsets.UTF_8); mergedSketch.remove(mergedSketch.size() - 1); - mergedSketch.addAll(FileUtils.readFileToListOfStrings(bootloader)); + mergedSketch.addAll(Files.readAllLines(bootloader.toPath(), StandardCharsets.UTF_8)); FileWriter writer = null; try { diff --git a/arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java b/arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java index b3152a75539..fb0eb3ffbd5 100644 --- a/arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java +++ b/arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java @@ -44,18 +44,23 @@ import processing.app.helpers.PreferencesMap; import processing.app.helpers.PreferencesMapException; import processing.app.helpers.StringReplacer; -import processing.app.helpers.StringUtils; import java.io.File; import java.io.IOException; import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; + +import org.apache.commons.lang3.StringUtils; import static processing.app.I18n.tr; public class SSHUploader extends Uploader { - private static final List FILES_NOT_TO_COPY = Arrays.asList(".DS_Store", ".Trash", "Thumbs.db", "__MACOSX"); + private static final Set FILES_NOT_TO_COPY = + Collections.unmodifiableSet(new HashSet(Arrays.asList(".DS_Store", ".Trash", "Thumbs.db", "__MACOSX"))); private final BoardPort port; @@ -165,7 +170,7 @@ private boolean runUploadTool(SSH ssh, PreferencesMap prefs) throws Exception { } String pattern = prefs.getOrExcept("upload.pattern"); - String command = StringUtils.join(StringReplacer.formatAndSplit(pattern, prefs, true), " "); + String command = StringUtils.join(StringReplacer.formatAndSplit(pattern, prefs), " "); if (verbose) { System.out.println(command); } @@ -223,7 +228,7 @@ private void recursiveSCP(File from, SCP scp) throws IOException { } for (File file : files) { - if (!StringUtils.stringContainsOneOf(file.getName(), FILES_NOT_TO_COPY)) { + if (!FILES_NOT_TO_COPY.contains(file.getName())) { if (file.isDirectory() && file.canExecute()) { scp.startFolder(file.getName()); recursiveSCP(file, scp); diff --git a/arduino-core/src/cc/arduino/packages/uploaders/SerialUploader.java b/arduino-core/src/cc/arduino/packages/uploaders/SerialUploader.java index cd5e285c415..96ba383aceb 100644 --- a/arduino-core/src/cc/arduino/packages/uploaders/SerialUploader.java +++ b/arduino-core/src/cc/arduino/packages/uploaders/SerialUploader.java @@ -41,6 +41,7 @@ import processing.app.debug.RunnerException; import processing.app.debug.TargetPlatform; import processing.app.helpers.PreferencesMap; +import processing.app.helpers.PreferencesMapException; import processing.app.helpers.StringReplacer; import java.io.File; @@ -105,17 +106,11 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String else prefs.put("upload.verify", prefs.get("upload.params.noverify", "")); - boolean uploadResult; try { - String pattern = prefs.getOrExcept("upload.pattern"); - String[] cmd = StringReplacer.formatAndSplit(pattern, prefs, true); - uploadResult = executeUploadCommand(cmd); - } catch (Exception e) { - throw new RunnerException(e); + return runCommand("upload.pattern", prefs); } finally { BaseNoGui.getDiscoveryManager().getSerialDiscoverer().pausePolling(false); } - return uploadResult; } // need to do a little dance for Leonardo and derivatives: @@ -124,13 +119,10 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String // this wait a moment for the bootloader to enumerate. On Windows, also must // deal with the fact that the COM port number changes from bootloader to // sketch. - String t = prefs.get("upload.use_1200bps_touch"); - boolean doTouch = t != null && t.equals("true"); - - t = prefs.get("upload.wait_for_upload_port"); - boolean waitForUploadPort = (t != null) && t.equals("true"); + boolean doTouch = prefs.getBoolean("upload.use_1200bps_touch"); + boolean waitForUploadPort = prefs.getBoolean("upload.wait_for_upload_port"); - String userSelectedUploadPort = prefs.getOrExcept("serial.port"); + String userSelectedUploadPort = prefs.get("serial.port", ""); String actualUploadPort = null; if (doTouch) { @@ -180,7 +172,7 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String Thread.sleep(100); } - BoardPort boardPort = BaseNoGui.getDiscoveryManager().find(PreferencesData.get("serial.port")); + BoardPort boardPort = BaseNoGui.getDiscoveryManager().find(PreferencesData.get("serial.port", "")); try { prefs.put("serial.port.iserial", boardPort.getPrefs().getOrExcept("iserial")); } catch (Exception e) { @@ -202,20 +194,11 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String boolean uploadResult; try { - String pattern = prefs.getOrExcept("upload.pattern"); - String[] cmd = StringReplacer.formatAndSplit(pattern, prefs, true); - uploadResult = executeUploadCommand(cmd); - } catch (RunnerException e) { - throw e; - } catch (Exception e) { - throw new RunnerException(e); + uploadResult = runCommand("upload.pattern", prefs); } finally { BaseNoGui.getDiscoveryManager().getSerialDiscoverer().pausePolling(false); } - BaseNoGui.getDiscoveryManager().getSerialDiscoverer().setUploadInProgress(false); - BaseNoGui.getDiscoveryManager().getSerialDiscoverer().pausePolling(false); - String finalUploadPort = null; if (uploadResult && doTouch) { try { @@ -224,37 +207,35 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String // sketch serial port reconnects (or timeout after a few seconds if the // sketch port never comes back). Doing this saves users from accidentally // opening Serial Monitor on the soon-to-be-orphaned bootloader port. - Thread.sleep(1000); - long started = System.currentTimeMillis(); - while (System.currentTimeMillis() - started < 2000) { - List portList = Serial.list(); - if (portList.contains(userSelectedUploadPort)) { - finalUploadPort = userSelectedUploadPort; - break; - } - Thread.sleep(250); - } + + // Reuse waitForUploadPort for this task, but this time we are simply waiting + // for one port to reappear. If no port reappears before the timeout, actualUploadPort is selected + finalUploadPort = waitForUploadPort(actualUploadPort, Serial.list(), false, 2000); } - } catch (InterruptedException ex) { + } catch (RunnerException ex) { // noop } } - if (finalUploadPort == null) { - finalUploadPort = actualUploadPort; - } if (finalUploadPort == null) { finalUploadPort = userSelectedUploadPort; } BaseNoGui.selectSerialPort(finalUploadPort); + BaseNoGui.getDiscoveryManager().getSerialDiscoverer().setUploadInProgress(false); + BaseNoGui.getDiscoveryManager().getSerialDiscoverer().pausePolling(false); + return uploadResult; } private String waitForUploadPort(String uploadPort, List before) throws InterruptedException, RunnerException { + return waitForUploadPort(uploadPort, before, verbose, 10000); + } + + private String waitForUploadPort(String uploadPort, List before, boolean verbose, int timeout) throws InterruptedException, RunnerException { // Wait for a port to appear on the list int elapsed = 0; - while (elapsed < 10000) { + while (elapsed < timeout) { List now = Serial.list(); List diff = new ArrayList<>(now); diff.removeAll(before); @@ -331,21 +312,7 @@ private boolean uploadUsingProgrammer(String buildPath, String className) throws else prefs.put("program.verify", prefs.get("program.params.noverify", "")); - try { - // if (prefs.get("program.disable_flushing") == null - // || prefs.get("program.disable_flushing").toLowerCase().equals("false")) - // { - // flushSerialBuffer(); - // } - - String pattern = prefs.getOrExcept("program.pattern"); - String[] cmd = StringReplacer.formatAndSplit(pattern, prefs, true); - return executeUploadCommand(cmd); - } catch (RunnerException e) { - throw e; - } catch (Exception e) { - throw new RunnerException(e); - } + return runCommand("program.pattern", prefs); } @Override @@ -402,13 +369,27 @@ public boolean burnBootloader() throws Exception { new LoadVIDPIDSpecificPreferences().load(prefs); - String pattern = prefs.getOrExcept("erase.pattern"); - String[] cmd = StringReplacer.formatAndSplit(pattern, prefs, true); - if (!executeUploadCommand(cmd)) + if (!runCommand("erase.pattern", prefs)) return false; - pattern = prefs.getOrExcept("bootloader.pattern"); - cmd = StringReplacer.formatAndSplit(pattern, prefs, true); - return executeUploadCommand(cmd); + return runCommand("bootloader.pattern", prefs); + } + + private boolean runCommand(String patternKey, PreferencesMap prefs) throws Exception, RunnerException { + try { + String pattern = prefs.getOrExcept(patternKey); + StringReplacer.checkIfRequiredKeyIsMissingOrExcept("serial.port", pattern, prefs); + String[] cmd = StringReplacer.formatAndSplit(pattern, prefs); + return executeUploadCommand(cmd); + } catch (RunnerException e) { + throw e; + } catch (PreferencesMapException e) { + if (e.getMessage().equals("serial.port")) { + throw new SerialNotFoundException(e); + } + throw e; + } catch (Exception e) { + throw new RunnerException(e); + } } } diff --git a/arduino-core/src/cc/arduino/utils/ArchiveExtractor.java b/arduino-core/src/cc/arduino/utils/ArchiveExtractor.java index 6d1e4ba3193..c22f7da156c 100644 --- a/arduino-core/src/cc/arduino/utils/ArchiveExtractor.java +++ b/arduino-core/src/cc/arduino/utils/ArchiveExtractor.java @@ -36,6 +36,7 @@ import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream; import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream; import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; +import org.apache.commons.compress.compressors.xz.XZCompressorInputStream; import org.apache.commons.compress.utils.IOUtils; import processing.app.I18n; import processing.app.Platform; @@ -98,6 +99,8 @@ public void extract(File archiveFile, File destFolder, int stripPath, boolean ov in = new ZipArchiveInputStream(new FileInputStream(archiveFile)); } else if (archiveFile.getName().endsWith("tar.gz")) { in = new TarArchiveInputStream(new GzipCompressorInputStream(new FileInputStream(archiveFile))); + } else if (archiveFile.getName().endsWith("tar.xz")) { + in = new TarArchiveInputStream(new XZCompressorInputStream(new FileInputStream(archiveFile))); } else if (archiveFile.getName().endsWith("tar")) { in = new TarArchiveInputStream(new FileInputStream(archiveFile)); } else { diff --git a/arduino-core/src/cc/arduino/utils/network/CacheControl.java b/arduino-core/src/cc/arduino/utils/network/CacheControl.java new file mode 100644 index 00000000000..a34fde7be3b --- /dev/null +++ b/arduino-core/src/cc/arduino/utils/network/CacheControl.java @@ -0,0 +1,119 @@ +/* + * This file is part of Arduino. + * + * Copyright 2019 Arduino LLC (http://www.arduino.cc/) + * + * Arduino 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 of the License, 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; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * As a special exception, you may use this file as part of a free software + * library without restriction. Specifically, if other files instantiate + * templates or use macros or inline functions from this file, or you compile + * this file and link it with other files to produce an executable, this + * file does not by itself cause the resulting executable to be covered by + * the GNU General Public License. This exception does not however + * invalidate any other reasons why the executable file might be covered by + * the GNU General Public License. + */ + + +package cc.arduino.utils.network; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class CacheControl { + + + // see org.apache.abdera.protocol.util.CacheControlUtil + private static final Pattern PATTERN + = Pattern.compile("\\s*([\\w\\-]+)\\s*(=)?\\s*(\\-?\\d+|\\\"([^\"\\\\]*(\\\\.[^\"\\\\]*)*)+\\\")?\\s*"); + + private int maxAge = -1; + + private boolean isMustRevalidate = false; + + private boolean isNoCache = false; + + private boolean isNoStore = false; + + + public static CacheControl valueOf(String value) { + CacheControl cc = new CacheControl(); + + if (value != null) { + Matcher matcher = PATTERN.matcher(value); + while (matcher.find()) { + switch (matcher.group(1).toLowerCase()) { + case "max-age": + cc.setMaxAge(Integer.parseInt(matcher.group(3))); + break; + case "must-revalidate": + cc.setMustRevalidate(true); + break; + case "no-cache": + cc.setNoCache(true); + break; + case "no-store": + cc.setNoStore(true); + break; + default: //ignore + } + } + } + return cc; + } + + public void setMaxAge(int maxAge) { + this.maxAge = maxAge; + } + + public int getMaxAge() { + return maxAge; + } + + public boolean isMustRevalidate() { + return isMustRevalidate; + } + + public void setMustRevalidate(boolean mustRevalidate) { + isMustRevalidate = mustRevalidate; + } + + public boolean isNoCache() { + return isNoCache; + } + + public void setNoCache(boolean noCache) { + isNoCache = noCache; + } + + public boolean isNoStore() { + return isNoStore; + } + + public void setNoStore(boolean noStore) { + isNoStore = noStore; + } + + @Override + public String toString() { + return "CacheControl{" + + "maxAge=" + maxAge + + ", isMustRevalidate=" + isMustRevalidate + + ", isNoCache=" + isNoCache + + ", isNoStore=" + isNoStore + + '}'; + } +} diff --git a/arduino-core/src/cc/arduino/utils/network/FileDownloader.java b/arduino-core/src/cc/arduino/utils/network/FileDownloader.java index edf054d23e7..78c2cced8fa 100644 --- a/arduino-core/src/cc/arduino/utils/network/FileDownloader.java +++ b/arduino-core/src/cc/arduino/utils/network/FileDownloader.java @@ -29,27 +29,25 @@ package cc.arduino.utils.network; -import cc.arduino.net.CustomProxySelector; -import org.apache.commons.codec.binary.Base64; import org.apache.commons.compress.utils.IOUtils; +import processing.app.helpers.FileUtils; -import processing.app.BaseNoGui; -import processing.app.PreferencesData; - +import javax.script.ScriptException; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.net.HttpURLConnection; -import java.net.Proxy; import java.net.SocketTimeoutException; +import java.net.URISyntaxException; import java.net.URL; import java.nio.file.Files; import java.nio.file.Paths; +import java.util.Arrays; import java.util.Observable; +import java.util.Optional; public class FileDownloader extends Observable { - public enum Status { CONNECTING, // CONNECTION_TIMEOUT_ERROR, // @@ -66,17 +64,15 @@ public enum Status { private final URL downloadUrl; private final File outputFile; - private InputStream stream = null; + private final boolean allowCache; private Exception error; - private String userAgent; - - public FileDownloader(URL url, File file) { - downloadUrl = url; - outputFile = file; - downloaded = 0; - initialSize = 0; - userAgent = "ArduinoIDE/" + BaseNoGui.VERSION_NAME + " Java/" - + System.getProperty("java.version"); + + public FileDownloader(URL url, File file, boolean allowCache) { + this.downloadUrl = url; + this.outputFile = file; + this.allowCache = allowCache; + this.downloaded = 0; + this.initialSize = 0; } public long getInitialSize() { @@ -121,9 +117,6 @@ public void setStatus(Status status) { notifyObservers(); } - public void download() throws InterruptedException { - download(false); - } public void download(boolean noResume) throws InterruptedException { if ("file".equals(downloadUrl.getProtocol())) { @@ -143,72 +136,107 @@ private void saveLocalFile() { } } - private void downloadFile() throws InterruptedException { - downloadFile(false); + public static void invalidateFiles(URL... filesUrl) { + // For each file delete the file cached if exist + Arrays.stream(filesUrl).forEach(url -> { + try { + FileDownloaderCache.getFileCached(url).ifPresent(fileCached -> { + try { + fileCached.invalidateCache(); + } catch (Exception e) { + System.err.println("Error invalidating cached file " + fileCached.getLocalPath() + " that comes from " + + fileCached.getRemoteURL() + ": " + e.getMessage()); + } + }); + } catch (URISyntaxException | NoSuchMethodException | ScriptException | IOException e) { + System.err.println("Fail to get the file cached during the file invalidation" + e.getMessage()); + } + }); } private void downloadFile(boolean noResume) throws InterruptedException { - RandomAccessFile file = null; try { - // Open file and seek to the end of it - file = new RandomAccessFile(outputFile, "rw"); - initialSize = file.length(); - - if (noResume && initialSize > 0) { - // delete file and restart downloading - Files.delete(outputFile.toPath()); - initialSize = 0; - } + setStatus(Status.CONNECTING); - file.seek(initialSize); + final Optional fileCachedOpt = FileDownloaderCache.getFileCached(downloadUrl, allowCache); + if (fileCachedOpt.isPresent()) { + final FileDownloaderCache.FileCached fileCached = fileCachedOpt.get(); - setStatus(Status.CONNECTING); + final Optional fileFromCache = getFileCached(fileCached); + if (fileCached.isNotChange() && fileFromCache.isPresent()) { + // Copy the cached file in the destination file + FileUtils.copyFile(fileFromCache.get(), outputFile); + } else { + openConnectionAndFillTheFile(noResume); - Proxy proxy = new CustomProxySelector(PreferencesData.getMap()).getProxyFor(downloadUrl.toURI()); - if ("true".equals(System.getProperty("DEBUG"))) { - System.err.println("Using proxy " + proxy); + fileCached.updateCacheFile(outputFile); + } + } else { + openConnectionAndFillTheFile(noResume); } + setStatus(Status.COMPLETE); - HttpURLConnection connection = (HttpURLConnection) downloadUrl.openConnection(proxy); - connection.setRequestProperty("User-agent", userAgent); - if (downloadUrl.getUserInfo() != null) { - String auth = "Basic " + new String(new Base64().encode(downloadUrl.getUserInfo().getBytes())); - connection.setRequestProperty("Authorization", auth); - } + } catch (InterruptedException e) { + setStatus(Status.CANCELLED); + // lets InterruptedException go up to the caller + throw e; - connection.setRequestProperty("Range", "bytes=" + initialSize + "-"); - connection.setConnectTimeout(5000); - setDownloaded(0); + } catch (SocketTimeoutException e) { + setStatus(Status.CONNECTION_TIMEOUT_ERROR); + setError(e); - // Connect - connection.connect(); - int resp = connection.getResponseCode(); + } catch (Exception e) { + setStatus(Status.ERROR); + setError(e); + } + + } - if (resp == HttpURLConnection.HTTP_MOVED_PERM || resp == HttpURLConnection.HTTP_MOVED_TEMP) { - URL newUrl = new URL(connection.getHeaderField("Location")); + private Optional getFileCached(FileDownloaderCache.FileCached fileCached) { + try { + final Optional fileFromCache = fileCached.getFileFromCache(); + if (fileFromCache.isPresent()) { + return fileFromCache; + } + } catch (Exception e) { + // Cannot get the file from the cache, download a new one + } + return Optional.empty(); + } - proxy = new CustomProxySelector(PreferencesData.getMap()).getProxyFor(newUrl.toURI()); + private void openConnectionAndFillTheFile(boolean noResume) throws Exception { + initialSize = outputFile.length(); + if (noResume && initialSize > 0) { + // delete file and restart downloading + Files.deleteIfExists(outputFile.toPath()); + initialSize = 0; + } - // open the new connnection again - connection = (HttpURLConnection) newUrl.openConnection(proxy); - connection.setRequestProperty("User-agent", userAgent); - if (downloadUrl.getUserInfo() != null) { - String auth = "Basic " + new String(new Base64().encode(downloadUrl.getUserInfo().getBytes())); - connection.setRequestProperty("Authorization", auth); - } + final HttpURLConnection connection = new HttpConnectionManager(downloadUrl) + .makeConnection((c) -> setDownloaded(0)); + final int resp = connection.getResponseCode(); - connection.setRequestProperty("Range", "bytes=" + initialSize + "-"); - connection.setConnectTimeout(5000); + if (resp < 200 || resp >= 300) { + Files.deleteIfExists(outputFile.toPath()); + throw new IOException("Received invalid http status code from server: " + resp); + } - connection.connect(); - resp = connection.getResponseCode(); - } + RandomAccessFile randomAccessOutputFile = null; + try { + // Open file and seek to the end of it + randomAccessOutputFile = new RandomAccessFile(outputFile, "rw"); + randomAccessOutputFile.seek(initialSize); + readStreamCopyTo(randomAccessOutputFile, connection); + } finally { + IOUtils.closeQuietly(randomAccessOutputFile); + } - if (resp < 200 || resp >= 300) { - throw new IOException("Received invalid http status code from server: " + resp); - } + } + private void readStreamCopyTo(RandomAccessFile randomAccessOutputFile, HttpURLConnection connection) throws Exception { + InputStream stream = null; + try { // Check for valid content length. long len = connection.getContentLength(); if (len >= 0) { @@ -216,20 +244,19 @@ private void downloadFile(boolean noResume) throws InterruptedException { } setStatus(Status.DOWNLOADING); - synchronized (this) { - stream = connection.getInputStream(); - } - byte buffer[] = new byte[10240]; + stream = connection.getInputStream(); + + byte[] buffer = new byte[10240]; while (status == Status.DOWNLOADING) { int read = stream.read(buffer); if (read == -1) break; - file.write(buffer, 0, read); + randomAccessOutputFile.write(buffer, 0, read); setDownloaded(getDownloaded() + read); if (Thread.interrupted()) { - file.close(); + randomAccessOutputFile.close(); throw new InterruptedException(); } } @@ -238,26 +265,8 @@ private void downloadFile(boolean noResume) throws InterruptedException { if (getDownloaded() < getDownloadSize()) throw new Exception("Incomplete download"); } - setStatus(Status.COMPLETE); - } catch (InterruptedException e) { - setStatus(Status.CANCELLED); - // lets InterruptedException go up to the caller - throw e; - - } catch (SocketTimeoutException e) { - setStatus(Status.CONNECTION_TIMEOUT_ERROR); - setError(e); - - } catch (Exception e) { - setStatus(Status.ERROR); - setError(e); - } finally { - IOUtils.closeQuietly(file); - - synchronized (this) { - IOUtils.closeQuietly(stream); - } + IOUtils.closeQuietly(stream); } } diff --git a/arduino-core/src/cc/arduino/utils/network/FileDownloaderCache.java b/arduino-core/src/cc/arduino/utils/network/FileDownloaderCache.java new file mode 100644 index 00000000000..a529a241d0f --- /dev/null +++ b/arduino-core/src/cc/arduino/utils/network/FileDownloaderCache.java @@ -0,0 +1,399 @@ +/* + * This file is part of Arduino. + * + * Copyright 2019 Arduino LLC (http://www.arduino.cc/) + * + * Arduino 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 of the License, 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; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * As a special exception, you may use this file as part of a free software + * library without restriction. Specifically, if other files instantiate + * templates or use macros or inline functions from this file, or you compile + * this file and link it with other files to produce an executable, this + * file does not by itself cause the resulting executable to be covered by + * the GNU General Public License. This exception does not however + * invalidate any other reasons why the executable file might be covered by + * the GNU General Public License. + */ + + +package cc.arduino.utils.network; + +import cc.arduino.utils.FileHash; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.node.ObjectNode; +import processing.app.BaseNoGui; +import processing.app.PreferencesData; +import processing.app.helpers.FileUtils; + +import javax.script.ScriptException; +import java.io.File; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.ProtocolException; +import java.net.URISyntaxException; +import java.net.URL; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.security.NoSuchAlgorithmException; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.stream.Collectors; + +public class FileDownloaderCache { + private final static String CACHE_ENABLE_PREFERENCE_KEY = "cache.enable"; + private final static Map cachedFiles = Collections + .synchronizedMap(new HashMap<>()); + private final static String cacheFolder; + private static boolean enableCache; + + static { + enableCache = Boolean.valueOf(PreferencesData.get(CACHE_ENABLE_PREFERENCE_KEY, "true")); + PreferencesData.set(CACHE_ENABLE_PREFERENCE_KEY, Boolean.toString(enableCache)); + + final File settingsFolder; + settingsFolder = BaseNoGui.getSettingsFolder(); + if (settingsFolder != null) { + cacheFolder = Paths.get(settingsFolder.getPath(), "cache") + .toString(); + } else { + enableCache = false; + cacheFolder = null; + } + final Path pathCacheInfo = getCachedInfoPath(); + try { + if (Files.exists(pathCacheInfo)) { + ObjectMapper mapper = new ObjectMapper(); + final JsonNode jsonNode = mapper.readTree(pathCacheInfo.toFile()); + + // Read the files array + TypeReference> typeRef = new TypeReference>() { + }; + final List files = mapper + .readValue(mapper.treeAsTokens(jsonNode.get("files")), typeRef); + + // Update the map with the remote url as a key and the file cache info as a value + cachedFiles.putAll(Collections + .synchronizedMap(files + .stream() + .filter(FileCached::exists) + .collect(Collectors.toMap(FileCached::getRemoteURL, Function.identity())) + ) + ); + + } + } catch (Exception e) { + System.err.println("Cannot initialized the cache: " + e.getMessage()); + } + } + + public static Optional getFileCached(final URL remoteURL) + throws URISyntaxException, NoSuchMethodException, ScriptException, IOException { + return getFileCached(remoteURL, true); + } + + public static Optional getFileCached(final URL remoteURL, boolean enableCache) + throws URISyntaxException, NoSuchMethodException, ScriptException, IOException { + // Return always and empty file if the cache is not enable + if (!(enableCache && FileDownloaderCache.enableCache)) { + return Optional.empty(); + } + final String[] splitPath = remoteURL.getPath().split("/"); + if (splitPath.length == 0) { + return Optional.empty(); + } + // Create the path where the cached file should exist + final Deque addFirstRemoteURL = new LinkedList<>(Arrays.asList(splitPath)); + addFirstRemoteURL.addFirst(remoteURL.getHost()); + final Path cacheFilePath = Paths.get(cacheFolder, addFirstRemoteURL.toArray(new String[0])); + + // Take from the cache the file info or build from scratch + final FileCached fileCached = Optional.ofNullable(cachedFiles.get(remoteURL.toString())) + .orElseGet(() -> new FileCached(remoteURL.toString(), cacheFilePath.toString())); + + // If the file is change of the cache is disable run the HEAD request to check if the file is changed + if (fileCached.isExpire() || !fileCached.exists()) { + // Update remote etag and cache control header + final Optional fileCachedInfoUpdated = + FileDownloaderCache.updateCacheInfo(remoteURL, (remoteETagClean, cacheControl) -> { + // Check cache control data + if (cacheControl.isNoCache() || cacheControl.isMustRevalidate() || cacheControl.isNoStore()) { + return Optional.empty(); + } + final FileCached fileCachedUpdateETag = new FileCached( + remoteURL.toString(), + cacheFilePath.toString(), + fileCached.eTag, + remoteETagClean, // Set the lastETag + fileCached.md5, + cacheControl // Set the new cache control + ); + cachedFiles.put(remoteURL.toString(), fileCachedUpdateETag); + return Optional.of(fileCachedUpdateETag); + }); + FileDownloaderCache.updateCacheFilesInfo(); + return fileCachedInfoUpdated; + } + return Optional.of(fileCached); + } + + private static Optional updateCacheInfo(URL remoteURL, BiFunction> getNewFile) + throws URISyntaxException, NoSuchMethodException, ScriptException, + IOException { + // Update the headers of the cached file + final HttpURLConnection headRequest = new HttpConnectionManager(remoteURL).makeConnection((connection) -> { + try { + connection.setRequestMethod("HEAD"); + } catch (ProtocolException e) { + System.err.println(e.getMessage()); + } + }); + final int responseCode = headRequest.getResponseCode(); + headRequest.disconnect(); + // Something bad is happening return a conservative true to try to download the file + if (responseCode < 200 || responseCode >= 300) { + // if something bad happened + return Optional.empty(); + } + // Get all the useful headers + String remoteETag = headRequest.getHeaderField("ETag"); + String cacheControlHeader = headRequest.getHeaderField("Cache-Control"); + if (remoteETag != null && cacheControlHeader != null) { + final String remoteETagClean = remoteETag.trim().replace("\"", ""); + final CacheControl cacheControl = CacheControl.valueOf(cacheControlHeader); + return getNewFile.apply(remoteETagClean, cacheControl); + } + // the head request do not return the ETag or the Cache-Control + return Optional.empty(); + } + + private synchronized static void updateCacheFilesInfo() throws IOException { + ObjectMapper mapper = new ObjectMapper(); + // Generate a pretty json + mapper.enable(SerializationFeature.INDENT_OUTPUT); + final ObjectNode objectNode = mapper.createObjectNode(); + // Generate a json {"files":[...{files_info}...]} + objectNode.putArray("files").addAll( + cachedFiles.values().stream() + .map((v) -> mapper.convertValue(v, JsonNode.class)) + .collect(Collectors.toList())); + // Create the path Arduino15/cache + Path cachedFileInfo = getCachedInfoPath(); + if (Files.notExists(cachedFileInfo)) { + Files.createDirectories(cachedFileInfo.getParent()); + } + // Write to cache.json + mapper.writeValue(cachedFileInfo.toFile(), objectNode); + } + + private static Path getCachedInfoPath() { + return Paths.get(cacheFolder, "cache.json"); + } + + @JsonIgnoreProperties(ignoreUnknown = true) + static class FileCached { + private final String remoteURL; + private final String localPath; + private final String eTag; + private final String lastETag; + private final String md5; + private final String createdAt; + private final CacheControl cacheControl; + + FileCached() { + this.remoteURL = null; + this.localPath = null; + lastETag = null; + eTag = null; + md5 = null; + createdAt = null; + cacheControl = null; + } + + FileCached(String remoteURL, String localPath) { + this.remoteURL = remoteURL; + this.localPath = localPath; + lastETag = null; + eTag = null; + md5 = null; + createdAt = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); + cacheControl = null; + } + + public FileCached(String remoteURL, String localPath, String eTag, String lastETag, String md5, CacheControl cacheControl) { + this.remoteURL = remoteURL; + this.localPath = localPath; + this.eTag = eTag; + this.lastETag = lastETag; + this.md5 = md5; + this.createdAt = LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); + this.cacheControl = cacheControl; + } + + @JsonIgnore + public boolean isExpire() { + // Check if the file is expire + final LocalDateTime now = LocalDateTime.now(); + return this.getExpiresTime().isBefore(now) || this.getExpiresTime().isEqual(now); + } + + @JsonIgnore + public boolean isNotChange() { + return !isChange(); + } + + @JsonIgnore + public boolean isChange() { + // Check if the file is expire + boolean isChanged = false; + if (isExpire()) { + isChanged = true; + } + + if (lastETag != null && !lastETag.equals(eTag)) { + // Different ETag means that the file is changed + isChanged = true; + } + return isChanged; + } + + @JsonIgnore + public boolean exists() { + return localPath != null && Files.exists(Paths.get(localPath)); + } + + @JsonIgnore + public Optional getFileFromCache() { + if (md5Check()) { + return Optional.of(Paths.get(localPath).toFile()); + } + return Optional.empty(); + + } + + public synchronized void updateCacheFile(File fileToCache) throws Exception { + Path cacheFilePath = Paths.get(localPath); + + // If the cache directory does not exist create it + if (!Files.exists(cacheFilePath.getParent())) { + Files.createDirectories(cacheFilePath.getParent()); + } + FileUtils.copyFile(fileToCache, cacheFilePath.toFile()); + final String md5 = this.calculateMD5(); + final String eTag; + if (lastETag == null) { + eTag = this.eTag; + } else { + eTag = this.lastETag; + } + FileCached newFileCached = new FileCached( + this.remoteURL, + this.localPath, + eTag, // Initialize the right eTag with the last eTag because the file was updated + eTag, + md5, + this.cacheControl + ); + cachedFiles.put(remoteURL, newFileCached); + updateCacheFilesInfo(); + } + + public synchronized void invalidateCache() throws IOException { + cachedFiles.remove(remoteURL); + Files.deleteIfExists(Paths.get(localPath)); + } + + private String calculateMD5() throws IOException, NoSuchAlgorithmException { + if (exists()) { + return FileHash.hash(Paths.get(localPath).toFile(), "MD5"); + } + return null; + } + + @JsonIgnore + public boolean md5Check() { + try { + return !Objects.isNull(getMD5()) && Objects.equals(calculateMD5(), getMD5()); + } catch (Exception e) { + return false; + } + } + + @JsonIgnore + public LocalDateTime getExpiresTime() { + final int maxAge; + if (cacheControl != null) { + maxAge = cacheControl.getMaxAge(); + } else { + maxAge = 0; + } + if (createdAt != null) { + return LocalDateTime.parse(createdAt, DateTimeFormatter.ISO_DATE_TIME) + .plusSeconds(maxAge); + } + return LocalDateTime.now(); + + } + + public String getExpires() { + return getExpiresTime().toString(); + } + + public String getMD5() { + return md5; + } + + public String geteTag() { + return eTag; + } + + public String getRemoteURL() { + return remoteURL; + } + + public String getLocalPath() { + return localPath; + } + + public String getCreatedAt() { + return createdAt; + } + + public CacheControl getCacheControl() { + return cacheControl; + } + + @Override + public String toString() { + return "FileCached{" + + "eTag='" + eTag + '\'' + + ", lastETag='" + lastETag + '\'' + + ", remoteURL='" + remoteURL + '\'' + + ", localPath='" + localPath + '\'' + + ", md5='" + md5 + '\'' + + ", createdAt='" + createdAt + '\'' + + ", cacheControl=" + cacheControl + + '}'; + } + } +} diff --git a/arduino-core/src/cc/arduino/utils/network/HttpConnectionManager.java b/arduino-core/src/cc/arduino/utils/network/HttpConnectionManager.java new file mode 100644 index 00000000000..acb754d5055 --- /dev/null +++ b/arduino-core/src/cc/arduino/utils/network/HttpConnectionManager.java @@ -0,0 +1,150 @@ +/* + * This file is part of Arduino. + * + * Copyright 2019 Arduino LLC (http://www.arduino.cc/) + * + * Arduino 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 of the License, 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; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * As a special exception, you may use this file as part of a free software + * library without restriction. Specifically, if other files instantiate + * templates or use macros or inline functions from this file, or you compile + * this file and link it with other files to produce an executable, this + * file does not by itself cause the resulting executable to be covered by + * the GNU General Public License. This exception does not however + * invalidate any other reasons why the executable file might be covered by + * the GNU General Public License. + */ + +package cc.arduino.utils.network; + +import cc.arduino.net.CustomProxySelector; +import org.apache.commons.codec.binary.Base64; +import processing.app.BaseNoGui; +import processing.app.PreferencesData; + +import javax.script.ScriptException; +import java.io.IOException; +import java.net.HttpURLConnection; +import java.net.Proxy; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.UUID; +import java.util.function.Consumer; + +public class HttpConnectionManager { + private static final String userAgent; + private static final int connectTimeout; + private static final int maxRedirectNumber; + private final URL requestURL; + private final String id; + + + static { + final String defaultUserAgent = String.format( + "ArduinoIDE/%s (%s; %s; %s; %s) Java/%s (%s)", + BaseNoGui.VERSION_NAME, + System.getProperty("os.name"), + System.getProperty("os.version"), + System.getProperty("os.arch"), + System.getProperty("user.language"), + System.getProperty("java.version"), + System.getProperty("java.vendor") + ); + userAgent = PreferencesData.get("http.user_agent", defaultUserAgent); + int connectTimeoutFromConfig = 5000; + try { + connectTimeoutFromConfig = PreferencesData.getInteger("http.connection_timeout_ms", 5000); + } catch (NumberFormatException e) { + System.err.println("Error parsing http.connection_timeout_ms config: " + e.getMessage()); + } + connectTimeout = connectTimeoutFromConfig; + // Set by default 20 max redirect to follow + int maxRedirectNumberConfig = 20; + try { + maxRedirectNumberConfig = PreferencesData.getInteger("http.max_redirect_number", 20); + } catch (NumberFormatException e) { + System.err.println("Error parsing http.max_redirect_number config: " + e.getMessage()); + } + maxRedirectNumber = maxRedirectNumberConfig; + } + + public HttpConnectionManager(URL requestURL) { + this.requestURL = requestURL; + if (requestURL.getHost().endsWith("arduino.cc")) { + final String idString = PreferencesData.get("update.id", "0"); + id = Long.toString(Long.parseLong(idString)); + } else { + id = null; + } + + } + + public HttpURLConnection makeConnection(Consumer beforeConnection) + throws IOException, NoSuchMethodException, ScriptException, URISyntaxException { + return makeConnection(this.requestURL, 0, beforeConnection); + } + + + public HttpURLConnection makeConnection() + throws IOException, NoSuchMethodException, ScriptException, URISyntaxException { + return makeConnection(this.requestURL, 0, (c) -> { + }); + } + + private HttpURLConnection makeConnection(URL requestURL, int movedTimes, + Consumer beforeConnection) throws IOException, URISyntaxException, ScriptException, NoSuchMethodException { + if (movedTimes > maxRedirectNumber) { + throw new IOException("Too many redirect " + requestURL); + } + + Proxy proxy = new CustomProxySelector(PreferencesData.getMap()).getProxyFor(requestURL.toURI()); + + final String requestId = UUID.randomUUID().toString().toUpperCase().replace("-", "").substring(0, 16); + HttpURLConnection connection = (HttpURLConnection) requestURL.openConnection(proxy); + + // see https://github.com/arduino/Arduino/issues/10264 + // Workaround for https://bugs.openjdk.java.net/browse/JDK-8163921 + connection.setRequestProperty("Accept", "*/*"); + + connection.setRequestProperty("User-agent", userAgent); + connection.setRequestProperty("X-Request-ID", requestId); + if (id != null) { + connection.setRequestProperty("X-ID", id); + } + if (requestURL.getUserInfo() != null) { + String auth = "Basic " + new String( + new Base64().encode(requestURL.getUserInfo().getBytes())); + connection.setRequestProperty("Authorization", auth); + } + + int initialSize = 0; + connection.setRequestProperty("Range", "bytes=" + initialSize + "-"); + connection.setConnectTimeout(connectTimeout); + beforeConnection.accept(connection); + + // Connect + connection.connect(); + int resp = connection.getResponseCode(); + + if (resp == HttpURLConnection.HTTP_MOVED_PERM || resp == HttpURLConnection.HTTP_MOVED_TEMP) { + URL newUrl = new URL(connection.getHeaderField("Location")); + return this.makeConnection(newUrl, movedTimes + 1, beforeConnection); + } + + return connection; + } + +} + diff --git a/arduino-core/src/processing/app/BaseNoGui.java b/arduino-core/src/processing/app/BaseNoGui.java index 1f2334ad85a..ea51e376e73 100644 --- a/arduino-core/src/processing/app/BaseNoGui.java +++ b/arduino-core/src/processing/app/BaseNoGui.java @@ -2,7 +2,6 @@ import cc.arduino.Constants; import cc.arduino.contributions.GPGDetachedSignatureVerifier; -import cc.arduino.contributions.SignatureVerificationFailedException; import cc.arduino.contributions.VersionComparator; import cc.arduino.contributions.libraries.LibrariesIndexer; import cc.arduino.contributions.packages.ContributedPlatform; @@ -42,9 +41,9 @@ public class BaseNoGui { /** Version string to be used for build */ - public static final int REVISION = 10806; + public static final int REVISION = 10820; /** Extended version string displayed on GUI */ - public static final String VERSION_NAME = "1.8.6"; + public static final String VERSION_NAME = "1.8.20"; public static final String VERSION_NAME_LONG; // Current directory to use for relative paths specified on the @@ -189,6 +188,7 @@ static public PreferencesMap getBoardPreferences() { } String toolPath = folder.getAbsolutePath(); prefs.put(prefix + tool.getName() + ".path", toolPath); + prefs.put(prefix + tool.getName() + "-" + tool.getVersion() + ".path", toolPath); PreferencesData.set(prefix + tool.getName() + ".path", toolPath); PreferencesData.set(prefix + tool.getName() + "-" + tool.getVersion() + ".path", toolPath); } @@ -222,7 +222,7 @@ static public File getDefaultSketchbookFolder() { public static DiscoveryManager getDiscoveryManager() { if (discoveryManager == null) { - discoveryManager = new DiscoveryManager(); + discoveryManager = new DiscoveryManager(packages); } return discoveryManager; } @@ -481,11 +481,11 @@ static public void initPackages() throws Exception { try { indexer.parseIndex(); - } catch (JsonProcessingException | SignatureVerificationFailedException e) { + } catch (JsonProcessingException e) { File indexFile = indexer.getIndexFile(Constants.DEFAULT_INDEX_FILE_NAME); File indexSignatureFile = indexer.getIndexFile(Constants.DEFAULT_INDEX_FILE_NAME + ".sig"); - FileUtils.deleteIfExists(indexFile); - FileUtils.deleteIfExists(indexSignatureFile); + indexFile.delete(); + indexSignatureFile.delete(); throw e; } indexer.syncWithFilesystem(); @@ -501,15 +501,15 @@ static public void initPackages() throws Exception { librariesIndexer.parseIndex(); } catch (JsonProcessingException e) { File librariesIndexFile = librariesIndexer.getIndexFile(); - FileUtils.deleteIfExists(librariesIndexFile); + librariesIndexFile.delete(); } if (discoveryManager == null) { - discoveryManager = new DiscoveryManager(); + discoveryManager = new DiscoveryManager(packages); } } - static protected void initPlatform() { + static public void initPlatform() { try { Class platformClass = Class.forName("processing.app.Platform"); if (OSUtils.isMacOS()) { @@ -675,7 +675,9 @@ static public void onBoardOrPortChange() { // Libraries located in the latest folders on the list can override // other libraries with the same name. librariesIndexer.setLibrariesFolders(librariesFolders); - librariesIndexer.setArchitecturePriority(getTargetPlatform().getId()); + if (getTargetPlatform() != null) { + librariesIndexer.setArchitecturePriority(getTargetPlatform().getId()); + } librariesIndexer.rescanLibraries(); populateImportToLibraryTable(); @@ -892,7 +894,7 @@ static public void saveFile(String str, File file) throws IOException { PApplet.saveStrings(temp, strArray); try { - file = file.getCanonicalFile(); + file = file.toPath().toRealPath().toFile().getCanonicalFile(); } catch (IOException e) { } diff --git a/arduino-core/src/processing/app/I18n.java b/arduino-core/src/processing/app/I18n.java index 0ab961aa9ed..1f1a9f93703 100644 --- a/arduino-core/src/processing/app/I18n.java +++ b/arduino-core/src/processing/app/I18n.java @@ -106,10 +106,6 @@ public static String format(String fmt, Object... args) { * This method is an hack to extract words with gettext tool. */ protected static void unusedStrings() { - // These phrases are defined in the "platform.txt". - tr("Arduino AVR Boards"); - tr("Arduino ARM (32-bits) Boards"); - // This word is defined in the "boards.txt". tr("Processor"); } diff --git a/arduino-core/src/processing/app/Platform.java b/arduino-core/src/processing/app/Platform.java index 28a7ba0f550..c76148df18f 100644 --- a/arduino-core/src/processing/app/Platform.java +++ b/arduino-core/src/processing/app/Platform.java @@ -31,19 +31,7 @@ import javax.swing.*; import java.io.File; import java.io.IOException; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.ArrayList; -import java.util.Arrays; - -import java.net.URL; -import java.net.URLConnection; -import java.net.HttpURLConnection; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.DeserializationFeature; -import java.io.InputStream; +import java.util.*; import static processing.app.I18n.tr; @@ -64,8 +52,6 @@ * know if name is proper Java package syntax.) */ public class Platform { - - /** * Set the default L & F. While I enjoy the bounty of the sixteen possible * exception types that this UIManager method might throw, I feel that in @@ -170,6 +156,7 @@ private static void loadLib(File lib) { } private native String resolveDeviceAttachedToNative(String serial); + private native String[] listSerialsNative(); public String preListAllCandidateDevices() { @@ -180,7 +167,7 @@ public List listSerials() { return new ArrayList<>(Arrays.asList(listSerialsNative())); } - public List listSerialsNames(){ + public List listSerialsNames() { List list = new LinkedList<>(); for (String port : listSerialsNative()) { list.add(port.split("_")[0]); @@ -188,46 +175,6 @@ public List listSerialsNames(){ return list; } - public static class BoardCloudAPIid { - public BoardCloudAPIid() { } - private String name; - private String architecture; - private String id; - public String getName() { return name; } - public String getArchitecture() { return architecture; } - public String getId() { return id; } - public void setName(String tmp) { name = tmp; } - public void setArchitecture(String tmp) { architecture = tmp; } - public void setId(String tmp) { id = tmp; } - } - - public synchronized void getBoardWithMatchingVidPidFromCloud(String vid, String pid) { - // this method is less useful in Windows < WIN10 since you need drivers to be already installed - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - try { - URL jsonUrl = new URL("http", "api-builder.arduino.cc", 80, "/builder/v1/boards/0x"+vid+"/0x"+pid); - URLConnection connection = jsonUrl.openConnection(); - connection.connect(); - HttpURLConnection httpConnection = (HttpURLConnection) connection; - int code = httpConnection.getResponseCode(); - if (code == 404) { - return; - } - InputStream is = httpConnection.getInputStream(); - BoardCloudAPIid board = mapper.readValue(is, BoardCloudAPIid.class); - // Launch a popup with a link to boardmanager#board.getName() - // replace spaces with & - String realBoardName = board.getName().replaceAll("\\(.*?\\)", "").trim(); - String boardNameReplaced = realBoardName.replaceAll(" ", "&"); - String message = I18n.format(tr("{0}Install this package{1} to use your {2} board"), "", "", realBoardName); - BaseNoGui.setBoardManagerLink(message); - } catch (Exception e) { - // No connection no problem, fail silently - //e.printStackTrace(); - } - } - public synchronized Map resolveDeviceByVendorIdProductId(String serial, Map packages) { String vid_pid_iSerial = resolveDeviceAttachedToNative(serial); for (TargetPackage targetPackage : packages.values()) { @@ -254,9 +201,10 @@ public synchronized Map resolveDeviceByVendorIdProductId(String } Map boardData = new HashMap<>(); boardData.put("board", board); - boardData.put("vid", vids.get(i)); - boardData.put("pid", pids.get(i)); - String extrafields = vid_pid_iSerial.substring(vidPid.length()+1); + // remove 0x from VID / PID to keep them as reported by liblistserial + boardData.put("vid", vids.get(i).replaceAll("0x", "")); + boardData.put("pid", pids.get(i).replaceAll("0x", "")); + String extrafields = vid_pid_iSerial.substring(vidPid.length() + 1); String[] parts = extrafields.split("_"); boardData.put("iserial", parts[0]); return boardData; diff --git a/arduino-core/src/processing/app/PreferencesData.java b/arduino-core/src/processing/app/PreferencesData.java index 6d9530f336d..11a250d689c 100644 --- a/arduino-core/src/processing/app/PreferencesData.java +++ b/arduino-core/src/processing/app/PreferencesData.java @@ -1,8 +1,8 @@ package processing.app; -import org.apache.commons.compress.utils.IOUtils; - +import cc.arduino.Constants; import cc.arduino.i18n.Languages; +import org.apache.commons.compress.utils.IOUtils; import processing.app.helpers.PreferencesHelper; import processing.app.helpers.PreferencesMap; import processing.app.legacy.PApplet; @@ -18,6 +18,7 @@ import java.util.MissingResourceException; import java.util.stream.Collectors; +import static processing.app.I18n.format; import static processing.app.I18n.tr; @@ -49,6 +50,9 @@ static public void init(File file) throws Exception { //ignore } + // Start with a clean slate + prefs = new PreferencesMap(); + // start by loading the defaults, in case something // important was deleted from the user prefs try { @@ -114,6 +118,9 @@ static protected void save() { if (!doSave) return; + if (getBoolean("preferences.readonly")) + return; + // on startup, don't worry about it // this is trying to update the prefs for who is open // before Preferences.init() has been called. @@ -133,6 +140,9 @@ static protected void save() { } writer.flush(); + } catch (Throwable e) { + System.err.println(format(tr("Could not write preferences file: {0}"), e.getMessage())); + return; } finally { IOUtils.closeQuietly(writer); } @@ -258,11 +268,21 @@ static public Font getFont(String attr) { } public static Collection getCollection(String key) { - return Arrays.asList(get(key, "").split(",")); + return Arrays.stream(get(key, "").split(",")) + // Remove empty strings from the collection + .filter((v) -> !v.trim().isEmpty()) + .collect(Collectors.toList()); } public static void setCollection(String key, Collection values) { String value = values.stream().collect(Collectors.joining(",")); set(key, value); } + + public static boolean areInsecurePackagesAllowed() { + if (getBoolean(Constants.ALLOW_INSECURE_PACKAGES, false)) { + return true; + } + return getBoolean(Constants.PREF_CONTRIBUTIONS_TRUST_ALL, false); + } } diff --git a/arduino-core/src/processing/app/Serial.java b/arduino-core/src/processing/app/Serial.java index 484ac11909b..edc5e8f0c0f 100644 --- a/arduino-core/src/processing/app/Serial.java +++ b/arduino-core/src/processing/app/Serial.java @@ -116,7 +116,7 @@ public static boolean touchForCDCReset(String iname) throws SerialException { } } - private Serial(String iname, int irate, char iparity, int idatabits, float istopbits, boolean setRTS, boolean setDTR) throws SerialException { + protected Serial(String iname, int irate, char iparity, int idatabits, float istopbits, boolean setRTS, boolean setDTR) throws SerialException { //if (port != null) port.close(); //this.parent = parent; //parent.attach(this); @@ -131,6 +131,11 @@ private Serial(String iname, int irate, char iparity, int idatabits, float istop if (istopbits == 1.5f) stopbits = SerialPort.STOPBITS_1_5; if (istopbits == 2) stopbits = SerialPort.STOPBITS_2; + // This is required for unit-testing + if (iname.equals("none")) { + return; + } + try { port = new SerialPort(iname); port.openPort(); @@ -175,31 +180,54 @@ public synchronized void serialEvent(SerialPortEvent serialEvent) { if (serialEvent.isRXCHAR()) { try { byte[] buf = port.readBytes(serialEvent.getEventValue()); - int next = 0; - while(next < buf.length) { - while(next < buf.length && outToMessage.hasRemaining()) { - int spaceInIn = inFromSerial.remaining(); - int copyNow = buf.length - next < spaceInIn ? buf.length - next : spaceInIn; - inFromSerial.put(buf, next, copyNow); - next += copyNow; - inFromSerial.flip(); - bytesToStrings.decode(inFromSerial, outToMessage, false); - inFromSerial.compact(); - } - outToMessage.flip(); - if(outToMessage.hasRemaining()) { - char[] chars = new char[outToMessage.remaining()]; - outToMessage.get(chars); - message(chars, chars.length); - } - outToMessage.clear(); - } + processSerialEvent(buf); } catch (SerialPortException e) { errorMessage("serialEvent", e); } } } + public void processSerialEvent(byte[] buf) { + int next = 0; + // This uses a CharsetDecoder to convert from bytes to UTF-8 in + // a streaming fashion (i.e. where characters might be split + // over multiple reads). This needs the data to be in a + // ByteBuffer (inFromSerial, which we also use to store leftover + // incomplete characters for the nexst run) and produces a + // CharBuffer (outToMessage), which we then convert to char[] to + // pass onwards. + // Note that these buffers switch from input to output mode + // using flip/compact/clear + while (next < buf.length || inFromSerial.position() > 0) { + do { + // This might be 0 when all data was already read from buf + // (but then there will be data in inFromSerial left to + // decode). + int copyNow = Math.min(buf.length - next, inFromSerial.remaining()); + inFromSerial.put(buf, next, copyNow); + next += copyNow; + + inFromSerial.flip(); + bytesToStrings.decode(inFromSerial, outToMessage, false); + inFromSerial.compact(); + + // When there are multi-byte characters, outToMessage might + // still have room, so add more bytes if we have any. + } while (next < buf.length && outToMessage.hasRemaining()); + + // If no output was produced, the input only contained + // incomplete characters, so we're done processing + if (outToMessage.position() == 0) + break; + + outToMessage.flip(); + char[] chars = new char[outToMessage.remaining()]; + outToMessage.get(chars); + message(chars, chars.length); + outToMessage.clear(); + } + } + /** * This method is intented to be extended to receive messages * coming from serial port. diff --git a/arduino-core/src/processing/app/SerialPortList.java b/arduino-core/src/processing/app/SerialPortList.java index 04e8c46b5ab..f231ad6fb9c 100644 --- a/arduino-core/src/processing/app/SerialPortList.java +++ b/arduino-core/src/processing/app/SerialPortList.java @@ -74,7 +74,7 @@ public class SerialPortList { } } - //since 2.1.0 -> Fully rewrited port name comparator + //since 2.1.0 -> Fully rewritten port name comparator private static final Comparator PORTNAMES_COMPARATOR = new Comparator() { @Override diff --git a/arduino-core/src/processing/app/debug/LegacyTargetBoard.java b/arduino-core/src/processing/app/debug/LegacyTargetBoard.java index 16770a63525..09e7ac5085c 100644 --- a/arduino-core/src/processing/app/debug/LegacyTargetBoard.java +++ b/arduino-core/src/processing/app/debug/LegacyTargetBoard.java @@ -100,4 +100,8 @@ public TargetPlatform getContainerPlatform() { return containerPlatform; } + @Override + public String getFQBN() { + return getContainerPlatform().getContainerPackage().getId() + ":" + getContainerPlatform().getId() + ":" + getId(); + } } diff --git a/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java b/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java index c00378c48b4..f3c1dd45b30 100644 --- a/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java +++ b/arduino-core/src/processing/app/debug/LegacyTargetPlatform.java @@ -245,4 +245,9 @@ public String toString() { res += " " + boardId + " = " + boards.get(boardId) + "\n"; return res + "}"; } + + @Override + public boolean isInSketchbook() { + return getFolder().getAbsolutePath().startsWith(BaseNoGui.getSketchbookHardwareFolder().getAbsolutePath()); + } } diff --git a/arduino-core/src/processing/app/debug/Sizer.java b/arduino-core/src/processing/app/debug/Sizer.java index 4d54d8d52c8..6e748a94162 100644 --- a/arduino-core/src/processing/app/debug/Sizer.java +++ b/arduino-core/src/processing/app/debug/Sizer.java @@ -60,7 +60,7 @@ public long[] computeSize() throws RunnerException { int r = 0; try { String pattern = prefs.get("recipe.size.pattern"); - String cmd[] = StringReplacer.formatAndSplit(pattern, prefs, true); + String cmd[] = StringReplacer.formatAndSplit(pattern, prefs); exception = null; textSize = -1; diff --git a/arduino-core/src/processing/app/debug/TargetBoard.java b/arduino-core/src/processing/app/debug/TargetBoard.java index 5dae869060e..d635bbf1d0f 100644 --- a/arduino-core/src/processing/app/debug/TargetBoard.java +++ b/arduino-core/src/processing/app/debug/TargetBoard.java @@ -92,4 +92,6 @@ public interface TargetBoard { public TargetPlatform getContainerPlatform(); + public String getFQBN(); + } diff --git a/arduino-core/src/processing/app/debug/TargetPlatform.java b/arduino-core/src/processing/app/debug/TargetPlatform.java index 4b13cf87ac7..330b260bb16 100644 --- a/arduino-core/src/processing/app/debug/TargetPlatform.java +++ b/arduino-core/src/processing/app/debug/TargetPlatform.java @@ -94,4 +94,10 @@ public interface TargetPlatform { */ public TargetPackage getContainerPackage(); + /** + * Returns true if the platform is installed in a subfolder of the sketchbook + * + * @return + */ + public boolean isInSketchbook(); } diff --git a/arduino-core/src/processing/app/helpers/BoardCloudResolver.java b/arduino-core/src/processing/app/helpers/BoardCloudResolver.java new file mode 100644 index 00000000000..f1d4894caaa --- /dev/null +++ b/arduino-core/src/processing/app/helpers/BoardCloudResolver.java @@ -0,0 +1,142 @@ +/* + * This file is part of Arduino. + * + * Copyright 2015 Arduino LLC (http://www.arduino.cc/) + * + * Arduino 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 of the License, 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; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + * As a special exception, you may use this file as part of a free software + * library without restriction. Specifically, if other files instantiate + * templates or use macros or inline functions from this file, or you compile + * this file and link it with other files to produce an executable, this + * file does not by itself cause the resulting executable to be covered by + * the GNU General Public License. This exception does not however + * invalidate any other reasons why the executable file might be covered by + * the GNU General Public License. + */ + +package processing.app.helpers; + +import cc.arduino.utils.network.HttpConnectionManager; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import processing.app.BaseNoGui; +import processing.app.I18n; +import processing.app.debug.TargetBoard; +import processing.app.debug.TargetPackage; +import processing.app.debug.TargetPlatform; + +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.Map; + +import static processing.app.I18n.tr; + +public class BoardCloudResolver { + + public synchronized void getBoardBy(String vid, String pid) { + // this method is less useful in Windows < WIN10 since you need drivers to be already installed + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + try { + URL jsonUrl = new URL(String.format("https://builder.arduino.cc/builder/v1/boards/0x%s/0x%s", vid, pid)); + + final HttpURLConnection httpConnection = new HttpConnectionManager(jsonUrl) + .makeConnection(); + int code = httpConnection.getResponseCode(); + if (code == 404) { + return; + } + InputStream is = httpConnection.getInputStream(); + BoardCloudAPIid board = mapper.readValue(is, BoardCloudAPIid.class); + // Launch a popup with a link to boardmanager#board.getName() + // replace spaces with & + String realBoardName = board.getName().replaceAll("\\(.*?\\)", "").trim(); + String boardNameReplaced = realBoardName.replaceAll(" ", "&"); + String message = I18n.format(tr("{0}Install this package{1} to use your {2} board"), "", "", realBoardName); + BaseNoGui.setBoardManagerLink(message); + } catch (Exception e) { + // No connection no problem, fail silently + //e.printStackTrace(); + } + } + + public String resolveDeviceByBoardID(Map packages, String boardId) { + assert packages != null; + assert boardId != null; + for (TargetPackage targetPackage : packages.values()) { + for (TargetPlatform targetPlatform : targetPackage.getPlatforms().values()) { + for (TargetBoard board : targetPlatform.getBoards().values()) { + if (boardId.equals(board.getId())) { + return board.getName(); + } + } + } + } + return null; + } + + private static class BoardCloudAPIid { + + private String fqbn; + private String name; + private String architecture; + private String id; + + public String getName() { + return name; + } + + public void setName(String tmp) { + name = tmp; + } + + public String getFqbn() { + return fqbn; + } + + public void setFqbn(String fqbn) { + this.fqbn = fqbn; + } + + public String getArchitecture() { + return architecture; + } + + public void setArchitecture(String tmp) { + architecture = tmp; + } + + public String getId() { + return id; + } + + public void setId(String tmp) { + id = tmp; + } + + @Override + public String toString() { + return "BoardCloudAPIid{" + + "name='" + name + '\'' + + ", fqbn='" + fqbn + '\'' + + ", architecture='" + architecture + '\'' + + ", id='" + id + '\'' + + '}'; + } + } + +} diff --git a/arduino-core/src/processing/app/helpers/CommandlineParser.java b/arduino-core/src/processing/app/helpers/CommandlineParser.java index 19216a32065..4c8b3a241b4 100644 --- a/arduino-core/src/processing/app/helpers/CommandlineParser.java +++ b/arduino-core/src/processing/app/helpers/CommandlineParser.java @@ -41,6 +41,7 @@ private enum ACTION { private String getPref; private String boardToInstall; private String libraryToInstall; + private Optional uploadPort = Optional.empty(); private final List filenames = new LinkedList<>(); public CommandlineParser(String[] args) { @@ -141,7 +142,7 @@ public void parseArgumentsPhase1() { i++; if (i >= args.length) BaseNoGui.showError(null, tr("Argument required for --port"), 3); - BaseNoGui.selectSerialPort(args[i]); + uploadPort = Optional.of(args[i]); if (action == ACTION.GUI) action = ACTION.NOOP; continue; @@ -265,7 +266,7 @@ private void processBoardArgument(String selectBoard) { if (!targetBoard.hasMenu(key)) BaseNoGui.showError(null, I18n.format(tr("{0}: Invalid option for board \"{1}\""), key, targetBoard.getId()), 3); if (targetBoard.getMenuLabel(key, value) == null) - BaseNoGui.showError(null, I18n.format(tr("{0}: Invalid option for \"{1}\" option for board \"{2}\""), value, key, targetBoard.getId()), 3); + BaseNoGui.showError(null, I18n.format(tr("{0}: Invalid value for option \"{1}\" for board \"{2}\""), value, key, targetBoard.getId()), 3); PreferencesData.set("custom_" + key, targetBoard.getId() + "_" + value); } @@ -356,4 +357,8 @@ public String getLibraryToInstall() { public boolean isPreserveTempFiles() { return preserveTempFiles; } + + public Optional getUploadPort() { + return uploadPort; + } } diff --git a/arduino-core/src/processing/app/helpers/FileUtils.java b/arduino-core/src/processing/app/helpers/FileUtils.java index 654a5d95adc..f2a1603b698 100644 --- a/arduino-core/src/processing/app/helpers/FileUtils.java +++ b/arduino-core/src/processing/app/helpers/FileUtils.java @@ -2,16 +2,25 @@ import org.apache.commons.compress.utils.IOUtils; -import java.io.*; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.*; -import java.util.regex.Pattern; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Random; public class FileUtils { private static final List SOURCE_CONTROL_FOLDERS = Arrays.asList("CVS", "RCS", ".git", ".svn", ".hg", ".bzr"); - private static final Pattern BACKSLASH = Pattern.compile("\\\\"); /** * Checks, whether the child directory is a subdirectory of the base directory. @@ -58,10 +67,6 @@ public static void copyFile(File source, File dest) throws IOException { public static void copy(File sourceFolder, File destFolder) throws IOException { for (File file : sourceFolder.listFiles()) { File destFile = new File(destFolder, file.getName()); - if ((destFolder.getPath().equals(file.getPath()))) { - // Avoid recursive copy of folders - continue; - } if (file.isDirectory() && !SOURCE_CONTROL_FOLDERS.contains(file.getName())) { if (!destFile.exists() && !destFile.mkdir()) { throw new IOException("Unable to create folder: " + destFile); @@ -113,75 +118,6 @@ public static File createTempFolder(File parent, String prefix, String suffix) t return Files.createDirectories(Paths.get(parent.getAbsolutePath(), prefix + suffix)).toFile(); } - // - // Compute relative path to "target" from a directory "origin". - // - // If "origin" is not absolute, it is relative from the current directory. - // If "target" is not absolute, it is relative from "origin". - // - // by Shigeru KANEMOTO at SWITCHSCIENCE. - // - public static String relativePath(String origin, String target) { - try { - origin = (new File(origin)).getCanonicalPath(); - File targetFile = new File(target); - if (targetFile.isAbsolute()) - target = targetFile.getCanonicalPath(); - else - target = (new File(origin, target)).getCanonicalPath(); - } catch (IOException e) { - return null; - } - - if (origin.equals(target)) { - // origin and target is identical. - return "."; - } - - if (origin.equals(File.separator)) { - // origin is root. - return "." + target; - } - - String prefix = ""; - String root = File.separator; - - if (System.getProperty("os.name").indexOf("Windows") != -1) { - if (origin.startsWith("\\\\") || target.startsWith("\\\\")) { - // Windows UNC path not supported. - return null; - } - - char originLetter = origin.charAt(0); - char targetLetter = target.charAt(0); - if (Character.isLetter(originLetter) && Character.isLetter(targetLetter)) { - // Windows only - if (originLetter != targetLetter) { - // Drive letters differ - return null; - } - } - - prefix = "" + originLetter + ':'; - root = prefix + File.separator; - } - - String relative = ""; - while (!target.startsWith(origin + File.separator)) { - origin = (new File(origin)).getParent(); - if (origin.equals(root)) - origin = prefix; - relative += ".."; - relative += File.separator; - } - - return relative + target.substring(origin.length() + 1); - } - - public static String getLinuxPathFrom(File file) { - return BACKSLASH.matcher(file.getAbsolutePath()).replaceAll("/"); - } - public static boolean isSCCSOrHiddenFile(File file) { return isSCCSFolder(file) || isHiddenFile(file); } @@ -213,25 +149,34 @@ public static String readFileToString(File file, String encoding) throws IOExcep } } - public static List readFileToListOfStrings(File file) throws IOException { - List strings = new LinkedList<>(); - BufferedReader reader = null; + /** + * Writes the given data to the given file, creating the file if it does not exist. + * This method is equivalent to calling {@code writeStringToFile(file, data, StandardCharsets.UTF_8)}. + * @param file - The file to write to. + * @param data - The string to write. + * @throws IOException If an I/O error occurs. + */ + public static void writeStringToFile(File file, String data) throws IOException { + writeStringToFile(file, data, StandardCharsets.UTF_8); + } + + /** + * Writes the given data to the given file, creating the file if it does not exist. + * @param file - The file to write to. + * @param data - The string to write. + * @param charset - The charset used to convert the string to bytes. + * @throws IOException If an I/O error occurs. + */ + public static void writeStringToFile(File file, String data, Charset charset) throws IOException { + OutputStream out = null; try { - reader = new BufferedReader(new FileReader(file)); - String line; - while ((line = reader.readLine()) != null) { - line = line.replaceAll("\r", "").replaceAll("\n", "").replaceAll(" ", ""); - strings.add(line); - } - return strings; + out = new FileOutputStream(file); + out.write(data.getBytes(charset)); } finally { - if (reader != null) { - reader.close(); - } + IOUtils.closeQuietly(out); } } - /** * Returns true if the given file has any of the given extensions. * @@ -240,10 +185,6 @@ public static List readFileToListOfStrings(File file) throws IOException * dot). Should all be lowercase, case insensitive matching * is used. */ - public static boolean hasExtension(File file, String... extensions) { - return hasExtension(file, Arrays.asList(extensions)); - } - public static boolean hasExtension(File file, List extensions) { String extension = splitFilename(file).extension; return extensions.contains(extension.toLowerCase()); @@ -348,6 +289,9 @@ public static List listFiles(File folder, boolean recursive, public static List listFiles(File folder, boolean recursive, List extensions) { List result = new ArrayList<>(); + if (!folder.exists()) { + return result; + } for (File file : folder.listFiles()) { if (isSCCSOrHiddenFile(file)) @@ -365,21 +309,4 @@ public static List listFiles(File folder, boolean recursive, return result; } - public static File newFile(File parent, String... parts) { - File result = parent; - for (String part : parts) { - result = new File(result, part); - } - - return result; - } - - public static boolean deleteIfExists(File file) { - if (file == null) { - return true; - } - - return file.delete(); - } - } diff --git a/arduino-core/src/processing/app/helpers/OSUtils.java b/arduino-core/src/processing/app/helpers/OSUtils.java index 50719af31aa..b063b18deb7 100644 --- a/arduino-core/src/processing/app/helpers/OSUtils.java +++ b/arduino-core/src/processing/app/helpers/OSUtils.java @@ -27,6 +27,10 @@ static public boolean isMacOS() { } static public boolean hasMacOSStyleMenus() { - return OSUtils.isMacOS() && System.getProperty("apple.laf.useScreenMenuBar").equals("true"); + return OSUtils.isMacOS() && "true".equals(System.getProperty("apple.laf.useScreenMenuBar")); + } + + static public String version() { + return System.getProperty("os.version"); } } diff --git a/arduino-core/src/processing/app/helpers/PreferencesMap.java b/arduino-core/src/processing/app/helpers/PreferencesMap.java index e1628b65284..700c2e60fcb 100644 --- a/arduino-core/src/processing/app/helpers/PreferencesMap.java +++ b/arduino-core/src/processing/app/helpers/PreferencesMap.java @@ -248,7 +248,8 @@ public String toString(String indent) { String res = indent + "{\n"; SortedSet treeSet = new TreeSet<>(keySet()); for (String k : treeSet) - res += indent + k + " = " + get(k) + "\n"; + res += indent + " " + k + " = " + get(k) + "\n"; + res += indent + "}\n"; return res; } diff --git a/arduino-core/src/processing/app/helpers/StringReplacer.java b/arduino-core/src/processing/app/helpers/StringReplacer.java index 159289d1d5b..1e1dd9eab3d 100644 --- a/arduino-core/src/processing/app/helpers/StringReplacer.java +++ b/arduino-core/src/processing/app/helpers/StringReplacer.java @@ -24,19 +24,57 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.UUID; public class StringReplacer { - public static String[] formatAndSplit(String src, Map dict, - boolean recursive) throws Exception { - String res; + public static void checkIfRequiredKeyIsMissingOrExcept(String key, String src, PreferencesMap inDict) throws PreferencesMapException { + // If the key is not missing -> everything is OK + String checkedValue = inDict.get(key); + if (checkedValue != null && !checkedValue.isEmpty()) + return; + + PreferencesMap dict = new PreferencesMap(inDict); + + // Find a random tag that is not contained in the dictionary and the src pattern + String tag; + while (true) { + tag = UUID.randomUUID().toString(); + if (src.contains(tag)) + continue; + if (dict.values().contains(tag)) + continue; + if (dict.keySet().contains(tag)) + continue; + break; + } + + // Inject tag inside the dictionary + dict.put(key, tag); // Recursive replace with a max depth of 10 levels. + String res; for (int i = 0; i < 10; i++) { // Do a replace with dictionary res = StringReplacer.replaceFromMapping(src, dict); - if (!recursive) + if (res.equals(src)) break; + src = res; + } + + // If the resulting string contains the tag, then the key is required + if (src.contains(tag)) { + throw new PreferencesMapException(key); + } + } + + public static String[] formatAndSplit(String src, Map dict) throws Exception { + String res; + + // Recursive replace with a max depth of 10 levels. + for (int i = 0; i < 10; i++) { + // Do a replace with dictionary + res = StringReplacer.replaceFromMapping(src, dict); if (res.equals(src)) break; src = res; diff --git a/arduino-core/src/processing/app/helpers/StringUtils.java b/arduino-core/src/processing/app/helpers/StringUtils.java deleted file mode 100644 index d17e7022c7e..00000000000 --- a/arduino-core/src/processing/app/helpers/StringUtils.java +++ /dev/null @@ -1,51 +0,0 @@ -package processing.app.helpers; - -import java.util.List; - -public class StringUtils { - - public static boolean stringContainsOneOf(String input, List listOfStrings) { - for (String string : listOfStrings) { - if (input.contains(string)) { - return true; - } - } - return false; - } - - /** - * Tries to match input with pattern. The pattern can use the - * "*" and "?" globs to match any-char-sequence and any-char respectively. - * - * @param input The string to be checked - * @param pattern The pattern to match - * @return true if the input matches the pattern, - * false otherwise. - */ - public static boolean wildcardMatch(String input, String pattern) { - String regex = pattern.replace("?", ".?").replace("*", ".*?"); - return input.matches(regex); - } - - /** - * Returns the string without trailing whitespace characters - * - * @param s - * @return - */ - public static String rtrim(String s) { - int i = s.length() - 1; - while (i >= 0 && Character.isWhitespace(s.charAt(i))) { - i--; - } - return s.substring(0, i + 1); - } - - public static String join(String[] arr, String separator) { - StringBuffer sb = new StringBuffer(); - for (String s : arr) { - sb.append(s).append(separator); - } - return sb.substring(0, sb.length() - separator.length()); - } -} diff --git a/arduino-core/src/processing/app/i18n/Resources_ach.po b/arduino-core/src/processing/app/i18n/Resources_ach.po index b78e0410328..c6b48f4e298 100644 --- a/arduino-core/src/processing/app/i18n/Resources_ach.po +++ b/arduino-core/src/processing/app/i18n/Resources_ach.po @@ -17,12 +17,15 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: Acoli (http://www.transifex.com/mbanzi/arduino-ide-15/language/ach/)\n" "MIME-Version: 1.0\n" @@ -621,6 +624,11 @@ msgstr "" msgid "Could not replace {0}" msgstr "" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "" @@ -676,6 +684,10 @@ msgstr "" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "" @@ -851,6 +863,11 @@ msgstr "" msgid "Error inside Serial.{0}()" msgstr "" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -870,6 +887,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "" @@ -904,6 +940,10 @@ msgstr "" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -940,10 +980,6 @@ msgstr "" msgid "Estonian" msgstr "" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "" - #: Editor.java:516 msgid "Examples" msgstr "" @@ -1147,8 +1183,8 @@ msgstr "" msgid "Ignore Case" msgstr "" -#: Base.java:1058 -msgid "Ignoring bad library name" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" msgstr "" #: Base.java:1436 @@ -1212,9 +1248,9 @@ msgstr "" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1241,6 +1277,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "" @@ -1273,9 +1320,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1693,9 +1740,9 @@ msgstr "" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1732,6 +1779,10 @@ msgstr "" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "" @@ -1855,11 +1906,14 @@ msgid "" " Serial Port menu?" msgstr "" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" +msgid "Serial port {0} not found." msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 @@ -1883,6 +1937,10 @@ msgstr "" msgid "Show Sketch Folder" msgstr "" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "" @@ -2054,6 +2112,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2099,10 +2165,11 @@ msgid "" "but anything besides the code will be lost." msgstr "" -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2120,6 +2187,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2612,6 +2683,12 @@ msgstr "" msgid "name is null" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "" @@ -2699,11 +2776,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2714,6 +2786,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_ach.properties b/arduino-core/src/processing/app/i18n/Resources_ach.properties index 631acac13bc..81c57e96f63 100644 --- a/arduino-core/src/processing/app/i18n/Resources_ach.properties +++ b/arduino-core/src/processing/app/i18n/Resources_ach.properties @@ -17,7 +17,10 @@ # Translators: # Translators: # Translators: -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Acoli (http\://www.transifex.com/mbanzi/arduino-ide-15/language/ach/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: ach\nPlural-Forms\: nplurals\=2; plural\=(n > 1);\n +# Translators: +# Translators: +# Translators: +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Acoli (http\://www.transifex.com/mbanzi/arduino-ide-15/language/ach/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: ach\nPlural-Forms\: nplurals\=2; plural\=(n > 1);\n #: Preferences.java:358 Preferences.java:374 !\ \ (requires\ restart\ of\ Arduino)= @@ -440,6 +443,10 @@ #, java-format !Could\ not\ replace\ {0}= +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 !Couldn't\ archive\ sketch= @@ -479,6 +486,9 @@ #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 !Delete= @@ -610,6 +620,10 @@ #, java-format !Error\ inside\ Serial.{0}()= +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -624,6 +638,18 @@ #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 !Error\ reading\ preferences= @@ -649,6 +675,9 @@ #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -677,9 +706,6 @@ #: Preferences.java:93 !Estonian= -#: ../../../processing/app/Preferences.java:146 -!Estonian\ (Estonia)= - #: Editor.java:516 !Examples= @@ -830,8 +856,8 @@ #: FindReplace.java:96 !Ignore\ Case= -#: Base.java:1058 -!Ignoring\ bad\ library\ name= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 !Ignoring\ sketch\ with\ bad\ name= @@ -875,9 +901,9 @@ #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -898,6 +924,15 @@ #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 !Italian= @@ -922,9 +957,9 @@ #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -1237,9 +1272,9 @@ #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1267,6 +1302,9 @@ #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 !Romanian= @@ -1358,9 +1396,13 @@ #, java-format !Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?= -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -!Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?= +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1378,6 +1420,9 @@ #: Editor.java:641 !Show\ Sketch\ Folder= +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 !Show\ verbose\ output\ during\:\ = @@ -1497,6 +1542,10 @@ #, java-format !The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format !The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)= @@ -1521,8 +1570,8 @@ #: Sketch.java:1755 !The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.= -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 !The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.= @@ -1530,6 +1579,9 @@ #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1864,6 +1916,11 @@ #: Editor.java:936 Editor.java:943 !name\ is\ null= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 !serialMenu\ is\ null= @@ -1931,10 +1988,6 @@ #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1943,6 +1996,10 @@ #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_af.po b/arduino-core/src/processing/app/i18n/Resources_af.po index f8f51610cc3..e695acda527 100644 --- a/arduino-core/src/processing/app/i18n/Resources_af.po +++ b/arduino-core/src/processing/app/i18n/Resources_af.po @@ -17,14 +17,18 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: +# Dohan Reyneke , 2020 # Edrean Ernst , 2015 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" -"Last-Translator: Cristian Maglie \n" +"PO-Revision-Date: 2020-03-15 13:42+0000\n" +"Last-Translator: Dohan Reyneke \n" "Language-Team: Afrikaans (http://www.transifex.com/mbanzi/arduino-ide-15/language/af/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -34,12 +38,12 @@ msgstr "" #: Preferences.java:358 Preferences.java:374 msgid " (requires restart of Arduino)" -msgstr "" +msgstr "(vereis herbegin van Arduino)" #: ../../../processing/app/debug/Compiler.java:529 #, java-format msgid " Not used: {0}" -msgstr "" +msgstr "Nie gebruik nie: {0}" #: ../../../processing/app/debug/Compiler.java:525 #, java-format @@ -50,12 +54,12 @@ msgstr "" msgid "" "'Keyboard' not found. Does your sketch include the line '#include " "'?" -msgstr "" +msgstr "'Sleutelbord' nie gevind nie. Bevat u skets die lyn '#include '?" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:553 msgid "" "'Mouse' not found. Does your sketch include the line '#include '?" -msgstr "" +msgstr "'Muis' nie gevind nie. Bevat u skets die lyn '#include , 2020 # Edrean Ernst , 2015 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Afrikaans (http\://www.transifex.com/mbanzi/arduino-ide-15/language/af/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: af\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2020-03-15 13\:42+0000\nLast-Translator\: Dohan Reyneke \nLanguage-Team\: Afrikaans (http\://www.transifex.com/mbanzi/arduino-ide-15/language/af/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: af\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 -!\ \ (requires\ restart\ of\ Arduino)= +\ \ (requires\ restart\ of\ Arduino)=(vereis herbegin van Arduino) #: ../../../processing/app/debug/Compiler.java:529 #, java-format -!\ Not\ used\:\ {0}= +\ Not\ used\:\ {0}=Nie gebruik nie\: {0} #: ../../../processing/app/debug/Compiler.java:525 #, java-format !\ Used\:\ {0}= #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:558 -!'Keyboard'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?= +'Keyboard'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?='Sleutelbord' nie gevind nie. Bevat u skets die lyn '\#include '? #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:553 -!'Mouse'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?= +'Mouse'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?='Muis' nie gevind nie. Bevat u skets die lyn '\#include \ Serial\ Port\ menu?= -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -!Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?= +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1379,6 +1422,9 @@ Arduino\:\ =Arduino\: #: Editor.java:641 !Show\ Sketch\ Folder= +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 !Show\ verbose\ output\ during\:\ = @@ -1498,6 +1544,10 @@ System\ Default=Stelsel Verstek #, java-format !The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format !The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)= @@ -1522,8 +1572,8 @@ System\ Default=Stelsel Verstek #: Sketch.java:1755 !The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.= -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 !The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.= @@ -1531,6 +1581,9 @@ System\ Default=Stelsel Verstek #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1865,6 +1918,11 @@ Yes=Ja #: Editor.java:936 Editor.java:943 !name\ is\ null= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 !serialMenu\ is\ null= @@ -1932,10 +1990,6 @@ Yes=Ja #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1944,6 +1998,10 @@ Yes=Ja #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_an.po b/arduino-core/src/processing/app/i18n/Resources_an.po index b7c4a52c1b1..ae56e99798a 100644 --- a/arduino-core/src/processing/app/i18n/Resources_an.po +++ b/arduino-core/src/processing/app/i18n/Resources_an.po @@ -17,13 +17,16 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Daniel Martinez , 2014-2015 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: Aragonese (http://www.transifex.com/mbanzi/arduino-ide-15/language/an/)\n" "MIME-Version: 1.0\n" @@ -622,6 +625,11 @@ msgstr "No se podió eliminar a versión antiga de {0}" msgid "Could not replace {0}" msgstr "No podié reemplazar {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "No se podió archivar o programa" @@ -677,6 +685,10 @@ msgstr "Disminuir sangría" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Borrar" @@ -852,6 +864,11 @@ msgstr "Error obtenendo os datos d'a carpeta d'Arduino." msgid "Error inside Serial.{0}()" msgstr "Error interna d'o serie.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -871,6 +888,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Error leyendo preferencias" @@ -905,6 +941,10 @@ msgstr "Error mientres se escribía o bootloader" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Error mientres se escribía o bootloader: falta parametro de configuración '{0}'" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -941,10 +981,6 @@ msgstr "" msgid "Estonian" msgstr "Estonio" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estonio (Estonia)" - #: Editor.java:516 msgid "Examples" msgstr "Eixemplos" @@ -1148,9 +1184,9 @@ msgstr "" msgid "Ignore Case" msgstr "Ignorar mayusclas" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Ignorando o nombre incorrecto d'a biblioteca." +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1213,9 +1249,9 @@ msgstr "" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1242,6 +1278,17 @@ msgstr "Biblioteca invalida trobada en {0}: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "Italián" @@ -1274,9 +1321,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1694,9 +1741,9 @@ msgstr "Referencia" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1733,6 +1780,10 @@ msgstr "Reemplazar con:" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "Rumano" @@ -1856,12 +1907,15 @@ msgid "" " Serial Port menu?" msgstr "Puerto \"{0}\" no trobau. Has seleccionau o correcto d'o menú Ferramientas > Puerto serie?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Puerto {0} no trobau.\nReintentar a puyada con unatro puerto?" +msgid "Serial port {0} not found." +msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1884,6 +1938,10 @@ msgstr "Qüestions d'achustes" msgid "Show Sketch Folder" msgstr "Amostrar Carpeta de programa" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Amostrar salida detallada mientres:" @@ -2055,6 +2113,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "O fichero \"{0}\" ameneste estar dentro d'una\ncarpeta de prochecto clamada \"{1}\".\nCreyar-la, mover o fichero y continar?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2100,10 +2166,11 @@ msgid "" "but anything besides the code will be lost." msgstr "A carpeta d'o programa ha desapareixiu\nIntentaré salvar-lo de nuevo en a mesma ubicación\npero brenca mas que o codigo se perderá." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2121,6 +2188,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2613,6 +2684,12 @@ msgstr "ignorando grandaria de fuent invalido {0}" msgid "name is null" msgstr "o nombre ye vuedo" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu ye vuedo" @@ -2700,11 +2777,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: Nombre de placa invalido, debe estar de la forma \"paquet:arq:placa\" u \"paquet:arq:placa:opcions\"" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: Opcion invalida ta la opción \"{1}\" ta la placa \"{2}\"" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2715,6 +2787,11 @@ msgstr "{0}: Opcion invalida ara a placa \"{1}\"" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: Opcion invalida, debe estar d'a forma \"nombre=valor\"" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_an.properties b/arduino-core/src/processing/app/i18n/Resources_an.properties index d5fb49a9fc3..dcd22dc9e09 100644 --- a/arduino-core/src/processing/app/i18n/Resources_an.properties +++ b/arduino-core/src/processing/app/i18n/Resources_an.properties @@ -17,8 +17,11 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Daniel Martinez , 2014-2015 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Aragonese (http\://www.transifex.com/mbanzi/arduino-ide-15/language/an/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: an\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Aragonese (http\://www.transifex.com/mbanzi/arduino-ide-15/language/an/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: an\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=(requiere reiniciar Arduino) @@ -441,6 +444,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=No se podi\u00f3 eliminar a versi\u00f #, java-format Could\ not\ replace\ {0}=No podi\u00e9 reemplazar {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=No se podi\u00f3 archivar o programa @@ -480,6 +487,9 @@ Decrease\ Indent=Disminuir sangr\u00eda #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=Borrar @@ -611,6 +621,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Error obtenendo os datos d'a carpeta #, java-format Error\ inside\ Serial.{0}()=Error interna d'o serie.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -625,6 +639,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Error ubrindo puerto "{0}" #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 Error\ reading\ preferences=Error leyendo preferencias @@ -650,6 +676,9 @@ Error\ while\ burning\ bootloader.=Error mientres se escrib\u00eda o bootloader #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Error mientres se escrib\u00eda o bootloader\: falta parametro de configuraci\u00f3n '{0}' +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -678,9 +707,6 @@ Error\ while\ uploading\:\ missing\ '{0}'\ configuration\ parameter=Error mientr #: Preferences.java:93 Estonian=Estonio -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Estonio (Estonia) - #: Editor.java:516 Examples=Eixemplos @@ -831,8 +857,8 @@ Hungarian=H\u00fangaro #: FindReplace.java:96 Ignore\ Case=Ignorar mayusclas -#: Base.java:1058 -Ignoring\ bad\ library\ name=Ignorando o nombre incorrecto d'a biblioteca. +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Ignorando treballo con nombre incorrecto. @@ -876,9 +902,9 @@ Indonesian=Indonesio #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -899,6 +925,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=Biblioteca invalida trobada en {0}\: {1} #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=Itali\u00e1n @@ -923,9 +958,9 @@ Latvian=Let\u00f3n #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -1238,9 +1273,9 @@ Reference=Referencia #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1268,6 +1303,9 @@ Replace\ with\:=Reemplazar con\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=Rumano @@ -1359,9 +1397,13 @@ Serial\ Monitor=Monitor serie #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Puerto "{0}" no trobau. Has seleccionau o correcto d'o men\u00fa Ferramientas > Puerto serie? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Puerto {0} no trobau.\nReintentar a puyada con unatro puerto? +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1379,6 +1421,9 @@ Settings\ issues=Q\u00fcestions d'achustes #: Editor.java:641 Show\ Sketch\ Folder=Amostrar Carpeta de programa +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Amostrar salida detallada mientres\: @@ -1498,6 +1543,10 @@ The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=A clase Udp ha estau renombrad #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=O fichero "{0}" ameneste estar dentro d'una\ncarpeta de prochecto clamada "{1}".\nCreyar-la, mover o fichero y continar? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=A biblioteca "{0}" no se puede usar.\nOs nombres de biblioteca han de contener solament numeros y letras.\n(Solament ASCII y sin espacios, y no pueden empecipiar con un numero) @@ -1522,8 +1571,8 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=A carpeta d'o programa ha desapareixiu\nIntentar\u00e9 salvar-lo de nuevo en a mesma ubicaci\u00f3n\npero brenca mas que o codigo se perder\u00e1. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=A carpeta de sketchbook ya no existe.\nArduino cambiar\u00e1 a ubicaci\u00f3n por defecto de\nsketchbook, y creyar\u00e1 una carpeta de prochecto\nnuevo si ye necesario. Arduino alavez deixar\u00e1\n de charrar d'ell mesmo en tercera persona. @@ -1531,6 +1580,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1865,6 +1917,11 @@ ignoring\ invalid\ font\ size\ {0}=ignorando grandaria de fuent invalido {0} #: Editor.java:936 Editor.java:943 name\ is\ null=o nombre ye vuedo +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=serialMenu ye vuedo @@ -1932,10 +1989,6 @@ upload=puyar #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: Nombre de placa invalido, debe estar de la forma "paquet\:arq\:placa" u "paquet\:arq\:placa\:opcions" -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: Opcion invalida ta la opci\u00f3n "{1}" ta la placa "{2}" - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: Opcion invalida ara a placa "{1}" @@ -1944,6 +1997,10 @@ upload=puyar #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Opcion invalida, debe estar d'a forma "nombre\=valor" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: Arquitectura desconoixida diff --git a/arduino-core/src/processing/app/i18n/Resources_ar.po b/arduino-core/src/processing/app/i18n/Resources_ar.po index e23921e9c59..65b242b1c76 100644 --- a/arduino-core/src/processing/app/i18n/Resources_ar.po +++ b/arduino-core/src/processing/app/i18n/Resources_ar.po @@ -17,6 +17,10 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: +# Ahmed Moussa , 2020 # alsadi , 2012 # amas89 , 2012 # belal affouri , 2015 @@ -24,14 +28,15 @@ # Federico Fissore , 2015 # JAMAL ELMERABETE , 2014-2015 # Khaled Saleem Baleesh , 2015-2016 +# Mohamed Bloui , 2019 # Mubarak Qahtani , 2015-2016 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" -"Last-Translator: Cristian Maglie \n" +"PO-Revision-Date: 2020-04-14 15:31+0000\n" +"Last-Translator: Ahmed Moussa \n" "Language-Team: Arabic (http://www.transifex.com/mbanzi/arduino-ide-15/language/ar/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -76,7 +81,7 @@ msgstr "(لا يمكن التحرير والأردوينو تعمل)" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 msgid "(legacy)" -msgstr "" +msgstr "الشكل القديم" #: ../../../processing/app/helpers/CommandlineParser.java:149 msgid "--curdir no longer supported" @@ -131,7 +136,7 @@ msgstr "عن الاردوينو" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 msgid "Acoli" -msgstr "" +msgstr "اشولي" #: ../../../../../app/src/processing/app/Base.java:1177 msgid "Add .ZIP Library..." @@ -155,7 +160,7 @@ msgstr "لغة جنوب إفريقيا‏" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 msgid "Aggressively cache compiled core" -msgstr "" +msgstr "الذاكرة المخبأة الأساسية السريعة" #: ../../../processing/app/Preferences.java:96 msgid "Albanian" @@ -221,7 +226,7 @@ msgstr "الغاء ارشفة الشيفرة البرمجية" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format msgid "Archiving built core (caching) in: {0}" -msgstr "" +msgstr "أرشفة الأساس المبني (الذاكرة المخبأة) في : {0}" #: tools/Archiver.java:75 msgid "" @@ -354,7 +359,7 @@ msgstr "لوحة" #: ../../../../../app//src/processing/app/Editor.java:2824 msgid "Board Info" -msgstr "" +msgstr "معلومات اللوحة" #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 @@ -435,7 +440,7 @@ msgstr "يتم تثبيت محمل برنامج الإقلاع على اللوح msgid "" "CRC doesn't match, file is corrupted. It may be a temporary problem, please " "retry later." -msgstr "" +msgstr "CRC لا تتطابف مع الملف، الملف تالف. ربما تك،ن مشكلة مؤقتة، حاول لاحقاً." #: ../../../processing/app/Base.java:379 #, java-format @@ -444,7 +449,7 @@ msgstr "يمكن ان تمرر واحدة من : {0}" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 msgid "Can't enable external editor" -msgstr "" +msgstr "لا يمكن تمكين المحرر الخارجي" #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 @@ -490,7 +495,7 @@ msgstr "الصينية (تايوان) (Big5)" #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 msgid "Clear output" -msgstr "" +msgstr "مسح المخرجات" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 msgid "Click for a list of unofficial boards support URLs" @@ -502,11 +507,11 @@ msgstr "إغلاق" #: Editor.java:1208 Editor.java:2749 msgid "Comment/Uncomment" -msgstr "ملاحظة \\ الغاء الملاحظة" +msgstr "ملاحظة/ الغاء الملاحظة" #: ../../../../../arduino-core/src/processing/app/I18n.java:30 msgid "Communication" -msgstr "" +msgstr "الاتصال" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 msgid "Compiler warnings: " @@ -548,7 +553,7 @@ msgstr "لا يمكن النسخ لمكان مناسب" #: ../../../../../arduino-core/src/processing/app/Sketch.java:342 #, java-format msgid "Could not create directory \"{0}\"" -msgstr "" +msgstr "لا يمكن إنشاء مجلد \"{0}\"" #: Editor.java:2179 msgid "Could not create the sketch folder." @@ -629,6 +634,11 @@ msgstr "لا يمكن حذف الاصدار السابق من {0}" msgid "Could not replace {0}" msgstr "لا يمكن استبدال {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "لا يمكن كتابة ملف التفضيلات: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "لا يمكن ارشفة الشيفرة البرمجية" @@ -674,7 +684,7 @@ msgstr "تخزين البيانات" #: ../../../../../app/src/processing/app/Editor.java:1386 msgid "Decrease Font Size" -msgstr "" +msgstr "تصغير حجم الخط" #: Editor.java:1224 Editor.java:2765 msgid "Decrease Indent" @@ -684,13 +694,17 @@ msgstr "تقليل البادئة" msgid "Default" msgstr "إفتراضي" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "القالب الإفتراضي" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "حذف" #: ../../../../../arduino-core/src/processing/app/I18n.java:33 msgid "Device Control" -msgstr "" +msgstr "التحكم بالجهاز" #: debug/Uploader.java:199 msgid "" @@ -704,7 +718,7 @@ msgstr "تجاهل كل التغييرات واعد تحميل الشيفرة ا #: ../../../../../arduino-core/src/processing/app/I18n.java:29 msgid "Display" -msgstr "" +msgstr "عرض" #: ../../../processing/app/Preferences.java:438 msgid "Display line numbers" @@ -791,7 +805,7 @@ msgstr "مساعدة لوحة إديسون" #: Editor.java:1130 msgid "Edit" -msgstr "عدل" +msgstr "تحرير" #: Preferences.java:370 msgid "Editor font size: " @@ -839,7 +853,7 @@ msgstr "مشكلة في اضافة الملف" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:272 #, java-format msgid "Error compiling for board {0}." -msgstr "" +msgstr "خطأ في الترجمة للوحة {0}." #: debug/Compiler.java:369 msgid "Error compiling." @@ -859,6 +873,11 @@ msgstr "مشكلة في الحصول على مجلد بيانات الاردوي msgid "Error inside Serial.{0}()" msgstr "Serial.{0}() خطأ داخل " +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "خطأ تحميل القالب {0}: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -878,6 +897,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "خطأ في فتح المنفذ التسلسلي \"{0}\". حاول نصائح المستند التالي http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "خطأ تمرير فهرس المكتبات: {0}\nحاول فتح مدير المكتبات لتحديث فهرس المكتبات." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "خطأ قراءة فهرس المكتبات: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "حدث خطأ في قراءة /معالجة حزمة المجلد المدخل : {0}\n(ربما المشكلة في التصاريح المطلوبة؟)" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "خطأ في قراءة الخصائص" @@ -893,7 +931,7 @@ msgstr "خطافي قرائة ملف الخصائص . رجاءا احذف (او #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:166 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:245 msgid "Error running post install script" -msgstr "" +msgstr "خطأ في تشغيلسكريبت التركيب عن بعد" #: ../../../cc/arduino/packages/DiscoveryManager.java:25 msgid "Error starting discovery method: " @@ -912,6 +950,10 @@ msgstr "حدث خطأ خلال تثبيت محمل برنامج الإقلاع" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "خطأ عند حرق محمل الإقلاع: '{0}' معامل الإعدادات مفقود" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "خطأ في نسخ البوت-لودر: فضلاً، أختار منفذ تسلسلي" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "خطأ عند الترجمة: '{0}' معامل الإعدادات مفقود" @@ -948,23 +990,19 @@ msgstr "خطأ أثناء التحقق أو الرفع" msgid "Estonian" msgstr "Eesti" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "الأستونية (إستونيا)" - #: Editor.java:516 msgid "Examples" msgstr "أمثلة" #: ../../../../../app/src/processing/app/Base.java:1185 msgid "Examples for any board" -msgstr "" +msgstr "أمثلة على أي لوحة" #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 #, java-format msgid "Examples for {0}" -msgstr "" +msgstr "أمثلة على {0}" #: ../../../../../app/src/processing/app/Base.java:1244 msgid "Examples from Custom Libraries" @@ -972,7 +1010,7 @@ msgstr "أمثلة من مكتبات مخصصة" #: ../../../../../app/src/processing/app/Base.java:1329 msgid "Examples from Other Libraries" -msgstr "" +msgstr "أمثلة من مكتبات أخرى" #: ../../../../../app/src/processing/app/Editor.java:753 msgid "Export canceled, changes must first be saved." @@ -990,11 +1028,11 @@ msgstr "فشل في فتح ketch : \n\"{0}\"" #: ../../../../../arduino-core/src/processing/app/SketchFile.java:183 #, java-format msgid "Failed to rename \"{0}\" to \"{1}\"" -msgstr "" +msgstr "فشل في إعادة التسمية من \"{0}\" إلى \"{1}\"" #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 msgid "Failed to rename sketch folder" -msgstr "" +msgstr "فشل في إعادة تسمية مجلد السكتشرز" #: Editor.java:491 msgid "File" @@ -1087,7 +1125,7 @@ msgstr "Deutsch" #: ../../../../../app//src/processing/app/Editor.java:817 msgid "Get Board Info" -msgstr "" +msgstr "الحصول على معلومات اللوحة" #: Editor.java:1054 msgid "Getting Started" @@ -1149,15 +1187,15 @@ msgstr "Magyar" #: ../../../../../app/src/processing/app/Base.java:1319 msgid "INCOMPATIBLE" -msgstr "" +msgstr "غير متوافق" #: FindReplace.java:96 msgid "Ignore Case" msgstr "تجاهل الحالة" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "تجاهل اسم المكتبة الخاطئ" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "تجاهل المكتبة ذات الأسم الغير صالح" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1185,11 +1223,11 @@ msgstr "خطأ مجلد التثبيت لبيئة التطوير" #: ../../../../../app/src/processing/app/Editor.java:1378 msgid "Increase Font Size" -msgstr "" +msgstr "زيادة حجم الخط" #: Editor.java:1216 Editor.java:2757 msgid "Increase Indent" -msgstr "زيادة البادئة" +msgstr "زيادة هامش البداية" #: Preferences.java:101 msgid "Indonesian" @@ -1220,10 +1258,10 @@ msgstr "تم التنصيب" msgid "Installing boards..." msgstr "جاري تثبيت الألواح..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "جاري تثبيت مكتبة:{0}" +msgid "Installing library: {0}:{1}" +msgstr "جاري تثبيت المكتبة: {0}:{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1249,6 +1287,17 @@ msgstr "العثور على مكتبة غير صالحةفي {0}: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "إقتباس غير صحيح: لم يعثر على [{0}] رمز إغلاق" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "الصيغة '{0}' غير صالحة , من اجل مكتبة : {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "نسخة غير صالحة {0}" + #: Preferences.java:102 msgid "Italian" msgstr "Italiano" @@ -1259,7 +1308,7 @@ msgstr "Japanese" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:81 msgid "Kazakh" -msgstr "" +msgstr "كازاخستان" #: Preferences.java:104 msgid "Korean" @@ -1281,10 +1330,10 @@ msgstr "مكتبة أضيفت إلى مكتباتك. تحقق من \"إدراج msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "المكتبة لا تستطيع استخدام كلا المجلدين 'src' و 'utility'. تحقق جيدا من {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "المكتبة مثبته مسبقا: {0} اصدار {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "تم تثبيت المكتبة : {0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1301,7 +1350,7 @@ msgstr "جاري تحميل الإعدادات..." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 #, java-format msgid "Looking for recipes like {0}*{1}" -msgstr "" +msgstr "جار البحث عن اجراءات مثل {0}*{1}" #: ../../../processing/app/Sketch.java:1684 msgid "Low memory available, stability problems may occur." @@ -1363,7 +1412,7 @@ msgstr "اسم لملف جديد:" #: ../../../../../app//src/processing/app/Editor.java:2809 msgid "Native serial port, can't obtain info" -msgstr "" +msgstr "يتعذر الحصول علي معلومات , من المنفذ التسلسلي الاصلي" #: ../../../processing/app/Preferences.java:149 msgid "Nepali" @@ -1375,11 +1424,11 @@ msgstr "شبكة" #: ../../../../../app//src/processing/app/Editor.java:2804 msgid "Network port, can't obtain info" -msgstr "" +msgstr "منفذ الشبكة، لا يمكن الحصول علي معلومات" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Network ports" -msgstr "منفذ الشبكة" +msgstr "منافذ الشبكة" #: ../../../cc/arduino/packages/uploaders/SSHUploader.java:51 msgid "Network upload using programmer not supported" @@ -1566,7 +1615,7 @@ msgstr "الرجاء إستيراد مكتبة Wire من قائمة الشيفر #: ../../../../../app//src/processing/app/Editor.java:2799 msgid "Please select a port to obtain board info" -msgstr "" +msgstr "فضلاً، حدد المنفذ للحصول على معلومات اللوحة" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 @@ -1575,7 +1624,7 @@ msgstr "الرجاء تحديد مبرمجة من قائمة أدوات->الم #: ../../../../../app/src/processing/app/Editor.java:2613 msgid "Plotter not available while serial monitor is open" -msgstr "" +msgstr "الرسم التخطيطي غير متاح مادام المراقب التسلسلي مفتوح." #: Preferences.java:110 msgid "Polish" @@ -1683,7 +1732,7 @@ msgstr "خروج" #: ../../../../../app/src/processing/app/Base.java:1233 msgid "RETIRED" -msgstr "" +msgstr "غير مستخدم" #: ../../../../../arduino-core/src/processing/app/I18n.java:26 msgid "Recommended" @@ -1701,10 +1750,10 @@ msgstr "مرجع" msgid "Remove" msgstr "حذف" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "جاري حذف المكتبة: {0}" +msgid "Removing library: {0}:{1}" +msgstr "حذف المكتبة: {0}:{1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1738,7 +1787,11 @@ msgstr "استبدل بـ:" #: ../../../../../arduino-core/src/processing/app/I18n.java:28 msgid "Retired" -msgstr "" +msgstr "غير مستخدم" + +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr " لم يتم العثورعلي المنفذ التسلسلي، لم لا تحاول الرفع باستخدام منفذ تسلسلي آخر ؟" #: Preferences.java:113 msgid "Romanian" @@ -1798,7 +1851,7 @@ msgstr "اختيار(او انشاء جديد) لمجلد الشيفرة الب #: Editor.java:1198 Editor.java:2739 msgid "Select All" -msgstr "ضلل الكل" +msgstr "تحديد الكل" #: Base.java:2636 msgid "Select a zip file or a folder containing the library you'd like to add" @@ -1843,18 +1896,18 @@ msgstr "مراقب المنفذ التسلسلي \"سيريال بورت\"" #: ../../../../../app/src/processing/app/Editor.java:804 msgid "Serial Plotter" -msgstr "" +msgstr "مخطط تسلسلي" #: ../../../../../app/src/processing/app/Editor.java:2325 #, java-format msgid "" "Serial monitor is not supported on network ports such as {0} for the {1} in " "this release" -msgstr "" +msgstr "جهاز العرض التسلسلي غير مدعوم على منافذ الشبكة مثل {0} لـ {1} في هذا الإصدار" #: ../../../../../app/src/processing/app/Editor.java:2516 msgid "Serial monitor not available while plotter is open" -msgstr "" +msgstr "الرسم التخطيطي غير متاح مادام المراقب التسلسلي مفتوح." #: Serial.java:194 #, java-format @@ -1863,12 +1916,15 @@ msgid "" " Serial Port menu?" msgstr "المنفذ التسلسلي ''{0}'' غير موجود. هل قمت بإختيار المنفذ الصحيح من قائمة الادوات > المنفذ التسلسلي" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "المنافذ التسلسلية غير محددة" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "المنفذ التسلسلي {0} لم يتم العثور عليه.\nحاول الرفع باستخدام منفذ تلسلسي آخر ?" +msgid "Serial port {0} not found." +msgstr "المنفذ التسلسلي {0} غير موجود." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1877,7 +1933,7 @@ msgstr "المنافذ التسلسلية" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:84 #, java-format msgid "Setting build path to {0}" -msgstr "" +msgstr "جار الاعداد الي المسار {0}" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:450 msgid "Settings" @@ -1891,6 +1947,10 @@ msgstr "ضبط المسائل" msgid "Show Sketch Folder" msgstr "اعرض مجلد الشيفرة البرمجية" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "أعرض الوقت والتاريخ" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "عرض المخرجات خلال:" @@ -1955,11 +2015,11 @@ msgstr "مسار كتاب الشيفرة البرمجية غير معروفة" #: ../../../../../arduino-core//src/cc/arduino/contributions/packages/ContributionsIndexer.java:96 #, java-format msgid "Skipping contributed index file {0}, parsing error occured:" -msgstr "" +msgstr "تجاوز الملف المفهرس المتشارك {0}, تفسير الخطأ الذي حدث" #: ../../../../../app/src/processing/app/Preferences.java:185 msgid "Slovak" -msgstr "السلوفاكية" +msgstr "اللغة السلوفاكية" #: ../../../processing/app/Preferences.java:152 msgid "Slovenian" @@ -1981,7 +2041,7 @@ msgstr "بعض الملفات معلمة بـ \"read-only\" , لذلك سوف ت #: ../../../../../arduino-core/src/processing/app/Sketch.java:246 #, java-format msgid "Sorry, the folder \"{0}\" already exists." -msgstr "" +msgstr "عفواً، هذا المجلد \"{0}\" موجود مسبقاً." #: Preferences.java:115 msgid "Spanish" @@ -2017,7 +2077,7 @@ msgstr "Tamil" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:102 msgid "Telugu" -msgstr "" +msgstr "لفة التيلجو" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:100 msgid "Thai" @@ -2052,7 +2112,7 @@ msgstr "The Udp class أعيد تسميته الى EthernetUdp." #: ../../../../../arduino-core/src/processing/app/BaseNoGui.java:177 msgid "The current selected board needs the core '{0}' that is not installed." -msgstr "" +msgstr "اللوحة المختارة المحددة تحتاج الاساس '{0}' وهو غير متوفر" #: Editor.java:2147 #, java-format @@ -2062,6 +2122,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "الملف \"{0}\" بحاجة لأن يكون بداخل \n\"{1}\" مجلد الشيفرة البرمجية المسمى \n أنشاء المجلد ونقل الملفات والمتباعة؟" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "المكتبة \"{0}\" لا يمكن استخدامها.\nاسم المكتبة يجب يبدأ بحرف ، او رقم متبوع بأحرف\nاو ارقاما ، او علامة الشرطة - ، او الشرطه السفلية _ . يجب ألا يزيد الطول عن 63 حرفا." + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2072,7 +2140,7 @@ msgstr "المكتبة \"{0}\" لا يمكن استخدامها.\nاسم الم #: ../../../../../app/src/processing/app/SketchController.java:170 msgid "The main file cannot use an extension" -msgstr "" +msgstr "الملف الرئيسي لا يمكن أن يستخدم تمدد" #: Sketch.java:356 msgid "The name cannot start with a period." @@ -2098,7 +2166,7 @@ msgstr "الشيفرة البرمجية \"{0}\" لا يمكن استخدامها #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format msgid "The sketch already contains a file named \"{0}\"" -msgstr "" +msgstr "السكتش يحتوي على ملف مسبقاً باسم \"{0}\"" #: Sketch.java:1755 msgid "" @@ -2107,11 +2175,12 @@ msgid "" "but anything besides the code will be lost." msgstr "مجلد الشيفرة البرمجية اختفى.\nحاول اعادة حفظه في نفس المكان,\nولكن سيتم فقدان الكود." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "" +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "لقد تم تعديل أسم الشفرة البرمجية.\nأسم الشفرة البرمجية يجب ان يبدأ بحرف او رقم متبوع بحرف.\nاو ارقاما ، او علامة الشرطة - ، او الشرطه السفلية _ . يجب ألا يزيد الطول عن 63 حرفا." #: Base.java:259 msgid "" @@ -2128,6 +2197,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "مجلد كتاب الشيفرة البرمجية المحدد يحتوي على نسختك من منصة التطوير.\nالرجاء إختيار مجلد آخر لكتاب الشيفرة البرمجية." +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "الشكل:" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2216,7 +2289,7 @@ msgstr "غير قادر على فتح مراقب المنفذ التساسلي" #: ../../../../../app/src/processing/app/Editor.java:2709 msgid "Unable to open serial plotter" -msgstr "" +msgstr "غير قادر على فتح مراقب المنفذ التساسلي" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:94 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 @@ -2234,11 +2307,11 @@ msgstr "تراجع" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:85 #, java-format msgid "Unhandled type {0} in context key {1}" -msgstr "" +msgstr "النوع {0} غير مدعوم من خلال السياق رقم {1}" #: ../../../../../app//src/processing/app/Editor.java:2818 msgid "Unknown board" -msgstr "" +msgstr "لوحة غير معروفة" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format @@ -2294,7 +2367,7 @@ msgstr "رفع بواسطة المبرمجة" #: ../../../../../app//src/processing/app/Editor.java:2814 msgid "Upload any sketch to obtain it" -msgstr "" +msgstr "حمل أي سكتش للحصول عليه" #: Editor.java:2403 Editor.java:2439 msgid "Upload canceled." @@ -2358,7 +2431,7 @@ msgstr "جاري التحقق والرفع..." #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:71 msgid "Verifying archive integrity..." -msgstr "" +msgstr "جاري التحقق من سلامة الأرشيف ..." #: ../../../../../app/src/processing/app/Base.java:454 msgid "Verifying..." @@ -2416,7 +2489,7 @@ msgstr "تحذير: هذه النواة لاتدعم تصدير الشيفرة #: ../../../cc/arduino/utils/ArchiveExtractor.java:197 #, java-format msgid "Warning: file {0} links to an absolute path {1}" -msgstr "" +msgstr "تحذير: الملف {0} يشير إلى المسار المجرد {1}" #: ../../../cc/arduino/contributions/packages/ContributionsIndexer.java:133 msgid "Warning: forced trusting untrusted contributions" @@ -2437,13 +2510,13 @@ msgstr "تحذير: مساهمات غير موثوقة، جاري تجاوز ت msgid "" "Warning: platform.txt from core '{0}' contains deprecated {1}, automatically" " converted to {2}. Consider upgrading this core." -msgstr "" +msgstr "تحذير: platform.txt من الاساس '{0}' يفتقد خاصية '{1}', استخدام قيمة افتراضية '{2}'. بأخذ بالاعتبار ترقية هذا الاساس." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:91 msgid "" "Warning: platform.txt from core '{0}' misses property '{1}', using default " "value '{2}'. Consider upgrading this core." -msgstr "" +msgstr "تحذير: platform.txt من الاساس '{0}' يفتقد خاصية '{1}', استخدام قيمة افتراضية '{2}'. خذ بالاعتبار ترقية هذا الاساس." #: ../../../../../app/src/processing/app/Preferences.java:190 msgid "Western Frisian" @@ -2489,7 +2562,7 @@ msgstr "لقد نسيت كتاب الشيفرة البرمجية (sketchbook)" msgid "" "You have unsaved changes!\n" "You must save all your sketches to enable this option." -msgstr "" +msgstr "لديك تغيرات غير محفوظة!يجب عليك حفظ السكتشرز لتمكين هذا الخيار." #: ../../../processing/app/AbstractMonitor.java:92 msgid "" @@ -2620,6 +2693,12 @@ msgstr "تجاهل الخطأ في حجم الخط {0}" msgid "name is null" msgstr "الاسم فارغ" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "لا ملفات ترويسة (.h) موجود في {0}" + #: Editor.java:932 msgid "serialMenu is null" msgstr "قائمة-المنفد التلسلسي فارغة" @@ -2683,7 +2762,7 @@ msgstr "{0} على {1}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:78 #, java-format msgid "{0} pattern is missing" -msgstr "" +msgstr "{0} التنسيق مفقود" #: debug/Compiler.java:365 #, java-format @@ -2698,19 +2777,14 @@ msgstr "{0} | أردوينو {1}" #: ../../../processing/app/Base.java:519 #, java-format msgid "{0}: Invalid argument to --pref, should be of the form \"pref=value\"" -msgstr "" +msgstr "{0}: معامل فير صالح لأجل --تفضيل, يجب أن يكون بالشكل \"تفضيل=قيمة\"" #: ../../../processing/app/Base.java:476 #, java-format msgid "" "{0}: Invalid board name, it should be of the form \"package:arch:board\" or " "\"package:arch:board:options\"" -msgstr "{0}: اسم لوحة غير صالح، يتوجب أن يكون صيغة \"package:arch:board\" أو \"package:arch:board:options\"" - -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" +msgstr "{0}: اسم لوحة غير صالح، يتوجب أن يكون صيغة \"الحزمة:معمار:لوحة\" أو \"الحزمة:معمار:لوحة:اختيارات\"" #: ../../../processing/app/Base.java:507 #, java-format @@ -2722,6 +2796,11 @@ msgstr "{0}: خيار غير صحيح للوحة \"{1}\"" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: خيار غير صالح، يتوجب أن يكون بصيغة \"name=value\"" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: قيمة غير صالحة للاختيار \"{1}\" للوحة \"{2}\"" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" @@ -2740,4 +2819,4 @@ msgstr "{0}: حزمة غير معروفة" #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format msgid "{0}Install this package{1} to use your {2} board" -msgstr "" +msgstr "{0} تركيب هذه الحزمة {1} لتستخدم {2} لوحتك" diff --git a/arduino-core/src/processing/app/i18n/Resources_ar.properties b/arduino-core/src/processing/app/i18n/Resources_ar.properties index 5d209679ff0..943e0929237 100644 --- a/arduino-core/src/processing/app/i18n/Resources_ar.properties +++ b/arduino-core/src/processing/app/i18n/Resources_ar.properties @@ -17,6 +17,10 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: +# Ahmed Moussa , 2020 # alsadi , 2012 # amas89 , 2012 # belal affouri , 2015 @@ -24,8 +28,9 @@ # Federico Fissore , 2015 # JAMAL ELMERABETE , 2014-2015 # Khaled Saleem Baleesh , 2015-2016 +# Mohamed Bloui , 2019 # Mubarak Qahtani , 2015-2016 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Arabic (http\://www.transifex.com/mbanzi/arduino-ide-15/language/ar/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: ar\nPlural-Forms\: nplurals\=6; plural\=n\=\=0 ? 0 \: n\=\=1 ? 1 \: n\=\=2 ? 2 \: n%100>\=3 && n%100<\=10 ? 3 \: n%100>\=11 && n%100<\=99 ? 4 \: 5;\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2020-04-14 15\:31+0000\nLast-Translator\: Ahmed Moussa \nLanguage-Team\: Arabic (http\://www.transifex.com/mbanzi/arduino-ide-15/language/ar/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: ar\nPlural-Forms\: nplurals\=6; plural\=n\=\=0 ? 0 \: n\=\=1 ? 1 \: n\=\=2 ? 2 \: n%100>\=3 && n%100<\=10 ? 3 \: n%100>\=11 && n%100<\=99 ? 4 \: 5;\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=(\u064a\u062a\u0637\u0644\u0628 \u0627\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0644\u0644\u0623\u0631\u062f\u0648\u064a\u0646\u0648) @@ -51,7 +56,7 @@ (edit\ only\ when\ Arduino\ is\ not\ running)=(\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0644\u062a\u062d\u0631\u064a\u0631 \u0648\u0627\u0644\u0623\u0631\u062f\u0648\u064a\u0646\u0648 \u062a\u0639\u0645\u0644) #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 -!(legacy)= +(legacy)=\u0627\u0644\u0634\u0643\u0644 \u0627\u0644\u0642\u062f\u064a\u0645 #: ../../../processing/app/helpers/CommandlineParser.java:149 --curdir\ no\ longer\ supported=--curdir \u063a\u064a\u0631 \u0645\u062f\u0639\u0648\u0645 \u0628\u0639\u062f \u0627\u0644\u0622\u0646 @@ -87,7 +92,7 @@ A\ subfolder\ of\ your\ sketchbook\ is\ not\ a\ valid\ library=\u0627\u0644\u064 About\ Arduino=\u0639\u0646 \u0627\u0644\u0627\u0631\u062f\u0648\u064a\u0646\u0648 #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 -!Acoli= +Acoli=\u0627\u0634\u0648\u0644\u064a #: ../../../../../app/src/processing/app/Base.java:1177 Add\ .ZIP\ Library...=\u0627\u0636\u0641 \u0645\u0643\u062a\u0628\u0629 .ZIP ... @@ -105,7 +110,7 @@ Additional\ Boards\ Manager\ URLs\:\ =\u062a\u062f\u0628\u064a\u0631 \u0639\u064 Afrikaans=\u0644\u063a\u0629 \u062c\u0646\u0648\u0628 \u0625\u0641\u0631\u064a\u0642\u064a\u0627\u200f #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 -!Aggressively\ cache\ compiled\ core= +Aggressively\ cache\ compiled\ core=\u0627\u0644\u0630\u0627\u0643\u0631\u0629 \u0627\u0644\u0645\u062e\u0628\u0623\u0629 \u0627\u0644\u0623\u0633\u0627\u0633\u064a\u0629 \u0627\u0644\u0633\u0631\u064a\u0639\u0629 #: ../../../processing/app/Preferences.java:96 Albanian=\u0623\u0644\u0628\u0627\u0646\u064a @@ -152,7 +157,7 @@ Archive\ sketch\ canceled.=\u0627\u0644\u063a\u0627\u0621 \u0627\u0631\u0634\u06 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format -!Archiving\ built\ core\ (caching)\ in\:\ {0}= +Archiving\ built\ core\ (caching)\ in\:\ {0}=\u0623\u0631\u0634\u0641\u0629 \u0627\u0644\u0623\u0633\u0627\u0633 \u0627\u0644\u0645\u0628\u0646\u064a (\u0627\u0644\u0630\u0627\u0643\u0631\u0629 \u0627\u0644\u0645\u062e\u0628\u0623\u0629) \u0641\u064a \: {0} #: tools/Archiver.java:75 Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.=\u0627\u0631\u0634\u0641\u0629 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 \u0627\u0644\u063a\u064a\u062a \u0644\u0623\u0646\u0647\n \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 \u0644\u0627 \u064a\u0645\u0643\u0646 \u062d\u0641\u0638\u0647\u0627 \u0628\u0634\u0643\u0644 \u0645\u0646\u0627\u0633\u0628 @@ -247,7 +252,7 @@ Belarusian=\u0628\u064a\u0644\u0627\u0631\u0648\u0633\u064a Board=\u0644\u0648\u062d\u0629 #: ../../../../../app//src/processing/app/Editor.java:2824 -!Board\ Info= +Board\ Info=\u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0644\u0648\u062d\u0629 #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 @@ -306,14 +311,14 @@ Burn\ Bootloader=\u062b\u0628\u062a \u0645\u062d\u0645\u0644 \u0628\u0631\u0646\ Burning\ bootloader\ to\ I/O\ Board\ (this\ may\ take\ a\ minute)...=\u064a\u062a\u0645 \u062a\u062b\u0628\u064a\u062a \u0645\u062d\u0645\u0644 \u0628\u0631\u0646\u0627\u0645\u062c \u0627\u0644\u0625\u0642\u0644\u0627\u0639 \u0639\u0644\u0649 \u0627\u0644\u0644\u0648\u062d\u0629 (\u064a\u0645\u0643\u0646 \u0623\u0646 \u064a\u0633\u062a\u063a\u0631\u0642 \u0630\u0644\u0643 \u062f\u0642\u064a\u0642\u0629).. #: ../../../../../arduino-core/src/cc/arduino/contributions/DownloadableContributionsDownloader.java:91 -!CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.= +CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.=CRC \u0644\u0627 \u062a\u062a\u0637\u0627\u0628\u0641 \u0645\u0639 \u0627\u0644\u0645\u0644\u0641\u060c \u0627\u0644\u0645\u0644\u0641 \u062a\u0627\u0644\u0641. \u0631\u0628\u0645\u0627 \u062a\u0643\u060c\u0646 \u0645\u0634\u0643\u0644\u0629 \u0645\u0624\u0642\u062a\u0629\u060c \u062d\u0627\u0648\u0644 \u0644\u0627\u062d\u0642\u0627\u064b. #: ../../../processing/app/Base.java:379 #, java-format Can\ only\ pass\ one\ of\:\ {0}=\u064a\u0645\u0643\u0646 \u0627\u0646 \u062a\u0645\u0631\u0631 \u0648\u0627\u062d\u062f\u0629 \u0645\u0646 \: {0} #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 -!Can't\ enable\ external\ editor= +Can't\ enable\ external\ editor=\u0644\u0627 \u064a\u0645\u0643\u0646 \u062a\u0645\u0643\u064a\u0646 \u0627\u0644\u0645\u062d\u0631\u0631 \u0627\u0644\u062e\u0627\u0631\u062c\u064a #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 @@ -348,7 +353,7 @@ Chinese\ (Taiwan)=\u0627\u0644\u0635\u064a\u0646\u064a\u0629 (\u062a\u0627\u064a Chinese\ (Taiwan)\ (Big5)=\u0627\u0644\u0635\u064a\u0646\u064a\u0629 (\u062a\u0627\u064a\u0648\u0627\u0646) (Big5) #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 -!Clear\ output= +Clear\ output=\u0645\u0633\u062d \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs=\u0627\u0636\u063a\u0637 \u0644\u0644\u0631\u0624\u064a\u0629 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0648\u0627\u0642\u0639 \u0644\u0644\u0623\u0644\u0648\u0627\u062d \u0627\u0644\u063a\u064a\u0631 \u0631\u0633\u0645\u064a\u0629 \u0627\u0644\u0645\u062f\u0639\u0648\u0645\u0629 @@ -357,10 +362,10 @@ Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs=\u0627\u0636\u063a\u0 Close=\u0625\u063a\u0644\u0627\u0642 #: Editor.java:1208 Editor.java:2749 -Comment/Uncomment=\u0645\u0644\u0627\u062d\u0638\u0629 \\ \u0627\u0644\u063a\u0627\u0621 \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0629 +Comment/Uncomment=\u0645\u0644\u0627\u062d\u0638\u0629/ \u0627\u0644\u063a\u0627\u0621 \u0627\u0644\u0645\u0644\u0627\u062d\u0638\u0629 #: ../../../../../arduino-core/src/processing/app/I18n.java:30 -!Communication= +Communication=\u0627\u0644\u0627\u062a\u0635\u0627\u0644 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 Compiler\ warnings\:\ =\u062a\u062d\u0630\u064a\u0631\u0627\u062a \u0627\u0644\u0645\u062a\u0631\u062c\u0645\: @@ -392,7 +397,7 @@ Could\ not\ copy\ to\ a\ proper\ location.=\u0644\u0627 \u064a\u0645\u0643\u0646 #: ../../../../../arduino-core/src/processing/app/Sketch.java:342 #, java-format -!Could\ not\ create\ directory\ "{0}"= +Could\ not\ create\ directory\ "{0}"=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0625\u0646\u0634\u0627\u0621 \u0645\u062c\u0644\u062f "{0}" #: Editor.java:2179 Could\ not\ create\ the\ sketch\ folder.=.\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0646\u0634\u0627\u0621 \u0645\u062c\u0644\u062f \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 @@ -448,6 +453,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=\u0644\u0627 \u064a\u0645\u0643\u0646 #, java-format Could\ not\ replace\ {0}=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0633\u062a\u0628\u062f\u0627\u0644 {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0643\u062a\u0627\u0628\u0629 \u0645\u0644\u0641 \u0627\u0644\u062a\u0641\u0636\u064a\u0644\u0627\u062a\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0631\u0634\u0641\u0629 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 @@ -479,7 +488,7 @@ Data\ Processing=\u0645\u0639\u0627\u0644\u062c\u0629 \u0627\u0644\u0628\u064a\u Data\ Storage=\u062a\u062e\u0632\u064a\u0646 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a #: ../../../../../app/src/processing/app/Editor.java:1386 -!Decrease\ Font\ Size= +Decrease\ Font\ Size=\u062a\u0635\u063a\u064a\u0631 \u062d\u062c\u0645 \u0627\u0644\u062e\u0637 #: Editor.java:1224 Editor.java:2765 Decrease\ Indent=\u062a\u0642\u0644\u064a\u0644 \u0627\u0644\u0628\u0627\u062f\u0626\u0629 @@ -487,11 +496,14 @@ Decrease\ Indent=\u062a\u0642\u0644\u064a\u0644 \u0627\u0644\u0628\u0627\u062f\u #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=\u0625\u0641\u062a\u0631\u0627\u0636\u064a +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=\u0627\u0644\u0642\u0627\u0644\u0628 \u0627\u0644\u0625\u0641\u062a\u0631\u0627\u0636\u064a + #: EditorHeader.java:314 Sketch.java:591 Delete=\u062d\u0630\u0641 #: ../../../../../arduino-core/src/processing/app/I18n.java:33 -!Device\ Control= +Device\ Control=\u0627\u0644\u062a\u062d\u0643\u0645 \u0628\u0627\u0644\u062c\u0647\u0627\u0632 #: debug/Uploader.java:199 Device\ is\ not\ responding,\ check\ the\ right\ serial\ port\ is\ selected\ or\ RESET\ the\ board\ right\ before\ exporting=\u0627\u0644\u062c\u0647\u0627\u0632 \u0644\u0627 \u064a\u0633\u062a\u062c\u064a\u0628, \u062a\u0623\u0643\u062f \u0645\u0646 \u0627\u0644\u0645\u0646\u0641\u0630 port \u0627\u0648 \u0642\u0645 \u0628\u0627\u0639\u062f\u0627\u062a \u0627\u0644\u062a\u0634\u063a\u064a\u0644 RESET \u0644\u0644\u0628\u0648\u0631\u062f \u0642\u0628\u0644 \u0627\u0644\u0631\u0641\u0639 @@ -500,7 +512,7 @@ Device\ is\ not\ responding,\ check\ the\ right\ serial\ port\ is\ selected\ or\ Discard\ all\ changes\ and\ reload\ sketch?=\u062a\u062c\u0627\u0647\u0644 \u0643\u0644 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0648\u0627\u0639\u062f \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 #: ../../../../../arduino-core/src/processing/app/I18n.java:29 -!Display= +Display=\u0639\u0631\u0636 #: ../../../processing/app/Preferences.java:438 Display\ line\ numbers=\u0639\u0631\u0636 \u0623\u0631\u0642\u0627\u0645 \u0627\u0644\u0633\u0637\u0648\u0631 @@ -565,7 +577,7 @@ Dutch\ (Netherlands)=\u0627\u0644\u0647\u0648\u0644\u0646\u062f\u064a\u0629 (\u0 Edison\ Help=\u0645\u0633\u0627\u0639\u062f\u0629 \u0644\u0648\u062d\u0629 \u0625\u062f\u064a\u0633\u0648\u0646 #: Editor.java:1130 -Edit=\u0639\u062f\u0644 +Edit=\u062a\u062d\u0631\u064a\u0631 #: Preferences.java:370 Editor\ font\ size\:\ =\u062d\u062c\u0645 \u062e\u0637 \u0627\u0644\u0645\u062d\u0631\u0631\: @@ -602,7 +614,7 @@ Error\ adding\ file=\u0645\u0634\u0643\u0644\u0629 \u0641\u064a \u0627\u0636\u06 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:272 #, java-format -!Error\ compiling\ for\ board\ {0}.= +Error\ compiling\ for\ board\ {0}.=\u062e\u0637\u0623 \u0641\u064a \u0627\u0644\u062a\u0631\u062c\u0645\u0629 \u0644\u0644\u0648\u062d\u0629 {0}. #: debug/Compiler.java:369 Error\ compiling.=\u062e\u0637\u0623 \u0641\u064a \u0627\u0644\u062a\u0631\u062c\u0645\u0629. @@ -618,6 +630,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=\u0645\u0634\u0643\u0644\u0629 \u064 #, java-format Error\ inside\ Serial.{0}()=Serial.{0}() \u062e\u0637\u0623 \u062f\u0627\u062e\u0644 +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=\u062e\u0637\u0623 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0642\u0627\u0644\u0628 {0}\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -632,6 +648,18 @@ Error\ opening\ serial\ port\ ''{0}''.=\u062e\u0637\u0623 \u0641\u064a \u0641\u0 #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=\u062e\u0637\u0623 \u0641\u064a \u0641\u062a\u062d \u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a "{0}". \u062d\u0627\u0648\u0644 \u0646\u0635\u0627\u0626\u062d \u0627\u0644\u0645\u0633\u062a\u0646\u062f \u0627\u0644\u062a\u0627\u0644\u064a http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=\u062e\u0637\u0623 \u062a\u0645\u0631\u064a\u0631 \u0641\u0647\u0631\u0633 \u0627\u0644\u0645\u0643\u062a\u0628\u0627\u062a\: {0}\n\u062d\u0627\u0648\u0644 \u0641\u062a\u062d \u0645\u062f\u064a\u0631 \u0627\u0644\u0645\u0643\u062a\u0628\u0627\u062a \u0644\u062a\u062d\u062f\u064a\u062b \u0641\u0647\u0631\u0633 \u0627\u0644\u0645\u0643\u062a\u0628\u0627\u062a. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=\u062e\u0637\u0623 \u0642\u0631\u0627\u0621\u0629 \u0641\u0647\u0631\u0633 \u0627\u0644\u0645\u0643\u062a\u0628\u0627\u062a\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=\u062d\u062f\u062b \u062e\u0637\u0623 \u0641\u064a \u0642\u0631\u0627\u0621\u0629 /\u0645\u0639\u0627\u0644\u062c\u0629 \u062d\u0632\u0645\u0629 \u0627\u0644\u0645\u062c\u0644\u062f \u0627\u0644\u0645\u062f\u062e\u0644 \: {0}\n(\u0631\u0628\u0645\u0627 \u0627\u0644\u0645\u0634\u0643\u0644\u0629 \u0641\u064a \u0627\u0644\u062a\u0635\u0627\u0631\u064a\u062d \u0627\u0644\u0645\u0637\u0644\u0648\u0628\u0629\u061f) + #: Preferences.java:277 Error\ reading\ preferences=\u062e\u0637\u0623 \u0641\u064a \u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u062e\u0635\u0627\u0626\u0635 @@ -642,7 +670,7 @@ Error\ reading\ the\ preferences\ file.\ Please\ delete\ (or\ move)\n{0}\ and\ r #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:146 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:166 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:245 -!Error\ running\ post\ install\ script= +Error\ running\ post\ install\ script=\u062e\u0637\u0623 \u0641\u064a \u062a\u0634\u063a\u064a\u0644\u0633\u0643\u0631\u064a\u0628\u062a \u0627\u0644\u062a\u0631\u0643\u064a\u0628 \u0639\u0646 \u0628\u0639\u062f #: ../../../cc/arduino/packages/DiscoveryManager.java:25 Error\ starting\ discovery\ method\:\ =\u0627\u0644\u0634\u0631\u0648\u0639 \u0641\u064a \u062e\u0637\u0623 \u0637\u0631\u064a\u0642\u0629 \u0627\u0643\u062a\u0634\u0627\u0641\: @@ -657,6 +685,9 @@ Error\ while\ burning\ bootloader.=\u062d\u062f\u062b \u062e\u0637\u0623 \u062e\ #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=\u062e\u0637\u0623 \u0639\u0646\u062f \u062d\u0631\u0642 \u0645\u062d\u0645\u0644 \u0627\u0644\u0625\u0642\u0644\u0627\u0639\: '{0}' \u0645\u0639\u0627\u0645\u0644 \u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0645\u0641\u0642\u0648\u062f +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=\u062e\u0637\u0623 \u0641\u064a \u0646\u0633\u062e \u0627\u0644\u0628\u0648\u062a-\u0644\u0648\u062f\u0631\: \u0641\u0636\u0644\u0627\u064b\u060c \u0623\u062e\u062a\u0627\u0631 \u0645\u0646\u0641\u0630 \u062a\u0633\u0644\u0633\u0644\u064a + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=\u062e\u0637\u0623 \u0639\u0646\u062f \u0627\u0644\u062a\u0631\u062c\u0645\u0629\: '{0}' \u0645\u0639\u0627\u0645\u0644 \u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a \u0645\u0641\u0642\u0648\u062f @@ -685,25 +716,22 @@ Error\ while\ verifying/uploading=\u062e\u0637\u0623 \u0623\u062b\u0646\u0627\u0 #: Preferences.java:93 Estonian=Eesti -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=\u0627\u0644\u0623\u0633\u062a\u0648\u0646\u064a\u0629 (\u0625\u0633\u062a\u0648\u0646\u064a\u0627) - #: Editor.java:516 Examples=\u0623\u0645\u062b\u0644\u0629 #: ../../../../../app/src/processing/app/Base.java:1185 -!Examples\ for\ any\ board= +Examples\ for\ any\ board=\u0623\u0645\u062b\u0644\u0629 \u0639\u0644\u0649 \u0623\u064a \u0644\u0648\u062d\u0629 #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 #, java-format -!Examples\ for\ {0}= +Examples\ for\ {0}=\u0623\u0645\u062b\u0644\u0629 \u0639\u0644\u0649 {0} #: ../../../../../app/src/processing/app/Base.java:1244 Examples\ from\ Custom\ Libraries=\u0623\u0645\u062b\u0644\u0629 \u0645\u0646 \u0645\u0643\u062a\u0628\u0627\u062a \u0645\u062e\u0635\u0635\u0629 #: ../../../../../app/src/processing/app/Base.java:1329 -!Examples\ from\ Other\ Libraries= +Examples\ from\ Other\ Libraries=\u0623\u0645\u062b\u0644\u0629 \u0645\u0646 \u0645\u0643\u062a\u0628\u0627\u062a \u0623\u062e\u0631\u0649 #: ../../../../../app/src/processing/app/Editor.java:753 Export\ canceled,\ changes\ must\ first\ be\ saved.=\u0623\u0644\u063a\u064a \u0627\u0644\u062a\u0635\u062f\u064a\u0631\u060c \u064a\u062c\u0628 \u062d\u0641\u0638 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0623\u0648\u0644\u0627. @@ -717,10 +745,10 @@ Failed\ to\ open\ sketch\:\ "{0}"=\u0641\u0634\u0644 \u0641\u064a \u0641\u062a\u #: ../../../../../arduino-core/src/processing/app/SketchFile.java:183 #, java-format -!Failed\ to\ rename\ "{0}"\ to\ "{1}"= +Failed\ to\ rename\ "{0}"\ to\ "{1}"=\u0641\u0634\u0644 \u0641\u064a \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u062a\u0633\u0645\u064a\u0629 \u0645\u0646 "{0}" \u0625\u0644\u0649 "{1}" #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 -!Failed\ to\ rename\ sketch\ folder= +Failed\ to\ rename\ sketch\ folder=\u0641\u0634\u0644 \u0641\u064a \u0625\u0639\u0627\u062f\u0629 \u062a\u0633\u0645\u064a\u0629 \u0645\u062c\u0644\u062f \u0627\u0644\u0633\u0643\u062a\u0634\u0631\u0632 #: Editor.java:491 File=\u0645\u0644\u0641 @@ -789,7 +817,7 @@ Georgian=\u0627\u0644\u062c\u0648\u0631\u062c\u064a\u0629 German=Deutsch #: ../../../../../app//src/processing/app/Editor.java:817 -!Get\ Board\ Info= +Get\ Board\ Info=\u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0644\u0648\u062d\u0629 #: Editor.java:1054 Getting\ Started=\u0627\u0644\u0634\u0631\u0648\u0639 \u0641\u064a \u0627\u0644\u0628\u062f\u0621 @@ -833,13 +861,13 @@ How\ very\ Borges\ of\ you=\u0645\u0627 \u0647\u0630\u0647 \u0627\u0644\u0633\u0 Hungarian=Magyar #: ../../../../../app/src/processing/app/Base.java:1319 -!INCOMPATIBLE= +INCOMPATIBLE=\u063a\u064a\u0631 \u0645\u062a\u0648\u0627\u0641\u0642 #: FindReplace.java:96 Ignore\ Case=\u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u062d\u0627\u0644\u0629 -#: Base.java:1058 -Ignoring\ bad\ library\ name=\u062a\u062c\u0627\u0647\u0644 \u0627\u0633\u0645 \u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u0627\u0644\u062e\u0627\u0637\u0626 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=\u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u0630\u0627\u062a \u0627\u0644\u0623\u0633\u0645 \u0627\u0644\u063a\u064a\u0631 \u0635\u0627\u0644\u062d #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=\u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 \u0630\u0627\u062a \u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u062e\u0627\u0637\u0626 @@ -855,10 +883,10 @@ Include\ Library=\u0625\u062f\u0631\u0627\u062c \u0645\u0643\u062a\u0628\u0629 Incorrect\ IDE\ installation\ folder=\u062e\u0637\u0623 \u0645\u062c\u0644\u062f \u0627\u0644\u062a\u062b\u0628\u064a\u062a \u0644\u0628\u064a\u0626\u0629 \u0627\u0644\u062a\u0637\u0648\u064a\u0631 #: ../../../../../app/src/processing/app/Editor.java:1378 -!Increase\ Font\ Size= +Increase\ Font\ Size=\u0632\u064a\u0627\u062f\u0629 \u062d\u062c\u0645 \u0627\u0644\u062e\u0637 #: Editor.java:1216 Editor.java:2757 -Increase\ Indent=\u0632\u064a\u0627\u062f\u0629 \u0627\u0644\u0628\u0627\u062f\u0626\u0629 +Increase\ Indent=\u0632\u064a\u0627\u062f\u0629 \u0647\u0627\u0645\u0634 \u0627\u0644\u0628\u062f\u0627\u064a\u0629 #: Preferences.java:101 Indonesian=Bahasa Indonesia @@ -883,9 +911,9 @@ Installed=\u062a\u0645 \u0627\u0644\u062a\u0646\u0635\u064a\u0628 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=\u062c\u0627\u0631\u064a \u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0623\u0644\u0648\u0627\u062d... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=\u062c\u0627\u0631\u064a \u062a\u062b\u0628\u064a\u062a \u0645\u0643\u062a\u0628\u0629\:{0} +Installing\ library\:\ {0}\:{1}=\u062c\u0627\u0631\u064a \u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u0643\u062a\u0628\u0629\: {0}\:{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -906,6 +934,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=\u0627\u0644\u0639\u062b\u0648\u0631 \u0 #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=\u0625\u0642\u062a\u0628\u0627\u0633 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d\: \u0644\u0645 \u064a\u0639\u062b\u0631 \u0639\u0644\u0649 [{0}] \u0631\u0645\u0632 \u0625\u063a\u0644\u0627\u0642 +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=\u0627\u0644\u0635\u064a\u063a\u0629 '{0}' \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629 , \u0645\u0646 \u0627\u062c\u0644 \u0645\u0643\u062a\u0628\u0629 \: {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=\u0646\u0633\u062e\u0629 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629 {0} + #: Preferences.java:102 Italian=Italiano @@ -913,7 +950,7 @@ Italian=Italiano Japanese=Japanese #: ../../../../../app/src/cc/arduino/i18n/Languages.java:81 -!Kazakh= +Kazakh=\u0643\u0627\u0632\u0627\u062e\u0633\u062a\u0627\u0646 #: Preferences.java:104 Korean=Korean @@ -930,9 +967,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=\u0645\u06 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=\u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u0644\u0627 \u062a\u0633\u062a\u0637\u064a\u0639 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0643\u0644\u0627 \u0627\u0644\u0645\u062c\u0644\u062f\u064a\u0646 'src' \u0648 'utility'. \u062a\u062d\u0642\u0642 \u062c\u064a\u062f\u0627 \u0645\u0646 {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=\u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u0645\u062b\u0628\u062a\u0647 \u0645\u0633\u0628\u0642\u0627\: {0} \u0627\u0635\u062f\u0627\u0631 {1} +Library\ is\ already\ installed\:\ {0}\:{1}=\u062a\u0645 \u062a\u062b\u0628\u064a\u062a \u0627\u0644\u0645\u0643\u062a\u0628\u0629 \: {0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=\u0631\u0642\u0645 \u0627\u0644\u0633\u0637\u0631\: @@ -945,7 +982,7 @@ Loading\ configuration...=\u062c\u0627\u0631\u064a \u062a\u062d\u0645\u064a\u064 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 #, java-format -!Looking\ for\ recipes\ like\ {0}*{1}= +Looking\ for\ recipes\ like\ {0}*{1}=\u062c\u0627\u0631 \u0627\u0644\u0628\u062d\u062b \u0639\u0646 \u0627\u062c\u0631\u0627\u0621\u0627\u062a \u0645\u062b\u0644 {0}*{1} #: ../../../processing/app/Sketch.java:1684 Low\ memory\ available,\ stability\ problems\ may\ occur.=\u0630\u0627\u0643\u0631\u0629 \u0645\u0646\u062e\u0641\u0636\u0629 \u0645\u062a\u0628\u0642\u064a\u0629\u060c \u0645\u0634\u0627\u0643\u0644 \u0639\u062f\u0645 \u0625\u0633\u062a\u0642\u0631\u0627\u0631 \u0642\u062f \u062a\u062d\u062f\u062b. @@ -992,7 +1029,7 @@ Must\ specify\ exactly\ one\ sketch\ file=\u064a\u062c\u0628 \u062a\u062d\u062f\ Name\ for\ new\ file\:=\u0627\u0633\u0645 \u0644\u0645\u0644\u0641 \u062c\u062f\u064a\u062f\: #: ../../../../../app//src/processing/app/Editor.java:2809 -!Native\ serial\ port,\ can't\ obtain\ info= +Native\ serial\ port,\ can't\ obtain\ info=\u064a\u062a\u0639\u0630\u0631 \u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u064a \u0645\u0639\u0644\u0648\u0645\u0627\u062a , \u0645\u0646 \u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a \u0627\u0644\u0627\u0635\u0644\u064a #: ../../../processing/app/Preferences.java:149 Nepali=\u0627\u0644\u0646\u064a\u0628\u0627\u0644\u064a\u0629 @@ -1001,10 +1038,10 @@ Nepali=\u0627\u0644\u0646\u064a\u0628\u0627\u0644\u064a\u0629 Network=\u0634\u0628\u0643\u0629 #: ../../../../../app//src/processing/app/Editor.java:2804 -!Network\ port,\ can't\ obtain\ info= +Network\ port,\ can't\ obtain\ info=\u0645\u0646\u0641\u0630 \u0627\u0644\u0634\u0628\u0643\u0629\u060c \u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u064a \u0645\u0639\u0644\u0648\u0645\u0627\u062a #: ../../../../../app/src/processing/app/Editor.java:65 -Network\ ports=\u0645\u0646\u0641\u0630 \u0627\u0644\u0634\u0628\u0643\u0629 +Network\ ports=\u0645\u0646\u0627\u0641\u0630 \u0627\u0644\u0634\u0628\u0643\u0629 #: ../../../cc/arduino/packages/uploaders/SSHUploader.java:51 Network\ upload\ using\ programmer\ not\ supported=\u0627\u0644\u0631\u0641\u0639 \u0644\u0644\u0634\u0628\u0643\u0629 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0627\u0644\u0645\u0628\u0631\u0645\u062c\u0629 \u063a\u064a\u0631 \u0645\u062f\u0639\u0648\u0645 @@ -1144,14 +1181,14 @@ Please\ import\ the\ SPI\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.= Please\ import\ the\ Wire\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.=\u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u0633\u062a\u064a\u0631\u0627\u062f \u0645\u0643\u062a\u0628\u0629 Wire \u0645\u0646 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 > \u0627\u0633\u062a\u064a\u0631\u0627\u062f \u0645\u0643\u062a\u0628\u0629 #: ../../../../../app//src/processing/app/Editor.java:2799 -!Please\ select\ a\ port\ to\ obtain\ board\ info= +Please\ select\ a\ port\ to\ obtain\ board\ info=\u0641\u0636\u0644\u0627\u064b\u060c \u062d\u062f\u062f \u0627\u0644\u0645\u0646\u0641\u0630 \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u0649 \u0645\u0639\u0644\u0648\u0645\u0627\u062a \u0627\u0644\u0644\u0648\u062d\u0629 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 Please\ select\ a\ programmer\ from\ Tools->Programmer\ menu=\u0627\u0644\u0631\u062c\u0627\u0621 \u062a\u062d\u062f\u064a\u062f \u0645\u0628\u0631\u0645\u062c\u0629 \u0645\u0646 \u0642\u0627\u0626\u0645\u0629 \u0623\u062f\u0648\u0627\u062a->\u0627\u0644\u0645\u0628\u0631\u0645\u062c\u0629 #: ../../../../../app/src/processing/app/Editor.java:2613 -!Plotter\ not\ available\ while\ serial\ monitor\ is\ open= +Plotter\ not\ available\ while\ serial\ monitor\ is\ open=\u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u062a\u062e\u0637\u064a\u0637\u064a \u063a\u064a\u0631 \u0645\u062a\u0627\u062d \u0645\u0627\u062f\u0627\u0645 \u0627\u0644\u0645\u0631\u0627\u0642\u0628 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a \u0645\u0641\u062a\u0648\u062d. #: Preferences.java:110 Polish=Polish @@ -1231,7 +1268,7 @@ Progress\ {0}=\u062a\u0642\u062f\u0645 {0} Quit=\u062e\u0631\u0648\u062c #: ../../../../../app/src/processing/app/Base.java:1233 -!RETIRED= +RETIRED=\u063a\u064a\u0631 \u0645\u0633\u062a\u062e\u062f\u0645 #: ../../../../../arduino-core/src/processing/app/I18n.java:26 Recommended=\u0645\u0633\u062a\u062d\u0633\u0646 @@ -1245,9 +1282,9 @@ Reference=\u0645\u0631\u062c\u0639 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=\u062d\u0630\u0641 -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=\u062c\u0627\u0631\u064a \u062d\u0630\u0641 \u0627\u0644\u0645\u0643\u062a\u0628\u0629\: {0} +Removing\ library\:\ {0}\:{1}=\u062d\u0630\u0641 \u0627\u0644\u0645\u0643\u062a\u0628\u0629\: {0}\:{1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1273,7 +1310,10 @@ Replace\ the\ existing\ version\ of\ {0}?=\u0627\u0633\u062a\u0628\u062f\u0627\u Replace\ with\:=\u0627\u0633\u062a\u0628\u062f\u0644 \u0628\u0640\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 -!Retired= +Retired=\u063a\u064a\u0631 \u0645\u0633\u062a\u062e\u062f\u0645 + +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=\ \u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631\u0639\u0644\u064a \u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a\u060c \u0644\u0645 \u0644\u0627 \u062a\u062d\u0627\u0648\u0644 \u0627\u0644\u0631\u0641\u0639 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0645\u0646\u0641\u0630 \u062a\u0633\u0644\u0633\u0644\u064a \u0622\u062e\u0631 \u061f #: Preferences.java:113 Romanian=Romanian @@ -1319,7 +1359,7 @@ Search\ all\ Sketch\ Tabs=\u0627\u0628\u062d\u062b \u0641\u064a \u0643\u0644 \u0 Select\ (or\ create\ new)\ folder\ for\ sketches...=\u0627\u062e\u062a\u064a\u0627\u0631(\u0627\u0648 \u0627\u0646\u0634\u0627\u0621 \u062c\u062f\u064a\u062f) \u0644\u0645\u062c\u0644\u062f \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 #: Editor.java:1198 Editor.java:2739 -Select\ All=\u0636\u0644\u0644 \u0627\u0644\u0643\u0644 +Select\ All=\u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0643\u0644 #: Base.java:2636 Select\ a\ zip\ file\ or\ a\ folder\ containing\ the\ library\ you'd\ like\ to\ add=\u0627\u062e\u062a\u0631 \u0645\u0644\u0641 \u0645\u0636\u063a\u0648\u0637 "zip" \u0627\u0648 \u0645\u062c\u0644\u062f \u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u0627\u0644\u0630\u064a \u062a\u0631\u063a\u0628 \u0628\u0625\u0636\u0627\u0641\u062a\u0647 @@ -1353,29 +1393,33 @@ Sensors=\u062d\u0633\u0627\u0633\u0627\u062a Serial\ Monitor=\u0645\u0631\u0627\u0642\u0628 \u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a "\u0633\u064a\u0631\u064a\u0627\u0644 \u0628\u0648\u0631\u062a" #: ../../../../../app/src/processing/app/Editor.java:804 -!Serial\ Plotter= +Serial\ Plotter=\u0645\u062e\u0637\u0637 \u062a\u0633\u0644\u0633\u0644\u064a #: ../../../../../app/src/processing/app/Editor.java:2325 #, java-format -!Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release= +Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release=\u062c\u0647\u0627\u0632 \u0627\u0644\u0639\u0631\u0636 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a \u063a\u064a\u0631 \u0645\u062f\u0639\u0648\u0645 \u0639\u0644\u0649 \u0645\u0646\u0627\u0641\u0630 \u0627\u0644\u0634\u0628\u0643\u0629 \u0645\u062b\u0644 {0} \u0644\u0640 {1} \u0641\u064a \u0647\u0630\u0627 \u0627\u0644\u0625\u0635\u062f\u0627\u0631 #: ../../../../../app/src/processing/app/Editor.java:2516 -!Serial\ monitor\ not\ available\ while\ plotter\ is\ open= +Serial\ monitor\ not\ available\ while\ plotter\ is\ open=\u0627\u0644\u0631\u0633\u0645 \u0627\u0644\u062a\u062e\u0637\u064a\u0637\u064a \u063a\u064a\u0631 \u0645\u062a\u0627\u062d \u0645\u0627\u062f\u0627\u0645 \u0627\u0644\u0645\u0631\u0627\u0642\u0628 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a \u0645\u0641\u062a\u0648\u062d. #: Serial.java:194 #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=\u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a ''{0}'' \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f. \u0647\u0644 \u0642\u0645\u062a \u0628\u0625\u062e\u062a\u064a\u0627\u0631 \u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u0635\u062d\u064a\u062d \u0645\u0646 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0627\u062f\u0648\u0627\u062a > \u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=\u0627\u0644\u0645\u0646\u0627\u0641\u0630 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a\u0629 \u063a\u064a\u0631 \u0645\u062d\u062f\u062f\u0629 + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=\u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a {0} \u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u064a\u0647.\n\u062d\u0627\u0648\u0644 \u0627\u0644\u0631\u0641\u0639 \u0628\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0645\u0646\u0641\u0630 \u062a\u0644\u0633\u0644\u0633\u064a \u0622\u062e\u0631 ? +Serial\ port\ {0}\ not\ found.=\u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a {0} \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=\u0627\u0644\u0645\u0646\u0627\u0641\u0630 \u0627\u0644\u062a\u0633\u0644\u0633\u0644\u064a\u0629 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:84 #, java-format -!Setting\ build\ path\ to\ {0}= +Setting\ build\ path\ to\ {0}=\u062c\u0627\u0631 \u0627\u0644\u0627\u0639\u062f\u0627\u062f \u0627\u0644\u064a \u0627\u0644\u0645\u0633\u0627\u0631 {0} #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:450 Settings=\u0623\u0639\u062f\u0627\u062f\u0627\u062a @@ -1386,6 +1430,9 @@ Settings\ issues=\u0636\u0628\u0637 \u0627\u0644\u0645\u0633\u0627\u0626\u0644 #: Editor.java:641 Show\ Sketch\ Folder=\u0627\u0639\u0631\u0636 \u0645\u062c\u0644\u062f \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=\u0623\u0639\u0631\u0636 \u0627\u0644\u0648\u0642\u062a \u0648\u0627\u0644\u062a\u0627\u0631\u064a\u062e + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =\u0639\u0631\u0636 \u0627\u0644\u0645\u062e\u0631\u062c\u0627\u062a \u062e\u0644\u0627\u0644\: @@ -1431,10 +1478,10 @@ Sketchbook\ path\ not\ defined=\u0645\u0633\u0627\u0631 \u0643\u062a\u0627\u0628 #: ../../../../../arduino-core//src/cc/arduino/contributions/packages/ContributionsIndexer.java:96 #, java-format -!Skipping\ contributed\ index\ file\ {0},\ parsing\ error\ occured\:= +Skipping\ contributed\ index\ file\ {0},\ parsing\ error\ occured\:=\u062a\u062c\u0627\u0648\u0632 \u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0645\u0641\u0647\u0631\u0633 \u0627\u0644\u0645\u062a\u0634\u0627\u0631\u0643 {0}, \u062a\u0641\u0633\u064a\u0631 \u0627\u0644\u062e\u0637\u0623 \u0627\u0644\u0630\u064a \u062d\u062f\u062b #: ../../../../../app/src/processing/app/Preferences.java:185 -Slovak=\u0627\u0644\u0633\u0644\u0648\u0641\u0627\u0643\u064a\u0629 +Slovak=\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0633\u0644\u0648\u0641\u0627\u0643\u064a\u0629 #: ../../../processing/app/Preferences.java:152 Slovenian=\u0627\u0644\u0644\u063a\u0629 \u0627\u0644\u0633\u0644\u0648\u0641\u064a\u0646\u064a\u0629 @@ -1447,7 +1494,7 @@ Some\ files\ are\ marked\ "read-only",\ so\ you'll\nneed\ to\ re-save\ this\ ske #: ../../../../../arduino-core/src/processing/app/Sketch.java:246 #, java-format -!Sorry,\ the\ folder\ "{0}"\ already\ exists.= +Sorry,\ the\ folder\ "{0}"\ already\ exists.=\u0639\u0641\u0648\u0627\u064b\u060c \u0647\u0630\u0627 \u0627\u0644\u0645\u062c\u0644\u062f "{0}" \u0645\u0648\u062c\u0648\u062f \u0645\u0633\u0628\u0642\u0627\u064b. #: Preferences.java:115 Spanish=Spanish @@ -1474,7 +1521,7 @@ Talossan=\u062a\u0627\u0644\u0648\u0633\u0627\u0646 Tamil=Tamil #: ../../../../../app/src/cc/arduino/i18n/Languages.java:102 -!Telugu= +Telugu=\u0644\u0641\u0629 \u0627\u0644\u062a\u064a\u0644\u062c\u0648 #: ../../../../../app/src/cc/arduino/i18n/Languages.java:100 Thai=\u0627\u0644\u062a\u0627\u064a\u0644\u0627\u0646\u062f\u064a\u0629 @@ -1499,18 +1546,22 @@ The\ Server\ class\ has\ been\ renamed\ EthernetServer.=\u0627\u0644\u0640 Serve The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=The Udp class \u0623\u0639\u064a\u062f \u062a\u0633\u0645\u064a\u062a\u0647 \u0627\u0644\u0649 EthernetUdp. #: ../../../../../arduino-core/src/processing/app/BaseNoGui.java:177 -!The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed.= +The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed.=\u0627\u0644\u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u062e\u062a\u0627\u0631\u0629 \u0627\u0644\u0645\u062d\u062f\u062f\u0629 \u062a\u062d\u062a\u0627\u062c \u0627\u0644\u0627\u0633\u0627\u0633 '{0}' \u0648\u0647\u0648 \u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631 #: Editor.java:2147 #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=\u0627\u0644\u0645\u0644\u0641 "{0}" \u0628\u062d\u0627\u062c\u0629 \u0644\u0623\u0646 \u064a\u0643\u0648\u0646 \u0628\u062f\u0627\u062e\u0644 \n"{1}" \u0645\u062c\u0644\u062f \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 \u0627\u0644\u0645\u0633\u0645\u0649 \n \u0623\u0646\u0634\u0627\u0621 \u0627\u0644\u0645\u062c\u0644\u062f \u0648\u0646\u0642\u0644 \u0627\u0644\u0645\u0644\u0641\u0627\u062a \u0648\u0627\u0644\u0645\u062a\u0628\u0627\u0639\u0629\u061f +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=\u0627\u0644\u0645\u0643\u062a\u0628\u0629 "{0}" \u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627.\n\u0627\u0633\u0645 \u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u064a\u062c\u0628 \u064a\u0628\u062f\u0623 \u0628\u062d\u0631\u0641 \u060c \u0627\u0648 \u0631\u0642\u0645 \u0645\u062a\u0628\u0648\u0639 \u0628\u0623\u062d\u0631\u0641\n\u0627\u0648 \u0627\u0631\u0642\u0627\u0645\u0627 \u060c \u0627\u0648 \u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0634\u0631\u0637\u0629 - \u060c \u0627\u0648 \u0627\u0644\u0634\u0631\u0637\u0647 \u0627\u0644\u0633\u0641\u0644\u064a\u0629 _ . \u064a\u062c\u0628 \u0623\u0644\u0627 \u064a\u0632\u064a\u062f \u0627\u0644\u0637\u0648\u0644 \u0639\u0646 63 \u062d\u0631\u0641\u0627. + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=\u0627\u0644\u0645\u0643\u062a\u0628\u0629 "{0}" \u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0633\u062a\u062e\u062f\u0627\u0645\u0647\u0627.\n\u0627\u0633\u0645 \u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u064a\u062c\u0628 \u0627\u0646 \u064a\u0643\u0648\u0646 \u062d\u0631\u0648\u0641 \u0648\u0627\u0631\u0642\u0627\u0645 \u0641\u0642\u0637.\n(\u0623\u062d\u0631\u0641 \u0622\u0633\u0643\u064a "ASCII " \u0641\u0642\u0637 \u0648\u0644\u0627 \u064a\u0645\u0643\u0646 \u0648\u0636\u0639 \u0641\u0631\u0627\u063a\u0627\u062a \u0648\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0644\u0628\u062f\u0621 \u0641\u064a \u0631\u0642\u0645) #: ../../../../../app/src/processing/app/SketchController.java:170 -!The\ main\ file\ cannot\ use\ an\ extension= +The\ main\ file\ cannot\ use\ an\ extension=\u0627\u0644\u0645\u0644\u0641 \u0627\u0644\u0631\u0626\u064a\u0633\u064a \u0644\u0627 \u064a\u0645\u0643\u0646 \u0623\u0646 \u064a\u0633\u062a\u062e\u062f\u0645 \u062a\u0645\u062f\u062f #: Sketch.java:356 The\ name\ cannot\ start\ with\ a\ period.=\u0627\u0644\u0627\u0633\u0645 \u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0646 \u064a\u0628\u062f\u0623 \u0628\u0646\u0642\u0637\u0629. @@ -1524,13 +1575,13 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format -!The\ sketch\ already\ contains\ a\ file\ named\ "{0}"= +The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=\u0627\u0644\u0633\u0643\u062a\u0634 \u064a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u0645\u0644\u0641 \u0645\u0633\u0628\u0642\u0627\u064b \u0628\u0627\u0633\u0645 "{0}" #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=\u0645\u062c\u0644\u062f \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 \u0627\u062e\u062a\u0641\u0649.\n\u062d\u0627\u0648\u0644 \u0627\u0639\u0627\u062f\u0629 \u062d\u0641\u0638\u0647 \u0641\u064a \u0646\u0641\u0633 \u0627\u0644\u0645\u0643\u0627\u0646,\n\u0648\u0644\u0643\u0646 \u0633\u064a\u062a\u0645 \u0641\u0642\u062f\u0627\u0646 \u0627\u0644\u0643\u0648\u062f. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=\u0644\u0642\u062f \u062a\u0645 \u062a\u0639\u062f\u064a\u0644 \u0623\u0633\u0645 \u0627\u0644\u0634\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629.\n\u0623\u0633\u0645 \u0627\u0644\u0634\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 \u064a\u062c\u0628 \u0627\u0646 \u064a\u0628\u062f\u0623 \u0628\u062d\u0631\u0641 \u0627\u0648 \u0631\u0642\u0645 \u0645\u062a\u0628\u0648\u0639 \u0628\u062d\u0631\u0641.\n\u0627\u0648 \u0627\u0631\u0642\u0627\u0645\u0627 \u060c \u0627\u0648 \u0639\u0644\u0627\u0645\u0629 \u0627\u0644\u0634\u0631\u0637\u0629 - \u060c \u0627\u0648 \u0627\u0644\u0634\u0631\u0637\u0647 \u0627\u0644\u0633\u0641\u0644\u064a\u0629 _ . \u064a\u062c\u0628 \u0623\u0644\u0627 \u064a\u0632\u064a\u062f \u0627\u0644\u0637\u0648\u0644 \u0639\u0646 63 \u062d\u0631\u0641\u0627. #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=\u0645\u062c\u0644\u062f \u0643\u062a\u0627\u0628 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 "\u0627\u0644\u0633\u0643\u062a\u0634" \u0644\u0645 \u064a\u0639\u062f \u0645\u0648\u062c\u0648\u062f\u0627.\n\u0633\u064a\u0646\u062a\u0642\u0644 \u0627\u0644\u0627\u0631\u062f\u0648\u064a\u0646\u0648 \u0627\u0644\u0649 \u0645\u0643\u0627\u0646 \u0643\u062a\u0627\u0628 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 \u0627\u0644\u0627\u0641\u062a\u0631\u0627\u0636\u064a,\n\u0648\u0627\u0646\u0634\u0627\u0621 \u0645\u062c\u0644\u062f \u062c\u062f\u064a\u062f \u0627\u0630\u0627 \u0643\u0627\u0646\n\u0636\u0631\u0648\u0631\u064a\u0627\u064b. \u0627\u0644\u0627\u0631\u062f\u0648\u064a\u0646\u0648 \u0633\u064a\u0648\u0642\u0641 \u0627\u0644\u062d\u062f\u064a\u062b \n\u0639\u0646 \u0646\u0641\u0633\u0647. @@ -1538,6 +1589,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=\u0645\u062c\u0644\u062f \u0643\u062a\u0627\u0628 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 \u0627\u0644\u0645\u062d\u062f\u062f \u064a\u062d\u062a\u0648\u064a \u0639\u0644\u0649 \u0646\u0633\u062e\u062a\u0643 \u0645\u0646 \u0645\u0646\u0635\u0629 \u0627\u0644\u062a\u0637\u0648\u064a\u0631.\n\u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u062e\u062a\u064a\u0627\u0631 \u0645\u062c\u0644\u062f \u0622\u062e\u0631 \u0644\u0643\u062a\u0627\u0628 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629. +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =\u0627\u0644\u0634\u0643\u0644\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=\u0647\u0630\u0647 \u0627\u0644\u0645\u0643\u062a\u0628\u0629 \u063a\u064a\u0631 \u0645\u062f\u0631\u062c\u0629 \u0641\u064a \u0625\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0643\u062a\u0628\u0627\u062a. \u0644\u0646 \u062a\u0633\u062a\u0637\u064a\u0639 \u0625\u0639\u0627\u062f\u0629 \u062a\u062b\u0628\u064a\u062a\u0647\u0627 \u0645\u0646 \u0647\u0646\u0627.\n\u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0645\u0646 \u062d\u0630\u0641\u0647\u0627\u061f @@ -1601,7 +1655,7 @@ Unable\ to\ find\ {0}\ in\ {1}=\u0644\u0645 \u064a\u0639\u062b\u0631 \u0639\u064 Unable\ to\ open\ serial\ monitor=\u063a\u064a\u0631 \u0642\u0627\u062f\u0631 \u0639\u0644\u0649 \u0641\u062a\u062d \u0645\u0631\u0627\u0642\u0628 \u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0633\u0627\u0633\u0644\u064a #: ../../../../../app/src/processing/app/Editor.java:2709 -!Unable\ to\ open\ serial\ plotter= +Unable\ to\ open\ serial\ plotter=\u063a\u064a\u0631 \u0642\u0627\u062f\u0631 \u0639\u0644\u0649 \u0641\u062a\u062d \u0645\u0631\u0627\u0642\u0628 \u0627\u0644\u0645\u0646\u0641\u0630 \u0627\u0644\u062a\u0633\u0627\u0633\u0644\u064a #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:94 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 @@ -1615,10 +1669,10 @@ Undo=\u062a\u0631\u0627\u062c\u0639 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:85 #, java-format -!Unhandled\ type\ {0}\ in\ context\ key\ {1}= +Unhandled\ type\ {0}\ in\ context\ key\ {1}=\u0627\u0644\u0646\u0648\u0639 {0} \u063a\u064a\u0631 \u0645\u062f\u0639\u0648\u0645 \u0645\u0646 \u062e\u0644\u0627\u0644 \u0627\u0644\u0633\u064a\u0627\u0642 \u0631\u0642\u0645 {1} #: ../../../../../app//src/processing/app/Editor.java:2818 -!Unknown\ board= +Unknown\ board=\u0644\u0648\u062d\u0629 \u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641\u0629 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format @@ -1659,7 +1713,7 @@ Upload=\u0631\u0641\u0639 Upload\ Using\ Programmer=\u0631\u0641\u0639 \u0628\u0648\u0627\u0633\u0637\u0629 \u0627\u0644\u0645\u0628\u0631\u0645\u062c\u0629 #: ../../../../../app//src/processing/app/Editor.java:2814 -!Upload\ any\ sketch\ to\ obtain\ it= +Upload\ any\ sketch\ to\ obtain\ it=\u062d\u0645\u0644 \u0623\u064a \u0633\u0643\u062a\u0634 \u0644\u0644\u062d\u0635\u0648\u0644 \u0639\u0644\u064a\u0647 #: Editor.java:2403 Editor.java:2439 Upload\ canceled.=\u0627\u0644\u063a\u064a \u0627\u0644\u062a\u062d\u0645\u064a\u0644 @@ -1708,7 +1762,7 @@ Verify/Compile=\u062a\u062d\u0642\u0642/\u062a\u0631\u062c\u0645 Verifying\ and\ uploading...=\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u0642\u0642 \u0648\u0627\u0644\u0631\u0641\u0639... #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:71 -!Verifying\ archive\ integrity...= +Verifying\ archive\ integrity...=\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0633\u0644\u0627\u0645\u0629 \u0627\u0644\u0623\u0631\u0634\u064a\u0641 ... #: ../../../../../app/src/processing/app/Base.java:454 Verifying...=\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u0642\u0642... @@ -1750,7 +1804,7 @@ Warning\:\ This\ core\ does\ not\ support\ exporting\ sketches.\ Please\ conside #: ../../../cc/arduino/utils/ArchiveExtractor.java:197 #, java-format -!Warning\:\ file\ {0}\ links\ to\ an\ absolute\ path\ {1}= +Warning\:\ file\ {0}\ links\ to\ an\ absolute\ path\ {1}=\u062a\u062d\u0630\u064a\u0631\: \u0627\u0644\u0645\u0644\u0641 {0} \u064a\u0634\u064a\u0631 \u0625\u0644\u0649 \u0627\u0644\u0645\u0633\u0627\u0631 \u0627\u0644\u0645\u062c\u0631\u062f {1} #: ../../../cc/arduino/contributions/packages/ContributionsIndexer.java:133 Warning\:\ forced\ trusting\ untrusted\ contributions=\u062a\u062d\u0630\u064a\u0631\: \u0641\u0631\u0636 \u0627\u0644\u0648\u062b\u0648\u0642 \u0639\u0644\u0649 \u0645\u0633\u0627\u0647\u0645\u0627\u062a \u063a\u064a\u0631 \u0645\u0648\u062b\u0648\u0642\u0629 @@ -1765,10 +1819,10 @@ Warning\:\ non\ trusted\ contribution,\ skipping\ script\ execution\ ({0})=\u062 #: ../../../processing/app/debug/LegacyTargetPlatform.java:158 #, java-format -!Warning\:\ platform.txt\ from\ core\ '{0}'\ contains\ deprecated\ {1},\ automatically\ converted\ to\ {2}.\ Consider\ upgrading\ this\ core.= +Warning\:\ platform.txt\ from\ core\ '{0}'\ contains\ deprecated\ {1},\ automatically\ converted\ to\ {2}.\ Consider\ upgrading\ this\ core.=\u062a\u062d\u0630\u064a\u0631\: platform.txt \u0645\u0646 \u0627\u0644\u0627\u0633\u0627\u0633 '{0}' \u064a\u0641\u062a\u0642\u062f \u062e\u0627\u0635\u064a\u0629 '{1}', \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0642\u064a\u0645\u0629 \u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 '{2}'. \u0628\u0623\u062e\u0630 \u0628\u0627\u0644\u0627\u0639\u062a\u0628\u0627\u0631 \u062a\u0631\u0642\u064a\u0629 \u0647\u0630\u0627 \u0627\u0644\u0627\u0633\u0627\u0633. #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:91 -!Warning\:\ platform.txt\ from\ core\ '{0}'\ misses\ property\ '{1}',\ using\ default\ value\ '{2}'.\ Consider\ upgrading\ this\ core.= +Warning\:\ platform.txt\ from\ core\ '{0}'\ misses\ property\ '{1}',\ using\ default\ value\ '{2}'.\ Consider\ upgrading\ this\ core.=\u062a\u062d\u0630\u064a\u0631\: platform.txt \u0645\u0646 \u0627\u0644\u0627\u0633\u0627\u0633 '{0}' \u064a\u0641\u062a\u0642\u062f \u062e\u0627\u0635\u064a\u0629 '{1}', \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0642\u064a\u0645\u0629 \u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 '{2}'. \u062e\u0630 \u0628\u0627\u0644\u0627\u0639\u062a\u0628\u0627\u0631 \u062a\u0631\u0642\u064a\u0629 \u0647\u0630\u0627 \u0627\u0644\u0627\u0633\u0627\u0633. #: ../../../../../app/src/processing/app/Preferences.java:190 Western\ Frisian=\u0627\u0644\u0641\u0627\u0631\u0633\u064a\u0629 \u0627\u0644\u063a\u0631\u0628\u064a\u0629 @@ -1798,7 +1852,7 @@ You\ cannot\ save\ the\ sketch\ into\ a\ folder\ninside\ itself.\ This\ would\ g You\ forgot\ your\ sketchbook=\u0644\u0642\u062f \u0646\u0633\u064a\u062a \u0643\u062a\u0627\u0628 \u0627\u0644\u0634\u064a\u0641\u0631\u0629 \u0627\u0644\u0628\u0631\u0645\u062c\u064a\u0629 (sketchbook) #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:252 -!You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.= +You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.=\u0644\u062f\u064a\u0643 \u062a\u063a\u064a\u0631\u0627\u062a \u063a\u064a\u0631 \u0645\u062d\u0641\u0648\u0638\u0629\!\u064a\u062c\u0628 \u0639\u0644\u064a\u0643 \u062d\u0641\u0638 \u0627\u0644\u0633\u0643\u062a\u0634\u0631\u0632 \u0644\u062a\u0645\u0643\u064a\u0646 \u0647\u0630\u0627 \u0627\u0644\u062e\u064a\u0627\u0631. #: ../../../processing/app/AbstractMonitor.java:92 You've\ pressed\ {0}\ but\ nothing\ was\ sent.\ Should\ you\ select\ a\ line\ ending?=\u0644\u0642\u062f \u0636\u063a\u0637\u062a \u0639\u0644\u0649 {0} \u0648\u0644\u0645 \u064a\u062a\u0645 \u0625\u0631\u0633\u0627\u0644 \u0623\u064a \u0634\u064a\u0621. \u0647\u0644 \u062a\u062e\u062a\u0627\u0631 \u062e\u0637 \u0627\u0644\u0646\u0647\u0627\u064a\u0629\u061f @@ -1872,6 +1926,11 @@ ignoring\ invalid\ font\ size\ {0}=\u062a\u062c\u0627\u0647\u0644 \u0627\u0644\u #: Editor.java:936 Editor.java:943 name\ is\ null=\u0627\u0644\u0627\u0633\u0645 \u0641\u0627\u0631\u063a +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=\u0644\u0627 \u0645\u0644\u0641\u0627\u062a \u062a\u0631\u0648\u064a\u0633\u0629 (.h) \u0645\u0648\u062c\u0648\u062f \u0641\u064a {0} + #: Editor.java:932 serialMenu\ is\ null=\u0642\u0627\u0626\u0645\u0629-\u0627\u0644\u0645\u0646\u0641\u062f \u0627\u0644\u062a\u0644\u0633\u0644\u0633\u064a \u0641\u0627\u0631\u063a\u0629 @@ -1921,7 +1980,7 @@ version\ {0}=\u0627\u0644\u0646\u0633\u062e\u0629 {0} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:78 #, java-format -!{0}\ pattern\ is\ missing= +{0}\ pattern\ is\ missing={0} \u0627\u0644\u062a\u0646\u0633\u064a\u0642 \u0645\u0641\u0642\u0648\u062f #: debug/Compiler.java:365 #, java-format @@ -1933,15 +1992,11 @@ version\ {0}=\u0627\u0644\u0646\u0633\u062e\u0629 {0} #: ../../../processing/app/Base.java:519 #, java-format -!{0}\:\ Invalid\ argument\ to\ --pref,\ should\ be\ of\ the\ form\ "pref\=value"= +{0}\:\ Invalid\ argument\ to\ --pref,\ should\ be\ of\ the\ form\ "pref\=value"={0}\: \u0645\u0639\u0627\u0645\u0644 \u0641\u064a\u0631 \u0635\u0627\u0644\u062d \u0644\u0623\u062c\u0644 --\u062a\u0641\u0636\u064a\u0644, \u064a\u062c\u0628 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0628\u0627\u0644\u0634\u0643\u0644 "\u062a\u0641\u0636\u064a\u0644\=\u0642\u064a\u0645\u0629" #: ../../../processing/app/Base.java:476 #, java-format -{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: \u0627\u0633\u0645 \u0644\u0648\u062d\u0629 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u060c \u064a\u062a\u0648\u062c\u0628 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0635\u064a\u063a\u0629 "package\:arch\:board" \u0623\u0648 "package\:arch\:board\:options" - -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= +{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: \u0627\u0633\u0645 \u0644\u0648\u062d\u0629 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u060c \u064a\u062a\u0648\u062c\u0628 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0635\u064a\u063a\u0629 "\u0627\u0644\u062d\u0632\u0645\u0629\:\u0645\u0639\u0645\u0627\u0631\:\u0644\u0648\u062d\u0629" \u0623\u0648 "\u0627\u0644\u062d\u0632\u0645\u0629\:\u0645\u0639\u0645\u0627\u0631\:\u0644\u0648\u062d\u0629\:\u0627\u062e\u062a\u064a\u0627\u0631\u0627\u062a" #: ../../../processing/app/Base.java:507 #, java-format @@ -1951,6 +2006,10 @@ version\ {0}=\u0627\u0644\u0646\u0633\u062e\u0629 {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: \u062e\u064a\u0627\u0631 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u060c \u064a\u062a\u0648\u062c\u0628 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0628\u0635\u064a\u063a\u0629 "name\=value" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: \u0642\u064a\u0645\u0629 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d\u0629 \u0644\u0644\u0627\u062e\u062a\u064a\u0627\u0631 "{1}" \u0644\u0644\u0648\u062d\u0629 "{2}" + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: \u0645\u0639\u0645\u0627\u0631\u064a\u0629 \u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641\u0629 @@ -1965,4 +2024,4 @@ version\ {0}=\u0627\u0644\u0646\u0633\u062e\u0629 {0} #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format -!{0}Install\ this\ package{1}\ to\ use\ your\ {2}\ board= +{0}Install\ this\ package{1}\ to\ use\ your\ {2}\ board={0} \u062a\u0631\u0643\u064a\u0628 \u0647\u0630\u0647 \u0627\u0644\u062d\u0632\u0645\u0629 {1} \u0644\u062a\u0633\u062a\u062e\u062f\u0645 {2} \u0644\u0648\u062d\u062a\u0643 diff --git a/arduino-core/src/processing/app/i18n/Resources_ast.po b/arduino-core/src/processing/app/i18n/Resources_ast.po index 324b6e4aad9..455c214d496 100644 --- a/arduino-core/src/processing/app/i18n/Resources_ast.po +++ b/arduino-core/src/processing/app/i18n/Resources_ast.po @@ -17,13 +17,16 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Xuacu Saturio , 2013 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: Asturian (http://www.transifex.com/mbanzi/arduino-ide-15/language/ast/)\n" "MIME-Version: 1.0\n" @@ -622,6 +625,11 @@ msgstr "" msgid "Could not replace {0}" msgstr "" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "" @@ -677,6 +685,10 @@ msgstr "" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "" @@ -852,6 +864,11 @@ msgstr "" msgid "Error inside Serial.{0}()" msgstr "" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -871,6 +888,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "" @@ -905,6 +941,10 @@ msgstr "" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -941,10 +981,6 @@ msgstr "" msgid "Estonian" msgstr "" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "" - #: Editor.java:516 msgid "Examples" msgstr "" @@ -1148,9 +1184,9 @@ msgstr "" msgid "Ignore Case" msgstr "" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Inorando un mal nome de biblioteca" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1213,9 +1249,9 @@ msgstr "" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1242,6 +1278,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "" @@ -1274,9 +1321,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1694,9 +1741,9 @@ msgstr "" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1733,6 +1780,10 @@ msgstr "" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "" @@ -1856,11 +1907,14 @@ msgid "" " Serial Port menu?" msgstr "" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" +msgid "Serial port {0} not found." msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 @@ -1884,6 +1938,10 @@ msgstr "" msgid "Show Sketch Folder" msgstr "" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "" @@ -2055,6 +2113,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2100,10 +2166,11 @@ msgid "" "but anything besides the code will be lost." msgstr "" -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2121,6 +2188,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2613,6 +2684,12 @@ msgstr "" msgid "name is null" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "" @@ -2700,11 +2777,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2715,6 +2787,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_ast.properties b/arduino-core/src/processing/app/i18n/Resources_ast.properties index c069f16cc3a..6879ce91bd5 100644 --- a/arduino-core/src/processing/app/i18n/Resources_ast.properties +++ b/arduino-core/src/processing/app/i18n/Resources_ast.properties @@ -17,8 +17,11 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Xuacu Saturio , 2013 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Asturian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/ast/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: ast\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Asturian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/ast/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: ast\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 !\ \ (requires\ restart\ of\ Arduino)= @@ -441,6 +444,10 @@ An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ #, java-format !Could\ not\ replace\ {0}= +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 !Couldn't\ archive\ sketch= @@ -480,6 +487,9 @@ An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 !Delete= @@ -611,6 +621,10 @@ An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ #, java-format !Error\ inside\ Serial.{0}()= +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -625,6 +639,18 @@ An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 !Error\ reading\ preferences= @@ -650,6 +676,9 @@ An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -678,9 +707,6 @@ An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ #: Preferences.java:93 !Estonian= -#: ../../../processing/app/Preferences.java:146 -!Estonian\ (Estonia)= - #: Editor.java:516 !Examples= @@ -831,8 +857,8 @@ An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ #: FindReplace.java:96 !Ignore\ Case= -#: Base.java:1058 -Ignoring\ bad\ library\ name=Inorando un mal nome de biblioteca +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 !Ignoring\ sketch\ with\ bad\ name= @@ -876,9 +902,9 @@ Ignoring\ bad\ library\ name=Inorando un mal nome de biblioteca #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -899,6 +925,15 @@ Ignoring\ bad\ library\ name=Inorando un mal nome de biblioteca #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 !Italian= @@ -923,9 +958,9 @@ Ignoring\ bad\ library\ name=Inorando un mal nome de biblioteca #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -1238,9 +1273,9 @@ Quit=Colar #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1268,6 +1303,9 @@ Quit=Colar #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 !Romanian= @@ -1359,9 +1397,13 @@ Quit=Colar #, java-format !Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?= -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -!Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?= +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1379,6 +1421,9 @@ Quit=Colar #: Editor.java:641 !Show\ Sketch\ Folder= +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 !Show\ verbose\ output\ during\:\ = @@ -1498,6 +1543,10 @@ Sunshine=Soleyero #, java-format !The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=La biblioteca "{0}" nun pue utilizase.\nLos nomes de biblioteca tienen de contener nam\u00e1i lletres b\u00e1siques y n\u00famberos.\n(Nam\u00e1i ASCII ensin espacios, y nun pue principiar con un n\u00famberu) @@ -1522,8 +1571,8 @@ The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ bas #: Sketch.java:1755 !The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.= -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=El direutoriu cartafueyu de bocetos y\u00e1 nun esiste.\nArduino camudar\u00e1 al llugar predetermin\u00e1u del cartafueyu\nde bocetos, y crear\u00e1 un direutoriu cartafueyu de bocetos\nnuevu si ye necesario. Arduino ent\u00f3s dexar\u00e1 de falar de\nsigo mesmu en tercera persona. @@ -1531,6 +1580,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1865,6 +1917,11 @@ You've\ reached\ the\ limit\ for\ auto\ naming\ of\ new\ sketches\nfor\ the\ day #: Editor.java:936 Editor.java:943 !name\ is\ null= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 !serialMenu\ is\ null= @@ -1932,10 +1989,6 @@ You've\ reached\ the\ limit\ for\ auto\ naming\ of\ new\ sketches\nfor\ the\ day #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1944,6 +1997,10 @@ You've\ reached\ the\ limit\ for\ auto\ naming\ of\ new\ sketches\nfor\ the\ day #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_be.po b/arduino-core/src/processing/app/i18n/Resources_be.po index b20b3288559..20a380ff8ec 100644 --- a/arduino-core/src/processing/app/i18n/Resources_be.po +++ b/arduino-core/src/processing/app/i18n/Resources_be.po @@ -17,14 +17,18 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # debconf , 2013-2014,2016-2017 +# Viktar Vauchkevich, 2019 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" -"Last-Translator: Cristian Maglie \n" +"PO-Revision-Date: 2019-07-10 06:49+0000\n" +"Last-Translator: Viktar Vauchkevich\n" "Language-Team: Belarusian (http://www.transifex.com/mbanzi/arduino-ide-15/language/be/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -69,7 +73,7 @@ msgstr "(рэдагаваць толькі калі Arduino не запушча #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 msgid "(legacy)" -msgstr "" +msgstr "(застарэлы)" #: ../../../processing/app/helpers/CommandlineParser.java:149 msgid "--curdir no longer supported" @@ -136,11 +140,11 @@ msgstr "Дадаць Файл" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:73 msgid "Additional Boards Manager URLs" -msgstr "" +msgstr "Дадатковыя URL'ы Кіраўніка платамі" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:268 msgid "Additional Boards Manager URLs: " -msgstr "" +msgstr "Дадатковыя URL'ы Кіраўніка платамі:" #: ../../../../../app/src/processing/app/Preferences.java:161 msgid "Afrikaans" @@ -224,7 +228,7 @@ msgstr "Архіваванне скетчу было скасавана, бо с #: ../../../../../arduino-core/src/processing/app/I18n.java:24 msgid "Arduino" -msgstr "" +msgstr "Arduino" #: ../../../processing/app/I18n.java:83 msgid "Arduino ARM (32-bits) Boards" @@ -309,7 +313,7 @@ msgstr "Аўтафармат скончаны" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:457 msgid "Auto-detect proxy settings" -msgstr "" +msgstr "Аўтаматычна вызначаць налады проксі" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:264 msgid "Automatic" @@ -317,7 +321,7 @@ msgstr "Аўтаматычна" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:474 msgid "Automatic proxy configuration URL:" -msgstr "" +msgstr "URL аўтаматычнай канфігурацыі проксі:" #: SerialMonitor.java:110 msgid "Autoscroll" @@ -373,15 +377,15 @@ msgstr "Плата:" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 msgid "Boards Manager" -msgstr "" +msgstr "Кіраўнік платамі" #: ../../../../../app/src/processing/app/Base.java:1320 msgid "Boards Manager..." -msgstr "" +msgstr "Кіраўнік платамі…" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:328 msgid "Boards included in this package:" -msgstr "" +msgstr "Дошкі, уключаныя ў гэты пакет:" #: ../../../processing/app/debug/Compiler.java:1273 #, java-format @@ -483,11 +487,11 @@ msgstr "Кітайская (Тайвань) (Big5)" #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 msgid "Clear output" -msgstr "" +msgstr "Ачысціць вывад" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 msgid "Click for a list of unofficial boards support URLs" -msgstr "" +msgstr "Націсніце, каб атрымаць спіс неафіцыйных URL падтрымкі плат" #: Editor.java:521 Editor.java:2024 msgid "Close" @@ -499,7 +503,7 @@ msgstr "Закаментаваць/Раскаментаваць" #: ../../../../../arduino-core/src/processing/app/I18n.java:30 msgid "Communication" -msgstr "" +msgstr "Камунікацыя" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 msgid "Compiler warnings: " @@ -622,6 +626,11 @@ msgstr "Немагчыма выдаліць старую весію {0}" msgid "Could not replace {0}" msgstr "Немагчыма замяніць {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Немагчыма архіваваць скетч" @@ -675,7 +684,11 @@ msgstr "Паменьшыць водступ" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 msgid "Default" -msgstr "" +msgstr "Агаданыя" + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Агаданая тэма" #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" @@ -852,6 +865,11 @@ msgstr "" msgid "Error inside Serial.{0}()" msgstr "Памылка унутры Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -869,7 +887,26 @@ msgstr "Памылка адчынення паслядоўнага порту '' msgid "" "Error opening serial port ''{0}''. Try consulting the documentation at " "http://playground.arduino.cc/Linux/All#Permission" -msgstr "Памылка адчынення паслядоўнага порту ''{0}''. Азнаёмцеся з дакументацыяй наhttp://playground.arduino.cc/Linux/All#Permission" +msgstr "Памылка адкрыцця паслядоўнага порту ''{0}''. Азнаёмцеся з дакументацыяй на http://playground.arduino.cc/Linux/All#Permission" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Памылка разбору індэксу бібліятэк: {0}\nПаспрабуйце адкрыць Кіраўніка бібліятэк, каб абнавіць індэкс бібліятэк." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" #: Preferences.java:277 msgid "Error reading preferences" @@ -905,6 +942,10 @@ msgstr "Памылка падчас прашывання загрузчыка." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Памылка падчас прашывання загрузчыка: бракуе '{0}' канфігурацыйнага параметра" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Памылка пры кампіляцыі: адсутнічае '{0}' канфігурацыйны параметр" @@ -941,10 +982,6 @@ msgstr "Памылка праверкі/выгрузкі" msgid "Estonian" msgstr "Эстонская" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Эстонская (Эстонія)" - #: Editor.java:516 msgid "Examples" msgstr "Ўзоры" @@ -1080,7 +1117,7 @@ msgstr "Нямецкая" #: ../../../../../app//src/processing/app/Editor.java:817 msgid "Get Board Info" -msgstr "" +msgstr "Атрымаць звесткі аб плаце" #: Editor.java:1054 msgid "Getting Started" @@ -1124,7 +1161,7 @@ msgstr "Хіндзі" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:489 msgid "Host name:" -msgstr "" +msgstr "Назва вузла:" #: Sketch.java:295 msgid "" @@ -1148,9 +1185,9 @@ msgstr "НЕСУМЯШЧАЛЬНА" msgid "Ignore Case" msgstr "Ігнараваць рэгістр" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Ігнарую бібліятэку з кепскім імём" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "Ігнарую бібліятэку з кепскай назвай" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1211,11 +1248,11 @@ msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 msgid "Installing boards..." -msgstr "" +msgstr "Усталёўка плат…" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1242,6 +1279,17 @@ msgstr "Кепская бібліятэка знойдзена ў {0}: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "Італьянская" @@ -1264,7 +1312,7 @@ msgstr "Латвіская" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:93 msgid "Library Manager" -msgstr "" +msgstr "Кіраўнік бібліятэкамі" #: ../../../../../app/src/processing/app/Base.java:2349 msgid "Library added to your libraries. Check \"Include library\" menu" @@ -1274,9 +1322,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1494,7 +1542,7 @@ msgstr "Адчыніць" #: ../../../../../app/src/processing/app/Editor.java:625 msgid "Open Recent" -msgstr "" +msgstr "Адкрыць нядаўняе" #: Editor.java:2688 msgid "Open URL" @@ -1568,7 +1616,7 @@ msgstr "Калі ласка выберыце праграматар з меню #: ../../../../../app/src/processing/app/Editor.java:2613 msgid "Plotter not available while serial monitor is open" -msgstr "" +msgstr "Плотар недаступны, калі адкрыты serial-манітор" #: Preferences.java:110 msgid "Polish" @@ -1600,7 +1648,7 @@ msgstr "Наладкі" #: ../../../../../app/src/processing/app/Base.java:297 msgid "Preparing boards..." -msgstr "" +msgstr "Падрыхтоўка плат…" #: FindReplace.java:123 FindReplace.java:128 msgid "Previous" @@ -1694,9 +1742,9 @@ msgstr "" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1733,6 +1781,10 @@ msgstr "Замяніць на:" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "Румынская" @@ -1847,7 +1899,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:2516 msgid "Serial monitor not available while plotter is open" -msgstr "" +msgstr "Serial-манітор недаступны, калі адкрыты плотар" #: Serial.java:194 #, java-format @@ -1856,12 +1908,15 @@ msgid "" " Serial Port menu?" msgstr "Паслядоўны порт ''{0}'' не знойдзены. Ці выбралі вы патрэбны ў меню \"Інструменты\" > Serial Port ?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Serial-порт {0} ня знойдзены.\nПаспрабаваць выгрузку праз іншы порт?" +msgid "Serial port {0} not found." +msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1884,6 +1939,10 @@ msgstr "" msgid "Show Sketch Folder" msgstr "Паказаць Каталог Скетчаў" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Паказваць падрабязны вывад падчас:" @@ -2055,6 +2114,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "Файл\"{0}\" павінен быць унутры каталога\nскетчу з імём \"{1}\". Стварыць такі каталог, \nперамясціць файл, и працягнуць?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2100,10 +2167,11 @@ msgid "" "but anything besides the code will be lost." msgstr "Папка скетчу знікла.\nСпрабуем перазахаваць у тым жа месцы,\nале ўсё акрамя коду будзе страчана." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2121,11 +2189,15 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" "Are you sure you want to delete it?" -msgstr "" +msgstr "Гэтая бібліятэка не прысутнічае ў Кіраўніка бібліятэкамі. Вы не зможаце пераўсталяваць яе адсюль.\nВы ўпэўнены, што хочаце выдаліць яе?" #: ../../../../../app/src/processing/app/EditorStatus.java:349 msgid "" @@ -2209,7 +2281,7 @@ msgstr "Немагчыма адчыніць serial-манітор" #: ../../../../../app/src/processing/app/Editor.java:2709 msgid "Unable to open serial plotter" -msgstr "" +msgstr "Немагчыма адкрыць serial-плотар" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:94 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 @@ -2261,12 +2333,12 @@ msgstr "Аднавіць пашырэнні імён скетчаў падчас #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:88 #, java-format msgid "Updates available for some of your {0}boards{1}" -msgstr "" +msgstr "Даступныя абнаўленні для некаторых вашых {0}плат{1}" #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:90 #, java-format msgid "Updates available for some of your {0}boards{1} and {2}libraries{3}" -msgstr "" +msgstr "Даступныя абнаўленні для некаторых вашых {0}плат{1} і {2}бібліятэк{3}" #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:86 #, java-format @@ -2343,7 +2415,7 @@ msgstr "Спаўдзіць код пасля выгрузкі" #: ../../../../../app/src/processing/app/Editor.java:725 msgid "Verify/Compile" -msgstr "Правевыць/Кампіляваць" +msgstr "Праверыць/кампіляваць" #: ../../../../../app/src/processing/app/Base.java:451 msgid "Verifying and uploading..." @@ -2613,6 +2685,12 @@ msgstr "ігнарую памылковы памер шрыфта {0}" msgid "name is null" msgstr "імя - null" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu is null" @@ -2700,11 +2778,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: Няправільнае імя платы, мае быць форма \"package:arch:board\" ці \"package:arch:board:options\"" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: Няправільная опцыя для \"{1}\" опцыі для платы \"{2}\"" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2715,6 +2788,11 @@ msgstr "{0}: Няправільная опцыя для платы \"{1}\"" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: Няправільная опцыя, мае быць форма \"name=value\"" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_be.properties b/arduino-core/src/processing/app/i18n/Resources_be.properties index bedb040935f..3e00e5d5bb3 100644 --- a/arduino-core/src/processing/app/i18n/Resources_be.properties +++ b/arduino-core/src/processing/app/i18n/Resources_be.properties @@ -17,8 +17,12 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # debconf , 2013-2014,2016-2017 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Belarusian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/be/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: be\nPlural-Forms\: nplurals\=4; plural\=(n%10\=\=1 && n%100\!\=11 ? 0 \: n%10>\=2 && n%10<\=4 && (n%100<12 || n%100>14) ? 1 \: n%10\=\=0 || (n%10>\=5 && n%10<\=9) || (n%100>\=11 && n%100<\=14)? 2 \: 3);\n +# Viktar Vauchkevich, 2019 +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2019-07-10 06\:49+0000\nLast-Translator\: Viktar Vauchkevich\nLanguage-Team\: Belarusian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/be/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: be\nPlural-Forms\: nplurals\=4; plural\=(n%10\=\=1 && n%100\!\=11 ? 0 \: n%10>\=2 && n%10<\=4 && (n%100<12 || n%100>14) ? 1 \: n%10\=\=0 || (n%10>\=5 && n%10<\=9) || (n%100>\=11 && n%100<\=14)? 2 \: 3);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=(\u043f\u0430\u0442\u0440\u0430\u0431\u0443\u0435 \u043f\u0435\u0440\u0430\u0437\u0430\u043f\u0443\u0441\u043a Arduino) @@ -44,7 +48,7 @@ (edit\ only\ when\ Arduino\ is\ not\ running)=(\u0440\u044d\u0434\u0430\u0433\u0430\u0432\u0430\u0446\u044c \u0442\u043e\u043b\u044c\u043a\u0456 \u043a\u0430\u043b\u0456 Arduino \u043d\u0435 \u0437\u0430\u043f\u0443\u0448\u0447\u0430\u043d\u044b) #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 -!(legacy)= +(legacy)=(\u0437\u0430\u0441\u0442\u0430\u0440\u044d\u043b\u044b) #: ../../../processing/app/helpers/CommandlineParser.java:149 --curdir\ no\ longer\ supported=--curdir \u0431\u043e\u043b\u044c\u0448 \u043d\u0435 \u043f\u0430\u0434\u0442\u0440\u044b\u043c\u043b\u0456\u0432\u0430\u0435\u0446\u0446\u0430 @@ -89,10 +93,10 @@ Add\ .ZIP\ Library...=\u0414\u0430\u0434\u0430\u0446\u044c .ZIP \u0411\u0456\u04 Add\ File...=\u0414\u0430\u0434\u0430\u0446\u044c \u0424\u0430\u0439\u043b #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:73 -!Additional\ Boards\ Manager\ URLs= +Additional\ Boards\ Manager\ URLs=\u0414\u0430\u0434\u0430\u0442\u043a\u043e\u0432\u044b\u044f URL'\u044b \u041a\u0456\u0440\u0430\u045e\u043d\u0456\u043a\u0430 \u043f\u043b\u0430\u0442\u0430\u043c\u0456 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:268 -!Additional\ Boards\ Manager\ URLs\:\ = +Additional\ Boards\ Manager\ URLs\:\ =\u0414\u0430\u0434\u0430\u0442\u043a\u043e\u0432\u044b\u044f URL'\u044b \u041a\u0456\u0440\u0430\u045e\u043d\u0456\u043a\u0430 \u043f\u043b\u0430\u0442\u0430\u043c\u0456\: #: ../../../../../app/src/processing/app/Preferences.java:161 Afrikaans=\u0410\u0444\u0440\u044b\u043a\u0430\u0430\u043d\u0441 @@ -151,7 +155,7 @@ Archive\ sketch\ canceled.=\u0410\u0440\u0445\u0456\u0432\u0430\u0432\u0430\u043 Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.=\u0410\u0440\u0445\u0456\u0432\u0430\u0432\u0430\u043d\u043d\u0435 \u0441\u043a\u0435\u0442\u0447\u0443 \u0431\u044b\u043b\u043e \u0441\u043a\u0430\u0441\u0430\u0432\u0430\u043d\u0430, \u0431\u043e \u0441\u043a\u0435\u0442\u0447\n\u043d\u0435 \u0431\u044b\u045e \u0430\u0434\u043f\u0430\u0432\u0435\u0434\u043d\u0430 \u0437\u0430\u0445\u0430\u0432\u0430\u043d\u044b. #: ../../../../../arduino-core/src/processing/app/I18n.java:24 -!Arduino= +Arduino=Arduino #: ../../../processing/app/I18n.java:83 Arduino\ ARM\ (32-bits)\ Boards=\u041f\u043b\u0430\u0442\u044b Arduino ARM (32-\u0431\u0456\u0442) @@ -211,13 +215,13 @@ Auto\ Format=\u0410\u045e\u0442\u0430\u0444\u0430\u0440\u043c\u0430\u0442 Auto\ Format\ finished.=\u0410\u045e\u0442\u0430\u0444\u0430\u0440\u043c\u0430\u0442 \u0441\u043a\u043e\u043d\u0447\u0430\u043d\u044b #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:457 -!Auto-detect\ proxy\ settings= +Auto-detect\ proxy\ settings=\u0410\u045e\u0442\u0430\u043c\u0430\u0442\u044b\u0447\u043d\u0430 \u0432\u044b\u0437\u043d\u0430\u0447\u0430\u0446\u044c \u043d\u0430\u043b\u0430\u0434\u044b \u043f\u0440\u043e\u043a\u0441\u0456 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:264 Automatic=\u0410\u045e\u0442\u0430\u043c\u0430\u0442\u044b\u0447\u043d\u0430 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:474 -!Automatic\ proxy\ configuration\ URL\:= +Automatic\ proxy\ configuration\ URL\:=URL \u0430\u045e\u0442\u0430\u043c\u0430\u0442\u044b\u0447\u043d\u0430\u0439 \u043a\u0430\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u044b\u0456 \u043f\u0440\u043e\u043a\u0441\u0456\: #: SerialMonitor.java:110 Autoscroll=\u0410\u045e\u0442\u0430\u043f\u0440\u0430\u043a\u0440\u0443\u0442\u043a\u0430 @@ -259,13 +263,13 @@ Board\ {0}\:{1}\:{2}\ doesn''t\ define\ a\ ''build.board''\ preference.\ Auto-se Board\:\ =\u041f\u043b\u0430\u0442\u0430\: #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 -!Boards\ Manager= +Boards\ Manager=\u041a\u0456\u0440\u0430\u045e\u043d\u0456\u043a \u043f\u043b\u0430\u0442\u0430\u043c\u0456 #: ../../../../../app/src/processing/app/Base.java:1320 -!Boards\ Manager...= +Boards\ Manager...=\u041a\u0456\u0440\u0430\u045e\u043d\u0456\u043a \u043f\u043b\u0430\u0442\u0430\u043c\u0456\u2026 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:328 -!Boards\ included\ in\ this\ package\:= +Boards\ included\ in\ this\ package\:=\u0414\u043e\u0448\u043a\u0456, \u0443\u043a\u043b\u044e\u0447\u0430\u043d\u044b\u044f \u045e \u0433\u044d\u0442\u044b \u043f\u0430\u043a\u0435\u0442\: #: ../../../processing/app/debug/Compiler.java:1273 #, java-format @@ -341,10 +345,10 @@ Chinese\ (Taiwan)=\u041a\u0456\u0442\u0430\u0439\u0441\u043a\u0430\u044f (\u0422 Chinese\ (Taiwan)\ (Big5)=\u041a\u0456\u0442\u0430\u0439\u0441\u043a\u0430\u044f (\u0422\u0430\u0439\u0432\u0430\u043d\u044c) (Big5) #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 -!Clear\ output= +Clear\ output=\u0410\u0447\u044b\u0441\u0446\u0456\u0446\u044c \u0432\u044b\u0432\u0430\u0434 #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 -!Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs= +Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs=\u041d\u0430\u0446\u0456\u0441\u043d\u0456\u0446\u0435, \u043a\u0430\u0431 \u0430\u0442\u0440\u044b\u043c\u0430\u0446\u044c \u0441\u043f\u0456\u0441 \u043d\u0435\u0430\u0444\u0456\u0446\u044b\u0439\u043d\u044b\u0445 URL \u043f\u0430\u0434\u0442\u0440\u044b\u043c\u043a\u0456 \u043f\u043b\u0430\u0442 #: Editor.java:521 Editor.java:2024 Close=\u0417\u0430\u0447\u044b\u043d\u0456\u0446\u044c @@ -353,7 +357,7 @@ Close=\u0417\u0430\u0447\u044b\u043d\u0456\u0446\u044c Comment/Uncomment=\u0417\u0430\u043a\u0430\u043c\u0435\u043d\u0442\u0430\u0432\u0430\u0446\u044c/\u0420\u0430\u0441\u043a\u0430\u043c\u0435\u043d\u0442\u0430\u0432\u0430\u0446\u044c #: ../../../../../arduino-core/src/processing/app/I18n.java:30 -!Communication= +Communication=\u041a\u0430\u043c\u0443\u043d\u0456\u043a\u0430\u0446\u044b\u044f #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 Compiler\ warnings\:\ =\u041f\u0430\u043f\u044f\u0440\u044d\u0434\u0436\u0430\u043d\u043d\u0456 \u043a\u0430\u043c\u043f\u0456\u043b\u044f\u0442\u0430\u0440\u0430\: @@ -441,6 +445,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=\u041d\u0435\u043c\u0430\u0433\u0447\u #, java-format Could\ not\ replace\ {0}=\u041d\u0435\u043c\u0430\u0433\u0447\u044b\u043c\u0430 \u0437\u0430\u043c\u044f\u043d\u0456\u0446\u044c {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=\u041d\u0435\u043c\u0430\u0433\u0447\u044b\u043c\u0430 \u0430\u0440\u0445\u0456\u0432\u0430\u0432\u0430\u0446\u044c \u0441\u043a\u0435\u0442\u0447 @@ -478,7 +486,10 @@ Data\ Storage=\u0421\u0445\u043e\u0432\u0456\u0448\u0447\u0430 \u0414\u0430\u043 Decrease\ Indent=\u041f\u0430\u043c\u0435\u043d\u044c\u0448\u044b\u0446\u044c \u0432\u043e\u0434\u0441\u0442\u0443\u043f #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 -!Default= +Default=\u0410\u0433\u0430\u0434\u0430\u043d\u044b\u044f + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=\u0410\u0433\u0430\u0434\u0430\u043d\u0430\u044f \u0442\u044d\u043c\u0430 #: EditorHeader.java:314 Sketch.java:591 Delete=\u0412\u044b\u0434\u0430\u043b\u0456\u0446\u044c @@ -611,6 +622,10 @@ Error\ downloading\ {0}=\u041f\u0430\u043c\u044b\u043b\u043a\u0430 \u0441\u0446\ #, java-format Error\ inside\ Serial.{0}()=\u041f\u0430\u043c\u044b\u043b\u043a\u0430 \u0443\u043d\u0443\u0442\u0440\u044b Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -623,7 +638,19 @@ Error\ opening\ serial\ port\ ''{0}''.=\u041f\u0430\u043c\u044b\u043b\u043a\u043 #: ../../../processing/app/Serial.java:119 #, java-format -Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=\u041f\u0430\u043c\u044b\u043b\u043a\u0430 \u0430\u0434\u0447\u044b\u043d\u0435\u043d\u043d\u044f \u043f\u0430\u0441\u043b\u044f\u0434\u043e\u045e\u043d\u0430\u0433\u0430 \u043f\u043e\u0440\u0442\u0443 ''{0}''. \u0410\u0437\u043d\u0430\u0451\u043c\u0446\u0435\u0441\u044f \u0437 \u0434\u0430\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u044b\u044f\u0439 \u043d\u0430http\://playground.arduino.cc/Linux/All\#Permission +Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=\u041f\u0430\u043c\u044b\u043b\u043a\u0430 \u0430\u0434\u043a\u0440\u044b\u0446\u0446\u044f \u043f\u0430\u0441\u043b\u044f\u0434\u043e\u045e\u043d\u0430\u0433\u0430 \u043f\u043e\u0440\u0442\u0443 ''{0}''. \u0410\u0437\u043d\u0430\u0451\u043c\u0446\u0435\u0441\u044f \u0437 \u0434\u0430\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u044b\u044f\u0439 \u043d\u0430 http\://playground.arduino.cc/Linux/All\#Permission + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=\u041f\u0430\u043c\u044b\u043b\u043a\u0430 \u0440\u0430\u0437\u0431\u043e\u0440\u0443 \u0456\u043d\u0434\u044d\u043a\u0441\u0443 \u0431\u0456\u0431\u043b\u0456\u044f\u0442\u044d\u043a\: {0}\n\u041f\u0430\u0441\u043f\u0440\u0430\u0431\u0443\u0439\u0446\u0435 \u0430\u0434\u043a\u0440\u044b\u0446\u044c \u041a\u0456\u0440\u0430\u045e\u043d\u0456\u043a\u0430 \u0431\u0456\u0431\u043b\u0456\u044f\u0442\u044d\u043a, \u043a\u0430\u0431 \u0430\u0431\u043d\u0430\u0432\u0456\u0446\u044c \u0456\u043d\u0434\u044d\u043a\u0441 \u0431\u0456\u0431\u043b\u0456\u044f\u0442\u044d\u043a. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= #: Preferences.java:277 Error\ reading\ preferences=\u041f\u0430\u043c\u044b\u043b\u043a\u0430 \u0447\u044b\u0442\u0430\u043d\u043d\u044f \u043d\u0430\u043b\u0430\u0434\u0430\u043a @@ -650,6 +677,9 @@ Error\ while\ burning\ bootloader.=\u041f\u0430\u043c\u044b\u043b\u043a\u0430 \u #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=\u041f\u0430\u043c\u044b\u043b\u043a\u0430 \u043f\u0430\u0434\u0447\u0430\u0441 \u043f\u0440\u0430\u0448\u044b\u0432\u0430\u043d\u043d\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u0447\u044b\u043a\u0430\: \u0431\u0440\u0430\u043a\u0443\u0435 '{0}' \u043a\u0430\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u044b\u0439\u043d\u0430\u0433\u0430 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=\u041f\u0430\u043c\u044b\u043b\u043a\u0430 \u043f\u0440\u044b \u043a\u0430\u043c\u043f\u0456\u043b\u044f\u0446\u044b\u0456\: \u0430\u0434\u0441\u0443\u0442\u043d\u0456\u0447\u0430\u0435 '{0}' \u043a\u0430\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u044b\u0439\u043d\u044b \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 @@ -678,9 +708,6 @@ Error\ while\ verifying/uploading=\u041f\u0430\u043c\u044b\u043b\u043a\u0430 \u0 #: Preferences.java:93 Estonian=\u042d\u0441\u0442\u043e\u043d\u0441\u043a\u0430\u044f -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=\u042d\u0441\u0442\u043e\u043d\u0441\u043a\u0430\u044f (\u042d\u0441\u0442\u043e\u043d\u0456\u044f) - #: Editor.java:516 Examples=\u040e\u0437\u043e\u0440\u044b @@ -782,7 +809,7 @@ Georgian=\u0413\u0440\u0443\u0437\u0456\u043d\u0441\u043a\u0430\u044f German=\u041d\u044f\u043c\u0435\u0446\u043a\u0430\u044f #: ../../../../../app//src/processing/app/Editor.java:817 -!Get\ Board\ Info= +Get\ Board\ Info=\u0410\u0442\u0440\u044b\u043c\u0430\u0446\u044c \u0437\u0432\u0435\u0441\u0442\u043a\u0456 \u0430\u0431 \u043f\u043b\u0430\u0446\u0435 #: Editor.java:1054 Getting\ Started=\u0417 \u0447\u0430\u0433\u043e \u043f\u0430\u0447\u0430\u0446\u044c @@ -814,7 +841,7 @@ Help=\u0414\u0430\u043f\u0430\u043c\u043e\u0433\u0430 Hindi=\u0425\u0456\u043d\u0434\u0437\u0456 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:489 -!Host\ name\:= +Host\ name\:=\u041d\u0430\u0437\u0432\u0430 \u0432\u0443\u0437\u043b\u0430\: #: Sketch.java:295 How\ about\ saving\ the\ sketch\ first\ \nbefore\ trying\ to\ rename\ it?=\u042f\u043a \u043d\u0430\u043a\u043e\u043d\u0442 \u0441\u043f\u0430\u0447\u0430\u0442\u043a\u0443 \u0437\u0430\u0445\u0430\u0432\u0430\u0446\u044c \u0441\u043a\u0435\u0442\u0447\n\u043f\u0435\u0440\u0430\u0434 \u0442\u044b\u043c \u044f\u043a \u0441\u043f\u0440\u0430\u0431\u0430\u0432\u0430\u0446\u044c \u043f\u0435\u0440\u0430\u0439\u043c\u0435\u043d\u0430\u0432\u0430\u0446\u044c \u044f\u0433\u043e? @@ -831,8 +858,8 @@ INCOMPATIBLE=\u041d\u0415\u0421\u0423\u041c\u042f\u0428\u0427\u0410\u041b\u042c\ #: FindReplace.java:96 Ignore\ Case=\u0406\u0433\u043d\u0430\u0440\u0430\u0432\u0430\u0446\u044c \u0440\u044d\u0433\u0456\u0441\u0442\u0440 -#: Base.java:1058 -Ignoring\ bad\ library\ name=\u0406\u0433\u043d\u0430\u0440\u0443\u044e \u0431\u0456\u0431\u043b\u0456\u044f\u0442\u044d\u043a\u0443 \u0437 \u043a\u0435\u043f\u0441\u043a\u0456\u043c \u0456\u043c\u0451\u043c +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=\u0406\u0433\u043d\u0430\u0440\u0443\u044e \u0431\u0456\u0431\u043b\u0456\u044f\u0442\u044d\u043a\u0443 \u0437 \u043a\u0435\u043f\u0441\u043a\u0430\u0439 \u043d\u0430\u0437\u0432\u0430\u0439 #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=\u0406\u0433\u043d\u0430\u0440\u0443\u0435\u0446\u0446\u0430 \u0441\u043a\u0435\u0442\u0447 \u0437 \u043a\u0435\u043f\u0441\u043a\u0456\u043c \u0456\u043c\u0451\u043c @@ -874,11 +901,11 @@ Indonesian=\u0406\u043d\u0434\u0430\u043d\u044d\u0437\u0456\u0439\u0441\u043a\u0 !Installed= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 -!Installing\ boards...= +Installing\ boards...=\u0423\u0441\u0442\u0430\u043b\u0451\u045e\u043a\u0430 \u043f\u043b\u0430\u0442\u2026 -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -899,6 +926,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=\u041a\u0435\u043f\u0441\u043a\u0430\u04 #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=\u0406\u0442\u0430\u043b\u044c\u044f\u043d\u0441\u043a\u0430\u044f @@ -915,7 +951,7 @@ Korean=\u041a\u0430\u0440\u044d\u0439\u0441\u043a\u0430\u044f Latvian=\u041b\u0430\u0442\u0432\u0456\u0441\u043a\u0430\u044f #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:93 -!Library\ Manager= +Library\ Manager=\u041a\u0456\u0440\u0430\u045e\u043d\u0456\u043a \u0431\u0456\u0431\u043b\u0456\u044f\u0442\u044d\u043a\u0430\u043c\u0456 #: ../../../../../app/src/processing/app/Base.java:2349 !Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu= @@ -923,9 +959,9 @@ Latvian=\u041b\u0430\u0442\u0432\u0456\u0441\u043a\u0430\u044f #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=\u041d\u0443\u043c\u0430\u0440 \u0440\u0430\u0434\u043a\u0443\: @@ -1088,7 +1124,7 @@ Only\ --verify,\ --upload\ or\ --get-pref\ are\ supported=\u041f\u0430\u0434\u04 Open=\u0410\u0434\u0447\u044b\u043d\u0456\u0446\u044c #: ../../../../../app/src/processing/app/Editor.java:625 -!Open\ Recent= +Open\ Recent=\u0410\u0434\u043a\u0440\u044b\u0446\u044c \u043d\u044f\u0434\u0430\u045e\u043d\u044f\u0435 #: Editor.java:2688 Open\ URL=\u0410\u0434\u0447\u044b\u043d\u0456\u0446\u044c URL @@ -1144,7 +1180,7 @@ Please\ select\ a\ port\ to\ obtain\ board\ info=\u041a\u0430\u043b\u0456 \u043b Please\ select\ a\ programmer\ from\ Tools->Programmer\ menu=\u041a\u0430\u043b\u0456 \u043b\u0430\u0441\u043a\u0430 \u0432\u044b\u0431\u0435\u0440\u044b\u0446\u0435 \u043f\u0440\u0430\u0433\u0440\u0430\u043c\u0430\u0442\u0430\u0440 \u0437 \u043c\u0435\u043d\u044e \u0406\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b->\u041f\u0440\u0430\u0433\u0440\u0430\u043c\u0430\u0442\u0430\u0440 #: ../../../../../app/src/processing/app/Editor.java:2613 -!Plotter\ not\ available\ while\ serial\ monitor\ is\ open= +Plotter\ not\ available\ while\ serial\ monitor\ is\ open=\u041f\u043b\u043e\u0442\u0430\u0440 \u043d\u0435\u0434\u0430\u0441\u0442\u0443\u043f\u043d\u044b, \u043a\u0430\u043b\u0456 \u0430\u0434\u043a\u0440\u044b\u0442\u044b serial-\u043c\u0430\u043d\u0456\u0442\u043e\u0440 #: Preferences.java:110 Polish=\u041f\u043e\u043b\u044c\u0441\u043a\u0430\u044f @@ -1168,7 +1204,7 @@ Portuguese\ (Portugal)=\u041f\u0430\u0440\u0442\u0443\u0433\u0430\u043b\u044c\u0 Preferences=\u041d\u0430\u043b\u0430\u0434\u043a\u0456 #: ../../../../../app/src/processing/app/Base.java:297 -!Preparing\ boards...= +Preparing\ boards...=\u041f\u0430\u0434\u0440\u044b\u0445\u0442\u043e\u045e\u043a\u0430 \u043f\u043b\u0430\u0442\u2026 #: FindReplace.java:123 FindReplace.java:128 Previous=\u041f\u0430\u043f\u044f\u0440\u044d\u0434\u043d\u0456 @@ -1238,9 +1274,9 @@ Redo=\u041f\u0435\u0440\u0430\u0440\u0430\u0431\u0456\u0446\u044c #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1268,6 +1304,9 @@ Replace\ with\:=\u0417\u0430\u043c\u044f\u043d\u0456\u0446\u044c \u043d\u0430\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=\u0420\u0443\u043c\u044b\u043d\u0441\u043a\u0430\u044f @@ -1353,15 +1392,19 @@ Serial\ Monitor=Serial-\u043c\u0430\u043d\u0456\u0442\u043e\u0440 !Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release= #: ../../../../../app/src/processing/app/Editor.java:2516 -!Serial\ monitor\ not\ available\ while\ plotter\ is\ open= +Serial\ monitor\ not\ available\ while\ plotter\ is\ open=Serial-\u043c\u0430\u043d\u0456\u0442\u043e\u0440 \u043d\u0435\u0434\u0430\u0441\u0442\u0443\u043f\u043d\u044b, \u043a\u0430\u043b\u0456 \u0430\u0434\u043a\u0440\u044b\u0442\u044b \u043f\u043b\u043e\u0442\u0430\u0440 #: Serial.java:194 #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=\u041f\u0430\u0441\u043b\u044f\u0434\u043e\u045e\u043d\u044b \u043f\u043e\u0440\u0442 ''{0}'' \u043d\u0435 \u0437\u043d\u043e\u0439\u0434\u0437\u0435\u043d\u044b. \u0426\u0456 \u0432\u044b\u0431\u0440\u0430\u043b\u0456 \u0432\u044b \u043f\u0430\u0442\u0440\u044d\u0431\u043d\u044b \u045e \u043c\u0435\u043d\u044e "\u0406\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b" > Serial Port ? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Serial-\u043f\u043e\u0440\u0442 {0} \u043d\u044f \u0437\u043d\u043e\u0439\u0434\u0437\u0435\u043d\u044b.\n\u041f\u0430\u0441\u043f\u0440\u0430\u0431\u0430\u0432\u0430\u0446\u044c \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u0440\u0430\u0437 \u0456\u043d\u0448\u044b \u043f\u043e\u0440\u0442? +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=\u041f\u0430\u0441\u043b\u044f\u0434\u043e\u045e\u043d\u044b\u044f \u043f\u0430\u0440\u0442\u044b @@ -1379,6 +1422,9 @@ Settings=\u041d\u0430\u043b\u0430\u0434\u043a\u0456 #: Editor.java:641 Show\ Sketch\ Folder=\u041f\u0430\u043a\u0430\u0437\u0430\u0446\u044c \u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u0421\u043a\u0435\u0442\u0447\u0430\u045e +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =\u041f\u0430\u043a\u0430\u0437\u0432\u0430\u0446\u044c \u043f\u0430\u0434\u0440\u0430\u0431\u044f\u0437\u043d\u044b \u0432\u044b\u0432\u0430\u0434 \u043f\u0430\u0434\u0447\u0430\u0441\: @@ -1498,6 +1544,10 @@ The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=\u0424\u0430\u0439\u043b"{0}" \u043f\u0430\u0432\u0456\u043d\u0435\u043d \u0431\u044b\u0446\u044c \u0443\u043d\u0443\u0442\u0440\u044b \u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430\n\u0441\u043a\u0435\u0442\u0447\u0443 \u0437 \u0456\u043c\u0451\u043c "{1}". \u0421\u0442\u0432\u0430\u0440\u044b\u0446\u044c \u0442\u0430\u043a\u0456 \u043a\u0430\u0442\u0430\u043b\u043e\u0433, \n\u043f\u0435\u0440\u0430\u043c\u044f\u0441\u0446\u0456\u0446\u044c \u0444\u0430\u0439\u043b, \u0438 \u043f\u0440\u0430\u0446\u044f\u0433\u043d\u0443\u0446\u044c? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=\u0411\u0456\u0431\u043b\u0456\u044f\u0442\u044d\u043a\u0443 "{0}" \u043d\u0435\u043c\u0430\u0433\u0447\u044b\u043c\u0430 \u0432\u044b\u043a\u0430\u0440\u044b\u0441\u0442\u0430\u0446\u044c.\n\u0406\u043c\u044f \u0431\u0456\u0431\u043b\u0456\u044f\u0442\u044d\u043a\u0456 \u043f\u0430\u0432\u0456\u043d\u043d\u0430 \u0437\u043a\u043b\u0430\u0434\u0430\u0446\u0446\u0430 \u0442\u043e\u043b\u044c\u043a\u0456 \u0437 \u043b\u0456\u0442\u0430\u0440 \u0456 \u043b\u0456\u0447\u0431\u0430\u045e.\n(\u0442\u043e\u043b\u044c\u043a\u0456 ASCII \u0456 \u0431\u0435\u0437 \u043f\u0440\u0430\u0431\u0435\u043b\u0430\u045e, \u043d\u0435\u043b\u044c\u0433\u0430 \u043f\u0430\u0447\u044b\u043d\u0430\u0446\u044c \u0437 \u043b\u0456\u0447\u0431\u044b) @@ -1522,8 +1572,8 @@ The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=\u0421\u043a\u0435\u0442\u #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=\u041f\u0430\u043f\u043a\u0430 \u0441\u043a\u0435\u0442\u0447\u0443 \u0437\u043d\u0456\u043a\u043b\u0430.\n\u0421\u043f\u0440\u0430\u0431\u0443\u0435\u043c \u043f\u0435\u0440\u0430\u0437\u0430\u0445\u0430\u0432\u0430\u0446\u044c \u0443 \u0442\u044b\u043c \u0436\u0430 \u043c\u0435\u0441\u0446\u044b,\n\u0430\u043b\u0435 \u045e\u0441\u0451 \u0430\u043a\u0440\u0430\u043c\u044f \u043a\u043e\u0434\u0443 \u0431\u0443\u0434\u0437\u0435 \u0441\u0442\u0440\u0430\u0447\u0430\u043d\u0430. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=\u041a\u0430\u0442\u0430\u043b\u043e\u0433 \u0441\u043a\u0435\u0442\u0447\u0443 \u0431\u043e\u043b\u044c\u0448 \u043d\u0435 \u0456\u0441\u043d\u0443\u0435.\nArduino \u043f\u0435\u0440\u0430\u043a\u043b\u044e\u0447\u044b\u0446\u0446\u0430 \u043d\u0430 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043f\u0430-\u0437\u043c\u043e\u045e\u0447\u0432\u0430\u043d\u043d\u044e\n\u0446\u0456 \u0441\u0442\u0432\u043e\u0440\u044b\u0446\u044c \u043d\u043e\u0432\u044b \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043a\u0430\u043b\u0456 \u043f\u0430\u0442\u0440\u044d\u0431\u043d\u0430.\nArduino \u0441\u043f\u044b\u043d\u0456\u0446\u044c \u043a\u0430\u0437\u0430\u0446\u044c \u0430\u0431 \u0441\u0430\u0431\u0435 \u0443 \u0442\u0440\u044d\u0446\u044f\u0439 \u0430\u0441\u043e\u0431\u0435. @@ -1531,8 +1581,11 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 -!This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= +This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=\u0413\u044d\u0442\u0430\u044f \u0431\u0456\u0431\u043b\u0456\u044f\u0442\u044d\u043a\u0430 \u043d\u0435 \u043f\u0440\u044b\u0441\u0443\u0442\u043d\u0456\u0447\u0430\u0435 \u045e \u041a\u0456\u0440\u0430\u045e\u043d\u0456\u043a\u0430 \u0431\u0456\u0431\u043b\u0456\u044f\u0442\u044d\u043a\u0430\u043c\u0456. \u0412\u044b \u043d\u0435 \u0437\u043c\u043e\u0436\u0430\u0446\u0435 \u043f\u0435\u0440\u0430\u045e\u0441\u0442\u0430\u043b\u044f\u0432\u0430\u0446\u044c \u044f\u0435 \u0430\u0434\u0441\u044e\u043b\u044c.\n\u0412\u044b \u045e\u043f\u044d\u045e\u043d\u0435\u043d\u044b, \u0448\u0442\u043e \u0445\u043e\u0447\u0430\u0446\u0435 \u0432\u044b\u0434\u0430\u043b\u0456\u0446\u044c \u044f\u0435? #: ../../../../../app/src/processing/app/EditorStatus.java:349 !This\ report\ would\ have\ more\ information\ with\n"Show\ verbose\ output\ during\ compilation"\noption\ enabled\ in\ File\ ->\ Preferences.\n= @@ -1594,7 +1647,7 @@ Unable\ to\ find\ {0}\ in\ {1}=\u041d\u0435\u043c\u0430\u0433\u0447\u044b\u043c\ Unable\ to\ open\ serial\ monitor=\u041d\u0435\u043c\u0430\u0433\u0447\u044b\u043c\u0430 \u0430\u0434\u0447\u044b\u043d\u0456\u0446\u044c serial-\u043c\u0430\u043d\u0456\u0442\u043e\u0440 #: ../../../../../app/src/processing/app/Editor.java:2709 -!Unable\ to\ open\ serial\ plotter= +Unable\ to\ open\ serial\ plotter=\u041d\u0435\u043c\u0430\u0433\u0447\u044b\u043c\u0430 \u0430\u0434\u043a\u0440\u044b\u0446\u044c serial-\u043f\u043b\u043e\u0442\u0430\u0440 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:94 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 @@ -1632,11 +1685,11 @@ Update\ sketch\ files\ to\ new\ extension\ on\ save\ (.pde\ ->\ .ino)=\u0410\u04 #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:88 #, java-format -!Updates\ available\ for\ some\ of\ your\ {0}boards{1}= +Updates\ available\ for\ some\ of\ your\ {0}boards{1}=\u0414\u0430\u0441\u0442\u0443\u043f\u043d\u044b\u044f \u0430\u0431\u043d\u0430\u045e\u043b\u0435\u043d\u043d\u0456 \u0434\u043b\u044f \u043d\u0435\u043a\u0430\u0442\u043e\u0440\u044b\u0445 \u0432\u0430\u0448\u044b\u0445 {0}\u043f\u043b\u0430\u0442{1} #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:90 #, java-format -!Updates\ available\ for\ some\ of\ your\ {0}boards{1}\ and\ {2}libraries{3}= +Updates\ available\ for\ some\ of\ your\ {0}boards{1}\ and\ {2}libraries{3}=\u0414\u0430\u0441\u0442\u0443\u043f\u043d\u044b\u044f \u0430\u0431\u043d\u0430\u045e\u043b\u0435\u043d\u043d\u0456 \u0434\u043b\u044f \u043d\u0435\u043a\u0430\u0442\u043e\u0440\u044b\u0445 \u0432\u0430\u0448\u044b\u0445 {0}\u043f\u043b\u0430\u0442{1} \u0456 {2}\u0431\u0456\u0431\u043b\u0456\u044f\u0442\u044d\u043a{3} #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:86 #, java-format @@ -1695,7 +1748,7 @@ Verify=\u0421\u043f\u0440\u0430\u045e\u0434\u0437\u0456\u0446\u044c Verify\ code\ after\ upload=\u0421\u043f\u0430\u045e\u0434\u0437\u0456\u0446\u044c \u043a\u043e\u0434 \u043f\u0430\u0441\u043b\u044f \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0456 #: ../../../../../app/src/processing/app/Editor.java:725 -Verify/Compile=\u041f\u0440\u0430\u0432\u0435\u0432\u044b\u0446\u044c/\u041a\u0430\u043c\u043f\u0456\u043b\u044f\u0432\u0430\u0446\u044c +Verify/Compile=\u041f\u0440\u0430\u0432\u0435\u0440\u044b\u0446\u044c/\u043a\u0430\u043c\u043f\u0456\u043b\u044f\u0432\u0430\u0446\u044c #: ../../../../../app/src/processing/app/Base.java:451 Verifying\ and\ uploading...=\u041f\u0440\u0430\u0432\u0435\u0440\u043a\u0430 \u0456 \u0432\u044b\u0433\u0440\u0443\u0437\u043a\u0430... @@ -1865,6 +1918,11 @@ ignoring\ invalid\ font\ size\ {0}=\u0456\u0433\u043d\u0430\u0440\u0443\u044e \u #: Editor.java:936 Editor.java:943 name\ is\ null=\u0456\u043c\u044f - null +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=serialMenu is null @@ -1932,10 +1990,6 @@ version\ {0}=\u0432\u0435\u0440\u0441\u0456\u044f {0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: \u041d\u044f\u043f\u0440\u0430\u0432\u0456\u043b\u044c\u043d\u0430\u0435 \u0456\u043c\u044f \u043f\u043b\u0430\u0442\u044b, \u043c\u0430\u0435 \u0431\u044b\u0446\u044c \u0444\u043e\u0440\u043c\u0430 "package\:arch\:board" \u0446\u0456 "package\:arch\:board\:options" -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: \u041d\u044f\u043f\u0440\u0430\u0432\u0456\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0446\u044b\u044f \u0434\u043b\u044f "{1}" \u043e\u043f\u0446\u044b\u0456 \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b "{2}" - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: \u041d\u044f\u043f\u0440\u0430\u0432\u0456\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0446\u044b\u044f \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u044b "{1}" @@ -1944,6 +1998,10 @@ version\ {0}=\u0432\u0435\u0440\u0441\u0456\u044f {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: \u041d\u044f\u043f\u0440\u0430\u0432\u0456\u043b\u044c\u043d\u0430\u044f \u043e\u043f\u0446\u044b\u044f, \u043c\u0430\u0435 \u0431\u044b\u0446\u044c \u0444\u043e\u0440\u043c\u0430 "name\=value" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: \u041d\u0435\u0432\u044f\u0434\u043e\u043c\u0430\u044f \u0430\u0440\u0445\u0456\u0442\u044d\u043a\u0442\u0443\u0440\u0430 diff --git a/arduino-core/src/processing/app/i18n/Resources_bg.po b/arduino-core/src/processing/app/i18n/Resources_bg.po index 61fb48b81c2..5d37f7f1501 100644 --- a/arduino-core/src/processing/app/i18n/Resources_bg.po +++ b/arduino-core/src/processing/app/i18n/Resources_bg.po @@ -17,18 +17,21 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Anton Stoychev , 2013 # Cristian Maglie , 2016 # Gabriel Radev , 2017 # Ivaylo Malinov , 2015 # Valentin Laskov , 2012-2016 -# Любомир Василев, 2017 +# Любомир Василев, 2017-2018 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 11:13+0000\n" +"PO-Revision-Date: 2018-11-23 17:39+0000\n" "Last-Translator: Любомир Василев\n" "Language-Team: Bulgarian (http://www.transifex.com/mbanzi/arduino-ide-15/language/bg/)\n" "MIME-Version: 1.0\n" @@ -627,6 +630,11 @@ msgstr "Старата версия на „{0}“ не може да бъде msgid "Could not replace {0}" msgstr "„{0}“ не може да се замени" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Файлът с предпочитанията не може да бъде записан: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Скицата не може да бъде архивирана" @@ -682,6 +690,10 @@ msgstr "Намаляване на отстъпа" msgid "Default" msgstr "По подразбиране" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Тема по подразбиране" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Изтриване" @@ -857,6 +869,11 @@ msgstr "Грешка при получаването на папката за д msgid "Error inside Serial.{0}()" msgstr "Грешка в Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Грешка при зареждането на темата „{0}“: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -876,6 +893,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "Грешка при отваряне на сериен порт „{0}“. Прегледайте документацията на http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Грешка при прочитането на индекса на библиотеките: {0}\nОпитайте да отворите прозореца за управление на библиотеките, за да обновите индекса." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Грешка при четенето на индекса на библиотеките: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Грешка при прочитането на папката с индекси на пакетите: {0}\n(Може би има проблем с правата за достъп?)" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Грешка при четенето на предпочитанията" @@ -910,6 +946,10 @@ msgstr "Грешка при записа на зареждащата прогр msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Грешка при записа на зареждащата програма: липсва конфигурационият параметър „{0}“" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Грешка при записа на зареждащата програма. Моля, изберете сериен порт." + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Грешка при компилиране: липсва конфигурационният параметър „{0}“" @@ -946,10 +986,6 @@ msgstr "Грешка при проверката/качването" msgid "Estonian" msgstr "Естонски" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Естонски (Естония)" - #: Editor.java:516 msgid "Examples" msgstr "Примери" @@ -1153,8 +1189,8 @@ msgstr "НЕСЪВМЕСТИМ" msgid "Ignore Case" msgstr "Без оглед на регистъра" -#: Base.java:1058 -msgid "Ignoring bad library name" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" msgstr "Пренебрегване на библиотека с неправилно име" #: Base.java:1436 @@ -1218,10 +1254,10 @@ msgstr "Инсталирани" msgid "Installing boards..." msgstr "Инсталиране на платките…" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "Инсталиране на библиотека: {0}" +msgid "Installing library: {0}:{1}" +msgstr "Инсталиране на библиотека: {0}:{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1247,6 +1283,17 @@ msgstr "Намерена е неправилна библиотека в {0}: {1 msgid "Invalid quoting: no closing [{0}] char found." msgstr "Неправилни кавички: липсва затварящ знак [{0}]." +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Неправилна версия „{0}“ за библиотека в: {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Неправилна версия {0}" + #: Preferences.java:102 msgid "Italian" msgstr "Италиански" @@ -1279,10 +1326,10 @@ msgstr "Библиотеката е добавена към Вашите биб msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "Библиотеката не може да ползва едновременно папките „src“ и „utility“. Проверете отново {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "Библиотеката е вече инсталирана: {0} версия {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "Библиотеката е вече инсталирана: {0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1699,10 +1746,10 @@ msgstr "Справочник" msgid "Remove" msgstr "Премахване" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "Премахване на библиотека: {0}" +msgid "Removing library: {0}:{1}" +msgstr "Премахване на библиотека: {0}:{1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1738,6 +1785,10 @@ msgstr "Замяна с:" msgid "Retired" msgstr "Изтеглени от употреба" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Искате ли да опитате качване чрез друг сериен порт?" + #: Preferences.java:113 msgid "Romanian" msgstr "Румънски" @@ -1861,12 +1912,15 @@ msgid "" " Serial Port menu?" msgstr "Серийният порт „{0}“ не е намерен. Избран ли е правилният в менюто „Инструменти > Сериен порт“?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Не е избран сериен порт." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Серийният порт {0} не е намерен.\nИскате ли да опитате качване чрез друг сериен порт?" +msgid "Serial port {0} not found." +msgstr "Серийният порт {0} не е намерен." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1889,6 +1943,10 @@ msgstr "Въпроси, свързани с настройките" msgid "Show Sketch Folder" msgstr "Показване на папката на скицата" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Показване на времеви код" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Показване на подробна информация при:" @@ -2060,6 +2118,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "Файлът „{0}“ трябва да е в\nпапката с име „{1}“ на скицата.\nСъздаване на папката, преместване на файла и продължаване?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Библиотеката „{0}“ не може да се използва.\nИмената на папките на библиотеките трябва да започват с буква или цифра, след което\nможе да има букви, цифри, тирета, точки и долни черти. Максималната дължина е 63 знака." + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2105,11 +2171,12 @@ msgid "" "but anything besides the code will be lost." msgstr "Папката на скицата изчезна.\nЩе бъде направен опит за повторно запазване на\nсъщото място, но всичко, освен кода, ще бъде загубено." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "Името на скицата трябваше да бъде променено. Имената на скиците\nможе да съдържат само знаци от „ASCII“ и да са не по-дълги от 64 знака." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Наложи се името на скицата да бъде променено.\nИмената на скиците трябва да започват с буква или цифра, след което\nможе да има букви, цифри, тирета, точки и долни черти. Максималната дължина е 63 знака." #: Base.java:259 msgid "" @@ -2126,6 +2193,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "Зададената папка за скицника съдържа файловете на средата за разработка.\nМоля, изберете друга папка за скицника." +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Тема:" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2618,6 +2689,12 @@ msgstr "пренебрегване на неправилен размер на msgid "name is null" msgstr "„name“ е празно" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "няма намерени заглавни файлове (.h) в „{0}“" + #: Editor.java:932 msgid "serialMenu is null" msgstr "„serialMenu“ е празно" @@ -2705,11 +2782,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: неправилно име на платка. То трябва да е във вида: „пакет:архитектура:платка“ или „пакет:архитектура:платка:опции“" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: неправилна опция за опцията „{1}“ за платката „{2}“" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2720,6 +2792,11 @@ msgstr "{0}: неправилна опция за платката „{1}“" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: неправилна опция. Тя трябва да е във вида: „име=стойност“" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: Неправилна стойност за опцията „{1}“ за платката „{2}“" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_bg.properties b/arduino-core/src/processing/app/i18n/Resources_bg.properties index 7bbd38d5f43..43b11b9843f 100644 --- a/arduino-core/src/processing/app/i18n/Resources_bg.properties +++ b/arduino-core/src/processing/app/i18n/Resources_bg.properties @@ -17,13 +17,16 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Anton Stoychev , 2013 # Cristian Maglie , 2016 # Gabriel Radev , 2017 # Ivaylo Malinov , 2015 # Valentin Laskov , 2012-2016 -# \u041b\u044e\u0431\u043e\u043c\u0438\u0440 \u0412\u0430\u0441\u0438\u043b\u0435\u0432, 2017 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 11\:13+0000\nLast-Translator\: \u041b\u044e\u0431\u043e\u043c\u0438\u0440 \u0412\u0430\u0441\u0438\u043b\u0435\u0432\nLanguage-Team\: Bulgarian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/bg/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: bg\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +# \u041b\u044e\u0431\u043e\u043c\u0438\u0440 \u0412\u0430\u0441\u0438\u043b\u0435\u0432, 2017-2018 +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 17\:39+0000\nLast-Translator\: \u041b\u044e\u0431\u043e\u043c\u0438\u0440 \u0412\u0430\u0441\u0438\u043b\u0435\u0432\nLanguage-Team\: Bulgarian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/bg/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: bg\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (\u0438\u0437\u0438\u0441\u043a\u0432\u0430 \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0410\u0440\u0434\u0443\u0438\u043d\u043e) @@ -446,6 +449,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=\u0421\u0442\u0430\u0440\u0430\u0442\u #, java-format Could\ not\ replace\ {0}=\u201e{0}\u201c \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u0437\u0430\u043c\u0435\u043d\u0438 +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=\u0424\u0430\u0439\u043b\u044a\u0442 \u0441 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f\u0442\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=\u0421\u043a\u0438\u0446\u0430\u0442\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u0430\u0440\u0445\u0438\u0432\u0438\u0440\u0430\u043d\u0430 @@ -485,6 +492,9 @@ Decrease\ Indent=\u041d\u0430\u043c\u0430\u043b\u044f\u0432\u0430\u043d\u0435 \u #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435 +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=\u0422\u0435\u043c\u0430 \u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435 + #: EditorHeader.java:314 Sketch.java:591 Delete=\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 @@ -616,6 +626,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=\u0413\u0440\u0435\u0448\u043a\u0430 #, java-format Error\ inside\ Serial.{0}()=\u0413\u0440\u0435\u0448\u043a\u0430 \u0432 Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=\u0413\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0442\u0435\u043c\u0430\u0442\u0430 \u201e{0}\u201c\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -630,6 +644,18 @@ Error\ opening\ serial\ port\ ''{0}''.=\u0413\u0440\u0435\u0448\u043a\u0430 \u04 #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=\u0413\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u043e\u0442\u0432\u0430\u0440\u044f\u043d\u0435 \u043d\u0430 \u0441\u0435\u0440\u0438\u0435\u043d \u043f\u043e\u0440\u0442 \u201e{0}\u201c. \u041f\u0440\u0435\u0433\u043b\u0435\u0434\u0430\u0439\u0442\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f\u0442\u0430 \u043d\u0430 http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=\u0413\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\u0442\u0435\: {0}\n\u041e\u043f\u0438\u0442\u0430\u0439\u0442\u0435 \u0434\u0430 \u043e\u0442\u0432\u043e\u0440\u0438\u0442\u0435 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430 \u0437\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\u0442\u0435, \u0437\u0430 \u0434\u0430 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0430. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=\u0413\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u0447\u0435\u0442\u0435\u043d\u0435\u0442\u043e \u043d\u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u0430 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\u0442\u0435\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=\u0413\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u043f\u0430\u043f\u043a\u0430\u0442\u0430 \u0441 \u0438\u043d\u0434\u0435\u043a\u0441\u0438 \u043d\u0430 \u043f\u0430\u043a\u0435\u0442\u0438\u0442\u0435\: {0}\n(\u041c\u043e\u0436\u0435 \u0431\u0438 \u0438\u043c\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043f\u0440\u0430\u0432\u0430\u0442\u0430 \u0437\u0430 \u0434\u043e\u0441\u0442\u044a\u043f?) + #: Preferences.java:277 Error\ reading\ preferences=\u0413\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u0447\u0435\u0442\u0435\u043d\u0435\u0442\u043e \u043d\u0430 \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u043d\u0438\u044f\u0442\u0430 @@ -655,6 +681,9 @@ Error\ while\ burning\ bootloader.=\u0413\u0440\u0435\u0448\u043a\u0430 \u043f\u #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=\u0413\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0430 \u043d\u0430 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u0449\u0430\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0430\: \u043b\u0438\u043f\u0441\u0432\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u0438\u044f\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u044a\u0440 \u201e{0}\u201c +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=\u0413\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u0437\u0430\u043f\u0438\u0441\u0430 \u043d\u0430 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u0449\u0430\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u0430. \u041c\u043e\u043b\u044f, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0441\u0435\u0440\u0438\u0435\u043d \u043f\u043e\u0440\u0442. + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=\u0413\u0440\u0435\u0448\u043a\u0430 \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0430\u043d\u0435\: \u043b\u0438\u043f\u0441\u0432\u0430 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0438\u044f\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u044a\u0440 \u201e{0}\u201c @@ -683,9 +712,6 @@ Error\ while\ verifying/uploading=\u0413\u0440\u0435\u0448\u043a\u0430 \u043f\u0 #: Preferences.java:93 Estonian=\u0415\u0441\u0442\u043e\u043d\u0441\u043a\u0438 -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=\u0415\u0441\u0442\u043e\u043d\u0441\u043a\u0438 (\u0415\u0441\u0442\u043e\u043d\u0438\u044f) - #: Editor.java:516 Examples=\u041f\u0440\u0438\u043c\u0435\u0440\u0438 @@ -836,8 +862,8 @@ INCOMPATIBLE=\u041d\u0415\u0421\u042a\u0412\u041c\u0415\u0421\u0422\u0418\u041c #: FindReplace.java:96 Ignore\ Case=\u0411\u0435\u0437 \u043e\u0433\u043b\u0435\u0434 \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u044a\u0440\u0430 -#: Base.java:1058 -Ignoring\ bad\ library\ name=\u041f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0433\u0432\u0430\u043d\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u043e \u0438\u043c\u0435 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=\u041f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0433\u0432\u0430\u043d\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u043e \u0438\u043c\u0435 #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=\u041f\u0440\u0435\u043d\u0435\u0431\u0440\u0435\u0433\u0432\u0430\u043d\u0435 \u043d\u0430 \u0441\u043a\u0438\u0446\u0430 \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u043e \u0438\u043c\u0435 @@ -881,9 +907,9 @@ Installed=\u0418\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0438 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=\u0418\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u043f\u043b\u0430\u0442\u043a\u0438\u0442\u0435\u2026 -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=\u0418\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\: {0} +Installing\ library\:\ {0}\:{1}=\u0418\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\: {0}\:{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -904,6 +930,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=\u041d\u0430\u043c\u0435\u0440\u0435\u04 #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u0438 \u043a\u0430\u0432\u0438\u0447\u043a\u0438\: \u043b\u0438\u043f\u0441\u0432\u0430 \u0437\u0430\u0442\u0432\u0430\u0440\u044f\u0449 \u0437\u043d\u0430\u043a [{0}]. +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u201e{0}\u201c \u0437\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0432\: {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f {0} + #: Preferences.java:102 Italian=\u0418\u0442\u0430\u043b\u0438\u0430\u043d\u0441\u043a\u0438 @@ -928,9 +963,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=\u0411\u04 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u043f\u043e\u043b\u0437\u0432\u0430 \u0435\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043f\u0430\u043f\u043a\u0438\u0442\u0435 \u201esrc\u201c \u0438 \u201eutility\u201c. \u041f\u0440\u043e\u0432\u0435\u0440\u0435\u0442\u0435 \u043e\u0442\u043d\u043e\u0432\u043e {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430 \u0435 \u0432\u0435\u0447\u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0430\: {0} \u0432\u0435\u0440\u0441\u0438\u044f {1} +Library\ is\ already\ installed\:\ {0}\:{1}=\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430 \u0435 \u0432\u0435\u0447\u0435 \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u043d\u0430\: {0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=\u041d\u043e\u043c\u0435\u0440 \u043d\u0430 \u0440\u0435\u0434\: @@ -1243,9 +1278,9 @@ Reference=\u0421\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\: {0} +Removing\ library\:\ {0}\:{1}=\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\: {0}\:{1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1273,6 +1308,9 @@ Replace\ with\:=\u0417\u0430\u043c\u044f\u043d\u0430 \u0441\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=\u0418\u0437\u0442\u0435\u0433\u043b\u0435\u043d\u0438 \u043e\u0442 \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u0430 +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=\u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u043e\u043f\u0438\u0442\u0430\u0442\u0435 \u043a\u0430\u0447\u0432\u0430\u043d\u0435 \u0447\u0440\u0435\u0437 \u0434\u0440\u0443\u0433 \u0441\u0435\u0440\u0438\u0435\u043d \u043f\u043e\u0440\u0442? + #: Preferences.java:113 Romanian=\u0420\u0443\u043c\u044a\u043d\u0441\u043a\u0438 @@ -1364,9 +1402,13 @@ Serial\ monitor\ not\ available\ while\ plotter\ is\ open=\u0421\u0435\u0440\u04 #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=\u0421\u0435\u0440\u0438\u0439\u043d\u0438\u044f\u0442 \u043f\u043e\u0440\u0442 \u201e{0}\u201c \u043d\u0435 \u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d. \u0418\u0437\u0431\u0440\u0430\u043d \u043b\u0438 \u0435 \u043f\u0440\u0430\u0432\u0438\u043b\u043d\u0438\u044f\u0442 \u0432 \u043c\u0435\u043d\u044e\u0442\u043e \u201e\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438 > \u0421\u0435\u0440\u0438\u0435\u043d \u043f\u043e\u0440\u0442\u201c? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=\u041d\u0435 \u0435 \u0438\u0437\u0431\u0440\u0430\u043d \u0441\u0435\u0440\u0438\u0435\u043d \u043f\u043e\u0440\u0442. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=\u0421\u0435\u0440\u0438\u0439\u043d\u0438\u044f\u0442 \u043f\u043e\u0440\u0442 {0} \u043d\u0435 \u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d.\n\u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u043e\u043f\u0438\u0442\u0430\u0442\u0435 \u043a\u0430\u0447\u0432\u0430\u043d\u0435 \u0447\u0440\u0435\u0437 \u0434\u0440\u0443\u0433 \u0441\u0435\u0440\u0438\u0435\u043d \u043f\u043e\u0440\u0442? +Serial\ port\ {0}\ not\ found.=\u0421\u0435\u0440\u0438\u0439\u043d\u0438\u044f\u0442 \u043f\u043e\u0440\u0442 {0} \u043d\u0435 \u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=\u0421\u0435\u0440\u0438\u0439\u043d\u0438 \u043f\u043e\u0440\u0442\u043e\u0432\u0435 @@ -1384,6 +1426,9 @@ Settings\ issues=\u0412\u044a\u043f\u0440\u043e\u0441\u0438, \u0441\u0432\u044a\ #: Editor.java:641 Show\ Sketch\ Folder=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u0430\u043f\u043a\u0430\u0442\u0430 \u043d\u0430 \u0441\u043a\u0438\u0446\u0430\u0442\u0430 +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0432\u0440\u0435\u043c\u0435\u0432\u0438 \u043a\u043e\u0434 + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u0440\u0438\: @@ -1503,6 +1548,10 @@ The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=\u0424\u0430\u0439\u043b\u044a\u0442 \u201e{0}\u201c \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0435 \u0432\n\u043f\u0430\u043f\u043a\u0430\u0442\u0430 \u0441 \u0438\u043c\u0435 \u201e{1}\u201c \u043d\u0430 \u0441\u043a\u0438\u0446\u0430\u0442\u0430.\n\u0421\u044a\u0437\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u0430\u043f\u043a\u0430\u0442\u0430, \u043f\u0440\u0435\u043c\u0435\u0441\u0442\u0432\u0430\u043d\u0435 \u043d\u0430 \u0444\u0430\u0439\u043b\u0430 \u0438 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0430\u0432\u0430\u043d\u0435? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430 \u201e{0}\u201c \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430.\n\u0418\u043c\u0435\u043d\u0430\u0442\u0430 \u043d\u0430 \u043f\u0430\u043f\u043a\u0438\u0442\u0435 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\u0442\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043f\u043e\u0447\u0432\u0430\u0442 \u0441 \u0431\u0443\u043a\u0432\u0430 \u0438\u043b\u0438 \u0446\u0438\u0444\u0440\u0430, \u0441\u043b\u0435\u0434 \u043a\u043e\u0435\u0442\u043e\n\u043c\u043e\u0436\u0435 \u0434\u0430 \u0438\u043c\u0430 \u0431\u0443\u043a\u0432\u0438, \u0446\u0438\u0444\u0440\u0438, \u0442\u0438\u0440\u0435\u0442\u0430, \u0442\u043e\u0447\u043a\u0438 \u0438 \u0434\u043e\u043b\u043d\u0438 \u0447\u0435\u0440\u0442\u0438. \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0434\u044a\u043b\u0436\u0438\u043d\u0430 \u0435 63 \u0437\u043d\u0430\u043a\u0430. + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430\u0442\u0430 \u201e{0}\u201c \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u043f\u043e\u043b\u0437\u0432\u0430.\n\u0418\u043c\u0435\u043d\u0430\u0442\u0430 \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\u0442\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u0430 \u0441\u044a\u0441\u0442\u0430\u0432\u0435\u043d\u0438 \u0441\u0430\u043c\u043e \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u0438 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438 \u0431\u0443\u043a\u0432\u0438 \u0438 \u0446\u0438\u0444\u0440\u0438.\n(\u0421\u0430\u043c\u043e \u0431\u0443\u043a\u0432\u0438 \u043e\u0442 \u201eASCII\u201c, \u0431\u0435\u0437 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u0438, \u0438 \u043d\u0435 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0437\u0430\u043f\u043e\u0447\u0432\u0430\u0442 \u0441 \u0446\u0438\u0444\u0440\u0430) @@ -1527,8 +1576,8 @@ The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=\u0421\u043a\u0438\u0446\u #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=\u041f\u0430\u043f\u043a\u0430\u0442\u0430 \u043d\u0430 \u0441\u043a\u0438\u0446\u0430\u0442\u0430 \u0438\u0437\u0447\u0435\u0437\u043d\u0430.\n\u0429\u0435 \u0431\u044a\u0434\u0435 \u043d\u0430\u043f\u0440\u0430\u0432\u0435\u043d \u043e\u043f\u0438\u0442 \u0437\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0437\u0430\u043f\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430\n\u0441\u044a\u0449\u043e\u0442\u043e \u043c\u044f\u0441\u0442\u043e, \u043d\u043e \u0432\u0441\u0438\u0447\u043a\u043e, \u043e\u0441\u0432\u0435\u043d \u043a\u043e\u0434\u0430, \u0449\u0435 \u0431\u044a\u0434\u0435 \u0437\u0430\u0433\u0443\u0431\u0435\u043d\u043e. -#: ../../../../../app/src/processing/app/SketchController.java:828 -The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.=\u0418\u043c\u0435\u0442\u043e \u043d\u0430 \u0441\u043a\u0438\u0446\u0430\u0442\u0430 \u0442\u0440\u044f\u0431\u0432\u0430\u0448\u0435 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043f\u0440\u043e\u043c\u0435\u043d\u0435\u043d\u043e. \u0418\u043c\u0435\u043d\u0430\u0442\u0430 \u043d\u0430 \u0441\u043a\u0438\u0446\u0438\u0442\u0435\n\u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u0442 \u0441\u0430\u043c\u043e \u0437\u043d\u0430\u0446\u0438 \u043e\u0442 \u201eASCII\u201c \u0438 \u0434\u0430 \u0441\u0430 \u043d\u0435 \u043f\u043e-\u0434\u044a\u043b\u0433\u0438 \u043e\u0442 64 \u0437\u043d\u0430\u043a\u0430. +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=\u041d\u0430\u043b\u043e\u0436\u0438 \u0441\u0435 \u0438\u043c\u0435\u0442\u043e \u043d\u0430 \u0441\u043a\u0438\u0446\u0430\u0442\u0430 \u0434\u0430 \u0431\u044a\u0434\u0435 \u043f\u0440\u043e\u043c\u0435\u043d\u0435\u043d\u043e.\n\u0418\u043c\u0435\u043d\u0430\u0442\u0430 \u043d\u0430 \u0441\u043a\u0438\u0446\u0438\u0442\u0435 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043f\u043e\u0447\u0432\u0430\u0442 \u0441 \u0431\u0443\u043a\u0432\u0430 \u0438\u043b\u0438 \u0446\u0438\u0444\u0440\u0430, \u0441\u043b\u0435\u0434 \u043a\u043e\u0435\u0442\u043e\n\u043c\u043e\u0436\u0435 \u0434\u0430 \u0438\u043c\u0430 \u0431\u0443\u043a\u0432\u0438, \u0446\u0438\u0444\u0440\u0438, \u0442\u0438\u0440\u0435\u0442\u0430, \u0442\u043e\u0447\u043a\u0438 \u0438 \u0434\u043e\u043b\u043d\u0438 \u0447\u0435\u0440\u0442\u0438. \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0434\u044a\u043b\u0436\u0438\u043d\u0430 \u0435 63 \u0437\u043d\u0430\u043a\u0430. #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=\u041f\u0430\u043f\u043a\u0430\u0442\u0430 \u043d\u0430 \u0441\u043a\u0438\u0446\u043d\u0438\u043a\u0430 \u0432\u0435\u0447\u0435 \u043d\u0435 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0443\u0432\u0430. \u0410\u0440\u0434\u0443\u0438\u043d\u043e\n\u0449\u0435 \u043f\u0440\u0435\u043c\u0438\u043d\u0435 \u043a\u044a\u043c \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u0442\u043e\n\u043f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435 \u0437\u0430 \u0441\u043a\u0438\u0446\u043d\u0438\u043a\u0430, \u0438\u043b\u0438 \u0449\u0435 \u0441\u044a\u0437\u0434\u0430\u0434\u0435 \u043d\u043e\u0432\u0430\n\u043f\u0430\u043f\u043a\u0430, \u0430\u043a\u043e \u0442\u043e\u0432\u0430 \u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. \u0421\u043b\u0435\u0434 \u0442\u043e\u0432\u0430 \u0410\u0440\u0434\u0443\u0438\u043d\u043e\n\u0449\u0435 \u0441\u043f\u0440\u0435 \u0434\u0430 \u0433\u043e\u0432\u043e\u0440\u0438 \u0437\u0430 \u0441\u0435\u0431\u0435 \u0441\u0438 \u0432 \u0442\u0440\u0435\u0442\u043e \u043b\u0438\u0446\u0435. @@ -1536,6 +1585,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=\u0417\u0430\u0434\u0430\u0434\u0435\u043d\u0430\u0442\u0430 \u043f\u0430\u043f\u043a\u0430 \u0437\u0430 \u0441\u043a\u0438\u0446\u043d\u0438\u043a\u0430 \u0441\u044a\u0434\u044a\u0440\u0436\u0430 \u0444\u0430\u0439\u043b\u043e\u0432\u0435\u0442\u0435 \u043d\u0430 \u0441\u0440\u0435\u0434\u0430\u0442\u0430 \u0437\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430.\n\u041c\u043e\u043b\u044f, \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0434\u0440\u0443\u0433\u0430 \u043f\u0430\u043f\u043a\u0430 \u0437\u0430 \u0441\u043a\u0438\u0446\u043d\u0438\u043a\u0430. +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =\u0422\u0435\u043c\u0430\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=\u0422\u0430\u0437\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043b\u0438\u043f\u0441\u0432\u0430 \u0432 \u0441\u043f\u0438\u0441\u044a\u043a\u0430 \u0432 \u201e\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438\u201c. \u041d\u044f\u043c\u0430 \u0434\u0430 \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u043d\u043e\u0432\u043e \u0434\u0430 \u044f \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u0442\u0435 \u043e\u0442 \u0442\u0443\u043a.\n\u041d\u0430\u0438\u0441\u0442\u0438\u043d\u0430 \u043b\u0438 \u0438\u0441\u043a\u0430\u0442\u0435 \u0434\u0430 \u044f \u0438\u0437\u0442\u0440\u0438\u0435\u0442\u0435? @@ -1870,6 +1922,11 @@ ignoring\ invalid\ font\ size\ {0}=\u043f\u0440\u0435\u043d\u0435\u0431\u0440\u0 #: Editor.java:936 Editor.java:943 name\ is\ null=\u201ename\u201c \u0435 \u043f\u0440\u0430\u0437\u043d\u043e +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=\u043d\u044f\u043c\u0430 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0437\u0430\u0433\u043b\u0430\u0432\u043d\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u0435 (.h) \u0432 \u201e{0}\u201c + #: Editor.java:932 serialMenu\ is\ null=\u201eserialMenu\u201c \u0435 \u043f\u0440\u0430\u0437\u043d\u043e @@ -1937,10 +1994,6 @@ version\ {0}=\u0432\u0435\u0440\u0441\u0438\u044f {0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u043e \u0438\u043c\u0435 \u043d\u0430 \u043f\u043b\u0430\u0442\u043a\u0430. \u0422\u043e \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0435 \u0432\u044a\u0432 \u0432\u0438\u0434\u0430\: \u201e\u043f\u0430\u043a\u0435\u0442\:\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\:\u043f\u043b\u0430\u0442\u043a\u0430\u201c \u0438\u043b\u0438 \u201e\u043f\u0430\u043a\u0435\u0442\:\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430\:\u043f\u043b\u0430\u0442\u043a\u0430\:\u043e\u043f\u0446\u0438\u0438\u201c -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u0430 \u043e\u043f\u0446\u0438\u044f \u0437\u0430 \u043e\u043f\u0446\u0438\u044f\u0442\u0430 \u201e{1}\u201c \u0437\u0430 \u043f\u043b\u0430\u0442\u043a\u0430\u0442\u0430 \u201e{2}\u201c - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u0430 \u043e\u043f\u0446\u0438\u044f \u0437\u0430 \u043f\u043b\u0430\u0442\u043a\u0430\u0442\u0430 \u201e{1}\u201c @@ -1949,6 +2002,10 @@ version\ {0}=\u0432\u0435\u0440\u0441\u0438\u044f {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u0430 \u043e\u043f\u0446\u0438\u044f. \u0422\u044f \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0435 \u0432\u044a\u0432 \u0432\u0438\u0434\u0430\: \u201e\u0438\u043c\u0435\=\u0441\u0442\u043e\u0439\u043d\u043e\u0441\u0442\u201c +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: \u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u043d\u0430 \u0441\u0442\u043e\u0439\u043d\u043e\u0441\u0442 \u0437\u0430 \u043e\u043f\u0446\u0438\u044f\u0442\u0430 \u201e{1}\u201c \u0437\u0430 \u043f\u043b\u0430\u0442\u043a\u0430\u0442\u0430 \u201e{2}\u201c + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: \u041d\u0435\u043f\u043e\u0437\u043d\u0430\u0442\u0430 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 diff --git a/arduino-core/src/processing/app/i18n/Resources_bs.po b/arduino-core/src/processing/app/i18n/Resources_bs.po index 0172f219869..e390e187106 100644 --- a/arduino-core/src/processing/app/i18n/Resources_bs.po +++ b/arduino-core/src/processing/app/i18n/Resources_bs.po @@ -17,13 +17,16 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Kenan Dervišević, 2013-2014 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: Bosnian (http://www.transifex.com/mbanzi/arduino-ide-15/language/bs/)\n" "MIME-Version: 1.0\n" @@ -622,6 +625,11 @@ msgstr "Nije moguće ukloniti staru verziju {0}." msgid "Could not replace {0}" msgstr "Nije moguće zamijeniti {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "" @@ -677,6 +685,10 @@ msgstr "Smanji uvlaku" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Obriši" @@ -852,6 +864,11 @@ msgstr "" msgid "Error inside Serial.{0}()" msgstr "" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -871,6 +888,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "" @@ -905,6 +941,10 @@ msgstr "" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -941,10 +981,6 @@ msgstr "" msgid "Estonian" msgstr "estonski" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "" - #: Editor.java:516 msgid "Examples" msgstr "Primjeri" @@ -1148,8 +1184,8 @@ msgstr "" msgid "Ignore Case" msgstr "" -#: Base.java:1058 -msgid "Ignoring bad library name" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" msgstr "" #: Base.java:1436 @@ -1213,9 +1249,9 @@ msgstr "" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1242,6 +1278,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "italijanski" @@ -1274,9 +1321,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1694,9 +1741,9 @@ msgstr "Reference" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1733,6 +1780,10 @@ msgstr "" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "rumunski" @@ -1856,11 +1907,14 @@ msgid "" " Serial Port menu?" msgstr "" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" +msgid "Serial port {0} not found." msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 @@ -1884,6 +1938,10 @@ msgstr "" msgid "Show Sketch Folder" msgstr "Prikaži folder skice" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "" @@ -2055,6 +2113,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2100,10 +2166,11 @@ msgid "" "but anything besides the code will be lost." msgstr "" -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2121,6 +2188,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2613,6 +2684,12 @@ msgstr "" msgid "name is null" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "" @@ -2700,11 +2777,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2715,6 +2787,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_bs.properties b/arduino-core/src/processing/app/i18n/Resources_bs.properties index bf981f56f91..dd3979f9c89 100644 --- a/arduino-core/src/processing/app/i18n/Resources_bs.properties +++ b/arduino-core/src/processing/app/i18n/Resources_bs.properties @@ -17,8 +17,11 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Kenan Dervi\u0161evi\u0107, 2013-2014 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Bosnian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/bs/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: bs\nPlural-Forms\: nplurals\=3; plural\=(n%10\=\=1 && n%100\!\=11 ? 0 \: n%10>\=2 && n%10<\=4 && (n%100<10 || n%100>\=20) ? 1 \: 2);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Bosnian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/bs/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: bs\nPlural-Forms\: nplurals\=3; plural\=(n%10\=\=1 && n%100\!\=11 ? 0 \: n%10>\=2 && n%10<\=4 && (n%100<10 || n%100>\=20) ? 1 \: 2);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=(zahtjeva ponovno pokretanje Arduina) @@ -441,6 +444,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Nije mogu\u0107e ukloniti staru verzij #, java-format Could\ not\ replace\ {0}=Nije mogu\u0107e zamijeniti {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 !Couldn't\ archive\ sketch= @@ -480,6 +487,9 @@ Decrease\ Indent=Smanji uvlaku #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=Obri\u0161i @@ -611,6 +621,10 @@ Error=Gre\u0161ka #, java-format !Error\ inside\ Serial.{0}()= +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -625,6 +639,18 @@ Error=Gre\u0161ka #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 !Error\ reading\ preferences= @@ -650,6 +676,9 @@ Error=Gre\u0161ka #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -678,9 +707,6 @@ Error\ while\ printing.=Gre\u0161ka prilikom \u0161tampanja. #: Preferences.java:93 Estonian=estonski -#: ../../../processing/app/Preferences.java:146 -!Estonian\ (Estonia)= - #: Editor.java:516 Examples=Primjeri @@ -831,8 +857,8 @@ Hungarian=ma\u0111arski #: FindReplace.java:96 !Ignore\ Case= -#: Base.java:1058 -!Ignoring\ bad\ library\ name= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 !Ignoring\ sketch\ with\ bad\ name= @@ -876,9 +902,9 @@ Indonesian=indonezijski #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -899,6 +925,15 @@ Indonesian=indonezijski #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=italijanski @@ -923,9 +958,9 @@ Latvian=latvijski #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -1238,9 +1273,9 @@ Reference=Reference #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1268,6 +1303,9 @@ Rename=Preimenuj #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=rumunski @@ -1359,9 +1397,13 @@ Select\ All=Ozna\u010di sve #, java-format !Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?= -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -!Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?= +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1379,6 +1421,9 @@ Select\ All=Ozna\u010di sve #: Editor.java:641 Show\ Sketch\ Folder=Prika\u017ei folder skice +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 !Show\ verbose\ output\ during\:\ = @@ -1498,6 +1543,10 @@ Tamil=tamilski #, java-format !The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format !The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)= @@ -1522,8 +1571,8 @@ Tamil=tamilski #: Sketch.java:1755 !The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.= -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 !The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.= @@ -1531,6 +1580,9 @@ Tamil=tamilski #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1865,6 +1917,11 @@ http\://www.arduino.cc/latest.txt=http\://www.arduino.cc/latest.txt #: Editor.java:936 Editor.java:943 !name\ is\ null= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 !serialMenu\ is\ null= @@ -1932,10 +1989,6 @@ http\://www.arduino.cc/latest.txt=http\://www.arduino.cc/latest.txt #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1944,6 +1997,10 @@ http\://www.arduino.cc/latest.txt=http\://www.arduino.cc/latest.txt #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_ca.po b/arduino-core/src/processing/app/i18n/Resources_ca.po index 24d5ae3f385..c0ff7801665 100644 --- a/arduino-core/src/processing/app/i18n/Resources_ca.po +++ b/arduino-core/src/processing/app/i18n/Resources_ca.po @@ -17,11 +17,15 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # dplanella , 2017 # Enric Verdaguer , 2016 -# Francesc Famadas , 2015 -# jmontane, 2018 -# Marc GB , 2016 +# Francesc Famadas, 2015 +# Joan Montané, 2018 +# Jofre Faraudo , 2021 +# 17275f6663c0806cb14df3aaa64f5dcc_36b1070 <63b2d9bf279ebdb5b732343823eaa154_408083>, 2016 # Marc Palacín , 2016 # Moritz Werner Casero , 2015 # Sergi Pérez Labernia , 2014 @@ -33,8 +37,8 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2018-03-14 09:17+0000\n" -"Last-Translator: jmontane\n" +"PO-Revision-Date: 2021-04-01 15:50+0000\n" +"Last-Translator: Jofre Faraudo \n" "Language-Team: Catalan (http://www.transifex.com/mbanzi/arduino-ide-15/language/ca/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -447,7 +451,7 @@ msgstr "Només es pot passar un de: {0}" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 msgid "Can't enable external editor" -msgstr "" +msgstr "No s'ha pogut activar l'editor extern" #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 @@ -632,6 +636,11 @@ msgstr "No es pot esborrar l'anterior versió de {0}" msgid "Could not replace {0}" msgstr "No es pot substituir {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "No s'ha pogut escriure al fitxer de preferències: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "No s´ha pogut arxivar el sketch" @@ -687,6 +696,10 @@ msgstr "Disminueix el sagnat" msgid "Default" msgstr "Predeterminat" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Tema predeterminat" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Suprimeix" @@ -862,6 +875,11 @@ msgstr "Error obtenint la carpeta data d'Arduino." msgid "Error inside Serial.{0}()" msgstr "Error a dins del Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "S'ha produït un error en carregar el tema {0}: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -881,6 +899,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "Error a l'obrir el port sèrie \"{0}\". Prova a consultar la documentació a http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "S'ha produït un error en llegir l'índex de biblioteques: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Error en llegir les preferències" @@ -915,6 +952,10 @@ msgstr "Error al carrega el bootloader." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Error durant l’enregistrament del bootloader: no es troba el paràmetre de configuració {0}" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Error durant l'enregistrament del bootloader: seleccioneu un port sèrie." + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Error durant la pujada: no es troba el paràmetre de configuració {0}" @@ -951,10 +992,6 @@ msgstr "Error mentre verificava/pujava" msgid "Estonian" msgstr "estonià" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "estonià (Estònia)" - #: Editor.java:516 msgid "Examples" msgstr "Exemples" @@ -997,7 +1034,7 @@ msgstr "No s'ha pogut canviar el nom de \"{0}\" a \"{1}\"" #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 msgid "Failed to rename sketch folder" -msgstr "" +msgstr "No s'ha pogut canviar el nom del directori del sketch" #: Editor.java:491 msgid "File" @@ -1158,9 +1195,9 @@ msgstr "NO COMPATIBLE" msgid "Ignore Case" msgstr "Ignora diferències entre majúscules i minúscules" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Ignorant el nom incorrecte de la biblioteca." +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "S'ha ignorat la llibreria amb un nom incorrecte." #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1223,10 +1260,10 @@ msgstr "Instal·lat" msgid "Installing boards..." msgstr "S'estan instal·lant les plaques..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "S'està instal·lant la biblioteca: {0}" +msgid "Installing library: {0}:{1}" +msgstr "S'està instal·lant la llibreria: {0}:{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1252,6 +1289,17 @@ msgstr "Biblioteca invàlida trobada en {0}: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "Cita invàlida: no s'ha trobat el caràcter [{0}] de tancament." +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Versió invàlida {0}" + #: Preferences.java:102 msgid "Italian" msgstr "italià" @@ -1284,10 +1332,10 @@ msgstr "Biblioteca afegida a les vostres biblioteques. Comproveu el menú \"Incl msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "La biblioteca no pot fer servir ambdós directoris 'src' i 'utility'. Torneu a comprovar {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "La biblioteca ja està instal·lada: {0} versió {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "La biblioteca ja està instal·lada: {0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1704,10 +1752,10 @@ msgstr "Referència" msgid "Remove" msgstr "Suprimeix" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "S'està suprimint la biblioteca: {0}" +msgid "Removing library: {0}:{1}" +msgstr "S'està suprimint la biblioteca: {0}:{1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1743,6 +1791,10 @@ msgstr "Substituir amb:" msgid "Retired" msgstr "Retirat" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Voleu tornar a intentar la pujada amb un port sèrie diferent?" + #: Preferences.java:113 msgid "Romanian" msgstr "romanès" @@ -1853,7 +1905,7 @@ msgstr "Plotter sèrie" msgid "" "Serial monitor is not supported on network ports such as {0} for the {1} in " "this release" -msgstr "" +msgstr "El monitor sèrie no està disponible en ports de xarxa com el {0} pel {1} en aquesta versió" #: ../../../../../app/src/processing/app/Editor.java:2516 msgid "Serial monitor not available while plotter is open" @@ -1866,12 +1918,15 @@ msgid "" " Serial Port menu?" msgstr "Port sèrie \"{0}\" no trobat. Ha seleccionat el port corresponent al menú Eines > Port sèrie?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "No hi ha cap port sèrie seleccionat." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Port sèrie {0} no trobat.\nRe-intentar la pujada amb un altre port sèrie?" +msgid "Serial port {0} not found." +msgstr "No s'ha trobat el port sèrie {0}." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1894,6 +1949,10 @@ msgstr "Errors en les preferències" msgid "Show Sketch Folder" msgstr "Mostra la carpeta del Sketch" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Mostra la marca de temps" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Mostra la sortida detallada durant: " @@ -2055,7 +2114,7 @@ msgstr "La classe Udp ha estat reanomenada a EthernetUdp." #: ../../../../../arduino-core/src/processing/app/BaseNoGui.java:177 msgid "The current selected board needs the core '{0}' that is not installed." -msgstr "" +msgstr "La placa actual seleccionada necessita el nucli «{0}» que no està instal·lat." #: Editor.java:2147 #, java-format @@ -2065,6 +2124,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "El fitxer \"{0}\" ha de trobar-se dins\nla carpeta de l'sketch anomenat \"{1}\".\nCrear aquesta carpeta, moure l'arxiu, i continua?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "La biblioteca «{0}» no es pot usar.\nEls noms dels directoris de les biblioteques han de començar amb una lletra o nombre, seguit de lletres, nombres, guions (-), punts (.) i guions baixos (_) i no poden superar els 63 caràcters." + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2101,7 +2168,7 @@ msgstr "El sketch \"{0}\" no pot ser utilitzat.\nEls noms dels sketch han de con #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format msgid "The sketch already contains a file named \"{0}\"" -msgstr "" +msgstr "El sketch ja conté un fitxer anomenat «{0}»" #: Sketch.java:1755 msgid "" @@ -2110,10 +2177,11 @@ msgid "" "but anything besides the code will be lost." msgstr "La carpeta del sketch ha desaparegut.\n Es provarà de tornar a desar en la mateixa localització,\nperò tot excepte el codi serà perdut." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2131,6 +2199,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "La carpeta del bloc d'esbossos especificada conté la teva còpia de l'IDE.\nSisplau escull una carpeta diferent per al teu bloc d'esbossos." +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Tema: " + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2492,7 +2564,7 @@ msgstr "Ha oblidat el seu sketchbook" msgid "" "You have unsaved changes!\n" "You must save all your sketches to enable this option." -msgstr "" +msgstr "Teniu canvis sense desar!\nDeseu tots els esbossos per activar aquesta opció." #: ../../../processing/app/AbstractMonitor.java:92 msgid "" @@ -2623,6 +2695,12 @@ msgstr "Ignorant mida de font invàlida {0}" msgid "name is null" msgstr "El nom es null" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu es null" @@ -2710,11 +2788,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: Nom de placa desconeguda, ha de tenir el format \"package:arch:board\" o \"package:arch:board:options\"" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: Opció no vàlida per \"{1}\" opció per placa \"{2}\"" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2725,6 +2798,11 @@ msgstr "{0}: Opció no vàlida per la tarja \"{1}\"" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: Opció no vàlida, s'espera la forma \"name=value\"" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_ca.properties b/arduino-core/src/processing/app/i18n/Resources_ca.properties index 281e5f51518..33713fe852f 100644 --- a/arduino-core/src/processing/app/i18n/Resources_ca.properties +++ b/arduino-core/src/processing/app/i18n/Resources_ca.properties @@ -17,18 +17,22 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # dplanella , 2017 # Enric Verdaguer , 2016 -# Francesc Famadas , 2015 -# jmontane, 2018 -# Marc GB , 2016 +# Francesc Famadas, 2015 +# Joan Montan\u00e9, 2018 +# Jofre Faraudo , 2021 +# 17275f6663c0806cb14df3aaa64f5dcc_36b1070 <63b2d9bf279ebdb5b732343823eaa154_408083>, 2016 # Marc Palac\u00edn , 2016 # Moritz Werner Casero , 2015 # Sergi P\u00e9rez Labernia , 2014 # shacawine , 2012 # Xavier Romero Aguad\u00e9 , 2016 # Xavier Romero Aguad\u00e9 , 2014 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-03-14 09\:17+0000\nLast-Translator\: jmontane\nLanguage-Team\: Catalan (http\://www.transifex.com/mbanzi/arduino-ide-15/language/ca/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: ca\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2021-04-01 15\:50+0000\nLast-Translator\: Jofre Faraudo \nLanguage-Team\: Catalan (http\://www.transifex.com/mbanzi/arduino-ide-15/language/ca/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: ca\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=(cal reiniciar l'Arduino) @@ -316,7 +320,7 @@ Burning\ bootloader\ to\ I/O\ Board\ (this\ may\ take\ a\ minute)...=L'enregistr Can\ only\ pass\ one\ of\:\ {0}=Nom\u00e9s es pot passar un de\: {0} #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 -!Can't\ enable\ external\ editor= +Can't\ enable\ external\ editor=No s'ha pogut activar l'editor extern #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 @@ -451,6 +455,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=No es pot esborrar l'anterior versi\u0 #, java-format Could\ not\ replace\ {0}=No es pot substituir {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=No s'ha pogut escriure al fitxer de prefer\u00e8ncies\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=No s\u00b4ha pogut arxivar el sketch @@ -490,6 +498,9 @@ Decrease\ Indent=Disminueix el sagnat #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=Predeterminat +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=Tema predeterminat + #: EditorHeader.java:314 Sketch.java:591 Delete=Suprimeix @@ -621,6 +632,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Error obtenint la carpeta data d'Ard #, java-format Error\ inside\ Serial.{0}()=Error a dins del Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=S'ha produ\u00eft un error en carregar el tema {0}\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -635,6 +650,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Error al obrir el port s\u00e8rie "{0}". #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=Error a l'obrir el port s\u00e8rie "{0}". Prova a consultar la documentaci\u00f3 a http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=S'ha produ\u00eft un error en llegir l'\u00edndex de biblioteques\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 Error\ reading\ preferences=Error en llegir les prefer\u00e8ncies @@ -660,6 +687,9 @@ Error\ while\ burning\ bootloader.=Error al carrega el bootloader. #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Error durant l\u2019enregistrament del bootloader\: no es troba el par\u00e0metre de configuraci\u00f3 {0} +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=Error durant l'enregistrament del bootloader\: seleccioneu un port s\u00e8rie. + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=Error durant la pujada\: no es troba el par\u00e0metre de configuraci\u00f3 {0} @@ -688,9 +718,6 @@ Error\ while\ verifying/uploading=Error mentre verificava/pujava #: Preferences.java:93 Estonian=estoni\u00e0 -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=estoni\u00e0 (Est\u00f2nia) - #: Editor.java:516 Examples=Exemples @@ -723,7 +750,7 @@ Failed\ to\ open\ sketch\:\ "{0}"=No s\u00b4ha pogut obrir el sketch\: "{0}" Failed\ to\ rename\ "{0}"\ to\ "{1}"=No s'ha pogut canviar el nom de "{0}" a "{1}" #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 -!Failed\ to\ rename\ sketch\ folder= +Failed\ to\ rename\ sketch\ folder=No s'ha pogut canviar el nom del directori del sketch #: Editor.java:491 File=Fitxer @@ -841,8 +868,8 @@ INCOMPATIBLE=NO COMPATIBLE #: FindReplace.java:96 Ignore\ Case=Ignora difer\u00e8ncies entre maj\u00fascules i min\u00fascules -#: Base.java:1058 -Ignoring\ bad\ library\ name=Ignorant el nom incorrecte de la biblioteca. +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=S'ha ignorat la llibreria amb un nom incorrecte. #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Ignorant el sketch amb un nom incorrecte @@ -886,9 +913,9 @@ Installed=Instal\u00b7lat #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=S'estan instal\u00b7lant les plaques... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=S'est\u00e0 instal\u00b7lant la biblioteca\: {0} +Installing\ library\:\ {0}\:{1}=S'est\u00e0 instal\u00b7lant la llibreria\: {0}\:{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -909,6 +936,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=Biblioteca inv\u00e0lida trobada en {0} #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=Cita inv\u00e0lida\: no s'ha trobat el car\u00e0cter [{0}] de tancament. +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=Versi\u00f3 inv\u00e0lida {0} + #: Preferences.java:102 Italian=itali\u00e0 @@ -933,9 +969,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=Biblioteca #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=La biblioteca no pot fer servir ambd\u00f3s directoris 'src' i 'utility'. Torneu a comprovar {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=La biblioteca ja est\u00e0 instal\u00b7lada\: {0} versi\u00f3 {1} +Library\ is\ already\ installed\:\ {0}\:{1}=La biblioteca ja est\u00e0 instal\u00b7lada\: {0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=N\u00famero de l\u00ednia\: @@ -1248,9 +1284,9 @@ Reference=Refer\u00e8ncia #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=Suprimeix -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=S'est\u00e0 suprimint la biblioteca\: {0} +Removing\ library\:\ {0}\:{1}=S'est\u00e0 suprimint la biblioteca\: {0}\:{1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1278,6 +1314,9 @@ Replace\ with\:=Substituir amb\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=Retirat +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=Voleu tornar a intentar la pujada amb un port s\u00e8rie diferent? + #: Preferences.java:113 Romanian=roman\u00e8s @@ -1360,7 +1399,7 @@ Serial\ Plotter=Plotter s\u00e8rie #: ../../../../../app/src/processing/app/Editor.java:2325 #, java-format -!Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release= +Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release=El monitor s\u00e8rie no est\u00e0 disponible en ports de xarxa com el {0} pel {1} en aquesta versi\u00f3 #: ../../../../../app/src/processing/app/Editor.java:2516 Serial\ monitor\ not\ available\ while\ plotter\ is\ open=El monitor s\u00e8rie no es troba disponible mentre el plotter est\u00e0 obert @@ -1369,9 +1408,13 @@ Serial\ monitor\ not\ available\ while\ plotter\ is\ open=El monitor s\u00e8rie #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Port s\u00e8rie "{0}" no trobat. Ha seleccionat el port corresponent al men\u00fa Eines > Port s\u00e8rie? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=No hi ha cap port s\u00e8rie seleccionat. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Port s\u00e8rie {0} no trobat.\nRe-intentar la pujada amb un altre port s\u00e8rie? +Serial\ port\ {0}\ not\ found.=No s'ha trobat el port s\u00e8rie {0}. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=Ports de s\u00e8rie @@ -1389,6 +1432,9 @@ Settings\ issues=Errors en les prefer\u00e8ncies #: Editor.java:641 Show\ Sketch\ Folder=Mostra la carpeta del Sketch +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=Mostra la marca de temps + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Mostra la sortida detallada durant\: @@ -1502,12 +1548,16 @@ The\ Server\ class\ has\ been\ renamed\ EthernetServer.=La classe Server ha esta The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=La classe Udp ha estat reanomenada a EthernetUdp. #: ../../../../../arduino-core/src/processing/app/BaseNoGui.java:177 -!The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed.= +The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed.=La placa actual seleccionada necessita el nucli \u00ab{0}\u00bb que no est\u00e0 instal\u00b7lat. #: Editor.java:2147 #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=El fitxer "{0}" ha de trobar-se dins\nla carpeta de l'sketch anomenat "{1}".\nCrear aquesta carpeta, moure l'arxiu, i continua? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=La biblioteca \u00ab{0}\u00bb no es pot usar.\nEls noms dels directoris de les biblioteques han de comen\u00e7ar amb una lletra o nombre, seguit de lletres, nombres, guions (-), punts (.) i guions baixos (_) i no poden superar els 63 car\u00e0cters. + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=La biblioteca "{0}" no es pot utilitzar.\nEls noms de biblioteca nom\u00e9s poden contenir nombres i lletres senzilles.\n(nom\u00e9s ASCII i sense espais, tampoc pot comen\u00e7ar amb un nombre). @@ -1527,13 +1577,13 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format -!The\ sketch\ already\ contains\ a\ file\ named\ "{0}"= +The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=El sketch ja cont\u00e9 un fitxer anomenat \u00ab{0}\u00bb #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=La carpeta del sketch ha desaparegut.\n Es provar\u00e0 de tornar a desar en la mateixa localitzaci\u00f3,\nper\u00f2 tot excepte el codi ser\u00e0 perdut. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=La carpeta sketchbook no existeix.\nArduino canviar\u00e0 a la localitzaci\u00f3 per defecte\nde sketchbook, i crear\u00e0 una nova carpeta sketchbook\nsi fos necessari. Arduino parar\u00e0 de parlar\nd'ell mateix en tercera persona. @@ -1541,6 +1591,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=La carpeta del bloc d'esbossos especificada cont\u00e9 la teva c\u00f2pia de l'IDE.\nSisplau escull una carpeta diferent per al teu bloc d'esbossos. +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =Tema\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=Aquesta biblioteca no est\u00e0 inclosa al Gestor de biblioteques. No podreu reinstal\u00b7lar-la des d'aqu\u00ed.\nEsteu segur de voler desinstal\u00b7lar-la? @@ -1801,7 +1854,7 @@ You\ cannot\ save\ the\ sketch\ into\ a\ folder\ninside\ itself.\ This\ would\ g You\ forgot\ your\ sketchbook=Ha oblidat el seu sketchbook #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:252 -!You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.= +You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.=Teniu canvis sense desar\!\nDeseu tots els esbossos per activar aquesta opci\u00f3. #: ../../../processing/app/AbstractMonitor.java:92 You've\ pressed\ {0}\ but\ nothing\ was\ sent.\ Should\ you\ select\ a\ line\ ending?=Ha apretat {0} pero res s'ha enviat. Vol seleccionar un f\u00ed de linia? @@ -1875,6 +1928,11 @@ ignoring\ invalid\ font\ size\ {0}=Ignorant mida de font inv\u00e0lida {0} #: Editor.java:936 Editor.java:943 name\ is\ null=El nom es null +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=serialMenu es null @@ -1942,10 +2000,6 @@ version\ {0}=versi\u00f3 {0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: Nom de placa desconeguda, ha de tenir el format "package\:arch\:board" o "package\:arch\:board\:options" -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: Opci\u00f3 no v\u00e0lida per "{1}" opci\u00f3 per placa "{2}" - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: Opci\u00f3 no v\u00e0lida per la tarja "{1}" @@ -1954,6 +2008,10 @@ version\ {0}=versi\u00f3 {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Opci\u00f3 no v\u00e0lida, s'espera la forma "name\=value" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: Arquitectura desconeguda diff --git a/arduino-core/src/processing/app/i18n/Resources_cs_CZ.po b/arduino-core/src/processing/app/i18n/Resources_cs_CZ.po index 440a71a604b..1ada5ea9c18 100644 --- a/arduino-core/src/processing/app/i18n/Resources_cs_CZ.po +++ b/arduino-core/src/processing/app/i18n/Resources_cs_CZ.po @@ -17,20 +17,23 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # horcicaa , 2012 # Cristian Maglie , 2016 -# fatalwir , 2014 +# fatalwir , 2014,2018 # Michal Kočer , 2012 # Michal Kočer , 2012 # Michal Kočer , 2013-2014 -# Ondrej Novy , 2015 -# Zdeno Sekerák , 2015-2017 +# Ondřej Nový , 2015 +# Zdeno Sekerák , 2015-2017,2019 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-11-29 17:20+0000\n" +"PO-Revision-Date: 2019-02-13 13:34+0000\n" "Last-Translator: Zdeno Sekerák \n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/mbanzi/arduino-ide-15/language/cs_CZ/)\n" "MIME-Version: 1.0\n" @@ -629,6 +632,11 @@ msgstr "Nemohu smazat starou verzi {0}" msgid "Could not replace {0}" msgstr "Nemohu změnit {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Nemůžu zapsat nastavení do souboru: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Projekt nebylo možné archivovat" @@ -684,6 +692,10 @@ msgstr "Zmenšit odsazení" msgid "Default" msgstr "Default" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Výchozí motiv" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Smazat" @@ -859,6 +871,11 @@ msgstr "Chyba v přistupu do datového adresáře Arduina." msgid "Error inside Serial.{0}()" msgstr "Chyba v Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Chyba při načítání motivu {0}: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -878,6 +895,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "Chyba pri otevření sériového portu ''{0}''. Zkus se podívat na dokumentaci která je na http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Chyba pri parsování indexu knihoven: {0}\nPokuste se otevřít správce knihoven a aktualizujte její index." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Nastala chyba pri čtení indexu knihoven: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Chyba při čtení indexu ve složce balíků: {0}\n(možná problém s přístupovými právami?)" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Chyba při čtení nastavení" @@ -912,6 +948,10 @@ msgstr "Chyba při vypalování zavaděče." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Chyba při vypalování bootloaderu: chybí konfigurační parametr '{0}'" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Chyba pri vypalování bootloader: prosím vyberte sériový port." + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Nastala chyba při kompilaci: chybejíci '{0}' konfigurační parametr" @@ -948,10 +988,6 @@ msgstr "Nastala chyby při verifykaci/nahrávání." msgid "Estonian" msgstr "Estonština" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estónština (Estónsko)" - #: Editor.java:516 msgid "Examples" msgstr "Příklady" @@ -1155,9 +1191,9 @@ msgstr "NEKOMPAKTIBILNÍ" msgid "Ignore Case" msgstr "Ignoruj velikost písmen" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Ignoruji chybný název knihovny" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "Ignoruji knihovnu s nesprávným názvem" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1220,10 +1256,10 @@ msgstr "Instalováno" msgid "Installing boards..." msgstr "Instalace desek..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "Instaluji knihovnu: {0}" +msgid "Installing library: {0}:{1}" +msgstr "Instalace knihovny: {0}:{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1249,6 +1285,17 @@ msgstr "Nalezena neplatná knihovna v {0}: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "Neplatný znak úvodzovek: chýbějicí uzavírací znak [{0}]." +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Neplatná verze knihovny '{0}' v: {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Neplatná verze {0}" + #: Preferences.java:102 msgid "Italian" msgstr "Italština" @@ -1281,10 +1328,10 @@ msgstr "Knihovna přidána do tvých knihoven. Zkontroluj menu \"Zahrnuté kniho msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "Knihovna nemůže být použitá součastne v adresářích 'src' a 'utility'. Zdvojená kontrola {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "Knihovna je již instalovaná: {0} verze {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "Knihovna je již nainstalována: {0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1701,10 +1748,10 @@ msgstr "Reference" msgid "Remove" msgstr "Vymazat" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "Mažu knihovnu: {0}" +msgid "Removing library: {0}:{1}" +msgstr "Odstraňování knihovny: {0}:{1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1740,6 +1787,10 @@ msgstr "Nahraď za:" msgid "Retired" msgstr "Nepodporovaný" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Chcete opakovat nahrávání s jiným sériovým portem?" + #: Preferences.java:113 msgid "Romanian" msgstr "Rumunština" @@ -1863,12 +1914,15 @@ msgid "" " Serial Port menu?" msgstr "Seriový port ''{0}'' nebyl nalezen. Vybrali jste správný port v menu Nástroje > Seriový port?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Nebyl vybrán sériový port." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Seriový port {0} nenalezen\nMám zkusit nahrávat na jiný seriový port?" +msgid "Serial port {0} not found." +msgstr "Sériový port {0} se nenašel." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1891,6 +1945,10 @@ msgstr "Problém s Nastavením" msgid "Show Sketch Folder" msgstr "Zobraz adresář s projekty" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Zobrazit časové razítko" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Zobrazit více informací výstupu během: " @@ -2062,6 +2120,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "Soubor \"{0}\" musí být uložen \nv adresáři pro projekty pojmenovaném \"{1}\".\nMám vytvořit adresář, přesunout tam soubor a pokračovat?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Knihovnu \"{0}\" nelze použít.\nNázev složky knihovny musí začínat písmenem nebo číslem a může obsahovat pouze písmena, číslice, pomlčky, tečky a podtržítka. Maximální délka názvu je 63 znaků." + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2107,11 +2173,12 @@ msgid "" "but anything besides the code will be lost." msgstr "Projekt zmizel.\nPokusím se znovu uložit na stejné místo,\nale krom kódu bude všechno ostatní ztraceno!" -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "Jmého projektu bylo změneno. Jmého projekt může obsahovat\npouze znaky ASCII nebo čísla a musí mít méne než 64 znaků." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Neplatný název projektu.\nNázev projektu musí začínat písmenem nebo číslem a může obsahovat pouze písmena, číslice, pomlčky, tečky a podtržítka. Maximální délka názvu je 63 znaků." #: Base.java:259 msgid "" @@ -2128,6 +2195,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "Specifikovaný projektový adresář obsahuje kopii tvého IDE.\nProsím vyber pro svůj projekt jiný adresář." +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Motiv:" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2620,6 +2691,12 @@ msgstr "ignoruji nepovolenou velikost fontu {0}" msgid "name is null" msgstr "jméno je null" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "nenalezeny hlavičkové soubory (.h) v {0}" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu je null" @@ -2707,11 +2784,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: Chybně zvolený název vývojové desky; měl by mít formu \"package:arch:board\" či \"package:arch:board:options\"" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: Chybná volba pro \"{1}\" volbu pro vývojovou desku \"{2}\"" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2722,6 +2794,11 @@ msgstr "{0}: Chybná volba pro vývojovou desku \"{1}\"" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: Chybná volba, měla by být ve formě \"nazev=hodnota\"" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: Neplatná hodnota parametru \"{1}\" desky \"{2}\"" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_cs_CZ.properties b/arduino-core/src/processing/app/i18n/Resources_cs_CZ.properties index 5c63ce2a411..f3a559b417e 100644 --- a/arduino-core/src/processing/app/i18n/Resources_cs_CZ.properties +++ b/arduino-core/src/processing/app/i18n/Resources_cs_CZ.properties @@ -17,15 +17,18 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # horcicaa , 2012 # Cristian Maglie , 2016 -# fatalwir , 2014 +# fatalwir , 2014,2018 # Michal Ko\u010der , 2012 # Michal Ko\u010der , 2012 # Michal Ko\u010der , 2013-2014 -# Ondrej Novy , 2015 -# Zdeno Seker\u00e1k , 2015-2017 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-11-29 17\:20+0000\nLast-Translator\: Zdeno Seker\u00e1k \nLanguage-Team\: Czech (Czech Republic) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/cs_CZ/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: cs_CZ\nPlural-Forms\: nplurals\=4; plural\=(n \=\= 1 && n % 1 \=\= 0) ? 0 \: (n >\= 2 && n <\= 4 && n % 1 \=\= 0) ? 1\: (n % 1 \!\= 0 ) ? 2 \: 3;\n +# Ond\u0159ej Nov\u00fd , 2015 +# Zdeno Seker\u00e1k , 2015-2017,2019 +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2019-02-13 13\:34+0000\nLast-Translator\: Zdeno Seker\u00e1k \nLanguage-Team\: Czech (Czech Republic) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/cs_CZ/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: cs_CZ\nPlural-Forms\: nplurals\=4; plural\=(n \=\= 1 && n % 1 \=\= 0) ? 0 \: (n >\= 2 && n <\= 4 && n % 1 \=\= 0) ? 1\: (n % 1 \!\= 0 ) ? 2 \: 3;\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (vy\u017eaduje restart programu Arduino) @@ -448,6 +451,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Nemohu smazat starou verzi {0} #, java-format Could\ not\ replace\ {0}=Nemohu zm\u011bnit {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=Nem\u016f\u017eu zapsat nastaven\u00ed do souboru\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Projekt nebylo mo\u017en\u00e9 archivovat @@ -487,6 +494,9 @@ Decrease\ Indent=Zmen\u0161it odsazen\u00ed #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=Default +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=V\u00fdchoz\u00ed motiv + #: EditorHeader.java:314 Sketch.java:591 Delete=Smazat @@ -618,6 +628,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Chyba v p\u0159istupu do datov\u00e9 #, java-format Error\ inside\ Serial.{0}()=Chyba v Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=Chyba p\u0159i na\u010d\u00edt\u00e1n\u00ed motivu {0}\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -632,6 +646,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Chyba p\u0159i otev\u00edr\u00e1n\u00ed s #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=Chyba pri otev\u0159en\u00ed s\u00e9riov\u00e9ho portu ''{0}''. Zkus se pod\u00edvat na dokumentaci kter\u00e1 je na http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=Chyba pri parsov\u00e1n\u00ed indexu knihoven\: {0}\nPokuste se otev\u0159\u00edt spr\u00e1vce knihoven a aktualizujte jej\u00ed index. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=Nastala chyba pri \u010dten\u00ed indexu knihoven\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=Chyba p\u0159i \u010dten\u00ed indexu ve slo\u017ece bal\u00edk\u016f\: {0}\n(mo\u017en\u00e1 probl\u00e9m s p\u0159\u00edstupov\u00fdmi pr\u00e1vami?) + #: Preferences.java:277 Error\ reading\ preferences=Chyba p\u0159i \u010dten\u00ed nastaven\u00ed @@ -657,6 +683,9 @@ Error\ while\ burning\ bootloader.=Chyba p\u0159i vypalov\u00e1n\u00ed zavad\u01 #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Chyba p\u0159i vypalov\u00e1n\u00ed bootloaderu\: chyb\u00ed konfigura\u010dn\u00ed parametr '{0}' +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=Chyba pri vypalov\u00e1n\u00ed bootloader\: pros\u00edm vyberte s\u00e9riov\u00fd port. + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=Nastala chyba p\u0159i kompilaci\: chybej\u00edci '{0}' konfigura\u010dn\u00ed parametr @@ -685,9 +714,6 @@ Error\ while\ verifying/uploading=Nastala chyby p\u0159i verifykaci/nahr\u00e1v\ #: Preferences.java:93 Estonian=Eston\u0161tina -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Est\u00f3n\u0161tina (Est\u00f3nsko) - #: Editor.java:516 Examples=P\u0159\u00edklady @@ -838,8 +864,8 @@ INCOMPATIBLE=NEKOMPAKTIBILN\u00cd #: FindReplace.java:96 Ignore\ Case=Ignoruj velikost p\u00edsmen -#: Base.java:1058 -Ignoring\ bad\ library\ name=Ignoruji chybn\u00fd n\u00e1zev knihovny +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=Ignoruji knihovnu s nespr\u00e1vn\u00fdm n\u00e1zvem #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Ignoruji skicu chybn\u00e9ho jm\u00e9na @@ -883,9 +909,9 @@ Installed=Instalov\u00e1no #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=Instalace desek... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=Instaluji knihovnu\: {0} +Installing\ library\:\ {0}\:{1}=Instalace knihovny\: {0}\:{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -906,6 +932,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=Nalezena neplatn\u00e1 knihovna v {0}\: #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=Neplatn\u00fd znak \u00favodzovek\: ch\u00fdb\u011bjic\u00ed uzav\u00edrac\u00ed znak [{0}]. +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=Neplatn\u00e1 verze knihovny '{0}' v\: {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=Neplatn\u00e1 verze {0} + #: Preferences.java:102 Italian=Ital\u0161tina @@ -930,9 +965,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=Knihovna p #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=Knihovna nem\u016f\u017ee b\u00fdt pou\u017eit\u00e1 sou\u010dastne v adres\u00e1\u0159\u00edch 'src' a 'utility'. Zdvojen\u00e1 kontrola {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=Knihovna je ji\u017e instalovan\u00e1\: {0} verze {1} +Library\ is\ already\ installed\:\ {0}\:{1}=Knihovna je ji\u017e nainstalov\u00e1na\: {0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=\u010c\u00edslo \u0159\u00e1dku\: @@ -1245,9 +1280,9 @@ Reference=Reference #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=Vymazat -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=Ma\u017eu knihovnu\: {0} +Removing\ library\:\ {0}\:{1}=Odstra\u0148ov\u00e1n\u00ed knihovny\: {0}\:{1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1275,6 +1310,9 @@ Replace\ with\:=Nahra\u010f za\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=Nepodporovan\u00fd +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=Chcete opakovat nahr\u00e1v\u00e1n\u00ed s jin\u00fdm s\u00e9riov\u00fdm portem? + #: Preferences.java:113 Romanian=Rumun\u0161tina @@ -1366,9 +1404,13 @@ Serial\ monitor\ not\ available\ while\ plotter\ is\ open=S\u00e9riov\u00fd moni #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Seriov\u00fd port ''{0}'' nebyl nalezen. Vybrali jste spr\u00e1vn\u00fd port v menu N\u00e1stroje > Seriov\u00fd port? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=Nebyl vybr\u00e1n s\u00e9riov\u00fd port. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Seriov\u00fd port {0} nenalezen\nM\u00e1m zkusit nahr\u00e1vat na jin\u00fd seriov\u00fd port? +Serial\ port\ {0}\ not\ found.=S\u00e9riov\u00fd port {0} se nena\u0161el. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=S\u00e9riov\u00fd port @@ -1386,6 +1428,9 @@ Settings\ issues=Probl\u00e9m s Nastaven\u00edm #: Editor.java:641 Show\ Sketch\ Folder=Zobraz adres\u00e1\u0159 s projekty +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=Zobrazit \u010dasov\u00e9 raz\u00edtko + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Zobrazit v\u00edce informac\u00ed v\u00fdstupu b\u011bhem\: @@ -1505,6 +1550,10 @@ The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=Soubor "{0}" mus\u00ed b\u00fdt ulo\u017een \nv adres\u00e1\u0159i pro projekty pojmenovan\u00e9m "{1}".\nM\u00e1m vytvo\u0159it adres\u00e1\u0159, p\u0159esunout tam soubor a pokra\u010dovat? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=Knihovnu "{0}" nelze pou\u017e\u00edt.\nN\u00e1zev slo\u017eky knihovny mus\u00ed za\u010d\u00ednat p\u00edsmenem nebo \u010d\u00edslem a m\u016f\u017ee obsahovat pouze p\u00edsmena, \u010d\u00edslice, poml\u010dky, te\u010dky a podtr\u017e\u00edtka. Maxim\u00e1ln\u00ed d\u00e9lka n\u00e1zvu je 63 znak\u016f. + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=Knihovnu "{0}" nelze pou\u017e\u00edt.\nN\u00e1zev knihovny sm\u00ed obsahovat pouze z\u00e1kladn\u00ed p\u00edsmena a \u010d\u00edsla\n(tedy pouze ASCII znaky, bez mezer, n\u00e1zev nesm\u00ed za\u010d\u00ednat \u010d\u00edslem). @@ -1529,8 +1578,8 @@ The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=Projekt ji\u017e obsahuje #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Projekt zmizel.\nPokus\u00edm se znovu ulo\u017eit na stejn\u00e9 m\u00edsto,\nale krom k\u00f3du bude v\u0161echno ostatn\u00ed ztraceno\! -#: ../../../../../app/src/processing/app/SketchController.java:828 -The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.=Jm\u00e9ho projektu bylo zm\u011bneno. Jm\u00e9ho projekt m\u016f\u017ee obsahovat\npouze znaky ASCII nebo \u010d\u00edsla a mus\u00ed m\u00edt m\u00e9ne ne\u017e 64 znak\u016f. +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=Neplatn\u00fd n\u00e1zev projektu.\nN\u00e1zev projektu mus\u00ed za\u010d\u00ednat p\u00edsmenem nebo \u010d\u00edslem a m\u016f\u017ee obsahovat pouze p\u00edsmena, \u010d\u00edslice, poml\u010dky, te\u010dky a podtr\u017e\u00edtka. Maxim\u00e1ln\u00ed d\u00e9lka n\u00e1zvu je 63 znak\u016f. #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=Adres\u00e1\u0159 projekt\u016f (Sketchbook folder) ji\u017e neexistuje.\nArduino se pokus\u00ed p\u0159epnout do defaultn\u00edho um\u00edst\u011bn\u00ed projektov\u00e9ho adres\u00e1\u0159e\na adres\u00e1\u0159 pro projekty (Sketchbook) vytvo\u0159\u00ed na tomto m\u00edst\u011b.\nArduino pak o sob\u011b p\u0159estane mluvit \nve t\u0159et\u00ed osob\u011b. @@ -1538,6 +1587,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=Specifikovan\u00fd projektov\u00fd adres\u00e1\u0159 obsahuje kopii tv\u00e9ho IDE.\nPros\u00edm vyber pro sv\u016fj projekt jin\u00fd adres\u00e1\u0159. +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =Motiv\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=T\u00e1to knihovna nen\u00ed v seznamu Knihoven. Nebude\u0161 ji moci znova sem instalovat.\nJste si jisti, \u017ee ji chcete odstranit? @@ -1872,6 +1924,11 @@ ignoring\ invalid\ font\ size\ {0}=ignoruji nepovolenou velikost fontu {0} #: Editor.java:936 Editor.java:943 name\ is\ null=jm\u00e9no je null +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=nenalezeny hlavi\u010dkov\u00e9 soubory (.h) v {0} + #: Editor.java:932 serialMenu\ is\ null=serialMenu je null @@ -1939,10 +1996,6 @@ version\ {0}=verze {0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: Chybn\u011b zvolen\u00fd n\u00e1zev v\u00fdvojov\u00e9 desky; m\u011bl by m\u00edt formu "package\:arch\:board" \u010di "package\:arch\:board\:options" -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: Chybn\u00e1 volba pro "{1}" volbu pro v\u00fdvojovou desku "{2}" - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: Chybn\u00e1 volba pro v\u00fdvojovou desku "{1}" @@ -1951,6 +2004,10 @@ version\ {0}=verze {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Chybn\u00e1 volba, m\u011bla by b\u00fdt ve form\u011b "nazev\=hodnota" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: Neplatn\u00e1 hodnota parametru "{1}" desky "{2}" + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: Nezn\u00e1m\u00e1 architektura diff --git a/arduino-core/src/processing/app/i18n/Resources_da_DK.po b/arduino-core/src/processing/app/i18n/Resources_da_DK.po index 7d0e80f99f1..b44619f8c52 100644 --- a/arduino-core/src/processing/app/i18n/Resources_da_DK.po +++ b/arduino-core/src/processing/app/i18n/Resources_da_DK.po @@ -17,6 +17,9 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Jakob Enevoldsen , 2014 # Torben Løkke Leth , 2012 # Torben Løkke Leth , 2012 @@ -26,7 +29,7 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: Danish (Denmark) (http://www.transifex.com/mbanzi/arduino-ide-15/language/da_DK/)\n" "MIME-Version: 1.0\n" @@ -625,6 +628,11 @@ msgstr "Kunne ikke fjerne den gamle version af {0}" msgid "Could not replace {0}" msgstr "Kunne ikke erstatte {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "" @@ -680,6 +688,10 @@ msgstr "" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Slet" @@ -855,6 +867,11 @@ msgstr "" msgid "Error inside Serial.{0}()" msgstr "" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -874,6 +891,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "" @@ -908,6 +944,10 @@ msgstr "" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -944,10 +984,6 @@ msgstr "" msgid "Estonian" msgstr "" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "" - #: Editor.java:516 msgid "Examples" msgstr "Eksempler" @@ -1151,8 +1187,8 @@ msgstr "" msgid "Ignore Case" msgstr "" -#: Base.java:1058 -msgid "Ignoring bad library name" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" msgstr "" #: Base.java:1436 @@ -1216,9 +1252,9 @@ msgstr "" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1245,6 +1281,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "Italiensk" @@ -1277,9 +1324,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1697,9 +1744,9 @@ msgstr "" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1736,6 +1783,10 @@ msgstr "Erstat med:" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "Romænsk" @@ -1859,11 +1910,14 @@ msgid "" " Serial Port menu?" msgstr "" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" +msgid "Serial port {0} not found." msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 @@ -1887,6 +1941,10 @@ msgstr "" msgid "Show Sketch Folder" msgstr "" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "" @@ -2058,6 +2116,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2103,10 +2169,11 @@ msgid "" "but anything besides the code will be lost." msgstr "" -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2124,6 +2191,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2616,6 +2687,12 @@ msgstr "" msgid "name is null" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "" @@ -2703,11 +2780,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2718,6 +2790,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_da_DK.properties b/arduino-core/src/processing/app/i18n/Resources_da_DK.properties index 681da3d38e5..3e364c7a41c 100644 --- a/arduino-core/src/processing/app/i18n/Resources_da_DK.properties +++ b/arduino-core/src/processing/app/i18n/Resources_da_DK.properties @@ -17,11 +17,14 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Jakob Enevoldsen , 2014 # Torben L\u00f8kke Leth , 2012 # Torben L\u00f8kke Leth , 2012 # Torben L\u00f8kke Leth , 2013 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Danish (Denmark) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/da_DK/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: da_DK\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Danish (Denmark) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/da_DK/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: da_DK\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 !\ \ (requires\ restart\ of\ Arduino)= @@ -444,6 +447,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Kunne ikke fjerne den gamle version af #, java-format Could\ not\ replace\ {0}=Kunne ikke erstatte {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 !Couldn't\ archive\ sketch= @@ -483,6 +490,9 @@ Cut=Klip #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=Slet @@ -614,6 +624,10 @@ Error\ compiling.=Fejl i kompilering. #, java-format !Error\ inside\ Serial.{0}()= +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -628,6 +642,18 @@ Error\ compiling.=Fejl i kompilering. #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 !Error\ reading\ preferences= @@ -653,6 +679,9 @@ Error\ compiling.=Fejl i kompilering. #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -681,9 +710,6 @@ Error\ compiling.=Fejl i kompilering. #: Preferences.java:93 !Estonian= -#: ../../../processing/app/Preferences.java:146 -!Estonian\ (Estonia)= - #: Editor.java:516 Examples=Eksempler @@ -834,8 +860,8 @@ Help=Hj\u00e6lp #: FindReplace.java:96 !Ignore\ Case= -#: Base.java:1058 -!Ignoring\ bad\ library\ name= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 !Ignoring\ sketch\ with\ bad\ name= @@ -879,9 +905,9 @@ Indonesian=Indonesisk #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -902,6 +928,15 @@ Indonesian=Indonesisk #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=Italiensk @@ -926,9 +961,9 @@ Latvian=Lettisk #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -1241,9 +1276,9 @@ Redo=Annuller fortryd #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1271,6 +1306,9 @@ Replace\ with\:=Erstat med\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=Rom\u00e6nsk @@ -1362,9 +1400,13 @@ Send=Send #, java-format !Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?= -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -!Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?= +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1382,6 +1424,9 @@ Send=Send #: Editor.java:641 !Show\ Sketch\ Folder= +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 !Show\ verbose\ output\ during\:\ = @@ -1501,6 +1546,10 @@ Tamil=Tamilsk #, java-format !The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format !The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)= @@ -1525,8 +1574,8 @@ The\ name\ cannot\ start\ with\ a\ period.=Navnet kan ikke starte med et punktum #: Sketch.java:1755 !The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.= -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 !The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.= @@ -1534,6 +1583,9 @@ The\ name\ cannot\ start\ with\ a\ period.=Navnet kan ikke starte med et punktum #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1868,6 +1920,11 @@ http\://www.arduino.cc/latest.txt=http\://www.arduino.cc/latest.txt #: Editor.java:936 Editor.java:943 !name\ is\ null= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 !serialMenu\ is\ null= @@ -1935,10 +1992,6 @@ http\://www.arduino.cc/latest.txt=http\://www.arduino.cc/latest.txt #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1947,6 +2000,10 @@ http\://www.arduino.cc/latest.txt=http\://www.arduino.cc/latest.txt #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_de_DE.po b/arduino-core/src/processing/app/i18n/Resources_de_DE.po index d735ef7ec0f..5ec90442064 100644 --- a/arduino-core/src/processing/app/i18n/Resources_de_DE.po +++ b/arduino-core/src/processing/app/i18n/Resources_de_DE.po @@ -17,7 +17,11 @@ # Translators: # Translators: # Translators: -# Ettore Atalan , 2014-2017 +# Translators: +# Translators: +# Translators: +# Ettore Atalan , 2014-2018 +# Freddy Koschinsky , 2018 # Luca Gronmaier , 2017 # Lukas Bestle, 2016 # Lukas Bestle, 2013,2015-2016 @@ -27,8 +31,8 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-22 18:58+0000\n" -"Last-Translator: Luca Gronmaier \n" +"PO-Revision-Date: 2018-11-24 12:42+0000\n" +"Last-Translator: Ettore Atalan \n" "Language-Team: German (Germany) (http://www.transifex.com/mbanzi/arduino-ide-15/language/de_DE/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -152,7 +156,7 @@ msgstr "Afrikaans" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 msgid "Aggressively cache compiled core" -msgstr "" +msgstr "Kompilierten Kern aggressiv zwischenspeichern" #: ../../../processing/app/Preferences.java:96 msgid "Albanian" @@ -218,7 +222,7 @@ msgstr "Archivierung des Sketches abgebrochen." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format msgid "Archiving built core (caching) in: {0}" -msgstr "" +msgstr "Gebauter Kern wird archiviert (zwischengespeichert) in: {0}" #: tools/Archiver.java:75 msgid "" @@ -626,6 +630,11 @@ msgstr "Alte Version von {0} konnte nicht entfernt werden" msgid "Could not replace {0}" msgstr "{0} konnte nicht ersetzt werden" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Voreinstellungsdatei konnte nicht geschrieben werden: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Sketch konnte nicht archiviert werden" @@ -681,6 +690,10 @@ msgstr "Ausrücken" msgid "Default" msgstr "Standard" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Standardthema" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Löschen" @@ -856,6 +869,11 @@ msgstr "Fehler beim Zugriff auf den Arduino-Datenordner." msgid "Error inside Serial.{0}()" msgstr "Fehler innerhalb von Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Fehler beim Laden des Themas {0}: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -875,6 +893,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "Fehler beim Öffnen des seriellen Ports ''{0}''. Schauen Sie in die Dokumentation unter http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Fehler beim Parsen des Bibliotheksindexes: {0}\nVersuchen Sie die Bibliotheksverwaltung zu öffnen, um den Bibliotheksindex zu aktualisieren." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Fehler beim Lesen des Bibliotheksindexes: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Fehler beim Lesen des Paketindizes-Ordners: {0}\n(vielleicht ein Berechtigungsproblem?)" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Fehler beim Lesen der Voreinstellungen" @@ -909,6 +946,10 @@ msgstr "Fehler beim Brennen des Bootloaders." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Fehler beim Brennen des Bootloaders: Konfigurationsparameter '{0}' fehlt" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Fehler beim Brennen des Bootloaders: Bitte wählen Sie einen seriellen Port aus." + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Fehler beim Kompilieren: Konfigurationsparameter '{0}' fehlt" @@ -945,10 +986,6 @@ msgstr "Fehler beim Überprüfen/Hochladen" msgid "Estonian" msgstr "Estländisch" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estländisch (Estland)" - #: Editor.java:516 msgid "Examples" msgstr "Beispiele" @@ -1152,9 +1189,9 @@ msgstr "INKOMPATIBEL" msgid "Ignore Case" msgstr "Groß-/Kleinschreibung ignorieren" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Unzulässiger Bibliotheksname wird ignoriert" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "Bibliothek mit unzulässigem Namen wird ignoriert" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1217,10 +1254,10 @@ msgstr "Installiert" msgid "Installing boards..." msgstr "Boards werden installiert..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "Bibliothek wird installiert: {0}" +msgid "Installing library: {0}:{1}" +msgstr "Bibliothek wird installiert: {0}:{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1246,6 +1283,17 @@ msgstr "Ungültige Bibliothek {0} in {1} gefunden" msgid "Invalid quoting: no closing [{0}] char found." msgstr "Ungültige Quotierung: Es konnte kein schließender [{0}]-Charakter gefunden werden." +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Ungültige Version '{0}' für Bibliothek in: {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Ungültige Version {0}" + #: Preferences.java:102 msgid "Italian" msgstr "Italienisch" @@ -1278,10 +1326,10 @@ msgstr "Bibliothek wurde zu Ihren Bibliotheken hinzugefügt. Bitte im Menü \"Bi msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "Eine Bibliothek kann nicht sowohl 'src'- als auch 'utility'-Ordner verwenden. Bitte überprüfen Sie {0} nochmals" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "Bibliothek ist bereits installiert: {0} Version {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "Bibliothek ist bereits installiert: {0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1698,10 +1746,10 @@ msgstr "Referenz" msgid "Remove" msgstr "Entfernen" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "Bibliothek wird entfernt: {0}" +msgid "Removing library: {0}:{1}" +msgstr "Bibliothek wird entfernt: {0}:{1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1737,6 +1785,10 @@ msgstr "Ersetzen durch:" msgid "Retired" msgstr "Abgeschaltet" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Das Hochladen mit einem anderen seriellen Port erneut versuchen?" + #: Preferences.java:113 msgid "Romanian" msgstr "Rumänisch" @@ -1860,12 +1912,15 @@ msgid "" " Serial Port menu?" msgstr "Serieller Port \"{0}\" nicht gefunden. Wurde der richtige Port im Menü Werkzeuge > Serieller Port ausgewählt?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Serieller Port nicht ausgewählt." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Serieller Port {0} nicht gefunden.\nMit einem anderen seriellen Port versuchen?" +msgid "Serial port {0} not found." +msgstr "Serieller Port {0} nicht gefunden." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1888,6 +1943,10 @@ msgstr "Problem mit den Einstellungen" msgid "Show Sketch Folder" msgstr "Sketch-Ordner anzeigen" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Zeitstempel anzeigen" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Ausführliche Ausgabe während:" @@ -2059,6 +2118,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "Die Datei \"{0}\" muss sich in einem\nSketch-Ordner \"{1}\" befinden.\nSoll der Ordner angelegt, die Datei\nverschoben und danach fortgefahren werden?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Die Bibliothek \"{0}\" kann nicht verwendet werden.\nBibliotheksordnernamen müssen mit einem Buchstaben oder einer Zahl beginnen,\ngefolgt von Buchstaben, Zahlen, Bindestrichen, Punkten und Unterstrichen.\nDie maximale Länge beträgt 63 Zeichen." + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2104,11 +2171,12 @@ msgid "" "but anything besides the code will be lost." msgstr "Der Sketch-Ordner ist verschwunden.\nEs wird versucht, den Sketch am selben Ort zu speichern,\naber außer dem Quelltext ist alles Andere verloren." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "Der Sketchname musste geändert werden! Sketchnamen dürfen nur aus ASCII-Zeichen und Nummern bestehen und nicht länger als 64 Zeichen sein." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Der Name des Sketches musste geändert werden.\nSketch-Namen müssen mit einem Buchstaben oder einer Zahl beginnen,\ngefolgt von Buchstaben, Zahlen, Bindestrichen, Punkten und Unterstrichen.\nDie maximale Länge beträgt 63 Zeichen." #: Base.java:259 msgid "" @@ -2125,6 +2193,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "Der angegebene Sketchbook-Ordner enthält Ihre Kopie der IDE.\nBitte wählen Sie einen anderen Ordner für Ihr Sketchbook aus." +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Thema: " + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2617,6 +2689,12 @@ msgstr "Unzulässige Textgröße {0} wird ignoriert" msgid "name is null" msgstr "name ist null" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "keine Header-Dateien (.h) in {0} gefunden" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu ist null" @@ -2704,11 +2782,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: Ungültiger Boardname, er sollte in der Form \"package:arch:board\" oder \"package:arch:board:options\" sein" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: Ungültiger Wert für die \"{1}\"-Option des Boards \"{2}\"" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2719,6 +2792,11 @@ msgstr "{0}: Ungültige Option für Board \"{1}\"" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: Ungültige Option, sie sollte in der Form \"name=value\" sein" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: Ungültiger Wert für Option \"{1}\" des Boards \"{2}\"" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_de_DE.properties b/arduino-core/src/processing/app/i18n/Resources_de_DE.properties index eddce9d872a..fcba70a2c82 100644 --- a/arduino-core/src/processing/app/i18n/Resources_de_DE.properties +++ b/arduino-core/src/processing/app/i18n/Resources_de_DE.properties @@ -17,12 +17,16 @@ # Translators: # Translators: # Translators: -# Ettore Atalan , 2014-2017 +# Translators: +# Translators: +# Translators: +# Ettore Atalan , 2014-2018 +# Freddy Koschinsky , 2018 # Luca Gronmaier , 2017 # Lukas Bestle, 2016 # Lukas Bestle, 2013,2015-2016 # Dr. Mathias Wilhelm , 2012 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-22 18\:58+0000\nLast-Translator\: Luca Gronmaier \nLanguage-Team\: German (Germany) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/de_DE/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: de_DE\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-24 12\:42+0000\nLast-Translator\: Ettore Atalan \nLanguage-Team\: German (Germany) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/de_DE/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: de_DE\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (erfordert Neustart von Arduino) @@ -102,7 +106,7 @@ Additional\ Boards\ Manager\ URLs\:\ =Zus\u00e4tzliche Boardverwalter-URLs\: Afrikaans=Afrikaans #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 -!Aggressively\ cache\ compiled\ core= +Aggressively\ cache\ compiled\ core=Kompilierten Kern aggressiv zwischenspeichern #: ../../../processing/app/Preferences.java:96 Albanian=Albanisch @@ -149,7 +153,7 @@ Archive\ sketch\ canceled.=Archivierung des Sketches abgebrochen. #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format -!Archiving\ built\ core\ (caching)\ in\:\ {0}= +Archiving\ built\ core\ (caching)\ in\:\ {0}=Gebauter Kern wird archiviert (zwischengespeichert) in\: {0} #: tools/Archiver.java:75 Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.=Die Archivierung des Sketches wurde abgebrochen, da der\nSketch nicht korrekt gespeichert werden konnte. @@ -445,6 +449,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Alte Version von {0} konnte nicht entf #, java-format Could\ not\ replace\ {0}={0} konnte nicht ersetzt werden +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=Voreinstellungsdatei konnte nicht geschrieben werden\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Sketch konnte nicht archiviert werden @@ -484,6 +492,9 @@ Decrease\ Indent=Ausr\u00fccken #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=Standard +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=Standardthema + #: EditorHeader.java:314 Sketch.java:591 Delete=L\u00f6schen @@ -615,6 +626,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Fehler beim Zugriff auf den Arduino- #, java-format Error\ inside\ Serial.{0}()=Fehler innerhalb von Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=Fehler beim Laden des Themas {0}\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -629,6 +644,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Fehler beim \u00d6ffnen des seriellen Por #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=Fehler beim \u00d6ffnen des seriellen Ports ''{0}''. Schauen Sie in die Dokumentation unter http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=Fehler beim Parsen des Bibliotheksindexes\: {0}\nVersuchen Sie die Bibliotheksverwaltung zu \u00f6ffnen, um den Bibliotheksindex zu aktualisieren. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=Fehler beim Lesen des Bibliotheksindexes\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=Fehler beim Lesen des Paketindizes-Ordners\: {0}\n(vielleicht ein Berechtigungsproblem?) + #: Preferences.java:277 Error\ reading\ preferences=Fehler beim Lesen der Voreinstellungen @@ -654,6 +681,9 @@ Error\ while\ burning\ bootloader.=Fehler beim Brennen des Bootloaders. #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Fehler beim Brennen des Bootloaders\: Konfigurationsparameter '{0}' fehlt +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=Fehler beim Brennen des Bootloaders\: Bitte w\u00e4hlen Sie einen seriellen Port aus. + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=Fehler beim Kompilieren\: Konfigurationsparameter '{0}' fehlt @@ -682,9 +712,6 @@ Error\ while\ verifying/uploading=Fehler beim \u00dcberpr\u00fcfen/Hochladen #: Preferences.java:93 Estonian=Estl\u00e4ndisch -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Estl\u00e4ndisch (Estland) - #: Editor.java:516 Examples=Beispiele @@ -835,8 +862,8 @@ INCOMPATIBLE=INKOMPATIBEL #: FindReplace.java:96 Ignore\ Case=Gro\u00df-/Kleinschreibung ignorieren -#: Base.java:1058 -Ignoring\ bad\ library\ name=Unzul\u00e4ssiger Bibliotheksname wird ignoriert +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=Bibliothek mit unzul\u00e4ssigem Namen wird ignoriert #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Sketch mit unzul\u00e4ssigem Namen wurde ignoriert @@ -880,9 +907,9 @@ Installed=Installiert #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=Boards werden installiert... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=Bibliothek wird installiert\: {0} +Installing\ library\:\ {0}\:{1}=Bibliothek wird installiert\: {0}\:{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -903,6 +930,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=Ung\u00fcltige Bibliothek {0} in {1} gef #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=Ung\u00fcltige Quotierung\: Es konnte kein schlie\u00dfender [{0}]-Charakter gefunden werden. +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=Ung\u00fcltige Version '{0}' f\u00fcr Bibliothek in\: {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=Ung\u00fcltige Version {0} + #: Preferences.java:102 Italian=Italienisch @@ -927,9 +963,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=Bibliothek #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=Eine Bibliothek kann nicht sowohl 'src'- als auch 'utility'-Ordner verwenden. Bitte \u00fcberpr\u00fcfen Sie {0} nochmals -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=Bibliothek ist bereits installiert\: {0} Version {1} +Library\ is\ already\ installed\:\ {0}\:{1}=Bibliothek ist bereits installiert\: {0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=Zeilennummer\: @@ -1242,9 +1278,9 @@ Reference=Referenz #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=Entfernen -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=Bibliothek wird entfernt\: {0} +Removing\ library\:\ {0}\:{1}=Bibliothek wird entfernt\: {0}\:{1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1272,6 +1308,9 @@ Replace\ with\:=Ersetzen durch\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=Abgeschaltet +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=Das Hochladen mit einem anderen seriellen Port erneut versuchen? + #: Preferences.java:113 Romanian=Rum\u00e4nisch @@ -1363,9 +1402,13 @@ Serial\ monitor\ not\ available\ while\ plotter\ is\ open=Serieller Monitor nich #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Serieller Port "{0}" nicht gefunden. Wurde der richtige Port im Men\u00fc Werkzeuge > Serieller Port ausgew\u00e4hlt? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=Serieller Port nicht ausgew\u00e4hlt. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Serieller Port {0} nicht gefunden.\nMit einem anderen seriellen Port versuchen? +Serial\ port\ {0}\ not\ found.=Serieller Port {0} nicht gefunden. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=Serielle Ports @@ -1383,6 +1426,9 @@ Settings\ issues=Problem mit den Einstellungen #: Editor.java:641 Show\ Sketch\ Folder=Sketch-Ordner anzeigen +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=Zeitstempel anzeigen + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Ausf\u00fchrliche Ausgabe w\u00e4hrend\: @@ -1502,6 +1548,10 @@ The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=Die Datei "{0}" muss sich in einem\nSketch-Ordner "{1}" befinden.\nSoll der Ordner angelegt, die Datei\nverschoben und danach fortgefahren werden? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=Die Bibliothek "{0}" kann nicht verwendet werden.\nBibliotheksordnernamen m\u00fcssen mit einem Buchstaben oder einer Zahl beginnen,\ngefolgt von Buchstaben, Zahlen, Bindestrichen, Punkten und Unterstrichen.\nDie maximale L\u00e4nge betr\u00e4gt 63 Zeichen. + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=Die Bibliothek "{0}" kann nicht verwendet werden.\nBibliotheksnamen d\u00fcrfen nur Buchstaben und Zahlen enthalten.\n(nur ASCII-Zeichen, keine Leerzeichen und keine Zahl am Anfang) @@ -1526,8 +1576,8 @@ The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=Der Sketch enth\u00e4lt be #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Der Sketch-Ordner ist verschwunden.\nEs wird versucht, den Sketch am selben Ort zu speichern,\naber au\u00dfer dem Quelltext ist alles Andere verloren. -#: ../../../../../app/src/processing/app/SketchController.java:828 -The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.=Der Sketchname musste ge\u00e4ndert werden\! Sketchnamen d\u00fcrfen nur aus ASCII-Zeichen und Nummern bestehen und nicht l\u00e4nger als 64 Zeichen sein. +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=Der Name des Sketches musste ge\u00e4ndert werden.\nSketch-Namen m\u00fcssen mit einem Buchstaben oder einer Zahl beginnen,\ngefolgt von Buchstaben, Zahlen, Bindestrichen, Punkten und Unterstrichen.\nDie maximale L\u00e4nge betr\u00e4gt 63 Zeichen. #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=Der Sketchbook-Ordner ist nicht mehr vorhanden.\nArduino wird auf den Standardordner f\u00fcr das\nSketchbook umschalten und bei Bedarf einen\nneuen Sketchbook-Ordner anlegen.\nDanach wird Arduino aufh\u00f6ren, von sich\nin der dritten Person zu sprechen. @@ -1535,6 +1585,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=Der angegebene Sketchbook-Ordner enth\u00e4lt Ihre Kopie der IDE.\nBitte w\u00e4hlen Sie einen anderen Ordner f\u00fcr Ihr Sketchbook aus. +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =Thema\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=Diese Bibliothek ist in der Bibliotheksverwaltung nicht aufgelistet. Sie k\u00f6nnen sie nicht mehr von hier neu installieren.\nSind Sie sicher, dass Sie sie l\u00f6schen m\u00f6chten? @@ -1869,6 +1922,11 @@ ignoring\ invalid\ font\ size\ {0}=Unzul\u00e4ssige Textgr\u00f6\u00dfe {0} wird #: Editor.java:936 Editor.java:943 name\ is\ null=name ist null +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=keine Header-Dateien (.h) in {0} gefunden + #: Editor.java:932 serialMenu\ is\ null=serialMenu ist null @@ -1936,10 +1994,6 @@ version\ {0}=Version {0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: Ung\u00fcltiger Boardname, er sollte in der Form "package\:arch\:board" oder "package\:arch\:board\:options" sein -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: Ung\u00fcltiger Wert f\u00fcr die "{1}"-Option des Boards "{2}" - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: Ung\u00fcltige Option f\u00fcr Board "{1}" @@ -1948,6 +2002,10 @@ version\ {0}=Version {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Ung\u00fcltige Option, sie sollte in der Form "name\=value" sein +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: Ung\u00fcltiger Wert f\u00fcr Option "{1}" des Boards "{2}" + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: Unbekannte Architektur diff --git a/arduino-core/src/processing/app/i18n/Resources_el_GR.po b/arduino-core/src/processing/app/i18n/Resources_el_GR.po index 880ad528677..5dab27535dc 100644 --- a/arduino-core/src/processing/app/i18n/Resources_el_GR.po +++ b/arduino-core/src/processing/app/i18n/Resources_el_GR.po @@ -17,10 +17,15 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Dimitris Zervas <01ttouch@gmail.com>, 2012 # Cristian Maglie , 2016 +# doki suse , 2019 +# doki suse , 2019 # firewalker , 2015-2016 -# Spyros Papanastasiou , 2015 +# Spyros Papanastasiou , 2015 # Vangelis Skarmoutsos , 2016 # Γιάννης Σφακιανάκης , 2013,2016 msgid "" @@ -28,8 +33,8 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" -"Last-Translator: Cristian Maglie \n" +"PO-Revision-Date: 2019-04-24 18:48+0000\n" +"Last-Translator: doki suse \n" "Language-Team: Greek (Greece) (http://www.transifex.com/mbanzi/arduino-ide-15/language/el_GR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -129,7 +134,7 @@ msgstr "Περί του Arduino" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 msgid "Acoli" -msgstr "" +msgstr "Αντσόλι" #: ../../../../../app/src/processing/app/Base.java:1177 msgid "Add .ZIP Library..." @@ -153,7 +158,7 @@ msgstr "Αφρικάανς" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 msgid "Aggressively cache compiled core" -msgstr "" +msgstr "Επιθετική αποθήκευση του μεταγλωττισμένου πυρήνα" #: ../../../processing/app/Preferences.java:96 msgid "Albanian" @@ -219,7 +224,7 @@ msgstr "Ακυρώθηκε η αρχειοθέτηση σχεδίου." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format msgid "Archiving built core (caching) in: {0}" -msgstr "" +msgstr "Αρχειοθέτηση δημιουργημένου πυρήνα (caching) σε: {0}" #: tools/Archiver.java:75 msgid "" @@ -352,7 +357,7 @@ msgstr "Πλακέτα" #: ../../../../../app//src/processing/app/Editor.java:2824 msgid "Board Info" -msgstr "" +msgstr "Πληροφορίες πλακέτας" #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 @@ -433,7 +438,7 @@ msgstr "Εγγραφή του Bootloader στην πλακέτα Ι/Ο (ίσως msgid "" "CRC doesn't match, file is corrupted. It may be a temporary problem, please " "retry later." -msgstr "" +msgstr "CRC δεν ταιριάζει, το αρχείο είναι κατεστραμμένο. Μπορεί να είναι προσωρινό πρόβλημα, παρακαλώ δοκιμάστε ξανά αργότερα." #: ../../../processing/app/Base.java:379 #, java-format @@ -442,7 +447,7 @@ msgstr "Μπορεί να περάσει μόνο ένα από: {0}" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 msgid "Can't enable external editor" -msgstr "" +msgstr "Δεν μπορεί να ενεργοποιηθεί ο εξωτερικός επεξεργαστής κειμένου" #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 @@ -488,7 +493,7 @@ msgstr "Κινέζικα (Taiwan) (Big5)" #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 msgid "Clear output" -msgstr "" +msgstr "Εκκαθάριση εξόδου" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 msgid "Click for a list of unofficial boards support URLs" @@ -546,7 +551,7 @@ msgstr "Δεν μπόρεσε να αντιγραφεί σε μία κατάλλ #: ../../../../../arduino-core/src/processing/app/Sketch.java:342 #, java-format msgid "Could not create directory \"{0}\"" -msgstr "" +msgstr "Δεν μπόρεσε να δημιουργηθεί ο φάκελος \"{0}\"" #: Editor.java:2179 msgid "Could not create the sketch folder." @@ -627,6 +632,11 @@ msgstr "Δεν μπορεί να διαγραφεί η παλιά εκδοση msgid "Could not replace {0}" msgstr "Δεν μπορεί να αντικατασταθεί το {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Δεν μπόρεσε να γίνει εγγραφή του αρχείου προτιμήσεων: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Δεν μπόρεσε να γίνει αρχειοθέτηση του σχεδίου" @@ -672,7 +682,7 @@ msgstr "Αποθήκευση δεδομένων" #: ../../../../../app/src/processing/app/Editor.java:1386 msgid "Decrease Font Size" -msgstr "" +msgstr "Μείωση μεγέθους φόντου" #: Editor.java:1224 Editor.java:2765 msgid "Decrease Indent" @@ -682,6 +692,10 @@ msgstr "Μείωση εσοχής" msgid "Default" msgstr "Προεπιλογή" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Προεπιλεγμένο θέμα" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Διαγραφή" @@ -857,6 +871,11 @@ msgstr "Λάθος κατα την λήψη του φακέλου δεδομέν msgid "Error inside Serial.{0}()" msgstr "Σφάλμα μέσα στο Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Σφάλμα κατα την φόρτωση του θέματος {0}: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -876,6 +895,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "Σφάλμα ανοίγματος της σειριακής θύρας \"{0}\". Συμβουλευτείτε την τεκμηρίωση στο http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Σφάλμα ανάλυσης ευρετηρίου βιβλιοθηκών: {0}\nΔοκιμάστε να ανοίξετε τον Διαχειριστή βιβλιοθήκης για να ενημερώσετε το ευρετήριο των βιβλιοθηκών. " + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Σφάλμα ανάγνωσης ευρετηρίου βιβλιοθηκών: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Σφάλμα ανάγνωσης πακέτου indexes folder: {0}\n(ίσως να υπάρχει πρόβλημα άδειας;) " + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Σφάλμα ανάγνωσης προτιμήσεων" @@ -910,6 +948,10 @@ msgstr "Σφάλμα κατά την εγγραφή bootloader." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Σφάλμα κατά την εγγραφή bootloader: Απουσία '{0}' παραμέτρου διαμόρφωσης " +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Σφάλμα κατα την εγγραφή του bootloader: παρακαλώ επιλέξτε μια σειριακή θύρα." + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Σφάλμα κατά την μεταγλώττιση: Απουσία '{0}' παραμέτρου διαμόρφωσης " @@ -946,23 +988,19 @@ msgstr "Σφάλμα κατά την επικύρωση/ανέβασμα" msgid "Estonian" msgstr "Εσθονικά" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Εσθονικά (Εσθονία)" - #: Editor.java:516 msgid "Examples" msgstr "Παραδείγματα" #: ../../../../../app/src/processing/app/Base.java:1185 msgid "Examples for any board" -msgstr "" +msgstr "Παραδείγματα για οποιαδήποτε πλακέτα" #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 #, java-format msgid "Examples for {0}" -msgstr "" +msgstr "Παράδειγμα για {0}" #: ../../../../../app/src/processing/app/Base.java:1244 msgid "Examples from Custom Libraries" @@ -970,7 +1008,7 @@ msgstr "Παραδείγματα από προσαρμοσμένες βιβλι #: ../../../../../app/src/processing/app/Base.java:1329 msgid "Examples from Other Libraries" -msgstr "" +msgstr "Παραδείγματα από άλλες βιβλιοθήκες " #: ../../../../../app/src/processing/app/Editor.java:753 msgid "Export canceled, changes must first be saved." @@ -988,11 +1026,11 @@ msgstr "Αποτυχία ανοίγματος του σχεδίου: \"{0}\"" #: ../../../../../arduino-core/src/processing/app/SketchFile.java:183 #, java-format msgid "Failed to rename \"{0}\" to \"{1}\"" -msgstr "" +msgstr "Αποτυχία στην μετονομασία \"{0}\" σε \"{1}\"" #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 msgid "Failed to rename sketch folder" -msgstr "" +msgstr "Αποτυχία στην μετονομασία του φακέλου σχεδίου" #: Editor.java:491 msgid "File" @@ -1085,7 +1123,7 @@ msgstr "Γερμανικά" #: ../../../../../app//src/processing/app/Editor.java:817 msgid "Get Board Info" -msgstr "" +msgstr "Ανάκτηση πληροφοριών πλακέτας" #: Editor.java:1054 msgid "Getting Started" @@ -1147,15 +1185,15 @@ msgstr "Ουγγαρέζικα" #: ../../../../../app/src/processing/app/Base.java:1319 msgid "INCOMPATIBLE" -msgstr "" +msgstr "Ασύμβατο " #: FindReplace.java:96 msgid "Ignore Case" msgstr "Αγνόησε την κεφαλαιοποίηση" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Το λάθος όνομα της βιβλιοθήκης αγνοήθηκε" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "Αγνόηση βιβλιοθήκης με λάθος όνομα" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1183,7 +1221,7 @@ msgstr "Εσφαλμένος φάκελος εγκατάστασης IDE" #: ../../../../../app/src/processing/app/Editor.java:1378 msgid "Increase Font Size" -msgstr "" +msgstr "Αύξηση μεγέθους φόντου" #: Editor.java:1216 Editor.java:2757 msgid "Increase Indent" @@ -1218,10 +1256,10 @@ msgstr "Εγκατεστημένο" msgid "Installing boards..." msgstr "Εγκατάσταση πλακετών..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "Εγκατάσταση βιβλιοθήκης:{0}" +msgid "Installing library: {0}:{1}" +msgstr "Εγκατάσταση βιβλιοθήκης: {0}:{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1247,6 +1285,17 @@ msgstr "Βρέθηκε μη έγγυρη βιβλιοθήκη στο {0}: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "Μη έγγυρη παράθεση: δεν βρέθηκε χαρακτήρας [{0}] κλεισίματος." +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Λάθος έκδοση '{0}' για την βιβλιοθήκη στο: {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Μη έγκυρη έκδοση {0}" + #: Preferences.java:102 msgid "Italian" msgstr "Ιταλικά" @@ -1257,7 +1306,7 @@ msgstr "Γιαπωνέζικα" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:81 msgid "Kazakh" -msgstr "" +msgstr "Καζακικά" #: Preferences.java:104 msgid "Korean" @@ -1279,10 +1328,10 @@ msgstr "Η βιβλιοθήκη προστέθηκε στις βιβλιοθήκ msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "Η βιβλιοθήκη δεν μπορεί να χρησιμοποιεί και τον φάκελο 'src' και τον 'utility'. Ελέγξτε το {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "Η βιβλιοθήκη είναι ήδη εγκατεστημένη: {0} έκδοση {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "Η βιβλιοθήκη είναι ήδη εγκατεστημένη: {0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1290,7 +1339,7 @@ msgstr "Αριθμός σειράς:" #: Preferences.java:106 msgid "Lithuaninan" -msgstr "Λιθουανίας" +msgstr "Λιθουανικά" #: ../../../../../app/src/processing/app/Base.java:132 msgid "Loading configuration..." @@ -1361,7 +1410,7 @@ msgstr "Όνομα για νέο αρχείο:" #: ../../../../../app//src/processing/app/Editor.java:2809 msgid "Native serial port, can't obtain info" -msgstr "" +msgstr "Η φυσική σειριακή θύρα, δεν μπορεί να ανακτήσει τις πληροφορίες" #: ../../../processing/app/Preferences.java:149 msgid "Nepali" @@ -1373,7 +1422,7 @@ msgstr "Δίκτυο" #: ../../../../../app//src/processing/app/Editor.java:2804 msgid "Network port, can't obtain info" -msgstr "" +msgstr "Η θύρα του δικτύου, δεν μπορεί να ανακτήσει τις πληροφορίες" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Network ports" @@ -1483,7 +1532,7 @@ msgstr "Μη επαρκής μνήμη, δείτε στο http://www.arduino.cc/ #: Preferences.java:80 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2145 Editor.java:2465 msgid "OK" -msgstr "Εντάξει" +msgstr "ΟΚ" #: Sketch.java:992 Editor.java:376 msgid "One file added to the sketch." @@ -1564,7 +1613,7 @@ msgstr "Παρακαλώ συμπεριλάβετε την βιβλιοθήκη #: ../../../../../app//src/processing/app/Editor.java:2799 msgid "Please select a port to obtain board info" -msgstr "" +msgstr "Παρακαλώ διαλέξτε μια θύρα για να ανακτηθούν οι πληροφορίες της πλακέτας" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 @@ -1699,10 +1748,10 @@ msgstr "Αναφορά" msgid "Remove" msgstr "Αφαίρεση" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "Αφαίρεση βιβλιοθήκης: {0}" +msgid "Removing library: {0}:{1}" +msgstr "Αφαίρεση βιβλιοθήκης: {0}:{1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1738,6 +1787,10 @@ msgstr "Αλλαγή με:" msgid "Retired" msgstr "Αποσύρθηκε" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Επανάληψη ανεβάσματος σε άλλη σειριακή θύρα;" + #: Preferences.java:113 msgid "Romanian" msgstr "Ρουμανικά" @@ -1848,7 +1901,7 @@ msgstr "Σχεδιογράφος σειριακής" msgid "" "Serial monitor is not supported on network ports such as {0} for the {1} in " "this release" -msgstr "" +msgstr "Η παρακολούθηση της σειριακής δεν υποστηρίζεται σε θύρες δικτύου όπως {0} για το {1} σε αυτήν την έκδοση." #: ../../../../../app/src/processing/app/Editor.java:2516 msgid "Serial monitor not available while plotter is open" @@ -1861,12 +1914,15 @@ msgid "" " Serial Port menu?" msgstr "Η σειριακή θύρα \"{0}\" δεν βρέθηκε. Επιλέξατε την σωστή από το μενού Εργαλεία > Σειριακή Θύρα; " -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Δεν επιλέχθηκε σειριακή θύρα." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Η σειριακή θύρα \"{0}\" δεν βρέθηκε.\nΕπανάληψη ανεβάσματος με άλλη σειριακή θύρα;" +msgid "Serial port {0} not found." +msgstr "Σειριακή θύρα {0} ,δεν βρέθηκε." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1889,6 +1945,10 @@ msgstr "Προβλήματα επιλογών" msgid "Show Sketch Folder" msgstr "Εμφάνιση φακέλου του σχεδίου" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Επίδειξη χρονοσήμανσης " + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Εμφάνιση διεξοδικής εξόδου κατά την:" @@ -1953,7 +2013,7 @@ msgstr "Η διαδρομή του Sketchbook δεν είναι καθορισμ #: ../../../../../arduino-core//src/cc/arduino/contributions/packages/ContributionsIndexer.java:96 #, java-format msgid "Skipping contributed index file {0}, parsing error occured:" -msgstr "" +msgstr "Παράκαμψη συμβολής αρχείου ευρετηρίου {0}, προέκυψε σφάλμα ανάλυσης : " #: ../../../../../app/src/processing/app/Preferences.java:185 msgid "Slovak" @@ -1979,7 +2039,7 @@ msgstr "Μερικά αρχεία είναι επισημασμένα \"μόνο #: ../../../../../arduino-core/src/processing/app/Sketch.java:246 #, java-format msgid "Sorry, the folder \"{0}\" already exists." -msgstr "" +msgstr "Συγνώμη, ο φάκελος \"{0}\" υπάρχει ήδη" #: Preferences.java:115 msgid "Spanish" @@ -2015,7 +2075,7 @@ msgstr "Ταμίλ" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:102 msgid "Telugu" -msgstr "" +msgstr "Τελούγκου" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:100 msgid "Thai" @@ -2050,7 +2110,7 @@ msgstr "Η κλάση Udp έχει μετονομαστεί σε EthernetUdp." #: ../../../../../arduino-core/src/processing/app/BaseNoGui.java:177 msgid "The current selected board needs the core '{0}' that is not installed." -msgstr "" +msgstr "Η επιλεγμένη πλακέτα χρειάζεται τον πυρήνα '{0}' που δεν είναι εγκατεστημένος." #: Editor.java:2147 #, java-format @@ -2060,6 +2120,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "Το αρχείο \"{0}\" χρειάζεται να είναι μέσα σε έναν\nφάκελο σχεδίου με ονομασία \"{1}\". Δημιουργία αυτού\nτου φακέλου, μετακίνηση του αρχείου και συνέχεια; " +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Η βιβλιοθήκη \"{0}\" δεν μπορεί να χρησιμοποιηθεί.\nΟι φάκελοι των βιβλιοθηκών πρέπει να ξεκινούν με γράμματα ή αριθμούς και συνεχίζουν με γράμματα, αριθμούς, παύλες, τελείες και κάτω παύλες. Το μέγιστο μήκος είναι 63 χαρακτήρες. " + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2070,7 +2138,7 @@ msgstr "Η βιβλιοθήκη \"{0}\" δεν μπορεί να χρησιμο #: ../../../../../app/src/processing/app/SketchController.java:170 msgid "The main file cannot use an extension" -msgstr "" +msgstr "Το βασικό αρχείο δεν μπορεί να χρησιμοποιήσει μια επέκταση" #: Sketch.java:356 msgid "The name cannot start with a period." @@ -2096,7 +2164,7 @@ msgstr "Το σχέδιο \"{0}\" δεν μπορεί να χρησιμοπει #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format msgid "The sketch already contains a file named \"{0}\"" -msgstr "" +msgstr "Το σχέδιο ήδη περιλαμβάνει ένα αρχείο με όνομα \"{0}\"" #: Sketch.java:1755 msgid "" @@ -2105,11 +2173,12 @@ msgid "" "but anything besides the code will be lost." msgstr "Ο φάκελος του σχεδίου έχει εξαφανιστεί.\nΘα γίνει προσπάθεια αποθήκευσης στην ίδια τοποθεσία,\nαλλά οτιδήποτε εκτός του κώδικα θα χαθεί." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "" +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Το όνομα του σχεδίου έπρεπε να τροποποιηθεί.\n Τα ονόματα των σχεδίων πρέπει να ξεκινούν με γράμματα ή αριθμούς και συνεχίζουν με γράμματα, αριθμούς, παύλες, τελείες και κάτω παύλες. Το μέγιστο μήκος είναι 63 χαρακτήρες. " #: Base.java:259 msgid "" @@ -2126,6 +2195,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "Ο καθορισμένος φάκελος του sketchbook περιέχει αντίγραφο του IDE.\nΠαρακαλώ επιλέξτε έναν διαφορετικό φάκελο για το sketchbook σας." +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Θέμα:" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2236,7 +2309,7 @@ msgstr "Ανεπίλυτος τύπος {0} στο βασικό πλαίσιο { #: ../../../../../app//src/processing/app/Editor.java:2818 msgid "Unknown board" -msgstr "" +msgstr "Άγνωστη πλακέτα" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format @@ -2292,7 +2365,7 @@ msgstr "Ανέβασμα μέσω προγραμματιστή" #: ../../../../../app//src/processing/app/Editor.java:2814 msgid "Upload any sketch to obtain it" -msgstr "" +msgstr "Ανέβασε ένα οποιοδήποτε σχέδιο για να το βρεις" #: Editor.java:2403 Editor.java:2439 msgid "Upload canceled." @@ -2487,7 +2560,7 @@ msgstr "Ξέχασες το Sketchbook σου" msgid "" "You have unsaved changes!\n" "You must save all your sketches to enable this option." -msgstr "" +msgstr "Έχετε μη αποθηκευμένες αλλαγές! Πρέπει να αποθηκεύσετε όλα τα σχέδια για να ενεργοποιήσετε αυτή την επιλογή. " #: ../../../processing/app/AbstractMonitor.java:92 msgid "" @@ -2618,6 +2691,12 @@ msgstr "αγνόηση μη έγκυρου μεγέθους γραμματοσε msgid "name is null" msgstr "το όνομα είναι κενό" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "Δεν βρέθηκαν αρχεία κεφαλίδας (.h) στο {0}" + #: Editor.java:932 msgid "serialMenu is null" msgstr "το σειριακόΜενού είναι κενό" @@ -2705,11 +2784,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: Μη έγκυρο όνομα πλακέτας, πρέπει να έχει την μορφή \"package:arch:board\" ή \"package:arch:board:options\"" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: Μη έγκυρη επιλογή \"{1}\" για την πλακέτα \"{2}\"" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2720,6 +2794,11 @@ msgstr "{0}: Μη έγκυρη επιλογή για την πλακέτα \"{1} msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: Μη έγκυρη επιλογή, πρέπει να είναι της μορφής \"όνομα=τιμή\"" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: Μη έγκυρη τιμή για την επιλογή \"{1}\"για την πλακέτα \"{2}\"" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" @@ -2738,4 +2817,4 @@ msgstr "{0}: Άγνωστο πακέτο" #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format msgid "{0}Install this package{1} to use your {2} board" -msgstr "" +msgstr "{0} Εγκατέστησε το πακέτο {1} για να χρησιμοποιήσεις την {2} πλακέτα σου" diff --git a/arduino-core/src/processing/app/i18n/Resources_el_GR.properties b/arduino-core/src/processing/app/i18n/Resources_el_GR.properties index a671dbc511b..82d098b8eda 100644 --- a/arduino-core/src/processing/app/i18n/Resources_el_GR.properties +++ b/arduino-core/src/processing/app/i18n/Resources_el_GR.properties @@ -17,13 +17,18 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Dimitris Zervas <01ttouch@gmail.com>, 2012 # Cristian Maglie , 2016 +# doki suse , 2019 +# doki suse , 2019 # firewalker , 2015-2016 -# Spyros Papanastasiou , 2015 +# Spyros Papanastasiou , 2015 # Vangelis Skarmoutsos , 2016 # \u0393\u03b9\u03ac\u03bd\u03bd\u03b7\u03c2 \u03a3\u03c6\u03b1\u03ba\u03b9\u03b1\u03bd\u03ac\u03ba\u03b7\u03c2 , 2013,2016 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Greek (Greece) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/el_GR/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: el_GR\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2019-04-24 18\:48+0000\nLast-Translator\: doki suse \nLanguage-Team\: Greek (Greece) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/el_GR/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: el_GR\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=(\u03b1\u03c0\u03b1\u03b9\u03c4\u03b5\u03af \u03b5\u03c0\u03b1\u03bd\u03b5\u03ba\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 Arduino) @@ -85,7 +90,7 @@ A\ subfolder\ of\ your\ sketchbook\ is\ not\ a\ valid\ library=\u0388\u03bd\u03b About\ Arduino=\u03a0\u03b5\u03c1\u03af \u03c4\u03bf\u03c5 Arduino #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 -!Acoli= +Acoli=\u0391\u03bd\u03c4\u03c3\u03cc\u03bb\u03b9 #: ../../../../../app/src/processing/app/Base.java:1177 Add\ .ZIP\ Library...=\u03a0\u03c1\u03bf\u03c3\u03b8\u03ae\u03ba\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2 ZIP... @@ -103,7 +108,7 @@ Additional\ Boards\ Manager\ URLs\:\ =\u0395\u03c0\u03b9\u03c0\u03bb\u03ad\u03bf Afrikaans=\u0391\u03c6\u03c1\u03b9\u03ba\u03ac\u03b1\u03bd\u03c2 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 -!Aggressively\ cache\ compiled\ core= +Aggressively\ cache\ compiled\ core=\u0395\u03c0\u03b9\u03b8\u03b5\u03c4\u03b9\u03ba\u03ae \u03b1\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03bc\u03b5\u03c4\u03b1\u03b3\u03bb\u03c9\u03c4\u03c4\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c0\u03c5\u03c1\u03ae\u03bd\u03b1 #: ../../../processing/app/Preferences.java:96 Albanian=\u0391\u03bb\u03b2\u03b1\u03bd\u03b9\u03ba\u03ac @@ -150,7 +155,7 @@ Archive\ sketch\ canceled.=\u0391\u03ba\u03c5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format -!Archiving\ built\ core\ (caching)\ in\:\ {0}= +Archiving\ built\ core\ (caching)\ in\:\ {0}=\u0391\u03c1\u03c7\u03b5\u03b9\u03bf\u03b8\u03ad\u03c4\u03b7\u03c3\u03b7 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03b7\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c0\u03c5\u03c1\u03ae\u03bd\u03b1 (caching) \u03c3\u03b5\: {0} #: tools/Archiver.java:75 Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.=\u0397 \u03b1\u03c1\u03c7\u03b5\u03b9\u03bf\u03b8\u03ad\u03c4\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03c3\u03c7\u03b5\u03b4\u03af\u03bf\u03c5 \u03b1\u03ba\u03c5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5 \u03b5\u03c0\u03b5\u03b9\u03b4\u03ae\n\u03c4\u03bf \u03c3\u03c7\u03ad\u03b4\u03b9\u03bf \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03bf\u03cd\u03c3\u03b5 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03c4\u03b5\u03af \u03c3\u03c9\u03c3\u03c4\u03ac. @@ -245,7 +250,7 @@ Belarusian=\u039b\u03b5\u03c5\u03ba\u03bf\u03c1\u03c9\u03c3\u03b9\u03ba\u03ac Board=\u03a0\u03bb\u03b1\u03ba\u03ad\u03c4\u03b1 #: ../../../../../app//src/processing/app/Editor.java:2824 -!Board\ Info= +Board\ Info=\u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c0\u03bb\u03b1\u03ba\u03ad\u03c4\u03b1\u03c2 #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 @@ -304,14 +309,14 @@ Burn\ Bootloader=\u0393\u03c1\u03ac\u03c8\u03b9\u03bc\u03bf Bootloader Burning\ bootloader\ to\ I/O\ Board\ (this\ may\ take\ a\ minute)...=\u0395\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae \u03c4\u03bf\u03c5 Bootloader \u03c3\u03c4\u03b7\u03bd \u03c0\u03bb\u03b1\u03ba\u03ad\u03c4\u03b1 \u0399/\u039f (\u03af\u03c3\u03c9\u03c2 \u03c7\u03c1\u03b5\u03b9\u03b1\u03c3\u03c4\u03b5\u03af \u03bb\u03af\u03b3\u03bf \u03c7\u03c1\u03cc\u03bd\u03bf)... #: ../../../../../arduino-core/src/cc/arduino/contributions/DownloadableContributionsDownloader.java:91 -!CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.= +CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.=CRC \u03b4\u03b5\u03bd \u03c4\u03b1\u03b9\u03c1\u03b9\u03ac\u03b6\u03b5\u03b9, \u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b5\u03af\u03bd\u03b1\u03b9 \u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03c1\u03b1\u03bc\u03bc\u03ad\u03bd\u03bf. \u039c\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03c1\u03bf\u03c3\u03c9\u03c1\u03b9\u03bd\u03cc \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1, \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b4\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac \u03b1\u03c1\u03b3\u03cc\u03c4\u03b5\u03c1\u03b1. #: ../../../processing/app/Base.java:379 #, java-format Can\ only\ pass\ one\ of\:\ {0}=\u039c\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c0\u03b5\u03c1\u03ac\u03c3\u03b5\u03b9 \u03bc\u03cc\u03bd\u03bf \u03ad\u03bd\u03b1 \u03b1\u03c0\u03cc\: {0} #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 -!Can't\ enable\ external\ editor= +Can't\ enable\ external\ editor=\u0394\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af \u03bf \u03b5\u03be\u03c9\u03c4\u03b5\u03c1\u03b9\u03ba\u03cc\u03c2 \u03b5\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03c4\u03ae\u03c2 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 @@ -346,7 +351,7 @@ Chinese\ (Taiwan)=\u039a\u03b9\u03bd\u03ad\u03b6\u03b9\u03ba\u03b1 (Taiwan) Chinese\ (Taiwan)\ (Big5)=\u039a\u03b9\u03bd\u03ad\u03b6\u03b9\u03ba\u03b1 (Taiwan) (Big5) #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 -!Clear\ output= +Clear\ output=\u0395\u03ba\u03ba\u03b1\u03b8\u03ac\u03c1\u03b9\u03c3\u03b7 \u03b5\u03be\u03cc\u03b4\u03bf\u03c5 #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs=\u039a\u03bb\u03b9\u03ba \u03b3\u03b9\u03b1 \u03bb\u03af\u03c3\u03c4\u03b1 URLs \u03c5\u03c0\u03bf\u03c3\u03c4\u03ae\u03c1\u03b9\u03be\u03b7\u03c2 \u03b1\u03bd\u03b5\u03c0\u03af\u03c3\u03b7\u03bc\u03c9\u03bd \u03c0\u03bb\u03b1\u03ba\u03b5\u03c4\u03ce\u03bd @@ -390,7 +395,7 @@ Could\ not\ copy\ to\ a\ proper\ location.=\u0394\u03b5\u03bd \u03bc\u03c0\u03cc #: ../../../../../arduino-core/src/processing/app/Sketch.java:342 #, java-format -!Could\ not\ create\ directory\ "{0}"= +Could\ not\ create\ directory\ "{0}"=\u0394\u03b5\u03bd \u03bc\u03c0\u03cc\u03c1\u03b5\u03c3\u03b5 \u03bd\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03b7\u03b8\u03b5\u03af \u03bf \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 "{0}" #: Editor.java:2179 Could\ not\ create\ the\ sketch\ folder.=\u0394\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03b7\u03b8\u03b5\u03af \u03bf \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 \u03c4\u03bf\u03c5 \u03c3\u03c7\u03b5\u03b4\u03af\u03bf\u03c5. @@ -446,6 +451,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=\u0394\u03b5\u03bd \u03bc\u03c0\u03bf\ #, java-format Could\ not\ replace\ {0}=\u0394\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b1\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03b1\u03b8\u03b5\u03af \u03c4\u03bf {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=\u0394\u03b5\u03bd \u03bc\u03c0\u03cc\u03c1\u03b5\u03c3\u03b5 \u03bd\u03b1 \u03b3\u03af\u03bd\u03b5\u03b9 \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae \u03c4\u03bf\u03c5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03c0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ae\u03c3\u03b5\u03c9\u03bd\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=\u0394\u03b5\u03bd \u03bc\u03c0\u03cc\u03c1\u03b5\u03c3\u03b5 \u03bd\u03b1 \u03b3\u03af\u03bd\u03b5\u03b9 \u03b1\u03c1\u03c7\u03b5\u03b9\u03bf\u03b8\u03ad\u03c4\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03c3\u03c7\u03b5\u03b4\u03af\u03bf\u03c5 @@ -477,7 +486,7 @@ Data\ Processing=\u0395\u03c0\u03b5\u03be\u03b5\u03c1\u03b3\u03b1\u03c3\u03af\u0 Data\ Storage=\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7 \u03b4\u03b5\u03b4\u03bf\u03bc\u03ad\u03bd\u03c9\u03bd #: ../../../../../app/src/processing/app/Editor.java:1386 -!Decrease\ Font\ Size= +Decrease\ Font\ Size=\u039c\u03b5\u03af\u03c9\u03c3\u03b7 \u03bc\u03b5\u03b3\u03ad\u03b8\u03bf\u03c5\u03c2 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5 #: Editor.java:1224 Editor.java:2765 Decrease\ Indent=\u039c\u03b5\u03af\u03c9\u03c3\u03b7 \u03b5\u03c3\u03bf\u03c7\u03ae\u03c2 @@ -485,6 +494,9 @@ Decrease\ Indent=\u039c\u03b5\u03af\u03c9\u03c3\u03b7 \u03b5\u03c3\u03bf\u03c7\u #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03bf \u03b8\u03ad\u03bc\u03b1 + #: EditorHeader.java:314 Sketch.java:591 Delete=\u0394\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae @@ -616,6 +628,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=\u039b\u03ac\u03b8\u03bf\u03c2 \u03b #, java-format Error\ inside\ Serial.{0}()=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03bc\u03ad\u03c3\u03b1 \u03c3\u03c4\u03bf Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03b1 \u03c4\u03b7\u03bd \u03c6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b8\u03ad\u03bc\u03b1\u03c4\u03bf\u03c2 {0}\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -630,6 +646,18 @@ Error\ opening\ serial\ port\ ''{0}''.=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03 #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03b1\u03bd\u03bf\u03af\u03b3\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c4\u03b7\u03c2 \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae\u03c2 \u03b8\u03cd\u03c1\u03b1\u03c2 "{0}". \u03a3\u03c5\u03bc\u03b2\u03bf\u03c5\u03bb\u03b5\u03c5\u03c4\u03b5\u03af\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c4\u03b5\u03ba\u03bc\u03b7\u03c1\u03af\u03c9\u03c3\u03b7 \u03c3\u03c4\u03bf http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03b1\u03bd\u03ac\u03bb\u03c5\u03c3\u03b7\u03c2 \u03b5\u03c5\u03c1\u03b5\u03c4\u03b7\u03c1\u03af\u03bf\u03c5 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03b7\u03ba\u03ce\u03bd\: {0}\n\u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03b1\u03bd\u03bf\u03af\u03be\u03b5\u03c4\u03b5 \u03c4\u03bf\u03bd \u0394\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03bd\u03b7\u03bc\u03b5\u03c1\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03b5\u03c5\u03c1\u03b5\u03c4\u03ae\u03c1\u03b9\u03bf \u03c4\u03c9\u03bd \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03b7\u03ba\u03ce\u03bd. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03b1\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03b7\u03c2 \u03b5\u03c5\u03c1\u03b5\u03c4\u03b7\u03c1\u03af\u03bf\u03c5 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03b7\u03ba\u03ce\u03bd\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03b1\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03b7\u03c2 \u03c0\u03b1\u03ba\u03ad\u03c4\u03bf\u03c5 indexes folder\: {0}\n(\u03af\u03c3\u03c9\u03c2 \u03bd\u03b1 \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03ac\u03b4\u03b5\u03b9\u03b1\u03c2;) + #: Preferences.java:277 Error\ reading\ preferences=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03b1\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03b7\u03c2 \u03c0\u03c1\u03bf\u03c4\u03b9\u03bc\u03ae\u03c3\u03b5\u03c9\u03bd @@ -655,6 +683,9 @@ Error\ while\ burning\ bootloader.=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae bootloader\: \u0391\u03c0\u03bf\u03c5\u03c3\u03af\u03b1 '{0}' \u03c0\u03b1\u03c1\u03b1\u03bc\u03ad\u03c4\u03c1\u03bf\u03c5 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2 +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03b1 \u03c4\u03b7\u03bd \u03b5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ae \u03c4\u03bf\u03c5 bootloader\: \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae \u03b8\u03cd\u03c1\u03b1. + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd \u03bc\u03b5\u03c4\u03b1\u03b3\u03bb\u03ce\u03c4\u03c4\u03b9\u03c3\u03b7\: \u0391\u03c0\u03bf\u03c5\u03c3\u03af\u03b1 '{0}' \u03c0\u03b1\u03c1\u03b1\u03bc\u03ad\u03c4\u03c1\u03bf\u03c5 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2 @@ -683,25 +714,22 @@ Error\ while\ verifying/uploading=\u03a3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03ba\u0 #: Preferences.java:93 Estonian=\u0395\u03c3\u03b8\u03bf\u03bd\u03b9\u03ba\u03ac -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=\u0395\u03c3\u03b8\u03bf\u03bd\u03b9\u03ba\u03ac (\u0395\u03c3\u03b8\u03bf\u03bd\u03af\u03b1) - #: Editor.java:516 Examples=\u03a0\u03b1\u03c1\u03b1\u03b4\u03b5\u03af\u03b3\u03bc\u03b1\u03c4\u03b1 #: ../../../../../app/src/processing/app/Base.java:1185 -!Examples\ for\ any\ board= +Examples\ for\ any\ board=\u03a0\u03b1\u03c1\u03b1\u03b4\u03b5\u03af\u03b3\u03bc\u03b1\u03c4\u03b1 \u03b3\u03b9\u03b1 \u03bf\u03c0\u03bf\u03b9\u03b1\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03c0\u03bb\u03b1\u03ba\u03ad\u03c4\u03b1 #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 #, java-format -!Examples\ for\ {0}= +Examples\ for\ {0}=\u03a0\u03b1\u03c1\u03ac\u03b4\u03b5\u03b9\u03b3\u03bc\u03b1 \u03b3\u03b9\u03b1 {0} #: ../../../../../app/src/processing/app/Base.java:1244 Examples\ from\ Custom\ Libraries=\u03a0\u03b1\u03c1\u03b1\u03b4\u03b5\u03af\u03b3\u03bc\u03b1\u03c4\u03b1 \u03b1\u03c0\u03cc \u03c0\u03c1\u03bf\u03c3\u03b1\u03c1\u03bc\u03bf\u03c3\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b5\u03c2 #: ../../../../../app/src/processing/app/Base.java:1329 -!Examples\ from\ Other\ Libraries= +Examples\ from\ Other\ Libraries=\u03a0\u03b1\u03c1\u03b1\u03b4\u03b5\u03af\u03b3\u03bc\u03b1\u03c4\u03b1 \u03b1\u03c0\u03cc \u03ac\u03bb\u03bb\u03b5\u03c2 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b5\u03c2 #: ../../../../../app/src/processing/app/Editor.java:753 Export\ canceled,\ changes\ must\ first\ be\ saved.=\u0397 \u03b5\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u03b1\u03ba\u03c5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5, \u03bf\u03b9 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03c0\u03c1\u03ce\u03c4\u03b1 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03c4\u03bf\u03cd\u03bd. @@ -715,10 +743,10 @@ Failed\ to\ open\ sketch\:\ "{0}"=\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03 #: ../../../../../arduino-core/src/processing/app/SketchFile.java:183 #, java-format -!Failed\ to\ rename\ "{0}"\ to\ "{1}"= +Failed\ to\ rename\ "{0}"\ to\ "{1}"=\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03c4\u03b7\u03bd \u03bc\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03af\u03b1 "{0}" \u03c3\u03b5 "{1}" #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 -!Failed\ to\ rename\ sketch\ folder= +Failed\ to\ rename\ sketch\ folder=\u0391\u03c0\u03bf\u03c4\u03c5\u03c7\u03af\u03b1 \u03c3\u03c4\u03b7\u03bd \u03bc\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03af\u03b1 \u03c4\u03bf\u03c5 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5 \u03c3\u03c7\u03b5\u03b4\u03af\u03bf\u03c5 #: Editor.java:491 File=\u0391\u03c1\u03c7\u03b5\u03af\u03bf @@ -787,7 +815,7 @@ Georgian=\u0393\u03b5\u03c9\u03c1\u03b3\u03b9\u03b1\u03bd\u03ac German=\u0393\u03b5\u03c1\u03bc\u03b1\u03bd\u03b9\u03ba\u03ac #: ../../../../../app//src/processing/app/Editor.java:817 -!Get\ Board\ Info= +Get\ Board\ Info=\u0391\u03bd\u03ac\u03ba\u03c4\u03b7\u03c3\u03b7 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03b9\u03ce\u03bd \u03c0\u03bb\u03b1\u03ba\u03ad\u03c4\u03b1\u03c2 #: Editor.java:1054 Getting\ Started=\u039e\u03b5\u03ba\u03b9\u03bd\u03ce\u03bd\u03c4\u03b1\u03c2 @@ -831,13 +859,13 @@ How\ very\ Borges\ of\ you=\u03a0\u03bf\u03bb\u03cd "Borges" \u03b1\u03c0\u03cc Hungarian=\u039f\u03c5\u03b3\u03b3\u03b1\u03c1\u03ad\u03b6\u03b9\u03ba\u03b1 #: ../../../../../app/src/processing/app/Base.java:1319 -!INCOMPATIBLE= +INCOMPATIBLE=\u0391\u03c3\u03cd\u03bc\u03b2\u03b1\u03c4\u03bf #: FindReplace.java:96 Ignore\ Case=\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b5 \u03c4\u03b7\u03bd \u03ba\u03b5\u03c6\u03b1\u03bb\u03b1\u03b9\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7 -#: Base.java:1058 -Ignoring\ bad\ library\ name=\u03a4\u03bf \u03bb\u03ac\u03b8\u03bf\u03c2 \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c4\u03b7\u03c2 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2 \u03b1\u03b3\u03bd\u03bf\u03ae\u03b8\u03b7\u03ba\u03b5 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=\u0391\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2 \u03bc\u03b5 \u03bb\u03ac\u03b8\u03bf\u03c2 \u03cc\u03bd\u03bf\u03bc\u03b1 #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=\u03a0\u03b1\u03c1\u03ac\u03b2\u03bb\u03b5\u03c8\u03b7 \u03c3\u03c7\u03b5\u03b4\u03af\u03bf\u03c5 \u03bc\u03b5 \u03bb\u03b1\u03bd\u03b8\u03b1\u03c3\u03bc\u03ad\u03bd\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 @@ -853,7 +881,7 @@ Include\ Library=\u03a3\u03c5\u03bc\u03c0\u03b5\u03c1\u03af\u03bb\u03b7\u03c8\u0 Incorrect\ IDE\ installation\ folder=\u0395\u03c3\u03c6\u03b1\u03bb\u03bc\u03ad\u03bd\u03bf\u03c2 \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 \u03b5\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7\u03c2 IDE #: ../../../../../app/src/processing/app/Editor.java:1378 -!Increase\ Font\ Size= +Increase\ Font\ Size=\u0391\u03cd\u03be\u03b7\u03c3\u03b7 \u03bc\u03b5\u03b3\u03ad\u03b8\u03bf\u03c5\u03c2 \u03c6\u03cc\u03bd\u03c4\u03bf\u03c5 #: Editor.java:1216 Editor.java:2757 Increase\ Indent=\u0391\u03cd\u03be\u03b7\u03c3\u03b7 \u03b5\u03c3\u03bf\u03c7\u03ae\u03c2 @@ -881,9 +909,9 @@ Installed=\u0395\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=\u0395\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03c0\u03bb\u03b1\u03ba\u03b5\u03c4\u03ce\u03bd... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=\u0395\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2\:{0} +Installing\ library\:\ {0}\:{1}=\u0395\u03b3\u03ba\u03b1\u03c4\u03ac\u03c3\u03c4\u03b1\u03c3\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2\: {0}\:{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -904,6 +932,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=\u0392\u03c1\u03ad\u03b8\u03b7\u03ba\u03 #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=\u039c\u03b7 \u03ad\u03b3\u03b3\u03c5\u03c1\u03b7 \u03c0\u03b1\u03c1\u03ac\u03b8\u03b5\u03c3\u03b7\: \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b1\u03c2 [{0}] \u03ba\u03bb\u03b5\u03b9\u03c3\u03af\u03bc\u03b1\u03c4\u03bf\u03c2. +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=\u039b\u03ac\u03b8\u03bf\u03c2 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7 '{0}' \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03c3\u03c4\u03bf\: {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=\u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7 {0} + #: Preferences.java:102 Italian=\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac @@ -911,7 +948,7 @@ Italian=\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac Japanese=\u0393\u03b9\u03b1\u03c0\u03c9\u03bd\u03ad\u03b6\u03b9\u03ba\u03b1 #: ../../../../../app/src/cc/arduino/i18n/Languages.java:81 -!Kazakh= +Kazakh=\u039a\u03b1\u03b6\u03b1\u03ba\u03b9\u03ba\u03ac #: Preferences.java:104 Korean=\u039a\u03bf\u03c1\u03b5\u03ac\u03c4\u03b9\u03ba\u03b1 @@ -928,15 +965,15 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=\u0397 \u0 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=\u0397 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b5\u03af \u03ba\u03b1\u03b9 \u03c4\u03bf\u03bd \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf 'src' \u03ba\u03b1\u03b9 \u03c4\u03bf\u03bd 'utility'. \u0395\u03bb\u03ad\u03b3\u03be\u03c4\u03b5 \u03c4\u03bf {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=\u0397 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ae\u03b4\u03b7 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03b7\: {0} \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7 {1} +Library\ is\ already\ installed\:\ {0}\:{1}=\u0397 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ae\u03b4\u03b7 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03b7\: {0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=\u0391\u03c1\u03b9\u03b8\u03bc\u03cc\u03c2 \u03c3\u03b5\u03b9\u03c1\u03ac\u03c2\: #: Preferences.java:106 -Lithuaninan=\u039b\u03b9\u03b8\u03bf\u03c5\u03b1\u03bd\u03af\u03b1\u03c2 +Lithuaninan=\u039b\u03b9\u03b8\u03bf\u03c5\u03b1\u03bd\u03b9\u03ba\u03ac #: ../../../../../app/src/processing/app/Base.java:132 Loading\ configuration...=\u03a6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03b4\u03b9\u03b1\u03bc\u03cc\u03c1\u03c6\u03c9\u03c3\u03b7\u03c2... @@ -990,7 +1027,7 @@ Must\ specify\ exactly\ one\ sketch\ file=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \ Name\ for\ new\ file\:=\u038c\u03bd\u03bf\u03bc\u03b1 \u03b3\u03b9\u03b1 \u03bd\u03ad\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\: #: ../../../../../app//src/processing/app/Editor.java:2809 -!Native\ serial\ port,\ can't\ obtain\ info= +Native\ serial\ port,\ can't\ obtain\ info=\u0397 \u03c6\u03c5\u03c3\u03b9\u03ba\u03ae \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae \u03b8\u03cd\u03c1\u03b1, \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b1\u03bd\u03b1\u03ba\u03c4\u03ae\u03c3\u03b5\u03b9 \u03c4\u03b9\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 #: ../../../processing/app/Preferences.java:149 Nepali=Nepali @@ -999,7 +1036,7 @@ Nepali=Nepali Network=\u0394\u03af\u03ba\u03c4\u03c5\u03bf #: ../../../../../app//src/processing/app/Editor.java:2804 -!Network\ port,\ can't\ obtain\ info= +Network\ port,\ can't\ obtain\ info=\u0397 \u03b8\u03cd\u03c1\u03b1 \u03c4\u03bf\u03c5 \u03b4\u03b9\u03ba\u03c4\u03cd\u03bf\u03c5, \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b1\u03bd\u03b1\u03ba\u03c4\u03ae\u03c3\u03b5\u03b9 \u03c4\u03b9\u03c2 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 #: ../../../../../app/src/processing/app/Editor.java:65 Network\ ports=\u0398\u03cd\u03c1\u03b5\u03c2 \u03b4\u03b9\u03ba\u03c4\u03cd\u03bf\u03c5 @@ -1081,7 +1118,7 @@ Not\ enough\ memory;\ see\ http\://www.arduino.cc/en/Guide/Troubleshooting\#size #: Preferences.java:80 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2145 Editor.java:2465 -OK=\u0395\u03bd\u03c4\u03ac\u03be\u03b5\u03b9 +OK=\u039f\u039a #: Sketch.java:992 Editor.java:376 One\ file\ added\ to\ the\ sketch.=\u0388\u03bd\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03c0\u03c1\u03bf\u03c3\u03c4\u03ad\u03b8\u03b7\u03ba\u03b5 \u03c3\u03c4\u03bf \u03c3\u03c7\u03ad\u03b4\u03b9\u03bf. @@ -1142,7 +1179,7 @@ Please\ import\ the\ SPI\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.= Please\ import\ the\ Wire\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c3\u03c5\u03bc\u03c0\u03b5\u03c1\u03b9\u03bb\u03ac\u03b2\u03b5\u03c4\u03b5 \u03c4\u03b7\u03bd \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 Wire \u03b1\u03c0\u03cc \u03c4\u03bf \u03bc\u03b5\u03bd\u03bf\u03cd \u03a3\u03c7\u03ad\u03b4\u03b9\u03bf > \u03a3\u03c5\u03bc\u03c0\u03b5\u03c1\u03af\u03bb\u03b7\u03c8\u03b7 \u0392\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2. #: ../../../../../app//src/processing/app/Editor.java:2799 -!Please\ select\ a\ port\ to\ obtain\ board\ info= +Please\ select\ a\ port\ to\ obtain\ board\ info=\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b4\u03b9\u03b1\u03bb\u03ad\u03be\u03c4\u03b5 \u03bc\u03b9\u03b1 \u03b8\u03cd\u03c1\u03b1 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b1\u03bd\u03b1\u03ba\u03c4\u03b7\u03b8\u03bf\u03cd\u03bd \u03bf\u03b9 \u03c0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 \u03c4\u03b7\u03c2 \u03c0\u03bb\u03b1\u03ba\u03ad\u03c4\u03b1\u03c2 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 @@ -1243,9 +1280,9 @@ Reference=\u0391\u03bd\u03b1\u03c6\u03bf\u03c1\u03ac #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2\: {0} +Removing\ library\:\ {0}\:{1}=\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2\: {0}\:{1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1273,6 +1310,9 @@ Replace\ with\:=\u0391\u03bb\u03bb\u03b1\u03b3\u03ae \u03bc\u03b5\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=\u0391\u03c0\u03bf\u03c3\u03cd\u03c1\u03b8\u03b7\u03ba\u03b5 +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7 \u03b1\u03bd\u03b5\u03b2\u03ac\u03c3\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c3\u03b5 \u03ac\u03bb\u03bb\u03b7 \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae \u03b8\u03cd\u03c1\u03b1; + #: Preferences.java:113 Romanian=\u03a1\u03bf\u03c5\u03bc\u03b1\u03bd\u03b9\u03ba\u03ac @@ -1355,7 +1395,7 @@ Serial\ Plotter=\u03a3\u03c7\u03b5\u03b4\u03b9\u03bf\u03b3\u03c1\u03ac\u03c6\u03 #: ../../../../../app/src/processing/app/Editor.java:2325 #, java-format -!Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release= +Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release=\u0397 \u03c0\u03b1\u03c1\u03b1\u03ba\u03bf\u03bb\u03bf\u03cd\u03b8\u03b7\u03c3\u03b7 \u03c4\u03b7\u03c2 \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae\u03c2 \u03b4\u03b5\u03bd \u03c5\u03c0\u03bf\u03c3\u03c4\u03b7\u03c1\u03af\u03b6\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03b8\u03cd\u03c1\u03b5\u03c2 \u03b4\u03b9\u03ba\u03c4\u03cd\u03bf\u03c5 \u03cc\u03c0\u03c9\u03c2 {0} \u03b3\u03b9\u03b1 \u03c4\u03bf {1} \u03c3\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7\u03bd \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7. #: ../../../../../app/src/processing/app/Editor.java:2516 Serial\ monitor\ not\ available\ while\ plotter\ is\ open=\u0397 \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae \u03bf\u03b8\u03cc\u03bd\u03b7 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b7 \u03cc\u03c4\u03b1\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03bd\u03bf\u03b9\u03ba\u03c4\u03cc\u03c2 \u03bf \u03c3\u03c7\u03b5\u03b4\u03b9\u03bf\u03b3\u03c1\u03ac\u03c6\u03bf\u03c2 @@ -1364,9 +1404,13 @@ Serial\ monitor\ not\ available\ while\ plotter\ is\ open=\u0397 \u03c3\u03b5\u0 #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=\u0397 \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae \u03b8\u03cd\u03c1\u03b1 "{0}" \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5. \u0395\u03c0\u03b9\u03bb\u03ad\u03be\u03b1\u03c4\u03b5 \u03c4\u03b7\u03bd \u03c3\u03c9\u03c3\u03c4\u03ae \u03b1\u03c0\u03cc \u03c4\u03bf \u03bc\u03b5\u03bd\u03bf\u03cd \u0395\u03c1\u03b3\u03b1\u03bb\u03b5\u03af\u03b1 > \u03a3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae \u0398\u03cd\u03c1\u03b1; -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=\u0394\u03b5\u03bd \u03b5\u03c0\u03b9\u03bb\u03ad\u03c7\u03b8\u03b7\u03ba\u03b5 \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae \u03b8\u03cd\u03c1\u03b1. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=\u0397 \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae \u03b8\u03cd\u03c1\u03b1 "{0}" \u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5.\n\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7 \u03b1\u03bd\u03b5\u03b2\u03ac\u03c3\u03bc\u03b1\u03c4\u03bf\u03c2 \u03bc\u03b5 \u03ac\u03bb\u03bb\u03b7 \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae \u03b8\u03cd\u03c1\u03b1; +Serial\ port\ {0}\ not\ found.=\u03a3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ae \u03b8\u03cd\u03c1\u03b1 {0} ,\u03b4\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b5. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=\u03a3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03ad\u03c2 \u03b8\u03cd\u03c1\u03b5\u03c2 @@ -1384,6 +1428,9 @@ Settings\ issues=\u03a0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03b1 \u #: Editor.java:641 Show\ Sketch\ Folder=\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5 \u03c4\u03bf\u03c5 \u03c3\u03c7\u03b5\u03b4\u03af\u03bf\u03c5 +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=\u0395\u03c0\u03af\u03b4\u03b5\u03b9\u03be\u03b7 \u03c7\u03c1\u03bf\u03bd\u03bf\u03c3\u03ae\u03bc\u03b1\u03bd\u03c3\u03b7\u03c2 + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03b4\u03b9\u03b5\u03be\u03bf\u03b4\u03b9\u03ba\u03ae\u03c2 \u03b5\u03be\u03cc\u03b4\u03bf\u03c5 \u03ba\u03b1\u03c4\u03ac \u03c4\u03b7\u03bd\: @@ -1429,7 +1476,7 @@ Sketchbook\ path\ not\ defined=\u0397 \u03b4\u03b9\u03b1\u03b4\u03c1\u03bf\u03bc #: ../../../../../arduino-core//src/cc/arduino/contributions/packages/ContributionsIndexer.java:96 #, java-format -!Skipping\ contributed\ index\ file\ {0},\ parsing\ error\ occured\:= +Skipping\ contributed\ index\ file\ {0},\ parsing\ error\ occured\:=\u03a0\u03b1\u03c1\u03ac\u03ba\u03b1\u03bc\u03c8\u03b7 \u03c3\u03c5\u03bc\u03b2\u03bf\u03bb\u03ae\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03b5\u03c5\u03c1\u03b5\u03c4\u03b7\u03c1\u03af\u03bf\u03c5 {0}, \u03c0\u03c1\u03bf\u03ad\u03ba\u03c5\u03c8\u03b5 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1 \u03b1\u03bd\u03ac\u03bb\u03c5\u03c3\u03b7\u03c2 \: #: ../../../../../app/src/processing/app/Preferences.java:185 Slovak=\u03a3\u03bb\u03bf\u03b2\u03b1\u03ba\u03b9\u03ba\u03ac @@ -1445,7 +1492,7 @@ Some\ files\ are\ marked\ "read-only",\ so\ you'll\nneed\ to\ re-save\ this\ ske #: ../../../../../arduino-core/src/processing/app/Sketch.java:246 #, java-format -!Sorry,\ the\ folder\ "{0}"\ already\ exists.= +Sorry,\ the\ folder\ "{0}"\ already\ exists.=\u03a3\u03c5\u03b3\u03bd\u03ce\u03bc\u03b7, \u03bf \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 "{0}" \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03ae\u03b4\u03b7 #: Preferences.java:115 Spanish=\u0399\u03c3\u03c0\u03b1\u03bd\u03b9\u03ba\u03ac @@ -1472,7 +1519,7 @@ Talossan=Talossan Tamil=\u03a4\u03b1\u03bc\u03af\u03bb #: ../../../../../app/src/cc/arduino/i18n/Languages.java:102 -!Telugu= +Telugu=\u03a4\u03b5\u03bb\u03bf\u03cd\u03b3\u03ba\u03bf\u03c5 #: ../../../../../app/src/cc/arduino/i18n/Languages.java:100 Thai=\u03a4\u03b1\u03cb\u03bb\u03b1\u03bd\u03b4\u03b9\u03ba\u03ac @@ -1497,18 +1544,22 @@ The\ Server\ class\ has\ been\ renamed\ EthernetServer.=\u0397 \u03ba\u03bb\u03a The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=\u0397 \u03ba\u03bb\u03ac\u03c3\u03b7 Udp \u03ad\u03c7\u03b5\u03b9 \u03bc\u03b5\u03c4\u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03c4\u03b5\u03af \u03c3\u03b5 EthernetUdp. #: ../../../../../arduino-core/src/processing/app/BaseNoGui.java:177 -!The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed.= +The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed.=\u0397 \u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03c0\u03bb\u03b1\u03ba\u03ad\u03c4\u03b1 \u03c7\u03c1\u03b5\u03b9\u03ac\u03b6\u03b5\u03c4\u03b1\u03b9 \u03c4\u03bf\u03bd \u03c0\u03c5\u03c1\u03ae\u03bd\u03b1 '{0}' \u03c0\u03bf\u03c5 \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b5\u03b3\u03ba\u03b1\u03c4\u03b5\u03c3\u03c4\u03b7\u03bc\u03ad\u03bd\u03bf\u03c2. #: Editor.java:2147 #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=\u03a4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf "{0}" \u03c7\u03c1\u03b5\u03b9\u03ac\u03b6\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03bc\u03ad\u03c3\u03b1 \u03c3\u03b5 \u03ad\u03bd\u03b1\u03bd\n\u03c6\u03ac\u03ba\u03b5\u03bb\u03bf \u03c3\u03c7\u03b5\u03b4\u03af\u03bf\u03c5 \u03bc\u03b5 \u03bf\u03bd\u03bf\u03bc\u03b1\u03c3\u03af\u03b1 "{1}". \u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1 \u03b1\u03c5\u03c4\u03bf\u03cd\n\u03c4\u03bf\u03c5 \u03c6\u03b1\u03ba\u03ad\u03bb\u03bf\u03c5, \u03bc\u03b5\u03c4\u03b1\u03ba\u03af\u03bd\u03b7\u03c3\u03b7 \u03c4\u03bf\u03c5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03ba\u03b1\u03b9 \u03c3\u03c5\u03bd\u03ad\u03c7\u03b5\u03b9\u03b1; +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=\u0397 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 "{0}" \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af.\n\u039f\u03b9 \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03b9 \u03c4\u03c9\u03bd \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03b7\u03ba\u03ce\u03bd \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03bf\u03cd\u03bd \u03bc\u03b5 \u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03b1 \u03ae \u03b1\u03c1\u03b9\u03b8\u03bc\u03bf\u03cd\u03c2 \u03ba\u03b1\u03b9 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03b6\u03bf\u03c5\u03bd \u03bc\u03b5 \u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03b1, \u03b1\u03c1\u03b9\u03b8\u03bc\u03bf\u03cd\u03c2, \u03c0\u03b1\u03cd\u03bb\u03b5\u03c2, \u03c4\u03b5\u03bb\u03b5\u03af\u03b5\u03c2 \u03ba\u03b1\u03b9 \u03ba\u03ac\u03c4\u03c9 \u03c0\u03b1\u03cd\u03bb\u03b5\u03c2. \u03a4\u03bf \u03bc\u03ad\u03b3\u03b9\u03c3\u03c4\u03bf \u03bc\u03ae\u03ba\u03bf\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 63 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b5\u03c2.\u00a0 + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=\u0397 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 "{0}" \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af.\n\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c4\u03b7\u03c2 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03b5\u03b9 \u03bc\u03cc\u03bd\u03bf \u03b2\u03b1\u03c3\u03b9\u03ba\u03bf\u03cd\u03c2 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b5\u03c2 \u03ba\u03b1\u03b9 \u03b1\u03c1\u03b9\u03b8\u03bc\u03bf\u03c5\u03c2.\n(\u03bc\u03cc\u03bd\u03bf ASCII \u03c7\u03c9\u03c1\u03af\u03c2 \u03ba\u03b5\u03bd\u03ac, \u03ba\u03b1\u03b9 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03b1\u03c1\u03c7\u03af\u03b6\u03b5\u03b9 \u03bc\u03b5 \u03b1\u03c1\u03b9\u03b8\u03bc\u03cc) #: ../../../../../app/src/processing/app/SketchController.java:170 -!The\ main\ file\ cannot\ use\ an\ extension= +The\ main\ file\ cannot\ use\ an\ extension=\u03a4\u03bf \u03b2\u03b1\u03c3\u03b9\u03ba\u03cc \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9 \u03bc\u03b9\u03b1 \u03b5\u03c0\u03ad\u03ba\u03c4\u03b1\u03c3\u03b7 #: Sketch.java:356 The\ name\ cannot\ start\ with\ a\ period.=\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03b4\u03b5\u03bd \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03ac \u03bc\u03b5 \u03c4\u03b5\u03bb\u03b5\u03af\u03b1. @@ -1522,13 +1573,13 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format -!The\ sketch\ already\ contains\ a\ file\ named\ "{0}"= +The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=\u03a4\u03bf \u03c3\u03c7\u03ad\u03b4\u03b9\u03bf \u03ae\u03b4\u03b7 \u03c0\u03b5\u03c1\u03b9\u03bb\u03b1\u03bc\u03b2\u03ac\u03bd\u03b5\u03b9 \u03ad\u03bd\u03b1 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03bc\u03b5 \u03cc\u03bd\u03bf\u03bc\u03b1 "{0}" #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=\u039f \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 \u03c4\u03bf\u03c5 \u03c3\u03c7\u03b5\u03b4\u03af\u03bf\u03c5 \u03ad\u03c7\u03b5\u03b9 \u03b5\u03be\u03b1\u03c6\u03b1\u03bd\u03b9\u03c3\u03c4\u03b5\u03af.\n\u0398\u03b1 \u03b3\u03af\u03bd\u03b5\u03b9 \u03c0\u03c1\u03bf\u03c3\u03c0\u03ac\u03b8\u03b5\u03b9\u03b1 \u03b1\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7\u03c2 \u03c3\u03c4\u03b7\u03bd \u03af\u03b4\u03b9\u03b1 \u03c4\u03bf\u03c0\u03bf\u03b8\u03b5\u03c3\u03af\u03b1,\n\u03b1\u03bb\u03bb\u03ac \u03bf\u03c4\u03b9\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03b5\u03ba\u03c4\u03cc\u03c2 \u03c4\u03bf\u03c5 \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1 \u03b8\u03b1 \u03c7\u03b1\u03b8\u03b5\u03af. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=\u03a4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c4\u03bf\u03c5 \u03c3\u03c7\u03b5\u03b4\u03af\u03bf\u03c5 \u03ad\u03c0\u03c1\u03b5\u03c0\u03b5 \u03bd\u03b1 \u03c4\u03c1\u03bf\u03c0\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af.\n \u03a4\u03b1 \u03bf\u03bd\u03cc\u03bc\u03b1\u03c4\u03b1 \u03c4\u03c9\u03bd \u03c3\u03c7\u03b5\u03b4\u03af\u03c9\u03bd \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03be\u03b5\u03ba\u03b9\u03bd\u03bf\u03cd\u03bd \u03bc\u03b5 \u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03b1 \u03ae \u03b1\u03c1\u03b9\u03b8\u03bc\u03bf\u03cd\u03c2 \u03ba\u03b1\u03b9 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03b6\u03bf\u03c5\u03bd \u03bc\u03b5 \u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03b1, \u03b1\u03c1\u03b9\u03b8\u03bc\u03bf\u03cd\u03c2, \u03c0\u03b1\u03cd\u03bb\u03b5\u03c2, \u03c4\u03b5\u03bb\u03b5\u03af\u03b5\u03c2 \u03ba\u03b1\u03b9 \u03ba\u03ac\u03c4\u03c9 \u03c0\u03b1\u03cd\u03bb\u03b5\u03c2. \u03a4\u03bf \u03bc\u03ad\u03b3\u03b9\u03c3\u03c4\u03bf \u03bc\u03ae\u03ba\u03bf\u03c2 \u03b5\u03af\u03bd\u03b1\u03b9 63 \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b5\u03c2. #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=\u039f \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 Sketchbook \u03b4\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03c0\u03bb\u03ad\u03bf\u03bd.\n\u03a4\u03bf Arduino \u03b8\u03b1 \u03b5\u03c0\u03b1\u03bd\u03ad\u03bb\u03b8\u03b5\u03b9 \u03c3\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b7 \u03b8\u03ad\u03c3\u03b7 \u03c4\u03bf\u03c5 Sketchbook, \n\u03ba\u03b1\u03b9 \u03b8\u03b1 \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03ae\u03c3\u03b5\u03b9 \u03bd\u03ad\u03bf \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf Sketchbook \u03b1\u03bd \u03b1\u03c0\u03b1\u03b9\u03c4\u03b5\u03af\u03c4\u03b1\u03b9.\n\u03a4\u03cc\u03c4\u03b5 \u03c4\u03bf Arduino \u03b8\u03b1 \u03c3\u03c4\u03b1\u03bc\u03b1\u03c4\u03ae\u03c3\u03b5\u03b9 \u03bd\u03b1 \u03b1\u03bd\u03b1\u03c6\u03ad\u03c1\u03b5\u03c4\u03b1\u03b9 \u03c3\u03c4\u03bf\u03bd \u03b5\u03b1\u03c5\u03c4\u03cc \u03c4\u03bf\u03c5 \u03c3\u03b5 \u03c4\u03c1\u03af\u03c4\u03bf \u03c0\u03c1\u03cc\u03c3\u03c9\u03c0\u03bf. @@ -1536,6 +1587,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=\u039f \u03ba\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2 \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf\u03c2 \u03c4\u03bf\u03c5 sketchbook \u03c0\u03b5\u03c1\u03b9\u03ad\u03c7\u03b5\u03b9 \u03b1\u03bd\u03c4\u03af\u03b3\u03c1\u03b1\u03c6\u03bf \u03c4\u03bf\u03c5 IDE.\n\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1\u03bd \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03c6\u03ac\u03ba\u03b5\u03bb\u03bf \u03b3\u03b9\u03b1 \u03c4\u03bf sketchbook \u03c3\u03b1\u03c2. +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =\u0398\u03ad\u03bc\u03b1\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=\u0391\u03c5\u03c4\u03ae \u03b7 \u03b2\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7 \u03b4\u03b5\u03bd \u03c5\u03c0\u03ac\u03c1\u03c7\u03b5\u03b9 \u03c3\u03c4\u03bf\u03bd \u0394\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u0392\u03b9\u03b2\u03bb\u03b9\u03bf\u03b8\u03ae\u03ba\u03b7\u03c2. \u0394\u03b5\u03bd \u03b8\u03b1 \u03bc\u03c0\u03bf\u03c1\u03ad\u03c3\u03b5\u03c4\u03b5\n\u03bd\u03b1 \u03c4\u03bf \u03b5\u03b3\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ae\u03c3\u03b5\u03c4\u03b5 \u03b1\u03c0\u03cc \u03b5\u03b4\u03ce. \u0395\u03af\u03c3\u03c4\u03b5 \u03c3\u03af\u03b3\u03bf\u03c5\u03c1\u03bf\u03b9 \u03c0\u03c9\u03c2 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c4\u03bf \u03b4\u03b9\u03b1\u03b3\u03c1\u03ac\u03c8\u03b5\u03c4\u03b5; @@ -1616,7 +1670,7 @@ Undo=\u0391\u03bd\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 Unhandled\ type\ {0}\ in\ context\ key\ {1}=\u0391\u03bd\u03b5\u03c0\u03af\u03bb\u03c5\u03c4\u03bf\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c2 {0} \u03c3\u03c4\u03bf \u03b2\u03b1\u03c3\u03b9\u03ba\u03cc \u03c0\u03bb\u03b1\u03af\u03c3\u03b9\u03bf {1} #: ../../../../../app//src/processing/app/Editor.java:2818 -!Unknown\ board= +Unknown\ board=\u0386\u03b3\u03bd\u03c9\u03c3\u03c4\u03b7 \u03c0\u03bb\u03b1\u03ba\u03ad\u03c4\u03b1 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format @@ -1657,7 +1711,7 @@ Upload=\u0391\u03bd\u03ad\u03b2\u03b1\u03c3\u03bc\u03b1 Upload\ Using\ Programmer=\u0391\u03bd\u03ad\u03b2\u03b1\u03c3\u03bc\u03b1 \u03bc\u03ad\u03c3\u03c9 \u03c0\u03c1\u03bf\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03b9\u03c3\u03c4\u03ae #: ../../../../../app//src/processing/app/Editor.java:2814 -!Upload\ any\ sketch\ to\ obtain\ it= +Upload\ any\ sketch\ to\ obtain\ it=\u0391\u03bd\u03ad\u03b2\u03b1\u03c3\u03b5 \u03ad\u03bd\u03b1 \u03bf\u03c0\u03bf\u03b9\u03bf\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03c3\u03c7\u03ad\u03b4\u03b9\u03bf \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c4\u03bf \u03b2\u03c1\u03b5\u03b9\u03c2 #: Editor.java:2403 Editor.java:2439 Upload\ canceled.=\u03a4\u03bf \u03b1\u03bd\u03ad\u03b2\u03b1\u03c3\u03bc\u03b1 \u03b1\u03ba\u03c5\u03c1\u03ce\u03b8\u03b7\u03ba\u03b5. @@ -1796,7 +1850,7 @@ You\ cannot\ save\ the\ sketch\ into\ a\ folder\ninside\ itself.\ This\ would\ g You\ forgot\ your\ sketchbook=\u039e\u03ad\u03c7\u03b1\u03c3\u03b5\u03c2 \u03c4\u03bf Sketchbook \u03c3\u03bf\u03c5 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:252 -!You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.= +You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.=\u0388\u03c7\u03b5\u03c4\u03b5 \u03bc\u03b7 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b1\u03bb\u03bb\u03b1\u03b3\u03ad\u03c2\! \u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c3\u03b5\u03c4\u03b5 \u03cc\u03bb\u03b1 \u03c4\u03b1 \u03c3\u03c7\u03ad\u03b4\u03b9\u03b1 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03ae \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae. #: ../../../processing/app/AbstractMonitor.java:92 You've\ pressed\ {0}\ but\ nothing\ was\ sent.\ Should\ you\ select\ a\ line\ ending?=\u03a0\u03b9\u03ad\u03c3\u03b1\u03c4\u03b5 {0} \u03b1\u03bb\u03bb\u03ac \u03b4\u03b5\u03bd \u03c3\u03c4\u03ac\u03bb\u03b8\u03b7\u03ba\u03b5 \u03c4\u03af\u03c0\u03bf\u03c4\u03b5. \u039c\u03ae\u03c0\u03c9\u03c2 \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03b5\u03c4\u03b5 \u03c4\u03b5\u03c1\u03bc\u03b1\u03c4\u03b9\u03c3\u03bc\u03cc \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2; @@ -1870,6 +1924,11 @@ ignoring\ invalid\ font\ size\ {0}=\u03b1\u03b3\u03bd\u03cc\u03b7\u03c3\u03b7 \u #: Editor.java:936 Editor.java:943 name\ is\ null=\u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03ba\u03b5\u03bd\u03cc +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=\u0394\u03b5\u03bd \u03b2\u03c1\u03ad\u03b8\u03b7\u03ba\u03b1\u03bd \u03b1\u03c1\u03c7\u03b5\u03af\u03b1 \u03ba\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1\u03c2 (.h) \u03c3\u03c4\u03bf {0} + #: Editor.java:932 serialMenu\ is\ null=\u03c4\u03bf \u03c3\u03b5\u03b9\u03c1\u03b9\u03b1\u03ba\u03cc\u039c\u03b5\u03bd\u03bf\u03cd \u03b5\u03af\u03bd\u03b1\u03b9 \u03ba\u03b5\u03bd\u03cc @@ -1937,10 +1996,6 @@ version\ {0}=\u03ad\u03ba\u03b4\u03bf\u03c3\u03b7 {0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: \u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03bf \u03cc\u03bd\u03bf\u03bc\u03b1 \u03c0\u03bb\u03b1\u03ba\u03ad\u03c4\u03b1\u03c2, \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03ad\u03c7\u03b5\u03b9 \u03c4\u03b7\u03bd \u03bc\u03bf\u03c1\u03c6\u03ae "package\:arch\:board" \u03ae "package\:arch\:board\:options" -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: \u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae "{1}" \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03c0\u03bb\u03b1\u03ba\u03ad\u03c4\u03b1 "{2}" - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: \u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03c0\u03bb\u03b1\u03ba\u03ad\u03c4\u03b1 "{1}" @@ -1949,6 +2004,10 @@ version\ {0}=\u03ad\u03ba\u03b4\u03bf\u03c3\u03b7 {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: \u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae, \u03c0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c4\u03b7\u03c2 \u03bc\u03bf\u03c1\u03c6\u03ae\u03c2 "\u03cc\u03bd\u03bf\u03bc\u03b1\=\u03c4\u03b9\u03bc\u03ae" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: \u039c\u03b7 \u03ad\u03b3\u03ba\u03c5\u03c1\u03b7 \u03c4\u03b9\u03bc\u03ae \u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae "{1}"\u03b3\u03b9\u03b1 \u03c4\u03b7\u03bd \u03c0\u03bb\u03b1\u03ba\u03ad\u03c4\u03b1 "{2}" + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: \u0386\u03b3\u03bd\u03c9\u03c3\u03c4\u03b7 \u03b1\u03c1\u03c7\u03b9\u03c4\u03b5\u03ba\u03c4\u03bf\u03bd\u03b9\u03ba\u03ae @@ -1963,4 +2022,4 @@ version\ {0}=\u03ad\u03ba\u03b4\u03bf\u03c3\u03b7 {0} #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format -!{0}Install\ this\ package{1}\ to\ use\ your\ {2}\ board= +{0}Install\ this\ package{1}\ to\ use\ your\ {2}\ board={0} \u0395\u03b3\u03ba\u03b1\u03c4\u03ad\u03c3\u03c4\u03b7\u03c3\u03b5 \u03c4\u03bf \u03c0\u03b1\u03ba\u03ad\u03c4\u03bf {1} \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03b9\u03c2 \u03c4\u03b7\u03bd {2} \u03c0\u03bb\u03b1\u03ba\u03ad\u03c4\u03b1 \u03c3\u03bf\u03c5 diff --git a/arduino-core/src/processing/app/i18n/Resources_en.po b/arduino-core/src/processing/app/i18n/Resources_en.po index 40000a4cbaa..eed14f14c82 100644 --- a/arduino-core/src/processing/app/i18n/Resources_en.po +++ b/arduino-core/src/processing/app/i18n/Resources_en.po @@ -17,12 +17,15 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: English (http://www.transifex.com/mbanzi/arduino-ide-15/language/en/)\n" "MIME-Version: 1.0\n" @@ -621,6 +624,11 @@ msgstr "Could not remove old version of {0}" msgid "Could not replace {0}" msgstr "Could not replace {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Could not write preferences file: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Couldn't archive sketch" @@ -676,6 +684,10 @@ msgstr "Decrease Indent" msgid "Default" msgstr "Default" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Default theme" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Delete" @@ -851,6 +863,11 @@ msgstr "Error getting the Arduino data folder." msgid "Error inside Serial.{0}()" msgstr "Error inside Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Error loading theme {0}: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -870,6 +887,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "Error opening serial port ''{0}''. Try consulting the documentation at http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Error parsing libraries index: {0}\nTry to open the Library Manager to update the libraries index." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Error reading libraries index: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Error reading package indexes folder: {0}\n(maybe a permission problem?)" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Error reading preferences" @@ -904,6 +940,10 @@ msgstr "Error while burning bootloader." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Error while burning bootloader: missing '{0}' configuration parameter" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Error while burning bootloader: please select a serial port." + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Error while compiling: missing '{0}' configuration parameter" @@ -940,10 +980,6 @@ msgstr "Error while verifying/uploading" msgid "Estonian" msgstr "Estonian" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estonian (Estonia)" - #: Editor.java:516 msgid "Examples" msgstr "Examples" @@ -1147,9 +1183,9 @@ msgstr "INCOMPATIBLE" msgid "Ignore Case" msgstr "Ignore Case" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Ignoring bad library name" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "Ignoring library with bad name" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1212,10 +1248,10 @@ msgstr "Installed" msgid "Installing boards..." msgstr "Installing boards..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "Installing library: {0}" +msgid "Installing library: {0}:{1}" +msgstr "Installing library: {0}:{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1241,6 +1277,17 @@ msgstr "Invalid library found in {0}: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "Invalid quoting: no closing [{0}] char found." +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Invalid version '{0}' for library in: {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Invalid version {0}" + #: Preferences.java:102 msgid "Italian" msgstr "Italian" @@ -1273,10 +1320,10 @@ msgstr "Library added to your libraries. Check \"Include library\" menu" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "Library can't use both 'src' and 'utility' folders. Double check {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "Library is already installed: {0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1693,10 +1740,10 @@ msgstr "Reference" msgid "Remove" msgstr "Remove" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "Removing library: {0}" +msgid "Removing library: {0}:{1}" +msgstr "Removing library: {0}:{1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1732,6 +1779,10 @@ msgstr "Replace with:" msgid "Retired" msgstr "Retired" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Retry the upload with another serial port?" + #: Preferences.java:113 msgid "Romanian" msgstr "Romanian" @@ -1855,12 +1906,15 @@ msgid "" " Serial Port menu?" msgstr "Serial port ''{0}'' not found. Did you select the right one from the Tools > Serial Port menu?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Serial port not selected." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Serial port {0} not found.\nRetry the upload with another serial port?" +msgid "Serial port {0} not found." +msgstr "Serial port {0} not found." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1883,6 +1937,10 @@ msgstr "Settings issues" msgid "Show Sketch Folder" msgstr "Show Sketch Folder" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Show timestamp" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Show verbose output during: " @@ -2054,6 +2112,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "The file \"{0}\" needs to be inside\na sketch folder named \"{1}\".\nCreate this folder, move the file, and continue?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "The library \"{0}\" cannot be used.\nLibrary folder names must start with a letter or number, followed by letters,\nnumbers, dashes, dots and underscores. Maximum length is 63 characters." + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2099,11 +2165,12 @@ msgid "" "but anything besides the code will be lost." msgstr "The sketch folder has disappeared.\n Will attempt to re-save in the same location,\nbut anything besides the code will be lost." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "The sketch name had to be modified. Sketch names can only consist\nof ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "The sketch name had to be modified.\nSketch names must start with a letter or number, followed by letters,\nnumbers, dashes, dots and underscores. Maximum length is 63 characters." #: Base.java:259 msgid "" @@ -2120,6 +2187,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "The specified sketchbook folder contains your copy of the IDE.\nPlease choose a different folder for your sketchbook." +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Theme: " + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2612,6 +2683,12 @@ msgstr "ignoring invalid font size {0}" msgid "name is null" msgstr "name is null" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "no headers files (.h) found in {0}" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu is null" @@ -2699,11 +2776,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: Invalid board name, it should be of the form \"package:arch:board\" or \"package:arch:board:options\"" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: Invalid option for \"{1}\" option for board \"{2}\"" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2714,6 +2786,11 @@ msgstr "{0}: Invalid option for board \"{1}\"" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: Invalid option, should be of the form \"name=value\"" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: Invalid value for option \"{1}\" for board \"{2}\"" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_en.properties b/arduino-core/src/processing/app/i18n/Resources_en.properties index 9b7cdec36eb..69e276282d1 100644 --- a/arduino-core/src/processing/app/i18n/Resources_en.properties +++ b/arduino-core/src/processing/app/i18n/Resources_en.properties @@ -17,7 +17,10 @@ # Translators: # Translators: # Translators: -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: English (http\://www.transifex.com/mbanzi/arduino-ide-15/language/en/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: en\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +# Translators: +# Translators: +# Translators: +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: English (http\://www.transifex.com/mbanzi/arduino-ide-15/language/en/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: en\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (requires restart of Arduino) @@ -440,6 +443,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Could not remove old version of {0} #, java-format Could\ not\ replace\ {0}=Could not replace {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=Could not write preferences file\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Couldn't archive sketch @@ -479,6 +486,9 @@ Decrease\ Indent=Decrease Indent #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=Default +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=Default theme + #: EditorHeader.java:314 Sketch.java:591 Delete=Delete @@ -610,6 +620,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Error getting the Arduino data folde #, java-format Error\ inside\ Serial.{0}()=Error inside Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=Error loading theme {0}\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -624,6 +638,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Error opening serial port ''{0}''. #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=Error opening serial port ''{0}''. Try consulting the documentation at http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=Error parsing libraries index\: {0}\nTry to open the Library Manager to update the libraries index. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=Error reading libraries index\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=Error reading package indexes folder\: {0}\n(maybe a permission problem?) + #: Preferences.java:277 Error\ reading\ preferences=Error reading preferences @@ -649,6 +675,9 @@ Error\ while\ burning\ bootloader.=Error while burning bootloader. #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Error while burning bootloader\: missing '{0}' configuration parameter +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=Error while burning bootloader\: please select a serial port. + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=Error while compiling\: missing '{0}' configuration parameter @@ -677,9 +706,6 @@ Error\ while\ verifying/uploading=Error while verifying/uploading #: Preferences.java:93 Estonian=Estonian -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Estonian (Estonia) - #: Editor.java:516 Examples=Examples @@ -830,8 +856,8 @@ INCOMPATIBLE=INCOMPATIBLE #: FindReplace.java:96 Ignore\ Case=Ignore Case -#: Base.java:1058 -Ignoring\ bad\ library\ name=Ignoring bad library name +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=Ignoring library with bad name #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Ignoring sketch with bad name @@ -875,9 +901,9 @@ Installed=Installed #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=Installing boards... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=Installing library\: {0} +Installing\ library\:\ {0}\:{1}=Installing library\: {0}\:{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -898,6 +924,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=Invalid library found in {0}\: {1} #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=Invalid quoting\: no closing [{0}] char found. +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=Invalid version '{0}' for library in\: {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=Invalid version {0} + #: Preferences.java:102 Italian=Italian @@ -922,9 +957,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=Library ad #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=Library can't use both 'src' and 'utility' folders. Double check {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=Library is already installed\: {0} version {1} +Library\ is\ already\ installed\:\ {0}\:{1}=Library is already installed\: {0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=Line number\: @@ -1237,9 +1272,9 @@ Reference=Reference #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=Remove -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=Removing library\: {0} +Removing\ library\:\ {0}\:{1}=Removing library\: {0}\:{1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1267,6 +1302,9 @@ Replace\ with\:=Replace with\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=Retired +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=Retry the upload with another serial port? + #: Preferences.java:113 Romanian=Romanian @@ -1358,9 +1396,13 @@ Serial\ monitor\ not\ available\ while\ plotter\ is\ open=Serial monitor not ava #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Serial port ''{0}'' not found. Did you select the right one from the Tools > Serial Port menu? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=Serial port not selected. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Serial port {0} not found.\nRetry the upload with another serial port? +Serial\ port\ {0}\ not\ found.=Serial port {0} not found. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=Serial ports @@ -1378,6 +1420,9 @@ Settings\ issues=Settings issues #: Editor.java:641 Show\ Sketch\ Folder=Show Sketch Folder +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=Show timestamp + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Show verbose output during\: @@ -1497,6 +1542,10 @@ The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=The file "{0}" needs to be inside\na sketch folder named "{1}".\nCreate this folder, move the file, and continue? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=The library "{0}" cannot be used.\nLibrary folder names must start with a letter or number, followed by letters,\nnumbers, dashes, dots and underscores. Maximum length is 63 characters. + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=The library "{0}" cannot be used.\nLibrary names must contain only basic letters and numbers.\n(ASCII only and no spaces, and it cannot start with a number) @@ -1521,8 +1570,8 @@ The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=The sketch already contain #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=The sketch folder has disappeared.\n Will attempt to re-save in the same location,\nbut anything besides the code will be lost. -#: ../../../../../app/src/processing/app/SketchController.java:828 -The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.=The sketch name had to be modified. Sketch names can only consist\nof ASCII characters and numbers and be less than 64 characters long. +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=The sketch name had to be modified.\nSketch names must start with a letter or number, followed by letters,\nnumbers, dashes, dots and underscores. Maximum length is 63 characters. #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=The sketchbook folder no longer exists.\nArduino will switch to the default sketchbook\nlocation, and create a new sketchbook folder if\nnecessary. Arduino will then stop talking about\nhimself in the third person. @@ -1530,6 +1579,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=The specified sketchbook folder contains your copy of the IDE.\nPlease choose a different folder for your sketchbook. +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =Theme\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=This library is not listed on Library Manager. You won't be able to reinstall it from here.\nAre you sure you want to delete it? @@ -1864,6 +1916,11 @@ ignoring\ invalid\ font\ size\ {0}=ignoring invalid font size {0} #: Editor.java:936 Editor.java:943 name\ is\ null=name is null +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=no headers files (.h) found in {0} + #: Editor.java:932 serialMenu\ is\ null=serialMenu is null @@ -1931,10 +1988,6 @@ version\ {0}=version {0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: Invalid board name, it should be of the form "package\:arch\:board" or "package\:arch\:board\:options" -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: Invalid option for "{1}" option for board "{2}" - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: Invalid option for board "{1}" @@ -1943,6 +1996,10 @@ version\ {0}=version {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Invalid option, should be of the form "name\=value" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: Invalid value for option "{1}" for board "{2}" + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: Unknown architecture diff --git a/arduino-core/src/processing/app/i18n/Resources_en_GB.po b/arduino-core/src/processing/app/i18n/Resources_en_GB.po index 07790f1047e..f3e14485adf 100644 --- a/arduino-core/src/processing/app/i18n/Resources_en_GB.po +++ b/arduino-core/src/processing/app/i18n/Resources_en_GB.po @@ -17,7 +17,10 @@ # Translators: # Translators: # Translators: -# Andi Chandler , 2013-2017 +# Translators: +# Translators: +# Translators: +# Andi Chandler , 2013-2017,2021 # Cristian Maglie , 2016 # dani987452 , 2017 msgid "" @@ -25,8 +28,8 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" -"Last-Translator: Cristian Maglie \n" +"PO-Revision-Date: 2021-04-01 22:32+0000\n" +"Last-Translator: Andi Chandler \n" "Language-Team: English (United Kingdom) (http://www.transifex.com/mbanzi/arduino-ide-15/language/en_GB/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -216,7 +219,7 @@ msgstr "Archive sketch canceled." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format msgid "Archiving built core (caching) in: {0}" -msgstr "" +msgstr "Archiving built core (caching) in: {0}" #: tools/Archiver.java:75 msgid "" @@ -624,6 +627,11 @@ msgstr "Could not remove old version of {0}" msgid "Could not replace {0}" msgstr "Could not replace {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Could not write preferences file: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Couldn't archive sketch" @@ -669,7 +677,7 @@ msgstr "Data Storage" #: ../../../../../app/src/processing/app/Editor.java:1386 msgid "Decrease Font Size" -msgstr "" +msgstr "Decrease Font Size" #: Editor.java:1224 Editor.java:2765 msgid "Decrease Indent" @@ -679,6 +687,10 @@ msgstr "Decrease Indent" msgid "Default" msgstr "Default" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Default theme" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Delete" @@ -854,6 +866,11 @@ msgstr "Error getting the Arduino data folder." msgid "Error inside Serial.{0}()" msgstr "Error inside Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Error loading theme {0}: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -873,6 +890,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "Error opening serial port ''{0}''. Try consulting the documentation at http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Error parsing libraries index: {0}\nTry to open the Library Manager to update the libraries index." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Error reading libraries index: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Error reading package indexes folder: {0}\n(maybe a permission problem?)" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Error reading preferences" @@ -907,6 +943,10 @@ msgstr "Error while burning bootloader." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Error while burning bootloader: missing '{0}' configuration parameter" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Error while burning bootloader: please select a serial port." + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Error while compiling: missing '{0}' configuration parameter" @@ -943,10 +983,6 @@ msgstr "Error while verifying/uploading" msgid "Estonian" msgstr "Estonian" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estonian (Estonia)" - #: Editor.java:516 msgid "Examples" msgstr "Examples" @@ -1150,9 +1186,9 @@ msgstr "INCOMPATIBLE" msgid "Ignore Case" msgstr "Ignore Case" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Ignoring bad library name" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "Ignoring library with bad name" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1180,7 +1216,7 @@ msgstr "Incorrect IDE installation folder" #: ../../../../../app/src/processing/app/Editor.java:1378 msgid "Increase Font Size" -msgstr "" +msgstr "Increase Font Size" #: Editor.java:1216 Editor.java:2757 msgid "Increase Indent" @@ -1215,10 +1251,10 @@ msgstr "Installed" msgid "Installing boards..." msgstr "Installing boards..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "Installing library: {0}" +msgid "Installing library: {0}:{1}" +msgstr "Installing library: {0}:{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1244,6 +1280,17 @@ msgstr "Invalid library found in {0}: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "Invalid quoting: no closing [{0}] char found." +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Invalid version '{0}' for library in: {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Invalid version {0}" + #: Preferences.java:102 msgid "Italian" msgstr "Italian" @@ -1276,10 +1323,10 @@ msgstr "Library added to your libraries. Check \"Include library\" menu" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "Library can't use both 'src' and 'utility' folders. Double check {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "Library is already installed: {0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1696,10 +1743,10 @@ msgstr "Reference" msgid "Remove" msgstr "Remove" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "Removing library: {0}" +msgid "Removing library: {0}:{1}" +msgstr "Removing library: {0}:{1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1735,6 +1782,10 @@ msgstr "Replace with:" msgid "Retired" msgstr "Retired" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Retry the upload with another serial port?" + #: Preferences.java:113 msgid "Romanian" msgstr "Romanian" @@ -1858,12 +1909,15 @@ msgid "" " Serial Port menu?" msgstr "Serial port ''{0}'' not found. Did you select the right one from the Tools > Serial Port menu?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Serial port not selected." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Serial port {0} not found.\nRetry the upload with another serial port?" +msgid "Serial port {0} not found." +msgstr "Serial port {0} not found." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1886,6 +1940,10 @@ msgstr "Settings issues" msgid "Show Sketch Folder" msgstr "Show Sketch Folder" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Show timestamp" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Show verbose output during: " @@ -2057,6 +2115,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "The file \"{0}\" needs to be inside\na sketch folder named \"{1}\".\nCreate this folder, move the file, and continue?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "The library \"{0}\" cannot be used.\nLibrary folder names must start with a letter or number, followed by letters,\nnumbers, dashes, dots and underscores. Maximum length is 63 characters." + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2102,11 +2168,12 @@ msgid "" "but anything besides the code will be lost." msgstr "The sketch folder has disappeared.\n Will attempt to re-save in the same location,\nbut anything besides the code will be lost." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "" +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "The sketch name had to be modified.\nSketch names must start with a letter or number, followed by letters,\nnumbers, dashes, dots and underscores. Maximum length is 63 characters." #: Base.java:259 msgid "" @@ -2123,6 +2190,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "The specified sketchbook folder contains your copy of the IDE.\nPlease choose a different folder for your sketchbook." +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Theme: " + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2615,6 +2686,12 @@ msgstr "ignoring invalid font size {0}" msgid "name is null" msgstr "name is null" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "no headers files (.h) found in {0}" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu is null" @@ -2702,11 +2779,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: Invalid board name, it should be of the form \"package:arch:board\" or \"package:arch:board:options\"" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: Invalid option for \"{1}\" option for board \"{2}\"" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2717,6 +2789,11 @@ msgstr "{0}: Invalid option for board \"{1}\"" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: Invalid option, should be of the form \"name=value\"" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: Invalid value for option \"{1}\" for board \"{2}\"" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_en_GB.properties b/arduino-core/src/processing/app/i18n/Resources_en_GB.properties index c4d17c22340..25338114100 100644 --- a/arduino-core/src/processing/app/i18n/Resources_en_GB.properties +++ b/arduino-core/src/processing/app/i18n/Resources_en_GB.properties @@ -17,10 +17,13 @@ # Translators: # Translators: # Translators: -# Andi Chandler , 2013-2017 +# Translators: +# Translators: +# Translators: +# Andi Chandler , 2013-2017,2021 # Cristian Maglie , 2016 # dani987452 , 2017 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: English (United Kingdom) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/en_GB/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: en_GB\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2021-04-01 22\:32+0000\nLast-Translator\: Andi Chandler \nLanguage-Team\: English (United Kingdom) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/en_GB/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: en_GB\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (requires restart of Arduino) @@ -147,7 +150,7 @@ Archive\ sketch\ canceled.=Archive sketch canceled. #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format -!Archiving\ built\ core\ (caching)\ in\:\ {0}= +Archiving\ built\ core\ (caching)\ in\:\ {0}=Archiving built core (caching) in\: {0} #: tools/Archiver.java:75 Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.=Archiving the sketch has been canceled because\nthe sketch couldn't save properly. @@ -443,6 +446,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Could not remove old version of {0} #, java-format Could\ not\ replace\ {0}=Could not replace {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=Could not write preferences file\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Couldn't archive sketch @@ -474,7 +481,7 @@ Data\ Processing=Data Processing Data\ Storage=Data Storage #: ../../../../../app/src/processing/app/Editor.java:1386 -!Decrease\ Font\ Size= +Decrease\ Font\ Size=Decrease Font Size #: Editor.java:1224 Editor.java:2765 Decrease\ Indent=Decrease Indent @@ -482,6 +489,9 @@ Decrease\ Indent=Decrease Indent #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=Default +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=Default theme + #: EditorHeader.java:314 Sketch.java:591 Delete=Delete @@ -613,6 +623,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Error getting the Arduino data folde #, java-format Error\ inside\ Serial.{0}()=Error inside Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=Error loading theme {0}\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -627,6 +641,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Error opening serial port ''{0}''. #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=Error opening serial port ''{0}''. Try consulting the documentation at http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=Error parsing libraries index\: {0}\nTry to open the Library Manager to update the libraries index. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=Error reading libraries index\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=Error reading package indexes folder\: {0}\n(maybe a permission problem?) + #: Preferences.java:277 Error\ reading\ preferences=Error reading preferences @@ -652,6 +678,9 @@ Error\ while\ burning\ bootloader.=Error while burning bootloader. #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Error while burning bootloader\: missing '{0}' configuration parameter +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=Error while burning bootloader\: please select a serial port. + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=Error while compiling\: missing '{0}' configuration parameter @@ -680,9 +709,6 @@ Error\ while\ verifying/uploading=Error while verifying/uploading #: Preferences.java:93 Estonian=Estonian -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Estonian (Estonia) - #: Editor.java:516 Examples=Examples @@ -833,8 +859,8 @@ INCOMPATIBLE=INCOMPATIBLE #: FindReplace.java:96 Ignore\ Case=Ignore Case -#: Base.java:1058 -Ignoring\ bad\ library\ name=Ignoring bad library name +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=Ignoring library with bad name #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Ignoring sketch with bad name @@ -850,7 +876,7 @@ Include\ Library=Include Library Incorrect\ IDE\ installation\ folder=Incorrect IDE installation folder #: ../../../../../app/src/processing/app/Editor.java:1378 -!Increase\ Font\ Size= +Increase\ Font\ Size=Increase Font Size #: Editor.java:1216 Editor.java:2757 Increase\ Indent=Increase Indent @@ -878,9 +904,9 @@ Installed=Installed #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=Installing boards... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=Installing library\: {0} +Installing\ library\:\ {0}\:{1}=Installing library\: {0}\:{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -901,6 +927,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=Invalid library found in {0}\: {1} #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=Invalid quoting\: no closing [{0}] char found. +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=Invalid version '{0}' for library in\: {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=Invalid version {0} + #: Preferences.java:102 Italian=Italian @@ -925,9 +960,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=Library ad #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=Library can't use both 'src' and 'utility' folders. Double check {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=Library is already installed\: {0} version {1} +Library\ is\ already\ installed\:\ {0}\:{1}=Library is already installed\: {0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=Line number\: @@ -1240,9 +1275,9 @@ Reference=Reference #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=Remove -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=Removing library\: {0} +Removing\ library\:\ {0}\:{1}=Removing library\: {0}\:{1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1270,6 +1305,9 @@ Replace\ with\:=Replace with\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=Retired +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=Retry the upload with another serial port? + #: Preferences.java:113 Romanian=Romanian @@ -1361,9 +1399,13 @@ Serial\ monitor\ not\ available\ while\ plotter\ is\ open=Serial monitor not ava #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Serial port ''{0}'' not found. Did you select the right one from the Tools > Serial Port menu? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=Serial port not selected. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Serial port {0} not found.\nRetry the upload with another serial port? +Serial\ port\ {0}\ not\ found.=Serial port {0} not found. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=Serial ports @@ -1381,6 +1423,9 @@ Settings\ issues=Settings issues #: Editor.java:641 Show\ Sketch\ Folder=Show Sketch Folder +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=Show timestamp + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Show verbose output during\: @@ -1500,6 +1545,10 @@ The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=The file "{0}" needs to be inside\na sketch folder named "{1}".\nCreate this folder, move the file, and continue? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=The library "{0}" cannot be used.\nLibrary folder names must start with a letter or number, followed by letters,\nnumbers, dashes, dots and underscores. Maximum length is 63 characters. + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=The library "{0}" cannot be used.\nLibrary names must contain only basic letters and numbers.\n(ASCII only and no spaces, and it cannot start with a number) @@ -1524,8 +1573,8 @@ The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=The sketch already contain #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=The sketch folder has disappeared.\n Will attempt to re-save in the same location,\nbut anything besides the code will be lost. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=The sketch name had to be modified.\nSketch names must start with a letter or number, followed by letters,\nnumbers, dashes, dots and underscores. Maximum length is 63 characters. #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=The sketchbook folder no longer exists.\nArduino will switch to the default sketchbook\nlocation, and create a new sketchbook folder if\nnecessary. Arduino will then stop talking about\nhimself in the third person. @@ -1533,6 +1582,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=The specified sketchbook folder contains your copy of the IDE.\nPlease choose a different folder for your sketchbook. +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =Theme\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=This library is not listed on Library Manager. You won't be able to reinstall it from here.\nAre you sure you want to delete it? @@ -1867,6 +1919,11 @@ ignoring\ invalid\ font\ size\ {0}=ignoring invalid font size {0} #: Editor.java:936 Editor.java:943 name\ is\ null=name is null +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=no headers files (.h) found in {0} + #: Editor.java:932 serialMenu\ is\ null=serialMenu is null @@ -1934,10 +1991,6 @@ version\ {0}=version {0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: Invalid board name, it should be of the form "package\:arch\:board" or "package\:arch\:board\:options" -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: Invalid option for "{1}" option for board "{2}" - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: Invalid option for board "{1}" @@ -1946,6 +1999,10 @@ version\ {0}=version {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Invalid option, should be of the form "name\=value" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: Invalid value for option "{1}" for board "{2}" + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: Unknown architecture diff --git a/arduino-core/src/processing/app/i18n/Resources_es.po b/arduino-core/src/processing/app/i18n/Resources_es.po index 4c06aa5424e..42eb9fa5d07 100644 --- a/arduino-core/src/processing/app/i18n/Resources_es.po +++ b/arduino-core/src/processing/app/i18n/Resources_es.po @@ -17,7 +17,11 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # . . , 2017 +# Alejandro Dafonte , 2018 # David Martin Garcia , 2012 # Cristian Maglie , 2016 # Miguel Ángel Barrio Vázquez , 2012 @@ -28,8 +32,9 @@ # Jack R. , 2013 # Miguel Ángel Barrio Vázquez , 2013 # Moritz Werner Casero , 2015 -# Nestor Contreras , 2017 -# Pedro Luis Plizze , 2015-2016 +# d7ce63bf85c9f8c124fab05c2821bbcf, 2017 +# Pedro Luis , 2018 +# Pedro Luis , 2015-2016 # Salvador Parra Camacho , 2014 # Sam Dale , 2016 msgid "" @@ -37,8 +42,8 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-11-13 12:09+0000\n" -"Last-Translator: . . \n" +"PO-Revision-Date: 2018-11-27 12:39+0000\n" +"Last-Translator: Alejandro Dafonte \n" "Language-Team: Spanish (http://www.transifex.com/mbanzi/arduino-ide-15/language/es/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -126,7 +131,7 @@ msgstr "Una nueva versión de Arduino está disponible...\n¿quieres visitar la #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format msgid "A newer {0} package is available" -msgstr "Un nuevo paquete {0} está disponible" +msgstr "Está disponible una nueva versión del paquete {0}" #: ../../../../../app/src/processing/app/Base.java:2307 msgid "A subfolder of your sketchbook is not a valid library" @@ -142,7 +147,7 @@ msgstr "Acoli" #: ../../../../../app/src/processing/app/Base.java:1177 msgid "Add .ZIP Library..." -msgstr "Añadir librería .ZIP..." +msgstr "Añadir biblioteca .ZIP..." #: Editor.java:650 msgid "Add File..." @@ -228,7 +233,7 @@ msgstr "Archivación de programa cancelada." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format msgid "Archiving built core (caching) in: {0}" -msgstr "" +msgstr "Archivando el núcleo construido (cacheado) en: {0}" #: tools/Archiver.java:75 msgid "" @@ -497,7 +502,7 @@ msgstr "Chino (Taiwan) (Big5)" #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 msgid "Clear output" -msgstr "" +msgstr "Limpiar salida" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 msgid "Click for a list of unofficial boards support URLs" @@ -636,6 +641,11 @@ msgstr "No pude eliminar la versión antigua de {0}" msgid "Could not replace {0}" msgstr "No pude reemplazar {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "No se pudo escribir el archivo de preferencias: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "No se pudo archivar el programa." @@ -681,7 +691,7 @@ msgstr "Datos Almacenados" #: ../../../../../app/src/processing/app/Editor.java:1386 msgid "Decrease Font Size" -msgstr "" +msgstr "Reducir Tamaño de Fuente" #: Editor.java:1224 Editor.java:2765 msgid "Decrease Indent" @@ -691,6 +701,10 @@ msgstr "Disminuir Sangría" msgid "Default" msgstr "Por defecto" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Tema por defecto" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Borrar" @@ -866,6 +880,11 @@ msgstr "Error obteniendo los datos de la carpeta de Arduino" msgid "Error inside Serial.{0}()" msgstr "Error interno del serie.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Error cargando tema {0}: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -885,6 +904,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "Error abriendo el puerto serie \"{0}\". Pruebe a consultar la documentación en http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Error al analizar el índice de las bibliotecas: {0}\nIntenta abrir el Administrador de Bibliotecas para actualizar el índice de bibliotecas." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Error leyendo indice de biblioteca: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Error al leer la carpeta de índices de paquetes: {0}\n(¿puede ser un problema de permisos?)" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Error leyendo preferencias" @@ -919,6 +957,10 @@ msgstr "Error quemando bootloader" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Error mientras se cargaba el bootloader: falta parametro de configuración '{0}'" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Ha ocurrido un error mientras se grababa el bootloader: por favor selecciona un puerto serie." + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Erro mientras se compilaba: falta el parámetro '{0}' de configuración" @@ -955,10 +997,6 @@ msgstr "Error mientras se verificaba/enviaba" msgid "Estonian" msgstr "Estonio" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estonio (Estonia)" - #: Editor.java:516 msgid "Examples" msgstr "Ejemplos" @@ -1162,9 +1200,9 @@ msgstr "INCOMPATIBLE" msgid "Ignore Case" msgstr "Ignorar Caso" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Ignorando el nombre incorrecto de librería." +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "Ignorando la biblioteca con mal nombre" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1192,7 +1230,7 @@ msgstr "Carpeta de instalación del IDE Incorrecta" #: ../../../../../app/src/processing/app/Editor.java:1378 msgid "Increase Font Size" -msgstr "" +msgstr "Incrementa Tamaño Fuente" #: Editor.java:1216 Editor.java:2757 msgid "Increase Indent" @@ -1227,10 +1265,10 @@ msgstr "Instalado" msgid "Installing boards..." msgstr "Instalando tarjetas..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "Instalando librerías: {0}" +msgid "Installing library: {0}:{1}" +msgstr "Instalando biblioteca: {0}:{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1256,6 +1294,17 @@ msgstr "Librería inválida encontrada en {0}: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "Citado no valido, no encontrado el carácter [{0}] de cierre." +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Version no valida '{0}' para biblioteca en: {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Versión {0} incorrecta" + #: Preferences.java:102 msgid "Italian" msgstr "Italiano" @@ -1288,10 +1337,10 @@ msgstr "Librería añadida a sus librerías. Revise el menú \"Incluir Librería msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "La Librería no puede usar ambas carpetas 'src' y 'utilidad'. Doble marcado {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "La librería ya estaba instalada: {0} versión {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "La biblioteca ya está instalada: {0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1316,7 +1365,7 @@ msgstr "Poca memoria disponible, se pueden producir problemas de estabilidad." #: ../../../../../app/src/processing/app/Base.java:1168 msgid "Manage Libraries..." -msgstr "Gestionar Librerías" +msgstr "Administrar Bibliotecas..." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:466 msgid "Manual proxy configuration" @@ -1333,7 +1382,7 @@ msgstr "mensaje" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:81 #, java-format msgid "Missing '{0}' from library in {1}" -msgstr "Falta '{0}' de la librería en {1}" +msgstr "Falta '{0}' de la biblioteca en {1}" #: ../../../processing/app/BaseNoGui.java:455 msgid "Mode not supported" @@ -1358,7 +1407,7 @@ msgstr "Múltiples archivos no soportados" #: ../../../processing/app/debug/Compiler.java:520 #, java-format msgid "Multiple libraries were found for \"{0}\"" -msgstr "Se encontraron múltiples librerías para \"{0}\"" +msgstr "Se encontraron varias bibliotecas para \"{0}\"" #: ../../../processing/app/Base.java:395 msgid "Must specify exactly one sketch file" @@ -1390,7 +1439,7 @@ msgstr "Puertos de Red" #: ../../../cc/arduino/packages/uploaders/SSHUploader.java:51 msgid "Network upload using programmer not supported" -msgstr "Carga a través de red unado programador no soprtado" +msgstr "Subida por red usando un programador no soportado" #: EditorToolbar.java:41 Editor.java:493 msgid "New" @@ -1708,10 +1757,10 @@ msgstr "Referencia" msgid "Remove" msgstr "Eliminar" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "Eliminando librería: {0}" +msgid "Removing library: {0}:{1}" +msgstr "Eliminando biblioteca: {0}:{1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1747,6 +1796,10 @@ msgstr "Reemplazar con:" msgid "Retired" msgstr "Retirado" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "¿Reintentar la subida con otro puerto serie?" + #: Preferences.java:113 msgid "Romanian" msgstr "Rumano" @@ -1834,7 +1887,7 @@ msgstr "La tarjeta seleccionada no está disponible" #: ../../../../../app/src/processing/app/Base.java:423 msgid "Selected library is not available" -msgstr "La librería seleccionada no está disponible" +msgstr "La biblioteca seleccionada no está disponible" #: SerialMonitor.java:93 msgid "Send" @@ -1870,12 +1923,15 @@ msgid "" " Serial Port menu?" msgstr "Puerto \"{0}\" no encontrado. ¿Has seleccionado el correcto del menú Herramientas > Puerto Serie?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Puerto serie no seleccionado." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Puerto {0} no encontrado.\n¿Reintentar la subida con otro puerto?" +msgid "Serial port {0} not found." +msgstr "Puerto serie {0} no encontrado." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1898,6 +1954,10 @@ msgstr "Cuestiones de ajustes" msgid "Show Sketch Folder" msgstr "Mostrar Carpeta de Programa" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Mostrar marca temporal" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Mostrar salida detallada mientras:" @@ -2000,7 +2060,7 @@ msgstr "La carpeta o el archivo zip no contienen una librería válida" #: ../../../../../app/src/processing/app/Base.java:466 msgid "Starting..." -msgstr "Arrancando..." +msgstr "Iniciando..." #: Base.java:540 msgid "Sunshine" @@ -2047,7 +2107,7 @@ msgstr "La clase Cliente ha sido renombrada a EthernetClient" msgid "" "The IDE includes an updated {0} package, but you're using an older one.\n" "Do you want to upgrade {0}?" -msgstr "El IDE incluye el paquete {0} actualizado, pero usted está usando uno más viejo.\n¿ Quiere actualizar {0}? " +msgstr "El IDE incluye la actualización del paquete {0}, pero estás usando uno más antiguo.\n¿Quieres actualizar {0}? " #: debug/Compiler.java:420 msgid "The Server class has been renamed EthernetServer." @@ -2069,6 +2129,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "El archivo \"{0}\" necesita estar dentro\nde una carpeta de proyecto llamada \"{1}\".\n¿Crearla, mover el fichero y continuar?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "La biblioteca \"{0}\" no puede ser usada\nLos nombres de las carpetas de bibliotecas deben empezar con una letra o número, seguido de letras,\n." + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2114,11 +2182,12 @@ msgid "" "but anything besides the code will be lost." msgstr "La carpeta del programa ha desaparecido\nIntentaré salvarlo de nuevo en la misma ubicación\npero nada más que el código se perderá." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "" +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "El nombre del sketch ha sido modificado.\nLos nombres de Sketch deben empezar con una letra o número, seguido por letras,\nnúmeros, guiones, puntos y subrayados. La longitud máxima es de 63 caracteres." #: Base.java:259 msgid "" @@ -2135,18 +2204,22 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "La carpeta sketchbook especificada contiene tu copia del IDE.\nPor favor, escoge otra carpeta diferente para tus bocetos." +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Tema:" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" "Are you sure you want to delete it?" -msgstr "Esta librería no está listada en el Gestor de Librerías. No te será posible reinstalarla desde aquí.\n¿Estás seguro que quieres borrarla?" +msgstr "Esta biblioteca no está listada en el Gestor de Bibliotecas. No será posible reinstalarla desde aquí.\n¿Estás seguro que quieres borrarla?" #: ../../../../../app/src/processing/app/EditorStatus.java:349 msgid "" "This report would have more information with\n" "\"Show verbose output during compilation\"\n" "option enabled in File -> Preferences.\n" -msgstr "Este reporte podría tener más información con\n\"Mostrar salida detallada durante la compilación\"\nopción habilitada en Archivo -> Preferencias.\n" +msgstr "Este informe podría contener más información con\n\"Mostrar salida detallada durante la compilación\"\nopción habilitada en Archivo -> Preferencias.\n" #: Base.java:535 msgid "Time for a Break" @@ -2206,20 +2279,20 @@ msgstr "Imposible de conectar: ¿está el sketch usando el puente?" #: ../../../processing/app/NetworkMonitor.java:130 msgid "Unable to connect: retrying" -msgstr "Imposible conectarse: reintentando" +msgstr "Imposible conectar: reintentando" #: ../../../processing/app/Editor.java:2526 msgid "Unable to connect: wrong password?" -msgstr "Imposible conectar: contraseña incorrecta?" +msgstr "Imposible conectar: ¿contraseña incorrecta?" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:65 #, java-format msgid "Unable to find {0} in {1}" -msgstr "No fue posible encontrar {0} en {1}" +msgstr "Imposible encontrar {0} en {1}" #: ../../../processing/app/Editor.java:2512 msgid "Unable to open serial monitor" -msgstr "Imposible abrir el monitor serial" +msgstr "Imposible abrir el monitor serie" #: ../../../../../app/src/processing/app/Editor.java:2709 msgid "Unable to open serial plotter" @@ -2245,7 +2318,7 @@ msgstr "Tipo {0} no gestionado en llave conxtexto {1}" #: ../../../../../app//src/processing/app/Editor.java:2818 msgid "Unknown board" -msgstr "Una plata desconocida" +msgstr "Placa desconocida" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format @@ -2285,11 +2358,11 @@ msgstr "Actualización disponible para alguna de tus {0}tarjetas{1} y {2}librer #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:86 #, java-format msgid "Updates available for some of your {0}libraries{1}" -msgstr "Actualización disponible para alguna de tus {0}librerías{1}" +msgstr "Actualización disponible para alguna de tus {0}bibliotecas{1}" #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:167 msgid "Updating list of installed libraries" -msgstr "Actualizando lista de librerías instaladas" +msgstr "Actualizando la lista de las bibliotecas instaladas" #: EditorToolbar.java:41 Editor.java:545 msgid "Upload" @@ -2396,7 +2469,7 @@ msgstr "Visita Arduino.cc" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:90 #, java-format msgid "WARNING: Category '{0}' in library {1} is not valid. Setting to '{2}'" -msgstr "ATENCIÓN: Categoría '{0}' en librería {1} no es válida. Configurando a '{2}'" +msgstr "ATENCIÓN: Categoría '{0}' de la biblioteca {1} no es válida. Configurando a '{2}'" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:93 #, java-format @@ -2627,6 +2700,12 @@ msgstr "ignorando tamaño de fuente incorrento {0}" msgid "name is null" msgstr "Nombre está vacío" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "No encontrado archivos de encabezado (.h) en {0}" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu está vacío" @@ -2675,7 +2754,7 @@ msgstr "{0} ficheros añadidos al programa." #: ../../../../../app/src/processing/app/Base.java:1201 #, java-format msgid "{0} libraries" -msgstr "{0} librerías" +msgstr "{0} bibliotecas" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:76 #, java-format @@ -2714,11 +2793,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: Nombre de placa invalido, debe ser de la forma \"paquete:arq:placa\" o \"paquete:arq:placa:opciones\"" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: Opción no valida para opción \"´{1}\" de la tarjeta \"{2}\"" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2729,6 +2803,11 @@ msgstr "{0}: Opcion no valida para la tarjeta \"{1}\"" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: Opcion invalida, debe ser de la forma \"nombre=valor\"" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: Valor no valido para opción \"{1}\" para tarjeta \"{2}\"" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_es.properties b/arduino-core/src/processing/app/i18n/Resources_es.properties index a73300fcab5..1e6db436fd5 100644 --- a/arduino-core/src/processing/app/i18n/Resources_es.properties +++ b/arduino-core/src/processing/app/i18n/Resources_es.properties @@ -17,7 +17,11 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # . . , 2017 +# Alejandro Dafonte , 2018 # David Martin Garcia , 2012 # Cristian Maglie , 2016 # Miguel \u00c1ngel Barrio V\u00e1zquez , 2012 @@ -28,11 +32,12 @@ # Jack R. , 2013 # Miguel \u00c1ngel Barrio V\u00e1zquez , 2013 # Moritz Werner Casero , 2015 -# Nestor Contreras , 2017 -# Pedro Luis Plizze , 2015-2016 +# d7ce63bf85c9f8c124fab05c2821bbcf, 2017 +# Pedro Luis , 2018 +# Pedro Luis , 2015-2016 # Salvador Parra Camacho , 2014 # Sam Dale , 2016 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-11-13 12\:09+0000\nLast-Translator\: . . \nLanguage-Team\: Spanish (http\://www.transifex.com/mbanzi/arduino-ide-15/language/es/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: es\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-27 12\:39+0000\nLast-Translator\: Alejandro Dafonte \nLanguage-Team\: Spanish (http\://www.transifex.com/mbanzi/arduino-ide-15/language/es/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: es\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=(requiere reiniciar Arduino) @@ -85,7 +90,7 @@ A\ new\ version\ of\ Arduino\ is\ available,\nwould\ you\ like\ to\ visit\ the\ #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format -A\ newer\ {0}\ package\ is\ available=Un nuevo paquete {0} est\u00e1 disponible +A\ newer\ {0}\ package\ is\ available=Est\u00e1 disponible una nueva versi\u00f3n del paquete {0} #: ../../../../../app/src/processing/app/Base.java:2307 A\ subfolder\ of\ your\ sketchbook\ is\ not\ a\ valid\ library=Un subdirectorio de su 'cuaderno de bocetos' no es una librer\u00eda v\u00e1lida @@ -97,7 +102,7 @@ About\ Arduino=Sobre Arduino Acoli=Acoli #: ../../../../../app/src/processing/app/Base.java:1177 -Add\ .ZIP\ Library...=A\u00f1adir librer\u00eda .ZIP... +Add\ .ZIP\ Library...=A\u00f1adir biblioteca .ZIP... #: Editor.java:650 Add\ File...=A\u00f1adir fichero... @@ -159,7 +164,7 @@ Archive\ sketch\ canceled.=Archivaci\u00f3n de programa cancelada. #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format -!Archiving\ built\ core\ (caching)\ in\:\ {0}= +Archiving\ built\ core\ (caching)\ in\:\ {0}=Archivando el n\u00facleo construido (cacheado) en\: {0} #: tools/Archiver.java:75 Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.=El archivo del programa se ha cancelado porque\nno se pudo guardar el propio programa. @@ -355,7 +360,7 @@ Chinese\ (Taiwan)=Chino (Taiwan) Chinese\ (Taiwan)\ (Big5)=Chino (Taiwan) (Big5) #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 -!Clear\ output= +Clear\ output=Limpiar salida #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs=Clique para obtener una lista de las URLs de soporte para las tarjetas no oficiales @@ -455,6 +460,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=No pude eliminar la versi\u00f3n antig #, java-format Could\ not\ replace\ {0}=No pude reemplazar {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=No se pudo escribir el archivo de preferencias\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=No se pudo archivar el programa. @@ -486,7 +495,7 @@ Data\ Processing=Procesando Datos Data\ Storage=Datos Almacenados #: ../../../../../app/src/processing/app/Editor.java:1386 -!Decrease\ Font\ Size= +Decrease\ Font\ Size=Reducir Tama\u00f1o de Fuente #: Editor.java:1224 Editor.java:2765 Decrease\ Indent=Disminuir Sangr\u00eda @@ -494,6 +503,9 @@ Decrease\ Indent=Disminuir Sangr\u00eda #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=Por defecto +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=Tema por defecto + #: EditorHeader.java:314 Sketch.java:591 Delete=Borrar @@ -625,6 +637,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Error obteniendo los datos de la car #, java-format Error\ inside\ Serial.{0}()=Error interno del serie.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=Error cargando tema {0}\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -639,6 +655,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Error abriendo puerto "{0}" #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=Error abriendo el puerto serie "{0}". Pruebe a consultar la documentaci\u00f3n en http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=Error al analizar el \u00edndice de las bibliotecas\: {0}\nIntenta abrir el Administrador de Bibliotecas para actualizar el \u00edndice de bibliotecas. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=Error leyendo indice de biblioteca\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=Error al leer la carpeta de \u00edndices de paquetes\: {0}\n(\u00bfpuede ser un problema de permisos?) + #: Preferences.java:277 Error\ reading\ preferences=Error leyendo preferencias @@ -664,6 +692,9 @@ Error\ while\ burning\ bootloader.=Error quemando bootloader #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Error mientras se cargaba el bootloader\: falta parametro de configuraci\u00f3n '{0}' +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=Ha ocurrido un error mientras se grababa el bootloader\: por favor selecciona un puerto serie. + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=Erro mientras se compilaba\: falta el par\u00e1metro '{0}' de configuraci\u00f3n @@ -692,9 +723,6 @@ Error\ while\ verifying/uploading=Error mientras se verificaba/enviaba #: Preferences.java:93 Estonian=Estonio -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Estonio (Estonia) - #: Editor.java:516 Examples=Ejemplos @@ -845,8 +873,8 @@ INCOMPATIBLE=INCOMPATIBLE #: FindReplace.java:96 Ignore\ Case=Ignorar Caso -#: Base.java:1058 -Ignoring\ bad\ library\ name=Ignorando el nombre incorrecto de librer\u00eda. +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=Ignorando la biblioteca con mal nombre #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Ignorando trabajo con nombre incorrecto. @@ -862,7 +890,7 @@ Include\ Library=Incluir Librer\u00eda Incorrect\ IDE\ installation\ folder=Carpeta de instalaci\u00f3n del IDE Incorrecta #: ../../../../../app/src/processing/app/Editor.java:1378 -!Increase\ Font\ Size= +Increase\ Font\ Size=Incrementa Tama\u00f1o Fuente #: Editor.java:1216 Editor.java:2757 Increase\ Indent=Aumentar Sangr\u00eda @@ -890,9 +918,9 @@ Installed=Instalado #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=Instalando tarjetas... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=Instalando librer\u00edas\: {0} +Installing\ library\:\ {0}\:{1}=Instalando biblioteca\: {0}\:{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -913,6 +941,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=Librer\u00eda inv\u00e1lida encontrada e #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=Citado no valido, no encontrado el car\u00e1cter [{0}] de cierre. +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=Version no valida '{0}' para biblioteca en\: {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=Versi\u00f3n {0} incorrecta + #: Preferences.java:102 Italian=Italiano @@ -937,9 +974,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=Librer\u00 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=La Librer\u00eda no puede usar ambas carpetas 'src' y 'utilidad'. Doble marcado {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=La librer\u00eda ya estaba instalada\: {0} versi\u00f3n {1} +Library\ is\ already\ installed\:\ {0}\:{1}=La biblioteca ya est\u00e1 instalada\: {0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=N\u00famero l\u00ednea\: @@ -958,7 +995,7 @@ Looking\ for\ recipes\ like\ {0}*{1}=Buscando recetas tales como {0}*{1} Low\ memory\ available,\ stability\ problems\ may\ occur.=Poca memoria disponible, se pueden producir problemas de estabilidad. #: ../../../../../app/src/processing/app/Base.java:1168 -Manage\ Libraries...=Gestionar Librer\u00edas +Manage\ Libraries...=Administrar Bibliotecas... #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:466 Manual\ proxy\ configuration=Configuraci\u00f3n manual del proxy @@ -971,7 +1008,7 @@ Message=mensaje #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:81 #, java-format -Missing\ '{0}'\ from\ library\ in\ {1}=Falta '{0}' de la librer\u00eda en {1} +Missing\ '{0}'\ from\ library\ in\ {1}=Falta '{0}' de la biblioteca en {1} #: ../../../processing/app/BaseNoGui.java:455 Mode\ not\ supported=Modo no soportado @@ -990,7 +1027,7 @@ Multiple\ files\ not\ supported=M\u00faltiples archivos no soportados #: ../../../processing/app/debug/Compiler.java:520 #, java-format -Multiple\ libraries\ were\ found\ for\ "{0}"=Se encontraron m\u00faltiples librer\u00edas para "{0}" +Multiple\ libraries\ were\ found\ for\ "{0}"=Se encontraron varias bibliotecas para "{0}" #: ../../../processing/app/Base.java:395 Must\ specify\ exactly\ one\ sketch\ file=Debe especificar ex\u00e1ctamente un archivo de sketch @@ -1014,7 +1051,7 @@ Network\ port,\ can't\ obtain\ info=Puerto de la red, no se puede obtener inform Network\ ports=Puertos de Red #: ../../../cc/arduino/packages/uploaders/SSHUploader.java:51 -Network\ upload\ using\ programmer\ not\ supported=Carga a trav\u00e9s de red unado programador no soprtado +Network\ upload\ using\ programmer\ not\ supported=Subida por red usando un programador no soportado #: EditorToolbar.java:41 Editor.java:493 New=Nuevo @@ -1252,9 +1289,9 @@ Reference=Referencia #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=Eliminar -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=Eliminando librer\u00eda\: {0} +Removing\ library\:\ {0}\:{1}=Eliminando biblioteca\: {0}\:{1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1282,6 +1319,9 @@ Replace\ with\:=Reemplazar con\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=Retirado +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=\u00bfReintentar la subida con otro puerto serie? + #: Preferences.java:113 Romanian=Rumano @@ -1348,7 +1388,7 @@ Selected\ board\ depends\ on\ '{0}'\ core\ (not\ installed).=La tarjeta seleccio Selected\ board\ is\ not\ available=La tarjeta seleccionada no est\u00e1 disponible #: ../../../../../app/src/processing/app/Base.java:423 -Selected\ library\ is\ not\ available=La librer\u00eda seleccionada no est\u00e1 disponible +Selected\ library\ is\ not\ available=La biblioteca seleccionada no est\u00e1 disponible #: SerialMonitor.java:93 Send=Enviar @@ -1373,9 +1413,13 @@ Serial\ monitor\ not\ available\ while\ plotter\ is\ open=Monitor serie no dispo #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Puerto "{0}" no encontrado. \u00bfHas seleccionado el correcto del men\u00fa Herramientas > Puerto Serie? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=Puerto serie no seleccionado. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Puerto {0} no encontrado.\n\u00bfReintentar la subida con otro puerto? +Serial\ port\ {0}\ not\ found.=Puerto serie {0} no encontrado. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=Puertos Serie @@ -1393,6 +1437,9 @@ Settings\ issues=Cuestiones de ajustes #: Editor.java:641 Show\ Sketch\ Folder=Mostrar Carpeta de Programa +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=Mostrar marca temporal + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Mostrar salida detallada mientras\: @@ -1463,7 +1510,7 @@ Spanish=Espa\u00f1ol Specified\ folder/zip\ file\ does\ not\ contain\ a\ valid\ library=La carpeta o el archivo zip no contienen una librer\u00eda v\u00e1lida #: ../../../../../app/src/processing/app/Base.java:466 -Starting...=Arrancando... +Starting...=Iniciando... #: Base.java:540 Sunshine=Sol @@ -1497,7 +1544,7 @@ The\ Client\ class\ has\ been\ renamed\ EthernetClient.=La clase Cliente ha sido #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format -The\ IDE\ includes\ an\ updated\ {0}\ package,\ but\ you're\ using\ an\ older\ one.\nDo\ you\ want\ to\ upgrade\ {0}?=El IDE incluye el paquete {0} actualizado, pero usted est\u00e1 usando uno m\u00e1s viejo.\n\u00bf Quiere actualizar {0}? +The\ IDE\ includes\ an\ updated\ {0}\ package,\ but\ you're\ using\ an\ older\ one.\nDo\ you\ want\ to\ upgrade\ {0}?=El IDE incluye la actualizaci\u00f3n del paquete {0}, pero est\u00e1s usando uno m\u00e1s antiguo.\n\u00bfQuieres actualizar {0}? #: debug/Compiler.java:420 The\ Server\ class\ has\ been\ renamed\ EthernetServer.=La clase Servidor ha sido renombrada a EthernetServer @@ -1512,6 +1559,10 @@ The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=El archivo "{0}" necesita estar dentro\nde una carpeta de proyecto llamada "{1}".\n\u00bfCrearla, mover el fichero y continuar? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=La biblioteca "{0}" no puede ser usada\nLos nombres de las carpetas de bibliotecas deben empezar con una letra o n\u00famero, seguido de letras,\n. + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=La librer\u00eda "{0}" no se puede usar.\nLos nombres de librer\u00eda deben contener s\u00f3lo n\u00fameros y letras.\n(S\u00f3lo ASCII y sin espacios, y no pueden empezar con un n\u00famero) @@ -1536,8 +1587,8 @@ The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=El sketch ya contiene un a #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=La carpeta del programa ha desaparecido\nIntentar\u00e9 salvarlo de nuevo en la misma ubicaci\u00f3n\npero nada m\u00e1s que el c\u00f3digo se perder\u00e1. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=El nombre del sketch ha sido modificado.\nLos nombres de Sketch deben empezar con una letra o n\u00famero, seguido por letras,\nn\u00fameros, guiones, puntos y subrayados. La longitud m\u00e1xima es de 63 caracteres. #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=La carpeta de proyecto ya no existe. Arduino cambiar\u00e1 la ubicaci\u00f3n por defecto de proyectos, y crear\u00e1 una carpeta de proyecto nuevo si es necesario. Arduino entonces deja de hablar de s\u00ed mismo en tercera persona. @@ -1545,11 +1596,14 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=La carpeta sketchbook especificada contiene tu copia del IDE.\nPor favor, escoge otra carpeta diferente para tus bocetos. +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =Tema\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 -This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=Esta librer\u00eda no est\u00e1 listada en el Gestor de Librer\u00edas. No te ser\u00e1 posible reinstalarla desde aqu\u00ed.\n\u00bfEst\u00e1s seguro que quieres borrarla? +This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=Esta biblioteca no est\u00e1 listada en el Gestor de Bibliotecas. No ser\u00e1 posible reinstalarla desde aqu\u00ed.\n\u00bfEst\u00e1s seguro que quieres borrarla? #: ../../../../../app/src/processing/app/EditorStatus.java:349 -This\ report\ would\ have\ more\ information\ with\n"Show\ verbose\ output\ during\ compilation"\noption\ enabled\ in\ File\ ->\ Preferences.\n=Este reporte podr\u00eda tener m\u00e1s informaci\u00f3n con\n"Mostrar salida detallada durante la compilaci\u00f3n"\nopci\u00f3n habilitada en Archivo -> Preferencias.\n +This\ report\ would\ have\ more\ information\ with\n"Show\ verbose\ output\ during\ compilation"\noption\ enabled\ in\ File\ ->\ Preferences.\n=Este informe podr\u00eda contener m\u00e1s informaci\u00f3n con\n"Mostrar salida detallada durante la compilaci\u00f3n"\nopci\u00f3n habilitada en Archivo -> Preferencias.\n #: Base.java:535 Time\ for\ a\ Break=Es momento para un descanso. @@ -1595,17 +1649,17 @@ Unable\ to\ connect\ to\ {0}=Imposible conectar con {0} Unable\ to\ connect\:\ is\ the\ sketch\ using\ the\ bridge?=Imposible de conectar\: \u00bfest\u00e1 el sketch usando el puente? #: ../../../processing/app/NetworkMonitor.java:130 -Unable\ to\ connect\:\ retrying=Imposible conectarse\: reintentando +Unable\ to\ connect\:\ retrying=Imposible conectar\: reintentando #: ../../../processing/app/Editor.java:2526 -Unable\ to\ connect\:\ wrong\ password?=Imposible conectar\: contrase\u00f1a incorrecta? +Unable\ to\ connect\:\ wrong\ password?=Imposible conectar\: \u00bfcontrase\u00f1a incorrecta? #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:65 #, java-format -Unable\ to\ find\ {0}\ in\ {1}=No fue posible encontrar {0} en {1} +Unable\ to\ find\ {0}\ in\ {1}=Imposible encontrar {0} en {1} #: ../../../processing/app/Editor.java:2512 -Unable\ to\ open\ serial\ monitor=Imposible abrir el monitor serial +Unable\ to\ open\ serial\ monitor=Imposible abrir el monitor serie #: ../../../../../app/src/processing/app/Editor.java:2709 Unable\ to\ open\ serial\ plotter=Incapaz de abrir el plotter serie @@ -1625,7 +1679,7 @@ Undo=Deshacer Unhandled\ type\ {0}\ in\ context\ key\ {1}=Tipo {0} no gestionado en llave conxtexto {1} #: ../../../../../app//src/processing/app/Editor.java:2818 -Unknown\ board=Una plata desconocida +Unknown\ board=Placa desconocida #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format @@ -1654,10 +1708,10 @@ Updates\ available\ for\ some\ of\ your\ {0}boards{1}\ and\ {2}libraries{3}=Actu #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:86 #, java-format -Updates\ available\ for\ some\ of\ your\ {0}libraries{1}=Actualizaci\u00f3n disponible para alguna de tus {0}librer\u00edas{1} +Updates\ available\ for\ some\ of\ your\ {0}libraries{1}=Actualizaci\u00f3n disponible para alguna de tus {0}bibliotecas{1} #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:167 -Updating\ list\ of\ installed\ libraries=Actualizando lista de librer\u00edas instaladas +Updating\ list\ of\ installed\ libraries=Actualizando la lista de las bibliotecas instaladas #: EditorToolbar.java:41 Editor.java:545 Upload=Subir @@ -1739,7 +1793,7 @@ Visit\ Arduino.cc=Visita Arduino.cc #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:90 #, java-format -WARNING\:\ Category\ '{0}'\ in\ library\ {1}\ is\ not\ valid.\ Setting\ to\ '{2}'=ATENCI\u00d3N\: Categor\u00eda '{0}' en librer\u00eda {1} no es v\u00e1lida. Configurando a '{2}' +WARNING\:\ Category\ '{0}'\ in\ library\ {1}\ is\ not\ valid.\ Setting\ to\ '{2}'=ATENCI\u00d3N\: Categor\u00eda '{0}' de la biblioteca {1} no es v\u00e1lida. Configurando a '{2}' #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:93 #, java-format @@ -1879,6 +1933,11 @@ ignoring\ invalid\ font\ size\ {0}=ignorando tama\u00f1o de fuente incorrento {0 #: Editor.java:936 Editor.java:943 name\ is\ null=Nombre est\u00e1 vac\u00edo +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=No encontrado archivos de encabezado (.h) en {0} + #: Editor.java:932 serialMenu\ is\ null=serialMenu est\u00e1 vac\u00edo @@ -1916,7 +1975,7 @@ version\ {0}=versi\u00f3n {0} #: ../../../../../app/src/processing/app/Base.java:1201 #, java-format -{0}\ libraries={0} librer\u00edas +{0}\ libraries={0} bibliotecas #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:76 #, java-format @@ -1946,10 +2005,6 @@ version\ {0}=versi\u00f3n {0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: Nombre de placa invalido, debe ser de la forma "paquete\:arq\:placa" o "paquete\:arq\:placa\:opciones" -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: Opci\u00f3n no valida para opci\u00f3n "\u00b4{1}" de la tarjeta "{2}" - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: Opcion no valida para la tarjeta "{1}" @@ -1958,6 +2013,10 @@ version\ {0}=versi\u00f3n {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Opcion invalida, debe ser de la forma "nombre\=valor" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: Valor no valido para opci\u00f3n "{1}" para tarjeta "{2}" + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: Arquitectura desconocida diff --git a/arduino-core/src/processing/app/i18n/Resources_et.po b/arduino-core/src/processing/app/i18n/Resources_et.po index 2928a816e1c..49a808c636b 100644 --- a/arduino-core/src/processing/app/i18n/Resources_et.po +++ b/arduino-core/src/processing/app/i18n/Resources_et.po @@ -17,20 +17,23 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Cougar , 2012 # Cougar , 2013 # Cristian Maglie , 2016 # Georg, 2014 -# Hasso Tepper , 2016,2018 -# Lauri Võsandi , 2015 -# Lauri Võsandi , 2015 +# Hasso Tepper , 2016,2018-2019 +# d0fb82845e24c8a7bfd7dc19adbd26a7_a0669f4 <0e132a47bd8dd1a622a1f5718397d672_385>, 2015 +# d0fb82845e24c8a7bfd7dc19adbd26a7_a0669f4 <0e132a47bd8dd1a622a1f5718397d672_385>, 2015 # Triin Taveter , 2016 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2018-05-18 16:41+0000\n" +"PO-Revision-Date: 2019-09-04 17:34+0000\n" "Last-Translator: Hasso Tepper \n" "Language-Team: Estonian (http://www.transifex.com/mbanzi/arduino-ide-15/language/et/)\n" "MIME-Version: 1.0\n" @@ -629,6 +632,11 @@ msgstr "„{0}“ vana versiooni ei saanud eemaldada" msgid "Could not replace {0}" msgstr "{0} pole võimalik asendada" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Eelistuste faili kirjutamine ebaõnnestus: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Visandi arhiveerimine ebaõnnestus" @@ -684,6 +692,10 @@ msgstr "Vähenda taanet" msgid "Default" msgstr "Vaikeväärtus" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Vaiketeema" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Kustuta" @@ -859,6 +871,11 @@ msgstr "Viga Arduino andmekausta leidmisel." msgid "Error inside Serial.{0}()" msgstr "Viga Serial.{0}() sees." +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Viga teema „{0}“ laadimisel: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -878,6 +895,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "Viga jadapordi „{0}“ avamisel. Proovi abi otsida dokumentatsioonist aadressil http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Viga teekide indeksi parsimisel: {0}\nProovi menüüst avada teekide haldus ning teekide indeksit uuendada." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Viga teekide indeksi lugemisel: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Viga pakkide indeksi kataloogi lugemisel: {0}\n(võib olla on see õiguste puudumise probleem?)" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Viga eelistuste lugemisel" @@ -912,6 +948,10 @@ msgstr "Viga alglaaduri kirjutamisel." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Viga alglaaduri kirjutamisel: „{0}“ konfiguratsiooniparameeter puudub" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Viga alglaaduri kirjutamisel: palun vali jadaport." + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Viga kompileerimisel: „{0}“ konfiguratsiooniparameeter puudub" @@ -948,10 +988,6 @@ msgstr "Viga kontrollimisel/üleslaadimisel" msgid "Estonian" msgstr "Eesti" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Eesti (Eesti)" - #: Editor.java:516 msgid "Examples" msgstr "Näited" @@ -1155,8 +1191,8 @@ msgstr "MITTEKOMPATIIBEL" msgid "Ignore Case" msgstr "Tähesuuruse ignoreerimine" -#: Base.java:1058 -msgid "Ignoring bad library name" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" msgstr "Vigase nimega teegi eiramine" #: Base.java:1436 @@ -1220,10 +1256,10 @@ msgstr "Paigaldatud" msgid "Installing boards..." msgstr "Plaatide paigaldamine ..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "Teegi paigaldamine: {0}" +msgid "Installing library: {0}:{1}" +msgstr "Teegi {0} versiooni {1} paigaldamine" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1249,6 +1285,17 @@ msgstr "„{0}“ kataloogist leiti vigane teek: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "Vigane jutumärkide/ülakomade kasutamine: sulgevat [{0}] märki ei lietud." +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Vigane teegi versioon '{0}' kataloogis {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Vigane versioon {0}" + #: Preferences.java:102 msgid "Italian" msgstr "Itaalia" @@ -1281,10 +1328,10 @@ msgstr "Teek lisati su teekide hulka. Veendu selles „Lisa teek“ menüüs." msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "Teek ei saa kasutada korraga „src“ ja „utility“ kaustu. Vaata {0} üle." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "Teek on juba paigaldatud: {0} versioon {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "Teegi {0} versioon {1} on juba paigaldatud" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1701,10 +1748,10 @@ msgstr "Baasdokumentatsioon" msgid "Remove" msgstr "Eemalda" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "Teegi eemaldamine: {0}" +msgid "Removing library: {0}:{1}" +msgstr "Teegi {0} versiooni {1} eemaldamine" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1740,6 +1787,10 @@ msgstr "Asendus:" msgid "Retired" msgstr "Vananenud" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Kas proovime üleslaadimist mõne teise jadapordiga?" + #: Preferences.java:113 msgid "Romanian" msgstr "Rumeenia" @@ -1863,12 +1914,15 @@ msgid "" " Serial Port menu?" msgstr "Jadaporti „{0}“ ei leitud. Kas menüüs Tööriistad -> Jadaport on valitud õige port?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Ühtegi jadaporti pole valitud." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Jadaport „{0}“ puudub.\nKas proovime mõnda teist porti?" +msgid "Serial port {0} not found." +msgstr "Jadaporti {0} ei leitud." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1891,6 +1945,10 @@ msgstr "Probleem seadetega" msgid "Show Sketch Folder" msgstr "Näita visandite kausta" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Näita ajatempleid" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Detailsem väljund:" @@ -2062,6 +2120,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "\"{0}\" peab asuma visandite kaustas \"{1}\".\nKas tekitan selle kausta ning liigutan faili sinna?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Teeki „{0}“ ei saa kasutada.\nTeegi kausta nimi peab algama tähe või numbriga ning sisaldama ainult tähti,\nnumbreid, sidekriipse, punkte ja alakriipse. Nime maksimaalne pikkus on 63 sümbolit." + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2107,11 +2173,12 @@ msgid "" "but anything besides the code will be lost." msgstr "Visandi kaust on haihtunud.\nPüüan samasse kohta uuesti salvestada,\nkuid kõik peale selle koodi on kadunud." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "Visandi nime oli vaja muuta. Nimes tohib kasutada ainult ASCII tähti ja numbreid ning nimi peab olema lühem kui 64 sümbolit." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Visandi nime tuleb muuta.\nVisandi nimi peab algama tähe või numbriga ning sisaldama ainult tähti,\nnumbreid, sidekriipse, punkte ja alakriipse. Nime maksimaalne pikkus on 63 sümbolit." #: Base.java:259 msgid "" @@ -2128,6 +2195,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "Valitud visandite kaustas on su IDE koopia.\nPalun vali oma visandite hoidmiseks mõni teine kaust." +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Teema:" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2620,6 +2691,12 @@ msgstr "vigase fondi suuruse „{0}“ eiramine" msgid "name is null" msgstr "name on null" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "Kataloogist {0} ei leitud ühtegi päisefaili (.h)" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu on null" @@ -2633,7 +2710,7 @@ msgstr "valitud jadaporti {0} ei eksisteeri või plaat on ühendamata" #: ../../../processing/app/Base.java:389 #, java-format msgid "unknown option: {0}" -msgstr "tundmatu valikparameeteer: {0}" +msgstr "tundmatu parameeteer: {0}" #: Preferences.java:391 msgid "upload" @@ -2705,22 +2782,22 @@ msgstr "{0}: Vigane argument --pref võtmele, see peaks olema vormingus „pref= msgid "" "{0}: Invalid board name, it should be of the form \"package:arch:board\" or " "\"package:arch:board:options\"" -msgstr "{0}: Vigane plaadi nimi. See peab olema vormingus „pakk:arhitektuur:plaat“ või „pakk:arhitektuur:plaat:valikparameetrid“" - -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: Vigane parameeter plaadi „{2}“ valikparameetrile „{1}“" +msgstr "{0}: Vigane plaadi nimi. See peab olema vormingus „pakk:arhitektuur:plaat“ või „pakk:arhitektuur:plaat:parameetrid“" #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" -msgstr "{0}: Plaadi „{1}“ jaoks vigane valikparameeter" +msgstr "{0}: Plaadi „{1}“ jaoks vigane parameeter" #: ../../../processing/app/Base.java:502 #, java-format msgid "{0}: Invalid option, should be of the form \"name=value\"" -msgstr "{0}: Vigane valikparameeter, see peab olema vormingus „nimi=väärtus“" +msgstr "{0}: Vigane parameeter, see peab olema vormingus „nimi=väärtus“" + +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: Vigane väärtus plaadi „{2}“ parameetrile „{1}“" #: ../../../processing/app/Base.java:486 #, java-format diff --git a/arduino-core/src/processing/app/i18n/Resources_et.properties b/arduino-core/src/processing/app/i18n/Resources_et.properties index a1ad7b685e5..00d5796eb13 100644 --- a/arduino-core/src/processing/app/i18n/Resources_et.properties +++ b/arduino-core/src/processing/app/i18n/Resources_et.properties @@ -17,15 +17,18 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Cougar , 2012 # Cougar , 2013 # Cristian Maglie , 2016 # Georg, 2014 -# Hasso Tepper , 2016,2018 -# Lauri V\u00f5sandi , 2015 -# Lauri V\u00f5sandi , 2015 +# Hasso Tepper , 2016,2018-2019 +# d0fb82845e24c8a7bfd7dc19adbd26a7_a0669f4 <0e132a47bd8dd1a622a1f5718397d672_385>, 2015 +# d0fb82845e24c8a7bfd7dc19adbd26a7_a0669f4 <0e132a47bd8dd1a622a1f5718397d672_385>, 2015 # Triin Taveter , 2016 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-05-18 16\:41+0000\nLast-Translator\: Hasso Tepper \nLanguage-Team\: Estonian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/et/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: et\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2019-09-04 17\:34+0000\nLast-Translator\: Hasso Tepper \nLanguage-Team\: Estonian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/et/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: et\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (vajab Arduino taask\u00e4ivitamist) @@ -448,6 +451,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=\u201e{0}\u201c vana versiooni ei saan #, java-format Could\ not\ replace\ {0}={0} pole v\u00f5imalik asendada +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=Eelistuste faili kirjutamine eba\u00f5nnestus\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Visandi arhiveerimine eba\u00f5nnestus @@ -487,6 +494,9 @@ Decrease\ Indent=V\u00e4henda taanet #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=Vaikev\u00e4\u00e4rtus +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=Vaiketeema + #: EditorHeader.java:314 Sketch.java:591 Delete=Kustuta @@ -618,6 +628,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Viga Arduino andmekausta leidmisel. #, java-format Error\ inside\ Serial.{0}()=Viga Serial.{0}() sees. +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=Viga teema \u201e{0}\u201c laadimisel\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -632,6 +646,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Viga jadapordi \u201e{0}\u201c avamisel. #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=Viga jadapordi \u201e{0}\u201c avamisel. Proovi abi otsida dokumentatsioonist aadressil http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=Viga teekide indeksi parsimisel\: {0}\nProovi men\u00fc\u00fcst avada teekide haldus ning teekide indeksit uuendada. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=Viga teekide indeksi lugemisel\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=Viga pakkide indeksi kataloogi lugemisel\: {0}\n(v\u00f5ib olla on see \u00f5iguste puudumise probleem?) + #: Preferences.java:277 Error\ reading\ preferences=Viga eelistuste lugemisel @@ -657,6 +683,9 @@ Error\ while\ burning\ bootloader.=Viga alglaaduri kirjutamisel. #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Viga alglaaduri kirjutamisel\: \u201e{0}\u201c konfiguratsiooniparameeter puudub +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=Viga alglaaduri kirjutamisel\: palun vali jadaport. + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=Viga kompileerimisel\: \u201e{0}\u201c konfiguratsiooniparameeter puudub @@ -685,9 +714,6 @@ Error\ while\ verifying/uploading=Viga kontrollimisel/\u00fcleslaadimisel #: Preferences.java:93 Estonian=Eesti -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Eesti (Eesti) - #: Editor.java:516 Examples=N\u00e4ited @@ -838,8 +864,8 @@ INCOMPATIBLE=MITTEKOMPATIIBEL #: FindReplace.java:96 Ignore\ Case=T\u00e4hesuuruse ignoreerimine -#: Base.java:1058 -Ignoring\ bad\ library\ name=Vigase nimega teegi eiramine +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=Vigase nimega teegi eiramine #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Vigase nimega visandi eiramine @@ -883,9 +909,9 @@ Installed=Paigaldatud #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=Plaatide paigaldamine ... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=Teegi paigaldamine\: {0} +Installing\ library\:\ {0}\:{1}=Teegi {0} versiooni {1} paigaldamine #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -906,6 +932,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=\u201e{0}\u201c kataloogist leiti vigane #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=Vigane jutum\u00e4rkide/\u00fclakomade kasutamine\: sulgevat [{0}] m\u00e4rki ei lietud. +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=Vigane teegi versioon '{0}' kataloogis {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=Vigane versioon {0} + #: Preferences.java:102 Italian=Itaalia @@ -930,9 +965,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=Teek lisat #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=Teek ei saa kasutada korraga \u201esrc\u201c ja \u201eutility\u201c kaustu. Vaata {0} \u00fcle. -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=Teek on juba paigaldatud\: {0} versioon {1} +Library\ is\ already\ installed\:\ {0}\:{1}=Teegi {0} versioon {1} on juba paigaldatud #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=Reanumber\: @@ -1245,9 +1280,9 @@ Reference=Baasdokumentatsioon #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=Eemalda -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=Teegi eemaldamine\: {0} +Removing\ library\:\ {0}\:{1}=Teegi {0} versiooni {1} eemaldamine #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1275,6 +1310,9 @@ Replace\ with\:=Asendus\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=Vananenud +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=Kas proovime \u00fcleslaadimist m\u00f5ne teise jadapordiga? + #: Preferences.java:113 Romanian=Rumeenia @@ -1366,9 +1404,13 @@ Serial\ monitor\ not\ available\ while\ plotter\ is\ open=Jadapordi monitori ei #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Jadaporti \u201e{0}\u201c ei leitud. Kas men\u00fc\u00fcs T\u00f6\u00f6riistad -> Jadaport on valitud \u00f5ige port? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=\u00dchtegi jadaporti pole valitud. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Jadaport \u201e{0}\u201c puudub.\nKas proovime m\u00f5nda teist porti? +Serial\ port\ {0}\ not\ found.=Jadaporti {0} ei leitud. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=Jadapordid @@ -1386,6 +1428,9 @@ Settings\ issues=Probleem seadetega #: Editor.java:641 Show\ Sketch\ Folder=N\u00e4ita visandite kausta +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=N\u00e4ita ajatempleid + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Detailsem v\u00e4ljund\: @@ -1505,6 +1550,10 @@ The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?="{0}" peab asuma visandite kaustas "{1}".\nKas tekitan selle kausta ning liigutan faili sinna? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=Teeki \u201e{0}\u201c ei saa kasutada.\nTeegi kausta nimi peab algama t\u00e4he v\u00f5i numbriga ning sisaldama ainult t\u00e4hti,\nnumbreid, sidekriipse, punkte ja alakriipse. Nime maksimaalne pikkus on 63 s\u00fcmbolit. + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=Teeki \u201e{0}\u201c ei saa kasutada.\nTeekide nimed tohivad sisaldada ainult ASCII t\u00e4hti ja\nnumbreid ning peavad algama t\u00e4hega. @@ -1529,8 +1578,8 @@ The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=Visandis on \u201e{0}\u201 #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Visandi kaust on haihtunud.\nP\u00fc\u00fcan samasse kohta uuesti salvestada,\nkuid k\u00f5ik peale selle koodi on kadunud. -#: ../../../../../app/src/processing/app/SketchController.java:828 -The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.=Visandi nime oli vaja muuta. Nimes tohib kasutada ainult ASCII t\u00e4hti ja numbreid ning nimi peab olema l\u00fchem kui 64 s\u00fcmbolit. +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=Visandi nime tuleb muuta.\nVisandi nimi peab algama t\u00e4he v\u00f5i numbriga ning sisaldama ainult t\u00e4hti,\nnumbreid, sidekriipse, punkte ja alakriipse. Nime maksimaalne pikkus on 63 s\u00fcmbolit. #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=Visandite kausta pole enam.\nArduino hakkab kasutama vaikimisi kausta ning\nvajadusel tekitab sinna uue visandite kausta. @@ -1538,6 +1587,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=Valitud visandite kaustas on su IDE koopia.\nPalun vali oma visandite hoidmiseks m\u00f5ni teine kaust. +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =Teema\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=Seda teeki teekide halduris pole ja sealt seda uuesti paigaldada ei saa.\nOled sa kindel, et soovid selle teegi kustutada? @@ -1872,6 +1924,11 @@ ignoring\ invalid\ font\ size\ {0}=vigase fondi suuruse \u201e{0}\u201c eiramine #: Editor.java:936 Editor.java:943 name\ is\ null=name on null +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=Kataloogist {0} ei leitud \u00fchtegi p\u00e4isefaili (.h) + #: Editor.java:932 serialMenu\ is\ null=serialMenu on null @@ -1881,7 +1938,7 @@ the\ selected\ serial\ port\ {0}\ does\ not\ exist\ or\ your\ board\ is\ not\ co #: ../../../processing/app/Base.java:389 #, java-format -unknown\ option\:\ {0}=tundmatu valikparameeteer\: {0} +unknown\ option\:\ {0}=tundmatu parameeteer\: {0} #: Preferences.java:391 upload=\u00fcleslaadimise ajal @@ -1937,19 +1994,19 @@ version\ {0}=versioon {0} #: ../../../processing/app/Base.java:476 #, java-format -{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: Vigane plaadi nimi. See peab olema vormingus \u201epakk\:arhitektuur\:plaat\u201c v\u00f5i \u201epakk\:arhitektuur\:plaat\:valikparameetrid\u201c - -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: Vigane parameeter plaadi \u201e{2}\u201c valikparameetrile \u201e{1}\u201c +{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: Vigane plaadi nimi. See peab olema vormingus \u201epakk\:arhitektuur\:plaat\u201c v\u00f5i \u201epakk\:arhitektuur\:plaat\:parameetrid\u201c #: ../../../processing/app/Base.java:507 #, java-format -{0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: Plaadi \u201e{1}\u201c jaoks vigane valikparameeter +{0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: Plaadi \u201e{1}\u201c jaoks vigane parameeter #: ../../../processing/app/Base.java:502 #, java-format -{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Vigane valikparameeter, see peab olema vormingus \u201enimi\=v\u00e4\u00e4rtus\u201c +{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Vigane parameeter, see peab olema vormingus \u201enimi\=v\u00e4\u00e4rtus\u201c + +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: Vigane v\u00e4\u00e4rtus plaadi \u201e{2}\u201c parameetrile \u201e{1}\u201c #: ../../../processing/app/Base.java:486 #, java-format diff --git a/arduino-core/src/processing/app/i18n/Resources_eu.po b/arduino-core/src/processing/app/i18n/Resources_eu.po index b16ce6e447f..ce6ecb67480 100644 --- a/arduino-core/src/processing/app/i18n/Resources_eu.po +++ b/arduino-core/src/processing/app/i18n/Resources_eu.po @@ -17,10 +17,17 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: +# Asier Iturralde Sarasola , 2018 # @atzerritik, 2014 # Ivan Barquero , 2014 +# iñigo Gebara , 2018 # Ivan Barquero , 2014 -# José Miguel Andonegi , 2017 +# José Miguel Andonegi , 2017-2019 +# Jose Zabala , 2018 +# Jose Zabala , 2018 # Zylu , 2014 # Rubén Garciandía , 2016 msgid "" @@ -28,7 +35,7 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-12-26 14:20+0000\n" +"PO-Revision-Date: 2019-06-30 22:48+0000\n" "Last-Translator: José Miguel Andonegi \n" "Language-Team: Basque (http://www.transifex.com/mbanzi/arduino-ide-15/language/eu/)\n" "MIME-Version: 1.0\n" @@ -39,38 +46,38 @@ msgstr "" #: Preferences.java:358 Preferences.java:374 msgid " (requires restart of Arduino)" -msgstr "(Arduinoa berrabiarazi behar da)" +msgstr " (Arduinoa berrabiarazi behar da)" #: ../../../processing/app/debug/Compiler.java:529 #, java-format msgid " Not used: {0}" -msgstr "Erabil gabe: {0}" +msgstr " Erabili gabe: {0}" #: ../../../processing/app/debug/Compiler.java:525 #, java-format msgid " Used: {0}" -msgstr "Erabiltzen: {0}" +msgstr " Erabilia: {0}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:558 msgid "" "'Keyboard' not found. Does your sketch include the line '#include " "'?" -msgstr "Ezin da aurkitu 'Teklatua'. Zure eskemak '#include ' lerroa dauka?" +msgstr "Ezin da aurkitu 'Teklatua'. Zure programak '#include ' lerroa dauka?" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:553 msgid "" "'Mouse' not found. Does your sketch include the line '#include '?" -msgstr "Ezin da aurkitu 'Sagua'. Zure eskemak '#include ' lerroa dauka?" +msgstr "Ezin da aurkitu 'Sagua'. Zure programak '#include ' lerroa dauka?" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:61 msgid "" "'arch' folder is no longer supported! See http://goo.gl/gfFJzU for more " "information" -msgstr "(zaharra)" +msgstr "'arch' karpetak ez dauka euskarririk jada! Ikusi http://goo.gl/gfFJzU informazio gehiagorako" #: Preferences.java:478 msgid "(edit only when Arduino is not running)" -msgstr "(soilik editatu Arduino lanean ez dagoenean )" +msgstr "(Arduino exekutatzen ari ez denean soilik editatu)" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 msgid "(legacy)" @@ -78,13 +85,13 @@ msgstr "(zaharra)" #: ../../../processing/app/helpers/CommandlineParser.java:149 msgid "--curdir no longer supported" -msgstr "Dagoeneko -curdir ez da onartzen" +msgstr "Dagoeneko --curdir ez da onartzen" #: ../../../processing/app/Base.java:468 msgid "" "--verbose, --verbose-upload and --verbose-build can only be used together " "with --verify or --upload" -msgstr "" +msgstr "--verbose, --verbose-upload eta --verbose-build erabiltzeko beharrezkoa da --verify edo --upload erabiltzea" #: Sketch.java:746 msgid ".pde -> .ino" @@ -96,12 +103,12 @@ msgid "" " font: 11pt \"Lucida Grande\"; margin-top: 8px } Do you " "want to save changes to this sketch
before closing?

If you don't " "save, your changes will be lost." -msgstr " Eskema honetarako aldaketak gorde nahi dituzu
itxi aurretik?

Ez baduzu gordetzen, zure aldaketak galduko dira." +msgstr " Programa honi egindako aldaketak gorde nahi dituzu
itxi aurretik?

Ez baduzu gordetzen, zure aldaketak galduko dira." #: Editor.java:2169 #, java-format msgid "A folder named \"{0}\" already exists. Can't open sketch." -msgstr "Dagoeneko {0} izeneko karpeta bat existitzen da. Ezin da eskema ireki." +msgstr "Dagoeneko {0} izeneko karpeta bat existitzen da. Ezin da programa ireki." #: Base.java:2690 #, java-format @@ -112,7 +119,7 @@ msgstr "Dagoeneko {0} izeneko liburutegi bat existitzen da" msgid "" "A new version of Arduino is available,\n" "would you like to visit the Arduino download page?" -msgstr "Arduinoren bertsio berri bat eskuragarri dago,\nArduinoren deskargako orria bisitatzea nahi duzu?" +msgstr "Arduinoren bertsio berri bat eskuragarri dago,\nArduinoren deskargen orria bisitatu nahi duzu?" #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format @@ -121,7 +128,7 @@ msgstr "{0} pakete berriagoa eskuragarri dago" #: ../../../../../app/src/processing/app/Base.java:2307 msgid "A subfolder of your sketchbook is not a valid library" -msgstr "Zure eskema bildumaren azpikarpeta bat ez da liburutegi onargarria" +msgstr "Zure programa bildumaren azpikarpeta bat ez da liburutegi onargarria" #: Editor.java:1116 msgid "About Arduino" @@ -129,15 +136,15 @@ msgstr "Arduinori buruz" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 msgid "Acoli" -msgstr "" +msgstr "Acholiera" #: ../../../../../app/src/processing/app/Base.java:1177 msgid "Add .ZIP Library..." -msgstr "Erantsi .zip liburutegia..." +msgstr "Gehitu .zip liburutegia..." #: Editor.java:650 msgid "Add File..." -msgstr "Fitxategia gehitu..." +msgstr "Gehitu fitxategia..." #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:73 msgid "Additional Boards Manager URLs" @@ -145,7 +152,7 @@ msgstr "Plaka kudeatzaile gehigarrien URLak" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:268 msgid "Additional Boards Manager URLs: " -msgstr "Plaka kudeatzaile gehigarrien URLak:" +msgstr "Plaka kudeatzaile gehigarrien URLak: " #: ../../../../../app/src/processing/app/Preferences.java:161 msgid "Afrikaans" @@ -153,7 +160,7 @@ msgstr "Afrikaansa" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 msgid "Aggressively cache compiled core" -msgstr "" +msgstr "Cachetik azkar konpilatutako nukleoa" #: ../../../processing/app/Preferences.java:96 msgid "Albanian" @@ -170,7 +177,7 @@ msgid "" "An error occurred while trying to fix the file encoding.\n" "Do not attempt to save this sketch as it may overwrite\n" "the old version. Use Open to re-open the sketch and try again.\n" -msgstr "Arazo bat gertatu da fitxategiaren kodifikazioa konpontzen saiatzean.\nEz saiatu eskema hau gordetzen, aurreko bertsioa gainidatzi baitezake.\nZabaldu sakatu eskema berriro zabaltzeko eta saiatu berriro.\n" +msgstr "Arazo bat gertatu da fitxategiaren kodifikazioa konpontzen saiatzean.\nEz saiatu programa hau gordetzen, aurreko bertsioa gainidatzi baitezake.\nIreki sakatu programa berriro zabaltzeko eta saiatu berriro.\n" #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:99 msgid "An error occurred while updating libraries index!" @@ -178,23 +185,23 @@ msgstr "Errorea gertatu da liburutegien indizea eguneratzean" #: ../../../processing/app/BaseNoGui.java:528 msgid "An error occurred while uploading the sketch" -msgstr "Errorea gertatu da eskema kargatzerakoan" +msgstr "Errorea gertatu da programa kargatzerakoan" #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 msgid "An error occurred while verifying the sketch" -msgstr "Errorea gertatu da eskema egiaztatzerakoan" +msgstr "Errorea gertatu da programa egiaztatzerakoan" #: ../../../processing/app/BaseNoGui.java:521 msgid "An error occurred while verifying/uploading the sketch" -msgstr "Errorea gertatu da eskema egiaztatzerakoan edo kargatzerakoan" +msgstr "Errorea gertatu da programa egiaztatzerakoan edo kargatzerakoan" #: Base.java:228 msgid "" "An unknown error occurred while trying to load\n" "platform-specific code for your machine." -msgstr "Akats ezezagun bat gertatu da kargatzen saiatzerakoan\nkodigoa zure makonaren plataformako espezifikoa da." +msgstr "Errore ezezagun bat gertatu da zure makinan\nplataforma-espezifikoa den kodea kargatzen saiatzean." #: Preferences.java:85 msgid "Arabic" @@ -206,26 +213,26 @@ msgstr "Aragoiera" #: tools/Archiver.java:48 msgid "Archive Sketch" -msgstr "Eskema gorde" +msgstr "Artxibatu programa" #: tools/Archiver.java:109 msgid "Archive sketch as:" -msgstr "Gorde eskema honela:" +msgstr "Artxibatu programa honela:" #: tools/Archiver.java:139 msgid "Archive sketch canceled." -msgstr "Eskemaren gordetzea bertan behera utzi da.." +msgstr "Programa artxibatzea bertan behera utzi da." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format msgid "Archiving built core (caching) in: {0}" -msgstr "" +msgstr "Cachetik sortutako nukleoa hemen gordetzen: {0}" #: tools/Archiver.java:75 msgid "" "Archiving the sketch has been canceled because\n" "the sketch couldn't save properly." -msgstr "Eskemaren gordetzea bertan behera utzi da\neskema ezin baita ondo gorde." +msgstr "Programa artxibatzea bertan behera utzi da\nprograma ezin izan delako ondo gorde." #: ../../../../../arduino-core/src/processing/app/I18n.java:24 msgid "Arduino" @@ -233,64 +240,64 @@ msgstr "Arduino" #: ../../../processing/app/I18n.java:83 msgid "Arduino ARM (32-bits) Boards" -msgstr "Arduino ARM (32-bit) Plakak" +msgstr "Arduino ARM (32-bit) plakak" #: ../../../processing/app/I18n.java:82 msgid "Arduino AVR Boards" -msgstr "Arduino AVR Plakak" +msgstr "Arduino AVR plakak" #: Editor.java:2137 msgid "" "Arduino can only open its own sketches\n" "and other files ending in .ino or .pde" -msgstr "Arduinok .ino edo .pde\namaiera duten fitxategiak soilik ireki ditzake" +msgstr "Arduinok bere programa propioak eta .ino edo .pde\namaiera duten beste fitxategiak soilik ireki ditzake" #: Base.java:1682 msgid "" "Arduino cannot run because it could not\n" "create a folder to store your settings." -msgstr "Arduinok ezin du funtzionatu ezin duelako karpeta\nbat zure konfigurazioa gordetzeko sortu." +msgstr "Arduinok ezin du funtzionatu ezin izan duelako\nzure ezarpenak gordetzeko karpeta sortu." #: Base.java:1889 msgid "" "Arduino cannot run because it could not\n" "create a folder to store your sketchbook." -msgstr "Arduinok ezin du funtzionatu ezin duelako karpeta\nbat sortu zure eskema bilduman." +msgstr "Arduinok ezin du funtzionatu ezin izan duelako\nzure programa bilduma gordetzeko karpeta sortu." #: ../../../processing/app/EditorStatus.java:471 msgid "Arduino: " -msgstr "Arduino:" +msgstr "Arduino: " #: Sketch.java:588 #, java-format msgid "Are you sure you want to delete \"{0}\"?" -msgstr "\"{0}\" ezabatu nahi duzula seguru zara?" +msgstr "Ziur zaude \"{0}\" ezabatu nahi duzula?" #: Sketch.java:587 msgid "Are you sure you want to delete this sketch?" -msgstr "Zur eskema hau ezabatu nahi duzula?" +msgstr "Ziur zaude programa hau ezabatu nahi duzula?" #: ../../../processing/app/Base.java:356 msgid "Argument required for --board" -msgstr "Argumentua beharrezkoa da --plakarako" +msgstr "Argumentua beharrezkoa da --board aukerarentzat" #: ../../../processing/app/Base.java:363 msgid "Argument required for --port" -msgstr "Argumentua beharrezkoa da --atakarako" +msgstr "Argumentua beharrezkoa da --port aukerarentzat" #: ../../../processing/app/Base.java:377 msgid "Argument required for --pref" -msgstr "Argumentua beharrezkoa da --pref arako" +msgstr "Argumentua beharrezkoa da --pref aukerarentzat" #: ../../../processing/app/Base.java:384 msgid "Argument required for --preferences-file" -msgstr "Argumentua beharrezkoa da --Hobespen fitxategirako" +msgstr "Argumentua beharrezkoa da --preferences-file aukerarentzat" #: ../../../processing/app/helpers/CommandlineParser.java:76 #: ../../../processing/app/helpers/CommandlineParser.java:83 #, java-format msgid "Argument required for {0}" -msgstr "Argumentua beharrezkoa da {0}-rako" +msgstr "Argumentua beharrezkoa da {0} aukerarentzat" #: ../../../processing/app/Preferences.java:137 msgid "Armenian" @@ -306,7 +313,7 @@ msgstr "Baimena beharrezkoa" #: tools/AutoFormat.java:91 msgid "Auto Format" -msgstr "Formatu Automatikoa." +msgstr "Formatu automatikoa" #: tools/AutoFormat.java:944 msgid "Auto Format finished." @@ -322,11 +329,11 @@ msgstr "Automatikoa" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:474 msgid "Automatic proxy configuration URL:" -msgstr "Proxy-aren ezarpen automatikoen URL-a:" +msgstr "Proxy-aren ezarpen automatikoen URLa:" #: SerialMonitor.java:110 msgid "Autoscroll" -msgstr "Autoscroll" +msgstr "Korritze automatikoa" #: Editor.java:2619 #, java-format @@ -335,7 +342,7 @@ msgstr "Errore lerroa: {0}" #: Editor.java:2136 msgid "Bad file selected" -msgstr "Hautatutako fitxategi txarra da" +msgstr "Fitxategi okerra hautatuta" #: ../../../processing/app/Preferences.java:149 msgid "Basque" @@ -370,11 +377,11 @@ msgstr "Plaka {0} ezezaguna ({1} plataforma, {2} paketea)" msgid "" "Board {0}:{1}:{2} doesn''t define a ''build.board'' preference. Auto-set to:" " {3}" -msgstr "Plaka {0}:{1}:{2} ez du definitzen ''build.board'' lehentasuna. Auto-seta: {3} etara" +msgstr "{0}:{1}:{2} plakak ez du ''build.board'' hobespena definitzen. Balio hau ezarri da automatikoki: {3}" #: ../../../processing/app/EditorStatus.java:472 msgid "Board: " -msgstr "Plaka:" +msgstr "Plaka: " #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 msgid "Boards Manager" @@ -391,7 +398,7 @@ msgstr "Pakete honetan sartutako plakak:" #: ../../../processing/app/debug/Compiler.java:1273 #, java-format msgid "Bootloader file specified but missing: {0}" -msgstr "" +msgstr "Abiarazte-kudeatzailearen fitxategia zehaztu da baina ez dago: {0}" #: ../../../processing/app/Preferences.java:140 msgid "Bosnian" @@ -399,19 +406,19 @@ msgstr "Bosniera" #: SerialMonitor.java:112 msgid "Both NL & CR" -msgstr "NL & CR Biak" +msgstr "NL & CR biak" #: Preferences.java:81 msgid "Browse" -msgstr "Bilatu" +msgstr "Arakatu" #: ../../../processing/app/Sketch.java:1530 msgid "Build options changed, rebuilding all" -msgstr "Konpilazio-aukerak aldatu dira, guztia berkonpilatzen" +msgstr "Konpilazio-aukerak aldatu dira, guztia berriz konpilatzen" #: ../../../../../app/src/processing/app/Base.java:1210 msgid "Built-in Examples" -msgstr "" +msgstr "Berezko adibideak" #: ../../../processing/app/Preferences.java:80 msgid "Bulgarian" @@ -423,35 +430,35 @@ msgstr "Myanmarniera" #: Editor.java:708 msgid "Burn Bootloader" -msgstr "Idatzi Bootloader-a" +msgstr "Kargatu abiarazte-kudeatzailea" #: Editor.java:2504 msgid "Burning bootloader to I/O Board (this may take a minute)..." -msgstr "Bootloader-a S/I plakaN idazten (honek minutu bat har dezake)..." +msgstr "Abiarazte-kudeatzailea S/I plakan kargatzen (honek minutu bat har dezake)..." #: ../../../../../arduino-core/src/cc/arduino/contributions/DownloadableContributionsDownloader.java:91 msgid "" "CRC doesn't match, file is corrupted. It may be a temporary problem, please " "retry later." -msgstr "" +msgstr "CRC ez dator bat, fitxategia hondatuta dago. Behin-behineko arazoa izan daiteke, saiatu beranduago." #: ../../../processing/app/Base.java:379 #, java-format msgid "Can only pass one of: {0}" -msgstr "" +msgstr "Hauetako bat pasa daiteke soilik: {0}" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 msgid "Can't enable external editor" -msgstr "" +msgstr "Ezin da gaitu kanpoko editorea" #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 msgid "Can't find the sketch in the specified path" -msgstr "Ezin da aurkitu eskema zehaztutako bidean" +msgstr "Ezin da aurkitu programa zehaztutako bidean" #: ../../../processing/app/Preferences.java:92 msgid "Canadian French" -msgstr "Canada-frantses" +msgstr "Kanadako frantsesa" #: Preferences.java:79 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2064 Editor.java:2145 Editor.java:2465 @@ -460,7 +467,7 @@ msgstr "Utzi" #: ../../../processing/app/Base.java:465 msgid "Cannot specify any sketch files" -msgstr "Ezin da eskema fitxategirik zehaztu" +msgstr "Ezin da programa fitxategirik zehaztu" #: SerialMonitor.java:112 msgid "Carriage return" @@ -472,11 +479,11 @@ msgstr "Katalana" #: Preferences.java:419 msgid "Check for updates on startup" -msgstr "Eguneratzeak bilatzen ditu Hasieran" +msgstr "Egiaztatu eguneratzerik baden abioan" #: ../../../processing/app/Preferences.java:142 msgid "Chinese (China)" -msgstr "Txinera(Txina)" +msgstr "Txinera (Txina)" #: ../../../processing/app/Preferences.java:144 msgid "Chinese (Taiwan)" @@ -484,15 +491,15 @@ msgstr "Txinera (Taiwan)" #: ../../../processing/app/Preferences.java:143 msgid "Chinese (Taiwan) (Big5)" -msgstr "Txinera (Taiwan)(Big5)" +msgstr "Txinera (Taiwan) (Big5)" #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 msgid "Clear output" -msgstr "" +msgstr "Garbitu irteera" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 msgid "Click for a list of unofficial boards support URLs" -msgstr "" +msgstr "Klik egin ofizialak ez diren plaken laguntza-URL zerrenda ikusteko" #: Editor.java:521 Editor.java:2024 msgid "Close" @@ -500,23 +507,23 @@ msgstr "Itxi" #: Editor.java:1208 Editor.java:2749 msgid "Comment/Uncomment" -msgstr "Iruzkina / iruzkina desegitea" +msgstr "Iruzkindu / Desiruzkindu" #: ../../../../../arduino-core/src/processing/app/I18n.java:30 msgid "Communication" -msgstr "" +msgstr "Komunikazioa" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 msgid "Compiler warnings: " -msgstr "" +msgstr "Konpiladorearen abisuak: " #: Sketch.java:1608 Editor.java:1890 msgid "Compiling sketch..." -msgstr "Eskema konpilatzen..." +msgstr "Programa konpilatzen..." #: ../../../../../arduino-core/src/processing/app/I18n.java:27 msgid "Contributed" -msgstr "" +msgstr "Kolaborazio bidezkoak" #: Editor.java:1157 Editor.java:2707 msgid "Copy" @@ -524,131 +531,136 @@ msgstr "Kopiatu" #: Editor.java:1177 Editor.java:2723 msgid "Copy as HTML" -msgstr "HTMLa bezala kopia" +msgstr "Kopiatu HTML bezala" #: ../../../processing/app/EditorStatus.java:455 msgid "Copy error messages" -msgstr "Errore-mezua kopia ezazu" +msgstr "Kopiatu errore-mezuak" #: Editor.java:1165 Editor.java:2715 msgid "Copy for Forum" -msgstr "Fororako Kopia" +msgstr "Kopiatu Fororako" #: Sketch.java:1089 #, java-format msgid "Could not add ''{0}'' to the sketch." -msgstr "Ezin izango litzateke gehitu ''{0}'' eskemara." +msgstr "Ezin izan da ''{0}'' gehitu programara." #: Editor.java:2188 msgid "Could not copy to a proper location." -msgstr "Ezin izan zen kopiatu kokapen egokian." +msgstr "Ezin izan da kopiatu kokapen egokian." #: ../../../../../arduino-core/src/processing/app/Sketch.java:342 #, java-format msgid "Could not create directory \"{0}\"" -msgstr "" +msgstr "Ezin izan da \"{0}\" direktorioa sortu" #: Editor.java:2179 msgid "Could not create the sketch folder." -msgstr "Ezin da eskema karpeta sortu." +msgstr "Ezin izan da programa karpeta sortu." #: Editor.java:2206 msgid "Could not create the sketch." -msgstr "Ezin da eskema sortu" +msgstr "Ezin izan da programa sortu" #: Sketch.java:617 #, java-format msgid "Could not delete \"{0}\"." -msgstr " \"{0}\" ezin da ezabatu" +msgstr "Ezin izan da \"{0}\" ezabatu." #: Sketch.java:1066 #, java-format msgid "Could not delete the existing ''{0}'' file." -msgstr "Ezin izango litzateke ezabatu oraingoa ''{0}'' fitxategia." +msgstr "Ezin izan da ezabatu lehendik dagoen ''{0}'' fitxategia." #: ../../../processing/app/debug/TargetPlatform.java:74 #, java-format msgid "Could not find boards.txt in {0}. Is it pre-1.5?" -msgstr "Ezin du boards.tx-ik aurkitu {0}-etan. -1,5 bertsioaren aurrekoa da ?" +msgstr "Ezin izan da boards.txt aurkitu {0}-(e)n. 1.5 bertsioaren aurrekoa da?" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:282 #, java-format msgid "Could not find tool {0}" -msgstr "Ez du {0} tresna aurkitzen" +msgstr "Ezin izan da {0} tresna aurkitu" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:278 #, java-format msgid "Could not find tool {0} from package {1}" -msgstr "Ez du pakete {1}-eko tresna {0} aurkitzen" +msgstr "Ezin izan da {1} paketeko {0} tresna aurkitu" #: Base.java:1934 #, java-format msgid "" "Could not open the URL\n" "{0}" -msgstr "URL-a ezin da ireki\n{0}" +msgstr "Ezin izan da URLa ireki\n{0}" #: Base.java:1958 #, java-format msgid "" "Could not open the folder\n" "{0}" -msgstr "Karpeta ezin da ireki\n{0}" +msgstr "Ezin izan da karpeta ireki\n{0}" #: Sketch.java:1769 msgid "" "Could not properly re-save the sketch. You may be in trouble at this point,\n" "and it might be time to copy and paste your code to another text editor." -msgstr "Ezin izan da eskema birgorde. Egindako lana ez galtzeko\ngomendagarria da zure kodea kopiatzea eta beste testu-editore batean itsastea." +msgstr "Ezin izan da programa berriz gorde. Egindako lana ez galtzeko\ngomendagarria da zure kodea kopiatzea eta beste testu-editore batean itsastea." #: Sketch.java:1768 msgid "Could not re-save sketch" -msgstr "Ezin izan da eskema birgorde" +msgstr "Ezin izan da programa berriz gorde" #: Theme.java:52 msgid "" "Could not read color theme settings.\n" "You'll need to reinstall Arduino." -msgstr "" +msgstr "Ezin izan dira kolore itxuraren ezarpenak irakurri.\nArduino berriz instalatu beharko duzu." #: Preferences.java:219 msgid "" "Could not read default settings.\n" "You'll need to reinstall Arduino." -msgstr "Ezarpen lehenetsiak ezin dira irakurri.\nArduino Instalatu berriro behar izango duzu." +msgstr "Ezin izan dira ezarpen lehenetsiak irakurri.\nArduino berriz instalatu beharko duzu." #: Base.java:2482 #, java-format msgid "Could not remove old version of {0}" -msgstr "Ezin izango litzateke kendu bertsio zaharra{0}" +msgstr "Ezin izan da {0}(r)en bertsio zaharra kendu" #: Base.java:2492 #, java-format msgid "Could not replace {0}" -msgstr "Ezin izango luke ordeztu {0}" +msgstr "Ezin izan da {0} ordeztu" + +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Ezin izan da hobespenen fitxategia idatzi: {0}" #: tools/Archiver.java:74 msgid "Couldn't archive sketch" -msgstr "Ezin izan da eskema artxibatu" +msgstr "Ezin izan da programa artxibatu" #: Sketch.java:1647 msgid "Couldn't determine program size: {0}" -msgstr "Ezin izango luke erabaki programa-neurria: {0}" +msgstr "Ezin izan da programaren tamaina zehaztu: {0}" #: Sketch.java:616 msgid "Couldn't do it" -msgstr "Ezin da egin" +msgstr "Ezin izan da egin" #: debug/BasicUploader.java:209 msgid "" "Couldn't find a Board on the selected port. Check that you have the correct " "port selected. If it is correct, try pressing the board's reset button " "after initiating the upload." -msgstr "Ezin du inongo plakarik aurkitu aukeratutako atakan. Ataka zuzena duzula hautatuta egiaztatu ezazu. Zuzena bada, kargatu hasi ondoren reset-botoia sakatzen du." +msgstr "Ezin izan da plakarik aurkitu hautatutako atakan. Egiaztatu ataka zuzena hautatu duzula. Zuzena bada, saiatu plaka berrezartzeko botoia sakatzen karga hasi ondoren." #: ../../../processing/app/Preferences.java:82 msgid "Croatian" -msgstr " kroaziera" +msgstr "Kroaziera" #: Editor.java:1149 Editor.java:2699 msgid "Cut" @@ -656,31 +668,35 @@ msgstr "Ebaki" #: ../../../../../app/src/processing/app/Preferences.java:119 msgid "Czech (Czech Republic)" -msgstr "" +msgstr "Txekiera (Txekiar Errepublika)" #: ../../../../../app/src/processing/app/Preferences.java:120 msgid "Danish (Denmark)" -msgstr "" +msgstr "Daniera (Danimarka)" #: ../../../../../arduino-core/src/processing/app/I18n.java:36 msgid "Data Processing" -msgstr "" +msgstr "Datu prozesaketa" #: ../../../../../arduino-core/src/processing/app/I18n.java:35 msgid "Data Storage" -msgstr "" +msgstr "Datu prozesaketa" #: ../../../../../app/src/processing/app/Editor.java:1386 msgid "Decrease Font Size" -msgstr "" +msgstr "Txikiagotu letra-tamaina" #: Editor.java:1224 Editor.java:2765 msgid "Decrease Indent" -msgstr "Txikitu koska" +msgstr "Txikiagotu koska" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 msgid "Default" -msgstr "" +msgstr "Lehenetsia" + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Lehenetsitako itxura" #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" @@ -688,92 +704,92 @@ msgstr "Ezabatu" #: ../../../../../arduino-core/src/processing/app/I18n.java:33 msgid "Device Control" -msgstr "" +msgstr "Gailuaren kontrola" #: debug/Uploader.java:199 msgid "" "Device is not responding, check the right serial port is selected or RESET " "the board right before exporting" -msgstr "Gailuak ez du erantzuten, egiaztatzen du serieko ataka zuzena hau aukeratuta edo resetea plaka esportatu baino lehen" +msgstr "Gailuak ez du erantzuten, egiaztatu serieko ataka zuzena hautatuta dagoela edo BERREZARRI plaka esportatu baino lehen" #: tools/FixEncoding.java:57 msgid "Discard all changes and reload sketch?" -msgstr "Baztertu aldaketa guztiak eta eskema berriro kargatu?" +msgstr "Baztertu aldaketa guztiak eta programa berriro kargatu?" #: ../../../../../arduino-core/src/processing/app/I18n.java:29 msgid "Display" -msgstr "" +msgstr "Bistaratu" #: ../../../processing/app/Preferences.java:438 msgid "Display line numbers" -msgstr "Lerro-zenbakiak erakusten ditu" +msgstr "Bistaratu lerro-zenbakiak" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:195 #, java-format msgid "" "Do you want to remove {0}?\n" "If you do so you won't be able to use {0} any more." -msgstr "" +msgstr "{0} kendu nahi duzu?\nHala eginez gero ezingo duzu {0} gehiago erabili." #: Editor.java:2064 msgid "Don't Save" -msgstr "Ez Gorde" +msgstr "Ez gorde" #: Editor.java:2275 Editor.java:2311 msgid "Done Saving." -msgstr "Gordeta bukatu" +msgstr "Gordetzea burutu da." #: Editor.java:2510 msgid "Done burning bootloader." -msgstr "Bootloader-erreketa bukatuta." +msgstr "Abiarazte-kudeatzailea kargatzea burutu da." #: ../../../processing/app/BaseNoGui.java:507 #: ../../../processing/app/BaseNoGui.java:552 msgid "Done compiling" -msgstr "" +msgstr "Konpilazioa burutu da" #: Editor.java:1911 Editor.java:1928 msgid "Done compiling." -msgstr "konpilazio eginda." +msgstr "Konpilazioa burutu da." #: Editor.java:2564 msgid "Done printing." -msgstr "Inprimaketa bukatu du." +msgstr "Inprimatzea burutu da." #: ../../../processing/app/BaseNoGui.java:514 msgid "Done uploading" -msgstr "" +msgstr "Kargatzea burutu da" #: Editor.java:2395 Editor.java:2431 msgid "Done uploading." -msgstr "Datu-karga bukatuta du." +msgstr "Kargatzea burutu da." #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:105 #, java-format msgid "Downloaded {0}kb of {1}kb." -msgstr "" +msgstr "{0}kb / {1}kb deskargatuta." #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:107 msgid "Downloading boards definitions." -msgstr "" +msgstr "Plaken definizioak deskargatzen." #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:86 msgid "Downloading libraries index..." -msgstr "" +msgstr "Liburutegien indizea deskargatzen..." #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:115 #, java-format msgid "Downloading library: {0}" -msgstr "" +msgstr "Liburutegia deskargatzen: {0}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:318 msgid "Downloading platforms index..." -msgstr "" +msgstr "Plataformen indizea deskargatzen..." #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:113 #, java-format msgid "Downloading tools ({0}/{1})." -msgstr "" +msgstr "Tresnak deskargatzen ({0}/{1})." #: Preferences.java:91 msgid "Dutch" @@ -785,7 +801,7 @@ msgstr "Nederlandera (Holanda)" #: ../../../../../app/src/processing/app/Editor.java:1309 msgid "Edison Help" -msgstr "" +msgstr "Edisonen laguntza" #: Editor.java:1130 msgid "Edit" @@ -793,32 +809,32 @@ msgstr "Editatu" #: Preferences.java:370 msgid "Editor font size: " -msgstr " Letra-tamaina Editorea:" +msgstr "Editorearen letra-tamaina: " #: Preferences.java:353 msgid "Editor language: " -msgstr "Hizkuntza editorea:" +msgstr "Editorearen lengoaia: " #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:322 msgid "Enable Code Folding" -msgstr "" +msgstr "Gaitu kode tolesketa" #: Preferences.java:92 msgid "English" -msgstr "Ingeles" +msgstr "Ingelesa" #: ../../../processing/app/Preferences.java:145 msgid "English (United Kingdom)" -msgstr "Ingeles ( Ingalaterra )" +msgstr "Ingelesa (Erresuma Batua)" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:269 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:271 msgid "Enter a comma separated list of urls" -msgstr "" +msgstr "Sartu komaz banatutako URLen zerrenda" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:96 msgid "Enter additional URLs, one for each row" -msgstr "" +msgstr "Sartu URL gehigarriak, bat errenkadako" #: Editor.java:1062 msgid "Environment" @@ -828,188 +844,212 @@ msgstr "Ingurunea" #: Sketch.java:496 Sketch.java:503 Sketch.java:526 Sketch.java:543 #: Editor.java:2167 Editor.java:2178 Editor.java:2188 Editor.java:2206 msgid "Error" -msgstr "Errore" +msgstr "Errorea" #: Sketch.java:1065 Sketch.java:1088 msgid "Error adding file" -msgstr "Akatsa fitxategi bat gehitzerakoan" +msgstr "Errorea fitxategia gehitzean" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:272 #, java-format msgid "Error compiling for board {0}." -msgstr "" +msgstr "Errorea {0} plakarako konpilatzean." #: debug/Compiler.java:369 msgid "Error compiling." -msgstr "konpilazio-errore" +msgstr "Errorea konpilatzean." #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:113 #, java-format msgid "Error downloading {0}" -msgstr "" +msgstr "Errorea {0} deskargatzean" #: Base.java:1674 msgid "Error getting the Arduino data folder." -msgstr "Arazoak Arduino-ko karpetaren datuak irakurtzerakoan" +msgstr "Errorea Arduinoren datuen karpeta eskuratzean." #: Serial.java:593 #, java-format msgid "Error inside Serial.{0}()" -msgstr "Akatsa Serial.{0}() -ean" +msgstr "Errorea Serial.{0}() barruan" + +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Errorea {0} itxura kargatzean: {1}" #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 #, java-format msgid "Error loading {0}" -msgstr "Karga-errore {0}" +msgstr "Errorea {0} kargatzean" #: Serial.java:181 #, java-format msgid "Error opening serial port ''{0}''." -msgstr "''{0}'' hutseko irekierako serieko ataka." +msgstr "Errorea ''{0}'' serieko ataka irekitzean." #: ../../../processing/app/Serial.java:119 #, java-format msgid "" "Error opening serial port ''{0}''. Try consulting the documentation at " "http://playground.arduino.cc/Linux/All#Permission" -msgstr "" +msgstr "Errorea ''{0}'' serieko ataka irekitzean. Kontsultatu dokumentazioa: http://playground.arduino.cc/Linux/All#Permission" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Errorea liburutegien indizea analizatzean: {0}\nIreki Liburutegi kudeatzailea liburutegien indizea eguneratzeko." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Errorea liburutegien indizea irakurtzean: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Errorea paketeen indizeen karpeta irakurtzean: {0}\n(behar bada baimen arazoa?)" #: Preferences.java:277 msgid "Error reading preferences" -msgstr "Hutseko irakurketako lehentasunak" +msgstr "Errorea hobespenak irakurtzean" #: Preferences.java:279 #, java-format msgid "" "Error reading the preferences file. Please delete (or move)\n" "{0} and restart Arduino." -msgstr "Lehentasun-fitxategia irakurri hutsa. Mesedez ezabatu ezazu (edo eraman) \n{0} eta Arduino berrabiarazi." +msgstr "Errorea hobespenen fitxategia irakurtzean. Ezabatu (edo lekuz aldatu) \n{0} eta berrabiarazi Arduino." #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:146 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:166 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:245 msgid "Error running post install script" -msgstr "" +msgstr "Errorea instalazio ondorengo script-a exekutatzean" #: ../../../cc/arduino/packages/DiscoveryManager.java:25 msgid "Error starting discovery method: " -msgstr "Aurkikuntza-metodoa hasiz hutsa:" +msgstr "Errorea aurkikuntza-metodoa abiaraztean: " #: Serial.java:125 #, java-format msgid "Error touching serial port ''{0}''." -msgstr "Hutsa ukitu ''{0}'' serieko ataka." +msgstr "Errorea ''{0}'' serieko ataka ukitzean." #: Editor.java:2512 Editor.java:2516 Editor.java:2520 msgid "Error while burning bootloader." -msgstr "Akatsa bootloaderak erretzen diren bitartean." +msgstr "Errorea abiarazte-kudeatzailea kargatzean." #: ../../../processing/app/Editor.java:2555 msgid "Error while burning bootloader: missing '{0}' configuration parameter" -msgstr "Bootloader-a erretzerakoan hutsa: desagertu {0} konfigurazio-parametroa" +msgstr "Errorea abiarazte-kudeatzailea kargatzean: '{0}' konfigurazio-parametroa falta da" + +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Errorea gertatu da abiarazte-kudeatzailea kargatzean: aukeratu serie-ataka bat." #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" -msgstr "" +msgstr "Errorea konpilatzean: '{0}' konfigurazio-parametroa falta da" #: Editor.java:2567 msgid "Error while printing." -msgstr "Inprimatzerakoan hutsa." +msgstr "Errorea inprimatzerakoan." #: ../../../../../arduino-core/src/processing/app/Serial.java:117 #, java-format msgid "Error while setting serial port parameters: {0} {1} {2} {3}" -msgstr "" +msgstr "Errorea serieko ataken parametroak ezartzean: {0} {1} {2} {3}" #: ../../../processing/app/BaseNoGui.java:528 msgid "Error while uploading" -msgstr "" +msgstr "Errorea igotzean" #: ../../../processing/app/Editor.java:2409 #: ../../../processing/app/Editor.java:2449 msgid "Error while uploading: missing '{0}' configuration parameter" -msgstr "Kargatzerakoan hutsa: desagertu {0} konfigurazio-parametroa" +msgstr "Errorea igotzean: '{0}' konfigurazio-parametroa falta da" #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 msgid "Error while verifying" -msgstr "" +msgstr "Errorea egiaztatzean" #: ../../../processing/app/BaseNoGui.java:521 msgid "Error while verifying/uploading" -msgstr "" +msgstr "Errorea egiaztatzean/igotzean" #: Preferences.java:93 msgid "Estonian" msgstr "Estoniera" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estoniera (Estonia)" - #: Editor.java:516 msgid "Examples" msgstr "Adibideak" #: ../../../../../app/src/processing/app/Base.java:1185 msgid "Examples for any board" -msgstr "" +msgstr "Edozein plaketarako adibideak" #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 #, java-format msgid "Examples for {0}" -msgstr "" +msgstr "{0}-rako adibideak" #: ../../../../../app/src/processing/app/Base.java:1244 msgid "Examples from Custom Libraries" -msgstr "" +msgstr "Liburutegi pertsonalizatuetako adibideak" #: ../../../../../app/src/processing/app/Base.java:1329 msgid "Examples from Other Libraries" -msgstr "" +msgstr "Beste liburutegietako adibideak" #: ../../../../../app/src/processing/app/Editor.java:753 msgid "Export canceled, changes must first be saved." -msgstr "" +msgstr "Esportazioa bertan behera utzi da, lehenik gorde egin behar da." #: ../../../../../app/src/processing/app/Editor.java:750 msgid "Export compiled Binary" -msgstr "" +msgstr "Esportatu konpilatutako bitarra" #: ../../../processing/app/Base.java:416 #, java-format msgid "Failed to open sketch: \"{0}\"" -msgstr "Eskema irekitzean huts egin du: \"{0}\"" +msgstr "Programa irekitzean huts egin du: \"{0}\"" #: ../../../../../arduino-core/src/processing/app/SketchFile.java:183 #, java-format msgid "Failed to rename \"{0}\" to \"{1}\"" -msgstr "" +msgstr "Huts egin du \"{0}\"(e)tik \"{1}\"(e)ra izenez aldatzean" #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 msgid "Failed to rename sketch folder" -msgstr "Eskemaren karpetari ezin izan zaio izena aldatu" +msgstr "Huts egin du programaren karpetari izena aldatzean" #: Editor.java:491 msgid "File" -msgstr "Fitxategi" +msgstr "Fitxategia" #: ../../../../../arduino-core/src/processing/app/SketchData.java:139 #, java-format msgid "File name {0} is invalid: ignored" -msgstr "" +msgstr "{0} fitxategi-izena baliogabea da: ezikusia" #: Preferences.java:94 msgid "Filipino" -msgstr "Filipiniera" +msgstr "Filipinera" #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:95 msgid "Filter your search..." -msgstr "" +msgstr "Iragazi zure bilaketa..." #: FindReplace.java:124 FindReplace.java:127 msgid "Find" @@ -1017,15 +1057,15 @@ msgstr "Bilatu" #: Editor.java:1249 msgid "Find Next" -msgstr "Aurkitu hurrengoa" +msgstr "Bilatu hurrengoa" #: Editor.java:1259 msgid "Find Previous" -msgstr "Aurkitu aurrekoa" +msgstr "Bilatu aurrekoa" #: Editor.java:1086 Editor.java:2775 msgid "Find in Reference" -msgstr "Aipamen bidezko dei" +msgstr "Bilatu Erreferentzian" #: Editor.java:1234 msgid "Find..." @@ -1033,7 +1073,7 @@ msgstr "Bilatu..." #: FindReplace.java:80 msgid "Find:" -msgstr "Aurkitu" +msgstr "Bilatu:" #: ../../../processing/app/Preferences.java:147 msgid "Finnish" @@ -1042,26 +1082,26 @@ msgstr "Finlandiera" #: tools/FixEncoding.java:41 tools/FixEncoding.java:58 #: tools/FixEncoding.java:79 msgid "Fix Encoding & Reload" -msgstr "Konpondu kodea eta kargatu" +msgstr "Konpondu kodeketa eta kargatu" #: ../../../processing/app/BaseNoGui.java:318 msgid "" "For information on installing libraries, see: " "http://www.arduino.cc/en/Guide/Libraries/n" -msgstr "" +msgstr "Liburutegiak instalatzeari buruz informazioa behar baduzu, ikusi: http://www.arduino.cc/en/Guide/Libraries\n" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:118 #, java-format msgid "Forcing reset using 1200bps open/close on port {0}" -msgstr "" +msgstr "{0} atakan 1200bps ireki/itxi erabiliz berrezartzea behartzen" #: Preferences.java:95 msgid "French" -msgstr "Frantses" +msgstr "Frantsesa" #: Editor.java:1097 msgid "Frequently Asked Questions" -msgstr "Maiz egiten diren galderak" +msgstr "Maiz egindako galderak" #: Preferences.java:96 msgid "Galician" @@ -1069,11 +1109,11 @@ msgstr "Galiziera" #: ../../../../../app/src/processing/app/Preferences.java:176 msgid "Galician (Spain)" -msgstr "" +msgstr "Galiziera (Espainia)" #: ../../../../../app/src/processing/app/Editor.java:1288 msgid "Galileo Help" -msgstr "" +msgstr "Galileoren laguntza" #: ../../../processing/app/Preferences.java:94 msgid "Georgian" @@ -1081,35 +1121,35 @@ msgstr "Georgiera" #: Preferences.java:97 msgid "German" -msgstr "Aleman" +msgstr "Alemana" #: ../../../../../app//src/processing/app/Editor.java:817 msgid "Get Board Info" -msgstr "" +msgstr "Eskuratu plakaren informazioa" #: Editor.java:1054 msgid "Getting Started" -msgstr "Abiarazi" +msgstr "Erabiltzen hasi" #: ../../../processing/app/Sketch.java:1646 #, java-format msgid "" "Global variables use {0} bytes ({2}%%) of dynamic memory, leaving {3} bytes " "for local variables. Maximum is {1} bytes." -msgstr "Aldagai osoek memoria dinamikoko {0} byte ({2}%%) darabiltzate, {3} byte uzten dituzte aldagai lokaletarako. Maximoa {1} byte dira." +msgstr "Aldagai orokorrek memoria dinamikoko {0} byte ({2}%%) erabiltzen dituzte, {3} byte utziz aldagai lokaletarako. Maximoa {1} byte dira." #: ../../../processing/app/Sketch.java:1651 #, java-format msgid "Global variables use {0} bytes of dynamic memory." -msgstr "Aldagai osoek memoria dinamikoko {0} byte darabiltzate." +msgstr "Aldagai orokorrek memoria dinamikoko {0} byte darabiltzate." #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:66 msgid "Go to line" -msgstr "" +msgstr "Joan lerrora" #: ../../../../../app/src/processing/app/Editor.java:1460 msgid "Go to line..." -msgstr "" +msgstr "Joan lerrora..." #: Preferences.java:98 msgid "Greek" @@ -1125,17 +1165,17 @@ msgstr "Laguntza" #: Preferences.java:99 msgid "Hindi" -msgstr "Indiera" +msgstr "Hindia" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:489 msgid "Host name:" -msgstr "" +msgstr "Ostalari-izena:" #: Sketch.java:295 msgid "" "How about saving the sketch first \n" "before trying to rename it?" -msgstr "Oraindik ez duzu eskema gorde. Berrizendatu aurretik gorde nahi duzu?" +msgstr "Oraindik ez duzu programa gorde. \nIzena aldatu aurretik gorde nahi duzu?" #: Sketch.java:882 msgid "How very Borges of you" @@ -1147,19 +1187,19 @@ msgstr "Hungariera" #: ../../../../../app/src/processing/app/Base.java:1319 msgid "INCOMPATIBLE" -msgstr "" +msgstr "BATERAEZINA" #: FindReplace.java:96 msgid "Ignore Case" msgstr "Ezikusi Maiuskula/minuskula" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Liburutegi izen txarra ez ikusi egin" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "Liburutegia ezikusi da izen desegokia duelako" #: Base.java:1436 msgid "Ignoring sketch with bad name" -msgstr "Ez egin jaramonik eskemari izen desegokia duelako" +msgstr "Programari ezikusi da izen desegokia duelako" #: ../../../processing/app/Sketch.java:736 msgid "" @@ -1170,7 +1210,7 @@ msgid "" "disable this in the Preferences dialog.\n" "\n" "Save sketch and update its extension?" -msgstr "Arduino 1.0-n, fitxategien luzapen lehenetsia .pde-tik .ino.-ra aldatu da.\nEskema berriek (\"Save-As-en\" sortutakoak barne) luzapen berria erabiliko dute. Eskema zaharren luzapena aldatuko da eskema gordetzerakoan baina ezarpen hau hobespenetan aldatu dezakezu.\n\nEskema gorde eta bere luzapena eguneratu?" +msgstr "Arduino 1.0-n, fitxategien luzapen lehenetsia .pde-tik .ino.-ra aldatu da.\nPrograma berriek (\"Gorde honela\"-rekin sortutakoak barne) luzapen berria erabiliko dute. Programa zaharren luzapena aldatuko da programa gordetzerakoan baina ezarpen hau hobespenetan aldatu dezakezu.\n\nPrograma gorde eta bere luzapena eguneratu?" #: ../../../../../app/src/processing/app/Editor.java:778 msgid "Include Library" @@ -1179,11 +1219,11 @@ msgstr "Erantsi liburutegia" #: ../../../processing/app/BaseNoGui.java:768 #: ../../../processing/app/BaseNoGui.java:771 msgid "Incorrect IDE installation folder" -msgstr "" +msgstr "IDEaren instalazio karpeta okerra" #: ../../../../../app/src/processing/app/Editor.java:1378 msgid "Increase Font Size" -msgstr "" +msgstr "Handitu letra-tamaina" #: Editor.java:1216 Editor.java:2757 msgid "Increase Indent" @@ -1195,7 +1235,7 @@ msgstr "Indonesiera" #: ../../../../../app/src/processing/app/Base.java:295 msgid "Initializing packages..." -msgstr "" +msgstr "Paketeak hasieratzen..." #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:75 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:81 @@ -1204,48 +1244,59 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:91 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:303 msgid "Install" -msgstr "" +msgstr "Instalatu" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:170 msgid "Installation completed!" -msgstr "" +msgstr "Instalazioa amaitu da!" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java:50 msgid "Installed" -msgstr "" +msgstr "Instalatuta" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 msgid "Installing boards..." -msgstr "" +msgstr "Plakak instalatzen..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "" +msgid "Installing library: {0}:{1}" +msgstr "Liburutegia instalatzen: {0}:{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format msgid "Installing tools ({0}/{1})..." -msgstr "" +msgstr "Tresnak instalatzen ({0}/{1})..." #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:239 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:172 msgid "Installing..." -msgstr "" +msgstr "Instalatzen..." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:256 msgid "Interface scale:" -msgstr "" +msgstr "Interfazearen eskala:" #: ../../../processing/app/Base.java:1204 #, java-format msgid "Invalid library found in {0}: {1}" -msgstr " {0}: {1}-etan aurkitutako liburutegi okerra" +msgstr "Liburutegi baliogabea aurkitu da {0}(e)n: {1}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:66 #, java-format msgid "Invalid quoting: no closing [{0}] char found." -msgstr "" +msgstr "Komatxoen formatu baliogabea: ez da topatu [{0}] itxiera karakterea." + +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Liburutegiaren '{0}' bertsio baliogabea hemen: {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "{0} bertsio baliogabea" #: Preferences.java:102 msgid "Italian" @@ -1257,7 +1308,7 @@ msgstr "Japoniera" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:81 msgid "Kazakh" -msgstr "" +msgstr "Kazakhera" #: Preferences.java:104 msgid "Korean" @@ -1269,24 +1320,24 @@ msgstr "Letoniera" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:93 msgid "Library Manager" -msgstr "" +msgstr "Liburutegi kudeatzailea" #: ../../../../../app/src/processing/app/Base.java:2349 msgid "Library added to your libraries. Check \"Include library\" menu" -msgstr "" +msgstr "Liburutegia zure liburutegietara gehitua. Ikusi \"Erantsi liburutegia\" menua" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" -msgstr "" +msgstr "Liburutegiek ezin dute erabili 'src' eta 'utility' karpetak. Berrikusi {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "" +msgid "Library is already installed: {0}:{1}" +msgstr "Liburutegia instalatua dago dagoeneko: {0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" -msgstr "" +msgstr "Lerro-zenbakia:" #: Preferences.java:106 msgid "Lithuaninan" @@ -1294,24 +1345,24 @@ msgstr "Lituaniera" #: ../../../../../app/src/processing/app/Base.java:132 msgid "Loading configuration..." -msgstr "" +msgstr "Konfigurazioa kargatzen..." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 #, java-format msgid "Looking for recipes like {0}*{1}" -msgstr "" +msgstr "{0}*{1} bezalako prozeduren bila" #: ../../../processing/app/Sketch.java:1684 msgid "Low memory available, stability problems may occur." -msgstr "" +msgstr "Memoria gutxi dago erabilgarri, egonkortasun arazoak gerta daitezke." #: ../../../../../app/src/processing/app/Base.java:1168 msgid "Manage Libraries..." -msgstr "" +msgstr "Kudeatu liburutegiak..." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:466 msgid "Manual proxy configuration" -msgstr "" +msgstr "Proxyaren eskuzko konfigurazioa" #: Preferences.java:107 msgid "Marathi" @@ -1324,44 +1375,44 @@ msgstr "Mezua" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:81 #, java-format msgid "Missing '{0}' from library in {1}" -msgstr "" +msgstr "'{0}'falta da liburutegitik {1}(e)n" #: ../../../processing/app/BaseNoGui.java:455 msgid "Mode not supported" -msgstr "" +msgstr "Modua ez da onartzen" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:186 msgid "More" -msgstr "" +msgstr "Gehiago" #: Preferences.java:449 msgid "More preferences can be edited directly in the file" -msgstr "Zuzenean fitxategian lehentasun gehiago editatu ahal dituzte" +msgstr "Hobespen gehiago editatu daitezke zuzenean fitxategian" #: Editor.java:2156 msgid "Moving" -msgstr "Mugitzen" +msgstr "Lekuz aldatzen" #: ../../../processing/app/BaseNoGui.java:484 msgid "Multiple files not supported" -msgstr "" +msgstr "Ez dago hainbat fitxategirentzako euskarririk" #: ../../../processing/app/debug/Compiler.java:520 #, java-format msgid "Multiple libraries were found for \"{0}\"" -msgstr "" +msgstr "\"{0}\"(r)entzat hainbat liburutegi aurkitu dira" #: ../../../processing/app/Base.java:395 msgid "Must specify exactly one sketch file" -msgstr "Eskema fitxategi bat zehaztu behar duzu" +msgstr "Programa fitxategi bat zehaztu behar duzu" #: Sketch.java:282 msgid "Name for new file:" -msgstr "Fitxategi berriaren izena" +msgstr "Fitxategi berriaren izena:" #: ../../../../../app//src/processing/app/Editor.java:2809 msgid "Native serial port, can't obtain info" -msgstr "" +msgstr "Serieko ataka natiboa, ezin da informaziorik eskuratu" #: ../../../processing/app/Preferences.java:149 msgid "Nepali" @@ -1369,19 +1420,19 @@ msgstr "Nepalera" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:601 msgid "Network" -msgstr "" +msgstr "Sarea" #: ../../../../../app//src/processing/app/Editor.java:2804 msgid "Network port, can't obtain info" -msgstr "" +msgstr "Sareko ataka, ezin da informaziorik eskuratu" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Network ports" -msgstr "" +msgstr "Sareko atakak" #: ../../../cc/arduino/packages/uploaders/SSHUploader.java:51 msgid "Network upload using programmer not supported" -msgstr "Laguntzarik ez dago artxibo-kargarako sarean programagailua erabiliz" +msgstr "Ez da onartzen sareko karga programatzailea erabiliz" #: EditorToolbar.java:41 Editor.java:493 msgid "New" @@ -1389,11 +1440,11 @@ msgstr "Berria" #: EditorHeader.java:292 msgid "New Tab" -msgstr "Fitxa berri" +msgstr "Fitxa berria" #: SerialMonitor.java:112 msgid "Newline" -msgstr "Lerro-amaiera" +msgstr "Lerro berria" #: EditorHeader.java:340 msgid "Next Tab" @@ -1405,15 +1456,15 @@ msgstr "Ez" #: ../../../processing/app/debug/Compiler.java:158 msgid "No authorization data found" -msgstr "" +msgstr "Ez da baimenaren daturik aurkitu" #: tools/format/src/AutoFormat.java:54 tools/AutoFormat.java:916 msgid "No changes necessary for Auto Format." -msgstr "Aldaketa bat ere beharrezko Auto Formaturako." +msgstr "Formatu automatikorako ez da aldaketarik behar." #: ../../../processing/app/BaseNoGui.java:665 msgid "No command line parameters found" -msgstr "" +msgstr "Ez da komando lerroko parametrorik aurkitu" #: ../../../processing/app/debug/Compiler.java:200 msgid "No compiled sketch found" @@ -1421,77 +1472,77 @@ msgstr "Ez da fitxategi konpilaturik aurkitu" #: Editor.java:373 msgid "No files were added to the sketch." -msgstr "Eskemari ez zaio fitxategirik erantsi." +msgstr "Programari ez zaio fitxategirik gehitu." #: Platform.java:167 msgid "No launcher available" -msgstr "Inongo jaurtitzailerik-Launcher ez dago" +msgstr "Ez dago abiarazlerik erabilgarri" #: SerialMonitor.java:112 msgid "No line ending" -msgstr "Ez lerro-bukaera" +msgstr "Lerro amaierarik ez" #: ../../../processing/app/BaseNoGui.java:665 msgid "No parameters" -msgstr "" +msgstr "Parametrorik ez" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:453 msgid "No proxy" -msgstr "" +msgstr "Proxy-rik ez" #: Base.java:541 msgid "No really, time for some fresh air for you." -msgstr "Ez benetan, zuretzako aire freskoren baterako denbora." +msgstr "Benetan, aire fresko pixka bat behar duzu." #: Editor.java:1872 #, java-format msgid "No reference available for \"{0}\"" -msgstr "Aipamen erabilgarri bat ere {0}" +msgstr "Ez dago erreferentziarik erabilgarri {0}(r)entzat" #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 msgid "No sketch" -msgstr "Eskemarik ez" +msgstr "Programarik ez" #: ../../../processing/app/BaseNoGui.java:428 msgid "No sketchbook" -msgstr "Eskema bildumarik ez" +msgstr "Programa bildumarik ez" #: ../../../processing/app/Sketch.java:204 msgid "No valid code files found" -msgstr "Aurkitutako baliozko kode-fitxategi bat ere" +msgstr "Ez da baliozko kode-fitxategirik aurkitu" #: ../../../processing/app/debug/TargetPackage.java:63 #, java-format msgid "No valid hardware definitions found in folder {0}." -msgstr "Karpetan {0} aurkitutako baliozko hardware-definizio bat ere." +msgstr "Ez da baliozko hardware-definiziorik aurkitu {0} karpetan." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:184 msgid "None" -msgstr "" +msgstr "Bat ere ez" #: ../../../processing/app/Preferences.java:108 msgid "Norwegian Bokmål" -msgstr " Norvegiera" +msgstr "Norvegiera (Bokmål)" #: ../../../processing/app/Sketch.java:1656 msgid "" "Not enough memory; see http://www.arduino.cc/en/Guide/Troubleshooting#size " "for tips on reducing your footprint." -msgstr "Memoria nahikorik ez dago ; bisita http://www.arduino.cc/en/Guide/Troubleshooting#size bere erabilera txikiagotzea bezala ikasteko." +msgstr "Ez dago memoria nahikorik; bisitatu http://www.arduino.cc/en/Guide/Troubleshooting#size memoria erabilera nola txikiagotu ikasteko." #: Preferences.java:80 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2145 Editor.java:2465 msgid "OK" -msgstr "OK" +msgstr "Ados" #: Sketch.java:992 Editor.java:376 msgid "One file added to the sketch." -msgstr "Eskemari fitxategi bat gehitu zaio." +msgstr "Programari fitxategi bat gehitu zaio." #: ../../../processing/app/BaseNoGui.java:455 msgid "Only --verify, --upload or --get-pref are supported" -msgstr "" +msgstr "Soilik --verify, --upload eta --get-pref onartzen dira" #: EditorToolbar.java:41 msgid "Open" @@ -1499,23 +1550,23 @@ msgstr "Ireki" #: ../../../../../app/src/processing/app/Editor.java:625 msgid "Open Recent" -msgstr "" +msgstr "Ireki azkenak" #: Editor.java:2688 msgid "Open URL" -msgstr "Ireki URLa." +msgstr "Ireki URLa" #: Base.java:636 msgid "Open an Arduino sketch..." -msgstr "Ireki Arduino eskema..." +msgstr "Ireki Arduino programa..." #: Base.java:903 Editor.java:501 msgid "Open..." -msgstr "Ireki" +msgstr "Ireki..." #: ../../../../../arduino-core/src/processing/app/I18n.java:37 msgid "Other" -msgstr "" +msgstr "Bestea" #: Editor.java:563 msgid "Page Setup" @@ -1523,7 +1574,7 @@ msgstr "Prestatu orrialdea" #: ../../../../../arduino-core/src/processing/app/I18n.java:25 msgid "Partner" -msgstr "" +msgstr "Bazkidea" #: ../../../processing/app/forms/PasswordAuthorizationDialog.java:44 msgid "Password:" @@ -1544,36 +1595,36 @@ msgstr "Persiera (Iran)" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:79 #, java-format msgid "Platform {0} (package {1}) is unknown" -msgstr "" +msgstr "{0} plataforma ({1} paketea) ezezaguna da" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:195 msgid "Please confirm boards deletion" -msgstr "" +msgstr "Berretsi plaken ezabapena" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "Please confirm library deletion" -msgstr "" +msgstr "Berretsi liburutegiaren ezabapena" #: debug/Compiler.java:408 msgid "Please import the SPI library from the Sketch > Import Library menu." -msgstr "SPI-liburutegia inportatu Eskema > Erantsi liburutegia menutik." +msgstr "Inportatu ezazu SPI-liburutegia Programa > Inportatu liburutegia menutik." #: ../../../processing/app/debug/Compiler.java:529 msgid "Please import the Wire library from the Sketch > Import Library menu." -msgstr "Wire liburutegia Eskema > Erantsi liburutegia menutik inportatu ezazu." +msgstr "Inportatu ezazu Wire liburutegia Programa > Inportatu liburutegia menutik." #: ../../../../../app//src/processing/app/Editor.java:2799 msgid "Please select a port to obtain board info" -msgstr "" +msgstr "Hautatu ataka bat plakaren informazioa eskuratzeko" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 msgid "Please select a programmer from Tools->Programmer menu" -msgstr "" +msgstr "Hautatu programatzaile bat Tresnak->Programatzailea menuan" #: ../../../../../app/src/processing/app/Editor.java:2613 msgid "Plotter not available while serial monitor is open" -msgstr "" +msgstr "Plotterra ez dago erabilgarri, serieko monitorea irekita dagoen bitartean" #: Preferences.java:110 msgid "Polish" @@ -1585,7 +1636,7 @@ msgstr "Ataka" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:491 msgid "Port number:" -msgstr "" +msgstr "Ataka zenbakia:" #: ../../../processing/app/Preferences.java:151 msgid "Portugese" @@ -1593,7 +1644,7 @@ msgstr "Portugalera" #: ../../../processing/app/Preferences.java:127 msgid "Portuguese (Brazil)" -msgstr "Portugalera (Brazil)" +msgstr "Portugalera (Brasil)" #: ../../../processing/app/Preferences.java:128 msgid "Portuguese (Portugal)" @@ -1605,7 +1656,7 @@ msgstr "Hobespenak" #: ../../../../../app/src/processing/app/Base.java:297 msgid "Preparing boards..." -msgstr "" +msgstr "Plakak prestatzen..." #: FindReplace.java:123 FindReplace.java:128 msgid "Previous" @@ -1629,38 +1680,38 @@ msgstr "Inprimatzen..." #: Base.java:1957 msgid "Problem Opening Folder" -msgstr "Arazoko Irekierako Karpeta" +msgstr "Arazoa karpeta irekitzean" #: Base.java:1933 msgid "Problem Opening URL" -msgstr "Arazoak URLa irekitzerakoan" +msgstr "Arazoa URLa irekitzerakoan" #: Base.java:227 msgid "Problem Setting the Platform" -msgstr "Plataformaren Konfigurazio Arazoa" +msgstr "Arazoa plataforma ezartzean" #: ../../../cc/arduino/packages/uploaders/SSHUploader.java:136 msgid "Problem accessing board folder /www/sd" -msgstr "Arazoa plakako karpeta sartzerakoan dago /www/sd" +msgstr "Arazoa plakaren karpeta atzitzean /www/sd" #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:206 #, java-format msgid "Problem accessing files in folder \"{0}\"" -msgstr "" +msgstr "Atzipen-arazoa \"{0}\" karpetako fitxategietan" #: Base.java:1673 msgid "Problem getting data folder" -msgstr "Arazoak karpetaren datuak irakurtzerakoan" +msgstr "Arazoa datuen karpeta irakurtzerakoan" #: debug/Uploader.java:209 msgid "" "Problem uploading to board. See " "http://www.arduino.cc/en/Guide/Troubleshooting#upload%20for%20suggestions." -msgstr "Plakaratzeko upload arazoa. http://www.arduino.cc/en/Guide/Troubleshooting#upload ikusi ezazu iradokizunetarako." +msgstr "Arazoa plakara kargatzean. Ikusi http://www.arduino.cc/en/Guide/Troubleshooting#upload iradokizunetarako." #: Sketch.java:355 Sketch.java:362 Sketch.java:373 msgid "Problem with rename" -msgstr "Izen-aldaketarekiko arazoa" +msgstr "Arazoa izena aldatzean" #: ../../../processing/app/I18n.java:86 msgid "Processor" @@ -1668,24 +1719,24 @@ msgstr "Prozesadorea" #: Editor.java:704 msgid "Programmer" -msgstr "Programatzaile" +msgstr "Programatzailea" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:80 #, java-format msgid "Progress {0}" -msgstr "" +msgstr "Aurrerapena {0}" #: Base.java:783 Editor.java:593 msgid "Quit" -msgstr "kentzea" +msgstr "Irten" #: ../../../../../app/src/processing/app/Base.java:1233 msgid "RETIRED" -msgstr "" +msgstr "ERRETIRATUA" #: ../../../../../arduino-core/src/processing/app/I18n.java:26 msgid "Recommended" -msgstr "" +msgstr "Gomendatua" #: Editor.java:1138 Editor.java:1140 Editor.java:1390 msgid "Redo" @@ -1693,21 +1744,21 @@ msgstr "Berregin" #: Editor.java:1078 msgid "Reference" -msgstr "Aipamen" +msgstr "Erreferentzia" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 msgid "Remove" -msgstr "" +msgstr "Kendu" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "" +msgid "Removing library: {0}:{1}" +msgstr "Liburutegia kentzen: {0}{1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 msgid "Removing..." -msgstr "" +msgstr "Kentzen..." #: EditorHeader.java:300 msgid "Rename" @@ -1719,7 +1770,7 @@ msgstr "Ordeztu" #: FindReplace.java:122 FindReplace.java:129 msgid "Replace & Find" -msgstr "Bilatu & Ordeztu" +msgstr "Ordeztu & bilatu" #: FindReplace.java:120 FindReplace.java:131 msgid "Replace All" @@ -1728,29 +1779,33 @@ msgstr "Ordeztu guztiak" #: Sketch.java:1043 #, java-format msgid "Replace the existing version of {0}?" -msgstr "{0}-aren oraingo bertsioa ordeztu ezazu ?" +msgstr "{0}-(r)en oraingo bertsioa ordeztu nahi duzu?" #: FindReplace.java:81 msgid "Replace with:" -msgstr "Ordeztu honekin" +msgstr "Ordeztu honekin:" #: ../../../../../arduino-core/src/processing/app/I18n.java:28 msgid "Retired" -msgstr "" +msgstr "Erretiratua" + +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Berriro igo beste serie ataka baten bidez?" #: Preferences.java:113 msgid "Romanian" -msgstr "Erromaniko" +msgstr "Errumaniera" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:83 #, java-format msgid "Running recipe: {0}" -msgstr "" +msgstr "Exekutatzen ari den prozedura: {0}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:82 #, java-format msgid "Running: {0}" -msgstr "" +msgstr "Exekutatzen: {0}" #: Preferences.java:114 msgid "Russian" @@ -1767,32 +1822,32 @@ msgstr "Gorde honela..." #: Editor.java:2317 msgid "Save Canceled." -msgstr "Utzi gordeatzea" +msgstr "Gordetzea bertan behera utzi da." #: Editor.java:2020 #, java-format msgid "Save changes to \"{0}\"? " -msgstr "Gorde aldaketak \"{0}\"an ?" +msgstr "\"{0}\"-(r)i egindako aldaketak gorde? " #: Sketch.java:825 msgid "Save sketch folder as..." -msgstr "Gorde eskemaren karpeta honela" +msgstr "Gorde programaren karpeta honela..." #: ../../../../../app/src/processing/app/Preferences.java:425 msgid "Save when verifying or uploading" -msgstr "" +msgstr "Gorde egiaztatzean edo kargatzean" #: Editor.java:2270 Editor.java:2308 msgid "Saving..." -msgstr "Gordetzen" +msgstr "Gordetzen..." #: ../../../processing/app/FindReplace.java:131 msgid "Search all Sketch Tabs" -msgstr "Bilatu eskema fitxa guztietan" +msgstr "Bilatu programa fitxa guztietan" #: Base.java:1909 msgid "Select (or create new) folder for sketches..." -msgstr "Hautatu (edo sortu) eskementzako karpeta..." +msgstr "Hautatu (edo sortu) programentzako karpeta..." #: Editor.java:1198 Editor.java:2739 msgid "Select All" @@ -1800,32 +1855,32 @@ msgstr "Hautatu dena" #: Base.java:2636 msgid "Select a zip file or a folder containing the library you'd like to add" -msgstr "Hautatu ezazu zip-fitxategi bat edo gehitzea nahi izango zenukeen liburutegia edukiz karpeta bat" +msgstr "Hautatu gehitu nahi duzun liburutegia daukan zip fitxategi edo karpeta bat" #: Sketch.java:975 msgid "Select an image or other data file to copy to your sketch" -msgstr "Aukeratu irudi edo datu fitxategi bat zure eskeman kopiatzeko" +msgstr "Hautatu irudi edo datu fitxategi bat zure programan kopiatzeko" #: Preferences.java:330 msgid "Select new sketchbook location" -msgstr "Aukeratu kokagune berria eskemen bildumarako" +msgstr "Hautatu kokaleku berria programen bildumarentzat" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:237 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:249 msgid "Select version" -msgstr "" +msgstr "Hautatu bertsioa" #: ../../../processing/app/debug/Compiler.java:146 msgid "Selected board depends on '{0}' core (not installed)." -msgstr "Aukeratutako plaka '{0}' nukleoaren mendean dago (ez dago instalatuta)." +msgstr "Hautatutako plakak '{0}' nukleoaren mendekotasuna du (ez dago instalatuta)." #: ../../../../../app/src/processing/app/Base.java:374 msgid "Selected board is not available" -msgstr "" +msgstr "Hautatutako plaka ez dago erabilgarri" #: ../../../../../app/src/processing/app/Base.java:423 msgid "Selected library is not available" -msgstr "" +msgstr "Hautatutako liburutegia ez dago erabilgarri" #: SerialMonitor.java:93 msgid "Send" @@ -1833,7 +1888,7 @@ msgstr "Bidali" #: ../../../../../arduino-core/src/processing/app/I18n.java:32 msgid "Sensors" -msgstr "" +msgstr "Sentsoreak" #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:669 msgid "Serial Monitor" @@ -1841,123 +1896,130 @@ msgstr "Serieko monitorea" #: ../../../../../app/src/processing/app/Editor.java:804 msgid "Serial Plotter" -msgstr "" +msgstr "Serieko plotterra" #: ../../../../../app/src/processing/app/Editor.java:2325 #, java-format msgid "" "Serial monitor is not supported on network ports such as {0} for the {1} in " "this release" -msgstr "" +msgstr "Bertsio honetan, serieko monitorea ez dago erabilgarri sareko ataketan. Adibidez, {1}-(r)en {0}" #: ../../../../../app/src/processing/app/Editor.java:2516 msgid "Serial monitor not available while plotter is open" -msgstr "" +msgstr "Serieko monitorea ez dago erabilgarri, plotterra irekita dagoen bitartean" #: Serial.java:194 #, java-format msgid "" "Serial port ''{0}'' not found. Did you select the right one from the Tools >" " Serial Port menu?" -msgstr "Serieko ataka ''{0}'' ez aurkituta. Ongi aukeratu duzu era zuzenean menutik Erremintetatik > Serieko Ataka ?" +msgstr "Ez da aurkitu ''{0}'' serieko ataka. Tresnak > Serieko ataka menuan egokia hautatu duzu?" + +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Ez da aukeratu serie ataka." -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Ez aurkitutako serieko ataka {0}.\nBirsaioa beste serieko ataka batekin kargatu?" +msgid "Serial port {0} not found." +msgstr "Ez da aurkitu {0} serie ataka." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" -msgstr "" +msgstr "Serieko atakak" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:84 #, java-format msgid "Setting build path to {0}" -msgstr "" +msgstr "Ezarritako konpilazio-bide berria: {0}" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:450 msgid "Settings" -msgstr "" +msgstr "Ezarpenak" #: Base.java:1681 msgid "Settings issues" -msgstr "konfigurazioaren kontuak" +msgstr "Ezarpenen arazoak" #: Editor.java:641 msgid "Show Sketch Folder" -msgstr "Erakutsi eskemen karpeta" +msgstr "Erakutsi programen karpeta" + +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Erakutsi denbora-zigilua" #: Preferences.java:387 msgid "Show verbose output during: " -msgstr "Irteera luzea erakusten duzu zehar:" +msgstr "Erakutsi irteera xehatua honetan zehar: " #: ../../../../../arduino-core/src/processing/app/I18n.java:31 msgid "Signal Input/Output" -msgstr "" +msgstr "Seinaleen Sarrera/Irteera" #: Editor.java:607 msgid "Sketch" -msgstr "Eskema" +msgstr "Programa" #: Sketch.java:1754 msgid "Sketch Disappeared" -msgstr "Eskema desagertu da" +msgstr "Programa desagertu da" #: Base.java:1411 msgid "Sketch Does Not Exist" -msgstr "Eskema ez da existitzen" +msgstr "Programa ez da existitzen" #: Sketch.java:274 Sketch.java:303 Sketch.java:577 Sketch.java:966 msgid "Sketch is Read-Only" -msgstr "Irakurtzeko-soilik eskema" +msgstr "Programa irakurtzeko-soilik da" #: Sketch.java:294 msgid "Sketch is Untitled" -msgstr "Eskemak ez du izenik" +msgstr "Programak ez du izenik" #: Sketch.java:720 msgid "Sketch is read-only" -msgstr "Eskema irakurtzeko-soilik da " +msgstr "Programa irakurtzeko-soilik da" #: Sketch.java:1653 msgid "" "Sketch too big; see http://www.arduino.cc/en/Guide/Troubleshooting#size for " "tips on reducing it." -msgstr "Eskema handiegia da; bisitatu http://www.arduino.cc/en/Guide/Troubleshooting#size tamaina txikiagotzeko gomendioak kontsultatzeko" +msgstr "Programa handiegia da; bisitatu http://www.arduino.cc/en/Guide/Troubleshooting#size tamaina txikiagotzeko gomendioak kontsultatzeko" #: ../../../processing/app/Sketch.java:1639 #, java-format msgid "" "Sketch uses {0} bytes ({2}%%) of program storage space. Maximum is {1} " "bytes." -msgstr "Eskemak programako biltegiratzeko espazioaren {0} byte ({2}%%-a) darabiltza. Maximoa {1} byte da." +msgstr "Programak biltegiratzeko espazioaren {0} byte ({2}%%-a) darabil. Maximoa {1} byte da." #: Editor.java:510 msgid "Sketchbook" -msgstr "Eskema bilduma" +msgstr "Programa bilduma" #: Base.java:258 msgid "Sketchbook folder disappeared" -msgstr "Eskema bildumaren karpeta desagertu da" +msgstr "Programa bildumaren karpeta desagertu da" #: Preferences.java:315 msgid "Sketchbook location:" -msgstr "Eskema bildumaren kokalekua:" +msgstr "Programa bildumaren kokalekua:" #: ../../../processing/app/BaseNoGui.java:428 msgid "Sketchbook path not defined" -msgstr "Ez da definitu eskema bildumaren bidea" +msgstr "Ez da definitu programa bildumaren bidea" #: ../../../../../arduino-core//src/cc/arduino/contributions/packages/ContributionsIndexer.java:96 #, java-format msgid "Skipping contributed index file {0}, parsing error occured:" -msgstr "" +msgstr "Kolaborazio bidezko {0} indize-fitxategia ezin da erabili; errore sintaktiko hau gertatu da:" #: ../../../../../app/src/processing/app/Preferences.java:185 msgid "Slovak" -msgstr "" +msgstr "Eslovakiera" #: ../../../processing/app/Preferences.java:152 msgid "Slovenian" @@ -1968,18 +2030,18 @@ msgid "" "Some files are marked \"read-only\", so you'll\n" "need to re-save the sketch in another location,\n" "and try again." -msgstr "Fitxategi batzuk \"irakurtzeko-soilik\" gisa \nmarkatuta daude, eskema beste kokagune batean \ngorde beharko duzu eta berriro saiatu beharko zara." +msgstr "Fitxategi batzuk \"irakurtzeko-soilik\" gisa \nmarkatuta daude, programa beste kokagune batean \ngorde beharko duzu eta berriro saiatu beharko zara." #: Sketch.java:721 msgid "" "Some files are marked \"read-only\", so you'll\n" "need to re-save this sketch to another location." -msgstr "Fitxategi batzuk \"irakurtzeko-soilik\" gisa markatuta daude,\n eskema beste kokagune batean gorde beharko duzu." +msgstr "Fitxategi batzuk \"irakurtzeko-soilik\" gisa markatuta daude,\n programa beste kokagune batean gorde beharko duzu." #: ../../../../../arduino-core/src/processing/app/Sketch.java:246 #, java-format msgid "Sorry, the folder \"{0}\" already exists." -msgstr "" +msgstr "Barkatu, baina \"{0}\" karpeta existitzen da jadanik." #: Preferences.java:115 msgid "Spanish" @@ -1987,11 +2049,11 @@ msgstr "Espainiera" #: ../../../../../app/src/processing/app/Base.java:2333 msgid "Specified folder/zip file does not contain a valid library" -msgstr "" +msgstr "Zehaztutako karpetak/zip fitxategiak ez dauka liburutegi baliodunik" #: ../../../../../app/src/processing/app/Base.java:466 msgid "Starting..." -msgstr "" +msgstr "Abiatzen..." #: Base.java:540 msgid "Sunshine" @@ -2007,7 +2069,7 @@ msgstr "Sistemako lehenetsia" #: ../../../../../app/src/processing/app/Preferences.java:188 msgid "Talossan" -msgstr "" +msgstr "Talossera" #: Preferences.java:116 msgid "Tamil" @@ -2015,42 +2077,42 @@ msgstr "Tamilera" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:102 msgid "Telugu" -msgstr "" +msgstr "Telugu" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:100 msgid "Thai" -msgstr "" +msgstr "Thailandiera" #: debug/Compiler.java:414 msgid "The 'BYTE' keyword is no longer supported." -msgstr "Jada 'BYTE' gako-hitza ez dute sostengatzen." +msgstr "'BYTE' gako-hitza ez da onartzen jada." #: ../../../processing/app/BaseNoGui.java:484 msgid "The --upload option supports only one file at a time" -msgstr "" +msgstr "--upload aukerak fitxategiak banaka onartzen ditu soilik" #: debug/Compiler.java:426 msgid "The Client class has been renamed EthernetClient." -msgstr "Client klasea berrizendatu dute EthernetClient." +msgstr "Client klasea EthernetClient bezala berrizendatua izan da." #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format msgid "" "The IDE includes an updated {0} package, but you're using an older one.\n" "Do you want to upgrade {0}?" -msgstr "" +msgstr "IDEak {0} pakete eguneratua dauka, baina zaharrago bat erabiltzen ari zara.\n{0} bertsio-berritu nahi duzu?" #: debug/Compiler.java:420 msgid "The Server class has been renamed EthernetServer." -msgstr "Server klasea berrizendatu dute EthernetServer." +msgstr "Server klasea EthernetServer bezala berrizendatua izan da." #: debug/Compiler.java:432 msgid "The Udp class has been renamed EthernetUdp." -msgstr "Udp klasea berrizendatu dute EthernetUdp." +msgstr "Udp klasea EthernetUdp bezala berrizendatua izan da." #: ../../../../../arduino-core/src/processing/app/BaseNoGui.java:177 msgid "The current selected board needs the core '{0}' that is not installed." -msgstr "" +msgstr "Unean hautatutako plakak '{0}' nukleoa behar du, eta ez dago instalatuta." #: Editor.java:2147 #, java-format @@ -2058,7 +2120,15 @@ msgid "" "The file \"{0}\" needs to be inside\n" "a sketch folder named \"{1}\".\n" "Create this folder, move the file, and continue?" -msgstr "{0} fitxategia {1} izendatutako eskema karpeta \nbarruan egon behar du. \nSortu karpeta hau, mugitu fitxategia eta jarraitu?" +msgstr "{0} fitxategiak {1} izendatutako programa karpeta \nbarruan egon behar du. \nSortu karpeta hau, eraman fitxategia eta jarraitu?" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "\"{0}\" liburutegia ezin da erabili.\nLiburutegi karpeten izenak letra edo zenbaki batekin hasi behar dute eta ondoren letra, \nzenbakiak, marratxoak, puntuak eta azpimarrak erabili daitezke. Gehienez 63 karaktere erabili daitezke." #: Base.java:1054 Base.java:2674 #, java-format @@ -2066,22 +2136,22 @@ msgid "" "The library \"{0}\" cannot be used.\n" "Library names must contain only basic letters and numbers.\n" "(ASCII only and no spaces, and it cannot start with a number)" -msgstr "Liburutegia {0} ezin dute erabili. Liburutegi-izenek bakarrik oinarrizko gutunak eta numbers. eduki behar dituzte. (ASCII-a bakarrik eta espazio bat ere, eta ezin da zenbaki batekin hasi)" +msgstr "{0} liburutegia ezin da erabili.\nLiburutegi-izenek oinarrizko letra eta zenbakiak soilik eduki ditzakete.\n(ASCII bakarrik eta zuriunerik ez, eta ezin dira zenbaki batekin hasi)" #: ../../../../../app/src/processing/app/SketchController.java:170 msgid "The main file cannot use an extension" -msgstr "" +msgstr "Fitxategi nagusiak ezin du luzapenik erabili" #: Sketch.java:356 msgid "The name cannot start with a period." -msgstr "Izena ezin da hasi puntuarekin." +msgstr "Izena ezin da puntuarekin hasi." #: Base.java:1412 msgid "" "The selected sketch no longer exists.\n" "You may need to restart Arduino to update\n" "the sketchbook menu." -msgstr "Hautatutako eskema dagoeneko ez da existitzen.\nArduino berriz hasi beharko duzu eskema bildumaren \nmenua eguneratzeko ." +msgstr "Hautatutako programa dagoeneko ez da existitzen.\nArduino berriz hasi beharko duzu programa bildumaren \nmenua eguneratzeko ." #: Base.java:1430 #, java-format @@ -2091,25 +2161,26 @@ msgid "" "(ASCII-only with no spaces, and it cannot start with a number).\n" "To get rid of this message, remove the sketch from\n" "{1}" -msgstr "\"{0}\" eskema ezin da erabili.\nEskeman izenek bakarrik oinarrizko letrak eta zenbakiak eduki behar dituzte\n(espaziorik gabeko ASCII karaktereak eta ezin da zenbaki batekin hasi).\nMezu hau berriro ez agertzeko, eskema {1}-tik kendu" +msgstr "\"{0}\" programa ezin da erabili.\nPrograma izenek bakarrik oinarrizko letrak eta zenbakiak eduki behar dituzte\n(espaziorik gabeko ASCII karaktereak eta ezin da zenbaki batekin hasi).\nMezu hau berriro ez agertzeko, programa {1}-tik kendu" #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format msgid "The sketch already contains a file named \"{0}\"" -msgstr "Dagoeneko eskemak \"{0}\" izeneko fitxategi bat dauka" +msgstr "Dagoeneko programak \"{0}\" izeneko fitxategi bat dauka" #: Sketch.java:1755 msgid "" "The sketch folder has disappeared.\n" " Will attempt to re-save in the same location,\n" "but anything besides the code will be lost." -msgstr "Eskemen karpeta desagertu da.\nKokagune berdinean gordetzeko saiatuko egingo da,\nbaina kodeaz gaineko edozer galduko da." +msgstr "Programen karpeta desagertu da.\nKokagune berdinean berriro gordetzen saiatuko da,\nbaina kodea ez den guztia galduko da." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "Eskemaren izena aldatu behar izan da. Eskemen izenek ASCII letrak eta zenbakiak izan ditzakete soilik eta gehienez 64 karaktereko luzera izan dezakete. " +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Programaren izena aldatu behar izan da.\nProgramen izenak letra edo zenbaki batekin hasi behar dute eta ondoren letra,\nzenbakiak, marratxoak, puntuak eta azpimarrak erabili daitezke. Gehienez 63 karaktere erabili daitezke." #: Base.java:259 msgid "" @@ -2118,26 +2189,30 @@ msgid "" "location, and create a new sketchbook folder if\n" "necessary. Arduino will then stop talking about\n" "himself in the third person." -msgstr "Eskemen karpeta ez da existitzen.\nArduinok defektuzko eskema karpetara itzuliko da eta,\nbeharrezkoa izanez gero, eskema karpeta berria sortuko du." +msgstr "Programa bildumaren karpeta ez da existitzen.\nArduino programa bilduma karpeta lehenetsira itzuliko da eta\nbeharrezkoa izanez gero, programa bilduma karpeta berria sortuko du.\nOrduan Arduinok bere buruari buruz hirugarren pertsonan hitz\negiteari utziko dio." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 msgid "" "The specified sketchbook folder contains your copy of the IDE.\n" "Please choose a different folder for your sketchbook." -msgstr "Zehaztutako karpetaren barruan zure garapen ingurunearen (IDE) kopia dago.\nBeste karpeta bat aukeratu zure eskema gordetzeko." +msgstr "Zehaztutako programa bilduma karpetaren barruan garapen ingurunearen (IDE) kopia dago.\nAukeratu beste karpeta bat zure programa bilduma gordetzeko." + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Itxura: " #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" "Are you sure you want to delete it?" -msgstr "" +msgstr "Liburutegi hau ez dago liburutegi kudeatzailean zerrendatua. Ezin izango duzu berrinstalatu hemendik.\nZiur zaude ezabatu nahi duzula?" #: ../../../../../app/src/processing/app/EditorStatus.java:349 msgid "" "This report would have more information with\n" "\"Show verbose output during compilation\"\n" "option enabled in File -> Preferences.\n" -msgstr "" +msgstr "Txosten honek informazio gehiago izango luke\nFitxategia -> Hobespenak-en \"Erakutsi irteera zehaztuak konpilazioan \nzehar\" ezarpena gaitua egongo balitz.\n" #: Base.java:535 msgid "Time for a Break" @@ -2145,12 +2220,12 @@ msgstr "Atsedenerako denbora" #: ../../../../../arduino-core/src/processing/app/I18n.java:34 msgid "Timing" -msgstr "" +msgstr "Sinkronizatzen" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:94 #, java-format msgid "Tool {0} is not available for your operating system." -msgstr "" +msgstr "{0} tresna ez dago erabilgarri zure sistema eragilean." #: Editor.java:663 msgid "Tools" @@ -2158,7 +2233,7 @@ msgstr "Tresnak" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:97 msgid "Topic" -msgstr "" +msgstr "Gaia" #: Editor.java:1070 msgid "Troubleshooting" @@ -2171,15 +2246,15 @@ msgstr "Turkiera" #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:109 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:105 msgid "Type" -msgstr "" +msgstr "Mota" #: ../../../processing/app/Editor.java:2507 msgid "Type board password to access its console" -msgstr "Plakaren pasahitza idatz ezazu bere kontsolara sartzeko" +msgstr "Idatzi plakaren pasahitza bere kontsolara sartzeko" #: ../../../processing/app/Sketch.java:1673 msgid "Type board password to upload a new sketch" -msgstr "Idatzi plakaren pasahitza eskema kargatzeko" +msgstr "Idatzi plakaren pasahitza programa berria kargatzeko" #: ../../../processing/app/Preferences.java:118 msgid "Ukrainian" @@ -2188,42 +2263,42 @@ msgstr "Ukrainera" #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:142 #, java-format msgid "Unable to connect to {0}" -msgstr "" +msgstr "Ezin da konektatu {0}(e)ra" #: ../../../processing/app/Editor.java:2524 #: ../../../processing/app/NetworkMonitor.java:145 msgid "Unable to connect: is the sketch using the bridge?" -msgstr "Ezin izan da konektatu: eskema zubia erabiltzen ari da?" +msgstr "Ezin da konektatu: programa zubia erabiltzen ari da?" #: ../../../processing/app/NetworkMonitor.java:130 msgid "Unable to connect: retrying" -msgstr "Konektatu ezinezkoa da: Saiatzen" +msgstr "Ezin da konektatu: berriz saiatzen" #: ../../../processing/app/Editor.java:2526 msgid "Unable to connect: wrong password?" -msgstr "Konektatu ezinezkoa da: pasahitz okerra?" +msgstr "Ezin da konektatu: pasahitz okerra?" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:65 #, java-format msgid "Unable to find {0} in {1}" -msgstr "" +msgstr "Ezin da {0} aurkitu {1}(e)n:" #: ../../../processing/app/Editor.java:2512 msgid "Unable to open serial monitor" -msgstr "Serial-monitorea ireki ezinezkoa da." +msgstr "Ezin da serieko monitorea ireki" #: ../../../../../app/src/processing/app/Editor.java:2709 msgid "Unable to open serial plotter" -msgstr "" +msgstr "Ezin da serieko plotterra ireki" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:94 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 msgid "Unable to reach Arduino.cc due to possible network issues." -msgstr "" +msgstr "Ezin da Arduino.cc atzitu, posible da sareko arazoengatik izatea" #: ../../../../../arduino-core/src/processing/app/I18n.java:38 msgid "Uncategorized" -msgstr "" +msgstr "Sailkatu gabea" #: Editor.java:1133 Editor.java:1355 msgid "Undo" @@ -2232,28 +2307,28 @@ msgstr "Desegin" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:85 #, java-format msgid "Unhandled type {0} in context key {1}" -msgstr "" +msgstr "Kudeatu gabeko {0} mota {1} testuinguru gakoan" #: ../../../../../app//src/processing/app/Editor.java:2818 msgid "Unknown board" -msgstr "" +msgstr "Plaka ezezaguna" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format msgid "Unknown sketch file extension: {0}" -msgstr "Eskema fitxategi luzapen ezezaguna: {0}" +msgstr "Programa fitxategi luzapen ezezaguna: {0}" #: Platform.java:168 msgid "" "Unspecified platform, no launcher available.\n" "To enable opening URLs or folders, add a \n" "\"launcher=/path/to/app\" line to preferences.txt" -msgstr "Plataforma ezezaguna, Inongo jaurtitzailerik-Launcher ez dago.\nURLs-ak edo karpetak irekiz ahalbidetzeko, gaineratzen zara\n\"launcher=/path/to/app\"-lerroa preferences.txt-etara" +msgstr "Plataforma zehaztugabea, ez dago abiarazlerik erabilgarri.\nURLak edo karpetak irekitzea gaitzeko, gehitu\n\"launcher=/aplikaziorako/bidea\" lerroa preferences.txt-en" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownUpdatableLibrariesItem.java:27 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownUpdatableCoresItem.java:27 msgid "Updatable" -msgstr "" +msgstr "Eguneratu daiteke" #: UpdateCheck.java:111 msgid "Update" @@ -2261,26 +2336,26 @@ msgstr "Eguneratu" #: Preferences.java:428 msgid "Update sketch files to new extension on save (.pde -> .ino)" -msgstr "Eguneratu eskema luzapena gordetzean (.pde -> .ino)" +msgstr "Eguneratu luzapena (.pde -> .ino) programa fitxategiak gordetzean" #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:88 #, java-format msgid "Updates available for some of your {0}boards{1}" -msgstr "" +msgstr "Eguneraketak daude zure {0}plaketako{1} batzuentzat" #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:90 #, java-format msgid "Updates available for some of your {0}boards{1} and {2}libraries{3}" -msgstr "" +msgstr "Eguneraketak daude zure {0}plaketako{1} eta {2}liburutegietako{3} batzuentzat" #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:86 #, java-format msgid "Updates available for some of your {0}libraries{1}" -msgstr "" +msgstr "Eguneraketak daude zure {0}liburutegietako{1} batzuentzat" #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:167 msgid "Updating list of installed libraries" -msgstr "" +msgstr "Instalatutako liburutegien zerrenda eguneratzen" #: EditorToolbar.java:41 Editor.java:545 msgid "Upload" @@ -2288,23 +2363,23 @@ msgstr "Kargatu" #: EditorToolbar.java:46 Editor.java:553 msgid "Upload Using Programmer" -msgstr "Programagailu erabiliz kargatu" +msgstr "Kargatu programatzailea erabiliz" #: ../../../../../app//src/processing/app/Editor.java:2814 msgid "Upload any sketch to obtain it" -msgstr "Edozein eskema kargatu plakaren serie zenbakia lortzeko" +msgstr "Kargatu edozein programa plakaren serie zenbakia lortzeko" #: Editor.java:2403 Editor.java:2439 msgid "Upload canceled." -msgstr "Datu-karga bertan behera utzi da." +msgstr "Kargatzea bertan behera utzi da." #: ../../../processing/app/Sketch.java:1678 msgid "Upload cancelled" -msgstr "Utxi Kargaketa" +msgstr "Kargatzea bertan behera utzi da" #: Editor.java:2378 msgid "Uploading to I/O Board..." -msgstr "S/I Plakak Kargatzen ..." +msgstr "S/I plakara kargatzen ..." #: Sketch.java:1622 msgid "Uploading..." @@ -2312,31 +2387,31 @@ msgstr "Kargatzen..." #: Editor.java:1269 msgid "Use Selection For Find" -msgstr "Aurkikuntzarako Erabilera-Hautaketa" +msgstr "Erabili hautapena bilatzeko" #: Preferences.java:409 msgid "Use external editor" -msgstr "Kanpoko editorea erabili ezazu" +msgstr "Erabili kanpoko editorea" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:493 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:499 msgid "Username:" -msgstr "" +msgstr "Erabiltzaile-izena:" #: ../../../processing/app/debug/Compiler.java:410 #, java-format msgid "Using library {0} at version {1} in folder: {2} {3}" -msgstr "" +msgstr "{1} bertsioko {0} liburutegia {2} {3} karpetan erabiltzen" #: ../../../processing/app/debug/Compiler.java:94 #, java-format msgid "Using library {0} in folder: {1} {2}" -msgstr "{0} liburu-denda {1} {2} karpetan erabiliz:" +msgstr "{0} liburutegia {1} {2} karpetan erabiltzen" #: ../../../processing/app/debug/Compiler.java:320 #, java-format msgid "Using previously compiled file: {0}" -msgstr "Erabili lehenago bildutako fitxategia: {0}" +msgstr "Aurretik konpilatutako fitxategia erabiltzen: {0}" #: EditorToolbar.java:41 EditorToolbar.java:46 msgid "Verify" @@ -2344,37 +2419,37 @@ msgstr "Egiaztatu" #: Preferences.java:400 msgid "Verify code after upload" -msgstr "Kodea egiaztatzen duzu geroago kargatu" +msgstr "Egiaztatu kodea kargatu ondoren" #: ../../../../../app/src/processing/app/Editor.java:725 msgid "Verify/Compile" -msgstr "" +msgstr "Egiaztatu/Konpilatu" #: ../../../../../app/src/processing/app/Base.java:451 msgid "Verifying and uploading..." -msgstr "" +msgstr "Egiaztatzen eta kargatzen..." #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:71 msgid "Verifying archive integrity..." -msgstr "" +msgstr "Artxiboaren osotasuna egiaztatzen..." #: ../../../../../app/src/processing/app/Base.java:454 msgid "Verifying..." -msgstr "" +msgstr "Egiaztatzen..." #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:328 #, java-format msgid "Version {0}" -msgstr "" +msgstr "{0} bertsioa" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:326 msgid "Version unknown" -msgstr "" +msgstr "Bertsio ezezaguna" #: ../../../cc/arduino/contributions/libraries/ContributedLibrary.java:97 #, java-format msgid "Version {0}" -msgstr "" +msgstr "{0} bertsioa" #: ../../../processing/app/Preferences.java:154 msgid "Vietnamese" @@ -2382,24 +2457,24 @@ msgstr "Vietnamera" #: Editor.java:1105 msgid "Visit Arduino.cc" -msgstr "Arduino.cc bisita" +msgstr "Ikusi Arduino.cc" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:90 #, java-format msgid "WARNING: Category '{0}' in library {1} is not valid. Setting to '{2}'" -msgstr "" +msgstr "ABISUA: {1} liburutegiko '{0}' kategoria ez da baliozkoa. '{2}' ezarriko da." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:93 #, java-format msgid "WARNING: Spurious {0} folder in '{1}' library" -msgstr "" +msgstr "ABISUA: {0} karpeta faltsua '{1}' liburutegian" #: ../../../processing/app/debug/Compiler.java:115 #, java-format msgid "" "WARNING: library {0} claims to run on {1} architecture(s) and may be " "incompatible with your current board which runs on {2} architecture(s)." -msgstr "OHARTARAZPENA: {0} liburutegia {1} arkitekturan() funtzionatzen saiatzen da eta zure plakarekin, zeinek {2} arkitekturarekin() funtzionatzen duen, bateraezina izan liteke" +msgstr "ABISUA: {0} liburutegiak {1} arkitektur(et)an funtzionatzen duela dio eta baliteke {2} arkitektur(ar)ekin funtzionatzen duen zure uneko plakarekin bateraezina izatea." #: Base.java:2128 msgid "Warning" @@ -2409,51 +2484,51 @@ msgstr "Abisua" msgid "" "Warning: This core does not support exporting sketches. Please consider " "upgrading it or contacting its author" -msgstr "" +msgstr "Abisua: nukleo honek ez du programarik esportatzen uzten. Saiatu bertsio-berritzen edo egilearekin harremanetan jartzen." #: ../../../cc/arduino/utils/ArchiveExtractor.java:197 #, java-format msgid "Warning: file {0} links to an absolute path {1}" -msgstr "" +msgstr "Abisua: {0} fitxategia bide absolutu batekin estekatuta dago: {1}" #: ../../../cc/arduino/contributions/packages/ContributionsIndexer.java:133 msgid "Warning: forced trusting untrusted contributions" -msgstr "" +msgstr "Abisua: ekarpen ez fidagarriak fidagarri izatera behartu dira." #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:217 #, java-format msgid "Warning: forced untrusted script execution ({0})" -msgstr "" +msgstr "Abisua: ({0}) script ez fidagarriaren exekuzioa behartu da." #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:212 #, java-format msgid "Warning: non trusted contribution, skipping script execution ({0})" -msgstr "" +msgstr "Abisua: ekarpen ez fidagarria. Scripta ez da exekutatuko ({0})" #: ../../../processing/app/debug/LegacyTargetPlatform.java:158 #, java-format msgid "" "Warning: platform.txt from core '{0}' contains deprecated {1}, automatically" " converted to {2}. Consider upgrading this core." -msgstr "" +msgstr "Abisua: '{0}' nukleoko platform.txt fitxategiak zaharkitutako {1} dauka, automatikoki {2}(e)ra bihurtu da. Nukleo hau bertsio-berritzea hausnartu beharko zenuke." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:91 msgid "" "Warning: platform.txt from core '{0}' misses property '{1}', using default " "value '{2}'. Consider upgrading this core." -msgstr "" +msgstr "Abisua: '{0}' nukleoaren platform.txt-ari '{1}' propietatea falta zaio eta '{2}' lehenetsitako balioa erabiliko da. Nukleo hau bertsio-berritzea hausnartu beharko zenuke." #: ../../../../../app/src/processing/app/Preferences.java:190 msgid "Western Frisian" -msgstr "" +msgstr "Mendebaldeko frisiera" #: debug/Compiler.java:444 msgid "Wire.receive() has been renamed Wire.read()." -msgstr "Wire.receive() berrizendatu dute Wire.read()." +msgstr "Wire.receive() Wire.read() bezala berrizendatu da." #: debug/Compiler.java:438 msgid "Wire.send() has been renamed Wire.write()." -msgstr "Wire.send() berrizendatu dute Wire.write()." +msgstr "Wire.send() Wire.write() bezala berrizendatu da." #: FindReplace.java:105 msgid "Wrap Around" @@ -2463,7 +2538,7 @@ msgstr "Egokitu" msgid "" "Wrong microcontroller found. Did you select the right board from the Tools " "> Board menu?" -msgstr "Mikrokontrolatzaile okerra. Plaka aukeratu duzu era zuzenean menutik Erremintetatik > Plaka ?" +msgstr "Mikrokontrolatzaile okerra aurkitu da. Tresnak > Plaka menuan plaka zuzena hautatu duzu?" #: Preferences.java:77 UpdateCheck.java:108 msgid "Yes" @@ -2471,59 +2546,59 @@ msgstr "Bai" #: ../../../../../app/src/processing/app/Base.java:2312 msgid "You can't import a folder that contains your sketchbook" -msgstr "Ezin duzu inportatu zure eskema barne duen karpeta" +msgstr "Ezin duzu inportatu zure programa bilduma barne duen karpeta" #: Sketch.java:883 msgid "" "You cannot save the sketch into a folder\n" "inside itself. This would go on forever." -msgstr "Ezin duzu eskema gorde eskemaren karpetaren \nazpiko karpeta batean. Etengabeko errekurtsibitate arazoa sortuko luke." +msgstr "Ezin duzu programa gorde programaren karpetaren \nazpiko karpeta batean. Etengabeko errekurtsibitate arazoa sortuko luke." #: Base.java:1888 msgid "You forgot your sketchbook" -msgstr "Zure eskema ahaztu zenuen" +msgstr "Zure programa bilduma ahaztu zenuen" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:252 msgid "" "You have unsaved changes!\n" "You must save all your sketches to enable this option." -msgstr "Gorde gabeko aldaketak dituzu!\nZure eskema guztiak gorde behar dituzu ezarpen hau gaitzeko." +msgstr "Gorde gabeko aldaketak dituzu!\nZure programa guztiak gorde behar dituzu aukera hau gaitzeko." #: ../../../processing/app/AbstractMonitor.java:92 msgid "" "You've pressed {0} but nothing was sent. Should you select a line ending?" -msgstr "{0} zapaldu duzu baina ezer ez zuten bidali. Lerro-bukaera bat hautatu behar izango zenuke?" +msgstr "{0} sakatu duzu baina ezer ez da bidali. Lerro-bukaera bat hautatu beharko zenuke?" #: Base.java:536 msgid "" "You've reached the limit for auto naming of new sketches\n" "for the day. How about going for a walk instead?" -msgstr "Gaurkoz, eskema berrietan izena automatikoki ezartzeko \nmekanismoaren mugara iritsi zara." +msgstr "Gaurkoz, programa berrietan izena automatikoki ezartzeko \nmekanismoaren mugara iritsi zara. Paseotxo bat eman nahi duzu?" #: ../../../processing/app/BaseNoGui.java:768 msgid "" "Your copy of the IDE is installed in a subfolder of your settings folder.\n" "Please move the IDE to another folder." -msgstr "" +msgstr "Zure ezarpenak gordetzeko karpetaren azpikarpeta batean instalatu da IDE-aren zure kopia. \nEraman IDE-a beste karpeta batera." #: ../../../processing/app/BaseNoGui.java:771 msgid "" "Your copy of the IDE is installed in a subfolder of your sketchbook.\n" "Please move the IDE to another folder." -msgstr "Zure garapen ingurunea (IDE) eskema bildumaren azpikarpeta batean dago.\nMugitu IDE-a beste karpeta batera." +msgstr "Zure garapen ingurunea (IDE) programa bildumaren azpikarpeta batean dago.\nMugitu IDE-a beste karpeta batera." #: Base.java:2638 msgid "ZIP files or folders" -msgstr "ZIP-fitxategiak edo karpetak" +msgstr "Zip fitxategiak edo karpetak" #: Base.java:2661 msgid "Zip doesn't contain a library" -msgstr "ZIP ez dauka liburutegi bat" +msgstr "Zip fitxategiak ez dauka liburutegirik" #: Sketch.java:364 #, java-format msgid "\".{0}\" is not a valid extension." -msgstr "\".{0}\" ez da balio izandako luzapena." +msgstr "\".{0}\" ez da baliozko luzapen bat." #: ../../../../../arduino-core/src/processing/app/SketchCode.java:201 #, java-format @@ -2532,7 +2607,7 @@ msgid "" "older version of Arduino, you may need to use Tools -> Fix Encoding & Reload" " to update the sketch to use UTF-8 encoding. If not, you may need to delete " "the bad characters to get rid of this warning." -msgstr "\"{0}\"-k karaktere onartezinak ditu. Kodea Arduino bertsio zahar batekin egin bada, erabili Tresnak->Konpondu kodea eta kargatu eskema UTF-8-ra bihurtzeko. Bestela, karaktere okerrak borratu beharko dituzu abisu hau berriro ez agertzeko." +msgstr "\"{0}\"-(e)k karaktere ezezagunak ditu. Kodea Arduino bertsio zahar batekin sortu bazen, behar bada Tresnak->Konpondu kodeketa eta birkargatu programa erabili beharko duzu UTF-8ra bihurtzeko. Bestela, karaktere okerrak ezabatu beharko dituzu abisu hau berriro ez agertzeko." #: debug/Compiler.java:409 msgid "" @@ -2540,7 +2615,7 @@ msgid "" "As of Arduino 0019, the Ethernet library depends on the SPI library.\n" "You appear to be using it or another library that depends on the SPI library.\n" "\n" -msgstr "\n0019 Arduinotik aurrera, Ethernet-liburutegia SPI-liburutegiaren esku dago.\nHura erabiltzen ari izan iruditzen zara edo SPI-liburutegiaren esku dagoen beste liburutegi bat.\n" +msgstr "\nArduinotik 0019an Ethernet liburutegiak SPI liburutegiaren mendekotasuna du.\nHura edo SPI liburutegiaren mendekotasuna duen beste liburutegi bat erabiltzen ari zarela dirudi.\n\n" #: debug/Compiler.java:415 msgid "" @@ -2548,42 +2623,42 @@ msgid "" "As of Arduino 1.0, the 'BYTE' keyword is no longer supported.\n" "Please use Serial.write() instead.\n" "\n" -msgstr "\n1.0 Arduino-tik aurrera, 'BYTE' gako-hitza ez da supported.\njada mesedez Serial.write() erabili ezazu.\n" +msgstr "\nArduino 1.0an, 'BYTE' gako-hitza jada ez da onartzen.\nErabili Serial.write() bere ordez.\n\n" #: debug/Compiler.java:427 msgid "" "\n" "As of Arduino 1.0, the Client class in the Ethernet library has been renamed to EthernetClient.\n" "\n" -msgstr "\n1.0 Arduino-tik aurrera, Ethernet-liburutegiko Client klasea berrizendatu dute EthernetClient.\n" +msgstr "\nArduino 1.0an Ethernet liburutegiko Client klasea EthernetClient bezala berrizendatu da.\n\n" #: debug/Compiler.java:421 msgid "" "\n" "As of Arduino 1.0, the Server class in the Ethernet library has been renamed to EthernetServer.\n" "\n" -msgstr "\n1.0 Arduino-tik aurrera, Ethernet-liburutegiko Server klasea berrizendatu dute EthernetServer .\n" +msgstr "\nArduino 1.0an Ethernet liburutegiko Server klasea EthernetServer bezala berrizendatu da.\n\n" #: debug/Compiler.java:433 msgid "" "\n" "As of Arduino 1.0, the Udp class in the Ethernet library has been renamed to EthernetUdp.\n" "\n" -msgstr "\n1.0 Arduinotik aurrera, Ethernet-liburutegiko Udp klasea berrizendatu dute EthernetUdp.\n" +msgstr "\nArduino 1.0an Ethernet liburutegiko Udp klasea EthernetUdp bezala berrizendatu da.\n\n" #: debug/Compiler.java:445 msgid "" "\n" "As of Arduino 1.0, the Wire.receive() function was renamed to Wire.read() for consistency with other libraries.\n" "\n" -msgstr "\n 1.0 Arduino-tik aurrera, Wire.receive() funtzioa, beste libraries batzuekiko funtserako Wire.read() etara berrizendatu zuten.\n" +msgstr "\nArduino 1.0-tik aurrera, Wire.receive() funtzioa Wire.read()-ra aldatu zen beste liburutegi batzuekiko bateragarritasuna bermatzeko.\n\n" #: debug/Compiler.java:439 msgid "" "\n" "As of Arduino 1.0, the Wire.send() function was renamed to Wire.write() for consistency with other libraries.\n" "\n" -msgstr "\n1.0 Arduinotik aurrera, Wire.send()-funtzioa, beste liburutegi batzuekiko funtserako Wire.write() -etara berrizendatu zuten\n" +msgstr "\n1.0 Arduinotik aurrera, Wire.send()-funtzioa, beste liburutegi batzuekiko funtserako Wire.write() -etara berrizendatu zuten\n\n" #: SerialMonitor.java:130 SerialMonitor.java:133 msgid "baud" @@ -2591,15 +2666,15 @@ msgstr "baud" #: Preferences.java:389 msgid "compilation " -msgstr "konpilazio" +msgstr "konpilazioa " #: ../../../processing/app/NetworkMonitor.java:111 msgid "connected!" -msgstr "Konektatu !" +msgstr "konektatuta!" #: ../../../../../app/src/processing/app/Editor.java:1352 msgid "http://www.arduino.cc/" -msgstr "" +msgstr "http://www.arduino.cc/" #: UpdateCheck.java:118 msgid "http://www.arduino.cc/en/Main/Software" @@ -2612,15 +2687,21 @@ msgstr "http://www.arduino.cc/latest.txt" #: Preferences.java:625 #, java-format msgid "ignoring invalid font size {0}" -msgstr "Letra-tamaina elbarria {0} ez ikusi egin" +msgstr "{0} letra-tamaina baliogabeari ez ikusia egiten zaio" #: Editor.java:936 Editor.java:943 msgid "name is null" -msgstr "Izen nulu" +msgstr "izena nulua da" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "Ez da goiburu fitxategirik (.h) topatu {0}-(e)n" #: Editor.java:932 msgid "serialMenu is null" -msgstr "serialMenu-a nulua da" +msgstr "serialMenu nulua da" #: debug/Uploader.java:195 #, java-format @@ -2640,53 +2721,53 @@ msgstr "Kargatu" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:324 #, java-format msgid "version {0}" -msgstr "" +msgstr "{0} bertsioa" #: ../../../../../app/src/processing/app/Editor.java:2243 #, java-format msgid "{0} - {1} | Arduino {2}" -msgstr "" +msgstr "{0} - {1} | Arduino {2}" #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:39 #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:43 #, java-format msgid "{0} file signature verification failed" -msgstr "" +msgstr "{0} fitxategi-sinaduraren egiaztapenak huts egin du" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:310 #, java-format msgid "{0} file signature verification failed. File ignored." -msgstr "" +msgstr "{0} fitxategi-sinaduraren egiaztapenak huts egin du. Fitxategia ez da aintzat hartuko." #: Editor.java:380 #, java-format msgid "{0} files added to the sketch." -msgstr "Eskemari {0} fitxategi erantsi zaizkio." +msgstr "Programari {0} fitxategi erantsi zaizkio." #: ../../../../../app/src/processing/app/Base.java:1201 #, java-format msgid "{0} libraries" -msgstr "" +msgstr "{0} liburutegi" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:76 #, java-format msgid "{0} must be a folder" -msgstr "" +msgstr "{0} -(e)k karpeta izan behar du" #: ../../../../../app/src/processing/app/EditorLineStatus.java:109 #, java-format msgid "{0} on {1}" -msgstr "" +msgstr "{0} {1}(e)n" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:78 #, java-format msgid "{0} pattern is missing" -msgstr "" +msgstr "Ez da {0} eredurik topatzen" #: debug/Compiler.java:365 #, java-format msgid "{0} returned {1}" -msgstr "{0} itzuli {1}" +msgstr "{0}(e)k {1} itzuli du" #: Editor.java:2213 #, java-format @@ -2696,29 +2777,29 @@ msgstr "{0} | Arduino {1}" #: ../../../processing/app/Base.java:519 #, java-format msgid "{0}: Invalid argument to --pref, should be of the form \"pref=value\"" -msgstr "{0}: Argumentu elbarria --pref, \"pref=value\" formaren izan behar izango litzateke" +msgstr "{0}: Argumentu baliogabea --pref aukerarentzat, \"pref=balioa\" modukoa izan behar du" #: ../../../processing/app/Base.java:476 #, java-format msgid "" "{0}: Invalid board name, it should be of the form \"package:arch:board\" or " "\"package:arch:board:options\"" -msgstr "{0}: Plaka-izen elbarria, \"package:arch:board\" edo \"package:arch:board:options\" izan behar izango litzateke formaren." - -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: Aukera elbarria {1} plakarako {2} aukera" +msgstr "{0}: plakaren izen baliogabea, \"package:arch:board\" edo \"package:arch:board:options\" modukoa izan behar du" #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" -msgstr "{0}: Plakarako {1} aukera elbarria" +msgstr "{0}: {1} plakarentzako aukera baliogabea" #: ../../../processing/app/Base.java:502 #, java-format msgid "{0}: Invalid option, should be of the form \"name=value\"" -msgstr "{0}: Aukera elbarria, \"name=value\" formaren izan behar izango litzateke." +msgstr "{0}: Aukera baliogabea, \"name=value\" modukoa izan behar du" + +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: \"{2}\" plakaren \"{1}\" aukerarentzako balio ez onargarria" #: ../../../processing/app/Base.java:486 #, java-format @@ -2738,4 +2819,4 @@ msgstr "{0}: Pakete ezezaguna" #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format msgid "{0}Install this package{1} to use your {2} board" -msgstr "" +msgstr "{0}Instalatu pakete hau{1} zure {2} plaka erabiltzeko" diff --git a/arduino-core/src/processing/app/i18n/Resources_eu.properties b/arduino-core/src/processing/app/i18n/Resources_eu.properties index c6a12bf76d9..07bed5c25ac 100644 --- a/arduino-core/src/processing/app/i18n/Resources_eu.properties +++ b/arduino-core/src/processing/app/i18n/Resources_eu.properties @@ -17,93 +17,100 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: +# Asier Iturralde Sarasola , 2018 # @atzerritik, 2014 # Ivan Barquero , 2014 +# i\u00f1igo Gebara , 2018 # Ivan Barquero , 2014 -# Jos\u00e9 Miguel Andonegi , 2017 +# Jos\u00e9 Miguel Andonegi , 2017-2019 +# Jose Zabala , 2018 +# Jose Zabala , 2018 # Zylu , 2014 # Rub\u00e9n Garciand\u00eda , 2016 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-12-26 14\:20+0000\nLast-Translator\: Jos\u00e9 Miguel Andonegi \nLanguage-Team\: Basque (http\://www.transifex.com/mbanzi/arduino-ide-15/language/eu/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: eu\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2019-06-30 22\:48+0000\nLast-Translator\: Jos\u00e9 Miguel Andonegi \nLanguage-Team\: Basque (http\://www.transifex.com/mbanzi/arduino-ide-15/language/eu/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: eu\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 -\ \ (requires\ restart\ of\ Arduino)=(Arduinoa berrabiarazi behar da) +\ \ (requires\ restart\ of\ Arduino)=\ (Arduinoa berrabiarazi behar da) #: ../../../processing/app/debug/Compiler.java:529 #, java-format -\ Not\ used\:\ {0}=Erabil gabe\: {0} +\ Not\ used\:\ {0}=\ Erabili gabe\: {0} #: ../../../processing/app/debug/Compiler.java:525 #, java-format -\ Used\:\ {0}=Erabiltzen\: {0} +\ Used\:\ {0}=\ Erabilia\: {0} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:558 -'Keyboard'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?=Ezin da aurkitu 'Teklatua'. Zure eskemak '\#include ' lerroa dauka? +'Keyboard'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?=Ezin da aurkitu 'Teklatua'. Zure programak '\#include ' lerroa dauka? #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:553 -'Mouse'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?=Ezin da aurkitu 'Sagua'. Zure eskemak '\#include ' lerroa dauka? +'Mouse'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?=Ezin da aurkitu 'Sagua'. Zure programak '\#include ' lerroa dauka? #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:61 -'arch'\ folder\ is\ no\ longer\ supported\!\ See\ http\://goo.gl/gfFJzU\ for\ more\ information=(zaharra) +'arch'\ folder\ is\ no\ longer\ supported\!\ See\ http\://goo.gl/gfFJzU\ for\ more\ information='arch' karpetak ez dauka euskarririk jada\! Ikusi http\://goo.gl/gfFJzU informazio gehiagorako #: Preferences.java:478 -(edit\ only\ when\ Arduino\ is\ not\ running)=(soilik editatu Arduino lanean ez dagoenean ) +(edit\ only\ when\ Arduino\ is\ not\ running)=(Arduino exekutatzen ari ez denean soilik editatu) #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 (legacy)=(zaharra) #: ../../../processing/app/helpers/CommandlineParser.java:149 ---curdir\ no\ longer\ supported=Dagoeneko -curdir ez da onartzen +--curdir\ no\ longer\ supported=Dagoeneko --curdir ez da onartzen #: ../../../processing/app/Base.java:468 -!--verbose,\ --verbose-upload\ and\ --verbose-build\ can\ only\ be\ used\ together\ with\ --verify\ or\ --upload= +--verbose,\ --verbose-upload\ and\ --verbose-build\ can\ only\ be\ used\ together\ with\ --verify\ or\ --upload=--verbose, --verbose-upload eta --verbose-build erabiltzeko beharrezkoa da --verify edo --upload erabiltzea #: Sketch.java:746 .pde\ ->\ .ino=.pde -> .ino #: Editor.java:2053 -\ \ b\ {\ font\:\ 13pt\ "Lucida\ Grande"\ }p\ {\ font\:\ 11pt\ "Lucida\ Grande";\ margin-top\:\ 8px\ }\ Do\ you\ want\ to\ save\ changes\ to\ this\ sketch
\ before\ closing?

If\ you\ don't\ save,\ your\ changes\ will\ be\ lost.= Eskema honetarako aldaketak gorde nahi dituzu
itxi aurretik?

Ez baduzu gordetzen, zure aldaketak galduko dira. +\ \ b\ {\ font\:\ 13pt\ "Lucida\ Grande"\ }p\ {\ font\:\ 11pt\ "Lucida\ Grande";\ margin-top\:\ 8px\ }\ Do\ you\ want\ to\ save\ changes\ to\ this\ sketch
\ before\ closing?

If\ you\ don't\ save,\ your\ changes\ will\ be\ lost.= Programa honi egindako aldaketak gorde nahi dituzu
itxi aurretik?

Ez baduzu gordetzen, zure aldaketak galduko dira. #: Editor.java:2169 #, java-format -A\ folder\ named\ "{0}"\ already\ exists.\ Can't\ open\ sketch.=Dagoeneko {0} izeneko karpeta bat existitzen da. Ezin da eskema ireki. +A\ folder\ named\ "{0}"\ already\ exists.\ Can't\ open\ sketch.=Dagoeneko {0} izeneko karpeta bat existitzen da. Ezin da programa ireki. #: Base.java:2690 #, java-format A\ library\ named\ {0}\ already\ exists=Dagoeneko {0} izeneko liburutegi bat existitzen da #: UpdateCheck.java:103 -A\ new\ version\ of\ Arduino\ is\ available,\nwould\ you\ like\ to\ visit\ the\ Arduino\ download\ page?=Arduinoren bertsio berri bat eskuragarri dago,\nArduinoren deskargako orria bisitatzea nahi duzu? +A\ new\ version\ of\ Arduino\ is\ available,\nwould\ you\ like\ to\ visit\ the\ Arduino\ download\ page?=Arduinoren bertsio berri bat eskuragarri dago,\nArduinoren deskargen orria bisitatu nahi duzu? #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format A\ newer\ {0}\ package\ is\ available={0} pakete berriagoa eskuragarri dago #: ../../../../../app/src/processing/app/Base.java:2307 -A\ subfolder\ of\ your\ sketchbook\ is\ not\ a\ valid\ library=Zure eskema bildumaren azpikarpeta bat ez da liburutegi onargarria +A\ subfolder\ of\ your\ sketchbook\ is\ not\ a\ valid\ library=Zure programa bildumaren azpikarpeta bat ez da liburutegi onargarria #: Editor.java:1116 About\ Arduino=Arduinori buruz #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 -!Acoli= +Acoli=Acholiera #: ../../../../../app/src/processing/app/Base.java:1177 -Add\ .ZIP\ Library...=Erantsi .zip liburutegia... +Add\ .ZIP\ Library...=Gehitu .zip liburutegia... #: Editor.java:650 -Add\ File...=Fitxategia gehitu... +Add\ File...=Gehitu fitxategia... #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:73 Additional\ Boards\ Manager\ URLs=Plaka kudeatzaile gehigarrien URLak #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:268 -Additional\ Boards\ Manager\ URLs\:\ =Plaka kudeatzaile gehigarrien URLak\: +Additional\ Boards\ Manager\ URLs\:\ =Plaka kudeatzaile gehigarrien URLak\: #: ../../../../../app/src/processing/app/Preferences.java:161 Afrikaans=Afrikaansa #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 -!Aggressively\ cache\ compiled\ core= +Aggressively\ cache\ compiled\ core=Cachetik azkar konpilatutako nukleoa #: ../../../processing/app/Preferences.java:96 Albanian=Albaniera @@ -114,24 +121,24 @@ Albanian=Albaniera All=Denak #: tools/FixEncoding.java:77 -An\ error\ occurred\ while\ trying\ to\ fix\ the\ file\ encoding.\nDo\ not\ attempt\ to\ save\ this\ sketch\ as\ it\ may\ overwrite\nthe\ old\ version.\ Use\ Open\ to\ re-open\ the\ sketch\ and\ try\ again.\n=Arazo bat gertatu da fitxategiaren kodifikazioa konpontzen saiatzean.\nEz saiatu eskema hau gordetzen, aurreko bertsioa gainidatzi baitezake.\nZabaldu sakatu eskema berriro zabaltzeko eta saiatu berriro.\n +An\ error\ occurred\ while\ trying\ to\ fix\ the\ file\ encoding.\nDo\ not\ attempt\ to\ save\ this\ sketch\ as\ it\ may\ overwrite\nthe\ old\ version.\ Use\ Open\ to\ re-open\ the\ sketch\ and\ try\ again.\n=Arazo bat gertatu da fitxategiaren kodifikazioa konpontzen saiatzean.\nEz saiatu programa hau gordetzen, aurreko bertsioa gainidatzi baitezake.\nIreki sakatu programa berriro zabaltzeko eta saiatu berriro.\n #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:99 An\ error\ occurred\ while\ updating\ libraries\ index\!=Errorea gertatu da liburutegien indizea eguneratzean #: ../../../processing/app/BaseNoGui.java:528 -An\ error\ occurred\ while\ uploading\ the\ sketch=Errorea gertatu da eskema kargatzerakoan +An\ error\ occurred\ while\ uploading\ the\ sketch=Errorea gertatu da programa kargatzerakoan #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 -An\ error\ occurred\ while\ verifying\ the\ sketch=Errorea gertatu da eskema egiaztatzerakoan +An\ error\ occurred\ while\ verifying\ the\ sketch=Errorea gertatu da programa egiaztatzerakoan #: ../../../processing/app/BaseNoGui.java:521 -An\ error\ occurred\ while\ verifying/uploading\ the\ sketch=Errorea gertatu da eskema egiaztatzerakoan edo kargatzerakoan +An\ error\ occurred\ while\ verifying/uploading\ the\ sketch=Errorea gertatu da programa egiaztatzerakoan edo kargatzerakoan #: Base.java:228 -An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ for\ your\ machine.=Akats ezezagun bat gertatu da kargatzen saiatzerakoan\nkodigoa zure makonaren plataformako espezifikoa da. +An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ for\ your\ machine.=Errore ezezagun bat gertatu da zure makinan\nplataforma-espezifikoa den kodea kargatzen saiatzean. #: Preferences.java:85 Arabic=Arabiera @@ -140,65 +147,65 @@ Arabic=Arabiera Aragonese=Aragoiera #: tools/Archiver.java:48 -Archive\ Sketch=Eskema gorde +Archive\ Sketch=Artxibatu programa #: tools/Archiver.java:109 -Archive\ sketch\ as\:=Gorde eskema honela\: +Archive\ sketch\ as\:=Artxibatu programa honela\: #: tools/Archiver.java:139 -Archive\ sketch\ canceled.=Eskemaren gordetzea bertan behera utzi da.. +Archive\ sketch\ canceled.=Programa artxibatzea bertan behera utzi da. #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format -!Archiving\ built\ core\ (caching)\ in\:\ {0}= +Archiving\ built\ core\ (caching)\ in\:\ {0}=Cachetik sortutako nukleoa hemen gordetzen\: {0} #: tools/Archiver.java:75 -Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.=Eskemaren gordetzea bertan behera utzi da\neskema ezin baita ondo gorde. +Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.=Programa artxibatzea bertan behera utzi da\nprograma ezin izan delako ondo gorde. #: ../../../../../arduino-core/src/processing/app/I18n.java:24 Arduino=Arduino #: ../../../processing/app/I18n.java:83 -Arduino\ ARM\ (32-bits)\ Boards=Arduino ARM (32-bit) Plakak +Arduino\ ARM\ (32-bits)\ Boards=Arduino ARM (32-bit) plakak #: ../../../processing/app/I18n.java:82 -Arduino\ AVR\ Boards=Arduino AVR Plakak +Arduino\ AVR\ Boards=Arduino AVR plakak #: Editor.java:2137 -Arduino\ can\ only\ open\ its\ own\ sketches\nand\ other\ files\ ending\ in\ .ino\ or\ .pde=Arduinok .ino edo .pde\namaiera duten fitxategiak soilik ireki ditzake +Arduino\ can\ only\ open\ its\ own\ sketches\nand\ other\ files\ ending\ in\ .ino\ or\ .pde=Arduinok bere programa propioak eta .ino edo .pde\namaiera duten beste fitxategiak soilik ireki ditzake #: Base.java:1682 -Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ settings.=Arduinok ezin du funtzionatu ezin duelako karpeta\nbat zure konfigurazioa gordetzeko sortu. +Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ settings.=Arduinok ezin du funtzionatu ezin izan duelako\nzure ezarpenak gordetzeko karpeta sortu. #: Base.java:1889 -Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ sketchbook.=Arduinok ezin du funtzionatu ezin duelako karpeta\nbat sortu zure eskema bilduman. +Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ sketchbook.=Arduinok ezin du funtzionatu ezin izan duelako\nzure programa bilduma gordetzeko karpeta sortu. #: ../../../processing/app/EditorStatus.java:471 -Arduino\:\ =Arduino\: +Arduino\:\ =Arduino\: #: Sketch.java:588 #, java-format -Are\ you\ sure\ you\ want\ to\ delete\ "{0}"?="{0}" ezabatu nahi duzula seguru zara? +Are\ you\ sure\ you\ want\ to\ delete\ "{0}"?=Ziur zaude "{0}" ezabatu nahi duzula? #: Sketch.java:587 -Are\ you\ sure\ you\ want\ to\ delete\ this\ sketch?=Zur eskema hau ezabatu nahi duzula? +Are\ you\ sure\ you\ want\ to\ delete\ this\ sketch?=Ziur zaude programa hau ezabatu nahi duzula? #: ../../../processing/app/Base.java:356 -Argument\ required\ for\ --board=Argumentua beharrezkoa da --plakarako +Argument\ required\ for\ --board=Argumentua beharrezkoa da --board aukerarentzat #: ../../../processing/app/Base.java:363 -Argument\ required\ for\ --port=Argumentua beharrezkoa da --atakarako +Argument\ required\ for\ --port=Argumentua beharrezkoa da --port aukerarentzat #: ../../../processing/app/Base.java:377 -Argument\ required\ for\ --pref=Argumentua beharrezkoa da --pref arako +Argument\ required\ for\ --pref=Argumentua beharrezkoa da --pref aukerarentzat #: ../../../processing/app/Base.java:384 -Argument\ required\ for\ --preferences-file=Argumentua beharrezkoa da --Hobespen fitxategirako +Argument\ required\ for\ --preferences-file=Argumentua beharrezkoa da --preferences-file aukerarentzat #: ../../../processing/app/helpers/CommandlineParser.java:76 #: ../../../processing/app/helpers/CommandlineParser.java:83 #, java-format -Argument\ required\ for\ {0}=Argumentua beharrezkoa da {0}-rako +Argument\ required\ for\ {0}=Argumentua beharrezkoa da {0} aukerarentzat #: ../../../processing/app/Preferences.java:137 Armenian=Armeniera @@ -210,7 +217,7 @@ Asturian=Bable Authorization\ required=Baimena beharrezkoa #: tools/AutoFormat.java:91 -Auto\ Format=Formatu Automatikoa. +Auto\ Format=Formatu automatikoa #: tools/AutoFormat.java:944 Auto\ Format\ finished.=Formatu automatikoa bukatu da. @@ -222,17 +229,17 @@ Auto-detect\ proxy\ settings=Proxy-aren ezarpenak automatikoki detektatu Automatic=Automatikoa #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:474 -Automatic\ proxy\ configuration\ URL\:=Proxy-aren ezarpen automatikoen URL-a\: +Automatic\ proxy\ configuration\ URL\:=Proxy-aren ezarpen automatikoen URLa\: #: SerialMonitor.java:110 -Autoscroll=Autoscroll +Autoscroll=Korritze automatikoa #: Editor.java:2619 #, java-format Bad\ error\ line\:\ {0}=Errore lerroa\: {0} #: Editor.java:2136 -Bad\ file\ selected=Hautatutako fitxategi txarra da +Bad\ file\ selected=Fitxategi okerra hautatuta #: ../../../processing/app/Preferences.java:149 Basque=Euskara @@ -258,10 +265,10 @@ Board\ {0}\ (platform\ {1},\ package\ {2})\ is\ unknown=Plaka {0} ezezaguna ({1} #: ../../../processing/app/debug/TargetBoard.java:42 #, java-format -Board\ {0}\:{1}\:{2}\ doesn''t\ define\ a\ ''build.board''\ preference.\ Auto-set\ to\:\ {3}=Plaka {0}\:{1}\:{2} ez du definitzen ''build.board'' lehentasuna. Auto-seta\: {3} etara +Board\ {0}\:{1}\:{2}\ doesn''t\ define\ a\ ''build.board''\ preference.\ Auto-set\ to\:\ {3}={0}\:{1}\:{2} plakak ez du ''build.board'' hobespena definitzen. Balio hau ezarri da automatikoki\: {3} #: ../../../processing/app/EditorStatus.java:472 -Board\:\ =Plaka\: +Board\:\ =Plaka\: #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 Boards\ Manager=Plaken kudeatzailea @@ -274,22 +281,22 @@ Boards\ included\ in\ this\ package\:=Pakete honetan sartutako plakak\: #: ../../../processing/app/debug/Compiler.java:1273 #, java-format -!Bootloader\ file\ specified\ but\ missing\:\ {0}= +Bootloader\ file\ specified\ but\ missing\:\ {0}=Abiarazte-kudeatzailearen fitxategia zehaztu da baina ez dago\: {0} #: ../../../processing/app/Preferences.java:140 Bosnian=Bosniera #: SerialMonitor.java:112 -Both\ NL\ &\ CR=NL & CR Biak +Both\ NL\ &\ CR=NL & CR biak #: Preferences.java:81 -Browse=Bilatu +Browse=Arakatu #: ../../../processing/app/Sketch.java:1530 -Build\ options\ changed,\ rebuilding\ all=Konpilazio-aukerak aldatu dira, guztia berkonpilatzen +Build\ options\ changed,\ rebuilding\ all=Konpilazio-aukerak aldatu dira, guztia berriz konpilatzen #: ../../../../../app/src/processing/app/Base.java:1210 -!Built-in\ Examples= +Built-in\ Examples=Berezko adibideak #: ../../../processing/app/Preferences.java:80 Bulgarian=Bulgariera @@ -298,34 +305,34 @@ Bulgarian=Bulgariera Burmese\ (Myanmar)=Myanmarniera #: Editor.java:708 -Burn\ Bootloader=Idatzi Bootloader-a +Burn\ Bootloader=Kargatu abiarazte-kudeatzailea #: Editor.java:2504 -Burning\ bootloader\ to\ I/O\ Board\ (this\ may\ take\ a\ minute)...=Bootloader-a S/I plakaN idazten (honek minutu bat har dezake)... +Burning\ bootloader\ to\ I/O\ Board\ (this\ may\ take\ a\ minute)...=Abiarazte-kudeatzailea S/I plakan kargatzen (honek minutu bat har dezake)... #: ../../../../../arduino-core/src/cc/arduino/contributions/DownloadableContributionsDownloader.java:91 -!CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.= +CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.=CRC ez dator bat, fitxategia hondatuta dago. Behin-behineko arazoa izan daiteke, saiatu beranduago. #: ../../../processing/app/Base.java:379 #, java-format -!Can\ only\ pass\ one\ of\:\ {0}= +Can\ only\ pass\ one\ of\:\ {0}=Hauetako bat pasa daiteke soilik\: {0} #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 -!Can't\ enable\ external\ editor= +Can't\ enable\ external\ editor=Ezin da gaitu kanpoko editorea #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 -Can't\ find\ the\ sketch\ in\ the\ specified\ path=Ezin da aurkitu eskema zehaztutako bidean +Can't\ find\ the\ sketch\ in\ the\ specified\ path=Ezin da aurkitu programa zehaztutako bidean #: ../../../processing/app/Preferences.java:92 -Canadian\ French=Canada-frantses +Canadian\ French=Kanadako frantsesa #: Preferences.java:79 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2064 Editor.java:2145 Editor.java:2465 Cancel=Utzi #: ../../../processing/app/Base.java:465 -Cannot\ specify\ any\ sketch\ files=Ezin da eskema fitxategirik zehaztu +Cannot\ specify\ any\ sketch\ files=Ezin da programa fitxategirik zehaztu #: SerialMonitor.java:112 Carriage\ return=Orga-itzulera @@ -334,224 +341,231 @@ Carriage\ return=Orga-itzulera Catalan=Katalana #: Preferences.java:419 -Check\ for\ updates\ on\ startup=Eguneratzeak bilatzen ditu Hasieran +Check\ for\ updates\ on\ startup=Egiaztatu eguneratzerik baden abioan #: ../../../processing/app/Preferences.java:142 -Chinese\ (China)=Txinera(Txina) +Chinese\ (China)=Txinera (Txina) #: ../../../processing/app/Preferences.java:144 Chinese\ (Taiwan)=Txinera (Taiwan) #: ../../../processing/app/Preferences.java:143 -Chinese\ (Taiwan)\ (Big5)=Txinera (Taiwan)(Big5) +Chinese\ (Taiwan)\ (Big5)=Txinera (Taiwan) (Big5) #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 -!Clear\ output= +Clear\ output=Garbitu irteera #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 -!Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs= +Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs=Klik egin ofizialak ez diren plaken laguntza-URL zerrenda ikusteko #: Editor.java:521 Editor.java:2024 Close=Itxi #: Editor.java:1208 Editor.java:2749 -Comment/Uncomment=Iruzkina / iruzkina desegitea +Comment/Uncomment=Iruzkindu / Desiruzkindu #: ../../../../../arduino-core/src/processing/app/I18n.java:30 -!Communication= +Communication=Komunikazioa #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 -!Compiler\ warnings\:\ = +Compiler\ warnings\:\ =Konpiladorearen abisuak\: #: Sketch.java:1608 Editor.java:1890 -Compiling\ sketch...=Eskema konpilatzen... +Compiling\ sketch...=Programa konpilatzen... #: ../../../../../arduino-core/src/processing/app/I18n.java:27 -!Contributed= +Contributed=Kolaborazio bidezkoak #: Editor.java:1157 Editor.java:2707 Copy=Kopiatu #: Editor.java:1177 Editor.java:2723 -Copy\ as\ HTML=HTMLa bezala kopia +Copy\ as\ HTML=Kopiatu HTML bezala #: ../../../processing/app/EditorStatus.java:455 -Copy\ error\ messages=Errore-mezua kopia ezazu +Copy\ error\ messages=Kopiatu errore-mezuak #: Editor.java:1165 Editor.java:2715 -Copy\ for\ Forum=Fororako Kopia +Copy\ for\ Forum=Kopiatu Fororako #: Sketch.java:1089 #, java-format -Could\ not\ add\ ''{0}''\ to\ the\ sketch.=Ezin izango litzateke gehitu ''{0}'' eskemara. +Could\ not\ add\ ''{0}''\ to\ the\ sketch.=Ezin izan da ''{0}'' gehitu programara. #: Editor.java:2188 -Could\ not\ copy\ to\ a\ proper\ location.=Ezin izan zen kopiatu kokapen egokian. +Could\ not\ copy\ to\ a\ proper\ location.=Ezin izan da kopiatu kokapen egokian. #: ../../../../../arduino-core/src/processing/app/Sketch.java:342 #, java-format -!Could\ not\ create\ directory\ "{0}"= +Could\ not\ create\ directory\ "{0}"=Ezin izan da "{0}" direktorioa sortu #: Editor.java:2179 -Could\ not\ create\ the\ sketch\ folder.=Ezin da eskema karpeta sortu. +Could\ not\ create\ the\ sketch\ folder.=Ezin izan da programa karpeta sortu. #: Editor.java:2206 -Could\ not\ create\ the\ sketch.=Ezin da eskema sortu +Could\ not\ create\ the\ sketch.=Ezin izan da programa sortu #: Sketch.java:617 #, java-format -Could\ not\ delete\ "{0}".=\ "{0}" ezin da ezabatu +Could\ not\ delete\ "{0}".=Ezin izan da "{0}" ezabatu. #: Sketch.java:1066 #, java-format -Could\ not\ delete\ the\ existing\ ''{0}''\ file.=Ezin izango litzateke ezabatu oraingoa ''{0}'' fitxategia. +Could\ not\ delete\ the\ existing\ ''{0}''\ file.=Ezin izan da ezabatu lehendik dagoen ''{0}'' fitxategia. #: ../../../processing/app/debug/TargetPlatform.java:74 #, java-format -Could\ not\ find\ boards.txt\ in\ {0}.\ Is\ it\ pre-1.5?=Ezin du boards.tx-ik aurkitu {0}-etan. -1,5 bertsioaren aurrekoa da ? +Could\ not\ find\ boards.txt\ in\ {0}.\ Is\ it\ pre-1.5?=Ezin izan da boards.txt aurkitu {0}-(e)n. 1.5 bertsioaren aurrekoa da? #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:282 #, java-format -Could\ not\ find\ tool\ {0}=Ez du {0} tresna aurkitzen +Could\ not\ find\ tool\ {0}=Ezin izan da {0} tresna aurkitu #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:278 #, java-format -Could\ not\ find\ tool\ {0}\ from\ package\ {1}=Ez du pakete {1}-eko tresna {0} aurkitzen +Could\ not\ find\ tool\ {0}\ from\ package\ {1}=Ezin izan da {1} paketeko {0} tresna aurkitu #: Base.java:1934 #, java-format -Could\ not\ open\ the\ URL\n{0}=URL-a ezin da ireki\n{0} +Could\ not\ open\ the\ URL\n{0}=Ezin izan da URLa ireki\n{0} #: Base.java:1958 #, java-format -Could\ not\ open\ the\ folder\n{0}=Karpeta ezin da ireki\n{0} +Could\ not\ open\ the\ folder\n{0}=Ezin izan da karpeta ireki\n{0} #: Sketch.java:1769 -Could\ not\ properly\ re-save\ the\ sketch.\ You\ may\ be\ in\ trouble\ at\ this\ point,\nand\ it\ might\ be\ time\ to\ copy\ and\ paste\ your\ code\ to\ another\ text\ editor.=Ezin izan da eskema birgorde. Egindako lana ez galtzeko\ngomendagarria da zure kodea kopiatzea eta beste testu-editore batean itsastea. +Could\ not\ properly\ re-save\ the\ sketch.\ You\ may\ be\ in\ trouble\ at\ this\ point,\nand\ it\ might\ be\ time\ to\ copy\ and\ paste\ your\ code\ to\ another\ text\ editor.=Ezin izan da programa berriz gorde. Egindako lana ez galtzeko\ngomendagarria da zure kodea kopiatzea eta beste testu-editore batean itsastea. #: Sketch.java:1768 -Could\ not\ re-save\ sketch=Ezin izan da eskema birgorde +Could\ not\ re-save\ sketch=Ezin izan da programa berriz gorde #: Theme.java:52 -!Could\ not\ read\ color\ theme\ settings.\nYou'll\ need\ to\ reinstall\ Arduino.= +Could\ not\ read\ color\ theme\ settings.\nYou'll\ need\ to\ reinstall\ Arduino.=Ezin izan dira kolore itxuraren ezarpenak irakurri.\nArduino berriz instalatu beharko duzu. #: Preferences.java:219 -Could\ not\ read\ default\ settings.\nYou'll\ need\ to\ reinstall\ Arduino.=Ezarpen lehenetsiak ezin dira irakurri.\nArduino Instalatu berriro behar izango duzu. +Could\ not\ read\ default\ settings.\nYou'll\ need\ to\ reinstall\ Arduino.=Ezin izan dira ezarpen lehenetsiak irakurri.\nArduino berriz instalatu beharko duzu. #: Base.java:2482 #, java-format -Could\ not\ remove\ old\ version\ of\ {0}=Ezin izango litzateke kendu bertsio zaharra{0} +Could\ not\ remove\ old\ version\ of\ {0}=Ezin izan da {0}(r)en bertsio zaharra kendu #: Base.java:2492 #, java-format -Could\ not\ replace\ {0}=Ezin izango luke ordeztu {0} +Could\ not\ replace\ {0}=Ezin izan da {0} ordeztu + +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=Ezin izan da hobespenen fitxategia idatzi\: {0} #: tools/Archiver.java:74 -Couldn't\ archive\ sketch=Ezin izan da eskema artxibatu +Couldn't\ archive\ sketch=Ezin izan da programa artxibatu #: Sketch.java:1647 -Couldn't\ determine\ program\ size\:\ {0}=Ezin izango luke erabaki programa-neurria\: {0} +Couldn't\ determine\ program\ size\:\ {0}=Ezin izan da programaren tamaina zehaztu\: {0} #: Sketch.java:616 -Couldn't\ do\ it=Ezin da egin +Couldn't\ do\ it=Ezin izan da egin #: debug/BasicUploader.java:209 -Couldn't\ find\ a\ Board\ on\ the\ selected\ port.\ Check\ that\ you\ have\ the\ correct\ port\ selected.\ \ If\ it\ is\ correct,\ try\ pressing\ the\ board's\ reset\ button\ after\ initiating\ the\ upload.=Ezin du inongo plakarik aurkitu aukeratutako atakan. Ataka zuzena duzula hautatuta egiaztatu ezazu. Zuzena bada, kargatu hasi ondoren reset-botoia sakatzen du. +Couldn't\ find\ a\ Board\ on\ the\ selected\ port.\ Check\ that\ you\ have\ the\ correct\ port\ selected.\ \ If\ it\ is\ correct,\ try\ pressing\ the\ board's\ reset\ button\ after\ initiating\ the\ upload.=Ezin izan da plakarik aurkitu hautatutako atakan. Egiaztatu ataka zuzena hautatu duzula. Zuzena bada, saiatu plaka berrezartzeko botoia sakatzen karga hasi ondoren. #: ../../../processing/app/Preferences.java:82 -Croatian=\ kroaziera +Croatian=Kroaziera #: Editor.java:1149 Editor.java:2699 Cut=Ebaki #: ../../../../../app/src/processing/app/Preferences.java:119 -!Czech\ (Czech\ Republic)= +Czech\ (Czech\ Republic)=Txekiera (Txekiar Errepublika) #: ../../../../../app/src/processing/app/Preferences.java:120 -!Danish\ (Denmark)= +Danish\ (Denmark)=Daniera (Danimarka) #: ../../../../../arduino-core/src/processing/app/I18n.java:36 -!Data\ Processing= +Data\ Processing=Datu prozesaketa #: ../../../../../arduino-core/src/processing/app/I18n.java:35 -!Data\ Storage= +Data\ Storage=Datu prozesaketa #: ../../../../../app/src/processing/app/Editor.java:1386 -!Decrease\ Font\ Size= +Decrease\ Font\ Size=Txikiagotu letra-tamaina #: Editor.java:1224 Editor.java:2765 -Decrease\ Indent=Txikitu koska +Decrease\ Indent=Txikiagotu koska #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 -!Default= +Default=Lehenetsia + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=Lehenetsitako itxura #: EditorHeader.java:314 Sketch.java:591 Delete=Ezabatu #: ../../../../../arduino-core/src/processing/app/I18n.java:33 -!Device\ Control= +Device\ Control=Gailuaren kontrola #: debug/Uploader.java:199 -Device\ is\ not\ responding,\ check\ the\ right\ serial\ port\ is\ selected\ or\ RESET\ the\ board\ right\ before\ exporting=Gailuak ez du erantzuten, egiaztatzen du serieko ataka zuzena hau aukeratuta edo resetea plaka esportatu baino lehen +Device\ is\ not\ responding,\ check\ the\ right\ serial\ port\ is\ selected\ or\ RESET\ the\ board\ right\ before\ exporting=Gailuak ez du erantzuten, egiaztatu serieko ataka zuzena hautatuta dagoela edo BERREZARRI plaka esportatu baino lehen #: tools/FixEncoding.java:57 -Discard\ all\ changes\ and\ reload\ sketch?=Baztertu aldaketa guztiak eta eskema berriro kargatu? +Discard\ all\ changes\ and\ reload\ sketch?=Baztertu aldaketa guztiak eta programa berriro kargatu? #: ../../../../../arduino-core/src/processing/app/I18n.java:29 -!Display= +Display=Bistaratu #: ../../../processing/app/Preferences.java:438 -Display\ line\ numbers=Lerro-zenbakiak erakusten ditu +Display\ line\ numbers=Bistaratu lerro-zenbakiak #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:195 #, java-format -!Do\ you\ want\ to\ remove\ {0}?\nIf\ you\ do\ so\ you\ won't\ be\ able\ to\ use\ {0}\ any\ more.= +Do\ you\ want\ to\ remove\ {0}?\nIf\ you\ do\ so\ you\ won't\ be\ able\ to\ use\ {0}\ any\ more.={0} kendu nahi duzu?\nHala eginez gero ezingo duzu {0} gehiago erabili. #: Editor.java:2064 -Don't\ Save=Ez Gorde +Don't\ Save=Ez gorde #: Editor.java:2275 Editor.java:2311 -Done\ Saving.=Gordeta bukatu +Done\ Saving.=Gordetzea burutu da. #: Editor.java:2510 -Done\ burning\ bootloader.=Bootloader-erreketa bukatuta. +Done\ burning\ bootloader.=Abiarazte-kudeatzailea kargatzea burutu da. #: ../../../processing/app/BaseNoGui.java:507 #: ../../../processing/app/BaseNoGui.java:552 -!Done\ compiling= +Done\ compiling=Konpilazioa burutu da #: Editor.java:1911 Editor.java:1928 -Done\ compiling.=konpilazio eginda. +Done\ compiling.=Konpilazioa burutu da. #: Editor.java:2564 -Done\ printing.=Inprimaketa bukatu du. +Done\ printing.=Inprimatzea burutu da. #: ../../../processing/app/BaseNoGui.java:514 -!Done\ uploading= +Done\ uploading=Kargatzea burutu da #: Editor.java:2395 Editor.java:2431 -Done\ uploading.=Datu-karga bukatuta du. +Done\ uploading.=Kargatzea burutu da. #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:105 #, java-format -!Downloaded\ {0}kb\ of\ {1}kb.= +Downloaded\ {0}kb\ of\ {1}kb.={0}kb / {1}kb deskargatuta. #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:107 -!Downloading\ boards\ definitions.= +Downloading\ boards\ definitions.=Plaken definizioak deskargatzen. #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:86 -!Downloading\ libraries\ index...= +Downloading\ libraries\ index...=Liburutegien indizea deskargatzen... #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:115 #, java-format -!Downloading\ library\:\ {0}= +Downloading\ library\:\ {0}=Liburutegia deskargatzen\: {0} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:318 -!Downloading\ platforms\ index...= +Downloading\ platforms\ index...=Plataformen indizea deskargatzen... #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:113 #, java-format -!Downloading\ tools\ ({0}/{1}).= +Downloading\ tools\ ({0}/{1}).=Tresnak deskargatzen ({0}/{1}). #: Preferences.java:91 Dutch=Nederlandera @@ -560,32 +574,32 @@ Dutch=Nederlandera Dutch\ (Netherlands)=Nederlandera (Holanda) #: ../../../../../app/src/processing/app/Editor.java:1309 -!Edison\ Help= +Edison\ Help=Edisonen laguntza #: Editor.java:1130 Edit=Editatu #: Preferences.java:370 -Editor\ font\ size\:\ =\ Letra-tamaina Editorea\: +Editor\ font\ size\:\ =Editorearen letra-tamaina\: #: Preferences.java:353 -Editor\ language\:\ =Hizkuntza editorea\: +Editor\ language\:\ =Editorearen lengoaia\: #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:322 -!Enable\ Code\ Folding= +Enable\ Code\ Folding=Gaitu kode tolesketa #: Preferences.java:92 -English=Ingeles +English=Ingelesa #: ../../../processing/app/Preferences.java:145 -English\ (United\ Kingdom)=Ingeles ( Ingalaterra ) +English\ (United\ Kingdom)=Ingelesa (Erresuma Batua) #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:269 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:271 -!Enter\ a\ comma\ separated\ list\ of\ urls= +Enter\ a\ comma\ separated\ list\ of\ urls=Sartu komaz banatutako URLen zerrenda #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:96 -!Enter\ additional\ URLs,\ one\ for\ each\ row= +Enter\ additional\ URLs,\ one\ for\ each\ row=Sartu URL gehigarriak, bat errenkadako #: Editor.java:1062 Environment=Ingurunea @@ -593,218 +607,234 @@ Environment=Ingurunea #: Base.java:2147 Preferences.java:256 Sketch.java:475 Sketch.java:481 #: Sketch.java:496 Sketch.java:503 Sketch.java:526 Sketch.java:543 #: Editor.java:2167 Editor.java:2178 Editor.java:2188 Editor.java:2206 -Error=Errore +Error=Errorea #: Sketch.java:1065 Sketch.java:1088 -Error\ adding\ file=Akatsa fitxategi bat gehitzerakoan +Error\ adding\ file=Errorea fitxategia gehitzean #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:272 #, java-format -!Error\ compiling\ for\ board\ {0}.= +Error\ compiling\ for\ board\ {0}.=Errorea {0} plakarako konpilatzean. #: debug/Compiler.java:369 -Error\ compiling.=konpilazio-errore +Error\ compiling.=Errorea konpilatzean. #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:113 #, java-format -!Error\ downloading\ {0}= +Error\ downloading\ {0}=Errorea {0} deskargatzean #: Base.java:1674 -Error\ getting\ the\ Arduino\ data\ folder.=Arazoak Arduino-ko karpetaren datuak irakurtzerakoan +Error\ getting\ the\ Arduino\ data\ folder.=Errorea Arduinoren datuen karpeta eskuratzean. #: Serial.java:593 #, java-format -Error\ inside\ Serial.{0}()=Akatsa Serial.{0}() -ean +Error\ inside\ Serial.{0}()=Errorea Serial.{0}() barruan + +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=Errorea {0} itxura kargatzean\: {1} #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 #, java-format -Error\ loading\ {0}=Karga-errore {0} +Error\ loading\ {0}=Errorea {0} kargatzean #: Serial.java:181 #, java-format -Error\ opening\ serial\ port\ ''{0}''.=''{0}'' hutseko irekierako serieko ataka. +Error\ opening\ serial\ port\ ''{0}''.=Errorea ''{0}'' serieko ataka irekitzean. #: ../../../processing/app/Serial.java:119 #, java-format -!Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=Errorea ''{0}'' serieko ataka irekitzean. Kontsultatu dokumentazioa\: http\://playground.arduino.cc/Linux/All\#Permission + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=Errorea liburutegien indizea analizatzean\: {0}\nIreki Liburutegi kudeatzailea liburutegien indizea eguneratzeko. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=Errorea liburutegien indizea irakurtzean\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=Errorea paketeen indizeen karpeta irakurtzean\: {0}\n(behar bada baimen arazoa?) #: Preferences.java:277 -Error\ reading\ preferences=Hutseko irakurketako lehentasunak +Error\ reading\ preferences=Errorea hobespenak irakurtzean #: Preferences.java:279 #, java-format -Error\ reading\ the\ preferences\ file.\ Please\ delete\ (or\ move)\n{0}\ and\ restart\ Arduino.=Lehentasun-fitxategia irakurri hutsa. Mesedez ezabatu ezazu (edo eraman) \n{0} eta Arduino berrabiarazi. +Error\ reading\ the\ preferences\ file.\ Please\ delete\ (or\ move)\n{0}\ and\ restart\ Arduino.=Errorea hobespenen fitxategia irakurtzean. Ezabatu (edo lekuz aldatu) \n{0} eta berrabiarazi Arduino. #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:146 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:166 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:245 -!Error\ running\ post\ install\ script= +Error\ running\ post\ install\ script=Errorea instalazio ondorengo script-a exekutatzean #: ../../../cc/arduino/packages/DiscoveryManager.java:25 -Error\ starting\ discovery\ method\:\ =Aurkikuntza-metodoa hasiz hutsa\: +Error\ starting\ discovery\ method\:\ =Errorea aurkikuntza-metodoa abiaraztean\: #: Serial.java:125 #, java-format -Error\ touching\ serial\ port\ ''{0}''.=Hutsa ukitu ''{0}'' serieko ataka. +Error\ touching\ serial\ port\ ''{0}''.=Errorea ''{0}'' serieko ataka ukitzean. #: Editor.java:2512 Editor.java:2516 Editor.java:2520 -Error\ while\ burning\ bootloader.=Akatsa bootloaderak erretzen diren bitartean. +Error\ while\ burning\ bootloader.=Errorea abiarazte-kudeatzailea kargatzean. #: ../../../processing/app/Editor.java:2555 -Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Bootloader-a erretzerakoan hutsa\: desagertu {0} konfigurazio-parametroa +Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Errorea abiarazte-kudeatzailea kargatzean\: '{0}' konfigurazio-parametroa falta da + +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=Errorea gertatu da abiarazte-kudeatzailea kargatzean\: aukeratu serie-ataka bat. #: ../../../../../app/src/processing/app/Editor.java:1940 -!Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= +Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=Errorea konpilatzean\: '{0}' konfigurazio-parametroa falta da #: Editor.java:2567 -Error\ while\ printing.=Inprimatzerakoan hutsa. +Error\ while\ printing.=Errorea inprimatzerakoan. #: ../../../../../arduino-core/src/processing/app/Serial.java:117 #, java-format -!Error\ while\ setting\ serial\ port\ parameters\:\ {0}\ {1}\ {2}\ {3}= +Error\ while\ setting\ serial\ port\ parameters\:\ {0}\ {1}\ {2}\ {3}=Errorea serieko ataken parametroak ezartzean\: {0} {1} {2} {3} #: ../../../processing/app/BaseNoGui.java:528 -!Error\ while\ uploading= +Error\ while\ uploading=Errorea igotzean #: ../../../processing/app/Editor.java:2409 #: ../../../processing/app/Editor.java:2449 -Error\ while\ uploading\:\ missing\ '{0}'\ configuration\ parameter=Kargatzerakoan hutsa\: desagertu {0} konfigurazio-parametroa +Error\ while\ uploading\:\ missing\ '{0}'\ configuration\ parameter=Errorea igotzean\: '{0}' konfigurazio-parametroa falta da #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 -!Error\ while\ verifying= +Error\ while\ verifying=Errorea egiaztatzean #: ../../../processing/app/BaseNoGui.java:521 -!Error\ while\ verifying/uploading= +Error\ while\ verifying/uploading=Errorea egiaztatzean/igotzean #: Preferences.java:93 Estonian=Estoniera -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Estoniera (Estonia) - #: Editor.java:516 Examples=Adibideak #: ../../../../../app/src/processing/app/Base.java:1185 -!Examples\ for\ any\ board= +Examples\ for\ any\ board=Edozein plaketarako adibideak #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 #, java-format -!Examples\ for\ {0}= +Examples\ for\ {0}={0}-rako adibideak #: ../../../../../app/src/processing/app/Base.java:1244 -!Examples\ from\ Custom\ Libraries= +Examples\ from\ Custom\ Libraries=Liburutegi pertsonalizatuetako adibideak #: ../../../../../app/src/processing/app/Base.java:1329 -!Examples\ from\ Other\ Libraries= +Examples\ from\ Other\ Libraries=Beste liburutegietako adibideak #: ../../../../../app/src/processing/app/Editor.java:753 -!Export\ canceled,\ changes\ must\ first\ be\ saved.= +Export\ canceled,\ changes\ must\ first\ be\ saved.=Esportazioa bertan behera utzi da, lehenik gorde egin behar da. #: ../../../../../app/src/processing/app/Editor.java:750 -!Export\ compiled\ Binary= +Export\ compiled\ Binary=Esportatu konpilatutako bitarra #: ../../../processing/app/Base.java:416 #, java-format -Failed\ to\ open\ sketch\:\ "{0}"=Eskema irekitzean huts egin du\: "{0}" +Failed\ to\ open\ sketch\:\ "{0}"=Programa irekitzean huts egin du\: "{0}" #: ../../../../../arduino-core/src/processing/app/SketchFile.java:183 #, java-format -!Failed\ to\ rename\ "{0}"\ to\ "{1}"= +Failed\ to\ rename\ "{0}"\ to\ "{1}"=Huts egin du "{0}"(e)tik "{1}"(e)ra izenez aldatzean #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 -Failed\ to\ rename\ sketch\ folder=Eskemaren karpetari ezin izan zaio izena aldatu +Failed\ to\ rename\ sketch\ folder=Huts egin du programaren karpetari izena aldatzean #: Editor.java:491 -File=Fitxategi +File=Fitxategia #: ../../../../../arduino-core/src/processing/app/SketchData.java:139 #, java-format -!File\ name\ {0}\ is\ invalid\:\ ignored= +File\ name\ {0}\ is\ invalid\:\ ignored={0} fitxategi-izena baliogabea da\: ezikusia #: Preferences.java:94 -Filipino=Filipiniera +Filipino=Filipinera #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:95 -!Filter\ your\ search...= +Filter\ your\ search...=Iragazi zure bilaketa... #: FindReplace.java:124 FindReplace.java:127 Find=Bilatu #: Editor.java:1249 -Find\ Next=Aurkitu hurrengoa +Find\ Next=Bilatu hurrengoa #: Editor.java:1259 -Find\ Previous=Aurkitu aurrekoa +Find\ Previous=Bilatu aurrekoa #: Editor.java:1086 Editor.java:2775 -Find\ in\ Reference=Aipamen bidezko dei +Find\ in\ Reference=Bilatu Erreferentzian #: Editor.java:1234 Find...=Bilatu... #: FindReplace.java:80 -Find\:=Aurkitu +Find\:=Bilatu\: #: ../../../processing/app/Preferences.java:147 Finnish=Finlandiera #: tools/FixEncoding.java:41 tools/FixEncoding.java:58 #: tools/FixEncoding.java:79 -Fix\ Encoding\ &\ Reload=Konpondu kodea eta kargatu +Fix\ Encoding\ &\ Reload=Konpondu kodeketa eta kargatu #: ../../../processing/app/BaseNoGui.java:318 -!For\ information\ on\ installing\ libraries,\ see\:\ http\://www.arduino.cc/en/Guide/Libraries\n= +For\ information\ on\ installing\ libraries,\ see\:\ http\://www.arduino.cc/en/Guide/Libraries\n=Liburutegiak instalatzeari buruz informazioa behar baduzu, ikusi\: http\://www.arduino.cc/en/Guide/Libraries\n #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:118 #, java-format -!Forcing\ reset\ using\ 1200bps\ open/close\ on\ port\ {0}= +Forcing\ reset\ using\ 1200bps\ open/close\ on\ port\ {0}={0} atakan 1200bps ireki/itxi erabiliz berrezartzea behartzen #: Preferences.java:95 -French=Frantses +French=Frantsesa #: Editor.java:1097 -Frequently\ Asked\ Questions=Maiz egiten diren galderak +Frequently\ Asked\ Questions=Maiz egindako galderak #: Preferences.java:96 Galician=Galiziera #: ../../../../../app/src/processing/app/Preferences.java:176 -!Galician\ (Spain)= +Galician\ (Spain)=Galiziera (Espainia) #: ../../../../../app/src/processing/app/Editor.java:1288 -!Galileo\ Help= +Galileo\ Help=Galileoren laguntza #: ../../../processing/app/Preferences.java:94 Georgian=Georgiera #: Preferences.java:97 -German=Aleman +German=Alemana #: ../../../../../app//src/processing/app/Editor.java:817 -!Get\ Board\ Info= +Get\ Board\ Info=Eskuratu plakaren informazioa #: Editor.java:1054 -Getting\ Started=Abiarazi +Getting\ Started=Erabiltzen hasi #: ../../../processing/app/Sketch.java:1646 #, java-format -Global\ variables\ use\ {0}\ bytes\ ({2}%%)\ of\ dynamic\ memory,\ leaving\ {3}\ bytes\ for\ local\ variables.\ Maximum\ is\ {1}\ bytes.=Aldagai osoek memoria dinamikoko {0} byte ({2}%%) darabiltzate, {3} byte uzten dituzte aldagai lokaletarako. Maximoa {1} byte dira. +Global\ variables\ use\ {0}\ bytes\ ({2}%%)\ of\ dynamic\ memory,\ leaving\ {3}\ bytes\ for\ local\ variables.\ Maximum\ is\ {1}\ bytes.=Aldagai orokorrek memoria dinamikoko {0} byte ({2}%%) erabiltzen dituzte, {3} byte utziz aldagai lokaletarako. Maximoa {1} byte dira. #: ../../../processing/app/Sketch.java:1651 #, java-format -Global\ variables\ use\ {0}\ bytes\ of\ dynamic\ memory.=Aldagai osoek memoria dinamikoko {0} byte darabiltzate. +Global\ variables\ use\ {0}\ bytes\ of\ dynamic\ memory.=Aldagai orokorrek memoria dinamikoko {0} byte darabiltzate. #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:66 -!Go\ to\ line= +Go\ to\ line=Joan lerrora #: ../../../../../app/src/processing/app/Editor.java:1460 -!Go\ to\ line...= +Go\ to\ line...=Joan lerrora... #: Preferences.java:98 Greek=Greziera @@ -816,13 +846,13 @@ Hebrew=Hebreera Help=Laguntza #: Preferences.java:99 -Hindi=Indiera +Hindi=Hindia #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:489 -!Host\ name\:= +Host\ name\:=Ostalari-izena\: #: Sketch.java:295 -How\ about\ saving\ the\ sketch\ first\ \nbefore\ trying\ to\ rename\ it?=Oraindik ez duzu eskema gorde. Berrizendatu aurretik gorde nahi duzu? +How\ about\ saving\ the\ sketch\ first\ \nbefore\ trying\ to\ rename\ it?=Oraindik ez duzu programa gorde. \nIzena aldatu aurretik gorde nahi duzu? #: Sketch.java:882 How\ very\ Borges\ of\ you=Hor konpon, Marianton\! @@ -831,29 +861,29 @@ How\ very\ Borges\ of\ you=Hor konpon, Marianton\! Hungarian=Hungariera #: ../../../../../app/src/processing/app/Base.java:1319 -!INCOMPATIBLE= +INCOMPATIBLE=BATERAEZINA #: FindReplace.java:96 Ignore\ Case=Ezikusi Maiuskula/minuskula -#: Base.java:1058 -Ignoring\ bad\ library\ name=Liburutegi izen txarra ez ikusi egin +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=Liburutegia ezikusi da izen desegokia duelako #: Base.java:1436 -Ignoring\ sketch\ with\ bad\ name=Ez egin jaramonik eskemari izen desegokia duelako +Ignoring\ sketch\ with\ bad\ name=Programari ezikusi da izen desegokia duelako #: ../../../processing/app/Sketch.java:736 -In\ Arduino\ 1.0,\ the\ default\ file\ extension\ has\ changed\nfrom\ .pde\ to\ .ino.\ \ New\ sketches\ (including\ those\ created\nby\ "Save-As")\ will\ use\ the\ new\ extension.\ \ The\ extension\nof\ existing\ sketches\ will\ be\ updated\ on\ save,\ but\ you\ can\ndisable\ this\ in\ the\ Preferences\ dialog.\n\nSave\ sketch\ and\ update\ its\ extension?=Arduino 1.0-n, fitxategien luzapen lehenetsia .pde-tik .ino.-ra aldatu da.\nEskema berriek ("Save-As-en" sortutakoak barne) luzapen berria erabiliko dute. Eskema zaharren luzapena aldatuko da eskema gordetzerakoan baina ezarpen hau hobespenetan aldatu dezakezu.\n\nEskema gorde eta bere luzapena eguneratu? +In\ Arduino\ 1.0,\ the\ default\ file\ extension\ has\ changed\nfrom\ .pde\ to\ .ino.\ \ New\ sketches\ (including\ those\ created\nby\ "Save-As")\ will\ use\ the\ new\ extension.\ \ The\ extension\nof\ existing\ sketches\ will\ be\ updated\ on\ save,\ but\ you\ can\ndisable\ this\ in\ the\ Preferences\ dialog.\n\nSave\ sketch\ and\ update\ its\ extension?=Arduino 1.0-n, fitxategien luzapen lehenetsia .pde-tik .ino.-ra aldatu da.\nPrograma berriek ("Gorde honela"-rekin sortutakoak barne) luzapen berria erabiliko dute. Programa zaharren luzapena aldatuko da programa gordetzerakoan baina ezarpen hau hobespenetan aldatu dezakezu.\n\nPrograma gorde eta bere luzapena eguneratu? #: ../../../../../app/src/processing/app/Editor.java:778 Include\ Library=Erantsi liburutegia #: ../../../processing/app/BaseNoGui.java:768 #: ../../../processing/app/BaseNoGui.java:771 -!Incorrect\ IDE\ installation\ folder= +Incorrect\ IDE\ installation\ folder=IDEaren instalazio karpeta okerra #: ../../../../../app/src/processing/app/Editor.java:1378 -!Increase\ Font\ Size= +Increase\ Font\ Size=Handitu letra-tamaina #: Editor.java:1216 Editor.java:2757 Increase\ Indent=Handitu koska @@ -862,7 +892,7 @@ Increase\ Indent=Handitu koska Indonesian=Indonesiera #: ../../../../../app/src/processing/app/Base.java:295 -!Initializing\ packages...= +Initializing\ packages...=Paketeak hasieratzen... #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:75 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:81 @@ -870,39 +900,48 @@ Indonesian=Indonesiera #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:78 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:91 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:303 -!Install= +Install=Instalatu #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:170 -!Installation\ completed\!= +Installation\ completed\!=Instalazioa amaitu da\! #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java:50 -!Installed= +Installed=Instalatuta #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 -!Installing\ boards...= +Installing\ boards...=Plakak instalatzen... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +Installing\ library\:\ {0}\:{1}=Liburutegia instalatzen\: {0}\:{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format -!Installing\ tools\ ({0}/{1})...= +Installing\ tools\ ({0}/{1})...=Tresnak instalatzen ({0}/{1})... #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:239 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:172 -!Installing...= +Installing...=Instalatzen... #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:256 -!Interface\ scale\:= +Interface\ scale\:=Interfazearen eskala\: #: ../../../processing/app/Base.java:1204 #, java-format -Invalid\ library\ found\ in\ {0}\:\ {1}=\ {0}\: {1}-etan aurkitutako liburutegi okerra +Invalid\ library\ found\ in\ {0}\:\ {1}=Liburutegi baliogabea aurkitu da {0}(e)n\: {1} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:66 #, java-format -!Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=Komatxoen formatu baliogabea\: ez da topatu [{0}] itxiera karakterea. + +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=Liburutegiaren '{0}' bertsio baliogabea hemen\: {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}={0} bertsio baliogabea #: Preferences.java:102 Italian=Italiera @@ -911,7 +950,7 @@ Italian=Italiera Japanese=Japoniera #: ../../../../../app/src/cc/arduino/i18n/Languages.java:81 -!Kazakh= +Kazakh=Kazakhera #: Preferences.java:104 Korean=Koreera @@ -920,39 +959,39 @@ Korean=Koreera Latvian=Letoniera #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:93 -!Library\ Manager= +Library\ Manager=Liburutegi kudeatzailea #: ../../../../../app/src/processing/app/Base.java:2349 -!Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu= +Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=Liburutegia zure liburutegietara gehitua. Ikusi "Erantsi liburutegia" menua #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 -!Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= +Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=Liburutegiek ezin dute erabili 'src' eta 'utility' karpetak. Berrikusi {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +Library\ is\ already\ installed\:\ {0}\:{1}=Liburutegia instalatua dago dagoeneko\: {0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 -!Line\ number\:= +Line\ number\:=Lerro-zenbakia\: #: Preferences.java:106 Lithuaninan=Lituaniera #: ../../../../../app/src/processing/app/Base.java:132 -!Loading\ configuration...= +Loading\ configuration...=Konfigurazioa kargatzen... #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 #, java-format -!Looking\ for\ recipes\ like\ {0}*{1}= +Looking\ for\ recipes\ like\ {0}*{1}={0}*{1} bezalako prozeduren bila #: ../../../processing/app/Sketch.java:1684 -!Low\ memory\ available,\ stability\ problems\ may\ occur.= +Low\ memory\ available,\ stability\ problems\ may\ occur.=Memoria gutxi dago erabilgarri, egonkortasun arazoak gerta daitezke. #: ../../../../../app/src/processing/app/Base.java:1168 -!Manage\ Libraries...= +Manage\ Libraries...=Kudeatu liburutegiak... #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:466 -!Manual\ proxy\ configuration= +Manual\ proxy\ configuration=Proxyaren eskuzko konfigurazioa #: Preferences.java:107 Marathi=Marathiera @@ -962,59 +1001,59 @@ Message=Mezua #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:81 #, java-format -!Missing\ '{0}'\ from\ library\ in\ {1}= +Missing\ '{0}'\ from\ library\ in\ {1}='{0}'falta da liburutegitik {1}(e)n #: ../../../processing/app/BaseNoGui.java:455 -!Mode\ not\ supported= +Mode\ not\ supported=Modua ez da onartzen #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:186 -!More= +More=Gehiago #: Preferences.java:449 -More\ preferences\ can\ be\ edited\ directly\ in\ the\ file=Zuzenean fitxategian lehentasun gehiago editatu ahal dituzte +More\ preferences\ can\ be\ edited\ directly\ in\ the\ file=Hobespen gehiago editatu daitezke zuzenean fitxategian #: Editor.java:2156 -Moving=Mugitzen +Moving=Lekuz aldatzen #: ../../../processing/app/BaseNoGui.java:484 -!Multiple\ files\ not\ supported= +Multiple\ files\ not\ supported=Ez dago hainbat fitxategirentzako euskarririk #: ../../../processing/app/debug/Compiler.java:520 #, java-format -!Multiple\ libraries\ were\ found\ for\ "{0}"= +Multiple\ libraries\ were\ found\ for\ "{0}"="{0}"(r)entzat hainbat liburutegi aurkitu dira #: ../../../processing/app/Base.java:395 -Must\ specify\ exactly\ one\ sketch\ file=Eskema fitxategi bat zehaztu behar duzu +Must\ specify\ exactly\ one\ sketch\ file=Programa fitxategi bat zehaztu behar duzu #: Sketch.java:282 -Name\ for\ new\ file\:=Fitxategi berriaren izena +Name\ for\ new\ file\:=Fitxategi berriaren izena\: #: ../../../../../app//src/processing/app/Editor.java:2809 -!Native\ serial\ port,\ can't\ obtain\ info= +Native\ serial\ port,\ can't\ obtain\ info=Serieko ataka natiboa, ezin da informaziorik eskuratu #: ../../../processing/app/Preferences.java:149 Nepali=Nepalera #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:601 -!Network= +Network=Sarea #: ../../../../../app//src/processing/app/Editor.java:2804 -!Network\ port,\ can't\ obtain\ info= +Network\ port,\ can't\ obtain\ info=Sareko ataka, ezin da informaziorik eskuratu #: ../../../../../app/src/processing/app/Editor.java:65 -!Network\ ports= +Network\ ports=Sareko atakak #: ../../../cc/arduino/packages/uploaders/SSHUploader.java:51 -Network\ upload\ using\ programmer\ not\ supported=Laguntzarik ez dago artxibo-kargarako sarean programagailua erabiliz +Network\ upload\ using\ programmer\ not\ supported=Ez da onartzen sareko karga programatzailea erabiliz #: EditorToolbar.java:41 Editor.java:493 New=Berria #: EditorHeader.java:292 -New\ Tab=Fitxa berri +New\ Tab=Fitxa berria #: SerialMonitor.java:112 -Newline=Lerro-amaiera +Newline=Lerro berria #: EditorHeader.java:340 Next\ Tab=Hurrengo fitxa @@ -1023,95 +1062,95 @@ Next\ Tab=Hurrengo fitxa No=Ez #: ../../../processing/app/debug/Compiler.java:158 -!No\ authorization\ data\ found= +No\ authorization\ data\ found=Ez da baimenaren daturik aurkitu #: tools/format/src/AutoFormat.java:54 tools/AutoFormat.java:916 -No\ changes\ necessary\ for\ Auto\ Format.=Aldaketa bat ere beharrezko Auto Formaturako. +No\ changes\ necessary\ for\ Auto\ Format.=Formatu automatikorako ez da aldaketarik behar. #: ../../../processing/app/BaseNoGui.java:665 -!No\ command\ line\ parameters\ found= +No\ command\ line\ parameters\ found=Ez da komando lerroko parametrorik aurkitu #: ../../../processing/app/debug/Compiler.java:200 No\ compiled\ sketch\ found=Ez da fitxategi konpilaturik aurkitu #: Editor.java:373 -No\ files\ were\ added\ to\ the\ sketch.=Eskemari ez zaio fitxategirik erantsi. +No\ files\ were\ added\ to\ the\ sketch.=Programari ez zaio fitxategirik gehitu. #: Platform.java:167 -No\ launcher\ available=Inongo jaurtitzailerik-Launcher ez dago +No\ launcher\ available=Ez dago abiarazlerik erabilgarri #: SerialMonitor.java:112 -No\ line\ ending=Ez lerro-bukaera +No\ line\ ending=Lerro amaierarik ez #: ../../../processing/app/BaseNoGui.java:665 -!No\ parameters= +No\ parameters=Parametrorik ez #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:453 -!No\ proxy= +No\ proxy=Proxy-rik ez #: Base.java:541 -No\ really,\ time\ for\ some\ fresh\ air\ for\ you.=Ez benetan, zuretzako aire freskoren baterako denbora. +No\ really,\ time\ for\ some\ fresh\ air\ for\ you.=Benetan, aire fresko pixka bat behar duzu. #: Editor.java:1872 #, java-format -No\ reference\ available\ for\ "{0}"=Aipamen erabilgarri bat ere {0} +No\ reference\ available\ for\ "{0}"=Ez dago erreferentziarik erabilgarri {0}(r)entzat #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 -No\ sketch=Eskemarik ez +No\ sketch=Programarik ez #: ../../../processing/app/BaseNoGui.java:428 -No\ sketchbook=Eskema bildumarik ez +No\ sketchbook=Programa bildumarik ez #: ../../../processing/app/Sketch.java:204 -No\ valid\ code\ files\ found=Aurkitutako baliozko kode-fitxategi bat ere +No\ valid\ code\ files\ found=Ez da baliozko kode-fitxategirik aurkitu #: ../../../processing/app/debug/TargetPackage.java:63 #, java-format -No\ valid\ hardware\ definitions\ found\ in\ folder\ {0}.=Karpetan {0} aurkitutako baliozko hardware-definizio bat ere. +No\ valid\ hardware\ definitions\ found\ in\ folder\ {0}.=Ez da baliozko hardware-definiziorik aurkitu {0} karpetan. #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:184 -!None= +None=Bat ere ez #: ../../../processing/app/Preferences.java:108 -Norwegian\ Bokm\u00e5l=\ Norvegiera +Norwegian\ Bokm\u00e5l=Norvegiera (Bokm\u00e5l) #: ../../../processing/app/Sketch.java:1656 -Not\ enough\ memory;\ see\ http\://www.arduino.cc/en/Guide/Troubleshooting\#size\ for\ tips\ on\ reducing\ your\ footprint.=Memoria nahikorik ez dago ; bisita http\://www.arduino.cc/en/Guide/Troubleshooting\#size bere erabilera txikiagotzea bezala ikasteko. +Not\ enough\ memory;\ see\ http\://www.arduino.cc/en/Guide/Troubleshooting\#size\ for\ tips\ on\ reducing\ your\ footprint.=Ez dago memoria nahikorik; bisitatu http\://www.arduino.cc/en/Guide/Troubleshooting\#size memoria erabilera nola txikiagotu ikasteko. #: Preferences.java:80 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2145 Editor.java:2465 -OK=OK +OK=Ados #: Sketch.java:992 Editor.java:376 -One\ file\ added\ to\ the\ sketch.=Eskemari fitxategi bat gehitu zaio. +One\ file\ added\ to\ the\ sketch.=Programari fitxategi bat gehitu zaio. #: ../../../processing/app/BaseNoGui.java:455 -!Only\ --verify,\ --upload\ or\ --get-pref\ are\ supported= +Only\ --verify,\ --upload\ or\ --get-pref\ are\ supported=Soilik --verify, --upload eta --get-pref onartzen dira #: EditorToolbar.java:41 Open=Ireki #: ../../../../../app/src/processing/app/Editor.java:625 -!Open\ Recent= +Open\ Recent=Ireki azkenak #: Editor.java:2688 -Open\ URL=Ireki URLa. +Open\ URL=Ireki URLa #: Base.java:636 -Open\ an\ Arduino\ sketch...=Ireki Arduino eskema... +Open\ an\ Arduino\ sketch...=Ireki Arduino programa... #: Base.java:903 Editor.java:501 -Open...=Ireki +Open...=Ireki... #: ../../../../../arduino-core/src/processing/app/I18n.java:37 -!Other= +Other=Bestea #: Editor.java:563 Page\ Setup=Prestatu orrialdea #: ../../../../../arduino-core/src/processing/app/I18n.java:25 -!Partner= +Partner=Bazkidea #: ../../../processing/app/forms/PasswordAuthorizationDialog.java:44 Password\:=Pasahitza\: @@ -1127,29 +1166,29 @@ Persian\ (Iran)=Persiera (Iran) #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:79 #, java-format -!Platform\ {0}\ (package\ {1})\ is\ unknown= +Platform\ {0}\ (package\ {1})\ is\ unknown={0} plataforma ({1} paketea) ezezaguna da #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:195 -!Please\ confirm\ boards\ deletion= +Please\ confirm\ boards\ deletion=Berretsi plaken ezabapena #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 -!Please\ confirm\ library\ deletion= +Please\ confirm\ library\ deletion=Berretsi liburutegiaren ezabapena #: debug/Compiler.java:408 -Please\ import\ the\ SPI\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.=SPI-liburutegia inportatu Eskema > Erantsi liburutegia menutik. +Please\ import\ the\ SPI\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.=Inportatu ezazu SPI-liburutegia Programa > Inportatu liburutegia menutik. #: ../../../processing/app/debug/Compiler.java:529 -Please\ import\ the\ Wire\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.=Wire liburutegia Eskema > Erantsi liburutegia menutik inportatu ezazu. +Please\ import\ the\ Wire\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.=Inportatu ezazu Wire liburutegia Programa > Inportatu liburutegia menutik. #: ../../../../../app//src/processing/app/Editor.java:2799 -!Please\ select\ a\ port\ to\ obtain\ board\ info= +Please\ select\ a\ port\ to\ obtain\ board\ info=Hautatu ataka bat plakaren informazioa eskuratzeko #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 -!Please\ select\ a\ programmer\ from\ Tools->Programmer\ menu= +Please\ select\ a\ programmer\ from\ Tools->Programmer\ menu=Hautatu programatzaile bat Tresnak->Programatzailea menuan #: ../../../../../app/src/processing/app/Editor.java:2613 -!Plotter\ not\ available\ while\ serial\ monitor\ is\ open= +Plotter\ not\ available\ while\ serial\ monitor\ is\ open=Plotterra ez dago erabilgarri, serieko monitorea irekita dagoen bitartean #: Preferences.java:110 Polish=Poloniera @@ -1158,13 +1197,13 @@ Polish=Poloniera Port=Ataka #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:491 -!Port\ number\:= +Port\ number\:=Ataka zenbakia\: #: ../../../processing/app/Preferences.java:151 Portugese=Portugalera #: ../../../processing/app/Preferences.java:127 -Portuguese\ (Brazil)=Portugalera (Brazil) +Portuguese\ (Brazil)=Portugalera (Brasil) #: ../../../processing/app/Preferences.java:128 Portuguese\ (Portugal)=Portugalera (Portugal) @@ -1173,7 +1212,7 @@ Portuguese\ (Portugal)=Portugalera (Portugal) Preferences=Hobespenak #: ../../../../../app/src/processing/app/Base.java:297 -!Preparing\ boards...= +Preparing\ boards...=Plakak prestatzen... #: FindReplace.java:123 FindReplace.java:128 Previous=Aurrekoa @@ -1191,65 +1230,65 @@ Printing\ canceled.=Utzi inprimaketa. Printing...=Inprimatzen... #: Base.java:1957 -Problem\ Opening\ Folder=Arazoko Irekierako Karpeta +Problem\ Opening\ Folder=Arazoa karpeta irekitzean #: Base.java:1933 -Problem\ Opening\ URL=Arazoak URLa irekitzerakoan +Problem\ Opening\ URL=Arazoa URLa irekitzerakoan #: Base.java:227 -Problem\ Setting\ the\ Platform=Plataformaren Konfigurazio Arazoa +Problem\ Setting\ the\ Platform=Arazoa plataforma ezartzean #: ../../../cc/arduino/packages/uploaders/SSHUploader.java:136 -Problem\ accessing\ board\ folder\ /www/sd=Arazoa plakako karpeta sartzerakoan dago /www/sd +Problem\ accessing\ board\ folder\ /www/sd=Arazoa plakaren karpeta atzitzean /www/sd #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:206 #, java-format -!Problem\ accessing\ files\ in\ folder\ "{0}"= +Problem\ accessing\ files\ in\ folder\ "{0}"=Atzipen-arazoa "{0}" karpetako fitxategietan #: Base.java:1673 -Problem\ getting\ data\ folder=Arazoak karpetaren datuak irakurtzerakoan +Problem\ getting\ data\ folder=Arazoa datuen karpeta irakurtzerakoan #: debug/Uploader.java:209 -Problem\ uploading\ to\ board.\ \ See\ http\://www.arduino.cc/en/Guide/Troubleshooting\#upload\ for\ suggestions.=Plakaratzeko upload arazoa. http\://www.arduino.cc/en/Guide/Troubleshooting\#upload ikusi ezazu iradokizunetarako. +Problem\ uploading\ to\ board.\ \ See\ http\://www.arduino.cc/en/Guide/Troubleshooting\#upload\ for\ suggestions.=Arazoa plakara kargatzean. Ikusi http\://www.arduino.cc/en/Guide/Troubleshooting\#upload iradokizunetarako. #: Sketch.java:355 Sketch.java:362 Sketch.java:373 -Problem\ with\ rename=Izen-aldaketarekiko arazoa +Problem\ with\ rename=Arazoa izena aldatzean #: ../../../processing/app/I18n.java:86 Processor=Prozesadorea #: Editor.java:704 -Programmer=Programatzaile +Programmer=Programatzailea #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:80 #, java-format -!Progress\ {0}= +Progress\ {0}=Aurrerapena {0} #: Base.java:783 Editor.java:593 -Quit=kentzea +Quit=Irten #: ../../../../../app/src/processing/app/Base.java:1233 -!RETIRED= +RETIRED=ERRETIRATUA #: ../../../../../arduino-core/src/processing/app/I18n.java:26 -!Recommended= +Recommended=Gomendatua #: Editor.java:1138 Editor.java:1140 Editor.java:1390 Redo=Berregin #: Editor.java:1078 -Reference=Aipamen +Reference=Erreferentzia #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 -!Remove= +Remove=Kendu -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +Removing\ library\:\ {0}\:{1}=Liburutegia kentzen\: {0}{1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 -!Removing...= +Removing...=Kentzen... #: EditorHeader.java:300 Rename=Izena aldatu @@ -1258,31 +1297,34 @@ Rename=Izena aldatu Replace=Ordeztu #: FindReplace.java:122 FindReplace.java:129 -Replace\ &\ Find=Bilatu & Ordeztu +Replace\ &\ Find=Ordeztu & bilatu #: FindReplace.java:120 FindReplace.java:131 Replace\ All=Ordeztu guztiak #: Sketch.java:1043 #, java-format -Replace\ the\ existing\ version\ of\ {0}?={0}-aren oraingo bertsioa ordeztu ezazu ? +Replace\ the\ existing\ version\ of\ {0}?={0}-(r)en oraingo bertsioa ordeztu nahi duzu? #: FindReplace.java:81 -Replace\ with\:=Ordeztu honekin +Replace\ with\:=Ordeztu honekin\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 -!Retired= +Retired=Erretiratua + +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=Berriro igo beste serie ataka baten bidez? #: Preferences.java:113 -Romanian=Erromaniko +Romanian=Errumaniera #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:83 #, java-format -!Running\ recipe\:\ {0}= +Running\ recipe\:\ {0}=Exekutatzen ari den prozedura\: {0} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:82 #, java-format -!Running\:\ {0}= +Running\:\ {0}=Exekutatzen\: {0} #: Preferences.java:114 Russian=Errusiera @@ -1295,166 +1337,173 @@ Save=Gorde Save\ As...=Gorde honela... #: Editor.java:2317 -Save\ Canceled.=Utzi gordeatzea +Save\ Canceled.=Gordetzea bertan behera utzi da. #: Editor.java:2020 #, java-format -Save\ changes\ to\ "{0}"?\ \ =Gorde aldaketak "{0}"an ? +Save\ changes\ to\ "{0}"?\ \ ="{0}"-(r)i egindako aldaketak gorde? #: Sketch.java:825 -Save\ sketch\ folder\ as...=Gorde eskemaren karpeta honela +Save\ sketch\ folder\ as...=Gorde programaren karpeta honela... #: ../../../../../app/src/processing/app/Preferences.java:425 -!Save\ when\ verifying\ or\ uploading= +Save\ when\ verifying\ or\ uploading=Gorde egiaztatzean edo kargatzean #: Editor.java:2270 Editor.java:2308 -Saving...=Gordetzen +Saving...=Gordetzen... #: ../../../processing/app/FindReplace.java:131 -Search\ all\ Sketch\ Tabs=Bilatu eskema fitxa guztietan +Search\ all\ Sketch\ Tabs=Bilatu programa fitxa guztietan #: Base.java:1909 -Select\ (or\ create\ new)\ folder\ for\ sketches...=Hautatu (edo sortu) eskementzako karpeta... +Select\ (or\ create\ new)\ folder\ for\ sketches...=Hautatu (edo sortu) programentzako karpeta... #: Editor.java:1198 Editor.java:2739 Select\ All=Hautatu dena #: Base.java:2636 -Select\ a\ zip\ file\ or\ a\ folder\ containing\ the\ library\ you'd\ like\ to\ add=Hautatu ezazu zip-fitxategi bat edo gehitzea nahi izango zenukeen liburutegia edukiz karpeta bat +Select\ a\ zip\ file\ or\ a\ folder\ containing\ the\ library\ you'd\ like\ to\ add=Hautatu gehitu nahi duzun liburutegia daukan zip fitxategi edo karpeta bat #: Sketch.java:975 -Select\ an\ image\ or\ other\ data\ file\ to\ copy\ to\ your\ sketch=Aukeratu irudi edo datu fitxategi bat zure eskeman kopiatzeko +Select\ an\ image\ or\ other\ data\ file\ to\ copy\ to\ your\ sketch=Hautatu irudi edo datu fitxategi bat zure programan kopiatzeko #: Preferences.java:330 -Select\ new\ sketchbook\ location=Aukeratu kokagune berria eskemen bildumarako +Select\ new\ sketchbook\ location=Hautatu kokaleku berria programen bildumarentzat #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:237 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:249 -!Select\ version= +Select\ version=Hautatu bertsioa #: ../../../processing/app/debug/Compiler.java:146 -Selected\ board\ depends\ on\ '{0}'\ core\ (not\ installed).=Aukeratutako plaka '{0}' nukleoaren mendean dago (ez dago instalatuta). +Selected\ board\ depends\ on\ '{0}'\ core\ (not\ installed).=Hautatutako plakak '{0}' nukleoaren mendekotasuna du (ez dago instalatuta). #: ../../../../../app/src/processing/app/Base.java:374 -!Selected\ board\ is\ not\ available= +Selected\ board\ is\ not\ available=Hautatutako plaka ez dago erabilgarri #: ../../../../../app/src/processing/app/Base.java:423 -!Selected\ library\ is\ not\ available= +Selected\ library\ is\ not\ available=Hautatutako liburutegia ez dago erabilgarri #: SerialMonitor.java:93 Send=Bidali #: ../../../../../arduino-core/src/processing/app/I18n.java:32 -!Sensors= +Sensors=Sentsoreak #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:669 Serial\ Monitor=Serieko monitorea #: ../../../../../app/src/processing/app/Editor.java:804 -!Serial\ Plotter= +Serial\ Plotter=Serieko plotterra #: ../../../../../app/src/processing/app/Editor.java:2325 #, java-format -!Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release= +Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release=Bertsio honetan, serieko monitorea ez dago erabilgarri sareko ataketan. Adibidez, {1}-(r)en {0} #: ../../../../../app/src/processing/app/Editor.java:2516 -!Serial\ monitor\ not\ available\ while\ plotter\ is\ open= +Serial\ monitor\ not\ available\ while\ plotter\ is\ open=Serieko monitorea ez dago erabilgarri, plotterra irekita dagoen bitartean #: Serial.java:194 #, java-format -Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Serieko ataka ''{0}'' ez aurkituta. Ongi aukeratu duzu era zuzenean menutik Erremintetatik > Serieko Ataka ? +Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Ez da aurkitu ''{0}'' serieko ataka. Tresnak > Serieko ataka menuan egokia hautatu duzu? + +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=Ez da aukeratu serie ataka. -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Ez aurkitutako serieko ataka {0}.\nBirsaioa beste serieko ataka batekin kargatu? +Serial\ port\ {0}\ not\ found.=Ez da aurkitu {0} serie ataka. #: ../../../../../app/src/processing/app/Editor.java:65 -!Serial\ ports= +Serial\ ports=Serieko atakak #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:84 #, java-format -!Setting\ build\ path\ to\ {0}= +Setting\ build\ path\ to\ {0}=Ezarritako konpilazio-bide berria\: {0} #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:450 -!Settings= +Settings=Ezarpenak #: Base.java:1681 -Settings\ issues=konfigurazioaren kontuak +Settings\ issues=Ezarpenen arazoak #: Editor.java:641 -Show\ Sketch\ Folder=Erakutsi eskemen karpeta +Show\ Sketch\ Folder=Erakutsi programen karpeta + +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=Erakutsi denbora-zigilua #: Preferences.java:387 -Show\ verbose\ output\ during\:\ =Irteera luzea erakusten duzu zehar\: +Show\ verbose\ output\ during\:\ =Erakutsi irteera xehatua honetan zehar\: #: ../../../../../arduino-core/src/processing/app/I18n.java:31 -!Signal\ Input/Output= +Signal\ Input/Output=Seinaleen Sarrera/Irteera #: Editor.java:607 -Sketch=Eskema +Sketch=Programa #: Sketch.java:1754 -Sketch\ Disappeared=Eskema desagertu da +Sketch\ Disappeared=Programa desagertu da #: Base.java:1411 -Sketch\ Does\ Not\ Exist=Eskema ez da existitzen +Sketch\ Does\ Not\ Exist=Programa ez da existitzen #: Sketch.java:274 Sketch.java:303 Sketch.java:577 Sketch.java:966 -Sketch\ is\ Read-Only=Irakurtzeko-soilik eskema +Sketch\ is\ Read-Only=Programa irakurtzeko-soilik da #: Sketch.java:294 -Sketch\ is\ Untitled=Eskemak ez du izenik +Sketch\ is\ Untitled=Programak ez du izenik #: Sketch.java:720 -Sketch\ is\ read-only=Eskema irakurtzeko-soilik da +Sketch\ is\ read-only=Programa irakurtzeko-soilik da #: Sketch.java:1653 -Sketch\ too\ big;\ see\ http\://www.arduino.cc/en/Guide/Troubleshooting\#size\ for\ tips\ on\ reducing\ it.=Eskema handiegia da; bisitatu http\://www.arduino.cc/en/Guide/Troubleshooting\#size tamaina txikiagotzeko gomendioak kontsultatzeko +Sketch\ too\ big;\ see\ http\://www.arduino.cc/en/Guide/Troubleshooting\#size\ for\ tips\ on\ reducing\ it.=Programa handiegia da; bisitatu http\://www.arduino.cc/en/Guide/Troubleshooting\#size tamaina txikiagotzeko gomendioak kontsultatzeko #: ../../../processing/app/Sketch.java:1639 #, java-format -Sketch\ uses\ {0}\ bytes\ ({2}%%)\ of\ program\ storage\ space.\ Maximum\ is\ {1}\ bytes.=Eskemak programako biltegiratzeko espazioaren {0} byte ({2}%%-a) darabiltza. Maximoa {1} byte da. +Sketch\ uses\ {0}\ bytes\ ({2}%%)\ of\ program\ storage\ space.\ Maximum\ is\ {1}\ bytes.=Programak biltegiratzeko espazioaren {0} byte ({2}%%-a) darabil. Maximoa {1} byte da. #: Editor.java:510 -Sketchbook=Eskema bilduma +Sketchbook=Programa bilduma #: Base.java:258 -Sketchbook\ folder\ disappeared=Eskema bildumaren karpeta desagertu da +Sketchbook\ folder\ disappeared=Programa bildumaren karpeta desagertu da #: Preferences.java:315 -Sketchbook\ location\:=Eskema bildumaren kokalekua\: +Sketchbook\ location\:=Programa bildumaren kokalekua\: #: ../../../processing/app/BaseNoGui.java:428 -Sketchbook\ path\ not\ defined=Ez da definitu eskema bildumaren bidea +Sketchbook\ path\ not\ defined=Ez da definitu programa bildumaren bidea #: ../../../../../arduino-core//src/cc/arduino/contributions/packages/ContributionsIndexer.java:96 #, java-format -!Skipping\ contributed\ index\ file\ {0},\ parsing\ error\ occured\:= +Skipping\ contributed\ index\ file\ {0},\ parsing\ error\ occured\:=Kolaborazio bidezko {0} indize-fitxategia ezin da erabili; errore sintaktiko hau gertatu da\: #: ../../../../../app/src/processing/app/Preferences.java:185 -!Slovak= +Slovak=Eslovakiera #: ../../../processing/app/Preferences.java:152 Slovenian=Esloveniera #: Sketch.java:275 Sketch.java:304 Sketch.java:578 Sketch.java:967 -Some\ files\ are\ marked\ "read-only",\ so\ you'll\nneed\ to\ re-save\ the\ sketch\ in\ another\ location,\nand\ try\ again.=Fitxategi batzuk "irakurtzeko-soilik" gisa \nmarkatuta daude, eskema beste kokagune batean \ngorde beharko duzu eta berriro saiatu beharko zara. +Some\ files\ are\ marked\ "read-only",\ so\ you'll\nneed\ to\ re-save\ the\ sketch\ in\ another\ location,\nand\ try\ again.=Fitxategi batzuk "irakurtzeko-soilik" gisa \nmarkatuta daude, programa beste kokagune batean \ngorde beharko duzu eta berriro saiatu beharko zara. #: Sketch.java:721 -Some\ files\ are\ marked\ "read-only",\ so\ you'll\nneed\ to\ re-save\ this\ sketch\ to\ another\ location.=Fitxategi batzuk "irakurtzeko-soilik" gisa markatuta daude,\n eskema beste kokagune batean gorde beharko duzu. +Some\ files\ are\ marked\ "read-only",\ so\ you'll\nneed\ to\ re-save\ this\ sketch\ to\ another\ location.=Fitxategi batzuk "irakurtzeko-soilik" gisa markatuta daude,\n programa beste kokagune batean gorde beharko duzu. #: ../../../../../arduino-core/src/processing/app/Sketch.java:246 #, java-format -!Sorry,\ the\ folder\ "{0}"\ already\ exists.= +Sorry,\ the\ folder\ "{0}"\ already\ exists.=Barkatu, baina "{0}" karpeta existitzen da jadanik. #: Preferences.java:115 Spanish=Espainiera #: ../../../../../app/src/processing/app/Base.java:2333 -!Specified\ folder/zip\ file\ does\ not\ contain\ a\ valid\ library= +Specified\ folder/zip\ file\ does\ not\ contain\ a\ valid\ library=Zehaztutako karpetak/zip fitxategiak ez dauka liburutegi baliodunik #: ../../../../../app/src/processing/app/Base.java:466 -!Starting...= +Starting...=Abiatzen... #: Base.java:540 Sunshine=Eguzkia @@ -1466,97 +1515,104 @@ Swedish=Suediera System\ Default=Sistemako lehenetsia #: ../../../../../app/src/processing/app/Preferences.java:188 -!Talossan= +Talossan=Talossera #: Preferences.java:116 Tamil=Tamilera #: ../../../../../app/src/cc/arduino/i18n/Languages.java:102 -!Telugu= +Telugu=Telugu #: ../../../../../app/src/cc/arduino/i18n/Languages.java:100 -!Thai= +Thai=Thailandiera #: debug/Compiler.java:414 -The\ 'BYTE'\ keyword\ is\ no\ longer\ supported.=Jada 'BYTE' gako-hitza ez dute sostengatzen. +The\ 'BYTE'\ keyword\ is\ no\ longer\ supported.='BYTE' gako-hitza ez da onartzen jada. #: ../../../processing/app/BaseNoGui.java:484 -!The\ --upload\ option\ supports\ only\ one\ file\ at\ a\ time= +The\ --upload\ option\ supports\ only\ one\ file\ at\ a\ time=--upload aukerak fitxategiak banaka onartzen ditu soilik #: debug/Compiler.java:426 -The\ Client\ class\ has\ been\ renamed\ EthernetClient.=Client klasea berrizendatu dute EthernetClient. +The\ Client\ class\ has\ been\ renamed\ EthernetClient.=Client klasea EthernetClient bezala berrizendatua izan da. #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format -!The\ IDE\ includes\ an\ updated\ {0}\ package,\ but\ you're\ using\ an\ older\ one.\nDo\ you\ want\ to\ upgrade\ {0}?= +The\ IDE\ includes\ an\ updated\ {0}\ package,\ but\ you're\ using\ an\ older\ one.\nDo\ you\ want\ to\ upgrade\ {0}?=IDEak {0} pakete eguneratua dauka, baina zaharrago bat erabiltzen ari zara.\n{0} bertsio-berritu nahi duzu? #: debug/Compiler.java:420 -The\ Server\ class\ has\ been\ renamed\ EthernetServer.=Server klasea berrizendatu dute EthernetServer. +The\ Server\ class\ has\ been\ renamed\ EthernetServer.=Server klasea EthernetServer bezala berrizendatua izan da. #: debug/Compiler.java:432 -The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=Udp klasea berrizendatu dute EthernetUdp. +The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=Udp klasea EthernetUdp bezala berrizendatua izan da. #: ../../../../../arduino-core/src/processing/app/BaseNoGui.java:177 -!The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed.= +The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed.=Unean hautatutako plakak '{0}' nukleoa behar du, eta ez dago instalatuta. #: Editor.java:2147 #, java-format -The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?={0} fitxategia {1} izendatutako eskema karpeta \nbarruan egon behar du. \nSortu karpeta hau, mugitu fitxategia eta jarraitu? +The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?={0} fitxategiak {1} izendatutako programa karpeta \nbarruan egon behar du. \nSortu karpeta hau, eraman fitxategia eta jarraitu? + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.="{0}" liburutegia ezin da erabili.\nLiburutegi karpeten izenak letra edo zenbaki batekin hasi behar dute eta ondoren letra,\u00a0\nzenbakiak, marratxoak, puntuak eta azpimarrak erabili daitezke. Gehienez 63 karaktere erabili daitezke. #: Base.java:1054 Base.java:2674 #, java-format -The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=Liburutegia {0} ezin dute erabili. Liburutegi-izenek bakarrik oinarrizko gutunak eta numbers. eduki behar dituzte. (ASCII-a bakarrik eta espazio bat ere, eta ezin da zenbaki batekin hasi) +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)={0} liburutegia ezin da erabili.\nLiburutegi-izenek oinarrizko letra eta zenbakiak soilik eduki ditzakete.\n(ASCII bakarrik eta zuriunerik ez, eta ezin dira zenbaki batekin hasi) #: ../../../../../app/src/processing/app/SketchController.java:170 -!The\ main\ file\ cannot\ use\ an\ extension= +The\ main\ file\ cannot\ use\ an\ extension=Fitxategi nagusiak ezin du luzapenik erabili #: Sketch.java:356 -The\ name\ cannot\ start\ with\ a\ period.=Izena ezin da hasi puntuarekin. +The\ name\ cannot\ start\ with\ a\ period.=Izena ezin da puntuarekin hasi. #: Base.java:1412 -The\ selected\ sketch\ no\ longer\ exists.\nYou\ may\ need\ to\ restart\ Arduino\ to\ update\nthe\ sketchbook\ menu.=Hautatutako eskema dagoeneko ez da existitzen.\nArduino berriz hasi beharko duzu eskema bildumaren \nmenua eguneratzeko . +The\ selected\ sketch\ no\ longer\ exists.\nYou\ may\ need\ to\ restart\ Arduino\ to\ update\nthe\ sketchbook\ menu.=Hautatutako programa dagoeneko ez da existitzen.\nArduino berriz hasi beharko duzu programa bildumaren \nmenua eguneratzeko . #: Base.java:1430 #, java-format -The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic\ letters\ and\ numbers\n(ASCII-only\ with\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number).\nTo\ get\ rid\ of\ this\ message,\ remove\ the\ sketch\ from\n{1}="{0}" eskema ezin da erabili.\nEskeman izenek bakarrik oinarrizko letrak eta zenbakiak eduki behar dituzte\n(espaziorik gabeko ASCII karaktereak eta ezin da zenbaki batekin hasi).\nMezu hau berriro ez agertzeko, eskema {1}-tik kendu +The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic\ letters\ and\ numbers\n(ASCII-only\ with\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number).\nTo\ get\ rid\ of\ this\ message,\ remove\ the\ sketch\ from\n{1}="{0}" programa ezin da erabili.\nPrograma izenek bakarrik oinarrizko letrak eta zenbakiak eduki behar dituzte\n(espaziorik gabeko ASCII karaktereak eta ezin da zenbaki batekin hasi).\nMezu hau berriro ez agertzeko, programa {1}-tik kendu #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format -The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=Dagoeneko eskemak "{0}" izeneko fitxategi bat dauka +The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=Dagoeneko programak "{0}" izeneko fitxategi bat dauka #: Sketch.java:1755 -The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Eskemen karpeta desagertu da.\nKokagune berdinean gordetzeko saiatuko egingo da,\nbaina kodeaz gaineko edozer galduko da. +The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Programen karpeta desagertu da.\nKokagune berdinean berriro gordetzen saiatuko da,\nbaina kodea ez den guztia galduko da. -#: ../../../../../app/src/processing/app/SketchController.java:828 -The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.=Eskemaren izena aldatu behar izan da. Eskemen izenek ASCII letrak eta zenbakiak izan ditzakete soilik eta gehienez 64 karaktereko luzera izan dezakete. +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=Programaren izena aldatu behar izan da.\nProgramen izenak letra edo zenbaki batekin hasi behar dute eta ondoren letra,\nzenbakiak, marratxoak, puntuak eta azpimarrak erabili daitezke. Gehienez 63 karaktere erabili daitezke. #: Base.java:259 -The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=Eskemen karpeta ez da existitzen.\nArduinok defektuzko eskema karpetara itzuliko da eta,\nbeharrezkoa izanez gero, eskema karpeta berria sortuko du. +The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=Programa bildumaren karpeta ez da existitzen.\nArduino programa bilduma karpeta lehenetsira itzuliko da eta\nbeharrezkoa izanez gero, programa bilduma karpeta berria sortuko du.\nOrduan Arduinok bere buruari buruz hirugarren pertsonan hitz\negiteari utziko dio. #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 -The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=Zehaztutako karpetaren barruan zure garapen ingurunearen (IDE) kopia dago.\nBeste karpeta bat aukeratu zure eskema gordetzeko. +The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=Zehaztutako programa bilduma karpetaren barruan garapen ingurunearen (IDE) kopia dago.\nAukeratu beste karpeta bat zure programa bilduma gordetzeko. + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =Itxura\: #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 -!This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= +This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=Liburutegi hau ez dago liburutegi kudeatzailean zerrendatua. Ezin izango duzu berrinstalatu hemendik.\nZiur zaude ezabatu nahi duzula? #: ../../../../../app/src/processing/app/EditorStatus.java:349 -!This\ report\ would\ have\ more\ information\ with\n"Show\ verbose\ output\ during\ compilation"\noption\ enabled\ in\ File\ ->\ Preferences.\n= +This\ report\ would\ have\ more\ information\ with\n"Show\ verbose\ output\ during\ compilation"\noption\ enabled\ in\ File\ ->\ Preferences.\n=Txosten honek informazio gehiago izango luke\nFitxategia -> Hobespenak-en "Erakutsi irteera zehaztuak konpilazioan\u00a0\nzehar" ezarpena gaitua egongo balitz.\n #: Base.java:535 Time\ for\ a\ Break=Atsedenerako denbora #: ../../../../../arduino-core/src/processing/app/I18n.java:34 -!Timing= +Timing=Sinkronizatzen #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:94 #, java-format -!Tool\ {0}\ is\ not\ available\ for\ your\ operating\ system.= +Tool\ {0}\ is\ not\ available\ for\ your\ operating\ system.={0} tresna ez dago erabilgarri zure sistema eragilean. #: Editor.java:663 Tools=Tresnak #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:97 -!Topic= +Topic=Gaia #: Editor.java:1070 Troubleshooting=Arazoak konpontzen @@ -1566,296 +1622,296 @@ Turkish=Turkiera #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:109 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:105 -!Type= +Type=Mota #: ../../../processing/app/Editor.java:2507 -Type\ board\ password\ to\ access\ its\ console=Plakaren pasahitza idatz ezazu bere kontsolara sartzeko +Type\ board\ password\ to\ access\ its\ console=Idatzi plakaren pasahitza bere kontsolara sartzeko #: ../../../processing/app/Sketch.java:1673 -Type\ board\ password\ to\ upload\ a\ new\ sketch=Idatzi plakaren pasahitza eskema kargatzeko +Type\ board\ password\ to\ upload\ a\ new\ sketch=Idatzi plakaren pasahitza programa berria kargatzeko #: ../../../processing/app/Preferences.java:118 Ukrainian=Ukrainera #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:142 #, java-format -!Unable\ to\ connect\ to\ {0}= +Unable\ to\ connect\ to\ {0}=Ezin da konektatu {0}(e)ra #: ../../../processing/app/Editor.java:2524 #: ../../../processing/app/NetworkMonitor.java:145 -Unable\ to\ connect\:\ is\ the\ sketch\ using\ the\ bridge?=Ezin izan da konektatu\: eskema zubia erabiltzen ari da? +Unable\ to\ connect\:\ is\ the\ sketch\ using\ the\ bridge?=Ezin da konektatu\: programa zubia erabiltzen ari da? #: ../../../processing/app/NetworkMonitor.java:130 -Unable\ to\ connect\:\ retrying=Konektatu ezinezkoa da\: Saiatzen +Unable\ to\ connect\:\ retrying=Ezin da konektatu\: berriz saiatzen #: ../../../processing/app/Editor.java:2526 -Unable\ to\ connect\:\ wrong\ password?=Konektatu ezinezkoa da\: pasahitz okerra? +Unable\ to\ connect\:\ wrong\ password?=Ezin da konektatu\: pasahitz okerra? #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:65 #, java-format -!Unable\ to\ find\ {0}\ in\ {1}= +Unable\ to\ find\ {0}\ in\ {1}=Ezin da {0} aurkitu {1}(e)n\: #: ../../../processing/app/Editor.java:2512 -Unable\ to\ open\ serial\ monitor=Serial-monitorea ireki ezinezkoa da. +Unable\ to\ open\ serial\ monitor=Ezin da serieko monitorea ireki #: ../../../../../app/src/processing/app/Editor.java:2709 -!Unable\ to\ open\ serial\ plotter= +Unable\ to\ open\ serial\ plotter=Ezin da serieko plotterra ireki #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:94 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 -!Unable\ to\ reach\ Arduino.cc\ due\ to\ possible\ network\ issues.= +Unable\ to\ reach\ Arduino.cc\ due\ to\ possible\ network\ issues.=Ezin da Arduino.cc atzitu, posible da sareko arazoengatik izatea #: ../../../../../arduino-core/src/processing/app/I18n.java:38 -!Uncategorized= +Uncategorized=Sailkatu gabea #: Editor.java:1133 Editor.java:1355 Undo=Desegin #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:85 #, java-format -!Unhandled\ type\ {0}\ in\ context\ key\ {1}= +Unhandled\ type\ {0}\ in\ context\ key\ {1}=Kudeatu gabeko {0} mota {1} testuinguru gakoan #: ../../../../../app//src/processing/app/Editor.java:2818 -!Unknown\ board= +Unknown\ board=Plaka ezezaguna #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format -Unknown\ sketch\ file\ extension\:\ {0}=Eskema fitxategi luzapen ezezaguna\: {0} +Unknown\ sketch\ file\ extension\:\ {0}=Programa fitxategi luzapen ezezaguna\: {0} #: Platform.java:168 -Unspecified\ platform,\ no\ launcher\ available.\nTo\ enable\ opening\ URLs\ or\ folders,\ add\ a\ \n"launcher\=/path/to/app"\ line\ to\ preferences.txt=Plataforma ezezaguna, Inongo jaurtitzailerik-Launcher ez dago.\nURLs-ak edo karpetak irekiz ahalbidetzeko, gaineratzen zara\n"launcher\=/path/to/app"-lerroa preferences.txt-etara +Unspecified\ platform,\ no\ launcher\ available.\nTo\ enable\ opening\ URLs\ or\ folders,\ add\ a\ \n"launcher\=/path/to/app"\ line\ to\ preferences.txt=Plataforma zehaztugabea, ez dago abiarazlerik erabilgarri.\nURLak edo karpetak irekitzea gaitzeko, gehitu\n"launcher\=/aplikaziorako/bidea" lerroa preferences.txt-en #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownUpdatableLibrariesItem.java:27 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownUpdatableCoresItem.java:27 -!Updatable= +Updatable=Eguneratu daiteke #: UpdateCheck.java:111 Update=Eguneratu #: Preferences.java:428 -Update\ sketch\ files\ to\ new\ extension\ on\ save\ (.pde\ ->\ .ino)=Eguneratu eskema luzapena gordetzean (.pde -> .ino) +Update\ sketch\ files\ to\ new\ extension\ on\ save\ (.pde\ ->\ .ino)=Eguneratu luzapena (.pde -> .ino) programa fitxategiak gordetzean #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:88 #, java-format -!Updates\ available\ for\ some\ of\ your\ {0}boards{1}= +Updates\ available\ for\ some\ of\ your\ {0}boards{1}=Eguneraketak daude zure {0}plaketako{1} batzuentzat #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:90 #, java-format -!Updates\ available\ for\ some\ of\ your\ {0}boards{1}\ and\ {2}libraries{3}= +Updates\ available\ for\ some\ of\ your\ {0}boards{1}\ and\ {2}libraries{3}=Eguneraketak daude zure {0}plaketako{1} eta {2}liburutegietako{3} batzuentzat #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:86 #, java-format -!Updates\ available\ for\ some\ of\ your\ {0}libraries{1}= +Updates\ available\ for\ some\ of\ your\ {0}libraries{1}=Eguneraketak daude zure {0}liburutegietako{1} batzuentzat #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:167 -!Updating\ list\ of\ installed\ libraries= +Updating\ list\ of\ installed\ libraries=Instalatutako liburutegien zerrenda eguneratzen #: EditorToolbar.java:41 Editor.java:545 Upload=Kargatu #: EditorToolbar.java:46 Editor.java:553 -Upload\ Using\ Programmer=Programagailu erabiliz kargatu +Upload\ Using\ Programmer=Kargatu programatzailea erabiliz #: ../../../../../app//src/processing/app/Editor.java:2814 -Upload\ any\ sketch\ to\ obtain\ it=Edozein eskema kargatu plakaren serie zenbakia lortzeko +Upload\ any\ sketch\ to\ obtain\ it=Kargatu edozein programa plakaren serie zenbakia lortzeko #: Editor.java:2403 Editor.java:2439 -Upload\ canceled.=Datu-karga bertan behera utzi da. +Upload\ canceled.=Kargatzea bertan behera utzi da. #: ../../../processing/app/Sketch.java:1678 -Upload\ cancelled=Utxi Kargaketa +Upload\ cancelled=Kargatzea bertan behera utzi da #: Editor.java:2378 -Uploading\ to\ I/O\ Board...=S/I Plakak Kargatzen ... +Uploading\ to\ I/O\ Board...=S/I plakara kargatzen ... #: Sketch.java:1622 Uploading...=Kargatzen... #: Editor.java:1269 -Use\ Selection\ For\ Find=Aurkikuntzarako Erabilera-Hautaketa +Use\ Selection\ For\ Find=Erabili hautapena bilatzeko #: Preferences.java:409 -Use\ external\ editor=Kanpoko editorea erabili ezazu +Use\ external\ editor=Erabili kanpoko editorea #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:493 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:499 -!Username\:= +Username\:=Erabiltzaile-izena\: #: ../../../processing/app/debug/Compiler.java:410 #, java-format -!Using\ library\ {0}\ at\ version\ {1}\ in\ folder\:\ {2}\ {3}= +Using\ library\ {0}\ at\ version\ {1}\ in\ folder\:\ {2}\ {3}={1} bertsioko {0} liburutegia {2} {3} karpetan erabiltzen #: ../../../processing/app/debug/Compiler.java:94 #, java-format -Using\ library\ {0}\ in\ folder\:\ {1}\ {2}={0} liburu-denda {1} {2} karpetan erabiliz\: +Using\ library\ {0}\ in\ folder\:\ {1}\ {2}={0} liburutegia {1} {2} karpetan erabiltzen #: ../../../processing/app/debug/Compiler.java:320 #, java-format -Using\ previously\ compiled\ file\:\ {0}=Erabili lehenago bildutako fitxategia\: {0} +Using\ previously\ compiled\ file\:\ {0}=Aurretik konpilatutako fitxategia erabiltzen\: {0} #: EditorToolbar.java:41 EditorToolbar.java:46 Verify=Egiaztatu #: Preferences.java:400 -Verify\ code\ after\ upload=Kodea egiaztatzen duzu geroago kargatu +Verify\ code\ after\ upload=Egiaztatu kodea kargatu ondoren #: ../../../../../app/src/processing/app/Editor.java:725 -!Verify/Compile= +Verify/Compile=Egiaztatu/Konpilatu #: ../../../../../app/src/processing/app/Base.java:451 -!Verifying\ and\ uploading...= +Verifying\ and\ uploading...=Egiaztatzen eta kargatzen... #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:71 -!Verifying\ archive\ integrity...= +Verifying\ archive\ integrity...=Artxiboaren osotasuna egiaztatzen... #: ../../../../../app/src/processing/app/Base.java:454 -!Verifying...= +Verifying...=Egiaztatzen... #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:328 #, java-format -!Version\ {0}= +Version\ {0}={0} bertsioa #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:326 -!Version\ unknown= +Version\ unknown=Bertsio ezezaguna #: ../../../cc/arduino/contributions/libraries/ContributedLibrary.java:97 #, java-format -!Version\ {0}= +Version\ {0}={0} bertsioa #: ../../../processing/app/Preferences.java:154 Vietnamese=Vietnamera #: Editor.java:1105 -Visit\ Arduino.cc=Arduino.cc bisita +Visit\ Arduino.cc=Ikusi Arduino.cc #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:90 #, java-format -!WARNING\:\ Category\ '{0}'\ in\ library\ {1}\ is\ not\ valid.\ Setting\ to\ '{2}'= +WARNING\:\ Category\ '{0}'\ in\ library\ {1}\ is\ not\ valid.\ Setting\ to\ '{2}'=ABISUA\: {1} liburutegiko '{0}' kategoria ez da baliozkoa. '{2}' ezarriko da. #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:93 #, java-format -!WARNING\:\ Spurious\ {0}\ folder\ in\ '{1}'\ library= +WARNING\:\ Spurious\ {0}\ folder\ in\ '{1}'\ library=ABISUA\: {0} karpeta faltsua '{1}' liburutegian #: ../../../processing/app/debug/Compiler.java:115 #, java-format -WARNING\:\ library\ {0}\ claims\ to\ run\ on\ {1}\ architecture(s)\ and\ may\ be\ incompatible\ with\ your\ current\ board\ which\ runs\ on\ {2}\ architecture(s).=OHARTARAZPENA\: {0} liburutegia {1} arkitekturan() funtzionatzen saiatzen da eta zure plakarekin, zeinek {2} arkitekturarekin() funtzionatzen duen, bateraezina izan liteke +WARNING\:\ library\ {0}\ claims\ to\ run\ on\ {1}\ architecture(s)\ and\ may\ be\ incompatible\ with\ your\ current\ board\ which\ runs\ on\ {2}\ architecture(s).=ABISUA\: {0} liburutegiak {1} arkitektur(et)an funtzionatzen duela dio eta baliteke {2} arkitektur(ar)ekin funtzionatzen duen zure uneko plakarekin bateraezina izatea. #: Base.java:2128 Warning=Abisua #: ../../../processing/app/debug/Compiler.java:1295 -!Warning\:\ This\ core\ does\ not\ support\ exporting\ sketches.\ Please\ consider\ upgrading\ it\ or\ contacting\ its\ author= +Warning\:\ This\ core\ does\ not\ support\ exporting\ sketches.\ Please\ consider\ upgrading\ it\ or\ contacting\ its\ author=Abisua\: nukleo honek ez du programarik esportatzen uzten. Saiatu bertsio-berritzen edo egilearekin harremanetan jartzen. #: ../../../cc/arduino/utils/ArchiveExtractor.java:197 #, java-format -!Warning\:\ file\ {0}\ links\ to\ an\ absolute\ path\ {1}= +Warning\:\ file\ {0}\ links\ to\ an\ absolute\ path\ {1}=Abisua\: {0} fitxategia bide absolutu batekin estekatuta dago\: {1} #: ../../../cc/arduino/contributions/packages/ContributionsIndexer.java:133 -!Warning\:\ forced\ trusting\ untrusted\ contributions= +Warning\:\ forced\ trusting\ untrusted\ contributions=Abisua\: ekarpen ez fidagarriak fidagarri izatera behartu dira. #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:217 #, java-format -!Warning\:\ forced\ untrusted\ script\ execution\ ({0})= +Warning\:\ forced\ untrusted\ script\ execution\ ({0})=Abisua\: ({0}) script ez fidagarriaren exekuzioa behartu da. #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:212 #, java-format -!Warning\:\ non\ trusted\ contribution,\ skipping\ script\ execution\ ({0})= +Warning\:\ non\ trusted\ contribution,\ skipping\ script\ execution\ ({0})=Abisua\: ekarpen ez fidagarria. Scripta ez da exekutatuko ({0}) #: ../../../processing/app/debug/LegacyTargetPlatform.java:158 #, java-format -!Warning\:\ platform.txt\ from\ core\ '{0}'\ contains\ deprecated\ {1},\ automatically\ converted\ to\ {2}.\ Consider\ upgrading\ this\ core.= +Warning\:\ platform.txt\ from\ core\ '{0}'\ contains\ deprecated\ {1},\ automatically\ converted\ to\ {2}.\ Consider\ upgrading\ this\ core.=Abisua\: '{0}' nukleoko platform.txt fitxategiak zaharkitutako {1} dauka, automatikoki {2}(e)ra bihurtu da. Nukleo hau bertsio-berritzea hausnartu beharko zenuke. #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:91 -!Warning\:\ platform.txt\ from\ core\ '{0}'\ misses\ property\ '{1}',\ using\ default\ value\ '{2}'.\ Consider\ upgrading\ this\ core.= +Warning\:\ platform.txt\ from\ core\ '{0}'\ misses\ property\ '{1}',\ using\ default\ value\ '{2}'.\ Consider\ upgrading\ this\ core.=Abisua\: '{0}' nukleoaren platform.txt-ari '{1}' propietatea falta zaio eta '{2}' lehenetsitako balioa erabiliko da. Nukleo hau bertsio-berritzea hausnartu beharko zenuke. #: ../../../../../app/src/processing/app/Preferences.java:190 -!Western\ Frisian= +Western\ Frisian=Mendebaldeko frisiera #: debug/Compiler.java:444 -Wire.receive()\ has\ been\ renamed\ Wire.read().=Wire.receive() berrizendatu dute Wire.read(). +Wire.receive()\ has\ been\ renamed\ Wire.read().=Wire.receive() Wire.read() bezala berrizendatu da. #: debug/Compiler.java:438 -Wire.send()\ has\ been\ renamed\ Wire.write().=Wire.send() berrizendatu dute Wire.write(). +Wire.send()\ has\ been\ renamed\ Wire.write().=Wire.send() Wire.write() bezala berrizendatu da. #: FindReplace.java:105 Wrap\ Around=Egokitu #: debug/Uploader.java:213 -Wrong\ microcontroller\ found.\ \ Did\ you\ select\ the\ right\ board\ from\ the\ Tools\ >\ Board\ menu?=Mikrokontrolatzaile okerra. Plaka aukeratu duzu era zuzenean menutik Erremintetatik > Plaka ? +Wrong\ microcontroller\ found.\ \ Did\ you\ select\ the\ right\ board\ from\ the\ Tools\ >\ Board\ menu?=Mikrokontrolatzaile okerra aurkitu da. Tresnak > Plaka menuan plaka zuzena hautatu duzu? #: Preferences.java:77 UpdateCheck.java:108 Yes=Bai #: ../../../../../app/src/processing/app/Base.java:2312 -You\ can't\ import\ a\ folder\ that\ contains\ your\ sketchbook=Ezin duzu inportatu zure eskema barne duen karpeta +You\ can't\ import\ a\ folder\ that\ contains\ your\ sketchbook=Ezin duzu inportatu zure programa bilduma barne duen karpeta #: Sketch.java:883 -You\ cannot\ save\ the\ sketch\ into\ a\ folder\ninside\ itself.\ This\ would\ go\ on\ forever.=Ezin duzu eskema gorde eskemaren karpetaren \nazpiko karpeta batean. Etengabeko errekurtsibitate arazoa sortuko luke. +You\ cannot\ save\ the\ sketch\ into\ a\ folder\ninside\ itself.\ This\ would\ go\ on\ forever.=Ezin duzu programa gorde programaren karpetaren \nazpiko karpeta batean. Etengabeko errekurtsibitate arazoa sortuko luke. #: Base.java:1888 -You\ forgot\ your\ sketchbook=Zure eskema ahaztu zenuen +You\ forgot\ your\ sketchbook=Zure programa bilduma ahaztu zenuen #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:252 -You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.=Gorde gabeko aldaketak dituzu\!\nZure eskema guztiak gorde behar dituzu ezarpen hau gaitzeko. +You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.=Gorde gabeko aldaketak dituzu\!\nZure programa guztiak gorde behar dituzu aukera hau gaitzeko. #: ../../../processing/app/AbstractMonitor.java:92 -You've\ pressed\ {0}\ but\ nothing\ was\ sent.\ Should\ you\ select\ a\ line\ ending?={0} zapaldu duzu baina ezer ez zuten bidali. Lerro-bukaera bat hautatu behar izango zenuke? +You've\ pressed\ {0}\ but\ nothing\ was\ sent.\ Should\ you\ select\ a\ line\ ending?={0} sakatu duzu baina ezer ez da bidali. Lerro-bukaera bat hautatu beharko zenuke? #: Base.java:536 -You've\ reached\ the\ limit\ for\ auto\ naming\ of\ new\ sketches\nfor\ the\ day.\ How\ about\ going\ for\ a\ walk\ instead?=Gaurkoz, eskema berrietan izena automatikoki ezartzeko \nmekanismoaren mugara iritsi zara. +You've\ reached\ the\ limit\ for\ auto\ naming\ of\ new\ sketches\nfor\ the\ day.\ How\ about\ going\ for\ a\ walk\ instead?=Gaurkoz, programa berrietan izena automatikoki ezartzeko \nmekanismoaren mugara iritsi zara. Paseotxo bat eman nahi duzu? #: ../../../processing/app/BaseNoGui.java:768 -!Your\ copy\ of\ the\ IDE\ is\ installed\ in\ a\ subfolder\ of\ your\ settings\ folder.\nPlease\ move\ the\ IDE\ to\ another\ folder.= +Your\ copy\ of\ the\ IDE\ is\ installed\ in\ a\ subfolder\ of\ your\ settings\ folder.\nPlease\ move\ the\ IDE\ to\ another\ folder.=Zure ezarpenak gordetzeko karpetaren azpikarpeta batean instalatu da IDE-aren zure kopia. \nEraman IDE-a beste karpeta batera. #: ../../../processing/app/BaseNoGui.java:771 -Your\ copy\ of\ the\ IDE\ is\ installed\ in\ a\ subfolder\ of\ your\ sketchbook.\nPlease\ move\ the\ IDE\ to\ another\ folder.=Zure garapen ingurunea (IDE) eskema bildumaren azpikarpeta batean dago.\nMugitu IDE-a beste karpeta batera. +Your\ copy\ of\ the\ IDE\ is\ installed\ in\ a\ subfolder\ of\ your\ sketchbook.\nPlease\ move\ the\ IDE\ to\ another\ folder.=Zure garapen ingurunea (IDE) programa bildumaren azpikarpeta batean dago.\nMugitu IDE-a beste karpeta batera. #: Base.java:2638 -ZIP\ files\ or\ folders=ZIP-fitxategiak edo karpetak +ZIP\ files\ or\ folders=Zip fitxategiak edo karpetak #: Base.java:2661 -Zip\ doesn't\ contain\ a\ library=ZIP ez dauka liburutegi bat +Zip\ doesn't\ contain\ a\ library=Zip fitxategiak ez dauka liburutegirik #: Sketch.java:364 #, java-format -".{0}"\ is\ not\ a\ valid\ extension.=".{0}" ez da balio izandako luzapena. +".{0}"\ is\ not\ a\ valid\ extension.=".{0}" ez da baliozko luzapen bat. #: ../../../../../arduino-core/src/processing/app/SketchCode.java:201 #, java-format -"{0}"\ contains\ unrecognized\ characters.\ If\ this\ code\ was\ created\ with\ an\ older\ version\ of\ Arduino,\ you\ may\ need\ to\ use\ Tools\ ->\ Fix\ Encoding\ &\ Reload\ to\ update\ the\ sketch\ to\ use\ UTF-8\ encoding.\ If\ not,\ you\ may\ need\ to\ delete\ the\ bad\ characters\ to\ get\ rid\ of\ this\ warning.="{0}"-k karaktere onartezinak ditu. Kodea Arduino bertsio zahar batekin egin bada, erabili Tresnak->Konpondu kodea eta kargatu eskema UTF-8-ra bihurtzeko. Bestela, karaktere okerrak borratu beharko dituzu abisu hau berriro ez agertzeko. +"{0}"\ contains\ unrecognized\ characters.\ If\ this\ code\ was\ created\ with\ an\ older\ version\ of\ Arduino,\ you\ may\ need\ to\ use\ Tools\ ->\ Fix\ Encoding\ &\ Reload\ to\ update\ the\ sketch\ to\ use\ UTF-8\ encoding.\ If\ not,\ you\ may\ need\ to\ delete\ the\ bad\ characters\ to\ get\ rid\ of\ this\ warning.="{0}"-(e)k karaktere ezezagunak ditu. Kodea Arduino bertsio zahar batekin sortu bazen, behar bada Tresnak->Konpondu kodeketa eta birkargatu programa erabili beharko duzu UTF-8ra bihurtzeko. Bestela, karaktere okerrak ezabatu beharko dituzu abisu hau berriro ez agertzeko. #: debug/Compiler.java:409 -\nAs\ of\ Arduino\ 0019,\ the\ Ethernet\ library\ depends\ on\ the\ SPI\ library.\nYou\ appear\ to\ be\ using\ it\ or\ another\ library\ that\ depends\ on\ the\ SPI\ library.\n\n=\n0019 Arduinotik aurrera, Ethernet-liburutegia SPI-liburutegiaren esku dago.\nHura erabiltzen ari izan iruditzen zara edo SPI-liburutegiaren esku dagoen beste liburutegi bat.\n +\nAs\ of\ Arduino\ 0019,\ the\ Ethernet\ library\ depends\ on\ the\ SPI\ library.\nYou\ appear\ to\ be\ using\ it\ or\ another\ library\ that\ depends\ on\ the\ SPI\ library.\n\n=\nArduinotik 0019an Ethernet liburutegiak SPI liburutegiaren mendekotasuna du.\nHura edo SPI liburutegiaren mendekotasuna duen beste liburutegi bat erabiltzen ari zarela dirudi.\n\n #: debug/Compiler.java:415 -\nAs\ of\ Arduino\ 1.0,\ the\ 'BYTE'\ keyword\ is\ no\ longer\ supported.\nPlease\ use\ Serial.write()\ instead.\n\n=\n1.0 Arduino-tik aurrera, 'BYTE' gako-hitza ez da supported.\njada mesedez Serial.write() erabili ezazu.\n +\nAs\ of\ Arduino\ 1.0,\ the\ 'BYTE'\ keyword\ is\ no\ longer\ supported.\nPlease\ use\ Serial.write()\ instead.\n\n=\nArduino 1.0an, 'BYTE' gako-hitza jada ez da onartzen.\nErabili Serial.write() bere ordez.\n\n #: debug/Compiler.java:427 -\nAs\ of\ Arduino\ 1.0,\ the\ Client\ class\ in\ the\ Ethernet\ library\ has\ been\ renamed\ to\ EthernetClient.\n\n=\n1.0 Arduino-tik aurrera, Ethernet-liburutegiko Client klasea berrizendatu dute EthernetClient.\n +\nAs\ of\ Arduino\ 1.0,\ the\ Client\ class\ in\ the\ Ethernet\ library\ has\ been\ renamed\ to\ EthernetClient.\n\n=\nArduino 1.0an Ethernet liburutegiko Client klasea EthernetClient bezala berrizendatu da.\n\n #: debug/Compiler.java:421 -\nAs\ of\ Arduino\ 1.0,\ the\ Server\ class\ in\ the\ Ethernet\ library\ has\ been\ renamed\ to\ EthernetServer.\n\n=\n1.0 Arduino-tik aurrera, Ethernet-liburutegiko Server klasea berrizendatu dute EthernetServer .\n +\nAs\ of\ Arduino\ 1.0,\ the\ Server\ class\ in\ the\ Ethernet\ library\ has\ been\ renamed\ to\ EthernetServer.\n\n=\nArduino 1.0an Ethernet liburutegiko Server klasea EthernetServer bezala berrizendatu da.\n\n #: debug/Compiler.java:433 -\nAs\ of\ Arduino\ 1.0,\ the\ Udp\ class\ in\ the\ Ethernet\ library\ has\ been\ renamed\ to\ EthernetUdp.\n\n=\n1.0 Arduinotik aurrera, Ethernet-liburutegiko Udp klasea berrizendatu dute EthernetUdp.\n +\nAs\ of\ Arduino\ 1.0,\ the\ Udp\ class\ in\ the\ Ethernet\ library\ has\ been\ renamed\ to\ EthernetUdp.\n\n=\nArduino 1.0an Ethernet liburutegiko Udp klasea EthernetUdp bezala berrizendatu da.\n\n #: debug/Compiler.java:445 -\nAs\ of\ Arduino\ 1.0,\ the\ Wire.receive()\ function\ was\ renamed\ to\ Wire.read()\ for\ consistency\ with\ other\ libraries.\n\n=\n 1.0 Arduino-tik aurrera, Wire.receive() funtzioa, beste libraries batzuekiko funtserako Wire.read() etara berrizendatu zuten.\n +\nAs\ of\ Arduino\ 1.0,\ the\ Wire.receive()\ function\ was\ renamed\ to\ Wire.read()\ for\ consistency\ with\ other\ libraries.\n\n=\nArduino 1.0-tik aurrera, Wire.receive() funtzioa Wire.read()-ra aldatu zen beste liburutegi batzuekiko bateragarritasuna bermatzeko.\n\n #: debug/Compiler.java:439 -\nAs\ of\ Arduino\ 1.0,\ the\ Wire.send()\ function\ was\ renamed\ to\ Wire.write()\ for\ consistency\ with\ other\ libraries.\n\n=\n1.0 Arduinotik aurrera, Wire.send()-funtzioa, beste liburutegi batzuekiko funtserako Wire.write() -etara berrizendatu zuten\n +\nAs\ of\ Arduino\ 1.0,\ the\ Wire.send()\ function\ was\ renamed\ to\ Wire.write()\ for\ consistency\ with\ other\ libraries.\n\n=\n1.0 Arduinotik aurrera, Wire.send()-funtzioa, beste liburutegi batzuekiko funtserako Wire.write() -etara berrizendatu zuten\n\n #: SerialMonitor.java:130 SerialMonitor.java:133 baud=baud #: Preferences.java:389 -compilation\ =konpilazio +compilation\ =konpilazioa #: ../../../processing/app/NetworkMonitor.java:111 -connected\!=Konektatu \! +connected\!=konektatuta\! #: ../../../../../app/src/processing/app/Editor.java:1352 -!http\://www.arduino.cc/= +http\://www.arduino.cc/=http\://www.arduino.cc/ #: UpdateCheck.java:118 http\://www.arduino.cc/en/Main/Software=http\://www.arduino.cc/en/Main/Software @@ -1865,13 +1921,18 @@ http\://www.arduino.cc/latest.txt=http\://www.arduino.cc/latest.txt #: Preferences.java:625 #, java-format -ignoring\ invalid\ font\ size\ {0}=Letra-tamaina elbarria {0} ez ikusi egin +ignoring\ invalid\ font\ size\ {0}={0} letra-tamaina baliogabeari ez ikusia egiten zaio #: Editor.java:936 Editor.java:943 -name\ is\ null=Izen nulu +name\ is\ null=izena nulua da + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=Ez da goiburu fitxategirik (.h) topatu {0}-(e)n #: Editor.java:932 -serialMenu\ is\ null=serialMenu-a nulua da +serialMenu\ is\ null=serialMenu nulua da #: debug/Uploader.java:195 #, java-format @@ -1886,44 +1947,44 @@ upload=Kargatu #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:324 #, java-format -!version\ {0}= +version\ {0}={0} bertsioa #: ../../../../../app/src/processing/app/Editor.java:2243 #, java-format -!{0}\ -\ {1}\ |\ Arduino\ {2}= +{0}\ -\ {1}\ |\ Arduino\ {2}={0} - {1} | Arduino {2} #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:39 #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:43 #, java-format -!{0}\ file\ signature\ verification\ failed= +{0}\ file\ signature\ verification\ failed={0} fitxategi-sinaduraren egiaztapenak huts egin du #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:310 #, java-format -!{0}\ file\ signature\ verification\ failed.\ File\ ignored.= +{0}\ file\ signature\ verification\ failed.\ File\ ignored.={0} fitxategi-sinaduraren egiaztapenak huts egin du. Fitxategia ez da aintzat hartuko. #: Editor.java:380 #, java-format -{0}\ files\ added\ to\ the\ sketch.=Eskemari {0} fitxategi erantsi zaizkio. +{0}\ files\ added\ to\ the\ sketch.=Programari {0} fitxategi erantsi zaizkio. #: ../../../../../app/src/processing/app/Base.java:1201 #, java-format -!{0}\ libraries= +{0}\ libraries={0} liburutegi #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:76 #, java-format -!{0}\ must\ be\ a\ folder= +{0}\ must\ be\ a\ folder={0} -(e)k karpeta izan behar du #: ../../../../../app/src/processing/app/EditorLineStatus.java:109 #, java-format -!{0}\ on\ {1}= +{0}\ on\ {1}={0} {1}(e)n #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:78 #, java-format -!{0}\ pattern\ is\ missing= +{0}\ pattern\ is\ missing=Ez da {0} eredurik topatzen #: debug/Compiler.java:365 #, java-format -{0}\ returned\ {1}={0} itzuli {1} +{0}\ returned\ {1}={0}(e)k {1} itzuli du #: Editor.java:2213 #, java-format @@ -1931,23 +1992,23 @@ upload=Kargatu #: ../../../processing/app/Base.java:519 #, java-format -{0}\:\ Invalid\ argument\ to\ --pref,\ should\ be\ of\ the\ form\ "pref\=value"={0}\: Argumentu elbarria --pref, "pref\=value" formaren izan behar izango litzateke +{0}\:\ Invalid\ argument\ to\ --pref,\ should\ be\ of\ the\ form\ "pref\=value"={0}\: Argumentu baliogabea --pref aukerarentzat, "pref\=balioa" modukoa izan behar du #: ../../../processing/app/Base.java:476 #, java-format -{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: Plaka-izen elbarria, "package\:arch\:board" edo "package\:arch\:board\:options" izan behar izango litzateke formaren. - -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: Aukera elbarria {1} plakarako {2} aukera +{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: plakaren izen baliogabea, "package\:arch\:board" edo "package\:arch\:board\:options" modukoa izan behar du #: ../../../processing/app/Base.java:507 #, java-format -{0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: Plakarako {1} aukera elbarria +{0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: {1} plakarentzako aukera baliogabea #: ../../../processing/app/Base.java:502 #, java-format -{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Aukera elbarria, "name\=value" formaren izan behar izango litzateke. +{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Aukera baliogabea, "name\=value" modukoa izan behar du + +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: "{2}" plakaren "{1}" aukerarentzako balio ez onargarria #: ../../../processing/app/Base.java:486 #, java-format @@ -1963,4 +2024,4 @@ upload=Kargatu #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format -!{0}Install\ this\ package{1}\ to\ use\ your\ {2}\ board= +{0}Install\ this\ package{1}\ to\ use\ your\ {2}\ board={0}Instalatu pakete hau{1} zure {2} plaka erabiltzeko diff --git a/arduino-core/src/processing/app/i18n/Resources_fa.po b/arduino-core/src/processing/app/i18n/Resources_fa.po index d42a7d73b27..863fd9cd93c 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fa.po +++ b/arduino-core/src/processing/app/i18n/Resources_fa.po @@ -17,7 +17,12 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: +# Ardeshir Hakimi, 2020 # arminjavan , 2014 +# axzw tere , 2020 # Ebrahim Byagowi , 2012 # Mohammad Hamidi , 2017 msgid "" @@ -25,8 +30,8 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" -"Last-Translator: Cristian Maglie \n" +"PO-Revision-Date: 2020-02-04 08:56+0000\n" +"Last-Translator: Ardeshir Hakimi\n" "Language-Team: Persian (http://www.transifex.com/mbanzi/arduino-ide-15/language/fa/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -67,11 +72,11 @@ msgstr "پوشه \"arch\" دیگر پشتیبانی نمی شود. برای اط #: Preferences.java:478 msgid "(edit only when Arduino is not running)" -msgstr "(ویرایش فقط به هنگامی که آردئینو درحال اجرا نیست)" +msgstr "(ویرایش فقط به هنگام عدم اجرای آردوینو)" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 msgid "(legacy)" -msgstr "" +msgstr "(باقی‌مانده از نرم‌افزار قبلی)" #: ../../../processing/app/helpers/CommandlineParser.java:149 msgid "--curdir no longer supported" @@ -171,7 +176,7 @@ msgstr "خطایی به عنوان اصلاح کدگذاری پرونده رخ #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:99 msgid "An error occurred while updating libraries index!" -msgstr "" +msgstr "بروز مشکل در به‌روز رسانی نمایه‌ی کتابخانه‌ها" #: ../../../processing/app/BaseNoGui.java:528 msgid "An error occurred while uploading the sketch" @@ -240,7 +245,7 @@ msgstr "برد آردئینو ای وی آر (avr)" msgid "" "Arduino can only open its own sketches\n" "and other files ending in .ino or .pde" -msgstr "" +msgstr "نرم‌افزار آردوینو فقط می‌تواند اسکچ‌های خود و یا سایر فایل‌ها با پسوند ino. و pde. را باز کند." #: Base.java:1682 msgid "" @@ -624,6 +629,11 @@ msgstr "نمی‌توان نسخهٔ قدیمی {0} را حذف نمود" msgid "Could not replace {0}" msgstr "نمی‌توان {0} را جایگزین نمود" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "نمی‌توان طرح را بایگانی نمود" @@ -679,6 +689,10 @@ msgstr "کاهش تورفتگی" msgid "Default" msgstr "پیشفرض" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "حذف" @@ -798,7 +812,7 @@ msgstr "زبان ویرایشگر:" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:322 msgid "Enable Code Folding" -msgstr "" +msgstr "مخفی‌سازی دستورها" #: Preferences.java:92 msgid "English" @@ -843,7 +857,7 @@ msgstr "خطای کامپایل" #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:113 #, java-format msgid "Error downloading {0}" -msgstr "" +msgstr "خطا در دانلودِ {0}" #: Base.java:1674 msgid "Error getting the Arduino data folder." @@ -854,6 +868,11 @@ msgstr "خطای گرفتن پوشه اطلاعات آردئینو" msgid "Error inside Serial.{0}()" msgstr "خطای درونی. {0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -873,6 +892,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "خطا در خواندن نمایه‌ کتابخانه‌ها: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "خطای خواندن ترجیحات" @@ -907,6 +945,10 @@ msgstr "خطای به هنگام سوزاندن بوت‌لودر." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -922,7 +964,7 @@ msgstr "" #: ../../../processing/app/BaseNoGui.java:528 msgid "Error while uploading" -msgstr "" +msgstr "خطای حین بارگذاری" #: ../../../processing/app/Editor.java:2409 #: ../../../processing/app/Editor.java:2449 @@ -933,27 +975,23 @@ msgstr "خطا حین بارگذاری: پارامتر پیکربندی '{0}' ا #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 msgid "Error while verifying" -msgstr "" +msgstr "خطای حین تایید" #: ../../../processing/app/BaseNoGui.java:521 msgid "Error while verifying/uploading" -msgstr "" +msgstr "خطای حین تایید/بارگذاری" #: Preferences.java:93 msgid "Estonian" msgstr "استونیایی" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "استونیایی (استونی)" - #: Editor.java:516 msgid "Examples" msgstr "نمونه‌ها" #: ../../../../../app/src/processing/app/Base.java:1185 msgid "Examples for any board" -msgstr "" +msgstr "مثال‌هایی برای تمام بوردها" #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 @@ -1150,9 +1188,9 @@ msgstr "" msgid "Ignore Case" msgstr "نادیده‌گرفتن بزرگی/کوچکی" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "در نظر نگرفتن نام نامناسب کتابخانه" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1215,9 +1253,9 @@ msgstr "" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1244,6 +1282,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "ایتالیایی" @@ -1276,9 +1325,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1296,7 +1345,7 @@ msgstr "" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 #, java-format msgid "Looking for recipes like {0}*{1}" -msgstr "" +msgstr "جستجوی دستور العمل‌هایی مانند {0}*{1}" #: ../../../processing/app/Sketch.java:1684 msgid "Low memory available, stability problems may occur." @@ -1475,7 +1524,7 @@ msgstr "نروژی" msgid "" "Not enough memory; see http://www.arduino.cc/en/Guide/Troubleshooting#size " "for tips on reducing your footprint." -msgstr "" +msgstr "حافظه، کافی نیست؛ مشاهده نکاتی درباره کاهش مصرف فضا در لینک زیر:\nhttp://www.arduino.cc/en/Guide/Troubleshooting#size" #: Preferences.java:80 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2145 Editor.java:2465 @@ -1696,9 +1745,9 @@ msgstr "مرجع" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1735,6 +1784,10 @@ msgstr "جایگزین کردن:" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "رومانیایی" @@ -1858,12 +1911,15 @@ msgid "" " Serial Port menu?" msgstr "درگاه سریال ''{0}'' یافت نشد. آیا شما درست آن را از منوی ابزارها > درگاه سریال انتخاب نموده‌اید؟" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "درگاه سریال {0} یافت نشد.\nانجام مجدد باگذاری با درگاه سریالی دیگر؟" +msgid "Serial port {0} not found." +msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1886,6 +1942,10 @@ msgstr "مشکلات تنظیمات" msgid "Show Sketch Folder" msgstr "نمایش پوشهٔ طرح" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "نمایش خروجی پرگو به هنگام:" @@ -2057,6 +2117,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "پرونده \"{0}\" می‌بایست داخل یک\nپوشهٔ طرح به نام \"{1}\" ذخیره گردند.\nساختن این پوشه، انتقال پرونده و ادامه؟" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2102,10 +2170,11 @@ msgid "" "but anything besides the code will be lost." msgstr "پوشهٔ طرح ناپدید شده‌است.\n تلاش خواهید که آن را در محل مشابه ذخیره نمود\nولی به‌علاوهٔ آن کد مفقود خواهد شد." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2123,6 +2192,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2615,6 +2688,12 @@ msgstr "درنظر نگرفتن اندازهٔ قلم نامناسب {0}" msgid "name is null" msgstr "name تهی است" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu تهی است" @@ -2702,11 +2781,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2717,6 +2791,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_fa.properties b/arduino-core/src/processing/app/i18n/Resources_fa.properties index 972ccc95e1e..eec39cbc9ec 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fa.properties +++ b/arduino-core/src/processing/app/i18n/Resources_fa.properties @@ -17,10 +17,15 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: +# Ardeshir Hakimi, 2020 # arminjavan , 2014 +# axzw tere , 2020 # Ebrahim Byagowi , 2012 # Mohammad Hamidi , 2017 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Persian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fa/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fa\nPlural-Forms\: nplurals\=2; plural\=(n > 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2020-02-04 08\:56+0000\nLast-Translator\: Ardeshir Hakimi\nLanguage-Team\: Persian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fa/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fa\nPlural-Forms\: nplurals\=2; plural\=(n > 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (\u0646\u06cc\u0627\u0632\u0645\u0646\u062f \u0628\u0627\u0632\u06af\u0634\u0627\u06cc\u06cc \u0645\u062c\u062f\u062f \u0646\u0645\u0648\u062f\u0646 \u0622\u0631\u062f\u0626\u06cc\u0646\u0648) @@ -43,10 +48,10 @@ 'arch'\ folder\ is\ no\ longer\ supported\!\ See\ http\://goo.gl/gfFJzU\ for\ more\ information=\u067e\u0648\u0634\u0647 "arch" \u062f\u06cc\u06af\u0631 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc \u0634\u0648\u062f. \u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u0628\u0647 \u0627\u06cc\u0646 \u0622\u062f\u0631\u0633 \u0645\u0631\u0627\u062c\u0639\u0647 \u06a9\u0646\u06cc\u062f \: http\://goo.gl/gfFJzU #: Preferences.java:478 -(edit\ only\ when\ Arduino\ is\ not\ running)=(\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0641\u0642\u0637 \u0628\u0647 \u0647\u0646\u06af\u0627\u0645\u06cc \u06a9\u0647 \u0622\u0631\u062f\u0626\u06cc\u0646\u0648 \u062f\u0631\u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0646\u06cc\u0633\u062a) +(edit\ only\ when\ Arduino\ is\ not\ running)=(\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0641\u0642\u0637 \u0628\u0647 \u0647\u0646\u06af\u0627\u0645 \u0639\u062f\u0645 \u0627\u062c\u0631\u0627\u06cc \u0622\u0631\u062f\u0648\u06cc\u0646\u0648) #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 -!(legacy)= +(legacy)=(\u0628\u0627\u0642\u06cc\u200c\u0645\u0627\u0646\u062f\u0647 \u0627\u0632 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0642\u0628\u0644\u06cc) #: ../../../processing/app/helpers/CommandlineParser.java:149 --curdir\ no\ longer\ supported=--curdir \u062f\u06cc\u06af\u0631 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc \u0634\u0648\u062f. @@ -114,7 +119,7 @@ All=\u0647\u0645\u0647 An\ error\ occurred\ while\ trying\ to\ fix\ the\ file\ encoding.\nDo\ not\ attempt\ to\ save\ this\ sketch\ as\ it\ may\ overwrite\nthe\ old\ version.\ Use\ Open\ to\ re-open\ the\ sketch\ and\ try\ again.\n=\u062e\u0637\u0627\u06cc\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u0635\u0644\u0627\u062d \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u067e\u0631\u0648\u0646\u062f\u0647 \u0631\u062e\u200c\u062f\u0627\u062f.\n\u0633\u0639\u06cc \u0646\u06a9\u0646\u06cc\u062f \u0627\u06cc\u0646 \u0637\u0631\u062d \u0631\u0627 \u0628\u0631 \u0631\u0648\u06cc \u0646\u0633\u062e\u0647\u0654 \u0642\u0628\u0644\u06cc \u0630\u062e\u06cc\u0631\u0647\u0654 \u06a9\u0646\u06cc\u062f.\n\u0627\u0632 \u0628\u0627\u0632\u06a9\u0631\u062f\u0646 \u0631\u0627 \u0628\u0627\u0632\u06a9\u0631\u062f\u0646 \u0645\u062c\u062f\u062f \u0637\u0631\u062d \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f \u0648 \u062f\u0648\u0628\u0627\u0631\u0647 \u0633\u0639\u06cc \u0646\u0645\u0627\u06cc\u06cc\u062f.\n #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:99 -!An\ error\ occurred\ while\ updating\ libraries\ index\!= +An\ error\ occurred\ while\ updating\ libraries\ index\!=\u0628\u0631\u0648\u0632 \u0645\u0634\u06a9\u0644 \u062f\u0631 \u0628\u0647\u200c\u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0646\u0645\u0627\u06cc\u0647\u200c\u06cc \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627 #: ../../../processing/app/BaseNoGui.java:528 An\ error\ occurred\ while\ uploading\ the\ sketch=\u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0622\u067e\u0644\u0648\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0637\u0627\u06cc\u06cc \u0631\u062e \u062f\u0627\u062f. @@ -162,7 +167,7 @@ Arduino\ ARM\ (32-bits)\ Boards=\u0628\u0631\u062f \u0622\u0631\u062f\u0626\u06c Arduino\ AVR\ Boards=\u0628\u0631\u062f \u0622\u0631\u062f\u0626\u06cc\u0646\u0648 \u0627\u06cc \u0648\u06cc \u0622\u0631 (avr) #: Editor.java:2137 -!Arduino\ can\ only\ open\ its\ own\ sketches\nand\ other\ files\ ending\ in\ .ino\ or\ .pde= +Arduino\ can\ only\ open\ its\ own\ sketches\nand\ other\ files\ ending\ in\ .ino\ or\ .pde=\u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 \u0641\u0642\u0637 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u0633\u06a9\u0686\u200c\u0647\u0627\u06cc \u062e\u0648\u062f \u0648 \u06cc\u0627 \u0633\u0627\u06cc\u0631 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627 \u0628\u0627 \u067e\u0633\u0648\u0646\u062f ino. \u0648 pde. \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u062f. #: Base.java:1682 Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ settings.=\u0622\u0631\u062f\u0626\u06cc\u0646\u0648 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0627\u062c\u0631\u0627 \u0634\u0648\u062f \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u06a9\u0647 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f\n\u067e\u0648\u0634\u0647\u200c\u0627\u06cc \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u0654 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0634\u0645\u0627 \u0628\u0633\u0627\u0632\u062f. @@ -443,6 +448,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=\u0646\u0645\u06cc\u200c\u062a\u0648\u #, java-format Could\ not\ replace\ {0}=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 {0} \u0631\u0627 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0646\u0645\u0648\u062f +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0637\u0631\u062d \u0631\u0627 \u0628\u0627\u06cc\u06af\u0627\u0646\u06cc \u0646\u0645\u0648\u062f @@ -482,6 +491,9 @@ Decrease\ Indent=\u06a9\u0627\u0647\u0634 \u062a\u0648\u0631\u0641\u062a\u06af\u #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=\u067e\u06cc\u0634\u0641\u0631\u0636 +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=\u062d\u0630\u0641 @@ -569,7 +581,7 @@ Editor\ font\ size\:\ =\u0627\u0646\u062f\u0627\u0632\u0647\u0654 \u0642\u0644\u Editor\ language\:\ =\u0632\u0628\u0627\u0646 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631\: #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:322 -!Enable\ Code\ Folding= +Enable\ Code\ Folding=\u0645\u062e\u0641\u06cc\u200c\u0633\u0627\u0632\u06cc \u062f\u0633\u062a\u0648\u0631\u0647\u0627 #: Preferences.java:92 English=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc @@ -604,7 +616,7 @@ Error\ compiling.=\u062e\u0637\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\ #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:113 #, java-format -!Error\ downloading\ {0}= +Error\ downloading\ {0}=\u062e\u0637\u0627 \u062f\u0631 \u062f\u0627\u0646\u0644\u0648\u062f\u0650 {0} #: Base.java:1674 Error\ getting\ the\ Arduino\ data\ folder.=\u062e\u0637\u0627\u06cc \u06af\u0631\u0641\u062a\u0646 \u067e\u0648\u0634\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0622\u0631\u062f\u0626\u06cc\u0646\u0648 @@ -613,6 +625,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=\u062e\u0637\u0627\u06cc \u06af\u063 #, java-format Error\ inside\ Serial.{0}()=\u062e\u0637\u0627\u06cc \u062f\u0631\u0648\u0646\u06cc. {0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -627,6 +643,18 @@ Error\ opening\ serial\ port\ ''{0}''.=\u062e\u0637\u0627 \u0628\u0647 \u0647\u0 #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=\u062e\u0637\u0627 \u062f\u0631 \u062e\u0648\u0627\u0646\u062f\u0646 \u0646\u0645\u0627\u06cc\u0647\u200c \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u200c\u0647\u0627\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 Error\ reading\ preferences=\u062e\u0637\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u062a\u0631\u062c\u06cc\u062d\u0627\u062a @@ -652,6 +680,9 @@ Error\ while\ burning\ bootloader.=\u062e\u0637\u0627\u06cc \u0628\u0647 \u0647\ #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -663,7 +694,7 @@ Error\ while\ printing.=\u062e\u0637\u0627 \u0647\u0646\u06af\u0627\u0645 \u0686 !Error\ while\ setting\ serial\ port\ parameters\:\ {0}\ {1}\ {2}\ {3}= #: ../../../processing/app/BaseNoGui.java:528 -!Error\ while\ uploading= +Error\ while\ uploading=\u062e\u0637\u0627\u06cc \u062d\u06cc\u0646 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc #: ../../../processing/app/Editor.java:2409 #: ../../../processing/app/Editor.java:2449 @@ -672,22 +703,19 @@ Error\ while\ uploading\:\ missing\ '{0}'\ configuration\ parameter=\u062e\u0637 #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 -!Error\ while\ verifying= +Error\ while\ verifying=\u062e\u0637\u0627\u06cc \u062d\u06cc\u0646 \u062a\u0627\u06cc\u06cc\u062f #: ../../../processing/app/BaseNoGui.java:521 -!Error\ while\ verifying/uploading= +Error\ while\ verifying/uploading=\u062e\u0637\u0627\u06cc \u062d\u06cc\u0646 \u062a\u0627\u06cc\u06cc\u062f/\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc #: Preferences.java:93 Estonian=\u0627\u0633\u062a\u0648\u0646\u06cc\u0627\u06cc\u06cc -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=\u0627\u0633\u062a\u0648\u0646\u06cc\u0627\u06cc\u06cc (\u0627\u0633\u062a\u0648\u0646\u06cc) - #: Editor.java:516 Examples=\u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627 #: ../../../../../app/src/processing/app/Base.java:1185 -!Examples\ for\ any\ board= +Examples\ for\ any\ board=\u0645\u062b\u0627\u0644\u200c\u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u062a\u0645\u0627\u0645 \u0628\u0648\u0631\u062f\u0647\u0627 #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 @@ -833,8 +861,8 @@ Hungarian=\u0645\u062c\u0627\u0631 #: FindReplace.java:96 Ignore\ Case=\u0646\u0627\u062f\u06cc\u062f\u0647\u200c\u06af\u0631\u0641\u062a\u0646 \u0628\u0632\u0631\u06af\u06cc/\u06a9\u0648\u0686\u06a9\u06cc -#: Base.java:1058 -Ignoring\ bad\ library\ name=\u062f\u0631 \u0646\u0638\u0631 \u0646\u06af\u0631\u0641\u062a\u0646 \u0646\u0627\u0645 \u0646\u0627\u0645\u0646\u0627\u0633\u0628 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=\u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646 \u0637\u0631\u062d \u0628\u0627 \u0646\u0627\u0645 \u0628\u062f @@ -878,9 +906,9 @@ Indonesian=\u0627\u0646\u062f\u0648\u0646\u0632\u06cc\u0627\u06cc\u06cc #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -901,6 +929,15 @@ Indonesian=\u0627\u0646\u062f\u0648\u0646\u0632\u06cc\u0627\u06cc\u06cc #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=\u0627\u06cc\u062a\u0627\u0644\u06cc\u0627\u06cc\u06cc @@ -925,9 +962,9 @@ Latvian=\u0644\u062a\u0648\u0627\u0646\u06cc\u0627\u06cc\u06cc #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -940,7 +977,7 @@ Lithuaninan=\u0644\u06cc\u062a\u0648\u0627\u0646\u06cc\u0627\u06cc\u06cc #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 #, java-format -!Looking\ for\ recipes\ like\ {0}*{1}= +Looking\ for\ recipes\ like\ {0}*{1}=\u062c\u0633\u062a\u062c\u0648\u06cc \u062f\u0633\u062a\u0648\u0631 \u0627\u0644\u0639\u0645\u0644\u200c\u0647\u0627\u06cc\u06cc \u0645\u0627\u0646\u0646\u062f {0}*{1} #: ../../../processing/app/Sketch.java:1684 !Low\ memory\ available,\ stability\ problems\ may\ occur.= @@ -1074,7 +1111,7 @@ No\ valid\ code\ files\ found=\u067e\u0631\u0648\u0646\u062f\u0647 \u062d\u0627\ Norwegian\ Bokm\u00e5l=\u0646\u0631\u0648\u0698\u06cc #: ../../../processing/app/Sketch.java:1656 -!Not\ enough\ memory;\ see\ http\://www.arduino.cc/en/Guide/Troubleshooting\#size\ for\ tips\ on\ reducing\ your\ footprint.= +Not\ enough\ memory;\ see\ http\://www.arduino.cc/en/Guide/Troubleshooting\#size\ for\ tips\ on\ reducing\ your\ footprint.=\u062d\u0627\u0641\u0638\u0647\u060c \u06a9\u0627\u0641\u06cc \u0646\u06cc\u0633\u062a\u061b \u0645\u0634\u0627\u0647\u062f\u0647 \u0646\u06a9\u0627\u062a\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u06a9\u0627\u0647\u0634 \u0645\u0635\u0631\u0641 \u0641\u0636\u0627 \u062f\u0631 \u0644\u06cc\u0646\u06a9 \u0632\u06cc\u0631\:\nhttp\://www.arduino.cc/en/Guide/Troubleshooting\#size #: Preferences.java:80 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2145 Editor.java:2465 @@ -1240,9 +1277,9 @@ Reference=\u0645\u0631\u062c\u0639 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1270,6 +1307,9 @@ Replace\ with\:=\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0 #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=\u0631\u0648\u0645\u0627\u0646\u06cc\u0627\u06cc\u06cc @@ -1361,9 +1401,13 @@ Serial\ Monitor=\u0646\u0645\u0627\u06cc\u0634\u06af\u0631 \u0633\u0631\u06cc\u0 #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=\u062f\u0631\u06af\u0627\u0647 \u0633\u0631\u06cc\u0627\u0644 ''{0}'' \u06cc\u0627\u0641\u062a \u0646\u0634\u062f. \u0622\u06cc\u0627 \u0634\u0645\u0627 \u062f\u0631\u0633\u062a \u0622\u0646 \u0631\u0627 \u0627\u0632 \u0645\u0646\u0648\u06cc \u0627\u0628\u0632\u0627\u0631\u0647\u0627 > \u062f\u0631\u06af\u0627\u0647 \u0633\u0631\u06cc\u0627\u0644 \u0627\u0646\u062a\u062e\u0627\u0628 \u0646\u0645\u0648\u062f\u0647\u200c\u0627\u06cc\u062f\u061f -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=\u062f\u0631\u06af\u0627\u0647 \u0633\u0631\u06cc\u0627\u0644 {0} \u06cc\u0627\u0641\u062a \u0646\u0634\u062f.\n\u0627\u0646\u062c\u0627\u0645 \u0645\u062c\u062f\u062f \u0628\u0627\u06af\u0630\u0627\u0631\u06cc \u0628\u0627 \u062f\u0631\u06af\u0627\u0647 \u0633\u0631\u06cc\u0627\u0644\u06cc \u062f\u06cc\u06af\u0631\u061f +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1381,6 +1425,9 @@ Settings\ issues=\u0645\u0634\u06a9\u0644\u0627\u062a \u062a\u0646\u0638\u06cc\u #: Editor.java:641 Show\ Sketch\ Folder=\u0646\u0645\u0627\u06cc\u0634 \u067e\u0648\u0634\u0647\u0654 \u0637\u0631\u062d +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =\u0646\u0645\u0627\u06cc\u0634 \u062e\u0631\u0648\u062c\u06cc \u067e\u0631\u06af\u0648 \u0628\u0647 \u0647\u0646\u06af\u0627\u0645\: @@ -1500,6 +1547,10 @@ The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=\u06a9\u0644\u0627\u0633 Udp \ #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=\u067e\u0631\u0648\u0646\u062f\u0647 "{0}" \u0645\u06cc\u200c\u0628\u0627\u06cc\u0633\u062a \u062f\u0627\u062e\u0644 \u06cc\u06a9\n\u067e\u0648\u0634\u0647\u0654 \u0637\u0631\u062d \u0628\u0647 \u0646\u0627\u0645 "{1}" \u0630\u062e\u06cc\u0631\u0647 \u06af\u0631\u062f\u0646\u062f.\n\u0633\u0627\u062e\u062a\u0646 \u0627\u06cc\u0646 \u067e\u0648\u0634\u0647\u060c \u0627\u0646\u062a\u0642\u0627\u0644 \u067e\u0631\u0648\u0646\u062f\u0647 \u0648 \u0627\u062f\u0627\u0645\u0647\u061f +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\u0654 "{0}" \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06af\u0631\u062f\u062f.\n\u0646\u0627\u0645 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0641\u0642\u0637 \u0645\u06cc\u200c\u0628\u0627\u06cc\u0633\u062a \u0634\u0627\u0645\u0644 \u062d\u0631\u0648\u0641 \u0633\u0627\u062f\u0647 \u0648 \u0639\u062f\u062f \u0628\u0627\u0634\u062f.\n(\u0641\u0642\u0637 ASCII \u0648 \u0628\u062f\u0648\u0646 \u0641\u0627\u0635\u0644\u0647 \u0648 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0627 \u06cc\u06a9 \u0639\u062f\u062f \u0634\u0631\u0648\u0639 \u0634\u0648\u062f.) @@ -1524,8 +1575,8 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=\u067e\u0648\u0634\u0647\u0654 \u0637\u0631\u062d \u0646\u0627\u067e\u062f\u06cc\u062f \u0634\u062f\u0647\u200c\u0627\u0633\u062a.\n \u062a\u0644\u0627\u0634 \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0647 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u0645\u062d\u0644 \u0645\u0634\u0627\u0628\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0646\u0645\u0648\u062f\n\u0648\u0644\u06cc \u0628\u0647\u200c\u0639\u0644\u0627\u0648\u0647\u0654 \u0622\u0646 \u06a9\u062f \u0645\u0641\u0642\u0648\u062f \u062e\u0648\u0627\u0647\u062f \u0634\u062f. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=\u067e\u0648\u0634\u0647\u0654 \u06a9\u062a\u0627\u0628 \u0637\u0631\u062d \u062f\u06cc\u06af\u0631 \u0645\u0648\u062c\u0648\u062f \u0646\u06cc\u0633\u062a.\n\u0622\u0631\u062f\u0626\u0646\u0648 \u0645\u062d\u0644 \u06a9\u062a\u0627\u0628 \u0637\u0631\u062d \u067e\u06cc\u0634\u200c\u0641\u0631\u0636 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f\n\u0648 \u067e\u0648\u0634\u0647\u0654 \u06a9\u062a\u0627\u0628 \u0637\u0631\u062d\u06cc \u062f\u0631\u0633\u062a \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f \u0627\u06af\u0631 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632\n\u0628\u0627\u0634\u062f. \u0622\u0631\u062f\u0626\u06cc\u0646\u0648 \u0635\u062d\u0628\u062a \u06a9\u0631\u062f\u0646 \u062f\u0631 \u0631\u0627\u0628\u0637\u0647 \u0628\u0627 \u062e\u0648\u062f \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646\n\u0633\u0648\u0645 \u0634\u062e\u0635 \u0631\u0627 \u067e\u0627\u06cc\u0627\u0646 \u0645\u06cc\u200c\u062f\u0647\u062f. @@ -1533,6 +1584,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1867,6 +1921,11 @@ ignoring\ invalid\ font\ size\ {0}=\u062f\u0631\u0646\u0638\u0631 \u0646\u06af\u #: Editor.java:936 Editor.java:943 name\ is\ null=name \u062a\u0647\u06cc \u0627\u0633\u062a +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=serialMenu \u062a\u0647\u06cc \u0627\u0633\u062a @@ -1934,10 +1993,6 @@ upload=\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1946,6 +2001,10 @@ upload=\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: \u0645\u0639\u0645\u0627\u0631\u06cc \u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647 diff --git a/arduino-core/src/processing/app/i18n/Resources_fa_IR.po b/arduino-core/src/processing/app/i18n/Resources_fa_IR.po index 7ad44de6783..03b65a91fe4 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fa_IR.po +++ b/arduino-core/src/processing/app/i18n/Resources_fa_IR.po @@ -17,15 +17,20 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Ali Mirjamali , 2013 +# Hoseinali Shobeiri , 2020-2021 +# Hoseinali Shobeiri , 2020 # Seyyed Mohammad Amin Mousavi , 2017 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" -"Last-Translator: Cristian Maglie \n" +"PO-Revision-Date: 2021-10-08 15:21+0000\n" +"Last-Translator: Hoseinali Shobeiri \n" "Language-Team: Persian (Iran) (http://www.transifex.com/mbanzi/arduino-ide-15/language/fa_IR/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -84,7 +89,7 @@ msgstr "--verbose,--verbose-upload , --verbose-build\nتنها می توانند #: Sketch.java:746 msgid ".pde -> .ino" -msgstr "" +msgstr ".PDE -> .INO" #: Editor.java:2053 msgid "" @@ -97,27 +102,27 @@ msgstr "" #: Editor.java:2169 #, java-format msgid "A folder named \"{0}\" already exists. Can't open sketch." -msgstr "" +msgstr "یک پوشه ای به اسم \"{0}\" از قبل وجود دارد. نمی‌توان طرح را باز کرد." #: Base.java:2690 #, java-format msgid "A library named {0} already exists" -msgstr "" +msgstr "یک کتابخانه ای به اسم {0} از قبل وجود دارد" #: UpdateCheck.java:103 msgid "" "A new version of Arduino is available,\n" "would you like to visit the Arduino download page?" -msgstr "" +msgstr "یک نسخه جدید آردوینو در دسترس است. آیا مایلید از صفحه دانلود آردوینو بازدید کنید؟ " #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format msgid "A newer {0} package is available" -msgstr "" +msgstr "یک بسته جدیدتر {0} در دسترس است" #: ../../../../../app/src/processing/app/Base.java:2307 msgid "A subfolder of your sketchbook is not a valid library" -msgstr "" +msgstr "پوشه فرعی کتاب طرح شما از یک کتابخانه معتبر نیست" #: Editor.java:1116 msgid "About Arduino" @@ -125,11 +130,11 @@ msgstr "در مورد آردوینو" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 msgid "Acoli" -msgstr "" +msgstr "آکولی" #: ../../../../../app/src/processing/app/Base.java:1177 msgid "Add .ZIP Library..." -msgstr "" +msgstr "اضافه کردن کتابخانه ... ZIP. " #: Editor.java:650 msgid "Add File..." @@ -137,15 +142,15 @@ msgstr "اضافه کردن فایل..." #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:73 msgid "Additional Boards Manager URLs" -msgstr "" +msgstr "مدیریت آدرس های اضافی بردها" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:268 msgid "Additional Boards Manager URLs: " -msgstr "" +msgstr "مدیریت آدرس های اضافی بردها:" #: ../../../../../app/src/processing/app/Preferences.java:161 msgid "Afrikaans" -msgstr "" +msgstr "آفریقایی" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 msgid "Aggressively cache compiled core" @@ -153,13 +158,13 @@ msgstr "" #: ../../../processing/app/Preferences.java:96 msgid "Albanian" -msgstr "" +msgstr "آلبانی" #: ../../../../../app/src/cc/arduino/contributions/ui/DropdownAllItem.java:42 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownAllCoresItem.java:43 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:187 msgid "All" -msgstr "" +msgstr "همه" #: tools/FixEncoding.java:77 msgid "" @@ -170,27 +175,27 @@ msgstr "" #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:99 msgid "An error occurred while updating libraries index!" -msgstr "" +msgstr "یک خطا هنگام بروزرسانی شاخصه های کتابخانه ها رخ داد!" #: ../../../processing/app/BaseNoGui.java:528 msgid "An error occurred while uploading the sketch" -msgstr "" +msgstr "یک خطا در هنگام آپلود کردن طرح رخ داد" #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 msgid "An error occurred while verifying the sketch" -msgstr "" +msgstr "یک خطا در هنگام بازبینی کردن طرح رخ داد" #: ../../../processing/app/BaseNoGui.java:521 msgid "An error occurred while verifying/uploading the sketch" -msgstr "" +msgstr "یک خطا در هنگام بازبینی/ آپلود به طرح رخ داد" #: Base.java:228 msgid "" "An unknown error occurred while trying to load\n" "platform-specific code for your machine." -msgstr "" +msgstr "یک خطا نامشخص در هنگام بارگذاری\n کد پلتفرم-خاص برای ماشین شما رخ داد." #: Preferences.java:85 msgid "Arabic" @@ -202,15 +207,15 @@ msgstr "" #: tools/Archiver.java:48 msgid "Archive Sketch" -msgstr "" +msgstr "آرشیو کردن طرح" #: tools/Archiver.java:109 msgid "Archive sketch as:" -msgstr "" +msgstr "آرشیو کردن طرح به عنوان:" #: tools/Archiver.java:139 msgid "Archive sketch canceled." -msgstr "" +msgstr "آرشیو کردن طرح لغو شد." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format @@ -225,7 +230,7 @@ msgstr "" #: ../../../../../arduino-core/src/processing/app/I18n.java:24 msgid "Arduino" -msgstr "" +msgstr "آردوینو" #: ../../../processing/app/I18n.java:83 msgid "Arduino ARM (32-bits) Boards" @@ -239,19 +244,19 @@ msgstr "بردهای AVR آردوینو" msgid "" "Arduino can only open its own sketches\n" "and other files ending in .ino or .pde" -msgstr "" +msgstr "آردوئینو فقط میتواند طرح های خودش را باز کند\nو دیگر فایل ها که آخر آنها با .ino یا .pde هستند" #: Base.java:1682 msgid "" "Arduino cannot run because it could not\n" "create a folder to store your settings." -msgstr "" +msgstr "آردوئینو نمیتواند اجرا شود زیرا نمیتوان\n یک پوشه درست کرد که تنظیمات شما ذخیره شود." #: Base.java:1889 msgid "" "Arduino cannot run because it could not\n" "create a folder to store your sketchbook." -msgstr "" +msgstr "آردوئینو نمیتواند اجرا شود زیرا نمیتوان\nیک پوشه درست کرد که کتاب طرح شما ذخیره شود." #: ../../../processing/app/EditorStatus.java:471 msgid "Arduino: " @@ -264,23 +269,23 @@ msgstr "اطمینان دارید که می‌خواهید \"{0}\" را حذف #: Sketch.java:587 msgid "Are you sure you want to delete this sketch?" -msgstr "" +msgstr "مطمئن هستید که می‌خواهید این طرح را حذف کنید؟ " #: ../../../processing/app/Base.java:356 msgid "Argument required for --board" -msgstr "" +msgstr "استدلال نیاز است برای بورد--" #: ../../../processing/app/Base.java:363 msgid "Argument required for --port" -msgstr "" +msgstr "استدلال نیاز است برای پورت--" #: ../../../processing/app/Base.java:377 msgid "Argument required for --pref" -msgstr "" +msgstr "استدلال نیاز است برای pref--" #: ../../../processing/app/Base.java:384 msgid "Argument required for --preferences-file" -msgstr "" +msgstr "استدلال نیاز است برای فایل-ترجیحات--" #: ../../../processing/app/helpers/CommandlineParser.java:76 #: ../../../processing/app/helpers/CommandlineParser.java:83 @@ -294,40 +299,40 @@ msgstr "ارمنی" #: ../../../processing/app/Preferences.java:138 msgid "Asturian" -msgstr "" +msgstr "استرالیایی" #: ../../../processing/app/debug/Compiler.java:145 msgid "Authorization required" -msgstr "" +msgstr "مجوز لازم است" #: tools/AutoFormat.java:91 msgid "Auto Format" -msgstr "" +msgstr "فرمت خودکار" #: tools/AutoFormat.java:944 msgid "Auto Format finished." -msgstr "" +msgstr "فرمت خودکار به پایان رسید." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:457 msgid "Auto-detect proxy settings" -msgstr "" +msgstr "تنظیمات تشخیص-خودکار پروکسی" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:264 msgid "Automatic" -msgstr "" +msgstr "اتوماتیک" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:474 msgid "Automatic proxy configuration URL:" -msgstr "" +msgstr "آدرس پیکربندی اتوماتیک پروکسی:" #: SerialMonitor.java:110 msgid "Autoscroll" -msgstr "" +msgstr "حرکت خودکار" #: Editor.java:2619 #, java-format msgid "Bad error line: {0}" -msgstr "" +msgstr "خطای بد خط: {0}" #: Editor.java:2136 msgid "Bad file selected" @@ -335,7 +340,7 @@ msgstr "فایل اشتباه انتخاب شده" #: ../../../processing/app/Preferences.java:149 msgid "Basque" -msgstr "" +msgstr "باسکایی" #: ../../../processing/app/Preferences.java:139 msgid "Belarusian" @@ -348,25 +353,25 @@ msgstr "بُرد" #: ../../../../../app//src/processing/app/Editor.java:2824 msgid "Board Info" -msgstr "" +msgstr "اطلاعات برد" #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 #, java-format msgid "Board at {0} is not available" -msgstr "" +msgstr "برد در {0} در دسترس نیست" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:62 #, java-format msgid "Board {0} (platform {1}, package {2}) is unknown" -msgstr "" +msgstr "بورد {0} (پلتفرم {1}, بسته {2}) نامشخص است" #: ../../../processing/app/debug/TargetBoard.java:42 #, java-format msgid "" "Board {0}:{1}:{2} doesn''t define a ''build.board'' preference. Auto-set to:" " {3}" -msgstr "" +msgstr "بورد {0}:{1}:{2} ترجیحات یک \"ساخت.بورد\" را تعریف نمیکند. تنظیم-خودکار به: {3}" #: ../../../processing/app/EditorStatus.java:472 msgid "Board: " @@ -374,20 +379,20 @@ msgstr "بُرد:" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 msgid "Boards Manager" -msgstr "" +msgstr "مدیریت بردها" #: ../../../../../app/src/processing/app/Base.java:1320 msgid "Boards Manager..." -msgstr "" +msgstr "مدیریت بردها..." #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:328 msgid "Boards included in this package:" -msgstr "" +msgstr "بورد های شامل شده در این بسته:" #: ../../../processing/app/debug/Compiler.java:1273 #, java-format msgid "Bootloader file specified but missing: {0}" -msgstr "" +msgstr "فایل بوت لودر مسشخص شده ولی از بین رفته: {0}" #: ../../../processing/app/Preferences.java:140 msgid "Bosnian" @@ -399,15 +404,15 @@ msgstr "هم خط جدید و هم سر خط" #: Preferences.java:81 msgid "Browse" -msgstr "" +msgstr "مرورکردن" #: ../../../processing/app/Sketch.java:1530 msgid "Build options changed, rebuilding all" -msgstr "" +msgstr "گزینه های ساخت تغییر کرد, بازسازی همه" #: ../../../../../app/src/processing/app/Base.java:1210 msgid "Built-in Examples" -msgstr "" +msgstr "مثال های داخلی" #: ../../../processing/app/Preferences.java:80 msgid "Bulgarian" @@ -415,7 +420,7 @@ msgstr "بلغاری" #: ../../../processing/app/Preferences.java:141 msgid "Burmese (Myanmar)" -msgstr "" +msgstr "برمه ای (میانمار)" #: Editor.java:708 msgid "Burn Bootloader" @@ -423,27 +428,27 @@ msgstr "Bootloader را ذخیره کن" #: Editor.java:2504 msgid "Burning bootloader to I/O Board (this may take a minute)..." -msgstr "" +msgstr "درحال سوزاندن بوت لودر به برد I/O (ممکن است تا یک دقیقه طول بکشد)..." #: ../../../../../arduino-core/src/cc/arduino/contributions/DownloadableContributionsDownloader.java:91 msgid "" "CRC doesn't match, file is corrupted. It may be a temporary problem, please " "retry later." -msgstr "" +msgstr "CRC مطابقت ندارد، فایل خراب شده است. ممکن است یک مشکل موقت باشد، لطفا بعدا تلاش کنید." #: ../../../processing/app/Base.java:379 #, java-format msgid "Can only pass one of: {0}" -msgstr "" +msgstr "فقط میتوان گذر کرد یکی از: {0}" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 msgid "Can't enable external editor" -msgstr "" +msgstr "نمی‌توان ویرایشگر خارجی را فعال کرد" #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 msgid "Can't find the sketch in the specified path" -msgstr "" +msgstr "نمی‌توان طرح را در مسیر مشخص شده پیدا کرد" #: ../../../processing/app/Preferences.java:92 msgid "Canadian French" @@ -452,11 +457,11 @@ msgstr "فرانسوی (کانادا)" #: Preferences.java:79 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2064 Editor.java:2145 Editor.java:2465 msgid "Cancel" -msgstr "" +msgstr "انصراف" #: ../../../processing/app/Base.java:465 msgid "Cannot specify any sketch files" -msgstr "" +msgstr "نمی‌توان هر فایل طرحی را مشخص کرد" #: SerialMonitor.java:112 msgid "Carriage return" @@ -468,7 +473,7 @@ msgstr "کاتالان" #: Preferences.java:419 msgid "Check for updates on startup" -msgstr "" +msgstr "بررسی برای بروز رسانی ها هنگام راه اندازی" #: ../../../processing/app/Preferences.java:142 msgid "Chinese (China)" @@ -480,15 +485,15 @@ msgstr "چینی (تایوان)" #: ../../../processing/app/Preferences.java:143 msgid "Chinese (Taiwan) (Big5)" -msgstr "" +msgstr "چینی (تایوان) (Big5)" #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 msgid "Clear output" -msgstr "" +msgstr "پاک کردن خروجی" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 msgid "Click for a list of unofficial boards support URLs" -msgstr "" +msgstr "برای لیستی از آدرس های بردهای غیر رسمی پشتیبانی شده کلیک کنید" #: Editor.java:521 Editor.java:2024 msgid "Close" @@ -496,23 +501,23 @@ msgstr "بستن" #: Editor.java:1208 Editor.java:2749 msgid "Comment/Uncomment" -msgstr "" +msgstr "نظر/بدون نظر" #: ../../../../../arduino-core/src/processing/app/I18n.java:30 msgid "Communication" -msgstr "" +msgstr "ارتباطات" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 msgid "Compiler warnings: " -msgstr "" +msgstr "خطاهای کامپایلر:" #: Sketch.java:1608 Editor.java:1890 msgid "Compiling sketch..." -msgstr "" +msgstr "درحال کامپایل کردن طرح... " #: ../../../../../arduino-core/src/processing/app/I18n.java:27 msgid "Contributed" -msgstr "" +msgstr "مشارکت شد" #: Editor.java:1157 Editor.java:2707 msgid "Copy" @@ -528,12 +533,12 @@ msgstr "پیغامهای خطا را کپی کن" #: Editor.java:1165 Editor.java:2715 msgid "Copy for Forum" -msgstr "" +msgstr "کپی برای انجمن" #: Sketch.java:1089 #, java-format msgid "Could not add ''{0}'' to the sketch." -msgstr "" +msgstr "نمی‌توان \"{0}\" را به طرح اضافه کرد." #: Editor.java:2188 msgid "Could not copy to a proper location." @@ -546,11 +551,11 @@ msgstr "" #: Editor.java:2179 msgid "Could not create the sketch folder." -msgstr "" +msgstr "نمیتوان پوشه طرح را ساخت." #: Editor.java:2206 msgid "Could not create the sketch." -msgstr "" +msgstr "نمی‌توان طرح را ساخت" #: Sketch.java:617 #, java-format @@ -565,17 +570,17 @@ msgstr "حذف فایل ''{0}'' ممکن نشد." #: ../../../processing/app/debug/TargetPlatform.java:74 #, java-format msgid "Could not find boards.txt in {0}. Is it pre-1.5?" -msgstr "" +msgstr "نمیتوان boards.txt را در {0} پیدا کرد. آیا pre-1.5 است؟" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:282 #, java-format msgid "Could not find tool {0}" -msgstr "" +msgstr "نمی‌توان ابزار {0} را پیدا کرد" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:278 #, java-format msgid "Could not find tool {0} from package {1}" -msgstr "" +msgstr "نمی‌توان ابزار {0} را از بسته {1} پیدا کرد" #: Base.java:1934 #, java-format @@ -616,20 +621,25 @@ msgstr "" #: Base.java:2482 #, java-format msgid "Could not remove old version of {0}" -msgstr "" +msgstr "نمی‌توان نسخه قدیمی {0} را برداشت" #: Base.java:2492 #, java-format msgid "Could not replace {0}" -msgstr "" +msgstr "نمی‌توان {0} را جابجا کرد" + +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "نمی‌توان فایل اولویت ها را نوشت: {0}" #: tools/Archiver.java:74 msgid "Couldn't archive sketch" -msgstr "" +msgstr "نمی‌توان طرح را آرشیو کرد" #: Sketch.java:1647 msgid "Couldn't determine program size: {0}" -msgstr "" +msgstr "نمی‌توان اندازه برنامه را تعیین کرد: {0}" #: Sketch.java:616 msgid "Couldn't do it" @@ -644,39 +654,43 @@ msgstr "" #: ../../../processing/app/Preferences.java:82 msgid "Croatian" -msgstr "" +msgstr "کرواسی" #: Editor.java:1149 Editor.java:2699 msgid "Cut" -msgstr "" +msgstr "برش" #: ../../../../../app/src/processing/app/Preferences.java:119 msgid "Czech (Czech Republic)" -msgstr "" +msgstr "چک (جمهوری چک)" #: ../../../../../app/src/processing/app/Preferences.java:120 msgid "Danish (Denmark)" -msgstr "" +msgstr "دانمارکی (دانمارک)" #: ../../../../../arduino-core/src/processing/app/I18n.java:36 msgid "Data Processing" -msgstr "" +msgstr "درحال پردازش داده" #: ../../../../../arduino-core/src/processing/app/I18n.java:35 msgid "Data Storage" -msgstr "" +msgstr "ذخیره سازی داده" #: ../../../../../app/src/processing/app/Editor.java:1386 msgid "Decrease Font Size" -msgstr "" +msgstr "کاهش سایز فونت" #: Editor.java:1224 Editor.java:2765 msgid "Decrease Indent" -msgstr "" +msgstr "کاهش تو رفتگی" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 msgid "Default" -msgstr "" +msgstr "پیش فرض" + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "تم پیش فرض" #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" @@ -684,21 +698,21 @@ msgstr "حذف" #: ../../../../../arduino-core/src/processing/app/I18n.java:33 msgid "Device Control" -msgstr "" +msgstr "کنترل دستگاه" #: debug/Uploader.java:199 msgid "" "Device is not responding, check the right serial port is selected or RESET " "the board right before exporting" -msgstr "" +msgstr "دستگاه پاسخ نمی‌دهد، چک کنید که پورت سریال درست است یا برد را قبل از استخراج ریست کنید" #: tools/FixEncoding.java:57 msgid "Discard all changes and reload sketch?" -msgstr "" +msgstr "صرف نظر کردن همه تغییرات و بارگیری مجدد طرح؟ " #: ../../../../../arduino-core/src/processing/app/I18n.java:29 msgid "Display" -msgstr "" +msgstr "نمایش" #: ../../../processing/app/Preferences.java:438 msgid "Display line numbers" @@ -709,7 +723,7 @@ msgstr "شماره خطوط را نشان بده" msgid "" "Do you want to remove {0}?\n" "If you do so you won't be able to use {0} any more." -msgstr "" +msgstr "آیا می‌خواهید {0} را بردارید؟ اگر این کار را کنید دیگر نمی‌توانید از {0} استفاده کنید. " #: Editor.java:2064 msgid "Don't Save" @@ -726,7 +740,7 @@ msgstr "ذخیره Bootloader انجام گردید." #: ../../../processing/app/BaseNoGui.java:507 #: ../../../processing/app/BaseNoGui.java:552 msgid "Done compiling" -msgstr "" +msgstr "کامپایل انجام شد" #: Editor.java:1911 Editor.java:1928 msgid "Done compiling." @@ -738,7 +752,7 @@ msgstr "پایان چاپ." #: ../../../processing/app/BaseNoGui.java:514 msgid "Done uploading" -msgstr "" +msgstr "آپلود انجام شد" #: Editor.java:2395 Editor.java:2431 msgid "Done uploading." @@ -747,7 +761,7 @@ msgstr "آپلود شد." #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:105 #, java-format msgid "Downloaded {0}kb of {1}kb." -msgstr "" +msgstr "دانلود شده {0} کیلوبایت از {1} کیلوبایت." #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:107 msgid "Downloading boards definitions." @@ -755,16 +769,16 @@ msgstr "" #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:86 msgid "Downloading libraries index..." -msgstr "" +msgstr "درحال دانلود شاخصه کتابخانه ها..." #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:115 #, java-format msgid "Downloading library: {0}" -msgstr "" +msgstr "درحال دانلود کتابخانه: {0}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:318 msgid "Downloading platforms index..." -msgstr "" +msgstr "درحال دانلود شاخصه پلتفرم ها..." #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:113 #, java-format @@ -781,7 +795,7 @@ msgstr "هلندی" #: ../../../../../app/src/processing/app/Editor.java:1309 msgid "Edison Help" -msgstr "" +msgstr "راهنمای ادیسون" #: Editor.java:1130 msgid "Edit" @@ -797,7 +811,7 @@ msgstr "زبان ویرایشگر:" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:322 msgid "Enable Code Folding" -msgstr "" +msgstr "فعال کردن تا شدن کد" #: Preferences.java:92 msgid "English" @@ -833,7 +847,7 @@ msgstr "خطا در اضافه کردن فایل" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:272 #, java-format msgid "Error compiling for board {0}." -msgstr "" +msgstr "خطا در هنگام کامپایل کردن برای برد {0}" #: debug/Compiler.java:369 msgid "Error compiling." @@ -842,7 +856,7 @@ msgstr "خطای کامپایل." #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:113 #, java-format msgid "Error downloading {0}" -msgstr "" +msgstr "خطا در دانلود {0}" #: Base.java:1674 msgid "Error getting the Arduino data folder." @@ -851,6 +865,11 @@ msgstr "" #: Serial.java:593 #, java-format msgid "Error inside Serial.{0}()" +msgstr "خطا درون سریال.{0}()" + +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" msgstr "" #: ../../../processing/app/debug/TargetPlatform.java:95 @@ -872,6 +891,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "خطا در هنگام خواندن شاخصه های کتابخانه ها: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "خطا در خواندن تنظیمات برنامه" @@ -900,15 +938,19 @@ msgstr "خطا در دسترسی به پورت سریال ''{0}''." #: Editor.java:2512 Editor.java:2516 Editor.java:2520 msgid "Error while burning bootloader." -msgstr "" +msgstr "خطا در هنگام سوزاندن بوت لودر" #: ../../../processing/app/Editor.java:2555 msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "خطا در هنگام سوزاندن بوت لودر: لطفا یک پورت سریال را انتخاب کنید." + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" -msgstr "" +msgstr "خطا در هنگام کامپایل کردن: نبودن پارامتر پیکربندی '{0}'" #: Editor.java:2567 msgid "Error while printing." @@ -917,11 +959,11 @@ msgstr "خطا در هنگام چاپ." #: ../../../../../arduino-core/src/processing/app/Serial.java:117 #, java-format msgid "Error while setting serial port parameters: {0} {1} {2} {3}" -msgstr "" +msgstr "خطا در هنگام تنظیم کردن پارامتر های پورت سریال: {0} {1} {2} {3}" #: ../../../processing/app/BaseNoGui.java:528 msgid "Error while uploading" -msgstr "" +msgstr "خطا در هنگام آپلود کردن" #: ../../../processing/app/Editor.java:2409 #: ../../../processing/app/Editor.java:2449 @@ -932,7 +974,7 @@ msgstr "" #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 msgid "Error while verifying" -msgstr "" +msgstr "خطا در هنگام بازبینی کردن" #: ../../../processing/app/BaseNoGui.java:521 msgid "Error while verifying/uploading" @@ -942,35 +984,31 @@ msgstr "" msgid "Estonian" msgstr "" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "" - #: Editor.java:516 msgid "Examples" msgstr "مثال‌ها" #: ../../../../../app/src/processing/app/Base.java:1185 msgid "Examples for any board" -msgstr "" +msgstr "مثال هایی برای هر برد" #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 #, java-format msgid "Examples for {0}" -msgstr "" +msgstr "مثال هایی برای {0}" #: ../../../../../app/src/processing/app/Base.java:1244 msgid "Examples from Custom Libraries" -msgstr "" +msgstr "مثال هایی از کتابخانه های سفارشی" #: ../../../../../app/src/processing/app/Base.java:1329 msgid "Examples from Other Libraries" -msgstr "" +msgstr "مثال هایی از دیگر کتابخانه ها" #: ../../../../../app/src/processing/app/Editor.java:753 msgid "Export canceled, changes must first be saved." -msgstr "" +msgstr "استخراج لغو شد، تغییرات اول باید ذخیره شود. " #: ../../../../../app/src/processing/app/Editor.java:750 msgid "Export compiled Binary" @@ -979,16 +1017,16 @@ msgstr "" #: ../../../processing/app/Base.java:416 #, java-format msgid "Failed to open sketch: \"{0}\"" -msgstr "" +msgstr "خطا به هنگام باز کردن طرح: \"{0}\"" #: ../../../../../arduino-core/src/processing/app/SketchFile.java:183 #, java-format msgid "Failed to rename \"{0}\" to \"{1}\"" -msgstr "" +msgstr "تغییر نام \"{0}\" به \"{1}\" شکست خورد" #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 msgid "Failed to rename sketch folder" -msgstr "" +msgstr "تغییر نام پوشه طرح شکست خورد" #: Editor.java:491 msgid "File" @@ -997,7 +1035,7 @@ msgstr "فایل" #: ../../../../../arduino-core/src/processing/app/SketchData.java:139 #, java-format msgid "File name {0} is invalid: ignored" -msgstr "" +msgstr "اسم فایل {0} نامعتبر است: صرف نظر شد" #: Preferences.java:94 msgid "Filipino" @@ -1005,7 +1043,7 @@ msgstr "فلیپینی" #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:95 msgid "Filter your search..." -msgstr "" +msgstr "جست و جو یتان را فیلتر کنید..." #: FindReplace.java:124 FindReplace.java:127 msgid "Find" @@ -1021,7 +1059,7 @@ msgstr "جستجو مورد قبلی" #: Editor.java:1086 Editor.java:2775 msgid "Find in Reference" -msgstr "" +msgstr "پیدا کردن در ارجاع" #: Editor.java:1234 msgid "Find..." @@ -1044,7 +1082,7 @@ msgstr "" msgid "" "For information on installing libraries, see: " "http://www.arduino.cc/en/Guide/Libraries/n" -msgstr "" +msgstr "برای اطلاعات از نصب کتابخانه ها، بازدید کنید از: http://www.arduino.cc/en/Guide/Libraries\n" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:118 #, java-format @@ -1069,7 +1107,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:1288 msgid "Galileo Help" -msgstr "" +msgstr "راهنمای گالیلهو" #: ../../../processing/app/Preferences.java:94 msgid "Georgian" @@ -1081,7 +1119,7 @@ msgstr "آلمانی" #: ../../../../../app//src/processing/app/Editor.java:817 msgid "Get Board Info" -msgstr "" +msgstr "گرفتن اطلاعات برد" #: Editor.java:1054 msgid "Getting Started" @@ -1101,11 +1139,11 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:66 msgid "Go to line" -msgstr "" +msgstr "برو به خط" #: ../../../../../app/src/processing/app/Editor.java:1460 msgid "Go to line..." -msgstr "" +msgstr "برو به خط..." #: Preferences.java:98 msgid "Greek" @@ -1125,7 +1163,7 @@ msgstr "هندی" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:489 msgid "Host name:" -msgstr "" +msgstr "نام درگاه:" #: Sketch.java:295 msgid "" @@ -1149,8 +1187,8 @@ msgstr "" msgid "Ignore Case" msgstr "" -#: Base.java:1058 -msgid "Ignoring bad library name" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" msgstr "" #: Base.java:1436 @@ -1170,20 +1208,20 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:778 msgid "Include Library" -msgstr "" +msgstr "افزودن کتابخانه" #: ../../../processing/app/BaseNoGui.java:768 #: ../../../processing/app/BaseNoGui.java:771 msgid "Incorrect IDE installation folder" -msgstr "" +msgstr "پوشه نصبی غلط IDE" #: ../../../../../app/src/processing/app/Editor.java:1378 msgid "Increase Font Size" -msgstr "" +msgstr "افزایش سایز فونت" #: Editor.java:1216 Editor.java:2757 msgid "Increase Indent" -msgstr "" +msgstr "افزایش تو رفتگی" #: Preferences.java:101 msgid "Indonesian" @@ -1191,7 +1229,7 @@ msgstr "اندونزایی" #: ../../../../../app/src/processing/app/Base.java:295 msgid "Initializing packages..." -msgstr "" +msgstr "آماده سازی بسته ها..." #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:75 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:81 @@ -1200,34 +1238,34 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:91 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:303 msgid "Install" -msgstr "" +msgstr "نصب" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:170 msgid "Installation completed!" -msgstr "" +msgstr "نصب کامل شد!" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java:50 msgid "Installed" -msgstr "" +msgstr "نصب شد" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 msgid "Installing boards..." -msgstr "" +msgstr "درحال نصب بردها..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "" +msgid "Installing library: {0}:{1}" +msgstr "درحال نصب کتابخانه: {0}:{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format msgid "Installing tools ({0}/{1})..." -msgstr "" +msgstr "درحال نصب ابزار ها ({0}/{1})..." #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:239 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:172 msgid "Installing..." -msgstr "" +msgstr "درحال نصب..." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:256 msgid "Interface scale:" @@ -1243,6 +1281,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "نسخه بی اعتبار {0}" + #: Preferences.java:102 msgid "Italian" msgstr "ایتالیایی" @@ -1275,9 +1324,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1299,11 +1348,11 @@ msgstr "" #: ../../../processing/app/Sketch.java:1684 msgid "Low memory available, stability problems may occur." -msgstr "" +msgstr "حافظه کمی دردسترس است، ممکن است خطای پایداری پیش بیاید. " #: ../../../../../app/src/processing/app/Base.java:1168 msgid "Manage Libraries..." -msgstr "" +msgstr "مدیریت کتابخانه ها... " #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:466 msgid "Manual proxy configuration" @@ -1324,11 +1373,11 @@ msgstr "" #: ../../../processing/app/BaseNoGui.java:455 msgid "Mode not supported" -msgstr "" +msgstr "حالت پشتیبانی نمی‌شود" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:186 msgid "More" -msgstr "" +msgstr "بیشتر" #: Preferences.java:449 msgid "More preferences can be edited directly in the file" @@ -1336,11 +1385,11 @@ msgstr "" #: Editor.java:2156 msgid "Moving" -msgstr "" +msgstr "درحال حرکت کردن" #: ../../../processing/app/BaseNoGui.java:484 msgid "Multiple files not supported" -msgstr "" +msgstr "فایل های چندتایی پشتیبانی نمی‌شود" #: ../../../processing/app/debug/Compiler.java:520 #, java-format @@ -1365,7 +1414,7 @@ msgstr "نپالی" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:601 msgid "Network" -msgstr "" +msgstr "شبکه" #: ../../../../../app//src/processing/app/Editor.java:2804 msgid "Network port, can't obtain info" @@ -1373,7 +1422,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Network ports" -msgstr "" +msgstr "پورت های شبکه" #: ../../../cc/arduino/packages/uploaders/SSHUploader.java:51 msgid "Network upload using programmer not supported" @@ -1385,7 +1434,7 @@ msgstr "جدید" #: EditorHeader.java:292 msgid "New Tab" -msgstr "" +msgstr "تب جدید" #: SerialMonitor.java:112 msgid "Newline" @@ -1393,7 +1442,7 @@ msgstr "خط جدید" #: EditorHeader.java:340 msgid "Next Tab" -msgstr "" +msgstr "تب بعدی" #: Preferences.java:78 UpdateCheck.java:108 msgid "No" @@ -1405,7 +1454,7 @@ msgstr "" #: tools/format/src/AutoFormat.java:54 tools/AutoFormat.java:916 msgid "No changes necessary for Auto Format." -msgstr "" +msgstr "برای فرمت خودکار تغییری ضروری نیست. " #: ../../../processing/app/BaseNoGui.java:665 msgid "No command line parameters found" @@ -1425,7 +1474,7 @@ msgstr "" #: SerialMonitor.java:112 msgid "No line ending" -msgstr "" +msgstr "بدون پایان خط" #: ../../../processing/app/BaseNoGui.java:665 msgid "No parameters" @@ -1433,7 +1482,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:453 msgid "No proxy" -msgstr "" +msgstr "بدون پروکسی" #: Base.java:541 msgid "No really, time for some fresh air for you." @@ -1447,7 +1496,7 @@ msgstr "" #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 msgid "No sketch" -msgstr "" +msgstr "بدون طرح" #: ../../../processing/app/BaseNoGui.java:428 msgid "No sketchbook" @@ -1464,7 +1513,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:184 msgid "None" -msgstr "" +msgstr "هیچیک" #: ../../../processing/app/Preferences.java:108 msgid "Norwegian Bokmål" @@ -1479,7 +1528,7 @@ msgstr "" #: Preferences.java:80 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2145 Editor.java:2465 msgid "OK" -msgstr "" +msgstr "تائید" #: Sketch.java:992 Editor.java:376 msgid "One file added to the sketch." @@ -1499,11 +1548,11 @@ msgstr "" #: Editor.java:2688 msgid "Open URL" -msgstr "" +msgstr "باز کردن آدرس" #: Base.java:636 msgid "Open an Arduino sketch..." -msgstr "" +msgstr "باز کردن یک طرح آردوینو... " #: Base.java:903 Editor.java:501 msgid "Open..." @@ -1511,7 +1560,7 @@ msgstr "باز کردن..." #: ../../../../../arduino-core/src/processing/app/I18n.java:37 msgid "Other" -msgstr "" +msgstr "دیگر" #: Editor.java:563 msgid "Page Setup" @@ -1581,7 +1630,7 @@ msgstr "پورت" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:491 msgid "Port number:" -msgstr "" +msgstr "شماره پورت:" #: ../../../processing/app/Preferences.java:151 msgid "Portugese" @@ -1695,9 +1744,9 @@ msgstr "" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1734,6 +1783,10 @@ msgstr "جایگزینی با:" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "" @@ -1857,11 +1910,14 @@ msgid "" " Serial Port menu?" msgstr "" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" +msgid "Serial port {0} not found." msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 @@ -1885,6 +1941,10 @@ msgstr "" msgid "Show Sketch Folder" msgstr "" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "" @@ -2056,6 +2116,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2066,11 +2134,11 @@ msgstr "" #: ../../../../../app/src/processing/app/SketchController.java:170 msgid "The main file cannot use an extension" -msgstr "" +msgstr "فایل اصلی نمی تواند یک افزونه استفاده کند" #: Sketch.java:356 msgid "The name cannot start with a period." -msgstr "" +msgstr "اسم نمیتواند با یک نقطه شروع شود." #: Base.java:1412 msgid "" @@ -2092,7 +2160,7 @@ msgstr "" #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format msgid "The sketch already contains a file named \"{0}\"" -msgstr "" +msgstr "این طرح از قبل حاوی یک فایل با همین نام است \"{0}\"" #: Sketch.java:1755 msgid "" @@ -2101,10 +2169,11 @@ msgid "" "but anything besides the code will be lost." msgstr "" -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2122,6 +2191,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2141,24 +2214,24 @@ msgstr "" #: ../../../../../arduino-core/src/processing/app/I18n.java:34 msgid "Timing" -msgstr "" +msgstr "زمان سنجی" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:94 #, java-format msgid "Tool {0} is not available for your operating system." -msgstr "" +msgstr "ابزار {0} برای سیستم عامل شما در دسترس نیست." #: Editor.java:663 msgid "Tools" -msgstr "ابزار" +msgstr "ابزار ها" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:97 msgid "Topic" -msgstr "" +msgstr "موضوع" #: Editor.java:1070 msgid "Troubleshooting" -msgstr "خطا یابی" +msgstr "عیب یابی" #: ../../../processing/app/Preferences.java:117 msgid "Turkish" @@ -2167,15 +2240,15 @@ msgstr "ترکی" #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:109 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:105 msgid "Type" -msgstr "" +msgstr "نوع" #: ../../../processing/app/Editor.java:2507 msgid "Type board password to access its console" -msgstr "" +msgstr "رمز عبور بورد را تایپ کنید تا به کنسول آن دسترسی یابید" #: ../../../processing/app/Sketch.java:1673 msgid "Type board password to upload a new sketch" -msgstr "" +msgstr "رمز عبور بورد را تایپ کنید تا یک طرح جدید آپلود شود" #: ../../../processing/app/Preferences.java:118 msgid "Ukrainian" @@ -2184,7 +2257,7 @@ msgstr "اکراینی" #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:142 #, java-format msgid "Unable to connect to {0}" -msgstr "" +msgstr "اتصال به {0} غیر ممکن است " #: ../../../processing/app/Editor.java:2524 #: ../../../processing/app/NetworkMonitor.java:145 @@ -2223,7 +2296,7 @@ msgstr "" #: Editor.java:1133 Editor.java:1355 msgid "Undo" -msgstr "" +msgstr "واگرد" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:85 #, java-format @@ -2232,12 +2305,12 @@ msgstr "" #: ../../../../../app//src/processing/app/Editor.java:2818 msgid "Unknown board" -msgstr "" +msgstr "بورد نامشخص" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format msgid "Unknown sketch file extension: {0}" -msgstr "" +msgstr "پسوند فایل طرح ناشناخته: {0}" #: Platform.java:168 msgid "" @@ -2249,7 +2322,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownUpdatableLibrariesItem.java:27 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownUpdatableCoresItem.java:27 msgid "Updatable" -msgstr "" +msgstr "قابل به روز رسانی" #: UpdateCheck.java:111 msgid "Update" @@ -2262,7 +2335,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:88 #, java-format msgid "Updates available for some of your {0}boards{1}" -msgstr "" +msgstr "به روز رسانی ها برای برخی از {0}بوردها{1} شما موجود هستند" #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:90 #, java-format @@ -2276,7 +2349,7 @@ msgstr "" #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:167 msgid "Updating list of installed libraries" -msgstr "" +msgstr "درحال به روز رسانی کردن لیستی از کتابخانه های نصب شده" #: EditorToolbar.java:41 Editor.java:545 msgid "Upload" @@ -2284,11 +2357,11 @@ msgstr "آپلود" #: EditorToolbar.java:46 Editor.java:553 msgid "Upload Using Programmer" -msgstr "" +msgstr "آپلود با استفاده از پروگرامر" #: ../../../../../app//src/processing/app/Editor.java:2814 msgid "Upload any sketch to obtain it" -msgstr "" +msgstr "هر طرحی را آپلود کنید تا به دست آورید" #: Editor.java:2403 Editor.java:2439 msgid "Upload canceled." @@ -2300,7 +2373,7 @@ msgstr "آپلود کنسل شد" #: Editor.java:2378 msgid "Uploading to I/O Board..." -msgstr "" +msgstr "درحال آپلود کردن به بورد I/O" #: Sketch.java:1622 msgid "Uploading..." @@ -2356,21 +2429,21 @@ msgstr "" #: ../../../../../app/src/processing/app/Base.java:454 msgid "Verifying..." -msgstr "" +msgstr "درحال بازبینی کردن..." #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:328 #, java-format msgid "Version {0}" -msgstr "" +msgstr "نسخه {0} " #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:326 msgid "Version unknown" -msgstr "" +msgstr "نسخه نامشخص" #: ../../../cc/arduino/contributions/libraries/ContributedLibrary.java:97 #, java-format msgid "Version {0}" -msgstr "" +msgstr "نسخه {0}" #: ../../../processing/app/Preferences.java:154 msgid "Vietnamese" @@ -2399,7 +2472,7 @@ msgstr "" #: Base.java:2128 msgid "Warning" -msgstr "اخطار" +msgstr "هشدار" #: ../../../processing/app/debug/Compiler.java:1295 msgid "" @@ -2603,17 +2676,23 @@ msgstr "" #: UpdateCheck.java:53 msgid "http://www.arduino.cc/latest.txt" -msgstr "" +msgstr "http://www.arduino.cc/latest.txt" #: Preferences.java:625 #, java-format msgid "ignoring invalid font size {0}" -msgstr "" +msgstr "صرف نظر کردن اندازه متن نامعتبر {0}" #: Editor.java:936 Editor.java:943 msgid "name is null" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "فایل سر تیتر (h.) پیدا نشد در {0}" + #: Editor.java:932 msgid "serialMenu is null" msgstr "" @@ -2627,7 +2706,7 @@ msgstr "پورت سریال {0} وجود ندارد یا این که بورد ش #: ../../../processing/app/Base.java:389 #, java-format msgid "unknown option: {0}" -msgstr "" +msgstr "گزینه نامشخص: {0}" #: Preferences.java:391 msgid "upload" @@ -2636,18 +2715,18 @@ msgstr "آپلود" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:324 #, java-format msgid "version {0}" -msgstr "" +msgstr "نسخه {0}" #: ../../../../../app/src/processing/app/Editor.java:2243 #, java-format msgid "{0} - {1} | Arduino {2}" -msgstr "" +msgstr "{0} - {1} | آردوئینو {2}" #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:39 #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:43 #, java-format msgid "{0} file signature verification failed" -msgstr "" +msgstr "{0} تائیدیه امضا فایل شکست خورد" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:310 #, java-format @@ -2682,12 +2761,12 @@ msgstr "" #: debug/Compiler.java:365 #, java-format msgid "{0} returned {1}" -msgstr "" +msgstr "{0} بازگشته {1}" #: Editor.java:2213 #, java-format msgid "{0} | Arduino {1}" -msgstr "" +msgstr "{0} | آردوئینو {1}" #: ../../../processing/app/Base.java:519 #, java-format @@ -2701,37 +2780,37 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" -msgstr "" +msgstr "{0}: گزینه نامعتبر برای بورد \"{1}\"" #: ../../../processing/app/Base.java:502 #, java-format msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}:مقدار نامعتبر برای گزینه \"{1}\" برای بورد \"{2}\"" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" -msgstr "" +msgstr "معماری نامشخص :{0}" #: ../../../processing/app/Base.java:491 #, java-format msgid "{0}: Unknown board" -msgstr "" +msgstr "بورد نامشخص :{0}" #: ../../../processing/app/Base.java:481 #, java-format msgid "{0}: Unknown package" -msgstr "" +msgstr "بسته نامشخص :{0}" #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format msgid "{0}Install this package{1} to use your {2} board" -msgstr "" +msgstr "{0}این بسته را نصب کنید{1} تا از بورد {2} استفاده نمایید" diff --git a/arduino-core/src/processing/app/i18n/Resources_fa_IR.properties b/arduino-core/src/processing/app/i18n/Resources_fa_IR.properties index 96e9dab6e5a..e642fa7bb79 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fa_IR.properties +++ b/arduino-core/src/processing/app/i18n/Resources_fa_IR.properties @@ -17,9 +17,14 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Ali Mirjamali , 2013 +# Hoseinali Shobeiri , 2020-2021 +# Hoseinali Shobeiri , 2020 # Seyyed Mohammad Amin Mousavi , 2017 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Persian (Iran) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fa_IR/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fa_IR\nPlural-Forms\: nplurals\=2; plural\=(n > 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2021-10-08 15\:21+0000\nLast-Translator\: Hoseinali Shobeiri \nLanguage-Team\: Persian (Iran) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fa_IR/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fa_IR\nPlural-Forms\: nplurals\=2; plural\=(n > 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=(\u0622\u0631\u062f\u0648\u06cc\u0646\u0648 \u0628\u0627\u06cc\u062f \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc \u0645\u062c\u062f\u062f \u0634\u0648\u062f) @@ -54,80 +59,80 @@ --verbose,\ --verbose-upload\ and\ --verbose-build\ can\ only\ be\ used\ together\ with\ --verify\ or\ --upload=--verbose,--verbose-upload , --verbose-build\n\u062a\u0646\u0647\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0627 \u06cc\u06a9\u062f\u06cc\u06af\u0631 \u0648 \u0628\u0627 \n--verify\n\u06cc\u0627 \n--upload\n\u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u0646\u062f #: Sketch.java:746 -!.pde\ ->\ .ino= +.pde\ ->\ .ino=.PDE -> .INO #: Editor.java:2053 !\ \ b\ {\ font\:\ 13pt\ "Lucida\ Grande"\ }p\ {\ font\:\ 11pt\ "Lucida\ Grande";\ margin-top\:\ 8px\ }\ Do\ you\ want\ to\ save\ changes\ to\ this\ sketch
\ before\ closing?

If\ you\ don't\ save,\ your\ changes\ will\ be\ lost.= #: Editor.java:2169 #, java-format -!A\ folder\ named\ "{0}"\ already\ exists.\ Can't\ open\ sketch.= +A\ folder\ named\ "{0}"\ already\ exists.\ Can't\ open\ sketch.=\u06cc\u06a9 \u067e\u0648\u0634\u0647 \u0627\u06cc \u0628\u0647 \u0627\u0633\u0645 "{0}" \u0627\u0632 \u0642\u0628\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0637\u0631\u062d \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0631\u062f. #: Base.java:2690 #, java-format -!A\ library\ named\ {0}\ already\ exists= +A\ library\ named\ {0}\ already\ exists=\u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u06cc \u0628\u0647 \u0627\u0633\u0645 {0} \u0627\u0632 \u0642\u0628\u0644 \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f #: UpdateCheck.java:103 -!A\ new\ version\ of\ Arduino\ is\ available,\nwould\ you\ like\ to\ visit\ the\ Arduino\ download\ page?= +A\ new\ version\ of\ Arduino\ is\ available,\nwould\ you\ like\ to\ visit\ the\ Arduino\ download\ page?=\u06cc\u06a9 \u0646\u0633\u062e\u0647 \u062c\u062f\u06cc\u062f \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a. \u0622\u06cc\u0627 \u0645\u0627\u06cc\u0644\u06cc\u062f \u0627\u0632 \u0635\u0641\u062d\u0647 \u062f\u0627\u0646\u0644\u0648\u062f \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 \u0628\u0627\u0632\u062f\u06cc\u062f \u06a9\u0646\u06cc\u062f\u061f #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format -!A\ newer\ {0}\ package\ is\ available= +A\ newer\ {0}\ package\ is\ available=\u06cc\u06a9 \u0628\u0633\u062a\u0647 \u062c\u062f\u06cc\u062f\u062a\u0631 {0} \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a #: ../../../../../app/src/processing/app/Base.java:2307 -!A\ subfolder\ of\ your\ sketchbook\ is\ not\ a\ valid\ library= +A\ subfolder\ of\ your\ sketchbook\ is\ not\ a\ valid\ library=\u067e\u0648\u0634\u0647 \u0641\u0631\u0639\u06cc \u06a9\u062a\u0627\u0628 \u0637\u0631\u062d \u0634\u0645\u0627 \u0627\u0632 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0645\u0639\u062a\u0628\u0631 \u0646\u06cc\u0633\u062a #: Editor.java:1116 About\ Arduino=\u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 -!Acoli= +Acoli=\u0622\u06a9\u0648\u0644\u06cc #: ../../../../../app/src/processing/app/Base.java:1177 -!Add\ .ZIP\ Library...= +Add\ .ZIP\ Library...=\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 ... ZIP. #: Editor.java:650 Add\ File...=\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644... #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:73 -!Additional\ Boards\ Manager\ URLs= +Additional\ Boards\ Manager\ URLs=\u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u062f\u0631\u0633 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0628\u0631\u062f\u0647\u0627 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:268 -!Additional\ Boards\ Manager\ URLs\:\ = +Additional\ Boards\ Manager\ URLs\:\ =\u0645\u062f\u06cc\u0631\u06cc\u062a \u0622\u062f\u0631\u0633 \u0647\u0627\u06cc \u0627\u0636\u0627\u0641\u06cc \u0628\u0631\u062f\u0647\u0627\: #: ../../../../../app/src/processing/app/Preferences.java:161 -!Afrikaans= +Afrikaans=\u0622\u0641\u0631\u06cc\u0642\u0627\u06cc\u06cc #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 !Aggressively\ cache\ compiled\ core= #: ../../../processing/app/Preferences.java:96 -!Albanian= +Albanian=\u0622\u0644\u0628\u0627\u0646\u06cc #: ../../../../../app/src/cc/arduino/contributions/ui/DropdownAllItem.java:42 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownAllCoresItem.java:43 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:187 -!All= +All=\u0647\u0645\u0647 #: tools/FixEncoding.java:77 !An\ error\ occurred\ while\ trying\ to\ fix\ the\ file\ encoding.\nDo\ not\ attempt\ to\ save\ this\ sketch\ as\ it\ may\ overwrite\nthe\ old\ version.\ Use\ Open\ to\ re-open\ the\ sketch\ and\ try\ again.\n= #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:99 -!An\ error\ occurred\ while\ updating\ libraries\ index\!= +An\ error\ occurred\ while\ updating\ libraries\ index\!=\u06cc\u06a9 \u062e\u0637\u0627 \u0647\u0646\u06af\u0627\u0645 \u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0634\u0627\u062e\u0635\u0647 \u0647\u0627\u06cc \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 \u0631\u062e \u062f\u0627\u062f\! #: ../../../processing/app/BaseNoGui.java:528 -!An\ error\ occurred\ while\ uploading\ the\ sketch= +An\ error\ occurred\ while\ uploading\ the\ sketch=\u06cc\u06a9 \u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0622\u067e\u0644\u0648\u062f \u06a9\u0631\u062f\u0646 \u0637\u0631\u062d \u0631\u062e \u062f\u0627\u062f #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 -!An\ error\ occurred\ while\ verifying\ the\ sketch= +An\ error\ occurred\ while\ verifying\ the\ sketch=\u06cc\u06a9 \u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632\u0628\u06cc\u0646\u06cc \u06a9\u0631\u062f\u0646 \u0637\u0631\u062d \u0631\u062e \u062f\u0627\u062f #: ../../../processing/app/BaseNoGui.java:521 -!An\ error\ occurred\ while\ verifying/uploading\ the\ sketch= +An\ error\ occurred\ while\ verifying/uploading\ the\ sketch=\u06cc\u06a9 \u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632\u0628\u06cc\u0646\u06cc/ \u0622\u067e\u0644\u0648\u062f \u0628\u0647 \u0637\u0631\u062d \u0631\u062e \u062f\u0627\u062f #: Base.java:228 -!An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ for\ your\ machine.= +An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ for\ your\ machine.=\u06cc\u06a9 \u062e\u0637\u0627 \u0646\u0627\u0645\u0634\u062e\u0635 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc\n \u06a9\u062f \u067e\u0644\u062a\u0641\u0631\u0645-\u062e\u0627\u0635 \u0628\u0631\u0627\u06cc \u0645\u0627\u0634\u06cc\u0646 \u0634\u0645\u0627 \u0631\u062e \u062f\u0627\u062f. #: Preferences.java:85 Arabic=\u0639\u0631\u0628\u06cc @@ -136,13 +141,13 @@ Arabic=\u0639\u0631\u0628\u06cc !Aragonese= #: tools/Archiver.java:48 -!Archive\ Sketch= +Archive\ Sketch=\u0622\u0631\u0634\u06cc\u0648 \u06a9\u0631\u062f\u0646 \u0637\u0631\u062d #: tools/Archiver.java:109 -!Archive\ sketch\ as\:= +Archive\ sketch\ as\:=\u0622\u0631\u0634\u06cc\u0648 \u06a9\u0631\u062f\u0646 \u0637\u0631\u062d \u0628\u0647 \u0639\u0646\u0648\u0627\u0646\: #: tools/Archiver.java:139 -!Archive\ sketch\ canceled.= +Archive\ sketch\ canceled.=\u0622\u0631\u0634\u06cc\u0648 \u06a9\u0631\u062f\u0646 \u0637\u0631\u062d \u0644\u063a\u0648 \u0634\u062f. #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format @@ -152,7 +157,7 @@ Arabic=\u0639\u0631\u0628\u06cc !Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.= #: ../../../../../arduino-core/src/processing/app/I18n.java:24 -!Arduino= +Arduino=\u0622\u0631\u062f\u0648\u06cc\u0646\u0648 #: ../../../processing/app/I18n.java:83 Arduino\ ARM\ (32-bits)\ Boards=\u0628\u0631\u062f\u0647\u0627\u06cc (\u06f3\u06f2 \u0628\u06cc\u062a\u06cc) ARM \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 @@ -161,13 +166,13 @@ Arduino\ ARM\ (32-bits)\ Boards=\u0628\u0631\u062f\u0647\u0627\u06cc (\u06f3\u06 Arduino\ AVR\ Boards=\u0628\u0631\u062f\u0647\u0627\u06cc AVR \u0622\u0631\u062f\u0648\u06cc\u0646\u0648 #: Editor.java:2137 -!Arduino\ can\ only\ open\ its\ own\ sketches\nand\ other\ files\ ending\ in\ .ino\ or\ .pde= +Arduino\ can\ only\ open\ its\ own\ sketches\nand\ other\ files\ ending\ in\ .ino\ or\ .pde=\u0622\u0631\u062f\u0648\u0626\u06cc\u0646\u0648 \u0641\u0642\u0637 \u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0637\u0631\u062d \u0647\u0627\u06cc \u062e\u0648\u062f\u0634 \u0631\u0627 \u0628\u0627\u0632 \u06a9\u0646\u062f\n\u0648 \u062f\u06cc\u06af\u0631 \u0641\u0627\u06cc\u0644 \u0647\u0627 \u06a9\u0647 \u0622\u062e\u0631 \u0622\u0646\u0647\u0627 \u0628\u0627 .ino \u06cc\u0627 .pde \u0647\u0633\u062a\u0646\u062f #: Base.java:1682 -!Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ settings.= +Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ settings.=\u0622\u0631\u062f\u0648\u0626\u06cc\u0646\u0648 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0627\u062c\u0631\u0627 \u0634\u0648\u062f \u0632\u06cc\u0631\u0627 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646\n \u06cc\u06a9 \u067e\u0648\u0634\u0647 \u062f\u0631\u0633\u062a \u06a9\u0631\u062f \u06a9\u0647 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0634\u0645\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0634\u0648\u062f. #: Base.java:1889 -!Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ sketchbook.= +Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ sketchbook.=\u0622\u0631\u062f\u0648\u0626\u06cc\u0646\u0648 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0627\u062c\u0631\u0627 \u0634\u0648\u062f \u0632\u06cc\u0631\u0627 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646\n\u06cc\u06a9 \u067e\u0648\u0634\u0647 \u062f\u0631\u0633\u062a \u06a9\u0631\u062f \u06a9\u0647 \u06a9\u062a\u0627\u0628 \u0637\u0631\u062d \u0634\u0645\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0634\u0648\u062f. #: ../../../processing/app/EditorStatus.java:471 Arduino\:\ =\u0622\u0631\u062f\u0648\u06cc\u0646\u0648\: @@ -177,19 +182,19 @@ Arduino\:\ =\u0622\u0631\u062f\u0648\u06cc\u0646\u0648\: Are\ you\ sure\ you\ want\ to\ delete\ "{0}"?=\u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062f\u0627\u0631\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f "{0}" \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u061f #: Sketch.java:587 -!Are\ you\ sure\ you\ want\ to\ delete\ this\ sketch?= +Are\ you\ sure\ you\ want\ to\ delete\ this\ sketch?=\u0645\u0637\u0645\u0626\u0646 \u0647\u0633\u062a\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u06cc\u0646 \u0637\u0631\u062d \u0631\u0627 \u062d\u0630\u0641 \u06a9\u0646\u06cc\u062f\u061f #: ../../../processing/app/Base.java:356 -!Argument\ required\ for\ --board= +Argument\ required\ for\ --board=\u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a \u0628\u0631\u0627\u06cc \u0628\u0648\u0631\u062f-- #: ../../../processing/app/Base.java:363 -!Argument\ required\ for\ --port= +Argument\ required\ for\ --port=\u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a \u0628\u0631\u0627\u06cc \u067e\u0648\u0631\u062a-- #: ../../../processing/app/Base.java:377 -!Argument\ required\ for\ --pref= +Argument\ required\ for\ --pref=\u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a \u0628\u0631\u0627\u06cc pref-- #: ../../../processing/app/Base.java:384 -!Argument\ required\ for\ --preferences-file= +Argument\ required\ for\ --preferences-file=\u0627\u0633\u062a\u062f\u0644\u0627\u0644 \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a \u0628\u0631\u0627\u06cc \u0641\u0627\u06cc\u0644-\u062a\u0631\u062c\u06cc\u062d\u0627\u062a-- #: ../../../processing/app/helpers/CommandlineParser.java:76 #: ../../../processing/app/helpers/CommandlineParser.java:83 @@ -200,38 +205,38 @@ Are\ you\ sure\ you\ want\ to\ delete\ "{0}"?=\u0627\u0637\u0645\u06cc\u0646\u06 Armenian=\u0627\u0631\u0645\u0646\u06cc #: ../../../processing/app/Preferences.java:138 -!Asturian= +Asturian=\u0627\u0633\u062a\u0631\u0627\u0644\u06cc\u0627\u06cc\u06cc #: ../../../processing/app/debug/Compiler.java:145 -!Authorization\ required= +Authorization\ required=\u0645\u062c\u0648\u0632 \u0644\u0627\u0632\u0645 \u0627\u0633\u062a #: tools/AutoFormat.java:91 -!Auto\ Format= +Auto\ Format=\u0641\u0631\u0645\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 #: tools/AutoFormat.java:944 -!Auto\ Format\ finished.= +Auto\ Format\ finished.=\u0641\u0631\u0645\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u0631\u0633\u06cc\u062f. #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:457 -!Auto-detect\ proxy\ settings= +Auto-detect\ proxy\ settings=\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062a\u0634\u062e\u06cc\u0635-\u062e\u0648\u062f\u06a9\u0627\u0631 \u067e\u0631\u0648\u06a9\u0633\u06cc #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:264 -!Automatic= +Automatic=\u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:474 -!Automatic\ proxy\ configuration\ URL\:= +Automatic\ proxy\ configuration\ URL\:=\u0622\u062f\u0631\u0633 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9 \u067e\u0631\u0648\u06a9\u0633\u06cc\: #: SerialMonitor.java:110 -!Autoscroll= +Autoscroll=\u062d\u0631\u06a9\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 #: Editor.java:2619 #, java-format -!Bad\ error\ line\:\ {0}= +Bad\ error\ line\:\ {0}=\u062e\u0637\u0627\u06cc \u0628\u062f \u062e\u0637\: {0} #: Editor.java:2136 Bad\ file\ selected=\u0641\u0627\u06cc\u0644 \u0627\u0634\u062a\u0628\u0627\u0647 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 #: ../../../processing/app/Preferences.java:149 -!Basque= +Basque=\u0628\u0627\u0633\u06a9\u0627\u06cc\u06cc #: ../../../processing/app/Preferences.java:139 Belarusian=\u0628\u0644\u0627\u0631\u0648\u0633\u06cc @@ -241,36 +246,36 @@ Belarusian=\u0628\u0644\u0627\u0631\u0648\u0633\u06cc Board=\u0628\u064f\u0631\u062f #: ../../../../../app//src/processing/app/Editor.java:2824 -!Board\ Info= +Board\ Info=\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0631\u062f #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 #, java-format -!Board\ at\ {0}\ is\ not\ available= +Board\ at\ {0}\ is\ not\ available=\u0628\u0631\u062f \u062f\u0631 {0} \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u06cc\u0633\u062a #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:62 #, java-format -!Board\ {0}\ (platform\ {1},\ package\ {2})\ is\ unknown= +Board\ {0}\ (platform\ {1},\ package\ {2})\ is\ unknown=\u0628\u0648\u0631\u062f {0} (\u067e\u0644\u062a\u0641\u0631\u0645 {1}, \u0628\u0633\u062a\u0647 {2}) \u0646\u0627\u0645\u0634\u062e\u0635 \u0627\u0633\u062a #: ../../../processing/app/debug/TargetBoard.java:42 #, java-format -!Board\ {0}\:{1}\:{2}\ doesn''t\ define\ a\ ''build.board''\ preference.\ Auto-set\ to\:\ {3}= +Board\ {0}\:{1}\:{2}\ doesn''t\ define\ a\ ''build.board''\ preference.\ Auto-set\ to\:\ {3}=\u0628\u0648\u0631\u062f {0}\:{1}\:{2} \u062a\u0631\u062c\u06cc\u062d\u0627\u062a \u06cc\u06a9 "\u0633\u0627\u062e\u062a.\u0628\u0648\u0631\u062f" \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0646\u0645\u06cc\u06a9\u0646\u062f. \u062a\u0646\u0638\u06cc\u0645-\u062e\u0648\u062f\u06a9\u0627\u0631 \u0628\u0647\: {3} #: ../../../processing/app/EditorStatus.java:472 Board\:\ =\u0628\u064f\u0631\u062f\: #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 -!Boards\ Manager= +Boards\ Manager=\u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u062f\u0647\u0627 #: ../../../../../app/src/processing/app/Base.java:1320 -!Boards\ Manager...= +Boards\ Manager...=\u0645\u062f\u06cc\u0631\u06cc\u062a \u0628\u0631\u062f\u0647\u0627... #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:328 -!Boards\ included\ in\ this\ package\:= +Boards\ included\ in\ this\ package\:=\u0628\u0648\u0631\u062f \u0647\u0627\u06cc \u0634\u0627\u0645\u0644 \u0634\u062f\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0628\u0633\u062a\u0647\: #: ../../../processing/app/debug/Compiler.java:1273 #, java-format -!Bootloader\ file\ specified\ but\ missing\:\ {0}= +Bootloader\ file\ specified\ but\ missing\:\ {0}=\u0641\u0627\u06cc\u0644 \u0628\u0648\u062a \u0644\u0648\u062f\u0631 \u0645\u0633\u0634\u062e\u0635 \u0634\u062f\u0647 \u0648\u0644\u06cc \u0627\u0632 \u0628\u06cc\u0646 \u0631\u0641\u062a\u0647\: {0} #: ../../../processing/app/Preferences.java:140 Bosnian=\u0628\u0648\u0633\u0646\u06cc @@ -279,49 +284,49 @@ Bosnian=\u0628\u0648\u0633\u0646\u06cc Both\ NL\ &\ CR=\u0647\u0645 \u062e\u0637 \u062c\u062f\u06cc\u062f \u0648 \u0647\u0645 \u0633\u0631 \u062e\u0637 #: Preferences.java:81 -!Browse= +Browse=\u0645\u0631\u0648\u0631\u06a9\u0631\u062f\u0646 #: ../../../processing/app/Sketch.java:1530 -!Build\ options\ changed,\ rebuilding\ all= +Build\ options\ changed,\ rebuilding\ all=\u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0633\u0627\u062e\u062a \u062a\u063a\u06cc\u06cc\u0631 \u06a9\u0631\u062f, \u0628\u0627\u0632\u0633\u0627\u0632\u06cc \u0647\u0645\u0647 #: ../../../../../app/src/processing/app/Base.java:1210 -!Built-in\ Examples= +Built-in\ Examples=\u0645\u062b\u0627\u0644 \u0647\u0627\u06cc \u062f\u0627\u062e\u0644\u06cc #: ../../../processing/app/Preferences.java:80 Bulgarian=\u0628\u0644\u063a\u0627\u0631\u06cc #: ../../../processing/app/Preferences.java:141 -!Burmese\ (Myanmar)= +Burmese\ (Myanmar)=\u0628\u0631\u0645\u0647 \u0627\u06cc (\u0645\u06cc\u0627\u0646\u0645\u0627\u0631) #: Editor.java:708 Burn\ Bootloader=Bootloader \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646 #: Editor.java:2504 -!Burning\ bootloader\ to\ I/O\ Board\ (this\ may\ take\ a\ minute)...= +Burning\ bootloader\ to\ I/O\ Board\ (this\ may\ take\ a\ minute)...=\u062f\u0631\u062d\u0627\u0644 \u0633\u0648\u0632\u0627\u0646\u062f\u0646 \u0628\u0648\u062a \u0644\u0648\u062f\u0631 \u0628\u0647 \u0628\u0631\u062f I/O (\u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062a\u0627 \u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647 \u0637\u0648\u0644 \u0628\u06a9\u0634\u062f)... #: ../../../../../arduino-core/src/cc/arduino/contributions/DownloadableContributionsDownloader.java:91 -!CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.= +CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.=CRC \u0645\u0637\u0627\u0628\u0642\u062a \u0646\u062f\u0627\u0631\u062f\u060c \u0641\u0627\u06cc\u0644 \u062e\u0631\u0627\u0628 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u06cc\u06a9 \u0645\u0634\u06a9\u0644 \u0645\u0648\u0642\u062a \u0628\u0627\u0634\u062f\u060c \u0644\u0637\u0641\u0627 \u0628\u0639\u062f\u0627 \u062a\u0644\u0627\u0634 \u06a9\u0646\u06cc\u062f. #: ../../../processing/app/Base.java:379 #, java-format -!Can\ only\ pass\ one\ of\:\ {0}= +Can\ only\ pass\ one\ of\:\ {0}=\u0641\u0642\u0637 \u0645\u06cc\u062a\u0648\u0627\u0646 \u06af\u0630\u0631 \u06a9\u0631\u062f \u06cc\u06a9\u06cc \u0627\u0632\: {0} #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 -!Can't\ enable\ external\ editor= +Can't\ enable\ external\ editor=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u062e\u0627\u0631\u062c\u06cc \u0631\u0627 \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 -!Can't\ find\ the\ sketch\ in\ the\ specified\ path= +Can't\ find\ the\ sketch\ in\ the\ specified\ path=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0637\u0631\u062d \u0631\u0627 \u062f\u0631 \u0645\u0633\u06cc\u0631 \u0645\u0634\u062e\u0635 \u0634\u062f\u0647 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f #: ../../../processing/app/Preferences.java:92 Canadian\ French=\u0641\u0631\u0627\u0646\u0633\u0648\u06cc (\u06a9\u0627\u0646\u0627\u062f\u0627) #: Preferences.java:79 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2064 Editor.java:2145 Editor.java:2465 -!Cancel= +Cancel=\u0627\u0646\u0635\u0631\u0627\u0641 #: ../../../processing/app/Base.java:465 -!Cannot\ specify\ any\ sketch\ files= +Cannot\ specify\ any\ sketch\ files=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0647\u0631 \u0641\u0627\u06cc\u0644 \u0637\u0631\u062d\u06cc \u0631\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0631\u062f #: SerialMonitor.java:112 Carriage\ return=\u0633\u0631 \u062e\u0637 @@ -330,7 +335,7 @@ Carriage\ return=\u0633\u0631 \u062e\u0637 Catalan=\u06a9\u0627\u062a\u0627\u0644\u0627\u0646 #: Preferences.java:419 -!Check\ for\ updates\ on\ startup= +Check\ for\ updates\ on\ startup=\u0628\u0631\u0631\u0633\u06cc \u0628\u0631\u0627\u06cc \u0628\u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0647\u0627 \u0647\u0646\u06af\u0627\u0645 \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc #: ../../../processing/app/Preferences.java:142 Chinese\ (China)=\u0686\u06cc\u0646\u06cc (\u06a9\u0634\u0648\u0631 \u0686\u06cc\u0646) @@ -339,31 +344,31 @@ Chinese\ (China)=\u0686\u06cc\u0646\u06cc (\u06a9\u0634\u0648\u0631 \u0686\u06cc Chinese\ (Taiwan)=\u0686\u06cc\u0646\u06cc (\u062a\u0627\u06cc\u0648\u0627\u0646) #: ../../../processing/app/Preferences.java:143 -!Chinese\ (Taiwan)\ (Big5)= +Chinese\ (Taiwan)\ (Big5)=\u0686\u06cc\u0646\u06cc (\u062a\u0627\u06cc\u0648\u0627\u0646) (Big5) #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 -!Clear\ output= +Clear\ output=\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u062e\u0631\u0648\u062c\u06cc #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 -!Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs= +Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs=\u0628\u0631\u0627\u06cc \u0644\u06cc\u0633\u062a\u06cc \u0627\u0632 \u0622\u062f\u0631\u0633 \u0647\u0627\u06cc \u0628\u0631\u062f\u0647\u0627\u06cc \u063a\u06cc\u0631 \u0631\u0633\u0645\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0634\u062f\u0647 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f #: Editor.java:521 Editor.java:2024 Close=\u0628\u0633\u062a\u0646 #: Editor.java:1208 Editor.java:2749 -!Comment/Uncomment= +Comment/Uncomment=\u0646\u0638\u0631/\u0628\u062f\u0648\u0646 \u0646\u0638\u0631 #: ../../../../../arduino-core/src/processing/app/I18n.java:30 -!Communication= +Communication=\u0627\u0631\u062a\u0628\u0627\u0637\u0627\u062a #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 -!Compiler\ warnings\:\ = +Compiler\ warnings\:\ =\u062e\u0637\u0627\u0647\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644\u0631\: #: Sketch.java:1608 Editor.java:1890 -!Compiling\ sketch...= +Compiling\ sketch...=\u062f\u0631\u062d\u0627\u0644 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0631\u062f\u0646 \u0637\u0631\u062d... #: ../../../../../arduino-core/src/processing/app/I18n.java:27 -!Contributed= +Contributed=\u0645\u0634\u0627\u0631\u06a9\u062a \u0634\u062f #: Editor.java:1157 Editor.java:2707 Copy=\u06a9\u067e\u06cc @@ -375,11 +380,11 @@ Copy\ as\ HTML=\u06a9\u067e\u06cc \u06a9\u0631\u062f\u0646 \u0628\u0627 \u0641\u Copy\ error\ messages=\u067e\u06cc\u063a\u0627\u0645\u0647\u0627\u06cc \u062e\u0637\u0627 \u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646 #: Editor.java:1165 Editor.java:2715 -!Copy\ for\ Forum= +Copy\ for\ Forum=\u06a9\u067e\u06cc \u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0645\u0646 #: Sketch.java:1089 #, java-format -!Could\ not\ add\ ''{0}''\ to\ the\ sketch.= +Could\ not\ add\ ''{0}''\ to\ the\ sketch.=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 "{0}" \u0631\u0627 \u0628\u0647 \u0637\u0631\u062d \u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f. #: Editor.java:2188 !Could\ not\ copy\ to\ a\ proper\ location.= @@ -389,10 +394,10 @@ Copy\ error\ messages=\u067e\u06cc\u063a\u0627\u0645\u0647\u0627\u06cc \u062e\u0 !Could\ not\ create\ directory\ "{0}"= #: Editor.java:2179 -!Could\ not\ create\ the\ sketch\ folder.= +Could\ not\ create\ the\ sketch\ folder.=\u0646\u0645\u06cc\u062a\u0648\u0627\u0646 \u067e\u0648\u0634\u0647 \u0637\u0631\u062d \u0631\u0627 \u0633\u0627\u062e\u062a. #: Editor.java:2206 -!Could\ not\ create\ the\ sketch.= +Could\ not\ create\ the\ sketch.=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0637\u0631\u062d \u0631\u0627 \u0633\u0627\u062e\u062a #: Sketch.java:617 #, java-format @@ -404,15 +409,15 @@ Could\ not\ delete\ the\ existing\ ''{0}''\ file.=\u062d\u0630\u0641 \u0641\u062 #: ../../../processing/app/debug/TargetPlatform.java:74 #, java-format -!Could\ not\ find\ boards.txt\ in\ {0}.\ Is\ it\ pre-1.5?= +Could\ not\ find\ boards.txt\ in\ {0}.\ Is\ it\ pre-1.5?=\u0646\u0645\u06cc\u062a\u0648\u0627\u0646 boards.txt \u0631\u0627 \u062f\u0631 {0} \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f. \u0622\u06cc\u0627 pre-1.5 \u0627\u0633\u062a\u061f #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:282 #, java-format -!Could\ not\ find\ tool\ {0}= +Could\ not\ find\ tool\ {0}=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0628\u0632\u0627\u0631 {0} \u0631\u0627 \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:278 #, java-format -!Could\ not\ find\ tool\ {0}\ from\ package\ {1}= +Could\ not\ find\ tool\ {0}\ from\ package\ {1}=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0628\u0632\u0627\u0631 {0} \u0631\u0627 \u0627\u0632 \u0628\u0633\u062a\u0647 {1} \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f #: Base.java:1934 #, java-format @@ -436,17 +441,21 @@ Could\ not\ delete\ the\ existing\ ''{0}''\ file.=\u062d\u0630\u0641 \u0641\u062 #: Base.java:2482 #, java-format -!Could\ not\ remove\ old\ version\ of\ {0}= +Could\ not\ remove\ old\ version\ of\ {0}=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0646\u0633\u062e\u0647 \u0642\u062f\u06cc\u0645\u06cc {0} \u0631\u0627 \u0628\u0631\u062f\u0627\u0634\u062a #: Base.java:2492 #, java-format -!Could\ not\ replace\ {0}= +Could\ not\ replace\ {0}=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 {0} \u0631\u0627 \u062c\u0627\u0628\u062c\u0627 \u06a9\u0631\u062f + +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0641\u0627\u06cc\u0644 \u0627\u0648\u0644\u0648\u06cc\u062a \u0647\u0627 \u0631\u0627 \u0646\u0648\u0634\u062a\: {0} #: tools/Archiver.java:74 -!Couldn't\ archive\ sketch= +Couldn't\ archive\ sketch=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0637\u0631\u062d \u0631\u0627 \u0622\u0631\u0634\u06cc\u0648 \u06a9\u0631\u062f #: Sketch.java:1647 -!Couldn't\ determine\ program\ size\:\ {0}= +Couldn't\ determine\ program\ size\:\ {0}=\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0631\u062f\: {0} #: Sketch.java:616 Couldn't\ do\ it=\u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u0645\u06a9\u0646 \u0646\u06cc\u0633\u062a @@ -455,53 +464,56 @@ Couldn't\ do\ it=\u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0645\u0645\u06a9\u0646 !Couldn't\ find\ a\ Board\ on\ the\ selected\ port.\ Check\ that\ you\ have\ the\ correct\ port\ selected.\ \ If\ it\ is\ correct,\ try\ pressing\ the\ board's\ reset\ button\ after\ initiating\ the\ upload.= #: ../../../processing/app/Preferences.java:82 -!Croatian= +Croatian=\u06a9\u0631\u0648\u0627\u0633\u06cc #: Editor.java:1149 Editor.java:2699 -!Cut= +Cut=\u0628\u0631\u0634 #: ../../../../../app/src/processing/app/Preferences.java:119 -!Czech\ (Czech\ Republic)= +Czech\ (Czech\ Republic)=\u0686\u06a9 (\u062c\u0645\u0647\u0648\u0631\u06cc \u0686\u06a9) #: ../../../../../app/src/processing/app/Preferences.java:120 -!Danish\ (Denmark)= +Danish\ (Denmark)=\u062f\u0627\u0646\u0645\u0627\u0631\u06a9\u06cc (\u062f\u0627\u0646\u0645\u0627\u0631\u06a9) #: ../../../../../arduino-core/src/processing/app/I18n.java:36 -!Data\ Processing= +Data\ Processing=\u062f\u0631\u062d\u0627\u0644 \u067e\u0631\u062f\u0627\u0632\u0634 \u062f\u0627\u062f\u0647 #: ../../../../../arduino-core/src/processing/app/I18n.java:35 -!Data\ Storage= +Data\ Storage=\u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u062f\u0627\u062f\u0647 #: ../../../../../app/src/processing/app/Editor.java:1386 -!Decrease\ Font\ Size= +Decrease\ Font\ Size=\u06a9\u0627\u0647\u0634 \u0633\u0627\u06cc\u0632 \u0641\u0648\u0646\u062a #: Editor.java:1224 Editor.java:2765 -!Decrease\ Indent= +Decrease\ Indent=\u06a9\u0627\u0647\u0634 \u062a\u0648 \u0631\u0641\u062a\u06af\u06cc #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 -!Default= +Default=\u067e\u06cc\u0634 \u0641\u0631\u0636 + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=\u062a\u0645 \u067e\u06cc\u0634 \u0641\u0631\u0636 #: EditorHeader.java:314 Sketch.java:591 Delete=\u062d\u0630\u0641 #: ../../../../../arduino-core/src/processing/app/I18n.java:33 -!Device\ Control= +Device\ Control=\u06a9\u0646\u062a\u0631\u0644 \u062f\u0633\u062a\u06af\u0627\u0647 #: debug/Uploader.java:199 -!Device\ is\ not\ responding,\ check\ the\ right\ serial\ port\ is\ selected\ or\ RESET\ the\ board\ right\ before\ exporting= +Device\ is\ not\ responding,\ check\ the\ right\ serial\ port\ is\ selected\ or\ RESET\ the\ board\ right\ before\ exporting=\u062f\u0633\u062a\u06af\u0627\u0647 \u067e\u0627\u0633\u062e \u0646\u0645\u06cc\u200c\u062f\u0647\u062f\u060c \u0686\u06a9 \u06a9\u0646\u06cc\u062f \u06a9\u0647 \u067e\u0648\u0631\u062a \u0633\u0631\u06cc\u0627\u0644 \u062f\u0631\u0633\u062a \u0627\u0633\u062a \u06cc\u0627 \u0628\u0631\u062f \u0631\u0627 \u0642\u0628\u0644 \u0627\u0632 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0631\u06cc\u0633\u062a \u06a9\u0646\u06cc\u062f #: tools/FixEncoding.java:57 -!Discard\ all\ changes\ and\ reload\ sketch?= +Discard\ all\ changes\ and\ reload\ sketch?=\u0635\u0631\u0641 \u0646\u0638\u0631 \u06a9\u0631\u062f\u0646 \u0647\u0645\u0647 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0648 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u062c\u062f\u062f \u0637\u0631\u062d\u061f #: ../../../../../arduino-core/src/processing/app/I18n.java:29 -!Display= +Display=\u0646\u0645\u0627\u06cc\u0634 #: ../../../processing/app/Preferences.java:438 Display\ line\ numbers=\u0634\u0645\u0627\u0631\u0647 \u062e\u0637\u0648\u0637 \u0631\u0627 \u0646\u0634\u0627\u0646 \u0628\u062f\u0647 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:195 #, java-format -!Do\ you\ want\ to\ remove\ {0}?\nIf\ you\ do\ so\ you\ won't\ be\ able\ to\ use\ {0}\ any\ more.= +Do\ you\ want\ to\ remove\ {0}?\nIf\ you\ do\ so\ you\ won't\ be\ able\ to\ use\ {0}\ any\ more.=\u0622\u06cc\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f {0} \u0631\u0627 \u0628\u0631\u062f\u0627\u0631\u06cc\u062f\u061f \u0627\u06af\u0631 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u06a9\u0646\u06cc\u062f \u062f\u06cc\u06af\u0631 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 {0} \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f. #: Editor.java:2064 Don't\ Save=\u0630\u062e\u06cc\u0631\u0647 \u0646\u0634\u0648\u062f @@ -514,7 +526,7 @@ Done\ burning\ bootloader.=\u0630\u062e\u06cc\u0631\u0647 Bootloader \u0627\u064 #: ../../../processing/app/BaseNoGui.java:507 #: ../../../processing/app/BaseNoGui.java:552 -!Done\ compiling= +Done\ compiling=\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0627\u0646\u062c\u0627\u0645 \u0634\u062f #: Editor.java:1911 Editor.java:1928 Done\ compiling.=\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u062f. @@ -523,27 +535,27 @@ Done\ compiling.=\u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u0634\u062f. Done\ printing.=\u067e\u0627\u06cc\u0627\u0646 \u0686\u0627\u067e. #: ../../../processing/app/BaseNoGui.java:514 -!Done\ uploading= +Done\ uploading=\u0622\u067e\u0644\u0648\u062f \u0627\u0646\u062c\u0627\u0645 \u0634\u062f #: Editor.java:2395 Editor.java:2431 Done\ uploading.=\u0622\u067e\u0644\u0648\u062f \u0634\u062f. #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:105 #, java-format -!Downloaded\ {0}kb\ of\ {1}kb.= +Downloaded\ {0}kb\ of\ {1}kb.=\u062f\u0627\u0646\u0644\u0648\u062f \u0634\u062f\u0647 {0} \u06a9\u06cc\u0644\u0648\u0628\u0627\u06cc\u062a \u0627\u0632 {1} \u06a9\u06cc\u0644\u0648\u0628\u0627\u06cc\u062a. #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:107 !Downloading\ boards\ definitions.= #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:86 -!Downloading\ libraries\ index...= +Downloading\ libraries\ index...=\u062f\u0631\u062d\u0627\u0644 \u062f\u0627\u0646\u0644\u0648\u062f \u0634\u0627\u062e\u0635\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627... #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:115 #, java-format -!Downloading\ library\:\ {0}= +Downloading\ library\:\ {0}=\u062f\u0631\u062d\u0627\u0644 \u062f\u0627\u0646\u0644\u0648\u062f \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\: {0} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:318 -!Downloading\ platforms\ index...= +Downloading\ platforms\ index...=\u062f\u0631\u062d\u0627\u0644 \u062f\u0627\u0646\u0644\u0648\u062f \u0634\u0627\u062e\u0635\u0647 \u067e\u0644\u062a\u0641\u0631\u0645 \u0647\u0627... #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:113 #, java-format @@ -556,7 +568,7 @@ Dutch=\u0647\u0644\u0646\u062f\u06cc Dutch\ (Netherlands)=\u0647\u0644\u0646\u062f\u06cc #: ../../../../../app/src/processing/app/Editor.java:1309 -!Edison\ Help= +Edison\ Help=\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u0627\u062f\u06cc\u0633\u0648\u0646 #: Editor.java:1130 Edit=\u0648\u06cc\u0631\u0627\u06cc\u0634 @@ -568,7 +580,7 @@ Editor\ font\ size\:\ =\u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0648\u0646\u Editor\ language\:\ =\u0632\u0628\u0627\u0646 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631\: #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:322 -!Enable\ Code\ Folding= +Enable\ Code\ Folding=\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u062a\u0627 \u0634\u062f\u0646 \u06a9\u062f #: Preferences.java:92 English=\u0627\u0646\u06af\u0644\u06cc\u0633\u06cc @@ -596,21 +608,25 @@ Error\ adding\ file=\u062e\u0637\u0627 \u062f\u0631 \u0627\u0636\u0627\u0641\u06 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:272 #, java-format -!Error\ compiling\ for\ board\ {0}.= +Error\ compiling\ for\ board\ {0}.=\u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0627\u06cc \u0628\u0631\u062f {0} #: debug/Compiler.java:369 Error\ compiling.=\u062e\u0637\u0627\u06cc \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644. #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:113 #, java-format -!Error\ downloading\ {0}= +Error\ downloading\ {0}=\u062e\u0637\u0627 \u062f\u0631 \u062f\u0627\u0646\u0644\u0648\u062f {0} #: Base.java:1674 !Error\ getting\ the\ Arduino\ data\ folder.= #: Serial.java:593 #, java-format -!Error\ inside\ Serial.{0}()= +Error\ inside\ Serial.{0}()=\u062e\u0637\u0627 \u062f\u0631\u0648\u0646 \u0633\u0631\u06cc\u0627\u0644.{0}() + +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 @@ -626,6 +642,18 @@ Error\ opening\ serial\ port\ ''{0}''.=\u062e\u0637\u0627 \u062f\u0631 \u0628\u0 #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=\u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u062e\u0648\u0627\u0646\u062f\u0646 \u0634\u0627\u062e\u0635\u0647 \u0647\u0627\u06cc \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 Error\ reading\ preferences=\u062e\u0637\u0627 \u062f\u0631 \u062e\u0648\u0627\u0646\u062f\u0646 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0628\u0631\u0646\u0627\u0645\u0647 @@ -646,23 +674,26 @@ Error\ reading\ preferences=\u062e\u0637\u0627 \u062f\u0631 \u062e\u0648\u0627\u Error\ touching\ serial\ port\ ''{0}''.=\u062e\u0637\u0627 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u067e\u0648\u0631\u062a \u0633\u0631\u06cc\u0627\u0644 ''{0}''. #: Editor.java:2512 Editor.java:2516 Editor.java:2520 -!Error\ while\ burning\ bootloader.= +Error\ while\ burning\ bootloader.=\u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0633\u0648\u0632\u0627\u0646\u062f\u0646 \u0628\u0648\u062a \u0644\u0648\u062f\u0631 #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=\u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0633\u0648\u0632\u0627\u0646\u062f\u0646 \u0628\u0648\u062a \u0644\u0648\u062f\u0631\: \u0644\u0637\u0641\u0627 \u06cc\u06a9 \u067e\u0648\u0631\u062a \u0633\u0631\u06cc\u0627\u0644 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f. + #: ../../../../../app/src/processing/app/Editor.java:1940 -!Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= +Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=\u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u06a9\u0627\u0645\u067e\u0627\u06cc\u0644 \u06a9\u0631\u062f\u0646\: \u0646\u0628\u0648\u062f\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc '{0}' #: Editor.java:2567 Error\ while\ printing.=\u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0686\u0627\u067e. #: ../../../../../arduino-core/src/processing/app/Serial.java:117 #, java-format -!Error\ while\ setting\ serial\ port\ parameters\:\ {0}\ {1}\ {2}\ {3}= +Error\ while\ setting\ serial\ port\ parameters\:\ {0}\ {1}\ {2}\ {3}=\u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0647\u0627\u06cc \u067e\u0648\u0631\u062a \u0633\u0631\u06cc\u0627\u0644\: {0} {1} {2} {3} #: ../../../processing/app/BaseNoGui.java:528 -!Error\ while\ uploading= +Error\ while\ uploading=\u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0622\u067e\u0644\u0648\u062f \u06a9\u0631\u062f\u0646 #: ../../../processing/app/Editor.java:2409 #: ../../../processing/app/Editor.java:2449 @@ -671,7 +702,7 @@ Error\ while\ printing.=\u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627 #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 -!Error\ while\ verifying= +Error\ while\ verifying=\u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632\u0628\u06cc\u0646\u06cc \u06a9\u0631\u062f\u0646 #: ../../../processing/app/BaseNoGui.java:521 !Error\ while\ verifying/uploading= @@ -679,55 +710,52 @@ Error\ while\ printing.=\u062e\u0637\u0627 \u062f\u0631 \u0647\u0646\u06af\u0627 #: Preferences.java:93 !Estonian= -#: ../../../processing/app/Preferences.java:146 -!Estonian\ (Estonia)= - #: Editor.java:516 Examples=\u0645\u062b\u0627\u0644\u200c\u0647\u0627 #: ../../../../../app/src/processing/app/Base.java:1185 -!Examples\ for\ any\ board= +Examples\ for\ any\ board=\u0645\u062b\u0627\u0644 \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc \u0647\u0631 \u0628\u0631\u062f #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 #, java-format -!Examples\ for\ {0}= +Examples\ for\ {0}=\u0645\u062b\u0627\u0644 \u0647\u0627\u06cc\u06cc \u0628\u0631\u0627\u06cc {0} #: ../../../../../app/src/processing/app/Base.java:1244 -!Examples\ from\ Custom\ Libraries= +Examples\ from\ Custom\ Libraries=\u0645\u062b\u0627\u0644 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc #: ../../../../../app/src/processing/app/Base.java:1329 -!Examples\ from\ Other\ Libraries= +Examples\ from\ Other\ Libraries=\u0645\u062b\u0627\u0644 \u0647\u0627\u06cc\u06cc \u0627\u0632 \u062f\u06cc\u06af\u0631 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627 #: ../../../../../app/src/processing/app/Editor.java:753 -!Export\ canceled,\ changes\ must\ first\ be\ saved.= +Export\ canceled,\ changes\ must\ first\ be\ saved.=\u0627\u0633\u062a\u062e\u0631\u0627\u062c \u0644\u063a\u0648 \u0634\u062f\u060c \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0627\u0648\u0644 \u0628\u0627\u06cc\u062f \u0630\u062e\u06cc\u0631\u0647 \u0634\u0648\u062f. #: ../../../../../app/src/processing/app/Editor.java:750 !Export\ compiled\ Binary= #: ../../../processing/app/Base.java:416 #, java-format -!Failed\ to\ open\ sketch\:\ "{0}"= +Failed\ to\ open\ sketch\:\ "{0}"=\u062e\u0637\u0627 \u0628\u0647 \u0647\u0646\u06af\u0627\u0645 \u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0637\u0631\u062d\: "{0}" #: ../../../../../arduino-core/src/processing/app/SketchFile.java:183 #, java-format -!Failed\ to\ rename\ "{0}"\ to\ "{1}"= +Failed\ to\ rename\ "{0}"\ to\ "{1}"=\u062a\u063a\u06cc\u06cc\u0631 \u0646\u0627\u0645 "{0}" \u0628\u0647 "{1}" \u0634\u06a9\u0633\u062a \u062e\u0648\u0631\u062f #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 -!Failed\ to\ rename\ sketch\ folder= +Failed\ to\ rename\ sketch\ folder=\u062a\u063a\u06cc\u06cc\u0631 \u0646\u0627\u0645 \u067e\u0648\u0634\u0647 \u0637\u0631\u062d \u0634\u06a9\u0633\u062a \u062e\u0648\u0631\u062f #: Editor.java:491 File=\u0641\u0627\u06cc\u0644 #: ../../../../../arduino-core/src/processing/app/SketchData.java:139 #, java-format -!File\ name\ {0}\ is\ invalid\:\ ignored= +File\ name\ {0}\ is\ invalid\:\ ignored=\u0627\u0633\u0645 \u0641\u0627\u06cc\u0644 {0} \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0627\u0633\u062a\: \u0635\u0631\u0641 \u0646\u0638\u0631 \u0634\u062f #: Preferences.java:94 Filipino=\u0641\u0644\u06cc\u067e\u06cc\u0646\u06cc #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:95 -!Filter\ your\ search...= +Filter\ your\ search...=\u062c\u0633\u062a \u0648 \u062c\u0648 \u06cc\u062a\u0627\u0646 \u0631\u0627 \u0641\u06cc\u0644\u062a\u0631 \u06a9\u0646\u06cc\u062f... #: FindReplace.java:124 FindReplace.java:127 Find=\u062c\u0633\u062a\u062c\u0648 @@ -739,7 +767,7 @@ Find\ Next=\u062c\u0633\u062a\u062c\u0648 \u0645\u0648\u0631\u062f \u0628\u0639\ Find\ Previous=\u062c\u0633\u062a\u062c\u0648 \u0645\u0648\u0631\u062f \u0642\u0628\u0644\u06cc #: Editor.java:1086 Editor.java:2775 -!Find\ in\ Reference= +Find\ in\ Reference=\u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u0646 \u062f\u0631 \u0627\u0631\u062c\u0627\u0639 #: Editor.java:1234 Find...=\u062c\u0633\u062a\u062c\u0648... @@ -755,7 +783,7 @@ Finnish=\u0641\u0646\u0644\u0627\u0646\u062f\u06cc !Fix\ Encoding\ &\ Reload= #: ../../../processing/app/BaseNoGui.java:318 -!For\ information\ on\ installing\ libraries,\ see\:\ http\://www.arduino.cc/en/Guide/Libraries\n= +For\ information\ on\ installing\ libraries,\ see\:\ http\://www.arduino.cc/en/Guide/Libraries\n=\u0628\u0631\u0627\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0632 \u0646\u0635\u0628 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u060c \u0628\u0627\u0632\u062f\u06cc\u062f \u06a9\u0646\u06cc\u062f \u0627\u0632\: http\://www.arduino.cc/en/Guide/Libraries\n #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:118 #, java-format @@ -774,7 +802,7 @@ Frequently\ Asked\ Questions=\u0633\u0648\u0627\u0644\u0627\u062a \u0645\u062a\u !Galician\ (Spain)= #: ../../../../../app/src/processing/app/Editor.java:1288 -!Galileo\ Help= +Galileo\ Help=\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u06af\u0627\u0644\u06cc\u0644\u0647\u0648 #: ../../../processing/app/Preferences.java:94 Georgian=\u06af\u0631\u062c\u06cc @@ -783,7 +811,7 @@ Georgian=\u06af\u0631\u062c\u06cc German=\u0622\u0644\u0645\u0627\u0646\u06cc #: ../../../../../app//src/processing/app/Editor.java:817 -!Get\ Board\ Info= +Get\ Board\ Info=\u06af\u0631\u0641\u062a\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0631\u062f #: Editor.java:1054 Getting\ Started=\u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 @@ -797,10 +825,10 @@ Getting\ Started=\u0634\u0631\u0648\u0639 \u0628\u0647 \u06a9\u0627\u0631 !Global\ variables\ use\ {0}\ bytes\ of\ dynamic\ memory.= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:66 -!Go\ to\ line= +Go\ to\ line=\u0628\u0631\u0648 \u0628\u0647 \u062e\u0637 #: ../../../../../app/src/processing/app/Editor.java:1460 -!Go\ to\ line...= +Go\ to\ line...=\u0628\u0631\u0648 \u0628\u0647 \u062e\u0637... #: Preferences.java:98 Greek=\u06cc\u0648\u0646\u0627\u0646\u06cc @@ -815,7 +843,7 @@ Help=\u0631\u0627\u0647\u0646\u0645\u0627 Hindi=\u0647\u0646\u062f\u06cc #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:489 -!Host\ name\:= +Host\ name\:=\u0646\u0627\u0645 \u062f\u0631\u06af\u0627\u0647\: #: Sketch.java:295 !How\ about\ saving\ the\ sketch\ first\ \nbefore\ trying\ to\ rename\ it?= @@ -832,8 +860,8 @@ Hindi=\u0647\u0646\u062f\u06cc #: FindReplace.java:96 !Ignore\ Case= -#: Base.java:1058 -!Ignoring\ bad\ library\ name= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 !Ignoring\ sketch\ with\ bad\ name= @@ -842,23 +870,23 @@ Hindi=\u0647\u0646\u062f\u06cc !In\ Arduino\ 1.0,\ the\ default\ file\ extension\ has\ changed\nfrom\ .pde\ to\ .ino.\ \ New\ sketches\ (including\ those\ created\nby\ "Save-As")\ will\ use\ the\ new\ extension.\ \ The\ extension\nof\ existing\ sketches\ will\ be\ updated\ on\ save,\ but\ you\ can\ndisable\ this\ in\ the\ Preferences\ dialog.\n\nSave\ sketch\ and\ update\ its\ extension?= #: ../../../../../app/src/processing/app/Editor.java:778 -!Include\ Library= +Include\ Library=\u0627\u0641\u0632\u0648\u062f\u0646 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 #: ../../../processing/app/BaseNoGui.java:768 #: ../../../processing/app/BaseNoGui.java:771 -!Incorrect\ IDE\ installation\ folder= +Incorrect\ IDE\ installation\ folder=\u067e\u0648\u0634\u0647 \u0646\u0635\u0628\u06cc \u063a\u0644\u0637 IDE #: ../../../../../app/src/processing/app/Editor.java:1378 -!Increase\ Font\ Size= +Increase\ Font\ Size=\u0627\u0641\u0632\u0627\u06cc\u0634 \u0633\u0627\u06cc\u0632 \u0641\u0648\u0646\u062a #: Editor.java:1216 Editor.java:2757 -!Increase\ Indent= +Increase\ Indent=\u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u0648 \u0631\u0641\u062a\u06af\u06cc #: Preferences.java:101 Indonesian=\u0627\u0646\u062f\u0648\u0646\u0632\u0627\u06cc\u06cc #: ../../../../../app/src/processing/app/Base.java:295 -!Initializing\ packages...= +Initializing\ packages...=\u0622\u0645\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0628\u0633\u062a\u0647 \u0647\u0627... #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:75 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:81 @@ -866,28 +894,28 @@ Indonesian=\u0627\u0646\u062f\u0648\u0646\u0632\u0627\u06cc\u06cc #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:78 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:91 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:303 -!Install= +Install=\u0646\u0635\u0628 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:170 -!Installation\ completed\!= +Installation\ completed\!=\u0646\u0635\u0628 \u06a9\u0627\u0645\u0644 \u0634\u062f\! #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java:50 -!Installed= +Installed=\u0646\u0635\u0628 \u0634\u062f #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 -!Installing\ boards...= +Installing\ boards...=\u062f\u0631\u062d\u0627\u0644 \u0646\u0635\u0628 \u0628\u0631\u062f\u0647\u0627... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +Installing\ library\:\ {0}\:{1}=\u062f\u0631\u062d\u0627\u0644 \u0646\u0635\u0628 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647\: {0}\:{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format -!Installing\ tools\ ({0}/{1})...= +Installing\ tools\ ({0}/{1})...=\u062f\u0631\u062d\u0627\u0644 \u0646\u0635\u0628 \u0627\u0628\u0632\u0627\u0631 \u0647\u0627 ({0}/{1})... #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:239 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:172 -!Installing...= +Installing...=\u062f\u0631\u062d\u0627\u0644 \u0646\u0635\u0628... #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:256 !Interface\ scale\:= @@ -900,6 +928,15 @@ Indonesian=\u0627\u0646\u062f\u0648\u0646\u0632\u0627\u06cc\u06cc #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=\u0646\u0633\u062e\u0647 \u0628\u06cc \u0627\u0639\u062a\u0628\u0627\u0631 {0} + #: Preferences.java:102 Italian=\u0627\u06cc\u062a\u0627\u0644\u06cc\u0627\u06cc\u06cc @@ -924,9 +961,9 @@ Korean=\u06a9\u0631\u0647\u200c\u0627\u06cc #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -942,10 +979,10 @@ Korean=\u06a9\u0631\u0647\u200c\u0627\u06cc !Looking\ for\ recipes\ like\ {0}*{1}= #: ../../../processing/app/Sketch.java:1684 -!Low\ memory\ available,\ stability\ problems\ may\ occur.= +Low\ memory\ available,\ stability\ problems\ may\ occur.=\u062d\u0627\u0641\u0638\u0647 \u06a9\u0645\u06cc \u062f\u0631\u062f\u0633\u062a\u0631\u0633 \u0627\u0633\u062a\u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062e\u0637\u0627\u06cc \u067e\u0627\u06cc\u062f\u0627\u0631\u06cc \u067e\u06cc\u0634 \u0628\u06cc\u0627\u06cc\u062f. #: ../../../../../app/src/processing/app/Base.java:1168 -!Manage\ Libraries...= +Manage\ Libraries...=\u0645\u062f\u06cc\u0631\u06cc\u062a \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627... #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:466 !Manual\ proxy\ configuration= @@ -961,19 +998,19 @@ Message=\u067e\u06cc\u063a\u0627\u0645 !Missing\ '{0}'\ from\ library\ in\ {1}= #: ../../../processing/app/BaseNoGui.java:455 -!Mode\ not\ supported= +Mode\ not\ supported=\u062d\u0627\u0644\u062a \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc\u200c\u0634\u0648\u062f #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:186 -!More= +More=\u0628\u06cc\u0634\u062a\u0631 #: Preferences.java:449 !More\ preferences\ can\ be\ edited\ directly\ in\ the\ file= #: Editor.java:2156 -!Moving= +Moving=\u062f\u0631\u062d\u0627\u0644 \u062d\u0631\u06a9\u062a \u06a9\u0631\u062f\u0646 #: ../../../processing/app/BaseNoGui.java:484 -!Multiple\ files\ not\ supported= +Multiple\ files\ not\ supported=\u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0686\u0646\u062f\u062a\u0627\u06cc\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc\u200c\u0634\u0648\u062f #: ../../../processing/app/debug/Compiler.java:520 #, java-format @@ -992,13 +1029,13 @@ Name\ for\ new\ file\:=\u0627\u0633\u0645 \u0641\u0627\u06cc\u0644 \u062c\u062f\ Nepali=\u0646\u067e\u0627\u0644\u06cc #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:601 -!Network= +Network=\u0634\u0628\u06a9\u0647 #: ../../../../../app//src/processing/app/Editor.java:2804 !Network\ port,\ can't\ obtain\ info= #: ../../../../../app/src/processing/app/Editor.java:65 -!Network\ ports= +Network\ ports=\u067e\u0648\u0631\u062a \u0647\u0627\u06cc \u0634\u0628\u06a9\u0647 #: ../../../cc/arduino/packages/uploaders/SSHUploader.java:51 !Network\ upload\ using\ programmer\ not\ supported= @@ -1007,13 +1044,13 @@ Nepali=\u0646\u067e\u0627\u0644\u06cc New=\u062c\u062f\u06cc\u062f #: EditorHeader.java:292 -!New\ Tab= +New\ Tab=\u062a\u0628 \u062c\u062f\u06cc\u062f #: SerialMonitor.java:112 Newline=\u062e\u0637 \u062c\u062f\u06cc\u062f #: EditorHeader.java:340 -!Next\ Tab= +Next\ Tab=\u062a\u0628 \u0628\u0639\u062f\u06cc #: Preferences.java:78 UpdateCheck.java:108 No=\u062e\u06cc\u0631 @@ -1022,7 +1059,7 @@ No=\u062e\u06cc\u0631 !No\ authorization\ data\ found= #: tools/format/src/AutoFormat.java:54 tools/AutoFormat.java:916 -!No\ changes\ necessary\ for\ Auto\ Format.= +No\ changes\ necessary\ for\ Auto\ Format.=\u0628\u0631\u0627\u06cc \u0641\u0631\u0645\u062a \u062e\u0648\u062f\u06a9\u0627\u0631 \u062a\u063a\u06cc\u06cc\u0631\u06cc \u0636\u0631\u0648\u0631\u06cc \u0646\u06cc\u0633\u062a. #: ../../../processing/app/BaseNoGui.java:665 !No\ command\ line\ parameters\ found= @@ -1037,13 +1074,13 @@ No=\u062e\u06cc\u0631 !No\ launcher\ available= #: SerialMonitor.java:112 -!No\ line\ ending= +No\ line\ ending=\u0628\u062f\u0648\u0646 \u067e\u0627\u06cc\u0627\u0646 \u062e\u0637 #: ../../../processing/app/BaseNoGui.java:665 !No\ parameters= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:453 -!No\ proxy= +No\ proxy=\u0628\u062f\u0648\u0646 \u067e\u0631\u0648\u06a9\u0633\u06cc #: Base.java:541 !No\ really,\ time\ for\ some\ fresh\ air\ for\ you.= @@ -1054,7 +1091,7 @@ No=\u062e\u06cc\u0631 #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 -!No\ sketch= +No\ sketch=\u0628\u062f\u0648\u0646 \u0637\u0631\u062d #: ../../../processing/app/BaseNoGui.java:428 !No\ sketchbook= @@ -1067,7 +1104,7 @@ No=\u062e\u06cc\u0631 !No\ valid\ hardware\ definitions\ found\ in\ folder\ {0}.= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:184 -!None= +None=\u0647\u06cc\u0686\u06cc\u06a9 #: ../../../processing/app/Preferences.java:108 !Norwegian\ Bokm\u00e5l= @@ -1077,7 +1114,7 @@ No=\u062e\u06cc\u0631 #: Preferences.java:80 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2145 Editor.java:2465 -!OK= +OK=\u062a\u0627\u0626\u06cc\u062f #: Sketch.java:992 Editor.java:376 !One\ file\ added\ to\ the\ sketch.= @@ -1092,16 +1129,16 @@ Open=\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 !Open\ Recent= #: Editor.java:2688 -!Open\ URL= +Open\ URL=\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u0622\u062f\u0631\u0633 #: Base.java:636 -!Open\ an\ Arduino\ sketch...= +Open\ an\ Arduino\ sketch...=\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u0637\u0631\u062d \u0622\u0631\u062f\u0648\u06cc\u0646\u0648... #: Base.java:903 Editor.java:501 Open...=\u0628\u0627\u0632 \u06a9\u0631\u062f\u0646... #: ../../../../../arduino-core/src/processing/app/I18n.java:37 -!Other= +Other=\u062f\u06cc\u06af\u0631 #: Editor.java:563 Page\ Setup=\u062a\u0646\u0638\u06cc\u0645 \u0635\u0641\u062d\u0647 @@ -1154,7 +1191,7 @@ Polish=\u0644\u0647\u0633\u062a\u0627\u0646\u06cc Port=\u067e\u0648\u0631\u062a #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:491 -!Port\ number\:= +Port\ number\:=\u0634\u0645\u0627\u0631\u0647 \u067e\u0648\u0631\u062a\: #: ../../../processing/app/Preferences.java:151 Portugese=\u067e\u0631\u062a\u063a\u0627\u0644\u06cc @@ -1239,9 +1276,9 @@ Quit=\u062e\u0631\u0648\u062c #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1269,6 +1306,9 @@ Replace\ with\:=\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646\u06cc \u0628\u0627\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 !Romanian= @@ -1360,9 +1400,13 @@ Send=\u0627\u0631\u0633\u0627\u0644 #, java-format !Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?= -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -!Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?= +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1380,6 +1424,9 @@ Send=\u0627\u0631\u0633\u0627\u0644 #: Editor.java:641 !Show\ Sketch\ Folder= +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 !Show\ verbose\ output\ during\:\ = @@ -1499,15 +1546,19 @@ The\ Server\ class\ has\ been\ renamed\ EthernetServer.=The Server \u0628\u0647 #, java-format !The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format !The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)= #: ../../../../../app/src/processing/app/SketchController.java:170 -!The\ main\ file\ cannot\ use\ an\ extension= +The\ main\ file\ cannot\ use\ an\ extension=\u0641\u0627\u06cc\u0644 \u0627\u0635\u0644\u06cc \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u0627\u0641\u0632\u0648\u0646\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u062f #: Sketch.java:356 -!The\ name\ cannot\ start\ with\ a\ period.= +The\ name\ cannot\ start\ with\ a\ period.=\u0627\u0633\u0645 \u0646\u0645\u06cc\u062a\u0648\u0627\u0646\u062f \u0628\u0627 \u06cc\u06a9 \u0646\u0642\u0637\u0647 \u0634\u0631\u0648\u0639 \u0634\u0648\u062f. #: Base.java:1412 !The\ selected\ sketch\ no\ longer\ exists.\nYou\ may\ need\ to\ restart\ Arduino\ to\ update\nthe\ sketchbook\ menu.= @@ -1518,13 +1569,13 @@ The\ Server\ class\ has\ been\ renamed\ EthernetServer.=The Server \u0628\u0647 #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format -!The\ sketch\ already\ contains\ a\ file\ named\ "{0}"= +The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=\u0627\u06cc\u0646 \u0637\u0631\u062d \u0627\u0632 \u0642\u0628\u0644 \u062d\u0627\u0648\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0628\u0627 \u0647\u0645\u06cc\u0646 \u0646\u0627\u0645 \u0627\u0633\u062a "{0}" #: Sketch.java:1755 !The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.= -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 !The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.= @@ -1532,6 +1583,9 @@ The\ Server\ class\ has\ been\ renamed\ EthernetServer.=The Server \u0628\u0647 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1542,40 +1596,40 @@ The\ Server\ class\ has\ been\ renamed\ EthernetServer.=The Server \u0628\u0647 !Time\ for\ a\ Break= #: ../../../../../arduino-core/src/processing/app/I18n.java:34 -!Timing= +Timing=\u0632\u0645\u0627\u0646 \u0633\u0646\u062c\u06cc #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:94 #, java-format -!Tool\ {0}\ is\ not\ available\ for\ your\ operating\ system.= +Tool\ {0}\ is\ not\ available\ for\ your\ operating\ system.=\u0627\u0628\u0632\u0627\u0631 {0} \u0628\u0631\u0627\u06cc \u0633\u06cc\u0633\u062a\u0645 \u0639\u0627\u0645\u0644 \u0634\u0645\u0627 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u06cc\u0633\u062a. #: Editor.java:663 -Tools=\u0627\u0628\u0632\u0627\u0631 +Tools=\u0627\u0628\u0632\u0627\u0631 \u0647\u0627 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:97 -!Topic= +Topic=\u0645\u0648\u0636\u0648\u0639 #: Editor.java:1070 -Troubleshooting=\u062e\u0637\u0627 \u06cc\u0627\u0628\u06cc +Troubleshooting=\u0639\u06cc\u0628 \u06cc\u0627\u0628\u06cc #: ../../../processing/app/Preferences.java:117 Turkish=\u062a\u0631\u06a9\u06cc #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:109 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:105 -!Type= +Type=\u0646\u0648\u0639 #: ../../../processing/app/Editor.java:2507 -!Type\ board\ password\ to\ access\ its\ console= +Type\ board\ password\ to\ access\ its\ console=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0648\u0631\u062f \u0631\u0627 \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0647 \u06a9\u0646\u0633\u0648\u0644 \u0622\u0646 \u062f\u0633\u062a\u0631\u0633\u06cc \u06cc\u0627\u0628\u06cc\u062f #: ../../../processing/app/Sketch.java:1673 -!Type\ board\ password\ to\ upload\ a\ new\ sketch= +Type\ board\ password\ to\ upload\ a\ new\ sketch=\u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0628\u0648\u0631\u062f \u0631\u0627 \u062a\u0627\u06cc\u067e \u06a9\u0646\u06cc\u062f \u062a\u0627 \u06cc\u06a9 \u0637\u0631\u062d \u062c\u062f\u06cc\u062f \u0622\u067e\u0644\u0648\u062f \u0634\u0648\u062f #: ../../../processing/app/Preferences.java:118 Ukrainian=\u0627\u06a9\u0631\u0627\u06cc\u0646\u06cc #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:142 #, java-format -!Unable\ to\ connect\ to\ {0}= +Unable\ to\ connect\ to\ {0}=\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 {0} \u063a\u06cc\u0631 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a #: ../../../processing/app/Editor.java:2524 #: ../../../processing/app/NetworkMonitor.java:145 @@ -1605,25 +1659,25 @@ Ukrainian=\u0627\u06a9\u0631\u0627\u06cc\u0646\u06cc !Uncategorized= #: Editor.java:1133 Editor.java:1355 -!Undo= +Undo=\u0648\u0627\u06af\u0631\u062f #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:85 #, java-format !Unhandled\ type\ {0}\ in\ context\ key\ {1}= #: ../../../../../app//src/processing/app/Editor.java:2818 -!Unknown\ board= +Unknown\ board=\u0628\u0648\u0631\u062f \u0646\u0627\u0645\u0634\u062e\u0635 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format -!Unknown\ sketch\ file\ extension\:\ {0}= +Unknown\ sketch\ file\ extension\:\ {0}=\u067e\u0633\u0648\u0646\u062f \u0641\u0627\u06cc\u0644 \u0637\u0631\u062d \u0646\u0627\u0634\u0646\u0627\u062e\u062a\u0647\: {0} #: Platform.java:168 !Unspecified\ platform,\ no\ launcher\ available.\nTo\ enable\ opening\ URLs\ or\ folders,\ add\ a\ \n"launcher\=/path/to/app"\ line\ to\ preferences.txt= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownUpdatableLibrariesItem.java:27 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownUpdatableCoresItem.java:27 -!Updatable= +Updatable=\u0642\u0627\u0628\u0644 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc #: UpdateCheck.java:111 Update=\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc @@ -1633,7 +1687,7 @@ Update=\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:88 #, java-format -!Updates\ available\ for\ some\ of\ your\ {0}boards{1}= +Updates\ available\ for\ some\ of\ your\ {0}boards{1}=\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u0647\u0627 \u0628\u0631\u0627\u06cc \u0628\u0631\u062e\u06cc \u0627\u0632 {0}\u0628\u0648\u0631\u062f\u0647\u0627{1} \u0634\u0645\u0627 \u0645\u0648\u062c\u0648\u062f \u0647\u0633\u062a\u0646\u062f #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:90 #, java-format @@ -1644,16 +1698,16 @@ Update=\u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc !Updates\ available\ for\ some\ of\ your\ {0}libraries{1}= #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:167 -!Updating\ list\ of\ installed\ libraries= +Updating\ list\ of\ installed\ libraries=\u062f\u0631\u062d\u0627\u0644 \u0628\u0647 \u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u06a9\u0631\u062f\u0646 \u0644\u06cc\u0633\u062a\u06cc \u0627\u0632 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc \u0646\u0635\u0628 \u0634\u062f\u0647 #: EditorToolbar.java:41 Editor.java:545 Upload=\u0622\u067e\u0644\u0648\u062f #: EditorToolbar.java:46 Editor.java:553 -!Upload\ Using\ Programmer= +Upload\ Using\ Programmer=\u0622\u067e\u0644\u0648\u062f \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u067e\u0631\u0648\u06af\u0631\u0627\u0645\u0631 #: ../../../../../app//src/processing/app/Editor.java:2814 -!Upload\ any\ sketch\ to\ obtain\ it= +Upload\ any\ sketch\ to\ obtain\ it=\u0647\u0631 \u0637\u0631\u062d\u06cc \u0631\u0627 \u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u06cc\u062f \u062a\u0627 \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u06cc\u062f #: Editor.java:2403 Editor.java:2439 Upload\ canceled.=\u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u0633\u0644 \u0634\u062f. @@ -1662,7 +1716,7 @@ Upload\ canceled.=\u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u0633\u0644 \u0634 Upload\ cancelled=\u0622\u067e\u0644\u0648\u062f \u06a9\u0646\u0633\u0644 \u0634\u062f #: Editor.java:2378 -!Uploading\ to\ I/O\ Board...= +Uploading\ to\ I/O\ Board...=\u062f\u0631\u062d\u0627\u0644 \u0622\u067e\u0644\u0648\u062f \u06a9\u0631\u062f\u0646 \u0628\u0647 \u0628\u0648\u0631\u062f I/O #: Sketch.java:1622 Uploading...=\u062f\u0631 \u062d\u0627\u0644 \u0622\u067e\u0644\u0648\u062f... @@ -1705,18 +1759,18 @@ Verify\ code\ after\ upload=\u06a9\u062f \u0631\u0627 \u067e\u0633 \u0627\u0632 !Verifying\ archive\ integrity...= #: ../../../../../app/src/processing/app/Base.java:454 -!Verifying...= +Verifying...=\u062f\u0631\u062d\u0627\u0644 \u0628\u0627\u0632\u0628\u06cc\u0646\u06cc \u06a9\u0631\u062f\u0646... #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:328 #, java-format -!Version\ {0}= +Version\ {0}=\u0646\u0633\u062e\u0647 {0} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:326 -!Version\ unknown= +Version\ unknown=\u0646\u0633\u062e\u0647 \u0646\u0627\u0645\u0634\u062e\u0635 #: ../../../cc/arduino/contributions/libraries/ContributedLibrary.java:97 #, java-format -!Version\ {0}= +Version\ {0}=\u0646\u0633\u062e\u0647 {0} #: ../../../processing/app/Preferences.java:154 Vietnamese=\u0648\u06cc\u062a\u0646\u0627\u0645\u06cc @@ -1737,7 +1791,7 @@ Visit\ Arduino.cc=\u0633\u0627\u06cc\u062a Arduino.cc \u0631\u0627 \u0628\u0627\ !WARNING\:\ library\ {0}\ claims\ to\ run\ on\ {1}\ architecture(s)\ and\ may\ be\ incompatible\ with\ your\ current\ board\ which\ runs\ on\ {2}\ architecture(s).= #: Base.java:2128 -Warning=\u0627\u062e\u0637\u0627\u0631 +Warning=\u0647\u0634\u062f\u0627\u0631 #: ../../../processing/app/debug/Compiler.java:1295 !Warning\:\ This\ core\ does\ not\ support\ exporting\ sketches.\ Please\ consider\ upgrading\ it\ or\ contacting\ its\ author= @@ -1857,15 +1911,20 @@ connected\!=\u0645\u062a\u0635\u0644 \u0634\u062f\! !http\://www.arduino.cc/en/Main/Software= #: UpdateCheck.java:53 -!http\://www.arduino.cc/latest.txt= +http\://www.arduino.cc/latest.txt=http\://www.arduino.cc/latest.txt #: Preferences.java:625 #, java-format -!ignoring\ invalid\ font\ size\ {0}= +ignoring\ invalid\ font\ size\ {0}=\u0635\u0631\u0641 \u0646\u0638\u0631 \u06a9\u0631\u062f\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u0645\u062a\u0646 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 {0} #: Editor.java:936 Editor.java:943 !name\ is\ null= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=\u0641\u0627\u06cc\u0644 \u0633\u0631 \u062a\u06cc\u062a\u0631 (h.) \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f \u062f\u0631 {0} + #: Editor.java:932 !serialMenu\ is\ null= @@ -1875,23 +1934,23 @@ the\ selected\ serial\ port\ {0}\ does\ not\ exist\ or\ your\ board\ is\ not\ co #: ../../../processing/app/Base.java:389 #, java-format -!unknown\ option\:\ {0}= +unknown\ option\:\ {0}=\u06af\u0632\u06cc\u0646\u0647 \u0646\u0627\u0645\u0634\u062e\u0635\: {0} #: Preferences.java:391 upload=\u0622\u067e\u0644\u0648\u062f #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:324 #, java-format -!version\ {0}= +version\ {0}=\u0646\u0633\u062e\u0647 {0} #: ../../../../../app/src/processing/app/Editor.java:2243 #, java-format -!{0}\ -\ {1}\ |\ Arduino\ {2}= +{0}\ -\ {1}\ |\ Arduino\ {2}={0} - {1} | \u0622\u0631\u062f\u0648\u0626\u06cc\u0646\u0648 {2} #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:39 #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:43 #, java-format -!{0}\ file\ signature\ verification\ failed= +{0}\ file\ signature\ verification\ failed={0} \u062a\u0627\u0626\u06cc\u062f\u06cc\u0647 \u0627\u0645\u0636\u0627 \u0641\u0627\u06cc\u0644 \u0634\u06a9\u0633\u062a \u062e\u0648\u0631\u062f #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:310 #, java-format @@ -1919,11 +1978,11 @@ upload=\u0622\u067e\u0644\u0648\u062f #: debug/Compiler.java:365 #, java-format -!{0}\ returned\ {1}= +{0}\ returned\ {1}={0} \u0628\u0627\u0632\u06af\u0634\u062a\u0647 {1} #: Editor.java:2213 #, java-format -!{0}\ |\ Arduino\ {1}= +{0}\ |\ Arduino\ {1}={0} | \u0622\u0631\u062f\u0648\u0626\u06cc\u0646\u0648 {1} #: ../../../processing/app/Base.java:519 #, java-format @@ -1933,30 +1992,30 @@ upload=\u0622\u067e\u0644\u0648\u062f #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format -!{0}\:\ Invalid\ option\ for\ board\ "{1}"= +{0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: \u06af\u0632\u06cc\u0646\u0647 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0628\u0631\u0627\u06cc \u0628\u0648\u0631\u062f "{1}" #: ../../../processing/app/Base.java:502 #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\:\u0645\u0642\u062f\u0627\u0631 \u0646\u0627\u0645\u0639\u062a\u0628\u0631 \u0628\u0631\u0627\u06cc \u06af\u0632\u06cc\u0646\u0647 "{1}" \u0628\u0631\u0627\u06cc \u0628\u0648\u0631\u062f "{2}" + #: ../../../processing/app/Base.java:486 #, java-format -!{0}\:\ Unknown\ architecture= +{0}\:\ Unknown\ architecture=\u0645\u0639\u0645\u0627\u0631\u06cc \u0646\u0627\u0645\u0634\u062e\u0635 \:{0} #: ../../../processing/app/Base.java:491 #, java-format -!{0}\:\ Unknown\ board= +{0}\:\ Unknown\ board=\u0628\u0648\u0631\u062f \u0646\u0627\u0645\u0634\u062e\u0635 \:{0} #: ../../../processing/app/Base.java:481 #, java-format -!{0}\:\ Unknown\ package= +{0}\:\ Unknown\ package=\u0628\u0633\u062a\u0647 \u0646\u0627\u0645\u0634\u062e\u0635 \:{0} #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format -!{0}Install\ this\ package{1}\ to\ use\ your\ {2}\ board= +{0}Install\ this\ package{1}\ to\ use\ your\ {2}\ board={0}\u0627\u06cc\u0646 \u0628\u0633\u062a\u0647 \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f{1} \u062a\u0627 \u0627\u0632 \u0628\u0648\u0631\u062f {2} \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u06cc\u06cc\u062f diff --git a/arduino-core/src/processing/app/i18n/Resources_fi.po b/arduino-core/src/processing/app/i18n/Resources_fi.po index 6198697b1d8..8acacf7b1e7 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fi.po +++ b/arduino-core/src/processing/app/i18n/Resources_fi.po @@ -17,6 +17,9 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Jaakko Fagerlund , 2013 # Janne Ojala , 2017 # lotof , 2014 @@ -26,7 +29,7 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: Finnish (http://www.transifex.com/mbanzi/arduino-ide-15/language/fi/)\n" "MIME-Version: 1.0\n" @@ -625,6 +628,11 @@ msgstr "{0}:n vanhaa versiota ei voitu poistaa" msgid "Could not replace {0}" msgstr "{0}:aa ei voitu korvata" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Luonnoksen arkistointi ei onnistunut" @@ -680,6 +688,10 @@ msgstr "Vähennä sisennystä" msgid "Default" msgstr "Oletus" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Poista" @@ -855,6 +867,11 @@ msgstr "Arduinon datakansiota haettaessa tapahtui virhe." msgid "Error inside Serial.{0}()" msgstr "Virhe Serial.{0}() sisällä" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -874,6 +891,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Virhe luettaessa asetuksia" @@ -908,6 +944,10 @@ msgstr "Virhe polttaessa käynnistinlataajaa." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Virhe käynnistyslataajaa poltettaessa: puuttuva '{0}' asetusparametri" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -944,10 +984,6 @@ msgstr "" msgid "Estonian" msgstr "Eesti" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estonia (Estonia)" - #: Editor.java:516 msgid "Examples" msgstr "Esimerkit" @@ -1151,9 +1187,9 @@ msgstr "YHTEENSOPIMATON" msgid "Ignore Case" msgstr "Sivuuta koko" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Sivuutetaan huononniminen kirjasto" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1216,10 +1252,10 @@ msgstr "Asennettu" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "Asennetaan kirjastoa: {0}" +msgid "Installing library: {0}:{1}" +msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1245,6 +1281,17 @@ msgstr "Virheellinen kirjasto paikassa {0}: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "italia" @@ -1277,9 +1324,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1697,10 +1744,10 @@ msgstr "Opas" msgid "Remove" msgstr "Poista" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "Poistaa kirjastoa: {0}" +msgid "Removing library: {0}:{1}" +msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1736,6 +1783,10 @@ msgstr "Korvaa tällä:" msgid "Retired" msgstr "Vedetty pois" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "romania" @@ -1859,12 +1910,15 @@ msgid "" " Serial Port menu?" msgstr "Sarjaporttia ''{0}'' ei löydy. Valitsitko oikean valikosta Työkalut -> Sarjaportti?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Sarjaporttia {0} ei löydy.\nKokeile lähettämistä toisella sarjaportilla?" +msgid "Serial port {0} not found." +msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1887,6 +1941,10 @@ msgstr "Asetuksissa on ongelmia" msgid "Show Sketch Folder" msgstr "Näytä sketsikansio" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Näytä tarkemmat tiedot: " @@ -2058,6 +2116,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "Tiedoston \"{0}\" tulee olla\nsketsikansion \"{1}\" sisällä.\nLuo tämä kansio, siirrä tiedosto ja jatka?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2103,10 +2169,11 @@ msgid "" "but anything besides the code will be lost." msgstr "Sketsikansio on hävinnyt.\nYritetään tallentaa uudelleen samaan paikkaan,\nmutta kaikki muu paitsi koodi häviää." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2124,6 +2191,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2616,6 +2687,12 @@ msgstr "sivuutetaan epäkelpo fonttikoko {0}" msgid "name is null" msgstr "nimi on tyhjä" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu on tyhjä" @@ -2703,11 +2780,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2718,6 +2790,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_fi.properties b/arduino-core/src/processing/app/i18n/Resources_fi.properties index cfded4e525e..c93d8e82d51 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fi.properties +++ b/arduino-core/src/processing/app/i18n/Resources_fi.properties @@ -17,11 +17,14 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Jaakko Fagerlund , 2013 # Janne Ojala , 2017 # lotof , 2014 # Katajisto , 2017 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Finnish (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fi/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fi\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Finnish (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fi/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fi\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (vaatii Arduinon uudelleenk\u00e4ynnist\u00e4misen) @@ -444,6 +447,10 @@ Could\ not\ remove\ old\ version\ of\ {0}={0}\:n vanhaa versiota ei voitu poista #, java-format Could\ not\ replace\ {0}={0}\:aa ei voitu korvata +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Luonnoksen\u00a0arkistointi ei onnistunut @@ -483,6 +490,9 @@ Decrease\ Indent=V\u00e4henn\u00e4 sisennyst\u00e4 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=Oletus +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=Poista @@ -614,6 +624,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Arduinon datakansiota haettaessa tap #, java-format Error\ inside\ Serial.{0}()=Virhe Serial.{0}() sis\u00e4ll\u00e4 +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -628,6 +642,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Virhe avatessa sarjaporttia ''{0}''. #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 Error\ reading\ preferences=Virhe luettaessa asetuksia @@ -653,6 +679,9 @@ Error\ while\ burning\ bootloader.=Virhe polttaessa k\u00e4ynnistinlataajaa. #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Virhe k\u00e4ynnistyslataajaa poltettaessa\: puuttuva '{0}' asetusparametri +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -681,9 +710,6 @@ Error\ while\ uploading\:\ missing\ '{0}'\ configuration\ parameter=Virhe l\u00e #: Preferences.java:93 Estonian=Eesti -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Estonia (Estonia) - #: Editor.java:516 Examples=Esimerkit @@ -834,8 +860,8 @@ INCOMPATIBLE=YHTEENSOPIMATON #: FindReplace.java:96 Ignore\ Case=Sivuuta koko -#: Base.java:1058 -Ignoring\ bad\ library\ name=Sivuutetaan huononniminen kirjasto +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Sivuutetaan huononniminen ohjelma @@ -879,9 +905,9 @@ Installed=Asennettu #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=Asennetaan kirjastoa\: {0} +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -902,6 +928,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=Virheellinen kirjasto paikassa {0}\: {1} #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=italia @@ -926,9 +961,9 @@ Latvian=latvia #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=Rivinumero\: @@ -1241,9 +1276,9 @@ Reference=Opas #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=Poista -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=Poistaa kirjastoa\: {0} +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1271,6 +1306,9 @@ Replace\ with\:=Korvaa t\u00e4ll\u00e4\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=Vedetty pois +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=romania @@ -1362,9 +1400,13 @@ Serial\ Monitor=Sarjamonitori #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Sarjaporttia ''{0}'' ei l\u00f6ydy. Valitsitko oikean valikosta Ty\u00f6kalut -> Sarjaportti? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Sarjaporttia {0} ei l\u00f6ydy.\nKokeile l\u00e4hett\u00e4mist\u00e4 toisella sarjaportilla? +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1382,6 +1424,9 @@ Settings\ issues=Asetuksissa on ongelmia #: Editor.java:641 Show\ Sketch\ Folder=N\u00e4yt\u00e4 sketsikansio +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =N\u00e4yt\u00e4 tarkemmat tiedot\: @@ -1501,6 +1546,10 @@ The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=Udp luokka on nimetty Ethernet #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=Tiedoston "{0}" tulee olla\nsketsikansion "{1}" sis\u00e4ll\u00e4.\nLuo t\u00e4m\u00e4 kansio, siirr\u00e4 tiedosto ja jatka? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=Kirjastoa "{0}" ei voida k\u00e4ytt\u00e4\u00e4.\nKirjaston nimess\u00e4 saa olla vain kirjaimia ja numeroita.\n(vain ASCII, ei v\u00e4lily\u00f6ntej\u00e4, eik\u00e4 se saa alkaa numerolla.) @@ -1525,8 +1574,8 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Sketsikansio on h\u00e4vinnyt.\nYritet\u00e4\u00e4n tallentaa uudelleen samaan paikkaan,\nmutta kaikki muu paitsi koodi h\u00e4vi\u00e4\u00e4. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=Ohjelmakansiota ei en\u00e4\u00e4 ole olemassa. Arduino vaihtaa oletuskansioon, luo tarvittaessa uuden ja lopettaa itsest\u00e4\u00e4n puhumisen kolmannessa persoonassa. @@ -1534,6 +1583,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1868,6 +1920,11 @@ ignoring\ invalid\ font\ size\ {0}=sivuutetaan ep\u00e4kelpo fonttikoko {0} #: Editor.java:936 Editor.java:943 name\ is\ null=nimi on tyhj\u00e4 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=serialMenu on tyhj\u00e4 @@ -1935,10 +1992,6 @@ upload=l\u00e4hett\u00e4ess\u00e4 #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1947,6 +2000,10 @@ upload=l\u00e4hett\u00e4ess\u00e4 #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: Tuntematon arkkitehtuuri diff --git a/arduino-core/src/processing/app/i18n/Resources_fil.po b/arduino-core/src/processing/app/i18n/Resources_fil.po index 1f5a3629384..a313d392546 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fil.po +++ b/arduino-core/src/processing/app/i18n/Resources_fil.po @@ -17,6 +17,9 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # David A. Mellis <>, 2012 # John Carl , 2018 msgid "" @@ -24,8 +27,8 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2018-02-14 17:59+0000\n" -"Last-Translator: John Carl \n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" +"Last-Translator: Cristian Maglie \n" "Language-Team: Filipino (http://www.transifex.com/mbanzi/arduino-ide-15/language/fil/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -623,6 +626,11 @@ msgstr "Hindi maaalis ang lumang bersyon na {0}" msgid "Could not replace {0}" msgstr "Hindi mapalitan ang {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Hindi mai-archive and sketch" @@ -678,6 +686,10 @@ msgstr "Bawasan ang Indent" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Alisin" @@ -853,6 +865,11 @@ msgstr "May problema sa pagkuha ng Arduino data folder" msgid "Error inside Serial.{0}()" msgstr "May mali sa loob ng Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -872,6 +889,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "May problema sa pagread ng preferences" @@ -906,6 +942,10 @@ msgstr "May mali habang naglalagay ng bootloader." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -942,10 +982,6 @@ msgstr "" msgid "Estonian" msgstr "" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "" - #: Editor.java:516 msgid "Examples" msgstr "Mga Halimbawa" @@ -1149,9 +1185,9 @@ msgstr "" msgid "Ignore Case" msgstr "Ignore Case" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Hindi papansinin ang library na may maling pangalan" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1214,9 +1250,9 @@ msgstr "" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1243,6 +1279,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "Italian" @@ -1275,9 +1322,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1695,9 +1742,9 @@ msgstr "Sanggunian" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1734,6 +1781,10 @@ msgstr "Palitan ng:" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "Romanian" @@ -1857,12 +1908,15 @@ msgid "" " Serial Port menu?" msgstr "Hindi makita ang serial port na ''{0}''. Tama ba ang iyong napili sa Mga Kasangkapan > Serial Port menu?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Hindi makita ang serial port na {0}.\nSubukan muli ang pagupload gamit ang ibang serial port?" +msgid "Serial port {0} not found." +msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1885,6 +1939,10 @@ msgstr "May problema sa Settings" msgid "Show Sketch Folder" msgstr "Ipakita ang Sketch Folder" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Ipakita ang verbose na output: " @@ -2056,6 +2114,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "Ang file \"{0}\" ay nararapat na nasa loob\nng sketch folder na \"{1}\".\nI-create ang folder, ilipat ang file at magpatuloy?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2101,10 +2167,11 @@ msgid "" "but anything besides the code will be lost." msgstr "Nawala ng folder ng sketch.\n Susubukang ire-save sa parehong lokasyon,\nsubalit lahat maliban sa code ay mawawala." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2122,6 +2189,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2614,6 +2685,12 @@ msgstr "hindi papansinin ang maling sukat ng font {0}" msgid "name is null" msgstr "ang pangalan ay null" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu ay null" @@ -2701,11 +2778,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2716,6 +2788,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_fil.properties b/arduino-core/src/processing/app/i18n/Resources_fil.properties index d37a94262fd..c613fb8c74f 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fil.properties +++ b/arduino-core/src/processing/app/i18n/Resources_fil.properties @@ -17,9 +17,12 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # David A. Mellis <>, 2012 # John Carl , 2018 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-02-14 17\:59+0000\nLast-Translator\: John Carl \nLanguage-Team\: Filipino (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fil/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fil\nPlural-Forms\: nplurals\=2; plural\=(n \=\= 1 || n\=\=2 || n\=\=3) || (n % 10 \!\= 4 || n % 10 \!\= 6 || n % 10 \!\= 9);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Filipino (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fil/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fil\nPlural-Forms\: nplurals\=2; plural\=(n \=\= 1 || n\=\=2 || n\=\=3) || (n % 10 \!\= 4 || n % 10 \!\= 6 || n % 10 \!\= 9);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (kinakailangang i-restart ang Arduino) @@ -442,6 +445,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Hindi maaalis ang lumang bersyon na {0 #, java-format Could\ not\ replace\ {0}=Hindi mapalitan ang {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Hindi mai-archive and sketch @@ -481,6 +488,9 @@ Decrease\ Indent=Bawasan ang Indent #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=Alisin @@ -612,6 +622,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=May problema sa pagkuha ng Arduino d #, java-format Error\ inside\ Serial.{0}()=May mali sa loob ng Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -626,6 +640,18 @@ Error\ opening\ serial\ port\ ''{0}''.=May mali sa pagbukas ng serial port ''{0} #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 Error\ reading\ preferences=May problema sa pagread ng preferences @@ -651,6 +677,9 @@ Error\ while\ burning\ bootloader.=May mali habang naglalagay ng bootloader. #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -679,9 +708,6 @@ Error\ while\ printing.=May mali habang nagpi-print. #: Preferences.java:93 !Estonian= -#: ../../../processing/app/Preferences.java:146 -!Estonian\ (Estonia)= - #: Editor.java:516 Examples=Mga Halimbawa @@ -832,8 +858,8 @@ Hungarian=Hungarian #: FindReplace.java:96 Ignore\ Case=Ignore Case -#: Base.java:1058 -Ignoring\ bad\ library\ name=Hindi papansinin ang library na may maling pangalan +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Hindi papansin ang sketch na may maling pangalan @@ -877,9 +903,9 @@ Increase\ Indent=Dagdagan ang Indent #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -900,6 +926,15 @@ Increase\ Indent=Dagdagan ang Indent #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=Italian @@ -924,9 +959,9 @@ Latvian=Latvian #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -1239,9 +1274,9 @@ Reference=Sanggunian #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1269,6 +1304,9 @@ Replace\ with\:=Palitan ng\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=Romanian @@ -1360,9 +1398,13 @@ Serial\ Monitor=Serial Monitor #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Hindi makita ang serial port na ''{0}''. Tama ba ang iyong napili sa Mga Kasangkapan > Serial Port menu? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Hindi makita ang serial port na {0}.\nSubukan muli ang pagupload gamit ang ibang serial port? +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1380,6 +1422,9 @@ Settings\ issues=May problema sa Settings #: Editor.java:641 Show\ Sketch\ Folder=Ipakita ang Sketch Folder +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Ipakita ang verbose na output\: @@ -1499,6 +1544,10 @@ The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=Ang Udp class ay pinangalanang #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=Ang file "{0}" ay nararapat na nasa loob\nng sketch folder na "{1}".\nI-create ang folder, ilipat ang file at magpatuloy? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=Ang library "{0}" ay maaaring gamitin.\nAng pangalan ng library ay maaari lamang magkaron ng titik at numero.\n(ASCII lamang at walang spaces, at hindi ito maaaring magsimula sa numero) @@ -1523,8 +1572,8 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Nawala ng folder ng sketch.\n Susubukang ire-save sa parehong lokasyon,\nsubalit lahat maliban sa code ay mawawala. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=Ang sketchbook folder ay hindi ko na makita.\nGagamitin ko na ang default lokasyon ng sketchbook \nat gagawa ng bagong sketchbook folder kung\nkinakailangan. At hindi ko na kakausapin\nang sarili ko. @@ -1532,6 +1581,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1866,6 +1918,11 @@ ignoring\ invalid\ font\ size\ {0}=hindi papansinin ang maling sukat ng font {0} #: Editor.java:936 Editor.java:943 name\ is\ null=ang pangalan ay null +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=serialMenu ay null @@ -1933,10 +1990,6 @@ upload=upload #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1945,6 +1998,10 @@ upload=upload #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_fr.po b/arduino-core/src/processing/app/i18n/Resources_fr.po index edef557f694..df1ab8dd314 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fr.po +++ b/arduino-core/src/processing/app/i18n/Resources_fr.po @@ -17,8 +17,11 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Alexis Morin , 2012 -# Aestan , 2018 +# Aestan , 2018 # AntoineM , 2012 # Armel FAUVEAU , 2015 # BlueskyFR , 2015 @@ -27,6 +30,7 @@ # Cedric Octave , 2016 # Cristian Maglie , 2016 # dbarbier , 2012 +# a270031086f2a0d3514bc0cb507b48f6, 2019 # Simon , 2012 # Frederic Pillon , 2017 # Louis Bonicel , 2016 @@ -41,8 +45,8 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2018-02-11 17:05+0000\n" -"Last-Translator: Aestan \n" +"PO-Revision-Date: 2019-02-24 19:35+0000\n" +"Last-Translator: a270031086f2a0d3514bc0cb507b48f6\n" "Language-Team: French (http://www.transifex.com/mbanzi/arduino-ide-15/language/fr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -640,6 +644,11 @@ msgstr "Impossible de retirer la vieille version de {0}" msgid "Could not replace {0}" msgstr "Impossible de remplacer {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Impossible d'écrire le fichier de préférences: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Impossible d'archiver le croquis" @@ -695,6 +704,10 @@ msgstr "Réduire l'indentation" msgid "Default" msgstr "Défaut" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Thème par défaut" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Supprimer" @@ -870,6 +883,11 @@ msgstr "Problème d'obtention du dossier de données d'Arduino" msgid "Error inside Serial.{0}()" msgstr "Erreur dans Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Erreur lors du chargement du thème {0}: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -889,6 +907,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "Erreur durant l'ouverture du port série \"{0}'. Consultez la documentation: http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Erreur d'analyse de l'index des bibliothèques: {0}\nEssayez d'ouvrir le gestionnaire de bibliothèque pour mettre à jour l'index des bibliothèques." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Erreur de lecture de l'index des bibliothèques: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Erreur lors de la lecture du dossier des index de packages: {0}\n(peut-être un problème de permission?)" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Erreur pendant la lecture des préférences" @@ -923,6 +960,10 @@ msgstr "Erreur lors de la gravure de la séquence d'initialisation." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Erreur lors de la gravure de la séquence d'initialisation : le paramètre de configuration « {0} » est manquant" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Erreur lors de la gravure du chargeur de démarrage: veuillez sélectionner un port série." + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Erreur lors de la compilation : le paramètre de configuration « {0} » est manquant" @@ -959,10 +1000,6 @@ msgstr "Erreur lors de la vérification et du transfert." msgid "Estonian" msgstr "estonien" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "estonien (Estonie)" - #: Editor.java:516 msgid "Examples" msgstr "Exemples" @@ -1166,9 +1203,9 @@ msgstr "INCOMPATIBLE" msgid "Ignore Case" msgstr "Ignorer la casse" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Ignore la bibliothèque mal nommée" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "Ignorer la bibliothèque avec un mauvais nom" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1231,10 +1268,10 @@ msgstr "Installé" msgid "Installing boards..." msgstr "Installation des cartes..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "Installation de la biliothèque: {0}" +msgid "Installing library: {0}:{1}" +msgstr "Installation de la bibliothèque: {0}: {1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1260,6 +1297,17 @@ msgstr "Bibliothèque non valide trouvée dans {0} : {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "Guillement invalide: charactère [{0}] de fermeture non trouvé." +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Version non valide '{0}' pour la bibliothèque dans: {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Version non valide {0}" + #: Preferences.java:102 msgid "Italian" msgstr "italien" @@ -1292,10 +1340,10 @@ msgstr "La bibliothèque a été ajoutée à votre dossier de bibliothèques. Ve msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "Une bibliothèque ne peut utiliser les dossiers 'src' et 'utility' en même temps. Double vérification {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "La bibliothèque est déja installé: {0} version {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "La bibliothèque est déjà installée: {0}: {1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1712,10 +1760,10 @@ msgstr "Référence" msgid "Remove" msgstr "Supprimer " -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "Suppression de la bibliothèque: {0}" +msgid "Removing library: {0}:{1}" +msgstr "Suppression de la bibliothèque: {0}: {1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1751,6 +1799,10 @@ msgstr "Remplacer par :" msgid "Retired" msgstr "Retiré" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Réessayez le téléverser/transférer/envoyer avec un autre port série?" + #: Preferences.java:113 msgid "Romanian" msgstr "roumain" @@ -1874,12 +1926,15 @@ msgid "" " Serial Port menu?" msgstr "Port série « {0} » non trouvé. L''avez-vous bien sélectionné dans le menu Outils > Port série ?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Port série non sélectionné." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Port série {0} introuvable.\nRéessayer le téléversement à partir d''un autre port série ?" +msgid "Serial port {0} not found." +msgstr "Port série {0} introuvable." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1902,6 +1957,10 @@ msgstr "Problèmes de paramètres" msgid "Show Sketch Folder" msgstr "Afficher le dossier des croquis" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Afficher l'horodatage" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Afficher les résultats détaillés pendant : " @@ -2073,6 +2132,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "Le fichier « {0} » doit résider dans\nun dossier de croquis nommé « {1} ».\nCréer ce dossier, déplacer le fichier et continuer ?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "La bibliothèque \"{0}\" ne peut pas être utilisée.\nLes noms de dossier de bibliothèque doivent commencer par une lettre ou un chiffre suivi de lettres.\nchiffres, tirets, points et traits de soulignement. La longueur maximale est de 63 caractères." + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2118,11 +2185,12 @@ msgid "" "but anything besides the code will be lost." msgstr "Le dossier croquis a disparu.\nNous allons essayer de réenregistrer au même emplacement,\nmais seul le code sera conservé." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "Le nom du croquis a dû être modifié. Les noms de croquis ne peuvent contenir que\ndes caractères et de chiffres ASCII et avoir moins de 64 caractères." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Le nom de croquis a dû être modifié.\nLes noms de croquis doivent commencer par une lettre ou un chiffre suivi de lettres.\nchiffres, tirets, points et traits de soulignement. La longueur maximale est de 63 caractères." #: Base.java:259 msgid "" @@ -2139,6 +2207,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "Le dossier de votre carnet de croquis spécifié contiens votre IDE.\nVeuillez choisir un dossier différent." +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Thème:" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2631,6 +2703,12 @@ msgstr "ignore la taille de police invalide {0}" msgid "name is null" msgstr "nom est nul" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "aucun fichier d'en-tête (.h) trouvé dans {0}" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu est nul" @@ -2718,11 +2796,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0} : nom de carte incorrect, il doit être de la forme \"paquet:arch:carte\" ou \"paquet:arch:carte:options\"" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0} : Paramètre incorrect de l''option « {1} » pour la carte « {2} »" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2733,6 +2806,11 @@ msgstr "{0} : Option incorrecte pour la carte « {1} »" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0} : Option incorrecte, elle doit être de la forme « nom=valeur »" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: valeur non valide pour l'option \"{1}\" du tableau \"{2}\"" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_fr.properties b/arduino-core/src/processing/app/i18n/Resources_fr.properties index 3f34a716511..fb581bee809 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fr.properties +++ b/arduino-core/src/processing/app/i18n/Resources_fr.properties @@ -17,8 +17,11 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Alexis Morin , 2012 -# Aestan , 2018 +# Aestan , 2018 # AntoineM , 2012 # Armel FAUVEAU , 2015 # BlueskyFR , 2015 @@ -27,6 +30,7 @@ # Cedric Octave , 2016 # Cristian Maglie , 2016 # dbarbier , 2012 +# a270031086f2a0d3514bc0cb507b48f6, 2019 # Simon , 2012 # Frederic Pillon , 2017 # Louis Bonicel , 2016 @@ -36,7 +40,7 @@ # R D , 2012 # Simon , 2015 # Vincent Moulin , 2015 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-02-11 17\:05+0000\nLast-Translator\: Aestan \nLanguage-Team\: French (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fr/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fr\nPlural-Forms\: nplurals\=2; plural\=(n > 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2019-02-24 19\:35+0000\nLast-Translator\: a270031086f2a0d3514bc0cb507b48f6\nLanguage-Team\: French (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fr/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fr\nPlural-Forms\: nplurals\=2; plural\=(n > 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (n\u00e9cessite un red\u00e9marrage d'Arduino) @@ -459,6 +463,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Impossible de retirer la vieille versi #, java-format Could\ not\ replace\ {0}=Impossible de remplacer {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=Impossible d'\u00e9crire le fichier de pr\u00e9f\u00e9rences\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Impossible d'archiver le croquis @@ -498,6 +506,9 @@ Decrease\ Indent=R\u00e9duire l'indentation #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=D\u00e9faut +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=Th\u00e8me par d\u00e9faut + #: EditorHeader.java:314 Sketch.java:591 Delete=Supprimer @@ -629,6 +640,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Probl\u00e8me d'obtention du dossier #, java-format Error\ inside\ Serial.{0}()=Erreur dans Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=Erreur lors du chargement du th\u00e8me {0}\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -643,6 +658,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Erreur d''ouverture du port s\u00e9rie \u #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=Erreur durant l'ouverture du port s\u00e9rie "{0}'. Consultez la documentation\: http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=Erreur d'analyse de l'index des biblioth\u00e8ques\: {0}\nEssayez d'ouvrir le gestionnaire de biblioth\u00e8que pour mettre \u00e0 jour l'index des biblioth\u00e8ques. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=Erreur de lecture de l'index des biblioth\u00e8ques\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=Erreur lors de la lecture du dossier des index de packages\: {0}\n(peut-\u00eatre un probl\u00e8me de permission?) + #: Preferences.java:277 Error\ reading\ preferences=Erreur pendant la lecture des pr\u00e9f\u00e9rences @@ -668,6 +695,9 @@ Error\ while\ burning\ bootloader.=Erreur lors de la gravure de la s\u00e9quence #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Erreur lors de la gravure de la s\u00e9quence d'initialisation \: le param\u00e8tre de configuration \u00ab {0} \u00bb est manquant +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=Erreur lors de la gravure du chargeur de d\u00e9marrage\: veuillez s\u00e9lectionner un port s\u00e9rie. + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=Erreur lors de la compilation \: le param\u00e8tre de configuration \u00ab {0} \u00bb est manquant @@ -696,9 +726,6 @@ Error\ while\ verifying/uploading=Erreur lors de la v\u00e9rification et du tran #: Preferences.java:93 Estonian=estonien -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=estonien (Estonie) - #: Editor.java:516 Examples=Exemples @@ -849,8 +876,8 @@ INCOMPATIBLE=INCOMPATIBLE #: FindReplace.java:96 Ignore\ Case=Ignorer la casse -#: Base.java:1058 -Ignoring\ bad\ library\ name=Ignore la biblioth\u00e8que mal nomm\u00e9e +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=Ignorer la biblioth\u00e8que avec un mauvais nom #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Ignore un croquis mal nomm\u00e9 @@ -894,9 +921,9 @@ Installed=Install\u00e9 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=Installation des cartes... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=Installation de la bilioth\u00e8que\: {0} +Installing\ library\:\ {0}\:{1}=Installation de la biblioth\u00e8que\: {0}\: {1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -917,6 +944,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=Biblioth\u00e8que non valide trouv\u00e9 #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=Guillement invalide\: charact\u00e8re [{0}] de fermeture non trouv\u00e9. +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=Version non valide '{0}' pour la biblioth\u00e8que dans\: {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=Version non valide {0} + #: Preferences.java:102 Italian=italien @@ -941,9 +977,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=La bibliot #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=Une biblioth\u00e8que ne peut utiliser les dossiers 'src' et 'utility' en m\u00eame temps. Double v\u00e9rification {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=La biblioth\u00e8que est d\u00e9ja install\u00e9\: {0} version {1} +Library\ is\ already\ installed\:\ {0}\:{1}=La biblioth\u00e8que est d\u00e9j\u00e0 install\u00e9e\: {0}\: {1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=Ligne num\u00e9ro \: @@ -1256,9 +1292,9 @@ Reference=R\u00e9f\u00e9rence #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=Supprimer -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=Suppression de la biblioth\u00e8que\: {0} +Removing\ library\:\ {0}\:{1}=Suppression de la biblioth\u00e8que\: {0}\: {1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1286,6 +1322,9 @@ Replace\ with\:=Remplacer par\u00a0\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=Retir\u00e9 +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=R\u00e9essayez le t\u00e9l\u00e9verser/transf\u00e9rer/envoyer avec un autre port s\u00e9rie? + #: Preferences.java:113 Romanian=roumain @@ -1377,9 +1416,13 @@ Serial\ monitor\ not\ available\ while\ plotter\ is\ open=Le moniteur s\u00e9rie #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Port s\u00e9rie \u00ab\u00a0{0}\u00a0\u00bb non trouv\u00e9. L''avez-vous bien s\u00e9lectionn\u00e9 dans le menu Outils > Port s\u00e9rie\u00a0? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=Port s\u00e9rie non s\u00e9lectionn\u00e9. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Port s\u00e9rie {0} introuvable.\nR\u00e9essayer le t\u00e9l\u00e9versement \u00e0 partir d''un autre port s\u00e9rie\u00a0? +Serial\ port\ {0}\ not\ found.=Port s\u00e9rie {0} introuvable. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=Ports s\u00e9rie @@ -1397,6 +1440,9 @@ Settings\ issues=Probl\u00e8mes de param\u00e8tres #: Editor.java:641 Show\ Sketch\ Folder=Afficher le dossier des croquis +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=Afficher l'horodatage + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Afficher les r\u00e9sultats d\u00e9taill\u00e9s pendant\u00a0\: @@ -1516,6 +1562,10 @@ The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=Le fichier \u00ab\u00a0{0}\u00a0\u00bb doit r\u00e9sider dans\nun dossier de croquis nomm\u00e9 \u00ab\u00a0{1}\u00a0\u00bb.\nCr\u00e9er ce dossier, d\u00e9placer le fichier et continuer\u00a0? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=La biblioth\u00e8que "{0}" ne peut pas \u00eatre utilis\u00e9e.\nLes noms de dossier de biblioth\u00e8que doivent commencer par une lettre ou un chiffre suivi de lettres.\nchiffres, tirets, points et traits de soulignement. La longueur maximale est de 63 caract\u00e8res. + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=La biblioth\u00e8que \u00ab\u00a0{0}\u00a0\u00bb ne peut \u00eatre utilis\u00e9e.\nLes noms de biblioth\u00e8ques ne doivent contenir que des lettres et des chiffres.\n(ASCII seulement sans espace, et ne peuvent commencer par un chiffre) @@ -1540,8 +1590,8 @@ The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=Ce croquis contiens d\u00e #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Le dossier croquis a disparu.\nNous allons essayer de r\u00e9enregistrer au m\u00eame emplacement,\nmais seul le code sera conserv\u00e9. -#: ../../../../../app/src/processing/app/SketchController.java:828 -The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.=Le nom du croquis a d\u00fb \u00eatre modifi\u00e9. Les noms de croquis ne peuvent contenir que\ndes caract\u00e8res et de chiffres ASCII et avoir moins de 64 caract\u00e8res. +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=Le nom de croquis a d\u00fb \u00eatre modifi\u00e9.\nLes noms de croquis doivent commencer par une lettre ou un chiffre suivi de lettres.\nchiffres, tirets, points et traits de soulignement. La longueur maximale est de 63 caract\u00e8res. #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=Le dossier contenant les croquis n'existe plus.\nArduino va aller \u00e0 l'emplacement\npar d\u00e9faut, et cr\u00e9er un nouveau dossier\nsi n\u00e9cessaire. Arduino cessera ensuite\nde parler de lui-m\u00eame \u00e0 la troisi\u00e8me personne. @@ -1549,6 +1599,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=Le dossier de votre carnet de croquis sp\u00e9cifi\u00e9 contiens votre IDE.\nVeuillez choisir un dossier diff\u00e9rent. +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =Th\u00e8me\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=Cette biblioth\u00e8que n'est pas list\u00e9 dans le gestionnaire de biblioth\u00e8que. Vous ne pourrez plus la r\u00e9installer.\nEtes-vous sur de la supprimer? @@ -1883,6 +1936,11 @@ ignoring\ invalid\ font\ size\ {0}=ignore la taille de police invalide {0} #: Editor.java:936 Editor.java:943 name\ is\ null=nom est nul +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=aucun fichier d'en-t\u00eate (.h) trouv\u00e9 dans {0} + #: Editor.java:932 serialMenu\ is\ null=serialMenu est nul @@ -1950,10 +2008,6 @@ version\ {0}=version {0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0} \: nom de carte incorrect, il doit \u00eatre de la forme "paquet\:arch\:carte" ou "paquet\:arch\:carte\:options" -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0} \: Param\u00e8tre incorrect de l''option \u00ab {1} \u00bb pour la carte \u00ab {2} \u00bb - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0} \: Option incorrecte pour la carte \u00ab {1} \u00bb @@ -1962,6 +2016,10 @@ version\ {0}=version {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0} \: Option incorrecte, elle doit \u00eatre de la forme \u00ab nom\=valeur \u00bb +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: valeur non valide pour l'option "{1}" du tableau "{2}" + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0} \: architecture inconnue diff --git a/arduino-core/src/processing/app/i18n/Resources_fr_CA.po b/arduino-core/src/processing/app/i18n/Resources_fr_CA.po index ad371242cef..00f8f1e719c 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fr_CA.po +++ b/arduino-core/src/processing/app/i18n/Resources_fr_CA.po @@ -17,6 +17,9 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Alexis Morin , 2015 # Alexis Morin , 2012 msgid "" @@ -24,7 +27,7 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: French (Canada) (http://www.transifex.com/mbanzi/arduino-ide-15/language/fr_CA/)\n" "MIME-Version: 1.0\n" @@ -623,6 +626,11 @@ msgstr "Impossible de retirer la vieille version de {0}" msgid "Could not replace {0}" msgstr "Impossible de remplacer {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Impossible d'archiver le croquis" @@ -678,6 +686,10 @@ msgstr "Réduire l'indentation" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Supprimer" @@ -853,6 +865,11 @@ msgstr "Problème d'obtention du dossier de données d'Arduino" msgid "Error inside Serial.{0}()" msgstr "Erreur dans Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -872,6 +889,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Erreur de lecture des préférences" @@ -906,6 +942,10 @@ msgstr "Erreur lors de la gravure de la séquence d'initialisation." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -942,10 +982,6 @@ msgstr "" msgid "Estonian" msgstr "Estonien" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "" - #: Editor.java:516 msgid "Examples" msgstr "Exemples" @@ -1149,9 +1185,9 @@ msgstr "" msgid "Ignore Case" msgstr "Ignorer la casse" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Ignore la bibliothèque mal nommée" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1214,9 +1250,9 @@ msgstr "" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1243,6 +1279,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "Italien" @@ -1275,9 +1322,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1695,9 +1742,9 @@ msgstr "Référence" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1734,6 +1781,10 @@ msgstr "Remplacer par:" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "Roumain" @@ -1857,12 +1908,15 @@ msgid "" " Serial Port menu?" msgstr "Port série « {0} » non trouvé. L'avez-vous bien sélectionné dans le menu \nOutils > Port série ?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Port série {0} introuvable.\nRéessayer le téléversement à partir d''un autre port série ?" +msgid "Serial port {0} not found." +msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1885,6 +1939,10 @@ msgstr "Problèmes de paramètres" msgid "Show Sketch Folder" msgstr "Afficher le dossier des croquis" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Afficher les résultats détaillés pendant: " @@ -2056,6 +2114,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "Le fichier « {0} » doit résider dans\nun dossier de croquis nommé « {1} ».\nCréer ce dossier, déplacer le fichier et continuer ?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2101,10 +2167,11 @@ msgid "" "but anything besides the code will be lost." msgstr "Le dossier croquis a disparu.\n Nous allons essayer de ré-enregistrer au même emplacement,\nmais tout sauf le code sera perdu." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2122,6 +2189,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2614,6 +2685,12 @@ msgstr "ignore la taille de police invalide {0}" msgid "name is null" msgstr "nom est nul" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu est nul" @@ -2701,11 +2778,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2716,6 +2788,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_fr_CA.properties b/arduino-core/src/processing/app/i18n/Resources_fr_CA.properties index 45bd84a0a21..64d1a782f8b 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fr_CA.properties +++ b/arduino-core/src/processing/app/i18n/Resources_fr_CA.properties @@ -17,9 +17,12 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Alexis Morin , 2015 # Alexis Morin , 2012 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: French (Canada) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fr_CA/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fr_CA\nPlural-Forms\: nplurals\=2; plural\=(n > 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: French (Canada) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fr_CA/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fr_CA\nPlural-Forms\: nplurals\=2; plural\=(n > 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (n\u00e9cessite un red\u00e9marrage d'Arduino) @@ -442,6 +445,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Impossible de retirer la vieille versi #, java-format Could\ not\ replace\ {0}=Impossible de remplacer {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Impossible d'archiver le croquis @@ -481,6 +488,9 @@ Decrease\ Indent=R\u00e9duire l'indentation #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=Supprimer @@ -612,6 +622,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Probl\u00e8me d'obtention du dossier #, java-format Error\ inside\ Serial.{0}()=Erreur dans Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -626,6 +640,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Erreur d''ouverture du port s\u00e9rie \u #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 Error\ reading\ preferences=Erreur de lecture des pr\u00e9f\u00e9rences @@ -651,6 +677,9 @@ Error\ while\ burning\ bootloader.=Erreur lors de la gravure de la s\u00e9quence #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -679,9 +708,6 @@ Error\ while\ printing.=Erreur d'impression. #: Preferences.java:93 Estonian=Estonien -#: ../../../processing/app/Preferences.java:146 -!Estonian\ (Estonia)= - #: Editor.java:516 Examples=Exemples @@ -832,8 +858,8 @@ Hungarian=Hongrois #: FindReplace.java:96 Ignore\ Case=Ignorer la casse -#: Base.java:1058 -Ignoring\ bad\ library\ name=Ignore la biblioth\u00e8que mal nomm\u00e9e +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Ignore un croquis mal nomm\u00e9 @@ -877,9 +903,9 @@ Indonesian=Indon\u00e9sien #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -900,6 +926,15 @@ Indonesian=Indon\u00e9sien #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=Italien @@ -924,9 +959,9 @@ Latvian=Letton #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -1239,9 +1274,9 @@ Reference=R\u00e9f\u00e9rence #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1269,6 +1304,9 @@ Replace\ with\:=Remplacer par\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=Roumain @@ -1360,9 +1398,13 @@ Serial\ Monitor=Moniteur s\u00e9rie #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Port s\u00e9rie \u00ab {0} \u00bb non trouv\u00e9. L'avez-vous bien s\u00e9lectionn\u00e9 dans le menu \nOutils > Port s\u00e9rie ? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Port s\u00e9rie {0} introuvable.\nR\u00e9essayer le t\u00e9l\u00e9versement \u00e0 partir d''un autre port s\u00e9rie ? +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1380,6 +1422,9 @@ Settings\ issues=Probl\u00e8mes de param\u00e8tres #: Editor.java:641 Show\ Sketch\ Folder=Afficher le dossier des croquis +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Afficher les r\u00e9sultats d\u00e9taill\u00e9s pendant\: @@ -1499,6 +1544,10 @@ The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=La classe Udp a \u00e9t\u00e9 #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=Le fichier \u00ab {0} \u00bb doit r\u00e9sider dans\nun dossier de croquis nomm\u00e9 \u00ab {1} \u00bb.\nCr\u00e9er ce dossier, d\u00e9placer le fichier et continuer ? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=La biblioth\u00e8que \u00ab {0} \u00bb ne peut \u00eatre utilis\u00e9e.\nLes noms de biblioth\u00e8ques ne doivent contenir que des lettres et des chiffres.\n(ASCII seulement sans espace, et ne peuvent commencer par un chiffre) @@ -1523,8 +1572,8 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Le dossier croquis a disparu.\n Nous allons essayer de r\u00e9-enregistrer au m\u00eame emplacement,\nmais tout sauf le code sera perdu. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=Le dossier des croquis n'existe plus.\nArduino va aller \u00e0 l'emplacement\npar d\u00e9faut, et cr\u00e9er un nouveau dossier\ncroquis si n\u00e9cessaire. Arduino cessera ensuite\nde parler de lui-m\u00eame \u00e0 la troisi\u00e8me personne. @@ -1532,6 +1581,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1866,6 +1918,11 @@ ignoring\ invalid\ font\ size\ {0}=ignore la taille de police invalide {0} #: Editor.java:936 Editor.java:943 name\ is\ null=nom est nul +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=serialMenu est nul @@ -1933,10 +1990,6 @@ upload=t\u00e9l\u00e9versement #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1945,6 +1998,10 @@ upload=t\u00e9l\u00e9versement #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_fy.po b/arduino-core/src/processing/app/i18n/Resources_fy.po index 8695c0c0ef4..28e86e59482 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fy.po +++ b/arduino-core/src/processing/app/i18n/Resources_fy.po @@ -17,14 +17,18 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Robin van der Vliet , 2015 +# Tjipke van der Heide , 2021 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" -"Last-Translator: Cristian Maglie \n" +"PO-Revision-Date: 2021-07-27 14:00+0000\n" +"Last-Translator: Tjipke van der Heide \n" "Language-Team: Western Frisian (http://www.transifex.com/mbanzi/arduino-ide-15/language/fy/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -34,52 +38,52 @@ msgstr "" #: Preferences.java:358 Preferences.java:374 msgid " (requires restart of Arduino)" -msgstr "" +msgstr "(fereasket it opnij starten fan Arduino)" #: ../../../processing/app/debug/Compiler.java:529 #, java-format msgid " Not used: {0}" -msgstr "" +msgstr "Net brûkt: {0}" #: ../../../processing/app/debug/Compiler.java:525 #, java-format msgid " Used: {0}" -msgstr "" +msgstr "Brûkt: {0}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:558 msgid "" "'Keyboard' not found. Does your sketch include the line '#include " "'?" -msgstr "" +msgstr "'Keyboard' net fûn. Ymplemintearret jo skets de rigel '#include '?" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:553 msgid "" "'Mouse' not found. Does your sketch include the line '#include '?" -msgstr "" +msgstr "'Mouse' net fûn. Ymplemintearret jo skets de rigel '#include '?" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:61 msgid "" "'arch' folder is no longer supported! See http://goo.gl/gfFJzU for more " "information" -msgstr "" +msgstr "'arch' folder wurd net langer stipe! Besjoch http://goo.gl/gfFJzU foar mear ynformaasje" #: Preferences.java:478 msgid "(edit only when Arduino is not running)" -msgstr "" +msgstr "(allinnich bewurkje wannear as Arduino net rint)" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 msgid "(legacy)" -msgstr "" +msgstr "(ferâldere)" #: ../../../processing/app/helpers/CommandlineParser.java:149 msgid "--curdir no longer supported" -msgstr "" +msgstr "--curdir wurd net langer stipe" #: ../../../processing/app/Base.java:468 msgid "" "--verbose, --verbose-upload and --verbose-build can only be used together " "with --verify or --upload" -msgstr "" +msgstr "--verbose, --verbose-upload en --verbose-build kinne allinnich tegearre mei --verify of --upload brûkt wurde." #: Sketch.java:746 msgid ".pde -> .ino" @@ -101,18 +105,18 @@ msgstr "" #: Base.java:2690 #, java-format msgid "A library named {0} already exists" -msgstr "" +msgstr "In bibleteek mei de namme {0} bestiet al" #: UpdateCheck.java:103 msgid "" "A new version of Arduino is available,\n" "would you like to visit the Arduino download page?" -msgstr "" +msgstr "In nije ferzje fan Arduino is beskikber,\nwolle jo de webside foar it delheljen fan Arduino besykje?" #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format msgid "A newer {0} package is available" -msgstr "" +msgstr "In nijer {0} pakket is beskikber" #: ../../../../../app/src/processing/app/Base.java:2307 msgid "A subfolder of your sketchbook is not a valid library" @@ -128,11 +132,11 @@ msgstr "" #: ../../../../../app/src/processing/app/Base.java:1177 msgid "Add .ZIP Library..." -msgstr "" +msgstr "In .ZIP Bibleteek tafoegje..." #: Editor.java:650 msgid "Add File..." -msgstr "" +msgstr "Bestân Tafoegje..." #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:73 msgid "Additional Boards Manager URLs" @@ -158,32 +162,32 @@ msgstr "Albaneesk" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownAllCoresItem.java:43 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:187 msgid "All" -msgstr "" +msgstr "Alle" #: tools/FixEncoding.java:77 msgid "" "An error occurred while trying to fix the file encoding.\n" "Do not attempt to save this sketch as it may overwrite\n" "the old version. Use Open to re-open the sketch and try again.\n" -msgstr "" +msgstr "In flater die harren foar wylst probearre weard de kodearring fan it bestân te meitsjen.\nProbearje dizze skets net op te slaan omdat it de âlde ferzje oerskriuwe kin.\nBrûk Iepenje op de skets opnij te iepenjen en probearje it noch ris.\n" #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:99 msgid "An error occurred while updating libraries index!" -msgstr "" +msgstr "In flater die harren foar wylst de bibleteken yndex fernijd weard." #: ../../../processing/app/BaseNoGui.java:528 msgid "An error occurred while uploading the sketch" -msgstr "" +msgstr "In flater die harren foar wylst de skets upload weard." #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 msgid "An error occurred while verifying the sketch" -msgstr "" +msgstr "In flater die harren foar wylst de skets ferifiearre weard." #: ../../../processing/app/BaseNoGui.java:521 msgid "An error occurred while verifying/uploading the sketch" -msgstr "" +msgstr "In flater die harren foar wylst de skets ferifiearre/upload weard" #: Base.java:228 msgid "" @@ -209,7 +213,7 @@ msgstr "Skets argivearje as:" #: tools/Archiver.java:139 msgid "Archive sketch canceled." -msgstr "" +msgstr "Argivearren fan skets annulearre" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format @@ -224,7 +228,7 @@ msgstr "" #: ../../../../../arduino-core/src/processing/app/I18n.java:24 msgid "Arduino" -msgstr "" +msgstr "Arduino" #: ../../../processing/app/I18n.java:83 msgid "Arduino ARM (32-bits) Boards" @@ -238,7 +242,7 @@ msgstr "" msgid "" "Arduino can only open its own sketches\n" "and other files ending in .ino or .pde" -msgstr "" +msgstr "Arduino kin allinnich harren eigen sketsen iepenje\nen oare bestannen mei .ino as .pde op it ein. " #: Base.java:1682 msgid "" @@ -267,25 +271,25 @@ msgstr "" #: ../../../processing/app/Base.java:356 msgid "Argument required for --board" -msgstr "" +msgstr "Argumint nedich foar --board" #: ../../../processing/app/Base.java:363 msgid "Argument required for --port" -msgstr "" +msgstr "Argumint nedich foar --port" #: ../../../processing/app/Base.java:377 msgid "Argument required for --pref" -msgstr "" +msgstr "Argumint nedich foar --pref" #: ../../../processing/app/Base.java:384 msgid "Argument required for --preferences-file" -msgstr "" +msgstr "Argumint nedich foar --preferences-file" #: ../../../processing/app/helpers/CommandlineParser.java:76 #: ../../../processing/app/helpers/CommandlineParser.java:83 #, java-format msgid "Argument required for {0}" -msgstr "" +msgstr "Argumint nedich foar {0}" #: ../../../processing/app/Preferences.java:137 msgid "Armenian" @@ -301,11 +305,11 @@ msgstr "" #: tools/AutoFormat.java:91 msgid "Auto Format" -msgstr "" +msgstr "Automatysk Opmeitsje" #: tools/AutoFormat.java:944 msgid "Auto Format finished." -msgstr "" +msgstr "Klear mei it Automatysk Opmeitsjen." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:457 msgid "Auto-detect proxy settings" @@ -313,7 +317,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:264 msgid "Automatic" -msgstr "" +msgstr "Automatysk" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:474 msgid "Automatic proxy configuration URL:" @@ -330,7 +334,7 @@ msgstr "" #: Editor.java:2136 msgid "Bad file selected" -msgstr "" +msgstr "Ferkeard bestân selektearre" #: ../../../processing/app/Preferences.java:149 msgid "Basque" @@ -343,22 +347,22 @@ msgstr "Wytrussysk" #: ../../../processing/app/Base.java:1433 #: ../../../processing/app/Editor.java:707 msgid "Board" -msgstr "" +msgstr "Board" #: ../../../../../app//src/processing/app/Editor.java:2824 msgid "Board Info" -msgstr "" +msgstr "Ynformaasje oer Board" #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 #, java-format msgid "Board at {0} is not available" -msgstr "" +msgstr "Board op {0} is net beskikber" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:62 #, java-format msgid "Board {0} (platform {1}, package {2}) is unknown" -msgstr "" +msgstr "Board {0} (platfoarm {1}, pakket {2}) is ûnbekend" #: ../../../processing/app/debug/TargetBoard.java:42 #, java-format @@ -369,19 +373,19 @@ msgstr "" #: ../../../processing/app/EditorStatus.java:472 msgid "Board: " -msgstr "" +msgstr "Board:" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 msgid "Boards Manager" -msgstr "" +msgstr "Buorden Behearder" #: ../../../../../app/src/processing/app/Base.java:1320 msgid "Boards Manager..." -msgstr "" +msgstr "Buorden Behearder..." #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:328 msgid "Boards included in this package:" -msgstr "" +msgstr "Buorden gearfoege by dit pakket:" #: ../../../processing/app/debug/Compiler.java:1273 #, java-format @@ -428,7 +432,7 @@ msgstr "" msgid "" "CRC doesn't match, file is corrupted. It may be a temporary problem, please " "retry later." -msgstr "" +msgstr "CRC komt net oerien, bestân is skansearre. Dit kin tydlik wêze, probearje it letter noch ris." #: ../../../processing/app/Base.java:379 #, java-format @@ -437,7 +441,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 msgid "Can't enable external editor" -msgstr "" +msgstr "Kin eksterne bewurker net ynskeakelje" #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 @@ -503,11 +507,11 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 msgid "Compiler warnings: " -msgstr "" +msgstr "Kompilearder warskôgingen:" #: Sketch.java:1608 Editor.java:1890 msgid "Compiling sketch..." -msgstr "" +msgstr "Skets kompilearje... " #: ../../../../../arduino-core/src/processing/app/I18n.java:27 msgid "Contributed" @@ -523,7 +527,7 @@ msgstr "Kopiearje as HTML" #: ../../../processing/app/EditorStatus.java:455 msgid "Copy error messages" -msgstr "" +msgstr "Flater berjochten kopiearre" #: Editor.java:1165 Editor.java:2715 msgid "Copy for Forum" @@ -549,17 +553,17 @@ msgstr "" #: Editor.java:2206 msgid "Could not create the sketch." -msgstr "" +msgstr "Koe de skets net oanmeitsje." #: Sketch.java:617 #, java-format msgid "Could not delete \"{0}\"." -msgstr "" +msgstr "Koe \"{0}\" net fuortsmite." #: Sketch.java:1066 #, java-format msgid "Could not delete the existing ''{0}'' file." -msgstr "" +msgstr "Koe it besteande \"{0}\" bestân net fuortsmite." #: ../../../processing/app/debug/TargetPlatform.java:74 #, java-format @@ -581,7 +585,7 @@ msgstr "" msgid "" "Could not open the URL\n" "{0}" -msgstr "" +msgstr "Koe de URL net iepenje\n{0}" #: Base.java:1958 #, java-format @@ -622,6 +626,11 @@ msgstr "" msgid "Could not replace {0}" msgstr "" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Koe foarkar bestân net fuort skriuwe: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "" @@ -677,6 +686,10 @@ msgstr "" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Fuortsmite" @@ -701,7 +714,7 @@ msgstr "" #: ../../../processing/app/Preferences.java:438 msgid "Display line numbers" -msgstr "" +msgstr "Rigel nûmers sjen litte" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:195 #, java-format @@ -712,11 +725,11 @@ msgstr "" #: Editor.java:2064 msgid "Don't Save" -msgstr "" +msgstr "Net Opslaan" #: Editor.java:2275 Editor.java:2311 msgid "Done Saving." -msgstr "" +msgstr "Klear mei Opslaan." #: Editor.java:2510 msgid "Done burning bootloader." @@ -725,23 +738,23 @@ msgstr "" #: ../../../processing/app/BaseNoGui.java:507 #: ../../../processing/app/BaseNoGui.java:552 msgid "Done compiling" -msgstr "" +msgstr "Klear mei kompilearjen" #: Editor.java:1911 Editor.java:1928 msgid "Done compiling." -msgstr "" +msgstr "Klear mei kompilearjen. " #: Editor.java:2564 msgid "Done printing." -msgstr "" +msgstr "Klear mei ôfdrukken." #: ../../../processing/app/BaseNoGui.java:514 msgid "Done uploading" -msgstr "" +msgstr "Klear mei uploaden" #: Editor.java:2395 Editor.java:2431 msgid "Done uploading." -msgstr "" +msgstr "Klear mei uploaden." #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:105 #, java-format @@ -768,7 +781,7 @@ msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:113 #, java-format msgid "Downloading tools ({0}/{1})." -msgstr "" +msgstr "Ark delhelje ({0}/{1})." #: Preferences.java:91 msgid "Dutch" @@ -809,11 +822,11 @@ msgstr "Ingelsk (Feriene Keninkryk)" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:269 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:271 msgid "Enter a comma separated list of urls" -msgstr "" +msgstr "In mei komma's skieden list mei urls ynfiere" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:96 msgid "Enter additional URLs, one for each row" -msgstr "" +msgstr "Addisjonele URLs tafoegje, ien foar elke rigel" #: Editor.java:1062 msgid "Environment" @@ -827,21 +840,21 @@ msgstr "Flater" #: Sketch.java:1065 Sketch.java:1088 msgid "Error adding file" -msgstr "" +msgstr "Koe bestân net tafoegje" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:272 #, java-format msgid "Error compiling for board {0}." -msgstr "" +msgstr "Flater by it kompilearjen foar board {0}." #: debug/Compiler.java:369 msgid "Error compiling." -msgstr "" +msgstr "Flater by it kompilearjen. " #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:113 #, java-format msgid "Error downloading {0}" -msgstr "" +msgstr "Flater by delheljen fan {0}" #: Base.java:1674 msgid "Error getting the Arduino data folder." @@ -852,17 +865,22 @@ msgstr "" msgid "Error inside Serial.{0}()" msgstr "Flater yn Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Flater by it laden fan tema {0}: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 #, java-format msgid "Error loading {0}" -msgstr "" +msgstr "Flater by it laden fan {0}" #: Serial.java:181 #, java-format msgid "Error opening serial port ''{0}''." -msgstr "" +msgstr "Flater by iepenjen fan seriële poarte \"{0}\"" #: ../../../processing/app/Serial.java:119 #, java-format @@ -871,16 +889,35 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" -msgstr "" +msgstr "Flater by lêzen fan foarkarren" #: Preferences.java:279 #, java-format msgid "" "Error reading the preferences file. Please delete (or move)\n" "{0} and restart Arduino." -msgstr "" +msgstr "Flater by it lêzen fan it foarkar bestân. Graach \n{0} fuortsmite (of ferpleatse) en Arduino opnij starte." #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:146 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:166 @@ -905,13 +942,17 @@ msgstr "" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" -msgstr "" +msgstr "Flater by it kompilearjen: it '{0}' konfiguraasje argumint mist" #: Editor.java:2567 msgid "Error while printing." -msgstr "" +msgstr "Flater tidens it ôfdrukken." #: ../../../../../arduino-core/src/processing/app/Serial.java:117 #, java-format @@ -920,7 +961,7 @@ msgstr "" #: ../../../processing/app/BaseNoGui.java:528 msgid "Error while uploading" -msgstr "" +msgstr "Flater tidens uploaden" #: ../../../processing/app/Editor.java:2409 #: ../../../processing/app/Editor.java:2449 @@ -935,16 +976,12 @@ msgstr "" #: ../../../processing/app/BaseNoGui.java:521 msgid "Error while verifying/uploading" -msgstr "" +msgstr "Flater tidens it ferifiearren/uploaden" #: Preferences.java:93 msgid "Estonian" msgstr "Estysk" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estysk (Estlân)" - #: Editor.java:516 msgid "Examples" msgstr "Foarbylden" @@ -969,16 +1006,16 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:753 msgid "Export canceled, changes must first be saved." -msgstr "" +msgstr "Eksportearren annulearre, feroaringen moat earst opslein wurde." #: ../../../../../app/src/processing/app/Editor.java:750 msgid "Export compiled Binary" -msgstr "" +msgstr "Kompilearre binêre bestân eksportearre." #: ../../../processing/app/Base.java:416 #, java-format msgid "Failed to open sketch: \"{0}\"" -msgstr "" +msgstr "Koe de skets net iepenje: \"{0}\"" #: ../../../../../arduino-core/src/processing/app/SketchFile.java:183 #, java-format @@ -991,12 +1028,12 @@ msgstr "" #: Editor.java:491 msgid "File" -msgstr "" +msgstr "Bestân" #: ../../../../../arduino-core/src/processing/app/SketchData.java:139 #, java-format msgid "File name {0} is invalid: ignored" -msgstr "" +msgstr "Namme fan it bestân {0} is net jildich: negeare" #: Preferences.java:94 msgid "Filipino" @@ -1080,7 +1117,7 @@ msgstr "Dútsk" #: ../../../../../app//src/processing/app/Editor.java:817 msgid "Get Board Info" -msgstr "" +msgstr "Board Ynformaasje Ophelje" #: Editor.java:1054 msgid "Getting Started" @@ -1100,11 +1137,11 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:66 msgid "Go to line" -msgstr "" +msgstr "Gean nei rigel" #: ../../../../../app/src/processing/app/Editor.java:1460 msgid "Go to line..." -msgstr "" +msgstr "Gean nei rigel..." #: Preferences.java:98 msgid "Greek" @@ -1148,8 +1185,8 @@ msgstr "" msgid "Ignore Case" msgstr "" -#: Base.java:1058 -msgid "Ignoring bad library name" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" msgstr "" #: Base.java:1436 @@ -1169,7 +1206,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:778 msgid "Include Library" -msgstr "" +msgstr "Bibleteek Ymplemintearje" #: ../../../processing/app/BaseNoGui.java:768 #: ../../../processing/app/BaseNoGui.java:771 @@ -1199,23 +1236,23 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:91 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:303 msgid "Install" -msgstr "" +msgstr "Ynstallearje" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:170 msgid "Installation completed!" -msgstr "" +msgstr "Ynstallaasje slagge!" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java:50 msgid "Installed" -msgstr "" +msgstr "Ynstallearre" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1226,7 +1263,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:239 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:172 msgid "Installing..." -msgstr "" +msgstr "Oan it ynstallearren..." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:256 msgid "Interface scale:" @@ -1242,6 +1279,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "Italjaansk" @@ -1274,14 +1322,14 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" -msgstr "" +msgstr "Rigel nûmer:" #: Preferences.java:106 msgid "Lithuaninan" @@ -1314,7 +1362,7 @@ msgstr "" #: Base.java:2112 msgid "Message" -msgstr "" +msgstr "Berjocht" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:81 #, java-format @@ -1327,7 +1375,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:186 msgid "More" -msgstr "" +msgstr "Mear" #: Preferences.java:449 msgid "More preferences can be edited directly in the file" @@ -1352,7 +1400,7 @@ msgstr "" #: Sketch.java:282 msgid "Name for new file:" -msgstr "" +msgstr "Namme foar nij bestân:" #: ../../../../../app//src/processing/app/Editor.java:2809 msgid "Native serial port, can't obtain info" @@ -1400,11 +1448,11 @@ msgstr "Nee" #: ../../../processing/app/debug/Compiler.java:158 msgid "No authorization data found" -msgstr "" +msgstr "Gjin autorisaasje gegevens fûn" #: tools/format/src/AutoFormat.java:54 tools/AutoFormat.java:916 msgid "No changes necessary for Auto Format." -msgstr "" +msgstr "Gjin feroaringen nedich foar Automatysk Opmeitsjen." #: ../../../processing/app/BaseNoGui.java:665 msgid "No command line parameters found" @@ -1412,7 +1460,7 @@ msgstr "" #: ../../../processing/app/debug/Compiler.java:200 msgid "No compiled sketch found" -msgstr "" +msgstr "Gjin kompilearre skets fûn" #: Editor.java:373 msgid "No files were added to the sketch." @@ -1432,7 +1480,7 @@ msgstr "Gjin parameters" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:453 msgid "No proxy" -msgstr "" +msgstr "Gjin proksje" #: Base.java:541 msgid "No really, time for some fresh air for you." @@ -1502,7 +1550,7 @@ msgstr "URL iepenje" #: Base.java:636 msgid "Open an Arduino sketch..." -msgstr "" +msgstr "In Arduino skets iepenje..." #: Base.java:903 Editor.java:501 msgid "Open..." @@ -1526,7 +1574,7 @@ msgstr "Wachtwurd:" #: Editor.java:1189 Editor.java:2731 msgid "Paste" -msgstr "" +msgstr "Plakke" #: Preferences.java:109 msgid "Persian" @@ -1559,7 +1607,7 @@ msgstr "" #: ../../../../../app//src/processing/app/Editor.java:2799 msgid "Please select a port to obtain board info" -msgstr "" +msgstr "Graach in poarte selektearje om board ynformaasje te krijen" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 @@ -1580,7 +1628,7 @@ msgstr "Poarte" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:491 msgid "Port number:" -msgstr "" +msgstr "Poarte nûmer:" #: ../../../processing/app/Preferences.java:151 msgid "Portugese" @@ -1600,7 +1648,7 @@ msgstr "Foarkarren" #: ../../../../../app/src/processing/app/Base.java:297 msgid "Preparing boards..." -msgstr "" +msgstr "Buorden tariede..." #: FindReplace.java:123 FindReplace.java:128 msgid "Previous" @@ -1612,15 +1660,15 @@ msgstr "Foarige ljepblêd" #: Editor.java:571 msgid "Print" -msgstr "" +msgstr "Ôfdrukke " #: Editor.java:2571 msgid "Printing canceled." -msgstr "" +msgstr "Ôfdrukken annulearre" #: Editor.java:2547 msgid "Printing..." -msgstr "" +msgstr "Oan it ôfdrukken..." #: Base.java:1957 msgid "Problem Opening Folder" @@ -1663,7 +1711,7 @@ msgstr "Prosessor" #: Editor.java:704 msgid "Programmer" -msgstr "" +msgstr "Programmearder " #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:80 #, java-format @@ -1672,7 +1720,7 @@ msgstr "" #: Base.java:783 Editor.java:593 msgid "Quit" -msgstr "" +msgstr "Ôfslute" #: ../../../../../app/src/processing/app/Base.java:1233 msgid "RETIRED" @@ -1680,7 +1728,7 @@ msgstr "" #: ../../../../../arduino-core/src/processing/app/I18n.java:26 msgid "Recommended" -msgstr "" +msgstr "Oanrekommandearre" #: Editor.java:1138 Editor.java:1140 Editor.java:1390 msgid "Redo" @@ -1694,9 +1742,9 @@ msgstr "Neislachwurk" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1718,21 +1766,25 @@ msgstr "Sykje en ferfange" #: FindReplace.java:120 FindReplace.java:131 msgid "Replace All" -msgstr "" +msgstr "Alles ferfange" #: Sketch.java:1043 #, java-format msgid "Replace the existing version of {0}?" -msgstr "" +msgstr "De besteande ferzje fan {0} ferfange?" #: FindReplace.java:81 msgid "Replace with:" -msgstr "" +msgstr "Ferfange mei:" #: ../../../../../arduino-core/src/processing/app/I18n.java:28 msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "Roemeensk" @@ -1754,20 +1806,20 @@ msgstr "Russysk" #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:529 #: Editor.java:2064 Editor.java:2468 msgid "Save" -msgstr "" +msgstr "Opslaan" #: Editor.java:537 msgid "Save As..." -msgstr "" +msgstr "Opslaan As..." #: Editor.java:2317 msgid "Save Canceled." -msgstr "" +msgstr "Opslaan Annulearre." #: Editor.java:2020 #, java-format msgid "Save changes to \"{0}\"? " -msgstr "" +msgstr "Feroaringen opslaan nei \"{0}\"?" #: Sketch.java:825 msgid "Save sketch folder as..." @@ -1779,7 +1831,7 @@ msgstr "" #: Editor.java:2270 Editor.java:2308 msgid "Saving..." -msgstr "" +msgstr "Oan it opslaan..." #: ../../../processing/app/FindReplace.java:131 msgid "Search all Sketch Tabs" @@ -1791,7 +1843,7 @@ msgstr "" #: Editor.java:1198 Editor.java:2739 msgid "Select All" -msgstr "" +msgstr "Alles Selektearje" #: Base.java:2636 msgid "Select a zip file or a folder containing the library you'd like to add" @@ -1803,12 +1855,12 @@ msgstr "" #: Preferences.java:330 msgid "Select new sketchbook location" -msgstr "" +msgstr "Nije sketsboek lokaasje selektearje" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:237 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:249 msgid "Select version" -msgstr "" +msgstr "Ferzje selektearre" #: ../../../processing/app/debug/Compiler.java:146 msgid "Selected board depends on '{0}' core (not installed)." @@ -1816,7 +1868,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Base.java:374 msgid "Selected board is not available" -msgstr "" +msgstr "Selektearre board is net beskikber" #: ../../../../../app/src/processing/app/Base.java:423 msgid "Selected library is not available" @@ -1828,7 +1880,7 @@ msgstr "Ferstjoere" #: ../../../../../arduino-core/src/processing/app/I18n.java:32 msgid "Sensors" -msgstr "" +msgstr "Sensoaren" #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:669 msgid "Serial Monitor" @@ -1856,12 +1908,15 @@ msgid "" " Serial Port menu?" msgstr "" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Seriële poarte net selektearre." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "" +msgid "Serial port {0} not found." +msgstr "Seriële poarte {0} net fûn." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1874,7 +1929,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:450 msgid "Settings" -msgstr "" +msgstr "Ynstellings " #: Base.java:1681 msgid "Settings issues" @@ -1884,6 +1939,10 @@ msgstr "" msgid "Show Sketch Folder" msgstr "" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "" @@ -1898,23 +1957,23 @@ msgstr "Skets" #: Sketch.java:1754 msgid "Sketch Disappeared" -msgstr "" +msgstr "Skets Ferdwûn" #: Base.java:1411 msgid "Sketch Does Not Exist" -msgstr "" +msgstr "Skets Bestiet Net" #: Sketch.java:274 Sketch.java:303 Sketch.java:577 Sketch.java:966 msgid "Sketch is Read-Only" -msgstr "" +msgstr "Skets is Allinnich-Lêze" #: Sketch.java:294 msgid "Sketch is Untitled" -msgstr "" +msgstr "Skets is Namleas" #: Sketch.java:720 msgid "Sketch is read-only" -msgstr "" +msgstr "Skets is Allinnich-Lêze" #: Sketch.java:1653 msgid "" @@ -1986,7 +2045,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Base.java:466 msgid "Starting..." -msgstr "" +msgstr "Oan it starten..." #: Base.java:540 msgid "Sunshine" @@ -2055,6 +2114,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2065,7 +2132,7 @@ msgstr "" #: ../../../../../app/src/processing/app/SketchController.java:170 msgid "The main file cannot use an extension" -msgstr "" +msgstr "It haad bestân kin gjin taheaksel brûke" #: Sketch.java:356 msgid "The name cannot start with a period." @@ -2100,10 +2167,11 @@ msgid "" "but anything besides the code will be lost." msgstr "" -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2121,6 +2189,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Tema" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2136,7 +2208,7 @@ msgstr "" #: Base.java:535 msgid "Time for a Break" -msgstr "" +msgstr "Tiid foar Skoft" #: ../../../../../arduino-core/src/processing/app/I18n.java:34 msgid "Timing" @@ -2149,11 +2221,11 @@ msgstr "" #: Editor.java:663 msgid "Tools" -msgstr "" +msgstr "Ark" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:97 msgid "Topic" -msgstr "" +msgstr "Ûnderwerp " #: Editor.java:1070 msgid "Troubleshooting" @@ -2183,7 +2255,7 @@ msgstr "Ukraynsk" #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:142 #, java-format msgid "Unable to connect to {0}" -msgstr "" +msgstr "Kin net ferbine mei {0}" #: ../../../processing/app/Editor.java:2524 #: ../../../processing/app/NetworkMonitor.java:145 @@ -2192,7 +2264,7 @@ msgstr "" #: ../../../processing/app/NetworkMonitor.java:130 msgid "Unable to connect: retrying" -msgstr "" +msgstr "Kin net ferbine: noch ris oan it probearjen" #: ../../../processing/app/Editor.java:2526 msgid "Unable to connect: wrong password?" @@ -2231,7 +2303,7 @@ msgstr "" #: ../../../../../app//src/processing/app/Editor.java:2818 msgid "Unknown board" -msgstr "" +msgstr "Ûnbekend board " #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format @@ -2248,11 +2320,11 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownUpdatableLibrariesItem.java:27 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownUpdatableCoresItem.java:27 msgid "Updatable" -msgstr "" +msgstr "Fernijber" #: UpdateCheck.java:111 msgid "Update" -msgstr "" +msgstr "Fernije" #: Preferences.java:428 msgid "Update sketch files to new extension on save (.pde -> .ino)" @@ -2331,7 +2403,7 @@ msgstr "" #: ../../../processing/app/debug/Compiler.java:320 #, java-format msgid "Using previously compiled file: {0}" -msgstr "" +msgstr "In earder kompilearre bestân wurd brûkt: {0}" #: EditorToolbar.java:41 EditorToolbar.java:46 msgid "Verify" @@ -2343,7 +2415,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:725 msgid "Verify/Compile" -msgstr "" +msgstr "Ferifiearre/Oersette" #: ../../../../../app/src/processing/app/Base.java:451 msgid "Verifying and uploading..." @@ -2377,7 +2449,7 @@ msgstr "Fjetnameesk" #: Editor.java:1105 msgid "Visit Arduino.cc" -msgstr "" +msgstr "Arduino.cc besykje" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:90 #, java-format @@ -2590,7 +2662,7 @@ msgstr "kompilaasje" #: ../../../processing/app/NetworkMonitor.java:111 msgid "connected!" -msgstr "" +msgstr "ferbûn!" #: ../../../../../app/src/processing/app/Editor.java:1352 msgid "http://www.arduino.cc/" @@ -2611,6 +2683,12 @@ msgstr "" #: Editor.java:936 Editor.java:943 msgid "name is null" +msgstr "namme is null" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" msgstr "" #: Editor.java:932 @@ -2700,11 +2778,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2715,20 +2788,25 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" -msgstr "" +msgstr "{0}: Ûnbekende arsjitektuer" #: ../../../processing/app/Base.java:491 #, java-format msgid "{0}: Unknown board" -msgstr "" +msgstr "{0}: Ûnbekend board" #: ../../../processing/app/Base.java:481 #, java-format msgid "{0}: Unknown package" -msgstr "" +msgstr "{0}: Ûnbekend pakket" #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format diff --git a/arduino-core/src/processing/app/i18n/Resources_fy.properties b/arduino-core/src/processing/app/i18n/Resources_fy.properties index 22876aa0aeb..f0a92888027 100644 --- a/arduino-core/src/processing/app/i18n/Resources_fy.properties +++ b/arduino-core/src/processing/app/i18n/Resources_fy.properties @@ -17,40 +17,44 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Robin van der Vliet , 2015 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Western Frisian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fy/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fy\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +# Tjipke van der Heide , 2021 +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2021-07-27 14\:00+0000\nLast-Translator\: Tjipke van der Heide \nLanguage-Team\: Western Frisian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/fy/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: fy\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 -!\ \ (requires\ restart\ of\ Arduino)= +\ \ (requires\ restart\ of\ Arduino)=(fereasket it opnij starten fan Arduino) #: ../../../processing/app/debug/Compiler.java:529 #, java-format -!\ Not\ used\:\ {0}= +\ Not\ used\:\ {0}=Net br\u00fbkt\: {0} #: ../../../processing/app/debug/Compiler.java:525 #, java-format -!\ Used\:\ {0}= +\ Used\:\ {0}=Br\u00fbkt\: {0} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:558 -!'Keyboard'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?= +'Keyboard'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?='Keyboard' net f\u00fbn. Ymplemintearret jo skets de rigel '\#include '? #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:553 -!'Mouse'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?= +'Mouse'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?='Mouse' net f\u00fbn. Ymplemintearret jo skets de rigel '\#include '? #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:61 -!'arch'\ folder\ is\ no\ longer\ supported\!\ See\ http\://goo.gl/gfFJzU\ for\ more\ information= +'arch'\ folder\ is\ no\ longer\ supported\!\ See\ http\://goo.gl/gfFJzU\ for\ more\ information='arch' folder wurd net langer stipe\! Besjoch http\://goo.gl/gfFJzU foar mear ynformaasje #: Preferences.java:478 -!(edit\ only\ when\ Arduino\ is\ not\ running)= +(edit\ only\ when\ Arduino\ is\ not\ running)=(allinnich bewurkje wannear as Arduino net rint) #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 -!(legacy)= +(legacy)=(fer\u00e2ldere) #: ../../../processing/app/helpers/CommandlineParser.java:149 -!--curdir\ no\ longer\ supported= +--curdir\ no\ longer\ supported=--curdir wurd net langer stipe #: ../../../processing/app/Base.java:468 -!--verbose,\ --verbose-upload\ and\ --verbose-build\ can\ only\ be\ used\ together\ with\ --verify\ or\ --upload= +--verbose,\ --verbose-upload\ and\ --verbose-build\ can\ only\ be\ used\ together\ with\ --verify\ or\ --upload=--verbose, --verbose-upload en --verbose-build kinne allinnich tegearre mei --verify of --upload br\u00fbkt wurde. #: Sketch.java:746 .pde\ ->\ .ino=.pde -> .ino @@ -64,14 +68,14 @@ #: Base.java:2690 #, java-format -!A\ library\ named\ {0}\ already\ exists= +A\ library\ named\ {0}\ already\ exists=In bibleteek mei de namme {0} bestiet al #: UpdateCheck.java:103 -!A\ new\ version\ of\ Arduino\ is\ available,\nwould\ you\ like\ to\ visit\ the\ Arduino\ download\ page?= +A\ new\ version\ of\ Arduino\ is\ available,\nwould\ you\ like\ to\ visit\ the\ Arduino\ download\ page?=In nije ferzje fan Arduino is beskikber,\nwolle jo de webside foar it delheljen fan Arduino besykje? #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format -!A\ newer\ {0}\ package\ is\ available= +A\ newer\ {0}\ package\ is\ available=In nijer {0} pakket is beskikber #: ../../../../../app/src/processing/app/Base.java:2307 !A\ subfolder\ of\ your\ sketchbook\ is\ not\ a\ valid\ library= @@ -83,10 +87,10 @@ About\ Arduino=Oer Arduino !Acoli= #: ../../../../../app/src/processing/app/Base.java:1177 -!Add\ .ZIP\ Library...= +Add\ .ZIP\ Library...=In .ZIP Bibleteek tafoegje... #: Editor.java:650 -!Add\ File...= +Add\ File...=Best\u00e2n Tafoegje... #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:73 !Additional\ Boards\ Manager\ URLs= @@ -106,24 +110,24 @@ Albanian=Albaneesk #: ../../../../../app/src/cc/arduino/contributions/ui/DropdownAllItem.java:42 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownAllCoresItem.java:43 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:187 -!All= +All=Alle #: tools/FixEncoding.java:77 -!An\ error\ occurred\ while\ trying\ to\ fix\ the\ file\ encoding.\nDo\ not\ attempt\ to\ save\ this\ sketch\ as\ it\ may\ overwrite\nthe\ old\ version.\ Use\ Open\ to\ re-open\ the\ sketch\ and\ try\ again.\n= +An\ error\ occurred\ while\ trying\ to\ fix\ the\ file\ encoding.\nDo\ not\ attempt\ to\ save\ this\ sketch\ as\ it\ may\ overwrite\nthe\ old\ version.\ Use\ Open\ to\ re-open\ the\ sketch\ and\ try\ again.\n=In flater die harren foar wylst probearre weard de kodearring fan it best\u00e2n te meitsjen.\nProbearje dizze skets net op te slaan omdat it de \u00e2lde ferzje oerskriuwe kin.\nBr\u00fbk Iepenje op de skets opnij te iepenjen en probearje it noch ris.\n #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:99 -!An\ error\ occurred\ while\ updating\ libraries\ index\!= +An\ error\ occurred\ while\ updating\ libraries\ index\!=In flater die harren foar wylst de bibleteken yndex fernijd weard. #: ../../../processing/app/BaseNoGui.java:528 -!An\ error\ occurred\ while\ uploading\ the\ sketch= +An\ error\ occurred\ while\ uploading\ the\ sketch=In flater die harren foar wylst de skets upload weard. #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 -!An\ error\ occurred\ while\ verifying\ the\ sketch= +An\ error\ occurred\ while\ verifying\ the\ sketch=In flater die harren foar wylst de skets ferifiearre weard. #: ../../../processing/app/BaseNoGui.java:521 -!An\ error\ occurred\ while\ verifying/uploading\ the\ sketch= +An\ error\ occurred\ while\ verifying/uploading\ the\ sketch=In flater die harren foar wylst de skets ferifiearre/upload weard #: Base.java:228 !An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ for\ your\ machine.= @@ -141,7 +145,7 @@ Archive\ Sketch=Skets argivearje Archive\ sketch\ as\:=Skets argivearje as\: #: tools/Archiver.java:139 -!Archive\ sketch\ canceled.= +Archive\ sketch\ canceled.=Argivearren fan skets annulearre #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format @@ -151,7 +155,7 @@ Archive\ sketch\ as\:=Skets argivearje as\: !Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.= #: ../../../../../arduino-core/src/processing/app/I18n.java:24 -!Arduino= +Arduino=Arduino #: ../../../processing/app/I18n.java:83 !Arduino\ ARM\ (32-bits)\ Boards= @@ -160,7 +164,7 @@ Archive\ sketch\ as\:=Skets argivearje as\: !Arduino\ AVR\ Boards= #: Editor.java:2137 -!Arduino\ can\ only\ open\ its\ own\ sketches\nand\ other\ files\ ending\ in\ .ino\ or\ .pde= +Arduino\ can\ only\ open\ its\ own\ sketches\nand\ other\ files\ ending\ in\ .ino\ or\ .pde=Arduino kin allinnich harren eigen sketsen iepenje\nen oare bestannen mei .ino as .pde op it ein. #: Base.java:1682 !Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ settings.= @@ -179,21 +183,21 @@ Arduino\:\ =Arduino\: !Are\ you\ sure\ you\ want\ to\ delete\ this\ sketch?= #: ../../../processing/app/Base.java:356 -!Argument\ required\ for\ --board= +Argument\ required\ for\ --board=Argumint nedich foar --board #: ../../../processing/app/Base.java:363 -!Argument\ required\ for\ --port= +Argument\ required\ for\ --port=Argumint nedich foar --port #: ../../../processing/app/Base.java:377 -!Argument\ required\ for\ --pref= +Argument\ required\ for\ --pref=Argumint nedich foar --pref #: ../../../processing/app/Base.java:384 -!Argument\ required\ for\ --preferences-file= +Argument\ required\ for\ --preferences-file=Argumint nedich foar --preferences-file #: ../../../processing/app/helpers/CommandlineParser.java:76 #: ../../../processing/app/helpers/CommandlineParser.java:83 #, java-format -!Argument\ required\ for\ {0}= +Argument\ required\ for\ {0}=Argumint nedich foar {0} #: ../../../processing/app/Preferences.java:137 Armenian=Armeensk @@ -205,16 +209,16 @@ Asturian=Asturysk !Authorization\ required= #: tools/AutoFormat.java:91 -!Auto\ Format= +Auto\ Format=Automatysk Opmeitsje #: tools/AutoFormat.java:944 -!Auto\ Format\ finished.= +Auto\ Format\ finished.=Klear mei it Automatysk Opmeitsjen. #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:457 !Auto-detect\ proxy\ settings= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:264 -!Automatic= +Automatic=Automatysk #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:474 !Automatic\ proxy\ configuration\ URL\:= @@ -227,7 +231,7 @@ Asturian=Asturysk !Bad\ error\ line\:\ {0}= #: Editor.java:2136 -!Bad\ file\ selected= +Bad\ file\ selected=Ferkeard best\u00e2n selektearre #: ../../../processing/app/Preferences.java:149 Basque=Baskysk @@ -237,35 +241,35 @@ Belarusian=Wytrussysk #: ../../../processing/app/Base.java:1433 #: ../../../processing/app/Editor.java:707 -!Board= +Board=Board #: ../../../../../app//src/processing/app/Editor.java:2824 -!Board\ Info= +Board\ Info=Ynformaasje oer Board #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 #, java-format -!Board\ at\ {0}\ is\ not\ available= +Board\ at\ {0}\ is\ not\ available=Board op {0} is net beskikber #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:62 #, java-format -!Board\ {0}\ (platform\ {1},\ package\ {2})\ is\ unknown= +Board\ {0}\ (platform\ {1},\ package\ {2})\ is\ unknown=Board {0} (platfoarm {1}, pakket {2}) is \u00fbnbekend #: ../../../processing/app/debug/TargetBoard.java:42 #, java-format !Board\ {0}\:{1}\:{2}\ doesn''t\ define\ a\ ''build.board''\ preference.\ Auto-set\ to\:\ {3}= #: ../../../processing/app/EditorStatus.java:472 -!Board\:\ = +Board\:\ =Board\: #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 -!Boards\ Manager= +Boards\ Manager=Buorden Behearder #: ../../../../../app/src/processing/app/Base.java:1320 -!Boards\ Manager...= +Boards\ Manager...=Buorden Behearder... #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:328 -!Boards\ included\ in\ this\ package\:= +Boards\ included\ in\ this\ package\:=Buorden gearfoege by dit pakket\: #: ../../../processing/app/debug/Compiler.java:1273 #, java-format @@ -299,14 +303,14 @@ Burmese\ (Myanmar)=Birmaansk (Myanmar) !Burning\ bootloader\ to\ I/O\ Board\ (this\ may\ take\ a\ minute)...= #: ../../../../../arduino-core/src/cc/arduino/contributions/DownloadableContributionsDownloader.java:91 -!CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.= +CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.=CRC komt net oerien, best\u00e2n is skansearre. Dit kin tydlik w\u00eaze, probearje it letter noch ris. #: ../../../processing/app/Base.java:379 #, java-format !Can\ only\ pass\ one\ of\:\ {0}= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 -!Can't\ enable\ external\ editor= +Can't\ enable\ external\ editor=Kin eksterne bewurker net ynskeakelje #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 @@ -356,10 +360,10 @@ Close=Slute !Communication= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 -!Compiler\ warnings\:\ = +Compiler\ warnings\:\ =Kompilearder warsk\u00f4gingen\: #: Sketch.java:1608 Editor.java:1890 -!Compiling\ sketch...= +Compiling\ sketch...=Skets kompilearje... #: ../../../../../arduino-core/src/processing/app/I18n.java:27 !Contributed= @@ -371,7 +375,7 @@ Copy=Kopiearje Copy\ as\ HTML=Kopiearje as HTML #: ../../../processing/app/EditorStatus.java:455 -!Copy\ error\ messages= +Copy\ error\ messages=Flater berjochten kopiearre #: Editor.java:1165 Editor.java:2715 !Copy\ for\ Forum= @@ -391,15 +395,15 @@ Copy\ as\ HTML=Kopiearje as HTML !Could\ not\ create\ the\ sketch\ folder.= #: Editor.java:2206 -!Could\ not\ create\ the\ sketch.= +Could\ not\ create\ the\ sketch.=Koe de skets net oanmeitsje. #: Sketch.java:617 #, java-format -!Could\ not\ delete\ "{0}".= +Could\ not\ delete\ "{0}".=Koe "{0}" net fuortsmite. #: Sketch.java:1066 #, java-format -!Could\ not\ delete\ the\ existing\ ''{0}''\ file.= +Could\ not\ delete\ the\ existing\ ''{0}''\ file.=Koe it besteande "{0}" best\u00e2n net fuortsmite. #: ../../../processing/app/debug/TargetPlatform.java:74 #, java-format @@ -415,7 +419,7 @@ Copy\ as\ HTML=Kopiearje as HTML #: Base.java:1934 #, java-format -!Could\ not\ open\ the\ URL\n{0}= +Could\ not\ open\ the\ URL\n{0}=Koe de URL net iepenje\n{0} #: Base.java:1958 #, java-format @@ -441,6 +445,10 @@ Copy\ as\ HTML=Kopiearje as HTML #, java-format !Could\ not\ replace\ {0}= +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=Koe foarkar best\u00e2n net fuort skriuwe\: {0} + #: tools/Archiver.java:74 !Couldn't\ archive\ sketch= @@ -480,6 +488,9 @@ Danish\ (Denmark)=Deensk (Denemark) #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=Fuortsmite @@ -496,36 +507,36 @@ Delete=Fuortsmite !Display= #: ../../../processing/app/Preferences.java:438 -!Display\ line\ numbers= +Display\ line\ numbers=Rigel n\u00fbmers sjen litte #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:195 #, java-format !Do\ you\ want\ to\ remove\ {0}?\nIf\ you\ do\ so\ you\ won't\ be\ able\ to\ use\ {0}\ any\ more.= #: Editor.java:2064 -!Don't\ Save= +Don't\ Save=Net Opslaan #: Editor.java:2275 Editor.java:2311 -!Done\ Saving.= +Done\ Saving.=Klear mei Opslaan. #: Editor.java:2510 !Done\ burning\ bootloader.= #: ../../../processing/app/BaseNoGui.java:507 #: ../../../processing/app/BaseNoGui.java:552 -!Done\ compiling= +Done\ compiling=Klear mei kompilearjen #: Editor.java:1911 Editor.java:1928 -!Done\ compiling.= +Done\ compiling.=Klear mei kompilearjen. #: Editor.java:2564 -!Done\ printing.= +Done\ printing.=Klear mei \u00f4fdrukken. #: ../../../processing/app/BaseNoGui.java:514 -!Done\ uploading= +Done\ uploading=Klear mei uploaden #: Editor.java:2395 Editor.java:2431 -!Done\ uploading.= +Done\ uploading.=Klear mei uploaden. #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:105 #, java-format @@ -546,7 +557,7 @@ Delete=Fuortsmite #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:113 #, java-format -!Downloading\ tools\ ({0}/{1}).= +Downloading\ tools\ ({0}/{1}).=Ark delhelje ({0}/{1}). #: Preferences.java:91 Dutch=Nederl\u00e2nsk @@ -577,10 +588,10 @@ English\ (United\ Kingdom)=Ingelsk (Feriene Keninkryk) #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:269 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:271 -!Enter\ a\ comma\ separated\ list\ of\ urls= +Enter\ a\ comma\ separated\ list\ of\ urls=In mei komma's skieden list mei urls ynfiere #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:96 -!Enter\ additional\ URLs,\ one\ for\ each\ row= +Enter\ additional\ URLs,\ one\ for\ each\ row=Addisjonele URLs tafoegje, ien foar elke rigel #: Editor.java:1062 Environment=Omjouwing @@ -591,18 +602,18 @@ Environment=Omjouwing Error=Flater #: Sketch.java:1065 Sketch.java:1088 -!Error\ adding\ file= +Error\ adding\ file=Koe best\u00e2n net tafoegje #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:272 #, java-format -!Error\ compiling\ for\ board\ {0}.= +Error\ compiling\ for\ board\ {0}.=Flater by it kompilearjen foar board {0}. #: debug/Compiler.java:369 -!Error\ compiling.= +Error\ compiling.=Flater by it kompilearjen. #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:113 #, java-format -!Error\ downloading\ {0}= +Error\ downloading\ {0}=Flater by delheljen fan {0} #: Base.java:1674 !Error\ getting\ the\ Arduino\ data\ folder.= @@ -611,26 +622,42 @@ Error=Flater #, java-format Error\ inside\ Serial.{0}()=Flater yn Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=Flater by it laden fan tema {0}\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 #, java-format -!Error\ loading\ {0}= +Error\ loading\ {0}=Flater by it laden fan {0} #: Serial.java:181 #, java-format -!Error\ opening\ serial\ port\ ''{0}''.= +Error\ opening\ serial\ port\ ''{0}''.=Flater by iepenjen fan seri\u00eble poarte "{0}" #: ../../../processing/app/Serial.java:119 #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 -!Error\ reading\ preferences= +Error\ reading\ preferences=Flater by l\u00eazen fan foarkarren #: Preferences.java:279 #, java-format -!Error\ reading\ the\ preferences\ file.\ Please\ delete\ (or\ move)\n{0}\ and\ restart\ Arduino.= +Error\ reading\ the\ preferences\ file.\ Please\ delete\ (or\ move)\n{0}\ and\ restart\ Arduino.=Flater by it l\u00eazen fan it foarkar best\u00e2n. Graach \n{0} fuortsmite (of ferpleatse) en Arduino opnij starte. #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:146 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:166 @@ -650,18 +677,21 @@ Error\ inside\ Serial.{0}()=Flater yn Serial.{0}() #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 -!Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= +Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=Flater by it kompilearjen\: it '{0}' konfiguraasje argumint mist #: Editor.java:2567 -!Error\ while\ printing.= +Error\ while\ printing.=Flater tidens it \u00f4fdrukken. #: ../../../../../arduino-core/src/processing/app/Serial.java:117 #, java-format !Error\ while\ setting\ serial\ port\ parameters\:\ {0}\ {1}\ {2}\ {3}= #: ../../../processing/app/BaseNoGui.java:528 -!Error\ while\ uploading= +Error\ while\ uploading=Flater tidens uploaden #: ../../../processing/app/Editor.java:2409 #: ../../../processing/app/Editor.java:2449 @@ -673,14 +703,11 @@ Error\ inside\ Serial.{0}()=Flater yn Serial.{0}() !Error\ while\ verifying= #: ../../../processing/app/BaseNoGui.java:521 -!Error\ while\ verifying/uploading= +Error\ while\ verifying/uploading=Flater tidens it ferifiearren/uploaden #: Preferences.java:93 Estonian=Estysk -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Estysk (Estl\u00e2n) - #: Editor.java:516 Examples=Foarbylden @@ -699,14 +726,14 @@ Examples=Foarbylden !Examples\ from\ Other\ Libraries= #: ../../../../../app/src/processing/app/Editor.java:753 -!Export\ canceled,\ changes\ must\ first\ be\ saved.= +Export\ canceled,\ changes\ must\ first\ be\ saved.=Eksportearren annulearre, feroaringen moat earst opslein wurde. #: ../../../../../app/src/processing/app/Editor.java:750 -!Export\ compiled\ Binary= +Export\ compiled\ Binary=Kompilearre bin\u00eare best\u00e2n eksportearre. #: ../../../processing/app/Base.java:416 #, java-format -!Failed\ to\ open\ sketch\:\ "{0}"= +Failed\ to\ open\ sketch\:\ "{0}"=Koe de skets net iepenje\: "{0}" #: ../../../../../arduino-core/src/processing/app/SketchFile.java:183 #, java-format @@ -716,11 +743,11 @@ Examples=Foarbylden !Failed\ to\ rename\ sketch\ folder= #: Editor.java:491 -!File= +File=Best\u00e2n #: ../../../../../arduino-core/src/processing/app/SketchData.java:139 #, java-format -!File\ name\ {0}\ is\ invalid\:\ ignored= +File\ name\ {0}\ is\ invalid\:\ ignored=Namme fan it best\u00e2n {0} is net jildich\: negeare #: Preferences.java:94 Filipino=Filipynsk @@ -782,7 +809,7 @@ Georgian=Georgysk German=D\u00fatsk #: ../../../../../app//src/processing/app/Editor.java:817 -!Get\ Board\ Info= +Get\ Board\ Info=Board Ynformaasje Ophelje #: Editor.java:1054 Getting\ Started=Oan de slach @@ -796,10 +823,10 @@ Getting\ Started=Oan de slach !Global\ variables\ use\ {0}\ bytes\ of\ dynamic\ memory.= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:66 -!Go\ to\ line= +Go\ to\ line=Gean nei rigel #: ../../../../../app/src/processing/app/Editor.java:1460 -!Go\ to\ line...= +Go\ to\ line...=Gean nei rigel... #: Preferences.java:98 Greek=Gryksk @@ -831,8 +858,8 @@ Hungarian=Hongaarsk #: FindReplace.java:96 !Ignore\ Case= -#: Base.java:1058 -!Ignoring\ bad\ library\ name= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 !Ignoring\ sketch\ with\ bad\ name= @@ -841,7 +868,7 @@ Hungarian=Hongaarsk !In\ Arduino\ 1.0,\ the\ default\ file\ extension\ has\ changed\nfrom\ .pde\ to\ .ino.\ \ New\ sketches\ (including\ those\ created\nby\ "Save-As")\ will\ use\ the\ new\ extension.\ \ The\ extension\nof\ existing\ sketches\ will\ be\ updated\ on\ save,\ but\ you\ can\ndisable\ this\ in\ the\ Preferences\ dialog.\n\nSave\ sketch\ and\ update\ its\ extension?= #: ../../../../../app/src/processing/app/Editor.java:778 -!Include\ Library= +Include\ Library=Bibleteek Ymplemintearje #: ../../../processing/app/BaseNoGui.java:768 #: ../../../processing/app/BaseNoGui.java:771 @@ -865,20 +892,20 @@ Indonesian=Yndonezysk #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:78 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:91 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:303 -!Install= +Install=Ynstallearje #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:170 -!Installation\ completed\!= +Installation\ completed\!=Ynstallaasje slagge\! #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java:50 -!Installed= +Installed=Ynstallearre #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -886,7 +913,7 @@ Indonesian=Yndonezysk #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:239 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:172 -!Installing...= +Installing...=Oan it ynstallearren... #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:256 !Interface\ scale\:= @@ -899,6 +926,15 @@ Indonesian=Yndonezysk #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=Italjaansk @@ -923,12 +959,12 @@ Latvian=Letsk #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 -!Line\ number\:= +Line\ number\:=Rigel n\u00fbmer\: #: Preferences.java:106 Lithuaninan=Litousk @@ -953,7 +989,7 @@ Lithuaninan=Litousk !Marathi= #: Base.java:2112 -!Message= +Message=Berjocht #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:81 #, java-format @@ -963,7 +999,7 @@ Lithuaninan=Litousk !Mode\ not\ supported= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:186 -!More= +More=Mear #: Preferences.java:449 !More\ preferences\ can\ be\ edited\ directly\ in\ the\ file= @@ -982,7 +1018,7 @@ Lithuaninan=Litousk !Must\ specify\ exactly\ one\ sketch\ file= #: Sketch.java:282 -!Name\ for\ new\ file\:= +Name\ for\ new\ file\:=Namme foar nij best\u00e2n\: #: ../../../../../app//src/processing/app/Editor.java:2809 !Native\ serial\ port,\ can't\ obtain\ info= @@ -1018,16 +1054,16 @@ Next\ Tab=Folgjende ljepbl\u00ead No=Nee #: ../../../processing/app/debug/Compiler.java:158 -!No\ authorization\ data\ found= +No\ authorization\ data\ found=Gjin autorisaasje gegevens f\u00fbn #: tools/format/src/AutoFormat.java:54 tools/AutoFormat.java:916 -!No\ changes\ necessary\ for\ Auto\ Format.= +No\ changes\ necessary\ for\ Auto\ Format.=Gjin feroaringen nedich foar Automatysk Opmeitsjen. #: ../../../processing/app/BaseNoGui.java:665 !No\ command\ line\ parameters\ found= #: ../../../processing/app/debug/Compiler.java:200 -!No\ compiled\ sketch\ found= +No\ compiled\ sketch\ found=Gjin kompilearre skets f\u00fbn #: Editor.java:373 !No\ files\ were\ added\ to\ the\ sketch.= @@ -1042,7 +1078,7 @@ No=Nee No\ parameters=Gjin parameters #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:453 -!No\ proxy= +No\ proxy=Gjin proksje #: Base.java:541 !No\ really,\ time\ for\ some\ fresh\ air\ for\ you.= @@ -1094,7 +1130,7 @@ Open=Iepenje Open\ URL=URL iepenje #: Base.java:636 -!Open\ an\ Arduino\ sketch...= +Open\ an\ Arduino\ sketch...=In Arduino skets iepenje... #: Base.java:903 Editor.java:501 Open...=Iepenje... @@ -1112,7 +1148,7 @@ Open...=Iepenje... Password\:=Wachtwurd\: #: Editor.java:1189 Editor.java:2731 -!Paste= +Paste=Plakke #: Preferences.java:109 Persian=Perzysk @@ -1137,7 +1173,7 @@ Persian\ (Iran)=Perzysk (Iran) !Please\ import\ the\ Wire\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.= #: ../../../../../app//src/processing/app/Editor.java:2799 -!Please\ select\ a\ port\ to\ obtain\ board\ info= +Please\ select\ a\ port\ to\ obtain\ board\ info=Graach in poarte selektearje om board ynformaasje te krijen #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 @@ -1153,7 +1189,7 @@ Polish=Poalsk Port=Poarte #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:491 -!Port\ number\:= +Port\ number\:=Poarte n\u00fbmer\: #: ../../../processing/app/Preferences.java:151 Portugese=Portegeesk @@ -1168,7 +1204,7 @@ Portuguese\ (Portugal)=Portegeesk (Portegal) Preferences=Foarkarren #: ../../../../../app/src/processing/app/Base.java:297 -!Preparing\ boards...= +Preparing\ boards...=Buorden tariede... #: FindReplace.java:123 FindReplace.java:128 Previous=Foarige @@ -1177,13 +1213,13 @@ Previous=Foarige Previous\ Tab=Foarige ljepbl\u00ead #: Editor.java:571 -!Print= +Print=\u00d4fdrukke #: Editor.java:2571 -!Printing\ canceled.= +Printing\ canceled.=\u00d4fdrukken annulearre #: Editor.java:2547 -!Printing...= +Printing...=Oan it \u00f4fdrukken... #: Base.java:1957 !Problem\ Opening\ Folder= @@ -1214,20 +1250,20 @@ Previous\ Tab=Foarige ljepbl\u00ead Processor=Prosessor #: Editor.java:704 -!Programmer= +Programmer=Programmearder #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:80 #, java-format !Progress\ {0}= #: Base.java:783 Editor.java:593 -!Quit= +Quit=\u00d4fslute #: ../../../../../app/src/processing/app/Base.java:1233 !RETIRED= #: ../../../../../arduino-core/src/processing/app/I18n.java:26 -!Recommended= +Recommended=Oanrekommandearre #: Editor.java:1138 Editor.java:1140 Editor.java:1390 !Redo= @@ -1238,9 +1274,9 @@ Reference=Neislachwurk #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1256,18 +1292,21 @@ Replace=Ferfange Replace\ &\ Find=Sykje en ferfange #: FindReplace.java:120 FindReplace.java:131 -!Replace\ All= +Replace\ All=Alles ferfange #: Sketch.java:1043 #, java-format -!Replace\ the\ existing\ version\ of\ {0}?= +Replace\ the\ existing\ version\ of\ {0}?=De besteande ferzje fan {0} ferfange? #: FindReplace.java:81 -!Replace\ with\:= +Replace\ with\:=Ferfange mei\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=Roemeensk @@ -1284,17 +1323,17 @@ Russian=Russysk #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:529 Editor.java:2064 #: Editor.java:2468 -!Save= +Save=Opslaan #: Editor.java:537 -!Save\ As...= +Save\ As...=Opslaan As... #: Editor.java:2317 -!Save\ Canceled.= +Save\ Canceled.=Opslaan Annulearre. #: Editor.java:2020 #, java-format -!Save\ changes\ to\ "{0}"?\ \ = +Save\ changes\ to\ "{0}"?\ \ =Feroaringen opslaan nei "{0}"? #: Sketch.java:825 !Save\ sketch\ folder\ as...= @@ -1303,7 +1342,7 @@ Russian=Russysk !Save\ when\ verifying\ or\ uploading= #: Editor.java:2270 Editor.java:2308 -!Saving...= +Saving...=Oan it opslaan... #: ../../../processing/app/FindReplace.java:131 !Search\ all\ Sketch\ Tabs= @@ -1312,7 +1351,7 @@ Russian=Russysk !Select\ (or\ create\ new)\ folder\ for\ sketches...= #: Editor.java:1198 Editor.java:2739 -!Select\ All= +Select\ All=Alles Selektearje #: Base.java:2636 !Select\ a\ zip\ file\ or\ a\ folder\ containing\ the\ library\ you'd\ like\ to\ add= @@ -1321,17 +1360,17 @@ Russian=Russysk !Select\ an\ image\ or\ other\ data\ file\ to\ copy\ to\ your\ sketch= #: Preferences.java:330 -!Select\ new\ sketchbook\ location= +Select\ new\ sketchbook\ location=Nije sketsboek lokaasje selektearje #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:237 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:249 -!Select\ version= +Select\ version=Ferzje selektearre #: ../../../processing/app/debug/Compiler.java:146 !Selected\ board\ depends\ on\ '{0}'\ core\ (not\ installed).= #: ../../../../../app/src/processing/app/Base.java:374 -!Selected\ board\ is\ not\ available= +Selected\ board\ is\ not\ available=Selektearre board is net beskikber #: ../../../../../app/src/processing/app/Base.java:423 !Selected\ library\ is\ not\ available= @@ -1340,7 +1379,7 @@ Russian=Russysk Send=Ferstjoere #: ../../../../../arduino-core/src/processing/app/I18n.java:32 -!Sensors= +Sensors=Sensoaren #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:669 Serial\ Monitor=Seri\u00eble monitor @@ -1359,9 +1398,13 @@ Serial\ Monitor=Seri\u00eble monitor #, java-format !Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?= -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=Seri\u00eble poarte net selektearre. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -!Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?= +Serial\ port\ {0}\ not\ found.=Seri\u00eble poarte {0} net f\u00fbn. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=Seri\u00eble poarten @@ -1371,7 +1414,7 @@ Serial\ ports=Seri\u00eble poarten !Setting\ build\ path\ to\ {0}= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:450 -!Settings= +Settings=Ynstellings #: Base.java:1681 !Settings\ issues= @@ -1379,6 +1422,9 @@ Serial\ ports=Seri\u00eble poarten #: Editor.java:641 !Show\ Sketch\ Folder= +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 !Show\ verbose\ output\ during\:\ = @@ -1389,19 +1435,19 @@ Serial\ ports=Seri\u00eble poarten Sketch=Skets #: Sketch.java:1754 -!Sketch\ Disappeared= +Sketch\ Disappeared=Skets Ferdw\u00fbn #: Base.java:1411 -!Sketch\ Does\ Not\ Exist= +Sketch\ Does\ Not\ Exist=Skets Bestiet Net #: Sketch.java:274 Sketch.java:303 Sketch.java:577 Sketch.java:966 -!Sketch\ is\ Read-Only= +Sketch\ is\ Read-Only=Skets is Allinnich-L\u00eaze #: Sketch.java:294 -!Sketch\ is\ Untitled= +Sketch\ is\ Untitled=Skets is Namleas #: Sketch.java:720 -!Sketch\ is\ read-only= +Sketch\ is\ read-only=Skets is Allinnich-L\u00eaze #: Sketch.java:1653 !Sketch\ too\ big;\ see\ http\://www.arduino.cc/en/Guide/Troubleshooting\#size\ for\ tips\ on\ reducing\ it.= @@ -1449,7 +1495,7 @@ Spanish=Spaansk !Specified\ folder/zip\ file\ does\ not\ contain\ a\ valid\ library= #: ../../../../../app/src/processing/app/Base.java:466 -!Starting...= +Starting...=Oan it starten... #: Base.java:540 Sunshine=Sinneskyn @@ -1498,12 +1544,16 @@ Talossan=Talossaansk #, java-format !The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format !The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)= #: ../../../../../app/src/processing/app/SketchController.java:170 -!The\ main\ file\ cannot\ use\ an\ extension= +The\ main\ file\ cannot\ use\ an\ extension=It haad best\u00e2n kin gjin taheaksel br\u00fbke #: Sketch.java:356 !The\ name\ cannot\ start\ with\ a\ period.= @@ -1522,8 +1572,8 @@ Talossan=Talossaansk #: Sketch.java:1755 !The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.= -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 !The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.= @@ -1531,6 +1581,9 @@ Talossan=Talossaansk #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =Tema + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1538,7 +1591,7 @@ Talossan=Talossaansk !This\ report\ would\ have\ more\ information\ with\n"Show\ verbose\ output\ during\ compilation"\noption\ enabled\ in\ File\ ->\ Preferences.\n= #: Base.java:535 -!Time\ for\ a\ Break= +Time\ for\ a\ Break=Tiid foar Skoft #: ../../../../../arduino-core/src/processing/app/I18n.java:34 !Timing= @@ -1548,10 +1601,10 @@ Talossan=Talossaansk !Tool\ {0}\ is\ not\ available\ for\ your\ operating\ system.= #: Editor.java:663 -!Tools= +Tools=Ark #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:97 -!Topic= +Topic=\u00dbnderwerp #: Editor.java:1070 !Troubleshooting= @@ -1574,14 +1627,14 @@ Ukrainian=Ukraynsk #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:142 #, java-format -!Unable\ to\ connect\ to\ {0}= +Unable\ to\ connect\ to\ {0}=Kin net ferbine mei {0} #: ../../../processing/app/Editor.java:2524 #: ../../../processing/app/NetworkMonitor.java:145 !Unable\ to\ connect\:\ is\ the\ sketch\ using\ the\ bridge?= #: ../../../processing/app/NetworkMonitor.java:130 -!Unable\ to\ connect\:\ retrying= +Unable\ to\ connect\:\ retrying=Kin net ferbine\: noch ris oan it probearjen #: ../../../processing/app/Editor.java:2526 !Unable\ to\ connect\:\ wrong\ password?= @@ -1611,7 +1664,7 @@ Ukrainian=Ukraynsk !Unhandled\ type\ {0}\ in\ context\ key\ {1}= #: ../../../../../app//src/processing/app/Editor.java:2818 -!Unknown\ board= +Unknown\ board=\u00dbnbekend board #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format @@ -1622,10 +1675,10 @@ Ukrainian=Ukraynsk #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownUpdatableLibrariesItem.java:27 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownUpdatableCoresItem.java:27 -!Updatable= +Updatable=Fernijber #: UpdateCheck.java:111 -!Update= +Update=Fernije #: Preferences.java:428 !Update\ sketch\ files\ to\ new\ extension\ on\ save\ (.pde\ ->\ .ino)= @@ -1686,7 +1739,7 @@ Ukrainian=Ukraynsk #: ../../../processing/app/debug/Compiler.java:320 #, java-format -!Using\ previously\ compiled\ file\:\ {0}= +Using\ previously\ compiled\ file\:\ {0}=In earder kompilearre best\u00e2n wurd br\u00fbkt\: {0} #: EditorToolbar.java:41 EditorToolbar.java:46 !Verify= @@ -1695,7 +1748,7 @@ Ukrainian=Ukraynsk !Verify\ code\ after\ upload= #: ../../../../../app/src/processing/app/Editor.java:725 -!Verify/Compile= +Verify/Compile=Ferifiearre/Oersette #: ../../../../../app/src/processing/app/Base.java:451 !Verifying\ and\ uploading...= @@ -1721,7 +1774,7 @@ Ukrainian=Ukraynsk Vietnamese=Fjetnameesk #: Editor.java:1105 -!Visit\ Arduino.cc= +Visit\ Arduino.cc=Arduino.cc besykje #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:90 #, java-format @@ -1847,7 +1900,7 @@ baud=baud compilation\ =kompilaasje #: ../../../processing/app/NetworkMonitor.java:111 -!connected\!= +connected\!=ferb\u00fbn\! #: ../../../../../app/src/processing/app/Editor.java:1352 !http\://www.arduino.cc/= @@ -1863,7 +1916,12 @@ http\://www.arduino.cc/latest.txt=http\://www.arduino.cc/latest.txt !ignoring\ invalid\ font\ size\ {0}= #: Editor.java:936 Editor.java:943 -!name\ is\ null= +name\ is\ null=namme is null + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= #: Editor.java:932 !serialMenu\ is\ null= @@ -1932,10 +1990,6 @@ unknown\ option\:\ {0}=\u00fbnbekende opsje\: {0} #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1944,17 +1998,21 @@ unknown\ option\:\ {0}=\u00fbnbekende opsje\: {0} #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format -!{0}\:\ Unknown\ architecture= +{0}\:\ Unknown\ architecture={0}\: \u00dbnbekende arsjitektuer #: ../../../processing/app/Base.java:491 #, java-format -!{0}\:\ Unknown\ board= +{0}\:\ Unknown\ board={0}\: \u00dbnbekend board #: ../../../processing/app/Base.java:481 #, java-format -!{0}\:\ Unknown\ package= +{0}\:\ Unknown\ package={0}\: \u00dbnbekend pakket #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format diff --git a/arduino-core/src/processing/app/i18n/Resources_gl.po b/arduino-core/src/processing/app/i18n/Resources_gl.po index dc00dcc1fe9..6bc2fc6ee1e 100644 --- a/arduino-core/src/processing/app/i18n/Resources_gl.po +++ b/arduino-core/src/processing/app/i18n/Resources_gl.po @@ -17,17 +17,21 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # ccpr1l , 2014 # Diego Prado Gesto <>, 2012 # Marce Villarino , 2013 # Marce Villarino , 2013 +# Suso Martínez , 2018,2020 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" -"Last-Translator: Cristian Maglie \n" +"PO-Revision-Date: 2020-05-12 18:30+0000\n" +"Last-Translator: Suso Martínez \n" "Language-Team: Galician (http://www.transifex.com/mbanzi/arduino-ide-15/language/gl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -42,33 +46,33 @@ msgstr " (require reiniciar Arduino)" #: ../../../processing/app/debug/Compiler.java:529 #, java-format msgid " Not used: {0}" -msgstr "" +msgstr "Non usado: {0}" #: ../../../processing/app/debug/Compiler.java:525 #, java-format msgid " Used: {0}" -msgstr "" +msgstr "Usado: {0}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:558 msgid "" "'Keyboard' not found. Does your sketch include the line '#include " "'?" -msgstr "" +msgstr "Non se atopa 'Keyboard'. Tal vez esqueciches incluir a liña '#include '?" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:553 msgid "" "'Mouse' not found. Does your sketch include the line '#include '?" -msgstr "" +msgstr "Non se atopa 'Mouse'. Tal vez esqueciches incluir a liña '#include '?" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:61 msgid "" "'arch' folder is no longer supported! See http://goo.gl/gfFJzU for more " "information" -msgstr "" +msgstr "O cartafol 'arch' xa non está soportada! Máis información en http://goo.gl/gfFJzU" #: Preferences.java:478 msgid "(edit only when Arduino is not running)" -msgstr "(editar só cando Arduino non se esté a executar)" +msgstr "(editar só cando Arduino non se estea a executar)" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 msgid "(legacy)" @@ -82,7 +86,7 @@ msgstr "" msgid "" "--verbose, --verbose-upload and --verbose-build can only be used together " "with --verify or --upload" -msgstr "" +msgstr "--verbose, --verbose-upload and --verbose-build só poden ser usados xuntos con --verify ou --upload" #: Sketch.java:746 msgid ".pde -> .ino" @@ -131,7 +135,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Base.java:1177 msgid "Add .ZIP Library..." -msgstr "" +msgstr "Engade biblioteca .ZIP..." #: Editor.java:650 msgid "Add File..." @@ -172,7 +176,7 @@ msgstr "Ocorreu un erro mentres se intentaba amaña-la codificación do\narquivo #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:99 msgid "An error occurred while updating libraries index!" -msgstr "" +msgstr "Ocorreu un erro durante a actualización do índice das librerías" #: ../../../processing/app/BaseNoGui.java:528 msgid "An error occurred while uploading the sketch" @@ -506,7 +510,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 msgid "Compiler warnings: " -msgstr "" +msgstr "Avisos do compilador:" #: Sketch.java:1608 Editor.java:1890 msgid "Compiling sketch..." @@ -526,7 +530,7 @@ msgstr "Copiar como HTML" #: ../../../processing/app/EditorStatus.java:455 msgid "Copy error messages" -msgstr "" +msgstr "Copiar as mensaxes de erro" #: Editor.java:1165 Editor.java:2715 msgid "Copy for Forum" @@ -544,7 +548,7 @@ msgstr "Non se puido copiar a unha ubicación axeitada." #: ../../../../../arduino-core/src/processing/app/Sketch.java:342 #, java-format msgid "Could not create directory \"{0}\"" -msgstr "" +msgstr "Non foi posible crear a carpeta \"{0}\"" #: Editor.java:2179 msgid "Could not create the sketch folder." @@ -567,7 +571,7 @@ msgstr "Non se pode borrar o ficheiro existente ''{0}''." #: ../../../processing/app/debug/TargetPlatform.java:74 #, java-format msgid "Could not find boards.txt in {0}. Is it pre-1.5?" -msgstr "" +msgstr "Non se atopou boards.txt en {0}. É anterior á versión 1.5?" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:282 #, java-format @@ -625,6 +629,11 @@ msgstr "Non se pode eliminar a versión anterior de {0}" msgid "Could not replace {0}" msgstr "Non se pode reemplazar {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Non foi posíbel arquivar o sketch" @@ -654,11 +663,11 @@ msgstr "Cortar" #: ../../../../../app/src/processing/app/Preferences.java:119 msgid "Czech (Czech Republic)" -msgstr "" +msgstr "Checo (República Checa)" #: ../../../../../app/src/processing/app/Preferences.java:120 msgid "Danish (Denmark)" -msgstr "" +msgstr "Danés (Dinamarca)" #: ../../../../../arduino-core/src/processing/app/I18n.java:36 msgid "Data Processing" @@ -670,7 +679,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:1386 msgid "Decrease Font Size" -msgstr "" +msgstr "Diminuír o tamaño da fonte" #: Editor.java:1224 Editor.java:2765 msgid "Decrease Indent" @@ -680,6 +689,10 @@ msgstr "Diminuír o sangrado" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Borrar" @@ -711,7 +724,7 @@ msgstr "" msgid "" "Do you want to remove {0}?\n" "If you do so you won't be able to use {0} any more." -msgstr "" +msgstr "Queres eliminar {0}?\nSe o fas non poderás volver a usar {0}." #: Editor.java:2064 msgid "Don't Save" @@ -728,7 +741,7 @@ msgstr "Rematado o grabado do cargador de inicio." #: ../../../processing/app/BaseNoGui.java:507 #: ../../../processing/app/BaseNoGui.java:552 msgid "Done compiling" -msgstr "" +msgstr "Rematou a compilación" #: Editor.java:1911 Editor.java:1928 msgid "Done compiling." @@ -740,7 +753,7 @@ msgstr "Impresión rematada." #: ../../../processing/app/BaseNoGui.java:514 msgid "Done uploading" -msgstr "" +msgstr "Rematou a subida" #: Editor.java:2395 Editor.java:2431 msgid "Done uploading." @@ -749,7 +762,7 @@ msgstr "Carga rematada." #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:105 #, java-format msgid "Downloaded {0}kb of {1}kb." -msgstr "" +msgstr "Descargado {0}kb de {1}kb." #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:107 msgid "Downloading boards definitions." @@ -844,7 +857,7 @@ msgstr "Erro compilando" #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:113 #, java-format msgid "Error downloading {0}" -msgstr "" +msgstr "Erro descargando {0}" #: Base.java:1674 msgid "Error getting the Arduino data folder." @@ -855,6 +868,11 @@ msgstr "Error obtendo a carpeta de datos de Arduino" msgid "Error inside Serial.{0}()" msgstr "Erro dentro de Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -872,6 +890,25 @@ msgstr "Erro abrindo o porto serie ''{0}''." msgid "" "Error opening serial port ''{0}''. Try consulting the documentation at " "http://playground.arduino.cc/Linux/All#Permission" +msgstr "Erro abrindo o porto serie \"{0}\". Proba a consultar a documentación en http://playground.arduino.cc/Linux/All#Permission" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" msgstr "" #: Preferences.java:277 @@ -908,6 +945,10 @@ msgstr "Erro ao grabar o cargador de inicio." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -944,10 +985,6 @@ msgstr "" msgid "Estonian" msgstr "Estoniano" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "" - #: Editor.java:516 msgid "Examples" msgstr "Exemplos" @@ -1067,7 +1104,7 @@ msgstr "Galego" #: ../../../../../app/src/processing/app/Preferences.java:176 msgid "Galician (Spain)" -msgstr "" +msgstr "Galego (Galicia)" #: ../../../../../app/src/processing/app/Editor.java:1288 msgid "Galileo Help" @@ -1103,11 +1140,11 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:66 msgid "Go to line" -msgstr "" +msgstr "Ir á liña" #: ../../../../../app/src/processing/app/Editor.java:1460 msgid "Go to line..." -msgstr "" +msgstr "Ir á liña..." #: Preferences.java:98 msgid "Greek" @@ -1151,9 +1188,9 @@ msgstr "" msgid "Ignore Case" msgstr "Ignorar maiúsculas e minúsculas" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Ignorando nome incorrecto de libraría" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1181,7 +1218,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:1378 msgid "Increase Font Size" -msgstr "" +msgstr "Aumentar o tamaño da fonte" #: Editor.java:1216 Editor.java:2757 msgid "Increase Indent" @@ -1202,23 +1239,23 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:91 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:303 msgid "Install" -msgstr "" +msgstr "Instalar" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:170 msgid "Installation completed!" -msgstr "" +msgstr "Instalación completada!" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java:50 msgid "Installed" -msgstr "" +msgstr "Instalado" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1245,6 +1282,17 @@ msgstr "Encontrada unha biblioteca inválida en {0}: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "Italiano" @@ -1277,9 +1325,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1697,9 +1745,9 @@ msgstr "Documentación" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1736,6 +1784,10 @@ msgstr "Reemplazar con:" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "Romanés" @@ -1859,12 +1911,15 @@ msgid "" " Serial Port menu?" msgstr "Porto serie ''{0}'' non atopado. Estás seguro de que seleccionaches o porto correcto do menú Ferramentas > Porto Serie?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "O porto serie {0} non foi atopado\nVolver a tenta-la carga con outro porto serie?" +msgid "Serial port {0} not found." +msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1887,6 +1942,10 @@ msgstr "Problemas de configuración" msgid "Show Sketch Folder" msgstr "Mostrar a carpeta do Sketch" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Mostrar resultado detallado durante: " @@ -2058,6 +2117,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "O ficheiro \"{0}\" debe estar dentro\ndun cartafol de sketchs chamado «{1} x.\nCrear esta cartafol mover este ficheiro e continuar?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2103,10 +2170,11 @@ msgid "" "but anything besides the code will be lost." msgstr "O cartafol do sketch desapareceu.\nHase tentar gardar de novo no mesmo lugar,\npero calquera cousa aparte do código vaise perder." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2124,6 +2192,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2530,7 +2602,7 @@ msgid "" "older version of Arduino, you may need to use Tools -> Fix Encoding & Reload" " to update the sketch to use UTF-8 encoding. If not, you may need to delete " "the bad characters to get rid of this warning." -msgstr "" +msgstr "\"{0}\" contén caracteres non recoñecidos. Se este código foi creado cunha versión antigo de Arduino, pode que teñas que usar Ferramentas -> Arranxar a codificación e recargar para actualizar o sketch usando a codificación UTF-8. Se non, tal vez teñas que borrar os caracteres inválidos para evitar este aviso." #: debug/Compiler.java:409 msgid "" @@ -2593,7 +2665,7 @@ msgstr "compilación " #: ../../../processing/app/NetworkMonitor.java:111 msgid "connected!" -msgstr "" +msgstr "conectado!" #: ../../../../../app/src/processing/app/Editor.java:1352 msgid "http://www.arduino.cc/" @@ -2616,6 +2688,12 @@ msgstr "ignorando tamaño inválido de tipo de letra {0}" msgid "name is null" msgstr "nome é nulo" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu é nulo" @@ -2669,7 +2747,7 @@ msgstr "" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:76 #, java-format msgid "{0} must be a folder" -msgstr "" +msgstr "{0} ten que ser unha carpeta" #: ../../../../../app/src/processing/app/EditorLineStatus.java:109 #, java-format @@ -2703,21 +2781,21 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" -msgstr "" +msgstr "{0}: Opción inválida para a placa \"{1}\"" #: ../../../processing/app/Base.java:502 #, java-format msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_gl.properties b/arduino-core/src/processing/app/i18n/Resources_gl.properties index 322f716f2b1..a23d732217a 100644 --- a/arduino-core/src/processing/app/i18n/Resources_gl.properties +++ b/arduino-core/src/processing/app/i18n/Resources_gl.properties @@ -17,34 +17,38 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # ccpr1l , 2014 # Diego Prado Gesto <>, 2012 # Marce Villarino , 2013 # Marce Villarino , 2013 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Galician (http\://www.transifex.com/mbanzi/arduino-ide-15/language/gl/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: gl\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +# Suso Mart\u00ednez , 2018,2020 +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2020-05-12 18\:30+0000\nLast-Translator\: Suso Mart\u00ednez \nLanguage-Team\: Galician (http\://www.transifex.com/mbanzi/arduino-ide-15/language/gl/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: gl\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (require reiniciar Arduino) #: ../../../processing/app/debug/Compiler.java:529 #, java-format -!\ Not\ used\:\ {0}= +\ Not\ used\:\ {0}=Non usado\: {0} #: ../../../processing/app/debug/Compiler.java:525 #, java-format -!\ Used\:\ {0}= +\ Used\:\ {0}=Usado\: {0} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:558 -!'Keyboard'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?= +'Keyboard'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?=Non se atopa 'Keyboard'. Tal vez esqueciches incluir a li\u00f1a '\#include '? #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:553 -!'Mouse'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?= +'Mouse'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?=Non se atopa 'Mouse'. Tal vez esqueciches incluir a li\u00f1a '\#include '? #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:61 -!'arch'\ folder\ is\ no\ longer\ supported\!\ See\ http\://goo.gl/gfFJzU\ for\ more\ information= +'arch'\ folder\ is\ no\ longer\ supported\!\ See\ http\://goo.gl/gfFJzU\ for\ more\ information=O cartafol 'arch' xa non est\u00e1 soportada\! M\u00e1is informaci\u00f3n en http\://goo.gl/gfFJzU #: Preferences.java:478 -(edit\ only\ when\ Arduino\ is\ not\ running)=(editar s\u00f3 cando Arduino non se est\u00e9 a executar) +(edit\ only\ when\ Arduino\ is\ not\ running)=(editar s\u00f3 cando Arduino non se estea a executar) #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 !(legacy)= @@ -53,7 +57,7 @@ !--curdir\ no\ longer\ supported= #: ../../../processing/app/Base.java:468 -!--verbose,\ --verbose-upload\ and\ --verbose-build\ can\ only\ be\ used\ together\ with\ --verify\ or\ --upload= +--verbose,\ --verbose-upload\ and\ --verbose-build\ can\ only\ be\ used\ together\ with\ --verify\ or\ --upload=--verbose, --verbose-upload and --verbose-build s\u00f3 poden ser usados xuntos con --verify ou --upload #: Sketch.java:746 .pde\ ->\ .ino=.pde -> .ino @@ -86,7 +90,7 @@ About\ Arduino=Acerca de Arduino !Acoli= #: ../../../../../app/src/processing/app/Base.java:1177 -!Add\ .ZIP\ Library...= +Add\ .ZIP\ Library...=Engade biblioteca .ZIP... #: Editor.java:650 Add\ File...=Engadir un ficheiro... @@ -115,7 +119,7 @@ Add\ File...=Engadir un ficheiro... An\ error\ occurred\ while\ trying\ to\ fix\ the\ file\ encoding.\nDo\ not\ attempt\ to\ save\ this\ sketch\ as\ it\ may\ overwrite\nthe\ old\ version.\ Use\ Open\ to\ re-open\ the\ sketch\ and\ try\ again.\n=Ocorreu un erro mentres se intentaba ama\u00f1a-la codificaci\u00f3n do\narquivo. Non intentes gardar este sketch porque pode sobreescribir a\nversi\u00f3n anterior. Utiliza Abrir para volver a abrir o sketch e intentalo de novo.\n #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:99 -!An\ error\ occurred\ while\ updating\ libraries\ index\!= +An\ error\ occurred\ while\ updating\ libraries\ index\!=Ocorreu un erro durante a actualizaci\u00f3n do \u00edndice das librer\u00edas #: ../../../processing/app/BaseNoGui.java:528 !An\ error\ occurred\ while\ uploading\ the\ sketch= @@ -359,7 +363,7 @@ Comment/Uncomment=Comentar/Descomentar !Communication= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 -!Compiler\ warnings\:\ = +Compiler\ warnings\:\ =Avisos do compilador\: #: Sketch.java:1608 Editor.java:1890 Compiling\ sketch...=Estase a compilar o sketch... @@ -374,7 +378,7 @@ Copy=Copiar Copy\ as\ HTML=Copiar como HTML #: ../../../processing/app/EditorStatus.java:455 -!Copy\ error\ messages= +Copy\ error\ messages=Copiar as mensaxes de erro #: Editor.java:1165 Editor.java:2715 Copy\ for\ Forum=Copiar para o foro @@ -388,7 +392,7 @@ Could\ not\ copy\ to\ a\ proper\ location.=Non se puido copiar a unha ubicaci\u0 #: ../../../../../arduino-core/src/processing/app/Sketch.java:342 #, java-format -!Could\ not\ create\ directory\ "{0}"= +Could\ not\ create\ directory\ "{0}"=Non foi posible crear a carpeta "{0}" #: Editor.java:2179 Could\ not\ create\ the\ sketch\ folder.=Non se puido crea-la carpeta do sketch. @@ -406,7 +410,7 @@ Could\ not\ delete\ the\ existing\ ''{0}''\ file.=Non se pode borrar o ficheiro #: ../../../processing/app/debug/TargetPlatform.java:74 #, java-format -!Could\ not\ find\ boards.txt\ in\ {0}.\ Is\ it\ pre-1.5?= +Could\ not\ find\ boards.txt\ in\ {0}.\ Is\ it\ pre-1.5?=Non se atopou boards.txt en {0}. \u00c9 anterior \u00e1 versi\u00f3n 1.5? #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:282 #, java-format @@ -444,6 +448,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Non se pode eliminar a versi\u00f3n an #, java-format Could\ not\ replace\ {0}=Non se pode reemplazar {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Non foi pos\u00edbel arquivar o sketch @@ -463,10 +471,10 @@ Croatian=Croata Cut=Cortar #: ../../../../../app/src/processing/app/Preferences.java:119 -!Czech\ (Czech\ Republic)= +Czech\ (Czech\ Republic)=Checo (Rep\u00fablica Checa) #: ../../../../../app/src/processing/app/Preferences.java:120 -!Danish\ (Denmark)= +Danish\ (Denmark)=Dan\u00e9s (Dinamarca) #: ../../../../../arduino-core/src/processing/app/I18n.java:36 !Data\ Processing= @@ -475,7 +483,7 @@ Cut=Cortar !Data\ Storage= #: ../../../../../app/src/processing/app/Editor.java:1386 -!Decrease\ Font\ Size= +Decrease\ Font\ Size=Diminu\u00edr o tama\u00f1o da fonte #: Editor.java:1224 Editor.java:2765 Decrease\ Indent=Diminu\u00edr o sangrado @@ -483,6 +491,9 @@ Decrease\ Indent=Diminu\u00edr o sangrado #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=Borrar @@ -503,7 +514,7 @@ Discard\ all\ changes\ and\ reload\ sketch?=Descartar t\u00f3dolos cambios e rec #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:195 #, java-format -!Do\ you\ want\ to\ remove\ {0}?\nIf\ you\ do\ so\ you\ won't\ be\ able\ to\ use\ {0}\ any\ more.= +Do\ you\ want\ to\ remove\ {0}?\nIf\ you\ do\ so\ you\ won't\ be\ able\ to\ use\ {0}\ any\ more.=Queres eliminar {0}?\nSe o fas non poder\u00e1s volver a usar {0}. #: Editor.java:2064 Don't\ Save=Non gardar @@ -516,7 +527,7 @@ Done\ burning\ bootloader.=Rematado o grabado do cargador de inicio. #: ../../../processing/app/BaseNoGui.java:507 #: ../../../processing/app/BaseNoGui.java:552 -!Done\ compiling= +Done\ compiling=Rematou a compilaci\u00f3n #: Editor.java:1911 Editor.java:1928 Done\ compiling.=Rematouse a compilaci\u00f3n. @@ -525,14 +536,14 @@ Done\ compiling.=Rematouse a compilaci\u00f3n. Done\ printing.=Impresi\u00f3n rematada. #: ../../../processing/app/BaseNoGui.java:514 -!Done\ uploading= +Done\ uploading=Rematou a subida #: Editor.java:2395 Editor.java:2431 Done\ uploading.=Carga rematada. #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:105 #, java-format -!Downloaded\ {0}kb\ of\ {1}kb.= +Downloaded\ {0}kb\ of\ {1}kb.=Descargado {0}kb de {1}kb. #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:107 !Downloading\ boards\ definitions.= @@ -605,7 +616,7 @@ Error\ compiling.=Erro compilando #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:113 #, java-format -!Error\ downloading\ {0}= +Error\ downloading\ {0}=Erro descargando {0} #: Base.java:1674 Error\ getting\ the\ Arduino\ data\ folder.=Error obtendo a carpeta de datos de Arduino @@ -614,6 +625,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Error obtendo a carpeta de datos de #, java-format Error\ inside\ Serial.{0}()=Erro dentro de Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -626,7 +641,19 @@ Error\ opening\ serial\ port\ ''{0}''.=Erro abrindo o porto serie ''{0}''. #: ../../../processing/app/Serial.java:119 #, java-format -!Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=Erro abrindo o porto serie "{0}". Proba a consultar a documentaci\u00f3n en http\://playground.arduino.cc/Linux/All\#Permission + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= #: Preferences.java:277 Error\ reading\ preferences=Erro lendo as preferencias @@ -653,6 +680,9 @@ Error\ while\ burning\ bootloader.=Erro ao grabar o cargador de inicio. #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -681,9 +711,6 @@ Error\ while\ printing.=Erro na impresi\u00f3n. #: Preferences.java:93 Estonian=Estoniano -#: ../../../processing/app/Preferences.java:146 -!Estonian\ (Estonia)= - #: Editor.java:516 Examples=Exemplos @@ -773,7 +800,7 @@ Frequently\ Asked\ Questions=Preguntas frecuentes Galician=Galego #: ../../../../../app/src/processing/app/Preferences.java:176 -!Galician\ (Spain)= +Galician\ (Spain)=Galego (Galicia) #: ../../../../../app/src/processing/app/Editor.java:1288 !Galileo\ Help= @@ -799,10 +826,10 @@ Getting\ Started=Comezando !Global\ variables\ use\ {0}\ bytes\ of\ dynamic\ memory.= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:66 -!Go\ to\ line= +Go\ to\ line=Ir \u00e1 li\u00f1a #: ../../../../../app/src/processing/app/Editor.java:1460 -!Go\ to\ line...= +Go\ to\ line...=Ir \u00e1 li\u00f1a... #: Preferences.java:98 Greek=Grego @@ -834,8 +861,8 @@ Hungarian=H\u00fangaro #: FindReplace.java:96 Ignore\ Case=Ignorar mai\u00fasculas e min\u00fasculas -#: Base.java:1058 -Ignoring\ bad\ library\ name=Ignorando nome incorrecto de librar\u00eda +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Ignorando sketch con nome incorrecto @@ -851,7 +878,7 @@ In\ Arduino\ 1.0,\ the\ default\ file\ extension\ has\ changed\nfrom\ .pde\ to\ !Incorrect\ IDE\ installation\ folder= #: ../../../../../app/src/processing/app/Editor.java:1378 -!Increase\ Font\ Size= +Increase\ Font\ Size=Aumentar o tama\u00f1o da fonte #: Editor.java:1216 Editor.java:2757 Increase\ Indent=Aumentar o sangrado @@ -868,20 +895,20 @@ Indonesian=Indonesio #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:78 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:91 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:303 -!Install= +Install=Instalar #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:170 -!Installation\ completed\!= +Installation\ completed\!=Instalaci\u00f3n completada\! #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java:50 -!Installed= +Installed=Instalado #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -902,6 +929,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=Encontrada unha biblioteca inv\u00e1lida #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=Italiano @@ -926,9 +962,9 @@ Latvian=Let\u00f3n #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -1241,9 +1277,9 @@ Reference=Documentaci\u00f3n #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1271,6 +1307,9 @@ Replace\ with\:=Reemplazar con\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=Roman\u00e9s @@ -1362,9 +1401,13 @@ Serial\ Monitor=Monitor o porto serie #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Porto serie ''{0}'' non atopado. Est\u00e1s seguro de que seleccionaches o porto correcto do men\u00fa Ferramentas > Porto Serie? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=O porto serie {0} non foi atopado\nVolver a tenta-la carga con outro porto serie? +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1382,6 +1425,9 @@ Settings\ issues=Problemas de configuraci\u00f3n #: Editor.java:641 Show\ Sketch\ Folder=Mostrar a carpeta do Sketch +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Mostrar resultado detallado durante\: @@ -1501,6 +1547,10 @@ The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=A clase Udp foi renomeada a Et #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=O ficheiro "{0}" debe estar dentro\ndun cartafol de sketchs chamado \u00ab{1} x.\nCrear esta cartafol mover este ficheiro e continuar? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=A librar\u00eda "{0}" non se pode usar.\nOs nomes de librar\u00eda deben conter soamente letras b\u00e1sicas e n\u00fameros\n(S\u00f3 ASCII sen espazos, e non pode comezar con un n\u00famero). @@ -1525,8 +1575,8 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=O cartafol do sketch desapareceu.\nHase tentar gardar de novo no mesmo lugar,\npero calquera cousa aparte do c\u00f3digo vaise perder. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=A carpeta Sketchbook xa non existe.\nArduino cambiar\u00e1 \u00e1 ubicaci\u00f3n predeterminada\ndo Sketchbook, e crear\u00e1 unha nova carpeta Sketchbook\nse fose necesario. Arduino despois deixar\u00e1 de falar de si mesmo\nen terceira persoa. @@ -1534,6 +1584,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1820,7 +1873,7 @@ Zip\ doesn't\ contain\ a\ library=O arquivo zip non cont\u00e9n unha biblioteca #: ../../../../../arduino-core/src/processing/app/SketchCode.java:201 #, java-format -!"{0}"\ contains\ unrecognized\ characters.\ If\ this\ code\ was\ created\ with\ an\ older\ version\ of\ Arduino,\ you\ may\ need\ to\ use\ Tools\ ->\ Fix\ Encoding\ &\ Reload\ to\ update\ the\ sketch\ to\ use\ UTF-8\ encoding.\ If\ not,\ you\ may\ need\ to\ delete\ the\ bad\ characters\ to\ get\ rid\ of\ this\ warning.= +"{0}"\ contains\ unrecognized\ characters.\ If\ this\ code\ was\ created\ with\ an\ older\ version\ of\ Arduino,\ you\ may\ need\ to\ use\ Tools\ ->\ Fix\ Encoding\ &\ Reload\ to\ update\ the\ sketch\ to\ use\ UTF-8\ encoding.\ If\ not,\ you\ may\ need\ to\ delete\ the\ bad\ characters\ to\ get\ rid\ of\ this\ warning.="{0}" cont\u00e9n caracteres non reco\u00f1ecidos. Se este c\u00f3digo foi creado cunha versi\u00f3n antigo de Arduino, pode que te\u00f1as que usar Ferramentas -> Arranxar a codificaci\u00f3n e recargar para actualizar o sketch usando a codificaci\u00f3n UTF-8. Se non, tal vez te\u00f1as que borrar os caracteres inv\u00e1lidos para evitar este aviso. #: debug/Compiler.java:409 \nAs\ of\ Arduino\ 0019,\ the\ Ethernet\ library\ depends\ on\ the\ SPI\ library.\nYou\ appear\ to\ be\ using\ it\ or\ another\ library\ that\ depends\ on\ the\ SPI\ library.\n\n=\nDesde Arduino 0019, a librar\u00eda de Ethernet depende da librar\u00eda SPI.\nParece que est\u00e1s a usar esa librar\u00eda ou algunha outra librar\u00eda que depende da librar\u00eda SPI.\n\n @@ -1850,7 +1903,7 @@ baud=baudio compilation\ =compilaci\u00f3n #: ../../../processing/app/NetworkMonitor.java:111 -!connected\!= +connected\!=conectado\! #: ../../../../../app/src/processing/app/Editor.java:1352 !http\://www.arduino.cc/= @@ -1868,6 +1921,11 @@ ignoring\ invalid\ font\ size\ {0}=ignorando tama\u00f1o inv\u00e1lido de tipo d #: Editor.java:936 Editor.java:943 name\ is\ null=nome \u00e9 nulo +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=serialMenu \u00e9 nulo @@ -1909,7 +1967,7 @@ upload=carga #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:76 #, java-format -!{0}\ must\ be\ a\ folder= +{0}\ must\ be\ a\ folder={0} ten que ser unha carpeta #: ../../../../../app/src/processing/app/EditorLineStatus.java:109 #, java-format @@ -1935,18 +1993,18 @@ upload=carga #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format -!{0}\:\ Invalid\ option\ for\ board\ "{1}"= +{0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: Opci\u00f3n inv\u00e1lida para a placa "{1}" #: ../../../processing/app/Base.java:502 #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_gl_ES.po b/arduino-core/src/processing/app/i18n/Resources_gl_ES.po index a0cbc63a7bf..99f16bb0838 100644 --- a/arduino-core/src/processing/app/i18n/Resources_gl_ES.po +++ b/arduino-core/src/processing/app/i18n/Resources_gl_ES.po @@ -17,16 +17,20 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: +# Alejandro Dafonte , 2018-2019 # Nemigo Galiza , 2017 -# Onyrosgaming, 2016 -# Xurxo Guerra Perez , 2015,2017 +# 8f584766963ace0a9c30ccdf3426b35e_685a338, 2016 +# Xurxo Guerra Perez , 2015,2017-2018 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" -"Last-Translator: Cristian Maglie \n" +"PO-Revision-Date: 2019-10-08 15:42+0000\n" +"Last-Translator: Alejandro Dafonte \n" "Language-Team: Galician (Spain) (http://www.transifex.com/mbanzi/arduino-ide-15/language/gl_ES/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -98,12 +102,12 @@ msgstr " Do you " "want to save changes to this sketch
before closing?

If you don't " "save, your changes will be lost." -msgstr " Želiš shraniti spremembe v tej datoteki
preden se zapre?

Če ne shraniš, bodo spremembe izgubljene." +msgstr " Želite shraniti spremembe te skice
preden se zapre?

Sicer bodo spremembe izgubljene." #: Editor.java:2169 #, java-format @@ -110,16 +114,16 @@ msgstr "Knjižnica z imenom {0} že obstaja" msgid "" "A new version of Arduino is available,\n" "would you like to visit the Arduino download page?" -msgstr "Na voljo je nova različica Arduino.\nŽeliš obiskati spletno stran Arduino in jo sneti?" +msgstr "Na voljo je nova različica Arduina.\nŽelite obiskati spletno stran za prenos Arduina?" #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format msgid "A newer {0} package is available" -msgstr "" +msgstr "Na voljo je novejši paket {0}" #: ../../../../../app/src/processing/app/Base.java:2307 msgid "A subfolder of your sketchbook is not a valid library" -msgstr "" +msgstr "Podimenik vaše skicirke ni veljavna knjižnica" #: Editor.java:1116 msgid "About Arduino" @@ -127,11 +131,11 @@ msgstr "O Arduinu" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 msgid "Acoli" -msgstr "" +msgstr "Acoli" #: ../../../../../app/src/processing/app/Base.java:1177 msgid "Add .ZIP Library..." -msgstr "" +msgstr "Dodaj .ZIP knjižnico..." #: Editor.java:650 msgid "Add File..." @@ -139,54 +143,54 @@ msgstr "Dodaj datoteko..." #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:73 msgid "Additional Boards Manager URLs" -msgstr "" +msgstr "Dodatni URL naslovi za upravljalnik ploščic" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:268 msgid "Additional Boards Manager URLs: " -msgstr "" +msgstr "Dodatni URL naslovi za upravljalnik ploščic" #: ../../../../../app/src/processing/app/Preferences.java:161 msgid "Afrikaans" -msgstr "" +msgstr "Afrikanščina" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 msgid "Aggressively cache compiled core" -msgstr "" +msgstr "Agresivno predpomnjenje prevedenega jedra" #: ../../../processing/app/Preferences.java:96 msgid "Albanian" -msgstr "" +msgstr "Albanščina" #: ../../../../../app/src/cc/arduino/contributions/ui/DropdownAllItem.java:42 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownAllCoresItem.java:43 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:187 msgid "All" -msgstr "" +msgstr "Vse" #: tools/FixEncoding.java:77 msgid "" "An error occurred while trying to fix the file encoding.\n" "Do not attempt to save this sketch as it may overwrite\n" "the old version. Use Open to re-open the sketch and try again.\n" -msgstr "Napaka se je pojavila med poskusom popravila ⏎ kodiranja datoteke. Ne shranjuj te skice, saj bi lahko prepisala ⏎ starejšo različico. Uporabi \"Odpri\" za ponovno odpiranje ⏎skice in poskusi ponovno.\\n" +msgstr "Napaka se je pojavila med poskusom popravila kodiranja datoteke. Ne shranjujte te skice, saj bi lahko prepisala starejšo različico. Ponovno odprite skico z \"Odpri\" \nin poskusite znova.\\n" #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:99 msgid "An error occurred while updating libraries index!" -msgstr "" +msgstr "Ob posodabljanju indeksa knjižnic se je zgodila napaka!" #: ../../../processing/app/BaseNoGui.java:528 msgid "An error occurred while uploading the sketch" -msgstr "" +msgstr "Ob nalaganju skice se je zgodila napaka" #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 msgid "An error occurred while verifying the sketch" -msgstr "" +msgstr "Ob preverjanju skice se je zgodila napaka" #: ../../../processing/app/BaseNoGui.java:521 msgid "An error occurred while verifying/uploading the sketch" -msgstr "" +msgstr "Ob preverjanju/nalaganju skice se je zgodila napaka" #: Base.java:228 msgid "" @@ -217,7 +221,7 @@ msgstr "Arhiviranje skice prekinjeno." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format msgid "Archiving built core (caching) in: {0}" -msgstr "" +msgstr "Arhiviranje izgrajenega jedra (predpomnjenje) v: {0}" #: tools/Archiver.java:75 msgid "" @@ -227,7 +231,7 @@ msgstr "Arhiviranje skice je bilo prekinjeno, ker skica⏎ ni bila pravilno shr #: ../../../../../arduino-core/src/processing/app/I18n.java:24 msgid "Arduino" -msgstr "" +msgstr "Arduino" #: ../../../processing/app/I18n.java:83 msgid "Arduino ARM (32-bits) Boards" @@ -241,19 +245,19 @@ msgstr "Arduino AVR Plošče" msgid "" "Arduino can only open its own sketches\n" "and other files ending in .ino or .pde" -msgstr "" +msgstr "Arduino lahko odpre le svoje skice\nin druge datoteke s končnico .ino ali .pde" #: Base.java:1682 msgid "" "Arduino cannot run because it could not\n" "create a folder to store your settings." -msgstr "Arduino se ne more zagnati, ker ni mogel⏎ ustvariti mape za shranjevanje tvojih nastavitev." +msgstr "Arduino se ne more zagnati, ker ni mogel ustvariti mape za shranjevanje nastavitev." #: Base.java:1889 msgid "" "Arduino cannot run because it could not\n" "create a folder to store your sketchbook." -msgstr "Arduino se ne more zagnati, ker ni \\n mogel ustvariti mape za tvojo skico" +msgstr "Arduino se ne more zagnati, ker ni \\n mogel ustvariti mape za skicirke" #: ../../../processing/app/EditorStatus.java:471 msgid "Arduino: " @@ -262,7 +266,7 @@ msgstr "Arduino:" #: Sketch.java:588 #, java-format msgid "Are you sure you want to delete \"{0}\"?" -msgstr "Si prepričan/a, da želiš izbrisati \"{0}\"?" +msgstr "Res želite izbrisati \"{0}\"?" #: Sketch.java:587 msgid "Are you sure you want to delete this sketch?" @@ -270,25 +274,25 @@ msgstr "Si prepričan/a, da želiš izbrisati to skico?" #: ../../../processing/app/Base.java:356 msgid "Argument required for --board" -msgstr "" +msgstr "Argument, ki ga zahteva --board" #: ../../../processing/app/Base.java:363 msgid "Argument required for --port" -msgstr "" +msgstr "Argument, ki ga zahteva --port" #: ../../../processing/app/Base.java:377 msgid "Argument required for --pref" -msgstr "" +msgstr "Argument, ki ga zahteva --pref" #: ../../../processing/app/Base.java:384 msgid "Argument required for --preferences-file" -msgstr "" +msgstr "Argument, ki ga zahteva --preferences-file" #: ../../../processing/app/helpers/CommandlineParser.java:76 #: ../../../processing/app/helpers/CommandlineParser.java:83 #, java-format msgid "Argument required for {0}" -msgstr "" +msgstr "Argument, ki ga zahteva {0}" #: ../../../processing/app/Preferences.java:137 msgid "Armenian" @@ -300,7 +304,7 @@ msgstr "Astursko " #: ../../../processing/app/debug/Compiler.java:145 msgid "Authorization required" -msgstr "" +msgstr "Potrebna je overitev" #: tools/AutoFormat.java:91 msgid "Auto Format" @@ -312,15 +316,15 @@ msgstr "Avtomatsko formatiranje končano." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:457 msgid "Auto-detect proxy settings" -msgstr "" +msgstr "Samodejno prepoznavanje nastavitev proxy strežnika" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:264 msgid "Automatic" -msgstr "" +msgstr "Samodejno" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:474 msgid "Automatic proxy configuration URL:" -msgstr "" +msgstr "URL naslov za samodejno nastavitev proxy strežnika" #: SerialMonitor.java:110 msgid "Autoscroll" @@ -337,7 +341,7 @@ msgstr "Izbrana napačna datoteka" #: ../../../processing/app/Preferences.java:149 msgid "Basque" -msgstr "" +msgstr "Baskovščina" #: ../../../processing/app/Preferences.java:139 msgid "Belarusian" @@ -350,18 +354,18 @@ msgstr "Plošča" #: ../../../../../app//src/processing/app/Editor.java:2824 msgid "Board Info" -msgstr "" +msgstr "Podatki po plošči" #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 #, java-format msgid "Board at {0} is not available" -msgstr "" +msgstr "Plošča na {0} ni na voljo" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:62 #, java-format msgid "Board {0} (platform {1}, package {2}) is unknown" -msgstr "" +msgstr "Plošča {0} (platforma {1}, paket {2}) ni znana" #: ../../../processing/app/debug/TargetBoard.java:42 #, java-format @@ -376,20 +380,20 @@ msgstr "Plošča:" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 msgid "Boards Manager" -msgstr "" +msgstr "Upravljalnik plošč" #: ../../../../../app/src/processing/app/Base.java:1320 msgid "Boards Manager..." -msgstr "" +msgstr "Upravljalnik plošč..." #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:328 msgid "Boards included in this package:" -msgstr "" +msgstr "Plošče, ki jih vključuje ta paket:" #: ../../../processing/app/debug/Compiler.java:1273 #, java-format msgid "Bootloader file specified but missing: {0}" -msgstr "" +msgstr "Datoteka zagonskega nalagalnika je določena, a ni najdena: {0}" #: ../../../processing/app/Preferences.java:140 msgid "Bosnian" @@ -405,11 +409,11 @@ msgstr "Brskaj" #: ../../../processing/app/Sketch.java:1530 msgid "Build options changed, rebuilding all" -msgstr "" +msgstr "Opcije izgradnje so se spremenile - ponovna izgradnja vsega" #: ../../../../../app/src/processing/app/Base.java:1210 msgid "Built-in Examples" -msgstr "" +msgstr "Vgrajeni primeri" #: ../../../processing/app/Preferences.java:80 msgid "Bulgarian" @@ -431,21 +435,21 @@ msgstr "Pečenje zagonskega nalagalnika na I/O Ploščo (to lahko traja nekaj mi msgid "" "CRC doesn't match, file is corrupted. It may be a temporary problem, please " "retry later." -msgstr "" +msgstr "CRC se ne sklada - datoteka je pokvarjena. Lahko gre za začasno težavo. Kasneje poskusite znova." #: ../../../processing/app/Base.java:379 #, java-format msgid "Can only pass one of: {0}" -msgstr "" +msgstr "Lahko preidem le preko enega od: {0}" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 msgid "Can't enable external editor" -msgstr "" +msgstr "Ne morem vključiti zunanjega urejevalnika" #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 msgid "Can't find the sketch in the specified path" -msgstr "" +msgstr "V podani poti ne najdem skice" #: ../../../processing/app/Preferences.java:92 msgid "Canadian French" @@ -458,7 +462,7 @@ msgstr "Prekliči" #: ../../../processing/app/Base.java:465 msgid "Cannot specify any sketch files" -msgstr "" +msgstr "Ne morem določiti nobene datoteke s skico" #: SerialMonitor.java:112 msgid "Carriage return" @@ -486,11 +490,11 @@ msgstr "Kitajsko (Tajvan) (Big5)" #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 msgid "Clear output" -msgstr "" +msgstr "Počisti izhod" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 msgid "Click for a list of unofficial boards support URLs" -msgstr "" +msgstr "Kliknite za seznam URL naslovov neuradno podprtih plošč" #: Editor.java:521 Editor.java:2024 msgid "Close" @@ -502,11 +506,11 @@ msgstr "Komentiraj/Odkomentiraj " #: ../../../../../arduino-core/src/processing/app/I18n.java:30 msgid "Communication" -msgstr "" +msgstr "Komunikacija" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 msgid "Compiler warnings: " -msgstr "" +msgstr "Opozorila prevajalnika:" #: Sketch.java:1608 Editor.java:1890 msgid "Compiling sketch..." @@ -514,7 +518,7 @@ msgstr "Prevajanje skice..." #: ../../../../../arduino-core/src/processing/app/I18n.java:27 msgid "Contributed" -msgstr "" +msgstr "Prispeval" #: Editor.java:1157 Editor.java:2707 msgid "Copy" @@ -544,7 +548,7 @@ msgstr "Kopiranje v ustrezno lokacijo ni bilo mogoče." #: ../../../../../arduino-core/src/processing/app/Sketch.java:342 #, java-format msgid "Could not create directory \"{0}\"" -msgstr "" +msgstr "Nisem mogel ustvariti imenika \"{0}\"" #: Editor.java:2179 msgid "Could not create the sketch folder." @@ -607,7 +611,7 @@ msgstr "Skice ni bilo mogoče ponovno shraniti" msgid "" "Could not read color theme settings.\n" "You'll need to reinstall Arduino." -msgstr "" +msgstr "Barvnih nastavitev za temo ni bilo mogoče prebrati.\nArduino boste morali ponovno namestiti." #: Preferences.java:219 msgid "" @@ -625,6 +629,11 @@ msgstr "Stare različice {0} ni mogoče izbrisati" msgid "Could not replace {0}" msgstr "Ni mogoče zamenjati {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Neuspešno zapisovanje nastavitvene datoteke: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Arhiviranje skice ni uspelo" @@ -654,23 +663,23 @@ msgstr "Izreži" #: ../../../../../app/src/processing/app/Preferences.java:119 msgid "Czech (Czech Republic)" -msgstr "" +msgstr "Češčina (Češka republika)" #: ../../../../../app/src/processing/app/Preferences.java:120 msgid "Danish (Denmark)" -msgstr "" +msgstr "Danščina (Danska)" #: ../../../../../arduino-core/src/processing/app/I18n.java:36 msgid "Data Processing" -msgstr "" +msgstr "Obdelava podatkov" #: ../../../../../arduino-core/src/processing/app/I18n.java:35 msgid "Data Storage" -msgstr "" +msgstr "Shramba podatkov" #: ../../../../../app/src/processing/app/Editor.java:1386 msgid "Decrease Font Size" -msgstr "" +msgstr "Zmanjšaj velikost pisave" #: Editor.java:1224 Editor.java:2765 msgid "Decrease Indent" @@ -678,7 +687,11 @@ msgstr "Zmanjšaj zamik" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 msgid "Default" -msgstr "" +msgstr "Privzeto" + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Privzeta tema" #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" @@ -686,7 +699,7 @@ msgstr "Izbriši" #: ../../../../../arduino-core/src/processing/app/I18n.java:33 msgid "Device Control" -msgstr "" +msgstr "Upravljanje naprave" #: debug/Uploader.java:199 msgid "" @@ -700,7 +713,7 @@ msgstr "Zavrni vse spremembe in ponovno naloži skico?" #: ../../../../../arduino-core/src/processing/app/I18n.java:29 msgid "Display" -msgstr "" +msgstr "Zaslon" #: ../../../processing/app/Preferences.java:438 msgid "Display line numbers" @@ -711,7 +724,7 @@ msgstr "Prikaži številčenje vrstic" msgid "" "Do you want to remove {0}?\n" "If you do so you won't be able to use {0} any more." -msgstr "" +msgstr "Želite odstraniti {0}?\nV tem primeru {0} ne bo več mogoče uporabljati." #: Editor.java:2064 msgid "Don't Save" @@ -728,7 +741,7 @@ msgstr "Zagonski nalagalnik je zapečen." #: ../../../processing/app/BaseNoGui.java:507 #: ../../../processing/app/BaseNoGui.java:552 msgid "Done compiling" -msgstr "" +msgstr "Prevajanje je končano" #: Editor.java:1911 Editor.java:1928 msgid "Done compiling." @@ -740,7 +753,7 @@ msgstr "Tiskanje končano." #: ../../../processing/app/BaseNoGui.java:514 msgid "Done uploading" -msgstr "" +msgstr "Nalaganje je končano" #: Editor.java:2395 Editor.java:2431 msgid "Done uploading." @@ -749,29 +762,29 @@ msgstr "Nalaganje končano." #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:105 #, java-format msgid "Downloaded {0}kb of {1}kb." -msgstr "" +msgstr "Prenešeno je {0}kb od {1}kb." #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:107 msgid "Downloading boards definitions." -msgstr "" +msgstr "Prenašanje definicij plošč" #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:86 msgid "Downloading libraries index..." -msgstr "" +msgstr "Prenašanje indeksov knjižnic..." #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:115 #, java-format msgid "Downloading library: {0}" -msgstr "" +msgstr "Prenašanje knjižnice: {0} " #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:318 msgid "Downloading platforms index..." -msgstr "" +msgstr "Prenašanje indeksov platforme..." #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:113 #, java-format msgid "Downloading tools ({0}/{1})." -msgstr "" +msgstr "Prenašanje orodji ({0}/{1})." #: Preferences.java:91 msgid "Dutch" @@ -783,7 +796,7 @@ msgstr "Nizozemsko (Nizozemska)" #: ../../../../../app/src/processing/app/Editor.java:1309 msgid "Edison Help" -msgstr "" +msgstr "Edison pomoč" #: Editor.java:1130 msgid "Edit" @@ -799,7 +812,7 @@ msgstr "Jezik urejevalnika:" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:322 msgid "Enable Code Folding" -msgstr "" +msgstr "Vklopi prepogibanje kode" #: Preferences.java:92 msgid "English" @@ -812,11 +825,11 @@ msgstr "Angleško (Združeno Kraljestvo)" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:269 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:271 msgid "Enter a comma separated list of urls" -msgstr "" +msgstr "Vnesite seznam url naslovov ločenih z vejicami" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:96 msgid "Enter additional URLs, one for each row" -msgstr "" +msgstr "Vnesite dodatne URL naslove, po enega za vsako vrstico" #: Editor.java:1062 msgid "Environment" @@ -835,7 +848,7 @@ msgstr "Napaka pri dodajanju datoteke" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:272 #, java-format msgid "Error compiling for board {0}." -msgstr "" +msgstr "Napaka pri prevajanju za ploščo {0}" #: debug/Compiler.java:369 msgid "Error compiling." @@ -844,7 +857,7 @@ msgstr "Napaka pri prevajanju." #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:113 #, java-format msgid "Error downloading {0}" -msgstr "" +msgstr "Napaka pri prenosu {0}" #: Base.java:1674 msgid "Error getting the Arduino data folder." @@ -855,6 +868,11 @@ msgstr "Napaka pri pridobivanju podatkovne mape Arduino." msgid "Error inside Serial.{0}()" msgstr "Napaka v Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Napaka pri nalaganju teme {0}: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -872,7 +890,26 @@ msgstr "Napaka pri odpiranju serijskih vrat ''{0}''." msgid "" "Error opening serial port ''{0}''. Try consulting the documentation at " "http://playground.arduino.cc/Linux/All#Permission" -msgstr "" +msgstr "Napaka pri odpiranju serijskih vrat \"{0}\". Poskusite uporabiti dokumentacijo na http://playground.arduino.cc/Linux/All#Permission" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Napaka pri razčlenjevanju indeksa knjižnice: {0}\nPoskusite odpreti Upravljalnik knjižnic, da posodobite indeks knjižnic." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Napaka pri branju knjižničnega indeksa: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Napaka pri branju indeksnega imenika paketa: {0}\n(morda gre za težavo s pravicami?)" #: Preferences.java:277 msgid "Error reading preferences" @@ -889,7 +926,7 @@ msgstr "Napaka pri branju datoteke z nastavitvami. Prosim izbriši⏎ (ali prema #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:166 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:245 msgid "Error running post install script" -msgstr "" +msgstr "Napaka pri izvajanju po-namestitvenega skripta" #: ../../../cc/arduino/packages/DiscoveryManager.java:25 msgid "Error starting discovery method: " @@ -908,9 +945,13 @@ msgstr "Napaka pri pečenju zagonskega nalagalnika." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Napaka pri pečenju zagonskega nalagalnika: manjka '{0}' nastavitveni parameter" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Napaka pri zapisovanju zagonskega nalagalnika: izberite serijska vrata" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" -msgstr "" +msgstr "Napaka pri prevajanju: manjka nastavitveni parameter '{0}' " #: Editor.java:2567 msgid "Error while printing." @@ -919,11 +960,11 @@ msgstr "Napaka pri tiskanju." #: ../../../../../arduino-core/src/processing/app/Serial.java:117 #, java-format msgid "Error while setting serial port parameters: {0} {1} {2} {3}" -msgstr "" +msgstr "Napaka ob določanju parametrov serijskih vrat: {0} {1} {2} {3}" #: ../../../processing/app/BaseNoGui.java:528 msgid "Error while uploading" -msgstr "" +msgstr "Napaka pri nalaganju" #: ../../../processing/app/Editor.java:2409 #: ../../../processing/app/Editor.java:2449 @@ -934,63 +975,59 @@ msgstr "Napaka pri nalaganju: manjka '{0}' nastavitveni parameter" #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 msgid "Error while verifying" -msgstr "" +msgstr "Napaka pri preverjanju" #: ../../../processing/app/BaseNoGui.java:521 msgid "Error while verifying/uploading" -msgstr "" +msgstr "Napaka pri preverjanju/nalaganju" #: Preferences.java:93 msgid "Estonian" msgstr "Estonsko" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estonsko (Estonija)" - #: Editor.java:516 msgid "Examples" msgstr "Primeri" #: ../../../../../app/src/processing/app/Base.java:1185 msgid "Examples for any board" -msgstr "" +msgstr "Primeri za poljubno ploščo" #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 #, java-format msgid "Examples for {0}" -msgstr "" +msgstr "Primeri za {0}" #: ../../../../../app/src/processing/app/Base.java:1244 msgid "Examples from Custom Libraries" -msgstr "" +msgstr "Primeri za Lastne knjižnice" #: ../../../../../app/src/processing/app/Base.java:1329 msgid "Examples from Other Libraries" -msgstr "" +msgstr "Primeri za Druge knjižnice" #: ../../../../../app/src/processing/app/Editor.java:753 msgid "Export canceled, changes must first be saved." -msgstr "" +msgstr "Izvoz je prekinjen, spremembe morajo biti najprej shranjene" #: ../../../../../app/src/processing/app/Editor.java:750 msgid "Export compiled Binary" -msgstr "" +msgstr "Izvozi prevedene programe" #: ../../../processing/app/Base.java:416 #, java-format msgid "Failed to open sketch: \"{0}\"" -msgstr "" +msgstr "Neuspešno odpiranje skice: \"{0}\"" #: ../../../../../arduino-core/src/processing/app/SketchFile.java:183 #, java-format msgid "Failed to rename \"{0}\" to \"{1}\"" -msgstr "" +msgstr "Neuspešno preimenovanje \"{0}\" v \"{1}\"" #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 msgid "Failed to rename sketch folder" -msgstr "" +msgstr "Neuspešno preimenovanje imenika skice" #: Editor.java:491 msgid "File" @@ -999,7 +1036,7 @@ msgstr "Datoteka" #: ../../../../../arduino-core/src/processing/app/SketchData.java:139 #, java-format msgid "File name {0} is invalid: ignored" -msgstr "" +msgstr "Ime datoteke {0} je napačno: prezrto" #: Preferences.java:94 msgid "Filipino" @@ -1007,7 +1044,7 @@ msgstr "Filipinsko" #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:95 msgid "Filter your search..." -msgstr "" +msgstr "Filtriranje iskanja..." #: FindReplace.java:124 FindReplace.java:127 msgid "Find" @@ -1046,12 +1083,12 @@ msgstr "Popravi kodiranje in ponovno naloži" msgid "" "For information on installing libraries, see: " "http://www.arduino.cc/en/Guide/Libraries/n" -msgstr "" +msgstr "Za več podatkov o nameščanju knjižnic glejte: http://www.arduino.cc/en/Guide/Libraries\n" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:118 #, java-format msgid "Forcing reset using 1200bps open/close on port {0}" -msgstr "" +msgstr "Prisilno resetiranje z uporabo 1200 b/s odpri/zapri a vratih {0}" #: Preferences.java:95 msgid "French" @@ -1067,11 +1104,11 @@ msgstr "Galicijsko" #: ../../../../../app/src/processing/app/Preferences.java:176 msgid "Galician (Spain)" -msgstr "" +msgstr "Galščina (Španija)" #: ../../../../../app/src/processing/app/Editor.java:1288 msgid "Galileo Help" -msgstr "" +msgstr "Galileo pomoč" #: ../../../processing/app/Preferences.java:94 msgid "Georgian" @@ -1083,7 +1120,7 @@ msgstr "Nemško" #: ../../../../../app//src/processing/app/Editor.java:817 msgid "Get Board Info" -msgstr "" +msgstr "Podatki o plošči" #: Editor.java:1054 msgid "Getting Started" @@ -1103,11 +1140,11 @@ msgstr "Globalne spremenljivke uporabljajo {0} bajtov dinamičnega spomina." #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:66 msgid "Go to line" -msgstr "" +msgstr "Pojdi na vrstico" #: ../../../../../app/src/processing/app/Editor.java:1460 msgid "Go to line..." -msgstr "" +msgstr "Pojdi na vrstico..." #: Preferences.java:98 msgid "Greek" @@ -1127,7 +1164,7 @@ msgstr "Hindujsko " #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:489 msgid "Host name:" -msgstr "" +msgstr "Ime gostitelja:" #: Sketch.java:295 msgid "" @@ -1145,15 +1182,15 @@ msgstr "Madžarsko" #: ../../../../../app/src/processing/app/Base.java:1319 msgid "INCOMPATIBLE" -msgstr "" +msgstr "NEZDRUŽLJIVO" #: FindReplace.java:96 msgid "Ignore Case" msgstr "Prezri male/velike črke" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Ignoriram napačno ime knjižnice" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "Prezri knjižnico z napačnim imenom" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1172,16 +1209,16 @@ msgstr "V Arduinu 1.0 se je privzeta končnica datoteke spremenila⏎\niz .pde v #: ../../../../../app/src/processing/app/Editor.java:778 msgid "Include Library" -msgstr "" +msgstr "Vključi knjižnico" #: ../../../processing/app/BaseNoGui.java:768 #: ../../../processing/app/BaseNoGui.java:771 msgid "Incorrect IDE installation folder" -msgstr "" +msgstr "Nepravien namestitveni imenik za IDE" #: ../../../../../app/src/processing/app/Editor.java:1378 msgid "Increase Font Size" -msgstr "" +msgstr "Povečaj pisavo" #: Editor.java:1216 Editor.java:2757 msgid "Increase Indent" @@ -1193,7 +1230,7 @@ msgstr "Indonezijsko" #: ../../../../../app/src/processing/app/Base.java:295 msgid "Initializing packages..." -msgstr "" +msgstr "Inicializacija paketov..." #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:75 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:81 @@ -1202,38 +1239,38 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:91 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:303 msgid "Install" -msgstr "" +msgstr "Namestitev" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:170 msgid "Installation completed!" -msgstr "" +msgstr "Namestitev je končana!" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java:50 msgid "Installed" -msgstr "" +msgstr "Nameščeno" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 msgid "Installing boards..." -msgstr "" +msgstr "Nameščanje plošč..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "" +msgid "Installing library: {0}:{1}" +msgstr "Nameščanje knjižnice: {0}:{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format msgid "Installing tools ({0}/{1})..." -msgstr "" +msgstr "Nameščanje orodji ({0}/{1})..." #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:239 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:172 msgid "Installing..." -msgstr "" +msgstr "Nameščanje..." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:256 msgid "Interface scale:" -msgstr "" +msgstr "Merilo vmesnika:" #: ../../../processing/app/Base.java:1204 #, java-format @@ -1243,7 +1280,18 @@ msgstr "Neveljavna knjižnica najdena v {0}: {1}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:66 #, java-format msgid "Invalid quoting: no closing [{0}] char found." -msgstr "" +msgstr "Napačno navajanje: zaključni znak [{0}] ni bil najden" + +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Napačna različica '{0}' za knjižnico v: {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Napačna različica {0}" #: Preferences.java:102 msgid "Italian" @@ -1255,7 +1303,7 @@ msgstr "Japonsko" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:81 msgid "Kazakh" -msgstr "" +msgstr "Kazaščina" #: Preferences.java:104 msgid "Korean" @@ -1267,24 +1315,24 @@ msgstr "Latvijsko " #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:93 msgid "Library Manager" -msgstr "" +msgstr "Upravljalnik knjižnic" #: ../../../../../app/src/processing/app/Base.java:2349 msgid "Library added to your libraries. Check \"Include library\" menu" -msgstr "" +msgstr "Knjižnica je bila dodana v knjižnice. Preverite meni \"Vključi knjižnice\"" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" -msgstr "" +msgstr "Knjižnica ne more hkrati uporabljati 'src' in 'utility' imenikov. Preverite {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "" +msgid "Library is already installed: {0}:{1}" +msgstr "Knjižnica je že nameščena: {0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" -msgstr "" +msgstr "Številka vrstice:" #: Preferences.java:106 msgid "Lithuaninan" @@ -1292,24 +1340,24 @@ msgstr "Litvansko " #: ../../../../../app/src/processing/app/Base.java:132 msgid "Loading configuration..." -msgstr "" +msgstr "Nalaganje konfiguracije..." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 #, java-format msgid "Looking for recipes like {0}*{1}" -msgstr "" +msgstr "Iskanje prejemnikov, kot so {0}*{1}" #: ../../../processing/app/Sketch.java:1684 msgid "Low memory available, stability problems may occur." -msgstr "" +msgstr "Na voljo je malo pomnilnika, kar lahko privede do težav s stabilnostjo" #: ../../../../../app/src/processing/app/Base.java:1168 msgid "Manage Libraries..." -msgstr "" +msgstr "Upravljanje knjižnic..." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:466 msgid "Manual proxy configuration" -msgstr "" +msgstr "Ročno nastavljanje proxy strežnika" #: Preferences.java:107 msgid "Marathi" @@ -1322,15 +1370,15 @@ msgstr "Sporočilo" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:81 #, java-format msgid "Missing '{0}' from library in {1}" -msgstr "" +msgstr "V knjižnici {1} manjka '{0}'" #: ../../../processing/app/BaseNoGui.java:455 msgid "Mode not supported" -msgstr "" +msgstr "Način ni podprt" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:186 msgid "More" -msgstr "" +msgstr "Več" #: Preferences.java:449 msgid "More preferences can be edited directly in the file" @@ -1342,16 +1390,16 @@ msgstr "Prenašam" #: ../../../processing/app/BaseNoGui.java:484 msgid "Multiple files not supported" -msgstr "" +msgstr "Ni podpore za več datotek" #: ../../../processing/app/debug/Compiler.java:520 #, java-format msgid "Multiple libraries were found for \"{0}\"" -msgstr "" +msgstr "Za \"{0}\" je bilo najdenih več knjižnic" #: ../../../processing/app/Base.java:395 msgid "Must specify exactly one sketch file" -msgstr "" +msgstr "Treba je določiti točno eno datoteko s skico" #: Sketch.java:282 msgid "Name for new file:" @@ -1359,7 +1407,7 @@ msgstr "Ime nove datoteke:" #: ../../../../../app//src/processing/app/Editor.java:2809 msgid "Native serial port, can't obtain info" -msgstr "" +msgstr "Lastna serijska vrata - ne morem pridobiti podatkov" #: ../../../processing/app/Preferences.java:149 msgid "Nepali" @@ -1367,15 +1415,15 @@ msgstr "Nepalsko" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:601 msgid "Network" -msgstr "" +msgstr "Omrežje" #: ../../../../../app//src/processing/app/Editor.java:2804 msgid "Network port, can't obtain info" -msgstr "" +msgstr "Omrežna vrata, ne morem pridobiti podatkov" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Network ports" -msgstr "" +msgstr "Omrežna vrata" #: ../../../cc/arduino/packages/uploaders/SSHUploader.java:51 msgid "Network upload using programmer not supported" @@ -1403,7 +1451,7 @@ msgstr "Ne" #: ../../../processing/app/debug/Compiler.java:158 msgid "No authorization data found" -msgstr "" +msgstr "Ni najdenih podatkov za overitev" #: tools/format/src/AutoFormat.java:54 tools/AutoFormat.java:916 msgid "No changes necessary for Auto Format." @@ -1411,11 +1459,11 @@ msgstr "Ni potrebnih sprememb za Avtomatsko formatiranje." #: ../../../processing/app/BaseNoGui.java:665 msgid "No command line parameters found" -msgstr "" +msgstr "Ni najdenih parametrov ukazne vrstice" #: ../../../processing/app/debug/Compiler.java:200 msgid "No compiled sketch found" -msgstr "" +msgstr "Ni najdene prevedene skice" #: Editor.java:373 msgid "No files were added to the sketch." @@ -1431,11 +1479,11 @@ msgstr "Brez urejanja" #: ../../../processing/app/BaseNoGui.java:665 msgid "No parameters" -msgstr "" +msgstr "Ni parametrov" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:453 msgid "No proxy" -msgstr "" +msgstr "Ni proxy strežnika" #: Base.java:541 msgid "No really, time for some fresh air for you." @@ -1449,15 +1497,15 @@ msgstr "Reference za \"{0}\" ni na voljo" #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 msgid "No sketch" -msgstr "" +msgstr "Ni skice" #: ../../../processing/app/BaseNoGui.java:428 msgid "No sketchbook" -msgstr "" +msgstr "Ni skicirke" #: ../../../processing/app/Sketch.java:204 msgid "No valid code files found" -msgstr "" +msgstr "Nisem našel veljavnih datotek s kodo" #: ../../../processing/app/debug/TargetPackage.java:63 #, java-format @@ -1466,7 +1514,7 @@ msgstr "V mapi {0} ni veljavnih definicij za strojno opremo" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:184 msgid "None" -msgstr "" +msgstr "Brez" #: ../../../processing/app/Preferences.java:108 msgid "Norwegian Bokmål" @@ -1489,7 +1537,7 @@ msgstr "Skici je bila dodana ena datoteka." #: ../../../processing/app/BaseNoGui.java:455 msgid "Only --verify, --upload or --get-pref are supported" -msgstr "" +msgstr "Podprti so le --verify, --upload ali --get-pref" #: EditorToolbar.java:41 msgid "Open" @@ -1497,7 +1545,7 @@ msgstr "Odpri" #: ../../../../../app/src/processing/app/Editor.java:625 msgid "Open Recent" -msgstr "" +msgstr "Odpri nedavno uporabljene" #: Editor.java:2688 msgid "Open URL" @@ -1513,7 +1561,7 @@ msgstr "Odpri..." #: ../../../../../arduino-core/src/processing/app/I18n.java:37 msgid "Other" -msgstr "" +msgstr "Drugo" #: Editor.java:563 msgid "Page Setup" @@ -1521,7 +1569,7 @@ msgstr "Postavitev strani" #: ../../../../../arduino-core/src/processing/app/I18n.java:25 msgid "Partner" -msgstr "" +msgstr "Partner" #: ../../../processing/app/forms/PasswordAuthorizationDialog.java:44 msgid "Password:" @@ -1537,20 +1585,20 @@ msgstr "Perzijsko" #: ../../../processing/app/Preferences.java:161 msgid "Persian (Iran)" -msgstr "" +msgstr "Farsi (Iran)" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:79 #, java-format msgid "Platform {0} (package {1}) is unknown" -msgstr "" +msgstr "Platforma {0} (paket {1}) ni poznana" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:195 msgid "Please confirm boards deletion" -msgstr "" +msgstr "Potrdite izbris plošče" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "Please confirm library deletion" -msgstr "" +msgstr "Potrdite izbris knjižnice" #: debug/Compiler.java:408 msgid "Please import the SPI library from the Sketch > Import Library menu." @@ -1558,20 +1606,20 @@ msgstr "Prosim uvozi SPI knjižnico iz menija Skica > Uvozi knjižnico." #: ../../../processing/app/debug/Compiler.java:529 msgid "Please import the Wire library from the Sketch > Import Library menu." -msgstr "" +msgstr "Uvozite knjižnico Wire iz menija Skica > Uvozi knjižnico." #: ../../../../../app//src/processing/app/Editor.java:2799 msgid "Please select a port to obtain board info" -msgstr "" +msgstr "Izberite vrata za pridobitev podatkov o plošči" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 msgid "Please select a programmer from Tools->Programmer menu" -msgstr "" +msgstr "Izberite programator iz menija Orodja -> Programator" #: ../../../../../app/src/processing/app/Editor.java:2613 msgid "Plotter not available while serial monitor is open" -msgstr "" +msgstr "Risalnik ni na voljo, kadar je serijski monitor odprt" #: Preferences.java:110 msgid "Polish" @@ -1583,7 +1631,7 @@ msgstr "Vrata" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:491 msgid "Port number:" -msgstr "" +msgstr "Števila vrat:" #: ../../../processing/app/Preferences.java:151 msgid "Portugese" @@ -1603,7 +1651,7 @@ msgstr "Nastavitve" #: ../../../../../app/src/processing/app/Base.java:297 msgid "Preparing boards..." -msgstr "" +msgstr "Priprava plošč..." #: FindReplace.java:123 FindReplace.java:128 msgid "Previous" @@ -1644,7 +1692,7 @@ msgstr "Težava pri dostopu do mape /www/sd na plošči" #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:206 #, java-format msgid "Problem accessing files in folder \"{0}\"" -msgstr "" +msgstr "Težava pri dostopu do datotek v imeniku \"{0}\"" #: Base.java:1673 msgid "Problem getting data folder" @@ -1671,7 +1719,7 @@ msgstr "Programator" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:80 #, java-format msgid "Progress {0}" -msgstr "" +msgstr "Napredek {0}" #: Base.java:783 Editor.java:593 msgid "Quit" @@ -1679,11 +1727,11 @@ msgstr "Zapri" #: ../../../../../app/src/processing/app/Base.java:1233 msgid "RETIRED" -msgstr "" +msgstr "UPOKOJEN" #: ../../../../../arduino-core/src/processing/app/I18n.java:26 msgid "Recommended" -msgstr "" +msgstr "Priporočeno" #: Editor.java:1138 Editor.java:1140 Editor.java:1390 msgid "Redo" @@ -1695,17 +1743,17 @@ msgstr "Namigi" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 msgid "Remove" -msgstr "" +msgstr "Odstrani" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "" +msgid "Removing library: {0}:{1}" +msgstr "Odstranitev knjižnice: {0}:{1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 msgid "Removing..." -msgstr "" +msgstr "Odstranjevanje..." #: EditorHeader.java:300 msgid "Rename" @@ -1734,7 +1782,11 @@ msgstr "Zamenjaj z:" #: ../../../../../arduino-core/src/processing/app/I18n.java:28 msgid "Retired" -msgstr "" +msgstr "Upokojen" + +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Ponovno poskusim naložiti z uporabo drugih serijskih vrat?" #: Preferences.java:113 msgid "Romanian" @@ -1743,12 +1795,12 @@ msgstr "Romunsko" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:83 #, java-format msgid "Running recipe: {0}" -msgstr "" +msgstr "Zaganjam recept: {0}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:82 #, java-format msgid "Running: {0}" -msgstr "" +msgstr "Se izvaja: {0}" #: Preferences.java:114 msgid "Russian" @@ -1778,7 +1830,7 @@ msgstr "Shrani mapo skice kot..." #: ../../../../../app/src/processing/app/Preferences.java:425 msgid "Save when verifying or uploading" -msgstr "" +msgstr "Shrani ob preverjanju ali nalaganju" #: Editor.java:2270 Editor.java:2308 msgid "Saving..." @@ -1786,7 +1838,7 @@ msgstr "Shranjujem..." #: ../../../processing/app/FindReplace.java:131 msgid "Search all Sketch Tabs" -msgstr "" +msgstr "Iskanje po vseh zavihkih skic" #: Base.java:1909 msgid "Select (or create new) folder for sketches..." @@ -1811,7 +1863,7 @@ msgstr "Izberi novo lokacijo skicirke" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:237 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:249 msgid "Select version" -msgstr "" +msgstr "Izberite različico" #: ../../../processing/app/debug/Compiler.java:146 msgid "Selected board depends on '{0}' core (not installed)." @@ -1819,11 +1871,11 @@ msgstr "Izbrana plošča je odvisna od jedra '{0}' (ni nameščeno)." #: ../../../../../app/src/processing/app/Base.java:374 msgid "Selected board is not available" -msgstr "" +msgstr "Izbrana plošča ni na voljo" #: ../../../../../app/src/processing/app/Base.java:423 msgid "Selected library is not available" -msgstr "" +msgstr "Izbrana knjižnica ni na voljo" #: SerialMonitor.java:93 msgid "Send" @@ -1831,7 +1883,7 @@ msgstr "Pošlji" #: ../../../../../arduino-core/src/processing/app/I18n.java:32 msgid "Sensors" -msgstr "" +msgstr "Senzorji" #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:669 msgid "Serial Monitor" @@ -1839,18 +1891,18 @@ msgstr "Serijski vmesnik" #: ../../../../../app/src/processing/app/Editor.java:804 msgid "Serial Plotter" -msgstr "" +msgstr "Serijski risalnik" #: ../../../../../app/src/processing/app/Editor.java:2325 #, java-format msgid "" "Serial monitor is not supported on network ports such as {0} for the {1} in " "this release" -msgstr "" +msgstr "Serijski monitor ni podprt na omrežnih vratih, kot so {0} za {1} v tej izdaji" #: ../../../../../app/src/processing/app/Editor.java:2516 msgid "Serial monitor not available while plotter is open" -msgstr "" +msgstr "Serijski monitor ni na voljo, ko je odprt risalnik" #: Serial.java:194 #, java-format @@ -1859,25 +1911,28 @@ msgid "" " Serial Port menu?" msgstr "Serijska vrata ''{0}'' niso bila najdena. Si izbral/a pravilna vrata v meniju Orodja > Serijska vrata?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Serijska vrata niso izbrana." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Serijski vrat {0} ni bilo mogoče najti.⏎ Poskusi ponovno z drugimi serijskimi vrati." +msgid "Serial port {0} not found." +msgstr "Serijska vrata {0} niso bila najdena." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" -msgstr "" +msgstr "Serijska vrata" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:84 #, java-format msgid "Setting build path to {0}" -msgstr "" +msgstr "Nastavljam pot za izgradnjo na {0}" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:450 msgid "Settings" -msgstr "" +msgstr "Nastavitve" #: Base.java:1681 msgid "Settings issues" @@ -1887,13 +1942,17 @@ msgstr "Težava z nastavitvami" msgid "Show Sketch Folder" msgstr "Pokaži mapo skice" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Prikaži časovni žig" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Prikaži izpis med:" #: ../../../../../arduino-core/src/processing/app/I18n.java:31 msgid "Signal Input/Output" -msgstr "" +msgstr "Signal vhod/izhod" #: Editor.java:607 msgid "Sketch" @@ -1946,16 +2005,16 @@ msgstr "Lokacija skicirke:" #: ../../../processing/app/BaseNoGui.java:428 msgid "Sketchbook path not defined" -msgstr "" +msgstr "Pot do skicirke ni podana" #: ../../../../../arduino-core//src/cc/arduino/contributions/packages/ContributionsIndexer.java:96 #, java-format msgid "Skipping contributed index file {0}, parsing error occured:" -msgstr "" +msgstr "Izpuščam podano indeksno datoteko {0}, zaradi napake pri razčlenjevanju:" #: ../../../../../app/src/processing/app/Preferences.java:185 msgid "Slovak" -msgstr "" +msgstr "Slovaščina" #: ../../../processing/app/Preferences.java:152 msgid "Slovenian" @@ -1977,7 +2036,7 @@ msgstr "Nekatere datoteke so označene samo za branje, zato⏎ boš moral/a skic #: ../../../../../arduino-core/src/processing/app/Sketch.java:246 #, java-format msgid "Sorry, the folder \"{0}\" already exists." -msgstr "" +msgstr "Imenik \"{0}\" že obstaja." #: Preferences.java:115 msgid "Spanish" @@ -1985,11 +2044,11 @@ msgstr "Špansko" #: ../../../../../app/src/processing/app/Base.java:2333 msgid "Specified folder/zip file does not contain a valid library" -msgstr "" +msgstr "Izbrani imenik/zip datoteka ne vsebuje veljavne knjižnice" #: ../../../../../app/src/processing/app/Base.java:466 msgid "Starting..." -msgstr "" +msgstr "Zagon..." #: Base.java:540 msgid "Sunshine" @@ -2005,7 +2064,7 @@ msgstr "Privzete nastavitve" #: ../../../../../app/src/processing/app/Preferences.java:188 msgid "Talossan" -msgstr "" +msgstr "Talosanščina" #: Preferences.java:116 msgid "Tamil" @@ -2013,11 +2072,11 @@ msgstr "Tamilsko" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:102 msgid "Telugu" -msgstr "" +msgstr "Telugu" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:100 msgid "Thai" -msgstr "" +msgstr "Tajščina" #: debug/Compiler.java:414 msgid "The 'BYTE' keyword is no longer supported." @@ -2025,7 +2084,7 @@ msgstr "Ključna beseda \"BYTE\" ni več podprta." #: ../../../processing/app/BaseNoGui.java:484 msgid "The --upload option supports only one file at a time" -msgstr "" +msgstr "Opcija --upload naenkrat podpira le eno datoteko" #: debug/Compiler.java:426 msgid "The Client class has been renamed EthernetClient." @@ -2036,7 +2095,7 @@ msgstr "Client razred je bil preimenovan v EthernetClient." msgid "" "The IDE includes an updated {0} package, but you're using an older one.\n" "Do you want to upgrade {0}?" -msgstr "" +msgstr "IDE vključuje posodobljen paket {0}, vendar uporabljate starejšega.\nŽelite nadgraditi {0}?" #: debug/Compiler.java:420 msgid "The Server class has been renamed EthernetServer." @@ -2048,7 +2107,7 @@ msgstr "Udp razred je bil preimenovan v EthernetUdp." #: ../../../../../arduino-core/src/processing/app/BaseNoGui.java:177 msgid "The current selected board needs the core '{0}' that is not installed." -msgstr "" +msgstr "Trenutno izbrana plošča potrebuje jedro '{0}', ki ni nameščeno." #: Editor.java:2147 #, java-format @@ -2058,6 +2117,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "Datoteka \"{0}\" se mora nahajati v⏎\nmapi za skico imenovano \"{1}\".⏎\nUstvarim to mapo, premaknem datoteko in nadaljujem?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Knjižnice \"{0}\" ni mogoče uporabiti.\nImeniki knjižnic morajo imeti ime, ki se začne s črko ali številko, tej pa\nsledijo črke, številke, pomišljaji, pike ali podčrtaji. Največja dolžina je 63 znakov." + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2068,7 +2135,7 @@ msgstr "Knjižnice \"{0}\" ni mogoče uporabiti.⏎\nIme knjižnice lahko vsebuj #: ../../../../../app/src/processing/app/SketchController.java:170 msgid "The main file cannot use an extension" -msgstr "" +msgstr "Glavna datoteka ne more uporabiti razširitve" #: Sketch.java:356 msgid "The name cannot start with a period." @@ -2094,7 +2161,7 @@ msgstr "Skice \"{0}\" ni mogoče uporabiti.⏎\nIme skice lahko vsebuje le osnov #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format msgid "The sketch already contains a file named \"{0}\"" -msgstr "" +msgstr "Skica že vsebuje datoteko z imenom \"{0}\"" #: Sketch.java:1755 msgid "" @@ -2103,11 +2170,12 @@ msgid "" "but anything besides the code will be lost." msgstr "Mapa s skico je izginila.⏎\nPoskušal bom ponovno shraniti v isto lokacijo,⏎\nvendar bo potem vse, razen kode, izgubljeno." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "" +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Ime skice je bilo spremenjeno.\nImena skic se morajo začeti s črko ali številko, tej pa sledijo črke,\nštevilke, pomišljaji, pike ali podčrtaji. Največja dolžina je 63 znakov." #: Base.java:259 msgid "" @@ -2122,20 +2190,24 @@ msgstr "Mapa s skicami ne obstaja več. ⏎\nArduino bo izbral privzeto lokacijo msgid "" "The specified sketchbook folder contains your copy of the IDE.\n" "Please choose a different folder for your sketchbook." -msgstr "" +msgstr "Mapa določena za skicirko vsebuje kopijo vašega IDE razvojnega vmesnika. \nZa vašo skicirko izberite drugo mapo." + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Tema:" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" "Are you sure you want to delete it?" -msgstr "" +msgstr "Knjižnica ni na seznamu Upravljalnika knjižnic. Od tukaj je ne morete ponovno namestiti.\nSte prepričani, da jo želite izbrisati?" #: ../../../../../app/src/processing/app/EditorStatus.java:349 msgid "" "This report would have more information with\n" "\"Show verbose output during compilation\"\n" "option enabled in File -> Preferences.\n" -msgstr "" +msgstr "To poročilo bi vsebovalo več podatkov ob uporabi\nmožnosti \"Prikaži podroben opis med prevejanjem\",\nki se nahaja v meniju Datoteka -> Nastavitve.\n" #: Base.java:535 msgid "Time for a Break" @@ -2143,12 +2215,12 @@ msgstr "Čas za odmor" #: ../../../../../arduino-core/src/processing/app/I18n.java:34 msgid "Timing" -msgstr "" +msgstr "Časovna uskladitev" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:94 #, java-format msgid "Tool {0} is not available for your operating system." -msgstr "" +msgstr "Orodje {0} ni na voljo za vaš operacijski sistem." #: Editor.java:663 msgid "Tools" @@ -2156,7 +2228,7 @@ msgstr "Orodja" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:97 msgid "Topic" -msgstr "" +msgstr "Tema" #: Editor.java:1070 msgid "Troubleshooting" @@ -2169,7 +2241,7 @@ msgstr "Turško" #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:109 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:105 msgid "Type" -msgstr "" +msgstr "Tip" #: ../../../processing/app/Editor.java:2507 msgid "Type board password to access its console" @@ -2186,7 +2258,7 @@ msgstr "Ukrajinsko" #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:142 #, java-format msgid "Unable to connect to {0}" -msgstr "" +msgstr "Ne morem se povezati na {0}" #: ../../../processing/app/Editor.java:2524 #: ../../../processing/app/NetworkMonitor.java:145 @@ -2204,7 +2276,7 @@ msgstr "Povezavi ni mogoče vzpostaviti: napačno geslo? " #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:65 #, java-format msgid "Unable to find {0} in {1}" -msgstr "" +msgstr "Ne morem najti {0} v {1}" #: ../../../processing/app/Editor.java:2512 msgid "Unable to open serial monitor" @@ -2212,16 +2284,16 @@ msgstr "Serijskega vmesnika ni mogoče odpreti" #: ../../../../../app/src/processing/app/Editor.java:2709 msgid "Unable to open serial plotter" -msgstr "" +msgstr "Ne morem odpreti serijskega risalnika" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:94 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 msgid "Unable to reach Arduino.cc due to possible network issues." -msgstr "" +msgstr "Ne morem dostopati do Arduino.cc, verjetno zaradi težav z omrežjem." #: ../../../../../arduino-core/src/processing/app/I18n.java:38 msgid "Uncategorized" -msgstr "" +msgstr "Nekategorizirano" #: Editor.java:1133 Editor.java:1355 msgid "Undo" @@ -2230,16 +2302,16 @@ msgstr "Razveljavi" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:85 #, java-format msgid "Unhandled type {0} in context key {1}" -msgstr "" +msgstr "Neobravnavan tip {0} v kontekstualnem ključu {1}" #: ../../../../../app//src/processing/app/Editor.java:2818 msgid "Unknown board" -msgstr "" +msgstr "Neznana plošča" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format msgid "Unknown sketch file extension: {0}" -msgstr "" +msgstr "Neznana končnica datoteke s skico: {0}" #: Platform.java:168 msgid "" @@ -2251,7 +2323,7 @@ msgstr "Nepoznana platforma, zaganjalnik ni na voljo.⏎\nZa omogočanje odpiran #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownUpdatableLibrariesItem.java:27 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownUpdatableCoresItem.java:27 msgid "Updatable" -msgstr "" +msgstr "Nadgradljivo" #: UpdateCheck.java:111 msgid "Update" @@ -2264,21 +2336,21 @@ msgstr "Ob shranjevanju posodobi končnico datoteke (.pde -> .ino)" #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:88 #, java-format msgid "Updates available for some of your {0}boards{1}" -msgstr "" +msgstr "Za določene {0}plošče{1} so na voljo posodobitve" #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:90 #, java-format msgid "Updates available for some of your {0}boards{1} and {2}libraries{3}" -msgstr "" +msgstr "Za določene {0}plošče{1} in {2}knjižnice{3} so na voljo posodobitve" #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:86 #, java-format msgid "Updates available for some of your {0}libraries{1}" -msgstr "" +msgstr "Za določene {0}knjižnice{1} so na voljo posodobitve" #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:167 msgid "Updating list of installed libraries" -msgstr "" +msgstr "Posodabljanje seznama nameščenih knjižnic" #: EditorToolbar.java:41 Editor.java:545 msgid "Upload" @@ -2290,7 +2362,7 @@ msgstr "Naloži s programatorjem " #: ../../../../../app//src/processing/app/Editor.java:2814 msgid "Upload any sketch to obtain it" -msgstr "" +msgstr "Naložite poljubno skico, da jo pridobite" #: Editor.java:2403 Editor.java:2439 msgid "Upload canceled." @@ -2319,22 +2391,22 @@ msgstr "Uporabi zunanji urejevalnik" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:493 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:499 msgid "Username:" -msgstr "" +msgstr "Uporabniško ime:" #: ../../../processing/app/debug/Compiler.java:410 #, java-format msgid "Using library {0} at version {1} in folder: {2} {3}" -msgstr "" +msgstr "Uporaba knjižnice {0} različice {1} v imeniku: {2} {3}" #: ../../../processing/app/debug/Compiler.java:94 #, java-format msgid "Using library {0} in folder: {1} {2}" -msgstr "" +msgstr "Uporaba knjižnice {0} v imeniku: {1} {2}" #: ../../../processing/app/debug/Compiler.java:320 #, java-format msgid "Using previously compiled file: {0}" -msgstr "" +msgstr "Uporaba predhodno prevedene datoteke: {0}" #: EditorToolbar.java:41 EditorToolbar.java:46 msgid "Verify" @@ -2346,33 +2418,33 @@ msgstr "Preveri kodo po nalaganju" #: ../../../../../app/src/processing/app/Editor.java:725 msgid "Verify/Compile" -msgstr "" +msgstr "Preveri/Prevedi" #: ../../../../../app/src/processing/app/Base.java:451 msgid "Verifying and uploading..." -msgstr "" +msgstr "Preverjanje in nalaganje..." #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:71 msgid "Verifying archive integrity..." -msgstr "" +msgstr "Preverjanje integritete arhiva..." #: ../../../../../app/src/processing/app/Base.java:454 msgid "Verifying..." -msgstr "" +msgstr "Preverjanje..." #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:328 #, java-format msgid "Version {0}" -msgstr "" +msgstr "Različica {0}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:326 msgid "Version unknown" -msgstr "" +msgstr "Neznana različica" #: ../../../cc/arduino/contributions/libraries/ContributedLibrary.java:97 #, java-format msgid "Version {0}" -msgstr "" +msgstr "Različica {0}" #: ../../../processing/app/Preferences.java:154 msgid "Vietnamese" @@ -2385,19 +2457,19 @@ msgstr "Obišči Arduino.cc" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:90 #, java-format msgid "WARNING: Category '{0}' in library {1} is not valid. Setting to '{2}'" -msgstr "" +msgstr "OPOZORILO: Kategorija '{0}' v knjižnici {1} ni veljavna. Nastavljeno na '{2}'" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:93 #, java-format msgid "WARNING: Spurious {0} folder in '{1}' library" -msgstr "" +msgstr "OPOZORILO: Napačen imenik {0} v knjižnici '{1}'" #: ../../../processing/app/debug/Compiler.java:115 #, java-format msgid "" "WARNING: library {0} claims to run on {1} architecture(s) and may be " "incompatible with your current board which runs on {2} architecture(s)." -msgstr "" +msgstr "OPOZORILO: knjižnica {0} trdi, da teče na {1} arhitekturi in je lahko nezdružljiva z vašo trenutno ploščo, ki teče na {2} arhitekturi." #: Base.java:2128 msgid "Warning" @@ -2407,43 +2479,43 @@ msgstr "Opozorilo" msgid "" "Warning: This core does not support exporting sketches. Please consider " "upgrading it or contacting its author" -msgstr "" +msgstr "Opozorilo: To jedro ne podpira izvažanja skic. Poskusite ga nadgraditi ali kontaktirajte njegovega avtorja" #: ../../../cc/arduino/utils/ArchiveExtractor.java:197 #, java-format msgid "Warning: file {0} links to an absolute path {1}" -msgstr "" +msgstr "Opozorilo: datoteka {0} je povezana na absolutno pot {1}" #: ../../../cc/arduino/contributions/packages/ContributionsIndexer.java:133 msgid "Warning: forced trusting untrusted contributions" -msgstr "" +msgstr "Opozorilo: Prisiljeno zaupanje nezaupanim prispevkom" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:217 #, java-format msgid "Warning: forced untrusted script execution ({0})" -msgstr "" +msgstr "Opozorilo: prisiljeno izvajanje nezaupanim skriptom ({0})" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:212 #, java-format msgid "Warning: non trusted contribution, skipping script execution ({0})" -msgstr "" +msgstr "Opozorilo: nezaupan prispevek, izpuščam izvajanje skripta ({0})" #: ../../../processing/app/debug/LegacyTargetPlatform.java:158 #, java-format msgid "" "Warning: platform.txt from core '{0}' contains deprecated {1}, automatically" " converted to {2}. Consider upgrading this core." -msgstr "" +msgstr "Opozorilo: platform.txt jedra '{0}' vsebuje opuščen {1}, ki je bil samodejno konvertiran v {2}. Poskusite z nadgradnjo tega jedra." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:91 msgid "" "Warning: platform.txt from core '{0}' misses property '{1}', using default " "value '{2}'. Consider upgrading this core." -msgstr "" +msgstr "Opozorilo: platform.txt jedra '{0}' nima lastnosti '{1}', zato uporabljam provzeto vrednost '{2}'. Poskusite nadgraditi to jedro." #: ../../../../../app/src/processing/app/Preferences.java:190 msgid "Western Frisian" -msgstr "" +msgstr "Zahodna frizijščina" #: debug/Compiler.java:444 msgid "Wire.receive() has been renamed Wire.read()." @@ -2469,7 +2541,7 @@ msgstr "Da" #: ../../../../../app/src/processing/app/Base.java:2312 msgid "You can't import a folder that contains your sketchbook" -msgstr "" +msgstr "Ne morete uvoziti mape, ki vsebuje vašo skicirko" #: Sketch.java:883 msgid "" @@ -2485,7 +2557,7 @@ msgstr "Pozabil si svojo skicirko" msgid "" "You have unsaved changes!\n" "You must save all your sketches to enable this option." -msgstr "" +msgstr "Spremembe niso bile shranjene!\nShraniti morate vse svoje skice, če želite vklopiti to opcijo." #: ../../../processing/app/AbstractMonitor.java:92 msgid "" @@ -2502,13 +2574,13 @@ msgstr "Za danes si dosegel/a mejo avtomatskega poimenovanje⏎ novih skic. Pojd msgid "" "Your copy of the IDE is installed in a subfolder of your settings folder.\n" "Please move the IDE to another folder." -msgstr "" +msgstr "Vaša kopija IDE razvojnega okolja je nameščena v podimenik vašega imenika z nastavitvami.\nPremaknite IDE v drug imenik." #: ../../../processing/app/BaseNoGui.java:771 msgid "" "Your copy of the IDE is installed in a subfolder of your sketchbook.\n" "Please move the IDE to another folder." -msgstr "" +msgstr "Vaša kopija IDE razvojnega okolja je namščena v podimeniku vaše skicirke.\nPremaknite IDE v drugo mapo." #: Base.java:2638 msgid "ZIP files or folders" @@ -2530,7 +2602,7 @@ msgid "" "older version of Arduino, you may need to use Tools -> Fix Encoding & Reload" " to update the sketch to use UTF-8 encoding. If not, you may need to delete " "the bad characters to get rid of this warning." -msgstr "" +msgstr "\"{0}\" vsebuje neprepoznane znake. Če je ta koda bila ustvarjena s starejšo različico Arduina, boste morda morali uprabiti Orodja --> Popravi kodiranje & Znova naloži, da posodobite skico z uporabo UTF-8 kodiranja. V nasprotnem primeru boste morda morali zbrisati nepravine znake, da se znebite tega opozorila." #: debug/Compiler.java:409 msgid "" @@ -2597,7 +2669,7 @@ msgstr "povezano!" #: ../../../../../app/src/processing/app/Editor.java:1352 msgid "http://www.arduino.cc/" -msgstr "" +msgstr "http://www.arduino.cc/" #: UpdateCheck.java:118 msgid "http://www.arduino.cc/en/Main/Software" @@ -2616,6 +2688,12 @@ msgstr "prezri neveljavno velikost pisave {0}" msgid "name is null" msgstr "ime je prazno" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "v {0} nisem našel datotek z glavami (.h)" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu je prazen" @@ -2629,7 +2707,7 @@ msgstr "Izbrana serijska vrata {0} ne obstajajo ali pa ploščica ni povezana" #: ../../../processing/app/Base.java:389 #, java-format msgid "unknown option: {0}" -msgstr "" +msgstr "neznana opcija: {0}" #: Preferences.java:391 msgid "upload" @@ -2638,23 +2716,23 @@ msgstr "Naloži" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:324 #, java-format msgid "version {0}" -msgstr "" +msgstr "različica {0}" #: ../../../../../app/src/processing/app/Editor.java:2243 #, java-format msgid "{0} - {1} | Arduino {2}" -msgstr "" +msgstr "{0} - {1} | Arduino {2}" #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:39 #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:43 #, java-format msgid "{0} file signature verification failed" -msgstr "" +msgstr "{0} preverjanje podpisa datoteke ni bilo uspešno" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:310 #, java-format msgid "{0} file signature verification failed. File ignored." -msgstr "" +msgstr "{0} preverjanje podpisa datoteke ni bilo uspešno. Datoteka je bila prezrta." #: Editor.java:380 #, java-format @@ -2664,22 +2742,22 @@ msgstr "Datoteke {0} so bile dodane skici." #: ../../../../../app/src/processing/app/Base.java:1201 #, java-format msgid "{0} libraries" -msgstr "" +msgstr "{0} knjižnice" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:76 #, java-format msgid "{0} must be a folder" -msgstr "" +msgstr "{0} mora biti imenik" #: ../../../../../app/src/processing/app/EditorLineStatus.java:109 #, java-format msgid "{0} on {1}" -msgstr "" +msgstr "{0} na {1}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:78 #, java-format msgid "{0} pattern is missing" -msgstr "" +msgstr "manjka vzorec {0}" #: debug/Compiler.java:365 #, java-format @@ -2694,46 +2772,46 @@ msgstr "{0} | Arduino {1}" #: ../../../processing/app/Base.java:519 #, java-format msgid "{0}: Invalid argument to --pref, should be of the form \"pref=value\"" -msgstr "" +msgstr "{0}: Napačen argument za --pref, ki bi moral imeti obliko \"pref=vrednost\"" #: ../../../processing/app/Base.java:476 #, java-format msgid "" "{0}: Invalid board name, it should be of the form \"package:arch:board\" or " "\"package:arch:board:options\"" -msgstr "" - -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" +msgstr "{0}: Napačno ime plošče, ki bi moralo imeti obliko \"paket:arch:plošča\" ali \"paket:arch:plošča:opcije\"" #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" -msgstr "" +msgstr "{0}: Napačna opcija za plošo \"{1}\"" #: ../../../processing/app/Base.java:502 #, java-format msgid "{0}: Invalid option, should be of the form \"name=value\"" -msgstr "" +msgstr "{0}: Napačna opcija, ki bi morala imeti obliko \"name=vrednost\"" + +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: Nepravilna vrednost za opcijo \"{1}\" za ploščo \"{2}\" " #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" -msgstr "" +msgstr "{0}: Neznana arhitektura" #: ../../../processing/app/Base.java:491 #, java-format msgid "{0}: Unknown board" -msgstr "" +msgstr "{0}: Neznana plošča" #: ../../../processing/app/Base.java:481 #, java-format msgid "{0}: Unknown package" -msgstr "" +msgstr "{0}: Neznan paket" #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format msgid "{0}Install this package{1} to use your {2} board" -msgstr "" +msgstr "{0} Namestite ta paket {1} za rabo plošče {2}" diff --git a/arduino-core/src/processing/app/i18n/Resources_sl_SI.properties b/arduino-core/src/processing/app/i18n/Resources_sl_SI.properties index ecbf1c50724..60ac16a5d16 100644 --- a/arduino-core/src/processing/app/i18n/Resources_sl_SI.properties +++ b/arduino-core/src/processing/app/i18n/Resources_sl_SI.properties @@ -17,49 +17,53 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: +# Arnold Marko , 2020 # Cristian Maglie , 2013 # \u010crt Gorup , 2013 # Miha Feus , 2012 # Miha Feus , 2013-2014 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Slovenian (Slovenia) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/sl_SI/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: sl_SI\nPlural-Forms\: nplurals\=4; plural\=(n%100\=\=1 ? 0 \: n%100\=\=2 ? 1 \: n%100\=\=3 || n%100\=\=4 ? 2 \: 3);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2020-11-18 23\:50+0000\nLast-Translator\: Arnold Marko \nLanguage-Team\: Slovenian (Slovenia) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/sl_SI/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: sl_SI\nPlural-Forms\: nplurals\=4; plural\=(n%100\=\=1 ? 0 \: n%100\=\=2 ? 1 \: n%100\=\=3 || n%100\=\=4 ? 2 \: 3);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=(potreben je ponovni zagon Arduino okolja) #: ../../../processing/app/debug/Compiler.java:529 #, java-format -!\ Not\ used\:\ {0}= +\ Not\ used\:\ {0}=Ni uporabljeno\: {0} #: ../../../processing/app/debug/Compiler.java:525 #, java-format -!\ Used\:\ {0}= +\ Used\:\ {0}=Uporabljeno\: {0} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:558 -!'Keyboard'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?= +'Keyboard'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?='Keyboard' knji\u017enica ni bila najdena. Ali va\u0161a skica vsebuje vrstico '\#include '? #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:553 -!'Mouse'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?= +'Mouse'\ not\ found.\ Does\ your\ sketch\ include\ the\ line\ '\#include\ '?='Mouse' knji\u017enica ni bila najdena. Ali va\u0161a skica vsebuje vrstico '\#include '? #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:61 -!'arch'\ folder\ is\ no\ longer\ supported\!\ See\ http\://goo.gl/gfFJzU\ for\ more\ information= +'arch'\ folder\ is\ no\ longer\ supported\!\ See\ http\://goo.gl/gfFJzU\ for\ more\ information='arch' mapa ni ve\u010d podprta\! Ve\u010d informaciji najdete na http\://goo.gl/gfFJzU #: Preferences.java:478 -(edit\ only\ when\ Arduino\ is\ not\ running)=(urejaj samo takrat, ko se Arduino ne izvaja) +(edit\ only\ when\ Arduino\ is\ not\ running)=(urejajanje je mo\u017eno le, kadar Arduino ni zagnan) #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 -!(legacy)= +(legacy)=(opu\u0161\u010deno) #: ../../../processing/app/helpers/CommandlineParser.java:149 -!--curdir\ no\ longer\ supported= +--curdir\ no\ longer\ supported=--curdir ni ve\u010d podprt #: ../../../processing/app/Base.java:468 -!--verbose,\ --verbose-upload\ and\ --verbose-build\ can\ only\ be\ used\ together\ with\ --verify\ or\ --upload= +--verbose,\ --verbose-upload\ and\ --verbose-build\ can\ only\ be\ used\ together\ with\ --verify\ or\ --upload=--verbose, --verbose-upload in --verbose-build so lahko uporabljeni le z --verify ali --upload #: Sketch.java:746 .pde\ ->\ .ino=.pde -> .ino #: Editor.java:2053 -\ \ b\ {\ font\:\ 13pt\ "Lucida\ Grande"\ }p\ {\ font\:\ 11pt\ "Lucida\ Grande";\ margin-top\:\ 8px\ }\ Do\ you\ want\ to\ save\ changes\ to\ this\ sketch
\ before\ closing?

If\ you\ don't\ save,\ your\ changes\ will\ be\ lost.= \u017deli\u0161 shraniti spremembe v tej datoteki
preden se zapre?

\u010ce ne shrani\u0161, bodo spremembe izgubljene. +\ \ b\ {\ font\:\ 13pt\ "Lucida\ Grande"\ }p\ {\ font\:\ 11pt\ "Lucida\ Grande";\ margin-top\:\ 8px\ }\ Do\ you\ want\ to\ save\ changes\ to\ this\ sketch
\ before\ closing?

If\ you\ don't\ save,\ your\ changes\ will\ be\ lost.= \u017delite shraniti spremembe te skice
preden se zapre?

Sicer bodo spremembe izgubljene. #: Editor.java:2169 #, java-format @@ -70,63 +74,63 @@ A\ folder\ named\ "{0}"\ already\ exists.\ Can't\ open\ sketch.=Mapa z imenom "{ A\ library\ named\ {0}\ already\ exists=Knji\u017enica z imenom {0} \u017ee obstaja #: UpdateCheck.java:103 -A\ new\ version\ of\ Arduino\ is\ available,\nwould\ you\ like\ to\ visit\ the\ Arduino\ download\ page?=Na voljo je nova razli\u010dica Arduino.\n\u017deli\u0161 obiskati spletno stran Arduino in jo sneti? +A\ new\ version\ of\ Arduino\ is\ available,\nwould\ you\ like\ to\ visit\ the\ Arduino\ download\ page?=Na voljo je nova razli\u010dica Arduina.\n\u017delite obiskati spletno stran za prenos Arduina? #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format -!A\ newer\ {0}\ package\ is\ available= +A\ newer\ {0}\ package\ is\ available=Na voljo je novej\u0161i paket {0} #: ../../../../../app/src/processing/app/Base.java:2307 -!A\ subfolder\ of\ your\ sketchbook\ is\ not\ a\ valid\ library= +A\ subfolder\ of\ your\ sketchbook\ is\ not\ a\ valid\ library=Podimenik va\u0161e skicirke ni veljavna knji\u017enica #: Editor.java:1116 About\ Arduino=O Arduinu #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 -!Acoli= +Acoli=Acoli #: ../../../../../app/src/processing/app/Base.java:1177 -!Add\ .ZIP\ Library...= +Add\ .ZIP\ Library...=Dodaj .ZIP knji\u017enico... #: Editor.java:650 Add\ File...=Dodaj datoteko... #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:73 -!Additional\ Boards\ Manager\ URLs= +Additional\ Boards\ Manager\ URLs=Dodatni URL naslovi za upravljalnik plo\u0161\u010dic #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:268 -!Additional\ Boards\ Manager\ URLs\:\ = +Additional\ Boards\ Manager\ URLs\:\ =Dodatni URL naslovi za upravljalnik plo\u0161\u010dic #: ../../../../../app/src/processing/app/Preferences.java:161 -!Afrikaans= +Afrikaans=Afrikan\u0161\u010dina #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 -!Aggressively\ cache\ compiled\ core= +Aggressively\ cache\ compiled\ core=Agresivno predpomnjenje prevedenega jedra #: ../../../processing/app/Preferences.java:96 -!Albanian= +Albanian=Alban\u0161\u010dina #: ../../../../../app/src/cc/arduino/contributions/ui/DropdownAllItem.java:42 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownAllCoresItem.java:43 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:187 -!All= +All=Vse #: tools/FixEncoding.java:77 -An\ error\ occurred\ while\ trying\ to\ fix\ the\ file\ encoding.\nDo\ not\ attempt\ to\ save\ this\ sketch\ as\ it\ may\ overwrite\nthe\ old\ version.\ Use\ Open\ to\ re-open\ the\ sketch\ and\ try\ again.\n=Napaka se je pojavila med poskusom popravila \u23ce kodiranja datoteke. Ne shranjuj te skice, saj bi lahko prepisala \u23ce starej\u0161o razli\u010dico. Uporabi "Odpri" za ponovno odpiranje \u23ceskice in poskusi ponovno.\\n +An\ error\ occurred\ while\ trying\ to\ fix\ the\ file\ encoding.\nDo\ not\ attempt\ to\ save\ this\ sketch\ as\ it\ may\ overwrite\nthe\ old\ version.\ Use\ Open\ to\ re-open\ the\ sketch\ and\ try\ again.\n=Napaka se je pojavila med poskusom popravila kodiranja datoteke. Ne shranjujte te skice, saj bi lahko prepisala starej\u0161o razli\u010dico. Ponovno odprite skico z "Odpri" \nin poskusite znova.\\n #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:99 -!An\ error\ occurred\ while\ updating\ libraries\ index\!= +An\ error\ occurred\ while\ updating\ libraries\ index\!=Ob posodabljanju indeksa knji\u017enic se je zgodila napaka\! #: ../../../processing/app/BaseNoGui.java:528 -!An\ error\ occurred\ while\ uploading\ the\ sketch= +An\ error\ occurred\ while\ uploading\ the\ sketch=Ob nalaganju skice se je zgodila napaka #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 -!An\ error\ occurred\ while\ verifying\ the\ sketch= +An\ error\ occurred\ while\ verifying\ the\ sketch=Ob preverjanju skice se je zgodila napaka #: ../../../processing/app/BaseNoGui.java:521 -!An\ error\ occurred\ while\ verifying/uploading\ the\ sketch= +An\ error\ occurred\ while\ verifying/uploading\ the\ sketch=Ob preverjanju/nalaganju skice se je zgodila napaka #: Base.java:228 An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ for\ your\ machine.=Med nalaganjem kode za tvoj operacijski sistem\u23ce\nse je pojavila neznana napaka. @@ -148,13 +152,13 @@ Archive\ sketch\ canceled.=Arhiviranje skice prekinjeno. #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format -!Archiving\ built\ core\ (caching)\ in\:\ {0}= +Archiving\ built\ core\ (caching)\ in\:\ {0}=Arhiviranje izgrajenega jedra (predpomnjenje) v\: {0} #: tools/Archiver.java:75 Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.=Arhiviranje skice je bilo prekinjeno, ker skica\u23ce ni bila pravilno shranjena. #: ../../../../../arduino-core/src/processing/app/I18n.java:24 -!Arduino= +Arduino=Arduino #: ../../../processing/app/I18n.java:83 Arduino\ ARM\ (32-bits)\ Boards=Arduino ARM (32-bits) Plo\u0161\u010de @@ -163,40 +167,40 @@ Arduino\ ARM\ (32-bits)\ Boards=Arduino ARM (32-bits) Plo\u0161\u010de Arduino\ AVR\ Boards=Arduino AVR Plo\u0161\u010de #: Editor.java:2137 -!Arduino\ can\ only\ open\ its\ own\ sketches\nand\ other\ files\ ending\ in\ .ino\ or\ .pde= +Arduino\ can\ only\ open\ its\ own\ sketches\nand\ other\ files\ ending\ in\ .ino\ or\ .pde=Arduino lahko odpre le svoje skice\nin druge datoteke s kon\u010dnico .ino ali .pde #: Base.java:1682 -Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ settings.=Arduino se ne more zagnati, ker ni mogel\u23ce ustvariti mape za shranjevanje tvojih nastavitev. +Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ settings.=Arduino se ne more zagnati, ker ni mogel ustvariti mape za shranjevanje nastavitev. #: Base.java:1889 -Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ sketchbook.=Arduino se ne more zagnati, ker ni \\n mogel ustvariti mape za tvojo skico +Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ sketchbook.=Arduino se ne more zagnati, ker ni \\n mogel ustvariti mape za skicirke #: ../../../processing/app/EditorStatus.java:471 Arduino\:\ =Arduino\: #: Sketch.java:588 #, java-format -Are\ you\ sure\ you\ want\ to\ delete\ "{0}"?=Si prepri\u010dan/a, da \u017eeli\u0161 izbrisati "{0}"? +Are\ you\ sure\ you\ want\ to\ delete\ "{0}"?=Res \u017eelite izbrisati "{0}"? #: Sketch.java:587 Are\ you\ sure\ you\ want\ to\ delete\ this\ sketch?=Si prepri\u010dan/a, da \u017eeli\u0161 izbrisati to skico? #: ../../../processing/app/Base.java:356 -!Argument\ required\ for\ --board= +Argument\ required\ for\ --board=Argument, ki ga zahteva --board #: ../../../processing/app/Base.java:363 -!Argument\ required\ for\ --port= +Argument\ required\ for\ --port=Argument, ki ga zahteva --port #: ../../../processing/app/Base.java:377 -!Argument\ required\ for\ --pref= +Argument\ required\ for\ --pref=Argument, ki ga zahteva --pref #: ../../../processing/app/Base.java:384 -!Argument\ required\ for\ --preferences-file= +Argument\ required\ for\ --preferences-file=Argument, ki ga zahteva --preferences-file #: ../../../processing/app/helpers/CommandlineParser.java:76 #: ../../../processing/app/helpers/CommandlineParser.java:83 #, java-format -!Argument\ required\ for\ {0}= +Argument\ required\ for\ {0}=Argument, ki ga zahteva {0} #: ../../../processing/app/Preferences.java:137 Armenian=Armensko @@ -205,7 +209,7 @@ Armenian=Armensko Asturian=Astursko #: ../../../processing/app/debug/Compiler.java:145 -!Authorization\ required= +Authorization\ required=Potrebna je overitev #: tools/AutoFormat.java:91 Auto\ Format=Avtomatsko formatiranje @@ -214,13 +218,13 @@ Auto\ Format=Avtomatsko formatiranje Auto\ Format\ finished.=Avtomatsko formatiranje kon\u010dano. #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:457 -!Auto-detect\ proxy\ settings= +Auto-detect\ proxy\ settings=Samodejno prepoznavanje nastavitev proxy stre\u017enika #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:264 -!Automatic= +Automatic=Samodejno #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:474 -!Automatic\ proxy\ configuration\ URL\:= +Automatic\ proxy\ configuration\ URL\:=URL naslov za samodejno nastavitev proxy stre\u017enika #: SerialMonitor.java:110 Autoscroll=Avtomatsko pomikanje @@ -233,7 +237,7 @@ Bad\ error\ line\:\ {0}=Napaka v vrstici\: {0} Bad\ file\ selected=Izbrana napa\u010dna datoteka #: ../../../processing/app/Preferences.java:149 -!Basque= +Basque=Baskov\u0161\u010dina #: ../../../processing/app/Preferences.java:139 Belarusian=Belorusko @@ -243,16 +247,16 @@ Belarusian=Belorusko Board=Plo\u0161\u010da #: ../../../../../app//src/processing/app/Editor.java:2824 -!Board\ Info= +Board\ Info=Podatki po plo\u0161\u010di #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 #, java-format -!Board\ at\ {0}\ is\ not\ available= +Board\ at\ {0}\ is\ not\ available=Plo\u0161\u010da na {0} ni na voljo #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:62 #, java-format -!Board\ {0}\ (platform\ {1},\ package\ {2})\ is\ unknown= +Board\ {0}\ (platform\ {1},\ package\ {2})\ is\ unknown=Plo\u0161\u010da {0} (platforma {1}, paket {2}) ni znana #: ../../../processing/app/debug/TargetBoard.java:42 #, java-format @@ -262,17 +266,17 @@ Board\ {0}\:{1}\:{2}\ doesn''t\ define\ a\ ''build.board''\ preference.\ Auto-se Board\:\ =Plo\u0161\u010da\: #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 -!Boards\ Manager= +Boards\ Manager=Upravljalnik plo\u0161\u010d #: ../../../../../app/src/processing/app/Base.java:1320 -!Boards\ Manager...= +Boards\ Manager...=Upravljalnik plo\u0161\u010d... #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:328 -!Boards\ included\ in\ this\ package\:= +Boards\ included\ in\ this\ package\:=Plo\u0161\u010de, ki jih vklju\u010duje ta paket\: #: ../../../processing/app/debug/Compiler.java:1273 #, java-format -!Bootloader\ file\ specified\ but\ missing\:\ {0}= +Bootloader\ file\ specified\ but\ missing\:\ {0}=Datoteka zagonskega nalagalnika je dolo\u010dena, a ni najdena\: {0} #: ../../../processing/app/Preferences.java:140 Bosnian=Bosansko @@ -284,10 +288,10 @@ Both\ NL\ &\ CR=Oboje\: NL in CR Browse=Brskaj #: ../../../processing/app/Sketch.java:1530 -!Build\ options\ changed,\ rebuilding\ all= +Build\ options\ changed,\ rebuilding\ all=Opcije izgradnje so se spremenile - ponovna izgradnja vsega #: ../../../../../app/src/processing/app/Base.java:1210 -!Built-in\ Examples= +Built-in\ Examples=Vgrajeni primeri #: ../../../processing/app/Preferences.java:80 Bulgarian=Bolgarsko @@ -302,18 +306,18 @@ Burn\ Bootloader=Zape\u010di zagonski nalagalnik Burning\ bootloader\ to\ I/O\ Board\ (this\ may\ take\ a\ minute)...=Pe\u010denje zagonskega nalagalnika na I/O Plo\u0161\u010do (to lahko traja nekaj minut)... #: ../../../../../arduino-core/src/cc/arduino/contributions/DownloadableContributionsDownloader.java:91 -!CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.= +CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.=CRC se ne sklada - datoteka je pokvarjena. Lahko gre za za\u010dasno te\u017eavo. Kasneje poskusite znova. #: ../../../processing/app/Base.java:379 #, java-format -!Can\ only\ pass\ one\ of\:\ {0}= +Can\ only\ pass\ one\ of\:\ {0}=Lahko preidem le preko enega od\: {0} #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 -!Can't\ enable\ external\ editor= +Can't\ enable\ external\ editor=Ne morem vklju\u010diti zunanjega urejevalnika #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 -!Can't\ find\ the\ sketch\ in\ the\ specified\ path= +Can't\ find\ the\ sketch\ in\ the\ specified\ path=V podani poti ne najdem skice #: ../../../processing/app/Preferences.java:92 Canadian\ French=Francosko - Kanadsko @@ -323,7 +327,7 @@ Canadian\ French=Francosko - Kanadsko Cancel=Prekli\u010di #: ../../../processing/app/Base.java:465 -!Cannot\ specify\ any\ sketch\ files= +Cannot\ specify\ any\ sketch\ files=Ne morem dolo\u010diti nobene datoteke s skico #: SerialMonitor.java:112 Carriage\ return=Na za\u010detek vrstice - CR @@ -344,10 +348,10 @@ Chinese\ (Taiwan)=Kitajsko (Tajvan) Chinese\ (Taiwan)\ (Big5)=Kitajsko (Tajvan) (Big5) #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 -!Clear\ output= +Clear\ output=Po\u010disti izhod #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 -!Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs= +Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs=Kliknite za seznam URL naslovov neuradno podprtih plo\u0161\u010d #: Editor.java:521 Editor.java:2024 Close=Zapri @@ -356,16 +360,16 @@ Close=Zapri Comment/Uncomment=Komentiraj/Odkomentiraj #: ../../../../../arduino-core/src/processing/app/I18n.java:30 -!Communication= +Communication=Komunikacija #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 -!Compiler\ warnings\:\ = +Compiler\ warnings\:\ =Opozorila prevajalnika\: #: Sketch.java:1608 Editor.java:1890 Compiling\ sketch...=Prevajanje skice... #: ../../../../../arduino-core/src/processing/app/I18n.java:27 -!Contributed= +Contributed=Prispeval #: Editor.java:1157 Editor.java:2707 Copy=Kopiraj @@ -388,7 +392,7 @@ Could\ not\ copy\ to\ a\ proper\ location.=Kopiranje v ustrezno lokacijo ni bilo #: ../../../../../arduino-core/src/processing/app/Sketch.java:342 #, java-format -!Could\ not\ create\ directory\ "{0}"= +Could\ not\ create\ directory\ "{0}"=Nisem mogel ustvariti imenika "{0}" #: Editor.java:2179 Could\ not\ create\ the\ sketch\ folder.=Mape za skico ni bilo mogo\u010de ustvariti. @@ -431,7 +435,7 @@ Could\ not\ properly\ re-save\ the\ sketch.\ You\ may\ be\ in\ trouble\ at\ this Could\ not\ re-save\ sketch=Skice ni bilo mogo\u010de ponovno shraniti #: Theme.java:52 -!Could\ not\ read\ color\ theme\ settings.\nYou'll\ need\ to\ reinstall\ Arduino.= +Could\ not\ read\ color\ theme\ settings.\nYou'll\ need\ to\ reinstall\ Arduino.=Barvnih nastavitev za temo ni bilo mogo\u010de prebrati.\nArduino boste morali ponovno namestiti. #: Preferences.java:219 Could\ not\ read\ default\ settings.\nYou'll\ need\ to\ reinstall\ Arduino.=Privzeti nastavitev ni bilo mogo\u010de prebrati.\u23ce\nMoral/a bo\u0161 ponovno nalo\u017eiti Arduino. @@ -444,6 +448,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Stare razli\u010dice {0} ni mogo\u010d #, java-format Could\ not\ replace\ {0}=Ni mogo\u010de zamenjati {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=Neuspe\u0161no zapisovanje nastavitvene datoteke\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Arhiviranje skice ni uspelo @@ -463,31 +471,34 @@ Croatian=Hrva\u0161ko Cut=Izre\u017ei #: ../../../../../app/src/processing/app/Preferences.java:119 -!Czech\ (Czech\ Republic)= +Czech\ (Czech\ Republic)=\u010ce\u0161\u010dina (\u010ce\u0161ka republika) #: ../../../../../app/src/processing/app/Preferences.java:120 -!Danish\ (Denmark)= +Danish\ (Denmark)=Dan\u0161\u010dina (Danska) #: ../../../../../arduino-core/src/processing/app/I18n.java:36 -!Data\ Processing= +Data\ Processing=Obdelava podatkov #: ../../../../../arduino-core/src/processing/app/I18n.java:35 -!Data\ Storage= +Data\ Storage=Shramba podatkov #: ../../../../../app/src/processing/app/Editor.java:1386 -!Decrease\ Font\ Size= +Decrease\ Font\ Size=Zmanj\u0161aj velikost pisave #: Editor.java:1224 Editor.java:2765 Decrease\ Indent=Zmanj\u0161aj zamik #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 -!Default= +Default=Privzeto + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=Privzeta tema #: EditorHeader.java:314 Sketch.java:591 Delete=Izbri\u0161i #: ../../../../../arduino-core/src/processing/app/I18n.java:33 -!Device\ Control= +Device\ Control=Upravljanje naprave #: debug/Uploader.java:199 Device\ is\ not\ responding,\ check\ the\ right\ serial\ port\ is\ selected\ or\ RESET\ the\ board\ right\ before\ exporting=Naprava se ne odziva, preveri ali so izbrana prava serijska vrata ali pa resetiraj plo\u0161\u010dico @@ -496,14 +507,14 @@ Device\ is\ not\ responding,\ check\ the\ right\ serial\ port\ is\ selected\ or\ Discard\ all\ changes\ and\ reload\ sketch?=Zavrni vse spremembe in ponovno nalo\u017ei skico? #: ../../../../../arduino-core/src/processing/app/I18n.java:29 -!Display= +Display=Zaslon #: ../../../processing/app/Preferences.java:438 Display\ line\ numbers=Prika\u017ei \u0161tevil\u010denje vrstic #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:195 #, java-format -!Do\ you\ want\ to\ remove\ {0}?\nIf\ you\ do\ so\ you\ won't\ be\ able\ to\ use\ {0}\ any\ more.= +Do\ you\ want\ to\ remove\ {0}?\nIf\ you\ do\ so\ you\ won't\ be\ able\ to\ use\ {0}\ any\ more.=\u017delite odstraniti {0}?\nV tem primeru {0} ne bo ve\u010d mogo\u010de uporabljati. #: Editor.java:2064 Don't\ Save=Ne shrani @@ -516,7 +527,7 @@ Done\ burning\ bootloader.=Zagonski nalagalnik je zape\u010den. #: ../../../processing/app/BaseNoGui.java:507 #: ../../../processing/app/BaseNoGui.java:552 -!Done\ compiling= +Done\ compiling=Prevajanje je kon\u010dano #: Editor.java:1911 Editor.java:1928 Done\ compiling.=Prevajanje kon\u010dano. @@ -525,31 +536,31 @@ Done\ compiling.=Prevajanje kon\u010dano. Done\ printing.=Tiskanje kon\u010dano. #: ../../../processing/app/BaseNoGui.java:514 -!Done\ uploading= +Done\ uploading=Nalaganje je kon\u010dano #: Editor.java:2395 Editor.java:2431 Done\ uploading.=Nalaganje kon\u010dano. #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:105 #, java-format -!Downloaded\ {0}kb\ of\ {1}kb.= +Downloaded\ {0}kb\ of\ {1}kb.=Prene\u0161eno je {0}kb od {1}kb. #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:107 -!Downloading\ boards\ definitions.= +Downloading\ boards\ definitions.=Prena\u0161anje definicij plo\u0161\u010d #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:86 -!Downloading\ libraries\ index...= +Downloading\ libraries\ index...=Prena\u0161anje indeksov knji\u017enic... #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:115 #, java-format -!Downloading\ library\:\ {0}= +Downloading\ library\:\ {0}=Prena\u0161anje knji\u017enice\: {0} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:318 -!Downloading\ platforms\ index...= +Downloading\ platforms\ index...=Prena\u0161anje indeksov platforme... #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:113 #, java-format -!Downloading\ tools\ ({0}/{1}).= +Downloading\ tools\ ({0}/{1}).=Prena\u0161anje orodji ({0}/{1}). #: Preferences.java:91 Dutch=Nizozemsko @@ -558,7 +569,7 @@ Dutch=Nizozemsko Dutch\ (Netherlands)=Nizozemsko (Nizozemska) #: ../../../../../app/src/processing/app/Editor.java:1309 -!Edison\ Help= +Edison\ Help=Edison pomo\u010d #: Editor.java:1130 Edit=Uredi @@ -570,7 +581,7 @@ Editor\ font\ size\:\ =Velikost pisave urejevalnika\: Editor\ language\:\ =Jezik urejevalnika\: #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:322 -!Enable\ Code\ Folding= +Enable\ Code\ Folding=Vklopi prepogibanje kode #: Preferences.java:92 English=Angle\u0161ko @@ -580,10 +591,10 @@ English\ (United\ Kingdom)=Angle\u0161ko (Zdru\u017eeno Kraljestvo) #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:269 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:271 -!Enter\ a\ comma\ separated\ list\ of\ urls= +Enter\ a\ comma\ separated\ list\ of\ urls=Vnesite seznam url naslovov lo\u010denih z vejicami #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:96 -!Enter\ additional\ URLs,\ one\ for\ each\ row= +Enter\ additional\ URLs,\ one\ for\ each\ row=Vnesite dodatne URL naslove, po enega za vsako vrstico #: Editor.java:1062 Environment=Okolje @@ -598,14 +609,14 @@ Error\ adding\ file=Napaka pri dodajanju datoteke #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:272 #, java-format -!Error\ compiling\ for\ board\ {0}.= +Error\ compiling\ for\ board\ {0}.=Napaka pri prevajanju za plo\u0161\u010do {0} #: debug/Compiler.java:369 Error\ compiling.=Napaka pri prevajanju. #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:113 #, java-format -!Error\ downloading\ {0}= +Error\ downloading\ {0}=Napaka pri prenosu {0} #: Base.java:1674 Error\ getting\ the\ Arduino\ data\ folder.=Napaka pri pridobivanju podatkovne mape Arduino. @@ -614,6 +625,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Napaka pri pridobivanju podatkovne m #, java-format Error\ inside\ Serial.{0}()=Napaka v Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=Napaka pri nalaganju teme {0}\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -626,7 +641,19 @@ Error\ opening\ serial\ port\ ''{0}''.=Napaka pri odpiranju serijskih vrat ''{0} #: ../../../processing/app/Serial.java:119 #, java-format -!Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=Napaka pri odpiranju serijskih vrat "{0}". Poskusite uporabiti dokumentacijo na http\://playground.arduino.cc/Linux/All\#Permission + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=Napaka pri raz\u010dlenjevanju indeksa knji\u017enice\: {0}\nPoskusite odpreti Upravljalnik knji\u017enic, da posodobite indeks knji\u017enic. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=Napaka pri branju knji\u017eni\u010dnega indeksa\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=Napaka pri branju indeksnega imenika paketa\: {0}\n(morda gre za te\u017eavo s pravicami?) #: Preferences.java:277 Error\ reading\ preferences=Napaka pri branju nastavitev @@ -638,7 +665,7 @@ Error\ reading\ the\ preferences\ file.\ Please\ delete\ (or\ move)\n{0}\ and\ r #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:146 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:166 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:245 -!Error\ running\ post\ install\ script= +Error\ running\ post\ install\ script=Napaka pri izvajanju po-namestitvenega skripta #: ../../../cc/arduino/packages/DiscoveryManager.java:25 Error\ starting\ discovery\ method\:\ =Napaka pri zagonu metode odkrivanja\: @@ -653,18 +680,21 @@ Error\ while\ burning\ bootloader.=Napaka pri pe\u010denju zagonskega nalagalnik #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Napaka pri pe\u010denju zagonskega nalagalnika\: manjka '{0}' nastavitveni parameter +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=Napaka pri zapisovanju zagonskega nalagalnika\: izberite serijska vrata + #: ../../../../../app/src/processing/app/Editor.java:1940 -!Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= +Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=Napaka pri prevajanju\: manjka nastavitveni parameter '{0}'\u00a0 #: Editor.java:2567 Error\ while\ printing.=Napaka pri tiskanju. #: ../../../../../arduino-core/src/processing/app/Serial.java:117 #, java-format -!Error\ while\ setting\ serial\ port\ parameters\:\ {0}\ {1}\ {2}\ {3}= +Error\ while\ setting\ serial\ port\ parameters\:\ {0}\ {1}\ {2}\ {3}=Napaka ob dolo\u010danju parametrov serijskih vrat\: {0} {1} {2} {3} #: ../../../processing/app/BaseNoGui.java:528 -!Error\ while\ uploading= +Error\ while\ uploading=Napaka pri nalaganju #: ../../../processing/app/Editor.java:2409 #: ../../../processing/app/Editor.java:2449 @@ -673,63 +703,60 @@ Error\ while\ uploading\:\ missing\ '{0}'\ configuration\ parameter=Napaka pri n #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 -!Error\ while\ verifying= +Error\ while\ verifying=Napaka pri preverjanju #: ../../../processing/app/BaseNoGui.java:521 -!Error\ while\ verifying/uploading= +Error\ while\ verifying/uploading=Napaka pri preverjanju/nalaganju #: Preferences.java:93 Estonian=Estonsko -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Estonsko (Estonija) - #: Editor.java:516 Examples=Primeri #: ../../../../../app/src/processing/app/Base.java:1185 -!Examples\ for\ any\ board= +Examples\ for\ any\ board=Primeri za poljubno plo\u0161\u010do #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 #, java-format -!Examples\ for\ {0}= +Examples\ for\ {0}=Primeri za {0} #: ../../../../../app/src/processing/app/Base.java:1244 -!Examples\ from\ Custom\ Libraries= +Examples\ from\ Custom\ Libraries=Primeri za Lastne knji\u017enice #: ../../../../../app/src/processing/app/Base.java:1329 -!Examples\ from\ Other\ Libraries= +Examples\ from\ Other\ Libraries=Primeri za Druge knji\u017enice #: ../../../../../app/src/processing/app/Editor.java:753 -!Export\ canceled,\ changes\ must\ first\ be\ saved.= +Export\ canceled,\ changes\ must\ first\ be\ saved.=Izvoz je prekinjen, spremembe morajo biti najprej shranjene #: ../../../../../app/src/processing/app/Editor.java:750 -!Export\ compiled\ Binary= +Export\ compiled\ Binary=Izvozi prevedene programe #: ../../../processing/app/Base.java:416 #, java-format -!Failed\ to\ open\ sketch\:\ "{0}"= +Failed\ to\ open\ sketch\:\ "{0}"=Neuspe\u0161no odpiranje skice\: "{0}" #: ../../../../../arduino-core/src/processing/app/SketchFile.java:183 #, java-format -!Failed\ to\ rename\ "{0}"\ to\ "{1}"= +Failed\ to\ rename\ "{0}"\ to\ "{1}"=Neuspe\u0161no preimenovanje "{0}" v "{1}" #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 -!Failed\ to\ rename\ sketch\ folder= +Failed\ to\ rename\ sketch\ folder=Neuspe\u0161no preimenovanje imenika skice #: Editor.java:491 File=Datoteka #: ../../../../../arduino-core/src/processing/app/SketchData.java:139 #, java-format -!File\ name\ {0}\ is\ invalid\:\ ignored= +File\ name\ {0}\ is\ invalid\:\ ignored=Ime datoteke {0} je napa\u010dno\: prezrto #: Preferences.java:94 Filipino=Filipinsko #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:95 -!Filter\ your\ search...= +Filter\ your\ search...=Filtriranje iskanja... #: FindReplace.java:124 FindReplace.java:127 Find=Najdi @@ -757,11 +784,11 @@ Finnish=Finsko Fix\ Encoding\ &\ Reload=Popravi kodiranje in ponovno nalo\u017ei #: ../../../processing/app/BaseNoGui.java:318 -!For\ information\ on\ installing\ libraries,\ see\:\ http\://www.arduino.cc/en/Guide/Libraries\n= +For\ information\ on\ installing\ libraries,\ see\:\ http\://www.arduino.cc/en/Guide/Libraries\n=Za ve\u010d podatkov o name\u0161\u010danju knji\u017enic glejte\: http\://www.arduino.cc/en/Guide/Libraries\n #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:118 #, java-format -!Forcing\ reset\ using\ 1200bps\ open/close\ on\ port\ {0}= +Forcing\ reset\ using\ 1200bps\ open/close\ on\ port\ {0}=Prisilno resetiranje z uporabo 1200 b/s odpri/zapri a vratih {0} #: Preferences.java:95 French=Francosko @@ -773,10 +800,10 @@ Frequently\ Asked\ Questions=Pogosto zastavljena vpra\u0161anja Galician=Galicijsko #: ../../../../../app/src/processing/app/Preferences.java:176 -!Galician\ (Spain)= +Galician\ (Spain)=Gal\u0161\u010dina (\u0160panija) #: ../../../../../app/src/processing/app/Editor.java:1288 -!Galileo\ Help= +Galileo\ Help=Galileo pomo\u010d #: ../../../processing/app/Preferences.java:94 Georgian=Gregorijansko @@ -785,7 +812,7 @@ Georgian=Gregorijansko German=Nem\u0161ko #: ../../../../../app//src/processing/app/Editor.java:817 -!Get\ Board\ Info= +Get\ Board\ Info=Podatki o plo\u0161\u010di #: Editor.java:1054 Getting\ Started=Kako za\u010deti @@ -799,10 +826,10 @@ Global\ variables\ use\ {0}\ bytes\ ({2}%%)\ of\ dynamic\ memory,\ leaving\ {3}\ Global\ variables\ use\ {0}\ bytes\ of\ dynamic\ memory.=Globalne spremenljivke uporabljajo {0} bajtov dinami\u010dnega spomina. #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:66 -!Go\ to\ line= +Go\ to\ line=Pojdi na vrstico #: ../../../../../app/src/processing/app/Editor.java:1460 -!Go\ to\ line...= +Go\ to\ line...=Pojdi na vrstico... #: Preferences.java:98 Greek=Gr\u0161ko @@ -817,7 +844,7 @@ Help=Pomo\u010d Hindi=Hindujsko #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:489 -!Host\ name\:= +Host\ name\:=Ime gostitelja\: #: Sketch.java:295 How\ about\ saving\ the\ sketch\ first\ \nbefore\ trying\ to\ rename\ it?=Shrani skico, preden jo poskusi\u0161\u23ce\npreimenovati. @@ -829,13 +856,13 @@ How\ very\ Borges\ of\ you=Kako absurdna ideja Hungarian=Mad\u017earsko #: ../../../../../app/src/processing/app/Base.java:1319 -!INCOMPATIBLE= +INCOMPATIBLE=NEZDRU\u017dLJIVO #: FindReplace.java:96 Ignore\ Case=Prezri male/velike \u010drke -#: Base.java:1058 -Ignoring\ bad\ library\ name=Ignoriram napa\u010dno ime knji\u017enice +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=Prezri knji\u017enico z napa\u010dnim imenom #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Ignoriram skico z napa\u010dnim imenom @@ -844,14 +871,14 @@ Ignoring\ sketch\ with\ bad\ name=Ignoriram skico z napa\u010dnim imenom In\ Arduino\ 1.0,\ the\ default\ file\ extension\ has\ changed\nfrom\ .pde\ to\ .ino.\ \ New\ sketches\ (including\ those\ created\nby\ "Save-As")\ will\ use\ the\ new\ extension.\ \ The\ extension\nof\ existing\ sketches\ will\ be\ updated\ on\ save,\ but\ you\ can\ndisable\ this\ in\ the\ Preferences\ dialog.\n\nSave\ sketch\ and\ update\ its\ extension?=V Arduinu 1.0 se je privzeta kon\u010dnica datoteke spremenila\u23ce\niz .pde v .ino. Nove skice (vklju\u010dno s tistimi, ki se ustvarijo z\u23ce\nukazom "Shrani kot") bodo imele novo kon\u010dnico. Kon\u010dnica\u23ce\nobstoje\u010dih datotek se bo spremenila ob shranjevanju.\u23ce\nTo opcijo lahko izklju\u010di\u0161 v nastavitvah.\n\u23ce\nShranim skico in posodobim kon\u010dnico? #: ../../../../../app/src/processing/app/Editor.java:778 -!Include\ Library= +Include\ Library=Vklju\u010di knji\u017enico #: ../../../processing/app/BaseNoGui.java:768 #: ../../../processing/app/BaseNoGui.java:771 -!Incorrect\ IDE\ installation\ folder= +Incorrect\ IDE\ installation\ folder=Nepravien namestitveni imenik za IDE #: ../../../../../app/src/processing/app/Editor.java:1378 -!Increase\ Font\ Size= +Increase\ Font\ Size=Pove\u010daj pisavo #: Editor.java:1216 Editor.java:2757 Increase\ Indent=Pove\u010daj zamik @@ -860,7 +887,7 @@ Increase\ Indent=Pove\u010daj zamik Indonesian=Indonezijsko #: ../../../../../app/src/processing/app/Base.java:295 -!Initializing\ packages...= +Initializing\ packages...=Inicializacija paketov... #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:75 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:81 @@ -868,31 +895,31 @@ Indonesian=Indonezijsko #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:78 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:91 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:303 -!Install= +Install=Namestitev #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:170 -!Installation\ completed\!= +Installation\ completed\!=Namestitev je kon\u010dana\! #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java:50 -!Installed= +Installed=Name\u0161\u010deno #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 -!Installing\ boards...= +Installing\ boards...=Name\u0161\u010danje plo\u0161\u010d... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +Installing\ library\:\ {0}\:{1}=Name\u0161\u010danje knji\u017enice\: {0}\:{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format -!Installing\ tools\ ({0}/{1})...= +Installing\ tools\ ({0}/{1})...=Name\u0161\u010danje orodji ({0}/{1})... #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:239 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:172 -!Installing...= +Installing...=Name\u0161\u010danje... #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:256 -!Interface\ scale\:= +Interface\ scale\:=Merilo vmesnika\: #: ../../../processing/app/Base.java:1204 #, java-format @@ -900,7 +927,16 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=Neveljavna knji\u017enica najdena v {0}\ #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:66 #, java-format -!Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=Napa\u010dno navajanje\: zaklju\u010dni znak [{0}] ni bil najden + +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=Napa\u010dna razli\u010dica '{0}' za knji\u017enico v\: {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=Napa\u010dna razli\u010dica {0} #: Preferences.java:102 Italian=Italijansko @@ -909,7 +945,7 @@ Italian=Italijansko Japanese=Japonsko #: ../../../../../app/src/cc/arduino/i18n/Languages.java:81 -!Kazakh= +Kazakh=Kaza\u0161\u010dina #: Preferences.java:104 Korean=Korejsko @@ -918,39 +954,39 @@ Korean=Korejsko Latvian=Latvijsko #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:93 -!Library\ Manager= +Library\ Manager=Upravljalnik knji\u017enic #: ../../../../../app/src/processing/app/Base.java:2349 -!Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu= +Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=Knji\u017enica je bila dodana v knji\u017enice. Preverite meni "Vklju\u010di knji\u017enice" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 -!Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= +Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=Knji\u017enica ne more hkrati uporabljati 'src' in 'utility' imenikov. Preverite {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +Library\ is\ already\ installed\:\ {0}\:{1}=Knji\u017enica je \u017ee name\u0161\u010dena\: {0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 -!Line\ number\:= +Line\ number\:=\u0160tevilka vrstice\: #: Preferences.java:106 Lithuaninan=Litvansko #: ../../../../../app/src/processing/app/Base.java:132 -!Loading\ configuration...= +Loading\ configuration...=Nalaganje konfiguracije... #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 #, java-format -!Looking\ for\ recipes\ like\ {0}*{1}= +Looking\ for\ recipes\ like\ {0}*{1}=Iskanje prejemnikov, kot so {0}*{1} #: ../../../processing/app/Sketch.java:1684 -!Low\ memory\ available,\ stability\ problems\ may\ occur.= +Low\ memory\ available,\ stability\ problems\ may\ occur.=Na voljo je malo pomnilnika, kar lahko privede do te\u017eav s stabilnostjo #: ../../../../../app/src/processing/app/Base.java:1168 -!Manage\ Libraries...= +Manage\ Libraries...=Upravljanje knji\u017enic... #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:466 -!Manual\ proxy\ configuration= +Manual\ proxy\ configuration=Ro\u010dno nastavljanje proxy stre\u017enika #: Preferences.java:107 Marathi=Marathi @@ -960,13 +996,13 @@ Message=Sporo\u010dilo #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:81 #, java-format -!Missing\ '{0}'\ from\ library\ in\ {1}= +Missing\ '{0}'\ from\ library\ in\ {1}=V knji\u017enici {1} manjka '{0}' #: ../../../processing/app/BaseNoGui.java:455 -!Mode\ not\ supported= +Mode\ not\ supported=Na\u010din ni podprt #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:186 -!More= +More=Ve\u010d #: Preferences.java:449 More\ preferences\ can\ be\ edited\ directly\ in\ the\ file=Ve\u010d nastavitev je mogo\u010de spreminjati neposredno v datoteki @@ -975,32 +1011,32 @@ More\ preferences\ can\ be\ edited\ directly\ in\ the\ file=Ve\u010d nastavitev Moving=Prena\u0161am #: ../../../processing/app/BaseNoGui.java:484 -!Multiple\ files\ not\ supported= +Multiple\ files\ not\ supported=Ni podpore za ve\u010d datotek #: ../../../processing/app/debug/Compiler.java:520 #, java-format -!Multiple\ libraries\ were\ found\ for\ "{0}"= +Multiple\ libraries\ were\ found\ for\ "{0}"=Za "{0}" je bilo najdenih ve\u010d knji\u017enic #: ../../../processing/app/Base.java:395 -!Must\ specify\ exactly\ one\ sketch\ file= +Must\ specify\ exactly\ one\ sketch\ file=Treba je dolo\u010diti to\u010dno eno datoteko s skico #: Sketch.java:282 Name\ for\ new\ file\:=Ime nove datoteke\: #: ../../../../../app//src/processing/app/Editor.java:2809 -!Native\ serial\ port,\ can't\ obtain\ info= +Native\ serial\ port,\ can't\ obtain\ info=Lastna serijska vrata - ne morem pridobiti podatkov #: ../../../processing/app/Preferences.java:149 Nepali=Nepalsko #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:601 -!Network= +Network=Omre\u017eje #: ../../../../../app//src/processing/app/Editor.java:2804 -!Network\ port,\ can't\ obtain\ info= +Network\ port,\ can't\ obtain\ info=Omre\u017ena vrata, ne morem pridobiti podatkov #: ../../../../../app/src/processing/app/Editor.java:65 -!Network\ ports= +Network\ ports=Omre\u017ena vrata #: ../../../cc/arduino/packages/uploaders/SSHUploader.java:51 Network\ upload\ using\ programmer\ not\ supported=Nalaganje prek mre\u017ee s programatorjem ni mogo\u010de @@ -1021,16 +1057,16 @@ Next\ Tab=Naslednji zavihek No=Ne #: ../../../processing/app/debug/Compiler.java:158 -!No\ authorization\ data\ found= +No\ authorization\ data\ found=Ni najdenih podatkov za overitev #: tools/format/src/AutoFormat.java:54 tools/AutoFormat.java:916 No\ changes\ necessary\ for\ Auto\ Format.=Ni potrebnih sprememb za Avtomatsko formatiranje. #: ../../../processing/app/BaseNoGui.java:665 -!No\ command\ line\ parameters\ found= +No\ command\ line\ parameters\ found=Ni najdenih parametrov ukazne vrstice #: ../../../processing/app/debug/Compiler.java:200 -!No\ compiled\ sketch\ found= +No\ compiled\ sketch\ found=Ni najdene prevedene skice #: Editor.java:373 No\ files\ were\ added\ to\ the\ sketch.=Skici ni bila dodana nobena datoteka. @@ -1042,10 +1078,10 @@ No\ launcher\ available=Noben zaganjalnik ni na voljo No\ line\ ending=Brez urejanja #: ../../../processing/app/BaseNoGui.java:665 -!No\ parameters= +No\ parameters=Ni parametrov #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:453 -!No\ proxy= +No\ proxy=Ni proxy stre\u017enika #: Base.java:541 No\ really,\ time\ for\ some\ fresh\ air\ for\ you.=Zdaj pa res, \u010das je za malo sve\u017eega zraka. @@ -1056,20 +1092,20 @@ No\ reference\ available\ for\ "{0}"=Reference za "{0}" ni na voljo #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 -!No\ sketch= +No\ sketch=Ni skice #: ../../../processing/app/BaseNoGui.java:428 -!No\ sketchbook= +No\ sketchbook=Ni skicirke #: ../../../processing/app/Sketch.java:204 -!No\ valid\ code\ files\ found= +No\ valid\ code\ files\ found=Nisem na\u0161el veljavnih datotek s kodo #: ../../../processing/app/debug/TargetPackage.java:63 #, java-format No\ valid\ hardware\ definitions\ found\ in\ folder\ {0}.=V mapi {0} ni veljavnih definicij za strojno opremo #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:184 -!None= +None=Brez #: ../../../processing/app/Preferences.java:108 Norwegian\ Bokm\u00e5l=Norve\u0161ko Bokm\u00e5l @@ -1085,13 +1121,13 @@ OK=V redu One\ file\ added\ to\ the\ sketch.=Skici je bila dodana ena datoteka. #: ../../../processing/app/BaseNoGui.java:455 -!Only\ --verify,\ --upload\ or\ --get-pref\ are\ supported= +Only\ --verify,\ --upload\ or\ --get-pref\ are\ supported=Podprti so le --verify, --upload ali --get-pref #: EditorToolbar.java:41 Open=Odpri #: ../../../../../app/src/processing/app/Editor.java:625 -!Open\ Recent= +Open\ Recent=Odpri nedavno uporabljene #: Editor.java:2688 Open\ URL=Odpri URL @@ -1103,13 +1139,13 @@ Open\ an\ Arduino\ sketch...=Odpri Arduino skico... Open...=Odpri... #: ../../../../../arduino-core/src/processing/app/I18n.java:37 -!Other= +Other=Drugo #: Editor.java:563 Page\ Setup=Postavitev strani #: ../../../../../arduino-core/src/processing/app/I18n.java:25 -!Partner= +Partner=Partner #: ../../../processing/app/forms/PasswordAuthorizationDialog.java:44 Password\:=Geslo\: @@ -1121,33 +1157,33 @@ Paste=Prilepi Persian=Perzijsko #: ../../../processing/app/Preferences.java:161 -!Persian\ (Iran)= +Persian\ (Iran)=Farsi (Iran) #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:79 #, java-format -!Platform\ {0}\ (package\ {1})\ is\ unknown= +Platform\ {0}\ (package\ {1})\ is\ unknown=Platforma {0} (paket {1}) ni poznana #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:195 -!Please\ confirm\ boards\ deletion= +Please\ confirm\ boards\ deletion=Potrdite izbris plo\u0161\u010de #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 -!Please\ confirm\ library\ deletion= +Please\ confirm\ library\ deletion=Potrdite izbris knji\u017enice #: debug/Compiler.java:408 Please\ import\ the\ SPI\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.=Prosim uvozi SPI knji\u017enico iz menija Skica > Uvozi knji\u017enico. #: ../../../processing/app/debug/Compiler.java:529 -!Please\ import\ the\ Wire\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.= +Please\ import\ the\ Wire\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.=Uvozite knji\u017enico Wire iz menija Skica > Uvozi knji\u017enico. #: ../../../../../app//src/processing/app/Editor.java:2799 -!Please\ select\ a\ port\ to\ obtain\ board\ info= +Please\ select\ a\ port\ to\ obtain\ board\ info=Izberite vrata za pridobitev podatkov o plo\u0161\u010di #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 -!Please\ select\ a\ programmer\ from\ Tools->Programmer\ menu= +Please\ select\ a\ programmer\ from\ Tools->Programmer\ menu=Izberite programator iz menija Orodja -> Programator #: ../../../../../app/src/processing/app/Editor.java:2613 -!Plotter\ not\ available\ while\ serial\ monitor\ is\ open= +Plotter\ not\ available\ while\ serial\ monitor\ is\ open=Risalnik ni na voljo, kadar je serijski monitor odprt #: Preferences.java:110 Polish=Poljsko @@ -1156,7 +1192,7 @@ Polish=Poljsko Port=Vrata #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:491 -!Port\ number\:= +Port\ number\:=\u0160tevila vrat\: #: ../../../processing/app/Preferences.java:151 Portugese=Portugalsko @@ -1171,7 +1207,7 @@ Portuguese\ (Portugal)=Portugalsko (Portugalska) Preferences=Nastavitve #: ../../../../../app/src/processing/app/Base.java:297 -!Preparing\ boards...= +Preparing\ boards...=Priprava plo\u0161\u010d... #: FindReplace.java:123 FindReplace.java:128 Previous=Prej\u0161nji @@ -1202,7 +1238,7 @@ Problem\ accessing\ board\ folder\ /www/sd=Te\u017eava pri dostopu do mape /www/ #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:206 #, java-format -!Problem\ accessing\ files\ in\ folder\ "{0}"= +Problem\ accessing\ files\ in\ folder\ "{0}"=Te\u017eava pri dostopu do datotek v imeniku "{0}" #: Base.java:1673 Problem\ getting\ data\ folder=Te\u017eava pri pridobivanju podatkovne mape @@ -1221,16 +1257,16 @@ Programmer=Programator #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:80 #, java-format -!Progress\ {0}= +Progress\ {0}=Napredek {0} #: Base.java:783 Editor.java:593 Quit=Zapri #: ../../../../../app/src/processing/app/Base.java:1233 -!RETIRED= +RETIRED=UPOKOJEN #: ../../../../../arduino-core/src/processing/app/I18n.java:26 -!Recommended= +Recommended=Priporo\u010deno #: Editor.java:1138 Editor.java:1140 Editor.java:1390 Redo=Ponovi @@ -1239,15 +1275,15 @@ Redo=Ponovi Reference=Namigi #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 -!Remove= +Remove=Odstrani -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +Removing\ library\:\ {0}\:{1}=Odstranitev knji\u017enice\: {0}\:{1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 -!Removing...= +Removing...=Odstranjevanje... #: EditorHeader.java:300 Rename=Preimenuj @@ -1269,18 +1305,21 @@ Replace\ the\ existing\ version\ of\ {0}?=Zamenjaj obstoje\u010do razli\u010dico Replace\ with\:=Zamenjaj z\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 -!Retired= +Retired=Upokojen + +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=Ponovno poskusim nalo\u017eiti z uporabo drugih serijskih vrat? #: Preferences.java:113 Romanian=Romunsko #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:83 #, java-format -!Running\ recipe\:\ {0}= +Running\ recipe\:\ {0}=Zaganjam recept\: {0} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:82 #, java-format -!Running\:\ {0}= +Running\:\ {0}=Se izvaja\: {0} #: Preferences.java:114 Russian=Rusko @@ -1303,13 +1342,13 @@ Save\ changes\ to\ "{0}"?\ \ =Shrani spremembe v "{0}"? Save\ sketch\ folder\ as...=Shrani mapo skice kot... #: ../../../../../app/src/processing/app/Preferences.java:425 -!Save\ when\ verifying\ or\ uploading= +Save\ when\ verifying\ or\ uploading=Shrani ob preverjanju ali nalaganju #: Editor.java:2270 Editor.java:2308 Saving...=Shranjujem... #: ../../../processing/app/FindReplace.java:131 -!Search\ all\ Sketch\ Tabs= +Search\ all\ Sketch\ Tabs=Iskanje po vseh zavihkih skic #: Base.java:1909 Select\ (or\ create\ new)\ folder\ for\ sketches...=Izberi (ali ustvari novo) mapo za skice... @@ -1328,53 +1367,57 @@ Select\ new\ sketchbook\ location=Izberi novo lokacijo skicirke #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:237 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:249 -!Select\ version= +Select\ version=Izberite razli\u010dico #: ../../../processing/app/debug/Compiler.java:146 Selected\ board\ depends\ on\ '{0}'\ core\ (not\ installed).=Izbrana plo\u0161\u010da je odvisna od jedra '{0}' (ni name\u0161\u010deno). #: ../../../../../app/src/processing/app/Base.java:374 -!Selected\ board\ is\ not\ available= +Selected\ board\ is\ not\ available=Izbrana plo\u0161\u010da ni na voljo #: ../../../../../app/src/processing/app/Base.java:423 -!Selected\ library\ is\ not\ available= +Selected\ library\ is\ not\ available=Izbrana knji\u017enica ni na voljo #: SerialMonitor.java:93 Send=Po\u0161lji #: ../../../../../arduino-core/src/processing/app/I18n.java:32 -!Sensors= +Sensors=Senzorji #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:669 Serial\ Monitor=Serijski vmesnik #: ../../../../../app/src/processing/app/Editor.java:804 -!Serial\ Plotter= +Serial\ Plotter=Serijski risalnik #: ../../../../../app/src/processing/app/Editor.java:2325 #, java-format -!Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release= +Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release=Serijski monitor ni podprt na omre\u017enih vratih, kot so {0} za {1} v tej izdaji #: ../../../../../app/src/processing/app/Editor.java:2516 -!Serial\ monitor\ not\ available\ while\ plotter\ is\ open= +Serial\ monitor\ not\ available\ while\ plotter\ is\ open=Serijski monitor ni na voljo, ko je odprt risalnik #: Serial.java:194 #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Serijska vrata ''{0}'' niso bila najdena. Si izbral/a pravilna vrata v meniju Orodja > Serijska vrata? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=Serijska vrata niso izbrana. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Serijski vrat {0} ni bilo mogo\u010de najti.\u23ce Poskusi ponovno z drugimi serijskimi vrati. +Serial\ port\ {0}\ not\ found.=Serijska vrata {0} niso bila najdena. #: ../../../../../app/src/processing/app/Editor.java:65 -!Serial\ ports= +Serial\ ports=Serijska vrata #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:84 #, java-format -!Setting\ build\ path\ to\ {0}= +Setting\ build\ path\ to\ {0}=Nastavljam pot za izgradnjo na {0} #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:450 -!Settings= +Settings=Nastavitve #: Base.java:1681 Settings\ issues=Te\u017eava z nastavitvami @@ -1382,11 +1425,14 @@ Settings\ issues=Te\u017eava z nastavitvami #: Editor.java:641 Show\ Sketch\ Folder=Poka\u017ei mapo skice +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=Prika\u017ei \u010dasovni \u017eig + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Prika\u017ei izpis med\: #: ../../../../../arduino-core/src/processing/app/I18n.java:31 -!Signal\ Input/Output= +Signal\ Input/Output=Signal vhod/izhod #: Editor.java:607 Sketch=Skica @@ -1423,14 +1469,14 @@ Sketchbook\ folder\ disappeared=Mapa s skicami je izginila Sketchbook\ location\:=Lokacija skicirke\: #: ../../../processing/app/BaseNoGui.java:428 -!Sketchbook\ path\ not\ defined= +Sketchbook\ path\ not\ defined=Pot do skicirke ni podana #: ../../../../../arduino-core//src/cc/arduino/contributions/packages/ContributionsIndexer.java:96 #, java-format -!Skipping\ contributed\ index\ file\ {0},\ parsing\ error\ occured\:= +Skipping\ contributed\ index\ file\ {0},\ parsing\ error\ occured\:=Izpu\u0161\u010dam podano indeksno datoteko {0}, zaradi napake pri raz\u010dlenjevanju\: #: ../../../../../app/src/processing/app/Preferences.java:185 -!Slovak= +Slovak=Slova\u0161\u010dina #: ../../../processing/app/Preferences.java:152 Slovenian=Slovensko @@ -1443,16 +1489,16 @@ Some\ files\ are\ marked\ "read-only",\ so\ you'll\nneed\ to\ re-save\ this\ ske #: ../../../../../arduino-core/src/processing/app/Sketch.java:246 #, java-format -!Sorry,\ the\ folder\ "{0}"\ already\ exists.= +Sorry,\ the\ folder\ "{0}"\ already\ exists.=Imenik "{0}" \u017ee obstaja. #: Preferences.java:115 Spanish=\u0160pansko #: ../../../../../app/src/processing/app/Base.java:2333 -!Specified\ folder/zip\ file\ does\ not\ contain\ a\ valid\ library= +Specified\ folder/zip\ file\ does\ not\ contain\ a\ valid\ library=Izbrani imenik/zip datoteka ne vsebuje veljavne knji\u017enice #: ../../../../../app/src/processing/app/Base.java:466 -!Starting...= +Starting...=Zagon... #: Base.java:540 Sunshine=Sonce sije @@ -1464,29 +1510,29 @@ Swedish=\u0160vedsko System\ Default=Privzete nastavitve #: ../../../../../app/src/processing/app/Preferences.java:188 -!Talossan= +Talossan=Talosan\u0161\u010dina #: Preferences.java:116 Tamil=Tamilsko #: ../../../../../app/src/cc/arduino/i18n/Languages.java:102 -!Telugu= +Telugu=Telugu #: ../../../../../app/src/cc/arduino/i18n/Languages.java:100 -!Thai= +Thai=Taj\u0161\u010dina #: debug/Compiler.java:414 The\ 'BYTE'\ keyword\ is\ no\ longer\ supported.=Klju\u010dna beseda "BYTE" ni ve\u010d podprta. #: ../../../processing/app/BaseNoGui.java:484 -!The\ --upload\ option\ supports\ only\ one\ file\ at\ a\ time= +The\ --upload\ option\ supports\ only\ one\ file\ at\ a\ time=Opcija --upload naenkrat podpira le eno datoteko #: debug/Compiler.java:426 The\ Client\ class\ has\ been\ renamed\ EthernetClient.=Client razred je bil preimenovan v EthernetClient. #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format -!The\ IDE\ includes\ an\ updated\ {0}\ package,\ but\ you're\ using\ an\ older\ one.\nDo\ you\ want\ to\ upgrade\ {0}?= +The\ IDE\ includes\ an\ updated\ {0}\ package,\ but\ you're\ using\ an\ older\ one.\nDo\ you\ want\ to\ upgrade\ {0}?=IDE vklju\u010duje posodobljen paket {0}, vendar uporabljate starej\u0161ega.\n\u017delite nadgraditi {0}? #: debug/Compiler.java:420 The\ Server\ class\ has\ been\ renamed\ EthernetServer.=Server razred je bil preimenovan v EthernetServer. @@ -1495,18 +1541,22 @@ The\ Server\ class\ has\ been\ renamed\ EthernetServer.=Server razred je bil pre The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=Udp razred je bil preimenovan v EthernetUdp. #: ../../../../../arduino-core/src/processing/app/BaseNoGui.java:177 -!The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed.= +The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed.=Trenutno izbrana plo\u0161\u010da potrebuje jedro '{0}', ki ni name\u0161\u010deno. #: Editor.java:2147 #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=Datoteka "{0}" se mora nahajati v\u23ce\nmapi za skico imenovano "{1}".\u23ce\nUstvarim to mapo, premaknem datoteko in nadaljujem? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=Knji\u017enice "{0}" ni mogo\u010de uporabiti.\nImeniki knji\u017enic morajo imeti ime, ki se za\u010dne s \u010drko ali \u0161tevilko, tej pa\nsledijo \u010drke, \u0161tevilke, pomi\u0161ljaji, pike ali pod\u010drtaji. Najve\u010dja dol\u017eina je 63 znakov. + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=Knji\u017enice "{0}" ni mogo\u010de uporabiti.\u23ce\nIme knji\u017enice lahko vsebuje le osnovne \u010drke in \u0161tevilke.\u23ce\n(Samo ASCII, brez presledkov, prvi znak ne sme biti \u0161tevilka) #: ../../../../../app/src/processing/app/SketchController.java:170 -!The\ main\ file\ cannot\ use\ an\ extension= +The\ main\ file\ cannot\ use\ an\ extension=Glavna datoteka ne more uporabiti raz\u0161iritve #: Sketch.java:356 The\ name\ cannot\ start\ with\ a\ period.=Ime se ne sme za\u010deti s piko. @@ -1520,41 +1570,44 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format -!The\ sketch\ already\ contains\ a\ file\ named\ "{0}"= +The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=Skica \u017ee vsebuje datoteko z imenom "{0}" #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Mapa s skico je izginila.\u23ce\nPosku\u0161al bom ponovno shraniti v isto lokacijo,\u23ce\nvendar bo potem vse, razen kode, izgubljeno. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=Ime skice je bilo spremenjeno.\nImena skic se morajo za\u010deti s \u010drko ali \u0161tevilko, tej pa sledijo \u010drke,\n\u0161tevilke, pomi\u0161ljaji, pike ali pod\u010drtaji. Najve\u010dja dol\u017eina je 63 znakov. #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=Mapa s skicami ne obstaja ve\u010d. \u23ce\nArduino bo izbral privzeto lokacijo in\u23ce\nustvaril novo mapo, \u010de bo to potrebno.\u23ce\nArduino bo potem nehal govoriti o sebi\u23ce\nv tretji osebi. #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 -!The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=Mapa dolo\u010dena za skicirko vsebuje kopijo va\u0161ega IDE razvojnega vmesnika. \nZa va\u0161o skicirko izberite drugo mapo. + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =Tema\: #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 -!This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= +This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=Knji\u017enica ni na seznamu Upravljalnika knji\u017enic. Od tukaj je ne morete ponovno namestiti.\nSte prepri\u010dani, da jo \u017eelite izbrisati? #: ../../../../../app/src/processing/app/EditorStatus.java:349 -!This\ report\ would\ have\ more\ information\ with\n"Show\ verbose\ output\ during\ compilation"\noption\ enabled\ in\ File\ ->\ Preferences.\n= +This\ report\ would\ have\ more\ information\ with\n"Show\ verbose\ output\ during\ compilation"\noption\ enabled\ in\ File\ ->\ Preferences.\n=To poro\u010dilo bi vsebovalo ve\u010d podatkov ob uporabi\nmo\u017enosti "Prika\u017ei podroben opis med prevejanjem",\nki se nahaja v meniju Datoteka -> Nastavitve.\n #: Base.java:535 Time\ for\ a\ Break=\u010cas za odmor #: ../../../../../arduino-core/src/processing/app/I18n.java:34 -!Timing= +Timing=\u010casovna uskladitev #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:94 #, java-format -!Tool\ {0}\ is\ not\ available\ for\ your\ operating\ system.= +Tool\ {0}\ is\ not\ available\ for\ your\ operating\ system.=Orodje {0} ni na voljo za va\u0161 operacijski sistem. #: Editor.java:663 Tools=Orodja #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:97 -!Topic= +Topic=Tema #: Editor.java:1070 Troubleshooting=Odpravljanje napak @@ -1564,7 +1617,7 @@ Turkish=Tur\u0161ko #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:109 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:105 -!Type= +Type=Tip #: ../../../processing/app/Editor.java:2507 Type\ board\ password\ to\ access\ its\ console=Vnesi geslo plo\u0161\u010de za dostop do konzole @@ -1577,7 +1630,7 @@ Ukrainian=Ukrajinsko #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:142 #, java-format -!Unable\ to\ connect\ to\ {0}= +Unable\ to\ connect\ to\ {0}=Ne morem se povezati na {0} #: ../../../processing/app/Editor.java:2524 #: ../../../processing/app/NetworkMonitor.java:145 @@ -1591,41 +1644,41 @@ Unable\ to\ connect\:\ wrong\ password?=Povezavi ni mogo\u010de vzpostaviti\: na #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:65 #, java-format -!Unable\ to\ find\ {0}\ in\ {1}= +Unable\ to\ find\ {0}\ in\ {1}=Ne morem najti {0} v {1} #: ../../../processing/app/Editor.java:2512 Unable\ to\ open\ serial\ monitor=Serijskega vmesnika ni mogo\u010de odpreti #: ../../../../../app/src/processing/app/Editor.java:2709 -!Unable\ to\ open\ serial\ plotter= +Unable\ to\ open\ serial\ plotter=Ne morem odpreti serijskega risalnika #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:94 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 -!Unable\ to\ reach\ Arduino.cc\ due\ to\ possible\ network\ issues.= +Unable\ to\ reach\ Arduino.cc\ due\ to\ possible\ network\ issues.=Ne morem dostopati do Arduino.cc, verjetno zaradi te\u017eav z omre\u017ejem. #: ../../../../../arduino-core/src/processing/app/I18n.java:38 -!Uncategorized= +Uncategorized=Nekategorizirano #: Editor.java:1133 Editor.java:1355 Undo=Razveljavi #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:85 #, java-format -!Unhandled\ type\ {0}\ in\ context\ key\ {1}= +Unhandled\ type\ {0}\ in\ context\ key\ {1}=Neobravnavan tip {0} v kontekstualnem klju\u010du {1} #: ../../../../../app//src/processing/app/Editor.java:2818 -!Unknown\ board= +Unknown\ board=Neznana plo\u0161\u010da #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format -!Unknown\ sketch\ file\ extension\:\ {0}= +Unknown\ sketch\ file\ extension\:\ {0}=Neznana kon\u010dnica datoteke s skico\: {0} #: Platform.java:168 Unspecified\ platform,\ no\ launcher\ available.\nTo\ enable\ opening\ URLs\ or\ folders,\ add\ a\ \n"launcher\=/path/to/app"\ line\ to\ preferences.txt=Nepoznana platforma, zaganjalnik ni na voljo.\u23ce\nZa omogo\u010danje odpiranja URL-ov in map, dodaj\u23ce\n"launcher\=/path/to/app" vrstico v preferences.txt #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownUpdatableLibrariesItem.java:27 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownUpdatableCoresItem.java:27 -!Updatable= +Updatable=Nadgradljivo #: UpdateCheck.java:111 Update=Posodobi @@ -1635,18 +1688,18 @@ Update\ sketch\ files\ to\ new\ extension\ on\ save\ (.pde\ ->\ .ino)=Ob shranje #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:88 #, java-format -!Updates\ available\ for\ some\ of\ your\ {0}boards{1}= +Updates\ available\ for\ some\ of\ your\ {0}boards{1}=Za dolo\u010dene {0}plo\u0161\u010de{1} so na voljo posodobitve #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:90 #, java-format -!Updates\ available\ for\ some\ of\ your\ {0}boards{1}\ and\ {2}libraries{3}= +Updates\ available\ for\ some\ of\ your\ {0}boards{1}\ and\ {2}libraries{3}=Za dolo\u010dene {0}plo\u0161\u010de{1} in {2}knji\u017enice{3} so na voljo posodobitve #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:86 #, java-format -!Updates\ available\ for\ some\ of\ your\ {0}libraries{1}= +Updates\ available\ for\ some\ of\ your\ {0}libraries{1}=Za dolo\u010dene {0}knji\u017enice{1} so na voljo posodobitve #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:167 -!Updating\ list\ of\ installed\ libraries= +Updating\ list\ of\ installed\ libraries=Posodabljanje seznama name\u0161\u010denih knji\u017enic #: EditorToolbar.java:41 Editor.java:545 Upload=Nalo\u017ei @@ -1655,7 +1708,7 @@ Upload=Nalo\u017ei Upload\ Using\ Programmer=Nalo\u017ei s programatorjem #: ../../../../../app//src/processing/app/Editor.java:2814 -!Upload\ any\ sketch\ to\ obtain\ it= +Upload\ any\ sketch\ to\ obtain\ it=Nalo\u017eite poljubno skico, da jo pridobite #: Editor.java:2403 Editor.java:2439 Upload\ canceled.=Nalaganje prekinjeno. @@ -1677,19 +1730,19 @@ Use\ external\ editor=Uporabi zunanji urejevalnik #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:493 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:499 -!Username\:= +Username\:=Uporabni\u0161ko ime\: #: ../../../processing/app/debug/Compiler.java:410 #, java-format -!Using\ library\ {0}\ at\ version\ {1}\ in\ folder\:\ {2}\ {3}= +Using\ library\ {0}\ at\ version\ {1}\ in\ folder\:\ {2}\ {3}=Uporaba knji\u017enice {0} razli\u010dice {1} v imeniku\: {2} {3} #: ../../../processing/app/debug/Compiler.java:94 #, java-format -!Using\ library\ {0}\ in\ folder\:\ {1}\ {2}= +Using\ library\ {0}\ in\ folder\:\ {1}\ {2}=Uporaba knji\u017enice {0} v imeniku\: {1} {2} #: ../../../processing/app/debug/Compiler.java:320 #, java-format -!Using\ previously\ compiled\ file\:\ {0}= +Using\ previously\ compiled\ file\:\ {0}=Uporaba predhodno prevedene datoteke\: {0} #: EditorToolbar.java:41 EditorToolbar.java:46 Verify=Preveri @@ -1698,27 +1751,27 @@ Verify=Preveri Verify\ code\ after\ upload=Preveri kodo po nalaganju #: ../../../../../app/src/processing/app/Editor.java:725 -!Verify/Compile= +Verify/Compile=Preveri/Prevedi #: ../../../../../app/src/processing/app/Base.java:451 -!Verifying\ and\ uploading...= +Verifying\ and\ uploading...=Preverjanje in nalaganje... #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:71 -!Verifying\ archive\ integrity...= +Verifying\ archive\ integrity...=Preverjanje integritete arhiva... #: ../../../../../app/src/processing/app/Base.java:454 -!Verifying...= +Verifying...=Preverjanje... #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:328 #, java-format -!Version\ {0}= +Version\ {0}=Razli\u010dica {0} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:326 -!Version\ unknown= +Version\ unknown=Neznana razli\u010dica #: ../../../cc/arduino/contributions/libraries/ContributedLibrary.java:97 #, java-format -!Version\ {0}= +Version\ {0}=Razli\u010dica {0} #: ../../../processing/app/Preferences.java:154 Vietnamese=Vietnamsko @@ -1728,46 +1781,46 @@ Visit\ Arduino.cc=Obi\u0161\u010di Arduino.cc #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:90 #, java-format -!WARNING\:\ Category\ '{0}'\ in\ library\ {1}\ is\ not\ valid.\ Setting\ to\ '{2}'= +WARNING\:\ Category\ '{0}'\ in\ library\ {1}\ is\ not\ valid.\ Setting\ to\ '{2}'=OPOZORILO\: Kategorija '{0}' v knji\u017enici {1} ni veljavna. Nastavljeno na '{2}' #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:93 #, java-format -!WARNING\:\ Spurious\ {0}\ folder\ in\ '{1}'\ library= +WARNING\:\ Spurious\ {0}\ folder\ in\ '{1}'\ library=OPOZORILO\: Napa\u010den imenik {0} v knji\u017enici '{1}' #: ../../../processing/app/debug/Compiler.java:115 #, java-format -!WARNING\:\ library\ {0}\ claims\ to\ run\ on\ {1}\ architecture(s)\ and\ may\ be\ incompatible\ with\ your\ current\ board\ which\ runs\ on\ {2}\ architecture(s).= +WARNING\:\ library\ {0}\ claims\ to\ run\ on\ {1}\ architecture(s)\ and\ may\ be\ incompatible\ with\ your\ current\ board\ which\ runs\ on\ {2}\ architecture(s).=OPOZORILO\: knji\u017enica {0} trdi, da te\u010de na {1} arhitekturi in je lahko nezdru\u017eljiva z va\u0161o trenutno plo\u0161\u010do, ki te\u010de na {2} arhitekturi. #: Base.java:2128 Warning=Opozorilo #: ../../../processing/app/debug/Compiler.java:1295 -!Warning\:\ This\ core\ does\ not\ support\ exporting\ sketches.\ Please\ consider\ upgrading\ it\ or\ contacting\ its\ author= +Warning\:\ This\ core\ does\ not\ support\ exporting\ sketches.\ Please\ consider\ upgrading\ it\ or\ contacting\ its\ author=Opozorilo\: To jedro ne podpira izva\u017eanja skic. Poskusite ga nadgraditi ali kontaktirajte njegovega avtorja #: ../../../cc/arduino/utils/ArchiveExtractor.java:197 #, java-format -!Warning\:\ file\ {0}\ links\ to\ an\ absolute\ path\ {1}= +Warning\:\ file\ {0}\ links\ to\ an\ absolute\ path\ {1}=Opozorilo\: datoteka {0} je povezana na absolutno pot {1} #: ../../../cc/arduino/contributions/packages/ContributionsIndexer.java:133 -!Warning\:\ forced\ trusting\ untrusted\ contributions= +Warning\:\ forced\ trusting\ untrusted\ contributions=Opozorilo\: Prisiljeno zaupanje nezaupanim prispevkom #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:217 #, java-format -!Warning\:\ forced\ untrusted\ script\ execution\ ({0})= +Warning\:\ forced\ untrusted\ script\ execution\ ({0})=Opozorilo\: prisiljeno izvajanje nezaupanim skriptom ({0}) #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:212 #, java-format -!Warning\:\ non\ trusted\ contribution,\ skipping\ script\ execution\ ({0})= +Warning\:\ non\ trusted\ contribution,\ skipping\ script\ execution\ ({0})=Opozorilo\: nezaupan prispevek, izpu\u0161\u010dam izvajanje skripta ({0}) #: ../../../processing/app/debug/LegacyTargetPlatform.java:158 #, java-format -!Warning\:\ platform.txt\ from\ core\ '{0}'\ contains\ deprecated\ {1},\ automatically\ converted\ to\ {2}.\ Consider\ upgrading\ this\ core.= +Warning\:\ platform.txt\ from\ core\ '{0}'\ contains\ deprecated\ {1},\ automatically\ converted\ to\ {2}.\ Consider\ upgrading\ this\ core.=Opozorilo\: platform.txt jedra '{0}' vsebuje opu\u0161\u010den {1}, ki je bil samodejno konvertiran v {2}. Poskusite z nadgradnjo tega jedra. #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:91 -!Warning\:\ platform.txt\ from\ core\ '{0}'\ misses\ property\ '{1}',\ using\ default\ value\ '{2}'.\ Consider\ upgrading\ this\ core.= +Warning\:\ platform.txt\ from\ core\ '{0}'\ misses\ property\ '{1}',\ using\ default\ value\ '{2}'.\ Consider\ upgrading\ this\ core.=Opozorilo\: platform.txt jedra '{0}' nima lastnosti '{1}', zato uporabljam provzeto vrednost '{2}'. Poskusite nadgraditi to jedro. #: ../../../../../app/src/processing/app/Preferences.java:190 -!Western\ Frisian= +Western\ Frisian=Zahodna frizij\u0161\u010dina #: debug/Compiler.java:444 Wire.receive()\ has\ been\ renamed\ Wire.read().=Wire.receive() je bil preimenovan v Wire.read() @@ -1785,7 +1838,7 @@ Wrong\ microcontroller\ found.\ \ Did\ you\ select\ the\ right\ board\ from\ the Yes=Da #: ../../../../../app/src/processing/app/Base.java:2312 -!You\ can't\ import\ a\ folder\ that\ contains\ your\ sketchbook= +You\ can't\ import\ a\ folder\ that\ contains\ your\ sketchbook=Ne morete uvoziti mape, ki vsebuje va\u0161o skicirko #: Sketch.java:883 You\ cannot\ save\ the\ sketch\ into\ a\ folder\ninside\ itself.\ This\ would\ go\ on\ forever.=Skice ne more\u0161 shraniti v lastno mapo.\u23ce To bi se ponavljalo v nedogled. @@ -1794,7 +1847,7 @@ You\ cannot\ save\ the\ sketch\ into\ a\ folder\ninside\ itself.\ This\ would\ g You\ forgot\ your\ sketchbook=Pozabil si svojo skicirko #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:252 -!You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.= +You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.=Spremembe niso bile shranjene\!\nShraniti morate vse svoje skice, \u010de \u017eelite vklopiti to opcijo. #: ../../../processing/app/AbstractMonitor.java:92 You've\ pressed\ {0}\ but\ nothing\ was\ sent.\ Should\ you\ select\ a\ line\ ending?=Pritisnil/a si {0}, vendar se ni ni\u010d zgodilo. Poskusi izbrati kon\u010dnico vrstice / line ending @@ -1803,10 +1856,10 @@ You've\ pressed\ {0}\ but\ nothing\ was\ sent.\ Should\ you\ select\ a\ line\ en You've\ reached\ the\ limit\ for\ auto\ naming\ of\ new\ sketches\nfor\ the\ day.\ How\ about\ going\ for\ a\ walk\ instead?=Za danes si dosegel/a mejo avtomatskega poimenovanje\u23ce novih skic. Pojdi raje na sprehod. #: ../../../processing/app/BaseNoGui.java:768 -!Your\ copy\ of\ the\ IDE\ is\ installed\ in\ a\ subfolder\ of\ your\ settings\ folder.\nPlease\ move\ the\ IDE\ to\ another\ folder.= +Your\ copy\ of\ the\ IDE\ is\ installed\ in\ a\ subfolder\ of\ your\ settings\ folder.\nPlease\ move\ the\ IDE\ to\ another\ folder.=Va\u0161a kopija IDE razvojnega okolja je name\u0161\u010dena v podimenik va\u0161ega imenika z nastavitvami.\nPremaknite IDE v drug imenik. #: ../../../processing/app/BaseNoGui.java:771 -!Your\ copy\ of\ the\ IDE\ is\ installed\ in\ a\ subfolder\ of\ your\ sketchbook.\nPlease\ move\ the\ IDE\ to\ another\ folder.= +Your\ copy\ of\ the\ IDE\ is\ installed\ in\ a\ subfolder\ of\ your\ sketchbook.\nPlease\ move\ the\ IDE\ to\ another\ folder.=Va\u0161a kopija IDE razvojnega okolja je nam\u0161\u010dena v podimeniku va\u0161e skicirke.\nPremaknite IDE v drugo mapo. #: Base.java:2638 ZIP\ files\ or\ folders=ZIP datoteke ali mape @@ -1820,7 +1873,7 @@ Zip\ doesn't\ contain\ a\ library=Zip ne vsebuje knji\u017enice #: ../../../../../arduino-core/src/processing/app/SketchCode.java:201 #, java-format -!"{0}"\ contains\ unrecognized\ characters.\ If\ this\ code\ was\ created\ with\ an\ older\ version\ of\ Arduino,\ you\ may\ need\ to\ use\ Tools\ ->\ Fix\ Encoding\ &\ Reload\ to\ update\ the\ sketch\ to\ use\ UTF-8\ encoding.\ If\ not,\ you\ may\ need\ to\ delete\ the\ bad\ characters\ to\ get\ rid\ of\ this\ warning.= +"{0}"\ contains\ unrecognized\ characters.\ If\ this\ code\ was\ created\ with\ an\ older\ version\ of\ Arduino,\ you\ may\ need\ to\ use\ Tools\ ->\ Fix\ Encoding\ &\ Reload\ to\ update\ the\ sketch\ to\ use\ UTF-8\ encoding.\ If\ not,\ you\ may\ need\ to\ delete\ the\ bad\ characters\ to\ get\ rid\ of\ this\ warning.="{0}" vsebuje neprepoznane znake. \u010ce je ta koda bila ustvarjena s starej\u0161o razli\u010dico Arduina, boste morda morali uprabiti Orodja --> Popravi kodiranje & Znova nalo\u017ei, da posodobite skico z uporabo UTF-8 kodiranja. V nasprotnem primeru boste morda morali zbrisati nepravine znake, da se znebite tega opozorila. #: debug/Compiler.java:409 \nAs\ of\ Arduino\ 0019,\ the\ Ethernet\ library\ depends\ on\ the\ SPI\ library.\nYou\ appear\ to\ be\ using\ it\ or\ another\ library\ that\ depends\ on\ the\ SPI\ library.\n\n=\nOd Arduino 0019 naprej je Ethernet knji\u017enica odvisna od SPI knji\u017enice.\u23ce\nZgleda, da uporablja\u0161 Ethernet ali drugo knji\u017enico, ki je odvisna od SPI knji\u017enice.\u23ce\n\u23ce\n @@ -1853,7 +1906,7 @@ compilation\ =prevajanje connected\!=povezano\! #: ../../../../../app/src/processing/app/Editor.java:1352 -!http\://www.arduino.cc/= +http\://www.arduino.cc/=http\://www.arduino.cc/ #: UpdateCheck.java:118 http\://www.arduino.cc/en/Main/Software=http\://www.arduino.cc/en/Main/Software @@ -1868,6 +1921,11 @@ ignoring\ invalid\ font\ size\ {0}=prezri neveljavno velikost pisave {0} #: Editor.java:936 Editor.java:943 name\ is\ null=ime je prazno +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=v {0} nisem na\u0161el datotek z glavami (.h) + #: Editor.java:932 serialMenu\ is\ null=serialMenu je prazen @@ -1877,27 +1935,27 @@ the\ selected\ serial\ port\ {0}\ does\ not\ exist\ or\ your\ board\ is\ not\ co #: ../../../processing/app/Base.java:389 #, java-format -!unknown\ option\:\ {0}= +unknown\ option\:\ {0}=neznana opcija\: {0} #: Preferences.java:391 upload=Nalo\u017ei #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:324 #, java-format -!version\ {0}= +version\ {0}=razli\u010dica {0} #: ../../../../../app/src/processing/app/Editor.java:2243 #, java-format -!{0}\ -\ {1}\ |\ Arduino\ {2}= +{0}\ -\ {1}\ |\ Arduino\ {2}={0} - {1} | Arduino {2} #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:39 #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:43 #, java-format -!{0}\ file\ signature\ verification\ failed= +{0}\ file\ signature\ verification\ failed={0} preverjanje podpisa datoteke ni bilo uspe\u0161no #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:310 #, java-format -!{0}\ file\ signature\ verification\ failed.\ File\ ignored.= +{0}\ file\ signature\ verification\ failed.\ File\ ignored.={0} preverjanje podpisa datoteke ni bilo uspe\u0161no. Datoteka je bila prezrta. #: Editor.java:380 #, java-format @@ -1905,19 +1963,19 @@ upload=Nalo\u017ei #: ../../../../../app/src/processing/app/Base.java:1201 #, java-format -!{0}\ libraries= +{0}\ libraries={0} knji\u017enice #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:76 #, java-format -!{0}\ must\ be\ a\ folder= +{0}\ must\ be\ a\ folder={0} mora biti imenik #: ../../../../../app/src/processing/app/EditorLineStatus.java:109 #, java-format -!{0}\ on\ {1}= +{0}\ on\ {1}={0} na {1} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:78 #, java-format -!{0}\ pattern\ is\ missing= +{0}\ pattern\ is\ missing=manjka vzorec {0} #: debug/Compiler.java:365 #, java-format @@ -1929,36 +1987,36 @@ upload=Nalo\u017ei #: ../../../processing/app/Base.java:519 #, java-format -!{0}\:\ Invalid\ argument\ to\ --pref,\ should\ be\ of\ the\ form\ "pref\=value"= +{0}\:\ Invalid\ argument\ to\ --pref,\ should\ be\ of\ the\ form\ "pref\=value"={0}\: Napa\u010den argument za --pref, ki bi moral imeti obliko "pref\=vrednost" #: ../../../processing/app/Base.java:476 #, java-format -!{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= - -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= +{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: Napa\u010dno ime plo\u0161\u010de, ki bi moralo imeti obliko "paket\:arch\:plo\u0161\u010da" ali "paket\:arch\:plo\u0161\u010da\:opcije" #: ../../../processing/app/Base.java:507 #, java-format -!{0}\:\ Invalid\ option\ for\ board\ "{1}"= +{0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: Napa\u010dna opcija za plo\u0161o "{1}" #: ../../../processing/app/Base.java:502 #, java-format -!{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Napa\u010dna opcija, ki bi morala imeti obliko "name\=vrednost" + +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: Nepravilna vrednost za opcijo "{1}" za plo\u0161\u010do "{2}" #: ../../../processing/app/Base.java:486 #, java-format -!{0}\:\ Unknown\ architecture= +{0}\:\ Unknown\ architecture={0}\: Neznana arhitektura #: ../../../processing/app/Base.java:491 #, java-format -!{0}\:\ Unknown\ board= +{0}\:\ Unknown\ board={0}\: Neznana plo\u0161\u010da #: ../../../processing/app/Base.java:481 #, java-format -!{0}\:\ Unknown\ package= +{0}\:\ Unknown\ package={0}\: Neznan paket #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format -!{0}Install\ this\ package{1}\ to\ use\ your\ {2}\ board= +{0}Install\ this\ package{1}\ to\ use\ your\ {2}\ board={0} Namestite ta paket {1} za rabo plo\u0161\u010de {2} diff --git a/arduino-core/src/processing/app/i18n/Resources_sq.po b/arduino-core/src/processing/app/i18n/Resources_sq.po index 591a6e04337..e2bf2c493bf 100644 --- a/arduino-core/src/processing/app/i18n/Resources_sq.po +++ b/arduino-core/src/processing/app/i18n/Resources_sq.po @@ -17,6 +17,9 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Besiana Bici , 2014 # Elio Qoshi , 2014 # Florian Tani , 2014 @@ -29,7 +32,7 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: Albanian (http://www.transifex.com/mbanzi/arduino-ide-15/language/sq/)\n" "MIME-Version: 1.0\n" @@ -628,6 +631,11 @@ msgstr "Nuk mund te fshihet versioni me i vjeter i {0}" msgid "Could not replace {0}" msgstr "Nuk mund te zevendesohet {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Nuk mund te arkivohet skica" @@ -683,6 +691,10 @@ msgstr "Pakeso dhembezimin" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Fshi" @@ -858,6 +870,11 @@ msgstr "Gabim duke marre folderim me te dhenat e Arduinos" msgid "Error inside Serial.{0}()" msgstr "Gabim brendra Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -877,6 +894,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Gabim gjete leximit te pelqimeve" @@ -911,6 +947,10 @@ msgstr "Gabim gjate djegjes se bootloaderit." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Gabim ndersa ndizet ngarkuesi i nisjes : mungon parametri konfigurues '{0}" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -947,10 +987,6 @@ msgstr "" msgid "Estonian" msgstr "Estonez" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estonez (Estonia)" - #: Editor.java:516 msgid "Examples" msgstr "Shembuj" @@ -1154,9 +1190,9 @@ msgstr "" msgid "Ignore Case" msgstr "Rast injorimi" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Injoro librarine me emer te keq" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1219,9 +1255,9 @@ msgstr "" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1248,6 +1284,17 @@ msgstr "Librari e pavlefshme e gjendur ne {0}: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "Italisht" @@ -1280,9 +1327,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1700,9 +1747,9 @@ msgstr "Reference" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1739,6 +1786,10 @@ msgstr "Zevendesoje me:" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "Rumanisht" @@ -1862,12 +1913,15 @@ msgid "" " Serial Port menu?" msgstr "Porta seriale \"{0}\" nuk gjindet. A e selektuat ate qe duhet ne te djathten tek Mjetet > Menuja e portave seriale?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Porta seriale {0} nuk u gjet.\nProvoni serish ngarkimin me nje porte tjeter seriale." +msgid "Serial port {0} not found." +msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1890,6 +1944,10 @@ msgstr "Probleme me ceshtjet" msgid "Show Sketch Folder" msgstr "Shfaq folderin e skices" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Shfaq fjalet me te shpeshta gjate daljes:" @@ -2061,6 +2119,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "Skedari \"{0}\" duhet te jete brenda\nnje skice skedari te quajtur \"{1}\".\nKrijo kete skedar, zhvendose skedarin, dhe vazhdo?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2106,10 +2172,11 @@ msgid "" "but anything besides the code will be lost." msgstr "Dosja e skices eshte zhdukur.\nDoni qe te provoni ta ruani perseri ne te njejtin vend,\npor cdo gje tjeter pervec kodit do te humbasi." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2127,6 +2194,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2619,6 +2690,12 @@ msgstr "Injoro madhesine e pavlefshme te tipit te shkrimit {0}" msgid "name is null" msgstr "emri eshte bosh" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu eshte bosh" @@ -2706,11 +2783,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: Emer bordi i pavlefshem, duhet te jete i formes \"package:arch:board\" ose \"package:arch:board:options\"" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: Opsion i pavlefshem per \"{1}\" opsion per bord \"{2}\"" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2721,6 +2793,11 @@ msgstr "{0}: Opsion invalid per bordin \"{1}\"" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: Opsion invalid, duhet te jete ne formen \"name=value\"" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_sq.properties b/arduino-core/src/processing/app/i18n/Resources_sq.properties index 83b4a11f892..6f875fd3760 100644 --- a/arduino-core/src/processing/app/i18n/Resources_sq.properties +++ b/arduino-core/src/processing/app/i18n/Resources_sq.properties @@ -17,6 +17,9 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Besiana Bici , 2014 # Elio Qoshi , 2014 # Florian Tani , 2014 @@ -24,7 +27,7 @@ # Orven Bregu , 2014 # www.openlabs.cc , 2014 # besmirzekaj , 2014 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Albanian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/sq/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: sq\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Albanian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/sq/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: sq\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=(kerkohet rinisja e Arduinos) @@ -447,6 +450,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Nuk mund te fshihet versioni me i vjet #, java-format Could\ not\ replace\ {0}=Nuk mund te zevendesohet {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Nuk mund te arkivohet skica @@ -486,6 +493,9 @@ Decrease\ Indent=Pakeso dhembezimin #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=Fshi @@ -617,6 +627,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Gabim duke marre folderim me te dhen #, java-format Error\ inside\ Serial.{0}()=Gabim brendra Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -631,6 +645,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Gabim duke hapur porten seriale "{0}" #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 Error\ reading\ preferences=Gabim gjete leximit te pelqimeve @@ -656,6 +682,9 @@ Error\ while\ burning\ bootloader.=Gabim gjate djegjes se bootloaderit. #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=Gabim ndersa ndizet ngarkuesi i nisjes \: mungon parametri konfigurues '{0} +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -684,9 +713,6 @@ Error\ while\ uploading\:\ missing\ '{0}'\ configuration\ parameter=Gabim gjate #: Preferences.java:93 Estonian=Estonez -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Estonez (Estonia) - #: Editor.java:516 Examples=Shembuj @@ -837,8 +863,8 @@ Hungarian=Hungarisht #: FindReplace.java:96 Ignore\ Case=Rast injorimi -#: Base.java:1058 -Ignoring\ bad\ library\ name=Injoro librarine me emer te keq +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Duke injoruar skicen me emer te keq @@ -882,9 +908,9 @@ Indonesian=Indonezisht #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -905,6 +931,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=Librari e pavlefshme e gjendur ne {0}\: #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=Italisht @@ -929,9 +964,9 @@ Latvian=Letonisht #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -1244,9 +1279,9 @@ Reference=Reference #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1274,6 +1309,9 @@ Replace\ with\:=Zevendesoje me\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=Rumanisht @@ -1365,9 +1403,13 @@ Serial\ Monitor=Monitor serial #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Porta seriale "{0}" nuk gjindet. A e selektuat ate qe duhet ne te djathten tek Mjetet > Menuja e portave seriale? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Porta seriale {0} nuk u gjet.\nProvoni serish ngarkimin me nje porte tjeter seriale. +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1385,6 +1427,9 @@ Settings\ issues=Probleme me ceshtjet #: Editor.java:641 Show\ Sketch\ Folder=Shfaq folderin e skices +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Shfaq fjalet me te shpeshta gjate daljes\: @@ -1504,6 +1549,10 @@ The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=Klasa Udp eshte riemeruar ne E #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=Skedari "{0}" duhet te jete brenda\nnje skice skedari te quajtur "{1}".\nKrijo kete skedar, zhvendose skedarin, dhe vazhdo? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=Libraria "{0}" nuk mund te perdoret.\nEmrat e librarive duhet te kene vetem shkronja dhe numra normal.\n(Vetem ASCI dhe jo hapesira, dhe nuk mund te filloje me nje numer) @@ -1528,8 +1577,8 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Dosja e skices eshte zhdukur.\nDoni qe te provoni ta ruani perseri ne te njejtin vend,\npor cdo gje tjeter pervec kodit do te humbasi. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=Skedari i sketchbook nuk egziston me.\nArduino do te kaloje ne vendodhjen e sketchbook-ut\nte parapercaktuar, dhe do te krijoje nje skedar te ri sketchbook-u\nnese eshte e nevojshme. Arduino pastaj do te ndaloje se foluri \nper veten ne veten e trete. @@ -1537,6 +1586,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1871,6 +1923,11 @@ ignoring\ invalid\ font\ size\ {0}=Injoro madhesine e pavlefshme te tipit te shk #: Editor.java:936 Editor.java:943 name\ is\ null=emri eshte bosh +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=serialMenu eshte bosh @@ -1938,10 +1995,6 @@ upload=ngarko #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: Emer bordi i pavlefshem, duhet te jete i formes "package\:arch\:board" ose "package\:arch\:board\:options" -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: Opsion i pavlefshem per "{1}" opsion per bord "{2}" - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: Opsion invalid per bordin "{1}" @@ -1950,6 +2003,10 @@ upload=ngarko #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Opsion invalid, duhet te jete ne formen "name\=value" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: Arkitekture e panjohur diff --git a/arduino-core/src/processing/app/i18n/Resources_sv.po b/arduino-core/src/processing/app/i18n/Resources_sv.po index 9f069b4c702..3df9e31c28a 100644 --- a/arduino-core/src/processing/app/i18n/Resources_sv.po +++ b/arduino-core/src/processing/app/i18n/Resources_sv.po @@ -17,22 +17,25 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Anton Ryberg , 2015 # Daniel Jansson , 2012 # Daniel Sjöberg , 2013 # Daniel Sjöberg , 2013 # enhacker, 2017 # GregerA , 2014 -# GudenTorson, 2015 +# 9681eeebf1b63dfd86a394f2a10d26a6_ae7409d, 2015 # Jonas Bengtsson , 2013 -# Jonatan Nyberg, 2016 +# efef6ec5b435a041fce803c7f8af77d2_2341d43, 2016 # Patrik Hermansson , 2015 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: Swedish (http://www.transifex.com/mbanzi/arduino-ide-15/language/sv/)\n" "MIME-Version: 1.0\n" @@ -631,6 +634,11 @@ msgstr "Kunde ej ta bort gammal version av {0}" msgid "Could not replace {0}" msgstr "Kunde ej byta ut {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Kunde ej arkivera skiss" @@ -686,6 +694,10 @@ msgstr "Minska indrag" msgid "Default" msgstr "Standard" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Ta bort" @@ -861,6 +873,11 @@ msgstr "Fel vid åtkomst av Arduinos datamapp." msgid "Error inside Serial.{0}()" msgstr "Fel inuti Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -880,6 +897,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Fel vi läsning av inställningar" @@ -914,6 +950,10 @@ msgstr "Fel vid bränning av bootloader." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -950,10 +990,6 @@ msgstr "Fel vid verifiering/uppladdning" msgid "Estonian" msgstr "Estniska" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estniska (Estland)" - #: Editor.java:516 msgid "Examples" msgstr "Exempel" @@ -1157,9 +1193,9 @@ msgstr "EJ KOMPATIBLA" msgid "Ignore Case" msgstr "Gör inte skillnad på små och stora bokstäver" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Ignorerar felaktigt biblioteksnamn" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1222,10 +1258,10 @@ msgstr "Installerad" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "Installerar bibliotek: {0}" +msgid "Installing library: {0}:{1}" +msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1251,6 +1287,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "Italienska" @@ -1283,10 +1330,10 @@ msgstr "Bibliotek lades till i dina bibliotek. Kontrollera \"Inkludera bibliotek msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "Biblioteket är redan installerat: {0} version {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1703,10 +1750,10 @@ msgstr "Referens" msgid "Remove" msgstr "Ta bort" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "Tar bort bibliotek: {0}" +msgid "Removing library: {0}:{1}" +msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1742,6 +1789,10 @@ msgstr "Ersätt med:" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "Rumänska" @@ -1865,11 +1916,14 @@ msgid "" " Serial Port menu?" msgstr "Serieporten ''{0}'' saknas. Valde du rätt från Verktyg > Serieport menyn?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" +msgid "Serial port {0} not found." msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 @@ -1893,6 +1947,10 @@ msgstr "Inställningsproblem" msgid "Show Sketch Folder" msgstr "Visa skissmappen" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Visa detaljerad information vid: " @@ -2064,6 +2122,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2109,10 +2175,11 @@ msgid "" "but anything besides the code will be lost." msgstr "Skissmappen har försvunnit.\nFörsöker att spara om på samma plats,\nmen allt förutom koden kommer att försvinna." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2130,6 +2197,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2622,6 +2693,12 @@ msgstr "Ignorerar felaktig typsnittsstorlek {0}" msgid "name is null" msgstr "name är null" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu är null" @@ -2709,11 +2786,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2724,6 +2796,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_sv.properties b/arduino-core/src/processing/app/i18n/Resources_sv.properties index f9f84391801..62d9c21074e 100644 --- a/arduino-core/src/processing/app/i18n/Resources_sv.properties +++ b/arduino-core/src/processing/app/i18n/Resources_sv.properties @@ -17,17 +17,20 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Anton Ryberg , 2015 # Daniel Jansson , 2012 # Daniel Sj\u00f6berg , 2013 # Daniel Sj\u00f6berg , 2013 # enhacker, 2017 # GregerA , 2014 -# GudenTorson, 2015 +# 9681eeebf1b63dfd86a394f2a10d26a6_ae7409d, 2015 # Jonas Bengtsson , 2013 -# Jonatan Nyberg, 2016 +# efef6ec5b435a041fce803c7f8af77d2_2341d43, 2016 # Patrik Hermansson , 2015 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Swedish (http\://www.transifex.com/mbanzi/arduino-ide-15/language/sv/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: sv\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Swedish (http\://www.transifex.com/mbanzi/arduino-ide-15/language/sv/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: sv\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=(kr\u00e4ver omstart av Arduino) @@ -450,6 +453,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Kunde ej ta bort gammal version av {0} #, java-format Could\ not\ replace\ {0}=Kunde ej byta ut {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Kunde ej arkivera skiss @@ -489,6 +496,9 @@ Decrease\ Indent=Minska indrag #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=Standard +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=Ta bort @@ -620,6 +630,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Fel vid \u00e5tkomst av Arduinos dat #, java-format Error\ inside\ Serial.{0}()=Fel inuti Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -634,6 +648,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Fel vid \u00f6ppning av serieporten ''{0} #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 Error\ reading\ preferences=Fel vi l\u00e4sning av inst\u00e4llningar @@ -659,6 +685,9 @@ Error\ while\ burning\ bootloader.=Fel vid br\u00e4nning av bootloader. #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -687,9 +716,6 @@ Error\ while\ verifying/uploading=Fel vid verifiering/uppladdning #: Preferences.java:93 Estonian=Estniska -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Estniska (Estland) - #: Editor.java:516 Examples=Exempel @@ -840,8 +866,8 @@ INCOMPATIBLE=EJ KOMPATIBLA #: FindReplace.java:96 Ignore\ Case=G\u00f6r inte skillnad p\u00e5 sm\u00e5 och stora bokst\u00e4ver -#: Base.java:1058 -Ignoring\ bad\ library\ name=Ignorerar felaktigt biblioteksnamn +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=Ignorerar skiss med felaktigt namn @@ -885,9 +911,9 @@ Installed=Installerad #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=Installerar bibliotek\: {0} +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -908,6 +934,15 @@ Installing...=Installerar... #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=Italienska @@ -932,9 +967,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=Bibliotek #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=Biblioteket \u00e4r redan installerat\: {0} version {1} +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=Radnummer\: @@ -1247,9 +1282,9 @@ Reference=Referens #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=Ta bort -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=Tar bort bibliotek\: {0} +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1277,6 +1312,9 @@ Replace\ with\:=Ers\u00e4tt med\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=Rum\u00e4nska @@ -1368,9 +1406,13 @@ Serial\ Monitor=Seriell monitor #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Serieporten ''{0}'' saknas. Valde du r\u00e4tt fr\u00e5n Verktyg > Serieport menyn? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -!Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?= +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=Serieportar @@ -1388,6 +1430,9 @@ Settings\ issues=Inst\u00e4llningsproblem #: Editor.java:641 Show\ Sketch\ Folder=Visa skissmappen +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Visa detaljerad information vid\: @@ -1507,6 +1552,10 @@ The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=Klassen Udp har d\u00f6pts om #, java-format !The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=Biblioteket "{0}" kan ej anv\u00e4ndas.\nBiblioteksnamn f\u00e5r bara inneh\u00e5lla vanliga bokst\u00e4ver och nummer.\n(endast ASCII och inga mellanslag och kan ej b\u00f6rja med ett nummer) @@ -1531,8 +1580,8 @@ The\ selected\ sketch\ no\ longer\ exists.\nYou\ may\ need\ to\ restart\ Arduino #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Skissmappen har f\u00f6rsvunnit.\nF\u00f6rs\u00f6ker att spara om p\u00e5 samma plats,\nmen allt f\u00f6rutom koden kommer att f\u00f6rsvinna. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=Skissbokmappen existerar ej l\u00e4ngre. Arduino kommer nu att byta till standardplatsen, och skapa en ny skissbokmapp om n\u00f6dv\u00e4ndigt. Arduino kommer sen att sluta referera till sig sj\u00e4lv i tredje person. @@ -1540,6 +1589,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1874,6 +1926,11 @@ ignoring\ invalid\ font\ size\ {0}=Ignorerar felaktig typsnittsstorlek {0} #: Editor.java:936 Editor.java:943 name\ is\ null=name \u00e4r null +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=serialMenu \u00e4r null @@ -1941,10 +1998,6 @@ version\ {0}=version {0} #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1953,6 +2006,10 @@ version\ {0}=version {0} #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_ta.po b/arduino-core/src/processing/app/i18n/Resources_ta.po index 18c01ce5533..a16ecda0bba 100644 --- a/arduino-core/src/processing/app/i18n/Resources_ta.po +++ b/arduino-core/src/processing/app/i18n/Resources_ta.po @@ -17,6 +17,9 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Alagappan Karthikeyan , 2016 # Shankar C , 2015 # Nadar Solomon Sunder , 2014 @@ -25,7 +28,7 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: Tamil (http://www.transifex.com/mbanzi/arduino-ide-15/language/ta/)\n" "MIME-Version: 1.0\n" @@ -624,6 +627,11 @@ msgstr "{0}வின் பழைய பதிப்பை அகற்ற ம msgid "Could not replace {0}" msgstr "{0}வை மாற்ற முடியவில்லை" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "வரைவை ஆவணப்படுத்த முடியவில்லை" @@ -679,6 +687,10 @@ msgstr "உள்தள்ளலை குறைக்க" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "நீக்கு" @@ -854,6 +866,11 @@ msgstr "Arduino தரவு கோப்புறையை பெறுவ msgid "Error inside Serial.{0}()" msgstr "தொடர்நிலை.{0}()க்குள் பிழை உள்ளது" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -873,6 +890,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "விருப்பங்களை படிப்பதில் பிழை" @@ -907,6 +943,10 @@ msgstr "துவக்கு நிரலை பதிவேற்றும் msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -943,10 +983,6 @@ msgstr "" msgid "Estonian" msgstr "" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "" - #: Editor.java:516 msgid "Examples" msgstr "எடுத்துக்காட்டுகள்" @@ -1150,9 +1186,9 @@ msgstr "" msgid "Ignore Case" msgstr "வேற்றுமையை அலட்சியப்படுத்து" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "தவறான நூலகப்பெயரை அலட்சியப்படுத்துகிறது" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1215,9 +1251,9 @@ msgstr "" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1244,6 +1280,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "இத்தாலியன்" @@ -1276,9 +1323,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1696,9 +1743,9 @@ msgstr "குறிப்பு" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1735,6 +1782,10 @@ msgstr "இதாக மாற்று:" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "ரோமானியம்" @@ -1858,12 +1909,15 @@ msgid "" " Serial Port menu?" msgstr "தொடர்நிலை துறை ''{0}''யை காணவில்லை. நீங்கள் சரியானதை கருவிகள் > தொடர்நிலை துறை பட்டியலில் தேர்வு செய்தீர்களா?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "தொடர்நிலை துறை {0} காணவில்லை.\nவேறு தொடர்நிலை துறை கொண்டு மேலேற்ற முயற்சிக்கவும்?" +msgid "Serial port {0} not found." +msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1886,6 +1940,10 @@ msgstr "அமைப்பு சிக்கல்கள்" msgid "Show Sketch Folder" msgstr "வரைவு உறையை காட்டுக" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "இதன் போது வேர்போசு வெளியீட்டை காண்பிக்கவும்:" @@ -2057,6 +2115,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "\"{0}\" கோப்பு \"{1}\" என்ற பெயர் கொண்ட\nவரைவு உறையில் மட்டுமே இருக்க முடியும்.\nஇந்த உறையை உருவாக்கி, கோப்பை நகற்றி, முன்னேரவா?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2102,10 +2168,11 @@ msgid "" "but anything besides the code will be lost." msgstr "வரைவு உறை மறைந்துவிட்டது.\n அதே இடத்தில சேமிக்க மறுபடியும் முயற்சிக்கிறேன்,\nஆனால், குறியீட்டை தவிர மற்றவைகளை இழந்துவிடுவீர்கள்." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2123,6 +2190,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2615,6 +2686,12 @@ msgstr "தவறான எழுத்துரு அளவை {0} அளச msgid "name is null" msgstr "பெயர் வெற்றாக உள்ளது" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "தொடர் தெரிவுதிரை வெற்றாக உள்ளது" @@ -2702,11 +2779,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2717,6 +2789,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_ta.properties b/arduino-core/src/processing/app/i18n/Resources_ta.properties index 9ab399d9c44..e134bb37d93 100644 --- a/arduino-core/src/processing/app/i18n/Resources_ta.properties +++ b/arduino-core/src/processing/app/i18n/Resources_ta.properties @@ -17,10 +17,13 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Alagappan Karthikeyan , 2016 # Shankar C , 2015 # Nadar Solomon Sunder , 2014 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Tamil (http\://www.transifex.com/mbanzi/arduino-ide-15/language/ta/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: ta\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Tamil (http\://www.transifex.com/mbanzi/arduino-ide-15/language/ta/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: ta\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (Arduino \u0bae\u0bb1\u0bc1\u0ba4\u0bc1\u0bb5\u0b95\u0bcd\u0b95\u0bae\u0bcd \u0ba4\u0bc7\u0bb5\u0bc8\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1) @@ -443,6 +446,10 @@ Could\ not\ remove\ old\ version\ of\ {0}={0}\u0bb5\u0bbf\u0ba9\u0bcd \u0baa\u0b #, java-format Could\ not\ replace\ {0}={0}\u0bb5\u0bc8 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8 +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=\u0bb5\u0bb0\u0bc8\u0bb5\u0bc8 \u0b86\u0bb5\u0ba3\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8 @@ -482,6 +489,9 @@ Decrease\ Indent=\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bb2\u0bc8 \u0b95\u #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=\u0ba8\u0bc0\u0b95\u0bcd\u0b95\u0bc1 @@ -613,6 +623,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Arduino \u0ba4\u0bb0\u0bb5\u0bc1 \u0 #, java-format Error\ inside\ Serial.{0}()=\u0ba4\u0bca\u0b9f\u0bb0\u0bcd\u0ba8\u0bbf\u0bb2\u0bc8.{0}()\u0b95\u0bcd\u0b95\u0bc1\u0bb3\u0bcd \u0baa\u0bbf\u0bb4\u0bc8 \u0b89\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1 +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -627,6 +641,18 @@ Error\ opening\ serial\ port\ ''{0}''.=\u0ba4\u0bca\u0b9f\u0bb0\u0bcd\u0ba8\u0bb #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 Error\ reading\ preferences=\u0bb5\u0bbf\u0bb0\u0bc1\u0baa\u0bcd\u0baa\u0b99\u0bcd\u0b95\u0bb3\u0bc8 \u0baa\u0b9f\u0bbf\u0baa\u0bcd\u0baa\u0ba4\u0bbf\u0bb2\u0bcd \u0baa\u0bbf\u0bb4\u0bc8 @@ -652,6 +678,9 @@ Error\ while\ burning\ bootloader.=\u0ba4\u0bc1\u0bb5\u0b95\u0bcd\u0b95\u0bc1 \u #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -680,9 +709,6 @@ Error\ while\ printing.=\u0b85\u0b9a\u0bcd\u0b9a\u0bbf\u0b9f\u0bc1\u0bae\u0bcd\u #: Preferences.java:93 !Estonian= -#: ../../../processing/app/Preferences.java:146 -!Estonian\ (Estonia)= - #: Editor.java:516 Examples=\u0b8e\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bcd\u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd @@ -833,8 +859,8 @@ Hungarian=\u0bb9\u0b99\u0bcd\u0b95\u0bc7\u0bb0\u0bbf\u0baf\u0ba9\u0bcd #: FindReplace.java:96 Ignore\ Case=\u0bb5\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bc8\u0baf\u0bc8 \u0b85\u0bb2\u0b9f\u0bcd\u0b9a\u0bbf\u0baf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1 -#: Base.java:1058 -Ignoring\ bad\ library\ name=\u0ba4\u0bb5\u0bb1\u0bbe\u0ba9 \u0ba8\u0bc2\u0bb2\u0b95\u0baa\u0bcd\u0baa\u0bc6\u0baf\u0bb0\u0bc8 \u0b85\u0bb2\u0b9f\u0bcd\u0b9a\u0bbf\u0baf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=\u0ba4\u0bb5\u0bb1\u0bbe\u0ba9 \u0baa\u0bc6\u0baf\u0bb0\u0bcd \u0b95\u0bca\u0ba3\u0bcd\u0b9f \u0bb5\u0bb0\u0bc8\u0bb5\u0bc8 \u0b85\u0bb3\u0b9a\u0bcd\u0b9a\u0bbf\u0baf\u0baa\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bbf\u0bb1\u0ba4\u0bc1 @@ -878,9 +904,9 @@ Increase\ Indent=\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bb2\u0bc8 \u0b85\u #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -901,6 +927,15 @@ Increase\ Indent=\u0b89\u0bb3\u0bcd\u0ba4\u0bb3\u0bcd\u0bb3\u0bb2\u0bc8 \u0b85\u #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=\u0b87\u0ba4\u0bcd\u0ba4\u0bbe\u0bb2\u0bbf\u0baf\u0ba9\u0bcd @@ -925,9 +960,9 @@ Latvian=\u0bb2\u0bc7\u0b9f\u0bcd\u0bb5\u0bbf\u0baf\u0ba9\u0bcd #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -1240,9 +1275,9 @@ Reference=\u0b95\u0bc1\u0bb1\u0bbf\u0baa\u0bcd\u0baa\u0bc1 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1270,6 +1305,9 @@ Replace\ with\:=\u0b87\u0ba4\u0bbe\u0b95 \u0bae\u0bbe\u0bb1\u0bcd\u0bb1\u0bc1\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=\u0bb0\u0bc7\u0bbe\u0bae\u0bbe\u0ba9\u0bbf\u0baf\u0bae\u0bcd @@ -1361,9 +1399,13 @@ Serial\ Monitor=\u0ba4\u0bca\u0b9f\u0bb0\u0bcd\u0ba8\u0bbf\u0bb2\u0bc8 \u0b95\u0 #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=\u0ba4\u0bca\u0b9f\u0bb0\u0bcd\u0ba8\u0bbf\u0bb2\u0bc8 \u0ba4\u0bc1\u0bb1\u0bc8 ''{0}''\u0baf\u0bc8 \u0b95\u0bbe\u0ba3\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8. \u0ba8\u0bc0\u0b99\u0bcd\u0b95\u0bb3\u0bcd \u0b9a\u0bb0\u0bbf\u0baf\u0bbe\u0ba9\u0ba4\u0bc8 \u0b95\u0bb0\u0bc1\u0bb5\u0bbf\u0b95\u0bb3\u0bcd > \u0ba4\u0bca\u0b9f\u0bb0\u0bcd\u0ba8\u0bbf\u0bb2\u0bc8 \u0ba4\u0bc1\u0bb1\u0bc8 \u0baa\u0b9f\u0bcd\u0b9f\u0bbf\u0baf\u0bb2\u0bbf\u0bb2\u0bcd \u0ba4\u0bc7\u0bb0\u0bcd\u0bb5\u0bc1 \u0b9a\u0bc6\u0baf\u0bcd\u0ba4\u0bc0\u0bb0\u0bcd\u0b95\u0bb3\u0bbe? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=\u0ba4\u0bca\u0b9f\u0bb0\u0bcd\u0ba8\u0bbf\u0bb2\u0bc8 \u0ba4\u0bc1\u0bb1\u0bc8 {0} \u0b95\u0bbe\u0ba3\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8.\n\u0bb5\u0bc7\u0bb1\u0bc1 \u0ba4\u0bca\u0b9f\u0bb0\u0bcd\u0ba8\u0bbf\u0bb2\u0bc8 \u0ba4\u0bc1\u0bb1\u0bc8 \u0b95\u0bca\u0ba3\u0bcd\u0b9f\u0bc1 \u0bae\u0bc7\u0bb2\u0bc7\u0bb1\u0bcd\u0bb1 \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd? +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1381,6 +1423,9 @@ Settings\ issues=\u0b85\u0bae\u0bc8\u0baa\u0bcd\u0baa\u0bc1 \u0b9a\u0bbf\u0b95\u #: Editor.java:641 Show\ Sketch\ Folder=\u0bb5\u0bb0\u0bc8\u0bb5\u0bc1 \u0b89\u0bb1\u0bc8\u0baf\u0bc8 \u0b95\u0bbe\u0b9f\u0bcd\u0b9f\u0bc1\u0b95 +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =\u0b87\u0ba4\u0ba9\u0bcd \u0baa\u0bcb\u0ba4\u0bc1 \u0bb5\u0bc7\u0bb0\u0bcd\u0baa\u0bcb\u0b9a\u0bc1 \u0bb5\u0bc6\u0bb3\u0bbf\u0baf\u0bc0\u0b9f\u0bcd\u0b9f\u0bc8 \u0b95\u0bbe\u0ba3\u0bcd\u0baa\u0bbf\u0b95\u0bcd\u0b95\u0bb5\u0bc1\u0bae\u0bcd\: @@ -1500,6 +1545,10 @@ The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=Udp class, EthernetUdp \u0b8e\ #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?="{0}" \u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc1 "{1}" \u0b8e\u0ba9\u0bcd\u0bb1 \u0baa\u0bc6\u0baf\u0bb0\u0bcd \u0b95\u0bca\u0ba3\u0bcd\u0b9f\n\u0bb5\u0bb0\u0bc8\u0bb5\u0bc1 \u0b89\u0bb1\u0bc8\u0baf\u0bbf\u0bb2\u0bcd \u0bae\u0b9f\u0bcd\u0b9f\u0bc1\u0bae\u0bc7 \u0b87\u0bb0\u0bc1\u0b95\u0bcd\u0b95 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bc1\u0bae\u0bcd.\n\u0b87\u0ba8\u0bcd\u0ba4 \u0b89\u0bb1\u0bc8\u0baf\u0bc8 \u0b89\u0bb0\u0bc1\u0bb5\u0bbe\u0b95\u0bcd\u0b95\u0bbf, \u0b95\u0bcb\u0baa\u0bcd\u0baa\u0bc8 \u0ba8\u0b95\u0bb1\u0bcd\u0bb1\u0bbf, \u0bae\u0bc1\u0ba9\u0bcd\u0ba9\u0bc7\u0bb0\u0bb5\u0bbe? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)="{0}" \u0ba8\u0bc2\u0bb2\u0b95\u0ba4\u0bcd\u0ba4\u0bc8 \u0baa\u0baf\u0ba9\u0bcd\u0baa\u0b9f\u0bc1\u0ba4\u0bcd\u0ba4 \u0bae\u0bc1\u0b9f\u0bbf\u0baf\u0bb5\u0bbf\u0bb2\u0bcd\u0bb2\u0bc8.\n\u0ba8\u0bc2\u0bb2\u0b95 \u0baa\u0bc6\u0baf\u0bb0\u0bcd\u0b95\u0bb3\u0bbf\u0bb2\u0bcd \u0b85\u0b9f\u0bbf\u0baa\u0bcd\u0baa\u0b9f\u0bc8 \u0b8e\u0bb4\u0bc1\u0ba4\u0bcd\u0ba4\u0bc1\u0b95\u0bcd\u0b95\u0bb3\u0bcd \u0bae\u0bb1\u0bcd\u0bb1\u0bc1\u0bae\u0bcd \u0b8e\u0ba3\u0bcd\u0b95\u0bb3\u0bcd \u0bae\u0b9f\u0bcd\u0b9f\u0bc1\u0bae\u0bc7 \u0b87\u0bb0\u0bc1\u0b95\u0bcd\u0b95 \u0bb5\u0bc7\u0ba3\u0bcd\u0b9f\u0bc1\u0bae\u0bcd.\n(\u0b87\u0b9f\u0bc8\u0bb5\u0bc6\u0bb3\u0bbf \u0b87\u0bb2\u0bcd\u0bb2\u0bbe\u0bae\u0bb2\u0bcd ASCII \u0bae\u0b9f\u0bcd\u0b9f\u0bc1\u0bae\u0bcd, \u0b87\u0ba4\u0bc1 \u0b8e\u0ba3\u0bcd\u0ba9\u0bbf\u0bb2\u0bcd \u0b86\u0bb0\u0bae\u0bcd\u0baa\u0bae\u0bbe\u0b95\u0b95\u0bcd \u0b95\u0bc2\u0b9f\u0bbe\u0ba4\u0bc1) @@ -1524,8 +1573,8 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=\u0bb5\u0bb0\u0bc8\u0bb5\u0bc1 \u0b89\u0bb1\u0bc8 \u0bae\u0bb1\u0bc8\u0ba8\u0bcd\u0ba4\u0bc1\u0bb5\u0bbf\u0b9f\u0bcd\u0b9f\u0ba4\u0bc1.\n \u0b85\u0ba4\u0bc7 \u0b87\u0b9f\u0ba4\u0bcd\u0ba4\u0bbf\u0bb2 \u0b9a\u0bc7\u0bae\u0bbf\u0b95\u0bcd\u0b95 \u0bae\u0bb1\u0bc1\u0baa\u0b9f\u0bbf\u0baf\u0bc1\u0bae\u0bcd \u0bae\u0bc1\u0baf\u0bb1\u0bcd\u0b9a\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb1\u0bc7\u0ba9\u0bcd,\n\u0b86\u0ba9\u0bbe\u0bb2\u0bcd, \u0b95\u0bc1\u0bb1\u0bbf\u0baf\u0bc0\u0b9f\u0bcd\u0b9f\u0bc8 \u0ba4\u0bb5\u0bbf\u0bb0 \u0bae\u0bb1\u0bcd\u0bb1\u0bb5\u0bc8\u0b95\u0bb3\u0bc8 \u0b87\u0bb4\u0ba8\u0bcd\u0ba4\u0bc1\u0bb5\u0bbf\u0b9f\u0bc1\u0bb5\u0bc0\u0bb0\u0bcd\u0b95\u0bb3\u0bcd. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=\u0bb5\u0bb0\u0bc8\u0bb5\u0bc1\u0bb1\u0bc8 \u0b87\u0bb2\u0bcd\u0bb2\u0bc8.\nArduino \u0b87\u0baf\u0bb2\u0bcd\u0baa\u0bbe\u0ba9 \u0bb5\u0bb0\u0bc8\u0bb5\u0bc1\u0baa\u0bcd\u0baa\u0bc1\u0ba4\u0bcd\u0ba4\u0b95 \u0b87\u0b9f\u0ba4\u0bcd\u0ba4\u0bbf\u0bb1\u0bcd\u0b95\u0bc1 \u0bae\u0bbe\u0bb1\u0bbf\u0baf\u0baa\u0bbf\u0ba9\u0bcd,\n\u0ba4\u0bc7\u0bb5\u0bc8\u0baa\u0bcd\u0baa\u0b9f\u0bcd\u0b9f\u0bbe\u0bb2\u0bcd \u0baa\u0bc1\u0ba4\u0bbf\u0baf \u0bb5\u0bb0\u0bc8\u0bb5\u0bc1\u0baa\u0bcd\u0baa\u0bc1\u0ba4\u0bcd\u0ba4\u0b95 \u0b89\u0bb1\u0bc8\u0baf\u0bc8 \u0b89\u0bb0\u0bc1\u0bb5\u0bbe\u0b95\u0bcd\u0b95\u0bc1\u0bae\u0bcd. \nArduino \u0ba4\u0ba9\u0bcd\u0ba9\u0bc8\u0baa\u0bb1\u0bcd\u0bb1\u0bbf\u0baf\u0bc7 \u0bae\u0bc2\u0ba9\u0bcd\u0bb1\u0bbe\u0bb5\u0ba4\u0bc1 \u0bae\u0ba9\u0bbf\u0ba4\u0ba9\u0bcd \u0baa\u0bcb\u0bb2 \n\u0baa\u0bc7\u0b9a\u0bc1\u0bb5\u0ba4\u0bc8 \u0ba8\u0bbf\u0bb1\u0bc1\u0ba4\u0bcd\u0ba4\u0bbf\u0b95\u0bcd\u0b95\u0bca\u0bb3\u0bcd\u0bb3\u0bc1\u0bae\u0bcd. @@ -1533,6 +1582,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1867,6 +1919,11 @@ ignoring\ invalid\ font\ size\ {0}=\u0ba4\u0bb5\u0bb1\u0bbe\u0ba9 \u0b8e\u0bb4\u #: Editor.java:936 Editor.java:943 name\ is\ null=\u0baa\u0bc6\u0baf\u0bb0\u0bcd \u0bb5\u0bc6\u0bb1\u0bcd\u0bb1\u0bbe\u0b95 \u0b89\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=\u0ba4\u0bca\u0b9f\u0bb0\u0bcd \u0ba4\u0bc6\u0bb0\u0bbf\u0bb5\u0bc1\u0ba4\u0bbf\u0bb0\u0bc8 \u0bb5\u0bc6\u0bb1\u0bcd\u0bb1\u0bbe\u0b95 \u0b89\u0bb3\u0bcd\u0bb3\u0ba4\u0bc1 @@ -1934,10 +1991,6 @@ upload=\u0baa\u0ba4\u0bbf\u0bb5\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1 #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1946,6 +1999,10 @@ upload=\u0baa\u0ba4\u0bbf\u0bb5\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1 #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_te.po b/arduino-core/src/processing/app/i18n/Resources_te.po index b3169e1c4e4..d97a13ba0a7 100644 --- a/arduino-core/src/processing/app/i18n/Resources_te.po +++ b/arduino-core/src/processing/app/i18n/Resources_te.po @@ -17,12 +17,15 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: Telugu (http://www.transifex.com/mbanzi/arduino-ide-15/language/te/)\n" "MIME-Version: 1.0\n" @@ -621,6 +624,11 @@ msgstr "" msgid "Could not replace {0}" msgstr "" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "" @@ -676,6 +684,10 @@ msgstr "" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "" @@ -851,6 +863,11 @@ msgstr "" msgid "Error inside Serial.{0}()" msgstr "" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -870,6 +887,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "" @@ -904,6 +940,10 @@ msgstr "" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -940,10 +980,6 @@ msgstr "" msgid "Estonian" msgstr "" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "" - #: Editor.java:516 msgid "Examples" msgstr "" @@ -1147,8 +1183,8 @@ msgstr "" msgid "Ignore Case" msgstr "" -#: Base.java:1058 -msgid "Ignoring bad library name" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" msgstr "" #: Base.java:1436 @@ -1212,9 +1248,9 @@ msgstr "" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1241,6 +1277,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "" @@ -1273,9 +1320,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1693,9 +1740,9 @@ msgstr "" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1732,6 +1779,10 @@ msgstr "" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "" @@ -1855,11 +1906,14 @@ msgid "" " Serial Port menu?" msgstr "" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" +msgid "Serial port {0} not found." msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 @@ -1883,6 +1937,10 @@ msgstr "" msgid "Show Sketch Folder" msgstr "" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "" @@ -2054,6 +2112,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2099,10 +2165,11 @@ msgid "" "but anything besides the code will be lost." msgstr "" -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2120,6 +2187,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2612,6 +2683,12 @@ msgstr "" msgid "name is null" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "" @@ -2699,11 +2776,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2714,6 +2786,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_te.properties b/arduino-core/src/processing/app/i18n/Resources_te.properties index d27a31c8e4c..9bc078434de 100644 --- a/arduino-core/src/processing/app/i18n/Resources_te.properties +++ b/arduino-core/src/processing/app/i18n/Resources_te.properties @@ -17,7 +17,10 @@ # Translators: # Translators: # Translators: -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Telugu (http\://www.transifex.com/mbanzi/arduino-ide-15/language/te/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: te\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +# Translators: +# Translators: +# Translators: +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Telugu (http\://www.transifex.com/mbanzi/arduino-ide-15/language/te/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: te\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 !\ \ (requires\ restart\ of\ Arduino)= @@ -440,6 +443,10 @@ #, java-format !Could\ not\ replace\ {0}= +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 !Couldn't\ archive\ sketch= @@ -479,6 +486,9 @@ #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 !Delete= @@ -610,6 +620,10 @@ #, java-format !Error\ inside\ Serial.{0}()= +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -624,6 +638,18 @@ #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 !Error\ reading\ preferences= @@ -649,6 +675,9 @@ #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -677,9 +706,6 @@ #: Preferences.java:93 !Estonian= -#: ../../../processing/app/Preferences.java:146 -!Estonian\ (Estonia)= - #: Editor.java:516 !Examples= @@ -830,8 +856,8 @@ #: FindReplace.java:96 !Ignore\ Case= -#: Base.java:1058 -!Ignoring\ bad\ library\ name= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 !Ignoring\ sketch\ with\ bad\ name= @@ -875,9 +901,9 @@ #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -898,6 +924,15 @@ #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 !Italian= @@ -922,9 +957,9 @@ #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -1237,9 +1272,9 @@ #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1267,6 +1302,9 @@ #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 !Romanian= @@ -1358,9 +1396,13 @@ #, java-format !Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?= -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -!Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?= +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1378,6 +1420,9 @@ #: Editor.java:641 !Show\ Sketch\ Folder= +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 !Show\ verbose\ output\ during\:\ = @@ -1497,6 +1542,10 @@ #, java-format !The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format !The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)= @@ -1521,8 +1570,8 @@ #: Sketch.java:1755 !The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.= -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 !The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.= @@ -1530,6 +1579,9 @@ #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1864,6 +1916,11 @@ #: Editor.java:936 Editor.java:943 !name\ is\ null= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 !serialMenu\ is\ null= @@ -1931,10 +1988,6 @@ #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1943,6 +1996,10 @@ #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_th.po b/arduino-core/src/processing/app/i18n/Resources_th.po index 6c192550f2e..c1fffa4eafb 100644 --- a/arduino-core/src/processing/app/i18n/Resources_th.po +++ b/arduino-core/src/processing/app/i18n/Resources_th.po @@ -17,14 +17,18 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: +# Sippawit Thammawiset , 2018-2020 # Tony Wong , 2018 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2018-03-28 15:53+0000\n" -"Last-Translator: Tony Wong \n" +"PO-Revision-Date: 2020-02-28 17:52+0000\n" +"Last-Translator: Sippawit Thammawiset \n" "Language-Team: Thai (http://www.transifex.com/mbanzi/arduino-ide-15/language/th/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -34,7 +38,7 @@ msgstr "" #: Preferences.java:358 Preferences.java:374 msgid " (requires restart of Arduino)" -msgstr "" +msgstr "(จำเป็นต้องเริ่ม Arduino ใหม่)" #: ../../../processing/app/debug/Compiler.java:529 #, java-format @@ -65,7 +69,7 @@ msgstr "" #: Preferences.java:478 msgid "(edit only when Arduino is not running)" -msgstr "เฉพาะแก้ไขเท่านั้น เมื่ออดุยโน่ไม่ทำงาน" +msgstr "(ใช้ในกรณีที่ Arduino ทำงานผิดปกติเท่านั้น)" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 msgid "(legacy)" @@ -83,7 +87,7 @@ msgstr "" #: Sketch.java:746 msgid ".pde -> .ino" -msgstr "" +msgstr ".pde -> .ino" #: Editor.java:2053 msgid "" @@ -96,7 +100,7 @@ msgstr "" #: Editor.java:2169 #, java-format msgid "A folder named \"{0}\" already exists. Can't open sketch." -msgstr "" +msgstr "มีแฟ้ม \"{0}\" อยู่แล้ว ไม่สามารถเปิดงานได้" #: Base.java:2690 #, java-format @@ -107,12 +111,12 @@ msgstr "" msgid "" "A new version of Arduino is available,\n" "would you like to visit the Arduino download page?" -msgstr "" +msgstr "Arduino เวอร์ชันใหม่พร้อมใช้งานแล้ว\nคุณต้องการไปที่หน้าดาวน์โหลด Arduino ตอนนี้เลยหรือไม่?" #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format msgid "A newer {0} package is available" -msgstr "" +msgstr "มีแพ็กเกจใหม่ {0} ที่พร้อมใช้งาน" #: ../../../../../app/src/processing/app/Base.java:2307 msgid "A subfolder of your sketchbook is not a valid library" @@ -120,7 +124,7 @@ msgstr "" #: Editor.java:1116 msgid "About Arduino" -msgstr "เกี่ยวกับ อาดุยโน่" +msgstr "เกี่ยวกับ Arduino" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 msgid "Acoli" @@ -128,23 +132,23 @@ msgstr "" #: ../../../../../app/src/processing/app/Base.java:1177 msgid "Add .ZIP Library..." -msgstr "เพิ่มไฟล์ไลบารี" +msgstr "เพิ่มไลบรารี .ZIP..." #: Editor.java:650 msgid "Add File..." -msgstr "เพิ่มไฟล์" +msgstr "เพิ่มไฟล์..." #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:73 msgid "Additional Boards Manager URLs" -msgstr "" +msgstr "ตัวจัดการเพิ่ม URLs บอร์ด" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:268 msgid "Additional Boards Manager URLs: " -msgstr "" +msgstr "เพิ่ม URLs บอร์ด:" #: ../../../../../app/src/processing/app/Preferences.java:161 msgid "Afrikaans" -msgstr "แอฟริกาใต้" +msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 msgid "Aggressively cache compiled core" @@ -173,17 +177,17 @@ msgstr "" #: ../../../processing/app/BaseNoGui.java:528 msgid "An error occurred while uploading the sketch" -msgstr "" +msgstr "เกิดข้อผิดผลาดขณะกำลังอัปโหลด" #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 msgid "An error occurred while verifying the sketch" -msgstr "" +msgstr "เกิดข้อผิดผลาดขณะกำลังตรวจสอบ" #: ../../../processing/app/BaseNoGui.java:521 msgid "An error occurred while verifying/uploading the sketch" -msgstr "" +msgstr "เกิดข้อผิดผลาดขณะกำลังอัปเดต/ตรวจสอบ" #: Base.java:228 msgid "" @@ -193,7 +197,7 @@ msgstr "" #: Preferences.java:85 msgid "Arabic" -msgstr "ตัวอาราบิค (ภาษาอาหรับ)" +msgstr "" #: Preferences.java:86 msgid "Aragonese" @@ -201,15 +205,15 @@ msgstr "" #: tools/Archiver.java:48 msgid "Archive Sketch" -msgstr "" +msgstr "บีบอัดงาน" #: tools/Archiver.java:109 msgid "Archive sketch as:" -msgstr "" +msgstr "บีบอัดงานเป็น:" #: tools/Archiver.java:139 msgid "Archive sketch canceled." -msgstr "" +msgstr "ยกเลิกบีบอีดงาน" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format @@ -224,15 +228,15 @@ msgstr "" #: ../../../../../arduino-core/src/processing/app/I18n.java:24 msgid "Arduino" -msgstr "อดุยโน่" +msgstr "Arduino" #: ../../../processing/app/I18n.java:83 msgid "Arduino ARM (32-bits) Boards" -msgstr "บอร์ดอดุยโน่ เอ อาร์ เอ็ม (32บิต)" +msgstr "บอร์ด Arduino ARM (32 บิต)" #: ../../../processing/app/I18n.java:82 msgid "Arduino AVR Boards" -msgstr "บอร์ดอดุยโน่ เอ วี อาร์" +msgstr "บอร์ด Arduino ARM" #: Editor.java:2137 msgid "" @@ -254,16 +258,16 @@ msgstr "" #: ../../../processing/app/EditorStatus.java:471 msgid "Arduino: " -msgstr "" +msgstr "Arduino:" #: Sketch.java:588 #, java-format msgid "Are you sure you want to delete \"{0}\"?" -msgstr "" +msgstr "ต้องการที่จะลบ \"{0}\" หรือไม่?" #: Sketch.java:587 msgid "Are you sure you want to delete this sketch?" -msgstr "" +msgstr "ต้องการที่จะลบงานนี้หรือไม่?" #: ../../../processing/app/Base.java:356 msgid "Argument required for --board" @@ -293,7 +297,7 @@ msgstr "" #: ../../../processing/app/Preferences.java:138 msgid "Asturian" -msgstr "อัสตูเรียส" +msgstr "" #: ../../../processing/app/debug/Compiler.java:145 msgid "Authorization required" @@ -301,11 +305,11 @@ msgstr "" #: tools/AutoFormat.java:91 msgid "Auto Format" -msgstr "" +msgstr "รูปแบบอัตโนมัติ" #: tools/AutoFormat.java:944 msgid "Auto Format finished." -msgstr "" +msgstr "รูปแบบอัตโนมัติเสร็จสิ้น" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:457 msgid "Auto-detect proxy settings" @@ -313,7 +317,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:264 msgid "Automatic" -msgstr "" +msgstr "อัตโนมัติ" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:474 msgid "Automatic proxy configuration URL:" @@ -321,16 +325,16 @@ msgstr "" #: SerialMonitor.java:110 msgid "Autoscroll" -msgstr "" +msgstr "เลื่อนอัตโนมัติ" #: Editor.java:2619 #, java-format msgid "Bad error line: {0}" -msgstr "" +msgstr "เกิดข้อผิดผลาดในบรรทัดที่: {0}" #: Editor.java:2136 msgid "Bad file selected" -msgstr "" +msgstr "การเลือกไฟล์ที่ไม่ถูกต้อง" #: ../../../processing/app/Preferences.java:149 msgid "Basque" @@ -343,17 +347,17 @@ msgstr "" #: ../../../processing/app/Base.java:1433 #: ../../../processing/app/Editor.java:707 msgid "Board" -msgstr "" +msgstr "บอร์ด" #: ../../../../../app//src/processing/app/Editor.java:2824 msgid "Board Info" -msgstr "" +msgstr "ข้อมูลบอร์ด" #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 #, java-format msgid "Board at {0} is not available" -msgstr "" +msgstr "บอร์ดที่ {0} ไม่พร้อมใช้งาน" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:62 #, java-format @@ -369,15 +373,15 @@ msgstr "" #: ../../../processing/app/EditorStatus.java:472 msgid "Board: " -msgstr "" +msgstr "บอร์ด:" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 msgid "Boards Manager" -msgstr "" +msgstr "ตัวจัดการบอร์ด" #: ../../../../../app/src/processing/app/Base.java:1320 msgid "Boards Manager..." -msgstr "" +msgstr "จัดการบอร์ด..." #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:328 msgid "Boards included in this package:" @@ -398,7 +402,7 @@ msgstr "" #: Preferences.java:81 msgid "Browse" -msgstr "" +msgstr "ค้นดู" #: ../../../processing/app/Sketch.java:1530 msgid "Build options changed, rebuilding all" @@ -406,7 +410,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Base.java:1210 msgid "Built-in Examples" -msgstr "" +msgstr "ตัวอย่างที่ให้มา" #: ../../../processing/app/Preferences.java:80 msgid "Bulgarian" @@ -442,7 +446,7 @@ msgstr "" #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 msgid "Can't find the sketch in the specified path" -msgstr "" +msgstr "ไม่พบงานในที่อยู่นี้" #: ../../../processing/app/Preferences.java:92 msgid "Canadian French" @@ -451,7 +455,7 @@ msgstr "" #: Preferences.java:79 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2064 Editor.java:2145 Editor.java:2465 msgid "Cancel" -msgstr "" +msgstr "ยกเลิก" #: ../../../processing/app/Base.java:465 msgid "Cannot specify any sketch files" @@ -467,7 +471,7 @@ msgstr "" #: Preferences.java:419 msgid "Check for updates on startup" -msgstr "" +msgstr "ตรวจสอบการอัปเดทเมื่อเริ่ม" #: ../../../processing/app/Preferences.java:142 msgid "Chinese (China)" @@ -483,51 +487,51 @@ msgstr "" #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 msgid "Clear output" -msgstr "" +msgstr "ล้างเอาต์พุต" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 msgid "Click for a list of unofficial boards support URLs" -msgstr "" +msgstr "คลิกที่นี่เพื่อดู URLs บอร์ดที่ไม่เป็นทางการ" #: Editor.java:521 Editor.java:2024 msgid "Close" -msgstr "" +msgstr "ปิด" #: Editor.java:1208 Editor.java:2749 msgid "Comment/Uncomment" -msgstr "" +msgstr "คอมเมนท์/ยกเลิกคอมเมนท์" #: ../../../../../arduino-core/src/processing/app/I18n.java:30 msgid "Communication" -msgstr "" +msgstr "การสื่อสาร" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 msgid "Compiler warnings: " -msgstr "" +msgstr "การแจ้งเตือนคอมไพเลอร์:" #: Sketch.java:1608 Editor.java:1890 msgid "Compiling sketch..." -msgstr "" +msgstr "กำลังคอมไพล์..." #: ../../../../../arduino-core/src/processing/app/I18n.java:27 msgid "Contributed" -msgstr "" +msgstr "สนับสนุน" #: Editor.java:1157 Editor.java:2707 msgid "Copy" -msgstr "" +msgstr "คัดลอก" #: Editor.java:1177 Editor.java:2723 msgid "Copy as HTML" -msgstr "" +msgstr "คัดลอกเป็น HTML" #: ../../../processing/app/EditorStatus.java:455 msgid "Copy error messages" -msgstr "" +msgstr "คัดลอกข้อผิดผลาด" #: Editor.java:1165 Editor.java:2715 msgid "Copy for Forum" -msgstr "" +msgstr "คัดลอกสำหรับฟอรัม" #: Sketch.java:1089 #, java-format @@ -622,6 +626,11 @@ msgstr "" msgid "Could not replace {0}" msgstr "" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "" @@ -647,7 +656,7 @@ msgstr "" #: Editor.java:1149 Editor.java:2699 msgid "Cut" -msgstr "" +msgstr "ตัด" #: ../../../../../app/src/processing/app/Preferences.java:119 msgid "Czech (Czech Republic)" @@ -659,31 +668,35 @@ msgstr "" #: ../../../../../arduino-core/src/processing/app/I18n.java:36 msgid "Data Processing" -msgstr "" +msgstr "การประมวลผลข้อมูล" #: ../../../../../arduino-core/src/processing/app/I18n.java:35 msgid "Data Storage" -msgstr "" +msgstr "การจัดเก็บข้อมูล" #: ../../../../../app/src/processing/app/Editor.java:1386 msgid "Decrease Font Size" -msgstr "" +msgstr "ลดขนาดตัวหนังสือ" #: Editor.java:1224 Editor.java:2765 msgid "Decrease Indent" -msgstr "" +msgstr "ลดย่อหน้า" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 msgid "Default" -msgstr "" +msgstr "พื้นฐาน" + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "ธีมพื้นฐาน" #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" -msgstr "" +msgstr "ลบ" #: ../../../../../arduino-core/src/processing/app/I18n.java:33 msgid "Device Control" -msgstr "" +msgstr "การควบคุมอุปกรณ์" #: debug/Uploader.java:199 msgid "" @@ -697,11 +710,11 @@ msgstr "" #: ../../../../../arduino-core/src/processing/app/I18n.java:29 msgid "Display" -msgstr "" +msgstr "การแสดงผล" #: ../../../processing/app/Preferences.java:438 msgid "Display line numbers" -msgstr "" +msgstr "แสดงเลขบรรทัด" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:195 #, java-format @@ -712,11 +725,11 @@ msgstr "" #: Editor.java:2064 msgid "Don't Save" -msgstr "" +msgstr "ไม่ต้องบันทึก" #: Editor.java:2275 Editor.java:2311 msgid "Done Saving." -msgstr "" +msgstr "บันทึกเสร็จสิ้น" #: Editor.java:2510 msgid "Done burning bootloader." @@ -725,11 +738,11 @@ msgstr "" #: ../../../processing/app/BaseNoGui.java:507 #: ../../../processing/app/BaseNoGui.java:552 msgid "Done compiling" -msgstr "" +msgstr "คอมไพล์เสร็จสิ้น" #: Editor.java:1911 Editor.java:1928 msgid "Done compiling." -msgstr "" +msgstr "คอมไพล์เสร็จสิ้น" #: Editor.java:2564 msgid "Done printing." @@ -737,11 +750,11 @@ msgstr "" #: ../../../processing/app/BaseNoGui.java:514 msgid "Done uploading" -msgstr "" +msgstr "อัปโหลดเสร็จสิ้น" #: Editor.java:2395 Editor.java:2431 msgid "Done uploading." -msgstr "" +msgstr "อัปโหลดเสร็จสิ้น" #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:105 #, java-format @@ -780,23 +793,23 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:1309 msgid "Edison Help" -msgstr "" +msgstr "การช่วยเหลือ Edison" #: Editor.java:1130 msgid "Edit" -msgstr "" +msgstr "แก้ไข" #: Preferences.java:370 msgid "Editor font size: " -msgstr "" +msgstr "ขนาดตัวหนังสือ:" #: Preferences.java:353 msgid "Editor language: " -msgstr "" +msgstr "ภาษา:" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:322 msgid "Enable Code Folding" -msgstr "" +msgstr "ใช้งานโค้ด Folding" #: Preferences.java:92 msgid "English" @@ -809,15 +822,15 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:269 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:271 msgid "Enter a comma separated list of urls" -msgstr "" +msgstr "ใส่เครื่องหมายคอมมาเพื่อแยกรายการ urls" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:96 msgid "Enter additional URLs, one for each row" -msgstr "" +msgstr "กรอก URLs, บรรทัดละ 1 URL" #: Editor.java:1062 msgid "Environment" -msgstr "" +msgstr "สภาพแวดล้อม" #: Base.java:2147 Preferences.java:256 Sketch.java:475 Sketch.java:481 #: Sketch.java:496 Sketch.java:503 Sketch.java:526 Sketch.java:543 @@ -852,6 +865,11 @@ msgstr "" msgid "Error inside Serial.{0}()" msgstr "" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -871,6 +889,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "" @@ -905,6 +942,10 @@ msgstr "" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -941,13 +982,9 @@ msgstr "" msgid "Estonian" msgstr "" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "" - #: Editor.java:516 msgid "Examples" -msgstr "" +msgstr "ตัวอย่าง" #: ../../../../../app/src/processing/app/Base.java:1185 msgid "Examples for any board" @@ -973,7 +1010,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:750 msgid "Export compiled Binary" -msgstr "" +msgstr "บันทึกคอมไพล์เป็น HEX" #: ../../../processing/app/Base.java:416 #, java-format @@ -991,7 +1028,7 @@ msgstr "" #: Editor.java:491 msgid "File" -msgstr "" +msgstr "ไฟล์" #: ../../../../../arduino-core/src/processing/app/SketchData.java:139 #, java-format @@ -1004,7 +1041,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:95 msgid "Filter your search..." -msgstr "" +msgstr "ค้นหา..." #: FindReplace.java:124 FindReplace.java:127 msgid "Find" @@ -1012,19 +1049,19 @@ msgstr "" #: Editor.java:1249 msgid "Find Next" -msgstr "" +msgstr "ค้นหาถัดไป" #: Editor.java:1259 msgid "Find Previous" -msgstr "" +msgstr "ค้นหาก่อนหน้า" #: Editor.java:1086 Editor.java:2775 msgid "Find in Reference" -msgstr "" +msgstr "ค้นหาในเอกสารอ้างอิง" #: Editor.java:1234 msgid "Find..." -msgstr "" +msgstr "ค้นหา..." #: FindReplace.java:80 msgid "Find:" @@ -1037,7 +1074,7 @@ msgstr "" #: tools/FixEncoding.java:41 tools/FixEncoding.java:58 #: tools/FixEncoding.java:79 msgid "Fix Encoding & Reload" -msgstr "" +msgstr "แก้ไขการเข้ารหัสและเริ่มใหม่" #: ../../../processing/app/BaseNoGui.java:318 msgid "" @@ -1056,7 +1093,7 @@ msgstr "" #: Editor.java:1097 msgid "Frequently Asked Questions" -msgstr "" +msgstr "คำถามที่พบบ่อย" #: Preferences.java:96 msgid "Galician" @@ -1068,7 +1105,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:1288 msgid "Galileo Help" -msgstr "" +msgstr "การช่วยเหลือ Galileo" #: ../../../processing/app/Preferences.java:94 msgid "Georgian" @@ -1080,31 +1117,31 @@ msgstr "" #: ../../../../../app//src/processing/app/Editor.java:817 msgid "Get Board Info" -msgstr "" +msgstr "แสดงข้อมูลบอร์ด" #: Editor.java:1054 msgid "Getting Started" -msgstr "" +msgstr "เริ่มต้น" #: ../../../processing/app/Sketch.java:1646 #, java-format msgid "" "Global variables use {0} bytes ({2}%%) of dynamic memory, leaving {3} bytes " "for local variables. Maximum is {1} bytes." -msgstr "" +msgstr "ตัวแปรทั้งหมดใช้ {0} ไบต์ ({2}%%) จากหน่วยความจำไดนามิก {3} ไบต์สำหรับตัวแปรพื้นที่ สูงสุด {1} ไบต์" #: ../../../processing/app/Sketch.java:1651 #, java-format msgid "Global variables use {0} bytes of dynamic memory." -msgstr "" +msgstr "ตัวแปรทั้งหมดใช้ {0} ไบต์ จากหน่วยความจำไดนามิก" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:66 msgid "Go to line" -msgstr "" +msgstr "ไปบรรทัดที่..." #: ../../../../../app/src/processing/app/Editor.java:1460 msgid "Go to line..." -msgstr "" +msgstr "ไปบรรทัดที่..." #: Preferences.java:98 msgid "Greek" @@ -1116,7 +1153,7 @@ msgstr "" #: Editor.java:1015 msgid "Help" -msgstr "" +msgstr "ช่วยเหลือ" #: Preferences.java:99 msgid "Hindi" @@ -1148,8 +1185,8 @@ msgstr "" msgid "Ignore Case" msgstr "" -#: Base.java:1058 -msgid "Ignoring bad library name" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" msgstr "" #: Base.java:1436 @@ -1169,7 +1206,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:778 msgid "Include Library" -msgstr "" +msgstr "เพิ่มไลบรารี" #: ../../../processing/app/BaseNoGui.java:768 #: ../../../processing/app/BaseNoGui.java:771 @@ -1178,11 +1215,11 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:1378 msgid "Increase Font Size" -msgstr "" +msgstr "เพิ่มขนาดตัวหนังสือ" #: Editor.java:1216 Editor.java:2757 msgid "Increase Indent" -msgstr "" +msgstr "เพิ่มย่อหน้า" #: Preferences.java:101 msgid "Indonesian" @@ -1199,7 +1236,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:91 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:303 msgid "Install" -msgstr "" +msgstr "ติดตั้ง" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:170 msgid "Installation completed!" @@ -1207,15 +1244,15 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java:50 msgid "Installed" -msgstr "" +msgstr "ที่ติดตั้งแล้ว" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1230,7 +1267,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:256 msgid "Interface scale:" -msgstr "" +msgstr "ขนาดอินเตอร์เฟซ:" #: ../../../processing/app/Base.java:1204 #, java-format @@ -1242,6 +1279,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "" @@ -1264,7 +1312,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:93 msgid "Library Manager" -msgstr "" +msgstr "ตัวจัดการไลบรารี" #: ../../../../../app/src/processing/app/Base.java:2349 msgid "Library added to your libraries. Check \"Include library\" menu" @@ -1274,9 +1322,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1302,7 +1350,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Base.java:1168 msgid "Manage Libraries..." -msgstr "" +msgstr "จัดการไลบรารี..." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:466 msgid "Manual proxy configuration" @@ -1327,11 +1375,11 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:186 msgid "More" -msgstr "" +msgstr "มากกว่า" #: Preferences.java:449 msgid "More preferences can be edited directly in the file" -msgstr "" +msgstr "แก้ไขการตั้งค่าอื่น ๆ ได้ในไฟล์นี้" #: Editor.java:2156 msgid "Moving" @@ -1352,7 +1400,7 @@ msgstr "" #: Sketch.java:282 msgid "Name for new file:" -msgstr "" +msgstr "ตั้งชื่อไฟล์ใหม่:" #: ../../../../../app//src/processing/app/Editor.java:2809 msgid "Native serial port, can't obtain info" @@ -1364,7 +1412,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:601 msgid "Network" -msgstr "" +msgstr "เครือข่าย" #: ../../../../../app//src/processing/app/Editor.java:2804 msgid "Network port, can't obtain info" @@ -1380,23 +1428,23 @@ msgstr "" #: EditorToolbar.java:41 Editor.java:493 msgid "New" -msgstr "" +msgstr "ใหม่" #: EditorHeader.java:292 msgid "New Tab" -msgstr "" +msgstr "แท็ปใหม่" #: SerialMonitor.java:112 msgid "Newline" -msgstr "" +msgstr "บรรทัดใหม่" #: EditorHeader.java:340 msgid "Next Tab" -msgstr "" +msgstr "แท็ปถัดไป" #: Preferences.java:78 UpdateCheck.java:108 msgid "No" -msgstr "" +msgstr "ไม่" #: ../../../processing/app/debug/Compiler.java:158 msgid "No authorization data found" @@ -1424,7 +1472,7 @@ msgstr "" #: SerialMonitor.java:112 msgid "No line ending" -msgstr "" +msgstr "บรรทัดไม่รู้จบ" #: ../../../processing/app/BaseNoGui.java:665 msgid "No parameters" @@ -1463,7 +1511,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:184 msgid "None" -msgstr "" +msgstr "ไม่" #: ../../../processing/app/Preferences.java:108 msgid "Norwegian Bokmål" @@ -1478,7 +1526,7 @@ msgstr "" #: Preferences.java:80 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2145 Editor.java:2465 msgid "OK" -msgstr "" +msgstr "ตกลง" #: Sketch.java:992 Editor.java:376 msgid "One file added to the sketch." @@ -1490,11 +1538,11 @@ msgstr "" #: EditorToolbar.java:41 msgid "Open" -msgstr "" +msgstr "เปิด" #: ../../../../../app/src/processing/app/Editor.java:625 msgid "Open Recent" -msgstr "" +msgstr "เปิดเมื่อเร็ว ๆ นี้" #: Editor.java:2688 msgid "Open URL" @@ -1506,19 +1554,19 @@ msgstr "" #: Base.java:903 Editor.java:501 msgid "Open..." -msgstr "" +msgstr "เปิด..." #: ../../../../../arduino-core/src/processing/app/I18n.java:37 msgid "Other" -msgstr "" +msgstr "อื่น ๆ" #: Editor.java:563 msgid "Page Setup" -msgstr "" +msgstr "ตั้งค่าหน้ากระดาษ" #: ../../../../../arduino-core/src/processing/app/I18n.java:25 msgid "Partner" -msgstr "" +msgstr "พาร์ทเนอร์" #: ../../../processing/app/forms/PasswordAuthorizationDialog.java:44 msgid "Password:" @@ -1526,7 +1574,7 @@ msgstr "" #: Editor.java:1189 Editor.java:2731 msgid "Paste" -msgstr "" +msgstr "วาง" #: Preferences.java:109 msgid "Persian" @@ -1576,7 +1624,7 @@ msgstr "" #: ../../../processing/app/Editor.java:718 msgid "Port" -msgstr "" +msgstr "พอร์ต" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:491 msgid "Port number:" @@ -1596,7 +1644,7 @@ msgstr "" #: Preferences.java:295 Editor.java:583 msgid "Preferences" -msgstr "" +msgstr "การตั้งค่า" #: ../../../../../app/src/processing/app/Base.java:297 msgid "Preparing boards..." @@ -1608,11 +1656,11 @@ msgstr "" #: EditorHeader.java:326 msgid "Previous Tab" -msgstr "" +msgstr "แท็ปก่อนหน้า" #: Editor.java:571 msgid "Print" -msgstr "" +msgstr "พิมพ์" #: Editor.java:2571 msgid "Printing canceled." @@ -1663,7 +1711,7 @@ msgstr "" #: Editor.java:704 msgid "Programmer" -msgstr "นักเขียนโปรแกรม" +msgstr "Programmer" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:80 #, java-format @@ -1672,7 +1720,7 @@ msgstr "" #: Base.java:783 Editor.java:593 msgid "Quit" -msgstr "เลิก" +msgstr "ออก" #: ../../../../../app/src/processing/app/Base.java:1233 msgid "RETIRED" @@ -1680,29 +1728,29 @@ msgstr "" #: ../../../../../arduino-core/src/processing/app/I18n.java:26 msgid "Recommended" -msgstr "" +msgstr "แนะนำ" #: Editor.java:1138 Editor.java:1140 Editor.java:1390 msgid "Redo" -msgstr "" +msgstr "ทำใหม่" #: Editor.java:1078 msgid "Reference" -msgstr "" +msgstr "เอกสารอ้างอิง" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 msgid "Remove" -msgstr "ย้าย" +msgstr "ลบ" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 msgid "Removing..." -msgstr "เคลื่อนย้าย" +msgstr "กำลังลบ..." #: EditorHeader.java:300 msgid "Rename" @@ -1731,6 +1779,10 @@ msgstr "" #: ../../../../../arduino-core/src/processing/app/I18n.java:28 msgid "Retired" +msgstr "ปลดออก" + +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" msgstr "" #: Preferences.java:113 @@ -1754,11 +1806,11 @@ msgstr "" #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:529 #: Editor.java:2064 Editor.java:2468 msgid "Save" -msgstr "" +msgstr "บันทึก" #: Editor.java:537 msgid "Save As..." -msgstr "" +msgstr "บันทึกเป็น..." #: Editor.java:2317 msgid "Save Canceled." @@ -1767,7 +1819,7 @@ msgstr "" #: Editor.java:2020 #, java-format msgid "Save changes to \"{0}\"? " -msgstr "" +msgstr "ต้องการบันทึก \"{0}\" หรือไม่? " #: Sketch.java:825 msgid "Save sketch folder as..." @@ -1775,7 +1827,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Preferences.java:425 msgid "Save when verifying or uploading" -msgstr "" +msgstr "บันทีกเมื่อตรวจสอบหรือกำลังอัปโหลด" #: Editor.java:2270 Editor.java:2308 msgid "Saving..." @@ -1791,7 +1843,7 @@ msgstr "" #: Editor.java:1198 Editor.java:2739 msgid "Select All" -msgstr "" +msgstr "เลือกทั้งหมด" #: Base.java:2636 msgid "Select a zip file or a folder containing the library you'd like to add" @@ -1824,19 +1876,19 @@ msgstr "" #: SerialMonitor.java:93 msgid "Send" -msgstr "" +msgstr "ส่ง" #: ../../../../../arduino-core/src/processing/app/I18n.java:32 msgid "Sensors" -msgstr "" +msgstr "เซนเซอร์" #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:669 msgid "Serial Monitor" -msgstr "" +msgstr "ซีเรียลมอนิเตอร์" #: ../../../../../app/src/processing/app/Editor.java:804 msgid "Serial Plotter" -msgstr "" +msgstr "ซีเรียลพล็อตเตอร์" #: ../../../../../app/src/processing/app/Editor.java:2325 #, java-format @@ -1856,11 +1908,14 @@ msgid "" " Serial Port menu?" msgstr "" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" +msgid "Serial port {0} not found." msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 @@ -1874,7 +1929,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:450 msgid "Settings" -msgstr "" +msgstr "การตั้งค่า" #: Base.java:1681 msgid "Settings issues" @@ -1882,19 +1937,23 @@ msgstr "" #: Editor.java:641 msgid "Show Sketch Folder" -msgstr "" +msgstr "แสดงแฟ้มที่อยู่ของงาน" + +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "แสดงเวลา" #: Preferences.java:387 msgid "Show verbose output during: " -msgstr "" +msgstr "แสดงข้อความเอาต์พุตขณะที่:" #: ../../../../../arduino-core/src/processing/app/I18n.java:31 msgid "Signal Input/Output" -msgstr "" +msgstr "สัญญาณอินพุต/เอาต์พุต" #: Editor.java:607 msgid "Sketch" -msgstr "" +msgstr "งาน" #: Sketch.java:1754 msgid "Sketch Disappeared" @@ -1927,11 +1986,11 @@ msgstr "" msgid "" "Sketch uses {0} bytes ({2}%%) of program storage space. Maximum is {1} " "bytes." -msgstr "" +msgstr "ไฟล์งานใช้ {0} ไบต์ ({2}%%) จากพื้นที่ว่างโปรแกรม สูงสุด {1} ไบต์" #: Editor.java:510 msgid "Sketchbook" -msgstr "" +msgstr "แฟ้มงาน" #: Base.java:258 msgid "Sketchbook folder disappeared" @@ -1939,7 +1998,7 @@ msgstr "" #: Preferences.java:315 msgid "Sketchbook location:" -msgstr "" +msgstr "ที่อยู่แฟ้มงาน:" #: ../../../processing/app/BaseNoGui.java:428 msgid "Sketchbook path not defined" @@ -2055,6 +2114,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2100,10 +2167,11 @@ msgid "" "but anything besides the code will be lost." msgstr "" -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2121,6 +2189,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "ธีม:" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2140,7 +2212,7 @@ msgstr "" #: ../../../../../arduino-core/src/processing/app/I18n.java:34 msgid "Timing" -msgstr "" +msgstr "เวลา" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:94 #, java-format @@ -2149,15 +2221,15 @@ msgstr "" #: Editor.java:663 msgid "Tools" -msgstr "" +msgstr "เครื่องมือ" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:97 msgid "Topic" -msgstr "" +msgstr "หัวข้อ" #: Editor.java:1070 msgid "Troubleshooting" -msgstr "" +msgstr "ปัญหา" #: ../../../processing/app/Preferences.java:117 msgid "Turkish" @@ -2166,7 +2238,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:109 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:105 msgid "Type" -msgstr "" +msgstr "ชนิด" #: ../../../processing/app/Editor.java:2507 msgid "Type board password to access its console" @@ -2218,11 +2290,11 @@ msgstr "" #: ../../../../../arduino-core/src/processing/app/I18n.java:38 msgid "Uncategorized" -msgstr "" +msgstr "ไม่มีหมวดหมู่" #: Editor.java:1133 Editor.java:1355 msgid "Undo" -msgstr "" +msgstr "เลิกทำ" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:85 #, java-format @@ -2248,7 +2320,7 @@ msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownUpdatableLibrariesItem.java:27 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownUpdatableCoresItem.java:27 msgid "Updatable" -msgstr "" +msgstr "ให้อัปเดท" #: UpdateCheck.java:111 msgid "Update" @@ -2279,11 +2351,11 @@ msgstr "" #: EditorToolbar.java:41 Editor.java:545 msgid "Upload" -msgstr "" +msgstr "อัปโหลด" #: EditorToolbar.java:46 Editor.java:553 msgid "Upload Using Programmer" -msgstr "" +msgstr "อัปโหลดโดยใช้ Programmer" #: ../../../../../app//src/processing/app/Editor.java:2814 msgid "Upload any sketch to obtain it" @@ -2303,7 +2375,7 @@ msgstr "" #: Sketch.java:1622 msgid "Uploading..." -msgstr "" +msgstr "กำลังอัปโหลด..." #: Editor.java:1269 msgid "Use Selection For Find" @@ -2311,7 +2383,7 @@ msgstr "" #: Preferences.java:409 msgid "Use external editor" -msgstr "" +msgstr "ใช้ตัวแก้ไขภายนอก" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:493 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:499 @@ -2335,15 +2407,15 @@ msgstr "" #: EditorToolbar.java:41 EditorToolbar.java:46 msgid "Verify" -msgstr "" +msgstr "ตรวจสอบ" #: Preferences.java:400 msgid "Verify code after upload" -msgstr "" +msgstr "ตรวจสอบโค้ดหลังจากอัปโหลด" #: ../../../../../app/src/processing/app/Editor.java:725 msgid "Verify/Compile" -msgstr "" +msgstr "ตรวจสอบ/คอมไพล์" #: ../../../../../app/src/processing/app/Base.java:451 msgid "Verifying and uploading..." @@ -2377,7 +2449,7 @@ msgstr "" #: Editor.java:1105 msgid "Visit Arduino.cc" -msgstr "" +msgstr "เยี่ยมชม Arduino.cc" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:90 #, java-format @@ -2462,7 +2534,7 @@ msgstr "" #: Preferences.java:77 UpdateCheck.java:108 msgid "Yes" -msgstr "" +msgstr "ตกลง" #: ../../../../../app/src/processing/app/Base.java:2312 msgid "You can't import a folder that contains your sketchbook" @@ -2586,7 +2658,7 @@ msgstr "" #: Preferences.java:389 msgid "compilation " -msgstr "" +msgstr "คอมไพล์" #: ../../../processing/app/NetworkMonitor.java:111 msgid "connected!" @@ -2613,6 +2685,12 @@ msgstr "" msgid "name is null" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "" @@ -2630,7 +2708,7 @@ msgstr "" #: Preferences.java:391 msgid "upload" -msgstr "" +msgstr "อัปโหลด" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:324 #, java-format @@ -2661,7 +2739,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Base.java:1201 #, java-format msgid "{0} libraries" -msgstr "" +msgstr "ไลบรารี {0}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:76 #, java-format @@ -2671,7 +2749,7 @@ msgstr "" #: ../../../../../app/src/processing/app/EditorLineStatus.java:109 #, java-format msgid "{0} on {1}" -msgstr "" +msgstr "{0} บน {1}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:78 #, java-format @@ -2700,11 +2778,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2715,6 +2788,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_th.properties b/arduino-core/src/processing/app/i18n/Resources_th.properties index 71435f631e9..d944f3095aa 100644 --- a/arduino-core/src/processing/app/i18n/Resources_th.properties +++ b/arduino-core/src/processing/app/i18n/Resources_th.properties @@ -17,11 +17,15 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: +# Sippawit Thammawiset , 2018-2020 # Tony Wong , 2018 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-03-28 15\:53+0000\nLast-Translator\: Tony Wong \nLanguage-Team\: Thai (http\://www.transifex.com/mbanzi/arduino-ide-15/language/th/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: th\nPlural-Forms\: nplurals\=1; plural\=0;\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2020-02-28 17\:52+0000\nLast-Translator\: Sippawit Thammawiset \nLanguage-Team\: Thai (http\://www.transifex.com/mbanzi/arduino-ide-15/language/th/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: th\nPlural-Forms\: nplurals\=1; plural\=0;\n #: Preferences.java:358 Preferences.java:374 -!\ \ (requires\ restart\ of\ Arduino)= +\ \ (requires\ restart\ of\ Arduino)=(\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e23\u0e34\u0e48\u0e21 Arduino \u0e43\u0e2b\u0e21\u0e48) #: ../../../processing/app/debug/Compiler.java:529 #, java-format @@ -41,7 +45,7 @@ !'arch'\ folder\ is\ no\ longer\ supported\!\ See\ http\://goo.gl/gfFJzU\ for\ more\ information= #: Preferences.java:478 -(edit\ only\ when\ Arduino\ is\ not\ running)=\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e41\u0e01\u0e49\u0e44\u0e02\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19 \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e2d\u0e14\u0e38\u0e22\u0e42\u0e19\u0e48\u0e44\u0e21\u0e48\u0e17\u0e33\u0e07\u0e32\u0e19 +(edit\ only\ when\ Arduino\ is\ not\ running)=(\u0e43\u0e0a\u0e49\u0e43\u0e19\u0e01\u0e23\u0e13\u0e35\u0e17\u0e35\u0e48 Arduino \u0e17\u0e33\u0e07\u0e32\u0e19\u0e1c\u0e34\u0e14\u0e1b\u0e01\u0e15\u0e34\u0e40\u0e17\u0e48\u0e32\u0e19\u0e31\u0e49\u0e19) #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 !(legacy)= @@ -53,49 +57,49 @@ !--verbose,\ --verbose-upload\ and\ --verbose-build\ can\ only\ be\ used\ together\ with\ --verify\ or\ --upload= #: Sketch.java:746 -!.pde\ ->\ .ino= +.pde\ ->\ .ino=.pde -> .ino #: Editor.java:2053 !\ \ b\ {\ font\:\ 13pt\ "Lucida\ Grande"\ }p\ {\ font\:\ 11pt\ "Lucida\ Grande";\ margin-top\:\ 8px\ }\ Do\ you\ want\ to\ save\ changes\ to\ this\ sketch
\ before\ closing?

If\ you\ don't\ save,\ your\ changes\ will\ be\ lost.= #: Editor.java:2169 #, java-format -!A\ folder\ named\ "{0}"\ already\ exists.\ Can't\ open\ sketch.= +A\ folder\ named\ "{0}"\ already\ exists.\ Can't\ open\ sketch.=\u0e21\u0e35\u0e41\u0e1f\u0e49\u0e21 "{0}" \u0e2d\u0e22\u0e39\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e40\u0e1b\u0e34\u0e14\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49 #: Base.java:2690 #, java-format !A\ library\ named\ {0}\ already\ exists= #: UpdateCheck.java:103 -!A\ new\ version\ of\ Arduino\ is\ available,\nwould\ you\ like\ to\ visit\ the\ Arduino\ download\ page?= +A\ new\ version\ of\ Arduino\ is\ available,\nwould\ you\ like\ to\ visit\ the\ Arduino\ download\ page?=Arduino \u0e40\u0e27\u0e2d\u0e23\u0e4c\u0e0a\u0e31\u0e19\u0e43\u0e2b\u0e21\u0e48\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e41\u0e25\u0e49\u0e27\n\u0e04\u0e38\u0e13\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e2b\u0e19\u0e49\u0e32\u0e14\u0e32\u0e27\u0e19\u0e4c\u0e42\u0e2b\u0e25\u0e14 Arduino \u0e15\u0e2d\u0e19\u0e19\u0e35\u0e49\u0e40\u0e25\u0e22\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48? #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format -!A\ newer\ {0}\ package\ is\ available= +A\ newer\ {0}\ package\ is\ available=\u0e21\u0e35\u0e41\u0e1e\u0e47\u0e01\u0e40\u0e01\u0e08\u0e43\u0e2b\u0e21\u0e48 {0} \u0e17\u0e35\u0e48\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 #: ../../../../../app/src/processing/app/Base.java:2307 !A\ subfolder\ of\ your\ sketchbook\ is\ not\ a\ valid\ library= #: Editor.java:1116 -About\ Arduino=\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a \u0e2d\u0e32\u0e14\u0e38\u0e22\u0e42\u0e19\u0e48 +About\ Arduino=\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a Arduino #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 !Acoli= #: ../../../../../app/src/processing/app/Base.java:1177 -Add\ .ZIP\ Library...=\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e44\u0e1f\u0e25\u0e4c\u0e44\u0e25\u0e1a\u0e32\u0e23\u0e35 +Add\ .ZIP\ Library...=\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35 .ZIP... #: Editor.java:650 -Add\ File...=\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e44\u0e1f\u0e25\u0e4c +Add\ File...=\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e44\u0e1f\u0e25\u0e4c... #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:73 -!Additional\ Boards\ Manager\ URLs= +Additional\ Boards\ Manager\ URLs=\u0e15\u0e31\u0e27\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e40\u0e1e\u0e34\u0e48\u0e21 URLs \u0e1a\u0e2d\u0e23\u0e4c\u0e14 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:268 -!Additional\ Boards\ Manager\ URLs\:\ = +Additional\ Boards\ Manager\ URLs\:\ =\u0e40\u0e1e\u0e34\u0e48\u0e21 URLs \u0e1a\u0e2d\u0e23\u0e4c\u0e14\: #: ../../../../../app/src/processing/app/Preferences.java:161 -Afrikaans=\u0e41\u0e2d\u0e1f\u0e23\u0e34\u0e01\u0e32\u0e43\u0e15\u0e49 +!Afrikaans= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 !Aggressively\ cache\ compiled\ core= @@ -115,33 +119,33 @@ All=\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 !An\ error\ occurred\ while\ updating\ libraries\ index\!= #: ../../../processing/app/BaseNoGui.java:528 -!An\ error\ occurred\ while\ uploading\ the\ sketch= +An\ error\ occurred\ while\ uploading\ the\ sketch=\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1c\u0e25\u0e32\u0e14\u0e02\u0e13\u0e30\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14 #: ../../../processing/app/BaseNoGui.java:506 #: ../../../processing/app/BaseNoGui.java:551 #: ../../../processing/app/BaseNoGui.java:554 -!An\ error\ occurred\ while\ verifying\ the\ sketch= +An\ error\ occurred\ while\ verifying\ the\ sketch=\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1c\u0e25\u0e32\u0e14\u0e02\u0e13\u0e30\u0e01\u0e33\u0e25\u0e31\u0e07\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a #: ../../../processing/app/BaseNoGui.java:521 -!An\ error\ occurred\ while\ verifying/uploading\ the\ sketch= +An\ error\ occurred\ while\ verifying/uploading\ the\ sketch=\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1c\u0e25\u0e32\u0e14\u0e02\u0e13\u0e30\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15/\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a #: Base.java:228 !An\ unknown\ error\ occurred\ while\ trying\ to\ load\nplatform-specific\ code\ for\ your\ machine.= #: Preferences.java:85 -Arabic=\u0e15\u0e31\u0e27\u0e2d\u0e32\u0e23\u0e32\u0e1a\u0e34\u0e04 (\u0e20\u0e32\u0e29\u0e32\u0e2d\u0e32\u0e2b\u0e23\u0e31\u0e1a) +!Arabic= #: Preferences.java:86 !Aragonese= #: tools/Archiver.java:48 -!Archive\ Sketch= +Archive\ Sketch=\u0e1a\u0e35\u0e1a\u0e2d\u0e31\u0e14\u0e07\u0e32\u0e19 #: tools/Archiver.java:109 -!Archive\ sketch\ as\:= +Archive\ sketch\ as\:=\u0e1a\u0e35\u0e1a\u0e2d\u0e31\u0e14\u0e07\u0e32\u0e19\u0e40\u0e1b\u0e47\u0e19\: #: tools/Archiver.java:139 -!Archive\ sketch\ canceled.= +Archive\ sketch\ canceled.=\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e1a\u0e35\u0e1a\u0e2d\u0e35\u0e14\u0e07\u0e32\u0e19 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format @@ -151,13 +155,13 @@ Arabic=\u0e15\u0e31\u0e27\u0e2d\u0e32\u0e23\u0e32\u0e1a\u0e34\u0e04 (\u0e20\u0e3 !Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.= #: ../../../../../arduino-core/src/processing/app/I18n.java:24 -Arduino=\u0e2d\u0e14\u0e38\u0e22\u0e42\u0e19\u0e48 +Arduino=Arduino #: ../../../processing/app/I18n.java:83 -Arduino\ ARM\ (32-bits)\ Boards=\u0e1a\u0e2d\u0e23\u0e4c\u0e14\u0e2d\u0e14\u0e38\u0e22\u0e42\u0e19\u0e48 \u0e40\u0e2d \u0e2d\u0e32\u0e23\u0e4c \u0e40\u0e2d\u0e47\u0e21 (32\u0e1a\u0e34\u0e15) +Arduino\ ARM\ (32-bits)\ Boards=\u0e1a\u0e2d\u0e23\u0e4c\u0e14 Arduino ARM (32 \u0e1a\u0e34\u0e15) #: ../../../processing/app/I18n.java:82 -Arduino\ AVR\ Boards=\u0e1a\u0e2d\u0e23\u0e4c\u0e14\u0e2d\u0e14\u0e38\u0e22\u0e42\u0e19\u0e48 \u0e40\u0e2d \u0e27\u0e35 \u0e2d\u0e32\u0e23\u0e4c +Arduino\ AVR\ Boards=\u0e1a\u0e2d\u0e23\u0e4c\u0e14 Arduino ARM #: Editor.java:2137 !Arduino\ can\ only\ open\ its\ own\ sketches\nand\ other\ files\ ending\ in\ .ino\ or\ .pde= @@ -169,14 +173,14 @@ Arduino\ AVR\ Boards=\u0e1a\u0e2d\u0e23\u0e4c\u0e14\u0e2d\u0e14\u0e38\u0e22\u0e4 !Arduino\ cannot\ run\ because\ it\ could\ not\ncreate\ a\ folder\ to\ store\ your\ sketchbook.= #: ../../../processing/app/EditorStatus.java:471 -!Arduino\:\ = +Arduino\:\ =Arduino\: #: Sketch.java:588 #, java-format -!Are\ you\ sure\ you\ want\ to\ delete\ "{0}"?= +Are\ you\ sure\ you\ want\ to\ delete\ "{0}"?=\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e08\u0e30\u0e25\u0e1a "{0}" \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48? #: Sketch.java:587 -!Are\ you\ sure\ you\ want\ to\ delete\ this\ sketch?= +Are\ you\ sure\ you\ want\ to\ delete\ this\ sketch?=\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e17\u0e35\u0e48\u0e08\u0e30\u0e25\u0e1a\u0e07\u0e32\u0e19\u0e19\u0e35\u0e49\u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48? #: ../../../processing/app/Base.java:356 !Argument\ required\ for\ --board= @@ -199,35 +203,35 @@ Arduino\ AVR\ Boards=\u0e1a\u0e2d\u0e23\u0e4c\u0e14\u0e2d\u0e14\u0e38\u0e22\u0e4 !Armenian= #: ../../../processing/app/Preferences.java:138 -Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a +!Asturian= #: ../../../processing/app/debug/Compiler.java:145 !Authorization\ required= #: tools/AutoFormat.java:91 -!Auto\ Format= +Auto\ Format=\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 #: tools/AutoFormat.java:944 -!Auto\ Format\ finished.= +Auto\ Format\ finished.=\u0e23\u0e39\u0e1b\u0e41\u0e1a\u0e1a\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:457 !Auto-detect\ proxy\ settings= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:264 -!Automatic= +Automatic=\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:474 !Automatic\ proxy\ configuration\ URL\:= #: SerialMonitor.java:110 -!Autoscroll= +Autoscroll=\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e2d\u0e31\u0e15\u0e42\u0e19\u0e21\u0e31\u0e15\u0e34 #: Editor.java:2619 #, java-format -!Bad\ error\ line\:\ {0}= +Bad\ error\ line\:\ {0}=\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1c\u0e25\u0e32\u0e14\u0e43\u0e19\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e17\u0e35\u0e48\: {0} #: Editor.java:2136 -!Bad\ file\ selected= +Bad\ file\ selected=\u0e01\u0e32\u0e23\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e44\u0e1f\u0e25\u0e4c\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07 #: ../../../processing/app/Preferences.java:149 !Basque= @@ -237,15 +241,15 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #: ../../../processing/app/Base.java:1433 #: ../../../processing/app/Editor.java:707 -!Board= +Board=\u0e1a\u0e2d\u0e23\u0e4c\u0e14 #: ../../../../../app//src/processing/app/Editor.java:2824 -!Board\ Info= +Board\ Info=\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1a\u0e2d\u0e23\u0e4c\u0e14 #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 #, java-format -!Board\ at\ {0}\ is\ not\ available= +Board\ at\ {0}\ is\ not\ available=\u0e1a\u0e2d\u0e23\u0e4c\u0e14\u0e17\u0e35\u0e48 {0} \u0e44\u0e21\u0e48\u0e1e\u0e23\u0e49\u0e2d\u0e21\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:62 #, java-format @@ -256,13 +260,13 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Board\ {0}\:{1}\:{2}\ doesn''t\ define\ a\ ''build.board''\ preference.\ Auto-set\ to\:\ {3}= #: ../../../processing/app/EditorStatus.java:472 -!Board\:\ = +Board\:\ =\u0e1a\u0e2d\u0e23\u0e4c\u0e14\: #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 -!Boards\ Manager= +Boards\ Manager=\u0e15\u0e31\u0e27\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e1a\u0e2d\u0e23\u0e4c\u0e14 #: ../../../../../app/src/processing/app/Base.java:1320 -!Boards\ Manager...= +Boards\ Manager...=\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e1a\u0e2d\u0e23\u0e4c\u0e14... #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:328 !Boards\ included\ in\ this\ package\:= @@ -278,13 +282,13 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Both\ NL\ &\ CR= #: Preferences.java:81 -!Browse= +Browse=\u0e04\u0e49\u0e19\u0e14\u0e39 #: ../../../processing/app/Sketch.java:1530 !Build\ options\ changed,\ rebuilding\ all= #: ../../../../../app/src/processing/app/Base.java:1210 -!Built-in\ Examples= +Built-in\ Examples=\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e43\u0e2b\u0e49\u0e21\u0e32 #: ../../../processing/app/Preferences.java:80 !Bulgarian= @@ -310,14 +314,14 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 -!Can't\ find\ the\ sketch\ in\ the\ specified\ path= +Can't\ find\ the\ sketch\ in\ the\ specified\ path=\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e07\u0e32\u0e19\u0e43\u0e19\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e19\u0e35\u0e49 #: ../../../processing/app/Preferences.java:92 !Canadian\ French= #: Preferences.java:79 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2064 Editor.java:2145 Editor.java:2465 -!Cancel= +Cancel=\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01 #: ../../../processing/app/Base.java:465 !Cannot\ specify\ any\ sketch\ files= @@ -329,7 +333,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Catalan= #: Preferences.java:419 -!Check\ for\ updates\ on\ startup= +Check\ for\ updates\ on\ startup=\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e32\u0e23\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e17\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e34\u0e48\u0e21 #: ../../../processing/app/Preferences.java:142 !Chinese\ (China)= @@ -341,40 +345,40 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Chinese\ (Taiwan)\ (Big5)= #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 -!Clear\ output= +Clear\ output=\u0e25\u0e49\u0e32\u0e07\u0e40\u0e2d\u0e32\u0e15\u0e4c\u0e1e\u0e38\u0e15 #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 -!Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs= +Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs=\u0e04\u0e25\u0e34\u0e01\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e14\u0e39 URLs \u0e1a\u0e2d\u0e23\u0e4c\u0e14\u0e17\u0e35\u0e48\u0e44\u0e21\u0e48\u0e40\u0e1b\u0e47\u0e19\u0e17\u0e32\u0e07\u0e01\u0e32\u0e23 #: Editor.java:521 Editor.java:2024 -!Close= +Close=\u0e1b\u0e34\u0e14 #: Editor.java:1208 Editor.java:2749 -!Comment/Uncomment= +Comment/Uncomment=\u0e04\u0e2d\u0e21\u0e40\u0e21\u0e19\u0e17\u0e4c/\u0e22\u0e01\u0e40\u0e25\u0e34\u0e01\u0e04\u0e2d\u0e21\u0e40\u0e21\u0e19\u0e17\u0e4c #: ../../../../../arduino-core/src/processing/app/I18n.java:30 -!Communication= +Communication=\u0e01\u0e32\u0e23\u0e2a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e23 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:266 -!Compiler\ warnings\:\ = +Compiler\ warnings\:\ =\u0e01\u0e32\u0e23\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e04\u0e2d\u0e21\u0e44\u0e1e\u0e40\u0e25\u0e2d\u0e23\u0e4c\: #: Sketch.java:1608 Editor.java:1890 -!Compiling\ sketch...= +Compiling\ sketch...=\u0e01\u0e33\u0e25\u0e31\u0e07\u0e04\u0e2d\u0e21\u0e44\u0e1e\u0e25\u0e4c... #: ../../../../../arduino-core/src/processing/app/I18n.java:27 -!Contributed= +Contributed=\u0e2a\u0e19\u0e31\u0e1a\u0e2a\u0e19\u0e38\u0e19 #: Editor.java:1157 Editor.java:2707 -!Copy= +Copy=\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01 #: Editor.java:1177 Editor.java:2723 -!Copy\ as\ HTML= +Copy\ as\ HTML=\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e40\u0e1b\u0e47\u0e19 HTML #: ../../../processing/app/EditorStatus.java:455 -!Copy\ error\ messages= +Copy\ error\ messages=\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1c\u0e25\u0e32\u0e14 #: Editor.java:1165 Editor.java:2715 -!Copy\ for\ Forum= +Copy\ for\ Forum=\u0e04\u0e31\u0e14\u0e25\u0e2d\u0e01\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1f\u0e2d\u0e23\u0e31\u0e21 #: Sketch.java:1089 #, java-format @@ -441,6 +445,10 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #, java-format !Could\ not\ replace\ {0}= +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 !Couldn't\ archive\ sketch= @@ -457,7 +465,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Croatian= #: Editor.java:1149 Editor.java:2699 -!Cut= +Cut=\u0e15\u0e31\u0e14 #: ../../../../../app/src/processing/app/Preferences.java:119 !Czech\ (Czech\ Republic)= @@ -466,25 +474,28 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Danish\ (Denmark)= #: ../../../../../arduino-core/src/processing/app/I18n.java:36 -!Data\ Processing= +Data\ Processing=\u0e01\u0e32\u0e23\u0e1b\u0e23\u0e30\u0e21\u0e27\u0e25\u0e1c\u0e25\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 #: ../../../../../arduino-core/src/processing/app/I18n.java:35 -!Data\ Storage= +Data\ Storage=\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 #: ../../../../../app/src/processing/app/Editor.java:1386 -!Decrease\ Font\ Size= +Decrease\ Font\ Size=\u0e25\u0e14\u0e02\u0e19\u0e32\u0e14\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d #: Editor.java:1224 Editor.java:2765 -!Decrease\ Indent= +Decrease\ Indent=\u0e25\u0e14\u0e22\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 -!Default= +Default=\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19 + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=\u0e18\u0e35\u0e21\u0e1e\u0e37\u0e49\u0e19\u0e10\u0e32\u0e19 #: EditorHeader.java:314 Sketch.java:591 -!Delete= +Delete=\u0e25\u0e1a #: ../../../../../arduino-core/src/processing/app/I18n.java:33 -!Device\ Control= +Device\ Control=\u0e01\u0e32\u0e23\u0e04\u0e27\u0e1a\u0e04\u0e38\u0e21\u0e2d\u0e38\u0e1b\u0e01\u0e23\u0e13\u0e4c #: debug/Uploader.java:199 !Device\ is\ not\ responding,\ check\ the\ right\ serial\ port\ is\ selected\ or\ RESET\ the\ board\ right\ before\ exporting= @@ -493,39 +504,39 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Discard\ all\ changes\ and\ reload\ sketch?= #: ../../../../../arduino-core/src/processing/app/I18n.java:29 -!Display= +Display=\u0e01\u0e32\u0e23\u0e41\u0e2a\u0e14\u0e07\u0e1c\u0e25 #: ../../../processing/app/Preferences.java:438 -!Display\ line\ numbers= +Display\ line\ numbers=\u0e41\u0e2a\u0e14\u0e07\u0e40\u0e25\u0e02\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:195 #, java-format !Do\ you\ want\ to\ remove\ {0}?\nIf\ you\ do\ so\ you\ won't\ be\ able\ to\ use\ {0}\ any\ more.= #: Editor.java:2064 -!Don't\ Save= +Don't\ Save=\u0e44\u0e21\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 #: Editor.java:2275 Editor.java:2311 -!Done\ Saving.= +Done\ Saving.=\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19 #: Editor.java:2510 !Done\ burning\ bootloader.= #: ../../../processing/app/BaseNoGui.java:507 #: ../../../processing/app/BaseNoGui.java:552 -!Done\ compiling= +Done\ compiling=\u0e04\u0e2d\u0e21\u0e44\u0e1e\u0e25\u0e4c\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19 #: Editor.java:1911 Editor.java:1928 -!Done\ compiling.= +Done\ compiling.=\u0e04\u0e2d\u0e21\u0e44\u0e1e\u0e25\u0e4c\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19 #: Editor.java:2564 !Done\ printing.= #: ../../../processing/app/BaseNoGui.java:514 -!Done\ uploading= +Done\ uploading=\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19 #: Editor.java:2395 Editor.java:2431 -!Done\ uploading.= +Done\ uploading.=\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e40\u0e2a\u0e23\u0e47\u0e08\u0e2a\u0e34\u0e49\u0e19 #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:105 #, java-format @@ -555,19 +566,19 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Dutch\ (Netherlands)= #: ../../../../../app/src/processing/app/Editor.java:1309 -!Edison\ Help= +Edison\ Help=\u0e01\u0e32\u0e23\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e2b\u0e25\u0e37\u0e2d Edison #: Editor.java:1130 -!Edit= +Edit=\u0e41\u0e01\u0e49\u0e44\u0e02 #: Preferences.java:370 -!Editor\ font\ size\:\ = +Editor\ font\ size\:\ =\u0e02\u0e19\u0e32\u0e14\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d\: #: Preferences.java:353 -!Editor\ language\:\ = +Editor\ language\:\ =\u0e20\u0e32\u0e29\u0e32\: #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:322 -!Enable\ Code\ Folding= +Enable\ Code\ Folding=\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e42\u0e04\u0e49\u0e14 Folding #: Preferences.java:92 !English= @@ -577,13 +588,13 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:269 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:271 -!Enter\ a\ comma\ separated\ list\ of\ urls= +Enter\ a\ comma\ separated\ list\ of\ urls=\u0e43\u0e2a\u0e48\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e2b\u0e21\u0e32\u0e22\u0e04\u0e2d\u0e21\u0e21\u0e32\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e41\u0e22\u0e01\u0e23\u0e32\u0e22\u0e01\u0e32\u0e23 urls #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:96 -!Enter\ additional\ URLs,\ one\ for\ each\ row= +Enter\ additional\ URLs,\ one\ for\ each\ row=\u0e01\u0e23\u0e2d\u0e01 URLs, \u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e25\u0e30 1 URL #: Editor.java:1062 -!Environment= +Environment=\u0e2a\u0e20\u0e32\u0e1e\u0e41\u0e27\u0e14\u0e25\u0e49\u0e2d\u0e21 #: Base.java:2147 Preferences.java:256 Sketch.java:475 Sketch.java:481 #: Sketch.java:496 Sketch.java:503 Sketch.java:526 Sketch.java:543 @@ -611,6 +622,10 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #, java-format !Error\ inside\ Serial.{0}()= +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -625,6 +640,18 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 !Error\ reading\ preferences= @@ -650,6 +677,9 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -678,11 +708,8 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #: Preferences.java:93 !Estonian= -#: ../../../processing/app/Preferences.java:146 -!Estonian\ (Estonia)= - #: Editor.java:516 -!Examples= +Examples=\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07 #: ../../../../../app/src/processing/app/Base.java:1185 !Examples\ for\ any\ board= @@ -702,7 +729,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Export\ canceled,\ changes\ must\ first\ be\ saved.= #: ../../../../../app/src/processing/app/Editor.java:750 -!Export\ compiled\ Binary= +Export\ compiled\ Binary=\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e04\u0e2d\u0e21\u0e44\u0e1e\u0e25\u0e4c\u0e40\u0e1b\u0e47\u0e19 HEX #: ../../../processing/app/Base.java:416 #, java-format @@ -716,7 +743,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Failed\ to\ rename\ sketch\ folder= #: Editor.java:491 -!File= +File=\u0e44\u0e1f\u0e25\u0e4c #: ../../../../../arduino-core/src/processing/app/SketchData.java:139 #, java-format @@ -726,22 +753,22 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Filipino= #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:95 -!Filter\ your\ search...= +Filter\ your\ search...=\u0e04\u0e49\u0e19\u0e2b\u0e32... #: FindReplace.java:124 FindReplace.java:127 !Find= #: Editor.java:1249 -!Find\ Next= +Find\ Next=\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e16\u0e31\u0e14\u0e44\u0e1b #: Editor.java:1259 -!Find\ Previous= +Find\ Previous=\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32 #: Editor.java:1086 Editor.java:2775 -!Find\ in\ Reference= +Find\ in\ Reference=\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e43\u0e19\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07 #: Editor.java:1234 -!Find...= +Find...=\u0e04\u0e49\u0e19\u0e2b\u0e32... #: FindReplace.java:80 !Find\:= @@ -751,7 +778,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #: tools/FixEncoding.java:41 tools/FixEncoding.java:58 #: tools/FixEncoding.java:79 -!Fix\ Encoding\ &\ Reload= +Fix\ Encoding\ &\ Reload=\u0e41\u0e01\u0e49\u0e44\u0e02\u0e01\u0e32\u0e23\u0e40\u0e02\u0e49\u0e32\u0e23\u0e2b\u0e31\u0e2a\u0e41\u0e25\u0e30\u0e40\u0e23\u0e34\u0e48\u0e21\u0e43\u0e2b\u0e21\u0e48 #: ../../../processing/app/BaseNoGui.java:318 !For\ information\ on\ installing\ libraries,\ see\:\ http\://www.arduino.cc/en/Guide/Libraries\n= @@ -764,7 +791,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !French= #: Editor.java:1097 -!Frequently\ Asked\ Questions= +Frequently\ Asked\ Questions=\u0e04\u0e33\u0e16\u0e32\u0e21\u0e17\u0e35\u0e48\u0e1e\u0e1a\u0e1a\u0e48\u0e2d\u0e22 #: Preferences.java:96 !Galician= @@ -773,7 +800,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Galician\ (Spain)= #: ../../../../../app/src/processing/app/Editor.java:1288 -!Galileo\ Help= +Galileo\ Help=\u0e01\u0e32\u0e23\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e2b\u0e25\u0e37\u0e2d Galileo #: ../../../processing/app/Preferences.java:94 !Georgian= @@ -782,24 +809,24 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !German= #: ../../../../../app//src/processing/app/Editor.java:817 -!Get\ Board\ Info= +Get\ Board\ Info=\u0e41\u0e2a\u0e14\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1a\u0e2d\u0e23\u0e4c\u0e14 #: Editor.java:1054 -!Getting\ Started= +Getting\ Started=\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19 #: ../../../processing/app/Sketch.java:1646 #, java-format -!Global\ variables\ use\ {0}\ bytes\ ({2}%%)\ of\ dynamic\ memory,\ leaving\ {3}\ bytes\ for\ local\ variables.\ Maximum\ is\ {1}\ bytes.= +Global\ variables\ use\ {0}\ bytes\ ({2}%%)\ of\ dynamic\ memory,\ leaving\ {3}\ bytes\ for\ local\ variables.\ Maximum\ is\ {1}\ bytes.=\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e43\u0e0a\u0e49 {0} \u0e44\u0e1a\u0e15\u0e4c ({2}%%) \u0e08\u0e32\u0e01\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e04\u0e27\u0e32\u0e21\u0e08\u0e33\u0e44\u0e14\u0e19\u0e32\u0e21\u0e34\u0e01 {3} \u0e44\u0e1a\u0e15\u0e4c\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48 \u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14 {1} \u0e44\u0e1a\u0e15\u0e4c #: ../../../processing/app/Sketch.java:1651 #, java-format -!Global\ variables\ use\ {0}\ bytes\ of\ dynamic\ memory.= +Global\ variables\ use\ {0}\ bytes\ of\ dynamic\ memory.=\u0e15\u0e31\u0e27\u0e41\u0e1b\u0e23\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\u0e43\u0e0a\u0e49 {0} \u0e44\u0e1a\u0e15\u0e4c \u0e08\u0e32\u0e01\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e04\u0e27\u0e32\u0e21\u0e08\u0e33\u0e44\u0e14\u0e19\u0e32\u0e21\u0e34\u0e01 #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:66 -!Go\ to\ line= +Go\ to\ line=\u0e44\u0e1b\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e17\u0e35\u0e48... #: ../../../../../app/src/processing/app/Editor.java:1460 -!Go\ to\ line...= +Go\ to\ line...=\u0e44\u0e1b\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e17\u0e35\u0e48... #: Preferences.java:98 !Greek= @@ -808,7 +835,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Hebrew= #: Editor.java:1015 -!Help= +Help=\u0e0a\u0e48\u0e27\u0e22\u0e40\u0e2b\u0e25\u0e37\u0e2d #: Preferences.java:99 !Hindi= @@ -831,8 +858,8 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #: FindReplace.java:96 !Ignore\ Case= -#: Base.java:1058 -!Ignoring\ bad\ library\ name= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 !Ignoring\ sketch\ with\ bad\ name= @@ -841,17 +868,17 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !In\ Arduino\ 1.0,\ the\ default\ file\ extension\ has\ changed\nfrom\ .pde\ to\ .ino.\ \ New\ sketches\ (including\ those\ created\nby\ "Save-As")\ will\ use\ the\ new\ extension.\ \ The\ extension\nof\ existing\ sketches\ will\ be\ updated\ on\ save,\ but\ you\ can\ndisable\ this\ in\ the\ Preferences\ dialog.\n\nSave\ sketch\ and\ update\ its\ extension?= #: ../../../../../app/src/processing/app/Editor.java:778 -!Include\ Library= +Include\ Library=\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35 #: ../../../processing/app/BaseNoGui.java:768 #: ../../../processing/app/BaseNoGui.java:771 !Incorrect\ IDE\ installation\ folder= #: ../../../../../app/src/processing/app/Editor.java:1378 -!Increase\ Font\ Size= +Increase\ Font\ Size=\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e02\u0e19\u0e32\u0e14\u0e15\u0e31\u0e27\u0e2b\u0e19\u0e31\u0e07\u0e2a\u0e37\u0e2d #: Editor.java:1216 Editor.java:2757 -!Increase\ Indent= +Increase\ Indent=\u0e40\u0e1e\u0e34\u0e48\u0e21\u0e22\u0e48\u0e2d\u0e2b\u0e19\u0e49\u0e32 #: Preferences.java:101 !Indonesian= @@ -865,20 +892,20 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:78 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:91 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:303 -!Install= +Install=\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:170 !Installation\ completed\!= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownInstalledLibraryItem.java:50 -!Installed= +Installed=\u0e17\u0e35\u0e48\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e25\u0e49\u0e27 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -889,7 +916,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Installing...= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:256 -!Interface\ scale\:= +Interface\ scale\:=\u0e02\u0e19\u0e32\u0e14\u0e2d\u0e34\u0e19\u0e40\u0e15\u0e2d\u0e23\u0e4c\u0e40\u0e1f\u0e0b\: #: ../../../processing/app/Base.java:1204 #, java-format @@ -899,6 +926,15 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 !Italian= @@ -915,7 +951,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Latvian= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:93 -!Library\ Manager= +Library\ Manager=\u0e15\u0e31\u0e27\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35 #: ../../../../../app/src/processing/app/Base.java:2349 !Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu= @@ -923,9 +959,9 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -944,7 +980,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Low\ memory\ available,\ stability\ problems\ may\ occur.= #: ../../../../../app/src/processing/app/Base.java:1168 -!Manage\ Libraries...= +Manage\ Libraries...=\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35... #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:466 !Manual\ proxy\ configuration= @@ -963,10 +999,10 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Mode\ not\ supported= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:186 -!More= +More=\u0e21\u0e32\u0e01\u0e01\u0e27\u0e48\u0e32 #: Preferences.java:449 -!More\ preferences\ can\ be\ edited\ directly\ in\ the\ file= +More\ preferences\ can\ be\ edited\ directly\ in\ the\ file=\u0e41\u0e01\u0e49\u0e44\u0e02\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e2d\u0e37\u0e48\u0e19 \u0e46 \u0e44\u0e14\u0e49\u0e43\u0e19\u0e44\u0e1f\u0e25\u0e4c\u0e19\u0e35\u0e49 #: Editor.java:2156 !Moving= @@ -982,7 +1018,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Must\ specify\ exactly\ one\ sketch\ file= #: Sketch.java:282 -!Name\ for\ new\ file\:= +Name\ for\ new\ file\:=\u0e15\u0e31\u0e49\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e44\u0e1f\u0e25\u0e4c\u0e43\u0e2b\u0e21\u0e48\: #: ../../../../../app//src/processing/app/Editor.java:2809 !Native\ serial\ port,\ can't\ obtain\ info= @@ -991,7 +1027,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Nepali= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:601 -!Network= +Network=\u0e40\u0e04\u0e23\u0e37\u0e2d\u0e02\u0e48\u0e32\u0e22 #: ../../../../../app//src/processing/app/Editor.java:2804 !Network\ port,\ can't\ obtain\ info= @@ -1003,19 +1039,19 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Network\ upload\ using\ programmer\ not\ supported= #: EditorToolbar.java:41 Editor.java:493 -!New= +New=\u0e43\u0e2b\u0e21\u0e48 #: EditorHeader.java:292 -!New\ Tab= +New\ Tab=\u0e41\u0e17\u0e47\u0e1b\u0e43\u0e2b\u0e21\u0e48 #: SerialMonitor.java:112 -!Newline= +Newline=\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e43\u0e2b\u0e21\u0e48 #: EditorHeader.java:340 -!Next\ Tab= +Next\ Tab=\u0e41\u0e17\u0e47\u0e1b\u0e16\u0e31\u0e14\u0e44\u0e1b #: Preferences.java:78 UpdateCheck.java:108 -!No= +No=\u0e44\u0e21\u0e48 #: ../../../processing/app/debug/Compiler.java:158 !No\ authorization\ data\ found= @@ -1036,7 +1072,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !No\ launcher\ available= #: SerialMonitor.java:112 -!No\ line\ ending= +No\ line\ ending=\u0e1a\u0e23\u0e23\u0e17\u0e31\u0e14\u0e44\u0e21\u0e48\u0e23\u0e39\u0e49\u0e08\u0e1a #: ../../../processing/app/BaseNoGui.java:665 !No\ parameters= @@ -1066,7 +1102,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !No\ valid\ hardware\ definitions\ found\ in\ folder\ {0}.= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:184 -!None= +None=\u0e44\u0e21\u0e48 #: ../../../processing/app/Preferences.java:108 !Norwegian\ Bokm\u00e5l= @@ -1076,7 +1112,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a #: Preferences.java:80 Sketch.java:585 Sketch.java:737 Sketch.java:1042 #: Editor.java:2145 Editor.java:2465 -!OK= +OK=\u0e15\u0e01\u0e25\u0e07 #: Sketch.java:992 Editor.java:376 !One\ file\ added\ to\ the\ sketch.= @@ -1085,10 +1121,10 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Only\ --verify,\ --upload\ or\ --get-pref\ are\ supported= #: EditorToolbar.java:41 -!Open= +Open=\u0e40\u0e1b\u0e34\u0e14 #: ../../../../../app/src/processing/app/Editor.java:625 -!Open\ Recent= +Open\ Recent=\u0e40\u0e1b\u0e34\u0e14\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e23\u0e47\u0e27 \u0e46 \u0e19\u0e35\u0e49 #: Editor.java:2688 !Open\ URL= @@ -1097,22 +1133,22 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Open\ an\ Arduino\ sketch...= #: Base.java:903 Editor.java:501 -!Open...= +Open...=\u0e40\u0e1b\u0e34\u0e14... #: ../../../../../arduino-core/src/processing/app/I18n.java:37 -!Other= +Other=\u0e2d\u0e37\u0e48\u0e19 \u0e46 #: Editor.java:563 -!Page\ Setup= +Page\ Setup=\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32\u0e2b\u0e19\u0e49\u0e32\u0e01\u0e23\u0e30\u0e14\u0e32\u0e29 #: ../../../../../arduino-core/src/processing/app/I18n.java:25 -!Partner= +Partner=\u0e1e\u0e32\u0e23\u0e4c\u0e17\u0e40\u0e19\u0e2d\u0e23\u0e4c #: ../../../processing/app/forms/PasswordAuthorizationDialog.java:44 !Password\:= #: Editor.java:1189 Editor.java:2731 -!Paste= +Paste=\u0e27\u0e32\u0e07 #: Preferences.java:109 !Persian= @@ -1150,7 +1186,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Polish= #: ../../../processing/app/Editor.java:718 -!Port= +Port=\u0e1e\u0e2d\u0e23\u0e4c\u0e15 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:491 !Port\ number\:= @@ -1165,7 +1201,7 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Portuguese\ (Portugal)= #: Preferences.java:295 Editor.java:583 -!Preferences= +Preferences=\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 #: ../../../../../app/src/processing/app/Base.java:297 !Preparing\ boards...= @@ -1174,10 +1210,10 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Previous= #: EditorHeader.java:326 -!Previous\ Tab= +Previous\ Tab=\u0e41\u0e17\u0e47\u0e1b\u0e01\u0e48\u0e2d\u0e19\u0e2b\u0e19\u0e49\u0e32 #: Editor.java:571 -!Print= +Print=\u0e1e\u0e34\u0e21\u0e1e\u0e4c #: Editor.java:2571 !Printing\ canceled.= @@ -1214,37 +1250,37 @@ Asturian=\u0e2d\u0e31\u0e2a\u0e15\u0e39\u0e40\u0e23\u0e35\u0e22\u0e2a !Processor= #: Editor.java:704 -Programmer=\u0e19\u0e31\u0e01\u0e40\u0e02\u0e35\u0e22\u0e19\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21 +Programmer=Programmer #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:80 #, java-format !Progress\ {0}= #: Base.java:783 Editor.java:593 -Quit=\u0e40\u0e25\u0e34\u0e01 +Quit=\u0e2d\u0e2d\u0e01 #: ../../../../../app/src/processing/app/Base.java:1233 !RETIRED= #: ../../../../../arduino-core/src/processing/app/I18n.java:26 -!Recommended= +Recommended=\u0e41\u0e19\u0e30\u0e19\u0e33 #: Editor.java:1138 Editor.java:1140 Editor.java:1390 -!Redo= +Redo=\u0e17\u0e33\u0e43\u0e2b\u0e21\u0e48 #: Editor.java:1078 -!Reference= +Reference=\u0e40\u0e2d\u0e01\u0e2a\u0e32\u0e23\u0e2d\u0e49\u0e32\u0e07\u0e2d\u0e34\u0e07 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 -Remove=\u0e22\u0e49\u0e32\u0e22 +Remove=\u0e25\u0e1a -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 -Removing...=\u0e40\u0e04\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e22\u0e49\u0e32\u0e22 +Removing...=\u0e01\u0e33\u0e25\u0e31\u0e07\u0e25\u0e1a... #: EditorHeader.java:300 Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d @@ -1266,7 +1302,10 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d !Replace\ with\:= #: ../../../../../arduino-core/src/processing/app/I18n.java:28 -!Retired= +Retired=\u0e1b\u0e25\u0e14\u0e2d\u0e2d\u0e01 + +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= #: Preferences.java:113 !Romanian= @@ -1284,23 +1323,23 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:529 Editor.java:2064 #: Editor.java:2468 -!Save= +Save=\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 #: Editor.java:537 -!Save\ As...= +Save\ As...=\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01\u0e40\u0e1b\u0e47\u0e19... #: Editor.java:2317 !Save\ Canceled.= #: Editor.java:2020 #, java-format -!Save\ changes\ to\ "{0}"?\ \ = +Save\ changes\ to\ "{0}"?\ \ =\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e1a\u0e31\u0e19\u0e17\u0e36\u0e01 "{0}" \u0e2b\u0e23\u0e37\u0e2d\u0e44\u0e21\u0e48? #: Sketch.java:825 !Save\ sketch\ folder\ as...= #: ../../../../../app/src/processing/app/Preferences.java:425 -!Save\ when\ verifying\ or\ uploading= +Save\ when\ verifying\ or\ uploading=\u0e1a\u0e31\u0e19\u0e17\u0e35\u0e01\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e2b\u0e23\u0e37\u0e2d\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14 #: Editor.java:2270 Editor.java:2308 !Saving...= @@ -1312,7 +1351,7 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d !Select\ (or\ create\ new)\ folder\ for\ sketches...= #: Editor.java:1198 Editor.java:2739 -!Select\ All= +Select\ All=\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 #: Base.java:2636 !Select\ a\ zip\ file\ or\ a\ folder\ containing\ the\ library\ you'd\ like\ to\ add= @@ -1337,16 +1376,16 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d !Selected\ library\ is\ not\ available= #: SerialMonitor.java:93 -!Send= +Send=\u0e2a\u0e48\u0e07 #: ../../../../../arduino-core/src/processing/app/I18n.java:32 -!Sensors= +Sensors=\u0e40\u0e0b\u0e19\u0e40\u0e0b\u0e2d\u0e23\u0e4c #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:669 -!Serial\ Monitor= +Serial\ Monitor=\u0e0b\u0e35\u0e40\u0e23\u0e35\u0e22\u0e25\u0e21\u0e2d\u0e19\u0e34\u0e40\u0e15\u0e2d\u0e23\u0e4c #: ../../../../../app/src/processing/app/Editor.java:804 -!Serial\ Plotter= +Serial\ Plotter=\u0e0b\u0e35\u0e40\u0e23\u0e35\u0e22\u0e25\u0e1e\u0e25\u0e47\u0e2d\u0e15\u0e40\u0e15\u0e2d\u0e23\u0e4c #: ../../../../../app/src/processing/app/Editor.java:2325 #, java-format @@ -1359,9 +1398,13 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d #, java-format !Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?= -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -!Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?= +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1371,22 +1414,25 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d !Setting\ build\ path\ to\ {0}= #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:450 -!Settings= +Settings=\u0e01\u0e32\u0e23\u0e15\u0e31\u0e49\u0e07\u0e04\u0e48\u0e32 #: Base.java:1681 !Settings\ issues= #: Editor.java:641 -!Show\ Sketch\ Folder= +Show\ Sketch\ Folder=\u0e41\u0e2a\u0e14\u0e07\u0e41\u0e1f\u0e49\u0e21\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e02\u0e2d\u0e07\u0e07\u0e32\u0e19 + +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=\u0e41\u0e2a\u0e14\u0e07\u0e40\u0e27\u0e25\u0e32 #: Preferences.java:387 -!Show\ verbose\ output\ during\:\ = +Show\ verbose\ output\ during\:\ =\u0e41\u0e2a\u0e14\u0e07\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e40\u0e2d\u0e32\u0e15\u0e4c\u0e1e\u0e38\u0e15\u0e02\u0e13\u0e30\u0e17\u0e35\u0e48\: #: ../../../../../arduino-core/src/processing/app/I18n.java:31 -!Signal\ Input/Output= +Signal\ Input/Output=\u0e2a\u0e31\u0e0d\u0e0d\u0e32\u0e13\u0e2d\u0e34\u0e19\u0e1e\u0e38\u0e15/\u0e40\u0e2d\u0e32\u0e15\u0e4c\u0e1e\u0e38\u0e15 #: Editor.java:607 -!Sketch= +Sketch=\u0e07\u0e32\u0e19 #: Sketch.java:1754 !Sketch\ Disappeared= @@ -1408,16 +1454,16 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d #: ../../../processing/app/Sketch.java:1639 #, java-format -!Sketch\ uses\ {0}\ bytes\ ({2}%%)\ of\ program\ storage\ space.\ Maximum\ is\ {1}\ bytes.= +Sketch\ uses\ {0}\ bytes\ ({2}%%)\ of\ program\ storage\ space.\ Maximum\ is\ {1}\ bytes.=\u0e44\u0e1f\u0e25\u0e4c\u0e07\u0e32\u0e19\u0e43\u0e0a\u0e49 {0} \u0e44\u0e1a\u0e15\u0e4c ({2}%%) \u0e08\u0e32\u0e01\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e27\u0e48\u0e32\u0e07\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21 \u0e2a\u0e39\u0e07\u0e2a\u0e38\u0e14 {1} \u0e44\u0e1a\u0e15\u0e4c #: Editor.java:510 -!Sketchbook= +Sketchbook=\u0e41\u0e1f\u0e49\u0e21\u0e07\u0e32\u0e19 #: Base.java:258 !Sketchbook\ folder\ disappeared= #: Preferences.java:315 -!Sketchbook\ location\:= +Sketchbook\ location\:=\u0e17\u0e35\u0e48\u0e2d\u0e22\u0e39\u0e48\u0e41\u0e1f\u0e49\u0e21\u0e07\u0e32\u0e19\: #: ../../../processing/app/BaseNoGui.java:428 !Sketchbook\ path\ not\ defined= @@ -1498,6 +1544,10 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d #, java-format !The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format !The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)= @@ -1522,8 +1572,8 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d #: Sketch.java:1755 !The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.= -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 !The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.= @@ -1531,6 +1581,9 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =\u0e18\u0e35\u0e21\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1541,27 +1594,27 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d !Time\ for\ a\ Break= #: ../../../../../arduino-core/src/processing/app/I18n.java:34 -!Timing= +Timing=\u0e40\u0e27\u0e25\u0e32 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:94 #, java-format !Tool\ {0}\ is\ not\ available\ for\ your\ operating\ system.= #: Editor.java:663 -!Tools= +Tools=\u0e40\u0e04\u0e23\u0e37\u0e48\u0e2d\u0e07\u0e21\u0e37\u0e2d #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:97 -!Topic= +Topic=\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d #: Editor.java:1070 -!Troubleshooting= +Troubleshooting=\u0e1b\u0e31\u0e0d\u0e2b\u0e32 #: ../../../processing/app/Preferences.java:117 !Turkish= #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:109 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:105 -!Type= +Type=\u0e0a\u0e19\u0e34\u0e14 #: ../../../processing/app/Editor.java:2507 !Type\ board\ password\ to\ access\ its\ console= @@ -1601,10 +1654,10 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d !Unable\ to\ reach\ Arduino.cc\ due\ to\ possible\ network\ issues.= #: ../../../../../arduino-core/src/processing/app/I18n.java:38 -!Uncategorized= +Uncategorized=\u0e44\u0e21\u0e48\u0e21\u0e35\u0e2b\u0e21\u0e27\u0e14\u0e2b\u0e21\u0e39\u0e48 #: Editor.java:1133 Editor.java:1355 -!Undo= +Undo=\u0e40\u0e25\u0e34\u0e01\u0e17\u0e33 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:85 #, java-format @@ -1622,7 +1675,7 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownUpdatableLibrariesItem.java:27 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownUpdatableCoresItem.java:27 -!Updatable= +Updatable=\u0e43\u0e2b\u0e49\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e17 #: UpdateCheck.java:111 !Update= @@ -1646,10 +1699,10 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d !Updating\ list\ of\ installed\ libraries= #: EditorToolbar.java:41 Editor.java:545 -!Upload= +Upload=\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14 #: EditorToolbar.java:46 Editor.java:553 -!Upload\ Using\ Programmer= +Upload\ Using\ Programmer=\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14\u0e42\u0e14\u0e22\u0e43\u0e0a\u0e49 Programmer #: ../../../../../app//src/processing/app/Editor.java:2814 !Upload\ any\ sketch\ to\ obtain\ it= @@ -1664,13 +1717,13 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d !Uploading\ to\ I/O\ Board...= #: Sketch.java:1622 -!Uploading...= +Uploading...=\u0e01\u0e33\u0e25\u0e31\u0e07\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14... #: Editor.java:1269 !Use\ Selection\ For\ Find= #: Preferences.java:409 -!Use\ external\ editor= +Use\ external\ editor=\u0e43\u0e0a\u0e49\u0e15\u0e31\u0e27\u0e41\u0e01\u0e49\u0e44\u0e02\u0e20\u0e32\u0e22\u0e19\u0e2d\u0e01 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:493 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:499 @@ -1689,13 +1742,13 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d !Using\ previously\ compiled\ file\:\ {0}= #: EditorToolbar.java:41 EditorToolbar.java:46 -!Verify= +Verify=\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a #: Preferences.java:400 -!Verify\ code\ after\ upload= +Verify\ code\ after\ upload=\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e42\u0e04\u0e49\u0e14\u0e2b\u0e25\u0e31\u0e07\u0e08\u0e32\u0e01\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14 #: ../../../../../app/src/processing/app/Editor.java:725 -!Verify/Compile= +Verify/Compile=\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a/\u0e04\u0e2d\u0e21\u0e44\u0e1e\u0e25\u0e4c #: ../../../../../app/src/processing/app/Base.java:451 !Verifying\ and\ uploading...= @@ -1721,7 +1774,7 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d !Vietnamese= #: Editor.java:1105 -!Visit\ Arduino.cc= +Visit\ Arduino.cc=\u0e40\u0e22\u0e35\u0e48\u0e22\u0e21\u0e0a\u0e21 Arduino.cc #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:90 #, java-format @@ -1779,7 +1832,7 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d !Wrong\ microcontroller\ found.\ \ Did\ you\ select\ the\ right\ board\ from\ the\ Tools\ >\ Board\ menu?= #: Preferences.java:77 UpdateCheck.java:108 -!Yes= +Yes=\u0e15\u0e01\u0e25\u0e07 #: ../../../../../app/src/processing/app/Base.java:2312 !You\ can't\ import\ a\ folder\ that\ contains\ your\ sketchbook= @@ -1844,7 +1897,7 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d !baud= #: Preferences.java:389 -!compilation\ = +compilation\ =\u0e04\u0e2d\u0e21\u0e44\u0e1e\u0e25\u0e4c #: ../../../processing/app/NetworkMonitor.java:111 !connected\!= @@ -1865,6 +1918,11 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d #: Editor.java:936 Editor.java:943 !name\ is\ null= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 !serialMenu\ is\ null= @@ -1877,7 +1935,7 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d !unknown\ option\:\ {0}= #: Preferences.java:391 -!upload= +upload=\u0e2d\u0e31\u0e1b\u0e42\u0e2b\u0e25\u0e14 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:324 #, java-format @@ -1902,7 +1960,7 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d #: ../../../../../app/src/processing/app/Base.java:1201 #, java-format -!{0}\ libraries= +{0}\ libraries=\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35 {0} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:76 #, java-format @@ -1910,7 +1968,7 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d #: ../../../../../app/src/processing/app/EditorLineStatus.java:109 #, java-format -!{0}\ on\ {1}= +{0}\ on\ {1}={0} \u0e1a\u0e19 {1} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:78 #, java-format @@ -1932,10 +1990,6 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1944,6 +1998,10 @@ Rename=\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e0a\u0e37\u0e48\u0e2d #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_tr.po b/arduino-core/src/processing/app/i18n/Resources_tr.po index 9e62821c0da..16b23821190 100644 --- a/arduino-core/src/processing/app/i18n/Resources_tr.po +++ b/arduino-core/src/processing/app/i18n/Resources_tr.po @@ -17,6 +17,9 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Anıl Özbek , 2013 # Ayse Gokce Bor , 2012 # b , 2015 @@ -27,18 +30,23 @@ # Caner Gural , 2015 # Coşkun Taşdemir , 2013 # Cristian Maglie , 2016 +# Efe Tunca , 2021 # Koray Al , 2012 # Huseyin Sozen , 2015 # Kaan CEYHAN , 2013 +# Mehmet ŞÜKÜROĞLU , 2018 # Mert Gülsoy , 2015 +# Mustafa Haluk Saran , 2019 # nazrdogan , 2015 +# Nuri AKMAN , 2020 # Oguzhan Gazi Aslantas , 2015 # Oğuzhan Gençel , 2015 # washaq , 2014 # sercan , 2015 -# Ülgen Sarıkavak , 2012,2016 -# Ülgen Sarıkavak , 2013-2014 -# Ülgen Sarıkavak , 2014 +# Ugur Demirkan , 2020 +# Ülgen Sarıkavak , 2012,2016,2019 +# 909266411654fe02d72c48514a465be9_33c5f74 <15d35ca13d17f7bfcab80c3d16f5fb15_38993>, 2013-2014 +# 909266411654fe02d72c48514a465be9_33c5f74 <15d35ca13d17f7bfcab80c3d16f5fb15_38993>, 2014 # selengalp , 2014 # YUSUF CAKIR, 2014 # Zubeyir OZTURK , 2015 @@ -47,8 +55,8 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" -"Last-Translator: Cristian Maglie \n" +"PO-Revision-Date: 2021-01-20 13:27+0000\n" +"Last-Translator: Efe Tunca \n" "Language-Team: Turkish (http://www.transifex.com/mbanzi/arduino-ide-15/language/tr/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -97,7 +105,7 @@ msgstr "(eski)" #: ../../../processing/app/helpers/CommandlineParser.java:149 msgid "--curdir no longer supported" -msgstr "--curdir desteklenmiyor" +msgstr "--curdir artık desteklenmiyor" #: ../../../processing/app/Base.java:468 msgid "" @@ -148,7 +156,7 @@ msgstr "Arduino Hakkında" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 msgid "Acoli" -msgstr "" +msgstr "Acoli" #: ../../../../../app/src/processing/app/Base.java:1177 msgid "Add .ZIP Library..." @@ -172,7 +180,7 @@ msgstr "Afrikaca" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 msgid "Aggressively cache compiled core" -msgstr "" +msgstr "Agresifçe önbellek derlenmiş çekirdek" #: ../../../processing/app/Preferences.java:96 msgid "Albanian" @@ -182,7 +190,7 @@ msgstr "Arnavutça" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownAllCoresItem.java:43 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:187 msgid "All" -msgstr "Tüm" +msgstr "Hepsi" #: tools/FixEncoding.java:77 msgid "" @@ -238,7 +246,7 @@ msgstr "Taslağı arşivleme iptal edildi." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format msgid "Archiving built core (caching) in: {0}" -msgstr "" +msgstr "{0} 'de yerleşik çekirdek arşivleme (önbellekleme)" #: tools/Archiver.java:75 msgid "" @@ -291,7 +299,7 @@ msgstr "Bu taslağı silmek istediğinizden emin misiniz?" #: ../../../processing/app/Base.java:356 msgid "Argument required for --board" -msgstr "--board için argüman gereklidir" +msgstr "--board için argüman gerekli" #: ../../../processing/app/Base.java:363 msgid "Argument required for --port" @@ -371,13 +379,13 @@ msgstr "Kart" #: ../../../../../app//src/processing/app/Editor.java:2824 msgid "Board Info" -msgstr "" +msgstr "Kart Bilgisi" #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 #, java-format msgid "Board at {0} is not available" -msgstr "" +msgstr "{0} adresindeki kart kullanılamıyor" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:62 #, java-format @@ -452,7 +460,7 @@ msgstr "Önyükleyici I/O kartına yazdırılıyor (biraz zaman alabilir)..." msgid "" "CRC doesn't match, file is corrupted. It may be a temporary problem, please " "retry later." -msgstr "" +msgstr "CRC eşleşmiyor, dosya bozuk. Geçici bir sorun olabilir, lütfen daha sonra tekrar deneyin." #: ../../../processing/app/Base.java:379 #, java-format @@ -461,7 +469,7 @@ msgstr "{0} için sadece bir adet seçim yapabilirsiniz." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 msgid "Can't enable external editor" -msgstr "" +msgstr "Harici editör etkinleştirilemiyor" #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 @@ -507,7 +515,7 @@ msgstr "Çince (Tayvan) (Big5)" #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 msgid "Clear output" -msgstr "" +msgstr "Çıkışı temizle" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 msgid "Click for a list of unofficial boards support URLs" @@ -535,7 +543,7 @@ msgstr "Çalışma derleniyor..." #: ../../../../../arduino-core/src/processing/app/I18n.java:27 msgid "Contributed" -msgstr "" +msgstr "Katkıda bulunuldu" #: Editor.java:1157 Editor.java:2707 msgid "Copy" @@ -565,7 +573,7 @@ msgstr "Düzgün bir konuma kopyalanamıyor." #: ../../../../../arduino-core/src/processing/app/Sketch.java:342 #, java-format msgid "Could not create directory \"{0}\"" -msgstr "" +msgstr "\"{0}\" dizini oluşturulamadı" #: Editor.java:2179 msgid "Could not create the sketch folder." @@ -646,6 +654,11 @@ msgstr "{0}'ın eski sürümü kaldırılamadı" msgid "Could not replace {0}" msgstr "{0} değiştirilemedi" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Tercihler dosyası yazılamadı: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Çalışma arşivlenemedi." @@ -691,7 +704,7 @@ msgstr "Veri Depolama" #: ../../../../../app/src/processing/app/Editor.java:1386 msgid "Decrease Font Size" -msgstr "" +msgstr "Yazı tipi boyutunu küçült" #: Editor.java:1224 Editor.java:2765 msgid "Decrease Indent" @@ -701,6 +714,10 @@ msgstr "Girintiyi Azalt" msgid "Default" msgstr "Varsayılan" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Varsayılan tema" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Sil" @@ -721,7 +738,7 @@ msgstr "Tüm değişikliklerden vazgeçip taslağı yeniden yüklemek istiyor mu #: ../../../../../arduino-core/src/processing/app/I18n.java:29 msgid "Display" -msgstr "" +msgstr "Gösterge" #: ../../../processing/app/Preferences.java:438 msgid "Display line numbers" @@ -856,7 +873,7 @@ msgstr "Dosya ekleme sırasında hata oluştu." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:272 #, java-format msgid "Error compiling for board {0}." -msgstr "" +msgstr "{0} kartı için derleme hatası." #: debug/Compiler.java:369 msgid "Error compiling." @@ -876,6 +893,11 @@ msgstr "Arduino veri klasörüne ulaşırken hata oluştu." msgid "Error inside Serial.{0}()" msgstr "Serial.{0}() 'da hata" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "{0}: {1} teması yüklenirken hata oluştu" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -895,6 +917,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "Serial Port'u açarken hata! \"{0}\". http://playground.arduino.cc/Linux/All#Permission adresindeki dökümana bakın" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "{0} Kütüphaneler dizini ayrıştırılırken hata oluştu.\nKütüphaneler dizinini güncellemek için Kitaplık Yöneticisi'ni açmayı deneyin." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Kitaplık dizini okunurken hata oluştu: {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Paket dizinleri klasörü okunurken hata oluştu:{0}\n(Yetersiz yetki olabilir mi?)" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Tercihleri okuma sırasında hata oluştu." @@ -929,6 +970,10 @@ msgstr "Önyükleyici yazdırılırken hata oluştu." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Önyükleyici yazdırılırken hata oluştu: Kayıp '{0}' yapılandırma parametresi" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Bootloader yazdırılırken bir problem oluştu: Lütfen bir seri port seçin." + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Derlenirken hata: '{0}' ayar argümanı bulunamıyor." @@ -965,23 +1010,19 @@ msgstr "Doğrulanırken/yüklenirken hata" msgid "Estonian" msgstr "Estonca" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estonyaca (Estonya)" - #: Editor.java:516 msgid "Examples" msgstr "Örnekler" #: ../../../../../app/src/processing/app/Base.java:1185 msgid "Examples for any board" -msgstr "" +msgstr "Herhangi bir kart için örnekler" #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 #, java-format msgid "Examples for {0}" -msgstr "" +msgstr "{0} için örnekler" #: ../../../../../app/src/processing/app/Base.java:1244 msgid "Examples from Custom Libraries" @@ -989,7 +1030,7 @@ msgstr "Özel (custom) Kütüphane Örnekleri" #: ../../../../../app/src/processing/app/Base.java:1329 msgid "Examples from Other Libraries" -msgstr "" +msgstr "Diğer kütüphanelerden örnekler" #: ../../../../../app/src/processing/app/Editor.java:753 msgid "Export canceled, changes must first be saved." @@ -1011,7 +1052,7 @@ msgstr "" #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 msgid "Failed to rename sketch folder" -msgstr "" +msgstr "Taslak klasörü yeniden adlandırılamadı" #: Editor.java:491 msgid "File" @@ -1020,7 +1061,7 @@ msgstr "Dosya" #: ../../../../../arduino-core/src/processing/app/SketchData.java:139 #, java-format msgid "File name {0} is invalid: ignored" -msgstr "" +msgstr "{0} dosya adı geçersiz: yok sayıldı" #: Preferences.java:94 msgid "Filipino" @@ -1104,7 +1145,7 @@ msgstr "Almanca" #: ../../../../../app//src/processing/app/Editor.java:817 msgid "Get Board Info" -msgstr "" +msgstr "Kart Bilgisini Al" #: Editor.java:1054 msgid "Getting Started" @@ -1166,15 +1207,15 @@ msgstr "Bulgarca" #: ../../../../../app/src/processing/app/Base.java:1319 msgid "INCOMPATIBLE" -msgstr "" +msgstr "UYUMSUZ" #: FindReplace.java:96 msgid "Ignore Case" msgstr "Göz Ardı Et" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Hatalı kütüphane ismi göz ardı ediliyor" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "Uygun olmayan isimli kütüphane yok sayıldı." #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1202,7 +1243,7 @@ msgstr "Yanlış IDE kurulum dosyası" #: ../../../../../app/src/processing/app/Editor.java:1378 msgid "Increase Font Size" -msgstr "" +msgstr "Yazı tipi boyutunu büyüt" #: Editor.java:1216 Editor.java:2757 msgid "Increase Indent" @@ -1237,10 +1278,10 @@ msgstr "Kuruldu" msgid "Installing boards..." msgstr "Kartlar yükleniyor..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "library yükleniyor: {0}" +msgid "Installing library: {0}:{1}" +msgstr "{0}: {1} Kitaplığı yükleniyor" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1266,6 +1307,17 @@ msgstr "{0} içerisinde geçersiz kütüphane bulundu: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "Geçersiz alıntılama: kapatma işareti olan [{0}] bulunamadı." +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Geçersiz '{0}' kütüphane sürümü: {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Geçersiz sürüm {0}" + #: Preferences.java:102 msgid "Italian" msgstr "İtalyanca" @@ -1276,7 +1328,7 @@ msgstr "Japonca" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:81 msgid "Kazakh" -msgstr "" +msgstr "Kazak" #: Preferences.java:104 msgid "Korean" @@ -1288,7 +1340,7 @@ msgstr "Letonca" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:93 msgid "Library Manager" -msgstr "Library yöneticisi" +msgstr "Kütüphane yöneticisi" #: ../../../../../app/src/processing/app/Base.java:2349 msgid "Library added to your libraries. Check \"Include library\" menu" @@ -1298,10 +1350,10 @@ msgstr "Library sizin librarylerinize yüklendi. \"library ekle\" menüsünü ko msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "{0} sürüm {1} kütüphanesi zaten kurulu." +msgid "Library is already installed: {0}:{1}" +msgstr "kütüphane zaten yüklü: {0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1326,7 +1378,7 @@ msgstr "Düşük hafıza mevcut, kararlılık problemlerine sebep olabilir" #: ../../../../../app/src/processing/app/Base.java:1168 msgid "Manage Libraries..." -msgstr "libraryleri düzenle" +msgstr "Kütüphaneleri Yönet..." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:466 msgid "Manual proxy configuration" @@ -1542,7 +1594,7 @@ msgstr "Sayfa Ayarları" #: ../../../../../arduino-core/src/processing/app/I18n.java:25 msgid "Partner" -msgstr "" +msgstr "Eş" #: ../../../processing/app/forms/PasswordAuthorizationDialog.java:44 msgid "Password:" @@ -1583,7 +1635,7 @@ msgstr "Lütfen Program > İçeri Aktar menüsünü kullanarak Wire kütüphanes #: ../../../../../app//src/processing/app/Editor.java:2799 msgid "Please select a port to obtain board info" -msgstr "" +msgstr "Kart bilgisi almak için lütfen bir port seçin" #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 @@ -1592,7 +1644,7 @@ msgstr "Lütfen Araçlar->Programlayıcı Menüsü'nden bir programlayıcı seç #: ../../../../../app/src/processing/app/Editor.java:2613 msgid "Plotter not available while serial monitor is open" -msgstr "" +msgstr "Seri monitör açıkken çizici kullanılamıyor" #: Preferences.java:110 msgid "Polish" @@ -1700,7 +1752,7 @@ msgstr "Çıkış" #: ../../../../../app/src/processing/app/Base.java:1233 msgid "RETIRED" -msgstr "" +msgstr "EMEKLİ" #: ../../../../../arduino-core/src/processing/app/I18n.java:26 msgid "Recommended" @@ -1718,10 +1770,10 @@ msgstr "Kaynak" msgid "Remove" msgstr "Kaldır" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "Kütüphane kaldırılıyor: {0}" +msgid "Removing library: {0}:{1}" +msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1755,7 +1807,11 @@ msgstr "Şununla değiştir:" #: ../../../../../arduino-core/src/processing/app/I18n.java:28 msgid "Retired" -msgstr "" +msgstr "emekli" + +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Yüklemeyi başka bir seri port ile tekrar denemek ister misiniz?" #: Preferences.java:113 msgid "Romanian" @@ -1871,7 +1927,7 @@ msgstr "" #: ../../../../../app/src/processing/app/Editor.java:2516 msgid "Serial monitor not available while plotter is open" -msgstr "" +msgstr "Çizici açıkken seri monitör kullanılamıyor" #: Serial.java:194 #, java-format @@ -1880,12 +1936,15 @@ msgid "" " Serial Port menu?" msgstr "Seri port \"{0}\" bulunamadı. Araçlar > Seri Port menüsünden doğru portu seçtiniz mi?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Seri port seçilmedi." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Seri port \"{0}\" bulunamadı.\nBaşka bir seri port ile denemek ister misiniz?" +msgid "Serial port {0} not found." +msgstr "Seri port {0} bulunamadı." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1908,6 +1967,10 @@ msgstr "Ayar problemleri" msgid "Show Sketch Folder" msgstr "Çalışma Klasörünü Göster" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Zaman damgasını göster" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Aşağıdaki işlem sırasında ayrıntılı çıktı göster:" @@ -1998,7 +2061,7 @@ msgstr "Bazı dosyalar \"sadece-okunur\" olarak işaretlenmiş, bu yüzden\ntasl #: ../../../../../arduino-core/src/processing/app/Sketch.java:246 #, java-format msgid "Sorry, the folder \"{0}\" already exists." -msgstr "" +msgstr "Üzgünüz, \"{0}\" klasörü zaten var." #: Preferences.java:115 msgid "Spanish" @@ -2034,7 +2097,7 @@ msgstr "Tamil" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:102 msgid "Telugu" -msgstr "" +msgstr "Telugu" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:100 msgid "Thai" @@ -2079,6 +2142,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr " \"{0}\" adlı dosyanın \n \"{1}\" adlı bir klasörün içinde olması gerekiyor.\nKlasör oluşturulup dosya taşınarak devam edilsin mi?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2089,7 +2160,7 @@ msgstr "\"{0}\" kütüphanesi kullanılamaz.\nKütüphane adları sadece temel h #: ../../../../../app/src/processing/app/SketchController.java:170 msgid "The main file cannot use an extension" -msgstr "" +msgstr "Ana dosya bir uzantı kullanamıyor" #: Sketch.java:356 msgid "The name cannot start with a period." @@ -2124,11 +2195,12 @@ msgid "" "but anything besides the code will be lost." msgstr "Taslak klasörü kayboldu.\nAynı konuma tekrar kaydetme denemesi yapılacak,\nfakat onun haricindeki kodlar kaybolacak." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "" +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Taslak adının değiştirilmesi gerekiyordu.\nEskiz isimleri bir harf veya rakamla başlamalı, ardından harf\nsayılar, kısa çizgiler, noktalar ve alt çizgiler izlemeli. Maksimum uzunluk 63 karakterdir." #: Base.java:259 msgid "" @@ -2145,6 +2217,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "Belirlediğiniz taslak defteri dizini IDE'nizin kopyasını içeriyor.\nLütfen taslak defteriniz için farklı bir dizin seçin." +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Tema:" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2164,7 +2240,7 @@ msgstr "Mola Zamanı" #: ../../../../../arduino-core/src/processing/app/I18n.java:34 msgid "Timing" -msgstr "" +msgstr "Zamanlama" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:94 #, java-format @@ -2242,7 +2318,7 @@ msgstr "Olası ağ sorunları nedeniyle Arduino.cc'ye erişilemedi." #: ../../../../../arduino-core/src/processing/app/I18n.java:38 msgid "Uncategorized" -msgstr "" +msgstr "Sınıflandırılmamış" #: Editor.java:1133 Editor.java:1355 msgid "Undo" @@ -2255,7 +2331,7 @@ msgstr "Bağlam (context) anahtarı {1}'de işlenemeyen {0} tipi" #: ../../../../../app//src/processing/app/Editor.java:2818 msgid "Unknown board" -msgstr "" +msgstr "Bilinmeyen kart" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format @@ -2506,7 +2582,7 @@ msgstr "Taslak defterinizi unuttunuz" msgid "" "You have unsaved changes!\n" "You must save all your sketches to enable this option." -msgstr "" +msgstr "Kaydedilmemiş değişiklikleriniz mevcut!\nBu seçeneği etkinleştirmek için tüm taslaklarınızı kaydetmelisiniz." #: ../../../processing/app/AbstractMonitor.java:92 msgid "" @@ -2637,6 +2713,12 @@ msgstr "geçersiz font boyutu {0} yok sayıldı " msgid "name is null" msgstr "name değeri boş" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "{0} içinde Header dosyası (.h) bulunamadı" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu değeri boş" @@ -2724,11 +2806,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: Geçersiz bir devre kartı adıdır, \"package:arch:board\" veya \"package:arch:board:options\" şeklinde olmalıdır." -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: {2} kartı için bilinmeyen {1} seçeneği " - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2739,6 +2816,11 @@ msgstr "{0}: {1} kartı için geçersiz seçenek" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: Geçersiz seçenek. isim=deger şeklinde olmalıdır." +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_tr.properties b/arduino-core/src/processing/app/i18n/Resources_tr.properties index 3a4a49ea98f..d28ce74a753 100644 --- a/arduino-core/src/processing/app/i18n/Resources_tr.properties +++ b/arduino-core/src/processing/app/i18n/Resources_tr.properties @@ -17,6 +17,9 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # An\u0131l \u00d6zbek , 2013 # Ayse Gokce Bor , 2012 # b , 2015 @@ -27,22 +30,27 @@ # Caner Gural , 2015 # Co\u015fkun Ta\u015fdemir , 2013 # Cristian Maglie , 2016 +# Efe Tunca , 2021 # Koray Al , 2012 # Huseyin Sozen , 2015 # Kaan CEYHAN , 2013 +# Mehmet \u015e\u00dcK\u00dcRO\u011eLU , 2018 # Mert G\u00fclsoy , 2015 +# Mustafa Haluk Saran , 2019 # nazrdogan , 2015 +# Nuri AKMAN , 2020 # Oguzhan Gazi Aslantas , 2015 # O\u011fuzhan Gen\u00e7el , 2015 # washaq , 2014 # sercan , 2015 -# \u00dclgen Sar\u0131kavak , 2012,2016 -# \u00dclgen Sar\u0131kavak , 2013-2014 -# \u00dclgen Sar\u0131kavak , 2014 +# Ugur Demirkan , 2020 +# \u00dclgen Sar\u0131kavak , 2012,2016,2019 +# 909266411654fe02d72c48514a465be9_33c5f74 <15d35ca13d17f7bfcab80c3d16f5fb15_38993>, 2013-2014 +# 909266411654fe02d72c48514a465be9_33c5f74 <15d35ca13d17f7bfcab80c3d16f5fb15_38993>, 2014 # selengalp , 2014 # YUSUF CAKIR, 2014 # Zubeyir OZTURK , 2015 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Turkish (http\://www.transifex.com/mbanzi/arduino-ide-15/language/tr/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: tr\nPlural-Forms\: nplurals\=2; plural\=(n > 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2021-01-20 13\:27+0000\nLast-Translator\: Efe Tunca \nLanguage-Team\: Turkish (http\://www.transifex.com/mbanzi/arduino-ide-15/language/tr/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: tr\nPlural-Forms\: nplurals\=2; plural\=(n > 1);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=(Arduino'nun yeniden ba\u015flat\u0131lmas\u0131n\u0131 gerektiriyor) @@ -71,7 +79,7 @@ (legacy)=(eski) #: ../../../processing/app/helpers/CommandlineParser.java:149 ---curdir\ no\ longer\ supported=--curdir desteklenmiyor +--curdir\ no\ longer\ supported=--curdir art\u0131k desteklenmiyor #: ../../../processing/app/Base.java:468 --verbose,\ --verbose-upload\ and\ --verbose-build\ can\ only\ be\ used\ together\ with\ --verify\ or\ --upload=--verbose, --verbose-upload ve --verbose-build yaln\u0131zca --verify ya da --upload ile birlikte kullan\u0131labilir @@ -104,7 +112,7 @@ A\ subfolder\ of\ your\ sketchbook\ is\ not\ a\ valid\ library=Taslak defterinin About\ Arduino=Arduino Hakk\u0131nda #: ../../../../../app/src/cc/arduino/i18n/Languages.java:41 -!Acoli= +Acoli=Acoli #: ../../../../../app/src/processing/app/Base.java:1177 Add\ .ZIP\ Library...=.ZIP Kitapl\u0131\u011f\u0131 Ekle... @@ -122,7 +130,7 @@ Additional\ Boards\ Manager\ URLs\:\ =Ek Devre Kartlar\u0131 Y\u00f6neticisi URL Afrikaans=Afrikaca #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 -!Aggressively\ cache\ compiled\ core= +Aggressively\ cache\ compiled\ core=Agresif\u00e7e \u00f6nbellek derlenmi\u015f \u00e7ekirdek #: ../../../processing/app/Preferences.java:96 Albanian=Arnavut\u00e7a @@ -130,7 +138,7 @@ Albanian=Arnavut\u00e7a #: ../../../../../app/src/cc/arduino/contributions/ui/DropdownAllItem.java:42 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownAllCoresItem.java:43 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:187 -All=T\u00fcm +All=Hepsi #: tools/FixEncoding.java:77 An\ error\ occurred\ while\ trying\ to\ fix\ the\ file\ encoding.\nDo\ not\ attempt\ to\ save\ this\ sketch\ as\ it\ may\ overwrite\nthe\ old\ version.\ Use\ Open\ to\ re-open\ the\ sketch\ and\ try\ again.\n=Dosya kodlamas\u0131n\u0131 d\u00fczeltmeye \u00e7al\u0131\u015f\u0131rken bir hata olu\u015ftu.\nEski s\u00fcr\u00fcm\u00fcn \u00fczerine yazma ihtimaline kar\u015f\u0131 bu tasla\u011f\u0131 kaydetmeye \u00e7al\u0131\u015fmay\u0131n.\nA\u00e7 komutunu kullanarak dosyay\u0131 yeniden a\u00e7\u0131n ve tekrar deneyin.\n @@ -169,7 +177,7 @@ Archive\ sketch\ canceled.=Tasla\u011f\u0131 ar\u015fivleme iptal edildi. #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format -!Archiving\ built\ core\ (caching)\ in\:\ {0}= +Archiving\ built\ core\ (caching)\ in\:\ {0}={0} 'de yerle\u015fik \u00e7ekirdek ar\u015fivleme (\u00f6nbellekleme) #: tools/Archiver.java:75 Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.=Tasla\u011f\u0131n ar\u015fivlenmesi iptal edildi. \u00c7\u00fcnk\u00fc \ntaslak d\u00fczg\u00fcn bir \u015fekilde kaydedilemedi. @@ -203,7 +211,7 @@ Are\ you\ sure\ you\ want\ to\ delete\ "{0}"?="{0}" \u0131 silmek istedi\u011fin Are\ you\ sure\ you\ want\ to\ delete\ this\ sketch?=Bu tasla\u011f\u0131 silmek istedi\u011finizden emin misiniz? #: ../../../processing/app/Base.java:356 -Argument\ required\ for\ --board=--board i\u00e7in arg\u00fcman gereklidir +Argument\ required\ for\ --board=--board i\u00e7in arg\u00fcman gerekli #: ../../../processing/app/Base.java:363 Argument\ required\ for\ --port=--port i\u00e7in arg\u00fcman gereklidir. @@ -264,12 +272,12 @@ Belarusian=Belarus\u00e7a Board=Kart #: ../../../../../app//src/processing/app/Editor.java:2824 -!Board\ Info= +Board\ Info=Kart Bilgisi #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 #, java-format -!Board\ at\ {0}\ is\ not\ available= +Board\ at\ {0}\ is\ not\ available={0} adresindeki kart kullan\u0131lam\u0131yor #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:62 #, java-format @@ -323,14 +331,14 @@ Burn\ Bootloader=\u00d6ny\u00fckleyiciyi Yazd\u0131r Burning\ bootloader\ to\ I/O\ Board\ (this\ may\ take\ a\ minute)...=\u00d6ny\u00fckleyici I/O kart\u0131na yazd\u0131r\u0131l\u0131yor (biraz zaman alabilir)... #: ../../../../../arduino-core/src/cc/arduino/contributions/DownloadableContributionsDownloader.java:91 -!CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.= +CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ please\ retry\ later.=CRC e\u015fle\u015fmiyor, dosya bozuk. Ge\u00e7ici bir sorun olabilir, l\u00fctfen daha sonra tekrar deneyin. #: ../../../processing/app/Base.java:379 #, java-format Can\ only\ pass\ one\ of\:\ {0}={0} i\u00e7in sadece bir adet se\u00e7im yapabilirsiniz. #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 -!Can't\ enable\ external\ editor= +Can't\ enable\ external\ editor=Harici edit\u00f6r etkinle\u015ftirilemiyor #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 @@ -365,7 +373,7 @@ Chinese\ (Taiwan)=\u00c7ince (Tayvan) Chinese\ (Taiwan)\ (Big5)=\u00c7ince (Tayvan) (Big5) #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 -!Clear\ output= +Clear\ output=\u00c7\u0131k\u0131\u015f\u0131 temizle #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs=Gayriresmi kartlara destek URL'lerinin listesi i\u00e7in t\u0131klay\u0131n @@ -386,7 +394,7 @@ Compiler\ warnings\:\ =Derleme uyar\u0131s\u0131 Compiling\ sketch...=\u00c7al\u0131\u015fma derleniyor... #: ../../../../../arduino-core/src/processing/app/I18n.java:27 -!Contributed= +Contributed=Katk\u0131da bulunuldu #: Editor.java:1157 Editor.java:2707 Copy=Kopyala @@ -409,7 +417,7 @@ Could\ not\ copy\ to\ a\ proper\ location.=D\u00fczg\u00fcn bir konuma kopyalana #: ../../../../../arduino-core/src/processing/app/Sketch.java:342 #, java-format -!Could\ not\ create\ directory\ "{0}"= +Could\ not\ create\ directory\ "{0}"="{0}" dizini olu\u015fturulamad\u0131 #: Editor.java:2179 Could\ not\ create\ the\ sketch\ folder.=\u00c7al\u0131\u015fma klas\u00f6r\u00fc olu\u015fturulamad\u0131. @@ -465,6 +473,10 @@ Could\ not\ remove\ old\ version\ of\ {0}={0}'\u0131n eski s\u00fcr\u00fcm\u00fc #, java-format Could\ not\ replace\ {0}={0} de\u011fi\u015ftirilemedi +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=Tercihler dosyas\u0131 yaz\u0131lamad\u0131\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=\u00c7al\u0131\u015fma ar\u015fivlenemedi. @@ -496,7 +508,7 @@ Data\ Processing=Veri \u0130\u015fleme Data\ Storage=Veri Depolama #: ../../../../../app/src/processing/app/Editor.java:1386 -!Decrease\ Font\ Size= +Decrease\ Font\ Size=Yaz\u0131 tipi boyutunu k\u00fc\u00e7\u00fclt #: Editor.java:1224 Editor.java:2765 Decrease\ Indent=Girintiyi Azalt @@ -504,6 +516,9 @@ Decrease\ Indent=Girintiyi Azalt #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=Varsay\u0131lan +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=Varsay\u0131lan tema + #: EditorHeader.java:314 Sketch.java:591 Delete=Sil @@ -517,7 +532,7 @@ Device\ is\ not\ responding,\ check\ the\ right\ serial\ port\ is\ selected\ or\ Discard\ all\ changes\ and\ reload\ sketch?=T\u00fcm de\u011fi\u015fikliklerden vazge\u00e7ip tasla\u011f\u0131 yeniden y\u00fcklemek istiyor musunuz? #: ../../../../../arduino-core/src/processing/app/I18n.java:29 -!Display= +Display=G\u00f6sterge #: ../../../processing/app/Preferences.java:438 Display\ line\ numbers=Sat\u0131r numaralar\u0131n\u0131 g\u00f6ster @@ -619,7 +634,7 @@ Error\ adding\ file=Dosya ekleme s\u0131ras\u0131nda hata olu\u015ftu. #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:272 #, java-format -!Error\ compiling\ for\ board\ {0}.= +Error\ compiling\ for\ board\ {0}.={0} kart\u0131 i\u00e7in derleme hatas\u0131. #: debug/Compiler.java:369 Error\ compiling.=Derleme s\u0131ras\u0131nda hata olu\u015ftu. @@ -635,6 +650,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=Arduino veri klas\u00f6r\u00fcne ula #, java-format Error\ inside\ Serial.{0}()=Serial.{0}() 'da hata +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}={0}\: {1} temas\u0131 y\u00fcklenirken hata olu\u015ftu + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -649,6 +668,18 @@ Error\ opening\ serial\ port\ ''{0}''.=Seri port "{0}" a\u00e7\u0131lamad\u0131. #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=Serial Port'u a\u00e7arken hata\! "{0}". http\://playground.arduino.cc/Linux/All\#Permission adresindeki d\u00f6k\u00fcmana bak\u0131n +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.={0} K\u00fct\u00fcphaneler dizini ayr\u0131\u015ft\u0131r\u0131l\u0131rken hata olu\u015ftu.\nK\u00fct\u00fcphaneler dizinini g\u00fcncellemek i\u00e7in Kitapl\u0131k Y\u00f6neticisi'ni a\u00e7may\u0131 deneyin. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=Kitapl\u0131k dizini okunurken hata olu\u015ftu\: {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=Paket dizinleri klas\u00f6r\u00fc okunurken hata olu\u015ftu\:{0}\n(Yetersiz yetki olabilir mi?) + #: Preferences.java:277 Error\ reading\ preferences=Tercihleri okuma s\u0131ras\u0131nda hata olu\u015ftu. @@ -674,6 +705,9 @@ Error\ while\ burning\ bootloader.=\u00d6ny\u00fckleyici yazd\u0131r\u0131l\u013 #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=\u00d6ny\u00fckleyici yazd\u0131r\u0131l\u0131rken hata olu\u015ftu\: Kay\u0131p '{0}' yap\u0131land\u0131rma parametresi +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=Bootloader yazd\u0131r\u0131l\u0131rken bir problem olu\u015ftu\: L\u00fctfen bir seri port se\u00e7in. + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=Derlenirken hata\: '{0}' ayar arg\u00fcman\u0131 bulunam\u0131yor. @@ -702,25 +736,22 @@ Error\ while\ verifying/uploading=Do\u011frulan\u0131rken/y\u00fcklenirken hata #: Preferences.java:93 Estonian=Estonca -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Estonyaca (Estonya) - #: Editor.java:516 Examples=\u00d6rnekler #: ../../../../../app/src/processing/app/Base.java:1185 -!Examples\ for\ any\ board= +Examples\ for\ any\ board=Herhangi bir kart i\u00e7in \u00f6rnekler #: ../../../../../app/src/processing/app/Base.java:1205 #: ../../../../../app/src/processing/app/Base.java:1216 #, java-format -!Examples\ for\ {0}= +Examples\ for\ {0}={0} i\u00e7in \u00f6rnekler #: ../../../../../app/src/processing/app/Base.java:1244 Examples\ from\ Custom\ Libraries=\u00d6zel (custom) K\u00fct\u00fcphane \u00d6rnekleri #: ../../../../../app/src/processing/app/Base.java:1329 -!Examples\ from\ Other\ Libraries= +Examples\ from\ Other\ Libraries=Di\u011fer k\u00fct\u00fcphanelerden \u00f6rnekler #: ../../../../../app/src/processing/app/Editor.java:753 Export\ canceled,\ changes\ must\ first\ be\ saved.=D\u0131\u015fa aktarma iptal edildi. \u00d6nce de\u011fi\u015fikliklerin kaydedilmesi gerekiyor. @@ -737,14 +768,14 @@ Failed\ to\ open\ sketch\:\ "{0}"=Taslak \u00e7al\u0131\u015fma a\u00e7\u0131lam !Failed\ to\ rename\ "{0}"\ to\ "{1}"= #: ../../../../../arduino-core/src/processing/app/Sketch.java:298 -!Failed\ to\ rename\ sketch\ folder= +Failed\ to\ rename\ sketch\ folder=Taslak klas\u00f6r\u00fc yeniden adland\u0131r\u0131lamad\u0131 #: Editor.java:491 File=Dosya #: ../../../../../arduino-core/src/processing/app/SketchData.java:139 #, java-format -!File\ name\ {0}\ is\ invalid\:\ ignored= +File\ name\ {0}\ is\ invalid\:\ ignored={0} dosya ad\u0131 ge\u00e7ersiz\: yok say\u0131ld\u0131 #: Preferences.java:94 Filipino=Filipince @@ -806,7 +837,7 @@ Georgian=G\u00fcrc\u00fcce German=Almanca #: ../../../../../app//src/processing/app/Editor.java:817 -!Get\ Board\ Info= +Get\ Board\ Info=Kart Bilgisini Al #: Editor.java:1054 Getting\ Started=Ba\u015flarken... @@ -850,13 +881,13 @@ How\ very\ Borges\ of\ you=Escher size sayg\u0131lar\u0131n\u0131 sunuyor Hungarian=Bulgarca #: ../../../../../app/src/processing/app/Base.java:1319 -!INCOMPATIBLE= +INCOMPATIBLE=UYUMSUZ #: FindReplace.java:96 Ignore\ Case=G\u00f6z Ard\u0131 Et -#: Base.java:1058 -Ignoring\ bad\ library\ name=Hatal\u0131 k\u00fct\u00fcphane ismi g\u00f6z ard\u0131 ediliyor +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=Uygun olmayan isimli k\u00fct\u00fcphane yok say\u0131ld\u0131. #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=K\u00f6t\u00fc isme sahip taslak yoksay\u0131l\u0131yor @@ -872,7 +903,7 @@ Include\ Library=library ekle Incorrect\ IDE\ installation\ folder=Yanl\u0131\u015f IDE kurulum dosyas\u0131 #: ../../../../../app/src/processing/app/Editor.java:1378 -!Increase\ Font\ Size= +Increase\ Font\ Size=Yaz\u0131 tipi boyutunu b\u00fcy\u00fct #: Editor.java:1216 Editor.java:2757 Increase\ Indent=Girintiyi Artt\u0131r @@ -900,9 +931,9 @@ Installed=Kuruldu #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=Kartlar y\u00fckleniyor... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=library y\u00fckleniyor\: {0} +Installing\ library\:\ {0}\:{1}={0}\: {1} Kitapl\u0131\u011f\u0131 y\u00fckleniyor #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -923,6 +954,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}={0} i\u00e7erisinde ge\u00e7ersiz k\u00f #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=Ge\u00e7ersiz al\u0131nt\u0131lama\: kapatma i\u015fareti olan [{0}] bulunamad\u0131. +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=Ge\u00e7ersiz '{0}' k\u00fct\u00fcphane s\u00fcr\u00fcm\u00fc\: {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=Ge\u00e7ersiz s\u00fcr\u00fcm {0} + #: Preferences.java:102 Italian=\u0130talyanca @@ -930,7 +970,7 @@ Italian=\u0130talyanca Japanese=Japonca #: ../../../../../app/src/cc/arduino/i18n/Languages.java:81 -!Kazakh= +Kazakh=Kazak #: Preferences.java:104 Korean=Korece @@ -939,7 +979,7 @@ Korean=Korece Latvian=Letonca #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:93 -Library\ Manager=Library y\u00f6neticisi +Library\ Manager=K\u00fct\u00fcphane y\u00f6neticisi #: ../../../../../app/src/processing/app/Base.java:2349 Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=Library sizin librarylerinize y\u00fcklendi. "library ekle" men\u00fcs\u00fcn\u00fc kontrol edin @@ -947,9 +987,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=Library si #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}={0} s\u00fcr\u00fcm {1} k\u00fct\u00fcphanesi zaten kurulu. +Library\ is\ already\ installed\:\ {0}\:{1}=k\u00fct\u00fcphane zaten y\u00fckl\u00fc\: {0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=Sat\u0131r numaras\u0131\: @@ -968,7 +1008,7 @@ Loading\ configuration...=ayarlar y\u00fckleniyor... Low\ memory\ available,\ stability\ problems\ may\ occur.=D\u00fc\u015f\u00fck haf\u0131za mevcut, kararl\u0131l\u0131k problemlerine sebep olabilir #: ../../../../../app/src/processing/app/Base.java:1168 -Manage\ Libraries...=libraryleri d\u00fczenle +Manage\ Libraries...=K\u00fct\u00fcphaneleri Y\u00f6net... #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:466 Manual\ proxy\ configuration=Elle vekil sunucusu yap\u0131land\u0131rma @@ -1130,7 +1170,7 @@ Other=Di\u011fer Page\ Setup=Sayfa Ayarlar\u0131 #: ../../../../../arduino-core/src/processing/app/I18n.java:25 -!Partner= +Partner=E\u015f #: ../../../processing/app/forms/PasswordAuthorizationDialog.java:44 Password\:=Parola\: @@ -1161,14 +1201,14 @@ Please\ import\ the\ SPI\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.= Please\ import\ the\ Wire\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.=L\u00fctfen Program > \u0130\u00e7eri Aktar men\u00fcs\u00fcn\u00fc kullanarak Wire k\u00fct\u00fcphanesini i\u00e7eri aktar\u0131n. #: ../../../../../app//src/processing/app/Editor.java:2799 -!Please\ select\ a\ port\ to\ obtain\ board\ info= +Please\ select\ a\ port\ to\ obtain\ board\ info=Kart bilgisi almak i\u00e7in l\u00fctfen bir port se\u00e7in #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 Please\ select\ a\ programmer\ from\ Tools->Programmer\ menu=L\u00fctfen Ara\u00e7lar->Programlay\u0131c\u0131 Men\u00fcs\u00fc'nden bir programlay\u0131c\u0131 se\u00e7in #: ../../../../../app/src/processing/app/Editor.java:2613 -!Plotter\ not\ available\ while\ serial\ monitor\ is\ open= +Plotter\ not\ available\ while\ serial\ monitor\ is\ open=Seri monit\u00f6r a\u00e7\u0131kken \u00e7izici kullan\u0131lam\u0131yor #: Preferences.java:110 Polish=Polonyaca @@ -1248,7 +1288,7 @@ Progress\ {0}=\u0130lerleme {0} Quit=\u00c7\u0131k\u0131\u015f #: ../../../../../app/src/processing/app/Base.java:1233 -!RETIRED= +RETIRED=EMEKL\u0130 #: ../../../../../arduino-core/src/processing/app/I18n.java:26 Recommended=Tavsiye edilen @@ -1262,9 +1302,9 @@ Reference=Kaynak #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=Kald\u0131r -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=K\u00fct\u00fcphane kald\u0131r\u0131l\u0131yor\: {0} +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1290,7 +1330,10 @@ Replace\ the\ existing\ version\ of\ {0}?={0}'\u0131n mevcut s\u00fcr\u00fcm\u00 Replace\ with\:=\u015eununla de\u011fi\u015ftir\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 -!Retired= +Retired=emekli + +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=Y\u00fcklemeyi ba\u015fka bir seri port ile tekrar denemek ister misiniz? #: Preferences.java:113 Romanian=Romanca @@ -1377,15 +1420,19 @@ Serial\ Plotter=Seri \u00c7izici !Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release= #: ../../../../../app/src/processing/app/Editor.java:2516 -!Serial\ monitor\ not\ available\ while\ plotter\ is\ open= +Serial\ monitor\ not\ available\ while\ plotter\ is\ open=\u00c7izici a\u00e7\u0131kken seri monit\u00f6r kullan\u0131lam\u0131yor #: Serial.java:194 #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=Seri port "{0}" bulunamad\u0131. Ara\u00e7lar > Seri Port men\u00fcs\u00fcnden do\u011fru portu se\u00e7tiniz mi? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=Seri port se\u00e7ilmedi. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=Seri port "{0}" bulunamad\u0131.\nBa\u015fka bir seri port ile denemek ister misiniz? +Serial\ port\ {0}\ not\ found.=Seri port {0} bulunamad\u0131. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=Seri portlar @@ -1403,6 +1450,9 @@ Settings\ issues=Ayar problemleri #: Editor.java:641 Show\ Sketch\ Folder=\u00c7al\u0131\u015fma Klas\u00f6r\u00fcn\u00fc G\u00f6ster +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=Zaman damgas\u0131n\u0131 g\u00f6ster + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =A\u015fa\u011f\u0131daki i\u015flem s\u0131ras\u0131nda ayr\u0131nt\u0131l\u0131 \u00e7\u0131kt\u0131 g\u00f6ster\: @@ -1464,7 +1514,7 @@ Some\ files\ are\ marked\ "read-only",\ so\ you'll\nneed\ to\ re-save\ this\ ske #: ../../../../../arduino-core/src/processing/app/Sketch.java:246 #, java-format -!Sorry,\ the\ folder\ "{0}"\ already\ exists.= +Sorry,\ the\ folder\ "{0}"\ already\ exists.=\u00dczg\u00fcn\u00fcz, "{0}" klas\u00f6r\u00fc zaten var. #: Preferences.java:115 Spanish=\u0130spanyolca @@ -1491,7 +1541,7 @@ Talossan=Talossan Tamil=Tamil #: ../../../../../app/src/cc/arduino/i18n/Languages.java:102 -!Telugu= +Telugu=Telugu #: ../../../../../app/src/cc/arduino/i18n/Languages.java:100 Thai=Tay Dili @@ -1522,12 +1572,16 @@ The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=Udp s\u0131n\u0131f\u0131 Ethe #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=\ "{0}" adl\u0131 dosyan\u0131n \n "{1}" adl\u0131 bir klas\u00f6r\u00fcn i\u00e7inde olmas\u0131 gerekiyor.\nKlas\u00f6r olu\u015fturulup dosya ta\u015f\u0131narak devam edilsin mi? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)="{0}" k\u00fct\u00fcphanesi kullan\u0131lamaz.\nK\u00fct\u00fcphane adlar\u0131 sadece temel harf ve rakamlar\u0131 i\u00e7erebilir.\n(Sadece ASCII karakterler ge\u00e7erlidir, bo\u015fluk i\u00e7eremez ve bir rakamla ba\u015flayamaz) #: ../../../../../app/src/processing/app/SketchController.java:170 -!The\ main\ file\ cannot\ use\ an\ extension= +The\ main\ file\ cannot\ use\ an\ extension=Ana dosya bir uzant\u0131 kullanam\u0131yor #: Sketch.java:356 The\ name\ cannot\ start\ with\ a\ period.=\u0130sim bo\u015fluk ile ba\u015flayamaz. @@ -1546,8 +1600,8 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Taslak klas\u00f6r\u00fc kayboldu.\nAyn\u0131 konuma tekrar kaydetme denemesi yap\u0131lacak,\nfakat onun haricindeki kodlar kaybolacak. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=Taslak ad\u0131n\u0131n de\u011fi\u015ftirilmesi gerekiyordu.\nEskiz isimleri bir harf veya rakamla ba\u015flamal\u0131, ard\u0131ndan harf\nsay\u0131lar, k\u0131sa \u00e7izgiler, noktalar ve alt \u00e7izgiler izlemeli. Maksimum uzunluk 63 karakterdir. #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=\u00c7al\u0131\u015fma klas\u00f6r\u00fc bulunamad\u0131.\nArduino varsay\u0131lan \u00e7al\u0131\u015fma konumuna ge\u00e7ecek ve gerekirse yeni bir \u00e7al\u0131\u015fma\nklas\u00f6r\u00fc olu\u015fturacakt\u0131r. Akabinde Arduino kendi hakk\u0131nda \u00fc\u00e7\u00fcnc\u00fc ki\u015fi olarak konu\u015fmay\u0131 b\u0131rakacakt\u0131r. @@ -1555,6 +1609,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=Belirledi\u011finiz taslak defteri dizini IDE'nizin kopyas\u0131n\u0131 i\u00e7eriyor.\nL\u00fctfen taslak defteriniz i\u00e7in farkl\u0131 bir dizin se\u00e7in. +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =Tema\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=Bu k\u00fct\u00fcphane K\u00fct\u00fcphane Y\u00f6neticisi'nde listelenmiyor. Dolay\u0131s\u0131yla onu buradan tekrar kuramayacaks\u0131n\u0131z.\nSilmek istedi\u011finize emin misiniz? @@ -1565,7 +1622,7 @@ This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ Time\ for\ a\ Break=Mola Zaman\u0131 #: ../../../../../arduino-core/src/processing/app/I18n.java:34 -!Timing= +Timing=Zamanlama #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:94 #, java-format @@ -1625,7 +1682,7 @@ Unable\ to\ open\ serial\ plotter=Seri port monit\u00f6r\u00fc a\u00e7\u0131lam\ Unable\ to\ reach\ Arduino.cc\ due\ to\ possible\ network\ issues.=Olas\u0131 a\u011f sorunlar\u0131 nedeniyle Arduino.cc'ye eri\u015filemedi. #: ../../../../../arduino-core/src/processing/app/I18n.java:38 -!Uncategorized= +Uncategorized=S\u0131n\u0131fland\u0131r\u0131lmam\u0131\u015f #: Editor.java:1133 Editor.java:1355 Undo=Geri Al @@ -1635,7 +1692,7 @@ Undo=Geri Al Unhandled\ type\ {0}\ in\ context\ key\ {1}=Ba\u011flam (context) anahtar\u0131 {1}'de i\u015flenemeyen {0} tipi #: ../../../../../app//src/processing/app/Editor.java:2818 -!Unknown\ board= +Unknown\ board=Bilinmeyen kart #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format @@ -1815,7 +1872,7 @@ You\ cannot\ save\ the\ sketch\ into\ a\ folder\ninside\ itself.\ This\ would\ g You\ forgot\ your\ sketchbook=Taslak defterinizi unuttunuz #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:252 -!You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.= +You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.=Kaydedilmemi\u015f de\u011fi\u015fiklikleriniz mevcut\!\nBu se\u00e7ene\u011fi etkinle\u015ftirmek i\u00e7in t\u00fcm taslaklar\u0131n\u0131z\u0131 kaydetmelisiniz. #: ../../../processing/app/AbstractMonitor.java:92 You've\ pressed\ {0}\ but\ nothing\ was\ sent.\ Should\ you\ select\ a\ line\ ending?={0} e bast\u0131n\u0131z ama hi\u00e7bir\u015fey g\u00f6nderilmedi. Sat\u0131r sonu karakteri eklemeniz gerekiyor olabilir. @@ -1889,6 +1946,11 @@ ignoring\ invalid\ font\ size\ {0}=ge\u00e7ersiz font boyutu {0} yok say\u0131ld #: Editor.java:936 Editor.java:943 name\ is\ null=name de\u011feri bo\u015f +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}={0} i\u00e7inde Header dosyas\u0131 (.h) bulunamad\u0131 + #: Editor.java:932 serialMenu\ is\ null=serialMenu de\u011feri bo\u015f @@ -1956,10 +2018,6 @@ version\ {0}=versiyon {0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: Ge\u00e7ersiz bir devre kart\u0131 ad\u0131d\u0131r, "package\:arch\:board" veya "package\:arch\:board\:options" \u015feklinde olmal\u0131d\u0131r. -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: {2} kart\u0131 i\u00e7in bilinmeyen {1} se\u00e7ene\u011fi - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: {1} kart\u0131 i\u00e7in ge\u00e7ersiz se\u00e7enek @@ -1968,6 +2026,10 @@ version\ {0}=versiyon {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: Ge\u00e7ersiz se\u00e7enek. isim\=deger \u015feklinde olmal\u0131d\u0131r. +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: Bilinmeyen mimari diff --git a/arduino-core/src/processing/app/i18n/Resources_tzl.po b/arduino-core/src/processing/app/i18n/Resources_tzl.po index ba8e9a82dc9..b5097ce8571 100644 --- a/arduino-core/src/processing/app/i18n/Resources_tzl.po +++ b/arduino-core/src/processing/app/i18n/Resources_tzl.po @@ -17,6 +17,9 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Marcel Machado , 2015 # Robin van der Vliet , 2015 msgid "" @@ -24,7 +27,7 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: Talossan (http://www.transifex.com/mbanzi/arduino-ide-15/language/tzl/)\n" "MIME-Version: 1.0\n" @@ -623,6 +626,11 @@ msgstr "" msgid "Could not replace {0}" msgstr "" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "" @@ -678,6 +686,10 @@ msgstr "" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "" @@ -853,6 +865,11 @@ msgstr "" msgid "Error inside Serial.{0}()" msgstr "" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -872,6 +889,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "" @@ -906,6 +942,10 @@ msgstr "" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -942,10 +982,6 @@ msgstr "" msgid "Estonian" msgstr "" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "" - #: Editor.java:516 msgid "Examples" msgstr "Exampais" @@ -1149,8 +1185,8 @@ msgstr "" msgid "Ignore Case" msgstr "" -#: Base.java:1058 -msgid "Ignoring bad library name" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" msgstr "" #: Base.java:1436 @@ -1214,9 +1250,9 @@ msgstr "" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1243,6 +1279,17 @@ msgstr "" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "Talian" @@ -1275,9 +1322,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1695,9 +1742,9 @@ msgstr "Referencéu" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1734,6 +1781,10 @@ msgstr "" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "Romaniesc" @@ -1857,11 +1908,14 @@ msgid "" " Serial Port menu?" msgstr "" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" +msgid "Serial port {0} not found." msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 @@ -1885,6 +1939,10 @@ msgstr "" msgid "Show Sketch Folder" msgstr "" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "" @@ -2056,6 +2114,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2101,10 +2167,11 @@ msgid "" "but anything besides the code will be lost." msgstr "" -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2122,6 +2189,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2614,6 +2685,12 @@ msgstr "" msgid "name is null" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "" @@ -2701,11 +2778,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2716,6 +2788,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_tzl.properties b/arduino-core/src/processing/app/i18n/Resources_tzl.properties index a1942293b9d..4b3da6435ad 100644 --- a/arduino-core/src/processing/app/i18n/Resources_tzl.properties +++ b/arduino-core/src/processing/app/i18n/Resources_tzl.properties @@ -17,9 +17,12 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Marcel Machado , 2015 # Robin van der Vliet , 2015 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Talossan (http\://www.transifex.com/mbanzi/arduino-ide-15/language/tzl/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: tzl\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Talossan (http\://www.transifex.com/mbanzi/arduino-ide-15/language/tzl/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: tzl\nPlural-Forms\: nplurals\=2; plural\=(n \!\= 1);\n #: Preferences.java:358 Preferences.java:374 !\ \ (requires\ restart\ of\ Arduino)= @@ -442,6 +445,10 @@ Chinese\ (Taiwan)\ (Big5)=Cinesch (Taivan) (Big5) #, java-format !Could\ not\ replace\ {0}= +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 !Couldn't\ archive\ sketch= @@ -481,6 +488,9 @@ Danish\ (Denmark)=Danois (Danmarc) #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 !Delete= @@ -612,6 +622,10 @@ English\ (United\ Kingdom)=Angleasca (Regip\u00e4ts Viensi\u00e7at) #, java-format !Error\ inside\ Serial.{0}()= +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -626,6 +640,18 @@ English\ (United\ Kingdom)=Angleasca (Regip\u00e4ts Viensi\u00e7at) #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 !Error\ reading\ preferences= @@ -651,6 +677,9 @@ English\ (United\ Kingdom)=Angleasca (Regip\u00e4ts Viensi\u00e7at) #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -679,9 +708,6 @@ English\ (United\ Kingdom)=Angleasca (Regip\u00e4ts Viensi\u00e7at) #: Preferences.java:93 !Estonian= -#: ../../../processing/app/Preferences.java:146 -!Estonian\ (Estonia)= - #: Editor.java:516 Examples=Exampais @@ -832,8 +858,8 @@ Hungarian=M\u00e1xhar #: FindReplace.java:96 !Ignore\ Case= -#: Base.java:1058 -!Ignoring\ bad\ library\ name= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 !Ignoring\ sketch\ with\ bad\ name= @@ -877,9 +903,9 @@ Hungarian=M\u00e1xhar #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -900,6 +926,15 @@ Hungarian=M\u00e1xhar #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=Talian @@ -924,9 +959,9 @@ Latvian=Latvian #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -1239,9 +1274,9 @@ Reference=Referenc\u00e9u #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1269,6 +1304,9 @@ Replace\ All=Rempla\u00e7arh toct #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=Romaniesc @@ -1360,9 +1398,13 @@ Send=Envoxhiarh #, java-format !Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?= -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -!Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?= +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1380,6 +1422,9 @@ Send=Envoxhiarh #: Editor.java:641 !Show\ Sketch\ Folder= +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 !Show\ verbose\ output\ during\:\ = @@ -1499,6 +1544,10 @@ Tamil=Tamul #, java-format !The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format !The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)= @@ -1523,8 +1572,8 @@ Tamil=Tamul #: Sketch.java:1755 !The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.= -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 !The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.= @@ -1532,6 +1581,9 @@ Tamil=Tamul #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1866,6 +1918,11 @@ http\://www.arduino.cc/latest.txt=http\://www.arduino.cc/latest.txt #: Editor.java:936 Editor.java:943 !name\ is\ null= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 !serialMenu\ is\ null= @@ -1933,10 +1990,6 @@ http\://www.arduino.cc/latest.txt=http\://www.arduino.cc/latest.txt #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1945,6 +1998,10 @@ http\://www.arduino.cc/latest.txt=http\://www.arduino.cc/latest.txt #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_uk.po b/arduino-core/src/processing/app/i18n/Resources_uk.po index e5a6465d2f4..02404d7abe6 100644 --- a/arduino-core/src/processing/app/i18n/Resources_uk.po +++ b/arduino-core/src/processing/app/i18n/Resources_uk.po @@ -17,17 +17,21 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Cristian Maglie , 2016 # netavek , 2015 -# ReAlUA , 2017 +# ReAlUA , 2017,2019 # Volodymyr Buberenko , 2016 +# Олена Бурд , 2018 # Jan Maslov , 2015 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-20 19:59+0000\n" +"PO-Revision-Date: 2019-02-27 18:43+0000\n" "Last-Translator: ReAlUA \n" "Language-Team: Ukrainian (http://www.transifex.com/mbanzi/arduino-ide-15/language/uk/)\n" "MIME-Version: 1.0\n" @@ -626,6 +630,11 @@ msgstr "Не вдалося видалити стару версію {0}" msgid "Could not replace {0}" msgstr "Не вдалося замінити {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Неможливо записати файл налаштувань: {0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Не вдалося заархівувати скетч" @@ -681,6 +690,10 @@ msgstr "Зменшити відступ" msgid "Default" msgstr "За умовчанням" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Тема за замовчуванням" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Видалити" @@ -856,6 +869,11 @@ msgstr "Проблема при зверненні до теки з даними msgid "Error inside Serial.{0}()" msgstr "Помилка в Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Помилка завантаження теми {0}: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -875,6 +893,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "Помилка відкривання послідовного порту «{0}». Спробуйте знайти відповідь у документації http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Помилка аналізу індексу бібліотеки: {0}\nСпробуйте застосувати Менеджер бібліотек для оновлення індексу." + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Помилка при зчитуванні індексу бібліотеки {0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Помилка при зчитуванні теки індексів пакунку: {0}\n(можливо, відсутні дозволи?)" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Помилка читання налаштувань" @@ -909,6 +946,10 @@ msgstr "Помилка запису завантажувача." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Помилка запису завантажувача: відсутній конфігураційний параметр «{0}»" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Помилка запису завантажувача: будь-ласка, оберіть послідовний порт." + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Помилка компіляції: відсутній конфігураційний параметр «{0}»" @@ -945,10 +986,6 @@ msgstr "Помилка перевірки/вивантаження" msgid "Estonian" msgstr "естонська" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "естонська (Естонія)" - #: Editor.java:516 msgid "Examples" msgstr "Приклади" @@ -1152,9 +1189,9 @@ msgstr "НЕСУМІСНЕ" msgid "Ignore Case" msgstr "Ігнорувати регістр" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Ігнорую бібліотеку з неприпустимим іменем" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "Бібліотека з поганою назвою відхилена" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1217,10 +1254,10 @@ msgstr "Встановлено" msgid "Installing boards..." msgstr "Встановлення плат..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "Встановлення бібліотеки: {0}" +msgid "Installing library: {0}:{1}" +msgstr "Бібліотека встановлена: {0}:{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1246,6 +1283,17 @@ msgstr "Недійсна бібліотека знаходиться в {0}: {1} msgid "Invalid quoting: no closing [{0}] char found." msgstr "Невірні лапки: відсутній кінцевий символ [{0}]." +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Неприпустима версія '{0}' для бібліотеки: {1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Невірна версія {0}" + #: Preferences.java:102 msgid "Italian" msgstr "італійська" @@ -1278,10 +1326,10 @@ msgstr "Бібліотеку додано до ваших бібліотек. П msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "Бібліотека не може мати одночасно теки 'src' та 'utility'. Перевірте {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "Бібліотеку вже встановлено: {0} версія {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "Бібліотека вже встановлена: {0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1698,10 +1746,10 @@ msgstr "Зміст" msgid "Remove" msgstr "Видалити" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "Видаляється бібліотека: {0}" +msgid "Removing library: {0}:{1}" +msgstr "Бібліотека видалена: {0}:{1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1737,6 +1785,10 @@ msgstr "Замінити на:" msgid "Retired" msgstr "Застарілі" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Повторити завантаження, використовуючи інший послідовний порт?" + #: Preferences.java:113 msgid "Romanian" msgstr "румунська" @@ -1860,12 +1912,15 @@ msgid "" " Serial Port menu?" msgstr "Послідовний порт «{0}» не знайдено. Ви вибрали потрібний із меню Сервіс > Послідовний порт?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "Не обрано послідовний порт." + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Послідовний порт {0} не знайдено.\nПовторити вивантаження з іншого послідовного порту?" +msgid "Serial port {0} not found." +msgstr "Послідовний порт {0} не знайдено." #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1888,6 +1943,10 @@ msgstr "Питання, пов’язані із налаштуваннями" msgid "Show Sketch Folder" msgstr "Показати теку скетчів" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Показати позначки часу" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Показати докладний звіт при:" @@ -2059,6 +2118,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "Файл «{0}» має бути всередині\nтеки скетчу з іменем «{1}».\nСтворити цю теку, перемістити файл і продовжити?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Бібліотека \"{0}\" не може бути використана. \nІмена папок у бібліотеках повинні починатися з літери або цифри, а за ними слідують літери, цифри, тире, крапка та підкреслення. \nМаксимальна довжина 63 символів." + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2104,11 +2171,12 @@ msgid "" "but anything besides the code will be lost." msgstr "Не вдається знайти теку скетчу.\nБуде виконана спроба перезберегти його в тому ж місці,\nале все, крім коду, буде втрачено." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "Ім'я скетчу потрібно змінити. Імена можуть містити лише\nсимволи ASCII та цифри (але не можуть починатися із цифр).\nДовжина має бути меншою за 64 символи." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Назва скетчу повинна бути змінена. \nНазва скетчу повинна починатися з літери або цифри, за якими слідують літери, цифри, тире, крапки та підкреслення. \nМаксимальна довжина 63 символів." #: Base.java:259 msgid "" @@ -2125,6 +2193,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "Вибрана тека для скетчів містить вашу копію IDE.\nБудь-ласка, виберіть іншу теку для скетчів ." +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Тема:" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2617,6 +2689,12 @@ msgstr "ігнорування некоректного розміру шриф msgid "name is null" msgstr "немає імені" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "В {0} відсутні файли заголовків (.h)" + #: Editor.java:932 msgid "serialMenu is null" msgstr "Меню послідовного порту пусте" @@ -2704,11 +2782,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: Хибна назва плати, має бути у формі «package:arch:board» або «package:arch:board:options»" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: Хибне налаштування для опції «{1}» плати «{2}»" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2719,6 +2792,11 @@ msgstr "{0}: Хибне налаштування для плати «{1}»" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: Хибне налаштування, має бути у формі «name=value»" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: Невірне значення параметра \"{1}\" для плати \"{2}\"" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_uk.properties b/arduino-core/src/processing/app/i18n/Resources_uk.properties index 4a1df158a38..ac4eba0e64c 100644 --- a/arduino-core/src/processing/app/i18n/Resources_uk.properties +++ b/arduino-core/src/processing/app/i18n/Resources_uk.properties @@ -17,12 +17,16 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Cristian Maglie , 2016 # netavek , 2015 -# ReAlUA , 2017 +# ReAlUA , 2017,2019 # Volodymyr Buberenko , 2016 +# \u041e\u043b\u0435\u043d\u0430 \u0411\u0443\u0440\u0434 , 2018 # Jan Maslov , 2015 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-20 19\:59+0000\nLast-Translator\: ReAlUA \nLanguage-Team\: Ukrainian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/uk/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: uk\nPlural-Forms\: nplurals\=4; plural\=(n % 1 \=\= 0 && n % 10 \=\= 1 && n % 100 \!\= 11 ? 0 \: n % 1 \=\= 0 && n % 10 >\= 2 && n % 10 <\= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 \: n % 1 \=\= 0 && (n % 10 \=\=0 || (n % 10 >\=5 && n % 10 <\=9) || (n % 100 >\=11 && n % 100 <\=14 )) ? 2\: 3);\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2019-02-27 18\:43+0000\nLast-Translator\: ReAlUA \nLanguage-Team\: Ukrainian (http\://www.transifex.com/mbanzi/arduino-ide-15/language/uk/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: uk\nPlural-Forms\: nplurals\=4; plural\=(n % 1 \=\= 0 && n % 10 \=\= 1 && n % 100 \!\= 11 ? 0 \: n % 1 \=\= 0 && n % 10 >\= 2 && n % 10 <\= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 \: n % 1 \=\= 0 && (n % 10 \=\=0 || (n % 10 >\=5 && n % 10 <\=9) || (n % 100 >\=11 && n % 100 <\=14 )) ? 2\: 3);\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\ (\u0432\u0438\u043c\u0430\u0433\u0430\u0454 \u043f\u0435\u0440\u0435\u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f Arduino) @@ -445,6 +449,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=\u041d\u0435 \u0432\u0434\u0430\u043b\ #, java-format Could\ not\ replace\ {0}=\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0437\u0430\u043c\u0456\u043d\u0438\u0442\u0438 {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=\u041d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u0438 \u0444\u0430\u0439\u043b \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u044c\: {0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0437\u0430\u0430\u0440\u0445\u0456\u0432\u0443\u0432\u0430\u0442\u0438 \u0441\u043a\u0435\u0442\u0447 @@ -484,6 +492,9 @@ Decrease\ Indent=\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438 \u0432\u0456\u #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=\u0417\u0430 \u0443\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f\u043c +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=\u0422\u0435\u043c\u0430 \u0437\u0430 \u0437\u0430\u043c\u043e\u0432\u0447\u0443\u0432\u0430\u043d\u043d\u044f\u043c + #: EditorHeader.java:314 Sketch.java:591 Delete=\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 @@ -615,6 +626,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=\u041f\u0440\u043e\u0431\u043b\u0435 #, java-format Error\ inside\ Serial.{0}()=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0432 Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f \u0442\u0435\u043c\u0438 {0}\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -629,6 +644,18 @@ Error\ opening\ serial\ port\ ''{0}''.=\u041f\u043e\u043c\u0438\u043b\u043a\u043 #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0432\u0456\u0434\u043a\u0440\u0438\u0432\u0430\u043d\u043d\u044f \u043f\u043e\u0441\u043b\u0456\u0434\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0443 \u00ab{0}\u00bb. \u0421\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u043d\u0430\u0439\u0442\u0438 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u044c \u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0456\u0457 http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0430\u043d\u0430\u043b\u0456\u0437\u0443 \u0456\u043d\u0434\u0435\u043a\u0441\u0443 \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0438\: {0}\n\u0421\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u0430\u0441\u0442\u043e\u0441\u0443\u0432\u0430\u0442\u0438 \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a \u0434\u043b\u044f \u043e\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0456\u043d\u0434\u0435\u043a\u0441\u0443. + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u043f\u0440\u0438 \u0437\u0447\u0438\u0442\u0443\u0432\u0430\u043d\u043d\u0456 \u0456\u043d\u0434\u0435\u043a\u0441\u0443 \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0438 {0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u043f\u0440\u0438 \u0437\u0447\u0438\u0442\u0443\u0432\u0430\u043d\u043d\u0456 \u0442\u0435\u043a\u0438 \u0456\u043d\u0434\u0435\u043a\u0441\u0456\u0432 \u043f\u0430\u043a\u0443\u043d\u043a\u0443\: {0}\n(\u043c\u043e\u0436\u043b\u0438\u0432\u043e, \u0432\u0456\u0434\u0441\u0443\u0442\u043d\u0456 \u0434\u043e\u0437\u0432\u043e\u043b\u0438?) + #: Preferences.java:277 Error\ reading\ preferences=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0447\u0438\u0442\u0430\u043d\u043d\u044f \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u044c @@ -654,6 +681,9 @@ Error\ while\ burning\ bootloader.=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0437\u0430\u043f\u0438\u0441\u0443 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0443\u0432\u0430\u0447\u0430\: \u0432\u0456\u0434\u0441\u0443\u0442\u043d\u0456\u0439 \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0439\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u00ab{0}\u00bb +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0437\u0430\u043f\u0438\u0441\u0443 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0443\u0432\u0430\u0447\u0430\: \u0431\u0443\u0434\u044c-\u043b\u0430\u0441\u043a\u0430, \u043e\u0431\u0435\u0440\u0456\u0442\u044c \u043f\u043e\u0441\u043b\u0456\u0434\u043e\u0432\u043d\u0438\u0439 \u043f\u043e\u0440\u0442. + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u043a\u043e\u043c\u043f\u0456\u043b\u044f\u0446\u0456\u0457\: \u0432\u0456\u0434\u0441\u0443\u0442\u043d\u0456\u0439 \u043a\u043e\u043d\u0444\u0456\u0433\u0443\u0440\u0430\u0446\u0456\u0439\u043d\u0438\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 \u00ab{0}\u00bb @@ -682,9 +712,6 @@ Error\ while\ verifying/uploading=\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u0 #: Preferences.java:93 Estonian=\u0435\u0441\u0442\u043e\u043d\u0441\u044c\u043a\u0430 -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=\u0435\u0441\u0442\u043e\u043d\u0441\u044c\u043a\u0430 (\u0415\u0441\u0442\u043e\u043d\u0456\u044f) - #: Editor.java:516 Examples=\u041f\u0440\u0438\u043a\u043b\u0430\u0434\u0438 @@ -835,8 +862,8 @@ INCOMPATIBLE=\u041d\u0415\u0421\u0423\u041c\u0406\u0421\u041d\u0415 #: FindReplace.java:96 Ignore\ Case=\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438 \u0440\u0435\u0433\u0456\u0441\u0442\u0440 -#: Base.java:1058 -Ignoring\ bad\ library\ name=\u0406\u0433\u043d\u043e\u0440\u0443\u044e \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0443 \u0437 \u043d\u0435\u043f\u0440\u0438\u043f\u0443\u0441\u0442\u0438\u043c\u0438\u043c \u0456\u043c\u0435\u043d\u0435\u043c +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=\u0411\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0430 \u0437 \u043f\u043e\u0433\u0430\u043d\u043e\u044e \u043d\u0430\u0437\u0432\u043e\u044e \u0432\u0456\u0434\u0445\u0438\u043b\u0435\u043d\u0430 #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=\u0406\u0433\u043d\u043e\u0440\u0443\u044e \u0441\u043a\u0435\u0442\u0447 \u0437 \u043d\u0435\u043f\u0440\u0438\u043f\u0443\u0441\u0442\u0438\u043c\u0438\u043c \u0456\u043c\u0435\u043d\u0435\u043c @@ -880,9 +907,9 @@ Installed=\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u043f\u043b\u0430\u0442... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=\u0412\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0438\: {0} +Installing\ library\:\ {0}\:{1}=\u0411\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0430 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430\: {0}\:{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -903,6 +930,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=\u041d\u0435\u0434\u0456\u0439\u0441\u04 #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=\u041d\u0435\u0432\u0456\u0440\u043d\u0456 \u043b\u0430\u043f\u043a\u0438\: \u0432\u0456\u0434\u0441\u0443\u0442\u043d\u0456\u0439 \u043a\u0456\u043d\u0446\u0435\u0432\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b [{0}]. +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=\u041d\u0435\u043f\u0440\u0438\u043f\u0443\u0441\u0442\u0438\u043c\u0430 \u0432\u0435\u0440\u0441\u0456\u044f '{0}' \u0434\u043b\u044f \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0438\: {1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=\u041d\u0435\u0432\u0456\u0440\u043d\u0430 \u0432\u0435\u0440\u0441\u0456\u044f {0} + #: Preferences.java:102 Italian=\u0456\u0442\u0430\u043b\u0456\u0439\u0441\u044c\u043a\u0430 @@ -927,9 +963,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=\u0411\u04 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=\u0411\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435 \u043c\u0430\u0442\u0438 \u043e\u0434\u043d\u043e\u0447\u0430\u0441\u043d\u043e \u0442\u0435\u043a\u0438 'src' \u0442\u0430 'utility'. \u041f\u0435\u0440\u0435\u0432\u0456\u0440\u0442\u0435 {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=\u0411\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0443 \u0432\u0436\u0435 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e\: {0} \u0432\u0435\u0440\u0441\u0456\u044f {1} +Library\ is\ already\ installed\:\ {0}\:{1}=\u0411\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0430 \u0432\u0436\u0435 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430\: {0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=\u041d\u043e\u043c\u0435\u0440 \u0440\u044f\u0434\u043a\u0430\: @@ -1242,9 +1278,9 @@ Reference=\u0417\u043c\u0456\u0441\u0442 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=\u0412\u0438\u0434\u0430\u043b\u044f\u0454\u0442\u044c\u0441\u044f \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0430\: {0} +Removing\ library\:\ {0}\:{1}=\u0411\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0430 \u0432\u0438\u0434\u0430\u043b\u0435\u043d\u0430\: {0}\:{1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1272,6 +1308,9 @@ Replace\ with\:=\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u043d\u0430\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=\u0417\u0430\u0441\u0442\u0430\u0440\u0456\u043b\u0456 +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0438 \u0437\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f, \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0447\u0438 \u0456\u043d\u0448\u0438\u0439 \u043f\u043e\u0441\u043b\u0456\u0434\u043e\u0432\u043d\u0438\u0439 \u043f\u043e\u0440\u0442? + #: Preferences.java:113 Romanian=\u0440\u0443\u043c\u0443\u043d\u0441\u044c\u043a\u0430 @@ -1363,9 +1402,13 @@ Serial\ monitor\ not\ available\ while\ plotter\ is\ open=\u041c\u043e\u043d\u04 #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=\u041f\u043e\u0441\u043b\u0456\u0434\u043e\u0432\u043d\u0438\u0439 \u043f\u043e\u0440\u0442 \u00ab{0}\u00bb \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e. \u0412\u0438 \u0432\u0438\u0431\u0440\u0430\u043b\u0438 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u0438\u0439 \u0456\u0437 \u043c\u0435\u043d\u044e \u0421\u0435\u0440\u0432\u0456\u0441 > \u041f\u043e\u0441\u043b\u0456\u0434\u043e\u0432\u043d\u0438\u0439 \u043f\u043e\u0440\u0442? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=\u041d\u0435 \u043e\u0431\u0440\u0430\u043d\u043e \u043f\u043e\u0441\u043b\u0456\u0434\u043e\u0432\u043d\u0438\u0439 \u043f\u043e\u0440\u0442. + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=\u041f\u043e\u0441\u043b\u0456\u0434\u043e\u0432\u043d\u0438\u0439 \u043f\u043e\u0440\u0442 {0} \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e.\n\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0438 \u0432\u0438\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f \u0437 \u0456\u043d\u0448\u043e\u0433\u043e \u043f\u043e\u0441\u043b\u0456\u0434\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0443? +Serial\ port\ {0}\ not\ found.=\u041f\u043e\u0441\u043b\u0456\u0434\u043e\u0432\u043d\u0438\u0439 \u043f\u043e\u0440\u0442 {0} \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e. #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=\u041f\u043e\u0441\u043b\u0456\u0434\u043e\u0432\u043d\u0456 \u043f\u043e\u0440\u0442\u0438 @@ -1383,6 +1426,9 @@ Settings\ issues=\u041f\u0438\u0442\u0430\u043d\u043d\u044f, \u043f\u043e\u0432\ #: Editor.java:641 Show\ Sketch\ Folder=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u0442\u0435\u043a\u0443 \u0441\u043a\u0435\u0442\u0447\u0456\u0432 +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u043f\u043e\u0437\u043d\u0430\u0447\u043a\u0438 \u0447\u0430\u0441\u0443 + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u0434\u043e\u043a\u043b\u0430\u0434\u043d\u0438\u0439 \u0437\u0432\u0456\u0442 \u043f\u0440\u0438\: @@ -1502,6 +1548,10 @@ The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=\u0424\u0430\u0439\u043b \u00ab{0}\u00bb \u043c\u0430\u0454 \u0431\u0443\u0442\u0438 \u0432\u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0456\n\u0442\u0435\u043a\u0438 \u0441\u043a\u0435\u0442\u0447\u0443 \u0437 \u0456\u043c\u0435\u043d\u0435\u043c \u00ab{1}\u00bb.\n\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438 \u0446\u044e \u0442\u0435\u043a\u0443, \u043f\u0435\u0440\u0435\u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u0444\u0430\u0439\u043b \u0456 \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=\u0411\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0430 "{0}" \u043d\u0435 \u043c\u043e\u0436\u0435 \u0431\u0443\u0442\u0438 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u0430. \n\u0406\u043c\u0435\u043d\u0430 \u043f\u0430\u043f\u043e\u043a \u0443 \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0430\u0445 \u043f\u043e\u0432\u0438\u043d\u043d\u0456 \u043f\u043e\u0447\u0438\u043d\u0430\u0442\u0438\u0441\u044f \u0437 \u043b\u0456\u0442\u0435\u0440\u0438 \u0430\u0431\u043e \u0446\u0438\u0444\u0440\u0438, \u0430 \u0437\u0430 \u043d\u0438\u043c\u0438 \u0441\u043b\u0456\u0434\u0443\u044e\u0442\u044c \u043b\u0456\u0442\u0435\u0440\u0438, \u0446\u0438\u0444\u0440\u0438, \u0442\u0438\u0440\u0435, \u043a\u0440\u0430\u043f\u043a\u0430 \u0442\u0430 \u043f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u043d\u044f. \n\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430 \u0434\u043e\u0432\u0436\u0438\u043d\u0430 63 \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432. + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=\u0411\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0430 \u00ab{0}\u00bb \u043d\u0435 \u043c\u043e\u0436\u0435 \u0431\u0443\u0442\u0438 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u0430.\n\u0406\u043c\u0435\u043d\u0430 \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a \u043f\u043e\u0432\u0438\u043d\u043d\u0456 \u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u043b\u0438\u0448\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u0456 \u043b\u0456\u0442\u0435\u0440\u0438 \u0456 \u0446\u0438\u0444\u0440\u0438.\n(\u041b\u0438\u0448\u0435 ASCII, \u0431\u0435\u0437 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0456\u0432, \u043d\u0435 \u043c\u043e\u0436\u0443\u0442\u044c \u043f\u043e\u0447\u0438\u043d\u0430\u0442\u0438\u0441\u044f \u0437 \u0446\u0438\u0444\u0440\u0438) @@ -1526,8 +1576,8 @@ The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=\u0421\u043a\u0435\u0442\u #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=\u041d\u0435 \u0432\u0434\u0430\u0454\u0442\u044c\u0441\u044f \u0437\u043d\u0430\u0439\u0442\u0438 \u0442\u0435\u043a\u0443 \u0441\u043a\u0435\u0442\u0447\u0443.\n\u0411\u0443\u0434\u0435 \u0432\u0438\u043a\u043e\u043d\u0430\u043d\u0430 \u0441\u043f\u0440\u043e\u0431\u0430 \u043f\u0435\u0440\u0435\u0437\u0431\u0435\u0440\u0435\u0433\u0442\u0438 \u0439\u043e\u0433\u043e \u0432 \u0442\u043e\u043c\u0443 \u0436 \u043c\u0456\u0441\u0446\u0456,\n\u0430\u043b\u0435 \u0432\u0441\u0435, \u043a\u0440\u0456\u043c \u043a\u043e\u0434\u0443, \u0431\u0443\u0434\u0435 \u0432\u0442\u0440\u0430\u0447\u0435\u043d\u043e. -#: ../../../../../app/src/processing/app/SketchController.java:828 -The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.=\u0406\u043c'\u044f \u0441\u043a\u0435\u0442\u0447\u0443 \u043f\u043e\u0442\u0440\u0456\u0431\u043d\u043e \u0437\u043c\u0456\u043d\u0438\u0442\u0438. \u0406\u043c\u0435\u043d\u0430 \u043c\u043e\u0436\u0443\u0442\u044c \u043c\u0456\u0441\u0442\u0438\u0442\u0438 \u043b\u0438\u0448\u0435\n\u0441\u0438\u043c\u0432\u043e\u043b\u0438 ASCII \u0442\u0430 \u0446\u0438\u0444\u0440\u0438 (\u0430\u043b\u0435 \u043d\u0435 \u043c\u043e\u0436\u0443\u0442\u044c \u043f\u043e\u0447\u0438\u043d\u0430\u0442\u0438\u0441\u044f \u0456\u0437 \u0446\u0438\u0444\u0440).\n\u0414\u043e\u0432\u0436\u0438\u043d\u0430 \u043c\u0430\u0454 \u0431\u0443\u0442\u0438 \u043c\u0435\u043d\u0448\u043e\u044e \u0437\u0430 64 \u0441\u0438\u043c\u0432\u043e\u043b\u0438. +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=\u041d\u0430\u0437\u0432\u0430 \u0441\u043a\u0435\u0442\u0447\u0443 \u043f\u043e\u0432\u0438\u043d\u043d\u0430 \u0431\u0443\u0442\u0438 \u0437\u043c\u0456\u043d\u0435\u043d\u0430. \n\u041d\u0430\u0437\u0432\u0430 \u0441\u043a\u0435\u0442\u0447\u0443 \u043f\u043e\u0432\u0438\u043d\u043d\u0430 \u043f\u043e\u0447\u0438\u043d\u0430\u0442\u0438\u0441\u044f \u0437 \u043b\u0456\u0442\u0435\u0440\u0438 \u0430\u0431\u043e \u0446\u0438\u0444\u0440\u0438, \u0437\u0430 \u044f\u043a\u0438\u043c\u0438 \u0441\u043b\u0456\u0434\u0443\u044e\u0442\u044c \u043b\u0456\u0442\u0435\u0440\u0438, \u0446\u0438\u0444\u0440\u0438, \u0442\u0438\u0440\u0435, \u043a\u0440\u0430\u043f\u043a\u0438 \u0442\u0430 \u043f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u043d\u044f. \n\u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430 \u0434\u043e\u0432\u0436\u0438\u043d\u0430 63 \u0441\u0438\u043c\u0432\u043e\u043b\u0456\u0432. #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=\u0422\u0435\u043a\u0430 \u0437\u0456 \u0441\u043a\u0435\u0442\u0447\u0430\u043c\u0438 \u0431\u0456\u043b\u044c\u0448\u0435 \u043d\u0435 \u0456\u0441\u043d\u0443\u0454.\nArduino \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u0442\u0435\u043a\u0443 \u0437\u0430 \u0443\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f\u043c,\n\u0441\u0442\u0432\u043e\u0440\u0438\u0432\u0448\u0438 \u0457\u0457 \u0437\u0430 \u043d\u0435\u043e\u0431\u0445\u0456\u0434\u043d\u043e\u0441\u0442\u0456. \u0410 \u043f\u043e\u0442\u0456\u043c Arduino\n\u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0438 \u043f\u0440\u043e \u0441\u0435\u0431\u0435 \u0432 \u0442\u0440\u0435\u0442\u0456\u0439 \u043e\u0441\u043e\u0431\u0456. @@ -1535,6 +1585,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=\u0412\u0438\u0431\u0440\u0430\u043d\u0430 \u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0441\u043a\u0435\u0442\u0447\u0456\u0432 \u043c\u0456\u0441\u0442\u0438\u0442\u044c \u0432\u0430\u0448\u0443 \u043a\u043e\u043f\u0456\u044e IDE.\n\u0411\u0443\u0434\u044c-\u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0456\u043d\u0448\u0443 \u0442\u0435\u043a\u0443 \u0434\u043b\u044f \u0441\u043a\u0435\u0442\u0447\u0456\u0432 . +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =\u0422\u0435\u043c\u0430\: + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=\u0426\u044f \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a\u0430 \u0432\u0456\u0434\u0441\u0443\u0442\u043d\u044f \u0432 \u041c\u0435\u043d\u0435\u0434\u0436\u0435\u0440\u0456 \u0431\u0456\u0431\u043b\u0456\u043e\u0442\u0435\u043a. \u0407\u0457 \u043d\u0435\u043c\u043e\u0436\u043b\u0438\u0432\u043e \u0431\u0443\u0434\u0435 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0438 \u0437\u043d\u043e\u0432\u0443.\n\u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0445\u043e\u0447\u0435\u0442\u0435 \u0432\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0457\u0457? @@ -1869,6 +1922,11 @@ ignoring\ invalid\ font\ size\ {0}=\u0456\u0433\u043d\u043e\u0440\u0443\u0432\u0 #: Editor.java:936 Editor.java:943 name\ is\ null=\u043d\u0435\u043c\u0430\u0454 \u0456\u043c\u0435\u043d\u0456 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=\u0412 {0} \u0432\u0456\u0434\u0441\u0443\u0442\u043d\u0456 \u0444\u0430\u0439\u043b\u0438 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0456\u0432 (.h) + #: Editor.java:932 serialMenu\ is\ null=\u041c\u0435\u043d\u044e \u043f\u043e\u0441\u043b\u0456\u0434\u043e\u0432\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u0442\u0443 \u043f\u0443\u0441\u0442\u0435 @@ -1936,10 +1994,6 @@ version\ {0}=\u0432\u0435\u0440\u0441\u0456\u044f {0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: \u0425\u0438\u0431\u043d\u0430 \u043d\u0430\u0437\u0432\u0430 \u043f\u043b\u0430\u0442\u0438, \u043c\u0430\u0454 \u0431\u0443\u0442\u0438 \u0443 \u0444\u043e\u0440\u043c\u0456 \u00abpackage\:arch\:board\u00bb \u0430\u0431\u043e \u00abpackage\:arch\:board\:options\u00bb -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: \u0425\u0438\u0431\u043d\u0435 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0434\u043b\u044f \u043e\u043f\u0446\u0456\u0457 \u00ab{1}\u00bb \u043f\u043b\u0430\u0442\u0438 \u00ab{2}\u00bb - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: \u0425\u0438\u0431\u043d\u0435 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0438 \u00ab{1}\u00bb @@ -1948,6 +2002,10 @@ version\ {0}=\u0432\u0435\u0440\u0441\u0456\u044f {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: \u0425\u0438\u0431\u043d\u0435 \u043d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f, \u043c\u0430\u0454 \u0431\u0443\u0442\u0438 \u0443 \u0444\u043e\u0440\u043c\u0456 \u00abname\=value\u00bb +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: \u041d\u0435\u0432\u0456\u0440\u043d\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u043d\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 "{1}" \u0434\u043b\u044f \u043f\u043b\u0430\u0442\u0438 "{2}" + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: \u041d\u0435\u0432\u0456\u0434\u043e\u043c\u0430 \u0430\u0440\u0445\u0456\u0442\u0435\u043a\u0442\u0443\u0440\u0430 diff --git a/arduino-core/src/processing/app/i18n/Resources_vi.po b/arduino-core/src/processing/app/i18n/Resources_vi.po index 0808e7726aa..4044fdc0473 100644 --- a/arduino-core/src/processing/app/i18n/Resources_vi.po +++ b/arduino-core/src/processing/app/i18n/Resources_vi.po @@ -17,18 +17,23 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Anh Phan , 2013 # Anh Phan , 2013 # Bao Phan , 2016 +# Cristian Maglie , 2021 +# dsds adas , 2020-2021 # Anh Phan , 2013 -# Quoc-Bao Nguyen , 2016-2017 +# Quoc-Bao Nguyen , 2016-2017,2020 msgid "" msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" -"Last-Translator: Cristian Maglie \n" +"PO-Revision-Date: 2021-05-07 06:06+0000\n" +"Last-Translator: dsds adas \n" "Language-Team: Vietnamese (http://www.transifex.com/mbanzi/arduino-ide-15/language/vi/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -152,7 +157,7 @@ msgstr "Tiếng Nam Phi" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 msgid "Aggressively cache compiled core" -msgstr "" +msgstr "Chủ động cache core đã biên dịch" #: ../../../processing/app/Preferences.java:96 msgid "Albanian" @@ -218,7 +223,7 @@ msgstr "Đã hủy việc lưu trữ sketch." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format msgid "Archiving built core (caching) in: {0}" -msgstr "" +msgstr "Đang đóng gói lõi đã tạo ( Đang lưu đệm ) tại {0}" #: tools/Archiver.java:75 msgid "" @@ -351,7 +356,7 @@ msgstr "Bo mạch" #: ../../../../../app//src/processing/app/Editor.java:2824 msgid "Board Info" -msgstr "Bo mạch" +msgstr " thông tin về bo mạch" #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 @@ -441,7 +446,7 @@ msgstr "Chỉ có thể đưa vào một trong: {0}" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 msgid "Can't enable external editor" -msgstr "" +msgstr "Không thể mở trình soạn thảo bên ngoài" #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 @@ -487,7 +492,7 @@ msgstr "Chinese (Taiwan) (Big5)" #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 msgid "Clear output" -msgstr "" +msgstr "Xóa output" #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 msgid "Click for a list of unofficial boards support URLs" @@ -626,6 +631,11 @@ msgstr "Không thể loại bỏ phiên bản cũ của {0}" msgid "Could not replace {0}" msgstr "Không thể thay thay thế {0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "Không thể lưu tệp tin tùy biến:{0}" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "Không thể lưu trữ sketch" @@ -671,7 +681,7 @@ msgstr "Dung Lượng Bộ Nhớ" #: ../../../../../app/src/processing/app/Editor.java:1386 msgid "Decrease Font Size" -msgstr "" +msgstr "Giảm kích thước font" #: Editor.java:1224 Editor.java:2765 msgid "Decrease Indent" @@ -681,6 +691,10 @@ msgstr "Giảm khoảng cách" msgid "Default" msgstr "Mặc định" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "Chủ đề mặc định" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "Xóa" @@ -856,6 +870,11 @@ msgstr "Xảy ra lỗi khi tiếp nhận thư mục dữ liệu Arduino" msgid "Error inside Serial.{0}()" msgstr "Lỗi ở bên trong Serial.{0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "Không thể tải chủ đề {0}: {1}" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -875,6 +894,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "Lỗi khi mở cổng serial \"{0}\". Thử tham khảo tài liệu tại http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "Lỗi khi phân tích cú pháp của thư viện:{0}\nThử mở trình quản lý thư viện để cập nhật lại " + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "Lỗi khi đọc cú pháp thư viện:{0}" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "Lỗi khi đọc thư mục cú pháp của gói:{0}\n(có thể là một vấn đề về quyền truy cập ? )" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "Lỗi xảy ra với phần tương tác trong tùy biến" @@ -909,6 +947,10 @@ msgstr "Lỗi khi đang burning bootloader." msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "Lỗi trong khi đang ghi dữ liệu phần nạp khởi động: thiếu thông số cấu hình '{0}'" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "Lỗi khi ghi vào mạch trình nạp khởi động: hãy chọn một cổng giao tiếp" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "Lỗi biên dịch: thiếu tham số '{0}'" @@ -945,10 +987,6 @@ msgstr "Lỗi khi biên dịch/tải lên" msgid "Estonian" msgstr "Estonian" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "Estonian (Estonia)" - #: Editor.java:516 msgid "Examples" msgstr "Ví dụ" @@ -1152,9 +1190,9 @@ msgstr "KHÔNG TƯƠNG THÍCH" msgid "Ignore Case" msgstr "Bỏ qua trường hợp viết hoa" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "Bỏ qua tên thư viện không hợp lệ" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "Bỏ qua thư viện với tên không hợp lệ" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1173,7 +1211,7 @@ msgstr "Trong phiên bản Arduino 1.0, phần định dạng tập tin mặc đ #: ../../../../../app/src/processing/app/Editor.java:778 msgid "Include Library" -msgstr "Thư viện bao gồm" +msgstr "Thêm vào thư viện" #: ../../../processing/app/BaseNoGui.java:768 #: ../../../processing/app/BaseNoGui.java:771 @@ -1182,7 +1220,7 @@ msgstr "Sai thư mục cài đặt IDE" #: ../../../../../app/src/processing/app/Editor.java:1378 msgid "Increase Font Size" -msgstr "" +msgstr "Tăng kích thước font chữ" #: Editor.java:1216 Editor.java:2757 msgid "Increase Indent" @@ -1217,10 +1255,10 @@ msgstr "Đã cài đặt" msgid "Installing boards..." msgstr "Đang cài đặt cho bo..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "Đang cài thư viện: {0}" +msgid "Installing library: {0}:{1}" +msgstr "Đang cài đặt thư viện:{0}:?{1}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1234,7 +1272,7 @@ msgstr "Đang cài đặt..." #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:256 msgid "Interface scale:" -msgstr "" +msgstr "Kích cỡ giao diện:" #: ../../../processing/app/Base.java:1204 #, java-format @@ -1244,7 +1282,18 @@ msgstr "Thư viện không hợp lệ được tìm thấy trong {0}: {1}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:66 #, java-format msgid "Invalid quoting: no closing [{0}] char found." -msgstr "" +msgstr "Cú pháp không đúng: không tìm thấy kí tự kết [{0}]." + +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "Phiên bản không hợp lệ '{0}' cho thư viện ở:{1}" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "Phiên bản không hợp lệ {0}" #: Preferences.java:102 msgid "Italian" @@ -1278,10 +1327,10 @@ msgstr "Thư viện mới đã được thêm vào thư viện hệ thống. Hã msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "Thư viện không thể dùng cả hai thư mục 'src' và 'utility'. Kiểm tra lại {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "Thư viện đã được cài đặt: {0} phiên bản {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "Thư vện đã được cài đặt:{0}:{1}" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1298,7 +1347,7 @@ msgstr "Đang tải cài đặt..." #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 #, java-format msgid "Looking for recipes like {0}*{1}" -msgstr "" +msgstr "Đan tìm những công thức như {0}*{1}" #: ../../../processing/app/Sketch.java:1684 msgid "Low memory available, stability problems may occur." @@ -1352,7 +1401,7 @@ msgstr "Phát hiện nhiều thư viện cho \"{0}\"" #: ../../../processing/app/Base.java:395 msgid "Must specify exactly one sketch file" -msgstr "" +msgstr "Phải cung cấp chính xác một tập tin lập trình" #: Sketch.java:282 msgid "Name for new file:" @@ -1360,7 +1409,7 @@ msgstr "Tên cho tập tin mới:" #: ../../../../../app//src/processing/app/Editor.java:2809 msgid "Native serial port, can't obtain info" -msgstr "" +msgstr "Cổng nối tiếp bên trong, không thể lấy dữ liệu" #: ../../../processing/app/Preferences.java:149 msgid "Nepali" @@ -1490,7 +1539,7 @@ msgstr "Chỉ một tập tin được thêm vào sketch." #: ../../../processing/app/BaseNoGui.java:455 msgid "Only --verify, --upload or --get-pref are supported" -msgstr "" +msgstr "Chỉ hỗ trợ --kiểm tra, --tải lên hoặc -lấy-thông tin cài đặt " #: EditorToolbar.java:41 msgid "Open" @@ -1559,20 +1608,20 @@ msgstr "Nhập địa chỉ SPI từ Sketch > Nhập thư viện ở menu." #: ../../../processing/app/debug/Compiler.java:529 msgid "Please import the Wire library from the Sketch > Import Library menu." -msgstr "" +msgstr "Hãy cài thư viện\"Wire\" từ menu Lập trinh > cài thư viê" #: ../../../../../app//src/processing/app/Editor.java:2799 msgid "Please select a port to obtain board info" -msgstr "" +msgstr "Hãy chọn một cổng giao tiếp để lấy thông tin về bo mạch " #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 msgid "Please select a programmer from Tools->Programmer menu" -msgstr "" +msgstr "Hãy chọn một trình biên soạn lập trình từ menu Công cụ > trình biên soạn lập trình" #: ../../../../../app/src/processing/app/Editor.java:2613 msgid "Plotter not available while serial monitor is open" -msgstr "" +msgstr "Sơ đồ không khả dụng khi giao diện giao tếp đang mở" #: Preferences.java:110 msgid "Polish" @@ -1584,7 +1633,7 @@ msgstr "Cổng kết nối" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:491 msgid "Port number:" -msgstr "" +msgstr "Cổng số:" #: ../../../processing/app/Preferences.java:151 msgid "Portugese" @@ -1604,7 +1653,7 @@ msgstr "Tùy biến" #: ../../../../../app/src/processing/app/Base.java:297 msgid "Preparing boards..." -msgstr "" +msgstr "Đang chuẩn bị các bo mạch..." #: FindReplace.java:123 FindReplace.java:128 msgid "Previous" @@ -1645,7 +1694,7 @@ msgstr "Xảy ra lỗi khi kết nối đến thư mục bảng mạch /www/sd" #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:206 #, java-format msgid "Problem accessing files in folder \"{0}\"" -msgstr "" +msgstr "Sự cố khi truy cập các tệp tin trong thư mục \"{0}\"" #: Base.java:1673 msgid "Problem getting data folder" @@ -1672,7 +1721,7 @@ msgstr "Người lập trình" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:80 #, java-format msgid "Progress {0}" -msgstr "" +msgstr "Quá trinh: {0}" #: Base.java:783 Editor.java:593 msgid "Quit" @@ -1680,11 +1729,11 @@ msgstr "Thoát" #: ../../../../../app/src/processing/app/Base.java:1233 msgid "RETIRED" -msgstr "" +msgstr "KHÔNG CÒN HỖ TRỢ" #: ../../../../../arduino-core/src/processing/app/I18n.java:26 msgid "Recommended" -msgstr "" +msgstr "Được đề xuất" #: Editor.java:1138 Editor.java:1140 Editor.java:1390 msgid "Redo" @@ -1696,17 +1745,17 @@ msgstr "Tham chiếu" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 msgid "Remove" -msgstr "" +msgstr "Xóa" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "" +msgid "Removing library: {0}:{1}" +msgstr "Đang loại bỏ thư viện: {0}:{1}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 msgid "Removing..." -msgstr "" +msgstr "Đang xóa ..." #: EditorHeader.java:300 msgid "Rename" @@ -1735,7 +1784,11 @@ msgstr "Thay thế với:" #: ../../../../../arduino-core/src/processing/app/I18n.java:28 msgid "Retired" -msgstr "" +msgstr "Không còn hỗ trợ" + +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "Thư tải vào bo lại với một cổng khác ?" #: Preferences.java:113 msgid "Romanian" @@ -1744,12 +1797,12 @@ msgstr "Romanian" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:83 #, java-format msgid "Running recipe: {0}" -msgstr "" +msgstr "Đang chạy công thức: {0}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:82 #, java-format msgid "Running: {0}" -msgstr "" +msgstr "Đang chajy: {0}" #: Preferences.java:114 msgid "Russian" @@ -1779,7 +1832,7 @@ msgstr "Lưu thư mục sketch dưới dạng..." #: ../../../../../app/src/processing/app/Preferences.java:425 msgid "Save when verifying or uploading" -msgstr "" +msgstr "Lưu khi kiểm tra hoặc tải lên" #: Editor.java:2270 Editor.java:2308 msgid "Saving..." @@ -1787,7 +1840,7 @@ msgstr "Đang lưu..." #: ../../../processing/app/FindReplace.java:131 msgid "Search all Sketch Tabs" -msgstr "" +msgstr "Tìm mọi thẻ lập trình" #: Base.java:1909 msgid "Select (or create new) folder for sketches..." @@ -1812,7 +1865,7 @@ msgstr "Chọn địa điểm cho sketbook mới" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:237 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:249 msgid "Select version" -msgstr "" +msgstr "Chọn phiên bản" #: ../../../processing/app/debug/Compiler.java:146 msgid "Selected board depends on '{0}' core (not installed)." @@ -1820,11 +1873,11 @@ msgstr "Các bo mạch đã được chọn phụ thuộc vào lõi '{0}' (chưa #: ../../../../../app/src/processing/app/Base.java:374 msgid "Selected board is not available" -msgstr "" +msgstr "Bo mạch được chọn không có sẵn" #: ../../../../../app/src/processing/app/Base.java:423 msgid "Selected library is not available" -msgstr "" +msgstr "Thư viện được chọn không có sẵn" #: SerialMonitor.java:93 msgid "Send" @@ -1832,7 +1885,7 @@ msgstr "Gửi" #: ../../../../../arduino-core/src/processing/app/I18n.java:32 msgid "Sensors" -msgstr "" +msgstr "Các cảm biến" #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:669 msgid "Serial Monitor" @@ -1840,18 +1893,18 @@ msgstr "Serial Monitor" #: ../../../../../app/src/processing/app/Editor.java:804 msgid "Serial Plotter" -msgstr "" +msgstr "Sơ đồ thông tin truyền thông" #: ../../../../../app/src/processing/app/Editor.java:2325 #, java-format msgid "" "Serial monitor is not supported on network ports such as {0} for the {1} in " "this release" -msgstr "" +msgstr "Giao diện giao tiếp không dược hỗ trợ trên những công giao tiếp mạng như {0} cho {1} trong phiên bản này" #: ../../../../../app/src/processing/app/Editor.java:2516 msgid "Serial monitor not available while plotter is open" -msgstr "" +msgstr "Giao diện giao tiếp không khả dụng khi sơ đồ đang mở" #: Serial.java:194 #, java-format @@ -1860,25 +1913,28 @@ msgid "" " Serial Port menu?" msgstr "Cổng có số thứ tự ''{0}'' không được tìm thấy. Bạn đã chọn đúng cổng trong phần menu Công cụ > Số thứ tự cổng chưa?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "chưa chọn cổng giao tiếp" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "Cổng có số hiệu {0} không được tìm thấy.\nThử lại việc tải dữ liệu vào bo mạch với một cổng có số hiệu khác?" +msgid "Serial port {0} not found." +msgstr "Không tìm thấy cổng giao tiếp {0}" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" -msgstr "" +msgstr "Các cổng giao tiếp " #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:84 #, java-format msgid "Setting build path to {0}" -msgstr "" +msgstr "Đang cài nơi lưu tệp tin lập trình đến {0}" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:450 msgid "Settings" -msgstr "" +msgstr "Cài đặt" #: Base.java:1681 msgid "Settings issues" @@ -1888,13 +1944,17 @@ msgstr "Các vấn đề về thiết lập" msgid "Show Sketch Folder" msgstr "Hiển thị thư mục Sketch" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "Hiện mốc thời gian" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "Hiển thị verbose trong suốt quá trình nhập dữ liệu:" #: ../../../../../arduino-core/src/processing/app/I18n.java:31 msgid "Signal Input/Output" -msgstr "" +msgstr "Cổng Vào/Ra tín hiệu" #: Editor.java:607 msgid "Sketch" @@ -1947,16 +2007,16 @@ msgstr "Địa điểm Sketchbook;" #: ../../../processing/app/BaseNoGui.java:428 msgid "Sketchbook path not defined" -msgstr "" +msgstr "Chưa xác định đường dẫn Sketchbook " #: ../../../../../arduino-core//src/cc/arduino/contributions/packages/ContributionsIndexer.java:96 #, java-format msgid "Skipping contributed index file {0}, parsing error occured:" -msgstr "" +msgstr "Đang bỏ qua tệp in mục lục được đóng góp {0}, Lỗi khi phân tích cú pháp:" #: ../../../../../app/src/processing/app/Preferences.java:185 msgid "Slovak" -msgstr "" +msgstr "Tiếng Slovakia" #: ../../../processing/app/Preferences.java:152 msgid "Slovenian" @@ -1978,7 +2038,7 @@ msgstr "Một số tập tin được đánh dấu \"chỉ đọc\", bởi thế #: ../../../../../arduino-core/src/processing/app/Sketch.java:246 #, java-format msgid "Sorry, the folder \"{0}\" already exists." -msgstr "" +msgstr "Xin lỗi, thư mục \"{0}' đã tồn tại" #: Preferences.java:115 msgid "Spanish" @@ -1986,11 +2046,11 @@ msgstr "Spanish" #: ../../../../../app/src/processing/app/Base.java:2333 msgid "Specified folder/zip file does not contain a valid library" -msgstr "" +msgstr "Thư mục/Tệp tin zip khoog chứa một thư viện hợp lệ" #: ../../../../../app/src/processing/app/Base.java:466 msgid "Starting..." -msgstr "" +msgstr "Đang khởi động..." #: Base.java:540 msgid "Sunshine" @@ -2006,7 +2066,7 @@ msgstr "Mặc định theo hệ thống" #: ../../../../../app/src/processing/app/Preferences.java:188 msgid "Talossan" -msgstr "" +msgstr "Tiếng Talossan" #: Preferences.java:116 msgid "Tamil" @@ -2014,11 +2074,11 @@ msgstr "Tamil" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:102 msgid "Telugu" -msgstr "" +msgstr "Tiếng Tegulu" #: ../../../../../app/src/cc/arduino/i18n/Languages.java:100 msgid "Thai" -msgstr "" +msgstr "Tiếng Thái" #: debug/Compiler.java:414 msgid "The 'BYTE' keyword is no longer supported." @@ -2026,7 +2086,7 @@ msgstr "Từ khóa 'BYTE' không còn được hỗ trợ." #: ../../../processing/app/BaseNoGui.java:484 msgid "The --upload option supports only one file at a time" -msgstr "" +msgstr "Lựa chọn -Tải lên chỉ hỗ trợ mộ tệp tin một lần" #: debug/Compiler.java:426 msgid "The Client class has been renamed EthernetClient." @@ -2037,7 +2097,7 @@ msgstr "Lớp Client đã được chuyển tên thành EthernetClient." msgid "" "The IDE includes an updated {0} package, but you're using an older one.\n" "Do you want to upgrade {0}?" -msgstr "" +msgstr "IDE này có bao gồm một gói mới nhất :{0}, nhưng bạn đang dùng cái cũ\nBạn có muốn cập nhật {0} không ?" #: debug/Compiler.java:420 msgid "The Server class has been renamed EthernetServer." @@ -2049,7 +2109,7 @@ msgstr "Lớp Udp đã được chuyển tên thành EthernetUdp." #: ../../../../../arduino-core/src/processing/app/BaseNoGui.java:177 msgid "The current selected board needs the core '{0}' that is not installed." -msgstr "" +msgstr "Bo mạch đang được chon cần phần mềm cốt lõi '{0}' chưa được cài đạt" #: Editor.java:2147 #, java-format @@ -2059,6 +2119,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "Tập tin \"{0}\" cần được đặt trong\nmột thư mục sketch được đặt tên \"{1}\".\nTạo thư mục này, sau đó di chuyển tập tin vào trong, và tiếp tục?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Thư viện \"{0}\" không thể sử dụng.\nTên thư mục thư viện phải bắt đầu bằng một số hoặc chữ, tiếp theo là chữ, số, gạch ngang, dấu chấm và gạch dưới. Độ dài không quá 63 kí tự" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2069,7 +2137,7 @@ msgstr "Thư viện \"{0}\" không thể được sử dụng.\nTên thư viện #: ../../../../../app/src/processing/app/SketchController.java:170 msgid "The main file cannot use an extension" -msgstr "" +msgstr "Không sử dụng được mở rộng cho tệp tin chính" #: Sketch.java:356 msgid "The name cannot start with a period." @@ -2095,7 +2163,7 @@ msgstr "Sketch \"{0}\" không thể được sử dụng.\nTên của Sketch ch #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format msgid "The sketch already contains a file named \"{0}\"" -msgstr "" +msgstr "Sketch đã có một tệp tin tên \"{0}\"" #: Sketch.java:1755 msgid "" @@ -2104,11 +2172,12 @@ msgid "" "but anything besides the code will be lost." msgstr "Thư mục sketch đã đi bụi.\nSẽ cố gắng lưu lại lần nữa ở cùng địa chỉ,\nnhưng tất cả mọi thứ ngoại trừ mã nguồn sẽ bị đi bụi theo luôn." -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "" +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "Tên của sketch phải được đổi.\nTên phải bắtđầu bằng một chữ hoặc số,tiếp theo là chữ,\nsố, gạch ngang,chấm và gạch dưới. Độ dài tối đa là 63 kí tự" #: Base.java:259 msgid "" @@ -2123,20 +2192,24 @@ msgstr "Thư mục sketchbook không còn hiện hữu trong hệ thống.\nArdu msgid "" "The specified sketchbook folder contains your copy of the IDE.\n" "Please choose a different folder for your sketchbook." -msgstr "" +msgstr "Thư mục sketchbook được chọn chứa một bản của IDE.\nVui lòng chọn một thư mục khác cho sketchbook của bạn" + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "Chủ đề:" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" "Are you sure you want to delete it?" -msgstr "" +msgstr "Thư viên này không có trên trình quản lý thư viện. Bạn sễ không thể tải lại từ đó.\nBạn có chắc muốn xóa thư viện này không ?" #: ../../../../../app/src/processing/app/EditorStatus.java:349 msgid "" "This report would have more information with\n" "\"Show verbose output during compilation\"\n" "option enabled in File -> Preferences.\n" -msgstr "" +msgstr "Bản báo cáo này sẽ có nhiều thông tin hơn với lựa chọn \"Hiện thông tin đầy đủ khi biên soạn\"\ntrong menu Tệp tin -> Tùy biến\n" #: Base.java:535 msgid "Time for a Break" @@ -2144,12 +2217,12 @@ msgstr "Nghỉ ngơi một chút đi nào" #: ../../../../../arduino-core/src/processing/app/I18n.java:34 msgid "Timing" -msgstr "" +msgstr "Định giờ" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:94 #, java-format msgid "Tool {0} is not available for your operating system." -msgstr "" +msgstr " Công cụ {0} không có sẵn trên hệ điều hành của bạn" #: Editor.java:663 msgid "Tools" @@ -2157,7 +2230,7 @@ msgstr "Công cụ" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:97 msgid "Topic" -msgstr "" +msgstr "Đề mục:" #: Editor.java:1070 msgid "Troubleshooting" @@ -2170,7 +2243,7 @@ msgstr "Turkish" #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:109 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:105 msgid "Type" -msgstr "" +msgstr "Loại" #: ../../../processing/app/Editor.java:2507 msgid "Type board password to access its console" @@ -2187,7 +2260,7 @@ msgstr "Ukrainian" #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:142 #, java-format msgid "Unable to connect to {0}" -msgstr "" +msgstr "Không thể kết nối đến {0}" #: ../../../processing/app/Editor.java:2524 #: ../../../processing/app/NetworkMonitor.java:145 @@ -2205,7 +2278,7 @@ msgstr "Không thể kết nối: sai mật khẩu?" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:65 #, java-format msgid "Unable to find {0} in {1}" -msgstr "" +msgstr "Không tìm thấy {0} trong {1}" #: ../../../processing/app/Editor.java:2512 msgid "Unable to open serial monitor" @@ -2213,16 +2286,16 @@ msgstr "Không thể mở phần giám sát mã hiệu" #: ../../../../../app/src/processing/app/Editor.java:2709 msgid "Unable to open serial plotter" -msgstr "" +msgstr "Không thể mở sơ đồ truyền thông" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:94 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 msgid "Unable to reach Arduino.cc due to possible network issues." -msgstr "" +msgstr "Không thể giao tiếp với Arduino.cc do có thể có sự cố về mạng" #: ../../../../../arduino-core/src/processing/app/I18n.java:38 msgid "Uncategorized" -msgstr "" +msgstr "Chưa được sắp xếp" #: Editor.java:1133 Editor.java:1355 msgid "Undo" @@ -2231,16 +2304,16 @@ msgstr "Hủy thao tác" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:85 #, java-format msgid "Unhandled type {0} in context key {1}" -msgstr "" +msgstr "Unhandled type {0} in context key {1}" #: ../../../../../app//src/processing/app/Editor.java:2818 msgid "Unknown board" -msgstr "" +msgstr "Bo mạch chưa biết" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format msgid "Unknown sketch file extension: {0}" -msgstr "" +msgstr "Tệp tin mở rộng sketch chưa biết: {0}" #: Platform.java:168 msgid "" @@ -2252,7 +2325,7 @@ msgstr "Không xác định được nền tảng, không thể chạy phần k #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownUpdatableLibrariesItem.java:27 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownUpdatableCoresItem.java:27 msgid "Updatable" -msgstr "" +msgstr "Có thể cập nhật" #: UpdateCheck.java:111 msgid "Update" @@ -2265,21 +2338,21 @@ msgstr "Cập nhật tập tin sketch đối với các định dạng mới khi #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:88 #, java-format msgid "Updates available for some of your {0}boards{1}" -msgstr "" +msgstr "Có bản cập nhật dành cho {0} bo mạch {1} của bạn" #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:90 #, java-format msgid "Updates available for some of your {0}boards{1} and {2}libraries{3}" -msgstr "" +msgstr "Có bản cập nhật dành cho {0} bo mạch {1} và {2} thư viện {3} của bạn" #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:86 #, java-format msgid "Updates available for some of your {0}libraries{1}" -msgstr "" +msgstr "Có bản cập nhật dành cho một số {0} thư viện {1} của bạn" #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:167 msgid "Updating list of installed libraries" -msgstr "" +msgstr "Đang cập nhật danh sách những thư viện đã được cài đặt" #: EditorToolbar.java:41 Editor.java:545 msgid "Upload" @@ -2291,7 +2364,7 @@ msgstr "Đang tải sử dụng dưới dạng người lập trình" #: ../../../../../app//src/processing/app/Editor.java:2814 msgid "Upload any sketch to obtain it" -msgstr "" +msgstr "Tải lên bất kì sketch nào để lấy" #: Editor.java:2403 Editor.java:2439 msgid "Upload canceled." @@ -2320,12 +2393,12 @@ msgstr "Sử dụng trình biên soạn bổ sung" #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:493 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:499 msgid "Username:" -msgstr "" +msgstr "Tên người dùng:" #: ../../../processing/app/debug/Compiler.java:410 #, java-format msgid "Using library {0} at version {1} in folder: {2} {3}" -msgstr "" +msgstr "Đang sử dụng thư viện {0} phiên bản {1} trong thư mục: {2} {3}" #: ../../../processing/app/debug/Compiler.java:94 #, java-format @@ -2347,33 +2420,33 @@ msgstr "Xác nhận mã lập trình sau khi tải lên" #: ../../../../../app/src/processing/app/Editor.java:725 msgid "Verify/Compile" -msgstr "" +msgstr "Xác nhận / Biên dịch" #: ../../../../../app/src/processing/app/Base.java:451 msgid "Verifying and uploading..." -msgstr "" +msgstr "Đang xác nhận và tải lên" #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:71 msgid "Verifying archive integrity..." -msgstr "" +msgstr "Đang kiểm tra tính nguyên vẹn của tệp lưu trữ" #: ../../../../../app/src/processing/app/Base.java:454 msgid "Verifying..." -msgstr "" +msgstr " Đang xác định" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:328 #, java-format msgid "Version {0}" -msgstr "" +msgstr "Phiên bản {0}" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:326 msgid "Version unknown" -msgstr "" +msgstr "Phiên bản chưa biết" #: ../../../cc/arduino/contributions/libraries/ContributedLibrary.java:97 #, java-format msgid "Version {0}" -msgstr "" +msgstr "Phiên bản {0}" #: ../../../processing/app/Preferences.java:154 msgid "Vietnamese" @@ -2386,19 +2459,19 @@ msgstr "Truy cập Arduino.cc" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:90 #, java-format msgid "WARNING: Category '{0}' in library {1} is not valid. Setting to '{2}'" -msgstr "" +msgstr "CẢNH BÁO: Thể loại '{0}' trong thư viện {1} không hợp lệ. Đang cài lại thành {2}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:93 #, java-format msgid "WARNING: Spurious {0} folder in '{1}' library" -msgstr "" +msgstr "CẢNH BÁO: Tệp tin giả mạo {0} tại thư viện {1}" #: ../../../processing/app/debug/Compiler.java:115 #, java-format msgid "" "WARNING: library {0} claims to run on {1} architecture(s) and may be " "incompatible with your current board which runs on {2} architecture(s)." -msgstr "" +msgstr "CẢNH BÁO:Thư viện {0} chạy trên (các) kiến trúc {1} và có thể không tương thích với bo mạch của bạn mà nó chạy trên (các) kiến trúc {2}" #: Base.java:2128 msgid "Warning" @@ -2408,43 +2481,43 @@ msgstr "Cảnh báo" msgid "" "Warning: This core does not support exporting sketches. Please consider " "upgrading it or contacting its author" -msgstr "" +msgstr "Cảnh báo: Phần mềm cốt lõi hiện tại không hỗ trợ xuất các sketch. Hãy cập nhật hoặc liên hệ với tác giả" #: ../../../cc/arduino/utils/ArchiveExtractor.java:197 #, java-format msgid "Warning: file {0} links to an absolute path {1}" -msgstr "" +msgstr "Cảnh báo: Tệp {0} được liên kết với một đường dẫn đầy đủ {1}" #: ../../../cc/arduino/contributions/packages/ContributionsIndexer.java:133 msgid "Warning: forced trusting untrusted contributions" -msgstr "" +msgstr "Cảnh báo: Đã bắt buộc tin những đóng góp chưa kiểm chúng" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:217 #, java-format msgid "Warning: forced untrusted script execution ({0})" -msgstr "" +msgstr "Cảnh báo: Đã bắt buộc chạy lệnh chưa kiểm chứng ({0})" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:212 #, java-format msgid "Warning: non trusted contribution, skipping script execution ({0})" -msgstr "" +msgstr "Cảnh báo: Đóng góp chưa được kiểm chứng, đang bỏ thực thi lệnh ({0})" #: ../../../processing/app/debug/LegacyTargetPlatform.java:158 #, java-format msgid "" "Warning: platform.txt from core '{0}' contains deprecated {1}, automatically" " converted to {2}. Consider upgrading this core." -msgstr "" +msgstr "Cảnh báo: Tệp platform.txt từ phần mềm cốt lõi '{0}' chứa nền tảng cũ {1}, đã tự động chuyển thành {2}.Hãy nâng cấp phần mềm cốt lõicủa bạn" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:91 msgid "" "Warning: platform.txt from core '{0}' misses property '{1}', using default " "value '{2}'. Consider upgrading this core." -msgstr "" +msgstr "Cảnh báo: tệp platform.txt từ phần mềm lõi '{0}' thiếu tính chất '{1}', đang sử dụng giá trị mặc định '{2}'. Hãy nâng cấpphần mềm lõi này" #: ../../../../../app/src/processing/app/Preferences.java:190 msgid "Western Frisian" -msgstr "" +msgstr "Tếng tây Frisia" #: debug/Compiler.java:444 msgid "Wire.receive() has been renamed Wire.read()." @@ -2470,7 +2543,7 @@ msgstr "Đồng ý" #: ../../../../../app/src/processing/app/Base.java:2312 msgid "You can't import a folder that contains your sketchbook" -msgstr "" +msgstr "Banjm không thể chèn một thư mục chứa sketchbook của bạn" #: Sketch.java:883 msgid "" @@ -2486,7 +2559,7 @@ msgstr "Bạn quên phần Sketbook rồi" msgid "" "You have unsaved changes!\n" "You must save all your sketches to enable this option." -msgstr "" +msgstr "Bạn có nhữngthay đổi chưa lưu !\nBạn phải lưu tất cả các sketch của bạn để kích hoạt lựa chọn này" #: ../../../processing/app/AbstractMonitor.java:92 msgid "" @@ -2503,13 +2576,13 @@ msgstr "Bạn đã vượt ngưỡng tối đa cho số lần tự động đổ msgid "" "Your copy of the IDE is installed in a subfolder of your settings folder.\n" "Please move the IDE to another folder." -msgstr "" +msgstr "Bản cài đặt IDE của bạn được đặt trong một thư mục con của thư mục cài đặt của ban.\nVui lòng chuyển nó sang một nơi khác" #: ../../../processing/app/BaseNoGui.java:771 msgid "" "Your copy of the IDE is installed in a subfolder of your sketchbook.\n" "Please move the IDE to another folder." -msgstr "" +msgstr "Bản cài đặt IDE của bạn được đặt trong một thư mục con của thư mục sketchbook của ban.\nVui lòng chuyển nó sang một nơi khác" #: Base.java:2638 msgid "ZIP files or folders" @@ -2531,7 +2604,7 @@ msgid "" "older version of Arduino, you may need to use Tools -> Fix Encoding & Reload" " to update the sketch to use UTF-8 encoding. If not, you may need to delete " "the bad characters to get rid of this warning." -msgstr "" +msgstr "\"{0}\" chứa các kí tự không biết. Nếu mã này được tạo với một bản cũ hơn của Arduino, bạn có thể sẽ phải sử dụng Công cụ -> Sửa lỗi mã hóa & Tải lại để sử dụng với dạng mã hóa UTF-8. Nếu không, bạn có thể sẽ phải xóa những kí tự đó đi để khắc phục lỗi này" #: debug/Compiler.java:409 msgid "" @@ -2598,7 +2671,7 @@ msgstr "đã kết nối!" #: ../../../../../app/src/processing/app/Editor.java:1352 msgid "http://www.arduino.cc/" -msgstr "" +msgstr "http://www.arduino.cc/" #: UpdateCheck.java:118 msgid "http://www.arduino.cc/en/Main/Software" @@ -2617,6 +2690,12 @@ msgstr "bỏ qua kiểu chữ không hợp lệ {0}" msgid "name is null" msgstr "tên bị rỗng" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "Không có tệp headers (.h) tìm được trong {0}" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu bị rỗng" @@ -2630,7 +2709,7 @@ msgstr "cổng được chọn {0} không tồn tại trong bo mạch hoặc kh #: ../../../processing/app/Base.java:389 #, java-format msgid "unknown option: {0}" -msgstr "" +msgstr "Lựa chọn chưa biết: {0}" #: Preferences.java:391 msgid "upload" @@ -2639,23 +2718,23 @@ msgstr "tải lên" #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:324 #, java-format msgid "version {0}" -msgstr "" +msgstr "phiên bản {0}" #: ../../../../../app/src/processing/app/Editor.java:2243 #, java-format msgid "{0} - {1} | Arduino {2}" -msgstr "" +msgstr "{0} - {1} | Arduino {2}" #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:39 #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:43 #, java-format msgid "{0} file signature verification failed" -msgstr "" +msgstr " Không thể kiểm tra chữ ký tệp {0}" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:310 #, java-format msgid "{0} file signature verification failed. File ignored." -msgstr "" +msgstr " Không thể kiểm tra chữ ký tệp {0}. Đã bỏ qua kiểm tra tệp này" #: Editor.java:380 #, java-format @@ -2675,12 +2754,12 @@ msgstr "{0} phải là một thư mục" #: ../../../../../app/src/processing/app/EditorLineStatus.java:109 #, java-format msgid "{0} on {1}" -msgstr "" +msgstr "{0} trên {1}" #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:78 #, java-format msgid "{0} pattern is missing" -msgstr "" +msgstr "Thếu mẫu {0}" #: debug/Compiler.java:365 #, java-format @@ -2695,29 +2774,29 @@ msgstr "{0} | Arduino {1}" #: ../../../processing/app/Base.java:519 #, java-format msgid "{0}: Invalid argument to --pref, should be of the form \"pref=value\"" -msgstr "" +msgstr "{0}: Cú pháp không hợp lí cho -pref, nên có dạng nhu \"pref=value\"" #: ../../../processing/app/Base.java:476 #, java-format msgid "" "{0}: Invalid board name, it should be of the form \"package:arch:board\" or " "\"package:arch:board:options\"" -msgstr "" - -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" +msgstr "{0}: Tên bo mạch không hợp lệ, nên có dạng như \"package:arch:board\" hoặc \"package:arch:board:options\"" #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" -msgstr "" +msgstr "{0}: Lựa chọn không hợp lệ cho bo \"{1}'" #: ../../../processing/app/Base.java:502 #, java-format msgid "{0}: Invalid option, should be of the form \"name=value\"" -msgstr "" +msgstr "{0}: Lựa chọn không hợp lệ, phải có dạng \"name=value\"" + +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "{0}: Giá trị không hợp lệ cho lụa chọn \"{1}\" cho bo mạch \"{2}\"" #: ../../../processing/app/Base.java:486 #, java-format @@ -2737,4 +2816,4 @@ msgstr "{0}: Gói không xác định" #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format msgid "{0}Install this package{1} to use your {2} board" -msgstr "" +msgstr "{0}Cài đặt gói {1} để sử dụng bo mạch {2} của bạn" diff --git a/arduino-core/src/processing/app/i18n/Resources_vi.properties b/arduino-core/src/processing/app/i18n/Resources_vi.properties index 9572c7655ec..3b8b0489fd2 100644 --- a/arduino-core/src/processing/app/i18n/Resources_vi.properties +++ b/arduino-core/src/processing/app/i18n/Resources_vi.properties @@ -17,12 +17,17 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Anh Phan , 2013 # Anh Phan , 2013 # Bao Phan , 2016 +# Cristian Maglie , 2021 +# dsds adas , 2020-2021 # Anh Phan , 2013 -# Quoc-Bao Nguyen , 2016-2017 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Vietnamese (http\://www.transifex.com/mbanzi/arduino-ide-15/language/vi/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: vi\nPlural-Forms\: nplurals\=1; plural\=0;\n +# Quoc-Bao Nguyen , 2016-2017,2020 +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2021-05-07 06\:06+0000\nLast-Translator\: dsds adas \nLanguage-Team\: Vietnamese (http\://www.transifex.com/mbanzi/arduino-ide-15/language/vi/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: vi\nPlural-Forms\: nplurals\=1; plural\=0;\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=(y\u00eau c\u1ea7u kh\u1edfi \u0111\u1ed9ng l\u1ea1i Arduino) @@ -102,7 +107,7 @@ Additional\ Boards\ Manager\ URLs\:\ =\u0110\u1ecba ch\u1ec9 URLs nh\u1eadn v\u1 Afrikaans=Ti\u1ebfng Nam Phi #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:248 -!Aggressively\ cache\ compiled\ core= +Aggressively\ cache\ compiled\ core=Ch\u1ee7 \u0111\u1ed9ng cache core \u0111\u00e3 bi\u00ean d\u1ecbch #: ../../../processing/app/Preferences.java:96 Albanian=Ti\u1ebfng Albanian @@ -149,7 +154,7 @@ Archive\ sketch\ canceled.=\u0110\u00e3 h\u1ee7y vi\u1ec7c l\u01b0u tr\u1eef ske #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:67 #, java-format -!Archiving\ built\ core\ (caching)\ in\:\ {0}= +Archiving\ built\ core\ (caching)\ in\:\ {0}=\u0110ang \u0111\u00f3ng g\u00f3i l\u00f5i \u0111\u00e3 t\u1ea1o ( \u0110ang l\u01b0u \u0111\u1ec7m ) t\u1ea1i {0} #: tools/Archiver.java:75 Archiving\ the\ sketch\ has\ been\ canceled\ because\nthe\ sketch\ couldn't\ save\ properly.=Vi\u1ec7c l\u01b0u tr\u1eef sketch \u0111\u00e3 b\u1ecb h\u1ee7y b\u1ecf v\u00ec\nsketch kh\u00f4ng th\u1ec3 \u0111\u01b0\u1ee3c l\u01b0u ho\u00e0n to\u00e0n. @@ -244,7 +249,7 @@ Belarusian=Belarusian Board=Bo m\u1ea1ch #: ../../../../../app//src/processing/app/Editor.java:2824 -Board\ Info=Bo m\u1ea1ch +Board\ Info=\ th\u00f4ng tin v\u1ec1 bo m\u1ea1ch #: ../../../../../app/src/processing/app/Editor.java:2545 #: ../../../../../app/src/processing/app/Editor.java:2641 @@ -310,7 +315,7 @@ CRC\ doesn't\ match,\ file\ is\ corrupted.\ It\ may\ be\ a\ temporary\ problem,\ Can\ only\ pass\ one\ of\:\ {0}=Ch\u1ec9 c\u00f3 th\u1ec3 \u0111\u01b0a v\u00e0o m\u1ed9t trong\: {0} #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:254 -!Can't\ enable\ external\ editor= +Can't\ enable\ external\ editor=Kh\u00f4ng th\u1ec3 m\u1edf tr\u00ecnh so\u1ea1n th\u1ea3o b\u00ean ngo\u00e0i #: ../../../processing/app/BaseNoGui.java:504 #: ../../../processing/app/BaseNoGui.java:549 @@ -345,7 +350,7 @@ Chinese\ (Taiwan)=Chinese (Taiwan) Chinese\ (Taiwan)\ (Big5)=Chinese (Taiwan) (Big5) #: ../../../../../app/src/processing/app/AbstractTextMonitor.java:80 -!Clear\ output= +Clear\ output=X\u00f3a output #: ../../../../../app/src/cc/arduino/view/preferences/AdditionalBoardsManagerURLTextArea.java:98 Click\ for\ a\ list\ of\ unofficial\ boards\ support\ URLs=Click v\u00e0o \u0111\u1ec3 hi\u1ec3n th\u1ecb danh s\u00e1ch URLs h\u1ed7 tr\u1ee3 c\u00e1c board kh\u00f4ng ch\u00ednh th\u1ee9c @@ -445,6 +450,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=Kh\u00f4ng th\u1ec3 lo\u1ea1i b\u1ecf #, java-format Could\ not\ replace\ {0}=Kh\u00f4ng th\u1ec3 thay thay th\u1ebf {0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +Could\ not\ write\ preferences\ file\:\ {0}=Kh\u00f4ng th\u1ec3 l\u01b0u t\u1ec7p tin t\u00f9y bi\u1ebfn\:{0} + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=Kh\u00f4ng th\u1ec3 l\u01b0u tr\u1eef sketch @@ -476,7 +485,7 @@ Data\ Processing=X\u1eed L\u00fd D\u1eef Li\u1ec7u Data\ Storage=Dung L\u01b0\u1ee3ng B\u1ed9 Nh\u1edb #: ../../../../../app/src/processing/app/Editor.java:1386 -!Decrease\ Font\ Size= +Decrease\ Font\ Size=Gi\u1ea3m k\u00edch th\u01b0\u1edbc font #: Editor.java:1224 Editor.java:2765 Decrease\ Indent=Gi\u1ea3m kho\u1ea3ng c\u00e1ch @@ -484,6 +493,9 @@ Decrease\ Indent=Gi\u1ea3m kho\u1ea3ng c\u00e1ch #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=M\u1eb7c \u0111\u1ecbnh +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +Default\ theme=Ch\u1ee7 \u0111\u1ec1 m\u1eb7c \u0111\u1ecbnh + #: EditorHeader.java:314 Sketch.java:591 Delete=X\u00f3a @@ -615,6 +627,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=X\u1ea3y ra l\u1ed7i khi ti\u1ebfp n #, java-format Error\ inside\ Serial.{0}()=L\u1ed7i \u1edf b\u00ean trong Serial.{0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +Error\ loading\ theme\ {0}\:\ {1}=Kh\u00f4ng th\u1ec3 t\u1ea3i ch\u1ee7 \u0111\u1ec1 {0}\: {1} + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -629,6 +645,18 @@ Error\ opening\ serial\ port\ ''{0}''.=L\u1ed7i khi m\u1edf c\u1ed5ng c\u00f3 s\ #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=L\u1ed7i khi m\u1edf c\u1ed5ng serial "{0}". Th\u1eed tham kh\u1ea3o t\u00e0i li\u1ec7u t\u1ea1i http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.=L\u1ed7i khi ph\u00e2n t\u00edch c\u00fa ph\u00e1p c\u1ee7a th\u01b0 vi\u1ec7n\:{0}\nTh\u1eed m\u1edf tr\u00ecnh qu\u1ea3n l\u00fd th\u01b0 vi\u1ec7n \u0111\u1ec3 c\u1eadp nh\u1eadt l\u1ea1i + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +Error\ reading\ libraries\ index\:\ {0}=L\u1ed7i khi \u0111\u1ecdc c\u00fa ph\u00e1p th\u01b0 vi\u1ec7n\:{0} + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)=L\u1ed7i khi \u0111\u1ecdc th\u01b0 m\u1ee5c c\u00fa ph\u00e1p c\u1ee7a g\u00f3i\:{0}\n(c\u00f3 th\u1ec3 l\u00e0 m\u1ed9t v\u1ea5n \u0111\u1ec1 v\u1ec1 quy\u1ec1n truy c\u1eadp ? ) + #: Preferences.java:277 Error\ reading\ preferences=L\u1ed7i x\u1ea3y ra v\u1edbi ph\u1ea7n t\u01b0\u01a1ng t\u00e1c trong t\u00f9y bi\u1ebfn @@ -654,6 +682,9 @@ Error\ while\ burning\ bootloader.=L\u1ed7i khi \u0111ang burning bootloader. #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=L\u1ed7i trong khi \u0111ang ghi d\u1eef li\u1ec7u ph\u1ea7n n\u1ea1p kh\u1edfi \u0111\u1ed9ng\: thi\u1ebfu th\u00f4ng s\u1ed1 c\u1ea5u h\u00ecnh '{0}' +#: ../../../../../app/src/processing/app/Editor.java:2355 +Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.=L\u1ed7i khi ghi v\u00e0o m\u1ea1ch tr\u00ecnh n\u1ea1p kh\u1edfi \u0111\u1ed9ng\: h\u00e3y ch\u1ecdn m\u1ed9t c\u1ed5ng giao ti\u1ebfp + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=L\u1ed7i bi\u00ean d\u1ecbch\: thi\u1ebfu tham s\u1ed1 '{0}' @@ -682,9 +713,6 @@ Error\ while\ verifying/uploading=L\u1ed7i khi bi\u00ean d\u1ecbch/t\u1ea3i l\u0 #: Preferences.java:93 Estonian=Estonian -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=Estonian (Estonia) - #: Editor.java:516 Examples=V\u00ed d\u1ee5 @@ -835,8 +863,8 @@ INCOMPATIBLE=KH\u00d4NG T\u01af\u01a0NG TH\u00cdCH #: FindReplace.java:96 Ignore\ Case=B\u1ecf qua tr\u01b0\u1eddng h\u1ee3p vi\u1ebft hoa -#: Base.java:1058 -Ignoring\ bad\ library\ name=B\u1ecf qua t\u00ean th\u01b0 vi\u1ec7n kh\u00f4ng h\u1ee3p l\u1ec7 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +Ignoring\ library\ with\ bad\ name=B\u1ecf qua th\u01b0 vi\u1ec7n v\u1edbi t\u00ean kh\u00f4ng h\u1ee3p l\u1ec7 #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=B\u1ecf qua sketch v\u1edbi t\u00ean kh\u00f4ng h\u1ee3p l\u1ec7 @@ -845,14 +873,14 @@ Ignoring\ sketch\ with\ bad\ name=B\u1ecf qua sketch v\u1edbi t\u00ean kh\u00f4n In\ Arduino\ 1.0,\ the\ default\ file\ extension\ has\ changed\nfrom\ .pde\ to\ .ino.\ \ New\ sketches\ (including\ those\ created\nby\ "Save-As")\ will\ use\ the\ new\ extension.\ \ The\ extension\nof\ existing\ sketches\ will\ be\ updated\ on\ save,\ but\ you\ can\ndisable\ this\ in\ the\ Preferences\ dialog.\n\nSave\ sketch\ and\ update\ its\ extension?=Trong phi\u00ean b\u1ea3n Arduino 1.0, ph\u1ea7n \u0111\u1ecbnh d\u1ea1ng t\u1eadp tin m\u1eb7c \u0111\u1ecbnh \u0111\u00e3 thay \u0111\u1ed5i\nt\u1eeb .pde th\u00e0nh .ino. C\u00e1c sketch m\u1edbi (bao g\u1ed3m c\u00e1c \u0111\u1ed1i t\u01b0\u1ee3ng \u0111\u00e3 \u0111\u01b0\u1ee3c t\u1ea1o\nb\u1eb1ng "L\u01b0u-D\u01b0\u1edbi D\u1ea1ng") s\u1ebd s\u1eed d\u1ee5ng ph\u1ea7n \u0111\u1ecbnh d\u1ea1ng m\u1edbi. Ph\u1ea7n \u0111\u1ecbnh d\u1ea1ng\nc\u1ee7a c\u00e1c sketch \u0111\u00e3 c\u00f3 tr\u01b0\u1edbc \u0111\u00f3 s\u1ebd \u0111\u01b0\u1ee3c c\u1eadp nh\u1eadt khi l\u01b0u, tuy nhi\u00ean b\u1ea1n c\u00f3 th\u1ec3\nv\u00f4 hi\u1ec7u h\u00f3a t\u00ednh n\u0103ng n\u00e0y trong h\u1ed9p tho\u1ea1i T\u00f9y Bi\u1ebfn.\n\nL\u01b0u l\u1ea1i sketch v\u00e0 c\u1eadp nh\u1eadt ph\u1ea7n \u0111\u1ecbnh d\u1ea1ng c\u1ee7a sketch n\u00e0y? #: ../../../../../app/src/processing/app/Editor.java:778 -Include\ Library=Th\u01b0 vi\u1ec7n bao g\u1ed3m +Include\ Library=Th\u00eam v\u00e0o th\u01b0 vi\u1ec7n #: ../../../processing/app/BaseNoGui.java:768 #: ../../../processing/app/BaseNoGui.java:771 Incorrect\ IDE\ installation\ folder=Sai th\u01b0 m\u1ee5c c\u00e0i \u0111\u1eb7t IDE #: ../../../../../app/src/processing/app/Editor.java:1378 -!Increase\ Font\ Size= +Increase\ Font\ Size=T\u0103ng k\u00edch th\u01b0\u1edbc font ch\u1eef #: Editor.java:1216 Editor.java:2757 Increase\ Indent=T\u0103ng kho\u1ea3ng c\u00e1ch @@ -880,9 +908,9 @@ Installed=\u0110\u00e3 c\u00e0i \u0111\u1eb7t #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=\u0110ang c\u00e0i \u0111\u1eb7t cho bo... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=\u0110ang c\u00e0i th\u01b0 vi\u1ec7n\: {0} +Installing\ library\:\ {0}\:{1}=\u0110ang c\u00e0i \u0111\u1eb7t th\u01b0 vi\u1ec7n\:{0}\:?{1} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -893,7 +921,7 @@ Installing\ tools\ ({0}/{1})...=\u0110ang c\u00e0i c\u00f4ng c\u1ee5 ({0}/{1}).. Installing...=\u0110ang c\u00e0i \u0111\u1eb7t... #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:256 -!Interface\ scale\:= +Interface\ scale\:=K\u00edch c\u1ee1 giao di\u1ec7n\: #: ../../../processing/app/Base.java:1204 #, java-format @@ -901,7 +929,16 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=Th\u01b0 vi\u1ec7n kh\u00f4ng h\u1ee3p l #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:66 #, java-format -!Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=C\u00fa ph\u00e1p kh\u00f4ng \u0111\u00fang\: kh\u00f4ng t\u00ecm th\u1ea5y k\u00ed t\u1ef1 k\u1ebft [{0}]. + +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}=Phi\u00ean b\u1ea3n kh\u00f4ng h\u1ee3p l\u1ec7 '{0}' cho th\u01b0 vi\u1ec7n \u1edf\:{1} + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=Phi\u00ean b\u1ea3n kh\u00f4ng h\u1ee3p l\u1ec7 {0} #: Preferences.java:102 Italian=Italian @@ -927,9 +964,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=Th\u01b0 v #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=Th\u01b0 vi\u1ec7n kh\u00f4ng th\u1ec3 d\u00f9ng c\u1ea3 hai th\u01b0 m\u1ee5c 'src' v\u00e0 'utility'. Ki\u1ec3m tra l\u1ea1i {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=Th\u01b0 vi\u1ec7n \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t\: {0} phi\u00ean b\u1ea3n {1} +Library\ is\ already\ installed\:\ {0}\:{1}=Th\u01b0 v\u1ec7n \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t\:{0}\:{1} #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=D\u00f2ng s\u1ed1\: @@ -942,7 +979,7 @@ Loading\ configuration...=\u0110ang t\u1ea3i c\u00e0i \u0111\u1eb7t... #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 #, java-format -!Looking\ for\ recipes\ like\ {0}*{1}= +Looking\ for\ recipes\ like\ {0}*{1}=\u0110an t\u00ecm nh\u1eefng c\u00f4ng th\u1ee9c nh\u01b0 {0}*{1} #: ../../../processing/app/Sketch.java:1684 Low\ memory\ available,\ stability\ problems\ may\ occur.=Thi\u1ebfu b\u1ed9 nh\u1edb, c\u00e1c l\u1ed7i v\u1ec1 s\u1ef1 \u1ed5n \u0111\u1ecbnh c\u00f3 th\u1ec3 x\u1ea3y ra. @@ -983,13 +1020,13 @@ Multiple\ files\ not\ supported=Kh\u00f4ng h\u1ed7 tr\u1ee3 nhi\u1ec1u file Multiple\ libraries\ were\ found\ for\ "{0}"=Ph\u00e1t hi\u1ec7n nhi\u1ec1u th\u01b0 vi\u1ec7n cho "{0}" #: ../../../processing/app/Base.java:395 -!Must\ specify\ exactly\ one\ sketch\ file= +Must\ specify\ exactly\ one\ sketch\ file=Ph\u1ea3i cung c\u1ea5p ch\u00ednh x\u00e1c m\u1ed9t t\u1eadp tin l\u1eadp tr\u00ecnh #: Sketch.java:282 Name\ for\ new\ file\:=T\u00ean cho t\u1eadp tin m\u1edbi\: #: ../../../../../app//src/processing/app/Editor.java:2809 -!Native\ serial\ port,\ can't\ obtain\ info= +Native\ serial\ port,\ can't\ obtain\ info=C\u1ed5ng n\u1ed1i ti\u1ebfp b\u00ean trong, kh\u00f4ng th\u1ec3 l\u1ea5y d\u1eef li\u1ec7u #: ../../../processing/app/Preferences.java:149 Nepali=Nepali @@ -1086,7 +1123,7 @@ OK=\u0110\u1ed3ng \u00fd One\ file\ added\ to\ the\ sketch.=Ch\u1ec9 m\u1ed9t t\u1eadp tin \u0111\u01b0\u1ee3c th\u00eam v\u00e0o sketch. #: ../../../processing/app/BaseNoGui.java:455 -!Only\ --verify,\ --upload\ or\ --get-pref\ are\ supported= +Only\ --verify,\ --upload\ or\ --get-pref\ are\ supported=Ch\u1ec9 h\u1ed7 tr\u1ee3 --ki\u1ec3m tra, --t\u1ea3i l\u00ean ho\u1eb7c -l\u1ea5y-th\u00f4ng tin c\u00e0i \u0111\u1eb7t #: EditorToolbar.java:41 Open=M\u1edf @@ -1138,17 +1175,17 @@ Please\ confirm\ library\ deletion=X\u00e1c nh\u1eadn xo\u00e1 th\u01b0 vi\u1ec7 Please\ import\ the\ SPI\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.=Nh\u1eadp \u0111\u1ecba ch\u1ec9 SPI t\u1eeb Sketch > Nh\u1eadp th\u01b0 vi\u1ec7n \u1edf menu. #: ../../../processing/app/debug/Compiler.java:529 -!Please\ import\ the\ Wire\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.= +Please\ import\ the\ Wire\ library\ from\ the\ Sketch\ >\ Import\ Library\ menu.=H\u00e3y c\u00e0i th\u01b0 vi\u1ec7n"Wire" t\u1eeb menu L\u1eadp trinh > c\u00e0i th\u01b0 vi\u00ea #: ../../../../../app//src/processing/app/Editor.java:2799 -!Please\ select\ a\ port\ to\ obtain\ board\ info= +Please\ select\ a\ port\ to\ obtain\ board\ info=H\u00e3y ch\u1ecdn m\u1ed9t c\u1ed5ng giao ti\u1ebfp \u0111\u1ec3 l\u1ea5y th\u00f4ng tin v\u1ec1 bo m\u1ea1ch #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:217 #: ../../../cc/arduino/packages/uploaders/SerialUploader.java:262 -!Please\ select\ a\ programmer\ from\ Tools->Programmer\ menu= +Please\ select\ a\ programmer\ from\ Tools->Programmer\ menu=H\u00e3y ch\u1ecdn m\u1ed9t tr\u00ecnh bi\u00ean so\u1ea1n l\u1eadp tr\u00ecnh t\u1eeb menu C\u00f4ng c\u1ee5 > tr\u00ecnh bi\u00ean so\u1ea1n l\u1eadp tr\u00ecnh #: ../../../../../app/src/processing/app/Editor.java:2613 -!Plotter\ not\ available\ while\ serial\ monitor\ is\ open= +Plotter\ not\ available\ while\ serial\ monitor\ is\ open=S\u01a1 \u0111\u1ed3 kh\u00f4ng kh\u1ea3 d\u1ee5ng khi giao di\u1ec7n giao t\u1ebfp \u0111ang m\u1edf #: Preferences.java:110 Polish=Polish @@ -1157,7 +1194,7 @@ Polish=Polish Port=C\u1ed5ng k\u1ebft n\u1ed1i #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:491 -!Port\ number\:= +Port\ number\:=C\u1ed5ng s\u1ed1\: #: ../../../processing/app/Preferences.java:151 Portugese=Portugese @@ -1172,7 +1209,7 @@ Portuguese\ (Portugal)=Portuguese (Portugal) Preferences=T\u00f9y bi\u1ebfn #: ../../../../../app/src/processing/app/Base.java:297 -!Preparing\ boards...= +Preparing\ boards...=\u0110ang chu\u1ea9n b\u1ecb c\u00e1c bo m\u1ea1ch... #: FindReplace.java:123 FindReplace.java:128 Previous=Tr\u01b0\u1edbc \u0111\u00f3 @@ -1203,7 +1240,7 @@ Problem\ accessing\ board\ folder\ /www/sd=X\u1ea3y ra l\u1ed7i khi k\u1ebft n\u #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:206 #, java-format -!Problem\ accessing\ files\ in\ folder\ "{0}"= +Problem\ accessing\ files\ in\ folder\ "{0}"=S\u1ef1 c\u1ed1 khi truy c\u1eadp c\u00e1c t\u1ec7p tin trong th\u01b0 m\u1ee5c "{0}" #: Base.java:1673 Problem\ getting\ data\ folder=X\u1ea3y ra l\u1ed7i khi ti\u1ebfp nh\u1eadn th\u01b0 m\u1ee5c d\u1eef li\u1ec7u @@ -1222,16 +1259,16 @@ Programmer=Ng\u01b0\u1eddi l\u1eadp tr\u00ecnh #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:80 #, java-format -!Progress\ {0}= +Progress\ {0}=Qu\u00e1 trinh\: {0} #: Base.java:783 Editor.java:593 Quit=Tho\u00e1t #: ../../../../../app/src/processing/app/Base.java:1233 -!RETIRED= +RETIRED=KH\u00d4NG C\u00d2N H\u1ed6 TR\u1ee2 #: ../../../../../arduino-core/src/processing/app/I18n.java:26 -!Recommended= +Recommended=\u0110\u01b0\u1ee3c \u0111\u1ec1 xu\u1ea5t #: Editor.java:1138 Editor.java:1140 Editor.java:1390 Redo=L\u00e0m l\u1ea1i thao t\u00e1c @@ -1240,15 +1277,15 @@ Redo=L\u00e0m l\u1ea1i thao t\u00e1c Reference=Tham chi\u1ebfu #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 -!Remove= +Remove=X\u00f3a -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +Removing\ library\:\ {0}\:{1}=\u0110ang lo\u1ea1i b\u1ecf th\u01b0 vi\u1ec7n\: {0}\:{1} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 -!Removing...= +Removing...=\u0110ang x\u00f3a ... #: EditorHeader.java:300 Rename=\u0110\u1ed5i t\u00ean @@ -1270,18 +1307,21 @@ Replace\ the\ existing\ version\ of\ {0}?=Thay th\u1ebf phi\u00ean b\u1ea3n s\u1 Replace\ with\:=Thay th\u1ebf v\u1edbi\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 -!Retired= +Retired=Kh\u00f4ng c\u00f2n h\u1ed7 tr\u1ee3 + +#: ../../../../../app/src/processing/app/Editor.java:1973 +Retry\ the\ upload\ with\ another\ serial\ port?=Th\u01b0 t\u1ea3i v\u00e0o bo l\u1ea1i v\u1edbi m\u1ed9t c\u1ed5ng kh\u00e1c ? #: Preferences.java:113 Romanian=Romanian #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:83 #, java-format -!Running\ recipe\:\ {0}= +Running\ recipe\:\ {0}=\u0110ang ch\u1ea1y c\u00f4ng th\u1ee9c\: {0} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:82 #, java-format -!Running\:\ {0}= +Running\:\ {0}=\u0110ang chajy\: {0} #: Preferences.java:114 Russian=Russian @@ -1304,13 +1344,13 @@ Save\ changes\ to\ "{0}"?\ \ =L\u01b0u ph\u1ea7n thay \u0111\u1ed5i \u0111\u1ed1 Save\ sketch\ folder\ as...=L\u01b0u th\u01b0 m\u1ee5c sketch d\u01b0\u1edbi d\u1ea1ng... #: ../../../../../app/src/processing/app/Preferences.java:425 -!Save\ when\ verifying\ or\ uploading= +Save\ when\ verifying\ or\ uploading=L\u01b0u khi ki\u1ec3m tra ho\u1eb7c t\u1ea3i l\u00ean #: Editor.java:2270 Editor.java:2308 Saving...=\u0110ang l\u01b0u... #: ../../../processing/app/FindReplace.java:131 -!Search\ all\ Sketch\ Tabs= +Search\ all\ Sketch\ Tabs=T\u00ecm m\u1ecdi th\u1ebb l\u1eadp tr\u00ecnh #: Base.java:1909 Select\ (or\ create\ new)\ folder\ for\ sketches...=Ch\u1ecdn (ho\u1eb7c t\u1ea1o m\u1edbi) m\u1ed9t th\u01b0 m\u1ee5c cho sketch... @@ -1329,53 +1369,57 @@ Select\ new\ sketchbook\ location=Ch\u1ecdn \u0111\u1ecba \u0111i\u1ec3m cho ske #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:237 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:249 -!Select\ version= +Select\ version=Ch\u1ecdn phi\u00ean b\u1ea3n #: ../../../processing/app/debug/Compiler.java:146 Selected\ board\ depends\ on\ '{0}'\ core\ (not\ installed).=C\u00e1c bo m\u1ea1ch \u0111\u00e3 \u0111\u01b0\u1ee3c ch\u1ecdn ph\u1ee5 thu\u1ed9c v\u00e0o l\u00f5i '{0}' (ch\u01b0a \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t). #: ../../../../../app/src/processing/app/Base.java:374 -!Selected\ board\ is\ not\ available= +Selected\ board\ is\ not\ available=Bo m\u1ea1ch \u0111\u01b0\u1ee3c ch\u1ecdn kh\u00f4ng c\u00f3 s\u1eb5n #: ../../../../../app/src/processing/app/Base.java:423 -!Selected\ library\ is\ not\ available= +Selected\ library\ is\ not\ available=Th\u01b0 vi\u1ec7n \u0111\u01b0\u1ee3c ch\u1ecdn kh\u00f4ng c\u00f3 s\u1eb5n #: SerialMonitor.java:93 Send=G\u1eedi #: ../../../../../arduino-core/src/processing/app/I18n.java:32 -!Sensors= +Sensors=C\u00e1c c\u1ea3m bi\u1ebfn #: EditorToolbar.java:41 EditorToolbar.java:46 Editor.java:669 Serial\ Monitor=Serial Monitor #: ../../../../../app/src/processing/app/Editor.java:804 -!Serial\ Plotter= +Serial\ Plotter=S\u01a1 \u0111\u1ed3 th\u00f4ng tin truy\u1ec1n th\u00f4ng #: ../../../../../app/src/processing/app/Editor.java:2325 #, java-format -!Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release= +Serial\ monitor\ is\ not\ supported\ on\ network\ ports\ such\ as\ {0}\ for\ the\ {1}\ in\ this\ release=Giao di\u1ec7n giao ti\u1ebfp kh\u00f4ng d\u01b0\u1ee3c h\u1ed7 tr\u1ee3 tr\u00ean nh\u1eefng c\u00f4ng giao ti\u1ebfp m\u1ea1ng nh\u01b0 {0} cho {1} trong phi\u00ean b\u1ea3n n\u00e0y #: ../../../../../app/src/processing/app/Editor.java:2516 -!Serial\ monitor\ not\ available\ while\ plotter\ is\ open= +Serial\ monitor\ not\ available\ while\ plotter\ is\ open=Giao di\u1ec7n giao ti\u1ebfp kh\u00f4ng kh\u1ea3 d\u1ee5ng khi s\u01a1 \u0111\u1ed3 \u0111ang m\u1edf #: Serial.java:194 #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=C\u1ed5ng c\u00f3 s\u1ed1 th\u1ee9 t\u1ef1 ''{0}'' kh\u00f4ng \u0111\u01b0\u1ee3c t\u00ecm th\u1ea5y. B\u1ea1n \u0111\u00e3 ch\u1ecdn \u0111\u00fang c\u1ed5ng trong ph\u1ea7n menu C\u00f4ng c\u1ee5 > S\u1ed1 th\u1ee9 t\u1ef1 c\u1ed5ng ch\u01b0a? -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +Serial\ port\ not\ selected.=ch\u01b0a ch\u1ecdn c\u1ed5ng giao ti\u1ebfp + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=C\u1ed5ng c\u00f3 s\u1ed1 hi\u1ec7u {0} kh\u00f4ng \u0111\u01b0\u1ee3c t\u00ecm th\u1ea5y.\nTh\u1eed l\u1ea1i vi\u1ec7c t\u1ea3i d\u1eef li\u1ec7u v\u00e0o bo m\u1ea1ch v\u1edbi m\u1ed9t c\u1ed5ng c\u00f3 s\u1ed1 hi\u1ec7u kh\u00e1c? +Serial\ port\ {0}\ not\ found.=Kh\u00f4ng t\u00ecm th\u1ea5y c\u1ed5ng giao ti\u1ebfp {0} #: ../../../../../app/src/processing/app/Editor.java:65 -!Serial\ ports= +Serial\ ports=C\u00e1c c\u1ed5ng giao ti\u1ebfp #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:84 #, java-format -!Setting\ build\ path\ to\ {0}= +Setting\ build\ path\ to\ {0}=\u0110ang c\u00e0i n\u01a1i l\u01b0u t\u1ec7p tin l\u1eadp tr\u00ecnh \u0111\u1ebfn {0} #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:450 -!Settings= +Settings=C\u00e0i \u0111\u1eb7t #: Base.java:1681 Settings\ issues=C\u00e1c v\u1ea5n \u0111\u1ec1 v\u1ec1 thi\u1ebft l\u1eadp @@ -1383,11 +1427,14 @@ Settings\ issues=C\u00e1c v\u1ea5n \u0111\u1ec1 v\u1ec1 thi\u1ebft l\u1eadp #: Editor.java:641 Show\ Sketch\ Folder=Hi\u1ec3n th\u1ecb th\u01b0 m\u1ee5c Sketch +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +Show\ timestamp=Hi\u1ec7n m\u1ed1c th\u1eddi gian + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =Hi\u1ec3n th\u1ecb verbose trong su\u1ed1t qu\u00e1 tr\u00ecnh nh\u1eadp d\u1eef li\u1ec7u\: #: ../../../../../arduino-core/src/processing/app/I18n.java:31 -!Signal\ Input/Output= +Signal\ Input/Output=C\u1ed5ng V\u00e0o/Ra t\u00edn hi\u1ec7u #: Editor.java:607 Sketch=Sketch @@ -1424,14 +1471,14 @@ Sketchbook\ folder\ disappeared=Th\u01b0 m\u1ee5c Sketchbook \u0111\u00e3 bi\u1e Sketchbook\ location\:=\u0110\u1ecba \u0111i\u1ec3m Sketchbook; #: ../../../processing/app/BaseNoGui.java:428 -!Sketchbook\ path\ not\ defined= +Sketchbook\ path\ not\ defined=Ch\u01b0a x\u00e1c \u0111\u1ecbnh \u0111\u01b0\u1eddng d\u1eabn Sketchbook #: ../../../../../arduino-core//src/cc/arduino/contributions/packages/ContributionsIndexer.java:96 #, java-format -!Skipping\ contributed\ index\ file\ {0},\ parsing\ error\ occured\:= +Skipping\ contributed\ index\ file\ {0},\ parsing\ error\ occured\:=\u0110ang b\u1ecf qua t\u1ec7p in m\u1ee5c l\u1ee5c \u0111\u01b0\u1ee3c \u0111\u00f3ng g\u00f3p {0}, L\u1ed7i khi ph\u00e2n t\u00edch c\u00fa ph\u00e1p\: #: ../../../../../app/src/processing/app/Preferences.java:185 -!Slovak= +Slovak=Ti\u1ebfng Slovakia #: ../../../processing/app/Preferences.java:152 Slovenian=Slovenian @@ -1444,16 +1491,16 @@ Some\ files\ are\ marked\ "read-only",\ so\ you'll\nneed\ to\ re-save\ this\ ske #: ../../../../../arduino-core/src/processing/app/Sketch.java:246 #, java-format -!Sorry,\ the\ folder\ "{0}"\ already\ exists.= +Sorry,\ the\ folder\ "{0}"\ already\ exists.=Xin l\u1ed7i, th\u01b0 m\u1ee5c "{0}' \u0111\u00e3 t\u1ed3n t\u1ea1i #: Preferences.java:115 Spanish=Spanish #: ../../../../../app/src/processing/app/Base.java:2333 -!Specified\ folder/zip\ file\ does\ not\ contain\ a\ valid\ library= +Specified\ folder/zip\ file\ does\ not\ contain\ a\ valid\ library=Th\u01b0 m\u1ee5c/T\u1ec7p tin zip khoog ch\u1ee9a m\u1ed9t th\u01b0 vi\u1ec7n h\u1ee3p l\u1ec7 #: ../../../../../app/src/processing/app/Base.java:466 -!Starting...= +Starting...=\u0110ang kh\u1edfi \u0111\u1ed9ng... #: Base.java:540 Sunshine=B\u00ecnh minh @@ -1465,29 +1512,29 @@ Swedish=Swedish System\ Default=M\u1eb7c \u0111\u1ecbnh theo h\u1ec7 th\u1ed1ng #: ../../../../../app/src/processing/app/Preferences.java:188 -!Talossan= +Talossan=Ti\u1ebfng Talossan #: Preferences.java:116 Tamil=Tamil #: ../../../../../app/src/cc/arduino/i18n/Languages.java:102 -!Telugu= +Telugu=Ti\u1ebfng Tegulu #: ../../../../../app/src/cc/arduino/i18n/Languages.java:100 -!Thai= +Thai=Ti\u1ebfng Th\u00e1i #: debug/Compiler.java:414 The\ 'BYTE'\ keyword\ is\ no\ longer\ supported.=T\u1eeb kh\u00f3a 'BYTE' kh\u00f4ng c\u00f2n \u0111\u01b0\u1ee3c h\u1ed7 tr\u1ee3. #: ../../../processing/app/BaseNoGui.java:484 -!The\ --upload\ option\ supports\ only\ one\ file\ at\ a\ time= +The\ --upload\ option\ supports\ only\ one\ file\ at\ a\ time=L\u1ef1a ch\u1ecdn -T\u1ea3i l\u00ean ch\u1ec9 h\u1ed7 tr\u1ee3 m\u1ed9 t\u1ec7p tin m\u1ed9t l\u1ea7n #: debug/Compiler.java:426 The\ Client\ class\ has\ been\ renamed\ EthernetClient.=L\u1edbp Client \u0111\u00e3 \u0111\u01b0\u1ee3c chuy\u1ec3n t\u00ean th\u00e0nh EthernetClient. #: ../../../../../app/src/cc/arduino/contributions/BuiltInCoreIsNewerCheck.java:96 #, java-format -!The\ IDE\ includes\ an\ updated\ {0}\ package,\ but\ you're\ using\ an\ older\ one.\nDo\ you\ want\ to\ upgrade\ {0}?= +The\ IDE\ includes\ an\ updated\ {0}\ package,\ but\ you're\ using\ an\ older\ one.\nDo\ you\ want\ to\ upgrade\ {0}?=IDE n\u00e0y c\u00f3 bao g\u1ed3m m\u1ed9t g\u00f3i m\u1edbi nh\u1ea5t \:{0}, nh\u01b0ng b\u1ea1n \u0111ang d\u00f9ng c\u00e1i c\u0169\nB\u1ea1n c\u00f3 mu\u1ed1n c\u1eadp nh\u1eadt {0} kh\u00f4ng ? #: debug/Compiler.java:420 The\ Server\ class\ has\ been\ renamed\ EthernetServer.=L\u1edbp Server \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ed5i t\u00ean th\u00e0nh EthernetServer. @@ -1496,18 +1543,22 @@ The\ Server\ class\ has\ been\ renamed\ EthernetServer.=L\u1edbp Server \u0111\u The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=L\u1edbp Udp \u0111\u00e3 \u0111\u01b0\u1ee3c chuy\u1ec3n t\u00ean th\u00e0nh EthernetUdp. #: ../../../../../arduino-core/src/processing/app/BaseNoGui.java:177 -!The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed.= +The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed.=Bo m\u1ea1ch \u0111ang \u0111\u01b0\u1ee3c chon c\u1ea7n ph\u1ea7n m\u1ec1m c\u1ed1t l\u00f5i '{0}' ch\u01b0a \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1ea1t #: Editor.java:2147 #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=T\u1eadp tin "{0}" c\u1ea7n \u0111\u01b0\u1ee3c \u0111\u1eb7t trong\nm\u1ed9t th\u01b0 m\u1ee5c sketch \u0111\u01b0\u1ee3c \u0111\u1eb7t t\u00ean "{1}".\nT\u1ea1o th\u01b0 m\u1ee5c n\u00e0y, sau \u0111\u00f3 di chuy\u1ec3n t\u1eadp tin v\u00e0o trong, v\u00e0 ti\u1ebfp t\u1ee5c? +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=Th\u01b0 vi\u1ec7n "{0}" kh\u00f4ng th\u1ec3 s\u1eed d\u1ee5ng.\nT\u00ean th\u01b0 m\u1ee5c th\u01b0 vi\u1ec7n ph\u1ea3i b\u1eaft \u0111\u1ea7u b\u1eb1ng m\u1ed9t s\u1ed1 ho\u1eb7c ch\u1eef, ti\u1ebfp theo l\u00e0 ch\u1eef, s\u1ed1, g\u1ea1ch ngang, d\u1ea5u ch\u1ea5m v\u00e0 g\u1ea1ch d\u01b0\u1edbi. \u0110\u1ed9 d\u00e0i kh\u00f4ng qu\u00e1 63 k\u00ed t\u1ef1 + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=Th\u01b0 vi\u1ec7n "{0}" kh\u00f4ng th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng.\nT\u00ean th\u01b0 vi\u1ec7n ch\u1ec9 \u0111\u01b0\u1ee3c ch\u1ee9a c\u00e1c ch\u1eef c\u00e1i c\u01a1 b\u1ea3n v\u00e0 s\u1ed1 k\u00e8m theo.\n(ch\u1ec9 bao g\u1ed3m c\u00e1c k\u00fd t\u1ef1 ASCII vi\u1ebft li\u1ec1n nhau kh\u00f4ng c\u00e1ch kho\u1ea3ng, kh\u00f4ng \u0111\u01b0\u1ee3c b\u1eaft \u0111\u1ea7u b\u1eb1ng s\u1ed1) #: ../../../../../app/src/processing/app/SketchController.java:170 -!The\ main\ file\ cannot\ use\ an\ extension= +The\ main\ file\ cannot\ use\ an\ extension=Kh\u00f4ng s\u1eed d\u1ee5ng \u0111\u01b0\u1ee3c m\u1edf r\u1ed9ng cho t\u1ec7p tin ch\u00ednh #: Sketch.java:356 The\ name\ cannot\ start\ with\ a\ period.=T\u00ean kh\u00f4ng th\u1ec3 \u0111\u01b0\u1ee3c b\u1eaft \u0111\u1ea7u v\u1edbi d\u1ea5u ch\u1ea5m. @@ -1521,41 +1572,44 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: ../../../../../arduino-core/src/processing/app/Sketch.java:272 #, java-format -!The\ sketch\ already\ contains\ a\ file\ named\ "{0}"= +The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=Sketch \u0111\u00e3 c\u00f3 m\u1ed9t t\u1ec7p tin t\u00ean "{0}" #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=Th\u01b0 m\u1ee5c sketch \u0111\u00e3 \u0111i b\u1ee5i.\nS\u1ebd c\u1ed1 g\u1eafng l\u01b0u l\u1ea1i l\u1ea7n n\u1eefa \u1edf c\u00f9ng \u0111\u1ecba ch\u1ec9,\nnh\u01b0ng t\u1ea5t c\u1ea3 m\u1ecdi th\u1ee9 ngo\u1ea1i tr\u1eeb m\u00e3 ngu\u1ed3n s\u1ebd b\u1ecb \u0111i b\u1ee5i theo lu\u00f4n. -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.=T\u00ean c\u1ee7a sketch ph\u1ea3i \u0111\u01b0\u1ee3c \u0111\u1ed5i.\nT\u00ean ph\u1ea3i b\u1eaft\u0111\u1ea7u b\u1eb1ng m\u1ed9t ch\u1eef ho\u1eb7c s\u1ed1,ti\u1ebfp theo l\u00e0 ch\u1eef,\ns\u1ed1, g\u1ea1ch ngang,ch\u1ea5m v\u00e0 g\u1ea1ch d\u01b0\u1edbi. \u0110\u1ed9 d\u00e0i t\u1ed1i \u0111a l\u00e0 63 k\u00ed t\u1ef1 #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=Th\u01b0 m\u1ee5c sketchbook kh\u00f4ng c\u00f2n hi\u1ec7n h\u1eefu trong h\u1ec7 th\u1ed1ng.\nArduino s\u1ebd t\u1ef1 \u0111\u1ed5ng chuy\u1ec3n \u0111\u1ebfn sketchbook m\u1eb7c \u0111\u1ecbnh\nv\u00e0 t\u1ea1o m\u1ed9t th\u01b0 m\u1ee5c sketchbook m\u1edbi n\u1ebfu c\u1ea7n thi\u1ebft. Arduino s\u1ebd\nd\u1eebng l\u1ea1i vi\u1ec7c th\u00f4ng b\u00e1o n\u00e0y v\u1edbi ng\u01b0\u1eddi d\u00f9ng kh\u00e1c. #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 -!The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=Th\u01b0 m\u1ee5c sketchbook \u0111\u01b0\u1ee3c ch\u1ecdn ch\u1ee9a m\u1ed9t b\u1ea3n c\u1ee7a IDE.\nVui l\u00f2ng ch\u1ecdn m\u1ed9t th\u01b0 m\u1ee5c kh\u00e1c cho sketchbook c\u1ee7a b\u1ea1n + +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +Theme\:\ =Ch\u1ee7 \u0111\u1ec1\: #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 -!This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= +This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=Th\u01b0 vi\u00ean n\u00e0y kh\u00f4ng c\u00f3 tr\u00ean tr\u00ecnh qu\u1ea3n l\u00fd th\u01b0 vi\u1ec7n. B\u1ea1n s\u1ec5 kh\u00f4ng th\u1ec3 t\u1ea3i l\u1ea1i t\u1eeb \u0111\u00f3.\nB\u1ea1n c\u00f3 ch\u1eafc mu\u1ed1n x\u00f3a th\u01b0 vi\u1ec7n n\u00e0y kh\u00f4ng ? #: ../../../../../app/src/processing/app/EditorStatus.java:349 -!This\ report\ would\ have\ more\ information\ with\n"Show\ verbose\ output\ during\ compilation"\noption\ enabled\ in\ File\ ->\ Preferences.\n= +This\ report\ would\ have\ more\ information\ with\n"Show\ verbose\ output\ during\ compilation"\noption\ enabled\ in\ File\ ->\ Preferences.\n=B\u1ea3n b\u00e1o c\u00e1o n\u00e0y s\u1ebd c\u00f3 nhi\u1ec1u th\u00f4ng tin h\u01a1n v\u1edbi l\u1ef1a ch\u1ecdn "Hi\u1ec7n th\u00f4ng tin \u0111\u1ea7y \u0111\u1ee7 khi bi\u00ean so\u1ea1n"\ntrong menu T\u1ec7p tin -> T\u00f9y bi\u1ebfn\n #: Base.java:535 Time\ for\ a\ Break=Ngh\u1ec9 ng\u01a1i m\u1ed9t ch\u00fat \u0111i n\u00e0o #: ../../../../../arduino-core/src/processing/app/I18n.java:34 -!Timing= +Timing=\u0110\u1ecbnh gi\u1edd #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:94 #, java-format -!Tool\ {0}\ is\ not\ available\ for\ your\ operating\ system.= +Tool\ {0}\ is\ not\ available\ for\ your\ operating\ system.=\ C\u00f4ng c\u1ee5 {0} kh\u00f4ng c\u00f3 s\u1eb5n tr\u00ean h\u1ec7 \u0111i\u1ec1u h\u00e0nh c\u1ee7a b\u1ea1n #: Editor.java:663 Tools=C\u00f4ng c\u1ee5 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:97 -!Topic= +Topic=\u0110\u1ec1 m\u1ee5c\: #: Editor.java:1070 Troubleshooting=Tr\u1ee3 gi\u00fap v\u1ec1 l\u1ed7i @@ -1565,7 +1619,7 @@ Turkish=Turkish #: ../../../../../app/src/cc/arduino/contributions/ui/InstallerJDialog.java:109 #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:105 -!Type= +Type=Lo\u1ea1i #: ../../../processing/app/Editor.java:2507 Type\ board\ password\ to\ access\ its\ console=Lo\u1ea1i m\u1eadt kh\u1ea9u bo m\u1ea1ch \u0111\u1ec3 truy c\u1eadp ph\u1ea7n m\u00e3 l\u1ec7nh @@ -1578,7 +1632,7 @@ Ukrainian=Ukrainian #: ../../../../../arduino-core/src/cc/arduino/packages/uploaders/SSHUploader.java:142 #, java-format -!Unable\ to\ connect\ to\ {0}= +Unable\ to\ connect\ to\ {0}=Kh\u00f4ng th\u1ec3 k\u1ebft n\u1ed1i \u0111\u1ebfn {0} #: ../../../processing/app/Editor.java:2524 #: ../../../processing/app/NetworkMonitor.java:145 @@ -1592,41 +1646,41 @@ Unable\ to\ connect\:\ wrong\ password?=Kh\u00f4ng th\u1ec3 k\u1ebft n\u1ed1i\: #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:65 #, java-format -!Unable\ to\ find\ {0}\ in\ {1}= +Unable\ to\ find\ {0}\ in\ {1}=Kh\u00f4ng t\u00ecm th\u1ea5y {0} trong {1} #: ../../../processing/app/Editor.java:2512 Unable\ to\ open\ serial\ monitor=Kh\u00f4ng th\u1ec3 m\u1edf ph\u1ea7n gi\u00e1m s\u00e1t m\u00e3 hi\u1ec7u #: ../../../../../app/src/processing/app/Editor.java:2709 -!Unable\ to\ open\ serial\ plotter= +Unable\ to\ open\ serial\ plotter=Kh\u00f4ng th\u1ec3 m\u1edf s\u01a1 \u0111\u1ed3 truy\u1ec1n th\u00f4ng #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:94 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:89 -!Unable\ to\ reach\ Arduino.cc\ due\ to\ possible\ network\ issues.= +Unable\ to\ reach\ Arduino.cc\ due\ to\ possible\ network\ issues.=Kh\u00f4ng th\u1ec3 giao ti\u1ebfp v\u1edbi Arduino.cc do c\u00f3 th\u1ec3 c\u00f3 s\u1ef1 c\u1ed1 v\u1ec1 m\u1ea1ng #: ../../../../../arduino-core/src/processing/app/I18n.java:38 -!Uncategorized= +Uncategorized=Ch\u01b0a \u0111\u01b0\u1ee3c s\u1eafp x\u1ebfp #: Editor.java:1133 Editor.java:1355 Undo=H\u1ee7y thao t\u00e1c #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:85 #, java-format -!Unhandled\ type\ {0}\ in\ context\ key\ {1}= +Unhandled\ type\ {0}\ in\ context\ key\ {1}=Unhandled type {0} in context key {1} #: ../../../../../app//src/processing/app/Editor.java:2818 -!Unknown\ board= +Unknown\ board=Bo m\u1ea1ch ch\u01b0a bi\u1ebft #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:86 #, java-format -!Unknown\ sketch\ file\ extension\:\ {0}= +Unknown\ sketch\ file\ extension\:\ {0}=T\u1ec7p tin m\u1edf r\u1ed9ng sketch ch\u01b0a bi\u1ebft\: {0} #: Platform.java:168 Unspecified\ platform,\ no\ launcher\ available.\nTo\ enable\ opening\ URLs\ or\ folders,\ add\ a\ \n"launcher\=/path/to/app"\ line\ to\ preferences.txt=Kh\u00f4ng x\u00e1c \u0111\u1ecbnh \u0111\u01b0\u1ee3c n\u1ec1n t\u1ea3ng, kh\u00f4ng th\u1ec3 ch\u1ea1y ph\u1ea7n k\u00edch ho\u1ea1t.\n\u0110\u1ec3 c\u00f3 th\u1ec3 m\u1edf URL ho\u1eb7c th\u01b0 m\u1ee5c, th\u00eam\nd\u00f2ng "launcher\=/path/to/app" v\u00e0o preferences.txt #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/DropdownUpdatableLibrariesItem.java:27 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/DropdownUpdatableCoresItem.java:27 -!Updatable= +Updatable=C\u00f3 th\u1ec3 c\u1eadp nh\u1eadt #: UpdateCheck.java:111 Update=C\u1eadp nh\u1eadt @@ -1636,18 +1690,18 @@ Update\ sketch\ files\ to\ new\ extension\ on\ save\ (.pde\ ->\ .ino)=C\u1eadp n #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:88 #, java-format -!Updates\ available\ for\ some\ of\ your\ {0}boards{1}= +Updates\ available\ for\ some\ of\ your\ {0}boards{1}=C\u00f3 b\u1ea3n c\u1eadp nh\u1eadt d\u00e0nh cho {0} bo m\u1ea1ch {1} c\u1ee7a b\u1ea1n #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:90 #, java-format -!Updates\ available\ for\ some\ of\ your\ {0}boards{1}\ and\ {2}libraries{3}= +Updates\ available\ for\ some\ of\ your\ {0}boards{1}\ and\ {2}libraries{3}=C\u00f3 b\u1ea3n c\u1eadp nh\u1eadt d\u00e0nh cho {0} bo m\u1ea1ch {1} v\u00e0 {2} th\u01b0 vi\u1ec7n {3} c\u1ee7a b\u1ea1n #: ../../../../../app/src/cc/arduino/contributions/ContributionsSelfCheck.java:86 #, java-format -!Updates\ available\ for\ some\ of\ your\ {0}libraries{1}= +Updates\ available\ for\ some\ of\ your\ {0}libraries{1}=C\u00f3 b\u1ea3n c\u1eadp nh\u1eadt d\u00e0nh cho m\u1ed9t s\u1ed1 {0} th\u01b0 vi\u1ec7n {1} c\u1ee7a b\u1ea1n #: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:167 -!Updating\ list\ of\ installed\ libraries= +Updating\ list\ of\ installed\ libraries=\u0110ang c\u1eadp nh\u1eadt danh s\u00e1ch nh\u1eefng th\u01b0 vi\u1ec7n \u0111\u00e3 \u0111\u01b0\u1ee3c c\u00e0i \u0111\u1eb7t #: EditorToolbar.java:41 Editor.java:545 Upload=T\u1ea3i l\u00ean @@ -1656,7 +1710,7 @@ Upload=T\u1ea3i l\u00ean Upload\ Using\ Programmer=\u0110ang t\u1ea3i s\u1eed d\u1ee5ng d\u01b0\u1edbi d\u1ea1ng ng\u01b0\u1eddi l\u1eadp tr\u00ecnh #: ../../../../../app//src/processing/app/Editor.java:2814 -!Upload\ any\ sketch\ to\ obtain\ it= +Upload\ any\ sketch\ to\ obtain\ it=T\u1ea3i l\u00ean b\u1ea5t k\u00ec sketch n\u00e0o \u0111\u1ec3 l\u1ea5y #: Editor.java:2403 Editor.java:2439 Upload\ canceled.=\u0110\u00e3 h\u1ee7y b\u1ecf ti\u1ebfn tr\u00ecnh t\u1ea3i d\u1eef li\u1ec7u. @@ -1678,11 +1732,11 @@ Use\ external\ editor=S\u1eed d\u1ee5ng tr\u00ecnh bi\u00ean so\u1ea1n b\u1ed5 s #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:493 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:499 -!Username\:= +Username\:=T\u00ean ng\u01b0\u1eddi d\u00f9ng\: #: ../../../processing/app/debug/Compiler.java:410 #, java-format -!Using\ library\ {0}\ at\ version\ {1}\ in\ folder\:\ {2}\ {3}= +Using\ library\ {0}\ at\ version\ {1}\ in\ folder\:\ {2}\ {3}=\u0110ang s\u1eed d\u1ee5ng th\u01b0 vi\u1ec7n {0} phi\u00ean b\u1ea3n {1} trong th\u01b0 m\u1ee5c\: {2} {3} #: ../../../processing/app/debug/Compiler.java:94 #, java-format @@ -1699,27 +1753,27 @@ Verify=X\u00e1c \u0111\u1ecbnh Verify\ code\ after\ upload=X\u00e1c nh\u1eadn m\u00e3 l\u1eadp tr\u00ecnh sau khi t\u1ea3i l\u00ean #: ../../../../../app/src/processing/app/Editor.java:725 -!Verify/Compile= +Verify/Compile=X\u00e1c nh\u1eadn / Bi\u00ean d\u1ecbch #: ../../../../../app/src/processing/app/Base.java:451 -!Verifying\ and\ uploading...= +Verifying\ and\ uploading...=\u0110ang x\u00e1c nh\u1eadn v\u00e0 t\u1ea3i l\u00ean #: ../../../cc/arduino/contributions/DownloadableContributionsDownloader.java:71 -!Verifying\ archive\ integrity...= +Verifying\ archive\ integrity...=\u0110ang ki\u1ec3m tra t\u00ednh nguy\u00ean v\u1eb9n c\u1ee7a t\u1ec7p l\u01b0u tr\u1eef #: ../../../../../app/src/processing/app/Base.java:454 -!Verifying...= +Verifying...=\ \u0110ang x\u00e1c \u0111\u1ecbnh #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:328 #, java-format -!Version\ {0}= +Version\ {0}=Phi\u00ean b\u1ea3n {0} #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/ContributedLibraryTableCell.java:326 -!Version\ unknown= +Version\ unknown=Phi\u00ean b\u1ea3n ch\u01b0a bi\u1ebft #: ../../../cc/arduino/contributions/libraries/ContributedLibrary.java:97 #, java-format -!Version\ {0}= +Version\ {0}=Phi\u00ean b\u1ea3n {0} #: ../../../processing/app/Preferences.java:154 Vietnamese=Vi\u1ec7t Nam @@ -1729,46 +1783,46 @@ Visit\ Arduino.cc=Truy c\u1eadp Arduino.cc #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:90 #, java-format -!WARNING\:\ Category\ '{0}'\ in\ library\ {1}\ is\ not\ valid.\ Setting\ to\ '{2}'= +WARNING\:\ Category\ '{0}'\ in\ library\ {1}\ is\ not\ valid.\ Setting\ to\ '{2}'=C\u1ea2NH B\u00c1O\: Th\u1ec3 lo\u1ea1i '{0}' trong th\u01b0 vi\u1ec7n {1} kh\u00f4ng h\u1ee3p l\u1ec7. \u0110ang c\u00e0i l\u1ea1i th\u00e0nh {2} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:93 #, java-format -!WARNING\:\ Spurious\ {0}\ folder\ in\ '{1}'\ library= +WARNING\:\ Spurious\ {0}\ folder\ in\ '{1}'\ library=C\u1ea2NH B\u00c1O\: T\u1ec7p tin gi\u1ea3 m\u1ea1o {0} t\u1ea1i th\u01b0 vi\u1ec7n {1} #: ../../../processing/app/debug/Compiler.java:115 #, java-format -!WARNING\:\ library\ {0}\ claims\ to\ run\ on\ {1}\ architecture(s)\ and\ may\ be\ incompatible\ with\ your\ current\ board\ which\ runs\ on\ {2}\ architecture(s).= +WARNING\:\ library\ {0}\ claims\ to\ run\ on\ {1}\ architecture(s)\ and\ may\ be\ incompatible\ with\ your\ current\ board\ which\ runs\ on\ {2}\ architecture(s).=C\u1ea2NH B\u00c1O\:Th\u01b0 vi\u1ec7n {0} ch\u1ea1y tr\u00ean (c\u00e1c) ki\u1ebfn tr\u00fac {1} v\u00e0 c\u00f3 th\u1ec3 kh\u00f4ng t\u01b0\u01a1ng th\u00edch v\u1edbi bo m\u1ea1ch c\u1ee7a b\u1ea1n m\u00e0 n\u00f3 ch\u1ea1y tr\u00ean (c\u00e1c) ki\u1ebfn tr\u00fac {2} #: Base.java:2128 Warning=C\u1ea3nh b\u00e1o #: ../../../processing/app/debug/Compiler.java:1295 -!Warning\:\ This\ core\ does\ not\ support\ exporting\ sketches.\ Please\ consider\ upgrading\ it\ or\ contacting\ its\ author= +Warning\:\ This\ core\ does\ not\ support\ exporting\ sketches.\ Please\ consider\ upgrading\ it\ or\ contacting\ its\ author=C\u1ea3nh b\u00e1o\: Ph\u1ea7n m\u1ec1m c\u1ed1t l\u00f5i hi\u1ec7n t\u1ea1i kh\u00f4ng h\u1ed7 tr\u1ee3 xu\u1ea5t c\u00e1c sketch. H\u00e3y c\u1eadp nh\u1eadt ho\u1eb7c li\u00ean h\u1ec7 v\u1edbi t\u00e1c gi\u1ea3 #: ../../../cc/arduino/utils/ArchiveExtractor.java:197 #, java-format -!Warning\:\ file\ {0}\ links\ to\ an\ absolute\ path\ {1}= +Warning\:\ file\ {0}\ links\ to\ an\ absolute\ path\ {1}=C\u1ea3nh b\u00e1o\: T\u1ec7p {0} \u0111\u01b0\u1ee3c li\u00ean k\u1ebft v\u1edbi m\u1ed9t \u0111\u01b0\u1eddng d\u1eabn \u0111\u1ea7y \u0111\u1ee7 {1} #: ../../../cc/arduino/contributions/packages/ContributionsIndexer.java:133 -!Warning\:\ forced\ trusting\ untrusted\ contributions= +Warning\:\ forced\ trusting\ untrusted\ contributions=C\u1ea3nh b\u00e1o\: \u0110\u00e3 b\u1eaft bu\u1ed9c tin nh\u1eefng \u0111\u00f3ng g\u00f3p ch\u01b0a ki\u1ec3m ch\u00fang #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:217 #, java-format -!Warning\:\ forced\ untrusted\ script\ execution\ ({0})= +Warning\:\ forced\ untrusted\ script\ execution\ ({0})=C\u1ea3nh b\u00e1o\: \u0110\u00e3 b\u1eaft bu\u1ed9c ch\u1ea1y l\u1ec7nh ch\u01b0a ki\u1ec3m ch\u1ee9ng ({0}) #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:212 #, java-format -!Warning\:\ non\ trusted\ contribution,\ skipping\ script\ execution\ ({0})= +Warning\:\ non\ trusted\ contribution,\ skipping\ script\ execution\ ({0})=C\u1ea3nh b\u00e1o\: \u0110\u00f3ng g\u00f3p ch\u01b0a \u0111\u01b0\u1ee3c ki\u1ec3m ch\u1ee9ng, \u0111ang b\u1ecf th\u1ef1c thi l\u1ec7nh ({0}) #: ../../../processing/app/debug/LegacyTargetPlatform.java:158 #, java-format -!Warning\:\ platform.txt\ from\ core\ '{0}'\ contains\ deprecated\ {1},\ automatically\ converted\ to\ {2}.\ Consider\ upgrading\ this\ core.= +Warning\:\ platform.txt\ from\ core\ '{0}'\ contains\ deprecated\ {1},\ automatically\ converted\ to\ {2}.\ Consider\ upgrading\ this\ core.=C\u1ea3nh b\u00e1o\: T\u1ec7p platform.txt t\u1eeb ph\u1ea7n m\u1ec1m c\u1ed1t l\u00f5i '{0}' ch\u1ee9a n\u1ec1n t\u1ea3ng c\u0169 {1}, \u0111\u00e3 t\u1ef1 \u0111\u1ed9ng chuy\u1ec3n th\u00e0nh {2}.H\u00e3y n\u00e2ng c\u1ea5p ph\u1ea7n m\u1ec1m c\u1ed1t l\u00f5ic\u1ee7a b\u1ea1n #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:91 -!Warning\:\ platform.txt\ from\ core\ '{0}'\ misses\ property\ '{1}',\ using\ default\ value\ '{2}'.\ Consider\ upgrading\ this\ core.= +Warning\:\ platform.txt\ from\ core\ '{0}'\ misses\ property\ '{1}',\ using\ default\ value\ '{2}'.\ Consider\ upgrading\ this\ core.=C\u1ea3nh b\u00e1o\: t\u1ec7p platform.txt t\u1eeb ph\u1ea7n m\u1ec1m l\u00f5i '{0}' thi\u1ebfu t\u00ednh ch\u1ea5t '{1}', \u0111ang s\u1eed d\u1ee5ng gi\u00e1 tr\u1ecb m\u1eb7c \u0111\u1ecbnh '{2}'. H\u00e3y n\u00e2ng c\u1ea5pph\u1ea7n m\u1ec1m l\u00f5i n\u00e0y #: ../../../../../app/src/processing/app/Preferences.java:190 -!Western\ Frisian= +Western\ Frisian=T\u1ebfng t\u00e2y Frisia #: debug/Compiler.java:444 Wire.receive()\ has\ been\ renamed\ Wire.read().=Wire.receive() \u0111\u00e3 \u0111\u01b0\u1ee3c \u0111\u1ed5i t\u00ean th\u00e0nh Wire.read(). @@ -1786,7 +1840,7 @@ Wrong\ microcontroller\ found.\ \ Did\ you\ select\ the\ right\ board\ from\ the Yes=\u0110\u1ed3ng \u00fd #: ../../../../../app/src/processing/app/Base.java:2312 -!You\ can't\ import\ a\ folder\ that\ contains\ your\ sketchbook= +You\ can't\ import\ a\ folder\ that\ contains\ your\ sketchbook=Banjm kh\u00f4ng th\u1ec3 ch\u00e8n m\u1ed9t th\u01b0 m\u1ee5c ch\u1ee9a sketchbook c\u1ee7a b\u1ea1n #: Sketch.java:883 You\ cannot\ save\ the\ sketch\ into\ a\ folder\ninside\ itself.\ This\ would\ go\ on\ forever.=B\u1ea1n kh\u00f4ng th\u1ec3 l\u01b0u sketch trong m\u1ed9t th\u01b0 m\u1ee5c\nb\u00ean trong n\u00f3. Th\u00f4ng b\u00e1o n\u00e0y s\u1ebd l\u1eb7p l\u1ea1i li\u00ean t\u1ee5c. @@ -1795,7 +1849,7 @@ You\ cannot\ save\ the\ sketch\ into\ a\ folder\ninside\ itself.\ This\ would\ g You\ forgot\ your\ sketchbook=B\u1ea1n qu\u00ean ph\u1ea7n Sketbook r\u1ed3i #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:252 -!You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.= +You\ have\ unsaved\ changes\!\nYou\ must\ save\ all\ your\ sketches\ to\ enable\ this\ option.=B\u1ea1n c\u00f3 nh\u1eefngthay \u0111\u1ed5i ch\u01b0a l\u01b0u \!\nB\u1ea1n ph\u1ea3i l\u01b0u t\u1ea5t c\u1ea3 c\u00e1c sketch c\u1ee7a b\u1ea1n \u0111\u1ec3 k\u00edch ho\u1ea1t l\u1ef1a ch\u1ecdn n\u00e0y #: ../../../processing/app/AbstractMonitor.java:92 You've\ pressed\ {0}\ but\ nothing\ was\ sent.\ Should\ you\ select\ a\ line\ ending?=B\u1ea1n \u0111\u00e3 nh\u1ea5n {0} nh\u01b0ng v\u1eabn ch\u01b0a c\u00f3 d\u1eef li\u1ec7u n\u00e0o \u0111\u01b0\u1ee3c g\u1eedi. Li\u1ec7u ch\u0103ng b\u1ea1n n\u00ean ch\u1ecdn m\u1ed9t d\u00f2ng k\u1ebft th\u00fac? @@ -1804,10 +1858,10 @@ You've\ pressed\ {0}\ but\ nothing\ was\ sent.\ Should\ you\ select\ a\ line\ en You've\ reached\ the\ limit\ for\ auto\ naming\ of\ new\ sketches\nfor\ the\ day.\ How\ about\ going\ for\ a\ walk\ instead?=B\u1ea1n \u0111\u00e3 v\u01b0\u1ee3t ng\u01b0\u1ee1ng t\u1ed1i \u0111a cho s\u1ed1 l\u1ea7n t\u1ef1 \u0111\u1ed9ng \u0111\u1ed5i t\u00ean v\u1edbi c\u00e1c sketche m\u1edbi\ntrong ng\u00e0y h\u00f4m nay. U\u1ed1ng t\u00e1ch c\u00e0 ph\u00ea gi\u1ea3i tr\u00ed \u0111i n\u00e0o? #: ../../../processing/app/BaseNoGui.java:768 -!Your\ copy\ of\ the\ IDE\ is\ installed\ in\ a\ subfolder\ of\ your\ settings\ folder.\nPlease\ move\ the\ IDE\ to\ another\ folder.= +Your\ copy\ of\ the\ IDE\ is\ installed\ in\ a\ subfolder\ of\ your\ settings\ folder.\nPlease\ move\ the\ IDE\ to\ another\ folder.=B\u1ea3n c\u00e0i \u0111\u1eb7t IDE c\u1ee7a b\u1ea1n \u0111\u01b0\u1ee3c \u0111\u1eb7t trong m\u1ed9t th\u01b0 m\u1ee5c con c\u1ee7a th\u01b0 m\u1ee5c c\u00e0i \u0111\u1eb7t c\u1ee7a ban.\nVui l\u00f2ng chuy\u1ec3n n\u00f3 sang m\u1ed9t n\u01a1i kh\u00e1c #: ../../../processing/app/BaseNoGui.java:771 -!Your\ copy\ of\ the\ IDE\ is\ installed\ in\ a\ subfolder\ of\ your\ sketchbook.\nPlease\ move\ the\ IDE\ to\ another\ folder.= +Your\ copy\ of\ the\ IDE\ is\ installed\ in\ a\ subfolder\ of\ your\ sketchbook.\nPlease\ move\ the\ IDE\ to\ another\ folder.=B\u1ea3n c\u00e0i \u0111\u1eb7t IDE c\u1ee7a b\u1ea1n \u0111\u01b0\u1ee3c \u0111\u1eb7t trong m\u1ed9t th\u01b0 m\u1ee5c con c\u1ee7a th\u01b0 m\u1ee5c sketchbook c\u1ee7a ban.\nVui l\u00f2ng chuy\u1ec3n n\u00f3 sang m\u1ed9t n\u01a1i kh\u00e1c #: Base.java:2638 ZIP\ files\ or\ folders=T\u1eadp tin \u0111\u00e3 n\u00e9n ho\u1eb7c th\u01b0 m\u1ee5c @@ -1821,7 +1875,7 @@ Zip\ doesn't\ contain\ a\ library=T\u1eadp tin n\u00e9n kh\u00f4ng ch\u1ee9a b\u #: ../../../../../arduino-core/src/processing/app/SketchCode.java:201 #, java-format -!"{0}"\ contains\ unrecognized\ characters.\ If\ this\ code\ was\ created\ with\ an\ older\ version\ of\ Arduino,\ you\ may\ need\ to\ use\ Tools\ ->\ Fix\ Encoding\ &\ Reload\ to\ update\ the\ sketch\ to\ use\ UTF-8\ encoding.\ If\ not,\ you\ may\ need\ to\ delete\ the\ bad\ characters\ to\ get\ rid\ of\ this\ warning.= +"{0}"\ contains\ unrecognized\ characters.\ If\ this\ code\ was\ created\ with\ an\ older\ version\ of\ Arduino,\ you\ may\ need\ to\ use\ Tools\ ->\ Fix\ Encoding\ &\ Reload\ to\ update\ the\ sketch\ to\ use\ UTF-8\ encoding.\ If\ not,\ you\ may\ need\ to\ delete\ the\ bad\ characters\ to\ get\ rid\ of\ this\ warning.="{0}" ch\u1ee9a c\u00e1c k\u00ed t\u1ef1 kh\u00f4ng bi\u1ebft. N\u1ebfu m\u00e3 n\u00e0y \u0111\u01b0\u1ee3c t\u1ea1o v\u1edbi m\u1ed9t b\u1ea3n c\u0169 h\u01a1n c\u1ee7a Arduino, b\u1ea1n c\u00f3 th\u1ec3 s\u1ebd ph\u1ea3i s\u1eed d\u1ee5ng C\u00f4ng c\u1ee5 -> S\u1eeda l\u1ed7i m\u00e3 h\u00f3a & T\u1ea3i l\u1ea1i \u0111\u1ec3 s\u1eed d\u1ee5ng v\u1edbi d\u1ea1ng m\u00e3 h\u00f3a UTF-8. N\u1ebfu kh\u00f4ng, b\u1ea1n c\u00f3 th\u1ec3 s\u1ebd ph\u1ea3i x\u00f3a nh\u1eefng k\u00ed t\u1ef1 \u0111\u00f3 \u0111i \u0111\u1ec3 kh\u1eafc ph\u1ee5c l\u1ed7i n\u00e0y #: debug/Compiler.java:409 \nAs\ of\ Arduino\ 0019,\ the\ Ethernet\ library\ depends\ on\ the\ SPI\ library.\nYou\ appear\ to\ be\ using\ it\ or\ another\ library\ that\ depends\ on\ the\ SPI\ library.\n\n=\nT\u1eeb phi\u00ean b\u1ea3n Arduino 0019, th\u01b0 vi\u1ec7n Ethernet ph\u1ee5 thu\u1ed9c v\u00e0o th\u01b0 vi\u1ec7n SPI.\nB\u1ea1n \u0111ang s\u1eed d\u1ee5ng th\u01b0 vi\u1ec7n n\u00e0y ho\u1eb7c m\u1ed9t th\u01b0 vi\u1ec7n n\u00e0o \u0111\u00f3 ph\u1ee5 thu\u1ed9c v\u00e0o th\u01b0 vi\u1ec7n SPI.\n\n @@ -1854,7 +1908,7 @@ compilation\ =bi\u00ean d\u1ecbch connected\!=\u0111\u00e3 k\u1ebft n\u1ed1i\! #: ../../../../../app/src/processing/app/Editor.java:1352 -!http\://www.arduino.cc/= +http\://www.arduino.cc/=http\://www.arduino.cc/ #: UpdateCheck.java:118 http\://www.arduino.cc/en/Main/Software=http\://www.arduino.cc/en/Main/Software @@ -1869,6 +1923,11 @@ ignoring\ invalid\ font\ size\ {0}=b\u1ecf qua ki\u1ec3u ch\u1eef kh\u00f4ng h\u #: Editor.java:936 Editor.java:943 name\ is\ null=t\u00ean b\u1ecb r\u1ed7ng +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +no\ headers\ files\ (.h)\ found\ in\ {0}=Kh\u00f4ng c\u00f3 t\u1ec7p headers (.h) t\u00ecm \u0111\u01b0\u1ee3c trong {0} + #: Editor.java:932 serialMenu\ is\ null=serialMenu b\u1ecb r\u1ed7ng @@ -1878,27 +1937,27 @@ the\ selected\ serial\ port\ {0}\ does\ not\ exist\ or\ your\ board\ is\ not\ co #: ../../../processing/app/Base.java:389 #, java-format -!unknown\ option\:\ {0}= +unknown\ option\:\ {0}=L\u1ef1a ch\u1ecdn ch\u01b0a bi\u1ebft\: {0} #: Preferences.java:391 upload=t\u1ea3i l\u00ean #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:324 #, java-format -!version\ {0}= +version\ {0}=phi\u00ean b\u1ea3n {0} #: ../../../../../app/src/processing/app/Editor.java:2243 #, java-format -!{0}\ -\ {1}\ |\ Arduino\ {2}= +{0}\ -\ {1}\ |\ Arduino\ {2}={0} - {1} | Arduino {2} #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:39 #: ../../../cc/arduino/contributions/SignatureVerificationFailedException.java:43 #, java-format -!{0}\ file\ signature\ verification\ failed= +{0}\ file\ signature\ verification\ failed=\ Kh\u00f4ng th\u1ec3 ki\u1ec3m tra ch\u1eef k\u00fd t\u1ec7p {0} #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:310 #, java-format -!{0}\ file\ signature\ verification\ failed.\ File\ ignored.= +{0}\ file\ signature\ verification\ failed.\ File\ ignored.=\ Kh\u00f4ng th\u1ec3 ki\u1ec3m tra ch\u1eef k\u00fd t\u1ec7p {0}. \u0110\u00e3 b\u1ecf qua ki\u1ec3m tra t\u1ec7p n\u00e0y #: Editor.java:380 #, java-format @@ -1914,11 +1973,11 @@ upload=t\u1ea3i l\u00ean #: ../../../../../app/src/processing/app/EditorLineStatus.java:109 #, java-format -!{0}\ on\ {1}= +{0}\ on\ {1}={0} tr\u00ean {1} #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:78 #, java-format -!{0}\ pattern\ is\ missing= +{0}\ pattern\ is\ missing=Th\u1ebfu m\u1eabu {0} #: debug/Compiler.java:365 #, java-format @@ -1930,23 +1989,23 @@ upload=t\u1ea3i l\u00ean #: ../../../processing/app/Base.java:519 #, java-format -!{0}\:\ Invalid\ argument\ to\ --pref,\ should\ be\ of\ the\ form\ "pref\=value"= +{0}\:\ Invalid\ argument\ to\ --pref,\ should\ be\ of\ the\ form\ "pref\=value"={0}\: C\u00fa ph\u00e1p kh\u00f4ng h\u1ee3p l\u00ed cho -pref, n\u00ean c\u00f3 d\u1ea1ng nhu "pref\=value" #: ../../../processing/app/Base.java:476 #, java-format -!{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= - -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= +{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: T\u00ean bo m\u1ea1ch kh\u00f4ng h\u1ee3p l\u1ec7, n\u00ean c\u00f3 d\u1ea1ng nh\u01b0 "package\:arch\:board" ho\u1eb7c "package\:arch\:board\:options" #: ../../../processing/app/Base.java:507 #, java-format -!{0}\:\ Invalid\ option\ for\ board\ "{1}"= +{0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: L\u1ef1a ch\u1ecdn kh\u00f4ng h\u1ee3p l\u1ec7 cho bo "{1}' #: ../../../processing/app/Base.java:502 #, java-format -!{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: L\u1ef1a ch\u1ecdn kh\u00f4ng h\u1ee3p l\u1ec7, ph\u1ea3i c\u00f3 d\u1ea1ng "name\=value" + +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"={0}\: Gi\u00e1 tr\u1ecb kh\u00f4ng h\u1ee3p l\u1ec7 cho l\u1ee5a ch\u1ecdn "{1}" cho bo m\u1ea1ch "{2}" #: ../../../processing/app/Base.java:486 #, java-format @@ -1962,4 +2021,4 @@ upload=t\u1ea3i l\u00ean #: ../../../../../arduino-core/src/processing/app/Platform.java:223 #, java-format -!{0}Install\ this\ package{1}\ to\ use\ your\ {2}\ board= +{0}Install\ this\ package{1}\ to\ use\ your\ {2}\ board={0}C\u00e0i \u0111\u1eb7t g\u00f3i {1} \u0111\u1ec3 s\u1eed d\u1ee5ng bo m\u1ea1ch {2} c\u1ee7a b\u1ea1n diff --git a/arduino-core/src/processing/app/i18n/Resources_zh_CN.po b/arduino-core/src/processing/app/i18n/Resources_zh_CN.po index 2dd871c37b7..fa729725aa7 100644 --- a/arduino-core/src/processing/app/i18n/Resources_zh_CN.po +++ b/arduino-core/src/processing/app/i18n/Resources_zh_CN.po @@ -17,8 +17,12 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Wong Min , 2013 # Benu Lin , 2017 +# BrightLin , 2019 # 陈吕洲 , 2015 # Cristian Maglie , 2016 # dongfengweixiao , 2013-2015 @@ -27,6 +31,7 @@ # Haichao Zhu , 2017 # hanchao , 2013 # Jacques S, 2015-2017 +# Wenqing Zhou, 2021 # Wong Min , 2013 # Yung Wei , 2016 # Zhuo Liu , 2015 @@ -37,8 +42,8 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-14 14:13+0000\n" -"Last-Translator: Jacques S\n" +"PO-Revision-Date: 2021-10-22 23:12+0000\n" +"Last-Translator: Wenqing Zhou\n" "Language-Team: Chinese (China) (http://www.transifex.com/mbanzi/arduino-ide-15/language/zh_CN/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -636,6 +641,11 @@ msgstr "无法移除{0}的旧版本" msgid "Could not replace {0}" msgstr "无法替换{0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "无法归档项目" @@ -691,6 +701,10 @@ msgstr "减小缩进" msgid "Default" msgstr "默认" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "删除" @@ -866,6 +880,11 @@ msgstr "取得Arduino资料文件夹时发生错误。" msgid "Error inside Serial.{0}()" msgstr "串行错误 {0}()" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -885,6 +904,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "打开串口 ''{0}'' 时出错。建议查阅此处的文档 http://playground.arduino.cc/Linux/All#Permission" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "读取首选项出错" @@ -919,6 +957,10 @@ msgstr "烧录引导程序出错。" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "烧录引导程序时出错:缺少 '{0}' 配置参数" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "编译时出错:缺少 '{0}' 配置参数" @@ -955,10 +997,6 @@ msgstr "验证/上传过程出错" msgid "Estonian" msgstr "爱沙尼亚语" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "爱沙尼亚语(爱沙尼亚)" - #: Editor.java:516 msgid "Examples" msgstr "示例" @@ -1162,9 +1200,9 @@ msgstr "不相容" msgid "Ignore Case" msgstr "忽略大小写" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "忽略错误的库名称" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1227,10 +1265,10 @@ msgstr "已安装" msgid "Installing boards..." msgstr "正在安装开发板..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "正在安装库: {0}" +msgid "Installing library: {0}:{1}" +msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1256,6 +1294,17 @@ msgstr "找到无效库在 {0}: {1}" msgid "Invalid quoting: no closing [{0}] char found." msgstr "无效引用:未找到关闭 [{0}] 字符。" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "无效的版本 {0}" + #: Preferences.java:102 msgid "Italian" msgstr "意大利语" @@ -1288,10 +1337,10 @@ msgstr "库已经加入,请检查“导入库”菜单" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "库不可以同时使用 'src' 和 'utility' 文件夹。再次检查 {0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "库安装完毕: {0} 版本 {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1362,7 +1411,7 @@ msgstr "\"{0}\" 对应多个库" #: ../../../processing/app/Base.java:395 msgid "Must specify exactly one sketch file" -msgstr "必须制定一个项目文件" +msgstr "必须指定一个项目文件" #: Sketch.java:282 msgid "Name for new file:" @@ -1708,10 +1757,10 @@ msgstr "参考" msgid "Remove" msgstr "删除" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "正在删除库: {0}" +msgid "Removing library: {0}:{1}" +msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1747,6 +1796,10 @@ msgstr "替换为:" msgid "Retired" msgstr "已废弃" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "罗马尼亚语" @@ -1870,12 +1923,15 @@ msgid "" " Serial Port menu?" msgstr "没有找到串口 ''{0}'' 。 你确定你在 工具 > 串口 菜单选择了正确的串口吗?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "没有找到串口 {0} 。\n要尝试通过其他串口上传吗?" +msgid "Serial port {0} not found." +msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1898,6 +1954,10 @@ msgstr "设置议题" msgid "Show Sketch Folder" msgstr "显示项目文件夹" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "显示详细输出:" @@ -2069,6 +2129,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "文件 “{0}\"必须置于项目文件夹内\n且文件名须为 \"{1}\"\n是否继续创建该文件夹,并移动文件?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2114,11 +2182,12 @@ msgid "" "but anything besides the code will be lost." msgstr "项目文件夹消失了,\n是否尝试重新保存在相同位置,\n除代码外所有的东西都会丢失。" -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." -msgstr "项目名需要更改。项目名只能由\nASCII 字符和数字组成,且长度必须小于 64 个字符。" +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" #: Base.java:259 msgid "" @@ -2135,6 +2204,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "指定的项目文件夹包含你的 IDE 。\n请为项目选择另外的文件夹。" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2627,6 +2700,12 @@ msgstr "忽略无效的字号{0}" msgid "name is null" msgstr "名称为空" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "串口菜单为空" @@ -2714,11 +2793,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}: 开发板名称错误,应该是\"package:arch:board\" 或 \"package:arch:board:options\" 形式" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}: 开发板 \"{2}\" 的选项 \"{1}\" 错误" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2729,6 +2803,11 @@ msgstr "{0}: \"{1}\" 开发板选项无效" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}: 选项错误,应该为 \"name=value\" 形式" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_zh_CN.properties b/arduino-core/src/processing/app/i18n/Resources_zh_CN.properties index cebafe9b406..c9b3d884e88 100644 --- a/arduino-core/src/processing/app/i18n/Resources_zh_CN.properties +++ b/arduino-core/src/processing/app/i18n/Resources_zh_CN.properties @@ -17,8 +17,12 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Wong Min , 2013 # Benu Lin , 2017 +# BrightLin , 2019 # \u9648\u5415\u6d32 , 2015 # Cristian Maglie , 2016 # dongfengweixiao , 2013-2015 @@ -27,12 +31,13 @@ # Haichao Zhu , 2017 # hanchao , 2013 # Jacques S, 2015-2017 +# Wenqing Zhou, 2021 # Wong Min , 2013 # Yung Wei , 2016 # Zhuo Liu , 2015 # Godners Ren , 2016 # \u9648\u5415\u6d32 , 2015 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-14 14\:13+0000\nLast-Translator\: Jacques S\nLanguage-Team\: Chinese (China) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/zh_CN/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: zh_CN\nPlural-Forms\: nplurals\=1; plural\=0;\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2021-10-22 23\:12+0000\nLast-Translator\: Wenqing Zhou\nLanguage-Team\: Chinese (China) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/zh_CN/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: zh_CN\nPlural-Forms\: nplurals\=1; plural\=0;\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\uff08\u9700\u8981\u91cd\u542f Arduino\uff09 @@ -455,6 +460,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=\u65e0\u6cd5\u79fb\u9664{0}\u7684\u65e #, java-format Could\ not\ replace\ {0}=\u65e0\u6cd5\u66ff\u6362{0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=\u65e0\u6cd5\u5f52\u6863\u9879\u76ee @@ -494,6 +503,9 @@ Decrease\ Indent=\u51cf\u5c0f\u7f29\u8fdb #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=\u9ed8\u8ba4 +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=\u5220\u9664 @@ -625,6 +637,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=\u53d6\u5f97Arduino\u8d44\u6599\u658 #, java-format Error\ inside\ Serial.{0}()=\u4e32\u884c\u9519\u8bef {0}() +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -639,6 +655,18 @@ Error\ opening\ serial\ port\ ''{0}''.=\u6253\u5f00\u4e32\u884c\u7aef\u53e3{0}\u #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=\u6253\u5f00\u4e32\u53e3 ''{0}'' \u65f6\u51fa\u9519\u3002\u5efa\u8bae\u67e5\u9605\u6b64\u5904\u7684\u6587\u6863 http\://playground.arduino.cc/Linux/All\#Permission +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 Error\ reading\ preferences=\u8bfb\u53d6\u9996\u9009\u9879\u51fa\u9519 @@ -664,6 +692,9 @@ Error\ while\ burning\ bootloader.=\u70e7\u5f55\u5f15\u5bfc\u7a0b\u5e8f\u51fa\u9 #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=\u70e7\u5f55\u5f15\u5bfc\u7a0b\u5e8f\u65f6\u51fa\u9519\uff1a\u7f3a\u5c11 '{0}' \u914d\u7f6e\u53c2\u6570 +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=\u7f16\u8bd1\u65f6\u51fa\u9519\uff1a\u7f3a\u5c11 '{0}' \u914d\u7f6e\u53c2\u6570 @@ -692,9 +723,6 @@ Error\ while\ verifying/uploading=\u9a8c\u8bc1/\u4e0a\u4f20\u8fc7\u7a0b\u51fa\u9 #: Preferences.java:93 Estonian=\u7231\u6c99\u5c3c\u4e9a\u8bed -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=\u7231\u6c99\u5c3c\u4e9a\u8bed(\u7231\u6c99\u5c3c\u4e9a) - #: Editor.java:516 Examples=\u793a\u4f8b @@ -845,8 +873,8 @@ INCOMPATIBLE=\u4e0d\u76f8\u5bb9 #: FindReplace.java:96 Ignore\ Case=\u5ffd\u7565\u5927\u5c0f\u5199 -#: Base.java:1058 -Ignoring\ bad\ library\ name=\u5ffd\u7565\u9519\u8bef\u7684\u5e93\u540d\u79f0 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=\u5ffd\u7565\u540d\u79f0\u9519\u8bef\u7684\u9879\u76ee @@ -890,9 +918,9 @@ Installed=\u5df2\u5b89\u88c5 #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=\u6b63\u5728\u5b89\u88c5\u5f00\u53d1\u677f... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=\u6b63\u5728\u5b89\u88c5\u5e93\: {0} +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -913,6 +941,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=\u627e\u5230\u65e0\u6548\u5e93\u5728 {0} #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=\u65e0\u6548\u5f15\u7528\uff1a\u672a\u627e\u5230\u5173\u95ed [{0}] \u5b57\u7b26\u3002 +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +Invalid\ version\ {0}=\u65e0\u6548\u7684\u7248\u672c {0} + #: Preferences.java:102 Italian=\u610f\u5927\u5229\u8bed @@ -937,9 +974,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=\u5e93\u5d #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=\u5e93\u4e0d\u53ef\u4ee5\u540c\u65f6\u4f7f\u7528 'src' \u548c 'utility' \u6587\u4ef6\u5939\u3002\u518d\u6b21\u68c0\u67e5 {0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=\u5e93\u5b89\u88c5\u5b8c\u6bd5\: {0} \u7248\u672c {1} +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=\u884c\u53f7\uff1a @@ -993,7 +1030,7 @@ Multiple\ files\ not\ supported=\u4e0d\u652f\u6301\u591a\u6587\u4ef6 Multiple\ libraries\ were\ found\ for\ "{0}"="{0}" \u5bf9\u5e94\u591a\u4e2a\u5e93 #: ../../../processing/app/Base.java:395 -Must\ specify\ exactly\ one\ sketch\ file=\u5fc5\u987b\u5236\u5b9a\u4e00\u4e2a\u9879\u76ee\u6587\u4ef6 +Must\ specify\ exactly\ one\ sketch\ file=\u5fc5\u987b\u6307\u5b9a\u4e00\u4e2a\u9879\u76ee\u6587\u4ef6 #: Sketch.java:282 Name\ for\ new\ file\:=\u65b0\u6587\u4ef6\u7684\u540d\u5b57 @@ -1252,9 +1289,9 @@ Reference=\u53c2\u8003 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=\u5220\u9664 -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=\u6b63\u5728\u5220\u9664\u5e93\: {0} +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1282,6 +1319,9 @@ Replace\ with\:=\u66ff\u6362\u4e3a\uff1a #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=\u5df2\u5e9f\u5f03 +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=\u7f57\u9a6c\u5c3c\u4e9a\u8bed @@ -1373,9 +1413,13 @@ Serial\ monitor\ not\ available\ while\ plotter\ is\ open=\u6253\u5f00\u7ed8\u56 #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=\u6ca1\u6709\u627e\u5230\u4e32\u53e3 ''{0}'' \u3002 \u4f60\u786e\u5b9a\u4f60\u5728 \u5de5\u5177 > \u4e32\u53e3 \u83dc\u5355\u9009\u62e9\u4e86\u6b63\u786e\u7684\u4e32\u53e3\u5417\uff1f -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=\u6ca1\u6709\u627e\u5230\u4e32\u53e3 {0} \u3002\n\u8981\u5c1d\u8bd5\u901a\u8fc7\u5176\u4ed6\u4e32\u53e3\u4e0a\u4f20\u5417\uff1f +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=\u4e32\u884c\u7aef\u53e3 @@ -1393,6 +1437,9 @@ Settings\ issues=\u8bbe\u7f6e\u8bae\u9898 #: Editor.java:641 Show\ Sketch\ Folder=\u663e\u793a\u9879\u76ee\u6587\u4ef6\u5939 +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =\u663e\u793a\u8be6\u7ec6\u8f93\u51fa\uff1a @@ -1512,6 +1559,10 @@ The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=\u6587\u4ef6 \u201c{0}"\u5fc5\u987b\u7f6e\u4e8e\u9879\u76ee\u6587\u4ef6\u5939\u5185\n\u4e14\u6587\u4ef6\u540d\u987b\u4e3a "{1}"\n\u662f\u5426\u7ee7\u7eed\u521b\u5efa\u8be5\u6587\u4ef6\u5939\uff0c\u5e76\u79fb\u52a8\u6587\u4ef6\uff1f +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=\u65e0\u6cd5\u4f7f\u7528\u5e93"{0}"\u3002\n\u5e93\u7684\u540d\u79f0\u53ea\u80fd\u542b\u6709\u57fa\u672c\u5b57\u6bcd\u4e0e\u6570\u5b57\u3002\n\uff08\u53ea\u80fd\u662fASCII\uff0c\u4e0d\u80fd\u6709\u7a7a\u767d\u5b57\u7b26\uff0c\u4e5f\u4e0d\u80fd\u4ee5\u6578\u5b57\u958b\u982d\uff09 @@ -1536,8 +1587,8 @@ The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=\u9879\u76ee\u5df2\u7ecf\u #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=\u9879\u76ee\u6587\u4ef6\u5939\u6d88\u5931\u4e86\uff0c\n\u662f\u5426\u5c1d\u8bd5\u91cd\u65b0\u4fdd\u5b58\u5728\u76f8\u540c\u4f4d\u7f6e\uff0c\n\u9664\u4ee3\u7801\u5916\u6240\u6709\u7684\u4e1c\u897f\u90fd\u4f1a\u4e22\u5931\u3002 -#: ../../../../../app/src/processing/app/SketchController.java:828 -The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.=\u9879\u76ee\u540d\u9700\u8981\u66f4\u6539\u3002\u9879\u76ee\u540d\u53ea\u80fd\u7531\nASCII \u5b57\u7b26\u548c\u6570\u5b57\u7ec4\u6210\uff0c\u4e14\u957f\u5ea6\u5fc5\u987b\u5c0f\u4e8e 64 \u4e2a\u5b57\u7b26\u3002 +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=\u9879\u76ee\u6587\u4ef6\u5939\u4e0d\u5b58\u5728\uff0c\nArduino\u5c06\u4f7f\u7528\u9884\u8bbe\u7684\u6587\u4ef6\u5939\u4f4d\u7f6e\uff0c\n\u5e76\u89c6\u9700\u8981\u65b0\u589e\u6587\u4ef6\u5939\u3002\n\u7136\u540eArduino\u5c06\u505c\u6b62\u4ee5\u7b2c\u4e09\u4eba\u79f0\u63d0\u53ca\u81ea\u5df1\u3002 @@ -1545,6 +1596,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=\u6307\u5b9a\u7684\u9879\u76ee\u6587\u4ef6\u5939\u5305\u542b\u4f60\u7684 IDE \u3002\n\u8bf7\u4e3a\u9879\u76ee\u9009\u62e9\u53e6\u5916\u7684\u6587\u4ef6\u5939\u3002 +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=\u8fd9\u4e2a\u5e93\u4e0d\u5305\u542b\u5728\u5e93\u7ba1\u7406\u5668\u4e2d\u3002\u4f60\u4ee5\u540e\u65e0\u6cd5\u518d\u4ece\u8fd9\u91cc\u91cd\u65b0\u5b89\u88c5\u8fd9\u4e2a\u5e93\u3002\n\u4f60\u786e\u5b9a\u8981\u5220\u9664\u5417\uff1f @@ -1879,6 +1933,11 @@ ignoring\ invalid\ font\ size\ {0}=\u5ffd\u7565\u65e0\u6548\u7684\u5b57\u53f7{0} #: Editor.java:936 Editor.java:943 name\ is\ null=\u540d\u79f0\u4e3a\u7a7a +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=\u4e32\u53e3\u83dc\u5355\u4e3a\u7a7a @@ -1946,10 +2005,6 @@ version\ {0}=\u7248\u672c {0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\: \u5f00\u53d1\u677f\u540d\u79f0\u9519\u8bef\uff0c\u5e94\u8be5\u662f"package\:arch\:board" \u6216 "package\:arch\:board\:options" \u5f62\u5f0f -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\: \u5f00\u53d1\u677f "{2}" \u7684\u9009\u9879 "{1}" \u9519\u8bef - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\: "{1}" \u5f00\u53d1\u677f\u9009\u9879\u65e0\u6548 @@ -1958,6 +2013,10 @@ version\ {0}=\u7248\u672c {0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\: \u9009\u9879\u9519\u8bef\uff0c\u5e94\u8be5\u4e3a "name\=value" \u5f62\u5f0f +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\: \u672a\u77e5\u7684\u7ed3\u6784 diff --git a/arduino-core/src/processing/app/i18n/Resources_zh_TW.Big5.po b/arduino-core/src/processing/app/i18n/Resources_zh_TW.Big5.po index b30dd1c3193..a90ec2e0c19 100644 --- a/arduino-core/src/processing/app/i18n/Resources_zh_TW.Big5.po +++ b/arduino-core/src/processing/app/i18n/Resources_zh_TW.Big5.po @@ -17,6 +17,9 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Ethan , 2014 # james58899 , 2014 # Jordan_Fung , 2014 @@ -26,7 +29,7 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: Chinese (Taiwan) (Big5) (http://www.transifex.com/mbanzi/arduino-ide-15/language/zh_TW.Big5/)\n" "MIME-Version: 1.0\n" @@ -625,6 +628,11 @@ msgstr "無法移除{0}的舊版本" msgid "Could not replace {0}" msgstr "無法取代{0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "無法封存草稿碼" @@ -680,6 +688,10 @@ msgstr "減少縮排深度" msgid "Default" msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "刪除" @@ -855,6 +867,11 @@ msgstr "取得Arduino資料目錄時發生錯誤" msgid "Error inside Serial.{0}()" msgstr "在Serial.{0}()裡發生錯誤" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -874,6 +891,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "讀取偏好設定時發生錯誤" @@ -908,6 +944,10 @@ msgstr "燒錄bootloader時發生錯誤。" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "" @@ -944,10 +984,6 @@ msgstr "" msgid "Estonian" msgstr "愛沙尼亞語" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "愛沙尼亞語(愛沙尼亞)" - #: Editor.java:516 msgid "Examples" msgstr "範例" @@ -1151,9 +1187,9 @@ msgstr "" msgid "Ignore Case" msgstr "忽略大小寫" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "忽略不好的程式庫名稱" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1216,9 +1252,9 @@ msgstr "" msgid "Installing boards..." msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" +msgid "Installing library: {0}:{1}" msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 @@ -1245,6 +1281,17 @@ msgstr "在{0}: {1}裡找到無效的程式庫" msgid "Invalid quoting: no closing [{0}] char found." msgstr "" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "意大利語" @@ -1277,9 +1324,9 @@ msgstr "" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" +msgid "Library is already installed: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 @@ -1697,9 +1744,9 @@ msgstr "參考文件" msgid "Remove" msgstr "" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" +msgid "Removing library: {0}:{1}" msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 @@ -1736,6 +1783,10 @@ msgstr "置換為:" msgid "Retired" msgstr "" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "羅馬尼亞語" @@ -1859,12 +1910,15 @@ msgid "" " Serial Port menu?" msgstr "找不到序列埠''{0}''。您在選單「工具>序列埠」裡的設定正確嗎?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "沒找到序列埠{0}。\n以另一個序列埠再試著上傳嗎?" +msgid "Serial port {0} not found." +msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1887,6 +1941,10 @@ msgstr "設定值相關問題" msgid "Show Sketch Folder" msgstr "顯示草稿碼資料夾" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "顯示詳細輸出:" @@ -2058,6 +2116,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "檔案\"{0}\"必須位於\n名為\"{1}\"的草稿碼資料夾中。\n建立此資料夾、移動檔案、並且繼續嗎?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2103,10 +2169,11 @@ msgid "" "but anything besides the code will be lost." msgstr "草稿碼資料夾消失了。\n將試著在同一位置重新儲存,\n但除了程式碼以外的東西將遺失。" -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2124,6 +2191,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2616,6 +2687,12 @@ msgstr "忽略無效的字型大小{0}" msgid "name is null" msgstr "名稱是空的" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu是空的" @@ -2703,11 +2780,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2718,6 +2790,11 @@ msgstr "" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_zh_TW.Big5.properties b/arduino-core/src/processing/app/i18n/Resources_zh_TW.Big5.properties index 092a56703ec..6aa3ea556b6 100644 --- a/arduino-core/src/processing/app/i18n/Resources_zh_TW.Big5.properties +++ b/arduino-core/src/processing/app/i18n/Resources_zh_TW.Big5.properties @@ -17,11 +17,14 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Ethan , 2014 # james58899 , 2014 # Jordan_Fung , 2014 # yehnan , 2013 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Chinese (Taiwan) (Big5) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/zh_TW.Big5/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: zh_TW.Big5\nPlural-Forms\: nplurals\=1; plural\=0;\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Chinese (Taiwan) (Big5) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/zh_TW.Big5/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: zh_TW.Big5\nPlural-Forms\: nplurals\=1; plural\=0;\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\uff08\u9700\u8981\u91cd\u65b0\u555f\u52d5Arduino\uff09 @@ -444,6 +447,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=\u7121\u6cd5\u79fb\u9664{0}\u7684\u820 #, java-format Could\ not\ replace\ {0}=\u7121\u6cd5\u53d6\u4ee3{0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=\u7121\u6cd5\u5c01\u5b58\u8349\u7a3f\u78bc @@ -483,6 +490,9 @@ Decrease\ Indent=\u6e1b\u5c11\u7e2e\u6392\u6df1\u5ea6 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 !Default= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=\u522a\u9664 @@ -614,6 +624,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=\u53d6\u5f97Arduino\u8cc7\u6599\u76e #, java-format Error\ inside\ Serial.{0}()=\u5728Serial.{0}()\u88e1\u767c\u751f\u932f\u8aa4 +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -628,6 +642,18 @@ Error\ opening\ serial\ port\ ''{0}''.=\u958b\u555f\u5e8f\u5217\u57e0''{0}''\u66 #, java-format !Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission= +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 Error\ reading\ preferences=\u8b80\u53d6\u504f\u597d\u8a2d\u5b9a\u6642\u767c\u751f\u932f\u8aa4 @@ -653,6 +679,9 @@ Error\ while\ burning\ bootloader.=\u71d2\u9304bootloader\u6642\u767c\u751f\u932 #: ../../../processing/app/Editor.java:2555 !Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter= +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 !Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter= @@ -681,9 +710,6 @@ Error\ while\ printing.=\u5217\u5370\u6642\u767c\u751f\u932f\u8aa4\u3002 #: Preferences.java:93 Estonian=\u611b\u6c99\u5c3c\u4e9e\u8a9e -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=\u611b\u6c99\u5c3c\u4e9e\u8a9e(\u611b\u6c99\u5c3c\u4e9e) - #: Editor.java:516 Examples=\u7bc4\u4f8b @@ -834,8 +860,8 @@ Hungarian=\u5308\u7259\u5229\u8a9e #: FindReplace.java:96 Ignore\ Case=\u5ffd\u7565\u5927\u5c0f\u5beb -#: Base.java:1058 -Ignoring\ bad\ library\ name=\u5ffd\u7565\u4e0d\u597d\u7684\u7a0b\u5f0f\u5eab\u540d\u7a31 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=\u5ffd\u7565\u64c1\u6709\u4e0d\u597d\u540d\u7a31\u7684\u8349\u7a3f\u78bc @@ -879,9 +905,9 @@ Indonesian=\u5370\u5c3c\u8a9e #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 !Installing\ boards...= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -!Installing\ library\:\ {0}= +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -902,6 +928,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=\u5728{0}\: {1}\u88e1\u627e\u5230\u7121\ #, java-format !Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.= +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=\u610f\u5927\u5229\u8a9e @@ -926,9 +961,9 @@ Latvian=\u62c9\u812b\u7dad\u4e9e\u8a9e #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 !Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -!Library\ is\ already\ installed\:\ {0}\ version\ {1}= +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 !Line\ number\:= @@ -1241,9 +1276,9 @@ Reference=\u53c3\u8003\u6587\u4ef6 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 !Remove= -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -!Removing\ library\:\ {0}= +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1271,6 +1306,9 @@ Replace\ with\:=\u7f6e\u63db\u70ba\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 !Retired= +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=\u7f85\u99ac\u5c3c\u4e9e\u8a9e @@ -1362,9 +1400,13 @@ Serial\ Monitor=\u5e8f\u5217\u57e0\u76e3\u63a7\u8996\u7a97 #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=\u627e\u4e0d\u5230\u5e8f\u5217\u57e0''{0}''\u3002\u60a8\u5728\u9078\u55ae\u300c\u5de5\u5177>\u5e8f\u5217\u57e0\u300d\u88e1\u7684\u8a2d\u5b9a\u6b63\u78ba\u55ce\uff1f -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=\u6c92\u627e\u5230\u5e8f\u5217\u57e0{0}\u3002\n\u4ee5\u53e6\u4e00\u500b\u5e8f\u5217\u57e0\u518d\u8a66\u8457\u4e0a\u50b3\u55ce\uff1f +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 !Serial\ ports= @@ -1382,6 +1424,9 @@ Settings\ issues=\u8a2d\u5b9a\u503c\u76f8\u95dc\u554f\u984c #: Editor.java:641 Show\ Sketch\ Folder=\u986f\u793a\u8349\u7a3f\u78bc\u8cc7\u6599\u593e +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =\u986f\u793a\u8a73\u7d30\u8f38\u51fa\uff1a @@ -1501,6 +1546,10 @@ The\ Udp\ class\ has\ been\ renamed\ EthernetUdp.=\u985e\u5225Udp\u5df2\u6539\u5 #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=\u6a94\u6848"{0}"\u5fc5\u9808\u4f4d\u65bc\n\u540d\u70ba"{1}"\u7684\u8349\u7a3f\u78bc\u8cc7\u6599\u593e\u4e2d\u3002\n\u5efa\u7acb\u6b64\u8cc7\u6599\u593e\u3001\u79fb\u52d5\u6a94\u6848\u3001\u4e26\u4e14\u7e7c\u7e8c\u55ce\uff1f +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=\u7121\u6cd5\u4f7f\u7528\u7a0b\u5f0f\u5eab"{0}"\u3002\n\u7a0b\u5f0f\u5eab\u7684\u540d\u7a31\u53ea\u80fd\u542b\u6709\u57fa\u672c\u5b57\u6bcd\u8207\u6578\u5b57\u3002\n\uff08\u53ea\u80fd\u662fASCII\uff0c\u4e0d\u80fd\u6709\u7a7a\u767d\u5b57\u5143\uff0c\u4e5f\u4e0d\u80fd\u4ee5\u6578\u5b57\u958b\u982d\uff09 @@ -1525,8 +1574,8 @@ The\ sketch\ "{0}"\ cannot\ be\ used.\nSketch\ names\ must\ contain\ only\ basic #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=\u8349\u7a3f\u78bc\u8cc7\u6599\u593e\u6d88\u5931\u4e86\u3002\n\u5c07\u8a66\u8457\u5728\u540c\u4e00\u4f4d\u7f6e\u91cd\u65b0\u5132\u5b58\uff0c\n\u4f46\u9664\u4e86\u7a0b\u5f0f\u78bc\u4ee5\u5916\u7684\u6771\u897f\u5c07\u907a\u5931\u3002 -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=\u8349\u7a3f\u78bc\u7c3f\u8cc7\u6599\u593e\u5df2\u4e0d\u5b58\u5728\u3002\nArduino\u5c07\u8f49\u70ba\u4f7f\u7528\u9810\u8a2d\u7684\u8349\u7a3f\u78bc\u7c3f\u4f4d\u7f6e\uff0c\n\u4e26\u4e14\u8996\u9700\u8981\u65b0\u589e\u8cc7\u6599\u593e\u3002\u7136\u5f8cArduino\u5c07\n\u505c\u6b62\u4ee5\u7b2c\u4e09\u4eba\u7a31\u63d0\u53ca\u81ea\u5df1\u3002 @@ -1534,6 +1583,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 !The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.= +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 !This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?= @@ -1868,6 +1920,11 @@ ignoring\ invalid\ font\ size\ {0}=\u5ffd\u7565\u7121\u6548\u7684\u5b57\u578b\u5 #: Editor.java:936 Editor.java:943 name\ is\ null=\u540d\u7a31\u662f\u7a7a\u7684 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=serialMenu\u662f\u7a7a\u7684 @@ -1935,10 +1992,6 @@ upload=\u4e0a\u50b3 #, java-format !{0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"= -#: ../../../processing/app/Base.java:509 -#, java-format -!{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"= - #: ../../../processing/app/Base.java:507 #, java-format !{0}\:\ Invalid\ option\ for\ board\ "{1}"= @@ -1947,6 +2000,10 @@ upload=\u4e0a\u50b3 #, java-format !{0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"= +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format !{0}\:\ Unknown\ architecture= diff --git a/arduino-core/src/processing/app/i18n/Resources_zh_TW.po b/arduino-core/src/processing/app/i18n/Resources_zh_TW.po index b0b286ed9bb..d0347750d02 100644 --- a/arduino-core/src/processing/app/i18n/Resources_zh_TW.po +++ b/arduino-core/src/processing/app/i18n/Resources_zh_TW.po @@ -17,6 +17,9 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Cristian Maglie , 2016 # Ethan , 2014 # Federico Fissore , 2015 @@ -31,7 +34,7 @@ msgstr "" "Project-Id-Version: Arduino IDE 1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-03-29 10:24-0400\n" -"PO-Revision-Date: 2017-10-13 08:54+0000\n" +"PO-Revision-Date: 2018-11-23 15:06+0000\n" "Last-Translator: Cristian Maglie \n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/mbanzi/arduino-ide-15/language/zh_TW/)\n" "MIME-Version: 1.0\n" @@ -630,6 +633,11 @@ msgstr "無法移除{0}的舊版本" msgid "Could not replace {0}" msgstr "無法取代{0}" +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +msgid "Could not write preferences file: {0}" +msgstr "" + #: tools/Archiver.java:74 msgid "Couldn't archive sketch" msgstr "無法封存草稿碼" @@ -685,6 +693,10 @@ msgstr "減少縮排深度" msgid "Default" msgstr "預設" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +msgid "Default theme" +msgstr "" + #: EditorHeader.java:314 Sketch.java:591 msgid "Delete" msgstr "刪除" @@ -860,6 +872,11 @@ msgstr "取得Arduino資料目錄時發生錯誤" msgid "Error inside Serial.{0}()" msgstr "在Serial.{0}()裡發生錯誤" +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +msgid "Error loading theme {0}: {1}" +msgstr "" + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -879,6 +896,25 @@ msgid "" "http://playground.arduino.cc/Linux/All#Permission" msgstr "開啟序列埠''{0}''時發生錯誤。請到 http://playground.arduino.cc/Linux/All#Permission 查詢相關文件" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +msgid "" +"Error parsing libraries index: {0}\n" +"Try to open the Library Manager to update the libraries index." +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +msgid "Error reading libraries index: {0}" +msgstr "" + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +msgid "" +"Error reading package indexes folder: {0}\n" +"(maybe a permission problem?)" +msgstr "" + #: Preferences.java:277 msgid "Error reading preferences" msgstr "讀取偏好設定時發生錯誤" @@ -913,6 +949,10 @@ msgstr "燒錄bootloader時發生錯誤。" msgid "Error while burning bootloader: missing '{0}' configuration parameter" msgstr "燒錄bootloader時發生錯誤:缺少配置參數 '{0}'" +#: ../../../../../app/src/processing/app/Editor.java:2355 +msgid "Error while burning bootloader: please select a serial port." +msgstr "" + #: ../../../../../app/src/processing/app/Editor.java:1940 msgid "Error while compiling: missing '{0}' configuration parameter" msgstr "編譯時發生錯誤:沒有組態參數'{0}'" @@ -949,10 +989,6 @@ msgstr "驗證/上傳時發生錯誤" msgid "Estonian" msgstr "愛沙尼亞語" -#: ../../../processing/app/Preferences.java:146 -msgid "Estonian (Estonia)" -msgstr "愛沙尼亞語(愛沙尼亞)" - #: Editor.java:516 msgid "Examples" msgstr "範例" @@ -1156,9 +1192,9 @@ msgstr "不相容" msgid "Ignore Case" msgstr "忽略大小寫" -#: Base.java:1058 -msgid "Ignoring bad library name" -msgstr "忽略不好的程式庫名稱" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +msgid "Ignoring library with bad name" +msgstr "" #: Base.java:1436 msgid "Ignoring sketch with bad name" @@ -1221,10 +1257,10 @@ msgstr "已安裝" msgid "Installing boards..." msgstr "正在安裝開發板..." -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -msgid "Installing library: {0}" -msgstr "安裝程式庫:{0}" +msgid "Installing library: {0}:{1}" +msgstr "" #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -1250,6 +1286,17 @@ msgstr "在{0}: {1}裡找到無效的程式庫" msgid "Invalid quoting: no closing [{0}] char found." msgstr "不正確的引號:沒找到代表結束的[{0}]字元" +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +msgid "Invalid version '{0}' for library in: {1}" +msgstr "" + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +msgid "Invalid version {0}" +msgstr "" + #: Preferences.java:102 msgid "Italian" msgstr "義大利語" @@ -1282,10 +1329,10 @@ msgstr "已加入程式庫。請檢查選單「匯入程式庫」" msgid "Library can't use both 'src' and 'utility' folders. Double check {0}" msgstr "程式庫無法同時使用資料夾'src'與'utility'。再次檢查{0}" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -msgid "Library is already installed: {0} version {1}" -msgstr "程式庫已經安裝:{0} version {1}" +msgid "Library is already installed: {0}:{1}" +msgstr "" #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 msgid "Line number:" @@ -1702,10 +1749,10 @@ msgstr "參考文件" msgid "Remove" msgstr "移除" -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -msgid "Removing library: {0}" -msgstr "移除程式庫:{0}" +msgid "Removing library: {0}:{1}" +msgstr "" #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1741,6 +1788,10 @@ msgstr "置換為:" msgid "Retired" msgstr "已退役" +#: ../../../../../app/src/processing/app/Editor.java:1973 +msgid "Retry the upload with another serial port?" +msgstr "" + #: Preferences.java:113 msgid "Romanian" msgstr "羅馬尼亞語" @@ -1864,12 +1915,15 @@ msgid "" " Serial Port menu?" msgstr "找不到序列埠''{0}''。您在選單「工具>序列埠」裡的設定正確嗎?" -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +msgid "Serial port not selected." +msgstr "" + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -msgid "" -"Serial port {0} not found.\n" -"Retry the upload with another serial port?" -msgstr "沒找到序列埠{0}。\n以另一個序列埠再試著上傳嗎?" +msgid "Serial port {0} not found." +msgstr "" #: ../../../../../app/src/processing/app/Editor.java:65 msgid "Serial ports" @@ -1892,6 +1946,10 @@ msgstr "設定值相關問題" msgid "Show Sketch Folder" msgstr "顯示草稿碼資料夾" +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +msgid "Show timestamp" +msgstr "" + #: Preferences.java:387 msgid "Show verbose output during: " msgstr "顯示詳細輸出:" @@ -2063,6 +2121,14 @@ msgid "" "Create this folder, move the file, and continue?" msgstr "檔案\"{0}\"必須位於\n名為\"{1}\"的草稿碼資料夾中。\n建立此資料夾、移動檔案、並且繼續嗎?" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +msgid "" +"The library \"{0}\" cannot be used.\n" +"Library folder names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." +msgstr "" + #: Base.java:1054 Base.java:2674 #, java-format msgid "" @@ -2108,10 +2174,11 @@ msgid "" "but anything besides the code will be lost." msgstr "草稿碼資料夾消失了。\n將試著在同一位置重新儲存,\n但除了程式碼以外的東西將遺失。" -#: ../../../../../app/src/processing/app/SketchController.java:828 +#: ../../../../../app/src/processing/app/SketchController.java:849 msgid "" -"The sketch name had to be modified. Sketch names can only consist\n" -"of ASCII characters and numbers and be less than 64 characters long." +"The sketch name had to be modified.\n" +"Sketch names must start with a letter or number, followed by letters,\n" +"numbers, dashes, dots and underscores. Maximum length is 63 characters." msgstr "" #: Base.java:259 @@ -2129,6 +2196,10 @@ msgid "" "Please choose a different folder for your sketchbook." msgstr "指定的草稿碼簿資料夾含有你的IDE。\n請為草稿碼簿另選資料夾。" +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +msgid "Theme: " +msgstr "" + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 msgid "" "This library is not listed on Library Manager. You won't be able to reinstall it from here.\n" @@ -2621,6 +2692,12 @@ msgstr "忽略無效的字型大小{0}" msgid "name is null" msgstr "名稱是空的" +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +msgid "no headers files (.h) found in {0}" +msgstr "" + #: Editor.java:932 msgid "serialMenu is null" msgstr "serialMenu是空的" @@ -2708,11 +2785,6 @@ msgid "" "\"package:arch:board:options\"" msgstr "{0}:無效的版子名稱,格式應該是 \"package:arch:board\" 或 \"package:arch:board:options\"" -#: ../../../processing/app/Base.java:509 -#, java-format -msgid "{0}: Invalid option for \"{1}\" option for board \"{2}\"" -msgstr "{0}:無效的選項 \"{1}\" 於開發板 \"{2}\"" - #: ../../../processing/app/Base.java:507 #, java-format msgid "{0}: Invalid option for board \"{1}\"" @@ -2723,6 +2795,11 @@ msgstr "{0}:無效的選項於開發板 \"{1}\"" msgid "{0}: Invalid option, should be of the form \"name=value\"" msgstr "{0}:無效的選項,格式應該是 “name=value”" +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +msgid "{0}: Invalid value for option \"{1}\" for board \"{2}\"" +msgstr "" + #: ../../../processing/app/Base.java:486 #, java-format msgid "{0}: Unknown architecture" diff --git a/arduino-core/src/processing/app/i18n/Resources_zh_TW.properties b/arduino-core/src/processing/app/i18n/Resources_zh_TW.properties index 12bc6ae7a38..c4ac54a6b67 100644 --- a/arduino-core/src/processing/app/i18n/Resources_zh_TW.properties +++ b/arduino-core/src/processing/app/i18n/Resources_zh_TW.properties @@ -17,6 +17,9 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: +# Translators: # Cristian Maglie , 2016 # Ethan , 2014 # Federico Fissore , 2015 @@ -26,7 +29,7 @@ # Jordan_Fung , 2014 # yehnan , 2013,2015-2017 # \u6d2a\u5609\u9d3b , 2016 -!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2017-10-13 08\:54+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Chinese (Taiwan) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/zh_TW/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: zh_TW\nPlural-Forms\: nplurals\=1; plural\=0;\n +!=Project-Id-Version\: Arduino IDE 1.5\nReport-Msgid-Bugs-To\: \nPOT-Creation-Date\: 2012-03-29 10\:24-0400\nPO-Revision-Date\: 2018-11-23 15\:06+0000\nLast-Translator\: Cristian Maglie \nLanguage-Team\: Chinese (Taiwan) (http\://www.transifex.com/mbanzi/arduino-ide-15/language/zh_TW/)\nMIME-Version\: 1.0\nContent-Type\: text/plain; charset\=UTF-8\nContent-Transfer-Encoding\: 8bit\nLanguage\: zh_TW\nPlural-Forms\: nplurals\=1; plural\=0;\n #: Preferences.java:358 Preferences.java:374 \ \ (requires\ restart\ of\ Arduino)=\uff08\u9700\u8981\u91cd\u65b0\u555f\u52d5 Arduino\uff09 @@ -449,6 +452,10 @@ Could\ not\ remove\ old\ version\ of\ {0}=\u7121\u6cd5\u79fb\u9664{0}\u7684\u820 #, java-format Could\ not\ replace\ {0}=\u7121\u6cd5\u53d6\u4ee3{0} +#: ../../../../../arduino-core/src/processing/app/PreferencesData.java:141 +#, java-format +!Could\ not\ write\ preferences\ file\:\ {0}= + #: tools/Archiver.java:74 Couldn't\ archive\ sketch=\u7121\u6cd5\u5c01\u5b58\u8349\u7a3f\u78bc @@ -488,6 +495,9 @@ Decrease\ Indent=\u6e1b\u5c11\u7e2e\u6392\u6df1\u5ea6 #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:185 Default=\u9810\u8a2d +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:870 +!Default\ theme= + #: EditorHeader.java:314 Sketch.java:591 Delete=\u522a\u9664 @@ -619,6 +629,10 @@ Error\ getting\ the\ Arduino\ data\ folder.=\u53d6\u5f97Arduino\u8cc7\u6599\u76e #, java-format Error\ inside\ Serial.{0}()=\u5728Serial.{0}()\u88e1\u767c\u751f\u932f\u8aa4 +#: ../../../../../app/src/processing/app/Theme.java:302 +#, java-format +!Error\ loading\ theme\ {0}\:\ {1}= + #: ../../../processing/app/debug/TargetPlatform.java:95 #: ../../../processing/app/debug/TargetPlatform.java:106 #: ../../../processing/app/debug/TargetPlatform.java:117 @@ -633,6 +647,18 @@ Error\ opening\ serial\ port\ ''{0}''.=\u958b\u555f\u5e8f\u5217\u57e0''{0}''\u66 #, java-format Error\ opening\ serial\ port\ ''{0}''.\ Try\ consulting\ the\ documentation\ at\ http\://playground.arduino.cc/Linux/All\#Permission=\u958b\u555f\u5e8f\u5217\u57e0''{0}''\u6642\u767c\u751f\u932f\u8aa4\u3002\u8acb\u5230 http\://playground.arduino.cc/Linux/All\#Permission \u67e5\u8a62\u76f8\u95dc\u6587\u4ef6 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:109 +#, java-format +!Error\ parsing\ libraries\ index\:\ {0}\nTry\ to\ open\ the\ Library\ Manager\ to\ update\ the\ libraries\ index.= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:112 +#, java-format +!Error\ reading\ libraries\ index\:\ {0}= + +#: ../../../../../arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java:113 +#, java-format +!Error\ reading\ package\ indexes\ folder\:\ {0}\n(maybe\ a\ permission\ problem?)= + #: Preferences.java:277 Error\ reading\ preferences=\u8b80\u53d6\u504f\u597d\u8a2d\u5b9a\u6642\u767c\u751f\u932f\u8aa4 @@ -658,6 +684,9 @@ Error\ while\ burning\ bootloader.=\u71d2\u9304bootloader\u6642\u767c\u751f\u932 #: ../../../processing/app/Editor.java:2555 Error\ while\ burning\ bootloader\:\ missing\ '{0}'\ configuration\ parameter=\u71d2\u9304bootloader\u6642\u767c\u751f\u932f\u8aa4\uff1a\u7f3a\u5c11\u914d\u7f6e\u53c3\u6578 '{0}' +#: ../../../../../app/src/processing/app/Editor.java:2355 +!Error\ while\ burning\ bootloader\:\ please\ select\ a\ serial\ port.= + #: ../../../../../app/src/processing/app/Editor.java:1940 Error\ while\ compiling\:\ missing\ '{0}'\ configuration\ parameter=\u7de8\u8b6f\u6642\u767c\u751f\u932f\u8aa4\uff1a\u6c92\u6709\u7d44\u614b\u53c3\u6578'{0}' @@ -686,9 +715,6 @@ Error\ while\ verifying/uploading=\u9a57\u8b49\uff0f\u4e0a\u50b3\u6642\u767c\u75 #: Preferences.java:93 Estonian=\u611b\u6c99\u5c3c\u4e9e\u8a9e -#: ../../../processing/app/Preferences.java:146 -Estonian\ (Estonia)=\u611b\u6c99\u5c3c\u4e9e\u8a9e(\u611b\u6c99\u5c3c\u4e9e) - #: Editor.java:516 Examples=\u7bc4\u4f8b @@ -839,8 +865,8 @@ INCOMPATIBLE=\u4e0d\u76f8\u5bb9 #: FindReplace.java:96 Ignore\ Case=\u5ffd\u7565\u5927\u5c0f\u5beb -#: Base.java:1058 -Ignoring\ bad\ library\ name=\u5ffd\u7565\u4e0d\u597d\u7684\u7a0b\u5f0f\u5eab\u540d\u7a31 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:184 +!Ignoring\ library\ with\ bad\ name= #: Base.java:1436 Ignoring\ sketch\ with\ bad\ name=\u5ffd\u7565\u64c1\u6709\u4e0d\u597d\u540d\u7a31\u7684\u8349\u7a3f\u78bc @@ -884,9 +910,9 @@ Installed=\u5df2\u5b89\u88dd #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:154 Installing\ boards...=\u6b63\u5728\u5b89\u88dd\u958b\u767c\u677f... -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:126 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:109 #, java-format -Installing\ library\:\ {0}=\u5b89\u88dd\u7a0b\u5f0f\u5eab\uff1a{0} +!Installing\ library\:\ {0}\:{1}= #: ../../../cc/arduino/contributions/packages/ContributionInstaller.java:134 #, java-format @@ -907,6 +933,15 @@ Invalid\ library\ found\ in\ {0}\:\ {1}=\u5728{0}\: {1}\u88e1\u627e\u5230\u7121\ #, java-format Invalid\ quoting\:\ no\ closing\ [{0}]\ char\ found.=\u4e0d\u6b63\u78ba\u7684\u5f15\u865f\uff1a\u6c92\u627e\u5230\u4ee3\u8868\u7d50\u675f\u7684[{0}]\u5b57\u5143 +#: ../../../../../arduino-core/src/processing/app/packages/UserLibrary.java:158 +#, java-format +!Invalid\ version\ '{0}'\ for\ library\ in\:\ {1}= + +#: ../../../../../app/src/processing/app/Base.java:316 +#: ../../../../../app/src/processing/app/Base.java:362 +#, java-format +!Invalid\ version\ {0}= + #: Preferences.java:102 Italian=\u7fa9\u5927\u5229\u8a9e @@ -931,9 +966,9 @@ Library\ added\ to\ your\ libraries.\ Check\ "Include\ library"\ menu=\u5df2\u52 #: ../../../../../arduino-core/src/cc/arduino/Compiler.java:73 Library\ can't\ use\ both\ 'src'\ and\ 'utility'\ folders.\ Double\ check\ {0}=\u7a0b\u5f0f\u5eab\u7121\u6cd5\u540c\u6642\u4f7f\u7528\u8cc7\u6599\u593e'src'\u8207'utility'\u3002\u518d\u6b21\u6aa2\u67e5{0} -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:107 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:88 #, java-format -Library\ is\ already\ installed\:\ {0}\ version\ {1}=\u7a0b\u5f0f\u5eab\u5df2\u7d93\u5b89\u88dd\uff1a{0} version {1} +!Library\ is\ already\ installed\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/view/GoToLineNumber.java:70 Line\ number\:=\u884c\u6578\uff1a @@ -1246,9 +1281,9 @@ Reference=\u53c3\u8003\u6587\u4ef6 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributedPlatformTableCell.java:85 Remove=\u79fb\u9664 -#: ../../../cc/arduino/contributions/libraries/LibraryInstaller.java:157 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibraryInstaller.java:142 #, java-format -Removing\ library\:\ {0}=\u79fb\u9664\u7a0b\u5f0f\u5eab\uff1a{0} +!Removing\ library\:\ {0}\:{1}= #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:266 #: ../../../../../app/src/cc/arduino/contributions/packages/ui/ContributionManagerUI.java:203 @@ -1276,6 +1311,9 @@ Replace\ with\:=\u7f6e\u63db\u70ba\: #: ../../../../../arduino-core/src/processing/app/I18n.java:28 Retired=\u5df2\u9000\u5f79 +#: ../../../../../app/src/processing/app/Editor.java:1973 +!Retry\ the\ upload\ with\ another\ serial\ port?= + #: Preferences.java:113 Romanian=\u7f85\u99ac\u5c3c\u4e9e\u8a9e @@ -1367,9 +1405,13 @@ Serial\ monitor\ not\ available\ while\ plotter\ is\ open=\u7576\u7e6a\u5716\u5b #, java-format Serial\ port\ ''{0}''\ not\ found.\ Did\ you\ select\ the\ right\ one\ from\ the\ Tools\ >\ Serial\ Port\ menu?=\u627e\u4e0d\u5230\u5e8f\u5217\u57e0''{0}''\u3002\u60a8\u5728\u9078\u55ae\u300c\u5de5\u5177>\u5e8f\u5217\u57e0\u300d\u88e1\u7684\u8a2d\u5b9a\u6b63\u78ba\u55ce\uff1f -#: Editor.java:2343 +#: ../../../../../app/src/processing/app/Editor.java:1969 +#: ../../../../../app/src/processing/app/Editor.java:2040 +!Serial\ port\ not\ selected.= + +#: ../../../../../app/src/processing/app/Editor.java:1971 #, java-format -Serial\ port\ {0}\ not\ found.\nRetry\ the\ upload\ with\ another\ serial\ port?=\u6c92\u627e\u5230\u5e8f\u5217\u57e0{0}\u3002\n\u4ee5\u53e6\u4e00\u500b\u5e8f\u5217\u57e0\u518d\u8a66\u8457\u4e0a\u50b3\u55ce\uff1f +!Serial\ port\ {0}\ not\ found.= #: ../../../../../app/src/processing/app/Editor.java:65 Serial\ ports=\u5e8f\u5217\u57e0 @@ -1387,6 +1429,9 @@ Settings\ issues=\u8a2d\u5b9a\u503c\u76f8\u95dc\u554f\u984c #: Editor.java:641 Show\ Sketch\ Folder=\u986f\u793a\u8349\u7a3f\u78bc\u8cc7\u6599\u593e +#: ../../../../../app/src/processing/app/AbstractTextMonitor.java:101 +!Show\ timestamp= + #: Preferences.java:387 Show\ verbose\ output\ during\:\ =\u986f\u793a\u8a73\u7d30\u8f38\u51fa\uff1a @@ -1506,6 +1551,10 @@ The\ current\ selected\ board\ needs\ the\ core\ '{0}'\ that\ is\ not\ installed #, java-format The\ file\ "{0}"\ needs\ to\ be\ inside\na\ sketch\ folder\ named\ "{1}".\nCreate\ this\ folder,\ move\ the\ file,\ and\ continue?=\u6a94\u6848"{0}"\u5fc5\u9808\u4f4d\u65bc\n\u540d\u70ba"{1}"\u7684\u8349\u7a3f\u78bc\u8cc7\u6599\u593e\u4e2d\u3002\n\u5efa\u7acb\u6b64\u8cc7\u6599\u593e\u3001\u79fb\u52d5\u6a94\u6848\u3001\u4e26\u4e14\u7e7c\u7e8c\u55ce\uff1f +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:180 +#, java-format +!The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ folder\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= + #: Base.java:1054 Base.java:2674 #, java-format The\ library\ "{0}"\ cannot\ be\ used.\nLibrary\ names\ must\ contain\ only\ basic\ letters\ and\ numbers.\n(ASCII\ only\ and\ no\ spaces,\ and\ it\ cannot\ start\ with\ a\ number)=\u7121\u6cd5\u4f7f\u7528\u7a0b\u5f0f\u5eab"{0}"\u3002\n\u7a0b\u5f0f\u5eab\u7684\u540d\u7a31\u53ea\u80fd\u542b\u6709\u57fa\u672c\u5b57\u6bcd\u8207\u6578\u5b57\u3002\n\uff08\u53ea\u80fd\u662fASCII\uff0c\u4e0d\u80fd\u6709\u7a7a\u767d\u5b57\u5143\uff0c\u4e5f\u4e0d\u80fd\u4ee5\u6578\u5b57\u958b\u982d\uff09 @@ -1530,8 +1579,8 @@ The\ sketch\ already\ contains\ a\ file\ named\ "{0}"=\u8349\u7a3f\u78bc\u76ee\u #: Sketch.java:1755 The\ sketch\ folder\ has\ disappeared.\n\ Will\ attempt\ to\ re-save\ in\ the\ same\ location,\nbut\ anything\ besides\ the\ code\ will\ be\ lost.=\u8349\u7a3f\u78bc\u8cc7\u6599\u593e\u6d88\u5931\u4e86\u3002\n\u5c07\u8a66\u8457\u5728\u540c\u4e00\u4f4d\u7f6e\u91cd\u65b0\u5132\u5b58\uff0c\n\u4f46\u9664\u4e86\u7a0b\u5f0f\u78bc\u4ee5\u5916\u7684\u6771\u897f\u5c07\u907a\u5931\u3002 -#: ../../../../../app/src/processing/app/SketchController.java:828 -!The\ sketch\ name\ had\ to\ be\ modified.\ Sketch\ names\ can\ only\ consist\nof\ ASCII\ characters\ and\ numbers\ and\ be\ less\ than\ 64\ characters\ long.= +#: ../../../../../app/src/processing/app/SketchController.java:849 +!The\ sketch\ name\ had\ to\ be\ modified.\nSketch\ names\ must\ start\ with\ a\ letter\ or\ number,\ followed\ by\ letters,\nnumbers,\ dashes,\ dots\ and\ underscores.\ Maximum\ length\ is\ 63\ characters.= #: Base.java:259 The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ default\ sketchbook\nlocation,\ and\ create\ a\ new\ sketchbook\ folder\ if\nnecessary.\ Arduino\ will\ then\ stop\ talking\ about\nhimself\ in\ the\ third\ person.=\u8349\u7a3f\u78bc\u7c3f\u8cc7\u6599\u593e\u5df2\u4e0d\u5b58\u5728\u3002\nArduino\u5c07\u8f49\u70ba\u4f7f\u7528\u9810\u8a2d\u7684\u8349\u7a3f\u78bc\u7c3f\u4f4d\u7f6e\uff0c\n\u4e26\u4e14\u8996\u9700\u8981\u65b0\u589e\u8cc7\u6599\u593e\u3002\u7136\u5f8cArduino\u5c07\n\u505c\u6b62\u4ee5\u7b2c\u4e09\u4eba\u7a31\u63d0\u53ca\u81ea\u5df1\u3002 @@ -1539,6 +1588,9 @@ The\ sketchbook\ folder\ no\ longer\ exists.\nArduino\ will\ switch\ to\ the\ de #: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:514 The\ specified\ sketchbook\ folder\ contains\ your\ copy\ of\ the\ IDE.\nPlease\ choose\ a\ different\ folder\ for\ your\ sketchbook.=\u6307\u5b9a\u7684\u8349\u7a3f\u78bc\u7c3f\u8cc7\u6599\u593e\u542b\u6709\u4f60\u7684IDE\u3002\n\u8acb\u70ba\u8349\u7a3f\u78bc\u7c3f\u53e6\u9078\u8cc7\u6599\u593e\u3002 +#: ../../../../../app/src/cc/arduino/view/preferences/Preferences.java:311 +!Theme\:\ = + #: ../../../../../app/src/cc/arduino/contributions/libraries/ui/LibraryManagerUI.java:257 This\ library\ is\ not\ listed\ on\ Library\ Manager.\ You\ won't\ be\ able\ to\ reinstall\ it\ from\ here.\nAre\ you\ sure\ you\ want\ to\ delete\ it?=\u7a0b\u5f0f\u5eab\u7ba1\u7406\u54e1\u4e26\u672a\u5217\u51fa\u9019\u500b\u7a0b\u5f0f\u5eab\uff0c\u4f60\u5c07\u7121\u6cd5\u5728\u6b64\u91cd\u65b0\u5b89\u88dd\u5b83\u3002\n\u4f60\u78ba\u5b9a\u60f3\u8981\u522a\u9664\u5b83\u55ce\uff1f @@ -1873,6 +1925,11 @@ ignoring\ invalid\ font\ size\ {0}=\u5ffd\u7565\u7121\u6548\u7684\u5b57\u578b\u5 #: Editor.java:936 Editor.java:943 name\ is\ null=\u540d\u7a31\u662f\u7a7a\u7684 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:217 +#: ../../../../../arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java:227 +#, java-format +!no\ headers\ files\ (.h)\ found\ in\ {0}= + #: Editor.java:932 serialMenu\ is\ null=serialMenu\u662f\u7a7a\u7684 @@ -1940,10 +1997,6 @@ version\ {0}=\u7248\u672c{0} #, java-format {0}\:\ Invalid\ board\ name,\ it\ should\ be\ of\ the\ form\ "package\:arch\:board"\ or\ "package\:arch\:board\:options"={0}\uff1a\u7121\u6548\u7684\u7248\u5b50\u540d\u7a31\uff0c\u683c\u5f0f\u61c9\u8a72\u662f "package\:arch\:board" \u6216 "package\:arch\:board\:options" -#: ../../../processing/app/Base.java:509 -#, java-format -{0}\:\ Invalid\ option\ for\ "{1}"\ option\ for\ board\ "{2}"={0}\uff1a\u7121\u6548\u7684\u9078\u9805 "{1}" \u65bc\u958b\u767c\u677f "{2}" - #: ../../../processing/app/Base.java:507 #, java-format {0}\:\ Invalid\ option\ for\ board\ "{1}"={0}\uff1a\u7121\u6548\u7684\u9078\u9805\u65bc\u958b\u767c\u677f "{1}" @@ -1952,6 +2005,10 @@ version\ {0}=\u7248\u672c{0} #, java-format {0}\:\ Invalid\ option,\ should\ be\ of\ the\ form\ "name\=value"={0}\uff1a\u7121\u6548\u7684\u9078\u9805\uff0c\u683c\u5f0f\u61c9\u8a72\u662f \u201cname\=value\u201d +#: ../../../../../arduino-core/src/processing/app/helpers/CommandlineParser.java:268 +#, java-format +!{0}\:\ Invalid\ value\ for\ option\ "{1}"\ for\ board\ "{2}"= + #: ../../../processing/app/Base.java:486 #, java-format {0}\:\ Unknown\ architecture={0}\uff1a\u4e0d\u660e\u7684\u67b6\u69cb diff --git a/arduino-core/src/processing/app/i18n/pull.sh b/arduino-core/src/processing/app/i18n/pull.sh index 3c3469d669d..216522200b6 100755 --- a/arduino-core/src/processing/app/i18n/pull.sh +++ b/arduino-core/src/processing/app/i18n/pull.sh @@ -31,7 +31,7 @@ if [ "$langs" = "" ]; then fi -python python/pull.py $langs +python2 python/pull.py $langs if [ "$ALL" = "y" ]; then # We must do this until java Locale class is updated... diff --git a/arduino-core/src/processing/app/legacy/PApplet.java b/arduino-core/src/processing/app/legacy/PApplet.java index 23010a42b27..4a803ef16eb 100644 --- a/arduino-core/src/processing/app/legacy/PApplet.java +++ b/arduino-core/src/processing/app/legacy/PApplet.java @@ -16,27 +16,6 @@ public class PApplet { /** Path to sketch folder */ public String sketchPath; //folder; - /** - * Full name of the Java version (i.e. 1.5.0_11). - * Prior to 0125, this was only the first three digits. - */ - public static final String javaVersionName = - System.getProperty("java.version"); - - /** - * Version of Java that's in use, whether 1.1 or 1.3 or whatever, - * stored as a float. - *

- * Note that because this is stored as a float, the values may - * not be exactly 1.3 or 1.4. Instead, make sure you're - * comparing against 1.3f or 1.4f, which will have the same amount - * of error (i.e. 1.40000001). This could just be a double, but - * since Processing only uses floats, it's safer for this to be a float - * because there's no good way to specify a double with the preproc. - */ - public static final float javaVersion = - new Float(javaVersionName.substring(0, 3)).floatValue(); - /** * Current platform in use, one of the * PConstants WINDOWS, MACOSX, MACOS9, LINUX or OTHER. @@ -552,26 +531,20 @@ static final public String[] str(int x[]) { /** * I want to print lines to a file. I have RSI from typing these * eight lines of code so many times. + * @throws IOException */ - static public PrintWriter createWriter(File file) { + static public PrintWriter createWriter(File file) throws IOException { + createPath(file); // make sure in-between folders exist + OutputStream output = new FileOutputStream(file); try { - createPath(file); // make sure in-between folders exist - OutputStream output = new FileOutputStream(file); if (file.getName().toLowerCase().endsWith(".gz")) { output = new GZIPOutputStream(output); } - return createWriter(output); - - } catch (Exception e) { - if (file == null) { - throw new RuntimeException("File passed to createWriter() was null"); - } else { - e.printStackTrace(); - throw new RuntimeException("Couldn't create a writer for " + - file.getAbsolutePath()); - } + } catch (IOException e) { + output.close(); + throw e; } - //return null; + return createWriter(output); } diff --git a/arduino-core/src/processing/app/linux/Platform.java b/arduino-core/src/processing/app/linux/Platform.java index 8c507234795..2220aaeb67d 100644 --- a/arduino-core/src/processing/app/linux/Platform.java +++ b/arduino-core/src/processing/app/linux/Platform.java @@ -37,10 +37,11 @@ */ public class Platform extends processing.app.Platform { - // TODO Need to be smarter here since KDE people ain't gonna like that GTK. - // It may even throw a weird exception at 'em for their trouble. @Override public void setLookAndFeel() throws Exception { + // Override desktop check + System.setProperty("sun.desktop", "gnome"); + super.setLookAndFeel(); GTKLookAndFeelFixer.installGtkPopupBugWorkaround(); } diff --git a/arduino-core/src/processing/app/packages/UserLibrary.java b/arduino-core/src/processing/app/packages/UserLibrary.java index c6c2c2ffc8e..c1625b88a01 100644 --- a/arduino-core/src/processing/app/packages/UserLibrary.java +++ b/arduino-core/src/processing/app/packages/UserLibrary.java @@ -28,11 +28,8 @@ */ package processing.app.packages; -import cc.arduino.Constants; -import cc.arduino.contributions.VersionHelper; -import cc.arduino.contributions.libraries.ContributedLibraryReference; -import processing.app.helpers.PreferencesMap; -import processing.app.packages.UserLibraryFolder.Location; +import static processing.app.I18n.format; +import static processing.app.I18n.tr; import java.io.File; import java.io.IOException; @@ -41,9 +38,16 @@ import java.util.ArrayList; import java.util.LinkedList; import java.util.List; +import java.util.Optional; import com.github.zafarkhaja.semver.Version; +import cc.arduino.Constants; +import cc.arduino.contributions.VersionHelper; +import cc.arduino.contributions.libraries.ContributedLibraryDependency; +import processing.app.helpers.PreferencesMap; +import processing.app.packages.UserLibraryFolder.Location; + public class UserLibrary { private String name; @@ -141,19 +145,23 @@ public static UserLibrary create(UserLibraryFolder libFolderDesc) throws IOExcep } List includes = null; - if (properties.containsKey("includes")) { + if (properties.containsKey("includes") && !properties.get("includes").trim().isEmpty()) { includes = new ArrayList<>(); for (String i : properties.get("includes").split(",")) includes.add(i.trim()); } String declaredVersion = properties.get("version").trim(); - Version version = VersionHelper.valueOf(declaredVersion); + Optional version = VersionHelper.valueOf(declaredVersion); + if (!version.isPresent()) { + System.out.println( + format(tr("Invalid version '{0}' for library in: {1}"), declaredVersion, libFolder.getAbsolutePath())); + } UserLibrary res = new UserLibrary(); res.installedFolder = libFolder; res.name = properties.get("name").trim(); - res.version = version.toString(); + res.version = version.isPresent() ? version.get().toString() : declaredVersion; res.author = properties.get("author").trim(); res.maintainer = properties.get("maintainer").trim(); res.sentence = properties.get("sentence").trim(); @@ -222,7 +230,7 @@ public String getMaintainer() { return maintainer; } - public List getRequires() { + public List getRequires() { return null; } diff --git a/build/Adafruit_CircuitPlayground-1.6.8.zip.sha b/build/Adafruit_CircuitPlayground-1.6.8.zip.sha deleted file mode 100644 index f72775d884c..00000000000 --- a/build/Adafruit_CircuitPlayground-1.6.8.zip.sha +++ /dev/null @@ -1 +0,0 @@ -71e641db4f92ea5bf07e435296838aa5781f8f52 diff --git a/build/Adafruit_Circuit_Playground-1.11.3.zip.sha b/build/Adafruit_Circuit_Playground-1.11.3.zip.sha new file mode 100644 index 00000000000..7fc5d8436e3 --- /dev/null +++ b/build/Adafruit_Circuit_Playground-1.11.3.zip.sha @@ -0,0 +1 @@ +d13133ec23c1aa38eca8d90fc7d02caa77924122 diff --git a/build/Bridge-1.6.3.zip.sha b/build/Bridge-1.6.3.zip.sha deleted file mode 100644 index ddf94e442d1..00000000000 --- a/build/Bridge-1.6.3.zip.sha +++ /dev/null @@ -1 +0,0 @@ -880792eda3d529d3d6d73867799cbadaeba3fe88 diff --git a/build/Bridge-1.7.0.zip.sha b/build/Bridge-1.7.0.zip.sha new file mode 100644 index 00000000000..2f6a694a710 --- /dev/null +++ b/build/Bridge-1.7.0.zip.sha @@ -0,0 +1 @@ +6d1a6160e029faf1066b6c7d8e80044a0e4fb017 diff --git a/build/Ethernet-2.0.0.zip.sha b/build/Ethernet-2.0.0.zip.sha new file mode 100644 index 00000000000..f3bd2b030b3 --- /dev/null +++ b/build/Ethernet-2.0.0.zip.sha @@ -0,0 +1 @@ +8df0087aa13fa1ef22bfcb8974b46d65675721a1 diff --git a/build/Firmata-2.5.6.zip.sha b/build/Firmata-2.5.6.zip.sha deleted file mode 100644 index 874fd38cff2..00000000000 --- a/build/Firmata-2.5.6.zip.sha +++ /dev/null @@ -1 +0,0 @@ -84e920f160274af13fe6a30641b006af6920a95e diff --git a/build/Firmata-2.5.8.zip.sha b/build/Firmata-2.5.8.zip.sha new file mode 100644 index 00000000000..730ac66be9f --- /dev/null +++ b/build/Firmata-2.5.8.zip.sha @@ -0,0 +1 @@ +f3503270998e211d770b3a0269562b97d2f50d80 diff --git a/build/GSM-1.0.6.zip.sha b/build/GSM-1.0.6.zip.sha new file mode 100644 index 00000000000..17e91951ad4 --- /dev/null +++ b/build/GSM-1.0.6.zip.sha @@ -0,0 +1 @@ +dd70f34bea2a715755aa332b0e4a41c1be951496 diff --git a/build/Keyboard-1.0.1.zip.sha b/build/Keyboard-1.0.1.zip.sha deleted file mode 100644 index 496207cca6c..00000000000 --- a/build/Keyboard-1.0.1.zip.sha +++ /dev/null @@ -1 +0,0 @@ -d88b4fd86c80b57a9cd9f21c4ac68494243441ef diff --git a/build/Keyboard-1.0.2.zip.sha b/build/Keyboard-1.0.2.zip.sha new file mode 100644 index 00000000000..76653ba7c21 --- /dev/null +++ b/build/Keyboard-1.0.2.zip.sha @@ -0,0 +1 @@ +251d547d24d81bb375ed397862dfb181eb8b0089 diff --git a/build/SD-1.1.0.zip.sha b/build/SD-1.1.0.zip.sha deleted file mode 100644 index 4e5c0917eee..00000000000 --- a/build/SD-1.1.0.zip.sha +++ /dev/null @@ -1 +0,0 @@ -9b16bafb44e485f40e7b2dbf9887142e41b90c8f diff --git a/build/SD-1.1.1.zip.sha b/build/SD-1.1.1.zip.sha deleted file mode 100644 index cb0e1e6e132..00000000000 --- a/build/SD-1.1.1.zip.sha +++ /dev/null @@ -1 +0,0 @@ -fffba57afd890a8a9efca7ac8b6bd8ed3c2dd25a diff --git a/build/SD-1.2.4.zip.sha b/build/SD-1.2.4.zip.sha new file mode 100644 index 00000000000..4e562421a11 --- /dev/null +++ b/build/SD-1.2.4.zip.sha @@ -0,0 +1 @@ +3b32889f94b876970b0b3115be1a751f245cceb8 diff --git a/build/Servo-1.1.2.zip.sha b/build/Servo-1.1.2.zip.sha deleted file mode 100644 index a9a4df48869..00000000000 --- a/build/Servo-1.1.2.zip.sha +++ /dev/null @@ -1 +0,0 @@ -2644759212882137eb94780625e850b505dd6862 diff --git a/build/Servo-1.1.8.zip.sha b/build/Servo-1.1.8.zip.sha new file mode 100644 index 00000000000..7d16048a279 --- /dev/null +++ b/build/Servo-1.1.8.zip.sha @@ -0,0 +1 @@ +cb423411be580058ae504999c91f0b312f2aac3a diff --git a/build/SpacebrewYun-1.0.1.zip.sha b/build/SpacebrewYun-1.0.1.zip.sha deleted file mode 100644 index ba4e879ea81..00000000000 --- a/build/SpacebrewYun-1.0.1.zip.sha +++ /dev/null @@ -1 +0,0 @@ -6caa46b01928db2cdbb10494e73cc9d3ae6e3fd7 diff --git a/build/SpacebrewYun-1.0.2.zip.sha b/build/SpacebrewYun-1.0.2.zip.sha new file mode 100644 index 00000000000..5ad269b6c32 --- /dev/null +++ b/build/SpacebrewYun-1.0.2.zip.sha @@ -0,0 +1 @@ +826f5af7717e4ab717fce2a6316f23eee4a1c057 diff --git a/build/Stepper-1.1.3.zip.sha b/build/Stepper-1.1.3.zip.sha new file mode 100644 index 00000000000..8f0fca876d6 --- /dev/null +++ b/build/Stepper-1.1.3.zip.sha @@ -0,0 +1 @@ +0066669962ddf7efc34cfeade75b5d20ba284cb1 diff --git a/build/TFT-1.0.6.zip.sha b/build/TFT-1.0.6.zip.sha new file mode 100644 index 00000000000..a06f5e82a8c --- /dev/null +++ b/build/TFT-1.0.6.zip.sha @@ -0,0 +1 @@ +1af8d4c8960bd98191d001308528071b1ad0492f diff --git a/build/WiFi-1.2.7.zip.sha b/build/WiFi-1.2.7.zip.sha new file mode 100644 index 00000000000..672f2a46442 --- /dev/null +++ b/build/WiFi-1.2.7.zip.sha @@ -0,0 +1 @@ +2f70aa472e0c78dd0642fac7befc2df285059727 diff --git a/build/arduino-builder-linux32-1.4.0.tar.bz2.sha b/build/arduino-builder-linux32-1.4.0.tar.bz2.sha deleted file mode 100644 index 292611bee1b..00000000000 --- a/build/arduino-builder-linux32-1.4.0.tar.bz2.sha +++ /dev/null @@ -1 +0,0 @@ -7a970567d0a922d4511d5a8e4a6dd1578e5fc2c9 diff --git a/build/arduino-builder-linux32-1.6.1.tar.bz2.sha b/build/arduino-builder-linux32-1.6.1.tar.bz2.sha new file mode 100644 index 00000000000..a603d769366 --- /dev/null +++ b/build/arduino-builder-linux32-1.6.1.tar.bz2.sha @@ -0,0 +1 @@ +e034c072a81f00a831dd602a5e7beabc2cd0f1a0 diff --git a/build/arduino-builder-linux64-1.4.0.tar.bz2.sha b/build/arduino-builder-linux64-1.4.0.tar.bz2.sha deleted file mode 100644 index f826c7b3870..00000000000 --- a/build/arduino-builder-linux64-1.4.0.tar.bz2.sha +++ /dev/null @@ -1 +0,0 @@ -eab841d283da9f390c467c0e2843e61b4a7b58fb diff --git a/build/arduino-builder-linux64-1.6.1.tar.bz2.sha b/build/arduino-builder-linux64-1.6.1.tar.bz2.sha new file mode 100644 index 00000000000..60d019e6ddf --- /dev/null +++ b/build/arduino-builder-linux64-1.6.1.tar.bz2.sha @@ -0,0 +1 @@ +57c1f3ffc849aed119207d8fd8a130a967d0e6c8 diff --git a/build/arduino-builder-linuxaarch64-1.4.0.tar.bz2.sha b/build/arduino-builder-linuxaarch64-1.4.0.tar.bz2.sha deleted file mode 100644 index 1ade861cca3..00000000000 --- a/build/arduino-builder-linuxaarch64-1.4.0.tar.bz2.sha +++ /dev/null @@ -1 +0,0 @@ -c362a5877c9eacade91a184e1c4ea7aa61e8d6fc diff --git a/build/arduino-builder-linuxaarch64-1.6.1.tar.bz2.sha b/build/arduino-builder-linuxaarch64-1.6.1.tar.bz2.sha new file mode 100644 index 00000000000..431a1f1da52 --- /dev/null +++ b/build/arduino-builder-linuxaarch64-1.6.1.tar.bz2.sha @@ -0,0 +1 @@ +b54ad6ec630d66521a84075c763e8325c6f82591 diff --git a/build/arduino-builder-linuxarm-1.4.0.tar.bz2.sha b/build/arduino-builder-linuxarm-1.4.0.tar.bz2.sha deleted file mode 100644 index 9a7e5d8cd68..00000000000 --- a/build/arduino-builder-linuxarm-1.4.0.tar.bz2.sha +++ /dev/null @@ -1 +0,0 @@ -93b483fa08c1d1f10f4ed146a3312e51383c6e37 diff --git a/build/arduino-builder-linuxarm-1.6.1.tar.bz2.sha b/build/arduino-builder-linuxarm-1.6.1.tar.bz2.sha new file mode 100644 index 00000000000..1620c757d6f --- /dev/null +++ b/build/arduino-builder-linuxarm-1.6.1.tar.bz2.sha @@ -0,0 +1 @@ +cb378bc29edeb90ad52d0544e02862a137b5f54c diff --git a/build/arduino-builder-macosx-1.4.0.tar.bz2.sha b/build/arduino-builder-macosx-1.4.0.tar.bz2.sha deleted file mode 100644 index fada0bfc430..00000000000 --- a/build/arduino-builder-macosx-1.4.0.tar.bz2.sha +++ /dev/null @@ -1 +0,0 @@ -bb95d311b6ca79b2064991211420ca00c7775390 diff --git a/build/arduino-builder-macosx-1.6.1-signed.tar.bz2.sha b/build/arduino-builder-macosx-1.6.1-signed.tar.bz2.sha new file mode 100644 index 00000000000..328593fd5da --- /dev/null +++ b/build/arduino-builder-macosx-1.6.1-signed.tar.bz2.sha @@ -0,0 +1 @@ +e1335e27ac3b92421c18977884eb558c07af76ab diff --git a/build/arduino-builder-windows-1.4.0.zip.sha b/build/arduino-builder-windows-1.4.0.zip.sha deleted file mode 100644 index b1f6a6a731d..00000000000 --- a/build/arduino-builder-windows-1.4.0.zip.sha +++ /dev/null @@ -1 +0,0 @@ -1f03da34a8378244ca2d94fa70f26a0ef1eeee3e diff --git a/build/arduino-builder-windows-1.6.1.zip.sha b/build/arduino-builder-windows-1.6.1.zip.sha new file mode 100644 index 00000000000..9a72545fbf7 --- /dev/null +++ b/build/arduino-builder-windows-1.6.1.zip.sha @@ -0,0 +1 @@ +b341957539bc149300607ec03366e3910e2ac0a5 diff --git a/build/arduino-examples-1.9.1.zip.sha b/build/arduino-examples-1.9.1.zip.sha new file mode 100644 index 00000000000..5b1c6853d18 --- /dev/null +++ b/build/arduino-examples-1.9.1.zip.sha @@ -0,0 +1 @@ +edf504dcca605d34818214747c9197cb376c834d diff --git a/build/avr-1.6.22.tar.bz2.sha b/build/avr-1.6.22.tar.bz2.sha deleted file mode 100644 index 68ceb71dedf..00000000000 --- a/build/avr-1.6.22.tar.bz2.sha +++ /dev/null @@ -1 +0,0 @@ -e17e987ff1abb431a33a2b9ef44faaee184fbf03 diff --git a/build/avr-1.8.3.tar.bz2.sha b/build/avr-1.8.3.tar.bz2.sha new file mode 100644 index 00000000000..df9ac63a6db --- /dev/null +++ b/build/avr-1.8.3.tar.bz2.sha @@ -0,0 +1 @@ +56c1071e02be90313ea61381a26410f5376ed9f7 diff --git a/build/build.xml b/build/build.xml index ba66230c850..c4de6aecf98 100644 --- a/build/build.xml +++ b/build/build.xml @@ -23,6 +23,7 @@ + @@ -33,18 +34,21 @@ + + + @@ -55,6 +59,9 @@ + + + @@ -64,11 +71,13 @@ + + @@ -82,17 +91,23 @@ + + + - - - - - - + + + + + + + + + @@ -102,6 +117,22 @@ + + + + + + + + + + + + + + + + @@ -138,7 +169,7 @@ - + @@ -155,7 +186,14 @@ - + + + + + + + + @@ -174,14 +212,7 @@ - - - - - - - - + @@ -190,59 +221,56 @@ - - + + - - - - - - - - - - - - - - - - - - - - + + + + + + - - - + + + + + + + + + + + + + - - - - - - + + + + + + + - + - - - + + + - + @@ -253,7 +281,7 @@ - + @@ -265,7 +293,7 @@ - + @@ -367,13 +395,13 @@ - - - - + + + + - + @@ -405,6 +433,7 @@

  • item
  • item
  • item
"; - int firstListItem = stringOne.indexOf("
  • "); - int secondListItem = stringOne.indexOf("
  • ", firstListItem + 1); - Serial.println("The index of the second list tag in the string " + stringOne + " is " + secondListItem); - - // lastIndexOf() gives you the last occurrence of a character or string: - int lastOpeningBracket = stringOne.lastIndexOf('<'); - Serial.println("The index of the last < in the string " + stringOne + " is " + lastOpeningBracket); - - int lastListItem = stringOne.lastIndexOf("
  • "); - Serial.println("The index of the last list tag in the string " + stringOne + " is " + lastListItem); - - - // lastIndexOf() can also search for a string: - stringOne = "

    Lorem ipsum dolor sit amet

    Ipsem

    Quod

    "; - int lastParagraph = stringOne.lastIndexOf(" 0) { - char inChar = Serial.read(); - txtMsg += inChar; - } - - // print the message and a notice if it's changed: - if (txtMsg.length() != lastStringLength) { - Serial.println(txtMsg); - Serial.println(txtMsg.length()); - // if the String's longer than 140 characters, complain: - if (txtMsg.length() < 140) { - Serial.println("That's a perfectly acceptable text message"); - } else { - Serial.println("That's too long for a text message."); - } - // note the length for next time through the loop: - lastStringLength = txtMsg.length(); - } -} diff --git a/build/shared/examples/08.Strings/StringLength/StringLength.txt b/build/shared/examples/08.Strings/StringLength/StringLength.txt deleted file mode 100644 index 7ffb9c31283..00000000000 --- a/build/shared/examples/08.Strings/StringLength/StringLength.txt +++ /dev/null @@ -1 +0,0 @@ -Examples of how to use length() in a String. \ No newline at end of file diff --git a/build/shared/examples/08.Strings/StringLengthTrim/StringLengthTrim.ino b/build/shared/examples/08.Strings/StringLengthTrim/StringLengthTrim.ino deleted file mode 100644 index d107c8f09e7..00000000000 --- a/build/shared/examples/08.Strings/StringLengthTrim/StringLengthTrim.ino +++ /dev/null @@ -1,42 +0,0 @@ -/* - String length() and trim() - - Examples of how to use length() and trim() in a String - - created 27 Jul 2010 - modified 2 Apr 2012 - by Tom Igoe - - This example code is in the public domain. - - http://www.arduino.cc/en/Tutorial/StringLengthTrim -*/ - -void setup() { - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // send an intro: - Serial.println("\n\nString length() and trim():"); - Serial.println(); -} - -void loop() { - // here's a String with empty spaces at the end (called white space): - String stringOne = "Hello! "; - Serial.print(stringOne); - Serial.print("<--- end of string. Length: "); - Serial.println(stringOne.length()); - - // trim the white space off the string: - stringOne.trim(); - Serial.print(stringOne); - Serial.print("<--- end of trimmed string. Length: "); - Serial.println(stringOne.length()); - - // do nothing while true: - while (true); -} diff --git a/build/shared/examples/08.Strings/StringLengthTrim/StringLengthTrim.txt b/build/shared/examples/08.Strings/StringLengthTrim/StringLengthTrim.txt deleted file mode 100644 index 43dcaa984db..00000000000 --- a/build/shared/examples/08.Strings/StringLengthTrim/StringLengthTrim.txt +++ /dev/null @@ -1 +0,0 @@ -Get and trim the length of a String. \ No newline at end of file diff --git a/build/shared/examples/08.Strings/StringReplace/StringReplace.ino b/build/shared/examples/08.Strings/StringReplace/StringReplace.ino deleted file mode 100644 index 17407f1ec13..00000000000 --- a/build/shared/examples/08.Strings/StringReplace/StringReplace.ino +++ /dev/null @@ -1,50 +0,0 @@ -/* - String replace() - - Examples of how to replace characters or substrings of a String - - created 27 Jul 2010 - modified 2 Apr 2012 - by Tom Igoe - - This example code is in the public domain. - - http://www.arduino.cc/en/Tutorial/StringReplace -*/ - -void setup() { - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // send an intro: - Serial.println("\n\nString replace:\n"); - Serial.println(); -} - -void loop() { - String stringOne = ""; - Serial.println(stringOne); - // replace() changes all instances of one substring with another: - // first, make a copy of the original string: - String stringTwo = stringOne; - // then perform the replacements: - stringTwo.replace("<", " 0) { - int inChar = Serial.read(); - if (isDigit(inChar)) { - // convert the incoming byte to a char and add it to the string: - inString += (char)inChar; - } - // if you get a newline, print the string, then the string's value: - if (inChar == '\n') { - Serial.print("Value:"); - Serial.println(inString.toInt()); - Serial.print("String: "); - Serial.println(inString); - // clear the string for new input: - inString = ""; - } - } -} diff --git a/build/shared/examples/09.USB/Keyboard/KeyboardLogout/KeyboardLogout.ino b/build/shared/examples/09.USB/Keyboard/KeyboardLogout/KeyboardLogout.ino deleted file mode 100644 index f6ea490c2d7..00000000000 --- a/build/shared/examples/09.USB/Keyboard/KeyboardLogout/KeyboardLogout.ino +++ /dev/null @@ -1,89 +0,0 @@ -/* - Keyboard logout - - This sketch demonstrates the Keyboard library. - - When you connect pin 2 to ground, it performs a logout. - It uses keyboard combinations to do this, as follows: - - On Windows, CTRL-ALT-DEL followed by ALT-l - On Ubuntu, CTRL-ALT-DEL, and ENTER - On OSX, CMD-SHIFT-q - - To wake: Spacebar. - - Circuit: - - Arduino Leonardo or Micro - - wire to connect D2 to ground - - created 6 Mar 2012 - modified 27 Mar 2012 - by Tom Igoe - - This example is in the public domain. - - http://www.arduino.cc/en/Tutorial/KeyboardLogout -*/ - -#define OSX 0 -#define WINDOWS 1 -#define UBUNTU 2 - -#include "Keyboard.h" - -// change this to match your platform: -int platform = OSX; - -void setup() { - // make pin 2 an input and turn on the pull-up resistor so it goes high unless - // connected to ground: - pinMode(2, INPUT_PULLUP); - Keyboard.begin(); -} - -void loop() { - while (digitalRead(2) == HIGH) { - // do nothing until pin 2 goes low - delay(500); - } - delay(1000); - - switch (platform) { - case OSX: - Keyboard.press(KEY_LEFT_GUI); - // Shift-Q logs out: - Keyboard.press(KEY_LEFT_SHIFT); - Keyboard.press('Q'); - delay(100); - Keyboard.releaseAll(); - // enter: - Keyboard.write(KEY_RETURN); - break; - case WINDOWS: - // CTRL-ALT-DEL: - Keyboard.press(KEY_LEFT_CTRL); - Keyboard.press(KEY_LEFT_ALT); - Keyboard.press(KEY_DELETE); - delay(100); - Keyboard.releaseAll(); - // ALT-l: - delay(2000); - Keyboard.press(KEY_LEFT_ALT); - Keyboard.press('l'); - Keyboard.releaseAll(); - break; - case UBUNTU: - // CTRL-ALT-DEL: - Keyboard.press(KEY_LEFT_CTRL); - Keyboard.press(KEY_LEFT_ALT); - Keyboard.press(KEY_DELETE); - delay(1000); - Keyboard.releaseAll(); - // Enter to confirm logout: - Keyboard.write(KEY_RETURN); - break; - } - - // do nothing: - while (true); -} diff --git a/build/shared/examples/09.USB/Keyboard/KeyboardLogout/KeyboardLogout.txt b/build/shared/examples/09.USB/Keyboard/KeyboardLogout/KeyboardLogout.txt deleted file mode 100644 index 6d1900b1397..00000000000 --- a/build/shared/examples/09.USB/Keyboard/KeyboardLogout/KeyboardLogout.txt +++ /dev/null @@ -1 +0,0 @@ -Logs out the current user with key commands. \ No newline at end of file diff --git a/build/shared/examples/09.USB/Keyboard/KeyboardMessage/KeyboardMessage.ino b/build/shared/examples/09.USB/Keyboard/KeyboardMessage/KeyboardMessage.ino deleted file mode 100644 index 32c3b9f81ce..00000000000 --- a/build/shared/examples/09.USB/Keyboard/KeyboardMessage/KeyboardMessage.ino +++ /dev/null @@ -1,52 +0,0 @@ -/* - Keyboard Message test - - For the Arduino Leonardo and Micro. - - Sends a text string when a button is pressed. - - The circuit: - - pushbutton attached from pin 4 to +5V - - 10 kilohm resistor attached from pin 4 to ground - - created 24 Oct 2011 - modified 27 Mar 2012 - by Tom Igoe - modified 11 Nov 2013 - by Scott Fitzgerald - - This example code is in the public domain. - - http://www.arduino.cc/en/Tutorial/KeyboardMessage -*/ - -#include "Keyboard.h" - -const int buttonPin = 4; // input pin for pushbutton -int previousButtonState = HIGH; // for checking the state of a pushButton -int counter = 0; // button push counter - -void setup() { - // make the pushButton pin an input: - pinMode(buttonPin, INPUT); - // initialize control over the keyboard: - Keyboard.begin(); -} - -void loop() { - // read the pushbutton: - int buttonState = digitalRead(buttonPin); - // if the button state has changed, - if ((buttonState != previousButtonState) - // and it's currently pressed: - && (buttonState == HIGH)) { - // increment the button counter - counter++; - // type out a message - Keyboard.print("You pressed the button "); - Keyboard.print(counter); - Keyboard.println(" times."); - } - // save the current button state for comparison next time: - previousButtonState = buttonState; -} diff --git a/build/shared/examples/09.USB/Keyboard/KeyboardMessage/KeyboardMessage.txt b/build/shared/examples/09.USB/Keyboard/KeyboardMessage/KeyboardMessage.txt deleted file mode 100644 index 86fc2be2386..00000000000 --- a/build/shared/examples/09.USB/Keyboard/KeyboardMessage/KeyboardMessage.txt +++ /dev/null @@ -1 +0,0 @@ -Sends a text string when a button is pressed. \ No newline at end of file diff --git a/build/shared/examples/09.USB/Keyboard/KeyboardMessage/layout.png b/build/shared/examples/09.USB/Keyboard/KeyboardMessage/layout.png deleted file mode 100644 index 622a9a5b0cc..00000000000 Binary files a/build/shared/examples/09.USB/Keyboard/KeyboardMessage/layout.png and /dev/null differ diff --git a/build/shared/examples/09.USB/Keyboard/KeyboardMessage/schematic.png b/build/shared/examples/09.USB/Keyboard/KeyboardMessage/schematic.png deleted file mode 100644 index ef19b85a6af..00000000000 Binary files a/build/shared/examples/09.USB/Keyboard/KeyboardMessage/schematic.png and /dev/null differ diff --git a/build/shared/examples/09.USB/Keyboard/KeyboardReprogram/KeyboardReprogram.ino b/build/shared/examples/09.USB/Keyboard/KeyboardReprogram/KeyboardReprogram.ino deleted file mode 100644 index 7ec0d6d8974..00000000000 --- a/build/shared/examples/09.USB/Keyboard/KeyboardReprogram/KeyboardReprogram.ino +++ /dev/null @@ -1,103 +0,0 @@ -/* - Arduino Programs Blink - - This sketch demonstrates the Keyboard library. - - For Leonardo and Due boards only. - - When you connect pin 2 to ground, it creates a new window with a key - combination (CTRL-N), then types in the Blink sketch, then auto-formats the - text using another key combination (CTRL-T), then uploads the sketch to the - currently selected Arduino using a final key combination (CTRL-U). - - Circuit: - - Arduino Leonardo, Micro, Due, LilyPad USB, or Yún - - wire to connect D2 to ground - - created 5 Mar 2012 - modified 29 Mar 2012 - by Tom Igoe - modified 3 May 2014 - by Scott Fitzgerald - - This example is in the public domain. - - http://www.arduino.cc/en/Tutorial/KeyboardReprogram -*/ - -#include "Keyboard.h" - -// use this option for OSX. -// Comment it out if using Windows or Linux: -char ctrlKey = KEY_LEFT_GUI; -// use this option for Windows and Linux. -// leave commented out if using OSX: -// char ctrlKey = KEY_LEFT_CTRL; - - -void setup() { - // make pin 2 an input and turn on the pull-up resistor so it goes high unless - // connected to ground: - pinMode(2, INPUT_PULLUP); - // initialize control over the keyboard: - Keyboard.begin(); -} - -void loop() { - while (digitalRead(2) == HIGH) { - // do nothing until pin 2 goes low - delay(500); - } - delay(1000); - // new document: - Keyboard.press(ctrlKey); - Keyboard.press('n'); - delay(100); - Keyboard.releaseAll(); - // wait for new window to open: - delay(1000); - - // versions of the Arduino IDE after 1.5 pre-populate new sketches with - // setup() and loop() functions let's clear the window before typing anything new - // select all - Keyboard.press(ctrlKey); - Keyboard.press('a'); - delay(500); - Keyboard.releaseAll(); - // delete the selected text - Keyboard.write(KEY_BACKSPACE); - delay(500); - - // Type out "blink": - Keyboard.println("void setup() {"); - Keyboard.println("pinMode(13, OUTPUT);"); - Keyboard.println("}"); - Keyboard.println(); - Keyboard.println("void loop() {"); - Keyboard.println("digitalWrite(13, HIGH);"); - Keyboard.print("delay(3000);"); - // 3000 ms is too long. Delete it: - for (int keystrokes = 0; keystrokes < 6; keystrokes++) { - delay(500); - Keyboard.write(KEY_BACKSPACE); - } - // make it 1000 instead: - Keyboard.println("1000);"); - Keyboard.println("digitalWrite(13, LOW);"); - Keyboard.println("delay(1000);"); - Keyboard.println("}"); - // tidy up: - Keyboard.press(ctrlKey); - Keyboard.press('t'); - delay(100); - Keyboard.releaseAll(); - delay(3000); - // upload code: - Keyboard.press(ctrlKey); - Keyboard.press('u'); - delay(100); - Keyboard.releaseAll(); - - // wait for the sweet oblivion of reprogramming: - while (true); -} diff --git a/build/shared/examples/09.USB/Keyboard/KeyboardReprogram/KeyboardReprogram.txt b/build/shared/examples/09.USB/Keyboard/KeyboardReprogram/KeyboardReprogram.txt deleted file mode 100644 index 0ccbf5fc380..00000000000 --- a/build/shared/examples/09.USB/Keyboard/KeyboardReprogram/KeyboardReprogram.txt +++ /dev/null @@ -1 +0,0 @@ -Opens a new window in the Arduino IDE and reprograms the Leonardo with a simple blink program. \ No newline at end of file diff --git a/build/shared/examples/09.USB/Keyboard/KeyboardSerial/KeyboardSerial.ino b/build/shared/examples/09.USB/Keyboard/KeyboardSerial/KeyboardSerial.ino deleted file mode 100644 index 72d9dddf538..00000000000 --- a/build/shared/examples/09.USB/Keyboard/KeyboardSerial/KeyboardSerial.ino +++ /dev/null @@ -1,39 +0,0 @@ -/* - Keyboard test - - For the Arduino Leonardo, Micro or Due - - Reads a byte from the serial port, sends a keystroke back. - The sent keystroke is one higher than what's received, e.g. if you send a, - you get b, send A you get B, and so forth. - - The circuit: - - none - - created 21 Oct 2011 - modified 27 Mar 2012 - by Tom Igoe - - This example code is in the public domain. - - http://www.arduino.cc/en/Tutorial/KeyboardSerial -*/ - -#include "Keyboard.h" - -void setup() { - // open the serial port: - Serial.begin(9600); - // initialize control over the keyboard: - Keyboard.begin(); -} - -void loop() { - // check for incoming serial data: - if (Serial.available() > 0) { - // read incoming serial data: - char inChar = Serial.read(); - // Type the next ASCII value from what you received: - Keyboard.write(inChar + 1); - } -} diff --git a/build/shared/examples/09.USB/Keyboard/KeyboardSerial/KeyboardSerial.txt b/build/shared/examples/09.USB/Keyboard/KeyboardSerial/KeyboardSerial.txt deleted file mode 100644 index e4e3f91d423..00000000000 --- a/build/shared/examples/09.USB/Keyboard/KeyboardSerial/KeyboardSerial.txt +++ /dev/null @@ -1 +0,0 @@ -Reads a byte from the serial port, and sends back a keystroke. \ No newline at end of file diff --git a/build/shared/examples/09.USB/KeyboardAndMouseControl/KeyboardAndMouseControl.ino b/build/shared/examples/09.USB/KeyboardAndMouseControl/KeyboardAndMouseControl.ino deleted file mode 100644 index 971354134e0..00000000000 --- a/build/shared/examples/09.USB/KeyboardAndMouseControl/KeyboardAndMouseControl.ino +++ /dev/null @@ -1,93 +0,0 @@ -/* - KeyboardAndMouseControl - - Controls the mouse from five pushbuttons on an Arduino Leonardo, Micro or Due. - - Hardware: - - five pushbuttons attached to D2, D3, D4, D5, D6 - - The mouse movement is always relative. This sketch reads four pushbuttons, and - uses them to set the movement of the mouse. - - WARNING: When you use the Mouse.move() command, the Arduino takes over your - mouse! Make sure you have control before you use the mouse commands. - - created 15 Mar 2012 - modified 27 Mar 2012 - by Tom Igoe - - This example code is in the public domain. - - http://www.arduino.cc/en/Tutorial/KeyboardAndMouseControl -*/ - -#include "Keyboard.h" -#include "Mouse.h" - -// set pin numbers for the five buttons: -const int upButton = 2; -const int downButton = 3; -const int leftButton = 4; -const int rightButton = 5; -const int mouseButton = 6; - -void setup() { // initialize the buttons' inputs: - pinMode(upButton, INPUT); - pinMode(downButton, INPUT); - pinMode(leftButton, INPUT); - pinMode(rightButton, INPUT); - pinMode(mouseButton, INPUT); - - Serial.begin(9600); - // initialize mouse control: - Mouse.begin(); - Keyboard.begin(); -} - -void loop() { - // use serial input to control the mouse: - if (Serial.available() > 0) { - char inChar = Serial.read(); - - switch (inChar) { - case 'u': - // move mouse up - Mouse.move(0, -40); - break; - case 'd': - // move mouse down - Mouse.move(0, 40); - break; - case 'l': - // move mouse left - Mouse.move(-40, 0); - break; - case 'r': - // move mouse right - Mouse.move(40, 0); - break; - case 'm': - // perform mouse left click - Mouse.click(MOUSE_LEFT); - break; - } - } - - // use the pushbuttons to control the keyboard: - if (digitalRead(upButton) == HIGH) { - Keyboard.write('u'); - } - if (digitalRead(downButton) == HIGH) { - Keyboard.write('d'); - } - if (digitalRead(leftButton) == HIGH) { - Keyboard.write('l'); - } - if (digitalRead(rightButton) == HIGH) { - Keyboard.write('r'); - } - if (digitalRead(mouseButton) == HIGH) { - Keyboard.write('m'); - } - -} diff --git a/build/shared/examples/09.USB/KeyboardAndMouseControl/KeyboardAndMouseControl.txt b/build/shared/examples/09.USB/KeyboardAndMouseControl/KeyboardAndMouseControl.txt deleted file mode 100644 index 64745d318d1..00000000000 --- a/build/shared/examples/09.USB/KeyboardAndMouseControl/KeyboardAndMouseControl.txt +++ /dev/null @@ -1 +0,0 @@ -Demonstrates the Mouse and Keyboard commands in one program. \ No newline at end of file diff --git a/build/shared/examples/09.USB/KeyboardAndMouseControl/layout.png b/build/shared/examples/09.USB/KeyboardAndMouseControl/layout.png deleted file mode 100644 index 45fdc9c074b..00000000000 Binary files a/build/shared/examples/09.USB/KeyboardAndMouseControl/layout.png and /dev/null differ diff --git a/build/shared/examples/09.USB/KeyboardAndMouseControl/schematic.png b/build/shared/examples/09.USB/KeyboardAndMouseControl/schematic.png deleted file mode 100644 index 09998b07b62..00000000000 Binary files a/build/shared/examples/09.USB/KeyboardAndMouseControl/schematic.png and /dev/null differ diff --git a/build/shared/examples/09.USB/Mouse/ButtonMouseControl/ButtonMouseControl.ino b/build/shared/examples/09.USB/Mouse/ButtonMouseControl/ButtonMouseControl.ino deleted file mode 100644 index 9c78eda5503..00000000000 --- a/build/shared/examples/09.USB/Mouse/ButtonMouseControl/ButtonMouseControl.ino +++ /dev/null @@ -1,84 +0,0 @@ -/* - ButtonMouseControl - - For Leonardo and Due boards only. - - Controls the mouse from five pushbuttons on an Arduino Leonardo, Micro or Due. - - Hardware: - - five pushbuttons attached to D2, D3, D4, D5, D6 - - The mouse movement is always relative. This sketch reads four pushbuttons, - and uses them to set the movement of the mouse. - - WARNING: When you use the Mouse.move() command, the Arduino takes over your - mouse! Make sure you have control before you use the mouse commands. - - created 15 Mar 2012 - modified 27 Mar 2012 - by Tom Igoe - - This example code is in the public domain. - - http://www.arduino.cc/en/Tutorial/ButtonMouseControl -*/ - -#include "Mouse.h" - -// set pin numbers for the five buttons: -const int upButton = 2; -const int downButton = 3; -const int leftButton = 4; -const int rightButton = 5; -const int mouseButton = 6; - -int range = 5; // output range of X or Y movement; affects movement speed -int responseDelay = 10; // response delay of the mouse, in ms - - -void setup() { - // initialize the buttons' inputs: - pinMode(upButton, INPUT); - pinMode(downButton, INPUT); - pinMode(leftButton, INPUT); - pinMode(rightButton, INPUT); - pinMode(mouseButton, INPUT); - // initialize mouse control: - Mouse.begin(); -} - -void loop() { - // read the buttons: - int upState = digitalRead(upButton); - int downState = digitalRead(downButton); - int rightState = digitalRead(rightButton); - int leftState = digitalRead(leftButton); - int clickState = digitalRead(mouseButton); - - // calculate the movement distance based on the button states: - int xDistance = (leftState - rightState) * range; - int yDistance = (upState - downState) * range; - - // if X or Y is non-zero, move: - if ((xDistance != 0) || (yDistance != 0)) { - Mouse.move(xDistance, yDistance, 0); - } - - // if the mouse button is pressed: - if (clickState == HIGH) { - // if the mouse is not pressed, press it: - if (!Mouse.isPressed(MOUSE_LEFT)) { - Mouse.press(MOUSE_LEFT); - } - } - // else the mouse button is not pressed: - else { - // if the mouse is pressed, release it: - if (Mouse.isPressed(MOUSE_LEFT)) { - Mouse.release(MOUSE_LEFT); - } - } - - // a delay so the mouse doesn't move too fast: - delay(responseDelay); -} diff --git a/build/shared/examples/09.USB/Mouse/ButtonMouseControl/ButtonMouseControl.txt b/build/shared/examples/09.USB/Mouse/ButtonMouseControl/ButtonMouseControl.txt deleted file mode 100644 index 20355589b8f..00000000000 --- a/build/shared/examples/09.USB/Mouse/ButtonMouseControl/ButtonMouseControl.txt +++ /dev/null @@ -1 +0,0 @@ -Control cursor movement with 5 pushbuttons. \ No newline at end of file diff --git a/build/shared/examples/09.USB/Mouse/ButtonMouseControl/layout.png b/build/shared/examples/09.USB/Mouse/ButtonMouseControl/layout.png deleted file mode 100644 index 45fdc9c074b..00000000000 Binary files a/build/shared/examples/09.USB/Mouse/ButtonMouseControl/layout.png and /dev/null differ diff --git a/build/shared/examples/09.USB/Mouse/ButtonMouseControl/schematic.png b/build/shared/examples/09.USB/Mouse/ButtonMouseControl/schematic.png deleted file mode 100644 index 09998b07b62..00000000000 Binary files a/build/shared/examples/09.USB/Mouse/ButtonMouseControl/schematic.png and /dev/null differ diff --git a/build/shared/examples/09.USB/Mouse/JoystickMouseControl/JoystickMouseControl.ino b/build/shared/examples/09.USB/Mouse/JoystickMouseControl/JoystickMouseControl.ino deleted file mode 100644 index 1405322eea7..00000000000 --- a/build/shared/examples/09.USB/Mouse/JoystickMouseControl/JoystickMouseControl.ino +++ /dev/null @@ -1,120 +0,0 @@ -/* - JoystickMouseControl - - Controls the mouse from a joystick on an Arduino Leonardo, Micro or Due. - Uses a pushbutton to turn on and off mouse control, and a second pushbutton - to click the left mouse button. - - Hardware: - - 2-axis joystick connected to pins A0 and A1 - - pushbuttons connected to pin D2 and D3 - - The mouse movement is always relative. This sketch reads two analog inputs - that range from 0 to 1023 (or less on either end) and translates them into - ranges of -6 to 6. - The sketch assumes that the joystick resting values are around the middle of - the range, but that they vary within a threshold. - - WARNING: When you use the Mouse.move() command, the Arduino takes over your - mouse! Make sure you have control before you use the command. This sketch - includes a pushbutton to toggle the mouse control state, so you can turn on - and off mouse control. - - created 15 Sep 2011 - updated 28 Mar 2012 - by Tom Igoe - - This example code is in the public domain. - - http://www.arduino.cc/en/Tutorial/JoystickMouseControl -*/ - -#include "Mouse.h" - -// set pin numbers for switch, joystick axes, and LED: -const int switchPin = 2; // switch to turn on and off mouse control -const int mouseButton = 3; // input pin for the mouse pushButton -const int xAxis = A0; // joystick X axis -const int yAxis = A1; // joystick Y axis -const int ledPin = 5; // Mouse control LED - -// parameters for reading the joystick: -int range = 12; // output range of X or Y movement -int responseDelay = 5; // response delay of the mouse, in ms -int threshold = range / 4; // resting threshold -int center = range / 2; // resting position value - -boolean mouseIsActive = false; // whether or not to control the mouse -int lastSwitchState = LOW; // previous switch state - -void setup() { - pinMode(switchPin, INPUT); // the switch pin - pinMode(ledPin, OUTPUT); // the LED pin - // take control of the mouse: - Mouse.begin(); -} - -void loop() { - // read the switch: - int switchState = digitalRead(switchPin); - // if it's changed and it's high, toggle the mouse state: - if (switchState != lastSwitchState) { - if (switchState == HIGH) { - mouseIsActive = !mouseIsActive; - // turn on LED to indicate mouse state: - digitalWrite(ledPin, mouseIsActive); - } - } - // save switch state for next comparison: - lastSwitchState = switchState; - - // read and scale the two axes: - int xReading = readAxis(A0); - int yReading = readAxis(A1); - - // if the mouse control state is active, move the mouse: - if (mouseIsActive) { - Mouse.move(xReading, yReading, 0); - } - - // read the mouse button and click or not click: - // if the mouse button is pressed: - if (digitalRead(mouseButton) == HIGH) { - // if the mouse is not pressed, press it: - if (!Mouse.isPressed(MOUSE_LEFT)) { - Mouse.press(MOUSE_LEFT); - } - } - // else the mouse button is not pressed: - else { - // if the mouse is pressed, release it: - if (Mouse.isPressed(MOUSE_LEFT)) { - Mouse.release(MOUSE_LEFT); - } - } - - delay(responseDelay); -} - -/* - reads an axis (0 or 1 for x or y) and scales the analog input range to a range - from 0 to -*/ - -int readAxis(int thisAxis) { - // read the analog input: - int reading = analogRead(thisAxis); - - // map the reading from the analog input range to the output range: - reading = map(reading, 0, 1023, 0, range); - - // if the output reading is outside from the rest position threshold, use it: - int distance = reading - center; - - if (abs(distance) < threshold) { - distance = 0; - } - - // return the distance for this axis: - return distance; -} diff --git a/build/shared/examples/09.USB/Mouse/JoystickMouseControl/JoystickMouseControl.txt b/build/shared/examples/09.USB/Mouse/JoystickMouseControl/JoystickMouseControl.txt deleted file mode 100644 index 55fa2bc4c04..00000000000 --- a/build/shared/examples/09.USB/Mouse/JoystickMouseControl/JoystickMouseControl.txt +++ /dev/null @@ -1 +0,0 @@ -Controls a computer's cursor movement with a Joystick when a button is pressed. \ No newline at end of file diff --git a/build/shared/examples/09.USB/Mouse/JoystickMouseControl/layout.png b/build/shared/examples/09.USB/Mouse/JoystickMouseControl/layout.png deleted file mode 100644 index 95a4e95299e..00000000000 Binary files a/build/shared/examples/09.USB/Mouse/JoystickMouseControl/layout.png and /dev/null differ diff --git a/build/shared/examples/09.USB/Mouse/JoystickMouseControl/schematic.png b/build/shared/examples/09.USB/Mouse/JoystickMouseControl/schematic.png deleted file mode 100644 index ae4ecf1229c..00000000000 Binary files a/build/shared/examples/09.USB/Mouse/JoystickMouseControl/schematic.png and /dev/null differ diff --git a/build/shared/examples/10.StarterKit_BasicKit/p02_SpaceshipInterface/p02_SpaceshipInterface.ino b/build/shared/examples/10.StarterKit_BasicKit/p02_SpaceshipInterface/p02_SpaceshipInterface.ino deleted file mode 100644 index 41283dad1f3..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p02_SpaceshipInterface/p02_SpaceshipInterface.ino +++ /dev/null @@ -1,63 +0,0 @@ -/* - Arduino Starter Kit example - Project 2 - Spaceship Interface - - This sketch is written to accompany Project 2 in the Arduino Starter Kit - - Parts required: - - one green LED - - two red LEDs - - pushbutton - - 10 kilohm resistor - - three 220 ohm resistors - - created 13 Sep 2012 - by Scott Fitzgerald - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - -// Create a global variable to hold the state of the switch. This variable is -// persistent throughout the program. Whenever you refer to switchState, you’re -// talking about the number it holds -int switchstate = 0; - -void setup() { - // declare the LED pins as outputs - pinMode(3, OUTPUT); - pinMode(4, OUTPUT); - pinMode(5, OUTPUT); - - // declare the switch pin as an input - pinMode(2, INPUT); -} - -void loop() { - - // read the value of the switch - // digitalRead() checks to see if there is voltage on the pin or not - switchstate = digitalRead(2); - - // if the button is not pressed turn on the green LED and off the red LEDs - if (switchstate == LOW) { - digitalWrite(3, HIGH); // turn the green LED on pin 3 on - digitalWrite(4, LOW); // turn the red LED on pin 4 off - digitalWrite(5, LOW); // turn the red LED on pin 5 off - } - // this else is part of the above if() statement. - // if the switch is not LOW (the button is pressed) turn off the green LED and - // blink alternatively the red LEDs - else { - digitalWrite(3, LOW); // turn the green LED on pin 3 off - digitalWrite(4, LOW); // turn the red LED on pin 4 off - digitalWrite(5, HIGH); // turn the red LED on pin 5 on - // wait for a quarter second before changing the light - delay(250); - digitalWrite(4, HIGH); // turn the red LED on pin 4 on - digitalWrite(5, LOW); // turn the red LED on pin 5 off - // wait for a quarter second before changing the light - delay(250); - } -} diff --git a/build/shared/examples/10.StarterKit_BasicKit/p03_LoveOMeter/p03_LoveOMeter.ino b/build/shared/examples/10.StarterKit_BasicKit/p03_LoveOMeter/p03_LoveOMeter.ino deleted file mode 100644 index 2a72f46d7f3..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p03_LoveOMeter/p03_LoveOMeter.ino +++ /dev/null @@ -1,81 +0,0 @@ -/* - Arduino Starter Kit example - Project 3 - Love-O-Meter - - This sketch is written to accompany Project 3 in the Arduino Starter Kit - - Parts required: - - one TMP36 temperature sensor - - three red LEDs - - three 220 ohm resistors - - created 13 Sep 2012 - by Scott Fitzgerald - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - -// named constant for the pin the sensor is connected to -const int sensorPin = A0; -// room temperature in Celsius -const float baselineTemp = 20.0; - -void setup() { - // open a serial connection to display values - Serial.begin(9600); - // set the LED pins as outputs - // the for() loop saves some extra coding - for (int pinNumber = 2; pinNumber < 5; pinNumber++) { - pinMode(pinNumber, OUTPUT); - digitalWrite(pinNumber, LOW); - } -} - -void loop() { - // read the value on AnalogIn pin 0 and store it in a variable - int sensorVal = analogRead(sensorPin); - - // send the 10-bit sensor value out the serial port - Serial.print("sensor Value: "); - Serial.print(sensorVal); - - // convert the ADC reading to voltage - float voltage = (sensorVal / 1024.0) * 5.0; - - // Send the voltage level out the Serial port - Serial.print(", Volts: "); - Serial.print(voltage); - - // convert the voltage to temperature in degrees C - // the sensor changes 10 mV per degree - // the datasheet says there's a 500 mV offset - // ((voltage - 500 mV) times 100) - Serial.print(", degrees C: "); - float temperature = (voltage - .5) * 100; - Serial.println(temperature); - - // if the current temperature is lower than the baseline turn off all LEDs - if (temperature < baselineTemp + 2) { - digitalWrite(2, LOW); - digitalWrite(3, LOW); - digitalWrite(4, LOW); - } // if the temperature rises 2-4 degrees, turn an LED on - else if (temperature >= baselineTemp + 2 && temperature < baselineTemp + 4) { - digitalWrite(2, HIGH); - digitalWrite(3, LOW); - digitalWrite(4, LOW); - } // if the temperature rises 4-6 degrees, turn a second LED on - else if (temperature >= baselineTemp + 4 && temperature < baselineTemp + 6) { - digitalWrite(2, HIGH); - digitalWrite(3, HIGH); - digitalWrite(4, LOW); - } // if the temperature rises more than 6 degrees, turn all LEDs on - else if (temperature >= baselineTemp + 6) { - digitalWrite(2, HIGH); - digitalWrite(3, HIGH); - digitalWrite(4, HIGH); - } - delay(1); -} diff --git a/build/shared/examples/10.StarterKit_BasicKit/p04_ColorMixingLamp/p04_ColorMixingLamp.ino b/build/shared/examples/10.StarterKit_BasicKit/p04_ColorMixingLamp/p04_ColorMixingLamp.ino deleted file mode 100644 index 1e15f1cb377..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p04_ColorMixingLamp/p04_ColorMixingLamp.ino +++ /dev/null @@ -1,96 +0,0 @@ -/* - Arduino Starter Kit example - Project 4 - Color Mixing Lamp - - This sketch is written to accompany Project 3 in the Arduino Starter Kit - - Parts required: - - one RGB LED - - three 10 kilohm resistors - - three 220 ohm resistors - - three photoresistors - - red green and blue colored gels - - created 13 Sep 2012 - modified 14 Nov 2012 - by Scott Fitzgerald - Thanks to Federico Vanzati for improvements - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - -const int greenLEDPin = 9; // LED connected to digital pin 9 -const int redLEDPin = 10; // LED connected to digital pin 10 -const int blueLEDPin = 11; // LED connected to digital pin 11 - -const int redSensorPin = A0; // pin with the photoresistor with the red gel -const int greenSensorPin = A1; // pin with the photoresistor with the green gel -const int blueSensorPin = A2; // pin with the photoresistor with the blue gel - -int redValue = 0; // value to write to the red LED -int greenValue = 0; // value to write to the green LED -int blueValue = 0; // value to write to the blue LED - -int redSensorValue = 0; // variable to hold the value from the red sensor -int greenSensorValue = 0; // variable to hold the value from the green sensor -int blueSensorValue = 0; // variable to hold the value from the blue sensor - -void setup() { - // initialize serial communications at 9600 bps: - Serial.begin(9600); - - // set the digital pins as outputs - pinMode(greenLEDPin, OUTPUT); - pinMode(redLEDPin, OUTPUT); - pinMode(blueLEDPin, OUTPUT); -} - -void loop() { - // Read the sensors first: - - // read the value from the red-filtered photoresistor: - redSensorValue = analogRead(redSensorPin); - // give the ADC a moment to settle - delay(5); - // read the value from the green-filtered photoresistor: - greenSensorValue = analogRead(greenSensorPin); - // give the ADC a moment to settle - delay(5); - // read the value from the blue-filtered photoresistor: - blueSensorValue = analogRead(blueSensorPin); - - // print out the values to the Serial Monitor - Serial.print("raw sensor Values \t red: "); - Serial.print(redSensorValue); - Serial.print("\t green: "); - Serial.print(greenSensorValue); - Serial.print("\t Blue: "); - Serial.println(blueSensorValue); - - /* - In order to use the values from the sensor for the LED, you need to do some - math. The ADC provides a 10-bit number, but analogWrite() uses 8 bits. - You'll want to divide your sensor readings by 4 to keep them in range - of the output. - */ - redValue = redSensorValue / 4; - greenValue = greenSensorValue / 4; - blueValue = blueSensorValue / 4; - - // print out the mapped values - Serial.print("Mapped sensor Values \t red: "); - Serial.print(redValue); - Serial.print("\t green: "); - Serial.print(greenValue); - Serial.print("\t Blue: "); - Serial.println(blueValue); - - /* - Now that you have a usable value, it's time to PWM the LED. - */ - analogWrite(redLEDPin, redValue); - analogWrite(greenLEDPin, greenValue); - analogWrite(blueLEDPin, blueValue); -} diff --git a/build/shared/examples/10.StarterKit_BasicKit/p05_ServoMoodIndicator/p05_ServoMoodIndicator.ino b/build/shared/examples/10.StarterKit_BasicKit/p05_ServoMoodIndicator/p05_ServoMoodIndicator.ino deleted file mode 100644 index b56e860ef99..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p05_ServoMoodIndicator/p05_ServoMoodIndicator.ino +++ /dev/null @@ -1,52 +0,0 @@ -/* - Arduino Starter Kit example - Project 5 - Servo Mood Indicator - - This sketch is written to accompany Project 5 in the Arduino Starter Kit - - Parts required: - - servo motor - - 10 kilohm potentiometer - - two 100 uF electrolytic capacitors - - created 13 Sep 2012 - by Scott Fitzgerald - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - -// include the Servo library -#include - -Servo myServo; // create a servo object - -int const potPin = A0; // analog pin used to connect the potentiometer -int potVal; // variable to read the value from the analog pin -int angle; // variable to hold the angle for the servo motor - -void setup() { - myServo.attach(9); // attaches the servo on pin 9 to the servo object - Serial.begin(9600); // open a serial connection to your computer -} - -void loop() { - potVal = analogRead(potPin); // read the value of the potentiometer - // print out the value to the Serial Monitor - Serial.print("potVal: "); - Serial.print(potVal); - - // scale the numbers from the pot - angle = map(potVal, 0, 1023, 0, 179); - - // print out the angle for the servo motor - Serial.print(", angle: "); - Serial.println(angle); - - // set the servo position - myServo.write(angle); - - // wait for the servo to get there - delay(15); -} diff --git a/build/shared/examples/10.StarterKit_BasicKit/p06_LightTheremin/p06_LightTheremin.ino b/build/shared/examples/10.StarterKit_BasicKit/p06_LightTheremin/p06_LightTheremin.ino deleted file mode 100644 index 6f6475c24f7..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p06_LightTheremin/p06_LightTheremin.ino +++ /dev/null @@ -1,62 +0,0 @@ -/* - Arduino Starter Kit example - Project 6 - Light Theremin - - This sketch is written to accompany Project 6 in the Arduino Starter Kit - - Parts required: - - photoresistor - - 10 kilohm resistor - - piezo - - created 13 Sep 2012 - by Scott Fitzgerald - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - -// variable to hold sensor value -int sensorValue; -// variable to calibrate low value -int sensorLow = 1023; -// variable to calibrate high value -int sensorHigh = 0; -// LED pin -const int ledPin = 13; - -void setup() { - // Make the LED pin an output and turn it on - pinMode(ledPin, OUTPUT); - digitalWrite(ledPin, HIGH); - - // calibrate for the first five seconds after program runs - while (millis() < 5000) { - // record the maximum sensor value - sensorValue = analogRead(A0); - if (sensorValue > sensorHigh) { - sensorHigh = sensorValue; - } - // record the minimum sensor value - if (sensorValue < sensorLow) { - sensorLow = sensorValue; - } - } - // turn the LED off, signaling the end of the calibration period - digitalWrite(ledPin, LOW); -} - -void loop() { - //read the input from A0 and store it in a variable - sensorValue = analogRead(A0); - - // map the sensor values to a wide range of pitches - int pitch = map(sensorValue, sensorLow, sensorHigh, 50, 4000); - - // play the tone for 20 ms on pin 8 - tone(8, pitch, 20); - - // wait for a moment - delay(10); -} diff --git a/build/shared/examples/10.StarterKit_BasicKit/p07_Keyboard/p07_Keyboard.ino b/build/shared/examples/10.StarterKit_BasicKit/p07_Keyboard/p07_Keyboard.ino deleted file mode 100644 index ad39bd19892..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p07_Keyboard/p07_Keyboard.ino +++ /dev/null @@ -1,54 +0,0 @@ -/* - Arduino Starter Kit example - Project 7 - Keyboard - - This sketch is written to accompany Project 7 in the Arduino Starter Kit - - Parts required: - - two 10 kilohm resistors - - 1 megohm resistor - - 220 ohm resistor - - four pushbuttons - - piezo - - created 13 Sep 2012 - by Scott Fitzgerald - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - -// create an array of notes -// the numbers below correspond to the frequencies of middle C, D, E, and F -int notes[] = {262, 294, 330, 349}; - -void setup() { - //start serial communication - Serial.begin(9600); -} - -void loop() { - // create a local variable to hold the input on pin A0 - int keyVal = analogRead(A0); - // send the value from A0 to the Serial Monitor - Serial.println(keyVal); - - // play the note corresponding to each value on A0 - if (keyVal == 1023) { - // play the first frequency in the array on pin 8 - tone(8, notes[0]); - } else if (keyVal >= 990 && keyVal <= 1010) { - // play the second frequency in the array on pin 8 - tone(8, notes[1]); - } else if (keyVal >= 505 && keyVal <= 515) { - // play the third frequency in the array on pin 8 - tone(8, notes[2]); - } else if (keyVal >= 5 && keyVal <= 10) { - // play the fourth frequency in the array on pin 8 - tone(8, notes[3]); - } else { - // if the value is out of range, play no tone - noTone(8); - } -} diff --git a/build/shared/examples/10.StarterKit_BasicKit/p08_DigitalHourglass/p08_DigitalHourglass.ino b/build/shared/examples/10.StarterKit_BasicKit/p08_DigitalHourglass/p08_DigitalHourglass.ino deleted file mode 100644 index 801f8cd4110..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p08_DigitalHourglass/p08_DigitalHourglass.ino +++ /dev/null @@ -1,79 +0,0 @@ -/* - Arduino Starter Kit example - Project 8 - Digital Hourglass - - This sketch is written to accompany Project 8 in the Arduino Starter Kit - - Parts required: - - 10 kilohm resistor - - six 220 ohm resistors - - six LEDs - - tilt switch - - created 13 Sep 2012 - by Scott Fitzgerald - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - -// named constant for the switch pin -const int switchPin = 8; - -unsigned long previousTime = 0; // store the last time an LED was updated -int switchState = 0; // the current switch state -int prevSwitchState = 0; // the previous switch state -int led = 2; // a variable to refer to the LEDs - -// 600000 = 10 minutes in milliseconds -long interval = 600000; // interval at which to light the next LED - -void setup() { - // set the LED pins as outputs - for (int x = 2; x < 8; x++) { - pinMode(x, OUTPUT); - } - // set the tilt switch pin as input - pinMode(switchPin, INPUT); -} - -void loop() { - // store the time since the Arduino started running in a variable - unsigned long currentTime = millis(); - - // compare the current time to the previous time an LED turned on - // if it is greater than your interval, run the if statement - if (currentTime - previousTime > interval) { - // save the current time as the last time you changed an LED - previousTime = currentTime; - // Turn the LED on - digitalWrite(led, HIGH); - // increment the led variable - // in 10 minutes the next LED will light up - led++; - - if (led == 7) { - // the hour is up - } - } - - // read the switch value - switchState = digitalRead(switchPin); - - // if the switch has changed - if (switchState != prevSwitchState) { - // turn all the LEDs low - for (int x = 2; x < 8; x++) { - digitalWrite(x, LOW); - } - - // reset the LED variable to the first one - led = 2; - - //reset the timer - previousTime = currentTime; - } - // set the previous switch state to the current state - prevSwitchState = switchState; -} diff --git a/build/shared/examples/10.StarterKit_BasicKit/p09_MotorizedPinwheel/p09_MotorizedPinwheel.ino b/build/shared/examples/10.StarterKit_BasicKit/p09_MotorizedPinwheel/p09_MotorizedPinwheel.ino deleted file mode 100644 index 23e19b1bc8f..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p09_MotorizedPinwheel/p09_MotorizedPinwheel.ino +++ /dev/null @@ -1,48 +0,0 @@ -/* - Arduino Starter Kit example - Project 9 - Motorized Pinwheel - - This sketch is written to accompany Project 9 in the Arduino Starter Kit - - Parts required: - - 10 kilohm resistor - - pushbutton - - motor - - 9V battery - - IRF520 MOSFET - - 1N4007 diode - - created 13 Sep 2012 - by Scott Fitzgerald - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - -// named constants for the switch and motor pins -const int switchPin = 2; // the number of the switch pin -const int motorPin = 9; // the number of the motor pin - -int switchState = 0; // variable for reading the switch's status - -void setup() { - // initialize the motor pin as an output: - pinMode(motorPin, OUTPUT); - // initialize the switch pin as an input: - pinMode(switchPin, INPUT); -} - -void loop() { - // read the state of the switch value: - switchState = digitalRead(switchPin); - - // check if the switch is pressed. - if (switchState == HIGH) { - // turn motor on: - digitalWrite(motorPin, HIGH); - } else { - // turn motor off: - digitalWrite(motorPin, LOW); - } -} diff --git a/build/shared/examples/10.StarterKit_BasicKit/p10_Zoetrope/p10_Zoetrope.ino b/build/shared/examples/10.StarterKit_BasicKit/p10_Zoetrope/p10_Zoetrope.ino deleted file mode 100644 index 4d675ed6609..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p10_Zoetrope/p10_Zoetrope.ino +++ /dev/null @@ -1,103 +0,0 @@ -/* - Arduino Starter Kit example - Project 10 - Zoetrope - - This sketch is written to accompany Project 10 in the Arduino Starter Kit - - Parts required: - - two 10 kilohm resistors - - two momentary pushbuttons - - one 10 kilohm potentiometer - - motor - - 9V battery - - H-Bridge - - created 13 Sep 2012 - by Scott Fitzgerald - Thanks to Federico Vanzati for improvements - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - -const int controlPin1 = 2; // connected to pin 7 on the H-bridge -const int controlPin2 = 3; // connected to pin 2 on the H-bridge -const int enablePin = 9; // connected to pin 1 on the H-bridge -const int directionSwitchPin = 4; // connected to the switch for direction -const int onOffSwitchStateSwitchPin = 5; // connected to the switch for turning the motor on and off -const int potPin = A0; // connected to the potentiometer's output - -// create some variables to hold values from your inputs -int onOffSwitchState = 0; // current state of the on/off switch -int previousOnOffSwitchState = 0; // previous position of the on/off switch -int directionSwitchState = 0; // current state of the direction switch -int previousDirectionSwitchState = 0; // previous state of the direction switch - -int motorEnabled = 0; // Turns the motor on/off -int motorSpeed = 0; // speed of the motor -int motorDirection = 1; // current direction of the motor - -void setup() { - // initialize the inputs and outputs - pinMode(directionSwitchPin, INPUT); - pinMode(onOffSwitchStateSwitchPin, INPUT); - pinMode(controlPin1, OUTPUT); - pinMode(controlPin2, OUTPUT); - pinMode(enablePin, OUTPUT); - - // pull the enable pin LOW to start - digitalWrite(enablePin, LOW); -} - -void loop() { - // read the value of the on/off switch - onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin); - delay(1); - - // read the value of the direction switch - directionSwitchState = digitalRead(directionSwitchPin); - - // read the value of the pot and divide by 4 to get a value that can be - // used for PWM - motorSpeed = analogRead(potPin) / 4; - - // if the on/off button changed state since the last loop() - if (onOffSwitchState != previousOnOffSwitchState) { - // change the value of motorEnabled if pressed - if (onOffSwitchState == HIGH) { - motorEnabled = !motorEnabled; - } - } - - // if the direction button changed state since the last loop() - if (directionSwitchState != previousDirectionSwitchState) { - // change the value of motorDirection if pressed - if (directionSwitchState == HIGH) { - motorDirection = !motorDirection; - } - } - - // change the direction the motor spins by talking to the control pins - // on the H-Bridge - if (motorDirection == 1) { - digitalWrite(controlPin1, HIGH); - digitalWrite(controlPin2, LOW); - } else { - digitalWrite(controlPin1, LOW); - digitalWrite(controlPin2, HIGH); - } - - // if the motor is supposed to be on - if (motorEnabled == 1) { - // PWM the enable pin to vary the speed - analogWrite(enablePin, motorSpeed); - } else { // if the motor is not supposed to be on - //turn the motor off - analogWrite(enablePin, 0); - } - // save the current on/off switch state as the previous - previousDirectionSwitchState = directionSwitchState; - // save the current switch state as the previous - previousOnOffSwitchState = onOffSwitchState; -} diff --git a/build/shared/examples/10.StarterKit_BasicKit/p11_CrystalBall/p11_CrystalBall.ino b/build/shared/examples/10.StarterKit_BasicKit/p11_CrystalBall/p11_CrystalBall.ino deleted file mode 100644 index 63aefc4c407..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p11_CrystalBall/p11_CrystalBall.ino +++ /dev/null @@ -1,114 +0,0 @@ -/* - Arduino Starter Kit example - Project 11 - Crystal Ball - - This sketch is written to accompany Project 11 in the Arduino Starter Kit - - Parts required: - - 220 ohm resistor - - 10 kilohm resistor - - 10 kilohm potentiometer - - 16x2 LCD screen - - tilt switch - - created 13 Sep 2012 - by Scott Fitzgerald - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - -// include the library code: -#include - -// initialize the library with the numbers of the interface pins -LiquidCrystal lcd(12, 11, 5, 4, 3, 2); - -// set up a constant for the tilt switch pin -const int switchPin = 6; - -// variable to hold the value of the switch pin -int switchState = 0; - -// variable to hold previous value of the switch pin -int prevSwitchState = 0; - -// a variable to choose which reply from the crystal ball -int reply; - -void setup() { - // set up the number of columns and rows on the LCD - lcd.begin(16, 2); - - // set up the switch pin as an input - pinMode(switchPin, INPUT); - - // Print a message to the LCD. - lcd.print("Ask the"); - // set the cursor to column 0, line 1 - // line 1 is the second row, since counting begins with 0 - lcd.setCursor(0, 1); - // print to the second line - lcd.print("Crystal Ball!"); -} - -void loop() { - // check the status of the switch - switchState = digitalRead(switchPin); - - // compare the switchState to its previous state - if (switchState != prevSwitchState) { - // if the state has changed from HIGH to LOW you know that the ball has been - // tilted from one direction to the other - if (switchState == LOW) { - // randomly chose a reply - reply = random(8); - // clean up the screen before printing a new reply - lcd.clear(); - // set the cursor to column 0, line 0 - lcd.setCursor(0, 0); - // print some text - lcd.print("the ball says:"); - // move the cursor to the second line - lcd.setCursor(0, 1); - - // choose a saying to print based on the value in reply - switch (reply) { - case 0: - lcd.print("Yes"); - break; - - case 1: - lcd.print("Most likely"); - break; - - case 2: - lcd.print("Certainly"); - break; - - case 3: - lcd.print("Outlook good"); - break; - - case 4: - lcd.print("Unsure"); - break; - - case 5: - lcd.print("Ask again"); - break; - - case 6: - lcd.print("Doubtful"); - break; - - case 7: - lcd.print("No"); - break; - } - } - } - // save the current switch state as the last state - prevSwitchState = switchState; -} diff --git a/build/shared/examples/10.StarterKit_BasicKit/p12_KnockLock/p12_KnockLock.ino b/build/shared/examples/10.StarterKit_BasicKit/p12_KnockLock/p12_KnockLock.ino deleted file mode 100644 index 9486725a286..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p12_KnockLock/p12_KnockLock.ino +++ /dev/null @@ -1,171 +0,0 @@ -/* - Arduino Starter Kit example - Project 12 - Knock Lock - - This sketch is written to accompany Project 12 in the Arduino Starter Kit - - Parts required: - - 1 megohm resistor - - 10 kilohm resistor - - three 220 ohm resistors - - piezo - - servo motor - - push button - - one red LED - - one yellow LED - - one green LED - - 100 uF capacitor - - created 18 Sep 2012 - by Scott Fitzgerald - Thanks to Federico Vanzati for improvements - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - -// import the library -#include -// create an instance of the Servo library -Servo myServo; - -const int piezo = A0; // pin the piezo is attached to -const int switchPin = 2; // pin the switch is attached to -const int yellowLed = 3; // pin the yellow LED is attached to -const int greenLed = 4; // pin the green LED is attached to -const int redLed = 5; // pin the red LED is attached to - -// variable for the piezo value -int knockVal; -// variable for the switch value -int switchVal; - -// variables for the high and low limits of the knock value -const int quietKnock = 10; -const int loudKnock = 100; - -// variable to indicate if locked or not -boolean locked = false; -// how many valid knocks you've received -int numberOfKnocks = 0; - -void setup() { - // attach the servo to pin 9 - myServo.attach(9); - - // make the LED pins outputs - pinMode(yellowLed, OUTPUT); - pinMode(redLed, OUTPUT); - pinMode(greenLed, OUTPUT); - - // set the switch pin as an input - pinMode(switchPin, INPUT); - - // start serial communication for debugging - Serial.begin(9600); - - // turn the green LED on - digitalWrite(greenLed, HIGH); - - // move the servo to the unlocked position - myServo.write(0); - - // print status to the Serial Monitor - Serial.println("the box is unlocked!"); -} - -void loop() { - - // if the box is unlocked - if (locked == false) { - - // read the value of the switch pin - switchVal = digitalRead(switchPin); - - // if the button is pressed, lock the box - if (switchVal == HIGH) { - // set the locked variable to "true" - locked = true; - - // change the status LEDs - digitalWrite(greenLed, LOW); - digitalWrite(redLed, HIGH); - - // move the servo to the locked position - myServo.write(90); - - // print out status - Serial.println("the box is locked!"); - - // wait for the servo to move into position - delay(1000); - } - } - - // if the box is locked - if (locked == true) { - - // check the value of the piezo - knockVal = analogRead(piezo); - - // if there are not enough valid knocks - if (numberOfKnocks < 3 && knockVal > 0) { - - // check to see if the knock is in range - if (checkForKnock(knockVal) == true) { - - // increment the number of valid knocks - numberOfKnocks++; - } - - // print status of knocks - Serial.print(3 - numberOfKnocks); - Serial.println(" more knocks to go"); - } - - // if there are three knocks - if (numberOfKnocks >= 3) { - // unlock the box - locked = false; - - // move the servo to the unlocked position - myServo.write(0); - - // wait for it to move - delay(20); - - // change status LEDs - digitalWrite(greenLed, HIGH); - digitalWrite(redLed, LOW); - Serial.println("the box is unlocked!"); - - numberOfKnocks = 0; - } - } -} - -// this function checks to see if a detected knock is within max and min range -boolean checkForKnock(int value) { - // if the value of the knock is greater than the minimum, and larger - // than the maximum - if (value > quietKnock && value < loudKnock) { - // turn the status LED on - digitalWrite(yellowLed, HIGH); - delay(50); - digitalWrite(yellowLed, LOW); - // print out the status - Serial.print("Valid knock of value "); - Serial.println(value); - // return true - return true; - } - // if the knock is not within range - else { - // print status - Serial.print("Bad knock value "); - Serial.println(value); - // return false - return false; - } -} diff --git a/build/shared/examples/10.StarterKit_BasicKit/p13_TouchSensorLamp/p13_TouchSensorLamp.ino b/build/shared/examples/10.StarterKit_BasicKit/p13_TouchSensorLamp/p13_TouchSensorLamp.ino deleted file mode 100644 index 8f7a28a5b9b..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p13_TouchSensorLamp/p13_TouchSensorLamp.ino +++ /dev/null @@ -1,66 +0,0 @@ -/* - Arduino Starter Kit example - Project 13 - Touch Sensor Lamp - - This sketch is written to accompany Project 13 in the Arduino Starter Kit - - Parts required: - - 1 megohm resistor - - metal foil or copper mesh - - 220 ohm resistor - - LED - - Software required : - - CapacitiveSensor library by Paul Badger - http://www.arduino.cc/playground/Main/CapacitiveSensor - - created 18 Sep 2012 - by Scott Fitzgerald - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - -// import the library (must be located in the Arduino/libraries directory) -#include - -// create an instance of the library -// pin 4 sends electrical energy -// pin 2 senses senses a change -CapacitiveSensor capSensor = CapacitiveSensor(4, 2); - -// threshold for turning the lamp on -int threshold = 1000; - -// pin the LED is connected to -const int ledPin = 12; - - -void setup() { - // open a serial connection - Serial.begin(9600); - // set the LED pin as an output - pinMode(ledPin, OUTPUT); -} - -void loop() { - // store the value reported by the sensor in a variable - long sensorValue = capSensor.capacitiveSensor(30); - - // print out the sensor value - Serial.println(sensorValue); - - // if the value is greater than the threshold - if (sensorValue > threshold) { - // turn the LED on - digitalWrite(ledPin, HIGH); - } - // if it's lower than the threshold - else { - // turn the LED off - digitalWrite(ledPin, LOW); - } - - delay(10); -} diff --git a/build/shared/examples/10.StarterKit_BasicKit/p14_TweakTheArduinoLogo/p14_TweakTheArduinoLogo.ino b/build/shared/examples/10.StarterKit_BasicKit/p14_TweakTheArduinoLogo/p14_TweakTheArduinoLogo.ino deleted file mode 100644 index e9279e2d61a..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p14_TweakTheArduinoLogo/p14_TweakTheArduinoLogo.ino +++ /dev/null @@ -1,101 +0,0 @@ -/* - Arduino Starter Kit example - Project 14 - Tweak the Arduino Logo - - This sketch is written to accompany Project 14 in the Arduino Starter Kit - - Parts required: - - 10 kilohm potentiometer - - Software required: - - Processing (3.0 or newer) http://processing.org - - Active Internet connection - - created 18 Sep 2012 - by Scott Fitzgerald - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - - -void setup() { - // initialize serial communication - Serial.begin(9600); -} - -void loop() { - // read the value of A0, divide by 4 and send it as a byte over the - // serial connection - Serial.write(analogRead(A0) / 4); - delay(1); -} - -/* Processing code for this example - - // Tweak the Arduino Logo - - // by Scott Fitzgerald - // This example code is in the public domain. - - // import the serial library - import processing.serial.*; - - // create an instance of the serial library - Serial myPort; - - // create an instance of PImage - PImage logo; - - // a variable to hold the background color - int bgcolor = 0; - - void setup() { - size(1, 1); - surface.setResizable(true); - // set the color mode to Hue/Saturation/Brightness - colorMode(HSB, 255); - - // load the Arduino logo into the PImage instance - logo = loadImage("http://www.arduino.cc/arduino_logo.png"); - - // make the window the same size as the image - surface.setSize(logo.width, logo.height); - - // print a list of available serial ports to the Processing status window - println("Available serial ports:"); - println(Serial.list()); - - // Tell the serial object the information it needs to communicate with the - // Arduino. Change Serial.list()[0] to the correct port corresponding to - // your Arduino board. The last parameter (e.g. 9600) is the speed of the - // communication. It has to correspond to the value passed to - // Serial.begin() in your Arduino sketch. - myPort = new Serial(this, Serial.list()[0], 9600); - - // If you know the name of the port used by the Arduino board, you can - // specify it directly like this. - // port = new Serial(this, "COM1", 9600); - } - - void draw() { - - // if there is information in the serial port - if ( myPort.available() > 0) { - // read the value and store it in a variable - bgcolor = myPort.read(); - - // print the value to the status window - println(bgcolor); - } - - // Draw the background. the variable bgcolor contains the Hue, determined by - // the value from the serial port - background(bgcolor, 255, 255); - - // draw the Arduino logo - image(logo, 0, 0); - } - -*/ diff --git a/build/shared/examples/10.StarterKit_BasicKit/p15_HackingButtons/p15_HackingButtons.ino b/build/shared/examples/10.StarterKit_BasicKit/p15_HackingButtons/p15_HackingButtons.ino deleted file mode 100644 index d5d530a2bd2..00000000000 --- a/build/shared/examples/10.StarterKit_BasicKit/p15_HackingButtons/p15_HackingButtons.ino +++ /dev/null @@ -1,34 +0,0 @@ -/* - Arduino Starter Kit example - Project 15 - Hacking Buttons - - This sketch is written to accompany Project 15 in the Arduino Starter Kit - - Parts required: - - battery powered component - - 220 ohm resistor - - 4N35 optocoupler - - created 18 Sep 2012 - by Scott Fitzgerald - - http://www.arduino.cc/starterKit - - This example code is part of the public domain. -*/ - -const int optoPin = 2; // the pin the optocoupler is connected to - -void setup() { - // make the pin with the optocoupler an output - pinMode(optoPin, OUTPUT); -} - -void loop() { - digitalWrite(optoPin, HIGH); // pull pin 2 HIGH, activating the optocoupler - - delay(15); // give the optocoupler a moment to activate - - digitalWrite(optoPin, LOW); // pull pin 2 low until you're ready to activate again - delay(21000); // wait for 21 seconds -} diff --git a/build/shared/examples/11.ArduinoISP/ArduinoISP/ArduinoISP.ino b/build/shared/examples/11.ArduinoISP/ArduinoISP/ArduinoISP.ino deleted file mode 100644 index 8caa58eabe1..00000000000 --- a/build/shared/examples/11.ArduinoISP/ArduinoISP/ArduinoISP.ino +++ /dev/null @@ -1,719 +0,0 @@ -// ArduinoISP -// Copyright (c) 2008-2011 Randall Bohn -// If you require a license, see -// http://www.opensource.org/licenses/bsd-license.php -// -// This sketch turns the Arduino into a AVRISP using the following Arduino pins: -// -// Pin 10 is used to reset the target microcontroller. -// -// By default, the hardware SPI pins MISO, MOSI and SCK are used to communicate -// with the target. On all Arduinos, these pins can be found -// on the ICSP/SPI header: -// -// MISO °. . 5V (!) Avoid this pin on Due, Zero... -// SCK . . MOSI -// . . GND -// -// On some Arduinos (Uno,...), pins MOSI, MISO and SCK are the same pins as -// digital pin 11, 12 and 13, respectively. That is why many tutorials instruct -// you to hook up the target to these pins. If you find this wiring more -// practical, have a define USE_OLD_STYLE_WIRING. This will work even when not -// using an Uno. (On an Uno this is not needed). -// -// Alternatively you can use any other digital pin by configuring -// software ('BitBanged') SPI and having appropriate defines for PIN_MOSI, -// PIN_MISO and PIN_SCK. -// -// IMPORTANT: When using an Arduino that is not 5V tolerant (Due, Zero, ...) as -// the programmer, make sure to not expose any of the programmer's pins to 5V. -// A simple way to accomplish this is to power the complete system (programmer -// and target) at 3V3. -// -// Put an LED (with resistor) on the following pins: -// 9: Heartbeat - shows the programmer is running -// 8: Error - Lights up if something goes wrong (use red if that makes sense) -// 7: Programming - In communication with the slave -// - -#include "Arduino.h" -#undef SERIAL - - -#define PROG_FLICKER true - -// Configure SPI clock (in Hz). -// E.g. for an ATtiny @ 128 kHz: the datasheet states that both the high and low -// SPI clock pulse must be > 2 CPU cycles, so take 3 cycles i.e. divide target -// f_cpu by 6: -// #define SPI_CLOCK (128000/6) -// -// A clock slow enough for an ATtiny85 @ 1 MHz, is a reasonable default: - -#define SPI_CLOCK (1000000/6) - - -// Select hardware or software SPI, depending on SPI clock. -// Currently only for AVR, for other architectures (Due, Zero,...), hardware SPI -// is probably too fast anyway. - -#if defined(ARDUINO_ARCH_AVR) - -#if SPI_CLOCK > (F_CPU / 128) -#define USE_HARDWARE_SPI -#endif - -#endif - -// Configure which pins to use: - -// The standard pin configuration. -#ifndef ARDUINO_HOODLOADER2 - -#define RESET 10 // Use pin 10 to reset the target rather than SS -#define LED_HB 9 -#define LED_ERR 8 -#define LED_PMODE 7 - -// Uncomment following line to use the old Uno style wiring -// (using pin 11, 12 and 13 instead of the SPI header) on Leonardo, Due... - -// #define USE_OLD_STYLE_WIRING - -#ifdef USE_OLD_STYLE_WIRING - -#define PIN_MOSI 11 -#define PIN_MISO 12 -#define PIN_SCK 13 - -#endif - -// HOODLOADER2 means running sketches on the ATmega16U2 serial converter chips -// on Uno or Mega boards. We must use pins that are broken out: -#else - -#define RESET 4 -#define LED_HB 7 -#define LED_ERR 6 -#define LED_PMODE 5 - -#endif - -// By default, use hardware SPI pins: -#ifndef PIN_MOSI -#define PIN_MOSI MOSI -#endif - -#ifndef PIN_MISO -#define PIN_MISO MISO -#endif - -#ifndef PIN_SCK -#define PIN_SCK SCK -#endif - -// Force bitbanged SPI if not using the hardware SPI pins: -#if (PIN_MISO != MISO) || (PIN_MOSI != MOSI) || (PIN_SCK != SCK) -#undef USE_HARDWARE_SPI -#endif - - -// Configure the serial port to use. -// -// Prefer the USB virtual serial port (aka. native USB port), if the Arduino has one: -// - it does not autoreset (except for the magic baud rate of 1200). -// - it is more reliable because of USB handshaking. -// -// Leonardo and similar have an USB virtual serial port: 'Serial'. -// Due and Zero have an USB virtual serial port: 'SerialUSB'. -// -// On the Due and Zero, 'Serial' can be used too, provided you disable autoreset. -// To use 'Serial': #define SERIAL Serial - -#ifdef SERIAL_PORT_USBVIRTUAL -#define SERIAL SERIAL_PORT_USBVIRTUAL -#else -#define SERIAL Serial -#endif - - -// Configure the baud rate: - -#define BAUDRATE 19200 -// #define BAUDRATE 115200 -// #define BAUDRATE 1000000 - - -#define HWVER 2 -#define SWMAJ 1 -#define SWMIN 18 - -// STK Definitions -#define STK_OK 0x10 -#define STK_FAILED 0x11 -#define STK_UNKNOWN 0x12 -#define STK_INSYNC 0x14 -#define STK_NOSYNC 0x15 -#define CRC_EOP 0x20 //ok it is a space... - -void pulse(int pin, int times); - -#ifdef USE_HARDWARE_SPI -#include "SPI.h" -#else - -#define SPI_MODE0 0x00 - -class SPISettings { - public: - // clock is in Hz - SPISettings(uint32_t clock, uint8_t bitOrder, uint8_t dataMode) : clock(clock) { - (void) bitOrder; - (void) dataMode; - }; - - private: - uint32_t clock; - - friend class BitBangedSPI; -}; - -class BitBangedSPI { - public: - void begin() { - digitalWrite(PIN_SCK, LOW); - digitalWrite(PIN_MOSI, LOW); - pinMode(PIN_SCK, OUTPUT); - pinMode(PIN_MOSI, OUTPUT); - pinMode(PIN_MISO, INPUT); - } - - void beginTransaction(SPISettings settings) { - pulseWidth = (500000 + settings.clock - 1) / settings.clock; - if (pulseWidth == 0) - pulseWidth = 1; - } - - void end() {} - - uint8_t transfer (uint8_t b) { - for (unsigned int i = 0; i < 8; ++i) { - digitalWrite(PIN_MOSI, (b & 0x80) ? HIGH : LOW); - digitalWrite(PIN_SCK, HIGH); - delayMicroseconds(pulseWidth); - b = (b << 1) | digitalRead(PIN_MISO); - digitalWrite(PIN_SCK, LOW); // slow pulse - delayMicroseconds(pulseWidth); - } - return b; - } - - private: - unsigned long pulseWidth; // in microseconds -}; - -static BitBangedSPI SPI; - -#endif - -void setup() { - SERIAL.begin(BAUDRATE); - - pinMode(LED_PMODE, OUTPUT); - pulse(LED_PMODE, 2); - pinMode(LED_ERR, OUTPUT); - pulse(LED_ERR, 2); - pinMode(LED_HB, OUTPUT); - pulse(LED_HB, 2); - -} - -int error = 0; -int pmode = 0; -// address for reading and writing, set by 'U' command -unsigned int here; -uint8_t buff[256]; // global block storage - -#define beget16(addr) (*addr * 256 + *(addr+1) ) -typedef struct param { - uint8_t devicecode; - uint8_t revision; - uint8_t progtype; - uint8_t parmode; - uint8_t polling; - uint8_t selftimed; - uint8_t lockbytes; - uint8_t fusebytes; - uint8_t flashpoll; - uint16_t eeprompoll; - uint16_t pagesize; - uint16_t eepromsize; - uint32_t flashsize; -} -parameter; - -parameter param; - -// this provides a heartbeat on pin 9, so you can tell the software is running. -uint8_t hbval = 128; -int8_t hbdelta = 8; -void heartbeat() { - static unsigned long last_time = 0; - unsigned long now = millis(); - if ((now - last_time) < 40) - return; - last_time = now; - if (hbval > 192) hbdelta = -hbdelta; - if (hbval < 32) hbdelta = -hbdelta; - hbval += hbdelta; - analogWrite(LED_HB, hbval); -} - -static bool rst_active_high; - -void reset_target(bool reset) { - digitalWrite(RESET, ((reset && rst_active_high) || (!reset && !rst_active_high)) ? HIGH : LOW); -} - -void loop(void) { - // is pmode active? - if (pmode) { - digitalWrite(LED_PMODE, HIGH); - } else { - digitalWrite(LED_PMODE, LOW); - } - // is there an error? - if (error) { - digitalWrite(LED_ERR, HIGH); - } else { - digitalWrite(LED_ERR, LOW); - } - - // light the heartbeat LED - heartbeat(); - if (SERIAL.available()) { - avrisp(); - } -} - -uint8_t getch() { - while (!SERIAL.available()); - return SERIAL.read(); -} -void fill(int n) { - for (int x = 0; x < n; x++) { - buff[x] = getch(); - } -} - -#define PTIME 30 -void pulse(int pin, int times) { - do { - digitalWrite(pin, HIGH); - delay(PTIME); - digitalWrite(pin, LOW); - delay(PTIME); - } while (times--); -} - -void prog_lamp(int state) { - if (PROG_FLICKER) { - digitalWrite(LED_PMODE, state); - } -} - -uint8_t spi_transaction(uint8_t a, uint8_t b, uint8_t c, uint8_t d) { - SPI.transfer(a); - SPI.transfer(b); - SPI.transfer(c); - return SPI.transfer(d); -} - -void empty_reply() { - if (CRC_EOP == getch()) { - SERIAL.print((char)STK_INSYNC); - SERIAL.print((char)STK_OK); - } else { - error++; - SERIAL.print((char)STK_NOSYNC); - } -} - -void breply(uint8_t b) { - if (CRC_EOP == getch()) { - SERIAL.print((char)STK_INSYNC); - SERIAL.print((char)b); - SERIAL.print((char)STK_OK); - } else { - error++; - SERIAL.print((char)STK_NOSYNC); - } -} - -void get_version(uint8_t c) { - switch (c) { - case 0x80: - breply(HWVER); - break; - case 0x81: - breply(SWMAJ); - break; - case 0x82: - breply(SWMIN); - break; - case 0x93: - breply('S'); // serial programmer - break; - default: - breply(0); - } -} - -void set_parameters() { - // call this after reading parameter packet into buff[] - param.devicecode = buff[0]; - param.revision = buff[1]; - param.progtype = buff[2]; - param.parmode = buff[3]; - param.polling = buff[4]; - param.selftimed = buff[5]; - param.lockbytes = buff[6]; - param.fusebytes = buff[7]; - param.flashpoll = buff[8]; - // ignore buff[9] (= buff[8]) - // following are 16 bits (big endian) - param.eeprompoll = beget16(&buff[10]); - param.pagesize = beget16(&buff[12]); - param.eepromsize = beget16(&buff[14]); - - // 32 bits flashsize (big endian) - param.flashsize = buff[16] * 0x01000000 - + buff[17] * 0x00010000 - + buff[18] * 0x00000100 - + buff[19]; - - // AVR devices have active low reset, AT89Sx are active high - rst_active_high = (param.devicecode >= 0xe0); -} - -void start_pmode() { - - // Reset target before driving PIN_SCK or PIN_MOSI - - // SPI.begin() will configure SS as output, so SPI master mode is selected. - // We have defined RESET as pin 10, which for many Arduinos is not the SS pin. - // So we have to configure RESET as output here, - // (reset_target() first sets the correct level) - reset_target(true); - pinMode(RESET, OUTPUT); - SPI.begin(); - SPI.beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE0)); - - // See AVR datasheets, chapter "SERIAL_PRG Programming Algorithm": - - // Pulse RESET after PIN_SCK is low: - digitalWrite(PIN_SCK, LOW); - delay(20); // discharge PIN_SCK, value arbitrarily chosen - reset_target(false); - // Pulse must be minimum 2 target CPU clock cycles so 100 usec is ok for CPU - // speeds above 20 KHz - delayMicroseconds(100); - reset_target(true); - - // Send the enable programming command: - delay(50); // datasheet: must be > 20 msec - spi_transaction(0xAC, 0x53, 0x00, 0x00); - pmode = 1; -} - -void end_pmode() { - SPI.end(); - // We're about to take the target out of reset so configure SPI pins as input - pinMode(PIN_MOSI, INPUT); - pinMode(PIN_SCK, INPUT); - reset_target(false); - pinMode(RESET, INPUT); - pmode = 0; -} - -void universal() { - uint8_t ch; - - fill(4); - ch = spi_transaction(buff[0], buff[1], buff[2], buff[3]); - breply(ch); -} - -void flash(uint8_t hilo, unsigned int addr, uint8_t data) { - spi_transaction(0x40 + 8 * hilo, - addr >> 8 & 0xFF, - addr & 0xFF, - data); -} -void commit(unsigned int addr) { - if (PROG_FLICKER) { - prog_lamp(LOW); - } - spi_transaction(0x4C, (addr >> 8) & 0xFF, addr & 0xFF, 0); - if (PROG_FLICKER) { - delay(PTIME); - prog_lamp(HIGH); - } -} - -unsigned int current_page() { - if (param.pagesize == 32) { - return here & 0xFFFFFFF0; - } - if (param.pagesize == 64) { - return here & 0xFFFFFFE0; - } - if (param.pagesize == 128) { - return here & 0xFFFFFFC0; - } - if (param.pagesize == 256) { - return here & 0xFFFFFF80; - } - return here; -} - - -void write_flash(int length) { - fill(length); - if (CRC_EOP == getch()) { - SERIAL.print((char) STK_INSYNC); - SERIAL.print((char) write_flash_pages(length)); - } else { - error++; - SERIAL.print((char) STK_NOSYNC); - } -} - -uint8_t write_flash_pages(int length) { - int x = 0; - unsigned int page = current_page(); - while (x < length) { - if (page != current_page()) { - commit(page); - page = current_page(); - } - flash(LOW, here, buff[x++]); - flash(HIGH, here, buff[x++]); - here++; - } - - commit(page); - - return STK_OK; -} - -#define EECHUNK (32) -uint8_t write_eeprom(unsigned int length) { - // here is a word address, get the byte address - unsigned int start = here * 2; - unsigned int remaining = length; - if (length > param.eepromsize) { - error++; - return STK_FAILED; - } - while (remaining > EECHUNK) { - write_eeprom_chunk(start, EECHUNK); - start += EECHUNK; - remaining -= EECHUNK; - } - write_eeprom_chunk(start, remaining); - return STK_OK; -} -// write (length) bytes, (start) is a byte address -uint8_t write_eeprom_chunk(unsigned int start, unsigned int length) { - // this writes byte-by-byte, page writing may be faster (4 bytes at a time) - fill(length); - prog_lamp(LOW); - for (unsigned int x = 0; x < length; x++) { - unsigned int addr = start + x; - spi_transaction(0xC0, (addr >> 8) & 0xFF, addr & 0xFF, buff[x]); - delay(45); - } - prog_lamp(HIGH); - return STK_OK; -} - -void program_page() { - char result = (char) STK_FAILED; - unsigned int length = 256 * getch(); - length += getch(); - char memtype = getch(); - // flash memory @here, (length) bytes - if (memtype == 'F') { - write_flash(length); - return; - } - if (memtype == 'E') { - result = (char)write_eeprom(length); - if (CRC_EOP == getch()) { - SERIAL.print((char) STK_INSYNC); - SERIAL.print(result); - } else { - error++; - SERIAL.print((char) STK_NOSYNC); - } - return; - } - SERIAL.print((char)STK_FAILED); - return; -} - -uint8_t flash_read(uint8_t hilo, unsigned int addr) { - return spi_transaction(0x20 + hilo * 8, - (addr >> 8) & 0xFF, - addr & 0xFF, - 0); -} - -char flash_read_page(int length) { - for (int x = 0; x < length; x += 2) { - uint8_t low = flash_read(LOW, here); - SERIAL.print((char) low); - uint8_t high = flash_read(HIGH, here); - SERIAL.print((char) high); - here++; - } - return STK_OK; -} - -char eeprom_read_page(int length) { - // here again we have a word address - int start = here * 2; - for (int x = 0; x < length; x++) { - int addr = start + x; - uint8_t ee = spi_transaction(0xA0, (addr >> 8) & 0xFF, addr & 0xFF, 0xFF); - SERIAL.print((char) ee); - } - return STK_OK; -} - -void read_page() { - char result = (char)STK_FAILED; - int length = 256 * getch(); - length += getch(); - char memtype = getch(); - if (CRC_EOP != getch()) { - error++; - SERIAL.print((char) STK_NOSYNC); - return; - } - SERIAL.print((char) STK_INSYNC); - if (memtype == 'F') result = flash_read_page(length); - if (memtype == 'E') result = eeprom_read_page(length); - SERIAL.print(result); -} - -void read_signature() { - if (CRC_EOP != getch()) { - error++; - SERIAL.print((char) STK_NOSYNC); - return; - } - SERIAL.print((char) STK_INSYNC); - uint8_t high = spi_transaction(0x30, 0x00, 0x00, 0x00); - SERIAL.print((char) high); - uint8_t middle = spi_transaction(0x30, 0x00, 0x01, 0x00); - SERIAL.print((char) middle); - uint8_t low = spi_transaction(0x30, 0x00, 0x02, 0x00); - SERIAL.print((char) low); - SERIAL.print((char) STK_OK); -} -////////////////////////////////////////// -////////////////////////////////////////// - - -//////////////////////////////////// -//////////////////////////////////// -void avrisp() { - uint8_t ch = getch(); - switch (ch) { - case '0': // signon - error = 0; - empty_reply(); - break; - case '1': - if (getch() == CRC_EOP) { - SERIAL.print((char) STK_INSYNC); - SERIAL.print("AVR ISP"); - SERIAL.print((char) STK_OK); - } - else { - error++; - SERIAL.print((char) STK_NOSYNC); - } - break; - case 'A': - get_version(getch()); - break; - case 'B': - fill(20); - set_parameters(); - empty_reply(); - break; - case 'E': // extended parameters - ignore for now - fill(5); - empty_reply(); - break; - case 'P': - if (!pmode) - start_pmode(); - empty_reply(); - break; - case 'U': // set address (word) - here = getch(); - here += 256 * getch(); - empty_reply(); - break; - - case 0x60: //STK_PROG_FLASH - getch(); // low addr - getch(); // high addr - empty_reply(); - break; - case 0x61: //STK_PROG_DATA - getch(); // data - empty_reply(); - break; - - case 0x64: //STK_PROG_PAGE - program_page(); - break; - - case 0x74: //STK_READ_PAGE 't' - read_page(); - break; - - case 'V': //0x56 - universal(); - break; - case 'Q': //0x51 - error = 0; - end_pmode(); - empty_reply(); - break; - - case 0x75: //STK_READ_SIGN 'u' - read_signature(); - break; - - // expecting a command, not CRC_EOP - // this is how we can get back in sync - case CRC_EOP: - error++; - SERIAL.print((char) STK_NOSYNC); - break; - - // anything else we will return STK_UNKNOWN - default: - error++; - if (CRC_EOP == getch()) - SERIAL.print((char)STK_UNKNOWN); - else - SERIAL.print((char)STK_NOSYNC); - } -} diff --git a/build/shared/examples/README.md b/build/shared/examples/README.md new file mode 100644 index 00000000000..6197c437acf --- /dev/null +++ b/build/shared/examples/README.md @@ -0,0 +1,6 @@ +### Built-in examples have been moved + +Originally, the main Arduino repository contained the built-in examples in this +directory. Since then, these have been moved to: + +https://github.com/arduino/arduino-examples diff --git a/build/shared/examples_formatter.conf b/build/shared/examples_formatter.conf deleted file mode 100644 index e006d1f2f7c..00000000000 --- a/build/shared/examples_formatter.conf +++ /dev/null @@ -1,45 +0,0 @@ -# This configuration file contains a selection of the available options provided by the formatting tool "Artistic Style" -# http://astyle.sourceforge.net/astyle.html -# -# If you wish to change them, don't edit this file. -# Instead, copy it in the same folder of file "preferences.txt" and modify the copy. This way, you won't lose your custom formatter settings when upgrading the IDE -# If you don't know where file preferences.txt is stored, open the IDE, File -> Preferences and you'll find a link - -mode=c - -# 2 spaces indentation -indent=spaces=2 - -# also indent macros -indent-preprocessor - -# indent classes, switches (and cases), comments starting at column 1 -indent-classes -indent-switches -indent-cases -indent-col1-comments - -# put a space around operators -pad-oper - -# put a space after if/for/while -pad-header - -# if you like one-liners, keep them -keep-one-line-statements - -style=java -attach-namespaces -attach-classes -attach-inlines -attach-extern-c -indent-modifiers -indent-namespaces -indent-labels -indent-preproc-block -indent-preproc-define -indent-preproc-cond -unpad-paren -add-brackets -remove-comment-prefix - diff --git a/build/shared/examples_formatter.sh b/build/shared/examples_formatter.sh deleted file mode 100755 index 01e0fe5b309..00000000000 --- a/build/shared/examples_formatter.sh +++ /dev/null @@ -1,2 +0,0 @@ -# you need to have astyle installed before running this -find examples -name '*.ino' -exec astyle --options=examples_formatter.conf {} \; diff --git a/build/shared/icons/128x128/apps/arduino.png b/build/shared/icons/128x128/apps/arduino.png index 28fa03ab7f7..1cdfb28699b 100644 Binary files a/build/shared/icons/128x128/apps/arduino.png and b/build/shared/icons/128x128/apps/arduino.png differ diff --git a/build/shared/icons/16x16/apps/arduino.png b/build/shared/icons/16x16/apps/arduino.png index 6ef4a2bdf01..2f33f429bdf 100644 Binary files a/build/shared/icons/16x16/apps/arduino.png and b/build/shared/icons/16x16/apps/arduino.png differ diff --git a/build/shared/icons/24x24/apps/arduino.png b/build/shared/icons/24x24/apps/arduino.png index 7b2e7a5c306..0a4b3952cb1 100644 Binary files a/build/shared/icons/24x24/apps/arduino.png and b/build/shared/icons/24x24/apps/arduino.png differ diff --git a/build/shared/icons/256x256/apps/arduino.png b/build/shared/icons/256x256/apps/arduino.png index e7f6638e021..6df847b035a 100644 Binary files a/build/shared/icons/256x256/apps/arduino.png and b/build/shared/icons/256x256/apps/arduino.png differ diff --git a/build/shared/icons/32x32/apps/arduino.png b/build/shared/icons/32x32/apps/arduino.png index 74eacaa240b..c51d0be6450 100644 Binary files a/build/shared/icons/32x32/apps/arduino.png and b/build/shared/icons/32x32/apps/arduino.png differ diff --git a/build/shared/icons/48x48/apps/arduino.png b/build/shared/icons/48x48/apps/arduino.png index dcfbed45c5b..5a91c8eedd0 100644 Binary files a/build/shared/icons/48x48/apps/arduino.png and b/build/shared/icons/48x48/apps/arduino.png differ diff --git a/build/shared/icons/64x64/apps/arduino.png b/build/shared/icons/64x64/apps/arduino.png index ee385e39e26..48d578599c1 100644 Binary files a/build/shared/icons/64x64/apps/arduino.png and b/build/shared/icons/64x64/apps/arduino.png differ diff --git a/build/shared/icons/72x72/apps/arduino.png b/build/shared/icons/72x72/apps/arduino.png index ac01563da27..3d380c48acb 100644 Binary files a/build/shared/icons/72x72/apps/arduino.png and b/build/shared/icons/72x72/apps/arduino.png differ diff --git a/build/shared/icons/96x96/apps/arduino.png b/build/shared/icons/96x96/apps/arduino.png index a62383f6b6b..82c095468e7 100644 Binary files a/build/shared/icons/96x96/apps/arduino.png and b/build/shared/icons/96x96/apps/arduino.png differ diff --git a/build/shared/lib/keywords.txt b/build/shared/lib/keywords.txt index 1b3c3e223a2..22e1819c4db 100644 --- a/build/shared/lib/keywords.txt +++ b/build/shared/lib/keywords.txt @@ -118,28 +118,80 @@ PROGMEM LITERAL1 Constants RESERVED_WORD_2 abs KEYWORD2 Abs acos KEYWORD2 ACos +acosf KEYWORD2 asin KEYWORD2 ASin +asinf KEYWORD2 atan KEYWORD2 ATan atan2 KEYWORD2 ATan2 +atan2f KEYWORD2 +atanf KEYWORD2 +cbrt KEYWORD2 +cbrtf KEYWORD2 ceil KEYWORD2 Ceil +ceilf KEYWORD2 constrain KEYWORD2 Constrain +copysign KEYWORD2 +copysignf KEYWORD2 cos KEYWORD2 Cos +cosf KEYWORD2 +cosh KEYWORD2 +coshf KEYWORD2 degrees KEYWORD2 exp KEYWORD2 Exp +expf KEYWORD2 +fabs KEYWORD2 +fabsf KEYWORD2 +fdim KEYWORD2 +fdimf KEYWORD2 floor KEYWORD2 Floor +floorf KEYWORD2 +fma KEYWORD2 +fmaf KEYWORD2 +fmax KEYWORD2 +fmaxf KEYWORD2 +fmin KEYWORD2 +fminf KEYWORD2 +fmod KEYWORD2 +fmodf KEYWORD2 +hypot KEYWORD2 +hypotf KEYWORD2 +isfinite KEYWORD2 +isinf KEYWORD2 +isnan KEYWORD2 +ldexp KEYWORD2 +ldexpf KEYWORD2 log KEYWORD2 Log +log10 KEYWORD2 +log10f KEYWORD2 +logf KEYWORD2 +lrint KEYWORD2 +lrintf KEYWORD2 +lround KEYWORD2 +lroundf KEYWORD2 map KEYWORD2 Map max KEYWORD2 Max min KEYWORD2 Min +pow KEYWORD2 Pow +powf KEYWORD2 radians KEYWORD2 random KEYWORD2 Random randomSeed KEYWORD2 RandomSeed round KEYWORD2 +roundf KEYWORD2 +signbit KEYWORD2 sin KEYWORD2 Sin +sinf KEYWORD2 +sinh KEYWORD2 +sinhf KEYWORD2 sq KEYWORD2 Sq sqrt KEYWORD2 Sqrt +sqrtf KEYWORD2 tan KEYWORD2 Tan -pow KEYWORD2 Pow +tanf KEYWORD2 +tanh KEYWORD2 +tanhf KEYWORD2 +trunc KEYWORD2 +truncf KEYWORD2 bitRead KEYWORD2 BitRead bitWrite KEYWORD2 BitWrite diff --git a/build/shared/lib/preferences.txt b/build/shared/lib/preferences.txt index f442cdb3e66..77d9f136f3d 100644 --- a/build/shared/lib/preferences.txt +++ b/build/shared/lib/preferences.txt @@ -24,6 +24,8 @@ # You'll have problems running Processing if you incorrectly # modify lines in this file. +# This file DOES NOT CONTAIN settings for autoformatter (A-Style). +# Look for the file "formatter.conf" and follow instructions at top. # !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -267,7 +269,8 @@ programmer = arduino:avrispmkii upload.using = bootloader upload.verify = true -serial.port=COM1 +# default port is not defined to prevent running AVRDUDE before Port selected (issue #7943) +#serial.port= serial.databits=8 serial.stopbits=1 serial.parity=N @@ -279,6 +282,9 @@ serial.line_ending=1 # default chosen language (none for none) editor.languages.current = +# Disable saving of preferences.txt file (settings will not survive Arduino IDE reboot) +preferences.readonly=false + # Debugging/Development Preferences # --------------------------------- diff --git a/build/shared/reference-1.6.6-3.zip.sha b/build/shared/reference-1.6.6-3.zip.sha deleted file mode 100644 index eff35eeff37..00000000000 --- a/build/shared/reference-1.6.6-3.zip.sha +++ /dev/null @@ -1 +0,0 @@ -cc4f36c9783772f07c9a1bb4a60d7be3b504c69e diff --git a/build/shared/revisions.txt b/build/shared/revisions.txt index f1471244999..72807d6a70a 100644 --- a/build/shared/revisions.txt +++ b/build/shared/revisions.txt @@ -1,13 +1,262 @@ -ARDUINO 1.8.6 +ARDUINO 1.8.20 not yet released + + +ARDUINO 1.8.19 2021.12.20 SECURITY HOTFIX RELEASE + +[ide] +* Removed log4j from IDE. Fix CVE-2021-45105, CVE-2021-45046 + +ARDUINO 1.8.18 2021.12.14 SECURITY HOTFIX RELEASE + +[ide] +* Upgrade log4j to 2.16.0 - Extra hardening for CVE-2021-44228 + + +ARDUINO 1.8.17 (not released superseded by 1.8.18) + +[ide] +* Upgrade log4j to 2.15.0 - CVE-2021-44228 (thanks @rhowe) + + +ARDUINO 1.8.16 2021.09.06 + +[ide] +* Removed the very outdated off-line documentation. +* Do not crash if a malformed boards index URL is entered in preferences. +* Fixed font-resizing problem with multiple tabs open. +* Updated FTDI drivers to version 2.12.36.4 + +[wifi-firmware] +* Added latest firmwares (up to version 1.4.8) for NINA-based boards + + +ARDUINO 1.8.15 2021.05.13 + +HOTFIX: +* Fixed regression in library discovery (failing to compile bundled libs, like SD or Ethernet, on some platforms) + + +ARDUINO 1.8.14 2021.05.12 + +[ide] +* Fix status bar custom board preferences disappearing (thanks @magedrifaat) +* Boards Manager bugfix: sometimes the "Install" button appeared instead of "Update" + after entering a search term. +* Libraries/Boards Manager: the Type and Category filters are kept after install/uninstall. +* Added 'deprecated' label support in Boards Manager, platforms marked as deprecated are + shown at the bottom of the list. +* Serial Plotter: line endings dropdown menu now comply with the global preference settings. (thanks @sceniclife) +* Libraries Manager: Maintainer is displayed instead of the Author. +* Firmware Updater: Added new firmwares and support for Nano RP2040 Connect. +* Boards Manager: cached 3rd party package_index.json are no more deleted if the origin URL is removed from preferences, + this allows other tools (like arduino-cli), that may have different URLs configuration, to work properly. +* The board configuration submenus are now scrollable. +* New shortcut: Shift+click on Serial Monitor button will open the Serial Plotter. (thanks @n-elia) +* Fixed NPE if no board is selected. (thanks @matthijskooijman) + +[arduino-builder] +* Improved lib detection: check for matching name in library.properties +* Fix compile if invalid build.options.json is found (thanks @d-a-v) +* Improved error messages for .cpp/.h file in the sketch + + +ARDUINO 1.8.13 2020.06.16 + +[ide] +* Fixed crash on MacOSX >=10.15 with multiple monitor setups. +* The boards in the boards list in the "Tools" menu are now grouped by platform. This should make the selection + easier when there are lots of boards loaded in the IDE. (thanks @matthijskooijman) +* Fixed save of proxy username/password settings in "manual proxy" section. +* In "Tools / Programmers" menu only shows programmers related to the currently selected board. (thanks @matthijskooijman) +* Fixed: sketch window out-of-display if the IDE is restarted after removing an external monitor. +* Allow baudrate/config change when the Serial Monitor/Plotter is disabled. (thanks @matthijskooijman) +* Updated jmdns to 3.5.5. Should improve network board detection. +* Optimized libraries scanning during startup. (thanks @ricardojlrufino) +* Better vertical centering of file names in tabs. (thanks @ricardojlrufino) +* Better console rendering of progress bar during upload. (thanks @matthijskooijman) +* Fixed invalid http "Accept" header. + +[arduino-builder] +* FIX REGRESSION: Fixed precompiled libraries containing "wrapper" code that has to be compiled together + with the precompiled part. +* Removed automatic '--relax' for compiles on Atmega2560 MCU +* Fixed sketchbook+bootloader hex merger when the bootloader is in .bin format. +* Fixed relative path errors when traversing different partitions (in particular on MacOSX for larger sketches) +* Added #define variable during lib discovery phase +* Improved progress report from compile + +[core] +* Updated AVR core to 1.8.3: + - Wire class now supports timeout + - Upgraded avr-gcc to 7.3.0-atmel3.6.1-arduino7 + +ARDUINO 1.8.12 2020.02.13 + +[ide] +* Reverted the bundled Java JRE to the latest freely redistributable Oracle JRE for all + platforms except: + - macOS (due to notarization) + - aarch64 (due to missing graphical support) + + Switching to AdoptJDK demonstrated to be more challenging than expected, bringing in + some corner case bugs that were not being caught by our testing procedures: + - https://github.com/arduino/Arduino/labels/OpenJDK + + To guarantee the best user experience we decided to revert to the latest working JRE + until all the issues are resolved. + +* Improved visualization of compiler errors (@matthijskooijman) +* Fixed: "Comparison method violates its original contract" error in library manager +* Serial monitor is no more cleared during upload, so it can be copy/pasted (@PaulStoffregen) + +[arduino-builder] +* FIX REGRESSION: library priority selection for bundled libraries (like SD or Ethernet) +* FIX REGRESSION: use AVR core installed via Board Manager (when present) instead of the one bundled in the IDE +* Improved precompiled libraries handling +* FIX: paths with spaces are now correctly printed in compiler output + +ARDUINO 1.8.11 2020.01.27 + +[ide] +* FIX: Serial plotter do not hang if empty lines are received +* A lot of accessibility improvements in Libs and Board managers GUI for screen readers (thanks @joew46167) +* Slightly improved support for themes in Libs and Board managers (thanks @matthijskooijman) +* Serial plotter: added serial input text field (thanks @cactorium) +* MacOSX: support for notarization (thanks @PaulStoffregen for the support) +* Fix wrong bracket match rectangle on auto format (thanks @magedrifaat) +* Pluggable discoveries: runtime.platform.path and runtime.hardware.path are now available as variables (thanks @PaulStoffregen) + +[arduino-builder] +* FIX: missed library-detection cache (forcing lib detection on each build) +* FIX: Windows: the build folder may reside on a different partition +* FIX: Segfault in arduino-builder with -dump-prefs if no sketch is specified +* FIX: Allow loading of global user-define platform.txt +* FIX: Fixed nil pointer exception on some rare case with multiple libs +* FIX: Print "multiple libraries found for header.h" message only when it really happens +* FIX: Fixed library priorities on some rare circumstances + +[hardware] +* updated AVR core to 1.8.2 + +[wifi-updater] +* updated to 0.10.10 + +ARDUINO 1.8.10 2019.09.13 + +[ide] +* Live font resize now applies to console and serial monitor too @Pieter12345 +* Make it easier to build the IDE from sources on Windows @Pieter12345 +* Smaller Preference window, suitable for super small screens +* Cache downloaded json and only retrieve them when changed @mattiabertorello +* Suspend serial monitor if the board gets disconnected abruptly +* Libraries can now declare dependencies that will be proposed during lib installation +* SerialPlotter: allow adding labels @chromhelm +* Support tar.xz archives for Board Manager @vowstar +* SerialMonitor: add command history (via arrow keys) @Pieter12345 +* Accessibility: add checkbox to enable accessibility in Preferences @joew46167 + This mode enables a plethora of improvements on voiceover and keyboard navigation. + eg. links become accessible buttons, lists are scrollable via arrow keys without much pain + +[wifi-updater] +* Add latest NINA firmware + +[hardware] +* Bundle new avr toolchain (fixes lto issue with 5.4.0 and 64bit compatibility with upcoming macOS Catalina) + +[arduino-builder] +* update to 1.4.7 (based on the new arduino-cli) + +ARDUINO 1.8.9 2019.03.15 [ide] +* New target! ARM64 boards are now fully supported (Nvidia Jetson and RaspberryPi3 with 64bit operating system) +* Fix UTF8 related bugs on Windows +* Fixed: can now compile again using OpenJDK (removed dependency on JavaFx) +* Fixed: only use touchBar on OSX 10.12 or higher +* PluggableDiscovery: easily add your own discoverer and make it available in Boards/Port menu (thanks @PaulStoffregen for the idea and the initial implementation) +* LibManager: reduce slowdown when searching +* Fixed: ensure a sketch line is visible when it contains an error and must be highlighted +* Linux: the installer now tries to install a symlink is /usr/local/bin (this doesn't affect usual non-systemwide installation) Thanks @2E0PGS + +[wifi-updater] +* Fix firmware upgrade not being available for 3rd party WINC boards + +[arduino-builder] +* Use lexicographic distance as last chance to spot the right library (if every other technique failed) +* Fix some prototypes being inserted in the middle of a function + +ARDUINO 1.8.8 2018.12.07 + +[ide] +* Fixed: command line parsing of version parameters when installing cores/libraries +* Platform indexes are now downloaded using https +* Fixed: on some newer Linux distributions, NPE when loading GTK look-and-feel without libgtk2 installed +* MacOSX: added touch bar support +* MacOSX: do not exit app after closing last window +* Fixed: serial monitor timestamps not always printed. Thanks @nitram509 +* Kill active programmer if still alive after closing last IDE window +* Fixed: "Export compiled binary" now works also with unsaved sketches +* Improved automatic port re-selection after upload +* Added scroller to "INCOMPATIBLE" examples menu + +[wifi-firmware] +* Added firmware upgrade for NINA-based boards + +ARDUINO 1.8.7 2018.09.11 + +(bugfix service release) + +[ide] +* Fixed: IDE doesn't start if library_index.json is corrupted. +* Fixed: IDE doesn't start if a library with invalid version is found. +* Fixed: Rare build errors in very complex sketches (like Marlin firmware). +* Fixed: Better dialog explaining that MacOSX 10.8 is now required. Thanks @PaulStoffregen +* Fixed: Slow "File" and "Tools" menus in MacOSX +* Fixed: Weird Board Manager behaviour if AVR core is downgraded to a version earlier than 1.6.22 +* Improved first-use usability if the user don't select the serial port. Thanks @PaulStoffregen +* Custom "Tools" menu now keeps the order as defined in boards.txt. + +[core] +* AVR: Fixed EEPROM warnings. Thanks @bxparks +* AVR: Treat "narrowing conversion" as warning, not error. This will make some libraries + to compile again. Thanks @PaulStoffregen + +ARDUINO 1.8.6 2018.08.23 + +[ide] +* Updated arduino-builder to 1.4.0: + - parallel build (improve compile speed) + - better reuse of already compiled files + - Windows: fixed build for sketch stored under OneDrive cloud folders * Added translations for library types. Thanks @ReAlUA * Added scroller in programmers menu. * Added "accelerator" in scrollable menu, press "a" key while scrolling * Keep "Board Manager" menu item always as first in the menu +* "Manage Libraries" is now also in the "Tools" menu. Thanks @feikname +* Compiler errors now have both column and line +* Serial monitor how has "Show Timestamp" option. Thanks @MichalSy +* Improved DPI detection for hi-resolution monitor on Linux +* Added copy/paste contextual menu in Find/Replace text fields +* Fixed long IDE startup time when some virtual/not-connected network interfaces are present +* Fixed inconsistent line-endings when saving files on Windows +* mDNS: Make board disappear via TTL instead of reachability. Thanks @kurtgo +* Library Manager: display install/remove buttons with mouse on-hover instead of mouse click +* Board Manager: fixed some rare case with corrupted index download +* Windows: removed some debug output when running the IDE from command line +* Support selectable user-defined themes. User's theme are zip files inside the sketchbook "theme" folder +* Library Manager: library search now search also for headers (.h) declared by the library in library.properties +* Added "--version" to the CLI. Thanks @yohsuke +* Fixed Serial Plotter/Monitor permanently disabled if Plotter fails to open +* Fixed window title that sometimes is not updated on "Save as...". Thanks @JxJxJxMxNxS +* Fixed key bindings for Increase/Decrease font size +* Improved accessibility in the Preferences dialog. Thanks @coreyknapp [core] -* AVR: Set Optiboot as default bootloader for Nano. This is the bootloader installed on new Arduino Nano boards. If you have a Nano with the old bootloader you must select Tools > Processor > ATmega328P (Old Bootloader) to upload. +* AVR: Set Optiboot as default bootloader for Nano. This is the bootloader installed on new + Arduino Nano boards. If you have a Nano with the old bootloader you must select + Tools > Processor > ATmega328P (Old Bootloader) to upload. +* AVR core has been moved to its own repository: https://github.com/arduino/ArduinoCore-avr +* Updated toolchain to gcc 5.4.0 [wifi101-firmware] * SECURITY FIX: Released fix for WPA2 KRACK vulnerability (latest WINC1500 firmware 19.5.2). @@ -25,8 +274,8 @@ ARDUINO 1.8.4 2017.08.23 [ide] * IDE Toolbar can now go full width on 4K display. -* Environment variable LIBRARY_INDEX_URL is now correctly parsed (LIBRARY_INDEX_URL_GZ can also be optinally specified). Thanks @xardael -* Added per-board generic option in config file boards.txt for disabling control of dtr+rts. Thanks @d-a-v +* Environment variable LIBRARY_INDEX_URL is now correctly parsed (LIBRARY_INDEX_URL_GZ can also be optionally specified). Thanks @xardael +* Added per-board generic option in config file boards.txt for disabling control of DTR+RTS. Thanks @d-a-v * CLI: fixed missing "runtime.platform.path" when running without the `--board` option * Linux: fixed desktop icon not launching the IDE in certain Window Managers (thanks @herrold) * Allow setting low values for console size (correctly applies console.lines=x in preferences.txt) @@ -35,7 +284,7 @@ ARDUINO 1.8.4 2017.08.23 * Added the ability to increase/decrease font size via keyboard + mouse shortcuts (Ctrl + MouseWheel) * Sketch names starting with a digit are now allowed * Serial monitor is opened on a default position if the multi-monitor setup change (this should fix cases - when the serial monitor is opened outside of the visibile space) + when the serial monitor is opened outside of the visible space) [libraries] * Fixed wrong folder name for "Adafruit Circuit Playground" library, now it can be updated cleanly. @@ -57,7 +306,7 @@ ARDUINO 1.8.3 2017.05.31 * AVR: moved flush() method up in the class hierarchy from Stream to Print class. Thanks @matthijskooijman [other] -* Update Wifi101 Firmware Updater plugin +* Update WiFi101 Firmware Updater plugin ARDUINO 1.8.2 2017.03.22 @@ -85,7 +334,7 @@ ARDUINO 1.8.2 2017.03.22 [other] * SAM platform source code has been moved to its own repository (https://github.com/arduino/ArduinoCore-sam) - all PRs and issues have been moved as well -* Update Wifi101 Firmware Updater plugin +* Update WiFi101 Firmware Updater plugin ARDUINO 1.8.1 - 2017.01.09 @@ -105,7 +354,7 @@ ARDUINO 1.8.0 - 2016.12.20 * builder: .hpp and .hh file extensions are now considered valid sketch extension * builder: core.a is not rebuild if not needed (improve build time in particular for big projects) * Fixed swapped actions "Copy for Forum" and "Copy as HTML" -* Linux/osx: If an editor tab is a symbolic link it is no more replaced with a real file when saving (see #5478) +* Linux/OSX: If an editor tab is a symbolic link it is no more replaced with a real file when saving (see #5478) * Increased the upload timeout to 5 minutes (it was 2 min, but it may be not sufficient when uploading via UART a big sketch) [core] @@ -120,14 +369,14 @@ ARDUINO 1.6.13 - 2016.11.22 [ide] * Improved robustness of Serial Plotter while dealing with malformed or partial data. Thanks @xloem. * Fixed regression on command line upload. -* Bugifx installing libraries from command line: the IDE tries to update the libraries index but it +* Bugfix installing libraries from command line: the IDE tries to update the libraries index but it didn't use it straight away (this caused issues mainly on CI environments) * Libraries and Boards Managers: if a download error happens (CRC error) the IDE tries to download the file again without the need to remove the corrupted file manually. * Improved serial plotter with horizontal axis and grid. Thanks @duff2013 * Windows: Improved DPI detection * Fixed a bunch of small bugs in the editor. -* WiFi101 Firmware Updater: fixed certificates download from websites usign SNI (handshake_failed error) +* WiFi101 Firmware Updater: fixed certificates download from websites using SNI (handshake_failed error) [core] * avr: set default values for "upload.verify" and "program.verify" (allows compatibility with older IDE). Thanks @per1234 @@ -143,7 +392,7 @@ ARDUINO 1.6.12 - 2016.09.21 [core] * avr: Add support for internal 2.56V and 2.56V ext. cap analog references on the ATtiny25/45/85. Thanks @mischnic * Added String::toDouble(). Thanks @Ivan-Perez -* Update to avrdude 6.3 with patch to ignore unused fuses (burn bootloader works also wih outdated cores) +* Update to avrdude 6.3 with patch to ignore unused fuses (burn bootloader works also with outdated cores) ARDUINO 1.6.11 - 2016.08.17 @@ -159,7 +408,7 @@ ARDUINO 1.6.11 - 2016.08.17 ARDUINO 1.6.10 - 2016.07.26 [ide] -* A lot of bugfixes to builder: +* A lot of bug fixes to builder: https://github.com/arduino/arduino-builder/issues?q=milestone%3A1.3.19+is%3Aclosed * Libraries can now define the property "includes" in the library.properties to tell the IDE which `#include <...>` lines should be added to the sketch when @@ -178,7 +427,7 @@ ARDUINO 1.6.10 - 2016.07.26 * avr: Fix TX buffer being overwritten by multiple Wire.write(...) calls in slave mode. Thanks @kellerkindt * Another small fix to String iterators. Thanks @Ivan-Perez @Chris--A * Added getTimeout() method to Stream. Thanks @mattb5906 -* avr: Fixed USB wakeup event handling, this solves some rare lockups of serial port on some linux distributions +* avr: Fixed USB wakeup event handling, this solves some rare lockups of serial port on some Linux distributions * Speed and size improvement on Print::printFloat(..). Thanks @bblanchon * avr: Added Serial.availableForWrite() for USB-CDC serial ports * avr: Added PIN_* defines to all board variants @@ -191,23 +440,23 @@ ARDUINO 1.6.9 - 2016.05.10 * Catch and report errors during parsing contributed index files * Fixed IDE version color on about dialog box. Thanks @ivanebernal * The "always-on-top update notification" popup is now less intrusive. -* Fixed untraslated string during IDE startup splash window. Thanks @ivanebernal +* Fixed untranslated string during IDE startup splash window. Thanks @ivanebernal * New arduino-builder: better core library detection, faster operations when recompiling and more. See https://github.com/arduino/arduino-builder/compare/1.3.9...1.3.15 * Fixed multitab error reporting -* Rework serial port discovery to be faster, less cpu intensive and FTDI friendly +* Rework serial port discovery to be faster, less CPU intensive and FTDI friendly * Avoid launching multiple concurrent compile and upload operation * Use hi-res icons for Serial monitor and plotter * Make http://librarymanager and http://boardsmanager links clickable from the editor window * Cut/Copy actions are disable when there is no text selected. Thanks @avargas-nearsoft -* Added more OSX native (emacs-like) keybindings. Thanks @nopdotcom +* Added more OSX native (emacs-like) key bindings. Thanks @nopdotcom * Fixed Ctrl+Del: now deletes the word behind the cursor instead of the entire line. Thanks @avargas-nearsoft * Fixed "Verify code after upload" option in preferences. Thanks @gh-megabit [core] * String class now supports iterators. Thanks @Chris--A * sam: Allow 3rd party boards that depend on SAM core to use their own - USB vid/pid and manufacturer/product strings. Thanks @philmanofsky. + USB VID/PID and manufacturer/product strings. Thanks @philmanofsky. * avr: Check at runtime if 32u4 boards are shipped with new bootloader; if so write bootloader magic value in an unproblematic RAM location * avr, sam: Added "reciper.ar.pattern" to plaform.txt to allow compatibility @@ -302,14 +551,14 @@ ARDUINO 1.6.6 - 2015.11.03 * Allow per-platform keywords.txt. Thanks @PaulStoffregen * Allow spaces in IDE install path on Linux. Thanks @matthijskooijman * Fixed a lot of documentation. Thanks to @per1234 @q2dg -* Fixed parsing for SystemProfiler when scanning for available serial ports on Macosx El Capitan +* Fixed parsing for SystemProfiler when scanning for available serial ports on MacOSX El Capitan [libraries] * Bridge: YunClient.connected() returns true if there are bytes available for read. Thanks @RobAtticus * Bridge: YunClient.stop() now empties all buffers. Thanks @RobAtticus * Ethernet: Added missing keywords. Thanks @per1234 * Ethernet: Fixed DNSClient.inet_aton() function. Thanks @jhorck -* Ethernet: Expose optional DHCP timout parameters to Ethernet:begin(). Thanks @chaveiro +* Ethernet: Expose optional DHCP timeout parameters to Ethernet:begin(). Thanks @chaveiro * Wire: Implemented Wire.end(). * Wire: Fixed bug with repeated START for AVR. Thanks Nate Williams * Wire: Resolved timing issues on AVR. See #2173 #1477. @@ -375,7 +624,7 @@ ARDUINO 1.6.5 - 2015.06.15 * When using "external editor" mode, sketch code is updated when the IDE gets focused * Added keyboard shortcuts to IDE menus: ALT+F for File, ALT+E for Edit and so on * Added support for Dangerous Prototypes Bus Pirate as ISP -* Added "Close" button to Boards/Libs Managers, in order to help linux people with weird Window Managers +* Added "Close" button to Boards/Libs Managers, in order to help Linux people with weird Window Managers * Added File > Open Recent menu, showing the last 5 opened sketches * Windows: added Arduino Zero drivers * Tons of minor fixes @@ -385,7 +634,7 @@ ARDUINO 1.6.5 - 2015.06.15 * Added SPI Transactions to TFT lib * Stepper: support for 5-phase/5-wires motors. Thanks @rdodesigns * Stepper: increased precision in timing calculations. Thanks @ekozlenko -* Firmata and Temboo: dropped our vesions, tagged released are downloaded from their respective git repos +* Firmata and Temboo: dropped our versions, tagged released are downloaded from their respective git repos [core] * AVR: delayMicroseconds(..) doesn't hang if called with 0. Thanks @cano64 @@ -407,9 +656,9 @@ ARDUINO 1.6.4 - 2015.05.06 * Boards and Libraries Managers command line (with contribs from @Lauszus): --install-board "arduino:Arduino SAM Boards (32-bits ARM Cortex-M3):1.6.3" and --install-library "Bridge:1.0.1". Version can be omitted: if omitted, latest version available is automatically picked * Warning levels can be set in File > Preferences * When compilation fails, editor highlights the reported row -* Windows and MacOSX: updated bunbled JVM to 1.8.0_45 (latest available atm) +* Windows and MacOSX: updated bundled JVM to 1.8.0_45 (latest available atm) * Disabled "uncertified" warning (requires avr core >= 1.6.6, sam core >= 1.6.4) -* Additional boards/cores can be listed specifying comma separated list of package_SOMETHING_index.json url in File > Preferences +* Additional boards/cores can be listed specifying comma separated list of package_SOMETHING_index.json URL in File > Preferences * MacOSX: fixed wrong sketch opened when double clicking on a .ino file * Boards and Libraries main files are downloaded directly (no proxy php script), fixing some glitches when using a proxy server * Added notification if the bundled AVR core is newer than the one installed through Boards Manager (useful when upgrading the IDE) @@ -424,7 +673,7 @@ ARDUINO 1.6.4 - 2015.05.06 ARDUINO 1.6.3 - 2015.04.02 [ide] -* Fixed an ArchiveExtractor issue when dealing with native stuff, affecting some linuxes +* Fixed an ArchiveExtractor issue when dealing with native stuff, affecting some Linuxes * MacOSX: MACOSX_BUNDLED_JVM property is automatically set to JAVA_HOME if not provided * New splashscreen image * New editor theme @@ -496,7 +745,7 @@ ARDUINO 1.6.0rc3 - 2015.02.03 ARDUINO 1.6.0rc2 - 2015.01.20 [ide] -* Reenabled speed of 38400 on serial monitor +* Re-enabled speed of 38400 on serial monitor * Improved Find/Replace dialog layout (Eberhard Fahle) * Fixed missing .dll error on some Windows box @@ -528,7 +777,7 @@ ARDUINO 1.6.0rc1 - 2014.12.11 * Sketch build process: core.a rebuild only if needed (Matthijs Kooijman) * Updated AStyle formatter to v2.05: http://astyle.sourceforge.net/notes.html * Improved avrdude verbose upload (Matthijs Kooijman) -* (Mac OSX) Add Exported UTI for ino files, allows quick look to view the +* (MacOSX) Add Exported UTI for ino files, allows quick look to view the content of the file and external editors to syntax highlight as C++ (Matt Lloyd) [core] @@ -543,7 +792,7 @@ ARDUINO 1.6.0rc1 - 2014.12.11 The following changes are included also in the Arduino IDE 1.0.7: [libraries] -* EthernetClien: use IANA recommended ephemeral port range, 49152-65535 (Jack Christensen, cifer-lee) +* EthernetClient: use IANA recommended ephemeral port range, 49152-65535 (Jack Christensen, cifer-lee) [core] * Fixed regression in HardwareSerial::available() introduced with https://github.com/arduino/Arduino/pull/2057 @@ -575,7 +824,7 @@ ARDUINO 1.5.8 BETA - 2014.10.01 The following changes are included also in the Arduino IDE 1.0.6: [core] -* avr: Added replacement stub for cstdlib atexit() funciton (Christopher Andrews) +* avr: Added replacement stub for cstdlib atexit() function (Christopher Andrews) ARDUINO 1.5.7 BETA - 2014.07.07 @@ -639,7 +888,7 @@ The following changes are included also in the Arduino IDE 1.0.6: * SoftwareSerial: Fix idle level when initializing with inverted logic (Jens-Christian Skibakk) [firmware] -* Wifishield: fixed paths on firmware upgrade scripts +* WiFishield: fixed paths on firmware upgrade scripts ARDUINO 1.5.6-r2 BETA - 2014.02.21 @@ -653,7 +902,7 @@ ARDUINO 1.5.6 BETA - 2014.02.20 (https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification) * Replaced RXTX library with JSSC (Alexey Sokolov) http://code.google.com/p/java-simple-serial-connector/ -* If two libraries provides the same .h file prioritize the library with tha same folder name +* If two libraries provides the same .h file prioritize the library with the same folder name * Improved command-line parsing (Matthijs Kooijman) * Windows: added arduino_debug.exe to help debugging errors when launch4j fails to start IDE @@ -722,7 +971,7 @@ We suggest to delay the adoption of the new format until a stable 1.5.x is relea * Added "Using library..." debugging message in verbose compile. * Improved preprocessor (fixes #1653, #1687, #817, #1293, #1245) * Fixed StringStartsWithEndsWith, KeyboardMessage, LCD CustomCharacter, Blink without delay, SD List files, Arduino Robot examples -* Added PID/VID for older Arduinos +* Added VID/PID for older Arduinos * (mac) Improved board autodetection on Mac OS X [libraries] @@ -761,7 +1010,7 @@ ARDUINO 1.5.4 BETA - 2013.09.10 * added libraries for Arduino Yún [core] -* avr: fixed bug introduced with recent optimizations in HardwareSerial (atmega8 cpu) (darryl) +* avr: fixed bug introduced with recent optimizations in HardwareSerial (atmega8 CPU) (darryl) ARDUINO 1.5.3 BETA - 2013.08.30 @@ -792,7 +1041,7 @@ ARDUINO 1.5.3 BETA - 2013.08.30 * sam: Removed CAN library, you can find an updated version here: https://github.com/collin80/due_can * sam: Bugfix SPI library: begin() after end() now works (stimmer) -* sam: Bugfix SPI library: incorrent pin configuration in non-extended mode. +* sam: Bugfix SPI library: incorrect pin configuration in non-extended mode. * Ported all libraries to new 1.5 format * Updated Firmata to version 2.3.6 (Jeff Hoefs) @@ -808,7 +1057,7 @@ ARDUINO 1.5.2 BETA - 2013.02.06 * Scrollable editor tabs (Shigheru KANEMOTO) * Scrollable menus * Portable Arduino (Shigeru KANEMOTO) -* Default sketchbook folder for linux is now "Arduino" +* Default sketchbook folder for Linux is now "Arduino" * Fixed IDE startup bug "Menu has no enabled items" * Command line build. * Fixed some language strings (Shigeru KANEMOTO) @@ -825,7 +1074,7 @@ ARDUINO 1.5.2 BETA - 2013.02.06 * sam: fixed issue on weak-symbol for some interrupt handlers * sam: fixed BSoD on some Windows machine (louismdavis) * sam: added CANRX1/CANTX1 pins 88/89 (same physical pin for 66/53) -* sam: fixed analogWrite when used in very thight write loops (V.Dorrich) +* sam: fixed analogWrite when used in very tight write loops (V.Dorrich) * sam: fixed SerialUSB.write() while sending big buffers (Bill Dreschel) * sam: SerialUSB receive buffer size is now 512 (PeterVH) * sam: Fixed SerialUSB data handshake when host sends a lot of data (PeterVH, stimmer) @@ -849,7 +1098,7 @@ ARDUINO 1.5.1 BETA - 2012.11.05 [arduino core] * added support for yield() function in Arduino Core. This is a - preliminar step for experimenting with cooperative Schedulers. + preliminary step for experimenting with cooperative Schedulers. [ide] * Simplified boards menu selection. (new boards.txt file format with @@ -902,7 +1151,7 @@ ARDUINO 1.0.6 - 2014.09.16 * avr: Improved USB-CDC write speed (Justin Rajewski) * avr: Improved USB-CDC read code (Paul Brook) * avr: Fixed race condition in USB-CDC transmit (Paul Brook) -* avr: Added replacement stub for cstdlib atexit() funciton (Christopher Andrews) +* avr: Added replacement stub for cstdlib atexit() function (Christopher Andrews) * Fixed wrong NULL pointer handling in Stream class (Amulya Kumar Sahoo) * Backported String class from IDE 1.5.x (Matt Jenkins) * Backported Print class from IDE 1.5.x @@ -924,7 +1173,7 @@ ARDUINO 1.0.6 - 2014.09.16 * fixed a bunch of examples [firmware] -* Wifishield: fixed paths on firmware upgrade scripts +* WiFishield: fixed paths on firmware upgrade scripts ARDUINO 1.0.5-r2 - 2014.01.08 @@ -1004,7 +1253,7 @@ ARDUINO 1.0.3 - 2012.12.10 * Fixed digital_pin_to_timer_PGM array in Leonardo variant. -* Published updated Wifi firmware +* Published updated WiFi firmware * Updated source code for atmega8 bootloader @@ -1054,7 +1303,7 @@ ARDUINO 1.0.2 - 2012.11.05 [core / libraries] -* Included WiFi library and wifi shield firmware. +* Included WiFi library and WiFi shield firmware. * Added ability to specify serial configuration (data bits, stop bits and parity check) in Serial.begin(). (Alarus) @@ -1188,7 +1437,7 @@ ARDUINO 1.0.1 - 2012.05.21 http://code.google.com/p/arduino/issues/detail?id=768 * Added INPUT_PULLUP option for pinMode(). The INPUT mode now explicitly - disables the pullup resistors. (Paul Stoffregen) + disables the pull-up resistors. (Paul Stoffregen) http://code.google.com/p/arduino/issues/detail?id=246 * Fixing bug in the receiving of multiple UDP packets. (dylan and peter) @@ -1425,7 +1674,7 @@ ARDUINO 0022 - 2010.12.24 ARDUINO 0021 - 2010.10.02 -* Modifying VID / PID combination in 8U2 firmwares. +* Modifying VID/PID combination in 8U2 firmwares. * Fixing analogWrite() bug on pins 9 and 10 (Arduino Uno). * Patched RXTX to include /dev/ttyACM* on Linux. @@ -1753,7 +2002,7 @@ ARDUINO 0008 - 2007.06.09 * Lots of reference additions and fixes from Paul Badger. * Changed default microcontroller to ATmega168 from ATmega8. * Removed the delay from analogRead(). -* Activating TWI/I2C pullup resistors on the ATmega168 (in addition to the +* Activating TWI/I2C pull-up resistors on the ATmega168 (in addition to the ATmega8). ARDUINO 0007 - 2006.12.25 @@ -1779,7 +2028,7 @@ ARDUINO 0007 - 2006.12.25 ARDUINO 0006 - 2006.10.21 * Mac version no longer requires Java 1.5, meaning it should run on 10.3.9. -* Added support for analog inputs 6 and 7 and pwm on pins 5 and 6 on the +* Added support for analog inputs 6 and 7 and PWM on pins 5 and 6 on the on the ATmega168 used in the Arduino Mini (extra analog inputs not available in DIP ATmega168s). * You now select the baud rate for the serial monitor from within the editor @@ -1798,7 +2047,7 @@ ARDUINO 0005 - 2006.09.26 * New Wiring-compatible randomSeed(), random(max) and random(min, max) functions (except operating on longs instead of floats). * Fixed bug that sometimes caused uploading of old versions of a sketch. -* Serial monitor nows include an interface to send messages to the Arduino +* Serial monitor now includes an interface to send messages to the Arduino board. Pressing return appends a newline, pushing the send button doesn't. * Now displaying "burning bootloader..." and "compiling..." status messages. diff --git a/build/shared/tools/Mangler/src/Mangler.java b/build/shared/tools/Mangler/src/Mangler.java index cfd52795498..e30250f1030 100644 --- a/build/shared/tools/Mangler/src/Mangler.java +++ b/build/shared/tools/Mangler/src/Mangler.java @@ -32,6 +32,7 @@ import processing.app.tools.Tool; + /** * Example Tools menu entry. */ @@ -69,8 +70,9 @@ public void run() { protected void mangleSelection() { - if (editor.isSelectionActive()) { - String selection = editor.getSelectedText(); + //Check if there is selected text + if (editor.getCurrentTab().getSelectedText() != null) { + String selection = editor.getCurrentTab().getSelectedText(); char[] stuff = selection.toCharArray(); // Randomly swap a bunch of characters in the text for (int i = 0; i < stuff.length / 10; i++) { @@ -82,13 +84,12 @@ protected void mangleSelection() { stuff[a] = selection.charAt(b); stuff[b] = selection.charAt(a); } - editor.startCompoundEdit(); - editor.setSelectedText(new String(stuff)); - editor.stopCompoundEdit(); + editor.getCurrentTab().setSelectedText(new String(stuff)); editor.statusNotice("Now that feels better, doesn't it?"); } else { - editor.statusError("No selection, no dice."); + //When there is no selected text + editor.statusError("No selection, no dice."); } } } diff --git a/build/windows/arduinoOTA-1.3.0-windows_386.zip.sha b/build/windows/arduinoOTA-1.3.0-windows_386.zip.sha new file mode 100644 index 00000000000..c2ee71136ea --- /dev/null +++ b/build/windows/arduinoOTA-1.3.0-windows_386.zip.sha @@ -0,0 +1 @@ +7044265e8ebf00ad55655e4b0eb0d2c3330e9391 diff --git a/build/windows/avr-gcc-7.3.0-atmel3.6.1-arduino7-i686-w64-mingw32.zip.sha b/build/windows/avr-gcc-7.3.0-atmel3.6.1-arduino7-i686-w64-mingw32.zip.sha new file mode 100644 index 00000000000..9458653117f --- /dev/null +++ b/build/windows/avr-gcc-7.3.0-atmel3.6.1-arduino7-i686-w64-mingw32.zip.sha @@ -0,0 +1 @@ +a01daee121f7f40ecfcd629536738616bb8a7fbf diff --git a/build/windows/avrdude-6.3.0-arduino17-i686-w64-mingw32.zip.sha b/build/windows/avrdude-6.3.0-arduino17-i686-w64-mingw32.zip.sha new file mode 100644 index 00000000000..19f0fefa34c --- /dev/null +++ b/build/windows/avrdude-6.3.0-arduino17-i686-w64-mingw32.zip.sha @@ -0,0 +1 @@ +e3209cba2453fbf76e1ef0a478dec4010cf1ef8e diff --git a/build/windows/dist/.gitattributes b/build/windows/dist/.gitattributes new file mode 100644 index 00000000000..4fd0e3beab6 --- /dev/null +++ b/build/windows/dist/.gitattributes @@ -0,0 +1 @@ +drivers/** binary diff --git a/build/windows/dist/drivers/FTDI USB Drivers/LogoVerificationReport.pdf b/build/windows/dist/drivers/FTDI USB Drivers/LogoVerificationReport.pdf deleted file mode 100644 index c20940a609d..00000000000 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/LogoVerificationReport.pdf and /dev/null differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/Static/amd64/ftd2xx.lib b/build/windows/dist/drivers/FTDI USB Drivers/Static/amd64/ftd2xx.lib index d7a7b14f4f4..ab5e8127362 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/Static/amd64/ftd2xx.lib and b/build/windows/dist/drivers/FTDI USB Drivers/Static/amd64/ftd2xx.lib differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/Static/i386/ftd2xx.lib b/build/windows/dist/drivers/FTDI USB Drivers/Static/i386/ftd2xx.lib index 454de03e943..eb54e52026f 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/Static/i386/ftd2xx.lib and b/build/windows/dist/drivers/FTDI USB Drivers/Static/i386/ftd2xx.lib differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftbusui.dll b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftbusui.dll index ce8362eac08..cab5e6bed20 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftbusui.dll and b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftbusui.dll differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftcserco.dll b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftcserco.dll index 18c231ba9f6..ad02c2dedd1 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftcserco.dll and b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftcserco.dll differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftd2xx.lib b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftd2xx.lib index 96b42848a54..7b28fab0dbe 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftd2xx.lib and b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftd2xx.lib differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftd2xx64.dll b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftd2xx64.dll index 2c2602c1d30..bd6246a50c0 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftd2xx64.dll and b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftd2xx64.dll differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftdibus.sys b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftdibus.sys index 1aa826c3090..d803f07b2d9 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftdibus.sys and b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftdibus.sys differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftlang.dll b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftlang.dll index 45be20f7ff3..23987a6b503 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftlang.dll and b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftlang.dll differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftser2k.sys b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftser2k.sys index d8bcf2fb7d2..f146245c240 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftser2k.sys and b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftser2k.sys differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftserui2.dll b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftserui2.dll index d5a727a23e6..e1708b220af 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftserui2.dll and b/build/windows/dist/drivers/FTDI USB Drivers/amd64/ftserui2.dll differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/ftd2xx.h b/build/windows/dist/drivers/FTDI USB Drivers/ftd2xx.h index 65701b54831..3225268590c 100644 --- a/build/windows/dist/drivers/FTDI USB Drivers/ftd2xx.h +++ b/build/windows/dist/drivers/FTDI USB Drivers/ftd2xx.h @@ -1,1067 +1,1667 @@ -/*++ - -Copyright � 2001-2011 Future Technology Devices International Limited - -THIS SOFTWARE IS PROVIDED BY FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT -OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE, DATA, OR PROFITS OR BUSINESS INTERRUPTION) -HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR -TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -FTDI DRIVERS MAY BE USED ONLY IN CONJUNCTION WITH PRODUCTS BASED ON FTDI PARTS. - -FTDI DRIVERS MAY BE DISTRIBUTED IN ANY FORM AS LONG AS LICENSE INFORMATION IS NOT MODIFIED. - -IF A CUSTOM VENDOR ID AND/OR PRODUCT ID OR DESCRIPTION STRING ARE USED, IT IS THE -RESPONSIBILITY OF THE PRODUCT MANUFACTURER TO MAINTAIN ANY CHANGES AND SUBSEQUENT WHQL -RE-CERTIFICATION AS A RESULT OF MAKING THESE CHANGES. - - -Module Name: - -ftd2xx.h - -Abstract: - -Native USB device driver for FTDI FT232x, FT245x, FT2232x and FT4232x devices -FTD2XX library definitions - -Environment: - -kernel & user mode - - ---*/ - - -#ifndef FTD2XX_H -#define FTD2XX_H - -// The following ifdef block is the standard way of creating macros -// which make exporting from a DLL simpler. All files within this DLL -// are compiled with the FTD2XX_EXPORTS symbol defined on the command line. -// This symbol should not be defined on any project that uses this DLL. -// This way any other project whose source files include this file see -// FTD2XX_API functions as being imported from a DLL, whereas this DLL -// sees symbols defined with this macro as being exported. - -#ifdef FTD2XX_EXPORTS -#define FTD2XX_API __declspec(dllexport) -#else -#define FTD2XX_API __declspec(dllimport) -#endif - - -typedef PVOID FT_HANDLE; -typedef ULONG FT_STATUS; - -// -// Device status -// -enum { - FT_OK, - FT_INVALID_HANDLE, - FT_DEVICE_NOT_FOUND, - FT_DEVICE_NOT_OPENED, - FT_IO_ERROR, - FT_INSUFFICIENT_RESOURCES, - FT_INVALID_PARAMETER, - FT_INVALID_BAUD_RATE, - - FT_DEVICE_NOT_OPENED_FOR_ERASE, - FT_DEVICE_NOT_OPENED_FOR_WRITE, - FT_FAILED_TO_WRITE_DEVICE, - FT_EEPROM_READ_FAILED, - FT_EEPROM_WRITE_FAILED, - FT_EEPROM_ERASE_FAILED, - FT_EEPROM_NOT_PRESENT, - FT_EEPROM_NOT_PROGRAMMED, - FT_INVALID_ARGS, - FT_NOT_SUPPORTED, - FT_OTHER_ERROR, - FT_DEVICE_LIST_NOT_READY, -}; - - -#define FT_SUCCESS(status) ((status) == FT_OK) - -// -// FT_OpenEx Flags -// - -#define FT_OPEN_BY_SERIAL_NUMBER 1 -#define FT_OPEN_BY_DESCRIPTION 2 -#define FT_OPEN_BY_LOCATION 4 - -// -// FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags -// - -#define FT_LIST_NUMBER_ONLY 0x80000000 -#define FT_LIST_BY_INDEX 0x40000000 -#define FT_LIST_ALL 0x20000000 - -#define FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL) - -// -// Baud Rates -// - -#define FT_BAUD_300 300 -#define FT_BAUD_600 600 -#define FT_BAUD_1200 1200 -#define FT_BAUD_2400 2400 -#define FT_BAUD_4800 4800 -#define FT_BAUD_9600 9600 -#define FT_BAUD_14400 14400 -#define FT_BAUD_19200 19200 -#define FT_BAUD_38400 38400 -#define FT_BAUD_57600 57600 -#define FT_BAUD_115200 115200 -#define FT_BAUD_230400 230400 -#define FT_BAUD_460800 460800 -#define FT_BAUD_921600 921600 - -// -// Word Lengths -// - -#define FT_BITS_8 (UCHAR) 8 -#define FT_BITS_7 (UCHAR) 7 - -// -// Stop Bits -// - -#define FT_STOP_BITS_1 (UCHAR) 0 -#define FT_STOP_BITS_2 (UCHAR) 2 - -// -// Parity -// - -#define FT_PARITY_NONE (UCHAR) 0 -#define FT_PARITY_ODD (UCHAR) 1 -#define FT_PARITY_EVEN (UCHAR) 2 -#define FT_PARITY_MARK (UCHAR) 3 -#define FT_PARITY_SPACE (UCHAR) 4 - -// -// Flow Control -// - -#define FT_FLOW_NONE 0x0000 -#define FT_FLOW_RTS_CTS 0x0100 -#define FT_FLOW_DTR_DSR 0x0200 -#define FT_FLOW_XON_XOFF 0x0400 - -// -// Purge rx and tx buffers -// -#define FT_PURGE_RX 1 -#define FT_PURGE_TX 2 - -// -// Events -// - -typedef void (*PFT_EVENT_HANDLER)(DWORD,DWORD); - -#define FT_EVENT_RXCHAR 1 -#define FT_EVENT_MODEM_STATUS 2 -#define FT_EVENT_LINE_STATUS 4 - -// -// Timeouts -// - -#define FT_DEFAULT_RX_TIMEOUT 300 -#define FT_DEFAULT_TX_TIMEOUT 300 - -// -// Device types -// - -typedef ULONG FT_DEVICE; - -enum { - FT_DEVICE_BM, - FT_DEVICE_AM, - FT_DEVICE_100AX, - FT_DEVICE_UNKNOWN, - FT_DEVICE_2232C, - FT_DEVICE_232R, - FT_DEVICE_2232H, - FT_DEVICE_4232H, - FT_DEVICE_232H -}; - -// -// Bit Modes -// - -#define FT_BITMODE_RESET 0x00 -#define FT_BITMODE_ASYNC_BITBANG 0x01 -#define FT_BITMODE_MPSSE 0x02 -#define FT_BITMODE_SYNC_BITBANG 0x04 -#define FT_BITMODE_MCU_HOST 0x08 -#define FT_BITMODE_FAST_SERIAL 0x10 -#define FT_BITMODE_CBUS_BITBANG 0x20 -#define FT_BITMODE_SYNC_FIFO 0x40 - -// -// FT232R CBUS Options EEPROM values -// - -#define FT_232R_CBUS_TXDEN 0x00 // Tx Data Enable -#define FT_232R_CBUS_PWRON 0x01 // Power On -#define FT_232R_CBUS_RXLED 0x02 // Rx LED -#define FT_232R_CBUS_TXLED 0x03 // Tx LED -#define FT_232R_CBUS_TXRXLED 0x04 // Tx and Rx LED -#define FT_232R_CBUS_SLEEP 0x05 // Sleep -#define FT_232R_CBUS_CLK48 0x06 // 48MHz clock -#define FT_232R_CBUS_CLK24 0x07 // 24MHz clock -#define FT_232R_CBUS_CLK12 0x08 // 12MHz clock -#define FT_232R_CBUS_CLK6 0x09 // 6MHz clock -#define FT_232R_CBUS_IOMODE 0x0A // IO Mode for CBUS bit-bang -#define FT_232R_CBUS_BITBANG_WR 0x0B // Bit-bang write strobe -#define FT_232R_CBUS_BITBANG_RD 0x0C // Bit-bang read strobe - -// -// FT232H CBUS Options EEPROM values -// - -#define FT_232H_CBUS_TRISTATE 0x00 // Tristate -#define FT_232H_CBUS_RXLED 0x01 // Rx LED -#define FT_232H_CBUS_TXLED 0x02 // Tx LED -#define FT_232H_CBUS_TXRXLED 0x03 // Tx and Rx LED -#define FT_232H_CBUS_PWREN 0x04 // Power Enable -#define FT_232H_CBUS_SLEEP 0x05 // Sleep -#define FT_232H_CBUS_DRIVE_0 0x06 // Drive pin to logic 0 -#define FT_232H_CBUS_DRIVE_1 0x07 // Drive pin to logic 1 -#define FT_232H_CBUS_IOMODE 0x08 // IO Mode for CBUS bit-bang -#define FT_232H_CBUS_TXDEN 0x09 // Tx Data Enable -#define FT_232H_CBUS_CLK30 0x0A // 30MHz clock -#define FT_232H_CBUS_CLK15 0x0B // 15MHz clock -#define FT_232H_CBUS_CLK7_5 0x0C // 7.5MHz clock - - -#ifdef __cplusplus -extern "C" { -#endif - - - FTD2XX_API - FT_STATUS WINAPI FT_Open( - int deviceNumber, - FT_HANDLE *pHandle - ); - - FTD2XX_API - FT_STATUS WINAPI FT_OpenEx( - PVOID pArg1, - DWORD Flags, - FT_HANDLE *pHandle - ); - - FTD2XX_API - FT_STATUS WINAPI FT_ListDevices( - PVOID pArg1, - PVOID pArg2, - DWORD Flags - ); - - FTD2XX_API - FT_STATUS WINAPI FT_Close( - FT_HANDLE ftHandle - ); - - FTD2XX_API - FT_STATUS WINAPI FT_Read( - FT_HANDLE ftHandle, - LPVOID lpBuffer, - DWORD dwBytesToRead, - LPDWORD lpBytesReturned - ); - - FTD2XX_API - FT_STATUS WINAPI FT_Write( - FT_HANDLE ftHandle, - LPVOID lpBuffer, - DWORD dwBytesToWrite, - LPDWORD lpBytesWritten - ); - - FTD2XX_API - FT_STATUS WINAPI FT_IoCtl( - FT_HANDLE ftHandle, - DWORD dwIoControlCode, - LPVOID lpInBuf, - DWORD nInBufSize, - LPVOID lpOutBuf, - DWORD nOutBufSize, - LPDWORD lpBytesReturned, - LPOVERLAPPED lpOverlapped - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetBaudRate( - FT_HANDLE ftHandle, - ULONG BaudRate - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetDivisor( - FT_HANDLE ftHandle, - USHORT Divisor - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetDataCharacteristics( - FT_HANDLE ftHandle, - UCHAR WordLength, - UCHAR StopBits, - UCHAR Parity - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetFlowControl( - FT_HANDLE ftHandle, - USHORT FlowControl, - UCHAR XonChar, - UCHAR XoffChar - ); - - FTD2XX_API - FT_STATUS WINAPI FT_ResetDevice( - FT_HANDLE ftHandle - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetDtr( - FT_HANDLE ftHandle - ); - - FTD2XX_API - FT_STATUS WINAPI FT_ClrDtr( - FT_HANDLE ftHandle - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetRts( - FT_HANDLE ftHandle - ); - - FTD2XX_API - FT_STATUS WINAPI FT_ClrRts( - FT_HANDLE ftHandle - ); - - FTD2XX_API - FT_STATUS WINAPI FT_GetModemStatus( - FT_HANDLE ftHandle, - ULONG *pModemStatus - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetChars( - FT_HANDLE ftHandle, - UCHAR EventChar, - UCHAR EventCharEnabled, - UCHAR ErrorChar, - UCHAR ErrorCharEnabled - ); - - FTD2XX_API - FT_STATUS WINAPI FT_Purge( - FT_HANDLE ftHandle, - ULONG Mask - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetTimeouts( - FT_HANDLE ftHandle, - ULONG ReadTimeout, - ULONG WriteTimeout - ); - - FTD2XX_API - FT_STATUS WINAPI FT_GetQueueStatus( - FT_HANDLE ftHandle, - DWORD *dwRxBytes - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetEventNotification( - FT_HANDLE ftHandle, - DWORD Mask, - PVOID Param - ); - - FTD2XX_API - FT_STATUS WINAPI FT_GetStatus( - FT_HANDLE ftHandle, - DWORD *dwRxBytes, - DWORD *dwTxBytes, - DWORD *dwEventDWord - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetBreakOn( - FT_HANDLE ftHandle - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetBreakOff( - FT_HANDLE ftHandle - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetWaitMask( - FT_HANDLE ftHandle, - DWORD Mask - ); - - FTD2XX_API - FT_STATUS WINAPI FT_WaitOnMask( - FT_HANDLE ftHandle, - DWORD *Mask - ); - - FTD2XX_API - FT_STATUS WINAPI FT_GetEventStatus( - FT_HANDLE ftHandle, - DWORD *dwEventDWord - ); - - FTD2XX_API - FT_STATUS WINAPI FT_ReadEE( - FT_HANDLE ftHandle, - DWORD dwWordOffset, - LPWORD lpwValue - ); - - FTD2XX_API - FT_STATUS WINAPI FT_WriteEE( - FT_HANDLE ftHandle, - DWORD dwWordOffset, - WORD wValue - ); - - FTD2XX_API - FT_STATUS WINAPI FT_EraseEE( - FT_HANDLE ftHandle - ); - - // - // structure to hold program data for FT_Program function - // - typedef struct ft_program_data { - - DWORD Signature1; // Header - must be 0x00000000 - DWORD Signature2; // Header - must be 0xffffffff - DWORD Version; // Header - FT_PROGRAM_DATA version - // 0 = original - // 1 = FT2232C extensions - // 2 = FT232R extensions - // 3 = FT2232H extensions - // 4 = FT4232H extensions - // 5 = FT232H extensions - - WORD VendorId; // 0x0403 - WORD ProductId; // 0x6001 - char *Manufacturer; // "FTDI" - char *ManufacturerId; // "FT" - char *Description; // "USB HS Serial Converter" - char *SerialNumber; // "FT000001" if fixed, or NULL - WORD MaxPower; // 0 < MaxPower <= 500 - WORD PnP; // 0 = disabled, 1 = enabled - WORD SelfPowered; // 0 = bus powered, 1 = self powered - WORD RemoteWakeup; // 0 = not capable, 1 = capable - // - // Rev4 (FT232B) extensions - // - UCHAR Rev4; // non-zero if Rev4 chip, zero otherwise - UCHAR IsoIn; // non-zero if in endpoint is isochronous - UCHAR IsoOut; // non-zero if out endpoint is isochronous - UCHAR PullDownEnable; // non-zero if pull down enabled - UCHAR SerNumEnable; // non-zero if serial number to be used - UCHAR USBVersionEnable; // non-zero if chip uses USBVersion - WORD USBVersion; // BCD (0x0200 => USB2) - // - // Rev 5 (FT2232) extensions - // - UCHAR Rev5; // non-zero if Rev5 chip, zero otherwise - UCHAR IsoInA; // non-zero if in endpoint is isochronous - UCHAR IsoInB; // non-zero if in endpoint is isochronous - UCHAR IsoOutA; // non-zero if out endpoint is isochronous - UCHAR IsoOutB; // non-zero if out endpoint is isochronous - UCHAR PullDownEnable5; // non-zero if pull down enabled - UCHAR SerNumEnable5; // non-zero if serial number to be used - UCHAR USBVersionEnable5; // non-zero if chip uses USBVersion - WORD USBVersion5; // BCD (0x0200 => USB2) - UCHAR AIsHighCurrent; // non-zero if interface is high current - UCHAR BIsHighCurrent; // non-zero if interface is high current - UCHAR IFAIsFifo; // non-zero if interface is 245 FIFO - UCHAR IFAIsFifoTar; // non-zero if interface is 245 FIFO CPU target - UCHAR IFAIsFastSer; // non-zero if interface is Fast serial - UCHAR AIsVCP; // non-zero if interface is to use VCP drivers - UCHAR IFBIsFifo; // non-zero if interface is 245 FIFO - UCHAR IFBIsFifoTar; // non-zero if interface is 245 FIFO CPU target - UCHAR IFBIsFastSer; // non-zero if interface is Fast serial - UCHAR BIsVCP; // non-zero if interface is to use VCP drivers - // - // Rev 6 (FT232R) extensions - // - UCHAR UseExtOsc; // Use External Oscillator - UCHAR HighDriveIOs; // High Drive I/Os - UCHAR EndpointSize; // Endpoint size - UCHAR PullDownEnableR; // non-zero if pull down enabled - UCHAR SerNumEnableR; // non-zero if serial number to be used - UCHAR InvertTXD; // non-zero if invert TXD - UCHAR InvertRXD; // non-zero if invert RXD - UCHAR InvertRTS; // non-zero if invert RTS - UCHAR InvertCTS; // non-zero if invert CTS - UCHAR InvertDTR; // non-zero if invert DTR - UCHAR InvertDSR; // non-zero if invert DSR - UCHAR InvertDCD; // non-zero if invert DCD - UCHAR InvertRI; // non-zero if invert RI - UCHAR Cbus0; // Cbus Mux control - UCHAR Cbus1; // Cbus Mux control - UCHAR Cbus2; // Cbus Mux control - UCHAR Cbus3; // Cbus Mux control - UCHAR Cbus4; // Cbus Mux control - UCHAR RIsD2XX; // non-zero if using D2XX driver - // - // Rev 7 (FT2232H) Extensions - // - UCHAR PullDownEnable7; // non-zero if pull down enabled - UCHAR SerNumEnable7; // non-zero if serial number to be used - UCHAR ALSlowSlew; // non-zero if AL pins have slow slew - UCHAR ALSchmittInput; // non-zero if AL pins are Schmitt input - UCHAR ALDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA - UCHAR AHSlowSlew; // non-zero if AH pins have slow slew - UCHAR AHSchmittInput; // non-zero if AH pins are Schmitt input - UCHAR AHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA - UCHAR BLSlowSlew; // non-zero if BL pins have slow slew - UCHAR BLSchmittInput; // non-zero if BL pins are Schmitt input - UCHAR BLDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA - UCHAR BHSlowSlew; // non-zero if BH pins have slow slew - UCHAR BHSchmittInput; // non-zero if BH pins are Schmitt input - UCHAR BHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA - UCHAR IFAIsFifo7; // non-zero if interface is 245 FIFO - UCHAR IFAIsFifoTar7; // non-zero if interface is 245 FIFO CPU target - UCHAR IFAIsFastSer7; // non-zero if interface is Fast serial - UCHAR AIsVCP7; // non-zero if interface is to use VCP drivers - UCHAR IFBIsFifo7; // non-zero if interface is 245 FIFO - UCHAR IFBIsFifoTar7; // non-zero if interface is 245 FIFO CPU target - UCHAR IFBIsFastSer7; // non-zero if interface is Fast serial - UCHAR BIsVCP7; // non-zero if interface is to use VCP drivers - UCHAR PowerSaveEnable; // non-zero if using BCBUS7 to save power for self-powered designs - // - // Rev 8 (FT4232H) Extensions - // - UCHAR PullDownEnable8; // non-zero if pull down enabled - UCHAR SerNumEnable8; // non-zero if serial number to be used - UCHAR ASlowSlew; // non-zero if AL pins have slow slew - UCHAR ASchmittInput; // non-zero if AL pins are Schmitt input - UCHAR ADriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA - UCHAR BSlowSlew; // non-zero if AH pins have slow slew - UCHAR BSchmittInput; // non-zero if AH pins are Schmitt input - UCHAR BDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA - UCHAR CSlowSlew; // non-zero if BL pins have slow slew - UCHAR CSchmittInput; // non-zero if BL pins are Schmitt input - UCHAR CDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA - UCHAR DSlowSlew; // non-zero if BH pins have slow slew - UCHAR DSchmittInput; // non-zero if BH pins are Schmitt input - UCHAR DDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA - UCHAR ARIIsTXDEN; // non-zero if port A uses RI as RS485 TXDEN - UCHAR BRIIsTXDEN; // non-zero if port B uses RI as RS485 TXDEN - UCHAR CRIIsTXDEN; // non-zero if port C uses RI as RS485 TXDEN - UCHAR DRIIsTXDEN; // non-zero if port D uses RI as RS485 TXDEN - UCHAR AIsVCP8; // non-zero if interface is to use VCP drivers - UCHAR BIsVCP8; // non-zero if interface is to use VCP drivers - UCHAR CIsVCP8; // non-zero if interface is to use VCP drivers - UCHAR DIsVCP8; // non-zero if interface is to use VCP drivers - // - // Rev 9 (FT232H) Extensions - // - UCHAR PullDownEnableH; // non-zero if pull down enabled - UCHAR SerNumEnableH; // non-zero if serial number to be used - UCHAR ACSlowSlewH; // non-zero if AC pins have slow slew - UCHAR ACSchmittInputH; // non-zero if AC pins are Schmitt input - UCHAR ACDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA - UCHAR ADSlowSlewH; // non-zero if AD pins have slow slew - UCHAR ADSchmittInputH; // non-zero if AD pins are Schmitt input - UCHAR ADDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA - UCHAR Cbus0H; // Cbus Mux control - UCHAR Cbus1H; // Cbus Mux control - UCHAR Cbus2H; // Cbus Mux control - UCHAR Cbus3H; // Cbus Mux control - UCHAR Cbus4H; // Cbus Mux control - UCHAR Cbus5H; // Cbus Mux control - UCHAR Cbus6H; // Cbus Mux control - UCHAR Cbus7H; // Cbus Mux control - UCHAR Cbus8H; // Cbus Mux control - UCHAR Cbus9H; // Cbus Mux control - UCHAR IsFifoH; // non-zero if interface is 245 FIFO - UCHAR IsFifoTarH; // non-zero if interface is 245 FIFO CPU target - UCHAR IsFastSerH; // non-zero if interface is Fast serial - UCHAR IsFT1248H; // non-zero if interface is FT1248 - UCHAR FT1248CpolH; // FT1248 clock polarity - clock idle high (1) or clock idle low (0) - UCHAR FT1248LsbH; // FT1248 data is LSB (1) or MSB (0) - UCHAR FT1248FlowControlH; // FT1248 flow control enable - UCHAR IsVCPH; // non-zero if interface is to use VCP drivers - UCHAR PowerSaveEnableH; // non-zero if using ACBUS7 to save power for self-powered designs - - } FT_PROGRAM_DATA, *PFT_PROGRAM_DATA; - - FTD2XX_API - FT_STATUS WINAPI FT_EE_Program( - FT_HANDLE ftHandle, - PFT_PROGRAM_DATA pData - ); - - FTD2XX_API - FT_STATUS WINAPI FT_EE_ProgramEx( - FT_HANDLE ftHandle, - PFT_PROGRAM_DATA pData, - char *Manufacturer, - char *ManufacturerId, - char *Description, - char *SerialNumber - ); - - FTD2XX_API - FT_STATUS WINAPI FT_EE_Read( - FT_HANDLE ftHandle, - PFT_PROGRAM_DATA pData - ); - - FTD2XX_API - FT_STATUS WINAPI FT_EE_ReadEx( - FT_HANDLE ftHandle, - PFT_PROGRAM_DATA pData, - char *Manufacturer, - char *ManufacturerId, - char *Description, - char *SerialNumber - ); - - FTD2XX_API - FT_STATUS WINAPI FT_EE_UASize( - FT_HANDLE ftHandle, - LPDWORD lpdwSize - ); - - FTD2XX_API - FT_STATUS WINAPI FT_EE_UAWrite( - FT_HANDLE ftHandle, - PUCHAR pucData, - DWORD dwDataLen - ); - - FTD2XX_API - FT_STATUS WINAPI FT_EE_UARead( - FT_HANDLE ftHandle, - PUCHAR pucData, - DWORD dwDataLen, - LPDWORD lpdwBytesRead - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetLatencyTimer( - FT_HANDLE ftHandle, - UCHAR ucLatency - ); - - FTD2XX_API - FT_STATUS WINAPI FT_GetLatencyTimer( - FT_HANDLE ftHandle, - PUCHAR pucLatency - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetBitMode( - FT_HANDLE ftHandle, - UCHAR ucMask, - UCHAR ucEnable - ); - - FTD2XX_API - FT_STATUS WINAPI FT_GetBitMode( - FT_HANDLE ftHandle, - PUCHAR pucMode - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetUSBParameters( - FT_HANDLE ftHandle, - ULONG ulInTransferSize, - ULONG ulOutTransferSize - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetDeadmanTimeout( - FT_HANDLE ftHandle, - ULONG ulDeadmanTimeout - ); - - FTD2XX_API - FT_STATUS WINAPI FT_GetDeviceInfo( - FT_HANDLE ftHandle, - FT_DEVICE *lpftDevice, - LPDWORD lpdwID, - PCHAR SerialNumber, - PCHAR Description, - LPVOID Dummy - ); - - FTD2XX_API - FT_STATUS WINAPI FT_StopInTask( - FT_HANDLE ftHandle - ); - - FTD2XX_API - FT_STATUS WINAPI FT_RestartInTask( - FT_HANDLE ftHandle - ); - - FTD2XX_API - FT_STATUS WINAPI FT_SetResetPipeRetryCount( - FT_HANDLE ftHandle, - DWORD dwCount - ); - - FTD2XX_API - FT_STATUS WINAPI FT_ResetPort( - FT_HANDLE ftHandle - ); - - FTD2XX_API - FT_STATUS WINAPI FT_CyclePort( - FT_HANDLE ftHandle - ); - - - // - // Win32-type functions - // - - FTD2XX_API - FT_HANDLE WINAPI FT_W32_CreateFile( - LPCTSTR lpszName, - DWORD dwAccess, - DWORD dwShareMode, - LPSECURITY_ATTRIBUTES lpSecurityAttributes, - DWORD dwCreate, - DWORD dwAttrsAndFlags, - HANDLE hTemplate - ); - - FTD2XX_API - BOOL WINAPI FT_W32_CloseHandle( - FT_HANDLE ftHandle - ); - - FTD2XX_API - BOOL WINAPI FT_W32_ReadFile( - FT_HANDLE ftHandle, - LPVOID lpBuffer, - DWORD nBufferSize, - LPDWORD lpBytesReturned, - LPOVERLAPPED lpOverlapped - ); - - FTD2XX_API - BOOL WINAPI FT_W32_WriteFile( - FT_HANDLE ftHandle, - LPVOID lpBuffer, - DWORD nBufferSize, - LPDWORD lpBytesWritten, - LPOVERLAPPED lpOverlapped - ); - - FTD2XX_API - DWORD WINAPI FT_W32_GetLastError( - FT_HANDLE ftHandle - ); - - FTD2XX_API - BOOL WINAPI FT_W32_GetOverlappedResult( - FT_HANDLE ftHandle, - LPOVERLAPPED lpOverlapped, - LPDWORD lpdwBytesTransferred, - BOOL bWait - ); - - FTD2XX_API - BOOL WINAPI FT_W32_CancelIo( - FT_HANDLE ftHandle - ); - - - // - // Win32 COMM API type functions - // - typedef struct _FTCOMSTAT { - DWORD fCtsHold : 1; - DWORD fDsrHold : 1; - DWORD fRlsdHold : 1; - DWORD fXoffHold : 1; - DWORD fXoffSent : 1; - DWORD fEof : 1; - DWORD fTxim : 1; - DWORD fReserved : 25; - DWORD cbInQue; - DWORD cbOutQue; - } FTCOMSTAT, *LPFTCOMSTAT; - - typedef struct _FTDCB { - DWORD DCBlength; /* sizeof(FTDCB) */ - DWORD BaudRate; /* Baudrate at which running */ - DWORD fBinary: 1; /* Binary Mode (skip EOF check) */ - DWORD fParity: 1; /* Enable parity checking */ - DWORD fOutxCtsFlow:1; /* CTS handshaking on output */ - DWORD fOutxDsrFlow:1; /* DSR handshaking on output */ - DWORD fDtrControl:2; /* DTR Flow control */ - DWORD fDsrSensitivity:1; /* DSR Sensitivity */ - DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */ - DWORD fOutX: 1; /* Enable output X-ON/X-OFF */ - DWORD fInX: 1; /* Enable input X-ON/X-OFF */ - DWORD fErrorChar: 1; /* Enable Err Replacement */ - DWORD fNull: 1; /* Enable Null stripping */ - DWORD fRtsControl:2; /* Rts Flow control */ - DWORD fAbortOnError:1; /* Abort all reads and writes on Error */ - DWORD fDummy2:17; /* Reserved */ - WORD wReserved; /* Not currently used */ - WORD XonLim; /* Transmit X-ON threshold */ - WORD XoffLim; /* Transmit X-OFF threshold */ - BYTE ByteSize; /* Number of bits/byte, 4-8 */ - BYTE Parity; /* 0-4=None,Odd,Even,Mark,Space */ - BYTE StopBits; /* 0,1,2 = 1, 1.5, 2 */ - char XonChar; /* Tx and Rx X-ON character */ - char XoffChar; /* Tx and Rx X-OFF character */ - char ErrorChar; /* Error replacement char */ - char EofChar; /* End of Input character */ - char EvtChar; /* Received Event character */ - WORD wReserved1; /* Fill for now. */ - } FTDCB, *LPFTDCB; - - typedef struct _FTTIMEOUTS { - DWORD ReadIntervalTimeout; /* Maximum time between read chars. */ - DWORD ReadTotalTimeoutMultiplier; /* Multiplier of characters. */ - DWORD ReadTotalTimeoutConstant; /* Constant in milliseconds. */ - DWORD WriteTotalTimeoutMultiplier; /* Multiplier of characters. */ - DWORD WriteTotalTimeoutConstant; /* Constant in milliseconds. */ - } FTTIMEOUTS,*LPFTTIMEOUTS; - - - FTD2XX_API - BOOL WINAPI FT_W32_ClearCommBreak( - FT_HANDLE ftHandle - ); - - FTD2XX_API - BOOL WINAPI FT_W32_ClearCommError( - FT_HANDLE ftHandle, - LPDWORD lpdwErrors, - LPFTCOMSTAT lpftComstat - ); - - FTD2XX_API - BOOL WINAPI FT_W32_EscapeCommFunction( - FT_HANDLE ftHandle, - DWORD dwFunc - ); - - FTD2XX_API - BOOL WINAPI FT_W32_GetCommModemStatus( - FT_HANDLE ftHandle, - LPDWORD lpdwModemStatus - ); - - FTD2XX_API - BOOL WINAPI FT_W32_GetCommState( - FT_HANDLE ftHandle, - LPFTDCB lpftDcb - ); - - FTD2XX_API - BOOL WINAPI FT_W32_GetCommTimeouts( - FT_HANDLE ftHandle, - FTTIMEOUTS *pTimeouts - ); - - FTD2XX_API - BOOL WINAPI FT_W32_PurgeComm( - FT_HANDLE ftHandle, - DWORD dwMask - ); - - FTD2XX_API - BOOL WINAPI FT_W32_SetCommBreak( - FT_HANDLE ftHandle - ); - - FTD2XX_API - BOOL WINAPI FT_W32_SetCommMask( - FT_HANDLE ftHandle, - ULONG ulEventMask - ); - - FTD2XX_API - BOOL WINAPI FT_W32_GetCommMask( - FT_HANDLE ftHandle, - LPDWORD lpdwEventMask - ); - - FTD2XX_API - BOOL WINAPI FT_W32_SetCommState( - FT_HANDLE ftHandle, - LPFTDCB lpftDcb - ); - - FTD2XX_API - BOOL WINAPI FT_W32_SetCommTimeouts( - FT_HANDLE ftHandle, - FTTIMEOUTS *pTimeouts - ); - - FTD2XX_API - BOOL WINAPI FT_W32_SetupComm( - FT_HANDLE ftHandle, - DWORD dwReadBufferSize, - DWORD dwWriteBufferSize - ); - - FTD2XX_API - BOOL WINAPI FT_W32_WaitCommEvent( - FT_HANDLE ftHandle, - PULONG pulEvent, - LPOVERLAPPED lpOverlapped - ); - - - // - // Device information - // - - typedef struct _ft_device_list_info_node { - ULONG Flags; - ULONG Type; - ULONG ID; - DWORD LocId; - char SerialNumber[16]; - char Description[64]; - FT_HANDLE ftHandle; - } FT_DEVICE_LIST_INFO_NODE; - - // Device information flags - enum { - FT_FLAGS_OPENED = 1, - FT_FLAGS_HISPEED = 2 - }; - - - FTD2XX_API - FT_STATUS WINAPI FT_CreateDeviceInfoList( - LPDWORD lpdwNumDevs - ); - - FTD2XX_API - FT_STATUS WINAPI FT_GetDeviceInfoList( - FT_DEVICE_LIST_INFO_NODE *pDest, - LPDWORD lpdwNumDevs - ); - - FTD2XX_API - FT_STATUS WINAPI FT_GetDeviceInfoDetail( - DWORD dwIndex, - LPDWORD lpdwFlags, - LPDWORD lpdwType, - LPDWORD lpdwID, - LPDWORD lpdwLocId, - LPVOID lpSerialNumber, - LPVOID lpDescription, - FT_HANDLE *pftHandle - ); - - - // - // Version information - // - - FTD2XX_API - FT_STATUS WINAPI FT_GetDriverVersion( - FT_HANDLE ftHandle, - LPDWORD lpdwVersion - ); - - FTD2XX_API - FT_STATUS WINAPI FT_GetLibraryVersion( - LPDWORD lpdwVersion - ); - - - FTD2XX_API - FT_STATUS WINAPI FT_Rescan( - void - ); - - FTD2XX_API - FT_STATUS WINAPI FT_Reload( - WORD wVid, - WORD wPid - ); - - FTD2XX_API - FT_STATUS WINAPI FT_GetComPortNumber( - FT_HANDLE ftHandle, - LPLONG lpdwComPortNumber - ); - - - // - // FT232H additional EEPROM functions - // - - FTD2XX_API - FT_STATUS WINAPI FT_EE_ReadConfig( - FT_HANDLE ftHandle, - UCHAR ucAddress, - PUCHAR pucValue - ); - - FTD2XX_API - FT_STATUS WINAPI FT_EE_WriteConfig( - FT_HANDLE ftHandle, - UCHAR ucAddress, - UCHAR ucValue - ); - - FTD2XX_API - FT_STATUS WINAPI FT_EE_ReadECC( - FT_HANDLE ftHandle, - UCHAR ucOption, - LPWORD lpwValue - ); - - FTD2XX_API - FT_STATUS WINAPI FT_GetQueueStatusEx( - FT_HANDLE ftHandle, - DWORD *dwRxBytes - ); - - -#ifdef __cplusplus -} -#endif - - -#endif /* FTD2XX_H */ - +/*++ + +Copyright � 2001-2021 Future Technology Devices International Limited + +THIS SOFTWARE IS PROVIDED BY FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE, DATA, OR PROFITS OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR +TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +FTDI DRIVERS MAY BE USED ONLY IN CONJUNCTION WITH PRODUCTS BASED ON FTDI PARTS. + +FTDI DRIVERS MAY BE DISTRIBUTED IN ANY FORM AS LONG AS LICENSE INFORMATION IS NOT MODIFIED. + +IF A CUSTOM VENDOR ID AND/OR PRODUCT ID OR DESCRIPTION STRING ARE USED, IT IS THE +RESPONSIBILITY OF THE PRODUCT MANUFACTURER TO MAINTAIN ANY CHANGES AND SUBSEQUENT WHQL +RE-CERTIFICATION AS A RESULT OF MAKING THESE CHANGES. + + +Module Name: + +ftd2xx.h + +Abstract: + +Native USB device driver for FTDI FT232x, FT245x, FT2232x, FT4232x, FT2233H and FT4233H devices +FTD2XX library definitions + +Environment: + +kernel & user mode + + +--*/ + + +#ifndef FTD2XX_H +#define FTD2XX_H + +#ifdef _WIN32 +// Compiling on Windows +#include + +// The following ifdef block is the standard way of creating macros +// which make exporting from a DLL simpler. All files within this DLL +// are compiled with the FTD2XX_EXPORTS symbol defined on the command line. +// This symbol should not be defined on any project that uses this DLL. +// This way any other project whose source files include this file see +// FTD2XX_API functions as being imported from a DLL, whereas this DLL +// sees symbols defined with this macro as being exported. + +#ifdef FTD2XX_EXPORTS +#define FTD2XX_API __declspec(dllexport) +#elif defined(FTD2XX_STATIC) +// Avoid decorations when linking statically to D2XX. +#define FTD2XX_API +// Static D2XX depends on these Windows libs: +#pragma comment(lib, "setupapi.lib") +#pragma comment(lib, "advapi32.lib") +#pragma comment(lib, "user32.lib") +#else +#define FTD2XX_API __declspec(dllimport) +#endif + +#else // _WIN32 +// Compiling on non-Windows platform. +#include "WinTypes.h" +// No decorations needed. +#define FTD2XX_API + +#endif // _WIN32 + +typedef PVOID FT_HANDLE; +typedef ULONG FT_STATUS; + +// +// Device status +// +enum { + FT_OK, + FT_INVALID_HANDLE, + FT_DEVICE_NOT_FOUND, + FT_DEVICE_NOT_OPENED, + FT_IO_ERROR, + FT_INSUFFICIENT_RESOURCES, + FT_INVALID_PARAMETER, + FT_INVALID_BAUD_RATE, + + FT_DEVICE_NOT_OPENED_FOR_ERASE, + FT_DEVICE_NOT_OPENED_FOR_WRITE, + FT_FAILED_TO_WRITE_DEVICE, + FT_EEPROM_READ_FAILED, + FT_EEPROM_WRITE_FAILED, + FT_EEPROM_ERASE_FAILED, + FT_EEPROM_NOT_PRESENT, + FT_EEPROM_NOT_PROGRAMMED, + FT_INVALID_ARGS, + FT_NOT_SUPPORTED, + FT_OTHER_ERROR, + FT_DEVICE_LIST_NOT_READY, +}; + + +#define FT_SUCCESS(status) ((status) == FT_OK) + +// +// FT_OpenEx Flags +// + +#define FT_OPEN_BY_SERIAL_NUMBER 1 +#define FT_OPEN_BY_DESCRIPTION 2 +#define FT_OPEN_BY_LOCATION 4 + +#define FT_OPEN_MASK (FT_OPEN_BY_SERIAL_NUMBER | \ + FT_OPEN_BY_DESCRIPTION | \ + FT_OPEN_BY_LOCATION) + +// +// FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags +// + +#define FT_LIST_NUMBER_ONLY 0x80000000 +#define FT_LIST_BY_INDEX 0x40000000 +#define FT_LIST_ALL 0x20000000 + +#define FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL) + +// +// Baud Rates +// + +#define FT_BAUD_300 300 +#define FT_BAUD_600 600 +#define FT_BAUD_1200 1200 +#define FT_BAUD_2400 2400 +#define FT_BAUD_4800 4800 +#define FT_BAUD_9600 9600 +#define FT_BAUD_14400 14400 +#define FT_BAUD_19200 19200 +#define FT_BAUD_38400 38400 +#define FT_BAUD_57600 57600 +#define FT_BAUD_115200 115200 +#define FT_BAUD_230400 230400 +#define FT_BAUD_460800 460800 +#define FT_BAUD_921600 921600 + +// +// Word Lengths +// + +#define FT_BITS_8 (UCHAR) 8 +#define FT_BITS_7 (UCHAR) 7 + +// +// Stop Bits +// + +#define FT_STOP_BITS_1 (UCHAR) 0 +#define FT_STOP_BITS_2 (UCHAR) 2 + +// +// Parity +// + +#define FT_PARITY_NONE (UCHAR) 0 +#define FT_PARITY_ODD (UCHAR) 1 +#define FT_PARITY_EVEN (UCHAR) 2 +#define FT_PARITY_MARK (UCHAR) 3 +#define FT_PARITY_SPACE (UCHAR) 4 + +// +// Flow Control +// + +#define FT_FLOW_NONE 0x0000 +#define FT_FLOW_RTS_CTS 0x0100 +#define FT_FLOW_DTR_DSR 0x0200 +#define FT_FLOW_XON_XOFF 0x0400 + +// +// Purge rx and tx buffers +// +#define FT_PURGE_RX 1 +#define FT_PURGE_TX 2 + +// +// Events +// + +typedef void(*PFT_EVENT_HANDLER)(DWORD, DWORD); + +#define FT_EVENT_RXCHAR 1 +#define FT_EVENT_MODEM_STATUS 2 +#define FT_EVENT_LINE_STATUS 4 + +// +// Timeouts +// + +#define FT_DEFAULT_RX_TIMEOUT 300 +#define FT_DEFAULT_TX_TIMEOUT 300 + +// +// Device types +// + +typedef ULONG FT_DEVICE; + +enum { + FT_DEVICE_BM, + FT_DEVICE_AM, + FT_DEVICE_100AX, + FT_DEVICE_UNKNOWN, + FT_DEVICE_2232C, + FT_DEVICE_232R, + FT_DEVICE_2232H, + FT_DEVICE_4232H, + FT_DEVICE_232H, + FT_DEVICE_X_SERIES, + FT_DEVICE_4222H_0, + FT_DEVICE_4222H_1_2, + FT_DEVICE_4222H_3, + FT_DEVICE_4222_PROG, + FT_DEVICE_900, + FT_DEVICE_930, + FT_DEVICE_UMFTPD3A, + FT_DEVICE_2233HP, + FT_DEVICE_4233HP, + FT_DEVICE_2232HP, + FT_DEVICE_4232HP, + FT_DEVICE_233HP, + FT_DEVICE_232HP, + FT_DEVICE_2232HA, + FT_DEVICE_4232HA, + FT_DEVICE_232RN, +}; + +// +// Bit Modes +// + +#define FT_BITMODE_RESET 0x00 +#define FT_BITMODE_ASYNC_BITBANG 0x01 +#define FT_BITMODE_MPSSE 0x02 +#define FT_BITMODE_SYNC_BITBANG 0x04 +#define FT_BITMODE_MCU_HOST 0x08 +#define FT_BITMODE_FAST_SERIAL 0x10 +#define FT_BITMODE_CBUS_BITBANG 0x20 +#define FT_BITMODE_SYNC_FIFO 0x40 + +// +// FT232R CBUS Options EEPROM values +// + +#define FT_232R_CBUS_TXDEN 0x00 // Tx Data Enable +#define FT_232R_CBUS_PWRON 0x01 // Power On +#define FT_232R_CBUS_RXLED 0x02 // Rx LED +#define FT_232R_CBUS_TXLED 0x03 // Tx LED +#define FT_232R_CBUS_TXRXLED 0x04 // Tx and Rx LED +#define FT_232R_CBUS_SLEEP 0x05 // Sleep +#define FT_232R_CBUS_CLK48 0x06 // 48MHz clock +#define FT_232R_CBUS_CLK24 0x07 // 24MHz clock +#define FT_232R_CBUS_CLK12 0x08 // 12MHz clock +#define FT_232R_CBUS_CLK6 0x09 // 6MHz clock +#define FT_232R_CBUS_IOMODE 0x0A // IO Mode for CBUS bit-bang +#define FT_232R_CBUS_BITBANG_WR 0x0B // Bit-bang write strobe +#define FT_232R_CBUS_BITBANG_RD 0x0C // Bit-bang read strobe + +// +// FT232H CBUS Options EEPROM values +// + +#define FT_232H_CBUS_TRISTATE 0x00 // Tristate +#define FT_232H_CBUS_TXLED 0x01 // Tx LED +#define FT_232H_CBUS_RXLED 0x02 // Rx LED +#define FT_232H_CBUS_TXRXLED 0x03 // Tx and Rx LED +#define FT_232H_CBUS_PWREN 0x04 // Power Enable +#define FT_232H_CBUS_SLEEP 0x05 // Sleep +#define FT_232H_CBUS_DRIVE_0 0x06 // Drive pin to logic 0 +#define FT_232H_CBUS_DRIVE_1 0x07 // Drive pin to logic 1 +#define FT_232H_CBUS_IOMODE 0x08 // IO Mode for CBUS bit-bang +#define FT_232H_CBUS_TXDEN 0x09 // Tx Data Enable +#define FT_232H_CBUS_CLK30 0x0A // 30MHz clock +#define FT_232H_CBUS_CLK15 0x0B // 15MHz clock +#define FT_232H_CBUS_CLK7_5 0x0C // 7.5MHz clock + +// +// FT X Series CBUS Options EEPROM values +// + +#define FT_X_SERIES_CBUS_TRISTATE 0x00 // Tristate +#define FT_X_SERIES_CBUS_TXLED 0x01 // Tx LED +#define FT_X_SERIES_CBUS_RXLED 0x02 // Rx LED +#define FT_X_SERIES_CBUS_TXRXLED 0x03 // Tx and Rx LED +#define FT_X_SERIES_CBUS_PWREN 0x04 // Power Enable +#define FT_X_SERIES_CBUS_SLEEP 0x05 // Sleep +#define FT_X_SERIES_CBUS_DRIVE_0 0x06 // Drive pin to logic 0 +#define FT_X_SERIES_CBUS_DRIVE_1 0x07 // Drive pin to logic 1 +#define FT_X_SERIES_CBUS_IOMODE 0x08 // IO Mode for CBUS bit-bang +#define FT_X_SERIES_CBUS_TXDEN 0x09 // Tx Data Enable +#define FT_X_SERIES_CBUS_CLK24 0x0A // 24MHz clock +#define FT_X_SERIES_CBUS_CLK12 0x0B // 12MHz clock +#define FT_X_SERIES_CBUS_CLK6 0x0C // 6MHz clock +#define FT_X_SERIES_CBUS_BCD_CHARGER 0x0D // Battery charger detected +#define FT_X_SERIES_CBUS_BCD_CHARGER_N 0x0E // Battery charger detected inverted +#define FT_X_SERIES_CBUS_I2C_TXE 0x0F // I2C Tx empty +#define FT_X_SERIES_CBUS_I2C_RXF 0x10 // I2C Rx full +#define FT_X_SERIES_CBUS_VBUS_SENSE 0x11 // Detect VBUS +#define FT_X_SERIES_CBUS_BITBANG_WR 0x12 // Bit-bang write strobe +#define FT_X_SERIES_CBUS_BITBANG_RD 0x13 // Bit-bang read strobe +#define FT_X_SERIES_CBUS_TIMESTAMP 0x14 // Toggle output when a USB SOF token is received +#define FT_X_SERIES_CBUS_KEEP_AWAKE 0x15 // + + +// Driver types +#define FT_DRIVER_TYPE_D2XX 0 +#define FT_DRIVER_TYPE_VCP 1 + + + +#ifdef __cplusplus +extern "C" { +#endif + + +#ifdef FTD2XX_STATIC + FTD2XX_API + FT_STATUS WINAPI FT_Initialise( + void + ); + + FTD2XX_API + void WINAPI FT_Finalise( + void + ); +#endif // FTD2XX_STATIC + + FTD2XX_API + FT_STATUS WINAPI FT_Open( + int deviceNumber, + FT_HANDLE *pHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_OpenEx( + PVOID pArg1, + DWORD Flags, + FT_HANDLE *pHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_ListDevices( + PVOID pArg1, + PVOID pArg2, + DWORD Flags + ); + + FTD2XX_API + FT_STATUS WINAPI FT_Close( + FT_HANDLE ftHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_Read( + FT_HANDLE ftHandle, + LPVOID lpBuffer, + DWORD dwBytesToRead, + LPDWORD lpBytesReturned + ); + + FTD2XX_API + FT_STATUS WINAPI FT_Write( + FT_HANDLE ftHandle, + LPVOID lpBuffer, + DWORD dwBytesToWrite, + LPDWORD lpBytesWritten + ); + + FTD2XX_API + FT_STATUS WINAPI FT_IoCtl( + FT_HANDLE ftHandle, + DWORD dwIoControlCode, + LPVOID lpInBuf, + DWORD nInBufSize, + LPVOID lpOutBuf, + DWORD nOutBufSize, + LPDWORD lpBytesReturned, + LPOVERLAPPED lpOverlapped + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetBaudRate( + FT_HANDLE ftHandle, + ULONG BaudRate + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetDivisor( + FT_HANDLE ftHandle, + USHORT Divisor + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetDataCharacteristics( + FT_HANDLE ftHandle, + UCHAR WordLength, + UCHAR StopBits, + UCHAR Parity + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetFlowControl( + FT_HANDLE ftHandle, + USHORT FlowControl, + UCHAR XonChar, + UCHAR XoffChar + ); + + FTD2XX_API + FT_STATUS WINAPI FT_ResetDevice( + FT_HANDLE ftHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetDtr( + FT_HANDLE ftHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_ClrDtr( + FT_HANDLE ftHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetRts( + FT_HANDLE ftHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_ClrRts( + FT_HANDLE ftHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_GetModemStatus( + FT_HANDLE ftHandle, + ULONG *pModemStatus + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetChars( + FT_HANDLE ftHandle, + UCHAR EventChar, + UCHAR EventCharEnabled, + UCHAR ErrorChar, + UCHAR ErrorCharEnabled + ); + + FTD2XX_API + FT_STATUS WINAPI FT_Purge( + FT_HANDLE ftHandle, + ULONG Mask + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetTimeouts( + FT_HANDLE ftHandle, + ULONG ReadTimeout, + ULONG WriteTimeout + ); + + FTD2XX_API + FT_STATUS WINAPI FT_GetQueueStatus( + FT_HANDLE ftHandle, + DWORD *dwRxBytes + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetEventNotification( + FT_HANDLE ftHandle, + DWORD Mask, + PVOID Param + ); + + FTD2XX_API + FT_STATUS WINAPI FT_GetStatus( + FT_HANDLE ftHandle, + DWORD *dwRxBytes, + DWORD *dwTxBytes, + DWORD *dwEventDWord + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetBreakOn( + FT_HANDLE ftHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetBreakOff( + FT_HANDLE ftHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetWaitMask( + FT_HANDLE ftHandle, + DWORD Mask + ); + + FTD2XX_API + FT_STATUS WINAPI FT_WaitOnMask( + FT_HANDLE ftHandle, + DWORD *Mask + ); + + FTD2XX_API + FT_STATUS WINAPI FT_GetEventStatus( + FT_HANDLE ftHandle, + DWORD *dwEventDWord + ); + + FTD2XX_API + FT_STATUS WINAPI FT_ReadEE( + FT_HANDLE ftHandle, + DWORD dwWordOffset, + LPWORD lpwValue + ); + + FTD2XX_API + FT_STATUS WINAPI FT_WriteEE( + FT_HANDLE ftHandle, + DWORD dwWordOffset, + WORD wValue + ); + + FTD2XX_API + FT_STATUS WINAPI FT_EraseEE( + FT_HANDLE ftHandle + ); + + // + // structure to hold program data for FT_EE_Program, FT_EE_ProgramEx, FT_EE_Read + // and FT_EE_ReadEx functions + // + typedef struct ft_program_data { + + DWORD Signature1; // Header - must be 0x00000000 + DWORD Signature2; // Header - must be 0xffffffff + DWORD Version; // Header - FT_PROGRAM_DATA version + // 0 = original + // 1 = FT2232 extensions + // 2 = FT232R extensions + // 3 = FT2232H extensions + // 4 = FT4232H extensions + // 5 = FT232H extensions + + WORD VendorId; // 0x0403 + WORD ProductId; // 0x6001 + char *Manufacturer; // "FTDI" + char *ManufacturerId; // "FT" + char *Description; // "USB HS Serial Converter" + char *SerialNumber; // "FT000001" if fixed, or NULL + WORD MaxPower; // 0 < MaxPower <= 500 + WORD PnP; // 0 = disabled, 1 = enabled + WORD SelfPowered; // 0 = bus powered, 1 = self powered + WORD RemoteWakeup; // 0 = not capable, 1 = capable + // + // Rev4 (FT232B) extensions + // + UCHAR Rev4; // non-zero if Rev4 chip, zero otherwise + UCHAR IsoIn; // non-zero if in endpoint is isochronous + UCHAR IsoOut; // non-zero if out endpoint is isochronous + UCHAR PullDownEnable; // non-zero if pull down enabled + UCHAR SerNumEnable; // non-zero if serial number to be used + UCHAR USBVersionEnable; // non-zero if chip uses USBVersion + WORD USBVersion; // BCD (0x0200 => USB2) + // + // Rev 5 (FT2232) extensions + // + UCHAR Rev5; // non-zero if Rev5 chip, zero otherwise + UCHAR IsoInA; // non-zero if in endpoint is isochronous + UCHAR IsoInB; // non-zero if in endpoint is isochronous + UCHAR IsoOutA; // non-zero if out endpoint is isochronous + UCHAR IsoOutB; // non-zero if out endpoint is isochronous + UCHAR PullDownEnable5; // non-zero if pull down enabled + UCHAR SerNumEnable5; // non-zero if serial number to be used + UCHAR USBVersionEnable5; // non-zero if chip uses USBVersion + WORD USBVersion5; // BCD (0x0200 => USB2) + UCHAR AIsHighCurrent; // non-zero if interface is high current + UCHAR BIsHighCurrent; // non-zero if interface is high current + UCHAR IFAIsFifo; // non-zero if interface is 245 FIFO + UCHAR IFAIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR IFAIsFastSer; // non-zero if interface is Fast serial + UCHAR AIsVCP; // non-zero if interface is to use VCP drivers + UCHAR IFBIsFifo; // non-zero if interface is 245 FIFO + UCHAR IFBIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR IFBIsFastSer; // non-zero if interface is Fast serial + UCHAR BIsVCP; // non-zero if interface is to use VCP drivers + // + // Rev 6 (FT232R) extensions + // + UCHAR UseExtOsc; // Use External Oscillator + UCHAR HighDriveIOs; // High Drive I/Os + UCHAR EndpointSize; // Endpoint size + UCHAR PullDownEnableR; // non-zero if pull down enabled + UCHAR SerNumEnableR; // non-zero if serial number to be used + UCHAR InvertTXD; // non-zero if invert TXD + UCHAR InvertRXD; // non-zero if invert RXD + UCHAR InvertRTS; // non-zero if invert RTS + UCHAR InvertCTS; // non-zero if invert CTS + UCHAR InvertDTR; // non-zero if invert DTR + UCHAR InvertDSR; // non-zero if invert DSR + UCHAR InvertDCD; // non-zero if invert DCD + UCHAR InvertRI; // non-zero if invert RI + UCHAR Cbus0; // Cbus Mux control + UCHAR Cbus1; // Cbus Mux control + UCHAR Cbus2; // Cbus Mux control + UCHAR Cbus3; // Cbus Mux control + UCHAR Cbus4; // Cbus Mux control + UCHAR RIsD2XX; // non-zero if using D2XX driver + // + // Rev 7 (FT2232H) Extensions + // + UCHAR PullDownEnable7; // non-zero if pull down enabled + UCHAR SerNumEnable7; // non-zero if serial number to be used + UCHAR ALSlowSlew; // non-zero if AL pins have slow slew + UCHAR ALSchmittInput; // non-zero if AL pins are Schmitt input + UCHAR ALDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR AHSlowSlew; // non-zero if AH pins have slow slew + UCHAR AHSchmittInput; // non-zero if AH pins are Schmitt input + UCHAR AHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR BLSlowSlew; // non-zero if BL pins have slow slew + UCHAR BLSchmittInput; // non-zero if BL pins are Schmitt input + UCHAR BLDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR BHSlowSlew; // non-zero if BH pins have slow slew + UCHAR BHSchmittInput; // non-zero if BH pins are Schmitt input + UCHAR BHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR IFAIsFifo7; // non-zero if interface is 245 FIFO + UCHAR IFAIsFifoTar7; // non-zero if interface is 245 FIFO CPU target + UCHAR IFAIsFastSer7; // non-zero if interface is Fast serial + UCHAR AIsVCP7; // non-zero if interface is to use VCP drivers + UCHAR IFBIsFifo7; // non-zero if interface is 245 FIFO + UCHAR IFBIsFifoTar7; // non-zero if interface is 245 FIFO CPU target + UCHAR IFBIsFastSer7; // non-zero if interface is Fast serial + UCHAR BIsVCP7; // non-zero if interface is to use VCP drivers + UCHAR PowerSaveEnable; // non-zero if using BCBUS7 to save power for self-powered designs + // + // Rev 8 (FT4232H) Extensions + // + UCHAR PullDownEnable8; // non-zero if pull down enabled + UCHAR SerNumEnable8; // non-zero if serial number to be used + UCHAR ASlowSlew; // non-zero if A pins have slow slew + UCHAR ASchmittInput; // non-zero if A pins are Schmitt input + UCHAR ADriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR BSlowSlew; // non-zero if B pins have slow slew + UCHAR BSchmittInput; // non-zero if B pins are Schmitt input + UCHAR BDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR CSlowSlew; // non-zero if C pins have slow slew + UCHAR CSchmittInput; // non-zero if C pins are Schmitt input + UCHAR CDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR DSlowSlew; // non-zero if D pins have slow slew + UCHAR DSchmittInput; // non-zero if D pins are Schmitt input + UCHAR DDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR ARIIsTXDEN; // non-zero if port A uses RI as RS485 TXDEN + UCHAR BRIIsTXDEN; // non-zero if port B uses RI as RS485 TXDEN + UCHAR CRIIsTXDEN; // non-zero if port C uses RI as RS485 TXDEN + UCHAR DRIIsTXDEN; // non-zero if port D uses RI as RS485 TXDEN + UCHAR AIsVCP8; // non-zero if interface is to use VCP drivers + UCHAR BIsVCP8; // non-zero if interface is to use VCP drivers + UCHAR CIsVCP8; // non-zero if interface is to use VCP drivers + UCHAR DIsVCP8; // non-zero if interface is to use VCP drivers + // + // Rev 9 (FT232H) Extensions + // + UCHAR PullDownEnableH; // non-zero if pull down enabled + UCHAR SerNumEnableH; // non-zero if serial number to be used + UCHAR ACSlowSlewH; // non-zero if AC pins have slow slew + UCHAR ACSchmittInputH; // non-zero if AC pins are Schmitt input + UCHAR ACDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR ADSlowSlewH; // non-zero if AD pins have slow slew + UCHAR ADSchmittInputH; // non-zero if AD pins are Schmitt input + UCHAR ADDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR Cbus0H; // Cbus Mux control + UCHAR Cbus1H; // Cbus Mux control + UCHAR Cbus2H; // Cbus Mux control + UCHAR Cbus3H; // Cbus Mux control + UCHAR Cbus4H; // Cbus Mux control + UCHAR Cbus5H; // Cbus Mux control + UCHAR Cbus6H; // Cbus Mux control + UCHAR Cbus7H; // Cbus Mux control + UCHAR Cbus8H; // Cbus Mux control + UCHAR Cbus9H; // Cbus Mux control + UCHAR IsFifoH; // non-zero if interface is 245 FIFO + UCHAR IsFifoTarH; // non-zero if interface is 245 FIFO CPU target + UCHAR IsFastSerH; // non-zero if interface is Fast serial + UCHAR IsFT1248H; // non-zero if interface is FT1248 + UCHAR FT1248CpolH; // FT1248 clock polarity - clock idle high (1) or clock idle low (0) + UCHAR FT1248LsbH; // FT1248 data is LSB (1) or MSB (0) + UCHAR FT1248FlowControlH; // FT1248 flow control enable + UCHAR IsVCPH; // non-zero if interface is to use VCP drivers + UCHAR PowerSaveEnableH; // non-zero if using ACBUS7 to save power for self-powered designs + + } FT_PROGRAM_DATA, *PFT_PROGRAM_DATA; + + FTD2XX_API + FT_STATUS WINAPI FT_EE_Program( + FT_HANDLE ftHandle, + PFT_PROGRAM_DATA pData + ); + + FTD2XX_API + FT_STATUS WINAPI FT_EE_ProgramEx( + FT_HANDLE ftHandle, + PFT_PROGRAM_DATA pData, + char *Manufacturer, + char *ManufacturerId, + char *Description, + char *SerialNumber + ); + + FTD2XX_API + FT_STATUS WINAPI FT_EE_Read( + FT_HANDLE ftHandle, + PFT_PROGRAM_DATA pData + ); + + FTD2XX_API + FT_STATUS WINAPI FT_EE_ReadEx( + FT_HANDLE ftHandle, + PFT_PROGRAM_DATA pData, + char *Manufacturer, + char *ManufacturerId, + char *Description, + char *SerialNumber + ); + + FTD2XX_API + FT_STATUS WINAPI FT_EE_UASize( + FT_HANDLE ftHandle, + LPDWORD lpdwSize + ); + + FTD2XX_API + FT_STATUS WINAPI FT_EE_UAWrite( + FT_HANDLE ftHandle, + PUCHAR pucData, + DWORD dwDataLen + ); + + FTD2XX_API + FT_STATUS WINAPI FT_EE_UARead( + FT_HANDLE ftHandle, + PUCHAR pucData, + DWORD dwDataLen, + LPDWORD lpdwBytesRead + ); + + + typedef struct ft_eeprom_header { + FT_DEVICE deviceType; // FTxxxx device type to be programmed + // Device descriptor options + WORD VendorId; // 0x0403 + WORD ProductId; // 0x6001 + UCHAR SerNumEnable; // non-zero if serial number to be used + // Config descriptor options + WORD MaxPower; // 0 < MaxPower <= 500 + UCHAR SelfPowered; // 0 = bus powered, 1 = self powered + UCHAR RemoteWakeup; // 0 = not capable, 1 = capable + // Hardware options + UCHAR PullDownEnable; // non-zero if pull down in suspend enabled + } FT_EEPROM_HEADER, *PFT_EEPROM_HEADER; + + + // FT232B EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + typedef struct ft_eeprom_232b { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + } FT_EEPROM_232B, *PFT_EEPROM_232B; + + + // FT2232 EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + typedef struct ft_eeprom_2232 { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + // Drive options + UCHAR AIsHighCurrent; // non-zero if interface is high current + UCHAR BIsHighCurrent; // non-zero if interface is high current + // Hardware options + UCHAR AIsFifo; // non-zero if interface is 245 FIFO + UCHAR AIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR AIsFastSer; // non-zero if interface is Fast serial + UCHAR BIsFifo; // non-zero if interface is 245 FIFO + UCHAR BIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR BIsFastSer; // non-zero if interface is Fast serial + // Driver option + UCHAR ADriverType; // non-zero if interface is to use VCP drivers + UCHAR BDriverType; // non-zero if interface is to use VCP drivers + } FT_EEPROM_2232, *PFT_EEPROM_2232; + + + // FT232R EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + typedef struct ft_eeprom_232r { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + // Drive options + UCHAR IsHighCurrent; // non-zero if interface is high current + // Hardware options + UCHAR UseExtOsc; // Use External Oscillator + UCHAR InvertTXD; // non-zero if invert TXD + UCHAR InvertRXD; // non-zero if invert RXD + UCHAR InvertRTS; // non-zero if invert RTS + UCHAR InvertCTS; // non-zero if invert CTS + UCHAR InvertDTR; // non-zero if invert DTR + UCHAR InvertDSR; // non-zero if invert DSR + UCHAR InvertDCD; // non-zero if invert DCD + UCHAR InvertRI; // non-zero if invert RI + UCHAR Cbus0; // Cbus Mux control + UCHAR Cbus1; // Cbus Mux control + UCHAR Cbus2; // Cbus Mux control + UCHAR Cbus3; // Cbus Mux control + UCHAR Cbus4; // Cbus Mux control + // Driver option + UCHAR DriverType; // non-zero if using D2XX driver + } FT_EEPROM_232R, *PFT_EEPROM_232R; + + + // FT2232H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + typedef struct ft_eeprom_2232h { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + // Drive options + UCHAR ALSlowSlew; // non-zero if AL pins have slow slew + UCHAR ALSchmittInput; // non-zero if AL pins are Schmitt input + UCHAR ALDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR AHSlowSlew; // non-zero if AH pins have slow slew + UCHAR AHSchmittInput; // non-zero if AH pins are Schmitt input + UCHAR AHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR BLSlowSlew; // non-zero if BL pins have slow slew + UCHAR BLSchmittInput; // non-zero if BL pins are Schmitt input + UCHAR BLDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR BHSlowSlew; // non-zero if BH pins have slow slew + UCHAR BHSchmittInput; // non-zero if BH pins are Schmitt input + UCHAR BHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + // Hardware options + UCHAR AIsFifo; // non-zero if interface is 245 FIFO + UCHAR AIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR AIsFastSer; // non-zero if interface is Fast serial + UCHAR BIsFifo; // non-zero if interface is 245 FIFO + UCHAR BIsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR BIsFastSer; // non-zero if interface is Fast serial + UCHAR PowerSaveEnable; // non-zero if using BCBUS7 to save power for self-powered designs + // Driver option + UCHAR ADriverType; // non-zero if interface is to use VCP drivers + UCHAR BDriverType; // non-zero if interface is to use VCP drivers + } FT_EEPROM_2232H, *PFT_EEPROM_2232H; + + + // FT4232H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + typedef struct ft_eeprom_4232h { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + // Drive options + UCHAR ASlowSlew; // non-zero if A pins have slow slew + UCHAR ASchmittInput; // non-zero if A pins are Schmitt input + UCHAR ADriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR BSlowSlew; // non-zero if B pins have slow slew + UCHAR BSchmittInput; // non-zero if B pins are Schmitt input + UCHAR BDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR CSlowSlew; // non-zero if C pins have slow slew + UCHAR CSchmittInput; // non-zero if C pins are Schmitt input + UCHAR CDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR DSlowSlew; // non-zero if D pins have slow slew + UCHAR DSchmittInput; // non-zero if D pins are Schmitt input + UCHAR DDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + // Hardware options + UCHAR ARIIsTXDEN; // non-zero if port A uses RI as RS485 TXDEN + UCHAR BRIIsTXDEN; // non-zero if port B uses RI as RS485 TXDEN + UCHAR CRIIsTXDEN; // non-zero if port C uses RI as RS485 TXDEN + UCHAR DRIIsTXDEN; // non-zero if port D uses RI as RS485 TXDEN + // Driver option + UCHAR ADriverType; // non-zero if interface is to use VCP drivers + UCHAR BDriverType; // non-zero if interface is to use VCP drivers + UCHAR CDriverType; // non-zero if interface is to use VCP drivers + UCHAR DDriverType; // non-zero if interface is to use VCP drivers + } FT_EEPROM_4232H, *PFT_EEPROM_4232H; + + + // FT232H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + typedef struct ft_eeprom_232h { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + // Drive options + UCHAR ACSlowSlew; // non-zero if AC bus pins have slow slew + UCHAR ACSchmittInput; // non-zero if AC bus pins are Schmitt input + UCHAR ACDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR ADSlowSlew; // non-zero if AD bus pins have slow slew + UCHAR ADSchmittInput; // non-zero if AD bus pins are Schmitt input + UCHAR ADDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + // CBUS options + UCHAR Cbus0; // Cbus Mux control + UCHAR Cbus1; // Cbus Mux control + UCHAR Cbus2; // Cbus Mux control + UCHAR Cbus3; // Cbus Mux control + UCHAR Cbus4; // Cbus Mux control + UCHAR Cbus5; // Cbus Mux control + UCHAR Cbus6; // Cbus Mux control + UCHAR Cbus7; // Cbus Mux control + UCHAR Cbus8; // Cbus Mux control + UCHAR Cbus9; // Cbus Mux control + // FT1248 options + UCHAR FT1248Cpol; // FT1248 clock polarity - clock idle high (1) or clock idle low (0) + UCHAR FT1248Lsb; // FT1248 data is LSB (1) or MSB (0) + UCHAR FT1248FlowControl; // FT1248 flow control enable + // Hardware options + UCHAR IsFifo; // non-zero if interface is 245 FIFO + UCHAR IsFifoTar; // non-zero if interface is 245 FIFO CPU target + UCHAR IsFastSer; // non-zero if interface is Fast serial + UCHAR IsFT1248; // non-zero if interface is FT1248 + UCHAR PowerSaveEnable; // + // Driver option + UCHAR DriverType; // non-zero if interface is to use VCP drivers + } FT_EEPROM_232H, *PFT_EEPROM_232H; + + + // FT X Series EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + typedef struct ft_eeprom_x_series { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + // Drive options + UCHAR ACSlowSlew; // non-zero if AC bus pins have slow slew + UCHAR ACSchmittInput; // non-zero if AC bus pins are Schmitt input + UCHAR ACDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR ADSlowSlew; // non-zero if AD bus pins have slow slew + UCHAR ADSchmittInput; // non-zero if AD bus pins are Schmitt input + UCHAR ADDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA + // CBUS options + UCHAR Cbus0; // Cbus Mux control + UCHAR Cbus1; // Cbus Mux control + UCHAR Cbus2; // Cbus Mux control + UCHAR Cbus3; // Cbus Mux control + UCHAR Cbus4; // Cbus Mux control + UCHAR Cbus5; // Cbus Mux control + UCHAR Cbus6; // Cbus Mux control + // UART signal options + UCHAR InvertTXD; // non-zero if invert TXD + UCHAR InvertRXD; // non-zero if invert RXD + UCHAR InvertRTS; // non-zero if invert RTS + UCHAR InvertCTS; // non-zero if invert CTS + UCHAR InvertDTR; // non-zero if invert DTR + UCHAR InvertDSR; // non-zero if invert DSR + UCHAR InvertDCD; // non-zero if invert DCD + UCHAR InvertRI; // non-zero if invert RI + // Battery Charge Detect options + UCHAR BCDEnable; // Enable Battery Charger Detection + UCHAR BCDForceCbusPWREN; // asserts the power enable signal on CBUS when charging port detected + UCHAR BCDDisableSleep; // forces the device never to go into sleep mode + // I2C options + WORD I2CSlaveAddress; // I2C slave device address + DWORD I2CDeviceId; // I2C device ID + UCHAR I2CDisableSchmitt; // Disable I2C Schmitt trigger + // FT1248 options + UCHAR FT1248Cpol; // FT1248 clock polarity - clock idle high (1) or clock idle low (0) + UCHAR FT1248Lsb; // FT1248 data is LSB (1) or MSB (0) + UCHAR FT1248FlowControl; // FT1248 flow control enable + // Hardware options + UCHAR RS485EchoSuppress; // + UCHAR PowerSaveEnable; // + // Driver option + UCHAR DriverType; // non-zero if interface is to use VCP drivers + } FT_EEPROM_X_SERIES, *PFT_EEPROM_X_SERIES; + + + // FT4222H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + typedef struct ft_eeprom_4222h { + // Common header + FT_EEPROM_HEADER common; // common elements for all device EEPROMs + CHAR Revision; // 'A', 'B', 'C', or 'D'. + UCHAR I2C_Slave_Address; + // Suspend + UCHAR SPISuspend; // 0 for "Disable SPI, tristate pins", 2 for "Keep SPI pin status", 3 for "Enable SPI pin control" + UCHAR SuspendOutPol; // 0 for negative, 1 for positive (not implemented on Rev A) + UCHAR EnableSuspendOut; // non-zero to enable (not implemented on Rev A) + // QSPI + UCHAR Clock_SlowSlew; // non-zero if clock pin has slow slew + UCHAR Clock_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR IO0_SlowSlew; // non-zero if IO0 pin has slow slew + UCHAR IO1_SlowSlew; // non-zero if IO1 pin has slow slew + UCHAR IO2_SlowSlew; // non-zero if IO2 pin has slow slew + UCHAR IO3_SlowSlew; // non-zero if IO3 pin has slow slew + UCHAR IO_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR SlaveSelect_PullUp; // non-zero to enable pull up + UCHAR SlaveSelect_PullDown; // non-zero to enable pull down + UCHAR SlaveSelect_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR SlaveSelect_SlowSlew; // non-zero if slave select pin has slow slew + UCHAR MISO_Suspend; // 2 for push-low, 3 for push high, 0 and 1 reserved + UCHAR SIMO_Suspend; // 2 for push-low, 3 for push high, 0 and 1 reserved + UCHAR IO2_IO3_Suspend; // 2 for push-low, 3 for push high, 0 and 1 reserved + UCHAR SlaveSelect_Suspend; // 0 for no-change (not implemented on Rev A), 2 for push-low, 3 for push high, 1 reserved + // GPIO + UCHAR GPIO0_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR GPIO1_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR GPIO2_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR GPIO3_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + UCHAR GPIO0_SlowSlew; // non-zero if IO0 pin has slow slew + UCHAR GPIO1_SlowSlew; // non-zero if IO0 pin has slow slew + UCHAR GPIO2_SlowSlew; // non-zero if IO0 pin has slow slew + UCHAR GPIO3_SlowSlew; // non-zero if IO0 pin has slow slew + UCHAR GPIO0_PullDown; // non-zero to enable pull down + UCHAR GPIO1_PullDown; // non-zero to enable pull down + UCHAR GPIO2_PullDown; // non-zero to enable pull down + UCHAR GPIO3_PullDown; // non-zero to enable pull down + UCHAR GPIO0_PullUp; // non-zero to enable pull up + UCHAR GPIO1_PullUp; // non-zero to enable pull up + UCHAR GPIO2_PullUp; // non-zero to enable pull up + UCHAR GPIO3_PullUp; // non-zero to enable pull up + UCHAR GPIO0_OpenDrain; // non-zero to enable open drain + UCHAR GPIO1_OpenDrain; // non-zero to enable open drain + UCHAR GPIO2_OpenDrain; // non-zero to enable open drain + UCHAR GPIO3_OpenDrain; // non-zero to enable open drain + UCHAR GPIO0_Suspend; // 0 for no-change, 1 for input (not implemented on Rev A), 2 for push-low, 3 for push high + UCHAR GPIO1_Suspend; // 0 for no-change, 1 for input (not implemented on Rev A), 2 for push-low, 3 for push high + UCHAR GPIO2_Suspend; // 0 for no-change, 1 for input (not implemented on Rev A), 2 for push-low, 3 for push high + UCHAR GPIO3_Suspend; // 0 for no-change, 1 for input (not implemented on Rev A), 2 for push-low, 3 for push high + UCHAR FallingEdge; // non-zero to change GPIO on falling edge + // BCD + UCHAR BCD_Disable; // non-zero to disable BCD + UCHAR BCD_OutputActiveLow; // non-zero to set BCD output active low + UCHAR BCD_Drive; // valid values are 4mA, 8mA, 12mA, 16mA + } FT_EEPROM_4222H, *PFT_EEPROM_4222H; + + + // Power Delivery structures for use with FT_EEPROM_Read and FT_EEPROM_Program + // PDO Configuration structure, mA supported values 0 to 10230mA, mV supported values 0 to 51100mV + // This is part of the FT_EEPROM_PD structure. + typedef struct ft_eeprom_PD_PDO_mv_ma { + USHORT PDO1ma; // PDO1 mA + USHORT PDO1mv; // PDO1 mV + USHORT PDO2ma; // PDO2 mA + USHORT PDO2mv; // PDO2 mV + USHORT PDO3ma; // PDO3 mA + USHORT PDO3mv; // PDO3 mV + USHORT PDO4ma; // PDO4 mA + USHORT PDO4mv; // PDO4 mV + USHORT PDO5ma; // PDO5 mA (FTx233HP only) + USHORT PDO5mv; // PDO5 mV (FTx233HP only) + USHORT PDO6ma; // PDO6 mA (FTx233HP only) + USHORT PDO6mv; // PDO6 mV (FTx233HP only) + USHORT PDO7ma; // PDO7 mA (FTx233HP only) + USHORT PDO7mv; // PDO7 mV (FTx233HP only) + } FT_EEPROM_PD_PDO_mv_ma; + + // PD EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + // This is appended to the end of the base device structure. e_g. + // struct { + // FT_EEPROM_xxx base; + // FT_EEPROM_PD pd; + // }; + // Device GPIO values are: + // FTx233HP - 0 to 7, 15 for N/A + // FTx232HP - 0 to 3, 15 for N/A + typedef struct ft_eeprom_pd { + // Configuration + UCHAR srprs; // non-zero to enable Sink Request Power Role Swap + UCHAR sraprs; // non-zero to enable Sink Accept PR Swap + UCHAR srrprs; // non-zero to enable Source Request PR SWAP + UCHAR saprs; // non-zero to enable Source Accept PR SWAP + UCHAR vconns; // non-zero to enable vConn Swap + UCHAR passthru; // non-zero to enable Pass Through (FTx233HP only) + UCHAR extmcu; // non-zero to enable External MCU + UCHAR pd2en; // non-zero to enable PD2 (FTx233HP only) + UCHAR pd1autoclk; // non-zero to enable PD1 Auto Clock + UCHAR pd2autoclk; // non-zero to enable PD2 Auto Clock (FTx233HP only) + UCHAR useefuse; // non-zero to Use EFUSE + UCHAR extvconn; // non-zero to enable External vConn + + // GPIO Configuration + UCHAR count; // GPIO Count, supported values are 0 to 7 + UCHAR gpio1; // GPIO Number 1, supports device GPIO values + UCHAR gpio2; // GPIO Number 2, supports device GPIO values + UCHAR gpio3; // GPIO Number 3, supports device GPIO values + UCHAR gpio4; // GPIO Number 4, supports device GPIO values + UCHAR gpio5; // GPIO Number 5, supports device GPIO values (FTx233HP only) + UCHAR gpio6; // GPIO Number 6, supports device GPIO values (FTx233HP only) + UCHAR gpio7; // GPIO Number 7, supports device GPIO values (FTx233HP only) + UCHAR pd1lden; // PD1 Load Enable, supports device GPIO values + UCHAR pd2lden; // PD2 Load Enable, supports device GPIO values (FTx233HP only) + UCHAR dispin; // Discharge Pin, supports device GPIO values + UCHAR disenbm; // Discharge Enable BM, 0 for "Drive Hi", 1 for "Drive Low", 2 for "Input Mode", 3 for "Don't Care" + UCHAR disdisbm; // Discharge Disable BM, 0 for "Drive Hi", 1 for "Drive Low", 2 for "Input Mode", 3 for "Don't Care" + UCHAR ccselect; // CC Select Indicator, supports device GPIO values + + // ISET Configuration + UCHAR iset1; // ISET1, supports device GPIO values + UCHAR iset2; // ISET2, supports device GPIO values + UCHAR iset3; // ISET3, supports device GPIO values + UCHAR extiset; // non-zero to enable EXTEND_ISET + UCHAR isetpd2; // non-zero to enable ISET_PD2 + UCHAR iseten; // non-zero to set ISET_ENABLED + + // BM Configuration, 0 for "Drive Hi", 1 for "Drive Low", 2 for "Input Mode", 3 for "Don't Care" + UCHAR PDO1_GPIO[7]; // PDO1 GPIO1 to GPIO7 + UCHAR PDO2_GPIO[7]; // PDO2 GPIO1 to GPIO7 + UCHAR PDO3_GPIO[7]; // PDO3 GPIO1 to GPIO7 + UCHAR PDO4_GPIO[7]; // PDO4 GPIO1 to GPIO7 + UCHAR PDO5_GPIO[7]; // PDO5 GPIO1 to GPIO7 (FTx233HP only) + UCHAR PDO6_GPIO[7]; // PDO6 GPIO1 to GPIO7 (FTx233HP only) + UCHAR PDO7_GPIO[7]; // PDO7 GPIO1 to GPIO7 (FTx233HP only) + UCHAR VSET0V_GPIO[7]; // PDO7 GPIO1 to GPIO7 + UCHAR VSAFE5V_GPIO[7]; // PDO7 GPIO1 to GPIO7 + + FT_EEPROM_PD_PDO_mv_ma BM_PDO_Sink; + FT_EEPROM_PD_PDO_mv_ma BM_PDO_Source; + FT_EEPROM_PD_PDO_mv_ma BM_PDO_Sink_2; // (FTx233HP only) + + // PD Timers + UCHAR srt; // Sender Response Timer + UCHAR hrt; // Hard Reset Timer + UCHAR sct; // Source Capability Timer + UCHAR dit; // Discover Identity Timer + USHORT srcrt; // Source Recover Timer + USHORT trt; // Transition Timer + USHORT sofft; // Source off timer + USHORT nrt; // No Response Timer + USHORT swct; // Sink Wait Capability Timer + USHORT snkrt; // Sink Request Timer + UCHAR dt; // Discharge Timer + UCHAR cnst; // Chunk not supported timer + USHORT it; // Idle Timer + + // PD Control + UCHAR i2caddr; // I2C Address (hex) + UINT prou; // Power Reserved for OWN use + UINT trim1; // TRIM1 + UINT trim2; // TRIM2 + UCHAR extdc; // non-zero to enable ETERNAL_DC_POWER + } FT_EEPROM_PD, *PFT_EEPROM_PD; + + // FT2233HP EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + // FT2232H with power delivery + typedef struct _ft_eeprom_2233hp + { + FT_EEPROM_2232H ft2232h; + FT_EEPROM_PD pd; + } FT_EEPROM_2233HP, *PFT_EEPROM_2233HP; + + // FT4233HP EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + // FT4232H with power delivery + typedef struct _ft_eeprom_4233hp + { + FT_EEPROM_4232H ft4232h; + FT_EEPROM_PD pd; + } FT_EEPROM_4233HP, *PFT_EEPROM_4233HP; + + // FT2232HP EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + // FT2232H with power delivery + typedef struct _ft_eeprom_2232hp + { + FT_EEPROM_2232H ft2232h; + FT_EEPROM_PD pd; + } FT_EEPROM_2232HP, *PFT_EEPROM_2232HP; + + // FT4232HP EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + // FT4232H with power delivery + typedef struct _ft_eeprom_4232hp + { + FT_EEPROM_4232H ft4232h; + FT_EEPROM_PD pd; + } FT_EEPROM_4232HP, *PFT_EEPROM_4232HP; + + // FT233HP EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + // FT233H with power delivery + typedef struct _ft_eeprom_233hp + { + FT_EEPROM_232H ft232h; + FT_EEPROM_PD pd; + } FT_EEPROM_233HP, *PFT_EEPROM_233HP; + + // FT232HP EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program + // FT232H with power delivery + typedef struct _ft_eeprom_232hp + { + FT_EEPROM_232H ft232h; + FT_EEPROM_PD pd; + } FT_EEPROM_232HP, *PFT_EEPROM_232HP; + + FTD2XX_API + FT_STATUS WINAPI FT_EEPROM_Read( + FT_HANDLE ftHandle, + void *eepromData, + DWORD eepromDataSize, + char *Manufacturer, + char *ManufacturerId, + char *Description, + char *SerialNumber + ); + + + FTD2XX_API + FT_STATUS WINAPI FT_EEPROM_Program( + FT_HANDLE ftHandle, + void *eepromData, + DWORD eepromDataSize, + char *Manufacturer, + char *ManufacturerId, + char *Description, + char *SerialNumber + ); + + + FTD2XX_API + FT_STATUS WINAPI FT_SetLatencyTimer( + FT_HANDLE ftHandle, + UCHAR ucLatency + ); + + FTD2XX_API + FT_STATUS WINAPI FT_GetLatencyTimer( + FT_HANDLE ftHandle, + PUCHAR pucLatency + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetBitMode( + FT_HANDLE ftHandle, + UCHAR ucMask, + UCHAR ucEnable + ); + + FTD2XX_API + FT_STATUS WINAPI FT_GetBitMode( + FT_HANDLE ftHandle, + PUCHAR pucMode + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetUSBParameters( + FT_HANDLE ftHandle, + ULONG ulInTransferSize, + ULONG ulOutTransferSize + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetDeadmanTimeout( + FT_HANDLE ftHandle, + ULONG ulDeadmanTimeout + ); + +#ifndef _WIN32 + // Extra functions for non-Windows platforms to compensate + // for lack of .INF file to specify Vendor and Product IDs. + + FTD2XX_API + FT_STATUS FT_SetVIDPID( + DWORD dwVID, + DWORD dwPID + ); + + FTD2XX_API + FT_STATUS FT_GetVIDPID( + DWORD * pdwVID, + DWORD * pdwPID + ); + + FTD2XX_API + FT_STATUS WINAPI FT_GetDeviceLocId( + FT_HANDLE ftHandle, + LPDWORD lpdwLocId + ); +#endif // _WIN32 + + FTD2XX_API + FT_STATUS WINAPI FT_GetDeviceInfo( + FT_HANDLE ftHandle, + FT_DEVICE *lpftDevice, + LPDWORD lpdwID, + PCHAR SerialNumber, + PCHAR Description, + LPVOID Dummy + ); + + FTD2XX_API + FT_STATUS WINAPI FT_StopInTask( + FT_HANDLE ftHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_RestartInTask( + FT_HANDLE ftHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_SetResetPipeRetryCount( + FT_HANDLE ftHandle, + DWORD dwCount + ); + + FTD2XX_API + FT_STATUS WINAPI FT_ResetPort( + FT_HANDLE ftHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_CyclePort( + FT_HANDLE ftHandle + ); + + + // + // Win32-type functions + // + + FTD2XX_API + FT_HANDLE WINAPI FT_W32_CreateFile( + LPCTSTR lpszName, + DWORD dwAccess, + DWORD dwShareMode, + LPSECURITY_ATTRIBUTES lpSecurityAttributes, + DWORD dwCreate, + DWORD dwAttrsAndFlags, + HANDLE hTemplate + ); + + FTD2XX_API + BOOL WINAPI FT_W32_CloseHandle( + FT_HANDLE ftHandle + ); + + FTD2XX_API + BOOL WINAPI FT_W32_ReadFile( + FT_HANDLE ftHandle, + LPVOID lpBuffer, + DWORD nBufferSize, + LPDWORD lpBytesReturned, + LPOVERLAPPED lpOverlapped + ); + + FTD2XX_API + BOOL WINAPI FT_W32_WriteFile( + FT_HANDLE ftHandle, + LPVOID lpBuffer, + DWORD nBufferSize, + LPDWORD lpBytesWritten, + LPOVERLAPPED lpOverlapped + ); + + FTD2XX_API + DWORD WINAPI FT_W32_GetLastError( + FT_HANDLE ftHandle + ); + + FTD2XX_API + BOOL WINAPI FT_W32_GetOverlappedResult( + FT_HANDLE ftHandle, + LPOVERLAPPED lpOverlapped, + LPDWORD lpdwBytesTransferred, + BOOL bWait + ); + + FTD2XX_API + BOOL WINAPI FT_W32_CancelIo( + FT_HANDLE ftHandle + ); + + + // + // Win32 COMM API type functions + // + typedef struct _FTCOMSTAT { + DWORD fCtsHold : 1; + DWORD fDsrHold : 1; + DWORD fRlsdHold : 1; + DWORD fXoffHold : 1; + DWORD fXoffSent : 1; + DWORD fEof : 1; + DWORD fTxim : 1; + DWORD fReserved : 25; + DWORD cbInQue; + DWORD cbOutQue; + } FTCOMSTAT, *LPFTCOMSTAT; + + typedef struct _FTDCB { + DWORD DCBlength; /* sizeof(FTDCB) */ + DWORD BaudRate; /* Baudrate at which running */ + DWORD fBinary : 1; /* Binary Mode (skip EOF check) */ + DWORD fParity : 1; /* Enable parity checking */ + DWORD fOutxCtsFlow : 1; /* CTS handshaking on output */ + DWORD fOutxDsrFlow : 1; /* DSR handshaking on output */ + DWORD fDtrControl : 2; /* DTR Flow control */ + DWORD fDsrSensitivity : 1; /* DSR Sensitivity */ + DWORD fTXContinueOnXoff : 1; /* Continue TX when Xoff sent */ + DWORD fOutX : 1; /* Enable output X-ON/X-OFF */ + DWORD fInX : 1; /* Enable input X-ON/X-OFF */ + DWORD fErrorChar : 1; /* Enable Err Replacement */ + DWORD fNull : 1; /* Enable Null stripping */ + DWORD fRtsControl : 2; /* Rts Flow control */ + DWORD fAbortOnError : 1; /* Abort all reads and writes on Error */ + DWORD fDummy2 : 17; /* Reserved */ + WORD wReserved; /* Not currently used */ + WORD XonLim; /* Transmit X-ON threshold */ + WORD XoffLim; /* Transmit X-OFF threshold */ + BYTE ByteSize; /* Number of bits/byte, 4-8 */ + BYTE Parity; /* 0-4=None,Odd,Even,Mark,Space */ + BYTE StopBits; /* FT_STOP_BITS_1 or FT_STOP_BITS_2 */ + char XonChar; /* Tx and Rx X-ON character */ + char XoffChar; /* Tx and Rx X-OFF character */ + char ErrorChar; /* Error replacement char */ + char EofChar; /* End of Input character */ + char EvtChar; /* Received Event character */ + WORD wReserved1; /* Fill for now. */ + } FTDCB, *LPFTDCB; + + typedef struct _FTTIMEOUTS { + DWORD ReadIntervalTimeout; /* Maximum time between read chars. */ + DWORD ReadTotalTimeoutMultiplier; /* Multiplier of characters. */ + DWORD ReadTotalTimeoutConstant; /* Constant in milliseconds. */ + DWORD WriteTotalTimeoutMultiplier; /* Multiplier of characters. */ + DWORD WriteTotalTimeoutConstant; /* Constant in milliseconds. */ + } FTTIMEOUTS, *LPFTTIMEOUTS; + + + FTD2XX_API + BOOL WINAPI FT_W32_ClearCommBreak( + FT_HANDLE ftHandle + ); + + FTD2XX_API + BOOL WINAPI FT_W32_ClearCommError( + FT_HANDLE ftHandle, + LPDWORD lpdwErrors, + LPFTCOMSTAT lpftComstat + ); + + FTD2XX_API + BOOL WINAPI FT_W32_EscapeCommFunction( + FT_HANDLE ftHandle, + DWORD dwFunc + ); + + FTD2XX_API + BOOL WINAPI FT_W32_GetCommModemStatus( + FT_HANDLE ftHandle, + LPDWORD lpdwModemStatus + ); + + FTD2XX_API + BOOL WINAPI FT_W32_GetCommState( + FT_HANDLE ftHandle, + LPFTDCB lpftDcb + ); + + FTD2XX_API + BOOL WINAPI FT_W32_GetCommTimeouts( + FT_HANDLE ftHandle, + FTTIMEOUTS *pTimeouts + ); + + FTD2XX_API + BOOL WINAPI FT_W32_PurgeComm( + FT_HANDLE ftHandle, + DWORD dwMask + ); + + FTD2XX_API + BOOL WINAPI FT_W32_SetCommBreak( + FT_HANDLE ftHandle + ); + + FTD2XX_API + BOOL WINAPI FT_W32_SetCommMask( + FT_HANDLE ftHandle, + ULONG ulEventMask + ); + + FTD2XX_API + BOOL WINAPI FT_W32_GetCommMask( + FT_HANDLE ftHandle, + LPDWORD lpdwEventMask + ); + + FTD2XX_API + BOOL WINAPI FT_W32_SetCommState( + FT_HANDLE ftHandle, + LPFTDCB lpftDcb + ); + + FTD2XX_API + BOOL WINAPI FT_W32_SetCommTimeouts( + FT_HANDLE ftHandle, + FTTIMEOUTS *pTimeouts + ); + + FTD2XX_API + BOOL WINAPI FT_W32_SetupComm( + FT_HANDLE ftHandle, + DWORD dwReadBufferSize, + DWORD dwWriteBufferSize + ); + + FTD2XX_API + BOOL WINAPI FT_W32_WaitCommEvent( + FT_HANDLE ftHandle, + PULONG pulEvent, + LPOVERLAPPED lpOverlapped + ); + + + // + // Device information + // + + typedef struct _ft_device_list_info_node { + ULONG Flags; + ULONG Type; + ULONG ID; + DWORD LocId; + char SerialNumber[16]; + char Description[64]; + FT_HANDLE ftHandle; + } FT_DEVICE_LIST_INFO_NODE; + + // Device information flags + enum { + FT_FLAGS_OPENED = 1, + FT_FLAGS_HISPEED = 2 + }; + + + FTD2XX_API + FT_STATUS WINAPI FT_CreateDeviceInfoList( + LPDWORD lpdwNumDevs + ); + + FTD2XX_API + FT_STATUS WINAPI FT_GetDeviceInfoList( + FT_DEVICE_LIST_INFO_NODE *pDest, + LPDWORD lpdwNumDevs + ); + + FTD2XX_API + FT_STATUS WINAPI FT_GetDeviceInfoDetail( + DWORD dwIndex, + LPDWORD lpdwFlags, + LPDWORD lpdwType, + LPDWORD lpdwID, + LPDWORD lpdwLocId, + LPVOID lpSerialNumber, + LPVOID lpDescription, + FT_HANDLE *pftHandle + ); + + + // + // Version information + // + + FTD2XX_API + FT_STATUS WINAPI FT_GetDriverVersion( + FT_HANDLE ftHandle, + LPDWORD lpdwVersion + ); + + FTD2XX_API + FT_STATUS WINAPI FT_GetLibraryVersion( + LPDWORD lpdwVersion + ); + + + FTD2XX_API + FT_STATUS WINAPI FT_Rescan( + void + ); + + FTD2XX_API + FT_STATUS WINAPI FT_Reload( + WORD wVid, + WORD wPid + ); + + FTD2XX_API + FT_STATUS WINAPI FT_GetComPortNumber( + FT_HANDLE ftHandle, + LPLONG lpdwComPortNumber + ); + + + // + // FT232H additional EEPROM functions + // + + FTD2XX_API + FT_STATUS WINAPI FT_EE_ReadConfig( + FT_HANDLE ftHandle, + UCHAR ucAddress, + PUCHAR pucValue + ); + + FTD2XX_API + FT_STATUS WINAPI FT_EE_WriteConfig( + FT_HANDLE ftHandle, + UCHAR ucAddress, + UCHAR ucValue + ); + + FTD2XX_API + FT_STATUS WINAPI FT_EE_ReadECC( + FT_HANDLE ftHandle, + UCHAR ucOption, + LPWORD lpwValue + ); + + FTD2XX_API + FT_STATUS WINAPI FT_GetQueueStatusEx( + FT_HANDLE ftHandle, + DWORD *dwRxBytes + ); + + FTD2XX_API + FT_STATUS WINAPI FT_ComPortIdle( + FT_HANDLE ftHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_ComPortCancelIdle( + FT_HANDLE ftHandle + ); + + FTD2XX_API + FT_STATUS WINAPI FT_VendorCmdGet( + FT_HANDLE ftHandle, + UCHAR Request, + UCHAR *Buf, + USHORT Len + ); + + FTD2XX_API + FT_STATUS WINAPI FT_VendorCmdSet( + FT_HANDLE ftHandle, + UCHAR Request, + UCHAR *Buf, + USHORT Len + ); + + FTD2XX_API + FT_STATUS WINAPI FT_VendorCmdGetEx( + FT_HANDLE ftHandle, + USHORT wValue, + UCHAR *Buf, + USHORT Len + ); + + FTD2XX_API + FT_STATUS WINAPI FT_VendorCmdSetEx( + FT_HANDLE ftHandle, + USHORT wValue, + UCHAR *Buf, + USHORT Len + ); + +#ifdef __cplusplus +} +#endif + + +#endif /* FTD2XX_H */ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/ftdibus.cat b/build/windows/dist/drivers/FTDI USB Drivers/ftdibus.cat index 0a7c72c8e88..dcc67efe870 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/ftdibus.cat and b/build/windows/dist/drivers/FTDI USB Drivers/ftdibus.cat differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/ftdibus.inf b/build/windows/dist/drivers/FTDI USB Drivers/ftdibus.inf index 8c3d16c2dff..b4f7f8c0ed4 100644 --- a/build/windows/dist/drivers/FTDI USB Drivers/ftdibus.inf +++ b/build/windows/dist/drivers/FTDI USB Drivers/ftdibus.inf @@ -1,153 +1,565 @@ -; FTDIBUS.INF -; -; Copyright � 2000-2011 Future Technology Devices International Limited -; -; USB serial converter driver installation file for Windows 2000, XP, Server 2003, Vista, Server 2008, -; Windows 7 and Server 2008 R2 (x86 and x64). -; -; -; THIS SOFTWARE IS PROVIDED BY FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED ``AS IS'' AND ANY EXPRESS -; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -; FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED -; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -; BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -; THE POSSIBILITY OF SUCH DAMAGE. - -; FTDI DRIVERS MAY BE USED ONLY IN CONJUNCTION WITH PRODUCTS BASED ON FTDI PARTS. - -; FTDI DRIVERS MAY BE DISTRIBUTED IN ANY FORM AS LONG AS LICENSE INFORMATION IS NOT MODIFIED. - -; IF A CUSTOM VENDOR ID AND/OR PRODUCT ID OR DESCRIPTION STRING ARE USED, IT IS THE RESPONSIBILITY OF -; THE PRODUCT MANUFACTURER TO MAINTAIN ANY CHANGES AND SUBSEQUENT WHQL RE-CERTIFICATION AS A RESULT OF -; MAKING THESE CHANGES. -; - - -[Version] -Signature="$Windows NT$" -DriverPackageType=PlugAndPlay -DriverPackageDisplayName=%DESC% -Class=USB -ClassGUID={36fc9e60-c465-11cf-8056-444553540000} -Provider=%FTDI% -CatalogFile=ftdibus.cat -DriverVer=03/18/2011,2.08.14 - -[SourceDisksNames] -1=%DriversDisk%,,, - -[SourceDisksFiles] -ftdibus.sys = 1,i386 -ftbusui.dll = 1,i386 -ftd2xx.dll = 1,i386 -FTLang.Dll = 1,i386 - -[SourceDisksFiles.amd64] -ftdibus.sys = 1,amd64 -ftbusui.dll = 1,amd64 -ftd2xx64.dll = 1,amd64 -ftd2xx.dll = 1,i386 -FTLang.Dll = 1,amd64 - -[DestinationDirs] -FtdiBus.NT.Copy = 10,system32\drivers -FtdiBus.NT.Copy2 = 10,system32 -FtdiBus.NTamd64.Copy = 10,system32\drivers -FtdiBus.NTamd64.Copy2 = 10,system32 -FtdiBus.NTamd64.Copy3 = 10,syswow64 - - -[Manufacturer] -%Ftdi%=FtdiHw,NTamd64 - -[FtdiHw] -%USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6001 -%USB\VID_0403&PID_6010&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6010&MI_00 -%USB\VID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6010&MI_01 -%USB\VID_0403&PID_6011&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6011&MI_00 -%USB\VID_0403&PID_6011&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6011&MI_01 -%USB\VID_0403&PID_6011&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6011&MI_02 -%USB\VID_0403&PID_6011&MI_03.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6011&MI_03 -%USB\VID_0403&PID_6014.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6014 - -[FtdiHw.NTamd64] -%USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6001 -%USB\VID_0403&PID_6010&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6010&MI_00 -%USB\VID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6010&MI_01 -%USB\VID_0403&PID_6011&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6011&MI_00 -%USB\VID_0403&PID_6011&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6011&MI_01 -%USB\VID_0403&PID_6011&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6011&MI_02 -%USB\VID_0403&PID_6011&MI_03.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6011&MI_03 -%USB\VID_0403&PID_6014.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6014 - -[ControlFlags] -ExcludeFromSelect=* - -[FtdiBus.NT] -CopyFiles=FtdiBus.NT.Copy,FtdiBus.NT.Copy2 -AddReg=FtdiBus.NT.AddReg - -[FtdiBus.NTamd64] -CopyFiles=FtdiBus.NTamd64.Copy,FtdiBus.NTamd64.Copy2,FtdiBus.NTamd64.Copy3 -AddReg=FtdiBus.NT.AddReg - -[FtdiBus.NT.Services] -AddService = FTDIBUS, 0x00000002, FtdiBus.NT.AddService - -[FtdiBus.NTamd64.Services] -AddService = FTDIBUS, 0x00000002, FtdiBus.NT.AddService - -[FtdiBus.NT.AddService] -DisplayName = %SvcDesc% -ServiceType = 1 ; SERVICE_KERNEL_DRIVER -StartType = 3 ; SERVICE_DEMAND_START -ErrorControl = 1 ; SERVICE_ERROR_NORMAL -ServiceBinary = %10%\system32\drivers\ftdibus.sys -LoadOrderGroup = Base -AddReg = FtdiBus.NT.AddService.AddReg - -[FtdiBus.NT.AddReg] -HKR,,DevLoader,,*ntkern -HKR,,NTMPDriver,,ftdibus.sys -HKR,,EnumPropPages32,,"ftbusui.dll,FTBUSUIPropPageProvider" - -[FtdiBus.NT.AddService.AddReg] -;HKR,Parameters,"LocIds",1,31,00,00,00,32,00,00,00,00 -;HKR,Parameters,"RetryResetCount",0x10001,50 - - -[FtdiBus.NT.Copy] -ftdibus.sys - -[FtdiBus.NT.Copy2] -ftbusui.dll -ftd2xx.dll -FTLang.dll - -[FtdiBus.NTamd64.Copy] -ftdibus.sys - -[FtdiBus.NTamd64.Copy2] -ftbusui.dll -ftd2xx.dll,ftd2xx64.dll -FTLang.dll - -[FtdiBus.NTamd64.Copy3] -ftd2xx.dll - -[Strings] -Ftdi="FTDI" -DESC="CDM Driver Package - Bus/D2XX Driver" -DriversDisk="FTDI USB Drivers Disk" -USB\VID_0403&PID_6001.DeviceDesc="USB Serial Converter" -USB\VID_0403&PID_6010&MI_00.DeviceDesc="USB Serial Converter A" -USB\VID_0403&PID_6010&MI_01.DeviceDesc="USB Serial Converter B" -USB\VID_0403&PID_6011&MI_00.DeviceDesc="USB Serial Converter A" -USB\VID_0403&PID_6011&MI_01.DeviceDesc="USB Serial Converter B" -USB\VID_0403&PID_6011&MI_02.DeviceDesc="USB Serial Converter C" -USB\VID_0403&PID_6011&MI_03.DeviceDesc="USB Serial Converter D" -USB\VID_0403&PID_6014.DeviceDesc="USB Serial Converter" -SvcDesc="USB Serial Converter Driver" -ClassName="USB" +; FTDIBUS.INF +; +; Copyright � 2000-2021 Future Technology Devices International Limited +; +; USB serial converter driver installation file for Windows 7, Windows 8, Windows 8.1, Windows 10, +; Server 2008 R2, Server 2012 R2 and Server 2016. +; +; +; IMPORTANT NOTICE: PLEASE READ CAREFULLY BEFORE INSTALLING THE RELEVANT +; SOFTWARE: This licence agreement (Licence) is a legal agreement between you (Licensee or +; you) and Future Technology Devices International Limited of 2 Seaward Place, Centurion Business +; Park, Glasgow G41 1HH, Scotland (UK Company Number SC136640) (Licensor or we) for use of +; driver software provided by the Licensor(Software). +; +; BY INSTALLING OR USING THIS SOFTWARE YOU AGREE TO THE TERMS OF THIS LICENCE +; WHICH WILL BIND YOU. IF YOU DO NOT AGREE TO THE TERMS OF THIS LICENCE, WE ARE +; UNWILLING TO LICENSE THE SOFTWARE TO YOU AND YOU MUST DISCONTINUE +; INSTALLATION OF THE SOFTWARE NOW. +; +; 1. GRANT AND SCOPE OF LICENCE +; +; 1.1 In consideration of you agreeing to abide by the terms of this Licence, the Licensor hereby +; grants to you a non-exclusive, non-transferable, royalty free licence to use the Software on +; the terms of this Licence. +; +; 1.2 In this Licence a "Genuine FTDI Component" means an item of hardware that was +; manufactured for, and sold by, the Licensor or a member of the Licensor's group of +; companies. It does not include any counterfeit or fake products. +; +; 1.3 If you are a manufacturer of a device that includes a Genuine FTDI Component (each a +; "Device") then you may install the Software onto that device. If you are a seller or distributor +; of a Device then you may distribute the Software with the Device. If you are a user of a +; Device then you may install the Software on the Device, or onto a computer system in order +; to use the Device. +; +; 1.4 In each of those cases you may: +; +; 1.4.1 install and use the Software for your purposes only; and +; +; 1.4.2 only use the Software in conjunction with products based on and/or incorporating a +; Genuine FTDI Component. +; +; 1.5 The Software will not function properly on or with a component that is not a Genuine FTDI +; Component. Use of the Software as a driver for, or installation of the Software onto, a +; component that is not a Genuine FTDI Component, including without limitation counterfeit +; components, MAY IRRETRIEVABLY DAMAGE THAT COMPONENT. It is the Licensee's +; responsibility to make sure that all chips it installs the Software on, or uses the Software as a +; driver for, are Genuine FTDI Components. If in doubt then contact the Licensor. +; +; 2. If a custom vendor ID and/or product ID or description string are used, it is the responsibility of +; the product manufacturer to maintain any changes and subsequent WHQL re-certification as +; a result of making these changes. +; +; 3. LICENSEE'S UNDERTAKINGS +; +; 3.1 Except as expressly set out in this Licence or as permitted by any local law, you undertake: +; +; 3.1.1 not to copy the Software, except where such copying is incidental to normal use of +; the Software or where it is necessary for the purpose of back-up or operational +; security; +; +; 3.1.2 not to rent, lease, sub-license, loan, translate, merge, adapt, vary or modify the +; Software or any part of it; +; +; 3.1.3 not to make alterations to, or modifications of, the whole or any part of the Software +; nor permit the Software or any part of it to be combined with, or become +; incorporated in, any other programs; +; +; 3.1.4 not to disassemble, de-compile, reverse engineer or create derivative works based +; on the whole or any part of the Software; +; +; 3.1.5 to keep all copies of the Software secure; +; +; 3.1.6 to include the copyright notice of the Licensor on all entire and partial copies of the +; Software in any form; and +; +; 3.1.7 not to provide, or otherwise make available, the Software in any form, in whole or in +; part (including, but not limited to, program listings, object and source program +; listings, object code and source code) to any person. +; +; 4. INTELLECTUAL PROPERTY RIGHTS +; +; 4.1 You acknowledge that all intellectual property rights in the Software throughout the world +; belong to the Licensor, that rights in the Software are licensed (not sold) to you, and that you +; have no rights in, or to, the Software other than the right to use them in accordance with the +; terms of this Licence. +; +; 5. WARRANTY +; +; 5.1 To the maximum extent permitted by applicable law, the software is provided "as is". +; +; 5.2 All implied warranties, implied conditions and/or implied licences are excluded from this +; Licence, including but not limited to implied warranties of quality and/or fitness for purpose (in +; all cases) to the fullest extent permitted by law. +; +; 5.3 You acknowledge that the Software has not been developed to meet your individual +; requirements and that the Software may not be uninterrupted or free of bugs or errors. +; +; 6. LICENSOR'S LIABILITY +; +; 6.1 To the maximum extent permitted by applicable law, in no event shall the Licensor be liable +; for any: +; +; 6.1.1 special loss or damage; +; +; 6.1.2 incidental loss or damage; +; +; 6.1.3 indirect or consequential loss or damage: +; +; 6.1.4 loss of income; +; +; 6.1.5 loss of business; +; +; 6.1.6 loss of profits; +; +; 6.1.7 loss of revenue; +; +; 6.1.8 loss of contracts; +; +; 6.1.9 business interruption; +; +; 6.1.10 loss of the use of money or anticipated savings; +; +; 6.1.11 loss of information; +; +; 6.1.12 loss of opportunity; +; +; 6.1.13 loss of goodwill or reputation; and/or +; +; 6.1.14 loss of, damage to or corruption of data; +; +; (in each case) of any kind howsoever arising and whether caused by delict (including +; negligence), breach of contract or otherwise. +; +; 6.2 FTDI's total liability to you in relation to the Software shall not exceed 500 US Dollars. +; +; 6.3 Nothing in this Licence limits or excludes liability for death or personal injury or for fraud. +; +; 7. TERMINATION +; +; 7.1 The Licensor may terminate this Licence immediately if: +; +; 7.1.1 you fail to comply with any of the terms and conditions of the Licence; or +; +; 7.1.2 you commence or participate in any legal proceedings against the Licensor. +; +; 7.2 Upon termination: +; +; 7.2.1 all rights granted to you under this Licence shall cease; +; +; 7.2.2 you must cease all activities authorised by this Licence; and +; +; 7.2.3 you must immediately delete or remove the Software from all computer equipment +; in your possession and immediately destroy all copies of the Software then in your +; possession, custody or control. +; +; 8. TRANSFER OF RIGHTS AND OBLIGATIONS +; +; 8.1 You may not transfer, assign, charge or otherwise dispose of this Licence, or any of your +; rights or obligations arising under it. +; +; 8.2 The Licensor may transfer, assign, charge, sub-contract or otherwise dispose of this Licence, +; or any of his rights or obligations arising under it, at any time during the term of the Licence. +; +; 9. WAIVER +; +; 9.1 If the Licensor fails, at any time during the term of this Licence, to insist on strict performance +; of any of your obligations under this Licence, or if the Licensor fails to exercise any of the +; rights or remedies to which he is entitled under this Licence, this shall not constitute a waiver +; of such rights or remedies and shall not relieve you from compliance with such obligations. +; +; 9.2 A waiver by the Licensor of any default shall not constitute a waiver of any subsequent +; default. +; +; 9.3 No waiver by the Licensor of any of these terms and conditions shall be effective unless it is +; expressly stated to be a waiver and is communicated to you in writing. +; +; 10. SEVERABILITY +; +; If any of the terms of this Licence are determined by any competent authority to be invalid, +; unlawful or unenforceable to any extent, such term, condition or provision will to that extent be +; severed from the remaining terms, conditions and provisions which will continue to be valid to +; the fullest extent permitted by law. +; +; 11. ENTIRE AGREEMENT +; +; 11.1 This Licence constitutes the whole agreement between us and supersedes any previous +; arrangement, understanding or agreement between us, relating to the licensing of the +; Software. +; +; 11.2 Each party acknowledges that in entering into this Licence it does not rely on any statement, +; representation, warranty or understanding other than those expressly set out in this Licence. +; Each party agrees that it will have no remedy in respect of any statement, representation, +; warranty or understanding that is not expressly set out in this Licence. Each party agrees that +; its only remedy in respect of those representations, statements, assurances and warranties +; that are set out in this Licence will be for breach of contract in accordance with the terms of +; this Licence. +; +; 11.3 The parties agree that nothing in this Licence will limit or exclude any liability they may have +; for fraud. +; +; 12. MISCELLANEOUS +; +; 12.1 This Licence does not create a partnership or joint venture between the parties to it, nor +; authorise a party to act as agent for the other. +; +; 12.2 This Licence does not create any legal rights enforceable by any third party. +; +; 12.3 This Licence may only be varied by express written legal agreement between the parties. +; +; 13. LAW AND JURISDICTION +; +; This Licence, its subject matter or its formation (including non-contractual disputes or claims) +; shall be governed by and construed in accordance with Scots law and submitted to the non- +; exclusive jurisdiction of the Scottish courts. +; + +[Version] +Signature="$Windows NT$" +DriverPackageType=PlugAndPlay +DriverPackageDisplayName=%DESC% +Class=USB +ClassGUID={36fc9e60-c465-11cf-8056-444553540000} +Provider=%FTDI% +CatalogFile=ftdibus.cat +DriverVer=07/05/2021,2.12.36.4 + +[SourceDisksNames] +1=%DriversDisk%,,, + +[SourceDisksFiles] +ftdibus.sys = 1,i386 +ftbusui.dll = 1,i386 +ftd2xx.dll = 1,i386 +FTLang.Dll = 1,i386 + +[SourceDisksFiles.amd64] +ftdibus.sys = 1,amd64 +ftbusui.dll = 1,amd64 +ftd2xx64.dll = 1,amd64 +ftd2xx.dll = 1,i386 +FTLang.Dll = 1,amd64 + +[DestinationDirs] +FtdiBus.NT.Copy = 10,system32\drivers +FtdiBus.NT.Copy2 = 10,system32 +FtdiBus.NTamd64.Copy = 10,system32\drivers +FtdiBus.NTamd64.Copy2 = 10,system32 +FtdiBus.NTamd64.Copy3 = 10,syswow64 + +[Manufacturer] +%Ftdi%=FtdiHw,NTamd64 + +[FtdiHw] +%USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6001 +%USB\VID_0403&PID_6010&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6010&MI_00 +%USB\VID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6010&MI_01 +%USB\VID_0403&PID_6011&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6011&MI_00 +%USB\VID_0403&PID_6011&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6011&MI_01 +%USB\VID_0403&PID_6011&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6011&MI_02 +%USB\VID_0403&PID_6011&MI_03.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6011&MI_03 +%USB\VID_0403&PID_6014.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6014 +%USB\VID_0403&PID_6015.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6015 +%USB\VID_0403&PID_601B&REV_1400.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_601B&REV_1400 +%USB\VID_0403&PID_601B&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_601B&MI_00 +%USB\VID_0403&PID_601B&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_601B&MI_01 +%USB\VID_0403&PID_601B&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_601B&MI_02 +%USB\VID_0403&PID_601B&MI_03.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_601B&MI_03 +%USB\VID_0403&PID_601C&REV_1700.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_601C&REV_1700 +%USB\VID_0403&PID_601C&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_601C&MI_00 +%USB\VID_0403&PID_601C&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_601C&MI_01 +%USB\VID_0403&PID_601C&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_601C&MI_02 +%USB\VID_0403&PID_601C&MI_03.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_601C&MI_03 +%USB\VID_0403&PID_0FEC.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_0FEC +%USB\VID_0403&PID_6031&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6031&MI_00 +%USB\VID_0403&PID_6031&REV_2400.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6031&REV_2400 +%USB\VID_0403&PID_6032&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6032&MI_00 +%USB\VID_0403&PID_6032&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6032&MI_01 +%USB\VID_0403&PID_6033&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6033&MI_00 +%USB\VID_0403&PID_6033&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6033&MI_01 +%USB\VID_0403&PID_6033&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6033&MI_02 +%USB\VID_0403&PID_6034&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6034&MI_00 +%USB\VID_0403&PID_6034&REV_2500.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6034&REV_2500 +%USB\VID_0403&PID_6035&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6035&MI_00 +%USB\VID_0403&PID_6035&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6035&MI_01 +%USB\VID_0403&PID_6036&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6036&MI_00 +%USB\VID_0403&PID_6036&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6036&MI_01 +%USB\VID_0403&PID_6036&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6036&MI_02 +%USB\VID_0403&PID_6037&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6037&MI_00 +%USB\VID_0403&PID_6037&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6037&MI_01 +%USB\VID_0403&PID_6037&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6037&MI_02 +%USB\VID_0403&PID_6037&MI_03.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6037&MI_03 +%USB\VID_0403&PID_6038&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6038&MI_00 +%USB\VID_0403&PID_6038&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6038&MI_01 +%USB\VID_0403&PID_6038&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6038&MI_02 +%USB\VID_0403&PID_6038&MI_03.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6038&MI_03 +%USB\VID_0403&PID_6038&MI_04.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6038&MI_04 +%USB\VID_0403&PID_6039&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6039&MI_00 +%USB\VID_0403&PID_6039&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6039&MI_01 +%USB\VID_0403&PID_6039&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6039&MI_02 +%USB\VID_0403&PID_6039&MI_03.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6039&MI_03 +%USB\VID_0403&PID_6039&MI_04.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6039&MI_04 +%USB\VID_0403&PID_6039&MI_05.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6039&MI_05 +%USB\VID_0403&PID_603A&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_603A&MI_00 +%USB\VID_0403&PID_603A&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_603A&MI_01 +%USB\VID_0403&PID_603A&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_603A&MI_02 +%USB\VID_0403&PID_603A&MI_03.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_603A&MI_03 +%USB\VID_0403&PID_603A&MI_04.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_603A&MI_04 +%USB\VID_0403&PID_603A&MI_05.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_603A&MI_05 +%USB\VID_0403&PID_603A&MI_06.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_603A&MI_06 +%USB\VID_0403&PID_603E.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_603E +%USB\VID_0403&PID_6040&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6040&MI_00 +%USB\VID_0403&PID_6040&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6040&MI_01 +%USB\VID_0403&PID_6041&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6041&MI_00 +%USB\VID_0403&PID_6041&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6041&MI_01 +%USB\VID_0403&PID_6041&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6041&MI_02 +%USB\VID_0403&PID_6041&MI_03.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6041&MI_03 +%USB\VID_0403&PID_6042&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6042&MI_00 +%USB\VID_0403&PID_6042&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6042&MI_01 +%USB\VID_0403&PID_6043&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6043&MI_00 +%USB\VID_0403&PID_6043&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6043&MI_01 +%USB\VID_0403&PID_6043&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6043&MI_02 +%USB\VID_0403&PID_6043&MI_03.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6043&MI_03 +%USB\VID_0403&PID_6044.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6044 +%USB\VID_0403&PID_6045.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6045 +%USB\VID_0403&PID_6047&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6047&MI_00 +%USB\VID_0403&PID_6047&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6047&MI_01 +%USB\VID_0403&PID_6048&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6048&MI_00 +%USB\VID_0403&PID_6048&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6048&MI_01 +%USB\VID_0403&PID_6048&MI_02.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6048&MI_02 +%USB\VID_0403&PID_6048&MI_03.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6048&MI_03 +%USB\VID_0403&PID_6049.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_6049 +%USB\VID_0403&PID_0000.DeviceDesc%=FtdiBus.NT,USB\VID_0403&PID_0000 + +[FtdiHw.NTamd64] +%USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6001 +%USB\VID_0403&PID_6010&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6010&MI_00 +%USB\VID_0403&PID_6010&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6010&MI_01 +%USB\VID_0403&PID_6011&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6011&MI_00 +%USB\VID_0403&PID_6011&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6011&MI_01 +%USB\VID_0403&PID_6011&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6011&MI_02 +%USB\VID_0403&PID_6011&MI_03.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6011&MI_03 +%USB\VID_0403&PID_6014.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6014 +%USB\VID_0403&PID_6015.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6015 +%USB\VID_0403&PID_601B&REV_1400.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_601B&REV_1400 +%USB\VID_0403&PID_601B&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_601B&MI_00 +%USB\VID_0403&PID_601B&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_601B&MI_01 +%USB\VID_0403&PID_601B&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_601B&MI_02 +%USB\VID_0403&PID_601B&MI_03.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_601B&MI_03 +%USB\VID_0403&PID_601C&REV_1700.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_601C&REV_1700 +%USB\VID_0403&PID_601C&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_601C&MI_00 +%USB\VID_0403&PID_601C&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_601C&MI_01 +%USB\VID_0403&PID_601C&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_601C&MI_02 +%USB\VID_0403&PID_601C&MI_03.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_601C&MI_03 +%USB\VID_0403&PID_0FEC.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_0FEC +%USB\VID_0403&PID_6031&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6031&MI_00 +%USB\VID_0403&PID_6031&REV_2400.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6031&REV_2400 +%USB\VID_0403&PID_6032&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6032&MI_00 +%USB\VID_0403&PID_6032&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6032&MI_01 +%USB\VID_0403&PID_6033&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6033&MI_00 +%USB\VID_0403&PID_6033&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6033&MI_01 +%USB\VID_0403&PID_6033&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6033&MI_02 +%USB\VID_0403&PID_6034&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6034&MI_00 +%USB\VID_0403&PID_6034&REV_2500.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6035&REV_2500 +%USB\VID_0403&PID_6035&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6035&MI_00 +%USB\VID_0403&PID_6035&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6035&MI_01 +%USB\VID_0403&PID_6036&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6036&MI_00 +%USB\VID_0403&PID_6036&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6036&MI_01 +%USB\VID_0403&PID_6036&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6036&MI_02 +%USB\VID_0403&PID_6037&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6037&MI_00 +%USB\VID_0403&PID_6037&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6037&MI_01 +%USB\VID_0403&PID_6037&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6037&MI_02 +%USB\VID_0403&PID_6037&MI_03.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6037&MI_03 +%USB\VID_0403&PID_6038&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6038&MI_00 +%USB\VID_0403&PID_6038&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6038&MI_01 +%USB\VID_0403&PID_6038&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6038&MI_02 +%USB\VID_0403&PID_6038&MI_03.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6038&MI_03 +%USB\VID_0403&PID_6038&MI_04.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6038&MI_04 +%USB\VID_0403&PID_6039&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6039&MI_00 +%USB\VID_0403&PID_6039&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6039&MI_01 +%USB\VID_0403&PID_6039&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6039&MI_02 +%USB\VID_0403&PID_6039&MI_03.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6039&MI_03 +%USB\VID_0403&PID_6039&MI_04.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6039&MI_04 +%USB\VID_0403&PID_6039&MI_05.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6039&MI_05 +%USB\VID_0403&PID_603A&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_603A&MI_00 +%USB\VID_0403&PID_603A&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_603A&MI_01 +%USB\VID_0403&PID_603A&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_603A&MI_02 +%USB\VID_0403&PID_603A&MI_03.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_603A&MI_03 +%USB\VID_0403&PID_603A&MI_04.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_603A&MI_04 +%USB\VID_0403&PID_603A&MI_05.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_603A&MI_05 +%USB\VID_0403&PID_603A&MI_06.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_603A&MI_06 +%USB\VID_0403&PID_603E.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_603E +%USB\VID_0403&PID_6040&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6040&MI_00 +%USB\VID_0403&PID_6040&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6040&MI_01 +%USB\VID_0403&PID_6041&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6041&MI_00 +%USB\VID_0403&PID_6041&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6041&MI_01 +%USB\VID_0403&PID_6041&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6041&MI_02 +%USB\VID_0403&PID_6041&MI_03.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6041&MI_03 +%USB\VID_0403&PID_6042&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6042&MI_00 +%USB\VID_0403&PID_6042&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6042&MI_01 +%USB\VID_0403&PID_6043&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6043&MI_00 +%USB\VID_0403&PID_6043&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6043&MI_01 +%USB\VID_0403&PID_6043&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6043&MI_02 +%USB\VID_0403&PID_6043&MI_03.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6043&MI_03 +%USB\VID_0403&PID_6044.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6044 +%USB\VID_0403&PID_6045.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6045 +%USB\VID_0403&PID_6047&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6047&MI_00 +%USB\VID_0403&PID_6047&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6047&MI_01 +%USB\VID_0403&PID_6048&MI_00.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6048&MI_00 +%USB\VID_0403&PID_6048&MI_01.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6048&MI_01 +%USB\VID_0403&PID_6048&MI_02.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6048&MI_02 +%USB\VID_0403&PID_6048&MI_03.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6048&MI_03 +%USB\VID_0403&PID_6049.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_6049 +%USB\VID_0403&PID_0000.DeviceDesc%=FtdiBus.NTamd64,USB\VID_0403&PID_0000 + +[ControlFlags] +ExcludeFromSelect=* + +[FtdiBus.NT] +CopyFiles=FtdiBus.NT.Copy,FtdiBus.NT.Copy2 +AddReg=FtdiBus.NT.AddReg + +[FtdiBus.NTamd64] +CopyFiles=FtdiBus.NTamd64.Copy,FtdiBus.NTamd64.Copy2,FtdiBus.NTamd64.Copy3 +AddReg=FtdiBus.NT.AddReg + +[FtdiBus.NT.Services] +AddService = FTDIBUS, 0x00000002, FtdiBus.NT.AddService, FtdiBus.NT.EventLog_Inst + +[FtdiBus.NTamd64.Services] +AddService = FTDIBUS, 0x00000002, FtdiBus.NT.AddService, FtdiBus.NT.EventLog_Inst + +[FtdiBus.NT.AddService] +DisplayName = %SvcDesc% +ServiceType = 1 ; SERVICE_KERNEL_DRIVER +StartType = 3 ; SERVICE_DEMAND_START +ErrorControl = 1 ; SERVICE_ERROR_NORMAL +ServiceBinary = %10%\system32\drivers\ftdibus.sys +LoadOrderGroup = Base + +[FtdiBus.NT.AddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,ftdibus.sys +HKR,,EnumPropPages32,,"ftbusui.dll,FTBUSUIPropPageProvider" + +[FtdiBus.NT.EventLog_Inst] +AddReg = FtdiBus.NT.EventLog_Inst.AddReg + +[FtdiBus.NT.EventLog_Inst.AddReg] +HKR,,EventMessageFile,0x00020000,"%%SystemRoot%%\System32\IoLogMsg.dll;%%SystemRoot%%\System32\drivers\ftdibus.sys" +HKR,,TypesSupported,0x00010001,7 + +[FtdiBus.NT.HW] +AddReg=FtdiBus.NT.HW.AddReg + +[FtdiBus.NTamd64.HW] +AddReg=FtdiBus.NT.HW.AddReg + +[FtdiBus.NT.HW.AddReg] +;HKR,,"ConfigData",0x00010001,0x00000012 + +[FtdiBus.NT.Copy] +ftdibus.sys + +[FtdiBus.NT.Copy2] +ftbusui.dll +ftd2xx.dll +FTLang.dll + +[FtdiBus.NTamd64.Copy] +ftdibus.sys + +[FtdiBus.NTamd64.Copy2] +ftbusui.dll +ftd2xx.dll,ftd2xx64.dll +FTLang.dll + +[FtdiBus.NTamd64.Copy3] +ftd2xx.dll + +[Strings] +Ftdi="FTDI" +DESC="CDM Driver Package - Bus/D2XX Driver" +DriversDisk="FTDI USB Drivers Disk" +USB\VID_0403&PID_6001.DeviceDesc="USB Serial Converter" +USB\VID_0403&PID_6010&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6010&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6011&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6011&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6011&MI_02.DeviceDesc="USB Serial Converter C" +USB\VID_0403&PID_6011&MI_03.DeviceDesc="USB Serial Converter D" +USB\VID_0403&PID_6014.DeviceDesc="USB Serial Converter" +USB\VID_0403&PID_6015.DeviceDesc="USB Serial Converter" +USB\VID_0403&PID_601B&REV_1400.DeviceDesc="FT4222 Mode 3 Device" +USB\VID_0403&PID_601B&MI_00.DeviceDesc="FT4222 Interface A" +USB\VID_0403&PID_601B&MI_01.DeviceDesc="FT4222 Interface B" +USB\VID_0403&PID_601B&MI_02.DeviceDesc="FT4222 Interface C" +USB\VID_0403&PID_601B&MI_03.DeviceDesc="FT4222 Interface D" +USB\VID_0403&PID_601C&REV_1700.DeviceDesc="FT4222H Mode 3 Device" +USB\VID_0403&PID_601C&MI_00.DeviceDesc="FT4222H Interface A" +USB\VID_0403&PID_601C&MI_01.DeviceDesc="FT4222H Interface B" +USB\VID_0403&PID_601C&MI_02.DeviceDesc="FT4222H Interface C" +USB\VID_0403&PID_601C&MI_03.DeviceDesc="FT4222H Interface D" +USB\VID_0403&PID_0FEC.DeviceDesc="UMFT4222PROG" +USB\VID_0403&PID_6031&MI_00.DeviceDesc="USB Serial Converter" +USB\VID_0403&PID_6031&REV_2400.DeviceDesc="USB Serial Converter" +USB\VID_0403&PID_6032&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6032&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6033&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6033&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6033&MI_02.DeviceDesc="USB Serial Converter C" +USB\VID_0403&PID_6034&MI_00.DeviceDesc="USB Serial Converter" +USB\VID_0403&PID_6034&REV_2500.DeviceDesc="USB Serial Converter" +USB\VID_0403&PID_6035&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6035&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6036&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6036&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6036&MI_02.DeviceDesc="USB Serial Converter C" +USB\VID_0403&PID_6037&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6037&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6037&MI_02.DeviceDesc="USB Serial Converter C" +USB\VID_0403&PID_6037&MI_03.DeviceDesc="USB Serial Converter D" +USB\VID_0403&PID_6038&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6038&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6038&MI_02.DeviceDesc="USB Serial Converter C" +USB\VID_0403&PID_6038&MI_03.DeviceDesc="USB Serial Converter D" +USB\VID_0403&PID_6038&MI_04.DeviceDesc="USB Serial Converter E" +USB\VID_0403&PID_6039&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6039&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6039&MI_02.DeviceDesc="USB Serial Converter C" +USB\VID_0403&PID_6039&MI_03.DeviceDesc="USB Serial Converter D" +USB\VID_0403&PID_6039&MI_04.DeviceDesc="USB Serial Converter E" +USB\VID_0403&PID_6039&MI_05.DeviceDesc="USB Serial Converter F" +USB\VID_0403&PID_603A&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_603A&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_603A&MI_02.DeviceDesc="USB Serial Converter C" +USB\VID_0403&PID_603A&MI_03.DeviceDesc="USB Serial Converter D" +USB\VID_0403&PID_603A&MI_04.DeviceDesc="USB Serial Converter E" +USB\VID_0403&PID_603A&MI_05.DeviceDesc="USB Serial Converter F" +USB\VID_0403&PID_603A&MI_06.DeviceDesc="USB Serial Converter G" +USB\VID_0403&PID_603E.DeviceDesc="UMFTPD3A Programming Board" +USB\VID_0403&PID_6040&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6040&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6041&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6041&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6041&MI_02.DeviceDesc="USB Serial Converter C" +USB\VID_0403&PID_6041&MI_03.DeviceDesc="USB Serial Converter D" +USB\VID_0403&PID_6042&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6042&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6043&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6043&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6043&MI_02.DeviceDesc="USB Serial Converter C" +USB\VID_0403&PID_6043&MI_03.DeviceDesc="USB Serial Converter D" +USB\VID_0403&PID_6044.DeviceDesc="USB Serial Converter" +USB\VID_0403&PID_6045.DeviceDesc="USB Serial Converter" +USB\VID_0403&PID_6047&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6047&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6048&MI_00.DeviceDesc="USB Serial Converter A" +USB\VID_0403&PID_6048&MI_01.DeviceDesc="USB Serial Converter B" +USB\VID_0403&PID_6048&MI_02.DeviceDesc="USB Serial Converter C" +USB\VID_0403&PID_6048&MI_03.DeviceDesc="USB Serial Converter D" +USB\VID_0403&PID_6049.DeviceDesc="USB Serial Converter" +USB\VID_0403&PID_0000.DeviceDesc="USB Serial Converter" +SvcDesc="USB Serial Converter Driver" +ClassName="USB" diff --git a/build/windows/dist/drivers/FTDI USB Drivers/ftdiport.cat b/build/windows/dist/drivers/FTDI USB Drivers/ftdiport.cat index 53e5d4781b7..317d0a1a4a3 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/ftdiport.cat and b/build/windows/dist/drivers/FTDI USB Drivers/ftdiport.cat differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/ftdiport.inf b/build/windows/dist/drivers/FTDI USB Drivers/ftdiport.inf index 4283d722bd9..935b05766d3 100644 --- a/build/windows/dist/drivers/FTDI USB Drivers/ftdiport.inf +++ b/build/windows/dist/drivers/FTDI USB Drivers/ftdiport.inf @@ -1,164 +1,419 @@ -; FTDIPORT.INF -; -; Copyright � 2000-2011 Future Technology Devices International Limited -; -; USB serial port driver installation file for Windows 2000, XP, Server 2003, Vista, Server 2008, -; Windows 7 and Server 2008 R2 (x86 and x64). -; -; -; THIS SOFTWARE IS PROVIDED BY FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED ``AS IS'' AND ANY EXPRESS -; OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -; FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED -; BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -; BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -; THE POSSIBILITY OF SUCH DAMAGE. - -; FTDI DRIVERS MAY BE USED ONLY IN CONJUNCTION WITH PRODUCTS BASED ON FTDI PARTS. - -; FTDI DRIVERS MAY BE DISTRIBUTED IN ANY FORM AS LONG AS LICENSE INFORMATION IS NOT MODIFIED. - -; IF A CUSTOM VENDOR ID AND/OR PRODUCT ID OR DESCRIPTION STRING ARE USED, IT IS THE RESPONSIBILITY OF -; THE PRODUCT MANUFACTURER TO MAINTAIN ANY CHANGES AND SUBSEQUENT WHQL RE-CERTIFICATION AS A RESULT OF -; MAKING THESE CHANGES. -; - - -[Version] -Signature="$Windows NT$" -DriverPackageType=PlugAndPlay -DriverPackageDisplayName=%DESC% -Class=Ports -ClassGUID={4d36e978-e325-11ce-bfc1-08002be10318} -Provider=%FTDI% -CatalogFile=ftdiport.cat -DriverVer=03/18/2011,2.08.14 - -[SourceDisksNames] -1=%DriversDisk%,,, - -[SourceDisksFiles] -ftser2k.sys=1,i386 -ftserui2.dll=1,i386 -ftcserco.dll = 1,i386 - -[SourceDisksFiles.amd64] -ftser2k.sys=1,amd64 -ftserui2.dll=1,amd64 -ftcserco.dll = 1,amd64 - -[DestinationDirs] -FtdiPort.NT.Copy=10,system32\drivers -FtdiPort.NT.CopyUI=10,system32 -FtdiPort.NT.CopyCoInst=10,system32 - -[ControlFlags] -ExcludeFromSelect=* - -[Manufacturer] -%FTDI%=FtdiHw,NTamd64 - -[FtdiHw] -%VID_0403&PID_6001.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6001 -%VID_0403&PID_6010.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6010 -%VID_0403&PID_6011.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6011 -%VID_0403&PID_6014.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6014 - -[FtdiHw.NTamd64] -%VID_0403&PID_6001.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6001 -%VID_0403&PID_6010.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6010 -%VID_0403&PID_6011.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6011 -%VID_0403&PID_6014.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6014 - -[FtdiPort.NT.AddService] -DisplayName = %SvcDesc% -ServiceType = 1 ; SERVICE_KERNEL_DRIVER -StartType = 3 ; SERVICE_DEMAND_START -ErrorControl = 1 ; SERVICE_ERROR_NORMAL -ServiceBinary = %10%\system32\drivers\ftser2k.sys -LoadOrderGroup = Base - - -; -------------- Serenum Driver install section -[SerEnum_AddService] -DisplayName = %SerEnum.SvcDesc% -ServiceType = 1 ; SERVICE_KERNEL_DRIVER -StartType = 3 ; SERVICE_DEMAND_START -ErrorControl = 1 ; SERVICE_ERROR_NORMAL -ServiceBinary = %12%\serenum.sys -LoadOrderGroup = PNP Filter - -[FtdiPort.NT.AddReg] -HKR,,EnumPropPages32,,"ftserui2.dll,SerialPortPropPageProvider" - -[FtdiPort.NT.Copy] -ftser2k.sys - -[FtdiPort.NT.CopyUI] -ftserui2.dll - -[FtdiPort.NT.CopyCoInst] -ftcserco.dll - -[FtdiPort.NT] -CopyFiles=FtdiPort.NT.Copy,FtdiPort.NT.CopyUI -AddReg=FtdiPort.NT.AddReg - -[FtdiPort.NTamd64] -CopyFiles=FtdiPort.NT.Copy,FtdiPort.NT.CopyUI -AddReg=FtdiPort.NT.AddReg - -[FtdiPort.NT.HW] -AddReg=FtdiPort.NT.HW.AddReg - -[FtdiPort.NTamd64.HW] -AddReg=FtdiPort.NT.HW.AddReg - - -[FtdiPort.NT.Services] -AddService = FTSER2K, 0x00000002, FtdiPort.NT.AddService -AddService = Serenum,,SerEnum_AddService -DelService = FTSERIAL - -[FtdiPort.NTamd64.Services] -AddService = FTSER2K, 0x00000002, FtdiPort.NT.AddService -AddService = Serenum,,SerEnum_AddService -DelService = FTSERIAL - - -[FtdiPort.NT.HW.AddReg] -HKR,,"UpperFilters",0x00010000,"serenum" -HKR,,"ConfigData",1,11,00,3F,3F,10,27,00,00,88,13,00,00,C4,09,00,00,E2,04,00,00,71,02,00,00,38,41,00,00,9C,80,00,00,4E,C0,00,00,34,00,00,00,1A,00,00,00,0D,00,00,00,06,40,00,00,03,80,00,00,00,00,00,00,D0,80,00,00 -HKR,,"MinReadTimeout",0x00010001,0 -HKR,,"MinWriteTimeout",0x00010001,0 -HKR,,"LatencyTimer",0x00010001,16 - - -[FtdiPort.NT.CoInstallers] -AddReg=FtdiPort.NT.CoInstallers.AddReg -CopyFiles=FtdiPort.NT.CopyCoInst - -[FtdiPort.NTamd64.CoInstallers] -AddReg=FtdiPort.NT.CoInstallers.AddReg -CopyFiles=FtdiPort.NT.CopyCoInst - -[FtdiPort.NT.CoInstallers.AddReg] -HKR,,CoInstallers32,0x00010000,"ftcserco.Dll,FTCSERCoInstaller" - - -;---------------------------------------------------------------; - -[Strings] -FTDI="FTDI" -DESC="CDM Driver Package - VCP Driver" -DriversDisk="FTDI USB Drivers Disk" -PortsClassName = "Ports (COM & LPT)" -VID_0403&PID_6001.DeviceDesc="USB Serial Port" -VID_0403&PID_6010.DeviceDesc="USB Serial Port" -VID_0403&PID_6011.DeviceDesc="USB Serial Port" -VID_0403&PID_6014.DeviceDesc="USB Serial Port" -SvcDesc="USB Serial Port Driver" -SerEnum.SvcDesc="Serenum Filter Driver" - - +; FTDIPORT.INF +; +; Copyright � 2000-2021 Future Technology Devices International Limited +; +; USB serial port driver installation file for Windows 7, Windows 8, Windows 8.1, Windows 10, +; Server 2008 R2, Server 2012 R2 and Server 2016. + +; +; +; IMPORTANT NOTICE: PLEASE READ CAREFULLY BEFORE INSTALLING THE RELEVANT +; SOFTWARE: This licence agreement (Licence) is a legal agreement between you (Licensee or +; you) and Future Technology Devices International Limited of 2 Seaward Place, Centurion Business +; Park, Glasgow G41 1HH, Scotland (UK Company Number SC136640) (Licensor or we) for use of +; driver software provided by the Licensor(Software). +; +; BY INSTALLING OR USING THIS SOFTWARE YOU AGREE TO THE TERMS OF THIS LICENCE +; WHICH WILL BIND YOU. IF YOU DO NOT AGREE TO THE TERMS OF THIS LICENCE, WE ARE +; UNWILLING TO LICENSE THE SOFTWARE TO YOU AND YOU MUST DISCONTINUE +; INSTALLATION OF THE SOFTWARE NOW. +; +; 1. GRANT AND SCOPE OF LICENCE +; +; 1.1 In consideration of you agreeing to abide by the terms of this Licence, the Licensor hereby +; grants to you a non-exclusive, non-transferable, royalty free licence to use the Software on +; the terms of this Licence. +; +; 1.2 In this Licence a "Genuine FTDI Component" means an item of hardware that was +; manufactured for, and sold by, the Licensor or a member of the Licensor's group of +; companies. It does not include any counterfeit or fake products. +; +; 1.3 If you are a manufacturer of a device that includes a Genuine FTDI Component (each a +; "Device") then you may install the Software onto that device. If you are a seller or distributor +; of a Device then you may distribute the Software with the Device. If you are a user of a +; Device then you may install the Software on the Device, or onto a computer system in order +; to use the Device. +; +; 1.4 In each of those cases you may: +; +; 1.4.1 install and use the Software for your purposes only; and +; +; 1.4.2 only use the Software in conjunction with products based on and/or incorporating a +; Genuine FTDI Component. +; +; 1.5 The Software will not function properly on or with a component that is not a Genuine FTDI +; Component. Use of the Software as a driver for, or installation of the Software onto, a +; component that is not a Genuine FTDI Component, including without limitation counterfeit +; components, MAY IRRETRIEVABLY DAMAGE THAT COMPONENT. It is the Licensee's +; responsibility to make sure that all chips it installs the Software on, or uses the Software as a +; driver for, are Genuine FTDI Components. If in doubt then contact the Licensor. +; +; 2. If a custom vendor ID and/or product ID or description string are used, it is the responsibility of +; the product manufacturer to maintain any changes and subsequent WHQL re-certification as +; a result of making these changes. +; +; 3. LICENSEE'S UNDERTAKINGS +; +; 3.1 Except as expressly set out in this Licence or as permitted by any local law, you undertake: +; +; 3.1.1 not to copy the Software, except where such copying is incidental to normal use of +; the Software or where it is necessary for the purpose of back-up or operational +; security; +; +; 3.1.2 not to rent, lease, sub-license, loan, translate, merge, adapt, vary or modify the +; Software or any part of it; +; +; 3.1.3 not to make alterations to, or modifications of, the whole or any part of the Software +; nor permit the Software or any part of it to be combined with, or become +; incorporated in, any other programs; +; +; 3.1.4 not to disassemble, de-compile, reverse engineer or create derivative works based +; on the whole or any part of the Software; +; +; 3.1.5 to keep all copies of the Software secure; +; +; 3.1.6 to include the copyright notice of the Licensor on all entire and partial copies of the +; Software in any form; and +; +; 3.1.7 not to provide, or otherwise make available, the Software in any form, in whole or in +; part (including, but not limited to, program listings, object and source program +; listings, object code and source code) to any person. +; +; 4. INTELLECTUAL PROPERTY RIGHTS +; +; 4.1 You acknowledge that all intellectual property rights in the Software throughout the world +; belong to the Licensor, that rights in the Software are licensed (not sold) to you, and that you +; have no rights in, or to, the Software other than the right to use them in accordance with the +; terms of this Licence. +; +; 5. WARRANTY +; +; 5.1 To the maximum extent permitted by applicable law, the software is provided "as is". +; +; 5.2 All implied warranties, implied conditions and/or implied licences are excluded from this +; Licence, including but not limited to implied warranties of quality and/or fitness for purpose (in +; all cases) to the fullest extent permitted by law. +; +; 5.3 You acknowledge that the Software has not been developed to meet your individual +; requirements and that the Software may not be uninterrupted or free of bugs or errors. +; +; 6. LICENSOR'S LIABILITY +; +; 6.1 To the maximum extent permitted by applicable law, in no event shall the Licensor be liable +; for any: +; +; 6.1.1 special loss or damage; +; +; 6.1.2 incidental loss or damage; +; +; 6.1.3 indirect or consequential loss or damage: +; +; 6.1.4 loss of income; +; +; 6.1.5 loss of business; +; +; 6.1.6 loss of profits; +; +; 6.1.7 loss of revenue; +; +; 6.1.8 loss of contracts; +; +; 6.1.9 business interruption; +; +; 6.1.10 loss of the use of money or anticipated savings; +; +; 6.1.11 loss of information; +; +; 6.1.12 loss of opportunity; +; +; 6.1.13 loss of goodwill or reputation; and/or +; +; 6.1.14 loss of, damage to or corruption of data; +; +; (in each case) of any kind howsoever arising and whether caused by delict (including +; negligence), breach of contract or otherwise. +; +; 6.2 FTDI's total liability to you in relation to the Software shall not exceed 500 US Dollars. +; +; 6.3 Nothing in this Licence limits or excludes liability for death or personal injury or for fraud. +; +; 7. TERMINATION +; +; 7.1 The Licensor may terminate this Licence immediately if: +; +; 7.1.1 you fail to comply with any of the terms and conditions of the Licence; or +; +; 7.1.2 you commence or participate in any legal proceedings against the Licensor. +; +; 7.2 Upon termination: +; +; 7.2.1 all rights granted to you under this Licence shall cease; +; +; 7.2.2 you must cease all activities authorised by this Licence; and +; +; 7.2.3 you must immediately delete or remove the Software from all computer equipment +; in your possession and immediately destroy all copies of the Software then in your +; possession, custody or control. +; +; 8. TRANSFER OF RIGHTS AND OBLIGATIONS +; +; 8.1 You may not transfer, assign, charge or otherwise dispose of this Licence, or any of your +; rights or obligations arising under it. +; +; 8.2 The Licensor may transfer, assign, charge, sub-contract or otherwise dispose of this Licence, +; or any of his rights or obligations arising under it, at any time during the term of the Licence. +; +; 9. WAIVER +; +; 9.1 If the Licensor fails, at any time during the term of this Licence, to insist on strict performance +; of any of your obligations under this Licence, or if the Licensor fails to exercise any of the +; rights or remedies to which he is entitled under this Licence, this shall not constitute a waiver +; of such rights or remedies and shall not relieve you from compliance with such obligations. +; +; 9.2 A waiver by the Licensor of any default shall not constitute a waiver of any subsequent +; default. +; +; 9.3 No waiver by the Licensor of any of these terms and conditions shall be effective unless it is +; expressly stated to be a waiver and is communicated to you in writing. +; +; 10. SEVERABILITY +; +; If any of the terms of this Licence are determined by any competent authority to be invalid, +; unlawful or unenforceable to any extent, such term, condition or provision will to that extent be +; severed from the remaining terms, conditions and provisions which will continue to be valid to +; the fullest extent permitted by law. +; +; 11. ENTIRE AGREEMENT +; +; 11.1 This Licence constitutes the whole agreement between us and supersedes any previous +; arrangement, understanding or agreement between us, relating to the licensing of the +; Software. +; +; 11.2 Each party acknowledges that in entering into this Licence it does not rely on any statement, +; representation, warranty or understanding other than those expressly set out in this Licence. +; Each party agrees that it will have no remedy in respect of any statement, representation, +; warranty or understanding that is not expressly set out in this Licence. Each party agrees that +; its only remedy in respect of those representations, statements, assurances and warranties +; that are set out in this Licence will be for breach of contract in accordance with the terms of +; this Licence. +; +; 11.3 The parties agree that nothing in this Licence will limit or exclude any liability they may have +; for fraud. +; +; 12. MISCELLANEOUS +; +; 12.1 This Licence does not create a partnership or joint venture between the parties to it, nor +; authorise a party to act as agent for the other. +; +; 12.2 This Licence does not create any legal rights enforceable by any third party. +; +; 12.3 This Licence may only be varied by express written legal agreement between the parties. +; +; 13. LAW AND JURISDICTION +; +; This Licence, its subject matter or its formation (including non-contractual disputes or claims) +; shall be governed by and construed in accordance with Scots law and submitted to the non- +; exclusive jurisdiction of the Scottish courts. +; + + +[Version] +Signature="$Windows NT$" +DriverPackageType=PlugAndPlay +DriverPackageDisplayName=%DESC% +Class=Ports +ClassGUID={4d36e978-e325-11ce-bfc1-08002be10318} +Provider=%FTDI% +CatalogFile=ftdiport.cat +DriverVer=07/05/2021,2.12.36.4 + +[SourceDisksNames] +1=%DriversDisk%,,, + +[SourceDisksFiles] +ftser2k.sys=1,i386 +ftserui2.dll=1,i386 +ftcserco.dll = 1,i386 + +[SourceDisksFiles.amd64] +ftser2k.sys=1,amd64 +ftserui2.dll=1,amd64 +ftcserco.dll = 1,amd64 + +[DestinationDirs] +FtdiPort.NT.Copy=10,system32\drivers +FtdiPort.NT.CopyUI=10,system32 +FtdiPort.NT.CopyCoInst=10,system32 + +[ControlFlags] +ExcludeFromSelect=* + +[Manufacturer] +%FTDI%=FtdiHw,NTamd64 + +[FtdiHw] +%VID_0403&PID_6001.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6001 +%VID_0403&PID_6010.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6010 +%VID_0403&PID_6011.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6011 +%VID_0403&PID_6014.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6014 +%VID_0403&PID_6015.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6015 +%VID_0403&PID_6031.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6031 +%VID_0403&PID_6032.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6032 +%VID_0403&PID_6033.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6033 +%VID_0403&PID_6034.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6034 +%VID_0403&PID_6035.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6035 +%VID_0403&PID_6036.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6036 +%VID_0403&PID_6037.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6037 +%VID_0403&PID_6038.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6038 +%VID_0403&PID_6039.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6039 +%VID_0403&PID_603A.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_603A +%VID_0403&PID_6040.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6040 +%VID_0403&PID_6041.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6041 +%VID_0403&PID_6042.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6042 +%VID_0403&PID_6043.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6043 +%VID_0403&PID_6044.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6044 +%VID_0403&PID_6045.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6045 +%VID_0403&PID_6047.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6047 +%VID_0403&PID_6048.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6048 +%VID_0403&PID_6049.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6049 +%VID_0403&PID_0000.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_0000 + +[FtdiHw.NTamd64] +%VID_0403&PID_6001.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6001 +%VID_0403&PID_6010.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6010 +%VID_0403&PID_6011.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6011 +%VID_0403&PID_6014.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6014 +%VID_0403&PID_6015.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6015 +%VID_0403&PID_6031.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6031 +%VID_0403&PID_6032.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6032 +%VID_0403&PID_6033.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6033 +%VID_0403&PID_6034.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6034 +%VID_0403&PID_6035.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6035 +%VID_0403&PID_6036.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6036 +%VID_0403&PID_6037.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6037 +%VID_0403&PID_6038.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6038 +%VID_0403&PID_6039.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6039 +%VID_0403&PID_603A.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_603A +%VID_0403&PID_6040.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6040 +%VID_0403&PID_6041.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6041 +%VID_0403&PID_6042.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6042 +%VID_0403&PID_6043.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6043 +%VID_0403&PID_6044.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6044 +%VID_0403&PID_6045.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6045 +%VID_0403&PID_6047.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6047 +%VID_0403&PID_6048.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6048 +%VID_0403&PID_6049.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6049 +%VID_0403&PID_0000.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_0000 + +[FtdiPort.NT.AddService] +DisplayName = %SvcDesc% +ServiceType = 1 ; SERVICE_KERNEL_DRIVER +StartType = 3 ; SERVICE_DEMAND_START +ErrorControl = 1 ; SERVICE_ERROR_NORMAL +ServiceBinary = %10%\system32\drivers\ftser2k.sys +LoadOrderGroup = Base + + +; -------------- Serenum Driver install section +[SerEnum_AddService] +DisplayName = %SerEnum.SvcDesc% +ServiceType = 1 ; SERVICE_KERNEL_DRIVER +StartType = 3 ; SERVICE_DEMAND_START +ErrorControl = 1 ; SERVICE_ERROR_NORMAL +ServiceBinary = %12%\serenum.sys +LoadOrderGroup = PNP Filter + +[FtdiPort.NT.AddReg] +HKR,,EnumPropPages32,,"ftserui2.dll,SerialPortPropPageProvider" + +[FtdiPort.NT.Copy] +ftser2k.sys + +[FtdiPort.NT.CopyUI] +ftserui2.dll + +[FtdiPort.NT.CopyCoInst] +ftcserco.dll + +[FtdiPort.NT] +CopyFiles=FtdiPort.NT.Copy,FtdiPort.NT.CopyUI +AddReg=FtdiPort.NT.AddReg + +[FtdiPort.NTamd64] +CopyFiles=FtdiPort.NT.Copy,FtdiPort.NT.CopyUI +AddReg=FtdiPort.NT.AddReg + +[FtdiPort.NT.HW] +AddReg=FtdiPort.NT.HW.AddReg + +[FtdiPort.NTamd64.HW] +AddReg=FtdiPort.NT.HW.AddReg + + +[FtdiPort.NT.Services] +AddService = FTSER2K, 0x00000002, FtdiPort.NT.AddService +AddService = Serenum,,SerEnum_AddService +DelService = FTSERIAL + +[FtdiPort.NTamd64.Services] +AddService = FTSER2K, 0x00000002, FtdiPort.NT.AddService +AddService = Serenum,,SerEnum_AddService +DelService = FTSERIAL + + +[FtdiPort.NT.HW.AddReg] +HKR,,"UpperFilters",0x00010000,"serenum" +HKR,,"ConfigData",1,11,00,3F,3F,10,27,00,00,88,13,00,00,C4,09,00,00,E2,04,00,00,71,02,00,00,38,41,00,00,9C,80,00,00,4E,C0,00,00,34,00,00,00,1A,00,00,00,0D,00,00,00,06,40,00,00,03,80,00,00,00,00,00,00,D0,80,00,00 +HKR,,"MinReadTimeout",0x00010001,0 +HKR,,"MinWriteTimeout",0x00010001,0 +HKR,,"LatencyTimer",0x00010001,16 + + +[FtdiPort.NT.CoInstallers] +AddReg=FtdiPort.NT.CoInstallers.AddReg +CopyFiles=FtdiPort.NT.CopyCoInst + +[FtdiPort.NTamd64.CoInstallers] +AddReg=FtdiPort.NT.CoInstallers.AddReg +CopyFiles=FtdiPort.NT.CopyCoInst + +[FtdiPort.NT.CoInstallers.AddReg] +HKR,,CoInstallers32,0x00010000,"ftcserco.Dll,FTCSERCoInstaller" + + +;---------------------------------------------------------------; + +[Strings] +FTDI="FTDI" +DESC="CDM Driver Package - VCP Driver" +DriversDisk="FTDI USB Drivers Disk" +PortsClassName = "Ports (COM & LPT)" +VID_0403&PID_6001.DeviceDesc="USB Serial Port" +VID_0403&PID_6010.DeviceDesc="USB Serial Port" +VID_0403&PID_6011.DeviceDesc="USB Serial Port" +VID_0403&PID_6014.DeviceDesc="USB Serial Port" +VID_0403&PID_6015.DeviceDesc="USB Serial Port" +VID_0403&PID_6031.DeviceDesc="USB Serial Port" +VID_0403&PID_6032.DeviceDesc="USB Serial Port" +VID_0403&PID_6033.DeviceDesc="USB Serial Port" +VID_0403&PID_6034.DeviceDesc="USB Serial Port" +VID_0403&PID_6035.DeviceDesc="USB Serial Port" +VID_0403&PID_6036.DeviceDesc="USB Serial Port" +VID_0403&PID_6037.DeviceDesc="USB Serial Port" +VID_0403&PID_6038.DeviceDesc="USB Serial Port" +VID_0403&PID_6039.DeviceDesc="USB Serial Port" +VID_0403&PID_603A.DeviceDesc="USB Serial Port" +VID_0403&PID_6040.DeviceDesc="USB Serial Port" +VID_0403&PID_6041.DeviceDesc="USB Serial Port" +VID_0403&PID_6042.DeviceDesc="USB Serial Port" +VID_0403&PID_6043.DeviceDesc="USB Serial Port" +VID_0403&PID_6044.DeviceDesc="USB Serial Port" +VID_0403&PID_6045.DeviceDesc="USB Serial Port" +VID_0403&PID_6047.DeviceDesc="USB Serial Port" +VID_0403&PID_6048.DeviceDesc="USB Serial Port" +VID_0403&PID_6049.DeviceDesc="USB Serial Port" +VID_0403&PID_0000.DeviceDesc="USB Serial Port" +SvcDesc="USB Serial Port Driver" +SerEnum.SvcDesc="Serenum Filter Driver" + + diff --git a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftbusui.dll b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftbusui.dll index 14e5812eb26..0ce241ea25c 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftbusui.dll and b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftbusui.dll differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftcserco.dll b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftcserco.dll index ebb70526864..db592a2509a 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftcserco.dll and b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftcserco.dll differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftd2xx.dll b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftd2xx.dll index 3b8c0abdbce..1ae4df40f3b 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftd2xx.dll and b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftd2xx.dll differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftd2xx.lib b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftd2xx.lib index bccb53be93e..5dc71ee5b31 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftd2xx.lib and b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftd2xx.lib differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftdibus.sys b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftdibus.sys index 40af396a0ea..ccc4d9c0e4b 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftdibus.sys and b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftdibus.sys differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftlang.dll b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftlang.dll index 6b663a7eb85..9499e3844ba 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftlang.dll and b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftlang.dll differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftser2k.sys b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftser2k.sys index 85b02d35f23..872bd52c046 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftser2k.sys and b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftser2k.sys differ diff --git a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftserui2.dll b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftserui2.dll index 35bc3932a95..d627ccf529a 100644 Binary files a/build/windows/dist/drivers/FTDI USB Drivers/i386/ftserui2.dll and b/build/windows/dist/drivers/FTDI USB Drivers/i386/ftserui2.dll differ diff --git a/build/windows/launcher/application.ico b/build/windows/launcher/application.ico index a9f3a7acbe5..1db9b9f4ee3 100644 Binary files a/build/windows/launcher/application.ico and b/build/windows/launcher/application.ico differ diff --git a/build/windows/launcher/arduino.l4j.ini b/build/windows/launcher/arduino.l4j.ini index e595cea936c..4be17b11594 100644 --- a/build/windows/launcher/arduino.l4j.ini +++ b/build/windows/launcher/arduino.l4j.ini @@ -1,2 +1,4 @@ --Xms128M --Xmx512M +-Xms128M +-Xmx512M +-Dfile.encoding=UTF8 +-Djava.net.preferIPv4Stack=true diff --git a/build/windows/launcher/config.xml b/build/windows/launcher/config.xml index c427edf0bb4..6ff7ebc57d0 100644 --- a/build/windows/launcher/config.xml +++ b/build/windows/launcher/config.xml @@ -33,23 +33,24 @@ %EXEDIR%/lib/commons-compress-1.8.jar %EXEDIR%/lib/commons-exec-1.1.jar %EXEDIR%/lib/commons-httpclient-3.1.jar - %EXEDIR%/lib/commons-lang3-3.3.2.jar + %EXEDIR%/lib/commons-lang3-3.8.1.jar %EXEDIR%/lib/commons-logging-1.0.4.jar %EXEDIR%/lib/commons-net-3.3.jar + %EXEDIR%/lib/commons-io-2.6.jar %EXEDIR%/lib/jackson-annotations-2.9.5.jar %EXEDIR%/lib/jackson-core-2.9.5.jar %EXEDIR%/lib/jackson-databind-2.9.5.jar - %EXEDIR%/lib/jackson-module-mrbean-2.9.5.jar %EXEDIR%/lib/java-semver-0.8.0.jar - %EXEDIR%/lib/jmdns-3.5.3.jar + %EXEDIR%/lib/jmdns-3.5.5.jar + %EXEDIR%/lib/jtouchbar-1.0.0.jar %EXEDIR%/lib/slf4j-simple-1.7.22.jar %EXEDIR%/lib/slf4j-api-1.7.22.jar %EXEDIR%/lib/jna-4.2.2.jar %EXEDIR%/lib/jna-platform-4.2.2.jar %EXEDIR%/lib/jsch-0.1.50.jar - %EXEDIR%/lib/jssc-2.8.0-arduino1.jar + %EXEDIR%/lib/jssc-2.8.0-arduino4.jar %EXEDIR%/lib/pde.jar - %EXEDIR%/lib/rsyntaxtextarea-2.6.1.jar + %EXEDIR%/lib/rsyntaxtextarea-3.0.3-SNAPSHOT.jar %EXEDIR%/lib/xml-apis-1.3.04.jar %EXEDIR%/lib/xml-apis-ext-1.3.04.jar %EXEDIR%/lib/xmlgraphics-commons-2.0.jar diff --git a/build/windows/launcher/config_debug.xml b/build/windows/launcher/config_debug.xml index 00fcdd0cb64..238f7b72458 100644 --- a/build/windows/launcher/config_debug.xml +++ b/build/windows/launcher/config_debug.xml @@ -33,23 +33,24 @@ %EXEDIR%/lib/commons-compress-1.8.jar %EXEDIR%/lib/commons-exec-1.1.jar %EXEDIR%/lib/commons-httpclient-3.1.jar - %EXEDIR%/lib/commons-lang3-3.3.2.jar + %EXEDIR%/lib/commons-lang3-3.8.1.jar %EXEDIR%/lib/commons-logging-1.0.4.jar %EXEDIR%/lib/commons-net-3.3.jar + %EXEDIR%/lib/commons-io-2.6.jar %EXEDIR%/lib/jackson-annotations-2.9.5.jar %EXEDIR%/lib/jackson-core-2.9.5.jar %EXEDIR%/lib/jackson-databind-2.9.5.jar - %EXEDIR%/lib/jackson-module-mrbean-2.9.5.jar %EXEDIR%/lib/java-semver-0.8.0.jar - %EXEDIR%/lib/jmdns-3.5.3.jar + %EXEDIR%/lib/jmdns-3.5.5.jar + %EXEDIR%/lib/jtouchbar-1.0.0.jar %EXEDIR%/lib/slf4j-simple-1.7.22.jar %EXEDIR%/lib/slf4j-api-1.7.22.jar %EXEDIR%/lib/jna-4.2.2.jar %EXEDIR%/lib/jna-platform-4.2.2.jar %EXEDIR%/lib/jsch-0.1.50.jar - %EXEDIR%/lib/jssc-2.8.0-arduino1.jar + %EXEDIR%/lib/jssc-2.8.0-arduino4.jar %EXEDIR%/lib/pde.jar - %EXEDIR%/lib/rsyntaxtextarea-2.6.1.jar + %EXEDIR%/lib/rsyntaxtextarea-3.0.3-SNAPSHOT.jar %EXEDIR%/lib/xml-apis-1.3.04.jar %EXEDIR%/lib/xml-apis-ext-1.3.04.jar %EXEDIR%/lib/xmlgraphics-commons-2.0.jar diff --git a/hardware/README.md b/hardware/README.md new file mode 100644 index 00000000000..e7d448b6c8c --- /dev/null +++ b/hardware/README.md @@ -0,0 +1,46 @@ +### Cores have been moved +Originally, the main Arduino repository contained Arduino +platforms/cores in this directory. Since then, these have been moved to +their own repositories instead (see commit 2e98854 and d6b40d0). + +The official Arduino cores can now be found here: + - https://github.com/arduino/ArduinoCore-avr + - https://github.com/arduino/ArduinoCore-sam + - https://github.com/arduino/ArduinoCore-samd + +##### Migrating commits +If you need to move commits and/or pull requests over from this +repository into the separate core repositories, an approach to handle +that mostly automatically is suggested below. These are for the avr +core, but with some changes, it should apply to sam as well. + + # Start out in the Arduino repo, by rebasing your branch on top of the + # last commit that still contained the avr core. This makes sure that + # any conflicts are resolved before transferring the commits, since git + # am is not so helpful with conflicts. + git checkout my-branch + git rebase -i 950d88dcbe7b9b2d348fb25b5ffcd0c6d2d30b97 + + # Then, generate patch files for all of your commits, into the patches + # directory. + git format-patch -o patches 950d88dcbe7b9b2d348fb25b5ffcd0c6d2d30b97 + + # These steps are optional, but if your commits contain changes to other + # files than the avr core, this re-applies your commits with only the + # avr core changes, and regenerates the patches + git checkout -b tmp-branch 950d88dcbe7b9b2d348fb25b5ffcd0c6d2d30b97 + git am --include 'hardware/arduino/avr/*' patches/* + rm -rf patches/ + git format-patch -o patches 950d88dcbe7b9b2d348fb25b5ffcd0c6d2d30b97 + + # Then, in the ArduinoCore-avr repo, create a new branch on the commit + # matching the Arduino repo. + git checkout -b my-branch b7c607663fecc232e598f2c0acf419ceb0b7078c + + # Apply our previously generated patches (update the path to point to + # wherever you generated the patches previously). -p4 tells git am to + # strip the a/hardware/arduino/avr part of the paths before applying. + git am -p4 /path/to/patches/* + + # Finally, rebase on top of master + git rebase origin/master diff --git a/hardware/package_index_bundled.json b/hardware/package_index_bundled.json index b554e05f0b8..a7b29bf3787 100644 --- a/hardware/package_index_bundled.json +++ b/hardware/package_index_bundled.json @@ -12,26 +12,26 @@ { "name": "Arduino AVR Boards", "architecture": "avr", - "version": "1.6.22", + "version": "1.8.3", "category": "Arduino", "help": { "online": "http://www.arduino.cc/en/Reference/HomePage" }, - "url": "http://downloads.arduino.cc/cores/avr-1.6.22.tar.bz2", - "archiveFileName": "avr-1.6.22.tar.bz2", - "checksum": "SHA-256:e6399b2a687dd8485cbbfcbfbbd4f8e2e15fe535bbcfd1d81bf93d01e31f7d76", - "size": "4907422", + "url": "http://downloads.arduino.cc/cores/avr-1.8.3.tar.bz2", + "archiveFileName": "avr-1.8.3.tar.bz2", + "checksum": "SHA-256:de8a9b982477762d3d3e52fc2b682cdd8ff194dc3f1d46f4debdea6a01b33c14", + "size": "4941548", "boards": [ {"name": "Arduino Yún"}, - {"name": "Arduino/Genuino Uno"}, + {"name": "Arduino Uno"}, {"name": "Arduino Uno WiFi"}, {"name": "Arduino Diecimila"}, {"name": "Arduino Nano"}, - {"name": "Arduino/Genuino Mega"}, + {"name": "Arduino Mega"}, {"name": "Arduino MegaADK"}, {"name": "Arduino Leonardo"}, {"name": "Arduino Leonardo Ethernet"}, - {"name": "Arduino/Genuino Micro"}, + {"name": "Arduino Micro"}, {"name": "Arduino Esplora"}, {"name": "Arduino Mini"}, {"name": "Arduino Ethernet"}, @@ -53,17 +53,17 @@ { "packager": "arduino", "name": "avr-gcc", - "version": "5.4.0-atmel3.6.1-arduino2" + "version": "7.3.0-atmel3.6.1-arduino7" }, { "packager": "arduino", "name": "avrdude", - "version": "6.3.0-arduino14" + "version": "6.3.0-arduino17" }, { "packager": "arduino", "name": "arduinoOTA", - "version": "1.2.1" + "version": "1.3.0" } ] } @@ -71,124 +71,145 @@ "tools": [ { "name": "avr-gcc", - "version": "5.4.0-atmel3.6.1-arduino2", + "version": "7.3.0-atmel3.6.1-arduino7", "systems": [ { - "size": "31449123", - "checksum": "SHA-256:6741f95cc3182a8729cf9670eb13d8dc5a19e881639ca61e53a2d78346a4e99f", + "size": "34683056", + "checksum": "SHA-256:3903553d035da59e33cff9941b857c3cb379cb0638105dfdf69c97f0acc8e7b5", "host": "arm-linux-gnueabihf", - "archiveFileName": "avr-gcc-5.4.0-atmel3.6.1-arduino2-armhf-pc-linux-gnu.tar.bz2", - "url": "http://downloads.arduino.cc/tools/avr-gcc-5.4.0-atmel3.6.1-arduino2-armhf-pc-linux-gnu.tar.bz2" + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino7-arm-linux-gnueabihf.tar.bz2", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-arm-linux-gnueabihf.tar.bz2" }, { - "size": "31894498", - "checksum": "SHA-256:abc50137543ba73e227b4d1b8510fff50a474bacd24f2c794f852904963849f8", - "host": "i386-apple-darwin11", - "archiveFileName": "avr-gcc-5.4.0-atmel3.6.1-arduino2-i386-apple-darwin11.tar.bz2", - "url": "http://downloads.arduino.cc/tools/avr-gcc-5.4.0-atmel3.6.1-arduino2-i386-apple-darwin11.tar.bz2" + "size": "38045723", + "checksum": "SHA-256:03d322b9df6da17289e9e7c6233c34a8535d9c645c19efc772ba19e56914f339", + "host": "aarch64-linux-gnu", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino7-aarch64-pc-linux-gnu.tar.bz2", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-aarch64-pc-linux-gnu.tar.bz2" + }, + { + "size": "36684546", + "checksum": "SHA-256:f6ed2346953fcf88df223469088633eb86de997fa27ece117fd1ef170d69c1f8", + "host": "x86_64-apple-darwin14", + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino7-x86_64-apple-darwin14.tar.bz2", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-x86_64-apple-darwin14.tar.bz2" }, { - "size": "45923772", - "checksum": "SHA-256:7eb5691a379b547798fae535b05d68bc02d3969f12d051b8a5a5f2f350ab0a7f", + "size": "52519412", + "checksum": "SHA-256:a54f64755fff4cb792a1495e5defdd789902a2a3503982e81b898299cf39800e", "host": "i686-mingw32", - "archiveFileName": "avr-gcc-5.4.0-atmel3.6.1-arduino2-i686-w64-mingw32.zip", - "url": "http://downloads.arduino.cc/tools/avr-gcc-5.4.0-atmel3.6.1-arduino2-i686-w64-mingw32.zip" + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino7-i686-w64-mingw32.zip", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-i686-w64-mingw32.zip" }, { - "size": "33022916", - "checksum": "SHA-256:51f87e04f3cdaa73565c751051ac118e02904ad8478f1475b300e1bffcd5538f", + "size": "37176991", + "checksum": "SHA-256:954bbffb33545bcdcd473af993da2980bf32e8461ff55a18e0eebc7b2ef69a4c", "host": "i686-linux-gnu", - "archiveFileName": "avr-gcc-5.4.0-atmel3.6.1-arduino2-i686-pc-linux-gnu.tar.bz2", - "url": "http://downloads.arduino.cc/tools/avr-gcc-5.4.0-atmel3.6.1-arduino2-i686-pc-linux-gnu.tar.bz2" + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino7-i686-pc-linux-gnu.tar.bz2", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-i686-pc-linux-gnu.tar.bz2" }, { - "size": "33522375", - "checksum": "SHA-256:05422b0d73b10357c12ea938f02cf50529422b89a4722756e70024aed3e69185", + "size": "37630618", + "checksum": "SHA-256:bd8c37f6952a2130ac9ee32c53f6a660feb79bee8353c8e289eb60fdcefed91e", "host": "x86_64-linux-gnu", - "archiveFileName": "avr-gcc-5.4.0-atmel3.6.1-arduino2-x86_64-pc-linux-gnu.tar.bz2", - "url": "http://downloads.arduino.cc/tools/avr-gcc-5.4.0-atmel3.6.1-arduino2-x86_64-pc-linux-gnu.tar.bz2" + "archiveFileName": "avr-gcc-7.3.0-atmel3.6.1-arduino7-x86_64-pc-linux-gnu.tar.bz2", + "url": "http://downloads.arduino.cc/tools/avr-gcc-7.3.0-atmel3.6.1-arduino7-x86_64-pc-linux-gnu.tar.bz2" } ] }, { "name": "avrdude", - "version": "6.3.0-arduino14", + "version": "6.3.0-arduino17", "systems": [ { - "size": "219616", - "checksum": "SHA-256:d1a06275490d59a431c419788bbc53ffd5a79510dac1a35e63cf488621ba5589", + "size": "219631", + "checksum": "SHA-256:2a8e68c5d803aa6f902ef219f177ec3a4c28275d85cbe272962ad2cd374f50d1", "host": "arm-linux-gnueabihf", - "archiveFileName": "avrdude-6.3.0-arduino14-armhf-pc-linux-gnu.tar.bz2", - "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino14-armhf-pc-linux-gnu.tar.bz2" + "archiveFileName": "avrdude-6.3.0-arduino17-armhf-pc-linux-gnu.tar.bz2", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino17-armhf-pc-linux-gnu.tar.bz2" }, { - "size": "256917", - "checksum": "SHA-256:47d03991522722ce92120c60c4118685b7861909d895f34575001137961e4a63", - "host": "i386-apple-darwin11", - "archiveFileName": "avrdude-6.3.0-arduino14-i386-apple-darwin12.tar.bz2", - "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino14-i386-apple-darwin11.tar.bz2" + "size": "229852", + "checksum": "SHA-256:6cf948f751acfe7b96684537f2291c766ec8b54b4f7dc95539864821456fa9fc", + "host": "aarch64-linux-gnu", + "archiveFileName": "avrdude-6.3.0-arduino17-aarch64-pc-linux-gnu.tar.bz2", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino17-aarch64-pc-linux-gnu.tar.bz2" }, { - "size": "253366", - "checksum": "SHA-256:7986e8f3059353dc08f9234f7dbc98d9b2fa2242f046f02a8243a060f7358bfc", + "size": "279045", + "checksum": "SHA-256:120cc9edaae699e7e9ac50b1b8eb0e7d51fdfa555bac54233c2511e6ee5418c9", + "host": "x86_64-apple-darwin12", + "archiveFileName": "avrdude-6.3.0-arduino17-x86_64-apple-darwin12.tar.bz2", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino17-x86_64-apple-darwin12.tar.bz2" + }, + { + "size": "254271", + "checksum": "SHA-256:accdfb920af2aabf4f7461d2ac73c0751760f525216dc4e7657427a78c60d13d", "host": "x86_64-linux-gnu", - "archiveFileName": "avrdude-6.3.0-arduino14-x86_64-pc-linux-gnu.tar.bz2", - "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino14-x86_64-pc-linux-gnu.tar.bz2" + "archiveFileName": "avrdude-6.3.0-arduino17-x86_64-pc-linux-gnu.tar.bz2", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino17-x86_64-pc-linux-gnu.tar.bz2" }, { - "size": "244293", - "checksum": "SHA-256:4f100e3843c635064997df91d2a079ab15cd30d1d7fa227280abe6a7c3bc74ca", + "size": "244550", + "checksum": "SHA-256:5c8cc6c17db9300e1451fe41cd7178b0442b4490ee6fdbc0aed9811aef96c05f", "host": "i686-linux-gnu", - "archiveFileName": "avrdude-6.3.0-arduino14-i686-pc-linux-gnu.tar.bz2", - "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino14-i686-pc-linux-gnu.tar.bz2" + "archiveFileName": "avrdude-6.3.0-arduino17-i686-pc-linux-gnu.tar.bz2", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino17-i686-pc-linux-gnu.tar.bz2" }, { - "size": "328363", - "checksum": "SHA-256:69293e0de2eff8de89f553477795c25005f674a320bbba4b0222beb0194aa297", + "size": "328460", + "checksum": "SHA-256:e99188873c7c5ad8f8f906f068c33600e758b2e36cce3adbd518a21bd266749d", "host": "i686-mingw32", - "archiveFileName": "avrdude-6.3.0-arduino14-i686-w64-mingw32.zip", - "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino14-i686-w64-mingw32.zip" + "archiveFileName": "avrdude-6.3.0-arduino17-i686-w64-mingw32.zip", + "url": "http://downloads.arduino.cc/tools/avrdude-6.3.0-arduino17-i686-w64-mingw32.zip" } ] }, { "name": "arduinoOTA", - "version": "1.2.1", + "version": "1.3.0", "systems": [ { - "size": "2133779", - "checksum": "SHA-256:2ffdf64b78486c1d0bf28dc23d0ca36ab75ca92e84b9487246da01888abea6d4", + "size": "2633516", + "checksum": "SHA-256:3e7f59d6fbc7a724598303f0d3289d0c4fd137a8973437980658379a024887b2", "host": "i686-linux-gnu", - "archiveFileName": "arduinoOTA-1.2.1-linux_386.tar.bz2", - "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.1-linux_386.tar.bz2" + "archiveFileName": "arduinoOTA-1.3.0-linux_386.tar.bz2", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.3.0-linux_386.tar.bz2" }, { - "size": "2257689", - "checksum": "SHA-256:5b82310d53688480f34a916aac31cd8f2dd2be65dd8fa6c2445262262e1948f9", + "size": "2716248", + "checksum": "SHA-256:aa45ee2441ffc3a122daec5802941d1fa2ac47adf5c5c481b5e0daa4dc259ffa", "host": "x86_64-linux-gnu", - "archiveFileName": "arduinoOTA-1.2.1-linux_amd64.tar.bz2", - "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.1-linux_amd64.tar.bz2" + "archiveFileName": "arduinoOTA-1.3.0-linux_amd64.tar.bz2", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.3.0-linux_amd64.tar.bz2" }, { - "size": "2093132", - "checksum": "SHA-256:ad54b3dcd586212941fd992bab573b53d13207a419a3f2981c970a085ae0e9e0", + "size": "2567435", + "checksum": "SHA-256:1888587409b56aef4ba0ab0e6703b3dccba7cc3a022756ba9b908247e5d5a656", "host": "arm-linux-gnueabihf", - "archiveFileName": "arduinoOTA-1.2.1-linux_arm.tar.bz2", - "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.1-linux_arm.tar.bz2" + "archiveFileName": "arduinoOTA-1.3.0-linux_arm.tar.bz2", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.3.0-linux_arm.tar.bz2" + }, + { + "size": "2472427", + "checksum": "SHA-256:835ed8f37cffac37e979d1b0f6041559592d3d98be52f0e8611b76c4858e4113", + "host": "aarch64-linux-gnu", + "archiveFileName": "arduinoOTA-1.3.0-linux_arm64.tar.bz2", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.3.0-linux_arm64.tar.bz2" }, { - "size": "2244088", - "checksum": "SHA-256:93a6d9f9c0c765d237be1665bf7a0a8e2b0b6d2a8531eae92db807f5515088a7", + "size": "2766116", + "checksum": "SHA-256:d5d0f82ff829c0e434d12a2ee640a6fbd78f893ab37782edbb8b5bf2359d119e", "host": "i386-apple-darwin11", - "archiveFileName": "arduinoOTA-1.2.1-darwin_amd64.tar.bz2", - "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.1-darwin_amd64.tar.bz2" + "archiveFileName": "arduinoOTA-1.3.0-darwin_amd64.tar.bz2", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.3.0-darwin_amd64.tar.bz2" }, { - "size": "2237511", - "checksum": "SHA-256:e1ebf21f2c073fce25c09548c656da90d4ef6c078401ec6f323e0c58335115e5", + "size": "2768948", + "checksum": "SHA-256:051943844eee442460d2c709edefadca184287fffd2b6c100dd53aa742aa05f6", "host": "i686-mingw32", - "archiveFileName": "arduinoOTA-1.2.1-windows_386.zip", - "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.2.1-windows_386.zip" + "archiveFileName": "arduinoOTA-1.3.0-windows_386.zip", + "url": "http://downloads.arduino.cc/tools/arduinoOTA-1.3.0-windows_386.zip" } ] } diff --git a/lib_sync b/lib_sync deleted file mode 100755 index 63419b00dee..00000000000 --- a/lib_sync +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -ex - -git checkout master - -LIB=$1 - -git branch lib_$LIB -git checkout lib_$LIB - -git filter-branch -f --prune-empty --subdirectory-filter libraries/$LIB lib_$LIB - -cd ../libraries -mkdir $LIB -cd $LIB - -git init - -git pull ../../Arduino lib_$LIB - -git config user.email f.fissore@arduino.cc - -git filter-branch -f --commit-filter 'if [ "$GIT_AUTHOR_EMAIL" = "f.vanzati@gmail.com" ]; - then export GIT_AUTHOR_EMAIL=f.vanzati@arduino.cc; - fi; git commit-tree "$@"' -git filter-branch -f --commit-filter 'if [ "$GIT_AUTHOR_EMAIL" = "federico@fissore.org" ]; - then export GIT_AUTHOR_EMAIL=f.fissore@arduino.cc; - fi; git commit-tree "$@"' -git filter-branch -f --commit-filter 'if [ "$GIT_AUTHOR_EMAIL" = "c.maglie@bug.st" ]; - then export GIT_AUTHOR_EMAIL=c.maglie@arduino.cc; - fi; git commit-tree "$@"' -git filter-branch -f --commit-filter 'if [ "$GIT_AUTHOR_EMAIL" = "tigoe@tigoemac.itp.tsoa.nyu.edu" ]; - then export GIT_AUTHOR_EMAIL=t.igoe@arduino.cc; - fi; git commit-tree "$@"' -git filter-branch -f --commit-filter 'if [ "$GIT_AUTHOR_EMAIL" = "tom.igoe@gmail.com" ]; - then export GIT_AUTHOR_EMAIL=t.igoe@arduino.cc; - fi; git commit-tree "$@"' -git filter-branch -f --commit-filter 'if [ "$GIT_AUTHOR_EMAIL" = "facchinm@users.noreply.github.com" ]; - then export GIT_AUTHOR_EMAIL=m.facchin@arduino.cc; - fi; git commit-tree "$@"' - -git remote add origin git@github.com:arduino-libraries/$LIB.git -git fetch --all - -cd ../../Arduino - -git checkout master -git branch -D lib_$LIB - diff --git a/libraries/Ethernet/AUTHORS b/libraries/Ethernet/AUTHORS deleted file mode 100644 index 14097dff407..00000000000 --- a/libraries/Ethernet/AUTHORS +++ /dev/null @@ -1,38 +0,0 @@ - -Alberto Panu https://github.com/bigjohnson -Alasdair Allan https://github.com/aallan -Alice Pintus https://github.com/00alis -Adrian McEwen https://github.com/amcewen -Arduino LLC http://arduino.cc/ -Arnie97 https://github.com/Arnie97 -Arturo Guadalupi https://github.com/agdl -Bjoern Hartmann https://people.eecs.berkeley.edu/~bjoern/ -chaveiro https://github.com/chaveiro -Cristian Maglie https://github.com/cmaglie -David A. Mellis https://github.com/damellis -Dino Tinitigan https://github.com/bigdinotech -Eddy https://github.com/eddyst -Federico Vanzati https://github.com/Fede85 -Federico Fissore https://github.com/ffissore -Jack Christensen https://github.com/JChristensen -Johann Richard https://github.com/johannrichard -Jordan Terrell https://github.com/iSynaptic -Justin Paulin https://github.com/interwho -lathoub https://github.com/lathoub -Martino Facchin https://github.com/facchinm -Matthias Hertel https://github.com/mathertel -Matthijs Kooijman https://github.com/matthijskooijman -Matt Robinson https://github.com/ribbons -MCQN Ltd. http://mcqn.com/ -Michael Amie https://github.com/michaelamie -Michael Margolis https://github.com/michaelmargolis -Norbert Truchsess https://github.com/ntruchsess -Paul Stoffregen https://github.com/PaulStoffregen -per1234 https://github.com/per1234 -Richard Sim -Scott Fitzgerald https://github.com/shfitz -Thibaut Viard https://github.com/aethaniel -Tom Igoe https://github.com/tigoe -WizNet http://www.wiznet.co.kr -Zach Eveland https://github.com/zeveland - diff --git a/libraries/Ethernet/README.adoc b/libraries/Ethernet/README.adoc deleted file mode 100644 index 8f890f04556..00000000000 --- a/libraries/Ethernet/README.adoc +++ /dev/null @@ -1,24 +0,0 @@ -= Ethernet Library for Arduino = - -With the Arduino Ethernet Shield, this library allows an Arduino board to connect to the internet. - -For more information about this library please visit us at -http://www.arduino.cc/en/Reference/Ethernet - -== License == - -Copyright (c) 2010 Arduino LLC. All right reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino b/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino deleted file mode 100644 index 592a00e488c..00000000000 --- a/libraries/Ethernet/examples/AdvancedChatServer/AdvancedChatServer.ino +++ /dev/null @@ -1,109 +0,0 @@ -/* - Advanced Chat Server - - A more advanced server that distributes any incoming messages - to all connected clients but the client the message comes from. - To use, telnet to your device's IP address and type. - You can see the client's input in the serial monitor as well. - Using an Arduino Wiznet Ethernet shield. - - Circuit: - * Ethernet shield attached to pins 10, 11, 12, 13 - - created 18 Dec 2009 - by David A. Mellis - modified 9 Apr 2012 - by Tom Igoe - redesigned to make use of operator== 25 Nov 2013 - by Norbert Truchsess - - */ - -#include -#include - -// Enter a MAC address and IP address for your controller below. -// The IP address will be dependent on your local network. -// gateway and subnet are optional: -byte mac[] = { - 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED -}; -IPAddress ip(192, 168, 1, 177); -IPAddress myDns(192, 168, 1, 1); -IPAddress gateway(192, 168, 1, 1); -IPAddress subnet(255, 255, 0, 0); - - -// telnet defaults to port 23 -EthernetServer server(23); - -EthernetClient clients[4]; - -void setup() { - // initialize the Ethernet device - Ethernet.begin(mac, ip, myDns, gateway, subnet); - // start listening for clients - server.begin(); - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - - Serial.print("Chat server address:"); - Serial.println(Ethernet.localIP()); -} - -void loop() { - // wait for a new client: - EthernetClient client = server.available(); - - // when the client sends the first byte, say hello: - if (client) { - - boolean newClient = true; - for (byte i = 0; i < 4; i++) { - //check whether this client refers to the same socket as one of the existing instances: - if (clients[i] == client) { - newClient = false; - break; - } - } - - if (newClient) { - //check which of the existing clients can be overridden: - for (byte i = 0; i < 4; i++) { - if (!clients[i] && clients[i] != client) { - clients[i] = client; - // clear out the input buffer: - client.flush(); - Serial.println("We have a new client"); - client.print("Hello, client number: "); - client.print(i); - client.println(); - break; - } - } - } - - if (client.available() > 0) { - // read the bytes incoming from the client: - char thisChar = client.read(); - // echo the bytes back to all other connected clients: - for (byte i = 0; i < 4; i++) { - if (clients[i] && (clients[i] != client)) { - clients[i].write(thisChar); - } - } - // echo the bytes to the server as well: - Serial.write(thisChar); - } - } - for (byte i = 0; i < 4; i++) { - if (!(clients[i].connected())) { - // client.stop() invalidates the internal socket-descriptor, so next use of == will allways return false; - clients[i].stop(); - } - } -} diff --git a/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino b/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino deleted file mode 100644 index 1a2bcf0a751..00000000000 --- a/libraries/Ethernet/examples/BarometricPressureWebServer/BarometricPressureWebServer.ino +++ /dev/null @@ -1,219 +0,0 @@ -/* - SCP1000 Barometric Pressure Sensor Display - - Serves the output of a Barometric Pressure Sensor as a web page. - Uses the SPI library. For details on the sensor, see: - http://www.sparkfun.com/commerce/product_info.php?products_id=8161 - - This sketch adapted from Nathan Seidle's SCP1000 example for PIC: - http://www.sparkfun.com/datasheets/Sensors/SCP1000-Testing.zip - - Circuit: - SCP1000 sensor attached to pins 6,7, and 11 - 13: - DRDY: pin 6 - CSB: pin 7 - MOSI: pin 11 - MISO: pin 12 - SCK: pin 13 - - created 31 July 2010 - by Tom Igoe - */ - -#include -// the sensor communicates using SPI, so include the library: -#include - - -// assign a MAC address for the Ethernet controller. -// fill in your address here: -byte mac[] = { - 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED -}; -// assign an IP address for the controller: -IPAddress ip(192, 168, 1, 20); - - -// Initialize the Ethernet server library -// with the IP address and port you want to use -// (port 80 is default for HTTP): -EthernetServer server(80); - - -//Sensor's memory register addresses: -const int PRESSURE = 0x1F; //3 most significant bits of pressure -const int PRESSURE_LSB = 0x20; //16 least significant bits of pressure -const int TEMPERATURE = 0x21; //16 bit temperature reading - -// pins used for the connection with the sensor -// the others you need are controlled by the SPI library): -const int dataReadyPin = 6; -const int chipSelectPin = 7; - -float temperature = 0.0; -long pressure = 0; -long lastReadingTime = 0; - -void setup() { - // start the SPI library: - SPI.begin(); - - // start the Ethernet connection and the server: - Ethernet.begin(mac, ip); - server.begin(); - - // initalize the data ready and chip select pins: - pinMode(dataReadyPin, INPUT); - pinMode(chipSelectPin, OUTPUT); - - Serial.begin(9600); - - //Configure SCP1000 for low noise configuration: - writeRegister(0x02, 0x2D); - writeRegister(0x01, 0x03); - writeRegister(0x03, 0x02); - - // give the sensor and Ethernet shield time to set up: - delay(1000); - - //Set the sensor to high resolution mode tp start readings: - writeRegister(0x03, 0x0A); - -} - -void loop() { - // check for a reading no more than once a second. - if (millis() - lastReadingTime > 1000) { - // if there's a reading ready, read it: - // don't do anything until the data ready pin is high: - if (digitalRead(dataReadyPin) == HIGH) { - getData(); - // timestamp the last time you got a reading: - lastReadingTime = millis(); - } - } - - // listen for incoming Ethernet connections: - listenForEthernetClients(); -} - - -void getData() { - Serial.println("Getting reading"); - //Read the temperature data - int tempData = readRegister(0x21, 2); - - // convert the temperature to celsius and display it: - temperature = (float)tempData / 20.0; - - //Read the pressure data highest 3 bits: - byte pressureDataHigh = readRegister(0x1F, 1); - pressureDataHigh &= 0b00000111; //you only needs bits 2 to 0 - - //Read the pressure data lower 16 bits: - unsigned int pressureDataLow = readRegister(0x20, 2); - //combine the two parts into one 19-bit number: - pressure = ((pressureDataHigh << 16) | pressureDataLow) / 4; - - Serial.print("Temperature: "); - Serial.print(temperature); - Serial.println(" degrees C"); - Serial.print("Pressure: " + String(pressure)); - Serial.println(" Pa"); -} - -void listenForEthernetClients() { - // listen for incoming clients - EthernetClient client = server.available(); - if (client) { - Serial.println("Got a client"); - // an http request ends with a blank line - boolean currentLineIsBlank = true; - while (client.connected()) { - if (client.available()) { - char c = client.read(); - // if you've gotten to the end of the line (received a newline - // character) and the line is blank, the http request has ended, - // so you can send a reply - if (c == '\n' && currentLineIsBlank) { - // send a standard http response header - client.println("HTTP/1.1 200 OK"); - client.println("Content-Type: text/html"); - client.println(); - // print the current readings, in HTML format: - client.print("Temperature: "); - client.print(temperature); - client.print(" degrees C"); - client.println("
    "); - client.print("Pressure: " + String(pressure)); - client.print(" Pa"); - client.println("
    "); - break; - } - if (c == '\n') { - // you're starting a new line - currentLineIsBlank = true; - } else if (c != '\r') { - // you've gotten a character on the current line - currentLineIsBlank = false; - } - } - } - // give the web browser time to receive the data - delay(1); - // close the connection: - client.stop(); - } -} - - -//Send a write command to SCP1000 -void writeRegister(byte registerName, byte registerValue) { - // SCP1000 expects the register name in the upper 6 bits - // of the byte: - registerName <<= 2; - // command (read or write) goes in the lower two bits: - registerName |= 0b00000010; //Write command - - // take the chip select low to select the device: - digitalWrite(chipSelectPin, LOW); - - SPI.transfer(registerName); //Send register location - SPI.transfer(registerValue); //Send value to record into register - - // take the chip select high to de-select: - digitalWrite(chipSelectPin, HIGH); -} - - -//Read register from the SCP1000: -unsigned int readRegister(byte registerName, int numBytes) { - byte inByte = 0; // incoming from the SPI read - unsigned int result = 0; // result to return - - // SCP1000 expects the register name in the upper 6 bits - // of the byte: - registerName <<= 2; - // command (read or write) goes in the lower two bits: - registerName &= 0b11111100; //Read command - - // take the chip select low to select the device: - digitalWrite(chipSelectPin, LOW); - // send the device the register you want to read: - int command = SPI.transfer(registerName); - // send a value of 0 to read the first byte returned: - inByte = SPI.transfer(0x00); - - result = inByte; - // if there's more than one byte returned, - // shift the first byte then get the second byte: - if (numBytes > 1) { - result = inByte << 8; - inByte = SPI.transfer(0x00); - result = result | inByte; - } - // take the chip select high to de-select: - digitalWrite(chipSelectPin, HIGH); - // return the result: - return (result); -} diff --git a/libraries/Ethernet/examples/ChatServer/ChatServer.ino b/libraries/Ethernet/examples/ChatServer/ChatServer.ino deleted file mode 100644 index fe501d6ab74..00000000000 --- a/libraries/Ethernet/examples/ChatServer/ChatServer.ino +++ /dev/null @@ -1,80 +0,0 @@ -/* - Chat Server - - A simple server that distributes any incoming messages to all - connected clients. To use, telnet to your device's IP address and type. - You can see the client's input in the serial monitor as well. - Using an Arduino Wiznet Ethernet shield. - - Circuit: - * Ethernet shield attached to pins 10, 11, 12, 13 - - created 18 Dec 2009 - by David A. Mellis - modified 9 Apr 2012 - by Tom Igoe - - */ - -#include -#include - -// Enter a MAC address and IP address for your controller below. -// The IP address will be dependent on your local network. -// gateway and subnet are optional: -byte mac[] = { - 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED -}; -IPAddress ip(192, 168, 1, 177); -IPAddress myDns(192,168,1, 1); -IPAddress gateway(192, 168, 1, 1); -IPAddress subnet(255, 255, 0, 0); - - -// telnet defaults to port 23 -EthernetServer server(23); -boolean alreadyConnected = false; // whether or not the client was connected previously - -void setup() { - // initialize the ethernet device - Ethernet.begin(mac, ip, myDns, gateway, subnet); - // start listening for clients - server.begin(); - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - - Serial.print("Chat server address:"); - Serial.println(Ethernet.localIP()); -} - -void loop() { - // wait for a new client: - EthernetClient client = server.available(); - - // when the client sends the first byte, say hello: - if (client) { - if (!alreadyConnected) { - // clear out the input buffer: - client.flush(); - Serial.println("We have a new client"); - client.println("Hello, client!"); - alreadyConnected = true; - } - - if (client.available() > 0) { - // read the bytes incoming from the client: - char thisChar = client.read(); - // echo the bytes back to the client: - server.write(thisChar); - // echo the bytes to the server as well: - Serial.write(thisChar); - } - } -} - - - diff --git a/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino b/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino deleted file mode 100644 index d527d257379..00000000000 --- a/libraries/Ethernet/examples/DhcpAddressPrinter/DhcpAddressPrinter.ino +++ /dev/null @@ -1,99 +0,0 @@ -/* - DHCP-based IP printer - - This sketch uses the DHCP extensions to the Ethernet library - to get an IP address via DHCP and print the address obtained. - using an Arduino Wiznet Ethernet shield. - - Circuit: - Ethernet shield attached to pins 10, 11, 12, 13 - - created 12 April 2011 - modified 9 Apr 2012 - by Tom Igoe - modified 02 Sept 2015 - by Arturo Guadalupi - -*/ - -#include -#include - -// Enter a MAC address for your controller below. -// Newer Ethernet shields have a MAC address printed on a sticker on the shield -byte mac[] = { - 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 -}; - -// Initialize the Ethernet client library -// with the IP address and port of the server -// that you want to connect to (port 80 is default for HTTP): -EthernetClient client; - -void setup() { - // Open serial communications and wait for port to open: - Serial.begin(9600); - // this check is only needed on the Leonardo: - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // start the Ethernet connection: - if (Ethernet.begin(mac) == 0) { - Serial.println("Failed to configure Ethernet using DHCP"); - // no point in carrying on, so do nothing forevermore: - for (;;) - ; - } - // print your local IP address: - printIPAddress(); -} - -void loop() { - - switch (Ethernet.maintain()) - { - case 1: - //renewed fail - Serial.println("Error: renewed fail"); - break; - - case 2: - //renewed success - Serial.println("Renewed success"); - - //print your local IP address: - printIPAddress(); - break; - - case 3: - //rebind fail - Serial.println("Error: rebind fail"); - break; - - case 4: - //rebind success - Serial.println("Rebind success"); - - //print your local IP address: - printIPAddress(); - break; - - default: - //nothing happened - break; - - } -} - -void printIPAddress() -{ - Serial.print("My IP address: "); - for (byte thisByte = 0; thisByte < 4; thisByte++) { - // print the value of each byte of the IP address: - Serial.print(Ethernet.localIP()[thisByte], DEC); - Serial.print("."); - } - - Serial.println(); -} diff --git a/libraries/Ethernet/examples/DhcpChatServer/DhcpChatServer.ino b/libraries/Ethernet/examples/DhcpChatServer/DhcpChatServer.ino deleted file mode 100644 index 4cfb5945d2c..00000000000 --- a/libraries/Ethernet/examples/DhcpChatServer/DhcpChatServer.ino +++ /dev/null @@ -1,92 +0,0 @@ -/* - DHCP Chat Server - - A simple server that distributes any incoming messages to all - connected clients. To use, telnet to your device's IP address and type. - You can see the client's input in the serial monitor as well. - Using an Arduino Wiznet Ethernet shield. - - THis version attempts to get an IP address using DHCP - - Circuit: - * Ethernet shield attached to pins 10, 11, 12, 13 - - created 21 May 2011 - modified 9 Apr 2012 - by Tom Igoe - modified 02 Sept 2015 - by Arturo Guadalupi - Based on ChatServer example by David A. Mellis - - */ - -#include -#include - -// Enter a MAC address and IP address for your controller below. -// The IP address will be dependent on your local network. -// gateway and subnet are optional: -byte mac[] = { - 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 -}; -IPAddress ip(192, 168, 1, 177); -IPAddress myDns(192,168,1, 1); -IPAddress gateway(192, 168, 1, 1); -IPAddress subnet(255, 255, 0, 0); - -// telnet defaults to port 23 -EthernetServer server(23); -boolean gotAMessage = false; // whether or not you got a message from the client yet - -void setup() { - // Open serial communications and wait for port to open: - Serial.begin(9600); - // this check is only needed on the Leonardo: - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - - // start the Ethernet connection: - Serial.println("Trying to get an IP address using DHCP"); - if (Ethernet.begin(mac) == 0) { - Serial.println("Failed to configure Ethernet using DHCP"); - // initialize the Ethernet device not using DHCP: - Ethernet.begin(mac, ip, myDns, gateway, subnet); - } - // print your local IP address: - Serial.print("My IP address: "); - ip = Ethernet.localIP(); - for (byte thisByte = 0; thisByte < 4; thisByte++) { - // print the value of each byte of the IP address: - Serial.print(ip[thisByte], DEC); - Serial.print("."); - } - Serial.println(); - // start listening for clients - server.begin(); - -} - -void loop() { - // wait for a new client: - EthernetClient client = server.available(); - - // when the client sends the first byte, say hello: - if (client) { - if (!gotAMessage) { - Serial.println("We have a new client"); - client.println("Hello, client!"); - gotAMessage = true; - } - - // read the bytes incoming from the client: - char thisChar = client.read(); - // echo the bytes back to the client: - server.write(thisChar); - // echo the bytes to the server as well: - Serial.print(thisChar); - Ethernet.maintain(); - } -} - diff --git a/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino b/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino deleted file mode 100644 index c9249b79456..00000000000 --- a/libraries/Ethernet/examples/TelnetClient/TelnetClient.ino +++ /dev/null @@ -1,92 +0,0 @@ -/* - Telnet client - - This sketch connects to a a telnet server (http://www.google.com) - using an Arduino Wiznet Ethernet shield. You'll need a telnet server - to test this with. - Processing's ChatServer example (part of the network library) works well, - running on port 10002. It can be found as part of the examples - in the Processing application, available at - http://processing.org/ - - Circuit: - * Ethernet shield attached to pins 10, 11, 12, 13 - - created 14 Sep 2010 - modified 9 Apr 2012 - by Tom Igoe - - */ - -#include -#include - -// Enter a MAC address and IP address for your controller below. -// The IP address will be dependent on your local network: -byte mac[] = { - 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED -}; -IPAddress ip(192, 168, 1, 177); - -// Enter the IP address of the server you're connecting to: -IPAddress server(1, 1, 1, 1); - -// Initialize the Ethernet client library -// with the IP address and port of the server -// that you want to connect to (port 23 is default for telnet; -// if you're using Processing's ChatServer, use port 10002): -EthernetClient client; - -void setup() { - // start the Ethernet connection: - Ethernet.begin(mac, ip); - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - - // give the Ethernet shield a second to initialize: - delay(1000); - Serial.println("connecting..."); - - // if you get a connection, report back via serial: - if (client.connect(server, 10002)) { - Serial.println("connected"); - } else { - // if you didn't get a connection to the server: - Serial.println("connection failed"); - } -} - -void loop() { - // if there are incoming bytes available - // from the server, read them and print them: - if (client.available()) { - char c = client.read(); - Serial.print(c); - } - - // as long as there are bytes in the serial queue, - // read them and send them out the socket if it's open: - while (Serial.available() > 0) { - char inChar = Serial.read(); - if (client.connected()) { - client.print(inChar); - } - } - - // if the server's disconnected, stop the client: - if (!client.connected()) { - Serial.println(); - Serial.println("disconnecting."); - client.stop(); - // do nothing: - while (true); - } -} - - - - diff --git a/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino b/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino deleted file mode 100644 index 62d008ff50b..00000000000 --- a/libraries/Ethernet/examples/UDPSendReceiveString/UDPSendReceiveString.ino +++ /dev/null @@ -1,116 +0,0 @@ -/* - UDPSendReceiveString: - This sketch receives UDP message strings, prints them to the serial port - and sends an "acknowledge" string back to the sender - - A Processing sketch is included at the end of file that can be used to send - and received messages for testing with a computer. - - created 21 Aug 2010 - by Michael Margolis - - This code is in the public domain. - */ - - -#include // needed for Arduino versions later than 0018 -#include -#include // UDP library from: bjoern@cs.stanford.edu 12/30/2008 - - -// Enter a MAC address and IP address for your controller below. -// The IP address will be dependent on your local network: -byte mac[] = { - 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED -}; -IPAddress ip(192, 168, 1, 177); - -unsigned int localPort = 8888; // local port to listen on - -// buffers for receiving and sending data -char packetBuffer[UDP_TX_PACKET_MAX_SIZE]; //buffer to hold incoming packet, -char ReplyBuffer[] = "acknowledged"; // a string to send back - -// An EthernetUDP instance to let us send and receive packets over UDP -EthernetUDP Udp; - -void setup() { - // start the Ethernet and UDP: - Ethernet.begin(mac, ip); - Udp.begin(localPort); - - Serial.begin(9600); -} - -void loop() { - // if there's data available, read a packet - int packetSize = Udp.parsePacket(); - if (packetSize) { - Serial.print("Received packet of size "); - Serial.println(packetSize); - Serial.print("From "); - IPAddress remote = Udp.remoteIP(); - for (int i = 0; i < 4; i++) { - Serial.print(remote[i], DEC); - if (i < 3) { - Serial.print("."); - } - } - Serial.print(", port "); - Serial.println(Udp.remotePort()); - - // read the packet into packetBufffer - Udp.read(packetBuffer, UDP_TX_PACKET_MAX_SIZE); - Serial.println("Contents:"); - Serial.println(packetBuffer); - - // send a reply to the IP address and port that sent us the packet we received - Udp.beginPacket(Udp.remoteIP(), Udp.remotePort()); - Udp.write(ReplyBuffer); - Udp.endPacket(); - } - delay(10); -} - - -/* - Processing sketch to run with this example - ===================================================== - - // Processing UDP example to send and receive string data from Arduino - // press any key to send the "Hello Arduino" message - - - import hypermedia.net.*; - - UDP udp; // define the UDP object - - - void setup() { - udp = new UDP( this, 6000 ); // create a new datagram connection on port 6000 - //udp.log( true ); // <-- printout the connection activity - udp.listen( true ); // and wait for incoming message - } - - void draw() - { - } - - void keyPressed() { - String ip = "192.168.1.177"; // the remote IP address - int port = 8888; // the destination port - - udp.send("Hello World", ip, port ); // the message to send - - } - - void receive( byte[] data ) { // <-- default handler - //void receive( byte[] data, String ip, int port ) { // <-- extended handler - - for(int i=0; i < data.length; i++) - print(char(data[i])); - println(); - } - */ - - diff --git a/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino b/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino deleted file mode 100644 index f610ee8bb97..00000000000 --- a/libraries/Ethernet/examples/UdpNtpClient/UdpNtpClient.ino +++ /dev/null @@ -1,142 +0,0 @@ -/* - - Udp NTP Client - - Get the time from a Network Time Protocol (NTP) time server - Demonstrates use of UDP sendPacket and ReceivePacket - For more on NTP time servers and the messages needed to communicate with them, - see http://en.wikipedia.org/wiki/Network_Time_Protocol - - created 4 Sep 2010 - by Michael Margolis - modified 9 Apr 2012 - by Tom Igoe - modified 02 Sept 2015 - by Arturo Guadalupi - - This code is in the public domain. - - */ - -#include -#include -#include - -// Enter a MAC address for your controller below. -// Newer Ethernet shields have a MAC address printed on a sticker on the shield -byte mac[] = { - 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED -}; - -unsigned int localPort = 8888; // local port to listen for UDP packets - -char timeServer[] = "time.nist.gov"; // time.nist.gov NTP server - -const int NTP_PACKET_SIZE = 48; // NTP time stamp is in the first 48 bytes of the message - -byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets - -// A UDP instance to let us send and receive packets over UDP -EthernetUDP Udp; - -void setup() { - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - - // start Ethernet and UDP - if (Ethernet.begin(mac) == 0) { - Serial.println("Failed to configure Ethernet using DHCP"); - // no point in carrying on, so do nothing forevermore: - for (;;) - ; - } - Udp.begin(localPort); -} - -void loop() { - sendNTPpacket(timeServer); // send an NTP packet to a time server - - // wait to see if a reply is available - delay(1000); - if (Udp.parsePacket()) { - // We've received a packet, read the data from it - Udp.read(packetBuffer, NTP_PACKET_SIZE); // read the packet into the buffer - - // the timestamp starts at byte 40 of the received packet and is four bytes, - // or two words, long. First, extract the two words: - - unsigned long highWord = word(packetBuffer[40], packetBuffer[41]); - unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]); - // combine the four bytes (two words) into a long integer - // this is NTP time (seconds since Jan 1 1900): - unsigned long secsSince1900 = highWord << 16 | lowWord; - Serial.print("Seconds since Jan 1 1900 = "); - Serial.println(secsSince1900); - - // now convert NTP time into everyday time: - Serial.print("Unix time = "); - // Unix time starts on Jan 1 1970. In seconds, that's 2208988800: - const unsigned long seventyYears = 2208988800UL; - // subtract seventy years: - unsigned long epoch = secsSince1900 - seventyYears; - // print Unix time: - Serial.println(epoch); - - - // print the hour, minute and second: - Serial.print("The UTC time is "); // UTC is the time at Greenwich Meridian (GMT) - Serial.print((epoch % 86400L) / 3600); // print the hour (86400 equals secs per day) - Serial.print(':'); - if (((epoch % 3600) / 60) < 10) { - // In the first 10 minutes of each hour, we'll want a leading '0' - Serial.print('0'); - } - Serial.print((epoch % 3600) / 60); // print the minute (3600 equals secs per minute) - Serial.print(':'); - if ((epoch % 60) < 10) { - // In the first 10 seconds of each minute, we'll want a leading '0' - Serial.print('0'); - } - Serial.println(epoch % 60); // print the second - } - // wait ten seconds before asking for the time again - delay(10000); - Ethernet.maintain(); -} - -// send an NTP request to the time server at the given address -void sendNTPpacket(char* address) { - // set all bytes in the buffer to 0 - memset(packetBuffer, 0, NTP_PACKET_SIZE); - // Initialize values needed to form NTP request - // (see URL above for details on the packets) - packetBuffer[0] = 0b11100011; // LI, Version, Mode - packetBuffer[1] = 0; // Stratum, or type of clock - packetBuffer[2] = 6; // Polling Interval - packetBuffer[3] = 0xEC; // Peer Clock Precision - // 8 bytes of zero for Root Delay & Root Dispersion - packetBuffer[12] = 49; - packetBuffer[13] = 0x4E; - packetBuffer[14] = 49; - packetBuffer[15] = 52; - - // all NTP fields have been given values, now - // you can send a packet requesting a timestamp: - Udp.beginPacket(address, 123); //NTP requests are to port 123 - Udp.write(packetBuffer, NTP_PACKET_SIZE); - Udp.endPacket(); -} - - - - - - - - - - diff --git a/libraries/Ethernet/examples/WebClient/WebClient.ino b/libraries/Ethernet/examples/WebClient/WebClient.ino deleted file mode 100644 index 5e265a77cfd..00000000000 --- a/libraries/Ethernet/examples/WebClient/WebClient.ino +++ /dev/null @@ -1,85 +0,0 @@ -/* - Web client - - This sketch connects to a website (http://www.google.com) - using an Arduino Wiznet Ethernet shield. - - Circuit: - * Ethernet shield attached to pins 10, 11, 12, 13 - - created 18 Dec 2009 - by David A. Mellis - modified 9 Apr 2012 - by Tom Igoe, based on work by Adrian McEwen - - */ - -#include -#include - -// Enter a MAC address for your controller below. -// Newer Ethernet shields have a MAC address printed on a sticker on the shield -byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; -// if you don't want to use DNS (and reduce your sketch size) -// use the numeric IP instead of the name for the server: -//IPAddress server(74,125,232,128); // numeric IP for Google (no DNS) -char server[] = "www.google.com"; // name address for Google (using DNS) - -// Set the static IP address to use if the DHCP fails to assign -IPAddress ip(192, 168, 0, 177); - -// Initialize the Ethernet client library -// with the IP address and port of the server -// that you want to connect to (port 80 is default for HTTP): -EthernetClient client; - -void setup() { - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // start the Ethernet connection: - if (Ethernet.begin(mac) == 0) { - Serial.println("Failed to configure Ethernet using DHCP"); - // try to congifure using IP address instead of DHCP: - Ethernet.begin(mac, ip); - } - // give the Ethernet shield a second to initialize: - delay(1000); - Serial.println("connecting..."); - - // if you get a connection, report back via serial: - if (client.connect(server, 80)) { - Serial.println("connected"); - // Make a HTTP request: - client.println("GET /search?q=arduino HTTP/1.1"); - client.println("Host: www.google.com"); - client.println("Connection: close"); - client.println(); - } else { - // if you didn't get a connection to the server: - Serial.println("connection failed"); - } -} - -void loop() { - // if there are incoming bytes available - // from the server, read them and print them: - if (client.available()) { - char c = client.read(); - Serial.print(c); - } - - // if the server's disconnected, stop the client: - if (!client.connected()) { - Serial.println(); - Serial.println("disconnecting."); - client.stop(); - - // do nothing forevermore: - while (true); - } -} - diff --git a/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino b/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino deleted file mode 100644 index e955c4d4a22..00000000000 --- a/libraries/Ethernet/examples/WebClientRepeating/WebClientRepeating.ino +++ /dev/null @@ -1,105 +0,0 @@ -/* - Repeating Web client - - This sketch connects to a a web server and makes a request - using a Wiznet Ethernet shield. You can use the Arduino Ethernet shield, or - the Adafruit Ethernet shield, either one will work, as long as it's got - a Wiznet Ethernet module on board. - - This example uses DNS, by assigning the Ethernet client with a MAC address, - IP address, and DNS address. - - Circuit: - * Ethernet shield attached to pins 10, 11, 12, 13 - - created 19 Apr 2012 - by Tom Igoe - modified 21 Jan 2014 - by Federico Vanzati - - http://www.arduino.cc/en/Tutorial/WebClientRepeating - This code is in the public domain. - - */ - -#include -#include - -// assign a MAC address for the ethernet controller. -// fill in your address here: -byte mac[] = { - 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED -}; -// fill in an available IP address on your network here, -// for manual configuration: -IPAddress ip(192, 168, 1, 177); - -// fill in your Domain Name Server address here: -IPAddress myDns(1, 1, 1, 1); - -// initialize the library instance: -EthernetClient client; - -char server[] = "www.arduino.cc"; -//IPAddress server(64,131,82,241); - -unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds -const unsigned long postingInterval = 10L * 1000L; // delay between updates, in milliseconds -// the "L" is needed to use long type numbers - -void setup() { - // start serial port: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // give the ethernet module time to boot up: - delay(1000); - // start the Ethernet connection using a fixed IP address and DNS server: - Ethernet.begin(mac, ip, myDns); - // print the Ethernet board/shield's IP address: - Serial.print("My IP address: "); - Serial.println(Ethernet.localIP()); -} - -void loop() { - // if there's incoming data from the net connection. - // send it out the serial port. This is for debugging - // purposes only: - if (client.available()) { - char c = client.read(); - Serial.write(c); - } - - // if ten seconds have passed since your last connection, - // then connect again and send data: - if (millis() - lastConnectionTime > postingInterval) { - httpRequest(); - } - -} - -// this method makes a HTTP connection to the server: -void httpRequest() { - // close any connection before send a new request. - // This will free the socket on the WiFi shield - client.stop(); - - // if there's a successful connection: - if (client.connect(server, 80)) { - Serial.println("connecting..."); - // send the HTTP GET request: - client.println("GET /latest.txt HTTP/1.1"); - client.println("Host: www.arduino.cc"); - client.println("User-Agent: arduino-ethernet"); - client.println("Connection: close"); - client.println(); - - // note the time that the connection was made: - lastConnectionTime = millis(); - } else { - // if you couldn't make a connection: - Serial.println("connection failed"); - } -} diff --git a/libraries/Ethernet/examples/WebServer/WebServer.ino b/libraries/Ethernet/examples/WebServer/WebServer.ino deleted file mode 100644 index bf798abad73..00000000000 --- a/libraries/Ethernet/examples/WebServer/WebServer.ino +++ /dev/null @@ -1,102 +0,0 @@ -/* - Web Server - - A simple web server that shows the value of the analog input pins. - using an Arduino Wiznet Ethernet shield. - - Circuit: - * Ethernet shield attached to pins 10, 11, 12, 13 - * Analog inputs attached to pins A0 through A5 (optional) - - created 18 Dec 2009 - by David A. Mellis - modified 9 Apr 2012 - by Tom Igoe - modified 02 Sept 2015 - by Arturo Guadalupi - - */ - -#include -#include - -// Enter a MAC address and IP address for your controller below. -// The IP address will be dependent on your local network: -byte mac[] = { - 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED -}; -IPAddress ip(192, 168, 1, 177); - -// Initialize the Ethernet server library -// with the IP address and port you want to use -// (port 80 is default for HTTP): -EthernetServer server(80); - -void setup() { - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - - // start the Ethernet connection and the server: - Ethernet.begin(mac, ip); - server.begin(); - Serial.print("server is at "); - Serial.println(Ethernet.localIP()); -} - - -void loop() { - // listen for incoming clients - EthernetClient client = server.available(); - if (client) { - Serial.println("new client"); - // an http request ends with a blank line - boolean currentLineIsBlank = true; - while (client.connected()) { - if (client.available()) { - char c = client.read(); - Serial.write(c); - // if you've gotten to the end of the line (received a newline - // character) and the line is blank, the http request has ended, - // so you can send a reply - if (c == '\n' && currentLineIsBlank) { - // send a standard http response header - client.println("HTTP/1.1 200 OK"); - client.println("Content-Type: text/html"); - client.println("Connection: close"); // the connection will be closed after completion of the response - client.println("Refresh: 5"); // refresh the page automatically every 5 sec - client.println(); - client.println(""); - client.println(""); - // output the value of each analog input pin - for (int analogChannel = 0; analogChannel < 6; analogChannel++) { - int sensorReading = analogRead(analogChannel); - client.print("analog input "); - client.print(analogChannel); - client.print(" is "); - client.print(sensorReading); - client.println("
    "); - } - client.println(""); - break; - } - if (c == '\n') { - // you're starting a new line - currentLineIsBlank = true; - } else if (c != '\r') { - // you've gotten a character on the current line - currentLineIsBlank = false; - } - } - } - // give the web browser time to receive the data - delay(1); - // close the connection: - client.stop(); - Serial.println("client disconnected"); - } -} - diff --git a/libraries/Ethernet/keywords.txt b/libraries/Ethernet/keywords.txt deleted file mode 100644 index 1f19b2a6b20..00000000000 --- a/libraries/Ethernet/keywords.txt +++ /dev/null @@ -1,40 +0,0 @@ -####################################### -# Syntax Coloring Map For Ethernet -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -Ethernet KEYWORD1 Ethernet -EthernetClient KEYWORD1 EthernetClient -EthernetServer KEYWORD1 EthernetServer -IPAddress KEYWORD1 EthernetIPAddress - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -status KEYWORD2 -connect KEYWORD2 -write KEYWORD2 -available KEYWORD2 -read KEYWORD2 -peek KEYWORD2 -flush KEYWORD2 -stop KEYWORD2 -connected KEYWORD2 -begin KEYWORD2 -beginPacket KEYWORD2 -endPacket KEYWORD2 -parsePacket KEYWORD2 -remoteIP KEYWORD2 -remotePort KEYWORD2 -getSocketNumber KEYWORD2 -localIP KEYWORD2 -maintain KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### - diff --git a/libraries/Ethernet/library.properties b/libraries/Ethernet/library.properties deleted file mode 100644 index e700f6c9e37..00000000000 --- a/libraries/Ethernet/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=Ethernet -version=1.1.2 -author=Various (see AUTHORS file for details) -maintainer=Arduino -sentence=Enables network connection (local and Internet) using the Arduino Ethernet Board or Shield. -paragraph=With this library you can use the Arduino Ethernet (shield or board) to connect to Internet. The library provides both Client and server functionalities. The library permits you to connect to a local network also with DHCP and to resolve DNS. -category=Communication -url=http://www.arduino.cc/en/Reference/Ethernet -architectures=* diff --git a/libraries/Ethernet/src/Dhcp.cpp b/libraries/Ethernet/src/Dhcp.cpp deleted file mode 100644 index 3702d73b64d..00000000000 --- a/libraries/Ethernet/src/Dhcp.cpp +++ /dev/null @@ -1,471 +0,0 @@ -// DHCP Library v0.3 - April 25, 2009 -// Author: Jordan Terrell - blog.jordanterrell.com - -#include "utility/w5100.h" - -#include -#include -#include "Dhcp.h" -#include "Arduino.h" -#include "utility/util.h" - -int DhcpClass::beginWithDHCP(uint8_t *mac, unsigned long timeout, unsigned long responseTimeout) -{ - _dhcpLeaseTime=0; - _dhcpT1=0; - _dhcpT2=0; - _timeout = timeout; - _responseTimeout = responseTimeout; - - // zero out _dhcpMacAddr - memset(_dhcpMacAddr, 0, 6); - reset_DHCP_lease(); - - memcpy((void*)_dhcpMacAddr, (void*)mac, 6); - _dhcp_state = STATE_DHCP_START; - return request_DHCP_lease(); -} - -void DhcpClass::reset_DHCP_lease(){ - // zero out _dhcpSubnetMask, _dhcpGatewayIp, _dhcpLocalIp, _dhcpDhcpServerIp, _dhcpDnsServerIp - memset(_dhcpLocalIp, 0, 20); -} - -//return:0 on error, 1 if request is sent and response is received -int DhcpClass::request_DHCP_lease(){ - - uint8_t messageType = 0; - - - - // Pick an initial transaction ID - _dhcpTransactionId = random(1UL, 2000UL); - _dhcpInitialTransactionId = _dhcpTransactionId; - - _dhcpUdpSocket.stop(); - if (_dhcpUdpSocket.begin(DHCP_CLIENT_PORT) == 0) - { - // Couldn't get a socket - return 0; - } - - presend_DHCP(); - - int result = 0; - - unsigned long startTime = millis(); - - while(_dhcp_state != STATE_DHCP_LEASED) - { - if(_dhcp_state == STATE_DHCP_START) - { - _dhcpTransactionId++; - - send_DHCP_MESSAGE(DHCP_DISCOVER, ((millis() - startTime) / 1000)); - _dhcp_state = STATE_DHCP_DISCOVER; - } - else if(_dhcp_state == STATE_DHCP_REREQUEST){ - _dhcpTransactionId++; - send_DHCP_MESSAGE(DHCP_REQUEST, ((millis() - startTime)/1000)); - _dhcp_state = STATE_DHCP_REQUEST; - } - else if(_dhcp_state == STATE_DHCP_DISCOVER) - { - uint32_t respId; - messageType = parseDHCPResponse(_responseTimeout, respId); - if(messageType == DHCP_OFFER) - { - // We'll use the transaction ID that the offer came with, - // rather than the one we were up to - _dhcpTransactionId = respId; - send_DHCP_MESSAGE(DHCP_REQUEST, ((millis() - startTime) / 1000)); - _dhcp_state = STATE_DHCP_REQUEST; - } - } - else if(_dhcp_state == STATE_DHCP_REQUEST) - { - uint32_t respId; - messageType = parseDHCPResponse(_responseTimeout, respId); - if(messageType == DHCP_ACK) - { - _dhcp_state = STATE_DHCP_LEASED; - result = 1; - //use default lease time if we didn't get it - if(_dhcpLeaseTime == 0){ - _dhcpLeaseTime = DEFAULT_LEASE; - } - // Calculate T1 & T2 if we didn't get it - if(_dhcpT1 == 0){ - // T1 should be 50% of _dhcpLeaseTime - _dhcpT1 = _dhcpLeaseTime >> 1; - } - if(_dhcpT2 == 0){ - // T2 should be 87.5% (7/8ths) of _dhcpLeaseTime - _dhcpT2 = _dhcpLeaseTime - (_dhcpLeaseTime >> 3); - } - _renewInSec = _dhcpT1; - _rebindInSec = _dhcpT2; - } - else if(messageType == DHCP_NAK) - _dhcp_state = STATE_DHCP_START; - } - - if(messageType == 255) - { - messageType = 0; - _dhcp_state = STATE_DHCP_START; - } - - if(result != 1 && ((millis() - startTime) > _timeout)) - break; - } - - // We're done with the socket now - _dhcpUdpSocket.stop(); - _dhcpTransactionId++; - - _lastCheckLeaseMillis = millis(); - return result; -} - -void DhcpClass::presend_DHCP() -{ -} - -void DhcpClass::send_DHCP_MESSAGE(uint8_t messageType, uint16_t secondsElapsed) -{ - uint8_t buffer[32]; - memset(buffer, 0, 32); - IPAddress dest_addr( 255, 255, 255, 255 ); // Broadcast address - - if (-1 == _dhcpUdpSocket.beginPacket(dest_addr, DHCP_SERVER_PORT)) - { - // FIXME Need to return errors - return; - } - - buffer[0] = DHCP_BOOTREQUEST; // op - buffer[1] = DHCP_HTYPE10MB; // htype - buffer[2] = DHCP_HLENETHERNET; // hlen - buffer[3] = DHCP_HOPS; // hops - - // xid - unsigned long xid = htonl(_dhcpTransactionId); - memcpy(buffer + 4, &(xid), 4); - - // 8, 9 - seconds elapsed - buffer[8] = ((secondsElapsed & 0xff00) >> 8); - buffer[9] = (secondsElapsed & 0x00ff); - - // flags - unsigned short flags = htons(DHCP_FLAGSBROADCAST); - memcpy(buffer + 10, &(flags), 2); - - // ciaddr: already zeroed - // yiaddr: already zeroed - // siaddr: already zeroed - // giaddr: already zeroed - - //put data in W5100 transmit buffer - _dhcpUdpSocket.write(buffer, 28); - - memset(buffer, 0, 32); // clear local buffer - - memcpy(buffer, _dhcpMacAddr, 6); // chaddr - - //put data in W5100 transmit buffer - _dhcpUdpSocket.write(buffer, 16); - - memset(buffer, 0, 32); // clear local buffer - - // leave zeroed out for sname && file - // put in W5100 transmit buffer x 6 (192 bytes) - - for(int i = 0; i < 6; i++) { - _dhcpUdpSocket.write(buffer, 32); - } - - // OPT - Magic Cookie - buffer[0] = (uint8_t)((MAGIC_COOKIE >> 24)& 0xFF); - buffer[1] = (uint8_t)((MAGIC_COOKIE >> 16)& 0xFF); - buffer[2] = (uint8_t)((MAGIC_COOKIE >> 8)& 0xFF); - buffer[3] = (uint8_t)(MAGIC_COOKIE& 0xFF); - - // OPT - message type - buffer[4] = dhcpMessageType; - buffer[5] = 0x01; - buffer[6] = messageType; //DHCP_REQUEST; - - // OPT - client identifier - buffer[7] = dhcpClientIdentifier; - buffer[8] = 0x07; - buffer[9] = 0x01; - memcpy(buffer + 10, _dhcpMacAddr, 6); - - // OPT - host name - buffer[16] = hostName; - buffer[17] = strlen(HOST_NAME) + 6; // length of hostname + last 3 bytes of mac address - strcpy((char*)&(buffer[18]), HOST_NAME); - - printByte((char*)&(buffer[24]), _dhcpMacAddr[3]); - printByte((char*)&(buffer[26]), _dhcpMacAddr[4]); - printByte((char*)&(buffer[28]), _dhcpMacAddr[5]); - - //put data in W5100 transmit buffer - _dhcpUdpSocket.write(buffer, 30); - - if(messageType == DHCP_REQUEST) - { - buffer[0] = dhcpRequestedIPaddr; - buffer[1] = 0x04; - buffer[2] = _dhcpLocalIp[0]; - buffer[3] = _dhcpLocalIp[1]; - buffer[4] = _dhcpLocalIp[2]; - buffer[5] = _dhcpLocalIp[3]; - - buffer[6] = dhcpServerIdentifier; - buffer[7] = 0x04; - buffer[8] = _dhcpDhcpServerIp[0]; - buffer[9] = _dhcpDhcpServerIp[1]; - buffer[10] = _dhcpDhcpServerIp[2]; - buffer[11] = _dhcpDhcpServerIp[3]; - - //put data in W5100 transmit buffer - _dhcpUdpSocket.write(buffer, 12); - } - - buffer[0] = dhcpParamRequest; - buffer[1] = 0x06; - buffer[2] = subnetMask; - buffer[3] = routersOnSubnet; - buffer[4] = dns; - buffer[5] = domainName; - buffer[6] = dhcpT1value; - buffer[7] = dhcpT2value; - buffer[8] = endOption; - - //put data in W5100 transmit buffer - _dhcpUdpSocket.write(buffer, 9); - - _dhcpUdpSocket.endPacket(); -} - -uint8_t DhcpClass::parseDHCPResponse(unsigned long responseTimeout, uint32_t& transactionId) -{ - uint8_t type = 0; - uint8_t opt_len = 0; - - unsigned long startTime = millis(); - - while(_dhcpUdpSocket.parsePacket() <= 0) - { - if((millis() - startTime) > responseTimeout) - { - return 255; - } - delay(50); - } - // start reading in the packet - RIP_MSG_FIXED fixedMsg; - _dhcpUdpSocket.read((uint8_t*)&fixedMsg, sizeof(RIP_MSG_FIXED)); - - if(fixedMsg.op == DHCP_BOOTREPLY && _dhcpUdpSocket.remotePort() == DHCP_SERVER_PORT) - { - transactionId = ntohl(fixedMsg.xid); - if(memcmp(fixedMsg.chaddr, _dhcpMacAddr, 6) != 0 || (transactionId < _dhcpInitialTransactionId) || (transactionId > _dhcpTransactionId)) - { - // Need to read the rest of the packet here regardless - _dhcpUdpSocket.flush(); - return 0; - } - - memcpy(_dhcpLocalIp, fixedMsg.yiaddr, 4); - - // Skip to the option part - // Doing this a byte at a time so we don't have to put a big buffer - // on the stack (as we don't have lots of memory lying around) - for (int i =0; i < (240 - (int)sizeof(RIP_MSG_FIXED)); i++) - { - _dhcpUdpSocket.read(); // we don't care about the returned byte - } - - while (_dhcpUdpSocket.available() > 0) - { - switch (_dhcpUdpSocket.read()) - { - case endOption : - break; - - case padOption : - break; - - case dhcpMessageType : - opt_len = _dhcpUdpSocket.read(); - type = _dhcpUdpSocket.read(); - break; - - case subnetMask : - opt_len = _dhcpUdpSocket.read(); - _dhcpUdpSocket.read(_dhcpSubnetMask, 4); - break; - - case routersOnSubnet : - opt_len = _dhcpUdpSocket.read(); - _dhcpUdpSocket.read(_dhcpGatewayIp, 4); - for (int i = 0; i < opt_len-4; i++) - { - _dhcpUdpSocket.read(); - } - break; - - case dns : - opt_len = _dhcpUdpSocket.read(); - _dhcpUdpSocket.read(_dhcpDnsServerIp, 4); - for (int i = 0; i < opt_len-4; i++) - { - _dhcpUdpSocket.read(); - } - break; - - case dhcpServerIdentifier : - opt_len = _dhcpUdpSocket.read(); - if ((_dhcpDhcpServerIp[0] == 0 && _dhcpDhcpServerIp[1] == 0 && - _dhcpDhcpServerIp[2] == 0 && _dhcpDhcpServerIp[3] == 0) || - IPAddress(_dhcpDhcpServerIp) == _dhcpUdpSocket.remoteIP()) - { - _dhcpUdpSocket.read(_dhcpDhcpServerIp, sizeof(_dhcpDhcpServerIp)); - } - else - { - // Skip over the rest of this option - while (opt_len--) - { - _dhcpUdpSocket.read(); - } - } - break; - - case dhcpT1value : - opt_len = _dhcpUdpSocket.read(); - _dhcpUdpSocket.read((uint8_t*)&_dhcpT1, sizeof(_dhcpT1)); - _dhcpT1 = ntohl(_dhcpT1); - break; - - case dhcpT2value : - opt_len = _dhcpUdpSocket.read(); - _dhcpUdpSocket.read((uint8_t*)&_dhcpT2, sizeof(_dhcpT2)); - _dhcpT2 = ntohl(_dhcpT2); - break; - - case dhcpIPaddrLeaseTime : - opt_len = _dhcpUdpSocket.read(); - _dhcpUdpSocket.read((uint8_t*)&_dhcpLeaseTime, sizeof(_dhcpLeaseTime)); - _dhcpLeaseTime = ntohl(_dhcpLeaseTime); - _renewInSec = _dhcpLeaseTime; - break; - - default : - opt_len = _dhcpUdpSocket.read(); - // Skip over the rest of this option - while (opt_len--) - { - _dhcpUdpSocket.read(); - } - break; - } - } - } - - // Need to skip to end of the packet regardless here - _dhcpUdpSocket.flush(); - - return type; -} - - -/* - returns: - 0/DHCP_CHECK_NONE: nothing happened - 1/DHCP_CHECK_RENEW_FAIL: renew failed - 2/DHCP_CHECK_RENEW_OK: renew success - 3/DHCP_CHECK_REBIND_FAIL: rebind fail - 4/DHCP_CHECK_REBIND_OK: rebind success -*/ -int DhcpClass::checkLease(){ - int rc = DHCP_CHECK_NONE; - - unsigned long now = millis(); - unsigned long elapsed = now - _lastCheckLeaseMillis; - - // if more then one sec passed, reduce the counters accordingly - if (elapsed >= 1000) { - // set the new timestamps - _lastCheckLeaseMillis = now - (elapsed % 1000); - elapsed = elapsed / 1000; - - // decrease the counters by elapsed seconds - // we assume that the cycle time (elapsed) is fairly constant - // if the remainder is less than cycle time * 2 - // do it early instead of late - if (_renewInSec < elapsed * 2) - _renewInSec = 0; - else - _renewInSec -= elapsed; - - if (_rebindInSec < elapsed * 2) - _rebindInSec = 0; - else - _rebindInSec -= elapsed; - } - - // if we have a lease but should renew, do it - if (_renewInSec == 0 &&_dhcp_state == STATE_DHCP_LEASED) { - _dhcp_state = STATE_DHCP_REREQUEST; - rc = 1 + request_DHCP_lease(); - } - - // if we have a lease or is renewing but should bind, do it - if (_rebindInSec == 0 && (_dhcp_state == STATE_DHCP_LEASED || _dhcp_state == STATE_DHCP_START)) { - // this should basically restart completely - _dhcp_state = STATE_DHCP_START; - reset_DHCP_lease(); - rc = 3 + request_DHCP_lease(); - } - return rc; -} - -IPAddress DhcpClass::getLocalIp() -{ - return IPAddress(_dhcpLocalIp); -} - -IPAddress DhcpClass::getSubnetMask() -{ - return IPAddress(_dhcpSubnetMask); -} - -IPAddress DhcpClass::getGatewayIp() -{ - return IPAddress(_dhcpGatewayIp); -} - -IPAddress DhcpClass::getDhcpServerIp() -{ - return IPAddress(_dhcpDhcpServerIp); -} - -IPAddress DhcpClass::getDnsServerIp() -{ - return IPAddress(_dhcpDnsServerIp); -} - -void DhcpClass::printByte(char * buf, uint8_t n ) { - char *str = &buf[1]; - buf[0]='0'; - do { - unsigned long m = n; - n /= 16; - char c = m - 16 * n; - *str-- = c < 10 ? c + '0' : c + 'A' - 10; - } while(n); -} diff --git a/libraries/Ethernet/src/Dhcp.h b/libraries/Ethernet/src/Dhcp.h deleted file mode 100644 index 22900eade35..00000000000 --- a/libraries/Ethernet/src/Dhcp.h +++ /dev/null @@ -1,177 +0,0 @@ -// DHCP Library v0.3 - April 25, 2009 -// Author: Jordan Terrell - blog.jordanterrell.com - -#ifndef Dhcp_h -#define Dhcp_h - -#include "EthernetUdp.h" - -/* DHCP state machine. */ -#define STATE_DHCP_START 0 -#define STATE_DHCP_DISCOVER 1 -#define STATE_DHCP_REQUEST 2 -#define STATE_DHCP_LEASED 3 -#define STATE_DHCP_REREQUEST 4 -#define STATE_DHCP_RELEASE 5 - -#define DHCP_FLAGSBROADCAST 0x8000 - -/* UDP port numbers for DHCP */ -#define DHCP_SERVER_PORT 67 /* from server to client */ -#define DHCP_CLIENT_PORT 68 /* from client to server */ - -/* DHCP message OP code */ -#define DHCP_BOOTREQUEST 1 -#define DHCP_BOOTREPLY 2 - -/* DHCP message type */ -#define DHCP_DISCOVER 1 -#define DHCP_OFFER 2 -#define DHCP_REQUEST 3 -#define DHCP_DECLINE 4 -#define DHCP_ACK 5 -#define DHCP_NAK 6 -#define DHCP_RELEASE 7 -#define DHCP_INFORM 8 - -#define DHCP_HTYPE10MB 1 -#define DHCP_HTYPE100MB 2 - -#define DHCP_HLENETHERNET 6 -#define DHCP_HOPS 0 -#define DHCP_SECS 0 - -#define MAGIC_COOKIE 0x63825363 -#define MAX_DHCP_OPT 16 - -#define HOST_NAME "WIZnet" -#define DEFAULT_LEASE (900) //default lease time in seconds - -#define DHCP_CHECK_NONE (0) -#define DHCP_CHECK_RENEW_FAIL (1) -#define DHCP_CHECK_RENEW_OK (2) -#define DHCP_CHECK_REBIND_FAIL (3) -#define DHCP_CHECK_REBIND_OK (4) - -enum -{ - padOption = 0, - subnetMask = 1, - timerOffset = 2, - routersOnSubnet = 3, - /* timeServer = 4, - nameServer = 5,*/ - dns = 6, - /*logServer = 7, - cookieServer = 8, - lprServer = 9, - impressServer = 10, - resourceLocationServer = 11,*/ - hostName = 12, - /*bootFileSize = 13, - meritDumpFile = 14,*/ - domainName = 15, - /*swapServer = 16, - rootPath = 17, - extentionsPath = 18, - IPforwarding = 19, - nonLocalSourceRouting = 20, - policyFilter = 21, - maxDgramReasmSize = 22, - defaultIPTTL = 23, - pathMTUagingTimeout = 24, - pathMTUplateauTable = 25, - ifMTU = 26, - allSubnetsLocal = 27, - broadcastAddr = 28, - performMaskDiscovery = 29, - maskSupplier = 30, - performRouterDiscovery = 31, - routerSolicitationAddr = 32, - staticRoute = 33, - trailerEncapsulation = 34, - arpCacheTimeout = 35, - ethernetEncapsulation = 36, - tcpDefaultTTL = 37, - tcpKeepaliveInterval = 38, - tcpKeepaliveGarbage = 39, - nisDomainName = 40, - nisServers = 41, - ntpServers = 42, - vendorSpecificInfo = 43, - netBIOSnameServer = 44, - netBIOSdgramDistServer = 45, - netBIOSnodeType = 46, - netBIOSscope = 47, - xFontServer = 48, - xDisplayManager = 49,*/ - dhcpRequestedIPaddr = 50, - dhcpIPaddrLeaseTime = 51, - /*dhcpOptionOverload = 52,*/ - dhcpMessageType = 53, - dhcpServerIdentifier = 54, - dhcpParamRequest = 55, - /*dhcpMsg = 56, - dhcpMaxMsgSize = 57,*/ - dhcpT1value = 58, - dhcpT2value = 59, - /*dhcpClassIdentifier = 60,*/ - dhcpClientIdentifier = 61, - endOption = 255 -}; - -typedef struct __attribute__((packed)) _RIP_MSG_FIXED -{ - uint8_t op; - uint8_t htype; - uint8_t hlen; - uint8_t hops; - uint32_t xid; - uint16_t secs; - uint16_t flags; - uint8_t ciaddr[4]; - uint8_t yiaddr[4]; - uint8_t siaddr[4]; - uint8_t giaddr[4]; - uint8_t chaddr[6]; -}RIP_MSG_FIXED; - -class DhcpClass { -private: - uint32_t _dhcpInitialTransactionId; - uint32_t _dhcpTransactionId; - uint8_t _dhcpMacAddr[6]; - uint8_t _dhcpLocalIp[4]; - uint8_t _dhcpSubnetMask[4]; - uint8_t _dhcpGatewayIp[4]; - uint8_t _dhcpDhcpServerIp[4]; - uint8_t _dhcpDnsServerIp[4]; - uint32_t _dhcpLeaseTime; - uint32_t _dhcpT1, _dhcpT2; - unsigned long _renewInSec; - unsigned long _rebindInSec; - unsigned long _timeout; - unsigned long _responseTimeout; - unsigned long _lastCheckLeaseMillis; - uint8_t _dhcp_state; - EthernetUDP _dhcpUdpSocket; - - int request_DHCP_lease(); - void reset_DHCP_lease(); - void presend_DHCP(); - void send_DHCP_MESSAGE(uint8_t, uint16_t); - void printByte(char *, uint8_t); - - uint8_t parseDHCPResponse(unsigned long responseTimeout, uint32_t& transactionId); -public: - IPAddress getLocalIp(); - IPAddress getSubnetMask(); - IPAddress getGatewayIp(); - IPAddress getDhcpServerIp(); - IPAddress getDnsServerIp(); - - int beginWithDHCP(uint8_t *, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); - int checkLease(); -}; - -#endif diff --git a/libraries/Ethernet/src/Dns.cpp b/libraries/Ethernet/src/Dns.cpp deleted file mode 100644 index cecbcd267c4..00000000000 --- a/libraries/Ethernet/src/Dns.cpp +++ /dev/null @@ -1,404 +0,0 @@ -// Arduino DNS client for WizNet5100-based Ethernet shield -// (c) Copyright 2009-2010 MCQN Ltd. -// Released under Apache License, version 2.0 - -#include "utility/w5100.h" -#include "EthernetUdp.h" -#include "utility/util.h" - -#include "Dns.h" -#include -//#include -#include "Arduino.h" - - -#define SOCKET_NONE 255 -// Various flags and header field values for a DNS message -#define UDP_HEADER_SIZE 8 -#define DNS_HEADER_SIZE 12 -#define TTL_SIZE 4 -#define QUERY_FLAG (0) -#define RESPONSE_FLAG (1<<15) -#define QUERY_RESPONSE_MASK (1<<15) -#define OPCODE_STANDARD_QUERY (0) -#define OPCODE_INVERSE_QUERY (1<<11) -#define OPCODE_STATUS_REQUEST (2<<11) -#define OPCODE_MASK (15<<11) -#define AUTHORITATIVE_FLAG (1<<10) -#define TRUNCATION_FLAG (1<<9) -#define RECURSION_DESIRED_FLAG (1<<8) -#define RECURSION_AVAILABLE_FLAG (1<<7) -#define RESP_NO_ERROR (0) -#define RESP_FORMAT_ERROR (1) -#define RESP_SERVER_FAILURE (2) -#define RESP_NAME_ERROR (3) -#define RESP_NOT_IMPLEMENTED (4) -#define RESP_REFUSED (5) -#define RESP_MASK (15) -#define TYPE_A (0x0001) -#define CLASS_IN (0x0001) -#define LABEL_COMPRESSION_MASK (0xC0) -// Port number that DNS servers listen on -#define DNS_PORT 53 - -// Possible return codes from ProcessResponse -#define SUCCESS 1 -#define TIMED_OUT -1 -#define INVALID_SERVER -2 -#define TRUNCATED -3 -#define INVALID_RESPONSE -4 - -void DNSClient::begin(const IPAddress& aDNSServer) -{ - iDNSServer = aDNSServer; - iRequestId = 0; -} - - -int DNSClient::inet_aton(const char* address, IPAddress& result) -{ - uint16_t acc = 0; // Accumulator - uint8_t dots = 0; - - while (*address) - { - char c = *address++; - if (c >= '0' && c <= '9') - { - acc = acc * 10 + (c - '0'); - if (acc > 255) { - // Value out of [0..255] range - return 0; - } - } - else if (c == '.') - { - if (dots == 3) { - // Too much dots (there must be 3 dots) - return 0; - } - result[dots++] = acc; - acc = 0; - } - else - { - // Invalid char - return 0; - } - } - - if (dots != 3) { - // Too few dots (there must be 3 dots) - return 0; - } - result[3] = acc; - return 1; -} - -int DNSClient::getHostByName(const char* aHostname, IPAddress& aResult) -{ - int ret =0; - - // See if it's a numeric IP address - if (inet_aton(aHostname, aResult)) - { - // It is, our work here is done - return 1; - } - - // Check we've got a valid DNS server to use - if (iDNSServer == INADDR_NONE) - { - return INVALID_SERVER; - } - - // Find a socket to use - if (iUdp.begin(1024+(millis() & 0xF)) == 1) - { - // Try up to three times - int retries = 0; -// while ((retries < 3) && (ret <= 0)) - { - // Send DNS request - ret = iUdp.beginPacket(iDNSServer, DNS_PORT); - if (ret != 0) - { - // Now output the request data - ret = BuildRequest(aHostname); - if (ret != 0) - { - // And finally send the request - ret = iUdp.endPacket(); - if (ret != 0) - { - // Now wait for a response - int wait_retries = 0; - ret = TIMED_OUT; - while ((wait_retries < 3) && (ret == TIMED_OUT)) - { - ret = ProcessResponse(5000, aResult); - wait_retries++; - } - } - } - } - retries++; - } - - // We're done with the socket now - iUdp.stop(); - } - - return ret; -} - -uint16_t DNSClient::BuildRequest(const char* aName) -{ - // Build header - // 1 1 1 1 1 1 - // 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 - // +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ - // | ID | - // +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ - // |QR| Opcode |AA|TC|RD|RA| Z | RCODE | - // +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ - // | QDCOUNT | - // +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ - // | ANCOUNT | - // +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ - // | NSCOUNT | - // +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ - // | ARCOUNT | - // +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ - // As we only support one request at a time at present, we can simplify - // some of this header - iRequestId = millis(); // generate a random ID - uint16_t twoByteBuffer; - - // FIXME We should also check that there's enough space available to write to, rather - // FIXME than assume there's enough space (as the code does at present) - uint16_t _id = htons(iRequestId); - iUdp.write((uint8_t*)&_id, sizeof(_id)); - - twoByteBuffer = htons(QUERY_FLAG | OPCODE_STANDARD_QUERY | RECURSION_DESIRED_FLAG); - iUdp.write((uint8_t*)&twoByteBuffer, sizeof(twoByteBuffer)); - - twoByteBuffer = htons(1); // One question record - iUdp.write((uint8_t*)&twoByteBuffer, sizeof(twoByteBuffer)); - - twoByteBuffer = 0; // Zero answer records - iUdp.write((uint8_t*)&twoByteBuffer, sizeof(twoByteBuffer)); - - iUdp.write((uint8_t*)&twoByteBuffer, sizeof(twoByteBuffer)); - // and zero additional records - iUdp.write((uint8_t*)&twoByteBuffer, sizeof(twoByteBuffer)); - - // Build question - const char* start =aName; - const char* end =start; - uint8_t len; - // Run through the name being requested - while (*end) - { - // Find out how long this section of the name is - end = start; - while (*end && (*end != '.') ) - { - end++; - } - - if (end-start > 0) - { - // Write out the size of this section - len = end-start; - iUdp.write(&len, sizeof(len)); - // And then write out the section - iUdp.write((uint8_t*)start, end-start); - } - start = end+1; - } - - // We've got to the end of the question name, so - // terminate it with a zero-length section - len = 0; - iUdp.write(&len, sizeof(len)); - // Finally the type and class of question - twoByteBuffer = htons(TYPE_A); - iUdp.write((uint8_t*)&twoByteBuffer, sizeof(twoByteBuffer)); - - twoByteBuffer = htons(CLASS_IN); // Internet class of question - iUdp.write((uint8_t*)&twoByteBuffer, sizeof(twoByteBuffer)); - // Success! Everything buffered okay - return 1; -} - - -uint16_t DNSClient::ProcessResponse(uint16_t aTimeout, IPAddress& aAddress) -{ - uint32_t startTime = millis(); - - // Wait for a response packet - while(iUdp.parsePacket() <= 0) - { - if((millis() - startTime) > aTimeout) - return TIMED_OUT; - delay(50); - } - - // We've had a reply! - // Read the UDP header - uint8_t header[DNS_HEADER_SIZE]; // Enough space to reuse for the DNS header - // Check that it's a response from the right server and the right port - if ( (iDNSServer != iUdp.remoteIP()) || - (iUdp.remotePort() != DNS_PORT) ) - { - // It's not from who we expected - return INVALID_SERVER; - } - - // Read through the rest of the response - if (iUdp.available() < DNS_HEADER_SIZE) - { - return TRUNCATED; - } - iUdp.read(header, DNS_HEADER_SIZE); - - uint16_t header_flags = word(header[2], header[3]); - // Check that it's a response to this request - if ( (iRequestId != word(header[0], header[1])) || - ((header_flags & QUERY_RESPONSE_MASK) != (uint16_t)RESPONSE_FLAG) ) - { - // Mark the entire packet as read - iUdp.flush(); - return INVALID_RESPONSE; - } - // Check for any errors in the response (or in our request) - // although we don't do anything to get round these - if ( (header_flags & TRUNCATION_FLAG) || (header_flags & RESP_MASK) ) - { - // Mark the entire packet as read - iUdp.flush(); - return -5; //INVALID_RESPONSE; - } - - // And make sure we've got (at least) one answer - uint16_t answerCount = word(header[6], header[7]); - if (answerCount == 0 ) - { - // Mark the entire packet as read - iUdp.flush(); - return -6; //INVALID_RESPONSE; - } - - // Skip over any questions - for (uint16_t i =0; i < word(header[4], header[5]); i++) - { - // Skip over the name - uint8_t len; - do - { - iUdp.read(&len, sizeof(len)); - if (len > 0) - { - // Don't need to actually read the data out for the string, just - // advance ptr to beyond it - while(len--) - { - iUdp.read(); // we don't care about the returned byte - } - } - } while (len != 0); - - // Now jump over the type and class - for (int i =0; i < 4; i++) - { - iUdp.read(); // we don't care about the returned byte - } - } - - // Now we're up to the bit we're interested in, the answer - // There might be more than one answer (although we'll just use the first - // type A answer) and some authority and additional resource records but - // we're going to ignore all of them. - - for (uint16_t i =0; i < answerCount; i++) - { - // Skip the name - uint8_t len; - do - { - iUdp.read(&len, sizeof(len)); - if ((len & LABEL_COMPRESSION_MASK) == 0) - { - // It's just a normal label - if (len > 0) - { - // And it's got a length - // Don't need to actually read the data out for the string, - // just advance ptr to beyond it - while(len--) - { - iUdp.read(); // we don't care about the returned byte - } - } - } - else - { - // This is a pointer to a somewhere else in the message for the - // rest of the name. We don't care about the name, and RFC1035 - // says that a name is either a sequence of labels ended with a - // 0 length octet or a pointer or a sequence of labels ending in - // a pointer. Either way, when we get here we're at the end of - // the name - // Skip over the pointer - iUdp.read(); // we don't care about the returned byte - // And set len so that we drop out of the name loop - len = 0; - } - } while (len != 0); - - // Check the type and class - uint16_t answerType; - uint16_t answerClass; - iUdp.read((uint8_t*)&answerType, sizeof(answerType)); - iUdp.read((uint8_t*)&answerClass, sizeof(answerClass)); - - // Ignore the Time-To-Live as we don't do any caching - for (int i =0; i < TTL_SIZE; i++) - { - iUdp.read(); // we don't care about the returned byte - } - - // And read out the length of this answer - // Don't need header_flags anymore, so we can reuse it here - iUdp.read((uint8_t*)&header_flags, sizeof(header_flags)); - - if ( (htons(answerType) == TYPE_A) && (htons(answerClass) == CLASS_IN) ) - { - if (htons(header_flags) != 4) - { - // It's a weird size - // Mark the entire packet as read - iUdp.flush(); - return -9;//INVALID_RESPONSE; - } - iUdp.read(aAddress.raw_address(), 4); - return SUCCESS; - } - else - { - // This isn't an answer type we're after, move onto the next one - for (uint16_t i =0; i < htons(header_flags); i++) - { - iUdp.read(); // we don't care about the returned byte - } - } - } - - // Mark the entire packet as read - iUdp.flush(); - - // If we get here then we haven't found an answer - return -10;//INVALID_RESPONSE; -} - diff --git a/libraries/Ethernet/src/Dns.h b/libraries/Ethernet/src/Dns.h deleted file mode 100644 index 6bcb98ab9eb..00000000000 --- a/libraries/Ethernet/src/Dns.h +++ /dev/null @@ -1,41 +0,0 @@ -// Arduino DNS client for WizNet5100-based Ethernet shield -// (c) Copyright 2009-2010 MCQN Ltd. -// Released under Apache License, version 2.0 - -#ifndef DNSClient_h -#define DNSClient_h - -#include - -class DNSClient -{ -public: - // ctor - void begin(const IPAddress& aDNSServer); - - /** Convert a numeric IP address string into a four-byte IP address. - @param aIPAddrString IP address to convert - @param aResult IPAddress structure to store the returned IP address - @result 1 if aIPAddrString was successfully converted to an IP address, - else error code - */ - int inet_aton(const char *aIPAddrString, IPAddress& aResult); - - /** Resolve the given hostname to an IP address. - @param aHostname Name to be resolved - @param aResult IPAddress structure to store the returned IP address - @result 1 if aIPAddrString was successfully converted to an IP address, - else error code - */ - int getHostByName(const char* aHostname, IPAddress& aResult); - -protected: - uint16_t BuildRequest(const char* aName); - uint16_t ProcessResponse(uint16_t aTimeout, IPAddress& aAddress); - - IPAddress iDNSServer; - uint16_t iRequestId; - EthernetUDP iUdp; -}; - -#endif diff --git a/libraries/Ethernet/src/Ethernet.cpp b/libraries/Ethernet/src/Ethernet.cpp deleted file mode 100644 index 54cf8d64cb0..00000000000 --- a/libraries/Ethernet/src/Ethernet.cpp +++ /dev/null @@ -1,136 +0,0 @@ -#include "utility/w5100.h" -#include "Ethernet.h" -#include "Dhcp.h" - -// XXX: don't make assumptions about the value of MAX_SOCK_NUM. -uint8_t EthernetClass::_state[MAX_SOCK_NUM] = { - 0, 0, 0, 0 }; -uint16_t EthernetClass::_server_port[MAX_SOCK_NUM] = { - 0, 0, 0, 0 }; - -int EthernetClass::begin(uint8_t *mac_address, unsigned long timeout, unsigned long responseTimeout) -{ - static DhcpClass s_dhcp; - _dhcp = &s_dhcp; - - - // Initialise the basic info - W5100.init(); - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.setMACAddress(mac_address); - W5100.setIPAddress(IPAddress(0,0,0,0).raw_address()); - SPI.endTransaction(); - - // Now try to get our config info from a DHCP server - int ret = _dhcp->beginWithDHCP(mac_address, timeout, responseTimeout); - if(ret == 1) - { - // We've successfully found a DHCP server and got our configuration info, so set things - // accordingly - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.setIPAddress(_dhcp->getLocalIp().raw_address()); - W5100.setGatewayIp(_dhcp->getGatewayIp().raw_address()); - W5100.setSubnetMask(_dhcp->getSubnetMask().raw_address()); - SPI.endTransaction(); - _dnsServerAddress = _dhcp->getDnsServerIp(); - } - - return ret; -} - -void EthernetClass::begin(uint8_t *mac_address, IPAddress local_ip) -{ - // Assume the DNS server will be the machine on the same network as the local IP - // but with last octet being '1' - IPAddress dns_server = local_ip; - dns_server[3] = 1; - begin(mac_address, local_ip, dns_server); -} - -void EthernetClass::begin(uint8_t *mac_address, IPAddress local_ip, IPAddress dns_server) -{ - // Assume the gateway will be the machine on the same network as the local IP - // but with last octet being '1' - IPAddress gateway = local_ip; - gateway[3] = 1; - begin(mac_address, local_ip, dns_server, gateway); -} - -void EthernetClass::begin(uint8_t *mac_address, IPAddress local_ip, IPAddress dns_server, IPAddress gateway) -{ - IPAddress subnet(255, 255, 255, 0); - begin(mac_address, local_ip, dns_server, gateway, subnet); -} - -void EthernetClass::begin(uint8_t *mac, IPAddress local_ip, IPAddress dns_server, IPAddress gateway, IPAddress subnet) -{ - W5100.init(); - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.setMACAddress(mac); - W5100.setIPAddress(local_ip.raw_address()); - W5100.setGatewayIp(gateway.raw_address()); - W5100.setSubnetMask(subnet.raw_address()); - SPI.endTransaction(); - _dnsServerAddress = dns_server; -} - -int EthernetClass::maintain(){ - int rc = DHCP_CHECK_NONE; - if(_dhcp != NULL){ - //we have a pointer to dhcp, use it - rc = _dhcp->checkLease(); - switch ( rc ){ - case DHCP_CHECK_NONE: - //nothing done - break; - case DHCP_CHECK_RENEW_OK: - case DHCP_CHECK_REBIND_OK: - //we might have got a new IP. - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.setIPAddress(_dhcp->getLocalIp().raw_address()); - W5100.setGatewayIp(_dhcp->getGatewayIp().raw_address()); - W5100.setSubnetMask(_dhcp->getSubnetMask().raw_address()); - SPI.endTransaction(); - _dnsServerAddress = _dhcp->getDnsServerIp(); - break; - default: - //this is actually a error, it will retry though - break; - } - } - return rc; -} - -IPAddress EthernetClass::localIP() -{ - IPAddress ret; - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.getIPAddress(ret.raw_address()); - SPI.endTransaction(); - return ret; -} - -IPAddress EthernetClass::subnetMask() -{ - IPAddress ret; - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.getSubnetMask(ret.raw_address()); - SPI.endTransaction(); - return ret; -} - -IPAddress EthernetClass::gatewayIP() -{ - IPAddress ret; - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.getGatewayIp(ret.raw_address()); - SPI.endTransaction(); - return ret; -} - -IPAddress EthernetClass::dnsServerIP() -{ - return _dnsServerAddress; -} - -EthernetClass Ethernet; diff --git a/libraries/Ethernet/src/Ethernet.h b/libraries/Ethernet/src/Ethernet.h deleted file mode 100644 index 083df4427b0..00000000000 --- a/libraries/Ethernet/src/Ethernet.h +++ /dev/null @@ -1,41 +0,0 @@ -#ifndef ethernet_h -#define ethernet_h - -#include -//#include "w5100.h" -#include "IPAddress.h" -#include "EthernetClient.h" -#include "EthernetServer.h" -#include "Dhcp.h" - -#define MAX_SOCK_NUM 4 - -class EthernetClass { -private: - IPAddress _dnsServerAddress; - DhcpClass* _dhcp; -public: - static uint8_t _state[MAX_SOCK_NUM]; - static uint16_t _server_port[MAX_SOCK_NUM]; - // Initialise the Ethernet shield to use the provided MAC address and gain the rest of the - // configuration through DHCP. - // Returns 0 if the DHCP configuration failed, and 1 if it succeeded - int begin(uint8_t *mac_address, unsigned long timeout = 60000, unsigned long responseTimeout = 4000); - void begin(uint8_t *mac_address, IPAddress local_ip); - void begin(uint8_t *mac_address, IPAddress local_ip, IPAddress dns_server); - void begin(uint8_t *mac_address, IPAddress local_ip, IPAddress dns_server, IPAddress gateway); - void begin(uint8_t *mac_address, IPAddress local_ip, IPAddress dns_server, IPAddress gateway, IPAddress subnet); - int maintain(); - - IPAddress localIP(); - IPAddress subnetMask(); - IPAddress gatewayIP(); - IPAddress dnsServerIP(); - - friend class EthernetClient; - friend class EthernetServer; -}; - -extern EthernetClass Ethernet; - -#endif diff --git a/libraries/Ethernet/src/EthernetClient.cpp b/libraries/Ethernet/src/EthernetClient.cpp deleted file mode 100644 index 75765e51a1e..00000000000 --- a/libraries/Ethernet/src/EthernetClient.cpp +++ /dev/null @@ -1,177 +0,0 @@ -#include "utility/w5100.h" -#include "utility/socket.h" - -extern "C" { - #include "string.h" -} - -#include "Arduino.h" - -#include "Ethernet.h" -#include "EthernetClient.h" -#include "EthernetServer.h" -#include "Dns.h" - -uint16_t EthernetClient::_srcport = 49152; //Use IANA recommended ephemeral port range 49152-65535 - -EthernetClient::EthernetClient() : _sock(MAX_SOCK_NUM) { -} - -EthernetClient::EthernetClient(uint8_t sock) : _sock(sock) { -} - -int EthernetClient::connect(const char* host, uint16_t port) { - // Look up the host first - int ret = 0; - DNSClient dns; - IPAddress remote_addr; - - dns.begin(Ethernet.dnsServerIP()); - ret = dns.getHostByName(host, remote_addr); - if (ret == 1) { - return connect(remote_addr, port); - } else { - return ret; - } -} - -int EthernetClient::connect(IPAddress ip, uint16_t port) { - if (_sock != MAX_SOCK_NUM) - return 0; - - for (int i = 0; i < MAX_SOCK_NUM; i++) { - uint8_t s = socketStatus(i); - if (s == SnSR::CLOSED || s == SnSR::FIN_WAIT || s == SnSR::CLOSE_WAIT) { - _sock = i; - break; - } - } - - if (_sock == MAX_SOCK_NUM) - return 0; - - _srcport++; - if (_srcport == 0) _srcport = 49152; //Use IANA recommended ephemeral port range 49152-65535 - socket(_sock, SnMR::TCP, _srcport, 0); - - if (!::connect(_sock, rawIPAddress(ip), port)) { - _sock = MAX_SOCK_NUM; - return 0; - } - - while (status() != SnSR::ESTABLISHED) { - delay(1); - if (status() == SnSR::CLOSED) { - _sock = MAX_SOCK_NUM; - return 0; - } - } - - return 1; -} - -size_t EthernetClient::write(uint8_t b) { - return write(&b, 1); -} - -size_t EthernetClient::write(const uint8_t *buf, size_t size) { - if (_sock == MAX_SOCK_NUM) { - setWriteError(); - return 0; - } - if (!send(_sock, buf, size)) { - setWriteError(); - return 0; - } - return size; -} - -int EthernetClient::available() { - if (_sock != MAX_SOCK_NUM) - return recvAvailable(_sock); - return 0; -} - -int EthernetClient::read() { - uint8_t b; - if ( recv(_sock, &b, 1) > 0 ) - { - // recv worked - return b; - } - else - { - // No data available - return -1; - } -} - -int EthernetClient::read(uint8_t *buf, size_t size) { - return recv(_sock, buf, size); -} - -int EthernetClient::peek() { - uint8_t b; - // Unlike recv, peek doesn't check to see if there's any data available, so we must - if (!available()) - return -1; - ::peek(_sock, &b); - return b; -} - -void EthernetClient::flush() { - ::flush(_sock); -} - -void EthernetClient::stop() { - if (_sock == MAX_SOCK_NUM) - return; - - // attempt to close the connection gracefully (send a FIN to other side) - disconnect(_sock); - unsigned long start = millis(); - - // wait up to a second for the connection to close - uint8_t s; - do { - s = status(); - if (s == SnSR::CLOSED) - break; // exit the loop - delay(1); - } while (millis() - start < 1000); - - // if it hasn't closed, close it forcefully - if (s != SnSR::CLOSED) - close(_sock); - - EthernetClass::_server_port[_sock] = 0; - _sock = MAX_SOCK_NUM; -} - -uint8_t EthernetClient::connected() { - if (_sock == MAX_SOCK_NUM) return 0; - - uint8_t s = status(); - return !(s == SnSR::LISTEN || s == SnSR::CLOSED || s == SnSR::FIN_WAIT || - (s == SnSR::CLOSE_WAIT && !available())); -} - -uint8_t EthernetClient::status() { - if (_sock == MAX_SOCK_NUM) return SnSR::CLOSED; - return socketStatus(_sock); -} - -// the next function allows us to use the client returned by -// EthernetServer::available() as the condition in an if-statement. - -EthernetClient::operator bool() { - return _sock != MAX_SOCK_NUM; -} - -bool EthernetClient::operator==(const EthernetClient& rhs) { - return _sock == rhs._sock && _sock != MAX_SOCK_NUM && rhs._sock != MAX_SOCK_NUM; -} - -uint8_t EthernetClient::getSocketNumber() { - return _sock; -} diff --git a/libraries/Ethernet/src/EthernetClient.h b/libraries/Ethernet/src/EthernetClient.h deleted file mode 100644 index 52a3b8f4284..00000000000 --- a/libraries/Ethernet/src/EthernetClient.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef ethernetclient_h -#define ethernetclient_h -#include "Arduino.h" -#include "Print.h" -#include "Client.h" -#include "IPAddress.h" - -class EthernetClient : public Client { - -public: - EthernetClient(); - EthernetClient(uint8_t sock); - - uint8_t status(); - virtual int connect(IPAddress ip, uint16_t port); - virtual int connect(const char *host, uint16_t port); - virtual size_t write(uint8_t); - virtual size_t write(const uint8_t *buf, size_t size); - virtual int available(); - virtual int read(); - virtual int read(uint8_t *buf, size_t size); - virtual int peek(); - virtual void flush(); - virtual void stop(); - virtual uint8_t connected(); - virtual operator bool(); - virtual bool operator==(const bool value) { return bool() == value; } - virtual bool operator!=(const bool value) { return bool() != value; } - virtual bool operator==(const EthernetClient&); - virtual bool operator!=(const EthernetClient& rhs) { return !this->operator==(rhs); }; - uint8_t getSocketNumber(); - - friend class EthernetServer; - - using Print::write; - -private: - static uint16_t _srcport; - uint8_t _sock; -}; - -#endif diff --git a/libraries/Ethernet/src/EthernetServer.cpp b/libraries/Ethernet/src/EthernetServer.cpp deleted file mode 100644 index cfa813eb7be..00000000000 --- a/libraries/Ethernet/src/EthernetServer.cpp +++ /dev/null @@ -1,92 +0,0 @@ -#include "utility/w5100.h" -#include "utility/socket.h" -extern "C" { -#include "string.h" -} - -#include "Ethernet.h" -#include "EthernetClient.h" -#include "EthernetServer.h" - -EthernetServer::EthernetServer(uint16_t port) -{ - _port = port; -} - -void EthernetServer::begin() -{ - for (int sock = 0; sock < MAX_SOCK_NUM; sock++) { - EthernetClient client(sock); - if (client.status() == SnSR::CLOSED) { - socket(sock, SnMR::TCP, _port, 0); - listen(sock); - EthernetClass::_server_port[sock] = _port; - break; - } - } -} - -void EthernetServer::accept() -{ - int listening = 0; - - for (int sock = 0; sock < MAX_SOCK_NUM; sock++) { - EthernetClient client(sock); - - if (EthernetClass::_server_port[sock] == _port) { - if (client.status() == SnSR::LISTEN) { - listening = 1; - } - else if (client.status() == SnSR::CLOSE_WAIT && !client.available()) { - client.stop(); - } - } - } - - if (!listening) { - begin(); - } -} - -EthernetClient EthernetServer::available() -{ - accept(); - - for (int sock = 0; sock < MAX_SOCK_NUM; sock++) { - EthernetClient client(sock); - if (EthernetClass::_server_port[sock] == _port) { - uint8_t s = client.status(); - if (s == SnSR::ESTABLISHED || s == SnSR::CLOSE_WAIT) { - if (client.available()) { - // XXX: don't always pick the lowest numbered socket. - return client; - } - } - } - } - - return EthernetClient(MAX_SOCK_NUM); -} - -size_t EthernetServer::write(uint8_t b) -{ - return write(&b, 1); -} - -size_t EthernetServer::write(const uint8_t *buffer, size_t size) -{ - size_t n = 0; - - accept(); - - for (int sock = 0; sock < MAX_SOCK_NUM; sock++) { - EthernetClient client(sock); - - if (EthernetClass::_server_port[sock] == _port && - client.status() == SnSR::ESTABLISHED) { - n += client.write(buffer, size); - } - } - - return n; -} diff --git a/libraries/Ethernet/src/EthernetServer.h b/libraries/Ethernet/src/EthernetServer.h deleted file mode 100644 index 86ccafe9690..00000000000 --- a/libraries/Ethernet/src/EthernetServer.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef ethernetserver_h -#define ethernetserver_h - -#include "Server.h" - -class EthernetClient; - -class EthernetServer : -public Server { -private: - uint16_t _port; - void accept(); -public: - EthernetServer(uint16_t); - EthernetClient available(); - virtual void begin(); - virtual size_t write(uint8_t); - virtual size_t write(const uint8_t *buf, size_t size); - using Print::write; -}; - -#endif diff --git a/libraries/Ethernet/src/EthernetUdp.cpp b/libraries/Ethernet/src/EthernetUdp.cpp deleted file mode 100644 index 8066783aefa..00000000000 --- a/libraries/Ethernet/src/EthernetUdp.cpp +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Udp.cpp: Library to send/receive UDP packets with the Arduino ethernet shield. - * This version only offers minimal wrapping of socket.c/socket.h - * Drop Udp.h/.cpp into the Ethernet library directory at hardware/libraries/Ethernet/ - * - * MIT License: - * Copyright (c) 2008 Bjoern Hartmann - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * bjoern@cs.stanford.edu 12/30/2008 - */ - -#include "utility/w5100.h" -#include "utility/socket.h" -#include "Ethernet.h" -#include "Udp.h" -#include "Dns.h" - -/* Constructor */ -EthernetUDP::EthernetUDP() : _sock(MAX_SOCK_NUM) {} - -/* Start EthernetUDP socket, listening at local port PORT */ -uint8_t EthernetUDP::begin(uint16_t port) { - if (_sock != MAX_SOCK_NUM) - return 0; - - for (int i = 0; i < MAX_SOCK_NUM; i++) { - uint8_t s = socketStatus(i); - if (s == SnSR::CLOSED || s == SnSR::FIN_WAIT) { - _sock = i; - break; - } - } - - if (_sock == MAX_SOCK_NUM) - return 0; - - _port = port; - _remaining = 0; - socket(_sock, SnMR::UDP, _port, 0); - - return 1; -} - -/* return number of bytes available in the current packet, - will return zero if parsePacket hasn't been called yet */ -int EthernetUDP::available() { - return _remaining; -} - -/* Release any resources being used by this EthernetUDP instance */ -void EthernetUDP::stop() -{ - if (_sock == MAX_SOCK_NUM) - return; - - close(_sock); - - EthernetClass::_server_port[_sock] = 0; - _sock = MAX_SOCK_NUM; -} - -int EthernetUDP::beginPacket(const char *host, uint16_t port) -{ - // Look up the host first - int ret = 0; - DNSClient dns; - IPAddress remote_addr; - - dns.begin(Ethernet.dnsServerIP()); - ret = dns.getHostByName(host, remote_addr); - if (ret == 1) { - return beginPacket(remote_addr, port); - } else { - return ret; - } -} - -int EthernetUDP::beginPacket(IPAddress ip, uint16_t port) -{ - _offset = 0; - return startUDP(_sock, rawIPAddress(ip), port); -} - -int EthernetUDP::endPacket() -{ - return sendUDP(_sock); -} - -size_t EthernetUDP::write(uint8_t byte) -{ - return write(&byte, 1); -} - -size_t EthernetUDP::write(const uint8_t *buffer, size_t size) -{ - uint16_t bytes_written = bufferData(_sock, _offset, buffer, size); - _offset += bytes_written; - return bytes_written; -} - -int EthernetUDP::parsePacket() -{ - // discard any remaining bytes in the last packet - while (_remaining) { - // could this fail (loop endlessly) if _remaining > 0 and recv in read fails? - // should only occur if recv fails after telling us the data is there, lets - // hope the w5100 always behaves :) - read(); - } - - if (recvAvailable(_sock) > 0) - { - //HACK - hand-parse the UDP packet using TCP recv method - uint8_t tmpBuf[8]; - int ret =0; - //read 8 header bytes and get IP and port from it - ret = recv(_sock,tmpBuf,8); - if (ret > 0) - { - _remoteIP = tmpBuf; - _remotePort = tmpBuf[4]; - _remotePort = (_remotePort << 8) + tmpBuf[5]; - _remaining = tmpBuf[6]; - _remaining = (_remaining << 8) + tmpBuf[7]; - - // When we get here, any remaining bytes are the data - ret = _remaining; - } - return ret; - } - // There aren't any packets available - return 0; -} - -int EthernetUDP::read() -{ - uint8_t byte; - - if ((_remaining > 0) && (recv(_sock, &byte, 1) > 0)) - { - // We read things without any problems - _remaining--; - return byte; - } - - // If we get here, there's no data available - return -1; -} - -int EthernetUDP::read(unsigned char* buffer, size_t len) -{ - - if (_remaining > 0) - { - - int got; - - if (_remaining <= len) - { - // data should fit in the buffer - got = recv(_sock, buffer, _remaining); - } - else - { - // too much data for the buffer, - // grab as much as will fit - got = recv(_sock, buffer, len); - } - - if (got > 0) - { - _remaining -= got; - return got; - } - - } - - // If we get here, there's no data available or recv failed - return -1; - -} - -int EthernetUDP::peek() -{ - uint8_t b; - // Unlike recv, peek doesn't check to see if there's any data available, so we must. - // If the user hasn't called parsePacket yet then return nothing otherwise they - // may get the UDP header - if (!_remaining) - return -1; - ::peek(_sock, &b); - return b; -} - -void EthernetUDP::flush() -{ - // TODO: we should wait for TX buffer to be emptied -} - -/* Start EthernetUDP socket, listening at local port PORT */ -uint8_t EthernetUDP::beginMulticast(IPAddress ip, uint16_t port) -{ - if (_sock != MAX_SOCK_NUM) - return 0; - - for (int i = 0; i < MAX_SOCK_NUM; i++) { - uint8_t s = W5100.readSnSR(i); - if (s == SnSR::CLOSED || s == SnSR::FIN_WAIT) { - _sock = i; - break; - } - } - - if (_sock == MAX_SOCK_NUM) - return 0; - - // Calculate MAC address from Multicast IP Address - byte mac[] = { 0x01, 0x00, 0x5E, 0x00, 0x00, 0x00 }; - - mac[3] = ip[1] & 0x7F; - mac[4] = ip[2]; - mac[5] = ip[3]; - - W5100.writeSnDIPR(_sock, rawIPAddress(ip)); //239.255.0.1 - W5100.writeSnDPORT(_sock, port); - W5100.writeSnDHAR(_sock,mac); - - _remaining = 0; - socket(_sock, SnMR::UDP, port, SnMR::MULTI); - return 1; -} - - diff --git a/libraries/Ethernet/src/EthernetUdp.h b/libraries/Ethernet/src/EthernetUdp.h deleted file mode 100644 index 549e3551774..00000000000 --- a/libraries/Ethernet/src/EthernetUdp.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Udp.cpp: Library to send/receive UDP packets with the Arduino ethernet shield. - * This version only offers minimal wrapping of socket.c/socket.h - * Drop Udp.h/.cpp into the Ethernet library directory at hardware/libraries/Ethernet/ - * - * NOTE: UDP is fast, but has some important limitations (thanks to Warren Gray for mentioning these) - * 1) UDP does not guarantee the order in which assembled UDP packets are received. This - * might not happen often in practice, but in larger network topologies, a UDP - * packet can be received out of sequence. - * 2) UDP does not guard against lost packets - so packets *can* disappear without the sender being - * aware of it. Again, this may not be a concern in practice on small local networks. - * For more information, see http://www.cafeaulait.org/course/week12/35.html - * - * MIT License: - * Copyright (c) 2008 Bjoern Hartmann - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * - * bjoern@cs.stanford.edu 12/30/2008 - */ - -#ifndef ethernetudp_h -#define ethernetudp_h - -#include - -#define UDP_TX_PACKET_MAX_SIZE 24 - -class EthernetUDP : public UDP { -private: - uint16_t _port; // local port to listen on - IPAddress _remoteIP; // remote IP address for the incoming packet whilst it's being processed - uint16_t _remotePort; // remote port for the incoming packet whilst it's being processed - uint16_t _offset; // offset into the packet being sent - -protected: - uint8_t _sock; // socket ID for Wiz5100 - uint16_t _remaining; // remaining bytes of incoming packet yet to be processed - -public: - EthernetUDP(); // Constructor - virtual uint8_t begin(uint16_t); // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use - virtual uint8_t beginMulticast(IPAddress, uint16_t); // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use - virtual void stop(); // Finish with the UDP socket - - // Sending UDP packets - - // Start building up a packet to send to the remote host specific in ip and port - // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port - virtual int beginPacket(IPAddress ip, uint16_t port); - // Start building up a packet to send to the remote host specific in host and port - // Returns 1 if successful, 0 if there was a problem resolving the hostname or port - virtual int beginPacket(const char *host, uint16_t port); - // Finish off this packet and send it - // Returns 1 if the packet was sent successfully, 0 if there was an error - virtual int endPacket(); - // Write a single byte into the packet - virtual size_t write(uint8_t); - // Write size bytes from buffer into the packet - virtual size_t write(const uint8_t *buffer, size_t size); - - using Print::write; - - // Start processing the next available incoming packet - // Returns the size of the packet in bytes, or 0 if no packets are available - virtual int parsePacket(); - // Number of bytes remaining in the current packet - virtual int available(); - // Read a single byte from the current packet - virtual int read(); - // Read up to len bytes from the current packet and place them into buffer - // Returns the number of bytes read, or 0 if none are available - virtual int read(unsigned char* buffer, size_t len); - // Read up to len characters from the current packet and place them into buffer - // Returns the number of characters read, or 0 if none are available - virtual int read(char* buffer, size_t len) { return read((unsigned char*)buffer, len); }; - // Return the next byte from the current packet without moving on to the next byte - virtual int peek(); - virtual void flush(); // Finish reading the current packet - - // Return the IP address of the host who sent the current incoming packet - virtual IPAddress remoteIP() { return _remoteIP; }; - // Return the port of the host who sent the current incoming packet - virtual uint16_t remotePort() { return _remotePort; }; -}; - -#endif diff --git a/libraries/Ethernet/src/utility/socket.cpp b/libraries/Ethernet/src/utility/socket.cpp deleted file mode 100644 index 9254b7439e7..00000000000 --- a/libraries/Ethernet/src/utility/socket.cpp +++ /dev/null @@ -1,469 +0,0 @@ -#include "w5100.h" -#include "socket.h" - -static uint16_t local_port; - -/** - * @brief This Socket function initialize the channel in perticular mode, and set the port and wait for W5100 done it. - * @return 1 for success else 0. - */ -uint8_t socket(SOCKET s, uint8_t protocol, uint16_t port, uint8_t flag) -{ - if ((protocol == SnMR::TCP) || (protocol == SnMR::UDP) || (protocol == SnMR::IPRAW) || (protocol == SnMR::MACRAW) || (protocol == SnMR::PPPOE)) - { - close(s); - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.writeSnMR(s, protocol | flag); - if (port != 0) { - W5100.writeSnPORT(s, port); - } - else { - local_port++; // if don't set the source port, set local_port number. - W5100.writeSnPORT(s, local_port); - } - - W5100.execCmdSn(s, Sock_OPEN); - SPI.endTransaction(); - return 1; - } - - return 0; -} - - -uint8_t socketStatus(SOCKET s) -{ - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - uint8_t status = W5100.readSnSR(s); - SPI.endTransaction(); - return status; -} - - -/** - * @brief This function close the socket and parameter is "s" which represent the socket number - */ -void close(SOCKET s) -{ - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.execCmdSn(s, Sock_CLOSE); - W5100.writeSnIR(s, 0xFF); - SPI.endTransaction(); -} - - -/** - * @brief This function established the connection for the channel in passive (server) mode. This function waits for the request from the peer. - * @return 1 for success else 0. - */ -uint8_t listen(SOCKET s) -{ - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - if (W5100.readSnSR(s) != SnSR::INIT) { - SPI.endTransaction(); - return 0; - } - W5100.execCmdSn(s, Sock_LISTEN); - SPI.endTransaction(); - return 1; -} - - -/** - * @brief This function established the connection for the channel in Active (client) mode. - * This function waits for the untill the connection is established. - * - * @return 1 for success else 0. - */ -uint8_t connect(SOCKET s, uint8_t * addr, uint16_t port) -{ - if - ( - ((addr[0] == 0xFF) && (addr[1] == 0xFF) && (addr[2] == 0xFF) && (addr[3] == 0xFF)) || - ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && (addr[3] == 0x00)) || - (port == 0x00) - ) - return 0; - - // set destination IP - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.writeSnDIPR(s, addr); - W5100.writeSnDPORT(s, port); - W5100.execCmdSn(s, Sock_CONNECT); - SPI.endTransaction(); - - return 1; -} - - - -/** - * @brief This function used for disconnect the socket and parameter is "s" which represent the socket number - * @return 1 for success else 0. - */ -void disconnect(SOCKET s) -{ - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.execCmdSn(s, Sock_DISCON); - SPI.endTransaction(); -} - - -/** - * @brief This function used to send the data in TCP mode - * @return 1 for success else 0. - */ -uint16_t send(SOCKET s, const uint8_t * buf, uint16_t len) -{ - uint8_t status=0; - uint16_t ret=0; - uint16_t freesize=0; - - if (len > W5100.SSIZE) - ret = W5100.SSIZE; // check size not to exceed MAX size. - else - ret = len; - - // if freebuf is available, start. - do - { - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - freesize = W5100.getTXFreeSize(s); - status = W5100.readSnSR(s); - SPI.endTransaction(); - if ((status != SnSR::ESTABLISHED) && (status != SnSR::CLOSE_WAIT)) - { - ret = 0; - break; - } - yield(); - } - while (freesize < ret); - - // copy data - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.send_data_processing(s, (uint8_t *)buf, ret); - W5100.execCmdSn(s, Sock_SEND); - - /* +2008.01 bj */ - while ( (W5100.readSnIR(s) & SnIR::SEND_OK) != SnIR::SEND_OK ) - { - /* m2008.01 [bj] : reduce code */ - if ( W5100.readSnSR(s) == SnSR::CLOSED ) - { - SPI.endTransaction(); - close(s); - return 0; - } - SPI.endTransaction(); - yield(); - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - } - /* +2008.01 bj */ - W5100.writeSnIR(s, SnIR::SEND_OK); - SPI.endTransaction(); - return ret; -} - - -/** - * @brief This function is an application I/F function which is used to receive the data in TCP mode. - * It continues to wait for data as much as the application wants to receive. - * - * @return received data size for success else -1. - */ -int16_t recv(SOCKET s, uint8_t *buf, int16_t len) -{ - // Check how much data is available - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - int16_t ret = W5100.getRXReceivedSize(s); - if ( ret == 0 ) - { - // No data available. - uint8_t status = W5100.readSnSR(s); - if ( status == SnSR::LISTEN || status == SnSR::CLOSED || status == SnSR::CLOSE_WAIT ) - { - // The remote end has closed its side of the connection, so this is the eof state - ret = 0; - } - else - { - // The connection is still up, but there's no data waiting to be read - ret = -1; - } - } - else if (ret > len) - { - ret = len; - } - - if ( ret > 0 ) - { - W5100.recv_data_processing(s, buf, ret); - W5100.execCmdSn(s, Sock_RECV); - } - SPI.endTransaction(); - return ret; -} - - -int16_t recvAvailable(SOCKET s) -{ - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - int16_t ret = W5100.getRXReceivedSize(s); - SPI.endTransaction(); - return ret; -} - - -/** - * @brief Returns the first byte in the receive queue (no checking) - * - * @return - */ -uint16_t peek(SOCKET s, uint8_t *buf) -{ - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.recv_data_processing(s, buf, 1, 1); - SPI.endTransaction(); - return 1; -} - - -/** - * @brief This function is an application I/F function which is used to send the data for other then TCP mode. - * Unlike TCP transmission, The peer's destination address and the port is needed. - * - * @return This function return send data size for success else -1. - */ -uint16_t sendto(SOCKET s, const uint8_t *buf, uint16_t len, uint8_t *addr, uint16_t port) -{ - uint16_t ret=0; - - if (len > W5100.SSIZE) ret = W5100.SSIZE; // check size not to exceed MAX size. - else ret = len; - - if - ( - ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && (addr[3] == 0x00)) || - ((port == 0x00)) ||(ret == 0) - ) - { - /* +2008.01 [bj] : added return value */ - ret = 0; - } - else - { - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.writeSnDIPR(s, addr); - W5100.writeSnDPORT(s, port); - - // copy data - W5100.send_data_processing(s, (uint8_t *)buf, ret); - W5100.execCmdSn(s, Sock_SEND); - - /* +2008.01 bj */ - while ( (W5100.readSnIR(s) & SnIR::SEND_OK) != SnIR::SEND_OK ) - { - if (W5100.readSnIR(s) & SnIR::TIMEOUT) - { - /* +2008.01 [bj]: clear interrupt */ - W5100.writeSnIR(s, (SnIR::SEND_OK | SnIR::TIMEOUT)); /* clear SEND_OK & TIMEOUT */ - SPI.endTransaction(); - return 0; - } - SPI.endTransaction(); - yield(); - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - } - - /* +2008.01 bj */ - W5100.writeSnIR(s, SnIR::SEND_OK); - SPI.endTransaction(); - } - return ret; -} - - -/** - * @brief This function is an application I/F function which is used to receive the data in other then - * TCP mode. This function is used to receive UDP, IP_RAW and MAC_RAW mode, and handle the header as well. - * - * @return This function return received data size for success else -1. - */ -uint16_t recvfrom(SOCKET s, uint8_t *buf, uint16_t len, uint8_t *addr, uint16_t *port) -{ - uint8_t head[8]; - uint16_t data_len=0; - uint16_t ptr=0; - - if ( len > 0 ) - { - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - ptr = W5100.readSnRX_RD(s); - switch (W5100.readSnMR(s) & 0x07) - { - case SnMR::UDP : - W5100.read_data(s, ptr, head, 0x08); - ptr += 8; - // read peer's IP address, port number. - addr[0] = head[0]; - addr[1] = head[1]; - addr[2] = head[2]; - addr[3] = head[3]; - *port = head[4]; - *port = (*port << 8) + head[5]; - data_len = head[6]; - data_len = (data_len << 8) + head[7]; - - W5100.read_data(s, ptr, buf, data_len); // data copy. - ptr += data_len; - - W5100.writeSnRX_RD(s, ptr); - break; - - case SnMR::IPRAW : - W5100.read_data(s, ptr, head, 0x06); - ptr += 6; - - addr[0] = head[0]; - addr[1] = head[1]; - addr[2] = head[2]; - addr[3] = head[3]; - data_len = head[4]; - data_len = (data_len << 8) + head[5]; - - W5100.read_data(s, ptr, buf, data_len); // data copy. - ptr += data_len; - - W5100.writeSnRX_RD(s, ptr); - break; - - case SnMR::MACRAW: - W5100.read_data(s, ptr, head, 2); - ptr+=2; - data_len = head[0]; - data_len = (data_len<<8) + head[1] - 2; - - W5100.read_data(s, ptr, buf, data_len); - ptr += data_len; - W5100.writeSnRX_RD(s, ptr); - break; - - default : - break; - } - W5100.execCmdSn(s, Sock_RECV); - SPI.endTransaction(); - } - return data_len; -} - -/** - * @brief Wait for buffered transmission to complete. - */ -void flush(SOCKET s) { - // TODO -} - -uint16_t igmpsend(SOCKET s, const uint8_t * buf, uint16_t len) -{ - uint16_t ret=0; - - if (len > W5100.SSIZE) - ret = W5100.SSIZE; // check size not to exceed MAX size. - else - ret = len; - - if (ret == 0) - return 0; - - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.send_data_processing(s, (uint8_t *)buf, ret); - W5100.execCmdSn(s, Sock_SEND); - - while ( (W5100.readSnIR(s) & SnIR::SEND_OK) != SnIR::SEND_OK ) - { - if (W5100.readSnIR(s) & SnIR::TIMEOUT) - { - /* in case of igmp, if send fails, then socket closed */ - /* if you want change, remove this code. */ - SPI.endTransaction(); - close(s); - return 0; - } - SPI.endTransaction(); - yield(); - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - } - - W5100.writeSnIR(s, SnIR::SEND_OK); - SPI.endTransaction(); - return ret; -} - -uint16_t bufferData(SOCKET s, uint16_t offset, const uint8_t* buf, uint16_t len) -{ - uint16_t ret =0; - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - if (len > W5100.getTXFreeSize(s)) - { - ret = W5100.getTXFreeSize(s); // check size not to exceed MAX size. - } - else - { - ret = len; - } - W5100.send_data_processing_offset(s, offset, buf, ret); - SPI.endTransaction(); - return ret; -} - -int startUDP(SOCKET s, uint8_t* addr, uint16_t port) -{ - if - ( - ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && (addr[3] == 0x00)) || - ((port == 0x00)) - ) - { - return 0; - } - else - { - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.writeSnDIPR(s, addr); - W5100.writeSnDPORT(s, port); - SPI.endTransaction(); - return 1; - } -} - -int sendUDP(SOCKET s) -{ - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - W5100.execCmdSn(s, Sock_SEND); - - /* +2008.01 bj */ - while ( (W5100.readSnIR(s) & SnIR::SEND_OK) != SnIR::SEND_OK ) - { - if (W5100.readSnIR(s) & SnIR::TIMEOUT) - { - /* +2008.01 [bj]: clear interrupt */ - W5100.writeSnIR(s, (SnIR::SEND_OK|SnIR::TIMEOUT)); - SPI.endTransaction(); - return 0; - } - SPI.endTransaction(); - yield(); - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - } - - /* +2008.01 bj */ - W5100.writeSnIR(s, SnIR::SEND_OK); - SPI.endTransaction(); - - /* Sent ok */ - return 1; -} - diff --git a/libraries/Ethernet/src/utility/socket.h b/libraries/Ethernet/src/utility/socket.h deleted file mode 100644 index 37ba8542471..00000000000 --- a/libraries/Ethernet/src/utility/socket.h +++ /dev/null @@ -1,44 +0,0 @@ -#ifndef _SOCKET_H_ -#define _SOCKET_H_ - -#include "utility/w5100.h" - -extern uint8_t socket(SOCKET s, uint8_t protocol, uint16_t port, uint8_t flag); // Opens a socket(TCP or UDP or IP_RAW mode) -extern uint8_t socketStatus(SOCKET s); -extern void close(SOCKET s); // Close socket -extern uint8_t connect(SOCKET s, uint8_t * addr, uint16_t port); // Establish TCP connection (Active connection) -extern void disconnect(SOCKET s); // disconnect the connection -extern uint8_t listen(SOCKET s); // Establish TCP connection (Passive connection) -extern uint16_t send(SOCKET s, const uint8_t * buf, uint16_t len); // Send data (TCP) -extern int16_t recv(SOCKET s, uint8_t * buf, int16_t len); // Receive data (TCP) -extern int16_t recvAvailable(SOCKET s); -extern uint16_t peek(SOCKET s, uint8_t *buf); -extern uint16_t sendto(SOCKET s, const uint8_t * buf, uint16_t len, uint8_t * addr, uint16_t port); // Send data (UDP/IP RAW) -extern uint16_t recvfrom(SOCKET s, uint8_t * buf, uint16_t len, uint8_t * addr, uint16_t *port); // Receive data (UDP/IP RAW) -extern void flush(SOCKET s); // Wait for transmission to complete - -extern uint16_t igmpsend(SOCKET s, const uint8_t * buf, uint16_t len); - -// Functions to allow buffered UDP send (i.e. where the UDP datagram is built up over a -// number of calls before being sent -/* - @brief This function sets up a UDP datagram, the data for which will be provided by one - or more calls to bufferData and then finally sent with sendUDP. - @return 1 if the datagram was successfully set up, or 0 if there was an error -*/ -extern int startUDP(SOCKET s, uint8_t* addr, uint16_t port); -/* - @brief This function copies up to len bytes of data from buf into a UDP datagram to be - sent later by sendUDP. Allows datagrams to be built up from a series of bufferData calls. - @return Number of bytes successfully buffered -*/ -uint16_t bufferData(SOCKET s, uint16_t offset, const uint8_t* buf, uint16_t len); -/* - @brief Send a UDP datagram built up from a sequence of startUDP followed by one or more - calls to bufferData. - @return 1 if the datagram was successfully sent, or 0 if there was an error -*/ -int sendUDP(SOCKET s); - -#endif -/* _SOCKET_H_ */ diff --git a/libraries/Ethernet/src/utility/util.h b/libraries/Ethernet/src/utility/util.h deleted file mode 100644 index 33d32a97e7f..00000000000 --- a/libraries/Ethernet/src/utility/util.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef UTIL_H -#define UTIL_H - -#define htons(x) ( ((x)<< 8 & 0xFF00) | \ - ((x)>> 8 & 0x00FF) ) -#define ntohs(x) htons(x) - -#define htonl(x) ( ((x)<<24 & 0xFF000000UL) | \ - ((x)<< 8 & 0x00FF0000UL) | \ - ((x)>> 8 & 0x0000FF00UL) | \ - ((x)>>24 & 0x000000FFUL) ) -#define ntohl(x) htonl(x) - -#endif diff --git a/libraries/Ethernet/src/utility/w5100.cpp b/libraries/Ethernet/src/utility/w5100.cpp deleted file mode 100644 index f616d0634ea..00000000000 --- a/libraries/Ethernet/src/utility/w5100.cpp +++ /dev/null @@ -1,225 +0,0 @@ -/* - * Copyright (c) 2010 by Arduino LLC. All rights reserved. - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of either the GNU General Public License version 2 - * or the GNU Lesser General Public License version 2.1, both as - * published by the Free Software Foundation. - */ - -#include -#include - -#include "w5100.h" - -// W5100 controller instance -W5100Class W5100; - -#define TX_RX_MAX_BUF_SIZE 2048 -#define TX_BUF 0x1100 -#define RX_BUF (TX_BUF + TX_RX_MAX_BUF_SIZE) - -#define TXBUF_BASE 0x4000 -#define RXBUF_BASE 0x6000 - -void W5100Class::init(void) -{ - delay(300); - -#if !defined(SPI_HAS_EXTENDED_CS_PIN_HANDLING) - SPI.begin(); - initSS(); -#else - SPI.begin(ETHERNET_SHIELD_SPI_CS); - // Set clock to 4Mhz (W5100 should support up to about 14Mhz) - SPI.setClockDivider(ETHERNET_SHIELD_SPI_CS, 21); - SPI.setDataMode(ETHERNET_SHIELD_SPI_CS, SPI_MODE0); -#endif - SPI.beginTransaction(SPI_ETHERNET_SETTINGS); - writeMR(1< SSIZE) - { - // Wrap around circular buffer - uint16_t size = SSIZE - offset; - write(dstAddr, data, size); - write(SBASE[s], data + size, len - size); - } - else { - write(dstAddr, data, len); - } - - ptr += len; - writeSnTX_WR(s, ptr); -} - - -void W5100Class::recv_data_processing(SOCKET s, uint8_t *data, uint16_t len, uint8_t peek) -{ - uint16_t ptr; - ptr = readSnRX_RD(s); - read_data(s, ptr, data, len); - if (!peek) - { - ptr += len; - writeSnRX_RD(s, ptr); - } -} - -void W5100Class::read_data(SOCKET s, volatile uint16_t src, volatile uint8_t *dst, uint16_t len) -{ - uint16_t size; - uint16_t src_mask; - uint16_t src_ptr; - - src_mask = src & RMASK; - src_ptr = RBASE[s] + src_mask; - - if( (src_mask + len) > RSIZE ) - { - size = RSIZE - src_mask; - read(src_ptr, (uint8_t *)dst, size); - dst += size; - read(RBASE[s], (uint8_t *) dst, len - size); - } - else - read(src_ptr, (uint8_t *) dst, len); -} - - -uint8_t W5100Class::write(uint16_t _addr, uint8_t _data) -{ -#if !defined(SPI_HAS_EXTENDED_CS_PIN_HANDLING) - setSS(); - SPI.transfer(0xF0); - SPI.transfer(_addr >> 8); - SPI.transfer(_addr & 0xFF); - SPI.transfer(_data); - resetSS(); -#else - SPI.transfer(ETHERNET_SHIELD_SPI_CS, 0xF0, SPI_CONTINUE); - SPI.transfer(ETHERNET_SHIELD_SPI_CS, _addr >> 8, SPI_CONTINUE); - SPI.transfer(ETHERNET_SHIELD_SPI_CS, _addr & 0xFF, SPI_CONTINUE); - SPI.transfer(ETHERNET_SHIELD_SPI_CS, _data); -#endif - return 1; -} - -uint16_t W5100Class::write(uint16_t _addr, const uint8_t *_buf, uint16_t _len) -{ - for (uint16_t i=0; i<_len; i++) - { -#if !defined(SPI_HAS_EXTENDED_CS_PIN_HANDLING) - setSS(); - SPI.transfer(0xF0); - SPI.transfer(_addr >> 8); - SPI.transfer(_addr & 0xFF); - _addr++; - SPI.transfer(_buf[i]); - resetSS(); -#else - SPI.transfer(ETHERNET_SHIELD_SPI_CS, 0xF0, SPI_CONTINUE); - SPI.transfer(ETHERNET_SHIELD_SPI_CS, _addr >> 8, SPI_CONTINUE); - SPI.transfer(ETHERNET_SHIELD_SPI_CS, _addr & 0xFF, SPI_CONTINUE); - SPI.transfer(ETHERNET_SHIELD_SPI_CS, _buf[i]); - _addr++; -#endif - } - return _len; -} - -uint8_t W5100Class::read(uint16_t _addr) -{ -#if !defined(SPI_HAS_EXTENDED_CS_PIN_HANDLING) - setSS(); - SPI.transfer(0x0F); - SPI.transfer(_addr >> 8); - SPI.transfer(_addr & 0xFF); - uint8_t _data = SPI.transfer(0); - resetSS(); -#else - SPI.transfer(ETHERNET_SHIELD_SPI_CS, 0x0F, SPI_CONTINUE); - SPI.transfer(ETHERNET_SHIELD_SPI_CS, _addr >> 8, SPI_CONTINUE); - SPI.transfer(ETHERNET_SHIELD_SPI_CS, _addr & 0xFF, SPI_CONTINUE); - uint8_t _data = SPI.transfer(ETHERNET_SHIELD_SPI_CS, 0); -#endif - return _data; -} - -uint16_t W5100Class::read(uint16_t _addr, uint8_t *_buf, uint16_t _len) -{ - for (uint16_t i=0; i<_len; i++) - { -#if !defined(SPI_HAS_EXTENDED_CS_PIN_HANDLING) - setSS(); - SPI.transfer(0x0F); - SPI.transfer(_addr >> 8); - SPI.transfer(_addr & 0xFF); - _addr++; - _buf[i] = SPI.transfer(0); - resetSS(); -#else - SPI.transfer(ETHERNET_SHIELD_SPI_CS, 0x0F, SPI_CONTINUE); - SPI.transfer(ETHERNET_SHIELD_SPI_CS, _addr >> 8, SPI_CONTINUE); - SPI.transfer(ETHERNET_SHIELD_SPI_CS, _addr & 0xFF, SPI_CONTINUE); - _buf[i] = SPI.transfer(ETHERNET_SHIELD_SPI_CS, 0); - _addr++; -#endif - } - return _len; -} - -void W5100Class::execCmdSn(SOCKET s, SockCMD _cmd) { - // Send command to socket - writeSnCR(s, _cmd); - // Wait for command to complete - while (readSnCR(s)) - ; -} diff --git a/libraries/Ethernet/src/utility/w5100.h b/libraries/Ethernet/src/utility/w5100.h deleted file mode 100644 index 15de01c8383..00000000000 --- a/libraries/Ethernet/src/utility/w5100.h +++ /dev/null @@ -1,426 +0,0 @@ -/* - * Copyright (c) 2010 by Arduino LLC. All rights reserved. - * - * This file is free software; you can redistribute it and/or modify - * it under the terms of either the GNU General Public License version 2 - * or the GNU Lesser General Public License version 2.1, both as - * published by the Free Software Foundation. - */ - -#ifndef W5100_H_INCLUDED -#define W5100_H_INCLUDED - -#include - -#define ETHERNET_SHIELD_SPI_CS 10 - -#define MAX_SOCK_NUM 4 - -typedef uint8_t SOCKET; - -#define IDM_OR 0x8000 -#define IDM_AR0 0x8001 -#define IDM_AR1 0x8002 -#define IDM_DR 0x8003 -/* -class MR { -public: - static const uint8_t RST = 0x80; - static const uint8_t PB = 0x10; - static const uint8_t PPPOE = 0x08; - static const uint8_t LB = 0x04; - static const uint8_t AI = 0x02; - static const uint8_t IND = 0x01; -}; -*/ -/* -class IR { -public: - static const uint8_t CONFLICT = 0x80; - static const uint8_t UNREACH = 0x40; - static const uint8_t PPPoE = 0x20; - static const uint8_t SOCK0 = 0x01; - static const uint8_t SOCK1 = 0x02; - static const uint8_t SOCK2 = 0x04; - static const uint8_t SOCK3 = 0x08; - static inline uint8_t SOCK(SOCKET ch) { return (0x01 << ch); }; -}; -*/ - -class SnMR { -public: - static const uint8_t CLOSE = 0x00; - static const uint8_t TCP = 0x01; - static const uint8_t UDP = 0x02; - static const uint8_t IPRAW = 0x03; - static const uint8_t MACRAW = 0x04; - static const uint8_t PPPOE = 0x05; - static const uint8_t ND = 0x20; - static const uint8_t MULTI = 0x80; -}; - -enum SockCMD { - Sock_OPEN = 0x01, - Sock_LISTEN = 0x02, - Sock_CONNECT = 0x04, - Sock_DISCON = 0x08, - Sock_CLOSE = 0x10, - Sock_SEND = 0x20, - Sock_SEND_MAC = 0x21, - Sock_SEND_KEEP = 0x22, - Sock_RECV = 0x40 -}; - -/*class SnCmd { -public: - static const uint8_t OPEN = 0x01; - static const uint8_t LISTEN = 0x02; - static const uint8_t CONNECT = 0x04; - static const uint8_t DISCON = 0x08; - static const uint8_t CLOSE = 0x10; - static const uint8_t SEND = 0x20; - static const uint8_t SEND_MAC = 0x21; - static const uint8_t SEND_KEEP = 0x22; - static const uint8_t RECV = 0x40; -}; -*/ - -class SnIR { -public: - static const uint8_t SEND_OK = 0x10; - static const uint8_t TIMEOUT = 0x08; - static const uint8_t RECV = 0x04; - static const uint8_t DISCON = 0x02; - static const uint8_t CON = 0x01; -}; - -class SnSR { -public: - static const uint8_t CLOSED = 0x00; - static const uint8_t INIT = 0x13; - static const uint8_t LISTEN = 0x14; - static const uint8_t SYNSENT = 0x15; - static const uint8_t SYNRECV = 0x16; - static const uint8_t ESTABLISHED = 0x17; - static const uint8_t FIN_WAIT = 0x18; - static const uint8_t CLOSING = 0x1A; - static const uint8_t TIME_WAIT = 0x1B; - static const uint8_t CLOSE_WAIT = 0x1C; - static const uint8_t LAST_ACK = 0x1D; - static const uint8_t UDP = 0x22; - static const uint8_t IPRAW = 0x32; - static const uint8_t MACRAW = 0x42; - static const uint8_t PPPOE = 0x5F; -}; - -class IPPROTO { -public: - static const uint8_t IP = 0; - static const uint8_t ICMP = 1; - static const uint8_t IGMP = 2; - static const uint8_t GGP = 3; - static const uint8_t TCP = 6; - static const uint8_t PUP = 12; - static const uint8_t UDP = 17; - static const uint8_t IDP = 22; - static const uint8_t ND = 77; - static const uint8_t RAW = 255; -}; - -class W5100Class { - -public: - void init(); - - /** - * @brief This function is being used for copy the data form Receive buffer of the chip to application buffer. - * - * It calculate the actual physical address where one has to read - * the data from Receive buffer. Here also take care of the condition while it exceed - * the Rx memory uper-bound of socket. - */ - void read_data(SOCKET s, volatile uint16_t src, volatile uint8_t * dst, uint16_t len); - - /** - * @brief This function is being called by send() and sendto() function also. - * - * This function read the Tx write pointer register and after copy the data in buffer update the Tx write pointer - * register. User should read upper byte first and lower byte later to get proper value. - */ - void send_data_processing(SOCKET s, const uint8_t *data, uint16_t len); - /** - * @brief A copy of send_data_processing that uses the provided ptr for the - * write offset. Only needed for the "streaming" UDP API, where - * a single UDP packet is built up over a number of calls to - * send_data_processing_ptr, because TX_WR doesn't seem to get updated - * correctly in those scenarios - * @param ptr value to use in place of TX_WR. If 0, then the value is read - * in from TX_WR - * @return New value for ptr, to be used in the next call - */ -// FIXME Update documentation - void send_data_processing_offset(SOCKET s, uint16_t data_offset, const uint8_t *data, uint16_t len); - - /** - * @brief This function is being called by recv() also. - * - * This function read the Rx read pointer register - * and after copy the data from receive buffer update the Rx write pointer register. - * User should read upper byte first and lower byte later to get proper value. - */ - void recv_data_processing(SOCKET s, uint8_t *data, uint16_t len, uint8_t peek = 0); - - inline void setGatewayIp(uint8_t *_addr); - inline void getGatewayIp(uint8_t *_addr); - - inline void setSubnetMask(uint8_t *_addr); - inline void getSubnetMask(uint8_t *_addr); - - inline void setMACAddress(uint8_t * addr); - inline void getMACAddress(uint8_t * addr); - - inline void setIPAddress(uint8_t * addr); - inline void getIPAddress(uint8_t * addr); - - inline void setRetransmissionTime(uint16_t timeout); - inline void setRetransmissionCount(uint8_t _retry); - - void execCmdSn(SOCKET s, SockCMD _cmd); - - uint16_t getTXFreeSize(SOCKET s); - uint16_t getRXReceivedSize(SOCKET s); - - - // W5100 Registers - // --------------- -private: - static uint8_t write(uint16_t _addr, uint8_t _data); - static uint16_t write(uint16_t addr, const uint8_t *buf, uint16_t len); - static uint8_t read(uint16_t addr); - static uint16_t read(uint16_t addr, uint8_t *buf, uint16_t len); - -#define __GP_REGISTER8(name, address) \ - static inline void write##name(uint8_t _data) { \ - write(address, _data); \ - } \ - static inline uint8_t read##name() { \ - return read(address); \ - } -#define __GP_REGISTER16(name, address) \ - static void write##name(uint16_t _data) { \ - write(address, _data >> 8); \ - write(address+1, _data & 0xFF); \ - } \ - static uint16_t read##name() { \ - uint16_t res = read(address); \ - res = (res << 8) + read(address + 1); \ - return res; \ - } -#define __GP_REGISTER_N(name, address, size) \ - static uint16_t write##name(uint8_t *_buff) { \ - return write(address, _buff, size); \ - } \ - static uint16_t read##name(uint8_t *_buff) { \ - return read(address, _buff, size); \ - } - -public: - __GP_REGISTER8 (MR, 0x0000); // Mode - __GP_REGISTER_N(GAR, 0x0001, 4); // Gateway IP address - __GP_REGISTER_N(SUBR, 0x0005, 4); // Subnet mask address - __GP_REGISTER_N(SHAR, 0x0009, 6); // Source MAC address - __GP_REGISTER_N(SIPR, 0x000F, 4); // Source IP address - __GP_REGISTER8 (IR, 0x0015); // Interrupt - __GP_REGISTER8 (IMR, 0x0016); // Interrupt Mask - __GP_REGISTER16(RTR, 0x0017); // Timeout address - __GP_REGISTER8 (RCR, 0x0019); // Retry count - __GP_REGISTER8 (RMSR, 0x001A); // Receive memory size - __GP_REGISTER8 (TMSR, 0x001B); // Transmit memory size - __GP_REGISTER8 (PATR, 0x001C); // Authentication type address in PPPoE mode - __GP_REGISTER8 (PTIMER, 0x0028); // PPP LCP Request Timer - __GP_REGISTER8 (PMAGIC, 0x0029); // PPP LCP Magic Number - __GP_REGISTER_N(UIPR, 0x002A, 4); // Unreachable IP address in UDP mode - __GP_REGISTER16(UPORT, 0x002E); // Unreachable Port address in UDP mode - -#undef __GP_REGISTER8 -#undef __GP_REGISTER16 -#undef __GP_REGISTER_N - - // W5100 Socket registers - // ---------------------- -private: - static inline uint8_t readSn(SOCKET _s, uint16_t _addr); - static inline uint8_t writeSn(SOCKET _s, uint16_t _addr, uint8_t _data); - static inline uint16_t readSn(SOCKET _s, uint16_t _addr, uint8_t *_buf, uint16_t len); - static inline uint16_t writeSn(SOCKET _s, uint16_t _addr, uint8_t *_buf, uint16_t len); - - static const uint16_t CH_BASE = 0x0400; - static const uint16_t CH_SIZE = 0x0100; - -#define __SOCKET_REGISTER8(name, address) \ - static inline void write##name(SOCKET _s, uint8_t _data) { \ - writeSn(_s, address, _data); \ - } \ - static inline uint8_t read##name(SOCKET _s) { \ - return readSn(_s, address); \ - } -#define __SOCKET_REGISTER16(name, address) \ - static void write##name(SOCKET _s, uint16_t _data) { \ - writeSn(_s, address, _data >> 8); \ - writeSn(_s, address+1, _data & 0xFF); \ - } \ - static uint16_t read##name(SOCKET _s) { \ - uint16_t res = readSn(_s, address); \ - uint16_t res2 = readSn(_s,address + 1); \ - res = res << 8; \ - res2 = res2 & 0xFF; \ - res = res | res2; \ - return res; \ - } -#define __SOCKET_REGISTER_N(name, address, size) \ - static uint16_t write##name(SOCKET _s, uint8_t *_buff) { \ - return writeSn(_s, address, _buff, size); \ - } \ - static uint16_t read##name(SOCKET _s, uint8_t *_buff) { \ - return readSn(_s, address, _buff, size); \ - } - -public: - __SOCKET_REGISTER8(SnMR, 0x0000) // Mode - __SOCKET_REGISTER8(SnCR, 0x0001) // Command - __SOCKET_REGISTER8(SnIR, 0x0002) // Interrupt - __SOCKET_REGISTER8(SnSR, 0x0003) // Status - __SOCKET_REGISTER16(SnPORT, 0x0004) // Source Port - __SOCKET_REGISTER_N(SnDHAR, 0x0006, 6) // Destination Hardw Addr - __SOCKET_REGISTER_N(SnDIPR, 0x000C, 4) // Destination IP Addr - __SOCKET_REGISTER16(SnDPORT, 0x0010) // Destination Port - __SOCKET_REGISTER16(SnMSSR, 0x0012) // Max Segment Size - __SOCKET_REGISTER8(SnPROTO, 0x0014) // Protocol in IP RAW Mode - __SOCKET_REGISTER8(SnTOS, 0x0015) // IP TOS - __SOCKET_REGISTER8(SnTTL, 0x0016) // IP TTL - __SOCKET_REGISTER16(SnTX_FSR, 0x0020) // TX Free Size - __SOCKET_REGISTER16(SnTX_RD, 0x0022) // TX Read Pointer - __SOCKET_REGISTER16(SnTX_WR, 0x0024) // TX Write Pointer - __SOCKET_REGISTER16(SnRX_RSR, 0x0026) // RX Free Size - __SOCKET_REGISTER16(SnRX_RD, 0x0028) // RX Read Pointer - __SOCKET_REGISTER16(SnRX_WR, 0x002A) // RX Write Pointer (supported?) - -#undef __SOCKET_REGISTER8 -#undef __SOCKET_REGISTER16 -#undef __SOCKET_REGISTER_N - - -private: - static const uint8_t RST = 7; // Reset BIT - - static const int SOCKETS = 4; - static const uint16_t SMASK = 0x07FF; // Tx buffer MASK - static const uint16_t RMASK = 0x07FF; // Rx buffer MASK -public: - static const uint16_t SSIZE = 2048; // Max Tx buffer size -private: - static const uint16_t RSIZE = 2048; // Max Rx buffer size - uint16_t SBASE[SOCKETS]; // Tx buffer base address - uint16_t RBASE[SOCKETS]; // Rx buffer base address - -private: -#if !defined(SPI_HAS_EXTENDED_CS_PIN_HANDLING) - #define SPI_ETHERNET_SETTINGS SPISettings(4000000, MSBFIRST, SPI_MODE0) - #if defined(ARDUINO_ARCH_AVR) - #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) - inline static void initSS() { DDRB |= _BV(4); }; - inline static void setSS() { PORTB &= ~_BV(4); }; - inline static void resetSS() { PORTB |= _BV(4); }; - #elif defined(__AVR_ATmega32U4__) - inline static void initSS() { DDRB |= _BV(6); }; - inline static void setSS() { PORTB &= ~_BV(6); }; - inline static void resetSS() { PORTB |= _BV(6); }; - #elif defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB162__) - inline static void initSS() { DDRB |= _BV(0); }; - inline static void setSS() { PORTB &= ~_BV(0); }; - inline static void resetSS() { PORTB |= _BV(0); }; - #else - inline static void initSS() { DDRB |= _BV(2); }; - inline static void setSS() { PORTB &= ~_BV(2); }; - inline static void resetSS() { PORTB |= _BV(2); }; - #endif - #elif defined(__ARDUINO_ARC__) - inline static void initSS() { pinMode(10, OUTPUT); }; - inline static void setSS() { digitalWrite(10, LOW); }; - inline static void resetSS() { digitalWrite(10, HIGH); }; - #else - inline static void initSS() { - *portModeRegister(digitalPinToPort(ETHERNET_SHIELD_SPI_CS)) |= digitalPinToBitMask(ETHERNET_SHIELD_SPI_CS); - } - inline static void setSS() { - *portOutputRegister(digitalPinToPort(ETHERNET_SHIELD_SPI_CS)) &= ~digitalPinToBitMask(ETHERNET_SHIELD_SPI_CS); - } - inline static void resetSS() { - *portOutputRegister(digitalPinToPort(ETHERNET_SHIELD_SPI_CS)) |= digitalPinToBitMask(ETHERNET_SHIELD_SPI_CS); - } - #endif -#else - #define SPI_ETHERNET_SETTINGS ETHERNET_SHIELD_SPI_CS,SPISettings(4000000, MSBFIRST, SPI_MODE0) - // initSS(), setSS(), resetSS() not needed with EXTENDED_CS_PIN_HANDLING -#endif -}; - -extern W5100Class W5100; - -uint8_t W5100Class::readSn(SOCKET _s, uint16_t _addr) { - return read(CH_BASE + _s * CH_SIZE + _addr); -} - -uint8_t W5100Class::writeSn(SOCKET _s, uint16_t _addr, uint8_t _data) { - return write(CH_BASE + _s * CH_SIZE + _addr, _data); -} - -uint16_t W5100Class::readSn(SOCKET _s, uint16_t _addr, uint8_t *_buf, uint16_t _len) { - return read(CH_BASE + _s * CH_SIZE + _addr, _buf, _len); -} - -uint16_t W5100Class::writeSn(SOCKET _s, uint16_t _addr, uint8_t *_buf, uint16_t _len) { - return write(CH_BASE + _s * CH_SIZE + _addr, _buf, _len); -} - -void W5100Class::getGatewayIp(uint8_t *_addr) { - readGAR(_addr); -} - -void W5100Class::setGatewayIp(uint8_t *_addr) { - writeGAR(_addr); -} - -void W5100Class::getSubnetMask(uint8_t *_addr) { - readSUBR(_addr); -} - -void W5100Class::setSubnetMask(uint8_t *_addr) { - writeSUBR(_addr); -} - -void W5100Class::getMACAddress(uint8_t *_addr) { - readSHAR(_addr); -} - -void W5100Class::setMACAddress(uint8_t *_addr) { - writeSHAR(_addr); -} - -void W5100Class::getIPAddress(uint8_t *_addr) { - readSIPR(_addr); -} - -void W5100Class::setIPAddress(uint8_t *_addr) { - writeSIPR(_addr); -} - -void W5100Class::setRetransmissionTime(uint16_t _timeout) { - writeRTR(_timeout); -} - -void W5100Class::setRetransmissionCount(uint8_t _retry) { - writeRCR(_retry); -} - -#endif diff --git a/libraries/GSM/README.adoc b/libraries/GSM/README.adoc deleted file mode 100644 index 876f0dcb794..00000000000 --- a/libraries/GSM/README.adoc +++ /dev/null @@ -1,23 +0,0 @@ -= GSM Library for Arduino = - -With the Arduino GSM Shield, this library enables an Arduino board to do most of the operations you can do with a GSM phone: place and receive voice calls, send and receive SMS, and connect to the internet over a GPRS network. - -For more information about this library please visit us at -http://www.arduino.cc/en/Reference/GSM - -== License == -Copyright (c) 2012 Telefónica Digital - PDI - Physical Internet Lab - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/libraries/GSM/examples/GsmWebClient/GsmWebClient.ino b/libraries/GSM/examples/GsmWebClient/GsmWebClient.ino deleted file mode 100644 index 3abc4136ffb..00000000000 --- a/libraries/GSM/examples/GsmWebClient/GsmWebClient.ino +++ /dev/null @@ -1,100 +0,0 @@ -/* - Web client - - This sketch connects to a website through a GSM shield. Specifically, - this example downloads the URL "http://www.arduino.cc/asciilogo.txt" and - prints it to the Serial monitor. - - Circuit: - * GSM shield attached to an Arduino - * SIM card with a data plan - - created 8 Mar 2012 - by Tom Igoe - - http://www.arduino.cc/en/Tutorial/GSMExamplesWebClient - - */ - -// libraries -#include - -// PIN Number -#define PINNUMBER "" - -// APN data -#define GPRS_APN "GPRS_APN" // replace your GPRS APN -#define GPRS_LOGIN "login" // replace with your GPRS login -#define GPRS_PASSWORD "password" // replace with your GPRS password - -// initialize the library instance -GSMClient client; -GPRS gprs; -GSM gsmAccess; - -// URL, path & port (for example: arduino.cc) -char server[] = "arduino.cc"; -char path[] = "/asciilogo.txt"; -int port = 80; // port 80 is the default for HTTP - -void setup() { - // initialize serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - Serial.println("Starting Arduino web client."); - // connection state - boolean notConnected = true; - - // After starting the modem with GSM.begin() - // attach the shield to the GPRS network with the APN, login and password - while (notConnected) { - if ((gsmAccess.begin(PINNUMBER) == GSM_READY) & - (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) { - notConnected = false; - } else { - Serial.println("Not connected"); - delay(1000); - } - } - - Serial.println("connecting..."); - - // if you get a connection, report back via serial: - if (client.connect(server, port)) { - Serial.println("connected"); - // Make a HTTP request: - client.print("GET "); - client.print(path); - client.println(" HTTP/1.1"); - client.print("Host: "); - client.println(server); - client.println("Connection: close"); - client.println(); - } else { - // if you didn't get a connection to the server: - Serial.println("connection failed"); - } -} - -void loop() { - // if there are incoming bytes available - // from the server, read them and print them: - if (client.available()) { - char c = client.read(); - Serial.print(c); - } - - // if the server's disconnected, stop the client: - if (!client.available() && !client.connected()) { - Serial.println(); - Serial.println("disconnecting."); - client.stop(); - - // do nothing forevermore: - for (;;) - ; - } -} diff --git a/libraries/GSM/examples/GsmWebServer/GsmWebServer.ino b/libraries/GSM/examples/GsmWebServer/GsmWebServer.ino deleted file mode 100644 index 74fb572a1d1..00000000000 --- a/libraries/GSM/examples/GsmWebServer/GsmWebServer.ino +++ /dev/null @@ -1,113 +0,0 @@ -/* - GSM Web Server - - A simple web server that shows the value of the analog input pins. - using a GSM shield. - - Circuit: - * GSM shield attached - * Analog inputs attached to pins A0 through A5 (optional) - - created 8 Mar 2012 - by Tom Igoe - */ - -// libraries -#include - -// PIN Number -#define PINNUMBER "" - -// APN data -#define GPRS_APN "GPRS_APN" // replace your GPRS APN -#define GPRS_LOGIN "login" // replace with your GPRS login -#define GPRS_PASSWORD "password" // replace with your GPRS password - - -// initialize the library instance -GPRS gprs; -GSM gsmAccess; // include a 'true' parameter for debug enabled -GSMServer server(80); // port 80 (http default) - -// timeout -const unsigned long __TIMEOUT__ = 10 * 1000; - -void setup() { - // initialize serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // connection state - boolean notConnected = true; - - // Start GSM shield - // If your SIM has PIN, pass it as a parameter of begin() in quotes - while (notConnected) { - if ((gsmAccess.begin(PINNUMBER) == GSM_READY) & - (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) { - notConnected = false; - } else { - Serial.println("Not connected"); - delay(1000); - } - } - - Serial.println("Connected to GPRS network"); - - // start server - server.begin(); - - //Get IP. - IPAddress LocalIP = gprs.getIPAddress(); - Serial.println("Server IP address="); - Serial.println(LocalIP); -} - -void loop() { - - - // listen for incoming clients - GSMClient client = server.available(); - - - - if (client) { - while (client.connected()) { - if (client.available()) { - Serial.println("Receiving request!"); - bool sendResponse = false; - while (char c = client.read()) { - if (c == '\n') { - sendResponse = true; - } - } - - // if you've gotten to the end of the line (received a newline - // character) - if (sendResponse) { - // send a standard http response header - client.println("HTTP/1.1 200 OK"); - client.println("Content-Type: text/html"); - client.println(); - client.println(""); - // output the value of each analog input pin - for (int analogChannel = 0; analogChannel < 6; analogChannel++) { - client.print("analog input "); - client.print(analogChannel); - client.print(" is "); - client.print(analogRead(analogChannel)); - client.println("
    "); - } - client.println(""); - //necessary delay - delay(1000); - client.stop(); - } - } - } - } -} - - diff --git a/libraries/GSM/examples/MakeVoiceCall/MakeVoiceCall.ino b/libraries/GSM/examples/MakeVoiceCall/MakeVoiceCall.ino deleted file mode 100644 index 5eaace0a77f..00000000000 --- a/libraries/GSM/examples/MakeVoiceCall/MakeVoiceCall.ino +++ /dev/null @@ -1,105 +0,0 @@ -/* - Make Voice Call - - This sketch, for the Arduino GSM shield, puts a voice call to - a remote phone number that you enter through the serial monitor. - To make it work, open the serial monitor, and when you see the - READY message, type a phone number. Make sure the serial monitor - is set to send a just newline when you press return. - - Circuit: - * GSM shield - * Voice circuit. - With no voice circuit the call will send nor receive any sound - - - created Mar 2012 - by Javier Zorzano - - This example is in the public domain. - */ - -// libraries -#include - -// PIN Number -#define PINNUMBER "" - -// initialize the library instance -GSM gsmAccess; // include a 'true' parameter for debug enabled -GSMVoiceCall vcs; - -String remoteNumber = ""; // the number you will call -char charbuffer[20]; - -void setup() { - - // initialize serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - Serial.println("Make Voice Call"); - - // connection state - boolean notConnected = true; - - // Start GSM shield - // If your SIM has PIN, pass it as a parameter of begin() in quotes - while (notConnected) { - if (gsmAccess.begin(PINNUMBER) == GSM_READY) { - notConnected = false; - } else { - Serial.println("Not connected"); - delay(1000); - } - } - - Serial.println("GSM initialized."); - Serial.println("Enter phone number to call."); - -} - -void loop() { - - // add any incoming characters to the String: - while (Serial.available() > 0) { - char inChar = Serial.read(); - // if it's a newline, that means you should make the call: - if (inChar == '\n') { - // make sure the phone number is not too long: - if (remoteNumber.length() < 20) { - // let the user know you're calling: - Serial.print("Calling to : "); - Serial.println(remoteNumber); - Serial.println(); - - // Call the remote number - remoteNumber.toCharArray(charbuffer, 20); - - - // Check if the receiving end has picked up the call - if (vcs.voiceCall(charbuffer)) { - Serial.println("Call Established. Enter line to end"); - // Wait for some input from the line - while (Serial.read() != '\n' && (vcs.getvoiceCallStatus() == TALKING)); - // And hang up - vcs.hangCall(); - } - Serial.println("Call Finished"); - remoteNumber = ""; - Serial.println("Enter phone number to call."); - } else { - Serial.println("That's too long for a phone number. I'm forgetting it"); - remoteNumber = ""; - } - } else { - // add the latest character to the message to send: - if (inChar != '\r') { - remoteNumber += inChar; - } - } - } -} - diff --git a/libraries/GSM/examples/ReceiveSMS/ReceiveSMS.ino b/libraries/GSM/examples/ReceiveSMS/ReceiveSMS.ino deleted file mode 100644 index 09546e51e39..00000000000 --- a/libraries/GSM/examples/ReceiveSMS/ReceiveSMS.ino +++ /dev/null @@ -1,93 +0,0 @@ -/* - SMS receiver - - This sketch, for the Arduino GSM shield, waits for a SMS message - and displays it through the Serial port. - - Circuit: - * GSM shield attached to and Arduino - * SIM card that can receive SMS messages - - created 25 Feb 2012 - by Javier Zorzano / TD - - This example is in the public domain. - - http://www.arduino.cc/en/Tutorial/GSMExamplesReceiveSMS - -*/ - -// include the GSM library -#include - -// PIN Number for the SIM -#define PINNUMBER "" - -// initialize the library instances -GSM gsmAccess; -GSM_SMS sms; - -// Array to hold the number a SMS is retreived from -char senderNumber[20]; - -void setup() { - // initialize serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - Serial.println("SMS Messages Receiver"); - - // connection state - boolean notConnected = true; - - // Start GSM connection - while (notConnected) { - if (gsmAccess.begin(PINNUMBER) == GSM_READY) { - notConnected = false; - } else { - Serial.println("Not connected"); - delay(1000); - } - } - - Serial.println("GSM initialized"); - Serial.println("Waiting for messages"); -} - -void loop() { - char c; - - // If there are any SMSs available() - if (sms.available()) { - Serial.println("Message received from:"); - - // Get remote number - sms.remoteNumber(senderNumber, 20); - Serial.println(senderNumber); - - // An example of message disposal - // Any messages starting with # should be discarded - if (sms.peek() == '#') { - Serial.println("Discarded SMS"); - sms.flush(); - } - - // Read message bytes and print them - while (c = sms.read()) { - Serial.print(c); - } - - Serial.println("\nEND OF MESSAGE"); - - // Delete message from modem memory - sms.flush(); - Serial.println("MESSAGE DELETED"); - } - - delay(1000); - -} - - diff --git a/libraries/GSM/examples/ReceiveVoiceCall/ReceiveVoiceCall.ino b/libraries/GSM/examples/ReceiveVoiceCall/ReceiveVoiceCall.ino deleted file mode 100644 index 6ec09f75727..00000000000 --- a/libraries/GSM/examples/ReceiveVoiceCall/ReceiveVoiceCall.ino +++ /dev/null @@ -1,101 +0,0 @@ -/* - Receive Voice Call - - This sketch, for the Arduino GSM shield, receives voice calls, - displays the calling number, waits a few seconds then hangs up. - - Circuit: - * GSM shield - * Voice circuit. Refer to to the GSM shield getting started guide - at http://www.arduino.cc/en/Guide/ArduinoGSMShield#toc11 - * SIM card that can accept voice calls - - With no voice circuit the call will connect, but will not send or receive sound - - created Mar 2012 - by Javier Zorzano - - This example is in the public domain. - - http://www.arduino.cc/en/Tutorial/GSMExamplesReceiveVoiceCall - - */ - -// Include the GSM library -#include - -// PIN Number -#define PINNUMBER "" - -// initialize the library instance -GSM gsmAccess; -GSMVoiceCall vcs; - -// Array to hold the number for the incoming call -char numtel[20]; - -void setup() { - // initialize serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - Serial.println("Receive Voice Call"); - - // connection state - boolean notConnected = true; - - // Start GSM shield - // If your SIM has PIN, pass it as a parameter of begin() in quotes - while (notConnected) { - if (gsmAccess.begin(PINNUMBER) == GSM_READY) { - notConnected = false; - } else { - Serial.println("Not connected"); - delay(1000); - } - } - - // This makes sure the modem correctly reports incoming events - vcs.hangCall(); - - Serial.println("Waiting for a call"); -} - -void loop() { - // Check the status of the voice call - switch (vcs.getvoiceCallStatus()) { - case IDLE_CALL: // Nothing is happening - - break; - - case RECEIVINGCALL: // Yes! Someone is calling us - - Serial.println("RECEIVING CALL"); - - // Retrieve the calling number - vcs.retrieveCallingNumber(numtel, 20); - - // Print the calling number - Serial.print("Number:"); - Serial.println(numtel); - - // Answer the call, establish the call - vcs.answerCall(); - break; - - case TALKING: // In this case the call would be established - - Serial.println("TALKING. Press enter to hang up."); - while (Serial.read() != '\n') { - delay(100); - } - vcs.hangCall(); - Serial.println("Hanging up and waiting for the next call."); - break; - } - delay(1000); -} - - diff --git a/libraries/GSM/examples/SendSMS/SendSMS.ino b/libraries/GSM/examples/SendSMS/SendSMS.ino deleted file mode 100644 index e49156ed966..00000000000 --- a/libraries/GSM/examples/SendSMS/SendSMS.ino +++ /dev/null @@ -1,101 +0,0 @@ -/* - SMS sender - - This sketch, for the Arduino GSM shield,sends an SMS message - you enter in the serial monitor. Connect your Arduino with the - GSM shield and SIM card, open the serial monitor, and wait for - the "READY" message to appear in the monitor. Next, type a - message to send and press "return". Make sure the serial - monitor is set to send a newline when you press return. - - Circuit: - * GSM shield - * SIM card that can send SMS - - created 25 Feb 2012 - by Tom Igoe - - This example is in the public domain. - - http://www.arduino.cc/en/Tutorial/GSMExamplesSendSMS - - */ - -// Include the GSM library -#include - -#define PINNUMBER "" - -// initialize the library instance -GSM gsmAccess; -GSM_SMS sms; - -void setup() { - // initialize serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - Serial.println("SMS Messages Sender"); - - // connection state - boolean notConnected = true; - - // Start GSM shield - // If your SIM has PIN, pass it as a parameter of begin() in quotes - while (notConnected) { - if (gsmAccess.begin(PINNUMBER) == GSM_READY) { - notConnected = false; - } else { - Serial.println("Not connected"); - delay(1000); - } - } - - Serial.println("GSM initialized"); -} - -void loop() { - - Serial.print("Enter a mobile number: "); - char remoteNum[20]; // telephone number to send sms - readSerial(remoteNum); - Serial.println(remoteNum); - - // sms text - Serial.print("Now, enter SMS content: "); - char txtMsg[200]; - readSerial(txtMsg); - Serial.println("SENDING"); - Serial.println(); - Serial.println("Message:"); - Serial.println(txtMsg); - - // send the message - sms.beginSMS(remoteNum); - sms.print(txtMsg); - sms.endSMS(); - Serial.println("\nCOMPLETE!\n"); -} - -/* - Read input serial - */ -int readSerial(char result[]) { - int i = 0; - while (1) { - while (Serial.available() > 0) { - char inChar = Serial.read(); - if (inChar == '\n') { - result[i] = '\0'; - Serial.flush(); - return 0; - } - if (inChar != '\r') { - result[i] = inChar; - i++; - } - } - } -} diff --git a/libraries/GSM/examples/Tools/BandManagement/BandManagement.ino b/libraries/GSM/examples/Tools/BandManagement/BandManagement.ino deleted file mode 100644 index 2ef088a7f1b..00000000000 --- a/libraries/GSM/examples/Tools/BandManagement/BandManagement.ino +++ /dev/null @@ -1,115 +0,0 @@ -/* - Band Management - - This sketch, for the Arduino GSM shield, checks the band - currently configured in the modem and allows you to change - it. - - Please check http://www.worldtimezone.com/gsm.html - Usual configurations: - Europe, Africa, Middle East: E-GSM(900)+DCS(1800) - USA, Canada, South America: GSM(850)+PCS(1900) - Mexico: PCS(1900) - Brazil: GSM(850)+E-GSM(900)+DCS(1800)+PCS(1900) - - - Circuit: - * GSM shield - - created 12 June 2012 - by Javier Zorzano, Scott Fitzgerald - - This example is in the public domain. - */ - -// libraries -#include - -// initialize the library instance -GSMBand band; - -void setup() { - // initialize serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for Leonardo only - } - - // Beginning the band manager restarts the modem - Serial.println("Restarting modem..."); - band.begin(); - Serial.println("Modem restarted."); - -}; - - -void loop() { - // Get current band - String bandName = band.getBand(); // Get and print band name - Serial.print("Current band:"); - Serial.println(bandName); - Serial.println("Want to change the band you’re on?"); - String newBandName; - newBandName = askUser(); - // Tell the user what we are about to do… - Serial.print("\nConfiguring band "); - Serial.println(newBandName); - // Change the band - boolean operationSuccess; - operationSuccess = band.setBand(newBandName); - // Tell the user if the operation was OK - if (operationSuccess) { - Serial.println("Success"); - } else { - Serial.println("Error while changing band"); - } - - if (operationSuccess) { - while (true); - } -} - -// This function offers the user different options -// through the Serial interface -// The user selects one -String askUser() { - String newBand; - Serial.println("Select band:"); - // Print the different options - Serial.println("1 : E-GSM(900)"); - Serial.println("2 : DCS(1800)"); - Serial.println("3 : PCS(1900)"); - Serial.println("4 : E-GSM(900)+DCS(1800) ex: Europe"); - Serial.println("5 : GSM(850)+PCS(1900) Ex: USA, South Am."); - Serial.println("6 : GSM(850)+E-GSM(900)+DCS(1800)+PCS(1900)"); - - // Empty the incoming buffer - while (Serial.available()) { - Serial.read(); - } - - // Wait for an answer, just look at the first character - while (!Serial.available()); - char c = Serial.read(); - if (c == '1') { - newBand = GSM_MODE_EGSM; - } else if (c == '2') { - newBand = GSM_MODE_DCS; - } else if (c == '3') { - newBand = GSM_MODE_PCS; - } else if (c == '4') { - newBand = GSM_MODE_EGSM_DCS; - } else if (c == '5') { - newBand = GSM_MODE_GSM850_PCS; - } else if (c == '6') { - newBand = GSM_MODE_GSM850_EGSM_DCS_PCS; - } else { - newBand = "GSM_MODE_UNDEFINED"; - } - return newBand; -} - - - - - diff --git a/libraries/GSM/examples/Tools/GsmScanNetworks/GsmScanNetworks.ino b/libraries/GSM/examples/Tools/GsmScanNetworks/GsmScanNetworks.ino deleted file mode 100644 index 233d11ae1db..00000000000 --- a/libraries/GSM/examples/Tools/GsmScanNetworks/GsmScanNetworks.ino +++ /dev/null @@ -1,92 +0,0 @@ -/* - - GSM Scan Networks - - This example prints out the IMEI number of the modem, - then checks to see if it's connected to a carrier. If so, - it prints the phone number associated with the card. - Then it scans for nearby networks and prints out their signal strengths. - - Circuit: - * GSM shield - * SIM card - - Created 8 Mar 2012 - by Tom Igoe, implemented by Javier Carazo - Modified 4 Feb 2013 - by Scott Fitzgerald - - http://www.arduino.cc/en/Tutorial/GSMToolsGsmScanNetworks - - This example code is part of the public domain - */ - -// libraries -#include - -// PIN Number -#define PINNUMBER "" - -// initialize the library instance -GSM gsmAccess; // include a 'true' parameter to enable debugging -GSMScanner scannerNetworks; -GSMModem modemTest; - -// Save data variables -String IMEI = ""; - -// serial monitor result messages -String errortext = "ERROR"; - -void setup() { - // initialize serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for Leonardo only - } - - Serial.println("GSM networks scanner"); - scannerNetworks.begin(); - - // connection state - boolean notConnected = true; - - // Start GSM shield - // If your SIM has PIN, pass it as a parameter of begin() in quotes - while (notConnected) { - if (gsmAccess.begin(PINNUMBER) == GSM_READY) { - notConnected = false; - } else { - Serial.println("Not connected"); - delay(1000); - } - } - - // get modem parameters - // IMEI, modem unique identifier - Serial.print("Modem IMEI: "); - IMEI = modemTest.getIMEI(); - IMEI.replace("\n", ""); - if (IMEI != NULL) { - Serial.println(IMEI); - } -} - -void loop() { - // scan for existing networks, displays a list of networks - Serial.println("Scanning available networks. May take some seconds."); - Serial.println(scannerNetworks.readNetworks()); - - // currently connected carrier - Serial.print("Current carrier: "); - Serial.println(scannerNetworks.getCurrentCarrier()); - - // returns strength and ber - // signal strength in 0-31 scale. 31 means power > 51dBm - // BER is the Bit Error Rate. 0-7 scale. 99=not detectable - Serial.print("Signal Strength: "); - Serial.print(scannerNetworks.getSignalStrength()); - Serial.println(" [0-31]"); - -} - diff --git a/libraries/GSM/examples/Tools/PinManagement/PinManagement.ino b/libraries/GSM/examples/Tools/PinManagement/PinManagement.ino deleted file mode 100644 index 6dc37b33d6f..00000000000 --- a/libraries/GSM/examples/Tools/PinManagement/PinManagement.ino +++ /dev/null @@ -1,146 +0,0 @@ -/* - - This example enables you to change or remove the PIN number of - a SIM card inserted into a GSM shield. - - Circuit: - * GSM shield - * SIM card - - Created 12 Jun 2012 - by David del Peral - - This example code is part of the public domain - - http://www.arduino.cc/en/Tutorial/GSMToolsPinManagement - - */ - -// libraries -#include - -// pin manager object -GSMPIN PINManager; - -// save input in serial by user -String user_input = ""; - -// authenticated with PIN code -boolean auth = false; - -// serial monitor result messages -String oktext = "OK"; -String errortext = "ERROR"; - -void setup() { - // initialize serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for Leonardo only - } - - Serial.println("Change PIN example\n"); - PINManager.begin(); - - // check if the SIM have pin lock - while (!auth) { - int pin_query = PINManager.isPIN(); - if (pin_query == 1) { - // if SIM is locked, enter PIN code - Serial.print("Enter PIN code: "); - user_input = readSerial(); - // check PIN code - if (PINManager.checkPIN(user_input) == 0) { - auth = true; - PINManager.setPINUsed(true); - Serial.println(oktext); - } else { - // if PIN code was incorrected - Serial.println("Incorrect PIN. Remember that you have 3 opportunities."); - } - } else if (pin_query == -1) { - // PIN code is locked, user must enter PUK code - Serial.println("PIN locked. Enter PUK code: "); - String puk = readSerial(); - Serial.print("Now, enter a new PIN code: "); - user_input = readSerial(); - // check PUK code - if (PINManager.checkPUK(puk, user_input) == 0) { - auth = true; - PINManager.setPINUsed(true); - Serial.println(oktext); - } else { - // if PUK o the new PIN are incorrect - Serial.println("Incorrect PUK or invalid new PIN. Try again!."); - } - } else if (pin_query == -2) { - // the worst case, PIN and PUK are locked - Serial.println("PIN & PUK locked. Use PIN2/PUK2 in a mobile phone."); - while (true); - } else { - // SIM does not requires authetication - Serial.println("No pin necessary."); - auth = true; - } - } - - // start GSM shield - Serial.print("Checking register in GSM network..."); - if (PINManager.checkReg() == 0) { - Serial.println(oktext); - } - // if you are connect by roaming - else if (PINManager.checkReg() == 1) { - Serial.println("ROAMING " + oktext); - } else { - // error connection - Serial.println(errortext); - while (true); - } -} - -void loop() { - // Function loop implements pin management user menu - // Only if you SIM use pin lock, you can change PIN code - // user_op variables save user option - - Serial.println("Choose an option:\n1 - On/Off PIN."); - if (PINManager.getPINUsed()) { - Serial.println("2 - Change PIN."); - } - String user_op = readSerial(); - if (user_op == "1") { - Serial.println("Enter your PIN code:"); - user_input = readSerial(); - // activate/deactivate PIN lock - PINManager.switchPIN(user_input); - } else if (user_op == "2" & PINManager.getPINUsed()) { - Serial.println("Enter your actual PIN code:"); - String oldPIN = readSerial(); - Serial.println("Now, enter your new PIN code:"); - String newPIN = readSerial(); - // change PIN - PINManager.changePIN(oldPIN, newPIN); - } else { - Serial.println("Incorrect option. Try again!."); - } - delay(1000); -} - -/* - Read input serial - */ -String readSerial() { - String text = ""; - while (1) { - while (Serial.available() > 0) { - char inChar = Serial.read(); - if (inChar == '\n') { - return text; - } - if (inChar != '\r') { - text += inChar; - } - } - } -} diff --git a/libraries/GSM/examples/Tools/TestGPRS/TestGPRS.ino b/libraries/GSM/examples/Tools/TestGPRS/TestGPRS.ino deleted file mode 100644 index 85a8bc8bc8a..00000000000 --- a/libraries/GSM/examples/Tools/TestGPRS/TestGPRS.ino +++ /dev/null @@ -1,190 +0,0 @@ -/* - - This sketch test the GSM shield's ability to connect to a - GPERS network. It asks for APN information through the - serial monitor and tries to connect to arduino.cc. - - Circuit: - * GSM shield attached - * SIM card with data plan - - Created 18 Jun 2012 - by David del Peral - - This example code is part of the public domain - - http://www.arduino.cc/en/Tutorial/GSMToolsTestGPRS - - */ - -// libraries -#include - -// PIN Number -#define PINNUMBER "" - -// initialize the library instance -GSM gsmAccess; // GSM access: include a 'true' parameter for debug enabled -GPRS gprsAccess; // GPRS access -GSMClient client; // Client service for TCP connection - -// messages for serial monitor response -String oktext = "OK"; -String errortext = "ERROR"; - -// URL and path (for example: arduino.cc) -char url[] = "arduino.cc"; -char urlproxy[] = "http://www.arduino.cc/"; -char path[] = "/"; - -// variable for save response obtained -String response = ""; - -// use a proxy -boolean use_proxy = false; - -void setup() { - // initialize serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for Leonardo only - } -} - -void loop() { - use_proxy = false; - - // start GSM shield - // if your SIM has PIN, pass it as a parameter of begin() in quotes - Serial.print("Connecting GSM network..."); - if (gsmAccess.begin(PINNUMBER) != GSM_READY) { - Serial.println(errortext); - while (true); - } - Serial.println(oktext); - - // read APN introduced by user - char apn[50]; - Serial.print("Enter your APN: "); - readSerial(apn); - Serial.println(apn); - - // Read APN login introduced by user - char login[50]; - Serial.print("Now, enter your login: "); - readSerial(login); - Serial.println(login); - - // read APN password introduced by user - char password[20]; - Serial.print("Finally, enter your password: "); - readSerial(password); - - // attach GPRS - Serial.println("Attaching to GPRS with your APN..."); - if (gprsAccess.attachGPRS(apn, login, password) != GPRS_READY) { - Serial.println(errortext); - } else { - - Serial.println(oktext); - - // read proxy introduced by user - char proxy[100]; - Serial.print("If your carrier uses a proxy, enter it, if not press enter: "); - readSerial(proxy); - Serial.println(proxy); - - // if user introduced a proxy, asks him for proxy port - int pport; - if (proxy[0] != '\0') { - // read proxy port introduced by user - char proxyport[10]; - Serial.print("Enter the proxy port: "); - readSerial(proxyport); - // cast proxy port introduced to integer - pport = (int) proxyport; - use_proxy = true; - Serial.println(proxyport); - } - - // connection with arduino.cc and realize HTTP request - Serial.print("Connecting and sending GET request to arduino.cc..."); - int res_connect; - - // if use a proxy, connect with it - if (use_proxy) { - res_connect = client.connect(proxy, pport); - } else { - res_connect = client.connect(url, 80); - } - - if (res_connect) { - // make a HTTP 1.0 GET request (client sends the request) - client.print("GET "); - - // if use a proxy, the path is arduino.cc URL - if (use_proxy) { - client.print(urlproxy); - } else { - client.print(path); - } - - client.println(" HTTP/1.0"); - client.println(); - Serial.println(oktext); - } else { - // if you didn't get a connection to the server - Serial.println(errortext); - } - Serial.print("Receiving response..."); - - boolean test = true; - while (test) { - // if there are incoming bytes available - // from the server, read and check them - if (client.available()) { - char c = client.read(); - response += c; - - // cast response obtained from string to char array - char responsechar[response.length() + 1]; - response.toCharArray(responsechar, response.length() + 1); - - // if response includes a "200 OK" substring - if (strstr(responsechar, "200 OK") != NULL) { - Serial.println(oktext); - Serial.println("TEST COMPLETE!"); - test = false; - } - } - - // if the server's disconnected, stop the client: - if (!client.connected()) { - Serial.println(); - Serial.println("disconnecting."); - client.stop(); - test = false; - } - } - } -} - -/* - Read input serial - */ -int readSerial(char result[]) { - int i = 0; - while (1) { - while (Serial.available() > 0) { - char inChar = Serial.read(); - if (inChar == '\n') { - result[i] = '\0'; - return 0; - } - if (inChar != '\r') { - result[i] = inChar; - i++; - } - } - } -} diff --git a/libraries/GSM/examples/Tools/TestModem/TestModem.ino b/libraries/GSM/examples/Tools/TestModem/TestModem.ino deleted file mode 100644 index 5ee42219bbd..00000000000 --- a/libraries/GSM/examples/Tools/TestModem/TestModem.ino +++ /dev/null @@ -1,70 +0,0 @@ -/* - - This example tests to see if the modem of the - GSM shield is working correctly. You do not need - a SIM card for this example. - - Circuit: - * GSM shield attached - - Created 12 Jun 2012 - by David del Peral - modified 21 Nov 2012 - by Tom Igoe - - http://www.arduino.cc/en/Tutorial/GSMToolsTestModem - - This sample code is part of the public domain - - */ - -// libraries -#include - -// modem verification object -GSMModem modem; - -// IMEI variable -String IMEI = ""; - -void setup() { - // initialize serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for Leonardo only - } - - // start modem test (reset and check response) - Serial.print("Starting modem test..."); - if (modem.begin()) { - Serial.println("modem.begin() succeeded"); - } else { - Serial.println("ERROR, no modem answer."); - } -} - -void loop() { - // get modem IMEI - Serial.print("Checking IMEI..."); - IMEI = modem.getIMEI(); - - // check IMEI response - if (IMEI != NULL) { - // show IMEI in serial monitor - Serial.println("Modem's IMEI: " + IMEI); - // reset modem to check booting: - Serial.print("Resetting modem..."); - modem.begin(); - // get and check IMEI one more time - if (modem.getIMEI() != NULL) { - Serial.println("Modem is functoning properly"); - } else { - Serial.println("Error: getIMEI() failed after modem.begin()"); - } - } else { - Serial.println("Error: Could not get IMEI"); - } - // do nothing: - while (true); -} - diff --git a/libraries/GSM/examples/Tools/TestWebServer/TestWebServer.ino b/libraries/GSM/examples/Tools/TestWebServer/TestWebServer.ino deleted file mode 100644 index d3939e11a0c..00000000000 --- a/libraries/GSM/examples/Tools/TestWebServer/TestWebServer.ino +++ /dev/null @@ -1,82 +0,0 @@ -/* - Basic Web Server - - A simple web server that replies with nothing, but prints the client's request - and the server IP address. - - Circuit: - * GSM shield attached - - created - by David Cuartielles - modified 21 Nov 2012 - by Tom Igoe - - http://www.arduino.cc/en/Tutorial/GSMToolsTestWebServer - - This example code is part of the public domain - */ -#include - -// PIN Number -#define PINNUMBER "" - -// APN data -#define GPRS_APN "GPRS_APN" // replace your GPRS APN -#define GPRS_LOGIN "login" // replace with your GPRS login -#define GPRS_PASSWORD "password" // replace with your GPRS password - - -// initialize the library instance -GPRS gprs; -GSM gsmAccess; // include a 'true' parameter for debug enabled -GSMServer server(80); // port 80 (http default) - -// timeout -const unsigned long __TIMEOUT__ = 10 * 1000; - -void setup() { - // initialize serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for Leonardo only - } - - Serial.println("starting,.."); - // connection state - boolean connected = true; - - // Start GSM shield - // If your SIM has PIN, pass it as a parameter of begin() in quotes - while (!connected) { - if ((gsmAccess.begin(PINNUMBER) == GSM_READY) & - (gprs.attachGPRS(GPRS_APN, GPRS_LOGIN, GPRS_PASSWORD) == GPRS_READY)) { - connected = true; - } else { - Serial.println("Not connected"); - delay(1000); - } - } - - Serial.println("Connected to GPRS network"); - - // start server - server.begin(); - - //Get IP. - IPAddress LocalIP = gprs.getIPAddress(); - Serial.println("Server IP address="); - Serial.println(LocalIP); -} - -void loop() { - GSMClient client = server.available(); - - if (client) { - if (client.available()) { - Serial.write(client.read()); - } - } - -} - diff --git a/libraries/GSM/extras/License.txt b/libraries/GSM/extras/License.txt deleted file mode 100644 index 4114b2b23c3..00000000000 --- a/libraries/GSM/extras/License.txt +++ /dev/null @@ -1,142 +0,0 @@ -GNU LESSER GENERAL PUBLIC LICENSE - -Version 2.1, February 1999 - -Copyright (C) 1991, 1999 Free Software Foundation, Inc. -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - -Preamble - -The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. - -This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. - -When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. - -To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. - -For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. - -We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. - -To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. - -Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. - -Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. - -When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. - -We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. - -For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. - -In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. - -Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. - -The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. -TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - -0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". - -A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. - -The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) - -"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. - -Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. - -1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. - -You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. - c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. - d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. - - (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. - -3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. - -Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. - -This option is useful when you wish to copy part of the code of the Library into a program that is not a library. - -4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. - -If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. - -5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. - -However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. - -When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. - -If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) - -Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. - -6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. - -You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: - - a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) - b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. - c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. - d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. - e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. - -For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. - -It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. - -7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. - b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. - -8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. - -9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. - -10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. - -11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. - -This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. - -12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. - -13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. - -14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. - -NO WARRANTY - -15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -END OF TERMS AND CONDITIONS diff --git a/libraries/GSM/keywords.txt b/libraries/GSM/keywords.txt deleted file mode 100644 index 4a44464add9..00000000000 --- a/libraries/GSM/keywords.txt +++ /dev/null @@ -1,72 +0,0 @@ -####################################### -# Syntax Coloring Map For GSM -####################################### -# Class -####################################### - -GSM KEYWORD1 GSM -GSMVoiceCall KEYWORD1 GSMVCSConstructor -GSM_SMS KEYWORD1 GSMSMSConstructor -GPRS KEYWORD1 GPRSConstructor -GSMClient KEYWORD1 GSMClientConstructor -GSMServer KEYWORD1 GSMServerConstructor -GSMModem KEYWORD1 GSMModemConstructor -GSMScanner KEYWORD1 GSMScannerConstructor -GSMPIN KEYWORD1 GSMPINConstructor -GSMBand KEYWORD1 GSMBandConstructor - -####################################### -# Methods and Functions -####################################### - -begin KEYWORD2 -shutdown KEYWORD2 -gatVoiceCallStatus KEYWORD2 -ready KEYWORD2 -voiceCall KEYWORD2 -answerCall KEYWORD2 -hangCall KEYWORD2 -retrieveCallingNumber KEYWORD2 -beginSMS KEYWORD2 -endSMS KEYWORD2 -remoteNumber KEYWORD2 -attachGPRS KEYWORD2 -begnWrite KEYWORD2 -endWrite KEYWORD2 -getIMEI KEYWORD2 -getCurrentCarrier KEYWORD2 -getSignalStrength KEYWORD2 -readNetworks KEYWORD2 -isPIN KEYWORD2 -checkPIN KEYWORD2 -checkPUK KEYWORD2 -changePIN KEYWORD2 -switchPIN KEYWORD2 -checkReg KEYWORD2 -getPINUsed KEYWORD2 -setPINUsed KEYWORD2 -getBand KEYWORD2 -setBand KEYWORD2 -getvoiceCallStatus KEYWORD2 - -####################################### -# Constants -####################################### - -ERROR LITERAL1 -IDLE LITERAL1 -CONNECTING LITERAL1 -GSM_READY LITERAL1 -GPRS_READY LITERAL1 -TRANSPARENT_CONNECTED LITERAL1 -IDLE_CALL LITERAL1 -CALLING LITERAL1 -RECEIVINGCALL LITERAL1 -TALKING LITERAL1 -GSM_MODE_UNDEFINED LITERAL1 -GSM_MODE_EGSM LITERAL1 -GSM_MODE_DCS LITERAL1 -GSM_MODE_PCS LITERAL1 -GSM_MODE_EGSM_DCS LITERAL1 -GSM_MODE_GSM850_PCS LITERAL1 -GSM_MODE_GSM850_EGSM_DCS_PCS LITERAL1 diff --git a/libraries/GSM/library.properties b/libraries/GSM/library.properties deleted file mode 100644 index 3e9cadd98c1..00000000000 --- a/libraries/GSM/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=GSM -version=1.0.6 -author=Arduino -maintainer=Arduino -sentence=Enables GSM/GRPS network connection using the Arduino GSM Shield. -paragraph=Use this library to make/receive voice calls, to send and receive SMS with the Quectel M10 GSM module.
    This library also allows you to connect to internet through the GPRS networks. You can either use web Clients and Servers.
    -category=Communication -url=http://www.arduino.cc/en/Reference/GSM -architectures=avr diff --git a/libraries/GSM/src/GSM.h b/libraries/GSM/src/GSM.h deleted file mode 100644 index a071b082f97..00000000000 --- a/libraries/GSM/src/GSM.h +++ /dev/null @@ -1,69 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3SIMPLIFIERFILE_ -#define _GSM3SIMPLIFIERFILE_ - -// This file simplifies the use of the GSM3 library -// First we include everything. - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define GSM GSM3ShieldV1AccessProvider -#define GPRS GSM3ShieldV1DataNetworkProvider -#define GSMClient GSM3MobileClientService -#define GSMServer GSM3MobileServerService -#define GSMVoiceCall GSM3VoiceCallService -#define GSM_SMS GSM3SMSService - -#define GSMPIN GSM3ShieldV1PinManagement -#define GSMModem GSM3ShieldV1ModemVerification -#define GSMCell GSM3ShieldV1CellManagement -#define GSMBand GSM3ShieldV1BandManagement -#define GSMScanner GSM3ShieldV1ScanNetworks - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3CircularBuffer.cpp b/libraries/GSM/src/GSM3CircularBuffer.cpp deleted file mode 100644 index cb6c4cbf97c..00000000000 --- a/libraries/GSM/src/GSM3CircularBuffer.cpp +++ /dev/null @@ -1,319 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include - -GSM3CircularBuffer::GSM3CircularBuffer(GSM3CircularBufferManager* mgr) -{ - head=0; - tail=0; - cbm=mgr; -} - -int GSM3CircularBuffer::write(char c) -{ - byte aux=(tail+1)& __BUFFERMASK__; - if(aux!=head) - { - theBuffer[tail]=c; - // Lets put an extra zero at the end, so we can - // read chains as we like. - // This is not exactly perfect, we are always 1+ behind the head - theBuffer[aux]=0; - tail=aux; - return 1; - } - return 0; -} - -char GSM3CircularBuffer::read() -{ - char res; - if(head!=tail) - { - res=theBuffer[head]; - head=(head+1)& __BUFFERMASK__; - //if(cbm) - // cbm->spaceAvailable(); - return res; - } - else - { - return 0; - } -} - -char GSM3CircularBuffer::peek(int increment) -{ - char res; - byte num_aux; - - if (tail>head) num_aux = tail-head; - else num_aux = 128 - head + tail; - - if(increment < num_aux) - { - res=theBuffer[head]; - return res; - } - else - { - return 0; - } -} - -void GSM3CircularBufferManager::spaceAvailable(){return;}; - -void GSM3CircularBuffer::flush() -{ - head=tail; -} - -char* GSM3CircularBuffer::nextString() -{ - while(head!=tail) - { - head=(head+1) & __BUFFERMASK__; - if(theBuffer[head]==0) - { - head=(head+1) & __BUFFERMASK__; - return (char*)theBuffer+head; - } - } - return 0; -} - - -bool GSM3CircularBuffer::locate(const char* reference) -{ - - return locate(reference, head, tail, 0, 0); -} - -bool GSM3CircularBuffer::chopUntil(const char* reference, bool movetotheend, bool usehead) -{ - byte from, to; - - if(locate(reference, head, tail, &from, &to)) - { - if(usehead) - { - if(movetotheend) - head=(to+1) & __BUFFERMASK__; - else - head=from; - } - else - { - if(movetotheend) - tail=(to+1) & __BUFFERMASK__; - else - tail=from; - } - return true; - } - else - { - return false; - } -} - -bool GSM3CircularBuffer::locate(const char* reference, byte thishead, byte thistail, byte* from, byte* to) -{ - int refcursor=0; - bool into=false; - byte b2, binit; - bool possible=1; - - if(reference[0]==0) - return true; - - for(byte b1=thishead; b1!=thistail;b1=(b1+1)& __BUFFERMASK__) - { - possible = 1; - b2 = b1; - while (possible&&(b2!=thistail)) - { - if(theBuffer[b2]==reference[refcursor]) - { - if(!into) - binit=b2; - into=true; - refcursor++; - if(reference[refcursor]==0) - { - if(from) - *from=binit; - if(to) - *to=b2; - return true; - } - } - else if (into==true) - { - possible = 0; - into=false; - refcursor=0; - } - b2=(b2+1)& __BUFFERMASK__; - } - } - return false; -} - -bool GSM3CircularBuffer::extractSubstring(const char* from, const char* to, char* buffer, int bufsize) -{ - byte t1; - byte h2; - byte b; - int i; - -//DEBUG -//Serial.println("Beginning extractSubstring"); -//Serial.print("head,tail=");Serial.print(int(head));Serial.print(",");Serial.println(int(tail)); - - if(!locate(from, head, tail, 0, &t1)) - return false; - -//DEBUG -//Serial.println("Located chain from."); - - t1++; //To point the next. - if(!locate(to, t1, tail, &h2, 0)) - return false; - -//DEBUG -//Serial.println("Located chain to."); -/*Serial.print("t1=");Serial.println(int(t1)); -Serial.print("h2=");Serial.println(int(h2));*/ - - - for(i=0,b=t1;i='0')&&(c<='9')) - { - anyfound=true; - res=(res*10)+(int)c-48; - } - else - { - if(negative) - res=(-1)*res; - return res; - } - } - if(negative) - res=(-1)*res; - return res; -} - -void GSM3CircularBuffer::debugBuffer() -{ - byte h1=head; - byte t1=tail; - Serial.println(); - Serial.print(h1); - Serial.print(" "); - Serial.print(t1); - Serial.print('>'); - for(byte b=h1; b!=t1; b=(b+1)& __BUFFERMASK__) - printCharDebug(theBuffer[b]); - Serial.println(); -} - -void GSM3CircularBuffer::printCharDebug(uint8_t c) -{ - if((c>31)&&(c<127)) - Serial.print((char)c); - else - { - Serial.print('%'); - Serial.print(c); - Serial.print('%'); - } -} - -bool GSM3CircularBuffer::retrieveBuffer(char* buffer, int bufsize, int& SizeWritten) -{ - byte b; - int i; - - /*for(i=0,b=head;i -#include - -#ifndef byte -#define byte uint8_t -#endif - -// These values have to be interrelated -// To-Do: may we have just one? (BUFFERMASK) -#define __BUFFERSIZE__ 128 -#define __BUFFERMASK__ 0x7F - -class GSM3CircularBufferManager -{ - public: - - /** If there is spaceAvailable in the buffer, lets send a XON - */ - virtual void spaceAvailable(); -}; - -class GSM3CircularBuffer -{ - private: - // Buffer pointers. - // head=tail means buffer empty - // tail=head-1 means buffer full - // tail=head+1 means just one char (pointed by head) - // REMEMBER. head can be moved only by the main program - // REMEMBER. tail can be moved only by the other thread (interrupts) - // REMEMBER. head and tail can move only FORWARD - volatile byte head; // First written one - volatile byte tail; // Last written one. - - GSM3CircularBufferManager* cbm; // Circular buffer manager - - // The buffer - volatile byte theBuffer[__BUFFERSIZE__]; - - /** Checks if a substring exists in the buffer - @param reference Substring - @param thishead Head - @param thistail Tail - @param from Initial byte position - @param to Final byte position - @return true if exists, in otherwise return false - */ - bool locate(const char* reference, byte thishead, byte thistail, byte* from=0, byte* to=0); - - public: - - /** Constructor - @param mgr Circular buffer manager - */ - GSM3CircularBuffer(GSM3CircularBufferManager* mgr=0); - - // TO-DO.Check if this formule runs too at the buffer limit - - /** Get available bytes in circular buffer - @return available bytes - */ - inline byte availableBytes(){ return ((head-(tail+1))&__BUFFERMASK__);}; - - /** Stored bytes in circular buffer - @return stored bytes - */ - inline byte storedBytes(){ return ((tail-head)&__BUFFERMASK__);}; - - /** Write a character in circular buffer - @param c Character - @return 1 if successful - */ - int write(char c); - - /** Returns a character and moves the pointer - @return character - */ - char read(); - - /** Returns a character but does not move the pointer. - @param increment Increment - @return character - */ - char peek(int increment); - - /** Returns a pointer to the head of the buffer - @return buffer with pointer in head - */ - inline char* firstString(){return (char*)theBuffer+head;}; - - /** Go forward one string - @return buffer with one string advance - */ - char* nextString(); - - /** Flush circular buffer - */ - void flush(); - - /** Get tail - @return tail - */ - inline byte getTail(){return tail;}; - - /** Get head - @return head - */ - inline byte getHead(){return head;}; - - // Only can be executed from the interrupt! - /** Delete circular buffer to the end - @param from Initial byte position - */ - inline void deleteToTheEnd(byte from){tail=from;}; - - /** Checks if a substring exists in the buffer - move=0, dont move, =1,put head at the beginning of the string, =2, put head at the end - @param reference - @return true if exists, in otherwise return false - */ - bool locate(const char* reference); - - /** Locates reference. If found, moves head (or tail) to the beginning (or end) - @param reference - @param movetotheend - @param head - @return true if successful - */ - bool chopUntil(const char* reference, bool movetotheend, bool head=true); - - /** Reads an integer from the head. Stops with first non blank, non number character - @return integer from the head - */ - int readInt(); - - // Caveat: copies the first bytes until buffer is full - - /** Extract a substring from circular buffer - @param from Initial byte position - @param to Final byte position - @param buffer Buffer for copy substring - @param bufsize Buffer size - @return true if successful, false if substring does not exists - */ - bool extractSubstring(const char* from, const char* to, char* buffer, int bufsize); - - /** Retrieve all the contents of buffer from head to tail - @param buffer - @param bufsize - @param SizeWritten - @return true if successful - */ - bool retrieveBuffer(char* buffer, int bufsize, int& SizeWritten); - - /** Debug function to print the buffer after receiving data from the modem. - */ - void debugBuffer(); - - /** Utility: dump character if printable, else, put in %x% - @param c Character - */ - static void printCharDebug(uint8_t c); - - -}; - - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3IO.h b/libraries/GSM/src/GSM3IO.h deleted file mode 100644 index da1e7847683..00000000000 --- a/libraries/GSM/src/GSM3IO.h +++ /dev/null @@ -1,59 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifdef TTOPEN_V1 - #define __POWERPIN__ 5 - #define __RESETPIN__ 6 -#else - #define __RESETPIN__ 7 -#endif - -#if defined(__AVR_ATmega328P__) - #ifdef TTOPEN_V1 - #define __TXPIN__ 3 - #define __RXPIN__ 4 - #define __RXINT__ 3 - #else - #define __TXPIN__ 3 - #define __RXPIN__ 2 - #define __RXINT__ 3 - #endif -#elif defined(__AVR_ATmega2560__) || defined(__AVR_ATmega1280__) - #define __TXPIN__ 3 - #define __RXPIN__ 10 - #define __RXINT__ 4 -#elif defined(__AVR_ATmega32U4__) - #define __TXPIN__ 3 - #define __RXPIN__ 8 - #define __RXINT__ 3 -#endif diff --git a/libraries/GSM/src/GSM3MobileAccessProvider.cpp b/libraries/GSM/src/GSM3MobileAccessProvider.cpp deleted file mode 100644 index 225069b2b94..00000000000 --- a/libraries/GSM/src/GSM3MobileAccessProvider.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include - -GSM3MobileAccessProvider* theGSM3MobileAccessProvider; diff --git a/libraries/GSM/src/GSM3MobileAccessProvider.h b/libraries/GSM/src/GSM3MobileAccessProvider.h deleted file mode 100644 index afaadc8b4f2..00000000000 --- a/libraries/GSM/src/GSM3MobileAccessProvider.h +++ /dev/null @@ -1,73 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3MOBILEACCESSPROVIDER_ -#define _GSM3MOBILEACCESSPROVIDER_ - -enum GSM3_NetworkStatus_t { ERROR, IDLE, CONNECTING, GSM_READY, GPRS_READY, TRANSPARENT_CONNECTED, OFF}; - -class GSM3MobileAccessProvider -{ - public: - // Access functions - //Configuration functions. - /** Establish GSM connection - @param pin PIN code - @param restart Determines if hardware restart - @param synchronous Determines sync mode - @return If synchronous, GSM3_NetworkStatus_t. If asynchronous, returns 0. - */ - virtual inline GSM3_NetworkStatus_t begin(char* pin=0,bool restart=true, bool synchronous=true)=0; - - /** Check network access status - @return 1 if Alive, 0 if down - */ - virtual inline int isAccessAlive()=0; - - /** Shutdown the modem (power off really) - @return true if successful - */ - virtual inline bool shutdown()=0; - - /** Secure shutdown the modem (power off really) - @return always true - */ - virtual inline bool secureShutdown()=0; - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - virtual int ready()=0; -}; - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3MobileCellManagement.cpp b/libraries/GSM/src/GSM3MobileCellManagement.cpp deleted file mode 100644 index 5db2717f869..00000000000 --- a/libraries/GSM/src/GSM3MobileCellManagement.cpp +++ /dev/null @@ -1,34 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include diff --git a/libraries/GSM/src/GSM3MobileCellManagement.h b/libraries/GSM/src/GSM3MobileCellManagement.h deleted file mode 100644 index 035dfee996f..00000000000 --- a/libraries/GSM/src/GSM3MobileCellManagement.h +++ /dev/null @@ -1,53 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3MOBILECELLMANAGEMENT_ -#define _GSM3MOBILECELLMANAGEMENT_ - -#include - -class GSM3MobileCellManagement -{ - public: - - virtual inline int getLocation() {return 0;}; - - virtual inline int getICCID() {return 0;}; - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - virtual int ready()=0; -}; - -#endif diff --git a/libraries/GSM/src/GSM3MobileClientProvider.cpp b/libraries/GSM/src/GSM3MobileClientProvider.cpp deleted file mode 100644 index 0de3ceea70b..00000000000 --- a/libraries/GSM/src/GSM3MobileClientProvider.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include - -GSM3MobileClientProvider* theGSM3MobileClientProvider; diff --git a/libraries/GSM/src/GSM3MobileClientProvider.h b/libraries/GSM/src/GSM3MobileClientProvider.h deleted file mode 100644 index a771ff46d14..00000000000 --- a/libraries/GSM/src/GSM3MobileClientProvider.h +++ /dev/null @@ -1,156 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef __GSM3_MOBILECLIENTPROVIDER__ -#define __GSM3_MOBILECLIENTPROVIDER__ - -#include -#include - -class GSM3MobileClientProvider -{ - protected: - - uint8_t sockets; - - public: - - /** Constructor */ - GSM3MobileClientProvider(){}; - - /** Minimum socket - @return socket - */ - virtual inline int minSocket()=0; - - /** Maximum socket - @return socket - */ - virtual inline int maxSocket()=0; - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - virtual int ready()=0; - - /** Get status socket client - @param socket Socket - @return 1 if connected - */ - virtual bool getStatusSocketClient(uint8_t socket)=0; - - // Socket management - - /** Get socket - @param socket Socket - @return socket - */ - virtual int getSocket(int socket=-1)=0; - - /** Release socket - @param socket Socket - */ - virtual void releaseSocket(int socket)=0; - - // Client socket functions - - /** Connect to a server via TCP connection - @param server Server name or IP address in a String - @param port Port - @param id_socket Socket - @return 0 if command running, 1 if success, otherwise error - */ - virtual int connectTCPClient(const char* server, int port, int id_socket)=0; - - /** Connect to a server (by IP address) via TCP connection - @param add IP address in IPAddress format - @param port Port - @param id_socket Socket - @return 0 if command running, 1 if success, otherwise error - */ - virtual int connectTCPClient(IPAddress add, int port, int id_socket)=0; - - /** Begin writing through a socket - @param client1Server0 1 if modem acts as client, 0 if acts as server - @param id_socket Local socket number - @return 0 if command running, 1 if success, otherwise error - */ - virtual void beginWriteSocket(bool client1Server0, int id_socket)=0; - - /** Write through a socket. MUST go after beginWriteSocket() - @param c character to be written - */ - virtual void writeSocket(uint8_t c)=0; - - /** Write through a socket. MUST go after beginWriteSocket() - @param buf characters to be written (final 0 will not be written) - */ - virtual void writeSocket(const char* buf)=0; - - /** Finish current writing - */ - virtual void endWriteSocket()=0; - - /** Check if there are data to be read in socket. - @param client1Server0 1 if modem acts as client, 0 if acts as server - @param id_socket Local socket number - @return 0 if command running, 1 if there are data available, 4 if no data, otherwise error - */ - virtual int availableSocket(bool client, int id_socket)=0; - - /** Read data (get a character) available in socket - @return character - */ - virtual int readSocket()=0; - - /** Flush socket - */ - virtual void flushSocket()=0; - - /** Get a character but will not advance the buffer head - @return character - */ - virtual int peekSocket()=0; - - /** Close a socket - @param client1Server0 1 if modem acts as client, 0 if acts as server - @param id_socket Socket - @return 0 if command running, 1 if success, otherwise error - */ - virtual int disconnectTCP(bool client1Server0, int idsocket)=0; - -}; - -extern GSM3MobileClientProvider* theGSM3MobileClientProvider; - -#endif diff --git a/libraries/GSM/src/GSM3MobileClientService.cpp b/libraries/GSM/src/GSM3MobileClientService.cpp deleted file mode 100644 index a913f54bae3..00000000000 --- a/libraries/GSM/src/GSM3MobileClientService.cpp +++ /dev/null @@ -1,260 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include -#include - -// While there is only a shield (ShieldV1) we will include it by default -#include -GSM3ShieldV1ClientProvider theShieldV1ClientProvider; - - -#define GSM3MOBILECLIENTSERVICE_CLIENT 0x01 // 1: This side is Client. 0: This side is Server -#define GSM3MOBILECLIENTSERVICE_WRITING 0x02 // 1: TRUE 0: FALSE -#define GSM3MOBILECLIENTSERVICE_SYNCH 0x04 // 1: TRUE, compatible with other clients 0: FALSE - -#define __TOUTBEGINWRITE__ 10000 - - -GSM3MobileClientService::GSM3MobileClientService(bool synch) -{ - flags = GSM3MOBILECLIENTSERVICE_CLIENT; - if(synch) - flags |= GSM3MOBILECLIENTSERVICE_SYNCH; - mySocket=255; -} - -GSM3MobileClientService::GSM3MobileClientService(int socket, bool synch) -{ - // We are creating a socket on an existing, occupied one. - flags=0; - if(synch) - flags |= GSM3MOBILECLIENTSERVICE_SYNCH; - mySocket=socket; - theGSM3MobileClientProvider->getSocket(socket); - -} - -// Returns 0 if last command is still executing -// 1 if success -// >1 if error -int GSM3MobileClientService::ready() -{ - return theGSM3MobileClientProvider->ready(); -} - -int GSM3MobileClientService::connect(IPAddress add, uint16_t port) -{ - if(theGSM3MobileClientProvider==0) - return 2; - - // TODO: ask for the socket id - mySocket=theGSM3MobileClientProvider->getSocket(); - - if(mySocket<0) - return 2; - - int res=theGSM3MobileClientProvider->connectTCPClient(add, port, mySocket); - if(flags & GSM3MOBILECLIENTSERVICE_SYNCH) - res=waitForAnswer(); - - return res; -}; - -int GSM3MobileClientService::connect(const char *host, uint16_t port) -{ - - if(theGSM3MobileClientProvider==0) - return 2; - // TODO: ask for the socket id - mySocket=theGSM3MobileClientProvider->getSocket(); - - if(mySocket<0) - return 2; - - int res=theGSM3MobileClientProvider->connectTCPClient(host, port, mySocket); - if(flags & GSM3MOBILECLIENTSERVICE_SYNCH) - res=waitForAnswer(); - - return res; -} - -int GSM3MobileClientService::waitForAnswer() -{ - unsigned long m; - m=millis(); - int res; - - while(((millis()-m)< __TOUTBEGINWRITE__ )&&(ready()==0)) - delay(100); - - res=ready(); - - // If we get something different from a 1, we are having a problem - if(res!=1) - res=0; - - return res; -} - -void GSM3MobileClientService::beginWrite(bool sync) -{ - flags |= GSM3MOBILECLIENTSERVICE_WRITING; - theGSM3MobileClientProvider->beginWriteSocket(flags & GSM3MOBILECLIENTSERVICE_CLIENT, mySocket); - if(sync) - waitForAnswer(); -} - -size_t GSM3MobileClientService::write(uint8_t c) -{ - if(!(flags & GSM3MOBILECLIENTSERVICE_WRITING)) - beginWrite(true); - theGSM3MobileClientProvider->writeSocket(c); - return 1; -} - -size_t GSM3MobileClientService::write(const uint8_t* buf) -{ - if(!(flags & GSM3MOBILECLIENTSERVICE_WRITING)) - beginWrite(true); - theGSM3MobileClientProvider->writeSocket((const char*)(buf)); - return strlen((const char*)buf); -} - -size_t GSM3MobileClientService::write(const uint8_t* buf, size_t sz) -{ - if(!(flags & GSM3MOBILECLIENTSERVICE_WRITING)) - beginWrite(true); - for(int i=0;iwriteSocket(buf[i]); - return sz; -} - -void GSM3MobileClientService::endWrite(bool sync) -{ - flags ^= GSM3MOBILECLIENTSERVICE_WRITING; - theGSM3MobileClientProvider->endWriteSocket(); - if(sync) - waitForAnswer(); -} - -uint8_t GSM3MobileClientService::connected() -{ - if(mySocket==255) - return 0; - return theGSM3MobileClientProvider->getStatusSocketClient(mySocket); -} - -GSM3MobileClientService::operator bool() -{ - return connected()==1; -}; - -int GSM3MobileClientService::available() -{ - int res; - - // Even if not connected, we are looking for available data - - if(flags & GSM3MOBILECLIENTSERVICE_WRITING) - endWrite(true); - - res=theGSM3MobileClientProvider->availableSocket(flags & GSM3MOBILECLIENTSERVICE_CLIENT,mySocket); - if(flags & GSM3MOBILECLIENTSERVICE_SYNCH) - res=waitForAnswer(); - - return res; -} - -int GSM3MobileClientService::read(uint8_t *buf, size_t size) -{ - int i; - uint8_t c; - - for(i=0;ireadSocket(flags & GSM3MOBILECLIENTSERVICE_CLIENT, (char *)(buf), size, mySocket); - - return res; -*/ -} - -int GSM3MobileClientService::read() -{ - if(flags & GSM3MOBILECLIENTSERVICE_WRITING) - endWrite(true); - int c=theGSM3MobileClientProvider->readSocket(); - return c; -} - -int GSM3MobileClientService::peek() -{ - if(flags & GSM3MOBILECLIENTSERVICE_WRITING) - endWrite(true); - return theGSM3MobileClientProvider->peekSocket(/*mySocket, false*/); -} - -void GSM3MobileClientService::flush() -{ - if(flags & GSM3MOBILECLIENTSERVICE_WRITING) - endWrite(true); - theGSM3MobileClientProvider->flushSocket(/*mySocket*/); - if(flags & GSM3MOBILECLIENTSERVICE_SYNCH) - waitForAnswer(); - -} - -void GSM3MobileClientService::stop() -{ - if(flags & GSM3MOBILECLIENTSERVICE_WRITING) - endWrite(true); - theGSM3MobileClientProvider->disconnectTCP(flags & GSM3MOBILECLIENTSERVICE_CLIENT, mySocket); - theGSM3MobileClientProvider->releaseSocket(mySocket); - mySocket = 0; - if(flags & GSM3MOBILECLIENTSERVICE_SYNCH) - waitForAnswer(); -} - diff --git a/libraries/GSM/src/GSM3MobileClientService.h b/libraries/GSM/src/GSM3MobileClientService.h deleted file mode 100644 index 5a36a975c97..00000000000 --- a/libraries/GSM/src/GSM3MobileClientService.h +++ /dev/null @@ -1,162 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3MOBILECLIENTSERVICE_ -#define _GSM3MOBILECLIENTSERVICE_ - -#include -#include - - -class GSM3MobileClientService : public Client -{ - private: - - uint8_t mySocket; - uint8_t flags; - - /** Blocks waiting for an answer - @return returns 0 if last command is still executing, 1 success, >1 error - */ - int waitForAnswer(); - - public: - - /** Constructor - @param synch Sync mode - */ - GSM3MobileClientService(bool synch=true); - - /** Constructor - @param socket Socket - @param synch Sync mode - */ - GSM3MobileClientService(int socket, bool synch); - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(); - - // we take this function out as IPAddress is complex to bring to - // version 1. - /** Connect to server by IP address - @param (IPAddress) - @param (uint16_t) - @return returns 0 if last command is still executing, 1 success, 2 if there are no resources - */ - inline int connect(IPAddress, uint16_t); - - /** Connect to server by hostname - @param host Hostname - @param port Port - @return returns 0 if last command is still executing, 1 success, 2 if there are no resources - */ - int connect(const char *host, uint16_t port); - - /** Initialize write in request - @param sync Sync mode - */ - void beginWrite(bool sync=false); - - /** Write a character in request - @param c Character - @return size - */ - size_t write(uint8_t c); - - /** Write a characters buffer in request - @param buf Buffer - @return buffer size - */ - size_t write(const uint8_t *buf); - - /** Write a characters buffer with size in request - @param (uint8_t*) Buffer - @param (size_t) Buffer size - @return buffer size - */ - size_t write(const uint8_t*, size_t); - - /** Finish write request - @param sync Sync mode - */ - void endWrite(bool sync=false); - - /** Check if connected to server - @return 1 if connected - */ - uint8_t connected(); - - operator bool(); - - /** Read from response buffer and copy size specified to buffer - @param buf Buffer - @param size Buffer size - @return bytes read - */ - int read(uint8_t *buf, size_t size); - - /** Read a character from response buffer - @return character - */ - int read(); - - /** Check if exists a response available - @return 1 if exists, 0 if not exists - */ - int available(); - - /** Read a character from response buffer but does not move the pointer. - @return character - */ - int peek(); - - /** Flush response buffer - */ - void flush(); - - /** Stop client - */ - void stop(); - - /** Get socket - @return socket - */ - inline int getSocket(){return (int)mySocket;}; - - -}; - - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3MobileDataNetworkProvider.cpp b/libraries/GSM/src/GSM3MobileDataNetworkProvider.cpp deleted file mode 100644 index c57c3416871..00000000000 --- a/libraries/GSM/src/GSM3MobileDataNetworkProvider.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include - -// GSM3MobileDataNetworkProvider* theGSM3MobileDataNetworkProvider; diff --git a/libraries/GSM/src/GSM3MobileDataNetworkProvider.h b/libraries/GSM/src/GSM3MobileDataNetworkProvider.h deleted file mode 100644 index bffd381fa7f..00000000000 --- a/libraries/GSM/src/GSM3MobileDataNetworkProvider.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3MOBILEDATANETWORKPROVIDER_ -#define _GSM3MOBILEDATANETWORKPROVIDER_ - -#include - -// This class is not really useful, but serves as a guideline for programmers -// We keep it but it should never be linked -class GSM3MobileDataNetworkProvider -{ - public: - - /** Attach to GPRS/GSM network - @param networkId APN GPRS - @param user Username - @param pass Password - @return connection status - */ - virtual GSM3_NetworkStatus_t networkAttach(char* networId, char* user, char* pass)=0; - - /** Detach GPRS/GSM network - @return connection status - */ - virtual GSM3_NetworkStatus_t networkDetach()=0; - -}; - -extern GSM3MobileDataNetworkProvider* theGSM3MobileDataNetworkProvider; - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3MobileMockupProvider.cpp b/libraries/GSM/src/GSM3MobileMockupProvider.cpp deleted file mode 100644 index 8680e18467e..00000000000 --- a/libraries/GSM/src/GSM3MobileMockupProvider.cpp +++ /dev/null @@ -1,192 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include -#include -#include -#include - - -GSM3MobileMockupProvider::GSM3MobileMockupProvider() -{ - lineStatus=IDLE; - msgExample="Hello#World"; - msgIndex=0; -}; - -int GSM3MobileMockupProvider::begin(char* pin) -{ - Serial.println("GSM3MobileMockupProvider::begin()"); - return 0; -}; - -int GSM3MobileMockupProvider::ready() -{ - Serial.println("GSM3MobileMockupProvider::ready()"); - return 1; -}; - -int GSM3MobileMockupProvider::beginSMS(const char* number) -{ - Serial.println("SM3MobileMockupProvider::beginSMS()"); - return 0; -}; - -void GSM3MobileMockupProvider::writeSMS(char c) -{ - Serial.print(c); -}; - -int GSM3MobileMockupProvider::endSMS() -{ - Serial.println("GSM3MobileMockupProvider::endSMS()"); -}; - -int GSM3MobileMockupProvider::availableSMS() -{ - Serial.println("GSM3MobileMockupProvider::availableSMS()"); - return 120; -}; - -int GSM3MobileMockupProvider::peek() -{ - return (int)'H'; -}; - -int GSM3MobileMockupProvider::remoteSMSNumber(char* number, int nlength) -{ - if(nlength>=13) - strcpy(number, "+34630538546"); - return 12; -}; - - -void GSM3MobileMockupProvider::flushSMS() -{ - Serial.println("GSM3MobileMockupProvider::flushSMS()"); -}; - -int GSM3MobileMockupProvider::readSMS() -{ - if(msgExample[msgIndex]==0) - { - msgIndex=0; - return 0; - } - else - { - msgIndex++; - return msgExample[msgIndex-1]; - }; -}; - -int GSM3MobileMockupProvider::connectTCPClient(const char* server, int port, int id_socket) -{ - Serial.println("GSM3MobileMockupProvider::connectTCPClient()"); - Serial.print(server);Serial.print(":");Serial.print(port);Serial.print("-");Serial.println(id_socket); -} - -void GSM3MobileMockupProvider::writeSocket(const uint8_t *buf, size_t size, int id_socket) -{ - int i; - for(i=0;i=minSocket())&&(socket<=maxSocket())) - return 1; - else - return 0; -}; -*/ - -int GSM3MobileMockupProvider::readSocket(uint8_t *buf, size_t size, int idsocket) -{ - int i; - int l=strlen(msgExample); - for(i=0;(i12)) - strcpy("192.168.1.1", localIP); - return 1; -}; - -bool GSM3MobileMockupProvider::getSocketModemStatus(uint8_t s) -{ - // Feeling lazy - return true; -} - diff --git a/libraries/GSM/src/GSM3MobileMockupProvider.h b/libraries/GSM/src/GSM3MobileMockupProvider.h deleted file mode 100644 index 59eee4185d6..00000000000 --- a/libraries/GSM/src/GSM3MobileMockupProvider.h +++ /dev/null @@ -1,255 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3MOBILEMOCKUPPROVIDER_ -#define _GSM3MOBILEMOCKUPPROVIDER_ - -#include -#include - -class GSM3MobileMockupProvider: public GSM3MobileNetworkProvider -{ - private: - // Introducing this status is quite "heavy". But something like this should - // be added to ShieldV1. Or not. - // Note, in ShieldV1 there is no "RECEIVINGSMS" status. - enum GSM3_modemlinest_e { IDLE, WAITINGANSWER, SENDINGSMS}; - GSM3_modemlinest_e lineStatus; - char* msgExample; - int msgIndex; - - public: - - /** Minimum socket - @return 1 - */ - inline int minSocket(){return 1;}; - - /** Maximum socket - @return 8 - */ - inline int maxSocket(){return 8;}; - - /** Constructor */ - GSM3MobileMockupProvider(); - - /** Get network status - @return network status - */ - inline GSM3_NetworkStatus_t getStatus(){return ERROR;}; - - /** Get voice call status - @return call status - */ - inline GSM3_voiceCall_st getvoiceCallStatus(){return IDLE_CALL;}; - - /** Get last command status - @return Returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(); - inline void closeCommand(int code){}; - - //Configuration functions. - - /** Begin connection - @param pin PIN code - @return - */ - int begin(char* pin=0); - - /** Check if is modem alive - @return 0 - */ - inline int isModemAlive(){return 0;}; - - /** Shutdown the modem (power off really) - @return true if successful - */ - inline bool shutdown(){return false;}; - - //Call functions - - /** Launch a voice call - @param number Phone number to be called - @return If asynchronous, returns 0. If synchronous, 1 if success, other if error - */ - inline int voiceCall(const char* number){return 0;}; - - /** Answer a voice call - @return If asynchronous, returns 0. If synchronous, 1 if success, other if error - */ - inline int answerCall(){return 0;}; - - /** Hang a voice call - @return If asynchronous, returns 0. If synchronous, 1 if success, other if error - */ - inline int hangCall(){return 0;}; - - /** Retrieve phone number of caller - @param buffer Buffer for copy phone number - @param bufsize Buffer size - @return If asynchronous, returns 0. If synchronous, 1 if success, other if error - */ - inline int retrieveCallingNumber(char* buffer, int*& bufsize){return 0;}; - - // SMS functions - - /** Begin a SMS to send it - @param number Destination - @return error command if it exists - */ - int beginSMS(const char* number); - - /** End SMS - @return error command if it exists - */ - int endSMS(); - - /** Check if SMS available and prepare it to be read - @return error command if it exists - */ - int availableSMS(); - - /** Read a byte but do not advance the buffer header (circular buffer) - @return character - */ - int peek(); - - /** Delete the SMS from Modem memory and proccess answer - */ - void flushSMS(); - - /** Read sender number phone - @param number Buffer for save number phone - @param nlength Buffer length - @return 1 success, >1 error - */ - int remoteSMSNumber(char* number, int nlength); - - /** Read one char for SMS buffer (advance circular buffer) - @return character - */ - int readSMS(); - - /** Write a SMS character by character - @param c Character - */ - void writeSMS(char c); - - // Socket functions - - /** Connect to a remote TCP server - @param server String with IP or server name - @param port Remote port number - @param id_socket Local socket number - @return 0 if command running, 1 if success, otherwise error - */ - int connectTCPClient(const char* server, int port, int id_socket); - - // Attention to parameter rewriting in ShieldV1 - /** Write buffer information into a socket - @param buf Buffer - @param size Buffer size - @param idsocket Socket - */ - void writeSocket(const uint8_t *buf, size_t size, int idsocket); - - // ShieldV1 will have two reading mechanisms: - // Mechanism 1: Call AT+QIRD for size bytes. Put them in the circular buffer, - // fill buf. Take care to xon/xoff effect, as we may copy just a part of the - // incoming bytes. - /** Read socket and put information in a buffer - @param buf Buffer - @param size Buffer size - @param idsocket Socket - @return - */ - int readSocket(uint8_t *buf, size_t size, int idsocket); - - // Mechanism 2 in ShieldV1: - // When called "available()" or "read()" reuse readSocket code to execute - // QIRD SYNCHRONOUSLY. Ask the modem for 1500 bytes but do not copy them anywhere, - // leave data in the circular buffer. Put buffer head at the start of received data. - // Peek() will get a character but will not advance the buffer head. - // Read() will get one character. XON/XOFF will take care of buffer filling - // If Read() gets to the end of the QIRD response, execute again QIRD SYNCHRONOUSLY - // If the user executes flush(), execute read() until there is nothing more to read() - // (the modem gives no way to empty the socket of incoming data) - - /** Check if there are data to be read in socket. - @param idsocket Local socket number - @return 0 if command running, 1 if there are data available, 4 if no data, otherwise error - */ - int availableSocket(int idsocket); - - /** Read data (get a character) available in socket - @param idsocket Socket - @param advance Determines if advance the buffer head - @return character - */ - int readSocket(int idsocket, bool advance=true); - - /** Flush socket - @param idsocket Socket - */ - void flushSocket(int idsocket); - - // This is the same in ShieldV1 - /** Close a socket - @param idsocket Socket - @return 0 if command running, 1 if success, otherwise error - */ - int disconnectTCP(int idsocket); - - // TCP Server. Attention. Changing the int*&. We'll receive a buffer for the IP - // If the pointer ins NULL just forget it - // I think that opening a server does not occupy a socket. Is that true? - /** Establish a TCP connection - @param port Port - @param localIP IP address - @param localIPlength IP address size in characters - @return command error if exists - */ - int connectTCPServer(int port, char* localIP, int* localIPlength); - - // Modem sockets status. Return TRUE if the modem thinks the socket is occupied. - // This should be detected through an unrequisited response - /** Get modem status - @param s Socket - @return modem status (true if connected) - */ - bool getSocketModemStatus(uint8_t s); - - -}; -#endif diff --git a/libraries/GSM/src/GSM3MobileNetworkProvider.cpp b/libraries/GSM/src/GSM3MobileNetworkProvider.cpp deleted file mode 100644 index c9fe01af315..00000000000 --- a/libraries/GSM/src/GSM3MobileNetworkProvider.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include - -GSM3MobileNetworkProvider* theProvider; - -GSM3MobileNetworkProvider::GSM3MobileNetworkProvider() -{ - socketsAsServer=0x0000; -}; - - -int GSM3MobileNetworkProvider::getNewOccupiedSocketAsServer() -{ - int i; - for(i=minSocketAsServer(); i<=maxSocketAsServer(); i++) - { - if ((!(socketsAsServer&(0x0001< -#include -#include -#include - -class GSM3MobileNetworkProvider -{ - private: - - /** Restart hardware - @return 1 if successful - */ - int HWrestart(); - - uint16_t socketsAsServer; // Server socket - - /** Get modem status - @param s Socket - @return modem status (true if connected) - */ - virtual inline bool getSocketAsServerModemStatus(int s){return false;}; - - public: - - /** minSocketAsServer - @return 0 - */ - virtual inline int minSocketAsServer(){return 0;}; - - /** maxSocketAsServer - @return 0 - */ - virtual inline int maxSocketAsServer(){return 0;}; - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - virtual int ready()=0; - - /** Constructor */ - GSM3MobileNetworkProvider(); - - /** Get network status - @return network status - */ - virtual inline GSM3_NetworkStatus_t getStatus(){return ERROR;}; - - /** Get socket client status - @param socket Socket - @return 1 if connected, 0 otherwise - */ - bool getStatusSocketClient(uint8_t socket); - - /** Close a AT command - @param code Close code - */ - virtual inline void closeCommand(int code){}; - - /** Establish a TCP connection - @param port Port - @param localIP IP address - @param localIPlength IP address size in characters - @return command error if exists - */ - virtual inline int connectTCPServer(int port, char* localIP, int localIPlength){return 0;}; - - /** Get local IP address - @param LocalIP Buffer for save IP address - @param LocalIPlength Buffer size - */ - virtual inline int getIP(char* LocalIP, int LocalIPlength){return 0;}; - - /** Get new occupied socket - @return -1 if no new socket has been occupied - */ - int getNewOccupiedSocketAsServer(); - - /** Get socket status as server - @param socket Socket to get status - @return socket status - */ - bool getStatusSocketAsServer(uint8_t socket); - - /** Close a socket - @param client1Server0 1 if modem acts as client, 0 if acts as server - @param id_socket Local socket number - @return 0 if command running, 1 if success, otherwise error - */ - int disconnectTCP(bool client1Server0, int idsocket){return 1;}; - - /** Release socket - @param socket Socket - */ - void releaseSocket(int socket){}; - -}; - -extern GSM3MobileNetworkProvider* theProvider; - -#endif diff --git a/libraries/GSM/src/GSM3MobileNetworkRegistry.cpp b/libraries/GSM/src/GSM3MobileNetworkRegistry.cpp deleted file mode 100644 index 5e22f3af81f..00000000000 --- a/libraries/GSM/src/GSM3MobileNetworkRegistry.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include - -GSM3MobileNetworkRegistry::GSM3MobileNetworkRegistry() -{ - theProvider=0; -}; - -void GSM3MobileNetworkRegistry::registerMobileNetworkProvider(GSM3MobileNetworkProvider* provider) -{ - theProvider=provider; -} - -GSM3MobileNetworkProvider* GSM3MobileNetworkRegistry::getMobileNetworkProvider() -{ - return theProvider; -} - -GSM3MobileNetworkRegistry theMobileNetworkRegistry; diff --git a/libraries/GSM/src/GSM3MobileNetworkRegistry.h b/libraries/GSM/src/GSM3MobileNetworkRegistry.h deleted file mode 100644 index de4397725f2..00000000000 --- a/libraries/GSM/src/GSM3MobileNetworkRegistry.h +++ /dev/null @@ -1,63 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3MOBILENETWORKREGISTRY_ -#define _GSM3MOBILENETWORKREGISTRY_ -#include - -class GSM3MobileNetworkRegistry -{ - private: - - GSM3MobileNetworkProvider* theProvider; // Network provider - - public: - - /** Constructor */ - GSM3MobileNetworkRegistry(); - - /** Register in mobile network provider - @param provider Provider - */ - void registerMobileNetworkProvider(GSM3MobileNetworkProvider* provider); - - /** Returns network provider object pointer - @return mobile network provider - */ - GSM3MobileNetworkProvider* getMobileNetworkProvider(); - -}; - -extern GSM3MobileNetworkRegistry theMobileNetworkRegistry; - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3MobileSMSProvider.cpp b/libraries/GSM/src/GSM3MobileSMSProvider.cpp deleted file mode 100644 index e5575ceb872..00000000000 --- a/libraries/GSM/src/GSM3MobileSMSProvider.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include - -GSM3MobileSMSProvider* theGSM3SMSProvider; diff --git a/libraries/GSM/src/GSM3MobileSMSProvider.h b/libraries/GSM/src/GSM3MobileSMSProvider.h deleted file mode 100644 index aa72711014b..00000000000 --- a/libraries/GSM/src/GSM3MobileSMSProvider.h +++ /dev/null @@ -1,91 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3MOBILESMSPROVIDER_ -#define _GSM3MOBILESMSPROVIDER_ - -class GSM3MobileSMSProvider -{ - public: - - /** Begin a SMS to send it - @param to Destination - @return error command if it exists - */ - virtual inline int beginSMS(const char* to){return 0;}; - - /** Write a SMS character by character - @param c Character - */ - virtual inline void writeSMS(const char c){}; - - /** End SMS - @return error command if it exists - */ - virtual inline int endSMS(){return 0;}; - - /** Check if SMS available and prepare it to be read - @return number of bytes in a received SMS - */ - virtual inline int availableSMS(){return 0;}; - - /** Read a byte but do not advance the buffer header (circular buffer) - @return character - */ - virtual inline int peekSMS(){return 0;}; - - /** Delete the SMS from Modem memory and proccess answer - */ - virtual inline void flushSMS(){return;}; - - /** Read sender number phone - @param number Buffer for save number phone - @param nlength Buffer length - @return 1 success, >1 error - */ - virtual inline int remoteSMSNumber(char* number, int nlength){return 0;}; - - /** Read one char for SMS buffer (advance circular buffer) - @return character - */ - virtual inline int readSMS(){return 0;}; - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - virtual int ready()=0; -}; - -extern GSM3MobileSMSProvider* theGSM3SMSProvider; - -#endif diff --git a/libraries/GSM/src/GSM3MobileServerProvider.cpp b/libraries/GSM/src/GSM3MobileServerProvider.cpp deleted file mode 100644 index d101bbab2a0..00000000000 --- a/libraries/GSM/src/GSM3MobileServerProvider.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ - -#include - -GSM3MobileServerProvider* theGSM3MobileServerProvider; - - diff --git a/libraries/GSM/src/GSM3MobileServerProvider.h b/libraries/GSM/src/GSM3MobileServerProvider.h deleted file mode 100644 index e4eb9c5030d..00000000000 --- a/libraries/GSM/src/GSM3MobileServerProvider.h +++ /dev/null @@ -1,95 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef __GSM3_MOBILESERVERPROVIDER__ -#define __GSM3_MOBILESERVERPROVIDER__ - - -#include -#include -#include - - -class GSM3MobileServerProvider -{ - /** Get socket status - @param s Socket - @return modem status (true if connected) - */ - virtual bool getSocketAsServerModemStatus(int s)=0; - - public: - - /** minSocketAsServer - @return socket - */ - virtual int minSocketAsServer()=0; - - /** maxSocketAsServer - @return socket - */ - virtual int maxSocketAsServer()=0; - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - virtual int ready()=0; - - /** Constructor */ - GSM3MobileServerProvider(){}; - - /** Connect server to TCP port - @param port TCP port - @return command error if exists - */ - virtual int connectTCPServer(int port)=0; - //virtual int getIP(char* LocalIP, int LocalIPlength)=0; - - /** Get new occupied socket as server - @return return -1 if no new socket has been occupied - */ - virtual int getNewOccupiedSocketAsServer()=0; - - /** Get socket status - @param socket Socket - @return socket status (true if connected) - */ - virtual bool getStatusSocketAsServer(uint8_t socket)=0; - - // virtual int disconnectTCP(bool client1Server0, int idsocket)=0; - -}; - -extern GSM3MobileServerProvider* theGSM3MobileServerProvider; - -#endif diff --git a/libraries/GSM/src/GSM3MobileServerService.cpp b/libraries/GSM/src/GSM3MobileServerService.cpp deleted file mode 100644 index bf76cfcbb63..00000000000 --- a/libraries/GSM/src/GSM3MobileServerService.cpp +++ /dev/null @@ -1,159 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include -#include - - -#define __TOUTSERVER__ 10000 -#define BUFFERSIZETWEET 100 - -#define GSM3MOBILESERVERSERVICE_SYNCH 0x01 // 1: TRUE, compatible with other clients 0: FALSE - -// While there is only a shield (ShieldV1) we will include it by default -#include -GSM3ShieldV1ServerProvider theShieldV1ServerProvider; - - -GSM3MobileServerService::GSM3MobileServerService(uint8_t port, bool synch) -{ - mySocket=0; - _port=port; - flags = 0; - - // If synchronous - if(synch) - flags |= GSM3MOBILESERVERSERVICE_SYNCH; -} - -// Returns 0 if last command is still executing -// 1 if success -// >1 if error -int GSM3MobileServerService::ready() -{ - return theGSM3MobileServerProvider->ready(); -} - -void GSM3MobileServerService::begin() -{ - if(theGSM3MobileServerProvider==0) - return; - theGSM3MobileServerProvider->connectTCPServer(_port); - - if(flags & GSM3MOBILESERVERSERVICE_SYNCH) - waitForAnswer(); -} - -GSM3MobileClientService GSM3MobileServerService::available(bool synch) -{ - int newSocket; - // In case we are debugging, we'll need to force a look at the buffer - ready(); - - newSocket=theGSM3MobileServerProvider->getNewOccupiedSocketAsServer(); - - // Instatiate new client. If we are synch, the client is synchronous/blocking - GSM3MobileClientService client((uint8_t)(newSocket), (flags & GSM3MOBILESERVERSERVICE_SYNCH)); - - return client; -} - -size_t GSM3MobileServerService::write(uint8_t c) -{ -// Adapt to the new, lean implementation -// theGSM3MobileServerProvider->writeSocket(c); - return 1; -} - -void GSM3MobileServerService::beginWrite() -{ -// Adapt to the new, lean implementation -// theGSM3MobileServerProvider->beginWriteSocket(local1Remote0, mySocket); -} - -size_t GSM3MobileServerService::write(const uint8_t* buf) -{ -// Adapt to the new, lean implementation -// theGSM3MobileServerProvider->writeSocket((const char*)(buf)); - return strlen((const char*)buf); -} - -size_t GSM3MobileServerService::write(const uint8_t* buf, size_t sz) -{ -// Adapt to the new, lean implementation -// theGSM3MobileServerProvider->writeSocket((const char*)(buf)); -} - -void GSM3MobileServerService::endWrite() -{ -// Adapt to the new, lean implementation -// theGSM3MobileServerProvider->endWriteSocket(); -} - -void GSM3MobileServerService::stop() -{ - - // Review, should be the server? - theGSM3MobileClientProvider->disconnectTCP(local1Remote0, mySocket); - if(flags & GSM3MOBILESERVERSERVICE_SYNCH) - waitForAnswer(); - theGSM3MobileClientProvider->releaseSocket(mySocket); - mySocket = -1; -} - - -/*int GSM3MobileServerService::getIP(char* LocalIP, int LocalIPlength) -{ - return theGSM3MobileServerProvider->getIP(LocalIP, LocalIPlength); -}*/ - -int GSM3MobileServerService::waitForAnswer() -{ - unsigned long m; - m=millis(); - int res; - - while(((millis()-m)< __TOUTSERVER__ )&&(ready()==0)) - delay(10); - - res=ready(); - - // If we get something different from a 1, we are having a problem - if(res!=1) - res=0; - - return res; -} - - diff --git a/libraries/GSM/src/GSM3MobileServerService.h b/libraries/GSM/src/GSM3MobileServerService.h deleted file mode 100644 index 12165eed1b1..00000000000 --- a/libraries/GSM/src/GSM3MobileServerService.h +++ /dev/null @@ -1,124 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3MOBILESERVERSERVICE_ -#define _GSM3MOBILESERVERSERVICE_ - -#include -#include -#include - -class GSM3MobileServerService : public Server -{ - private: - - uint8_t _port; // Port - uint8_t mySocket; // Actual socket - uint8_t flags; - bool local1Remote0; - - /** Internal utility, used in synchronous calls - @return operation result, 1 if success, 0 otherwise - */ - int waitForAnswer(); - - public: - - /** Constructor - @param port Port - @param synch True if the server acts synchronously - */ - GSM3MobileServerService(uint8_t port, bool synch=true); - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(); - - /** Initialize server - */ - void begin(); - - /** Check if there is an incoming client request - @param synch If true, the returned client is synchronous or - blocking. - @return Client if successful, else error - */ - GSM3MobileClientService available(bool synch=true); - - // Just to keep in line with Ethernet. - // Write to every open socket... - //void write(uint8_t); - //void write(const uint8_t *buf, size_t size); - - /** Begin write in socket - */ - void beginWrite(); - - /** Write character in socket - @param c Character - @return size - */ - size_t write(uint8_t c); - - /** Write buffer in socket - @param buf Buffer - @return size - */ - size_t write(const uint8_t *buf); - - /** Write buffer in socket with size - @param buf Buffer - @param sz Buffer size - @return size - */ - size_t write(const uint8_t *buf, size_t sz); - - /** End write in socket - */ - void endWrite(); - - /** Stop server - */ - void stop(); - - // we take this function out as IPAddress is complex to bring to - // version 1. - // inline int connect(IPAddress ip, uint16_t port){return 0;}; - // Returns 2 if there are no resources - //int getIP(char* LocalIP, int LocalIPlength); - -}; - - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3MobileVoiceProvider.cpp b/libraries/GSM/src/GSM3MobileVoiceProvider.cpp deleted file mode 100644 index b74cbfba788..00000000000 --- a/libraries/GSM/src/GSM3MobileVoiceProvider.cpp +++ /dev/null @@ -1,36 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include - -GSM3MobileVoiceProvider* theGSM3MobileVoiceProvider; diff --git a/libraries/GSM/src/GSM3MobileVoiceProvider.h b/libraries/GSM/src/GSM3MobileVoiceProvider.h deleted file mode 100644 index 2091a1ba7ca..00000000000 --- a/libraries/GSM/src/GSM3MobileVoiceProvider.h +++ /dev/null @@ -1,90 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3MOBILEVOICEPROVIDER_ -#define _GSM3MOBILEVOICEPROVIDER_ - -enum GSM3_voiceCall_st { IDLE_CALL, CALLING, RECEIVINGCALL, TALKING}; - -class GSM3MobileVoiceProvider -{ - public: - - /** Initialize the object relating it to the general infrastructure - @param - @return void - */ - virtual void initialize(){}; - - /** Launch a voice call - @param number Phone number to be called - @return If asynchronous, returns 0. If synchronous, 1 if success, other if error - */ - virtual int voiceCall(const char* number)=0; - - /** Answer a voice call - @return If asynchronous, returns 0. If synchronous, 1 if success, other if error - */ - virtual int answerCall()=0; - - /** Hang a voice call - @return If asynchronous, returns 0. If synchronous, 1 if success, other if error - */ - virtual int hangCall()=0; - - /** Retrieve phone number of caller - @param buffer Buffer for copy phone number - @param bufsize Buffer size - @return If asynchronous, returns 0. If synchronous, 1 if success, other if error - */ - virtual int retrieveCallingNumber(char* buffer, int bufsize)=0; - - /** Returns voice call status - @return voice call status - */ - virtual GSM3_voiceCall_st getvoiceCallStatus()=0; - - /** Set voice call status - @param status New status for voice call - */ - virtual void setvoiceCallStatus(GSM3_voiceCall_st status)=0; - - /** Get last command status - @return Returns 0 if last command is still executing, 1 success, >1 error - */ - virtual int ready()=0; -}; - -extern GSM3MobileVoiceProvider* theGSM3MobileVoiceProvider; - -#endif diff --git a/libraries/GSM/src/GSM3SMSService.cpp b/libraries/GSM/src/GSM3SMSService.cpp deleted file mode 100644 index 378dc2cc826..00000000000 --- a/libraries/GSM/src/GSM3SMSService.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include -#include - -// While there is only a shield (ShieldV1) we will include it by default -#include -GSM3ShieldV1SMSProvider theShieldV1SMSProvider; - -#define GSM3SMSSERVICE_SYNCH 0x01 // 1: synchronous 0: asynchronous -#define __TOUT__ 10000 - - -GSM3SMSService::GSM3SMSService(bool synch) -{ - if(synch) - flags |= GSM3SMSSERVICE_SYNCH; -} - -// Returns 0 if last command is still executing -// 1 if success -// >1 if error -int GSM3SMSService::ready() -{ - return theGSM3SMSProvider->ready(); -} - -int GSM3SMSService::beginSMS(const char *number) -{ - return waitForAnswerIfNeeded(theGSM3SMSProvider->beginSMS(number)); -}; - -int GSM3SMSService::endSMS() -{ - return waitForAnswerIfNeeded(theGSM3SMSProvider->endSMS()); -}; - -size_t GSM3SMSService::write(uint8_t c) -{ - theGSM3SMSProvider->writeSMS(c); - return 1; -} - -void GSM3SMSService::flush() -{ - theGSM3SMSProvider->flushSMS(); - waitForAnswerIfNeeded(1); -}; - -int GSM3SMSService::available() -{ - return waitForAnswerIfNeeded(theGSM3SMSProvider->availableSMS()); -}; - -int GSM3SMSService::remoteNumber(char* number, int nlength) -{ - return theGSM3SMSProvider->remoteSMSNumber(number, nlength); - -} - -int GSM3SMSService::read() -{ - return theGSM3SMSProvider->readSMS(); -}; -int GSM3SMSService::peek() -{ - return theGSM3SMSProvider->peekSMS(); -}; - -int GSM3SMSService::waitForAnswerIfNeeded(int returnvalue) -{ - // If synchronous - if(flags & GSM3SMSSERVICE_SYNCH ) - { - unsigned long m; - m=millis(); - // Wait for __TOUT__ - while(((millis()-m)< __TOUT__ )&&(ready()==0)) - delay(100); - // If everything was OK, return 1 - // else (timeout or error codes) return 0; - if(ready()==1) - return 1; - else - return 0; - } - // If not synchronous just kick ahead the coming result - return ready(); -} - - - - - diff --git a/libraries/GSM/src/GSM3SMSService.h b/libraries/GSM/src/GSM3SMSService.h deleted file mode 100644 index 878be114b25..00000000000 --- a/libraries/GSM/src/GSM3SMSService.h +++ /dev/null @@ -1,110 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3SMSSERVICE_ -#define _GSM3SMSSERVICE_ - -#include -#include - -class GSM3SMSService : public Stream -{ - private: - - uint8_t flags; - - /** Makes synchronous the functions, if needed - @param returnvalue Return value - @return returns 0 if last command is still executing, 1 success, >1 error - */ - int waitForAnswerIfNeeded(int returnvalue); - - public: - - /** Constructor - @param synch Determines sync mode - */ - GSM3SMSService(bool synch=true); - - /** Write a character in SMS message - @param c Character - @return size - */ - size_t write(uint8_t c); - - /** Begin a SMS to send it - @param to Destination - @return error command if it exists - */ - int beginSMS(const char* to); - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(); - - /** End SMS - @return error command if it exists - */ - int endSMS(); - - /** Check if SMS available and prepare it to be read - @return number of bytes in a received SMS - */ - int available(); - - /** Read sender number phone - @param number Buffer for save number phone - @param nlength Buffer length - @return 1 success, >1 error - */ - int remoteNumber(char* number, int nlength); - - /** Read one char for SMS buffer (advance circular buffer) - @return byte - */ - int read(); - - /** Read a byte but do not advance the buffer header (circular buffer) - @return byte - */ - int peek(); - - /** Delete the SMS from Modem memory and proccess answer - */ - void flush(); - -}; - - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1.cpp b/libraries/GSM/src/GSM3ShieldV1.cpp deleted file mode 100644 index d59487406c7..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1.cpp +++ /dev/null @@ -1,96 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include -#include - -#define __RESETPIN__ 7 -#define __TOUTLOCALCOMS__ 500 -#define __TOUTSHUTDOWN__ 5000 -#define __TOUTMODEMCONFIGURATION__ 5000//equivalent to 30000 because of time in interrupt routine. -#define __TOUTAT__ 1000 -#define __TOUTSMS__ 7000 -#define __TOUTCALL__ 15000 -#define __TOUTGPRS__ 10000 -#define __NCLIENTS_MAX__ 3 - -//Constructor. -GSM3ShieldV1::GSM3ShieldV1(bool db) -{ - theGSM3ShieldV1ModemCore.setCommandCounter(1); - socketsAccepted=0; - theGSM3ShieldV1ModemCore.registerUMProvider(this); - theProvider=this; -} - -//Response management. -void GSM3ShieldV1::manageResponse(byte from, byte to) -{ - switch(theGSM3ShieldV1ModemCore.getOngoingCommand()) - { - case NONE: - theGSM3ShieldV1ModemCore.gss.cb.deleteToTheEnd(from); - break; - - } -} - -//Function for 2 sec delay inside an interruption. -void GSM3ShieldV1::delayInsideInterrupt2seg() -{ - for (int k=0;k<40;k++) theGSM3ShieldV1ModemCore.gss.tunedDelay(50000); -} - -///////////////////////////////////////////////////////UNSOLICITED RESULT CODE (URC) FUNCTIONS/////////////////////////////////////////////////////////////////// - -//URC recognize. -bool GSM3ShieldV1::recognizeUnsolicitedEvent(byte oldTail) -{ - -int nlength; -char auxLocate [15]; - //POWER DOWN. - prepareAuxLocate(PSTR("POWER DOWN"), auxLocate); - if(theGSM3ShieldV1ModemCore.gss.cb.locate(auxLocate)) - { - theGSM3ShieldV1ModemCore.gss.cb.flush(); - return true; - } - - - return false; -} - - - diff --git a/libraries/GSM/src/GSM3ShieldV1.h b/libraries/GSM/src/GSM3ShieldV1.h deleted file mode 100644 index db52f7b0e0a..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1.h +++ /dev/null @@ -1,137 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef __GSM3_SHIELDV1__ -#define __GSM3_SHIELDV1__ - -#include -#include -#include -#include - - -class GSM3ShieldV1 : public GSM3MobileNetworkProvider, public GSM3ShieldV1BaseProvider -{ - // General code, for modem management - private: - - /** Delay inside an interrupt (2 seconds) - */ - void delayInsideInterrupt2seg(); - - // Code for SMS Service - private: - - - long commandMillis; - bool commandSent; - - const char* pinConfig; //PIN. - char* accessPoint; //APN. - char* userName; //User. - char* passw; //Password. - const char* remoteID; //Server. - - char* dataSocket; //Data socket. - int local_Port; //Local Port. - char* local_IP; //Local IP. - int local_IP_Length; //Local IP length. - - - int socketDataSize; //Size of socket data to be read. - int socketDataSizeWritten; //Number of socket data written in buffer not to overflow the buffer - - int socketsAccepted; //Status for remote clients accepted of closed. - - public: - - /** Constructor **/ - GSM3ShieldV1(bool debug=false); - - /** Manages modem response - @param from Initial byte of buffer - @param to Final byte of buffer - */ - void manageResponse(byte from, byte to); - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(){return GSM3ShieldV1BaseProvider::ready();}; - - /** Parse modem response - @param rsp Returns true if expected response exists - @param string1 Substring expected in response - @param string2 Second substring expected in response - @return true if parsed successful - */ - bool genericParse_rsp2(bool& rsp, char* string1, char* string2); - - /** Recognize URC - @param oldTail - @return true if successful - */ - bool recognizeUnsolicitedEvent(byte oldTail); - - /** Receive answer - @return true if successful - */ - bool answerReceived(); - - /** Receive socket - @param id_socket Socket ID - @return true if successful - */ - bool socketReceived(int id_socket); - - /** Update active ID sockets - @param active Active sockets - @param ID Id for update - */ - void update_activeIDsockets (bool active, int ID); - - /** Assign ID to socket - @param ID Id to assign to socket - @return true if successful - */ - bool assignIDsocket (int& ID); - - /** Close data socket - @return true if successful - */ - bool closedDataSocket(); //Flag closed current data socket. - - //bool writeIncomingCalls(char* bufferForCallerId) If isn't zero, doesn't wait calls -}; - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1AccessProvider.cpp b/libraries/GSM/src/GSM3ShieldV1AccessProvider.cpp deleted file mode 100644 index 19f9768bce4..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1AccessProvider.cpp +++ /dev/null @@ -1,356 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include -#include "GSM3IO.h" - -#define __TOUTSHUTDOWN__ 5000 -#define __TOUTMODEMCONFIGURATION__ 5000//equivalent to 30000 because of time in interrupt routine. -#define __TOUTAT__ 1000 - -const char _command_AT[] PROGMEM = "AT"; -const char _command_CGREG[] PROGMEM = "AT+CGREG?"; - - -GSM3ShieldV1AccessProvider::GSM3ShieldV1AccessProvider(bool debug) -{ - theGSM3ShieldV1ModemCore.setDebug(debug); - -} - -void GSM3ShieldV1AccessProvider::manageResponse(byte from, byte to) -{ - switch(theGSM3ShieldV1ModemCore.getOngoingCommand()) - { - case MODEMCONFIG: - ModemConfigurationContinue(); - break; - case ALIVETEST: - isModemAliveContinue(); - break; - } -} - -///////////////////////////////////////////////////////CONFIGURATION FUNCTIONS/////////////////////////////////////////////////////////////////// - -// Begin -// Restart or start the modem -// May be synchronous -GSM3_NetworkStatus_t GSM3ShieldV1AccessProvider::begin(char* pin, bool restart, bool synchronous) -{ - pinMode(__RESETPIN__, OUTPUT); - - #ifdef TTOPEN_V1 - pinMode(__POWERPIN__, OUTPUT); - digitalWrite(__POWERPIN__, HIGH); - #endif - - // If asked for modem restart, restart - if (restart) - HWrestart(); - else - HWstart(); - - theGSM3ShieldV1ModemCore.gss.begin(9600); - // Launch modem configuration commands - ModemConfiguration(pin); - // If synchronous, wait till ModemConfiguration is over - if(synchronous) - { - // if we shorten this delay, the command fails - while(ready()==0) - delay(1000); - } - return getStatus(); -} - -//HWrestart. -int GSM3ShieldV1AccessProvider::HWrestart() -{ - #ifdef TTOPEN_V1 - digitalWrite(__POWERPIN__, HIGH); - delay(1000); - #endif - - theGSM3ShieldV1ModemCore.setStatus(IDLE); - digitalWrite(__RESETPIN__, HIGH); - delay(12000); - digitalWrite(__RESETPIN__, LOW); - delay(1000); - return 1; //configandwait(pin); -} - -//HWrestart. -int GSM3ShieldV1AccessProvider::HWstart() -{ - - theGSM3ShieldV1ModemCore.setStatus(IDLE); - digitalWrite(__RESETPIN__, HIGH); - delay(2000); - digitalWrite(__RESETPIN__, LOW); - //delay(1000); - - return 1; //configandwait(pin); -} - -//Initial configuration main function. -int GSM3ShieldV1AccessProvider::ModemConfiguration(char* pin) -{ - theGSM3ShieldV1ModemCore.setPhoneNumber(pin); - theGSM3ShieldV1ModemCore.openCommand(this,MODEMCONFIG); - theGSM3ShieldV1ModemCore.setStatus(CONNECTING); - ModemConfigurationContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -//Initial configuration continue function. -void GSM3ShieldV1AccessProvider::ModemConfigurationContinue() -{ - bool resp; - - // 1: Send AT - // 2: Wait AT OK and SetPin or CGREG - // 3: Wait Pin OK and CGREG - // 4: Wait CGREG and Flow SW control or CGREG - // 5: Wait IFC OK and SMS Text Mode - // 6: Wait SMS text Mode OK and Calling line identification - // 7: Wait Calling Line Id OK and Echo off - // 8: Wait for OK and COLP command for connecting line identification. - // 9: Wait for OK. - int ct=theGSM3ShieldV1ModemCore.getCommandCounter(); - if(ct==1) - { - // Launch AT - theGSM3ShieldV1ModemCore.setCommandCounter(2); - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_AT); - } - else if(ct==2) - { - // Wait for AT - OK. - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - if(resp) - { - // OK received - if(theGSM3ShieldV1ModemCore.getPhoneNumber() && (theGSM3ShieldV1ModemCore.getPhoneNumber()[0]!=0)) - { - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+CPIN="), false); - theGSM3ShieldV1ModemCore.setCommandCounter(3); - theGSM3ShieldV1ModemCore.genericCommand_rqc(theGSM3ShieldV1ModemCore.getPhoneNumber()); - } - else - { - //DEBUG - //Serial.println("AT+CGREG?"); - theGSM3ShieldV1ModemCore.setCommandCounter(4); - theGSM3ShieldV1ModemCore.takeMilliseconds(); - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_CGREG); - } - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - } - else if(ct==3) - { - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - if(resp) - { - theGSM3ShieldV1ModemCore.setCommandCounter(4); - theGSM3ShieldV1ModemCore.takeMilliseconds(); - theGSM3ShieldV1ModemCore.delayInsideInterrupt(2000); - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_CGREG); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - } - else if(ct==4) - { - char auxLocate1 [12]; - char auxLocate2 [12]; - prepareAuxLocate(PSTR("+CGREG: 0,1"), auxLocate1); - prepareAuxLocate(PSTR("+CGREG: 0,5"), auxLocate2); - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp, auxLocate1, auxLocate2)) - { - if(resp) - { - theGSM3ShieldV1ModemCore.setCommandCounter(5); - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+IFC=1,1")); - } - else - { - // If not, launch command again - if(theGSM3ShieldV1ModemCore.takeMilliseconds() > __TOUTMODEMCONFIGURATION__) - { - theGSM3ShieldV1ModemCore.closeCommand(3); - } - else - { - theGSM3ShieldV1ModemCore.delayInsideInterrupt(2000); - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_CGREG); - } - } - } - } - else if(ct==5) - { - // 5: Wait IFC OK - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - //Delay for SW flow control being active. - theGSM3ShieldV1ModemCore.delayInsideInterrupt(2000); - // 9: SMS Text Mode - theGSM3ShieldV1ModemCore.setCommandCounter(6); - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+CMGF=1")); - } - } - else if(ct==6) - { - // 6: Wait SMS text Mode OK - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - //Calling line identification - theGSM3ShieldV1ModemCore.setCommandCounter(7); - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+CLIP=1")); - } - } - else if(ct==7) - { - // 7: Wait Calling Line Id OK - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - // Echo off - theGSM3ShieldV1ModemCore.setCommandCounter(8); - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("ATE0")); - } - } - else if(ct==8) - { - // 8: Wait ATEO OK, send COLP - // In Arduino Mega, attention, take away the COLP step - // It looks as we can only have 8 steps - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - theGSM3ShieldV1ModemCore.setCommandCounter(9); - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+COLP=1")); - } - } - else if(ct==9) - { - // 9: Wait ATCOLP OK - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - if (resp) - { - theGSM3ShieldV1ModemCore.setStatus(GSM_READY); - theGSM3ShieldV1ModemCore.closeCommand(1); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - } -} - -//Alive Test main function. -int GSM3ShieldV1AccessProvider::isAccessAlive() -{ - theGSM3ShieldV1ModemCore.setCommandError(0); - theGSM3ShieldV1ModemCore.setCommandCounter(1); - theGSM3ShieldV1ModemCore.openCommand(this,ALIVETEST); - isModemAliveContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -//Alive Test continue function. -void GSM3ShieldV1AccessProvider::isModemAliveContinue() -{ -bool rsp; -switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_AT); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(rsp)) - { - if (rsp) theGSM3ShieldV1ModemCore.closeCommand(1); - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - } -} - -//Shutdown. -bool GSM3ShieldV1AccessProvider::shutdown() -{ - unsigned long m; - bool resp; - char auxLocate [18]; - - // It makes no sense to have an asynchronous shutdown - pinMode(__RESETPIN__, OUTPUT); - digitalWrite(__RESETPIN__, HIGH); - delay(1500); - digitalWrite(__RESETPIN__, LOW); - theGSM3ShieldV1ModemCore.setStatus(IDLE); - theGSM3ShieldV1ModemCore.gss.close(); - - m=millis(); - prepareAuxLocate(PSTR("POWER DOWN"), auxLocate); - while((millis()-m) < __TOUTSHUTDOWN__) - { - delay(1); - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp, auxLocate)) - return resp; - } - return false; -} - -//Secure shutdown. -bool GSM3ShieldV1AccessProvider::secureShutdown() -{ - // It makes no sense to have an asynchronous shutdown - pinMode(__RESETPIN__, OUTPUT); - digitalWrite(__RESETPIN__, HIGH); - delay(900); - digitalWrite(__RESETPIN__, LOW); - theGSM3ShieldV1ModemCore.setStatus(OFF); - theGSM3ShieldV1ModemCore.gss.close(); - -#ifdef TTOPEN_V1 - _delay_ms(12000); - digitalWrite(__POWERPIN__, LOW); -#endif - - return true; -} diff --git a/libraries/GSM/src/GSM3ShieldV1AccessProvider.h b/libraries/GSM/src/GSM3ShieldV1AccessProvider.h deleted file mode 100644 index 638fb5f1767..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1AccessProvider.h +++ /dev/null @@ -1,121 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3SHIELDV1ACCESSPROVIDER_ -#define _GSM3SHIELDV1ACCESSPROVIDER_ - -#include -#include -#include - -class GSM3ShieldV1AccessProvider : public GSM3MobileAccessProvider, public GSM3ShieldV1BaseProvider -{ - private: - - /** Initialize main modem configuration - @param pin PIN code - @return command error if exists - */ - int ModemConfiguration(char* pin); - - /** Continue to modem configuration function - */ - void ModemConfigurationContinue(); - - /** Continue to check if modem alive function - */ - void isModemAliveContinue(); - - - public: - - /** Constructor - @param debug Determines debug mode - */ - - GSM3ShieldV1AccessProvider(bool debug=false); - - /** Start the GSM/GPRS modem, attaching to the GSM network - @param pin SIM PIN number (4 digits in a string, example: "1234"). If - NULL the SIM has no configured PIN. - @param restart Restart the modem. Default is TRUE. The modem receives - a signal through the Ctrl/D7 pin. If it is shut down, it will - start-up. If it is running, it will restart. Takes up to 10 - seconds - @param synchronous If TRUE the call only returns after the Start is complete - or fails. If FALSE the call will return inmediately. You have - to call repeatedly ready() until you get a result. Default is TRUE. - @return If synchronous, GSM3_NetworkStatus_t. If asynchronous, returns 0. - */ - GSM3_NetworkStatus_t begin(char* pin=0,bool restart=true, bool synchronous=true); - - /** Check network access status - @return 1 if Alive, 0 if down - */ - int isAccessAlive(); - - /** Shutdown the modem (power off really) - @return true if successful - */ - bool shutdown(); - - /** Secure shutdown the modem (power off really) - @return true if successful - */ - bool secureShutdown(); - - /** Returns 0 if last command is still executing - @return 1 if success, >1 if error - */ - int ready(){return GSM3ShieldV1BaseProvider::ready();}; - - /** Returns modem status - @return modem network status - */ - inline GSM3_NetworkStatus_t getStatus(){return theGSM3ShieldV1ModemCore.getStatus();}; - - void manageResponse(byte from, byte to); - - /** Restart the modem (will shut down if running) - @return 1 if success, >1 if error - */ - int HWrestart(); - - /** Start the modem (will not shut down if running) - @return 1 if success, >1 if error - */ - int HWstart(); - -}; - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1BandManagement.cpp b/libraries/GSM/src/GSM3ShieldV1BandManagement.cpp deleted file mode 100644 index 48132dfb103..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1BandManagement.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include - -GSM3ShieldV1BandManagement::GSM3ShieldV1BandManagement(bool trace): modem(trace) -{ - quectelStrings[UNDEFINED]=""; - quectelStrings[EGSM_MODE]="\"EGSM_MODE\""; - quectelStrings[DCS_MODE]="\"DCS_MODE\""; - quectelStrings[PCS_MODE]="\"PCS_MODE\""; - quectelStrings[EGSM_DCS_MODE]="\"EGSM_DCS_MODE\""; - quectelStrings[GSM850_PCS_MODE]="\"GSM850_PCS_MODE\""; - quectelStrings[GSM850_EGSM_DCS_PCS_MODE]="\"GSM850_EGSM_DCS_PCS_MODE\""; -} - -GSM3_NetworkStatus_t GSM3ShieldV1BandManagement::begin() -{ - // check modem response - modem.begin(); - - // reset hardware - modem.restartModem(); - - return IDLE; -} - -String GSM3ShieldV1BandManagement::getBand() -{ - String modemResponse=modem.writeModemCommand("AT+QBAND?", 2000); - - for(GSM3GSMBand i=GSM850_EGSM_DCS_PCS_MODE;i>UNDEFINED;i=(GSM3GSMBand)((int)i-1)) - { - if(modemResponse.indexOf(quectelStrings[i])>=0) - return quectelStrings[i]; - } - - Serial.print("Unrecognized modem answer:"); - Serial.println(modemResponse); - - return ""; -} - -bool GSM3ShieldV1BandManagement::setBand(String band) -{ - String command; - String modemResponse; - bool found=false; - - command="AT+QBAND="; - for(GSM3GSMBand i=EGSM_MODE;((i<=GSM850_EGSM_DCS_PCS_MODE)&&(!found));i=(GSM3GSMBand)((int)i+1)) - { - String aux=quectelStrings[i]; - if(aux.indexOf(band)>=0) - { - command+=aux; - found=true; - } - } - - if(!found) - return false; - // Quad-band takes an awful lot of time - modemResponse=modem.writeModemCommand(command, 15000); - - if(modemResponse.indexOf("QBAND")>=0) - return true; - else - return false; -} diff --git a/libraries/GSM/src/GSM3ShieldV1BandManagement.h b/libraries/GSM/src/GSM3ShieldV1BandManagement.h deleted file mode 100644 index 919d4ad2398..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1BandManagement.h +++ /dev/null @@ -1,96 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef __GSM3SHIELDV1BANDMANAGEMENT__ -#define __GSM3SHIELDV1BANDMANAGEMENT__ - -// This class executes band management functions for the ShieldV1 -#include - -#define NUMBEROFBANDS 7 -#define GSM_MODE_UNDEFINED "UNDEFINED" -#define GSM_MODE_EGSM "EGSM_MODE" -#define GSM_MODE_DCS "DCS_MODE" -#define GSM_MODE_PCS "PCS_MODE" -#define GSM_MODE_EGSM_DCS "EGSM_DCS_MODE" -#define GSM_MODE_GSM850_PCS "GSM850_PCS_MODE" -#define GSM_MODE_GSM850_EGSM_DCS_PCS "GSM850_EGSM_DCS_PCS_MODE" - -typedef enum GSM3GSMBand {UNDEFINED, EGSM_MODE, DCS_MODE, PCS_MODE, EGSM_DCS_MODE, GSM850_PCS_MODE, GSM850_EGSM_DCS_PCS_MODE}; - -// -// These are the bands and scopes: -// -// E-GSM(900) -// DCS(1800) -// PCS(1900) -// E-GSM(900)+DCS(1800) ex: Europe -// GSM(850)+PCS(1900) Ex: USA, South Am. -// GSM(850)+E-GSM(900)+DCS(1800)+PCS(1900) - -class GSM3ShieldV1BandManagement -{ - private: - - GSM3ShieldV1DirectModemProvider modem; // Direct access to modem - - char* quectelStrings[NUMBEROFBANDS];// = {"\"EGSM_MODE\"", "\"DCS_MODE\"", "\"PCS_MODE\"", - //"\"EGSM_DCS_MODE\"", "\"GSM850_PCS_MODE\"", - //"\"GSM850_EGSM_DCS_PCS_MODE\""}; - - - public: - - /** Constructor - @param trace If true, dumps all AT dialogue to Serial - */ - GSM3ShieldV1BandManagement(bool trace=false); - - /** Forces modem hardware restart, so we begin from scratch - @return always returns IDLE status - */ - GSM3_NetworkStatus_t begin(); - - /** Get current modem work band - @return current modem work band - */ - String getBand(); - - /** Changes the modem operating band - @param band Desired new band - @return true if success, false otherwise - */ - bool setBand(String band); - -}; -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1BaseProvider.cpp b/libraries/GSM/src/GSM3ShieldV1BaseProvider.cpp deleted file mode 100644 index 435a077c5df..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1BaseProvider.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include -#include - -// Returns 0 if last command is still executing -// 1 if success -// >1 if error -int GSM3ShieldV1BaseProvider::ready() -{ - theGSM3ShieldV1ModemCore.manageReceivedData(); - - return theGSM3ShieldV1ModemCore.getCommandError(); -}; - -void GSM3ShieldV1BaseProvider::prepareAuxLocate(PGM_P str, char auxLocate[]) -{ - int i=0; - char c; - - do - { - c=pgm_read_byte_near(str + i); - auxLocate[i]=c; - i++; - } while (c!=0); -} - diff --git a/libraries/GSM/src/GSM3ShieldV1BaseProvider.h b/libraries/GSM/src/GSM3ShieldV1BaseProvider.h deleted file mode 100644 index 8f03947cd18..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1BaseProvider.h +++ /dev/null @@ -1,73 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3SHIELDV1BASEPROVIDER_ -#define _GSM3SHIELDV1BASEPROVIDER_ - -#include - -enum GSM3_commandType_e { XON, NONE, MODEMCONFIG, ALIVETEST, BEGINSMS, ENDSMS, AVAILABLESMS, FLUSHSMS, - VOICECALL, ANSWERCALL, HANGCALL, RETRIEVECALLINGNUMBER, - ATTACHGPRS, DETACHGPRS, CONNECTTCPCLIENT, DISCONNECTTCP, BEGINWRITESOCKET, ENDWRITESOCKET, - AVAILABLESOCKET, FLUSHSOCKET, CONNECTSERVER, GETIP, GETCONNECTSTATUS, GETLOCATION, GETICCID}; - -class GSM3ShieldV1BaseProvider -{ - public: - - /** Get last command status - @return Returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(); - - /** This function locates strings from PROGMEM in the buffer - @param str PROGMEN - @param auxLocate Buffer where to locate strings - */ - void prepareAuxLocate(PGM_P str, char auxLocate[]); - - /** Manages modem response - @param from Initial byte of buffer - @param to Final byte of buffer - */ - virtual void manageResponse(byte from, byte to); - - /** Recognize URC - @param from - @return true if successful (default: false) - */ - virtual bool recognizeUnsolicitedEvent(byte from){return false;}; - -}; - -#endif diff --git a/libraries/GSM/src/GSM3ShieldV1CellManagement.cpp b/libraries/GSM/src/GSM3ShieldV1CellManagement.cpp deleted file mode 100644 index 4c69224040b..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1CellManagement.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include - -GSM3ShieldV1CellManagement::GSM3ShieldV1CellManagement() -{ -} - -bool GSM3ShieldV1CellManagement::parseQCCID_available(bool& rsp) -{ - char c; - bool iccidFound = false; - int i = 0; - - while(((c = theGSM3ShieldV1ModemCore.theBuffer().read()) != 0) & (i < 19)) - { - if((c < 58) & (c > 47)) - iccidFound = true; - - if(iccidFound) - { - bufferICCID[i] = c; - i++; - } - } - bufferICCID[i]=0; - - return true; -} - -bool GSM3ShieldV1CellManagement::parseQENG_available(bool& rsp) -{ - char c; - char location[50] = ""; - int i = 0; - - if (!(theGSM3ShieldV1ModemCore.theBuffer().chopUntil("+QENG: ", true))) - rsp = false; - else - rsp = true; - - if (!(theGSM3ShieldV1ModemCore.theBuffer().chopUntil("+QENG:", true))) - rsp = false; - else - rsp = true; - - while(((c = theGSM3ShieldV1ModemCore.theBuffer().read()) != 0) & (i < 50)) - { - location[i] = c; - i++; - } - location[i]=0; - - char* res_tok = strtok(location, ","); - res_tok=strtok(NULL, ","); - strcpy(countryCode, res_tok); - res_tok=strtok(NULL, ","); - strcpy(networkCode, res_tok); - res_tok=strtok(NULL, ","); - strcpy(locationArea, res_tok); - res_tok=strtok(NULL, ","); - strcpy(cellId, res_tok); - - return true; -} - -int GSM3ShieldV1CellManagement::getLocation(char *country, char *network, char *area, char *cell) -{ - if((theGSM3ShieldV1ModemCore.getStatus() != GSM_READY) && (theGSM3ShieldV1ModemCore.getStatus() != GPRS_READY)) - return 2; - - countryCode=country; - networkCode=network; - locationArea=area; - cellId=cell; - - theGSM3ShieldV1ModemCore.openCommand(this,GETLOCATION); - getLocationContinue(); - - unsigned long timeOut = millis(); - while(((millis() - timeOut) < 5000) & (ready() == 0)); - - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -void GSM3ShieldV1CellManagement::getLocationContinue() -{ - bool resp; - - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - theGSM3ShieldV1ModemCore.gss.tunedDelay(3000); - delay(3000); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QENG=1"), false); - theGSM3ShieldV1ModemCore.print("\r"); - break; - case 2: - if (theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - theGSM3ShieldV1ModemCore.gss.tunedDelay(3000); - delay(3000); - theGSM3ShieldV1ModemCore.setCommandCounter(3); - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QENG?"), false); - theGSM3ShieldV1ModemCore.print("\r"); - } - else theGSM3ShieldV1ModemCore.closeCommand(1); - break; - case 3: - if (resp) - { - parseQENG_available(resp); - theGSM3ShieldV1ModemCore.closeCommand(3); - } - else theGSM3ShieldV1ModemCore.closeCommand(2); - break; - } -} - -int GSM3ShieldV1CellManagement::getICCID(char *iccid) -{ - if((theGSM3ShieldV1ModemCore.getStatus() != GSM_READY) && (theGSM3ShieldV1ModemCore.getStatus() != GPRS_READY)) - return 2; - - bufferICCID=iccid; - theGSM3ShieldV1ModemCore.openCommand(this,GETICCID); - getICCIDContinue(); - - unsigned long timeOut = millis(); - while(((millis() - timeOut) < 5000) & (ready() == 0)); - - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -void GSM3ShieldV1CellManagement::getICCIDContinue() -{ - bool resp; - - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - theGSM3ShieldV1ModemCore.setCommandCounter(2); - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QCCID"), false); - theGSM3ShieldV1ModemCore.print("\r"); - break; - case 2: - if (theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - parseQCCID_available(resp); - theGSM3ShieldV1ModemCore.closeCommand(2); - } - else theGSM3ShieldV1ModemCore.closeCommand(1); - break; - } -} - -void GSM3ShieldV1CellManagement::manageResponse(byte from, byte to) -{ - switch(theGSM3ShieldV1ModemCore.getOngoingCommand()) - { - case NONE: - theGSM3ShieldV1ModemCore.gss.cb.deleteToTheEnd(from); - break; - case GETLOCATION: - getLocationContinue(); - break; - case GETICCID: - getICCIDContinue(); - break; - } -} diff --git a/libraries/GSM/src/GSM3ShieldV1CellManagement.h b/libraries/GSM/src/GSM3ShieldV1CellManagement.h deleted file mode 100644 index 78307da3b08..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1CellManagement.h +++ /dev/null @@ -1,92 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef __GSM3_SHIELDV1CELLMANAGEMENT__ -#define __GSM3_SHIELDV1CELLMANAGEMENT__ - -#include -#include -#include - -class GSM3ShieldV1CellManagement : public GSM3MobileCellManagement, public GSM3ShieldV1BaseProvider -{ - public: - - /** Constructor - */ - GSM3ShieldV1CellManagement(); - - /** Manages modem response - @param from Initial byte of buffer - @param to Final byte of buffer - */ - void manageResponse(byte from, byte to); - - /** getLocation - @return current cell location - */ - int getLocation(char *country, char *network, char *area, char *cell); - - /** getICCID - */ - int getICCID(char *iccid); - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(){return GSM3ShieldV1BaseProvider::ready();}; - - private: - - char *countryCode; - char *networkCode; - char *locationArea; - char *cellId; - - char *bufferICCID; - - /** Continue to getLocation function - */ - void getLocationContinue(); - - /** Continue to getICCID function - */ - void getICCIDContinue(); - - bool parseQENG_available(bool& rsp); - - bool parseQCCID_available(bool& rsp); - -}; - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1ClientProvider.cpp b/libraries/GSM/src/GSM3ShieldV1ClientProvider.cpp deleted file mode 100644 index 6540ef1b2f6..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1ClientProvider.cpp +++ /dev/null @@ -1,327 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include - -GSM3ShieldV1ClientProvider::GSM3ShieldV1ClientProvider() -{ - theGSM3MobileClientProvider=this; -}; - -//Response management. -void GSM3ShieldV1ClientProvider::manageResponse(byte from, byte to) -{ - switch(theGSM3ShieldV1ModemCore.getOngoingCommand()) - { - case NONE: - theGSM3ShieldV1ModemCore.gss.cb.deleteToTheEnd(from); - break; - case CONNECTTCPCLIENT: - connectTCPClientContinue(); - break; - case FLUSHSOCKET: - flushSocketContinue(); - break; - } -} - -//Connect TCP main function. -int GSM3ShieldV1ClientProvider::connectTCPClient(const char* server, int port, int id_socket) -{ - theGSM3ShieldV1ModemCore.setPort(port); - idSocket = id_socket; - - theGSM3ShieldV1ModemCore.setPhoneNumber((char*)server); - theGSM3ShieldV1ModemCore.openCommand(this,CONNECTTCPCLIENT); - theGSM3ShieldV1ModemCore.registerUMProvider(this); - connectTCPClientContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -int GSM3ShieldV1ClientProvider::connectTCPClient(IPAddress add, int port, int id_socket) -{ - remoteIP=add; - theGSM3ShieldV1ModemCore.setPhoneNumber(0); - return connectTCPClient(0, port, id_socket); -} - -//Connect TCP continue function. -void GSM3ShieldV1ClientProvider::connectTCPClientContinue() -{ - bool resp; - // 0: Dot or DNS notation activation - // 1: Disable SW flow control - // 2: Waiting for IFC OK - // 3: Start-up TCP connection "AT+QIOPEN" - // 4: Wait for connection OK - // 5: Wait for CONNECT - - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QIDNSIP="), false); - if ((theGSM3ShieldV1ModemCore.getPhoneNumber()!=0)&& - ((*(theGSM3ShieldV1ModemCore.getPhoneNumber())<'0')||((*(theGSM3ShieldV1ModemCore.getPhoneNumber())>'9')))) - { - theGSM3ShieldV1ModemCore.print('1'); - theGSM3ShieldV1ModemCore.print('\r'); - } - else - { - theGSM3ShieldV1ModemCore.print('0'); - theGSM3ShieldV1ModemCore.print('\r'); - } - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - //Response received - if(resp) - { - // AT+QIOPEN - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QIOPEN="),false); - theGSM3ShieldV1ModemCore.print("\"TCP\",\""); - if(theGSM3ShieldV1ModemCore.getPhoneNumber()!=0) - { - theGSM3ShieldV1ModemCore.print(theGSM3ShieldV1ModemCore.getPhoneNumber()); - } - else - { - remoteIP.printTo(theGSM3ShieldV1ModemCore); - } - theGSM3ShieldV1ModemCore.print('"'); - theGSM3ShieldV1ModemCore.print(','); - theGSM3ShieldV1ModemCore.print(theGSM3ShieldV1ModemCore.getPort()); - theGSM3ShieldV1ModemCore.print('\r'); - theGSM3ShieldV1ModemCore.setCommandCounter(3); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - - case 3: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - // Response received - if(resp) - { - // OK Received - // Great. Go for the next step - theGSM3ShieldV1ModemCore.setCommandCounter(4); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - case 4: - char auxLocate [12]; - prepareAuxLocate(PSTR("CONNECT\r\n"), auxLocate); - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp,auxLocate)) - { - // Response received - if(resp) - { - // Received CONNECT OK - // Great. We're done - theGSM3ShieldV1ModemCore.setStatus(TRANSPARENT_CONNECTED); - theGSM3ShieldV1ModemCore.theBuffer().chopUntil(auxLocate, true); - theGSM3ShieldV1ModemCore.closeCommand(1); - } - else - theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - - } -} - -//Disconnect TCP main function. -int GSM3ShieldV1ClientProvider::disconnectTCP(bool client1Server0, int id_socket) -{ - // id Socket does not really mean anything, in this case we have - // only one socket running - theGSM3ShieldV1ModemCore.openCommand(this,DISCONNECTTCP); - - // If we are not closed, launch the command -//[ZZ] if(theGSM3ShieldV1ModemCore.getStatus()==TRANSPARENT_CONNECTED) -// { - delay(1000); - theGSM3ShieldV1ModemCore.print("+++"); - delay(1000); - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QICLOSE")); - theGSM3ShieldV1ModemCore.setStatus(GPRS_READY); -// } - // Looks like it runs everytime, so we simply flush to death and go on - do - { - // Empty the local buffer, and tell the modem to XON - // If meanwhile we receive a DISCONNECT we should detect it as URC. - theGSM3ShieldV1ModemCore.theBuffer().flush(); - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - // Give some time for the buffer to refill - delay(100); - theGSM3ShieldV1ModemCore.closeCommand(1); - }while(theGSM3ShieldV1ModemCore.theBuffer().storedBytes()>0); - - theGSM3ShieldV1ModemCore.unRegisterUMProvider(this); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - - -//Write socket first chain main function. -void GSM3ShieldV1ClientProvider::beginWriteSocket(bool client1Server0, int id_socket) -{ -} - - -//Write socket next chain function. -void GSM3ShieldV1ClientProvider::writeSocket(const char* buf) -{ - if(theGSM3ShieldV1ModemCore.getStatus()==TRANSPARENT_CONNECTED) - theGSM3ShieldV1ModemCore.print(buf); -} - -//Write socket character function. -void GSM3ShieldV1ClientProvider::writeSocket(uint8_t c) -{ - if(theGSM3ShieldV1ModemCore.getStatus()==TRANSPARENT_CONNECTED) - theGSM3ShieldV1ModemCore.print((char)c); -} - -//Write socket last chain main function. -void GSM3ShieldV1ClientProvider::endWriteSocket() -{ -} - - -//Available socket main function. -int GSM3ShieldV1ClientProvider::availableSocket(bool client1Server0, int id_socket) -{ - - if(!(theGSM3ShieldV1ModemCore.getStatus()==TRANSPARENT_CONNECTED)) - theGSM3ShieldV1ModemCore.closeCommand(4); - - if(theGSM3ShieldV1ModemCore.theBuffer().storedBytes()) - theGSM3ShieldV1ModemCore.closeCommand(1); - else - theGSM3ShieldV1ModemCore.closeCommand(4); - - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -int GSM3ShieldV1ClientProvider::readSocket() -{ - char charSocket; - - if(theGSM3ShieldV1ModemCore.theBuffer().availableBytes()==0) - { - return 0; - } - - charSocket = theGSM3ShieldV1ModemCore.theBuffer().read(); - - if(theGSM3ShieldV1ModemCore.theBuffer().availableBytes()==100) - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - - return charSocket; - -} - -//Read socket main function. -int GSM3ShieldV1ClientProvider::peekSocket() -{ - return theGSM3ShieldV1ModemCore.theBuffer().peek(0); -} - - -//Flush SMS main function. -void GSM3ShieldV1ClientProvider::flushSocket() -{ - theGSM3ShieldV1ModemCore.openCommand(this,FLUSHSOCKET); - - flushSocketContinue(); -} - -//Send SMS continue function. -void GSM3ShieldV1ClientProvider::flushSocketContinue() -{ - // If we have incomed data - if(theGSM3ShieldV1ModemCore.theBuffer().storedBytes()>0) - { - // Empty the local buffer, and tell the modem to XON - // If meanwhile we receive a DISCONNECT we should detect it as URC. - theGSM3ShieldV1ModemCore.theBuffer().flush(); - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - } - else - { - //We're done - theGSM3ShieldV1ModemCore.closeCommand(1); - } -} - -// URC recognize. -// Yes, we recognize "closes" in client mode -bool GSM3ShieldV1ClientProvider::recognizeUnsolicitedEvent(byte oldTail) -{ - char auxLocate [12]; - prepareAuxLocate(PSTR("CLOSED"), auxLocate); - - if((theGSM3ShieldV1ModemCore.getStatus()==TRANSPARENT_CONNECTED) & theGSM3ShieldV1ModemCore.theBuffer().chopUntil(auxLocate, false, false)) - { - theGSM3ShieldV1ModemCore.setStatus(GPRS_READY); - theGSM3ShieldV1ModemCore.unRegisterUMProvider(this); - return true; - } - - return false; -} - -int GSM3ShieldV1ClientProvider::getSocket(int socket) -{ - return 0; -} - -void GSM3ShieldV1ClientProvider::releaseSocket(int socket) -{ - -} - -bool GSM3ShieldV1ClientProvider::getStatusSocketClient(uint8_t socket) -{ - return (theGSM3ShieldV1ModemCore.getStatus()==TRANSPARENT_CONNECTED); - -}; - - - diff --git a/libraries/GSM/src/GSM3ShieldV1ClientProvider.h b/libraries/GSM/src/GSM3ShieldV1ClientProvider.h deleted file mode 100644 index fa2f8b58a8f..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1ClientProvider.h +++ /dev/null @@ -1,181 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef __GSM3_SHIELDV1CLIENTPROVIDER__ -#define __GSM3_SHIELDV1CLIENTPROVIDER__ - -#include -#include - -class GSM3ShieldV1ClientProvider : public GSM3MobileClientProvider, public GSM3ShieldV1BaseProvider -{ - private: - - int remotePort; //Current operation remote port. - IPAddress remoteIP; // Remote IP address - int idSocket; // Remote ID socket. - - - /** Continue to connect TCP client function - */ - void connectTCPClientContinue(); - - /** Continue to available socket function - */ - void availableSocketContinue(); - - /** Continue to flush socket function - */ - void flushSocketContinue(); - - public: - - /** Constructor */ - GSM3ShieldV1ClientProvider(); - - /** minSocket - @return 0 - */ - int minSocket(){return 0;}; - - /** maxSocket - @return 0 - */ - int maxSocket(){return 0;}; - - /** Connect to a remote TCP server - @param server String with IP or server name - @param port Remote port number - @param id_socket Local socket number - @return 0 if command running, 1 if success, otherwise error - */ - int connectTCPClient(const char* server, int port, int id_socket); - - /** Connect to a remote TCP server - @param add Remote IP address - @param port Remote port number - @param id_socket Local socket number - @return 0 if command running, 1 if success, otherwise error - */ - int connectTCPClient(IPAddress add, int port, int id_socket); - - /** Begin writing through a socket - @param client1Server0 1 if modem acts as client, 0 if acts as server - @param id_socket Local socket number - @return 0 if command running, 1 if success, otherwise error - */ - void beginWriteSocket(bool client1Server0, int id_socket); - - /** Write through a socket. MUST go after beginWriteSocket() - @param buf characters to be written (final 0 will not be written) - */ - void writeSocket(const char* buf); - - /** Write through a socket. MUST go after beginWriteSocket() - @param c character to be written - */ - void writeSocket(uint8_t c); - - /** Finish current writing - */ - void endWriteSocket(); - - /** Check if there are data to be read in socket. - @param client1Server0 1 if modem acts as client, 0 if acts as server - @param id_socket Local socket number - @return 0 if command running, 1 if there are data available, 4 if no data, otherwise error - */ - int availableSocket(bool client, int id_socket); // With "available" and "readSocket" ask the modem for 1500 bytes. - - /** Read data (get a character) available in socket - @return character - */ - int readSocket(); //If Read() gets to the end of the QIRD response, execute again QIRD SYNCHRONOUSLY - - /** Flush socket - */ - void flushSocket(); - - /** Get a character but will not advance the buffer head - @return character - */ - int peekSocket(); - - /** Close a socket - @param client1Server0 1 if modem acts as client, 0 if acts as server - @param id_socket Socket - @return 0 if command running, 1 if success, otherwise error - */ - int disconnectTCP(bool client1Server0, int id_socket); - - /** Recognize unsolicited event - @param oldTail - @return true if successful - */ - bool recognizeUnsolicitedEvent(byte from); - - /** Manages modem response - @param from Initial byte position - @param to Final byte position - */ - void manageResponse(byte from, byte to); - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(){return GSM3ShieldV1BaseProvider::ready();}; - - // Client socket management, just to be compatible - // with the Multi option - - /** Get socket - @param socket Socket - @return socket - */ - int getSocket(int socket=-1); - - /** Release socket - @param socket Socket - */ - void releaseSocket(int socket); - - /** Get socket client status - @param socket Socket - @return 1 if connected, 0 otherwise - */ - bool getStatusSocketClient(uint8_t socket); - -}; - - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1DataNetworkProvider.cpp b/libraries/GSM/src/GSM3ShieldV1DataNetworkProvider.cpp deleted file mode 100644 index 467136a52f8..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1DataNetworkProvider.cpp +++ /dev/null @@ -1,398 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include - -const char _command_CGATT[] PROGMEM = "AT+CGATT="; -const char _command_SEPARATOR[] PROGMEM = "\",\""; - -//Attach GPRS main function. -GSM3_NetworkStatus_t GSM3ShieldV1DataNetworkProvider::attachGPRS(char* apn, char* user_name, char* password, bool synchronous) -{ - user = user_name; - passwd = password; - // A sad use of byte reuse - theGSM3ShieldV1ModemCore.setPhoneNumber(apn); - - theGSM3ShieldV1ModemCore.openCommand(this,ATTACHGPRS); - theGSM3ShieldV1ModemCore.setStatus(CONNECTING); - - attachGPRSContinue(); - - // If synchronous, wait till attach is over, or not. - if(synchronous) - { - // if we shorten this delay, the command fails - while(ready()==0) - delay(100); - } - - return theGSM3ShieldV1ModemCore.getStatus(); -} - -//Atthach GPRS continue function. -void GSM3ShieldV1DataNetworkProvider::attachGPRSContinue() -{ - bool resp; - // 1: Attach to GPRS service "AT+CGATT=1" - // 2: Wait attach OK and Set the context 0 as FGCNT "AT+QIFGCNT=0" - // 3: Wait context OK and Set bearer type as GPRS, APN, user name and pasword "AT+QICSGP=1..." - // 4: Wait bearer OK and Enable the function of MUXIP "AT+QIMUX=1" - // 5: Wait for disable MUXIP OK and Set the session mode as non transparent "AT+QIMODE=0" - // 6: Wait for session mode OK and Enable notification when data received "AT+QINDI=1" - // 8: Wait domain name OK and Register the TCP/IP stack "AT+QIREGAPP" - // 9: Wait for Register OK and Activate FGCNT "AT+QIACT" - // 10: Wait for activate OK - - int ct=theGSM3ShieldV1ModemCore.getCommandCounter(); - if(ct==1) - { - //AT+CGATT - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_CGATT,false); - theGSM3ShieldV1ModemCore.print(1); - theGSM3ShieldV1ModemCore.print('\r'); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - } - else if(ct==2) - { - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - if(resp) - { - //AT+QIFGCNT - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QIFGCNT=0")); - theGSM3ShieldV1ModemCore.setCommandCounter(3); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - } - else if(ct==3) - { - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - if(resp) - { - // Great. Go for the next step - //DEBUG - //Serial.println("AT+QICSGP."); - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QICSGP=1,\""),false); - theGSM3ShieldV1ModemCore.print(theGSM3ShieldV1ModemCore.getPhoneNumber()); - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_SEPARATOR,false); - theGSM3ShieldV1ModemCore.print(user); - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_SEPARATOR,false); - theGSM3ShieldV1ModemCore.print(passwd); - theGSM3ShieldV1ModemCore.print("\"\r"); - theGSM3ShieldV1ModemCore.setCommandCounter(4); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - } - else if(ct==4) - { - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - if(resp) - { - // AT+QIMUX=1 for multisocket - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QIMUX=0")); - theGSM3ShieldV1ModemCore.setCommandCounter(5); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - } - else if(ct==5) - { - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - if(resp) - { - //AT+QIMODE=0 for multisocket - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QIMODE=1")); - theGSM3ShieldV1ModemCore.setCommandCounter(6); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - } - else if(ct==6) - { - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - if(resp) - { - // AT+QINDI=1 - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QINDI=1")); - theGSM3ShieldV1ModemCore.setCommandCounter(8); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - } - else if(ct==8) - { - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - if(resp) - { - // AT+QIREGAPP - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QIREGAPP")); - theGSM3ShieldV1ModemCore.setCommandCounter(9); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - } - else if(ct==9) - { - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - if(resp) - { - // AT+QIACT - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QIACT")); - theGSM3ShieldV1ModemCore.setCommandCounter(10); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - } - else if(ct==10) - { - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - if (resp) - { - theGSM3ShieldV1ModemCore.setStatus(GPRS_READY); - theGSM3ShieldV1ModemCore.closeCommand(1); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - } -} - -//Detach GPRS main function. -GSM3_NetworkStatus_t GSM3ShieldV1DataNetworkProvider::detachGPRS(bool synchronous) -{ - theGSM3ShieldV1ModemCore.openCommand(this,DETACHGPRS); - theGSM3ShieldV1ModemCore.setStatus(CONNECTING); - detachGPRSContinue(); - - if(synchronous) - { - while(ready()==0) - delay(1); - } - - return theGSM3ShieldV1ModemCore.getStatus(); -} - -void GSM3ShieldV1DataNetworkProvider::detachGPRSContinue() -{ - bool resp; - // 1: Detach to GPRS service "AT+CGATT=0" - // 2: Wait dettach +PDP DEACT - // 3: Wait for OK - - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - //AT+CGATT=0 - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_CGATT,false); - theGSM3ShieldV1ModemCore.print(0); - theGSM3ShieldV1ModemCore.print('\r'); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - char auxLocate[12]; - prepareAuxLocate(PSTR("+PDP DEACT"), auxLocate); - if(theGSM3ShieldV1ModemCore.theBuffer().locate(auxLocate)) - { - if(resp) - { - // Received +PDP DEACT; - theGSM3ShieldV1ModemCore.setCommandCounter(3); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - case 3: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - // OK received - if (resp) - { - theGSM3ShieldV1ModemCore.setStatus(GSM_READY); - theGSM3ShieldV1ModemCore.closeCommand(1); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - theGSM3ShieldV1ModemCore.theBuffer().flush(); - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - break; - } -} - -//QILOCIP parse. -bool GSM3ShieldV1DataNetworkProvider::parseQILOCIP_rsp(char* LocalIP, int LocalIPlength, bool& rsp) -{ - if (!(theGSM3ShieldV1ModemCore.theBuffer().extractSubstring("\r\n","\r\n", LocalIP, LocalIPlength))) - rsp = false; - else - rsp = true; - return true; -} - -//Get IP main function. -int GSM3ShieldV1DataNetworkProvider::getIP(char* LocalIP, int LocalIPlength) -{ - theGSM3ShieldV1ModemCore.setPhoneNumber(LocalIP); - theGSM3ShieldV1ModemCore.setPort(LocalIPlength); - theGSM3ShieldV1ModemCore.openCommand(this,GETIP); - getIPContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -void GSM3ShieldV1DataNetworkProvider::getIPContinue() -{ - - bool resp; - // 1: Read Local IP "AT+QILOCIP" - // 2: Waiting for IP. - - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - //AT+QILOCIP - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QILOCIP")); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - if(parseQILOCIP_rsp(theGSM3ShieldV1ModemCore.getPhoneNumber(), theGSM3ShieldV1ModemCore.getPort(), resp)) - { - if (resp) - theGSM3ShieldV1ModemCore.closeCommand(1); - else - theGSM3ShieldV1ModemCore.closeCommand(3); - } - theGSM3ShieldV1ModemCore.theBuffer().flush(); - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - break; - } -} - -//Get IP with IPAddress object -IPAddress GSM3ShieldV1DataNetworkProvider::getIPAddress() { - char ip_temp[15]=""; - getIP(ip_temp, 15); - unsigned long m=millis(); - - while((millis()-m)<10*1000 && (!ready())){ - // wait for a response from the modem: - delay(100); - } - IPAddress ip; - inet_aton(ip_temp, ip); - return ip; -} - -int GSM3ShieldV1DataNetworkProvider::inet_aton(const char* aIPAddrString, IPAddress& aResult) -{ - // See if we've been given a valid IP address - const char* p =aIPAddrString; - while (*p && - ( (*p == '.') || (*p >= '0') || (*p <= '9') )) - { - p++; - } - - if (*p == '\0') - { - // It's looking promising, we haven't found any invalid characters - p = aIPAddrString; - int segment =0; - int segmentValue =0; - while (*p && (segment < 4)) - { - if (*p == '.') - { - // We've reached the end of a segment - if (segmentValue > 255) - { - // You can't have IP address segments that don't fit in a byte - return 0; - } - else - { - aResult[segment] = (byte)segmentValue; - segment++; - segmentValue = 0; - } - } - else - { - // Next digit - segmentValue = (segmentValue*10)+(*p - '0'); - } - p++; - } - // We've reached the end of address, but there'll still be the last - // segment to deal with - if ((segmentValue > 255) || (segment > 3)) - { - // You can't have IP address segments that don't fit in a byte, - // or more than four segments - return 0; - } - else - { - aResult[segment] = (byte)segmentValue; - return 1; - } - } - else - { - return 0; - } -} - -//Response management. -void GSM3ShieldV1DataNetworkProvider::manageResponse(byte from, byte to) -{ - switch(theGSM3ShieldV1ModemCore.getOngoingCommand()) - { - case ATTACHGPRS: - attachGPRSContinue(); - break; - case DETACHGPRS: - detachGPRSContinue(); - break; - case GETIP: - getIPContinue(); - break; - } -} diff --git a/libraries/GSM/src/GSM3ShieldV1DataNetworkProvider.h b/libraries/GSM/src/GSM3ShieldV1DataNetworkProvider.h deleted file mode 100644 index 012a0ca5412..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1DataNetworkProvider.h +++ /dev/null @@ -1,140 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3SHIELDV1DATANETWORKPROVIDER_ -#define _GSM3SHIELDV1DATANETWORKPROVIDER_ - -#include -#include -#include -#include - -class GSM3ShieldV1DataNetworkProvider : public GSM3MobileDataNetworkProvider, public GSM3ShieldV1BaseProvider -{ - private: - - char* user; // Username for GPRS - char* passwd; // Password for GPRS - - /** Continue to attach GPRS function - */ - void attachGPRSContinue(); - - /** Continue to detach GPRS function - */ - void detachGPRSContinue(); - - /** Parse QILOCIP response - @param LocalIP Buffer for save local IP address - @param LocalIPlength Buffer size - @param rsp Returns true if expected response exists - @return true if command executed correctly - */ - bool parseQILOCIP_rsp(char* LocalIP, int LocalIPlength, bool& rsp); - - /** Continue to get IP function - */ - void getIPContinue(); - - /** Implementation of inet_aton standard function - @param aIPAddrString IP address in characters buffer - @param aResult IP address in IPAddress format - @return 1 if the address is successfully converted, or 0 if the conversion failed - */ - int inet_aton(const char* aIPAddrString, IPAddress& aResult); - - public: - - /** Attach to GPRS/GSM network - @param networkId APN GPRS - @param user Username - @param pass Password - @return connection status - */ - GSM3_NetworkStatus_t networkAttach(char* networkId, char* user, char* pass) - { - return attachGPRS(networkId, user, pass); - }; - - /** Detach GPRS/GSM network - @return connection status - */ - GSM3_NetworkStatus_t networkDetach(){ return detachGPRS();}; - - /** Attach to GPRS service - @param apn APN GPRS - @param user_name Username - @param password Password - @param synchronous Sync mode - @return connection status - */ - GSM3_NetworkStatus_t attachGPRS(char* apn, char* user_name, char* password, bool synchronous=true); - - /** Detach GPRS service - @param synchronous Sync mode - @return connection status - */ - GSM3_NetworkStatus_t detachGPRS(bool synchronous=true); - - /** Returns 0 if last command is still executing - @return 1 if success, >1 if error - */ - int ready(){return GSM3ShieldV1BaseProvider::ready();}; - - /** Get network status (connection) - @return status - */ - inline GSM3_NetworkStatus_t getStatus(){return theGSM3ShieldV1ModemCore.getStatus();}; - - /** Get actual assigned IP address - @param LocalIP Buffer for copy IP address - @param LocalIPlength Buffer length - @return command error if exists - */ - int getIP(char* LocalIP, int LocalIPlength); - - /** Get actual assigned IP address in IPAddress format - @return IP address in IPAddress format - */ - IPAddress getIPAddress(); - - /** Manages modem response - @param from Initial byte of buffer - @param to Final byte of buffer - */ - void manageResponse(byte from, byte to); - - -}; - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1DirectModemProvider.cpp b/libraries/GSM/src/GSM3ShieldV1DirectModemProvider.cpp deleted file mode 100644 index 47aa52b0741..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1DirectModemProvider.cpp +++ /dev/null @@ -1,143 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include -#include -#include - -#define __RESETPIN__ 7 - -//Constructor -GSM3ShieldV1DirectModemProvider::GSM3ShieldV1DirectModemProvider(bool t) -{ - trace=t; -}; - -void GSM3ShieldV1DirectModemProvider::begin() -{ - theGSM3ShieldV1ModemCore.gss.begin(9600); -} - -void GSM3ShieldV1DirectModemProvider::restartModem() -{ - pinMode(__RESETPIN__, OUTPUT); - digitalWrite(__RESETPIN__, HIGH); - delay(12000); - digitalWrite(__RESETPIN__, LOW); - delay(1000); - -} - -//To enable the debug process -void GSM3ShieldV1DirectModemProvider::connect() -{ - theGSM3ShieldV1ModemCore.registerActiveProvider(this); -} - -//To disable the debug process -void GSM3ShieldV1DirectModemProvider::disconnect() -{ - theGSM3ShieldV1ModemCore.registerActiveProvider(0); -} - -//Write to the modem by means of SoftSerial -size_t GSM3ShieldV1DirectModemProvider::write(uint8_t c) -{ - theGSM3ShieldV1ModemCore.write(c); -} - -//Detect if data to be read -int/*bool*/ GSM3ShieldV1DirectModemProvider::available() -{ - if (theGSM3ShieldV1ModemCore.gss.cb.peek(1)) return 1; - else return 0; -} - -//Read data -int/*char*/ GSM3ShieldV1DirectModemProvider::read() -{ - int dataRead; - dataRead = theGSM3ShieldV1ModemCore.gss.cb.read(); - //In case last char in xof mode. - if (!(theGSM3ShieldV1ModemCore.gss.cb.peek(0))) { - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - delay(100); - } - return dataRead; -} - -//Peek data -int/*char*/ GSM3ShieldV1DirectModemProvider::peek() -{ - return theGSM3ShieldV1ModemCore.gss.cb.peek(0); -} - -//Flush data -void GSM3ShieldV1DirectModemProvider::flush() -{ - return theGSM3ShieldV1ModemCore.gss.cb.flush(); -} - -String GSM3ShieldV1DirectModemProvider::writeModemCommand(String ATcommand, int responseDelay) -{ - - if(trace) - Serial.println(ATcommand); - - // Flush other texts - flush(); - - //Enter debug mode. - connect(); - //Send the AT command. - println(ATcommand); - - delay(responseDelay); - - //Get response data from modem. - String result = ""; - if(trace) - theGSM3ShieldV1ModemCore.gss.cb.debugBuffer(); - - while (available()) - { - char c = read(); - result += c; - } - if(trace) - Serial.println(result); - //Leave the debug mode. - disconnect(); - return result; -} \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1DirectModemProvider.h b/libraries/GSM/src/GSM3ShieldV1DirectModemProvider.h deleted file mode 100644 index 2d20412b47b..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1DirectModemProvider.h +++ /dev/null @@ -1,118 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ - -#ifndef __GSM3DIRECTMODEMPROVIDER__ -#define __GSM3DIRECTMODEMPROVIDER__ - -#include -#include -#include -#include -#include - -class GSM3ShieldV1DirectModemProvider : public GSM3ShieldV1BaseProvider, public Stream -{ - private: - - bool trace; - - public: - - /** Constructor - @param trace if true, dumps all AT dialogue to Serial - */ - GSM3ShieldV1DirectModemProvider(bool trace=false); - - /** - */ - void begin(); - - /** - */ - void restartModem(); - - /** Enable the debug process. - */ - void connect(); - - /** Disable the debug process. - */ - void disconnect(); - - /** Debug write to modem by means of SoftSerial. - @param c Character - @return size - */ - size_t write(uint8_t c); - - /** Check for incoming bytes in buffer - @return - */ - int available(); - - /** Read from circular buffer - @return character - */ - int read(); - - /** Read from circular buffer, but do not delete it - @return character - */ - int peek(); - - /** Empty circular buffer - */ - void flush(); - - /** Manages modem response - @param from Initial byte of buffer - @param to Final byte of buffer - */ - void manageResponse(byte from, byte to){}; - - /** Recognize unsolicited event - @param from - @return true if successful - */ - bool recognizeUnsolicitedEvent(byte from){return false;}; - - /** Send AT command to modem - @param command AT command - @param delay Time to wait for response - @return response from modem - */ - String writeModemCommand(String command, int delay); -}; - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1ModemCore.cpp b/libraries/GSM/src/GSM3ShieldV1ModemCore.cpp deleted file mode 100644 index 234874cd583..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1ModemCore.cpp +++ /dev/null @@ -1,231 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include - -GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore; - -char* __ok__="OK"; - -GSM3ShieldV1ModemCore::GSM3ShieldV1ModemCore() : gss() -{ - gss.registerMgr(this); - _dataInBufferFrom=0; - _dataInBufferTo=0; - commandError=1; - commandCounter=0; - ongoingCommand=NONE; - takeMilliseconds(); - - for(int i=0;irecognizeUnsolicitedEvent(from); - } - if((!recognized)&&(activeProvider)) - activeProvider->manageResponse(from, to); -} - - -void GSM3ShieldV1ModemCore::openCommand(GSM3ShieldV1BaseProvider* provider, GSM3_commandType_e c) -{ - activeProvider=provider; - commandError=0; - commandCounter=1; - ongoingCommand=c; - _dataInBufferFrom=0; - _dataInBufferTo=0; - -}; - -size_t GSM3ShieldV1ModemCore::writePGM(PGM_P str, bool CR) -{ - int i=0; - char c; - - do - { - c=pgm_read_byte_near(str + i); - if(c!=0) - write(c); - i++; - } while (c!=0); - if(CR) - print("\r"); - - return 1; -} - -size_t GSM3ShieldV1ModemCore::write(uint8_t c) -{ - if(_debug) - GSM3CircularBuffer::printCharDebug(c); - return gss.write(c); -} - -unsigned long GSM3ShieldV1ModemCore::takeMilliseconds() -{ - unsigned long now=millis(); - unsigned long delta; - delta=now-milliseconds; - milliseconds=now; - return delta; -} - -void GSM3ShieldV1ModemCore::delayInsideInterrupt(unsigned long milliseconds) -{ - for (unsigned long k=0;k -#include -#include -#include - -#define UMPROVIDERS 3 - -class GSM3ShieldV1ModemCore : public GSM3SoftSerialMgr, public Print -{ - private: - - // Phone number, used when calling, sending SMS and reading calling numbers - // Also PIN in modem configuration - // Also APN - // Also remote server - char* phoneNumber; - - // Working port. Port used in the ongoing command, while opening a server - // Also for IP address length - int port; - - // 0 = ongoing - // 1 = OK - // 2 = Error. Incorrect state - // 3 = Unexpected modem message - // 4 = OK but not available data. - uint8_t commandError; - - // Counts the steps by the command - uint8_t commandCounter; - - // Presently ongoing command - GSM3_commandType_e ongoingCommand; - - // Enable/disable debug - bool _debug; - byte _dataInBufferFrom; - byte _dataInBufferTo; - - // This is the modem (known) status - GSM3_NetworkStatus_t _status; - - GSM3ShieldV1BaseProvider* UMProvider[UMPROVIDERS]; - GSM3ShieldV1BaseProvider* activeProvider; - - // Private function for anage message - void manageMsgNow(byte from, byte to); - - unsigned long milliseconds; - - public: - - /** Constructor */ - GSM3ShieldV1ModemCore(); - - GSM3SoftSerial gss; // Direct access to modem - - /** Get phone number - @return phone number - */ - char *getPhoneNumber(){return phoneNumber;}; - - /** Establish a new phone number - @param n Phone number - */ - void setPhoneNumber(char *n){phoneNumber=n;}; - - /** Get port used - @return port - */ - int getPort(){return port;}; - - /** Establish a new port for use - @param p Port - */ - void setPort(int p){port=p;}; - - /** Get command error - @return command error - */ - uint8_t getCommandError(){return commandError;}; - - /** Establish a command error - @param n Command error - */ - void setCommandError(uint8_t n){commandError=n;}; - - /** Get command counter - @return command counter - */ - uint8_t getCommandCounter(){return commandCounter;}; - - /** Set command counter - @param c Initial value - */ - void setCommandCounter(uint8_t c){commandCounter=c;}; - - /** Get ongoing command - @return command - */ - GSM3_commandType_e getOngoingCommand(){return ongoingCommand;}; - - /** Set ongoing command - @param c New ongoing command - */ - void setOngoingCommand(GSM3_commandType_e c){ongoingCommand=c;}; - - /** Open command - @param activeProvider Active provider - @param c Command for open - */ - void openCommand(GSM3ShieldV1BaseProvider* activeProvider, GSM3_commandType_e c); - - /** Close command - @param code Close code - */ - void closeCommand(int code); - - // These functions allow writing to the SoftwareSerial - // If debug is set, dump to the console - - /** Write a character in serial - @param c Character - @return size - */ - size_t write(uint8_t c); - - /** Write PGM - @param str Buffer for write - @param CR Carriadge return adding automatically - @return size - */ - virtual size_t writePGM(PGM_P str, bool CR=true); - - /** Establish debug mode - @param db Boolean that indicates debug on or off - */ - void setDebug(bool db){_debug=db;}; - - /** Generic response parser - @param rsp Returns true if expected response exists - @param string Substring expected in response - @param string2 Second substring expected in response - @return true if parsed correctly - */ - bool genericParse_rsp(bool& rsp, char* string=0, char* string2=0); - - /** Generates a generic AT command request from PROGMEM buffer - @param str Buffer with AT command - @param addCR Carriadge return adding automatically - */ - void genericCommand_rq(PGM_P str, bool addCR=true); - - /** Generates a generic AT command request from a simple char buffer - @param str Buffer with AT command - @param addCR Carriadge return adding automatically - */ - void genericCommand_rqc(const char* str, bool addCR=true); - - /** Returns the circular buffer - @return circular buffer - */ - inline GSM3CircularBuffer& theBuffer(){return gss.cb;}; - - /** Establish a new network status - @param status Network status - */ - inline void setStatus(GSM3_NetworkStatus_t status) { _status = status; }; - - /** Returns actual network status - @return network status - */ - inline GSM3_NetworkStatus_t getStatus() { return _status; }; - - /** Register provider as willing to receive unsolicited messages - @param provider Pointer to provider able to receive unsolicited messages - */ - void registerUMProvider(GSM3ShieldV1BaseProvider* provider); - - /** unegister provider as willing to receive unsolicited messages - @param provider Pointer to provider able to receive unsolicited messages - */ - void unRegisterUMProvider(GSM3ShieldV1BaseProvider* provider); - - - /** Register a provider as "dialoguing" talking in facto with the modem - @param provider Pointer to provider receiving responses - */ - void registerActiveProvider(GSM3ShieldV1BaseProvider* provider){activeProvider=provider;}; - - /** Needed to manage the SoftSerial. Receives the call when received data - If _debugging, no code is called - @param from Starting byte to read - @param to Last byte to read - */ - void manageMsg(byte from, byte to); - - /** If _debugging, this call is assumed to be made out of interrupts - Prints incoming info and calls manageMsgNow - */ - void manageReceivedData(); - - /** Chronometer. Measure milliseconds from last call - @return milliseconds from las time function was called - */ - unsigned long takeMilliseconds(); - - /** Delay for interrupts - @param milliseconds Delay time in milliseconds - */ - void delayInsideInterrupt(unsigned long milliseconds); - -}; - -extern GSM3ShieldV1ModemCore theGSM3ShieldV1ModemCore; - -#endif diff --git a/libraries/GSM/src/GSM3ShieldV1ModemVerification.cpp b/libraries/GSM/src/GSM3ShieldV1ModemVerification.cpp deleted file mode 100644 index c0e3da991ce..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1ModemVerification.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ - -#include - -// constructor -GSM3ShieldV1ModemVerification::GSM3ShieldV1ModemVerification() -{ -}; - -// reset the modem for direct access -int GSM3ShieldV1ModemVerification::begin() -{ - int result=0; - String modemResponse; - - // check modem response - modemAccess.begin(); - - // reset hardware - modemAccess.restartModem(); - - modemResponse=modemAccess.writeModemCommand("AT", 1000); - if(modemResponse.indexOf("OK")>=0) - result=1; - modemResponse=modemAccess.writeModemCommand("ATE0", 1000); - return result; -} - -// get IMEI -String GSM3ShieldV1ModemVerification::getIMEI() -{ - String number(NULL); - // AT command for obtain IMEI - String modemResponse = modemAccess.writeModemCommand("AT+GSN", 2000); - // Parse and check response - char res_to_compare[modemResponse.length()]; - modemResponse.toCharArray(res_to_compare, modemResponse.length()); - if(strstr(res_to_compare,"OK") != NULL) - number = modemResponse.substring(1, 17); - return number; -} diff --git a/libraries/GSM/src/GSM3ShieldV1ModemVerification.h b/libraries/GSM/src/GSM3ShieldV1ModemVerification.h deleted file mode 100644 index 98dbc49888d..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1ModemVerification.h +++ /dev/null @@ -1,64 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3SHIELDV1MODEMVERIFICATION_ -#define _GSM3SHIELDV1MODEMVERIFICATION_ - -#include -#include - -class GSM3ShieldV1ModemVerification -{ - - private: - - GSM3ShieldV1DirectModemProvider modemAccess; - GSM3ShieldV1AccessProvider gsm; // Access provider to GSM/GPRS network - - public: - - /** Constructor */ - GSM3ShieldV1ModemVerification(); - - /** Check modem response and restart it - */ - int begin(); - - /** Obtain modem IMEI (command AT) - @return modem IMEI number - */ - String getIMEI(); - -}; - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1MultiClientProvider.cpp b/libraries/GSM/src/GSM3ShieldV1MultiClientProvider.cpp deleted file mode 100644 index b3bdfba842f..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1MultiClientProvider.cpp +++ /dev/null @@ -1,616 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include - -const char _command_MultiQISRVC[] PROGMEM = "AT+QISRVC="; - -#define __TOUTFLUSH__ 10000 - -GSM3ShieldV1MultiClientProvider::GSM3ShieldV1MultiClientProvider() -{ - theGSM3MobileClientProvider=this; - theGSM3ShieldV1ModemCore.registerUMProvider(this); -}; - -//Response management. -void GSM3ShieldV1MultiClientProvider::manageResponse(byte from, byte to) -{ - switch(theGSM3ShieldV1ModemCore.getOngoingCommand()) - { - case XON: - if (flagReadingSocket) - { -// flagReadingSocket = 0; - fullBufferSocket = (theGSM3ShieldV1ModemCore.theBuffer().availableBytes()<3); - } - else theGSM3ShieldV1ModemCore.setOngoingCommand(NONE); - break; - case NONE: - theGSM3ShieldV1ModemCore.gss.cb.deleteToTheEnd(from); - break; - case CONNECTTCPCLIENT: - connectTCPClientContinue(); - break; - case DISCONNECTTCP: - disconnectTCPContinue(); - break; - case BEGINWRITESOCKET: - beginWriteSocketContinue(); - break; - case ENDWRITESOCKET: - endWriteSocketContinue(); - break; - case AVAILABLESOCKET: - availableSocketContinue(); - break; - case FLUSHSOCKET: - fullBufferSocket = (theGSM3ShieldV1ModemCore.theBuffer().availableBytes()<3); - flushSocketContinue(); - break; - } -} - -//Connect TCP main function. -int GSM3ShieldV1MultiClientProvider::connectTCPClient(const char* server, int port, int id_socket) -{ - theGSM3ShieldV1ModemCore.setPort(port); - idSocket = id_socket; - - theGSM3ShieldV1ModemCore.setPhoneNumber((char*)server); - theGSM3ShieldV1ModemCore.openCommand(this,CONNECTTCPCLIENT); - connectTCPClientContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -int GSM3ShieldV1MultiClientProvider::connectTCPClient(IPAddress add, int port, int id_socket) -{ - remoteIP=add; - theGSM3ShieldV1ModemCore.setPhoneNumber(0); - return connectTCPClient(0, port, id_socket); -} - -//Connect TCP continue function. -void GSM3ShieldV1MultiClientProvider::connectTCPClientContinue() -{ - bool resp; - // 0: Dot or DNS notation activation - // 1: Disable SW flow control - // 2: Waiting for IFC OK - // 3: Start-up TCP connection "AT+QIOPEN" - // 4: Wait for connection OK - // 5: Wait for CONNECT - - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QIDNSIP="), false); - if ((theGSM3ShieldV1ModemCore.getPhoneNumber()!=0)&& - ((*(theGSM3ShieldV1ModemCore.getPhoneNumber())<'0')||((*(theGSM3ShieldV1ModemCore.getPhoneNumber())>'9')))) - { - theGSM3ShieldV1ModemCore.print('1'); - theGSM3ShieldV1ModemCore.print('\r'); - } - else - { - theGSM3ShieldV1ModemCore.print('0'); - theGSM3ShieldV1ModemCore.print('\r'); - } - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - //Response received - if(resp) - { - // AT+QIOPEN - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QIOPEN="),false); - theGSM3ShieldV1ModemCore.print(idSocket); - theGSM3ShieldV1ModemCore.print(",\"TCP\",\""); - if(theGSM3ShieldV1ModemCore.getPhoneNumber()!=0) - { - theGSM3ShieldV1ModemCore.print(theGSM3ShieldV1ModemCore.getPhoneNumber()); - } - else - { - remoteIP.printTo(theGSM3ShieldV1ModemCore); - } - theGSM3ShieldV1ModemCore.print('"'); - theGSM3ShieldV1ModemCore.print(','); - theGSM3ShieldV1ModemCore.print(theGSM3ShieldV1ModemCore.getPort()); - theGSM3ShieldV1ModemCore.print('\r'); - theGSM3ShieldV1ModemCore.setCommandCounter(3); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - - case 3: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - // Response received - if(resp) - { - // OK Received - // Great. Go for the next step - theGSM3ShieldV1ModemCore.setCommandCounter(4); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - case 4: - char auxLocate [12]; - prepareAuxLocate(PSTR("CONNECT OK"), auxLocate); - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp,auxLocate)) - { - // Response received - if(resp) - { - // Received CONNECT OK - // Great. We're done - theGSM3ShieldV1ModemCore.closeCommand(1); - } - else - theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - - } -} - -//Disconnect TCP main function. -int GSM3ShieldV1MultiClientProvider::disconnectTCP(bool client1Server0, int id_socket) -{ - idSocket = id_socket; - - // First of all, we will flush the socket synchronously - unsigned long m; - m=millis(); - flushSocket(); - while(((millis()-m)< __TOUTFLUSH__ )&&(ready()==0)) - delay(10); - - // Could not flush the communications... strange - if(ready()==0) - { - theGSM3ShieldV1ModemCore.setCommandError(2); - return theGSM3ShieldV1ModemCore.getCommandError(); - } - - // Set up the command - client1_server0 = client1Server0; - flagReadingSocket=0; - theGSM3ShieldV1ModemCore.openCommand(this,DISCONNECTTCP); - disconnectTCPContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -//Disconnect TCP continue function -void GSM3ShieldV1MultiClientProvider::disconnectTCPContinue() -{ - bool resp; - // 1: Send AT+QISRVC - // 2: "AT+QICLOSE" - // 3: Wait for OK - - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_MultiQISRVC, false); - if (client1_server0) theGSM3ShieldV1ModemCore.print('1'); - else theGSM3ShieldV1ModemCore.print('2'); - theGSM3ShieldV1ModemCore.print('\r'); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - // Parse response to QISRVC - theGSM3ShieldV1ModemCore.genericParse_rsp(resp); - if(resp) - { - // Send QICLOSE command - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QICLOSE="),false); - theGSM3ShieldV1ModemCore.print(idSocket); - theGSM3ShieldV1ModemCore.print('\r'); - theGSM3ShieldV1ModemCore.setCommandCounter(3); - } - else - theGSM3ShieldV1ModemCore.closeCommand(3); - break; - case 3: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - theGSM3ShieldV1ModemCore.setCommandCounter(0); - if (resp) - theGSM3ShieldV1ModemCore.closeCommand(1); - else - theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - } -} - -//Write socket first chain main function. -void GSM3ShieldV1MultiClientProvider::beginWriteSocket(bool client1Server0, int id_socket) -{ - idSocket = id_socket; - client1_server0 = client1Server0; - theGSM3ShieldV1ModemCore.openCommand(this,BEGINWRITESOCKET); - beginWriteSocketContinue(); -} - -//Write socket first chain continue function. -void GSM3ShieldV1MultiClientProvider::beginWriteSocketContinue() -{ - bool resp; - // 1: Send AT+QISRVC - // 2: Send AT+QISEND - // 3: wait for > and Write text - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - // AT+QISRVC - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_MultiQISRVC, false); - if (client1_server0) - theGSM3ShieldV1ModemCore.print('1'); - else - theGSM3ShieldV1ModemCore.print('2'); - theGSM3ShieldV1ModemCore.print('\r'); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - // Response received - if(resp) - { - // AT+QISEND - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QISEND="), false); - theGSM3ShieldV1ModemCore.print(idSocket); - theGSM3ShieldV1ModemCore.print('\r'); - theGSM3ShieldV1ModemCore.setCommandCounter(3); - } - else - { - theGSM3ShieldV1ModemCore.closeCommand(3); - } - } - break; - case 3: - char aux[2]; - aux[0]='>'; - aux[1]=0; - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp, aux)) - { - if(resp) - { - // Received ">" - theGSM3ShieldV1ModemCore.closeCommand(1); - } - else - { - theGSM3ShieldV1ModemCore.closeCommand(3); - } - } - break; - } -} - -//Write socket next chain function. -void GSM3ShieldV1MultiClientProvider::writeSocket(const char* buf) -{ - theGSM3ShieldV1ModemCore.print(buf); -} - -//Write socket character function. -void GSM3ShieldV1MultiClientProvider::writeSocket(char c) -{ - theGSM3ShieldV1ModemCore.print(c); -} - -//Write socket last chain main function. -void GSM3ShieldV1MultiClientProvider::endWriteSocket() -{ - theGSM3ShieldV1ModemCore.openCommand(this,ENDWRITESOCKET); - endWriteSocketContinue(); -} - -//Write socket last chain continue function. -void GSM3ShieldV1MultiClientProvider::endWriteSocketContinue() -{ - bool resp; - // 1: Write text (ctrl-Z) - // 2: Wait for OK - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - theGSM3ShieldV1ModemCore.write(26); // Ctrl-Z - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - // OK received - if (resp) theGSM3ShieldV1ModemCore.closeCommand(1); - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - } -} - -//Available socket main function. -int GSM3ShieldV1MultiClientProvider::availableSocket(bool client1Server0, int id_socket) -{ - if(flagReadingSocket==1) - { - theGSM3ShieldV1ModemCore.setCommandError(1); - return 1; - } - client1_server0 = client1Server0; - idSocket = id_socket; - theGSM3ShieldV1ModemCore.openCommand(this,AVAILABLESOCKET); - availableSocketContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -//Available socket continue function. -void GSM3ShieldV1MultiClientProvider::availableSocketContinue() -{ - bool resp; - // 1: AT+QIRD - // 2: Wait for OK and Next necessary AT+QIRD - - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QIRD=0,"),false); - if (client1_server0) - theGSM3ShieldV1ModemCore.print('1'); - else - theGSM3ShieldV1ModemCore.print('2'); - theGSM3ShieldV1ModemCore.print(','); - theGSM3ShieldV1ModemCore.print(idSocket); - theGSM3ShieldV1ModemCore.print(",1500"); - // theGSM3ShieldV1ModemCore.print(",120"); - theGSM3ShieldV1ModemCore.print('\r'); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - if(parseQIRD_head(resp)) - { - if (!resp) - { - theGSM3ShieldV1ModemCore.closeCommand(4); - } - else - { - flagReadingSocket=1; - theGSM3ShieldV1ModemCore.closeCommand(1); - } - } - else - { - theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - } -} - -//Read Socket Parse head. -bool GSM3ShieldV1MultiClientProvider::parseQIRD_head(bool& rsp) -{ - char _qird [8]; - prepareAuxLocate(PSTR("+QIRD:"), _qird); - fullBufferSocket = (theGSM3ShieldV1ModemCore.theBuffer().availableBytes()<3); - if(theGSM3ShieldV1ModemCore.theBuffer().locate(_qird)) - { - theGSM3ShieldV1ModemCore.theBuffer().chopUntil(_qird, true); - // Saving more memory, reuse _qird - _qird[0]='\n'; - _qird[1]=0; - theGSM3ShieldV1ModemCore.theBuffer().chopUntil(_qird, true); - rsp = true; - return true; - } - else if(theGSM3ShieldV1ModemCore.theBuffer().locate("OK")) - { - rsp = false; - return true; - } - else - { - rsp = false; - return false; - } -} -/* -//Read socket main function. -int GSM3ShieldV1MultiClientProvider::readSocket() -{ - char charSocket; - charSocket = theGSM3ShieldV1ModemCore.theBuffer().read(); - //Case buffer not full - if (!fullBufferSocket) - { - //The last part of the buffer after data is CRLFOKCRLF - if (theGSM3ShieldV1ModemCore.theBuffer().availableBytes()==125) - { - //Start again availableSocket function. - flagReadingSocket=0; - theGSM3ShieldV1ModemCore.openCommand(this,AVAILABLESOCKET); - availableSocketContinue(); - } - } - else if (theGSM3ShieldV1ModemCore.theBuffer().availableBytes()==127) - { - // The buffer is full, no more action is possible until we have read() - theGSM3ShieldV1ModemCore.theBuffer().flush(); - flagReadingSocket = 1; - theGSM3ShieldV1ModemCore.openCommand(this,XON); - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - //A small delay to assure data received after xon. - delay(10); - } - //To distinguish the case no more available data in socket. - if (ready()==1) - return charSocket; - else - return 0; -} -*/ -int GSM3ShieldV1MultiClientProvider::readSocket() -{ - char charSocket; - - if(theGSM3ShieldV1ModemCore.theBuffer().availableBytes()==0) - { - Serial.println();Serial.println("*"); - return 0; - } - - charSocket = theGSM3ShieldV1ModemCore.theBuffer().read(); - //Case buffer not full - if (!fullBufferSocket) - { - //The last part of the buffer after data is CRLFOKCRLF - if (theGSM3ShieldV1ModemCore.theBuffer().availableBytes()==125) - { - //Start again availableSocket function. - flagReadingSocket=0; - theGSM3ShieldV1ModemCore.openCommand(this,AVAILABLESOCKET); - availableSocketContinue(); - } - } - else if (theGSM3ShieldV1ModemCore.theBuffer().availableBytes()>=100) - { - // The buffer was full, we have to let the data flow again - // theGSM3ShieldV1ModemCore.theBuffer().flush(); - flagReadingSocket = 1; - theGSM3ShieldV1ModemCore.openCommand(this,XON); - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - //A small delay to assure data received after xon. - delay(100); - if(theGSM3ShieldV1ModemCore.theBuffer().availableBytes() >=6) - fullBufferSocket=false; - } - - return charSocket; - -} - -//Read socket main function. -int GSM3ShieldV1MultiClientProvider::peekSocket() -{ - return theGSM3ShieldV1ModemCore.theBuffer().peek(0); -} - - -//Flush SMS main function. -void GSM3ShieldV1MultiClientProvider::flushSocket() -{ - flagReadingSocket=0; - theGSM3ShieldV1ModemCore.openCommand(this,FLUSHSOCKET); - flushSocketContinue(); -} - -//Send SMS continue function. -void GSM3ShieldV1MultiClientProvider::flushSocketContinue() -{ - bool resp; - // 1: Deleting SMS - // 2: wait for OK - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - //DEBUG - //Serial.println("Flushing Socket."); - theGSM3ShieldV1ModemCore.theBuffer().flush(); - if (fullBufferSocket) - { - //Serial.println("Buffer flushed."); - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - } - else - { - //Serial.println("Socket flushed completely."); - theGSM3ShieldV1ModemCore.closeCommand(1); - } - break; - } -} - -//URC recognize. -// Momentarily, we will not recognize "closes" in client mode -bool GSM3ShieldV1MultiClientProvider::recognizeUnsolicitedEvent(byte oldTail) -{ - return false; -} - -int GSM3ShieldV1MultiClientProvider::getSocket(int socket) -{ - if(socket==-1) - { - int i; - for(i=minSocket(); i<=maxSocket(); i++) - { - if (!(sockets&(0x0001<8) - return 0; - if(sockets&(0x0001< -#include - -class GSM3ShieldV1MultiClientProvider : public GSM3MobileClientProvider, public GSM3ShieldV1BaseProvider -{ - private: - - int remotePort; // Current operation remote port - int idSocket; // Remote ID socket - IPAddress remoteIP; // Remote IP address - - uint16_t sockets; - - /** Continue to connect TCP client function - */ - void connectTCPClientContinue(); - - /** Continue to disconnect TCP client function - */ - void disconnectTCPContinue(); - - /** Continue to begin socket for write function - */ - void beginWriteSocketContinue(); - - /** Continue to end write socket function - */ - void endWriteSocketContinue(); - - /** Continue to available socket function - */ - void availableSocketContinue(); - - /** Continue to flush socket function - */ - void flushSocketContinue(); - - // GATHER! - bool flagReadingSocket; //In case socket data being read, update fullBufferSocket in the next buffer. - bool fullBufferSocket; //To detect if the socket data being read needs another buffer. - bool client1_server0; //1 Client, 0 Server. - - /** Parse QIRD response - @param rsp Returns true if expected response exists - @return true if command executed correctly - */ - bool parseQIRD_head(bool& rsp); - - public: - - /** Constructor */ - GSM3ShieldV1MultiClientProvider(); - - /** Minimum socket - @return 0 - */ - int minSocket(){return 0;}; - - /** Maximum socket - @return 5 - */ - int maxSocket(){return 5;}; - - /** Connect to a remote TCP server - @param server String with IP or server name - @param port Remote port number - @param id_socket Local socket number - @return 0 if command running, 1 if success, otherwise error - */ - int connectTCPClient(const char* server, int port, int id_socket); - - /** Connect to a remote TCP server - @param add Remote IP address - @param port Remote port number - @param id_socket Local socket number - @return 0 if command running, 1 if success, otherwise error - */ - int connectTCPClient(IPAddress add, int port, int id_socket); - - /** Begin writing through a socket - @param client1Server0 1 if modem acts as client, 0 if acts as server - @param id_socket Local socket number - @return 0 if command running, 1 if success, otherwise error - */ - void beginWriteSocket(bool client1Server0, int id_socket); - - /** Write through a socket. MUST go after beginWriteSocket() - @param buf characters to be written (final 0 will not be written) - */ - void writeSocket(const char* buf); - - /** Write through a socket. MUST go after beginWriteSocket() - @param c character to be written - */ - void writeSocket(char c); - - /** Finish current writing - */ - void endWriteSocket(); - - /** Check if there are data to be read in socket. - @param client1Server0 1 if modem acts as client, 0 if acts as server - @param id_socket Local socket number - @return 0 if command running, 1 if there are data available, 4 if no data, otherwise error - */ - int availableSocket(bool client, int id_socket); // With "available" and "readSocket" ask the modem for 1500 bytes. - - /** Read a character from socket - @return socket - */ - int readSocket(); //If Read() gets to the end of the QIRD response, execute again QIRD SYNCHRONOUSLY - - /** Flush socket - */ - void flushSocket(); - - /** Get a character but will not advance the buffer head - @return character - */ - int peekSocket(); - - /** Close a socket - @param client1Server0 1 if modem acts as client, 0 if acts as server - @param id_socket Local socket number - @return 0 if command running, 1 if success, otherwise error - */ - int disconnectTCP(bool client1Server0, int id_socket); - - /** Recognize unsolicited event - @param from - @return true if successful - */ - bool recognizeUnsolicitedEvent(byte from); - - /** Manages modem response - @param from Initial byte of buffer - @param to Final byte of buffer - */ - void manageResponse(byte from, byte to); - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(){return GSM3ShieldV1BaseProvider::ready();}; - - /** Get client socket - @param socket - @return socket - */ - int getSocket(int socket=-1); - - /** Release socket - @param socket Socket for release - */ - void releaseSocket(int socket); - - /** Get socket client status - @param socket Socket - @return socket client status - */ - bool getStatusSocketClient(uint8_t socket); - -}; - - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1MultiServerProvider.cpp b/libraries/GSM/src/GSM3ShieldV1MultiServerProvider.cpp deleted file mode 100644 index 6ab37dbad98..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1MultiServerProvider.cpp +++ /dev/null @@ -1,390 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include -#include - -#define __NCLIENTS_MAX__ 3 - -const char _command_QILOCIP[] PROGMEM = "AT+QILOCIP"; - -GSM3ShieldV1MultiServerProvider::GSM3ShieldV1MultiServerProvider() -{ - theGSM3MobileServerProvider=this; - socketsAsServer=0; - socketsAccepted=0; - theGSM3ShieldV1ModemCore.registerUMProvider(this); -}; - -//Response management. -void GSM3ShieldV1MultiServerProvider::manageResponse(byte from, byte to) -{ - switch(theGSM3ShieldV1ModemCore.getOngoingCommand()) - { - case NONE: - theGSM3ShieldV1ModemCore.gss.cb.deleteToTheEnd(from); - break; - case CONNECTSERVER: - connectTCPServerContinue(); - break; - case GETIP: - getIPContinue(); - break; - } -} - -//Connect Server main function. -int GSM3ShieldV1MultiServerProvider::connectTCPServer(int port) -{ - // We forget about LocalIP as it has no real use, the modem does whatever it likes - theGSM3ShieldV1ModemCore.setPort(port); - theGSM3ShieldV1ModemCore.openCommand(this,CONNECTSERVER); - connectTCPServerContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -//Connect Server continue function. -void GSM3ShieldV1MultiServerProvider::connectTCPServerContinue() -{ - - bool resp; - // 1: Read Local IP "AT+QILOCIP" - // 2: Waiting for IP and Set local port "AT+QILPORT" - // 3: Waiting for QILPOR OK andConfigure as server "AT+QISERVER" - // 4: Wait for SERVER OK - - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - //"AT+QILOCIP." - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_QILOCIP); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - //Not IP storing but the command is necessary. - //if(parseQILOCIP_rsp(local_IP, local_IP_Length, resp)) - // This awful trick saves some RAM bytes - char aux[3]; - aux[0]='\r';aux[1]='\n';aux[2]=0; - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp, aux)) - { - //Response received - if(resp) - { - // Great. Go for the next step - // AT+QILPORT - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QILPORT=\"TCP\","),false); - theGSM3ShieldV1ModemCore.print( theGSM3ShieldV1ModemCore.getPort()); - theGSM3ShieldV1ModemCore.print('\r'); - theGSM3ShieldV1ModemCore.setCommandCounter(3); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - case 3: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - // Response received - if(resp) - { - // OK received - // Great. Go for the next step - // AT+QISERVER - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QISERVER=0,"),false); - theGSM3ShieldV1ModemCore.print(__NCLIENTS_MAX__); - theGSM3ShieldV1ModemCore.print('\r'); - theGSM3ShieldV1ModemCore.setCommandCounter(4); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - case 4: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - // Response received - // OK received, kathapoon, chessespoon - if (resp) theGSM3ShieldV1ModemCore.closeCommand(1); - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - } -} - -//QILOCIP parse. -bool GSM3ShieldV1MultiServerProvider::parseQILOCIP_rsp(char* LocalIP, int LocalIPlength, bool& rsp) -{ - if (!(theGSM3ShieldV1ModemCore.theBuffer().extractSubstring("\r\n","\r\n", LocalIP, LocalIPlength))) - rsp = false; - else - rsp = true; - return true; -} - -//Get IP main function. -int GSM3ShieldV1MultiServerProvider::getIP(char* LocalIP, int LocalIPlength) -{ - theGSM3ShieldV1ModemCore.setPhoneNumber(LocalIP); - theGSM3ShieldV1ModemCore.setPort(LocalIPlength); - theGSM3ShieldV1ModemCore.openCommand(this,GETIP); - getIPContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -void GSM3ShieldV1MultiServerProvider::getIPContinue() -{ - - bool resp; - // 1: Read Local IP "AT+QILOCIP" - // 2: Waiting for IP. - - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - //AT+QILOCIP - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_QILOCIP); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - if(parseQILOCIP_rsp(theGSM3ShieldV1ModemCore.getPhoneNumber(), theGSM3ShieldV1ModemCore.getPort(), resp)) - { - if (resp) - theGSM3ShieldV1ModemCore.closeCommand(1); - else - theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - } -} - -bool GSM3ShieldV1MultiServerProvider::getSocketAsServerModemStatus(int s) -{ - if (socketsAccepted&(0x0001< -#include - -class GSM3ShieldV1MultiServerProvider : public GSM3MobileServerProvider, public GSM3ShieldV1BaseProvider -{ - private: - - // Used sockets - uint8_t socketsAsServer; - uint8_t socketsAccepted; - - /** Continue to connect TCP server function - */ - void connectTCPServerContinue(); - - /** Continue to get IP function - */ - void getIPContinue(); - - /** Release socket - @param socket Socket - */ - void releaseSocket(int socket); - - /** Parse QILOCIP response - @param LocalIP Buffer for save local IP address - @param LocalIPlength Buffer size - @param rsp Returns if expected response exists - @return true if command executed correctly - */ - bool parseQILOCIP_rsp(char* LocalIP, int LocalIPlength, bool& rsp); - - public: - - /** Constructor */ - GSM3ShieldV1MultiServerProvider(); - - /** minSocketAsServer - @return 0 - */ - int minSocketAsServer(){return 0;}; - - /** maxSocketAsServer - @return 0 - */ - int maxSocketAsServer(){return 4;}; - - /** Get modem status - @param s - @return modem status (true if connected) - */ - bool getSocketAsServerModemStatus(int s); - - /** Get new occupied socket as server - @return command error if exists - */ - int getNewOccupiedSocketAsServer(); - - /** Connect server to TCP port - @param port TCP port - @return command error if exists - */ - int connectTCPServer(int port); - - /** Get server IP address - @param LocalIP Buffer for copy IP address - @param LocalIPlength Length of buffer - @return command error if exists - */ - int getIP(char* LocalIP, int LocalIPlength); - -// int disconnectTCP(bool client1Server0, int id_socket); - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(){return GSM3ShieldV1BaseProvider::ready();}; - - /** Get socket status as server - @param socket Socket to get status - @return socket status - */ - bool getStatusSocketAsServer(uint8_t socket); - - /** Manages modem response - @param from Initial byte of buffer - @param to Final byte of buffer - */ - void manageResponse(byte from, byte to); - - /** Recognize unsolicited event - @param oldTail - @return true if successful - */ - bool recognizeUnsolicitedEvent(byte oldTail); - - -}; - -#endif diff --git a/libraries/GSM/src/GSM3ShieldV1PinManagement.cpp b/libraries/GSM/src/GSM3ShieldV1PinManagement.cpp deleted file mode 100644 index 0c0c74960d0..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1PinManagement.cpp +++ /dev/null @@ -1,201 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ - -#include - -// constructor -GSM3ShieldV1PinManagement::GSM3ShieldV1PinManagement() -{ -}; - -// reset the modem for direct access -void GSM3ShieldV1PinManagement::begin() -{ - // reset hardware - gsm.HWrestart(); - - pin_used = false; - - // check modem response - modemAccess.writeModemCommand("AT", 1000); - modemAccess.writeModemCommand("ATE0", 1000); -} - -/* - Check PIN status -*/ -int GSM3ShieldV1PinManagement::isPIN() -{ - String res = modemAccess.writeModemCommand("AT+CPIN?",1000); - // Check response - char res_to_compare[res.length()]; - res.toCharArray(res_to_compare, res.length()); - if(strstr(res_to_compare, "READY") != NULL) - return 0; - else if(strstr(res_to_compare, "SIM PIN") != NULL) - return 1; - else if(strstr(res_to_compare, "SIM PUK") != NULL) - return -1; - else - return -2; -} - -/* - Check PIN code -*/ -int GSM3ShieldV1PinManagement::checkPIN(String pin) -{ - String res = modemAccess.writeModemCommand("AT+CPIN=" + pin,1000); - // check response - char res_to_compare[res.length()]; - res.toCharArray(res_to_compare, res.length()); - if(strstr(res_to_compare, "OK") == NULL) - return -1; - else - return 0; -} - -/* - Check PUK code -*/ -int GSM3ShieldV1PinManagement::checkPUK(String puk, String pin) -{ - String res = modemAccess.writeModemCommand("AT+CPIN=\"" + puk + "\",\"" + pin + "\"",1000); - // check response - char res_to_compare[res.length()]; - res.toCharArray(res_to_compare, res.length()); - if(strstr(res_to_compare, "OK") == NULL) - return -1; - else - return 0; -} - -/* - Change PIN code -*/ -void GSM3ShieldV1PinManagement::changePIN(String old, String pin) -{ - String res = modemAccess.writeModemCommand("AT+CPWD=\"SC\",\"" + old + "\",\"" + pin + "\"",2000); - Serial.println(res); - // check response - char res_to_compare[res.length()]; - res.toCharArray(res_to_compare, res.length()); - if(strstr(res_to_compare, "OK") != NULL) - Serial.println("Pin changed succesfully."); - else - Serial.println("ERROR"); -} - -/* - Switch PIN status -*/ -void GSM3ShieldV1PinManagement::switchPIN(String pin) -{ - String res = modemAccess.writeModemCommand("AT+CLCK=\"SC\",2",1000); - // check response - char res_to_compare[res.length()]; - res.toCharArray(res_to_compare, res.length()); - if(strstr(res_to_compare, "0") != NULL) - { - res = modemAccess.writeModemCommand("AT+CLCK=\"SC\",1,\"" + pin + "\"",1000); - // check response - char res_to_compare[res.length()]; - res.toCharArray(res_to_compare, res.length()); - if(strstr(res_to_compare, "OK") == NULL) - { - Serial.println("ERROR"); - pin_used = false; - } - else - { - Serial.println("OK. PIN lock on."); - pin_used = true; - } - } - else if(strstr(res_to_compare, "1") != NULL) - { - res = modemAccess.writeModemCommand("AT+CLCK=\"SC\",0,\"" + pin + "\"",1000); - // check response - char res_to_compare[res.length()]; - res.toCharArray(res_to_compare, res.length()); - if(strstr(res_to_compare, "OK") == NULL) - { - Serial.println("ERROR"); - pin_used = true; - } - else - { - Serial.println("OK. PIN lock off."); - pin_used = false; - } - } - else - { - Serial.println("ERROR"); - } -} - -/* - Check registrer -*/ -int GSM3ShieldV1PinManagement::checkReg() -{ - delay(5000); - String res = modemAccess.writeModemCommand("AT+CREG?",1000); - // check response - char res_to_compare[res.length()]; - res.toCharArray(res_to_compare, res.length()); - if(strstr(res_to_compare, "1") != NULL) - return 0; - else if(strstr(res_to_compare, "5") != NULL) - return 1; - else - return -1; -} - -/* - Return if PIN lock is used -*/ -bool GSM3ShieldV1PinManagement::getPINUsed() -{ - return pin_used; -} - -/* - Set if PIN lock is used -*/ -void GSM3ShieldV1PinManagement::setPINUsed(bool used) -{ - pin_used = used; -} \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1PinManagement.h b/libraries/GSM/src/GSM3ShieldV1PinManagement.h deleted file mode 100644 index d5924ea1fe7..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1PinManagement.h +++ /dev/null @@ -1,103 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3SHIELDV1PINMANAGEMENT_ -#define _GSM3SHIELDV1PINMANAGEMENT_ - -#include -#include - -class GSM3ShieldV1PinManagement -{ - - private: - - GSM3ShieldV1AccessProvider gsm; // GSM access required for network register with PIN code - GSM3ShieldV1DirectModemProvider modemAccess; - bool pin_used; // determines if pin lock is activated - - public: - - /** Constructor */ - GSM3ShieldV1PinManagement(); - - /** Check modem response and restart it - */ - void begin(); - - /** Check if PIN lock or PUK lock is activated - @return 0 if PIN lock is off, 1 if PIN lock is on, -1 if PUK lock is on, -2 if error exists - */ - int isPIN(); - - /** Check if PIN code is correct and valid - @param pin PIN code - @return 0 if is correct, -1 if is incorrect - */ - int checkPIN(String pin); - - /** Check if PUK code is correct and establish new PIN code - @param puk PUK code - @param pin New PIN code - @return 0 if successful, otherwise return -1 - */ - int checkPUK(String puk, String pin); - - /** Change PIN code - @param old Old PIN code - @param pin New PIN code - */ - void changePIN(String old, String pin); - - /** Change PIN lock status - @param pin PIN code - */ - void switchPIN(String pin); - - /** Check if modem was registered in GSM/GPRS network - @return 0 if modem was registered, 1 if modem was registered in roaming, -1 if error exists - */ - int checkReg(); - - /** Return if PIN lock is used - @return true if PIN lock is used, otherwise, return false - */ - bool getPINUsed(); - - /** Set PIN lock status - @param used New PIN lock status - */ - void setPINUsed(bool used); -}; - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1SMSProvider.cpp b/libraries/GSM/src/GSM3ShieldV1SMSProvider.cpp deleted file mode 100644 index 6c028f6554b..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1SMSProvider.cpp +++ /dev/null @@ -1,327 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include - -GSM3ShieldV1SMSProvider::GSM3ShieldV1SMSProvider() -{ - theGSM3SMSProvider=this; -}; - -//Send SMS begin function. -int GSM3ShieldV1SMSProvider::beginSMS(const char* to) -{ - if((theGSM3ShieldV1ModemCore.getStatus() != GSM_READY)&&(theGSM3ShieldV1ModemCore.getStatus() != GPRS_READY)) - return 2; - - theGSM3ShieldV1ModemCore.setPhoneNumber((char*)to); - theGSM3ShieldV1ModemCore.openCommand(this,BEGINSMS); - beginSMSContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -//Send SMS continue function. -void GSM3ShieldV1SMSProvider::beginSMSContinue() -{ - bool resp; - // 1: Send AT - // 2: wait for > and write text - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - theGSM3ShieldV1ModemCore.setCommandCounter(2); - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+CMGS=\""), false); - theGSM3ShieldV1ModemCore.print(theGSM3ShieldV1ModemCore.getPhoneNumber()); - theGSM3ShieldV1ModemCore.print("\"\r"); - break; - case 2: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp, ">")) - { - if (resp) theGSM3ShieldV1ModemCore.closeCommand(1); - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - } -} - -//Send SMS write function. -void GSM3ShieldV1SMSProvider::writeSMS(char c) -{ - theGSM3ShieldV1ModemCore.write(c); -} - -//Send SMS begin function. -int GSM3ShieldV1SMSProvider::endSMS() -{ - theGSM3ShieldV1ModemCore.openCommand(this,ENDSMS); - endSMSContinue(); - while(ready()==0) delay(100); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -//Send SMS continue function. -void GSM3ShieldV1SMSProvider::endSMSContinue() -{ - bool resp; - // 1: Send #26 - // 2: wait for OK - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - theGSM3ShieldV1ModemCore.setCommandCounter(2); - theGSM3ShieldV1ModemCore.write(26); - theGSM3ShieldV1ModemCore.print("\r"); - break; - case 2: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - if (resp) - theGSM3ShieldV1ModemCore.closeCommand(1); - else - theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - } -} - -//Available SMS main function. -int GSM3ShieldV1SMSProvider::availableSMS() -{ - flagReadingSMS = 0; - theGSM3ShieldV1ModemCore.openCommand(this,AVAILABLESMS); - availableSMSContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -//Available SMS continue function. -void GSM3ShieldV1SMSProvider::availableSMSContinue() -{ - // 1: AT+CMGL="REC UNREAD",1 - // 2: Receive +CMGL: _id_ ... READ","_numero_" ... \n_mensaje_\nOK - // 3: Send AT+CMGD= _id_ - // 4: Receive OK - // 5: Remaining SMS text in case full buffer. - // This implementation really does not care much if the modem aswers trash to CMGL - bool resp; - //int msglength_aux; - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+CMGL=\"REC UNREAD\",1")); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - if(parseCMGL_available(resp)) - { - if (!resp) theGSM3ShieldV1ModemCore.closeCommand(4); - else theGSM3ShieldV1ModemCore.closeCommand(1); - } - break; - } - -} - -//SMS available parse. -bool GSM3ShieldV1SMSProvider::parseCMGL_available(bool& rsp) -{ - fullBufferSMS = (theGSM3ShieldV1ModemCore.theBuffer().availableBytes()<=4); - if (!(theGSM3ShieldV1ModemCore.theBuffer().chopUntil("+CMGL:", true))) - rsp = false; - else - rsp = true; - idSMS=theGSM3ShieldV1ModemCore.theBuffer().readInt(); - - //If there are 2 SMS in buffer, response is ...CRLFCRLF+CMGL - twoSMSinBuffer = theGSM3ShieldV1ModemCore.theBuffer().locate("\r\n\r\n+"); - - checkSecondBuffer = 0; - - return true; -} - -//remoteNumber SMS function. -int GSM3ShieldV1SMSProvider::remoteSMSNumber(char* number, int nlength) -{ - theGSM3ShieldV1ModemCore.theBuffer().extractSubstring("READ\",\"", "\"", number, nlength); - - return 1; -} - -//remoteNumber SMS function. -int GSM3ShieldV1SMSProvider::readSMS() -{ - char charSMS; - //First char. - if (!flagReadingSMS) - { - flagReadingSMS = 1; - theGSM3ShieldV1ModemCore.theBuffer().chopUntil("\n", true); - } - charSMS = theGSM3ShieldV1ModemCore.theBuffer().read(); - - //Second Buffer. - if (checkSecondBuffer) - { - checkSecondBuffer = 0; - twoSMSinBuffer = theGSM3ShieldV1ModemCore.theBuffer().locate("\r\n\r\n+"); - } - - //Case the last char in buffer. - if ((!twoSMSinBuffer)&&fullBufferSMS&&(theGSM3ShieldV1ModemCore.theBuffer().availableBytes()==127)) - { - theGSM3ShieldV1ModemCore.theBuffer().flush(); - fullBufferSMS = 0; - checkSecondBuffer = 1; - theGSM3ShieldV1ModemCore.openCommand(this,XON); - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - delay(10); - - return charSMS; - } - //Case two SMS in buffer - else if (twoSMSinBuffer) - { - if (theGSM3ShieldV1ModemCore.theBuffer().locate("\r\n\r\n+")) - { - return charSMS; - } - else - { - theGSM3ShieldV1ModemCore.theBuffer().flush(); - theGSM3ShieldV1ModemCore.openCommand(this,XON); - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - delay(10); - return 0; - } - } - //Case 1 SMS and buffer not full - else if (!fullBufferSMS) - { - if (theGSM3ShieldV1ModemCore.theBuffer().locate("\r\n\r\nOK")) - { - return charSMS; - } - else - { - theGSM3ShieldV1ModemCore.theBuffer().flush(); - theGSM3ShieldV1ModemCore.openCommand(this,XON); - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - delay(10); - return 0; - } - } - //Case to read all the chars in buffer to the end. - else - { - return charSMS; - } -} - -//Read socket main function. -int GSM3ShieldV1SMSProvider::peekSMS() -{ - if (!flagReadingSMS) - { - flagReadingSMS = 1; - theGSM3ShieldV1ModemCore.theBuffer().chopUntil("\n", true); - } - - return theGSM3ShieldV1ModemCore.theBuffer().peek(0); -} - -//Flush SMS main function. -void GSM3ShieldV1SMSProvider::flushSMS() -{ - - //With this, sms data can fill up to 2x128+5x128 bytes. - for (int aux = 0;aux<5;aux++) - { - theGSM3ShieldV1ModemCore.theBuffer().flush(); - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - delay(10); - } - - theGSM3ShieldV1ModemCore.openCommand(this,FLUSHSMS); - flushSMSContinue(); -} - -//Send SMS continue function. -void GSM3ShieldV1SMSProvider::flushSMSContinue() -{ - bool resp; - // 1: Deleting SMS - // 2: wait for OK - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - theGSM3ShieldV1ModemCore.setCommandCounter(2); - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+CMGD="), false); - theGSM3ShieldV1ModemCore.print(idSMS); - theGSM3ShieldV1ModemCore.print("\r"); - break; - case 2: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - if (resp) theGSM3ShieldV1ModemCore.closeCommand(1); - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - } -} - -void GSM3ShieldV1SMSProvider::manageResponse(byte from, byte to) -{ - switch(theGSM3ShieldV1ModemCore.getOngoingCommand()) - { -/* case XON: - if (flagReadingSocket) - { -// flagReadingSocket = 0; - fullBufferSocket = (theGSM3ShieldV1ModemCore.theBuffer().availableBytes()<3); - } - else theGSM3ShieldV1ModemCore.openCommand(this,NONE); - break; -*/ case NONE: - theGSM3ShieldV1ModemCore.gss.cb.deleteToTheEnd(from); - break; - case BEGINSMS: - beginSMSContinue(); - break; - case ENDSMS: - endSMSContinue(); - break; - case AVAILABLESMS: - availableSMSContinue(); - break; - case FLUSHSMS: - flushSMSContinue(); - break; - } -} diff --git a/libraries/GSM/src/GSM3ShieldV1SMSProvider.h b/libraries/GSM/src/GSM3ShieldV1SMSProvider.h deleted file mode 100644 index 408da338e1d..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1SMSProvider.h +++ /dev/null @@ -1,130 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef __GSM3_SHIELDV1SMSPROVIDER__ -#define __GSM3_SHIELDV1SMSPROVIDER__ - -#include -#include -#include - - -class GSM3ShieldV1SMSProvider : public GSM3MobileSMSProvider, public GSM3ShieldV1BaseProvider -{ - public: - GSM3ShieldV1SMSProvider(); - - /** Manages modem response - @param from Initial byte of buffer - @param to Final byte of buffer - */ - void manageResponse(byte from, byte to); - - /** Begin a SMS to send it - @param to Destination - @return error command if it exists - */ - inline int beginSMS(const char* to); - - /** Write a SMS character by character - @param c Character - */ - inline void writeSMS(char c); - - /** End SMS - @return error command if it exists - */ - inline int endSMS(); - - /** Check if SMS available and prepare it to be read - @return number of bytes in a received SMS - */ - int availableSMS(); - - /** Read a byte but do not advance the buffer header (circular buffer) - @return character - */ - int peekSMS(); - - /** Delete the SMS from Modem memory and proccess answer - */ - void flushSMS(); - - /** Read sender number phone - @param number Buffer for save number phone - @param nlength Buffer length - @return 1 success, >1 error - */ - int remoteSMSNumber(char* number, int nlength); //Before reading the SMS, read the phone number. - - /** Read one char for SMS buffer (advance circular buffer) - @return character - */ - int readSMS(); - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(){return GSM3ShieldV1BaseProvider::ready();}; - - private: - - int idSMS; // Id from current SMS being read. - bool flagReadingSMS; // To detect first SMS char if not yet reading. - bool fullBufferSMS; // To detect if the SMS being read needs another buffer. - bool twoSMSinBuffer; // To detect if the buffer has more than 1 SMS. - bool checkSecondBuffer; // Pending to detect if the second buffer has more than 1 SMS. - - /** Continue to begin SMS function - */ - void beginSMSContinue(); - - /** Continue to end SMS function - */ - void endSMSContinue(); - - /** Continue to available SMS function - */ - void availableSMSContinue(); - - /** Continue to flush SMS function - */ - void flushSMSContinue(); - - /** Parse CMGL response - @param rsp Returns true if expected response exists - @return true if command executed correctly - */ - bool parseCMGL_available(bool& rsp); -}; -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1ScanNetworks.cpp b/libraries/GSM/src/GSM3ShieldV1ScanNetworks.cpp deleted file mode 100644 index 8b5d5e49899..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1ScanNetworks.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ - -#include - -GSM3ShieldV1ScanNetworks::GSM3ShieldV1ScanNetworks(bool trace): modem(trace) -{ -} - -GSM3_NetworkStatus_t GSM3ShieldV1ScanNetworks::begin() -{ - modem.begin(); - modem.restartModem(); - // check modem response - modem.writeModemCommand("AT", 1000); - modem.writeModemCommand("ATE0", 1000); - return IDLE; -} - -String GSM3ShieldV1ScanNetworks::getCurrentCarrier() -{ - String modemResponse = modem.writeModemCommand("AT+COPS?", 2000); - - // Parse and check response - char res_to_split[modemResponse.length()]; - modemResponse.toCharArray(res_to_split, modemResponse.length()); - if(strstr(res_to_split,"ERROR") == NULL){ - // Tokenizer - char *ptr_token; - ptr_token = strtok(res_to_split, "\""); - ptr_token = strtok(NULL, "\""); - String final_result = ptr_token; - return final_result; - }else{ - return String(NULL); - } -} - -String GSM3ShieldV1ScanNetworks::getSignalStrength() -{ - String modemResponse = modem.writeModemCommand("AT+CSQ", 2000); - char res_to_split[modemResponse.length()]; - modemResponse.toCharArray(res_to_split, modemResponse.length()); - if((strstr(res_to_split,"ERROR") == NULL) | (strstr(res_to_split,"99") == NULL)){ - // Tokenizer - char *ptr_token; - ptr_token = strtok(res_to_split, ":"); - ptr_token = strtok(NULL, ":"); - ptr_token = strtok(ptr_token, ","); - String final_result = ptr_token; - final_result.trim(); - return final_result; - }else{ - return String(NULL); - } -} - -String GSM3ShieldV1ScanNetworks::readNetworks() -{ - String modemResponse = modem.writeModemCommand("AT+COPS=?",20000); - String result; - bool inQuotes=false; - int quoteCounter=0; - for(unsigned int i=0; i -#include - -class GSM3ShieldV1ScanNetworks -{ - private: - GSM3ShieldV1DirectModemProvider modem; - - public: - - /** Constructor - @param trace if true, dumps all AT dialogue to Serial - @return - - */ - GSM3ShieldV1ScanNetworks(bool trace=false); - - /** begin (forces modem hardware restart, so we begin from scratch) - @return Always returns IDLE status - */ - GSM3_NetworkStatus_t begin(); - - /** Read current carrier - @return Current carrier - */ - String getCurrentCarrier(); - - /** Obtain signal strength - @return Signal Strength - */ - String getSignalStrength(); - - /** Search available carriers - @return A string with list of networks available - */ - String readNetworks(); -}; - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3ShieldV1ServerProvider.cpp b/libraries/GSM/src/GSM3ShieldV1ServerProvider.cpp deleted file mode 100644 index 61b5c062cd6..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1ServerProvider.cpp +++ /dev/null @@ -1,238 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include -#include - -GSM3ShieldV1ServerProvider::GSM3ShieldV1ServerProvider() -{ - theGSM3MobileServerProvider=this; -}; - -//Response management. -void GSM3ShieldV1ServerProvider::manageResponse(byte from, byte to) -{ - switch(theGSM3ShieldV1ModemCore.getOngoingCommand()) - { - case NONE: - theGSM3ShieldV1ModemCore.gss.cb.deleteToTheEnd(from); - break; - case CONNECTSERVER: - connectTCPServerContinue(); - break; - /*case GETIP: - getIPContinue(); - break;*/ - } -} - -//Connect Server main function. -int GSM3ShieldV1ServerProvider::connectTCPServer(int port) -{ - // We forget about LocalIP as it has no real use, the modem does whatever it likes - theGSM3ShieldV1ModemCore.setPort(port); - theGSM3ShieldV1ModemCore.openCommand(this,CONNECTSERVER); - // From this moment on we wait for a call - connectTCPServerContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -//Connect Server continue function. -void GSM3ShieldV1ServerProvider::connectTCPServerContinue() -{ - - bool resp; - // 1: Read Local IP "AT+QILOCIP" - // 2: Waiting for IP and Set local port "AT+QILPORT" - // 3: Waiting for QILPOR OK andConfigure as server "AT+QISERVER" - // 4: Wait for SERVER OK - - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - //"AT+QILOCIP." - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QILOCIP")); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - //Not IP storing but the command is necessary. - //if(parseQILOCIP_rsp(local_IP, local_IP_Length, resp)) - // This awful trick saves some RAM bytes - char aux[3]; - aux[0]='\r';aux[1]='\n';aux[2]=0; - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp, aux)) - { - //Response received - if(resp) - { - // Great. Go for the next step - // AT+QILPORT - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QILPORT=\"TCP\","),false); - theGSM3ShieldV1ModemCore.print( theGSM3ShieldV1ModemCore.getPort()); - theGSM3ShieldV1ModemCore.print('\r'); - theGSM3ShieldV1ModemCore.setCommandCounter(3); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - case 3: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - // Response received - if(resp) - { - // OK received - // Great. Go for the next step - // AT+QISERVER - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+QISERVER"),true); - theGSM3ShieldV1ModemCore.setCommandCounter(4); - } - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - case 4: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - // Response received - // OK received, kathapoon, chessespoon - if (resp) - { - theGSM3ShieldV1ModemCore.registerUMProvider(this); - theGSM3ShieldV1ModemCore.closeCommand(1); - } - else - theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - } -} - -//QILOCIP parse. -/*bool GSM3ShieldV1ServerProvider::parseQILOCIP_rsp(char* LocalIP, int LocalIPlength, bool& rsp) -{ - if (!(theGSM3ShieldV1ModemCore.theBuffer().extractSubstring("\r\n","\r\n", LocalIP, LocalIPlength))) - rsp = false; - else - rsp = true; - return true; -} - -//Get IP main function. -int GSM3ShieldV1ServerProvider::getIP(char* LocalIP, int LocalIPlength) -{ - theGSM3ShieldV1ModemCore.setPhoneNumber(LocalIP); - theGSM3ShieldV1ModemCore.setPort(LocalIPlength); - theGSM3ShieldV1ModemCore.openCommand(this,GETIP); - getIPContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -void GSM3ShieldV1ServerProvider::getIPContinue() -{ - - bool resp; - // 1: Read Local IP "AT+QILOCIP" - // 2: Waiting for IP. - - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - //AT+QILOCIP - theGSM3ShieldV1ModemCore.genericCommand_rq(_command_MonoQILOCIP); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - if(parseQILOCIP_rsp(theGSM3ShieldV1ModemCore.getPhoneNumber(), theGSM3ShieldV1ModemCore.getPort(), resp)) - { - if (resp) - theGSM3ShieldV1ModemCore.closeCommand(1); - else - theGSM3ShieldV1ModemCore.closeCommand(3); - } - theGSM3ShieldV1ModemCore.theBuffer().flush(); - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - break; - } -}*/ - -bool GSM3ShieldV1ServerProvider::getSocketAsServerModemStatus(int s) -{ - if(theGSM3ShieldV1ModemCore.getStatus()==TRANSPARENT_CONNECTED) - return true; - else - return false; -} - - -//URC recognize. -bool GSM3ShieldV1ServerProvider::recognizeUnsolicitedEvent(byte oldTail) -{ - - int nlength; - char auxLocate [15]; - - //REMOTE SOCKET CLOSED. - prepareAuxLocate(PSTR("CLOSED\r\n"), auxLocate); - if(theGSM3ShieldV1ModemCore.gss.cb.locate(auxLocate)) - { - //To detect remote socket closed for example inside socket data. - theGSM3ShieldV1ModemCore.setStatus(GPRS_READY); - } - - - //REMOTE SOCKET ACCEPTED. - prepareAuxLocate(PSTR("CONNECT\r\n"), auxLocate); - if(theGSM3ShieldV1ModemCore.gss.cb.locate(auxLocate)) - { - //To detect remote socket closed for example inside socket data. - theGSM3ShieldV1ModemCore.theBuffer().chopUntil(auxLocate, true); - theGSM3ShieldV1ModemCore.gss.spaceAvailable(); - theGSM3ShieldV1ModemCore.setStatus(TRANSPARENT_CONNECTED); - return true; - } - - return false; -} - -bool GSM3ShieldV1ServerProvider::getStatusSocketAsServer(uint8_t socket) -{ - return(theGSM3ShieldV1ModemCore.getStatus()==TRANSPARENT_CONNECTED); -}; - -void GSM3ShieldV1ServerProvider::releaseSocket(int socket) -{ -} - -int GSM3ShieldV1ServerProvider::getNewOccupiedSocketAsServer() -{ - return 0; -} diff --git a/libraries/GSM/src/GSM3ShieldV1ServerProvider.h b/libraries/GSM/src/GSM3ShieldV1ServerProvider.h deleted file mode 100644 index 93fcd89a562..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1ServerProvider.h +++ /dev/null @@ -1,126 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef __GSM3_SHIELDV1SERVERPROVIDER__ -#define __GSM3_SHIELDV1SERVERPROVIDER__ - -#include -#include - -class GSM3ShieldV1ServerProvider : public GSM3MobileServerProvider, public GSM3ShieldV1BaseProvider -{ - private: - - /** Continue to connect to server with TCP protocol function - */ - void connectTCPServerContinue(); - - /** Continue to get IP address function - */ - //void getIPContinue(); - - /** Parse QILOCIP response - @param LocalIP Buffer for save local IP address - @param LocalIPlength Buffer size - @param rsp Returns if expected response exists - @return true if command executed correctly - */ - //bool parseQILOCIP_rsp(char* LocalIP, int LocalIPlength, bool& rsp); - - /** Release socket - @param socket Socket - */ - void releaseSocket(int socket); - - public: - - /** Constructor */ - GSM3ShieldV1ServerProvider(); - - /** minSocketAsServer - @return 0 - */ - int minSocketAsServer(){return 0;}; - - /** maxSocketAsServer - @return 0 - */ - int maxSocketAsServer(){return 0;}; - - /** Get modem status - @param s Socket - @return modem status (true if connected) - */ - bool getSocketAsServerModemStatus(int s); - - /** Get new occupied socket as server - @return return -1 if no new socket has been occupied - */ - int getNewOccupiedSocketAsServer(); - - /** Connect server to TCP port - @param port TCP port - @return command error if exists - */ - int connectTCPServer(int port); - - //int getIP(char* LocalIP, int LocalIPlength); -// int disconnectTCP(bool client1Server0, int id_socket); - - /** Get last command status - @return returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(){return GSM3ShieldV1BaseProvider::ready();}; - - /** Get socket status as server - @param socket Socket to get status - @return socket status - */ - bool getStatusSocketAsServer(uint8_t socket); - - /** Manages modem response - @param from Initial byte of buffer - @param to Final byte of buffer - */ - void manageResponse(byte from, byte to); - - /** Recognize unsolicited event - @param oldTail - @return true if successful - */ - bool recognizeUnsolicitedEvent(byte oldTail); - - -}; - -#endif diff --git a/libraries/GSM/src/GSM3ShieldV1VoiceProvider.cpp b/libraries/GSM/src/GSM3ShieldV1VoiceProvider.cpp deleted file mode 100644 index e30f9390c58..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1VoiceProvider.cpp +++ /dev/null @@ -1,248 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telefónica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include - -GSM3ShieldV1VoiceProvider::GSM3ShieldV1VoiceProvider() - { - phonelength=0; - theGSM3MobileVoiceProvider=this; - } - - void GSM3ShieldV1VoiceProvider::initialize() - { - theGSM3ShieldV1ModemCore.registerUMProvider(this); - } - -//Voice Call main function. -int GSM3ShieldV1VoiceProvider::voiceCall(const char* to) -{ - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("ATD"),false); - theGSM3ShieldV1ModemCore.print(to); - theGSM3ShieldV1ModemCore.print(";\r"); - setvoiceCallStatus(CALLING); - return 1; -} - -//Retrieve calling number main function. -int GSM3ShieldV1VoiceProvider::retrieveCallingNumber (char* buffer, int bufsize) -{ - theGSM3ShieldV1ModemCore.setPhoneNumber(buffer); - phonelength = bufsize; - theGSM3ShieldV1ModemCore.setCommandError(0); - theGSM3ShieldV1ModemCore.setCommandCounter(1); - theGSM3ShieldV1ModemCore.openCommand(this,RETRIEVECALLINGNUMBER); - retrieveCallingNumberContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -//Retrieve calling number Continue function. -void GSM3ShieldV1VoiceProvider::retrieveCallingNumberContinue() -{ - // 1: AT+CLCC - // 2: Receive +CLCC: 1,1,4,0,0,"num",129,"" - // This implementation really does not care much if the modem aswers trash to CMGL - bool resp; - //int msglength_aux; - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("AT+CLCC")); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - if(parseCLCC(theGSM3ShieldV1ModemCore.getPhoneNumber(), phonelength)) - { - theGSM3ShieldV1ModemCore.closeCommand(1); - } - break; - } -} - -//CLCC parse. -bool GSM3ShieldV1VoiceProvider::parseCLCC(char* number, int nlength) -{ - theGSM3ShieldV1ModemCore.theBuffer().extractSubstring("+CLCC: 1,1,4,0,0,\"","\"", number, nlength); - theGSM3ShieldV1ModemCore.theBuffer().flush(); - return true; -} - -//Answer Call main function. -int GSM3ShieldV1VoiceProvider::answerCall() -{ - theGSM3ShieldV1ModemCore.setCommandError(0); - theGSM3ShieldV1ModemCore.setCommandCounter(1); - theGSM3ShieldV1ModemCore.openCommand(this,ANSWERCALL); - answerCallContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -//Answer Call continue function. -void GSM3ShieldV1VoiceProvider::answerCallContinue() -{ - // 1: ATA - // 2: Waiting for OK - - // This implementation really does not care much if the modem aswers trash to CMGL - bool resp; - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - // ATA ; - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("ATA")); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - setvoiceCallStatus(TALKING); - if (resp) theGSM3ShieldV1ModemCore.closeCommand(1); - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - } -} - -//Hang Call main function. -int GSM3ShieldV1VoiceProvider::hangCall() -{ - theGSM3ShieldV1ModemCore.setCommandError(0); - theGSM3ShieldV1ModemCore.setCommandCounter(1); - theGSM3ShieldV1ModemCore.openCommand(this,HANGCALL); - hangCallContinue(); - return theGSM3ShieldV1ModemCore.getCommandError(); -} - -//Hang Call continue function. -void GSM3ShieldV1VoiceProvider::hangCallContinue() -{ - // 1: ATH - // 2: Waiting for OK - - bool resp; - switch (theGSM3ShieldV1ModemCore.getCommandCounter()) { - case 1: - //ATH - theGSM3ShieldV1ModemCore.genericCommand_rq(PSTR("ATH")); - theGSM3ShieldV1ModemCore.setCommandCounter(2); - break; - case 2: - if(theGSM3ShieldV1ModemCore.genericParse_rsp(resp)) - { - setvoiceCallStatus(IDLE_CALL); - if (resp) theGSM3ShieldV1ModemCore.closeCommand(1); - else theGSM3ShieldV1ModemCore.closeCommand(3); - } - break; - } -} - -//Response management. -void GSM3ShieldV1VoiceProvider::manageResponse(byte from, byte to) -{ - switch(theGSM3ShieldV1ModemCore.getOngoingCommand()) - { - case ANSWERCALL: - answerCallContinue(); - break; - case HANGCALL: - hangCallContinue(); - break; - case RETRIEVECALLINGNUMBER: - retrieveCallingNumberContinue(); - break; - - } -} - -//URC recognize. -bool GSM3ShieldV1VoiceProvider::recognizeUnsolicitedEvent(byte oldTail) -{ - - int nlength; - char auxLocate [15]; - //RING. - prepareAuxLocate(PSTR("RING"), auxLocate); - if(theGSM3ShieldV1ModemCore.theBuffer().locate(auxLocate)) - { - // RING - setvoiceCallStatus(RECEIVINGCALL); - theGSM3ShieldV1ModemCore.theBuffer().flush(); - return true; - } - - //CALL ACEPTED. - prepareAuxLocate(PSTR("+COLP:"), auxLocate); - if(theGSM3ShieldV1ModemCore.theBuffer().locate(auxLocate)) - { - //DEBUG - //Serial.println("Call Accepted."); - setvoiceCallStatus(TALKING); - theGSM3ShieldV1ModemCore.theBuffer().flush(); - return true; - } - - //NO CARRIER. - prepareAuxLocate(PSTR("NO CARRIER"), auxLocate); - if(theGSM3ShieldV1ModemCore.theBuffer().locate(auxLocate)) - { - //DEBUG - //Serial.println("NO CARRIER received."); - setvoiceCallStatus(IDLE_CALL); - theGSM3ShieldV1ModemCore.theBuffer().flush(); - return true; - } - - //BUSY. - prepareAuxLocate(PSTR("BUSY"), auxLocate); - if(theGSM3ShieldV1ModemCore.theBuffer().locate(auxLocate)) - { - //DEBUG - //Serial.println("BUSY received."); - setvoiceCallStatus(IDLE_CALL); - theGSM3ShieldV1ModemCore.theBuffer().flush(); - return true; - } - - //CALL RECEPTION. - prepareAuxLocate(PSTR("+CLIP:"), auxLocate); - if(theGSM3ShieldV1ModemCore.theBuffer().locate(auxLocate)) - { - theGSM3ShieldV1ModemCore.theBuffer().flush(); - setvoiceCallStatus(RECEIVINGCALL); - return true; - } - - return false; -} - - diff --git a/libraries/GSM/src/GSM3ShieldV1VoiceProvider.h b/libraries/GSM/src/GSM3ShieldV1VoiceProvider.h deleted file mode 100644 index b96138533c5..00000000000 --- a/libraries/GSM/src/GSM3ShieldV1VoiceProvider.h +++ /dev/null @@ -1,137 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ - -#ifndef _GSM3SHIELDV1VOICEPROVIDER_ -#define _GSM3SHIELDV1VOICEPROVIDER_ - -#include -#include -#include - -class GSM3ShieldV1VoiceProvider : public GSM3MobileVoiceProvider, public GSM3ShieldV1BaseProvider -{ - public: - - /** Constructor */ - GSM3ShieldV1VoiceProvider(); - - /** initilizer, links with modem provider */ - void initialize(); - - - /** Manages modem response - @param from Initial byte of buffer - @param to Final byte of buffer - */ - void manageResponse(byte from, byte to); - - //Call functions. - - /** Launch a voice call - @param number Phone number to be called - @return If asynchronous, returns 0. If synchronous, 1 if success, other if error - */ - int voiceCall(const char* number); - - /** Answer a voice call - @return If asynchronous, returns 0. If synchronous, 1 if success, other if error - */ - int answerCall(); - - /** Hang a voice call - @return If asynchronous, returns 0. If synchronous, 1 if success, other if error - */ - int hangCall(); - - /** Retrieve phone number of caller - @param buffer Buffer for copy phone number - @param bufsize Buffer size - @return If asynchronous, returns 0. If synchronous, 1 if success, other if error - */ - int retrieveCallingNumber(char* buffer, int bufsize); - - /** Get last command status - @return Returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(){return GSM3ShieldV1BaseProvider::ready();}; - - /** Recognize URC - @param oldTail - @return true if successful - */ - bool recognizeUnsolicitedEvent(byte oldTail); - - /** Returns voice call status - @return voice call status - */ - GSM3_voiceCall_st getvoiceCallStatus(){ready(); return _voiceCallstatus;}; - - /** Set voice call status - @param status New status for voice call - */ - void setvoiceCallStatus(GSM3_voiceCall_st status) { _voiceCallstatus = status; }; - - - private: - - int phonelength; // Phone number length - - GSM3_voiceCall_st _voiceCallstatus; // The voiceCall status - - /** Continue to voice call function - */ - void voiceCallContinue(); - - /** Continue to answer call function - */ - void answerCallContinue(); - - /** Continue to hang call function - */ - void hangCallContinue(); - - /** Continue to retrieve calling number function - */ - void retrieveCallingNumberContinue(); - - /** Parse CLCC response from buffer - @param number Number initial for extract substring of response - @param nlength Substring length - @return true if successful - */ - bool parseCLCC(char* number, int nlength); - -}; - -#endif diff --git a/libraries/GSM/src/GSM3SoftSerial.cpp b/libraries/GSM/src/GSM3SoftSerial.cpp deleted file mode 100644 index ef87060cad8..00000000000 --- a/libraries/GSM/src/GSM3SoftSerial.cpp +++ /dev/null @@ -1,524 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include "GSM3SoftSerial.h" -#include "GSM3IO.h" -#include -#include -#include "pins_arduino.h" -#include -#include - -#define __XON__ 0x11 -#define __XOFF__ 0x13 - -#define _GSMSOFTSERIALFLAGS_ESCAPED_ 0x01 -#define _GSMSOFTSERIALFLAGS_SENTXOFF_ 0x02 - -// -// Lookup table -// -#define __PARAGRAPHGUARD__ 50 -typedef struct _DELAY_TABLE -{ - long baud; - unsigned short rx_delay_centering; - unsigned short rx_delay_intrabit; - unsigned short rx_delay_stopbit; - unsigned short tx_delay; -} DELAY_TABLE; - -#if F_CPU == 16000000 - -static const DELAY_TABLE PROGMEM table[] = -{ - // baud rxcenter rxintra rxstop tx - { 115200, 1, 17, 17, 12, }, - { 57600, 10, 37, 37, 33, }, - { 38400, 25, 57, 57, 54, }, - { 31250, 31, 70, 70, 68, }, - { 28800, 34, 77, 77, 74, }, - { 19200, 54, 117, 117, 114, }, - { 14400, 74, 156, 156, 153, }, - { 9600, 114, 236, 236, 233, }, - { 4800, 233, 474, 474, 471, }, - { 2400, 471, 950, 950, 947, }, - { 1200, 947, 1902, 1902, 1899, }, - { 300, 3804, 7617, 7617, 7614, }, -}; - -const int XMIT_START_ADJUSTMENT = 5; - -#elif F_CPU == 8000000 - -static const DELAY_TABLE table[] PROGMEM = -{ - // baud rxcenter rxintra rxstop tx - { 115200, 1, 5, 5, 3, }, - { 57600, 1, 15, 15, 13, }, - { 38400, 2, 25, 26, 23, }, - { 31250, 7, 32, 33, 29, }, - { 28800, 11, 35, 35, 32, }, - { 19200, 20, 55, 55, 52, }, - { 14400, 30, 75, 75, 72, }, - { 9600, 50, 114, 114, 112, }, - { 4800, 110, 233, 233, 230, }, - { 2400, 229, 472, 472, 469, }, - { 1200, 467, 948, 948, 945, }, - { 300, 1895, 3805, 3805, 3802, }, -}; - -const int XMIT_START_ADJUSTMENT = 4; - -#elif F_CPU == 20000000 - -// 20MHz support courtesy of the good people at macegr.com. -// Thanks, Garrett! - -static const DELAY_TABLE PROGMEM table[] = -{ - // baud rxcenter rxintra rxstop tx - { 115200, 3, 21, 21, 18, }, - { 57600, 20, 43, 43, 41, }, - { 38400, 37, 73, 73, 70, }, - { 31250, 45, 89, 89, 88, }, - { 28800, 46, 98, 98, 95, }, - { 19200, 71, 148, 148, 145, }, - { 14400, 96, 197, 197, 194, }, - { 9600, 146, 297, 297, 294, }, - { 4800, 296, 595, 595, 592, }, - { 2400, 592, 1189, 1189, 1186, }, - { 1200, 1187, 2379, 2379, 2376, }, - { 300, 4759, 9523, 9523, 9520, }, -}; - -const int XMIT_START_ADJUSTMENT = 6; - -#else - -#error This version of GSM3SoftSerial supports only 20, 16 and 8MHz processors - -#endif - -GSM3SoftSerial* GSM3SoftSerial::_activeObject=0; - -GSM3SoftSerial::GSM3SoftSerial(): - _rx_delay_centering(0), - _rx_delay_intrabit(0), - _rx_delay_stopbit(0), - _tx_delay(0), - cb(this) -{ - setTX(); - setRX(); - //comStatus=0; - //waitingAnswer=false; -} - -int GSM3SoftSerial::begin(long speed) -{ - _rx_delay_centering = _rx_delay_intrabit = _rx_delay_stopbit = _tx_delay = 0; - - for (unsigned i=0; ifinalWrite(0x77); - return this->finalWrite(0xEE); - } - - if(c==0x13) - { - this->finalWrite(0x77); - return this->finalWrite(0xEC); - } - - if(c==0x77) - { - this->finalWrite(0x77); - return this->finalWrite(0x88); - } - - return this->finalWrite(c); -} - -size_t GSM3SoftSerial::finalWrite(uint8_t c) -{ - - uint8_t oldSREG = SREG; - cli(); // turn off interrupts for a clean txmit - - // Write the start bit - tx_pin_write(LOW); - tunedDelay(_tx_delay + XMIT_START_ADJUSTMENT); - - // Write each of the 8 bits - for (byte mask = 0x01; mask; mask <<= 1) - { - if (c & mask) // choose bit - tx_pin_write(HIGH); // send 1 - else - tx_pin_write(LOW); // send 0 - tunedDelay(_tx_delay); - } - - tx_pin_write(HIGH); // restore pin to natural state - - SREG = oldSREG; // turn interrupts back on - tunedDelay(_tx_delay); - - return 1; -} - -/*inline*/ void GSM3SoftSerial::tunedDelay(uint16_t delay) { - uint8_t tmp=0; - - asm volatile("sbiw %0, 0x01 \n\t" - "ldi %1, 0xFF \n\t" - "cpi %A0, 0xFF \n\t" - "cpc %B0, %1 \n\t" - "brne .-10 \n\t" - : "+r" (delay), "+a" (tmp) - : "0" (delay) - ); -} - -void GSM3SoftSerial::tx_pin_write(uint8_t pin_state) -{ - // Direct port manipulation is faster than digitalWrite/Read - if (pin_state == LOW) - *_transmitPortRegister &= ~_transmitBitMask; - else - *_transmitPortRegister |= _transmitBitMask; -} - -void GSM3SoftSerial::setTX() -{ - pinMode(__TXPIN__, OUTPUT); - digitalWrite(__TXPIN__, HIGH); - // For digital port direct manipulation - _transmitBitMask = digitalPinToBitMask(__TXPIN__); - uint8_t port = digitalPinToPort(__TXPIN__); - _transmitPortRegister = portOutputRegister(port); -} - -void GSM3SoftSerial::setRX() -{ - pinMode(__RXPIN__, INPUT); - digitalWrite(__RXPIN__, HIGH); // pullup for normal logic! - // For digital port direct manipulation - _receiveBitMask = digitalPinToBitMask(__RXPIN__); - uint8_t port = digitalPinToPort(__RXPIN__); - _receivePortRegister = portInputRegister(port); - -#ifdef __AVR_ATmega32U4__ -//#define __RXINT__ 1 - attachInterrupt(__RXINT__, GSM3SoftSerial::handle_interrupt, FALLING); -#endif - // This line comes from the High Middle Ages... - // attachInterrupt(__RXINT__, GSM3SoftSerial::handle_interrupt, FALLING); -} - -void GSM3SoftSerial::handle_interrupt() -{ - if(_activeObject) - _activeObject->recv(); -} - -uint8_t GSM3SoftSerial::rx_pin_read() -{ - // Digital port manipulation - return *_receivePortRegister & _receiveBitMask; -} - -void GSM3SoftSerial::recv() -{ - -#if GCC_VERSION < 40302 -// Work-around for avr-gcc 4.3.0 OSX version bug -// Preserve the registers that the compiler misses -// (courtesy of Arduino forum user *etracer*) - asm volatile( - "push r18 \n\t" - "push r19 \n\t" - "push r20 \n\t" - "push r21 \n\t" - "push r22 \n\t" - "push r23 \n\t" - "push r26 \n\t" - "push r27 \n\t" - ::); -#endif - - bool firstByte=true; - byte thisHead; - - uint8_t d = 0; - bool morebytes=false; - //bool fullbuffer=(cb.availableBytes()<3); - bool fullbuffer; - bool capturado_fullbuffer = 0; - int i; - byte oldTail; - - // If RX line is high, then we don't see any start bit - // so interrupt is probably not for us - if (!rx_pin_read()) - { - do - { - oldTail=cb.getTail(); - // Wait approximately 1/2 of a bit width to "center" the sample - tunedDelay(_rx_delay_centering); - - fullbuffer=(cb.availableBytes()<6); - - - if(fullbuffer&&(!capturado_fullbuffer)) - tx_pin_write(LOW); - - - // Read each of the 8 bits - for (uint8_t i=0x1; i; i <<= 1) - { - tunedDelay(_rx_delay_intrabit); - uint8_t noti = ~i; - if (rx_pin_read()) - d |= i; - else // else clause added to ensure function timing is ~balanced - d &= noti; - - if(fullbuffer&&(!capturado_fullbuffer)) - { - if((uint8_t)__XOFF__ & i) - tx_pin_write(HIGH); - else - tx_pin_write(LOW); - } - } - - if(fullbuffer&&(!capturado_fullbuffer)) - { - tunedDelay(_rx_delay_intrabit); - tx_pin_write(HIGH); - } - - // So, we know the buffer is full, and we have sent a XOFF - if (fullbuffer) - { - capturado_fullbuffer =1; - _flags |=_GSMSOFTSERIALFLAGS_SENTXOFF_; - } - - - // skip the stop bit - if (!fullbuffer) tunedDelay(_rx_delay_stopbit); - - if(keepThisChar(&d)) - { - cb.write(d); - if(firstByte) - { - firstByte=false; - thisHead=cb.getTail(); - } - } - - - // This part is new. It is used to detect the end of a "paragraph" - // Caveat: the old fashion would let processor a bit of time between bytes, - // that here is lost - // This active waiting avoids drifting - morebytes=false; - // TO-DO. This PARAGRAPHGUARD is empyric. We should test it for every speed - for(i=0;i<__PARAGRAPHGUARD__;i++) - { - tunedDelay(1); - if(!rx_pin_read()) - { - morebytes=true; - break; - } - } - }while(morebytes); - // If we find a line feed, we are at the end of a paragraph - // check! - - if (fullbuffer) - { - // And... go handle it! - if(mgr) - mgr->manageMsg(thisHead, cb.getTail()); - } - else if(d==10) - { - // And... go handle it! - if(mgr) - mgr->manageMsg(thisHead, cb.getTail()); - } - else if (d==32) - { - // And... go handle it! - if(mgr) - mgr->manageMsg(thisHead, cb.getTail()); - } - } - -#if GCC_VERSION < 40302 -// Work-around for avr-gcc 4.3.0 OSX version bug -// Restore the registers that the compiler misses - asm volatile( - "pop r27 \n\t" - "pop r26 \n\t" - "pop r23 \n\t" - "pop r22 \n\t" - "pop r21 \n\t" - "pop r20 \n\t" - "pop r19 \n\t" - "pop r18 \n\t" - ::); -#endif -} - -bool GSM3SoftSerial::keepThisChar(uint8_t* c) -{ - // Horrible things for Quectel XON/XOFF - // 255 is the answer to a XOFF - // It comes just once - if((*c==255)&&(_flags & _GSMSOFTSERIALFLAGS_SENTXOFF_)) - { - _flags ^= _GSMSOFTSERIALFLAGS_SENTXOFF_; - return false; - } - - // 0x77, w, is the escape character - if(*c==0x77) - { - _flags |= _GSMSOFTSERIALFLAGS_ESCAPED_; - return false; - } - - // and these are the escaped codes - if(_flags & _GSMSOFTSERIALFLAGS_ESCAPED_) - { - if(*c==0xEE) - *c=0x11; - else if(*c==0xEC) - *c=0x13; - else if(*c==0x88) - *c=0x77; - - _flags ^= _GSMSOFTSERIALFLAGS_ESCAPED_; - return true; - } - - return true; -} - -void GSM3SoftSerial::spaceAvailable() -{ - // If there is spaceAvailable in the buffer, lets send a XON - finalWrite((byte)__XON__); -} - - -// This is here to avoid problems with Arduino compiler -void GSM3SoftSerialMgr::manageMsg(byte from, byte to){}; - -//#define PCINT1_vect _VECTOR(2) -//#undef PCINT1_vect - -#if defined(PCINT0_vect) -ISR(PCINT0_vect) -{ - GSM3SoftSerial::handle_interrupt(); -} -#endif - -#if defined(PCINT1_vect) -ISR(PCINT1_vect) -{ - GSM3SoftSerial::handle_interrupt(); -} -#endif - -#if defined(PCINT2_vect) -ISR(PCINT2_vect) -{ - GSM3SoftSerial::handle_interrupt(); -} -#endif - -#if defined(PCINT3_vect) -ISR(PCINT3_vect) -{ - GSM3SoftSerial::handle_interrupt(); -} -#endif - diff --git a/libraries/GSM/src/GSM3SoftSerial.h b/libraries/GSM/src/GSM3SoftSerial.h deleted file mode 100644 index c35ef684894..00000000000 --- a/libraries/GSM/src/GSM3SoftSerial.h +++ /dev/null @@ -1,174 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef __GSM3_SOFTSERIAL__ -#define __GSM3_SOFTSERIAL__ - -// An adaptation of NewSoftSerial for Modem Shields -// Assumes directly that Serial is attached to Pins 2 and 3, not inverse -// We are implementing it because NewSoftSerial does not deal correctly with floods -// of data -#include "GSM3CircularBuffer.h" -#include - -/* -#define _COMSTATUS_ANSWERRECEIVED_ 0x100 -#define _COMSTATUS_SMSRECEIVED_ 0x80 -#define _COMSTATUS_CALLRECEIVED_ 0x40 - -// PLEASE, when accessing the sockets use "for" and >> (bitwise operator) -#define _COMSTATUS_SOCKET6RECEIVED_ 0x20 -#define _COMSTATUS_SOCKET5RECEIVED_ 0x10 -#define _COMSTATUS_SOCKET4RECEIVED_ 0x08 -#define _COMSTATUS_SOCKET3RECEIVED_ 0x04 -#define _COMSTATUS_SOCKET2RECEIVED_ 0x02 -#define _COMSTATUS_SOCKET1RECEIVED_ 0x01 - -#define __CALLTABLEMASK__ 0x3 -*/ - -class GSM3SoftSerialMgr -{ - public: - - /** Manages soft serial message - @param from Initial byte - @param to Final byte - */ - virtual void manageMsg(byte from, byte to); -}; - -// This class manages software serial communications -// Changing it so it doesn't know about modems or whatever - -class GSM3SoftSerial : public GSM3CircularBufferManager -{ - private: - - uint8_t _receiveBitMask; - volatile uint8_t *_receivePortRegister; - uint8_t _transmitBitMask; - volatile uint8_t *_transmitPortRegister; - - static GSM3SoftSerial* _activeObject; - GSM3SoftSerialMgr* mgr; - - uint16_t _rx_delay_centering; - uint16_t _rx_delay_intrabit; - uint16_t _rx_delay_stopbit; - uint16_t _tx_delay; - uint8_t _flags; - - /** Write in tx_pin - @param pin_state Pin state - */ - void tx_pin_write(uint8_t pin_state); - - /** Set transmission - */ - void setTX(); - - /** Set receiver - */ - void setRX(); - - /** Receive - */ - void recv(); - - /** Read from rx_pin - @return receive bit mask - */ - uint8_t rx_pin_read(); - - void setComsReceived(); - - /** Write a character in serial connection, final action after escaping - @param c Character - @return 1 if succesful, 0 if transmission delay = 0 - */ - virtual size_t finalWrite(uint8_t); - - /** Decide, attending to escapes, if the received character should we - kept, forgotten, or changed - @param c Character, may be changed - @return 1 if shall be kept, 0 if forgotten - */ - bool keepThisChar(uint8_t* c); - - // Checks the buffer for well-known events. - //bool recognizeUnsolicitedEvent(byte oldTail); - - public: - - /** Tuned delay in microcontroller - @param delay Time to delay - */ - static /*inline */void tunedDelay(uint16_t delay); - - GSM3CircularBuffer cb; // Circular buffer - - /** Register serial manager - @param manager Serial manager - */ - inline void registerMgr(GSM3SoftSerialMgr* manager){mgr=manager;}; - - /** If there is spaceAvailable in the buffer, lets send a XON - */ - void spaceAvailable(); - - /** Write a character in serial connection - @param c Character - @return 1 if succesful, 0 if transmission delay = 0 - */ - virtual size_t write(uint8_t); - - /** Constructor */ - GSM3SoftSerial(); - - /** Establish serial connection - @param speed Baudrate - @return - */ - int begin(long speed); - - /** Manage interruptions - */ - static inline void handle_interrupt(); - - /** Close serial connection - */ - void close(); -}; - -#endif \ No newline at end of file diff --git a/libraries/GSM/src/GSM3VoiceCallService.cpp b/libraries/GSM/src/GSM3VoiceCallService.cpp deleted file mode 100644 index fefb0f04318..00000000000 --- a/libraries/GSM/src/GSM3VoiceCallService.cpp +++ /dev/null @@ -1,144 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#include -#include - -#include -GSM3ShieldV1VoiceProvider theShieldV1VoiceProvider; - -// While there is only a shield (ShieldV1) we will include it by default - -#define GSM3VOICECALLSERVICE_SYNCH 0x01 // 1: synchronous 0: asynchronous -#define __TOUT__ 10000 - - - - -GSM3VoiceCallService::GSM3VoiceCallService(bool synch) -{ - if(synch) - flags |= GSM3VOICECALLSERVICE_SYNCH; - theGSM3MobileVoiceProvider->initialize(); -} - -GSM3_voiceCall_st GSM3VoiceCallService::getvoiceCallStatus() -{ - if(theGSM3MobileVoiceProvider==0) - return IDLE_CALL; - - return theGSM3MobileVoiceProvider->getvoiceCallStatus(); -} - -int GSM3VoiceCallService::ready() -{ - if(theGSM3MobileVoiceProvider==0) - return 0; - - return theGSM3MobileVoiceProvider->ready(); -} - -int GSM3VoiceCallService::voiceCall(const char* to, unsigned long timeout) -{ - if(theGSM3MobileVoiceProvider==0) - return 0; - - if(flags & GSM3VOICECALLSERVICE_SYNCH ) - { - theGSM3MobileVoiceProvider->voiceCall(to); - unsigned long m; - m=millis(); - // Wait an answer for timeout - while(((millis()-m)< timeout )&&(getvoiceCallStatus()==CALLING)) - delay(100); - - if(getvoiceCallStatus()==TALKING) - return 1; - else - return 0; - } - else - { - return theGSM3MobileVoiceProvider->voiceCall(to); - } - -} - -int GSM3VoiceCallService::answerCall() -{ - if(theGSM3MobileVoiceProvider==0) - return 0; - - return waitForAnswerIfNeeded(theGSM3MobileVoiceProvider->answerCall()); -} - -int GSM3VoiceCallService::hangCall() -{ - if(theGSM3MobileVoiceProvider==0) - return 0; - - return waitForAnswerIfNeeded(theGSM3MobileVoiceProvider->hangCall()); -} - -int GSM3VoiceCallService::retrieveCallingNumber(char* buffer, int bufsize) -{ - if(theGSM3MobileVoiceProvider==0) - return 0; - - return waitForAnswerIfNeeded(theGSM3MobileVoiceProvider->retrieveCallingNumber(buffer, bufsize)); -} - -int GSM3VoiceCallService::waitForAnswerIfNeeded(int returnvalue) -{ - // If synchronous - if(flags & GSM3VOICECALLSERVICE_SYNCH ) - { - unsigned long m; - m=millis(); - // Wait for __TOUT__ - while(((millis()-m)< __TOUT__ )&&(ready()==0)) - delay(100); - // If everything was OK, return 1 - // else (timeout or error codes) return 0; - if(ready()==1) - return 1; - else - return 0; - } - // If not synchronous just kick ahead the coming result - return ready(); -} - - - - diff --git a/libraries/GSM/src/GSM3VoiceCallService.h b/libraries/GSM/src/GSM3VoiceCallService.h deleted file mode 100644 index 089d5797a6e..00000000000 --- a/libraries/GSM/src/GSM3VoiceCallService.h +++ /dev/null @@ -1,102 +0,0 @@ -/* -This file is part of the GSM3 communications library for Arduino --- Multi-transport communications platform --- Fully asynchronous --- Includes code for the Arduino-Telefonica GSM/GPRS Shield V1 --- Voice calls --- SMS --- TCP/IP connections --- HTTP basic clients - -This library has been developed by Telef�nica Digital - PDI - -- Physical Internet Lab, as part as its collaboration with -Arduino and the Open Hardware Community. - -September-December 2012 - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -The latest version of this library can always be found at -https://github.com/BlueVia/Official-Arduino -*/ -#ifndef _GSM3VOICECALLSERVICE_ -#define _GSM3VOICECALLSERVICE_ - -#include -#include - -class GSM3VoiceCallService -{ - private: - uint8_t flags; - - /** Make synchronous the functions, if needed - @param returnvalue Return value - @return returns 0 if last command is still executing, 1 success, >1 error - */ - int waitForAnswerIfNeeded(int returnvalue); - - public: - /** Service creation - @param synch If true, the service calls are synchronois - */ - GSM3VoiceCallService(bool synch=true); - - /** Voice call status - @return Status of the voice call, as described in GSM3MobileVoiceProvider.h - { IDLE_CALL, CALLING, RECEIVINGCALL, TALKING}; - */ - GSM3_voiceCall_st getvoiceCallStatus(); - - /** Get last command status - @return Returns 0 if last command is still executing, 1 success, >1 error - */ - int ready(); - - /** Place a voice call. If asynchronous, returns while ringing. If synchronous - returns if the call is stablished or cancelled. - @param to Receiver number. Country extension can be used or not. - Char buffer should not be released or used until command is over - @param timeout In millisecods. Time ringing before closing the call. - Only used in synchronous mode. - If zero, ring undefinitely - @return In asynchronous mode returns 0 if last command is still executing, 1 success, >1 error - In synchronous mode returns 1 if the call is placed, 0 if not. - */ - int voiceCall(const char* to, unsigned long timeout=30000); - - /** Accept an incoming voice call - @return In asynchronous mode returns 0 if last command is still executing, 1 success, >1 error - In synchronous mode returns 1 if the call is answered, 0 if not. - */ - int answerCall(); - - /** Hang a stablished call or an incoming ring - @return In asynchronous mode returns 0 if last command is still executing, 1 success, >1 error - In synchronous mode returns 1 if the call is answered, 0 if not. - */ - int hangCall(); - - /** Retrieve the calling number, put it in buffer - @param buffer pointer to the buffer memory - @param bufsize size of available memory area, at least should be 10 characters - @return In asynchronous mode returns 0 if last command is still executing, 1 success, >1 error - In synchronous mode returns 1 if the number is correcty taken 0 if not - */ - int retrieveCallingNumber(char* buffer, int bufsize); -}; - - -#endif \ No newline at end of file diff --git a/libraries/Stepper/README.adoc b/libraries/Stepper/README.adoc deleted file mode 100644 index 9d4d0521617..00000000000 --- a/libraries/Stepper/README.adoc +++ /dev/null @@ -1,26 +0,0 @@ -= Stepper Library for Arduino = - -This library allows you to control unipolar or bipolar stepper motors. To use it you will need a stepper motor, and the appropriate hardware to control it. - -For more information about this library please visit us at -http://www.arduino.cc/en/Reference/Stepper - -== License == - -Copyright (c) Arduino LLC. All right reserved. -Copyright (c) Sebastian Gassner. All right reserved. -Copyright (c) Noah Shibley. All right reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/libraries/Stepper/examples/MotorKnob/MotorKnob.ino b/libraries/Stepper/examples/MotorKnob/MotorKnob.ino deleted file mode 100644 index 5cf12ec850c..00000000000 --- a/libraries/Stepper/examples/MotorKnob/MotorKnob.ino +++ /dev/null @@ -1,39 +0,0 @@ -/* - * MotorKnob - * - * A stepper motor follows the turns of a potentiometer - * (or other sensor) on analog input 0. - * - * http://www.arduino.cc/en/Reference/Stepper - * This example code is in the public domain. - */ - -#include - -// change this to the number of steps on your motor -#define STEPS 100 - -// create an instance of the stepper class, specifying -// the number of steps of the motor and the pins it's -// attached to -Stepper stepper(STEPS, 8, 9, 10, 11); - -// the previous reading from the analog input -int previous = 0; - -void setup() { - // set the speed of the motor to 30 RPMs - stepper.setSpeed(30); -} - -void loop() { - // get the sensor value - int val = analogRead(0); - - // move a number of steps equal to the change in the - // sensor reading - stepper.step(val - previous); - - // remember the previous value of the sensor - previous = val; -} \ No newline at end of file diff --git a/libraries/Stepper/examples/stepper_oneRevolution/stepper_oneRevolution.ino b/libraries/Stepper/examples/stepper_oneRevolution/stepper_oneRevolution.ino deleted file mode 100644 index 373eb602259..00000000000 --- a/libraries/Stepper/examples/stepper_oneRevolution/stepper_oneRevolution.ino +++ /dev/null @@ -1,44 +0,0 @@ - -/* - Stepper Motor Control - one revolution - - This program drives a unipolar or bipolar stepper motor. - The motor is attached to digital pins 8 - 11 of the Arduino. - - The motor should revolve one revolution in one direction, then - one revolution in the other direction. - - - Created 11 Mar. 2007 - Modified 30 Nov. 2009 - by Tom Igoe - - */ - -#include - -const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution -// for your motor - -// initialize the stepper library on pins 8 through 11: -Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); - -void setup() { - // set the speed at 60 rpm: - myStepper.setSpeed(60); - // initialize the serial port: - Serial.begin(9600); -} - -void loop() { - // step one revolution in one direction: - Serial.println("clockwise"); - myStepper.step(stepsPerRevolution); - delay(500); - - // step one revolution in the other direction: - Serial.println("counterclockwise"); - myStepper.step(-stepsPerRevolution); - delay(500); -} - diff --git a/libraries/Stepper/examples/stepper_oneStepAtATime/stepper_oneStepAtATime.ino b/libraries/Stepper/examples/stepper_oneStepAtATime/stepper_oneStepAtATime.ino deleted file mode 100644 index e6c141f4d94..00000000000 --- a/libraries/Stepper/examples/stepper_oneStepAtATime/stepper_oneStepAtATime.ino +++ /dev/null @@ -1,44 +0,0 @@ - -/* - Stepper Motor Control - one step at a time - - This program drives a unipolar or bipolar stepper motor. - The motor is attached to digital pins 8 - 11 of the Arduino. - - The motor will step one step at a time, very slowly. You can use this to - test that you've got the four wires of your stepper wired to the correct - pins. If wired correctly, all steps should be in the same direction. - - Use this also to count the number of steps per revolution of your motor, - if you don't know it. Then plug that number into the oneRevolution - example to see if you got it right. - - Created 30 Nov. 2009 - by Tom Igoe - - */ - -#include - -const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution -// for your motor - -// initialize the stepper library on pins 8 through 11: -Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); - -int stepCount = 0; // number of steps the motor has taken - -void setup() { - // initialize the serial port: - Serial.begin(9600); -} - -void loop() { - // step one step: - myStepper.step(1); - Serial.print("steps:"); - Serial.println(stepCount); - stepCount++; - delay(500); -} - diff --git a/libraries/Stepper/examples/stepper_speedControl/stepper_speedControl.ino b/libraries/Stepper/examples/stepper_speedControl/stepper_speedControl.ino deleted file mode 100644 index 5eb4f6a6684..00000000000 --- a/libraries/Stepper/examples/stepper_speedControl/stepper_speedControl.ino +++ /dev/null @@ -1,48 +0,0 @@ - -/* - Stepper Motor Control - speed control - - This program drives a unipolar or bipolar stepper motor. - The motor is attached to digital pins 8 - 11 of the Arduino. - A potentiometer is connected to analog input 0. - - The motor will rotate in a clockwise direction. The higher the potentiometer value, - the faster the motor speed. Because setSpeed() sets the delay between steps, - you may notice the motor is less responsive to changes in the sensor value at - low speeds. - - Created 30 Nov. 2009 - Modified 28 Oct 2010 - by Tom Igoe - - */ - -#include - -const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution -// for your motor - - -// initialize the stepper library on pins 8 through 11: -Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11); - -int stepCount = 0; // number of steps the motor has taken - -void setup() { - // nothing to do inside the setup -} - -void loop() { - // read the sensor value: - int sensorReading = analogRead(A0); - // map it to a range from 0 to 100: - int motorSpeed = map(sensorReading, 0, 1023, 0, 100); - // set the motor speed: - if (motorSpeed > 0) { - myStepper.setSpeed(motorSpeed); - // step 1/100 of a revolution: - myStepper.step(stepsPerRevolution / 100); - } -} - - diff --git a/libraries/Stepper/keywords.txt b/libraries/Stepper/keywords.txt deleted file mode 100644 index 5e58a66b018..00000000000 --- a/libraries/Stepper/keywords.txt +++ /dev/null @@ -1,28 +0,0 @@ -####################################### -# Syntax Coloring Map For Test -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -Stepper KEYWORD1 Stepper - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -step KEYWORD2 -setSpeed KEYWORD2 -version KEYWORD2 - -###################################### -# Instances (KEYWORD2) -####################################### -direction KEYWORD2 -speed KEYWORD2 - - -####################################### -# Constants (LITERAL1) -####################################### diff --git a/libraries/Stepper/library.properties b/libraries/Stepper/library.properties deleted file mode 100644 index 875067a0be9..00000000000 --- a/libraries/Stepper/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=Stepper -version=1.1.3 -author=Arduino -maintainer=Arduino -sentence=Allows Arduino boards to control a variety of stepper motors. -paragraph=This library allows you to control unipolar or bipolar stepper motors. To use it you will need a stepper motor, and the appropriate hardware to control it. -category=Device Control -url=http://www.arduino.cc/en/Reference/Stepper -architectures=* diff --git a/libraries/Stepper/src/Stepper.cpp b/libraries/Stepper/src/Stepper.cpp deleted file mode 100644 index 45faaecd00f..00000000000 --- a/libraries/Stepper/src/Stepper.cpp +++ /dev/null @@ -1,365 +0,0 @@ -/* - * Stepper.cpp - Stepper library for Wiring/Arduino - Version 1.1.0 - * - * Original library (0.1) by Tom Igoe. - * Two-wire modifications (0.2) by Sebastian Gassner - * Combination version (0.3) by Tom Igoe and David Mellis - * Bug fix for four-wire (0.4) by Tom Igoe, bug fix from Noah Shibley - * High-speed stepping mod by Eugene Kozlenko - * Timer rollover fix by Eugene Kozlenko - * Five phase five wire (1.1.0) by Ryan Orendorff - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * - * Drives a unipolar, bipolar, or five phase stepper motor. - * - * When wiring multiple stepper motors to a microcontroller, you quickly run - * out of output pins, with each motor requiring 4 connections. - * - * By making use of the fact that at any time two of the four motor coils are - * the inverse of the other two, the number of control connections can be - * reduced from 4 to 2 for the unipolar and bipolar motors. - * - * A slightly modified circuit around a Darlington transistor array or an - * L293 H-bridge connects to only 2 microcontroler pins, inverts the signals - * received, and delivers the 4 (2 plus 2 inverted ones) output signals - * required for driving a stepper motor. Similarly the Arduino motor shields - * 2 direction pins may be used. - * - * The sequence of control signals for 5 phase, 5 control wires is as follows: - * - * Step C0 C1 C2 C3 C4 - * 1 0 1 1 0 1 - * 2 0 1 0 0 1 - * 3 0 1 0 1 1 - * 4 0 1 0 1 0 - * 5 1 1 0 1 0 - * 6 1 0 0 1 0 - * 7 1 0 1 1 0 - * 8 1 0 1 0 0 - * 9 1 0 1 0 1 - * 10 0 0 1 0 1 - * - * The sequence of control signals for 4 control wires is as follows: - * - * Step C0 C1 C2 C3 - * 1 1 0 1 0 - * 2 0 1 1 0 - * 3 0 1 0 1 - * 4 1 0 0 1 - * - * The sequence of controls signals for 2 control wires is as follows - * (columns C1 and C2 from above): - * - * Step C0 C1 - * 1 0 1 - * 2 1 1 - * 3 1 0 - * 4 0 0 - * - * The circuits can be found at - * - * http://www.arduino.cc/en/Reference/Stepper - */ - -#include "Arduino.h" -#include "Stepper.h" - -/* - * two-wire constructor. - * Sets which wires should control the motor. - */ -Stepper::Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2) -{ - this->step_number = 0; // which step the motor is on - this->direction = 0; // motor direction - this->last_step_time = 0; // time stamp in us of the last step taken - this->number_of_steps = number_of_steps; // total number of steps for this motor - - // Arduino pins for the motor control connection: - this->motor_pin_1 = motor_pin_1; - this->motor_pin_2 = motor_pin_2; - - // setup the pins on the microcontroller: - pinMode(this->motor_pin_1, OUTPUT); - pinMode(this->motor_pin_2, OUTPUT); - - // When there are only 2 pins, set the others to 0: - this->motor_pin_3 = 0; - this->motor_pin_4 = 0; - this->motor_pin_5 = 0; - - // pin_count is used by the stepMotor() method: - this->pin_count = 2; -} - - -/* - * constructor for four-pin version - * Sets which wires should control the motor. - */ -Stepper::Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2, - int motor_pin_3, int motor_pin_4) -{ - this->step_number = 0; // which step the motor is on - this->direction = 0; // motor direction - this->last_step_time = 0; // time stamp in us of the last step taken - this->number_of_steps = number_of_steps; // total number of steps for this motor - - // Arduino pins for the motor control connection: - this->motor_pin_1 = motor_pin_1; - this->motor_pin_2 = motor_pin_2; - this->motor_pin_3 = motor_pin_3; - this->motor_pin_4 = motor_pin_4; - - // setup the pins on the microcontroller: - pinMode(this->motor_pin_1, OUTPUT); - pinMode(this->motor_pin_2, OUTPUT); - pinMode(this->motor_pin_3, OUTPUT); - pinMode(this->motor_pin_4, OUTPUT); - - // When there are 4 pins, set the others to 0: - this->motor_pin_5 = 0; - - // pin_count is used by the stepMotor() method: - this->pin_count = 4; -} - -/* - * constructor for five phase motor with five wires - * Sets which wires should control the motor. - */ -Stepper::Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2, - int motor_pin_3, int motor_pin_4, - int motor_pin_5) -{ - this->step_number = 0; // which step the motor is on - this->direction = 0; // motor direction - this->last_step_time = 0; // time stamp in us of the last step taken - this->number_of_steps = number_of_steps; // total number of steps for this motor - - // Arduino pins for the motor control connection: - this->motor_pin_1 = motor_pin_1; - this->motor_pin_2 = motor_pin_2; - this->motor_pin_3 = motor_pin_3; - this->motor_pin_4 = motor_pin_4; - this->motor_pin_5 = motor_pin_5; - - // setup the pins on the microcontroller: - pinMode(this->motor_pin_1, OUTPUT); - pinMode(this->motor_pin_2, OUTPUT); - pinMode(this->motor_pin_3, OUTPUT); - pinMode(this->motor_pin_4, OUTPUT); - pinMode(this->motor_pin_5, OUTPUT); - - // pin_count is used by the stepMotor() method: - this->pin_count = 5; -} - -/* - * Sets the speed in revs per minute - */ -void Stepper::setSpeed(long whatSpeed) -{ - this->step_delay = 60L * 1000L * 1000L / this->number_of_steps / whatSpeed; -} - -/* - * Moves the motor steps_to_move steps. If the number is negative, - * the motor moves in the reverse direction. - */ -void Stepper::step(int steps_to_move) -{ - int steps_left = abs(steps_to_move); // how many steps to take - - // determine direction based on whether steps_to_mode is + or -: - if (steps_to_move > 0) { this->direction = 1; } - if (steps_to_move < 0) { this->direction = 0; } - - - // decrement the number of steps, moving one step each time: - while (steps_left > 0) - { - unsigned long now = micros(); - // move only if the appropriate delay has passed: - if (now - this->last_step_time >= this->step_delay) - { - // get the timeStamp of when you stepped: - this->last_step_time = now; - // increment or decrement the step number, - // depending on direction: - if (this->direction == 1) - { - this->step_number++; - if (this->step_number == this->number_of_steps) { - this->step_number = 0; - } - } - else - { - if (this->step_number == 0) { - this->step_number = this->number_of_steps; - } - this->step_number--; - } - // decrement the steps left: - steps_left--; - // step the motor to step number 0, 1, ..., {3 or 10} - if (this->pin_count == 5) - stepMotor(this->step_number % 10); - else - stepMotor(this->step_number % 4); - } - } -} - -/* - * Moves the motor forward or backwards. - */ -void Stepper::stepMotor(int thisStep) -{ - if (this->pin_count == 2) { - switch (thisStep) { - case 0: // 01 - digitalWrite(motor_pin_1, LOW); - digitalWrite(motor_pin_2, HIGH); - break; - case 1: // 11 - digitalWrite(motor_pin_1, HIGH); - digitalWrite(motor_pin_2, HIGH); - break; - case 2: // 10 - digitalWrite(motor_pin_1, HIGH); - digitalWrite(motor_pin_2, LOW); - break; - case 3: // 00 - digitalWrite(motor_pin_1, LOW); - digitalWrite(motor_pin_2, LOW); - break; - } - } - if (this->pin_count == 4) { - switch (thisStep) { - case 0: // 1010 - digitalWrite(motor_pin_1, HIGH); - digitalWrite(motor_pin_2, LOW); - digitalWrite(motor_pin_3, HIGH); - digitalWrite(motor_pin_4, LOW); - break; - case 1: // 0110 - digitalWrite(motor_pin_1, LOW); - digitalWrite(motor_pin_2, HIGH); - digitalWrite(motor_pin_3, HIGH); - digitalWrite(motor_pin_4, LOW); - break; - case 2: //0101 - digitalWrite(motor_pin_1, LOW); - digitalWrite(motor_pin_2, HIGH); - digitalWrite(motor_pin_3, LOW); - digitalWrite(motor_pin_4, HIGH); - break; - case 3: //1001 - digitalWrite(motor_pin_1, HIGH); - digitalWrite(motor_pin_2, LOW); - digitalWrite(motor_pin_3, LOW); - digitalWrite(motor_pin_4, HIGH); - break; - } - } - - if (this->pin_count == 5) { - switch (thisStep) { - case 0: // 01101 - digitalWrite(motor_pin_1, LOW); - digitalWrite(motor_pin_2, HIGH); - digitalWrite(motor_pin_3, HIGH); - digitalWrite(motor_pin_4, LOW); - digitalWrite(motor_pin_5, HIGH); - break; - case 1: // 01001 - digitalWrite(motor_pin_1, LOW); - digitalWrite(motor_pin_2, HIGH); - digitalWrite(motor_pin_3, LOW); - digitalWrite(motor_pin_4, LOW); - digitalWrite(motor_pin_5, HIGH); - break; - case 2: // 01011 - digitalWrite(motor_pin_1, LOW); - digitalWrite(motor_pin_2, HIGH); - digitalWrite(motor_pin_3, LOW); - digitalWrite(motor_pin_4, HIGH); - digitalWrite(motor_pin_5, HIGH); - break; - case 3: // 01010 - digitalWrite(motor_pin_1, LOW); - digitalWrite(motor_pin_2, HIGH); - digitalWrite(motor_pin_3, LOW); - digitalWrite(motor_pin_4, HIGH); - digitalWrite(motor_pin_5, LOW); - break; - case 4: // 11010 - digitalWrite(motor_pin_1, HIGH); - digitalWrite(motor_pin_2, HIGH); - digitalWrite(motor_pin_3, LOW); - digitalWrite(motor_pin_4, HIGH); - digitalWrite(motor_pin_5, LOW); - break; - case 5: // 10010 - digitalWrite(motor_pin_1, HIGH); - digitalWrite(motor_pin_2, LOW); - digitalWrite(motor_pin_3, LOW); - digitalWrite(motor_pin_4, HIGH); - digitalWrite(motor_pin_5, LOW); - break; - case 6: // 10110 - digitalWrite(motor_pin_1, HIGH); - digitalWrite(motor_pin_2, LOW); - digitalWrite(motor_pin_3, HIGH); - digitalWrite(motor_pin_4, HIGH); - digitalWrite(motor_pin_5, LOW); - break; - case 7: // 10100 - digitalWrite(motor_pin_1, HIGH); - digitalWrite(motor_pin_2, LOW); - digitalWrite(motor_pin_3, HIGH); - digitalWrite(motor_pin_4, LOW); - digitalWrite(motor_pin_5, LOW); - break; - case 8: // 10101 - digitalWrite(motor_pin_1, HIGH); - digitalWrite(motor_pin_2, LOW); - digitalWrite(motor_pin_3, HIGH); - digitalWrite(motor_pin_4, LOW); - digitalWrite(motor_pin_5, HIGH); - break; - case 9: // 00101 - digitalWrite(motor_pin_1, LOW); - digitalWrite(motor_pin_2, LOW); - digitalWrite(motor_pin_3, HIGH); - digitalWrite(motor_pin_4, LOW); - digitalWrite(motor_pin_5, HIGH); - break; - } - } -} - -/* - version() returns the version of the library: -*/ -int Stepper::version(void) -{ - return 5; -} diff --git a/libraries/Stepper/src/Stepper.h b/libraries/Stepper/src/Stepper.h deleted file mode 100644 index 7b77e729fcf..00000000000 --- a/libraries/Stepper/src/Stepper.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Stepper.h - Stepper library for Wiring/Arduino - Version 1.1.0 - * - * Original library (0.1) by Tom Igoe. - * Two-wire modifications (0.2) by Sebastian Gassner - * Combination version (0.3) by Tom Igoe and David Mellis - * Bug fix for four-wire (0.4) by Tom Igoe, bug fix from Noah Shibley - * High-speed stepping mod by Eugene Kozlenko - * Timer rollover fix by Eugene Kozlenko - * Five phase five wire (1.1.0) by Ryan Orendorff - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * - * Drives a unipolar, bipolar, or five phase stepper motor. - * - * When wiring multiple stepper motors to a microcontroller, you quickly run - * out of output pins, with each motor requiring 4 connections. - * - * By making use of the fact that at any time two of the four motor coils are - * the inverse of the other two, the number of control connections can be - * reduced from 4 to 2 for the unipolar and bipolar motors. - * - * A slightly modified circuit around a Darlington transistor array or an - * L293 H-bridge connects to only 2 microcontroler pins, inverts the signals - * received, and delivers the 4 (2 plus 2 inverted ones) output signals - * required for driving a stepper motor. Similarly the Arduino motor shields - * 2 direction pins may be used. - * - * The sequence of control signals for 5 phase, 5 control wires is as follows: - * - * Step C0 C1 C2 C3 C4 - * 1 0 1 1 0 1 - * 2 0 1 0 0 1 - * 3 0 1 0 1 1 - * 4 0 1 0 1 0 - * 5 1 1 0 1 0 - * 6 1 0 0 1 0 - * 7 1 0 1 1 0 - * 8 1 0 1 0 0 - * 9 1 0 1 0 1 - * 10 0 0 1 0 1 - * - * The sequence of control signals for 4 control wires is as follows: - * - * Step C0 C1 C2 C3 - * 1 1 0 1 0 - * 2 0 1 1 0 - * 3 0 1 0 1 - * 4 1 0 0 1 - * - * The sequence of controls signals for 2 control wires is as follows - * (columns C1 and C2 from above): - * - * Step C0 C1 - * 1 0 1 - * 2 1 1 - * 3 1 0 - * 4 0 0 - * - * The circuits can be found at - * - * http://www.arduino.cc/en/Reference/Stepper - */ - -// ensure this library description is only included once -#ifndef Stepper_h -#define Stepper_h - -// library interface description -class Stepper { - public: - // constructors: - Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2); - Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2, - int motor_pin_3, int motor_pin_4); - Stepper(int number_of_steps, int motor_pin_1, int motor_pin_2, - int motor_pin_3, int motor_pin_4, - int motor_pin_5); - - // speed setter method: - void setSpeed(long whatSpeed); - - // mover method: - void step(int number_of_steps); - - int version(void); - - private: - void stepMotor(int this_step); - - int direction; // Direction of rotation - unsigned long step_delay; // delay between steps, in ms, based on speed - int number_of_steps; // total number of steps this motor can take - int pin_count; // how many pins are in use. - int step_number; // which step the motor is on - - // motor pin numbers: - int motor_pin_1; - int motor_pin_2; - int motor_pin_3; - int motor_pin_4; - int motor_pin_5; // Only 5 phase motor - - unsigned long last_step_time; // time stamp in us of when the last step was taken -}; - -#endif - diff --git a/libraries/TFT/README.adoc b/libraries/TFT/README.adoc deleted file mode 100644 index 0550e2d3472..00000000000 --- a/libraries/TFT/README.adoc +++ /dev/null @@ -1,26 +0,0 @@ -= TFT Library for Arduino = - -This library enables an Arduino board to communicate with the Arduino TFT LCD screen. It simplifies the process for drawing shapes, lines, images, and text to the screen. - -For more information about this library please visit us at -http://www.arduino.cc/en/Reference/TFTLibrary - -== License == - -Copyright (c) Arduino LLC. All right reserved. -Copyright (c) Enrico Gueli. All right reserved. -Copyright (c) 2012, Adafruit Industries. All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/libraries/TFT/examples/Arduino/TFTBitmapLogo/TFTBitmapLogo.ino b/libraries/TFT/examples/Arduino/TFTBitmapLogo/TFTBitmapLogo.ino deleted file mode 100644 index d1b8a731dfb..00000000000 --- a/libraries/TFT/examples/Arduino/TFTBitmapLogo/TFTBitmapLogo.ino +++ /dev/null @@ -1,108 +0,0 @@ -/* - - Arduino TFT Bitmap Logo example - - This example reads an image file from a micro-SD card - and draws it on the screen, at random locations. - - In this sketch, the Arduino logo is read from a micro-SD card. - There is a .bmp file included with this sketch. - - open the sketch folder (Ctrl-K or Cmd-K) - - copy the "arduino.bmp" file to a micro-SD - - put the SD into the SD slot of the Arduino TFT module. - - This example code is in the public domain. - - Created 19 April 2013 by Enrico Gueli - - http://www.arduino.cc/en/Tutorial/TFTBitmapLogo - - */ - -// include the necessary libraries -#include -#include -#include // Arduino LCD library - -// pin definition for the Uno -#define sd_cs 4 -#define lcd_cs 10 -#define dc 9 -#define rst 8 - -// pin definition for the Leonardo -//#define sd_cs 8 -//#define lcd_cs 7 -//#define dc 0 -//#define rst 1 - -TFT TFTscreen = TFT(lcd_cs, dc, rst); - -// this variable represents the image to be drawn on screen -PImage logo; - - -void setup() { - // initialize the GLCD and show a message - // asking the user to open the serial line - TFTscreen.begin(); - TFTscreen.background(255, 255, 255); - - TFTscreen.stroke(0, 0, 255); - TFTscreen.println(); - TFTscreen.println(F("Arduino TFT Bitmap Example")); - TFTscreen.stroke(0, 0, 0); - TFTscreen.println(F("Open serial monitor")); - TFTscreen.println(F("to run the sketch")); - - // initialize the serial port: it will be used to - // print some diagnostic info - Serial.begin(9600); - while (!Serial) { - // wait for serial port to connect. Needed for native USB port only - } - - // clear the GLCD screen before starting - TFTscreen.background(255, 255, 255); - - // try to access the SD card. If that fails (e.g. - // no card present), the setup process will stop. - Serial.print(F("Initializing SD card...")); - if (!SD.begin(sd_cs)) { - Serial.println(F("failed!")); - return; - } - Serial.println(F("OK!")); - - // initialize and clear the GLCD screen - TFTscreen.begin(); - TFTscreen.background(255, 255, 255); - - // now that the SD card can be access, try to load the - // image file. - logo = TFTscreen.loadImage("arduino.bmp"); - if (!logo.isValid()) { - Serial.println(F("error while loading arduino.bmp")); - } -} - -void loop() { - // don't do anything if the image wasn't loaded correctly. - if (logo.isValid() == false) { - return; - } - - Serial.println(F("drawing image")); - - // get a random location where to draw the image. - // To avoid the image to be draw outside the screen, - // take into account the image size. - int x = random(TFTscreen.width() - logo.width()); - int y = random(TFTscreen.height() - logo.height()); - - // draw the image to the screen - TFTscreen.image(logo, x, y); - - // wait a little bit before drawing again - delay(1500); -} diff --git a/libraries/TFT/examples/Arduino/TFTBitmapLogo/arduino.bmp b/libraries/TFT/examples/Arduino/TFTBitmapLogo/arduino.bmp deleted file mode 100644 index 09c670ab54f..00000000000 Binary files a/libraries/TFT/examples/Arduino/TFTBitmapLogo/arduino.bmp and /dev/null differ diff --git a/libraries/TFT/examples/Arduino/TFTColorPicker/TFTColorPicker.ino b/libraries/TFT/examples/Arduino/TFTColorPicker/TFTColorPicker.ino deleted file mode 100644 index ba71d1e5708..00000000000 --- a/libraries/TFT/examples/Arduino/TFTColorPicker/TFTColorPicker.ino +++ /dev/null @@ -1,67 +0,0 @@ -/* - - TFT Color Picker - - This example for the Arduino screen reads the input of - potentiometers or analog sensors attached to A0, A1, - and A2 and uses the values to change the screen's color. - - This example code is in the public domain. - - Created 15 April 2013 by Scott Fitzgerald - - http://www.arduino.cc/en/Tutorial/TFTColorPicker - - */ - -// pin definition for the Uno -#define cs 10 -#define dc 9 -#define rst 8 - -// pin definition for the Leonardo -// #define cs 7 -// #define dc 0 -// #define rst 1 - -#include // Arduino LCD library -#include - -TFT TFTscreen = TFT(cs, dc, rst); - -void setup() { - // begin serial communication - Serial.begin(9600); - - // initialize the display - TFTscreen.begin(); - - // set the background to white - TFTscreen.background(255, 255, 255); - -} - -void loop() { - - // read the values from your sensors and scale them to 0-255 - int redVal = map(analogRead(A0), 0, 1023, 0, 255); - int greenVal = map(analogRead(A1), 0, 1023, 0, 255); - int blueVal = map(analogRead(A2), 0, 1023, 0, 255); - - // draw the background based on the mapped values - TFTscreen.background(redVal, greenVal, blueVal); - - // send the values to the serial monitor - Serial.print("background("); - Serial.print(redVal); - Serial.print(" , "); - Serial.print(greenVal); - Serial.print(" , "); - Serial.print(blueVal); - Serial.println(")"); - - // wait for a moment - delay(33); - -} - diff --git a/libraries/TFT/examples/Arduino/TFTDisplayText/TFTDisplayText.ino b/libraries/TFT/examples/Arduino/TFTDisplayText/TFTDisplayText.ino deleted file mode 100644 index a9c1d86999c..00000000000 --- a/libraries/TFT/examples/Arduino/TFTDisplayText/TFTDisplayText.ino +++ /dev/null @@ -1,74 +0,0 @@ -/* - Arduino TFT text example - - This example demonstrates how to draw text on the - TFT with an Arduino. The Arduino reads the value - of an analog sensor attached to pin A0, and writes - the value to the LCD screen, updating every - quarter second. - - This example code is in the public domain - - Created 15 April 2013 by Scott Fitzgerald - - http://www.arduino.cc/en/Tutorial/TFTDisplayText - - */ - -#include // Arduino LCD library -#include - -// pin definition for the Uno -#define cs 10 -#define dc 9 -#define rst 8 - -// pin definition for the Leonardo -// #define cs 7 -// #define dc 0 -// #define rst 1 - -// create an instance of the library -TFT TFTscreen = TFT(cs, dc, rst); - -// char array to print to the screen -char sensorPrintout[4]; - -void setup() { - - // Put this line at the beginning of every sketch that uses the GLCD: - TFTscreen.begin(); - - // clear the screen with a black background - TFTscreen.background(0, 0, 0); - - // write the static text to the screen - // set the font color to white - TFTscreen.stroke(255, 255, 255); - // set the font size - TFTscreen.setTextSize(2); - // write the text to the top left corner of the screen - TFTscreen.text("Sensor Value :\n ", 0, 0); - // ste the font size very large for the loop - TFTscreen.setTextSize(5); -} - -void loop() { - - // Read the value of the sensor on A0 - String sensorVal = String(analogRead(A0)); - - // convert the reading to a char array - sensorVal.toCharArray(sensorPrintout, 4); - - // set the font color - TFTscreen.stroke(255, 255, 255); - // print the sensor value - TFTscreen.text(sensorPrintout, 0, 20); - // wait for a moment - delay(250); - // erase the text you just wrote - TFTscreen.stroke(0, 0, 0); - TFTscreen.text(sensorPrintout, 0, 20); -} - diff --git a/libraries/TFT/examples/Arduino/TFTEtchASketch/TFTEtchASketch.ino b/libraries/TFT/examples/Arduino/TFTEtchASketch/TFTEtchASketch.ino deleted file mode 100644 index 4eb75d1d42a..00000000000 --- a/libraries/TFT/examples/Arduino/TFTEtchASketch/TFTEtchASketch.ino +++ /dev/null @@ -1,83 +0,0 @@ -/* - - TFT EtchASketch - - This example for the Arduino screen draws a white point - on the GLCD based on the values of 2 potentiometers. - To clear the screen, press a button attached to pin 2. - - This example code is in the public domain. - - Created 15 April 2013 by Scott Fitzgerald - - http://www.arduino.cc/en/Tutorial/TFTEtchASketch - - */ - -#include // Arduino LCD library -#include - -// pin definition for the Uno -#define cs 10 -#define dc 9 -#define rst 8 - -// pin definition for the Leonardo -// #define cs 7 -// #define dc 0 -// #define rst 1 - -TFT TFTscreen = TFT(cs, dc, rst); - -// initial position of the cursor -int xPos = TFTscreen.width() / 2; -int yPos = TFTscreen.height() / 2; - -// pin the erase switch is connected to -int erasePin = 2; - -void setup() { - // declare inputs - pinMode(erasePin, INPUT); - // initialize the screen - TFTscreen.begin(); - // make the background black - TFTscreen.background(0, 0, 0); -} - -void loop() { - // read the potentiometers on A0 and A1 - int xValue = analogRead(A0); - int yValue = analogRead(A1); - - // map the values and update the position - xPos = xPos + (map(xValue, 0, 1023, 2, -2)); - yPos = yPos + (map(yValue, 0, 1023, -2, 2)); - - // don't let the point go past the screen edges - if (xPos > 159) { - (xPos = 159); - } - - if (xPos < 0) { - (xPos = 0); - } - if (yPos > 127) { - (yPos = 127); - } - - if (yPos < 0) { - (yPos = 0); - } - - // draw the point - TFTscreen.stroke(255, 255, 255); - TFTscreen.point(xPos, yPos); - - // read the value of the pin, and erase the screen if pressed - if (digitalRead(erasePin) == HIGH) { - TFTscreen.background(0, 0, 0); - } - - delay(33); -} diff --git a/libraries/TFT/examples/Arduino/TFTGraph/TFTGraph.ino b/libraries/TFT/examples/Arduino/TFTGraph/TFTGraph.ino deleted file mode 100644 index 3b2f03b97a7..00000000000 --- a/libraries/TFT/examples/Arduino/TFTGraph/TFTGraph.ino +++ /dev/null @@ -1,70 +0,0 @@ -/* - - TFT Graph - - This example for an Arduino screen reads - the value of an analog sensor on A0, and - graphs the values on the screen. - - This example code is in the public domain. - - Created 15 April 2013 by Scott Fitzgerald - - http://www.arduino.cc/en/Tutorial/TFTGraph - - */ - -#include // Arduino LCD library -#include - -// pin definition for the Uno -#define cs 10 -#define dc 9 -#define rst 8 - -// pin definition for the Leonardo -// #define cs 7 -// #define dc 0 -// #define rst 1 - -TFT TFTscreen = TFT(cs, dc, rst); - -// position of the line on screen -int xPos = 0; - -void setup() { - // initialize the serial port - Serial.begin(9600); - - // initialize the display - TFTscreen.begin(); - - // clear the screen with a pretty color - TFTscreen.background(250, 16, 200); -} - -void loop() { - // read the sensor and map it to the screen height - int sensor = analogRead(A0); - int drawHeight = map(sensor, 0, 1023, 0, TFTscreen.height()); - - // print out the height to the serial monitor - Serial.println(drawHeight); - - // draw a line in a nice color - TFTscreen.stroke(250, 180, 10); - TFTscreen.line(xPos, TFTscreen.height() - drawHeight, xPos, TFTscreen.height()); - - // if the graph has reached the screen edge - // erase the screen and start again - if (xPos >= 160) { - xPos = 0; - TFTscreen.background(250, 16, 200); - } else { - // increment the horizontal position: - xPos++; - } - - delay(16); -} - diff --git a/libraries/TFT/examples/Arduino/TFTPong/TFTPong.ino b/libraries/TFT/examples/Arduino/TFTPong/TFTPong.ino deleted file mode 100644 index 7a6191538ab..00000000000 --- a/libraries/TFT/examples/Arduino/TFTPong/TFTPong.ino +++ /dev/null @@ -1,135 +0,0 @@ -/* - - TFT Pong - - This example for the Arduino screen reads the values - of 2 potentiometers to move a rectangular platform - on the x and y axes. The platform can intersect - with a ball causing it to bounce. - - This example code is in the public domain. - - Created by Tom Igoe December 2012 - Modified 15 April 2013 by Scott Fitzgerald - - http://www.arduino.cc/en/Tutorial/TFTPong - - */ - -#include // Arduino LCD library -#include - -// pin definition for the Uno -#define cs 10 -#define dc 9 -#define rst 8 - -// pin definition for the Leonardo -// #define cs 7 -// #define dc 0 -// #define rst 1 - -TFT TFTscreen = TFT(cs, dc, rst); - -// variables for the position of the ball and paddle -int paddleX = 0; -int paddleY = 0; -int oldPaddleX, oldPaddleY; -int ballDirectionX = 1; -int ballDirectionY = 1; - -int ballSpeed = 10; // lower numbers are faster - -int ballX, ballY, oldBallX, oldBallY; - -void setup() { - // initialize the display - TFTscreen.begin(); - // black background - TFTscreen.background(0, 0, 0); -} - -void loop() { - - // save the width and height of the screen - int myWidth = TFTscreen.width(); - int myHeight = TFTscreen.height(); - - // map the paddle's location to the position of the potentiometers - paddleX = map(analogRead(A0), 512, -512, 0, myWidth) - 20 / 2; - paddleY = map(analogRead(A1), 512, -512, 0, myHeight) - 5 / 2; - - // set the fill color to black and erase the previous - // position of the paddle if different from present - TFTscreen.fill(0, 0, 0); - - if (oldPaddleX != paddleX || oldPaddleY != paddleY) { - TFTscreen.rect(oldPaddleX, oldPaddleY, 20, 5); - } - - // draw the paddle on screen, save the current position - // as the previous. - TFTscreen.fill(255, 255, 255); - - TFTscreen.rect(paddleX, paddleY, 20, 5); - oldPaddleX = paddleX; - oldPaddleY = paddleY; - - // update the ball's position and draw it on screen - if (millis() % ballSpeed < 2) { - moveBall(); - } -} - -// this function determines the ball's position on screen -void moveBall() { - // if the ball goes offscreen, reverse the direction: - if (ballX > TFTscreen.width() || ballX < 0) { - ballDirectionX = -ballDirectionX; - } - - if (ballY > TFTscreen.height() || ballY < 0) { - ballDirectionY = -ballDirectionY; - } - - // check if the ball and the paddle occupy the same space on screen - if (inPaddle(ballX, ballY, paddleX, paddleY, 20, 5)) { - ballDirectionX = -ballDirectionX; - ballDirectionY = -ballDirectionY; - } - - // update the ball's position - ballX += ballDirectionX; - ballY += ballDirectionY; - - // erase the ball's previous position - TFTscreen.fill(0, 0, 0); - - if (oldBallX != ballX || oldBallY != ballY) { - TFTscreen.rect(oldBallX, oldBallY, 5, 5); - } - - - // draw the ball's current position - TFTscreen.fill(255, 255, 255); - TFTscreen.rect(ballX, ballY, 5, 5); - - oldBallX = ballX; - oldBallY = ballY; - -} - -// this function checks the position of the ball -// to see if it intersects with the paddle -boolean inPaddle(int x, int y, int rectX, int rectY, int rectWidth, int rectHeight) { - boolean result = false; - - if ((x >= rectX && x <= (rectX + rectWidth)) && - (y >= rectY && y <= (rectY + rectHeight))) { - result = true; - } - - return result; -} - - diff --git a/libraries/TFT/examples/Esplora/EsploraTFTBitmapLogo/EsploraTFTBitmapLogo.ino b/libraries/TFT/examples/Esplora/EsploraTFTBitmapLogo/EsploraTFTBitmapLogo.ino deleted file mode 100644 index 8d38519a481..00000000000 --- a/libraries/TFT/examples/Esplora/EsploraTFTBitmapLogo/EsploraTFTBitmapLogo.ino +++ /dev/null @@ -1,101 +0,0 @@ -/* - - Esplora TFT Bitmap Logos - - This example for the Arduino TFT screen is for use - with an Arduino Esplora. - - This example reads an image file from a micro-SD card - and draws it on the screen, at random locations. - - There is a .bmp file included with this sketch. - - open the sketch folder (Ctrl-K or Cmd-K) - - copy the "arduino.bmp" file to a micro-SD - - put the SD into the SD slot of the Arduino LCD module. - - This example code is in the public domain. - - Created 19 April 2013 by Enrico Gueli - - http://www.arduino.cc/en/Tutorial/EsploraTFTBitmapLogo - - */ - -// include the necessary libraries -#include -#include -#include -#include // Arduino LCD library - -// the Esplora pin connected to the chip select line for SD card -#define SD_CS 8 - -// this variable represents the image to be drawn on screen -PImage logo; - -void setup() { - // initialize the GLCD and show a message - // asking the user to open the serial line - EsploraTFT.begin(); - EsploraTFT.background(255, 255, 255); - - EsploraTFT.stroke(0, 0, 255); - EsploraTFT.println(); - EsploraTFT.println(F("Arduino LCD Bitmap Example")); - EsploraTFT.stroke(0, 0, 0); - EsploraTFT.println(F("Open serial monitor")); - EsploraTFT.println(F("to run the sketch")); - - // initialize the serial port: it will be used to - // print some diagnostic info - Serial.begin(9600); - while (!Serial) { - // wait for serial port to connect. Needed for native USB port only - } - - // try to access the SD card. If that fails (e.g. - // no card present), the Esplora's LED will turn red. - Serial.print(F("Initializing SD card...")); - if (!SD.begin(SD_CS)) { - Serial.println(F("failed!")); - Esplora.writeRed(255); - return; - } - Serial.println("OK!"); - - // clear the GLCD screen before starting - EsploraTFT.background(255, 255, 255); - - // now that the SD card can be access, try to load the - // image file. The Esplora LED will turn green or red if - // the loading went OK or not. - Esplora.writeRGB(0, 0, 0); - logo = EsploraTFT.loadImage("arduino.bmp"); - if (logo.isValid()) { - Esplora.writeGreen(255); - } else { - Esplora.writeRed(255); - } - -} - -void loop() { - // don't do anything if the image wasn't loaded correctly. - if (logo.isValid() == false) { - return; - } - - Serial.println(F("drawing image")); - - // get a random location where to draw the image. - // To avoid the image to be draw outside the screen, - // take into account the image size. - int x = random(EsploraTFT.width() - logo.width()); - int y = random(EsploraTFT.height() - logo.height()); - - // draw the image to the screen - EsploraTFT.image(logo, x, y); - - // wait a little bit before drawing again - delay(1500); -} diff --git a/libraries/TFT/examples/Esplora/EsploraTFTBitmapLogo/arduino.bmp b/libraries/TFT/examples/Esplora/EsploraTFTBitmapLogo/arduino.bmp deleted file mode 100644 index 09c670ab54f..00000000000 Binary files a/libraries/TFT/examples/Esplora/EsploraTFTBitmapLogo/arduino.bmp and /dev/null differ diff --git a/libraries/TFT/examples/Esplora/EsploraTFTColorPicker/EsploraTFTColorPicker.ino b/libraries/TFT/examples/Esplora/EsploraTFTColorPicker/EsploraTFTColorPicker.ino deleted file mode 100644 index cdce051e172..00000000000 --- a/libraries/TFT/examples/Esplora/EsploraTFTColorPicker/EsploraTFTColorPicker.ino +++ /dev/null @@ -1,54 +0,0 @@ -/* - - Esplora TFT Color Picker - - This example for the Esplora with an Arduino TFT reads - the input of the joystick and slider, using the values - to change the screen's color. - - This example code is in the public domain. - - Created 15 April 2013 by Scott Fitzgerald - - http://www.arduino.cc/en/Tutorial/TFTColorPicker - - */ - -#include -#include // Arduino LCD library -#include - -void setup() { - Serial.begin(9600); - - // initialize the LCD - EsploraTFT.begin(); - - // start out with a white screen - EsploraTFT.background(255, 255, 255); - -} - -void loop() { - - // map the values from sensors - int xValue = map(Esplora.readJoystickX(), -512, 512, 0, 255); // read the joystick's X position - int yValue = map(Esplora.readJoystickY(), -512, 512, 0, 255); // read the joystick's Y position - int slider = map(Esplora.readSlider(), 0, 1023, 0, 255); // read the slider's position - - // change the background color based on the mapped values - EsploraTFT.background(xValue, yValue, slider); - - // print the mapped values to the Serial monitor - Serial.print("background("); - Serial.print(xValue); - Serial.print(" , "); - Serial.print(yValue); - Serial.print(" , "); - Serial.print(slider); - Serial.println(")"); - - delay(33); - -} - diff --git a/libraries/TFT/examples/Esplora/EsploraTFTEtchASketch/EsploraTFTEtchASketch.ino b/libraries/TFT/examples/Esplora/EsploraTFTEtchASketch/EsploraTFTEtchASketch.ino deleted file mode 100644 index 7d5b567e137..00000000000 --- a/libraries/TFT/examples/Esplora/EsploraTFTEtchASketch/EsploraTFTEtchASketch.ino +++ /dev/null @@ -1,80 +0,0 @@ -/* - - Esplora TFT EtchASketch - - This example for the Arduino TFT and Esplora draws - a white line on the screen, based on the position - of the joystick. To clear the screen, shake the - Esplora, using the values from the accelerometer. - - This example code is in the public domain. - - Created 15 April 2013 by Scott Fitzgerald - - http://www.arduino.cc/en/Tutorial/EsploraTFTEtchASketch - - */ - -#include -#include // Arduino LCD library -#include - -// initial position of the cursor -int xPos = EsploraTFT.width() / 2; -int yPos = EsploraTFT.height() / 2; - -void setup() { - // initialize the display - EsploraTFT.begin(); - - // clear the background - EsploraTFT.background(0, 0, 0); -} - -void loop() { - - int xAxis = Esplora.readJoystickX(); // read the X axis - int yAxis = Esplora.readJoystickY(); // read the Y axis - - // update the position of the line - // depending on the position of the joystick - if (xAxis < 10 && xAxis > -10) { - xPos = xPos; - } else { - xPos = xPos + (map(xAxis, -512, 512, 2, -2)); - } - if (yAxis < 10 && yAxis > -10) { - yAxis = yAxis; - } else { - yPos = yPos + (map(yAxis, -512, 512, -2, 2)); - } - - // don't let the point go past the screen edges - if (xPos > 159) { - (xPos = 159); - } - - if (xPos < 0) { - (xPos = 0); - } - if (yPos > 127) { - (yPos = 127); - } - - if (yPos < 0) { - (yPos = 0); - } - - // draw the point - EsploraTFT.stroke(255, 255, 255); - EsploraTFT.point(xPos, yPos); - - // check the accelerometer values and clear - // the screen if it is being shaken - if (abs(Esplora.readAccelerometer(X_AXIS)) > 200 || abs(Esplora.readAccelerometer(Y_AXIS)) > 200) { - EsploraTFT.background(0, 0, 0); - } - - delay(33); -} - diff --git a/libraries/TFT/examples/Esplora/EsploraTFTGraph/EsploraTFTGraph.ino b/libraries/TFT/examples/Esplora/EsploraTFTGraph/EsploraTFTGraph.ino deleted file mode 100644 index 24e0db6dd59..00000000000 --- a/libraries/TFT/examples/Esplora/EsploraTFTGraph/EsploraTFTGraph.ino +++ /dev/null @@ -1,55 +0,0 @@ -/* - - Esplora TFT Graph - - This example for the Esplora with an Arduino TFT reads - the value of the light sensor, and graphs the values on - the screen. - - This example code is in the public domain. - - Created 15 April 2013 by Scott Fitzgerald - - http://www.arduino.cc/en/Tutorial/EsploraTFTGraph - - */ - -#include -#include // Arduino LCD library -#include - -// position of the line on screen -int xPos = 0; - -void setup() { - - // initialize the screen - EsploraTFT.begin(); - - // clear the screen with a nice color - EsploraTFT.background(250, 16, 200); -} - -void loop() { - - // read the sensor value - int sensor = Esplora.readLightSensor(); - // map the sensor value to the height of the screen - int graphHeight = map(sensor, 0, 1023, 0, EsploraTFT.height()); - - // draw the line in a pretty color - EsploraTFT.stroke(250, 180, 10); - EsploraTFT.line(xPos, EsploraTFT.height() - graphHeight, xPos, EsploraTFT.height()); - - // if the graph reaches the edge of the screen - // erase it and start over from the other side - if (xPos >= 160) { - xPos = 0; - EsploraTFT.background(250, 16, 200); - } else { - // increment the horizontal position: - xPos++; - } - - delay(16); -} diff --git a/libraries/TFT/examples/Esplora/EsploraTFTHorizon/EsploraTFTHorizon.ino b/libraries/TFT/examples/Esplora/EsploraTFTHorizon/EsploraTFTHorizon.ino deleted file mode 100644 index 9a5a454d0e9..00000000000 --- a/libraries/TFT/examples/Esplora/EsploraTFTHorizon/EsploraTFTHorizon.ino +++ /dev/null @@ -1,62 +0,0 @@ -/* - - Esplora TFT Horizon - - This example for the Arduino TFT and Esplora draws - a line on the screen that stays level with the ground - as you tile the Esplora side to side - - This example code is in the public domain. - - Created 15 April 2013 by Scott Fitzgerald - - http://www.arduino.cc/en/Tutorial/EsploraTFTHorizon - - */ - -#include -#include // Arduino LCD library -#include - -// horizontal start and end positions -int yStart = EsploraTFT.height() / 2; -int yEnd = EsploraTFT.height() / 2; - -// previous start and end positions -int oldEndY; -int oldStartY; - -void setup() { - // initialize the display - EsploraTFT.begin(); - // make the background black - EsploraTFT.background(0, 0, 0); -} - -void loop() { - // read the x-axis of te accelerometer - int tilt = Esplora.readAccelerometer(X_AXIS); - - // the values are 100 when tilted to the left - // and -100 when tilted to the right - // map these values to the start and end points - yStart = map(tilt, -100, 100, EsploraTFT.height(), 0); - yEnd = map(tilt, -100, 100, 0, EsploraTFT.height()); - - // if the previous values are different than the current values - // erase the previous line - if (oldStartY != yStart || oldEndY != yEnd) { - EsploraTFT.stroke(0, 0, 0); - EsploraTFT.line(0, oldStartY, EsploraTFT.width(), oldEndY); - } - - // draw the line in magenta - EsploraTFT.stroke(255, 0, 255); - EsploraTFT.line(0, yStart, EsploraTFT.width(), yEnd); - - // save the current start and end points - // to compare int he next loop - oldStartY = yStart; - oldEndY = yEnd; - delay(10); -} diff --git a/libraries/TFT/examples/Esplora/EsploraTFTPong/EsploraTFTPong.ino b/libraries/TFT/examples/Esplora/EsploraTFTPong/EsploraTFTPong.ino deleted file mode 100644 index 11b1dffa1b9..00000000000 --- a/libraries/TFT/examples/Esplora/EsploraTFTPong/EsploraTFTPong.ino +++ /dev/null @@ -1,126 +0,0 @@ -/* - - Esplora TFT Pong - - This example for the Esplora with an Arduino TFT screen reads - the value of the joystick to move a rectangular platform - on the x and y axes. The platform can intersect with a ball - causing it to bounce. The Esplora's slider adjusts the speed - of the ball. - - This example code is in the public domain. - - Created by Tom Igoe December 2012 - Modified 15 April 2013 by Scott Fitzgerald - - http://www.arduino.cc/en/Tutorial/EsploraTFTPong - - */ - -#include -#include // Arduino LCD library -#include - -// variables for the position of the ball and paddle -int paddleX = 0; -int paddleY = 0; -int oldPaddleX, oldPaddleY; -int ballDirectionX = 1; -int ballDirectionY = 1; - -int ballX, ballY, oldBallX, oldBallY; - -void setup() { - - Serial.begin(9600); - - // initialize the display - EsploraTFT.begin(); - // set the background the black - EsploraTFT.background(0, 0, 0); -} - -void loop() { - // save the width and height of the screen - int myWidth = EsploraTFT.width(); - int myHeight = EsploraTFT.height(); - - // map the paddle's location to the joystick's position - paddleX = map(Esplora.readJoystickX(), 512, -512, 0, myWidth) - 20 / 2; - paddleY = map(Esplora.readJoystickY(), -512, 512, 0, myHeight) - 5 / 2; - Serial.print(paddleX); - Serial.print(" "); - Serial.println(paddleY); - - // set the fill color to black and erase the previous - // position of the paddle if different from present - EsploraTFT.fill(0, 0, 0); - - if (oldPaddleX != paddleX || oldPaddleY != paddleY) { - EsploraTFT.rect(oldPaddleX, oldPaddleY, 20, 5); - } - - // draw the paddle on screen, save the current position - // as the previous. - EsploraTFT.fill(255, 255, 255); - EsploraTFT.rect(paddleX, paddleY, 20, 5); - oldPaddleX = paddleX; - oldPaddleY = paddleY; - - // read the slider to determinde the speed of the ball - int ballSpeed = map(Esplora.readSlider(), 0, 1023, 0, 80) + 1; - if (millis() % ballSpeed < 2) { - moveBall(); - } -} - - -// this function determines the ball's position on screen -void moveBall() { - // if the ball goes offscreen, reverse the direction: - if (ballX > EsploraTFT.width() || ballX < 0) { - ballDirectionX = -ballDirectionX; - } - - if (ballY > EsploraTFT.height() || ballY < 0) { - ballDirectionY = -ballDirectionY; - } - - // check if the ball and the paddle occupy the same space on screen - if (inPaddle(ballX, ballY, paddleX, paddleY, 20, 5)) { - ballDirectionY = -ballDirectionY; - } - - // update the ball's position - ballX += ballDirectionX; - ballY += ballDirectionY; - - // erase the ball's previous position - EsploraTFT.fill(0, 0, 0); - - if (oldBallX != ballX || oldBallY != ballY) { - EsploraTFT.rect(oldBallX, oldBallY, 5, 5); - } - - // draw the ball's current position - EsploraTFT.fill(255, 255, 255); - - EsploraTFT.rect(ballX, ballY, 5, 5); - - oldBallX = ballX; - oldBallY = ballY; - -} - -// this function checks the position of the ball -// to see if it intersects with the paddle -boolean inPaddle(int x, int y, int rectX, int rectY, int rectWidth, int rectHeight) { - boolean result = false; - - if ((x >= rectX && x <= (rectX + rectWidth)) && - (y >= rectY && y <= (rectY + rectHeight))) { - result = true; - } - - return result; -} diff --git a/libraries/TFT/examples/Esplora/EsploraTFTTemp/EsploraTFTTemp.ino b/libraries/TFT/examples/Esplora/EsploraTFTTemp/EsploraTFTTemp.ino deleted file mode 100644 index a5c70817c08..00000000000 --- a/libraries/TFT/examples/Esplora/EsploraTFTTemp/EsploraTFTTemp.ino +++ /dev/null @@ -1,64 +0,0 @@ -/* - - Esplora TFT Temperature Display - - This example for the Arduino TFT screen is for use - with an Arduino Esplora. - - This example reads the temperature of the Esplora's - on board thermisistor and displays it on an attached - LCD screen, updating every second. - - This example code is in the public domain. - - Created 15 April 2013 by Scott Fitzgerald - - http://www.arduino.cc/en/Tutorial/EsploraTFTTemp - - */ - -// include the necessary libraries -#include -#include // Arduino LCD library -#include - -char tempPrintout[3]; // array to hold the temperature data - -void setup() { - - // Put this line at the beginning of every sketch that uses the GLCD - EsploraTFT.begin(); - - // clear the screen with a black background - EsploraTFT.background(0, 0, 0); - - // set the text color to magenta - EsploraTFT.stroke(200, 20, 180); - // set the text to size 2 - EsploraTFT.setTextSize(2); - // start the text at the top left of the screen - // this text is going to remain static - EsploraTFT.text("Degrees in C :\n ", 0, 0); - - // set the text in the loop to size 5 - EsploraTFT.setTextSize(5); -} - -void loop() { - - // read the temperature in Celcius and store it in a String - String temperature = String(Esplora.readTemperature(DEGREES_C)); - - // convert the string to a char array - temperature.toCharArray(tempPrintout, 3); - - // set the text color to white - EsploraTFT.stroke(255, 255, 255); - // print the temperature one line below the static text - EsploraTFT.text(tempPrintout, 0, 30); - - delay(1000); - // erase the text for the next loop - EsploraTFT.stroke(0, 0, 0); - EsploraTFT.text(tempPrintout, 0, 30); -} diff --git a/libraries/TFT/extras/Adafruit-README.txt b/libraries/TFT/extras/Adafruit-README.txt deleted file mode 100644 index 6f3b682df67..00000000000 --- a/libraries/TFT/extras/Adafruit-README.txt +++ /dev/null @@ -1,21 +0,0 @@ -This is a library for the Adafruit 1.8" SPI display. -This library works with the Adafruit 1.8" TFT Breakout w/SD card - ----> http://www.adafruit.com/products/358 -as well as Adafruit raw 1.8" TFT display - ----> http://www.adafruit.com/products/618 - -Check out the links above for our tutorials and wiring diagrams. -These displays use SPI to communicate, 4 or 5 pins are required -to interface (RST is optional). -Adafruit invests time and resources providing this open source code, -please support Adafruit and open-source hardware by purchasing -products from Adafruit! - -Written by Limor Fried/Ladyada for Adafruit Industries. -MIT license, all text above must be included in any redistribution - -To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_ST7735. Check that the Adafruit_ST7735 folder contains Adafruit_ST7735.cpp and Adafruit_ST7735. - -Place the Adafruit_ST7735 library folder your /libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE - -Also requires the Adafruit_GFX library for Arduino. diff --git a/libraries/TFT/extras/Adafruit-license.txt b/libraries/TFT/extras/Adafruit-license.txt deleted file mode 100644 index 4bbfa3948ec..00000000000 --- a/libraries/TFT/extras/Adafruit-license.txt +++ /dev/null @@ -1,25 +0,0 @@ -Software License Agreement (BSD License) - -Copyright (c) 2012, Adafruit Industries. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: -1. Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. -3. Neither the name of the copyright holders nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY -EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/libraries/TFT/extras/README.md b/libraries/TFT/extras/README.md deleted file mode 100644 index 6f41794fc4c..00000000000 --- a/libraries/TFT/extras/README.md +++ /dev/null @@ -1,18 +0,0 @@ -TFT Library -============ - -An Arduino library for the Arduino TFT LCD screen. - -This library enables an Arduino board to communicate with an Arduino TFT LCD screen. It simplifies the process for drawing shapes, lines, images, and text to the screen. -The Arduino TFT library extends the Adafruit GFX, and Adafruit ST7735 libraries that it is based on. The GFX library is responsible for the drawing routines, while the ST7735 library is specific to the screen on the Arduino GTFT. The Arduino specific additions were designed to work as similarly to the Processing API as possible. - -Onboard the screen is a SD card slot, which can be used through the SD library. - -The TFT library relies on the SPI library for communication with the screen and SD card, and needs to be included in all sketches. - -https://github.com/adafruit/Adafruit-GFX-Library -https://github.com/adafruit/Adafruit-ST7735-Library -http://www.arduino.cc/en/Reference/SD -http://www.arduino.cc/en/Reference/SPI - -http://www.arduino.cc/en/Reference/TFTLibrary \ No newline at end of file diff --git a/libraries/TFT/keywords.txt b/libraries/TFT/keywords.txt deleted file mode 100644 index c8d33e416bc..00000000000 --- a/libraries/TFT/keywords.txt +++ /dev/null @@ -1,20 +0,0 @@ -####################################### -# Syntax Coloring Map For Arduino GLCD -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -TFT KEYWORD1 TFTLibrary - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - - -####################################### -# Constants (LITERAL1) -####################################### - -EsploraTFT LITERAL1 diff --git a/libraries/TFT/library.properties b/libraries/TFT/library.properties deleted file mode 100644 index b89f0710ecb..00000000000 --- a/libraries/TFT/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=TFT -version=1.0.6 -author=Arduino, Adafruit -maintainer=Arduino -sentence=Allows drawing text, images, and shapes on the Arduino TFT graphical display. -paragraph=This library is compatible with most of the TFT display based on the ST7735 chipset. -category=Display -url=http://www.arduino.cc/en/Reference/TFTLibrary -architectures=* diff --git a/libraries/TFT/src/TFT.cpp b/libraries/TFT/src/TFT.cpp deleted file mode 100644 index 1bdf7ed3cc1..00000000000 --- a/libraries/TFT/src/TFT.cpp +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright (c) 2013, Enrico Gueli All -rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -1. Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#include "TFT.h" - -#if ARDUINO_AVR_ESPLORA -TFT EsploraTFT(7, 0, 1); -#endif - -TFT::TFT(uint8_t CS, uint8_t RS, uint8_t RST) - : Adafruit_ST7735(CS, RS, RST) -{ - // as we already know the orientation (landscape, therefore rotated), - // set default width and height without need to call begin() first. - _width = ST7735_TFTHEIGHT; - _height = ST7735_TFTWIDTH; -} - -void TFT::begin() { -//initR(INITR_REDTAB); - initG(); - setRotation(1); -} diff --git a/libraries/TFT/src/TFT.h b/libraries/TFT/src/TFT.h deleted file mode 100644 index 16791d6bb3a..00000000000 --- a/libraries/TFT/src/TFT.h +++ /dev/null @@ -1,58 +0,0 @@ -/* Copyright (c) 2013, Enrico Gueli All -rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -1. Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright -notice, this list of conditions and the following disclaimer in the -documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -*/ - -#ifndef _ARDUINO_TFT_H -#define _ARDUINO_TFT_H - -#include "Arduino.h" -#include "utility/Adafruit_GFX.h" -#include "utility/Adafruit_ST7735.h" - -/// The Arduino LCD is a ST7735-based device. -/// By default, it is mounted horizontally. -/// TFT class follows the convention of other -/// Arduino library classes by adding a begin() method -/// to be called in the setup() routine. -/// @author Enrico Gueli -class TFT : public Adafruit_ST7735 { -public: - TFT(uint8_t CS, uint8_t RS, uint8_t RST); - - void begin(); -}; - -/// Esplora boards have hard-wired connections with -/// the Arduino LCD if mounted on the onboard connector. -#if ARDUINO_AVR_ESPLORA // are we building for Esplora? -extern TFT EsploraTFT; -#endif - -#endif // _ARDUINO_TFT_H diff --git a/libraries/TFT/src/utility/Adafruit_GFX.cpp b/libraries/TFT/src/utility/Adafruit_GFX.cpp deleted file mode 100644 index 6478c47c9b0..00000000000 --- a/libraries/TFT/src/utility/Adafruit_GFX.cpp +++ /dev/null @@ -1,715 +0,0 @@ -/* -This is the core graphics library for all our displays, providing a common -set of graphics primitives (points, lines, circles, etc.). It needs to be -paired with a hardware-specific library for each display device we carry -(to handle the lower-level functions). - -Adafruit invests time and resources providing this open source code, please -support Adafruit & open-source hardware by purchasing products from Adafruit! - -Copyright (c) 2013 Adafruit Industries. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -- Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. -- Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. -*/ - -#include "Adafruit_GFX.h" -#include "glcdfont.c" -#ifdef __AVR__ - #include -#else - #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) -#endif - -Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h) : - WIDTH(w), HEIGHT(h) -{ - _width = WIDTH; - _height = HEIGHT; - rotation = 0; - cursor_y = cursor_x = 0; - textsize = 1; - textcolor = textbgcolor = 0xFFFF; - wrap = true; -} - -// draw a circle outline -void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r, - uint16_t color) { - int16_t f = 1 - r; - int16_t ddF_x = 1; - int16_t ddF_y = -2 * r; - int16_t x = 0; - int16_t y = r; - - drawPixel(x0, y0+r, color); - drawPixel(x0, y0-r, color); - drawPixel(x0+r, y0, color); - drawPixel(x0-r, y0, color); - - while (x= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - - drawPixel(x0 + x, y0 + y, color); - drawPixel(x0 - x, y0 + y, color); - drawPixel(x0 + x, y0 - y, color); - drawPixel(x0 - x, y0 - y, color); - drawPixel(x0 + y, y0 + x, color); - drawPixel(x0 - y, y0 + x, color); - drawPixel(x0 + y, y0 - x, color); - drawPixel(x0 - y, y0 - x, color); - } -} - -void Adafruit_GFX::drawCircleHelper( int16_t x0, int16_t y0, - int16_t r, uint8_t cornername, uint16_t color) { - int16_t f = 1 - r; - int16_t ddF_x = 1; - int16_t ddF_y = -2 * r; - int16_t x = 0; - int16_t y = r; - - while (x= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - if (cornername & 0x4) { - drawPixel(x0 + x, y0 + y, color); - drawPixel(x0 + y, y0 + x, color); - } - if (cornername & 0x2) { - drawPixel(x0 + x, y0 - y, color); - drawPixel(x0 + y, y0 - x, color); - } - if (cornername & 0x8) { - drawPixel(x0 - y, y0 + x, color); - drawPixel(x0 - x, y0 + y, color); - } - if (cornername & 0x1) { - drawPixel(x0 - y, y0 - x, color); - drawPixel(x0 - x, y0 - y, color); - } - } -} - -void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r, - uint16_t color) -{ - drawFastVLine(x0, y0-r, 2*r+1, color); - fillCircleHelper(x0, y0, r, 3, 0, color); -} - -// used to do circles and roundrects -void Adafruit_GFX::fillCircleHelper(int16_t x0, int16_t y0, int16_t r, - uint8_t cornername, int16_t delta, uint16_t color) -{ - int16_t f = 1 - r; - int16_t ddF_x = 1; - int16_t ddF_y = -2 * r; - int16_t x = 0; - int16_t y = r; - - while (x= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - - if (cornername & 0x1) { - drawFastVLine(x0+x, y0-y, 2*y+1+delta, color); - drawFastVLine(x0+y, y0-x, 2*x+1+delta, color); - } - if (cornername & 0x2) { - drawFastVLine(x0-x, y0-y, 2*y+1+delta, color); - drawFastVLine(x0-y, y0-x, 2*x+1+delta, color); - } - } -} - -// Bresenham's algorithm - thx wikpedia -void Adafruit_GFX::drawLine(int16_t x0, int16_t y0, - int16_t x1, int16_t y1, - uint16_t color) -{ - int16_t steep = abs(y1 - y0) > abs(x1 - x0); - if (steep) { - swap(x0, y0); - swap(x1, y1); - } - - if (x0 > x1) { - swap(x0, x1); - swap(y0, y1); - } - - int16_t dx, dy; - dx = x1 - x0; - dy = abs(y1 - y0); - - int16_t err = dx / 2; - int16_t ystep; - - if (y0 < y1) { - ystep = 1; - } else { - ystep = -1; - } - - for (; x0<=x1; x0++) { - if (steep) { - drawPixel(y0, x0, color); - } else { - drawPixel(x0, y0, color); - } - err -= dy; - if (err < 0) { - y0 += ystep; - err += dx; - } - } -} - - -// Draw a rectangle -void Adafruit_GFX::drawRect(int16_t x, int16_t y, - int16_t w, int16_t h, - uint16_t color) -{ - drawFastHLine(x, y, w, color); - drawFastHLine(x, y+h-1, w, color); - drawFastVLine(x, y, h, color); - drawFastVLine(x+w-1, y, h, color); -} - -void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y, - int16_t h, uint16_t color) -{ - // Update in subclasses if desired! - drawLine(x, y, x, y+h-1, color); -} - - -void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y, - int16_t w, uint16_t color) -{ - // Update in subclasses if desired! - drawLine(x, y, x+w-1, y, color); -} - -void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) -{ - // Update in subclasses if desired! - for (int16_t i=x; i= y1 >= y0) - if (y0 > y1) { - swap(y0, y1); swap(x0, x1); - } - if (y1 > y2) { - swap(y2, y1); swap(x2, x1); - } - if (y0 > y1) { - swap(y0, y1); swap(x0, x1); - } - - if(y0 == y2) { // Handle awkward all-on-same-line case as its own thing - a = b = x0; - if(x1 < a) a = x1; - else if(x1 > b) b = x1; - if(x2 < a) a = x2; - else if(x2 > b) b = x2; - drawFastHLine(a, y0, b-a+1, color); - return; - } - - int16_t - dx01 = x1 - x0, - dy01 = y1 - y0, - dx02 = x2 - x0, - dy02 = y2 - y0, - dx12 = x2 - x1, - dy12 = y2 - y1, - sa = 0, - sb = 0; - - // For upper part of triangle, find scanline crossings for segments - // 0-1 and 0-2. If y1=y2 (flat-bottomed triangle), the scanline y1 - // is included here (and second loop will be skipped, avoiding a /0 - // error there), otherwise scanline y1 is skipped here and handled - // in the second loop...which also avoids a /0 error here if y0=y1 - // (flat-topped triangle). - if(y1 == y2) last = y1; // Include y1 scanline - else last = y1-1; // Skip it - - for(y=y0; y<=last; y++) { - a = x0 + sa / dy01; - b = x0 + sb / dy02; - sa += dx01; - sb += dx02; - /* longhand: - a = x0 + (x1 - x0) * (y - y0) / (y1 - y0); - b = x0 + (x2 - x0) * (y - y0) / (y2 - y0); - */ - if(a > b) swap(a,b); - drawFastHLine(a, y, b-a+1, color); - } - - // For lower part of triangle, find scanline crossings for segments - // 0-2 and 1-2. This loop is skipped if y1=y2. - sa = dx12 * (y - y1); - sb = dx02 * (y - y0); - for(; y<=y2; y++) { - a = x1 + sa / dy12; - b = x0 + sb / dy02; - sa += dx12; - sb += dx02; - /* longhand: - a = x1 + (x2 - x1) * (y - y1) / (y2 - y1); - b = x0 + (x2 - x0) * (y - y0) / (y2 - y0); - */ - if(a > b) swap(a,b); - drawFastHLine(a, y, b-a+1, color); - } -} - -void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, - const uint8_t *bitmap, int16_t w, int16_t h, - uint16_t color) -{ - int16_t i, j, byteWidth = (w + 7) / 8; - - for(j=0; j> (i & 7))) { - drawPixel(x+i, y+j, color); - } - } - } -} - - -#if ARDUINO >= 100 -size_t Adafruit_GFX::write(uint8_t c) { -#else -void Adafruit_GFX::write(uint8_t c) { -#endif - if (c == '\n') { - cursor_y += textsize*8; - cursor_x = 0; - } else if (c == '\r') { - // skip em - } else { - drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize); - cursor_x += textsize*6; - if (wrap && (cursor_x > (_width - textsize*6))) { - cursor_y += textsize*8; - cursor_x = 0; - } - } -#if ARDUINO >= 100 - return 1; -#endif -} - -// draw a character -void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c, - uint16_t color, uint16_t bg, uint8_t size) -{ - if((x >= _width) || // Clip right - (y >= _height) || // Clip bottom - ((x + 6 * size - 1) < 0) || // Clip left - ((y + 8 * size - 1) < 0)) // Clip top - return; - - for (int8_t i=0; i<6; i++ ) { - uint8_t line; - if (i == 5) - line = 0x0; - else - line = pgm_read_byte(font+(c*5)+i); - for (int8_t j = 0; j<8; j++) { - if (line & 0x1) { - if (size == 1) // default size - drawPixel(x+i, y+j, color); - else { // big size - fillRect(x+(i*size), y+(j*size), size, size, color); - } - } else if (bg != color) { - if (size == 1) // default size - drawPixel(x+i, y+j, bg); - else { // big size - fillRect(x+i*size, y+j*size, size, size, bg); - } - } - line >>= 1; - } - } -} - -void Adafruit_GFX::setCursor(int16_t x, int16_t y) -{ - cursor_x = x; - cursor_y = y; -} - - -void Adafruit_GFX::setTextSize(uint8_t s) -{ - textsize = (s > 0) ? s : 1; -} - - -void Adafruit_GFX::setTextColor(uint16_t c) { - textcolor = c; - textbgcolor = c; - // for 'transparent' background, we'll set the bg - // to the same as fg instead of using a flag -} - - void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) -{ - textcolor = c; - textbgcolor = b; -} - -void Adafruit_GFX::setTextWrap(boolean w) -{ - wrap = w; -} - -uint8_t Adafruit_GFX::getRotation(void) -{ - return rotation; -} - -void Adafruit_GFX::setRotation(uint8_t x) -{ - rotation = (x & 3); - switch (x) { - case 0: - case 2: - _width = WIDTH; - _height = HEIGHT; - break; - case 1: - case 3: - _width = HEIGHT; - _height = WIDTH; - break; - } -} - - - -// return the size of the display (per current rotation) -int16_t Adafruit_GFX::width(void) -{ - return _width; -} - -int16_t Adafruit_GFX::height(void) -{ - return _height; -} - -void Adafruit_GFX::invertDisplay(boolean i) -{ - // Do nothing, must be subclassed if supported -} - - -uint16_t Adafruit_GFX::newColor(uint8_t r, uint8_t g, uint8_t b) -{ - return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); -} - -void Adafruit_GFX::background(uint8_t red, uint8_t green, uint8_t blue) -{ - background(newColor(red, green, blue)); -} - -void Adafruit_GFX::background(color c) { - fillScreen(c); -} - -void Adafruit_GFX::stroke(uint8_t red, uint8_t green, uint8_t blue) -{ - stroke(newColor(red, green, blue)); -} - -void Adafruit_GFX::stroke(color c) -{ - useStroke = true; - strokeColor = c; - setTextColor(c); -} - -void Adafruit_GFX::noStroke() -{ - useStroke = false; -} - -void Adafruit_GFX::noFill() { - useFill = false; -} - -void Adafruit_GFX::fill(uint8_t red, uint8_t green, uint8_t blue) -{ - fill(newColor(red, green, blue)); -} - -void Adafruit_GFX::fill(color c) -{ - useFill = true; - fillColor = c; -} - - -void Adafruit_GFX::text(const char * text, int16_t x, int16_t y) -{ - if (!useStroke) - return; - - setTextWrap(false); - setTextColor(strokeColor); - setCursor(x, y); - print(text); -} - -void Adafruit_GFX::textWrap(const char * text, int16_t x, int16_t y) -{ - if (!useStroke) - return; - - setTextWrap(true); - setTextColor(strokeColor); - setCursor(x, y); - print(text); -} - - -void Adafruit_GFX::textSize(uint8_t size) -{ - setTextSize(size); -} - -void Adafruit_GFX::point(int16_t x, int16_t y) -{ - if (!useStroke) - return; - - drawPixel(x, y, strokeColor); -} - -void Adafruit_GFX::line(int16_t x1, int16_t y1, int16_t x2, int16_t y2) -{ - if (!useStroke) - return; - - if (x1 == x2) { - if (y1 < y2) - drawFastVLine(x1, y1, y2 - y1, strokeColor); - else - drawFastVLine(x1, y2, y1 - y2, strokeColor); - } - else if (y1 == y2) { - if (x1 < x2) - drawFastHLine(x1, y1, x2 - x1, strokeColor); - else - drawFastHLine(x2, y1, x1 - x2, strokeColor); - } - else { - drawLine(x1, y1, x2, y2, strokeColor); - } -} - -void Adafruit_GFX::rect(int16_t x, int16_t y, int16_t width, int16_t height) -{ - if (useFill) { - fillRect(x, y, width, height, fillColor); - } - if (useStroke) { - drawRect(x, y, width, height, strokeColor); - } -} - -void Adafruit_GFX::rect(int16_t x, int16_t y, int16_t width, int16_t height, int16_t radius) -{ - if (radius == 0) { - rect(x, y, width, height); - } - if (useFill) { - fillRoundRect(x, y, width, height, radius, fillColor); - } - if (useStroke) { - drawRoundRect(x, y, width, height, radius, strokeColor); - } -} - -void Adafruit_GFX::circle(int16_t x, int16_t y, int16_t r) -{ - if (r == 0) - return; - - if (useFill) { - fillCircle(x, y, r, fillColor); - } - if (useStroke) { - drawCircle(x, y, r, strokeColor); - } -} - -void Adafruit_GFX::triangle(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3) -{ - if (useFill) { - fillTriangle(x1, y1, x2, y2, x3, y3, fillColor); - } - if (useStroke) { - drawTriangle(x1, y1, x2, y2, x3, y3, strokeColor); - } -} - -#if defined(__SD_H__) // Arduino SD library - -#define BUFFPIXEL 20 - -void Adafruit_GFX::image(PImage & img, uint16_t x, uint16_t y) { - int w, h, row, col; - uint8_t r, g, b; - uint32_t pos = 0; - uint8_t sdbuffer[3*BUFFPIXEL]; // pixel buffer (R+G+B per pixel) - uint8_t buffidx = sizeof(sdbuffer); // Current position in sdbuffer - - // Crop area to be loaded - w = img._bmpWidth; - h = img._bmpHeight; - if((x+w-1) >= width()) w = width() - x; - if((y+h-1) >= height()) h = height() - y; - - /* - // Set TFT address window to clipped image bounds - setAddrWindow(x, y, x+w-1, y+h-1); - */ - - for (row=0; row= sizeof(sdbuffer)) { // Indeed - img._bmpFile.read(sdbuffer, sizeof(sdbuffer)); - buffidx = 0; // Set index to beginning - } - - // Convert pixel from BMP to TFT format, push to display - b = sdbuffer[buffidx++]; - g = sdbuffer[buffidx++]; - r = sdbuffer[buffidx++]; - //pushColor(tft.Color565(r,g,b)); - drawPixel(x + col, y + row, newColor(r, g, b)); - - } // end pixel - } // end scanline - -} - -#endif diff --git a/libraries/TFT/src/utility/Adafruit_GFX.h b/libraries/TFT/src/utility/Adafruit_GFX.h deleted file mode 100644 index 626e3d7e290..00000000000 --- a/libraries/TFT/src/utility/Adafruit_GFX.h +++ /dev/null @@ -1,372 +0,0 @@ -/****************************************************************** - This is the core graphics library for all our displays, providing - basic graphics primitives (points, lines, circles, etc.). It needs - to be paired with a hardware-specific library for each display - device we carry (handling the lower-level functions). - - Adafruit invests time and resources providing this open - source code, please support Adafruit and open-source hardware - by purchasing products from Adafruit! - - Written by Limor Fried/Ladyada for Adafruit Industries. - Processing-like API written by Enrico Gueli for Officine Arduino. - BSD license, check license.txt for more information. - All text above must be included in any redistribution. - ******************************************************************/ - -#ifndef _ADAFRUIT_GFX_H -#define _ADAFRUIT_GFX_H - -#if ARDUINO >= 100 - #include "Arduino.h" - #include "Print.h" -#else - #include "WProgram.h" -#endif - -/* - * This library can work with or without the presence of an SD - * reading library (to load images). At the moment, only the - * Arduino SD library is supported; it is included in - * standard Arduino libraries. - * - * The presence of the SD library is detected by looking at the - * __SD_H__ preprocessor variable, defined into - * Arduino SD library to avoid double inclusion. This means - * that in order to use the image-related API of Adafruit_GFX, - * SD.h *must* be included before Adafruit_GFX. - * - * The bottom part of this include file contains the actual image - * loading code; if it was in a separate .cpp file, there were no - * way to check if the SD library was present or not. - * - * A partial solution was to include SD.h anyway, see if that works - * (i.e. it is found in the include search path) and act accordingly. - * But this solution relied on the preprocessor to issue only a - * warning when an include file is not found. Avr-gcc, used for - * Arduino 8-bit MCUs, does that, but the standard gcc-4.4, used for - * Arduino Due, issues a fatal error and stops compilation. - * - * The best solution so far is to put the code here. It works if this - * include is used only in one .cpp file in the build (this is the - * case of most Arduino sketches); if used in multiple .cpp files, - * the linker may complain about duplicate definitions. - * - */ - -#if defined(__SD_H__) // Arduino SD library - #include "PImage.h" -#else - #warning "The SD library was not found. loadImage() and image() won't be supported." -#endif - -#define swap(a, b) { int16_t t = a; a = b; b = t; } - -/* TODO -enum RectMode { - CORNER, - CORNERS, - RADIUS, - CENTER -}; -*/ - -typedef uint16_t color; - -class Adafruit_GFX : public Print { - public: - - Adafruit_GFX(int16_t w, int16_t h); // Constructor - - // This MUST be defined by the subclass - virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; - - - - // These MAY be overridden by the subclass to provide device-specific - // optimized code. Otherwise 'generic' versions are used. - virtual void - drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - uint16_t color), - drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color), - drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color), - drawRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color), - fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color), - fillScreen(uint16_t color), - invertDisplay(boolean i); - -// These exist only with Adafruit_GFX (no subclass overrides) - void - drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), - drawCircleHelper(int16_t x0, int16_t y0, - int16_t r, uint8_t cornername, uint16_t color), - fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), - fillCircleHelper(int16_t x0, int16_t y0, int16_t r, - uint8_t cornername, int16_t delta, uint16_t color), - - drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - int16_t x2, int16_t y2, uint16_t color), - fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - int16_t x2, int16_t y2, uint16_t color), - drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, - int16_t radius, uint16_t color), - fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, - int16_t radius, uint16_t color), - - drawBitmap(int16_t x, int16_t y, - const uint8_t *bitmap, int16_t w, int16_t h, - uint16_t color), - drawChar(int16_t x, int16_t y, unsigned char c, - uint16_t color, uint16_t bg, uint8_t size), - setCursor(int16_t x, int16_t y), - setTextColor(uint16_t c), - setTextColor(uint16_t c, uint16_t bg), - setTextSize(uint8_t s), - setTextWrap(boolean w), - setRotation(uint8_t r); - -#if ARDUINO >= 100 - virtual size_t write(uint8_t); -#else - virtual void write(uint8_t); -#endif - - int16_t - height(void), - width(void); - - - uint8_t getRotation(void); - - - /* - * Processing-like graphics primitives - */ - - /// transforms a color in 16-bit form given the RGB components. - /// The default implementation makes a 5-bit red, a 6-bit - /// green and a 5-bit blue (MSB to LSB). Devices that use - /// different scheme should override this. - virtual uint16_t newColor(uint8_t red, uint8_t green, uint8_t blue); - - - void - // http://processing.org/reference/background_.html - background(uint8_t red, uint8_t green, uint8_t blue), - background(color c), - - // http://processing.org/reference/fill_.html - fill(uint8_t red, uint8_t green, uint8_t blue), - fill(color c), - - // http://processing.org/reference/noFill_.html - noFill(), - - // http://processing.org/reference/stroke_.html - stroke(uint8_t red, uint8_t green, uint8_t blue), - stroke(color c), - - // http://processing.org/reference/noStroke_.html - noStroke(), - - text(const char * text, int16_t x, int16_t y), - textWrap(const char * text, int16_t x, int16_t y), - - textSize(uint8_t size), - - // similar to ellipse() in Processing, but with - // a single radius. - // http://processing.org/reference/ellipse_.html - circle(int16_t x, int16_t y, int16_t r), - point(int16_t x, int16_t y), - line(int16_t x1, int16_t y1, int16_t x2, int16_t y2), - quad(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3, int16_t x4, int16_t y4), -rect(int16_t x, int16_t y, int16_t width, int16_t height), - rect(int16_t x, int16_t y, int16_t width, int16_t height, int16_t radius), - triangle(int16_t x1, int16_t y1, int16_t x2, int16_t y2, int16_t x3, int16_t y3); - - /* TODO - void rectMode(RectMode mode); - - void pushStyle(); - void popStyle(); - */ - -#if defined(__SD_H__) // Arduino SD library - PImage loadImage(const char * fileName) { return PImage::loadImage(fileName); } - - void image(PImage & img, uint16_t x, uint16_t y); -#endif - - protected: - int16_t - WIDTH, HEIGHT; // this is the 'raw' display w/h - never changes - int16_t - _width, _height, // dependent on rotation - cursor_x, cursor_y; - uint16_t - textcolor, textbgcolor; - uint8_t - textsize, - rotation; - boolean - wrap; // If set, 'wrap' text at right edge of display - - /* - * Processing-style graphics state - */ - - color strokeColor; - bool useStroke; - color fillColor; - bool useFill; -}; - -#if defined(__SD_H__) // Arduino SD library - -#define BUFFPIXEL 20 - -void Adafruit_GFX::image(PImage & img, uint16_t x, uint16_t y) { - int w, h, row, col; - uint8_t r, g, b; - uint32_t pos = 0; - uint8_t sdbuffer[3*BUFFPIXEL]; // pixel buffer (R+G+B per pixel) - uint8_t buffidx = sizeof(sdbuffer); // Current position in sdbuffer - - // Crop area to be loaded - w = img._bmpWidth; - h = img._bmpHeight; - if((x+w-1) >= width()) w = width() - x; - if((y+h-1) >= height()) h = height() - y; - - /* - // Set TFT address window to clipped image bounds - setAddrWindow(x, y, x+w-1, y+h-1); - */ - - for (row=0; row= sizeof(sdbuffer)) { // Indeed - img._bmpFile.read(sdbuffer, sizeof(sdbuffer)); - buffidx = 0; // Set index to beginning - } - - // Convert pixel from BMP to TFT format, push to display - b = sdbuffer[buffidx++]; - g = sdbuffer[buffidx++]; - r = sdbuffer[buffidx++]; - //pushColor(tft.Color565(r,g,b)); - drawPixel(x + col, y + row, newColor(r, g, b)); - - } // end pixel - } // end scanline - -} - - - - -// These read 16- and 32-bit types from the SD card file. -// BMP data is stored little-endian, Arduino is little-endian too. -// May need to reverse subscript order if porting elsewhere. - -uint16_t PImage::read16(File f) { - uint16_t result; - ((uint8_t *)&result)[0] = f.read(); // LSB - ((uint8_t *)&result)[1] = f.read(); // MSB - return result; -} - -uint32_t PImage::read32(File f) { - uint32_t result; - ((uint8_t *)&result)[0] = f.read(); // LSB - ((uint8_t *)&result)[1] = f.read(); - ((uint8_t *)&result)[2] = f.read(); - ((uint8_t *)&result)[3] = f.read(); // MSB - return result; -} - - -PImage PImage::loadImage(const char * fileName) { - File bmpFile; - int bmpWidth, bmpHeight; // W+H in pixels - uint8_t bmpDepth; // Bit depth (currently must be 24) - uint32_t bmpImageoffset; // Start of image data in file - uint32_t rowSize; // Not always = bmpWidth; may have padding - bool flip = true; // BMP is stored bottom-to-top - - - // Open requested file on SD card - if ((bmpFile = SD.open(fileName)) == NULL) { - Serial.print(F("loadImage: file not found: ")); - Serial.println(fileName); - return PImage(); // load error - } - - - - // Parse BMP header - if(read16(bmpFile) != 0x4D42) { // BMP signature - Serial.println(F("loadImage: file doesn't look like a BMP")); - return PImage(); - } - - Serial.print(F("File size: ")); Serial.println(read32(bmpFile)); - (void)read32(bmpFile); // Read & ignore creator bytes - bmpImageoffset = read32(bmpFile); // Start of image data - Serial.print(F("Image Offset: ")); Serial.println(bmpImageoffset, DEC); - // Read DIB header - Serial.print(F("Header size: ")); Serial.println(read32(bmpFile)); - bmpWidth = read32(bmpFile); - bmpHeight = read32(bmpFile); - if(read16(bmpFile) != 1) { // # planes -- must be '1' - Serial.println(F("loadImage: invalid n. of planes")); - return PImage(); - } - - bmpDepth = read16(bmpFile); // bits per pixel - Serial.print(F("Bit Depth: ")); Serial.println(bmpDepth); - if((bmpDepth != 24) || (read32(bmpFile) != 0)) { // 0 = uncompressed { - Serial.println(F("loadImage: invalid pixel format")); - return PImage(); - } - - Serial.print(F("Image size: ")); - Serial.print(bmpWidth); - Serial.print('x'); - Serial.println(bmpHeight); - - // BMP rows are padded (if needed) to 4-byte boundary - rowSize = (bmpWidth * 3 + 3) & ~3; - - // If bmpHeight is negative, image is in top-down order. - // This is not canon but has been observed in the wild. - if(bmpHeight < 0) { - bmpHeight = -bmpHeight; - flip = false; - } - - return PImage(bmpFile, bmpWidth, bmpHeight, bmpDepth, bmpImageoffset, rowSize, flip); -} - -#endif - -#endif // _ADAFRUIT_GFX_H diff --git a/libraries/TFT/src/utility/Adafruit_ST7735.cpp b/libraries/TFT/src/utility/Adafruit_ST7735.cpp deleted file mode 100644 index c9698a6e564..00000000000 --- a/libraries/TFT/src/utility/Adafruit_ST7735.cpp +++ /dev/null @@ -1,751 +0,0 @@ -/*************************************************** - This is a library for the Adafruit 1.8" SPI display. - This library works with the Adafruit 1.8" TFT Breakout w/SD card - ----> http://www.adafruit.com/products/358 - as well as Adafruit raw 1.8" TFT display - ----> http://www.adafruit.com/products/618 - - Check out the links above for our tutorials and wiring diagrams - These displays use SPI to communicate, 4 or 5 pins are required to - interface (RST is optional) - Adafruit invests time and resources providing this open source code, - please support Adafruit and open-source hardware by purchasing - products from Adafruit! - - Written by Limor Fried/Ladyada for Adafruit Industries. - MIT license, all text above must be included in any redistribution - ****************************************************/ - -#include "Adafruit_ST7735.h" -#include -#include -#include "pins_arduino.h" -#include "wiring_private.h" -#include - -inline uint16_t swapcolor(uint16_t x) { - return (x << 11) | (x & 0x07E0) | (x >> 11); -} - - -// Constructor when using software SPI. All output pins are configurable. -Adafruit_ST7735::Adafruit_ST7735(uint8_t cs, uint8_t rs, uint8_t sid, - uint8_t sclk, uint8_t rst) : Adafruit_GFX(ST7735_TFTWIDTH, ST7735_TFTHEIGHT) -{ - _cs = cs; - _rs = rs; - _sid = sid; - _sclk = sclk; - _rst = rst; - hwSPI = false; -} - - -// Constructor when using hardware SPI. Faster, but must use SPI pins -// specific to each board type (e.g. 11,13 for Uno, 51,52 for Mega, etc.) -Adafruit_ST7735::Adafruit_ST7735(uint8_t cs, uint8_t rs, uint8_t rst) : -Adafruit_GFX(ST7735_TFTWIDTH, ST7735_TFTHEIGHT) -{ - _cs = cs; - _rs = rs; - _rst = rst; - hwSPI = true; - _sid = _sclk = 0; -} - - -inline void Adafruit_ST7735::spiwrite(uint8_t c) { - - //Serial.println(c, HEX); - - if (hwSPI) { - SPI.transfer(c); - } else { - // Fast SPI bitbang swiped from LPD8806 library - for(uint8_t bit = 0x80; bit; bit >>= 1) { - if(c & bit) *dataport |= datapinmask; - else *dataport &= ~datapinmask; - *clkport |= clkpinmask; - *clkport &= ~clkpinmask; - } - } -} - - -void Adafruit_ST7735::writecommand(uint8_t c) { -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.beginTransaction(spisettings); -#endif - -#ifdef __ARDUINO_ARC__ - digitalWrite(_rs, LOW); -#else - *rsport &= ~rspinmask; -#endif - *csport &= ~cspinmask; - - //Serial.print("C "); - spiwrite(c); - - *csport |= cspinmask; -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.endTransaction(); -#endif -} - - -void Adafruit_ST7735::writedata(uint8_t c) { -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.beginTransaction(spisettings); -#endif - -#ifdef __ARDUINO_ARC__ - digitalWrite(_rs, HIGH); -#else - *rsport |= rspinmask; -#endif - *csport &= ~cspinmask; - - //Serial.print("D "); - spiwrite(c); - - *csport |= cspinmask; -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.endTransaction(); -#endif -} - - -// Rather than a bazillion writecommand() and writedata() calls, screen -// initialization commands and arguments are organized in these tables -// stored in PROGMEM. The table may look bulky, but that's mostly the -// formatting -- storage-wise this is hundreds of bytes more compact -// than the equivalent code. Companion function follows. -#define DELAY 0x80 -PROGMEM const static unsigned char - Bcmd[] = { // Initialization commands for 7735B screens - 18, // 18 commands in list: - ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay - 50, // 50 ms delay - ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay - 255, // 255 = 500 ms delay - ST7735_COLMOD , 1+DELAY, // 3: Set color mode, 1 arg + delay: - 0x05, // 16-bit color - 10, // 10 ms delay - ST7735_FRMCTR1, 3+DELAY, // 4: Frame rate control, 3 args + delay: - 0x00, // fastest refresh - 0x06, // 6 lines front porch - 0x03, // 3 lines back porch - 10, // 10 ms delay - ST7735_MADCTL , 1 , // 5: Memory access ctrl (directions), 1 arg: - 0x08, // Row addr/col addr, bottom to top refresh - ST7735_DISSET5, 2 , // 6: Display settings #5, 2 args, no delay: - 0x15, // 1 clk cycle nonoverlap, 2 cycle gate - // rise, 3 cycle osc equalize - 0x02, // Fix on VTL - ST7735_INVCTR , 1 , // 7: Display inversion control, 1 arg: - 0x0, // Line inversion - ST7735_PWCTR1 , 2+DELAY, // 8: Power control, 2 args + delay: - 0x02, // GVDD = 4.7V - 0x70, // 1.0uA - 10, // 10 ms delay - ST7735_PWCTR2 , 1 , // 9: Power control, 1 arg, no delay: - 0x05, // VGH = 14.7V, VGL = -7.35V - ST7735_PWCTR3 , 2 , // 10: Power control, 2 args, no delay: - 0x01, // Opamp current small - 0x02, // Boost frequency - ST7735_VMCTR1 , 2+DELAY, // 11: Power control, 2 args + delay: - 0x3C, // VCOMH = 4V - 0x38, // VCOML = -1.1V - 10, // 10 ms delay - ST7735_PWCTR6 , 2 , // 12: Power control, 2 args, no delay: - 0x11, 0x15, - ST7735_GMCTRP1,16 , // 13: Magical unicorn dust, 16 args, no delay: - 0x09, 0x16, 0x09, 0x20, // (seriously though, not sure what - 0x21, 0x1B, 0x13, 0x19, // these config values represent) - 0x17, 0x15, 0x1E, 0x2B, - 0x04, 0x05, 0x02, 0x0E, - ST7735_GMCTRN1,16+DELAY, // 14: Sparkles and rainbows, 16 args + delay: - 0x0B, 0x14, 0x08, 0x1E, // (ditto) - 0x22, 0x1D, 0x18, 0x1E, - 0x1B, 0x1A, 0x24, 0x2B, - 0x06, 0x06, 0x02, 0x0F, - 10, // 10 ms delay - ST7735_CASET , 4 , // 15: Column addr set, 4 args, no delay: - 0x00, 0x02, // XSTART = 2 - 0x00, 0x81, // XEND = 129 - ST7735_RASET , 4 , // 16: Row addr set, 4 args, no delay: - 0x00, 0x02, // XSTART = 1 - 0x00, 0x81, // XEND = 160 - ST7735_NORON , DELAY, // 17: Normal display on, no args, w/delay - 10, // 10 ms delay - ST7735_DISPON , DELAY, // 18: Main screen turn on, no args, w/delay - 255 }, // 255 = 500 ms delay - - Rcmd1[] = { // Init for 7735R, part 1 (red or green tab) - 15, // 15 commands in list: - ST7735_SWRESET, DELAY, // 1: Software reset, 0 args, w/delay - 150, // 150 ms delay - ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, 0 args, w/delay - 255, // 500 ms delay - ST7735_FRMCTR1, 3 , // 3: Frame rate ctrl - normal mode, 3 args: - 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D) - ST7735_FRMCTR2, 3 , // 4: Frame rate control - idle mode, 3 args: - 0x01, 0x2C, 0x2D, // Rate = fosc/(1x2+40) * (LINE+2C+2D) - ST7735_FRMCTR3, 6 , // 5: Frame rate ctrl - partial mode, 6 args: - 0x01, 0x2C, 0x2D, // Dot inversion mode - 0x01, 0x2C, 0x2D, // Line inversion mode - ST7735_INVCTR , 1 , // 6: Display inversion ctrl, 1 arg, no delay: - 0x07, // No inversion - ST7735_PWCTR1 , 3 , // 7: Power control, 3 args, no delay: - 0xA2, - 0x02, // -4.6V - 0x84, // AUTO mode - ST7735_PWCTR2 , 1 , // 8: Power control, 1 arg, no delay: - 0xC5, // VGH25 = 2.4C VGSEL = -10 VGH = 3 * AVDD - ST7735_PWCTR3 , 2 , // 9: Power control, 2 args, no delay: - 0x0A, // Opamp current small - 0x00, // Boost frequency - ST7735_PWCTR4 , 2 , // 10: Power control, 2 args, no delay: - 0x8A, // BCLK/2, Opamp current small & Medium low - 0x2A, - ST7735_PWCTR5 , 2 , // 11: Power control, 2 args, no delay: - 0x8A, 0xEE, - ST7735_VMCTR1 , 1 , // 12: Power control, 1 arg, no delay: - 0x0E, - ST7735_INVOFF , 0 , // 13: Don't invert display, no args, no delay - ST7735_MADCTL , 1 , // 14: Memory access control (directions), 1 arg: - 0xC8, // row addr/col addr, bottom to top refresh - ST7735_COLMOD , 1 , // 15: set color mode, 1 arg, no delay: - 0x05 }, // 16-bit color - - Rcmd2green[] = { // Init for 7735R, part 2 (green tab only) - 2, // 2 commands in list: - ST7735_CASET , 4 , // 1: Column addr set, 4 args, no delay: - 0x00, 0x02, // XSTART = 0 - 0x00, 0x7F+0x02, // XEND = 127 - ST7735_RASET , 4 , // 2: Row addr set, 4 args, no delay: - 0x00, 0x01, // XSTART = 0 - 0x00, 0x9F+0x01 }, // XEND = 159 - Rcmd2red[] = { // Init for 7735R, part 2 (red tab only) - 2, // 2 commands in list: - ST7735_CASET , 4 , // 1: Column addr set, 4 args, no delay: - 0x00, 0x00, // XSTART = 0 - 0x00, 0x7F, // XEND = 127 - ST7735_RASET , 4 , // 2: Row addr set, 4 args, no delay: - 0x00, 0x00, // XSTART = 0 - 0x00, 0x9F }, // XEND = 159 - - Rcmd3[] = { // Init for 7735R, part 3 (red or green tab) - 4, // 4 commands in list: - ST7735_GMCTRP1, 16 , // 1: Magical unicorn dust, 16 args, no delay: - 0x02, 0x1c, 0x07, 0x12, - 0x37, 0x32, 0x29, 0x2d, - 0x29, 0x25, 0x2B, 0x39, - 0x00, 0x01, 0x03, 0x10, - ST7735_GMCTRN1, 16 , // 2: Sparkles and rainbows, 16 args, no delay: - 0x03, 0x1d, 0x07, 0x06, - 0x2E, 0x2C, 0x29, 0x2D, - 0x2E, 0x2E, 0x37, 0x3F, - 0x00, 0x00, 0x02, 0x10, - ST7735_NORON , DELAY, // 3: Normal display on, no args, w/delay - 10, // 10 ms delay - ST7735_DISPON , DELAY, // 4: Main screen turn on, no args w/delay - 100 }, // 100 ms delay - Gcmd[] = { // Initialization commands for 7735B screens - 19, // 18 commands in list: - ST7735_SWRESET, DELAY, // 1: Software reset, no args, w/delay - 50, // 50 ms delay - ST7735_SLPOUT , DELAY, // 2: Out of sleep mode, no args, w/delay - 100, // 255 = 500 ms delay - 0x26 , 1, // 3: Set default gamma - 0x04, // 16-bit color - 0xb1, 2, // 4: Frame Rate - 0x0b, - 0x14, - 0xc0, 2, // 5: VRH1[4:0] & VC[2:0] - 0x08, - 0x00, - 0xc1, 1, // 6: BT[2:0] - 0x05, - 0xc5, 2, // 7: VMH[6:0] & VML[6:0] - 0x41, - 0x30, - 0xc7, 1, // 8: LCD Driving control - 0xc1, - 0xEC, 1, // 9: Set pumping color freq - 0x1b, - 0x3a , 1 + DELAY, // 10: Set color format - 0x55, // 16-bit color - 100, - 0x2a, 4, // 11: Set Column Address - 0x00, - 0x00, - 0x00, - 0x7f, - 0x2b, 4, // 12: Set Page Address - 0x00, - 0x00, - 0x00, - 0x9f, - 0x36, 1, // 12+1: Set Scanning Direction - 0xc8, - 0xb7, 1, // 14: Set Source Output Direciton - 0x00, - 0xf2, 1, // 15: Enable Gamma bit - 0x00, - 0xe0, 15 + DELAY, // 16: magic - 0x28, 0x24, 0x22, 0x31, - 0x2b, 0x0e, 0x53, 0xa5, - 0x42, 0x16, 0x18, 0x12, - 0x1a, 0x14, 0x03, - 50, - 0xe1, 15 + DELAY, // 17: more magic - 0x17, 0x1b, 0x1d, 0x0e, - 0x14, 0x11, 0x2c, 0xa5, - 0x3d, 0x09, 0x27, 0x2d, - 0x25, 0x2b, 0x3c, - 50, - ST7735_NORON , DELAY, // 17: Normal display on, no args, w/delay - 10, // 10 ms delay - ST7735_DISPON , DELAY, // 18: Main screen turn on, no args, w/delay - 255 }; // 255 = 500 ms delay - - - -// Companion code to the above tables. Reads and issues -// a series of LCD commands stored in PROGMEM byte array. -void Adafruit_ST7735::commandList(const uint8_t *addr) { - - uint8_t numCommands, numArgs; - uint16_t ms; - - numCommands = pgm_read_byte(addr++); // Number of commands to follow - while(numCommands--) { // For each command... - writecommand(pgm_read_byte(addr++)); // Read, issue command - numArgs = pgm_read_byte(addr++); // Number of args to follow - ms = numArgs & DELAY; // If hibit set, delay follows args - numArgs &= ~DELAY; // Mask out delay bit - while(numArgs--) { // For each argument... - writedata(pgm_read_byte(addr++)); // Read, issue argument - } - - if(ms) { - ms = pgm_read_byte(addr++); // Read post-command delay time (ms) - if(ms == 255) ms = 500; // If 255, delay for 500 ms - delay(ms); - } - } -} - - -// Initialization code common to both 'B' and 'R' type displays -void Adafruit_ST7735::commonInit(const uint8_t *cmdList) { - - colstart = rowstart = 0; // May be overridden in init func - - pinMode(_rs, OUTPUT); - pinMode(_cs, OUTPUT); - csport = portOutputRegister(digitalPinToPort(_cs)); - cspinmask = digitalPinToBitMask(_cs); - rsport = portOutputRegister(digitalPinToPort(_rs)); - rspinmask = digitalPinToBitMask(_rs); - - if(hwSPI) { // Using hardware SPI - SPI.begin(); -#ifdef SPI_HAS_TRANSACTION - spisettings = SPISettings(4000000L, MSBFIRST, SPI_MODE0); -#else -#if defined(ARDUINO_ARCH_SAM) - SPI.setClockDivider(24); // 4 MHz (half speed) -#else - SPI.setClockDivider(SPI_CLOCK_DIV4); // 4 MHz (half speed) -#endif - SPI.setBitOrder(MSBFIRST); - SPI.setDataMode(SPI_MODE0); -#endif // SPI_HAS_TRANSACTION - } else { - pinMode(_sclk, OUTPUT); - pinMode(_sid , OUTPUT); - clkport = portOutputRegister(digitalPinToPort(_sclk)); - clkpinmask = digitalPinToBitMask(_sclk); - dataport = portOutputRegister(digitalPinToPort(_sid)); - datapinmask = digitalPinToBitMask(_sid); - *clkport &= ~clkpinmask; - *dataport &= ~datapinmask; - } - - // toggle RST low to reset; CS low so it'll listen to us - *csport &= ~cspinmask; - if (_rst) { - pinMode(_rst, OUTPUT); - digitalWrite(_rst, HIGH); - delay(500); - digitalWrite(_rst, LOW); - delay(500); - digitalWrite(_rst, HIGH); - delay(500); - } - - if(cmdList) commandList(cmdList); -} - - -// Initialization for ST7735B screens -void Adafruit_ST7735::initB(void) { - commonInit(Bcmd); -} - - -// Initialization for ST7735B screens -void Adafruit_ST7735::initG(void) { - commonInit(Gcmd); -} - - -// Initialization for ST7735R screens (green or red tabs) -void Adafruit_ST7735::initR(uint8_t options) { - commonInit(Rcmd1); - if(options == INITR_GREENTAB) { - commandList(Rcmd2green); - colstart = 2; - rowstart = 1; - } else { - // colstart, rowstart left at default '0' values - commandList(Rcmd2red); - } - commandList(Rcmd3); - tabcolor = options; -} - - -void Adafruit_ST7735::setAddrWindow(uint8_t x0, uint8_t y0, uint8_t x1, - uint8_t y1) { - - writecommand(ST7735_CASET); // Column addr set - writedata(0x00); - writedata(x0+colstart); // XSTART - writedata(0x00); - writedata(x1+colstart); // XEND - - writecommand(ST7735_RASET); // Row addr set - writedata(0x00); - writedata(y0+rowstart); // YSTART - writedata(0x00); - writedata(y1+rowstart); // YEND - - writecommand(ST7735_RAMWR); // write to RAM -} - - -void Adafruit_ST7735::pushColor(uint16_t color) { -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.beginTransaction(spisettings); -#endif - -#ifdef __ARDUINO_ARC__ - digitalWrite(_rs, HIGH); -#else - *rsport |= rspinmask; -#endif - *csport &= ~cspinmask; - - if (tabcolor == INITR_BLACKTAB) color = swapcolor(color); - spiwrite(color >> 8); - spiwrite(color); - - *csport |= cspinmask; -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.endTransaction(); -#endif -} - -void Adafruit_ST7735::drawPixel(int16_t x, int16_t y, uint16_t color) { - - if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; - - setAddrWindow(x,y,x+1,y+1); - -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.beginTransaction(spisettings); -#endif - -#ifdef __ARDUINO_ARC__ - digitalWrite(_rs, HIGH); -#else - *rsport |= rspinmask; -#endif - *csport &= ~cspinmask; - - if (tabcolor == INITR_BLACKTAB) color = swapcolor(color); - - spiwrite(color >> 8); - spiwrite(color); - - *csport |= cspinmask; -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.endTransaction(); -#endif -} - - -void Adafruit_ST7735::drawFastVLine(int16_t x, int16_t y, int16_t h, - uint16_t color) { - - // Rudimentary clipping - if((x >= _width) || (y >= _height)) return; - if((y+h-1) >= _height) h = _height-y; - setAddrWindow(x, y, x, y+h-1); - - if (tabcolor == INITR_BLACKTAB) color = swapcolor(color); - - uint8_t hi = color >> 8, lo = color; -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.beginTransaction(spisettings); -#endif - -#ifdef __ARDUINO_ARC__ - digitalWrite(_rs, HIGH); -#else - *rsport |= rspinmask; -#endif - *csport &= ~cspinmask; - while (h--) { - spiwrite(hi); - spiwrite(lo); - } - *csport |= cspinmask; -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.endTransaction(); -#endif -} - - -void Adafruit_ST7735::drawFastHLine(int16_t x, int16_t y, int16_t w, - uint16_t color) { - - // Rudimentary clipping - if((x >= _width) || (y >= _height)) return; - if((x+w-1) >= _width) w = _width-x; - setAddrWindow(x, y, x+w-1, y); - - if (tabcolor == INITR_BLACKTAB) color = swapcolor(color); - - uint8_t hi = color >> 8, lo = color; -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.beginTransaction(spisettings); -#endif - -#ifdef __ARDUINO_ARC__ - digitalWrite(_rs, HIGH); -#else - *rsport |= rspinmask; -#endif - *csport &= ~cspinmask; - while (w--) { - spiwrite(hi); - spiwrite(lo); - } - *csport |= cspinmask; -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.endTransaction(); -#endif -} - - - -void Adafruit_ST7735::fillScreen(uint16_t color) { - fillRect(0, 0, _width, _height, color); -} - - - -// fill a rectangle -void Adafruit_ST7735::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { - - // rudimentary clipping (drawChar w/big text requires this) - if((x >= _width) || (y >= _height)) return; - if((x + w - 1) >= _width) w = _width - x; - if((y + h - 1) >= _height) h = _height - y; - - if (tabcolor == INITR_BLACKTAB) color = swapcolor(color); - - setAddrWindow(x, y, x+w-1, y+h-1); - - uint8_t hi = color >> 8, lo = color; -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.beginTransaction(spisettings); -#endif - -#ifdef __ARDUINO_ARC__ - digitalWrite(_rs, HIGH); -#else - *rsport |= rspinmask; -#endif - *csport &= ~cspinmask; - for(y=h; y>0; y--) { - for(x=w; x>0; x--) { - spiwrite(hi); - spiwrite(lo); - } - } - - *csport |= cspinmask; -#ifdef SPI_HAS_TRANSACTION - if (hwSPI) SPI.endTransaction(); -#endif -} - - -#define MADCTL_MY 0x80 -#define MADCTL_MX 0x40 -#define MADCTL_MV 0x20 -#define MADCTL_ML 0x10 -#define MADCTL_RGB 0x08 -#define MADCTL_MH 0x04 - -void Adafruit_ST7735::setRotation(uint8_t m) { - - writecommand(ST7735_MADCTL); - rotation = m % 4; // can't be higher than 3 - switch (rotation) { - case 0: - writedata(MADCTL_MX | MADCTL_MY | MADCTL_RGB); - _width = ST7735_TFTWIDTH; - _height = ST7735_TFTHEIGHT; - break; - case 1: - writedata(MADCTL_MY | MADCTL_MV | MADCTL_RGB); - _width = ST7735_TFTHEIGHT; - _height = ST7735_TFTWIDTH; - break; - case 2: - writedata(MADCTL_RGB); - _width = ST7735_TFTWIDTH; - _height = ST7735_TFTHEIGHT; - break; - case 3: - writedata(MADCTL_MX | MADCTL_MV | MADCTL_RGB); - _width = ST7735_TFTHEIGHT; - _height = ST7735_TFTWIDTH; - break; - } -} - - -void Adafruit_ST7735::invertDisplay(boolean i) { - writecommand(i ? ST7735_INVON : ST7735_INVOFF); -} - - -////////// stuff not actively being used, but kept for posterity -/* - - uint8_t Adafruit_ST7735::spiread(void) { - uint8_t r = 0; - if (_sid > 0) { - r = shiftIn(_sid, _sclk, MSBFIRST); - } else { - //SID_DDR &= ~_BV(SID); - //int8_t i; - //for (i=7; i>=0; i--) { - // SCLK_PORT &= ~_BV(SCLK); - // r <<= 1; - // r |= (SID_PIN >> SID) & 0x1; - // SCLK_PORT |= _BV(SCLK); - //} - //SID_DDR |= _BV(SID); - - } - return r; - } - - - void Adafruit_ST7735::dummyclock(void) { - - if (_sid > 0) { - digitalWrite(_sclk, LOW); - digitalWrite(_sclk, HIGH); - } else { - // SCLK_PORT &= ~_BV(SCLK); - //SCLK_PORT |= _BV(SCLK); - } - } - uint8_t Adafruit_ST7735::readdata(void) { - *portOutputRegister(rsport) |= rspin; - - *portOutputRegister(csport) &= ~ cspin; - - uint8_t r = spiread(); - - *portOutputRegister(csport) |= cspin; - - return r; - - } - - uint8_t Adafruit_ST7735::readcommand8(uint8_t c) { - digitalWrite(_rs, LOW); - - *portOutputRegister(csport) &= ~ cspin; - - spiwrite(c); - - digitalWrite(_rs, HIGH); - pinMode(_sid, INPUT); // input! - digitalWrite(_sid, LOW); // low - spiread(); - uint8_t r = spiread(); - - - *portOutputRegister(csport) |= cspin; - - - pinMode(_sid, OUTPUT); // back to output - return r; - } - - - uint16_t Adafruit_ST7735::readcommand16(uint8_t c) { - digitalWrite(_rs, LOW); - if (_cs) - digitalWrite(_cs, LOW); - - spiwrite(c); - pinMode(_sid, INPUT); // input! - uint16_t r = spiread(); - r <<= 8; - r |= spiread(); - if (_cs) - digitalWrite(_cs, HIGH); - - pinMode(_sid, OUTPUT); // back to output - return r; - } - - uint32_t Adafruit_ST7735::readcommand32(uint8_t c) { - digitalWrite(_rs, LOW); - if (_cs) - digitalWrite(_cs, LOW); - spiwrite(c); - pinMode(_sid, INPUT); // input! - - dummyclock(); - dummyclock(); - - uint32_t r = spiread(); - r <<= 8; - r |= spiread(); - r <<= 8; - r |= spiread(); - r <<= 8; - r |= spiread(); - if (_cs) - digitalWrite(_cs, HIGH); - - pinMode(_sid, OUTPUT); // back to output - return r; - } - - */ diff --git a/libraries/TFT/src/utility/Adafruit_ST7735.h b/libraries/TFT/src/utility/Adafruit_ST7735.h deleted file mode 100644 index 077045dca4f..00000000000 --- a/libraries/TFT/src/utility/Adafruit_ST7735.h +++ /dev/null @@ -1,155 +0,0 @@ -/*************************************************** - This is a library for the Adafruit 1.8" SPI display. - This library works with the Adafruit 1.8" TFT Breakout w/SD card - ----> http://www.adafruit.com/products/358 - as well as Adafruit raw 1.8" TFT display - ----> http://www.adafruit.com/products/618 - - Check out the links above for our tutorials and wiring diagrams - These displays use SPI to communicate, 4 or 5 pins are required to - interface (RST is optional) - Adafruit invests time and resources providing this open source code, - please support Adafruit and open-source hardware by purchasing - products from Adafruit! - - Written by Limor Fried/Ladyada for Adafruit Industries. - MIT license, all text above must be included in any redistribution - ****************************************************/ - -#ifndef _ADAFRUIT_ST7735H_ -#define _ADAFRUIT_ST7735H_ - -#if ARDUINO >= 100 - #include "Arduino.h" - #include "Print.h" -#else - #include "WProgram.h" -#endif -#include "Adafruit_GFX.h" -#include -#include - -// some flags for initR() :( -#define INITR_GREENTAB 0x0 -#define INITR_REDTAB 0x1 -#define INITR_BLACKTAB 0x2 - -#define ST7735_TFTWIDTH 128 -#define ST7735_TFTHEIGHT 160 - -#define ST7735_NOP 0x00 -#define ST7735_SWRESET 0x01 -#define ST7735_RDDID 0x04 -#define ST7735_RDDST 0x09 - -#define ST7735_SLPIN 0x10 -#define ST7735_SLPOUT 0x11 -#define ST7735_PTLON 0x12 -#define ST7735_NORON 0x13 - -#define ST7735_INVOFF 0x20 -#define ST7735_INVON 0x21 -#define ST7735_DISPOFF 0x28 -#define ST7735_DISPON 0x29 -#define ST7735_CASET 0x2A -#define ST7735_RASET 0x2B -#define ST7735_RAMWR 0x2C -#define ST7735_RAMRD 0x2E - -#define ST7735_PTLAR 0x30 -#define ST7735_COLMOD 0x3A -#define ST7735_MADCTL 0x36 - -#define ST7735_FRMCTR1 0xB1 -#define ST7735_FRMCTR2 0xB2 -#define ST7735_FRMCTR3 0xB3 -#define ST7735_INVCTR 0xB4 -#define ST7735_DISSET5 0xB6 - -#define ST7735_PWCTR1 0xC0 -#define ST7735_PWCTR2 0xC1 -#define ST7735_PWCTR3 0xC2 -#define ST7735_PWCTR4 0xC3 -#define ST7735_PWCTR5 0xC4 -#define ST7735_VMCTR1 0xC5 - -#define ST7735_RDID1 0xDA -#define ST7735_RDID2 0xDB -#define ST7735_RDID3 0xDC -#define ST7735_RDID4 0xDD - -#define ST7735_PWCTR6 0xFC - -#define ST7735_GMCTRP1 0xE0 -#define ST7735_GMCTRN1 0xE1 - -// Color definitions -#define ST7735_BLACK 0x0000 -#define ST7735_BLUE 0x001F -#define ST7735_RED 0xF800 -#define ST7735_GREEN 0x07E0 -#define ST7735_CYAN 0x07FF -#define ST7735_MAGENTA 0xF81F -#define ST7735_YELLOW 0xFFE0 -#define ST7735_WHITE 0xFFFF - - -class Adafruit_ST7735 : public Adafruit_GFX { - - public: - - Adafruit_ST7735(uint8_t CS, uint8_t RS, uint8_t SID, uint8_t SCLK, - uint8_t RST); - Adafruit_ST7735(uint8_t CS, uint8_t RS, uint8_t RST); - - void initB(void), // for ST7735B displays - initG(void), // for ILI9163C displays - initR(uint8_t options = INITR_GREENTAB), // for ST7735R - setAddrWindow(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1), - pushColor(uint16_t color), - fillScreen(uint16_t color), - drawPixel(int16_t x, int16_t y, uint16_t color), - drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color), - drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color), - fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color), - setRotation(uint8_t r), - invertDisplay(boolean i); - uint16_t Color565(uint8_t r, uint8_t g, uint8_t b) { return newColor(r, g, b);} - - /* These are not for current use, 8-bit protocol only! - uint8_t readdata(void), - readcommand8(uint8_t); - uint16_t readcommand16(uint8_t); - uint32_t readcommand32(uint8_t); - void dummyclock(void); - */ - - private: - uint8_t tabcolor; - - void spiwrite(uint8_t), - writecommand(uint8_t c), - writedata(uint8_t d), - commandList(const uint8_t *addr), - commonInit(const uint8_t *cmdList); -//uint8_t spiread(void); - - boolean hwSPI; -#ifdef SPI_HAS_TRANSACTION - SPISettings spisettings; -#endif -#if defined(ARDUINO_ARCH_SAM) || defined(__ARDUINO_ARC__) - volatile uint32_t *dataport, *clkport, *csport, *rsport; - uint32_t _cs, _rs, _rst, _sid, _sclk, - datapinmask, clkpinmask, cspinmask, rspinmask, - colstart, rowstart; // some displays need this changed - #else - volatile uint8_t *dataport, *clkport, *csport, *rsport; - uint8_t _cs, _rs, _rst, _sid, _sclk, - datapinmask, clkpinmask, cspinmask, rspinmask, - colstart, rowstart; // some displays need this changed - #endif -}; - -#endif diff --git a/libraries/TFT/src/utility/PImage.h b/libraries/TFT/src/utility/PImage.h deleted file mode 100644 index ed99db0bff8..00000000000 --- a/libraries/TFT/src/utility/PImage.h +++ /dev/null @@ -1,65 +0,0 @@ - - -#ifndef _PIMAGE_H -#define _PIMAGE_H - -class Adafruit_GFX; - -#if defined(__SD_H__) // Arduino SD library - - -/// This class mimics Processing's PImage, but with fewer -/// capabilities. It allows an image stored in the SD card to be -/// drawn to the display. -/// @author Enrico Gueli -class PImage { -public: - PImage() : - _valid(false), - _bmpWidth(0), - _bmpHeight(0) { } - - void draw(Adafruit_GFX & glcd, int16_t x, int16_t y); - - static PImage loadImage(const char * fileName); - - void close() { _bmpFile.close(); } - - bool isValid() { return _valid; } - - int width() { return _bmpWidth; } - int height() { return _bmpHeight; } - -private: - friend class Adafruit_GFX; - - File _bmpFile; - int _bmpWidth, _bmpHeight; // W+H in pixels - uint8_t _bmpDepth; // Bit depth (currently must be 24) - uint32_t _bmpImageoffset; // Start of image data in file - uint32_t _rowSize; // Not always = bmpWidth; may have padding - bool _flip; - - bool _valid; - - PImage(File & bmpFile, int bmpWidth, int bmpHeight, uint8_t bmpDepth, uint32_t bmpImageoffset, uint32_t rowSize, bool flip) : - _bmpFile(bmpFile), - _bmpWidth(bmpWidth), - _bmpHeight(bmpHeight), - _bmpDepth(bmpDepth), - _bmpImageoffset(bmpImageoffset), - _rowSize(rowSize), - _flip(flip), - _valid(true) // since Adafruit_GFX is friend, we could just let it write the variables and save some CPU cycles - { } - - static uint16_t read16(File f); - static uint32_t read32(File f); - - // TODO close the file in ~PImage and PImage(const PImage&) - -}; - -#endif - -#endif // _PIMAGE_H diff --git a/libraries/TFT/src/utility/glcdfont.c b/libraries/TFT/src/utility/glcdfont.c deleted file mode 100644 index 2f857b06c91..00000000000 --- a/libraries/TFT/src/utility/glcdfont.c +++ /dev/null @@ -1,268 +0,0 @@ -#if !defined(ARDUINO_ARCH_SAM) && !defined(__ARDUINO_ARC__) -#include -#endif -#include - -#ifndef FONT5X7_H -#define FONT5X7_H - -// standard ascii 5x7 font - -static const unsigned char font[] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, - 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, - 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, - 0x18, 0x3C, 0x7E, 0x3C, 0x18, - 0x1C, 0x57, 0x7D, 0x57, 0x1C, - 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, - 0x00, 0x18, 0x3C, 0x18, 0x00, - 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, - 0x00, 0x18, 0x24, 0x18, 0x00, - 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, - 0x30, 0x48, 0x3A, 0x06, 0x0E, - 0x26, 0x29, 0x79, 0x29, 0x26, - 0x40, 0x7F, 0x05, 0x05, 0x07, - 0x40, 0x7F, 0x05, 0x25, 0x3F, - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, - 0x7F, 0x3E, 0x1C, 0x1C, 0x08, - 0x08, 0x1C, 0x1C, 0x3E, 0x7F, - 0x14, 0x22, 0x7F, 0x22, 0x14, - 0x5F, 0x5F, 0x00, 0x5F, 0x5F, - 0x06, 0x09, 0x7F, 0x01, 0x7F, - 0x00, 0x66, 0x89, 0x95, 0x6A, - 0x60, 0x60, 0x60, 0x60, 0x60, - 0x94, 0xA2, 0xFF, 0xA2, 0x94, - 0x08, 0x04, 0x7E, 0x04, 0x08, - 0x10, 0x20, 0x7E, 0x20, 0x10, - 0x08, 0x08, 0x2A, 0x1C, 0x08, - 0x08, 0x1C, 0x2A, 0x08, 0x08, - 0x1E, 0x10, 0x10, 0x10, 0x10, - 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, - 0x30, 0x38, 0x3E, 0x38, 0x30, - 0x06, 0x0E, 0x3E, 0x0E, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5F, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x07, 0x00, - 0x14, 0x7F, 0x14, 0x7F, 0x14, - 0x24, 0x2A, 0x7F, 0x2A, 0x12, - 0x23, 0x13, 0x08, 0x64, 0x62, - 0x36, 0x49, 0x56, 0x20, 0x50, - 0x00, 0x08, 0x07, 0x03, 0x00, - 0x00, 0x1C, 0x22, 0x41, 0x00, - 0x00, 0x41, 0x22, 0x1C, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, - 0x08, 0x08, 0x3E, 0x08, 0x08, - 0x00, 0x80, 0x70, 0x30, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, - 0x00, 0x00, 0x60, 0x60, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, - 0x3E, 0x51, 0x49, 0x45, 0x3E, - 0x00, 0x42, 0x7F, 0x40, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, - 0x21, 0x41, 0x49, 0x4D, 0x33, - 0x18, 0x14, 0x12, 0x7F, 0x10, - 0x27, 0x45, 0x45, 0x45, 0x39, - 0x3C, 0x4A, 0x49, 0x49, 0x31, - 0x41, 0x21, 0x11, 0x09, 0x07, - 0x36, 0x49, 0x49, 0x49, 0x36, - 0x46, 0x49, 0x49, 0x29, 0x1E, - 0x00, 0x00, 0x14, 0x00, 0x00, - 0x00, 0x40, 0x34, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, - 0x14, 0x14, 0x14, 0x14, 0x14, - 0x00, 0x41, 0x22, 0x14, 0x08, - 0x02, 0x01, 0x59, 0x09, 0x06, - 0x3E, 0x41, 0x5D, 0x59, 0x4E, - 0x7C, 0x12, 0x11, 0x12, 0x7C, - 0x7F, 0x49, 0x49, 0x49, 0x36, - 0x3E, 0x41, 0x41, 0x41, 0x22, - 0x7F, 0x41, 0x41, 0x41, 0x3E, - 0x7F, 0x49, 0x49, 0x49, 0x41, - 0x7F, 0x09, 0x09, 0x09, 0x01, - 0x3E, 0x41, 0x41, 0x51, 0x73, - 0x7F, 0x08, 0x08, 0x08, 0x7F, - 0x00, 0x41, 0x7F, 0x41, 0x00, - 0x20, 0x40, 0x41, 0x3F, 0x01, - 0x7F, 0x08, 0x14, 0x22, 0x41, - 0x7F, 0x40, 0x40, 0x40, 0x40, - 0x7F, 0x02, 0x1C, 0x02, 0x7F, - 0x7F, 0x04, 0x08, 0x10, 0x7F, - 0x3E, 0x41, 0x41, 0x41, 0x3E, - 0x7F, 0x09, 0x09, 0x09, 0x06, - 0x3E, 0x41, 0x51, 0x21, 0x5E, - 0x7F, 0x09, 0x19, 0x29, 0x46, - 0x26, 0x49, 0x49, 0x49, 0x32, - 0x03, 0x01, 0x7F, 0x01, 0x03, - 0x3F, 0x40, 0x40, 0x40, 0x3F, - 0x1F, 0x20, 0x40, 0x20, 0x1F, - 0x3F, 0x40, 0x38, 0x40, 0x3F, - 0x63, 0x14, 0x08, 0x14, 0x63, - 0x03, 0x04, 0x78, 0x04, 0x03, - 0x61, 0x59, 0x49, 0x4D, 0x43, - 0x00, 0x7F, 0x41, 0x41, 0x41, - 0x02, 0x04, 0x08, 0x10, 0x20, - 0x00, 0x41, 0x41, 0x41, 0x7F, - 0x04, 0x02, 0x01, 0x02, 0x04, - 0x40, 0x40, 0x40, 0x40, 0x40, - 0x00, 0x03, 0x07, 0x08, 0x00, - 0x20, 0x54, 0x54, 0x78, 0x40, - 0x7F, 0x28, 0x44, 0x44, 0x38, - 0x38, 0x44, 0x44, 0x44, 0x28, - 0x38, 0x44, 0x44, 0x28, 0x7F, - 0x38, 0x54, 0x54, 0x54, 0x18, - 0x00, 0x08, 0x7E, 0x09, 0x02, - 0x18, 0xA4, 0xA4, 0x9C, 0x78, - 0x7F, 0x08, 0x04, 0x04, 0x78, - 0x00, 0x44, 0x7D, 0x40, 0x00, - 0x20, 0x40, 0x40, 0x3D, 0x00, - 0x7F, 0x10, 0x28, 0x44, 0x00, - 0x00, 0x41, 0x7F, 0x40, 0x00, - 0x7C, 0x04, 0x78, 0x04, 0x78, - 0x7C, 0x08, 0x04, 0x04, 0x78, - 0x38, 0x44, 0x44, 0x44, 0x38, - 0xFC, 0x18, 0x24, 0x24, 0x18, - 0x18, 0x24, 0x24, 0x18, 0xFC, - 0x7C, 0x08, 0x04, 0x04, 0x08, - 0x48, 0x54, 0x54, 0x54, 0x24, - 0x04, 0x04, 0x3F, 0x44, 0x24, - 0x3C, 0x40, 0x40, 0x20, 0x7C, - 0x1C, 0x20, 0x40, 0x20, 0x1C, - 0x3C, 0x40, 0x30, 0x40, 0x3C, - 0x44, 0x28, 0x10, 0x28, 0x44, - 0x4C, 0x90, 0x90, 0x90, 0x7C, - 0x44, 0x64, 0x54, 0x4C, 0x44, - 0x00, 0x08, 0x36, 0x41, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, - 0x3C, 0x26, 0x23, 0x26, 0x3C, - 0x1E, 0xA1, 0xA1, 0x61, 0x12, - 0x3A, 0x40, 0x40, 0x20, 0x7A, - 0x38, 0x54, 0x54, 0x55, 0x59, - 0x21, 0x55, 0x55, 0x79, 0x41, - 0x21, 0x54, 0x54, 0x78, 0x41, - 0x21, 0x55, 0x54, 0x78, 0x40, - 0x20, 0x54, 0x55, 0x79, 0x40, - 0x0C, 0x1E, 0x52, 0x72, 0x12, - 0x39, 0x55, 0x55, 0x55, 0x59, - 0x39, 0x54, 0x54, 0x54, 0x59, - 0x39, 0x55, 0x54, 0x54, 0x58, - 0x00, 0x00, 0x45, 0x7C, 0x41, - 0x00, 0x02, 0x45, 0x7D, 0x42, - 0x00, 0x01, 0x45, 0x7C, 0x40, - 0xF0, 0x29, 0x24, 0x29, 0xF0, - 0xF0, 0x28, 0x25, 0x28, 0xF0, - 0x7C, 0x54, 0x55, 0x45, 0x00, - 0x20, 0x54, 0x54, 0x7C, 0x54, - 0x7C, 0x0A, 0x09, 0x7F, 0x49, - 0x32, 0x49, 0x49, 0x49, 0x32, - 0x32, 0x48, 0x48, 0x48, 0x32, - 0x32, 0x4A, 0x48, 0x48, 0x30, - 0x3A, 0x41, 0x41, 0x21, 0x7A, - 0x3A, 0x42, 0x40, 0x20, 0x78, - 0x00, 0x9D, 0xA0, 0xA0, 0x7D, - 0x39, 0x44, 0x44, 0x44, 0x39, - 0x3D, 0x40, 0x40, 0x40, 0x3D, - 0x3C, 0x24, 0xFF, 0x24, 0x24, - 0x48, 0x7E, 0x49, 0x43, 0x66, - 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, - 0xFF, 0x09, 0x29, 0xF6, 0x20, - 0xC0, 0x88, 0x7E, 0x09, 0x03, - 0x20, 0x54, 0x54, 0x79, 0x41, - 0x00, 0x00, 0x44, 0x7D, 0x41, - 0x30, 0x48, 0x48, 0x4A, 0x32, - 0x38, 0x40, 0x40, 0x22, 0x7A, - 0x00, 0x7A, 0x0A, 0x0A, 0x72, - 0x7D, 0x0D, 0x19, 0x31, 0x7D, - 0x26, 0x29, 0x29, 0x2F, 0x28, - 0x26, 0x29, 0x29, 0x29, 0x26, - 0x30, 0x48, 0x4D, 0x40, 0x20, - 0x38, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x38, - 0x2F, 0x10, 0xC8, 0xAC, 0xBA, - 0x2F, 0x10, 0x28, 0x34, 0xFA, - 0x00, 0x00, 0x7B, 0x00, 0x00, - 0x08, 0x14, 0x2A, 0x14, 0x22, - 0x22, 0x14, 0x2A, 0x14, 0x08, - 0xAA, 0x00, 0x55, 0x00, 0xAA, - 0xAA, 0x55, 0xAA, 0x55, 0xAA, - 0x00, 0x00, 0x00, 0xFF, 0x00, - 0x10, 0x10, 0x10, 0xFF, 0x00, - 0x14, 0x14, 0x14, 0xFF, 0x00, - 0x10, 0x10, 0xFF, 0x00, 0xFF, - 0x10, 0x10, 0xF0, 0x10, 0xF0, - 0x14, 0x14, 0x14, 0xFC, 0x00, - 0x14, 0x14, 0xF7, 0x00, 0xFF, - 0x00, 0x00, 0xFF, 0x00, 0xFF, - 0x14, 0x14, 0xF4, 0x04, 0xFC, - 0x14, 0x14, 0x17, 0x10, 0x1F, - 0x10, 0x10, 0x1F, 0x10, 0x1F, - 0x14, 0x14, 0x14, 0x1F, 0x00, - 0x10, 0x10, 0x10, 0xF0, 0x00, - 0x00, 0x00, 0x00, 0x1F, 0x10, - 0x10, 0x10, 0x10, 0x1F, 0x10, - 0x10, 0x10, 0x10, 0xF0, 0x10, - 0x00, 0x00, 0x00, 0xFF, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0xFF, 0x10, - 0x00, 0x00, 0x00, 0xFF, 0x14, - 0x00, 0x00, 0xFF, 0x00, 0xFF, - 0x00, 0x00, 0x1F, 0x10, 0x17, - 0x00, 0x00, 0xFC, 0x04, 0xF4, - 0x14, 0x14, 0x17, 0x10, 0x17, - 0x14, 0x14, 0xF4, 0x04, 0xF4, - 0x00, 0x00, 0xFF, 0x00, 0xF7, - 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0xF7, 0x00, 0xF7, - 0x14, 0x14, 0x14, 0x17, 0x14, - 0x10, 0x10, 0x1F, 0x10, 0x1F, - 0x14, 0x14, 0x14, 0xF4, 0x14, - 0x10, 0x10, 0xF0, 0x10, 0xF0, - 0x00, 0x00, 0x1F, 0x10, 0x1F, - 0x00, 0x00, 0x00, 0x1F, 0x14, - 0x00, 0x00, 0x00, 0xFC, 0x14, - 0x00, 0x00, 0xF0, 0x10, 0xF0, - 0x10, 0x10, 0xFF, 0x10, 0xFF, - 0x14, 0x14, 0x14, 0xFF, 0x14, - 0x10, 0x10, 0x10, 0x1F, 0x00, - 0x00, 0x00, 0x00, 0xF0, 0x10, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xFF, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0xFF, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x38, 0x44, 0x44, 0x38, 0x44, - 0x7C, 0x2A, 0x2A, 0x3E, 0x14, - 0x7E, 0x02, 0x02, 0x06, 0x06, - 0x02, 0x7E, 0x02, 0x7E, 0x02, - 0x63, 0x55, 0x49, 0x41, 0x63, - 0x38, 0x44, 0x44, 0x3C, 0x04, - 0x40, 0x7E, 0x20, 0x1E, 0x20, - 0x06, 0x02, 0x7E, 0x02, 0x02, - 0x99, 0xA5, 0xE7, 0xA5, 0x99, - 0x1C, 0x2A, 0x49, 0x2A, 0x1C, - 0x4C, 0x72, 0x01, 0x72, 0x4C, - 0x30, 0x4A, 0x4D, 0x4D, 0x30, - 0x30, 0x48, 0x78, 0x48, 0x30, - 0xBC, 0x62, 0x5A, 0x46, 0x3D, - 0x3E, 0x49, 0x49, 0x49, 0x00, - 0x7E, 0x01, 0x01, 0x01, 0x7E, - 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, - 0x44, 0x44, 0x5F, 0x44, 0x44, - 0x40, 0x51, 0x4A, 0x44, 0x40, - 0x40, 0x44, 0x4A, 0x51, 0x40, - 0x00, 0x00, 0xFF, 0x01, 0x03, - 0xE0, 0x80, 0xFF, 0x00, 0x00, - 0x08, 0x08, 0x6B, 0x6B, 0x08, - 0x36, 0x12, 0x36, 0x24, 0x36, - 0x06, 0x0F, 0x09, 0x0F, 0x06, - 0x00, 0x00, 0x18, 0x18, 0x00, - 0x00, 0x00, 0x10, 0x10, 0x00, - 0x30, 0x40, 0xFF, 0x01, 0x01, - 0x00, 0x1F, 0x01, 0x01, 0x1E, - 0x00, 0x19, 0x1D, 0x17, 0x12, - 0x00, 0x3C, 0x3C, 0x3C, 0x3C, - 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#endif diff --git a/libraries/TFT/src/utility/keywords.txt b/libraries/TFT/src/utility/keywords.txt deleted file mode 100644 index 9614847da16..00000000000 --- a/libraries/TFT/src/utility/keywords.txt +++ /dev/null @@ -1,70 +0,0 @@ -####################################### -# Syntax Coloring Map For Adafruit_GFX -# and Adafruit_ST7735 -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -Adafruit_GFX KEYWORD1 -Adafruit_ST7735 KEYWORD1 -PImage KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -drawPixel KEYWORD2 -invertDisplay KEYWORD2 -drawLine KEYWORD2 -drawFastVLine KEYWORD2 -drawFastHLine KEYWORD2 -drawRect KEYWORD2 -fillRect KEYWORD2 -fillScreen KEYWORD2 -drawCircle KEYWORD2 -drawCircleHelper KEYWORD2 -fillCircle KEYWORD2 -fillCircleHelper KEYWORD2 -drawTriangle KEYWORD2 -fillTriangle KEYWORD2 -drawRoundRect KEYWORD2 -fillRoundRect KEYWORD2 -drawBitmap KEYWORD2 -drawChar KEYWORD2 -setCursor KEYWORD2 -setTextColor KEYWORD2 -setTextSize KEYWORD2 -setTextWrap KEYWORD2 -height KEYWORD2 -width KEYWORD2 -setRotation KEYWORD2 -getRotation KEYWORD2 - - - -newColor KEYWORD2 -background KEYWORD2 -fill KEYWORD2 -noFill KEYWORD2 -stroke KEYWORD2 -noStroke KEYWORD2 -text KEYWORD2 -textWrap KEYWORD2 -textSize KEYWORD2 -circle KEYWORD2 -point KEYWORD2 -quad KEYWORD2 -rect KEYWORD2 -triangle KEYWORD2 -loadImage KEYWORD2 -image KEYWORD2 - -draw KEYWORD2 -isValid KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### - diff --git a/libraries/WiFi/README.adoc b/libraries/WiFi/README.adoc deleted file mode 100644 index 82a56c2bd86..00000000000 --- a/libraries/WiFi/README.adoc +++ /dev/null @@ -1,27 +0,0 @@ -= WiFi Library for Arduino = - -With the Arduino WiFi Shield, this library allows an Arduino board to connect to the internet. - -For more information about this library please visit us at -http://www.arduino.cc/en/Reference/WiFi - -== License == - -Copyright (c) 2011-2014 Arduino LLC. All right reserved. -Copyright (C) 2006-2008, Atmel Corporation All rights reserved. -Copyright (c) 2001-2004 Swedish Institute of Computer Science. -Copyright (c) 2009-2010, H&D Wireless AB All rights reserved. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library 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 -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA diff --git a/libraries/WiFi/examples/ConnectNoEncryption/ConnectNoEncryption.ino b/libraries/WiFi/examples/ConnectNoEncryption/ConnectNoEncryption.ino deleted file mode 100644 index e12dfe3bbfa..00000000000 --- a/libraries/WiFi/examples/ConnectNoEncryption/ConnectNoEncryption.ino +++ /dev/null @@ -1,127 +0,0 @@ -/* - - This example connects to an unencrypted Wifi network. - Then it prints the MAC address of the Wifi shield, - the IP address obtained, and other network details. - - Circuit: - * WiFi shield attached - - created 13 July 2010 - by dlf (Metodo2 srl) - modified 31 May 2012 - by Tom Igoe - */ -#include -#include - -char ssid[] = "yourNetwork"; // the name of your network -int status = WL_IDLE_STATUS; // the Wifi radio's status - -void setup() { - //Initialize serial and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // check for the presence of the shield: - if (WiFi.status() == WL_NO_SHIELD) { - Serial.println("WiFi shield not present"); - // don't continue: - while (true); - } - - String fv = WiFi.firmwareVersion(); - if (fv != "1.1.0") { - Serial.println("Please upgrade the firmware"); - } - - // attempt to connect to Wifi network: - while (status != WL_CONNECTED) { - Serial.print("Attempting to connect to open SSID: "); - Serial.println(ssid); - status = WiFi.begin(ssid); - - // wait 10 seconds for connection: - delay(10000); - } - - // you're connected now, so print out the data: - Serial.print("You're connected to the network"); - printCurrentNet(); - printWifiData(); -} - -void loop() { - // check the network connection once every 10 seconds: - delay(10000); - printCurrentNet(); -} - -void printWifiData() { - // print your WiFi shield's IP address: - IPAddress ip = WiFi.localIP(); - Serial.print("IP Address: "); - Serial.println(ip); - Serial.println(ip); - - // print your MAC address: - byte mac[6]; - WiFi.macAddress(mac); - Serial.print("MAC address: "); - Serial.print(mac[5], HEX); - Serial.print(":"); - Serial.print(mac[4], HEX); - Serial.print(":"); - Serial.print(mac[3], HEX); - Serial.print(":"); - Serial.print(mac[2], HEX); - Serial.print(":"); - Serial.print(mac[1], HEX); - Serial.print(":"); - Serial.println(mac[0], HEX); - - // print your subnet mask: - IPAddress subnet = WiFi.subnetMask(); - Serial.print("NetMask: "); - Serial.println(subnet); - - // print your gateway address: - IPAddress gateway = WiFi.gatewayIP(); - Serial.print("Gateway: "); - Serial.println(gateway); -} - -void printCurrentNet() { - // print the SSID of the network you're attached to: - Serial.print("SSID: "); - Serial.println(WiFi.SSID()); - - // print the MAC address of the router you're attached to: - byte bssid[6]; - WiFi.BSSID(bssid); - Serial.print("BSSID: "); - Serial.print(bssid[5], HEX); - Serial.print(":"); - Serial.print(bssid[4], HEX); - Serial.print(":"); - Serial.print(bssid[3], HEX); - Serial.print(":"); - Serial.print(bssid[2], HEX); - Serial.print(":"); - Serial.print(bssid[1], HEX); - Serial.print(":"); - Serial.println(bssid[0], HEX); - - // print the received signal strength: - long rssi = WiFi.RSSI(); - Serial.print("signal strength (RSSI):"); - Serial.println(rssi); - - // print the encryption type: - byte encryption = WiFi.encryptionType(); - Serial.print("Encryption Type:"); - Serial.println(encryption, HEX); -} - diff --git a/libraries/WiFi/examples/ConnectWithWEP/ConnectWithWEP.ino b/libraries/WiFi/examples/ConnectWithWEP/ConnectWithWEP.ino deleted file mode 100644 index 93070f57f8d..00000000000 --- a/libraries/WiFi/examples/ConnectWithWEP/ConnectWithWEP.ino +++ /dev/null @@ -1,132 +0,0 @@ -/* - - This example connects to a WEP-encrypted Wifi network. - Then it prints the MAC address of the Wifi shield, - the IP address obtained, and other network details. - - If you use 40-bit WEP, you need a key that is 10 characters long, - and the characters must be hexadecimal (0-9 or A-F). - e.g. for 40-bit, ABBADEAF01 will work, but ABBADEAF won't work - (too short) and ABBAISDEAF won't work (I and S are not - hexadecimal characters). - - For 128-bit, you need a string that is 26 characters long. - D0D0DEADF00DABBADEAFBEADED will work because it's 26 characters, - all in the 0-9, A-F range. - - Circuit: - * WiFi shield attached - - created 13 July 2010 - by dlf (Metodo2 srl) - modified 31 May 2012 - by Tom Igoe - */ -#include -#include - -char ssid[] = "yourNetwork"; // your network SSID (name) -char key[] = "D0D0DEADF00DABBADEAFBEADED"; // your network key -int keyIndex = 0; // your network key Index number -int status = WL_IDLE_STATUS; // the Wifi radio's status - -void setup() { - //Initialize serial and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // check for the presence of the shield: - if (WiFi.status() == WL_NO_SHIELD) { - Serial.println("WiFi shield not present"); - // don't continue: - while (true); - } - - String fv = WiFi.firmwareVersion(); - if (fv != "1.1.0") { - Serial.println("Please upgrade the firmware"); - } - - // attempt to connect to Wifi network: - while (status != WL_CONNECTED) { - Serial.print("Attempting to connect to WEP network, SSID: "); - Serial.println(ssid); - status = WiFi.begin(ssid, keyIndex, key); - - // wait 10 seconds for connection: - delay(10000); - } - - // once you are connected : - Serial.print("You're connected to the network"); - printCurrentNet(); - printWifiData(); -} - -void loop() { - // check the network connection once every 10 seconds: - delay(10000); - printCurrentNet(); -} - -void printWifiData() { - // print your WiFi shield's IP address: - IPAddress ip = WiFi.localIP(); - Serial.print("IP Address: "); - Serial.println(ip); - Serial.println(ip); - - // print your MAC address: - byte mac[6]; - WiFi.macAddress(mac); - Serial.print("MAC address: "); - Serial.print(mac[5], HEX); - Serial.print(":"); - Serial.print(mac[4], HEX); - Serial.print(":"); - Serial.print(mac[3], HEX); - Serial.print(":"); - Serial.print(mac[2], HEX); - Serial.print(":"); - Serial.print(mac[1], HEX); - Serial.print(":"); - Serial.println(mac[0], HEX); -} - -void printCurrentNet() { - // print the SSID of the network you're attached to: - Serial.print("SSID: "); - Serial.println(WiFi.SSID()); - - // print the MAC address of the router you're attached to: - byte bssid[6]; - WiFi.BSSID(bssid); - Serial.print("BSSID: "); - Serial.print(bssid[5], HEX); - Serial.print(":"); - Serial.print(bssid[4], HEX); - Serial.print(":"); - Serial.print(bssid[3], HEX); - Serial.print(":"); - Serial.print(bssid[2], HEX); - Serial.print(":"); - Serial.print(bssid[1], HEX); - Serial.print(":"); - Serial.println(bssid[0], HEX); - - // print the received signal strength: - long rssi = WiFi.RSSI(); - Serial.print("signal strength (RSSI):"); - Serial.println(rssi); - - // print the encryption type: - byte encryption = WiFi.encryptionType(); - Serial.print("Encryption Type:"); - Serial.println(encryption, HEX); - Serial.println(); -} - - - diff --git a/libraries/WiFi/examples/ConnectWithWPA/ConnectWithWPA.ino b/libraries/WiFi/examples/ConnectWithWPA/ConnectWithWPA.ino deleted file mode 100644 index 56ae372d194..00000000000 --- a/libraries/WiFi/examples/ConnectWithWPA/ConnectWithWPA.ino +++ /dev/null @@ -1,122 +0,0 @@ -/* - - This example connects to an unencrypted Wifi network. - Then it prints the MAC address of the Wifi shield, - the IP address obtained, and other network details. - - Circuit: - * WiFi shield attached - - created 13 July 2010 - by dlf (Metodo2 srl) - modified 31 May 2012 - by Tom Igoe - */ -#include -#include - -char ssid[] = "yourNetwork"; // your network SSID (name) -char pass[] = "secretPassword"; // your network password -int status = WL_IDLE_STATUS; // the Wifi radio's status - -void setup() { - //Initialize serial and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // check for the presence of the shield: - if (WiFi.status() == WL_NO_SHIELD) { - Serial.println("WiFi shield not present"); - // don't continue: - while (true); - } - - String fv = WiFi.firmwareVersion(); - if (fv != "1.1.0") { - Serial.println("Please upgrade the firmware"); - } - - // attempt to connect to Wifi network: - while (status != WL_CONNECTED) { - Serial.print("Attempting to connect to WPA SSID: "); - Serial.println(ssid); - // Connect to WPA/WPA2 network: - status = WiFi.begin(ssid, pass); - - // wait 10 seconds for connection: - delay(10000); - } - - // you're connected now, so print out the data: - Serial.print("You're connected to the network"); - printCurrentNet(); - printWifiData(); - -} - -void loop() { - // check the network connection once every 10 seconds: - delay(10000); - printCurrentNet(); -} - -void printWifiData() { - // print your WiFi shield's IP address: - IPAddress ip = WiFi.localIP(); - Serial.print("IP Address: "); - Serial.println(ip); - Serial.println(ip); - - // print your MAC address: - byte mac[6]; - WiFi.macAddress(mac); - Serial.print("MAC address: "); - Serial.print(mac[5], HEX); - Serial.print(":"); - Serial.print(mac[4], HEX); - Serial.print(":"); - Serial.print(mac[3], HEX); - Serial.print(":"); - Serial.print(mac[2], HEX); - Serial.print(":"); - Serial.print(mac[1], HEX); - Serial.print(":"); - Serial.println(mac[0], HEX); - -} - -void printCurrentNet() { - // print the SSID of the network you're attached to: - Serial.print("SSID: "); - Serial.println(WiFi.SSID()); - - // print the MAC address of the router you're attached to: - byte bssid[6]; - WiFi.BSSID(bssid); - Serial.print("BSSID: "); - Serial.print(bssid[5], HEX); - Serial.print(":"); - Serial.print(bssid[4], HEX); - Serial.print(":"); - Serial.print(bssid[3], HEX); - Serial.print(":"); - Serial.print(bssid[2], HEX); - Serial.print(":"); - Serial.print(bssid[1], HEX); - Serial.print(":"); - Serial.println(bssid[0], HEX); - - // print the received signal strength: - long rssi = WiFi.RSSI(); - Serial.print("signal strength (RSSI):"); - Serial.println(rssi); - - // print the encryption type: - byte encryption = WiFi.encryptionType(); - Serial.print("Encryption Type:"); - Serial.println(encryption, HEX); - Serial.println(); -} - diff --git a/libraries/WiFi/examples/ScanNetworks/ScanNetworks.ino b/libraries/WiFi/examples/ScanNetworks/ScanNetworks.ino deleted file mode 100644 index 7203207abe3..00000000000 --- a/libraries/WiFi/examples/ScanNetworks/ScanNetworks.ino +++ /dev/null @@ -1,119 +0,0 @@ -/* - - This example prints the Wifi shield's MAC address, and - scans for available Wifi networks using the Wifi shield. - Every ten seconds, it scans again. It doesn't actually - connect to any network, so no encryption scheme is specified. - - Circuit: - * WiFi shield attached - - created 13 July 2010 - by dlf (Metodo2 srl) - modified 21 Junn 2012 - by Tom Igoe and Jaymes Dec - */ - - -#include -#include - -void setup() { - //Initialize serial and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // check for the presence of the shield: - if (WiFi.status() == WL_NO_SHIELD) { - Serial.println("WiFi shield not present"); - // don't continue: - while (true); - } - - String fv = WiFi.firmwareVersion(); - if (fv != "1.1.0") { - Serial.println("Please upgrade the firmware"); - } - - // Print WiFi MAC address: - printMacAddress(); -} - -void loop() { - // scan for existing networks: - Serial.println("Scanning available networks..."); - listNetworks(); - delay(10000); -} - -void printMacAddress() { - // the MAC address of your Wifi shield - byte mac[6]; - - // print your MAC address: - WiFi.macAddress(mac); - Serial.print("MAC: "); - Serial.print(mac[5], HEX); - Serial.print(":"); - Serial.print(mac[4], HEX); - Serial.print(":"); - Serial.print(mac[3], HEX); - Serial.print(":"); - Serial.print(mac[2], HEX); - Serial.print(":"); - Serial.print(mac[1], HEX); - Serial.print(":"); - Serial.println(mac[0], HEX); -} - -void listNetworks() { - // scan for nearby networks: - Serial.println("** Scan Networks **"); - int numSsid = WiFi.scanNetworks(); - if (numSsid == -1) { - Serial.println("Couldn't get a wifi connection"); - while (true); - } - - // print the list of networks seen: - Serial.print("number of available networks:"); - Serial.println(numSsid); - - // print the network number and name for each network found: - for (int thisNet = 0; thisNet < numSsid; thisNet++) { - Serial.print(thisNet); - Serial.print(") "); - Serial.print(WiFi.SSID(thisNet)); - Serial.print("\tSignal: "); - Serial.print(WiFi.RSSI(thisNet)); - Serial.print(" dBm"); - Serial.print("\tEncryption: "); - printEncryptionType(WiFi.encryptionType(thisNet)); - } -} - -void printEncryptionType(int thisType) { - // read the encryption type and print out the name: - switch (thisType) { - case ENC_TYPE_WEP: - Serial.println("WEP"); - break; - case ENC_TYPE_TKIP: - Serial.println("WPA"); - break; - case ENC_TYPE_CCMP: - Serial.println("WPA2"); - break; - case ENC_TYPE_NONE: - Serial.println("None"); - break; - case ENC_TYPE_AUTO: - Serial.println("Auto"); - break; - } -} - - - diff --git a/libraries/WiFi/examples/SimpleWebServerWiFi/SimpleWebServerWiFi.ino b/libraries/WiFi/examples/SimpleWebServerWiFi/SimpleWebServerWiFi.ino deleted file mode 100644 index c9cc5a69fa9..00000000000 --- a/libraries/WiFi/examples/SimpleWebServerWiFi/SimpleWebServerWiFi.ino +++ /dev/null @@ -1,132 +0,0 @@ -/* - WiFi Web Server LED Blink - - A simple web server that lets you blink an LED via the web. - This sketch will print the IP address of your WiFi Shield (once connected) - to the Serial monitor. From there, you can open that address in a web browser - to turn on and off the LED on pin 9. - - If the IP address of your shield is yourAddress: - http://yourAddress/H turns the LED on - http://yourAddress/L turns it off - - This example is written for a network using WPA encryption. For - WEP or WPA, change the Wifi.begin() call accordingly. - - Circuit: - * WiFi shield attached - * LED attached to pin 9 - - created 25 Nov 2012 - by Tom Igoe - */ -#include -#include - -char ssid[] = "yourNetwork"; // your network SSID (name) -char pass[] = "secretPassword"; // your network password -int keyIndex = 0; // your network key Index number (needed only for WEP) - -int status = WL_IDLE_STATUS; -WiFiServer server(80); - -void setup() { - Serial.begin(9600); // initialize serial communication - pinMode(9, OUTPUT); // set the LED pin mode - - // check for the presence of the shield: - if (WiFi.status() == WL_NO_SHIELD) { - Serial.println("WiFi shield not present"); - while (true); // don't continue - } - - String fv = WiFi.firmwareVersion(); - if (fv != "1.1.0") { - Serial.println("Please upgrade the firmware"); - } - - // attempt to connect to Wifi network: - while (status != WL_CONNECTED) { - Serial.print("Attempting to connect to Network named: "); - Serial.println(ssid); // print the network name (SSID); - - // Connect to WPA/WPA2 network. Change this line if using open or WEP network: - status = WiFi.begin(ssid, pass); - // wait 10 seconds for connection: - delay(10000); - } - server.begin(); // start the web server on port 80 - printWifiStatus(); // you're connected now, so print out the status -} - - -void loop() { - WiFiClient client = server.available(); // listen for incoming clients - - if (client) { // if you get a client, - Serial.println("new client"); // print a message out the serial port - String currentLine = ""; // make a String to hold incoming data from the client - while (client.connected()) { // loop while the client's connected - if (client.available()) { // if there's bytes to read from the client, - char c = client.read(); // read a byte, then - Serial.write(c); // print it out the serial monitor - if (c == '\n') { // if the byte is a newline character - - // if the current line is blank, you got two newline characters in a row. - // that's the end of the client HTTP request, so send a response: - if (currentLine.length() == 0) { - // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK) - // and a content-type so the client knows what's coming, then a blank line: - client.println("HTTP/1.1 200 OK"); - client.println("Content-type:text/html"); - client.println(); - - // the content of the HTTP response follows the header: - client.print("Click here turn the LED on pin 9 on
    "); - client.print("Click here turn the LED on pin 9 off
    "); - - // The HTTP response ends with another blank line: - client.println(); - // break out of the while loop: - break; - } else { // if you got a newline, then clear currentLine: - currentLine = ""; - } - } else if (c != '\r') { // if you got anything else but a carriage return character, - currentLine += c; // add it to the end of the currentLine - } - - // Check to see if the client request was "GET /H" or "GET /L": - if (currentLine.endsWith("GET /H")) { - digitalWrite(9, HIGH); // GET /H turns the LED on - } - if (currentLine.endsWith("GET /L")) { - digitalWrite(9, LOW); // GET /L turns the LED off - } - } - } - // close the connection: - client.stop(); - Serial.println("client disonnected"); - } -} - -void printWifiStatus() { - // print the SSID of the network you're attached to: - Serial.print("SSID: "); - Serial.println(WiFi.SSID()); - - // print your WiFi shield's IP address: - IPAddress ip = WiFi.localIP(); - Serial.print("IP Address: "); - Serial.println(ip); - - // print the received signal strength: - long rssi = WiFi.RSSI(); - Serial.print("signal strength (RSSI):"); - Serial.print(rssi); - Serial.println(" dBm"); - // print where to go in a browser: - Serial.print("To see this page in action, open a browser to http://"); - Serial.println(ip); -} diff --git a/libraries/WiFi/examples/WiFiChatServer/WiFiChatServer.ino b/libraries/WiFi/examples/WiFiChatServer/WiFiChatServer.ino deleted file mode 100644 index 11b32686eaa..00000000000 --- a/libraries/WiFi/examples/WiFiChatServer/WiFiChatServer.ino +++ /dev/null @@ -1,117 +0,0 @@ -/* - Chat Server - - A simple server that distributes any incoming messages to all - connected clients. To use telnet to your device's IP address and type. - You can see the client's input in the serial monitor as well. - - This example is written for a network using WPA encryption. For - WEP or WPA, change the Wifi.begin() call accordingly. - - - Circuit: - * WiFi shield attached - - created 18 Dec 2009 - by David A. Mellis - modified 31 May 2012 - by Tom Igoe - - */ - -#include -#include - -char ssid[] = "yourNetwork"; // your network SSID (name) -char pass[] = "secretPassword"; // your network password (use for WPA, or use as key for WEP) - -int keyIndex = 0; // your network key Index number (needed only for WEP) - -int status = WL_IDLE_STATUS; - -WiFiServer server(23); - -boolean alreadyConnected = false; // whether or not the client was connected previously - -void setup() { - //Initialize serial and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // check for the presence of the shield: - if (WiFi.status() == WL_NO_SHIELD) { - Serial.println("WiFi shield not present"); - // don't continue: - while (true); - } - - String fv = WiFi.firmwareVersion(); - if (fv != "1.1.0") { - Serial.println("Please upgrade the firmware"); - } - - // attempt to connect to Wifi network: - while (status != WL_CONNECTED) { - Serial.print("Attempting to connect to SSID: "); - Serial.println(ssid); - // Connect to WPA/WPA2 network. Change this line if using open or WEP network: - status = WiFi.begin(ssid, pass); - - // wait 10 seconds for connection: - delay(10000); - } - - // start the server: - server.begin(); - // you're connected now, so print out the status: - printWifiStatus(); -} - - -void loop() { - // wait for a new client: - WiFiClient client = server.available(); - - - // when the client sends the first byte, say hello: - if (client) { - if (!alreadyConnected) { - // clead out the input buffer: - client.flush(); - Serial.println("We have a new client"); - client.println("Hello, client!"); - alreadyConnected = true; - } - - if (client.available() > 0) { - // read the bytes incoming from the client: - char thisChar = client.read(); - // echo the bytes back to the client: - server.write(thisChar); - // echo the bytes to the server as well: - Serial.write(thisChar); - } - } -} - - -void printWifiStatus() { - // print the SSID of the network you're attached to: - Serial.print("SSID: "); - Serial.println(WiFi.SSID()); - - // print your WiFi shield's IP address: - IPAddress ip = WiFi.localIP(); - Serial.print("IP Address: "); - Serial.println(ip); - - // print the received signal strength: - long rssi = WiFi.RSSI(); - Serial.print("signal strength (RSSI):"); - Serial.print(rssi); - Serial.println(" dBm"); -} - - diff --git a/libraries/WiFi/examples/WiFiUdpNtpClient/WiFiUdpNtpClient.ino b/libraries/WiFi/examples/WiFiUdpNtpClient/WiFiUdpNtpClient.ino deleted file mode 100644 index 118279de7ba..00000000000 --- a/libraries/WiFi/examples/WiFiUdpNtpClient/WiFiUdpNtpClient.ino +++ /dev/null @@ -1,182 +0,0 @@ -/* - - Udp NTP Client - - Get the time from a Network Time Protocol (NTP) time server - Demonstrates use of UDP sendPacket and ReceivePacket - For more on NTP time servers and the messages needed to communicate with them, - see http://en.wikipedia.org/wiki/Network_Time_Protocol - - created 4 Sep 2010 - by Michael Margolis - modified 9 Apr 2012 - by Tom Igoe - - This code is in the public domain. - - */ - -#include -#include -#include - -int status = WL_IDLE_STATUS; -char ssid[] = "mynetwork"; // your network SSID (name) -char pass[] = "mypassword"; // your network password -int keyIndex = 0; // your network key Index number (needed only for WEP) - -unsigned int localPort = 2390; // local port to listen for UDP packets - -IPAddress timeServer(129, 6, 15, 28); // time.nist.gov NTP server - -const int NTP_PACKET_SIZE = 48; // NTP time stamp is in the first 48 bytes of the message - -byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets - -// A UDP instance to let us send and receive packets over UDP -WiFiUDP Udp; - -void setup() { - // Open serial communications and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // check for the presence of the shield: - if (WiFi.status() == WL_NO_SHIELD) { - Serial.println("WiFi shield not present"); - // don't continue: - while (true); - } - - String fv = WiFi.firmwareVersion(); - if (fv != "1.1.0") { - Serial.println("Please upgrade the firmware"); - } - - // attempt to connect to Wifi network: - while (status != WL_CONNECTED) { - Serial.print("Attempting to connect to SSID: "); - Serial.println(ssid); - // Connect to WPA/WPA2 network. Change this line if using open or WEP network: - status = WiFi.begin(ssid, pass); - - // wait 10 seconds for connection: - delay(10000); - } - - Serial.println("Connected to wifi"); - printWifiStatus(); - - Serial.println("\nStarting connection to server..."); - Udp.begin(localPort); -} - -void loop() { - sendNTPpacket(timeServer); // send an NTP packet to a time server - // wait to see if a reply is available - delay(1000); - if (Udp.parsePacket()) { - Serial.println("packet received"); - // We've received a packet, read the data from it - Udp.read(packetBuffer, NTP_PACKET_SIZE); // read the packet into the buffer - - //the timestamp starts at byte 40 of the received packet and is four bytes, - // or two words, long. First, esxtract the two words: - - unsigned long highWord = word(packetBuffer[40], packetBuffer[41]); - unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]); - // combine the four bytes (two words) into a long integer - // this is NTP time (seconds since Jan 1 1900): - unsigned long secsSince1900 = highWord << 16 | lowWord; - Serial.print("Seconds since Jan 1 1900 = "); - Serial.println(secsSince1900); - - // now convert NTP time into everyday time: - Serial.print("Unix time = "); - // Unix time starts on Jan 1 1970. In seconds, that's 2208988800: - const unsigned long seventyYears = 2208988800UL; - // subtract seventy years: - unsigned long epoch = secsSince1900 - seventyYears; - // print Unix time: - Serial.println(epoch); - - - // print the hour, minute and second: - Serial.print("The UTC time is "); // UTC is the time at Greenwich Meridian (GMT) - Serial.print((epoch % 86400L) / 3600); // print the hour (86400 equals secs per day) - Serial.print(':'); - if (((epoch % 3600) / 60) < 10) { - // In the first 10 minutes of each hour, we'll want a leading '0' - Serial.print('0'); - } - Serial.print((epoch % 3600) / 60); // print the minute (3600 equals secs per minute) - Serial.print(':'); - if ((epoch % 60) < 10) { - // In the first 10 seconds of each minute, we'll want a leading '0' - Serial.print('0'); - } - Serial.println(epoch % 60); // print the second - } - // wait ten seconds before asking for the time again - delay(10000); -} - -// send an NTP request to the time server at the given address -unsigned long sendNTPpacket(IPAddress& address) { - //Serial.println("1"); - // set all bytes in the buffer to 0 - memset(packetBuffer, 0, NTP_PACKET_SIZE); - // Initialize values needed to form NTP request - // (see URL above for details on the packets) - //Serial.println("2"); - packetBuffer[0] = 0b11100011; // LI, Version, Mode - packetBuffer[1] = 0; // Stratum, or type of clock - packetBuffer[2] = 6; // Polling Interval - packetBuffer[3] = 0xEC; // Peer Clock Precision - // 8 bytes of zero for Root Delay & Root Dispersion - packetBuffer[12] = 49; - packetBuffer[13] = 0x4E; - packetBuffer[14] = 49; - packetBuffer[15] = 52; - - //Serial.println("3"); - - // all NTP fields have been given values, now - // you can send a packet requesting a timestamp: - Udp.beginPacket(address, 123); //NTP requests are to port 123 - //Serial.println("4"); - Udp.write(packetBuffer, NTP_PACKET_SIZE); - //Serial.println("5"); - Udp.endPacket(); - //Serial.println("6"); -} - - -void printWifiStatus() { - // print the SSID of the network you're attached to: - Serial.print("SSID: "); - Serial.println(WiFi.SSID()); - - // print your WiFi shield's IP address: - IPAddress ip = WiFi.localIP(); - Serial.print("IP Address: "); - Serial.println(ip); - - // print the received signal strength: - long rssi = WiFi.RSSI(); - Serial.print("signal strength (RSSI):"); - Serial.print(rssi); - Serial.println(" dBm"); -} - - - - - - - - - - diff --git a/libraries/WiFi/examples/WiFiUdpSendReceiveString/WiFiUdpSendReceiveString.ino b/libraries/WiFi/examples/WiFiUdpSendReceiveString/WiFiUdpSendReceiveString.ino deleted file mode 100644 index 1cd384bc094..00000000000 --- a/libraries/WiFi/examples/WiFiUdpSendReceiveString/WiFiUdpSendReceiveString.ino +++ /dev/null @@ -1,118 +0,0 @@ - -/* - WiFi UDP Send and Receive String - - This sketch wait an UDP packet on localPort using a WiFi shield. - When a packet is received an Acknowledge packet is sent to the client on port remotePort - - Circuit: - * WiFi shield attached - - created 30 December 2012 - by dlf (Metodo2 srl) - - */ - - -#include -#include -#include - -int status = WL_IDLE_STATUS; -char ssid[] = "yourNetwork"; // your network SSID (name) -char pass[] = "secretPassword"; // your network password (use for WPA, or use as key for WEP) -int keyIndex = 0; // your network key Index number (needed only for WEP) - -unsigned int localPort = 2390; // local port to listen on - -char packetBuffer[255]; //buffer to hold incoming packet -char ReplyBuffer[] = "acknowledged"; // a string to send back - -WiFiUDP Udp; - -void setup() { - //Initialize serial and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // check for the presence of the shield: - if (WiFi.status() == WL_NO_SHIELD) { - Serial.println("WiFi shield not present"); - // don't continue: - while (true); - } - - String fv = WiFi.firmwareVersion(); - if (fv != "1.1.0") { - Serial.println("Please upgrade the firmware"); - } - - // attempt to connect to Wifi network: - while (status != WL_CONNECTED) { - Serial.print("Attempting to connect to SSID: "); - Serial.println(ssid); - // Connect to WPA/WPA2 network. Change this line if using open or WEP network: - status = WiFi.begin(ssid); - - // wait 10 seconds for connection: - delay(10000); - } - Serial.println("Connected to wifi"); - printWifiStatus(); - - Serial.println("\nStarting connection to server..."); - // if you get a connection, report back via serial: - Udp.begin(localPort); -} - -void loop() { - - // if there's data available, read a packet - int packetSize = Udp.parsePacket(); - if (packetSize) { - Serial.print("Received packet of size "); - Serial.println(packetSize); - Serial.print("From "); - IPAddress remoteIp = Udp.remoteIP(); - Serial.print(remoteIp); - Serial.print(", port "); - Serial.println(Udp.remotePort()); - - // read the packet into packetBufffer - int len = Udp.read(packetBuffer, 255); - if (len > 0) { - packetBuffer[len] = 0; - } - Serial.println("Contents:"); - Serial.println(packetBuffer); - - // send a reply, to the IP address and port that sent us the packet we received - Udp.beginPacket(Udp.remoteIP(), Udp.remotePort()); - Udp.write(ReplyBuffer); - Udp.endPacket(); - } -} - - -void printWifiStatus() { - // print the SSID of the network you're attached to: - Serial.print("SSID: "); - Serial.println(WiFi.SSID()); - - // print your WiFi shield's IP address: - IPAddress ip = WiFi.localIP(); - Serial.print("IP Address: "); - Serial.println(ip); - - // print the received signal strength: - long rssi = WiFi.RSSI(); - Serial.print("signal strength (RSSI):"); - Serial.print(rssi); - Serial.println(" dBm"); -} - - - - diff --git a/libraries/WiFi/examples/WiFiWebClient/WiFiWebClient.ino b/libraries/WiFi/examples/WiFiWebClient/WiFiWebClient.ino deleted file mode 100644 index 98543e3c8e2..00000000000 --- a/libraries/WiFi/examples/WiFiWebClient/WiFiWebClient.ino +++ /dev/null @@ -1,123 +0,0 @@ - -/* - Web client - - This sketch connects to a website (http://www.google.com) - using a WiFi shield. - - This example is written for a network using WPA encryption. For - WEP or WPA, change the Wifi.begin() call accordingly. - - Circuit: - * WiFi shield attached - - created 13 July 2010 - by dlf (Metodo2 srl) - modified 31 May 2012 - by Tom Igoe - */ - - -#include -#include - -char ssid[] = "yourNetwork"; // your network SSID (name) -char pass[] = "secretPassword"; // your network password (use for WPA, or use as key for WEP) -int keyIndex = 0; // your network key Index number (needed only for WEP) - -int status = WL_IDLE_STATUS; -// if you don't want to use DNS (and reduce your sketch size) -// use the numeric IP instead of the name for the server: -//IPAddress server(74,125,232,128); // numeric IP for Google (no DNS) -char server[] = "www.google.com"; // name address for Google (using DNS) - -// Initialize the Ethernet client library -// with the IP address and port of the server -// that you want to connect to (port 80 is default for HTTP): -WiFiClient client; - -void setup() { - //Initialize serial and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // check for the presence of the shield: - if (WiFi.status() == WL_NO_SHIELD) { - Serial.println("WiFi shield not present"); - // don't continue: - while (true); - } - - String fv = WiFi.firmwareVersion(); - if (fv != "1.1.0") { - Serial.println("Please upgrade the firmware"); - } - - // attempt to connect to Wifi network: - while (status != WL_CONNECTED) { - Serial.print("Attempting to connect to SSID: "); - Serial.println(ssid); - // Connect to WPA/WPA2 network. Change this line if using open or WEP network: - status = WiFi.begin(ssid, pass); - - // wait 10 seconds for connection: - delay(10000); - } - Serial.println("Connected to wifi"); - printWifiStatus(); - - Serial.println("\nStarting connection to server..."); - // if you get a connection, report back via serial: - if (client.connect(server, 80)) { - Serial.println("connected to server"); - // Make a HTTP request: - client.println("GET /search?q=arduino HTTP/1.1"); - client.println("Host: www.google.com"); - client.println("Connection: close"); - client.println(); - } -} - -void loop() { - // if there are incoming bytes available - // from the server, read them and print them: - while (client.available()) { - char c = client.read(); - Serial.write(c); - } - - // if the server's disconnected, stop the client: - if (!client.connected()) { - Serial.println(); - Serial.println("disconnecting from server."); - client.stop(); - - // do nothing forevermore: - while (true); - } -} - - -void printWifiStatus() { - // print the SSID of the network you're attached to: - Serial.print("SSID: "); - Serial.println(WiFi.SSID()); - - // print your WiFi shield's IP address: - IPAddress ip = WiFi.localIP(); - Serial.print("IP Address: "); - Serial.println(ip); - - // print the received signal strength: - long rssi = WiFi.RSSI(); - Serial.print("signal strength (RSSI):"); - Serial.print(rssi); - Serial.println(" dBm"); -} - - - - - diff --git a/libraries/WiFi/examples/WiFiWebClientRepeating/WiFiWebClientRepeating.ino b/libraries/WiFi/examples/WiFiWebClientRepeating/WiFiWebClientRepeating.ino deleted file mode 100644 index 9953824ffd7..00000000000 --- a/libraries/WiFi/examples/WiFiWebClientRepeating/WiFiWebClientRepeating.ino +++ /dev/null @@ -1,131 +0,0 @@ -/* - Repeating Wifi Web Client - - This sketch connects to a a web server and makes a request - using an Arduino Wifi shield. - - Circuit: - * WiFi shield attached to pins SPI pins and pin 7 - - created 23 April 2012 - modified 31 May 2012 - by Tom Igoe - modified 13 Jan 2014 - by Federico Vanzati - - http://www.arduino.cc/en/Tutorial/WifiWebClientRepeating - This code is in the public domain. - */ - -#include -#include - -char ssid[] = "yourNetwork"; // your network SSID (name) -char pass[] = "secretPassword"; // your network password -int keyIndex = 0; // your network key Index number (needed only for WEP) - -int status = WL_IDLE_STATUS; - -// Initialize the Wifi client library -WiFiClient client; - -// server address: -char server[] = "www.arduino.cc"; -//IPAddress server(64,131,82,241); - -unsigned long lastConnectionTime = 0; // last time you connected to the server, in milliseconds -const unsigned long postingInterval = 10L * 1000L; // delay between updates, in milliseconds - -void setup() { - //Initialize serial and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // check for the presence of the shield: - if (WiFi.status() == WL_NO_SHIELD) { - Serial.println("WiFi shield not present"); - // don't continue: - while (true); - } - - String fv = WiFi.firmwareVersion(); - if (fv != "1.1.0") { - Serial.println("Please upgrade the firmware"); - } - - // attempt to connect to Wifi network: - while (status != WL_CONNECTED) { - Serial.print("Attempting to connect to SSID: "); - Serial.println(ssid); - // Connect to WPA/WPA2 network. Change this line if using open or WEP network: - status = WiFi.begin(ssid, pass); - - // wait 10 seconds for connection: - delay(10000); - } - // you're connected now, so print out the status: - printWifiStatus(); -} - -void loop() { - // if there's incoming data from the net connection. - // send it out the serial port. This is for debugging - // purposes only: - while (client.available()) { - char c = client.read(); - Serial.write(c); - } - - // if ten seconds have passed since your last connection, - // then connect again and send data: - if (millis() - lastConnectionTime > postingInterval) { - httpRequest(); - } - -} - -// this method makes a HTTP connection to the server: -void httpRequest() { - // close any connection before send a new request. - // This will free the socket on the WiFi shield - client.stop(); - - // if there's a successful connection: - if (client.connect(server, 80)) { - Serial.println("connecting..."); - // send the HTTP PUT request: - client.println("GET /latest.txt HTTP/1.1"); - client.println("Host: www.arduino.cc"); - client.println("User-Agent: ArduinoWiFi/1.1"); - client.println("Connection: close"); - client.println(); - - // note the time that the connection was made: - lastConnectionTime = millis(); - } else { - // if you couldn't make a connection: - Serial.println("connection failed"); - } -} - - -void printWifiStatus() { - // print the SSID of the network you're attached to: - Serial.print("SSID: "); - Serial.println(WiFi.SSID()); - - // print your WiFi shield's IP address: - IPAddress ip = WiFi.localIP(); - Serial.print("IP Address: "); - Serial.println(ip); - - // print the received signal strength: - long rssi = WiFi.RSSI(); - Serial.print("signal strength (RSSI):"); - Serial.print(rssi); - Serial.println(" dBm"); -} - - diff --git a/libraries/WiFi/examples/WiFiWebServer/WiFiWebServer.ino b/libraries/WiFi/examples/WiFiWebServer/WiFiWebServer.ino deleted file mode 100644 index c777d230531..00000000000 --- a/libraries/WiFi/examples/WiFiWebServer/WiFiWebServer.ino +++ /dev/null @@ -1,138 +0,0 @@ -/* - WiFi Web Server - - A simple web server that shows the value of the analog input pins. - using a WiFi shield. - - This example is written for a network using WPA encryption. For - WEP or WPA, change the Wifi.begin() call accordingly. - - Circuit: - * WiFi shield attached - * Analog inputs attached to pins A0 through A5 (optional) - - created 13 July 2010 - by dlf (Metodo2 srl) - modified 31 May 2012 - by Tom Igoe - - */ - -#include -#include - - -char ssid[] = "yourNetwork"; // your network SSID (name) -char pass[] = "secretPassword"; // your network password -int keyIndex = 0; // your network key Index number (needed only for WEP) - -int status = WL_IDLE_STATUS; - -WiFiServer server(80); - -void setup() { - //Initialize serial and wait for port to open: - Serial.begin(9600); - while (!Serial) { - ; // wait for serial port to connect. Needed for native USB port only - } - - // check for the presence of the shield: - if (WiFi.status() == WL_NO_SHIELD) { - Serial.println("WiFi shield not present"); - // don't continue: - while (true); - } - - String fv = WiFi.firmwareVersion(); - if (fv != "1.1.0") { - Serial.println("Please upgrade the firmware"); - } - - // attempt to connect to Wifi network: - while (status != WL_CONNECTED) { - Serial.print("Attempting to connect to SSID: "); - Serial.println(ssid); - // Connect to WPA/WPA2 network. Change this line if using open or WEP network: - status = WiFi.begin(ssid, pass); - - // wait 10 seconds for connection: - delay(10000); - } - server.begin(); - // you're connected now, so print out the status: - printWifiStatus(); -} - - -void loop() { - // listen for incoming clients - WiFiClient client = server.available(); - if (client) { - Serial.println("new client"); - // an http request ends with a blank line - boolean currentLineIsBlank = true; - while (client.connected()) { - if (client.available()) { - char c = client.read(); - Serial.write(c); - // if you've gotten to the end of the line (received a newline - // character) and the line is blank, the http request has ended, - // so you can send a reply - if (c == '\n' && currentLineIsBlank) { - // send a standard http response header - client.println("HTTP/1.1 200 OK"); - client.println("Content-Type: text/html"); - client.println("Connection: close"); // the connection will be closed after completion of the response - client.println("Refresh: 5"); // refresh the page automatically every 5 sec - client.println(); - client.println(""); - client.println(""); - // output the value of each analog input pin - for (int analogChannel = 0; analogChannel < 6; analogChannel++) { - int sensorReading = analogRead(analogChannel); - client.print("analog input "); - client.print(analogChannel); - client.print(" is "); - client.print(sensorReading); - client.println("
    "); - } - client.println(""); - break; - } - if (c == '\n') { - // you're starting a new line - currentLineIsBlank = true; - } else if (c != '\r') { - // you've gotten a character on the current line - currentLineIsBlank = false; - } - } - } - // give the web browser time to receive the data - delay(1); - - // close the connection: - client.stop(); - Serial.println("client disonnected"); - } -} - - -void printWifiStatus() { - // print the SSID of the network you're attached to: - Serial.print("SSID: "); - Serial.println(WiFi.SSID()); - - // print your WiFi shield's IP address: - IPAddress ip = WiFi.localIP(); - Serial.print("IP Address: "); - Serial.println(ip); - - // print the received signal strength: - long rssi = WiFi.RSSI(); - Serial.print("signal strength (RSSI):"); - Serial.print(rssi); - Serial.println(" dBm"); -} - diff --git a/libraries/WiFi/extras/binary/wifiHD.elf b/libraries/WiFi/extras/binary/wifiHD.elf deleted file mode 100644 index d4a8bde55f5..00000000000 Binary files a/libraries/WiFi/extras/binary/wifiHD.elf and /dev/null differ diff --git a/libraries/WiFi/extras/binary/wifiHD.hex b/libraries/WiFi/extras/binary/wifiHD.hex deleted file mode 100644 index 0122587ff46..00000000000 --- a/libraries/WiFi/extras/binary/wifiHD.hex +++ /dev/null @@ -1,16358 +0,0 @@ -:0200000480007A -:10000000E08F100000000000000000000000000071 -:1000100000000000000000000000000000000000E0 -:1000200000000000000000000000000000000000D0 -:1000300000000000000000000000000000000000C0 -:1000400000000000000000000000000000000000B0 -:1000500000000000000000000000000000000000A0 -:100060000000000000000000000000000000000090 -:100070000000000000000000000000000000000080 -:100080000000000000000000000000000000000070 -:100090000000000000000000000000000000000060 -:1000A0000000000000000000000000000000000050 -:1000B0000000000000000000000000000000000040 -:1000C0000000000000000000000000000000000030 -:1000D0000000000000000000000000000000000020 -:1000E0000000000000000000000000000000000010 -:1000F0000000000000000000000000000000000000 -:1001000000000000000000000000000000000000EF -:1001100000000000000000000000000000000000DF -:1001200000000000000000000000000000000000CF -:1001300000000000000000000000000000000000BF -:1001400000000000000000000000000000000000AF -:10015000000000000000000000000000000000009F -:10016000000000000000000000000000000000008F -:10017000000000000000000000000000000000007F -:10018000000000000000000000000000000000006F -:10019000000000000000000000000000000000005F -:1001A000000000000000000000000000000000004F -:1001B000000000000000000000000000000000003F -:1001C000000000000000000000000000000000002F -:1001D000000000000000000000000000000000001F -:1001E000000000000000000000000000000000000F -:1001F00000000000000000000000000000000000FF -:1002000000000000000000000000000000000000EE -:1002100000000000000000000000000000000000DE -:1002200000000000000000000000000000000000CE -:1002300000000000000000000000000000000000BE -:1002400000000000000000000000000000000000AE -:10025000000000000000000000000000000000009E -:10026000000000000000000000000000000000008E -:10027000000000000000000000000000000000007E -:10028000000000000000000000000000000000006E -:10029000000000000000000000000000000000005E -:1002A000000000000000000000000000000000004E -:1002B000000000000000000000000000000000003E -:1002C000000000000000000000000000000000002E -:1002D000000000000000000000000000000000001E -:1002E000000000000000000000000000000000000E -:1002F00000000000000000000000000000000000FE -:1003000000000000000000000000000000000000ED -:1003100000000000000000000000000000000000DD -:1003200000000000000000000000000000000000CD -:1003300000000000000000000000000000000000BD -:1003400000000000000000000000000000000000AD -:10035000000000000000000000000000000000009D -:10036000000000000000000000000000000000008D -:10037000000000000000000000000000000000007D -:10038000000000000000000000000000000000006D -:10039000000000000000000000000000000000005D -:1003A000000000000000000000000000000000004D -:1003B000000000000000000000000000000000003D -:1003C000000000000000000000000000000000002D -:1003D000000000000000000000000000000000001D -:1003E000000000000000000000000000000000000D -:1003F00000000000000000000000000000000000FD -:1004000000000000000000000000000000000000EC -:1004100000000000000000000000000000000000DC -:1004200000000000000000000000000000000000CC -:1004300000000000000000000000000000000000BC -:1004400000000000000000000000000000000000AC -:10045000000000000000000000000000000000009C -:10046000000000000000000000000000000000008C -:10047000000000000000000000000000000000007C -:10048000000000000000000000000000000000006C -:10049000000000000000000000000000000000005C -:1004A000000000000000000000000000000000004C -:1004B000000000000000000000000000000000003C -:1004C000000000000000000000000000000000002C -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F00000000000000000000000000000000000FC -:1005000000000000000000000000000000000000EB -:1005100000000000000000000000000000000000DB -:1005200000000000000000000000000000000000CB -:1005300000000000000000000000000000000000BB -:1005400000000000000000000000000000000000AB -:10055000000000000000000000000000000000009B -:10056000000000000000000000000000000000008B -:10057000000000000000000000000000000000007B -:10058000000000000000000000000000000000006B -:10059000000000000000000000000000000000005B -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:1005C000000000000000000000000000000000002B -:1005D000000000000000000000000000000000001B -:1005E000000000000000000000000000000000000B -:1005F00000000000000000000000000000000000FB -:1006000000000000000000000000000000000000EA -:1006100000000000000000000000000000000000DA -:1006200000000000000000000000000000000000CA -:1006300000000000000000000000000000000000BA -:1006400000000000000000000000000000000000AA -:10065000000000000000000000000000000000009A -:10066000000000000000000000000000000000008A -:10067000000000000000000000000000000000007A -:10068000000000000000000000000000000000006A -:10069000000000000000000000000000000000005A -:1006A000000000000000000000000000000000004A -:1006B000000000000000000000000000000000003A -:1006C000000000000000000000000000000000002A -:1006D000000000000000000000000000000000001A -:1006E000000000000000000000000000000000000A -:1006F00000000000000000000000000000000000FA -:1007000000000000000000000000000000000000E9 -:1007100000000000000000000000000000000000D9 -:1007200000000000000000000000000000000000C9 -:1007300000000000000000000000000000000000B9 -:1007400000000000000000000000000000000000A9 -:100750000000000000000000000000000000000099 -:100760000000000000000000000000000000000089 -:100770000000000000000000000000000000000079 -:100780000000000000000000000000000000000069 -:100790000000000000000000000000000000000059 -:1007A0000000000000000000000000000000000049 -:1007B0000000000000000000000000000000000039 -:1007C0000000000000000000000000000000000029 -:1007D0000000000000000000000000000000000019 -:1007E0000000000000000000000000000000000009 -:1007F00000000000000000000000000000000000F9 -:1008000000000000000000000000000000000000E8 -:1008100000000000000000000000000000000000D8 -:1008200000000000000000000000000000000000C8 -:1008300000000000000000000000000000000000B8 -:1008400000000000000000000000000000000000A8 -:100850000000000000000000000000000000000098 -:100860000000000000000000000000000000000088 -:100870000000000000000000000000000000000078 -:100880000000000000000000000000000000000068 -:100890000000000000000000000000000000000058 -:1008A0000000000000000000000000000000000048 -:1008B0000000000000000000000000000000000038 -:1008C0000000000000000000000000000000000028 -:1008D0000000000000000000000000000000000018 -:1008E0000000000000000000000000000000000008 -:1008F00000000000000000000000000000000000F8 -:1009000000000000000000000000000000000000E7 -:1009100000000000000000000000000000000000D7 -:1009200000000000000000000000000000000000C7 -:1009300000000000000000000000000000000000B7 -:1009400000000000000000000000000000000000A7 -:100950000000000000000000000000000000000097 -:100960000000000000000000000000000000000087 -:100970000000000000000000000000000000000077 -:100980000000000000000000000000000000000067 -:100990000000000000000000000000000000000057 -:1009A0000000000000000000000000000000000047 -:1009B0000000000000000000000000000000000037 -:1009C0000000000000000000000000000000000027 -:1009D0000000000000000000000000000000000017 -:1009E0000000000000000000000000000000000007 -:1009F00000000000000000000000000000000000F7 -:100A000000000000000000000000000000000000E6 -:100A100000000000000000000000000000000000D6 -:100A200000000000000000000000000000000000C6 -:100A300000000000000000000000000000000000B6 -:100A400000000000000000000000000000000000A6 -:100A50000000000000000000000000000000000096 -:100A60000000000000000000000000000000000086 -:100A70000000000000000000000000000000000076 -:100A80000000000000000000000000000000000066 -:100A90000000000000000000000000000000000056 -:100AA0000000000000000000000000000000000046 -:100AB0000000000000000000000000000000000036 -:100AC0000000000000000000000000000000000026 -:100AD0000000000000000000000000000000000016 -:100AE0000000000000000000000000000000000006 -:100AF00000000000000000000000000000000000F6 -:100B000000000000000000000000000000000000E5 -:100B100000000000000000000000000000000000D5 -:100B200000000000000000000000000000000000C5 -:100B300000000000000000000000000000000000B5 -:100B400000000000000000000000000000000000A5 -:100B50000000000000000000000000000000000095 -:100B60000000000000000000000000000000000085 -:100B70000000000000000000000000000000000075 -:100B80000000000000000000000000000000000065 -:100B90000000000000000000000000000000000055 -:100BA0000000000000000000000000000000000045 -:100BB0000000000000000000000000000000000035 -:100BC0000000000000000000000000000000000025 -:100BD0000000000000000000000000000000000015 -:100BE0000000000000000000000000000000000005 -:100BF00000000000000000000000000000000000F5 -:100C000000000000000000000000000000000000E4 -:100C100000000000000000000000000000000000D4 -:100C200000000000000000000000000000000000C4 -:100C300000000000000000000000000000000000B4 -:100C400000000000000000000000000000000000A4 -:100C50000000000000000000000000000000000094 -:100C60000000000000000000000000000000000084 -:100C70000000000000000000000000000000000074 -:100C80000000000000000000000000000000000064 -:100C90000000000000000000000000000000000054 -:100CA0000000000000000000000000000000000044 -:100CB0000000000000000000000000000000000034 -:100CC0000000000000000000000000000000000024 -:100CD0000000000000000000000000000000000014 -:100CE0000000000000000000000000000000000004 -:100CF00000000000000000000000000000000000F4 -:100D000000000000000000000000000000000000E3 -:100D100000000000000000000000000000000000D3 -:100D200000000000000000000000000000000000C3 -:100D300000000000000000000000000000000000B3 -:100D400000000000000000000000000000000000A3 -:100D50000000000000000000000000000000000093 -:100D60000000000000000000000000000000000083 -:100D70000000000000000000000000000000000073 -:100D80000000000000000000000000000000000063 -:100D90000000000000000000000000000000000053 -:100DA0000000000000000000000000000000000043 -:100DB0000000000000000000000000000000000033 -:100DC0000000000000000000000000000000000023 -:100DD0000000000000000000000000000000000013 -:100DE0000000000000000000000000000000000003 -:100DF00000000000000000000000000000000000F3 -:100E000000000000000000000000000000000000E2 -:100E100000000000000000000000000000000000D2 -:100E200000000000000000000000000000000000C2 -:100E300000000000000000000000000000000000B2 -:100E400000000000000000000000000000000000A2 -:100E50000000000000000000000000000000000092 -:100E60000000000000000000000000000000000082 -:100E70000000000000000000000000000000000072 -:100E80000000000000000000000000000000000062 -:100E90000000000000000000000000000000000052 -:100EA0000000000000000000000000000000000042 -:100EB0000000000000000000000000000000000032 -:100EC0000000000000000000000000000000000022 -:100ED0000000000000000000000000000000000012 -:100EE0000000000000000000000000000000000002 -:100EF00000000000000000000000000000000000F2 -:100F000000000000000000000000000000000000E1 -:100F100000000000000000000000000000000000D1 -:100F200000000000000000000000000000000000C1 -:100F300000000000000000000000000000000000B1 -:100F400000000000000000000000000000000000A1 -:100F50000000000000000000000000000000000091 -:100F60000000000000000000000000000000000081 -:100F70000000000000000000000000000000000071 -:100F80000000000000000000000000000000000061 -:100F90000000000000000000000000000000000051 -:100FA0000000000000000000000000000000000041 -:100FB0000000000000000000000000000000000031 -:100FC0000000000000000000000000000000000021 -:100FD0000000000000000000000000000000000011 -:100FE0000000000000000000000000000000000001 -:100FF00000000000000000000000000000000000F1 -:1010000000000000000000000000000000000000E0 -:1010100000000000000000000000000000000000D0 -:1010200000000000000000000000000000000000C0 -:1010300000000000000000000000000000000000B0 -:1010400000000000000000000000000000000000A0 -:101050000000000000000000000000000000000090 -:101060000000000000000000000000000000000080 -:101070000000000000000000000000000000000070 -:101080000000000000000000000000000000000060 -:101090000000000000000000000000000000000050 -:1010A0000000000000000000000000000000000040 -:1010B0000000000000000000000000000000000030 -:1010C0000000000000000000000000000000000020 -:1010D0000000000000000000000000000000000010 -:1010E0000000000000000000000000000000000000 -:1010F00000000000000000000000000000000000F0 -:1011000000000000000000000000000000000000DF -:1011100000000000000000000000000000000000CF -:1011200000000000000000000000000000000000BF -:1011300000000000000000000000000000000000AF -:10114000000000000000000000000000000000009F -:10115000000000000000000000000000000000008F -:10116000000000000000000000000000000000007F -:10117000000000000000000000000000000000006F -:10118000000000000000000000000000000000005F -:10119000000000000000000000000000000000004F -:1011A000000000000000000000000000000000003F -:1011B000000000000000000000000000000000002F -:1011C000000000000000000000000000000000001F -:1011D000000000000000000000000000000000000F -:1011E00000000000000000000000000000000000FF -:1011F00000000000000000000000000000000000EF -:1012000000000000000000000000000000000000DE -:1012100000000000000000000000000000000000CE -:1012200000000000000000000000000000000000BE -:1012300000000000000000000000000000000000AE -:10124000000000000000000000000000000000009E -:10125000000000000000000000000000000000008E -:10126000000000000000000000000000000000007E -:10127000000000000000000000000000000000006E -:10128000000000000000000000000000000000005E -:10129000000000000000000000000000000000004E -:1012A000000000000000000000000000000000003E -:1012B000000000000000000000000000000000002E -:1012C000000000000000000000000000000000001E -:1012D000000000000000000000000000000000000E -:1012E00000000000000000000000000000000000FE -:1012F00000000000000000000000000000000000EE -:1013000000000000000000000000000000000000DD -:1013100000000000000000000000000000000000CD -:1013200000000000000000000000000000000000BD -:1013300000000000000000000000000000000000AD -:10134000000000000000000000000000000000009D -:10135000000000000000000000000000000000008D -:10136000000000000000000000000000000000007D -:10137000000000000000000000000000000000006D -:10138000000000000000000000000000000000005D -:10139000000000000000000000000000000000004D -:1013A000000000000000000000000000000000003D -:1013B000000000000000000000000000000000002D -:1013C000000000000000000000000000000000001D -:1013D000000000000000000000000000000000000D -:1013E00000000000000000000000000000000000FD -:1013F00000000000000000000000000000000000ED -:1014000000000000000000000000000000000000DC -:1014100000000000000000000000000000000000CC -:1014200000000000000000000000000000000000BC -:1014300000000000000000000000000000000000AC -:10144000000000000000000000000000000000009C -:10145000000000000000000000000000000000008C -:10146000000000000000000000000000000000007C -:10147000000000000000000000000000000000006C -:10148000000000000000000000000000000000005C -:10149000000000000000000000000000000000004C -:1014A000000000000000000000000000000000003C -:1014B000000000000000000000000000000000002C -:1014C000000000000000000000000000000000001C -:1014D000000000000000000000000000000000000C -:1014E00000000000000000000000000000000000FC -:1014F00000000000000000000000000000000000EC -:1015000000000000000000000000000000000000DB -:1015100000000000000000000000000000000000CB -:1015200000000000000000000000000000000000BB -:1015300000000000000000000000000000000000AB -:10154000000000000000000000000000000000009B -:10155000000000000000000000000000000000008B -:10156000000000000000000000000000000000007B -:10157000000000000000000000000000000000006B -:10158000000000000000000000000000000000005B -:10159000000000000000000000000000000000004B -:1015A000000000000000000000000000000000003B -:1015B000000000000000000000000000000000002B -:1015C000000000000000000000000000000000001B -:1015D000000000000000000000000000000000000B -:1015E00000000000000000000000000000000000FB -:1015F00000000000000000000000000000000000EB -:1016000000000000000000000000000000000000DA -:1016100000000000000000000000000000000000CA -:1016200000000000000000000000000000000000BA -:1016300000000000000000000000000000000000AA -:10164000000000000000000000000000000000009A -:10165000000000000000000000000000000000008A -:10166000000000000000000000000000000000007A -:10167000000000000000000000000000000000006A -:10168000000000000000000000000000000000005A -:10169000000000000000000000000000000000004A -:1016A000000000000000000000000000000000003A -:1016B000000000000000000000000000000000002A -:1016C000000000000000000000000000000000001A -:1016D000000000000000000000000000000000000A -:1016E00000000000000000000000000000000000FA -:1016F00000000000000000000000000000000000EA -:1017000000000000000000000000000000000000D9 -:1017100000000000000000000000000000000000C9 -:1017200000000000000000000000000000000000B9 -:1017300000000000000000000000000000000000A9 -:101740000000000000000000000000000000000099 -:101750000000000000000000000000000000000089 -:101760000000000000000000000000000000000079 -:101770000000000000000000000000000000000069 -:101780000000000000000000000000000000000059 -:101790000000000000000000000000000000000049 -:1017A0000000000000000000000000000000000039 -:1017B0000000000000000000000000000000000029 -:1017C0000000000000000000000000000000000019 -:1017D0000000000000000000000000000000000009 -:1017E00000000000000000000000000000000000F9 -:1017F00000000000000000000000000000000000E9 -:1018000000000000000000000000000000000000D8 -:1018100000000000000000000000000000000000C8 -:1018200000000000000000000000000000000000B8 -:1018300000000000000000000000000000000000A8 -:101840000000000000000000000000000000000098 -:101850000000000000000000000000000000000088 -:101860000000000000000000000000000000000078 -:101870000000000000000000000000000000000068 -:101880000000000000000000000000000000000058 -:101890000000000000000000000000000000000048 -:1018A0000000000000000000000000000000000038 -:1018B0000000000000000000000000000000000028 -:1018C0000000000000000000000000000000000018 -:1018D0000000000000000000000000000000000008 -:1018E00000000000000000000000000000000000F8 -:1018F00000000000000000000000000000000000E8 -:1019000000000000000000000000000000000000D7 -:1019100000000000000000000000000000000000C7 -:1019200000000000000000000000000000000000B7 -:1019300000000000000000000000000000000000A7 -:101940000000000000000000000000000000000097 -:101950000000000000000000000000000000000087 -:101960000000000000000000000000000000000077 -:101970000000000000000000000000000000000067 -:101980000000000000000000000000000000000057 -:101990000000000000000000000000000000000047 -:1019A0000000000000000000000000000000000037 -:1019B0000000000000000000000000000000000027 -:1019C0000000000000000000000000000000000017 -:1019D0000000000000000000000000000000000007 -:1019E00000000000000000000000000000000000F7 -:1019F00000000000000000000000000000000000E7 -:101A000000000000000000000000000000000000D6 -:101A100000000000000000000000000000000000C6 -:101A200000000000000000000000000000000000B6 -:101A300000000000000000000000000000000000A6 -:101A40000000000000000000000000000000000096 -:101A50000000000000000000000000000000000086 -:101A60000000000000000000000000000000000076 -:101A70000000000000000000000000000000000066 -:101A80000000000000000000000000000000000056 -:101A90000000000000000000000000000000000046 -:101AA0000000000000000000000000000000000036 -:101AB0000000000000000000000000000000000026 -:101AC0000000000000000000000000000000000016 -:101AD0000000000000000000000000000000000006 -:101AE00000000000000000000000000000000000F6 -:101AF00000000000000000000000000000000000E6 -:101B000000000000000000000000000000000000D5 -:101B100000000000000000000000000000000000C5 -:101B200000000000000000000000000000000000B5 -:101B300000000000000000000000000000000000A5 -:101B40000000000000000000000000000000000095 -:101B50000000000000000000000000000000000085 -:101B60000000000000000000000000000000000075 -:101B70000000000000000000000000000000000065 -:101B80000000000000000000000000000000000055 -:101B90000000000000000000000000000000000045 -:101BA0000000000000000000000000000000000035 -:101BB0000000000000000000000000000000000025 -:101BC0000000000000000000000000000000000015 -:101BD0000000000000000000000000000000000005 -:101BE00000000000000000000000000000000000F5 -:101BF00000000000000000000000000000000000E5 -:101C000000000000000000000000000000000000D4 -:101C100000000000000000000000000000000000C4 -:101C200000000000000000000000000000000000B4 -:101C300000000000000000000000000000000000A4 -:101C40000000000000000000000000000000000094 -:101C50000000000000000000000000000000000084 -:101C60000000000000000000000000000000000074 -:101C70000000000000000000000000000000000064 -:101C80000000000000000000000000000000000054 -:101C90000000000000000000000000000000000044 -:101CA0000000000000000000000000000000000034 -:101CB0000000000000000000000000000000000024 -:101CC0000000000000000000000000000000000014 -:101CD0000000000000000000000000000000000004 -:101CE00000000000000000000000000000000000F4 -:101CF00000000000000000000000000000000000E4 -:101D000000000000000000000000000000000000D3 -:101D100000000000000000000000000000000000C3 -:101D200000000000000000000000000000000000B3 -:101D300000000000000000000000000000000000A3 -:101D40000000000000000000000000000000000093 -:101D50000000000000000000000000000000000083 -:101D60000000000000000000000000000000000073 -:101D70000000000000000000000000000000000063 -:101D80000000000000000000000000000000000053 -:101D90000000000000000000000000000000000043 -:101DA0000000000000000000000000000000000033 -:101DB0000000000000000000000000000000000023 -:101DC0000000000000000000000000000000000013 -:101DD0000000000000000000000000000000000003 -:101DE00000000000000000000000000000000000F3 -:101DF00000000000000000000000000000000000E3 -:101E000000000000000000000000000000000000D2 -:101E100000000000000000000000000000000000C2 -:101E200000000000000000000000000000000000B2 -:101E300000000000000000000000000000000000A2 -:101E40000000000000000000000000000000000092 -:101E50000000000000000000000000000000000082 -:101E60000000000000000000000000000000000072 -:101E70000000000000000000000000000000000062 -:101E80000000000000000000000000000000000052 -:101E90000000000000000000000000000000000042 -:101EA0000000000000000000000000000000000032 -:101EB0000000000000000000000000000000000022 -:101EC0000000000000000000000000000000000012 -:101ED0000000000000000000000000000000000002 -:101EE00000000000000000000000000000000000F2 -:101EF00000000000000000000000000000000000E2 -:101F000000000000000000000000000000000000D1 -:101F100000000000000000000000000000000000C1 -:101F200000000000000000000000000000000000B1 -:101F300000000000000000000000000000000000A1 -:101F40000000000000000000000000000000000091 -:101F50000000000000000000000000000000000081 -:101F60000000000000000000000000000000000071 -:101F70000000000000000000000000000000000061 -:101F80000000000000000000000000000000000051 -:101F90000000000000000000000000000000000041 -:101FA0000000000000000000000000000000000031 -:101FB0000000000000000000000000000000000021 -:101FC0000000000000000000000000000000000011 -:101FD0000000000000000000000000000000000001 -:101FE00000000000000000000000000000000000F1 -:101FF00000000000000000000000000000000000E1 -:08200000481F000080013E04AE -:102008003038F00C19005EBC5C7C4848F00C003994 -:10201800F00C093BB22A5EFC000011C0F80815015B -:102028003039F20C1800E08800035EFDF00B000B5D -:102038004828F00B032C5EFC00007B08580CC0D02D -:1020480048787829F00900293008720A143CC060E1 -:102058002FF82F895848CFA13FF85EF800007B0879 -:102068003038F00C18005EBCF60C001C30094838FB -:10207800F00C09295EFC000000007B085EFFD70316 -:10208800D4011988301EB6881998B6BEEA18FFFF21 -:10209800E818FF80B6AEB698580AC0301588C0A8B0 -:1020A80048981188F4081800C0303038C03848788B -:1020B80011B8B6C83EE8B6D83008B6E8302C306853 -:1020C800B208D802000016AB00000008D40130188E -:1020D800198EB68E199CB6A8EA1CFFFFE81CFF8073 -:1020E800B6B8B69C580AC0A0158CE06A00FFF00C80 -:1020F8001800F4081710F9B80001B6C83EE8B6D8B9 -:102108003008B6E8302C3068B208D802D421202D27 -:102118004AAA189E1698129674075807C071FACAE8 -:10212800FFF814F7F01F0026C4681989B6891999B1 -:10213800EA19FFFFE819FF80B6993039B0A9740988 -:102148007219F20C1618B0F9B0CCF9D9C108F3D944 -:10215800C208B0ECB0D9304BB0BB74097229F20C8C -:102168001618F169000CF16C0009F9D9C108F3D906 -:10217800C208F16C000BF16B0008F169000A7409E0 -:10218800300A7239F16A00133EEAF16A0012F20A63 -:102198001618F1690011F16A000EF16B000DF5D9FE -:1021A800C108F3D9C208F16A0010F169000F302C98 -:1021B8003138AC082FEDD8220000152C800020D42F -:1021C8003038F00C18005EBCF60C001B48F8F00B19 -:1021D800032858085E0C704958195E1C7029581954 -:1021E800C09148B8F00C003C9828B42878089508A5 -:1021F8005EFC71E85808F0091700F1F91001F1F8D0 -:10220800120A9509B4285EFC00007B08000011C082 -:10221800D4314BC8300A10941499910A1893301A83 -:102228004B984BA7910A3EE14B921296C0280A9907 -:10223800E0682710C0485808C5602018664AE21AA6 -:102248000201E04A0201CF81C4F8F2C5FFFFE20AA9 -:102258001800CEE10F9BF7DBC0C15825E0890005C7 -:102268003038300AC2E80FAA3038C148580BC0A02D -:10227800EE08070EEE08000CA96E2FE8199C1C0842 -:10228800C058F0CCFFFFEE080708201AF80800082D -:102298005C5A10395F9CEC0A18005F9EFDEC000C3C -:1022A800EC0C1800CE4110395F09F9DAC008EC0CC3 -:1022B80018005F0CF9E90009EC091800C020D83AA9 -:1022C800840C3009F20C1900CB34201D5C6A1ADB2F -:1022D8001AD849081ADA490C1AD51AD8F01F000F6B -:1022E8002FADCA6BDA3A662A68085C5A2FF8EE09ED -:1022F8000B0A8908E0480063FE9AFFA9305CD832CF -:10230800000014B0000011B8000014B8000016A2B4 -:102318008003792C80037AB0800094C4D431202DB6 -:102328004C68149570081896169712945808C0713E -:10233800FACAFFF814F8F01F0042CC38198830198F -:10234800B6881998B6A9EA18FFFFE818FF80B6986A -:102358004BC89088EDB80002C171189330023EE175 -:102368000788201D4B8C1AD8F01F00382FF22FED4C -:102378000788E2081800C0502FF3E0420400CF118C -:102388004B3CF01F00320DC83099F2081800E08865 -:1023980000114B09920A3009F20A1900E0840091F1 -:1023A8001AD84AD84ADC1AD8F01F00282FEDC88856 -:1023B800E0450032C290A3684A99E0450033C5D091 -:1023C800129B7209F2080309EECAFFFCF3360020DB -:1023D8003009AEB6C088760CF808030CF809070C6B -:1023E8002FF914CCEC091900CF7349A99289EDB9DA -:1023F8000004C5F149A97209F2080308499C1AD8D2 -:1024080049581AD8C538304BA368495A7409F20894 -:10241800030972C9AEBBF20B1618AEC9AEFBF7D9E9 -:10242800C108F3D9C208AEDBAEE948A99289EDB973 -:102438000004C1903046C3D80000152C800020D479 -:10244800000016A080037AF0800094C4800384D42E -:10245800000016A28003785880037AF8000015203F -:1024680080037B187409F208030870C8496C1AD8ED -:10247800304649681AD8C1A8301AAEBA720AF408A8 -:10248800030AF53A0038AECA491A948AEDBA00042C -:10249800C0303016C0E87209F2080308F138003875 -:1024A80048CC1AD8301648981AD8F01F000B2FEDD0 -:1024B8003EE80C07AEC83008AED82FB6A806302CB8 -:1024C8002FEDD83280037B2880037858000016A2AD -:1024D80080037B38800094C4D421204D4A981897F3 -:1024E800118A580AC0313FF6C0D84A7811BC118EFB -:1024F800119611A8B166EDEE1186EDE81086F9E6A1 -:1025080010064A289088EDB80002C0E14A08201D4C -:102518004A0C1ADA1AD61AD8505B5049F01F001E16 -:102528002FCD4009401B49D870085808C081FACA05 -:10253800FFF00E9C14F8F01F001AC2080F88B68826 -:102548000F98EA18FFFFE818FF80B6983018B6A869 -:102558003048B6B8F1D6C108B6E83EE8EC0A161815 -:10256800B6F6F7680008B6CA3008EDD6C208F768AC -:102578000009B6D63098302CB2082FCDD8220000EA -:102588000000152800007B28000016A28003782090 -:1025980080037B48800094C40000152C800020D460 -:1025A800D401580BC0313FF8C0C8178A17B917981B -:1025B800B168F1EA118817AAF1EA1088F3E810085F -:1025C800F00A161848E9B28AF5D8C208B2B8B29A21 -:1025D800F5D8C108B2AA48B99289EDB90002C0A1DC -:1025E800201D1AD848881ADC488C1AD8F01F000811 -:1025F8002FCD30194878B089D802000000007B2818 -:10260800000016A28003799C80037B74800094C428 -:1026180000001528D431204D4AE8189570081697FF -:1026280012965808C071FACAFFF014F8F01F002A71 -:10263800C4D84AA89088EDB80002C1711894300334 -:102648003EE20988201D4A6C1AD8F01F00262FF395 -:102658002FED0988E4081800C0502FF4E043040067 -:10266800CF114A1CF01F001F0B880BCCAE880B98AB -:10267800EA18FFFFE818FF80AE983004BA445014F7 -:102688003025FACAFFFCAEA5301BF01F0018304AEF -:10269800EF64000CEF6500084018F0091618AEF852 -:1026A800AEC99A49AEBAF5D8C108F1D8C208EF69DF -:1026B800000AAED8AEEA3EE8F3D9C108EF68000BCD -:1026C800EF69000930C8302CAC082FCDD832000093 -:1026D8000000152C800020D4000016A080037AF09A -:1026E800800094C4800384D4800021C8D40148A801 -:1026F8009088EDB80002C0E148887008201D1AD8FB -:10270800487811881AD84878487C1AD8F01F0007EA -:102718002FCDDA0A000016A200000008000016AB50 -:10272800800379E480037BA8800094C4D42148E620 -:10273800189E30076C0C580CC0A02FF72EC6E04727 -:102748000024CF91489CF01F000ADC2A4866EE0757 -:102758000027EC070027EF680010AECE8F0B8F2AFA -:102768008F39D822000011E080037BC4800094C414 -:10277800D4214C8618970C9A302830094C6B310CB0 -:10278800F01F00460C9A302830094C5B311CF01FB2 -:1027980000430C9A302830094C2B312CF01F003F95 -:1027A8000E990C9A30284C0B314CF01F003C0E99B6 -:1027B8000C9A30284BDB315CF01F00383018300998 -:1027C8004BBA4BCB320CF01F003530184BA73009F1 -:1027D8000E9B4BAA321CF01F00310E9B301830099B -:1027E8004B7A322CF01F002D4B6532390A9A0E9B1A -:1027F8003018129CF01F002932490A9A0E9B301893 -:10280800129CF01F002632590A9A0E9B3018129C0F -:10281800F01F00220A9A32690E9B3018129CF01F92 -:10282800001F0C9A302830094A7B336CF01F001BBC -:102838000E9B301830094A5A327CF01F00180C9A47 -:10284800302830094A2B330CF01F00144A1533394D -:102858000A9A0E9B3018129CF01F001033190A9A1E -:102868000E9B3018129CF01F000D0A9A33290E9BFC -:102878003018129CF01F00090C9A30283009496B57 -:10288800334CF01F00060E9B30183009493AC278C5 -:10289800800020D48000427C8000273480004118CA -:1028A8008000433080003FD080003EA88000208810 -:1028B800800026F48000208480002114800035ECFC -:1028C80080003514800034A480004B5480003740C9 -:1028D8008000232480003678800024E0335CF01FD9 -:1028E80000370C9A302830094B5B328CF01F0033CC -:1028F8000C9A302830094B3B32DCF01F00300C9A20 -:10290800302830094B0B32ECF01F002C0E9B30188E -:1029180030094AEA329CF01F00290E9B3018300912 -:102928004ABA32CCF01F00250E9B301830094A9A5B -:1029380032BCF01F00220C9A304830094A6B344CE4 -:10294800F01F001E0E9B301830094A4A32ACF01FA7 -:10295800001B0E9B301830094A1A345CF01F001710 -:102968000E9B3018300949FA32FCF01F00140E9BF8 -:102978003018300949CA337CF01F00100E9B3018FC -:10298800300949AA338CF01F000D0C9A30483009E1 -:10299800497B346CF01F00090C9A30283009495BD8 -:1029A800339CF01F00060E9B30183009492A33ACBF -:1029B800F01F0002D82200008000273480003D88E4 -:1029C80080003AC8800038B4800033FC800030D4DE -:1029D800800032848000375C800032088000300438 -:1029E8008000332880002F8C80002EC4800038841B -:1029F800800037CC8000261CD4013038580B5F1972 -:102A0800F00C18005F88F3E80008C060F40C0019A7 -:102A180048D8F009092B48D89088EDB80001C111B1 -:102A280048B848C9580AF20A1700F00A171048A807 -:102A38001ADA1ADB1ADC489C1AD8F01F00092FCDC5 -:102A4800D802000000007B08000016A280037BDC8F -:102A580080037BE4800378C080037BF0800094C40B -:102A6800D401580BF60A1700F7FA180BF01F0002EA -:102A7800D802000080002A00D401320A300B483CFA -:102A8800F01F0003D802000000007B088002E8BCA9 -:102A9800D421206D3087FAC6FFF00E9A4C6B18953A -:102AA8000C9CF01F0046304B0C9CF01F0045300872 -:102AB800FB68000DBA88FB680009FB68000BFB681F -:102AC800000CEE784240501830480E9BFB67000817 -:102AD800FB68000A300AFE7C2400F01F003A1897B1 -:102AE800C0F04B989088EDB80002C0814B78201D4B -:102AF8004B7C1AD8F01F00372FED301CC5A8E06AB0 -:102B0800F980EA1A03371A9BFE7C2400F01F003272 -:102B1800582CC0D14AC89008EE081900C0844AB899 -:102B2800201D4AEC1AD8F01F002B2FEDD303300AD2 -:102B3800E06B01204AACF01F002BD503E1B8000080 -:102B4800EE180001F5D8C201C020D303FE78240096 -:102B58003019705BF7D9D001915B705BF7D9D0C1A0 -:102B6800915B705BF7D9D081915B580AC020D5037F -:102B7800FE7C2400F01F001C0A9CF01F001C364A33 -:102B8800300B49BCF01F001BE06A0400300B49AC55 -:102B9800F01F0018E06A0400300B498CF01F001584 -:102BA800F01F0017497830079107F01F00170E9C97 -:102BB8002FADD822800382078002E7368000A280EA -:102BC8008000A618000016A2800379BC80037C0848 -:102BD800800094C48000A73C80037C2880002C10CF -:102BE8008000A3A08000A7EC80002778000014B81C -:102BF8008002E8BC00000DB8000009B880002A80F7 -:102C0800000000088000751CD401E1B80000EE182F -:102C18000001F5D8C201C020D303FE782400301982 -:102C2800706BF7D9D001916B706BF7D9D0C1916BEC -:102C3800706BF7D9D081916B580AC020D503FE7C00 -:102C480024007848EDB80000C0F1F01F0016C0C19C -:102C5800319CF01F0015495890092FF9B009301917 -:102C68004938B089C1B8E1B80000EE180001F5D8BC -:102C7800C201C020D303FE7824003019705BF7D955 -:102C8800D001915B705BF7D9D0C1915B705BF7D9CC -:102C9800D081915B580AC020D503D402D603000026 -:102CA800800022188000A2E6000014B40000151C61 -:102CB800D4313006189714931694950618983E093F -:102CC800C2C81095118A2FF8F20A1800C251580686 -:102CD800C21049E890093008F0091900C064089B3F -:102CE8000E9C5C7BF01F001A49A890093008F00977 -:102CF8001900C1040C070F98201D1AD849681AD466 -:102D08001AD690881AD84958495C1AD8F01F001565 -:102D18002FAD8706C1882FF60836CD4548D89009CB -:102D28003008F0091900C0353005C0D8201D48A862 -:102D38001AD690881AD8489848BC1AD83005F01F77 -:102D480000092FCD0A9CD832000016A680013DB498 -:102D5800000016A2000014B4800378D080037C48D9 -:102D6800800094C480037C6CD42118971696F01FB9 -:102D780000325F080E3C5F191895F1E91009C03060 -:102D88005808C5710B893E08F0091800C5210B9930 -:102D98003008F0091800C4D5E2190040C0E1EACAB9 -:102DA800FFFD0BAC1298C068158B2FF92FFB160A84 -:102DB80016081839CFA5C2384A089088EDB800021D -:102DC800C0D149F8201D49FC1AD8F01F001FF7D6BA -:102DD800C0100E9CF01F001D2FED3009EACAFFFD40 -:102DE8000BAC1298C0A81587159B2FF9F7E7108B25 -:102DF8002FEB160AF60800081839CF6510053EE9CA -:102E08000BB8F2081800C021DA2A4919920A3009C9 -:102E1800F20A1900C0E4201D1AD848E890881AD888 -:102E2800487848DC1AD8F01F0008300C2FCDD8227B -:102E3800D82A000080002CB8000016A080037974FE -:102E480080037C84800094C480013DB4000016A2F5 -:102E5800000014B480037C8CD4014918581CC0713C -:102E68003039334C9109F01F000FC0683049334C9A -:102E78009109F01F000D48D89088EDB80002C0D124 -:102E880048787008201D1AD848981AD8489848AC2D -:102E98001AD8F01F000A2FCDD80200000000000841 -:102EA8008000A2E68000A300000016A280037A3CFE -:102EB8008003821080037CB0800094C4D421FACDB2 -:102EC80001004AC81697700512965805C071FACACB -:102ED800FF0014F5F01F0028C4A81989301AB68914 -:102EE8001999B6AAEA19FFFFE819FF80B69919B926 -:102EF800F4091800C20119C53FF8F0051800C1B05F -:102F0800E06A00FF300B1A9CF01F001C1A9430086E -:102F1800C048E8080B082FF80A38CFC51A94AEB590 -:102F2800EEC8FFFCFA050009C038093A10CA123485 -:102F3800CFD1C15849256A0CF01F00120A98EECA71 -:102F4800FFFCEBDCC0083009AEB5C068700BF609B1 -:102F5800070B2FF914CBEA091900CF933EE80A07AB -:102F6800AEC83008AED82FB5302CAC052C0DD82201 -:102F78000000152C800020D48002E8BC0000011459 -:102F88008002EDD0D421202D49981697700E129604 -:102F9800580EC071FACAFFF814FEF01F0016C25886 -:102FA8001989B6891998EA18FFFFE818FF80B698BA -:102FB80030184915B6A86A0CF01F0010EEC9FFFCBE -:102FC8005C5C3008AEBCC0686A0AF408070A2FF8CF -:102FD80012CAF8081900CF933EE818072FBCAEC8EC -:102FE8003008AED8AC0C302C2FEDD8220000152CB0 -:102FF800800020D4000001148002EDD0D421202DBF -:103008004AE818967008169712955808C071FACAB7 -:10301800FFF814F8F01F002AC4D84AA811D4303891 -:10302800F0041800E08B0046FACAFFFC1A9B089CC3 -:10303800F01F00250D88C300AE880D98EA18FFFF21 -:10304800E818FF80AE983018AEA81BC8AEB89A280A -:10305800AEC83008C0B8F3D8C010400BF1DAB010D1 -:10306800EE09000AF6090709B4D9F0CAFFFF9A2940 -:10307800F2081900CF13F1D9C010EE0800083EEA93 -:10308800B0DA9AA82FA910073008AEE8AA09089C58 -:10309800F01F000EC0E8AE880D98EA18FFFFE81888 -:1030A800FF80AECCAE98AEAC3EE8AEB83048AA08C9 -:1030B800302C2FEDD82200000000152C800020D4E1 -:1030C80000000DB880006BF480006FBCD431202D57 -:1030D8004C5818967008169712955808C071BAE897 -:1030E800FACAFFFAF01F0041C728F8C8FFFDC3C09D -:1030F80011842FF4F0040004C37009893018F00912 -:103108001800C67109993EE8F0091800C6214B88D5 -:1031180090093008F0091900C5C44B681AD44B6CE3 -:103128001AD8F01F00362FEDC548099309A9F3E313 -:1031380010835C83C54809893018F0091800C1510B -:1031480009993EE8F0091800C1014A989009300829 -:10315800F0091900C0A44A781AD44A7C1AD8F01F7A -:1031680000272FEDC02830030DB43018F0041800E4 -:10317800C2D10DCC3038F00C1800E08B0028F5D304 -:10318800C008FACBFFF9F01F001E0D88C120AE88D9 -:103198000D98EA18FFFFE818FF80AEB4AE98AEA409 -:1031A8001BF8AEC83EE8AED83008AEE83068C0D8E4 -:1031B800AE880D98EA18FFFFE818FF80AE983EE841 -:1031C800AECCAEB8AEAC3048AA08302C2FEDD83211 -:1031D80009883029F2081800CA9030032FF8100423 -:1031E800CAB1CC3B0000152C800020D4000016A2E8 -:1031F8008003780C80037CBC800094C480006FE05E -:10320800D421202D49A81697700E1296580EC07119 -:10321800FACAFFF814FEF01F0017C2681989301A9D -:10322800B6891999B6AAEA19FFFFE819FF80B69975 -:1032380019B9F4091800C0D119C83039F2081800B2 -:10324800E08B000848C9F208033CF01F000CC028B6 -:10325800300C3018AEB83EE8AECCAED83008AEE888 -:10326800302C3068AC082FEDD82200000000152C57 -:10327800800020D400007B0880004D78D421202DC8 -:103288004A181697700E1296580EC071FACAFFF8AF -:1032980014FEF01F001EC3481989301AB6891999FF -:1032A800B6AAEA19FFFFE819FF80B69919B9F40917 -:1032B8001800C0B119CC3038F00C1800E08B0006AB -:1032C800F01F00135C8CC028300C3028AEB83EE8E4 -:1032D800AECCAEE85C7CF8081608AED83008AEF87C -:1032E8003078AC0848B89088EDB80002C08148A88A -:1032F8001ADC48AC1AD8F01F000A2FED302C2FED3D -:10330800D82200000000152C800020D480006D38E1 -:10331800000016A8800378A880037CD8800094C495 -:10332800D421202D4AA81697700512965805C07109 -:10333800FACAFFF814F5F01F0027C4781989301A63 -:10334800B6891999B6AAEA19FFFFE819FF80B69954 -:10335800303819B919C5F40918005F09F0051800C3 -:103368005F881268C19049C8F00503345804C060EA -:10337800089C301BF01F0019C10849989009E809FA -:103388001900C0A449781AD5497C1AD8F01F00172B -:10339800089C2FEDC028300C3018AEB83EE8AECCF3 -:1033A800AED83008AEE83068AC0849189088EDB857 -:1033B8000002C0A148B8201D1ADC48EC1AD51AD85A -:1033C800F01F000A2FCD302C2FEDD8220000152C2D -:1033D800800020D400007B0880004F1C000016A647 -:1033E8008003794080037CEC800094C4000016A818 -:1033F80080037D10D421202D4A181697700E12963E -:10340800580EC071FACAFFF814FEF01F001EC34818 -:103418001989301AB6891999B6AAEA19FFFFE81965 -:10342800FF80B69919B9F4091800C0F119C83039E4 -:10343800F2081800E08B000A4939F2080038300B0E -:10344800701CF01F0012C028300C3018AEB83EE8CF -:10345800AECCAED83008AEE83068AC0848C8908822 -:10346800EDB80002C08148B81ADC48BC1AD8F01F71 -:10347800000B2FED302C2FEDD82200000000152C6A -:10348800800020D400007B0880004F1C000016A894 -:1034980080037A6480037D28800094C4D40149584D -:1034A8009088EDB80002C08149381ADC493C1AD826 -:1034B800F01F00132FED49383009118AF20A18005D -:1034C800C021DC0AB089F01F0010581CC1004898C0 -:1034D80090093008F0091900C025DA0A48681ADC92 -:1034E80048AC1AD8F01F0006301C2FEDD802000097 -:1034F800000016A28003798480037D38800094C47C -:10350800000016AA80019EF880037D54D421202D46 -:103518004B281496700E16971295580EC071FACA59 -:10352800FFF814FEF01F002EC5681989B68919988E -:10353800EA18FFFFE818FF803014B698B6A4F01F09 -:103548000029C3E0E0460025C260E0460026C3200B -:10355800EEC9FFFCE0460024C0F0129AF9380020BA -:103568003009AEB8C058F809070B2FF914CBF00989 -:103578001900CFA3C28830682DACAEB8306A3008C5 -:10358800198B12CB2FF8201C5C88F4081900CF91F6 -:103598003068C19878C8F0091618AEF93049AEC835 -:1035A800AEB9F3D8C108F1D8C208AED9AEE83048F0 -:1035B800C0A8AEB4F9380038AEC83018C048AEB4A8 -:1035C800AECC18983EE91007AEC93009AED92FB86D -:1035D800302CAA082FEDD8220000152C800020D40A -:1035E8008001997CD421202D49F8189670081697E7 -:1035F80012955808C041FACAFFF8C1881988B688D8 -:103608001998EA18FFFFE818FF803019B698306853 -:10361800B6A9B6B81A9CF01F0015581CC0B00A9974 -:103628000E9B0C9CFACAFFF8300814F8F01F001023 -:10363800C1881BD8AEC81BC8AED81BB8AEE81BA83B -:10364800AEF81B98EF6800081B88EF6800093EE891 -:10365800EF68000A3008EF68000B302C30B8AA0871 -:103668002FEDD8220000152C80019128800020D44D -:10367800D421FACD010016961A971A9C173AF01F12 -:103688000025FAC9FF000D88F20800083009F16921 -:10369800FF004A189088EDB80002C08149F81AD78F -:1036A80049FC1AD8F01F001F2FED300849E749FAE6 -:1036B800AE88AE98AEA8AEB8B488109949CA0E9B29 -:1036C8001A9C1A96F01F001B5C5CC040E06C00FF5F -:1036D800C1E849189088EDB80002C1510F8A0FB9A6 -:1036E8000F98B168F1EA11880FAAF1EA1088F3E897 -:1036F8001008201D1AD848981AD648FC1AD8F01F66 -:1037080000092FCD30194898301CB0892C0DD822CB -:103718008002E736000016A280037A7C80037D646D -:10372800800094C400007B2800001528800025A88C -:103738008000C4C080037D84D401F01F0006E068C7 -:1037480000FF581CF00C1710F9BC0001D80200004B -:10375800800199CCD42118971696335CF01F001677 -:103768005827C1F10D980D89F1E910893018F00931 -:103778001900C1710DA80DBA0DC9303BF608180023 -:10378800E0880004300CC04848CBF608033CA96A1E -:10379800ECCBFFFB120A5C7AF01F00091897C028CF -:1037A8003FF7335CF01F0007E06C00FF5817F9BCC7 -:1037B8000001D8228000A30000007B08800053C0CD -:1037C8008000A2E6D421202D581CC4211789F809AD -:1037D8001800C3E1F6C8FFFE1796C170118AF20AF5 -:1037E8001800C131119A3EE9F20A1800C0E149B93E -:1037F800920A3009F20A1900C0841AD84988499CEB -:103808001AD8F01F00192FED3008FACAFFF8300B4C -:1038180014E80C9CF01F00159A3A18973038F006F7 -:103828001800E0880004300CC0484918F006033C32 -:103838005C7A0E9BF01F000F18950C9CF01F000E71 -:103848000E9CF01F000E5815C0310A9CC038E06C61 -:1038580000FF2FEDD8220000000016A28003795C3B -:1038680080037CBC800094C4800072DC00007B086C -:103878008000514080006E188002E28CD401582CE0 -:10388800C13117981789F1E910893018F009190022 -:10389800C0B117C817BA17ACA96A2FBBF00A000A3B -:1038A8005C7AF01F0002DA0A80007380D421581C69 -:1038B800C391580BC0311697C1E81788F80818004B -:1038C800C3411797C33817893018F0091800C13158 -:1038D80017993EE8F0091800C0E1497890093008C6 -:1038E800F0091900C08449581ADB495C1AD8F01F3E -:1038F80000152FED49089088EDB80002C08148F8FE -:103908001AD7491C1AD8F01F000F2FED3038F007CE -:103918001800E08B000848D8F007033CF01F000CA3 -:10392800DA2AE06C00FFD82230072FF8100BCCC140 -:10393800CE2B0000000016A2800379F880037CBC1F -:10394800800094C480037DA800007B088000599CF7 -:10395800D421202D4B981896169414971295908878 -:10396800EDB80002C1314B694B685805F2081700E1 -:10397800201D1AD816985C781ADA1AD84B281ADC3F -:103988004B2C1AD8F01F00322FAD3038F007180032 -:10399800E0880005E06C00FFC8584AE8F0070338E3 -:1039A80050085808C1504A59920A3009F20A1900B9 -:1039B800C0841AD84A484A8C1AD8F01F00252FED1F -:1039C800400CF01F002630094A28F00709391A9CD4 -:1039D800E06A04005016300B1ADC14981AD75C748D -:1039E8001ADB16991AD5089C1ADA169A1AD6F01FF5 -:1039F800001C49282FAD580CC3819088EDB80002EF -:103A0800C1511AD71AD41AD6403850461AD848D8AD -:103A180048B95805F2051700F005171048A81AD537 -:103A2800490C1AD8F01F000A2FAD0E9C400BF01F4E -:103A3800000E301CC3780000000016A280037DC869 -:103A480080037DC4800379C480037DCC800094C446 -:103A580000007B0880037DF88000599C80005D642D -:103A680080037E2480002A689088EDB80002C15146 -:103A78001AD71AD41AD6403850461AD848B848C95E -:103A88005805F2051700F005171048A81AD548ACD4 -:103A98001AD8F01F000A2FAD300948983FFCF007EC -:103AA80009392FEDD822000080037DC480037DC82A -:103AB800800379C480037E50800094C400007B0892 -:103AC800D431584CE081008E580BC2A01785F805F8 -:103AD8001800E081008A179817A7B167EFE81187E7 -:103AE80017B8EFE8108717C8F1E71007C7E80B8980 -:103AF8003018F0091800C7E10B993EE8F0091800E2 -:103B0800C7914C2890093008F0091900C7344C08AF -:103B18001AD54C0C1AD8F01F00402FEDC6B81697CE -:103B28003006C1F80B960BA8F1E610865C86C688AD -:103B380007893018F0091800C72107993EE8F009ED -:103B48001800C6D14B1890093008F0091900C6743E -:103B58004AF81AD34AFC1AD8F01F002F2FEDC5F8DF -:103B68003005C1B80795C61809893018F00918003A -:103B7800C61109993EE8F0091800C5C14A389009EC -:103B88003008F0091900C5644A181AD44A1C1AD812 -:103B9800F01F00212FEDC4E83003C1A80993C50820 -:103BA80009893018F0091800C13109993EE8F0096F -:103BB8001800C0E1495890093008F0091900C0847C -:103BC80049381AD4493C1AD8F01F00132FED06992A -:103BD8000A9AF7D6C0100E9CF01F0010581CC0306F -:103BE800E06C00FFD83230072FF5F6050005C80154 -:103BF800C98B0B833028F0031800C95030062FF307 -:103C0800EA030003C961CADB000016A280037A98A0 -:103C180080037CBC800094C4800039580784301825 -:103C2800F0041800CA0030052FF4E6040004C9D1D6 -:103C3800CB4B09883019F2081800CB1030032FF845 -:103C48001004CAF1CC5B0000D421202D3038169620 -:103C58001494F00B1800E08B0072300750074BA843 -:103C68001188EE081800C0B04B889008EE081900BB -:103C7800C654201D4B684B7C1AD8C0F84B69138971 -:103C8800F0091800C0E14B589008EE081900C56407 -:103C9800201D4AF84B2C1AD8F01F00322FEDC4E82B -:103CA8001A9AE0690400501712981ADAEBDCC0106F -:103CB8001ADB0E9A1AD70E9B1AD40A9C1AD93019F5 -:103CC8001AD7F01F00294A182FAD580CC1B1908897 -:103CD800EDB80002C1114A584A595804F2041700B5 -:103CE800F004171049A81AD64A2C1AD51AD41AD88B -:103CF800F01F001C2FCD0C9C400BF01F001F301C28 -:103D0800C1F89008EE081900C11449884989580477 -:103D1800F2041700F004171048D81AD6497C1AD5AF -:103D28001AD41AD8F01F000F2FCDA17630092FF61C -:103D380049383FFCF0060929C038E06C00FF2FED38 -:103D4800D822000000007B07000016A280037A102A -:103D580080037E80000016AB000016A680037EA0BC -:103D6800800094C480005D6480037DC480037DC8A6 -:103D780080037EB880002A6880037EDC00007B0810 -:103D8800D421583CC661580BC24017843028F0042F -:103D98001800C621179717A8F1E710875C87C5D8C0 -:103DA80009893018F0091800C5D109993EE8F009C9 -:103DB8001800C5814B6890093008F0091900C5241E -:103DC8004B481AD44B4C1AD8F01F00342FEDC4A816 -:103DD80016973006C1B80996C4B80B893018F0098F -:103DE8001800C4B10B993EE8F0091800C4614A886C -:103DF80090093008F0091900C4044A681AD54A6CB9 -:103E08001AD8F01F00262FEDC3883004C1A80B94E0 -:103E1800C3A80B893018F0091800C1310B993EE886 -:103E2800F0091800C0E149A890093008F009190004 -:103E3800C08449881AD5498C1AD8F01F00182FED6C -:103E48000E9C089A0C9B5C7CF01F0015581CC03017 -:103E5800E06C00FFD82230072FF4F6040004CA11E2 -:103E6800CB9B09853018F0051800CB6030062FF57C -:103E7800E8050005CB31CCAB0B883019F2081800E7 -:103E8800CC7030042FF81005CC51CDBB000016A221 -:103E98008003791480037CBC800094C480003C506B -:103EA800D431204D1495740A501A18961788301971 -:103EB800F2081800C771F6C7FFFE1794C1700F8982 -:103EC800F0091800C1310F993EE8F0091800C0E167 -:103ED8004B7890093008F0091900C0844B581AD75C -:103EE8004B5C1AD8F01F00352FED4B189088EDB8B1 -:103EF8000002C0A14AF81AD44B1C1AD61AD51AD8EF -:103F0800F01F002E2FCD3028F0041800E08B004B56 -:103F18003006304030114A624A63C3E80F88E0082F -:103F28001800C4010F990FA8B168F1E911880FB9F9 -:103F3800F1E910880FC92FB7F3E810085807C170C6 -:103F48000F89E2091800C1310F993EEAF4091800F7 -:103F5800C0E18409300AF4091900C0941AD7496CE1 -:103F68001AD35028F01F00152FED400850388489C7 -:103F7800EDB90002C0A11AD84029492C1AD91AD67D -:103F88001AD3F01F000E2FCDF9D6C008FACBFFF4D4 -:103F98002FF6F01F000D0836CC253008301CAAC8B3 -:103FA800C038E06C00FF2FCDD8320000000016A208 -:103FB80080037A4C80037CBC800094C480037F0813 -:103FC80080037F308000C19CD431203D3019149487 -:103FD800189674051788F2081800E0810085F6C75E -:103FE800FFFE1792C1700F89F0091800C1310F99AF -:103FF8003EE8F0091800C0E14BD890093008F009F4 -:104008001900C0844BB81AD74BBC1AD8F01F003B14 -:104018002FED4B789088EDB80002C0A14B581AD20A -:104028004B7C1AD61AD41AD8F01F00342FCD30384A -:10403800F0021800E08B005830064AD04AD1FAC383 -:10404800FFF8C4B80F88304AF4081800C4C10F99A3 -:104058000FA8B168F1E911880FB9F1E910880FC903 -:104068002FB7F3E810085807C1800F89301AF409F0 -:104078001800C1310F993EEAF4091800C0E180091F -:10408800300AF4091900C0941AD749BC1AD150282B -:10409800F01F001A2FED400850288089EDB9000262 -:1040A800C0911AD8497C1AD51AD61AD1F01F001314 -:1040B8002FCD5816C0805826C0B0069B0A9CF01F0A -:1040C8000012C0A8069B0A9CF01F0010C058069B4F -:1040D8000A9CF01F000F2FF60436CB553008301C11 -:1040E800A8C8C038E06C00FF2FDDD832000016A247 -:1040F800800378F080037CBC800094C480037F0830 -:1041080080037F308000CBC88000CA748000CA92C8 -:10411800D421FACD00884C6816979088EDB8000233 -:10412800C0B14C48201D1ADC1AD84C384C3C1AD85F -:10413800F01F00432FCD344A300BFAC6FFFC0C9C0D -:10414800F01F0040306AE06B00FFFACCFFDBF01F85 -:10415800003D0F8A31F8F00A1800E08B008930889A -:10416800EECBFFFFFB68003C0C9CF01F00370F896B -:10417800FB6900244AE89088EDB80002C0A14AE82B -:10418800201D4B2C1AD91AD61AD8F01F002D2FCD66 -:104198000F882FF8FAC6FFB810070C9C0E9B173A29 -:1041A800F01F002BFAC9FF780F88F20800083009C1 -:1041B800F169FFC049E89088EDB80002C0B10F88E6 -:1041C800201D1AD849C81AD64A2C1AD8F01F001C24 -:1041D8002FCD0F8A3018FAC7FFFC3089FACBFFB809 -:1041E8000E9CF01F001D581CC0C0491890093008CB -:1041F800F0091900C3C44908498C1AD81AD8C0E86C -:10420800497CF01F000F0E9C300BF01F001618970A -:10421800581CC080201D1ADC493CF01F00092FEDF6 -:10422800C268492CF01F00060E9CC238000016A276 -:1042380080037A248003787080037F50800094C4C0 -:104248008002E8BC8002E73680037CB08002EE0C76 -:1042580080037F648001908480037F7880037FA03F -:10426800800099A880037FB880037FC0E06C00FFBE -:104278002DEDD822D42120AD4A461697178A31F859 -:10428800F00A1800E08B002FFAC5FFF92FFB0A9CF3 -:10429800F01F001F0F88FAC9FFD8FB680027100914 -:1042A8003008F368FFDF8C88EDB80002C0814998B8 -:1042B8001AD5499C1AD8F01F00192FED300BFACCEB -:1042C800FFF9F01F00171897581CC1B048F890095B -:1042D8003008F0091900C1541ADC48E8491C1AD8FA -:1042E800C0D88C093008F0091900C0353FF7C098CC -:1042F800201D488848CC1AD83FF7F01F00082FED3A -:104308000E9C2F6DD8220000000016A28002E7360E -:10431800800378E080037B18800094C4800099A80B -:1043280080037D5480037FC4D431216D4D281697B6 -:104338009088EDB80002C0B14D08201D1ADC1AD8CB -:104348004CF84D0C1AD8F01F00502FCD321AFAC66F -:10435800FFFD300B0C9CF01F004D0F8A31F8F00A5E -:104368001800E08B0085EECBFFFF0C9CF01F004887 -:104378000F88FB6800234C089088EDB80002C081C4 -:104388004BF81AD64C3C1AD8F01F003F2FED0F8679 -:104398002FF6EE060006FAC7FFAC0C9B0E9C173AE8 -:1043A800F01F003D0D88FAC9FFA8F20800080E9C0E -:1043B8003003F163FFFCF01F00393038EFDCC00830 -:1043C8000D89F00718005FB53018F00918005F185C -:1043D80010450A94E6051800C4A1ECCBFFFDFAC30A -:1043E800FFDC2FE6069C0D8AF01F002B0D88FAC90A -:1043F800FFA8F2080008069BF165FFCCFAC5FFC0CC -:104408000A9CF01F002730D81896F00C18005F1986 -:104418003058F00C18005F18F3E80008E808180096 -:10442800C261FAC4FFB2306AE06B00FF089CF01F5B -:1044380000170C9B08990A9A0E9CF01F001A0E9CF4 -:10444800F01F0019300BFACCFFFDF01F0018581CA4 -:10445800C100489890093008F0091900C0844888BC -:104468001ADC493C1AD8F01F00082FEDE06C00FF59 -:104478002EADD832000016A280037888800379AC6C -:1044880080037F50800094C48002E8BC8002E73635 -:1044980080037FE48002EE0C8002DC2C80009868A8 -:1044A8008001927080019258800099A880037D5401 -:1044B800D401319CF01F0010E06B00EFFE7C280057 -:1044C800F01F000E581CC060FE7C2800F01F000C76 -:1044D800CFC0319CF01F000B48B890093008F00994 -:1044E8001900C0844898201D489C1AD8F01F00095C -:1044F8002FEDD8028000A3008000A7FA8000A7F261 -:104508008000A2E6000016A28003790880037FF0ED -:10451800800094C4D431202D3008FAC7FFF81696CD -:10452800189514930EE81694098B0A9C2FF4F01F23 -:104538000009581CC0B00E9B0A9CF01F0007089881 -:104548000C18E6081900CF13300C2FEDD8320000F4 -:104558008000A7FA8000A816D421202D30081496D0 -:10456800F80C002C129AFAC9FFF812E84A88F00CE5 -:10457800002C169578280C9B0A9C5D184A583049DF -:10458800319C9109F01F00249ABA0C9BFE7C2400F0 -:10459800F01F00221897319CF01F00214A189088BC -:1045A800EDB80002C0414A0CF01F002049D890889D -:1045B800EDB80002C0D149E8201D49EC1AD8F01F17 -:1045C800001B49D80A9C908BF01F001C2FED4958FE -:1045D8009088EDB80002C041499CF01F00144918AA -:1045E8009088EDB80002C0C14918201D491C1AD88E -:1045F800F01F000E9AFB0C9CF01F00102FED9A394B -:1046080049080E9CB0092FEDD8220000000011E0E7 -:10461800000011B88000A3008000451C8000A2E6BD -:10462800000016A080038008800094C480037800EE -:1046380080037C84000011BE80013DB48003800C9F -:10464800000011BCD431202D4BC43048E8C3FFF022 -:10465800BAF81897199616910C90F8C2FFFD2FC456 -:104668003005E21000400988EC081800C4B107883A -:104678003029F2081800C1F10A9C4B08EA05002508 -:10468800029AF00500240E9BE8C5FFF46839F01F74 -:10469800002CC030301CC4E868086A0A049B0FACC0 -:1046A8005D18BAFCE216004030181BF9F009180032 -:1046B800C3C1C3D85800E00A1700F9BA0100E8F8E6 -:1046C800FFFC049B0FAC5D18BAFC30190788F20890 -:1046D8001800C0B10A9C4998EA050025029AF0051D -:1046E80000250E9B6A39C0A83049F2081800C0A1FD -:1046F800029A0E9B0A9CFAC9FFF9F01F0011C170BB -:10470800C1882FF52EC42EC3E0450024CAD148D84D -:1047180090093008F0091900C08448B81AD648BC76 -:104728001AD8F01F000B2FED302CC048304CC02891 -:10473800300C2FEDD8320000000011E080004560F9 -:10474800000016A28003789880038010800094C42B -:10475800D421202D4BD8910C30094BD8118AF20A5C -:104768001800E08000DAB08930085018E1B800007D -:10477800EE180001F5D8C201C020D303FE7824004A -:104788003019706BF7D9D001916B706BF7D9D0C124 -:10479800916B706BF7D9D081916B580AC020D50303 -:1047A8004AC7FACAFFFC6E0B4ABCF01F002C1896C9 -:1047B800C6E04AB8303A6E09910A401B4A98161961 -:1047C800B009E06A03FFF4091900E0880005E06910 -:1047D8000400B0094A064A37EC0B000B4A2C8E8AB3 -:1047E800F01F002230084A2BAC8849FCF01F00213A -:1047F800584CC2204A089088EDB80002C0C149F858 -:10480800201D49FC1AD8F01F001F8E8B496CF01F21 -:10481800001E2FED49889088EDB80002C0D1497874 -:10482800201D497C1AD8F01F00174988490C908B25 -:10483800F01F00152FED4879300893084899B20801 -:1048480048799308C46800000000152C0000151C66 -:10485800000014B0000014B880002D70000011B8DA -:10486800000011BE00000DB88002E736000009B84C -:104878008000464C000016A0800379D880037C8411 -:10488800800094C480013DB4000011BCF01F0024D6 -:104898004A489008EC081900C0A44A3890881AD8E9 -:1048A8004A284A3C1AD8F01F00232FED4A289009BD -:1048B8003008F0091900C0644A084A1C909BF01F90 -:1048C80000214A19300893084A09B20849C9B28830 -:1048D800E06B0120FE7C0D80F01F001DE1B8000098 -:1048E800EE180001F5D8C201C020D303FE782400D9 -:1048F8003019705BF7D9D001915B705BF7D9D0C1E3 -:10490800915B705BF7D9D081915B580AC020D503C1 -:10491800319CF01F00102FEDD8220000800044B811 -:10492800000016A2000014B4800379D88003802CFC -:10493800800094C4000016A6000014B0000014B84B -:1049480080013DB4000011B8000011BE8000A20033 -:104958008000A300D431207D4B6730054B664B782F -:104968001188EA081800EC081710EE0817004B4CDD -:104978001AD8F01F00344B481188EA081800EC07D1 -:1049880017104B2C50074B2230074B23F01F002DDC -:104998000E942FED4B01CBD86A005800E08000B28E -:1049A80080286009201D1AD95028F01F002C602A81 -:1049B8002FFD580AE60A1700E20A171040185C781B -:1049C80060491AD84A681ADC1ADA4A6A5809F40996 -:1049D8001700F00917104A4C1AD91AD01AD61AD744 -:1049E800F01F001860482F8D5808C431E0C9FFBC7B -:1049F800720A580AC0E0744B201D49CC1ADB1ADA37 -:104A08001AD850595048F01F000F2FCD40084019B0 -:104A18002FF82FC95848CED161585808C610704988 -:104A2800493C1AD91AD8F01F00072FEDC598000085 -:104A3800800380548003805C000016AB8003806094 -:104A4800800094C400007B078003807400007B080A -:104A580080037BE480037BDC800096A880037DC410 -:104A680080037DC880038088800380B8800380D05D -:104A780061E85808C350F11900127008201D1AD8AF -:104A8800507850395028F01F002761EA2FFDF53B78 -:104A9800001040291AD940281AD81ADC4A2C1ADBE7 -:104AA8001ADA50B8F01F0021FACAFFE00C9B5084B4 -:104AB800FB5400240E9CF01F001E2FBD40305050A8 -:104AC8001AD0FB1800145028F01F00162FFD4018AC -:104AD8001AD81AD01ADC497CF01F00142FCD0E9C6E -:104AE800F01F001549594968580CF2081710201D85 -:104AF800494C1AD8F01F000D493CF01F000C2FED4F -:104B08002FF62FC55826FE91FF492FF75847C0505A -:104B1800E40700353006C41BF01F000C2FADD83257 -:104B2800800096A8800380E8800094C4800021C893 -:104B380080038114800070788003812C8003812891 -:104B480080038130800381408000D680D431204D9D -:104B58004BE812911896169711895809C1A119881E -:104B6800B6881998EA18FFFFE818FF80B6C9B69802 -:104B7800B6A93EE8B6B83048A2084B589088EDB8B8 -:104B88000002E08100E7201D4B284B3C1AD8C228C0 -:104B9800FACCFFF4F01F0031403366105800C1E131 -:104BA8000D88AE880D98EA18FFFFE818FF80AEA0C0 -:104BB800AE9830093EE8AEC9AEB83048A2084A48B7 -:104BC8009088EDB80002E08100C5201D4A184A4CC3 -:104BD8001AD8F01F00242FEDCBC858B0F9B0020A3C -:104BE80030044A12C0786408F004032C2FF4F01F34 -:104BF800001F641849C51034CF736A0C3004F01FC5 -:104C0800001B8B14661B580BC460A36B301CF01F71 -:104C180000188B0CC3A1497CC1486608F002030B3D -:104C28006A080408501B5008F01F00134008910C34 -:104C3800401B6A082FF4F002030C580CC20148FC10 -:104C4800F01F0008C2880000000016AA000016A283 -:104C58008003783C8003816080018F048003817C1D -:104C6800800094C4000015208002E28C8002DC3CA5 -:104C7800800381988002E2A4800381C0344AF01F37 -:104C880000376A182FF88B18E8021502344C66189A -:104C98001034CC430D88AE880D98EA18FFFFE81849 -:104CA800FF803005AE98AEA030364AD20A984AD96D -:104CB8000E93640AEA0B1502F40B030AF537002079 -:104CC800F4070B08ECCCFFFF2FF7E60C000C5C5741 -:104CD800300AE6060B07C0886404E80B0304E80AF8 -:104CE80007042FFA18C40E9EEE0A1900CF630E9A15 -:104CF8002FFAF4060006928A5C56EDBA0002C1D17A -:104D0800640A202DF40B0304503950281A9C306A89 -:104D1800E8CBFFDFF01F001168CA1ADAE93A003859 -:104D28001ADA491A1AD7491C1AD41AD51ADAF01FEE -:104D380000102F8D400840192FF50035CBB53EE8FF -:104D4800E6060B08069730080C07AE982FF6A20661 -:104D5800302C2FCDD83200008002E7360000152015 -:104D6800000016A28003783C800381E4800094C48C -:104D780048781188580CC0215EFF5C68100C300818 -:104D8800F9390015F00918005F1C5EFC00001530A9 -:104D9800D4211897580CC2A04968F129000030089E -:104DA800F2CA0004F00900065836F5D8E9062FF8CB -:104DB800EE06002C791C163CC17148F89088EDB8B5 -:104DC8000001C0A148D81ADB48DC1AD61AD71AD86D -:104DD800F01F000C2FCDF9D6C00830082F06EE06BC -:104DE80000278F18D8225848CDE1E06C00FFD82260 -:104DF80000001530000016A2800382688003830437 -:104E0800800094C4D42118971695580CC2B04978DC -:104E1800F12900003008F2CB0004F00900065836EA -:104E2800F7D8E9062FF8EE06002A751A580AC03096 -:104E38000A3AC16148E89088EDB80001C0A148D895 -:104E48001AD548DC1AD61AD71AD8F01F000C2FCD5D -:104E5800EE060027F9D6C008EF450044D822584886 -:104E6800CDD1E06C00FFD82200001530000016A25A -:104E780080038CF080038304800094C4D4211897A5 -:104E8800580CC2A049E8F12A00003008F4CC00040C -:104E9800F00A00065836F9D8E9062FF8EE06002978 -:104EA80073195809C170580BC0F049689088EDB85B -:104EB8000001C0A149481AD9494C1AD61AD71AD89C -:104EC800F01F00132FCDEE06002748D8B0866F1CC0 -:104ED800D8225848CDE1580BC10048A8900930089D -:104EE800F0091900C0A448881AD748AC1AD8F01F8E -:104EF8000008300C2FEDD822D82A00000000153009 -:104F0800000016A280038CB880038304800094C438 -:104F180080038324D4214CB816951188189730063D -:104F2800EC081800E08000B6300BF01F004718941A -:104F38005807E0800097580C5F19EC0518005F08C7 -:104F4800F3E81008EC081800E080008C4BF8908813 -:104F5800EDB80002C3314BE811894BE89088EDB8F1 -:104F68000001C2C15C69EE09002871185808C041E7 -:104F7800109E1096C098EE09000AF53E0015F2CA78 -:104F8800FFF8EE0A03266F5A201D580AF40C170082 -:104F9800F5FC10045808F00B1700F1FB10041ADE9A -:104FA8001AD61ADC1ADA1ADB1AD84AB81AD74ABC3F -:104FB8001AD91AD8F01F002A2F6D5805C3D068488F -:104FC80058485F1958085F181268C3304A08118991 -:104FD8004A089088EDB80001C2C15C69EE09002852 -:104FE80071185808C04110951096C098EE09000A2B -:104FF800F5350015F2CAFFF8EE0A03266F5A201D90 -:10500800580AF40C1700F5FC10045808F00B1700A8 -:10501800F1FB10041AD51AD61ADC1ADA1ADB1AD8D8 -:1050280048D81AD748DC1AD91AD8F01F000D2F6DA6 -:10503800E93C0013D8226F58F13C0013D822000035 -:10504800000016AB80004E84000016A80000153042 -:10505800000016A28003828C80038348800094C4D9 -:1050680048D890093008F0091900C1345807EE08EB -:105078001700EE041700EFF810151AD848781AD45C -:10508800487C1AD71AD8F01F0007300C2FCDD82229 -:10509800D82A0000000016A88003828C8003838C25 -:1050A800800094C4D421580CC25049D8F12900007A -:1050B8003008F2CA0004F00900075837F5D8E907A4 -:1050C8002FF8F807002E7D1E163EC12149589088FA -:1050D800EDB80001C0A149481ADB1AD71ADC493CCF -:1050E8001AD8F01F00132FCD0E9C5C5CD8225848AC -:1050F800CE31490890093008F0091900C045E06C24 -:1051080000FFD8224888201D1ADB1ADC48AC1AD8C0 -:10511800F01F0007E06C00FF2FCDD82200001530EB -:10512800000016A6800382BC80038304800094C418 -:10513800000016A2800383C0D421580C5F18580BB6 -:105148005F1918961695F3E800081494C590580A44 -:10515800C5704AC89088EDB80001C0C114985C7841 -:10516800201D1AD84A881ADB4A8C1AD8F01F002842 -:105178002FCD4A889088EDB80001C0D14A28201D5B -:105188004A5C1AD8F01F0022089B0A9C5C7BF01F1F -:1051980000232FED300A5C74149C089BF01F00203C -:1051A8001897C0E149789008F8081900C29449682E -:1051B8001AD649CC1AD8F01F00162FEDC1C8089A84 -:1051C8000A9B781CF01F00180E9B6DECF01F00174F -:1051D8005C5CC12048B890093008F0091900C08407 -:1051E80048981AD6492C1AD8F01F00092FED0E9CA2 -:1051F800F01F0010DC2A0E9CF01F000EDA2ADC2AB1 -:10520800000016A280038CE4800383E8800094C425 -:10521800000016A080037C8480013DB48000D31870 -:10522800800383FC8002E7368001153880038428D8 -:105238008000D13CD421149518971696580CC0417B -:10524800E06C00F6D822F01F00163FF8E9DCC00831 -:10525800F0041800C041E06C00FFD822491890887B -:10526800EDB80001C0E16C48201D1AD848E85C651B -:1052780048EC1AD51AD61AD71AD8F01F000D2FAD38 -:105288006C4858485F0948B8B0893008EE040004F3 -:10529800E9680068F01F00088F7CD82A800050ACAD -:1052A800000016A280038D1080038450800094C4EF -:1052B80000007B0780009504D43118971695F01FDD -:1052C80000353FF8EDDCC008F0061800C5E0EE0632 -:1052D80000083009F1690015ECC8FFF8EE0803244E -:1052E8005804C5304AC89088EDB80001C0A14AB832 -:1052F800201D4ABC1AD41AD41AD8F01F002A2FCD60 -:10530800EB1800726EF91238F20817B00838F0047A -:1053180017804A589088EDB80001C051F01F00234B -:105328004A38910CECC8FFEA3019EE08032B089AAA -:105338000A9C5C7AF01F001FE7DCC008C19049A8EE -:105348009088EDB80001C0F16A48201DF3D3B00879 -:105358001AD91AD41AD849181AD5497C1AD8F01F5C -:1053680000112FAD0C073008EF680015C10830197F -:10537800ECC8FFF8EE060006ED690015EE080329F3 -:105388000819EE080929C038E06300FF069CD832E6 -:10539800800050AC000016A680038C7880038474CB -:1053A800800094C4000016A2800095040000153403 -:1053B800800109C08003848CD43116941493189703 -:1053C800580CC1014AB89008F8081900E08400D3C5 -:1053D8004A98201D4A9C1AD8F01F00293FFC2FED3F -:1053E800D832300BF01F0027189B18960E9CF01F20 -:1053F80000263FF8EBDCC008F0051800E08000BB91 -:105408004A289088EDB80001C0E1F1D3C010201DF2 -:105418001AD849981AD449EC1AD61AD71AD8F01FAC -:1054280000182FAD49B89088EDB80001C0D14928BF -:10543800201D499C1AD8F01F0012F7D3C010089CF1 -:10544800F01F00162FED49189088EDB80001C4B17F -:105458004938118948789088EDB80001C4415C69E1 -:10546800EE09002871185808C1C11092109EC21880 -:10547800000016A280038D20800384C0800094C49D -:1054880080004E84800050AC000016A6800384D8AB -:10549800000016A080037C8480013DB40000153014 -:1054A800EE09000AF5320015F2CAFFF8EE0A032EDB -:1054B8006F5A201D580AF40C1700F5FC1004580800 -:1054C800F00B1700F1FB10041AD21ADE1ADC1ADAF4 -:1054D8001ADB1AD84A881AD74A8C1AD91AD8F01F50 -:1054E80000282F6D5806C46058045F183009F2036D -:1054F80019005F1AF5E80008F2081800C3B0EAC8F6 -:10550800FFEAEE08032C580CC3506C4858785F0B20 -:1055180058485F0AF7EA100AF20A1800C0515828DA -:10552800C0305838C2715C73089B069AF01F00158A -:10553800EAC9FFEA300AEE090328F0030B0A4928F2 -:105548009088EDB80001C0A1EE0903281AD848A830 -:1055580048EC1AD8F01F000A2FED48DB0C9C2F8569 -:10556800EE050923F01F000B0C9B0E9CF01F000A90 -:10557800DA3ADC3A80038D2080038348800094C4A3 -:105588008002E736000016A6800384FC800055A040 -:105598008000D662800052C0D431149518971696B0 -:1055A800580CC041E06C00F6D832F01F001D3FF8DF -:1055B800E9DCC008F0041800C041E06C00FFD832F4 -:1055C8003009EE040008F16900683019F169001526 -:1055D80049489088EDB80001C171E8C8FFF8EE08A5 -:1055E8000323F01F00114918201D1AD37008F8086A -:1055F80001081AD848E85C7548EC1AD51AD61AD8A2 -:10560800F01F000D2FAD2F84EE04032C580CC06042 -:105618000C9B0E9CF01F0009300CD832800050AC57 -:10562800000016A2800095040000153480038D50F8 -:1056380080038508800094C4800052C0D421189744 -:10564800580CC1C0F01F000E18965BFCC060EF3B01 -:10565800000B5C5CF01F000B48B89088EDB80001A7 -:10566800C0A148A8201D48AC1AD61AD71AD8F01FCE -:1056780000092FCD30094888B089D82280002044FD -:1056880080002068000016A280038D3C80038538C6 -:10569800800094C400007B07D4314898189711897A -:1056A80048889088EDB80001C3015C69F8090028B2 -:1056B80071185808C08110951096C0D80000153090 -:1056C800000016A2F809000AF5350015F2CAFFF81D -:1056D800F80A03266F5A201D580AF40C1700F5FC27 -:1056E80010045808F00B1700F1FB10041AD51AD64D -:1056F8001ADC1ADA1ADB1AD84C281AD74C2C1AD901 -:105708001AD8F01F00422F6D0E9C3005F01F004084 -:10571800EEC6FFBC0A924BF34BA45C5CF01F003E44 -:105728006C08300B2FF5109C5808C1D0F01F003BB7 -:105738006C0C300BF01F003A6C0C300BF01F00396A -:105748006C0C300BF01F00388688EDB80001C0B132 -:10575800201D1AD26C0870484B4C1AD81AD4F01F66 -:10576800002B2FCD2FC65845CDC16F5C580CC1D02A -:10577800300BF01F002A300B6F5CF01F002D6F5CA0 -:10578800F01F002C4A385C5C9088EDB80001C0D14D -:10579800201D5C6C1ADC6F5870481AD849984A6CFE -:1057A8001AD8F01F001A2FCD6FEC580CC060F01FEC -:1057B80000236FECF01F00224A28F1260000495808 -:1057C8009088EDB80001C0E1ECC8FFEAEE080328B4 -:1057D800201D1AD848B81AD649BC1AD8F01F000B91 -:1057E8002FCD2EA6EE06032C580CC060F01F001714 -:1057F8003008EE0609280E9CF01F0014D83200006D -:1058080080038CC880038348800094C480002044AF -:10581800000016A280006F288000D6588000D6624B -:105828008000D65C8000D668800385608000D66ED4 -:105838008000E50480038588800111C88001122852 -:1058480000001530800385B08002E28CD4211897BF -:10585800580CE080007EF01F00413FF8EDDCC008E6 -:10586800F0061800C750EE0600287114089CF01FB7 -:10587800003CEBDCC008C0D10A9B089CF01F003933 -:105888000A9B089CF01F00380A9B089CF01F0037F1 -:105898004B789088EDB80001C0D1F1D5B0081AD87E -:1058A80068481AD84B381AD44B3C1AD8F01F003322 -:1058B8002FCD4AF43FF8F0051800C1718809300867 -:1058C800F0091900C0D4EE0600287118201D1AD856 -:1058D8004AB81AD64ABC1AD8F01F00282FCD0C0790 -:1058E8003018EF68006CC368EE0600083009F169EB -:1058F800006CEE0600280E9C711BF01F00238888A0 -:10590800EDB80001C0E1ECC8FFEAEE080328201D4D -:105918001AD849B81AD649DC1AD8F01F00182FCD62 -:105928002EA6EE06032C580CC060F01F0019300894 -:10593800EE06092848E89088EDB80001C0B149088A -:10594800201D494C1AD8F01F000D2FEDC038E06516 -:1059580000FF0A9CD8220000800050AC8000E504BB -:105968008000D6588000D6628000D65C000016A25F -:1059780080038D2C800385CC800094C480038CD850 -:10598800800385F880004D98800385B08002E28C02 -:1059980080038624D4211897580CC0E14BE890085E -:1059A800F8081900C7744BD8201D4BDC1AD8F01F13 -:1059B800003D2FEDD82278264BB85806C121F12595 -:1059C8000000F01F003A0E9CEF34000BF01F003867 -:1059D800089B5C5CF01F00370A07EF660068D82256 -:1059E80011894AD89088EDB80001C2C15C69F809EC -:1059F800002871185808C04110951096C098F809E9 -:105A0800000AF5350015F2CAFFF8F80A03266F5A9E -:105A1800201D580AF40C1700F5FC10045808F00B68 -:105A28001700F1FB10041AD51AD61ADC1ADA1ADB99 -:105A38001AD849A81AD74A0C1AD91AD8F01F001927 -:105A48002F6D4998F1260000ECC5FFF0EE05002502 -:105A58006A1C580CC1F078485898C1C05808C1A0B1 -:105A6800F01F001648C85C5C9088EDB80001C0C102 -:105A7800201D5C6C1ADC6A181AD84888490C1AD898 -:105A8800F01F00082FCDEE0600260E9C6D1BF01FA0 -:105A9800000DD822000016A2800382988003864455 -:105AA800800094C400001530800056A08000204477 -:105AB800800020688003834880010CEC8003865CAA -:105AC80080005854D4214B0818979009169630082E -:105AD800F0091900C0F44AD8F12800001AD8F1DBFF -:105AE800B0081AD84AA81ADC4AAC1AD8F01F002AFB -:105AF8002FCD4AA811893008F0091800C0414A8CF6 -:105B0800F01F00253FB8F0061800C3C15807C110A0 -:105B180049E830091188F2081800C0B53039F20890 -:105B28001800E08900075C68EE080028711BC0288F -:105B3800300B0E9CF01F001B49389088EDB800010F -:105B4800C1114928F1280000201DF0C9FFEAEE091B -:105B580003291AD91AD848E8493C1AD8F01F000E68 -:105B68002FCD48A6ED2800002EA8EE08032C580CCF -:105B7800C090F01F000EED28000030092EA8EE0896 -:105B88000929D822000016A200001530800382A837 -:105B980080038680800094C4000016AB800386B41E -:105BA80080004D98800385B08002E28CD42118973C -:105BB8001696580CC4E04A8890093008F009190074 -:105BC800C0C4F1DBB0081ADC1AD84A481ADC4A4CBF -:105BD8001AD8F01F00242FCD4A3811893008F0094F -:105BE8001800C0414A1CF01F001F3FB8F0061800FB -:105BF800C301499890093008F0091900C084497810 -:105C08001AD749BC1AD8F01F00172FED0E9CF01FA9 -:105C180000194998F126000048F89088EDB800016D -:105C2800C0E1ECC8FFEAEE080328201D1AD848B8DE -:105C38001AD6492C1AD8F01F000B2FCD2EA6EE0627 -:105C4800032C580CC060F01F000E3008EE0609281F -:105C5800D8220000000016A2800382D0800386C8E4 -:105C6800800094C4000016AB800386B4800386F8D5 -:105C78008000564400001530800385B08002E28C15 -:105C8800D4311897149678CC94CAF80A000A8FCAA7 -:105C98001093169512946E385808C1504A5CF01F3C -:105CA8000026EF18001A3509F0090D083008F00928 -:105CB8001900C0414A1CF01F0020EF08001A2FF8F5 -:105CC800EF58001A49E89088EDB80001C171202DFD -:105CD800304A1A9C089BF01F001BF01F001BEF386E -:105CE8000014F3D3C01050091ADC1AD849781AD610 -:105CF800497C1AD8F01F00102FAD0A9AEF3B001408 -:105D08000C9CF01F001409890998B168F1E9118801 -:105D180009A9F1E9108809BBEF3C0014F5D3C010BC -:105D2800104BF01F000D0C9CF01F000CD832000027 -:105D380080037FB4800094C4800384D4000016A23A -:105D48008002E736800096A88003827C800387184B -:105D580080007130800020088000D13CD431204D73 -:105D6800502C503BFAC4FFCC10916800681268238D -:105D780068386846129568545819E088000E4B58E0 -:105D880090093008F0091900E08402B0201D4B2862 -:105D98004B2C1AD8C2F85801C0C14AE89008E2084A -:105DA8001900E08402A3201D4AB84ADC1AD8C22888 -:105DB8005802C0C14A789008E4081900E0840296A5 -:105DC800201D4A584A7C1AD8C158501A500837CB57 -:105DD800301CF01F0025401A18974008C10149D807 -:105DE8009008F8081900E0840281201D49A849FCA0 -:105DF8001AD8F01F001F2FEDE08F0278402999383C -:105E0800B829300840395C729900B831992599DA77 -:105E180099E999F29943F9480050F9480044F9483A -:105E28000048F948004C5803E080008C3058F95875 -:105E38000074F01F0010EF4C00784865580CC1D171 -:105E48008A08F8081900E084020C1AD748A8C8582C -:105E5800000016A280038CA880038744800387640F -:105E6800800387848002DC3C800387A8800094C478 -:105E780080011200800382F88A88EDB80001C131E0 -:105E88006E08201D8EA51AD8F01F00366FE8500541 -:105E98001ADC1AD84B481AD84B484B5C1AD8F01F52 -:105EA80000352FAD6E258EAA6FEC5805C1210E9BCB -:105EB800F01F00315C5CC2504B089008EA081900DA -:105EC800E08401CF1AD74A984ADC1AD8E08F0175C6 -:105ED8004ACBF01F002DF5DCC008C0E04A789009D5 -:105EE8003008F0091900E08401BC201D5C6A49F8FB -:105EF8001ADA1AD7C499EF3C0014149BF01F002338 -:105F08006FEC0E9A4A2BF01F002349C8908CE21CB4 -:105F18000002E08001A76FE8F11900141AD970197E -:105F28001AD9F11900121AD970081AD848E81AD8DB -:105F380048E8499C1AD8F01F000F2FADE08F018F59 -:105F4800F01F00161892C2F148C89008F808190006 -:105F5800E08401871AD749281AD8492CC2D90000E9 -:105F6800800096A88003825C800382F88003880CF6 -:105F7800800094C480011320000016A280038824A6 -:105F88008003B409800112608000200880005C88CA -:105F9800800111F8800388848000E34080038C6CC2 -:105FA800800387E04B880E9BB083F01F0038EF63B7 -:105FB800006FEF63006CEF63006DEF63006E6E2897 -:105FC8004B355808E08100BD049B0E9CF01F003142 -:105FD800E7DCB0086EFCF01F0030E6C8FFEAEE0808 -:105FE800092C8A88EDB80001C0A14AC8201D1ADC16 -:105FF8004ABC1AD31AD8F01F002B2FCD2EA34A451E -:10600800EE0303285808C0B18A09F0091900E08492 -:1060180001281AD74A184A4C1AD8CCE84A3B049C9B -:10602800F01F00234A3B049CF01F00234A3B049CBA -:10603800F01F0023304A4A3B049CF01F00234A38D3 -:106048003009B0898A88EDB80001C0C1EE03032881 -:10605800201D1AD849181AD249DC1AD8F01F001185 -:106068002FCD4898118948A89088EDB80001C5310E -:106078005C69EE09002871185808C2B11093109590 -:10608800C3080000000015308000D658000016A292 -:1060980080004E0C8002E2A480038C6C800388A8E8 -:1060A800800094C4800388C480005BB48000D668F4 -:1060B800800069888000D65C800055A08000D66288 -:1060C800800067B48000D67200007B07800388F4E4 -:1060D800EE09000AF5330015F2CAFFF8EE0A0325A7 -:1060E800201D5808F00B1700F1FB10046F5A580ACE -:1060F800F40C1700F5FC10041AD31AD51ADC1ADAB6 -:106108001ADB1AD84B681AD74B6C1AD91AD8F01F51 -:1061180000362F6D049C4B598EAA0E9BF01F00343D -:106128005C5CE080009F4B3890093008F00919004A -:10613800E08400971AD74AA84AFC1AD8C3D88A8894 -:10614800EDB80001C0F1301B0E9CF01F002C6F58F9 -:106158001ADC1AD84A281AD74A9C1AD8F01F0022E3 -:106168002FCD8EAA4A7B049CF01F00275C5CC120BF -:106178004A0890093008F0091900C724201D5C6CF2 -:1061880049781ADC1AD71AD84A0CF01F00172FCDF5 -:10619800C678049CE06B00FFF01F001DEF4C005414 -:1061A8004945580CC0D18A08F8081900C5941AD76F -:1061B80048B8498C1AD8F01F000C2FEDC5188A88EA -:1061C8004959E21800021389C4505C69EE09002895 -:1061D80071185808C2211095109BC27880038C6CE6 -:1061E80080038348800094C48000523C8000E350C0 -:1061F800000016A28003891080004E84800389382D -:106208008003B4098000D7708003884C8000DC04C8 -:106218008003896400001530EE09000AF535001581 -:10622800F2CAFFF8EE0A032B7843201D5808F00A3B -:106238001700F1FA10041AD51ADB1AD31ADC1ADA85 -:106248001AD84AC81AD74ACC1AD91AD8F01F002B1C -:106258002F6D4ABB6F5CF01F002B300CC0283FFC31 -:106268004A95580CC0E08A093008F0091900C3A4FF -:106278004A68201D4A6C1AD8F01F00202FEDC32849 -:106288008A88EDB80001C2914A284A396E204A31FD -:106298005800F2001700F00017108E226E484A09C5 -:1062A8006EF35808F20117108E355818C0316FEC8C -:1062B800C058301B0E9CF01F001B49481AD05C7256 -:1062C8001AD15C751AD21AD31AD51ADC496C1AD7A6 -:1062D8001AD8F01F000A2F8D8907EF660014300CBA -:1062E800C0580E9CF01F00113FFC2FCDD832000083 -:1062F80080038C6C80038348800094C480006434DD -:106308008000D66E000016A280038CA880038988BE -:1063180080037BDC80037BE480037DC880037DC42D -:1063280080004E84800389A8800056A0D431203D87 -:10633800300730194B38E06504001892169191091E -:10634800E06007D00A9350070E964AF4C22826CC7C -:1063580058ACE08B001F4ADEFC0C032F3016C198A6 -:106368003006C178680CF01F002AE7DCB010C118AD -:1063780030185008C0E8680CF01F0025EBDCB0109E -:10638800C0883017C068680CF01F0021E1DCB0102D -:106398004A0A029B049CF01F00205BFCCD91580622 -:1063A800C161498870080438C0A4E208032BFACCFC -:1063B800FFF8F01F001A402B580BC0A14988201D78 -:1063C800498C1AD8F01F00182FEDC198300B502BAC -:1063D800F1D5C0100C99FAC5FFFC300650161AD535 -:1063E8001AD6402E5C731ADEF9D0C0101AD70C9A50 -:1063F8001AD31ADB0C9BF01F000D2FAD2FDDD83AF6 -:1064080000007AB800007AC0800382208002DC2C69 -:10641800800389E08002E278800098FC0000000C8C -:10642800800389EC800094C480005D64D4211897AF -:106438001696580CC041E06C00F6D8224C1890888B -:10644800EDB80001C0A14C08201D1ADB1ADC4BFC7A -:106458001AD8F01F003F2FCD4BA89088EDB8000147 -:10646800C0F16C481AD8ED1800241AD8ED18001C91 -:106478001AD84B584B7C1AD8F01F00352FCD0C9BDF -:106488000E9CF01F0035EDDCB008ECC8FFEAEE0802 -:1064980003285808C0804B18201D4B1C1AD8F01F21 -:1064A800002C2FED6EFCF01F002FECC8FFEAEE0861 -:1064B800092C4A489088EDB80001C0A14A28201D3F -:1064C8001ADC4A9C1AD61AD8F01F00212FCDECC826 -:1064D800FFEAEE0803285808C10149A99209F00902 -:1064E8001900C08449881AD74A0C1AD8F01F001816 -:1064F8002FEDE06C00FFD8220E9B2F06EE0600263B -:106508006C1CF01F001B49BB6C1CF01F001B49BB17 -:106518006C1CF01F001B6C1C304A49ABF01F001AA2 -:106528000E9CF01F001A583CE08B00075C5C300A98 -:106538000E9BF01F0017F01F00178F7CD82A000051 -:10654800000016A2800382E8800389F0800094C4CA -:1065580080038A1480004E0C80038A3880039DC013 -:106568008002E2A4800388A8800388C48000D658EB -:10657800800069888000D65C80005ACC8000D6688C -:106588008000659C8000D6728000204480002A002C -:1065980080009504D43118971695580CC041E06CCA -:1065A80000F6D832F01F00473FF8EDDCC008F006CF -:1065B8001800C041E06C00FFD832ECC8FFF8EE08C4 -:1065C80003285808EFD6E108F1F91868F7B901FF70 -:1065D800F1F91E68EE0600083049F1380068F20843 -:1065E8001800E088001E4B89920A3009F20A190047 -:1065F800C0A41AD84B581AD74B5C1AD51AD8F01F12 -:1066080000352FCD0C070A9C3006301BEF6600685A -:10661800F01F0031E06C00FBEF66006CD8325805C3 -:10662800C1504AE89088EDB80001C101EAF800A815 -:106638001AD8EAF8009C1AD8EB3800AD1AD84A38AC -:106648004A7C1AD8F01F00232FCDECC8FFF8EE08BB -:1066580003245804C1D049C89088EDB80001C1810D -:10666800EE060008301BF1330068F132006C0E9C16 -:10667800F01F001C4958201D1AD41AD21AD31AD751 -:106688001AD51ADC498C1AD8F01F00122F8D0A9BD4 -:106698000E9CF01F0016EE0600033002E738006C6F -:1066A800E4081800C7100A9CF01F00113FF8E9DC45 -:1066B800C008F0041800C1D13018E768006CC4A8FD -:1066C800800050AC000016A280038C8C80038A4C9A -:1066D800800094C48000E124000016A880038A7C0E -:1066E80080004E8480038AB0800052C08000E50498 -:1066F800EE060028E762006C711B0E9CF01F002359 -:106708004A389088EDB80001C0E1ECC8FFEAEE080D -:106718000328201D1AD849F81AD649FC1AD8F01FA0 -:10672800001F2FCDECC3FFEAEE03032C580CC0600A -:10673800F01F001B3008EE03092849589088EDB86F -:106748000001C0814938201D496C1AD8F01F001378 -:106758002FED48F89088EDB80001C1610E9C301B00 -:106768000C07EF37006CF01F001048A81AD65C64BD -:106778001AD41AD71ADC48DC1AD51AD8F01F000721 -:10678800300C2FADD832D83A80004D98000016A2B0 -:1067980080038C8C800385B0800094C48002E28CD6 -:1067A8008003862480004E8480038AF0D4311897B1 -:1067B8001695580CC041E06C00F6D832F01F003E28 -:1067C8003FF8EDDCC008F0061800C041E06C00FF9F -:1067D800D8324BA89088EDB80001C1A1EE06000898 -:1067E800F1340068F133006C4B58301B11820E9C59 -:1067F800F01F00344B48201D1AD21AD31AD41AD7C6 -:106808001AD51ADC4B1C1AD8F01F00312F8DEE0652 -:1068180000083009F13A006CF20A1800C060F1393A -:1068280000682FF9F1690068EE060008F134006885 -:106838003088F0041800E08800224A68900930087F -:10684800F0091900C104301B0E9CF01F001E49E816 -:10685800201D1AD41AD71ADC49FC1AD51AD8F01FE9 -:10686800001C2FAD30080C070A9CEF680068301B2D -:10687800F01F001AE06C00FBD83249181189300863 -:10688800F0091800C0500A9B0E9CF01F0015EE0678 -:1068980000043008E939006CF0091800C6100A9C99 -:1068A800F01F00103FF8F00C1800C1D13018E9684B -:1068B800006CC3E8800050AC000016A800007B07FD -:1068C80080004E848003824C80038B2C800094C40B -:1068D800000016A280038B6C8000E124800052C067 -:1068E8008000E5040E9CF01F001F49F89088EDB861 -:1068F8000001C0E1ECC8FFEAEE080328201D1AD801 -:1069080049A81AD649AC1AD8F01F001A2FCDECC4E2 -:10691800FFEAEE04032C580CC060F01F0017300883 -:10692800EE040928EE0600083009F169006C48E811 -:106938009088EDB80001C1410E9C301BEE060006A0 -:10694800ED37006CF01F000D48881AD71ADC48CCC8 -:106958001AD51AD8F01F0007300C2FCDD832D83AE4 -:1069680080005644000016A28003824C800385B044 -:10697800800094C48002E28C80004E8480038B984F -:10698800D4311294580A5F1830091497F204180089 -:106998005F0318961695E7E80008F2081800C55036 -:1069A800335CF01F00406CC98EC8F20800088DC81F -:1069B8006C385808C0614BC89088EDB80001C231E6 -:1069C8004BA89088EDB80001C0918EC81AD84B88A2 -:1069D8004B8C1AD8F01F00382FED4B889088EDB8F3 -:1069E8000001C0C14B28201D4B5C1AD8F01F003293 -:1069F8008ECB6E1CF01F00332FEDED08001A2FF818 -:106A0800ED58001A0A9AED3B00140E9CF01F002E58 -:106A18004A689088EDB80001C1218EC8201D1AD897 -:106A28001ADCED38001430091AD91AD71AD51AD831 -:106A380049F84A6C1AD8F01F00202F8D0E9CF01FC1 -:106A48000024335CF01F002358075F081063C160FF -:106A580049689088EDB80001C0C1201D1AD5ED38ED -:106A680000141AD8492849CC1AD8F01F00132FCD82 -:106A78000A9B0C9CF01F0019C1385804C11048B873 -:106A880090093008F0091900C0B44898201D5C64CA -:106A98001AD7493C1AD41AD8F01F00072FCDD83A74 -:106AA8008000A300000016A6000016A280038C98A0 -:106AB80080038BC8800094C4000016A080037C84E7 -:106AC80080013DB48000713080038BD88000D13CB8 -:106AD8008000A2E680038C108000585480038C3C10 -:106AE800D42148C8189716969088EDB80001C0A11F -:106AF8004898201D1ADB1ADC488C1AD8F01F0008A9 -:106B08002FCDF7D6C0100E9CF01F0006D82200002B -:106B1800000016A280038D0480038C50800094C46A -:106B28008000D984D4213007C1B80C9C0E9B2FF665 -:106B3800F01F000D1895C0F078485808C0C1F01F24 -:106B4800000B0A9CEB35000BF01F00090A9B5C5CEC -:106B5800F01F00085846CEA12FF75827C03030063E -:106B6800CE5BD82280002024800056A080002044DC -:106B780080002068D4214978F00C07085808C071B3 -:106B88004959F20C070AF00A1800C1F04929F20C19 -:106B9800070AF4081800C1904909F80C001CF0080D -:106BA8000017A567EE0C0027120748D99289EDB99E -:106BB8000004C0C11AD848B81ADA48BC1AD71AD87B -:106BC800F01F000A2FCDC02830070E9CD8220000E5 -:106BD8000000153C0000153800007B2C000016A6AC -:106BE8008003901080038DE0800094C4D421169710 -:106BF8001496F01F0005C0609828AC087808301C6F -:106C08008F08D82280006B7CD43149B849B91092DA -:106C1800F00C0708F20C070718961AD7498C1AD8EF -:106C2800EC060014F01F001749732FEDA36431E53B -:106C3800EE070018A568E8080008E60800087009CB -:106C48005809C0C090BA90AB1ADB1AD9702848FC12 -:106C58001AD81ADAF01F000B2FCD2FF7E406070811 -:106C68005C57EE051800F9B70000EE081800CE11C1 -:106C7800D8320000000015380000153C80038DF460 -:106C8800800094C400007B2C80038E0CD431201D1E -:106C98004A181896F00C07073005F80C001849F048 -:106CA800A36849F149F231E349F4EE070019A569EF -:106CB800F0090009E0090009720A580AC1D0923B9C -:106CC800922A8289F40B010CE2190010F8050005DC -:106CD8005C855809C1105C7B5C7AF3D5C010201D17 -:106CE800492C1AD91ADB1ADA1AD61AD25068F01FA8 -:106CF80000102FAD40082FF7E80607095C57EE0390 -:106D08001800F9B70000EE091800CD010A9C2FFD04 -:106D1800D83200000000153C00007B2C000016A6AD -:106D280080038DA00000153880038E28800094C44D -:106D3800D421F01F000B48B8EFDCB0109088EDB8F4 -:106D48000004C0A10E985C781AD84878487C1AD8F4 -:106D5800F01F00072FED0E9CD822000080006C94D5 -:106D6800000016A680038D7080038E4C800094C4AA -:106D7800D4214A181897169631D9F20C1800E088D1 -:106D8800000F90093008F0091900C33449B81ADC1B -:106D980049BC1AD8F01F001B2FEDD822F60B001A99 -:106DA8009088F80C0019E2180010A569F20A002969 -:106DB800495AF40903055808C0A04908201D1ADCDF -:106DC800492C1AD51AD8F01F000F2FCD0A9CF01F96 -:106DD80000103008EC060016EE07001748A9A56752 -:106DE800EE060026F20600068D288D08AC28AC3881 -:106DF800D8220000000016A280038DD080038E6880 -:106E0800800094C400007B2C80038E888002E28C72 -:106E1800D4314948F80C00121896F00C0707A36201 -:106E2800491331E44915EE070018A568E40800087D -:106E3800E60803085808C0500E9C0C9BF01F000C75 -:106E48002FF7EA0607085C57EE041800F9B70000A8 -:106E5800EE081800CE914839300CF2060B08D832EB -:106E68000000153C00007B2C0000153880006D7870 -:106E7800D4211897580CC0E14A189008F80819004E -:106E8800C3C44A08201D4A0C1AD8F01F00202FED51 -:106E9800D82249FAF40B070CF8CEFFFFF80C001CB7 -:106EA800A56CF40B0B0E3008F60B0019F809002935 -:106EB800498CF809000993289308B228B23831E9B7 -:106EC800F20E1800C031F40B0B0848D89088EDB8C2 -:106ED8000004C10148E8F00B07081AD848E8F00B8D -:106EE80007081AD848781AD748CC1AD8F01F0007CC -:106EF8002FCD0E9CF01F000AD8220000000016A219 -:106F080080038D8480038E98800094C40000153C13 -:106F180000007B2C0000153880038DE08002E28C95 -:106F2800D42118970E9CF01F0005C060780C0E9BAA -:106F3800F01F0003CF8BD82280006B7C80006E7816 -:106F4800D421496818971696149512949088EDB82C -:106F58000001C0C14928201D1AD91ADA1ADB1ADC27 -:106F6800490C1AD8F01F00102FAD301B0A9CF01FD7 -:106F7800000FC080301B0A9CF01F000C784858088E -:106F8800C0510C9B0E9CF01F000A5804C0500A9B6D -:106F9800089CF01F0008D822000016A280038D600C -:106FA80080038EAC800094C48000202480006AE8AE -:106FB80080006E78D4211897F01F00061898C02119 -:106FC800D8220E9A782C700990ABF01F0003DA2AA9 -:106FD80080006B7C80006F48D42116961494189515 -:106FE800F01F001E1897C021D8229838982B7809CE -:106FF800F6081900C2B2F5D8C0105804C050F20AF9 -:107008000708AC88C068F20A0709AC892FF8B838B5 -:1070180049389088EDB80004C0D10D881AD86E0898 -:107028001AD88EB81AD848F848FC1AD8F01F000F9A -:107038002FCD8E3B8E28F6081900C0710A9A5C7B0A -:107048006E2C6E09F01F000ADA2A0A9A5C7B782CEB -:10705800F01F0007D82A000080006B7C000016A6ED -:1070680080038D9080038ED4800094C480006F4884 -:10707800D4211897F01F00231896C021D8224A2837 -:107088009088EDB80004C0D178081AD898A81AD802 -:107098008CB81AD849D849EC1AD8F01F001E2FCD41 -:1070A8008C398C28F0091900C020DA2A49A8908860 -:1070B800EDB80004C1614998201DF0070709498807 -:1070C8001AD9F00707081AD8F20818005F191AD950 -:1070D8006C081AD848D8493C1AD8F01F000E2FADB2 -:1070E8006C2C6C090E9A8CABF01F000F48C8F00787 -:1070F800070948A8F0070708F00918005F1CD822FC -:1071080080006B7C000016A680038DBC80038EE88F -:10711800800094C4000016A2000015380000153C39 -:1071280080038F0080006F48D43118951697149308 -:10713800580CC0311894CBD8F60B001A4A58F00BEB -:107148000708F0080019A569F20A00294A2AF40973 -:1071580003095809C1604A1A940B300AF40B190044 -:10716800C0A4201D1AD849E81AD949EC1AD8F01F2A -:10717800001E2FCD49780E9BF007070CF01F001B4F -:10718800301B8ACCF01F001A18961894E0800092E1 -:10719800189B30098ACA0A9CF01F00168A485C8C22 -:1071A800F00C1900C2C048D9920A3009F20A190035 -:1071B800C0B45C781AD848A81AD648FC1AD51AD888 -:1071C800F01F00092FCD0C9C3004F01F000CC718CD -:1071D8000000153800007B2C000016A280039004E4 -:1071E80080038F2C800094C480006D788002DC3C82 -:1071F8008000CEC480038F548002E28C4AE9F207F3 -:10720800070AF4CBFFFFF40A001AA56AEE07001874 -:10721800F2070B0BF40800284A8AF4080008300A21 -:107228009123B02C9106B03A31E8F00B1800C03128 -:10723800F2070B0A4A084A29F0070708F207070964 -:10724800F0091800C1C149F9920A3009F20A190077 -:10725800C0A4201D1AD81AD849B849CC1AD8F01F8A -:10726800001C2FCD4948F00707095809F9BA01FF52 -:10727800F3DAE109F9B9001DF0070B0949189088FC -:10728800EDB80004C1618AC848DAF407070A201D6E -:107298000D891ADA488AF407070A1ADA1AD91AD8A5 -:1072A80048981AD648BC1AD71AD8F01F00092F8D4B -:1072B800089CD8320000153800007B2C0000153CD3 -:1072C800000016A28003900480038F90800094C46D -:1072D80080038FBCD431203D1690502A1895F01F9A -:1072E8000021301BE5DCB010F9D2C010F01F001EE1 -:1072F8001896C2C049D8EA050019F0050707A3691E -:10730800189431E849A1189349ABEE070016A56611 -:10731800F2060006F60600066C0B580BC0B0089C77 -:107328008CAA50095018F01F00148CAA4018140495 -:1073380040092FF7E205070A5C57EE081800F9B76D -:107348000000EE0A1800CE110696402A5800E1F611 -:107358001A00580AF5F21C000C9C2FDDD8320000E8 -:1073680080006C948002DC3C0000153C000015385D -:1073780000007B2C8002E736D431303818971693FA -:107388001494F00C1800E088001B48989009300805 -:10739800F0091900C0353005CA2848681ADC3005DC -:1073A8001AD8485CF01F00052FEDC998000016A2F6 -:1073B80080038DB080038FE0800094C4F80C001A1D -:1073C8004C88F00C0708F0080019A569F20A002992 -:1073D8004C5AF40903095809C1604C4A940B300A05 -:1073E800F40B1900C0A4201D1AD84C181AD94C1C2B -:1073F8001AD8F01F00412FCD4BA80E9BF007070CA1 -:10740800F01F003E0892301B5C72049CF01F003C89 -:1074180018961895C640049A069BF01F003AEE0786 -:1074280000184B03E6070702E4020012A562E4080D -:1074380000224AD83001F0020002300B8506A4244D -:10744800A4310E9CF01F0030852CE60707082FF8A2 -:10745800E6070B0831E9F2081800C031E6070B010E -:107468004A084AA9F0070708F2070709F0091800AF -:10747800C1C149E9920A3009F20A1900C0A4201DC5 -:107488001AD81AD849A84A2C1AD8F01F001B2FCD91 -:107498004948F00707095809F9BA01FFF3DAE10981 -:1074A800F9B9001DF0070B0949089088EDB80004E8 -:1074B800C1610D884959F2070709201D1AD9489951 -:1074C800F20707091AD91AD848985C74491C1AD4C3 -:1074D8001AD61AD71AD8F01F00082F8D0A9CD8324E -:1074E8000000153800007B2C000016A280038DB028 -:1074F80080038F2C800094C480006D788002DC3C6F -:107508008002E736800020240000153C80038F901D -:1075180080038FBCD401E06A05A0300B482CF01F13 -:107528000003D80200007B2C8002E8BCD421202D67 -:10753800FE782800501C500B3FF7109E301CC308E3 -:10754800300B7049EDB90001CFD17049EDB9000990 -:10755800CFD140195809C0B01396F2C5FFFE138960 -:107568005015EDE91089F7D9D010C038F7D7D010E9 -:10757800913B7049EDB90000CFD17C2B40095C8B61 -:107588005809C080B29BF7DBC108B28B40092FE9CC -:107598005009F80A1900E0880006202A5C8A580A6F -:1075A800CD01FE78280070482FEDD822580CC06015 -:1075B800FE782800300A7019C058FE78280030FA82 -:1075C8007019F3DAD20491195EFC202D3008E069B5 -:1075D80013885018F8090249C058401A2FF82FFA92 -:1075E800501A1238CFB12FED5EFCD703D401303CCE -:1075F800F01F0005C060303CF01F0004F01F0004BD -:10760800D402D6038000A3708000A38880014014B0 -:10761800D401580CC060300B303CF01F0004D80275 -:10762800303CF01F0003D8028000A31A8000A35C3E -:10763800D401202D3008B888303CF01F0022303C9F -:10764800F01F0021309CF01F001F307CF01F001D30 -:107658003008501840192FF950192FF8E04861A840 -:10766800CFA1309CF01F00193008501840192FF98D -:1076780050192FF8E05886A0CFA1307CF01F0013D6 -:10768800340B300A492CF01F0013FE782800302AEA -:1076980070C9F3DAD108308A91C970C9F3DAD08495 -:1076A800301A91C970C9F3DAD06191C970C9F3DA97 -:1076B800D001303C91C9F01F00082FEDD80A000016 -:1076C8008000A2A88000A2BE8000A2E6800075F417 -:1076D8008000A3A08000A388D42120AD4C68E3B823 -:1076E8000001D5533017FE6810007109F3D7D20294 -:1076F800303AF1490040E06B1B00EA1B00B7FE7C02 -:107708000C00F01F003E310A201D30081ADA0E99CD -:10771800109B308AFE7C0C00F01F003930080E994F -:107728000E9A109BFE7C0C00F01F0036300BFE7C7E -:107738000C00F01F0035FE7C0C00F01F0034300CEC -:107748001ADC18981899189A1ADC189BFE7C0C00F9 -:10775800F01F002F0E9CF01F002F302BFE7C0C001A -:10776800F01F002DF01F002DD503304AFAC7FFD0B7 -:107778004ABB0E9CF01F002B302B0E9CF01F002ADA -:10778800FAC8FFDC4A99722C109B912CE06AF980A8 -:10779800EA1A0337F2E40000FE7C1800F0E5000066 -:1077A800F01F0023308A4A3B0E9CF01F001E310A4E -:1077B800FAC6FFEC300B0C9CF01F001F3018304B42 -:1077C800FB68002149DCF01F00180C9BFE7C280098 -:1077D800F01F001B3009FE7C2800129B129AF01F34 -:1077E80000190E9C0E96304BF01F000F2FCDFAC7D4 -:1077F800FFD8C2D8800376008000A5088000A4B016 -:107808008000A4CE8000A4E68000A4F48000A470C8 -:107818008000A2228000A4FE8000A3D080039038BC -:107828008002E7368000A2808003901C8000AA1C9A -:10783800800390308002E8BC800390288000A66214 -:107848008000A69C0D8C2FE6F01F000F0E36CFB1DE -:10785800FACBFFFCFE7C2800F01F000C3009FE7CF0 -:107868002800129A129BF01F000AFE7C2800F01FC5 -:107878000009302CF01F0008FE7C2800F01F0005CE -:107888002F6DD8228000A2BE8000A6628000A69C30 -:107898008000A7EC8000A2E6D42130A81896F00C4E -:1078A8001800C0C1E067271020175BF7C13030DB34 -:1078B800FE7C1800F01F0008CF81E0672710201712 -:1078C8005BF7C0800C9BFE7C1800F01F0003CF8183 -:1078D800D822DC2A8000A9AED401178A17B91798D4 -:1078E800B168F1EA118817AAF1EA1088F3E81008DC -:1078F8001AD81ADC483CF01F00042FEDD80200000B -:1079080080039064800094C4D421202D4AB811D9F2 -:10791800BAD97009500911C8BAC81A961895169498 -:10792800581CE08900064A6CF01F0026C448761CE3 -:10793800F01F0025201DEFDCC0084A4C1AD7F01FA5 -:1079480000212FED5825C2A0682CF01F001F201D14 -:10795800EDDCC00849EC1AD6F01F001A30182FEDDC -:10796800F0061800C111305A49AB0E9CF01F001ADE -:1079780030AA49AB0E9CF01F00180E9C308A498B28 -:10798800F01F0015C1883028F0061800C141300AE0 -:107998000E9C149BF01F0013C0E83038F007180045 -:1079A800E08B000A300B0E9CF01F000F1A9B306A08 -:1079B800F01F000E2FEDD82A800396B88003909808 -:1079C800800094C48002DC2C800390C4800390D093 -:1079D800800390E480007380800390EC800390F82B -:1079E800800072DC8000202480005140D421189649 -:1079F8001695582CC45176174B3B0E9CF01F00333C -:107A08001896C1014B2CF01F00334B38FE798000CB -:107A1800B0094B28B0064B28B0064B28B006E08FBB -:107A280001C44B1B0E9CF01F0029C1D14AA89088A5 -:107A3800201D4AEC1AD8F01F00274A8890884ACCA3 -:107A48005008F01F00244A6890884AAC5008F01F7C -:107A580000214A4890884A8C5008F01F001E2FEDDC -:107A6800E08F01A30E9C4A5BF01F0018C0C14A4C6E -:107A7800F01F0018E06900FF4978E08F0195582C45 -:107A8800E089000749FCF01F0013E08F018E762C77 -:107A9800F01F001D18975836E08101876A1649BB08 -:107AA8000C9CF01F000AC53148B85807E08A000846 -:107AB8009009A1A9B0095817C2A1C3089009A1C982 -:107AC800B009C2C8800391048002ECC88003910801 -:107AD800800094C4000016A2000016A6000016A09C -:107AE800000016A8800391148003911C8003913430 -:107AF8008003914C800391648003E18C8003917C26 -:107B0800800391888002DC2C800392144B799208C0 -:107B1800A1A8B2085827C071C0D84B499208A1C87B -:107B2800B208C0884B299208A1A8B2085837C0717A -:107B3800C0A84AF99208A1C8B208C0584AD9920800 -:107B4800A1A8CAC84AB99208A1C8CA884AAB0C9C5D -:107B5800F01F002AC2F14AA85807E08A00089009D5 -:107B6800A3A9B0095817C061C0C89009A3C9B00932 -:107B7800C08849E99208A3A8B2085827C071C0D89C -:107B880049A99208A3C8B208C08849999208A3A82D -:107B9800B2085837C071C0A849599208A3C8B2089A -:107BA800C05849499208A3A8C79849299208A3C868 -:107BB800C758494B0C9CF01F0011C3E149085807EE -:107BC800E08A00089009A1B9B0095817C061C1B886 -:107BD8009009A1D9B009C17848499208A1B8B2085A -:107BE8005827C161C1C80000000016A6000016A0F1 -:107BF800000016A88003921C8002ECC8000016A2A0 -:107C0800800392204B699208A1D8B208C0884B59CA -:107C18009208A1B8B2085837C071C0A84B19920889 -:107C2800A1D8B208C0584B099208A1B8C3784AE94C -:107C38009208A1D8C3384ADB0C9CF01F002DC30161 -:107C48004AC85807E08A00089009A3B9B00958172C -:107C5800C061C0C89009A3D9B009C0884A09920870 -:107C6800A3B8B2085827C071C0D849D99208A3D878 -:107C7800B208C08849B99208A3B8B2085837C07189 -:107C8800C0A849899208A3D8B208C058496992087F -:107C9800A3B8C04849499208A3D8B208C858496B44 -:107CA8000C9CF01F0013C3D149285807E08A00082C -:107CB8009009A5A9B0095817C061C0C89009A5C9FD -:107CC800B009C08848699208A5A8B2085827C151C8 -:107CD800C1B848399208A5C8B208C168000016A6FC -:107CE800000016A0000016A8800392248002ECC8A9 -:107CF800000016A2800392284AC99208A5A8B208D3 -:107D08005837C071C0A84A999208A5C8B208C05887 -:107D18004A799208A5A8CC2B4A599208A5C8CBEB5A -:107D28000C9C4A4BF01F0024C3F14A485807E08ACC -:107D3800000B9009EA19FFFFE8198000B0095817ED -:107D4800C071C1089009F3D9C00FB009C0B849C9BA -:107D58009208EA18FFFFE8188000B2085827C08187 -:107D6800C11849789009F3D9C00FB009C0B848F9CB -:107D78009208EA18FFFFE8188000B2085837C08157 -:107D8800C0E848A89009F3D9C00FB009C08848894D -:107D98009208EA18FFFFE8188000C80B48489009C5 -:107DA800F3D9C00FB009D82A000016A0000016A801 -:107DB800800392308002ECC8000016A2000016A6CC -:107DC800D421582CC2717617495B0E9CF01F001500 -:107DD800C1211897494CF01F0015201D494C1AD78E -:107DE800F01F00120E9C2FF7F01F00122FED5847BE -:107DF800CF51C1380E9CF01F0010201DEFDCC008C9 -:107E080048BC1AD7F01F00090E9CF01F000A2FED7E -:107E1800C04848ACF01F0005D82A000080039238FB -:107E28008002ECC88003923C800094C4800390C414 -:107E380080006C108002DC2C80039250D421207DBD -:107E4800306A18951696FAC7FFEAE06B00FF0E9C99 -:107E5800F01F00385825C1B16C1C4B7BF01F003750 -:107E68001896C4B14B6CF01F00370E9B0C9CF01F8A -:107E780000360E9B301CF01F00340E9B0A9CF01F2E -:107E880000320E9B303CF01F0030C5085825E08AB0 -:107E980000356C1CF01F002D6C2B1897500B169C8E -:107EA800F01F002B58DC5F04585C5F08E9E81008F5 -:107EB800ECC5FFFC109418963008FACCFFF8400B7C -:107EC800F0041800C0500C9AF01F0022C238F01FAE -:107ED800002258375F98580C5F091896F3E8100885 -:107EE800E8081800C0A15807C085C0916A08118920 -:107EF8003308F0091800C030498CC098585C5F18E6 -:107F080058DC5F19F3E80008C050495CF01F000D09 -:107F1800C0D85C570C9BFAC9FFEAFACAFFF80E9C56 -:107F2800F01F00100E9CF01F00102F9DD82A000093 -:107F38008002E8BC800392808002ECC880039288AB -:107F4800800094C48001921C8002DC2C8002EDD059 -:107F58008002EE0C800098688003929C800392DC7B -:107F68008001927080019258D421204D4ABC149609 -:107F7800F01F002B1A9CF01F002B581CC0504AAC55 -:107F8800F01F0027C0A81A9CF01F0028201D1ADC2B -:107F98004A7CF01F00232FEDF01F002618974A6C2B -:107FA800F01F001F5807C0514A4CF01F001DC04861 -:107FB8000E9CF01F00234A376E0CF01F0023C1F0FF -:107FC8006E087018201D1AD8F01F0020500C4A0C9B -:107FD800F01F00136E0870285008F01F001C500C8A -:107FE80049CCF01F000F6E0870385008F01F0017BA -:107FF800500C499CF01F000A2FEDC048497CF01F27 -:108008000008497CF01F00060DC93018F009180057 -:10801800C2A1494CC298000080039314800094C404 -:10802800800191288003932C8000967080039348E8 -:108038008001997C80039358800393A880009784DB -:10804800000080D08000CAE4800096A8800393686E -:10805800800393788003938880039398800393B078 -:10806800800393B8493CF01F0014FACCFFF4300B9E -:10807800F01F0012301B4037FACCFFF8F01F000F3A -:10808800201D1AD750574047F01F000D500C48DCF0 -:10809800F01F000950075047F01F0009500C48AC6A -:1080A800F01F0005F01F0009300C2FED2FCDD8224E -:1080B800800393C4800094C48000C1EC800096A81B -:1080C800800393D080039DC08000495CD421202D7B -:1080D8001695584CE089000649ECF01F001FC3684C -:1080E800FACCFFFC761BF01F001D6A2C4014F01F11 -:1080F800001C18976A3CF01F001A18966A4CF01F6B -:108108000018501418951ADC496C1AD61AD71AD4C4 -:10811800F01F0011089CF3D5C008F5D6C0080E9BC7 -:108128005C7BF01F00112FCD5BFCC10148F8900962 -:108138003008F0091900C0A448D81AD548DC1AD666 -:108148001AD71AD8F01F00042FCD2FEDD82A000017 -:10815800800393DC800094C4800098FC8002DC2CAF -:108168008003941480003958000016A280039054AC -:1081780080039448D4211695583CE089000649CCE0 -:10818800F01F001CC338761CF01F001B18976A2CC0 -:10819800F01F001918966A3CF01F00174978201D37 -:1081A80018941AD649651AD7580CF0051710495C67 -:1081B8001AD5F01F0010089AF7D6C0085C5A0E9C12 -:1081C8005C7CF01F00112FCD5BFCC10148F89009C1 -:1081D8003008F0091900C0A448D81AD648DC1AD7C4 -:1081E8001AD51AD8F01F00032FCDD82A80039488F7 -:1081F800800094C48002DC2C80037DC480037DC889 -:10820800800394B880003C50000016A28003969C1E -:10821800800394DCD421206D1697582CE089000641 -:108228004A4CF01F0025C438761CF01F00246E2B22 -:10823800F8C700011A9CF01F0022304A1A9BFAC6A0 -:10824800FFEC0C9CF01F001F201D40681AD8F01F7F -:10825800001E1ADC49DC1AD7F01F00170C9B0E9C75 -:108268005C5CF01F001BFACCFFE0300BF01F00191C -:10827800301B4087FACCFFE4F01F00162FDD505763 -:108288001AD74056F01F00101AD71ADC492C50870D -:10829800F01F00092FDD50461AD6F01F000B1AD622 -:1082A8001ADC48EC5076F01F00042FCD2FADD82AE9 -:1082B80080039510800094C48002DC2C800098FC18 -:1082C8008002E736800096A8800395388000C19C1C -:1082D8008000C1EC8003955480039564D421FACDC5 -:1082E8000108581CE0890006491CF01F0012C1D87B -:1082F800F6C9FFFCF8CA0001FAC7FFFCE06B0100F1 -:108308000E9CF01F000DC110300948CAFACBFEFCC4 -:108318000E9CF01F000B5C5CC0814418489C1AD866 -:108328001AD7F01F00042FED2BEDD82A800395747F -:10833800800094C480009710800078E08000C4C05A -:1083480080039064D43121AD18961695582CE08995 -:1083580000064A1CF01F0021C3B8FAC7FFFC344AC4 -:10836800300B0E9CF01F001E306AE06B00FFFACC49 -:10837800FFDBF01F001BFAC4FFB8EAC9FFFCECCA18 -:108388000002320B089CF01F00171893C210189AAD -:10839800089B0E9CF01F00143088FB6300242016F5 -:1083A800EA060326FB68003C0C9CF01F00100C9B9F -:1083B800189A30180E9C3089F01F000D581CC08088 -:1083C80048C8201D48CC1AD8F01F00042FED2E6D88 -:1083D800D83A000080039590800094C48002E8BCDD -:1083E800800097108002E7368002EDD080019084EB -:1083F80080039048800395B4D42121AD1696582C5B -:10840800C05049BCF01F001BC308FAC7FFFC344A20 -:10841800300B0E9CF01F0018306AE06B00FFFACC9E -:10842800FFDBF01F0015ECC9FFFC301AFAC6FFB8D5 -:10843800320B0C9CF01F00111895C170189A0C9BF8 -:108448000E9CF01F000F3088FB6500240E9CFB6813 -:10845800003CF01F000C581CC08048B8201D48BCC8 -:108468001AD8F01F00042FED2E6DD82A800395D45A -:10847800800094C48002E8BC800097108002E73630 -:1084880080018FF8800396AC800395ECD431204DA1 -:108498001493189516947406582CC091761C304A7B -:1084A8004A7BF01F0028C0513018C458584CC0806F -:1084B8004A5CF01F00264A6CF01F0024C3D8761BC4 -:1084C8001A9CF01F00240A9A1A9BFACCFFF4F01F9A -:1084D80000224A289088EDB80002C0B1201D40480B -:1084E8001AD849F81AD649FC1AD8F01F00182FCD07 -:1084F800FAC7FFF40C9C0E9BF01F001B682B1A9CFC -:10850800F01F0014304A1A9B0E9CF01F00130E9B9C -:108518000C9CF01F0016683B1A9CF01F000E304A96 -:108528001A9B0E9CF01F000C0E9B0C9CF01F001059 -:108538001A953008A6C82FCDD83A0000800392803B -:108548008002EDE680039610800094C48003964074 -:10855800800098FC8002E736000016A28003903C59 -:10856800800396688000CBC88000CA928000CA74D5 -:10857800D421212D581CE0890006491CF01F001148 -:10858800C1C8F6C9FFFCF8CA0001FAC7FFD8320B08 -:108598000E9CF01F000D1896C1000E9B189AFAC782 -:1085A800FFF90E9CF01F0009300BFB6600270E9C9C -:1085B800F01F0007F01F00072EEDD82A80039684CD -:1085C800800094C4800097108002E736800099A844 -:1085D8008000998CD401F01F0003F01F0003D80A13 -:1085E80080019EF880009820D40148BE1898300970 -:1085F8007C0C580CC0A1F2090019487EFC0900291E -:10860800932A9318930BD8022FF92F4E58F9CF11AC -:10861800DC0A000000001544D401484CF01F000497 -:1086280030194848B089D802800396C0800094C4A5 -:10863800000015F8D4314B68169570065806C050DE -:108648005816E08100BAC938580CE08000B5F01F10 -:1086580000314B18910C1897580CE08000AD19891F -:10866800EC091800C0415805C460C4284AB44AC37C -:108678008906C188EC060018E60800287012049CD8 -:108688005802C0E0F01F002718910E9CF01F00252B -:108698000E9BE20C0D4A049CF01F0023C3102FF61A -:1086A8008906680649D258E6FE98FFE658F6C28160 -:1086B8005805C210049749DCF01F001D3008498690 -:1086C8008508C128F0080018EC0800287009580926 -:1086D800C0807018201D497C1AD8F01F00152FED96 -:1086E8006E082FF88F086E0858E8FE98FFED492CA1 -:1086F800F01F000F4888700CF01F0010C5C80E9CB2 -:1087080048FB49074906F01F0011C2C8000016407F -:108718008002ED8400001644000015400000154456 -:108728008002EDD08002EDE6800396C8800094C4F4 -:10873800800396E0800396C48002E28C80039364F1 -:10874800000015FC000016008002EEB86E08EC0868 -:10875800092C2FF88F085908C070498B300CF01F6E -:108768000018580CCF41301949689109496949786E -:108778007008F0080018F20800284959702A720C8D -:108788007008494B5D18581CC1705805C040492CE9 -:10879800F01F001248E83007340A0E9B910748DCA6 -:1087A800F01F000F48F8700CF01F000F4858301CDD -:1087B8009107D832D83ADA3A800393648002EEB847 -:1087C800000016400000154400001540000015FC8C -:1087D80000001600800396C4800094C48002E8BCA0 -:1087E800000016448002E28CD421202D1897FACB81 -:1087F800FFFCFE7C1800F01F0012583CC080584C4B -:10880800C081E0690100FE7818009109301CC15848 -:10881800401C58DCC03130ACC0B8588CC081F01F47 -:108828000009320CF01F00071BFCC0285C5CF01F1D -:1088380000054018300CAE882FEDD8228000A9C260 -:10884800800078A0D431202D30A1FAC0FFF930D2B1 -:10885800308349B749B630043005009CF01F001A30 -:10886800C2A11BF8E20818005F0AE40818005F09B3 -:10887800124AF80A1800C0904929491A1298740B2C -:10888800950CF20B0B0CC188E6081800C0916E0815 -:108898002018F00C17708F0CEC0C0B04C0686E09D4 -:1088A800EC090B082FF98F096E08E0480050CD61DC -:1088B8008F05CD4B3008109C2FEDD832000016489C -:1088C8000000164C800087F0D401F01F0004301B14 -:1088D800F01F0003D80200008000884C8000863C0E -:1088E800D4314974169714951293580BC0B1680C7B -:1088F800580CC0311896C2181696F01F0012890736 -:10890800C1C868085808C0C1E06C0200F01F000E1A -:10891800890CC061189648DCF01F000DC0E80A9C5D -:10892800E066020048650C33E60617806A0B0C9A6D -:10893800F01F00086A088F080C9CD8320000169CAB -:108948008002E28C8002E2A4800396E8800094C44E -:10895800800090B4D401F01F0002D80A800091086A -:10896800D4213008FAC4FFEC19C9F0091800F9B885 -:108978000100E9F81A01E9F81A02E9F81A004A1898 -:108988001AD84A1818971AD8089B3008E8C9FFF867 -:10899800E8CAFFFC780CF01F001D8F0C2FED580C57 -:1089A800C021DC2AF01F001A300949AA301BE06CEC -:1089B8001388F01F00193009498A301BE06C00FA4F -:1089C800F01F00153009496A301BE06C01F4F01FF4 -:1089D80000123009493A301BE06CEA60F01F000EC3 -:1089E8003009491A301BE06C03E8F01F000B30090E -:1089F80048EA301BE06C03E8F01F0007DA2A0000A1 -:108A08008001365C80013C948000CCA88000CAB00C -:108A180080008A708000956C80008A6480008A5883 -:108A280080008A4C80008A4080008A34D401F01F7C -:108A38000002D8028000C664D401F01F0002D802E8 -:108A480080012984D401F01F0002D8028000B8B048 -:108A5800D401F01F0002D8028000C074D401F01FB6 -:108A68000002D8028000E68CD401F01F0002D80270 -:108A78008001326430194828B0895EFC000016AACB -:108A8800D401319CF01F0003319CF01F0003D80271 -:108A98008000A2D28000A2E6D421204D3FF819C957 -:108AA8001897F0091800F9B80001EFF80E0430081B -:108AB800201D1AD850581AD81AD850685058F01F84 -:108AC800001C49CB6E0CF01F001C0E9949BA49CB0B -:108AD80049CCF01F001D2FCD581CC08049B8201D5F -:108AE80049BC1AD8F01F001B2FEDF01F001BF01F08 -:108AF800001B0E9CF01F001AC0F049A8900930080E -:108B0800F0091900C0F44988201D498C1AD8F01FB3 -:108B180000112FEDC07830194958319CB089F01FE9 -:108B280000153018EF6800082FCDD822800089681A -:108B380080008C5C8000CAEE80008B7C80008BDC1F -:108B480080008A7C80009A188003973C80039DC02F -:108B5800800094C48000998C80019EF880002A9837 -:108B6800000016A28003972880039758000016A4D7 -:108B78008000A300D4211897333CF01F000F300663 -:108B88000FD8EC081800C0C048CCF01F000D6E0CC0 -:108B9800F01F000C6E0CF01F000CAED6C07848BC5D -:108BA800F01F00076E0CF01F000A3FFCF01F0009C1 -:108BB800D82200008000A2E680039774800094C445 -:108BC8008000B1D88000AE50800397908000CABC66 -:108BD80080002E60D42116971896333CF01F00149D -:108BE8000C9CF01F0014201D1ADC493CF01F0013D8 -:108BF80030182FED0FC6F0061800C121490CF01FE0 -:108C0800000F6E0CF01F000F48F849095C5CF20C6D -:108C18001700F00C1710F01F0009AED6C0486E0CF4 -:108C2800F01F000BF01F000BD82200008000A300EB -:108C3800800096E48003979C800094C4800397B8D2 -:108C48008000B950800397D080037FC08000CB8814 -:108C58008000C690D42149471896F01F0014189533 -:108C6800C110301CF01F00126C18201D1AD8F01FFC -:108C78000011500C490CF01F001130182FEDAE8870 -:108C8800D822AE8CF01F000E48E89008EA081900B8 -:108C9800C08448D8201D48DC1AD8F01F00082FEDE2 -:108CA800D8220000000016AB8000CAE480002E60C5 -:108CB800800096A8800397D8800094C480006B2C0D -:108CC800000016A28003995C800397E8D4211897C6 -:108CD800F01F0027300A4A7B4A7CF01F0028300A20 -:108CE8004A7B4A8CF01F00254A7B300A4A7CF01FD9 -:108CF80000230E9A4A6B4A7CF01F0020300A4A6B08 -:108D08004A6CF01F001E4A6B300A4A6CF01F001BA9 -:108D18000E9A4A5B4A5CF01F0019300A4A4B4A5CBB -:108D2800F01F0016300A4A4B4A4CF01F0014300A54 -:108D38004A3B4A4CF01F0011300A4A3B4A3CF01F9C -:108D4800000F300A4A2B4A3CF01F000C300A4A2B0D -:108D58004A2CF01F000A300A4A1B4A2CF01F000751 -:108D6800300A4A1B4A1CF01F0005D82280008620C2 -:108D7800800085DC80039804800085F08000857879 -:108D88008003980C80007E448003981480007F70D4 -:108D98008003981C800079F48003982480007DC8A3 -:108DA8008003982C80008494800398348000633476 -:108DB800800398408000834C80039848800084009A -:108DC80080039850800082E4800398588000821CB9 -:108DD800800398608000817C80039868800080D43C -:108DE800800398748000791080039880D4211897A4 -:108DF800F01F000BF01F000BF01F000BF01F000B03 -:108E08006E0CF01F000B48B811893008F0091800E3 -:108E1800C0406E0CF01F0008D82200008000951496 -:108E2800800088D080009504800193A080013BBC1D -:108E3800000016A480004758D421202D3029EE7850 -:108E48000000F1D9D1A23019F1D9D0033007501858 -:108E58000E9B5007337CF01F000F1A9BFE7C3800D6 -:108E6800F01F000D0E9BE06A01A4FE7C3800F01F85 -:108E7800000B0E9BE06A0348FE7C3800F01F0008D8 -:108E88000E9BFE7C3800F01F00072FEDD822000053 -:108E98008000A2308000A8388000A8F08000A926B1 -:108EA8008000A8D4D401333CF01F0009334CF01FD4 -:108EB8000008335CF01F0006333CF01F0006334CFB -:108EC800F01F0004335CF01F0003D8028000A2A842 -:108ED8008000A2E6D421202DF01F0034F01F0034BA -:108EE800F01F0034F01F0034E06C1B00EA1C00B7D0 -:108EF800F01F00324B28201D4B2C1AD8F01F0032CF -:108F080030CB301CF01F00312FED1897580CC08162 -:108F18004AF8201D4AFC1AD8F01F002B2FED344BBD -:108F2800301CF01F002A8F0CC0814A98201D4A9CD3 -:108F38001AD8F01F00252FED3FF80E9CAEC8F01F81 -:108F48000026300B169CF01F0025F01F0025F01F8F -:108F58000025C0804A48201D49EC1AD8F01F001A85 -:108F68002FEDFACAFFFC0E9B4A0CF01F0021581C7B -:108F7800C0C1401A49FB0E9CF01F001F581CC0516D -:108F88000E9CF01F001ECFDB58CCC04058DCC061DF -:108F9800C03849BCC04849BCC02849BCF01F000AB9 -:108FA800F01F001ACFEB000080008A88800076E06E -:108FB80080008EAC80008E408000AAE88003970C69 -:108FC80080039888800094C48002DC3C800398A8C1 -:108FD80080039DC080008CD4800095C88000C8E4C0 -:108FE8008000895C800398B8800088E880013E880A -:108FF80080008AA0800193BC80008DF4800398E4EF -:109008008003990C8003993080009514D4314A1458 -:1090180058095F081296189716951493A888E06067 -:109028000100E06100FFC2E88920A868E203190096 -:10903800E069FFFFE7D9E828E9F88A02E06901005A -:1090480088E8F2080108682989151039E9F8BA0290 -:10905800EE021608049CF01F0010301CF01F000FD1 -:10906800F01F000F5806C090049CF01F000E301C23 -:10907800F01F000DF01F000D6828101310071005D1 -:109088005C83F1D7C0085803CD01069CD832000094 -:10909800000016AC8000A0408000A19880009ED4FB -:1090A80080009F5C8000A17080009E94D4013009EC -:1090B8005C7AF01F0002D80280009014D40148584E -:1090C80090E9701B120C702AF01F0003D8020000F0 -:1090D800000016AC8002E736D4014888189B118A34 -:1090E8003009F20A1800C07090E9701C120B702A3F -:1090F800F01F0003D8020000000016AC8002E7361B -:10910800D421208D48D8F0E60008FAE70008F0EAF4 -:109118000000FAC8FFF0FAEB0000F0E70008F0EBF7 -:109128000000E06CF980EA1C0337F01F0005300CE2 -:109138002FCD2FCDD82200008003996C8000A1C0CC -:10914800D401FAC9FFFCF01F0002D80280031C1CDE -:10915800D401F01F0002D8028002EE88D401F01F6B -:109168000002D8028002ECACD401F01F0002D80241 -:109178008002F0ECD401F01F0002D8028002E71050 -:10918800D401F01F0002D8028002EE2CD401F01F97 -:109198000002D8028002ED84D401F01F0002D80238 -:1091A8008002ECC8D401F01F0002D8028002EE0C45 -:1091B800D401F01F0002D8028002EDD0D401F01FC4 -:1091C8000002D8028002E87ED401F01F0002D80213 -:1091D8008002E8BCD401F01F0002D8028002E73602 -:1091E800D401F01F0002D8028002E28CD401F01FE3 -:1091F8000002D8028002E8D0D401F01F0002D80291 -:109208008002E2A4D401580CC0707808B08B7808AA -:109218002FF89908D802F9DBC008F01F0002D8021D -:10922800800078A0D431189616971495580AE08AC9 -:1092380000153008109AC0282FF8EE08070BF40B19 -:109248001800CFB10A38F9B50400EBD8E515EDB927 -:109258000001C0313303C0283203E9D9C001C090EE -:109268003004C1082FF42015069B0C9CF01F000D3C -:109278005805FE99FFF9C0682FF42FF70C9CF01FD2 -:1092880000090F8B580BCF91C0782FF42015069B3F -:109298000C9CF01F00045805FE99FFF9089CD83271 -:1092A8008000920CD431204DFAC4FFCC109368177B -:1092B800189568041698580BC0B13308BADB08999A -:1092C800069ABAC8FACBFFFCF01F001FC3985809CA -:1092D8005F1B58AA5F09F7E90009C0605808C04435 -:1092E8005C383016C0283006EECB003A3009FAC791 -:1092F800FFF00EF9C0B8F00A0D00029912985898BC -:10930800F1DBE9082D080EF800985808CF515806E7 -:10931800C1005803C0B0EDB40001C08132DB0A9C23 -:109328002013F01F000A3016C04832D830060EF855 -:109338000899069A0E9B0A9CF01F00030C0C2FCD6F -:10934800D83200008000922C8000920CD431203D4D -:109358003007500A18951696325432D3330230919A -:109368003730C978E8081800E081008E2FF60D889C -:109378005808E0800093E8081800E0800085E608B7 -:109388001800F9B90100F7B600FFF9B90001C038B3 -:109398002FF6A1B90D88E4081800CFB03008C048EE -:1093A800F80E00182FF60D8AF008002EF4CC0030C5 -:1093B800F4CB0030E20B1800FE98FFF4E00A180026 -:1093C800C0A1109A4008110B50084B98580BF00B8D -:1093D8001700C548364BF60A1800C0A1361B400ACC -:1093E8001ADB1AD93019740B2FCA502AC358370BF5 -:1093F800F60A1800C121361A40091ADAF2CAFFFC27 -:10940800501A308A1ADA720B3009310A0A9CF01F96 -:1094180000292FED1807C3C8378BF60A1800C0417A -:10942800400A361BC078358BF60A1800C091400AEE -:10943800341B1ADB1AD9740B2FCA502ACE6B375B30 -:10944800F60A1800C0B1361B400A1ADB1AD93009CF -:10945800740B2FCA502A30AACDAB363BF60A180037 -:10946800C171109A4008700B2FC8FB6B0008500898 -:10947800FACBFFF83008FB6800090A9CF01F000EC1 -:109488001807C0682FF70D8B0A9CF01F000C2FF6E9 -:109498000D885808FE91FF685805EBF81000F9B9D7 -:1094A8000100F1F91E000E9C2FDDD8328003997C53 -:1094B800800092AC8000922C8000920CD401189B02 -:1094C800FACAFFFC300CF01F0002D8028000935447 -:1094D800D40148A972082FF89308F2F800CC58086C -:1094E800C040F2FC00D45D18FE780D003019918957 -:1094F8007078D402D6030000000001184838F0F94B -:1095080000D0700CB33C5EFC00000118D431495601 -:1095180030020C9730152F46EEC1FF2C0E930E9497 -:109528000D88E4081800C18166086E291039E08B9F -:1095380000146C185808C0306C2C5D180D98EA0897 -:109548001800E9F80000EFF90001F3D8E008EFF897 -:109558000A02EDF51E002EC62EC70236CE21D832DD -:1095680000000118D431300E189830A5494C1C96CB -:109578002FCCFCC3FFFF1897F9340008EC0418003F -:10958800C071FDD3C0082ECCEA0E1800CF311C9C48 -:1095980048B530030A96FC0E002EEAF500D0F00517 -:1095A8000D048F040D08EF630008EC0E0026080870 -:1095B800EF6B00098F188D498D3AD83200000118D9 -:1095C800D421300A16971896328B495CF01F001583 -:1095D800300AFE7C0D00149BF01F00134935FE7CF9 -:1095E8000D00EAFB00D0F60B1073A19BF01F0010D2 -:1095F800FE7C0D00F01F000FFE7C0D00F01F000E1A -:10960800EAC9FF2CEB4600CCEB4700D430182F45B5 -:10961800AA882EC51235CFD1D8220000800094D850 -:109628008000A3A08000A594000001188000A580F8 -:109638008000A57A8000A562D401306AF01F00027C -:109648005F0CD8028002E710D401F93A0020F738FD -:109658000020F4081800C020D80AF01F00035F0C8F -:10966800D80200008002E710D42119D919881AD924 -:1096780019C91AD919B91AD919A91AD91999486732 -:109688001AD9486A1AD8312B0E9CF01F00050E9C77 -:109698002FADD822000016E0800399848002EC40A8 -:1096A800D4214058F5D8C008F00916181ADAF5D8A8 -:1096B800C108F1D8C2081ADA48671AD8486A1AD90C -:1096C800310B0E9CF01F00050E9C2FCDD8220000F8 -:1096D800000016F4800399A48002EC40D421488746 -:1096E8001896321A300B0E9CF01F00060C9BED3AB0 -:1096F80000200E9CF01F00040E9CD822000016BC0F -:109708008002E8BC8002E736D431300318971696F9 -:109718001491129218950694C1D805002FF4009C54 -:10972800F01F0012F80300030C33E0880009201D25 -:1097380048FC1AD6F01F000F2FEDC108201DEE05BA -:10974800010B1AD00A9C0C0B48BAF01F000C2FED25 -:1097580018050234CE350E35C021D83A30080AF83B -:10976800EA07010CD83200008002EDD0800399B4DA -:10977800800094C4800399CC8002EC40D4211897CF -:109788002DFCF01F001B201D1ADC49ACF01F001A2D -:109798000E9CF01F001A500C499CF01F00176EC851 -:1097A800498C5008F01F00146EF82FED5818C0416E -:1097B800495CF01F0011EF3800383049F2081800F2 -:1097C800C0E03059F2081800C0603029F2081800CB -:1097D800C091C03848DCC04848DCC02848DCF01FCD -:1097E800000648DCF01F0004D822000080009670B4 -:1097F800800399CC800094C4800096E4800399D0BB -:10980800800399D8800399E8800399F480039A0823 -:1098180080039A1C800384D4D421202DFACCFFFC29 -:10982800F01F000C401870185808C04148ACF01FD1 -:10983800000B3007C0887008F007032CF01F0008E1 -:109848002FF75C57401870191237CF632FEDD822C5 -:1098580080018F0480039A40800094C4800097841C -:10986800D431202D300818921696BAE8169CF01FAD -:10987800001DEDBC0000C04149BCF01F001C3007B2 -:109888002FF649B30E94FAC5FFFCC208660BF6081A -:109898000709E2190044C210E04700405F9C0D8AA6 -:1098A800F60A0709E21900445F09F9E91009E8090D -:1098B8001800C131BADABAC8310A300B0A9C2FE64F -:1098C800F01F000CE4070B0C2FF7ED38FFFF5808CA -:1098D800CDE10E9C5C5CC028300C2FEDD832000026 -:1098E8008002EDD080039A50800094C40000049C4C -:1098F8008002F0ECD421204D1A981AD8FAC8FFF843 -:109908001AD8FAC8FFF01AD8FAC8FFE818971AD870 -:10991800169C49BBF01F001B2FCD584CC221403864 -:10992800E04800FFE08B001E402B580BC1A5E04B20 -:1099380000FFE089001740195809C135E04900FFC8 -:10994800E0890010400A580AC0C5E04A00FFE089D3 -:109958000009B16BF7E811881448F1E91088C028AC -:109968003008F0091618AEB8AE890E9CF3D8C208B4 -:10997800F1D8C108AE99AEA82FCDD82280039A603D -:109988008002EBF4486870085808F9BC00FFF9B980 -:109998000101F1F91E10F9BC01015EFC0000170479 -:1099A800D4214988169770085808C021DC2A580C19 -:1099B800C080189B321AF0CCFFEFF01F0013C0389C -:1099C800F16C003148F85807C080700C0E9B306A63 -:1099D8002CECF01F000DC088700C306A2CECE06B8A -:1099E80000FFF01F000A48787008F139003130088C -:1099F800F0091800C021DA2AF01F0005DA2A000051 -:109A0800000017048002E7368002E8BC80019EF857 -:109A1800D4314A241896169714951292680358035D -:109A2800C3B1338B301CF01F001E890C189BC0B1CA -:109A380049C89088EDB80003C2F1201D49A849BC67 -:109A48001AD8C10849ACF01F001B49691891581C65 -:109A5800C0E09288EDB80003C1F1201D4928496C87 -:109A68001AD8F01F00163FFC2FEDD8326808913243 -:109A7800F16300109106911791259288EDB80003C3 -:109A8800C020D8324888201D48DC1AD8F01F000BA7 -:109A9800029C2FEDD832DC3A000017048002DC3C2F -:109AA800000016A280039A8080039AE080009AC87A -:109AB80080018F2480039AF8800094C480039B203F -:109AC800D431202D1697581CC290C083582CC670CC -:109AD8004A78583CE08101A8C998F01F00264A48F6 -:109AE80018969088EDB80003C0A1F01F00234A38EB -:109AF8001ADC4A3C1AD8F01F00232FED333CF01F24 -:109B08000022334CF01F00216E185808E08001979E -:109B18006E3B0C9C5D18E08F019249589088EDB817 -:109B28000003C08149A8201D49AC1AD8F01F0015B0 -:109B38002FED334CF01F0014333CF01F0014EF39A5 -:109B480000103008F0091800E0800179F01F0012B9 -:109B5800581CE080017448689088EDB80003E081E3 -:109B6800016E201D48A848DC1AD8C659000016A264 -:109B78008001997C800096E480039AC880039B3812 -:109B8800800094C48000A3008000A2E680039CE8C3 -:109B980080039B5480019EF880039B784B589088E3 -:109BA800EDB80003C0814B48201D4B4C1AD8F01F5C -:109BB80000342FED4AF89088EDB80003C0814B18A7 -:109BC800201D4B1C1AD8F01F002E2FED333CF01F20 -:109BD800002F6E285808C0306E3C5D18EF39001011 -:109BE8003008F0091800E080012AF01F0029581CED -:109BF800E080012549F89088EDB80003E081011F55 -:109C0800201D4A084A3C1AD8C1699088EDB800035B -:109C1800C0814A18201D4A1C1AD8F01F00192FEDC0 -:109C28006E085808C0306E3C5D18EF3900103008D7 -:109C3800F0091800E0800103EF390031F00918003D -:109C4800E08000FDF01F00161894FACCFFFCF01F0E -:109C58000015581CC591401870185808C550300593 -:109C6800EEC1FFEFEEC3FFCE0A960A92C488000049 -:109C7800000016A280039ABC80039BAC800094C4A9 -:109C880080039A9880039BC48000A2E680019EF816 -:109C980080039BE880039AA880039C1C8001997C20 -:109CA80080018F04EF390031E4091800C080700882 -:109CB800029CF005032BF01F0041C1F0306A4C0BE9 -:109CC800069CF01F0040C0A040187008069CF005D4 -:109CD800032B2DFBF01F003CC1005806C0A0401804 -:109CE8006CC97008F005032870C81039E0890006AF -:109CF80040187008F00503262FF55C5540187019B8 -:109D08001235CD13C02830060C34C0415804E08108 -:109D1800009658065F1858045F19F1E90009C20057 -:109D2800089B0C9CF01F0025C1D068C8FE58FFC0D6 -:109D3800E08400856CCAF0C9FFF71439E084007F1D -:109D48004A299289EDB90003C0D1201D1ADA1AD820 -:109D580049F84A0C1AD8F01F00202FCDC0385808EF -:109D6800C0C0202DECCBFFDF306A1A9CF01F001B0F -:109D7800F01F001B2FEDC17849489088EDB800030B -:109D8800C0C1EECCFFEFF01F001749181ADC496C70 -:109D98001AD8F01F00112FEDEECCFFEFEF3B00318A -:109DA800F01F0012588CC060589CC2F0581CC21199 -:109DB800C458F01F000FC4288000965080039C38B8 -:109DC8008002EDE680009640000016A280039A8C7F -:109DD80080039C40800094C48002E73680019DDCAB -:109DE800800096E480039C6880019EA0800199CC45 -:109DF80049489088EDB80003C0814938201D493C86 -:109E08001AD8F01F00132FEDF01F0012581CC16064 -:109E180048C89088EDB80003C111201D48A848EC37 -:109E28001AD8C0989088EDB80003C081201D48B8A2 -:109E380048BC1AD8F01F00062FED2FEDD8320000CD -:109E4800000016A280039A8C80039C94800094C41E -:109E580080019EF880039CB080039ABC80039CCC50 -:109E6800D4012FEC580BC080F7DCC008FE7C28001A -:109E7800F01F0005D802F7DCC008FE7C2800F01FA0 -:109E88000003D8028000A6C68000A716D42148C7C0 -:109E9800C098300BFE7C2800F01F000A6E082FF8CF -:109EA8008F086E0CF7DCC008CF51F9DCC288F01FB0 -:109EB800000630194858B089D82200000000170859 -:109EC8008000A7FA80009E680000170CD40148683B -:109ED800300B700CF9DCC288F01F000430094848C8 -:109EE800B089D8020000170880009E680000170C8F -:109EF800D421202D4948301B700CF9DCC288F01F92 -:109F08000013E06B00D7FE7C2800F01F0011FAC791 -:109F1800FFFAE06B00FFFE7C2800F01F000D0E9B8F -:109F2800FE7C2800F01F000B9AB8EDB80007CF217F -:109F38004858300B700CF9DCC288F01F00042FED74 -:109F4800D82200000000170880009E688000A7FA49 -:109F58008000A816D421202D49B8A96C910C49B8C5 -:109F680011893008F0091800C030F01F00193009B5 -:109F780049684957B0896E0C301BF9DCC288F01F5C -:109F88000015E06B0082FE7C2800F01F00136E08AD -:109F9800F3D8C008FAC7FFF8F7D8C10CFE7C280030 -:109FA800F3EB109B0EDBB18BF01F000B0FABFE7CAD -:109FB8002800F01F00090FBBFE7C2800F01F0006D8 -:109FC8002FEDDA2A000017080000170C80009EF811 -:109FD80080009E688000A7FAD42149381897118913 -:109FE8003008F0091800C0604908700CA98CF01FEF -:109FF8000010EEC6FF000F3BFE7C2800F01F000D8E -:10A008000C37CFA14898300B700CF8CCFF00910C9E -:10A01800F9DCC288F01F000830194838301CB089B4 -:10A02800D82200000000170C0000170880009F5C71 -:10A038008000A7FA80009E68D421202D4A78A96C58 -:10A04800910C4A7811893008F0091800C030F01FC7 -:10A05800002530094A284A17B0896E0C301BF9DCF4 -:10A06800C288F01F0021E06B00D2FE7C2800F01FA0 -:10A07800001F6E08F3D8C008FAC7FFF8F7D8C10C5C -:10A08800FE7C2800F3EB109B0EDBB18BF01F001752 -:10A098000FABFE7C2800F01F00150FBBFE7C2800CC -:10A0A800F01F0012E06B00FFFE7C2800F01F000F7D -:10A0B800E06B00FFFE7C2800F01F000CE06B00FF47 -:10A0C800FE7C2800F01F0009E06B00FFFE7C2800E2 -:10A0D800F01F00062FEDDA2A000017080000170C01 -:10A0E80080009EF880009E688000A7FAD421202D69 -:10A0F800498818973009118AF20A1800C070B08987 -:10A108004958700CA98CF01F0015FAC5FFFAEEC665 -:10A11800FF00E06B00FFFE7C2800F01F00110A9B87 -:10A12800FE7C2800F01F000F9A380EC80C37CF218C -:10A138004898300B700CF8CCFF00910CF9DCC28801 -:10A14800F01F000930194838301CB0892FEDD8228B -:10A158000000170C000017088000A0408000A7FA34 -:10A168008000A81680009E68D4211897C088F01F28 -:10A178000006486CF01F000620175C87483C58070B -:10A18800CF71DA2A800090C40000171080009FE089 -:10A19800D4211897C088F01F0006486CF01F0006ED -:10A1A80020175C87483C5807CF71DA2A8000A0F452 -:10A1B80000001710800090E0D4213027FAC4FFEC8B -:10A1C8001896A887C0C80C9A089BFE7C2800F01F28 -:10A1D8000009C020D82A09882FF8A8880988EE081D -:10A1E8001800FE98FFF230094838301CB089D82290 -:10A1F8008000A73C0000170CE1B80000EE18000131 -:10A20800F1D8C201C020D3033019F20B094B994B86 -:10A21800783958085E0CD5035EFCFE681400700996 -:10A22800F3DCD0C191095EFCF8081605A968E0289E -:10A23800F000581BC0D0C063582BC0F0583BC12059 -:10A248005EFF3019F20C0949916991A9C108F60C11 -:10A25800094B915B91ABC0B83019F20C094991696F -:10A26800C0583019F20C0949915991993019F20CDA -:10A27800094C912C5EFDD703D4213007189616940B -:10A288000E95C0880D9B0D8C2FF72FE6F01F00044C -:10A2980018450837CF830A9CD82200008000A230D6 -:10A2A8003018F00C0948A59CA96CE02CF000F9487E -:10A2B800004899185EFC3018F00C0948A59CA96C58 -:10A2C800E02CF000F94800745EFC3018F00C0948E6 -:10A2D800A59CA96CE02CF000F94800785EFC3018C9 -:10A2E800F00C0948A59CA96CE02CF000F948005432 -:10A2F800F948004499185EFC3018F00C0948A59CF0 -:10A30800A96CE02CF000F9480058F9480044991865 -:10A318005EFC301AF8081605F40C0949A968E0280B -:10A32800F000F14900C4143BC080C043582BC0F171 -:10A33800C098F14900A8C038F14900A4F14900B813 -:10A34800C078F14900A8F14900B4C0285EFAF14983 -:10A3580000945EFD3018F00C0948A59CA96CE02C0F -:10A36800F000F94800985EFCF8081605A968E0288E -:10A37800F000F0F800D0F00C0A4CF9DCC0015EFCEB -:10A388003018F00C0948A59CA96CE02CF000F9489D -:10A3980000D85EFCC008D703F3DBC0054898A59B2E -:10A3A800F00B00387018F009092C4878F5DAC0026B -:10A3B800F00A0329FE780800F00B09295EFC00006A -:10A3C80080039CFC8003773CD42148F8E3B8000163 -:10A3D80048E848F9700E48FC3008FE7B0800C0E8E1 -:10A3E8007216EC0A00262FFA8D0C0E3ACFA3F60847 -:10A3F800092E2F892FF85948C0407207300ACF6BB1 -:10A40800D8220000800376008003773C80039CFC00 -:10A418008000A39CE0680083FE790800F00C010C22 -:10A42800F20C0328F0CAFFC0F20A032C580C5E0C89 -:10A438004869F80C1200F2080038F80C111F70185F -:10A44800F00C032C5EFC000080039CFC78C83019DB -:10A45800F1D9D10399C85EFC78C83019F1D9D00177 -:10A46800F1DBD20399C85EFCD421FAC4FFEC68176B -:10A47800680EEFD7C003FDDEC0013004E9D7D00372 -:10A48800E9DED0E1E9D7D103E9DED1E1E9DAD203A7 -:10A49800E9DBD2E1E9D8D303E9D9D3E199147958B2 -:10A4A800EDB80005CFD1D822D4213007405E2F8BDC -:10A4B800EFD8D021EFD9D104EFDAD204EFDED306FA -:10A4C800F80B0927D822F5E910192F8BF3E8102883 -:10A4D800F80B0329F3D8D043F80B09295EFC2F8B1E -:10A4E800F80B0328A1A8F80B09285EFC7958EDB8E9 -:10A4F8000000CFD15EFC7808F1DBD00299085EFC41 -:10A50800EC5BBB9FE08B0004304BC138E068C6BFF2 -:10A51800EA18002D103BE08B0004305BC0A8E0680F -:10A528001200EA18007A103BF9BB0306F9BB0207D0 -:10A5380078A8F1DBD00399A878A8F1DAD10399A813 -:10A548007808A3A899087958EDB80007CFD17808FA -:10A558003019F1D9D00299085EFC7808EDB80004EA -:10A56800CFD07808A1A899087808EDB80004CFD012 -:10A578005EFC301899485EFC7808EDB80004CFD02E -:10A58800992B7808EDB80004CFD05EFCD42130F8C0 -:10A5980014951697F00A18005FBA30181896F00B41 -:10A5A80018005FB9F5E91009C020D82AF00B180087 -:10A5B800C0A1FE7C0C00F01F0015300BFE7C0C00C7 -:10A5C800F01F00136C08EDB80004CFD0A377B1A733 -:10A5D800EFE510878D076C08EDB80004CFD06C0844 -:10A5E800E2180010CFD18D186C08EDB80004CFD058 -:10A5F8006C08EDB80004CFD03FF88D286C08EDB892 -:10A608000004CFD0DA2A00008000A4548000A4609F -:10A618003038F00A18005FB93078F00B18005F88FE -:10A62800F3E81008C1913108F00B1800E08B001511 -:10A63800E06800809908208BF4081601F5DAC0015B -:10A64800F1EB104B580AF9BA0100F9BA0002F7EA1F -:10A65800100A99CA5EFD302C5EFCD4013019189896 -:10A66800F73B000DF20B1800E0880004302CD802EC -:10A67800300AE06900809909301E7019149CF3DED5 -:10A68800D001F3DBD081F3DAD0E130FAF3DAD20487 -:10A698009119D802D4013018F00B18005FBEF00AE7 -:10A6A80018005FB81C48C030302CD8027818F1DB8D -:10A6B800D021F1DAD041F1D9D3089918D80A7819FC -:10A6C8001898EA19000F9919781CE21C0004C100B7 -:10A6D80030E9F20B1800E08B001A7019B16B300CDE -:10A6E800EA1BFFF0E81BFFFF126B911B5EFC303981 -:10A6F800F20B1800E08B000B70192F0B301AF40BBB -:10A70800094B5CDB126B911B5EFC302C5EFCE06835 -:10A718002710C0585808C0215EFF20187849EDB9A5 -:10A728000009CF917818EA18000F9918FC18010051 -:10A7380099085EFDD4313036F737000CEC07180065 -:10A74800E08B0050F733000B301EFC031800E08B41 -:10A758000049F73800083079F2081800E08800420C -:10A768003109F2081800E08B003D7619F205160150 -:10A77800F4050005EA090D04E8C90001E04900FEF6 -:10A78800E08B0030F0CA00080E923008EC1200018D -:10A79800A197F1D7D001F1D2D021F1D3D061F1DA6C -:10A7A800D084F73A0009F1D4D1081789F1DAD20830 -:10A7B800F73A000AF1DAD308FC091800C0C0C093C0 -:10A7C800302AF4091800C090EC091800C0A1C0781C -:10A7D80099C8C06899D8C04899E8C02899F8D83A63 -:10A7E800302CD832301899085EFC784CF9DCC0213E -:10A7F8005EFCE0682710C0585808C0215EFF20188A -:10A808007849EDB90001CF915C7B993B5EFDE0682A -:10A818002710C0585808C0215EFF20187849E2194F -:10A828000201E0490201CF717828300CB6085EFCBD -:10A8380076095829E08800035EFE7618A769109B00 -:10A84800E61BC000120CF3D8C003AFB91649109B21 -:10A85800E61B30001649109BE61B0C001649109B9E -:10A86800E61B03001649109BE61B00C01649109B07 -:10A87800E61B00301649109BE61B000C1649109B7E -:10A88800E61B00031649109BE21B60001649109B4B -:10A89800E21B10001649109BE21B0C001649109B86 -:10A8A800E21B03002FCC1649109BE21B0080109A74 -:10A8B8001649E21A0008109BE2180030E21B00401B -:10A8C8001649F3E81008144899085EFDF6081506BD -:10A8D800582BF9BC0BFFF9D8E80CF9B80805F9F8BA -:10A8E8008A00F9BC08005EFC582BE08800035EFE75 -:10A8F800F6081506F80800082FC87008EDB8000F0C -:10A90800C0C1A76BF3DAC010160C2ECC7808E0187B -:10A918000000F3E810089908F9DAC0105EFC582B1B -:10A92800E08800035EFEA76B160C7818EDB8000FE0 -:10A93800C0A12E4CF3DAC0107808E0180000F3E844 -:10A9480010089908F9DAC0105EFCD401F60E150457 -:10A958001C3AF9BE0210F9BE0308FC0B024BF608BC -:10A968001601F00A003AF40B0D0AF4091603F2C8AE -:10A978000001E048FFFEE0880003DA0A7818E86B77 -:10A988000000E418FFF7E018FECF590EF60E171076 -:10A99800F9BE0000FDE810089918F5DAC003F3EADB -:10A9A80011099989D80A7858EDB80001C030302CBF -:10A9B8005EFCF7DBC009997B5EFD7858E21800E081 -:10A9C800C030304C5EFC7859EDB90000F9BC010389 -:10A9D800F9F90006F00C1700E06A01FFF3DAE02845 -:10A9E800F7F80A005EFCE1B80000EE180001F1D8A3 -:10A9F800C201C020D3033FF9993978595808C020BB -:10AA0800D50330089918999899A8EA68610C9908AB -:10AA18005EFCD703D421201D500A16961897F01F04 -:10AA2800002F400A5806C5500DC83049F2081800D2 -:10AA3800E08800503095EA081800E08B004B0DD9EB -:10AA48003078F0091800E08B00458C39E068010186 -:10AA5800F0091900E08B003EED3900083038F009A4 -:10AA68001800E08B00376C0B0E9CF01F001D581C63 -:10AA7800C3000DC8EA081800C0416E18B1B8C05824 -:10AA880020586E19F3E810688F186E19ED3A00080F -:10AA98000DD8A978F1EA10E812488F18302A8C38B6 -:10AAA800F3D8C010F4081900E08800086E18ADB893 -:10AAB8008F1820298FA9C0586E18F1E910C98F196D -:10AAC8006E18E018FFF08F18300C35088F08C02872 -:10AAD800301C2FFDD82200008000A9EE8000A9526A -:10AAE8004828910C5EFC0000000018E8D431189842 -:10AAF800783E580EC620F90600105806C5E0300901 -:10AB08003FF3129A3344C1780E91E8071800C0A1A8 -:10AB1800F2CAFFFEF4C9FFFF5C7A5C89FC0A070AE7 -:10AB2800C0A8F6071800C4A05C75FC050709E4096D -:10AB380000095C89EC091900C0F2F2C5FFFFF9D9D8 -:10AB4800C0105C85FC0C000CEAC2FFFF19870E914F -:10AB5800E6071800CDA1580AC3003019F20A1800F8 -:10AB6800C0617028E06900802948C0C87028302971 -:10AB7800F20A1800C0412D483409C0482D48E06940 -:10AB880000C0300C3FF7C0D8F60A1800C1705C7ED0 -:10AB9800F00E070CEC0C000C5C8CF20C1900C0D207 -:10ABA800F8CEFFFF5C7C5C8EF00C000CFCC6FFFF4F -:10ABB800198AEE0A1800CE91300CD832D401F9085F -:10ABC800001CF3D8C010F2CEFFFE140EE04E004475 -:10ABD800E088000F48F8201D1AD8E06804E31AD866 -:10ABE80048D848EC1AD8F01F000E2FCDC008786E50 -:10ABF800FC090009F36B00F02FF8786BF3D8C0104C -:10AC0800F6090009F36A00F02FF8F958001CD80279 -:10AC180080039DC480039E0880039D9C800094C48B -:10AC2800D4013439F908001CF2081900E088000F33 -:10AC380048C8201D1AD8E06804EE1AD848A848BCAD -:10AC48001AD8F01F000B2FCDC008786AF3D8C010AF -:10AC5800F4090009F36B00F02FF8F958001CD8022A -:10AC680080039DC480039E5080039D9C800094C4F3 -:10AC7800D401580CC0E14B18201D1AD8E068062BE7 -:10AC88001AD84AF84AFC1AD8F01F002F2FCDC0084E -:10AC9800786A580AC0E14A98201D1AD8E068062C3C -:10ACA8001AD84AA84A7C1AD8F01F00272FCDC00806 -:10ACB800F908001C3439F2081900E088000F49F837 -:10ACC800201D1AD8E068062D1AD84A1849DC1AD867 -:10ACD800F01F001D2FCDC008F7D8C010160A3FFB83 -:10ACE800F56B00F02FF8129B5C88300AF958001CAD -:10ACF800C1584928201D1AD8E06806321AD8494890 -:10AD0800490C1AD8F01F00102FCDC008F1DEB01082 -:10AD1800786EFC090009F36A00F0F0CEFFFFF3D863 -:10AD2800C010F6081900FE98FFF3F958001CF3D973 -:10AD3800C002CE01D802000080039DC480039E8C0F -:10AD480080039D9C800094C480039EB080039EDC99 -:10AD5800D401F908001CF3D8C010F2CAFFFEE04A7B -:10AD68000044E088000F4918201D1AD8E06804F54F -:10AD78001AD848F848FC1AD8F01F000F2FCDC00881 -:10AD8800786AF4090009F5DBC108F36A00F02FF8C6 -:10AD9800786AF3D8C010F4090009F36B00F02FF8B3 -:10ADA800F958001CD802000080039DC480039F1C32 -:10ADB80080039D9C800094C4D401F908001CF3D83A -:10ADC800C010F2CAFFFCE04A0044E088000F49B80E -:10ADD800201D1AD8E06804FD1AD84998499C1AD849 -:10ADE800F01F00192FCDC008786AF4090009F60A87 -:10ADF8001618F36A00F0786A2FF8F3D8C010F4092F -:10AE08000009F5DBC208F36A00F0786A2FF8F3D876 -:10AE1800C010F4090009F5DBC108F36A00F02FF847 -:10AE2800786AF3D8C010F4090009F36B00F02FF822 -:10AE3800F958001CD802000080039DC480039F605D -:10AE480080039D9C800094C4D421F9380035A3D890 -:10AE5800F9680035189678A75807C2406E1C580C38 -:10AE6800C050F01F001130088F186E285808C09184 -:10AE78006E355805C061EF090010EA091900C0E0F5 -:10AE880048A8201D1AD8E06804C51AD84888489CE4 -:10AE98001AD8F01F00092FCDC0080E9CF01F00071C -:10AEA8008DA5D8228001122880039DC480039FA00D -:10AEB80080039D9C800094C48002E28CD421189762 -:10AEC800782C580CC050F01F000830088F286E3CB2 -:10AED800580CC070F01F00043008EF5800108F386D -:10AEE800D82200008002E28CD4211896580CC0E1C8 -:10AEF8004AE8201D1AD8E06805D11AD84AC84ADCA1 -:10AF08001AD8F01F002D2FCDC00878A75807C0E128 -:10AF18004A68201D1AD8E06805D31AD84A784A5CCE -:10AF28001AD8F01F00252FCDC0086E585808C0E069 -:10AF380049E8201D1AD8E06805D41AD84A0849DC1F -:10AF48001AD8F01F001D2FCDC0086E655805C0E047 -:10AF58004968201D1AD8E06805D51AD84998495C6F -:10AF68001AD8F01F00152FCDC0080A9AE06B0134DB -:10AF78000A9CF01F00158F5CC041E06C00FFD822CE -:10AF88009859E0680133F0091900E08B00214878EE -:10AF9800201D1AD8E06805DD1AD848C8485C1AD8B8 -:10AFA800F01F00052FCDC00880039DC480039FB407 -:10AFB80080039D9C800094C480039FD880039FFCDD -:10AFC8008003A0288000D3188003A054EF38001312 -:10AFD800EA081800C0514D3870092FF991097818FE -:10AFE800301B8F684CF9720A8F0AB09BB08B306B9C -:10AFF800B0ABF40B1618B0CBF7DAC2083009B0FAC8 -:10B00800B0DBF5DAC108305BB0B9F1690008F16965 -:10B018000009F169000AF169000BF169000CF16996 -:10B02800000DF169000EF169000FB0EAEF3A001265 -:10B03800F60A18005F0C30ABF60A18005F0BF9EB44 -:10B04800100BF20B1800C0513049F20A1800C0D199 -:10B058000DC9F169000C0DD9F169000D0DE9F1690F -:10B06800000E0DF9F169000F3009ECCAFFD1F16942 -:10B078000010F1690011F1690012F1690013F1691A -:10B088000014F1690015F1690016F1690017F169FA -:10B098000018F1690019F169001AF169001BF0CB79 -:10B0A800FFE4ED35002E3106EA091900F9BC02006B -:10B0B800F5FC380016CC2FF92FFA5C89EC09190039 -:10B0C800CF413009F0CAFFD4129C340B14CC2FF9AD -:10B0D8005C89F6091900CFB13009F0CAFF94129CB7 -:10B0E800E06B008014CC2FF95C89F6091900CFB108 -:10B0F8003639F16900EFF16900EC3829F16900EDA2 -:10B108003539F16900EE344A3009F0C8FF10EF59BB -:10B11800001C10C92FF95C89F4091900CFB1D82A8D -:10B12800000001F0D421580CC0E14A28201D1AD88B -:10B13800E06806141AD84A084A0C1AD8F01F0020EA -:10B148002FCDC00878A75807C0E149A8201D1AD8F4 -:10B15800E06806161AD849B8498C1AD8F01F0018A2 -:10B168002FCDC0086E5C580CC0E14928201D1AD8A4 -:10B17800E06806171AD84948490C1AD8F01F001079 -:10B188002FCDC0086E685808C0E148A8201D1AD8FD -:10B19800E06806181AD848D8488C1AD8F01F000852 -:10B1A8002FCDC008F01F000A30088F688F58D822AA -:10B1B80080039DC48003A09880039D9C800094C454 -:10B1C8008003A0BC8003A0E08003A10C8000D13CD8 -:10B1D800D42130D878A7EF390012F0091800EFF819 -:10B1E8001E12F9B80100EFF81E13300818968FE800 -:10B1F8008F988FB88FA88FD88FC8EF48004CEF482A -:10B208000048EF480044F01F0029EBDCC008C201E9 -:10B21800301A335B0E9CF01F0026307B0E9CF01F0B -:10B2280000250E9CF01F00246E5CEF0B001CF6CB73 -:10B23800FF105C7BF01F00210C983439EECAFFDC4C -:10B248006E5B6E1CF01F001E0C9CF01F001EEF387A -:10B2580000132FF85C58EF6800133099F2081800B3 -:10B26800E0880005E0692710C058E06903E8F009A4 -:10B2780002495C79E06801F4F2C9FE0DF2080C0895 -:10B288000C9CEF58001EF01F00100C9C48FBF01F90 -:10B2980000100C9C48DBF01F000F0C9C48BBF01FF3 -:10B2A800000E0A9CD82200008000AEF08000ABC4DB -:10B2B8008000AC288000AC788000D2108001139008 -:10B2C8008000B12C8000CABC8003B4098000CBC8C0 -:10B2D8008000CA748000CA92D421305878A7EF3908 -:10B2E8000012F0091800EFF81E12F9B80100EFF883 -:10B2F8001E131896F01F0026EBDCC008C2A1301AF6 -:10B30800335B0E9CF01F0023303B0E9CF01F002285 -:10B31800302A339B0E9CF01F001FED1B002C0E9C47 -:10B32800F01F001E0E9CF01F001E6E5CEF0B001C31 -:10B33800F6CBFF105C7BF01F001B0C983439EECA6B -:10B34800FFDC6E5B6E1CF01F00180C9CF01F0017D2 -:10B35800EF3800132FF85C58EF6800133099F208A3 -:10B368001800E0880005E0694E20C058E06907D061 -:10B37800F00902495C790A9CF2C9FE0DE06801F403 -:10B38800F2080C08EF58001ED82200008000AEF02A -:10B398008000ABC48000AC288000AD588000AC7839 -:10B3A8008000D210800113908000B12CD42118960F -:10B3B800580CC0E14AF8201D1AD8E06802F51AD8DE -:10B3C8004AD84AEC1AD8F01F002E2FCDC00878A70B -:10B3D8005807C4E0EF3900123088F0091800C4811A -:10B3E80017B8178A1799B169F3EA118917AAF3EA06 -:10B3F8001089F1E910096EA81039C3A130C8EF68A7 -:10B4080000123008EF680013F01F001E5C5CC28158 -:10B41800301A335B0E9CF01F001C304B0E9CF01F43 -:10B42800001B304A332B0E9CF01F00176EAB0E9C8E -:10B43800F01F00170E9CF01F00176E5CEF0B001C2E -:10B44800F6CBFF105C7BF01F00140C983439493A96 -:10B458006E5B6E1CF01F00120C9CF01F0012EF3880 -:10B4680000132FF8EF6800133148EF58001ED82258 -:10B4780080039DC48003A13880039D9C800094C4F0 -:10B488008000AEF08000ABC48000AC288000ADC066 -:10B498008000AC788000D2108003B405800113903E -:10B4A8008000B12CD421303878A7EF390012F00988 -:10B4B8001800EFF81E12F9B80100EFF81E131896DD -:10B4C800F01F002AEBDCC008C321301A335B0E9C46 -:10B4D800F01F0027303B0E9CF01F0026302A339BBC -:10B4E8000E9CF01F0023E06B02400E9CF01F002210 -:10B4F800304A332B0E9CF01F001E6EAB0E9CF01FC3 -:10B50800001F0E9CF01F001E6E5CEF0B001CF6CB9C -:10B51800FF105C7BF01F001B0C98343949AA6E5B46 -:10B528006E1CF01F001A0C9CF01F0019EF38001356 -:10B538002FF85C58EF6800133099F2081800E0887B -:10B548000005E0692710C058E06903E8F0090249DE -:10B558005C790A9CF2C9FE0DE06801F4F2080C0857 -:10B56800EF58001ED82200008000AEF08000ABC467 -:10B578008000AC288000AD588000ADC08000AC7859 -:10B588008000D2108003B405800113908000B12C94 -:10B59800D4214BD811B9118B119A11A8B16AF5EBC6 -:10B5A800118AF5E81088F3E8100878A78FA8EF3912 -:10B5B80000123068F0091800EFF81E12F9B80100FF -:10B5C800EFF81E131896F01F0031EBDCC008C3E13A -:10B5D800301A335B0E9CF01F002E301B0E9CF01FA0 -:10B5E800002D302A339B0E9CF01F0029ED1B002CE8 -:10B5F8000E9CF01F0029304A337B0E9CF01F00245C -:10B60800301B0E9CF01F0023303B0E9CF01F0021C6 -:10B6180031CB0E9CF01F001F306B0E9CF01F001DDD -:10B628000E9CF01F001E6E5CEF0B001CF6CBFF108B -:10B638005C7BF01F001B0C98343949AA6E5B6E1CAA -:10B64800F01F00190C9CF01F0019EF3800132FF899 -:10B658005C58EF6800133059F2081800E0880005BC -:10B66800FE79EA60C058E06903E8F20809495C79A4 -:10B678000A9CF2C9FE0DE06801F4F2080C08EF58C4 -:10B68800001ED8228003B4098000AEF08000ABC44D -:10B698008000AC288000AD588000AC788000D210C3 -:10B6A8008003B405800113908000B12CD421301898 -:10B6B80078A7EF390012F0091800EFF81E12F9B850 -:10B6C8000100EFF81E131896F01F0039EBDCC008D4 -:10B6D800C501301A335B0E9CF01F0036303B0E9CC0 -:10B6E800F01F0035302A339B0E9CF01F0032ED1BF3 -:10B6F800002C0E9CF01F0031304A332B0E9CF01F9B -:10B70800002D6EAB0E9CF01F002E304A336B0E9C42 -:10B71800F01F00286E9B0E9CF01F0029304A337BD7 -:10B728000E9CF01F0024301B0E9CF01F0023303BA2 -:10B738000E9CF01F002131CB0E9CF01F001F306BB8 -:10B748000E9CF01F001D0E9CF01F001E6E5CEF0B80 -:10B75800001CF6CBFF105C7BF01F001B0C983439E3 -:10B7680049AA6E5B6E1CF01F001A0C9CF01F001992 -:10B77800EF3800132FF85C58EF6800133059F208BF -:10B788001800E0880005FE79EA60C058E06903E81F -:10B79800F20809495C790A9CF2C9FE0DE06801F4D7 -:10B7A800F2080C08EF58001ED82200008000AEF006 -:10B7B8008000ABC48000AC288000AD588000ADC0CC -:10B7C8008000AC788000D2108003B405800113900B -:10B7D8008000B12CD421304878A7EF390012F00945 -:10B7E8001800EFF81E12F9B80100EFF81E131896AA -:10B7F800F01F0025EBDCC008C291301A335B0E9CA9 -:10B80800F01F0022303B0E9CF01F0021302A339B92 -:10B818000E9CF01F001EED1B002C0E9CF01F001D3F -:10B828000E9CF01F001D6E5CEF0B001CF6CBFF108A -:10B838005C7BF01F001A0C983439499A6E5B6E1CB9 -:10B84800F01F00180C9CF01F0018EF3800132FF899 -:10B858005C58EF6800133099F2081800E08800057A -:10B86800E0692710C058E06903E8F00902495C79EB -:10B878000A9CF2C9FE0DE06801F4F2080C08EF58C2 -:10B88800001ED8228000AEF08000ABC48000AC2837 -:10B898008000AD588000AC788000D2108003B405D9 -:10B8A800800113908000B12CD4314A5830167007AB -:10B8B80030A20C9330043055C3E86EA85808C3A0D2 -:10B8C800F1090022F2CA0001F15A0022EC0919001C -:10B8D800C151F1380012E40818005F0AE6081800A0 -:10B8E8005F09F5E91009E8091800C041EA081800DD -:10B8F800C2110E9CF01F0013C1D8F1090020F2CA32 -:10B908000001F15A0020EC091900C141F138001278 -:10B91800E40818005F0AE60818005F09F5E910094D -:10B92800E8091800C041EA081800C0410E9CF01F41 -:10B9380000066E075807CC21D8320000000080CCE2 -:10B948008000B7DC8000B2E0D4211896580CC0E122 -:10B958004C08201D1AD8E068024E1AD84BE84BFC58 -:10B968001AD8F01F003F2FCDC008F9380035A3D8EA -:10B97800F968003578A7F909002CE068023FF0095A -:10B988001900E088008B5807C091350CF01F00356E -:10B998001897E08000838DACC2E86E1C580CC0304C -:10B9A800F01F00316E585808C0E04AA8201D1AD868 -:10B9B800E068026C1AD84AD84A8C1AD8F01F0028B6 -:10B9C8002FCDC0086E285808C0916E385808C0613D -:10B9D800EF090010F0091900C0E049E8201D1AD845 -:10B9E800E068026E1AD84A2849CC1AD8F01F001C01 -:10B9F8002FCDC008350A300B0E9CF01F001EF01F1B -:10BA0800001E8F1C1895C0610E9CF01F001C8DA590 -:10BA1800C178344A49ABF01F001B499B343A6E1C6D -:10BA2800F01F00190C9A499B6E1CF01F00190C9C02 -:10BA3800F01F00185C5CC0700C9CF01F0017E06CD5 -:10BA480000FFD822ED380035A3B8ED680035D822BC -:10BA580080039DC48003A13880039D9C800094C40A -:10BA68008002E2A4800112288003A14880039FA0DD -:10BA78008002E8BC800112008002E28C8003B409D5 -:10BA880080011260800113208000BBBC800111F886 -:10BA98008000B5988000AE50E06C00FFD82200000E -:10BAA800D421202D1896580CC0E14BA8201D1AD877 -:10BAB800E06803781AD84B884B8C1AD8F01F0038E6 -:10BAC8002FCDC00878A75807C0E14B28201D1AD8E9 -:10BAD800E068037A1AD84B384B0C1AD8F01F00309C -:10BAE8002FCDC0086F295BF9C1102E2933C8E06A31 -:10BAF800FFFFF2080D081438F40817B0EF580020BB -:10BB08005808F9B80001EFF80C106F395BF9C1104B -:10BB18002E2933C8E06AFFFFF2080D081438F4082C -:10BB280017B0EF5800225808F9B80001EFF80C11C7 -:10BB38006EB850185808C041FC18FF0050186EC85D -:10BB480050085808C0716EA84019F3E80008A1A869 -:10BB58005008EECBFFD80C9CF01F0013FACBFFFC6B -:10BB68000C9CF01F00121A9B0C9CF01F00110C9CDF -:10BB7800F01F0010EF39001230A8F0091800EFF894 -:10BB88001E12F9B80100EFF81E132FEDD82200009D -:10BB980080039DC48003A16080039D9C800094C4A1 -:10BBA8008003A17C8000CBC88000CA928000CA7440 -:10BBB8008000CB88D43178A71896149574186E290C -:10BBC8005809C0916E395809C061EF0B0010F20B8B -:10BBD8001900C0E04BE8201D1AD8E06805651AD89E -:10BBE8004BC84BDC1AD8F01F003D2FCDC0088A5B2C -:10BBF80032BAF40B1900E088020F118B302AF40BCB -:10BC08001800E0810209F93C002EECCBFFD1F0CA04 -:10BC1800FFE4C0982FF917345C59153EFC0418004E -:10BC2800E08101FAF8091800CF6311FA11CB11D994 -:10BC380011E8B169F3EB1189F3E810896E08F5E9A9 -:10BC480010091039E08101E80E9CF01F00258A4C8C -:10BC5800E06800F0F00C1900E088000FF8CC00F064 -:10BC6800EF5C00105C7CF01F001F8F3CC051EF5C44 -:10BC78000010E08F01D1E06C00F0F01F001A8F2C4B -:10BC88001894C0C16E3C580CE08001C6F01F001625 -:10BC9800EF5400108F34E08F01BF189B3009E06A21 -:10BCA80000F00A9CF01F0011E06800F0F00C190089 -:10BCB800C2004878201D1AD8E068052E1AD848C84E -:10BCC800485C1AD8F01F00052FCDC00880039DC41A -:10BCD80080039FA080039D9C800094C48000AEC414 -:10BCE8008002E2A48002E28C8000CEC48003A1948A -:10BCF8006E3B580BE08001B2E06900F0EF1A0010CB -:10BD08000A9CF01F0036EF080010F8081900E080C0 -:10BD180001A54B38201D1AD8E06805351AD84B18EC -:10BD28004B1C1AD8F01F00312FCDC00819A8305A63 -:10BD3800F4081800E0810100EF3800123019F20809 -:10BD48001800E08100EC30086CA4333B89D889B82E -:10BD580089C8089CF01F0026C0F0F8C8FFFC19AB82 -:10BD6800119919BA1188B16AF5EB118AF5E81088AA -:10BD78001248E948004433AB089CF01F001DC0E09E -:10BD8800F8C8FFFC19AB119919BA1188B16AF5EB1B -:10BD9800118AF5E810881248C0386918A198E9484E -:10BDA800004833BB089CF01F0012C0E0F8C8FFFC35 -:10BDB80019AB119919BA1188B16AF5EB118AF5E82E -:10BDC80010881248C0286918E948004C6828F0C94A -:10BDD800FFF0C0F11298C1C88000CEC480039DC492 -:10BDE8008003A1C880039D9C800094C48000AAF4AD -:10BDF800F1390013F13B0010F13A0011F13800124B -:10BE0800B16AF5EB118AF5E81088F3E8100889A8FB -:10BE1800301B089CF01F0084C0E0F8C8FFFC19AB79 -:10BE2800119919BA1188B16AF5EB118AF5E81088E9 -:10BE3800124889B8303B089CF01F007BC0E0F8C866 -:10BE4800FFFC19AB119919BA1188B16AF5EB118A7F -:10BE5800F5E81088124889C831CB089CF01F007299 -:10BE6800C0E0F8C8FFFC19AB119919BA1188B16A7A -:10BE7800F5EB118AF5E81088124889D8306B089CD0 -:10BE8800F01F00691892C2E01998A38889E8582819 -:10BE9800F9B80B02E9F8BA0E3003C1D8E608150262 -:10BEA800E6C9FFF22FE8E8090029E4080008113E76 -:10BEB800113AB16AF5EE118A118EF5EE108A1191D8 -:10BEC800069CF5E11001F2CBFFFC93112FF3F01F54 -:10BED80000575C5368E81033CE23069C4D4BF01F87 -:10BEE80000536CA43008E93A00123089EF58001E5C -:10BEF800F20A1800E9F91E12E9F81E130C9C300A20 -:10BF0800E8CBFFD8F01F004BE93800132FF8E96899 -:10BF180000133018E958001EC7E820383029F20805 -:10BF28001800E08B007930080C9CEF58001EF01FB9 -:10BF38000042C7183069F2081800C3513019EF38A9 -:10BF48000012F20818005F0B3039F20818005F0978 -:10BF5800F7E91009C0813049F2081800C040F40818 -:10BF68001800C5916CA40C9C3003EF53001EF01F01 -:10BF780000330C9C4AEBF01F00320C9C4ACBF01F9C -:10BF880000310C9C4AABF01F0030E939001230C870 -:10BF98000C9CF0091800E9F31E13E9F81E12F01FB3 -:10BFA800002BC398302AF4081800C351EF38001248 -:10BFB800F2081800C30130086CA4EF58001E336B58 -:10BFC800089CF01F0019C270F8C8FFFC19AB119942 -:10BFD80019BA1188B16AF5EB118AF5E81088124888 -:10BFE80089986828F0C9FFF0C0311298C108F13962 -:10BFF8000013F13B0010F13A0011F1380012B16A58 -:10C00800F5EB118AF5E81088F3E8100889A80C9C6C -:10C01800F01F000F0E9CF01F000F0A9CF01F000E6F -:10C02800D83200008000AAF48000C19C8003B409C3 -:10C038008001384C8000BAA88000CABC8000CBC8F8 -:10C048008000CA748000CA928000B5988000B6B497 -:10C058008000AEC48000D13C335B0E9CF01F00030F -:10C06800FE91FE66CD8B00008000AAF4D4314C18F6 -:10C07800301370073002069430813050C7686EA6BE -:10C088005806C720ED05001EE6051900E0880006E1 -:10C098002015ED55001EC688E6051900C651ED3875 -:10C0A8000012306AED52001EF40818005F0A30C909 -:10C0B800F20818005F09F5E91009300AF4091800B8 -:10C0C800C501E8081800C0B1ED380013E0081800F1 -:10C0D800E08B00360E9CF01F0028C468E2081800A8 -:10C0E800C191ED380013E8081800E08B0010300A01 -:10C0F800ECCBFFD80E9CF01F0021ED380013ED5556 -:10C10800001E2FF8ED680013C2F80E9CF01F001CEB -:10C11800C2B8E0081800C0510E9CF01F001AC248AF -:10C128003049F2081800C0F1ED380013E208180091 -:10C13800E08B00060E9CF01F0014C1680E9CF01FD7 -:10C148000013C0F83039F2081800C0E1ED380013C8 -:10C15800E8081800E08B00060E9CF01F000DC04890 -:10C168000E9CF01F000C6E075807C8A1D8320000BB -:10C17800000080CC8000B6B48001384C8000BAA89A -:10C188008000B2E08000B7DC8000B1D88000B4AC99 -:10C198008000B598D4013019F20C1800E08B001D0E -:10C1A800580B5F1A48D9720958095F19F5E900094F -:10C1B800C13017B9178E179A17A8B16AF5EE118A08 -:10C1C800F5E81088F3E81008C0704858304AF00CB9 -:10C1D800002CF01F0004D80200001D5800001D505C -:10C1E8008002E736D42130181897F00B1800E08B3E -:10C1F80000074868304AF00B002BC038304A484BDB -:10C20800F01F00040E9CD82200001D508003B409C2 -:10C218008002E736D4313013189516911492E60C43 -:10C228001800E088000F4BB8201D1AD8E0680246B5 -:10C238001AD84B984B9C1AD8F01F00392FCDC0083C -:10C248004B89F20C0028F20C072B11BA119911A88E -:10C25800B169F3EB1189F3E81088F5E81008C0E13B -:10C268004AC8201D1AD8E06802471AD84AE84ABCCA -:10C278001AD8F01F002B2FCDC008300AE06B011030 -:10C28800149CF01F002A1897C041E06600FFC758A9 -:10C2980078045804C0E049F8201D1AD8E068024D17 -:10C2A8001AD84A3849DC1AD8F01F001D2FCDC0080B -:10C2B800781630CA089B0C9CF01F001EECC9FFF4CE -:10C2C800AC92ACD3E5D2C110ACA3ACC42011AC8203 -:10C2D80032EC2FF1F2C8FFFF300AC05810CBF5D26C -:10C2E800C0082FF1038BF4C2FFFFE80B18005F139F -:10C2F800F80B18005F16E7E60006E8061800CEF10E -:10C30800B28A0389E8091800C1601099CE3B000081 -:10C318008003A1E48003A22880039D9C800094C42C -:10C3280000001D508003A2408000D3188003A2643F -:10C338008002E8BCF0CBFFFB10C9B089B0A9301966 -:10C34800B099B0B96E180E9C101B5C7BF01F000CE6 -:10C3580048C848D6F0050025335A6C0C0A9BF01FD4 -:10C36800000B6C0C0A9A33590E9BF01F0009EDDC88 -:10C37800C0080E9CF01F00070C9CD8328000D21019 -:10C3880000001D5000001D5880011320800114F08A -:10C398008000D13CD421189A303CF80A1800E08873 -:10C3A800000F4BE8201D1AD8E068028A1AD84BC83B -:10C3B8004BCC1AD8F01F003C2FCDC0084BB8E06713 -:10C3C8000118F4070247F007000730180F8B169979 -:10C3D800F00B1800C0A0C603302BF6091800C0F0F7 -:10C3E800F8091800C4C1C4383008AEABAEB8AE986E -:10C3F800EECBFFF43028300CAE88C3680FA92019A3 -:10C408005C59AEA9C4910FBB2FFB5C5BAEBB0F9C04 -:10C41800304EFC0B1800C251F20C1800C1214A4AD8 -:10C4280015FB15CE15DC15EAB16CF9EE118CF9EA9D -:10C43800108AF7EA100AC050AEB9AEA8AE98D82252 -:10C44800EEF801105808C070EEFA0114300BEECC6B -:10C45800FFF45D183008AE883008EF480110D82284 -:10C46800AEABEECBFFF4F01F0013D8226E282018D5 -:10C478008F28C121EF480110AE88D8224878201DA6 -:10C488001AD8E06802C61AD848B8486C1AD8F01FFB -:10C4980000062FCDC008D8228003A1E48003A28023 -:10C4A80080039D9C800094C4000018F000001D507B -:10C4B8008000C21C8003A29CD431580B5F081292E2 -:10C4C80016974BB914967209189558095F04F1E448 -:10C4D8001004E08100B6580CE08000B31989E8091F -:10C4E8001800E08000AEF01F0033E04C00FFE08B46 -:10C4F80000A84B1B0A9CF01F0031C08137F8AEA47E -:10C50800AE88AE9C3018AEB8D8320A9CF01F002C0A -:10C51800F8081618AE88F1DCC208AEBCAE98F1DC9B -:10C52800C108AEA85BFCE081008F4A63300430305C -:10C5380006910788E0081800C171E80400280A9CE1 -:10C54800F00B1503101B2FFBE20B003B2FCBF01F4A -:10C55800001BC0A1E0680118B13449A8F004000428 -:10C56800E8F8010CC0782FF4E6C3FEE85844CE2161 -:10C578003FF8F0091618AE89F3D8C208AEB8AE99DC -:10C58800F3D8C108AEA95BF8C5E1300748E848DB35 -:10C59800118A0E9C0E9930313043F2C0FFFF178488 -:10C5A80016985804C1211297C358000000001D585E -:10C5B8008002EDD08003A2BC8002ECC880011E106E -:10C5C800000018F0000018ECE2041800C0C117C8F9 -:10C5D800F4080104F40801081838E08A0005F9D4C1 -:10C5E800C0081297F3D0C008F6CBFEE8E609180099 -:10C5F800CD513039F2071800E08B0027494BE0682D -:10C608000118EE080248F6080008118BF20B180012 -:10C61800C1B1F4C9FFFFB0CAF1460110301AF142A6 -:10C628000114B08AF0CCFFF448A80A9BB089F01F27 -:10C63800000A0E9CF01F0009E06C00F2D832E06C92 -:10C6480000F7D832D83AE06C00FFD832000018F072 -:10C65800000018EC8002ED708000C39CD40148985B -:10C6680070085808C0D0300CF01F0007301CF01FAD -:10C678000006302CF01F0004303CF01F0003D802E5 -:10C6880000001D588000C39CD421494C4946F01F26 -:10C6980000156C0518975805C1E1F01F00138D0CA3 -:10C6A800C1A0492B0A9AF01F00120A9A491B6C0C68 -:10C6B800F01F00116C085808C0E05807C0C0EE0908 -:10C6C800161848E8B0B7B089F3D7C208EFD7C10841 -:10C6D800B099B0A7D82200008003A2C800001D5856 -:10C6E80080011E10800112008003B40980011260CD -:10C6F8008000C704800111F800001D50D431E068A3 -:10C7080002001496944AF00A1900E08B00E331986D -:10C71800F00A1900E08800DE4DF75C7A30090E9BBC -:10C728000C9CF01F005E8C48F8081900E08100D2CC -:10C738000F993038F0091800E08B00CCE06501183B -:10C74800AB394D75120530290B8AF20A1800E081C1 -:10C7580000C1AA880FBAF5DAC004AADA0FD80FCB3D -:10C76800F1EB108B0FF80FEC5C8BF1EC108C3009AF -:10C778005C8C0FA8F2081800E084009DF20A1800EB -:10C788005F18301AF40B18005F1AF5E81008F20861 -:10C798001800E0810090EAC4FFF42F4708980F8939 -:10C7A800129AE21A00C0E04A00C0C1502FF7C098A0 -:10C7B800F3DBC0082FF7118BF40B1800C7B12FF863 -:10C7C800F2CB00010F8A5809CF41F20A1800C03095 -:10C7D8002FF8CE6B4B0B30082F4B1739129AE21AF1 -:10C7E80000C0E04A00C0C060120B1789F0091800A9 -:10C7F800CF51F1DCC0082FBB300E301A3047C58846 -:10C808001739129CE21C00C0E04C00C0C060120B3B -:10C818001789FC091800CF512FFB17CC17D9B1691C -:10C82800F3EC118917ECF7330008F3EC108917A221 -:10C8380017FC1781F9E91009F73C0009F9E3108C96 -:10C8480017B35C8CE7E2108317925C83E5E11082F2 -:10C85800F4021900C281F4031900C251EE0C190048 -:10C86800C2218B29E8593A80E0880005E8783A80A7 -:10C878008B28EAC7FEF42F6B304A0E9CF01F000984 -:10C88800EAF801105808C250EAFA01140E9B089CF5 -:10C898005D18C1F800001D5C8000CEC4000018F0CF -:10C8A8008002E7365C7C20182F6C5C58180B5808FF -:10C8B800CA81EAF801105808C070EAFA0114300B6E -:10C8C800EACCFFF45D183008AA883008EB4801105C -:10C8D8000C9CF01F0002D8328000D13CD401F01F1C -:10C8E8000003F01F0003D8028000C8F88000C6903B -:10C8F800D42149A949ABF2CCFEC4F2C8FF54300A8E -:10C90800F2C9FF50910A930AB22A172EF14EFFFC82 -:10C918002F092F081838CF71492949382FD9149C65 -:10C92800E019FFFCF0C6FFDC48D7490E910CEE0A6F -:10C938000405189BC098700493042FFB9109FC0A06 -:10C9480005045C8B0809EA0B1900CF632FC82FEA8E -:10C958000C38CED1D8220000000080D48003A2D8A1 -:10C9680000001F5C000072E88003A394D401580BF8 -:10C97800C200F1DBC002C0E048F8201D1AD8E06808 -:10C98800016B1AD848D848EC1AD8F01F000E2FCDE2 -:10C99800C00848D8F00C03299709F00C092B48B8AF -:10C9A800A56CF00C000CF8CCFF54780820189908F6 -:10C9B800D80200008003A2EC8003A33080039D9C72 -:10C9C800800094C4000072E8000080D4D421189834 -:10C9D800588CE088000F49F8201D1AD8E068013DFE -:10C9E8001AD849D849DC1AD8F01F001D2FCDC00825 -:10C9F80049CE49D9FC0C032CF0CAFFF5580CC230BB -:10CA0800A56AF00B15047807F20B000BFC08092740 -:10CA1800F6CBFF5414097608720A2FF8103AF3F887 -:10CA28003A009708F1DCC002C13048A8201D1AD886 -:10CA3800E068014F1AD848D8488C1AD8F01F000867 -:10CA48002FCDC008A56A140992282FF8B228D82239 -:10CA58008003A2EC8003A35080039D9C800094C4B3 -:10CA6800000072E8000080D48003A370580BC0C097 -:10CA780017B8178A179917ABB169F3EA1189F3EB5D -:10CA8800108BF1EB100B993B5EFC580BC0C017B82C -:10CA9800178A179917ABB169F3EA1189F3EB108B71 -:10CAA800F1EB100B992B5EFC4828910C5EFC000002 -:10CAB800000080D0D4211897F9380035EDB800006F -:10CAC800C0D1A1C8F968003578885808C0205D1819 -:10CAD8006E785808C0300E9C5D18D822F93C003595 -:10CAE800F9DCC0015EFC580CF9FB1A075EFCD703A1 -:10CAF800D421300A18971696302C96CBF01F001ABE -:10CB08001895C041E06600FFC2B80C9BF01F0017E3 -:10CB1800EDDCC008C0500A9CF01F0015C2180A9826 -:10CB280070095809C0301298CFCB6EF95809C15016 -:10CB38006F095809C0E148F8201D1AD8E068025367 -:10CB48001AD848D848DC1AD8F01F000D2FCDC008D5 -:10CB58009305EF480040C048EF4800408FF50C9C13 -:10CB6800D82200008000D3188000CF988000D13CE4 -:10CB78008003A3A88003A44480039D9C800094C4E0 -:10CB8800D4211897F9380035EDB80000C170A1A874 -:10CB9800F968003578885808C0205D186E785808FC -:10CBA800C0300E9C5D18EF380035EDB80005C06147 -:10CBB8000E9CEECBFFFCF01F0002D8228001370C40 -:10CBC800D42117881799B169F3E8118917A8F3E8F0 -:10CBD800108917B81697F1E91009189678181039BE -:10CBE800C27049A8700CC0A8780978356C1810393B -:10CBF800C041301BF01F00160A9C580CCF614958E1 -:10CC08007008C14870095809C1006C1A1439C0D19C -:10CC18000F8A0F99B169F3EA11890FAAF3EA10890B -:10CC28000FBAF5E91009910970385808CEC10F8A72 -:10CC38000FB90F98B168F1EA11880FAAF1EA1088C4 -:10CC4800F3E810088D18D8220000820C8000E12437 -:10CC580000008214D421149712961895F01F001022 -:10CC68005807C0C00FB80F8A0F990FA7B169F3EA28 -:10CC78001189F3E71087F1E710078B275806C0C022 -:10CC88000DB80D8A0D990DA6B169F3EA1189F3E67D -:10CC98001086F1E610068B36D82200008000CBC83B -:10CCA800D4213006999899169926993699A6997695 -:10CCB800998699F6F94600404908FAC4FFEC681EBF -:10CCC8006804F96600351185F96500382FF5B085D7 -:10CCD8001897994EF01F000A0E9C5D145C5C4898EA -:10CCE800580CEC071710F1F90000EFF90A00F1F7FA -:10CCF8000A000E9CD82200000000730C8000CC5C57 -:10CD0800000080CC1898300CC0482FFC70085C5C80 -:10CD18005808CFC15EFC580CF9F81207F9B901019F -:10CD2800F1D9E108F9F81C075EFCD703D401580CC7 -:10CD38005F08580B5F09F3E81008C1304978201DD7 -:10CD48001AD8E068028F1AD84958496C1AD8F01FC7 -:10CD580000162FCDC008964AF4080008B848129C5F -:10CD6800984878095809CF819859F0091900C0E006 -:10CD780048A8201D1AD8E06802971AD848B8489CD5 -:10CD88001AD8F01F00092FCDC0089649990BF20850 -:10CD98000008B848D80200008003A4708003A4B437 -:10CDA80080039D9C800094C48003A4ECD421169732 -:10CDB800F01F00065807EFF81207F9B90101F1D979 -:10CDC800E108EFF81C07D8228000CD34D421580C94 -:10CDD800C0E14B58201D1AD8E06801B01AD84B386A -:10CDE8004B3C1AD8F01F00332FCDC008580BC03168 -:10CDF800169CD8223008F00B1900C154F60911000E -:10CE080098585C89F2081900C0F24A78201D1AD88F -:10CE1800E06801B71AD84A884A5C1AD8F01F00257A -:10CE28002FCDC0081699F93E000C300A3037F40EA1 -:10CE380019005F08EE0E19005F061497104678185F -:10CE4800F4061800C0A0F00B01099919F8CAFFF000 -:10CE58001439C2029918DA2A201E3017EE0E19006A -:10CE6800E08B000CF40B1900C1D4985AF20A19008F -:10CE7800C19316189918C0E848B8201D1AD8E06858 -:10CE880001E61AD848D848AC1AD8F01F000A2FCDA6 -:10CE9800C00898581608B8589848F00B000BB84BBB -:10CEA800D82ADA2A8003A47080039EA480039D9C5C -:10CEB800800094C48003A51C8003A53CD43116913E -:10CEC8001497580CC0E14AD8201D1AD8E068033ED0 -:10CED8001AD84AB84ABC1AD8F01F002B2FCDC00860 -:10CEE800580BC070300518960A920A930A90C388A6 -:10CEF8004A28201D1AD8E068033F1AD84A384A1C25 -:10CF08001AD8F01F00212FCDC0085809C0A08C588E -:10CF1800F208010AF0091900C043F3DAB010C1F8A9 -:10CF2800F1D9C0108C54E8090109EE091900EE097D -:10CF380017B06C1BE9D9B010F9D5C010100BE20C72 -:10CF4800000C089A5C7AF01F0012E8030003081727 -:10CF5800E80500055C835C855C8730096C0658062B -:10CF68005F1AE40719005F18F5E80008E0081800E0 -:10CF7800CCD1069CD83200008003A4708003A5B0F1 -:10CF880080039D9C800094C48003A5D08002E7366E -:10CF9800D431580C5F08580B5F0918961697F3E8B8 -:10CFA8001008C06198499648F0091900C0E24C7809 -:10CFB800201D1AD8E06802FE1AD84C584C5C1AD8C2 -:10CFC800F01F00452FCDC00830050A945806C0E16F -:10CFD8004BE8201D1AD8E06803031AD84BF84BDC3D -:10CFE8001AD8F01F003D2FCDC0088C5808995C79DD -:10CFF8008E53F5D8C010F7D3C010121AF3D5C0104D -:10D00800F6090109123AE7D5E413E8091750F1D9EE -:10D01800E51308985C786C1C100CF1D5C0105C8383 -:10D028006E1BF5D3C010100BF01F002DE604000492 -:10D038008C585C84F0041900E088000F4A38201DE1 -:10D048001AD8E068030F1AD84A684A2C1AD8F01F71 -:10D0580000222FCDC008F0041900EDF60000F9B445 -:10D068000000E60500058E585C85F0051900E0888B -:10D07800000F4968201D1AD8E06803151AD849A876 -:10D08800494C1AD8F01F00142FCDC008F00519001C -:10D09800EFF72000F9B502005807C2908E598E4864 -:10D0A800F0091900C2416E085808C2104878201DBE -:10D0B8001AD8E068031F1AD848C8486C1AD8F01F55 -:10D0C80000062FCDC00800008003A4708003A5F4DB -:10D0D80080039D9C800094C48003A6248002E736C8 -:10D0E8008003A6348003A64C8003A6685806C16056 -:10D0F8008C598C48F0091900C1116C085808C0E017 -:10D108004898201D1AD8E06803241AD84878488C13 -:10D118001AD8F01F00082FCDC0085807FE91FF58F5 -:10D128000E9CD8328003A4708003A66880039D9C5F -:10D13800800094C4D421189B580CC0E14AB8201D23 -:10D148001AD8E068021C1AD84A984AAC1AD8F01FB4 -:10D15800002A2FCDC008F939000C3038F009180022 -:10D16800E088000F4A18201D1AD8E06802281AD84B -:10D178004A284A0C1AD8F01F00202FCDC0083007C3 -:10D18800303530169679F2C800015C885809C0E13C -:10D198004968201D1AD8E06802351AD84988495CC0 -:10D1A8001AD8F01F00152FCDC008B6785808C1B19D -:10D1B800F738000C169CF0C900017604EA0819003B -:10D1C800C031308CC068EC091900E08B0006307C57 -:10D1D800F01F000CC038F01F000C2FF7089B5C579D -:10D1E8005804CD110E9CD8228003A47080039EA4FD -:10D1F80080039D9C800094C48003A6948003A6AC01 -:10D208008000C9748002E28CD421580CC0E14B988C -:10D21800201D1AD8E068015F1AD84B784B7C1AD8C1 -:10D22800F01F00372FCDC0083019F938000CF2086C -:10D2380018005F1A3039F20818005F19F5E900097B -:10D24800C1405808C1203029F2081800C0E04A98A7 -:10D25800201D1AD8E06801631AD84AA84A7C1AD84F -:10D26800F01F00272FCDC0089848F00B1900C3F213 -:10D27800F3D8C0101897F1DBB0105C7B121BC27892 -:10D28800E04BFFFEE08A000F49A8201D1AD8E0688D -:10D2980001771AD849C8499C1AD8F01F00192FCD10 -:10D2A800C0088E481608AE486E075807C0E14918EE -:10D2B800201D1AD8E068017B1AD8494848FC1AD8BA -:10D2C800F01F000F2FCDC008F1DAB0108E59F00909 -:10D2D800010AF2081900FE9BFFD5AE48AE586E0C45 -:10D2E800580CC030F01F000A30088F08D822000000 -:10D2F8008003A4708003A70080039D9C800094C4D1 -:10D308008003A7188003A7348003A7488000D13C76 -:10D31800D431202D16971495581CC0B0C083582CB2 -:10D32800C040583CC0B1C1783004C0583144C0280E -:10D3380030042EC42E445C84C0F84C08201D1AD832 -:10D34800E06800D11AD84BE84BEC1AD8F01F003E21 -:10D358002FCDC00830045825E08B00065815E08210 -:10D3680000DDCBF85835E08100E6308CF01F00373F -:10D378001896E08000F25C740E99E8C8FFFD5C79AD -:10D38800E018FFFCB847E06A02443000F4080108DE -:10D39800F8040004F0090D472ED4E014FFFCAC5744 -:10D3A8009914F965000C99005C77F8C3FDAC0E047C -:10D3B8000833C0E24A18201D1AD8E06800EB1AD8D2 -:10D3C8004A384A0C1AD8F01F00202FCDC008580838 -:10D3D800E089000F4998201D1AD8E06800ED1AD896 -:10D3E80049C8498C1AD8F01F00182FCDC008F20779 -:10D3F800010700980A9918943015E0610243B8753E -:10D40800E0620244C6A850195008308CF01F000F83 -:10D418000E9B189A5C8BF4CEFFF0F6011900F60CFF -:10D428001720E40C173040194008580AC1610C9CB9 -:10D438001496F01F0009C9088003A4708003A76030 -:10D4480080039D9C800094C48000C9D48003A77C7D -:10D458008003A7B08000D13C9508890AF569000CC3 -:10D46800F560000DE047FFFFC0E14BD8201D1AD83A -:10D47800E06801071AD84BB84BBC1AD8F01F003B1C -:10D488002FCDC008951EB45CB44BFDDEC002C0E0D1 -:10D498004B38201D1AD8E068010D1AD84B484B2C80 -:10D4A8001AD8F01F00322FCDC0085C7C8CDB18170F -:10D4B80014946C1CF80B000B1633C0E24A88201D2C -:10D4C8001AD8E06801101AD84AA84A7C1AD8F01F5E -:10D4D80000272FCDC008B4755807FE99FF96C3786A -:10D4E8000E985C782FD8E018FFFC5C74E8CCFFED50 -:10D4F800E01CFFFC100CF01F00201896C2D030086A -:10D50800F8040004AC572ED4B847E014FFFCF968BF -:10D51800000C99149908C1B8307CF01F00181896AF -:10D52800C1B03008AC57F965000CB847990899188C -:10D53800C0E848B8201D1AD8E068013D1AD8490843 -:10D54800489C1AD8F01F00092FCDC0083018AC78B5 -:10D558003008ED68000D0C9C2FEDD8328003A470C4 -:10D568008003A7E480039D9C800094C48003A7F8EF -:10D578008003A77C8002E2A48000C9D48003A82885 -:10D58800D43149B8781918951094300CF2C2FFF4C8 -:10D59800F3310009700718961893C1E8EF380010A6 -:10D5A8000238C1716E585808C1400A9A0E9B6E6CB9 -:10D5B80004995D18C0E05806C0410C95301CC0A8FD -:10D5C8006E388D3868088F388907301C3005C028B8 -:10D5D800300C0E966E37E60C18005F0858075F1976 -:10D5E800F3E80008E6081800CDA1D832000073104F -:10D5F800E06C00FB5EFCD421E067040078A8F90B1E -:10D60800002C78C9F5DBC010F90E003C100AEE0EAC -:10D618001900E0880005E06E0400C0285C7EF4096B -:10D628000107EE0E010EC076F95B002E78CCF40CE3 -:10D63800010CD822F009010A580AE08A00063008CD -:10D64800F958002ED82AF2080108F958002ED82ACD -:10D65800996B5EFCF94B008C5EFCF94B00885EFC14 -:10D66800F94B00985EFC998B5EFCF96A0039F94B1E -:10D6780000945EFC5EFC5EFC48A87008C028703808 -:10D688005808CFE148887008C02870385808CFE19A -:10D6980048687008C02870385808CFE15EFC000060 -:10D6A8000000820C0000821400008220D4014A6825 -:10D6B8007008C30870495809C0E14A48201D1AD8A3 -:10D6C800E06805AC1AD84A284A2C1AD8F01F00225C -:10D6D8002FCDC0085819C0E149C8201D1AD8E068E4 -:10D6E80005AD1AD849D849BC1AD8F01F001B2FCD50 -:10D6F800C00858A9C0E14958201D1AD8E06805AEED -:10D708001AD84978493C1AD8F01F00132FCDC00801 -:10D7180070385808CD0149387008C128704958A98F -:10D72800C0E048A8201D1AD8E06805B11AD848E812 -:10D73800488C1AD8F01F00082FCDC0087038580838 -:10D74800CEE1DA0A0000820C8003A8688003A8AC46 -:10D7580080039D9C800094C48003A8D88003A904FA -:10D76800000082208003A934D43118961497784891 -:10D778005808C0E04C48201D1AD8E068011A1AD889 -:10D788004C284C3C1AD8F01F00432FCDC008580A2B -:10D79800C3514C19720C4C19720A4C19109E9207FD -:10D7A8004C08E069100070052FF70A985C87EE0EA8 -:10D7B8001900F2071790C088F104001C0E93EE04BC -:10D7C8001900CF3070385808CF811898C088F104F4 -:10D7D800001C0E93EE041900CE8070385808CF81D3 -:10D7E8001498C088F104001C0E93EE041900CDD0E3 -:10D7F80070385808CF814AA8B0074A887008C1F81D -:10D80800F109001C0E93EE091900C181700A580A2B -:10D81800E0800099580BE0800096178C1799B16941 -:10D82800F3EC118917ACF3EC108917BCF9E910096E -:10D83800E0800089123AE080008670385808CE11DE -:10D8480049887008C1A8F109001CEE091900C141F6 -:10D85800700A580AC770580BC750178C1799B169C6 -:10D86800F3EC118917ACF3EC108917BCF9E910092E -:10D87800C690123AC67070385808CE6148A870052C -:10D888000A98C2D88003A8688003A96080039D9C79 -:10D89800800094C40000822000008214000001F877 -:10D8A8000000820C0000821CF109001C0E93EE0996 -:10D8B8001900C141700A580AC450580BC430178C5B -:10D8C8001799B169F3EC118917ACF3EC108917BCFF -:10D8D800F9E91009C370123AC35070385808CE518C -:10D8E80049A87008C158F109001CEE091900C0F1D7 -:10D8F800178A1799B169F3EA118917AAF3EA108907 -:10D9080017BAF5E91009700A123AC1C070385808F8 -:10D91800CEB1580BC11017891798B168F1E9118871 -:10D9280017A9F1E9108817B9F3E81008C050304A70 -:10D938000C9CF01F00078D354868ED57001C9106B8 -:10D94800D83AE06C00F5D832000082208002E73631 -:10D958000000821CD4211897169CF01F0008C0B044 -:10D96800F908002C5808C0702288EE081900F00742 -:10D9780017305C870E9CD82280012228D421F90810 -:10D98800002C1897F3D8C010E06CFFFFF5DBC0102F -:10D99800F8090109123AE08A000F4948201D1AD8EF -:10D9A800E06801BD1AD84928492C1AD8F01F00127E -:10D9B8002FCDC008100BE0680800EF5B002CF00BBF -:10D9C8001900EFF8BC160E9CF01F000CE04C01FF8C -:10D9D800E08A000AEF380026A1B80E9CEF680026FE -:10D9E800F01F0007D82200008003A8688003A988D8 -:10D9F80080039D9C800094C48000D5FE80010CECBF -:10DA0800D4211896304CF01F000A1897C0E0ECE8B3 -:10DA18000000F8E90000ECE80008F8E900086C48A4 -:10DA28009948781CF01F00030E9CD8228000C9D4A6 -:10DA38008000CD1ED4211896580CC0311897C0B854 -:10DA4800781C580CC030F01F000518970C9B304C00 -:10DA5800F01F00030E9CD8228000D13C8000C974BE -:10DA6800D42130071896C0880C9C6C06F01F00055E -:10DA7800F80700075C575806CF810E9CD822000093 -:10DA88008000DA3CD4217848189758A85F1A5808BB -:10DA98005F19F5E90009C2005818C1E0F8FC0084D4 -:10DAA800580CC060F01F000D3008EF4800843FF8A4 -:10DAB800EEFC0080EF58003AF01F000930066FECCA -:10DAC800EF460080F01F00066FFCF01F0005EF46D0 -:10DAD800007CEF460078D8228000D13C8000DA68CC -:10DAE800D421169778081638C04176389908C11895 -:10DAF8004B899308C0A870390E39C0614B599308F7 -:10DB08006E399139C06812985808CF614B1993083B -:10DB180030060E9C8F36F01F00306E4858A85F19EB -:10DB280058185F181268EC081800C0C0EF380026B3 -:10DB3800EDB80000C071A1B80E9CEF680026F01F78 -:10DB480000276E485818C3206FE85808C0E04A48B4 -:10DB5800201D1AD8E06804F91AD84A284A2C1AD87D -:10DB6800F01F00222FCDC0086FF85808C0E049C840 -:10DB7800201D1AD8E06804FA1AD849D849AC1AD82E -:10DB8800F01F001A2FCDC008EEF800805808C0E03A -:10DB98004938201D1AD8E06804FC1AD84958492C7D -:10DBA8001AD8F01F00122FCDC00830088F48F01F78 -:10DBB8000012C0E148A8201D1AD8E06805021AD84A -:10DBC80048E8489C1AD8F01F00092FCDC008D82271 -:10DBD800000082188000DA8C80010CEC8003A868B1 -:10DBE8008003A9AC80039D9C800094C48003A9C4D1 -:10DBF8008003A9E08000D6B48003A9F8D42118973F -:10DC080078485808C0E04A68201D1AD8E0680175AD -:10DC18001AD84A484A4C1AD8F01F00242FCDC008F9 -:10DC2800303CF01F00231896C380EF08001CF958F9 -:10DC3800001C6E6899688E48A1B8B8483018994891 -:10DC4800EF38000BF968000BEF38000AF968000A92 -:10DC58006E089908497972080E38C0316E38C108C3 -:10DC680049599308C0A870390E39C06149299308E9 -:10DC78006E399139C06812985808CF6148E99308FD -:10DC880030080E9B8F38302CF01F000C48C948D83C -:10DC98008D8970098D3991060C9CD8228003A8685B -:10DCA8008003AA1880039D9C800094C48000C9D476 -:10DCB8000000821C000082188000C9748000D5F81A -:10DCC80000008214D431204D4B583005700910964D -:10DCD8002FF90A9491090A934B2830627007E08F54 -:10DCE800019E6E485808C0E14AF8201D1AD8E0681D -:10DCF80002571AD84AD84AEC1AD8F01F002E2FCD4E -:10DD0800C0085818C0E14A88201D1AD8E06802588F -:10DD18001AD84A984A6C1AD8F01F00262FCDC00886 -:10DD280058A8C0E14A08201D1AD8E06802591AD834 -:10DD38004A2849FC1AD8F01F001F2FCDC0085828C0 -:10DD4800C071EF38004EE4081800E0800081EF3819 -:10DD5800004E30CAF4081800C7A0EF3800AC10997C -:10DD6800E8081800C300EEF900A82FF9EF4900A849 -:10DD7800493A100AF53AFFFF1439C6B33009EF499A -:10DD880000A8E4081800F9B90801F1D9E808EFF883 -:10DD98008EAC0E9CF01F000BC5C80000000082105E -:10DDA8000000820C8003A8688003AA3C80039D9C25 -:10DDB800800094C48003AA688003AA948003AC38C6 -:10DDC80080010A20EF08003AE6081900F9B90401B1 -:10DDD800F1D9E408EFF84C1D6FF85808C3A0EF0913 -:10DDE800003AEF08004CF0091900C3356E4858286E -:10DDF800C100EF09004AEF0800484CD1A3581208A7 -:10DE0800EF39004EE2090709F0090948EF58004CBC -:10DE1800EF080060EF090056F0091900F00917B083 -:10DE2800EF08003CF3D9C02FEF590058F00A15014C -:10DE3800F0091900EFFA3C2CEF08003CEF53003AC8 -:10DE4800EF5800560E9CF01F003BC0383018C02811 -:10DE580030086E495869C0B16C0B6EDAF60A010ACF -:10DE6800E04A0028E08800042FF85C588ECAEDBA12 -:10DE78000003C39158495F0A58795F091449E809B2 -:10DE88001800C3106C0AEEFC00A0EEF100A4F80123 -:10DE980002416ED9EEFB009CF4090109E20B000E69 -:10DEA800E06A01F4FC0A0D00FAE100080039E08894 -:10DEB80000062FF830115C58C178EF3100ADE20C44 -:10DEC800034BF60A0D0A1439E088000E50180E9C10 -:10DED800F01F0019EF3900AD30012FF9EF6900ADDF -:10DEE8004018C0283001EEFC0080580CC1106ED9D3 -:10DEF8006C0A121AEF09004CF2091006123AC08394 -:10DF08005018F01F000E30004018EF4000806E4996 -:10DF18005839C1516C0A6ED9F4090109E049002841 -:10DF2800E08800182FF85C58C14800008003A85802 -:10DF3800800110608001109C8000DA685899C091B7 -:10DF48006C0A6ED9F4090109E04900F0E08B00047D -:10DF58005808C4900E9CF01F00434C385805C14027 -:10DF680070081037C0E14C18201D1AD8E06802E488 -:10DF78001AD84BF84BFC1AD8F01F003F2FCDC00819 -:10DF88006E388B38C13870090E39C0E04B78201DC7 -:10DF98001AD8E06802E81AD84B884B6C1AD8F01FD8 -:10DFA80000362FCDC0086E399109EEF80098580850 -:10DFB800C0403FBB6E6C5D185801C0F0EF180024DC -:10DFC800201DEEC9FFFC1AD80E9AEF18001C6EAB84 -:10DFD8006F7CF01F002B2FED0E9B302C6E37F01F3F -:10DFE8000029C1C8EF3900382FF9EF690038EF3A36 -:10DFF8000039F20A1800E08B0010EF680038EEF8DC -:10E0080000945808C0600E9B6E6C5D185C5CC04143 -:10E018000E9CF01F001D0E956E375807FE91FE638B -:10E0280049A849B410957006C6086C4858A8C0E0BD -:10E0380048E8201D1AD8E068030C1AD8495848DC6B -:10E048001AD8F01F000D2FCDC00868096CD8F20847 -:10E058000108E04800F0E08B004C0C976C36C4587F -:10E068008000DA8C0000820C8003A8688003AAC4B0 -:10E0780080039D9C800094C48003AAF08001023430 -:10E088008000C97480010CEC00008220000082101E -:10E098008003AB1C6A081036C0E149A8201D1AD8B5 -:10E0A800E068031B1AD84988498C1AD8F01F001851 -:10E0B8002FCDC0086C388F38C1386A080C38C0E0DA -:10E0C8004908201D1AD8E068031F1AD8491848FCC7 -:10E0D8001AD8F01F000F2FCDC0086C388B080C9B86 -:10E0E800302C6C36F01F000C5806CA01C0780C9C06 -:10E0F800F01F000A5807CCF1CE1B2FCDD8320000F4 -:10E108008003A8688003AB4C80039D9C800094C466 -:10E118008003AB748000C9748000DA8CD431202D60 -:10E1280018951691784858A8C0A1189B4A2CF01F3A -:10E1380000230A9B302CF01F0022C3B8780850082F -:10E148007818F903001C5018F9020024797778A68A -:10E15800F8F400987860189B49ACF01F00186BFC25 -:10E16800580CC030F01F00186BEC580CC030F01F72 -:10E178000016EAFC0080580CC030F01F00130A9B00 -:10E18800302CF01F000F5804C040009C3FBB5D14AA -:10E198005801C0F0201D5C72F1D3C0101AD20C9B3C -:10E1A800FAC9FFF4FACAFFF80E9CF01F00082FED19 -:10E1B8002FEDD832000082208000DAE88000C97490 -:10E1C8000000820C8000DA6880010234D42118969D -:10E1D800302CF01F00511897C5114D084D0A189999 -:10E1E8007008740BC0A870DAF60A010A123AF4092A -:10E1F8001720F00C172070385808CF61580CC04011 -:10E20800301BF01F0048302CF01F00431897C30143 -:10E218004C584C3A18997008740E37FBC178F13A8B -:10E228000014EC0A1800E08B000DF60A1800E08BC9 -:10E23800000970D7FC0701071237C033109CC0389B -:10E24800169A12977038149B0E995808CE91580C4C -:10E25800C040301BF01F0033302CF01F002F1897E0 -:10E26800C5704B28F10900D42019F15900D44AF897 -:10E27800F10900D42019F15900D4E06A00B0300B3C -:10E288000E9CF01F002B3408EF6800143FF8EF686D -:10E29800000B4A384A7A70097408F2080008950891 -:10E2A800EF48006CEF480068EF48005CEF4800500A -:10E2B8003008EF6800ADEF680038E0680800EF58F4 -:10E2C800002EEF58002C3068EF58004AEF58004CE9 -:10E2D800E0681000EF580072E0680200EF58003C58 -:10E2E8003FF8EF58003A3018EF5800564928EF48E1 -:10E2F800008CE068DD00EA18006DEF48009CE078CB -:10E3080024F88FD9EF4800A03098EF4800A40E9C5D -:10E31800D82200008000C9D40000822000008210AA -:10E328008000E1240000820C000080D48002E8BC58 -:10E33800000001F48000E5ECD401340CF01F000269 -:10E34800D80200008000E1D4D431189714961293B3 -:10E35800169578445804C0E04C98201D1AD8E068F7 -:10E36800020A1AD84C784C8C1AD8F01F00482FCDC6 -:10E37800C008580BC041E06600F7CB78304A140C4F -:10E38800F01F0043EF560024EF08001CE8081900AE -:10E39800C34110944BF84C0970064C08720B700C72 -:10E3A8004BF9E06A100092082FF80C995C88F00489 -:10E3B8001900F4081790C078F30E001CF00E19002D -:10E3C800CF4072395809CF911899C078F30E001CC4 -:10E3D800F00E1900CEA072395809CF911699C0785D -:10E3E800F30E001CF00E1900CE0072395809CF91B7 -:10E3F8004AB9B208EF58001C4AA84AB9700A72080C -:10E40800F40800089308EF48005CF0C90001E068D0 -:10E418000800EF580060EF58002CEF58002E300825 -:10E428008FC88FA8E0680200EF49006CEF490050E0 -:10E43800EF58003C0A9BE06C0200F01F001C5C8C4B -:10E44800F808100AEF5800583018EF430090EF58BA -:10E458000056EF5C003C30288F48495972080E3846 -:10E46800C0316E38C2C849399308C26870390E394C -:10E47800C221490993086E399139C2288003A868D6 -:10E488008003AB9C80039D9C800094C48002E73687 -:10E498000000820C0000821400008220000001F8B5 -:10E4A80000008210000001F48000D95C0000821C8A -:10E4B8000000821812985808CDA148D9930848D866 -:10E4C80070098F3991073019201D30081AD9109A10 -:10E4D8003029109B0E9CF01F00082FEDEDDCC008C2 -:10E4E800C0410E9CF01F00050C9CD8320000821819 -:10E4F8000000820C8001035080010CECD421189795 -:10E5080078465826C390E08B00075806C0C05816B6 -:10E51800C071C2785846C370C3635876C3C030060A -:10E528000C97C4184A8972081838C0317838C1085D -:10E538004A699308C0A870390E39C0614A399308EE -:10E548006E399139C06812985808CF6149F9930813 -:10E5580030080E9B8F38302C1097F01F001DC0A874 -:10E56800189B49CCF01F001C0E9B303CF01F001874 -:10E5780030070E96C188189B498CF01F00170E9B18 -:10E588000C9CCF5B301BF01F0016EDDCC008C0B13F -:10E598003058C088301BF01F0012EDDCC008C031B5 -:10E5A80030988F4858075F193008F00618005F0A3E -:10E5B800F5E90009F0091800C0400E9CF01F000999 -:10E5C8000C9CD8220000821C000082188000C974AC -:10E5D800000082148000DAE80000820C80010A0042 -:10E5E80080010CECD421169C1497580AC08094CB57 -:10E5F800F01F00070E9CF01F0007D82A5809C030EA -:10E60800149CD822F01F00045C5CD8228000D984B6 -:10E618008000D13C8000E504D42149887007C2A855 -:10E62800EEFB0084580BC140169AEEF8008C58088F -:10E63800C06030090E9B6E6C5D18C078169A1099F0 -:10E648000E9B109CF01F000E5C5CEFFC0A21EF385B -:10E658000026EDB80000C0D1A1B80E9CEF680026D6 -:10E66800F01F0008EF380026E018FFFCEF680026CE -:10E678006E375807CD61D8220000820C8000E5EC87 -:10E6880080010CECD401F01F0007487913882FF89B -:10E698005C58B288EDB80000C031F01F0004D80201 -:10E6A8008000E620000073148000DCCCD4314A6876 -:10E6B80070063058ED3E000C2EC6A58EF00E1900DF -:10E6C800E0880040205E3008A36E30175C8E302151 -:10E6D8003042E7DEC010E06401FFE0650200C2E8F6 -:10E6E800F5D8C010EC0A070BEE0B1800C080C293D7 -:10E6F800EC0A0009E20B1800C1B1C0382FF8C1D8E4 -:10E70800139BE40B1800C1D12FDA063AC1A413BA3F -:10E718002FC813A95C88F5E910895C89F2CA000141 -:10E72800E80A1900EA0917B0F959003CC0781399AA -:10E738005809C070F20800085C88FC081900CD135D -:10E74800D832000000007318D4217848189616971C -:10E75800F138000DEDB80000C1C1169C3007F01F5C -:10E768000020C368F138000DEDB80000C0E16C4826 -:10E77800F13A000CF139000DF3EA1089A1A9F16909 -:10E78800000DA989F169000C6E07F01F0016C0285A -:10E7980049555807C1D06E4811C411DBB16BF7E475 -:10E7A800118B11E48EEEF7E4108B6A0A8CE911F4F0 -:10E7B8000E9CE9EB100B16191409F20E010ECD3759 -:10E7C800C098141B6C1CAC6B5C7BF01F00088D0799 -:10E7D800D8225809FE99FFF7CFBB00008000DA68FD -:10E7E8008000DA3C0000731C8000D210D4314C58F1 -:10E7F80018971188EDB80004E081020C79994C282B -:10E80800F90C006070086FAAF208010BC186103974 -:10E81800C0614BE87008F4080108C1164BB87008CD -:10E82800103AC2914BA87008F139000FF138000E68 -:10E83800F3E81088F8081900E088001E4B487009B2 -:10E84800F338000FF339000EF1E910884AE972092C -:10E858005C88EF490064EF5800604AC97209EF49C3 -:10E8680000685808C080EF3900AC3008F00918007B -:10E87800EFF81EAC4A586F497008F009010B580BA5 -:10E88800E089004C3006EF5600704A2B960BEC0BD3 -:10E898001900C3215C7CEF160060F80A000A6FAC0F -:10E8A800EC0C000C143CC281EF0A003AF60A19007D -:10E8B800C2351039C211EF3800542FF85C58EF6890 -:10E8C80000543039F2081800E088000FEF090056AC -:10E8D800EF08003C12085C88F2081900E088014A39 -:10E8E800EF580056C469F2081800E08101430E9CF5 -:10E8F800F01F0009C3E93008EF680054C3A90000FD -:10E90800000073280000731C0000732400007318B3 -:10E91800000073208001016A5CD91009E08600D1EB -:10E928006F7912185808E08900CCEF380026EDB846 -:10E938000002C081A3C8EF680026EF080058EF580E -:10E948000056300A4D39EF6A004E720BEF6A0054D8 -:10E9580072096F48EF490050F6080108EF09007284 -:10E96800EF580070F2080008EF09004AEF580072EB -:10E97800EF080048A358F2080008EF58004C6E480A -:10E988005838E0880066EF080056EF090058F0098B -:10E998001900E0880006EF09003C1009C0A8EF192B -:10E9A800003CB339F7D8C010F20B0C0AF408000980 -:10E9B8005C89F0091900E088004CEF590056C488BA -:10E9C8006C08EF030074EF48007C6C1CF01F0032E9 -:10E9D800F8031900C0E24B18201D1AD8E06803B3E9 -:10E9E8001AD84AF84AFC1AD8F01F002F2FCDC008B1 -:10E9F800EF0800705808C09020186C49F339000DD2 -:10EA0800EDB90000EFF80C38EF0300746C1CF01F30 -:10EA1800002218130C9CEF530074F01F0024EF0819 -:10EA28000074EA081900C1606FF85808C1316FE82E -:10EA38005808C1014998201D1AD8E06803BF1AD8A0 -:10EA480049B8498C1AD8F01F00182FCDC0084914AE -:10EA580030056FF65806C2D06C4811CBF139000D5D -:10EA6800F3D9C0025F1A11D9B169F3EB118911EB1F -:10EA7800F3EB108911F81248680912188CE9F409A7 -:10EA8800000912085808FE9AFF9DE08F045F0000F5 -:10EA9800000073248000CD0C8003AC608003ACA818 -:10EAA80080039D9C800094C48000DA3C8003ACD035 -:10EAB8003FF8EF58003A3008EF680038C5A830082A -:10EAC800EF580070C5686C08EF030074EF480078D1 -:10EAD8006C1CF01F0021F8031900C0E249F8201D42 -:10EAE8001AD8E06803E01AD849D849EC1AD8F01FB8 -:10EAF800001E2FCDC008EF0800705808C0902018DD -:10EB08006C49F339000DEDB90000EFF80C38EF034C -:10EB180000746C1CF01F001018130C9CEF53007449 -:10EB2800F01F0012EF080074EA081900C2406FF8DD -:10EB38005808C2116FE85808C1E14888201D1AD842 -:10EB4800E06803EA1AD848A8486C1AD8F01F0006EB -:10EB58002FCDC0088000CD0C8003AC608003ACA82A -:10EB680080039D9C800094C48000DA3C8003ACD074 -:10EB78004C5430056FE65806C2106C4811CCF13978 -:10EB8800000D11DAF3D9C002B16AF5EC118A11EC63 -:10EB980011F858095F1B6809F5EC108AF1EA100AA8 -:10EBA8008CE8F20A010AF6080008F4080108C066B1 -:10EBB8006F7810195809FE9AFF886F085808C29094 -:10EBC8004B196F1A7209F4090109C2374AFB760B0F -:10EBD800EF0A0048F6080108F40B140316185C88BD -:10EBE800F00A000A5C8AEF09004AF40B14035C4837 -:10EBF800EF5A0048F20A14021419F2080008F6083D -:10EC08000009EF58004AEF59004C3008EF4800401F -:10EC180049F84A09900A6EA8580AE0800381720BE5 -:10EC2800F60911FF1009E08600B15C7AF0C9FFFF10 -:10EC38001619F20A010A580AE08900A849697216E9 -:10EC48005806C0E14958201D1AD8E06804461AD869 -:10EC58004938494C1AD8F01F00142FCDC008F00BC2 -:10EC6800010BE04B7FFEE08A002348C8201D1AD81C -:10EC7800E06804471AD848D848AC1AD8F01F000AE8 -:10EC88002FCDC008000073240000821000007320FC -:10EC98000000731C000073348003AC608003ACF088 -:10ECA80080039D9C800094C48003AD008CD81638E6 -:10ECB800C3148C48F3D8C0101639C0E44AB8201DD4 -:10ECC8001AD8E06804491AD84A984AAC1AD8F01FEA -:10ECD800002A2FCDC0081618300A5C88C058AC48E6 -:10ECE800AC5A121B6C068CD91639CFA55C3B0C9C10 -:10ECF8005C8BF01F0022C21049C8201D1AD8E0689A -:10ED080004561AD849E849BC1AD8F01F001B2FCD61 -:10ED1800C0085C3B0C9C5C8BF01F0018C0E04938B5 -:10ED2800201D1AD8E068045B1AD84958491C1AD81B -:10ED3800F01F00112FCDC0086C1A4929932A492ABF -:10ED48006EA8740B926C9508F80B000A101AB26A38 -:10ED5800F00A16187249B2F8B2CAF5D8C208F1D842 -:10ED6800C108B2DAB2E8C1B88003AC608003AD1064 -:10ED780080039D9C800094C48000CDD48003AD2086 -:10ED8800000073340000731C101BC097EF38002676 -:10ED9800A1B80E9CEF680026F01F00424C256EA912 -:10EDA8006A08F009010AE08602B7F0CAFFFFEF1B04 -:10EDB800002C121A161A580AE08902AE1039E0819E -:10EDC80001F54BA8906A7048F139000DF3D9C002DB -:10EDD8005F19F40900094B6AB409EF0A002CF20A1A -:10EDE8001900C462F13A000CF139000DF3EA1089F8 -:10EDF8005C89EDB90000C081E219FFFEF169000DE0 -:10EE0800A989F169000C4A98EF0A002CB06A704988 -:10EE1800F339000DEDB90001C031201AB06A4A3645 -:10EE28008CEB6C1CF01F00238C696C48F138000DCA -:10EE3800F1D8C0025F18F208000849D9B20849A9F8 -:10EE480072095C78EF1A002C12086EA9F4090009FF -:10EE58001238C0E04988201D1AD8E068048B1AD8F7 -:10EE68004968497C1AD8F01F00172FCDC008EEF664 -:10EE780000805806E08000BE48C46848F138000D9C -:10EE8800EDB80000C080C4B8109C7008EF4800803E -:10EE9800F01F000DEEF800805808CF71CAA80000D6 -:10EEA80080010CEC0000731C000073340000732018 -:10EEB8008000D2108003AC608003AD3480039D9C39 -:10EEC800800094C48000DA3CF138000DEDB80000F1 -:10EED800C1F16848F139000DF13A000CF3EA108AE3 -:10EEE8005C8A1499A1A95C79F20B1608EDBA0001A5 -:10EEF800C0F0F169000DF16B000C68488869F138C1 -:10EF0800000DF1D8C0025F18F2080008A6086C05C9 -:10EF18000A96F01F00455805C041C6984C324C432C -:10EF28006C4811C5868A11D9B169F3E5118911E5D3 -:10EF38008CEBF3E510890C9C11F5EBE91009F40949 -:10EF48000109640A1409F20B010BCBF7E08F0201E7 -:10EF58004B89EEF80080704811FB11C511DC11E8EF -:10EF6800B16CF9E5118CF9E81088F7E81008F00A97 -:10EF7800010A5C8AB26A7248F138000DEDB80001E6 -:10EF8800C031201AB26A4AB58AEB6A1CF01F002AFF -:10EF98008A696A48F138000DF1D8C0025F18F20892 -:10EFA80000084A39B2085C784A097209F009000A6F -:10EFB800EEF80080704811FB11CC11D911E8B16945 -:10EFC800F3EC1189F3E81089F7E91009123AC0E067 -:10EFD80049A8201D1AD8E06804C31AD84988499C52 -:10EFE8001AD8F01F00192FCDC0080C95EF450080E6 -:10EFF80048F848E9908A7209F40900098FA990082D -:10F00800EF09002CF0091900C22248C8201D1AD89F -:10F01800E06804CD1AD848D848AC1AD8F01F000ABE -:10F028002FCDC0088000DA3C0000731C000073205C -:10F03800000073348000D2108003AC608003AD6C94 -:10F0480080039D9C800094C48003ADA810190E9C79 -:10F05800EF59002CF01F004A4CA8300A7019924B47 -:10F06800F40B1900C0504C8A9509300991194C5875 -:10F078007048F138000DEDB80000C5B14C3913885F -:10F08800A5B8B288C56881098CEAF13B000DF7DBA9 -:10F09800C0025F1BF60A000A14098FA9EF0A002CA8 -:10F0A800F138000D8C69F1D8C002F7D9C0105808A2 -:10F0B8005F1EF9DAC010FC0B000B163CC0E44B488D -:10F0C800201D1AD8E06804F21AD84B284B2C1AD8FD -:10F0D800F01F00322FCDC008F409010958085F1845 -:10F0E800F20801080E9CEF58002CF01F00256C1B3D -:10F0F8009648E2081900C090680C580CC040F01FF0 -:10F108000028C028890B8D126C48F138000DEDB825 -:10F118000000C0810B88A5B8AA886E485848EFF34C -:10F128000A046C080C9CEF480080F01F001EC07891 -:10F1380049D030014944300249453073EEF6008029 -:10F148005806C1006C4811CB11D9B169F3EB11898C -:10F1580011EB6EAAF3EB108911FBF7E910091439CA -:10F16800C930EF380026EDB80000C041A1C80E9C98 -:10F17800CE68A1A8EF680026D83200008000D5FE2E -:10F18800000073340000732C000073298003AC6006 -:10F198008003ADC880039D9C800094C48000CD345A -:10F1A8008000DA3C0000731C0E9CF01F0040EEF655 -:10F1B80000805806C0714BECF01F003EEF4C0080F9 -:10F1C800D8326A093005F2CCFFFF6C4811CB11DA4E -:10F1D800B16AF5EB118A11EBF5EB108A11FBF7EA2E -:10F1E800100A1439C1214B2C8C689869F009190050 -:10F1F800E08800B4F01F002FE08000B05805EBFC59 -:10F208001A00EFFC0A20C0D85805C0D1F20A010B39 -:10F21800C4574A7CF01F0027E08000A0EF4C008014 -:10F228000C9BC3986A4B17F417C217D317EBB1633B -:10F23800E7E21183E7EB108BE9EB100B5CDB120BB9 -:10F24800C2D6F80A010B580BE0890029498CF01F37 -:10F2580000191897E08000826A4811F911CA11DB79 -:10F2680011E8B16BF7EA118BF7E8108B4928F3EB3B -:10F27800100B70088AE9101916095809E08A000964 -:10F28800F00B010B6A1CAA6B5C7BF01F000C8B0750 -:10F298000C9B0E9CF01F000AD8326C0B0C95580B77 -:10F2A800C1001696C93B000080010BF000007334C2 -:10F2B8008000DA080000731C8000D2108000E7503C -:10F2C80014195809E08A004AF138000DEDB8000019 -:10F2D800C4404A3CF01F00238D0CC3F06C4811F960 -:10F2E80011CA11DB11E8B16BF7EA118BF7E8108B43 -:10F2F80049D8F3EB100B70088CE910191609580956 -:10F30800E08A002CF00B010B6C1CAC6B5C7BF01FD3 -:10F318000017D8320E9CF01F0016D832720BF60870 -:10F328000109C0A62FFBEF19002CF60801081218D6 -:10F338005808E08A00130E9CEF380026A1B8EF6841 -:10F348000026F01F000CD8323008FE9FFBB4580985 -:10F35800FE99FE00FE9FFE4BD83200000000733479 -:10F368008000DA080000731C8000D21080010BF0C6 -:10F3780080010CECD4314B86ED0800922FF87819F7 -:10F388004B65ED5800928B091388F1D8C004F20838 -:10F39800002818971693109C4B148908F01F003109 -:10F3A8006A080E9C118BF7DBC004A36B5C3BF01F53 -:10F3B800002EC0718E493138F0091900E08B000B1E -:10F3C8004A580E9CF109009A2FF9F159009AE08FDA -:10F3D80003026A0C069B2F0CF01F0024C0B16A0AB6 -:10F3E800FC19E000F5380010B968E618F00012388A -:10F3F800C0A149980E9CF10900A02FF9F15900A06D -:10F40800E08F02E9F4CBFFF48EC830692F0A0E9C16 -:10F41800F01F00175C8CC080ED0800980E9C2FF838 -:10F42800ED580098C11868080E9CF13B000CA58B9C -:10F43800F60B10FCF01F000CC1C0ED08009A0E9CE2 -:10F448002FF8ED58009AED0800962FF8ED58009621 -:10F45800E08F02C6000080D40000733000007318EB -:10F468008000D67C8000CDD48001255880011E2CD8 -:10F47800680811CA11D9B169F3EA118911EAF3EAE6 -:10F48800108911FAF5E91009F20A1618B0CAF5D967 -:10F49800C208B0F9B0DAF5D9C108B0EA4B28910929 -:10F4A8006808F1390008F13A0009B16AF5E9118AEA -:10F4B800F139000AF5E9108AF139000BF3EA100A6C -:10F4C800F4091618F1690008F3DAC208F16A000BAA -:10F4D800F1690009F3DAC108F169000A4A386804D9 -:10F4E800910AE938000DF5D8C002F1D8C0064A0BD8 -:10F4F800B6884A086A09580A5F1A8E4514055C8559 -:10F50800B00549D87006CA586C485808C0E149B8CF -:10F51800201D1AD8E06800B71AD84998499C1AD80B -:10F52800F01F00192FCDC00858A8C0E14938201D88 -:10F538001AD8E06800B81AD84948492C1AD8F01FD8 -:10F5480000122FCDC0085818C24148C8201D1AD82B -:10F55800E06800B91AD848E848AC1AD8F01F000A81 -:10F568002FCDC0080000731C00007324000073280E -:10F57800000073200000820C8003AC608003ADF0B3 -:10F5880080039D9C800094C48003AE188003AE4421 -:10F59800098A0998F1EA1088ED0A0024F00A19008E -:10F5A800C56109AA09B8F1EA1088ED0A001CF00A39 -:10F5B8001900C4D1F33A000CF338000DB168F1EA30 -:10F5C8001188F33A000EF1EA1088F33A000FF5E8D3 -:10F5D80010086C1A103AC3B1F33A0010F33800114E -:10F5E800B168F1EA1188F33A0012F1EA1088F33AA7 -:10F5F8000013F5E810086C0A103AC2916C380C3800 -:10F60800C0E14CA8201D1AD8E06800C21AD84C885E -:10F618004C8C1AD8F01F00482FCDC008580CC06079 -:10F6280099384C6870098D3991066C380C38E0812E -:10F6380001A14BE8201D1AD8E06800C81AD84C0868 -:10F648004BCC1AD8F01F003C2FCDC0080C9C6C3650 -:10F658005806FE91FF5BE08F05296C4858A8C0E06A -:10F668004B28201D1AD8E06800D21AD84B584B1CDA -:10F678001AD8F01F00312FCDC008098B0998ED0A60 -:10F688000024F1EB1088F00A1900C77109AC09BB16 -:10F69800ED08001CF7EC108BF6081900C6E1F33CE6 -:10F6A800000CF33B000DB16BF7EC118BF33C000E33 -:10F6B800F7EC108BF33C000FF9EB100B6C1C163CAD -:10F6C800C5C1F33C0010F33B0011B16BF7EC118B93 -:10F6D800F33C0012F7EC108BF33C0013F9EB100B22 -:10F6E8006C0C163CC4A1498B178CEDBC0002E08061 -:10F6F800013AEDBC0001C2D1494B6CAC760BF60C5B -:10F70800010CC2D6ED14002C081C580CE089002806 -:10F718005C7A201D5C751ADA48DCEA0B000B5C7811 -:10F72800F2CAFFF0780CC7688003AC608003AE6C47 -:10F7380080039D9C800094C40000820C8003AE98D6 -:10F748008003AEC4000073280000731C00007324FB -:10F75800EDBC0000C0414CC870088DD84CB8900969 -:10F768003008F0091900E08000FEED3800260C9CF6 -:10F77800A1B8ED680026CF486C365806FE91FF6F99 -:10F788004C3870050C98CF286A0A580AC130F33CE7 -:10F798000010F33B0011B16BF7EC118BF33C001236 -:10F7A800F7EC108BF33C0013F9EB100B163AE081E1 -:10F7B80000DC09AB09BAF5EB108AEB0B001CF40B63 -:10F7C8001900E08100D25808C0706A3991394B0895 -:10F7D80070098B3991054AF81188EDB80004C1F118 -:10F7E8004AD8700913AB139A13B8201D1389F1EB8B -:10F7F8001088F5E910894A5B1AD9968C4A794A8BA0 -:10F808007209760BF2CAFFF0F80B000B4A5C780C11 -:10F818002FFC2F49F01F00242FEDCA48EDB8000136 -:10F82800E08100A1EB3C0014F01F00201896C08175 -:10F8380049F8F109009C2FF9F159009CC938497819 -:10F848007008F0C9FFF0C0311298C108F1390013EF -:10F85800F13B0010F13A0011F1380012B16AF5EBF2 -:10F86800118AF5E81088F3E810088D08EB08001CE9 -:10F87800ED58001C48987008F0C9FFF4C1A112980F -:10F88800C27800000000821000007320000082147B -:10F898000000732800007318000073300000731C08 -:10F8A80000007324800102348000E1D4000080D479 -:10F8B800F139000FF13B000CF13A000DF138000E60 -:10F8C800B16AF5EB118AF5E81088F3E810088D188D -:10F8D8004C587008118B1199F3EB1089ED590024DD -:10F8E80030398D494C197209F2CBFFFF8DCB8DABA6 -:10F8F800F13B000FF138000EF7E81088ED5800587A -:10F90800ED5800608A48E2180199AC486A684B8A49 -:10F918002019740C8D688D3C6A889506ED49006441 -:10F928008D880C9CF01F0033ECCBFFFCED1C003CD9 -:10F93800F01F00313019ED5C003C201D30081AD949 -:10F94800109A3129109B0C9CF01F002C2FED5C5C49 -:10F95800C0600C9C300BF01F002AC0480C9CF01FA4 -:10F9680000290E9CC3C80A986A355805FE91FF0EF7 -:10F9780049D56A08F13C000DF9DCC006F01F0022E9 -:10F988005806E08003504A188E4A6A09911791492F -:10F99800B06A30096E1A9109912A49D8910949D853 -:10F9A800B089ECFA0084580AC3C0ECF8008C5808F7 -:10F9B800C0500C9B6C6C5D18C06810990C9B109C17 -:10F9C800F01F00155C5CC041ED4C0084C2A80E9C81 -:10F9D8004928F10900962FF9F1590096F01F0010F7 -:10F9E800D8320000000073180000731C0000820C5D -:10F9F8008000E6B48000D95C800103508000E124D7 -:10FA080080010CEC8000D67E000073340000732C5B -:10FA1800000073298000E5EC000080D48000D13C10 -:10FA28004A9891064A981188EDB80002C3216C489B -:10FA38005828C0814A6870096D781039E081026BD6 -:10FA4800C1D84A49720A6CA9F4090109E08602631F -:10FA5800ED1A002C14195809E089025DE08F032182 -:10FA680049D8201D1AD8E06802271AD849B849CCC5 -:10FA78001AD8F01F001C2FCDC00849B91388A3B8A5 -:10FA8800B288ED380026A1C8ED680026E08F024351 -:10FA9800EDB80001C0616C4820285818E08B00A21E -:10FAA800492870088DD830080C9CED6800ADF01F0F -:10FAB80000106C4820285878E08B022D48D9F208AD -:10FAC800032F000000008224000073280000732424 -:10FAD8000000731C8003AC608003AEF480039D9C1F -:10FAE800800094C400007329000082108000E6B4EE -:10FAF8008003AC404CF811891298E218001259287A -:10FB0800C7A14CD8700A6DF8704811FB11C711DCF9 -:10FB180011E8B16CF9E7118CF9E81088F7E81008DA -:10FB28002FF8103AC681ED0800722FF8ED580072D0 -:10FB38004C287008ED4A0050F0CA00012FF88DC813 -:10FB48008DA84BF87008F139000FF138000EF3E872 -:10FB58001088ED5800603048ED4A00648D48EC0884 -:10FB6800000BED1C003CF01F00375C8CF808100AF5 -:10FB7800ED5C003CED580058ED0900563018F009CE -:10FB88001900C021A17CED5C0056ED0800745808EE -:10FB9800C0E14AD8201D1AD8E06802591AD84AB8D4 -:10FBA8004ABC1AD8F01F002B2FCDC00820186DFCB6 -:10FBB800ED5800747808ED48007C5808F9B800FF43 -:10FBC800F9B80100EDF81E4EED58003AF01F00227A -:10FBD800ECF800905808C050300A0C9B6C6C5D180B -:10FBE800ED380026A1B80C9CED680026F01F001B1C -:10FBF800E08F0191EDB90004E081018D4908700999 -:10FC080013AB139A13B8201D1389F1EB1088F5E98B -:10FC18001089493B1AD9968C4929488B7209760B69 -:10FC2800F2CAFFF0F80B000B483C780CC7980000AC -:10FC380000007328000073240000731C0000731870 -:10FC48008000D95C8003AC608003AF1480039D9C66 -:10FC5800800094C48000DA3C80010CEC0000732022 -:10FC6800000073304C281188EDB80004C5E14C1829 -:10FC7800700C6D485CD81808C3D66D78F808010870 -:10FC88005808E089003830488D486C885808C0E129 -:10FC98004B98201D1AD8E068027E1AD84B784B8CF6 -:10FCA8001AD8F01F00382FCDC008300A0C9B6C6C96 -:10FCB8005D185C5CC0700C9C301BF01F0033E08F3B -:10FCC80001A7ED0700560C9CF01F0030ED080070EE -:10FCD8005808F9B901FFF1D9E108EDF81C383019D5 -:10FCE800ED08003CF2071900C021A178ED58005634 -:10FCF800C2E84A78700913AB139A13B81389F1EB69 -:10FD08001088F5E910894A3B201D1AD94A29968797 -:10FD180072094A2BF2CAFFF0760BEE0B000B2F4943 -:10FD2800F01F001F2FEDCF68EDB80001E08100F350 -:10FD380049A870096CA820181039E08100EC0C9CC7 -:10FD4800F01F0018CE780C9CF01F0010496811882D -:10FD5800EDB80005E08100DFED380026A1B80C9C65 -:10FD6800ED680026F01F00113078CC1800007328C9 -:10FD7800000073248003AC608003AF2C80039D9C3B -:10FD8800800094C48000E1248000E7F40000731828 -:10FD980000007320000073300000731C80010234DF -:10FDA800800101000000732980010CEC0C9CF01FFD -:10FDB800003E4BE84BE91188E2180020C2D01388B6 -:10FDC800EDB80004C1F14BB870096D781039C1A1C4 -:10FDD800ED380026A1B80C9CED680026F01F00360F -:10FDE8000C9CF01F00364B6972080C38C5604B59E3 -:10FDF8009308C05870390C39C69012985808CFB17A -:10FE0800C6D8ED380026A1B80C9CED680026F01F76 -:10FE1800002A3088C6C81388EDB80004E081007B4A -:10FE28004A4870096D781039C7513068C6080C9C6B -:10FE3800F01F001D49D81188EDB80005C6B1ED388E -:10FE48000026A1B80C9CED680026F01F001B0C9C36 -:10FE5800F01F001A49A972080C38C1F04999930893 -:10FE6800C05870390C39C32012985808CFB1C368EC -:10FE78000C9CF01F000D48E81188EDB80004C4A1DF -:10FE880048C870096D781039C4510C9CF01F000BDC -:10FE980048B972080C38C0316C38C21848999308B0 -:10FEA800C1B800008000E7F400007329000073283F -:10FEB8000000732480010CEC8000DA8C0000820CB6 -:10FEC8000000821870390C39C0614C0993086C39EC -:10FED8009139C06812985808CF614BC99308300807 -:10FEE8008D384BB870098D39910630A88D48C128D6 -:10FEF8000C9CF01F00384B881188EDB80004C0A195 -:10FF08004B6870096D781039C0514B591388A5A8F2 -:10FF1800B2884B381188EDB80003C091ECF800980E -:10FF28005808C0803FAB6C6C5D18C048EDB8000441 -:10FF3800C0A10C9B4ABCF01F002C0C9B302CF01F5E -:10FF4800002BC658ED0A0070580AC090ECF80088DB -:10FF58005808C0505C7A0C9B6C6C5D184A48700855 -:10FF68005808C24049C91389EDB90003F1F9080DD1 -:10FF7800F9BA0001F3DAE039F1F90E0D49CAECF8E3 -:10FF8800008C5808C070740A30090C9B6C6C5D18A2 -:10FF9800C0781099740A0C9B109CF01F00165C5CCA -:10FFA800C05049387008ED48008448D81188EDB829 -:10FFB8000005C271ECF8008C5808C1D030090C9BC0 -:10FFC800129A6C6C5D18C1D800008218000082205B -:10FFD8008000E7F4000073280000732400007329F0 -:10FFE8000000820C8000DAE88000C9740000732CDD -:08FFF8008000E5EC10990C9B60 -:02000004800179 -:10000000109A109CF01F002E30094AE80C9C9109B0 -:10001000F01F002D30064AB891064AC76E1C580CD6 -:10002000C330F01F002B8F16C2F86A0BF738000D93 -:10003000EDB80002C2604A78F10C00A02FFCF15C20 -:1000400000A0F10C00962FFCF15C0096179C17A6FF -:1000500017B8178BF9EB108B201D49F972091ADBC1 -:1000600049EB968CF2CAFFF0F1E6108849CB2F4994 -:10007000760BF80B000B49BC780CF01F001B2FED22 -:100080000E9CF01F0013F01F0019C1714988201D3C -:100090001AD8E06801771AD84968497C1AD8F01F45 -:1000A00000172FCDC0085808FE90FCE0FE9FFCEB27 -:1000B00049387006FE9FFB67D83200008000E5ECEF -:1000C0000000822480010CEC000073348000D13CDD -:1000D000000080D400007330000073200000731C07 -:1000E00000007324800102348000D6B48003AC6029 -:1000F0008003AF4080039D9C800094C40000822058 -:10010000D42179F95809C3107208F8CEFF88F9484C -:10011000007C79E8C038109E70085808C1C0704B48 -:1001200017F617C417D5B165EBE41185724A17EBC2 -:1001300015F7EBEB108B15C5EDEB100B15D615EA8B -:10014000B166EDE51186EDEA108AEFEA100AF60ACB -:10015000010ACE2693089D093008F9480040F93875 -:10016000004E2FF8F968004ED822D42179F95809A9 -:10017000C600F9380026EDB80002C5B07208F8CE06 -:10018000FF88F948007C79E8C038109E700858084C -:10019000C1C0704B17F617C417D5B165EBE41185D4 -:1001A000724A17EB15F7EBEB108B15C5EDEB100B47 -:1001B00015D615EAB166EDE51186EDEA108AEFEA8B -:1001C000100AF60A010ACE26930830089D09F9485C -:1001D0000040F938004E2FF8F9090056F968004E32 -:1001E000F5D9C02FF9080060F7D8C02FF009190021 -:1001F000F60817B0F4081780F9580058F908003CC1 -:10020000F00915015C78A178F91A0058103AF9F94B -:100210005C2CF9380026A3A8F909003CF9680026EF -:10022000F20815011009F90800581009F95900568B -:10023000D822D703D43118941693149112921096A1 -:100240004097300A314B301CF01F00391895C6D04A -:1002500098593138F0091900E08B000F4B58201DD8 -:100260001AD8E068031F1AD84B384B4C1AD8F01F25 -:1002700000342FCDC0080E9878175C78AEB8A988E6 -:10028000AEA8E0685014EF68000DA988EF68000C74 -:10029000E8081618AEC8F1D4C208AED8E608161899 -:1002A000EF680008F1D3C208F3D6C010EF68000968 -:1002B000AE993088A9893006AEF4EF63000BAE89A1 -:1002C000EF66000FEF660012EF660013EF66001096 -:1002D000EF660011EF68000E3069049A029BE9D4C2 -:1002E000C108E7D3C108AEE4EF63000A98C8F01F65 -:1002F00000155C7CEF6C0011A98CEF6C0010201DC8 -:10030000491C30671AD70C98F9070090049A2FF708 -:10031000029BE06900FFF95700900A9CF01F000B58 -:100320000A9CF01F000B2FEDD83200008000D3187C -:100330008003AF5C8003AFA480039D9C800094C4C5 -:1003400080011E2C000080D4800122948000D13CCA -:10035000D43120BD14915098414A505A12961897A2 -:100360003009F20119005F08F20A18005F0AF1EA89 -:10037000000AF20A1800C110F3D6C002C0E14C789E -:10038000201D1AD8E06800AD1AD84C584C5C1AD819 -:10039000F01F00452FCDC008580B5F195089126817 -:1003A000C0E04BE8201D1AD8E06800AF1AD84BF81F -:1003B0004BCC1AD8F01F003C2FCDC008EF080072BC -:1003C000E2081900C0B2EF380026EA18FFFFE8186B -:1003D000FF80EF680026E08F02E34058F3D8C001A9 -:1003E000E2180002F9B8010CF009002950296FB099 -:1003F000EF02007431F8F0021900E08800144AC8D6 -:10040000F109009C2FF9F159009CE06C00FFEF38D6 -:100410000026EA18FFFFE818FF80EF680026E08F4B -:1004200002C36FF85802C2605808C1404028A38830 -:100430002FB8AD685C883003503B50A8F7D1B0109E -:10044000409A504BF5DAC001069406980695506A1A -:10045000C3796FE85808CEB14908201D1AD8E06862 -:1004600000D01AD8493848FC1AD8F01F000F2FCDF9 -:10047000C0085808C0416FE85808CD904878201D42 -:100480001AD8E06800D31AD848B8486C1AD8F01FB8 -:1004900000062FCDC00800008003AF5C8003AFD4FE -:1004A00080039D9C800094C48003B028000080D409 -:1004B0008003B0688003B0A450195008EF03003CDB -:1004C000304CF01F0042401918954008E080023C73 -:1004D000300B990B991B5809C0301894C118580853 -:1004E000C0E14BB8201D1AD8E06800EF1AD84B982D -:1004F0004B9C1AD8F01F00392FCDC008910C5C73AB -:10050000402A4069E60A010840435C73E6080D434F -:100510005C835809C3904028300AE608000B149CFD -:100520005C7BF01F002F8B1CE080020EF5D3C01007 -:10053000402B98D9F40B00081039C0E44A48201D1C -:100540001AD8E06800FF1AD84A684A3C1AD8F01F47 -:1005500000232FCDC008501AF01F0023401A18980E -:1005600040895809C0A0402B6A195008721C160C0B -:10057000403BF01F001E4008F00200026A185C8237 -:1005800070188B28C3D8406A402B149CF01F0014AD -:100590008B1CE08001D9F01F0014407AF8020002A1 -:1005A0005C82580AC2D0F7D3C010301A303CF01F1A -:1005B000000C189B6A1C580BC1C1F01F000D40694C -:1005C0008B19E08F01C100008000C9D48003AF5CAB -:1005D0008003B0D880039D9C800094C48000D31811 -:1005E0008003B0E88000CD0C8002E7368000D13C6B -:1005F000403897182FF28B285C82F01F003F320B97 -:10060000F6021900E08B01A0AA63314B6A1CF01FAF -:10061000003BC0904BA8F10900A42FF9F15900A4A8 -:10062000E08F0192EF39001C6A1870188B48B0896E -:10063000EF39001DB099EF3900246A48B0A9EF39AD -:100640000025B0B9E00916186A48B0C9F3D0C2084D -:10065000B0F0B0D9F3D0C108B0E96A48F16C00132A -:10066000F16C00126A48F13A000CF139000DF3EA1E -:100670001089E019FFC0EDE910095C79F169000DFE -:10068000A989F169000C405AEB6A000E404806182F -:100690005C88F3D3C0105048403B6A48120B503B73 -:1006A00040AA1200F139000DF3D9C006F5E910098E -:1006B0005C79F169000DA989F169000C0A98300A8A -:1006C000404BF40B19005F1B507B169A58045F09CE -:1006D000300B124AF60A1800FE91FEF0F5D2B01067 -:1006E000503A6FE05800E08000C260085808C0909F -:1006F0001090CFCB8000CD348000CDD4000080D4CA -:1007000080EA6048F139000DF3D9C0025F1B140B79 -:10071000E08000C45809E08100C1F7D6C0025F0C38 -:10072000301BF60618005F0BF9EB100BF20B1800EC -:10073000E08000B488EBEF19003C140B123BE08919 -:1007400000ADE13B000EE939000EF20B1800E0812C -:1007500000A5684911FE13FB504B11CC11DBB16BA6 -:10076000F7EC118B11ECF7EC108BFDEB100B160A6C -:1007700013CB13D8B168F1EB118813EB4049F1EBBF -:100780001088F3E81008103AE08100884028681CBF -:10079000F00B11EC5C8BF01F0037C0E04B68201DA4 -:1007A0001AD8E06801691AD84B484B5C1AD8F01F78 -:1007B00000352FCDC0086818905AF80A1900C0A15A -:1007C00070098919910C4032109C20125C82F01F34 -:1007D000002EF1D6C001681BC220580BC05188689A -:1007E000F6081900C0E04A48201D1AD8E0680177D1 -:1007F0001AD84A684A2C1AD8F01F00222FCDC008F8 -:100800006048F13A000CF139000DF3EA1089A1A912 -:10081000F169000DA989F169000CC1E8580BC050BD -:100820009659F0091900C0E14938201D1AD8E0682E -:10083000017A1AD84968492C1AD8F01F00122FCD16 -:10084000C008601CF01F001380698868F208000867 -:10085000A068680881080835E0051700E1F3020682 -:10086000089B304CF01F000CC198EF440078C16821 -:100870008000CDD48003AF5C8003B11C80039D9CBD -:10088000800094C48000D13C8003B1308003B1501B -:100890008000CD348000C97481040C98EDB600014D -:1008A000C040EDB60000C0312FF15C81EDD6C00133 -:1008B000EFF81826F9B90120F1D9E138EFF81E2632 -:1008C0006FB9F1D1C010F2080008EF520074EF4880 -:1008D000006CEF0800720218EF5800725802C14015 -:1008E0006FF85808C1116FE85808C0E14AF8201D98 -:1008F0001AD8E06801A11AD84AD84AEC1AD8F01FD1 -:10090000002E2FCDC00858055F193008F0031900DC -:100910005F1AF5E90009F0091800C4406A48580850 -:10092000C410409CE21C0002C3D1F13A000CF13922 -:10093000000DF3EA1089A3B9F169000DA989F169E5 -:10094000000CC318EF380026EA18FFFFE818FF80F4 -:10095000EF6800264998F109009C2FF9F159009C95 -:100960005804C040089CF01F0016EF0900743008BE -:10097000F0091900C1406FF85808C1116FE8580814 -:10098000C0E148A8201D1AD8E06801B41AD84888E8 -:10099000488C1AD8F01F00082FCDC008E06C00FF6B -:1009A000C028300C2F5DD8328003AF5C8003B16467 -:1009B00080039D9C800094C4000080D48000DA688D -:1009C000D421784E1298587E5F07584E5F09EFE9A0 -:1009D0001009C081582EC060583EC040E06C00F83D -:1009E000D822580AC031149CD822201D30095C7AC4 -:1009F0001AD9F01F00032FED5C5CD8228001035050 -:100A0000D4013008201D109A16991AD8149B30185A -:100A1000F01F00032FED5C5CD80200008001035042 -:100A2000D431189679F45804C05179E45804E08020 -:100A300000CE6848F133000DE7D3C001C06088697B -:100A40003008F00919005F03300A5C53301C14337E -:100A5000F9BB0114F9BB0015F01F005D1895E0808B -:100A600000B698593138F0091900E08B000F4D9805 -:100A7000201D1AD8E068040F1AD84D784D7C1AD87A -:100A8000F01F00572FCDC008684811FA11CB11D9BB -:100A900011E8B169F3EB1189F3E81089ED38001C16 -:100AA0007817F5E91009AE88EF3A000CED38001D13 -:100AB000AE98EF38000DF1EA1088ED3A0024AEAAA6 -:100AC000ED3B0025AEBBF20B1618AEF9AECBF7D955 -:100AD000C208F3D9C108AEDBAEE9ED390028EF69F1 -:100AE0000008ED390029EF690009ED39002AEF69A6 -:100AF000000AED39002BE018FFC0EF69000BA5A834 -:100B00005C88F5D8C010EF6A000DF40B1608EF6B87 -:100B1000000CED39002EEF69000EF1D8C006300947 -:100B2000E8185000ED3A002F5C78EF6A000FEF688C -:100B3000000DEF690011EF690012EF690013EF6912 -:100B40000010A988EF68000CED19002E6CA8F208BF -:100B500000088DC85803C110EF39000CEF38000DA4 -:100B6000F1E91088E018FFC0E8180011EF68000DE7 -:100B7000A988EF68000CC068682811897818F169A5 -:100B80000014ECC4FFFC8AC83069089A0C9B0A9CCC -:100B9000F01F00145C7CEF6C0011A98C4929EF6CEC -:100BA0000010F30C00902FFCF35C0090306C201DC3 -:100BB000ED39000B089A1ADC0C9B30080A9CF01FD8 -:100BC000000B0A9CF01F000A2FEDD8328000D318CA -:100BD0008003AF5C8003AFA480039D9C800094C41D -:100BE00080011E2C000080D4800122948000D13C22 -:100BF000D431300A1895314B301CF01F003918934E -:100C0000C041E06C00FED832EB380026EB39001C06 -:100C1000E018FFFCEB6800266B787817AE89EB399B -:100C2000001DAE99EB390024F00B1618AEA9F3D8CD -:100C3000C208EB3A0025AEF8F1D8C108AECBAEBA87 -:100C4000AED9AEE86AA8F0091618EF690008F3D823 -:100C5000C208E06A5010EF690009F3D8C1083004F7 -:100C6000EF68000BEF69000AF40B1608EB19002E71 -:100C7000EF6B000CEF6A000DEF69000FEF640012DC -:100C8000EF640013EF640010EF640011F20A16081D -:100C9000F2080008EF6A000E8BC8EAC6FFFC0A9B48 -:100CA0000C9A98C83069F01F000F5C7CEF6C001143 -:100CB000A98CEF6C0010306CEB38000AEB39000B9C -:100CC000201D0C9A1ADC0A9B069CF01F0007069C4C -:100CD000F01F0006089C2FEDD83200008000D318CA -:100CE00080011E2C800122948000D13CD431202D23 -:100CF0004AE8189770081838E08001A3F9080056F0 -:100D0000F9090060F0091900F20817805C785008B2 -:100D100079E6F9380026E2180002C1E05806C170F1 -:100D20008CEB6C48794911CCF609010911DBB16BE8 -:100D3000F7EC118B11FA11E8F7E81088400BF5E891 -:100D40001008F20800081638E08800070E9CF01F13 -:100D500000185C5CC7696FF55805C0B1EEC9FF8427 -:100D6000EEC2FFFC5019300349214930C2B9109539 -:100D70006A085808CFD1CF3BF13C000CF139000D87 -:100D8000F3EC108C5C8CEDBC0002C1F148B8201D66 -:100D90001AD8E06802471AD8489848AC1AD8F01F09 -:100DA000000A2FCDC00800000000822480010BF053 -:100DB000000080D4000082108003AF5C8003B18407 -:100DC00080039D9C800094C46FF95809C150EF3B8B -:100DD00000261699E2190044C0F16FE95809E08035 -:100DE0000133720E580EC081926EEF09003CF20E74 -:100DF0001900E08301296C09EF4900786E495829F0 -:100E0000C0E0A5AC5C7CF16C000DA98CF16C000C11 -:100E1000EF390026E019FFFCEF6900266EA9F20AFF -:100E20001618F16A0008F5D9C208F16A0009F5D967 -:100E3000C108F169000BF16A000AEF1A002EF16A8D -:100E4000000FF40B1608F16B000EF40900098FC9AE -:100E5000ED39000EEDB90000C061E06B0200EA1B45 -:100E60000204915BEF08003A3FF9F2081900F9B863 -:100E70000000EFF80C1D6E085808C071049CF01FAC -:100E80000075C45078188F086F085808C121600990 -:100E90006C48EF49004011F911CB11DA11E8B16A41 -:100EA000F5EB118AF5E81088F3E81008EF480044E4 -:100EB0006C1C6C4478199848985A9914E8090109EF -:100EC000121A1218B85AB84830695C78049A0E9B06 -:100ED000E9630010E9630011F01F005F30695C7C7A -:100EE000E96C0011A98CE96C0010E30800902FF860 -:100EF000201DE35800901AD9049AEF38000AEF3900 -:100F0000000B0E9B6C1CF01F00552FED6C4811FA66 -:100F1000F139000DF3D9C0025F1B11CC8CE9F60941 -:100F2000000911DB11E8B16BF7EC118BF7E81088C1 -:100F3000F5E810086F7AF2080008101AC037EF4879 -:100F4000005C5809C3B08D036FF85808C041EF46E4 -:100F5000007CC3286C4A15FE15C46A4915DBB16BC9 -:100F6000F7E4118B15E4F7E4108BFDEB100B13CEB7 -:100F700013FC13DAB16AF5EE118A13EEF5EE108A5E -:100F8000144CF60C010CC177401AC058109A700826 -:100F90005808C0E0704913C413FC13DEB16EFDE4C1 -:100FA000118E13E4FDE4108E1C4C161CCF068D0828 -:100FB0009506C0788B060C95C0480C9CF01F002845 -:100FC0006FE65806C3706C4811CC6F4A8CEB11D990 -:100FD000141BB169F3EC118911ECF3EC108911FCCD -:100FE000F9E91009F6090009400B1639FE98FEC60A -:100FF000EF3900AC3008F0091800C1C18CEB6C4827 -:10100000F60A010A11F911CC11DB11E8B16BF7EC0A -:10101000118BF7E81088F3E81008100AEF18006049 -:10102000103AF9B80B00EFF8BA2AF9B80B01EFF84B -:10103000BEACEF380026F1D8C007EF680026300CB0 -:101040002FEDD832E21B00A0FE91FED7CD2B000081 -:101050008001222880011E2C800122948000DA3C2D -:10106000D401189879FA580AC170149B7609580966 -:10107000C030129BCFCB71EC970CF1490040F14985 -:10108000007CF139004E2FF9F14A0078109CF1698B -:10109000004EF01F0002D80280010CECD431300A5F -:1010A0001896314B301CF01F00401895C7B0985966 -:1010B0003138F0091900E08B000F4BC8201D1AD8F9 -:1010C000E06803C91AD84BA84BAC1AD8F01F003AF5 -:1010D0002FCDC008ED39001C78176D78AE89ED3939 -:1010E000001DAE99ED3900242018AEA9F00B16189A -:1010F000ED3A0025F3D8C208AEF8F1D8C108AECB5E -:10110000AEBAAED9AEE86CA8F0091618EF690008BF -:10111000F3D8C208E06A5010EF690009F3D8C1089B -:101120003004EF68000BEF69000AF40B1608ED19A4 -:10113000002EEF6B000CEF6A000DEF69000FEF64FB -:101140000012EF640013EF640010EF640011F20A64 -:101150001608F2080008EF6A000E8DC8ECC3FFFC09 -:1011600098C83069069A0C9BF01F00145C7CEF6CE9 -:101170000011A98C4929EF6C0010F30C00902FFC92 -:10118000F35C0090306C201DED39000B08981ADCE0 -:10119000069A0C9B0A9CF01F000B0A9CF01F000A89 -:1011A0002FEDD8328000D3188003AF5C8003AFA44A -:1011B00080039D9C800094C480011E2C000080D47C -:1011C000800122948000D13CF9390010A3C948A8BD -:1011D000F969001011BA118B119911A8B169F3EBDB -:1011E0001189F3E81088F5E8100899183008F958C3 -:1011F00000145EFC8003B409997A996B5EFCD703F6 -:10120000D421301CF01F00071897C080320A300B21 -:10121000F01F00053FF8EF68000B0E9CD82200007D -:101220008000C9D48002E8BCD40148C9189B720868 -:101230001838C0D178389308C0C870395809C060D0 -:101240001639F7F90003F1F90A0370385808CF612D -:10125000301CF01F0003D802000082288000C974EF -:10126000D4214AB83009700E1C98C148103CC111F5 -:101270005809C0E04A78201D1AD8E06802541AD8EC -:101280004A584A6C1AD8F01F00262FCDC0083019D2 -:1012900070385808CEC1580BC0C017B817861797BA -:1012A00017ABB167EFE61187EFEB108BF1EB100B8B -:1012B000990B580AC2211C98E06A1000E0667FFF73 -:1012C0003007C0C8F10B0012F40B1900C061F6CA58 -:1012D000FFFF1C985C8AC0287038EC0A19005F1563 -:1012E00058085F1BEBEB000BEE0B1800CEC1580843 -:1012F000C040E06C00F5D822F95A00125809C0200D -:10130000D82A993E4828910C129CD82200008228A5 -:101310008003B19C8003B1E080039D9C800094C455 -:10132000D4213008169614951897F9090012F0097F -:101330001900C071300A189BF01F00145C5CC231A8 -:101340005806C0C00DB80D8A0D990DA6B169F3EA13 -:101350001189F3E61086F1E61006EF380010A3A815 -:101360008F16EF680010EF55001448987008109C15 -:10137000C0581837C021D82A783C580CCFB18F38C4 -:1013800048389107D82200008001126000008228AE -:10139000D43112971093169414911895F9090012EC -:1013A0003008F0091900C091300A189BF01F004561 -:1013B000E5DCC008E0810084308B089CF01F00420F -:1013C000C0310896C0E8300A308B301CF01F003F57 -:1013D0001896C041E06200FFC728089BF01F003C40 -:1013E0008C593078F0091900E08B000F4B98201DC4 -:1013F0001AD8E06801C51AD84B784B8C1AD8F01F60 -:1014000000382FCDC008EB3900120E986C175C78AD -:10141000AE893009EB3A0013AEB8AE9AA988AEF99E -:10142000AEE9AEA86A085808C041E6C2FFFCC10890 -:1014300066191238C0C00836C041E06200F7C3F830 -:101440000C9CE06200F7F01F0027C3980A928CC83A -:10145000F0091608AED8AEC9EB390010EDB900009E -:10146000C1403119029A049B0C9CF01F001F5C8C38 -:10147000F1DCC010AEF8A988AEE8580CF9B800FF4E -:10148000EFF80E07EFF80E0631181AD3049BEB396C -:10149000000B029A1AD80C9CEB38000AF01F0013BC -:1014A0002FEDE5DCC0080836C0400C9CF01F000D95 -:1014B00048F8F10900782FF9F1590078049CD832E6 -:1014C000800112608000CDD48000D3188000CDB49C -:1014D0008003B19C8003B1EC80039D9C800094C488 -:1014E0008000D13C80011E2C80012064000080D44B -:1014F000D421202D1897501B149C500A1296F01FCF -:10150000000C401B1898400AC0A148A8E06C00FCE1 -:10151000F10900862FF9F1590086C078F3D6C01082 -:101520000E9CF01F00055C5C2FEDD8228001222864 -:10153000000080D480011390D401F8CAFFFCF9198F -:101540000014F01F00035C5CD8020000800114F05E -:10155000D431203D4D98F109007A2FF9F159007AE4 -:10156000781716910F8818955C8898CAF3D8C0042C -:101570002FE9A369123AC0A5F1D8C004F00B1502F7 -:101580005C3BF01F004F1894C0904CC80A9CF109B6 -:1015900000822FF9F1590082C1D96A12EECCFFF016 -:1015A000029B502CF01F004705980583F1E3108340 -:1015B00005B805AE1896F1EE108E5C835C8E34484B -:1015C000F00E1900C2413438F0031900E081008B9D -:1015D00062A85808E080008770145804E0800083F7 -:1015E00068185808E0800092EF3A000CEF39000DBF -:1015F000B169F3EA1189EF3A000EF3EA1089EF3A84 -:10160000000FF5E910091238C6D1C7F84AE8089961 -:10161000700A089B1498500AC618F10C0012FC0CB2 -:101620001900C5A15806C041700C580CC1B0EF306C -:101630000010EF3C0011B16CF9E0118CEF3000129A -:10164000F9E0108CEF300013F60618005F1AE1EC99 -:10165000100C700018305F0CF5EC100CF60C180034 -:10166000C3B05804E08100D6F13C0010E21C000435 -:10167000F0041700CCE8701C580CC150EF3A000C75 -:10168000EF30000DB160E1EA11805010401AEF30E8 -:10169000000EF5E010805010EF30000F401A14409B -:1016A000003CC1A1400A10945809C0F0703893382A -:1016B000893A48589104C148000080D48000CDD4B4 -:1016C00080012558000082284C88F109008E2FF9EE -:1016D000F159008EC058109970385808C9F1580453 -:1016E000C141EF3A0010EF380011B168F1EA1188FA -:1016F000EF3A00126219F1EA1088EF3A0013F5E8A8 -:1017000010081039C6D1300405F805E9F1E9108850 -:10171000C130402A8AC83119EECBFFF40A9CF01F71 -:1017200000345C8CC0904B180A9CF10900802FF9A2 -:10173000F1590080C4F83F8B0A9CF01F002EC0E0D6 -:101740004AD8201D1AD8E06801141AD84AB84ACCE1 -:101750001AD8F01F002C2FCDC0085804C0D06866DE -:101760005806C3E0089BF1D3C010EEC9FFF40A9AF3 -:10177000687C5D16C5585806C261EF380010FC1928 -:10178000E000B968E618F0001238C1D00F8B0A9C4F -:10179000F7DBC0042FEBA36BF01F00166A180E389E -:1017A000C0E04958201D1AD8E068012F1AD84968AE -:1017B000493C1AD8F01F00132FCDC008303B0A9CBB -:1017C000F01F001248980A9CF10900882FF9F1597E -:1017D0000088F109007E2FF9F159007EC0280A9C8B -:1017E000F01F000BC1D80000000080D480011E2C27 -:1017F0008000CDD48003B19C8003B11C80039D9CEC -:10180000800094C48003B21C800118FC8000D13C8D -:10181000F10C0014E60C1900FE91FF5FC2DB2FDD16 -:10182000D8320000D431189316921494324B300AF7 -:10183000301CF01F00241897C43098593238F00932 -:101840001900E08B000F4A08201D1AD8E068012E0D -:101850001AD849E849EC1AD8F01F001E2FCDC0084D -:101860007816661531CAAC94AC823004ACC4ACD4E2 -:10187000ACE4ACF4661B781C2F8CF01F00170C9C9A -:10188000ACA4ACB48EDBF01F00155C7CACBCA98CA6 -:10189000ACAC201D492C30161AD60898F906006009 -:1018A000EACAFFF4E06900FF089B2FF6F9560060D2 -:1018B0000E9CF01F000C0E9CF01F000B2FEDD83279 -:1018C0008000D3188003B2308003B27880039D9CDF -:1018D000800094C48002E73680011F4A000080D453 -:1018E000800122948000D13CD401F5DBC00830BBDC -:1018F000F01F0002D802000080011824D401F5DB9B -:10190000C008303BF01F0002D802000080011824FC -:10191000D4314C62E50800622FF81694E558006255 -:10192000781618970D85EBD5C004A365EA0311005E -:101930005C83069BF01F003EE08101788E493038C1 -:10194000F0091900E08801726E1811893088F009D9 -:101950001800E081015DED380010ED310011B1613A -:10196000E3E81181ED380012E3E81081ED3800134F -:10197000089BF1E11001ECCCFFF0F01F002EC071CC -:10198000E611F000FC18E0001031C0914A780E9C7E -:10199000F10900742FF9F1590074C4498E49307867 -:1019A000F0091900E08801420E9CF01F00235C8CB6 -:1019B000C0A00E9CF01F0021E50800682FF8E55834 -:1019C0000068D832330B0E9CF01F0019C6E00A9B4A -:1019D0000E9CF01F0017189AC0E04998201D1AD8D5 -:1019E000E06800981AD84978497C1AD8F01F001787 -:1019F0002FCDC0088ECB302CF01F00151892E08040 -:101A0000011F98D9EAC8FFF81039C25248C8201DF2 -:101A10001AD8E06800A21AD848E848BC1AD8F01FC3 -:101A2000000B2FCDC0080000000080D48000CDD472 -:101A30008001255880011FAC8000D13C8003B2306A -:101A40008003B2A480039D9C800094C48000D318BE -:101A50008003B2D80E9BF01F00445C5CC0E04C38A1 -:101A6000201D1AD8E06800A51AD84C184C1C1AD8AA -:101A7000F01F00412FCDC008069B6416049CF01F88 -:101A8000003FC0E04B98201D1AD8E06800AB1AD880 -:101A90004BB84B8C1AD8F01F00382FCDC0080E9CC5 -:101AA0000497F01F0038C1383D0B0E9CF01F003327 -:101AB000C0E04AE8201D1AD8E06800B51AD84B08E3 -:101AC0004ACC1AD8F01F002C2FCDC008ED3A000CDC -:101AD000ED39000DB169F3EA1189ED3A000EED3BE5 -:101AE0000010F3EA1089ED3A000FF5E91009ED3A1C -:101AF0000011B16AF5EB118AED3B0012F5EB108A8B -:101B0000ED3B0013F7EA100AF40B16186E18ED6A95 -:101B1000000FED6B000CF7DAC208F5DAC108ED6AC8 -:101B2000000EF20A1618ED690013ED6A0010ED6B55 -:101B3000000DF5D9C208F3D9C108ED6A0011ED69AD -:101B40000012300911AAB08911B9F3EA1089FE7A9E -:101B5000F7FE5C89F4091900E0880016F2C9F7FF66 -:101B6000C14800008000CF988003B2308003B310DA -:101B700080039D9C800094C48000CDD48003B33842 -:101B80008000D13CF2C9F8005C79B0B9A989B0A94C -:101B9000ED380009E818FF00ED680009A988ED6834 -:101BA00000083008314BED68000BED68000A0C9C12 -:101BB000F01F00284A885C7CED6C000BA98CED6C52 -:101BC000000AF10900602FF90A9BF15900600E9C90 -:101BD000F01F00221898C0E04A18201D1AD8E068AB -:101BE00000D71AD849F84A0C1AD8F01F00202FCD78 -:101BF000C00830191AD4189A1AD9ECCBFFF4E0694E -:101C000000FF0E9CF01F001A2FEDC0B8E508007011 -:101C10002FF8E5580070E50800662FF8E5580066D3 -:101C20000E9CF01F0014D8320E9CF01F001248A822 -:101C3000F109006A2FF9F159006AD8320E9CF01FA1 -:101C4000000D4858F10900742FF9F1590074D83289 -:101C500080011F4A000080D48000CDD48003B230C0 -:101C60008003B36C80039D9C800094C48001206439 -:101C70008000D13CD431205D30951988FAC9FFF03D -:101C8000FACEFFFC5009330231033056F0C9003060 -:101C9000EA091800E08B00BAE4081800C03030A749 -:101CA000C1582FFC35891988F20818005F0A378956 -:101CB000F20818005F09F5E91009F9B70008F7BC48 -:101CC00001FFF9B70110F9F81800F8CAFFFF300951 -:101CD0003191F2070244F0C000301004F4CC00014E -:101CE000EA001800E08B0005E8C90030C1E80E9456 -:101CF000E6071800C1D1F0C400615C54EC04180080 -:101D0000E088000EF0C00041EC001800E08B0011EC -:101D1000E2041800E0880004341CC028361C2F6838 -:101D2000F00C010CF9E9104915882FFACD3B32EA85 -:101D3000F4081800C0814008103EC6701CA92FFC92 -:101D40001988CA5B5808C28030CAF40818005F1CA2 -:101D5000320AF40818005F1A146C300AF40C1800E8 -:101D6000C1B030DCF80818005F1730ACF808180074 -:101D70005F1CEFEC000CF40C1800C0E030BC309796 -:101D8000F80818005F1CEE0818005F18F9E8000852 -:101D9000F4081800C3A1FAC8FFFC101EA34E2FFEC2 -:101DA000582EC0B0E0890005580EC2F0C298583EC7 -:101DB000C0F0584EC251C168E064FFFFEA1400FF52 -:101DC0000839E08B00234018F3E81189C198E049F5 -:101DD000FFFFE08B001B4018402AB968F1EA1108A8 -:101DE000C0D8E04900FFE08B0011402A4018B968D4 -:101DF000F1EA1108403AF1EA1088F1E91009580BAC -:101E0000F7F91A00301CC028300C2FBDD832D70388 -:101E1000D401202DFACBFFFCF01F0004F9BC00FF19 -:101E2000FBFC10012FEDD80280011C74D431202D51 -:101E3000300630110C9EC4A898557812E7D5B01022 -:101E4000049430075008C0B8E92800000990202306 -:101E5000E1E810805C835C702FE40007E203190066 -:101E6000FE9BFFF40A944008E214FFFEE7D5C00190 -:101E700008023000E0031900C0400584A964080787 -:101E8000E9D7C010B187E80700070E94E0140000FE -:101E9000C060E9D7C010B187E80700075C77EBD5D1 -:101EA000C001EE0E000EEFDEC010B18EEE0E000E81 -:101EB0005805C0B0EFDEC108EC061101A96E5C56F2 -:101EC000FDDEC010EFEE100E780C580CCB615806FA -:101ED000C080F9DEC108A96EFDDEC010F9EE100E5B -:101EE00017B715BC17851796B166EDE5118617ABC8 -:101EF0001585EDEB108B5C781596EFEB100B15AAA2 -:101F0000EFDBC010B166B18BEDE511860E0BEDEA8B -:101F1000108AF9EA100AF40C1610F5DAC010F60A65 -:101F2000000A180AF4090009F2080008F00E000E71 -:101F3000F1DEC010B18EF00E000EF9DEC010B18ED1 -:101F40001C0C5CDC5C8C2FEDD832D4213008189945 -:101F5000F5DBB010301EC0B8F32600001397202A1E -:101F6000EFE610875C8A5C772FE90E08FC0A1900FF -:101F7000FE9BFFF41699E219FFFE120CEDBB000068 -:101F8000C0411989A9691208F3D8C010B188F208B4 -:101F900000081099E0190000C060F3D8C010B188A3 -:101FA000F20800085CD8F9D8B010D822D431300A31 -:101FB000301414981495C488985B7816EFDBB01031 -:101FC0000C9E3009C0B8FD2200001D932027E7E2D7 -:101FD00010835C875C732FEE06090E93E8071900E7 -:101FE000FE9BFFF3169EE21EFFFE1C06FDDBC001FA -:101FF000EA0E1900C0400D8EA96E1C09FDD9C01053 -:10200000B189FC090009129EE01E0000C060FDD9E4 -:10201000C010B189FC0900095C79F7DBC001F20846 -:102020000008F3D8C010B188F2080008580BC0B0FF -:10203000F3D8C108F40A1101A9685C5AF1D8C0109C -:10204000F3E81008780C580CCB81580AC080F3D8FC -:10205000C108A968F1D8C010F3E810085CD8F9D815 -:10206000B010D832D431201DFAC4FFD8169712937D -:102070001092681518966801580AE0800091500A7D -:10208000314BF01F0055400AC0A04D48E06C00FEE7 -:10209000F109005C2FF9F159005CCC286C148C59C3 -:1020A0003138F0091900E08B000F4CD8201D1AD8E8 -:1020B000E068022C1AD84CB84CBC1AD8F01F004B60 -:1020C0002FCDC0085C53E3E310815C71E961000926 -:1020D000A981E9610008158B1598B168F1EB1188A9 -:1020E00015ABF1EB108815BBF7E81008F00B1618CC -:1020F000E9680013E96B0010F7D8C208F1D8C108ED -:10210000E96B0011E9680012E81245005C72A892C0 -:10211000E4031608A883ED380008A8A8ED380009E4 -:102120004B39A8FCA8B8A8EC9208F7D8C010A8DBD7 -:10213000A98BA8CB2FF8B2085807C0D00F8B0FB9C6 -:102140000F98B168F1EB11880FABF1EB1088F3E851 -:102150001008C051EAC8FFFCEBF81001F00916188E -:10216000E968000FE969000CF3D8C208F1D8C1088A -:10217000E969000DE968000E3008E968000BE968BC -:10218000000A500A314B089CF01F001A5C7CE96C75 -:10219000000BA98CE96C000A400AC038781A2F0A93 -:1021A00048E8F10900482FF9F1590048158B1599B5 -:1021B000B169F3EB118915AB6A18F3EB108915BB04 -:1021C000F7E910091039C1910C9B0A9CF01F000A15 -:1021D000C26800008000CDD4000080D48003B3909A -:1021E0008003B3D880039D9C800094C40000734892 -:1021F00080011F4A8000CAF8EB08002C5808C0B0C4 -:102200008C49F0091900E08800070A9B0C9CF01F1C -:102210000006C0580C9B0A9C6A585D185C5C2FFD38 -:10222000D8320000800125A0D42149781896700783 -:10223000C1680E9CF01F0015C1100D8B0D98B16880 -:10224000F1EB11880DAB6E1AF1EB10886E290DBB06 -:10225000F7E8100814581268C1306E075807CEA16D -:1022600048B66C0C580CC040F01F0008C08148985C -:10227000F10900562FF9F1590056C0286C070E9C41 -:10228000D8220000000080CC8000CAE4000080D08A -:10229000000080D4D421204D1897503B149C502A24 -:1022A000501950084096F01F000D403B402A40193D -:1022B0004008C0A148A8E06C00FCF10900562FF9C5 -:1022C000F1590056C0881ADC0E9C1AD6F01F000582 -:1022D0002FED5C5C2FCDD82280012228000080D415 -:1022E00080012064D4314C05EB08004A2FF87817A0 -:1022F000EB58004A0F980F831694F1E31083189659 -:10230000E609160C3048F0091900C090F01F00379C -:10231000EB08005C2FF8EB58005CC2980FB8E7D3CD -:10232000C1040FA2A363F1E2108298585C82E60810 -:102330001900C0539848E4081900C0B20C9CF01F63 -:10234000002B4A98F10900522FF9F1590052C86840 -:10235000069B0E9CF01F00265C8CC0F00C9CF01FAE -:102360000023EB0800502FF8EB580050EB08004E0C -:102370002FF8EB58004ECD48F7D2C0100C9CEEC0A1 -:10238000FFF0F01F001C0895301249B10A9CF01FA5 -:10239000001BC1D0EAC8FFFCC1A06A185808C17070 -:1023A000EF3A0010EF390011B169F3EA1189EF3A01 -:1023B0000012F3EA1089EF3A0013F5E91009103919 -:1023C000C2A00A9B009CF01F000EC2515802E3F508 -:1023D0001000EBF5000030020835EBF50000580561 -:1023E000CD61C9F8000080D48000D13C80011F4A33 -:1023F0008000D210000080CC8000CAE48001255803 -:10240000EE03000307B807A9F1E910893448F00981 -:102410001900C2A0EF39000CEF38000DB168F1E9E6 -:102420001188EF39000EF1E91088EF39000FF3E859 -:102430001008C1B0089BEECCFFF4F01F003DC0A116 -:10244000EF38000CFC19E000B968E618F00012380B -:10245000C0C10C9CF01F00374B78F109004E2FF9DA -:10246000F159004EC5D808955805C0510C9CF01F75 -:102470000031C5680FE90FF8F1E91088F1D8C00EF6 -:10248000C0700C9CF01F002D1896C4A078174AC885 -:1024900091044AC8089B91070C9CF01F002BC3B104 -:1024A000EF3800095868C0B05918C0405818C11119 -:1024B000C0B8089B0C9CF01F0025C2D8089B0C9C40 -:1024C000F01F0023C288089B0C9CF01F0022C2381A -:1024D000089BEECCFFF0F01F0016C0F1EF380010A3 -:1024E000FC19E000B968E618F0001238C0608D17DA -:1024F000302B0C9CF01F00180C9CF01F000E48E8BD -:10250000F10900582FF9F1590058F109004E2FF93F -:10251000F159004E48A93008930848A99308D83AC1 -:10252000EF3800095918FE91FF77C6BB8001255886 -:102530008000D13C000080D4800129BC0000822CA6 -:10254000000082308000D588800115508000F37C27 -:1025500080011910800118FC19B9198A1998B168FD -:10256000F1EA118819AAF1EA1088F3E81008F0C915 -:1025700000015BD9E08800035EFFF7390035EDB953 -:102580000001C0E1761A1438C0B07629105A126AD8 -:10259000C0715CD9F3E8000812385F0C5EFC5EFD88 -:1025A000D431209D503B506A781B403AF519002CDD -:1025B000F2C80013502B5078214917EA17F8F1EAB6 -:1025C00010885C88109BF1D8C00DE21B2000984356 -:1025D000505B2143308B5018F20B0C0A1897F3DA3A -:1025E000B0105C8312985049A37830025C88314067 -:1025F0005088C938401B405AF1DBC00D14485008C0 -:10260000E3D3B010F1D3C01040791039E08900064F -:10261000400B4081ADBB500B300A314B302CF01FCA -:1026200000421894C3708E58313AF4081900E08BB8 -:10263000000F4BE8201D1AD8E06802C31AD84BC817 -:102640004BCC1AD8F01F003C2FCDC008314A402B8C -:10265000781CF01F003A6E19F1D0C010F208000883 -:102660006816EBD1B0108F188E58F0000100AE50F4 -:10267000C2188E52EA021900EA0217205C82C19049 -:10268000302A300B303CF01F0028C071089CF01F2E -:10269000002CE06C00FFC4586E18B842B852189B6A -:1026A00099180415089C5C85F01F00265805C02069 -:1026B0006E075805CDF1ED65000B40085C78ACF86D -:1026C000A988ACE8E2C8FFEC5C78ACB8A988314BCB -:1026D000ACA8ED65000A0C9CF01F001B5C7CED6C47 -:1026E000000BA98CED6C000A4039406A7258089BB7 -:1026F000129C5D18495BF70800302FF8089CF758CA -:102700000030F01F000F40180213404AE1D2B01011 -:1027100014085C835C8850185803FE91FF6D069C7A -:102720002F7DD8328000D3188003B4108003B45CAE -:1027300080039D9C800094C48002E7368000D13CD9 -:102740008000CD3480011F4A000080D4D40148F8B5 -:1027500070091839C04178099109C128580BC0E1A6 -:1027600048B8201D1AD8E06801341AD8489848ACF7 -:102770001AD8F01F000A2FCDC00878089708189BB8 -:10278000305CF01F0007D8020000734C8003B410C7 -:102790008003B47C80039D9C800094C48000C97435 -:1027A000D43118971696183BC0E14BC8201D1AD893 -:1027B000E06800A41AD84BA84BAC1AD8F01F003A16 -:1027C0002FCDC008580BC11076081838C0E04B3820 -:1027D000201D1AD8E06800A61AD84B484B1C1AD8FE -:1027E000F01F00312FCDC0086E156A1811CA11D91B -:1027F000F3EA1089C0303004C1D8118A1199109CB5 -:10280000B169F3EA118911AA11B8F3EA10891248E3 -:10281000314A8F18EECBFFF8F01F0025301B0A9CC1 -:10282000F01F00240A9CF01F002418940A9CF01F3B -:1028300000236E15C1486A1811B9118A119311A8A5 -:10284000B163E7EA1183E7E81083F3E31003F01FB5 -:10285000001A18040A9C0695F01F00180A9C5805D7 -:10286000CEB10C9B0E9CF01F001649689009F5D95B -:10287000C010083AC0E44898201D1AD8E06800C784 -:102880001AD84918487C1AD8F01F00072FCDC00865 -:102890000819089CB009D8328003B4108003B4989A -:1028A00080039D9C800094C48003B4A48002E7361A -:1028B000800118E88000CD0C8000D13C8001274CBD -:1028C000000073508003B4B8D431300618971692C4 -:1028D0004AB30C94300566080A9B0A9CC3E8EF3A99 -:1028E000000CEF39000DB169F3EA1189EF3A000EDF -:1028F000F3EA1089EF3A000FF5E91009705A123A1D -:10290000C1B1EF3A0010EF390011B169F3EA118952 -:10291000EF3A0012F3EA1089EF3A0013F5E91009D3 -:10292000706A123AC0910FCA0FD9F3EA1089906AFF -:10293000F20A1900C0D02FF5580CC090F13A001FD0 -:10294000F939001FF20A1800E08B0003109C70098F -:102950005809F00B171012985808CC21580CC04099 -:10296000F01F0008180658155F9804365F59F3E801 -:102970000008E8081800CAF10C9CD8320000734C1B -:10298000800127A0D42148C83007700CC108F9384D -:10299000001F7806F0C900015808C050F969001FEF -:1029A0001897C0480E9BF01F00050C9C580CCF01D7 -:1029B000D82200000000734C800127A0D431201DD4 -:1029C0004CD8F10900322FF9F159003278161895D8 -:1029D0000D835C83F3D3C004A3695949C080F10916 -:1029E00000442FF9F1590044E08F02570DF80DE132 -:1029F000F1E110810DB80DA24C07F1E21082F01F39 -:102A000000408E885C815C821894F808000858A801 -:102A1000E08A000D189B0C9CF01F003AC5708E8850 -:102A2000E808000858A8E08900524B783009700780 -:102A30005009C3D8ED39000CED38000DB168F1E94B -:102A40001188ED39000EF1E91088ED39000FF3E837 -:102A500010086E591039C291ED390010ED3800118F -:102A6000B168F1E91188ED390012F1E91088ED390A -:102A70000013F3E810086E691039C1710DC90DD843 -:102A8000F1E910888E69F0091900C0F149A8F1092F -:102A900000462FF9F15900460DE90DF8F1E91088CB -:102AA000F1D8C00DC360C3F850076E075807CC318A -:102AB000E08F021E089B0C9CF01F0012083CC065B2 -:102AC000305CF01F00121897C09148B8F109003C23 -:102AD0002FF9F159003CE08F01E0320A300B0E9CD7 -:102AE000F01F000B30394888EF69001F70098F090B -:102AF0009107C138000080D4000073508000CD0CD5 -:102B0000800128C80000734C8000C9D48002E8BC52 -:102B10008EF8F1D8C00DC070314A0C9BEECCFFF896 -:102B2000F01F004F4CF89009F20400045C84B004DC -:102B30000DE8A598EDB80000C120EF38001EE3D1E4 -:102B4000C00DE7D3C004A371E60310FCE20200024B -:102B5000A1A80602EF68001EEF52001C6A1811BB04 -:102B6000300A11AEF7EE108E118BB09AB0AAB0BA3F -:102B7000B08A1499F5DBC00411FBF40A10FC11ECC7 -:102B8000F7EC108CF9DCB00DA37CF7DCC010B0DBE7 -:102B9000A98B180EB0CB140E10935C8E3016F5DE98 -:102BA000C010B0FAA98AB0EA6E11029BC548761A25 -:102BB00015C015D2E5E010825C82E40C1900C292C7 -:102BC000F6021618B0BBB082E5DBC208F7DBC1081D -:102BD000B092B0AB5809E080008213E213FBF7E239 -:102BE000108BF60C1900E08300FF15DB15CAF7EA1D -:102BF000108AF40E1900E08B00F7EA0A1618B2B535 -:102C0000B28AF5D5C208EBD5C108B29AB2A5C6788A -:102C1000E40C1900E08000E815E015FBF7E0108BEC -:102C2000F60C1900E08300E05809C09013FB13E98B -:102C3000F7E91089E4091900F9B601001582159B1E -:102C40001499B16BF7E2118B15A215BAF7E2108B4C -:102C5000F5EB100B580BCAC1C52900008002E736FE -:102C60000000735013EB13FA11CCF5EB108A11DB53 -:102C7000F7EC108BF60A1900E088000F4BC8201DF6 -:102C80001AD8E068018E1AD84BA84BBC1AD8F01F8E -:102C9000003B2FCDC008EA0B1618B28BF7D5C2083F -:102CA000B2B5B29BEBD5C108B2A511CB11D9F3EBEC -:102CB0001089F20A1900F9B60100C1185801C0E0E4 -:102CC0004AB8201D1AD8E06801971AD84AC84AACF9 -:102CD0001AD8F01F002A2FCDC0088F15EF39001E1B -:102CE000EDB90000E08100E45806E08000E16E19D3 -:102CF000721A15CB15D9F3EB1089E08100D9118B2D -:102D000011951099B165EBEB118511AB11B8EBEB97 -:102D10001085F1E51005C1A807F86A1907EB13CC77 -:102D2000F1EB108B13D8F1EC1088F00B1900E08157 -:102D300000BF13881395B165EBE8118513A81293B2 -:102D4000EBE8108513B8F1E510055805CE61123A8D -:102D5000C1A14878201D1AD8E06801B91AD848984E -:102D6000485C1AD8F01F00052FCDC0088003B410AE -:102D70008003B4D480039D9C800094C48003B4F489 -:102D80008003B52C138A1398B168F1EA118813AA4D -:102D9000F1EA108813BAF5E81008C0E04C68201D6D -:102DA0001AD8E06801BB1AD84C484C5C1AD8F01FFE -:102DB00000452FCDC00813F813E9F1E91088EF0999 -:102DC000001C5C88F0091900C1704BB8201D1AD88E -:102DD000E06801BD1AD84BC84B9C1AD8F01F0039C7 -:102DE0002FCDC0080A9CF01F00394B9818143006EC -:102DF000B0040A9CC5982EC8EF58001C6E187016B7 -:102E00000D880D94B164E9E811840DA8E9E81084F7 -:102E10000DB8314AF1E41004EECBFFF80C9CF01F22 -:102E2000002DEF38001CACA8EF38001D0C9CED65A0 -:102E3000000BACB8ACE5ACF5ED65000A314BF01F0A -:102E400000265C7CED6C000BA98CED6C000A6E1604 -:102E5000C1586815089C3ECBF01F0020089B0C9CB5 -:102E6000F01F001F0B890BB80B94B164E9E91184C2 -:102E70000BA9E9E91084F1E410045804CEB10E9CCA -:102E8000400BF01F00180C9C49178E05F01F000F17 -:102E90001815AE05C0D849480A9CF109003630061D -:102EA0002FF9F1590036F01F0011C02830060C9C94 -:102EB0002FFDD8328003B4108003B53C80039D9C65 -:102EC000800094C48003B5608000CD0C0000735076 -:102ED0008002E73680011F4A8000CDD48000CD34C7 -:102EE0008001274C000080D48000D13C305CF01F72 -:102EF00000061897FE91FDF3FE9FFDDE5809FE9136 -:102F0000FEB3CDDA8000C9D4D4211898F937002E49 -:102F1000761E306CF8071800C0E04948201D1AD80A -:102F2000E06801B41AD84928492C1AD8F01F0012B9 -:102F30002FCDC008306C201C5C5CF20C0706FC0C2A -:102F40000007EF66000EF40C0706EF660014580C3D -:102F5000CF313089FD6C001BFD69001A109C706830 -:102F60005D185C5CD82200008003B5948003B5DC5A -:102F700080039D9C800094C4D4211897580CC0E114 -:102F800049D8201D1AD8E06800941AD849B849CC0D -:102F90001AD8F01F001C2FCDC00878185808C0E1BF -:102FA0004958201D1AD8E06800951AD84968494C3C -:102FB0001AD8F01F00142FCDC0086E186E06109C92 -:102FC0005808C0E148C8201D1AD8E06800991AD8EE -:102FD00048E848BC1AD8F01F000B2FCDC008F01FDE -:102FE000000C0E9B306C0C97F01F000A5806CE6147 -:102FF000D82200008003B5948003B62080039D9CF6 -:10300000800094C48003B62C8003B63C8000D13C81 -:103010008000C974D431201D500B1897580CC0C0C3 -:103020004D084D19118CF80815031818F2080028DE -:1030300070495829C0D030AA30094CBE129C1C924D -:10304000129B2ECE1298149314911490C1980F8A4B -:103050000F99B169F3EA11890FAA7018F3EA108980 -:103060000FBAF5E910091039CE714C08F109002E9C -:103070002FF9F159002ECE480C990A9C089B30A6D6 -:10308000EC031800C0A1FCF6FFFC5806C0611296C4 -:10309000189516941093C498FCF6FFFC5816C2417C -:1030A0005807C0F00F860F95B165EBE611850FA6A6 -:1030B000EBE610850FB6EDE5100564160C35C26021 -:1030C00064051D865805C080F2061800C2B3189525 -:1030D0001694109AC2A80C94F6061800C2331296E1 -:1030E00018951090C2285826C1D15807C1300F86B4 -:1030F0000F95B165EBE611850FA6EBE610850FB6CF -:10310000EDE5100564160C35C0514969109CB28874 -:10311000C9781D85F8051800C053129616941091B1 -:10312000C0481296189516942FF82E4E5C582E42D1 -:1031300030A9F2081800CA11F2031800C061400655 -:10314000EDB60000E081007B4005E2150002E08161 -:1031500000763098F0031800E089000A5C53C498A8 -:103160000000735200007354000080D430A8F001B6 -:103170001800C180E7D1C0084B38E60915030619CD -:10318000F00903285808C2304B08201D1AD8E068FF -:1031900001761AD84AE84AFC1AD8F01F002F2FCD22 -:1031A000C008F0001800C040E7D0C008C108E20A1B -:1031B0001800C4404A48E7DAC008E60615030616B8 -:1031C000F00600266C0CF01F00258D053098F003EA -:1031D0001800E088000F49D8201D1AD8E068018C3B -:1031E0001AD849F849BC1AD8F01F001B2FCDC008C7 -:1031F0004959E6081503300A0618F2080028F0C9F4 -:10320000FFF0930A5807C0D00F8B0FBA0F99B1691E -:10321000F3EB11890FABF3EB1089F5E91009911964 -:103220004899E60815030618F20800282F08300907 -:10323000069CB0C948B8B083C038E06C00FF2FFDD1 -:10324000D8320000000073548003B5948003B64C5C -:1032500080039D9C800094C480012F788003B66415 -:1032600000007352D431494730050E963EF42EC704 -:10327000ECC3FED40F882FF85C58AE88EEF9FFFC43 -:103280005829C061E8081800E08B0009C0F85819F7 -:10329000C0D1F2081800E088000A6C0C580CC0403D -:1032A000F01F00068D05EF45FFFC2E472E46063722 -:1032B000CE21D8320000735480012F78D431306889 -:1032C0001293189616951497F939002EF0091800E4 -:1032D000C0E04B78201D1AD8E06801DA1AD84B58A4 -:1032E0004B5C1AD8F01F00352FCDC008580BC5C055 -:1032F00017891798B168F1E9118817A9F1E91088C1 -:1033000017B9F3E81008C500189B0A9CF01F002CA1 -:103310001894C4A10B88FC19E000B968E618F00005 -:103320001238C420069B0A9CF01F00265C5CE80C47 -:103330001800C3C55C6C4A49F8081503302AF00C24 -:10334000010CF20C00289166F0C9FFF0930A0FDA25 -:10335000F16A000D0FCAF16A000C0FBAF16A000B96 -:103360000FAAF16A000A0F9A1095F16A0009ECC3DE -:10337000FFD10F8AB2C4F16A0008C0F87009701456 -:103380008B09F01F00120E99069A089B0C9CF01FE7 -:103390000010089CF01F000F6A08306C109B580842 -:1033A000CEE1109CD832E06C00F6D8328003B594A0 -:1033B0008003B67880039D9C800094C480012558CA -:1033C00080013014000073548000C97480012F08FC -:1033D0008000D13CD421189E580CC0E14958201DD2 -:1033E0001AD8E068024A1AD84938494C1AD8F01F4E -:1033F00000142FCDC008761AF4C8FFE4F137000F8F -:10340000F136000CF139000DF138000E782BB1695E -:10341000F3E61189F3E810897818EFE910091059DB -:103420001669C061F4CBFFD82ECAF01F0006D8225F -:103430008003B5948003A13880039D9C800094C4D0 -:10344000800132BCD431202D189616911495580C59 -:10345000C0E14CA8201D1AD8E068027F1AD84C8819 -:103460004C8C1AD8F01F00482FCDC00894593378DF -:10347000F0091900E08B000A4C48149CF109002265 -:103480002FF9F1590022C3087414E8C7FFE40F981C -:103490000F89F1E910893018F0091900C1E10FD83E -:1034A0000FC9F1E91089E0680604F0091900C1515B -:1034B0000FB80FA9F1E91089E0680800F0091900B8 -:1034C000C0C1E938001BE939001AF1E91089E06848 -:1034D0000806F0091900C0E04AC80A9CF109002852 -:1034E0002FF9F1590028F109001E2FF9F159001E9A -:1034F000CA184A68F109001A2FF9E8C3FFD6F15932 -:10350000001AFAC2FFFC304A069B049CF01F002000 -:10351000EF380018EF390019B169F3E81189EF3875 -:10352000001AF3E81089EF38001BF1E910096C1854 -:103530005808C0C01039C0A1049B3019E8CAFFDC8C -:103540000C9CF01F00143018C0A83009EECAFFF818 -:10355000FACBFFFC0C9CF01F000F30080FEA0FF9AC -:10356000F3EA1089301AF4091900C1503028F00923 -:103570001900C591C52800008003B5948003A138C7 -:1035800080039D9C800094C4000080D48002E736B4 -:10359000800132BC5808C4D03008AEE83028304A28 -:1035A000AEF8EECBFFF2EECCFFE8F01F0025304A7C -:1035B000069CEC0A000BF01F0022ED39002E30684B -:1035C000F0091800C0E049F8201D1AD8E06802D9B7 -:1035D0001AD849D849DC1AD8F01F001D2FCDC008D1 -:1035E000306820185C58EE080009F33B0008F36BC4 -:1035F0000012E808000AF56B000EE208070BF36BF7 -:103600000008E2080709F56900145808CEB10C9CBF -:103610006C680A9B5D18C0D80C9CFACBFFFCF01FAD -:10362000000DC07848C8F109002C2FF9F159002C81 -:103630000A9CF01F000A2FEDD83200008002E73606 -:103640008003B5948003B5DC80039D9C800094C406 -:103650008000B3B4000080D48000D13CD42178191C -:10366000F338001BF339001A1697F1E91088189601 -:10367000E0690800F2081900C070E0690806F20865 -:103680001900C231C1C8189B0E9CF01F00173E4B99 -:103690000C9CF01F0016C0E04958201D1AD8E068A5 -:1036A00004A41AD84938494C1AD8F01F00142FCD59 -:1036B000C0080E9B0C9CF01F0012C148189A169C63 -:1036C0002D1BF01F0010C0E848F8F10900282FF961 -:1036D000F1590028F109001E2FF9F159001EF01FC1 -:1036E000000BD82A800133D48000CDD48003B59458 -:1036F0008003B36C80039D9C800094C4800122E40D -:1037000080013444000080D48000D13CD431300AA0 -:1037100018941691303C338BF01F0042E8C8FFD15B -:103720001895580CC0A14C08E06700FFF10900246F -:103730002FF9F1590024C738985A3379F20A190041 -:10374000E08B000F4B98201D1AD8E06804311AD87E -:103750004B784B8C1AD8F01F00382FCDC008300999 -:103760007813E6C7FFE4AEE93019AEF93069E93AFB -:10377000002EF20A1800C0E04AC8201D1AD8E068DE -:1037800004391AD84AD84ABC1AD8F01F002B2FCDBA -:10379000C00830664AAB4ABA20165C56F006070CE1 -:1037A000EE060009F36C0008F606070CF36C001235 -:1037B000F406070CE6060009F36C000EF006070C91 -:1037C000F36C00145806CE913042EECCFFF2E802C2 -:1037D000000B049AF01F001C049A029BEECCFFE839 -:1037E000F01F00193069AED2AEC9AEB6AE863088D1 -:1037F000301AAEA8AE9AE769001BE768001A089C69 -:1038000068680A9B5D184888F10900182FF9EFDCF9 -:10381000C008F15900180A9CF01F000C0E9CD83209 -:103820008000D318000080D48003B5948003B6A034 -:1038300080039D9C800094C48003B5DC8003B71690 -:103840008003B58D8002E7368000D13CD4211694E8 -:103850001896189B1497089CF01F00541895E08147 -:1038600000DF09890998B168F1E9118809A9F1E92E -:10387000108809B9FC1AE000F3E810081099E6195D -:10388000F0001439E08000CC5808E08000C9301BFB -:10389000089CF01F00475C5CEA0C1800C0545807F5 -:1038A000E08100CBCC184C39EBDCB008EA081503FA -:1038B0000A18F20800282F0870095809F9B9000100 -:1038C000F1F90A004BB9EA0815030A18F2080028B2 -:1038D0007048F0C900015819E088000F4B68201D9E -:1038E0001AD8E06803A51AD84B484B5C1AD8F01FC9 -:1038F00000352FCDC00858185F0858075F09F3E856 -:103900001008C041E06400FFC078089B0C9CF01FC9 -:10391000002EE9DCC0085807E08000854A5AEA0911 -:1039200015030A19A369F409000870485828C0B1A2 -:103930002F890E9BF40900090C9CECCAFFD1F01FE3 -:103940000023C6B85818C6E110990E98905B904AAB -:10395000F40B1900C111700A580AC0E04968201D13 -:103960001AD8E06803C41AD84998495C1AD8F01FDD -:1039700000152FCDC008F13A000CF20A1800C05112 -:1039800070085808CE41C51890CB300A303CF01F63 -:1039900000111896C4F00E9BF01F000F5C5CC1F084 -:1039A0000C9CF01F000EC468800125588001301463 -:1039B000000073548003B5948003B6D480039D9CAB -:1039C000800094C48001370C80012F088003B6FC6E -:1039D0008000D3188000CF988000D13C306CF01F5D -:1039E000001AC170300899169908EA081503F00505 -:1039F00001054968F00500256A045804C07008985C -:103A000068045804CFD1910CC0288B0C089CD82294 -:103A10000C9CF01F000F089C5C5CD822E06C00F648 -:103A2000D822089C5C5CD8220E960E9CF01F0009E0 -:103A3000CD6B089C5C5C4888F10900242FF9F15992 -:103A40000024D8228000C9D4000073548000D13CE7 -:103A50008000CD1E000080D4D421202D169618970A -:103A6000149531CB0C9CF01F0027C0804A68E06C95 -:103A700000FE90592FF9B059C4180E9B0A9CF01FF4 -:103A80000023C3410B890B98B168F1E911880BA998 -:103A9000F1E910880BB9FC1AE000F3E8100810995E -:103AA000E619F0001439C0F13019BAA935E9BAC9DC -:103AB000F3D8C207BAF8BAD9A988BABCBAE8FAC921 -:103AC000FFFEC1586E1912586E291268C0906E38E8 -:103AD0005808C041E06C00FCC118EEC5FFF40C9A18 -:103AE0000A9B0E9CF01F000AC08848A90C9B0E9CE4 -:103AF000EECAFFD1F01F00085C5C2FEDD822000059 -:103B00008000CDD4000080D4800125588001384C3D -:103B10008003B58D80012F0878983019B0895EFC3C -:103B2000D4217897EF380024EF390025F0091800E8 -:103B3000C021D82AEE080028201D701630086C1904 -:103B40008CCA8CDB20EA1AD620EBF2CCFFF2F01FF5 -:103B500000182FED587CC0F0581CC0310C95C138AE -:103B6000EF3800242FF8F1D8C0030C9CEF68002434 -:103B7000F01F0010E06C00F4D8228ADB6A1CF01FF2 -:103B8000000E6A055805CFA1EF3800242FF8F1D8B0 -:103B9000C0030C9CEF680024F01F00064878E06C1E -:103BA00000F290092FF9B009D82200008001933467 -:103BB0008000D13C80013F7C000080D4D421204D86 -:103BC0001896F01F002D5806C5306C955805C50095 -:103BD0000B885808C4D0E0680600300ABA68E06B69 -:103BE0000600303CF01F00251897C3F03008FACBD0 -:103BF000FFF4AA88781CF01F00229A6B580BC35060 -:103C00005C7BFAC8FFF2FAC9FFFCFACAFFF86E1C27 -:103C1000F01F001C586CC2606E18402B101B40181F -:103C20005C5B0E9C100B5C7BF01F001749789019B1 -:103C30002FF9B0196E19F338001BF339001AF1E9A6 -:103C40001088E0690800F2081900C060E069080601 -:103C5000F2081900C0716C480C9B0E9C5D185C5CEE -:103C6000C0400E9CF01F000A0C9CF01F000A2FCDD4 -:103C7000D822000080013FA08000D31880013F5867 -:103C8000800192DC8000D210000080D48000D13C02 -:103C900080013B20D4211897580CC0E149B8201D61 -:103CA0001AD8E06801491AD8499849AC1AD8F01FC7 -:103CB000001A2FCDC008499899983778F9680036CE -:103CC00036C8F9680037496899584968189B996857 -:103CD000495CF01F0016496CF01F00163628EF688B -:103CE00000353068EECCFFD1EF68002EF01F0012D7 -:103CF000581CC040E06C00F4D822E06805DC300CB1 -:103D0000EF58002CD82200008003B71C8003A13894 -:103D100080039D9C800094C40000746C80013A581C -:103D200080013D5880013B1880013E6880013D388C -:103D300080018F4480019128D40116985C7A189BE9 -:103D40002F29109C5C79F01F00045C7CF9BC00FFFB -:103D5000D80200008000CEC4D42131B918977898D9 -:103D6000965AF20A1900E08B0005E06C00F4D822A4 -:103D7000F1390025F13C0024F2CAFFFFF5DAC00357 -:103D8000183AC041E06C00F2D822F16A0025F0092F -:103D90000028169C911B3F26F01F00050E9CF01F6B -:103DA0000005EC0C1800CFB0D82A00008000CD1E12 -:103DB00080013B20D42130061897E9DBC01030A5E4 -:103DC000C138EE060708201D48BC1AD8F01F000BAA -:103DD0002FED5806C080EC050C085809C041488CEE -:103DE000F01F00062FF60836CED5486CF01F0003F2 -:103DF000D822000080037AF0800094C48003B76862 -:103E0000800384D448CD48D0E3B00001D55348C0E6 -:103E100048C10230C06248C2A505A1240230CFD3F8 -:103E200048A048B10230C06230023003A122023003 -:103E3000CFE3488F000100008003760000000008F7 -:103E4000000009B88003F480000009B800008CC8A5 -:103E500080008EDCD4013018F96800087808580812 -:103E6000C030781C5D18D802D4014869930C931BAC -:103E7000F33800085808C040129CF01F0003DA0A0B -:103E80000000749880013E54D421201D1895169688 -:103E90001494300B30CA49DCF01F001D300B49DC94 -:103EA000F01F001D300B49DCF01F001D497B49DC71 -:103EB000F01F001D1897581CC0400E9C2FFDD822E3 -:103EC000F01F001A1897581CCF910C9B0A9C49862A -:103ED0008D07F01F00181897581CC04030088D0837 -:103EE000CEDB30088D08F01F00141897581CCE61E7 -:103EF000FACBFFFD302CF01F0011F9B701FFFBF8E2 -:103F00000803E9F80A00CDAB00007498800091D056 -:103F100080013F8C80018F3080013F3C80019F6099 -:103F200080013E54800144588001440C0000749488 -:103F300080018F488001443080014110D401169CDB -:103F4000580BC041F01F0004D802300B301CF01F8A -:103F50000002D80280014110D4014879F3380008EA -:103F60005808C021DC0A3008F3680008F01F00037D -:103F7000DA0A00000000749880014284D4015C7B5E -:103F8000F01F0002DA0A00008001433CD401169CB5 -:103F9000F7DAC010F01F0002D80200008001433C95 -:103FA000EBCD40C0203DF01F00164969F3380008F2 -:103FB0005808C04072085808C0402FDDE3CD80C0CB -:103FC000E0680100FAC6FFF4E06C01000CE8F01FA5 -:103FD000000E0C9B1897F01F000D9A5B580BC0A0A9 -:103FE0005C7BFAC8FFF81A99FACAFFFC0E9CF01F16 -:103FF00000080E9CF01F0007CE1B0000800140A4AB -:10400000000074988000920080013F58800192DC8B -:10401000800091E8D40148583019701CF1690009FA -:10402000700A5D1AD8020000000074A8EBCD40CCE5 -:10403000206D49A6FAC7FFF46C2E8F2EECE200002B -:10404000EEE3000016961093FACEFFF0580CC22053 -:104050007C08FC1C8000F1EC100BF4081509BBB8BF -:10406000F1E611C812481648301C9D08F01F000CDC -:104070000E9C30CA1A9BF01F000BFB38000AA68862 -:10408000FB39000B300CA699F01F00052FADE3CDD6 -:1040900080CC7C0BCE3B00008003B774800075B4ED -:1040A00080007534EBCD4080201D4987EF38000833 -:1040B000EDB80000C071EF3900093008F0091800B0 -:1040C000C0402FFDE3CD808030091A98129B129CCE -:1040D000305AF01F000F3FF91B88F2081800CF205C -:1040E0001B98EDB80001CEE13008301C109B302940 -:1040F000E06A00F0F01F000630186E1CEF6800093F -:104100006E095D19CDFB0000000074A88001402CF1 -:10411000EBCD40C0201D301AF40C1800C1B0C08394 -:104120003028F00C1800C2602FFDE3CFC0C01A97F2 -:10413000300630091A98E06A00F1129B301CF01F1B -:1041400000161B98EC081800CF51300C2FFDE3CD62 -:1041500080C018961A9730191A98E06A00F1300B4F -:10416000129CF01F000D1B98EC081800CF51300C6A -:10417000CEEB48A8F1390008F9D9C001F7FA1E00C2 -:10418000F9BC0100F9B8005AF7F80E002FFDE3CD95 -:1041900080C000008001402C000074A8EBCD406876 -:1041A00048F516961893AA4B301CF01F000E0A9C77 -:1041B000310A300BF01F000C069BF5D6C010300CF6 -:1041C000F01F0009304A300B488CF01F0007300CFC -:1041D000F01F00040C9CE3CD80680000000002107A -:1041E000800075B4800075348003B780EBCD40400B -:1041F00020ED30083009FAE90018FAE90000FAE980 -:104200000008FAE9001049BBFAC6FFD4762A8D2AC5 -:10421000F6E80000301CECE90000F01F0017320A3D -:10422000300B1A9CF01F00150C9C30CAFACBFFE033 -:10423000F01F0012300CF01F00103019FB38002A5C -:10424000F2081800C0503FFC2F2DE3CD804048C835 -:10425000F1390008F9D9C001CF8030083039304A2F -:10426000109B301CF01F00072F2DE3CF8040000073 -:104270008003B784800075B480007534000074A892 -:104280008001402CD42130094A881695F169000933 -:104290001896320BF01F00268C085CC82FE8F7D860 -:1042A000B010AA0BEFDCB010F6C90007E06805F902 -:1042B000F0091900E08B00300D890D98F208180004 -:1042C000C220F6071900C182E0640200F9D7C010CD -:1042D0005C7B181BEC0C000CE04B0200E80B17B0E9 -:1042E0005C7BF01F00138A0B0E0CEFDCB010EE0BA2 -:1042F0001900FE9BFFED48F83009118AF20A1800F8 -:10430000C0D1D8220DA8F2081800CDC10DB8F2080E -:104310001800CD813008AA08D822F5DBC010486CFF -:104320000C9BF01F0006D822000074A88001419C5D -:10433000000074A48003B76C8001447CD4314A38F7 -:1043400018921695118A3009F20A1800C3615805AF -:10435000C33049F83004F0C0FFF4E0610200C22825 -:10436000E06602000C970C93301CA006F01F0019A9 -:10437000300B497C314AF01F0018E404000C0E9AFF -:10438000300BF01F0015304A300B494CF01F001263 -:10439000300CF01F0010EA0601080604EBD8B0103C -:1043A000C0B0E2051900FE9BFFDDEDD5B010EFD6E1 -:1043B000C0100E93CDABD832F5DBC010189B488CE3 -:1043C000F01F0008CC5B0000000074A4000001FC9A -:1043D000800075B4800075348003B7808003B770A7 -:1043E0008001447CD401201D3009301C1A98E06AF9 -:1043F00000F5129BF01F0004314CF01F00042FFD4C -:10440000D80200008001402C800075D2D401F01F3A -:104410000007F01F0007C03030CCD802F01F0003A7 -:10442000F01F0003CFA1DA0A800143E4800141ECD0 -:10443000D401314CF01F0006F01F0006C03030CC14 -:10444000D802301CF01F0004DA0A0000800075D288 -:10445000800141EC80007618D4014878910C911BC2 -:10446000F0CCFFF8F01F0005F9BC010CF9BC00010D -:10447000D8020000000074A8800076385EFCD703E4 -:10448000EBCD40F849C56A096A181039C2F08B0CA7 -:10449000EAC7FFF0EAC6FFF4EEC30010EAC4FF70FB -:1044A0000F89EDB90000C091EDB90001C0616C0940 -:1044B0006A081039E08800082F072F060837CF1147 -:1044C000E3CD80F86E19300B169C5D190F883FDA2A -:1044D000F1EA0009EDB80002C0716609EEF8FFF8D4 -:1044E00012088D08CEABAE89CE8B5809CD118B1C2E -:1044F0008B0CCCFB000074B8EBCD408048CE1897F5 -:10450000300AFCCBFFF0F408150417892F88FC084B -:10451000000CEDB90000C0512FFA2F0B588ACF4183 -:104520003018F96800088F0AE3CF9080000074B853 -:104530002FFC4849A56C18091388A1D8B2885EFCE5 -:10454000000074B82FFC4848A56C30091808B089E1 -:104550005EFC0000000074B8EBCD40E0189E14979C -:104560001295587BE08B002C496AF6C8FFFFA568BE -:10457000F408000C1989EDB90001C1F0F608150422 -:104580001296F4080008A1B6F60915012FF9F409EE -:10459000093E740AB8869157FC0A000A913A5805F8 -:1045A000F9BC0001F9B90104EDD9E138F9F81E00B0 -:1045B000F9BC0101E3CD80E0E3CF80E0E3CFC0E0D0 -:1045C000000074B848387019700C121C5EFC0000B2 -:1045D000000074B85EFC300899085EFC1899780CED -:1045E000580CF9B80001F3F80A005EFC300899088D -:1045F0005EFC300899085EFC5EFC5EFC5EFC5EFCC6 -:10460000D401580BC110F80B000B300A487E7C090E -:10461000F40900092FDAF208141FB98810091019DB -:1046200018C9163CCF51D802000074B85EFD5EFF79 -:104630005EFF5EFF5EFF3FDC5EFC78082FF89908A6 -:104640005EFCD401780820189908C020D80A5D1BA8 -:10465000DA0A301899085EFCD401F01F0002D80273 -:1046600080016D6CEBCD406048784889F5DBC01067 -:104670001895189B7006720C5D160A9CF01F0004BA -:10468000E3CF906000007540000074B4800091E8B2 -:10469000D401E06A0088300B485CF01F0006F01F70 -:1046A00000064868300C9118910CD802000074B8CC -:1046B000800091D0800146C000008B545EFCD7037F -:1046C000D401F01F0011F01F0011301B4909169C86 -:1046D000490AF01F00114919491A301B303CF01FDC -:1046E000000EF01F0010300A301BE06C00F0F01FCD -:1046F000000EF01F000E300A302C149BF01F000C2F -:10470000D80A0000800148C0800147888003B79024 -:10471000800146BC800148548003B794800157A4AF -:104720008001499C800147E0800149F480014730C5 -:104730004828F00C092B5EFC00007548EBCD40E0EA -:104740004905189716966A085808C0205D1848E869 -:10475000F007032C580CC061C088F0061800C09008 -:104760002F8C19885808CFA16A085808C080C00843 -:1047700078193028F0091800FE9BFFF8E3CD80E09F -:1047800000007544000075485EFCD703EBCD40FC8B -:104790004935189630120A94EAC3FFF46A0858089B -:1047A000C0D068385808C19030185806CF805816C5 -:1047B000C0305808CF40E3CD80FC48976E28701970 -:1047C000703C700B5D196E2870296E188F29103996 -:1047D000EFF20A003008CEAB0697CF1B000084B47E -:1047E000EBCD40C018961497580BC24049789009F9 -:1047F000F6091900E088001BF60B00184949F20879 -:10480000002C781A74085808C171741E7428103E60 -:10481000C1507C283009951895099D369D07FD6B80 -:10482000001078089D18E3CD80C0307B305CF01F0D -:104830000009E3CD80C0741ECEDB306B305CF01F0E -:104840000005E3CD80C00000000002200000755C80 -:104850008001473CEBCD408049281497129E581B9D -:104860005F8A9009F80919005FB81468C130F80C24 -:10487000001AF60B0019F4CCFFFF48BB48B8F60A43 -:10488000002AF0090029952EF60C09299507E3CD99 -:104890008080302B305CF01F0006E3CD808000006C -:1048A000000002200000755C000084B48001473CD9 -:1048B000D401307B305CF01F0002D8028001473CFD -:1048C000EBCD404030084AB9B2884ABA940858083B -:1048D000C4D04AA95C784AABF00800184A9EA36885 -:1048E000300C2F88F6CAFFF4F20800082F89930CC9 -:1048F000F34AFFFCF34EFFF82F491039CF91F6CE63 -:10490000FFE84A1A49EB301C970C972A971A14981B -:10491000F4C9FED42EC8F148FFF41238CFC1F54ACD -:1049200001342F4BF4CAFEC01C3BCEF1E06A00807C -:10493000300B496CF01F00164948F0C9FF902F0852 -:10494000F148FFFC491A1238CFB130064918F54634 -:10495000007C910A9116310A0C9B48FCF01F000C58 -:1049600048E80C9C9106E3CD8040485BCC9B00005E -:1049700000007598000002200000755C000084B4FF -:10498000800148B0000082340000759C800091D006 -:1049900000007630000076200000761C4848485918 -:1049A000485A91099119913A912A5EFC000002241B -:1049B000800149D4800149EC48484859485A911926 -:1049C0009109913A912A5EFC00000224800149D4A9 -:1049D000800149EC48494858311AEA1A4000143C11 -:1049E0005E085E19800149D480014A0C481C5EFCB7 -:1049F000800149ECD4013019300A303BFC1C4000E6 -:104A0000F01F0002D8020000800186C8EBCD408074 -:104A10004B373099EA194000123CC310E088001F60 -:104A200030B9EA194000123CC2A0C4233139EA1956 -:104A30004000123CC500E069078AEA198000123C78 -:104A4000C241761CF01F0027300A4A77149B314C74 -:104A5000F01F00260E9CE3CD80803019EA1940003B -:104A6000123CC320E08800153079EA194000123C5E -:104A7000C0603089EA194000123CC0713019300A18 -:104A8000303BF01F001B49B70E9CE3CD8080FC1922 -:104A90004000123CCFA130194978300AF149004456 -:104AA000304C149BF01F00110E9CE3CD8080301918 -:104AB000300A303B30ACEA1C4000F01F000D48D7F4 -:104AC0000E9CE3CD8080302B300CF01F000C0E9C30 -:104AD000E3CD808048470E9CE3CD808080014A0C66 -:104AE0008001DA2C800149D480014658800186C8B3 -:104AF000800152F0000087F480018390D401201DD2 -:104B00001A9CF01F0008C07040085818E088000682 -:104B1000F01F00052FFDD802F01F00042FFDD80262 -:104B200080015F4480015EDC80015EB4EBCD40F823 -:104B3000201DFEF805EA189716951496103AC3A0A2 -:104B4000FEF805E0103AC610FEF805DC103AC06029 -:104B50000C970E9C2FFDE3CD80F8E068018CEA18DD -:104B60008000103CE08000F7E068078AEA188000C7 -:104B7000103CE08000ADE0680186EA188000103C3F -:104B8000CE8176170E9CF01F0169F01F0169C0915C -:104B9000FEF805A0EEEA0000F0EB00006E29912976 -:104BA0000C97FEFA0592300BFEFC0590F01F016495 -:104BB000CD1BF01F015F1894C4D1E0680184EA188E -:104BC00080001037E0800185E08B00D2E0680107AB -:104BD000EA1880001037E08001A0E0680183EA183D -:104BE00080001037CB616A170E9CF01F0156E080E1 -:104BF0000230FEF905523048F34800440E9B334C16 -:104C00000C97F01F0152CA6BFEF4053CE0680112DC -:104C1000EA188000E8F300F8103CC540E08B006320 -:104C2000E0680107EA188000103CE08000F7E068C7 -:104C3000010DEA188000103CE080010DE0680105DC -:104C4000EA188000103CC851761C1497F01F0140F0 -:104C5000C81BFEF304F2E0680188EA188000E6F45D -:104C600000F81037E08001B0E08B00ABE068018312 -:104C7000EA1880001037E080018BE0680184EA18B0 -:104C800080001037E080016EE0680107EA188000BC -:104C90001037FE91FF5F6A18303CF13B000BF01FAC -:104CA000012D3019300A303B30CCEA1C4000F01F97 -:104CB000012A300AFEF70470149B301CF01F0127F4 -:104CC000C49B761C1497F01F0126C44B6A1CF01F6E -:104CD0000125300AFEF70490149B314CF01F011F90 -:104CE000C39BE068018AEA188000103CE08000CB9A -:104CF000E068078AEA188000103CCE90E068011551 -:104D0000EA188000103CFE91FF2576150A9CF01FE2 -:104D100001170BC93048F0091800E08001BBE08B97 -:104D2000019B3008F0091800E08001BF6738301996 -:104D300011EAF20A1800E08001DD0A9CF01F010C64 -:104D4000FE90FF08300A0C97305C149BF01F0103A3 -:104D5000C01B76170E9CF01F0107F01F00F5C4F171 -:104D60000E9B33DC0C97F01F00F9CF4AE068018AF4 -:104D7000EA1880001037E08000BDE068078AEA1872 -:104D800080001037E0800099E0680188EA18800010 -:104D90001037FE91FEDF6A170E9CF01F00F7C0A0CF -:104DA000F01F00F63069FEF8039EFEF60376F14927 -:104DB00000440E9B336C0C97F01F00E4CCBAE06803 -:104DC000018EEA1880001037E08000B7E068078A9B -:104DD000EA1880001037FE90FF7BE068018AEA182D -:104DE00080001037FE91FEB66A160C9CF01F00E49E -:104DF0001897E0800114FEF7032ACACA3099FEF81A -:104E000003460C97F1490044FEFA032C300BFEFCDC -:104E10000372F01F00CBC9EA76150A9CF01F00DA76 -:104E2000302B169CF01F00D9FEF702FCF01F00C0CB -:104E30001896E08100DD0A9B337CF01F00C40C9AB9 -:104E40003019303B30ECEA1C4000F01F00C3FE9FDD -:104E5000FE8276160C9CF01F00CE302B304CFEF7F5 -:104E600002C6F01F00CAF01F00B2E08000EC30194B -:104E7000300A303B310CEA1C4000F01F00B7FE9FA7 -:104E8000FE6A76150A9CF01F00BE1897E08000BAF3 -:104E9000300A302C149BF01F00B13078E9480044F0 -:104EA000F01F00A3FE91FE560A9B0C9733BCF01F27 -:104EB00000A7FE9FFE506A1CF01F00AA089AFEF78A -:104EC00002A6089B314CF01F00A5FE9FFE446A1706 -:104ED0000E9CF01F00B0C060FEF9026C3058F34821 -:104EE00000440E9B335C0C97F01F0098FE9FFE332E -:104EF0006A170E9CF01F00A2C0803069FEF80248BD -:104F0000FEF60220F14900440E9B33BC0C97F01FC3 -:104F1000008FFE9FFE206A1B337CF01F008C089AD6 -:104F2000FEF702043019303B30ECEA1C4000F01F61 -:104F3000008AFE9FFE106938301911EAF20A180043 -:104F4000FE90FE086A1CF01F0094FE91FE03189A62 -:104F5000189BFEF70246301CF01F0080FE9FFDFBF1 -:104F60006A150A9CF01F008B1897E08000874F2A73 -:104F7000300BFEFC022AF01F00721897E08000AE92 -:104F800030580C97E7480044FE9FFDE56A150A9CDF -:104F9000F01F006C1897E08000956938301911EA0D -:104FA000F20A1800FE91FDD64E3A300B4FDCF01F8E -:104FB00000641897E08000A930480C97E748004447 -:104FC000FE9FFDC96A160C9CF01F006B1897C2600B -:104FD000F01F006A30684D37E7480044FE9FFDBB74 -:104FE000EACBFFFC301A30DCF01F005C3019300ACD -:104FF000303B30CCEA1C4000F01F0057FE9FFDAB59 -:10500000F01F004BFE90FF4E0E9A3019303B30CC13 -:10501000EA1C4000F01F0050C44B303B30CCEA1C6F -:10502000400030190E9AF01F004C0DEB304CF01F71 -:1050300000490E9A0E9B301C4BB7F01F0048FE9F94 -:10504000FD8A0C9B33ACF01F0041FE9FFD844D3662 -:10505000FE9FFDD63068F0091800FE98FE693828DA -:10506000F0091800FE91FD76300A0C97325C149B13 -:10507000F01F003AFE9FFD6F189A303B30CCEA1CBF -:1050800040003019F01F0034EB3B000D303CCD0BDD -:105090003008FACBFFFC0C9716F8301A30ECF01FF2 -:1050A000002FFE9FFD580A9CF01F003FFE90FD520E -:1050B000300A0C97306C149BF01F0028FE9FFD4BAC -:1050C0000BCB302CF01F00230E9A0E9B301C4B375D -:1050D000F01F0022FE9FFD3F189A303B30CCEA1CA7 -:1050E00040003019F01F001CEB3B000D301CCA0BB8 -:1050F00048D7F01F000FFE91FF750A9B338CF01FFD -:105100000013FE9FFD28189A303B30CCEA1C40006B -:105110003019F01F00110BCB301CC8AB800152F0CE -:10512000800151A8800156388001D9AC800185E406 -:105130000000763880018E9C8001E03C8001EF20E9 -:105140008001E88C000087F480016D6C8001E2D45E -:1051500080018390800186C8800146588001E00864 -:105160008001DA2C800149D48001E2FC80016D4A83 -:105170008001D9C88001E4D080014AFC8001E4307C -:105180008001E0D48001D9FC800183A08001D9E8AE -:105190008001E81C8001E3DC80014A0C8001E7B853 -:1051A0008001E58880016D48EBCD40C04C96189792 -:1051B0003138EA184000103CE0800087E088002485 -:1051C000E068010DEA188000103CC150E088004002 -:1051D000E0680115EA188000103CC0D0E068018A40 -:1051E000EA188000103CC070E0680112EA188000E4 -:1051F000103CC3910E9C4B7AF01F003718960C9C04 -:10520000E3CD80C03018EA184000103CC510E0889B -:10521000002E30D8EA184000103CC1003108EA18CE -:105220004000103CC3F030C8EA184000103CC1B147 -:10523000301C302BF01F00290E9C3019300A303BF7 -:10524000F01F00274A760C9CE3CD80C0E068010582 -:10525000EA188000103CCCF0E0680107EA188000F2 -:10526000103CCC900C9CE3CD80C0E04C008ACC304C -:10527000FC184000103CCF71307949B8300AF14930 -:105280000044149B302CF01F0019300A30FC149B92 -:10529000F01F0016302B300CF01F00100C9CE3CDDB -:1052A00080C0303C302BF01F000D0E9CCC7B48E9B9 -:1052B0007298ABC8300A9398149B303CF01F000BD7 -:1052C0000C9CE3CD80C048A60C9CE3CD80C00000C0 -:1052D000800151A880014B2C800183A0800186C8E9 -:1052E00080015638000087F480014658800149D477 -:1052F000D421FACD00E4FEF602E21898FEF502E0B1 -:10530000ECF700F83109EA194000123CE08000D5C2 -:10531000E08B003630A9EA194000123CE08000C260 -:10532000E088005330C9EA194000123CE08000A830 -:10533000C6A330D9EA194000123CE080011930F9C7 -:10534000EA194000123CC3D1FEFA0298300BFEFC71 -:105350000296F01F00A61896C341189BFEFA02841D -:10536000FEFC028CF01F00A1304C301BF01F00A18E -:105370000C9A0C9B301CF01F00A0C238E06901841D -:10538000EA198000123CE0880011E0690188EA19FE -:105390008000123CC100E08B00A5E0690186EA199B -:1053A0008000123CC0E1C078E0690183EA19800006 -:1053B000123CC363109CFEFA0226F01F0090189561 -:1053C0000A9C2C7DD8223079EA194000123CC7C0D3 -:1053D000E08800973089EA194000123CE08000CF55 -:1053E0003099EA194000123CCEC14FEA300BFEFC66 -:1053F000020EF01F007E1894E08000CF3048ED4888 -:105400000044CDFB4F7A300B4FECF01F0078CD916C -:10541000189A189B4FC5301CF01F0077CD2BE06900 -:105420000107EA198000123CCC60E0690115EA1915 -:105430008000123CC1203139EA194000123CCC11E5 -:10544000300A301C149BF01F006C300A304C149B47 -:105450004EE5F01F0069CB5B6F38301911EAF20A94 -:105460001800C72076160C9CF01F00690C9CF01FDA -:1054700000694E98580CF0051710CA3B303B3019A4 -:10548000300AF01F0066302B303CF01F005A300A03 -:10549000301C149BF01F00584E150A9C2C7DD822FE -:1054A0004D0A300B4DFCF01F00511897C3B0305817 -:1054B000ED480044C86B303B3019300AF01F0057EC -:1054C000302B304CCE3B6C9BE21B0040C2414C5A0F -:1054D0004D5CF01F0046C9D03028ED480044C71B82 -:1054E000E069018AEA198000123CFE90FF65E069DC -:1054F000018EEA198000123CFE91FF64C5CBFC19B5 -:105500004000123CFE91FF5E300A149B149CF01F79 -:10551000003AC57B300A4BC5149B301CF01F003687 -:10552000C50B30481A9BBAE8336CF01F00400E9A46 -:105530003019303B30ECEA1C4000F01F00384B893A -:105540004BB89119C3EB76170E9CF01F00310FC9B1 -:105550003068F0091800FE9BFF354B15F01F003531 -:10556000C2A10E9B338CF01F0031C2BB4AC530195B -:10557000300A303BF01F0029C24B49AA300B4AAC1D -:10558000F01F001ACAA1304849F5BAC81A9B334C1B -:10559000F01F0026C16B306AEECBFFE2FACCFFFCB5 -:1055A000F01F002530481A9BBA68335CF01F001FBB -:1055B000089ACBFB3019300A303B30CCEA1C400053 -:1055C000F01F00160FCB305CF01F000A300A301CB1 -:1055D000149BF01F0009CF5A000087F4800152F09D -:1055E00080018E9C8001E7548001EF208001E03C27 -:1055F000800183908001465880014B2C8001E58812 -:105600008001DA5480014A0C800149D48001E2FC17 -:1056100080016D48800151A8800186C880015638FC -:105620008001E7B88001EA8C80016D6C00000224E3 -:10563000800185E48002E736EBCD40804C9731084D -:10564000EA184000103CC6F0E088001DE068018CBC -:10565000EA188000103CC3B0E088002EE068019397 -:10566000EA188000103CC440E0680194EA18800009 -:10567000103CC2714BC7761CF01F003C0E9CE3CD62 -:10568000808030C8EA184000103CC400E088001D4B -:1056900030D8EA184000103CC21030E8EA18400048 -:1056A000103CC0F14B2A300B4B2CF01F00330E9CEA -:1056B000E3CD8080E0680186EA188000103CC0706D -:1056C0000E9CE3CD8080E04C008ACFB14A5AF01F97 -:1056D000002B18970E9CE3CD8080F01F00294A4ACA -:1056E000300B4A8CF01F00240E9CE3CD8080761C8A -:1056F000F01F0025F01F0025C0514A5B33CCF01F7E -:10570000002549970E9CE3CD80804A39731858983C -:10571000CD803098496AF3480044300B49FCF01FB3 -:105720000016CCFB49C973185888CCB03088F348B0 -:105730000044F2F900F87338301911EAF20A18003F -:10574000C0A03019300A303B30DCEA1C4000F01FAA -:105750000014CB7B486A300B492CF01F0007CB1B91 -:105760008001563880014A0C8001DA4680018E9C07 -:105770008001E03C8001EF2080014B2C80015E34F1 -:105780008001DA448001DA48800185E4000076383F -:1057900080016D6C000087F48001E0D4800186C830 -:1057A0008001E094EBCD40F84A37189416956E18B6 -:1057B0006E090E930E96C118300B301CEA1C400087 -:1057C0005D19300B6C39FC1C40005D196C388D285C -:1057D0006E186E091238C2001039C190300B301C9F -:1057E000EA1C40005D19300B6E19FC1C40005D196D -:1057F0006E188F086E296E381039CDF10A9B089CFF -:105800005D19873C6629123CCF71CE3B0A9B089CF0 -:105810005D198F1CCF0B5805C0706A085818C060FE -:105820000A9CF01F0006E3CD80F8EACCFFFCF01FD5 -:105830000004CF7B00000224800091E88001D3A8FF -:105840004878F14C00F8580CF9F81004F9B9010146 -:10585000F1D9E108F9F81A045EFC0000000087F4B1 -:10586000EBCD40C04948FAC6FFF4F0F700F4580702 -:10587000C051C1E8F8C70008C1B0EECAFFDC740827 -:10588000204D502815C9FB69000C15D8FB68000D88 -:105890006C0850080DC9BAC90DD8BAD8F01F000756 -:1058A0002FCD580CC0516E2C580CCE5118970E9C11 -:1058B000E3CD80C0000087F480018898D40149D9E5 -:1058C000F2F800F41838C0B078285808C2B0784808 -:1058D000201899482F8CF01F0018D802580CF9F89E -:1058E0001004F9BA01FFF1DAE108F9F81A043008F6 -:1058F000F34800F448FA78285808C180F0C9000835 -:10590000F54900F4CE8072482FF89348F4F900F47A -:105910005809CE10724820182F8C9348F01F0006AB -:10592000D80278385808CD41D802F54800F4CD3B6C -:10593000000087F48001F2A0D4014989F2F800F058 -:105940001838C0A078085808C240784820189948EC -:10595000F01F0013D802580CF9F81004F9BA01FF2F -:10596000F1DAE108F9F81A043008F34800F0780A8F -:10597000F34A00F0580ACED074482FF89548487979 -:10598000F2F900F05809CE50724820189348CE1B07 -:1059900078185808CDB1CDFB000087F48001F2A043 -:1059A000EBCD40801897580AC2C07858F608010815 -:1059B0001438E08800274948F0FB00F8580BC190E4 -:1059C000F8CAFFDC15D8204DFB68000D740950297A -:1059D00015C8F6CAFFDCFB68000C7408500815C92E -:1059E000BAC915D8BAD8F01F00092FCD580CC091EC -:1059F0000E9CF01F00070E9CF01F0006E3CF908066 -:105A0000E3CF8080000087F48001889880015938B6 -:105A1000800158BCD4214A141895E8F700F05807C3 -:105A2000C27079383006704AC02810976F387049B4 -:105A30001439E08A00086E080E965808CF710E9649 -:105A400010970A37C0D06A085808C0B00A9CF01FE7 -:105A500000145806C1300A9B0C9CF01F0012D8227B -:105A60006A185808CF416A482FF88B48CF3BE94C59 -:105A700000F078482FF89948D8220A9B0E9CF01F16 -:105A800000090E9CE94500F0F01F00050E9B0A9CE2 -:105A9000F01F0004D8220000000087F48001F2A06B -:105AA0008001F28CEBCD40C04A48FAC7FFF4F0F613 -:105AB00000F05806C051C3D86C065806C3A06D3814 -:105AC000707C2F4CF8E80000212DFAE90024F8EA58 -:105AD0000008FAEB002CF8E80010FAE90034F8EAC4 -:105AE0000018FAEB003CF9380020FB680044F93953 -:105AF0000021FB690045EEE80000FAE90000EEEA4B -:105B00000008FAEB0008EEE80010FAE90010EEEAEF -:105B10000018FAEB0018EF380020FB680020EF397E -:105B20000021FB690021F01F00062EED580CCC501F -:105B30000C9CE3CD80C00000000087F48001891038 -:105B4000EBCD40E0205D7608502817C9FB69000CBA -:105B500017D81697FB68000DF8CBFFE2306A18964D -:105B60001A9CF01F0034F01F00342FCD580CC05188 -:105B7000300C2FFDE3CD80E06E7C2F4CF8E8000068 -:105B8000212DFAE90024F8EA0008FAEB002CF8E8E5 -:105B90000010FAE90034F8EA0018FAEB003CF93892 -:105BA0000020FB680044F9390021FB6900456D388D -:105BB000707C2F4CF8E80000FAE90000F8EA0008D1 -:105BC000FAEB0008F8E80010FAE90010F8EA00180B -:105BD000FAEB0018F9380020FB680020F9390021A1 -:105BE000FB690021F01F00152EED580CCC20320B64 -:105BF000300CF01F00131895CBC0189A0E99491B52 -:105C0000F01F00110BF93008F0091800EDF800132F -:105C1000F1F90807EBF90E07FACCFFFC6D3818D83C -:105C20001A9CED45004CF01F0009301CCA3B0000D7 -:105C30008002E73680018898800189108001D8DCD5 -:105C40008001D3EC8001AD408001D3A8EBCD40C0F2 -:105C500049C649D86C09700A1439C05530070E9CE2 -:105C6000E3CD80C0350CF01F00191897CF906C0859 -:105C70002FF8350A8D08300BF01F0015320B300C51 -:105C8000F01F0014EF4C004C1898C16030084929EF -:105C90008F680E9CF30A017C8F28EF5A001CEF6876 -:105CA000002A8FF88F488F58EF4800408F188F08D0 -:105CB0008F38E3CD80C00E9C1097F01F0008CD0BED -:105CC000000076440000025880009200800091D0CD -:105CD0008001D8DC00000260800091E8EBCD4080BC -:105CE000189778485808E08A0004E3CD8080793816 -:105CF0005808C0402B4CF01F000648697208201855 -:105D00000E9C9308F01F0004E3CD80808001D3A88F -:105D100000007644800091E8D4014899F2FC00F834 -:105D2000580CC0A07848201899483008F34800F86B -:105D3000F01F0004D802F34C00F8D802000087F4EA -:105D400080015CDCEBCD40F84B131894E6F700F8CB -:105D50005807C060189B0E9CF01F002EC1D1E6F7BB -:105D600000F05807C4203006C1285806C0706F38AC -:105D70006D39704A7248103AC064E6F800F80E387F -:105D8000EE0617106E070E955807C0900E9C089BE4 -:105D9000F01F0020CEB00E9CE3CD80F8F01F001E57 -:105DA00058065F18580C5F0918971069EA0918001F -:105DB000C201089B306AEECCFFDCF01F0018089B84 -:105DC000306AEECCFFE2F01F00156F3A0899149C80 -:105DD000493BF01F001430080E9C8F088F18F01FED -:105DE00000120E9CE3CD80F8F01F000B1897CE2B0D -:105DF0000C9CF01F000E0C9CF01F000D0C9CF01F63 -:105E0000000DF01F00051897CD51CC6B000087F4F2 -:105E100080015B4080015C4C800091DC8001D3EC10 -:105E20008001AD4080015A1480015938800158BC6E -:105E300080015CDCEBCD40E04905EAF700F458074F -:105E4000C0D1C158F0C600080E9CF01F000D0E9C7A -:105E5000F01F000C5806C0B00C976E285808CF31C0 -:105E60000E9CF01F00070E9CF01F00063008EB4848 -:105E700000F4E3CD80E00000000087F4800158BC0E -:105E800080015CDC580CC04078185B98C110489ABF -:105E900074991298EDB90001F9BC0101F9BB001029 -:105EA000F3DBE038F5F80A09F9BC00015EFC5EFDA1 -:105EB000000087F4489A7498109CF0091604E21CBC -:105EC0000002F9BB0110F1DBE138F5F81A09F9B865 -:105ED0000101F3D8E12C5EFC000087F4489A749825 -:105EE000109CF0091604E21C0002F9BB01EFF1DB83 -:105EF000E128F5F81A09F9B80101F3D8E12C5EFCA4 -:105F0000000087F448887099129CA589E21C000261 -:105F1000F9BA0101F3DAE148F9B90101F1D9E12C4B -:105F20005EFC0000000087F418994868709CE21C31 -:105F30000002F1F8103FF3F81A00F9BC01015EFC11 -:105F4000000087F418994868709CE21C0002F1F880 -:105F50001041F3F81A00F9BC01015EFC000087F45F -:105F600018984859729CE21C0002F3F81A41F9BCD7 -:105F700001015EFC000087F44839300C7298A7C814 -:105F800093985EFC000087F44839300C7298A5D8CD -:105F900093985EFC000087F4D401E06A0100300BA6 -:105FA000482CF01F0003DA0A00007648800091D0E8 -:105FB000EBCD40C04A0A18967498109CE21C00026F -:105FC000C1D0F4F700F85807C1801099E2190020F9 -:105FD000C270A5C8A7A8F4FB00BC95983009497AFF -:105FE000E06CEA60F01F00163008F0061800C100EF -:105FF0003018F0061800C040301CE3CD80C0311CC2 -:10600000EECBFFE2306AF01F000FE3CF90C0312CDF -:10601000EECBFFE2306AF01F000BE3CF90C0A5B8D3 -:10602000F4FB00B89598E06CEA60487AF01F000431 -:10603000CDCB0000000087F480015F7880014558D7 -:106040008001465880015F88D401F01F0002D80209 -:1060500080018040D40148687098E2180002C03185 -:10606000109CD802F01F0003D8020000000087F443 -:10607000800183FCD40148687098E2180002C031A6 -:10608000109CD802F01F0003D8020000000087F423 -:10609000800183D8D431FACD0188E06A0168300BE1 -:1060A0001A9CF01F002CFAC6FE541A901A9CF01F7E -:1060B000002A581CC03029EDD832FAC5FFF8401824 -:1060C000F0081016EA0800081035C4120A97FAC43E -:1060D000FE98ECC1FFF8C09840182EA7F0081016E3 -:1060E000EA0800081037C3326C08204D50280DC94B -:1060F000FB69000C0DD80E9BFB68000D306A1A9CE2 -:10610000F01F0016F01F00162FCD580CCE60EECBFE -:10611000FFFA310AFACCFE88F01F0010E2E8000016 -:10612000310AE8E90000089BE2E20008FACCFE88A8 -:10613000E8E30008F01F000BCD01189B316A0E9CAC -:10614000F01F0004009CF01F0008CB6B29EDD83A2B -:10615000800091D0800160748002E73680018898C9 -:106160008000917C80016054D431FACD018CE06ACA -:106170000168300BFACCFFFCF01F0050FAC5FE504E -:10618000FACCFFFCF01F004E581CC03029DDD8327D -:10619000402858F8E088007FF0081016FAC1FFF494 -:1061A000E20800081031E0820087E06801685018BA -:1061B000EACBFFF8FAC6FFF002973004FAC0FE946B -:1061C000500BC0C85804C36040282EA7F008101612 -:1061D0002EA6E20800081037C4926A08204D502805 -:1061E0000BC9FB69000C0BD80E9BFB68000D306AD5 -:1061F0001A9CF01F0034F01F00342FCD580CCE3005 -:10620000ECCBFFFE310AFACCFE84F01F002E400BCF -:10621000F6E80000310AE0E90000FACCFE84F6E27C -:106220000008009BE0E30008F01F0028CB005804A2 -:10623000CCC10F89E8091800CC810F98F20818002A -:10624000CC410FA9F0091800CC010FB8F2081800D2 -:10625000CBC10D89F0091800CB810FD8F2081800C6 -:10626000F9B40100EE041700CB0B5804C2400A9B9E -:10627000306A089CF01F0013EACBFFF8310AE8CC23 -:10628000FFFAF01F0010FACCFFFCF01F001129DD0F -:10629000D832F00A1110FAC1FFF4F40A1016E2081D -:1062A000000C300BF01F00053108E0690168502830 -:1062B0005019C7FB3FDCC6BB800091D080016074E1 -:1062C0008002E736800188988000917C80016054CC -:1062D000EBCD40C0208DBACBBA8A189B4968709C20 -:1062E000E21C0002C06118970E9C2F8DE3CD80C088 -:1062F0003008FAC6FFF8504850281A99FACAFFFC2D -:106300000C9CF01F000EC111189740285808C0407F -:106310000C9CF01F000B404C580CCE70F01F000975 -:106320000E9C2F8DE3CD80C00C9CF01F0007581CE5 -:106330005F07CECB000087F48001E1308001D3A855 -:10634000800091E880018E9CEBCD40C0201D491754 -:1063500018966E9CE21C0002C0412FFDE3CD80C068 -:106360001A9CF01F000DEF4600FCEEF801105808D3 -:10637000C051301C2FFDE3CD80C0EECCFEECEF3AD7 -:10638000011BEF3B011AF01F0005301CCF4B000032 -:10639000000087F4800177A4800162D0EBCD4080BB -:1063A000201DBA8C48C76E98EDB80001C0402FFD83 -:1063B000E3CF808030181A99300A308B487CF01F68 -:1063C0000008581CCF511B88EF4801202FFDE3CD5A -:1063D00080800000000087F48003B7A08001776C04 -:1063E000D401201D48B91898729CE21C0002C0E03C -:1063F000300AF368004C308BFAC9FFFC486C12F885 -:106400003018F01F0006581C5F0C2FFDD80200004A -:10641000000087F48003B7A88001776CD401203D89 -:10642000BA8C496A749CE21C0002C0312FDDD8028C -:106430001B8B3038F00B1800E089001DE06832003B -:10644000EA18312EE069352EEA19312EFAE90004F6 -:10645000F4F800F8F3DBB008300A5808F1F91A0F25 -:10646000308B30181A99FACCFFFCF01F0005581C2D -:10647000CDE03FECCDCB0000000087F48001776CCD -:10648000D421206D4A0618976C98EDB80001C040E1 -:10649000300C2FADD822584C5FB8E04C00FF5F198C -:1064A0001268C0303FECCF6B300814995028169A10 -:1064B0005008189B1A951A9CF01F0014CEA01A9C25 -:1064C000F01F0013400818945808C0401A9CF01F91 -:1064D0000011402C580CC030F01F000F5814CD9103 -:1064E0006C98EDB80007C0C15837E08B000AEE0881 -:1064F000150648A9300A1009089C930ACCBB301C29 -:10650000CC9B0000000087F48001E1A480018E9CF8 -:106510008001D3A8800091E800007648EBCD40C010 -:10652000202D496718966E98E2180002C2103FF8B5 -:10653000FACAFFFEBAF8BAA8BAB8BAC8BAD8BAE85E -:10654000300BF01F000F6E98EDB80007C0E1583611 -:10655000E08B000CEC081506300A48A9301C100925 -:10656000930A2FEDE3CD80C02FEDE3CF90C0109CB8 -:106570002FEDE3CD80C00000000087F4800164802F -:1065800000007648EBCD40C0202D49F66C9CE21C03 -:106590000002C2703FF8BAF8BAA8BAB8BAC8BAD8F6 -:1065A000BAE8ECFB00F8580BC260F6CCFFE2303AD8 -:1065B000300BF01F0016FAC7FFFE301CF01F00144E -:1065C000303B0E9A300CF01F00136C99300B129870 -:1065D000ED4B0110A3D88D98EDB90007C050301CC9 -:1065E0002FEDE3CD80C0E06A010048BCF01F000B36 -:1065F000301CCF7BFAC7FFFE303A0E9CF01F000321 -:10660000CDDB0000000087F4800162D08001651CB2 -:106610008001648000007648800091D0D43120DD74 -:10662000FB690010FB68000CFAC9FFA8FEF7023CEA -:1066300018956E981696149272307201E218000244 -:1066400072147223C041300C2F3DD832E04B002031 -:10665000E08800043FFCCF9B584CE08B002158DBC6 -:106660005FBA301BFB380010F60818005F09126A89 -:10667000C030580CC1413078FACCFFD4FB680033ED -:10668000F01F007B3008303C50785058F01F0079E4 -:1066900058D6C070E08B00315856C0303FECCD5B0F -:1066A00030683019FB680033EF49011CFACCFFCD8C -:1066B000F01F0071501C1AD31AD41AD1FB38001CD9 -:1066C00004991AD80C9AFB380043FACCFFDC0A9BD9 -:1066D000F01F006A2FCD580CC1B140585808C05067 -:1066E000FACCFFECF01F0066407C580CCAD0F01FBB -:1066F0000065300CCAAB5906C6C0E0460020CCF19C -:1067000030283029FB680033EF49011CCD0BFACC4F -:10671000FFECF01F005D500C40585808C050FACCF8 -:10672000FFECF01F0057407C580CC030F01F0055A4 -:1067300040085818C8915800EFF81009F9B9010835 -:10674000F1D9E138EFF81A093009FB380010F208E6 -:106750001800C051F9D5B008F01F004C6E98EDB884 -:106760000001C0514C18F0F800FC501840185808AF -:10677000C080FB3A0010FB3B000C089CF01F00445B -:10678000306A089BEECCFEECF01F0042301AFACBC8 -:10679000FFF4EECCFEE6F01F003FEECCFEE5301A33 -:1067A000FACBFFF0F01F003B3018EF480110FB68F8 -:1067B00000326E9C4AD7EDBC0001C120EDBC000741 -:1067C000C061FB38000C50285845C1E1301CC3DBC8 -:1067D00030483039FB680033EF49011CC68B300864 -:1067E0004ADB1099109A109CF01F002CC3401ADC51 -:1067F0003018FAC9FFCA300A308B4A9CF01F0029B2 -:106800006E9C2FFDCDCBEA0915064A780C9AF0094B -:106810000007049BEF650026EF560024EECCFFFC3A -:10682000F01F001C089BEF610036306AEECCFFD8E9 -:10683000F01F00185803C110069B308AEECCFFD21F -:10684000F01F001440288FF0EF68003830188F08D0 -:10685000109CCFBA6E9CCB3B069B308AEECCFFD20D -:10686000F01F0012CF0B0000000087F4800177A416 -:106870008001EF6C80017BD88001E2148001D3A8F5 -:10688000800091E880018E9C8001641C800162D0B0 -:10689000800091DC80015E8480016AF48003B798F7 -:1068A0008001773000007648800091D0EBCD40C069 -:1068B000300749A60E98A7682FF7EC08000B76085A -:1068C0005808C0F10E985847CF714957EF3C004C1B -:1068D000F01F0014EEFC0100F01F0013E3CF90C086 -:1068E00076F8F6C9FFD2F73C00261AD8F6C8FFD8CA -:1068F0001AD91AD8F7390036F6CAFFFC1AD9F73870 -:106900000038F7390027F71B0024F01F00082FCDAF -:10691000581CCD90E3CF80C000007648000087F47B -:10692000800163E0800163488001661C7808301CA8 -:10693000F80A094C201C106C5EFCD70348787008DC -:106940005808C0901838C041C078103CC05070B88A -:106950005808CFC15EFD5EFF0000778C189A48F89A -:10696000709CE21C00025E0C70A8EDB80000C03004 -:10697000305C5EFC48AC780B583BE089000D300978 -:106980004888F00B003891189109950BF6C8FFFF65 -:1069900099085EFF3FDC5EFC000087F4000077880A -:1069A0000000776848D972A8EDB80000C1313008FE -:1069B000780A99D848ABF60A003A741999E974181C -:1069C000F8C9FFCC910C7808301CF60800389119F2 -:1069D0005EFC305C5EFC0000000087F4000077681D -:1069E000EBCD40C0189778B95809C18078C893C8D2 -:1069F0006EC891096E3C580CC050F01F000B300857 -:106A00008F3833CA6EA635AB0E9CF01F00080C9B66 -:106A10000E9CF01F0007E3CF80C078C94858911939 -:106A200078B9CE7B800091E8800091D0800183B05E -:106A30000000778CEBCD40801897580CC180789877 -:106A40005D1848F972095809C051C11872B958093E -:106A5000C0E01237CFC16E785808C0B06E3C580CF9 -:106A6000C060F01F000830088F588F38E3CF908047 -:106A70000E9C301BF01F0004E3CF90800000778C49 -:106A8000800091E8800169E0EBCD4080496972A8FF -:106A9000EDB80000C040305CE3CD8080493870091B -:106AA0001839E08A001E4928F00C00376E09580991 -:106AB000C15072DA580AF3F8000EEFF80A01F3FA3F -:106AC000000DF3F8100EF5F81A0E72E8129C910AF8 -:106AD000F01F00086E095809CED1E3CF90803FCC5B -:106AE000E3CD8080000087F400007788000077689D -:106AF00080016A34EBCD40F81897169614951294DD -:106B0000109333CCF01F000CC1403008990799B89E -:106B10009938995899889996994599649973487ABA -:106B2000301899A8741999C9930CF8C8FFD495180E -:106B3000E3CD80F8800092000000778CD401202DF6 -:106B4000500A48C972A8EDB80000C040305C2FED73 -:106B5000D80248981A99F00B032A3048FA08000B1B -:106B6000F01F0006581CF9BC0001F9BC01FECF0B58 -:106B7000000087F4000077488001F1D8EBCD40C0D9 -:106B8000201D4AC618976CA8EDB80000C441580CE7 -:106B9000C3F0789B580BC3C0780A580AC3954A695A -:106BA000F20A033850085808C061C1A870D85008CC -:106BB0005808C1601037CFB1F40815036EDA580ACF -:106BC000F3D8E009EFF8000EF3F80A01EFF8100E21 -:106BD000F5F81A0E400870DA70E9930A6E9B3F9838 -:106BE0008F18580BC0300E9C5D1B6E8B581BC0500D -:106BF000582BC150580BC0516E2A1A9CF01F000F21 -:106C00000E9C301BF01F000E2FFDE3CF90C02FFD18 -:106C1000E3CF90C0305C2FFDE3CD80C0ECF801B82D -:106C20000E38CEF130094838F14901B8CEAB00003A -:106C3000000087F40000776880016B3C800169E008 -:106C4000D40148C9169E72A8F1D8C001C031305C89 -:106C5000D8024898304A76A9F00C032C1ADAF6C804 -:106C6000FFF833CAF01F00052FFD581C5F0CD80237 -:106C7000000087F4000077488001F164D431204D92 -:106C800030084931189650285018FAC5FFF4FAC256 -:106C9000FFF802901A93FAC4FFFCC098E006032A9A -:106CA000F01F000C0E9B401CF01F000B3049049B92 -:106CB0000A9AE206032CF01F0009304818970A9937 -:106CC0001A9B089C5817CEB02FCDD83200007748B9 -:106CD0008001F1D880016B7C8001F0B4EBCD40E005 -:106CE000201D49356AA8A1A8300A49298BA8149704 -:106CF000930A14984906EC08002C2FF748FA303B09 -:106D0000F01F000F581CC0F10E985887CF5148D87B -:106D1000300991189109301B1A9CF01F000B2FFDB0 -:106D2000E3CD80E06AA8A1C88BA8CF2B000087F430 -:106D300000007788000077488001692C8001F05CB2 -:106D40000000778C8001695C5EFD5EFFEBCD4080CA -:106D5000189778785808C030788C5D180E9CF01F12 -:106D60000003E3CD80800000800091E8D4314B1017 -:106D70001895169260095809C58030047258721926 -:106D80000A38F7B400FF5809CFA10891E80C1502A2 -:106D9000F01F00291893C46060075807C2303006FE -:106DA000C0486E175807C1E06E580A38CFB10E9C24 -:106DB000F01F0022E60609276E485808C0F06E1939 -:106DC0005809EFF80002E1F80A01EFF90001EFF8C5 -:106DD0001002F3F81A026E2891092FF66E17580761 -:106DE000CE415804C1A006953006C0380836C154BB -:106DF0006A07049C6E686E8B5D18491B0E9CF01F21 -:106E000000112FF62FC56E485808CF100E9C48CBA6 -:106E1000F01F000C0836CED5069CF01F000B029C1C -:106E2000D8321891029CD83212941291CB0B0000E8 -:106E300000007794800092008001463A80016D4CFA -:106E400080014642800091E8EBCD4080324CF01F3B -:106E500000081897C080324A300BF01F00060E9CC5 -:106E6000F01F00050E9CE3CD8080000080009200A2 -:106E7000800091D080014652EBCD40FC18961695CB -:106E80001494129310924077F01F000AC100995693 -:106E900099359964998799739942487A3008991875 -:106EA00074199929930CF8C8FFFC9518E3CD80FC60 -:106EB00080016E4800007794D431FACEFFDC189739 -:106EC00016901491129310927C157C04580CC26099 -:106ED00078095809C26049A66C085808C051C09882 -:106EE00070185808C0601039CFC13018109CD832C3 -:106EF000F01F0014C13099509931996399859972A6 -:106F00009944300899186C199929930CF8C8FFFC1A -:106F10008D188F0C3018109CD8323008109CD83245 -:106F200008981AD50499069A029B009CF01F000647 -:106F30002FFD580C5F188F0CCDAB0000000077942C -:106F400080016E4880016E78EBCD40404856ECCC15 -:106F5000FFF8F01F000530088D168D08E3CD804046 -:106F600000007794800145D6EBCD40807847785A71 -:106F70006E18103AE0880004E3CF8080783B6E0CF6 -:106F8000F01F000B6E285808C0406E1B6E0C5D1879 -:106F90006E3CE04C002BC050300A149BF01F0005E3 -:106FA0000E9CF01F0005E3CF90800000800091DC74 -:106FB00080014658800091E8EBCD40C0203D30086C -:106FC00018979928990814961A9C308AF01F001176 -:106FD000FACBFFF80E9CF01F00102FED580CC101EA -:106FE0006E085808C0400E9CF01F000C6E2C580C08 -:106FF000C040F01F000B300C2FFDE3CD80C05806C1 -:10700000FBF81000EDF81A002FFDE3CF90C0000050 -:107010008002E7368001DE6C8001D3A8800091E811 -:10702000EBCD40C0189778185B98C0C0783B580BE0 -:10703000C17078465806C04078685908C050E3CF00 -:1070400090C0E3CF80C0785A590AE08800153FF815 -:107050008D28ECCCFFF4F01F000CE3CF90C0784CEF -:10706000580CCEE06E685908CEB12F4CF01F0006C8 -:10707000E3CF90C06C0CF01F00056E5830198D18CE -:107080008D29CE8B8001A25C800091DCEBCD40E0AD -:10709000201D1697E04C0081E0800088E08A0027E0 -:1070A000E04C0083C2F0C2B4760A1A9C300BF01F89 -:1070B0000064E08A004F585CC490314CF01F0061BE -:1070C0004008913C4009723A580AC7A06E0830093E -:1070D000990899399919EF380008992840083149D9 -:1070E000301A91594008911AC1D8584CC4A0E04CAC -:1070F0000080C330300C2FFDE3CD80E0E04C0085F4 -:10710000CFA16E0A300B1A9CF01F004DE08A0022BE -:10711000585CC1C0EF3900084008300A9119400896 -:10712000915A301B400CF01F0048581CCE41400CB7 -:10713000F01F0046C0B0400B76785808C070300C85 -:10714000F01F0043581C5F0CCD7B2FFDE3CF90E078 -:107150003FEC2FFDE3CD80E07645760A1A9C300B9C -:10716000F01F0037FE9AFFF6585CCF005805C49117 -:1071700040089135400993550FCA4008911ACD2B0C -:107180007626760A1A9C300BF01F002DFE9AFFE23D -:10719000585CCDC05806C1914008301A913640095C -:1071A00093564008911ACBEB760A1A9C300BF01FCD -:1071B0000024FE9AFFCF585CCC900FC9CAEB3FD891 -:1071C00093184009935ACAEBECC5FFED0A9CF01FD7 -:1071D000001D4008913C1899400A743B580BC2406E -:1071E0006E080C9A93089336EECBFFF430162F0CF2 -:1071F0009316F01F00184008915540099316C92BAB -:1072000040060A9CF01F000F8D3C4009723C580C50 -:10721000C1000A9A6E5BF01F000F400891550FC91C -:1072200040089119C7FB3FD895184009935BC7AB3D -:107230003FD893184009935CC75B000080016B3C0A -:1072400080009200800169A48001693C80016C404B -:10725000800091DCEBCD40FC4C151696189476021C -:107260006A095909E088001B4BE7C15878BA580AE7 -:10727000F9F8000CEFF80A01F9F8100CF5F81A0CFF -:10728000201978C8910A8B09F01F00376A0959093B -:10729000E08800056E0C580CCEA16C2338086C36C3 -:1072A000ECCCFFCCF0041800C260F01F003018973F -:1072B000C2F0B8C464080C9A990899A6069B2CCC15 -:1072C0008F9CF01F002B3808F0041800C2303818CB -:1072D000F0041800C2B04A3B30088FB8761A8FCA43 -:1072E0009507EEC9FFD46A0897192FF8301C8B0850 -:1072F000E3CD80FC64495809CD90ECC8FFC9E01883 -:10730000FFFCF009000CF01F00191897CD31E3CDF8 -:1073100080FC318A049BEECCFFF4F01F00156E7ADE -:107320008F2A580AC1018F8ACD7BEEC6FFF4318ABD -:10733000300B0C9CF01F000F049B0C9C308AF01F3C -:10734000000CCCAB6EA82FD8E018FFFC6E9C100C84 -:107350008F8C645BF01F0006CBFB0000000077A061 -:1073600000000234800091E880009200800091DCEF -:10737000800091D0D421207D1297FACEFFD04B29E6 -:1073800018947298EDB80001C040300C2F9DD8229F -:10739000FCE800003006BB295C7A50265046FAC54E -:1073A000FFF8FAC9FFE00A9CF01F00282FED580CE7 -:1073B000C2D05807C0B08F368F5640680E9B0C9CC9 -:1073C0008F28F01F0023581CC2E11A9CF01F0021D7 -:1073D0005BBCC29040076E4C580CC070F01F001E82 -:1073E00030088F388F4840075807C0401A9CF01F5C -:1073F000001B402C580CC030F01F00175804FBF83D -:107400001006E9F81A002F9DDA2A40085808C040F3 -:107410001A9CF01F0012402C580CCB80F01F000E5D -:107420002F9DD82A40085808C0401A9CF01F000B16 -:10743000402C580CC0313FDCCAABF01F00073FDCCA -:10744000CA6B0000000087F48001DF7480016C408B -:1074500080018E9C800091E88001D3A8EBCD40E0B4 -:10746000208D149616951897308A300BF01F001354 -:1074700059F6E08800052F8DE3CF80E00A9B0C9A37 -:107480001A9CF01F000FFAC9FFE030080C09FACC73 -:107490000001F368FFE0F8C6FFFF300B30AA0C9C38 -:1074A000F01F000832EB0ECC0C9CF01F0007CF4100 -:1074B0002F8DE3CF90E00000800091D0800091DC20 -:1074C0008000917080009164D43120AD189E109599 -:1074D00014974C781292709CE21C0002C0511896CE -:1074E0000C9C2F6DD832169AFAC6FFE41C9B0C9C9C -:1074F000F01F00400C9BFAC3FFFCFACAFFDC069C9D -:10750000F01F003D1896581CCEC15807C2F10E91CD -:107510000E90069CF01F0039401818945808C0407F -:10752000069CF01F0037403C580CC030F01F00355F -:107530005BB4C4D05807C170E06B0BB8E0CCFFF46B -:10754000F01F00315BDCC3A0582CC07060285BF8D2 -:10755000C04060188508CC5B029C301B3006F01FD1 -:10756000002BCBFB40988B08CBCB3FF8310C8B0822 -:10757000F01F002718941890C280F8C8FFF4500834 -:10758000109CF01F00248907640930088919089AA3 -:1075900031094A1B109CF01F00211891C20040982D -:1075A000189B9928300CF01F001E581CCB300C9BE8 -:1075B000029C3FD6F01F001BC94B029C301BF01FE2 -:1075C000001340988B08C8DB3FD6C8BB5807CFD004 -:1075D000029C301B3FD6F01F000DC83B400CF01F33 -:1075E0000012089C3FD6F01F0007C7BB000087F4BD -:1075F0008001745C80016FB880018E9C8001D3A8EB -:10760000800091E88001A22880016B7C80009200BC -:107610008001A28C8001702080016AF480016C409E -:10762000800169E08001A27CEBCD40E0209D49F81B -:1076300018991495709CE21C0002C06118960C9C6D -:107640002F7DE3CD80E0169AFAC6FFE8129B0C9CD2 -:10765000F01F00170C9B1A97FACAFFE01A9CF01F44 -:1076600000151896581CCEC11A9CF01F0013400834 -:1076700018965808C0401A9CF01F0010402C580C57 -:10768000C030F01F000F5BB6C0313FD6CD9B300C31 -:107690008B3C8B5C40880A9B8B28F01F000A581C8F -:1076A000CCF03FD6CCDB0000000087F48001745C96 -:1076B00080016FB880018E9C8001D3A8800091E882 -:1076C00080016C40EBCD40FC1895169414921293F7 -:1076D00010974076310CF01F0012C1D099369905F1 -:1076E00099149927189A3008310948EB109CF01F1B -:1076F000000E1896C100069B049C0C9AF01F000B0C -:107700001897581CC0500C9C301BF01F00090E9C91 -:10771000E3CD80FC30070E9CE3CD80FC800092001E -:1077200080016F6880016AF480017628800169E039 -:10773000EBCD406E202D4086129310951491169A31 -:10774000189B1A9CF01F0008069B0C99FAE2000097 -:107750000A9ABB23029CF01F00052FED2FEDE3CD0D -:10776000806E00008001745C80017374EBCD406812 -:10777000202D129310961495169A189B1A9CF01FA0 -:107780000008FAE800000C9ABB29069B0A9C300905 -:10779000F01F00042FED2FEDE3CD80688001745CB5 -:1077A00080017374EBCD40401896303CF01F00040C -:1077B0007848301C8D08E3CD804000008001EF6CDC -:1077C000EBCD406048A618952F060C9CF01F0009D1 -:1077D000303CF01F0009310AF8CBFF8C0A9CF01FE7 -:1077E00000070C9CF01F0006E3CF9060000087F4B8 -:1077F000800145F88001EF6C800091DC800145FA42 -:10780000D42149461894ECC5FFF00A9CF01F0012E1 -:10781000ECF700F85807C0C06F38707B2F4B322A46 -:10782000089CF01F000E0A9CF01F000DDA2A303C65 -:10783000F01F000CC060F9380088EE081800C06026 -:10784000ECCCFFF0F01F0006D82AF8CBFF78CE8BE7 -:10785000000087F4800145F88002E736800145FA90 -:107860008001EF6CEBCD40E049061895ECC7FFF0C6 -:107870000E9CF01F000F303CF01F000EECF600F8DD -:107880005806C0C0ECCBFFE2306A0A9CF01F000A29 -:107890000E9CF01F000AE3CF90E00E9CF01F000743 -:1078A0000C9CE3CD80E00000000087F4800145F8E7 -:1078B0008001EF6C8002E736800145FAEBCD404055 -:1078C000209DE04B0020E08B001CBABB580BC1B1DF -:1078D0003FF8BAA849162F060C9CF01F0011303C47 -:1078E000F01F0010322AFACBFFFEF8CCFF78F01F11 -:1078F000000E0C9CF01F000D2F7DE3CF90402F7DDC -:10790000E3CFC0403008169ABAA8189BFACCFFFC07 -:10791000F01F0007CE0B0000000087F4800145FC3B -:107920008001EF6C8002E736800145FE800091DC2B -:10793000EBCD40E01895303CF01F000B1897C110BC -:1079400048A62F060C9CF01F000A0A9B306AEECC5A -:10795000FF56F01F00080C9CF01F0007E3CF90E0DB -:10796000E3CD80E08001EF6C000087F4800145FCEE -:10797000800091DC800145FED401F01F0002D80296 -:1079800080017930EBCD40EC202D18961697586B7E -:10799000C0503FFC2FEDE3CD80ECFACCFFF8E06364 -:1079A000312EEA13322EE0623100EA12312EB92371 -:1079B00016980C99300A308B1A9CF01F0010301C5E -:1079C000F01F000F48F81893F0C5FFF00A9CF01F55 -:1079D000000E5803C0C00E9A0C9B069CF01F000BB3 -:1079E0000A9CF01F000B2FEDE3CF90EC0A9CF01FD8 -:1079F0000008069CCD0B00008001776C8001EF6CC5 -:107A0000000087F4800145FC800091DC800145FE88 -:107A1000EBCD40E01897303CF01F0018EEC8000195 -:107A200018955818E0880004E3CF80E058175F09E4 -:107A300049366D1858385F0AF5E90009C0E1582742 -:107A40005F08F5E80008C030E3CF90E0F01F000DBC -:107A5000C0A18B47E3CF90E0F01F000B6D185838A2 -:107A60005F0ACEEB303CF01F000578485818CF2055 -:107A7000F01F0005CEFB00008001EF6C000087F4D2 -:107A800080017BC88001F340EBCD40F81696189337 -:107A900076085858E08A002A49A83064F0C5FFF0FB -:107AA00097040A9CF01F0018301CF01F001818974C -:107AB000C160202D189B089A1A9CF01F0015F01F1A -:107AC00000152FED580CC1616C0A0E9B069CF01F2F -:107AD00000120A9CF01F0011E3CF90F80A9CF01FDF -:107AE000000F0E9CE3CD80F830683FFC9708E3CD93 -:107AF00080F80A9CF01F00093FBCE3CD80F800002D -:107B0000000087F4800145F88001EF6C8002E736C1 -:107B1000800188B0800091DC800145FA0050F200BD -:107B2000000FAC003008F9480320F94803245EFC3C -:107B3000EBCD40C016971496F8FE0320FCCBFFFF58 -:107B4000F60A141FE069851FEA1951EBF60904488B -:107B5000A5591419F8FA0324F2091064121B143BF6 -:107B6000C0B0F94B0320F80E0927FCC8FF9CF808A9 -:107B70000926E3CF90C0E3CF80C0D401189EF8FC63 -:107B80000324FCF803201838C1F0F8C8FF9CFC0C53 -:107B9000032CFC08032930089709E069851FEA19BE -:107BA00051EBFCFB0324FC0B09282FFBF6090448CE -:107BB000F60A141FA5591419F2091064F6090109EF -:107BC000FD490324D802D80A4838F0F900F85809CA -:107BD0005F1C5EFC000087F43018198CF00C180054 -:107BE0005F0A3058F00C18005F09124AC0F1306883 -:107BF000F00C1800C0B03028F00C1800C080584CB1 -:107C0000F9BC0003F9BC01005EFC5EFF302C5EFC99 -:107C100048C8F0F800FC5818C0D0C0635828C0D03D -:107C20005838C0505EFF580C5F0C5EFC583C5F8CAF -:107C30005EFC581C5F8C5EFC582C5F8C5EFC000068 -:107C4000000087F4EBCD40C01897169E740A580ABE -:107C5000C0D0753A580AC0A0747A580AC0704FF85C -:107C6000F0F901045889E0880004E3CF80C04FC8D0 -:107C7000F009032F94D8EDB80004CF813008301CF0 -:107C80009D08E3CD80C0F53900C83FF8F009180021 -:107C9000CED0F51B00D2580BCE90F51C00D030266C -:107CA000F4FA00D8F40C002811B9EC091800E080AF -:107CB00000BFF8C8FFFF3009F40800280C9CF0CA88 -:107CC000FFFDC07815882FCAF8081800E08000B0C2 -:107CD0002FF91639CF85CCABF53900C83FF8F0093C -:107CE0001800CC40F51B00D2580BCC00F51C00D07E -:107CF0003016F4FA00D8F40C002811B9EC09180079 -:107D0000E08000A4F8C8FFFF3009F40800280C9CAC -:107D1000F0CAFFFDC07815882FCAF8081800E08067 -:107D200000952FF91639CF85CA1BF53900A43FF805 -:107D3000F0091800C9B0F51B00B2580BC970F51C4A -:107D400000B03026F4FA00B8F40C002811B9EC09A0 -:107D50001800C660F8C8FFFF3009F40800280C9C22 -:107D6000F0CAFFFDC06815882FCAF8081800C58042 -:107D70002FF91639CF95C7ABF53900A43FF8F009B4 -:107D80001800FE90FF74F51B00B2580BFE90FF6FB9 -:107D9000F51C00B03026F4FA00B8F40C002811B934 -:107DA000EC091800C3D0F8C8FFFF3009F408002818 -:107DB0000C9CF0CAFFFDC06815882FCAF80818008F -:107DC000C2F02FF91639CF95C51BF53900A43FF83D -:107DD000F0091800FE90FF4BF51B00B2580BFE9007 -:107DE000FF46F51C00B03016F4FA00B8F40C002879 -:107DF00011B9EC091800C220F8C8FFFF3009F408D7 -:107E000000280C9CF0CAFFFDC06815882FCAF8082E -:107E10001800C1402FF9123BFE99FFF9C27B3028B0 -:107E2000AE8830199D09129CE3CD80C03028AE8801 -:107E30003029301C9D09E3CD80C03018AE88301940 -:107E40009D09129CE3CD80C03018AE883029301CCB -:107E50009D09E3CD80C00000000087F48003B7B027 -:107E60003028F00C1800C390E088001B3048F00C5C -:107E70001800C3503058F00C1800C21030093028D8 -:107E8000F00B1800C160F00B1800E08B001B3018DD -:107E9000F00B1800C100300812385F5C5EFC30182F -:107EA000F00C1800CEC130193028F00B1800CEC1EC -:107EB0003038C02830181039CF045EFE3029CE0B80 -:107EC0003048F00B1800C0703058F00B1800CE414D -:107ED0003028CF2B3048CF0B3039CD2B3049CD0B4C -:107EE000D431307977387075B8891894581AC0D061 -:107EF000C043582AC4C0D83A7738707A94D9EDB9BB -:107F00000004E0800087DA3AEB3900A43FF8F0097A -:107F10001800CF20EB0800B03009F2081900CF405C -:107F2000149112923006307B30533060C1A8E007C4 -:107F30001800C2B03028F0071800C7A03048EE087B -:107F40001800F9BC0003F9BC0100F01F003CE9F780 -:107F50001E002FF6EB1800B00C38FE9AFFD6098BE6 -:107F6000EAF800B8F006002811B70E9CF01F0034A4 -:107F7000FE9AFFF1E20718005F08E60718005F09A4 -:107F80001248E4081800CD40301CCE0BEB3900C875 -:107F90003FF8F0091800CB00EB0800D03009F208D8 -:107FA0001900CB2012913006307B301230533060F4 -:107FB000C1A8E0071800C2B03028F0071800C3A01D -:107FC0003048EE081800F9BC0003F9BC0100F01FAE -:107FD000001BE9F71E002FF6EB1800D00C38FE9AB4 -:107FE000FF94098BEAF800D8F006002811B70E9C20 -:107FF000F01F0013FE9AFFF1E40718005F08E60780 -:1080000018005F091248E2081800CD40301CCE0B62 -:10801000307B305CF01F000AFE9AFF77301CF01FA7 -:108020000007FE90FF723058301CA888D832302CE0 -:10803000C8DB302CCCDB000080017C1080017E602E -:108040003008484A48499508951893085EFC000096 -:10805000000089EC00008C5CEBCD4080189E198BF1 -:10806000580BC130300A3017149CFC0A00092FFA53 -:1080700013982018EE080948F9E81008F9D8B0104C -:10808000163ACF45E3CD8080169CE3CD80807938C9 -:10809000707A3308F53900C8F0091800C0205EFD79 -:1080A000F51800D4E218000C5848C0E0E08A000837 -:1080B0005888C08058C8CF41310C5EFC5808CF01A9 -:1080C0005EFF304C5EFC302C5EFCD703EBCD40E015 -:1080D00030081896109A169C8D084927760E301590 -:1080E000109BC0A8F80A00082FFA11C9EE0B070868 -:1080F000A7D91039C0A01C3ACF652FFB58DBE08B05 -:10810000000E300A780ECF8B6C08EA0B0949124832 -:108110008D082FFB58DBFE98FFF6E3CF90E00000C0 -:108120008003B7F4EBCD40C030069906149EF8C723 -:10813000FFFC1799EC091800C0E00C9AF60A000839 -:1081400011A90EC978082FF899082FFA1798143832 -:10815000FE99FFF61D993008F0091800C0F0300BA9 -:10816000FC0B000811A9EE0B0B0978082FF89908F1 -:108170002FFB1D981638FE99FFF5E3CF90C0EBCD8D -:1081800040F816941897780B68065806E08A002C79 -:10819000F6C8FFFCE8C5FFFCF8080003300E2FCC42 -:1081A000EA0E070A580BE08A00130FC81458F1D8DA -:1081B000C007C1503009C078F80907081458F1D831 -:1081C000C007C0D02FF9123BFE99FFF8597BE08B16 -:1081D000000706CA6E0B2FFB8F0B68062FFE1C369E -:1081E000FE99FFE0E3CF90F8EBCD40FE1894169295 -:1081F0001497780676055805E08A0025ECC8FFFC40 -:10820000F6C3FFFCF8080001300EF4CCFFFCE60ECC -:10821000070A6E0B580BE08A00120FC81458F1D8E9 -:10822000C007C1203009C078F80907081458F1D8F0 -:10823000C007C0A02FF91639CF852FFE1C35FE9937 -:10824000FFE8E3CF90FE5976FE9BFFF902CA68066D -:108250002FF689062FFE64051C35FE99FFDACF2B19 -:10826000D42178045804E08A0027F8C7FFFC493875 -:108270000F8B700C11C6580CE08A0017F0C5FFFC7C -:10828000300EEDEB2008F1D8C007C0F00A9A300993 -:10829000C0782FFA15881658F1D8C007C0602FF99A -:1082A000123CFE99FFF8D82A2FFE2FF7083EC03463 -:1082B0000F8BCE8BDA2A00000000023CD4211897E5 -:1082C00076055805E08A0026F6C6FFFCF8CEFFFCCE -:1082D000300B1694C0482FFB0A3BC1B4EC0B070AC5 -:1082E000E80A1800CF946E0C580CE08A00120FC8F0 -:1082F0001458F1D8C007CF003009C078FC0907082E -:108300001458F1D8C007CE802FF91839CF85D82A54 -:10831000DA2A3248F00C1800C110E08800113488C5 -:10832000F00C1800C0B0E08800183608F00C1800F7 -:10833000C05036C8F00C1800C0E15EFF3128F00CC8 -:108340001800CFC03188F00C1800CF8030C8F00C76 -:108350001800CF405EFD3308F00C1800CFC1CEEB03 -:10836000EBCD40E078055805E08A0010F8C6FFFC28 -:108370003007C0380A37C0940D8C2FF72FF6F01F46 -:108380000004CF90E3CF90E0E3CF80E08001831240 -:108390004838F14B01DCF14C01D85EFC000087F459 -:1083A0004838F14B01ECF14C01E85EFC000087F429 -:1083B000EBCD40801697581BC050582BC080E3CFA0 -:1083C0008080F01F00050E9CE3CD8080F01F00022E -:1083D000E3CF9080800091E8D401580CC070486BC6 -:1083E000760AE04A0168E0880003D80AF01F00031B -:1083F000DA0A0000000089EC800091DCD401580CFE -:10840000C0A078185908E08B0007780AE04A016894 -:10841000E0880003D80A189B482CF01F0003DA0AF2 -:10842000000089EC800091DCEBCD4040350A1896C5 -:10843000F01F000330088D48E3CD8040800091DCC0 -:10844000D401306AF01F0002D8020000800091DCE5 -:10845000D401300CF01F0002DA0A000080016C7CAD -:10846000D421201D189414971296169A1095189BD3 -:108470001A9CF01F001CE08A0032585CC27058063B -:108480005F1858075F191268C241300840099338D5 -:10849000400A95584008301B9115400CF01F0012FF -:1084A000581CC100400C78785808C090189B089C54 -:1084B000F01F000E581CC0A03FDCC098301BF01FFE -:1084C000000C400C78785808CF21301C2FFDD822A2 -:1084D0004008913740099356CDEB3FEC2FFDD82251 -:1084E00080016B3C800169A480016C40800169E0DF -:1084F000EBCD40C018971696303CF01F00283DD8B1 -:108500003079AE88AE9935083F29300BAEB8AEC988 -:1085100030283019AED8EF6B0008AEABAEEBAEF939 -:1085200058065F1AF8F900BC58095F181468F60875 -:108530001800C310F8F800D05818F9B80008EFF880 -:108540000E08F8F800CC5818EFF80808F9B900043C -:10855000F1D9E038EFF80E08F8F800C85818EFF82D -:108560000808F9B90002F1D9E038EFF80E08F8F878 -:1085700000C45818EFF80808F9B90001F1D9E0383B -:10858000EFF80E08F8F900D4EF380008F1E91048C8 -:10859000EF680008E3CD80C08001EF6CEBCD404078 -:1085A0001896303C5C76F01F000E5876E088000488 -:1085B000E3CF804048B8F006032FF90C00C6E3CDA6 -:1085C0008040F90C00CAE3CD8040F90C00CEE3CD29 -:1085D0008040F90C00D2E3CD804000008001EF6CB8 -:1085E0008003B7D4D40130DCF01F0002784CD802ED -:1085F0008001EF6CEBCD40FC207D31CA1893300B2D -:108600001A9C1A92F01F001266045804E08A00189F -:10861000E6C6FFFC30070D852FF72FF60A9CF01FEA -:10862000000DC0A14008FACAFFE4F0C9FFFF100A1C -:108630005009F565FFE80E34FE99FFEF1A9B069C82 -:1086400031CAF01F00052F9DE3CD80FC800091D042 -:1086500080018312800091DCEBCD40E0207D300B67 -:10866000189731CA1A9CF01F00171A956E0B580BF9 -:10867000E08A0024300AFAC6FFFCEEC9FFFC0C9C1D -:10868000149EC0582FF9143BE08A000D2FFA13886E -:10869000FC081800CF8418C82FF96E0B143BFE9904 -:1086A000FFF7F80601061A9B50060E9C31CAF01F10 -:1086B00000062F9DE3CD80E0FAC6FFFC0C9CCF2B7B -:1086C000800091D0800091DCD421129618971695E5 -:1086D0001494580CC1205809C111314CF01F0009E5 -:1086E000C0C09907B8C599249936487A7419994930 -:1086F000930CF8C8FFF49518D822F01F0004D82274 -:1087000080009200000077A4800147E0EBCD40C0DC -:108710001896580CC110308CF01F000C1897C090A0 -:108720000C9CF01F000B8F1C1898C0A030188F08ED -:108730000E9CE3CD80C018970E9CE3CD80C00E9CAC -:108740001097F01F0004CF5B800092008001D920B9 -:10875000800091E8EBCD40C049566C075807C180B6 -:108760006E395809EFF80004EDF80A01EFF810042B -:10877000F3F81A046E4891096E2A0FCB6E0CF01FA5 -:10878000000D0E9CF01F000C6C075807CEA148B8D6 -:10879000F0C7FFEC0E9CF01F000AC071302CF01FD8 -:1087A00000090E9CF01F0008E3CD80C0000077A4F4 -:1087B000800147E0800091E8000087F4800145DCFB -:1087C0008001478C800145ECD4014848300991185C -:1087D0009109F01F0003D802000077A4800187549C -:1087E000EBCD40FE4A0618976C0816951494201895 -:1087F000E0480167E0880004E3CFC0FE580A5F1933 -:108800006C1A300B580A5F181268F6081800CF501F -:10881000183A5FB858FC5F891268F6081800CED085 -:1088200016910C92C0B82FF7641958F75F8A0E3969 -:108830005FB81468E2081800CE00EE031016306A24 -:10884000E6CCFFF80A9BEC0C000CF01F0008CEC130 -:10885000485B089C060B310A2F2BF01F00050E9C6D -:10886000E3CD80FE000089EC8000917C800091DCEB -:10887000EBCD40E018951697300C18960E9A0A9B8F -:108880002F07F01F0005C0452FF62FFCCF8B0C9C47 -:10889000E3CD80E0800187E0D401306AFACCFFFCB0 -:1088A000FACBFFF4F01F00025F0CD8028000917C2D -:1088B000EBCD4068205D3FF8FACAFFDC15D9FB68B4 -:1088C0000013FB68000EFB68000FFB680010FB68DC -:1088D0000011FB680012FAC6FFF8ACD974088D08C5 -:1088E00015C9FAC3FFFEACC93065FACBFFF20A9A8C -:1088F000069CF01F00060A9A069B0C9CF01F0004C1 -:108900005F0C2FBDE3CD80688002E7368000917C4C -:10891000D401FACBFFFCF73900241788F0091800BE -:10892000C020D80AF73A00251798F4081800CFA1FC -:10893000F6CCFFFE2DABF01F00035F0CD802000049 -:108940008000917CEBCD4040211D303CF01F001E8B -:10895000322A1896FACBFFB4FA0A000CF01F001B5B -:10896000ECC6FF78ECE80000FAE90000ECEA000849 -:10897000FAEB0008ECE80010FAE90010ECEA001845 -:10898000FAEB0018ED380020FB680020ED390021DB -:10899000FB690021FB3A00221B88F4081800C05034 -:1089A000300C2EFDE3CD80401B9AFB380023F408E9 -:1089B0001800CF71FACBFFFEFACCFFDCF01F0004E9 -:1089C0005F0CCF0B8001EF6C8002E7368000917C5A -:1089D000EBCD40E0203D4B571896EF3900943FF81F -:1089E000F0091800C3507938707C2F4CF8E800006B -:1089F000209DFAE90000F8EA0008FAEB0008F8E820 -:108A00000010FAE90010F8EA0018FAEB0018F9383B -:108A10000020FB680020F9390021FB690021F01FCC -:108A200000242F7D580CC0412FDDE3CD80E0202DA8 -:108A3000EEC7FF4A306A0E9B1A9CF01F001EF01F03 -:108A4000001E2FED580CC1C02FDDE3CF90E0F8CB16 -:108A5000FFE2306A1A9CF01F0017EECBFF4AFAC6FD -:108A6000FFFA306A0C9CF01F00130C9B1A9C306AB2 -:108A70001A95F01F00125F0C2FDDE3CD80E0ECCBE8 -:108A8000FFE2FAC5FFFA306A0A9CF01F000A0E9B4B -:108A9000306A1A9CF01F00071A9B0A9C306A1A96CB -:108AA000F01F00065F0CCC1B0000026080018944AF -:108AB0008002E736800188B08000917CD401201DBF -:108AC000500C580CC0401A9CF01F00022FFDD80219 -:108AD0008001D3A8D401201D500C580CC0401A9C12 -:108AE000F01F00022FFDD8028001D3A8EBCD40C0BB -:108AF000E06B00E41896300CF01F000A1897C0E0F5 -:108B0000E06A00E40C9BF01F0008ECC9FFF8EECA15 -:108B1000FFF8486B0E9CF01F00060E9CE3CD80C052 -:108B20008001D8DC800091DC8001D3EC8001ACA80E -:108B3000EBCD40C0E06B00EC1896300CF01F000A43 -:108B40001897C0E0E06A00EC0C9BF01F0008ECC92D -:108B5000FFF0EECAFFF0486B0E9CF01F00060E9C63 -:108B6000E3CD80C08001D8DC800091DC8001D3ECB3 -:108B70008001ACA8EBCD40FE129210914A88F0F92A -:108B800000F818933DD8733C316916977874AE8815 -:108B9000AE9930083509AEA8AEB93F283019301665 -:108BA00014954A0B303AAEC8AED9AE36EECCFFF8CB -:108BB000F01F001D069CEF65000BAE76AE66308B95 -:108BC000F01F001A8F5CC290303A496BF01F0016FC -:108BD0006E58B0B28EE86E5C303AF808002C491B33 -:108BE000F01F00116E598EE8F2080028B0B1E919A3 -:108BF00000B0E91800B21208E93900A5A3682F08EF -:108C00001039C030E3CF90FE0F9830092FE8EF59AC -:108C10000010AE98E3CF90FEE3CD80FE000087F415 -:108C200080017B1C800091DC8001D3ECD431201DBD -:108C3000314E1697330BAE9EAE8B1090FACBFFD809 -:108C40007618500818921493129176055805E08A08 -:108C50000006EA0815042EA8AE983016303AAE1673 -:108C600049E4EECCFFFCE8CBFFFCF01F001D049CA8 -:108C7000AEF3AE56AE46AE75EA0B15042F8BF01F61 -:108C800000198F4CC280303AE8CBFFFCF01F001473 -:108C90006E48B0B18EC86E4CE8CBFFFCF808002CD3 -:108CA000303AF01F000F6E498EC8F2080028B0B0AD -:108CB0003289AE695805E08A000D6E488EC98EDC97 -:108CC000EA0A1504120C400BF00C002CF01F0004F3 -:108CD0002FFDDA3A2FFDD83280017B1C800091DC19 -:108CE0008001D3ECEBCD40E0201D500B1897580CC1 -:108CF000C070169A4C4C0E9BF01F0044C6404C4668 -:108D000030080DA9F0091800C050301C2FFDE3CD2C -:108D100080E0ECCCFFE4F01F003FCF815807C2F0A9 -:108D2000301CF01F003DC3304B751A9B4B6CF01F7D -:108D3000003B1897C320F01F003A3018ED4C00CCD0 -:108D4000ACA80E9C3005400BED5500D04B07F01F32 -:108D500000351896581CC3F1EECCFFE4F01F00322A -:108D60004B28F1090142EA091900CD006E98EDB8CF -:108D7000000ECCC0F01F002E0C9CCC9B4A25EAF9BB -:108D80000320EAF803241039CCC1CD0BECCCFFE46E -:108D9000F01F0025301CCBBBECF801245818C04054 -:108DA000301CF01F0024ECCCFFE4F01F001FEAF998 -:108DB0000324EAF803201238CA90301CF01F001672 -:108DC000301CCA5B492AF50B00D2F80B1900C0A071 -:108DD0003FBCC9DBEECCFFE4AEA5F01F00133FBCE7 -:108DE000C96B3018F55800D24909F3080142F6085A -:108DF0001900CEF07498EDB8000ECEB0F01F000C44 -:108E00003FBCC85B000084CC80017B30000087F44D -:108E1000800145DC80019F3080017B7A800145C460 -:108E200080014664800145EC000002608001FBFC8B -:108E30008001A128EBCD40C01897F01F0015C1B0EC -:108E40006E4849468D186E598D2930096E2C8F2930 -:108E50006E486E3BE2180080F9B80001EDF80E0292 -:108E6000F01F000D1897581CC0803008300CACA8BB -:108E7000E3CD80C0E3CF90C0F01F00083008ED4C78 -:108E800000CCED5800D00E9CE3CD80C08001C6A080 -:108E9000000087F480014664800145C4EBCD40802A -:108EA000491A18977498EDB80001C111F4F801241B -:108EB0005818C0A07848951878599529F01F000BCC -:108EC000C091E3CD8080109CE3CD80803FBCE3CD9A -:108ED000808030086E2C6E3B8F28F01F0005E3CD9C -:108EE00080800000000087F48001C6A080018CE42F -:108EF000106104000000000040200700FFFFFFFF9A -:108F0000000000004869F2F802045828C0205EFE04 -:108F1000580CCFE0F2C8FFF099085EFF000077AC74 -:108F20005EFDD7034828912C913B5EFF000077AC93 -:108F300048384849910C930B5EFC000000007540D6 -:108F4000000074B45EFCD703D431202D500C3008DF -:108F5000FAC1FFF81690109402D84A424A43E269D7 -:108F60005A4C089A0819029B009C40085D181895F5 -:108F70005804C0B1584CF80A1780F9BA0B0449DB01 -:108F8000401CF01F001DC2E140165805C1000A97A1 -:108F90005907EE0A1780F9BA0B100C9B1417140628 -:108FA00064085C7A660C5D185807CF310A04E24405 -:108FB0005A4BFE98FFD65875E088000D4018EACC51 -:108FC000000848CBF00C000C2F8B308AF01F000AF1 -:108FD000C0913009009C129A129B40085D182FED39 -:108FE000DA3A30DC2FEDD83200007540000074B45E -:108FF00080018EF08000917CEBCD40FC49F8189404 -:10900000F0C3FDDCF0C7FFBC3072C0B8321A089B59 -:109010000A9CF01F001B1896C1D02C470637C16070 -:10902000EEC5002C5804CF316E08109C5808CF6054 -:10903000F01F00148F04EF44FFF86E185808CEE1BB -:109040008F248F322C470637CEC15804C0D0E3CFCF -:10905000C0FC6ABC580CC080F01F000A8B968BB60F -:109060006AC85808C030E3CF90FC8BD8301C3078E9 -:109070008BE8E3CD80FC0000000077AC8000917CA1 -:10908000800091E8EBCD40FE109114961895169251 -:109090001293F4C80008E0480037E08B00185859D4 -:1090A000C18049D8F0C4FE08F0C7FFE86EB8580880 -:1090B000C1300E9C321A0A9BF01F0018C1D02C47F9 -:1090C0000837CF51307CE3CD80FE30ACE3CD80FE5D -:1090D000129CE3CD80FEECCBFFFF049CF01F001040 -:1090E0000A9B8FBC8F968FD18FE30E9C321AF01F94 -:1090F000000DE3CF90FE6EBCF01F000B049CECCB88 -:10910000FFFFF01F00078FE38FBC8F968FD1E3CF57 -:1091100090FE0000000077AC8000917C8000918878 -:10912000800091DC800091E8D401487BF6F80204CD -:109130005828C020DC0AF6CBFE04306AF01F00037A -:10914000DA0A0000000077AC800091DCEBCD40FE35 -:10915000209D580B5F09580A5F08169314941069F4 -:10916000C341580BC4514A9264585808C2E03005B4 -:10917000FAC1FFFD0A970A9CC0D8ED3A0020FB38DF -:109180000023F4081800C2E00E9C64580E38E088F2 -:10919000001E64482FF7F00C03265803CEF1306A06 -:1091A000089B5804C0A0202D1A9CF01F0019F01F26 -:1091B00000192FED580CC0E05805C0506AC96CC8A2 -:1091C0001238CE350C95CE1B30050A9C2F7DE3CD91 -:1091D00080FE306A089BECCCFFDFF01F000FCD5102 -:1091E000CECB029B0C9CF01F000CCCF1CD9B189BAE -:1091F000069AFACCFFFDF01F0009FB6300234832FA -:1092000064585808CB51CE1B000077AC8002E7367B -:10921000800188B08000917C800091DCEBCD4060C3 -:10922000306A202D169618951A9CF01F0009F01F21 -:1092300000090C9A5F0B0A9CF01F00072FED581CC9 -:10924000F9BC0001F9BC01FFE3CD80608002E73684 -:10925000800188B080016480D4015C6CF01F000440 -:10926000581CF9BC0001F9BC01FFD8028001641C44 -:10927000EBCD406E202D1293189116921495300B61 -:10928000308A1A9CF01F0012306A069B1A96202D15 -:109290001A9CF01F0010F01F001030085F091AD848 -:1092A0000A9A1AD6049B1AD3029C1AD83038F01F97 -:1092B000000B2FAD5BFCC070581CF9BC01FF2FEDFB -:1092C000E3CD806E304C2FEDE3CD806E800091D0E9 -:1092D0008002E736800188B08001661CEBCD406ECD -:1092E00010911892169314951296F01F00113008E1 -:1092F0000C991AD80A9A1AD1069B049CF01F000DEB -:109300002FED583CE0890007582CC085306CE3CD28 -:10931000806E584CC070E3CFC06E5BECC050581CE0 -:10932000CFB1E3CF906E30BCE3CD806E8001A1DC85 -:109330008001F7D8EBCD4040201D10964978F0FE13 -:109340000204582EC0503FFC2FFDE3CD804030EE8C -:10935000FAC8FFFC10DE300E1A985C761ADE1AD6B8 -:10936000F01F000F2FEDFE5CFC17E0890010FE5C83 -:10937000FC16C114FE5CFB4FC070FE5CFBB4C0B0B9 -:10938000FE5CFAECCE11307CCE0B5BECC040581C7E -:10939000CDB1CDBB30BCCD9B000077AC8001F54496 -:1093A000D4014858F0F902045809C030F01F0003F6 -:1093B000D8020000000077AC80014480EBCD40E88B -:1093C0004D56189514971693E06A0218300B0C9CB2 -:1093D000F01F00524D288D05700C8D133005A36CC5 -:1093E000ED450204F01F004F8D4CC031E3CFC0E8C3 -:1093F0000A9CF01F004D581CCFA11AD5F1D7C00808 -:109400000A990A9A310B320CF01F00482FFD581CA4 -:10941000CEE1F01F0047581CCEA11AD50A980A9930 -:109420004C4A0A9B302CF01F00442FFD580CCDF005 -:1094300030670A981AD70A994BEA0A9B322CF01F18 -:10944000003E2FFD580CCD3030780A991AD84B9A2F -:109450000A980A9B323CF01F00382FFD580CCC7044 -:109460001AD50E9C0A980A994B2A0A9BF01F0032C3 -:109470002FFD580CCBC030270A981AD70A994ADA20 -:109480000A9B304CF01F002C2FFD580CCB001AD734 -:109490000A984A8A0A990A9B305CF01F00272FFD20 -:1094A000580CCA50301C0A981ADC0A994A1A0A9BAE -:1094B000F01F00212FFD580CC9A030390A981AD985 -:1094C00049CA0A990A9B31CCF01F001B2FFD580C8A -:1094D000C8E0F01F001A581CC8A1F01F0019581C42 -:1094E000FE91FF860A980C9730490C9A495B0A9CBA -:1094F000F01F0015FE90FF7C189A308B493CF01F3E -:109500000014581CFE91FF74ED4C0204EF45020C50 -:10951000E3CD80E8000077AC800091D000000258D5 -:1095200080009200800200AC8002067C8001FFB4C3 -:109530008001984C80016E788001FD8C8001A00034 -:109540008001955080016AF48003B8048001762878 -:10955000EBCD40E078185B98C031E3CFC0E078569F -:109560005866CFC1783B0C9A4985EAC7FE040E9C29 -:10957000F01F0017303A497B0E9CF01F0017C131D5 -:10958000F01F00163026EB460204F01F00150C9C5D -:10959000F01F00146A195809C14048C8700C5D19C1 -:1095A000E3CF80E037A83C49EB6801FC30E80C9B36 -:1095B0000E9CEB6901FDEB6801FEF01F000BCE1B5A -:1095C000129CE3CD80E00000000077AC800091DCCD -:1095D0008003B80C8000917C8001FD8080020290A5 -:1095E0008002023480017984EBCD40FC7875580B01 -:1095F000F9B80100F7F81A001693EB3900C83FF8E4 -:10960000F0091800C250EB0900D03008F009190029 -:10961000C4D0307430073022EE061502EAF800D8C4 -:109620000C082FF711BC089BF01F0027E08A0009E7 -:10963000EAF800D80C0811B45803E7F21A00EB1846 -:1096400000D00E38FE99FFEA089CE3CD80FCEB3891 -:1096500000A4F2081800C250EB0900B03008F0096D -:109660001900C240307430073012EE061502EAF8D5 -:1096700000B80C082FF711BC089BF01F0013E08AFC -:109680000009EAF800B80C0811B45803E7F21A0010 -:10969000EB1800B00E38FE99FFEA089CE3CD80FC81 -:1096A000787992D8EDB80004C040307CE3CD80FCDE -:1096B000307B305CF01F0004FE9AFFF9305CE3CD94 -:1096C00080FC000080017E60D431201D4D876E58E3 -:1096D0005808C0E030060C996E48F009032CF01FC2 -:1096E00000552FF66E580C990C38FE9BFFF730068C -:1096F0001A9B8F560C9CF01F00501A94400C580C6B -:10970000C0312FFDD832A36CF01F004C1890CFA0B1 -:10971000400A0C9BA36AF01F004A40085808E08AE0 -:1097200000260C950096C0782FF52FC640080A3801 -:10973000E08A001D350CF01F00418D0CCF614009FF -:109740005809E08A000F009530062FF66A0C580C75 -:10975000C040F01F003840092FC50C39FE99FFF7B3 -:10976000009CF01F00342FFDD8321A9B009CF01F84 -:1097700000324B4972084009F0090D488F585808CB -:10978000CE00300408930891A363E003000264084C -:109790006E467135344CF01F0029F9410040060631 -:1097A0008D0C6A796E48F2CBFFF2F0030306F33AB0 -:1097B000000D0C9CF01F00246A78F139000D306A0E -:1097C000ED690020ECCCFFDF640B2E2BF01F001E98 -:1097D000029B0A9CF01F001DED6C00386A498DC980 -:1097E0006A585808F9B805008DD86A79F338005ED0 -:1097F000ED6800276A7992C88DA80BF9ED59002C05 -:1098000030290BEAF20A1800E2081710F9B8000133 -:109810008DF830286E49F20309062FF4F00A18007B -:1098200008936E580838FE9BFFB1C8AB000077ACB8 -:10983000800091E88002105880009200800091D052 -:1098400000000258800091DC800195E8EBCD40C01B -:10985000201D1696582BC680E0880013586BC590C3 -:10986000587BC2D0583BC4804C076E295809C05061 -:109870004BE80C9C703B5D192FFDE3CD80C0580B6D -:10988000C0F14BA7EEF902085819C6C0EEF8020C59 -:109890003019A1D8EF690210EF48020CCE7B581B9B -:1098A000CE414B273008EEF9020C4B1AA3A9EF6802 -:1098B0000210A1D9B488EF49020CCD8B4ACA3008F6 -:1098C0001589F0091800C4C14A87EEF8020CEDB8FA -:1098D0000001CD31EF380210F2081800CCE1F01F82 -:1098E0000025F01F0025EEF8020C3016E018FFF9F5 -:1098F000EF48020CCBBBF01F002049C7EEF9020C69 -:10990000EDB90004CBA11298A5C8EF48020CCAEB30 -:1099100049673019EEF8020CEF690210A1D8300641 -:10992000EF48020CCA3B4917EEF8020CA3C81A9C78 -:10993000EF48020CF01F001140085828C050F01FDB -:10994000000DF01F000D300A4898B08AEF39021060 -:10995000F4091800C9204858F16A0210C87BB4887D -:10996000C8CB4838B089C89B000077AC000079C4E8 -:1099700080021298800196C8800177A4D401201D2E -:1099800048F9F2F802045828C0302FFDD80AF339FC -:1099900002103008F0091800C0711A9CF01F00096D -:1099A00040085828CF31F01F0008CF00F8CAFFE266 -:1099B000300B169CF01F00052FFDD802000077AC7D -:1099C000800177A4800210FC8001914CEBCD408097 -:1099D000201D4967EEF802045828C0503FFC2FFDB7 -:1099E000E3CD8080F01F0012C051302C2FFDE3CD5D -:1099F0008080EEF9020CEDB90002CF10EDB9000144 -:109A0000C031309CCEDB1A9CF01F000A4008580879 -:109A1000CED0F01F0009581CCE21EEF8020CA3A8EE -:109A2000EF48020CCDDB0000000077AC800210FC98 -:109A3000800211088001F370EBCD40C020AD189872 -:109A40001697580BC07076DC581CC0402F6DE3CDC4 -:109A500080C0109BF13A0020FAC6FFFE0C9CF01F5C -:109A6000001B0C9B209D322A1A9CF01F0019F01F2E -:109A700000192F7D580CCEB0793CFACBFFDCF01FDB -:109A8000001640985818C150C0923058F808180075 -:109A9000F9BC0003F9BC0102CDAB5828C030301C22 -:109AA000CD6B5807C0D06EC85808C0A0305CCCFB46 -:109AB0005807C0806EC85808C050304CCC8B307CE2 -:109AC000CC6B306CCC4B00008002113C8002E7363E -:109AD0008001F2BC800195E8D43120EDFEF3029CB8 -:109AE000FAC1FFA4E6F8020C18971694E2180006D3 -:109AF000C040309C2F2DD832F01F00A1C040308CC8 -:109B00002F2DD832E74C02085807C130BA8CF5D453 -:109B1000C008FAC6FFFEBA9A0E9B0C9CF01F009973 -:109B20000C9C1B9BF01F0098581CC0802F2DDC3A0A -:109B3000BA97BA87FAC6FFFECF4B029CF01F00937C -:109B40001892581CCF41029A089B0E9CF01F00905F -:109B50001890C580E6C7FFE8E6C6FE08EF3A002089 -:109B6000E1380020F4081800E08000A02C470C37F2 -:109B7000CF6130070E950E9B009CF01F0086E136EA -:109B800000381897CD40585CE08000C2E08B00B9E7 -:109B9000583CE08000B4584CC020300CF01F007ED0 -:109BA0003048F0061800E08000A83054E80618009D -:109BB000E08000983028F0061800E080009A300C11 -:109BC000F01F0076E8061800E080008F300CF01FD0 -:109BD00000745837E08B007960F85818C710301CB3 -:109BE000F01F0070300B4F0CF01F0070CA00F01F08 -:109BF0000070581CC9C1E6F8020CA1B8E748020C75 -:109C0000C7ABFAC5FFCE306A029B0A9CF01F005D0D -:109C1000FAC6FFDE0C9CF01F00673FF81AD00C9BC1 -:109C20001AD2310A1AD8204D1A9CF01F00630A9BE1 -:109C3000202D306A1A9CF01F00600499209DE6CC0C -:109C4000FDECFB380069FAEA0048FAE20050FB68D4 -:109C50000021FAEB0000FB380068FAEA0058FAE34A -:109C60000008FAE20060FAEB0010FAE30018FB6863 -:109C70000020303A0098129B4C03F01F00502EED4C -:109C80001895581CFE91FF54009BE6FC0214F01F2F -:109C9000004C5BBCC620580CC3E1189BE6FC0214C8 -:109CA000F01F00483FFCC27B0E9C009BF01F00464B -:109CB000FE91FF5E6EB55805EA071700C5DB302C34 -:109CC000F01F0038C90B5805FE90FF320A9AE13B9D -:109CD0000020009CF01F003D3018E7480208C7DB59 -:109CE000301CF01F002E301CF01F002DC73B302C05 -:109CF000F01F002AC6CB303CCFCB301CC50B586CB4 -:109D0000C080587CFE91FF4B308CC49B307CC47B60 -:109D1000305CC45B344CF01F002E089A18960E9BE2 -:109D2000F01F0018029B306AED640020ECCCFFDFCE -:109D3000F01F001400991AD60A984A6A009B31CC89 -:109D4000F01F00252FFD580CC0E0E6F8020C0A9C1D -:109D5000A1B8E748020CCCFA009BE6FC0214F01F05 -:109D60000019CC8A189BE6FC0214F01F00160C9C0C -:109D7000F01F001A3FFCCBFA000077AC800210FC09 -:109D8000800091DC800178BC800179788001914C61 -:109D900080019A3880015F60800163488001639C84 -:109DA00080017A1080018F208001FD408001F3A0A6 -:109DB000800177C08002E73680020BFC80020A70C7 -:109DC00080020B408000917C800214708000920021 -:109DD00080019E0080016E78800091E8D401202DE2 -:109DE000FACAFFF415D8BAD87409500915C8300B4F -:109DF000BAC8169CF01F00022FEDD80280019AD835 -:109E0000EBCD40E049F51697EAFC0214300BF01F49 -:109E1000001EF01F001EEEC6FFDFEF3B00200C9A75 -:109E20000E9CF01F001BC150EAF8020CA1D8202D97 -:109E30000C9BEB48020C306A1A9CEF360020F01F96 -:109E400000150C9B0E9CF01F00142FED581CC060D9 -:109E5000EAF8020CEDB80001C0600E9CF01F000F84 -:109E6000E3CD80E0301B300CF01F000D302B300CA8 -:109E7000F01F000B0E9CF01F0009E3CD80E00000F6 -:109E8000000077AC80020B40800196C88001914CA5 -:109E90008002E73680019AD8800091E88001984CD2 -:109EA000EBCD40E0202D18951697580CC0513FFC83 -:109EB0002FEDE3CD80E0580BCFB0E04B0020FE9BB0 -:109EC000FFF8FAC6FFFE306AE06B00FF0C9CF01F43 -:109ED0000008306A202D0C9B1A9CF01F00060E9B78 -:109EE0000A9CF01F00052FEDCE4B0000800091D0A2 -:109EF0008002E73680019AD8EBCD408048B7EEF873 -:109F000002045828C030E3CFC080F01F0009581C5D -:109F1000F9BC0109EFF80083F9B90010F1D9E03874 -:109F2000EFF80A83E3CD8080000077AC80020A84DA -:109F3000D40148B9F338000A104CF36C000A7218C7 -:109F40005808C0B05828C0803028726C9318301B55 -:109F500072595D19D80AD80ADA0A0000000079C8D7 -:109F60004828916B915C5EFC000079C8EBCD40C045 -:109F7000203D5CBBBA89502B109714965CC85C8856 -:109F80005807C0513FFC2FDDE3CD80C05C784959B4 -:109F90005018B28C3048FAC9FFF8300A306B492C9F -:109FA000F01F0012581CCEF11B89491A1898B48969 -:109FB000306B1A99300A48FCF01F000C581CCE3147 -:109FC00048D8300AB007306B304848CCFA0800094E -:109FD000F01F0006581CCD7148989146CD5B0000DB -:109FE00000007A288003B8108001776C0000025CC2 -:109FF0008003B8180000025E8003B820000079C812 -:10A00000EBCD40C030074A161AD78D078D17ED6784 -:10A010000008ED670009ED67000A8D378D470E983F -:10A020000E9949BA0E9B302CF01F001A2FFD580CC8 -:10A03000C0413FFCE3CD80C01AD70E980E99496A03 -:10A040000E9B304CF01F00132FFD580CCF301AD749 -:10A050000E980E99491A0E9B32ECF01F000E2FFD40 -:10A06000580CCE8031483019E06A138830AB0E9C12 -:10A07000F01F000B581CCDE10E9BECCCFFF4F01F41 -:10A080000009581CCD71CD7B000079C88001A0F07B -:10A0900080016E788001A1A08001A0A480019F6C46 -:10A0A000800144F8D401F01F000E48EA74085838C3 -:10A0B000C12030289508F539000A3008F009180049 -:10A0C000C020D8023018300B9518487C487AF01F11 -:10A0D0000008D80230089508D80200008001DA365E -:10A0E000000079C88001DA5880018E348001EF20A9 -:10A0F000EBCD408048973018EF6800086E4958094A -:10A10000C0A0308CF01F00066E4C3009485A6E3BE0 -:10A11000F01F0005E3CD8080000079C880019F30EA -:10A120008001A1CC80014558D4014989F80C11FF68 -:10A13000F338000A106CF36C000AC1E1F33800092F -:10A14000F8081800C19072185808C161F338000867 -:10A15000F8081800C06072085808C0F05818C0C04D -:10A160003018300B931848AA48ACF01F000B300B86 -:10A17000331CF01F000AD802301B485A930B488C3E -:10A18000F01F0005D8020000000079C880018E345D -:10A190008001DA588001EF2080016D6C8001DA8443 -:10A1A000EBCD404048766C3CF01F0007308CF01F30 -:10A1B000000730083009ED6800088D09E3CD8040C4 -:10A1C000000079C8800145308001A128D401308C7D -:10A1D000F01F0002D80A00008001A128EBCD4080CA -:10A1E00048E76E185828C030E3CD80806E58300B99 -:10A1F0006E6C5D18300B8F1B4899F2FA0324F2F84D -:10A2000003201438C040169CF01F0006300B332C7E -:10A21000F01F0005E3CD8080000079C8000084CCE9 -:10A2200080018CE480016D6CEBCD40C018971696D0 -:10A23000F01F0009C0C06E0C581CC0700C9B0E9C17 -:10A24000F01F0006CF91302CE3CD80C03FDCE3CD82 -:10A2500080C000008001462C80014636EBCD404096 -:10A26000301818969908F01F00040C9CF01F00038A -:10A27000E3CD80408001463280014634D401580C41 -:10A28000C030F01F0002D80280014630D4013008EF -:10A290009908F01F0002D8028001462ED401189EB2 -:10A2A000580AC0C196199688F9D9C010103CC165EA -:10A2B000F2C8FFFF973AB618D802581AC06096192C -:10A2C000F2C8FFFFB618D802969996881039C0F4E4 -:10A2D0007648F0090709B889CF3B1D897648F00C0C -:10A2E0000B099619F2C8FFFFB618D8023008973844 -:10A2F000B8889619F2C8FFFFB618D802EBCD408097 -:10A300001897580AC1D1961C9689FDDCC010FCC86C -:10A31000FFFF1238F7FA4A03F7F85004F1DEE508B8 -:10A32000EFF95801F1F95E00EFFA5800F1FA5E0119 -:10A33000F7FC5201F8C8FFFEB618E3CD8080581A2A -:10A34000C070961CF8C8FFFEB618E3CD8080969AC0 -:10A350009689F4C8FFFF1238C09476481408119902 -:10A36000B889118AB89A961CCEEB30089738B8088D -:10A37000961CF8C8FFFEB618E3CD8080EBCD408078 -:10A38000189E169C580AC0F1961B9889EFDBC010E6 -:10A39000EEC8FFFD1238C205F6C8FFFC993AB8189E -:10A3A000E3CD8080581AC070981BF6C8FFFCB8181F -:10A3B000E3CD8080969B9889F6C8FFFD1238C1C412 -:10A3C000784A160A15B8BC8815A9BC991598BCA876 -:10A3D0001589BCB9CEAB1DB8784A0E0AB4881DA940 -:10A3E000B4991D98B4A81D89B4B9981BF6C8FFFC90 -:10A3F000B818E3CD8080300899389D08981BF6C8BE -:10A40000FFFCB818E3CD8080EBCD4068189316951B -:10A410001496F01F000C0C9A0A9BE6CCFFFFF01F6D -:10A4200000090C9A0A9BE6CCFFFEF01F00060C9A6E -:10A430000A9BE6CCFFFDF01F0003E3CD806800001F -:10A440008001A29CD4211697189596141496F01F9B -:10A4500000080C9A0E9BEACCFFFEF01F00060BC80A -:10A460005808F1D4E108EFF81C01D8228001A2FCC1 -:10A470008001A408EBCD4068189316951496F01F40 -:10A4800000060C9A0A9BE6CCFFFCF01F0003E3CD0C -:10A49000806800008001A37CEBCD4068189316957E -:10A4A0001496F01F00090C9A0A9BE6CCFFFCF01FE3 -:10A4B00000070C9A0A9BE6CCFFFAF01F0004E3CDDC -:10A4C000806800008001A37C8001A2FCEBCD406885 -:10A4D000189316951496F01F000F0C9A0A9BE6CC61 -:10A4E000FFFCF01F000D0C9A0A9BE6CCFFFBF01F4F -:10A4F000000A0C9A0A9BE6CCFFFAF01F00070C9AA0 -:10A500000A9BE6CCFFF9F01F0004E3CD8068000051 -:10A510008001A37C8001A29CEBCD40681893169526 -:10A520001496F01F000C0C9A0A9BE6CCFFFCF01F5F -:10A53000000A0C9A0A9BE6CCFFFAF01F00080C9A5E -:10A540000A9BE6CCFFF9F01F0005E3CD8068000010 -:10A550008001A37C8001A2FC8001A29CEBCD40681D -:10A56000189316951496F01F00150C9A0A9BE6CCCA -:10A57000FFFCF01F00120C9A0A9BE6CCFFF8F01FBC -:10A5800000100C9A0A9BE6CCFFF6F01F000D0C9A07 -:10A590000A9BE6CCFFF4F01F00090C9A0A9BE6CC5C -:10A5A000FFF0F01F00070C9A0A9BE6CCFFEEF01FAD -:10A5B0000004E3CD806800008001A37C8001A2FC40 -:10A5C000EBCD4068189316951496F01F00090C9A6D -:10A5D0000A9BE6CCFFFCF01F00060C9A0A9BE6CC17 -:10A5E000FFF8F01F0003E3CD806800008001A37C2A -:10A5F000EBCD4068189316951496F01F00060C9A40 -:10A600000A9BE6CCFFFCF01F0003E3CD806800004E -:10A610008001A37CEBCD4068189316951496F01F2B -:10A62000000C0C9A0A9BE6CCFFFCF01F00090C9A68 -:10A630000A9BE6CCFFF8F01F00060C9A0A9BE6CCBA -:10A64000FFF4F01F0003E3CD806800008001A37CCD -:10A65000EBCD4068189316951496F01F00330C9AB2 -:10A660000A9BE6CCFFFCF01F00300C9A0A9BE6CC5C -:10A67000FFF8F01F002D0C9A0A9BE6CCFFF4F01FA8 -:10A68000002B0C9A0A9BE6CCFFF2F01F00280C9AD4 -:10A690000A9BE6CCFFF0F01F00250C9A0A9BE6CC43 -:10A6A000FFEEF01F00220C9A0A9BE6CCFFECF01F95 -:10A6B000001F0C9A0A9BE6CCFFEAF01F001C0C9AC4 -:10A6C0000A9BE6CCFFE8F01F00190C9A0A9BE6CC27 -:10A6D000FFE6F01F00160C9A0A9BE6CCFFE4F01F81 -:10A6E00000130C9A0A9BE6CCFFE2F01F00110C9AB3 -:10A6F0000A9BE6CCFFE1F01F000E0C9A0A9BE6CC09 -:10A70000FFE0F01F00090C9A0A9BE6CCFFDCF01F6B -:10A7100000060C9A0A9BE6CCFFD8F01F0005E3CD9B -:10A72000806800008001A37C8001A2FC8001A29CC3 -:10A73000EBCD4068189316951496F01F00120C9AF2 -:10A740000A9BE6CCFFFCF01F00100C9A0A9BE6CC9B -:10A75000FFFBF01F000D0C9A0A9BE6CCFFFAF01FDE -:10A76000000A0C9A0A9BE6CCFFF9F01F00070C9A2E -:10A770000A9BE6CCFFF8F01F0004E3CD80680000E0 -:10A780008001A37C8001A29CEBCD406818931695B4 -:10A790001496F01F00060C9A0A9BE6CCFFFCF01FF3 -:10A7A0000003E3CD806800008001A37CEBCD40680E -:10A7B000189316951496F01F00060C9A0A9BE6CC87 -:10A7C000FFFCF01F0003E3CD806800008001A37C44 -:10A7D000EBCD4068189316951496F01F00060C9A5E -:10A7E0000A9BE6CCFFFCF01F0003E3CD806800006D -:10A7F0008001A37CEBCD4068189316951496F01F4A -:10A8000000060C9A0A9BE6CCFFFCF01F0003E3CD88 -:10A81000806800008001A37CEBCD406818931695FA -:10A820001496F01F00060C9A0A9BE6CCFFFCF01F62 -:10A830000003E3CD806800008001A37CEBCD40687D -:10A84000189316951496F01F00060C9A0A9BE6CCF6 -:10A85000FFFCF01F0003E3CD806800008001A37CB3 -:10A86000EBCD4068189316951496F01F00060C9ACD -:10A870000A9BE6CCFFFCF01F0003E3CD80680000DC -:10A880008001A37CEBCD4068189316951496F01FB9 -:10A8900000060C9A0A9BE6CCFFFCF01F0003E3CDF8 -:10A8A000806800008001A37CEBCD4068189316956A -:10A8B0001496F01F00060C9A0A9BE6CCFFFCF01FD2 -:10A8C0000004E3CD806800008001A37C8001A650D5 -:10A8D000EBCD4068189316951496F01F00060C9A5D -:10A8E0000A9BE6CCFFFCF01F0003E3CD806800006C -:10A8F0008001A37CEBCD4068189316951496F01F49 -:10A9000000090C9A0A9BE6CCFFFCF01F00060C9A8B -:10A910000A9BE6CCFFF8F01F0003E3CD806800003F -:10A920008001A37CEBCD4068189316951496F01F18 -:10A9300000060C9A0A9BE6CCFFFCF01F0003E3CD57 -:10A94000806800008001A37CEBCD406818931695C9 -:10A950001496F01F00090C9A0A9BE6CCFFFCF01F2E -:10A9600000060C9A0A9BE6CCFFF8F01F0003E3CD2B -:10A97000806800008001A37CEBCD40681893169599 -:10A980001496F01F00090C9A0A9BE6CCFFFCF01FFE -:10A9900000060C9A0A9BE6CCFFF8F01F0003E3CDFB -:10A9A000806800008001A37CEBCD40681893169569 -:10A9B0001496F01F00060C9A0A9BE6CCFFFCF01FD1 -:10A9C0000003E3CD806800008001A37CEBCD4068EC -:10A9D000189316951496F01F00090C9A0A9BE6CC62 -:10A9E000FFFCF01F00060C9A0A9BE6CCFFF8F01F54 -:10A9F0000003E3CD806800008001A37CEBCD4068BC -:10AA0000189316951496F01F00060C9A0A9BE6CC34 -:10AA1000FFFCF01F0003E3CD806800008001A37CF1 -:10AA2000EBCD4068189316951496F01F00090C9A08 -:10AA30000A9BE6CCFFFCF01F00060C9A0A9BE6CCB2 -:10AA4000FFF8F01F0003E3CD806800008001A37CC5 -:10AA5000EBCD4068189316951496F01F00090C9AD8 -:10AA60000A9BE6CCFFFCF01F00060C9A0A9BE6CC82 -:10AA7000FFF8F01F0003E3CD806800008001A37C95 -:10AA8000EBCD4068189316951496F01F00060C9AAB -:10AA90000A9BE6CCFFFCF01F0003E3CD80680000BA -:10AAA0008001A37CEBCD4068189316951496F01F97 -:10AAB00000060C9A0A9BE6CCFFFCF01F0003E3CDD6 -:10AAC000806800008001A37CEBCD40681893169548 -:10AAD0001496F01F00060C9A0A9BE6CCFFFCF01FB0 -:10AAE0000003E3CD806800008001A37CEBCD4068CB -:10AAF000189316951496F01F00060C9A0A9BE6CC44 -:10AB0000FFFCF01F0004E3CD806800008001A37CFF -:10AB10008001A29CEBCD4068189316951496F01F07 -:10AB200000060C9A0A9BE6CCFFFCF01F0004E3CD64 -:10AB3000806800008001A37C8001D434EBCD4068A4 -:10AB4000189316951496F01F00330C9A0A9BE6CCC6 -:10AB5000FFDEF01F00310C9A0A9BE6CCFFD4F01FF9 -:10AB6000002F0C9A0A9BE6CCFFC2F01F002D0C9A16 -:10AB70000A9BE6CCFFBFF01F002B0C9A0A9BE6CC89 -:10AB8000FFBCF01F00290C9A0A9BE6CCFFB0F01F17 -:10AB900000270C9A0A9BE6CCFFACF01F00250C9A0C -:10ABA0000A9BE6CCFFA4F01F00230C9A0A9BE6CC7C -:10ABB000FF9CF01F00210C9A0A9BE6CCFF98F01F27 -:10ABC000001F0C9A0A9BE6CCFF8CF01F001D0C9A0C -:10ABD0000A9BE6CCFF72F01F001B0C9A0A9BE6CC86 -:10ABE000FF68F01F00190C9A0A9BE6CCFF44F01F87 -:10ABF00000170C9A0A9BE6CCFF50F01F00150C9A28 -:10AC00000A9BE6CCFF30F01F0013E3CD8068000004 -:10AC10008001D3448001D2DC8001D2748001CAF863 -:10AC20008001C9D88001D8608001CA688001CA9CAF -:10AC30008001CA0C8001C9A48001D4348001CDB444 -:10AC40008001CE848001D5588001D6B08001D4E443 -:10AC50008001CFFCEBCD4068189316951496F01F39 -:10AC6000000F0C9A0A9BE6CCFFFCF01F000D0C9A1B -:10AC70000A9BE6CCFFFAF01F000B0C9A0A9BE6CC6D -:10AC8000FFF9F01F00080C9A0A9BE6CCFFF8F01FB2 -:10AC90000006E3CD806800008001A37C8001A2FC57 -:10ACA0008001A29C8001AB3CEBCD406C14951296C8 -:10ACB00018921693E06A00DC129B0A9CF01F001A9F -:10ACC000ECC9FF98EACAFF98069B049CF01F001786 -:10ACD000ECC9FFBCEACAFFBC069B049CF01F001431 -:10ACE000ECC9FF68EACAFF68069B049CF01F0011CC -:10ACF000ECC9FF50EACAFF50069B049CF01F000EEF -:10AD0000ECC9FF44EACAFF44069B049CF01F000BF9 -:10AD1000ECC9FF30EACAFF30069B049CF01F000814 -:10AD2000E3CD806C8002E7368001D1588001D24C9F -:10AD30008001D1E88001D1C08001D21C8001CF9C6C -:10AD4000EBCD40EC1296F2E80000F4E90000ECE8EC -:10AD50000008F4E90008ECE20010F4E30010ECE86D -:10AD6000001814971695F4E90018E06B00E85D15DB -:10AD70008F7CC0D030CA6C7BF01F00066E7A6C7975 -:10AD8000149C0A9B2F492F4AF01F0003E3CD80EC4F -:10AD9000800091DC8001ACA8EBCD40C014971696E2 -:10ADA00074385808C160949E948AF60E00081438CE -:10ADB000F5DEE916F9B80900EFF89A03580CC090CF -:10ADC0005809C0C1189B0C9A6E4C1C0CF01F000A4D -:10ADD0008E180C08AE18E3CD80C05819CFA16E4B69 -:10ADE0000C9A1C0BF01F00048E180C08AE18E3CD53 -:10ADF00080C00000800091DCEBCD40E016971496F7 -:10AE00001895581AC0B0F01F000C0C99189B0E9A98 -:10AE10000A9CF01F000AE3CD80E09698968614996C -:10AE20001016169A0C9BF01F00053008EA060B0856 -:10AE3000E3CD80E0800091B88001AD98EBCD406813 -:10AE4000189316951496F01F00060C9A0A9BE6CCF0 -:10AE5000FFFCF01F0004E3CD806800008001A37CAC -:10AE60008001ADF8EBCD4068189316951496F01F4D -:10AE700000060C9A0A9BE6CCFFFCF01F0004E3CD11 -:10AE8000806800008001A37C8001ADF8EBCD4068B4 -:10AE9000189316951496F01F000F0C9A0A9BE6CC97 -:10AEA000FFFCF01F000C0C9A0A9BE6CCFFF8F01F89 -:10AEB00000090C9A0A9BE6CCFFF4F01F00060C99DF -:10AEC0000A9AE6CCFFF0320BF01F0003E3CD806856 -:10AED0008001A37C8001AD98EBCD40681893169556 -:10AEE0001496F01F000C0C9A0A9BE6CCFFFCF01F96 -:10AEF00000090C9A0A9BE6CCFFF8F01F00060C999B -:10AF00000A9AE6CCFFF4320BF01F0003E3CD806811 -:10AF10008001A37C8001AD98EBCD40681893169515 -:10AF20001496F01F000C0C9A0A9BE6CCFFFCF01F55 -:10AF300000090C9A0A9BE6CCFFF8F01F00070C9959 -:10AF40000A9AE6CCFFF7303BF01F0004E3CD80689F -:10AF50008001A37C8001A29C8001AD98EBCD40686C -:10AF6000189316951496F01F00180C9A0A9BE6CCBD -:10AF7000FFFCF01F00150C9A0A9BE6CCFFF8F01FAF -:10AF800000120C9A0A9BE6CCFFF4F01F000F0C9AFB -:10AF90000A9BE6CCFFF0F01F000C0C9A0A9BE6CC53 -:10AFA000FFECF01F000A0C9A0A9BE6CCFFEAF01FA8 -:10AFB00000080C990A9AE6CCFFE9303BF01F000527 -:10AFC000E3CD80688001A37C8001A2FC8001A29C6B -:10AFD0008001AD98EBCD4068189316951496F01F3C -:10AFE00000280C9A0A9BE6CCFFFCF01F00250C9A67 -:10AFF0000A9BE6CCFFF8F01F00220C9A0A9BE6CCD5 -:10B00000FFF4F01F00200C9A0A9BE6CCFFF2F01F21 -:10B01000001E0C9A0A9BE6CCFFF1F01F001B0C9A55 -:10B020000A9BE6CCFFF0F01F00180C9A0A9BE6CCB6 -:10B03000FFEFF01F00150C9A0A9BE6CCFFEEF01F05 -:10B0400000120C990A9AE6CCFFED306BF01F000F4E -:10B050000C9A0A9BE6CCFFE7F01F000B0C9A0A9BA8 -:10B06000E6CCFFE6F01F00080C990A9AE6CCFFE553 -:10B07000320BF01F0006E3CD806800008001A37C46 -:10B080008001A2FC8001A29C8001AD98EBCD4068BC -:10B09000189316951496F01F00150C9A0A9BE6CC8F -:10B0A000FFFCF01F00120C9A0A9BE6CCFFF8F01F81 -:10B0B000000F0C9A0A9BE6CCFFF4F01F000C0C9AD0 -:10B0C0000A9BE6CCFFF0F01F000A0C9A0A9BE6CC24 -:10B0D000FFEEF01F00080C990A9AE6CCFFED303B1A -:10B0E000F01F0005E3CD80688001A37C8001A2FCF5 -:10B0F0008001A29C8001AD98EBCD40681893169515 -:10B100001496F01F00120C9A0A9BE6CCFFFCF01F6D -:10B1100000100C9A0A9BE6CCFFFBF01F000D0C9967 -:10B120000A9AE6CCFFFA302BF01F000A0C9A0A9B11 -:10B13000E6CCFFF8F01F00050C9A0A9BE6CCFFF462 -:10B14000F01F0002E3CD80688001A37C8001A29CF7 -:10B150008001AD98EBCD4068189316951496F01FBA -:10B1600000120C9A0A9BE6CCFFFCF01F00100C9A10 -:10B170000A9BE6CCFFFBF01F000D0C990A9AE6CC67 -:10B18000FFFA302BF01F000A0C9A0A9BE6CCFFF85E -:10B19000F01F00050C9A0A9BE6CCFFF4F01F00029A -:10B1A000E3CD80688001A37C8001A29C8001AD98E2 -:10B1B000EBCD4068189316951496F01F000C0C9A6E -:10B1C0000A9BE6CCFFFCF01F000A0C9A0A9BE6CC17 -:10B1D000FFFBF01F00070C990A9AE6CCFFFA302B10 -:10B1E000F01F0004E3CD80688001A37C8001A29C55 -:10B1F0008001AD98EBCD4068189316951496F01F1A -:10B2000000090C9A0A9BE6CCFFFCF01F00070C9982 -:10B210000A9AE6CCFFFB303BF01F0004E3CD8068C8 -:10B220008001A37C8001A29C8001AD98EBCD406899 -:10B23000189316951496F01F00090C9A0A9BE6CCF9 -:10B24000FFFCF01F00070C990A9AE6CCFFFB303B8D -:10B25000F01F0004E3CD80688001A37C8001A29CE4 -:10B260008001AD98EBCD4068189316951496F01FA9 -:10B2700000090C9A0A9BE6CCFFFCF01F00070C9912 -:10B280000A9AE6CCFFFB303BF01F0004E3CD806858 -:10B290008001A37C8001A29C8001AD98EBCD406829 -:10B2A000189316951496F01F000C0C9A0A9BE6CC86 -:10B2B000FFFCF01F00090C9A0A9BE6CCFFF8F01F78 -:10B2C00000070C990A9AE6CCFFF7303BF01F000408 -:10B2D000E3CD80688001A37C8001A29C8001AD98B1 -:10B2E000EBCD4068189316951496F01F000C0C9A3D -:10B2F0000A9BE6CCFFFCF01F00090C9A0A9BE6CCE7 -:10B30000FFF8F01F00070C990A9AE6CCFFF7303BD4 -:10B31000F01F0004E3CD80688001A37C8001A29C23 -:10B320008001AD98EBCD4068189316951496F01FE8 -:10B33000000C0C9A0A9BE6CCFFFCF01F00090C9A4B -:10B340000A9BE6CCFFF8F01F00070C990A9AE6CC9E -:10B35000FFF7303BF01F0004E3CD80688001A37C41 -:10B360008001A29C8001AD98EBCD406818931695A2 -:10B370001496F01F000C0C9A0A9BE6CCFFFCF01F01 -:10B3800000090C9A0A9BE6CCFFF8F01F00070C9905 -:10B390000A9AE6CCFFF7303BF01F0004E3CD80684B -:10B3A0008001A37C8001A29C8001AD98EBCD406818 -:10B3B000189316951496F01F00090C9A0A9BE6CC78 -:10B3C000FFFCF01F00070C990A9AE6CCFFFB303B0C -:10B3D000F01F0004E3CD80688001A37C8001A29C63 -:10B3E0008001AD98EBCD4068169514961893F01F28 -:10B3F00000220C990A9AE6CCFFFC308BF01F001F4C -:10B400000C9A0A9BE6CCFFF4F01F001B0C9A0A9BD7 -:10B41000E6CCFFF0F01F00180C9A0A9BE6CCFFEC7C -:10B42000F01F00150C9A0A9BE6CCFFE8F01F0012F3 -:10B430000C9A0A9BE6CCFFE4F01F000F0C9A0A9BC3 -:10B44000E6CCFFE0F01F000E0C9A0A9BE6CCFFDE74 -:10B45000F01F000B0C9A0A9BE6CCFFDCF01F0008E3 -:10B460000C990A9AE6CCFFDA302BF01F0004E3CDEA -:10B47000806800008001A37C8001AD988001A2FC5F -:10B48000EBCD4068189316951496F01F00090C9A9E -:10B490000A9BE6CCFFFCF01F00070C990A9AE6CC49 -:10B4A000FFFB303BF01F0004E3CD80688001A37CEC -:10B4B0008001A29C8001AD98EBCD40681695149652 -:10B4C0001893F01F00060C990A9AE6CCFFFC308B0B -:10B4D000F01F0003E3CD80688001A37C8001AD985C -:10B4E000EBCD4068189316951496F01F00090C9A3E -:10B4F0000A9BE6CCFFFCF01F00070C990A9AE6CCE9 -:10B50000FFFB303BF01F0004E3CD80688001A37C8B -:10B510008001A29C8001AD98EBCD406818931695F0 -:10B520001496F01F00100C9A0A9BE6CCFFFCF01F4B -:10B53000000E0C990A9AE6CCFFFB306BF01F000B53 -:10B540000A9AE6CCFFF50C99306BF01F00080C9AB4 -:10B550000A9BE6CCFFEFF01F0004E3CD80680000FB -:10B560008001A37C8001A29C8001AD98EBCD406856 -:10B57000169514961893F01F000C0C990A9AE6CCB5 -:10B58000FFFC306BF01F00090C9A0A9BE6CCFFF61B -:10B59000F01F00070C9A0A9BE6CCFFF5F01F000491 -:10B5A000E3CD80688001A37C8001AD988001A29CDE -:10B5B000EBCD4068169514961893F01F000D0C996A -:10B5C0000A9AE6CCFFFC306BF01F000A0A9AE6CC20 -:10B5D000FFF60C99302BF01F00070C9A0A9BE6CC63 -:10B5E000FFF4F01F0005E3CD806800008001A37C1C -:10B5F0008001AD988001AB3CEBCD40681695149668 -:10B600001893F01F000D0C990A9AE6CCFFFC306BE2 -:10B61000F01F000A0A9AE6CCFFF60C99302BF01FB7 -:10B6200000070C9A0A9BE6CCFFF4F01F0005E3CD5F -:10B63000806800008001A37C8001AD988001AB3C54 -:10B64000EBCD4068169514961893F01F00100C99D6 -:10B650000A9AE6CCFFFC306BF01F000D0C9A0A9B97 -:10B66000E6CCFFF6F01F000B0C9A0A9BE6CCFFF429 -:10B67000F01F00080C990A9AE6CCFFF2302BF01F5D -:10B680000004E3CD806800008001A37C8001AD98B8 -:10B690008001A2FCEBCD4068169514961893F01F1C -:10B6A000000A0C990A9AE6CCFFFC306BF01F0007E9 -:10B6B0000C990A9AE6CCFFF6302BF01F0004E3CD7C -:10B6C000806800008001A37C8001AD98EBCD4068CC -:10B6D000169514961893F01F000A0C990A9AE6CC56 -:10B6E000FFFC306BF01F00070C990A9AE6CCFFF6BE -:10B6F000302BF01F0004E3CD806800008001A37CA4 -:10B700008001AD98EBCD4068189316951496F01F04 -:10B7100000220C9A0A9BE6CCFFFCF01F00200C9A3A -:10B720000A9BE6CCFFFAF01F001D0C9A0A9BE6CCA0 -:10B73000FFF8F01F001A0C990A9AE6CCFFF6306B5E -:10B74000F01F00170C9A0A9BE6CCFFF0F01F0015C3 -:10B750000C9A0A9BE6CCFFEFF01F00120C990A9A94 -:10B76000E6CCFFEE302BF01F000E0C9A0A9BE6CCC5 -:10B77000FFECF01F00090C9A0A9BE6CCFFE8F01FD3 -:10B7800000060C9A0A9BE6CCFFE4F01F0007E3CD0D -:10B79000806800008001A37C8001A2FC8001AD983C -:10B7A0008001A29C8001AB3CEBCD406816951496BD -:10B7B0001893F01F000C0C990A9AE6CCFFFC306B32 -:10B7C000F01F00090C9A0A9BE6CCFFF6F01F000759 -:10B7D0000C9A0A9BE6CCFFF5F01F0004E3CD8068CD -:10B7E0008001A37C8001AD988001A29CEBCD4068D4 -:10B7F000169514961893F01F000C0C990A9AE6CC33 -:10B80000FFFC306BF01F00090C9A0A9BE6CCFFF698 -:10B81000F01F00070C9A0A9BE6CCFFF5F01F00040E -:10B82000E3CD80688001A37C8001AD988001A29C5B -:10B83000EBCD4068189316951496F01F00120C9AE1 -:10B840000A9BE6CCFFFCF01F00100C9A0A9BE6CC8A -:10B85000FFFAF01F000D0C9A0A9BE6CCFFF8F01FD0 -:10B86000000A0A9AE6CCFFF60C99306BF01F00072D -:10B870000C9A0A9BE6CCFFF0F01F0005E3CD806830 -:10B880008001A37C8001A2FC8001AD988001AB3CCB -:10B89000EBCD4068189316951496F01F00100C9A83 -:10B8A0000A9BE6CCFFFCF01F000E0C9A0A9BE6CC2C -:10B8B000FFFAF01F000B0C990A9AE6CCFFF8306BE8 -:10B8C000F01F00080C990A9AE6CCFFF2302BF01F0B -:10B8D0000005E3CD806800008001A37C8001A2FC0C -:10B8E0008001AD98EBCD4068189316951496F01F23 -:10B8F00000090C9A0A9BE6CCFFFFF01F00060C998A -:10B900000A9AE6CCFFFE302BF01F0003E3CD8068DF -:10B910008001A29C8001AD98EBCD406816951496ED -:10B920001893F01F00130C990A9AE6CCFFFF306BB6 -:10B93000F01F00100C9A0A9BE6CCFFF9F01F000CD8 -:10B940000C9A0A9BE6CCFFF8F01F00090A9AE6CC95 -:10B95000FFF70C99306BF01F00070C9A0A9BE6CC9E -:10B96000FFF1F01F0003E3CD806800008001A29C7E -:10B970008001AD98EBCD4068189316951496F01F92 -:10B9800000060C9A0A9BE6CCFFFCF01F0004E3CDF6 -:10B99000806800008001A37C8001B918EBCD40686D -:10B9A0001696149518931499169A306BF01F000888 -:10B9B0000A9A0C9BE6CCFFFAF01F00060A9A0C9B31 -:10B9C000E6CCFFF9F01F0003E3CD80688001AD985D -:10B9D0008001A29CEBCD4068189316951496F01F39 -:10B9E00000060C9A0A9BE6CCFFFCF01F0004E3CD96 -:10B9F000806800008001A37C8001B99CEBCD406889 -:10BA0000189316951496F01F00090C9A0A9BE6CC21 -:10BA1000FFFFF01F00060C990A9AE6CCFFFE306B80 -:10BA2000F01F0003E3CD80688001A29C8001AD98E7 -:10BA3000EBCD4068189316951496F01F00060C9AEB -:10BA40000A9BE6CCFFFCF01F0004E3CD80680000F9 -:10BA50008001A37C8001B9FCD4011499169A308B23 -:10BA6000F01F0002D80200008001AD98EBCD4068C5 -:10BA7000169514961893F01F00090A9AE6CCFFFC5D -:10BA80000C99306BF01F00060C9A0A9BE6CCFFF66F -:10BA9000F01F0004E3CD80688001A37C8001AD9895 -:10BAA0008001A2FCEBCD4068189316951496F01F08 -:10BAB00000090C9A0A9BE6CCFFFCF01F00070C99CA -:10BAC0000A9AE6CCFFFB303BF01F0004E3CD806810 -:10BAD0008001A37C8001A29C8001AD98D4011499BF -:10BAE000169A320BF01F0002D80200008001AD98B8 -:10BAF000EBCD4068189316951496F01F00180C9A19 -:10BB00000A9BE6CCFFE0F01F00160C9A0A9BE6CCDD -:10BB1000FFDEF01F00140C9A0A9BE6CCFFDDF01F3D -:10BB200000110C990A9AE6CCFFDC306BF01F000E76 -:10BB30000C9A0A9BE6CCFFD6F01F000C0C9A0A9BCD -:10BB4000E6CCFFCEF01F00070C9A0A9BE6CCFFCD97 -:10BB5000F01F0004E3CD80688001BADC8001A2FC04 -:10BB60008001A29C8001AD988001BA58EBCD40685D -:10BB7000189316951496F01F00060C9A0A9BE6CCB3 -:10BB8000FFFCF01F0004E3CD806800008001A37C6F -:10BB90008001BAF0D4011499169A303BF01F0002CC -:10BBA000D80200008001AD98EBCD40E018971695C3 -:10BBB0001496F01F000D6E1C580CC0800C990A9A48 -:10BBC0006E0BF01F000AE3CD80E05816C0918A99F1 -:10BBD0006A4812088F186E098A181208AA18E3CD4D -:10BBE00080E000008001A37C8001AD98EBCD40682F -:10BBF000189316951496F01F00060C9A0A9BE6CC33 -:10BC0000FFFCF01F0004E3CD806800008001A37CEE -:10BC10008001BBA8EBCD4068189316951496F01FD1 -:10BC200000100C9A0A9BE6CCFFFCF01F000E0C994A -:10BC30000A9AE6CCFFFB303BF01F000B0A9AE6CCD9 -:10BC4000FFF80C99308BF01F00080C9A0A9BE6CC89 -:10BC5000FFF0F01F0006E3CD806800008001A37CA8 -:10BC60008001A29C8001AD988001BBA8EBCD40680B -:10BC7000169514961893F01F00090A9AE6CCFFFC5B -:10BC80000C99308BF01F00060C9A0A9BE6CCFFF44F -:10BC9000F01F0004E3CD80688001A37C8001AD9893 -:10BCA0008001BBA8EBCD40801697189B580AC0F1C5 -:10BCB0008E1C8E89FDDCC010FCC8FFF91238C285CD -:10BCC000F8C8FFF88F3AAE18E3CD8080581AC070DC -:10BCD0008E1CF8C8FFF8AE18E3CD80808E9A8E894E -:10BCE000F4C8FFF91238C2C46E48140811F9B889B3 -:10BCF00011EAB89A11D9B8A911CAB8BA11B9B8C914 -:10BD000011AAB8DA1199B8E9118AB8FACE2B17F846 -:10BD10006E4A1C0AB48817E9B49917D8B4A817C991 -:10BD2000B4B917B8B4C817A9B4D91798B4E8178923 -:10BD3000B4F98E1CF8C8FFF8AE18E3CD8080300B44 -:10BD4000308A8F3BF01F00028E1CCC4B800091D0BC -:10BD5000EBCD4068189316951496F01F000C0C9AC2 -:10BD60000A9BE6CCFFF8F01F000A0C9A0A9BE6CC6F -:10BD7000FFF6F01F00070C9A0A9BE6CCFFF4F01FB9 -:10BD80000005E3CD806800008001BCA48001A2FC16 -:10BD90008001AB3CEBCD40F8206D169714961499BA -:10BDA0001895169A306BF01F002D0C9A0E9BEACC5A -:10BDB000FFFAF01F002B0C9A0E9BEACCFFF9F01F44 -:10BDC00000280C9A0E9BEACCFFF8F01F00260C9A74 -:10BDD0000E9BEACCFFF0F01F00240C9A0E9BEACCDD -:10BDE000FFECF01F0021318A0E9B1A9CF01F001FF0 -:10BDF000EAC3FFE81A940C9A1A9B069CF01F001ADB -:10BE00005816C1801A9B0C9A6A7CF01F00199A98E8 -:10BE10008E992048F00901098B690C9A069C0E9BAB -:10BE2000F01F00116A698E181208AE182FADE3CD0D -:10BE300080F86A698E182FC81208E06B00E8BA080B -:10BE40006E5CF01F000C8B7CCF20505C1A9B0C9A10 -:10BE5000F01F0007CE3B00008001AD988001A29C3E -:10BE60008001BCA48001A37C800091DC8001BD50D6 -:10BE70008001D3ECEBCD4068189316951496F01F13 -:10BE800000120C9A0A9BE6CCFFFCF01F00100C9AE3 -:10BE90000A9BE6CCFFFAF01F000D0C9A0A9BE6CC39 -:10BEA000FFF8F01F00090C9A0A9BE6CCFFF4F01F84 -:10BEB00000060C9A0A9BE6CCFFF0F01F0005E3CDCC -:10BEC000806800008001A37C8001A2FC8001BD94F9 -:10BED000EBCD40E0189716951496F01F000B0C9AC6 -:10BEE0000A9BEECCFFFCF01F00090FD93008F009C7 -:10BEF0001800C0700C9A0A9BEECCFFF8F01F0004EB -:10BF0000E3CD80E08001A37C8001B8E48001BD9492 -:10BF1000EBCD4060202D301A18951696FACCFFFE16 -:10BF2000F01F00089A181BF92FE8F0090109AC0965 -:10BF30001BCA8B5A1BD88B482FEDE3CD80600000C5 -:10BF40008001A444EBCD40E07808975818971696E6 -:10BF50007859E049003FE0880004E3CF80E0FEF834 -:10BF6000029AF009032F78455815E0800127E04533 -:10BF70000080CF41780C301AF01F00A1E3CF90E091 -:10BF800078485808C391780C301AF01F009EE3CF10 -:10BF900090E07848F0C90005E049008FFE9BFFDF84 -:10BFA000FEF80264F009032F7848E0480081E08041 -:10BFB000010CE08A002BE0480083E0800118E08556 -:10BFC0000110E0480085CCA1780C301AF01F008FDA -:10BFD000E3CF90E0780C301AF01F008DE3CF90E0B3 -:10BFE0007848F0C90001E049009BFE9BFFB8FEF8CD -:10BFF0000222F009032FE0480081CB01780C301AAF -:10C00000F01F0085E3CF90E05848E08000E4E0486E -:10C010000080CA41781A300B780CF01F00806E0C3B -:10C020000C9B301AF01F007EE3CF90E0780C301AA2 -:10C03000F01F007CE3CF90E0780C301AF01F007AFC -:10C04000E3CF90E0780C301AF01F0078E3CF90E057 -:10C05000780C301AF01F0076E3CF90E0780C301A9D -:10C06000F01F0074E3CF90E0780C301AF01F0072DC -:10C07000E3CF90E0780C301AF01F0070E3CF90E02F -:10C08000780C301AF01F006EE3CF90E0780C301A75 -:10C09000F01F006CE3CF90E0780C301AF01F006ABC -:10C0A000E3CF90E0780C301AF01F0068E3CF90E007 -:10C0B000780C301AF01F0066E3CF90E0780C301A4D -:10C0C000F01F0064E3CF90E0780C301AF01F00629C -:10C0D000E3CF90E0780C301AF01F0060E3CF90E0DF -:10C0E000780C301AF01F005EE3CF90E0780C301A25 -:10C0F000F01F005CE3CF90E0780C301AF01F005A7C -:10C10000E3CF90E0780C301AF01F0058E3CF90E0B6 -:10C11000780C301AF01F0056E3CF90E0780C301AFC -:10C12000F01F0054E3CF90E0780C301AF01F00525B -:10C13000E3CF90E0780C301AF01F0050E3CF90E08E -:10C14000780C301AF01F004EE3CF90E0780C301AD4 -:10C15000F01F004CE3CF90E0780C301AF01F004A3B -:10C16000E3CF90E0780C301AF01F0048E3CF90E066 -:10C17000780C301AF01F0046E3CF90E0780C301AAC -:10C18000F01F0044E3CF90E0780C301AF01F00421B -:10C19000E3CF90E0780C301AF01F0040E3CF90E03E -:10C1A000780C301AF01F003EE3CF90E0780C301A84 -:10C1B000F01F003CE3CF90E0780C0A9AF01F003AA1 -:10C1C0000A9CE3CD80E0780C301AF01F0038E3CFF2 -:10C1D00090E0780C301AF01F0036E3CF90E0780C36 -:10C1E000301AF01F0034E3CF90E0780C301AF01FC3 -:10C1F0000032E3CF90E000008003B8288001AAEC71 -:10C200008001A4988003B9288001B3248001A37C15 -:10C210008003BB688001A4CC800091D08001BC1455 -:10C220008001BAA48001A4748001BA6C8001AC546E -:10C230008001AA808001AE8C8001AAC88001AAA4D6 -:10C240008001AA208001AF5C8001A9CC8001A9787F -:10C250008001A9488001A8F48001A8D08001A884A9 -:10C260008001A8608001B1548001B1B08001B1F4B7 -:10C270008001A8188001AA508001B0F88001A83C74 -:10C280008001A7F48001B4E08001B56C8001B5B0F5 -:10C290008001B5F88001B6408001BED08001B5189C -:10C2A0008001B9748001AE3C8001B3AC8001A6145A -:10C2B0008001B3688001B2E0EBCD40C012971499C1 -:10C2C0008E96109A582CC280E08A0008584CC360A1 -:10C2D000587CC190E3CF80C0580CC0A0581CCFB18F -:10C2E00058EBFE9BFFF9FEF80312F00B032F580BDF -:10C2F000CF21129C0E9BF01F00C28E98F006010CFD -:10C30000E3CD80C0202BE04B007FFE9BFFE5FEF8D5 -:10C3100002F2F00B032F582BE080015DE089001A38 -:10C32000580BC260581BCD71129C0E9BF01F00B6BB -:10C330008E98F006010CE3CD80C0580BCCC1129C46 -:10C340000E9BF01F00B28E98F006010CE3CD80C06A -:10C35000584BC170E0850148585BCBD1129C0E9BB5 -:10C36000F01F00AB8E98F006010CE3CD80C0129C4C -:10C370000E9BF01F00A88E98F006010CE3CD80C044 -:10C38000129C0E9BF01F00A48E98F006010CE3CDCA -:10C3900080C0129C0E9BF01F00A18E98F006010C2D -:10C3A000E3CD80C0129C0E9BF01F009D8E98F0067E -:10C3B000010CE3CD80C0129C0E9BF01F009A8E985A -:10C3C000F006010CE3CD80C0129C0E9BF01F00967E -:10C3D0008E98F006010CE3CD80C0129C0E9BF01FDE -:10C3E00000938E98F006010CE3CD80C0129C0E9B4A -:10C3F000F01F008F8E98F006010CE3CD80C0129CD8 -:10C400000E9BF01F008C8E98F006010CE3CD80C0CF -:10C41000129C0E9BF01F00888E98F006010CE3CD55 -:10C4200080C0129C0E9BF01F00858E98F006010CB8 -:10C43000E3CD80C0129C0E9BF01F00818E98F00609 -:10C44000010CE3CD80C0129C0E9BF01F007E8E98E5 -:10C45000F006010CE3CD80C0129C0E9BF01F007A09 -:10C460008E98F006010CE3CD80C0129C0E9BF01F4D -:10C4700000778E98F006010CE3CD80C0129C0E9BD5 -:10C48000F01F00738E98F006010CE3CD80C0129C63 -:10C490000E9BF01F00708E98F006010CE3CD80C05B -:10C4A000129C0E9BF01F006C8E98F006010CE3CDE1 -:10C4B00080C0129C0E9BF01F00698E98F006010C44 -:10C4C000E3CD80C0129C0E9BF01F00658E98F00695 -:10C4D000010CE3CD80C0129C0E9BF01F00628E9871 -:10C4E000F006010CE3CD80C0129C0E9BF01F005E95 -:10C4F0008E98F006010CE3CD80C0129C0E9BF01FBD -:10C50000005B8E98F006010CE3CD80C0129C0E9B60 -:10C51000F01F00578E98F006010CE3CD80C0129CEE -:10C520000E9BF01F00548E98F006010CE3CD80C0E6 -:10C53000129C0E9BF01F00508E98F006010CE3CD6C -:10C5400080C0129C0E9BF01F004D8E98F006010CCF -:10C55000E3CD80C0129C0E9BF01F00498E98F00620 -:10C56000010CE3CD80C0129C0E9BF01F00468E98FC -:10C57000F006010CE3CD80C0129C0E9BF01F004220 -:10C580008E98F006010CE3CD80C0129C0E9BF01F2C -:10C59000003F8E98F006010CE3CD80C0129C0E9BEC -:10C5A000F01F003B8E98F006010CE3CD80C0129C7A -:10C5B0000E9BF01F00388E98F006010CE3CD80C072 -:10C5C000129C0E9BF01F00348E98F006010CE3CDF8 -:10C5D00080C0129C0E9BF01F00318E98F006010C5B -:10C5E000E3CD80C0129C0E9BF01F002D8E98F006AC -:10C5F000010CE3CD80C000008003BDD88001A49869 -:10C600008003BE148001BC6C8001AE648001A5C0B3 -:10C610008001B4B88001A5F08001B8308001B29CDF -:10C620008001B6948001B6CC8001B9D48001BA30C3 -:10C630008001BB6C8001B7048001B7EC8001BA6C4B -:10C640008001B8908001BE748001A5188001A55CAE -:10C650008001B7A88001A7308001A7888001AE8C37 -:10C660008001AED88001A7D08001AB148001AF1843 -:10C670008001A9FC8001A9A88001AFD48001A92470 -:10C680008001B08C8001A8A88001B22C8001A7ACE9 -:10C690008001B2648001BBEC8001B4808001B3E40E -:10C6A000EBCD40FE208D306A18977853784578019D -:10C6B000FAC2FFE6300B049CF01F00384B88F139BA -:10C6C000010BE06AFFFFFB69001E300B1A9CF01F94 -:10C6D0000035302A1A9B049CF01F0033029A302840 -:10C6E0001A990A9B069CF01F00319A194B08F9D938 -:10C6F000C0101188103CF9B60200F1DCE318E06AC2 -:10C7000000FFF1DAE326EDD9E309FBF93C01F9D6A4 -:10C71000E30C1A944A78118A580AC060F4C80001E0 -:10C72000F9E80008C2918F3CF01F00238F2CC31042 -:10C730006E3A300BF01F0019FB66001F6E2BFB6377 -:10C74000001CFB65001D8E78F5D8C01020281A9CAF -:10C75000FB58001AF01F0013049C1A9B300AF01FAC -:10C7600000121A99029A0A9B069C3008F01F000FCB -:10C770002F8DE3CF90FE9A18F4C90001F9E9000962 -:10C78000F40901095C591208120CBA181206CCCB34 -:10C790002F8DE3CD80FE0000800091D0000087F453 -:10C7A0008001C7B88001A4448001C2B8000079E5C7 -:10C7B000000079E48000920030083019B838B818C9 -:10C7C000B828B80A3008994B993999285EFCD703E4 -:10C7D000EBCD4068189316951496F01F00090C9A3B -:10C7E0000A9BE6CCFFFFF01F00060C9A0A9BE6CCE2 -:10C7F000FFFEF01F0004E3CD806800008001A29CD2 -:10C800008001A2FCEBCD40681696149518931499FC -:10C81000169A303BF01F00050A9A0C9BE6CCFFFDF0 -:10C82000F01F0003E3CD80688001AD988001A29CD9 -:10C83000EBCD40681696149518931499169A303BD0 -:10C84000F01F00050A9A0C9BE6CCFFFDF01F0003C9 -:10C85000E3CD80688001AD988001A29CD431FACEEE -:10C86000FFDC189616971494129210907C157C0198 -:10C87000581AC2D0C153582AC1300D893FF8F00967 -:10C880001800C2100D98E2081900E08B0005E008BE -:10C890001900C6E23FF83009AC88AC99D83A8E1836 -:10C8A000AE383FF80D89F0091800C0D00C9C089AEA -:10C8B0000E9BF01F0034089A0E9BECCCFFFFF01F7C -:10C8C0000031CDCB3008300CAC98D83296285808BF -:10C8D000C4C0B618AE3830088B08AC983FFAAC8AA2 -:10C8E0008E198E08F2081900FE98FFEE1494ECC31E -:10C8F000FFFFC1D8E8081800EDF41E000D9A8E184D -:10C900008E89F408000B5C781019123AE089002631 -:10C91000AE1B6A082FF88B080D89E8091800CB3187 -:10C920008E198E08F2081900FE98FFCEAE39301A23 -:10C930000E9B0C9CF01F0013301A0E9B069CF01FE0 -:10C9400000110D88E4081800CD618E888E990D9A2B -:10C950001218103AE08A000E3FF83009AC88AC9902 -:10C960008E182028AE08C8AB9618B628CB4BDA3AFA -:10C970006A0A6E293018F00A094810498F29C7EB56 -:10C980008001A29CEBCD4040201D1A9E9AF65C7857 -:10C990001ADE1AD6F01F00032FED2FFDE3CD8040E5 -:10C9A0008001C85CEBCD40E0302818951AD8169667 -:10C9B00014973069F01F00072FFD580CC0700E9AB5 -:10C9C0000C9BEACCFFFEF01F0004E3CD80E00000EA -:10C9D0008001C9848001A2FCEBCD40E0301818959D -:10C9E0001AD81696149732A9F01F00072FFD580C7D -:10C9F000C0700E9A0C9BEACCFFFEF01F0004E3CD42 -:10CA000080E000008001C9848001A29CEBCD40E061 -:10CA1000305818951AD8169614973029F01F001020 -:10CA20002FFD580CC190EACCFFFE0E9A0C9BF01F14 -:10CA3000000D0E9A0C9BEACCFFFCF01F000B0E9A27 -:10CA40000C9BEACCFFFBF01F00080E9A0C9BEACC73 -:10CA5000FFFAF01F0005E3CD80E000008001C984EB -:10CA60008001A2FC8001A29CEBCD40E0301818951B -:10CA70001AD8169614973039F01F00072FFD580C5E -:10CA8000C0700E9A0C9BEACCFFFEF01F0004E3CDB1 -:10CA900080E000008001C9848001A29CEBCD40E0D1 -:10CAA000306818951AD8169614973049F01F001060 -:10CAB0002FFD580CC190EACCFFFE0E9A0C9BF01F84 -:10CAC000000D0E9A0C9BEACCFFFDF01F000A0E9A97 -:10CAD0000C9BEACCFFFCF01F00080E9A0C9BEACCE2 -:10CAE000FFFAF01F0005E3CD80E000008001C9845B -:10CAF0008001A29C8001A2FCEBCD40E0301818958B -:10CB00001AD81696149730A9F01F00072FFD580C5D -:10CB1000C0700E9A0C9BEACCFFFEF01F0004E3CD20 -:10CB200080E000008001C9848001A29CD43120BD36 -:10CB30005019500818961697581AC390C272E06898 -:10CB400000FDE06900DD1AD8300A3018F01F005CE3 -:10CB50002FFD580CC1E0300A0E9BECCCFFFEF01FFD -:10CB60000059300A0E9BECCCFFFDF01F0056300A36 -:10CB70000E9BECCCFFFCF01F0053ECCCFFFB0E9B9C -:10CB8000300AF01F0050301CC048582AC040301CEA -:10CB90002F5DD83219893FF8F0091800E080008B2A -:10CBA0009618301C2FA8B6182F5DD832761850581A -:10CBB000B1485038760A504AF6E80008F8C2FFFE3D -:10CBC000FAE90018F8C3FFFDF6EA0010F8C9FFFB08 -:10CBD000FAEB0020F8C4FFFC50293FF5FAC0FFD85B -:10CBE000E06100FDC0680D998E382FE81208AE286C -:10CBF0001AD030181AD1E06900DD109A0E9B0C9CF7 -:10CC0000F01F00312FED580CC4105805FBF5500AE9 -:10CC1000FBF8400AF9B90401F1D9E408EBD8E405BE -:10CC2000301A0E9B049CF01F0027301A0E9B069CA6 -:10CC3000F01F0024301A0E9B089CF01F00220DA844 -:10CC40003009F2081800CD010DB83509F2081800B6 -:10CC5000CCB10DC83F29F2081800CC61301A0E9BE8 -:10CC6000402CF01F00180DD84019F2081800CBC155 -:10CC70004038301CAE28F80509496E2812488F2824 -:10CC800040095809C8509305C84B4038FB58001458 -:10CC9000FAE80020EEE90010FAEA0010EEEB0000DE -:10CCA000FAE80018EEE90008AC9C3FF8AC882F5D6C -:10CCB000D8323008B898300CC6CB00008001C98447 -:10CCC0008001A29C8001C85CD431207D1895169704 -:10CCD00014961293581AC110C0B2300830290C9A19 -:10CCE0000E9B0A9CF01F0032C5712F9DD832582A26 -:10CCF000CF50301C2F9DD83276185018760AF0008D -:10CD00001410500A1A91F6E80008F8C4FFFAFAE97C -:10CD100000083FF6F6EA0010FAC2FFE8FAEB00104E -:10CD2000C1A85806FBF65006FBF84006F9B9040105 -:10CD3000F1D9E408EDD8E406301A0E9B089CF01FE8 -:10CD4000001D0BE8E6081800C1D00B998E382FE8BB -:10CD50001208AE2804983029301A0E9B0A9CF01F46 -:10CD60000014CE01BA20E2E80010EEE90010E2E87B -:10CD70000000EEE90000E2EA0008EEEB00082F9D5B -:10CD8000D83230186E29F006094AAE201449109C9A -:10CD90008F292F9DD8320B982FF8EACCFFFA0C9AE6 -:10CDA0000E9BAA98F01F0003301CCA5B8001CB2C9D -:10CDB0008001A29CEBCD40EC206D301918971693A2 -:10CDC0001495F01F002DC0412FADE3CD80ECEECCCB -:10CDD000FFF90A9A069BF01F00290A9A069BEECCDF -:10CDE000FFF8F01F00260A9A069BEECCFFF7F01F13 -:10CDF00000230A9A069BEECCFFF6F01F00210A9A48 -:10CE0000069BEECCFFF2F01F001E0A9A069BEECCAA -:10CE1000FFEEF01F001B0A9A069BEECCFFEAF01F04 -:10CE2000001858055F0858255F091248CCE06608CD -:10CE30005008661886160A9A5018EBD8B010BA1522 -:10CE4000E6E80008FAE900082026E6E20010E068BB -:10CE500000FD0A16AE961A9BFAE300100E9C1AD833 -:10CE6000E06900DD3018F01F00072FFD2FADE3CD86 -:10CE700080EC00008001CCC88001A29C8001C7D05A -:10CE80008001C984EBCD40EC206D18971693149562 -:10CE9000582AC18119893FF8F0091800F9F91801D9 -:10CEA000F7F81201F9BA0102F1DAE108F1D9E10863 -:10CEB000F7F81C01F9B80000F9F80E012FADE3CD29 -:10CEC00080EC3009F01F0019CFA0EECCFFF90A9AD0 -:10CED000069BF01F00170A9A069BEECCFFF8F01F86 -:10CEE00000145805CEC166085008661886160A9ABE -:10CEF0005018EBD8B010BA15E6E80008FAE90008B7 -:10CF00002026E6E20010E06800FD0A16AE961A9BA5 -:10CF1000FAE300100E9C1AD8E06900DD3018F01F0B -:10CF200000052FFDCCCB00008001CCC88001A29C65 -:10CF30008001C984D42112951497580A5F095805B5 -:10CF40005F08169A1248C2510B986E29F0C4FFFE72 -:10CF5000F2C800015BD8E08B0015129C089B5D1A9B -:10CF600018965806C0C06E086E192FF80809089A5E -:10CF70000A9B8F088F190C9CF01F00080C9CD8226C -:10CF8000089B5D1A300818968F2C8F188F08CEAB2F -:10CF900030060C9CD8220000800091DCEBCD40FCD8 -:10CFA00012951494580A5F0958055F0818921248A0 -:10CFB0001693C191300995296A085808E08A00162D -:10CFC00012966A270E99089A069B049CF01F000B84 -:10CFD0002FF6EEF7FFF86A085807F7B701F80C3894 -:10CFE000FE99FFF2E3CD80FCEAE80000F4E90000DE -:10CFF0006A2A892AE3CD80FC8001CF34EBCD40FC46 -:10D0000018931695581AC2C0C053582AC5E0E3CDEC -:10D0100080FC782778085808FE9AFFFB7819580991 -:10D02000FE9AFFF79698300612087649F208000437 -:10D030000F9A0E9B2FEA1414089CF01F00332FF652 -:10D04000EEF7FFF866085807F7B701F80C38FE99B5 -:10D05000FFF166198A181208AA18E3CD80FC9628F9 -:10D060005808C3C0B618F9D8B010AA3C300830121E -:10D0700087088718872810948A1C8A0E189AFC0C37 -:10D080001900C212F7DAC0106A46EC0B00081199B9 -:10D09000F2C7FFFE5827C250F1DEC0101618103735 -:10D0A000E0890020E40409496A2B2FF4F3EB00081F -:10D0B000C1C0F4070008AA18F9D8B010189AFC0CDF -:10D0C0001900CE13E3CD80FC781C580CFE9AFFA10A -:10D0D00096181808B618E3CD80FC961CB62CCC6BBD -:10D0E000AA0CFDDCB010CCBBF3EB1008069A8A99B1 -:10D0F0008B28EC090009485B6A5CF01F00058A1A5E -:10D100008A0ECD8B800091DC8001D3EC8001CF347E -:10D11000EBCD40F83FF510941697149340661388B2 -:10D12000EA081800C05130070E9CE3CD80F858047F -:10D130005F1858065F991268CF700C9B5D1718979F -:10D14000C0600C9A089BF01F0004CEFBA685A69C2D -:10D15000CECB0000800091DCEBCD40C0129EF2E807 -:10D160000000F4E9000014977C2A8F2A18961D8984 -:10D17000169C3FF8F0091800C1401D993058F0097D -:10D180001800E088000F2039E06A5556EA1A555514 -:10D19000F20B141FF20A04481619F2090019C028EC -:10D1A00030091AD9189B1C990C9C7C280E9AF01FE8 -:10D1B00000042FFD8F2CE3CD80C000008001D11032 -:10D1C000EBCD406CF2E20000F4E3000072289528F9 -:10D1D0001495722813961AD6F01F00032FFD8B2C7E -:10D1E000E3CD806C8001D110EBCD406FF2E2000006 -:10D1F000F4E30000F2E00008F4E10008F2E20010BD -:10D20000F4E300101495725813961AD6F01F000319 -:10D210002FFD8B5CE3CD806F8001D110EBCD406F93 -:10D22000F2E20000F4E30000F2E00008F4E100089C -:10D23000724895481495724813961AD6F01F000349 -:10D240002FFD8B4CE3CD806F8001D110EBCD406C76 -:10D25000F2E20000F4E30000722895281495722889 -:10D2600013961AD6F01F00032FFD8B2CE3CD806C94 -:10D270008001D110D421310418971AD41696149530 -:10D2800030183329F01F00142FFD580CC0B058057A -:10D29000C0E18C986C4C0F9A100CEECBFFFEF01F87 -:10D2A000000F0F998C181208AC18D8225815CFA16E -:10D2B0000F9AE80A1800E08800073FF83009AE88A6 -:10D2C000AE99CF0B8C986C4BEECCFFFE100BF01F81 -:10D2D0000003CE8B8001C984800091DCD4213018FA -:10D2E000189716961495308410991AD4F01F0014CC -:10D2F0002FFD580CC0B05805C0E18C986C4C0F9AAB -:10D30000100CEECBFFFEF01F000F0F998C181208C7 -:10D31000AC18D8225815CFA10F9AE80A1800E08857 -:10D3200000073FF83009AE88AE99CF0B8C986C4B54 -:10D33000EECCFFFE100BF01F0003CE8B8001C984E2 -:10D34000800091DCEBCD40E0320930081AD9189505 -:10D35000169714961099F01F00132FFD580CC0F06B -:10D360005806C0F18E986E4C0B9A100CEACBFFFE5B -:10D37000F01F000D0B998E181208AE18E3CD80E057 -:10D380005816CF918E986E4B0B9A100BEACCFFFE7D -:10D39000F01F00050B998E181208AE18CF0B000075 -:10D3A0008001C984800091ACD421201D7809189691 -:10D3B000F2C800015BD8E08B0014F2C80008C0E09E -:10D3C0001A943005C0280E98500870079105680C13 -:10D3D000F01F00068D055807CF712FFDD8223008A9 -:10D3E00099082FFDD8220000800091E8EBCD40C0C5 -:10D3F00018971696F6CCFFF8F01F000DC130EEF826 -:10D40000FFF8EEC900089908F8C7FFF8930C9916C1 -:10D410000C9AE06B00FF0E9CF01F00060E9CE3CD03 -:10D4200080C018970E9CE3CD80C000008000920061 -:10D43000800091D0EBCD40FC32E818931AD81692B8 -:10D44000149430683079F01F00232FFD580CC03140 -:10D45000E3CD80FC089A049BE6CCFFFEF01F001E83 -:10D4600007993058F0091800E088001F2039E06A59 -:10D470005556EA1A5555F20B141FF20A0448F20BDE -:10D4800001055814C18030060C972FF6662C0899B8 -:10D490000E0C049A2FD7303BF01F00100C35FE996C -:10D4A000FFF6E3CD80FC5814F9B80000E7F80A0253 -:10D4B000E3CD80FCEA050017645C0E9BF01F0008BA -:10D4C000872CCC700E9A300BF01F0006CDDB0000CD -:10D4D0008001C9848001BB948001AD988001D3ECA8 -:10D4E000800091D0D421189616951497582AC161BE -:10D4F00019893FF8F0091800F9F91801F7F8120135 -:10D50000F9BA0102F1DAE108F1D9E108F7F81C01F2 -:10D51000F9B80000F9F80E01D82230083049F01FA0 -:10D52000000CC0C00D98F0C400045817C0800E99BC -:10D530000A9A089B6C2CF01F0007D822089B6A5C93 -:10D54000F01F00058D2CCF41CF9B00008001CB2C1C -:10D550008001AD988001D3ECEBCD40FC206D189498 -:10D5600016951493582AC18119893FF8F0091800BB -:10D57000F9F91801F7F81201F9BA0102F1DAE10834 -:10D58000F1D9E108F7F81C01F9B80000F9F80E012B -:10D590002FADE3CD80FC30083019F01F0040CF9054 -:10D5A0006A1E501E6A0A500AEAE80008FAE90008F2 -:10D5B000EAEA0010FAEB0010EDDEB0105813C600D6 -:10D5C000E8C7FFFA0999ECC8FFFE12080E9CE5D8DF -:10D5D000B010069A0A9BF01F00328A18E40819005E -:10D5E000CD82069A0A9BE8CCFFF8F01F002E8A181D -:10D5F000E4081900CCE2E8CCFFF4069A0A9BF01F7D -:10D600000028685C88693008F0091900C0E01896A5 -:10D6100030070C9C2FF7069A0A9BF01F00222FC69A -:10D6200088E80E38FE99FFF78A18E4081900CB1233 -:10D63000069AE8CCFFF20A9BF01F0019685888E9A7 -:10D64000887AF009002C3008F00A1900C0E018961A -:10D6500030070C9C2FF7069A0A9BF01F00132FC669 -:10D6600088F80E38FE99FFF78A18E4081900C912E5 -:10D67000069A0A9BE8CCFFF0F01F0009C8ABE8C788 -:10D68000FFFA30EA300B0E9CF01F0008099B6A5C21 -:10D69000F01F0007895CC97B8001CB2C8001A2FCB4 -:10D6A0008001C8308001C804800091D08001D3EC93 -:10D6B000EBCD40FC206D189416951493582AC18127 -:10D6C00019893FF8F0091800F9F91801F7F8120163 -:10D6D000F9BA0102F1DAE108F1D9E108F7F81C0121 -:10D6E000F9B80000F9F80E012FADE3CD80FCE06839 -:10D6F00000FF33091AD83008F01F00532FFD580CD3 -:10D70000CF406A1E501E6A0A500AEAE80008FAE989 -:10D710000008EAEA0010FAEB0010EDDEB010581332 -:10D72000E0800085E8C7FFFE0999ECC8FFFE1208FB -:10D730000E9CE5D8B010069A0A9BF01F00448A1888 -:10D74000E4081900CD22069A0A9BE8CCFFFCF01FE2 -:10D7500000408A18E4081900CC82E8CCFFF8069A49 -:10D760000A9BF01F003A684C88493008F0091900FC -:10D77000C0E0189630070C9C2FF7069A0A9BF01F02 -:10D7800000342FC688C80E38FE99FFF78A18E408BF -:10D790001900CAB2069AE8CCFFF60A9BF01F002BCC -:10D7A000684888C9885AF009002C3008F00A190026 -:10D7B000C0E0189630070C9C2FF7069A0A9BF01FC2 -:10D7C00000252FC688D80E38FE99FFF78A18E4087E -:10D7D0001900C8B2069A0A9BE8CCFFF4F01F001BA0 -:10D7E0008A18E4081900C812069AE8CCFFF20A9BCE -:10D7F000F01F001688C988D81208684A8879F4088A -:10D80000002C3008F0091900FE90FF7018963007C0 -:10D810000C9C2FF706990A9A310BF01F000F2F0668 -:10D8200088F80E38FE99FFF6C60BE8C7FFFE30EA0F -:10D83000300B0E9CF01F0009099B6A5CF01F00086A -:10D84000894CC73B8001C9848001A2FC8001C8309B -:10D850008001C8048001AD98800091D08001D3EC94 -:10D86000EBCD40E0E06800FE18971AD816951496A4 -:10D8700030483059F01F00162FFD580CC031E3CD51 -:10D8800080E0EECCFFFE0C9A0A9BF01F00120C9A6F -:10D890000A9BEECCFFFDF01F000F0C9A0A9BEECC0A -:10D8A000FFFCF01F000C5816C0A00F9B0C990A9AA1 -:10D8B0006E2C203BF01F0008E3CD80E00F9B6A5CDC -:10D8C000203BF01F00068F2CCF11CDAB8001C98407 -:10D8D0008001A29C8001AD988001D3ECEBCD40E0AB -:10D8E00018951696F6CCFFF8F01F000CC12099167B -:10D8F00030089908F8C7FFF80C9A5805EBF71A0595 -:10D90000E06B00FF0E9CF01F00060E9CE3CD80E054 -:10D9100018970E9CE3CD80E080009200800091D0AB -:10D92000EBCD40C0201DF8C60008300C6C1BF01F6A -:10D930000014C1A0500C3007C1286C1B400CF01F14 -:10D9400000111897C1406C1AECCBFFF8EF4AFFFCAE -:10D950000E9CF01F000D6C065806C0505807CEE113 -:10D960004007CF2B400C2FFDE3CD80C01A9CF01F49 -:10D9700000070E9C2FFDE3CD80C000008001D8DCA5 -:10D980008001D3EC800091DC8001D3A8D401E06851 -:10D990000081301999489959189A7408129C11CE2F -:10D9A000F20E18005F089708D802D703486830398C -:10D9B000F0FA00F830089569985BF00B19005F0CDD -:10D9C0005EFC0000000087F419C8300A4869F2F9CB -:10D9D00000F8F4081800F9BC0001F9BC0100F3FCE0 -:10D9E0001A065EFC000087F448483009F0FA00F897 -:10D9F000301C95695EFC0000000087F448B8985A16 -:10DA0000F0FB00F83178F00A1900E08B000B3018B9 -:10DA1000F00A0948E4180080E01803FEC0205EFF09 -:10DA20003008301C97685EFC000087F478185808AE -:10DA30005F0C5EFC5EFF19C830192018F208180050 -:10DA40005FBC5EFC5EFD5EFD19C93008F009180080 -:10DA50005F0C5EFC5EFD5EFFEBCD4080308B189767 -:10DA6000991B300CF01F00078F0CC0803078E069E4 -:10DA700000818F588F49E3CF9080E3CD80800000F4 -:10DA80008001D8DCEBCD40C018971696308B991BDF -:10DA9000300CF01F00108F0CC160301830298F58E7 -:10DAA0008F4948D8B826118948C8B8E948C71189AC -:10DAB000B8F96EB899086EBC580CC0752FFC8FBCB5 -:10DAC000E3CF90C0E3CD80C0F01F0006CF9B0000E5 -:10DAD0008001D8DC00007A280000025C000087F496 -:10DAE00080018450EBCD40FE1897FACCFFE01694ED -:10DAF000781330CB14928F1B129178061095300C4E -:10DB0000F01F00118F0CC1A0307830498F588F4919 -:10DB10009905B8E6B8F1F9630008B8C4B8D248B8B6 -:10DB200048B9B084B28248B76EB899086EBC580C38 -:10DB3000C0752FFC8FBCE3CF90FEE3CD80FEF01FBD -:10DB40000006CF9B8001D8DC000079E5000079E475 -:10DB5000000087F480018450EBCD40FC1897FACC8C -:10DB6000FFE4314B781414938F1B129278061095B2 -:10DB7000300CF01F00158F0CC2003018F3D4C01009 -:10DB80008F488F589913B8429935F9560010F954B7 -:10DB9000001248E7F1D6C0100A481248F9B800FF51 -:10DBA000F9B80100B8586EB999096EBC580CC07527 -:10DBB0002FFC8FBCE3CF90FCE3CD80FCF01F000472 -:10DBC000CF9B00008001D8DC000087F480018450E6 -:10DBD000D401780A3009740B15F8129C129AF01FC0 -:10DBE0000002DA0A80018460D401780A3009740BDB -:10DBF000F538000B129C129AF01F0002DA0A00009E -:10DC000080018460D401780A3009740BF538000B68 -:10DC1000129C129AF01F0002DA0A00008001846050 -:10DC2000D401780A3009740BF538000B129C129A53 -:10DC3000F01F0002DA0A000080018460D401780A33 -:10DC40003009740BF538000B129C129AF01F000279 -:10DC5000DA0A000080018460D401780A3009740B6C -:10DC6000F538000B129C129AF01F0002DA0A00002D -:10DC700080018460D401780A3009740B15F8129C75 -:10DC8000129AF01F0002DA0A80018460EBCD40F89E -:10DC900030C618979916169414930C9B300CF01FED -:10DCA00000108F0C1895C160307831690C9A8F582C -:10DCB000089B8F49F01F000B48B66CB88B086CBCF2 -:10DCC000580CC0A52FFC8DBC301C6A088708E3CD1A -:10DCD00080F8E3CD80F8F01F0005CF6B8001D8DC21 -:10DCE000800091DC000087F480018450EBCD40F887 -:10DCF000308618979916169414930C9B300CF01FCD -:10DD000000108F0C1895C160307831490C9A8F58EB -:10DD1000089B8F49F01F000B48B66CB88B086CBC91 -:10DD2000580CC0A52FFC8DBC301C6A088708E3CDB9 -:10DD300080F8E3CD80F8F01F0005CF6B8001D8DCC0 -:10DD4000800091DC000087F480018450EBCD40F826 -:10DD500033C618979916169414930C9B300CF01F29 -:10DD600000108F0C1895C160307831390C9A8F589B -:10DD7000089B8F49F01F000B48B66CB88B086CBC31 -:10DD8000580CC0A52FFC8DBC301C6A088708E3CD59 -:10DD900080F8E3CD80F8F01F0005CF6B8001D8DC60 -:10DDA000800091DC000087F480018450EBCD40F8C6 -:10DDB000318618979916169414930C9B300CF01F0B -:10DDC00000108F0C1895C160307831190C9A8F585B -:10DDD000089B8F49F01F000B48B66CB88B086CBCD1 -:10DDE000580CC0A52FFC8DBC301C6A088708E3CDF9 -:10DDF00080F8E3CD80F8F01F0005CF6B8001D8DC00 -:10DE0000800091DC000087F480018450EBCD40F865 -:10DE1000330618979916169414930C9B300CF01F28 -:10DE200000108F0C1895C160307831090C9A8F580A -:10DE3000089B8F49F01F000B48B66CB88B086CBC70 -:10DE4000580CC0A52FFC8DBC301C6A088708E3CD98 -:10DE500080F8E3CD80F8F01F0005CF6B8001D8DC9F -:10DE6000800091DC000087F480018450D421189751 -:10DE7000169530CB991B300CF01F00128F0C1896A2 -:10DE8000FAC4FFEC580CC190302830098F588F49E4 -:10DE900048D76EB899086EBC580CC1052FFC8FBCD2 -:10DEA0005805EDF81000EBF81A00089BECCCFFFCCD -:10DEB000308AF01F0006DA2AD822F01F0005CF0BA7 -:10DEC0008001D8DC000087F4800091DC8001845060 -:10DED000EBCD40E018961695310B991B300CF01FD6 -:10DEE00000108D0C1897C1503078317A0A998D58EE -:10DEF0008D4A48CBF8CAFFFCF01F000B48B56AB842 -:10DF00008F086ABC580CC0752FFC8BBCE3CF90E027 -:10DF1000E3CD80E0F01F0006CF9B00008001D8DC3D -:10DF20008001D3EC8001D158000087F48001845037 -:10DF3000EBCD408078076E285808C0B0300C189A96 -:10DF40005C586E0B3109300CF01F0009E3CF908054 -:10DF5000310CF01F00086E189908EF390016991956 -:10DF60006E3899286E4999396E28CEAB800184604D -:10DF700080009200EBCD40FC189716931495314B1E -:10DF80001294991B300CF01F001C8F0C1896FAC2CB -:10DF9000FFE4580CC200302830198F588F495805BB -:10DFA000C1C18D455C7549576EB88D086EBC580C63 -:10DFB000C1F52FFC8FBC5804EDF81000E9F81A00E9 -:10DFC000049B308AECCCFFFCF01F000D301C8D351B -:10DFD000E3CD80FCE3CF80FC5C750A9CF01F000958 -:10DFE0008D4CCF90069B0A9AF01F0005CDDBF01FE9 -:10DFF0000006CE1B8001D8DC000087F4800091DC95 -:10E000008000920080018450EBCD40801897F93C4D -:10E01000000BF01F00084888F0F900F85809C0709C -:10E02000EECBFFFC310A313CF01F0004E3CF9080BF -:10E0300080015FB0000087F480014658D42130C8C9 -:10E040001896109B4904300CE8F500F88D18F01F65 -:10E05000000F8D0C1897C120301830D98D582FCC57 -:10E06000EACBFFE28D49F01F000A68B88F0868BC50 -:10E07000580CC0552FFC89BCDA2AD822F01F0005A5 -:10E08000CFBB0000000087F48001D8DC8001844011 -:10E0900080018450D42130CB1897991B300CF01F8D -:10E0A000000B8F0C1894C1004898301530868F559E -:10E0B0008F462FCCF0FB00F82E2BF01F00060A9C99 -:10E0C000E966000AD822D8228001D8DC000087F453 -:10E0D00080018440EBCD40E030CB1896991B300C8A -:10E0E000F01F00108D0C1897C1703018305948E59A -:10E0F0008D588D492FCCEAFB00F82E2BF01F000B1A -:10E100003028AE586AB98F096ABC580CC0752FFC0C -:10E110008BBCE3CF90E0E3CD80E0F01F0005CF9B08 -:10E120008001D8DC000087F48001844080018450A5 -:10E13000EBCD40FC30C518969915169414931292A5 -:10E140000A9B300CF01F00138D0C1897C1D03018AB -:10E150008D458D580A9A300BF01F000FEECCFFFC56 -:10E16000089BF01F000E078848D6EF68000A058953 -:10E17000EF69000B6CB88F086CBC580CC0752FFC95 -:10E180008DBCE3CF90FCE3CD80FCF01F0006CF9B5D -:10E190008001D8DC800091D080018440000087F4A9 -:10E1A00080018450EBCD40FC30C51896991516942B -:10E1B000149312920A9B300CF01F00128D0C1897CA -:10E1C000C1B0301830B98D588D490A9A300BF01F04 -:10E1D000000E306AAEC4AED3049BEE0A000CF01FF2 -:10E1E000000B48B66CB88F086CBC580CC0752FFC7F -:10E1F0008DBCE3CF90FCE3CD80FCF01F0006CF9BED -:10E200008001D8DC800091D0800091DC000087F490 -:10E2100080018450D431203D502B5018FACEFFD0CD -:10E2200033857C3499157C181896149312917C00D0 -:10E2300050087C220A9B300CF01F00228D0C18978E -:10E24000C370301830A98D580A9A8D49300BF01FD1 -:10E25000001E069A029BEECCFFFCF01F001CEF5341 -:10E2600000244028049BEF680026EF600027306AF6 -:10E27000EECCFFD8F01F00155804C1C0089B308AAF -:10E28000EECCFFD2F01F00114008EF6800364018B6 -:10E2900048F6EF6800376CB88F086CBC580CC05556 -:10E2A0002FFC8DBC2FDDDA3AF01F000ACFBB2FDD2B -:10E2B000D832089B308AEECCFFD2F01F0003CE5B31 -:10E2C0008001D8DC800091D0800091DC000087F4D0 -:10E2D00080018450D4012FCC7808202D500819C912 -:10E2E000BAC919D8BAD8F01F00052FED580CF9B8E3 -:10E2F000010DF9F81A06DA0A80015860D40148D8ED -:10E30000F8CBFFF5F0F900F8733C7808204D502861 -:10E3100019C9FB69000C19D8306AFB68000D1A9CFA -:10E32000F01F0005F01F00052FCD580C5F1CD80210 -:10E33000000087F48002E73680018898EBCD40FE2C -:10E340003007FAC5FFE0189116924A134A1466087E -:10E350000E38E08A00216A08204D50280BC9FB695D -:10E36000000C0BD8EE061504FB68000DE806000A49 -:10E3700015D8BAD87409500915C8BAC8F01F0016C4 -:10E380002FCD580CC0A12FF75907CE2118970E9CFE -:10E39000E3CD80FEEE061504E80600060A9B0C9C01 -:10E3A000F01F000EF3D2C001EE081501AC692FF882 -:10E3B000E808093166090E39FE99FFEBEEC9FFFF47 -:10E3C00048380E9C9109E3CD80FE000000008C5C73 -:10E3D00000008B5C8001889880018440EBCD4080F8 -:10E3E000300819C9F0091800C10048E8F0F700F832 -:10E3F0005807C130F01F000C0E9CF01F000C0E9C43 -:10E40000F01F000BE3CF8080486830A9F0FA00F8D5 -:10E41000301C9569E3CD80800E9CE3CD80800000A8 -:10E42000000087F480015D188001593880015CDCB0 -:10E43000EBCD40E01896F01F00224A2A0DE9F4F7D0 -:10E4400000F85809C1103018F0091800C32030280E -:10E45000F0091800C31030488F687498300CABC8AE -:10E460009598E3CD80E06F3930D8322A8F68496CB7 -:10E47000727B2F4BF01F00156F3C3FF8787BF7390C -:10E4800000C8F0091800C130202DF71600D47845D7 -:10E49000306AEECBFFE21A9CF01F000C0C9B0A9C2A -:10E4A000F01F000B301C2FEDE3CD80E0E3CF90E0B8 -:10E4B00030088F68CD3B30588F68CD0B8001F00459 -:10E4C000000087F400008C608002E7368001E33CA6 -:10E4D000EBCD40E01896F01F00284A8A0DE9F4F7CA -:10E4E00000F85809C1503018F0091800C3603028EE -:10E4F000F0091800C3906F0830492FF88F69EF4872 -:10E5000000407498300CABC89598E3CD80E06F392B -:10E5100030D8322A8F6849AC727B2F4BF01F00191C -:10E520006F3C3FF8787BF73900C8F0091800C1301C -:10E53000202DF71600D47845306AEECBFFE21A9C06 -:10E54000F01F00100C9B0A9CF01F000F301C2FEDD9 -:10E55000E3CD80E0E3CF90E06F0830092FF88F69BA -:10E56000EF480040CCFB6F0830592FF88F69EF4817 -:10E570000040CC8B8001F004000087F400008C6028 -:10E580008002E7368001E33CD421310B1896991BB9 -:10E59000300CF01F00198D0C1897C28030183049CC -:10E5A0008D588D494955302CEAF400F8F01F0014BD -:10E5B000E8CBFFE21896EECCFFF8F01F00126C38A3 -:10E5C000AE38EAF901045819C0D03008AE2830B886 -:10E5D00089686AB98F096ABC580CC0952FFC8BBC3E -:10E5E000DA2AEAF8011C5818CF20D82AF01F0006B2 -:10E5F000CF7B00008001D8DC000087F48001EF6C45 -:10E600008001844080018450EBCD40F81897169427 -:10E6100030CCF01F0046303CF01F00441895302CE1 -:10E62000F01F0042E06A00EC1896E06B00FF0E9CC1 -:10E63000F01F003FE8CBFFE2EECCFFF6F01F003DFD -:10E640006C384BD9AE289208AE483DD86939727BF8 -:10E65000F73A009AF00A1800C480F73900803DD8D4 -:10E66000F0091800C52030050A93F01F00349838CF -:10E67000AE381896F93900A83FF8F0091800C09094 -:10E68000F8C9FF58EECAFF584ADB0E9CF01F002D58 -:10E69000ED3900CC3FF8F0091800C1900E9CECC990 -:10E6A000FF34EECAFF344A6BF01F0027089CF01FAE -:10E6B0000027583CE089000C4A587099ABC99199E1 -:10E6C0003FFA301CEF6A009EE3CD80F85805CF502A -:10E6D000EECCFF62069BF01F001F49D9301C7298D8 -:10E6E000ABA89398E3CD80F8F73900A03008F00983 -:10E6F0001800CB41EAF900B85819CB01F72800A25D -:10E700001295F003161FCB2BF73900863018F0094D -:10E710001800CAA1EAFC00B8581CCA61F728008892 -:10E720001895F003161FCA2B8001EF6C800091D062 -:10E73000800184400000025E8001EFF88001D3EC8C -:10E740008001D1E88001D21C8001808E000087F416 -:10E75000800184F0D421E06800EC1897109B4924D4 -:10E76000300CE8F500F88F18F01F00108F0C189689 -:10E77000C090301830798F588F490A9BF01F000CD9 -:10E78000C021D82A0C9CF01F000B30C88B6868B9D8 -:10E790008D0968BC580CC0452FFC89BCDA2AF01FD3 -:10E7A0000006CFCB000087F48001D8DC8001E608AA -:10E7B0008001F03080018450D421E06800EC18978B -:10E7C000109B4924300CE8F500F88F18F01F00105A -:10E7D0008F0C1896C090301830698F588F490A9B5B -:10E7E000F01F000CC021D82A0C9CF01F000B30C871 -:10E7F0008B6868B98D0968BC580CC0452FFC89BC72 -:10E80000DA2AF01F0006CFCB000087F48001D8DCA5 -:10E810008001E6088001F03080018450EBCD40405B -:10E82000201D18961A9CF01F001849888C69F0FB6F -:10E8300000F85809C1203018F0091900C0B030287C -:10E84000F0091900C170770830492FF89769F74827 -:10E8500000402FFDE3CF80407738301911EA301C9B -:10E86000F20A1800F9B8000CF7F80A062FFDE3CDFC -:10E870008040770830592FF89769F74800402FFDFE -:10E88000E3CF8040800177A4000087F4D401496879 -:10E8900019C9F0FA00F85809C1803028F0091800A9 -:10E8A000C1803048F0091800C0503018F009180035 -:10E8B000C180750830492FF89569F548004019CB9B -:10E8C000302CF01F000AD80A3088301C9568D80216 -:10E8D000750830592FF89569F548004019CBCF1BC2 -:10E8E000301BCEFB000087F480018390D431215D82 -:10E8F000303C169614911290F01F00584D83F8C4C6 -:10E90000FFB0189531CA089B069CF01F0056C0A1A5 -:10E910006D3830AA707BE6CCFFE42D2BF01F005140 -:10E92000C7B06D38FAC7FFC8707B0E9CF6CAFFC827 -:10E930002D2BF01F004D089B0E9CF01F004CC0417A -:10E94000300C2EBDD83231CA0E9BFA0A0002049C4C -:10E95000F01F0047049CF01F004730080E9A500833 -:10E960001A97089B1A9CF01F00446D38707930E8A4 -:10E97000F33A005EF00A1800C670EB3A0074580AC9 -:10E98000CE006D387079EB380075F33B005EF60809 -:10E990001800C0F0EACCFF8A3009C0581938F608D0 -:10E9A0001800C0502FF9123AFE99FFFA123ACC9093 -:10E9B000049CF01F0032CC50049B1A9CF01F0030C6 -:10E9C0001A9B029CF01F002F049B009CF01F002D3F -:10E9D000089B31CA4A2CF01F00266D3830AA707B84 -:10E9E000E6CCFFE42D2BF01F00226D38312A707B1E -:10E9F000E6CCFFDA2C8BF01F001E029B304AE6CCDF -:10EA0000FFC8F01F001B009BE6CCFFC4304AF01F7C -:10EA10000018301CC97B6D38312A707BE6CCFFDAD8 -:10EA20002C8BF01F0010FE91FF7E304AE6CBFFC812 -:10EA3000029CF01F000FE6CBFFC4009C304AF01F81 -:10EA4000000C301CC7FB049CF01F000FFE90FF7AE7 -:10EA50001A9CF01F000EC92B8001EF6C000079E8B2 -:10EA60008000917C80018124800182BC800091DC47 -:10EA700080018658800181E8800182608001817E6A -:10EA8000800180CC80018360800185F4EBCD40FC67 -:10EA9000FACD0110300733095407FEF3022EE6F8D1 -:10EAA00000F854281896129B0E9C8D19F01F0088B0 -:10EAB0008D0C1895E080008A3018303C8D588D4CB4 -:10EAC000F01F0084FACBFEFC1894FACAFEF8FACCC8 -:10EAD000FEF2F01F0081442871390E9CE06B00ECBF -:10EAE0007277F01F007BC710540CE0680420B83820 -:10EAF000442B7738707992D9EDB90000C6B0EDB9E2 -:10EB00000001C06144099238A1B8B238442BE8F83A -:10EB100000B85808C0C07738707A94D9EDB90009A8 -:10EB2000C06144099238A9B8B238442BFAC2FEF148 -:10EB3000441A049CF01F006944185818E08000A58E -:10EB4000C6823079FB38010FF2081800C050440922 -:10EB50009238A5A8B238440CF01F0061049CF01F45 -:10EB600000614428E74C0100EACAFFF071390A9CB1 -:10EB70004DDBF01F005E6858AA286869AA394D3C31 -:10EB800069B85808C440442B773870793078F33A24 -:10EB90000074F00A1800C240EAC9FFF4EACAFFF89C -:10EBA000300CF01F0053581CC53030063018E748B1 -:10EBB000004444095809C0A0FACCFF00F01F004DE2 -:10EBC0000C9C2BCDE3CD80FC30060C9C2BCDE3CDF3 -:10EBD00080FC44099238A1A8B238442BC99BF8F8AC -:10EBE00001AC5808C050F8CCFE54F01F004230CBA6 -:10EBF000300CF01F0037E74C01AC189AC080442855 -:10EC0000713B76794B8B28C9F01F003B442BCC5BC2 -:10EC10005828CA51442C1A9B2E2CF01F00381A96E3 -:10EC20001AD61ADC442BFB380116FB390117EF3AD0 -:10EC300000CF169CF6CBFF34F01F003144283289F8 -:10EC4000F15900D8442CF01F00262FEDC88BE8F8AE -:10EC500000B85808C2916AB93FF8F368009A3028A2 -:10EC60003039E7480044442891694426F01F0025C4 -:10EC7000ED4C004466B88B0866BC580CC2352FFCBE -:10EC800087BC3016C94B440BEF3A00AF169CFB38DB -:10EC9000010EFB39010FF6CBFF58F01F001B440C8F -:10ECA000F01F000FC5CB44287139727A94D8EDB8A3 -:10ECB0000001CD21189B6ABCF8CCFF66F01F001341 -:10ECC000CCFBF01F0013CDDB000087F48001D8DC03 -:10ECD0008001EF6C80017C4480017EE08001F03097 -:10ECE00080017BD88001D3EC8001AD408001E8EC4D -:10ECF0008001D3A88001D1588001887080018C2CBC -:10ED0000800145C480018B74800184F080018450AF -:10ED1000D431203D189616971493303CF01F0070A4 -:10ED2000301831798D588D4930086C068F0858039A -:10ED3000EDF81805E7F81A0018950DC40898A7D83B -:10ED4000C0505898C0302FDDD83A0DD93018F0098E -:10ED50001800C1003008F0041800F9B80500EFF8F9 -:10ED60005A00F9BC0501F9BC0401EFFC4A002FDD93 -:10ED7000D832303CF01F005A6C98F93A0074F13BDD -:10ED8000005E580ACE80F9380075F6081800C0A059 -:10ED900028AC30092FF91439CDE41938F00B1800DC -:10EDA000CFA1ECC0FFF8009CF01F004E1891CD30B1 -:10EDB0006BB85808C090793870793078F33A00749D -:10EDC000F00A1800C6E0FACCFFF8F01F0047581C04 -:10EDD000C0A0F01F0046029B835C350A31DCF01FA7 -:10EDE0000044CB9B40285818CF51FACCFFFCF01FB1 -:10EDF0000041581CCEF1401820785818FE9BFFEBBC -:10EE00004BD8F0F900F85809CE501A9CF01F003B7F -:10EE1000581CCE01400820285818FE9BFFDC6C9E31 -:10EE20002F4EFCE80000212DFAE90024FCE8000840 -:10EE3000FAE9002CFCE20010FAE30034FCE80018C8 -:10EE4000FAE9003CFD3C0020FB6C0044FD38002149 -:10EE5000322AFB6800454AAB1A9CF01F002AF01FBB -:10EE6000002A2EED580CCB606C9A3FF8F53900C89B -:10EE7000F0091800CAF06008F51B00D4202D6C6C56 -:10EE8000500801C9BAC901D8BAD8F01F0020A56C32 -:10EE900049FB310A180B315CF01F00152FEDC9AB8F -:10EEA0004955EAF801AC5808C050EACCFE54F01FAE -:10EEB000001930CB300CF01F0018EB4C01AC189A45 -:10EEC00048D5580CFE90FF816338494B707928C9AA -:10EED000F01F00136A98ABB88B98C76B8001EF6C7A -:10EEE00080015D44800177A4800145C480014658BB -:10EEF00080015F44000087F480015F2800008C607F -:10EF00008002E736800189108001E33C00008B5CC1 -:10EF10008001D3A88001D8DC8001D3EC8001D158D6 -:10EF2000EBCD40E0206D300818991495502850081A -:10EF30001A9C1A965D191897C10140085808C040DC -:10EF40001A9CF01F0009402C580CC030F01F00071D -:10EF50000E9C2FADE3CD80E01A9C5D15581C5F0719 -:10EF6000CEDB00008001D3A8800091E858DCE08867 -:10EF700000035EFD49B8F00C032F49B8F0CCFFF454 -:10EF80005EFC4998F0CCFFE45EFC4978F0CCFFD4FD -:10EF90005EFC4958F0CCFFCC5EFC4938F0CCFFC495 -:10EFA0005EFC4918F0CCFF305EFC48F8F0CCFF1C4A -:10EFB0005EFC48D8F0CCFEF45EFC48B8F0CCFEBC59 -:10EFC0005EFC4898F0CCFE945EFC487C5EFC486891 -:10EFD000F0CCFFFC5EFC4848F0CCFE785EFC000004 -:10EFE0008003C01400000260483930089318930869 -:10EFF0005EFC000000008C844828700C5EFC000061 -:10F0000000008C84EBCD40C0487618976C1C580CDF -:10F01000C030F01F00060E9CF01F00058D1CE3CDD4 -:10F0200080C0000000008C8480018AD480018AECBA -:10F03000EBCD40C0487618976C0C580CC030F01FD0 -:10F0400000060E9CF01F00058D0CE3CD80C0000073 -:10F0500000008C8480018ABC80018B30D4211894FC -:10F060001696149530CCF01F00121897C1D03018A6 -:10F0700099069915F0060946EC0C1502F01F000CD4 -:10F080008F2CC0F05806E08A000B3009129A6E28C7 -:10F09000F009092A2FF91236FE99FFFB8907DA2AAF -:10F0A0000E9CF01F00043FDCD8220000800092007C -:10F0B000800091E8D4311893169214901291580C54 -:10F0C000C36078093018760CF0090945580CC390D4 -:10F0D000189468160A36C1A468075807C0606E48BD -:10F0E0000238C1B03FCCD832662CF8060327580747 -:10F0F000CF71ECC8FFFFF808002CC0582FF8190793 -:10F100005807CEE110960A38CFA5089CF01F0013CF -:10F1100030083FEC8508D832029A009C6E3BF01F05 -:10F120000010301C89166E088908D832760C580CED -:10F13000C040F01F000ADA3A66093018F0090945A4 -:10F14000308CF01F00081894C060850C30089918A6 -:10F150009908CC0BD8320000800091E8800091DC47 -:10F1600080009200D431109412907818409618952F -:10F17000169214910C9B780A089C5D181893318C98 -:10F18000F01F00131897C1F00C9CF01F00118F3C6A -:10F19000C170089B0C9AF01F000F30088F468F1229 -:10F1A0008F218F508F086A29F203002C78085808A5 -:10F1B000C0C0109970085808CFD19307DA3A0E9C56 -:10F1C000F01F00053FDCD8329907DA3A8000920040 -:10F1D000800091DC800091E8D431203D501C500B20 -:10F1E000149112921090580AC4307418009B740A3B -:10F1F000129C5D18A36C502C6228F00C0307580772 -:10F20000C3706E450A990035C3610E940E93C09881 -:10F210006E075807C2D008936E490A39C2C10E94CE -:10F220006E3B0A9A049CF01F00181896CF214019D3 -:10F230006E18930840086E2991098F1C8F2C6E3C24 -:10F24000F01F00128F468F3640296228F009000C0B -:10F2500078090E39EFF80000F9F80A00EFF810000D -:10F26000E7F81A000E9CF01F00092FDDDA3A3FEC98 -:10F270002FDDD8326E385808CFB00039CF903FCC50 -:10F280002FDDD8328000917C800091E8163C5E0C26 -:10F290007808971C990B97085808F1FB1A015EFC37 -:10F2A00078195809F9F81000F3F81A007808580886 -:10F2B000F1F91A013008990899185EFCD40149380F -:10F2C000FACEFFFC709CE21C0002C1D0209DFD3AEA -:10F2D0000021FB6A0021FCE80000FAE90000FCEADA -:10F2E0000008FAEB0008FCE80010FAE90010FCEA5C -:10F2F0000018FAEB0018FD380020FB680020F01F12 -:10F3000000042F7DD8020000000087F480015AA479 -:10F31000D4014898709CE21C0002C0C0300930CC77 -:10F32000EA1C4000303B129AF01F0004F01F00045A -:10F33000301CD802000087F4800186C88001875401 -:10F34000D4014898709CE21C0002C0C0300930DC37 -:10F35000EA1C4000303B129AF01F0004F01F00042A -:10F36000301CD802000087F4800186C880018754D1 -:10F37000D4014898709CE21C0002C0C03009310CD6 -:10F38000EA1C4000303B129AF01F0004F01F0004FA -:10F39000301CD802000087F4800186C880018754A1 -:10F3A000EBCD4080495818977098E2180002C04190 -:10F3B000109CE3CD8080F01F00126F38302911EAD5 -:10F3C000F20A1800C0D03009303B129A307CEA1C97 -:10F3D0004000F01F000CF01F000CE3CF90806E681F -:10F3E0005898CF213009303B129A30BCEA1C4000BB -:10F3F000F01F0004CF1B0000000087F4800158407C -:10F40000800186C88001875458DBE08A0012F939F0 -:10F41000000C3078F0091800E08B000C595BE08A92 -:10F420000008F939000E3AA8F0091800C0D05EFDB6 -:10F430003888F0091800CFC1F939000D38E8F00913 -:10F4400018005F0C5EFCF938000FF2081800CF01BD -:10F45000F93900103038F0091800CEA1F93900113F -:10F460003008F0091800CE41F93A0012F20A1800EB -:10F47000CDF1F9380013F4081800CDA1F9390014C2 -:10F480003888F0091800CD41F939001538E8F0093D -:10F4900018005F0C5EFCD7033019482891095EFC08 -:10F4A00000007A38EBCD40C0208D48D730088E0957 -:10F4B000F0091900C101E06AFFFF300B1A9CF01F30 -:10F4C00000091A9B302AFACCFFE8F01F00079A18AF -:10F4D0001A96AE088E0C2F8DE3CD80C000007A2ADC -:10F4E0008001C7B88001A498D401F01F00054858D6 -:10F4F000F139010B120C5C8CD80200008001F4A4DD -:10F50000000087F4EBCD4060208D306AFAC5FFE63D -:10F51000300B0A9CF01F00091A9CE06AFFFF300BB9 -:10F52000F01F00070A9C1A9B302AF01F00061A964B -:10F530009A1C2F8DE3CD8060800091D08001C7B8E8 -:10F540008001A444D43120DDFEF60234FACEFFA8B7 -:10F55000189516916C9C1494129310907C177C0251 -:10F56000E21C0002C0312F3DD832FEF802167009AD -:10F570005809C041FE7CFBB4CF7BECF8012458183D -:10F58000C041FE7CFC17CF0BECC9FFE85019129C60 -:10F59000F01F007D581CE08000E30D890D98F009F4 -:10F5A0001800E08200E6302CF01F0078E08000D2E6 -:10F5B0006CB850282FF88DB85807FBF91002EFF9F6 -:10F5C0001A00F01F0073C0E0029B0A9CF01F00713C -:10F5D000E08000C96C98EDB80006C0414E88402913 -:10F5E00091D9F01F006D6008EFDCB010F3D7C010A8 -:10F5F00050091039E08B006C0D882FF8AC880D99FC -:10F60000F0091800C061300A320C149BF01F00632F -:10F61000E8C800020E08FB58002EED38010B30043C -:10F62000FB680032400A300BFB640030FB640031A1 -:10F63000FB640033069CF01F005A069BFAC7FFF4D8 -:10F64000400A0E9CF01F0057300A0E9BFACCFFD2E6 -:10F65000F01F0055ED38010BF9D2C003BA78F01F46 -:10F660000053300CFB520028FB5C002AE041003EB6 -:10F67000E0880008EB39000C3888F0091800C2D087 -:10F680004028300A50980E9BFACCFFDCF01F00484F -:10F690004009ECCCFFE88109F01F0046F01F00464E -:10F6A0003008ED4C00CCED5800D04C49F30A014233 -:10F6B000F00A1900C0604B297298EDB8000EC031F5 -:10F6C000301CC52BF01F003E301CC4EBECCCFFE817 -:10F6D000F01F00383FFCC48BEB39000D38E8F0090F -:10F6E0001800CCF1EB39000E3018F0091800CC915D -:10F6F000EB39000F3038F0091800CC313028EB3BE3 -:10F700000012F00B18005F1A3FE8F00B18005F19A9 -:10F71000126AE80A1800CB51EB380013E218001DFA -:10F720005818CAF1EB380014E21800C85888CA917A -:10F73000189A31F9EA090708F4081800CA212FF9C4 -:10F74000E049003FCF81E0680400FB58002AC99BD4 -:10F75000401CF01F0018FE7CFAECC06BFE7CFC160F -:10F76000C03BECCCFFE8F01F00133FECCFDA401CAD -:10F77000F01F0010FE7CFB4FCF7A0000000087F4E2 -:10F7800000007A38800145DC80019F3080015F04F1 -:10F790008001F4088001F4E880014658800091D08F -:10F7A0008001C7B88001A4448001859C8001A49891 -:10F7B000800145EC800145C4000002608001FBFC33 -:10F7C000D401302CF01F0003300948389109D802C9 -:10F7D0008001A12800007A38D431FACD01385009CF -:10F7E000FACEFEA416971896FEFB031C14947C1305 -:10F7F0007C00F6F801245818C460FEFA030A749CD1 -:10F80000E21C0002C05118970E9C2B2DD832E068E4 -:10F8100000F8FAC5FEFCF5D7C0100C9B0A9C548872 -:10F82000549654A730025472F01F00B8FAC1FEE497 -:10F830000A9B029CF01F00B644C95879E08B00284F -:10F840003018F0090948E2180085C2104488FAC946 -:10F85000FFF45012502854D944D80A9B5478029C83 -:10F86000F01F00ACC1C1302744D95809CCE0FAC818 -:10F87000FFF41039CCA0FACCFECCF01F00A70E9CF0 -:10F880002B2DD83230270E9C2B2DD832448B300CA8 -:10F89000F01F00A2E08000B354DCCDFB44C9E04976 -:10F8A000003FE088000B300744B8EDB80007E08067 -:10F8B000009EF01F009BCD9BFEF80268F009032F0D -:10F8C000ECCAFFFC1588EC08000889080DD81589DA -:10F8D000400BEE0901093067F208010A970A44B8A3 -:10F8E000CE5B44B8F0C90001E0490097E088008988 -:10F8F000447CF01F008D44C8189A300944BC303B4A -:10F90000BFBCF9E8108CF01F0089F01F0085301B88 -:10F91000300CF01F008744B83027CC8B44B8E04847 -:10F920000082C090E08900A9E0480080C040E04823 -:10F930000081CEE10E9B0C9CF01F007ECE9B44B854 -:10F94000E0480082E08000C4E08900915978E080BE -:10F9500000C4E0480081CCD1029CF01F0077CD8B21 -:10F9600044B85808C7E144D65803EDF81000E7F84A -:10F970001A008C28A008FB1A0106445814088908AC -:10F98000FB190104F20A0105400A30EB95056807EE -:10F990000E9CF01F006AE08000AE4DB9F2F801D075 -:10F9A0005808E080009E0A9B0E9C5D18E08000993C -:10F9B00030270DE84D4BF768007B44B8C77B44B84F -:10F9C0005818CB90E0480080CA31CB5B447B44BCE4 -:10F9D000F01F005B44BCF8C800805818FE9BFF99DC -:10F9E000029B5C5CF01F0057C93B30084C69300B30 -:10F9F000B2A8169CF01F0054C5DB3FD7C06B4D3832 -:10FA0000F009032F029CF01F0052C82B029CF01F2C -:10FA10000051C7EB029CF01F0050C7AB029CF01FC7 -:10FA2000004FC76B029CF01F004EC72B029CF01FBB -:10FA3000004DC6EBF01F004C4B3AF54C00D4C68B82 -:10FA4000029CF01F004AC64B029CF01F0049C60BE7 -:10FA5000029CF01F0048C5CB447CF01F0047C58BBB -:10FA6000E0480081C1403027C21BF0C8008F5828F1 -:10FA7000FE9BFF40C4DBE0480084FE90FF5DFE95E6 -:10FA8000FF5BE0480085FE91FF44C55B49E91388B0 -:10FA900020185C58B28844D7C29049BB7698E218C7 -:10FAA0000040C20076D96E081039E088002944B8B9 -:10FAB000A7D854B85803F9B70003EFF81000E7F8D7 -:10FAC0001A00F9B70103FBF8104BCF0A447B32EC64 -:10FAD000F01F002AC1DB029CF01F0029C19B3047A8 -:10FAE000C69B0FD8F768007ACE3B302CF01F00255C -:10FAF000CD5BF01F0025CF403FE7C5CBF01F0023B3 -:10FB0000CD7B0000000087F48001C7B88001BF10E2 -:10FB10008001BF448001D3A88001D8DC80018754D4 -:10FB20008003C04C8001870C800186C880016A88F0 -:10FB3000800237E8800208948001F4088001708C0C -:10FB40008001725480018CE48003C14C8002084023 -:10FB50008002085880020864800208708002087CD5 -:10FB600080020888800145C48002084C8002083465 -:10FB7000800209B48001DA3480016D6C8002094092 -:10FB80008001A12880015F048001F310EBCD406863 -:10FB90003006493C1AD61AD649250C9899064929A7 -:10FBA000492A302B0A9CF01F001249231AD60C98C0 -:10FBB0001AD60699490A303BEACCFFFCF01F000C2C -:10FBC0000C981AD606991AD6EACCFFF848BA305BD8 -:10FBD000F01F0007301C2FADE3CD806800007A389D -:10FBE00000007A2C8001F4988003C3AC80016EB8C9 -:10FBF0008001F7C08003C3C48003C3E05EFCD70369 -:10FC0000EBCD40E0203D1897580CC1F07938707A60 -:10FC100094D9EDB90001C1D04C166C785828C15068 -:10FC20000E9CF01F0040C110ED3900943FF8F00920 -:10FC30001800C1405017FACAFFFC1A9BFACCFFF615 -:10FC4000F01F0039581CC180301C2FDDE3CD80E04F -:10FC50004B366C785818CE51CF8B202D306A1A9CB9 -:10FC60004AFBF6CBFF4AF01F0031F01F00312FEDA9 -:10FC7000580CCEB1CE0BFAC5FFF5400A401B0A9CCA -:10FC8000F01F002C581CCE113079FB38000BF20805 -:10FC90001800C35140187139727A94D8EDB8000435 -:10FCA000CD404A5AF4F801045818C3206DE85808AA -:10FCB000C1D1ED3B008049AA580BC2806F387079E2 -:10FCC000F5380081F33C005EF8081800C1F0F4CA72 -:10FCD000FF7E3009C0581538F8081800C0402FF9C9 -:10FCE0001639CFA516395F0CCB1B48D973F85808C5 -:10FCF000CE10F4F801AC5808CDD1CA7B0A9CF01F95 -:10FD0000000FF01F000FCA10CCDB3009CECB3059EA -:10FD1000FB38000BF2081800C981CC9B0000026080 -:10FD2000800189D080017C448002E736800188B060 -:10FD300080017EE0000087F480017BD880017C1088 -:10FD4000EBCD40E048D818961695F0F700F058072C -:10FD5000C0E00E9CF01F000AC0715806C0A00E9CA7 -:10FD60000A9B5D16C0606E075807CF41E3CF80E065 -:10FD70000E9CE3CD80E00000000087F48001FC00D1 -:10FD8000D401F01F0002D80280021500EBCD40F82C -:10FD9000204DE0683100EA18312EE069312EEA1971 -:10FDA000322E306CFAE90000F01F00631894E080F6 -:10FDB00000B9303CF01F00611896301CF01F005F46 -:10FDC000306A202D189B18951A9CF01F005DF01FBB -:10FDD000005D2FED580CE080008732B80A9C1AD8DD -:10FDE000308930084D8A306BF01F00582FFD1A9370 -:10FDF000ECFC00D8F01F0056ECFC00DCF01F0055B6 -:10FE0000ECFC00E4F01F0054ECFC00E8F01F005391 -:10FE1000ECFC00ECF01F0052ECFC00F0F01F005175 -:10FE2000ED3C00B7F01F00506DC85808F9B801014B -:10FE3000EDF81A1BED3C006FF01F004CECFC012CA0 -:10FE4000F01F004BF01F004BF01F004BF01F004B4A -:10FE5000F01F004BECF800F85808C6616D084C978D -:10FE6000EF4800D8ECFC0130F01F0047300830A903 -:10FE700032B54C6A1AD5E06B0080EECCFED8F01F8C -:10FE80000033EEC6FE58304A300B0C9CF01F004089 -:10FE900030081AD530594BFA0C9C304BF01F002B10 -:10FEA0004BD82FEDF10A01423009F20A1900C26065 -:10FEB0006E99EDB9000EC201A7B930688F9950381C -:10FEC0001A9CFAC8FFF8FAC9FFF4089A308BF01FA1 -:10FED00000331897581CC140089CF01F00312FCDEB -:10FEE000E3CF80F8189A0A991A933068308B1A9CDD -:10FEF000F01F002CC7EBF01F002C6E99CDEB089C77 -:10FF0000F01F00273009303B129A311CEA1C4000D8 -:10FF1000F01F0026F01F00260E9C2FCDE3CD80F8A9 -:10FF20002FCDE3CD80F8300A301B149CF01F002148 -:10FF3000C96B0000800092008001EF6C8002E73600 -:10FF4000800188B08003B804800176C480020594E3 -:10FF500080020538800204DC8002048080020424D0 -:10FF6000800203C8800202F880020374800202D477 -:10FF70008002078C800168AC8002017080020EFC58 -:10FF8000000087F48002031C8003C400800091D02D -:10FF90008003C40C00000260800174C8800091E8F6 -:10FFA0008001776C8001FBFC800186C8800187544A -:10FFB00080020B34EBCD406830094AF63068ACA9BA -:10FFC000AC893129314AAC988D99300530130A9BA0 -:10FFD000ED4500ECED4500E88DA58DC5ED550040E3 -:10FFE000ED550042ED55004EED4500D88DB3ECCCFB -:10FFF000FEF0F01F0022ED450124F01F0021ED5519 -:02000004800278 -:1000000000D0ED4C00CCED5500D249ECF01F001EA5 -:10001000F01F001EED4501B8F01F001DF01F001D70 -:10002000F01F001D0A9BECCCFF48F01F001C0A9B30 -:10003000ECCCFF44F01F0019069BECCCFF40F01FF6 -:100040000017069BECCCFF3CF01F0014ED4300446E -:10005000F01F0013F01F001330DCF01F0013F93CF9 -:10006000000FF01F0012F01F0006ED4C01CC069CA3 -:10007000E3CD8068000087F4800091D0800145C402 -:10008000000084CC80017B24800237D080016CDCAE -:100090008001FB8C8001EFE8800144F8800187C873 -:1000A000800205EC8001EF6C800202B8EBCD40606D -:1000B000E06A01F8300B49D518960A9CF01F001C25 -:1000C000F01F001C0C9CF01F001CEACCFFF4F01F7A -:1000D000001BEACCFFE0F01F0019EACCFFF0F01F94 -:1000E0000017EACCFFECF01F0016EACCFFE8F01F87 -:1000F0000014EACCFFE4F01F0012300930DC1AD9FA -:100100001298129A129BF01F000FF01F000FF01FA1 -:10011000000FF01F000FF01F000FF01F000F301C2A -:100120002FFDE3CD80600000000087F4800091D0B7 -:1001300080016F4880021124800145D6800145F27C -:100140008002067C80014690800149B88001804091 -:1001500080015F98800201584848300A4849911848 -:10016000910A930A5EFC000000007A3C00007A4489 -:10017000D421219D4A846808F3D8C001FB6900633B -:10018000E2180002C14030183005FB6800634A3CA9 -:10019000F01F00233018189BFAC9FF9D300A49FC54 -:1001A000F01F0020581CC2802E7DD8225809C1C0E3 -:1001B000109549D870065806CEB0EA050019FA091C -:1001C00000170C9B0E9C306A2FA72FF5F01F00170D -:1001D0006C265806CDD05905CF516808F1D8C0011A -:1001E000F0051700CD5B306AE06B00FF1A9C3015FC -:1001F000F01F000FCDFB48FCF01F0009EA050018B6 -:10020000189BA1781A99300A48ACF01F00062E7D81 -:10021000D822000000007A448003C414800091B802 -:100220008001776C00007A3C800091DC800091D0E6 -:100230008003C41CD40148697208104C930CEDBCB7 -:100240000002C021DA0AF01F0003D80200007A443D -:1002500080020170EBCD408048C76E095809C1305B -:10026000722A580AF3F80003EFF80A01F3F81003B2 -:10027000F5F81A037238129C910AF01F00056E09F6 -:100280005809CEF1E3CF908000007A3C800091E8DD -:10029000D401F01F0007581CC020D802485972082A -:1002A000EDB80002CFB0F01F0004D8028002025463 -:1002B00000007A4480020170F8C900013058F0094A -:1002C0001800E08B00054838B09C5EFF3FCC5EFC18 -:1002D000000087F4D401201DFAC9FFFC12DC1A9932 -:1002E0003048300A307B483CF01F00032FFDD80215 -:1002F0008003C43C8001776CD401201D3018BA8C77 -:100300001A99300A306B484CF01F0004581C5F0CDF -:100310002FFDD8028003C45C8001776CEBCD406870 -:10032000201D48F61893FAC5FFFC2F060AFC0C9C0A -:10033000F01F000C303CF01F000CF94301300C9C06 -:10034000F01F000A0A993018300A307B488CF01FE1 -:100350000009581C5F0C2FFDE3CD8068000087F476 -:10036000800145FC8001EF6C800145FE8003C46C78 -:100370008001776CEBCD4040201D48E6BA8C2F06FB -:100380000C9CF01F000D303CF01F000C1B88F9483E -:10039000006C0C9CF01F000A30181A99300A309B30 -:1003A000488CF01F0009581C5F0C2FFDE3CD8040E6 -:1003B000000087F4800145FC8001EF6C800145FE60 -:1003C0008003C4748001776CEBCD4068201D1898C1 -:1003D0005CB81895FAC3FFFC48D606D82F060C9CCB -:1003E000F01F000C303CF01F000CF94500F00C9C95 -:1003F000F01F000A1A993048300A309B488CF01FD1 -:100400000009581C5F0C2FFDE3CD8068000087F4C5 -:10041000800145FC8001EF6C800145FE8003C480B3 -:100420008001776CEBCD4068201D18985CB818955A -:10043000FAC3FFFC48D606D82F060C9CF01F000C10 -:10044000303CF01F000CF94500EC0C9CF01F000A3A -:100450001A993048300A309B488CF01F0009581C0C -:100460005F0C2FFDE3CD8068000087F4800145FC20 -:100470008001EF6C800145FE8003C48C8001776CA5 -:10048000EBCD4068201D18985CB81895FAC3FFFCA6 -:1004900048D606D82F060C9CF01F000C303CF01FED -:1004A000000CF94500E80C9CF01F000A1A9930482E -:1004B000300A309B488CF01F0009581C5F0C2FFD40 -:1004C000E3CD8068000087F4800145FC8001EF6C7B -:1004D000800145FE8003C4988001776CEBCD4068B5 -:1004E000201D18985CB81895FAC3FFFC48D606D8AA -:1004F0002F060C9CF01F000C303CF01F000CF9453F -:1005000000E40C9CF01F000A1A993048300A309B16 -:10051000488CF01F0009581C5F0C2FFDE3CD80684C -:10052000000087F4800145FC8001EF6C800145FEEE -:100530008003C4A48001776CEBCD4068201D18981F -:100540005CB81895FAC3FFFC48D606D82F060C9C59 -:10055000F01F000C303CF01F000CF94500DC0C9C37 -:10056000F01F000A1A993048300A309B488CF01F5F -:100570000009581C5F0C2FFDE3CD8068000087F454 -:10058000800145FC8001EF6C800145FE8003C4B012 -:100590008001776CEBCD4060201D48F5BABC2F057B -:1005A0000A9CF01F000E303CF01F000DFAC6FFFC45 -:1005B0000D78F94800D80A9CF01F000A0C993018F1 -:1005C000300A306B488CF01F0009581C5F0C2FFD5F -:1005D000E3CD8060000087F4800145FC8001EF6C72 -:1005E000800145FE8003C4BC8001776CEBCD40C028 -:1005F000206D49EC3008F939010DF93B010850082C -:1006000050281AD9F93A010C1ADAFAC7FFF8F93961 -:10061000010AF93A01090E9CF01F00152FED580C44 -:10062000C10140085808C0401A9CF01F0012402C1D -:10063000580CC040F01F0010300C2FADE3CD80C02F -:100640001A9CF01F000E400818965808C0401A9CCB -:10065000F01F0008402C580CC030F01F000758163F -:100660005F0C2FADE3CD80C0000087F48001DAE499 -:100670008001D3A8800091E880018E9CD4214C0792 -:10068000405EEF6C0108EF6B0109EF6E010D1495F0 -:100690001294109A3019F2081800C120EEF801B037 -:1006A0005808C3D05828C4C04B5CEF3B01B5338811 -:1006B000F00B1800C5403398F00B1800C440EF6AE7 -:1006C000010CF01F0030EDDCB010F01F002F0C0CFF -:1006D0005C5C5805C1E11895F01F002A1815EF65FC -:1006E000010AF01F0029EDDCB010F01F00260C0CF1 -:1006F0005C5C5804C3F11894F01F00221814EF64D6 -:10070000010B6E98EDB80001C031F01F0020DA2A0D -:10071000EA0C1800FE98FFE23FCCD822EF3901B571 -:100720003348F0091800CC11EF3901B63418F0093C -:100730001800FE98FFC630E8EF68010CCC3BEF696B -:10074000010CCC0BEF3901B63408F0091800FE9803 -:10075000FFB8301948A8F169010CCB4BF93901B643 -:100760003408F0091800FE98FFA835A8F968010CB4 -:10077000CA9BE80C1800FE9BFFD1CBFB000087F45E -:100780008001F4A48001F504800205ECEBCD40E08B -:10079000303CF01F002330CB18954A26300CF01F58 -:1007A0000022ED4C01AC1897C360303BF01F001FD6 -:1007B0008F2CECF901AC72275807C2903078300BBF -:1007C000B2883068ECFA01ACB498ECF901ACB2AB89 -:1007D000ECF801ACB0BBECF901ACB2CBECF801AC7D -:1007E000EB390075702AB489ECF801ACEB39007470 -:1007F000702AB499ECF801ACEAFB00847029B2AB22 -:10080000ECFC01ACF01F000AE3CF90E0ECCCFE540E -:10081000F01F00080E9CE3CD80E000008001EF6C2B -:10082000000087F48001D8DC8001D3EC800208D47A -:100830008001D3A8D401F01F0002DA0A8001DA5641 -:10084000D401F01F0002DA0A8001DF30D401F01F6A -:100850000002DA0A8001DBE8D401F01F0002DA0AA4 -:100860008001DC04D401F01F0002DA0A8001DC20E0 -:10087000D401F01F0002DA0A8001DC3CD401F01F31 -:100880000002DA0A8001DC58D401F01F0002DA0A03 -:100890008001DC74D401201D1A9BF01F000CC09055 -:1008A00040085808C06048AA7499EDB90000C030EB -:1008B0002FFDDA0A1298A1C831CC9598300A149B02 -:1008C000F01F00042FFDDA0A8001D98C000087F4A4 -:1008D00080014658EBCD40C0206D4958189B709C54 -:1008E000E21C0002C06118970E9C2FADE3CD80C0C2 -:1008F00030081A96502850081A9CF01F000EC1119B -:10090000189740085808C0401A9CF01F000B402C54 -:10091000580CCEB0F01F00090E9C2FADE3CD80C067 -:100920001A9C3017F01F0006CEDB0000000087F491 -:100930008001DED08001D3A8800091E880018E9CE8 -:10094000EBCD4080201D300A1A9BF01F0017C0F02D -:1009500040085808C0F149576E99EDB9000BC071B5 -:10096000EEF801A84917F1D8C001C1212FFDE3CF4E -:10097000908048E76E99EDB90000CF01A1C9300A17 -:100980008F9931CC149BF01F000A6E99CE7BEEFC40 -:1009900001ACF01F00086E98301CABD88F982FFD6B -:1009A000E3CD80808001ED10000087F4800146587F -:1009B000800208D4D401F01F0002DA0A8001DBD0E3 -:1009C000EBCD40FC206D4A5318951097169266980F -:1009D0001496109C1294E21C0002C2D05BF5C30175 -:1009E000303CF01F001F300BF3D7C010F5D4C010FF -:1009F0001AD90C981ADAF3D2C010504B502BFAC601 -:100A0000FFF8F93B00F70A9A0C9CF01F00162FED37 -:100A1000580CC1B1189740085808C0401A9CF01FE4 -:100A20000012402C580CC030F01F00100E9C2FAD4F -:100A3000E3CD80FC18970E9C2FADE3CD80FCEDB884 -:100A40000000CCF13FB7CF3B6698A1A81A9C8798CD -:100A50003017F01F0007CE0B000087F48001EF6C09 -:100A60008001DB588001D3A8800091E880018E9C32 -:100A7000D40130085C7B1099109AF01F0002D80254 -:100A8000800209C0D4013008364B1099109A109C8E -:100A9000F01F0002D8020000800209C0EBCD40E048 -:100AA00020AD3006507CFB6B00201497500650267A -:100AB0001A95FACAFFDCFACBFFE81A9CF01F00195E -:100AC000C111189640085808C0401A9CF01F001623 -:100AD000402C580CC030F01F00150C9C2F6DE3CD3E -:100AE00080E05807C09040980E9B0C9C8F28F01F08 -:100AF0000010581CC0611A9C3016F01F000ECE3B2F -:100B000040085808C0401A9CF01F0007402C580CA1 -:100B1000C0313FD6CE3BF01F00053FD6CDFB0000D5 -:100B20008001DC8C8001D3A8800091E880016C40BA -:100B300080018E9CD401F01F0002D80280020A9C22 -:100B4000EBCD40E0209D3018189A1697F00C09481C -:100B50004A5B7609F1E9000CC06118970E9C2F7D65 -:100B6000E3CD80E0F00811FF12683006507A970854 -:100B7000500650261A95FACAFFE0FACBFFE81A9CF5 -:100B8000F01F001AC1E05807C09040880E9B0C9CD3 -:100B90008F28F01F0017581CC1611A9C3017F01FD6 -:100BA000001540085808C0401A9CF01F0013402C44 -:100BB000580CCD50F01F00110E9C2F7DE3CD80E02E -:100BC0001897CF0B40085808C0401A9CF01F000A25 -:100BD000402C580CC0313FD7CC2BF01F00083FD71A -:100BE000CBEB000000007A4C8001DCEC80016C4013 -:100BF00080018E9C8001D3A8800091E8EBCD40F865 -:100C0000216DFAC6FF901897FB69000EFB68000F74 -:100C1000FB6B0010FB6A00116CF46D036D15ECCCDE -:100C2000FFD4F01F0038306ABA6CECCBFFDCFACC92 -:100C3000FFEDF01F00350D88FB6800190D99ECCB16 -:100C4000FFFEFB69001A320AFACCFFE5F01F002E06 -:100C50004AEE30097C0B301CF809094AF5EB000814 -:100C6000C0902FF95899CF9130060C9C2EADE3CD52 -:100C700080F8F7EA10089D085BF9CF705024FB63F9 -:100C8000001250195807EFF91A003006FAC7FFC4CE -:100C900050F65116FACAFFAC1A9B0E9CF01F001CAE -:100CA000C111189640F85808C0400E9CF01F00195A -:100CB000411C580CCDB0F01F00180C9C2EADE3CD9C -:100CC00080F85805C09041580A9B0C9C8B28F01F57 -:100CD0000013581CC0610E9C3016F01F0011CE3B53 -:100CE00040F85808C0400E9CF01F000A411C580CE8 -:100CF000C0313FD6CBBBF01F00083FD6CB7B0000F6 -:100D000080018058800091DC00007A4C8001DD4C2D -:100D10008001D3A8800091E880016C4080018E9C06 -:100D2000D42120DD4B0510946A0E4126F1DEC0016E -:100D3000C0B0EDBE0001C411EDBE0002C411300709 -:100D40000E9C2F3DD82210973018FB6B002A508A3A -:100D50005077FDE8100850998B08FB540028580C78 -:100D6000F9F71A001A953007FACAFFD05007502732 -:100D7000FACBFFE81A9CF01F001DC101189740082C -:100D80005808C0401A9CF01F001A402C580CCD90F7 -:100D9000F01F00180E9C2F3DD8225806C09040C866 -:100DA0000C9B0E9C8D28F01F0014581CC0C11A9C6F -:100DB0003017F01F0012CE4B30173028CC7B302775 -:100DC0003048CC4B40085808C0401A9CF01F00081F -:100DD000402C580CC0313FD7CB4BF01F00063FD7FB -:100DE000CB0B000000007A488001DDAC8001D3A865 -:100DF000800091E880016C4080018E9CEBCD40E04A -:100E0000207D300616975006189B50261A95FACA70 -:100E1000FFE81A9CF01F001AC111189640085808E4 -:100E2000C0401A9CF01F0017402C580CC030F01F17 -:100E300000160C9C2F9DE3CD80E05807C1904068C0 -:100E40000E9B0C9C8F28F01F0011581CC1104008ED -:100E50005808C0401A9CF01F000B402C580CC0D002 -:100E6000F01F000930060C9C2F9DE3CD80E01A9CFA -:100E70003016F01F0007CD3B1896CDCB8001DE0C5D -:100E80008001D3A8800091E880016C4080018E9C95 -:100E9000D40120CDFB5A0012FB590014FACAFFCC32 -:100EA000502874197408FB590016501874397428A6 -:100EB000FB59001AFB580018745974485039FB58F4 -:100EC000001C74797468FB590020FB58001E74994B -:100ED000748850A95098300974A8FB6C0022FB5B01 -:100EE0000010FB68002C74BBFB6900231A9CF01FE8 -:100EF00000032F4DD802000080020DFCEBCD40EE28 -:100F000020CD3FF94CC850A950B94CC93005303CF0 -:100F100091059305F01F004A322A18961A971A9CD9 -:100F20000A9BF01F0048FAC3FFDE306AE06B00FF47 -:100F3000069CF01F00441AD5ED38004F1AD86D28D2 -:100F40001AD86D191AD9ED1800361AD8ED190032D1 -:100F50001AD96CE81AD8ED19002E1AD9ED18002A02 -:100F60001AD8ED1900261AD9ED1800221AD86C6982 -:100F700030BB1AD9301C6D08ED1900FEED3A001F88 -:100F8000F01F0031ECFB01282F4DF6C80001581866 -:100F9000E0880045ED3100F7ECCAFF8C30153006D3 -:100FA0001AD61AD540D81AD8F4E80000206D069B4E -:100FB000FAE900081A9CF4E20008306AFAE300102B -:100FC000F01F0022EF380021209DFB680021EEE891 -:100FD0000000FAE90000EEE20008FAE30008EEE89B -:100FE0000010FAE90010EEE20018FAE30018EF38FA -:100FF0000020029BFB6800200A990C98FACCFF9015 -:10100000303AF01F00130C9A2EED0C9B40ACF01FF1 -:1010100000110A9C2F4DE3CD80EE1AD50A98FACC28 -:10102000FFD05C5B0A99FE7AFF6AF01F000B2FFD70 -:10103000CB2B000000007A4C00007A488001EF6C56 -:10104000800091D080020E908002E73680020BFC77 -:1010500080020A9C80020D20D431202D500B189163 -:101060004A1776026E9CE21C0002C350304C5011AD -:101070005801E2021700F01F001DEEF700F0189073 -:101080005807C2D030043013C0A82FF45802C1B1A1 -:101090005801F9B301FF5805C1100A9760B66E05F3 -:1010A000F01F00130C9A189B0E9CF01F0012CEE04C -:1010B0000E9CF01F00115805CF114008069C9104AA -:1010C0002FEDD83240182012110C0E9B5018F01F33 -:1010D000000BCE2B1893069C2FEDD8320E943013B4 -:1010E000CEDB0000000087F48001EF6C800145C476 -:1010F000800159A080015CDC800184284828F0FC34 -:1011000000F85EFC000087F4486871195879F9B856 -:101110000001F9F80A00F9B80100F9F81A005EFFB9 -:10112000000087F44828F14C007C5EFC000087F446 -:101130004828F14C01D05EFF000087F4EBCD40C0A1 -:1011400018971496E04A0020E088000830083FF91C -:10115000B898B889E3CF80C02FECF01F00043008A6 -:10116000AE96AE88E3CF90C0800091DCEBCD40FC22 -:10117000206D18941695F01F00431897C1A0F939F7 -:1011800000CC3FF8F0091800C3910896EF3900A889 -:101190003FF8F0091800C5414BB8F0F700F85807C0 -:1011A000C0A1EC040104301C8B042FADE3CD80FC06 -:1011B0000896CF3BE06AFFFF300B1A9CF01F00330C -:1011C0006F38302A707C1A9B2F4CF01F00311A9216 -:1011D0006A0A9A93063AC0442FADE3CFC0FC0C9B39 -:1011E0001A9C5C7AF01F00296F380606707C1A9BE7 -:1011F0002F4C300AF01F0026CD5BE06AFFFF300B5A -:101200001A9CF01F0022302AEEC2FF341A9B049C65 -:10121000F01F00201A966A0A9A93063ACDE55C7A86 -:10122000089B1A9CF01F00191A9B049C300AF01F9F -:1012300000196A08E803000606188B08CA8BE06AE2 -:10124000FFFF300B1A9CF01F0011302AEEC7FF5829 -:101250001A9B0E9CF01F00101A926A0A9A93063A83 -:10126000CBC50C9B5C7A1A9CF01F00081A9B0E9C45 -:10127000300AF01F00096A08060606188B08C8DB4A -:101280008001EFF8000087F48001C7B88001D344E3 -:101290008001D6B08001D558D401F01F0002D802D9 -:1012A00080015D18EBCD40F8FACD00803225149313 -:1012B00018941297BA85FAC6FFFF0C9CF01F001B0A -:1012C000300806063019AC85AC981A951A9A498BE5 -:1012D000089CF01F0018C0503FFC2E0DE3CD80F895 -:1012E0000E9CF01F0015E04C0040C1701AD7493A1F -:1012F000E06B00800A9CF01F00120A9A3019491B0B -:10130000089CF01F000C2FFD1897580CCE61089C0C -:10131000F01F000D0E9CCE2B0E9A089C3019489B96 -:10132000F01F0004CDB0CD9B800091DC8003C4FC95 -:1013300080023BB8800091B8800399D0800091482A -:101340008003C50480024328D421210D300B4B6655 -:10135000169CF01F00368D0CC2B078075807C2A04B -:101360006F985808C2704B283014EF4400641A95E7 -:10137000340B1AD84AFA0A9CF01F002F08990A9ACF -:101380004AEB0E9CF01F002E2FFD580CC2506C082B -:10139000700CF01F002C6C09300893086C08700961 -:1013A0004A98722A910A6C09300893486C0C2F0DE8 -:1013B000D822F01F00261897CF70F01F00254A583A -:1013C0004A59118A4A5B0E9CF01F0025C2056E29FE -:1013D00049D89109CE9B08994A2A4A3B0E9CF01F96 -:1013E0000018C1C14A18340B1AD8492A0A9CF01FA8 -:1013F000001208990A9A49EB0E9CF01F00112FFD6C -:10140000580CC0C13088EF480054CC9B0E9CF01F94 -:10141000000D6C0930089308CC7B0E9CF01F00096E -:10142000CB7B000000008C8C80023B4C8003C50805 -:10143000800399D0800091488003C4FC80023BB8AF -:1014400080024190000003FC80024F4080023B225A -:10145000000004000000042800000404800212A41C -:101460008003C5108003C5148003C5188003C538E8 -:10147000D421169849871495189B109A49740E9C8C -:10148000A888F01F00170A9B30064965EF66002008 -:10149000341A0A9CF01F001449484959EB66004071 -:1014A000700B720CF01F00131896C0C0F01F0012D2 -:1014B0000A99098A0E9B0C9CF01F00106D185808A1 -:1014C000C021D822ECCAFFDC0A9C3209341BF01F71 -:1014D000000CD8220000040400000400800091DC0D -:1014E00000000428800091AC000003FC00008C8CFC -:1014F00080023B0680023B22800212A480023A68EE -:10150000D421210D328A300B1A9CF01F00301A9C16 -:1015100030073014504750544AD5F01F002E8B0C22 -:101520001A96C4A0FAC6FFD8318A0E9B0C9CF01FF5 -:1015300000274A984A990C9B50E850A96A0CF01F62 -:1015400000281896C3B04A7CF01F00274A761AD7A5 -:10155000304B1AD70E984A694A6AEC0B000CF01F00 -:1015600000260E981AD74A591AD74A5A302B0C9C83 -:10157000F01F00210E981AD74A291AD74A2A311B80 -:10158000ECCCFFF8F01F001C0E981AD749F91AD7B7 -:1015900049FA312BECCCFFF4F01F00170E982F8D79 -:1015A000ECCCFFF01AD749B91AD749BA315BF01F12 -:1015B0000012089C2FED2F0DD8226A0CF01F001787 -:1015C0000C9C8B06CF9B0000800091D000007A50CD -:1015D00080022B4C8003C5448003C54C80022C0440 -:1015E000800216FC8002113000007A5480021670CE -:1015F0008003C55480016EB8800217408003C3ACDD -:10160000800216C48003C5708002168C8003C58CCE -:101610008002161C8003C5A480022AF8EBCD40C0CE -:1016200021AD189798E8EDB80000C181368A300BDB -:101630001A9CF01F000C306A0E9B1A9CF01F000AC7 -:101640006E2830195C3850395028488870091A962D -:101650001A9A720C306BF01F00062E6DE3CD80C01D -:10166000800091D0800091DC00007A508002792CBB -:10167000D40148587009300A720C301BF01F000367 -:10168000D802000000007A508002792CEBCD404057 -:1016900021AD368A300B1A9CF01F000830084889AB -:1016A000500872081A961A9A700C302BF01F000519 -:1016B0002E6DE3CD80400000800091D000007A5074 -:1016C0008002792CEBCD404021AD368A300B1A9C3C -:1016D000F01F000830184889500872081A961A9AA4 -:1016E000700C302BF01F00052E6DE3CD8040000004 -:1016F000800091D000007A508002792CD401487883 -:10170000700EF6C9000E189AF8CBFFFA2F2A7C0C3F -:10171000F01F0003DA0A000000007A50800224E083 -:10172000D401580CC051304CF01F0004D802304C8A -:10173000F01F0003D80200008001A12880019F3023 -:10174000EBCD40E0FACD0170FACCFE98F01F001905 -:10175000581CC22145A85818E088001FE068010005 -:10176000FACBFE901A9C16D8F01F00131A95189603 -:10177000FAC7FF00368A300B0E9CF01F0010581677 -:10178000C11048F870090E9A720C300BF01F000D52 -:101790002A4DE3CD80E0300CF01F000B2A4DE3CD45 -:1017A00080E045B85808FE9AFFEE540D5418CEABB1 -:1017B00080015F448002116C800091D000007A505B -:1017C0008002792C80021720000000000000000039 -:1017D000EBCD40C0F8F800D418971696F0F80088C2 -:1017E000F8FA00E85808C040F8FC00C45D185876C4 -:1017F000C1A058065F0858365F091248C11030185A -:10180000EF4800ECEEF900D473985808C050300B44 -:10181000EEFC00C45D18EF4600E8E3CD80C05846FA -:10182000CEF0CFABEEF800EC5808CF603008301B9C -:10183000EF4800ECEF4B00F0EEF800D47198580838 -:10184000CE81CEABD401F01F0002D802800217D0A7 -:10185000F8FC00E85EFCD401F8F800D471A8580840 -:10186000C050F8FC00C45D18D802109CD802D40106 -:10187000F8F800D471185808C050F8FC00C45D187E -:10188000D802DC0AD401F8F800D471285808C050F6 -:10189000F8FC00C45D18D802DC0AD703EBCD408009 -:1018A0003008F8F90108F94801085809C031C08822 -:1018B0000E997207129CF01F00045807CFA1E3CDC8 -:1018C00080800000800091E8D401F8FC00DCF01F6B -:1018D0000002D8028002B4A4D401F8FC0090F01FEA -:1018E0000002D80280023B8CD401F8FC0090F01F6B -:1018F0000002D80280023C84EBCD40C01696F8F777 -:1019000001085807C051C0B86E075807C080EECC18 -:10191000FFFC306A0C9BF01F0004CF710E9CE3CDDE -:1019200080C000008000917CD4011699F8F801185D -:101930005808C0A1F8F800D470285808C0C0F8FCB6 -:1019400000C45D18D802F8CBFF64306A129CF01F07 -:101950000003D80ADC0A0000800091DCEBCD40F8DF -:1019600020AD1897F8F801185808C06030070E9C91 -:101970002F6DE3CD80F8F8F800D470385808CF7098 -:10198000F8FC00C41A9B1A935D181895CF05EEF861 -:1019900001185808C431EEF800D470285808CE70E9 -:1019A000FAC4FFE0EEFC00C4089B5D18CE05EEFC17 -:1019B000009078465806C301EEF800D45808C2C01B -:1019C000700C49BBF01F001BEFFC0024F9B60001AE -:1019D000EFFC102478075807C111CCAB5806C0B0F3 -:1019E0006E885808CC50EECBFFE8306A089CF01F98 -:1019F0000012CBE06E075807CBB0EEF80194580800 -:101A0000CFA16E581035CEB16E4B0A9A1A9CF01FBA -:101A1000000ACE70CE4B3006CDEBFAC4FFE0306A40 -:101A2000EECBFF64089CF01F0005CC2B8003C65C46 -:101A3000800091A08000917C800091DCD401F01F97 -:101A40000002D8028002195CD42120AD3008FB5876 -:101A50000024508816961897F6F801845818C0404C -:101A60003FFC2F6DD82277185808CFB0F8F500B892 -:101A70005885C2205905CF512DCB0A9A1A9CF01FC8 -:101A800000171A940A9A303BEEFE00D47C5858088E -:101A9000CE801ADA1AD43009EF490104EEFC00C4F2 -:101AA00030681AD8FACAFFD430181ADA48CA7C56F5 -:101AB0005D162FCDCD7B2DCB318A1A9CF01F0007F0 -:101AC0000A9AECCBFFCCFACCFFE8F01F00041A9482 -:101AD000320A302BCDAB0000800091DC80039C38B3 -:101AE000D42118951696F01F000F1897C05078381B -:101AF0002FF89938D82A310CF01F000B1894C0F039 -:101B00000C9B306A2FCCF01F000930188938EAF995 -:101B100001088909EB4401080E9CD822DC2A000048 -:101B2000800218F880028F24800091DCEBCD40FC0D -:101B3000EDD9C010407218941693ECCCFFFC1495AC -:101B4000910CF01F00161897C190E8F800907039BA -:101B5000EC081608B893B889B8B6B8A85805C100FB -:101B60000C9A0A9BF8C6FFFC0C9CF01F000D0E9C03 -:101B70005802E5F61A00E3CD80FCE3CD80FC0C9A18 -:101B80000A9BF8C6FFFC0C9CF01F00060E9C580236 -:101B9000E5F61A00E3CD80FC80009200800091DC25 -:101BA000800091D0D401401E5C791ADEF01F000243 -:101BB0002FFDD80280021B2CEBCD40F8203DF8F819 -:101BC00000BC1493129458485F0A58285F0918976C -:101BD00016961449C0603FF70E9C2FDDE3CD80F8C8 -:101BE000F8FC00DCF01F002BC0305816CF50EEC5BB -:101BF000FF64306A4A8B0A9CF01F0028C0D1EEF8BF -:101C000000D470285808C060EEFC00C41A9B5D1810 -:101C1000C370EEC5FF043008F7D6C0081AD8F3D455 -:101C2000C010FAC8FFF4069A0E9CF01F001D2FFD8D -:101C30001896580CCD1040296E2C580CC1001298E3 -:101C40000A9B0C99E06A888EF01F001618970C9C6E -:101C5000F01F00150E9C2FDDE3CD80F8EEF800D4C8 -:101C600071845804C0B01298EEFC00C40A9B0C9911 -:101C7000E06A888E5D141897CEBB3FF7CE9B306A22 -:101C8000485B1A9CF01F0005CC501A95CC5B0000F5 -:101C900080028F78800217C88000917C80021B2C04 -:101CA00080028154800091E8EBCD40C0189EEFDAAD -:101CB000C010782C580CC0600E9AF01F0009E3CDBC -:101CC00080C0FCFA00D475865806C0700E9AFCFCE1 -:101CD00000C45D16E3CD80C0E3CFC0C08002815454 -:101CE000D421497A1894301BF01F0016300A089B43 -:101CF000495CE8C5FF64F01F0015E8F701085807C4 -:101D0000C1C03006C0680E966E0C580CC1601897A2 -:101D1000306A0A9BEECCFFFCF01F000DCF51580635 -:101D2000EFF80000E9F80A42EFF81000EDF81A00A9 -:101D30000E9CF01F0008D822D82200008003C66441 -:101D400080023A1A80023058800274008000917C30 -:101D5000800091E8D401F01F0002D80280021CE04C -:101D6000EBCD408048FA1897301BF01F000FEEF8BB -:101D700000BC5818C0F00E9B300A48CCF01F000C75 -:101D80000E9CF01F000C0E9C307BF01F000BE3CD6F -:101D900080800E9C305BF01F0008E3CD8080000047 -:101DA0008003C68880023A1A8002360080027400DE -:101DB00080021CE0800217D0EBCD4040486A1896A4 -:101DC000301BF01F00060C9B300A485CF01F00051A -:101DD000E3CD80408003C6A880023A1A8002360014 -:101DE00080027400EBCD40F81894F8FC00CC580C3D -:101DF000C360E8F800D05808E08A00321897E8C3BA -:101E0000FF643005C0A8580AC200EEC7FF64E8F8B6 -:101E100000D00A38E08A00242FF5E8F600B0306AD6 -:101E2000069B0E9CF01F0015CF115806C0E06C5A9F -:101E30006EA81438CE91EECCFFFA6C4BF01F000F59 -:101E4000C0406C5A580ACE215807C0906F5AEECB4A -:101E5000FFD4E8FC00DCF01F000AC0403FFCE3CDEB -:101E600080F8EECBFFA8E8FC00DCEEFA0080F01F63 -:101E70000005CF60CF4B00008000917C8002B58CC4 -:101E80008002B52CD4211895E06C009CF01F001B3B -:101E90001897C310EAF401185804C2A1EAF800D454 -:101EA00070C85808C250189B301AEAFC00C45D186C -:101EB0001898C1E50E9C3016E06B009CF0060D46AC -:101EC000EC0B024BF01F000E58065F09580C5F1810 -:101ED0001248E8081800F8071710EAFC00CCF01FB9 -:101EE0000009089CEB4600D0EB4700CCD8220E9CA2 -:101EF000F01F0004DC2A000080009200800091F4B2 -:101F0000800091E8EBCD40801897F01F0008C031A9 -:101F1000E3CD80800E9CF01F0006C0550E9CF01F84 -:101F20000003CF7BE3CFC08080021DE480021E84CB -:101F3000EBCD40FE208D18961697149512921091B5 -:101F4000580BC580F6FB0080580BC0E16F5B580B47 -:101F5000C3210C9CFEFA02E4303BF01F00B93FFCA9 -:101F60002F8DE3CD80FE7568EDB80001CF011A9A80 -:101F7000EECCFFA8F01F00B3CEA16B484029126839 -:101F8000CE606B3840191268CE206B584039126809 -:101F9000CDE0FEFA02B2301B0C9CF01F00A9EEC48B -:101FA000FFD4302A303BECFC00DCF01F00A8089C7A -:101FB0006F5AC4386B68EDB80000CCC1EEC4FFD4D2 -:101FC0001A9A089CF01F009FCC516B484029126858 -:101FD000CC106B3840191268CBD06B58403912685E -:101FE000CB90FEFA026A301B0C9CF01F0095301A51 -:101FF000CDAB7568E21800021A93F9B40102F9B486 -:102000000001F8FC00DC1A9BF01F0092C1F05BECB1 -:10201000C4001A9C320A300BF01F008F6B48502806 -:102020006B3950196B585038089A303BECFC00DC87 -:10203000F01F0086300C189A189BECFC00DCF01F97 -:102040000087C3602F8DE3CFC0FE402A6B49F3EABF -:102050000008C0D0401A6B39F3EA0008C110403ABA -:102060006B59F3EA0008C1B04004CDFB1AD9302BFC -:102070001ADA0C9C4FAAF01F00722FEDCCBB1AD9B4 -:10208000302B1ADA0C9C4F7AF01F006D2FEDCC2B01 -:102090004F5A302B0C9CF01F006ACBCB1AD9302B37 -:1020A0001ADA0C9C4F1AF01F00662FEDCB3B580735 -:1020B000EE0B1700F60A1700F9B80158EFD8E10B3C -:1020C000EFFA1020ECFC00DCF01F0069CBC16B487C -:1020D0004029F1E90009EDB90004C5D0EDB90003CC -:1020E000C750EDB90002E081009430484E1AED4827 -:1020F00000B8301B0C9CF01F00526B384019F1E9FE -:102100000009EDB90004C500EDB90003C7513088DE -:102110004D9AED4800B4301B0C9CF01F00496B58E1 -:102120004039F1E90009EDB90000E080007FEDB928 -:102130000001C55130284D1AED4800BC301B0C9CE5 -:10214000F01F003FECFA00BC306BECFC00DCF01F31 -:10215000003FECFA00B4304BECFC00DCF01F003B1D -:10216000ECFA00B8305BECFC00DCF01F0038029A9F -:10217000049BECFC00DCF01F00421894FE91FF640D -:102180006B57E2170002C191ECFC00DCF01F003D30 -:102190000E9CCE7A31084BCAED4800B8301B0C9C1F -:1021A000F01F0027CABB31084B8AED4800B4301B32 -:1021B0000C9CF01F0023CB4BECFC00DCEACBFFDCDB -:1021C000320AF01F0033089CCCCA30884B1AED4805 -:1021D00000B8301B0C9CF01F001AC90BEDB90004AD -:1021E000FE91FF3231084ACAED4800BC301B0C9CFE -:1021F000F01F0013CA8BEDB90000FE91FF25301BC4 -:102200004A6AED4B00B40C9CF01F000DC89BEDB961 -:102210000001FE91FF1930284A1AED4800B8301B22 -:102220000C9CF01F0007C6AB301B49EAED4B00BC0D -:102230000C9CF01F0003C87B8003C8EC80023A1A94 -:102240008002BD688003C6C08002B4D48003C6E0AB -:102250008002C04C800091D08002B58C8003C734CE -:102260008003C7788003C7008003C7BC8002B52CF9 -:102270008003C8288003C86C8003C8B08002B64CB5 -:102280008002B9EC8003C8008003C8588002B91CE2 -:102290008003C8148003C8CC8003C8808003C84072 -:1022A0008003C894EBCD40C07758EDB80003F9B86F -:1022B0000008F9F80A2FF9B80104F9F81A2F18974D -:1022C000300A1696F8FC00DC149BF01F0025300A3B -:1022D000EEFC00DC149BF01F0023300AEEFC00DC57 -:1022E000149BF01F002130183009ECCBFECCEF48D6 -:1022F00000B8EF4800B4EF4900C02FF976085858ED -:10230000E08B00225808C2512FCB5849CF71EEFA0A -:1023100000BC306BEEFC00DCF01F0014EEFA00B4E1 -:10232000304BEEFC00DCF01F0011EEFA00B8305B21 -:10233000EEFC00DCF01F000DEEFC00DCF01F000CDA -:10234000E3CD80C03048EF4800B8EF4800B4CE0B72 -:102350003028EF4800B8EF4800B4CDAB8002B58C10 -:102360008002B52C8002B5EC8002B4D480028F804C -:10237000EBCD40E0205D1897F8F600B0F8F800BC0F -:102380005828C57059085F0958485F081248C2901C -:10239000302BEEFC00E0F01F002F314A300B1A9C6E -:1023A000F01F002D1A95EEFA00BC588AC200EEF814 -:1023B00000905808C03070785028149958895F18D8 -:1023C00058195F191069ECF8017CEEFC00E01A9ACC -:1023D0000C9B50495038F01F00212FBDE3CD80E009 -:1023E000300BEEFC00E0F01F001BCD8B30085018C6 -:1023F000301B500BECF900F0F3EB0008FBFB1A016B -:10240000EDB90001C120EEF800905808C1F0EEFCD3 -:1024100000D4580CCD10780C491BF01F0012FBFCA7 -:102420000A01EEFA00BCCC4B4018A1B85018CECB34 -:10243000300BF8FC00E0F01F000C300BEEFC00E06D -:10244000F01F000AEEF800BCC9EB3089CB8B00000E -:1024500080026178800091D08002581C8003C65CA5 -:10246000800091A0800261A48002618CEBCD40E0ED -:10247000189716951496F8F800905808C0D0704830 -:102480005808C0A1F8FC00D4580CC060780C48EB88 -:10249000F01F000EC1501AD648DA1AD5301B0E9C18 -:1024A000F01F000C300A0E9B48BCF01F000C0E9968 -:1024B0000C9B0A9C3008488AF01F00092FEDE3CDE1 -:1024C00080E000008003C65C800091A08003C960AA -:1024D00080023A1A800230588002740080027474BC -:1024E000D4211295169614941897F8F900BC5849FF -:1024F000C1C0F8FA00F4580AC10158895F08581998 -:102500005F0B104BF40B1800F9BB000AF9BB014636 -:10251000F01F0019EEFA00F4F4C8FFFFEF4800F4D2 -:10252000EEF900945809C020D822306A0C9BEECCFA -:10253000FF04F01F0012EEF800BC5828C111EEF89D -:1025400000D471585808C040EEFC00C45D180A99C8 -:10255000089A0C9BEEFC00DCF01F0009D8220A99B7 -:10256000089A0C9BEEFC00E0F01F0006FE99FFDECF -:10257000CE7B00008002246C800091DC8002C3CC02 -:10258000800261FCEBCD406C1ADA18951ADB1692CA -:102590001493301B48AAF01F000B48B6300A0A9B60 -:1025A0000C9CF01F000A0A990C9A069B049C3008A8 -:1025B000F01F00072FEDE3CD806C00008003C99071 -:1025C00080023A1A8002360080027400800274741D -:1025D000D401F01F0002D80280022584EBCD40C058 -:1025E000189E1497109CFCF800BC5888C240580BE9 -:1025F000C1A0FCCAFF64FCF600D46C585808C19016 -:102600001ADC16981AD9300BFCFC00C41ADBFD4BFF -:102610000104490E0E991ADE301B6C565D162FCD43 -:10262000E3CD80C0FCF600D448BA6C585808CE916F -:10263000E3CFC0C0585CF9B80002F9B80104580BE8 -:10264000C040FD4800B4CD6BFD4800B8482ACD4BD2 -:1026500080037E2080039C38EBCD40F8FACEFFE863 -:1026600018967C35F8F400D47C037C17685C7C2ECB -:10267000580CC0F01AD51ADE300E1AD71AD3ED4E08 -:102680000104ECFC00C468565D162FCDE3CD80F844 -:10269000E3CFC0F8D42118951694F8F70104580731 -:1026A000C020D822F8F900D472585808C4C01AD7EC -:1026B000F94701041AD70E981AD74B6A1AD70E9BFE -:1026C0007256F8FC00C40E995D16EAF900D42FCDBD -:1026D00072585808C3801AD7EB4701041AD70E98CE -:1026E0001AD74ACA1AD70E9B7256EAFC00C4301990 -:1026F0005D16EAF900D42FCD72585808C2401AD797 -:10270000EB4701041AD70E981AD74A2A1AD70E9BFC -:102710007256EAFC00C430295D16EAF900D42FCDC8 -:1027200072585808C1001AD7EB4701041AD70E98FF -:102730001AD7498A1AD70E9B7256EAFC00C4303960 -:102740005D162FCD5804C200EAFA00D47458580818 -:10275000C12030091AD91AD9EB4901041AD91298A3 -:102760001AD9129B7456EAFC00C4089A5D16EAFA5C -:1027700000D42FCD75A85808C070089B3019300AB6 -:10278000EAFC00C45D183018EB480104D8220000B0 -:1027900080039C38D421204DF8F900D41897169561 -:1027A00073885808C2C11094F8C6FFEAC1C8EEFC8D -:1027B00000C45D1B1AD4189B0E984C19E06A888ED1 -:1027C0000C9CF01F00408F2C2FFD580CC111580598 -:1027D000C140189B305CF01F003CEEF900D47388B8 -:1027E0005808C0D1737B580BCE31169CCE4BEECB24 -:1027F000FFF0F01F0036C1302FCDDC2A7378580867 -:10280000C0B0EEFC00C45D18C070189B306AEECCFE -:10281000FFF0F01F002F6E2C580CCEA1EF39007A7C -:102820003008F0091800C3A1EEF800D47048580829 -:10283000C100301BEEFC00C45D18C0B4EEF800D43B -:1028400071485808C0601A9BEEFC00C45D18C214A1 -:10285000300B0E9CF01F001FEEF800D47099580941 -:10286000C070300BEEFC00C45D19EEF800D470A807 -:102870005808C050301BEEFC00C45D183018EF48FB -:1028800000C84959300C72082FF893082FCDD82270 -:102890004038F1D8C002CDD0CB0B300848891AD8C7 -:1028A000E06A888E0E98EECBFFF0EECCFF86F01F2C -:1028B00000058F3C2FFD580CCB81C9FB800224E022 -:1028C0008002819C80028F1C800281E4800091DC68 -:1028D0008002269400007A6CEBCD40E018971695A4 -:1028E000300BF01F001DEEC6FF64306A49BB0C9C24 -:1028F000F01F001BC2E0EEF801185808C1F00C9B55 -:102900000E9CF01F00183006EEFC00DC0C9BEF461E -:1029100000B0F01F00150C9A0C9BEEFC00E0F01FBD -:1029200000130C9BEEFC00E0F01F00110C9BEEFC72 -:1029300000E0F01F0010E3CD80E0EEF800D470D886 -:102940005808CDE00A9A0C9BEEFC00C45D18CD8BB4 -:102950001896CD6B800217D0800217C88000917C3A -:10296000800226948002B9D48002581C800261E85B -:10297000800261D4D401F01F0002D802800228D85E -:10298000EBCD40C01897F8F800C45808C230303B6F -:10299000F01F003DEEF800D470495809C070300BAC -:1029A000EEFC00C45D19EEF800D470A95809C0709F -:1029B000300BEEFC00C45D19EEF800D47098580896 -:1029C000C050300BEEFC00C45D18300B0E9CF01FA5 -:1029D000002F6E2C3006F01F002E8F266E3C580CF8 -:1029E000C040F01F002B8F36EEF800E45808F9B80D -:1029F0000100EFF81A39EEFC0090580CC060F01F8F -:102A000000253008EF480090EEFC008CF01F0022FB -:102A10003006EEFC00DC0C9BEF46008CF01F001F24 -:102A2000EEFC00E0F01F001EEEFC00DCEF4600E0D4 -:102A3000F01F001CEEFC00DCF01F001BEEFC00DCB5 -:102A4000F01F001A0E9CEF4600DCF01F0019EEFC90 -:102A500000CCF01F00110E9CEF4600D0EF4600CCDA -:102A6000F01F00140E9CF01F0014EEFC00C4580C64 -:102A7000C070EEF800D470785808C0205D18E3CD1F -:102A800080C00000800228D88002269480028174D1 -:102A9000800242B4800091E88002B4CC800256ECFF -:102AA00080029438800294088002C0788002189CCA -:102AB00080021DB880021CE0EBCD4080169778099B -:102AC0001639C0F1761899080E9CF01F000A0E9C6A -:102AD000F01F0009E3CF808072180E38C060109993 -:102AE0005809CFB1E3CFC0806E189318CEEB000029 -:102AF00080022980800091E8EBCD40801897580C27 -:102B0000C051C1980E9CF01F000D6E0B580BCFB139 -:102B1000F01F000BF01F000B6E4C580CC060F01F34 -:102B2000000A6E4CF01F00096E8CF01F00080E9C0E -:102B3000F01F0006E3CD808080022AB88002724C2C -:102B40008002728480028F20800091E8EBCD40C02B -:102B50001897580CC05130060C9CE3CD80C0F01F74 -:102B60000021CFA1334CF01F00201896CF606E08D3 -:102B70006E19991899296E286E89993899996E3C21 -:102B8000580CC040F01F00198D4C6E7C580CC04092 -:102B9000F01F00168D8C6E498D59495891096E5A57 -:102BA0008D6A4948910A49486E698D7991090C9C52 -:102BB000F01F0012C11130196C988DB95808EDF949 -:102BC0001A0C6C285808CC906C185808CC606C4CC7 -:102BD000F01F000BCC200C9C3006F01F000ACBDB52 -:102BE0008002720880028F24800091940000046C9F -:102BF00000007AA400007AA0800275F880028F1E7F -:102C000080022AF8D431204D580C5F08580B5F0918 -:102C1000189316971248C05030050A9C2FCDD83211 -:102C2000E06C011CF01F00C01895CF803018F948E7 -:102C3000010CFEF102F66E22620B580BC100580225 -:102C4000E0800144E2C4FFFC3006760B049CF01FD8 -:102C500000B8C0C02FF6090B580BCF810A9CF01F9B -:102C600000B50A9CF01F00B4CD8BE2060328EB48A8 -:102C700000D46E0C580CE0800122F01F00B0EB4C29 -:102C8000008CF01F00AFEB4C0090CE906E185808EF -:102C9000C0A0785CF01F00A86E1CEAF60090F01F40 -:102CA00000A78D5C6E385808C0C0EAF8009070BC70 -:102CB000F01F00A16E3CEAF60090F01F00A08DBC52 -:102CC000EAF800905808CCB06E4C580CCC80F01F3D -:102CD000009DE04C0063FE9BFFC3EAC1FFEA364A59 -:102CE0006E4B029CF01F00986E5C580CE08100F95E -:102CF0006620340CF01F008C1897CB10FEF8024CA5 -:102D00008F78FEF8024AFEF9024A8F98FEF80248D0 -:102D10008F058F458F658F898FC83006FEF4023C82 -:102D20008F168FA4FEF202388FB2EAF900907288F3 -:102D30008FD8EAF9009072988FE8EAF9009072A8AB -:102D40008FF8F01F0088EB4C00E0E08000C20C9B85 -:102D5000F01F00850C9BEAFC00E0F01F0084EAF8FD -:102D600000D470685808E08000A7029B0A9C5D1898 -:102D7000EB4C00C4FE90FF74EAF8009070BBEAF8D8 -:102D800000D470895809C0605D19FE95FF69EAF8A2 -:102D900000D471685808C0F0EAFC00C45D181897A8 -:102DA000C0A0029BF01F0062C0600E9B364A029CCE -:102DB000F01F006534CCF01F005CFE90FF514EC840 -:102DC0004EC9991899294EC84EC9993899494EC883 -:102DD0004EC9995899694EC84EC9997899894EC873 -:102DE0004EC9999899A94EC84EC999B899D94EC853 -:102DF0004EC999C899E94EC84EC9F9440040F942F4 -:102E00000044990599F8F9490048F01F0069EB4C16 -:102E100000DCFE90FF25EB39007A3008F00918003D -:102E2000C5C1300A029BF01F0063EAF80090EAFC7B -:102E300000DC707BF01F0060EAFB00E0EAFC00DCD5 -:102E4000F01F005EEAFA009074C85808C60174D8F2 -:102E50005808C52174EA580AC080302BEAFC00DC0F -:102E6000F01F0057FE91FEFC009B0A9CF01F0055CE -:102E7000FE95FEF6EACBFFF0EAFC00DCF01F005204 -:102E80003FF8EB4800E4EAF900D473485808C0D092 -:102E90001A9BEAFC00C45D18C0814038EDB80002FE -:102EA000C0413018EB4801188B0366088B18870562 -:102EB000FE9FFEB5EB4800C4CD2A6E3B6E1CF01F92 -:102EC0000043EB4C0090CFDAF94B00D4CD3A0E9C86 -:102ED000F01F0019FE9FFEC4EACAFF86CA4BF01F0E -:102EE000001958FCFE9BFEBC6E5B310AEACCFF86E3 -:102EF000F01F0015CFEA109A301BEAFC00DCF01F2F -:102F00000030FE91FEADEAFA0090CA5B109A300BD9 -:102F1000EAFC00DCF01F002AFE91FEA2EAFA009013 -:102F2000C97B000080028F2400000470800091A003 -:102F300080022980800091E88000919480021348EB -:102F4000800091B8800091AC80021D60800225DC79 -:102F500080021BB8800218C8800218E8800218D8C6 -:102F60008002609C800261E8800261D48002184483 -:102F700080021850800225D0800229748002304CD3 -:102F8000800226588002360080021A3C80021928EE -:102F900080021CA880021F0480021BA480021D5412 -:102FA0008002186E80021884800218568002C0DCED -:102FB0008002B4C08002B4B88002B4CC8002B4D421 -:102FC000800227948002B90480023B4CEBCD40E0A4 -:102FD000306A18971695F8C6FF64497B0C9CF01F61 -:102FE0000017C270EEF801185808C1800C9B0E9CA7 -:102FF000F01F00130E9CF01F00133006EEFC00DCE7 -:103000000C9BEF4600B0F01F00100C9A0C9BEEFCDE -:1030100000E0F01F000EE3CD80E0EEF800D470E891 -:103020005808CE500A9A0C9BEEFC00C45D18CDFBEC -:103030001896CDDB800217C88000917C8002269410 -:10304000800276648002B9D48002581CD401F01F3B -:103050000002D80280022FCCEBCD40C0499BF8C7BC -:10306000FF641896306A0E9CF01F0017EDFB189C49 -:10307000E06800A2EDD8E007EDFB08A20FD81AD84F -:103080000FC91AD90FB81AD80FA91AD90F9848FA28 -:103090001AD80C9C1ADB302BF01F000D0E9B0C9CD9 -:1030A000F01F000CECFC00DCF01F000B303B0C9C14 -:1030B000F01F000A30182FADED4800A8E3CD80C006 -:1030C000800217C88000917C8003C9B880023A1A38 -:1030D00080021AE08002BA1C80022FCCD431FACDD3 -:1030E00000D03007F94700A8189516941491580B92 -:1030F000E0800217F6F60084E8CCFFFA76ABF01F0A -:10310000012A1AD61ADC09D81AD809C91AD909B855 -:103110001AD809A91AD909981AD809890A9C1AD95A -:10312000FEFA0488302BF01F01220E9B306A2F8D8F -:10313000EACCFF64F01F011F306A089BEACCFF5EF7 -:10314000F01F011D0A9CF01F011D300AEAFC00DC83 -:10315000149BF01F011B635AEDBA0003C061E2F833 -:1031600001745808E08100B1301063795809C0E05B -:10317000E1D9C0011298EDB90001E08000A4EDB9D9 -:103180000002F9B80004E1D8E030EAF800D4710890 -:103190005808C060009BEAFC00C45D18635A5804DC -:1031A000C07069585808C5A0F1DAC002C6E114978A -:1031B000E2170013C5B1029B0A9CF01F0102FAC876 -:1031C000FF9453375028089B0A9CF01F00FFEAF831 -:1031D00000B45828E08001BAE089007F5818E080E8 -:1031E000017130285038EAF800B85828C7F058283C -:1031F000E08900805818E080016230285048EAF9E0 -:1032000000BC58495F0B58895F08F7E81008C78071 -:10321000E2C9FECCE2C8FF0C16963007EC1600019E -:103220005019500812931092505766095809E081BE -:1032300001122FF72FC32F025847CF81EAF900BCA4 -:103240005889C671E2F800F04059F1D8C002F3E89D -:103250001008E08101311096C5F8E8F800805808A0 -:10326000CA70F1DAC002CA40C1083509FAC8FF3095 -:1032700010D9029AFAC9FF94300B50290A9CF01F0A -:1032800000D3CA202CCDD832E2F801485808E0819A -:10329000010FEAF900B0089A300BEAFC00DCF01FDD -:1032A00000CCE080017A3509FAC8FF3010D9029AC3 -:1032B000FAC9FF94089B50290A9CF01F00C4C8401B -:1032C000CE2BA1B0C5DBE2F801785808F9B00004B4 -:1032D000F9B00105C4BB5848C8605908C831303935 -:1032E0005039EAF800B85828C83130195049C88B0D -:1032F0005848C8505908C82130395049C81B3008AF -:103300005058E2C8FECC30165018E2C8FF0C5008E6 -:103310005909E080011FEAF800D470A85808C0508D -:103320000C9BEAFC00C45D18303B0A9CF01F00A90E -:10333000354AFAC7FFE8300B0E9CF01F009E580478 -:10334000E0800126E8F8008450645098E8C8FFFA4D -:10335000507868A95089E2FA0184581AE080009EEA -:103360004029403850A950C84049433850D950B836 -:10337000EAF800BC5848E08000E7E0890088581867 -:10338000E08000A43018510A4014400350E850F087 -:10339000FACAFFAC0899069BFACCFF9C7208580841 -:1033A000C040F54BFFF0720814A82FC92F0B183A34 -:1033B000CF61E2F801445198EAF601185806E0801E -:1033C0000089FEFA0212302B0A9CF01F0079301996 -:1033D000EAF800BC5908E080008F5809E0800098A6 -:1033E000305B300A0A9CF01F007D40585808C1C06D -:1033F000EAF800D471485808C170FACBFF44EAFCDF -:1034000000C45D18C1114328EDB80001C0D1189760 -:103410004F30189268095809E08100A12FF72FC496 -:103420002F035847CF81EAF800B05808C070103118 -:10343000C050EAFC00E0F01F006BEAFC00DC029BDD -:10344000EB4100B0F01F00680A9CF01F00682CCD13 -:10345000D832EAFB00D4E2FA014476585808C13069 -:103460001AD91AD23009EB4901041AD94DC90E3ABA -:103470005F081AD94DEA76560E99301BEAFC00C453 -:103480005D162FCD30165056CD5A5888C2005908B7 -:10349000FE91FF7A3048C78BE2F901A45809FE9AE1 -:1034A000FF6140985808FBF90A09C5BB6368F1D869 -:1034B000C021CF0A50375047C2FB30085048CA0AD3 -:1034C00030085038FE9FFE913008C5EB3038C5CB30 -:1034D000EAF800D470F85808FE90FF750E9BEAFCDD -:1034E00000C45D18FE95FF6F0C99EAF800BC5908FE -:1034F000FE91FF75029B0A9CF01F003E0A9CF01F84 -:10350000003E307B0A9CF01F0033C70BEAF80090A6 -:1035100070495819F9BB000AF9BB013CC63B745B02 -:10352000744CF01F00214B5A1ADC302B0A9CF01F00 -:103530000020306A089BEACCFF5EF01F001E2FFDC2 -:10354000FE9FFE023028C20B30195039FE9FFE4DFF -:10355000029B0A9CF01F0027CDFAEAFB00D4E2FA96 -:10356000014476585808FE90FF5B1AD91AD3EB42F3 -:1035700001041AD20E3A5F081AD00E99765649CA3B -:10358000301BEAFC00C45D162FCDC49B6248507806 -:1035900062595089CE1A301BEAFC00E0F01F001877 -:1035A000FE9FFE8380023A1C8003C9F880023A1A0B -:1035B000800091D0800091DC80021DB88002B5ECC3 -:1035C000800222A48002269480021F308002938011 -:1035D000800217D08003CA6C8002246C80037E2096 -:1035E000800257488002B9D48002237080039C383F -:1035F00080021A4880021CE08003CA488002559667 -:10360000EBCD40C021AD1897F8F800AC5808C68142 -:10361000F8F6010CEEFB009076095809C061C8F875 -:1036200072095809E080008CF2F801945808CF9193 -:103630003008EF48010C76495809C670EEFC00D4FA -:10364000580CC0E04DAB780CF01F005AEFF8002486 -:10365000F1FC0A04EEFB009076485808C560EEF8CD -:1036600000E85818E088008D760AEEF800C858186F -:10367000C3F0580AC090103AC041C3981438C370C0 -:10368000740A580ACFC15826C04076485828C690B8 -:10369000580AEFFA1A32F9B80001EFF80A32EEF9D7 -:1036A00001105809C04176485818C710EEF80118A3 -:1036B0005808C4F1580AF40B1700F60A1700F5FB76 -:1036C0001004F5FA1005EEF800D470B85808C410CC -:1036D000EEFC00C45D18C3D12E6DE3CD80C0F8F6BA -:1036E000010C5806C9812E6DE3CD80C0740A580ABA -:1036F000CCB0F4F801945808CFA175885808CC4193 -:1037000076485828CF41CC0B0E9CF01F002BCE5092 -:10371000EEF800B05808EFFC0A2C0E9CF01F0027B2 -:10372000300B1A9C368AF01F00261A961A9A0E9CA5 -:10373000300BF01F00242E6DE3CD80C05806FE91A3 -:10374000FF790E9C301BF01F00202E6DE3CD80C052 -:103750000E9C300A30ABF01F001D2E6DE3CD80C0F3 -:10376000580AC1D074085808EFFA1A32F9B80001A3 -:10377000EFF80A320E9C300BF01F0015CAEB302B0D -:103780000E9CF01F0011EEFB0090C6FBEF480110ED -:10379000129A0E9C303BF01F000BC9FB30180E9C98 -:1037A000EF4800C8149BF01F0009C97B8003C65C6A -:1037B000800091A08002195C80022370800091D06B -:1037C0008002792C800217D080022584800230DCB0 -:1037D0004848300A48499118910A930A5EFF000050 -:1037E00000007A7000007A78EBCD40681695189347 -:1037F000F6CCFFEDF01F0022314A1896300BF01F77 -:1038000000210A9A8D15ECCCFFF0069BF01F001EDC -:1038100049EAF5090042AC09F50800422FF8F558CD -:10382000004249B530088D286A198D3993062F86D4 -:103830008B1649866C08F0C9FFFF8D095909E0888D -:1038400000180A936A0C782A580AF9F80003E7F876 -:103850000A01F9F81003F5F81A0320197838910ACB -:103860008D09F01F000D6C095909FE9BFFED300A10 -:10387000326C149BF01F0009E3CF90688000920027 -:10388000800091D0800091DC000087F400007A7005 -:1038900000007A78800091E880014658EBCD40E046 -:1038A00030961697305E300B33A51989F2C8003078 -:1038B000EC081800E08B0019F2CA0030580AC2C5A3 -:1038C0001999F2C80030EC081800E08B0017F2C814 -:1038D00000305808C215F1EA1048EE0B0B08585B8F -:1038E000C291E3CF80E0F2C80061FC081800E08BD1 -:1038F000000EF2CA0057CE3BF2C80061FC08180067 -:10390000E08B000DF2C80057CE5BF2C80041FC0806 -:103910001800E088000DE3CFC0E0F2C80041FC08C9 -:103920001800FE9BFFFAF2C80037CD4BF2CA0037F1 -:10393000CC6B19A8EA081800CEF12FFB586BCD20EC -:103940002FDCCB4BEBCD40E016961497580AC4C041 -:10395000300B3095305EC1B8F2CA0030580AC365EA -:103960001999F2C80030EA081800E08B0021F2C86B -:1039700000305808C2B5F1EA10485808C275EC0B7F -:103980000B082FFB1637E08800302FEC1989F2C89E -:103990000030EA081800FE98FFE1F2C80061FC0858 -:1039A0001800E08B000EF2CA0057CD9BF2C80061F0 -:1039B000FC081800E08B000DF2C80057CDBBF2C820 -:1039C0000041FC081800E088000DE3CFC0E0F2C819 -:1039D0000041FC081800FE9BFFFAF2C80037CCAB90 -:1039E000F2CA0037CBCBE3CF80E0F6CA00015E6CB1 -:1039F000F80A000913882FF85C58B2885E1CF6C8D4 -:103A00000002100CC08819882FF85C58B888201C58 -:103A100058085E1C201ACF875EFC5EFCEBCD40C0D0 -:103A200049071696189BE0460020F9B60B200E9C1D -:103A30000C9AF01F000D3008EE060B080F8858088E -:103A4000C0D00E9C35E935FA2208F2081800F9FAC0 -:103A5000BE002FFC19885808CF81482CE3CD80C0C8 -:103A600000007A7C800091DCEBCD40FE189114922E -:103A7000169C1293580BC2A0E20B00045809C20016 -:103A800002973006C0881835E08A001418070C33F6 -:103A9000E0880018E4060708E80701051AD80E9C1C -:103AA00048CA0A9B2FF6F01F000C2FFD580CCEC4FD -:103AB0003008EE01010CE968FFFFE3CD80FE0297BC -:103AC0003008EE01010CE968FFFFE3CD80FE000045 -:103AD0008003DA3080009148580CC140F8FC00D0D7 -:103AE000580CC1002FCCF8F8FFFC5808C0417809E9 -:103AF0005809C0901638C0302F8CCF6B7808143816 -:103B0000CFC15EFF5EF9780C580C5E0C7828163831 -:103B1000C0515EFC782816385E0C780C580CCFB17A -:103B20005EFC30383189F94800F0F9480058F9480E -:103B3000005431E8F949004CF94800503FF9E06879 -:103B40000576F949017CF948019C5EFCEBCD40E02B -:103B500018961695344CF01F000C1897C1103018A9 -:103B60009978993899485806C0500C9CF01F000766 -:103B70008F5C5805C0500A9CF01F00048FBC0E9C3F -:103B8000E3CD80E080028F2480009194EBCD40C093 -:103B9000169679075807C051C0C86E375807C090AD -:103BA0006E0C0C9BF01F0004CF910E9CE3CD80C0E7 -:103BB000E3CF80C0800091A0EBCD40FC1695189417 -:103BC000580C5F0B58055F081493104B1292C040BD -:103BD0003FFCE3CD80FC580ACFC048E73006C06800 -:103BE0002FF62E07E0460038CF406E0B0A9CF01FE0 -:103BF000000ACF710699049A089B0E9C6E185D18F6 -:103C0000F9BC01FFF9BC0000E0460038CE31CE1B04 -:103C10008003CC00800091A0EBCD40801897580C19 -:103C2000C0A0780CF01F00056E1CF01F00040E9C55 -:103C3000F01F0002E3CD8080800091E8D421189429 -:103C4000169579075807C1A03006C0680E966E3CDD -:103C5000580CC14018970A9B6E0CF01F0009CF71D9 -:103C60005806EFF81003EDF81A03EFF80003E9F82F -:103C70000A100E9CF01F0003D82ADC2A800091A0B5 -:103C800080023C18EBCD406016961895760BF01F1D -:103C900000056B088D38EB460040E3CD80600000E6 -:103CA00080023C3CD431202D500B129CF01F003C74 -:103CB0001890C730198A580AC670300118965011EA -:103CC000320230930294C0382FF60D8AE40A1800AD -:103CD0005F08E60A18005F091248E8081800CF518B -:103CE000580AC2C00D87E40718005F18E6071800DD -:103CF0005F191268E8081800C4505807C4300C95C2 -:103D0000C0385807C0D02FF50B87E40718005F189C -:103D1000E60718005F191268E8081800CF31AA8476 -:103D20004A0B0C9CF01F0020C171A1A15807C06074 -:103D3000EAC6FFFF0D8A580ACCA1009CF01F001BA9 -:103D40005801C2404008F141005C40195809C25175 -:103D5000129C2FEDD832496B0C9CF01F0013C03120 -:103D6000A1B1CE5B0C9C493BF01F000FF9B80004D9 -:103D7000E3D8E031FBF91001F7B901FFFBF91A01B3 -:103D8000CD6B0C95CCDBF01F0009300840093FFCDF -:103D9000F348005C2FEDD8322FEDDC3A800091948F -:103DA0008003D304800091A0800091E88003D30CAD -:103DB0008003D314EBCD40FE169CF01F00451891F4 -:103DC000C6B0198A580AC7A0189630023203309438 -:103DD000E80A18005F08E60A18005F091049300871 -:103DE000F0091800C0E0109B2FF60D8AE60A1800B3 -:103DF0005F08E80A18005F091248F6081800CF515A -:103E0000580AC4500D87E80718005F18E607180025 -:103E10005F1910693008F0091800C3705807C350C3 -:103E2000109A0C95C0385807C0D02FF50B87E607BD -:103E300018005F18E80718005F191268F4081800E6 -:103E4000CF3130084A3BAA880C9CF01F0023C0F1F8 -:103E5000A5A25807C060EAC6FFFF0D8A580ACB9199 -:103E6000029CF01F001E049CE3CD80FE49CB0C9CFD -:103E7000F01F0019C031A3B2CEDB49AB0C9CF01F80 -:103E80000016C0E1A3A2CE6B0C95CDCB029CF01F17 -:103E900000135802CE913FF2049CE3CD80FE492BE3 -:103EA0000C9CF01F000DC031A1B2CD4B0C9C48FB07 -:103EB000F01F0009C071A1A2CCDBF01F00083FF287 -:103EC000CD3B029C3FF2F01F0005CCEB80009194AB -:103ED00080039A74800091A0800091E880039A6C1E -:103EE0008003D31C8003D3248003C8E4EBCD40803F -:103EF0001697149C129BF01F00085BFCC031E3CFA7 -:103F0000C0801898E018FFE1CFB1EF4C0050109C32 -:103F1000E3CD808080023DB4EBCD40801697149CA9 -:103F2000129BF01F00085BFCC031E3CFC0801898E3 -:103F3000E018FFE6CFB1EF4C004C109CE3CD808041 -:103F400080023DB4D431201D500B129CF01F00485C -:103F50001891E080007F198A580AC6B0300218967E -:103F6000049032033094E80A18005F08E60A18004B -:103F70005F0910493008F0091800C0E0109B2FF6C7 -:103F80000D8AE60A18005F08E80A18005F0912485F -:103F9000F6081800CF51580AC2F00D87E80718003C -:103FA0005F18E60718005F1910693008F00918005B -:103FB000C3E05807C3C0109A0C95C0385807C0D04A -:103FC0002FF50B87E60718005F18E80718005F1940 -:103FD0001268F4081800CF3130084A6BAA880C9C8C -:103FE000F01F0025C161A1B25807C060EAC6FFFFFB -:103FF0000D8A580ACB91029CF01F00205802C1B0D4 -:104000004009F34200545800C241009C2FFDD832B1 -:1040100049BB0C9CF01F0018C031A1A2CE6B499B7C -:104020000C9CF01F0015C0E1A3B2CDFB0C95CD5B3D -:10403000F01F0012300840093FFCF34800542FFDE8 -:10404000D832491B0C9CF01F000CC051A3A2CCDB42 -:104050002FFDDC3A0C9C48DBF01F0007F9B800107C -:10406000E5D8E032F7B001FFCC0B0000800091945E -:104070008003C8C4800091A0800091E88003D32C05 -:104080008003D3348003C8E48003C8E0D431202DFA -:10409000500B129CF01F00391890C6D0198A580A8C -:1040A000C610300118955011320230930294C03876 -:1040B0002FF50B8AE40A18005F08E60A18005F096A -:1040C0001248E8081800CF51580AC2C00B87E4070D -:1040D00018005F18E60718005F191268E808180052 -:1040E000C3F05807C3D00A96C0385807C0D02FF67F -:1040F0000D87E40718005F18E60718005F191268BB -:10410000E8081800CF31AC8449DB0A9CF01F001D81 -:10411000C171A1A15807C060ECC5FFFF0B8A580A06 -:10412000CCA1009CF01F00185801C1E04008F141EB -:10413000005840195809C1F1129C2FEDD832493B63 -:104140000A9CF01F0010C031A1B1CE5B0A9C490B44 -:10415000F01F000CCFA040192FF95019CDCB0A96B3 -:10416000CD3BF01F0009300840093FFCF3480058E0 -:104170002FEDD8322FEDDC3A800091948003D340AC -:10418000800091A0800091E88003D3448003D3484D -:10419000EBCD40401896784CF01F00466D2CF01F78 -:1041A0000045ECFC00D0F01F00436DACF01F004157 -:1041B0006DCCF01F00406DECF01F003EECFC008069 -:1041C000F01F003CECFC0088F01F003AECFC009073 -:1041D000F01F0038ECFC0094F01F0036ECFC009857 -:1041E000F01F0034ECFC009CF01F0032ECFC00A03F -:1041F000F01F0030ECFC00A4F01F002EECFC00A827 -:10420000F01F002CECFC00ACF01F002AECFC00B00E -:10421000F01F0028ECFC00B4F01F0026ECFC00B8F6 -:10422000F01F0024ECFC00BCF01F0022ECFC00C0DE -:10423000F01F0020ECFC00C4F01F001EECFC00C8C6 -:10424000F01F001CECFC00CCF01F001AECFC00D4AA -:10425000F01F0018ECFC00D8F01F0016ECFC00DC8E -:10426000F01F0014ECFC00E0F01F0012ECFC00E872 -:10427000F01F0010ECFC00ECF01F000EECFC0150F5 -:10428000F01F000CECFC016CF01F000AECFC01803C -:10429000F01F0008ECFC018CF01F0006ECFC01A0F4 -:1042A000F01F00040C9CF01F0003E3CD80400000D1 -:1042B000800091E8EBCD40C0189678085808C031CE -:1042C000C0880E987007109CF01F00155807CFA1EA -:1042D0006D085808C031C0880E987037109CF01FC8 -:1042E00000115807CFA16C5CF01F000F6C6CF01F21 -:1042F000000E6C8CF01F000C6C9CF01F000B6CAC63 -:10430000F01F00096CBCF01F00086C1CF01F0006B9 -:104310000C9CF01F0005E3CD80C00000800241909E -:1043200080023C18800091E8EBCD4040320818969E -:104330001AD8E0691000F8C8FFDC785A784B792C5D -:10434000F01F000430182FFDED480044E3CD8040FD -:104350008002B254D421F60815011695F0C6FFFF6D -:1043600018940C9CF01F00061897C0600A99089AD0 -:104370000C9BF01F00040E9CD822000080028F24AA -:1043800080023A68EBCD40E016951896F6CCFFFD1A -:10439000F01F00091897C0C00C9B0A9A322618C655 -:1043A000F01F0006EE0500093008B296B2A80E9C78 -:1043B000E3CD80E080009200800091DCD401580CB5 -:1043C000C1D0580BC160198835E92208F2081800DD -:1043D000E08B0013129A3009C088F80907082208F8 -:1043E000F4081800E08B00092FF9123BFE9BFFF741 -:1043F000F01F0003D802F01F0003D802800243849C -:1044000080024354D4011698F6FC0140580CC06059 -:10441000189BF0CCFEDCF01F0002D802800243BCE7 -:10442000D4011698F6FC013C580CC060189BF0CCE7 -:10443000FEECF01F0002D802800243BCD4011698A3 -:10444000F6FC0138580CC060189BF0CCFEFCF01F45 -:104450000002D802800243BCD4011698F6FC013455 -:10446000580CC060189BF0CCFF0CF01F0002D80263 -:10447000800243BCEBCD40F831EC1694F01F0028CD -:104480001896C3906979F8C3FFE2EDB90000C360E4 -:104490001897EDB90001C1614A294A380C37F20872 -:1044A0001710E60701051AD84A0A0A9B0E9CF01F4E -:1044B00000202FFD580CC1C51835E08A001A1807D6 -:1044C0006979EDB90002C171496949780C37F20880 -:1044D00017100E9C1AD8E6070107496A0E9BF01FB9 -:1044E00000142FFD580CC0451837E089000530082E -:1044F000E768FFFF0C9CE3CD80F848B848EA1AD87B -:1045000031EBF01F000B2FFD580CCF2559DCFE9925 -:10451000FFF0EC0C00076979CBDB000080028F24F0 -:104520008003936480037E208003D35880009148E9 -:104530008003D3648003D350EBCD40F81894332C20 -:10454000F01F003E1896C650F8C3FFCEEDB400042D -:10455000C6301897EDB40003C1514B994B980C37F6 -:10456000F2081710E60701051AD84B7A0A9B0E9C31 -:10457000F01F00362FFD580CC4951835E08A00470F -:104580001807EDB40002C1514AD94AE80C37F208C5 -:104590001710E60701051AD84ADA0A9B0E9CF01F8D -:1045A000002B2FFD580CC3251835E08A0030180762 -:1045B000EDB40001C1514A294A280C37F2081710FE -:1045C000E60701051AD84A3A0A9B0E9CF01F001F05 -:1045D0002FFD580CC1B51835E08A00191807EDB445 -:1045E0000000C171496949780C37F20817100E9C18 -:1045F0001AD8E6070107498A0E9BF01F00142FFD09 -:10460000580CC0451837E08900053008E768FFFFFF -:104610000C9CE3CD80F848B8490A1AD8332BF01F18 -:10462000000B2FFD580CCF25E04C0031FE99FFEF19 -:10463000EC0C0007C90B000080028F2480039364F8 -:1046400080037E208003D374800091488003D37C54 -:104650008003D3888003D3908003D36CD401774C3C -:10466000F01F0002D802000080024538D401773CD8 -:10467000F01F0002D802000080024538EBCD40F860 -:10468000332C1693F01F00401896C6906759F8C453 -:10469000FFCEEDB90001C6601897EDB90000C16109 -:1046A0004BA94BB80C37F2081710E80701051AD8C8 -:1046B0004B8A0A9B0E9CF01F00382FFD580CC4C576 -:1046C0001835E08A004A18076759EDB90003C1613F -:1046D0004AE94AF80C37F2081710E80701051AD81A -:1046E0004AEA0A9B0E9CF01F002C2FFD580CC34574 -:1046F0001835E08A003218076759EDB90002C16128 -:104700004A294A380C37F2081710E80701051AD869 -:104710004A3A0A9B0E9CF01F00202FFD580CC1C581 -:104720001835E08A001A18076759EDB90004C171FD -:10473000496949780C37F20817100E9C1AD8E80717 -:104740000107498A0E9BF01F00142FFD580CC0452D -:104750001837E08900053008E968FFFF0C9CE3CDBD -:1047600080F848B8490A1AD8332BF01F000B2FFDE8 -:10477000580CCF25E04C0031FE99FFEFEC0C000700 -:104780006759C8CB80028F248003936480037E2006 -:104790008003D3A4800091488003D3B08003D390DA -:1047A0008003D3BC8003D398EBCD40C030AC1696C9 -:1047B000F01F00181897C1806D69EDB90000C17035 -:1047C000189A301BEDB90001C0F149384939580B2E -:1047D000F0091700149C1AD9EECBFFF6141B490AF6 -:1047E000F01F00102FFD0E9CE3CD80C048B848EAB2 -:1047F0001AD830ABF01F000B2FFD580CCF55589C2A -:10480000FE99FFF3EE0C000A6D69300BCDCB000072 -:1048100080028F248003936480037E208003D3D0A2 -:10482000800091488003D3C8EBCD40C01697768CAA -:10483000580CC05118960C9CE3CD80C0314CF01F31 -:1048400000101896CF90EF38001DEF3A00181AD8D4 -:10485000EF39001C1AD9EF38001B1AD8EF39001AAB -:104860001AD9EF380019314B1AD81ADA485AF01F02 -:10487000000630082FADED680013CDEB80009200EC -:104880008003DA4880009148EBCD40E078351696F9 -:10489000314CF01F000A1897C0C0EC050308488A85 -:1048A0001AD8314BF01F000730082FFDEF680013B6 -:1048B0000E9CE3CD80E00000800092008003DD6864 -:1048C00080009148EBCD40801697772C580CC09013 -:1048D000F01F0009189B6F2CF01F0008E3CD8080AB -:1048E000771C580CC060F6CCFFDC320BF01F0004C4 -:1048F000E3CD8080800091B88002438480024354DD -:10490000EBCD40807838F60800076E085808C0C024 -:10491000784C580CC0C0F60C030C189B109CF01F70 -:104920000007E3CD8080109CE3CD8080109CF01FB9 -:1049300000046E08CF3B0000800243BC800091B8A9 -:10494000EBCD40F83228169418961989F009180012 -:10495000C0A0F01F001BEBDCC001C19030070E9C13 -:10496000E3CD80F8F8C7FFFF322B0E9CF01F001537 -:10497000CF6019985808CF31B8880E9CF01F0010EE -:10498000890C0E9CF01F00101897CEABF80316018F -:10499000E6CCFFFFF01F000D1897CE200C9C069A66 -:1049A0000E9BF01F000BC051EE030B0C8903CD8B47 -:1049B0000E9C0A97F01F0007CD3B0000800091B8C5 -:1049C00080009158800091948000920080023944C8 -:1049D000800091E8D421205D18951094129C1696C1 -:1049E000F01F000F1897C1906C0A590AE08B001451 -:1049F000189B0A9CF01F000B0E9CF01F000B48BA7E -:104A00001AD4314BFACCFFFCF01F0009300C2FFDFB -:104A10002FBDD822F01F00042FBDDC2A80024940A0 -:104A2000800091DC800091E88003D3D88000914819 -:104A3000D4013038F6CCFEDCF6CBFEC0F01F00020D -:104A4000D8020000800249D4D4013028F6CCFEEC14 -:104A5000F6CBFEC4F01F0002D8020000800249D449 -:104A6000D4013018F6CCFEFCF6CBFEC8F01F0002D5 -:104A7000D8020000800249D4D4013008F6CCFF0CE3 -:104A8000F6CBFECCF01F0002D8020000800249D411 -:104A9000EBCD40F8201D18971693129C1A9BF01F1F -:104AA00000171895C2306E595809C0504008103987 -:104AB000E08B00206E695809C04040081039C133AE -:104AC0006E366E44E60600066C0CF01F000D8D0578 -:104AD0006E4C580CC0504008300CE60409082FFDFD -:104AE000E3CD80F80A9CF01F00062FFDE3CFC0F84D -:104AF000F01F00033FFCCF4B80024940800091E84B -:104B0000EBCD40FEF6F700D05807C0510E94089C3C -:104B1000E3CD80FE364CF01F00191894CF90EEC6FE -:104B2000FFFCF8C3FF9C189749514962ECFCFFFC5D -:104B3000580CC2116C0B580BC1A02F86F01F00122D -:104B4000CF600837E2081700E40817101ADCE60700 -:104B500001051AD80E9C48DA0A9BF01F000D2FEDB4 -:104B60001807580CC0451835FE99FFE23008E76871 -:104B7000FFFFCCEB6C0BCE2B80028F2480037E20BA -:104B800080039364800271BC8003D3E48000914869 -:104B9000D431205D500B129CF01F0056502CE08049 -:104BA000008E198A580AE080009B3009402650196F -:104BB000503912905049320230931294C0382FF677 -:104BC0000D8AE40A18005F08E60A18005F09124817 -:104BD000E8081800CF51580AC4E00D87E407180010 -:104BE0005F18E60718005F191268E8081800C64049 -:104BF0005807C6200C95C0385807C0D02FF50B8732 -:104C0000E40718005F18E60718005F191268E80843 -:104C10001800CF31AA842FF0403CE00B1503F01FA1 -:104C200000361891C4E040490C9CE20900060C9B38 -:104C3000F01F00328D1C6C085808C141580CC1018E -:104C400040182FF850185807C15040482F88504836 -:104C5000EAC6FFFF0D8A580AC3C05031CB3B591C2E -:104C6000C2404009F2F801782FF8F348017858075C -:104C7000CED15031E0C8FFFFF0071503402CF01FE4 -:104C800000200E9B403CF01F001CC2E0F8000039E1 -:104C90003008931893084008F14C00D04019580987 -:104CA000C0D1129C2FBDD8324009F2F801742FF800 -:104CB000F3480174CC9B0C95CAEB3FFC2FBDD83256 -:104CC000403CF01F000F402CF01F000D2FBDDC3AC0 -:104CD000E0C8FFFF5031F0071503CD1B501A308795 -:104CE000503A1490CCCB403CF01F00053FFCCE7BEB -:104CF00080009194800091F48002720C800091E811 -:104D0000D4213228129716951389F0091800C0A0F3 -:104D1000320A2DCB0E9CF01F00271896C2F03FFCE4 -:104D2000D822EEC6FFFF322B0C9CF01F0023C3C01D -:104D3000F8060107EEC80008E0480037FE9BFFF1C7 -:104D40006B2C580CC060F01F001D0E3CC2606B2C19 -:104D50003004EB440044F01F001AEECCFFFFF01FBC -:104D60000019EB4C0048CDC00C9B0E9AF01F0016AA -:104D70006B28089CF0070B04D822EF390040F80993 -:104D80001800CCE16B2CF01F000E3018EB460048E9 -:104D90000C9CEB480044D8220E9A0C9B6B2CF01F05 -:104DA000000BCD61CBEB0C9CF01F00041897CC3BA3 -:104DB0008002394480009158800091B8800091E8C9 -:104DC00080009200800091DC8000917CEBCD4080DF -:104DD0001697129C2E8BF01F0006F9BC01FFF9B844 -:104DE0000001EFF80A08E3CD808000008002389CC3 -:104DF000EBCD40C018976E38129CF00B000630AA1D -:104E0000300BF01F000C8D0C18996E585808C030EC -:104E1000103CC0956E6C580CC0401839E0890007F2 -:104E2000E3CF80C08D08E3CFC0C08D0CE3CFC0C0FE -:104E300080009170D42116941895782B580BE08A35 -:104E400000557817683E6E0C78381C38C410EECACE -:104E5000FFFC3009C058150C78381C38C3902FF966 -:104E60001639CFA52FFB0E9CA36BF01F00241896BC -:104E7000C3506A2C580CE08A003B6C08683E7039BD -:104E80001C39C355ECC8FFFC300AC0A81097700845 -:104E9000F40B15027039EEC8FFFC1C39C2052FFA5D -:104EA000143CFE99FFF5F4C8FFFFEC0A002BA36841 -:104EB0001697F80A010AEC08000CA36AF01F00100C -:104EC0008F048B166A28300C2FF88B28D82218985C -:104ED000781C580CCFD19114D822DC2AF4C8FFFFDB -:104EE000EC0B000BA368CE6B7817CBDB0C97300A6A -:104EF00030480C9BCDFB0000800091F4800091C4F1 -:104F0000D4211895781CF01F000D300C8B1C8B2CB5 -:104F10006A075807C0F0189618948F140E9B0A9CC5 -:104F2000F01F00076E07F9B605FF5807CF710C9CFC -:104F3000D8220E96CFDB0000800091E880024E342C -:104F4000D421189578095809C1E03FFAC028109972 -:104F50007228F4080C4A72085808CFA1F4C4FFFF65 -:104F60001296E06C01A8F01F000A1897C0A09924BF -:104F70005806EDFC1A00EBFC0A000A9CF01F000525 -:104F80000E9CD82212961294CEDB000080028F2451 -:104F900080024F005EFD5EFD5EFD5EFD5EFD5EFD1E -:104FA000D401584BC0E0E0880007586BC0A0587B84 -:104FB000C040D802580BC091300CF01F0005D80239 -:104FC000301CF01F0003D802D80200008002172016 -:104FD000D401581BC070300A323C149BF01F0005EE -:104FE000D80A300A322C149BF01F0002D80A0000A5 -:104FF00080014658EBCD40FE201D1094129216956C -:10500000F01F0057E8C8FFF25C7C4D69F00C000609 -:10501000F33A0109580AC060EC0A0D085809E0810A -:10502000008F3003500CE6060001029CF01F004E7A -:105030000A9B1897306A400CEE0C000CF01F004BD6 -:10504000400C306A4CAB140CEE0C000CF01F004707 -:10505000400C302A4C7B2F4CEE0C000CF01F004310 -:10506000400C089A049B2F2CEE0C000CF01F003F04 -:10507000FAC8FFFC3005114A0E991AD5EE0A000C49 -:105080001AD5EC0A010A30EBF01F003B2FED581C3B -:10509000C5914009EC090108E048003EE08B001092 -:1050A0008E085CC806085CC8AED3029B0E9CAE0896 -:1050B000F01F0032300C2FFDE3CD80FEEE09000E14 -:1050C0003888FD39000CF0091800CEB1FD39000D0B -:1050D00038E8F0091800CE51FD38000EF808180025 -:1050E000CE01FD39000F3038F0091800CDA130286D -:1050F000FD3A0012F00A18005F1B3FE8F00A1800A2 -:105100005F19126BEA0B1800CCC1FD380013E218CE -:10511000001D5818CC61FD380014E21800C85888EA -:10512000CC01FCCAFFC1FCC9FFE1C0482FF914390A -:10513000C0E01388F6081800CFA0CB3BF4090103A8 -:10514000C72B0E9CF01F000E3FFCCB6B0FC92FA985 -:10515000EE0900091388A3A8B288CA3B8001F4E8CD -:10516000000087F480009200800091DC00007AA8A3 -:105170008003D6548001F54480014664800091E8A4 -:10518000D401201D3068FACBFFFC16D81A9B486C5E -:10519000F01F00064848581CF00C1700F9BC01002D -:1051A0002FFDD80200007AA880017A88EBCD40401C -:1051B000310A1696300B0C9CF01F000630F930783F -:1051C0008D198D09300C30398D288D39E3CD804013 -:1051D000800091D0D401F01F0002D80A80016048FD -:1051E000EBCD4068206DFAC3FFEE1496069C306A42 -:1051F000F01F0010FAC5FFFE0C9B310A0A9CF01F3D -:10520000000D0A9B204D310A1A9CF01F000B069BD3 -:10521000202D306A1A9CF01F0008F01F00082FADE7 -:10522000581CF9BC01FFF9BC00002FADE3CD80682C -:10523000800091DC8002E73680016094EBCD40680D -:10524000206DFAC3FFEE1496069C306AF01F001022 -:10525000FAC5FFFE0C9B310A0A9CF01F000D0A9B49 -:10526000204D310A1A9CF01F000B069B202D306A3E -:105270001A9CF01F0008F01F00082FAD581CF9BC45 -:1052800001FFF9BC00002FADE3CD8068800091DC08 -:105290008002E73680016168D401F01F0005581CC8 -:1052A000F9BC01FFF9BC0000D80200008001F370D6 -:1052B000D401F01F0005581CF9BC01FFF9BC000027 -:1052C000D80200008001F310D401169CF01F0004E6 -:1052D000581CF9BC01FFF9BC0000D802800163E052 -:1052E000D431207DFACEFFC050287C027C387C1758 -:1052F00050087C2E501E16901894149B1293580A36 -:10530000C5C0FAC5FFEA306A0A9CF01F0031202DA3 -:10531000306A0A9B1A9CF01F002FF01F002F5802C2 -:105320005F1858075F1918912FED1268C181300678 -:105330005800C26168193018F0030948F00811FFDD -:10534000F1E9000C891C580CC365BFBC891CF01F17 -:10535000002318975817C2F02F9DDC3A5887FE9B00 -:10536000FFFDFAC6FFF2308A300B0C9CF01F001CC8 -:105370000E9A049B0C9CF01F00165800CDC04028CC -:1053800058015F091AD8069C1AD630381AD530163B -:10539000404A403B1AD6F01F00136819EC03094835 -:1053A0001248F1D8C01F189789180C9CF01F000EE6 -:1053B0002FCDCD1B2F9DD83AFAC5FFEA306AE06B9E -:1053C00000FF0A9CF01F0006CA3B0000800091DC31 -:1053D0008002E736800188B080016584800091D02A -:1053E0008001661C8001639CEBCD40C01896308C18 -:1053F000F01F00091897C0C0300899069918F01FCF -:105400000007301CF01F00060E9CE3CD80C0E3CDEA -:1054100080C0000080028F248001604880017A10E3 -:10542000EBCD4080209D1697FACCFFFEF01F0009BF -:10543000581CC0402F7DE3CFC0800E9C1BBAFACB16 -:10544000FFFCF01F00051BBC2F7DE3CD808000001A -:1054500080017800800091DCEBCD4080202D580B3E -:10546000C120FAC7FFFE306A0E9CF01F000C0E9C94 -:10547000F01F000B581CF9BC01FFF9BC00002FED18 -:10548000E3CD8080FAC7FFFE306AE06B00FF0E9C20 -:10549000F01F0004CEDB0000800091DC8001793039 -:1054A000800091D0EBCD4040485B1896F01F00057E -:1054B0000C9CF01F0005E3CD8040000080039C3869 -:1054C00080025458800091E8EBCD40C0202DFAC7EF -:1054D000FFFE16960E9CF01F0008581CC0402FEDD2 -:1054E000E3CFC0C00E9B0C9C306AF01F00042FED70 -:1054F000E3CF80C080017864800091DCEBCD40C0B8 -:1055000018977939580BC0305839C0E03018EF4837 -:1055100000BC3038EF48004C1039C0808F2830086C -:105520008F58E3CD80C0F949004C6F682FF8EEFA30 -:10553000010CEF4800586FA830098F288F59301B95 -:10554000746C7486487A5D16EEF80094EEF900905B -:105550002FF82FF9EF480094EF490090E3CD80C079 -:1055600080037E20580C5E0C580BF9FB4A19580A30 -:10557000F9FA4A225809F9F94A1A5808F9F84A1B5F -:105580005EFC580CF9F81024F9B90101F1D9E108D1 -:10559000F9F81A245EFC580C5E0C580BF9B801019E -:1055A000F9F81A45F9FB0A455EFCD703EBCD40C07C -:1055B0001897580CC04079385858C030E3CD80C097 -:1055C000F8F8010C3009706C7086488A301B5D1643 -:1055D000EEF80094EEF900902FF82FF9EF480094C0 -:1055E000EF490090E3CD80C080037E20580CF9FC89 -:1055F00010315EFC580CC0B0F8F800D45808C070E8 -:10560000F8F800D89708F8FC00D45EFC300897083A -:105610005EF8D703580CC040588BE08800035EFD4D -:1056200048D8F00B032FF8FC00E05EFCF8FC00DC2F -:105630005EFC78BC5EFCF8FC00805EFC79FC5EFCE5 -:10564000F8FC00845EFC784C5EFC797C5EFC786C37 -:105650005EFC00008003D6FC580C5E0C588B5EBCD0 -:1056600048E8F00B032FF94A00E05EFCF94A00DC41 -:105670005EFC99BA5EFCF94A00805EFCF94A007C47 -:105680005EFCF94A00845EFC994A5EFCF94A005CC3 -:105690005EFC996A5EFC00008003D720580CC05065 -:1056A000580BC031783C5EFC5EFD580C5E0C580B0C -:1056B000F9FA0A035EFCD401580CC0A0F8FC010CF6 -:1056C000580CC06078A85808C030780C5D18D80213 -:1056D000D401580CC021D80AF8FC010C580CCFC0DA -:1056E00078B85808CF90780C5D18D802EBCD408080 -:1056F0001897580CC1E0189A300B48FCF01F000FA7 -:105700000E9A300B48ECF01F000DEEFC00C0F01FAD -:10571000000DEEFC00CCF01F000CEEFC00D4F01FDE -:10572000000AEEFC010CF01F00080E9CF01F0006A2 -:10573000E3CD80808002608C800274008002602053 -:10574000800270E0800091E8D401580CC050F8FC51 -:1057500000C0F01F0002D80280026410D401580C6F -:10576000C050F8FC00C0F01F0002D802800264287C -:10577000D401189A580CC0A030583019F8FC00C059 -:10578000F548004C95C9F01F0002D802800263BAA8 -:10579000EBCD40801897580BC04079E85888C0403E -:1057A0003018EF4800BC30193088EF490044EF480A -:1057B00000788F99EEFC00C0F01F0004F9B80100DA -:1057C000EFF81A39E3CD8080800263B2EBCD40E080 -:1057D000201D189716951496580CC0513FFC2FFDAC -:1057E000E3CD80E0F8FC00C0F01F000ACF801A9BD8 -:1057F000EEFC00C0F01F0008189BCF10400C0C3CC2 -:10580000CEF30C9A0A9CF01F0005300CCE9B0000D2 -:10581000800263B2800263CE800091DCEBCD40C099 -:1058200018971496580CC1F0F94B00C4580AC1B02F -:1058300074087419F94800F8F94900FC7428F9480B -:105840000100F8FC00C0580CC0E0742BF01F0007EA -:105850006C3BEEFC00C0F01F00066C4BEEFC00C081 -:10586000F01F0004E3CD80C0800263A6800263AC19 -:1058700080026408D431FACD00A81897F8F600CC5D -:105880005806C0F0F8F800F85808C0B00DA80DB9D7 -:10589000F3E81089F8F800D02FC91039E088000427 -:1058A0002D6DD832ECC4FFFC0999500909A0F01FF6 -:1058B000006FFAC1FFF8340A029B0E9CF01F006CC7 -:1058C0001895CEF5590CE0800090580CCEA132020C -:1058D0005012EEF800E45808C7D1E8C5FFE4FAC357 -:1058E000FF68310A0A9B069CF01F0062310A300BE8 -:1058F0000A9CF01F00610DAA0DB9049BF3EA108900 -:10590000FACCFFD8EEFA00CC0A982FC9F01F005B42 -:10591000310A0A9B069CF01F005AC7614009E1E961 -:1059200010880DB9EBD8B0100DA8F3E81089320833 -:10593000F2CE002CF00519005FB9E04E00205F9A0E -:10594000124AF80A1800CAD15C751C35C630580EC8 -:10595000CA81FAC3FF88029B0A9A069CF01F004581 -:105960003018308AEF4800E4E8CBFFFDEECCFF189A -:10597000F01F0040EEFC010C78965806C0D0E93AC2 -:10598000001B0A98149B0699780CE21B0080F5DA3C -:10599000C0025D16C865E939001B3008F00918001F -:1059A000C5753018EF48011CEEF901185809C0718F -:1059B000EEF800FCEDB80000FE90FF7430188FD8B0 -:1059C000EEFC010C78785808FE90FF6C780C5D189E -:1059D000C68B308AE8CBFFFDEECCFF18F01F002805 -:1059E000FE94FF60C7BB189A029B0E9CF01F00201C -:1059F000FE91FF580A9A029BFACCFFD80A92F01F38 -:105A0000001D5015C67B069B0A9C310AF01F001929 -:105A1000C48BFAC6FFB8E8CBFFF50C9C310AF01F27 -:105A20000015049A029BFACCFFA8F01F0012FAC3DB -:105A3000FF880A9AE8CBFFD4069CF01F000E40199D -:105A40000C9A2F090A9B069CF01F000EC8AB301859 -:105A5000EF480118EEF9011C5809CB11EEF800FCD3 -:105A6000EDB80001CAC1C1DB8002575C800257CC8F -:105A7000800091DC800091D080028EF88000917CC3 -:105A800080029C38D431201D3003189730140695BD -:105A900030213040EF4500BC6F4A580AE08000C911 -:105AA0006F585808E08100C56E7C580CE08100C238 -:105AB0006EB85808E08000BE6F385828EFF41A2FEF -:105AC000EEF8010CEF41004C3009706C7086FEFA64 -:105AD000051E029B5D16EF4400548FC5EEF800983A -:105AE000EEF900902FF82FF9EF480098EF49009059 -:105AF0006E7C580CC0516EB85808E08100EC6FC83D -:105B0000EF4400705818EFF41A2F6FD85808E0814E -:105B100000F8580CE08100A76EE85808E08100A367 -:105B20006FE8F0C900015879E08B000EFEF804C45C -:105B3000F009032FEF4400BCEF410078EF4500402F -:105B4000EF4400C8EEFC00C0F01F012BE08000B560 -:105B5000EF4400BC2FF3E0430064C9D10E9A300B30 -:105B6000FEFC0498F01F012630090E98FEFA048C02 -:105B7000129B129CF01F0123EEF9010C72285808A9 -:105B8000C0E0EEF801105808C0A058185F0B3008AC -:105B90000E9CEF480110723A72285D182FFDD83222 -:105BA000EEF80088EF4400BCEF4000788F55EF45D9 -:105BB000007CEF4500C88F08CC6B6E585808E08118 -:105BC00000DF6E4B580BE08100D06E085808C161B1 -:105BD0003078EF4400BCEF480078EF440048CB3BFE -:105BE000EEF900845809E08101846FF85808E081DB -:105BF000015C6E4B580BE08100B86E685808CA30E3 -:105C00000E9CF01F0101C9FB6E485808E08100A9F5 -:105C10006E585808E08100B06E685808C9406F0897 -:105C20005808C910300B0E9CF01F00F7C8CB6E7CD3 -:105C30006EA95809C2F16F885808C2C06F38EF4585 -:105C400000605818EFF41A2FEF44004CEF4500584D -:105C5000EF4500548FC58FE4EF450118EF45011C57 -:105C6000C49B6FE8EEFC00CC5818EFF41A2FEF44F9 -:105C70000078F01F00E6EEFC00D4EF4500CCF01FEA -:105C800000E3EEFC00C0EF4500D4F01F00E18FE51B -:105C9000C5AB580CCD416EB85808CD105829C3B0CB -:105CA0005819C4706F3820185878FE9BFF26FEF9EB -:105CB0000362F208032FEEF800BC5808FE91FF4C77 -:105CC000C5CB6E585808E08100FE6ED85808E080B9 -:105CD00000FE6FC95819FE90FF1A5829FE91FF1E49 -:105CE0006FD85808FE90FF1A0E9CEF490070EF44E1 -:105CF00000BCF01F00C96E7CEF450074C0BB0E9C59 -:105D0000EF4400BCEF410070F01F00C36E7CEF4514 -:105D10000074C00B6F885828CC606F388FC45898B7 -:105D2000EFF41A2FEF4100603098EF48004CCE4A54 -:105D30006F885818CB806F3858A8EFF91A2FEEF9F2 -:105D4000010C30A88FC5EF440060EF48004CFEFA0C -:105D5000029E7286726C302B0A995D16CC0A6F080F -:105D60005808FE90FF573068EF4400BC8FF4EF48AE -:105D70000078CE9A6F085808FE90FF503038EF44F4 -:105D800000BC8F05EF440080EF480078CDCA6E69F3 -:105D90005809C0A06ED85808E0810117EEF800F845 -:105DA0005808E08100FC6E485808E08100EB6E88DE -:105DB0005808C0506ED85808E08000E46F28580892 -:105DC000C050300B0E9CF01F00956E7CC93A6F7866 -:105DD0005808C8018F88EF4400BCEF40004CEF48E2 -:105DE0000058EF4800448FF8EF4800488F98EF4480 -:105DF0000040C82A6E1B580BCE606E585808FE90A3 -:105E0000FF6A3089EF4400BCEF49004CEF44005C6E -:105E1000C73A6E2B580BC2716F696FB81039CD330A -:105E20006ED85808C2003058EF4400BCEF48004C10 -:105E30008FC4EF440110FE9FFE60580AFE91FF4B95 -:105E4000EF4A011CEF4400BCEF44004CEF4A0060F5 -:105E5000EF4A0058EF4A00548FCA8FE4EF4A011806 -:105E6000FE9FFE4B6E685808C7B16E485808C78140 -:105E70006E585808CC71580BFE91FF2D6F696FB8A2 -:105E80001039FE93FF286ED85808FE91FF24307811 -:105E90008FCBEF48004CEF4400BC6F98EF410110EE -:105EA0008F18FE9FFE2AEEF80088EF4900C8EF44E5 -:105EB00000BCEF4000788F59EF49007C8F08FE9FAF -:105EC000FE436ED85808E081008AEF4400BCEF44DE -:105ED000004CEF450060EF450058EF4500548FC57A -:105EE0008FE4EF450118EF45011CFE9FFE06305977 -:105EF000EF4400BCEF4900781A9BEEFC00C0F01F95 -:105F000000481892C290EEF8010C4009189A708669 -:105F1000706C300B5D16049CF01F003CEEF800C85E -:105F20005808EFF81028F9B90101F1D9E108EFF8A4 -:105F30001A28EFF80029F9B90001F1D9E008EFF8C3 -:105F40000A29EEF90090EEF8009C2FF92FF8EF499E -:105F50000090EF48009CEF450084FE9FFDF5EF4464 -:105F600000BCEF40004CEF450058EF4500448FF572 -:105F7000EF4500488F958F85EF440040FE9FFDBDA3 -:105F80003078EF4400BCEF48004C8FC56F98EF416C -:105F900001108F186E7CFE9FFDAEEEF800FC5808D5 -:105FA000FE91FF038FD4EEFC010C78785808C040B6 -:105FB000780C5D186E695809FE90FEF76ED8580887 -:105FC000FE90FEF36E7C3059EF4400BCEF49004C6C -:105FD0008FC4EF440110FE9FFD8E3088EF4400BC5B -:105FE000EF48004CEF44005CFE9FFD8780037E205D -:105FF0008003D744800268308002608C8002740085 -:106000008002747480025790800091E88002653CA1 -:106010008003D76480025874800254FC800263E6D7 -:10602000EBCD408076085808F9B901FFF1D9E108B5 -:10603000F7F81A0076185808F9B901FFF1D9E10804 -:10604000F7F81A0176285808F9B901FFF1D9E108E3 -:10605000F7F81A0276385808F9B901FFF1D9E108C2 -:10606000F7F81A03169718991698486A300B301CDF -:10607000F01F00050E9CF01F0005E3CD808000009E -:10608000800260208002747480025A84D401169CBD -:10609000F01F0002D802000080025A84D421203D63 -:1060A0001895E06C0120F01F00221897C38031E89A -:1060B0003039F9480088F948006833C8F949006C5C -:1060C000F9480064F945010C300430CA99A4089BD2 -:1060D0001A9CF01F00186AF850286ADA500A6AE819 -:1060E0005018EEF8010C1A99704A493B0E9CF01FAB -:1060F0000013EF4C00C01A961898C14030160E9C41 -:106100008F76F01F000F0E9C8F74F01F000D0E98FD -:1061100008990C9C48BA089BF01F000B0E9C2FDDC1 -:10612000D8220E9C1097F01F0009CF9B80028F246D -:10613000800091D0000004788002711C80025A8493 -:106140008002602080027474800091E8D401580CB1 -:10615000C090F8F800D45808C050F8F800805808EB -:10616000C020D8023018F94800809958F01F00026A -:10617000D802000080025A84D401580CC04099AB68 -:10618000F01F0002D802000080025A84D401580C8B -:10619000C060F94B00E0994BF01F0002D8020000EC -:1061A00080025A84EBCD40801897580CC090996BB0 -:1061B000F94B00DC580BC0610E9CF01F0005E3CDCD -:1061C0008080F8FC00C0F01F0003CF7B80025A845F -:1061D000800263BAD401580CC04099DBF01F000262 -:1061E000D802000080025A84D401580CC04099BBE8 -:1061F000F01F0002D802000080025A84EBCD40E07C -:10620000189714951296580CC3A0F8F8008C2FF824 -:10621000F948008C5839E08B0009F8F800A82FF8ED -:10622000F94800A8E3CF80E01588306AF94800B04B -:10623000F8CCFF4CF01F0042ECCA00040BA90BB8CD -:10624000F1E910861436E08B00130B99300CF80935 -:106250001800C4603038F0091800C130EEF800A80A -:10626000301C2FF8EF4800A8E3CD80E0EEF800AC3A -:10627000300C2FF8EF4800ACE3CD80E0E3CF80E0B6 -:10628000E046002BE088004C3FE80BCBF00B1800F9 -:106290005F0A3028F00B18005F09124AF80A18004C -:1062A000CEE13018F00B1800C3A1EEFC00CCF01FBB -:1062B00000252FC60C9CF01F0024EF4C00CCC2F030 -:1062C0000C9A0A9BF01F001E0E9CEF4600D0301661 -:1062D000EF460074F01F001D0C9CE3CD80E0EEF84B -:1062E00001145808C100300830398FC8EF48011434 -:1062F0008F29EF49004CEEFC010C78C85808C030DB -:10630000780C5D18EEFC00D4F01F000E0C9CEF46DC -:1063100000D8F01F000DEF4C00D4C031E3CF90E067 -:10632000EACBFFFCEEFA00D8F01F00050E9C3016F9 -:106330008F56F01F00060C9CE3CD80E0800091DCBE -:10634000800091E88000920080025A84EBCD40806A -:10635000189779685808C0B079BB580BC08070494D -:106360005D193008EF480058EF48006CE3CD80809D -:10637000EBCD40C01897580BC04078085878C04003 -:106380003018EF48006030786FA68F086F9C6C293A -:10639000300A305B5D196FA86F9C7029301A304B42 -:1063A0005D19E3CD80C0F94B00745EFCF94B00B081 -:1063B0005EFC580CF9FC10135EFC580CF9B8010196 -:1063C000F9F81A06F9B9010BF9F91A005EFC580C34 -:1063D000C08079485808C05079589708794C5EFCBD -:1063E000300897085EF8580CC0C0791A580AC09057 -:1063F000792897083009F9490048F94900445EFABC -:106400003008109A97085EFAF94B00C45EFCD70377 -:10641000D401580CC040483BF01F0003D8020000D4 -:106420008003D7B08002634CEBCD40801897580CA6 -:10643000C0F079A8300B7019799C5D19C0916E6815 -:106440005808C0606E2820385818E0880004E3CD52 -:1064500080806F485808F9B80101EFF81A136FA847 -:106460006F9C7029301A300B5D19EEFC00A4483A7D -:10647000302BF01F0003CECB8003D7BC80023A1A2A -:10648000EBCD40801897580BC040780858B8C040F2 -:106490003018EF4800606F4930B88F085809F9B8D4 -:1064A0000101EFF81A136FA86F9C7029301A300B96 -:1064B0005D196FA86F9C7029300A305B5D196FA859 -:1064C0006F9C301A7029304B5D19EEFC00A4484ACD -:1064D000302BF01F0004E3CD808000008003D81C27 -:1064E00080023A1AEBCD40C01897580BC04078088C -:1064F00058C8C0403018EF48006030C86FA68F08F9 -:106500006F9C6C29301A302B5D196FA86F9C702915 -:10651000300A305B5D196FA86F9C301A7029304BC0 -:106520005D19EEFC00A4484A302BF01F0004E3CDB7 -:1065300080C000008003D86080023A1AEBCD406032 -:106540001896784CF01F000B30056D1C8D45F01F20 -:1065500000096D4CED450044F01F00066DA8ED45A7 -:1065600000500A9A6D9C70290A9B5D19E3CD8060EA -:10657000800091E8EBCD40E01897580BC4F0780804 -:106580005808C4C130088F086FD95809C0B06F6867 -:106590005808C08070985808C0506FBB0E9C5D189A -:1065A000C4114A4B0E9CF01F00246FA83006301512 -:1065B0008F16EF4500408F268F666EFA70490C9B50 -:1065C0006F9C5D196FA80C9A70290C9B6F9C5D19CC -:1065D0006FA80C9A7029302B6F9C5D196F4CF01FBF -:1065E00000176FA80A9BEF460050EF46004C0C9A2C -:1065F00070296F9C5D193FF80C9A8F386FA5303B5E -:106600006F9C6A295D196FA80C9A7029304B6F9C9A -:106610005D19EF4600C0E3CD80E03018EF48006020 -:10662000CB2B6F686FBB70A90E9C5D19CBFB000074 -:106630008003D8948002634C800091E8EBCD40E069 -:10664000205D1897580BC04078085858C040301843 -:10665000EF48006030588F086F695809C4406FA830 -:10666000FACBFFF070596F9C5D19310A300B189509 -:106670001A9CF01F00256F1C6EE850086E295019F7 -:106680006E6850286F095039F01F002030086F6B7A -:10669000EF48005CEF480044EEC8FFB81A9A0A9928 -:1066A0001AD80E9C405876566FBB5D16EF4C0044CE -:1066B00040188FE82FFD5808C1616F785808C13124 -:1066C00040188F2840298F694038EF4800406F6894 -:1066D00070695809C08070785808C0506FBB0E9C14 -:1066E0005D19C0412FBDE3CD80E06F4CF01F000766 -:1066F0006F68EECAFFAC70796FBB0E9C5D19EF4CF2 -:106700000050CF1B800091D0800091E8EBCD4080FD -:106710001897580BC04078085868C0403018EF48A8 -:10672000006030686E4C8F08F01F001A6F18580810 -:10673000C2E0EEF800B05808C2216EA86F2C8F3866 -:10674000F01F00158F4CC0706F2A6F1BF01F0013D5 -:106750006F288F586FA8301A7029303B6F9C5D19D5 -:106760006FA86F9C7029300A305B5D196FA86F9C11 -:1067700070496EFA300B5D19E3CD8080310AEECBA3 -:10678000FF7CEECCFF6CF01F0005CD8B8F48CE9BBD -:10679000800091E880009200800091DCEBCD40FC0D -:1067A000201D79A81897169214931294799C700959 -:1067B0005D191896C2F06F685808C23070C8580842 -:1067C000C2000E9C1A9A6FBB5D181895C1A0400CB0 -:1067D0002FBC870CF01F0015C1D03028B892B888A4 -:1067E00030188699B8B9A9891897B8A9B8C80A9B6A -:1067F000400A2FBCF01F000E0E9C2FFDE3CD80FC45 -:106800005804C0416DCC580CC0A16DB86DA5580599 -:10681000C0A130070E9C2FFDE3CD80FC6DD81895EC -:106820005008CD6B5008CD4B80009200800091DC69 -:10683000D431209D3004F8C9FF7CF8C8FF6C18974C -:1068400050195008F8C0FFB808956FA8EF450060D0 -:10685000301B70196F9C5D19C0706FA8306B701978 -:106860006F9C5D19C2F16FA8306B70196F9C5D1938 -:10687000C140EEF800C45808C101EEF800C0E0487D -:106880000032E08A0025E0480033E080011C6F8878 -:106890005808C1003014CDAB6E085818F9B8010182 -:1068A000EFF81A18EF4500C030188F086F885808A5 -:1068B000CF216F7C580CE80C1700F9BC01012F7D2B -:1068C000D832301B0E9CF01F01EECE2B6E0958A95A -:1068D000FE9BFFDFFEF807ACF009032F30183029CC -:1068E000EF4800608F09CD4B300B0E9CF01F01E686 -:1068F000CCFB6E196EB81039C760300B0E9CF01FC0 -:1069000001E2CC6B6EA96E381039E0800137300B94 -:106910006E8E580EC1B06E685808C1806EAA6E396E -:10692000123AE08000BBEEF800B05808C0F0F2C8A0 -:10693000FFFFF1D8C008103AE08000B0F2C8FFFEB7 -:10694000F1D8C008103AE08000A96E2C582CC20083 -:106950006E985808E08001236E685828E080011F77 -:106960006EAA6E39123AE0800146EEF800B058087F -:10697000C0F0F2C8FFFFF1D8C008103AE080013B38 -:10698000F2C8FFFEF1D8C008103AE08001346E78FA -:1069900058085F1A3008F5EB0009F0091800E0818B -:1069A000010FEC1B0001F5EB0008F2081800E08075 -:1069B00001056EBB1699582BE080012A6E16580609 -:1069C000C071581BE080021B582BE08101630C3B17 -:1069D000E080014F0C995919C0F1580EC0416FE881 -:1069E0005808C0A0300B0E9CF01F01A8C51B6EEB11 -:1069F000580BFE90FF7C300B0E9CF01F01A5C48B42 -:106A00006FA8305B70196F9C5D19C7016FA8307B50 -:106A100070196F9C5D19C0506E685808FE91FF395F -:106A20006FA8300B70396F9C5D19C0516E68582883 -:106A3000FE90FF2F6FA8308B70196F9C5D19FE912F -:106A4000FF286FA8189B70396F9C5D19C0516E6844 -:106A50005828FE91FF1E6FA8307B70196F9C5D193E -:106A6000C0806E285828C0506E685808FE90FF11EC -:106A70006E185918E080025C5998FE91FF0AEEF8F2 -:106A800000805808FE90FF056E685808FE90FF01D0 -:106A90006E285848FE91FEFD300B0E9CF01F017DC4 -:106AA000CF7A6FA8306B70196F9C5D19FE90FEF164 -:106AB000EEFB00C4580BFE91FEEC0E9CF01F017023 -:106AC000CE7A3328EEFC00A4FEFA05CC1AD8302B7F -:106AD000F01F0172EEF800C0301B16080E9CEF4844 -:106AE00000C0F01F016F2FFDCD3A6FAA3038FACBEE -:106AF000FFE08F0830136F9CEF43006074595D19FD -:106B00008F95507C8F85EF4500788F758FA58FB559 -:106B10008FC58FD55F0A408B1896583B5F88104A07 -:106B2000EA0A1800C23119A919B8F1E910885068A9 -:106B3000103BC1C319988FA8EEF900B05809C09056 -:106B4000069C4019FACAFFE8FACBFFE4F01F015592 -:106B50000D893028F0091800E080011CE08B008DC1 -:106B60003018F0091800E0800123EEF800C02FF87B -:106B7000EF4800C0FE9FFE8D6E785808FE90FEC95B -:106B8000EEF800B05808C080310A400B401CF01FDE -:106B90000146FE91FEBE301BCBCA580EFE90FEF998 -:106BA0006E685808FE91FEF56E185918FE91FEDACF -:106BB000583CFE91FED7CECA6E19C0EB301830A9F2 -:106BC000EF4800608F096F1CF01F01386E485808AD -:106BD000C1A06E5CF01F0136EF4C0044FE90FE59E0 -:106BE0006E5A6E4BF01F01336E58EF480048FE9FFF -:106BF000FE50300B0E9CF01F012AFE9FFE4A30090A -:106C000050494048EF480044FE9FFE436F08580833 -:106C1000FE90FED6301830996FAA8F09EF480060B9 -:106C20007458FACBFFE86F9C5D1819A919B818962B -:106C3000F1E910885848E08B01476F1CF01F011BD9 -:106C4000305CEF450044EF4C00486EA6F01F011881 -:106C5000E08001853029B896B889EF18004AB8C994 -:106C6000B8B8A988B8A8EF4C0044FE9FFE12584C53 -:106C7000FE90FEB3CB8A3038F0091800E08000DCCB -:106C80003048F0091800FE91FF7230188F98C6EB5B -:106C900030181693EF48006030496FA8E04B00FEB3 -:106CA000EFF3000D8F096EC670096F9C5D19069A8F -:106CB0000C9BF01F0101E08100C36F1CF01F00FB63 -:106CC0006FA8EF4500446EA270096F9C5D19503C9F -:106CD000FACCFFE8F01F00F91893C9206EB8E0481D -:106CE00000FEE08101516FA8406670096F9C5D193C -:106CF00030C8505CA376EF480048ECCCFFECF01FA6 -:106D000000EC1891E080012E3FE9B892B8C9302913 -:106D1000B889F8C8FFFBB0A5B085B095F8C9FFF8F1 -:106D20003038B285B295B2A5B2B8504CF8C2FFF473 -:106D30000A96C298661A6ED81438C210405CF01FCA -:106D400000DE049AE4CBFFFC580CC1903FE814C865 -:106D50008689B4896608A988B4986609B4A907C861 -:106D6000B68886A9B6996618A988B6A86619B6B96C -:106D7000F6C2FFFC60082FF62F88810866F35803DF -:106D8000E0800099660B6EC81638CD50661ACD7B30 -:106D90006E185918FE91FEEB40685848FE98FEE7C1 -:106DA0003018EF4800780DC98FB9CE0A406A584AAA -:106DB000FE98FEDD30188F780DC98FB9E04900FECE -:106DC000FE91FED558BAFE98FED2ECC9FFFB139C8B -:106DD000138A13A8F1EA1108F1EC1088ECCBFFF844 -:106DE0008FC817AC17B81789179AF1E91188F1EA1B -:106DF0001108F1EC10888FD8CB9A6FA83089EF4B2F -:106E000000608F09FACBFFE0705A6F9C5D1AFEFAA2 -:106E100002AE302BEEFC00A4F01F00A06F1CF01F90 -:106E200000A30C99EF460044009A6EAB0E9CF01F35 -:106E300000A5C1AB30188F88FE9FFE990C9C069B65 -:106E4000F01F00A1FE90FF3B6FD85808C0906F6AFA -:106E5000580AC06074096EC81039E0800086FEFBD5 -:106E6000026A0E9C3006F01F009A6EB88F186F6C85 -:106E7000580CE08000CD5806C54078B86FBB0E9C1A -:106E80005D18EF4C006C6FB65806E08000CA6F6A60 -:106E90006ECB30188F287429FEFA02381AD91AD30B -:106EA0001ADB302BEEFC00A4F01F007C2FDDFE9FD0 -:106EB000FCF05806C4206F285C78A2B8A988A2A864 -:106EC000FE9FFEA1F0CC0004F0C20005F01F007888 -:106ED0001893FE90FEB45802C120ECCCFFFB300AA0 -:106EE00035DB1938F0C90021F6091800F9B80B5F35 -:106EF000E60A0B082FFA1432FE9BFFF53008E60273 -:106F00000B084F581AD34F5A1AD8302BEEFC00A456 -:106F1000F01F0062069CF01F00652FEDFE9FFE8FA4 -:106F200078380E9C5D18EF4C006CCAEB6FF858086F -:106F3000FE90FCAFFE9FFDAA04983FE910C9B0A6E1 -:106F4000B086B096E4C9FFFCB2B6B286B296B2A6DD -:106F50006F282F88EF480048CB0B0A9CFE9FFE85C8 -:106F60005045FE9FFE5074181033FE91FF7A7499BD -:106F70005809FE90FF766FBB0E9C5D19FE90FF7165 -:106F80003016C74B3058406CEF4800482FACF01F0C -:106F900000481896FE90FE35B89230283039B888EF -:106FA000B8C9504CF8C2FFFB50250A91C1A8661A17 -:106FB0006EB8103AC130403CF01F003FC0F0660888 -:106FC0005808C5A040285808C0913FE904C93018A6 -:106FD000502860082FF12FF8810866F35803C0602D -:106FE000660B580BCE50661ACE7B5801EFF8101284 -:106FF000E5F10E00EFF80012F7B800FFEFF80A1203 -:107000005C78ACB8A988ACA8FE9FFDFD069B6ECC51 -:10701000F01F002DEF4C0058FE90FE51C2DB6FA810 -:107020006F9C70095D196F6870291AD91AD36EC8E0 -:1070300018921AD8302B4AAAEEFC00A4F01F0017B1 -:10704000EF4600588F268F1658025F1B6EB92FDD52 -:1070500058D95F081668EC081800FE90FE30E4F876 -:1070600001605808FE91FC15E4F801685808FE908C -:10707000FE26FE9FFC0E661804C8CACB800265740B -:107080008003D7848002670C8002663C80026370B4 -:10709000800264808003D8A080023A1A800264E4EF -:1070A00080028D9C8000917C800091E8800092009D -:1070B000800091DC80023AD8800271E48003D8F02D -:1070C0008002679C800271908003D9248002634C07 -:1070D0008003D9708003D8D08003D3E48003D930F3 -:1070E000EBCD40801897580CC0E0488BF01F00088B -:1070F0000E9CF01F0008EEFC00ACF01F00070E9C79 -:10710000F01F0006E3CD80808003D9AC8002634C81 -:107110008002653C8002D298800091E8EBCD40F877 -:10712000203D1896169414931295E06C00C8F01F39 -:1071300000151897C1C033C8F946006499F8F9449E -:107140000068F94300A430CA300B1A9CF01F000EEF -:107150006A2850286A0950096A181A9C5018F01FAA -:10716000000BEF4C00AC1A961898C0500E9C2FDD07 -:10717000E3CD80F80E9C1097F01F0005CF8B000028 -:1071800080028F24800091D08002D2C4800091E8D8 -:10719000189948A8700C580CC051C0D878FC580CED -:1071A000C0A078081238CFB1781816385E0C78FC79 -:1071B000580CCF815EFD000000007AB01899489805 -:1071C000700C580CC051C0C878FC580CC09078089E -:1071D0001238CFB178181638CF81782C5EFC5EFD5E -:1071E00000007AB0189B4888700C580CC0A0189901 -:1071F000300A2FFA72F95809CFD1149897085EFC1B -:107200001898CFDB00007AB05EFDD703EBCD40E0ED -:1072100048D81896169570075807C051C0E86EF701 -:107220005807C0B06E2C0C9BF01F0008CF916E0861 -:107230008B086E1CE3CD80E030088B08109CE3CDFA -:1072400080E0000000007AB0800091A0EBCD40C04B -:1072500048B70E966E095809C0B072F88D08129C96 -:1072600072D85808C0705D186E095809CF71E3CD07 -:1072700080C0129CF01F0003CEEB000000007AB02B -:10728000800091E8EBCD40C048D66C485808C0312A -:10729000C0880E987057109CF01F000A5807CFA1A5 -:1072A0006C6CF01F000930086C3C8D68F01F000505 -:1072B0006C8CF01F0004E3CD80C0000000008C90B7 -:1072C000800091E880014544EBCD40F8495718967D -:1072D000169314946E2B12952FFB6E3CA56BF01F2A -:1072E0000012C1D06E28A568F80809066E29A569A4 -:1072F000F8090009932593146E2AF4081504F80878 -:10730000000891336E188F3C2FFA1036EFF69A0171 -:107310008F2A3018300C8FC8E3CD80F8E3CFC0F847 -:1073200000008C90800091F4EBCD404CE0634DD395 -:10733000EA1310621896F01F000DF8030648A7899B -:10734000E06A03E8F20A0248F8080109121CF20A8E -:10735000024AF80304428D1ABF5CA743E60C010CF5 -:107360008D0CE3CD804C0000800145C4EBCD408006 -:10737000202D4A076E495809C2C06E581039C29074 -:107380001A9CF01F001D6E484009700A1439C2444F -:107390007018401BF40901091618C276F00B141F6F -:1073A000E06A03E8F20A024AE0694DD3EA19106282 -:1073B000F0090448A7491619F20A000C580CE08A93 -:1073C000000E300948DA6E6BF01F000D6E488F58C2 -:1073D0002FEDE3CD80801439C030301CCF3B7018C6 -:1073E000401B103BCFB4CD7B2019F028BDC0CD7B16 -:1073F00000008C9080027328800275188001455827 -:10740000D43149A0189516931492604C580CC2B010 -:1074100030060C940C91785778480A38C09018962A -:107420000E9C5807CF91F01F0012089CD8325BF3D6 -:107430005F0A782906395F081448E2081800CF006F -:107440005BF25F0A783904395F081448E2081800D3 -:10745000CE705806E1F70A04EDF71A052FF4F01F75 -:107460000005CDFB1894CE0B00008C908002736C4D -:10747000800091E8EBCD40FC18961695149212947A -:107480001093318CF01F00211897C3A0F01F00202B -:107490006E0A6E1B0C0AEA0B000B8F0A8F1BEE5B49 -:1074A000423FE08A000B2FFAEE3B42408F0A8F1BCF -:1074B000EE5B423FFE99FFF98F248F338F423008F5 -:1074C0008F58494C78495809C1D072081438E0895E -:1074D000001A2F0CC0A8F2CCFFEC72595809C0A0BA -:1074E00072081438E0890007103ACF617218103B17 -:1074F000CF348F599907F01F0008E3CF80FCE3CF0A -:10750000C0FC2F0CCF7B000080009200800273280B -:1075100000008C908002736CEBCD40E0202D49661A -:107520001A9CF01F00166C475807C1F040096E08FE -:107530001238E089001B3005C05840096E08103928 -:10754000C1451039C0516E1940181238C0E56E5847 -:107550008D558D486E3B6E486E2C5D180E9CF01F4D -:1075600000086C475807CEA1F01F00062FEDE3CFAF -:1075700080E0000000008C9080027328800091E879 -:107580008002736CEBCD408049A76E3E580EC2B0AE -:107590006E2A580AC280E08A002B7C081838C27014 -:1075A000FCC9FFF0300BC05872082F091838C050C2 -:1075B0002FFB163AFE99FFFA143BC170201A163AB7 -:1075C000C0F0161AF60C1504A56AFC0C000C2FFB73 -:1075D000A56BFC0B000BF01F00086E2A201A301858 -:1075E0008F2A8FC8E3CD8080E3CD8080300BCE7BA7 -:1075F00000008C90800091C4EBCD406048861895C7 -:10760000334A300B0C9CF01F0007ECCCFFE88D05D3 -:10761000301BF01F0005E3CF8060000000008C905D -:10762000800091D0800144F80050F2010100000078 -:107630000000000000000000F6F800DC5808C05010 -:10764000F8F800F85808C0205EFDF6FB00D0580B93 -:10765000CFC076085808C04176185808CF602F8BE5 -:10766000CF9BD703EBCD4080300B1897F01F001352 -:10767000306A300BEECCFF64F01F0011306A300B23 -:10768000EECCFF5EF01F000E300BEEFC00E0F01FB2 -:10769000000D300BEEFC00E0F01F000BEEF800BC1C -:1076A0005828C030E3CD8080EEFC00E0300BF01FA6 -:1076B0000007E3CD80800000800217D0800091D0C9 -:1076C000800261E8800261D4800261A4EBCD408039 -:1076D0001897F8F800945808C160300BF94B0094E3 -:1076E000F8F800D470985808C040F8FC00C45D1841 -:1076F000486A302B0E9CF01F0006300A0E9C149B2B -:10770000F01F0004E3CD80808003D9D480023A1AB0 -:1077100080022584D431209D500C761558155F9831 -:107720007607169058075F1910693008F00918009D -:10773000E08000B8EEC4FFFF0989F2C6FFFE0C35F9 -:10774000E08500B010923DD33301C168E208180013 -:10775000C2800C0758155F9958075F181268E40833 -:107760001800E080009EEEC4FFFF0989F2C6FFFE0C -:107770000A36E08900960C150F88E6081800CE71CD -:10778000305AF4091800FE98FFE6EECCFFFE306A8E -:107790004DFBF01F0060C0B00F88E2081800CDA1BB -:1077A00009883019F2081800FE98FFD540080E9B92 -:1077B0000C9AF0FC00DCF01F00581897C711400A23 -:1077C000FACBFFFCF4FC00DCF01F0054C21540793A -:1077D0005809C1E040685808E0890007C19840682E -:1077E0001037C1644079EE0B1504F20B000B400911 -:1077F0003008F2FC00DC2FF71099109AF01F0048B7 -:10780000CEF14008301BF0FC00E0F01F004660465F -:10781000605558065F1958155F981069C760ECC429 -:10782000FFFF0989F2C7FFFE0E35C6F53003069249 -:107830000691C1A85802C0610D88330AF4081800E7 -:10784000C3A00E060E1558065F1858155F991268EA -:10785000E2081800C3F0ECC4FFFF0989F2C7FFFE7D -:107860000A37E08900385803CE610D883DDAF40804 -:107870001800CE113058F0091800FE98FFDD306A6C -:107880004A3BECCCFFFEF01F0023CD5140090E9A7D -:107890000C9BF2FC00DC3013F01F0023CCCB600704 -:1078A0005807CB604009300AF2FC00DC149BF01F43 -:1078B000001ACAEB09883019F2081800FE98FFC3B5 -:1078C00040080E9A0C9BF0FC00DC3012F01F0017F1 -:1078D000CB9B5803C0F05802C0B160485808C08024 -:1078E0004008049AF0FC00DC049BF01F00102F7D80 -:1078F000D83260465806CF004009300AF2FC00DC5E -:10790000149BF01F0009CE8B3002CF5B80027628DB -:107910008000917C8002B5EC8002C04C8002938094 -:10792000800255968002B58C8002B52CD431FACDF8 -:10793000009018911497586BE08B00C4FEF807482C -:10794000F00B032F580AC0A0F8F800907009739A42 -:10795000580AC0410E9BF01F01CD304B029CF01F16 -:1079600001CCE2F801185808E0810312FAC7FF942D -:10797000E2F800D470285808C4C00E9BE2FC00C492 -:107980005D18C475E2C6FF64306A0C9B0E9CF01F44 -:1079900001C1C3F0FB3800711AD8FB3900741AD941 -:1079A000FB3800771AD8FB39007A1AD9FB38007DEA -:1079B0001AD8FB390080FEFA06DE1AD9301B029C69 -:1079C000F01F01B6306A0E9B0C9CF01F01B5306AA7 -:1079D000300BE2CCFF5EF01F01B3E2FA00BC2FAD2A -:1079E000584A5F08590A5F091248C081588AE080E6 -:1079F000030C0E9B029CF01F01ACE2F80090704952 -:107A00005819E08102D5E2F800B05808E08002D0B1 -:107A1000FB3800711AD8FB3900741AD9FB3800778B -:107A20001AD8FB39007A1AD9FB38007D1AD8FB39ED -:107A30000080302B1AD9FEFA0672029CF01F0197C3 -:107A4000E2FB00B02FAD580BC040029CF01F019824 -:107A50000E9BE2FC00DCF01F0197622CF01F0196E8 -:107A6000300BE2FC00E0F01F0195300BE2FC00E07F -:107A7000F01F0193E2F800BC5828C061300BE2FC13 -:107A800000E0F01F0190301BE2FC00E0F01F018BD2 -:107A9000300BE34B00F4E2F900BC59095F0A584986 -:107AA0005F081448F6081800E0800216029CF01FD8 -:107AB0000186307B029CF01F0176029CF01F01833F -:107AC0002DCDD832580ACFD0149B7439F8FC00DC85 -:107AD000742AF01F017F2DCDD832F8FB00BC590B62 -:107AE000CF00F8F800E85858E08002355838E08BAD -:107AF0000234E2C7FF64306AFEFB05D80E9C2F8B70 -:107B0000F01F0164EE0B1710E06800A2E3D8E00B51 -:107B1000029CF01F0171E2FC00DCF01F0170FEFA14 -:107B200005BE302B029CF01F015DE2FA00BC584AF2 -:107B30005F08590A5F091248C0B1588AE08002976D -:107B400030080E9BE3480104029CF01F0157029C81 -:107B5000F01F01642DCDD832FEFA058C303BF01FAA -:107B6000014F5807E08002806E0858085F1B169A84 -:107B7000E2FC00DC301BF01F015DFACCFF94F01F2B -:107B8000015CE2F800985808E08001D541B9F2089C -:107B90000108E048003CE08A01A6E34900982DCDA9 -:107BA000D832F01F0154E08501EBE2F900907248F1 -:107BB0005828C870E2F800AC5808C831E2FA00CC86 -:107BC0001094500AE2F000D072285808E08A00A908 -:107BD000300850187218401AF00A032850585800FC -:107BE000E08A0097400530020A96C11808973003D2 -:107BF00030142FF2ECC6FF6404305F983009E9E8D6 -:107C00000008F2081800E08000970E940C9B029C7C -:107C10000C93F01F0139C05078385818FE99FFE8CE -:107C20006D585808C051ECF800805808CE004059F3 -:107C30005809CDD0ECC8FFFAECCAFFA8ECC9FFD4B4 -:107C40005048502A50394057C0486E175807CCF05A -:107C5000EEF801945808CFA16CAA6E58103ACF6183 -:107C60006E4B404CF01F010BCF116E885808E0811D -:107C700000E16F6AEDBA0001C061ECFB0080580BB7 -:107C8000E08100E3F1DAC001300AF4081800CDE029 -:107C90006D5B580BCDB0FACAFF94403CF01F011742 -:107CA000CD516F6841B91268CD106F3841C9126863 -:107CB000CCD06F4841D91268CC906F5841E9126816 -:107CC000CC5058065F04C96B149BF01F00F02DCDFB -:107CD000D832149B2EACF01F010A1896FE91FEF2CA -:107CE0006F9B580BE080012A581BFE91FEEBE34B83 -:107CF00000D8029CF01F00FB622CF01F01028326BB -:107D0000CE0A5803E08100BF0E94E2F900904018BB -:107D10002FF850187228401A103AFE95FF5DE2F8CD -:107D200001085808E0800121029CF01F00F7E2F9E9 -:107D30000090C4BB5804CE600E923006C108049770 -:107D4000089930032FF6EAC5FF640C305F98F3E81A -:107D500000083009F2081800CD500E920A9B029CD0 -:107D60000A93F01F00E5C05078385818FE99FFE9D3 -:107D700040585808CE50EACAFFFA4057506AC078B7 -:107D80006AA8103AC5006E175807CDA0EEF8019406 -:107D90005808CFA16E5A580ACF416E885808C1E1E1 -:107DA0006F5BEDBB0002C040EDBB0003CED1F1DB49 -:107DB000C002C0806B585808CE71EAF8008058089D -:107DC000CE31EEF8014C5808C110EB190088EDB91E -:107DD0000001CDA058055F09CB6B306AEECBFFE800 -:107DE0000A9CF01F00ACCD01CDCB1099EEC8FECCA3 -:107DF0002FF9700A580AC2612FC85849CFA1EDBBAC -:107E00000003C071EEF800F0F1D8C002F9BA010128 -:107E1000EB190088EDB90004C030580A5F0A580A0F -:107E2000CB30CD6B6E4B406CF01F009ACAD1CB6B40 -:107E3000306AEECBFFE80C9CF01F0096FE91FF0726 -:107E4000C19B301ACDDBFACAFF94402CF01F00AB67 -:107E5000C0306F6AC18B6F6A41B8F5E80008FE90C8 -:107E6000FF136F3841C91268FE90FF0E6F4841D969 -:107E70001268FE90FF096F5841E91268FE90FF04F6 -:107E8000C21BE2F800A85808C131306AE2CBFF6497 -:107E9000069CF01F0080C170E2F800E85838C081ED -:107EA000306AE2CBFF5E069CF01F007AC0C00E9BDA -:107EB000029CF01F007FE08100B50E9A069B029C99 -:107EC000F01F0092009A400BE2FC00DCF01F0090D3 -:107ED000FE9FFDF8169A029C30ABF01F008EFE9FAD -:107EE000FDEE3017FEFA0230303B029CE34700946F -:107EF000F01F006AE06B2710300CF01F0088E2F8DA -:107F000000D470985808C0500E9BE2FC00C45D1865 -:107F100030EB029CF01F0082300A029BFEFC020440 -:107F2000F01F0081300802994FEA109B33CCF01FFC -:107F3000007F41B9FE9FFE33E2F800D85808FE905A -:107F4000FDC1E34B00D8029C301BF01F0079FE9F5F -:107F5000FDB9582BC780E07A86A0300B029CF01F39 -:107F60000075FE9FFDC8305BE2F801105818C7206D -:107F7000029C300AF01F006FFE9FFDA4E2F9009002 -:107F800072485828FE90FD9E301BCEFBFAC7FF9426 -:107F9000E2C6FF64306A0C9B0E9CF01F0041E2F8C1 -:107FA00001185808FE91FCF8FE9FFCE4029CF01FAB -:107FB00000621896C230F8FB0194580BC1F1795851 -:107FC000E2180013C351189B029CF01F005CE2F8FA -:107FD00000B05808C0701036C050E2FC00E0F01F3E -:107FE0000058E2FC00DC0C9BE34600B0F01F00559B -:107FF000029CF01F0055FE9FFD0D029C303BF01FC0 -:108000000053FE9FFD5FE2F800B05808FE90FCF3BD -:10801000F0F800F0F1D8C002FE91FCEDFE9FFCEFFD -:10802000029C300A30ABF01F0043FE9FFD4B350928 -:10803000FAC8FF70189A10D9029CFAC9FFE4F01F21 -:108040000044CC6B4C3AF01F0015E2F800E8FE9FAC -:10805000FD4F72485818F9B80002E3F80A44F9BB1A -:108060000000C87B0E9BFE9FFD84E2F800B058081C -:10807000FE90FD68F0F800F0F1D8C002FE91FD62BC -:10808000FE9FFD678003D9B880027714800217D065 -:108090008000917C8003D9F880023A1A800091DC3C -:1080A000800091D0800226948003DA3880027638EE -:1080B0008002BA4C80028172800261E8800261D441 -:1080C000800261A480021CE080021DB88002979C9F -:1080D0008002762880021AE08002BA1C8003DAA8A7 -:1080E000800276648003DAE48002D19C80028F549F -:1080F00080021E84800218F88002BD68800091A072 -:10810000800281748002189C800230DC800298A476 -:108110008002246C8003DB0480028F1C800228D83C -:10812000800276CC800274008002747480022794EE -:10813000800225848002195C800222A480025748B4 -:108140008002B9D48002237080022FCC80021F30BD -:108150008003DA68580C5E0E5E1DD401201D3008C5 -:10816000767C3009BA881A9A7668129B5D182FFDC2 -:10817000D8025EFCEBCD40801897580CC090789CDC -:10818000580CC035F01F00040E9CF01F0004E3CD16 -:108190008080000080027584800091E8EBCD40F87B -:1081A0001896129510944063328CF01F000B1897AC -:1081B000C0F00C9B311AF01F00093FFC8F658F74D3 -:1081C0008F838F9C30090E9A485BF01F00060E9C2F -:1081D000E3CD80F880028F24800091AC8002815A28 -:1081E000800272C8D4011698306AF8CBFFEF109C59 -:1081F000F01F0002D80A0000800091DCD431213D3C -:1082000076FE511E760A503A761950497628505813 -:10821000763E506E764A507A7669508976785098D4 -:10822000768E50AE769A50BA76B950D976C850E864 -:1082300076DE189850FEF8C9FFF876EA510A7654AF -:1082400076AB500C5019E02BA44F50CB110EF8CB4D -:10825000FFF45008512E403A700340487205502BED -:10826000E069A478EA19D76AFC0900091409760ABA -:10827000E06BB756EA1BE8C7F40B000B100BF5E5F3 -:108280002008066814581009E06870DBEA182420FA -:10829000EBE3200AF20E1507FDE9139E060EFDEA38 -:1082A000000A0A5A1005140BFDE32008F606150C07 -:1082B000EDEB13461C06EDE800080658405AE0694D -:1082C000CEEEEA19C1BD14051005EDEE2008EA0B4B -:1082D0001511F7E512FB0C0BF7E800081C58120308 -:1082E0004069120310034078E6051516E0690FAFE8 -:1082F000EA19F57CEBE312A5F00900091605F7E68B -:108300002008EBE800080C581C091009EBEB2008CA -:10831000F2031507E7E913930A03E7E80008165884 -:10832000E06AC62AEA1A4787E80A000A0C0A100A15 -:10833000E7E52008F402150CE5EA13420602E5E839 -:1083400000080A58408EE0694613EA19A830FC0973 -:10835000000916091009E5E32008F2061511EDE9F8 -:1083600012F60406EDE800080658409AE06B950105 -:10837000EA1BFD46F40B000B0A0B100B40A840C98A -:10838000F60E1516FE395BB1FDEB12AEE06A98D819 -:10839000EA1A69800C0E40BBF00A000AEDE22008E0 -:1083A000FDE80008045840C1060A50C9100AE069F7 -:1083B000F7AFEA198B44FDE62008F6090009F40B33 -:1083C0001507F7EA139B1C0BF7E800080C58F7EEAB -:1083D000200A0C0104091009F206150CEDE91346F8 -:1083E0001606EDEB2008EDEA000A1C5A1401E2051E -:1083F0001511EBE112F50C05EBE80008165840DA10 -:10840000E069D7BEEA19895CF40900091C09100962 -:1084100040E8F20E1516E06A1122EA1A6B90FDE9A7 -:1084200012AEF00A000A0A0EEBE62008160AFDE872 -:10843000000840FB0C58E0697193EA19FD98100A96 -:10844000F6090009FDE52008F40B1507F7EA139B70 -:108450001C0BF7E800080A580C0910094108F2063D -:10846000150CE06A438EEA1AA679EDE91346F00A84 -:10847000000A1606F7EE2008EDE800081C580A0A64 -:10848000100A4118F4051511E0690821EA1949B4E8 -:10849000EBEA12F5F00900090C05EDEB2008EBE81A -:1084A000000816581C091009F2031516E7E912A373 -:1084B0000A03E7E520080C680A58404EE06A256286 -:1084C000EA1AF61EFC0A000A160A408B100A40D867 -:1084D000F40E1505E069B340EA19C040FDEA13BE89 -:1084E000F6090009060E403B0C09E0665A51EA16EF -:1084F000265EF0060006FDE320080A68065810090B -:10850000E062C7AAEA12E9B6F6020002F20B150908 -:10851000F7E9137B41191C0BF7EE200806681C587D -:108520000A0606021006E063E681EA13D8A1F20308 -:108530000003EC09150EF3E613291609F3EB2008E6 -:108540001C68165840CA10024078E065105DEA15B4 -:10855000D62FE0611453EA110244E8050005F40146 -:1085600000011C051601E40A1514E06EFBC8EA1EA2 -:10857000E7D3F5E212CAF00E000E120AF5E9200860 -:10858000166840BB125812031005E066CDE6EA16E5 -:1085900021E1F6060006EA0B1505F7E513BB140BFF -:1085A000F7EA2008126841091458E06507D6EA1571 -:1085B000C3371001F2050005E2091509F3E113794B -:1085C0001609F3EB20081468165810034068140EBF -:1085D0001606E60A150EE0620D87EA12F4D5F5E3F9 -:1085E000132AF0020002120AF5E92008166840ABCF -:1085F00012581205100EE06314EDEA13455AF60303 -:108600000003FC0B1514F7EE12CB140BF7EA20084D -:10861000126840F91458E061E905EA11A9E310066F -:10862000F2010001EC091505F3E613B91609F3EBA5 -:10863000200814681658100540581402E066A3F884 -:10864000EA16FCEFEA0A1509F0060006F5E5137ACA -:10865000120AF5E9200816681258409E1002160307 -:10866000E40B150EF7E2132B140BF7EA200812683F -:108670001458E06502D9EA15676F1003FC05000580 -:10868000E60E1514FDE312CE160EFDEB200814685D -:1086900016581201100140A840E91406E060F68166 -:1086A000EA108771E20A1505F0000000F5E113BA3F -:1086B0001C0AF5EE200816681C58E0624C8AEA1283 -:1086C0008D2A1006F2020002EC091509F3E613796F -:1086D0001409F3EA20081C681458160540DB10053D -:1086E0004108E434C6BEE0616122EA116D9DE80AEA -:1086F0000007F6010001E066380CEA16FDE5F00619 -:108700000006EA08150EF1E513281208F1E9200B1E -:10871000F7EA000A125A1C021402407A404E120074 -:108720001001E063CFA9EA134BDEF4030003E40A6F -:108730001514F5E212CA100AF5EB200BF5E8200833 -:10874000EE0B000BF6091504F3EB13C914091258CC -:1087500014061000F3EA200AE065EA44EA15A4BE14 -:10876000E008150BFC050005F1E01358120512088E -:10877000105A10031401F1E92009E20B1510F7E17A -:10878000130B100B1659F7E820081206EC0E1517FC -:10879000FDE6129E160E1C5810054098FDEB200AAF -:1087A000EA061504E0694B60EA19F6BBEDE513C66D -:1087B000F00900091C0616090C5AEDEE20081403F6 -:1087C00040CBE605150BEBE313550C050A58E06AA0 -:1087D000BC70EA1ABEBF1009F60A000AEBE62008D0 -:1087E000F20B1510F7E9130B0A0B16581C0A100AA6 -:1087F00040F8F40E1517E0697EC6EA19289BFDEAD9 -:10880000129EF0090009160EF7E520081C580C0905 -:1088100010094038F2061504E06A27FAEA1AEAA1BC -:10882000EDE913C6F00A000A1C06FDEB20080C58FF -:108830000A0A100A4068F405150BE0693085EA1948 -:10884000D4EFEBEA1355F00900090C05EDEE200812 -:1088500016090A58408B1009E06A1D05EA1A0488B7 -:10886000EBE62008F60A000AF20B1510F7E9130BE5 -:108870000A0B16581C0A100A40B8F40E1517E069C6 -:10888000D039EA19D9D4FDEA129EF0090009160E72 -:10889000F7E520081C580C09100940E8F2061504F9 -:1088A000E06A99E5EA1AE6DBEDE913C6F00A000A88 -:1088B0001C06FDEB20080C580A0A100A4118F405A2 -:1088C000150BE0697CF8EA191FA2EBEA1355F009D1 -:1088D00000090C05EDEE200816090A58405B100946 -:1088E000E06A5665EA1AC4ACEBE62008F60A000A0C -:1088F000F20B15101C0AF7E9130BE0692244EA1980 -:10890000F4290A0B1658100A4032F40E15171202F9 -:10891000FDEA129EEA0811FF160E409AFDE81008C3 -:10892000E069FF97EA19432A1658F40900090A0971 -:108930000C0241061002F60811FFE40A1506F5E2E2 -:1089400013AA1C0AF5E810081C58F2080005E06993 -:1089500023A7EA19AB941206FC0811FFEC0B000BDD -:10896000EA06150AEDE513661406EDE8100814583A -:10897000F6080008E069A039EA19FC93F00B150F1E -:10898000FA243942F7E8131BE80900050C0BEA0E3C -:10899000000EF40811FFF7E810080C58E06959C3FD -:1089A000EA19655BFC08000540E2EA0E15151202A3 -:1089B000FDE512BEEC0811FF160EFDE81008165872 -:1089C000E40A000AE069CC92EA198F0CF40800026C -:1089D0004068F00900090C09E40A1506F60811FFC1 -:1089E000F5E213AA1C0AF5E810081C58F208000268 -:1089F000E069F47DEA19FFEF40C1FC0811FF1201A4 -:108A0000E406150AE20B000BE0695DD1EA198584E2 -:108A1000EDE213661406EDE8100814584045F60818 -:108A200000011205E20B150FEA0E000EF7E1131B11 -:108A3000F40811FF0C0BE0697E4FEA196FA8F7E804 -:108A4000100840A30C581203E60A000AFC080005AF -:108A5000EC0811FFEA0E1515FDE512BE160EFDE835 -:108A600010081658F4080003411AF60811FFE069CF -:108A7000E6E0EA19FE2CF4090009E60A15060C09DD -:108A8000F5E313AA1C0AF5E810081C58F2080003C5 -:108A90004088E0694314EA19A301F00900091609A6 -:108AA000FC0811FF40FBE605150AEBE3136514050E -:108AB000EBE810081458F2080008E06911A1EA195F -:108AC0004E08F6090009F20E000EF006150FE069D7 -:108AD0007E82EA19F753EDE81316F40811FF0A062F -:108AE000EDE810080A58FC080001407E120EEA0862 -:108AF00011FFFC0A000AE20E1515FDE112BE0C0E74 -:108B0000FDE810080C58F40800094128F20A15067F -:108B1000F5E913AA1C0AF4080009E068F235EA181E -:108B2000BD3A990940D91009EC0811FFF205000B74 -:108B3000F5E8100840091C58720CF6080001E069BD -:108B4000D2BBEA192AD740581208E20B150AF006E0 -:108B50000009F7E1136BFC0811FF140BF7E810088C -:108B60001458F208000640B8E069D391EA19EB8680 -:108B7000F0090009F20E0008F40A11FF400EEC099A -:108B8000150FF3E613191609F20C000CF3EA100A9C -:108B9000165AF00A0006EC081515F1E612B8100C8A -:108BA0009D0C401A7408120895084028700916098F -:108BB00091092EDDD832D703EBCD40E03809764855 -:108BC000F1D8C066F608000AF56900181895F00A91 -:108BD000113F1697F6080008F0CCFFE7587AE08BB3 -:108BE0000056300BF01F002DEEC6FFE8EECCFFA8BC -:108BF0000C9B1798178917BAF3E8108917A8F1EAA0 -:108C00001088F3E8110916A9183BCF410C9B0E9C64 -:108C1000F01F0023338A300B0C9CF01F00200C9BAC -:108C2000ECCCFFC81798178917BAF3E8108917A872 -:108C3000F1EA1088F3E8110916A9183BCF416E48F4 -:108C40006E590C9B0E9CEF480050EF490054F01FEA -:108C500000140E9BEECCFFF01798178917BAF3E8B3 -:108C6000108917A8F1EA1088F3E8110916A9183B32 -:108C7000CF410E9B0A9C310AF01F000A0E9C304A1D -:108C8000300BF01F0006E3CD80E0208A300BEEC6EB -:108C9000FFE8F01F0002CC4B800091D0800281FCE5 -:108CA000800091DCEBCD40FC1493784AF40300384B -:108CB000103AF9F98005F9F9B005F7B90BFFF9F9A0 -:108CC000BA059948E608161DF20800089958189444 -:108CD0001692F1DAC066C381F8C5FFE8E043003FB1 -:108CE000E088002C3006EAC7FFC0E406000B340A17 -:108CF0000A9CF01F00290A9B1798178917BAF3E8F6 -:108D0000108917A8F1EA1088F3E8110916A90E3B9B -:108D1000CF410A9B089CF01F00212C06E6060108A3 -:108D2000E048003FFE9BFFE3E6C80040E7D8C006EE -:108D3000E018FFC02C081002069A049B0A9CF01F42 -:108D40000016E3CD80FCF00711402E88100C0E3386 -:108D5000C1D30E9AF01F0010E8C5FFE8E8CCFFA8C9 -:108D60000A9B1798178917BAF3E8108917A8F1EA30 -:108D70001088F3E8110916A9183BCF410E130E0213 -:108D80000A9B089CF01F0005CAAB069AF01F000260 -:108D9000E3CD80FC800091DC800281FCEBCD40FCC7 -:108DA000216DE0682301EA186745E06EAB89EA1E91 -:108DB000EFCD30075008501EE068DCFEEA1898BA84 -:108DC000E06E5476EA1E1032504750575028503EFD -:108DD00018931292580CC140149416951A962FF7B6 -:108DE000090A0B0B1A9CF01F00080E33FE9BFFF9BB -:108DF0001A9B049CF01F00052EADE3CD80FC1A9653 -:108E0000CF8B000080028CA480028BB8D431FACDC5 -:108E10000088501C500B14931292109142B0585A73 -:108E2000E08B0056E04B0040E08B0054FAC4FFF8A2 -:108E3000340A300B089CF01F002E400A401B089C8F -:108E40000896F01F002CFAC5FFB808970D88EC189B -:108E500000360CC80A36CFB1340851845128580363 -:108E6000C110FACCFF9CFACBFFB4300AE60E150213 -:108E7000E40A030818A8E20A030916A92FCA1C3A33 -:108E8000CF81E6CCFFFF00990A9AFAC3FFA0069BA8 -:108E9000F01F0019340A300B089CF01F0015400A1F -:108EA000401B089CF01F00130F88EC18005C0EC8D4 -:108EB0000C37CFB1310C3408513C5184519000999A -:108EC0000A9A069B5128302CF01F000B2DEDD8324A -:108ED000FAC6FF881A9A0C99FACBFFFC301CF01FD7 -:108EE0000006310850165008CA2B0000800091D0AF -:108EF000800091DC80028D9CD401202D501A5009F5 -:108F0000301A1AD8FAC9FFF8FAC8FFFCF01F00039C -:108F10002FFD2FEDD802000080028E0C5EFC5EFE5D -:108F20005EFCD703EBCD40C01896F01F00061897E3 -:108F3000C0500C9A300BF01F00040E9CE3CD80C093 -:108F400080009200800091D0D401F01F0002D80A66 -:108F500080014600D401F8CBFFFCF01F0002D80AC4 -:108F6000800145D4780C580C5E0C3008F948004C50 -:108F7000780C580CCFC15EFC580CF9FC10435EFC19 -:108F8000580CF9B80100F9F81A435EFCEBCD40E04B -:108F9000189716961495314CF01F0005F9F71A032F -:108FA000F9F61A04F9F51A02E3CD80E080028F2465 -:108FB000EBCD40E01696149578075807C160580627 -:108FC000C080306A0C9BEECCFFC0F01F000AC0A12D -:108FD0005805C0B0EECCFFFC310A0A9BF01F00051B -:108FE000C0406E075807CEC10E9CE3CD80E0000064 -:108FF0008000917CEBCD4040781820181696991887 -:10900000784B78390C9C5D190C9CF01F0003E3CD64 -:1090100080400000800091E8EBCD4080202D300A98 -:109020001897189B49BCF01F001C300A0E9B49BCC6 -:10903000F01F00196E085808C2201A9CF01F001873 -:109040006E08400A70EC0E993008141C109BF8084A -:109050000C4C490A2FFCF01F00136E2BF6FA010C82 -:10906000580AC1006E08400A712C0E99141C300871 -:1090700048AAF8080C4C109BF01F000A2FEDE3CD16 -:109080008080F6CBFEB80E9CF01F0007CF80CEBBD1 -:10909000800290E4800274008002913080028F543C -:1090A0008002747480028FB0EBCD40C01896580CCB -:1090B000C1407809300899085809C031C0880E9914 -:1090C0007207129CF01F00065807CFA10C9CF01FDE -:1090D00000050C9CF01F0002E3CD80C0800091E8E9 -:1090E00080029018EBCD4080202D18971A9CF01F1D -:1090F000000E6E0A580AC0C1C1087408149B8F087C -:10910000300A0E9CF01F00096E0A580AC06074E90C -:1091100040081039FE9AFFF30E9CF01F00052FED5A -:10912000E3CD808080028F5480028FF480029018FB -:10913000D4013008782AF548010C7829F2FC0104A2 -:10914000F01F0002D8020000800255ACD43120CDBF -:109150001096782814941293E04A00205FBAF0F930 -:109160000160189758295F18169241511448C05051 -:1091700030060C9C2F4DD832354CF01F00621890F1 -:10918000CF80089A049B2ECCF01F005F81D4FAC9CF -:10919000FFE450965083FAC5FFF84DC81AD5303A0F -:1091A000089B049C4DA65086F01F005AE0C8FFFCA7 -:1091B0000A9B5018310A109CF01F0053FACCFFD4C0 -:1091C000F01F0055E0C8FFC0502840BC6E29F2F8DF -:1091D0000150F808000881E86E2AF4FB0150F4F908 -:1091E0000154E06A851FEA1A51EBB739F20A0648C2 -:1091F000301AA599180981FAE1490048306A402CD3 -:10920000069BF01F0041E141004C2FFD6E06580601 -:10921000C2903005C0680C956C0C580CC58018962F -:10922000ECCBFFC0306A069CF01F003CCF516CD8DD -:109230000838C5505805EDF80000EFF80A00EDF8C1 -:109240001000EBF81A006E29F2F8010C0C38F9B88E -:109250000000F3F80A430C9B301A0E9CF01F0030FC -:109260006E066E1859F8E08A00155806C3200C9A4D -:1092700015088F086E28F0F90128ECCBFFC0720C9E -:1092800072F85D180C9B300A0E9CF01F00256E06CC -:109290005806C1F060EA6CE8103AC074C1A872E8E0 -:1092A0001438E089000612966C095809CF9181099B -:1092B0008D006E2C6E18400A401B2FF88F18F8F99D -:1092C00001280096720C72E85D18C54B6E06CCAB97 -:1092D00081068F000E9CF01F0013CECB089A049BD2 -:1092E000ECCCFFECF01F000DCA61310A400BECCC56 -:1092F000FFFCF01F000AC9F1009CF01F000BC3AB7C -:1093000080028F24800091DC8003DB248003DB9CBF -:109310008002B14480028F548000917C80028FF4DF -:1093200080029018800091E8EBCD4080189E78076D -:10933000580BC06116970E9CE3CD80806E075807CE -:10934000CFB06F381638CFB11AD814997C286EDA9E -:10935000F0C8FEC8EECBFFEC1C9CF01F00092FFDEF -:10936000580CF8071700EFF8100EF9F81A0EF80766 -:109370001710F9B80101F9F81A14CDEB8002914CDD -:10938000EBCD40FC1897300CEF4C010C1496129268 -:109390001094EEF50108580BC080169A189B0A9C91 -:1093A000F01F0016EF4C010C58065F13EEFC010C89 -:1093B000580C5F09F3E30008C16158045F18F3E833 -:1093C0000008C0A05803C0800C9A049B0A9CF01FA0 -:1093D000000CEF4C010C580CF9BC00FFF9BC01006B -:1093E000E3CD80FC300A0C9B0A9CF01F00045F094F -:1093F000EF4C010CCE3B000080028FB0800293281E -:109400000000000000000000EBCD4080580CC100BF -:10941000F8F901103008F94801105809C031C08826 -:109420000E997207129CF01F00045807CFA1E3CDDC -:1094300080800000800091E8EBCD40C01897580C68 -:10944000C250F8F801245808C210189B300A491C71 -:10945000F01F0011EEFC0124F01F00103006306AEE -:109460000C9BEF460124EECCFEE4F01F000DEEFC59 -:109470000114F01F000CEF460114EEFC0118580C0B -:10948000C050F01F0008EF460118E3CD80C0000077 -:109490008002996880027400800256EC800091D0AE -:1094A00080028174EBCD40F8205D189716951494D6 -:1094B000F8F601245806C0503FFC2FBDE3CD80F8DC -:1094C000F8FA012817D81AD817C91AD917B81AD80C -:1094D00017A91AD917981AD81789301B1AD9740CDA -:1094E0004C6AF01F0047EEC3FEC81AD60E984C59BE -:1094F000E06A88C7069BEEFC0140F01F0043EF4C7A -:1095000001142F9D580CC6F0EEFC0144580CC0E02D -:109510001AD6069B0E984BB9E06A88C7F01F003A2E -:10952000EF4C01182FFD580CC5E0340CF01F00372C -:109530001896C5B0EEF8012870099909EEF80128CF -:109540003019700A4B2899199928994A99374B185C -:10955000EEF9012C998899599967EEF8012871095B -:1095600099A9EEF80128711999B9F01F002BEF4C59 -:109570000124C3D0314A300B1A9CF01F0028EEF9A9 -:1095800001305804E9F8105FFBF81A03300650293F -:109590001A9A089B50165006EEFC0124F01F00207A -:1095A000306830593FFAEEFC0124149BF01F001D77 -:1095B000306A0A9BEECCFEE4F01F001B301BEEFC71 -:1095C0000124F01F001A301BEEFC0124F01F0018CC -:1095D0000C980E99497A0C9BEEFC0158F01F00166E -:1095E0000C9CC6CB3FECC6AB3FCCC68B0C9CF01F93 -:1095F00000133FDCC63B00008003DBA880023A1A60 -:1096000080029AF08002819C80028F2480029A243A -:10961000800299C48002609C800091D08002581C16 -:1096200080025564800091DC800261D4800261E890 -:109630008002996880027474800091E8EBCD40FC50 -:109640001897F8F801105808C6F0F8F801284CAA45 -:10965000700C301BF01F0049EEF801245808C0A020 -:10966000EEF801284C6A700C301BF01F0044E3CD6B -:1096700080FCEEF801605828CF41EEF80128700C0C -:1096800070295D19587CCED1EEF8016C5818CE9136 -:10969000EEF501105805C410EEC2FEB8EAC3FFFC97 -:1096A000300A069BEEFC0108F01F0036306A189461 -:1096B000069B049CF01F0034C0605804C3706948C6 -:1096C0005808C341EB3800091AD8EB3800081AD8FB -:1096D0000BF81AD80BE8EEF601281AD80BD91AD9CC -:1096E0000BC84AAA1AD8301B6C0CF01F00242FADEF -:1096F0005804C090EEF90128E8CAFFFC069B720CE2 -:1097000072E85D186A080A9CEF480110F01F0020FB -:10971000EEF501105805CC31EEF8012849DA700C4D -:10972000301BF01F0016E3CD80FCEB3800091AD87F -:10973000EB380008EEF601281AD80BF81AD80BE817 -:109740001AD80BD91AD90BC8493A1AD8301B6C0C45 -:10975000F01F000A6A08069BEEFA0134EF48011078 -:109760000E9CF01F000E0A9CF01F00092FADE3CDE8 -:1097700080FC00008003DBEC80023A1A8003DC14DA -:1097800080028FB08000917C8003DCA0800091E893 -:109790008003DCFC8003DC4C800294A4EBCD40F819 -:1097A0001695189414931297F8FB0134580BC05077 -:1097B000F6F801485808C5D15807C4C0E8F60110AA -:1097C0005806C4A03007C0680C976C0C580CC440F5 -:1097D0001896306A0A9BECCCFFFCF01F002CCF518E -:1097E0005807EDF81000EFF81A00EDF80000E9F85E -:1097F0000A44E04303E7E08A003BE8FA0110580A14 -:10980000C4006C3B74381638C065C3B8723816385B -:10981000C054129A74095809CFA18D0995061AD31C -:109820000BD80B8CE8F601281AD80BC91AD90BB83B -:109830001AD80BA91AD90B98495A1AD8301B1ADC16 -:109840006C0CF01F0014089CF01F00132F9DE3CD3B -:1098500080F8E3CD80F8310CF01F00101896C0F0AE -:10986000306A0A9BECCCFFFCF01F000D8D33CC6BF3 -:109870000A9AF8FC0108F01F000BC9FBE3CD80F841 -:109880008D0AE9460110CCCB8000917C8003DD2459 -:1098900080023A1A8002963C80028F24800091DC7C -:1098A00080029328EBCD40F8208D169414971895DC -:1098B000F8F801345808C470F01F0027EEC6000104 -:1098C000C426E068009C1A93EC080248E8080007E8 -:1098D000EAC4FEB8C0682016EEC7009C5806C3351F -:1098E000EAF901346EAA7258103ACF61724BEECC8D -:1098F000FFFAF01F001ACF01306A089B0E9CF01F80 -:109900000017CEA0EEFB0080580BCE601A9AEECC6A -:10991000FFA8F01F0013CE01189A0E9BEAFC010865 -:10992000F01F0010C13079485808CD604048EDB8AC -:109930000000CD213019E06A03E80E9B0A9CF01F5D -:10994000000ACCAB2F8DE3CD80F84048F3D8C0019E -:10995000CF3B0000800294088000917C8002BD68AB -:1099600080028FB08002979CEBCD4060F9380121D6 -:10997000F8F501281AD8F93901201AD9F938011F48 -:109980001AD8F939011E1AD9F938011D1AD8F9392E -:10999000011C489A1AD9302B18966A0CF01F000740 -:1099A0000C9CF01F00070C9CF01F00062FADE3CDB0 -:1099B000806000008003DD6C80023A1A80029438D7 -:1099C0008002963CEBCD40E0201D1897F8F801147A -:1099D0005808C0613FF60C9C2FFDE3CD80E0F8F8FD -:1099E0000128300C5C791ADC5C5B700C70D6FAC80C -:1099F000FFFC5D162FFD1895580CCED01899400825 -:109A0000E06A88C7EECBFEE4EEFC0114F01F000410 -:109A100018960A9CF01F0003CDFB000080028154C1 -:109A2000800091E8EBCD40E0208D14971896580BFC -:109A3000C2614A781AD8EEF60128EF3801211AD807 -:109A4000EF3901201AD9EF38011F1AD8EF39011E5A -:109A50001AD9EF38011D1AD8EF39011C49DA1AD981 -:109A6000302B6C0CF01F001C0E9CF01F001C0E9C79 -:109A7000F01F001B2F9D2F8DE3CD80E01A95320A39 -:109A80001A9BF01F0018C1211A9B320AEEF801340C -:109A90008F8A1AD8EEC9FEE4EEC8FEC8EEFC0108B3 -:109AA000F01F001149182FFDCC6B0C9C310A1A9B3A -:109AB000F01F000CC090EEF8012848DA700C302B33 -:109AC000F01F0005CB7B1A9B310ACE1B8003AD2C07 -:109AD0008003DE1880023A1A800294388002963C95 -:109AE000800257CC8002914C8003DDB48003DDCC32 -:109AF000EBCD40F81897169514931294F8F80124BA -:109B00005808C090F8C6FEE4306A48BB0C9CF01FB1 -:109B1000000BC031E3CD80F80C9C306A0A9BF01F2B -:109B20000007CF910899069A0A9BEEFC0124F01FCA -:109B30000004CF1B800294008000917C800261FCB5 -:109B4000EBCD40F8FACD01001293109418961697B9 -:109B5000149530081A99F2080B082FF8E048010014 -:109B6000CFB1300E1A9C1C9BEC0B0709198AFC0A1A -:109B700000081208FAC9FF00FDD8C0081C09F33814 -:109B8000FF0018C8F36AFF002FFBFAC8FF000E3B66 -:109B9000F9BB0200103CCE915805C4C0300E1C9792 -:109BA0001C9CF8C8FFFFFACAFF00F9D8C008180AC1 -:109BB000F53BFF00F60E0008FAC9FF00FDD8C0080B -:109BC0001C09F338FF00F568FF00F36BFF002FF767 -:109BD0000E35FE9BFFE85804C2A006963007F8C871 -:109BE000FFFFFACAFF00F9D8C008180AF539FF00CC -:109BF000F20E0008FACBFF00FDD8C0081C0BF738A6 -:109C0000FF00F568FF00F769FF00F538FF00100955 -:109C1000F3D9C008FACAFF00120A0D89F538FF000F -:109C200012580CC82FF70E34FE9BFFDB2C0DE3CD32 -:109C300080F80A9E0A9CCD0BD401129E16981899A2 -:109C40001C9B149C300AF01F0002D80280029B402B -:109C500000000000D431FACD0180340AFAC4FEC0FD -:109C6000510C089CF01F04BF688A516A689950A97A -:109C700068A8509868B65086684568216830416683 -:109C800050E5685250D2686A50CA687950B968087D -:109C90005158E3E8200868D50C580A586812F00AB1 -:109CA000150150F2F5E813FA517A68E868F640E5D4 -:109CB00040A9105940980C580A5802580059F00A07 -:109CC00015010459F5E813FAF20215014178E5E9A6 -:109CD00013F2519A518240C54089105968C80458FE -:109CE00040E20A58045840D6F00A15010C59F5E82C -:109CF00013FA005951AA419840B640D5416240CA72 -:109D0000F2071501EFE913F768D9105968E80E5802 -:109D1000045814580C590A59F0051501F20615019A -:109D2000EBE813F5EDE913F640B851C551B641A281 -:109D300068F940AA416504591459105941780C58E2 -:109D400040960C580A58F2021501F00A1501E5E98F -:109D500013F2F5E813FA41C851EA51D2408640A502 -:109D6000409A418910594198045868C204581458BF -:109D70000C590A59F0051501F2061501EBE813F527 -:109D8000EDE913F6408851F6520541E268DA68C5FC -:109D9000EFE220091459105941A80C5868E60C58F4 -:109DA0000A58F2021501F00A1501E5E913F2F5E887 -:109DB00013FA52124208522A41B968F668D568EA85 -:109DC000105941C804584172045814580C590A5982 -:109DD000F0051501F2061501EBE813F5EDE913F6B0 -:109DE0005245523668F84222418A417541D9045998 -:109DF0001459105941E80C5841960C580A58F2026F -:109E00001501F00A1501E5E913F2F5E813FA4248E5 -:109E1000418641A5525241F9105942080E59045841 -:109E20000C5941920A580458526AF20A1501F5E990 -:109E300013FAF0091501F3E813F9426841B641C578 -:109E400041A2527A52894219105942280C59145889 -:109E50000E590A580458F20A1501F5E913FAF009E7 -:109E60001501529AF3E813F9428852A941D641B537 -:109E700041E2423910594248145841CA0458145812 -:109E80000C5941FA0A59F0051501F2061501EBE8E3 -:109E900013F5EDE913F641D852C542A241E552B699 -:109EA00042590459145942CA105942680C58420682 -:109EB0000C580A5841F6F20E1501F0021501FDE9A1 -:109EC00013FEE5E813F2421942781458420A42257B -:109ED000125842890C581C59F00615010A59EDE830 -:109EE00013F61459F20A1501F5E913FA0C951493B7 -:109EF000423952E652FA4216424A52D24298045825 -:109F0000125842A90C580A5942261459F00A150150 -:109F1000F5E813FA0C59530A1496F2081501425A3F -:109F2000F1E913F84239109C531842B806581458F6 -:109F3000426A125842C90C591459424A1459F00A3B -:109F40001501F5E813FAF2081501F1E913F8109B71 -:109F500053384278FDEC20091059425810595019D5 -:109F60004289E5EA200812584269125840195008FF -:109F70004018A178F1E913F8400953484008A17846 -:109F8000F1E913F853584298EBEB20091059427845 -:109F9000105942A850194349E7E92009105942884D -:109FA000105940185009532A4019A179F3E813F9C0 -:109FB000400853694009A179F3E813F953794358EC -:109FC000EDE8200942B810594298105942C850197A -:109FD0004369F9E92009105942A81059401850095D -:109FE0004019A179F3E813F9400853894009A17990 -:109FF000F3E813F943785399F5E8200942B81C595E -:10A00000105950194389F7E92009129842C9045898 -:10A010001258401950084018A178F1E913F8400986 -:10A0200053A84008A178F1E913F8434953B843987D -:10A0300010590A591C59501943A94358125840192C -:10A04000065804584012A172E5E913F253C2F00217 -:10A050001501E5E813F243B84369105943780C59E8 -:10A060000A5943C50A581858065853D2F202150126 -:10A07000E5E913F2F0091501F3E813F943D853F9B0 -:10A08000438910594398145904580C5916581858B4 -:10A0900053E243F54342F20C1501F0061501F9E9CC -:10A0A00013FCEDE813F643A943B80A5918580459AC -:10A0B0001459435A145816585406436A4402F20677 -:10A0C0001501F0051501EDE913F6EBE813F543482A -:10A0D00054255416435543C904591459105943D8AB -:10A0E000F20215010C58E5E913F2437654320C588C -:10A0F0000A58F00A1501F5E813FA544A890A442966 -:10A1000043864365437A43E8125843F90C5804598F -:10A110000A584392F0061501EDE813F654568916D5 -:10A1200004591459F2051501EBE913F55465892515 -:10A13000444243AA4389F9E2200814581258F00215 -:10A140001501E5E813F25472439544090C5943B6DE -:10A1500089320C590A59F20A1501F5E913FA548AA1 -:10A16000894A43C6446943A5441812580C580A58F2 -:10A17000F0061501EDE813F6549643BA4429045944 -:10A1800043D2895604591459F2051501EBE913F528 -:10A1900054A58965448243EA43C944380458145895 -:10A1A0001258F0021501E5E813F254B243D54449C0 -:10A1B0000C5943F689720C5944080A59446A045AE6 -:10A1C000105A0C5AF2061501EDE913F654C6447BF9 -:10A1D00089860C5BF4061501EDEA13F654E6441586 -:10A1E00044A243E9445889A60A5B045818581258F7 -:10A1F000F0051501EBE813F554D58995185BF602C7 -:10A200001501E5EB13F254F289B2444A4489449BA8 -:10A210000A590C5B4405442644A804581458F3E634 -:10A22000200A0C580A5A5028E0657999EA155A8292 -:10A23000504A410644325116441AEE050009F7E22D -:10A2400020081458E062EBA1EA126ED95038507918 -:10A25000040E0C99506EE068BCDCEA188F1B0C9A57 -:10A26000100C2F8A505C512A1306511941087403AF -:10A27000720C2F485138410A2F0A514A700A41483E -:10A28000700941580A08F0090009EC081505F1E6C3 -:10A2900013B8F2080008F5E3200918691459F00909 -:10A2A000000740F80A08F00A0009F80B151EF7EC41 -:10A2B000122BF7E320080C680658F2080008EE0994 -:10A2C0001505F3E713B9EC0A151EF009000EF5E6C3 -:10A2D000122AFC091505F7EA2008F3EE13B9EFE896 -:10A2E000000816580A01EE0C151E0601F9E7122C9B -:10A2F0001001F9EA200812011C68E209150514583A -:10A30000F3E113B90A001600100040E812000A0831 -:10A31000F00A0009FC0B151EF7EE122BF7EC2008D3 -:10A3200002681858F2080008E0091505F3E013B9AF -:10A33000F009000640D80A08F00C0009E20A151ED0 -:10A34000F5E1122AF5EB200800681658F20800081B -:10A35000EC091505F3E613B9F009000E40C80A0828 -:10A36000F00B0009E00C151EF9E0122CF9EA2008A8 -:10A370000C681458F2080008FC091505F3EE13B92F -:10A38000F009000340B80A08F00A0009EC0B151E9A -:10A39000F7E6122BF7EC20081C681858F2080008A2 -:10A3A000E6091505F3E313B9F009000641680A0848 -:10A3B000F00C0009FC0A151EF5EE122AF5EB200838 -:10A3C00006681658F2080008EC091505F3E613B9FB -:10A3D000F009000E40A90A091609E60C151EF9E35A -:10A3E000122CF9EA20080C681458F2080008FC093D -:10A3F0001505F3EE13B9F009000340980A08F00AB6 -:10A400000009EC0B151EF7E6122BF7EC20081C6870 -:10A410001858F2080008E6091505F3E313B9F00926 -:10A42000000640890A091809FC0A151EF5EE122AD1 -:10A43000F5EB200806681658F2080008EC09150527 -:10A44000F3E613B9F009000E68C80A08F00B00091A -:10A45000E60C151EF9E3122CF9EA20080C681458D2 -:10A46000F2080008FC091505F3EE13B9F009000124 -:10A4700068D90A091409EC0B151EF7E6122BF7EC44 -:10A4800020081C681858F2080006E2091505F3E1D7 -:10A4900013B968E8EC0900030A08F00C0009FC0A8B -:10A4A000151EF5EE122AF5EB200802681658F20880 -:10A4B0000008E6091505F3E313B9F009000E68F981 -:10A4C0000A091609E20C151EF9E1122CF9EA200816 -:10A4D00006681458F208000BFC091505F3EE13B9D1 -:10A4E0004178F60900000A08F00A0009E606151E80 -:10A4F000EDE31226EDEC20081C681858F208000A5B -:10A50000E0091505F3E013B9F409000341890A09CC -:10A510001809FC0A151EF5EE122AF5E62008006857 -:10A520000C58F208000CE6091505F3E313B941983D -:10A53000F80900010A08F0060009E00B151EF7E013 -:10A54000122BF7EA200806681458F2080008E209FE -:10A550001505F3E113B94077F009000E1407FC0963 -:10A560001505E60A151EF3EE13B9F5E3122AF5EB0D -:10A57000200802681658EE080008F009000341A8F8 -:10A580000408F00B0009E20C151EF9E1122CF9EA9F -:10A5900020081C58F2080008E6091505F3E313B972 -:10A5A000F009000541B904091409FC0B151EF7EE6A -:10A5B000122BF7EC20080658F2080008EA091505E6 -:10A5C000F3E513B9F009000641C80408F00C0009CE -:10A5D000E60A151EF5E3122AF5EB20080A58F208E0 -:10A5E0000008EC091505F3E613B9F009000E41D98E -:10A5F00004091609EA0C151EF9E5122CF9EA2008DF -:10A600000C58F2080008FC091505F3EE13B9F0091F -:10A61000000541E80408F00A0009EC0B151EF7E6F6 -:10A62000122BF7EC20081C58F2080008EA0915055F -:10A63000F3E513B9F009000641F904091809FC0A09 -:10A64000151EF5EE122AF5EB20080A58F20800084C -:10A65000EC091505F3E613B9F009000E42080408E9 -:10A66000F00B0009EA0C151EF9E5122CF9EA200896 -:10A670000C58F2080008FC091505F3EE13B9F009AF -:10A680000005421904091409EC0B151EF7E6122BFC -:10A69000F7EC20081C58F2080008EA091505F3E554 -:10A6A00013B9F009000642280408F00C0009FC0A5E -:10A6B000151EF5EE122AF5EB20080A58F2080008DC -:10A6C000EC091505F3E613B9F009000E4239040947 -:10A6D0001609EA0C151EF9E5122CF9EA20080C58A7 -:10A6E000F2080008FC091505F3EE13B9F00900059E -:10A6F00042480408F00A0009EC0B151EF7E6122B7D -:10A70000F7EC20081C58F2080008EA091505F3E5E3 -:10A7100013B9F0090006425904091809FC0A151E6C -:10A72000F5EE122AF5EB20080A58F2080008EC09A9 -:10A730001505F3E613B9F009000E42680408F00BA2 -:10A740000009EA0C151EF9E5122CF9EA20080C584C -:10A75000F2080008FC091505F3EE13B9F00900032F -:10A76000427904091409EC0B151EF7E6122BF7ECDD -:10A7700020081C58F2080008E6091505F3E313B990 -:10A78000F0090005428904091809FC0A151EF5EEB6 -:10A79000122AF5EB20080658F2080008EA09150508 -:10A7A000F3E513B9F009000E429904091609E60C05 -:10A7B000151EF9E3122CF9EA20080A58F208000BDA -:10A7C000FC091505F3EE13B9F609000042A90409C6 -:10A7D0001409EA06151EEDE51226EDEC20081C58BA -:10A7E000F208000AE0091505F3E013B9F4090003C3 -:10A7F00042B9FC0A151E0409F5EE122A1809F5E6FD -:10A80000200800584065F208000C1405E6091505FB -:10A81000E00B151EF3E313B9F7E0122BF809000162 -:10A82000F7EA200AE2081505065AF1E113B842C911 -:10A8300004090C091409E60A151EF208000EF5E3D6 -:10A84000122AF5EB20080258EA080008E066BCDC92 -:10A85000EA168F1BFC091505F3EE13B9F009000089 -:10A8600042D80C08E20C151EF00B0002F9E1122C84 -:10A87000FDEC0008FDEC100914691049E00815050D -:10A88000F1E013B8E4090009F208000242E80C08FC -:10A89000FC0B151EF00A0005F7EE122BE1EB000889 -:10A8A000E1EB100918691049E4081505EA090009E7 -:10A8B000F1E213B8E00A151EF2080005F5E0122ACD -:10A8C00042F9E5EA00080C09F20C0003E5EA100978 -:10A8D00016691049EA081505F1E513B8E6090009FB -:10A8E000F208000343080C08E40C151EF00B0006E8 -:10A8F000F9E2122CEBEC0008EBEC1009146910499A -:10A90000E6081505EC090009F1E313B8EA0B151E7A -:10A91000F2080006F7E5122B4319E065BCDCEA15E6 -:10A920008F1BE7EB00080A09F20A000AE7EB10099F -:10A9300018691049EC081505F1E613B8F409000987 -:10A94000F208000243280A08E60A151EF00C000C63 -:10A95000F5E3122AEDEA0008EDEA1009166910493C -:10A96000E4081505F8090009F1E213B8EC0C151E0E -:10A97000F208000EF9E6122C4339E5EC00080A094A -:10A98000F20B000BE5EC100914691049FC081505E1 -:10A99000120BF1EE13B84349F6080005E40B151E3F -:10A9A000F7E2122BE062BCDCEA128F1BFDEB000821 -:10A9B0000409F20A000AFDEB100918691049EA08B7 -:10A9C0001505F1E513B8F4090009F208000643582B -:10A9D0000408FC0A151EF00C000CF5EE122AEBEA36 -:10A9E0000008EBEA100916691049EC081505F8098A -:10A9F0000009F1E613B8EA0C151EF208000EF9E59D -:10AA0000122C4369EDEC00080409F20B000BEDEC8D -:10AA1000100914691049FC081505F1EE13B8F60980 -:10AA20000009F208000543780408EC0B151EF00A33 -:10AA3000000AF7E6122BFDEB0008FDEB1009186980 -:10AA40001049EA081505F4090009F1E513B8FC0AF4 -:10AA5000151EF2080006F5EE122A4389EBEA0008FB -:10AA60000409F20C000CEBEA100916691049EC0815 -:10AA70001505F1E613B8F8090009F208000E43982D -:10AA80000408EA0C151EF00B000BF9E5122CEDEC96 -:10AA90000008EDEC100914691049FC081505F609C9 -:10AAA0000009F1EE13B8EC0B151EF2080005F7E6ED -:10AAB000122B43A9FDEB00080409F20A000AFDEB82 -:10AAC000100918691049EA081505F1E513B8F409E9 -:10AAD0000009F208000643B80408FC0A151EF00C31 -:10AAE000000CF5EE122AEBEA0008EBEA10091669F1 -:10AAF0001049EC081505F8090009F1E613B8EA0C4D -:10AB0000151EF208000EF9E5122C43C9EDEC000801 -:10AB10000409F20B000BEDEC100914691049FC0854 -:10AB20001505F1EE13B8F6090009F208000343D841 -:10AB30000408EC0B151EF00A000AF7E6122BFDEBD9 -:10AB40000008FDEB100918691049F4090009E6082E -:10AB50001505F1E313B8F208000543E90409FC0AFE -:10AB6000151EF20C000CF5EE122AE7EA0008E7EADF -:10AB7000100916691049F8090009EA081505F1E5F8 -:10AB800013B8F208000E43F90409E60C151EF20B87 -:10AB9000000BF9E3122CEBEC0008EBEC1009146944 -:10ABA00010494057FC0815051407F1EE13B8F609D3 -:10ABB000000AEA0B151EF7E5122BFDEB0009F4085D -:10ABC0000003FDEB1008E60A15051868F5E313BA53 -:10ABD0001248EE080009F20A00054409E06AC1D6ED -:10ABE000EA1ACA6214091809FC06151EEDEE1226AF -:10ABF000EDEB20080658F2080008EA091505F3E510 -:10AC000013B9F009000A4419E068C1D6EA18CA620B -:10AC100010091609E60C151EF9E3122CF9E62008B6 -:10AC20000A58F2080008F4091505F3EA13B9EA0B0B -:10AC3000151EF0090003F7E5122B4429E065C1D683 -:10AC4000EA15CA620A090C09F7EC20081458F20840 -:10AC50000008E6091505F3E313B9F009000EFC0935 -:10AC60001505F3EE13B9F406151EEDEA1226443A63 -:10AC7000EDEB20080A0A0658180A100A120A44497D -:10AC80000A091609E60C151EF9E3122CF9E620084C -:10AC90001C58F2080008F4091505F3EA13B9FC057D -:10ACA000151EF0090003EBEE1225E6091505EBEC85 -:10ACB0002008F3E313B91458E062C1D6EA12CA625D -:10ACC000445B040B0C0BF406151E100BEDEA122668 -:10ACD000120BEDE52008F60915050658F3EB13B93C -:10ACE000446A040A180A100A4478F409000E040899 -:10ACF000F0050009E60A151EF5E3122AF5E620081C -:10AD00001658F2080008FC091505F3EE13B9F0090E -:10AD10000005448904090C09F60C151EF9EB122CE8 -:10AD2000F9EA20081C58F2080008EA091505F3E5BD -:10AD300013B9F009000344980408F00A0009FC0B59 -:10AD4000151EF7EE122BF7EC20080A58F20800083F -:10AD5000E6091505F3E313B9F009000E44A9040947 -:10AD60001809EA06151EEDE51226EDEB2008065837 -:10AD7000F2080008FC091505F3EE13B9F009000507 -:10AD8000EA091505F3E513B944BAE60C151E040AE1 -:10AD9000F9E3122C160AF9E620081C58100A120AC8 -:10ADA00044C904090C09FC0B151EF7EE122BF7EC35 -:10ADB00020080A58F2080002F4091505F3EA13B94D -:10ADC00044D8E409000EE069C1D6EA19CA62120843 -:10ADD000EA06151EF00C0009EDE51226EDEB200841 -:10ADE0001458F2080008FC091505F3EE13B9F00930 -:10ADF000000CE068C1D6EA18CA62F405151EF8090D -:10AE00001505EBEA1225F3EC13B944EA100AEBE658 -:10AE10002008160A1C58100AFC02151EF40900012D -:10AE2000E5EE1222E06AC1D6EA1ACA62E5E5200818 -:10AE3000E20915051858F3E113B944FB140B404A15 -:10AE40000C0BA17A100B44B8F609000E4049F5E945 -:10AE500013FA14584459F1E9200B4438E069C1D67B -:10AE6000EA19CA6289CAF7E820074108F806151EE0 -:10AE7000120AEDEC1226700CEDE22008120C0258BA -:10AE8000FC091505F3EE13B90A0AE203151E100AB0 -:10AE9000E7E11223120AE7E62008E069C1D6EA19C1 -:10AEA000CA621C5840354030A170E1E513F0E0095A -:10AEB000000BF4091505040BF3EA13B9100B402835 -:10AEC0004021120BE065C1D6EA15CA62A171E3E820 -:10AED00013F1E2050008F0060009FC02151EE5EE7C -:10AEE0001222E5E320081458F2080008F6091505B7 -:10AEF000F3EB13B9F406151EF009000EEDEA122665 -:10AF0000EE051501410AEBE713F5EDE220080A0C06 -:10AF10001658060CFC091505100CF3EE13B9120CAB -:10AF2000950C411972081C089308F609151E412A50 -:10AF3000F3EB1229740812089508413870090C09BE -:10AF4000910989D089E189F541466C080408089C7B -:10AF50008D08340A300BF01F00042A0DD83200008F -:10AF6000800091DC800091D0EBCD40F878581494AB -:10AF7000A37AF40800099959123AF9F98006F9F907 -:10AF8000B006F7B90BFFF9F9BA06FDD8C066E808B4 -:10AF9000161DF2080008996818951693E80E000926 -:10AFA000E049003FE08B000F3006FCCCFFE4E606F2 -:10AFB000000BEA0C000CE806010AF01F0014E3CDB8 -:10AFC00080F8FC061140FCCCFFE40C9AEA0C000C63 -:10AFD000F01F000EEACBFFE40A9CF01F000DECC846 -:10AFE000FFC11034E088000FE60600070E9B0A9CA4 -:10AFF0002C07F01F00072C06ECC8FFC11034FE9B85 -:10B00000FFF7300ECD3B0000800091DC80029C54A5 -:10B01000D421202D16961895300B1A94583BF9B868 -:10B020000B14F9B80818F60911FFEC08030AF3D954 -:10B03000C002A379F4090A4AE80B0B0A2FFB588BCC -:10B04000CEE1301A49EBC038301A49EB0C9CF01FA6 -:10B05000001E6C58E21801F8E04801C0CF61308A48 -:10B060001A9B0C9CF01F00183007EE081602EE0920 -:10B0700011FFEC08032AF3D9C002A379F4090A4AA4 -:10B08000EA070B0A2FF75947CF11300B340AECCCE3 -:10B09000FFE4F01F000E0E9A300B0C9CF01F000B0B -:10B0A000ECCCFFEC308A300BF01F00081A9C308A81 -:10B0B000300BF01F00062FEDD82200008003DE5871 -:10B0C00080029C508002AF68800091D0EBCD40FCA4 -:10B0D000217DE0682301EA186745E06EAB89EA1E2E -:10B0E000EFCD5008E068DCFEEA1898BA3007501E31 -:10B0F0005028E06E5476EA1E1032E068E1F0EA185B -:10B10000C3D250675057503E504818931292580C73 -:10B11000C140149416951A962FF7090A0B0B1A9C26 -:10B12000F01F00070E33FE9BFFF91A9B049CF01FD3 -:10B1300000052E9DE3CD80FC1A96CF8B8002AF6870 -:10B140008002B010D431FACD008C501C500B1493F7 -:10B150001292109142C0585AE08B0056E04B0040CA -:10B16000E08B0054FAC4FFF8340A300B089CF01F3F -:10B17000002E400A401B089C0896F01F002CFAC5C0 -:10B18000FFB808970D88EC1800360CC80A36CFB106 -:10B190003408518451285803C110FACCFF9CFACBD3 -:10B1A000FFB4300AE60E1502E40A030818A8E20A02 -:10B1B000030916A92FCA1C3ACF81E6CCFFFF0099DC -:10B1C0000A9AFAC3FFA0069BF01F0019340A300B3D -:10B1D000089CF01F0015400A401B089CF01F00133C -:10B1E0000F88EC18005C0EC80C37CFB1314C340816 -:10B1F000513C5184519000990A9A069B5128302C59 -:10B20000F01F000B2DDDD832FAC6FF881A9A0C9970 -:10B21000FACBFFFC301CF01F0006314850165008D6 -:10B22000CA2B0000800091D0800091DC8002B0CC5D -:10B23000D401202D501A5009301A1AD8FAC9FFF833 -:10B24000FAC8FFFCF01F00032FFD2FEDD80200000D -:10B250008002B144D43121AD5009502B501A1892BC -:10B2600042395809C6D0504850593008FAC7FFAC87 -:10B270005038FAC3FFD4FAC0FFC0FAC4FFE8049CF8 -:10B28000F01F003140382FF850381AD34038518819 -:10B2900040285168FAC8FF98519830484046517884 -:10B2A000B986FB380013FAC9FFA0FB68006B189B36 -:10B2B0000E98FB66006840454046302A1891B185DB -:10B2C000049CFB650069A986FB66006AF01F001FED -:10B2D000314A069B009CF01F001E2FFD40085818A5 -:10B2E000E08A001C301608983149069A029B049C9B -:10B2F000F01F0018314A089B069CF01F0015009AA9 -:10B30000089B17381589125814C80E3ACFB12FF67A -:10B3100040080C38FE99FFE940560C985946F9B69A -:10B320000B140C180C9A5058009B404CF01F00084E -:10B3300040585808C05040480C085048CA1B2E6D51 -:10B34000D8320000800091B88002B144800091DCC6 -:10B350008002B230D43120EDFACEFFA4109530082F -:10B3600018927C14149716911296FB680036FB68AD -:10B3700000377C00149CF01F00275804C3003018CD -:10B38000FAC9FFC9508850685097FAC8FFCA505C84 -:10B3900050B6507550A950C85934E0880023300782 -:10B3A000FAC3FFECFAC6FFDCC088FB680036E8078A -:10B3B00001055935E088001CE00700080C991AD8EF -:10B3C0002EC70698304A029B049CF01F00132FFDE5 -:10B3D000FB3800362FF80E34FE9BFFE92F2DD832B4 -:10B3E00008953007FAC3FFECFAC6FFDC0C99069803 -:10B3F0001A96049C1AD6029B304AF01F00070A9A3C -:10B400000C9BE007000CF01F00052FFD2F2DD832FC -:10B41000800091B88002B144800091DC00000000FF -:10B4200000000000EBCD4080129E1097584CC26087 -:10B43000E08A0013588CC140590CC101590B5F18A8 -:10B4400058FA5FA91248C0A130689D083039300C05 -:10B450008F09E3CD8080582CC1E0E3CFC080E04B62 -:10B4600000205F1859FA5FA91248CF8130689D0803 -:10B470003029300C8F09E3CD808058DB5F1858CA23 -:10B480005FA91248CEB130099D093018129C8F086F -:10B49000E3CD8080585B5F18584A5FA91248CF40BF -:10B4A000E3CFC080580C5E0CF8F8010C5808F9B8CE -:10B4B0000100F9F81A435EFC580CF9FB1A4C5EFCCB -:10B4C000580CF9FA1A51F9FB1A505EFC580CF9FBAA -:10B4D0001A415EFC580CC080586BE08800035EFD8A -:10B4E0004928F00B032F5EFEF94A016C5EFDF94A14 -:10B4F00001685EFDF94A01645EFDF94A01605EFD86 -:10B50000580ACF20F94A01585EFDF4C80001E0480E -:10B510000063FE9BFFEAF94A01545EFD580ACE40E3 -:10B52000F94A01505EFD00008003DE5CEBCD40E097 -:10B53000189716951496580CC130F8FC0180F01F2E -:10B54000001158055F0858065F091248C0B030085E -:10B55000EF480188EF480180109CE3CD80E0E3CF05 -:10B56000C0E00C9CF01F0008EF4C0180CF900A9BBC -:10B570000C9AF01F0006300CEF460188E3CD80E006 -:10B58000800091E880009200800091DCEBCD40E0EB -:10B59000189716951496580CC130F8FC017CF01FD2 -:10B5A000001158055F0858065F091248C0B03008FE -:10B5B000EF480184EF48017C109CE3CD80E0E3CFAD -:10B5C000C0E00C9CF01F0008EF4C017CCF900A9B60 -:10B5D0000C9AF01F0006300CEF460184E3CD80E0AA -:10B5E000800091E880009200800091DCEBCD40E08B -:10B5F000189716951496580CC130F8FC0174F01F7A -:10B60000001158055F0858065F091248C0B030089D -:10B61000EF480178EF480174109CE3CD80E0E3CF60 -:10B62000C0E00C9CF01F0008EF4C0174CF900A9B07 -:10B630000C9AF01F0006300CEF460178E3CD80E055 -:10B64000800091E880009200800091DCEBCD40FE0C -:10B65000189716961493580CC031E3CFC0FE7409A6 -:10B66000F8F801605828C5E0F8F1016CF8F50168B8 -:10B67000F8F201645979FE98FFF23DD8304AB68855 -:10B68000ECCCFFFEFEFB0238F01F008E30083019B4 -:10B69000ACF8ACE9ECC4FFF85905E08000A158858E -:10B6A000E08000AA5845E08100BC0A9AFEFB02181F -:10B6B000089CF01F00843018A8C8E8C9FFFB3008B8 -:10B6C000B288E8C5FFFA5902E08000905882E08114 -:10B6D000009F304A4FDB0A9CF01F007A3018AAC83E -:10B6E000EAC9FFFB3008B2882FA55811E080008A14 -:10B6F0005821E08100A5304A4F5B0A9CF01F007181 -:10B70000EAC9FFFCEC0811FE1208AC98F206010C25 -:10B71000CA56870CEEF501745805E08000C1E3CFEE -:10B7200080FEF8F8010CF8F2016C5808F9B801280D -:10B73000F9B80016F8FA0168F8F401641039C8E3A2 -:10B7400033083009B688B6B93018B6A8F6C5FFFC7C -:10B75000590AC6F0588AE0800082584AE081009772 -:10B760004DCB0A9CF01F00573018AAC8EAC9FFFB4E -:10B770003008B2882FA55904C6B05884E081007EF5 -:10B78000304A4D5B0A9CF01F004F3018AAC8EAC926 -:10B79000FFFB3008B2882FA55812C661304A4CFB17 -:10B7A0000A9CF01F0048EAC8FFFC300AB08AB09A31 -:10B7B000EAC9FFFAEEF8010C5808CA503018B288EE -:10B7C000EAC9FFF9EACCFFF8B28A310AEEFB010CB4 -:10B7D0002FCBF01F003CEAC9FFE8C95B304A4C0B95 -:10B7E000089CF01F0038C68B304A4BDB0A9CF01FC8 -:10B7F0000035C75B304A4B5B089CF01F0032C5CB5D -:10B80000304A4B8B0A9CF01F002FC7BB5812FE9189 -:10B81000FF26304A4B4B0A9CF01F002AC60B5825C6 -:10B82000FE91FF1D304A4B1B089CF01F0026C44BA5 -:10B83000304A4AFB0A9CF01F0023C97B5901FE9144 -:10B84000FF0E304A4ABB0A9CF01F001EC5AB304AAF -:10B850004A7B0A9CF01F001BC99B304A49EB0A9C9B -:10B86000F01F0018C82B5822FE91FEF9304A4A2BCF -:10B870000A9CF01F0014C98B5814FE91FEF0304A48 -:10B8800049EB0A9CF01F000FC81B582AFE91FEE7E7 -:10B89000304A49BB0A9CF01F000BC67BF01F001901 -:10B8A000EF4C0174FE90FEDB0C9B660AF01F000556 -:10B8B00066080A9CEF480178E3CD80FE8003DE989D -:10B8C000800091DC8003DEA08003DE8C8003DE7CC0 -:10B8D0008003DE888003DE808003E1EC8003E1E406 -:10B8E0008003DE9C8003DEA48003DE948003DEB44C -:10B8F0008003DEB08003E1E88003DEA88003DE84FD -:10B9000080009200D401580CC060F8CCFEC8306AA8 -:10B91000F01F0002D8020000800091DCD4011898CA -:10B92000580CC040918AF01F0002D802800091DCC0 -:10B93000EBCD40F8208D189416971493F6C6FFF0BF -:10B94000F8F501685885C2E0E8F801645818C1604C -:10B950006EC8E8F901286E0B1AD81AD66E2849CAA3 -:10B960001AD81AD3720C72666E186E395D162FCD06 -:10B97000580CC1552F8DE3CF80F86EC9E8FA012825 -:10B980006E0B1AD91AD66E291AD91AD3740C74668A -:10B990006E3948FA5D162FCD580CCED42F8DE3CFDB -:10B9A000C0F80C9B310A1A9CF01F000A0A9AEECBD1 -:10B9B000FFD8FACCFFF0F01F00070A9AEECBFFE0A9 -:10B9C000FACCFFE81A96F01F0003CBFB80039C38EB -:10B9D000800091DCD401580CC070F94B0134F8FCA4 -:10B9E0000108F01F0002D80280028F64D401580CB5 -:10B9F000C110F8F8010C5808C08070DAF0CBFFECE9 -:10BA0000998AF01F0005D802320A109B998AF01F0C -:10BA10000003D802800091DC800091D0EBCD408003 -:10BA20001897F01F000AEEF801287029700C5D19B4 -:10BA3000585CEFF80057F9B90001F1D9E008EFF8C8 -:10BA40000A57E3CD8080000080029438EBCD40C0DF -:10BA500018971696580CC190306AF8CCFEB8F01FB3 -:10BA6000000F308A300BEECCFF10F01F000D3008B5 -:10BA700030190C9BEF4800F8EF4900EC306AEECC2F -:10BA8000FEE4F01F0008C030E3CD80C00E9CF01F24 -:10BA90000006E3CD80C00000800091DC800091D0E2 -:10BAA0008000917C80029438EBCD40C016971496AC -:10BAB000F6F8010C1838C0D0768A78D8103AC03021 -:10BAC000E3CD80C0F8CBFFEC0E9CF01F000ECF91B1 -:10BAD0003008EF48010C5806CF41320A0C9B0E9CEF -:10BAE000F01F0009EEF90128301B720C72485D1836 -:10BAF000EEF801280C9A700C70390C9B5D19CE1B66 -:10BB00008000917C800091D0D431189716941493C2 -:10BB1000300B324A069CEE040005F01F0052EEC6C0 -:10BB2000FFFF0C35E0880034E8C800013DD2EE0884 -:10BB30000004C0D8E4091800C2B01499F2C8FFFE8E -:10BB40001007EEC6FFFF0C35E08800220F89E409DC -:10BB50001800C4B10837C1B00D8A580AC180F4C8B2 -:10BB6000FFFEEE0800081035C4733308F009180012 -:10BB7000CE2187270D882FE887380D89F2C8FFFE70 -:10BB80001007EEC6FFFF0C35FE9BFFE2D83A580ABD -:10BB9000CFE03058F00A1800E08B003FEEC8FFFB02 -:10BBA0001035E08B002B14993061E2091800FE98E3 -:10BBB000FFC7EEC0FFFE304A4ABB009CF01F002BBF -:10BBC000C3900D89E2091800FE98FFBA009C304A24 -:10BBD0004A7BF01F0026C071EEC9FFFA87790D88F5 -:10BBE000204887880D89CABB0D8AF4C8FFFEEE087D -:10BBF00000081035CBB2DC3A14993138F00A18003D -:10BC0000FE98FFD4304A49BBEECCFFFEF01F001770 -:10BC1000C1900D89CCAB304A497BEECCFFFEF01FC2 -:10BC20000013C0610FE93018F0091800C1000D8A37 -:10BC3000CB6BEEC9FFFA87590D88204887680D89BC -:10BC4000C7EBEEC8FFFA87480D89C79B0FF8F808C5 -:10BC50001800CEE187070D882FE887180D89C6FBED -:10BC6000800091D08003DE788000917C8003DEAC80 -:10BC70008003DE908003DE98EBCD4080304A189739 -:10BC8000496BF01F0017C031E3CF9080304A495B09 -:10BC90000E9CF01F0013C041302CE3CD8080304A51 -:10BCA000491B0E9CF01F000EC041308CE3CD8080FC -:10BCB000304A48EB0E9CF01F000AC041310CE3CD26 -:10BCC00080800E9C304A48ABF01F0005F9BC000490 -:10BCD000F9BC0100E3CD80808003DEA88000917C68 -:10BCE0008003DE848003DE808003DEB48003DE8890 -:10BCF000EBCD4080304A1897496BF01F0017C031D8 -:10BD0000E3CF9080304A495B0E9CF01F0013C04186 -:10BD1000302CE3CD8080304A491B0E9CF01F000E72 -:10BD2000C041308CE3CD8080304A48EB0E9CF01F40 -:10BD3000000AC041310CE3CD80800E9C304A48ABF4 -:10BD4000F01F0005F9BC0004F9BC0100E3CD8080C0 -:10BD50008003DEA48000917C8003DE948003DE8C6F -:10BD60008003E1E48003DEA0EBCD40FC189416963E -:10BD70001497580BC160198B3308F00B1800C1D011 -:10BD80003008301595789548956895589505308810 -:10BD90009535952895185876E08B009BE3CFC0FC2D -:10BDA000301830898F7B8F4B8F6B8F5B9538950860 -:10BDB00095299519E3CFC0FC300531099545956566 -:10BDC000955595759529951930289508301A8F3A0B -:10BDD0005836FE98FFE51988F6081800CE01199923 -:10BDE000ECC800021039CDB119B919A8F1E91088D1 -:10BDF000F4081900CD4120465836E08A01112FC4BD -:10BE0000089CF01F008A8F2C20465816E08A010BF0 -:10BE10008F15E8CCFFFC19991988F1E91082CBF055 -:10BE2000ECC30002E40815021033CB95F8C4FFFE02 -:10BE300030056E16089CF01F007D0C4C8F1C2FC423 -:10BE400020432FF50A32FE99FFF65813E08A00E5E9 -:10BE5000300A8F3A09990988F1E91082CA00202333 -:10BE6000E40815021033C9B5E8C6FFFE14956E3418 -:10BE7000304A4EFB0C9CF01F006FE08100C430186C -:10BE800008488F382FC620432FF50A32FE99FFF15C -:10BE90005813E08A00940D990D88F1E910888F48B5 -:10BEA000E6CB0002581BE08A008AECCCFFFE199812 -:10BEB0001989F3E810898F59F6C80002A56912386C -:10BEC000C7F5F8C8FFFE300C8F68E3CD80FC1989F8 -:10BED0003DD8F0091800FE91FF631999ECC80002E3 -:10BEE0001039FE91FF5D304A4D3B2FECF01F0051A1 -:10BEF0001893FE91FF5509F909E8F1E91088EA085D -:10BF00001900FE91FF4DECCA0008583AE08A005E25 -:10BF1000E8CCFFF8F01F00498F2CECCA000C0A3A5D -:10BF2000E08A00578F13E8CCFFF419991988F1E9DA -:10BF30001082FE90FF35F4C30002E40815021033AE -:10BF4000FE95FF2EF8C4FFFE30056E16089CF01F0C -:10BF5000003B0C4C8F1C2FC420432FF50A32FE9956 -:10BF6000FFF65813E08A0042300A8F3A099909888F -:10BF7000F1E91082FE90FF142023E408150210332B -:10BF8000FE95FF0EE8C6FFFE14956E340C9C304AF9 -:10BF90004ABBF01F0028C211301808488F382FC63E -:10BFA00020432FF50A32FE99FFF25813E08A00145D -:10BFB0000D880D99F1E910888F48E3CF80FC300897 -:10BFC0008F58109CE3CD80FC580AFE99FEE9581A60 -:10BFD000FE90FEE6E3CF80FC304A49AB0C9CF01F9C -:10BFE0000015C0613028CDAB5813CF51CD8A0C9CC1 -:10BFF000304A495BF01F000FF9B80010F9B8010092 -:10C00000CCDB0C9C304A491BF01F000AF9B8000237 -:10C01000F9B80100C36B5813CD11CC1A5806FE991C -:10C02000FEBF5816CCB1CBBA8002BC788003E1ECDD -:10C030008000917C8003DE988002BCF08003DE9C4F -:10C040008003DE7C8003DEB08003E1E8D401580C7D -:10C05000C021DC0AF8F801745808CFC0169AF8FB22 -:10C060000178109CF01F0004F9BC01FEF9BC00002F -:10C07000D80200008002BD68EBCD40801897580CB4 -:10C08000C1D0F8FC0108F01F000F300A0E9B48ECED -:10C09000F01F000EEEFC0174F01F000DEEFC017CA1 -:10C0A000F01F000BEEFC0180F01F0009EEFC0128E0 -:10C0B000F01F00070E9CF01F0006E3CD80800000FB -:10C0C000800290A88002C0D080027400800091E8B5 -:10C0D000D401F01F0002D8028002963CEBCD40C094 -:10C0E0001896E06C018CF01F00131897C19030185F -:10C0F000E069A8C0F94800ECF9490150346833C937 -:10C10000F9480154F9460128F9490158189A189B31 -:10C11000489CF01F000AEF4C01081898C0400E9C84 -:10C12000E3CD80C00E9C1097F01F0005CF9B000050 -:10C1300080028F248002BAA880028F8C800091E850 -:10C14000EBCD4060149E1DD81896158CECF5012897 -:10C150001AD81DC91AD91DB81AD81DA91AD91D98DF -:10C1600048CA1AD81ADC1ADB303B6A0CF01F000AE6 -:10C17000ECF90128311B720C72585D18ECF901289A -:10C18000300A720C7238149B5D182F9DE3CD8060CD -:10C190008003DF4880023A1AEBCD40C0205D109743 -:10C1A000581BC130582BC0402FBDE3CD80C0310B90 -:10C1B0001A98F01F00091A961A9B0E9C310AF01F5C -:10C1C00000072FBDE3CD80C0310BF01F00052FBD50 -:10C1D000E3CD80C08002B230800091DC80028EF816 -:10C1E000D431201DFACEFFD81894500B149012961B -:10C1F00010917C237C077C12306A49AB129CF01FA3 -:10C20000001AC1D05803C0800698009B400C0499C6 -:10C210000E9AF01F00160C9BE8F501280498F5D142 -:10C22000C0100E996A0C6AA65D16E8FC0104F01FA6 -:10C2300000100E9CF01F000F2FFDD832E8C5FEB88D -:10C24000306A488B0A9CF01F0008CDD1E8F801281D -:10C250000A9B700C70995D19EA061740CD4B0000DF -:10C260008002B41C8000917C8002C19880025582BB -:10C27000800091E8EBCD40E0189716961495F8F8F9 -:10C2800001685848E0800081E08A00495888C780EA -:10C290005908C4F04C19EEF801645848C480584855 -:10C2A000E089004A5818C6605828C6604BB81AD9A9 -:10C2B0001AD8EEFA01280DD81AD80DC91AD90DB816 -:10C2C0001AD80DA91AD90D981AD80D89302B1AD958 -:10C2D000740C4B3AF01F0033EEF801282F8D700BD1 -:10C2E000707C300AF01F0030EEF90128720C72C821 -:10C2F0005D18EEF90128307B720C72185D18580534 -:10C30000C201EEFC010C580CC07079485808F9B80D -:10C310000100F9F81A14E3CD80E05818C33058280A -:10C32000CBA14A29EEF801645848CBA14A08CC0BAE -:10C330004A09CB2B5888C2205908CB9149D8CB8BBE -:10C34000EEF801280C9B700C71263019303A5D16FE -:10C35000301BEEFC0104F01F0018EEF8016C5828A9 -:10C36000C15030080E99495A109B301CF01F001420 -:10C37000CC9B4948C9DB48D8C9BB4938C99B492926 -:10C38000C8BB4909C89B48A9C87B301BEEFC010407 -:10C39000F01F000ECE7B00008003C6288003DF74F0 -:10C3A00080023A1A800274008003DF088003DF10E5 -:10C3B00080039A74800261D48002C0D080027474B9 -:10C3C0008003C8E480039A6C800261A4D431FACD62 -:10C3D00000DC1897169314951296E0490062E08BE2 -:10C3E000000630060C9C2C9DD832129CF01F034492 -:10C3F0001892E08000D60C9A0A9BF01F034205A910 -:10C4000005B8F1E910880599F5D8B0103038F00971 -:10C410001800C0603006049CF01F033BCE4BECC8F4 -:10C420000004EBDAC01030090A385F3AE045005EDC -:10C430005F88F5E8100CF20C1800CED13FE8E4C19B -:10C44000FFFC038AF00A18005F1B3028F00A18006E -:10C450005F19F7E90004F8041800CDD1EEFC0104DF -:10C46000F01F032A039903A8F1E91088EDD8B01052 -:10C47000FDD6C003506E1C9930182019F009190020 -:10C48000E08800043FF6CC8BEEF8016459085F0A9F -:10C490003028F00E19005F19126AE80A1800C080EF -:10C4A000EEF801685908CEF0EDB60003CEC0EEF804 -:10C4B00000F85808E08100ABE1D6C0100098E218FF -:10C4C0002080CE10009AE21A0800502ACDC12FC554 -:10C4D00000995055E21901005039C641405AE339DC -:10C4E000005DE338005E263AF1E91088F7D8B01015 -:10C4F000E9DBC010083AE0830598EEF9016058299D -:10C50000E0800550EDB00003E0810333E21000301D -:10C51000CBA140395809E08001CAEEF90128305B0F -:10C52000720C72185D18039903A8F1E91088E339B9 -:10C53000005DEBD8B010E33B005EFACAFF50F7E9AC -:10C54000108BE2CCFFA1F01F02F243185808C04044 -:10C55000EDB5000CC231EEC3FEB8EEF60134EEF8D4 -:10C56000017C5808E08004E742C95809E08004C80B -:10C57000EEFB017C580BC79042DAEEF80184103ACA -:10C58000C70042FE42EC1ADE14981ADC069A0E9C92 -:10C59000FEFB0B80F01F02E02FED3016C3DB3FF6F1 -:10C5A000C22BE2C6FFB3FAC4FF84310A0C9B089C7D -:10C5B000F01F02D440685C785048EEF800A8580894 -:10C5C000C301EEF800A45808FE90FF5E310A300B5C -:10C5D0000C9CF01F02D2049A404BEECCFFDC0C986E -:10C5E0004059F01F02CF0C9B089C310AF01F02CD6E -:10C5F000FE91FF4A308AE2CBFFFBEECCFF10F01F2A -:10C6000002C13018EF4800F8C6AB308AEECBFF10FD -:10C61000E2CCFFFBF01F02C3FE99FF503FF6CFCAEA -:10C62000402B310A0C9CF01F02BD049A404B0C9821 -:10C630004059EEC5FF9C0A9CF01F02B9310A0C9BC1 -:10C64000089CF01F02B8CBE13018EF4C00A80A9B01 -:10C65000EF4800A4340AEECCFFDCF01F02AACCBBEA -:10C66000129CF01F02B0C10142EC580CC160EEFBFD -:10C670000180580BC12042FEEEF80188103EC090A8 -:10C6800042C942DAC81B42FE42C942EC42DAC7CB79 -:10C690001C9AF01F02A4CF81EEF801605818E080C8 -:10C6A00000E6320AE2CBFFF3EECCFF34F01F029D2E -:10C6B000FE91FF7503B903C8F1E91088F3D8B010F3 -:10C6C000EEF801645888E08000CC5908E08000CA88 -:10C6D000EEF80128FAC9FF2C1AD970D6700C35F97A -:10C6E000FAC8FF24300A303B5D162FFD1896580C0F -:10C6F000FE90FF55EEF80160E06900FE5828F20850 -:10C700001710435AB48840680A99E2190200F1E907 -:10C7100010094358E8190108F20B1608B09B435A58 -:10C72000B4A9EEF801605828E0810093300843591D -:10C73000B2B8435AB4C8435C308AE2CBFFFB2FBC8B -:10C74000F01F02704358300AF16A005D4359F36AE2 -:10C75000005E4358406A2B381AD84379E068888EC7 -:10C760001AD9EECBFFDC1AD606990E9CF01F026E8A -:10C770003018EF4800EC5C752FDDEDB50006C0F118 -:10C78000FEFA09A8F4E80000FAE9007CEEF801647A -:10C790005888E08003F65908E08003D90A90E21037 -:10C7A0000200C0E0EEFA01283019740C069B7528CF -:10C7B000129A5D18301BEEFC0104F01F025DEEF8CA -:10C7C0000128306B700C70195D1943165806FE90E5 -:10C7D000FEE64328FAC4FF84F0C50002334A300B5A -:10C7E000089CF01F024EE0450020FE9BFED80D88FD -:10C7F000F1D8C00252280D89F3D9C041C050EEF8DB -:10C80000016458185F095209ECCBFFFE0A9AFACC72 -:10C81000FF74F01F023C0A9A52B50898FAC9FF7CCF -:10C820000A9BEEFC0168F01F0243FE91FEB8E2CACB -:10C83000FFC3089B0E9CF01F0240FE91FEB0009AC1 -:10C84000069B0E9C3016F01F023DFE9FFDE6435CEA -:10C85000302AE2CBFFFD2FDCF01F022AC6DB3208B4 -:10C86000F0091900FE91FE9BC34B42EB580BFE9062 -:10C87000FF1A58065F1AEEF9018058095F0814681C -:10C88000FE90FF116D68EDB80001FE91FF0C42F8BB -:10C89000069A1AD80E9C1ADBFEFB08A442F842E95D -:10C8A000F01F021D2FEDFE9FFE7AEEF90128720C9B -:10C8B00072885D18FE90FE73EEF80128305B700CF4 -:10C8C00070195D19403BFAC6FF50324A0C9CF01FAC -:10C8D0000213EEF801605828C0C1E338005DE33B65 -:10C8E000005E0C9AF7E8108BE2CCFFA1F01F020863 -:10C8F00043065806C0E0EEFC010C580CE08003D162 -:10C90000F8CBFFFC310A0C9CF01F0206E08003C04C -:10C910003005EEF8016C5818E08000D45805C0606E -:10C92000EEFB016C581BE080029BEEF800EC58080F -:10C93000E08102B5EEC8FF545008EECAFEB8EEC959 -:10C94000FF9CE2C8FFF3508AEEC6FEC850A950987B -:10C95000306A6E85408B0C9CF01F01F2E08500FB75 -:10C96000306A408BFAC0FFD0009CF01F01E60C9BA0 -:10C97000306AFACCFFCAF01F01E3320A409B400C38 -:10C98000F01F01E8E08500D0320A409BFACCFFC4DA -:10C99000F01F01DC320A400BFACCFFA4F01F01D9D2 -:10C9A000340E1ADE40BE00991ADE34C80A9BFEFA25 -:10C9B00007920E9CF01F01E4EEC5FF6CFAC3FF7CEA -:10C9C0000A9B308A069CF01F01CF0A9CEEC6FF64CA -:10C9D000308A0C9BF01F01CB069B0C9C308AF01F09 -:10C9E00001C93018EF4800A82FEDEEF50178EEF000 -:10C9F00001745800FE90FDD3EEFA0128FAC8FF2812 -:10CA0000E9D5B0101AD8E8C9FFA1740C74D6FAC8D9 -:10CA1000FF285C79300A303B5D162FFD1893580CC7 -:10CA2000FE90FDBDEEF80160E06900FE5828F208B6 -:10CA30001710436AB48843683019B0994066436858 -:10CA40005C760C9AA3BAB0AAEEF901605829C631F7 -:10CA500030084369B2B8436AB4C8436CE2CBFFFB09 -:10CA6000308A2FBCF01F01A74368F3D4C108F169D5 -:10CA7000005D43680A9AF165005E009B436C2A1CC6 -:10CA8000F01F01A0400B436C320A2F3CF01F019DA8 -:10CA9000408940AB43682B381AD8436C0C9A1ADC97 -:10CAA000E068888E1AD30E9CF01F019F40CBEECC1D -:10CAB000FF34320A3016F01F01932FDDFE9FFCADCC -:10CAC000EEFC0104580CFE90FF2B320A0E9BF01F67 -:10CAD000019FC361320A8F8AEEF8013406991AD891 -:10CAE0000E9BEEC8FEC8EEFC0108F01F0199580627 -:10CAF0005F1AEEF9010C2FFD58095F081468FE90CB -:10CB0000FF0F0C9A069BEEFC0108F01F0192FE91AC -:10CB1000FF0EC05B436C302AE2CBFFFD2FDCF01F21 -:10CB20000179C9CB400B320AFACCFFC4F01F017562 -:10CB3000320A409BFACCFFA4F01F0172C32B310ACA -:10CB40000E9BEEFC0104F01F0181E08101B4310A6B -:10CB5000CC3B0C9BFAC0FFD0306A009CF01F0169EF -:10CB6000306A408BFACCFFCAF01F0166C07B009B85 -:10CB7000E21B2000FE91FD13403A580AFE90FD0F83 -:10CB8000334AFAC0FFD0009CF01F0164EEF901287F -:10CB90007228720C5D1850BC039903A8F1E9108843 -:10CBA000E339005DE7D8B010E338005EF1E91088A2 -:10CBB000EEF90160F7D8B0105829E080011303B9ED -:10CBC00003C8F1E910895189EBDBC0100A34E08316 -:10CBD00000CB3028406EF00E1900E08001D80A9694 -:10CBE000129B0098FAC9FFC80C9AEEFC0168F01F6E -:10CBF0000151E08100B9F5D3C010F1DAC082501ABA -:10CC000050F830194068F2081900E08000C7302859 -:10CC1000406EF00E1900E08000A4401AF1DAC0C1A5 -:10CC2000C050EEF8016458185F0850D8EEF801289B -:10CC3000306B700C70195D19009BE2CAFFC30E9C2B -:10CC4000F01F013D1895FE91FCAAEEF80128FAC9E3 -:10CC5000FF2C0A9A1AD9303B700C70D635F9FAC8F5 -:10CC6000FF245D162FFD1894580CFE90FC98EEF8EA -:10CC70000160E06900FE5828F20817104066435A28 -:10CC80005C76B488E21300304358E8130300E7E60B -:10CC9000100CF80B1608B09B4359B2ACEEF80160CB -:10CCA0005828E08102234358B0B54359B2C5435CCC -:10CCB000E2CBFFFB308A2FBCF01F01124358300A31 -:10CCC000F16A005D4359F36A005E43582B381AD865 -:10CCD00043790C9A1AD9EEC6FEB81AD40C99E068BA -:10CCE000888EEECBFFDC0E9CF01F010F2FDD40B9CC -:10CCF0005879E08101F1EEF801685848E08001E6DA -:10CD0000E08901DC5818E080014B5828E08001469A -:10CD1000FEF804441AD8EEFA0128EF38014D1AD86B -:10CD2000EF39014C1AD9EF38014B1AD8EF39014AC3 -:10CD30001AD9EF3801491AD8EF390148302B1AD9DE -:10CD4000740CFEFA0416F01F0106EEF80128307B81 -:10CD5000700C701930165D192F9DFE9FFB5EF1D58A -:10CD6000C003C0A0EEF80128306B700C70193016AB -:10CD70005D19FE9FFB52E0460020FE9BFFF5EC0B89 -:10CD80001603FAC9FFC0E2CAFFA1EECCFFCCF01F28 -:10CD900000F5FE90FF44CE7B310AE2CBFFD3FAC40C -:10CDA000FF84089CF01F00D7310AEECBFFCCFACCF1 -:10CDB000FF74F01F00D4E0450020FE9BFFD5FAC6AB -:10CDC000FFC00A9AE2CBFFA10C9CF01F00CE0A988C -:10CDD0000C99089CE06A0100320BF01F00E3C1EBE4 -:10CDE0005C7BFACAFF50E2CCFFA1F01F00C94318D8 -:10CDF0005808CB90F3D3C0105019EDB9000CCB31CB -:10CE000043282028FAC9FFC8109A5188149B00981B -:10CE1000EEFC0168F01F00C7CA61431B1788F1D8F8 -:10CE2000C00250F81789F3D9C041C050EEF8016430 -:10CE300058185F0950D94328F0CA0002E04A002080 -:10CE4000FE9BFF922FEBFACCFFC0F01F00AEEEF975 -:10CE50000128306B720C72185D18CEFAEEF80128BA -:10CE600030091AD9129A700C70D6FAC8FF285D16CC -:10CE70002FFD1893580CFE90FB92EEF5012818999F -:10CE8000EECBFEB84358E06A888E6A0C6AA65D163F -:10CE9000069CF01F009DFE9FFB82EECEFF54320BDE -:10CEA000500E1C9CF01F00B1C1F1EF4C00ECFE9F36 -:10CEB000FD46EEF80128FEFA02B6700C303BF01F7A -:10CEC00000A8EEF80128FEFA02AA700C303BF01F11 -:10CED00000A4EEF8010C5808FE90FB613008EF4802 -:10CEE000010CFE9FFD1FEEF80128FEFA028A700C6D -:10CEF000303B3016F01F009AFE9FFA8F42EC580C20 -:10CF0000FE91FBB7EEF8017C5808C061EEF8018095 -:10CF10005808FE90FBC342F830091AD8069A1AD96D -:10CF20000E9C42F8FEFB0254F01F007B2FEDFE9F8B -:10CF3000FB36EEF801805808FE91FB18EEF9012847 -:10CF4000720C72B85D18FE9FFB111099303BEEF821 -:10CF500001605828C180E2CCFFC31AD9EEC8FFBCDB -:10CF6000EEFA012830691AD830181AD930091ADCBB -:10CF7000740C7466069A5D162FCDFE9FFC11302B43 -:10CF80003209CE6BFACCFF84CE9B5875FE98FEEC2E -:10CF9000EAC60008FE9FFE264F98CBDA4F98CBBA20 -:10CFA000EDB0000CFE91FAB0EEF800A45808FE9027 -:10CFB000FA6B3018406EF00E1900C490406AF20A05 -:10CFC0001900FE91FAA1F1D4C003FE91FA5DF6C8F2 -:10CFD00000085C88109550785C750A9CF01F00482A -:10CFE0001896FE90FA51E2C4FFA11899089AEA0B2C -:10CFF0001603EECCFFCCF01F005BC2310A9A0C9BEB -:10D00000089CF01F00400C9CF01F003F4078EA098C -:10D0100016085C58E369005DE368005E5C59F1E95D -:10D020001084FE9FFA711ADA1AD4EEF801284D6ABC -:10D03000700C302B3FF6F01F004A2FEDFE9FF9EDEC -:10D040000C9C3FF6F01F0030FE9FF9E7FAC6FF8404 -:10D05000310AE2CBFFD30C9CF01F002A310AEECB41 -:10D06000FFCCFACCFF74F01F00270898E2C9FFA19B -:10D070000C9CE06A0100320BF01F003BE339005DBD -:10D08000E338005EF1E91084FE9FFA3E0E9CF01F2B -:10D09000003FEEFC0104F01F003EFE9FFC480C9A8E -:10D0A000069BEEFC0108F01F002BEF4C010CFE91DB -:10D0B000FC293015FE9FFC2F5888C0A05908FE910E -:10D0C000FE294B48FE9FFE284B38FE9FFE254B381D -:10D0D000FE9FFE22401A0C9BE21A02000E9C3016A4 -:10D0E000F01F0016FE9FF999435C302AE2CBFFFD4A -:10D0F0002FDCF01F0004FE9FFDDC0000800092008A -:10D10000800091DC800091E88002575C8002BB08BF -:10D110008003E0488002C140800091D08002C19825 -:10D120008000917C8002C1E08003E1DC800261D458 -:10D130008002B4248002B9308002C2748003E0848B -:10D140008003E1788002B354800257CC8002914C76 -:10D1500080028FB08003C6288003E19080023A1AD3 -:10D160008002D8A080029B4080028F488003E0F0BC -:10D170008003E1308003E14C8003E0048003DF089A -:10D180008003C8E48003DFC88002B9EC80025770D6 -:10D1900080039A748003DF1080039A6CD431204D91 -:10D1A0001894F8F80128E8F9016416955909F9B3BB -:10D1B0000002F9B301011492700C1A9070991A9B35 -:10D1C0005D19C635E8F80128FAC9FFF8300A1AD9FE -:10D1D000303B700C70D635F9FAC8FFF05D162FFDA4 -:10D1E0001891580CC520E8F80160E06900FE402A5B -:10D1F0005828F2081710B4880697E8F800A4ABB7CF -:10D200005808C050E0680900E7E810075805E068D2 -:10D210000400EFD8E1375802F9B80108EFD8E13738 -:10D220004028F3D7C108B09940283006B0A740295C -:10D23000B2B64028308AB0C6E8C5FF04402C0A9B2D -:10D240002FBCF01F00130A9C308BF01F00124028E7 -:10D25000F166005D4029F366005E0E99E219010057 -:10D26000FBF81002F9BA014DF1DAE1091AD9404888 -:10D2700000991AD8069A1AD1089CE068888EE8CBE3 -:10D28000FFDCF01F00052FDD2FCDD832800091DCB0 -:10D29000800239EA8002C1E0EBCD40804879720813 -:10D2A000201893081897C031F01F00050E9CF01F3E -:10D2B0000005E3CD8080000000007AB48002D2F83F -:10D2C000800091E8EBCD40C048976E065806C041FB -:10D2D000F01F0008C0916E082FF8304C8F08F01F27 -:10D2E0000006E3CD80C00C9CE3CD80C000007AB482 -:10D2F0008002D30480028F24D401F01F0002D802E0 -:10D300008002D996D401F01F0002D8028002D9947D -:10D31000D4211789179A17B8F1E9118817A9F1EAEA -:10D320001108F1E91088990817CA17D8B168F1EA0D -:10D33000118817EA17F91258F1EA10889918F73A84 -:10D340000008F739000BF7380009B168F1EA1188D5 -:10D35000F73A000A1258F1EA10889928189EF73A0D -:10D36000000CF738000DF739000FF8C5FFE4B1687D -:10D37000F73C000EF1EA11883007125849B4F1EC7D -:10D38000108C49B69D3CC038149C2F05E80707084F -:10D390002F0EFCF9FFF0F3E82189EC0C0F88E2185E -:10D3A000FF001059EC0C0F98E61800FF1059EC0C18 -:10D3B0000FB8F1D8C1081059FCF8FFF4EC0C0FAB12 -:10D3C000A96BE61BFF0016599D091059FCF8FFF8E0 -:10D3D0009D1910599D29FCF8FFFCF3E8200A8B0ADF -:10D3E0002FF758A7CD21D8228003E2F08003E6FC76 -:10D3F000EBCD40FE1892F01F002F0493E4CBFF60AA -:10D40000E4C4FFFCE4C5FF5CE4C6FFF8E4C7FF58D2 -:10D41000E4CEFFF4E4CCFF54E4C1FFB06609760823 -:10D4200087089709680A6A0889088B0A6E086C09D8 -:10D430008D088F097C0A78089D08990A2F03210B13 -:10D440002F0421052F0621072F0E210C023BCE7140 -:10D45000E4C4FFF030134985498608972F046E0A0B -:10D46000EC0A0F98EA080F9EEC0A0F88EA080F9C56 -:10D47000EC0A0FB8EA080F9BEC0A0FA8F809150888 -:10D48000FC0A1510F3EC1389F5EE130A1659EA0895 -:10D490000F9BF6081518F1EB1288105914590EA9B4 -:10D4A0000E34CDE12FF358A3CD91E3CD80FE0000E3 -:10D4B0008002D3108003E2FC8003E6FCD431209D7F -:10D4C000F736000E505A178A780917B8F1EA118812 -:10D4D000179A1258F1EA210817AEF1EE208E506E1D -:10D4E000781817CA17F9105917D8F3EA2189F3E801 -:10D4F000210917EEF3EE208E507E7828F7390008C8 -:10D50000F73A000B105AF7380009F5E9218AF73984 -:10D51000000AF5E8210AF5E920827839F73A000C8B -:10D52000F738000FFEF7034412581894F1EA2188E7 -:10D53000F739000DF8CAFF60F1E92108500AF1E659 -:10D5400020800E91E0081618406AEE080326F3DAF0 -:10D55000C008F1D2C208EE090329EE080328504999 -:10D560005038407AEE0A0F9950296878684B105667 -:10D570004068EE000FACEE080FBA4079165AEE097B -:10D580000F8BF6081508F1EB1388F8091518105AD7 -:10D59000F3EC1289EE020F9C125AF8081510F1EC08 -:10D5A0001308F5E82008685E68654079EE090FBB4E -:10D5B00050884068EE020F8C1C5BEE080FAEF80836 -:10D5C0001508F1EC1388EE000F9A105BFC09151892 -:10D5D000F4081510F3EE1289F1EA1308125B407992 -:10D5E000F7E82003EE000F8BF6081508F1EB13881F -:10D5F000EE020FBCEE090FAE0A5CFC091518105CB8 -:10D60000F3EE12894068125CEE080F9B404A4048D6 -:10D61000F6091510A968F3EB1309F1EA1388F9E983 -:10D620002000105640394038B968F1E912882E04BC -:10D63000105640294028B169400AF3E81309EDE982 -:10D6400020021434C770E4081618408AF3DAC008C0 -:10D65000E208032EE2090326F1D0C208E2030F9983 -:10D66000E20803255019E2020FACE2030F8B6809B0 -:10D67000F6081508F1EB1388E20A0FBA125AF809F6 -:10D680001518105AF3EC1289E2000F9C125AF80890 -:10D690001510F1EC1308F5E82008E2030FBB506801 -:10D6A00040886819E2000F8AE2080FAC125BF408A8 -:10D6B0001508F8091518F1EA1388F3EC1289E2004D -:10D6C0000FBAE2020F9C105BF8081510125BF1EC28 -:10D6D0001308F7E8200850786829E2030FAC125AC3 -:10D6E000F8091518F3EC1289E2020F8BF6081508F9 -:10D6F000F1EB1388105A125A4089E2090F9B6839DE -:10D70000F6081510F1EB1308125EF5E82002EC099B -:10D710001508EA081518F3E61389F1E51288125E78 -:10D720004019105EB1694018F3E81309FDE92000C3 -:10D73000C0AB4089F1D3C1084CDBFDD9C008F60865 -:10D740000706E40A1618EBD0C208F60A0709F60520 -:10D750000708F60E070CF9E9118CF3D3C008F9E8B5 -:10D76000110C4088B988F608070AF6090708F3D2B1 -:10D77000C208F1EA1188F609070AF3D0C108680E59 -:10D78000F1EA1108F609070AF1EA10881C58F009B5 -:10D790001618405AB4B8B4894059F00A1610A9882E -:10D7A000B29AB2A8E6091618F609070AF3D0C0081B -:10D7B000F6090708F1EA1188408AF3DAC208F60987 -:10D7C000070AF3D2C108F1EA1108F609070A40591D -:10D7D000681EF1EA10881C58B2F8F0091618405A71 -:10D7E000B4C94059F00A1610A988B2DAB2E8E009C3 -:10D7F0001618F609070AF3D2C008F6090708F3D38A -:10D80000C208F1EA1188F609070AF1EA1108408A0C -:10D81000F3DAC108F609070A4059682EF1EA1088C0 -:10D820001C58F368000BF0091618405AF5690008F7 -:10D830004059F00A1610A988F36A0009F368000A33 -:10D840006839405AF9E6108C125CF8081618F80985 -:10D850001610F56C000FF568000CA98CF569000D29 -:10D86000F56C000E2F7DD8328003E2FC8003E1F0DE -:10D87000EBCD40C01897590BC030E3CF80C0E06CAF -:10D8800000B0F01F00061896CF900E9BF01F00040A -:10D890000C9CE3CD80C00000800092008002D3F099 -:10D8A000D431209D129714961895500B308A0C9BFA -:10D8B000FAC2FFE4049CF01F0034ECCBFFF8400AEE -:10D8C0000E9CA37AF01F00300A9C310BF01F002F32 -:10D8D0001893C57040082018EE08003840095028F9 -:10D8E0005C39400A5C59F40A00285019E9D8C0088C -:10D8F0003050FAC7FFF4FAC1FFEC40095809E08A3A -:10D90000002940251296308A049B0E9CF01F001EB1 -:10D91000FB390013E806000812580A9BFB68001345 -:10D92000308A029CF01F00180E9A0E9B069CF01F76 -:10D930000018308A0E9B049CF01F001320160A9CCE -:10D94000308A2085029BF01F00105806FE99FFDDEB -:10D95000401A2010E80A0008E9D8C0085BF0CCE1C2 -:10D96000069CF01F000C049C3A691988F208180004 -:10D97000C0812FFCFAC8FFDC103CCF812F7DD83A44 -:10D980002F7DDC3A800091DC8002D8708002D4BC0C -:10D99000800091E85EFD5EFCD4311A97202D109E28 -:10D9A000129514965809C4911638E0880057F0086B -:10D9B0001200C0D0F608094BF0091120FC08094EEE -:10D9C000F4090A49F4080946F3EB100BFC0516109C -:10D9D000F9DEC010F6050D0AEC0816101499F1EBEB -:10D9E0001108B93A103AE088000C20191C08103EC2 -:10D9F000E08B0007103AF7B90B01F1DEEB08F00AF3 -:10DA0000010BEDD6C010F6050D0AEDEB11061498CA -:10DA1000F40C024C0C3CE088000A20181C060C3E5A -:10DA2000E08B00050C3CF7B80B01F1E9110B300C51 -:10DA3000169A189B2FEDD8321639E08B0051F20C54 -:10DA40001200C53114385F8916355F381049F8095E -:10DA50001800C450301BC4585808C0513019F2087F -:10DA60000D08109EFC081200E08100911C1BFC05B3 -:10DA70001610F3DEC010301CF6050D0AEC08161067 -:10DA8000F4090243F1EB1108149B1033E088000CF9 -:10DA9000201B1C08103EE08B00071033F7BB0B0166 -:10DAA000F1DEEB08F0030103EDD6C010E6050D0230 -:10DAB000EDE311060498E40902490C39E088000AF4 -:10DAC00020181C060C3EE08B00050C39F7B80B0142 -:10DAD000F1EB110B169A189B2FEDD832300B169CD8 -:10DAE000169A189B2FEDD832F20C0945F80E11202A -:10DAF000F00C0943F40E0A46F00E0A48F60E0A4EE0 -:10DB00000A48F0011610FC010D04EEE5FFF8F60CD2 -:10DB10000949EBD8C010EDE910090896F20E16106D -:10DB2000EEF4FFF8EC05024BFDE4110E1C3BE0881F -:10DB300000072016100E1C38E088006D161EF3D961 -:10DB4000C010FC010D00F3E11109009BE005024E3D -:10DB5000123EE0880007201B10091238E0880055AB -:10DB6000F7E6110B1C19F60306420639C0935F094C -:10DB7000F40C094C043C5F38F3E80008C020201B7B -:10DB8000300C169A189B2FEDD832F6080949FC087C -:10DB9000094EF0011120FC051610F4010A42F601AD -:10DBA0000A411242E2050D00F3DEC010E406161031 -:10DBB0000093EDE11106E009024C0C3CE0880007FF -:10DBC00020131C060C3EE088002CEC0C0101F7D25F -:10DBD000C010E2050D00F7E1110B009CE0090241C5 -:10DBE0001631E088000C201C1C0B163EE08B000751 -:10DBF0001631F7BC0B01F7DEEB0BF4080946021BEC -:10DC0000F9E3110CC3AB123EF3D8EB09F7BB0B01E0 -:10DC1000CA8B1C3BF7B60B01FDD8EB0EC90B0C3CB5 -:10DC2000F7B30B01EDDEEB06CD1BD703D40130AA11 -:10DC3000300BF01F0002D8028002F0ECD4014848FB -:10DC4000169A189B700CF01F0003D802000005986C -:10DC50008002DC54D421F40B024BF01F00151897FE -:10DC6000C230F8FAFFFCE01AFFFC204AE04A002428 -:10DC7000E08B00181898593AE088000F300910A975 -:10DC800010A959BAE088000910A910A9E04A002497 -:10DC9000C03110A910A9300910A991199109C048E3 -:10DCA000300BF01F00040E9CD82200008002E2BC62 -:10DCB0008002E8BCD421300EF6C80001F60614013B -:10DCC000F808002818991897C07870046E050EA4FB -:10DCD00091052FFE20480C3ECF95F40B000B1897B2 -:10DCE000F6C80001300EF8080028A15BC078700566 -:10DCF0006E060EA591062FFE2048163ECF95F4C85D -:10DD00000001A15AF808002C3008C078780E720B78 -:10DD100012AE990B2FF8204C1438CF95D822D70388 -:10DD2000D431205D502C503816971496580C5F0B48 -:10DD300058075F0C1295F9EB100B40E33008F00B1D -:10DD40001800E081028058095F09580A5F08F3E86B -:10DD50000008F6081800E08102764BE4402B6808C2 -:10DD60001638E0840270EE08032C580CE080026B39 -:10DD70004B9BF01F003AC06168082FF88908E08FBC -:10DD8000026268085808C05130184B598908930836 -:10DD90005806C14032D90D88F20818005F0232B926 -:10DDA000F20818005F08E5E81008C0805802F9B2D0 -:10DDB0000101F9B200022FF6C0884AACF01F002A18 -:10DDC000F9B20102F9B200004A5870085818C61199 -:10DDD0005812C2B049F95822C4A0129872043001F6 -:10DDE00032DB32BA7009F2C0FFFFEE09032C580C87 -:10DDF000E080023B1989F6091800C0805803E080D2 -:10DE00000225F4091800E081022150015014492B29 -:10DE1000F01F0012C411EE04002C029B301A2FF4E4 -:10DE2000F01F0012E08F022148A87009EE090328B4 -:10DE30005808C2F0118A32DBF60A1800C2A0580353 -:10DE4000E080020832BBF60A1800E0810203C21823 -:10DE500000007AB88003EC008002ECC800007ABCB5 -:10DE60008003EC04800326948002DCB47208EE0880 -:10DE700003285808C0E0118832D9F2081800C09071 -:10DE80005803E08001E032B9F2081800E08101DBBC -:10DE90003009500950195805E08000A44BE4680887 -:10DEA000302AEE08032C4BDBF01F003DC0D0580396 -:10DEB000E08000986808EE080328118932B8F0095C -:10DEC0001800E081008F4B7468085818E081008AC0 -:10DED0004B187008302AEE08032C4B0BF01F003053 -:10DEE000F9B80002E9F80A004AB468084AD1EE0815 -:10DEF000032C620833DB100CF01F002B1893C0E1D9 -:10DF00006808EE08032CF01F002968096208EE0972 -:10DF10000323F80801081803C08868086209EE089E -:10DF20000328F8080108121850430A910C933FF493 -:10DF300030001096C4784989720849A9EE08032C6C -:10DF400072080C9A100CF01F0016C3A1620CF01F8F -:10DF500000171836C051069600944043C3C85BF4BE -:10DF6000C2E0493870085808C7C062081AD848A8E3 -:10DF700070096E08EE090329A564EA04030A1ADA97 -:10DF80001AD91AD848B8700848BB702CF01F000B7B -:10DF90002FCDC67800007AB88003EC008002E7102D -:10DFA00000007ABC8002ECAC8002EDD0000004A43A -:10DFB000000005988003EC1480031FE800942FF004 -:10DFC0002F01620B580BCB81069640435BF4C031A6 -:10DFD0000898C0A8E8081504EA0800087018C048A6 -:10DFE0003FF83003109458065F19F3E403F9C03189 -:10DFF0003006C5484BE162084BE3EE08032966088A -:10E000000C9CF208070BF01F003C1896C2D14BB8CD -:10E0100070085808C11062096608EE090329F20861 -:10E0200007081AD86E081AD84B5870084B5B702C2A -:10E03000F01F00352FED4AF8700B2FFB910B4AC9EA -:10E04000720AEE0A032CF80B070C300BF60C1800C2 -:10E05000F7BA00FFF3FA0A00F9B90001F1F90A0072 -:10E0600033F8109CC818199833A9F2081800C0306A -:10E070003008C08819A9F0091800F9B80002F9B8E9 -:10E08000010149CA49A97209EE09032974030D8ADD -:10E090002FF3F203000349D9930A5818C1505828A6 -:10E0A000C0405808C6C0C208078933D8F009180014 -:10E0B000F7B300FF4968078A3009F20A1800C10166 -:10E0C00030069106C718078933D8F0091800F7B34E -:10E0D00000FF30080789F0091800C1B048C8910353 -:10E0E0003019484891093006C5F8000000007AB898 -:10E0F00000007ABC8002ECAC000004A4000005988B -:10E100008003EC5080031FE8000004A000007AC0E8 -:10E110004C08402B70082FF81638C2954BE8700851 -:10E120005808C1C06E084BD71AD86E084BCB702C5C -:10E13000F01F003C2FFD5BF4C0906E08A5644BAB54 -:10E14000EA0403091AD9702CC0686E080D894B7B4C -:10E150001AD9702CF01F00332FFD4AE933A8720A38 -:10E16000109C2FFA930A4B299308C6D84B19EE0836 -:10E17000032A3018930A10964AF9C1584AE95BF409 -:10E18000C0D1720A2FFA930A4A2B760BEE0B032B9F -:10E19000F60A070AF00A1800C03130189308300850 -:10E1A0004A49109693085802C1B140094A285809B3 -:10E1B0005F19700858185F08F3E80008E4081800B1 -:10E1C000C0F04018ECCAFFFFEE08002C400BF01F17 -:10E1D000001B40182FF8F006000648E8C0A8496860 -:10E1E00070085818C07148B870092FF9F206000677 -:10E1F00091065BF4C240403B580BF7F41A00A5644B -:10E2000008056A3C6A285808C1E0910C300CC1B876 -:10E2100000007AB8000004A4000005988003EC70A8 -:10E2200080031FE88003EC948003EC9C000004A0B2 -:10E2300000007AC000007ABC8002DCB448C8700CD0 -:10E24000C0283FFC2FBDD83291002FF1FE9FFDCC9E -:10E25000488B97084888F2CAFFFF3019910A129C30 -:10E2600048389109CF0B48489104CECB000004A058 -:10E2700000007AC000007AB8D40130091AD9129887 -:10E28000F01F00022FFDD8028002DD20D401484893 -:10E29000189B700CF01F0003D802000000000598C6 -:10E2A0008003217CD4014848189B700CF01F0003A8 -:10E2B000D8020000000005988002E2BCD431F6C705 -:10E2C000FFF518955967F9B70810F9B80BF8EFD8AA -:10E2D000EB2716375F38F1E713F8C05030C899388C -:10E2E000E08F01F4F01F0050E04701F7E08B001CC5 -:10E2F000EE0316034CD8F003003870361036C061B8 -:10E30000ECC8FFF870361036C0C06C18E018FFFC7F -:10E310006C3AEC0800090A9C6C289528913AC4785C -:10E320002FE3C4D8EE081609C041EE031603C278E5 -:10E330005848E08B0006EE0316062C83C2085948A5 -:10E34000E08B0005F0C3FFA5C1A8E0480054E08BB6 -:10E350000006EE03160C2923C128E0480154E08B87 -:10E360000006EE03160F2893C0A8EE031612E0482D -:10E370000554E088000437E3C02828434ABAF40370 -:10E38000003A7436C1986C19E019FFFCF207010BD2 -:10E3900058FBE08A00042013C1186C38580BC0B534 -:10E3A0006C2AEC0900090A9C912A95387218A1A8D8 -:10E3B0009318CBD810961436CE712FF349BAF4CCFB -:10E3C000FFF878261836C6F06C19E019FFFCF20742 -:10E3D000010858F8E0890091993C992C5808C055DB -:10E3E000EC0900090A9CCE3BE04901FFE08B0013D9 -:10E3F000A399F4090038702B8D388D2B9736912610 -:10E40000A3497418301BF6090949F1E91009951957 -:10E41000C4A8F20816095848E08B000AF20A16064A -:10E420002C8AC2488002E8CA0000059C5948E08B4B -:10E430000005F0CAFFA5C1A8E0480054E08B000623 -:10E44000F20A160C292AC128E0480154E08B000684 -:10E45000F20A160F289AC0A8F20A1612E0480554CC -:10E46000E088000437EAC028284A4C8BF60A0034BA -:10E4700068280838C0E17619A34A301EFC0A094A08 -:10E48000F3EA100A1099971AC0A870280838C060DB -:10E49000701AE01AFFFC1439CF9370398D398D282A -:10E4A00091369326E6081402301B4B84F608094B7C -:10E4B0006818103BE08B006EF7E80009C0B1E0136C -:10E4C000FFFCA17B2FC3C0382FC3A17BF7E8000955 -:10E4D000CFC0E803003E06921C916236C2E86C1A77 -:10E4E000E01AFFFCF407010858F8E08A00156C3ABE -:10E4F0006C299529933A0E99EC070007A1A9993741 -:10E5000099278D19EE0809088F2C8F3CA1A80A9C29 -:10E510008F18C0D86C395808C0F5EC0A000A741876 -:10E52000A1A80A9C95186C2893289139F01F00180F -:10E53000ECCCFFF8D83212960236CD212FF2F1D270 -:10E54000C002C0302F81CCAB1C98F3D3C002C08175 -:10E550006819F60811FFF3E800088918C078F0C9B7 -:10E560000008201370081238CF10A17B6818103BE8 -:10E57000E08B0010580BC0D00493C0382FC3A17B90 -:10E58000F7E80009CA71CFBB0000059C8002E8CC07 -:10E5900068236612E012FFFC0E325F39E4070108BF -:10E5A00058F85FAAF5E91009E08000A24C887001D4 -:10E5B0004C882F0170080E015BF8C0402811E01153 -:10E5C000FF80029B0A9CF01F004418965BFCC6E08B -:10E5D000E6020008103CC0320833C6814BFA7409C9 -:10E5E000E209000995091036C0A1F5D6C007C0712F -:10E5F000E20200026828A1A29112C4C84B5A740B0F -:10E600005BFBC0319506C068EC0900094B3A101954 -:10E610009509F1D6C003F00911085808F20817103F -:10E62000EDD8E1062808EC0100010A9CE3D1C007FF -:10E63000F0010101029BF01F00284A885BFCEC0CF2 -:10E640001700F9B1000070090C1C8926020C120198 -:10E65000A1AC91018D1C0833C1D058F2E08B0005AC -:10E6600030188D18C238305920C2E012FFF8E60287 -:10E670000008912991196618F1D8C001E5E8100841 -:10E68000871858F2E0880007E6CBFFF80A9CF01FD5 -:10E6900000144949720A491870081438F3F8BA008E -:10E6A0004919720A1438F3F8BA0068287018E0188B -:10E6B000FFFC0E385F390E1858F85FAAF5E910090B -:10E6C000C1600A9CF01F0009D83A000000007ACC13 -:10E6D000000009A88002EBC800007AD08003217CEA -:10E6E00000007AC800007AC48002E8CC6826A1A89D -:10E6F0000E99A1A98D19EC0700070A9C89278F188C -:10E70000F01F0003ECCCFFF8D83200008002E8CC08 -:10E71000D4013008C0D8F808070EF6080709201AF7 -:10E720002FF8F20E1800C040FC09010CD802580A5C -:10E73000CF31149CD802588AC2F5F9EB1009E219BE -:10E740000003E0810097E04A0020C3B4F4081402FB -:10E75000F0091108FE09002F7669996976599959CF -:10E7600076499949763999397629992976199919E5 -:10E7700076099909F608002BF8080028E01A00032A -:10E78000F40A1104FE0A002F17A9B0A91799B0992D -:10E790001789B0895EFCF40A1109FE0A002F17F9E7 -:10E7A000B8F917E9B8E917D9B8D917C9B8C917B965 -:10E7B000B8B917A9B8A91799B8991789B8895EFC8B -:10E7C000EBCD40C01899220AB707B326B707B32686 -:10E7D000B707B326B707B326220ACF742F0AC0653E -:10E7E000B707B326B707B326210A5C3AFE0A003FF3 -:10E7F000D703D703F736000EF366000EF736000D89 -:10E80000F366000DF736000CF366000CF736000BCC -:10E81000F366000BF736000AF366000AF7360009C4 -:10E82000F3660009F7360008F3660008F7360007BC -:10E83000F3660007F7360006F3660006F7360005B4 -:10E84000F3660005F7360004F3660004F7360003AC -:10E85000F3660003F7360002F3660002F7360001A4 -:10E86000F3660001F7360000F3660000E3CD80C0D8 -:10E87000201AF60A0709F80A0B09CFB15EFCD40189 -:10E88000183BC192F60A0009123CC152F80A000B6B -:10E890003008C068F208070E201AF6080B0E201880 -:10E8A000580ACF91D802F6080709201AF8080B0970 -:10E8B0002FF8C0283008580ACF71D8021898C038ED -:10E8C00010CB201A580ACFD15EFC5EFC5EFCD70349 -:10E8D000D4014848169A189B700CF01F0003D80208 -:10E8E000000005988002E8E8D431201D16941892A3 -:10E8F000149B5804C051F01F005B1895C5B9500A0D -:10E90000F01F0059400BE8C10008F6C6FFF5621C75 -:10E910005966F9B60810F9B80BF8EDD8EB2616369B -:10E920005F38F1E613F8C05030C830058538C42987 -:10E930001890E010FFFC0C30E08401124CB8E200AB -:10E94000000970250A39C090721AA1CAF20A000A99 -:10E95000741AEDBA0000C220721AE01AFFFCF4002B -:10E9600000030A39C131ECC7FFF00E33C195E2064E -:10E9700000090C13A1A393139129049C6218089514 -:10E98000F1D8C00110468316C1390C33C0957228E6 -:10E990000297723993289139CE48300A1499EDBC08 -:10E9A0000000E080009D6207E20701076E1CE01C8A -:10E9B000FFFC5809C5E0F80000030A39C4811403BC -:10E9C000ECC9FFF01233C5556E3A6E299529933A7A -:10E9D000EEC5FFF8E0CA0004E04A0024E08B002501 -:10E9E0000A99593AE088001A09098B0909098F39EF -:10E9F000EEC9FFF059BAE0880011090B930B090921 -:10EA00008F59EEC9FFE8E04A0024C071090A930A51 -:10EA1000EEC9FFE0090A8F7A090A12AA680A930A66 -:10EA2000681A931AC0785008089B0A9CF01F0010BF -:10EA30004008EE0600090C13A1A393139129049C2E -:10EA40006E18F1D8C00110468F16CB2814030C3372 -:10EA5000C10572287239932891396E286E39C0F831 -:10EA60008002E2BC8002E8CA0000059C8002E87EC9 -:10EA7000F80000030C33C3356E396E2893289139A2 -:10EA8000E0CA0004EECCFFF8E04A0024E08B00244A -:10EA9000593AE088001A0908990809088F38EECC1D -:10EAA000FFF059BAE08800110908990809088F5841 -:10EAB000EECCFFE8E04A0024C07109089908EECCCA -:10EAC000FFE009088F78090818A8680899086818ED -:10EAD0009918C478089BF01F0039C438049CF01FB3 -:10EAE00000381895C3A06218F8C90008A1C8E20848 -:10EAF00000081039C07172130297E013FFFC000385 -:10EB0000C308E0CA0004E04A0024E08B0020089912 -:10EB10001898593AE0880014130B10AB130B10AB84 -:10EB200059BAE088000D130B10AB130B10ABE04A81 -:10EB30000024C051130A10AA130A10AA130A10AA1B -:10EB4000720A910A72199119C048089BF01F001BA4 -:10EB5000089B049CF01F001B049CC2A80093029712 -:10EB6000E60601096E1858F9E0880016F1D8C001D0 -:10EB7000EDE810088F181298A1A8EE06000BF60910 -:10EB8000000997187218A1A82F8B9318049CF01FE6 -:10EB9000000DC0B8F1D8C001E7E810088F18EE03E7 -:10EBA00000036618A1A88718049CEEC5FFF8F01FA3 -:10EBB00000060A9C2FFDD8328002E87E8002E2BC6B -:10EBC0008003217C8002E8CCD42130081897487655 -:10EBD000169C8D08F01F00065BFCC0516C0858089D -:10EBE000EFF81A03D822000000008CC48002F1E87C -:10EBF0005EFDD703D421217DE06802041697BA6830 -:10EC0000504C500CF01F000B3008512850D848A829 -:10EC100050983FF8BA784898505C501CFAC9FF9059 -:10EC20000E9A700C1A9BF01F00062E9DD822000031 -:10EC30008002EDD08002EBF00000059880030C4CC0 -:10EC4000D421217D4988FAC9FF9016977006580B88 -:10EC5000C064E068008B3FFC8D38C228580BF60872 -:10EC600017005807F9BB01FFEFDBE10850585028A7 -:10EC7000E0680208BA683FF8504C500CBA781A9B0A -:10EC80000C9CF01F000A5BFCC044E068008B8D38D0 -:10EC90005807F9B90100FBF81000F1F91E002E9D8C -:10ECA000D8220000000005988002F5685C5BC0284F -:10ECB0002FFC19885808C050F6081800CFA15EFC38 -:10ECC000580B5E0C5E1DD703F9EB100AE21A000325 -:10ECD000C341780A76095CEAC170123AC151781AC8 -:10ECE00076195CEAC110123AC0F1782A76295CEAFA -:10ECF000C0B0123AC091783A76395CEAC0502F0C15 -:10ED00002F0B123ACE70F9DAC308F7D9C3085E0C9C -:10ED1000161C5E1CF9DAC208F7D9C2085E0C161C74 -:10ED20005E1CF9DAC108F7D9C1085E0C161C5E1C1E -:10ED30005C5A5C59121A5EFA178A1989580A5E09D8 -:10ED400014195E19179A1999580A5E0914195E194F -:10ED500017AA19A9580A5E0914195E1917BA19B920 -:10ED6000580A5E0914195E192FCB2FCCCE6B000008 -:10ED70003008F6080709F8080B092FF85809CFA141 -:10ED80005EFCD703D4014848189B700CF01F0003A9 -:10ED9000D8020000000005988002ED9CD42118974D -:10EDA0001696169CF01F0008F8C5FFFF0E9C0A9BE4 -:10EDB000F01F00061897C0500A9A0C9BF01F000421 -:10EDC0000E9CD8228002EDD08002E2BC8002E736A1 -:10EDD00030091898C0282FF8118AF20A1800CFC1FC -:10EDE000F00C010C5EFC580AC0815EFA580AC0B0F3 -:10EDF0005808C0902FFC2FFB201A19881789F0099A -:10EE00001800CF50198C1788101C5EFC3008103A7F -:10EE10005E0CF6080709F8080B092FF85809CF818E -:10EE2000103A5E0CF8080B092FF8CFBBD401484804 -:10EE3000169A189B700CF01F0003D802000005986A -:10EE40008002EE44D421300816951696C0282FF67D -:10EE5000580AC060201A0D89F0091800CF910A16CF -:10EE6000ECCBFFFFF01F00071897C0800A9B0C9A9D -:10EE7000F01F00053008EE060B080E9CD82200009B -:10EE80008002E2BC8002E736D42118981696580B0F -:10EE9000C0C03007C0481897F8C8FFFF109C0C9BF3 -:10EEA000F01F0005CF91C048F01F000318970E9C7B -:10EEB000D82200008002ECACD421201D4A351897DE -:10EEC0006A04E8F600E85806C351500B350CF01FF1 -:10EED00000206A08E94C00E8F0F900E89326930660 -:10EEE0009316F0F900E893469336F0F900E893663C -:10EEF0009356F0F900E893B693A6F0F900E893D69C -:10EF000093C6F0F900E893F693E6F0F900E8F346CB -:10EF10000044F3460040F0F900E8F346004CF346A5 -:10EF20000048F0F900E8F366001CF0F800E8400B38 -:10EF30009196486870080E9CF0FA00E83019F01FAE -:10EF400000052FFDD8220000000005988002E2A4F1 -:10EF50008002EF54D421580CC041740C580CC2905C -:10EF600018981697113EC0A80C3EC0815809C030B1 -:10EF7000109CCF7B9508B889D8220F365806CF5100 -:10EF8000580EC051950E1C9CD822129810991697B5 -:10EF9000133E0F361C36C0A1580EFC091700F9BBF2 -:10EFA0000100F1FB1E009509D8225806CF31CEEBA7 -:10EFB000D822D703D431203D4CC8502C700116986C -:10EFC000113EE20E0706E2160008CFB1E04E002D1A -:10EFD000C041113E3016C058E04E002BC021113EFA -:10EFE00058095F0C59095F053007F9E51005EE0572 -:10EFF0001800C1E0E04E0030C131118535843783FF -:10F00000E80518005F04E60518005F05E9E510054E -:10F01000EE051800C050119E31092FE8C098580C19 -:10F02000C070E04E0030F9B90008F9B9010AE06C8F -:10F03000FFFFEA1C7FFF3007FC1580000E930E36A1 -:10F04000F80517000E9CEA090D0408925005E20E1F -:10F050000704E1D4C001F9B00137F9B000575010EE -:10F06000FCC500300890E2100004C0814010E9D4D3 -:10F07000C002FC0001055804C1C01235C1A4043C03 -:10F080005FBEFDE713FEE60E1800C101043C5F0EF3 -:10F0900040070E355F97EFEE000EE60E1800C061D8 -:10F0A000B33C3017EA0C000CC0283FF7113ECD0BE3 -:10F0B0005BF7C0E1E069FFFFEA197FFFFC1C8000FD -:10F0C00040205806F20C170032298139C0485806F2 -:10F0D000FBBC0100580AC0705807F9B901FFF1D90B -:10F0E000E10B950B2FDDD8320000049CD401485869 -:10F0F0001499169A189B700CF01F0003D802000098 -:10F10000000005988002EFB43028D6733FFC358BA1 -:10F11000580C5E4C482A950B5EFC000000008CC425 -:10F120003058D6733FFC358B580C5E4C482A950BF3 -:10F130005EFC000000008CC43038D6733FFC358B79 -:10F14000580C5E4C482A950B5EFC000000008CC4F5 -:10F150003048D6733FFC358B580C5E4C482A950BD3 -:10F160005EFC000000008CC430B8D6733FFC358BC9 -:10F17000580C5E4C482A950B5EFC000000008CC4C5 -:10F180003098D6733FFC358B580C5E4C482A950B53 -:10F190005EFC000000008CC4D421210D16971A9B40 -:10F1A000F01F0011C0343FFCC1C84008AE08401831 -:10F1B000AE1840288F184038AE484048AE584058E6 -:10F1C000AE684068AE7840888F4840A88FB840C885 -:10F1D0008FC840D88F5840E8300C8F7840F88F980F -:10F1E0002F0DD8228002F180D40148C87009580937 -:10F1F000C03148B99109489948AA7208F00C000C2E -:10F20000143CE08B0004930CC068F01F000730C86A -:10F2100099083FF8109CD80200007AF800008CC8CA -:10F220000000F00080031D20D431208DFAC4FFBC03 -:10F23000504B682E505812967C0B7005506E580B30 -:10F24000F40B17006803681140493008C2C92FFB4E -:10F25000325C178AF80A18005F1EF00A18005F1C5B -:10F26000FDEC000CF00C1800CF31580AE0800129A9 -:10F27000300C3FFA1890503A18941892F80C003C51 -:10F280001697507C4CDC0F3AF80A070E407C1C0C99 -:10F290004CBEFC0C070E201E500E4CAEFC0C070C96 -:10F2A000507C400C587CE08B00F84C7EFC0C032F0B -:10F2B000368BF60A1800E08000F0371BF60A1800BB -:10F2C000C07034CBF60A1800C051A3B4CE58A5B410 -:10F2D000CE380F8B36CAF40B1800C051A5B4EECB54 -:10F2E000FFFFCDB8A5A4CD88EBD5C005367CF80AC4 -:10F2F0001800E08B0027365BF60A1800C48234FB46 -:10F30000F60A1800C480E08B000C345BF60A180083 -:10F31000C3E0347BF60A1800C3A0344BC088358B99 -:10F32000F60A1800C2C0E08B0007355BF60A180029 -:10F33000C351C318363BF60A1800C2F0364BC0E87A -:10F34000370BF60A1800C250E08B000D36EBF60AB8 -:10F350001800C1F0E08B0014369BF60A1800C1E1DA -:10F36000C0E8375BF60A1800C0A0378BF60A180011 -:10F37000C060373BF60A1800C111C0B8EDB40004F4 -:10F38000C0A0EDB40005C0913020C0883040C068F6 -:10F390003030C0483010C0283000403B5BFBC040DC -:10F3A000E20B0920C7985860E08B00776C0AEACC22 -:10F3B000FFFF486EFC00032F8003EE088003ED641E -:10F3C0008003ECF88003ECAC8003ECCCF4CBFFF8CA -:10F3D0008D0BF4EA0000E605083AC0F8F4CBFFFC18 -:10F3E0008D0B740AE605093AC088F4CBFFF88D0B43 -:10F3F000F4EA0000E605083A0E9B1895C4E8620A94 -:10F400005BFAC0B150195028E06A0080300B029CB2 -:10F41000F01F004D40284019E4CC00010E9B503CE9 -:10F42000F20C0C49C3A8620A5BFAC0B1501950280B -:10F43000E06A0080300B029CF01F00434028401916 -:10F440002012300A0E9BE202092AF2020C49C2582D -:10F4500016976C0AF4CBFFFC8D0B740A0E9BE60525 -:10F46000093A2FF5C1A8F4C20030C068E4020022B6 -:10F470002FF7F40200120F8A580AC0E0230A589AA4 -:10F48000FE98FFF6C0982FF70F8A580AC050230A3B -:10F49000589AFE98FFFA0E9B407C30BAF40C180084 -:10F4A000FE91FEEE4042178C0A325F4AF00C1800C3 -:10F4B0005F1CF9EA000AF00A1800FE91FECB300842 -:10F4C000404E178AE2050021F00A1800FC091710C7 -:10F4D000E6050038069EC2A8620A583AC1E0E089F3 -:10F4E0000007581AC1A0582AC181C058585AC0C034 -:10F4F000C0B5C1386C0AF4CCFFF88D0CF4E2000002 -:10F50000F0E30000C1086C0AF4CCFFF88D0CF4E2C3 -:10F510000000F0E30000C0786C0AF4CCFFFC8D0C16 -:10F52000740A910A2FF52F882FC11235FE9AFFD643 -:10F530001C934052406E85059D0B404BE60B003CF2 -:10F540002F8DD8328002E8BCD42114977428580833 -:10F55000C0419518109CD822F01F000330088F1866 -:10F560008F28D82280032320D431FACD068850A9D1 -:10F57000169014971893580CC06078685808C031DA -:10F58000F01F004E4CE81030C0316600C0A84CD8C7 -:10F590001030C0316610C0584CB81030E7F000028F -:10F5A0008068EDB80003C04160485808C071009BF6 -:10F5B000069CF01F0046E0810B4080681099E2191C -:10F5C000001A58A9C3D18079300AF4091900C385FB -:10F5D000A1D8FB5805B86088FB4805CC60A8FB485B -:10F5E00005D4FAC8FFD4FB4805BCFB4805ACE0686D -:10F5F0000400FB4805C0FB4805B43008FB5905BAB8 -:10F600000E9A40A9FAC7FA54FB4805C4069C0E9B03 -:10F61000F01F002F506CC0950E9B069CF01F002D14 -:10F62000406EF9BE01FF506EFB0805B8EDB800064C -:10F63000E0810B058068A7A8A068E08F0B00300868 -:10F64000FAC4F9F85098FB480678409CFB480674C9 -:10F65000FB48067CFB48068050573FF8FB44067089 -:10F66000FB48052C506C1896069150204055C02838 -:10F670002FF50B88300B325AF60818005F19F40882 -:10F6800018005F181268F6081800CF314059EA09CF -:10F690000107C2E0FAF806780E088909FB480678E7 -:10F6A0008917FAF806742FF8FB4806745878E08931 -:10F6B00000132F84C1A8000080031F388003EF2CA3 -:10F6C0008003EF4C8003EF6C80031C388002F568E8 -:10F6D00080031D2CFACAF990402B029CF01F00A158 -:10F6E000E0810AA6FAC4F9F840680E0850680B8851 -:10F6F0003007EE081800E0800A8AEAC2FFFF3003F4 -:10F700005052FB6706873FFE50745043503E0690B0 -:10F71000508506920C944057C0683FFC0A97503CB5 -:10F72000C02830000F38C0281292E0480063E08003 -:10F7300001CCE0890045E0480039E0890026E04836 -:10F740000031E0840198E048002BE0800101E0896D -:10F75000000FE0480023E080008EE048002AE080AF -:10F76000008CE0480020E0810897C7B8E048002EF0 -:10F77000E08000F1E0480030E080017BE048002DAF -:10F78000E081088ACE28505750420897408540743F -:10F790001092E048004FE0800439E0890008E0481A -:10F7A0000044E081087DE08F01DEE0480055E08004 -:10F7B00005DFE0480058E0810873C428E048006F86 -:10F7C000C430E089001FE0480069C450E089000AA5 -:10F7D000E0480064C400E0480068E081085DC63984 -:10F7E000E048006CE0800163505750420897408524 -:10F7F00040741092E048006EE0810852E08F02ED04 -:10F80000E0480073E0800553E089000BE048007099 -:10F81000E08004F9E0480071E081083EC5295057B6 -:10F8200050420897408540741092E0480075E0808F -:10F8300005A0E0480078E0810833E08F06964CABE5 -:10F84000509BE08F06945057408508975042407473 -:10F85000E08F03DD50574085089750424074C83907 -:10F86000FB380687300AF4081800FE91FF5D320865 -:10F87000C6E8A1A3C58B0F89F2C800305898E08B69 -:10F88000001EEEC8FFFF300B2309F60B002BF20B16 -:10F89000001B1139F2CA0030589AFE98FFF7E04970 -:10F8A0000024FE91FF40E04B0020E08909C1201BAD -:10F8B000FAF90680123BC095C108FAF90680ECCA35 -:10F8C000FFFF1236C1F5C268FAC9F9781097F20B3A -:10F8D000003BF6F2FDA4C358FAC7F9841AD7109773 -:10F8E000FAC2FAD01AD2FAC8FBCC029C1AD8FAC8CB -:10F8F000F974FAC9FFCC40BAF01F001C2FDD780262 -:10F90000C208FACEF9781496FC040038F0F2FDA48F -:10F91000C18840A859F9E0890011F0CBFFFC50AB39 -:10F920007002FACCF978F8090038F142FDA42FF9F9 -:10F930001496FB490680C058700214962FC850A830 -:10F940005802FE94FEF15C32A3A3CEDAFB68068770 -:10F95000CEAA0F38E048002AC0A03009C7D800005E -:10F960008002F5488003EDD08002F2280F88F0C9AC -:10F9700000305899E08B001EEEC5FFFF300B2308C6 -:10F98000F60B002BF00B001B0B38F0C90030589918 -:10F99000FE98FFF7E0480024FE91FEC5E04B0020F2 -:10F9A000E0890946201BFAF80680103BC095C10883 -:10F9B000FAF90680ECCAFFFF1236C1F5C288FACA0E -:10F9C000F978F40B003BF6FBFDA4503BC3C8FAC921 -:10F9D000F9841AD9FAC8FAD01AD8FAC8FBCC029C12 -:10F9E0001AD8FAC8F974FAC9FFCC40BAF01F027AE3 -:10F9F0002FDD780C503CC278FACEF9780E95FC04D5 -:10FA000000381496F0F8FDA45038C1D840A859F930 -:10FA1000E0890014F0CBFFFC700850AB5038FACCF2 -:10FA2000F978403BF8090038F14BFDA42FF90E9509 -:10FA3000FB4906801496C07870090E952FC850397E -:10FA4000149650A840385808FE95FE690A97C6BA21 -:10FA5000F40B00190F38F209002BF0CA0030589A45 -:10FA6000FE98FFF83FFEF20E0C495039C5FAA7B3D5 -:10FA7000C5AA30092308F2090029F00900190F3836 -:10FA8000F0CA0030589AFE98FFF7E0480024FE9133 -:10FA9000FE4DE0490020E08908CBF2C4000130109F -:10FAA000FE9FFE42A7A3FE9FFE3F0F89F0091800AC -:10FAB000C0512FF7A5B3FE9FFE37A5A3FE9FFE34CE -:10FAC000A5B3FE9FFE3150575042089740854074C1 -:10FAD0000C99FAF806805800C1D01037C064FACCEF -:10FAE000F978F8070037C1D8FAC8F9841AD8FAC8E3 -:10FAF000FAD01AD8FAC8FBCC1AD8FAC8F974FAC9DD -:10FB0000FFCC0A9A0E9B029CF01F02332FDD19B81E -:10FB1000C2282FF61039C084FACBF978F6070037DF -:10FB2000EF38FDA7C18840A959F8E0890012F2CA50 -:10FB3000FFFC50AA7209FAC2F978E408003A2FF8DB -:10FB4000F549FDA4FB480680F1D9C008C04813B8A8 -:10FB50002FC950A9300EFB680648FB6E0687E08F60 -:10FB600006A7A5A30C92EDB30005C4D1FAF8068050 -:10FB70005800C1E01037C064FACCF978F8070037B4 -:10FB8000C1F8FAC8F9841AD8FAC8FAD00A9A1AD869 -:10FB9000FAC8FBCC1AD8FAC9FFCCFAC8F9740E9B84 -:10FBA000029CF01F020D2FDD781A7809C288ECC282 -:10FBB000FFFF1036C0A4FACBF978F6070037EEFA4B -:10FBC000FDA8EEF9FDA4C1B840A959F8E0890013D9 -:10FBD000F2CAFFF850AAFAC6F978721AEC08003B8C -:10FBE0007209F74AFDA8F749FDA42FF8FB480680E3 -:10FBF000C068F2C8FFF8721A50A87209049650093A -:10FC0000501ACD58EDB30004C441FAF806805800EC -:10FC1000C1D01037C064FACEF978FC070037C1E8CC -:10FC2000FAC8F9841AD8FAC8FAD00A9A1AD8FAC8BF -:10FC3000FBCC0E9B1AD8029CFAC8F974FAC9FFCC07 -:10FC4000F01F01E52FDD780AC218ECC2FFFF103665 -:10FC5000C084FACCF978F8070037EEFAFDA4C16841 -:10FC600040A959F8E0890010F2CAFFFC50AAFACB6B -:10FC7000F978720AF6080039F34AFDA42FF8FB4818 -:10FC80000680C048720A2FC950A90496501AC8D8D5 -:10FC9000EDB30006C481FAF806805800C1D01037D1 -:10FCA000C064FAC8F978F0070037C1E8FAC8F984E7 -:10FCB0001AD8FAC8FAD01AD8FAC8FBCC1AD8FAC897 -:10FCC000F974FAC9FFCC0A9A0E9B029CF01F01C27C -:10FCD0002FDD9818C238ECC2FFFF1036C084FAC678 -:10FCE000F978EC070037EF08FDA6C18840A959F85C -:10FCF000E0890012F2CAFFFC50AA7209FACEF97824 -:10FD0000FC08003A2FF8F549FDA4FB480680F1D91C -:10FD1000B010C04892182FC950A950180496BF5867 -:10FD20005008C458FAF806805800C1D01037C06493 -:10FD3000FACBF978F6070037C1E8FAC8F9841AD87F -:10FD4000FAC8FAD00A9A1AD8FAC8FBCC0E9B1AD86D -:10FD5000029CFAC8F974FAC9FFCCF01F019F2FDD8D -:10FD6000780AC218ECC2FFFF1036C084FACAF978CC -:10FD7000F4070037EEFAFDA4C16840A959F8E089FC -:10FD80000010F2CAFFFC50AAFAC6F978720AEC0811 -:10FD90000039F34AFDA42FF8FB480680C048720AD8 -:10FDA0002FC950A90496501ABF5A500AFAEA000007 -:10FDB000580A5C2BC0E43008FAEA00003009F00A67 -:10FDC000010AF20B014B32D8FAEB0000FB68068700 -:10FDD0003010E08F04E30C99EDB30005C471FAF81C -:10FDE00006805800C1D01037C064FACAF978F40709 -:10FDF0000037C1D8FAC8F9841AD8FAC8FAD00A9AD2 -:10FE00001AD8FAC8FBCC0E9B1AD8029CFAC8F9740F -:10FE1000FAC9FFCCF01F01702FDD780AC2082FF657 -:10FE20001039C084FAC9F978F2070037EEFAFDA458 -:10FE3000C16840A959F8E0890010F2CAFFFC50AA35 -:10FE4000FAC3F978720AE6080039F34AFDA42FF8DC -:10FE5000FB480680C048720A2FC950A94062049826 -:10FE60009512BF589508FE9FFC03EDB30004C441F2 -:10FE7000FAF806805800C1D01037C064FACEF9787D -:10FE8000FC070037C1D8FAC8F9841AD8FAC8FAD0E2 -:10FE90000A9A1AD8FAC8FBCC0E9B1AD8029CFAC848 -:10FEA000F974FAC9FFCCF01F014C2FDD780AC208A3 -:10FEB0002FF61039C084FACCF978F8070037EEFA3B -:10FEC000FDA4C16840A959F8E0890010F2CAFFFCFE -:10FED00050AAFACBF978720AF6080039F34AFDA461 -:10FEE0002FF8FB480680C048720A2FC950A9406904 -:10FEF0009509FE9FFBBDE2130040C440FAF806805E -:10FF00005800C1D01037C064FAC8F978F00700373C -:10FF1000C1D8FAC8F9841AD8FAC8FAD00A9A1AD8F5 -:10FF2000FAC8FBCC0E9B1AD8029CFAC8F974FAC91D -:10FF3000FFCCF01F01292FDD780AC2082FF61039F7 -:10FF4000C084FAC3F978E6070037EEFAFDA4C16869 -:10FF500040A959F8E0890010F2CAFFFC50AAFAC281 -:10FF6000F978720AE4080039F34AFDA42FF8FB4837 -:10FF70000680C048720A2FC950A9406EB40EFE9F79 -:10FF8000FB77FAF806805800C1D01037C064FACC6D -:10FF9000F978F8070037C1D8FAC8F9841AD8FAC82E -:10FFA000FAD00A9A1AD8FAC8FBCC0E9B1AD8029C2F -:10FFB000FAC8F974FAC9FFCCF01F01072FDD780ADF -:10FFC000C2082FF61039C084FACBF978F60700374B -:10FFD000EEFAFDA4C16840A959F8E0890010F2CA00 -:10FFE000FFFC50AAFAC3F978720AE6080039F34A0E -:10FFF000FDA42FF8FB480680C048720A2FC950A9FB -:02000004800377 -:1000000040629502FE9FFB34A5A30C99EDB3000559 -:10001000C571FAF806805800C2601037C0A4FACE45 -:10002000F978FC070037EEEAFDA4FAEB0000C1887E -:10003000FAC8F9841AD8FAC8FAD01AD8FAC8FBCC88 -:100040001AD8FAC8F974FAC9FFCC0A9A0E9B029C16 -:10005000F01F00E12FDDF8E80000FAE900003000B1 -:10006000E08F03992FF61039C0B4FAC8F978F00779 -:100070000037EEEAFDA4FAEB0000E08F038C40A904 -:1000800059F8E0890016F2CAFFF850AAF2EA000017 -:10009000FAEB0000FACAF978F4080039FAEA00002D -:1000A000F2EBFDA42FF8FB480680E08F0374F2EA20 -:1000B00000002F89FAEB000050A9E08F036CEDB32C -:1000C0000004C141FAF806805800C0801037C60409 -:1000D000FACAF978F4070037C7782FF61039C774D1 -:1000E000FAC9F978F2070037C6F8EDB30006C45133 -:1000F000FAF806805800C1D01037C064FACCF978FD -:10010000F8070037C1D8FAC8F9841AD8FAC8FAD063 -:100110001AD8FAC8FBCC1AD8FAC8F974FAC9FFCCB5 -:100120000A9A0E9B029CF01F00AC2FDD9818C22883 -:100130002FF61039C084FACBF978F6070037EF08AC -:10014000FDA6C18840A959F8E0890012F2CAFFFC57 -:1001500050AA7209FAC2F978E408003A2FF8F54972 -:10016000FDA4FB480680F1D9B010C04892182FC9F1 -:1001700050A95C785018C418FAF806805800C1D00D -:100180001037C064FACCF978F8070037C1D8FAC83C -:10019000F9841AD8FAC8FAD00A9A1AD8FAC8FBCC45 -:1001A0000E9B1AD8029CFAC8F974FAC9FFCCF01F4A -:1001B000008A2FDD780AC2082FF61039C084FACBE6 -:1001C000F978F6070037EEFAFDA4C16840A959F89E -:1001D000E0890010F2CAFFFC50AAFAC2F978720A4C -:1001E000E4080039F34AFDA42FF8FB480680C04814 -:1001F000720A2FC950A9501A300E500E1C90E08F71 -:1002000002CA505750420897408540740C99FAF83A -:1002100006805800C1D01037C064FACCF978F807CE -:100220000037C1D8FAC8F9841AD8FAC8FAD01AD84F -:10023000FAC8FBCC1AD8FAC9FFCCFAC8F9740A9AE2 -:100240000E9B029CF01F00642FDD7809C2182FF668 -:100250001039C084FACBF978F6070037EEF9FDA41F -:10026000C17840A959F8E0890010F2CAFFFC50AAF1 -:10027000FAC2F9787209E408003AF549FDA42FF8AA -:10028000FB480680C058F2C8FFFC50A8720933082A -:10029000300EFB6806844D1C37885019A1B3FB68EB -:1002A0000685500E509CE08F02755057300B50421F -:1002B000FB6B06870897408540740C99FAF8068016 -:1002C0005800C1D01037C064FACAF978F407003773 -:1002D000C1D8FAC8F9841AD8FAC8FAD01AD8FAC814 -:1002E000FBCC0E9B1AD80A9AFAC8F974FAC9FFCC4B -:1002F000029CF01F00392FDD7807C2082FF6103955 -:10030000C084FAC9F978F2070037EEF7FDA4C16896 -:1003100040A959F8E0890010F2CAFFFC50AA720700 -:10032000FAC2F978E4080039F347FDA42FF8FB4836 -:100330000680C04872072FC950A9403E580EC1051B -:100340001C9A300B0E9CF01F0026E08002B6F807C6 -:100350000105403C1835E08902B0E08F02AF0E9CE9 -:100360003000F01F00201895E08F02A9A5A30C997A -:10037000EDB30005C581FAF806805800C2001037B9 -:10038000C064FACBF978F6070037C208FAC8F984D6 -:100390001AD8FAC8FAD00A9A1AD80E9BFAC8FBCC17 -:1003A000029C1AD8FAC8F974FAC9FFCCF01F000AE7 -:1003B0002FDDF8EA0000FAEB0000C3282FF6103911 -:1003C000C124FACAF978F4070037EEE8FDA4FAE987 -:1003D0000000C2688002F2288003EDE4800328A4B4 -:1003E0008002EDD040A959F8E0890015F2CAFFF863 -:1003F00050AAF2EA0000FAEB0000FACAF978F40811 -:100400000039FAEA0000F2EBFDA42FF8FB48068061 -:10041000C078F2EA00002F89FAEB000050A93010F2 -:10042000E08F01B9EDB30004C141FAF8068058002D -:10043000C0801037C604FACAF978F4070037C778C5 -:100440002FF61039C774FAC9F978F2070037C6F8E1 -:10045000EDB30006C451FAF806805800C1D0103739 -:10046000C064FACCF978F8070037C1D8FAC8F98423 -:100470001AD8FAC8FAD01AD8FAC8FBCC1AD8FAC8CF -:10048000F974FAC9FFCC0A9A0E9B029CF01F0086F1 -:100490002FDD9818C2282FF61039C084FACBF978CE -:1004A000F6070037EF08FDA6C18840A959F8E08992 -:1004B0000012F2CAFFFC50AA7209FAC2F978E408E5 -:1004C000003A2FF8F549FDA4FB480680F1D9B01099 -:1004D000C04892182FC950A95C785018C418FAF86F -:1004E00006805800C1D01037C064FACCF978F807FC -:1004F0000037C1D8FAC8F9841AD8FAC8FAD00A9ACB -:100500001AD8FAC8FBCC0E9B1AD8029CFAC8F97408 -:10051000FAC9FFCCF01F00642FDD780AC2082FF65D -:100520001039C084FACBF978F6070037EEFAFDA44B -:10053000C16840A959F8E0890010F2CAFFFC50AA2E -:10054000FAC2F978720AE4080039F34AFDA42FF8D8 -:10055000FB480680C048720A2FC950A9501A300EB5 -:100560003010500EC1794D1C509CEDB30005C541B3 -:10057000FAF806805800C2201037C0A4FACBF978E8 -:10058000F6070037EEE8FDA4FAE90000CF28FAC824 -:10059000F9841AD8FAC8FAD00A9A1AD80E9BFAC85F -:1005A000FBCC029C1AD8FAC8F974FAC9FFCCF01F28 -:1005B000003E2FDDF8EA0000C0C8ECCAFFFF10368D -:1005C000C0B4FAC9F9781496F2070037EEEAFDA430 -:1005D000FAEB0000CCE840A959F8E0890016F2E6F1 -:1005E0000000F2CBFFF8FAE7000050ABFAC6F9784A -:1005F000EC080039FAE60000F2E7FDA42FF81496A3 -:10060000FB480680CB68F2E600002F89FAE700007D -:1006100050A91496CAE8EDB30004C161FAF8068047 -:100620005800C0801037C6A4FACEF978FC0700370E -:10063000C838ECCAFFFF1036E0840082FACCF978A3 -:10064000F8070037C788EDB30006C4D1FAF8068072 -:100650005800C1D01037C064FACCF978F8070037D9 -:10066000C1F8FAC8F9841AD8FAC8FAD01AD8FAC860 -:10067000FBCC1AD8FAC8F974FAC9FFCC0A9A0E9BB7 -:10068000029CF01F00092FDD9818C2A8ECCAFFFFDA -:100690001036C0D4FACBF9781496F6070037EF0875 -:1006A000FDA6C1E88002F2288003EDE440A959F8D4 -:1006B000E0890013F2CBFFFC50AB7209FAC6F9785F -:1006C000EC08003B2FF8F749FDA4FB480680149680 -:1006D000F1D9B010C058921814962FC950A95C785F -:1006E0005018C458FAF806805800C1D01037C064BA -:1006F000FACCF978F8070037C1F8FAC8F9841AD8A3 -:10070000FAC8FAD00E9B1AD8FAC8FBCC0A9A1AD8A3 -:10071000029CFAC8F974FAC9FFCCF01F00C42FDD9F -:10072000780BC248ECCAFFFF1036C094FACBF978B8 -:10073000F60700371496EEFBFDA4C18840A959F8CE -:10074000E0890011F2CBFFFC50ABFAC6F978720BCE -:10075000EC080039F34BFDA42FF81496FB480680F3 -:10076000C058720B14962FC950A9501B300E500E52 -:100770004008401C300B18485F18E7E80008F608EE -:100780001800C0703308FB620685A1B3FB680684BD -:100790003020300AFB6A068740395809C025A7D3A4 -:1007A0004038401758085F194008FAC5F9900E48BC -:1007B00030025F18F3E81008E4081800C5E03018AC -:1007C000F0001800C0603028F0001800C051C3E8E5 -:1007D0000A970690C2C80A97FAE80000F5D8C00345 -:1007E0002D0A0EFAF00B1603F20C1603F7E911DBD3 -:1007F0001899169858085C29CF21FAE90000EDB342 -:100800000000C4613309F20A1800C4200EF9C408BC -:10081000F01F008730A82D0A3009AE8AFAEA0000DE -:10082000F01F008416991498FAE90000EECC00013C -:1008300030A83009FAEA00001897589A5C2BFE9B02 -:10084000FFE91BF800932D08C2080A97FAE8000098 -:10085000F5D8C004409EFC0A070A0EFAF20B1604F3 -:10086000F00A1604F5E911CA1699149858085C297B -:10087000CF01FAE90000C0C85800C091EDB30000F4 -:10088000C061FAC7F9913308AE88C0280A970E15DF -:100890004030C14850425057407410925802E08096 -:1008A00001B6300CFB620648FB6C06873015300041 -:1008B000FAC7F9B8C03840353000069A0699E21AEE -:1008C0000002E2190084508A5079EA000C42FB3899 -:1008D0000687300BF6081800F7B201FF580AF7B286 -:1008E00001FE5809C4514048041850385808E0899E -:1008F000001DC3E8FB4C06784CFE310C890E891CA8 -:10090000FB4B0674587BE08900042F84C0B8FACAF8 -:10091000F990402B029CF01F0049E0810189FAC444 -:10092000F9F8403B210B503BFAF90678FAF80674C7 -:10093000F2CCFFF0F0CBFFFF4BFA403E590EFE9990 -:10094000FFDB1C09890AFB490678891EFB4B0674EC -:10095000587BE08900042F84C0B8FACAF990402B74 -:10096000029CF01F0036E0810163FAC4F9F8FB38FD -:100970000687300CF8081800C1F0FAF80678FAC9B2 -:10098000F9792FF88909FB4806783019FAF80674C6 -:1009900089192FF8FB4806745878E08900042F84E1 -:1009A000C0B8FACAF990402B029CF01F0024E081E5 -:1009B000013FFAC4F9F8408B580BC1F0FAF80678F9 -:1009C000FAC9F97C2FE88909FB4806783029FAF83A -:1009D000067489192FF8FB4806745878E0890004DA -:1009E0002F84C0B8FACAF990402B029CF01F001364 -:1009F000E081011EFAC4F9F8407AE04A0080C5118E -:100A00004049041950395809E0890029C4A848C848 -:100A1000310EFB4C06788908891EFB4B0674587B07 -:100A2000E08900102F84C1788002F228800373408F -:100A30008002D9988003EDF88002F5488003ECE845 -:100A4000FACAF990402B029CF01F0052E08100F09E -:100A5000FAC4F9F8403C210C503CFAF90678FAF84F -:100A60000674F2CCFFF0F0CBFFFF4CBA403E590EBB -:100A7000FE99FFCF1C09890AFB490678891EFB4BAA -:100A80000674587BE08900042F84C0B8FACAF99034 -:100A9000402B029CF01F003FE08100CAFAC4F9F825 -:100AA0000A105800E089001BC3B8FB4C0678310AD5 -:100AB0004B9C891A890CFB4B0674587BE089000417 -:100AC0002F84C0B8FACAF990402B029CF01F003165 -:100AD000E08100AEFAC4F9F82100FAF90678FAF8D4 -:100AE0000674F2CCFFF0F0CBFFFF4ABA5900FE9932 -:100AF000FFDE0009890AFB4906788910FB4B067462 -:100B0000587BE08900042F84C0B8FACAF990402BC2 -:100B1000029CF01F0020E081008BFAC4F9F8FAF87B -:100B2000067889158907F0050005FAF80674FB4573 -:100B300006782FF8FB4806745878E08900042F8463 -:100B4000C0A8FACAF990402B029CF01F0012C6F10F -:100B5000FAC4F9F8E2130004C41040470417580718 -:100B6000E089001CC3B8FB4C067889058913FB4B50 -:100B70000674587BE08900042F84C098009A402BAB -:100B8000029CF01F0004C531FAC4F9F82107C0988F -:100B90008002F5488003ECE84AB53103FAC0F990C9 -:100BA000FAF90678FAF80674F2CCFFF0F0CBFFFF02 -:100BB0004A5A5907FE99FFD90E09890A8917FB4934 -:100BC0000678FB4B0674587BE08A0009FACAF99054 -:100BD000402B029CF01F001DC2A140684049E4095F -:100BE0000C4204085068FAF806785808C080FACA1F -:100BF000F990402B029CF01F0015C1913003FAC4FC -:100C0000F9F8FB430674FE9FF53302934020FAF88F -:100C100006785808C080029CFACAF990009BF01F21 -:100C2000000BC0613008FB480674C0284020806873 -:100C3000EDB80006C0313FF25062406CFE3DF978DD -:100C4000D83200008003EDF88002F548D431FACDA7 -:100C500001E03007503C16961295507A5087505755 -:100C60000E930E905047407E1D8957795809E080B9 -:100C700007A22FFE4D5C507E780C502CF809070817 -:100C8000E2180008C1B06C185808E08900070C9BF6 -:100C9000403CF01F004FCE816C084CCBF0C9FFFFE9 -:100CA000760A1188F4080708EDB80003CDD16C1856 -:100CB0008D0920182FF08D18CE7BE0490025E081AA -:100CC000008906941091109236CA344C358E407BC0 -:100CD0001739507B364BF6091800E08000BBE08BDB -:100CE0000042F8091800E08000B4E08B0021339B3B -:100CF000F6091800E08B01D2330BF6091800E082E8 -:100D00000094325BF6091800C640E08B000B5809CE -:100D1000E080074F324BF6091800E08101BFC8A8F8 -:100D200032ABF6091800E08101B9C6D8FC091800F9 -:100D3000E08000A4E08B000C34CBF6091800C7005B -:100D400034FAF4091800E08101A9C8C835BAF409D9 -:100D50001800E0800098363AF4091800E081019EFE -:100D6000C9E836FBF6091800C7E0E08B0017369B90 -:100D7000F6091800C720E08B0008368BF60918002A -:100D8000E081018CC4F8F4091800C3F036EAF409D4 -:100D90001800E0810183C8D8373AF4091800C1303F -:100DA000E08B0008370AF4091800E0810177C7A832 -:100DB000375AF4091800C5C0378AF4091800E081D1 -:100DC000016DC5B83029C7590000049C800328BCB8 -:100DD0006C185808E08900080C9B403CF01F006428 -:100DE000E08106E0407A6C08F539FFFF118AF20ACB -:100DF0001800E08106E02FF82FF08D086C182018FD -:100E00008D18C32BA5A1C64B407B1789F409180088 -:100E1000C0512FFBA1B1507BC5BBA1A1C59BA1B106 -:100E2000C57BA3A1C55BE4020022A17223021202CA -:100E3000C4FBE0420020E08B0007E4C4000130184E -:100E40003002C46B3168403A9538E08F06ABA1A1FF -:100E50004C8930AE5089C2B84C6C300B508C505B12 -:100E6000C279A1A14C4A3089508A5059C2194C2EDE -:100E700030AC508E505CC1C94BFBA9B1508B310ACC -:100E8000C169301950085019407BFACCFFD4F01FCB -:100E9000003BA7A1507C40194008C0B9A7A1300968 -:100EA000C0894B59E81102205089310E505EC009AB -:100EB000EDB10004FE90FED9EDB10002C441580826 -:100EC000C2500E34C064FACCFE20F8040024C2786C -:100ED000FACAFED40A99F407002A0E98130B14AB31 -:100EE0002FF81034CFC4EEC9FFFFEE0811FFF0C792 -:100EF000FFFF2FE808080807EA080025F2070007A7 -:100F0000FAC8FED4F0040324C1C8E6C8FFFF0E33BC -:100F1000C094FACBFE201093F6040024E8F4FF4CB2 -:100F2000C1086A042FC559F7E089000B1093FACA6B -:100F3000FE20F40700282FF7F144FF4CC02810933F -:100F4000A800C92AEDB10000C1A15808E0800088BE -:100F50000E34C635FACAFED40A99F407002A0E9850 -:100F6000130B14AB2FF81034CFC4C678800328BC01 -:100F70008002EFB480032E6C800329ECE2110002A2 -:100F8000C4805808C2500E34C064FACCFE20F80465 -:100F90000024C278FACAFED40A99F407002A0E98EF -:100FA000130B14AB2FF81034CFC4EEC9FFFFEE08BB -:100FB00011FFF0C7FFFF2FE808080807EA0800251F -:100FC000F2070007FAC8FED4F0040324C1C8E6C83B -:100FD000FFFF0E33C094FACBFE201093F6040024DA -:100FE000E8F4FF4CC1086A042FC559F7E089000BEB -:100FF0001093FACAFE20F40700282FF7F144FF4CA3 -:10100000C0281093E008141F89108908FE9FFE2D48 -:101010005808C2500E34C064FAC9FE20F2040024FD -:10102000C278FACAFED40A99F407002A0E98130B64 -:1010300014AB2FF81034CFC4EEC9FFFFEE0811FF38 -:10104000F0C7FFFF2FE808080807EA080025F207A5 -:101050000007FAC8FED4F0040324C1C8E6C8FFFFA5 -:101060000E33C094FAC2FE201093E4040024E8F486 -:10107000FF4CC1086A042FC559F7E089000B109393 -:10108000FACEFE20FC0700282FF7F144FF4CC028C1 -:1010900010938900FE9FFDE9402CF8090709EDB97E -:1010A0000000C021A1A14C7B30AA508B505A30398E -:1010B0006C1A580AE089000C501950080C9B403CEF -:1010C000F01F004140194008E081056CEDB10006B9 -:1010D000C151C1F86C1A201A8D1A580AE08A00040E -:1010E0008D0CC0B8501950080C9B403CF01F0036C6 -:1010F00040194008E08105562FF06C0A4B3EF4CCB5 -:10110000FFFF7C0B158AF60A070AEDBA0003CE3002 -:101110005829E08001C05839E080031D5819E0804B -:10112000011B029CE21C0010502C5802F9B2000175 -:10113000E3D1C001E080009B580CC0303001C4985E -:101140005808C2500E34C064FACBFE20F6040024C6 -:10115000C278FACAFED40A99F407002A0E98130B33 -:1011600014AB2FF81034CFC4EEC9FFFFEE0811FF07 -:10117000F0C7FFFF2FE808080807EA080025F20774 -:101180000007FAC8FED4F0040324C228E6C8FFFF13 -:101190000E33C094FACAFE201093F4040024E8F43D -:1011A000FF4CC1686A042FC559F7E08900111093FC -:1011B000FAC9FE20F20700282FF7F144FF4CC0883F -:1011C0008002EFB4800328BC0000049C10930891B7 -:1011D00030044D5E7C081034E08004E46C08118912 -:1011E000FAC8FE200808F169FFCC6C1820188D1889 -:1011F0006C082FF8308A8D08300BFACCFE2CF01FCB -:10120000004B2FF4FAC8FE2C0899FACAFE54029B30 -:10121000403CF01F00475BFCE08004C4580CC061F8 -:10122000402C580CC051830CC0385BECC0B0080097 -:10123000402B2012580BF9B40100F7B100FCFBF46D -:1012400000026C185808E089000B0C9B403CF01F12 -:101250000039C0505804C050E08F04A45802CBA1FC -:10126000402A580AFE91FD01C718402E580EC1A011 -:101270006C186C090438C0F4100910128D091001A3 -:101280000C9B403CF01F002BCF405801E08101E651 -:10129000E08F0488040904188D098D180401E08F7B -:1012A00001DD5808C2500E34C064FACCFE20F804A8 -:1012B0000024C278FACAFED40A99F407002A0E98CC -:1012C000130B14AB2FF81034CFC4EEC9FFFFEE0898 -:1012D00011FFF0C7FFFF2FE808080807EA080025FC -:1012E000F2070007FAC8FED4F0040324C258E6C887 -:1012F000FFFF0E33C094FACBFE201093F6040024B7 -:10130000E8F4FF4CC1986A042FC559F7E08900142E -:101310001093FACAFE20F40700282FF7F144FF4C7F -:10132000C0B80000000009AC8002E8BC800328407F -:10133000800328BC1093049A089C0C99301BF01F62 -:1013400000C9E080042FF800000040492FF95049FF -:10135000FE9FFC8B5802F9B200FFEDB10004C261A0 -:1013600030040891C1286C188D0920188D182FF4AD -:101370000832E080008D5808E08900080C9B403C52 -:10138000F01F00B9E08100846C08FACEFE20F0C99D -:10139000FFFF1188FC080008F138FE4CE208180035 -:1013A000CE315804C741E08F04065808C2500E34AD -:1013B000C064FACCFE20F8040024C278FACAFED435 -:1013C0000A99F407002A0E98130B14AB2FF8103467 -:1013D000CFC4EEC9FFFFEE0811FFF0C7FFFF2FE8F3 -:1013E00008080807EA080025F2070007FAC8FED433 -:1013F000F0040324C1C8E6C8FFFF0E33C094FACB43 -:10140000FE201093F6040024E8F4FF4CC1086A049F -:101410002FC559F7E089000B1093FACAFE20F40794 -:1014200000282FF7F144FF4CC02810930891300892 -:10143000C1886C1A201A8D1A133A02CA8D095802F3 -:10144000C1D06C195809E089000D50080C9B403C34 -:10145000F01F00854008C0500831C101E08F03A291 -:101460006C0AFACEFE2014992012158AFC0A000A92 -:10147000F53AFE4CF00A1800CDD1E2040104E080F8 -:10148000039A404C2FFC504C3008A2880800FE9F65 -:10149000FBEC029BE21B0010502B5802F9B200FF3C -:1014A000E3D1C001E08000BC580BC050FACAFE2452 -:1014B000506AC4385808C2500E34C064FAC9FE20BD -:1014C000F2040024C278FACAFED40A99F407002A6A -:1014D0000E98130B14AB2FF81034CFC4EEC9FFFFD6 -:1014E000EE0811FFF0C7FFFF2FE808080807EA0819 -:1014F0000025F2070007FAC8FED4F0040324C1C88F -:10150000E6C8FFFF0E33C094FACEFE201093FC0411 -:101510000024E8F4FF4CC1086A042FC559F7E0899C -:10152000000B1093FACCFE20F80700282FF7F144A7 -:10153000FF4CC0281093506430014CC4C598680813 -:101540001031E080032FFAC8FE200208F169FFCCB9 -:101550006C1820188D186C082FF8308A8D08300B05 -:10156000FACCFE2CF01F00422FF1FAC8FE2C029993 -:10157000FACAFE54406B403CF01F003E5BFCE0802A -:101580000311580CC041406B970CC0385BECC23063 -:10159000406A740CF01F0038C100FAC4FE20020437 -:1015A0002354C088098B201120140C9A403CF01F52 -:1015B00000335801CF81C2C80200402920125809C7 -:1015C000F8011710FBF80006F7B800FCFBF80A0654 -:1015D000FBF100026C185808E089000B0C9B403CA2 -:1015E000F01F0021C0505801E08102DCC1186C08D6 -:1015F00058025F1A11894A2E300C7C08F00907083E -:10160000EC180008F5E80238F8081800C991402BDA -:10161000580BFE91FB2A406A950BC98A402E580E42 -:10162000C300C1086C188D0A20188D182FF10232E2 -:10163000C1405808E08900070C9B403CF01F000A9D -:10164000C0C16C0848ECF0CAFFFF78091188F208A5 -:101650000708EDB80003CE710200FE9FFB060000F4 -:10166000800320B8800328BC000009AC8002E8BCDD -:10167000800328408003274880032FF40000049C47 -:101680005808C2500E34C064FACBFE20F604002481 -:10169000C278FACAFED40A99F407002A0E98130BEE -:1016A00014AB2FF81034CFC4EEC9FFFFEE0811FFC2 -:1016B000F0C7FFFF2FE808080807EA080025F2072F -:1016C0000007FAC8FED4F0040324C1C8E6C8FFFF2F -:1016D0000E33C094FACAFE201093F4040024E8F4F8 -:1016E000FF4CC1086A042FC559F7E089000B10931D -:1016F000FAC9FE20F20700282FF7F144FF4CC0285A -:1017000010930891C1286C1920198D19113902C93B -:101710008D085802C1506C185808E08900070C9BCE -:10172000403CF01F0059C0C16C094D8E12987C0AD4 -:1017300013892012F4090709EDB90003CE51404C7A -:101740002FFC504C08103008E2000000A288FE9FD9 -:10175000FA8CE4C90001E0490026E08B0005300B5B -:10176000506BC058E4CA00273272506A3009FACE72 -:10177000FE54509950A7E8110D80502E35894057DE -:101780006C0A339C158AF80A1800E08B0015338B1D -:10179000F60A1800C4E2330BF60A1800C270E08B98 -:1017A000004532BBF60A1800C51032DBF60A1800F5 -:1017B000C7C1C4C8F20A1800C4E0E08B000AF4CB29 -:1017C0000041305EFC0B1800E08B0070C398361CA3 -:1017D000F80A1800C6A3366BF60A1800E088003134 -:1017E000378EFC0A1800C611C368029BEDB1000BCE -:1017F000C3C15807E06B0200E3DBE031F9B7000832 -:10180000EDB1000AC041E011FA7FC2F8409B406C84 -:101810002FFB580CF7BC0101FBFC1A06F7B201FFC5 -:10182000E011FC7F509BC248499EFC070417C0B8DA -:10183000497CF80704175887E0890006C36858A751 -:10184000E08A0034E011F47FC108EDB10007C2D195 -:10185000A7D1C0B8029BE21B0600E04B0200C251B8 -:10186000A9D13107E8110500402B16CA502B6C1A7C -:10187000201A8D1A580AE08A000D6C0A2FFA8D0A78 -:10188000C1180000800328BC0000049C8003EF08FE -:10189000501950080C9B403CF01F00BD40194008F7 -:1018A000C0412012FE91FF6E505740A7EDB10008D5 -:1018B000C161FAC9FE54402A123AE088000B40295F -:1018C0000C9A137B403C50085029F01F00B240088E -:1018D000FAC9FE5440221232E080016D029AE21AE7 -:1018E0000010E081014B402EBC8A50084059FACBD1 -:1018F000FE54403C40825D1202994008E2190020EB -:10190000C2A05808C1400E34C064FACEFE20FC04C8 -:101910000024C1D9FACAFED40A99F407002A0E9805 -:10192000130B14AB2FF81034CFC4CF68E6C8FFFFF9 -:101930000E33C064FACBFE20F6040024C0796A049A -:101940002FC559F7E08901151093FACAFE20F40754 -:101950000028C0A9EDB10002C4415808C2500E349D -:10196000C064FAC9FE20F2040024C278FACAFED488 -:101970000A99F407002A0E98130B14AB2FF81034B1 -:10198000CFC4EEC9FFFFEE0811FFF0C7FFFF2FE83D -:1019900008080807EA080025F2070007FAC8FED47D -:1019A000F0040324C1C8E6C8FFFF0E33C094FAC296 -:1019B000FE201093E4040024E8F4FF4CC1086A04FC -:1019C0002FC559F7E089000B1093FACEFE20FC07D3 -:1019D00000282FF7F144FF4CC0281093A80CCCA886 -:1019E000F5D1C001C2A05808C1400E34C064FACB82 -:1019F000FE20F6040024CAB8FACAFED40A99F407F5 -:101A0000002A0E98130B14AB2FF81034CFC4C8481B -:101A1000E6C8FFFF0E33C064FACAFE20F4040024B7 -:101A2000C9586A042FC559F7E08900A31093FAC971 -:101A3000FE20F2070028C988E2110002C5904D6916 -:101A400040821232C091FACBFE544059403C5008BB -:101A5000F01F0052C088FACBFE544059403C500859 -:101A6000F01F004F40085808C2500E34C064FACE30 -:101A7000FE20FC040024C278FACCFED40A99F807B0 -:101A8000002C0E98130E18AE2FF81034CFC4EEC9E8 -:101A9000FFFFEE0811FFF0C7FFFF2FE80808080757 -:101AA000EA080025F2070007FAC8FED4F004032470 -:101AB000C1C8E6C8FFFF0E33C094FACCFE201093D5 -:101AC000F8040024E8F4FF4CC1086A042FC559F754 -:101AD000E089000B1093FAC9FE20F20700282FF7C7 -:101AE000F144FF4CC0281093891A890BC438580858 -:101AF000C2500E34C064FAC8FE20F0040024C2783C -:101B0000FACAFED40A99F407002A0E98130B14ABF4 -:101B10002FF81034CFC4EEC9FFFFEE0811FFF0C755 -:101B2000FFFF2FE808080807EA080025F20700076A -:101B3000FAC8FED4F0040324C1C8E6C8FFFF0E3380 -:101B4000C094FAC2FE20E40400241093E8F4FF4C91 -:101B5000C1086A042FC559F7E089000B1093FACE2B -:101B6000FE20FC070028F144FF4C2FF7C0281093FB -:101B7000890C404C2FFC504CFAC8FE54409B10106E -:101B8000402A1600F4000000FE9FF86F800328BC76 -:101B900080032FF480032E6C80032CE480032B340D -:101BA00040495809C0508C68EDB80006C0313FF874 -:101BB0005048404C288DD832D421217D1497189656 -:101BC000129A5807C064E068008B99383FFCC2281D -:101BD0005807EE0C1700F9B901FFEFD9E10C109985 -:101BE000E0680208BA683FF8504B505C500B502C2C -:101BF000BA781A9B0C9CF01F00095BFCC044E0689B -:101C0000008B8D385807F9B90100FBF81000F1F985 -:101C10001E002E9DD82200008002F568D401129883 -:101C20001499169A189B483C780CF01F0003D802B0 -:101C30000000059880031BB8D4214B3818961697DE -:101C4000700C580CC06078685808C031F01F002F25 -:101C50004AF81037C0514AC870087007C0E84AD81F -:101C60001037C0514A8870087017C0784AA81037DA -:101C7000C0414A58700870278E68EDB80003C1E073 -:101C8000EDB80004C3E1EDB80002C1516EDB580BA2 -:101C9000C0A0EEC8FFBC103BC0400C9CF01F001F52 -:101CA00030088FD88E68E018FFDBAE6830088F18D8 -:101CB0006E488F088E68A3B8AE686E485808C0B1E9 -:101CC0008E68E2180280E0480200C0500C9C0E9B17 -:101CD000F01F00138E69F1D9C001C07030088F2841 -:101CE0006E585C388F68C068EDB90001EFF81005D8 -:101CF0008F286E485808C0618E68EDB80007C02173 -:101D0000DC2AD82A0000059880031F388003EF2CB6 -:101D10008003EF4C8003EF6C8003217C8003276CF1 -:101D20004828700C2F4C5EFC00000598D4211697B3 -:101D3000189676485808C7D0580CC060786858087C -:101D4000C031F01F003D4BD81037C0316C07C0A820 -:101D50004BB81037C0316C17C0584BA81037EDF78F -:101D600000028E6A1498EDBA0003C420ABBAAE6AC2 -:101D70006E185808E08900066F085808E08A005A73 -:101D80006EB85808C560E21A1000C0306F55C0F830 -:101D900030196E8B0C9C5D1818955BFCC0816C38FB -:101DA00059D8C4708E68A7A8AE68D8228E68EDB8DE -:101DB0000002C0916E1810156ED85808EFF8101078 -:101DC000EBD8E1156EB80C9C30090A9A6E8B5D1841 -:101DD0008E680A3CC261ABD8300C6E49AE688F1C6D -:101DE0008F09EDB8000CC251EF450054D8226E4562 -:101DF0005805C1F06E04F5DAC0028F05F9B801008C -:101E0000EFF800050A148F28C11808990A9A6EA8DD -:101E10006E8B0C9C5D181814580CE08900078E68B6 -:101E2000A7A83FFCAE68D82218055804FE99FFEF1A -:101E3000D82A000080031F388003EF2C8003EF4C6A -:101E40008003EF6CD401189B580CC0714868487B24 -:101E5000700CF01F0007D8024868700CF01F0003D8 -:101E6000D80200008003ECA880031D2C800325E825 -:101E7000000005985EFC5EFCD401483BF01F0003A7 -:101E8000D80200008003629080032640D42116957A -:101E9000F606105CECCBFFF4F01F00071897C0901B -:101EA0009915300B2F4C0C9A8F2C8F0BF01F0003C1 -:101EB0000E9CD8228002E2BC8002E8BCD42149C832 -:101EC000189670076E685808C0410E9CF01F0019E4 -:101ED000EEC7FF2830056E2C6E18C0689869EA09B5 -:101EE0001900C1202A4C2018CFA76E085808C071CD -:101EF000304B0C9CF01F00108F0CC0306E07CECB07 -:101F000030C88D38D8223008F948004C99089928F3 -:101F1000991899489958996899D899E8F9480048C2 -:101F20003FF8B8783018B868D82200008003ECA8D1 -:101F300080031F3880031E8CD421189678675807B9 -:101F4000C4714A48301599A8F94700D8F94700DC10 -:101F5000F94700E09965F01F00208D0C0C9CF01FE4 -:101F6000001E8D1C0C9CF01F001C6C093048930750 -:101F7000B268931793276C18B27793479357936778 -:101F80009389910791179127494E495B939E93AB93 -:101F9000494A495493BA93C43099B069B07591C411 -:101FA0009147915791679188919E91AB91BA8D2CF1 -:101FB00031289907B868991799273028B87899C4B3 -:101FC0009967999E99AB99BA99479957998CD82254 -:101FD00080031E7880031EBC80032B1080032AD848 -:101FE00080032AAC80032A9CD4014858169AFAC967 -:101FF000FFFC189B700CF01F0003D802000005982E -:1020000080033424D43114901291169310971895AC -:10201000F20A02425802C0310491C418580CC06040 -:1020200078685808C031F01F001F49F81037C031D8 -:102030006A07C0A849D81037C0316A17C05849C8C4 -:102040001037EBF700026E185808C03430088F18AC -:102050000496C148F01F00176E08080308160E9B6F -:10206000F00400040A9C8F04F01F0013C070E40603 -:102070000109F2000D081091C1286E146E08069C2B -:10208000089A109B0836FE9BFFE70C9AF01F000988 -:102090006E080C088F086E180C188F18029CD83226 -:1020A00080031F388003EF2C8003EF4C8003EF6C1C -:1020B0008002E736800328BCD40112981499169A3E -:1020C000189B483C780CF01F0003D80200000598CC -:1020D00080032004D42116951897F01F00234A345A -:1020E00068287016E016FFFCECC8FF91F0050105AA -:1020F000E015FF80EAC50080E045007FE08A00230C -:10210000300B0E9CF01F001A68280C08103CC1A16F -:10211000EA0B11000E9CF01F00165BFCC171300B26 -:102120000E9CF01F00136828F808010958F9E08A8E -:10213000000AA1A9911948F8700948F8F80901099D -:1021400091090E9CF01F000DD82A68280A16A1A636 -:102150009116489870090A190E9C9109F01F000702 -:10216000DA2A00008002E8CA0000059C8002EBC861 -:10217000000009A800007AD08002E8CCD42116968D -:102180001897580BE08000CAF01F004E20864CEADA -:102190006C18742EF9D8C001A1C8EC080009721B94 -:1021A000E01BFFFC1C39C1D1F6080008580CC081A7 -:1021B0006C09121612086C3B6C299729933B1099F5 -:1021C0009526A1A98D194C1972091238C0634C08C3 -:1021D0000E9C700BF01F003F0E9CF01F003FD8229A -:1021E000931B580CC030300CC1086C0EF4C5FFF8BE -:1021F0001C161C086C2E0A3EF9BC0001EDF51003FC -:10220000EBFE1A02FDF51A03F20B000E7C1EEDBE6A -:102210000000C1301608580CC0C14ABE722B2F8E68 -:102220001C3BC071973697268D2B8D3B301CC058B8 -:10223000722B7239932B97391099EC080908A1A9D0 -:102240008D19580CC671E04801FFE08B0013A3986C -:10225000F4080039722B8D398D2B97369326A348BD -:102260007419301BF6080948F3E810089518C528BA -:10227000F00916095849E08B0006F00B16062C8B66 -:10228000C2D85949E08B0005F2CBFFA5C278E049DE -:102290000054E08B0006F00B160C292BC1F8E04926 -:1022A0000154E08B0006F00B160F289BC178F00B51 -:1022B0001612E0490554E088001137EBC0F8000021 -:1022C0008002E8CA0000059C000009A400007ACC46 -:1022D000800320D48002E8CC284BF40B003C782902 -:1022E0001839C0E17418A34B301CF80B094BF1EB03 -:1022F000100B1298951BC0A872291839C060721A69 -:10230000E01AFFFC1438CF9372388D388D2993363C -:1023100091260E9CF01F0002D82200008002E8CC1B -:10232000D431203D14941895169774285808E080ED -:10233000014A9668EDB80003C04176485808C0C10C -:102340000E9B0A9CF01F00A1C0708E68A7A8AE6803 -:1023500030988B38C3598E6368000696E2160002E7 -:10236000C2103003E06204000696C04860036016A5 -:102370002F805806CFC0E0460400EC091780E4091E -:1023800017B0069A6EA86E8B0A9C5D181816580C2A -:10239000E08A0114682818188928E08001141803BD -:1023A000CE9BE7D3C001C07050060C930C91501522 -:1023B0000892CA0806960891C048600360162F80EC -:1023C0005806CFC08E686E241099E2190200C570BD -:1023D0000836C4531099E2190480C4106E4B6E097C -:1023E000161950096E59109CF209001A3028F40889 -:1023F0000C08FAE9000410944009E21C04002FF9CB -:102400000C091238F2041730580CC110089B0A9CB2 -:10241000F01F006F1892C150400A6E4BF01F006D04 -:102420008E68E018FB7FA7B8AE68C0E8089A0A9CDF -:10243000F01F00691892C0816E4B0A9CF01F006764 -:1024400030C88B38CBA8400A4009E80A010AE409E1 -:1024500000088F548F2A8F088F420C940836EC04A2 -:102460001730069B089A6E0CF01F005D6E08080876 -:102470008F086E2808180C948F28C30808365FBA96 -:102480006E0C6E48103C5FB8F5E80008F2081800C2 -:10249000C0E0069B089AF01F00526E0808080E9BC9 -:1024A0008F080A9CF01F004FC190C8786E591236F1 -:1024B000C0A36EA8069A6E8B0A9C5D181894E089DA -:1024C000000EC7B80C9A069BF01F00456E080C085A -:1024D0000C948F086E280C188F28622808188328FF -:1024E000C71008160803C6DB6003601130082F8090 -:1024F00050085801CFA0400A580AC181029A30AB57 -:10250000069CF01F0039F9B80101F9D8E106EDD3B6 -:10251000E116F9B90101FBF91A00F9B80001E3D895 -:10252000E006F9B80001FBF80A000236EC04178057 -:10253000E20417B06E596E25F20500050A345F9A61 -:102540006E0C6E48103C5FB8F5E80008300AF408DD -:102550001800C0E0069B0A9AF01F00216E080A08C6 -:102560000E9B8F08401CF01F001FC180C2681234F0 -:10257000C0A56EA8069A6E8B401C5D181895E08960 -:10258000000EC1B8089A069BF01F00156E080808D7 -:1025900008958F086E2808188F280A16C0710E9BA0 -:1025A000401CF01F0010C091500664280A188528AE -:1025B000C0900A110A03C9EB8E68A7A8AE683FFC59 -:1025C000C028300C2FDDD83280031C388002E2BCDA -:1025D0008002E7368002E8E88003217C8002E87E02 -:1025E00080031D2C800328A4D43130051893169045 -:1025F0000A91F01F00123FF2E6C7FF28C1786E264D -:102600006E142F46C0D88C08E2081900C0808C18C0 -:10261000E4081900C040069C5D1018452A462014A5 -:10262000ECCB000C5804CF046E075807CE91F01F76 -:1026300000040A9CD832000080031E7480031E76BA -:10264000D43130051691F8C7FF280A92F01F001008 -:102650003FF3C1686E266E142F46C0C88C08E4088C -:102660001900C0708C18E6081900C0305D111845BB -:102670002A462014ECCC000C5804CF146E075807DF -:10268000CEA1F01F00040A9CD832000080031E7403 -:1026900080031E76D401201D4848189B1A9A700C9E -:1026A000F01F00032FFDD80200000598800326B01C -:1026B000D431169414921895F01F00204A08700720 -:1026C0005807C050300633DA0C98C0780A9CF01FC7 -:1026D000001D0E9CD8322FF6E8060709F0091800F5 -:1026E0005F1BF40918005F191669F0091800CF4143 -:1026F000C1A8029C0C9A089BF01F0013C1216E0117 -:102700000C010388E6081800C0C148D870080A9C6C -:102710001017A3478507F01F000BE2CCFFFFD8324C -:102720002FC7C02833D36E015801CE410A9CF01F39 -:102730000005029CD8320000800361BC000009B093 -:10274000800361BE8002EDE6E04C00FFE0880003FC -:102750005EFD48487008F00C070CE21C00085EFCA7 -:102760000000049C481C5EFC8003EF8CD42120FDFB -:10277000966816971896E2180002C3C1967BF00B74 -:102780001900C0551A9AF01F002AC0F48E650A98E5 -:10279000ABB8E2150080AE683004E0680400F9B51B -:1027A0000140F0051700C1B84018E218F000E048F9 -:1027B00020005F04E0488000C0D16EB949D81039CC -:1027C000C0918E68E0650400ABA8EF450050AE688C -:1027D000C0688E68E0650400ABB8AE680A9B0C9CCC -:1027E000F01F00158E68C0D1EDB80009C1E0A1B896 -:1027F000AE68EEC8FFB98F488F0830188F58C1589F -:10280000A7B88F4CAE688F5548C88F0C8DA8580458 -:10281000C0C08E7CF01F000AEFF81206F9B9010162 -:10282000F1D9E138EFF81C062F1DD822800362A8E9 -:1028300080032AAC8002E2BC80031E788002F1682B -:10284000D42118971096580AC041149B3019486A31 -:10285000F01F00065BFCC06130088D08E068008A4C -:102860008F38D82280037E208003286C201D5809D1 -:102870005F09580BFA0B1700580A5F18F3E80008B5 -:102880003009F2081800C0303FECC0B8580AC03117 -:10289000149CC078158997091589F00918005F1CE8 -:1028A0002FFD5EFCF7DBC008C068201A19881638B7 -:1028B0005E0C2FFC580ACFA15EFAD703D4211697DD -:1028C0001896580CC06078685808C031F01F00385E -:1028D0004B881037C0316C07C0A84B781037C03117 -:1028E0006C17C0584B581037EDF7000230088F189E -:1028F0008E68EDB80005C590EDB80002C1A0EDB836 -:102900000004C060A7A8AE6830988D38C4D8EDB870 -:102910000003C0B10E9B0C9CF01F0029C4618E689F -:102920008F6CA3D88F2CAE688E68A3A8AE68C14800 -:102930006EDB580BC110EEC8FFBC103BC0400C9CB6 -:10294000F01F0020300C6F088FDC8F185808C04033 -:102950006EF88F08D8226E485808C0510E9B0C9C08 -:10296000F01F00198E68F1D8C002C0604978498B09 -:10297000700CF01F00186E4A6E980C9C8F0A6E59EE -:102980006E8B5D188E688F1CADD8AE68580CE08ACF -:102990000003D82A580CC041A5B8AE68C058A7A8F3 -:1029A000AE6830088F18DC2ADC2A000080031F384C -:1029B0008003EF2C8003EF4C8003EF6C80031D2C11 -:1029C0008003217C8003276C8003ECA8800329D43A -:1029D00080032640D4019868E21800095898C02066 -:1029E000D80AF01F0002D80280031E44D431189E7A -:1029F0001738E048005EC030300AC0381738301A47 -:102A00003009FC090B0A2FF9E0490100CFB1580841 -:102A1000C041F6CC0001D832149632D4EC16000135 -:102A2000300735D5C0381498129BFC080B06F6C940 -:102A3000FFFF178A129CE80A1800C090EA0A1800E3 -:102A4000C1E0EE0A1800CF01169CD832138C103C5E -:102A50005F53E04C005D5F0AE7EA100AEE0A1800D7 -:102A6000C03032D8CE2BF0CAFFFFFC0A000A14C6D1 -:102A70002FF81838CFD52FEB2FE9CDCBD8321498BB -:102A8000F5DBC01FF00C1100104CFC187FF0F5ECCA -:102A900013FCF00C010CBF9C5EFCD703D401967BA9 -:102AA000F01F0002D8020000800353E0D4211697E3 -:102AB000967BF01F00098E681099ADC95BFCEFF999 -:102AC0000C06EFFC1A15E0691000F1D9E138EFF8B7 -:102AD0001C06D822800362D4D421966816971495D8 -:102AE0001294E21801001896C0603029300A967BD3 -:102AF000F01F00068E68ADC808990A9A8E7B0C9C60 -:102B0000AE68F01F0003D822800362D4800353B460 -:102B1000D4211697967BF01F0007C0656F581808E0 -:102B2000EF480054D8228E68ADC8AE68D8220000A5 -:102B30008003694CD431208D4DB8500B7008507C07 -:102B4000502A1295501816970F36401AF4060704AB -:102B5000E2140008CFA1E046002DC0410F3630142A -:102B6000C058E046002BC0210F3658055F085905B4 -:102B70005F0A3009F1EA100AF20A1800C1D0E046F3 -:102B80000030C1210F8A358B378CF60A18005F0B95 -:102B9000F80A18005F0A144BF20B1800C0500F9689 -:102BA00031052FE7C0985808C070E0460030F9B5ED -:102BB0000008F9B5010A5804C0713FF0E061FFFF59 -:102BC000EA117FFFC0483000FC118000EA03141FA7 -:102BD0000A980699009A029BF01F00340699505AF1 -:102BE0000A98009A029BF01F0032069C14981699CE -:102BF000300A30003001149E109212934019F206F0 -:102C0000070BF3DBC001F9B90137F9B90057506977 -:102C1000ECC80030EDBB0002C0804069F7DBC002A9 -:102C2000EC090108580BC2D00A38C2B40430E601DE -:102C300013005FB9F3EA13FAFC0A1800C1F104307B -:102C4000E60113005F09405A14385F9AF5E900095C -:102C5000FC091800C131E005064AEA010249504862 -:102C6000F8000349BF58F20B000B5038FAE0000C93 -:102C70001400E20B0041301AC0283FFA0F36CBFB9C -:102C80005BFAC1715804C0713FF0E061FFFFEA11C7 -:102C90007FFFC0483000FC11800032284079933813 -:102CA000C10800000000049C800373408002D99892 -:102CB0005804C07030083009F0000100F2010141F1 -:102CC00040285808C0B0580AF9B801FFEFD8E10A07 -:102CD000FBFA1A00402940089308009A029B2F8DA6 -:102CE000D8320000D431209D4DE816927008508CE7 -:102CF000505A1295504816970F36404EFC0607035F -:102D0000E2130008CFA1E046002DC0410F3630137A -:102D1000C058E046002BC0210F3658055F08590502 -:102D20005F0A3009F1EA100AF20A1800C1D0E04641 -:102D30000030C1210F8A358B378CF60A18005F0BE3 -:102D4000F80A18005F0A144BF20B1800C0500F96D7 -:102D500031052FE7C0985808C070E0460030F9B53B -:102D60000008F9B5010AEA04141F0A9808993FFA05 -:102D70003FFBF01F003D0899502B503A0A983FFA4C -:102D80003FFBF01F003A300B300830094041E206AB -:102D9000070EE1DEC001ECCC00305800F9B101377C -:102DA000F9B100571C90E2100004C061EC01010C65 -:102DB000FDDEC002C3700A3CC354FAE000080038CC -:102DC000E20913005FBE3000FDEB13FBE00B1800BF -:102DD000C261FAE00008143C5F9E0038E20913006B -:102DE0005F0B3000FDEB000BE00B1800C181F0051C -:102DF0000640EA09024BFAE10000E808034BF6013D -:102E00000001507C5001BF5CFAE00000506C301BA8 -:102E1000FAE800180008F2010049C0283FFB0F360D -:102E2000CB6B5BFBC071322840803FF981383FF8A3 -:102E3000C0985803C07030043005E8080108EA095A -:102E40000149405E580EC080580BF9BA01FFEFDA15 -:102E5000E102405A9502109A129B2F7DD832000051 -:102E60000000049C8002D99880037340D431203D37 -:102E70004C48502C70011698113EE20E0705E215E1 -:102E80000008CFB1E04E002DC041113E3015C058B2 -:102E9000E04E002BC021113E58095F0C59095F0616 -:102EA0003007F9E61006EE061800C1E0E04E0030EB -:102EB000C131118635843783E80618005F04E606C1 -:102EC00018005F06E9E61006EE061800C050119ED5 -:102ED00031092FE8C098580CC070E04E0030F9B9A5 -:102EE0000008F9B9010A3FF3E6090D023007500363 -:102EF0000E9C0E93E20E0704E1D4C001F9B0013735 -:102F0000F9B000575010FCC600300890E2100004E1 -:102F1000C0814010E9D4C002FC0001065804C1C0C1 -:102F20001236C1A4043C5FBEFDE713FEE60E180096 -:102F3000C101043C5F0E40070E365F97EFEE000EB6 -:102F4000E60E1800C061B33C3017EC0C000CC02832 -:102F50003FF7113ECD0B5BF7C061322940200E9C3C -:102F60008139C0485805FBBC0100580AC070580799 -:102F7000F9B901FFF1D9E10B950B2FDDD832000033 -:102F80000000049CD421169776DBEEC8FFBC103BF2 -:102F9000C171E06B0400F01F0015C250E06804002E -:102FA0008FDC8FE8EF380046F8CCFC03B8A8EF3888 -:102FB0000045B898EF380044B8888F0CC1386EE5EA -:102FC000EA041501089AF01F000A1896C0C00A9A70 -:102FD000189BF80500050A9CF01F00068FE48F057A -:102FE0008FD6D82ADC2A00008002E2BC8002E8E802 -:102FF0008002E736D4211697149618955BFBC650CD -:10300000580CC06078685808C031F01F00314B1868 -:103010001036C0316A06C0A84AF81036C0316A16A8 -:10302000C0584AE81036EBF600028C68A5D8AC68A8 -:10303000EDB80002C140EDB80004C461EDB8000372 -:10304000C0B10C9B0A9CF01F0026C3E18C688D6CFC -:10305000A3D88D2CAC688C68A3A8AC680E946CD8EF -:103060005C545808C1006C196CE81039C0650A9CA2 -:103070000C9BF01F001CC2816C0820188D08B084C6 -:103080000897C0C86C495809C0C06C081238E0885D -:10309000000911770837C0518D086C182FF8C12826 -:1030A0006C18ED4800406C088DF8ECC8FFBC8DD85A -:1030B00030388DE8ECC8FFBAED6400468D080897FB -:1030C00030188D18C0283FF70E9CD82280031F3877 -:1030D0008003EF2C8003EF4C8003EF6C80031D2CEA -:1030E00080032F84D431208DFAC4FFBC504B682E4E -:1030F000505812967C0B7005506E580BF40B17004D -:103100006803681140493008C2C92FFB325C178A36 -:10311000F80A18005F1EF00A18005F1CFDEC000C96 -:10312000F00C1800CF31580AE0800129300C3FFA2A -:103130001890503A18941892F80C003C1697507C4E -:103140004CDC0F3AF80A070E407C1C0C4CBEFC0C01 -:10315000070E201E500E4CAEFC0C070C507C400C91 -:10316000587CE08B00F84C7EFC0C032F368BF60A63 -:103170001800E08000F0371BF60A1800C07034CB4E -:10318000F60A1800C051A3B4CE58A5B4CE380F8BA0 -:1031900036CAF40B1800C051A5B4EECBFFFFCDB872 -:1031A000A5A4CD88EBD5C005367CF80A1800E08BC5 -:1031B0000027365BF60A1800C48234FBF60A1800B2 -:1031C000C480E08B000C345BF60A1800C3E0347B4B -:1031D000F60A1800C3A0344BC088358BF60A1800D5 -:1031E000C2C0E08B0007355BF60A1800C351C31854 -:1031F000363BF60A1800C2F0364BC0E8370BF60A29 -:103200001800C250E08B000D36EBF60A1800C1F032 -:10321000E08B0014369BF60A1800C1E1C0E8375B6A -:10322000F60A1800C0A0378BF60A1800C060373BBA -:10323000F60A1800C111C0B8EDB40004C0A0EDB486 -:103240000005C0913020C0883040C0683030C04890 -:103250003010C0283000403B5BFBC040E20B09202F -:10326000C7985860E08B00776C0AEACCFFFF486E85 -:10327000FC00032F8003F2708003F1D48003F16817 -:103280008003EFC88003EFE8F4CBFFF88D0BF4EA7E -:103290000000E605083AC0F8F4CBFFFC8D0B740A79 -:1032A000E605093AC088F4CBFFF88D0BF4EA00007C -:1032B000E605083A0E9B1895C4E8620A5BFAC0B1AD -:1032C00050195028E06A0080300B029CF01F004D1E -:1032D00040284019E4CC00010E9B503CF20C0C49F4 -:1032E000C3A8620A5BFAC0B150195028E06A008096 -:1032F000300B029CF01F0043402840192012300A76 -:103300000E9BE202092AF2020C49C25816976C0A77 -:10331000F4CBFFFC8D0B740A0E9BE605093A2FF5E2 -:10332000C1A8F4C20030C068E40200222FF7F40202 -:1033300000120F8A580AC0E0230A589AFE98FFF636 -:10334000C0982FF70F8A580AC050230A589AFE983F -:10335000FFFA0E9B407C30BAF40C1800FE91FEEE92 -:103360004042178C0A325F4AF00C18005F1CF9EAE1 -:10337000000AF00A1800FE91FECB3008404E178A72 -:10338000E2050021F00A1800FC091710E6050038D4 -:10339000069EC2A8620A583AC1E0E0890007581A9E -:1033A000C1A0582AC181C058585AC0C0C0B5C13840 -:1033B0006C0AF4CCFFF88D0CF4E20000F0E300009E -:1033C000C1086C0AF4CCFFF88D0CF4E20000F0E3C5 -:1033D0000000C0786C0AF4CCFFFC8D0C740A910AD2 -:1033E0002FF52F882FC11235FE9AFFD61C9340521D -:1033F000406E85059D0B404BE60B003C2F8DD8326F -:103400008002E8BCD421149774285808C04195184C -:10341000109CD822F01F000330088F188F28D82264 -:1034200080032320D431FACD06BC5109169114979C -:103430001895F01F0056780C50CC5805C0706A687B -:103440005808C0410A9CF01F00524D281031C0316D -:103450006A01C0A84D081031C0316A11C0584CF83B -:103460001031EBF100028268EDB80003C041624800 -:103470005808C071029B0A9CF01F0049E0810F941C -:1034800082681099E219001A58A9C3D18279300ACA -:10349000F4091900C385A1D8FB5805D06288FB4800 -:1034A00005E462A8FB4805ECFAC8FFBCFB4805D45C -:1034B000FB4805C4E0680400FB4805D8FB4805CC80 -:1034C0003008FB5905D20E9A4109FAC7FA3CFB486D -:1034D00005DC0A9C0E9BF01F003350BCC0950E9B70 -:1034E0000A9CF01F003140BEF9BE01FF50BEFB0830 -:1034F00005D0EDB80006E0810F598268A7A8A26840 -:10350000E08F0F543008FB4806B4FB480690FB4898 -:10351000068CFB4806B03008300950A75078FAC432 -:10352000F9E03FF85059FB440688FB480544129CDB -:10353000506950D950E950B9129740A2325A300818 -:10354000C0282FF20589F00918005F1BF409180044 -:103550005F19F3EB000BF00B1800CF4140ABE40B0D -:103560000106C300FAF806900C08890BFB48069088 -:103570008916FAF8068C2FF8FB48068C5878E089F3 -:1035800000152F84C1C800008003276480031F3802 -:103590008003EF2C8003EF4C8003EF6C80031C381A -:1035A0008003342480031D2CFACAF978029B0A9CFC -:1035B000F01F0071E0810EF4FAC4F9E040BA0C0A81 -:1035C00050BA05893008F0091800E0800ED930099A -:1035D000FB6806BB0E96E4C8FFFF3FFE50945041C7 -:1035E0000E940491508950A8502E50391293129085 -:1035F00010970A92C0783FFC0A97502CC038300BC5 -:10360000503B0F38C0281290F0C90020E049005804 -:10361000E08B0A4A4D9AF409032F50A750800C976B -:103620000495089602924D6940941090404150D9FB -:10363000E08F08AA3008FB3906BBF0091800CE213C -:103640003208C6E8A1A3CDEB0F89F2C80030589824 -:10365000E08B001DEEC8FFFF300B2309F60B002B9B -:10366000F20B001B1139F2CA0030589AFE98FFF78E -:10367000E0490024CC51E04B0020E0890E90201B53 -:10368000FAF906B4123BC095C108FAF906B4ECCABF -:10369000FFFF1236C1F5C268FACEF9441097FC0B51 -:1036A000003BF6F0FD88C3581097FAC8F9501AD8B5 -:1036B000FAC8FAB81AD8FAC8FBB4029A1AD8049C05 -:1036C000FAC8F940FAC9FFB4F01F002E2FDD7800C8 -:1036D000C208FACCF9441496F8040038F0F0FD88DA -:1036E000C188410859F9E0890011F0CBFFFC510B6A -:1036F0007000FACBF944F6090038F140FD882FF943 -:103700001496FB4906B4C058700014962FC851088F -:103710005800FE94FF785C30A3A3C74B32B8FB6817 -:1037200006BBC70B0F38E048002AC0303009C80874 -:103730000F88F0C900305899E08B0026EEC5FFFFD6 -:10374000300B2308F60B002BF00B001B0B38F0C9D5 -:1037500000305899FE98FFF7E0480024FE91FF5191 -:10376000E04B0020E0890E1B201BFAF806B4103B4A -:10377000C115C188800334048003F0048003EDD0B8 -:10378000800330E4FAFA06B4ECC9FFFF1436C1F541 -:10379000C288FACAF944F40B003BF6FBFD88502BB3 -:1037A000C3C8FAC8F9501AD8FAC8FAB81AD8FAC869 -:1037B000FBB4029A1AD8049CFAC8F940FAC9FFB4BB -:1037C000F01F017B2FDD780C502CC27812960E95DD -:1037D000FAC9F944F2040038F0F8FD885028C1D83D -:1037E000410859FAE0890014F0CBFFFC7008510B36 -:1037F0005028FAC6F944402EEC0A0038F14EFD88F4 -:103800002FFA0E95FB4A06B41296C078700C0E95EE -:103810002FC8502C12965108402B580BFE95FEEDE8 -:103820000A97CF0AF20900290F38F4090019F0CAE3 -:103830000030589AFE98FFF83FFAF20A0C495029D6 -:10384000CE4AA7B3CDFA30092308F2090029F009BE -:1038500000190F38F0CA0030589AFE98FFF7E04878 -:103860000024FE91FED2E0490020E0890D98F2C4C8 -:10387000000130195039CC6AA3B3CC4AA7A3CC2A93 -:103880000F8836CEFC081800C0412FF7A5B3CBAA8D -:10389000A5A3CB8AA5B3CB6A50A750800C971090F4 -:1038A00008960495409402920E994041FAF806B4A5 -:1038B000403C580CC1D01036C064FACBF944F6062F -:1038C0000036C1D8FAC8F9501AD8FAC8FAB81AD8C6 -:1038D000FAC8FBB41AD8FAC8F940FAC9FFB4049A76 -:1038E0000C9B0A9CF01F01322FDD19B8C2282FF75C -:1038F0001039C084FACAF944F4060036ED38FD8B5D -:10390000C188410959F8E0890012F2CAFFFC510A46 -:103910007209FAC6F944EC08003A2FF8F549FD8817 -:10392000FB4806B4F1D9C008C04813B82FC95109E3 -:10393000FB680660300E30083012FB6806BB502E64 -:10394000E08F08C450A750800C9704950896029207 -:10395000409410904041A5A3C0A850A750800C9758 -:10396000049508960292409410904041EDB30005F2 -:10397000C511FAF806B4403C580CC1E01036C064DA -:10398000FACBF944F6060036C208FAC8F9501AD83C -:10399000FAC8FAB80C9B1AD8FAC8FBB41AD8FAC9F4 -:1039A000FFB4FAC8F940049A0A9CF01F01012FDD08 -:1039B000781B7809C2B8EECAFFFF1037C0B4FAC945 -:1039C000F9441497F2060036ECFBFD8CECF9FD8807 -:1039D000C1D8410959F8E0890014F2CBFFF8510B26 -:1039E000FAC6F944721BEC08003C7209F94BFD8CD5 -:1039F000F949FD882FF81497FB4806B4C078F2C83F -:103A0000FFF8721B1497510872091698FAE9000022 -:103A1000CAE8EDB30004C171FAF806B4403E580E8E -:103A2000C0801036C694FACCF944F8060036C8288F -:103A3000EECAFFFF1037E0840081FACBF944F606A6 -:103A40000036C778EDB30006C4B1FAF806B4403CBE -:103A5000580CC1D01036C064FACBF944F6060036D3 -:103A6000C1F8FAC8F9501AD8FAC8FAB81AD8FAC878 -:103A7000FBB41AD8FAC8F940FAC9FFB4049A0C9BEF -:103A80000A9CF01F00CB2FDD9818C268EECAFFFF1A -:103A90001037C094FAC9F9441497F2060036ED08BD -:103AA000FD8AC1A8410959F8E0890013F2CBFFFC57 -:103AB000510B7209FAC6F944EC08003B2FF8F7499C -:103AC000FD88FB4806B41497F1D9B010C05892187D -:103AD00014972FC951095018BF585008C488FAF8D4 -:103AE00006B4403C580CC1D01036C064FACBF9443F -:103AF000F6060036C1F8FAC8F9501AD8FAC8FAB86A -:103B00000C9B1AD8FAC8FBB4049A1AD80A9CFAC8B3 -:103B1000F940FAC9FFB4F01F00A62FDD780BC248A8 -:103B2000EECAFFFF1037C094FAC9F944F206003616 -:103B30001497ECFBFD88C188410959F8E089001110 -:103B4000F2CBFFFC510BFAC6F944720BEC080039BA -:103B5000F34BFD882FF81497FB4806B4C058720B3E -:103B600014972FC95109501BBF5B500BFAEA000094 -:103B7000580A5C2BC0E43008FAEA00003009F00A69 -:103B8000010AF20B014B32D8FAEB0000FB6806BBCE -:103B90003018E08F071150A750800C9704950896B5 -:103BA00002924094109040410E99EDB30003C4116D -:103BB000FAF806B4403A580AC1901036C645FAC819 -:103BC000F9501AD8FAC8FAB81AD8FAC8FBB40C9B3C -:103BD0001AD8049AFAC8F940FAC9FFB40A9CF01F2F -:103BE00000742FDD78165076C4882FF71039C0C4C2 -:103BF000FACEF944FC060036ECFCFD8C507CECF669 -:103C0000FD885056C668410959F8E0890010F2CA8B -:103C1000FFF8721B510A7209FACAF944507B5059D5 -:103C2000F4080039405B407AC47872185078C4C8F0 -:103C3000FAF806B4403E580EC2301036C094FACCA2 -:103C4000F944F8060036ECFBFD8C507BCD9BFAC89E -:103C5000F9501AD8FAC8FAB8049A1AD8FAC8FBB4B4 -:103C60000C9B1AD80A9CFAC8F940FAC9FFB4F01F95 -:103C700000502FDD781A507A780C505CC2A82FF7CC -:103C80001039C094FAC9F944F2060036ECF8FD8CFC -:103C90005078CB6B410959F8E0890015F2CAFFF85A -:103CA00072167209510A5059FACEF9445076FC083E -:103CB0000039405B0C9AF2EBFD882FF8FB4806B404 -:103CC000C088721C507CF2C8FFF851087209505924 -:103CD000405B407AF01F00371896C1503008300919 -:103CE000405B407AF01F0034C04032D8FB6806BB0E -:103CF0004B284B36A7D3E0400047F00617A03032E0 -:103D0000E08F06E7405B407AF01F002EC0C05026CF -:103D10004AD84AE6A7D3E0400047F00617A0303261 -:103D2000E08F06DD402A5BFAC04130695029C11896 -:103D3000E04000475F09E04000675F08F3E81008D3 -:103D4000F8081800C06040285808F9B80001502849 -:103D500040784059FAE90694A9A3FAF8069458085D -:103D6000C065405E300C506E509CC078405B32DACB -:103D7000EE1B8000509A506BE04000465F09E04027 -:103D800000665F08F3E810085048C0404022303910 -:103D9000C228E04000455F09E04000655F084046FA -:103DA0001049EC091800C1314022C148800330E4B9 -:103DB0008003697880036FC08003F2408003F2447F -:103DC00080032A7E8003F2488003F24C402EFCC21E -:103DD000FFFF3029FAC8F95C1AD8FAC8F9541AD882 -:103DE000FAC8F94C0A9C1AD80498409B40AAF01FC4 -:103DF00001E0E04000475F19E04000675F18189657 -:103E00002FDDF3E80008C041EDB30000C301EC0270 -:103E1000000C503C404B580BC1500D893308F00941 -:103E20001800C0B130083009406B407AF01F01D152 -:103E3000FBB20001FBF20BAB403AFAF806AC100AF9 -:103E4000503A406B30083009407AF01F01CAC090E8 -:103E50004039FB4906A4C05810C9FB4806A4C02835 -:103E60003309FAF806A4403E1C38CF73E0400047FF -:103E70005F09E04000675F08F3E81008FAF906A45C -:103E80000C1950695808C0B0FAF806AC5BD8C05598 -:103E9000402C1838E08A006A2020C058E0400065B5 -:103EA000E0890046FAFB06ACFB60069C201BFB4B3E -:103EB00006ACC0475C3B32D8C02832B8FB68069DD0 -:103EC000589BE08A001DFAC9FA3530AA12980E9C58 -:103ED0000C92F60A0C060E9B2D0B10FB0C9B5896B1 -:103EE000FE99FFF92D0B1897049610FBFACAF96298 -:103EF000C038113B14CB1238CFD3C0982D0B3308E8 -:103F0000FB6B069FFB68069EFACAF960FAC8F96463 -:103F1000F408010850E81092406B1602581BE08923 -:103F20000005EDB30000C3512FF2C338E040006636 -:103F3000C1C1FAF206AC5802E08A000C402A580AC5 -:103F4000C041EDB30000C2512FF240291202C0B8A7 -:103F500040285808C061EDB30000C0303012C1984D -:103F600040222FE23660C158FAF206AC406E1C3295 -:103F7000C065EDB30000F7B200FFC0A8E40811026D -:103F8000406C5802F00217A0F9B20901180236700D -:103F9000409B580BE080059D32D8FB6806BBE08F44 -:103FA000059C50A704950C970292089640414094B6 -:103FB0000E99EDB30005C481FAF806B4403E580EE0 -:103FC000C1D01036C064FACCF944F8060036C1D826 -:103FD000FAC8F9501AD8FAC8FAB8049A1AD8FAC81E -:103FE000FBB40C9B1AD80A9CFAC8F940FAC9FFB472 -:103FF000F01F01612FDD780AC2082FF71039C08445 -:10400000FACBF944F6060036ECFAFD88C16841099E -:1040100059F8E0890010F2CAFFFC510AFAC6F944C7 -:10402000720AEC080039F34AFD882FF8FB4806B401 -:10403000C048720A2FC9510940BE1C98951EBF582E -:104040009508FE9FFA7CEDB30004C480E2130040A3 -:10405000C450FAF806B4403C580CC1D01036C064C5 -:10406000FACBF944F6060036C1D8FAC8F9501AD886 -:10407000FAC8FAB8049A1AD8FAC8FBB40C9B1AD832 -:104080000A9CFAC8F940FAC9FFB4F01F013B2FDDC2 -:10409000780AC2082FF71039C084FACAF944F40626 -:1040A0000036ECFAFD88C168410959F8E089001032 -:1040B000F2CAFFFC510AFAC6F944720AEC08003948 -:1040C000F34AFD882FF8FB4806B4C048720A2FC98E -:1040D000510940BEB40EFE9FFA32FAF806B4403CD5 -:1040E000580CC1D01036C064FACBF944F60600363D -:1040F000C1D8FAC8F9501AD8FAC8FAB8049A1AD826 -:10410000FAC8FBB40C9B1AD80A9CFAC8F940FAC941 -:10411000FFB4F01F01192FDD780AC2082FF71039FC -:10412000C084FACAF944F4060036ECFAFD88C16886 -:10413000410959F8E0890010F2CAFFFC510AFAC699 -:10414000F944720AEC080039F34AFD882FF8FB485D -:1041500006B4C048720A2FC9510940BE950EFE9F91 -:10416000F9EE50A750800C9704950896029240945F -:1041700010904041A5A3C0A850A750800C9704956B -:1041800008960292409410904041EDB30005C5D1CD -:10419000FAF806B4403C580CC2601036C0A4FACB02 -:1041A000F944F6060036ECE8FD88FAE90000C1881B -:1041B000FAC8F9501AD8FAC8FAB8049A1AD80C9B57 -:1041C000FAC8FBB40A9C1AD8FAC8F940FAC9FFB475 -:1041D000F01F00E92FDDF8EA0000FAEB00003008DC -:1041E000E08F03E7EECAFFFF1037C0B4FAC9F94405 -:1041F0001497F2060036ECEAFD88FAEB0000C1885D -:10420000410959F8E0890018F2E60000F2CBFFF806 -:10421000FAE70000510BFAC6F944EC080039FAE657 -:104220000000F2E7FD882FF81497FB4806B44038E9 -:10423000E08F03BFF2E600004038FAE700002F8964 -:1042400014975109E08F03B5EDB30004C161FAF88A -:1042500006B4403E580EC0801036C674FACCF944FD -:10426000F8060036C808EECAFFFF1037C7F4FACBCD -:10427000F944F6060036C768EDB30006C4A1FAF8A3 -:1042800006B4403C580CC1D01036C064FACBF94497 -:10429000F6060036C1F8FAC8F9501AD8FAC8FAB8C2 -:1042A0001AD8FAC8FBB41AD8FAC8F940FAC9FFB448 -:1042B000049A0C9B0A9CF01F00B02FDD9818C2686E -:1042C000EECAFFFF1037C094FAC9F9441497F206FA -:1042D0000036ED08FD8AC1A8410959F8E0890013AC -:1042E000F2CBFFFC510B7209FAC6F944EC08003B13 -:1042F0002FF8F749FD88FB4806B41497F1D9B010A0 -:10430000C058921814972FC951095C785018C46886 -:10431000FAF806B4403C580CC1D01036C064FACB51 -:10432000F944F6060036C1F8FAC8F9501AD8FAC8A6 -:10433000FAB80C9B1AD8FAC8FBB4049A1AD80A9C8B -:10434000FAC8F940FAC9FFB4F01F008B2FDD780BD3 -:10435000C248EECAFFFF1037C094FAC9F944F2060A -:1043600000361497ECFBFD88C188410959F8E089B3 -:104370000011F2CBFFFC510BFAC6F944720BEC08AA -:104380000039F34BFD882FF81497FB4806B4C0584A -:10439000720B14972FC95109501B300E500E1C98E8 -:1043A000E08F030750A750800C970495089602925F -:1043B000409440410E99FAF806B4403C580CC1D0E4 -:1043C0001036C064FACBF944F6060036C1D8FAC8F4 -:1043D000F9501AD8FAC8FAB81AD8FAC8FBB41AD8D9 -:1043E000FAC9FFB4FAC8F940049A0C9B0A9CF01F62 -:1043F00000622FDD7809C2182FF71039C084FACA7D -:10440000F944F4060036ECF9FD88C178410959F801 -:10441000E0890010F2CAFFFC510AFAC6F944720999 -:10442000EC08003AF549FD882FF8FB4806B4C0585F -:10443000F2C8FFFC510872093308FB6806B83788D8 -:10444000300EFB6806B94CDC5019A1B3500E50DC9D -:1044500030283780E08F02AD50A750801090300890 -:10446000FB6806BB0C970495089602924094404165 -:104470000E99FAF806B4403B580BC1D01036C06410 -:10448000FACAF944F4060036C1D8FAC8F9501AD865 -:10449000FAC8FAB81AD8FAC8FBB40C9B1AD8049A0E -:1044A000FAC8F940FAC9FFB40A9CF01F00332FDDA7 -:1044B0007806C2082FF71039C084FAC9F944F20609 -:1044C0000036ECF6FD88C168410959F8E089001012 -:1044D000F2CAFFFC510A7206FACEF944FC08003910 -:1044E000F346FD882FF8FB4806B4C04872062FC972 -:1044F0005109402C580CC105189A300B0C9CF01F28 -:104500000020E08002E9F8060102402B1632E08923 -:1045100002E3E08F02DE300A0C9C502AF01F0019E3 -:104520001892E08F02DC50A750800C9704950896F3 -:104530000292409410904041A5A3C0A850A750807B -:104540000C97049508960292409410904041EDB368 -:104550000005C611FAF806B440395809C2C0103631 -:10456000C124FAC8F944F0060036C2E88003552C8D -:1045700080036F32800330E48003EDE4800328A4DD -:104580008002EDD0FAC8F9501AD8FAC8FAB81AD889 -:10459000FAC8FBB41AD8FAC8F940FAC9FFB4049AA9 -:1045A0000C9B0A9CF01F00C82FDDF8E80000FAE918 -:1045B0000000C2E8EECAFFFF1037C0B4FAC8F944E1 -:1045C0001497F0060036ECEAFD88FAEB0000C2080A -:1045D000410959F8E0890016F2E60000F2CBFFF835 -:1045E000FAE70000510BFAC6F944EC080039FAE684 -:1045F0000000F2E7FD882FF81497FB4806B4C08846 -:10460000F2E600002F89FAE70000510914973018EC -:10461000E08F01CFEDB30004C161FAF806B4403E6B -:10462000580EC0801036C674FACCF944F80600362D -:10463000C808EECAFFFF1037C7F4FACBF944F606F4 -:104640000036C768EDB30006C4A1FAF806B4403CD2 -:10465000580CC1D01036C064FACBF944F6060036C7 -:10466000C1F8FAC8F9501AD8FAC8FAB81AD8FAC86C -:10467000FBB41AD8FAC8F940FAC9FFB4049A0C9BE3 -:104680000A9CF01F00912FDD9818C268EECAFFFF48 -:104690001037C094FAC9F9441497F2060036ED08B1 -:1046A000FD8AC1A8410959F8E0890013F2CBFFFC4B -:1046B000510B7209FAC6F944EC08003B2FF8F74990 -:1046C000FD88FB4806B41497F1D9B010C058921871 -:1046D00014972FC951095C785018C468FAF806B4C9 -:1046E000403C580CC1D01036C064FACBF944F606F1 -:1046F0000036C1F8FAC8F9501AD8FAC8FAB80C9BB3 -:104700001AD8FAC8FBB4049A1AD80A9CFAC8F94015 -:10471000FAC9FFB4F01F006C2FDD780BC248EECA57 -:10472000FFFF1037C094FAC9F944F2060036149717 -:10473000ECFBFD88C188410959F8E0890011F2CBF2 -:10474000FFFC510BFAC6F944720BEC080039F34B2D -:10475000FD882FF81497FB4806B4C058720B1497C5 -:104760002FC95109501B300E3018500EC21950A7D6 -:1047700050800C970495089602924D4C40941090EE -:10478000404150DCEDB30005C551FAF806B4403B9A -:10479000580BC2201036C0A4FACAF944F4060036F9 -:1047A000ECE8FD88FAE90000CF58FAC8F9501AD8A9 -:1047B000FAC8FAB8049A1AD80C9BFAC8FBB40A9C37 -:1047C0001AD8FAC8F940FAC9FFB4F01F003F2FDD2C -:1047D000F8EA0000C0C8EECAFFFF1037C0B4FAC93B -:1047E000F9441497F2060036ECEAFD88FAEB000073 -:1047F000CD18410959F8E0890016F2E60000F2CB25 -:10480000FFF8FAE70000510BFAC6F944EC0800394A -:10481000FAE60000F2E7FD882FF81497FB4806B48B -:10482000CB98F2E600002F89FAE7000051091497AF -:10483000CB18EDB30004C171FAF806B4403E580E2F -:10484000C0801036C6C4FACCF944F8060036C85801 -:10485000EECAFFFF1037E0840084FACBF944F60675 -:104860000036C7A8EDB30006C4E1FAF806B4403C30 -:10487000580CC1D01036C064FACBF944F6060036A5 -:10488000C1F8FAC8F9501AD8FAC8FAB81AD8FAC84A -:10489000FBB41AD8FAC8F940FAC9FFB4049A0C9BC1 -:1048A0000A9CF01F00092FDD9818C2A8EECAFFFF6E -:1048B0001037C0D4FAC9F9441497F2060036ED084F -:1048C000FD8AC1E8800330E48003EDE4410959F832 -:1048D000E0890013F2CBFFFC510B7209FAC6F944D0 -:1048E000EC08003B2FF8F749FD88FB4806B4149705 -:1048F000F1D9B010C058921814972FC951095C789B -:104900005018C468FAF806B4403C580CC1D01036B0 -:10491000C064FACBF944F6060036C1F8FAC8F9507B -:104920001AD8FAC8FAB80C9B1AD8FAC8FBB4049A79 -:104930001AD80A9CFAC8F940FAC9FFB4F01F00C996 -:104940002FDD780BC248EECAFFFF1037C094FAC9BA -:10495000F944F20600361497ECFBFD88C188410942 -:1049600059F8E0890011F2CBFFFC510BFAC6F9446B -:10497000720BEC080039F34BFD882FF81497FB48B5 -:1049800006B4C058720B14972FC95109501B300E32 -:10499000500E4008401C18485F18E7E80008C07037 -:1049A0003308FB6006B9A1B3FB6806B830283009AC -:1049B000FB6906BB402B580BC025A7D3402A4009F2 -:1049C000580A5F1A4016FAC2F9780C495F19F5E9DE -:1049D0001009C5C03019F2081800C0603029F2086B -:1049E0001800C041C3C80496C3080496FAE8000042 -:1049F000F5D8C0032D0A0CFAF00B1603F20C1603BF -:104A0000F7E911DB1899169858085C29CF21FAE9C3 -:104A10000000EDB30000C4513309F20A1800C410BD -:104A20000CF9C3F8FAEA000030A83009F01F008E34 -:104A300030A82D0A3009AC8AFAEA0000F01F008B7A -:104A400016991498FAE900002016FAEA0000589A1C -:104A50005C2BFE9BFFE91BF82D08C2080496FAE8C0 -:104A60000000F5D8C00440DEFC0A070A0CFAF20B7D -:104A70001604F00A1604F5E911CA16991498580894 -:104A80005C29CF01FAE90000C0C85808C091EDB315 -:104A90000000C061FAC6F9793308AC88C0280496D2 -:104AA0000C12C1C850A7508040940C9710900495E8 -:104AB00040415808E0800464FB680660300C300810 -:104AC0003012FB6806BB502CFAC6F9A0C078300B38 -:104AD000502BC0484022300A502A4029E4090C4992 -:104AE000FB3806BB5039069E3009E21E0002F20870 -:104AF0001800FBF81003F7B801FFFBF81A03069B38 -:104B0000580EFBFC1003F7BC01FEFBFC1A03E21B72 -:104B1000008450FE509BC451408A4039121A504ABA -:104B2000580AE089001FC3D82F092FF84D0E310C09 -:104B3000FB490690890E891CFB48068C5878E08951 -:104B400000042F84C0B8FACAF978029B0A9CF01FAF -:104B50000049E0810425FAC4F9E0404B210B504B99 -:104B6000FAF90690FAF8068C4C1A404E590EFE9946 -:104B7000FFDD1C092FF8890AFB490690891EFB48B6 -:104B8000068C5878E08900042F84C0B8FACAF978F6 -:104B9000029B0A9CF01F0037E0810402FAC4F9E08E -:104BA0003009FB3806BBF2081800C1F0FAF806908D -:104BB000FAC9F9452FF88909FB4806903019FAF827 -:104BC000068C89192FF8FB48068C5878E089000478 -:104BD0002F84C0B8FACAF978029B0A9CF01F0025FE -:104BE000E08103DEFAC4F9E040FC580CC1F0FAF8A9 -:104BF0000690FAC9F9482FE88909FB480690302940 -:104C0000FAF8068C89192FF8FB48068C5878E08949 -:104C100000042F84C0B8FACAF978029B0A9CF01FDE -:104C20000015E08103BDFAC4F9E0409BE04B008031 -:104C3000C511408A4039121A504A580AE089002B9F -:104C4000C4982F092FF848CE310CFB490690890EE5 -:104C5000891CFB48068C5878E08900102F84C178A5 -:104C6000800330E4800373408002D9988003F250BF -:104C7000800334048003F260FACAF978029B0A9C2C -:104C8000F01F004CE081038CFAC4F9E0404B210B8B -:104C9000504BFAF90690FAF8068C4C7A404E590EB1 -:104CA000FE99FFD11C092FF8890AFB490690891E3D -:104CB000FB48068C5878E08900042F84C0B8FACAF3 -:104CC000F978029B0A9CF01F003BE0810369FAC45B -:104CD000F9E0402C041C502C580CE089001FC3D86C -:104CE0002F092FF84B4B310AFB490690890B891A83 -:104CF000FB48068C5878E08900042F84C0B8FACAB3 -:104D0000F978029B0A9CF01F002BE0810349FAC44A -:104D1000F9E0402921095029FAF90690FAF8068CA1 -:104D20004A5A402E590EFE99FFDD1C092FF8890AB8 -:104D3000FB490690891EFB48068C5878E0890004E0 -:104D40002F84C0B8FACAF978029B0A9CF01F001998 -:104D5000E0810326FAC4F9E0EDB30008C0B0FAF828 -:104D6000069089128906F0020002FB420690E08F4D -:104D700001DBE0400065E08A01DD30083009405B7E -:104D8000407AF01F000EC7E0FAF8069048C92FF8E5 -:104D90008909FB4806903019FAF8068C89192FF812 -:104DA000FB48068C5878E089000D2F84C14800002C -:104DB000800334048003F26080036F328003A6C056 -:104DC000FACAF978029B0A9CF01F0078E08102E899 -:104DD000FAC4F9E0FAF806AC406C1838C055EDB3E7 -:104DE0000000E081026DFAF806902FF840CBFB48F6 -:104DF00006903019FAF8068C890B2FF88919FB48B0 -:104E0000068C5878E08900042F84C0B8FACAF97873 -:104E1000029B0A9CF01F0065E08102C2FAC4F9E01F -:104E2000406620165806E089001DE08F02492F09D0 -:104E30002FF8FB49069089028910FB48068C5878A8 -:104E4000E08900042F84C0B8FACAF978029B0A9C52 -:104E5000F01F0056E08102A4FAC4F9E02106C03830 -:104E60004D323100FAF90690FAF8068C4D0A5906CF -:104E7000FE99FFDF0C09890AFB4906902FF8891675 -:104E8000C559FAFA06AC580AE0890096FAF8069075 -:104E90004C892FF88909FB4806903019FAF8068CDE -:104EA00089192FF8FB48068C5878E08900042F8474 -:104EB000C0B8FACAF978029B0A9CF01F003CE08156 -:104EC000026FFAC4F9E0FAF806AC5808C081406AEB -:104ED000580AC051EDB30000E08101F240C9FAF870 -:104EE00006902FF88909FB4806903019FAF8068CCD -:104EF00089192FF8FB48068C5878E08900042F8424 -:104F0000C0B8FACAF978029B0A9CF01F0028E08119 -:104F10000247FAC4F9E0FAF206AC5C325802E089C2 -:104F2000001DC3B82F092FF8310EFB4906908900E8 -:104F3000891EFB48068C5878E08900042F84C0B88D -:104F4000FACAF978029B0A9CF01F0018E081022837 -:104F5000FAC4F9E02102C0284950FAF90690FAF89B -:104F6000068C493A5902FE99FFDF04092FF8890A95 -:104F7000FB4906908912FB48068C5878E0890004AA -:104F80002F84C0B8FACAF978029B0A9CF01F000768 -:104F9000E0810206FAC4F9E0406CFAF8069089064E -:104FA000891C1808CBE80000800334048003F260F9 -:104FB0008003A6C0FAF90690FAF8068C406B163A00 -:104FC000C6D516092FF88906FB490690891BFB48B0 -:104FD000068C5878E08900042F84C0B8FACAF978A2 -:104FE000029B0A9CF01F006FE08101DAFAC4F9E02D -:104FF000FAF606AC406A14165806E089001CC3B8DD -:105000002F092FF8FB49069089028910FB48068C6E -:105010005878E08900042F84C0B8FACAF978029B56 -:105020000A9CF01F0060E08101BBFAC4F9E0210690 -:10503000C0384DD23100FAF90690FAF8068C4DAA24 -:105040005906FE99FFDF0C092FF8890AFB490690E3 -:105050008916FB48068C5878E08900042F84C0B874 -:10506000FACAF978029B0A9CF01F004EE081019871 -:10507000FAC4F9E0EDB30000E081012240C9FAF87A -:1050800006902FF88909FB4806903019FAF8068C2B -:1050900089192FF8FB48068CC04914092FF8FB49E1 -:1050A00006908906891AFB48068C5878E089000426 -:1050B0002F84C0B8FACAF978029B0A9CF01F003905 -:1050C000E081016EFAC4F9E040C88908FAF8069058 -:1050D0002FF83019FB4806908919FAF8068C2FF83A -:1050E000FB48068CFAF206AC5878E08900042F845D -:1050F000C0B8FACAF978029B0A9CF01F002AE08126 -:10510000014FFAC4F9E00406FAF806AC8906FAF988 -:1051100006904066406E1016F208010889161C08B9 -:10512000FB480690FAF8068C2FF8FB48068CCB98C3 -:10513000406C581CE0890006EDB30000E081008758 -:10514000FAF806902FF83019FB4806908906FAF80D -:10515000068C89192FF8FB48068C5878E0890004E2 -:105160002F84C0B8FACAF978029B0A9CF01F000D80 -:10517000E0810116FAC4F9E0FAF806902FF840CB66 -:10518000FB4806903019FAF8068C890B2FF889191C -:10519000FB48068C5878E08900092F84C10800007C -:1051A000800334048003F260FACAF978029B0A9CF7 -:1051B000F01F006FE08100F4FAC4F9E03008300914 -:1051C000405B407AF01F006B40682018580CC0D13B -:1051D0002FF689188906FAF606901006FAF8068C5A -:1051E000FB4606902FF8C2F810965808E089001C7C -:1051F000C4982F092FF8FB49069089028910FB48B3 -:10520000068C5878E08900042F84C0B8FACAF9786F -:10521000029B0A9CF01F0056E08100C2FAC4F9E02C -:105220002106C0384D423100FAF90690FAF8068C92 -:105230004D1A5906FE99FFDF0C09890AFB490690B1 -:105240002FF88916FB48068CC0E8FAF806902FF86C -:105250003019FB4806908906FAF8068C89192FF850 -:10526000FB48068C5878E08900042F84C0B8FACA3D -:10527000F978029B0A9CF01F003EE0810091FAC47D -:10528000F9E040EAFAF806901408FAC9F964FB4814 -:105290000690891AFAF8068C89092FF8FB48068CC3 -:1052A0005878E08900042F84C0A8FACAF978029BD4 -:1052B0000A9CF01F002FC731FAC4F9E0E213000482 -:1052C000C3D04086403912165806E089001AC368D8 -:1052D0002F092FF8FB49069089038912FB48068C99 -:1052E0005878E08900042F84C098009A029B0A9C99 -:1052F000F01F001FC541FAC4F9E02106C05849F368 -:105300003102FAC0F978FAF90690FAF8068C49BA2F -:105310005906FE99FFDF0C092FF8890A8916FB4907 -:105320000690FB48068C5878E08A0009FACAF9789A -:10533000029B0A9CF01F000EC32140BC4036408EE9 -:10534000EC0E0C48100C50BCFAF806905808C080BF -:10535000FACAF978029B0A9CF01F0005C201300BC3 -:10536000FAC4F9E0FB4B068CFE9FF0E9800334049D -:1053700080036F328003F2608003F250FAF80690E7 -:105380005808C0800A9CFACAF978029BF01F0009ED -:10539000C0613008FB48068CC02840418268EDB8E7 -:1053A0000006C0313FFA50BA40BCFE3DF944D83245 -:1053B00080033404D42116981897109C3008149B4D -:1053C0004866129A8D08F01F00065BFCC0516C08FD -:1053D0005808EFF81A03D82200008CC48002F1505C -:1053E000D421300818974876169C8D08F01F0006C7 -:1053F0005BFCC0516C085808EFF81A03D822000073 -:1054000000008CC48002F108D431202D1897784810 -:1054100076460C38C034300CC858ECC2FFFCF6C3DA -:10542000FFECF6020329F802032C2FF92016F809E5 -:105430000D08F6020022EEC4FFEC10955808C410C7 -:105440003009069A08981291500B700EB18E501EBA -:10545000150EFC001610FDDEC010EA0E0341FDD152 -:10546000C010B181401BEA000240E2000000E3D01E -:10547000C010021B501B700BE3DBC0100209F20EC0 -:10548000010EB01EFC091410401EFC090009B009F1 -:10549000E00116102FC8B149043AFE98FFD8400B1E -:1054A000580CC0F1ECC8FFFBEE080028C0282016FD -:1054B00020480838E088000570095809CF908F46C9 -:1054C0000E9CF01F001AC2D52FF508983009070B63 -:1054D000F60A1610700CF7DBC010F80E1610141E2A -:1054E000F5DCC010161A120AB01AB14AFC0A0009FB -:1054F000B0092FC8B1490433FE98FFEBECC8FFFB9D -:10550000EE0803295809C0D1EE080028C02820164B -:1055100020480838E088000570095809CF908F4668 -:105520000A9C2FEDD8320000800363EED43121AD08 -:10553000FAC4FF7418971695682C50C96816680944 -:1055400050E81494512CFAE5000851596E9558050D -:10555000C091310CF01F004799358F9C9915992502 -:1055600099056E9972085808C0F0721A911A301A8B -:105570007219F4090949109B91290E9CF01F003EF5 -:105580006E9830099109402810945808C064F1D8E9 -:10559000C01F50283018C02830088D08FC1C7FF030 -:1055A00040260C98E6187FF01838C1C1E068270F34 -:1055B000415B9708403A580AC061EDD6C014C0312B -:1055C0004AECC0284AEC41295809E08005DEF8C8B9 -:1055D000FFFD3009118AF20A1800C190F8C8FFF8DF -:1055E000C168FAEA00083008FAEB003C3009F01F05 -:1055F0000025C1103018415A950841294A285809F8 -:10560000C041109CE08F05C1109C2FF841258B08EC -:10561000E08F05BBFAC8FF9CFAC9FFA0FAEA003C7C -:105620000E9CEBD6C28BF01F001918935805C0D002 -:10563000FAEA003C3004F1DBC014EAC503FF109B1A -:105640005174EA1B3FF0C3284188419C100CF8C5F7 -:10565000FBCEE0450020E08A001BF8CCFBEE403B8F -:10566000EA081140F60C0A4CEC0809460C4CC148FB -:105670008002E2A4800364208003F3708003F37C43 -:1056800080036F328003A6C0800364D0EA0C11202F -:10569000403AF40C094CF01F006BFC18FE10301956 -:1056A000EAC50433F00B000B51793008FC193FF8C0 -:1056B000F01F0065E0684361EA18636FE06987A73F -:1056C000EA193FD2F01F0061E068C8B3EA188B60A6 -:1056D000E0698A28EA193FC6F01F005D0A9C149011 -:1056E0001691F01F005CE06879FBEA18509FE069B2 -:1056F0004413EA193FD3F01F005514981699009AE5 -:10570000029BF01F005314901691F01F00533008B5 -:1057100018963009009A029BF01F0050C0C00C9CE4 -:10572000F01F004C14981699009A029BF01F004C31 -:10573000F7B600015966E088000530185148C128C5 -:105740004C88FAEA003CF0060238F01F0044F9B435 -:105750000000FBF40A14F7B60101F9BC0100FBFCE0 -:105760001A14419020100A10C04650403000C04822 -:10577000300B5C30504BEC0211005806FBFA400431 -:10578000F5D6E40AFBFA4A04FBF64A11F9B2040022 -:10579000E1D6E510F9B90500FBF95A1140C858984F -:1057A000E08B00205858F9B40A01FBF5900CF7B5CE -:1057B0000904FBF59A0CF9B4090040CC583CC2D05E -:1057C000E0890005582CC101C18840CB584BC0600E -:1057D000585BC0A1301A50DAC228301950D9C0F82D -:1057E0003008301450C83FF5301C300B509550DC59 -:1057F0000A91312850EBC208300A50DA40E95809C2 -:10580000E089000730185098109150E8C15840E5E1 -:1058100050950A910A98C108300C50DC40EBEC0B13 -:10582000000B509B16982FF85808E089000510913E -:105830003018C028109130096E9A95193049C178F6 -:1058400080036E4A80036B7C800369A480036D181B -:1058500080036E5280036E2480036FC080036F321A -:105860008003F38C6A1AA1792FFA8B1A6E95F2CA0B -:10587000FFEC103AFE98FFF86A1B0E9CF01F0053D5 -:1058800058E15F888B0CF1E400046E987008508832 -:10589000E08001985806E08A0040F3D6C0044CC866 -:1058A000F0090234FAE50018EC041404EDB4000425 -:1058B000C0303025C0F84C78F0E80020FAEA003C0F -:1058C000E9D4C004F01F0044303514981699FAE961 -:1058D00000084C0C50A30C931896C0F8FAEA001874 -:1058E000EDB40000C081ECE800002FF5F01F003B94 -:1058F000FAEB0018A1542F865804CF11FAE80018CB -:10590000FAEA00080696F01F003440A3149816998E -:10591000FAE90008C2D8EC081100C0313025C2886D -:105920004ACCF0041404501CF1D8C0044A89FAEAA5 -:10593000003CF2080238F01F0029401C506330255B -:105940000C93FAEB00081896C0F8FAEA0008EDB4D8 -:105950000000C081ECE800002FF5F01F0020FAEBFA -:105960000008A1542F865804CF1106964063414A7F -:10597000580AC370FAE8000858015F94FAE9001861 -:105980003008FC193FF0FAEA0018F01F0015F9BCC6 -:105990000000F9BC0101E9EC000CC2304098580845 -:1059A000E08A010C3008FC194024ECC40001FAEA3A -:1059B00000182FF55064F01F0009409414981699B0 -:1059C000FAE90008C1080000800364588003F38CE2 -:1059D0008003F45480037028800369A480036FC09F -:1059E000506602940A9CF01F0069FAE80008F01F54 -:1059F00000683008FC19401CF01F006614981699C6 -:105A0000FAE90028FC18FCC040A5100550A5580470 -:105A1000C211FAEA00083008FC194014F01F005EB9 -:105A200040BCFAEB000814981699189A0A9BF01FCC -:105A3000005BE08102740A9840B9EE188000FAEA2F -:105A40000008109512980A99F01F0054E081025E38 -:105A5000CB484D39E8C8000140D55805C4F0300C9A -:105A6000F2080238513C300AFC1B3FE0F01F004DA9 -:105A7000FAE800284085F01F0048FAEB0028FAEA0F -:105A80000008F01F0049516CF01F0040149816994F -:105A9000FAEA0008F01F0040FAEB000841682D0800 -:105AA0000AC841392FF95139FAE80028F01F003BA4 -:105AB000E081035AFAE80008300AFC1B3FF0F01FAF -:105AC0000036FAE80028F01F0035FAEA002830080E -:105AD000FC194024E08100E8413C083CC6E4F01F8A -:105AE000002C3008FAEB0028FC194024FAEA0008E0 -:105AF000F01F0027FAEB0008CC3B40850805F208B0 -:105B0000023A5135FAE800284085F01F0021FAEBEF -:105B10000028FAEA0008F01F0024516CF01F001B57 -:105B200014981699FAEA0008F01F001BFAEB000817 -:105B300041682D080AC8413C1835C3713008FC196A -:105B40003FE0FAEA0028F01F00134085FAE8000859 -:105B50000805F01F0012E08100A7FAE80028300ACB -:105B6000FC1B3FE0F01F000C14981699FAEA00089D -:105B7000F01F000AC22033090A98117AF20A1800AD -:105B8000E08102F21095CF9B80036E52800369A4DE -:105B900080036D1880036B7C80036FC08003F38CDF -:105BA0008003702880036E243008FC194024F01F05 -:105BB0000056FAEB0008CAEBFAEA003CFAEB0008E0 -:105BC00058E65FAB418A3008F40911FFF7E903F9A1 -:105BD000F0091800E080008140EA58015FA9F3EA6B -:105BE00003F94CAAF4060234FAE50010F009180093 -:105BF000C1405801E081018A3008FC194014089A1C -:105C00000A9BF01F0041FAE80008F01F0041E08104 -:105C1000017D0292E08F018540853014FAE8001082 -:105C2000FAEA0008F01F003BF01F003B1892F01F3B -:105C3000003BFAE80010F01F003414981699FAEAB5 -:105C40000008F01F0037FAEB0008E4C8FFD00AC8CC -:105C5000FC19402430080234C331FAE80008F01F70 -:105C600000311691149014980299FAEA0010F01F6E -:105C7000002EC1A1FAE80010009A029BF01F002B31 -:105C8000E0800271E5D2C001C0F1E08F026C408A71 -:105C90001438C0301095C098330840892FF6B28868 -:105CA0004088C088406633990A98117AF20A180031 -:105CB000CEF0506611892FF9B089E08F0255F01FA0 -:105CC00000122FF4FAEB000830083009F01F00171B -:105CD000CA60E08F024840D85808C0510498009527 -:105CE00040D4C4A840C55815E08900224174580426 -:105CF000C040F4C9FBCDC0484199F209113604985F -:105D00000095C2F8800369A48003F38C80036F5868 -:105D10008003702880036E2480036E5280036B7CA6 -:105D200080036D1880036FC080036F32E2C80001EA -:105D30005801E0051740E2091740E1D1E515F9B92E -:105D400005001032E5D8E418F1D2E518E5D8E502EF -:105D5000FBFC5011F9D8E50CFBFC5A11F9B8050011 -:105D6000404B120B5008504B1200301B0E9CF01F82 -:105D7000010840081894404A58055F99580A5F9AEC -:105D8000F5E90009C080404CF8050D49121C1210BD -:105D9000504C12155802E08A002740DB580BC1D046 -:105DA0005808E08A0017109A5008089B0E9CF01FB4 -:105DB00000F9069A189B18940E9CF01F00F718998A -:105DC000069B50190E9CF01F00F5401940081293D5 -:105DD000E408010AC080C028049A069B0E9CF01FAC -:105DE00000ED1893301B0E9CF01F00E9411A189229 -:105DF000580AE08A0007189B0E9CF01F00E61892D4 -:105E000040C95819E089001440385808C101402998 -:105E1000F1D9C014C0C11298E6187FF0C080404C80 -:105E2000301B2FFC2FF0504C506BC038300A506A9A -:105E300041195809C031301CC09864482FC8E40883 -:105E4000032CF01F00D7F80C1120404BF80B000872 -:105E5000F1D8C005C0C0F00811205848E08A0006FB -:105E60002048100B504BC0785848C070404A2E480C -:105E7000100A504A100010055800E08A0008069BDE -:105E8000009A0E9CF01F00C7189340495809E08AF9 -:105E90000008049B129A0E9CF01F00C21892414801 -:105EA0005808C1B0049B069CF01F00BFC164069B4C -:105EB000300930AA0E9CF01F00BD2016189340DC5C -:105EC000580CC0314091C098089B4091300930AACD -:105ED0000E9CF01F00B6189458015FA940CB582BB8 -:105EE0005F98F3E80008C2505801C111049B029961 -:105EF000305A0E9CF01F00AD1892189B069CF01FA4 -:105F000000AAE089000FC0383002049440EA30094A -:105F10005CDA4085506A5049C0F9089240660494A2 -:105F20002FF65066331840850AC830085048C049DB -:105F300040DC580CE08000B55805E08A0008089B5A -:105F40000A9A0E9CF01F00971894406B580BC031B2 -:105F5000089CC138681B0E9CF01F0095684A189574 -:105F6000E8CBFFF42FEA2F4CA36AF01F00920A9BA4 -:105F7000301A0E9CF01F008B5044403A3019F5DA6D -:105F8000C001189450DA40855099502650E1049B86 -:105F9000069CF01F0089404BF8C0FFD0069CF01F04 -:105FA0000082089A506C049B0E9CF01F008418918C -:105FB00078385808C0303016C068189B069CF01F0F -:105FC000007A18960E9C029BF01F007440CCEDECFA -:105FD0001008C0D140DB580BC0A14026E04000397A -:105FE000C300406A580AE0890024C2F84069580991 -:105FF000C085129840CC1848C1D140DB580BC1A1D4 -:106000000C9940265809E08A0021069B301A0E9C04 -:10601000F01F0064049B1893F01F0063E0890006E2 -:10602000C141EDB00000C111E0400039C0A02FF027 -:10603000C0C85806E08A000C4026E0400039C04144 -:1060400033980AC8C6782FF00AC0C7580AC0409AC9 -:1060500040E9123AC430069B300930AA0E9CF01F6A -:106060000053404818930838C091109B300930AA5B -:106070000E9CF01F004E504CC0E8404B300930AA37 -:106080000E9CF01F004A089B504C300930AA0E9C11 -:10609000F01F00461894409C2FFC509CC79B301862 -:1060A0000690408508930C941096049B009CF01F6A -:1060B00000422D0C0ACC0236C0A4009B300930AA45 -:1060C0000E9C2FF6F01F00391890CF0B0896300B5E -:1060D0000694504B00931890C0284026069B301A17 -:1060E0000E9CF01F0030049B1893F01F002FE089D6 -:1060F0000012C1B1E1D0C001C0D1C17840891238CD -:10610000C0301095C0882FF650663318408CB88880 -:10611000C138339A0A981179F4091800CF002FF981 -:10612000B089C0981095C02833090A98117AF20AEC -:106130001800CF905066049B0E9CF01F0018580466 -:10614000C120404B083B5F19580B5F18F3E800086B -:10615000C0400E9CF01F0011089B0E9CF01F000F0A -:10616000C02850660E9C069BF01F000C3008AA88C1 -:106170004068415A2FF841299508408C5809FBF88E -:106180001012F1F51A002E6DD8320000800368005D -:10619000800368A0800366F88003642080036300A6 -:1061A00080036664800363EE80036818800364588C -:1061B0008002E736800354088003658C5EFC5EFC39 -:1061C000D42118961697580BC0311695C508F01FA4 -:1061D00000295806C0706C685808C0410C9CF01F1C -:1061E00000264A681037C0316C07C0A84A481037EB -:1061F000C0316C17C0584A381037EDF700028E696D -:106200003008F0091900C051F01F001F3005C2F816 -:106210000E9B0C9CF01F001D6EC818955808C0609E -:106220006E8B0C9C5D18F9B505FF8E68EDB8000704 -:10623000C0516E4B0C9CF01F00166EDB580BC0A0BB -:10624000EEC8FFBC103BC0400C9CF01F0011300892 -:106250008FD86F2B580BC0700C9CF01F000D3008AE -:10626000EF4800483008AE68F01F00070A9CD822AB -:1062700080031E7480031F388003EF2C8003EF4CD3 -:106280008003EF6C80031E7680031D2C8003217C2D -:10629000D4014848189B700CF01F0003D80200007E -:1062A00000000598800361C0D42116981897109CAF -:1062B00030084876149B8D08F01F00065BFCC05127 -:1062C0006C085808EFF81A03D822000000008CC4AC -:1062D0008002F198D42116981897109C3008149BCE -:1062E0004866129A8D08F01F00065BFCC0516C08CE -:1062F0005808EFF81A03D82200008CC48002F1205D -:106300001898E01C0000F0091510580CF20817004E -:10631000F9BC0010F9BC0100109AF0091508E61A42 -:10632000FF00F7BC00F8F2081700109AF0091504F6 -:10633000E61AF000F7BC00FCF2081700109AF0090A -:106340001502E61AC000F7BC00FEF2081700580854 -:106350005E5CEDB8001EF9BC0120F7BC00FF5EFCDE -:1063600018997808F9D8C003C150EDB80000C021D1 -:106370005EFD109BF00A1601E21B0002A388580B79 -:10638000F3FA1A00F9BC0101F3F80A00F9BC0002A3 -:106390005EFCF5D8C010F00B1610580AF60817006E -:1063A000F9BC0010F7D8C008F00A1608580BF7BC63 -:1063B00000F8F4081700F7D8C004F00A1604580BC8 -:1063C000F7BC00FCF4081700F7D8C002F00A160268 -:1063D000580BF7BC00FEF4081700EDB80000C060D1 -:1063E000A198C031320C5EFC2FFC93085EFCD401F6 -:1063F00018987649784C121CC1312FB9A369120B39 -:10640000F00900092EC8134E174A143EC060F9BCAB -:1064100003FFF9BC0201D8021039FE9BFFF6D80237 -:10642000D4211897169578965806C091310CF01F14 -:10643000000A99368F9C9916992699065805C0909E -:106440006A196E987038F009032A8B0AF009092539 -:10645000D82200008002E2A4D421189716967895DD -:106460005805C091310CF01F001999358F9C991572 -:10647000992599056E956A385808C0B1310A304B94 -:106480000E9CF01F00138B3C6E98703C580CC1B0F2 -:106490006E987038F0060028700C580CC0407809CF -:1064A0009109C0E80E9C30170E9BEE060947EECA14 -:1064B000FFFBA36AF01F0006C060991699273008F9 -:1064C00099389948D82200008002E2A48002DC5466 -:1064D000D431202D1693129610951492301BF01F74 -:1064E0000029F3D3C0145009F1D3C01FF0011614D2 -:1064F000FC1A0010F3DAE139FBF91A00189458027B -:10650000C1E0FACCFFF818D2F01F001F4018C0D02D -:106510004009F80A1120F20A094AF5E810088958DA -:10652000F20C0A495009C028895840085808F9B3A4 -:106530000102F9B3000189688943C0981A9CF01FD1 -:106540000012301340082E0C894389585801C0901E -:10655000E2C1043318018D01F80C11358B0CC0D841 -:10656000E6C8FFFCF8CC0432A5738D0CE808032CB8 -:10657000F01F000618138B03089C2FEDD832000083 -:10658000800364588003636080036300D4317448DF -:106590007645169714961015C1312FB8EECEFFEC44 -:1065A000A368F408000BEE080008114A1749123AD4 -:1065B000C030C0E2C0781C38FE9BFFF9C4A8580563 -:1065C000C0640E9830150C971096C02830056E1BCD -:1065D000F01F00246E496C4499352FB4F2C5FFFBBF -:1065E000EC040024EE0500252EC62EC7F8C8FFECEB -:1065F000300A0F0E0D0BFC021610F6031610FDDE0E -:10660000C010E4030103F7DBC010FC0B010BF60A1A -:10661000000AB01AB14AE60A000AB00A2FC8B14A05 -:106620000836CE83C0D80F0BF60E1610F7DBC0105D -:10663000160AB01AB14A1C0AB00A2FC8B14A0A3762 -:10664000CF33C0282019114A580ACFD09949D832DF -:10665000300BF01F00043018994830089958D83290 -:1066600080036458D43116977646F40214052FF649 -:10667000149318940406761B6E28C0382FFBA1785B -:106680001036FE99FFFD089CF01F001A300918957E -:10669000F8C8FFEC129AC03810AA2FF90439CFD5E8 -:1066A0006E4BE7D3C0052FBBEEC9FFECEE0B002B02 -:1066B0005803C130E60C1120300A7202E40309428B -:1066C000044A10AA130AF40C0A4A1639CF73910A25 -:1066D000580AC0702FF6C058130A10AA1639CFD323 -:1066E000089C20160E9B8B46F01F00030A9CD83294 -:1066F0008003645880036420D431202D7649744887 -:10670000169614951039EC081750EA061750F00544 -:1067100017506C2876437442761BE4030007103749 -:10672000F7BB09FFF01F0036EEC4FFFBF8C9FFEC12 -:10673000F8040024300A1298C02810AA0838CFE3C1 -:106740002FB32FB2EC030023EA020022ECCBFFECC4 -:106750005012EACAFFECC44894955805C20012983A -:106760001696300E50090D02E400161070017009E3 -:10677000B181E5D2C010E0050341AB32E1D9C010D0 -:106780000002E40E000EB01EB18E1C01B001E20E3C -:1067900016102FC80636CE834009910E94865806EF -:1067A000C1D072021298169E3005B0121D0190825F -:1067B000E1D1C010AD30E0020002E4050005B005F3 -:1067C000B185B1812FC8AD319092E20200020A0278 -:1067D000E4051610063ECEA391022FCA2FC9401819 -:1067E000103ACBB3C02820175807E08A00050948A3 -:1067F0005808CFA099472FEDD83200008003645885 -:10680000D4211697301BF01F00043019995799496D -:10681000D822000080036458D431300812951697AE -:1068200018967644F6C9FFEC720BF60C1610F7DBDF -:10683000C010F40C024CF40B0345F7D5C010B18521 -:106840001805EA0C1510F80B000B12AB2FF8B185E8 -:106850000838CEB55805C1D06E281034C1456E1B1E -:106860000C9C2FFBF01F000C6E4AEECBFFF418932C -:106870002FEA2F4CA36AF01F00090E9B0C9CF01FFF -:1068800000080697E8C8FFFF2FB48F48EE040925DB -:106890000E9CD832800364588002E736800364205F -:1068A000D431149618971694F1DAC002C0902018CB -:1068B0004A19F208032A3009F01F00201894A34651 -:1068C000C3706E955805C091310CF01F001D9935AD -:1068D0008F9C9915992599056E9366255805C0D109 -:1068E000E06B02710E9CF01F0017872C3008189582 -:1068F0009908C038069C1895EDB60000C0C1089BE9 -:106900000A9A0E9CF01F0010089B18930E9C069488 -:10691000F01F000EA156C0C06A035803CEC10A9AE8 -:106920000A9B0E9CF01F00088B0C9903CE5B089C01 -:10693000D83200008003F380800368188002E2A44C -:1069400080036800800366F880036420D4211698D1 -:106950001897109C3008149B4866129A8D08F01FF7 -:1069600000065BFCC0516C085808EFF81A03D822E7 -:1069700000008CC48002F1381498FC197FF0F5DB1C -:10698000C01FF00B1100F7E81008F5E813F8F20843 -:106990000108F00C1100F9E81008F00C141F2FFC8E -:1069A0005EFCD703F5EB101CE08000DCD421F7E996 -:1069B000200EEFDBC28B3015C430AB6BF7EA136BE4 -:1069C000AB6AF7D5D3C2EDD9C28BC5C0A1785CF94B -:1069D000F3D5D2ABE04707FFC770E04607FFC740DB -:1069E000EE06000CE02C03FEF6080644F40907440A -:1069F000F4080646F609064A0807F405004A5C0B47 -:106A0000EDBB0014C050A1775CFA5CFB201C580C55 -:106A1000E08A006FE04C07FFE084009CF7DCD28B3B -:106A2000EDEA11F6EFE61217EE178000F1B7042039 -:106A30000E0A5C0BEDBE001FEFBB001FD822E41B4B -:106A4000000FF40C1200F6061200F7BC03E1F80682 -:106A50001730F7B60201E0460020C0D4EC0C11203C -:106A6000F606094BF40C0A4C184BF406094A20B6FA -:106A70000C17CAABF406094BC640300A20B60C17F7 -:106A8000CA3BE419000FF00C1200F2051200F7BC2B -:106A900003EAF8051730F7B5020AE0450020C0D434 -:106AA000EA0C1120F2050949F00C0A4C1849F005CE -:106AB000094820250A16C8FBF0050949C4203008FA -:106AC00020250A16C88BE419000FE41B000F144B95 -:106AD0001049E04707FFC091580BC381E04607FF0C -:106AE000C3815809C360C3285809C330C2F85C3C4D -:106AF0002FFCF1BC04C0E04C0020C114F8081120A8 -:106B00000E46EE0C0A47F40809491247F40C0A4AEB -:106B1000F6080949124AF60C0A4BC83BF80811203E -:106B2000F9B90000C030F60809490E46EDEA101622 -:106B3000F40C0A4AF3EA1007F60C0A4A300BC71B9A -:106B40001C9BE61B8000300AD8223FFB3FFAD8226C -:106B5000F06B0000EDBE001FEFBB001F300AD82213 -:106B6000F7E9200BE61B8000F9D9C28BE04C07FF48 -:106B70005E1C3FFA3FFB5EFCEE198000F7E9200C3B -:106B8000E08600CAEBCD40E0169CE61C8000BFDB2F -:106B9000BFD9103AF20B1300C0921697129B0E99B0 -:106BA0001497109A0E98EE1C8000F6071614AB7B13 -:106BB000F7EA135BAB7ABFBBF2061614C440AB799D -:106BC000F3E81359AB78BFB9E04707FFC4F00E26CE -:106BD000C120EC051120E0460020C7C2F005094E97 -:106BE000F2050945F0060A48F2060A490A48580E15 -:106BF0005F1E1C48101AF609014BF6061200C0E091 -:106C0000C783EC0E1120F606094BF40E0A4E1C4BFE -:106C1000F406094A0C17E08A0039F4091515AB9AF5 -:106C2000F5EB115AAB9BF7D7D28B184BFC178000B2 -:106C3000EDBA0000F7B701FF0E395F29120A5C0BAD -:106C4000E3CD80E0AB79F3E81359AB78F3E8100EAD -:106C5000F9B60101EE0E1100F9B70001EFBB001FFC -:106C6000F7EA100EF9B70000CB0BBFDBF7EA100E06 -:106C7000C081E04607FFC050F9E7114BE3CD80E04B -:106C80003FFA3FFBE3CD80E05C372FF7F1B704C05C -:106C9000E0470020C114EE081120F40809495F16EE -:106CA000F4070A4A0C4AF6080949F5E9100AF407FC -:106CB0000A4B3007CB3BEE081140F608094914494E -:106CC0005F16F6070A4A0C4A300B3007CA7BE3CD41 -:106CD00080E0F1B604C0F00E1700C040F205094E86 -:106CE000104EF2060A483009580E5F1E1C48C83B79 -:106CF000F4061200F9B70300F9B60300F9BC03006B -:106D0000F7B602E0F406094B300A0C17FE9AFFBEF4 -:106D1000C85B0000EE198000F7E9200CFE96FF2EFC -:106D2000EBCD40E0169CE61C8000BFDBBFD9123BD8 -:106D3000C0721697129B0E991497109A0E98300EE7 -:106D4000EFDBC28BF7DBC014B5ABEDD9C28BC5F05E -:106D5000F3D9C014B5A9E04707FFC2500E26C0F012 -:106D6000EC051120E0460020C352F005094EF20563 -:106D70000945F0060A48F2060A490A48100AF609C7 -:106D8000004BEDBB0015C340F7D7D28B184BF9DA97 -:106D9000C001184EEE1E8000F1BE04201C0A5C0BE0 -:106DA000E3CD80E0B5CBF7EA100EC101E04607FF66 -:106DB000C030E3CD80E0B5C9F3E8100EC071300AF1 -:106DC000FC1B7FF0184BE3CD80E03FFA3FFBE3CDA7 -:106DD00080E0F1B604C0F00E1700C060F205094E65 -:106DE00058085F18104EF2060A483009CC8BFDEEA9 -:106DF000101EA19B5D0A5D0E2FF7E04707FFF9BA51 -:106E00000000F9BB0000F9BE0000CBFB30165807AC -:106E1000CA31B5CB100AF609004B184BE3CD80E020 -:106E2000580B5E6DF60C1501B59CE02C03FF5E3D22 -:106E3000F80C111F1699AB7BBFBBF7EA135BF60C7E -:106E40000A4BA1795E2B5C3B5EFBF8CB0000300C5B -:106E5000C038189B5C4B300A5E0BD401E069041EFD -:106E6000F6081200C170C0C3F00E1120F608094BDD -:106E7000F40E0A4E1C4BF408094A1019C0B8F40865 -:106E80001200F9B80300F7B802E0F408094B300A21 -:106E900010195809E08900305C392FF9E0490036B3 -:106EA000C043300B300AC2682F69F2081120E04954 -:106EB0000020C0B2F408094EF6080948F4090A4A4D -:106EC000F6090A4B104BC088F608094E144E169A64 -:106ED000300BF4090A4AEDBA0000C0921C7EC04192 -:106EE000EDBA0001C0422FFAF7BB02FF5CFC5D0B5C -:106EF0005D0AD802E06803FFEDBA000BF7B800FFA7 -:106F0000100A5C0BF7B903FEE04907FFC055300AD1 -:106F1000FC1BFFE0C0C8EDBB001FF7B90101AB9A35 -:106F2000F5EB115AA17BAB9BF7E9115BA17C5D0BE3 -:106F3000D802103AF20B1300C080A17BA179144B48 -:106F4000124B104B5E0F5EFDA17BFC1CFFE0580A4C -:106F5000F80B13005E8F5EFD1ADE1AD7A17B5F3C33 -:106F6000A1795F375CFCFC1EFFE0580AFC0B1300A4 -:106F7000E08B001D5808FC091300E08B0018580B2B -:106F8000F5BA0000C1501B071B0E583CC0A0581C8E -:106F9000C0335E0F5E1D103AF20B13005E2F5E3D94 -:106FA0001438F60913005E2F5E3D1B07D80A5817E8 -:106FB0005F0C5809F5B800001B071B0E5E0F5EFC46 -:106FC0001ADE1AD7A17B5F3CA1795F375CFCFC1EFF -:106FD000FFE0580AFC0B1300E08B001D5808FC0969 -:106FE0001300E08B0018580BF5BA0000C1501B07C6 -:106FF0001B0E583CC0A0581CC0335E0D5E1F103ADB -:10700000F20B13005E2D5E3F1438F60913005E2D5F -:107010005E3F1B07D80A58175F1C5809F5B80000D7 -:107020001B071B0E5E0D5EFCEBCD40FFF7E9200E4B -:10703000F6071614A97BF7EA137BA97ABDBBE41BFC -:107040003FFFABD7E08000CCE04707FFE08400B50E -:10705000F2061614A979F3E81379A978BDB9E419F1 -:107060003FFFABD6E08000E2E04607FFE08400B2DD -:107070000C17FE37FC01FC1C8000F8031601E9D94F -:10708000C3625CD4E7D4D382E6090644F80501253F -:10709000E6050644EA031502E6090644F80501255B -:1070A000E6050644EA031502E6090644F80501254B -:1070B000E6050644EA031502E6080640E40907402F -:1070C000E609064402045C05A365EBE413E5A3644A -:1070D0005C34F8050145E6040640E4050740E60592 -:1070E000064402045C05EA031502E7E413E3E80240 -:1070F0001502E6080640E4090740E60906440204D2 -:107100005C05A365EBE413E5A3645C34F805014575 -:10711000E6040640E4050740E605064402045C0573 -:10712000EA031502E7E413E3E8021502E60A064063 -:10713000E40B0740E60B064202025C03EDB3001CC1 -:10714000C090A1725CF32017A39AF5EB11DAA39B10 -:10715000C058A58AF5EB11CAA58B5807E08A008BA9 -:10716000E012FF00E8120080E6080640E40907404C -:10717000E4080644E60906480005F00100485C09F9 -:10718000F9D2C10158045C25F4081300F609130074 -:107190005F36F8061700E40A1608F5E3118AE60BD5 -:1071A0001608F7D7D28BEDBE001FEFBB001F0C0AED -:1071B0005C0BE3CD80FFE41B000F144BE08100A7C4 -:1071C000F2061614ABD6E04607FFE08100A4C9E83A -:1071D000E419000F1049E081009AC928A37BF7EA5F -:1071E00013DBA37AF5EB1004E08000A0F604120094 -:1071F000C170C0C3E8051120F604094BF4050A4527 -:107200000A4BF404094A0817C0B8F4041200F9B490 -:107210000300F7B402E0F404094B300A0817A38A0C -:10722000F5EB11EAA38BC11BA379F3E813D9A3787B -:10723000F3E81004C6F0F2041200C170C0C3E80500 -:107240001120F2040949F0050A450A49F0040948E9 -:107250000816C0B8F0041200F9B40300F7B402E055 -:10726000F004094930080816A388F1E911E8A38958 -:10727000CFCA5C372FF7F1B704C0E0470020C154F4 -:10728000EE061120E4070A42E606094C1842E6071A -:107290000A43F4060941F4070A4AF606094C184A5B -:1072A000F6070A4B3000C158EE061120F9B0000075 -:1072B000F9BC0000C050F4060940F606094CE60788 -:1072C0000A423003F4070A411841F6070A4A300B14 -:1072D000E012FF00E8120080E6080646E4090746CF -:1072E000E4080644E60906480C05F00700485C0976 -:1072F0003007F9D2C1010034E2051300C46B1C9BB6 -:10730000E61B8000300AE3CD80FF3FFB300AE3CD6F -:1073100080FFF5EB1004C0901C9BE61B8000EA1B6D -:107320007FF0300AE3CD80FFF1E91015CEF0E9D906 -:10733000C28BE04407FFCE41F1E910C5CE10CE6B01 -:10734000D4311A97202D109C1295149E16931696E0 -:107350005809C4411638E088005AF0081200C0D01D -:10736000F6080946F808094CF00B1120F408094EFC -:10737000F40B0A4BF7E61006F80A1610EBDCC01007 -:10738000EC0A0D02FC091610EA02024BF3E31109A4 -:10739000123BE08800091809123CE08B0005123B03 -:1073A000F3DCEB09F20B010BFDDEC010F60A0D0A4F -:1073B000FDEB110EEA0A024A1C3AE0880009180E99 -:1073C0001C3CE08B00051C3AFDDCEB0EFC0A010ABC -:1073D000300BF4080A4A2FEDD8321639FE9BFFFD18 -:1073E000F2091200C46114385F8B06355F3AF7EA80 -:1073F000100AF20A1800C060FC08010AE6050146FE -:10740000149E0C9B1C9A2FEDD8325808C05130198D -:10741000F2080D08109CF8081200E0810084EC0CC2 -:10742000010BF8031610EBDCC010F6030D0AFC0983 -:107430001610EA0A024AF3EB1109123AE088000931 -:107440001809123CE08B0005123AF3DCEB09141921 -:10745000FDDEC010F2030D02FDE3110EEA02024A46 -:107460001C3AFE98FFB5180E1C3CFE9BFFB1CACB20 -:10747000F20E1120EA090945F609094BE60E0A4306 -:10748000F0090941F4090942F00E0A48F40E0A4ACB -:107490000A48164AF0061610F9D8C010E6060D0480 -:1074A000F4031610089BE7E51103E80C02450635C6 -:1074B000E0880007201B10030638E0880072F5DA28 -:1074C000C0100A13E6060D04F5E51106E80C024C9F -:1074D000089A0C3CE0880007201A10060C38E08857 -:1074E000005AF5EB110B1816F601064A149C1636D5 -:1074F000C0735F0514325F3AEBEA000AC060F8011E -:107500000104F608014B089CE40C010AEC0B01464F -:10751000EC090A4BF4090A4AEC0E09460C4A2FED15 -:10752000D832F0011120F4010A4BF808094CEC089C -:107530000949EC010A41F7E91009F8031610EBDCE0 -:10754000C010E2030D00F20B1610EA00024EF7E144 -:10755000110B163EE0880006180B163CE088002749 -:10756000F60E0101F3D9C010E2030D00F3E1110999 -:10757000EA00024B123BE08800091809123CE08B3C -:107580000005123BF3DCEB09F20B010BF408094E8A -:10759000C4DB0C3CF7BA0B01EDD8EB06CA3B063551 -:1075A000F7BB0B01E7D8EB03C8BB163EF7DCEB0BD0 -:0275B000CD8B81 -:10760000C0080000C0080000C0080000C00800005A -:10761000C0080000C0080000C0080000C00800004A -:10762000C0080000C0080000C0080000C00800003A -:10763000C0080000C0080000C0080000C00800002A -:10764000C0080000C00800000000000000000000AA -:10765000C008000000000000000000000000000062 -:10766000C008000000000000000000000000000052 -:10767000C008000000000000000000000000000042 -:1076800000000000000000000000000000000000FA -:1076900000000000000000000000000000000000EA -:1076A00000000000000000000000000000000000DA -:1076B00000000000000000000000000000000000CA -:1076C00000000000000000000000000000000000BA -:1076D00000000000000000000000000000000000AA -:1076E000000000000000000000000000000000009A -:1076F000000000000000000000000000000000008A -:10770000C0080000300CF01F0012580CF80F1710C2 -:10771000D603301CF01F000E580CF80F1710D603BC -:10772000302CF01F000B580CF80F1710D603303C0C -:10773000F01F0007580CF80F1710D60300000104C3 -:107740004000011280000120C000012E8000A41C16 -:107750000000000000000000000000000000000029 -:107760000000000000000000000000000000000019 -:107770000000000000000000000000000000000009 -:1077800000000000000000000000000000000000F9 -:1077900000000000000000000000000000000000E9 -:1077A00000000000000000000000000000000000D9 -:1077B00000000000000000000000000000000000C9 -:1077C00000000000000000000000000000000000B9 -:1077D00000000000000000000000000000000000A9 -:1077E0000000000000000000000000000000000099 -:1077F0000000000000000000000000000000000089 -:1078000073656E645265706C790000006765745F23 -:10781000646174615F7463705F636D645F63620071 -:107820006765745F7265706C795F686F73745F62AF -:10783000795F6E616D655F63620000006765745F0C -:107840007265706C795F7363616E5F6E6574776F7C -:10785000726B735F636200006765745F7265706C62 -:10786000795F6964785F6E65745F63620000000031 -:107870007365745F706173737068726173655F6361 -:107880006D645F63620000007365745F6B65795FB0 -:10789000636D645F6362000063616C6C5F7265704E -:1078A0006C795F6362000000617661696C5F64619E -:1078B00074615F7463705F636D645F636200000096 -:1078C0007365744D6170536F636B4D6F6465000039 -:1078D0006765745374617274436D6453657100001D -:1078E0007365745F6E65745F636D645F63620000EF -:1078F0007365745F69705F636F6E6669675F636D00 -:10790000645F63620000000073656E644572726FAD -:107910007200000073746172745F736572766572D1 -:107920005F7463705F636D645F6362007370695F4F -:10793000736C61766552656365697665496E74003E -:107940006765745F636C69656E745F737461746599 -:107950005F7463705F636D645F63620073656E6420 -:107960005F646174615F7564705F636D645F6362BF -:1079700000000000636865636B4D7367466F726D4E -:107980006174000073746172745F7363616E5F6E23 -:1079900065745F636D645F6362000000666F756E9F -:1079A00064486F737442794E616D65007365745FEE -:1079B0006B65795F636D645F63620000696E697413 -:1079C0005370690073746172745F636C69656E747F -:1079D0005F746370000000007370695F706F6C6C9F -:1079E000000000006765745F726573756C745F6397 -:1079F0006D645F636200000073746F705F636C6935 -:107A0000656E745F7463705F636D645F63620000D2 -:107A100073746172745F7365727665725F7463709C -:107A2000000000007365745F706173737068726149 -:107A300073655F636D645F63620000007365745F0C -:107A4000726573756C745F636D6400007365745F59 -:107A5000646E735F636F6E6669675F636D645F63B7 -:107A6000620000006765745F73746174655F7463BE -:107A7000705F636D645F6362000000007265715F38 -:107A80007265706C795F686F73745F62795F6E6145 -:107A90006D655F636200000073746172745F636C94 -:107AA00069656E745F7463705F636D645F636200C9 -:107AB000572D5B25735D2057726F6E67207465725A -:107AC0006D696E6174696F6E20696E6465783A25C0 -:107AD00064206E506172616D3A2564206964783A61 -:107AE00025642031366269743A25640A000000007A -:107AF0003078257820000000572D5B25735D2049E4 -:107B00006E646578206F7574206F662072616E6791 -:107B1000653A2025640A00005B25735D20535349B4 -:107B2000443A25730A0000005B25735D20525353CD -:107B3000493A25640A0000005B25735D20454E43E9 -:107B4000543A25640A0000005B25735D205365618B -:107B5000726368696E6720666F7220486F73743A4B -:107B60002069703D3078257820666F756E643D25FC -:107B7000640A00005B25735D20666F756E64486F54 -:107B8000737442794E616D653A20466F756E64205C -:107B9000486F73743A206E616D653D25732069707E -:107BA0003D307825780A00005B25735D20696653B7 -:107BB00074617475733A256420726573756C743AD8 -:107BC00025640A004C69737420436F6D6D616E64A7 -:107BD000732066756C6C210A000000005245434515 -:107BE000495645005452414E534D4954000000003F -:107BF0005B25735D204D6170205B25642C20257012 -:107C00002C2025735D0A00005B25735D20535049CD -:107C100020696E697469616C697A6174696F6E203C -:107C20006661696C65642100572D5B25735D204595 -:107C300072726F7220636F6E6669677572696E67C4 -:107C4000205350490A000000572D5B25735D202505 -:107C5000645D20446973616C6C2E2025642F25645B -:107C600020636D643A25640A00000000572D5B25EF -:107C7000735D2025645D20446973616C6C2E202542 -:107C8000640A00005B25735D3A200000572D5B25D8 -:107C9000735D2025645D204E6F7420666F756E6481 -:107CA00020656E6420636D643A20307825780A0080 -:107CB0005B25735D2025732025640A00572D5B2505 -:107CC000735D20456E64206F6620636D6420706173 -:107CD00072616D73000000005B25735D2064617448 -:107CE00061417661696C3A25640A0000572D5B2575 -:107CF000735D2054544350206E6F7420666F756E10 -:107D00006420666F7220736F636B3A25640A00000B -:107D10005B25735D20736F636B3A25642073746118 -:107D200074653A25640A00005B25735D20737461F5 -:107D300074653A25640A00005B25735D2053746105 -:107D40007274204E6574776F726B205363616E207E -:107D500025640A00572D5B25735D206572723D25F1 -:107D6000640A00005B25735D204C6F6F6B696E6762 -:107D700020666F7220486F73743A206E616D653DA6 -:107D800025730A005B25735D20466F756E6420487D -:107D90006F73743A206E616D653D25732069703D87 -:107DA000307825780A0000005B25735D2053746FDE -:107DB0007020636C69656E7420736F636B3A256421 -:107DC0000A00000055445000544350005B25735D89 -:107DD00020416464723A307825782C20706F727478 -:107DE0003A25642C20736F636B3A25642C207072E3 -:107DF0006F743A25730A0000572D5B25735D205080 -:107E0000726576696F757320636C69656E74202581 -:107E100070206E6F742073746F7070656420210A17 -:107E2000000000005B25735D205374617274204371 -:107E30006C69656E74202573202570205B30782571 -:107E4000782C2025642C2025645D204F4B210A00CE -:107E50005B25735D20537461727420436C69656E99 -:107E600074202573202570205B307825782C202500 -:107E7000642C2025645D204641494C4544210A007C -:107E8000572D5B25735D205374696C6C20636F6E96 -:107E90006E65637465642E2E2E776169740A000026 -:107EA000572D5B25735D20494620646F776E2E2E1B -:107EB0002E776169740A00005B25735D205374613D -:107EC000727420536572766572202573205B256479 -:107ED0002C2025645D204F4B210A0000572D5B2587 -:107EE000735D2053746172742053657276657220DD -:107EF0002573205B25642C2025645D204641494C78 -:107F00004544210A000000005B25735D2025702098 -:107F10006E756D506172616D3D2564207061726D8A -:107F200073546F4368616E67653D25640A00000005 -:107F30005B25735D2025645D206E69663A2570209F -:107F40006C7769705F616464723D307825780A00EF -:107F50005B25735D20257320706172616D733D2513 -:107F6000640A00005B25735D20506173733A20251D -:107F7000732025640A000000572D5B25735D2025C2 -:107F800073203A204661696C656420746F206164D7 -:107F90006420706173737068726173650A00000019 -:107FA000436F6E6E65637420746F206E6574776FB7 -:107FB000726B2E2E2E0000006572723D25640A0041 -:107FC0004F4B0A00572D5B25735D205353494420C6 -:107FD0006C656E206F7574206F662072616E6765C8 -:107FE000000000005B25735D2025730A000000007F -:107FF000572D5B25735D2053656E642053504920D7 -:108000006572726F72210A003D3D3E003C3D3D00AD -:10801000572D5B25735D20556E6B6E6F776E2063F9 -:108020006D6420307825780A00000000572D5B250C -:10803000735D2025645D20436865636B20666F7205 -:108040006D6174206D7367206661696C6564210AD7 -:1080500000000000444F574E000000005550000043 -:1080600049462020207374617475733A2025730A81 -:1080700000000000434F4E4E207374617475733AD4 -:108080002025730A00000000536F636B6574206E37 -:108090002E3A256428256429205B307825785D20D8 -:1080A000257320257320616464723A257320706FF4 -:1080B00072743A25640A00005B2564207470637052 -:1080C0002D25705D2D5374617475733A25640A0013 -:1080D0005B746C63702D25705D2D537461747573C2 -:1080E0003A25640A000000005B757063702D2570EE -:1080F0005D20666C6167733A3078257820206C6F5C -:1081000063616C3A25735B307825785D2D25640AB0 -:108110000000000072656D6F74653A257328307831 -:108120002578292D25640A004E4F0000594553003B -:108130004461746120617661696C3A25730A0000BC -:108140002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D5F -:108150002D2D2D2D2D2D2D2D2D2D2D2D2D2D0A009F -:108160005B25735D205363616E206E6F7420636FB7 -:108170006D706C65746564210A0000005B25735D99 -:10818000204E6574776F726B73206E6F7420666F0C -:10819000756E64210A000000636F756C64206E6F59 -:1081A0007420616C6C6F6361746520616C6C206716 -:1081B0007569206E65742061727261790A00000031 -:1081C000636F756C64206E6F7420616C6C6F63619B -:1081D000746520616C6C20677569206E6574730A24 -:1081E000000000005B25735D202564202D20257391 -:1081F000205B25645D2D202564202D202564202D05 -:1082000020307825780A000D000B000C000A0000D1 -:108210007365745F726573756C745F636D64000081 -:108220008000636C800063988000637E80006398A8 -:108230008000638E80006398800063648000639890 -:10824000800063688000638A800063786174637073 -:108250005F706F6C6C5F636F6E6E00007564705F53 -:10826000737461727400000072656D6F76654E659F -:1082700077436C69656E74436F6E6E0061756470F0 -:108280005F726563765F6362000000006765745328 -:1082900074617465546370006172645F7463705FCD -:1082A00073746F7000000000617463705F636F6EC1 -:1082B0006E5F6572725F6362000000006765744EF6 -:1082C0006577436C69656E74436F6E6E4964000038 -:1082D000617463705F636F6E6E5F636C695F65721C -:1082E000725F636200000000617463705F616363CA -:1082F0006570745F636200007564705F73746172AF -:10830000740000005B25735D20747463703A2570FF -:108310002069643D25642C20747063623D25700AD9 -:1083200000000000572D5B25735D204E6F205661C5 -:108330006C696420636C69656E7420666F7220746A -:108340007463703A25700A005B25735D2025645DB7 -:1083500020747463703A257020747063623A2570DB -:108360002073746174653A2564206C7063623A25E9 -:10837000702073746174653A2564206C6566743A84 -:1083800025642073656E743A25640A00572D5B25B9 -:10839000735D20544350206E6F7420696E69746958 -:1083A000616C697A656420747463703A2570207416 -:1083B0007063623A2570206C7063623A25700A001F -:1083C000572D5B25735D204E6F2056616C696420CC -:1083D000496420666F7220747463703A257020704F -:1083E00063623A25700A00005B25735D2062756642 -:1083F0003A2570206C656E3A25640A00572D5B257E -:10840000735D2054544350205B25705D3A20636FA8 -:10841000756C64206E6F7420616C6C6F6361746541 -:1084200020706275660A0000572D5B25735D20542D -:10843000544350205B25705D3A207564705F73650E -:108440006E642829206661696C65640A000000007A -:108450005B25735D2054544350205B25702D25709F -:108460005D3A20636F6E6E65637420256420256419 -:108470000A0000005B25735D206C6566743D256411 -:10848000206C656E3A25640A000000005B25735D70 -:10849000207463705F7772697465206661696C65CA -:1084A000642025702073746174653A2564206C65BE -:1084B0006E3A2564206572723A25640A0000000055 -:1084C000572D5B25735D2074746370203D3D204EF5 -:1084D000554C4C210A0000005B25735D20747463C9 -:1084E000703A2570207063623A2570206275663A92 -:1084F0002570206C656E3A25640A00005B25735D6B -:1085000020272573270A00005B25735D20506163D7 -:108510006B65742073656E74207063623A257020F9 -:108520006C656E3A2564206475723A2564206C652A -:1085300066743A25640A00005B25735D2054544339 -:1085400050205B25705D3A20636C65616E536F63EC -:108550006B53746174655F63622025640A000000D8 -:108560005B25735D20436C6F73696E672074706365 -:10857000623A2073746174653A30782578206572A8 -:10858000723A25640A0000005B25735D20436C6F1E -:1085900073696E67206C7063623A207374617465EE -:1085A0003A30782578206572723A25640A00000016 -:1085B0005B25735D2046726565696E672070617921 -:1085C0006C6F61642025642D25700A005B25735D46 -:1085D00020436C6F73696E6720747063625B2570F3 -:1085E0005D3A2073746174653A307825782065723D -:1085F000723A25640A000000572D5B25735D204305 -:10860000616E6E6F7420636C6F73652069643A25C8 -:10861000642D2570207075742070656E64696E67B6 -:108620000A0000005B25735D202D2D2D2D2D2D2D95 -:108630002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0A8D -:1086400000000000572D5B25735D2074746370205B -:108650003D204E554C4C210A000000005B25735D07 -:1086600020666C75736820646174613A207470636D -:10867000623A2570206572723A25640A0000000093 -:10868000572D5B25735D2054544350205B25705D4E -:108690003A20636F6E6E656374696F6E20657272E7 -:1086A0006F723A202564206375727249643A2564BA -:1086B0000A00000041626F727420636F6E6E656322 -:1086C00074696F6E0A000000572D5B25735D20549E -:1086D000544350205B25705D3A20636F6E6E656376 -:1086E00074696F6E206572726F723A202564206122 -:1086F00072673A25700A0000572D5B25735D205480 -:10870000544350205B25705D3A2066726565206D8C -:10871000656D6F72790A00005B25735D20554450CA -:1087200020496E7365727420257020736F636B3AF5 -:10873000256420616464723A257320706F72743A04 -:1087400025640A00572D5B25735D20545443502047 -:108750005B2D5D3A20696E76616C6964206D6F6493 -:10876000650A0000572D5B25735D2054544350204B -:108770005B2D5D3A20696E76616C6964206E62756E -:10878000660A0000572D5B25735D2054544350202A -:108790005B2D5D3A20696E76616C69642062756656 -:1087A0006C656E0A00000000572D5B25735D205438 -:1087B000544350205B2D5D3A20636F756C64206ECE -:1087C0006F7420616C6C6F63617465206D656D6F93 -:1087D000727920666F7220747463700A0000000062 -:1087E000572D5B25735D2054544350205B25705DED -:1087F0003A20636F756C64206E6F7420616C6C6FCF -:1088000063617465207063620A0000005B25735D1C -:108810002025732C20757063623A25702025733AE9 -:1088200025640A00572D5B25735D20545443502066 -:108830005B25705D3A2075647020636F6E6E6563B2 -:1088400074206661696C65640A000000572D5B2521 -:10885000735D2054544350205B25705D3A2062695B -:108860006E64206661696C6564206572723D256482 -:1088700020506F727420616C726561647920757329 -:1088800065640A005B25735D2025732C206C6F6383 -:108890003A307825782D25642072656D3A30782538 -:1088A000782D25640A0000005B25735D20416C6C07 -:1088B0006F63207061796C6F61642025642D257071 -:1088C0000A000000572D5B25735D2054544350204F -:1088D0005B25705D3A20636F756C64206E6F742049 -:1088E000616C6C6F63617465207061796C6F616439 -:1088F0000A0000005B25735D205B747063625D2D70 -:108900002570207061796C6F61643A25700A0000EF -:10891000572D5B25735D2054544350205B25705DBB -:108920003A2074637020636F6E6E656374206661B5 -:10893000696C65640A0000005B25735D2042454652 -:108940004F52452042494E4420747463703A25705A -:10895000206C7063623A2570207063623A25700A59 -:1089600000000000572D5B25735D205454435020B8 -:108970005B25705D3A206C697374656E2066616971 -:108980006C65640A00000000572D5B25735D205361 -:108990007461727420736572766572204641494C29 -:1089A0004544210A000000005B25735D20545443B8 -:1089B00050205B25702D25705D3A206E6275663DF6 -:1089C00025642C206275666C656E3D25642C2070D4 -:1089D0006F72743D2564202825732F2573290A00A2 -:1089E0007574726C3A6E3A703A7600002573000026 -:1089F0005B25735D2041524420544350205B257019 -:108A00005D3A20616363657074206E6577205B2535 -:108A1000705D0A005B25735D206C6F63616C3A25A5 -:108A2000642072656D6F74653A2564207374617497 -:108A3000653A25640A0000007061796C6F616420FA -:108A40006E6F74206672656564210000572D5B258A -:108A5000735D2041524420544350205B25705D20BB -:108A60006172673D257020726574726965733D257A -:108A7000642061626F72740A000000005B25735D00 -:108A8000206B656570416C697665436E743A256448 -:108A9000206B6565705F69646C653A25642070655C -:108AA00072736973745F636E743A25640A00000020 -:108AB0005B25735D2041524420544350205B257058 -:108AC0002D25705D206172673D257020726574727E -:108AD0006965733D25642070656E642E636C6F73E9 -:108AE000653A2564206C656E3A25640A0000000032 -:108AF0005B25735D2041524420544350205B257018 -:108B00002D25705D2074727920746F20636C6F73F3 -:108B1000652070656E64696E673A256420657272BF -:108B20003A25642069643A25640A00005B25735D78 -:108B30002041524420544350205B25702D25705D08 -:108B4000206172673D257020726574726965733D9E -:108B500025642070656E642E636C6F73653A2564BE -:108B600020636F6E6E3A25640A000000572D5B2566 -:108B7000735D2041524420544350205B25702D25C5 -:108B8000705D206172673D25702072657472696541 -:108B9000733D25640A0000005B25735D204152444B -:108BA00020544350205B25702D25705D2074727910 -:108BB00020746F20636C6F73652070656E64696EDE -:108BC000673A25640A0000005B25735D206C656EC2 -:108BD0003A25640A000000005B25735D20736F6313 -:108BE0006B3A2564207063623A2570207062756666 -:108BF0003A2570206572723A256420627566537456 -:108C00006F72653A2570206C656E3A25640A000023 -:108C10005B25735D20617463705F726563765F636B -:108C20006220703D4E554C4C206F6E20736F636B0D -:108C30003A2564207063623A25700A00572D5B253F -:108C4000735D206572723D256420703D25700A00B9 -:108C50005B25735D205265636569766564202570C8 -:108C6000206C656E3A25640A000000006174637030 -:108C70005F737461727400007463705F73656E6417 -:108C80005F646174615F70636200000061746370AF -:108C90005F706F6C6C000000617463705F7265637D -:108CA000765F6362000000006172645F7463705FEE -:108CB000737461727400000067657446697273743E -:108CC000436C69656E7400006172645F7463705F09 -:108CD00064657374726F7900636C6F73655F636F43 -:108CE0006E6E000073656E6455647044617461005B -:108CF000696E736572744E6577436C69656E744313 -:108D00006F6E6E0061636B5F726563766564000011 -:108D10007463705F636F6E6E6563745F636200009F -:108D200073656E645463704461746100636C6F7347 -:108D3000655F636F6E6E5F7063620000636C656198 -:108D40006E536F636B53746174655F636200000000 -:108D50007463705F646174615F73656E74000000BA -:108D600061636B416E6446726565446174610000C5 -:108D7000676574417661696C5463704461746142E3 -:108D80007974650066726565744461746100000001 -:108D9000676574546370446174614279746500005E -:108DA00063616C634D657267654C656E0000000021 -:108DB000696E73657274427566000000697341766E -:108DC00061696C5463704461746142797465000038 -:108DD00066726565744461746149647800000000DE -:108DE0005B25735D202570205B25642C25645D0A5E -:108DF00000000000686561644275663D256420746A -:108E000061696C4275663D25640A000025645D2039 -:108E10007063623A2570204275663A202570204CB6 -:108E2000656E3A25640A00005B25735D20205B2592 -:108E3000645D3A206C656E3A2564206964783A2551 -:108E40006420746F743A25640A0000005B25735D2A -:108E500020417661696C61626C6564206461746153 -:108E60003A2025640A000000572D5B25735D2069B8 -:108E70006478427566206F7574206F662072616E2B -:108E800067653A2025640A005B25735D2025702004 -:108E90006964783A25640A00572D5B25735D20428A -:108EA0007566203D3D204E554C4C21005B25735D81 -:108EB0002041636B207063623A2570206C656E3AC6 -:108EC000256420736F636B3A256420646174613A92 -:108ED00025700A005B25735D206765743A25642060 -:108EE00025702025640A00005B25735D206368659A -:108EF000636B3A25642025642025700A0000000079 -:108F00005B25735D2046726565202570206F74684F -:108F1000657220627566202564207461696C3A254B -:108F20006420686561643A25640A0000572D5B255A -:108F3000735D204F76657277726974696E6720621F -:108F40007566666572202570206964783A2564210B -:108F50000A000000572D5B25735D20706275665F07 -:108F6000636F70795F7061727469616C20666169AA -:108F70006C65643A207372633A25702C20647374B4 -:108F80003A25702C206C656E3A25640A00000000BA -:108F9000572D5B25735D2041766F696420746F20C7 -:108FA0004F76657277726974652064617461205BC5 -:108FB00025642D25645D210A000000005B25735D9A -:108FC00020496E736572745B25645D3A2025703AA2 -:108FD00025642D2564205B25642C25645D0A000032 -:108FE000572D5B25735D20536F636B206F75742065 -:108FF0006F662072616E67653A20736F636B3D2503 -:1090000064000000696E736572745F70427566007B -:109010006765745F70427566000000000000E10043 -:1090200008040000000000000F01110110011301ED -:109030000E01110110010F0106000500636D645F50 -:109040007365745F69700000636D645F736574704D -:1090500061737300636D645F7374617274436C69F0 -:1090600000000000466F756E6420486F73743A20EC -:109070006E616D653D25732069703D307825780AF5 -:109080000000000075736167653A206474203C310C -:109090007C303E0A0000000075736167653A2073FA -:1090A000656E64556470205B736F636B5D0A097352 -:1090B0006F636B3A20736F636B6574204E756D62DE -:1090C00065720A00536F636B65743A2025640A0069 -:1090D0005061747465726E547970653A2025640A23 -:1090E0000000000050726F766100000031323334AE -:1090F000353637383930000046696E65546573740B -:10910000000000006F6666004465627567204F4688 -:10911000460A00007072696E740000004465627552 -:10912000672009656E61626C65643A203078257845 -:109130000A000000566572626F736520656E616299 -:109140006C65643A20307825780A000044756D70AB -:109150002009656E61626C65643A20307825780A72 -:1091600000000000504F6F6C6C2009656E61626CEE -:1091700065643A20307825780A00000044656275FD -:1091800067204F4E0A00000075736167653A2064DE -:1091900065627567203C73656374696F6E3E203C41 -:1091A0006C6576656C3E0A0973656374696F6E3A27 -:1091B00020696E69742C20636D2C207370692C20DB -:1091C000746370202C207574696C2C207761726E2A -:1091D0000A096C6576656C20203A203020286F667D -:1091E00066292C203120286F6E292C2032202876E9 -:1091F0006572626F7365290A096F723A206465624D -:109200007567207072696E742F6F6E2F6F66660AB5 -:1092100000000000696E697400000000737069004E -:1092200074637000636D00007574696C0000000069 -:109230007761726E00000000616C6C0044756D70A7 -:1092400020416C6C20427566666572730A000000EE -:1092500075736167653A2064756D7050627566203C -:109260005B736F636B5D0A09736F636B3A20736F97 -:10927000636B6574204E756D6265720A00000000B4 -:109280006E6F6E650000000044656C6574696E6702 -:1092900020574550206B6579730A0000757361672C -:1092A000653A207365746B6579203C6B65795F69FD -:1092B00064782028302D33293E203C6B6579206965 -:1092C0006E206865783E0A09206F723A20736574D3 -:1092D0006B6579206E6F6E650A000000205745505F -:1092E000206B6579206D75737420626520313020A4 -:1092F000285745502D343029206F722032362028CF -:109300005745502D31303429206469676974730AD8 -:1093100000000000776C5F61706920766572736988 -:109320006F6E2076322E372E300A00006661696C2F -:10933000656420746F20676574206D6163206164CB -:1093400064726573730A0000687720616464723A1E -:109350002025730A000000006C696E6B2073746135 -:109360007475733A20000000697020616464723A79 -:10937000202573202D2000006E65746D61736B3A9B -:10938000202573202D200000676174657761793A8C -:109390002025730A00000000697020696E746572F0 -:1093A0006661636520697320646F776E0A00000050 -:1093B00064686370203A2000656E61626C65640ABF -:1093C0000000000064697361626C65640A0000005B -:1093D000444E533A202573202D2000007573616799 -:1093E000653A207374617274436C69203C697061E2 -:1093F0006464723E203C706F72743E203C736F63F5 -:109400006B3E203C7463702830292F7564702831BE -:10941000293E0A00537461727420636C69656E742E -:10942000206F6E206164647220307825782C207063 -:109430006F727420256420736F636B202564206D28 -:109440006F64652025640A00572D5B25735D2053EA -:109450007461727420636C69656E74206F6E207025 -:109460006F727420256420736F636B2025642070F5 -:10947000726F74202564206D6F646520256420461A -:1094800041494C45440A000075736167653A207391 -:1094900074617274537276203C706F72743E203C1B -:1094A000736F636B3E203C7463702830292F7564A2 -:1094B000702831293E0A00005374617274202573AC -:1094C00020736572766572206F6E20706F727420E3 -:1094D000256420736F636B2025640A00572D5B257C -:1094E000735D2053746172742025732073657276E6 -:1094F0006572206F6E20706F727420256420736F08 -:10950000636B202564204641494C45440A00000015 -:1095100075736167653A20736574646E73205B319F -:109520002D325D206161612E6262622E6363632E63 -:109530006464640A0000000053657420444E5320A4 -:1095400073657276657220256420746F2025730A16 -:10955000000000003D3D3E20444E53313A2025732B -:109560000A0000003D3D3E20444E53323A20257310 -:109570000A00000075736167653A20676574486F7B -:109580007374203C686F73746E616D653E0A0000F1 -:1095900075736167653A207770617373203C7373EC -:1095A00069643E203C706173737068726173653EDC -:1095B0000A0000002573203A204661696C6564202A -:1095C000746F20616464207061737370687261737A -:1095D000650A000075736167653A20647061737392 -:1095E000203C737369643E0A000000002573203A32 -:1095F000204661696C656420746F2064656C6574D5 -:109600006520706173737068726173650A00000091 -:1096100075736167653A206970636F6E666967206C -:109620003C69703E203C6E65746D61736B3E203CFE -:10963000676174657761792D69703E0A00000000EA -:1096400020206F72203A206970636F6E6669672010 -:109650006E6F6E652028746F20656E61626C652088 -:1096600044484350290A00005B25735D206E6966FB -:109670003A2570206C7769705F616464723D307860 -:1096800025780A0075736167653A20636F6E6E65B1 -:109690006374203C737369643E0A0000636D645F09 -:1096A000737461727453727600000000636D645FBE -:1096B00064656C70617373004D494D4C4644000005 -:1096C0000A24200024200000617661696C61626CCC -:1096D0006520636F6D6D616E64733A0A000000006F -:1096E000202025730A000000636F756C64206E6F84 -:1096F0007420616C6C6F63617465206669726D774C -:10970000617265206275666665720A00547565202F -:109710004D61722032362032323A30393A353420B7 -:109720003230313300000000776C5F696E69745F1E -:10973000636F6D706C6574655F6362006661696C10 -:10974000656420746F20696E697420776C20636F84 -:109750006E6E206D67720000572D5B25735D205380 -:109760007069206E6F7420696E697469616C697AC2 -:1097700065640A006C696E6B20646F776E2C2072D2 -:10978000656C6561736520646863700A00000000A1 -:109790006C696E6B20646F776E0A00006C696E6B8B -:1097A0002075702C20636F6E6E6563746564207421 -:1097B0006F20222573220A007265717565737469C2 -:1097C0006E672064686370202E2E2E20000000003B -:1097D0004641494C45440A00626F756E6420746FBF -:1097E0002025730A00000000572D5B25735D20497A -:1097F0006E74657266616365206E6F74207570218A -:109800000A0000007363616E00000000636F6E6EFB -:10981000656374007365746B6579000073746174BB -:1098200075730000646562756700000064756D7093 -:10983000427566006970636F6E66696700000000BC -:10984000747463700000000077706173730000002F -:109850006470617373000000676574486F7374000F -:10986000736574444E53000073746172745372765E -:10987000000000007374617274436C6900000000A2 -:1098800073656E645564700041726475696E6F2013 -:109890005769666920537461727475702E2E2E207C -:1098A0005B25735D0A0000006F7574206F66206D84 -:1098B000656D6F72790000006661696C6564207483 -:1098C0006F207072657061726520666F72206669C4 -:1098D000726D7761726520646F776E6C6F61640A78 -:1098E00000000000436F756C64206E6F7420646527 -:1098F0007465637420776C206465766963652C20D9 -:1099000061626F7274696E670A000000496E766169 -:109910006C6964206669726D776172652064617438 -:10992000612C2061626F7274696E670A000000002A -:109930004661696C656420746F2073746172742071 -:10994000776C20696E697469616C697A6174696F9A -:109950006E0A0000312E312E3000000069705F73F6 -:1099600074617475735F63620000000002000000A0 -:1099700000B71B000800000100010000286E756C94 -:109980006C290000253032782D253032782D253095 -:1099900032782D253032782D253032782D25303211 -:1099A00078000000256C752E256C752E256C752EA3 -:1099B000256C75007373696420746F6F206C6F6E13 -:1099C0006720286D6178202564290A00257320000E -:1099D00022257322000000002052535349202564A1 -:1099E0002064426D200000002041642D486F6320F8 -:1099F00000000000202857455020656E6372797082 -:109A000074696F6E290000002028544B495020656E -:109A10006E6372797074696F6E2900002028434369 -:109A20004D5020656E6372797074696F6E29000005 -:109A3000202020002530325820000000256300003F -:109A40006E6F206E65747320666F756E640A000019 -:109A5000496E76616C6964206C656E6774680A0093 -:109A600025642E25642E25642E256400544B495010 -:109A70000000000043434D500000000057455000D7 -:109A8000776C5F636D5F696E6974000073656C6508 -:109A900063745F6E65740000776C5F636F6E6E5FFA -:109AA0006C6F73745F636200776C5F7363616E5F8A -:109AB000636F6D706C6574655F636200776C5F6582 -:109AC00076656E745F636200776C5F6D6564696173 -:109AD0005F636F6E6E65637465645F636200000050 -:109AE0005B25735D20434D3A206F7574206F6620AF -:109AF0006D656D6F72790A005B25735D20434D3A89 -:109B000020636F756C64206E6F7420726567697373 -:109B1000746572206576656E742063620A000000C9 -:109B20005B25735D20434D3A20696E697469616CF1 -:109B3000697A65640A0000005B25735D20434D3A35 -:109B400020636F6E6E656374656420746F20257387 -:109B50000A0000005B25735D20434D3A20636F6E61 -:109B60006E656374206661696C65642C2073636143 -:109B70006E6E696E670A00005B25735D20434D3A87 -:109B800020636F756C64206E6F74207374617274DF -:109B9000207363616E20616674657220636F6E6E00 -:109BA000656374206661696C210A00005B25735D42 -:109BB00020434D3A20646973636F6E6E656374650C -:109BC000640A00005B25735D20434D3A20636F6E8D -:109BD0006E656374696F6E206C6F73742C20736391 -:109BE000616E6E696E670A005B25735D20434D3AB6 -:109BF00020636F756C64206E6F742073746172746F -:109C0000207363616E20616674657220636F6E6E8F -:109C1000656374206C6F7374210A00005B25735DAB -:109C200020434D3A207363616E20636F6D706C65E5 -:109C30007465640A00000000FFFFFFFFFFFF0000E3 -:109C40005B25735D20434D3A20526F616D696E67ED -:109C50002066726F6D207273736920256420746FA3 -:109C60002025640A000000005B25735D20434D3A07 -:109C7000204E6F2063616E64696461746520666F55 -:109C8000756E6420666F7220737369642022257379 -:109C9000220A00005B25735D20434D3A206661690E -:109CA0006C656420746F20636F6E6E6563740A0068 -:109CB0005B25735D20434D3A206661696C656420C5 -:109CC000746F207363616E0A000000005B25735D92 -:109CD00020434D3A20756E68616E646C6564206542 -:109CE00076656E740A000000776C5F636F6E6E5F5E -:109CF0006661696C7572655F636200000000000157 -:109D0000000018500000000B00001854000000096B -:109D1000000018800000000F000018A400000001DF -:109D2000000018E000000001000018E4000000013D -:109D300000001810000000010000181400000001CD -:109D400000001818000000010000181C00000001AD -:109D5000000018200000000100001824000000018D -:109D600000001828000000010000182C000000036B -:109D700000001830000000010000183C0000000145 -:109D8000000018400000000100001844000000011D -:109D900000001848000000010000184C4173736572 -:109DA0007274696F6E2022257322206661696C656A -:109DB00064206174206C696E6520256420696E20C2 -:109DC00025730A002E2E2F7372632F534F4654575C -:109DD0004152455F4652414D45574F524B2F5345D7 -:109DE0005256494345532F4C5749502F6C77697051 -:109DF0002D312E332E322F7372632F636F72652FC6 -:109E0000646863702E630000646863705F6F7074D1 -:109E1000696F6E3A20646863702D3E6F7074696F6D -:109E20006E735F6F75745F6C656E202B2032202B14 -:109E3000206F7074696F6E5F6C656E203C3D2044CE -:109E40004843505F4F5054494F4E535F4C454E006E -:109E5000646863705F6F7074696F6E5F6279746558 -:109E60003A20646863702D3E6F7074696F6E735F23 -:109E70006F75745F6C656E203C20444843505F4FA3 -:109E80005054494F4E535F4C454E00006468637018 -:109E90005F6F7074696F6E5F747261696C65723A3E -:109EA000206468637020213D204E554C4C0000001A -:109EB000646863705F6F7074696F6E5F74726169FC -:109EC0006C65723A20646863702D3E6D73675F6FD6 -:109ED000757420213D204E554C4C0A006468637017 -:109EE0005F6F7074696F6E5F747261696C65723AEE -:109EF00020646863702D3E6F7074696F6E735F6F5E -:109F000075745F6C656E203C20444843505F4F5031 -:109F100054494F4E535F4C454E0A000064686370CD -:109F20005F6F7074696F6E5F73686F72743A2064EC -:109F30006863702D3E6F7074696F6E735F6F7574B8 -:109F40005F6C656E202B2032203C3D2044484350FE -:109F50005F4F5054494F4E535F4C454E0000000038 -:109F6000646863705F6F7074696F6E5F6C6F6E674B -:109F70003A20646863702D3E6F7074696F6E735F12 -:109F80006F75745F6C656E202B2034203C3D20443F -:109F90004843505F4F5054494F4E535F4C454E001D -:109FA0007265706C79207761736E277420667265B4 -:109FB00065640000646863705F6372656174655F07 -:109FC000726571756573743A206E657469662021D7 -:109FD0003D204E554C4C0000646863705F637265B1 -:109FE0006174655F726571756573743A2064686346 -:109FF0007020213D204E554C4C0000006468637079 -:10A000005F6372656174655F726571756573743ADB -:10A0100020646863702D3E705F6F7574203D3D2035 -:10A020004E554C4C00000000646863705F637265BD -:10A030006174655F726571756573743A20646863F5 -:10A04000702D3E6D73675F6F7574203D3D204E55DA -:10A050004C4C0000646863705F6372656174655F97 -:10A06000726571756573743A20636865636B2074FB -:10A07000686174206669727374207062756620630B -:10A08000616E20686F6C64207374727563742064F1 -:10A090006863705F6D736700646863705F64656CAC -:10A0A0006574655F726571756573743A206E657469 -:10A0B000696620213D204E554C4C00006468637059 -:10A0C0005F64656C6574655F726571756573743A1C -:10A0D000206468637020213D204E554C4C000000E8 -:10A0E000646863705F64656C6574655F72657175E3 -:10A0F0006573743A20646863702D3E705F6F757489 -:10A1000020213D204E554C4C0000000064686370D7 -:10A110005F64656C6574655F726571756573743ACB -:10A1200020646863702D3E6D73675F6F75742021C6 -:10A130003D204E554C4C00006E6574696620213DF3 -:10A14000204E554C4C0000007062756620705F6FA9 -:10A150007574207761736E2774206672656564007C -:10A16000646863705F62696E643A206E65746966E4 -:10A1700020213D204E554C4C000000006468637067 -:10A180005F62696E643A206468637020213D204EEE -:10A19000554C4C00726574203D3D2073697A656FA3 -:10A1A000662873747275637420646863705F6D737E -:10A1B0006729202D20444843505F4F5054494F4E4B -:10A1C000535F4C454E000000726574203D3D206495 -:10A1D0006863702D3E6F7074696F6E735F696E5F38 -:10A1E0006C656E002E2E2F7372632F534F4654579B -:10A1F0004152455F4652414D45574F524B2F5345B3 -:10A200005256494345532F4C5749502F6C7769702C -:10A210002D312E332E322F7372632F636F72652FA1 -:10A22000646E732E63000000646E73207365727633 -:10A230006572206F7574206F66206172726179009B -:10A24000646E732073657276657220686173206E28 -:10A250006F20495020616464726573732073657464 -:10A260000000000070627566206D75737420626571 -:10A2700020696E206F6E652070696563650000005F -:10A28000617272617920696E646578206F757420DF -:10A290006F6620626F756E6473000000756E6B6E82 -:10A2A0006F776E20646E735F7461626C6520656E9B -:10A2B0007472792073746174653A00006C6F636125 -:10A2C0006C686F73740000003230382E36372E32CF -:10A2D00032322E3232320000000400040004000248 -:10A2E000002000050002001E002000002E2E2F730B -:10A2F00072632F534F4654574152455F4652414D6A -:10A3000045574F524B2F53455256494345532F4CB7 -:10A310005749502F6C7769702D312E332E322F73A1 -:10A3200072632F636F72652F6D656D702E63000011 -:10A330006D656D705F667265653A206D656D207044 -:10A34000726F7065726C7920616C69676E6564000C -:10A350006D656D705F6D616C6C6F633A20747970C0 -:10A3600065203C204D454D505F4D41580000000098 -:10A370006D656D705F6D616C6C6F633A206D656DBE -:10A38000702070726F7065726C7920616C69676E95 -:10A3900065640000001C002000B0002400140020B0 -:10A3A00000080010025400002E2E2F7372632F53EA -:10A3B0004F4654574152455F4652414D45574F52C3 -:10A3C0004B2F53455256494345532F4C5749502F15 -:10A3D0006C7769702D312E332E322F7372632F6399 -:10A3E0006F72652F6E657469662E6300626F6775A4 -:10A3F0007320706275663A206C656E20213D207472 -:10A400006F745F6C656E20627574206E6578742061 -:10A410003D3D204E554C4C210000000073686F7587 -:10A420006C64206E6F74206265206E756C6C207396 -:10A43000696E636520666972737420213D206C61CA -:10A4400073742100696620666972737420213D204F -:10A450004E554C4C2C206C617374206D75737420B8 -:10A46000616C736F20626520213D204E554C4C007D -:10A470002E2E2F7372632F534F4654574152455F10 -:10A480004652414D45574F524B2F53455256494323 -:10A4900045532F4C5749502F6C7769702D312E330F -:10A4A0002E322F7372632F636F72652F7062756621 -:10A4B0002E630000286820213D204E554C4C292059 -:10A4C000262620287420213D204E554C4C2920283A -:10A4D00070726F6772616D6D65722076696F6C6105 -:10A4E000746573204150492900000000702D3E74AE -:10A4F0006F745F6C656E203D3D20702D3E6C656E07 -:10A5000020286F66206C6173742070627566206904 -:10A510006E20636861696E2900000000696E6372D5 -:10A52000656D656E745F6D61676E697475646520D5 -:10A530003C3D20702D3E6C656E0000006261642021 -:10A5400070627566207479706500000070627566CF -:10A550005F74616B653A20696E76616C6964206234 -:10A5600075660000706275665F74616B653A20699C -:10A570006E76616C6964206461746170747200004D -:10A58000706275665F74616B653A20696E76616CA6 -:10A590006964207062756600646964206E6F74205F -:10A5A000636F707920616C6C2064617461000000DD -:10A5B000706275665F636F70795F706172746961F4 -:10A5C0006C3A20696E76616C696420627566000081 -:10A5D000706275665F636F70795F706172746961D4 -:10A5E0006C3A20696E76616C696420646174617094 -:10A5F00074720000706275665F636F70793A2074E0 -:10A600006172676574206E6F742062696720656E81 -:10A610006F75676820746F20686F6C6420736F7546 -:10A6200072636500705F746F20213D204E554C4C65 -:10A63000000000006F66667365745F746F203C3DB8 -:10A6400020705F746F2D3E6C656E00006F666673E0 -:10A6500065745F66726F6D203C3D20705F66726F3F -:10A660006D2D3E6C656E0000706275665F636F7085 -:10A6700079282920646F6573206E6F7420616C6C7B -:10A680006F77207061636B65742071756575657394 -:10A69000210A0000706275665F667265653A207314 -:10A6A000616E6520747970650000000070627566E7 -:10A6B0005F667265653A20702D3E726566203E20A9 -:10A6C00030000000702D3E746F745F6C656E203D2D -:10A6D0003D20702D3E6C656E202B20712D3E746FD9 -:10A6E000745F6C656E000000702D3E746F745F6C5B -:10A6F000656E203D3D20702D3E6C656E00000000B3 -:10A70000706275665F7265616C6C6F633A20702071 -:10A71000213D204E554C4C00706275665F7265613C -:10A720006C6C6F633A2073616E6520702D3E747996 -:10A730007065000067726F77203C206D61785F75EF -:10A7400031365F7400000000706275665F7265618B -:10A750006C6C6F633A207120213D204E554C4C00AB -:10A76000706275665F616C6C6F633A206261642031 -:10A7700070627566206C617965720000636865635C -:10A780006B20702D3E7061796C6F6164202B20709E -:10A790002D3E6C656E20646F6573206E6F74206F44 -:10A7A000766572666C6F77207062756600000000D7 -:10A7B000504255465F504F4F4C5F42554653495AA1 -:10A7C00045206D75737420626520626967676572E4 -:10A7D000207468616E204D454D5F414C49474E4D98 -:10A7E000454E540072656D5F6C656E203C206D6156 -:10A7F000785F7531365F7400706275665F616C6C8E -:10A800006F633A207062756620712D3E7061796CBD -:10A810006F61642070726F7065726C7920616C6911 -:10A82000676E656400000000706275665F616C6C45 -:10A830006F633A206572726F6E656F7573207479FD -:10A8400070650000706275665F636F707920666185 -:10A85000696C656400000000010203040506070737 -:10A8600007070707070000002E2E2F7372632F5370 -:10A870004F4654574152455F4652414D45574F52FE -:10A880004B2F53455256494345532F4C5749502F50 -:10A890006C7769702D312E332E322F7372632F63D4 -:10A8A0006F72652F7463702E630000007463705FB5 -:10A8B000706362735F73616E653A20616374697679 -:10A8C00065207063622D3E737461746520213D20A4 -:10A8D000434C4F53454400007463705F7063627370 -:10A8E0005F73616E653A2061637469766520706399 -:10A8F000622D3E737461746520213D204C49535490 -:10A90000454E00007463705F706362735F73616EC5 -:10A91000653A20616374697665207063622D3E73C9 -:10A920007461746520213D2054494D452D5741499E -:10A93000540000007463705F706362735F73616ED4 -:10A94000653A207477207063622D3E73746174657C -:10A95000203D3D2054494D452D57414954000000AC -:10A960007463705F62696E643A2063616E206F6E1B -:10A970006C792062696E6420696E207374617465FD -:10A9800020434C4F534544007463705F7265637697 -:10A9900065643A206C656E20776F756C6420777201 -:10A9A0006170207263765F776E640A00756E7365FE -:10A9B0006E74207365676D656E7473206C65616B72 -:10A9C000696E6700756E61636B6564207365676DA2 -:10A9D000656E7473206C65616B696E6700000000C2 -:10A9E0006F6F736571207365676D656E7473206C2E -:10A9F00065616B696E6700007463705F7063625FAE -:10AA000072656D6F76653A207463705F7063627310 -:10AA10005F73616E652829007463705F6C6973747D -:10AA2000656E3A2070636220616C726561647920A2 -:10AA3000636F6E6E65637465640000007463705FBD -:10AA4000736C6F77746D723A2061637469766520F8 -:10AA50007063622D3E737461746520213D20434C08 -:10AA60004F5345440A0000007463705F736C6F7746 -:10AA7000746D723A20616374697665207063622D2B -:10AA80003E737461746520213D204C495354454EFA -:10AA90000A0000007463705F736C6F77746D723AB4 -:10AAA00020616374697665207063622D3E73746102 -:10AAB000746520213D2054494D452D574149540A84 -:10AAC000000000007463705F736C6F77746D723A8E -:10AAD000206D6964646C652074637020213D20746E -:10AAE00063705F6163746976655F706362730000B1 -:10AAF0007463705F736C6F77746D723A20666972FD -:10AB0000737420706362203D3D207463705F6163E5 -:10AB1000746976655F706362730000007463705FD0 -:10AB2000736C6F77746D723A2054494D452D5741BF -:10AB30004954207063622D3E7374617465203D3DFD -:10AB40002054494D452D5741495400007463705FAE -:10AB5000736C6F77746D723A206D6964646C6520F4 -:10AB600074637020213D207463705F74775F70633D -:10AB7000627300007463705F736C6F77746D723A08 -:10AB800020666972737420706362203D3D20746397 -:10AB9000705F74775F706362730000007463705F4E -:10ABA000636F6E6E6563743A2063616E206F6E6CC6 -:10ABB0007920636F6E6E65637465642066726F6D75 -:10ABC00020737461746520434C4F5345440000006A -:10ABD00053594E5F53454E540000000053594E5F89 -:10ABE000524356440000000045535441424C4953DF -:10ABF0004845440046494E5F574149545F31000083 -:10AC000046494E5F574149545F320000434C4F5311 -:10AC1000455F574149540000434C4F53494E47004C -:10AC20004C4153545F41434B0000000054494D4593 -:10AC30005F5741495400000003060C18306078004B -:10AC40008000FAFC8000FC6C8000FD4E8000FDB4AA -:10AC50008000FE368000FD4E8000FE788000FEF809 -:10AC60002E2E2F7372632F534F4654574152455F18 -:10AC70004652414D45574F524B2F5345525649432B -:10AC800045532F4C5749502F6C7769702D312E3317 -:10AC90002E322F7372632F636F72652F7463705F30 -:10ACA000696E2E63000000007063622D3E736E6457 -:10ACB0005F71756575656C656E203E3D20706275CF -:10ACC000665F636C656E286E6578742D3E70290032 -:10ACD0007463705F726563656976653A2076616C4E -:10ACE0006964207175657565206C656E67746800B0 -:10ACF000696E7365672E7020213D204E554C4C00C7 -:10AD0000696E73616E65206F6666736574210000FD -:10AD10007062756620746F6F2073686F72742100A3 -:10AD2000706275665F686561646572206661696CF2 -:10AD3000656400007463705F726563656976653A87 -:10AD4000207365676D656E74206E6F742074726910 -:10AD50006D6D656420636F72726563746C792074C5 -:10AD60006F207263765F776E640A00007463705FB1 -:10AD7000726563656976653A207365676D656E74A3 -:10AD8000206E6F74207472696D6D656420636F72DC -:10AD9000726563746C7920746F206F6F73657120B6 -:10ADA00071756575650A00007463705F726563652F -:10ADB0006976653A207463706C656E203E2072631C -:10ADC000765F776E640A00007463705F7265636516 -:10ADD0006976653A206F6F736571207463706C6576 -:10ADE0006E203E207263765F776E640A000000007A -:10ADF0007463705F696E7075743A2061637469760C -:10AE000065207063622D3E737461746520213D205E -:10AE1000434C4F53454400007463705F696E707516 -:10AE2000743A20616374697665207063622D3E73A5 -:10AE30007461746520213D2054494D452D57414989 -:10AE4000540000007463705F696E7075743A20611D -:10AE50006374697665207063622D3E7374617465F6 -:10AE600020213D204C495354454E00007463705FCF -:10AE7000696E7075743A207063622D3E6E657874E9 -:10AE800020213D2070636220286265666F72652014 -:10AE900063616368652900007463705F696E707533 -:10AEA000743A207063622D3E6E65787420213D20D7 -:10AEB00070636220286166746572206361636865EF -:10AEC000290000007463705F696E7075743A2054D5 -:10AED000494D452D57414954207063622D3E73748E -:10AEE000617465203D3D2054494D452D57414954DD -:10AEF000000000007463705F696E7075743A2070B2 -:10AF000063622D3E737461746520213D20434C4F74 -:10AF1000534544007063622D3E736E645F717565C6 -:10AF200075656C656E203E20300000007063622DF8 -:10AF30003E61636365707420213D204E554C4C008A -:10AF40007463705F696E7075743A207463705F70BB -:10AF50006362735F73616E65282900002E2E2F7364 -:10AF600072632F534F4654574152455F4652414DED -:10AF700045574F524B2F53455256494345532F4C3B -:10AF80005749502F6C7769702D312E332E322F7325 -:10AF900072632F636F72652F7463705F6F75742EA9 -:10AFA00063000000636865636B20746861742066E9 -:10AFB0006972737420706275662063616E20686FB9 -:10AFC0006C6420737472756374207463705F68645A -:10AFD000720000007463705F656E71756575653A27 -:10AFE000207061636B6574206E65656473207061A9 -:10AFF000796C6F61642C206F7074696F6E732C2094 -:10B000006F722053594E2F46494E202870726F6739 -:10B0100072616D6D65722076696F6C617465732005 -:10B0200041504929000000007463705F656E7175BE -:10B030006575653A206C656E20213D2030207C7C52 -:10B0400020617267203D3D204E554C4C2028707287 -:10B050006F6772616D6D65722076696F6C61746582 -:10B0600073204150492900007463705F656E7175EB -:10B070006575653A207062756673206F6E20717514 -:10B08000657565203D3E206174206C656173742098 -:10B090006F6E65207175657565206E6F6E2D656DBF -:10B0A000707479007463705F656E71756575653A6B -:10B0B000206E6F207062756673206F6E20717565EB -:10B0C0007565203D3E20626F7468207175657565F9 -:10B0D0007320656D707479007573656720213D205C -:10B0E0004E554C4C00000000636865636B2074682B -:10B0F0006174206669727374207062756620636182 -:10B100006E20686F6C642074686520636F6D706C6E -:10B11000657465207365676C656E000070627566A6 -:10B120005F686561646572206661696C65640A00C8 -:10B1300046494E20656E71756575656420746F674C -:10B140006574686572207769746820646174610051 -:10B150007A65726F2D6C656E6774682070627566B3 -:10B16000000000007463705F656E71756575653A07 -:10B170002076616C6964207175657565206C656EFB -:10B1800067746800525354206E6F74206578706540 -:10B190006374656420686572652100002E2E2F732C -:10B1A00072632F534F4654574152455F4652414DAB -:10B1B00045574F524B2F53455256494345532F4CF9 -:10B1C0005749502F6C7769702D312E332E322F73E3 -:10B1D00072632F636F72652F7564702E63000000B9 -:10B1E000726562696E64203D3D203000636865636E -:10B1F0006B20746861742066697273742070627564 -:10B20000662063616E20686F6C642073747275636E -:10B2100074207564705F686472000000702D3E7069 -:10B2200061796C6F6164203D3D20697068647200D3 -:10B230002E2E2F7372632F534F4654574152455F42 -:10B240004652414D45574F524B2F53455256494355 -:10B2500045532F4C5749502F6C7769702D312E3341 -:10B260002E322F7372632F636F72652F697076347D -:10B270002F69636D702E6300636865636B2074686B -:10B2800061742066697273742070627566206361F0 -:10B290006E20686F6C642069636D70206D657373D8 -:10B2A0006167650069636D705F696E7075743A20DF -:10B2B0006D6F76696E6720702D3E7061796C6F617D -:10B2C0006420746F2069702068656164657220660F -:10B2D00061696C65640A0000636865636B2074686B -:10B2E0006174206669727374207062756620636190 -:10B2F0006E20686F6C642073747275637420746858 -:10B30000652049434D502068656164657200000006 -:10B3100069636D705F696E7075743A20636F7079E0 -:10B32000696E6720746F206E657720706275662085 -:10B330006661696C65640A0069636D705F696E704F -:10B3400075743A20726573746F72696E67206F72DC -:10B350006967696E616C20702D3E7061796C6F61F8 -:10B3600064206661696C65640A00000043616E27B1 -:10B3700074206D6F7665206F7665722068656164F4 -:10B38000657220696E207061636B65740000000057 -:10B390002E2E2F7372632F534F4654574152455FE1 -:10B3A0004652414D45574F524B2F534552564943F4 -:10B3B00045532F4C5749502F6C7769702D312E33E0 -:10B3C0002E322F7372632F636F72652F697076341C -:10B3D0002F69702E63000000636865636B207468DA -:10B3E000617420666972737420706275662063618F -:10B3F0006E20686F6C64207374727563742069705A -:10B400005F68647200FFFFFFFF00000000000000A3 -:10B410002E2E2F7372632F534F4654574152455F60 -:10B420004652414D45574F524B2F53455256494373 -:10B4300045532F4C5749502F6C7769702D312E335F -:10B440002E322F7372632F636F72652F697076349B -:10B450002F69705F667261672E630000746869739C -:10B46000206E656564732061207062756620696E68 -:10B47000206F6E65207069656365210073616E6978 -:10B48000747920636865636B206C696E6B656420FA -:10B490006C697374000000007072657620213D2095 -:10B4A00069707200707265762D3E6E657874203D0D -:10B4B0003D2069707200000069705F72656173738E -:10B4C0005F70627566636F756E74203E3D20636CBD -:10B4D000656E0000636865636B20667261676D6509 -:10B4E0006E747320646F6E2774206F7665726C6162 -:10B4F000700000006E6F2070726576696F75732042 -:10B50000667261676D656E742C2074686973206D56 -:10B51000757374206265207468652066697273743F -:10B5200020667261676D656E7421000073616E69DB -:10B53000747920636865636B0000000076616C6954 -:10B54000646174655F646174616772616D3A6E65B0 -:10B5500078745F70627566213D4E554C4C0000005A -:10B5600076616C69646174655F646174616772615E -:10B570006D3A646174616772616D20656E64213D2E -:10B58000646174616772616D206C656E00FFFFFF1E -:10B59000FFFFFF002E2E2F7372632F534F46545719 -:10B5A0004152455F4652414D45574F524B2F5345EF -:10B5B0005256494345532F4C5749502F6C77697069 -:10B5C0002D312E332E322F7372632F6E65746966A0 -:10B5D0002F6574686172702E630000006E65746977 -:10B5E000662D3E6877616464725F6C656E206D7570 -:10B5F0007374206265207468652073616D652061D5 -:10B6000073204554484152505F4857414444525F6B -:10B610004C454E20666F722065746861727021001F -:10B620007120213D204E554C4C000000712D3E7084 -:10B6300020213D204E554C4C00000000722D3E70E4 -:10B6400020213D204E554C4C000000006172705F7F -:10B650007461626C655B695D2E71203D3D204E55C5 -:10B660004C4C000069203C204152505F5441424CF8 -:10B67000455F53495A4500006E657469662D3E6802 -:10B6800077616464725F6C656E203D3D204554486F -:10B690004152505F4857414444525F4C454E000070 -:10B6A000636865636B207468617420666972737483 -:10B6B00020706275662063616E20686F6C64207311 -:10B6C0007472756374206574686172705F68647207 -:10B6D000000000006172705F7461626C655B695D9F -:10B6E0002E7374617465203D3D2050454E44494E93 -:10B6F00047206F7220535441424C45006E6F2070BA -:10B7000061636B65742071756575657320616C6C20 -:10B710006F77656421000000000000002E2E2F735B -:10B7200072632F534F4654574152455F4652414D25 -:10B7300045574F524B2F53455256494345532F4C73 -:10B740005749502F6C7769702D706F72742D312EA0 -:10B75000332E322F48442F69662F6E657469662F29 -:10B76000776C69662E6300000A09000052580000D9 -:10B7700054580000FFFFFF740000000001FFFFFFAE -:10B780000000FFFFFFFFFF400000000001FFFFFF80 -:10B7900041505000484D4700312E352E312E370094 -:10B7A000312E352E312E3100312E352E312E3400F2 -:10B7B00080017C7C80017C7480017C7C80017C6ABF -:10B7C00080017DCA80017D7880017D2A80017CD83E -:10B7D00080017C86800185D2800185CA800185CA6E -:10B7E000800185D2800185C2800185C2800185BA31 -:10B7F000800185BA02040B0C121618242C30424822 -:10B80000606C0000322E312E312E310078C40E00D3 -:10B81000352E332E31000000352E332E350000003A -:10B82000352E332E340000008001BF808001BF928E -:10B830008001BFA88001BF5A8001BF668001BFD4CC -:10B840008001BF5A8001BFE08001BF5A8001BF5A0A -:10B850008001BF5A8001BF5A8001BF5A8001BF5A80 -:10B860008001BF5A8001BF5A8001BF5A8001BF5A70 -:10B870008001BF5A8001BF5A8001BF5A8001BF5A60 -:10B880008001BF5A8001BF5A8001BF5A8001BF5A50 -:10B890008001BF5A8001BF5A8001BF5A8001BF5A40 -:10B8A0008001BF5A8001BF5A8001BF5A8001BF5A30 -:10B8B0008001BF5A8001BF5A8001BF5A8001BF5A20 -:10B8C0008001BF5A8001BF5A8001BF5A8001BF5A10 -:10B8D0008001BF5A8001BF5A8001BF5A8001BF5A00 -:10B8E0008001BF5A8001BF5A8001BF5A8001BF5AF0 -:10B8F0008001BF5A8001BF5A8001BF5A8001BF5AE0 -:10B900008001BF5A8001BF5A8001BF5A8001BF5ACF -:10B910008001BF5A8001BF5A8001BF5A8001BF5ABF -:10B920008001BF5A8001BF7C8001C0448001BF5AA2 -:10B930008001C0448001BF5A8001C17C8001BF5A90 -:10B940008001C1708001BF5A8001C1648001BF5A6B -:10B950008001BF5A8001BF5A8001BF5A8001C1AC2B -:10B960008001BF5A8001BF5A8001C1A08001BF5A27 -:10B970008001C1948001BF5A8001BF5A8001BF5A23 -:10B980008001BF5A8001BF5A8001BF5A8001BF5A4F -:10B990008001BF5A8001BF5A8001BF5A8001BF5A3F -:10B9A0008001BF5A8001BF5A8001BF5A8001BF5A2F -:10B9B0008001BF5A8001BF5A8001BF5A8001BF5A1F -:10B9C0008001BF5A8001BF5A8001BF5A8001BF5A0F -:10B9D0008001BF5A8001BF5A8001BF5A8001BF5AFF -:10B9E0008001BF5A8001BF5A8001BF5A8001BF5AEF -:10B9F0008001BF5A8001BF5A8001BF5A8001BF5ADF -:10BA00008001BF5A8001BF5A8001BF5A8001BF5ACE -:10BA10008001BF5A8001BF5A8001BF5A8001BF5ABE -:10BA20008001BF5A8001BF5A8001BF5A8001BF5AAE -:10BA30008001BF5A8001BF5A8001BF5A8001BF5A9E -:10BA40008001BF5A8001BF5A8001BF5A8001BF5A8E -:10BA50008001BF5A8001BF5A8001BF5A8001BF5A7E -:10BA60008001BF5A8001BF5A8001BF5A8001BF5A6E -:10BA70008001BF5A8001BF5A8001BF5A8001BF5A5E -:10BA80008001BF5A8001BF5A8001BF5A8001BF5A4E -:10BA90008001BF5A8001BF5A8001BF5A8001BF5A3E -:10BAA0008001BF5A8001BF5A8001BF5A8001BF5A2E -:10BAB0008001BF5A8001BF5A8001BF5A8001BF5A1E -:10BAC0008001BF5A8001BF5A8001BF5A8001BF5A0E -:10BAD0008001BF5A8001BF5A8001BF5A8001BF5AFE -:10BAE0008001BF5A8001BF5A8001BF5A8001BF5AEE -:10BAF0008001BF5A8001BF5A8001BF5A8001BF5ADE -:10BB00008001BF5A8001BF5A8001BF5A8001BF5ACD -:10BB10008001BF5A8001C02C8001C1588001C02C17 -:10BB20008001C02C8001C1888001BF5A8001C044BF -:10BB30008001BF5A8001C0508001BF5A8001C050AF -:10BB40008001BF5A8001C02C8001BF5A8001C02CE7 -:10BB50008001C0388001C0388001C0388001BF5AE0 -:10BB60008001C02C8001C02C8001C14C8001BF5AD3 -:10BB70008001BF5A8001C1408001BF5A8001BF5A75 -:10BB80008001BF5A8001BF5A8001BF5A8001BF5A4D -:10BB90008001BF5A8001BF5A8001BF5A8001BF5A3D -:10BBA0008001C1348001BF5A8001BF5A8001BF5A51 -:10BBB0008001BF5A8001BF5A8001BF5A8001BF5A1D -:10BBC0008001C1288001BF5A8001BF5A8001BF5A3D -:10BBD0008001BF5A8001BF5A8001BF5A8001BF5AFD -:10BBE0008001BF5A8001BF5A8001BF5A8001BF5AED -:10BBF0008001BF5A8001BF5A8001BF5A8001BF5ADD -:10BC00008001BF5A8001BF5A8001BF5A8001BF5ACC -:10BC10008001BF5A8001BF5A8001BF5A8001BF5ABC -:10BC20008001BF5A8001BF5A8001BF5A8001BF5AAC -:10BC30008001BF5A8001BF5A8001BF5A8001BF5A9C -:10BC40008001BF5A8001BF5A8001BF5A8001BF5A8C -:10BC50008001BF5A8001BF5A8001BF5A8001BF5A7C -:10BC60008001BF5A8001BF5A8001BF5A8001BF5A6C -:10BC70008001BF5A8001BF5A8001BF5A8001BF5A5C -:10BC80008001BF5A8001BF5A8001BF5A8001BF5A4C -:10BC90008001BF5A8001BF5A8001BF5A8001BF5A3C -:10BCA0008001BF5A8001BF5A8001BF5A8001BF5A2C -:10BCB0008001BF5A8001BF5A8001BF5A8001BF5A1C -:10BCC0008001BF5A8001BF5A8001BF5A8001BF5A0C -:10BCD0008001BF5A8001BF5A8001BF5A8001BF5AFC -:10BCE0008001BF5A8001BF5A8001BF5A8001BF5AEC -:10BCF0008001BF5A8001BF5A8001BF5A8001BF5ADC -:10BD00008001BF5A8001BF5A8001BF5A8001BF5ACB -:10BD10008001BF5A8001BF5A8001BF5A8001BF5ABB -:10BD20008001BF5A8001BF5A8001BF5A8001BF5AAB -:10BD30008001BF5A8001BF5A8001BF5A8001BF5A9B -:10BD40008001BF5A8001BF5A8001BF5A8001BF5A8B -:10BD50008001BF5A8001BF5A8001BF5A8001BF5A7B -:10BD60008001BF5A8001BF5A8001BF5A8001C11CA7 -:10BD70008001C1108001BF5A8001C1048001BF5AF7 -:10BD80008001BF5A8001BF5A8001C0F88001C0EC19 -:10BD90008001BF5A8001BF5A8001C0E08001BF5AB4 -:10BDA0008001BF5A8001C0D48001C0C88001C0BCDE -:10BDB0008001C0B08001C0A48001C0988001C08C07 -:10BDC0008001BF5A8001C0808001C0748001BF5AC9 -:10BDD0008001C0688001C05C8001C48E8001C47C89 -:10BDE0008001C46A8001C4588001C4468001C43403 -:10BDF0008001C3928001C3928001C4228001C410DB -:10BE00008001C3FE8001C3EC8001C3DA8001C3C896 -:10BE10008001C3B68001C3A48001C3A48001C4A073 -:10BE20008001C2D48001C2D48001C2D48001C5C0C7 -:10BE30008001C5AE8001C59C8001C2D48001C2D4FE -:10BE40008001C58A8001C2D48001C2D48001C57836 -:10BE50008001C5668001C5548001C5428001C5309E -:10BE60008001C51E8001C50C8001C4FA8001C4E8B0 -:10BE70008001C2D48001C4D68001C4C48001C2D470 -:10BE80008001C2D48001C2D48001C2D48001C2D456 -:10BE90008001C2D48001C2D48001C2D48001C2D446 -:10BEA0008001C2D48001C2D48001C2D48001C2D436 -:10BEB0008001C2D48001C2D48001C2D48001C2D426 -:10BEC0008001C2D48001C2D48001C2D48001C2D416 -:10BED0008001C2D48001C2D48001C2D48001C2D406 -:10BEE0008001C2D48001C2D48001C2D48001C2D4F6 -:10BEF0008001C2D48001C2D48001C2D48001C2D4E6 -:10BF00008001C2D48001C2D48001C2D48001C2D4D5 -:10BF10008001C2D48001C2D48001C2D48001C2D4C5 -:10BF20008001C2D48001C2D48001C2D48001C2D4B5 -:10BF30008001C2D48001C2D48001C2D48001C2D4A5 -:10BF40008001C2D48001C2D48001C2D48001C2D495 -:10BF50008001C2D48001C2D48001C2D48001C2D485 -:10BF60008001C2D48001C2D48001C2D48001C2D475 -:10BF70008001C2D48001C2D48001C2D48001C2D465 -:10BF80008001C2D48001C2D48001C2D48001C2D455 -:10BF90008001C2D48001C2D48001C2D48001C2D445 -:10BFA0008001C2D48001C2D48001C2D48001C2D435 -:10BFB0008001C2D48001C2D48001C2D48001C2D425 -:10BFC0008001C2D48001C2D48001C2D48001C2D415 -:10BFD0008001C2D48001C2D48001C2D48001C2D405 -:10BFE0008001C2D48001C2D48001C2D48001C2D4F5 -:10BFF0008001C2D48001C2D48001C2D48001C2D4E5 -:10C000008001C2D48001C2D48001C2D48001C2D4D4 -:10C010008001C4B28001EFCA8001EFCE8001EF7AC7 -:10C020008001EF7A8001EF828001EF8A8001EF9238 -:10C030008001EF9A8001EFA28001EFAA8001EFB2A8 -:10C040008001EFBA8001EFC28001EFD68001F96074 -:10C050008001F93E8001F9CC8001F8A68001F9BE8B -:10C060008001F91C8001F8A68001F8E28001F8A6A1 -:10C070008001F8A68001F8A68001F8A68001F8A644 -:10C080008001F8A68001F8A68001F8A68001F8A634 -:10C090008001F8A68001F8A68001F8A68001F8A624 -:10C0A0008001F8A68001F8A68001F8A68001F8A614 -:10C0B0008001F8A68001F8A68001F8A68001F8A604 -:10C0C0008001F8A68001F8A68001F8A68001F8A6F4 -:10C0D0008001F8A68001F8A68001F8A68001F8A6E4 -:10C0E0008001F8A68001F8A68001F8A68001F8A6D4 -:10C0F0008001F8A68001F8A68001F8A68001F8A6C4 -:10C100008001F8A68001F8A68001F8A68001F8A6B3 -:10C110008001F8A68001F8A68001F8A68001F8A6A3 -:10C120008001F8A68001F8A68001F8A68001F8A693 -:10C130008001F8A68001F8A68001F8A68001F8A683 -:10C140008001F8A68001F8A68001F8C08001FA58A5 -:10C150008001F8F08001F8F08001F90E8001F8F01C -:10C160008001F8F08001F8F08001F8F08001F8F02B -:10C170008001F8F08001F8F08001F8F08001F8F01B -:10C180008001F8F08001F90E8001F8F08001F8F0EC -:10C190008001F8F08001F8F08001F8F08001F8F0FB -:10C1A0008001F8F08001FA488001F8F08001F8F091 -:10C1B0008001F8F08001F8F08001F8F08001F8F0DB -:10C1C0008001F8F08001F8F08001F8F08001F8F0CB -:10C1D0008001F8F08001F8F08001F8F08001F8F0BB -:10C1E0008001F8F08001F8F08001F8F08001F8F0AB -:10C1F0008001F8F08001F8F08001F8F08001F8F09B -:10C200008001F8F08001F8F08001F8F08001F8F08A -:10C210008001F8F08001F8F08001F8F08001F8F07A -:10C220008001F8F08001F8F08001F8F08001F8F06A -:10C230008001F8F08001F8F08001F8F08001F8F05A -:10C240008001F8F08001F8F08001F8F08001F8F04A -:10C250008001F8F08001F8F08001F8F08001F8F03A -:10C260008001F8F08001F8F08001F8F08001F8F02A -:10C270008001F8F08001F8F08001F8F08001F8F01A -:10C280008001F8F08001F8F08001F8F08001F8F00A -:10C290008001F8F08001F8F08001F8F08001F8F0FA -:10C2A0008001F8F08001F8F08001F8F08001F8F0EA -:10C2B0008001F8F08001F8F08001F8F08001F8F0DA -:10C2C0008001F8F08001F8F08001F8F08001F8F0CA -:10C2D0008001F8F08001F8F08001F8F08001F8F0BA -:10C2E0008001F8F08001F8F08001F8F08001F8F0AA -:10C2F0008001F8F08001F8F08001F8F08001F8F09A -:10C300008001F8F08001F8F08001F8F08001F8F089 -:10C310008001F8F08001F8F08001F8F08001F8F079 -:10C320008001F8F08001F8F08001F8F08001F8F069 -:10C330008001F8F08001F8F08001F8F08001F8F059 -:10C340008001F8F08001F8F08001F8F08001F8F049 -:10C350008001F90E8001FA348001F8F08001F90EB5 -:10C360008001F8F08001F8F08001F8F08001F8F029 -:10C370008001F8F08001F8F08001F8F08001F90EFA -:10C380008001F8F08001F8F08001FA2C8001FA2495 -:10C390008001FA1C8001FA148001FA0C8001FA0471 -:10C3A0008001FA408001F8F08001FA5057455F495A -:10C3B0004E445F38303231315F434F4E4E45435427 -:10C3C0004544000057455F494E445F3830323131B3 -:10C3D0005F444953434F4E4E454354494E47000036 -:10C3E00057455F494E445F38303231315F494253DF -:10C3F000535F444953434F4E4E4543544544000018 -:10C40000332E312E322E312E34000000352E3233B1 -:10C4100000000000352E32322E320000352E32322E -:10C420002E310000352E322E39000000352E3138E5 -:10C430002E310000352E31382E320000352E3232AA -:10C440002E340000352E32342E320000352E323498 -:10C450002E310000352E31312E310000352E322E96 -:10C4600032000000352E31362E320000352E3136A6 -:10C470002E310000312E312E312E323200000000DC -:10C48000352E322E31392E3500000000352E322E59 -:10C4900031392E3400000000352E322E31392E3342 -:10C4A00000000000352E322E31392E3200000000FF -:10C4B000352E322E31392E3100000000352E322E2D -:10C4C00031000000352E31312E320000352E313151 -:10C4D0002E330000352E31312E340000352E31310F -:10C4E0002E350000352E31312E360000352E3131FB -:10C4F0002E380000352E31312E37000073736964F9 -:10C500000000000070736B004A756E6B41500000B4 -:10C5100057534300656170005746412D53696D7054 -:10C520006C65436F6E6669672D456E726F6C6C65E6 -:10C53000652D312D300000006964656E7469747971 -:10C54000000000006E7277696669000064656661CC -:10C55000756C740057455F494E445F383032313155 -:10C560005F444953434F4E4E4543544544000000F9 -:10C5700057455F494E445F50414952574953455FC3 -:10C580004D49435F4552524F5200000057455F49A5 -:10C590004E445F47524F55505F4D49435F4552529D -:10C5A0004F52000057455F494E445F43414E444956 -:10C5B000444154455F4C495354000000494E4143A7 -:10C5C0005449564500000000444953434F4E4E45E0 -:10C5D00043544544000000005343414E4E494E47EA -:10C5E000000000004153534F43494154494E470016 -:10C5F0004153534F43494154454400003457415936 -:10C600005F48414E445348414B45000047524F5507 -:10C61000505F48414E445348414B4500434F4D50B5 -:10C620004C45544544000000554E4B4E4F574E006C -:10C630004354524C2D4556454E542D5445524D4968 -:10C640004E4154494E47202D207369676E616C201E -:10C650002564207265636569766564007769726533 -:10C660006400000043616E63656C6C696E672061F5 -:10C67000757468656E7469636174696F6E2074693E -:10C680006D656F75740000005750413A2045415068 -:10C690004F4C2070726F63657373696E6720636FB0 -:10C6A0006D706C657465000043616E63656C6C69E8 -:10C6B0006E67207363616E207265717565737400B7 -:10C6C00052534E3A207573696E672049454545209F -:10C6D0003830322E3131692F44392E3000000000BD -:10C6E0005750413A207573696E672049454545208A -:10C6F0003830322E3131692F44332E3000000000A3 -:10C700005750413A204661696C656420746F20700F -:10C7100061727365205750412049452066726F6DE4 -:10C72000206173736F63696174696F6E20696E66EF -:10C730006F0000005750413A2044726976657220BC -:10C74000757365642064697361626C6564206772E7 -:10C750006F75702063697068657220307825782065 -:10C76000286D61736B203078257829202D20726523 -:10C770006A656374000000005750413A20447269B2 -:10C7800076657220757365642064697361626C6597 -:10C790006420706169727769736520636970686588 -:10C7A00072203078257820286D61736B20307825D1 -:10C7B0007829202D2072656A656374005750413ACC -:10C7C00020447269766572207573656420646973AC -:10C7D00061626C6564206B6579206D616E6167656F -:10C7E0006D656E74203078257820286D61736B201C -:10C7F0003078257829202D2072656A6563740000E1 -:10C800005750413A207573696E672047544B204357 -:10C81000434D50005750413A207573696E67204769 -:10C82000544B20544B4950005750413A207573697E -:10C830006E672047544B205745503130340000007C -:10C840005750413A207573696E672047544B205703 -:10C8500045503430000000005750413A207573694C -:10C860006E672050544B2043434D50005750413A7F -:10C87000207573696E672050544B20544B4950000B -:10C880005750413A207573696E672050544B204EC3 -:10C890004F4E45005750413A207573696E67204BE3 -:10C8A00045595F4D474D54203830322E31580000E5 -:10C8B0005750413A207573696E67204B45595F4D5B -:10C8C000474D54205750412D50534B005750413A3B -:10C8D000207573696E67204B45595F4D474D542055 -:10C8E0005750412D4E4F4E45000000005750413AE1 -:10C8F000204661696C656420746F2073656C6563A4 -:10C9000074205750412F52534E0000004661696C0D -:10C91000656420746F20706172736520746865208F -:10C92000636F6E66696775726174696F6E206669A0 -:10C930006C652027257327202D2065786974696E22 -:10C94000670000005265636F6E6669677572617497 -:10C95000696F6E20636F6D706C65746564000000B4 -:10C9600053657474696E672061757468656E746967 -:10C97000636174696F6E2074696D656F75743A20B8 -:10C98000256420736563202564207573656300004A -:10C9900053657474696E67207363616E207265718C -:10C9A000756573743A2025642073656320256420BF -:10C9B000757365630000000041757468656E746985 -:10C9C000636174696F6E20776974682025303278EE -:10C9D0003A253032783A253032783A253032783A72 -:10C9E000253032783A253032782074696D656420BC -:10C9F0006F75742E00000000547279696E672074A0 -:10CA00006F206173736F63696174652077697468FF -:10CA100020253032783A253032783A253032783A4B -:10CA2000253032783A253032783A2530327820284D -:10CA3000535349443D2725732720667265713D2570 -:10CA400064204D487A290000547279696E67207419 -:10CA50006F206173736F63696174652077697468AF -:10CA60002053534944202725732700004173736FD7 -:10CA700063696174696F6E20726571756573742086 -:10CA8000746F2074686520647269766572206661CF -:10CA9000696C6564000000007770615F7375707089 -:10CAA0006C6963616E742076302E352E31300A4306 -:10CAB0006F7079726967687420286329203230307A -:10CAC000332D323030382C204A6F756E69204D611D -:10CAD0006C696E656E203C6A4077312E66693E2037 -:10CAE000616E6420636F6E7472696275746F7273C5 -:10CAF00000000000546869732070726F6772616D86 -:10CB0000206973206672656520736F667477617241 -:10CB1000652E20596F752063616E2064697374728D -:10CB2000696275746520697420616E642F6F72206C -:10CB30006D6F646966792069740A756E6465722028 -:10CB4000746865207465726D73206F662074686503 -:10CB500020474E552047656E6572616C20507562A6 -:10CB60006C6963204C6963656E73652076657273CA -:10CB7000696F6E20322E0A0A416C7465726E6174A0 -:10CB80006976656C792C207468697320736F66749C -:10CB900077617265206D61792062652064697374C4 -:10CBA0007269627574656420756E6465722074685C -:10CBB00065207465726D73206F66207468650A4223 -:10CBC0005344206C6963656E73652E205365652040 -:10CBD000524541444D4520616E6420434F505949B0 -:10CBE0004E4720666F72206D6F72652064657461B8 -:10CBF000696C732E0A0000002530325800000000D6 -:10CC00008003C4FC80024A908002490000000010AA -:10CC100000000014000000000000002000000000E0 -:10CC20008003D3EC80024DF0800248880000006051 -:10CC300000000000000000000000000100000000F3 -:10CC40008003D3F880024DCC800248280000000009 -:10CC500000000000000000000000000000000000D4 -:10CC60008003C50480024D00800248C4000000001B -:10CC700000000000000000000000000000000001B3 -:10CC80008003D4008002408C800247A8000000008E -:10CC90000000000000000000000000000000000094 -:10CCA0008003D40880023F448002467C00000000DC -:10CCB0000000000000000000000000000000000074 -:10CCC0008003D41480023F188002466C00000000EC -:10CCD0000000000000000000000000000000000054 -:10CCE0008003D42080023EEC8002465C00000000FD -:10CCF0000000000000000000000000000000000034 -:10CD00008003D42880023CA4800244740000000008 -:10CD10000000000000000000000000000000000013 -:10CD20008003C51480024B9080024B00000000007D -:10CD300000000000000000000000000000000000F3 -:10CD40008003C53880024A908002490000000068D4 -:10CD50000000006C00000000000000000000000067 -:10CD60008003D43480024A908002490000000070A1 -:10CD7000000000740000000000000000000000003F -:10CD80008003D44880024A90800249000000007865 -:10CD90000000007C000000100000002000000001E6 -:10CDA0008003D45080024A90800249000000008035 -:10CDB00000000084000000000000000000000000EF -:10CDC0008003D45480024A90800249000000008809 -:10CDD0000000008C000000000000000000000001C6 -:10CDE0008003D46080024A908002490000000090D5 -:10CDF0000000000000000000000000000000000033 -:10CE00008003D46880024A908002490000000094A8 -:10CE10000000000000000000000000000000000012 -:10CE20008003D47080024A9080024900000000987C -:10CE300000000000000000000000000000000000F2 -:10CE40008003D47C80024A90800249000000009C4C -:10CE500000000000000000000000000000000000D2 -:10CE60008003D48880024A9080024900000000A01C -:10CE700000000000000000000000000000000001B1 -:10CE80008003D49C80024A9080024900000000A4E4 -:10CE90000000000000000000000000000000000092 -:10CEA0008003D4A480024A9080024900000000A8B8 -:10CEB0000000000000000000000000000000000072 -:10CEC0008003D4B480024A9080024900000000AC84 -:10CED0000000000000000000000000000000000052 -:10CEE0008003D4C880024A9080024900000000B04C -:10CEF0000000000000000000000000000000000032 -:10CF00008003D4D480024A9080024900000000B41B -:10CF10000000000000000000000000000000000011 -:10CF20008003D4E080024A9080024900000000B8EB -:10CF300000000000000000000000000000000000F1 -:10CF40008003D4F080024A9080024900000000BCB7 -:10CF500000000000000000000000000000000000D1 -:10CF60008003D50080024A9080024900000000C082 -:10CF700000000000000000000000000000000001B0 -:10CF80008003D51480024A9080024900000000C44A -:10CF90000000000000000000000000000000000091 -:10CFA0008003D52080024A9080024900000000C81A -:10CFB0000000000000000000000000000000000071 -:10CFC0008003D53080024A9080024900000000CCE6 -:10CFD0000000000000000000000000000000000051 -:10CFE0008003D54480024A9080024900000000D4AA -:10CFF0000000000000000000000000000000000031 -:10D000008003D54C80024A9080024900000000D87D -:10D010000000000000000000000000000000000010 -:10D020008003D55480024A9080024900000000DC51 -:10D0300000000000000000000000000000000000F0 -:10D040008003D55C80024A9080024900000000E025 -:10D0500000000000000000000000000000000001CF -:10D060008003D56080024A9080024900000000E8F9 -:10D0700000000000000000000000000000000000B0 -:10D080008003D56C80024A9080024900000000ECC9 -:10D090000000000000000000000000000000000090 -:10D0A0008003D65C80024DF080024888000000E4D6 -:10D0B0000000000000000000000000000000000070 -:10D0C0008003D57480024DF080024888000000F093 -:10D0D0000000000000000000000000000000000050 -:10D0E0008003D58080024A78800244580000000006 -:10D0F000000000000000000000000000000000012F -:10D100008003D58C80024A608002443C000000000D -:10D11000000000000000000000000000000000010E -:10D120008003D59880024A48800244200000000015 -:10D1300000000000000000000000000000000001EE -:10D140008003D5A480024A3080024404000000001D -:10D1500000000000000000000000000000000001CE -:10D160008003D5B080024DF0800248880000014461 -:10D1700000000000000000000000000000000000AF -:10D180008003D5C080024DF0800248880000000C6A -:10D19000000000000000000000000000000000008F -:10D1A0008003D5CC80024DF0800248880000017CCD -:10D1B000000000000000000000000000000000006F -:10D1C0008003D5DC80024A90800249000000018083 -:10D1D000000000000000000000000000000000004F -:10D1E0008003D5E880024DF0800248880000019C51 -:10D1F000000000000000000000000000000000002F -:10D200008003D5F880024DF0800248880000018438 -:10D21000000000000000000000000001000000000D -:10D220008003D60080024DF0800248880000006430 -:10D2300000000000000000000000000200000000EC -:10D240008003D60880024DF0800248880000014823 -:10D2500000000000000000000000000100000000CD -:10D260008003D62080024DF080024888000001949F -:10D2700000000000000000000000000100000000AD -:10D280008003D62C80024A9080024900000001A051 -:10D29000000000000000000000000000000000008E -:10D2A0008003D63480024DF0800248880000019847 -:10D2B000000000000000000000000001000000006D -:10D2C0008003D63C80024DF0800248880000014C6B -:10D2D000000000000000000000000001000000004D -:10D2E0008003D64880024DF080024888000001A4E7 -:10D2F00000000000000000000000271000000000F7 -:10D300002A0000004F50454E000000005348415293 -:10D31000454400004C454150000000005745503145 -:10D320003034000057455034300000005750412D34 -:10D3300045415000494545453830323158000000DC -:10D340005750410052534E005750413200000000E8 -:10D3500025734F50454E00002573534841524544B4 -:10D360000000000025734C454150000025734343E5 -:10D370004D5000002573544B49500000257357450C -:10D3800050313034000000002573574550343000D0 -:10D3900025734E4F4E45000025735750412D505375 -:10D3A0004B00000025735750412D454150000000AF -:10D3B000257349454545383032315800257357505B -:10D3C000412D4E4F4E45000025735750410000003F -:10D3D000257352534E0000007765705F6B657925A9 -:10D3E0006400000025732573000000007363616E04 -:10D3F0005F73736964000000627373696400000006 -:10D4000070726F746F0000006B65795F6D676D748B -:10D4100000000000706169727769736500000000A8 -:10D4200067726F7570000000617574685F616C678A -:10D4300000000000616E6F6E796D6F75735F6964D7 -:10D44000656E74697479000065617070736B0000BB -:10D450006E61690070617373776F72640000000021 -:10D4600063615F636572740063615F70617468001B -:10D47000636C69656E745F6365727400707269765F -:10D480006174655F6B657900707269766174655F60 -:10D490006B65795F706173737764000064685F66C1 -:10D4A000696C65007375626A6563745F6D6174634E -:10D4B00068000000616C747375626A6563745F6D07 -:10D4C000617463680000000063615F6365727432B9 -:10D4D0000000000063615F7061746832000000004A -:10D4E000636C69656E745F6365727432000000007E -:10D4F000707269766174655F6B6579320000000057 -:10D50000707269766174655F6B6579325F706173A3 -:10D510007377640064685F66696C653200000000C0 -:10D520007375626A6563745F6D617463683200006D -:10D53000616C747375626A6563745F6D617463684E -:10D5400032000000706861736531000070686173BB -:10D5500065320000706373630000000070696E0044 -:10D56000656E67696E655F69640000006B65795F71 -:10D57000696400006561706F6C5F666C6167730061 -:10D580007765705F6B657930000000007765705FCC -:10D590006B657931000000007765705F6B657932EB -:10D5A000000000007765705F6B6579330000000054 -:10D5B0007765705F74785F6B6579696478000000E7 -:10D5C0007072696F72697479000000006561705F44 -:10D5D000776F726B61726F756E6400007061635F6C -:10D5E00066696C6500000000667261676D656E7447 -:10D5F0005F73697A650000006D6F6465000000006C -:10D600007573655F7770730070726F6163746976AC -:10D61000655F6B65795F63616368696E67000000D1 -:10D6200064697361626C65640000000069645F7323 -:10D6300074720000706565726B6579006D6978655C -:10D64000645F63656C6C00006672657175656E631E -:10D6500079000000888E000077696669656E6769E9 -:10D660006E65000057694669456E67696E65000022 -:10D670008003D6588003D664800254C880025420A8 -:10D6800080024F98800252E0800253E8800254A446 -:10D690000000000080024F9A800252C880024F941E -:10D6A00080024F96800252B08002529880024F9CB6 -:10D6B00080024F9E8002523C800251E0800251D491 -:10D6C000800251AC00000000000000008002518088 -:10D6D00080024FF480024FD00000000000000000E4 -:10D6E000000000000000000000000000000000003A -:10D6F000000000000000000080024FA08002564E93 -:10D700008002564A80025646800256408002563CAD -:10D7100080025636800256328002562C80025626EF -:10D72000800256928002568C800256888002568271 -:10D730008002567C80025676800256728002566CB9 -:10D740008002566680025B3480025C0880025BE0E7 -:10D7500080025BBA80025BA080025B3480025B3493 -:10D7600080025B3480025DC280025E3A80025E12FB -:10D7700080025D8E80025CC280025AF680025DF4F7 -:10D7800080025DCE800268DC80026AA280026A00AC -:10D7900080026904800268F2800269EE800268DC1F -:10D7A000800268DC800268E8800268E8800268E83D -:10D7B000696E76616C696461746500004354524C13 -:10D7C0002D4556454E542D4541502D535543434507 -:10D7D0005353204541502061757468656E746963C8 -:10D7E0006174696F6E20636F6D706C657465642021 -:10D7F0007375636365737366756C6C7920286261F9 -:10D80000736564206F6E206C6F776572206C617930 -:10D810006572207375636365737329004354524CBA -:10D820002D4556454E542D4541502D5355434345A6 -:10D830005353204541502061757468656E74696367 -:10D840006174696F6E20636F6D706C6574656420C0 -:10D850007375636365737366756C6C7900000000A3 -:10D860004354524C2D4556454E542D4541502D465E -:10D8700041494C55524520454150206175746865B9 -:10D880006E7469636174696F6E206661696C65644A -:10D8900000000000494E495449414C495A45000096 -:10D8A0004541503A206D6F7265207468616E202585 -:10D8B000642061757468656E7469636174696F6E04 -:10D8C00020726F756E6473202D2061626F72740018 -:10D8D0004354524C2D4556454E542D4541502D4EE6 -:10D8E0004F54494649434154494F4E2000000000DF -:10D8F0004354524C2D4556454E542D4541502D53C1 -:10D900005441525445442045415020617574686526 -:10D910006E7469636174696F6E207374617274658B -:10D92000640000004745545F4D4554484F44000093 -:10D930004541503A204661696C656420746F2069E6 -:10D940006E697469616C697A6520454150206D6526 -:10D9500074686F643A2076656E646F722025752056 -:10D960006D6574686F642025752028257329000073 -:10D970004354524C2D4556454E542D4541502D4D46 -:10D980004554484F44204541502076656E646F727F -:10D99000202575206D6574686F6420257520282505 -:10D9A00073292073656C656374656400454150207C -:10D9B0006465696E697400008002794480027ADAD5 -:10D9C00080027B5880027BA280027CC880027CD2CD -:10D9D00080027AC45750413A20544B495020636F1B -:10D9E000756E7465726D656173757265732073749D -:10D9F0006F707065640000004173736F63696174D8 -:10DA0000656420746F2061206E6577204253533A1D -:10DA10002042535349443D253032783A25303278FC -:10DA20003A253032783A253032783A253032783A11 -:10DA300025303278000000004173736F63696174B0 -:10DA40006564207769746820253032783A25303251 -:10DA5000783A253032783A253032783A25303278A3 -:10DA60003A253032780000005750413A20342D5783 -:10DA700061792048616E647368616B6520666169D5 -:10DA80006C6564202D207072652D73686172656409 -:10DA9000206B6579206D617920626520696E636F06 -:10DAA00072726563740000004354524C2D45564514 -:10DAB0004E542D444953434F4E4E45435445442004 -:10DAC0002D20446973636F6E6E656374206576659F -:10DAD0006E74202D2072656D6F7665206B6579738D -:10DAE000000000004D69636861656C204D4943206A -:10DAF0006661696C757265206465746563746564DC -:10DB000000000000544B495020636F756E746572BD -:10DB10006D65617375726573207374617274656489 -:10DB200000000000000000080000000600000006E1 -:10DB3000496E646578202F204141202F20504D4BA5 -:10DB40004944202F2065787069726174696F6E2076 -:10DB500028696E207365636F6E647329202F206FB0 -:10DB600070706F7274756E69737469630A00000077 -:10DB7000256420253032783A253032783A25303203 -:10DB8000783A253032783A253032783A2530327872 -:10DB9000200000002025642025640A00504D4B2001 -:10DBA0004E616D650000000052534E3A207374615F -:10DBB0007274696E67207072652D61757468656E28 -:10DBC0007469636174696F6E2077697468202530A9 -:10DBD00032783A253032783A253032783A25303268 -:10DBE000783A253032783A253032780052534E3A1E -:10DBF0002070726F63657373696E6720504D4B536D -:10DC0000412063616E646964617465206C6973743A -:10DC10000000000052534E3A206E6F7420696E204F -:10DC20007375697461626C652073746174652066D4 -:10DC30006F72206E6577207072652D6175746865EE -:10DC40006E7469636174696F6E00000052534E3ADE -:10DC500020504D4B53412063616E6469646174656B -:10DC600020253032783A253032783A253032783AE9 -:10DC7000253032783A253032783A253032782073A0 -:10DC8000656C656374656420666F72207072652DC3 -:10DC900061757468656E7469636174696F6E0000A4 -:10DCA00052534E3A20504D4B53412063616E64698C -:10DCB0006461746520253032783A253032783A250F -:10DCC0003032783A253032783A253032783A253079 -:10DCD000327820646F6573206E6F74206E656564A2 -:10DCE000207072652D61757468656E746963617406 -:10DCF000696F6E20616E796D6F72650052534E3A96 -:10DD0000206E6F206D6F72652070656E64696E673E -:10DD100020504D4B53412063616E646964617465AA -:10DD20007300000052534E3A2061646465642050D1 -:10DD30004D4B53412063616368652063616E646984 -:10DD40006461746520253032783A253032783A257E -:10DD50003032783A253032783A253032783A2530E8 -:10DD60003278207072696F202564000052534E3A59 -:10DD7000207072652D61757468656E746963617475 -:10DD8000696F6E207769746820253032783A2530C3 -:10DD900032783A253032783A253032783A253032A6 -:10DDA000783A253032782074696D6564206F757417 -:10DDB00000000000636F6D706C657465642073759E -:10DDC000636365737366756C6C79000052534E3AE9 -:10DDD000206661696C656420746F20676574206DCE -:10DDE00061737465722073657373696F6E206B6500 -:10DDF000792066726F6D207072652D617574682070 -:10DE00004541504F4C207374617465206D616368A7 -:10DE1000696E65730000000052534E3A20707265BF -:10DE20002D61757468656E7469636174696F6E20C5 -:10DE30007769746820253032783A253032783A256F -:10DE40003032783A253032783A253032783A2530F7 -:10DE50003278202573000000800000008002B51C8D -:10DE60008002B50A8002B5008002B4FA8002B4F4E0 -:10DE70008002B4EE8002B4E8000FAC010050F20260 -:10DE8000000FAC02000FAC01000FAC050050F20215 -:10DE9000000FAC040050F2010050F2010050F201FA -:10DEA0000050F2050050F200000FAC00000FAC0370 -:10DEB0000050F200000FAC0449454545203830328F -:10DEC0002E315820286E6F20575041290000000045 -:10DED0005750412F49454545203830322E31582F73 -:10DEE00045415000575041322F4945454520383073 -:10DEF000322E31582F45415000000000575041321A -:10DF00002D50534B000000005745502D3430000079 -:10DF10005745502D313034007061697277697365EF -:10DF20005F6369706865723D25730A67726F75700B -:10DF30005F6369706865723D25730A6B65795F6D13 -:10DF4000676D743D25730A005750413A20257320B0 -:10DF5000287372633D253032783A253032783A257D -:10DF60003032783A253032783A253032783A2530D6 -:10DF7000327829005750413A204B6579206E656709 -:10DF80006F74696174696F6E20636F6D706C657416 -:10DF90006564207769746820253032783A253032FC -:10DFA000783A253032783A253032783A253032784E -:10DFB0003A25303278205B50544B3D25732047542E -:10DFC0004B3D25735D0000005750413A20496E7665 -:10DFD000616C6964204541504F4C2D4B657920663A -:10DFE00072616D65202D206B65795F6461746120BD -:10DFF0006F766572666C6F7720282564203E202539 -:10E000006C752900494520696E20332F34206D73CB -:10E010006720646F6573206E6F74206D6174636830 -:10E02000207769746820494520696E2042656163E4 -:10E030006F6E2F50726F62655265737020286E6F1D -:10E040002049453F29000000494520696E20332FB3 -:10E0500034206D736720646F6573206E6F74206D5C -:10E0600061746368207769746820494520696E206F -:10E07000426561636F6E2F50726F62655265737097 -:10E0800000000000506F737369626C6520646F77E5 -:10E090006E67726164652061747461636B2064658E -:10E0A000746563746564202D2052534E207761732C -:10E0B00020656E61626C656420616E642052534E0F -:10E0C0002049452077617320696E206D7367203386 -:10E0D0002F342C20627574206E6F7420696E20427C -:10E0E0006561636F6E2F50726F6265526573700069 -:10E0F0005750413A204661696C656420746F20670F -:10E100006574206D61737465722073657373696FD4 -:10E110006E206B65792066726F6D204541504F4CC3 -:10E12000207374617465206D616368696E65730046 -:10E130005750413A204B65792068616E647368617D -:10E140006B652061626F7274656400005750413ADC -:10E15000204661696C656420746F20676574207265 -:10E16000616E646F6D206461746120666F7220530C -:10E170004E6F6E6365000000506169727769736568 -:10E18000206B657920657870616E73696F6E000031 -:10E190005750413A2047726F75702072656B6579F0 -:10E1A000696E6720636F6D706C6574656420776954 -:10E1B000746820253032783A253032783A2530326A -:10E1C000783A253032783A253032783A253032782C -:10E1D000205B47544B3D25735D00000000000000AC -:10E1E000000000000050F204000FAC02000FAC0170 -:10E1F00052096AD53036A538BF40A39E81F3D7FBBC -:10E200007CE339829B2FFF87348E4344C4DEE9CB05 -:10E21000547B9432A6C2233DEE4C950B42FAC34E7A -:10E22000082EA16628D924B2765BA2496D8BD12530 -:10E2300072F8F66486689816D4A45CCC5D65B692D4 -:10E240006C704850FDEDB9DA5E154657A78D9D8478 -:10E2500090D8AB008CBCD30AF7E45805B8B3450698 -:10E26000D02C1E8FCA3F0F02C1AFBD0301138A6BB2 -:10E270003A9111414F67DCEA97F2CFCEF0B4E673E2 -:10E2800096AC7422E7AD3585E2F937E81C75DF6E90 -:10E2900047F11A711D29C5896FB7620EAA18BE1BF6 -:10E2A000FC563E4BC6D279209ADBC0FE78CD5AF49C -:10E2B0001FDDA8338807C731B11210592780EC5FE2 -:10E2C00060517FA919B54A0D2DE57A9F93C99CEF3E -:10E2D000A0E03B4DAE2AF5B0C8EBBB3C835399613F -:10E2E000172B047EBA77D626E169146355210C7D7D -:10E2F00001020408102040801B36000051F4A75092 -:10E300007E4165531A17A4C33A275E963BAB6BCB8D -:10E310001F9D45F1ACFA58AB4BE303932030FA55FF -:10E32000AD766DF688CC7691F5024C254FE5D7FC9D -:10E33000C52ACBD726354480B562A38FDEB15A49B2 -:10E3400025BA1B6745EA0E985DFEC0E1C32F750232 -:10E35000814CF0128D4697A36BD3F9C6038F5FE70C -:10E3600015929C95BF6D7AEB955259DAD4BE832DE8 -:10E37000587421D349E069298EC9C84475C2896A95 -:10E38000F48E797899583E6B27B971DDBEE14FB6AE -:10E39000F088AD17C920AC667DCE3AB463DF4A1869 -:10E3A000E51A31829751336062537F45B16477E05B -:10E3B000BB6BAE84FE81A01CF9082B947048685892 -:10E3C0008F45FD1994DE6C87527BF8B7AB73D3236E -:10E3D000724B02E2E31F8F576655AB2AB2EB280758 -:10E3E0002FB5C20386C57B9AD33708A5302887F29C -:10E3F00023BFA5B202036ABAED16825C8ACF1C2B3A -:10E40000A779B492F307F2F04E69E2A165DAF4CD90 -:10E410000605BED5D134621FC4A6FE8A342E539D94 -:10E42000A2F355A0058AE132A4F6EB750B83EC3913 -:10E430004060EFAA5E719F06BD6E10513E218AF9C1 -:10E4400096DD063DDD3E05AE4DE6BD4691548DB5EB -:10E4500071C45D050406D46F605015FF1998FB2444 -:10E46000D6BDE997894043CC67D99E77B0E842BDD5 -:10E4700007898B88E7195B3879C8EEDBA17C0A47EE -:10E480007C420FE9F8841EC90000000009808683E1 -:10E49000322BED481E1170AC6C5A724EFD0EFFFB14 -:10E4A0000F8538563DAED51E362D39270A0FD96453 -:10E4B000685CA6219B5B54D124362E3A0C0A67B1C6 -:10E4C0009357E70FB4EE96D21B9B919E80C0C54F29 -:10E4D00061DC20A25A774B691C121A16E293BA0A21 -:10E4E000C0A02AE53C22E043121B171D0E090D0BAC -:10E4F000F28BC7AD2DB6A8B9141EA9C857F119855E -:10E50000AF75074CEE99DDBBA37F60FDF701269F39 -:10E510005C72F5BC44663BC55BFB7E348B4329765D -:10E52000CB23C6DCB6EDFC68B8E4F163D731DCCAB6 -:10E53000426385101397224084C61120854A247DAA -:10E54000D2BB3DF8AEF93211C729A16D1D9E2F4BEC -:10E55000DCB230F30D8652EC77C1E3D02BB3166CEE -:10E56000A970B999119448FA47E96422A8FC8CC4AF -:10E57000A0F03F1A567D2CD8223390EF87494EC722 -:10E58000D938D1C18CCAA2FE98D40B36A6F581CF5A -:10E59000A57ADE28DAB78E263FADBFA42C3A9DE4DB -:10E5A0005078920D6A5FCC9B547E4662F68D13C202 -:10E5B00090D8B8E82E39F75E82C3AFF59F5D80BE74 -:10E5C00069D0937C6FD52DA9CF2512B3C8AC993BE8 -:10E5D00010187DA7E89C636EDB3BBB7BCD267809DA -:10E5E0006E5918F4EC9AB701834F9AA8E6956E65B8 -:10E5F000AAFFE67E21BCCF08EF15E8E6BAE79BD973 -:10E600004A6F36CEEA9F09D429B07CD631A4B2AF86 -:10E610002A3F2331C6A5943035A266C0744EBC375C -:10E62000FC82CAA6E090D0B033A7D815F104984A6E -:10E6300041ECDAF77FCD500E1791F62F764DD68D3F -:10E6400043EFB04DCCAA4D54E49604DF9ED1B5E320 -:10E650004C6A881BC12C1FB84665517F9D5EEA0439 -:10E66000018C355DFA877473FB0B412EB3671D5A1D -:10E6700092DBD252E91056336DD647139AD7618C8C -:10E6800037A10C7A59F8148EEB133C89CEA927EEEA -:10E69000B761C935E11CE5ED7A47B13C9CD2DF5941 -:10E6A00055F2733F1814CE7973C737BF53F7CDEACD -:10E6B0005FFDAA5BDF3D6F147844DB86CAAFF38150 -:10E6C000B968C43E3824342CC2A3405F161DC372FF -:10E6D000BCE2250C283C498BFF0D954139A80171FE -:10E6E000080CB3DED8B4E49C6456C1907BCB846143 -:10E6F000D532B670486C5C74D0B85742C66363A517 -:10E70000F87C7C84EE777799F67B7B8DFFF2F20DB7 -:10E71000D66B6BBDDE6F6FB191C5C55460303050A4 -:10E7200002010103CE6767A9562B2B7DE7FEFE1978 -:10E73000B5D7D7624DABABE6EC76769A8FCACA45B1 -:10E740001F82829D89C9C940FA7D7D87EFFAFA153B -:10E75000B25959EB8E4747C9FBF0F00B41ADADEC18 -:10E76000B3D4D4675FA2A2FD45AFAFEA239C9CBFA0 -:10E7700053A4A4F7E47272969BC0C05B75B7B7C28E -:10E78000E1FDFD1C3D9393AE4C26266A6C36365A4D -:10E790007E3F3F41F5F7F70283CCCC4F6834345CC1 -:10E7A00051A5A5F4D1E5E534F9F1F108E2717193D1 -:10E7B000ABD8D873623131532A15153F0804040CC5 -:10E7C00095C7C752462323659DC3C35E30181828DA -:10E7D000379696A10A05050F2F9A9AB50E070709D5 -:10E7E000241212361B80809BDFE2E23DCDEBEB264C -:10E7F0004E2727697FB2B2CDEA75759F1209091BB2 -:10E800001D83839E582C2C74341A1A2E361B1B2DF4 -:10E81000DC6E6EB2B45A5AEE5BA0A0FBA45252F664 -:10E82000763B3B4DB7D6D6617DB3B3CE5229297B1B -:10E83000DDE3E33E5E2F2F7113848497A65353F5D7 -:10E84000B9D1D16800000000C1EDED2C402020605E -:10E85000E3FCFC1F79B1B1C8B65B5BEDD46A6ABE5C -:10E860008DCBCB4667BEBED97239394B944A4ADE4E -:10E87000984C4CD4B05858E885CFCF4ABBD0D06B19 -:10E88000C5EFEF2A4FAAAAE5EDFBFB16864343C569 -:10E890009A4D4DD766333355118585948A4545CFBA -:10E8A000E9F9F91004020206FE7F7F81A05050F0C2 -:10E8B000783C3C44259F9FBA4BA8A8E3A25151F352 -:10E8C0005DA3A3FE804040C0058F8F8A3F9292AD2A -:10E8D000219D9DBC70383848F1F5F50463BCBCDF60 -:10E8E00077B6B6C1AFDADA75422121632010103055 -:10E8F000E5FFFF1AFDF3F30EBFD2D26D81CDCD4CF3 -:10E90000180C0C1426131335C3ECEC2FBE5F5FE11B -:10E91000359797A2884444CC2E17173993C4C4570F -:10E9200055A7A7F2FC7E7E827A3D3D47C86464AC61 -:10E93000BA5D5DE73219192BE6737395C06060A06C -:10E94000198181989E4F4FD1A3DCDC7F442222663F -:10E95000542A2A7E3B9090AB0B8888838C4646CA0B -:10E96000C7EEEE296BB8B8D32814143CA7DEDE79C5 -:10E97000BC5E5EE2160B0B1DADDBDB76DBE0E03B45 -:10E9800064323256743A3A4E140A0A1E924949DBEE -:10E990000C06060A4824246CB85C5CE49FC2C25D85 -:10E9A000BDD3D36E43ACACEFC46262A6399191A8DB -:10E9B000319595A4D3E4E437F279798BD5E7E73242 -:10E9C0008BC8C8436E373759DA6D6DB7018D8D8CA2 -:10E9D000B1D5D5649C4E4ED249A9A9E0D86C6CB48F -:10E9E000AC5656FAF3F4F407CFEAEA25CA6565AFE8 -:10E9F000F47A7A8E47AEAEE9100808186FBABAD525 -:10EA0000F07878884A25256F5C2E2E72381C1C24DD -:10EA100057A6A6F173B4B4C797C6C651CBE8E8238E -:10EA2000A1DDDD7CE874749C3E1F1F21964B4BDDFD -:10EA300061BDBDDC0D8B8B860F8A8A85E07070907E -:10EA40007C3E3E4271B5B5C4CC6666AA904848D8B3 -:10EA500006030305F7F6F6011C0E0E12C26161A350 -:10EA60006A35355FAE5757F969B9B9D017868691BF -:10EA700099C1C1583A1D1D27279E9EB9D9E1E13899 -:10EA8000EBF8F8132B9898B322111133D26969BBB4 -:10EA9000A9D9D970078E8E89339494A72D9B9BB6E4 -:10EAA0003C1E1E2215878792C9E9E92087CECE49F0 -:10EAB000AA5555FF50282878A5DFDF7A038C8C8F64 -:10EAC00059A1A1F8098989801A0D0D1765BFBFDA10 -:10EAD000D7E6E631844242C6D06868B8824141C375 -:10EAE000299999B05A2D2D771E0F0F117BB0B0CBFD -:10EAF000A85454FC6DBBBBD62C16163A002020201F -:10EB000020202020202028282828282020202020DD -:10EB100020202020202020202020202020881010AD -:10EB20001010101010101010101010101004040409 -:10EB300004040404040404101010101010104141C7 -:10EB400041414141010101010101010101010101B5 -:10EB500001010101010101011010101010104242C9 -:10EB60004242424202020202020202020202020285 -:10EB70000202020202020202101010102000000025 -:10EB80000000000000000000000000000000000085 -:10EB90000000000000000000000000000000000075 -:10EBA0000000000000000000000000000000000065 -:10EBB0000000000000000000000000000000000055 -:10EBC0000000000000000000000000000000000045 -:10EBD0000000000000000000000000000000000035 -:10EBE0000000000000000000000000000000000025 -:10EBF0000000000000000000000000000000000015 -:10EC00002D2D0000504F5349584C595F434F5252DD -:10EC10004543540025733A206F7074696F6E20600D -:10EC200025732720697320616D626967756F75733D -:10EC30002028636F756C6420626520602D2D25731C -:10EC400027206F7220602D2D257327290A000000D0 -:10EC500025733A20696E76616C6964206F707469FF -:10EC60006F6E202D2D20602D2563270A00000000E7 -:10EC700025733A20617267756D656E7420726571D7 -:10EC8000756972656420666F72206F7074696F6E4B -:10EC9000206000002D2D2573270A00002D256327F5 -:10ECA0000A00000043000000000004A88002F4668F -:10ECB0008002F4888002F2B08002F2E88002F4520E -:10ECC0008002F4508002F3FE8002F4268002F3DC1E -:10ECD0008002F3DC8002F3CC8002F3DC8002F3EAF2 -:10ECE0008002F3EA8002F3DC3030303030303030F4 -:10ECF000303030303030303001020B040B0506016B -:10ED00000B01020B040B0506010B0B0B03040B0597 -:10ED10000B0B0B0B0B0B040B050B0B0B0B0B0B0B50 -:10ED20000B0B0B0B0B05080B040B0B070B0B0B0949 -:10ED30000B040B050B0B0B0B0A0B040B0B0B0B0B38 -:10ED40000B0B0B040B0B0B0B0B0B0B030B0B0B0B22 -:10ED50000B0B0B0B080B0B0B0B0B0B00000000003D -:10ED6000000000000001000304000000000001009A -:10ED7000030400000000000007030400000000007E -:10ED80000000030400000000000000000400000078 -:10ED90000000020003040000000000010005060559 -:10EDA0000000000001000506000000000000000354 -:10EDB0000400000000000008000000000000000047 -:10EDC000080000000000000000000000000000003B -:10EDD0003031323334353637383941424344454691 -:10EDE0000000000030313233343536373839616253 -:10EDF0006364656600000000202020202020202081 -:10EE000020202020202020200808080808080808C2 -:10EE10000808080808080808080808080808080872 -:10EE2000080808080808080807080807020808076B -:10EE30000808060708070508000101010101010192 -:10EE40000101080808080808080408040404040468 -:10EE50000808080803080804080808040804080843 -:10EE6000040808080808080808040804040404043E -:10EE70000304030803080404040308040304080843 -:10EE8000040803080808080808080808080808080B -:10EE900008080808080808080808080808080808F2 -:10EEA00008080808080808080808080808080808E2 -:10EEB00008080808080808080808080808080808D2 -:10EEC00008080808080808080808080808080808C2 -:10EED00008080808080808080808080808080808B2 -:10EEE00008080808080808080808080808080808A2 -:10EEF0000808080808080808080808080808080892 -:10EF00000808080808080808000A000100020003B1 -:10EF1000000400050006000700080009000A000BB5 -:10EF2000000C000D000E000F00100000000000009B -:10EF300000000000000000000000000000000000D1 -:10EF400000000000000000000000000000000000C1 -:10EF500000000000000000000000000000000000B1 -:10EF600000000000000000000000000000000000A1 -:10EF70000000000000000000000000000000000091 -:10EF800000000000000000000000000080037FB4CB -:10EF900080037E2080037E2080037E2080037E20ED -:10EFA00080037E2080037E2080037E2080037E20DD -:10EFB00080037E20FFFFFFFFFFFFFFFF49534F2D20 -:10EFC000383835392D310000800333228003334433 -:10EFD0008003316C800331A48003330E8003330C33 -:10EFE000800332BA800332E2800332988003329881 -:10EFF0008003328880033298800332A6800332A6D1 -:10F00000800332988003363480034AA480034AA4E4 -:10F010008003364480034AA480034AA480034AA4A0 -:10F0200080034AA480034AA480034AA4800336488C -:10F030008003371C80034AA48003371880033724D9 -:10F0400080034AA480033842800338468003384650 -:10F0500080033846800338468003384680033846AC -:10F0600080033846800338468003384680034AA42C -:10F0700080034AA480034AA480034AA480034AA4CC -:10F0800080034AA480034AA480034AA480034AA4BC -:10F0900080034AA48003394480033B9680034AA43A -:10F0A00080033B9680034AA480034AA480034AA4B9 -:10F0B00080034AA48003387880034AA480034AA4CA -:10F0C0008003416280034AA480034AA480034AA4C7 -:10F0D00080034AA480034AA48003452680034AA4EF -:10F0E00080034AA48003361A80034AA480034AA4FA -:10F0F00080034AA480034AA480034AA480034AA44C -:10F1000080034AA480034AA480034AA480034AA43B -:10F11000800338988003395A80033B9680033B96DE -:10F1200080033B968003387C8003395A80034AA4CD -:10F1300080034AA48003388080034AA480033FA24E -:10F1400080034178800343A48003389480034AA459 -:10F150008003445880034AA48003453C80034AA4AA -:10F1600080034AA48003476E01020B040B050601CD -:10F170000B01020B040B0506010B0B0B03040B0523 -:10F180000B0B0B0B0B0B040B050B0B0B0B0B0B0BDC -:10F190000B0B0B0B0B05080B040B0B070B0B0B09D5 -:10F1A0000B040B050B0B0B0B0A0B040B0B0B0B0BC4 -:10F1B0000B0B0B040B0B0B0B0B0B0B030B0B0B0BAE -:10F1C0000B0B0B0B080B0B0B0B0B0B0000000000C9 -:10F1D0000000000000010003040000000000010026 -:10F1E000030400000000000007030400000000000A -:10F1F0000000030400000000000000000400000004 -:10F2000000000200030400000000000100050605E4 -:10F2100000000000010005060000000000000003DF -:10F2200004000000000000080000000000000000D2 -:10F2300008000000000000000000000000000000C6 -:10F24000494E4600696E66004E414E006E616E008A -:10F2500020202020202020202020202020202020AE -:10F26000303030303030303030303030303030309E -:10F27000080808080808080808080808080808080E -:10F2800008080808080808080808080808080808FE -:10F2900007080807020808070808060708070508FE -:10F2A0000001010101010101010108080808080825 -:10F2B00008040804040404040808080803080804EF -:10F2C00008080804080408080408080808080808CA -:10F2D00008040804040404040304030803080404E1 -:10F2E00004030804030408080408030808080808BD -:10F2F000080808080808080808080808080808088E -:10F30000080808080808080808080808080808087D -:10F31000080808080808080808080808080808086D -:10F32000080808080808080808080808080808085D -:10F33000080808080808080808080808080808084D -:10F34000080808080808080808080808080808083D -:10F35000080808080808080808080808080808082D -:10F36000080808080808080808080808080808081D -:10F37000496E66696E697479000000004E614E0046 -:10F3800000000005000000190000007D3FF00000B3 -:10F390000000000040240000000000004059000070 -:10F3A00000000000408F40000000000040C38800C3 -:10F3B0000000000040F86A0000000000412E848038 -:10F3C00000000000416312D0000000004197D78484 -:10F3D0000000000041CDCD65000000004202A05FAA -:10F3E0002000000042374876E8000000426D1A9481 -:10F3F000A200000042A2309CE540000042D6BCC4FE -:10F400001E900000430C6BF5263400004341C37985 -:10F4100037E080004376345785D8A00043ABC16DF8 -:10F42000674EC80043E158E460913D004415AF1DAC -:10F4300078B58C40444B1AE4D6E2EF504480F0CFCC -:10F44000064DD59244B52D02C7E14AF644EA784309 -:10F4500079D99DB44341C37937E080004693B8B56C -:10F46000B5056E174D384F03E93FF9F55A827748D5 -:0CF47000F9301D3275154FDD7F73BF3C75 -:10F480000000000455736167653A2074746370204E -:10F490002D742F2D72205B2D6F7074696F6E735DEC -:10F4A00020686F73740A20202020202020202D6CDB -:10F4B0002020202020206C656E677468206F6620F5 -:10F4C00062756673207772697474656E20746F203C -:10F4D0006E6574776F726B202864656661756C74F5 -:10F4E0002031303234290A20202020202020202DD5 -:10F4F0006E2020202020206E756D626572206F6660 -:10F500002062756673207772697474656E20746FFB -:10F51000206E6574776F726B202864656661756C08 -:10F52000742031303234290A20202020202020204D -:10F530002D70202020202020706F7274206E756D39 -:10F5400062657220746F2073656E6420746F20286A -:10F5500064656661756C742032303030290A202071 -:10F560002020202020202D752020202020207564A0 -:10F57000700A20202020202020202D7620202020EE -:10F580002020766572626F73650A000080039954CB -:10F59000000000000000000000000000000000006B -:10F5A000000000000000000000000000000000005B -:10F5B000000000000000000000000000000000004B -:10F5C000000000000000000000000000000000003B -:10F5D000000000000000000000000000000000002B -:10F5E000000000000000000000000000000000001B -:10F5F000000000000000000000000000000000000B -:10F6000000000000000000000000000000000000FA -:10F6100000000000000000000000000000000000EA -:10F6200000000000000000000000000000000000DA -:10F6300000000000000000000000000000000000CA -:10F6400000000000000000000000000000000000BA -:10F6500000000000000000000000000000000000AA -:10F660000000000400000000ABCD00000000196E97 -:10F6700010000000FFFFFFFFFFFFFFFFFF7590007E -:10F68000000001FFFFFFFFFEFFFFFFFFFF751000FF -:10F69000000001FFFFFFFFFE00050000800149ECB4 -:10F6A000800149EC800149EC800149EC0000000038 -:10F6B000000002340000000C02040B0C1216182487 -:10F6C0003048606C000000000000000000000000F6 -:10F6D00000000010010000146D3E86B0FFFFFFFF28 -:10F6E000FFFF0000000003E800000001000000012F -:10F6F00000000320000000010000000000000008DE -:10F70000000000020000006400000000000000058E -:10F710000000000F000000050000000F000013882B -:10F7200000001388000007D00000138800003E800E -:10F73000000000020000000C02040B0C121618243A -:10F740003048606C00000000000000000000000075 -:10F7500000000000000000000D0102030405060780 -:10F7600008090A0B0C0D000000000011FF0000004A -:10F770000000000000000000000000000000000089 -:10F780000000000000000000000000000000FFFF7B -:10F79000FFFFFFFF00000001000000030000000168 -:10F7A0000000000100000000000000010000000156 -:10F7B0000000000100000001000000000000000146 -:10F7C0000000000A00000005000000000000000525 -:10F7D00000000000FFFFFFFF00000001000000002C -:10F7E00000000002FF000000000000000000000018 -:10F7F0000000000000000000000000000000000009 -:10F80000000000000000FFFFFFFFFFFF00000001FD -:10F810000000000300000000000007D000000064AA -:10F8200003010100060200000000000C82848B8CA2 -:10F83000129618243048606C0000000000000000A0 -:10F8400000000000000000000000000100000001B6 -:10F85000000000010014000000000014000007D0A8 -:10F860000000000000000001000000000000000691 -:10F8700000000001FFFFFFFF0A00000064756D6DCE -:10F88000795F7373696400000000000000000000ED -:10F890000000000000000000000000000000000068 -:10F8A000303030313032303330343035303630373C -:10F8B0003038303930613062306330643065306602 -:10F8C0003130313131323133313431353136313714 -:10F8D00031383139316131623163316431653166DA -:10F8E00000000000000000028003D670000000004D -:10F8F000800255EC80025614800256588002569CB5 -:10F90000800256AA800255F4800256B6800256D074 -:10F910008002614C8003EAFD0000003F000000010E -:10F920008003EF2C8003EF4C8003EF6C000000009D -:10F9300000000000000000000000000000000000C7 -:10F940008003ECA4000000000000000000000000A4 -:10F9500000000000000000000000000000000000A7 -:10F960000000000000000000000000000000000097 -:10F970000000000000000000000000000000000087 -:10F980000000000000000000000000000000000077 -:10F990000000000000000000000000000000000067 -:10F9A0000000000000000000000000000000000057 -:10F9B0000000000000000000000000000000000047 -:10F9C0000000000000000000000000000000000037 -:10F9D0000000000000000000000000000000000027 -:10F9E0000000000000000000000000000000000017 -:10F9F0000000000000000000000000000000000007 -:10FA000000000000000000000000000000000000F6 -:10FA1000000004A800000000000000000000059C99 -:10FA20000000059C000005A4000005A4000005AC32 -:10FA3000000005AC000005B4000005B4000005BCE2 -:10FA4000000005BC000005C4000005C4000005CC92 -:10FA5000000005CC000005D4000005D4000005DC42 -:10FA6000000005DC000005E4000005E4000005ECF2 -:10FA7000000005EC000005F4000005F4000005FCA2 -:10FA8000000005FC00000604000006040000060C4F -:10FA90000000060C00000614000006140000061CFE -:10FAA0000000061C00000624000006240000062CAE -:10FAB0000000062C00000634000006340000063C5E -:10FAC0000000063C00000644000006440000064C0E -:10FAD0000000064C00000654000006540000065CBE -:10FAE0000000065C00000664000006640000066C6E -:10FAF0000000066C00000674000006740000067C1E -:10FB00000000067C00000684000006840000068CCD -:10FB10000000068C00000694000006940000069C7D -:10FB20000000069C000006A4000006A4000006AC2D -:10FB3000000006AC000006B4000006B4000006BCDD -:10FB4000000006BC000006C4000006C4000006CC8D -:10FB5000000006CC000006D4000006D4000006DC3D -:10FB6000000006DC000006E4000006E4000006ECED -:10FB7000000006EC000006F4000006F4000006FC9D -:10FB8000000006FC00000704000007040000070C4A -:10FB90000000070C00000714000007140000071CF9 -:10FBA0000000071C00000724000007240000072CA9 -:10FBB0000000072C00000734000007340000073C59 -:10FBC0000000073C00000744000007440000074C09 -:10FBD0000000074C00000754000007540000075CB9 -:10FBE0000000075C00000764000007640000076C69 -:10FBF0000000076C00000774000007740000077C19 -:10FC00000000077C00000784000007840000078CC8 -:10FC10000000078C00000794000007940000079C78 -:10FC20000000079C000007A4000007A4000007AC28 -:10FC3000000007AC000007B4000007B4000007BCD8 -:10FC4000000007BC000007C4000007C4000007CC88 -:10FC5000000007CC000007D4000007D4000007DC38 -:10FC6000000007DC000007E4000007E4000007ECE8 -:10FC7000000007EC000007F4000007F4000007FC98 -:10FC8000000007FC00000804000008040000080C45 -:10FC90000000080C00000814000008140000081CF4 -:10FCA0000000081C00000824000008240000082CA4 -:10FCB0000000082C00000834000008340000083C54 -:10FCC0000000083C00000844000008440000084C04 -:10FCD0000000084C00000854000008540000085CB4 -:10FCE0000000085C00000864000008640000086C64 -:10FCF0000000086C00000874000008740000087C14 -:10FD00000000087C00000884000008840000088CC3 -:10FD10000000088C00000894000008940000089C73 -:10FD20000000089C000008A4000008A4000008AC23 -:10FD3000000008AC000008B4000008B4000008BCD3 -:10FD4000000008BC000008C4000008C4000008CC83 -:10FD5000000008CC000008D4000008D4000008DC33 -:10FD6000000008DC000008E4000008E4000008ECE3 -:10FD7000000008EC000008F4000008F4000008FC93 -:10FD8000000008FC00000904000009040000090C40 -:10FD90000000090C00000914000009140000091CEF -:10FDA0000000091C00000924000009240000092C9F -:10FDB0000000092C00000934000009340000093C4F -:10FDC0000000093C00000944000009440000094CFF -:10FDD0000000094C00000954000009540000095CAF -:10FDE0000000095C00000964000009640000096C5F -:10FDF0000000096C00000974000009740000097C0F -:10FE00000000097C00000984000009840000098CBE -:10FE10000000098C00000994000009940002000011 -:0CFE2000FFFFFFFF0000000100007AFC63 -:040000058000000077 -:00000001FF diff --git a/libraries/WiFi/extras/binary/wifiHD_2_1.elf b/libraries/WiFi/extras/binary/wifiHD_2_1.elf deleted file mode 100644 index 9217d48ae4b..00000000000 Binary files a/libraries/WiFi/extras/binary/wifiHD_2_1.elf and /dev/null differ diff --git a/libraries/WiFi/extras/binary/wifi_dnld.elf b/libraries/WiFi/extras/binary/wifi_dnld.elf deleted file mode 100644 index 11ec3ddc730..00000000000 Binary files a/libraries/WiFi/extras/binary/wifi_dnld.elf and /dev/null differ diff --git a/libraries/WiFi/extras/binary/wifi_dnld.hex b/libraries/WiFi/extras/binary/wifi_dnld.hex deleted file mode 100644 index bf2c05cf68b..00000000000 --- a/libraries/WiFi/extras/binary/wifi_dnld.hex +++ /dev/null @@ -1,10470 +0,0 @@ -:0200000480007A -:10000000E08F100000000000000000000000000071 -:1000100000000000000000000000000000000000E0 -:1000200000000000000000000000000000000000D0 -:1000300000000000000000000000000000000000C0 -:1000400000000000000000000000000000000000B0 -:1000500000000000000000000000000000000000A0 -:100060000000000000000000000000000000000090 -:100070000000000000000000000000000000000080 -:100080000000000000000000000000000000000070 -:100090000000000000000000000000000000000060 -:1000A0000000000000000000000000000000000050 -:1000B0000000000000000000000000000000000040 -:1000C0000000000000000000000000000000000030 -:1000D0000000000000000000000000000000000020 -:1000E0000000000000000000000000000000000010 -:1000F0000000000000000000000000000000000000 -:1001000000000000000000000000000000000000EF -:1001100000000000000000000000000000000000DF -:1001200000000000000000000000000000000000CF -:1001300000000000000000000000000000000000BF -:1001400000000000000000000000000000000000AF -:10015000000000000000000000000000000000009F -:10016000000000000000000000000000000000008F -:10017000000000000000000000000000000000007F -:10018000000000000000000000000000000000006F -:10019000000000000000000000000000000000005F -:1001A000000000000000000000000000000000004F -:1001B000000000000000000000000000000000003F -:1001C000000000000000000000000000000000002F -:1001D000000000000000000000000000000000001F -:1001E000000000000000000000000000000000000F -:1001F00000000000000000000000000000000000FF -:1002000000000000000000000000000000000000EE -:1002100000000000000000000000000000000000DE -:1002200000000000000000000000000000000000CE -:1002300000000000000000000000000000000000BE -:1002400000000000000000000000000000000000AE -:10025000000000000000000000000000000000009E -:10026000000000000000000000000000000000008E -:10027000000000000000000000000000000000007E -:10028000000000000000000000000000000000006E -:10029000000000000000000000000000000000005E -:1002A000000000000000000000000000000000004E -:1002B000000000000000000000000000000000003E -:1002C000000000000000000000000000000000002E -:1002D000000000000000000000000000000000001E -:1002E000000000000000000000000000000000000E -:1002F00000000000000000000000000000000000FE -:1003000000000000000000000000000000000000ED -:1003100000000000000000000000000000000000DD -:1003200000000000000000000000000000000000CD -:1003300000000000000000000000000000000000BD -:1003400000000000000000000000000000000000AD -:10035000000000000000000000000000000000009D -:10036000000000000000000000000000000000008D -:10037000000000000000000000000000000000007D -:10038000000000000000000000000000000000006D -:10039000000000000000000000000000000000005D -:1003A000000000000000000000000000000000004D -:1003B000000000000000000000000000000000003D -:1003C000000000000000000000000000000000002D -:1003D000000000000000000000000000000000001D -:1003E000000000000000000000000000000000000D -:1003F00000000000000000000000000000000000FD -:1004000000000000000000000000000000000000EC -:1004100000000000000000000000000000000000DC -:1004200000000000000000000000000000000000CC -:1004300000000000000000000000000000000000BC -:1004400000000000000000000000000000000000AC -:10045000000000000000000000000000000000009C -:10046000000000000000000000000000000000008C -:10047000000000000000000000000000000000007C -:10048000000000000000000000000000000000006C -:10049000000000000000000000000000000000005C -:1004A000000000000000000000000000000000004C -:1004B000000000000000000000000000000000003C -:1004C000000000000000000000000000000000002C -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F00000000000000000000000000000000000FC -:1005000000000000000000000000000000000000EB -:1005100000000000000000000000000000000000DB -:1005200000000000000000000000000000000000CB -:1005300000000000000000000000000000000000BB -:1005400000000000000000000000000000000000AB -:10055000000000000000000000000000000000009B -:10056000000000000000000000000000000000008B -:10057000000000000000000000000000000000007B -:10058000000000000000000000000000000000006B -:10059000000000000000000000000000000000005B -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:1005C000000000000000000000000000000000002B -:1005D000000000000000000000000000000000001B -:1005E000000000000000000000000000000000000B -:1005F00000000000000000000000000000000000FB -:1006000000000000000000000000000000000000EA -:1006100000000000000000000000000000000000DA -:1006200000000000000000000000000000000000CA -:1006300000000000000000000000000000000000BA -:1006400000000000000000000000000000000000AA -:10065000000000000000000000000000000000009A -:10066000000000000000000000000000000000008A -:10067000000000000000000000000000000000007A -:10068000000000000000000000000000000000006A -:10069000000000000000000000000000000000005A -:1006A000000000000000000000000000000000004A -:1006B000000000000000000000000000000000003A -:1006C000000000000000000000000000000000002A -:1006D000000000000000000000000000000000001A -:1006E000000000000000000000000000000000000A -:1006F00000000000000000000000000000000000FA -:1007000000000000000000000000000000000000E9 -:1007100000000000000000000000000000000000D9 -:1007200000000000000000000000000000000000C9 -:1007300000000000000000000000000000000000B9 -:1007400000000000000000000000000000000000A9 -:100750000000000000000000000000000000000099 -:100760000000000000000000000000000000000089 -:100770000000000000000000000000000000000079 -:100780000000000000000000000000000000000069 -:100790000000000000000000000000000000000059 -:1007A0000000000000000000000000000000000049 -:1007B0000000000000000000000000000000000039 -:1007C0000000000000000000000000000000000029 -:1007D0000000000000000000000000000000000019 -:1007E0000000000000000000000000000000000009 -:1007F00000000000000000000000000000000000F9 -:1008000000000000000000000000000000000000E8 -:1008100000000000000000000000000000000000D8 -:1008200000000000000000000000000000000000C8 -:1008300000000000000000000000000000000000B8 -:1008400000000000000000000000000000000000A8 -:100850000000000000000000000000000000000098 -:100860000000000000000000000000000000000088 -:100870000000000000000000000000000000000078 -:100880000000000000000000000000000000000068 -:100890000000000000000000000000000000000058 -:1008A0000000000000000000000000000000000048 -:1008B0000000000000000000000000000000000038 -:1008C0000000000000000000000000000000000028 -:1008D0000000000000000000000000000000000018 -:1008E0000000000000000000000000000000000008 -:1008F00000000000000000000000000000000000F8 -:1009000000000000000000000000000000000000E7 -:1009100000000000000000000000000000000000D7 -:1009200000000000000000000000000000000000C7 -:1009300000000000000000000000000000000000B7 -:1009400000000000000000000000000000000000A7 -:100950000000000000000000000000000000000097 -:100960000000000000000000000000000000000087 -:100970000000000000000000000000000000000077 -:100980000000000000000000000000000000000067 -:100990000000000000000000000000000000000057 -:1009A0000000000000000000000000000000000047 -:1009B0000000000000000000000000000000000037 -:1009C0000000000000000000000000000000000027 -:1009D0000000000000000000000000000000000017 -:1009E0000000000000000000000000000000000007 -:1009F00000000000000000000000000000000000F7 -:100A000000000000000000000000000000000000E6 -:100A100000000000000000000000000000000000D6 -:100A200000000000000000000000000000000000C6 -:100A300000000000000000000000000000000000B6 -:100A400000000000000000000000000000000000A6 -:100A50000000000000000000000000000000000096 -:100A60000000000000000000000000000000000086 -:100A70000000000000000000000000000000000076 -:100A80000000000000000000000000000000000066 -:100A90000000000000000000000000000000000056 -:100AA0000000000000000000000000000000000046 -:100AB0000000000000000000000000000000000036 -:100AC0000000000000000000000000000000000026 -:100AD0000000000000000000000000000000000016 -:100AE0000000000000000000000000000000000006 -:100AF00000000000000000000000000000000000F6 -:100B000000000000000000000000000000000000E5 -:100B100000000000000000000000000000000000D5 -:100B200000000000000000000000000000000000C5 -:100B300000000000000000000000000000000000B5 -:100B400000000000000000000000000000000000A5 -:100B50000000000000000000000000000000000095 -:100B60000000000000000000000000000000000085 -:100B70000000000000000000000000000000000075 -:100B80000000000000000000000000000000000065 -:100B90000000000000000000000000000000000055 -:100BA0000000000000000000000000000000000045 -:100BB0000000000000000000000000000000000035 -:100BC0000000000000000000000000000000000025 -:100BD0000000000000000000000000000000000015 -:100BE0000000000000000000000000000000000005 -:100BF00000000000000000000000000000000000F5 -:100C000000000000000000000000000000000000E4 -:100C100000000000000000000000000000000000D4 -:100C200000000000000000000000000000000000C4 -:100C300000000000000000000000000000000000B4 -:100C400000000000000000000000000000000000A4 -:100C50000000000000000000000000000000000094 -:100C60000000000000000000000000000000000084 -:100C70000000000000000000000000000000000074 -:100C80000000000000000000000000000000000064 -:100C90000000000000000000000000000000000054 -:100CA0000000000000000000000000000000000044 -:100CB0000000000000000000000000000000000034 -:100CC0000000000000000000000000000000000024 -:100CD0000000000000000000000000000000000014 -:100CE0000000000000000000000000000000000004 -:100CF00000000000000000000000000000000000F4 -:100D000000000000000000000000000000000000E3 -:100D100000000000000000000000000000000000D3 -:100D200000000000000000000000000000000000C3 -:100D300000000000000000000000000000000000B3 -:100D400000000000000000000000000000000000A3 -:100D50000000000000000000000000000000000093 -:100D60000000000000000000000000000000000083 -:100D70000000000000000000000000000000000073 -:100D80000000000000000000000000000000000063 -:100D90000000000000000000000000000000000053 -:100DA0000000000000000000000000000000000043 -:100DB0000000000000000000000000000000000033 -:100DC0000000000000000000000000000000000023 -:100DD0000000000000000000000000000000000013 -:100DE0000000000000000000000000000000000003 -:100DF00000000000000000000000000000000000F3 -:100E000000000000000000000000000000000000E2 -:100E100000000000000000000000000000000000D2 -:100E200000000000000000000000000000000000C2 -:100E300000000000000000000000000000000000B2 -:100E400000000000000000000000000000000000A2 -:100E50000000000000000000000000000000000092 -:100E60000000000000000000000000000000000082 -:100E70000000000000000000000000000000000072 -:100E80000000000000000000000000000000000062 -:100E90000000000000000000000000000000000052 -:100EA0000000000000000000000000000000000042 -:100EB0000000000000000000000000000000000032 -:100EC0000000000000000000000000000000000022 -:100ED0000000000000000000000000000000000012 -:100EE0000000000000000000000000000000000002 -:100EF00000000000000000000000000000000000F2 -:100F000000000000000000000000000000000000E1 -:100F100000000000000000000000000000000000D1 -:100F200000000000000000000000000000000000C1 -:100F300000000000000000000000000000000000B1 -:100F400000000000000000000000000000000000A1 -:100F50000000000000000000000000000000000091 -:100F60000000000000000000000000000000000081 -:100F70000000000000000000000000000000000071 -:100F80000000000000000000000000000000000061 -:100F90000000000000000000000000000000000051 -:100FA0000000000000000000000000000000000041 -:100FB0000000000000000000000000000000000031 -:100FC0000000000000000000000000000000000021 -:100FD0000000000000000000000000000000000011 -:100FE0000000000000000000000000000000000001 -:100FF00000000000000000000000000000000000F1 -:1010000000000000000000000000000000000000E0 -:1010100000000000000000000000000000000000D0 -:1010200000000000000000000000000000000000C0 -:1010300000000000000000000000000000000000B0 -:1010400000000000000000000000000000000000A0 -:101050000000000000000000000000000000000090 -:101060000000000000000000000000000000000080 -:101070000000000000000000000000000000000070 -:101080000000000000000000000000000000000060 -:101090000000000000000000000000000000000050 -:1010A0000000000000000000000000000000000040 -:1010B0000000000000000000000000000000000030 -:1010C0000000000000000000000000000000000020 -:1010D0000000000000000000000000000000000010 -:1010E0000000000000000000000000000000000000 -:1010F00000000000000000000000000000000000F0 -:1011000000000000000000000000000000000000DF -:1011100000000000000000000000000000000000CF -:1011200000000000000000000000000000000000BF -:1011300000000000000000000000000000000000AF -:10114000000000000000000000000000000000009F -:10115000000000000000000000000000000000008F -:10116000000000000000000000000000000000007F -:10117000000000000000000000000000000000006F -:10118000000000000000000000000000000000005F -:10119000000000000000000000000000000000004F -:1011A000000000000000000000000000000000003F -:1011B000000000000000000000000000000000002F -:1011C000000000000000000000000000000000001F -:1011D000000000000000000000000000000000000F -:1011E00000000000000000000000000000000000FF -:1011F00000000000000000000000000000000000EF -:1012000000000000000000000000000000000000DE -:1012100000000000000000000000000000000000CE -:1012200000000000000000000000000000000000BE -:1012300000000000000000000000000000000000AE -:10124000000000000000000000000000000000009E -:10125000000000000000000000000000000000008E -:10126000000000000000000000000000000000007E -:10127000000000000000000000000000000000006E -:10128000000000000000000000000000000000005E -:10129000000000000000000000000000000000004E -:1012A000000000000000000000000000000000003E -:1012B000000000000000000000000000000000002E -:1012C000000000000000000000000000000000001E -:1012D000000000000000000000000000000000000E -:1012E00000000000000000000000000000000000FE -:1012F00000000000000000000000000000000000EE -:1013000000000000000000000000000000000000DD -:1013100000000000000000000000000000000000CD -:1013200000000000000000000000000000000000BD -:1013300000000000000000000000000000000000AD -:10134000000000000000000000000000000000009D -:10135000000000000000000000000000000000008D -:10136000000000000000000000000000000000007D -:10137000000000000000000000000000000000006D -:10138000000000000000000000000000000000005D -:10139000000000000000000000000000000000004D -:1013A000000000000000000000000000000000003D -:1013B000000000000000000000000000000000002D -:1013C000000000000000000000000000000000001D -:1013D000000000000000000000000000000000000D -:1013E00000000000000000000000000000000000FD -:1013F00000000000000000000000000000000000ED -:1014000000000000000000000000000000000000DC -:1014100000000000000000000000000000000000CC -:1014200000000000000000000000000000000000BC -:1014300000000000000000000000000000000000AC -:10144000000000000000000000000000000000009C -:10145000000000000000000000000000000000008C -:10146000000000000000000000000000000000007C -:10147000000000000000000000000000000000006C -:10148000000000000000000000000000000000005C -:10149000000000000000000000000000000000004C -:1014A000000000000000000000000000000000003C -:1014B000000000000000000000000000000000002C -:1014C000000000000000000000000000000000001C -:1014D000000000000000000000000000000000000C -:1014E00000000000000000000000000000000000FC -:1014F00000000000000000000000000000000000EC -:1015000000000000000000000000000000000000DB -:1015100000000000000000000000000000000000CB -:1015200000000000000000000000000000000000BB -:1015300000000000000000000000000000000000AB -:10154000000000000000000000000000000000009B -:10155000000000000000000000000000000000008B -:10156000000000000000000000000000000000007B -:10157000000000000000000000000000000000006B -:10158000000000000000000000000000000000005B -:10159000000000000000000000000000000000004B -:1015A000000000000000000000000000000000003B -:1015B000000000000000000000000000000000002B -:1015C000000000000000000000000000000000001B -:1015D000000000000000000000000000000000000B -:1015E00000000000000000000000000000000000FB -:1015F00000000000000000000000000000000000EB -:1016000000000000000000000000000000000000DA -:1016100000000000000000000000000000000000CA -:1016200000000000000000000000000000000000BA -:1016300000000000000000000000000000000000AA -:10164000000000000000000000000000000000009A -:10165000000000000000000000000000000000008A -:10166000000000000000000000000000000000007A -:10167000000000000000000000000000000000006A -:10168000000000000000000000000000000000005A -:10169000000000000000000000000000000000004A -:1016A000000000000000000000000000000000003A -:1016B000000000000000000000000000000000002A -:1016C000000000000000000000000000000000001A -:1016D000000000000000000000000000000000000A -:1016E00000000000000000000000000000000000FA -:1016F00000000000000000000000000000000000EA -:1017000000000000000000000000000000000000D9 -:1017100000000000000000000000000000000000C9 -:1017200000000000000000000000000000000000B9 -:1017300000000000000000000000000000000000A9 -:101740000000000000000000000000000000000099 -:101750000000000000000000000000000000000089 -:101760000000000000000000000000000000000079 -:101770000000000000000000000000000000000069 -:101780000000000000000000000000000000000059 -:101790000000000000000000000000000000000049 -:1017A0000000000000000000000000000000000039 -:1017B0000000000000000000000000000000000029 -:1017C0000000000000000000000000000000000019 -:1017D0000000000000000000000000000000000009 -:1017E00000000000000000000000000000000000F9 -:1017F00000000000000000000000000000000000E9 -:1018000000000000000000000000000000000000D8 -:1018100000000000000000000000000000000000C8 -:1018200000000000000000000000000000000000B8 -:1018300000000000000000000000000000000000A8 -:101840000000000000000000000000000000000098 -:101850000000000000000000000000000000000088 -:101860000000000000000000000000000000000078 -:101870000000000000000000000000000000000068 -:101880000000000000000000000000000000000058 -:101890000000000000000000000000000000000048 -:1018A0000000000000000000000000000000000038 -:1018B0000000000000000000000000000000000028 -:1018C0000000000000000000000000000000000018 -:1018D0000000000000000000000000000000000008 -:1018E00000000000000000000000000000000000F8 -:1018F00000000000000000000000000000000000E8 -:1019000000000000000000000000000000000000D7 -:1019100000000000000000000000000000000000C7 -:1019200000000000000000000000000000000000B7 -:1019300000000000000000000000000000000000A7 -:101940000000000000000000000000000000000097 -:101950000000000000000000000000000000000087 -:101960000000000000000000000000000000000077 -:101970000000000000000000000000000000000067 -:101980000000000000000000000000000000000057 -:101990000000000000000000000000000000000047 -:1019A0000000000000000000000000000000000037 -:1019B0000000000000000000000000000000000027 -:1019C0000000000000000000000000000000000017 -:1019D0000000000000000000000000000000000007 -:1019E00000000000000000000000000000000000F7 -:1019F00000000000000000000000000000000000E7 -:101A000000000000000000000000000000000000D6 -:101A100000000000000000000000000000000000C6 -:101A200000000000000000000000000000000000B6 -:101A300000000000000000000000000000000000A6 -:101A40000000000000000000000000000000000096 -:101A50000000000000000000000000000000000086 -:101A60000000000000000000000000000000000076 -:101A70000000000000000000000000000000000066 -:101A80000000000000000000000000000000000056 -:101A90000000000000000000000000000000000046 -:101AA0000000000000000000000000000000000036 -:101AB0000000000000000000000000000000000026 -:101AC0000000000000000000000000000000000016 -:101AD0000000000000000000000000000000000006 -:101AE00000000000000000000000000000000000F6 -:101AF00000000000000000000000000000000000E6 -:101B000000000000000000000000000000000000D5 -:101B100000000000000000000000000000000000C5 -:101B200000000000000000000000000000000000B5 -:101B300000000000000000000000000000000000A5 -:101B40000000000000000000000000000000000095 -:101B50000000000000000000000000000000000085 -:101B60000000000000000000000000000000000075 -:101B70000000000000000000000000000000000065 -:101B80000000000000000000000000000000000055 -:101B90000000000000000000000000000000000045 -:101BA0000000000000000000000000000000000035 -:101BB0000000000000000000000000000000000025 -:101BC0000000000000000000000000000000000015 -:101BD0000000000000000000000000000000000005 -:101BE00000000000000000000000000000000000F5 -:101BF00000000000000000000000000000000000E5 -:101C000000000000000000000000000000000000D4 -:101C100000000000000000000000000000000000C4 -:101C200000000000000000000000000000000000B4 -:101C300000000000000000000000000000000000A4 -:101C40000000000000000000000000000000000094 -:101C50000000000000000000000000000000000084 -:101C60000000000000000000000000000000000074 -:101C70000000000000000000000000000000000064 -:101C80000000000000000000000000000000000054 -:101C90000000000000000000000000000000000044 -:101CA0000000000000000000000000000000000034 -:101CB0000000000000000000000000000000000024 -:101CC0000000000000000000000000000000000014 -:101CD0000000000000000000000000000000000004 -:101CE00000000000000000000000000000000000F4 -:101CF00000000000000000000000000000000000E4 -:101D000000000000000000000000000000000000D3 -:101D100000000000000000000000000000000000C3 -:101D200000000000000000000000000000000000B3 -:101D300000000000000000000000000000000000A3 -:101D40000000000000000000000000000000000093 -:101D50000000000000000000000000000000000083 -:101D60000000000000000000000000000000000073 -:101D70000000000000000000000000000000000063 -:101D80000000000000000000000000000000000053 -:101D90000000000000000000000000000000000043 -:101DA0000000000000000000000000000000000033 -:101DB0000000000000000000000000000000000023 -:101DC0000000000000000000000000000000000013 -:101DD0000000000000000000000000000000000003 -:101DE00000000000000000000000000000000000F3 -:101DF00000000000000000000000000000000000E3 -:101E000000000000000000000000000000000000D2 -:101E100000000000000000000000000000000000C2 -:101E200000000000000000000000000000000000B2 -:101E300000000000000000000000000000000000A2 -:101E40000000000000000000000000000000000092 -:101E50000000000000000000000000000000000082 -:101E60000000000000000000000000000000000072 -:101E70000000000000000000000000000000000062 -:101E80000000000000000000000000000000000052 -:101E90000000000000000000000000000000000042 -:101EA0000000000000000000000000000000000032 -:101EB0000000000000000000000000000000000022 -:101EC0000000000000000000000000000000000012 -:101ED0000000000000000000000000000000000002 -:101EE00000000000000000000000000000000000F2 -:101EF00000000000000000000000000000000000E2 -:101F000000000000000000000000000000000000D1 -:101F100000000000000000000000000000000000C1 -:101F200000000000000000000000000000000000B1 -:101F300000000000000000000000000000000000A1 -:101F40000000000000000000000000000000000091 -:101F50000000000000000000000000000000000081 -:101F60000000000000000000000000000000000071 -:101F70000000000000000000000000000000000061 -:101F80000000000000000000000000000000000051 -:101F90000000000000000000000000000000000041 -:101FA0000000000000000000000000000000000031 -:101FB0000000000000000000000000000000000021 -:101FC0000000000000000000000000000000000011 -:101FD0000000000000000000000000000000000001 -:101FE00000000000000000000000000000000000F1 -:101FF00000000000000000000000000000000000E1 -:08200000481F0000800026309B -:10200800D40148D8E3B80001D553FE6A100030194E -:102018007508F1D9D202F5480040F01F0008F01FFA -:102028000008D503E06CF980EA1C0337F01F0005AF -:10203800D8020000800032008000259880002B68BC -:10204800800026D4EBCD40FC169518961492129B6E -:10205800580AE08A003B0B893008F0091800C520AF -:102068003009129A2FF9EA090708F4081800CFB1C5 -:102078001232E08900493002EDBB0001C26133032E -:10208800EDBB0000C2613004C0A85806C3806C09CB -:10209800B28C6C082FF88D082FF52FF40B8C580C88 -:1020A800CF515802E08A000F04975806C2406C09C5 -:1020B800B2836C082FF88D0820175807FE99FFF790 -:1020C8000404089CE3CD80FC3203EDBB0000CDC0C6 -:1020D8005802FE9AFFDA04975806C1706C09B28359 -:1020E8006C082FF88D0820175807FE99FFF70494FD -:1020F8003002CD5B069CF01F0007CDFBF01F0005EA -:10210800CCCB30091212CB9B069CF01F0002CECB21 -:1021180080002680EBCD40FC203DFACEFFD81497F6 -:102128007C037C1A10941892169E580BC4405809C8 -:102138005F1858A75F091268C34130063008FB686A -:10214800000B580EC430F4CC003AFAC9FFF5FC076E -:102158000D0A16985898F1DCE9082D0812F8149E13 -:10216800580ACF6112955806C0C10C970699089A6B -:102178000A9B049CF01F001A0E0C2FDDE3CD80FC97 -:102188005804C140EDB30001C1115802C230640ABD -:1021980032D9B48964082FF8850820143017CE7B0B -:1021A800580BCCC45C3E3016CCAB129532D83007F5 -:1021B8000AF8CDDB109A3308BA9B0699BA881A9B9D -:1021C800F01F00072FDDE3CD80FCFAC9FFF512955B -:1021D800CCBB32DCF01F0003CE1B00008000204C7B -:1021E80080002680D431201D189516971496178CD8 -:1021F800580CE08000B43004325132D033033092AE -:10220800E20C1800C1705805C6E06A09B28C6A0869 -:102218002FF88B082FF42FF70F8C580CCF21580567 -:10222800EBF91000F9B80100F3F81E00089C2FFD27 -:10223800D8322FF70F8A580ACF30E20A1800C500A3 -:10224800E00A1800F9BC0100F7B700FFF9BC00016B -:10225800EFFA0800C0482FF7A1BC0F8AE60A180059 -:10226800CFB0F4C80030E4081800E08B0063300BEE -:10227800F60B0028F40800182FF7F0CB00300F8A6F -:10228800F4C80030E4081800FE98FFF43738F00A64 -:102298001800C2C03648F00A1800C3403708F00AD0 -:1022A8001800C3E03788F00A1800C4503588F00ACF -:1022B8001800C4903758F00A1800C4803638F00A5D -:1022C8001800CAA16C08BA8830081899169ABA98E2 -:1022D8001A9B0A9C2FC6F01F00231804C9DB325C26 -:1022E8005805C941F01F0020C96B0D081899169AA6 -:1022F8000A9C49EB5808F00B1710F01F001A180435 -:10230800C8BB361916981AD930AA1ADC30196C0BC2 -:102318000A9C2FC6F01F00162FED1804C7DB3619CC -:10232800308A1AD916981ADA30096C0B310ACF1B81 -:10233800300BCADB169836191AD9310A1ADC30095B -:102348006C0BCE7B16983419CF8B361916981AD980 -:1023580030AA1ADC30096C0BCDCB1894C61B0000D0 -:102368008000204C80002680800034008000211CE2 -:10237800D401189BFACAFFFC300CF01F0002D802E7 -:10238800800021ECEBCD40E014951696A98CF01F47 -:1023980000095805C0A03007F01F0007EC070B0C18 -:1023A8002FF70E35FE9BFFFAF01F0004E3CD80E007 -:1023B80080002E7C80002F3080002D14EBCD40E073 -:1023C80014951696A98CF01F00095805C0A030076F -:1023D800EC07070C2FF7F01F00060E35FE9BFFFADF -:1023E800F01F0004E3CD80E080002D9C80002E20AB -:1023F80080002CC8EBCD4040204D49BCF8E80008CF -:10240800FAE90008F8EA0000498CFAEB0000304BC2 -:10241800F01F00171A9BFE7C2800F01F00163009D9 -:10242800FE7C2800129A129BF01F0013FE7C2800E5 -:10243800F01F0012302CF01F00121A96204DECE805 -:102448000008FAE90008ECEA0000E06CF980EA1CF0 -:102458000337FAEB0000F01F000B2FCD2FCDE3CD93 -:1024680080400000800034088000341880002C4030 -:1024780080002874800028B480002A2480002C70F2 -:1024880080002FF8EBCD40F8F01F0033F01F003329 -:102498004B3CF01F0034F01F00343018F00C1800CB -:1024A800C5204B2CF01F002FE06701004B0C3006B5 -:1024B800F01F002C4AF40E95C088E2675A4C0C179E -:1024C800E0470100EA0717B0E806000B0C9C0E9ADB -:1024D8000E06F01F0029E2465A4BFE98FFF0E0670F -:1024E80001004A6C3006F01F001F4A550E930E9AE1 -:1024F8004A3B0C9CF01F0023E80600093008EA0854 -:10250800070B138AF40B1800C1312FF82FF9103775 -:10251800FE9BFFF70E06E2465A4BE08B0019E26776 -:102528005A4C0C17E0470100E60717B0CE1BEC0821 -:1025380000081ADA494C1ADB1AD8F01F000A2FDDF6 -:10254800E3CF80F8491CF01F0007CAFB490CF01FB5 -:102558000005CF7B80002008800023FC80028E6C61 -:102568008000237880002FA480028E8480028E8CC5 -:1025780080003420800023C480028EAC0000000854 -:102588008000238C80028EC880028E7C80028EF4AC -:10259800EBCD4040303AE06B1B00EA1B00B7FE7CF5 -:1025A8000C00F01F001A30083019109B308AFE7C8E -:1025B8000C0031061AD6F01F001630083019109B8F -:1025C800129AFE7C0C00F01F0013300BFE7C0C00EE -:1025D800F01F0011FE7C0C00F01F00103009FE7C7B -:1025E8000C001AD9129B1AD91298129AF01F000CD3 -:1025F800301CF01F000C302BFE7C0C00F01F000A72 -:102608002FDDE3CD8040000080002B0C80002AB035 -:1026180080002AD280002AEA80002AF880002A6AEC -:1026280080002C8A80002B0248CD48D0E3B00001FE -:10263800D55348C048C10230C06248C2A505A1248C -:102648000230CFD348A048B10230C0623002300314 -:10265800A1220230CFE3488F000100008000320041 -:10266800000000080000000880028FC00000000879 -:10267800000001E88000248CD401189BFE7C18001F -:10268800F01F0002D802000080002742EBCD404036 -:10269800203D30083049FB680008BA383088500CB3 -:1026A8001696BAC8302BBAD9486CF01F00070C9A96 -:1026B8001A9BFE7C1800F01F00052FDDE3CD80403B -:1026C80080028F1C80002C40800027ACD401189B0E -:1026D800E06CE100F01F0002D802000080002694A0 -:1026E800D401F6081503A56B143BF9BE0810F00BCE -:1026F80017B0F9BE0B08F6091601F20A0039F20BF9 -:102708000D08109AF00B1603F6C80001E048FFFE0A -:10271800E08B00147818E8690000E418FFF7E01867 -:10272800FECF590EF9B9000010499919F1DAC00322 -:10273800F7E811089988D80ADA0A58ABC0F0E069B6 -:10274800270F7858EDB80001C051F1DBC00999781E -:102758005EFD5809C1002019CF5BE069270F785842 -:10276800EDB80001C04130D89978CEAB5809C030D7 -:102778002019CF6B5EFEE1B80000EDB80010C0E094 -:10278800D3033FF899387858D503300899189998A1 -:1027980099A8EA69610C99095EFC3FF8993878585C -:1027A800CF5BD703D421169714951896F01F002EE7 -:1027B8005807C2000FC93048F0091800E088001B0C -:1027C8003094E8091800E08B00160FD93078F0092A -:1027D8001800E08B00108E39E0680101F00919003B -:1027E800E08B0009EF3900083038F0091800E0885C -:1027F8000003DA2A0A9A6E0B0C9CF01F001C581C66 -:10280800CF900FC9E8091800C2906C182059F1E957 -:1028180010688D18EF3900086C1A0FD8A978F1E9FB -:1028280010E814488D1830288E39F0091900E0880E -:1028380000106C18ADB88D188EB920298DA96C18A8 -:10284800E018FFF08D183509300C8D09D8226C1866 -:102858005C79F1E910C88D18CF3B6C18B1B88D18A8 -:10286800CDAB00008000277E800026E8D401301818 -:10287800F739000DF0091800E0880005302E1C9C7F -:10288800D802E068008030199908300A7818F73BB8 -:10289800000D149EF1D9D00130F9F1DBD081F1DAC5 -:1028A800D0E1F1D9D20499181C9CD802EBCD408014 -:1028B8003018149E1297F00A18005FBAF00B18002F -:1028C8005FB91449C0B17818F1DBD021F1DED041ED -:1028D800F1D7D3089918E3CF8080302CE3CD8080DE -:1028E800D4017818189EEA18000F9918781CE21C71 -:1028F8000004C08030E8F00B1800E0880013302C8A -:10290800D8023038F00B1800FE9BFFFB7C1AF6C883 -:10291800FFF03019F20809495CD914699D19D802E9 -:102928007C19F6081510300CEA18FFF0E818FFFFBC -:1029380012689D18D802E0692710C0485809C0E0FD -:1029480020197848EDB80009CFA17818EA18000FC7 -:102958009918FC19010099095EFD5EFFEBCD40FC5A -:1029680030321893F73C000CE40C1800E08B000997 -:10297800F735000B3014E8051800E0880005302C06 -:10298800E3CD80FCF73E00083078F00E1800FE9882 -:10299800FFF83108F00E1800FE9BFFF37618F009D7 -:1029A8001601F4090009F2080D06ECCA0001E04A14 -:1029B80000FEFE9BFFE65806CE35FCC90008F80865 -:1029C8001601300AEC1C0001F5D8D001178EF5DC91 -:1029D800D021F7380009F5D5D061F5D9D084F73979 -:1029E800000AF5D6D108F5D8D208F5D9D308E80EEB -:1029F8001800C0F0C0B33028F00E1800C0D0E40EA4 -:102A08001800CBE187FAE3CF80FC87CAE3CF80FCCC -:102A180087DAE3CF80FC87EAE3CF80FC3018990897 -:102A28005EFCE0692710C0485809C0A02019784802 -:102A3800EDB80001CFA1F1DBC01099385EFD5EFF53 -:102A4800E0692710C0485809C0C020197848E21822 -:102A58000201E0480201CF817828300CB6085EFCFC -:102A68005EFFEBCD40E0FAC5FFF018976A166A0ED4 -:102A7800EDD6C003FDDEC001300CF9D6D003F9DE77 -:102A8800D0E1F9D6D103F9DED1E1F9DAD203F9DBE5 -:102A9800D2E1F9D8D303F9D9D3E18F1C6F58EDB837 -:102AA8000005CFD1E3CD80E0EBCD4040300E40268D -:102AB8002F8BFDD8D021FDD9D104FDDAD204FDD663 -:102AC800D306F80B092EE3CD80402F8BF5E91019BA -:102AD800F3E81029F80B0328F1D9D043F80B09289B -:102AE8005EFC2F8BF80B0328A1A8F80B09285EFCC5 -:102AF8007958EDB80000CFD15EFC7808F1DBD00240 -:102B080099085EFCEC5BBB9FE08B0018304B78A803 -:102B1800F1DBD00399A878A9F3DAD10399A9780849 -:102B2800A3A899087958EDB80007CFD178083019CB -:102B3800F1D9D00299085EFCE068C6BFEA18002DFA -:102B4800103BE088000CE0681200EA18007A103B9D -:102B5800F9BB0306F9BB0207CDBB305BCD9BC008B0 -:102B6800EBCD40C048E8E3B8000148E9300C7206F4 -:102B780048DE48E9FE770800720B580BC070721ADD -:102B8800300814AE2FF81638CFD3EE0C09262F894B -:102B98002FFC594CCF21E3CD80C0000080003200CB -:102BA8008000333C80002B6680028F20E068008321 -:102BB800FE790800F00C010CF20C032AF4C8FFC0DF -:102BC800F208032C580C5E0CF80812004859F0085B -:102BD800111FF20A0039721AF408032C5EFC000077 -:102BE80080028F20F8081605F0091508E029F00082 -:102BF800581BC150C0823018F00C094C936C93AC30 -:102C0800932C5EFD582BC110583BC0205EFF301836 -:102C1800F00C094C935C939C932C5EFDF60C094CCC -:102C2800935C93AC932C5EFD3018F00C094C936CBC -:102C3800939C932C5EFDD703D42118961694580BB9 -:102C4800C0F030050A970D9B0D8C2FF72FE6F01F6B -:102C5800000618450E34FE9BFFF80A9CD8221695EC -:102C6800CFDB000080002BEC3018F00C0948A59C45 -:102C7800A96CE02CF000F9480054F9480044991870 -:102C88005EFCFE6914007208F1DCD0C193085EFC9A -:102C9800D401580BC091F8CBFFFEFE7C28005C5B8A -:102CA800F01F0006D802F8CBFFFEFE7C28005C5B14 -:102CB800F01F0003D80200008000293E800028E8A9 -:102CC800EBCD408048E76E0CF1DCC008C0D0300B7B -:102CD800FE7C2800F01F000B6E08F0CCFFFF8F0C65 -:102CE800F1DCC008CF51F9DCC288300BF01F0006B8 -:102CF80030194868B089E3CD80800000000001E009 -:102D080080002A2A80002C98000001E4D401486839 -:102D1800300B700CF9DCC288F01F000430094848F9 -:102D2800B089D802000001E080002C98000001E47E -:102D3800EBCD40C0201D301B49366C0CF9DCC28835 -:102D4800F01F0012E06B00D7FE7C2800F01F001077 -:102D5800FAC7FFFEE06B00FFFE7C2800F01F000CA6 -:102D68000E9BFE7C2800F01F000B9A98EDB8000718 -:102D7800CF216C0C300BF9DCC288F01F00042FFD4A -:102D8800E3CD80C0000001E080002C9880002A2A52 -:102D980080002A48EBCD40C0201D49B6A96C8D0C97 -:102DA80049A730080F89F0091800C030F01F001833 -:102DB80030086C0CAE88F9DCC288301BF01F001597 -:102DC800E06B0082FE7C2800F01F00136C08F7D827 -:102DD800C008F1D8C10CFAC6FFFCF7E8109BFE7CCE -:102DE80028000CDBB18BF01F000C0DABFE7C28001B -:102DF800F01F00090DBBFE7C2800F01F00072FFD07 -:102E0800E3CF90C0000001E0000001E480002D380D -:102E180080002C9880002A2AEBCD40E049151896AE -:102E28000B893008F0091800C16148F70C9BFE7C3B -:102E38002800F01F000E6E08F0CCFFFF8F0CF7DCA7 -:102E4800C008C071F9DCC288F01F00093018AA88D0 -:102E5800E3CF90E048476E0CA98CF01F0006CE7BAC -:102E6800000001E4000001E080002A2A80002C987C -:102E780080002D9CEBCD40C0201D4A76A96C8D0C9E -:102E88004A6730080F89F0091800C030F01F002485 -:102E980030086C0CAE88F9DCC288301BF01F0021AA -:102EA800E06B00D2FE7C2800F01F001F6C08F7D8EA -:102EB800C008F1D8C10CFAC6FFFCF7E8109BFE7CED -:102EC80028000CDBB18BF01F00180DABFE7C28002E -:102ED800F01F00150DBBFE7C2800F01F0013E06BEF -:102EE80000FFFE7C2800F01F0010E06B00FFFE7C56 -:102EF8002800F01F000DE06B00FFFE7C2800F01F8B -:102F0800000AE06B00FFFE7C2800F01F00072FFD81 -:102F1800E3CF90C0000001E0000001E480002D38FC -:102F280080002C9880002A2AEBCD40C0201D4966DD -:102F380030090D88F2081800C1F14947E06B00FF1D -:102F4800FE7C2800F01F0012FACBFFFEFE7C280052 -:102F5800F01F00106E08F0CCFFFF8F0CF7DCC008E4 -:102F6800C071F9DCC288F01F000C3018AC881BBC9B -:102F78002FFDE3CD80C04857AC896E0CA98CF01F9B -:102F88000007CDDB000001E4000001E080002A2AF0 -:102F980080002A4880002C9880002E7CEBCD404091 -:102FA800201D3008FAC6FFFC301B0CE8300CF01F5F -:102FB800000EE06B00D7FE7C2800F01F000CE06BD1 -:102FC80000FFFE7C2800F01F00090C9BFE7C2800F7 -:102FD800F01F0007300B169CF01F00032FFDE3CFF6 -:102FE8009040000080002C9880002A2A80002A48FF -:102FF800EBCD40E03028FAC7FFF01896AE88109560 -:10300800C028AE880C9A0E9BFE7C2800F01F000892 -:10301800C0C10F882FF85C58EA081800FE98FFF323 -:103028004848B08CE3CF90E0E3CF80E0800029648B -:04303800000001E4AF -:10320000C0080000C0080000C0080000C00800009E -:10321000C0080000C0080000C0080000C00800008E -:10322000C0080000C0080000C0080000C00800007E -:10323000C0080000C0080000C0080000C00800006E -:10324000C0080000C00800000000000000000000EE -:10325000C0080000000000000000000000000000A6 -:10326000C008000000000000000000000000000096 -:10327000C008000000000000000000000000000086 -:10328000000000000000000000000000000000003E -:10329000000000000000000000000000000000002E -:1032A000000000000000000000000000000000001E -:1032B000000000000000000000000000000000000E -:1032C00000000000000000000000000000000000FE -:1032D00000000000000000000000000000000000EE -:1032E00000000000000000000000000000000000DE -:1032F00000000000000000000000000000000000CE -:10330000C0080000300CF01F0012580CF80F171006 -:10331000D603301CF01F000E580CF80F1710D60300 -:10332000302CF01F000B580CF80F1710D603303C50 -:10333000F01F0007580CF80F1710D6030000010407 -:103340004000011280000120C000012E80002BB43B -:10335000000000000000000000000000000000006D -:10336000000000000000000000000000000000005D -:10337000000000000000000000000000000000004D -:10338000000000000000000000000000000000003D -:10339000000000000000000000000000000000002D -:1033A000000000000000000000000000000000001D -:1033B000000000000000000000000000000000000D -:1033C00000000000000000000000000000000000FD -:1033D00000000000000000000000000000000000ED -:1033E00000000000000000000000000000000000DD -:1033F00000000000000000000000000000000000CD -:10340000286E756C6C2900000200000000B71B00DC -:1034100008000001000100000F011101100113015B -:103420001061040000000000300000001061040082 -:103430003861040000000000020000002061040068 -:10344000306104000000000004000000306104004E -:1034500000000000000000000000000010610400F7 -:103460003C0000000000EEEEEEEE18F09FE518F0D4 -:103470009FE518F09FE518F09FE50000A0E118F027 -:103480009FE518F09FE544000000B4080000B40870 -:103490000000B4080000B408000000000000E408C8 -:1034A00000003C003C00000000090000000000009B -:1034B00000000FE11F00C0E3130080E3C00080E3C1 -:1034C00000F02FE11CF09FE53D0200EB5A0200EBFB -:1034D0008D0200EB01008FE210FF2FE141F0DEFBD7 -:1034E00001F0DCFD3C0078000000FEE700005C001D -:1034F00000007847C046010000EA7847C046170040 -:1035000000EA8C119FE5002091E500300FE1841165 -:103510009FE5FD20A1E880019FE580219FE5012036 -:1035200042E00D0040E03C00B4000000020050E129 -:10353000280000AA68019FE50D0050E1020000BAD2 -:10354000042010E4042081E4FAFFFFEA58119FE50B -:1035500058019FE5000081E53C119FE550019FE582 -:10356000000081E51EFF2FE13C00F0000000481143 -:103570009FE5000091E524119FE5000081E52C11F5 -:103580009FE538019FE5000081E51EFF2FE17402F1 -:1035900000EB10019FE528119FE5042091E4042031 -:1035A00000E404219FE5020051E13C002C010000F1 -:1035B000FAFFFF1AF0109FE5FD20B1E803F02FE1BC -:1035C000E0109FE5002081E5E8109FE5F4209FE5ED -:1035D000002081E5021080E2000020E0010040E2CE -:1035E00011FF2FE101008FE210FF2FE13C00680185 -:1035F000000001F09CF87847000001008FE210FF06 -:103600002FE101F094F87847000003002DE9001045 -:103610000FE1001080E5B8109FE5041080E5001070 -:10362000A0E1100080E2FC1FA0E80020A0E13C0027 -:10363000A40100000130A0E10300BDE8080083E51B -:103640000C1083E5D300A0E300F021E10060A2E8C4 -:1036500000104FE1041082E4D200A0E300F021E169 -:103660000060A2E800104FE1041082E4D100A0E362 -:103670003C00E001000000F021E1007FA2E8001022 -:103680004FE1041082E4D700A0E300F021E10060E4 -:10369000A2E800104FE1041082E4DB00A0E300F098 -:1036A00021E10060A2E800104FE1001082E5000077 -:1036B00093E53C001C02000000F02FE11EFF2FE10B -:1036C000200000000403000020EE0100D8030000E9 -:1036D0000000000018F09FE5100100000803000042 -:1036E000EEEEEEEE2403000020020000B0B5041C54 -:1036F000631C0B4D3C005802000001D16C6910E0C6 -:1037000000F06CFB0948FFF70CFFEC60084A5168B9 -:1037100050688842FCD00220287001218A2001F0E4 -:1037200012F8201CB0BD3000070051020000000359 -:103730000700B0B5051C3C0094020000002400F016 -:1037400050FB1448FFF7F0FE13491448C1600121F3 -:10375000134A490391601349CA7808239A43CA70EF -:10376000CA7804231A43CA706B1C0DD00E4B5A68DA -:1037700059689142FCD0BE213C00D0020000197370 -:10378000197A112291431972197AC907FCD40221BE -:103790000170FFF7D0FE201CB0BD91020000FFFFBA -:1037A000FF003000070000100700000007000003C2 -:1037B000070000000000000000003C000C030000B7 -:1037C00000000000000000000000000000000000F9 -:1037D00000000000000000000000000000000000E9 -:1037E00000000000000000000000000000000000D9 -:1037F0000000000000000000000000003C00480342 -:1038000000000000000000000000000000000000B8 -:1038100000000000000000000000000000000000A8 -:103820000000000000000000000000000000000098 -:1038300000000000000000000000000000003C004C -:1038400084030000000000000000000000000000F1 -:103850000000000000000000000000000000000068 -:103860000000000000000000000000000000000058 -:103870000000000000000000000000000000000048 -:103880003C00C00300000000000000000000000039 -:1038900000000000000000000000000000000047E1 -:1038A000084710471847204728473047384710B582 -:1038B000041C101C00F023F903C410BC08BC1847FA -:1038C00000003C00FC03000010B4042A0ED3031CCB -:1038D0000B439B070AD108C810C9A34202D1043A7E -:1038E000042AF8D2A34201D004380439002A02D1B4 -:1038F000002010BC7047D30701D5013205E00378E2 -:103900000C7801313C00380400000130A34207D19B -:1039100003780C7801310130A34201D1023AF1D190 -:10392000181BE9E70000784700000020A0E304002E -:1039300051E30800003A03C010E20D00000A04C081 -:103940006CE202005CE33C00740400000120C0E46F -:103950000120C0A40120C0C40C1041E0060000EA10 -:1039600081CFB0E10120C0240120C0240120C04447 -:103970001EFF2FE1784700000020A0E300402DE962 -:103980000230A0E102C0A0E13C00B004000002E06F -:10399000A0E1201051E20C50A0280C50A0282010CB -:1039A0005122FBFFFF2A011EB0E10C50A0280C00A1 -:1039B000A0480040BDE80111B0E1042080241EFFB2 -:1039C0002F010120C0440120C0443C00EC04000051 -:1039D000400411E30120C0141EFF2FE178470000CE -:1039E000030052E33E00009A03C010E20800000A00 -:1039F0000130D1E402005CE30C2082E001C0D194EC -:103A00000130C0E40130D134042042E23C002805FA -:103A1000000001C0C0940130C034033011E21E0028 -:103A2000000A042052E22F00003A03C031E70200EE -:103A300053E30800000A0F00008A2C34A0E104C000 -:103A4000B1E5042052E20C3C83E1043080E43C0008 -:103A500064050000F9FFFF2A011081E2230000EA5B -:103A60002C38A0E104C0B1E5042052E20C3883E117 -:103A7000043080E4F9FFFF2A021081E21B0000EA13 -:103A80002C3CA0E104C0B1E5042052E20C3483E1F7 -:103A90003C00A0050000043080E4F9FFFF2A031079 -:103AA00081E2130000EA7847000010402DE9202051 -:103AB00052E20500003A1850B1281850A0281850BA -:103AC000B1281850A02820205222F9FFFF2A02CE48 -:103AD000B0E13C00DC0500001850B1281850A028C7 -:103AE0001800B1481800A0481040BDE802CFB0E16E -:103AF00004309124043080241EFF2F01822FB0E176 -:103B00000120D1440130D12401C0D1240120C0447E -:103B10000130C0243C001806000001C0C0241EFF74 -:103B20002FE178470000FF3001E20210A0E10324FA -:103B300083E1022882E188FFFFEA784700008024C1 -:103B400010E200006042413032E000106122A1C169 -:103B500070E02000003A3C005406000021C470E0F0 -:103B60000F00003A0004A0E1FF2482E321C270E0CC -:103B70001700003A21C470E00900003A0004A0E1F7 -:103B8000FF2882E321C470E00004A021FF2C8223DF -:103B900021C270E00E00003A3C009006000000C018 -:103BA00070E28300002A2004A021A1C370E08013EA -:103BB00041200220A2E021C370E000134120022036 -:103BC000A2E0A1C270E0801241200220A2E021C246 -:103BD00070E0001241200220A2E03C00CC06000070 -:103BE000A1C170E0801141200220A2E021C170E05B -:103BF000001141200220A2E0A1C070E0801041200D -:103C00000220A2E001C070E0001041200220B2E0DA -:103C1000E5FFFF2AC30F32E0A30F80E03C00080756 -:103C20000000001061221EFF2FE1784700000020F5 -:103C3000A0E3A1C170E02000003A21C470E00F00B1 -:103C4000003A0004A0E1FF2482E321C270E01700E3 -:103C5000003A21C470E00900003A0004A0E13C00F1 -:103C600044070000FF2882E321C470E00004A02183 -:103C7000FF2C822321C270E00E00003A00C070E2E7 -:103C80005000002A2004A021A1C370E0801341202D -:103C90000220A2E021C370E0001341200220A2E034 -:103CA0003C0080070000A1C270E080124120022089 -:103CB000A2E021C270E0001241200220A2E0A1C1D6 -:103CC00070E0801141200220A2E021C170E00011CB -:103CD00041200220A2E0A1C070E08010412002201B -:103CE000A2E03C00BC07000001C070E000104120D1 -:103CF0000220B2E0E5FFFF2A0200A0E11EFF2FE153 -:103D0000784700000A1040E2200140E0200280E0F5 -:103D1000200480E0200880E0A001A0E1002180E0F4 -:103D2000821051E03C00F8070000010080520A10A8 -:103D300081421EFF2FE130B4441C810708D0017876 -:103D40000130002902D1001B30BC70478107F6D139 -:103D50000B4AD50102C88B1A8B432B40FAD0001BAB -:103D60000A0601D103383C0034080000EFE70A04DA -:103D7000120E01D10238EAE70902090EE7D1013833 -:103D8000E5E7000001010101F0B4031C041C0C4331 -:103D9000A4070CD1104DEF0102E00431043A10C326 -:103DA000042A04D30C68661B3C0070080000A6437C -:103DB0003E40F5D0002A07D00C7801311C70013349 -:103DC000002C03D0013AF7D1F0BC7047012AFBD98F -:103DD000511E00221A7001330139FBD1F4E70101B1 -:103DE0000101784700000200A0E33C00AC0800009D -:103DF0000210A0E32EFEFFEA1F402DE900000FE1B4 -:103E0000C00080E300F02FE18100A0E30210A0E3F6 -:103E100001208FE212FF2FE100F0E6FC784700005E -:103E20001F40BDE8FEFFFFEA1F502DE93C00E808F7 -:103E3000000001008FE210FF2FE100F040FB784707 -:103E400000001F50BDE804F05EE21F502DE90100A4 -:103E50008FE210FF2FE100F018FB784700001F50A1 -:103E6000BDE804F05EE200BD01B500A000473C00E3 -:103E70002409000000300FE1C030C3E303F021E16A -:103E800001008FE210FF2FE101BD01B500A0004746 -:103E900000300FE1C03083E303F021E101008FE245 -:103EA00010FF2FE101BD000018009FE5041090E411 -:103EB0003C0060090000000051E30200000A0420F9 -:103EC00090E4002081E5F9FFFFEA0EF0A0E17C0913 -:103ED0000000000000004400000044000000D8037F -:103EE0000000D8030000D80300000000000000001C -:103EF00000003C009C090000440000004400000059 -:103F0000440000000080010000800100108E0100CC -:103F1000108E010088F8010001000000001004006C -:103F2000C433040000000400000000000E50A0E1B3 -:103F300058409FE53C00D8090000040094E40100CB -:103F400050E305F0A001041094E4042094E403007D -:103F500000EB040094E4041094E4070000EBF5FF88 -:103F6000FFEA010050E10EF0A001020051E104302F -:103F70009014043081143C00140A0000FBFFFF1A67 -:103F80000EF0A0E114209FE5002092E5010050E131 -:103F900004208014FCFFFF1A0EF0A0E1800900004D -:103FA000CC0900000008000020E60100130000001A -:103FB0005356435F000400003C00500A000020EE0E -:103FC0000100120000004952515F0002000020F27F -:103FD0000100110000004649515F8000000020F4FC -:103FE0000100170000004142545F00000000A0F4EF -:103FF00001001B000000554E445F3C008C0A00008D -:1040000000000000A0F401001F0000005553525FA3 -:10401000010000000E50A0E100600FE18C409FE520 -:10402000041094E4010051E30900000A040094E440 -:10403000011080E00310C1E3042094E43C00C80AAE -:104040000000C02082E302F02FE104D041E204200E -:1040500094E4130000EBF2FFFFEA06F02FE105F015 -:10406000A0E10E50A0E100600FE144409FE5041084 -:1040700094E4010051E30800000A040094E43C00C9 -:10408000040B0000011080E00310C1E3042094E45D -:10409000C02082E302F02FE104D041E2042094E446 -:1040A000F3FFFFEA06F02FE105F0A0E1010050E187 -:1040B00004208014FCFFFF1A0EF0A0E13C0A00006F -:1040C0003C00400B00000160C046C046C04670473F -:1040D0000000101E10EE020011E3FCFFFF1A100E8C -:1040E00001EE101E10EE020011E3FCFFFF1A1EFF8E -:1040F0002FE1101E10EE010011E30300000A101E54 -:1041000011EE3C007C0B0000001080E50100A0E3F4 -:104110001EFF2FE1000020E01EFF2FE18D46974695 -:104120007847C04678FDFFEA10B5041C032801D982 -:1041300000F0ACFB0C484068002800D003240B487A -:10414000016809483C00B80B00001230002905D076 -:1041500006216143405CC300181804E00621614356 -:10416000405C142358430A300006000E10BDD47A78 -:104170000100A869010080B5094A0949032000F03F -:10418000F2F9084908203C00F40B00000860486080 -:1041900007491D2001F0B2FC06491E2001F0AEFCCB -:1041A00080BD0000006C01003127000000100700F6 -:1041B0002925000031250000054980B508208860C8 -:1041C0001D2001F0BFFC1E203C00300C000001F05F -:1041D000BCFC80BD000000100700021C081CD12A96 -:1041E00080B501D105F019FC80BD034980B50020E0 -:1041F0000880052005F0D5FB80BDB074010080B5B6 -:10420000542801D106F0CDF880BD3C006C0C0000B4 -:10421000B0B5104D021C0124012A0D48296806D0B2 -:10422000C42A03D16A68002A05D0AC60B0BD0EF084 -:1042300089FB6C6008E00022AA606C600EF082FBD3 -:104240000021042012F0C8FC06F0D8F83C00A80CAD -:104250000000B0BD0000C4600100BC740100054A4C -:104260005169081A116909681031814201D85061F9 -:104270007047002070478C6E010001494968401A60 -:1042800070478C6E010001484069704700003C0097 -:10429000E40C00008C6E0100024A5169081850615C -:1042A000704700008C6E01000E490F4810B51922AE -:1042B000920141608918C1600B4900220C310160F4 -:1042C0000A49826009680123DB03C918084C41616F -:1042D0003C00200D00002168002902D0074901613F -:1042E00001E000F00CF8226010BD44DC01008C6E8F -:1042F0000100C809000034580100C4090000014849 -:10430000024908617047C80900008C6E0100082846 -:1043100005D23C005C0D0000034B8000195002499F -:1043200020310A5070470000646D010070B5061C12 -:104330000D480D1C0068141C002803D1201C00F03F -:1043400009FC70BD280601D500F022FE221C291CA4 -:10435000301C08F03C00980D0000DDFD011C0348F6 -:1043600054304369321CFFF71BFB70BD0000506DD9 -:104370000100F8B5061C0D481F1C0068151C0C1C1C -:10438000002802D1281C00F0E8FB200601D500F02F -:1043900002FE2A1C211C3C00D40D0000301C08F039 -:1043A000BDFD011C0348543043693A1CFFF7FBFA7A -:1043B000F8BD0000506D0100F8B5F1284ED12A4833 -:1043C00069468269FFF7EEFA274900265439C86822 -:1043D0008B68C2000130D5183C00100E0000072881 -:1043E000C86000D1CE6022486C680068002803D005 -:1043F0000021201C08F03BFB6E6025682089A9780D -:104400000239401AE978401A2081A8782818023821 -:1044100020606E782878082817D23C004C0E0000E7 -:10442000300607D5271C201C00F07AFC041C381C21 -:1044300000F09CFB28780F49403980000A58002A78 -:1044400004D0311C201CFFF7B3FA08E0052100E07E -:104450000421062000F010FA201C00F03C00880E19 -:10446000000087FB300601D500F0A1FDF8BD012159 -:10447000062000F004FAF9E70000A46D0100CC5C0E -:104480000100F8B51A4D194F01245435291C032099 -:104490007C60174B184A05F0F4FB002802D03C0062 -:1044A000C40E0000002038601FE03C600721281C7B -:1044B000EA69FFF783FA382000F080FC0024B86036 -:1044C000B868E60035186846022100F075FB2860E0 -:1044D000281C00F0A5FDB868815906485430026ACE -:1044E0003C00000F0000FFF76CFA0134072CEADBF8 -:1044F0000020F8603861F8BD0000506D0100819A1D -:104500000000619A0000054880B50068002805D0C9 -:1045100003485430426A0021FFF753FA80BD506DC2 -:1045200001003C003C0F00007047000070B50A4ECF -:10453000094D084C083EA169002907D03068416048 -:10454000007B81006958FFF73EFAF4E70349022037 -:10455000087070BD00100700E07E01000002070037 -:1045600070B50A4E3C00780F0000094D084C083E1B -:10457000E169002907D070684160007B81006958BB -:10458000FFF724FAF4E703490220087070BD001019 -:104590000700E07E010000020700B0B5094D041CD1 -:1045A000281C202240303C00B40F00000549FFF7D2 -:1045B0009FFAE068E86020692861A06AA8626068E4 -:1045C0006860B0BD7052010000100700F8B500240B -:1045D0000023202801DB012407E0084E8000355825 -:1045E000074FBD4200D02B1C3C00F00F00003150A3 -:1045F0001360002C03D0211C822000F052F9201CF3 -:10460000F8BDE07E010075750000B0B50B4D041CCF -:10461000286800280FD0201C12F0B7FD00280AD00F -:10462000217A287A0A070007000F3C002C100000AE -:10463000120F9042297201D00120B0BD0020B0BD00 -:1046400070780100F0B5424E051C306885B0002836 -:1046500063D000240020002D06D06978182903D1EA -:10466000E979012900D10120002845D03C006810DB -:1046700000000020B07281004A19937A5906890F10 -:10468000DB0604D5B37A01278F403B43B372D27A5D -:1046900013091207120F934205D301228A401443D3 -:1046A00001AA8900505001300428E4DBB07A3C00B4 -:1046B000A4100000204001070DD5410709D5C1070E -:1046C00005D5810701D5002405E0029902E0019992 -:1046D00000E003990491410709D5C10705D5810779 -:1046E00001D5002403E0029900E001990391C1077C -:1046F0003C00E010000005D5810701D5002401E051 -:1047000002990191800701D5002422E00F2C20D1CD -:10471000706800280BD0049A02AB00920ACB019A71 -:10472000281C0BF08AFB0020706010E017E0307A44 -:10473000297A3C001C11000000070907090F000F2F -:10474000884207D0049A02AB00920ACB019A281C37 -:104750000BF076FB287A307201200F2C00D000205D -:1047600005B0F0BD0120FBE7707801000D4A70B57F -:10477000116800203C005811000000290ED0117A69 -:1047800009060BD5537A947A032101252A1C8A4005 -:104790001E1C164003D0224001D1012070BDFF3104 -:1047A00009060916F2D570BD00007078010010B539 -:1047B000084C206800283C009411000004D0606878 -:1047C000002801D10BF0C0FB00200021002207C40B -:1047D0000C3C0120606010BD70780100014901208F -:1047E0000860704770780100F8B50E4D041C002079 -:1047F0006872201C12F0DEFC3C00D0110000002882 -:1048000012D00020032101220F1A161C237ABE4069 -:10481000334004D06B7A161C864033436B720130F0 -:104820000006000E0328EFD9F8BD70780100920051 -:1048300051188A7A1207120F02703C000C12000005 -:10484000CA7A1207120F4270CA7A12098270097B63 -:1048500081807047034A0F21527A0120914300D092 -:10486000002070477078010040070549400F054A55 -:104870000956527A01200A4000D100203C0048121B -:104880000000704700005E46010070780100124A87 -:1048900070B5537A947AFF20032101252A1C8A409F -:1048A0001E1C164014D0224012D10806000E07D05C -:1048B000012807D0022807D0032807D107203C0091 -:1048C0008412000070BD032070BD012070BD052062 -:1048D00070BDFF2070BDFF3109060916E1D570BD1E -:1048E00070780100F8B5041C13480D1C816800297C -:1048F00005D0017B002901D104734573F8BD0F4E2B -:104900003C00C0120000311C20318A7900AB1A70C3 -:10491000C97959704268002A07D020022843011C37 -:104920000020FFF77EF8002804D12A1C211C00205B -:1049300011F00FF800AB1888F084E2E70000885A05 -:1049400001003C00FC1200000010070080B50121AE -:104950008120FFF7CDFF80BD0149012088607047AD -:10496000885A0100054980B500208860087B00282E -:1049700002D0497BFFF7BCFF80BD0000885A0100D0 -:10498000024A011C3C003813000050685160704717 -:104990000000885A010010B50C1C07F064FA04618D -:1049A000002010BD0000FFB50E1C1F1C382081B078 -:1049B00000F03DFA1D49041C4869002801D14C61F2 -:1049C00000E0046030013C0074130000009000041B -:1049D000000C00F015FA051C0099FFF78BF8002079 -:1049E000731E04E001014A1910326A5001309842E6 -:1049F000F8D300012D503821201CFFF77BF8A5606B -:104A00006560E6850C2060863C00B0130000AF2096 -:104A10008001E0610E20E086002020600198E060C7 -:104A2000386860610399044808600448386005B03C -:104A30000020F0BD0000FC5A0100DD150100FD164C -:104A40000100021C081CF02A80B53C00EC13000099 -:104A500004D0F12A07D106F009FB80BD07F00CFA5B -:104A60000DF0A8FA80BD01210220FFF74DFF80BDA7 -:104A70000149002048617047FC5A0100002802D01B -:104A8000002900D0C1607047F8B5171C3C002814FD -:104A900000000E1C051C1C1C1C3007F0C8F8016926 -:104AA000426980688919891A814206D2231C3A1CFE -:104AB000311C281C00F005F8F8BD0020386020608B -:104AC000FAE7FFB585B0059801270E1C1C303C00A5 -:104AD0006414000007F0AEF8041C808804300390D2 -:104AE0002C48049080790290A069B04217D2351A00 -:104AF00011E00398FFF716FC002806D101218E2053 -:104B0000FFF708FF0025002705E02168016020600D -:104B10003C00A0140000A0690130A061013DEBD26F -:104B2000002F35D0A069801BA06120698019206109 -:104B30006169401AE168884203D907218E20FFF796 -:104B4000ECFE25682F1C701E019500E03F680138BF -:104B5000FCD23C00DC140000386820600298049904 -:104B600088712E682C60321D0092291C2031012290 -:104B7000281D059B08F07AFCBD4201D0351CF0E7EA -:104B800000203861019807990430086008980437BC -:104B9000076009B03C0018150000F0BD02980499A8 -:104BA0008871F9E700002010070038B5041C151CB7 -:104BB00000200C6009E0E268201C0092A38A2168B2 -:104BC000A26908F056FC201CE468002CF3D1286090 -:104BD00038BD80B50CE03C0054150000C2688A4224 -:104BE00008D10021C160002803D106218E20FFF7E3 -:104BF0009DFE80BD101C0028F7D0EFE710B5041C07 -:104C00000CD0A069002806D12069002803D006F046 -:104C1000F7FD00202061201C3C009015000006F0EC -:104C2000F2FD10BD000010B5002809D0C46803E0F3 -:104C3000FFF7E7FF201CF9E7002CF9D1FFF7E1FFB0 -:104C400010BD011C002004E00A89C9681018000486 -:104C5000000C0029F8D1704700003C00CC15000082 -:104C600000E0081CC1680029FBD17047F8B5061C9C -:104C70000C1C1C2000F068FA051C002E01D1002C31 -:104C800002D1301C012103E0201C00F05DFA00215C -:104C9000002200920A1C011C231C281C3C00081640 -:104CA000000008F0F2FB281CF8BDB0B503329208F2 -:104CB00092001404240C09191D1CC9180904090CBC -:104CC000FFF7D7FF018902681219091B491B02600F -:104CD0000181B0BD0000F8B50A4CA021201C3C00A9 -:104CE00044160000FEF72AFF0020261CA036074DC0 -:104CF00007E00C21414349190EC9271D0EC7203476 -:104D00000130A642F5D1F8BDD05C0100C83F0100DA -:104D1000F7B5C468061C0025002C82B023D020897A -:104D20003C0080160000904220D3E168871A019170 -:104D30000021E16003990020FFF7A1FF051C2089F5 -:104D4000C01B20812A680399301C00F016F82089C6 -:104D5000C01920810199201CFFF7B1FE211C281CDD -:104D6000FFF73C00BC160000ADFE291C301CFFF70D -:104D7000A9FE0120002D00D1002005B0F0BD0000EB -:104D8000F7B5041C0E1C002001E0201C0C1CE1687F -:104D90000029FAD12789B7420AD3B81B0004000CB6 -:104DA000208121683C00F816000009180298321C86 -:104DB000FEF7FBFEFEBDF11B0D042D0C002819D0E3 -:104DC0000189A94216D3491B0904090C0181006815 -:104DD000411802982A1CFEF7E8FE21680298721B0F -:104DE0004019FEF7E2FE3C00341700002089C01B8A -:104DF00020812068C0192060DFE703218E20FFF7A3 -:104E0000ADFDDAE7F8B5041C002613E02189002087 -:104E1000FFF73EFF051C228921680068FEF7C8FEE7 -:104E2000002E01D12E1C03E03C0070170000291C4D -:104E3000381CFFF750FEE4682F1C002CE9D1301C11 -:104E4000F8BDB0B5041C0089401A050420682D0C7B -:104E50004018291CFFF71FFF2189491B2181E168A8 -:104E6000C160E060B0BD10B503303C00AC1700007D -:104E7000094A810810683D24084B6401890009181B -:104E80001B19994201D8116010BD0F218020FFF736 -:104E90006BFD002010BD0000B4CF010014C801005C -:104EA00010B511F061FF041C03D10D213C00E8177F -:104EB00000008020FFF75BFD201C10BD0000B0B596 -:104EC000011F0B680D480022834204D001321030CC -:104ED000032AF9D301E0032A06D30924211C8020E8 -:104EE000FFF745FD201CB0BD054B00249A793C001E -:104EF0002418000085680D6081609A71F5E7000054 -:104F00002057010020100700B0B50021104A0023EF -:104F1000D468844204D201331032032BF8D301E069 -:104F2000032B01D304210EE00A4CA37990680028DA -:104F30003C006018000002D1A371032106E005685F -:104F40009560A371002901D104C0B0BD8020FFF796 -:104F500014FD0020B0BD2057010020100700A03034 -:104F6000008A4007400F08280FD201A31B5C5B009A -:104F70009F443C009C18000005030305070709092E -:104F800001207047002070470220704703207047BF -:104F900004207047B0B5104D6869002807D00E494D -:104FA00000222C3103C90143032006F0CFFF0B4C34 -:104FB000002203CC3C00D8180000083C0143032029 -:104FC00006F0AFFF03CC084307494A6802434A6032 -:104FD0008A681043886001206861B0BD0000647376 -:104FE0000100B058010010000700B0B50C1C0FF014 -:104FF000A8FA054DE86A3C0014190000002806D103 -:10500000002C04D0201C0FF0B7FD01202870B0BD8B -:10501000F46E0100054980B5886A002804DA002092 -:10502000886201210DF042FD80BD0000AC7E0100D0 -:10503000F8B51E4D041C00203C00501900006862A9 -:10504000A8701C480078C00722D5B82003591A4818 -:1050500000780E2809D10A1C803206D0184E0D2087 -:10506000325C8A4201DD0138FAD1591E0B061B0E53 -:10507000AB70AB620E280BD208E03C008C1900002C -:105080006218B032127B824202D8581AA86202E03B -:1050900001390029F4DA0EF035F9009000AB1878E8 -:1050A0005978814200D95878ED30E8700121201CF0 -:1050B0000DF002FDF8BD0000AC7E01003C00C819F7 -:1050C00000001D75010011670100C75201000E4963 -:1050D00010B508698B68C200D4186268002A0FD125 -:1050E00001300861072801D100200861201C00F070 -:1050F00024F8054821685430026AFEF7ECFC3C00B5 -:10510000041A000010BD06210620FFF74BFC10BD5D -:10511000506D010008490979C907084A08D400E020 -:10512000081CC1680029FBD101890431018100E01C -:105130000020D0627047000060800700046C01000E -:105140003C00401A000010B5041C19218901002000 -:10515000FFF7C5FD011C60602068FFF7E0FC606898 -:1051600021680830086010BD00000A2801DA042018 -:1051700004E0502801DA052000E00720044A1178F5 -:1051800038233C007C1A0000C000184099430843B3 -:105190001070704788000700B0B5051C07484068CC -:1051A00008E00169A94204D1446805F0C7FD201C4C -:1051B00000E040680028F4D1B0BD0000587501003F -:1051C000F8B500253C00B81A000006F084FD114F28 -:1051D000041CBE792068002807D1A0880430FFF79E -:1051E000F2F8002806D101210FE001682160A169D1 -:1051F0000139A16110C0051C20690130206161697D -:10520000401AE16888423C00F41A000003D90721E3 -:105210008E20FFF7D3FBBE71281CF8BD20100700BD -:10522000B0B509F0BBFF2F4C0028207403D001213A -:1052300001200AF071FC2B4D1435286800284DD050 -:1052400001210F2011F082FD3C00301B0000288955 -:1052500008F0FBFF011C01220F2011F040FDE07857 -:105260000125022836D10AF0C6F800280AD00BF032 -:1052700092FB1E490968401811F05FF8002801D11F -:1052800002202FE0E078022824D13C006C1B0000B3 -:1052900060702570606801281CD015481038817B2B -:1052A000002904D185730F20134910F001FC08F088 -:1052B0004FFE002807D00E4801219838006901F000 -:1052C000B7FD002805D001200EF00CFD3C00A81B06 -:1052D000000001200EF01DFCB0BD05F0DCFEB0BDED -:1052E000E078002801D12570F7E7032000E00420D2 -:1052F0000DF08DFAB0BD846601006C570100E90322 -:10530000010070B5041C002100200A4D00E03C00A3 -:10531000E41B00000131CB005A191679012E02D08E -:105320005279A24202D00B29F4D370BD0B29FCD2D2 -:10533000C80001215A192858117170BD3858010050 -:10534000054880B5007F2423044958434018006A6B -:105350003C00201C0000FEF7DAFB80BD0000D47981 -:1053600001009446010080B504F037FF002011F0E1 -:1053700084FC002080BDB0B5054C051C206BE16AA3 -:1053800002F0E3FD291CA06A02F011FBB0BDA46C81 -:1053900001003C005C1C0000B0B5031C081C141C80 -:1053A000002B0C4D09D06969890001310A04120CE7 -:1053B0002280291CFEF73EFC0AE0011C281C2288E2 -:1053C000FEF738FC2088012802D98008013868617E -:1053D0000120B0BD3C00981C0000206E0100F1B51A -:1053E00000980026C168086809891C2934D3C1883F -:1053F000FF23013399422FD10188C91A2CD141884A -:10540000082929D10179062926D14179042923D1F6 -:1054100000250024071C3C00D41C000018370BE0BA -:10542000A000411804310422381CFEF78BFB002831 -:1054300001D1012504E001340A494869A042EFD8AE -:105440000849087800280AD0012801D0022806D18E -:10545000002D04D10098C0683C00101D0000FFF72B -:1054600042FC0126301CF8BD0000206E01000148FE -:10547000406870470000206E01000249486001202A -:10548000486170470000206E010070B5041C0126C1 -:1054900003F0EFFA251C103500283C004C1D0000DD -:1054A00004D00020207703F0F1FB07E003F038FD83 -:1054B000002809D00120207703F0CEFC011C062231 -:1054C000281CFEF7C3FB02E0022020770026301CD8 -:1054D00070BD00000348807AC00703493C00881D66 -:1054E0000000C00F88627047000040900700A46C65 -:1054F00001000149012088627047A46C0100064840 -:10550000807AC107064AC90F91622021800700D422 -:105510000021A032117070470000409007003C004D -:10552000C41D0000A46C0100074A1268074B9B6968 -:105530001A4001D0012200E000220A600121002A65 -:1055400000D000210160704710000700A46C01002A -:10555000012202600A607047B0B50D1C011C583171 -:105560003C00001E0000041C0622281DFEF777FBED -:10557000211C5E310622281C0A30FEF770FB211C1C -:1055800064310622281C1030FEF769FBB0BDFEB561 -:1055900000251D72171C0E1CB26D0021921950328D -:1055A000D27A3C003C1E00001C1C5A720078321C4F -:1055B0008032C007C017013001900898029200287D -:1055C00001D1307F2BE037480068002800DD011C46 -:1055D0000198002802D00898012810D1029A906BF7 -:1055E000002806D03C00781E0000884201D9451AE8 -:1055F000013D7019B03003E0B56D013D70195030B8 -:10560000007B0FE0029A106A002807D0884201D977 -:10561000451A013D7019A030007903E0BD69013DD4 -:105620007819007FA0723C00B41E00000EF00CF848 -:105630000E2811D1A07A08F067FF00280CD07868F6 -:10564000002805D11B480025007808F04BFF02E038 -:10565000451E7819007AA072029A5069002817D066 -:105660000898012814D0A07A3C00F01E000008F031 -:105670004EFF00280FD00198002807D0022020728A -:10568000706C80194030C079607204E07D68013D23 -:105690007819007AA072029AA07A916908F051FFF5 -:1056A0002060029A607A916908F03C002C1F00008B -:1056B0004BFF6060A07AE0722573FEBDD47E0100CE -:1056C000905701000006000E002A8CB501D08A22F6 -:1056D00000E0882200AB1A800CF0C2F80190684606 -:1056E0000BF0BCFA8CBD0000011C08483C00681F90 -:1056F000000080B50068002809D049680220002910 -:1057000000D101200106090E002006F0D8FF80BD5F -:105710000000206701001CB50190041C443001AA60 -:10572000694611F0B8FD00280BD0A06900213C00AB -:10573000A41F0000C207D20F0220FFF7C9FF0021FB -:10574000201C0FF0D9FE1CBD04219820FFF772F930 -:10575000F9E700008CB500AB84211980054B021CD1 -:10576000181C998A0CF08EF8019068460BF07CFAB0 -:105770003C00E01F00008CBD0000707C0100704701 -:105780000000064980B5C96814234031897A044A6B -:105790005943891880000858FEF7E9F980BD707CEC -:1057A00001005447010080B50020FFF7D6FF80BDFF -:1057B00000003C001C20000080B512481149808A7E -:1057C0000A8B00210028C2B00CD1012A05D0022A80 -:1057D00015D000AB5A800E2207E0022200AB5A809F -:1057E000998004E000AB5A800D2200AB9A8000AB98 -:1057F0001880FF203C00582000009871D97168463D -:1058000000F0D1F942B080BD0000707C010010B5FD -:1058100009F05FFC002005F02AF9034CE08A05F04E -:1058200036F9201C0FF0B3FE10BD707C01001CB5D2 -:1058300009F04FFC07203C009420000000AB074C0F -:105840001880E18A201C0CF00BF8019068460BF0E0 -:1058500017FA201C0FF09EFE1CBD0000707C01009A -:1058600080B502219820FFF7F1F880BD10B5154CE6 -:10587000C2B0A08A002803D03C00D020000001283C -:105880001ED1022000E00120E168403188722069C9 -:1058900008F023FD021C0C4818388088E1680FF0DE -:1058A000A4FEA08A00AB18800120588000209880B8 -:1058B000FF219971D871684600F03C000C2100006E -:1058C0007BF942B010BD03219820FFF7C5F8F8E737 -:1058D000707C01007047000080B503480FF060FE47 -:1058E000002005F0CDF880BD707C010080B5024835 -:1058F0000FF056FE80BD0000707C01003C00482186 -:10590000000080B502219820FFF7A9F880BD80B57E -:105910000320FFF734FF80BD0000F0B5214E0027C3 -:10592000B18A301C002504240029008BC3B01ED18D -:10593000012807D0311C498B022812D100293C00D4 -:105940008421000007D1002405E000240125022065 -:1059500000ABD8801F810FF07FFF002C10D1F168C1 -:105960000520403188720EE000291AD100ABD880A2 -:105970000E2002E000ABD8800D2000AB188107E0BC -:105980003C00C0210000301C0FF013FE201CFFF76C -:10599000FCFE002D08D0B08A00AB9880FF209872E2 -:1059A000DF7201A800F011F943B0F0BD0000707C77 -:1059B000010010B5002005F06CF8044CE08A05F0F9 -:1059C00078F83C00FC2100000FF04CFF201C0FF089 -:1059D000F3FD10BD707C010080B50420FFF7D8FEF8 -:1059E00001480FF0E9FD80BD707C010080B5022008 -:1059F000FFF7CEFE012005F05FF802480FF0DCFD56 -:105A000080BD00003C0038220000707C010080B5A1 -:105A10000320FFF7C0FE80BD0000B0B51D4DC2B031 -:105A2000288B00ABFF21588099710021D971AA8A77 -:105A30000024012A18D12A1C528B02280FD1002AD7 -:105A400016D1032058803C007422000099802C1C41 -:105A5000FF22981DE969FEF73BF9E1680420403117 -:105A6000887210E0002A06D101240E2001E00124F2 -:105A70000D2000AB9880281C0FF0A4FD0420FFF738 -:105A80008DFE002C05D0A88A3C00B022000000AB9F -:105A90001880684600F0A5F842B0B0BD0000707CE8 -:105AA000010010B5002005F000F8034CE08A05F075 -:105AB0000CF8201C0FF089FD10BD707C010080B532 -:105AC0000420FFF76EFE01480FF03C00EC220000BE -:105AD0007FFD80BD707C010080B50220FFF764FE71 -:105AE000012004F0F5FF02480FF072FD80BD0000B8 -:105AF000707C010080B50320FFF756FE80BD0000DA -:105B0000B0B5194D0424A98A281C028B3C00282317 -:105B10000000C2B0012914D1408B042A0BD1002807 -:105B200000D100240FF0ADFE002C19D1E96805204A -:105B30004031887217E0002810D100AB5A800E2047 -:105B400002E000AB5A800D2000AB988019803C0029 -:105B500064230000FF2098710020D871684600F08F -:105B600049F842B0B0BD281C0FF038FD201CFFF7EB -:105B700021FEF6E7707C010010B5002004F09EFFC6 -:105B8000034CE08A04F0AAFF201C0FF027FD10BD93 -:105B90003C00A0230000707C010080B50420FFF7CA -:105BA0000CFE01480FF01DFD80BD707C010080B52A -:105BB0000220FFF702FE012004F093FF02480FF0DD -:105BC00010FD80BD0000707C0100B0B50A4D011CC5 -:105BD00044313C00DC230000041C0622281CFEF794 -:105BE00089F8EC60206903F097F8011C0622A818D8 -:105BF000FEF780F80420FFF7F7FDB0BD707C0100D0 -:105C000090B5041C808893B0002806D01549062260 -:105C1000488018313C0018240000881FFEF76DF8FA -:105C200068460CF014F82088012808D16088032801 -:105C300005D1A088002802D106200CA90870A079FF -:105C40000621FF2804D0E079002801D0011C08318A -:105C50000B2008AA50723C0054240000201C08F0BD -:105C60003BFF039068460BF031F813B090BD000085 -:105C7000587C0100074B1A78824201D0002907D0D6 -:105C8000FF201870044801880122520391430180CB -:105C9000704700004C7B01003C00902400003280E3 -:105CA000070010B5041C0C2307495843401800791D -:105CB0000AF04FF901200349A04008390A7810433F -:105CC000087010BD0000747A0100034A00211154CD -:105CD000800030321058017070473C00CC24000026 -:105CE000E07A010010B5041C052801D3FEF712FF6D -:105CF000201CFFF7EDFF0021201C0EF089FB10BDDA -:105D0000054980B58860087F242304495843085812 -:105D1000FDF76CFF80BD0000D47901003C00082530 -:105D200000009446010080B501219120FEF7C7FED6 -:105D300080BD024A11688143116070470000786E8F -:105D4000010080B5FEF7E9FE80BD80B5FEF7E5FEF7 -:105D500080BD80B500F031FA80BD034980B53C00BC -:105D6000442500000420886000F0D0F980BD0000C8 -:105D70000030070080B500F099FA80BD80B500F0D2 -:105D800099FB80BD38B5202815D20D4C221C20323D -:105D9000957900AB1D70D2795A700A4B82009950E8 -:105DA0003C008025000001218140084801604268D4 -:105DB0001143416000AB1888E08438BD0121FF2009 -:105DC000FEF783FEF9E70010070030740100004081 -:105DD0000700202809D20549064B82009950054A40 -:105DE00051683C00BC250000012383409943516069 -:105DF00070470000A97500003074010000400700E2 -:105E0000024A11680843106070470000786E010074 -:105E10000B48016803221204114301600168072244 -:105E2000120691433C00F825000001225206891811 -:105E300001600168120C11430160016852081143AE -:105E400001607047000080000700FEB51C4E051C75 -:105E5000B08AF26812D00124002909D1116D02AA7A -:105E600001ABFEF7F8FE3C00342600000298002843 -:105E700001D000240BE001AA02A9281CFEF770FF44 -:105E800005E0116D02AA002401ABFEF701FF0E49E7 -:105E9000081C2030827900AB1A70C07958703068C5 -:105EA000002802D1029830603C007026000002E019 -:105EB00002987268D060019800AB70601888C8843E -:105EC000F068C06CF060201CFEBD247E0100001054 -:105ED0000700F8B5041C54271D4E00203060706088 -:105EE00067433804151C000CB1823C00AC2600004E -:105EF000FFF796F8082130610026174A14E0031CCA -:105F0000243342610361C661018308330360B12316 -:105F10004360031C6433C3600C230381031C5433AC -:105F20004C3028C0013C181C002CE8D13C00E8266D -:105F30000000094E07223069D243C1195050021C9B -:105F4000103280398A63F060B06000210020FFF7D2 -:105F500088FF3069F060B060F8BD247E01009100D8 -:105F600005000148406A70470000E87D01003C00E0 -:105F7000242700000148008870470000FC6B0100E6 -:105F8000064980B508880130088005490820086066 -:105F900004498869886100F021F880BDFC6B01002C -:105FA0000010070000300700034A0120121D06CA36 -:105FB0003C0060270000914200D100207047E87D3E -:105FC0000100064800B5C07C002803D1FFF7EFFFB1 -:105FD000002801D0012000BD002000BD0000A080ED -:105FE000070010B5041C800702D506F03EFD03E053 -:105FF000E0073C009C27000001D506F0E3FD6007A8 -:1060000001D5FEF7ABFD10BD024A011C10681160FE -:1060100070470000E87D010038B5204D2C1C20346D -:10602000A07900AB1870E0795870FEF727FA00AB42 -:106030001888E8843C00D82700001A488178082294 -:1060400091438170817811438170174841688022A3 -:1060500091434160016811430160002001306428D0 -:10606000FCD3A0790F4D00AB1870E079104C58703C -:10607000201C103000F03C0014280000DFFB002042 -:10608000C043A061FFF79CFF002809D00A490869B6 -:106090000130086100203C318968486306F0EEFC5D -:1060A00000AB1888E88438BD001007000000070026 -:1060B000F4000700003007003C0050280000E87D95 -:1060C00001000A4880B5006A002801D0FEF7C1F936 -:1060D000074807493C30806810304861012008615A -:1060E0000549086880229043086080BD0000E87D73 -:1060F000010000300700F40007003C008C2800007D -:1061000080B50CF0CBFE06F0BFFC80BD0149C86233 -:1061100070470000E87D0100024A916A08439062DE -:1061200070470000E87D01001823064958434018D5 -:106130000021027903681A70013108303C00C82838 -:1061400000000329F8D370470000285201000349DA -:10615000002800D0011C024881627047000085754C -:106160000000046C0100F8B5FFF733FF284F00284A -:1061700004D0FFF7C8FF386A01303862F86A3C0083 -:1061800004290000002802D0018904390181386BFC -:106190000025002808D00B203D6310F0E5FA1E49C9 -:1061A000086821229043086038783C211B4A41430B -:1061B0008C18FF22796A3A7000290CD0B969013134 -:1061C0003C0040290000B9617D62BD68002D04D00B -:1061D000636B7A6B0021FDF747FDF8BD042803D3FC -:1061E00001218420FEF7A1FC3869261C01303861AA -:1061F00020363078022803D00C218420FEF795FC4D -:1062000035703C007C290000A1690029E8D0636B4F -:10621000303420780C1C00217A6BFDF727FDDFE776 -:10622000046C0100F400070018DB010010B50B4CF2 -:10623000606A00280ED00A4800F012FB002060625D -:10624000A468002C3C00B829000005D07E23DB4365 -:1062500000220121FDF70DFD10BDE0690130E06174 -:1062600010BD046C010000300700094841683F225E -:10627000120491430D2212048918416041680122E1 -:106280005202914341603C00F429000003488178A8 -:1062900081708178817070478000070000000700DE -:1062A000F0B50125082400200E4A0F4900263C23A2 -:1062B0004343D1529B185D719B605E611C82C02775 -:1062C000DF602027FE549E613C00302A000030270A -:1062D000FE54074F3F182037013005289F63E9D34C -:1062E0000548FF3201329062F0BD18DB0100BEBAF2 -:1062F000000030800700066C0100014948607047CB -:106300000000046C01000549085C3C006C2A000098 -:10631000054949684018C006C00E0449203048723B -:1063200070470000A0570100046C010000800700C6 -:1063300080B515218420FEF707FC80BDF8B54348E1 -:1063400084680334424D04E0201C10F03C00A82A6D -:106350000000B9F8002871D12869C007F7D53E4878 -:1063600028603E4A141C2034207900903C233C498C -:10637000584345182879FFF7CCFF281C3A490830C4 -:1063800048600126081C0660686A00280DD03C00A1 -:10639000E42A0000A96A926A354B9F68D71B1A68E5 -:1063A000511879188A425A6800D800E0013206C0B4 -:1063B000E86AFEF787FF2D49E86A4860301C0E60E6 -:1063C00066791FE02B484661047F2949201C50391B -:1063D0003C00202B0000896AFDF75AFC009884429B -:1063E00010D03C202249604340188769002F09D013 -:1063F0000021203001707E23DB4302210022201C7B -:10640000FDF74CFC0120A0408643002EDDD1E96958 -:1064100000293C005C2B000003D03020405DFDF7DC -:106420003AFC164C503C606A002803D00A218420B4 -:10643000FEF796FB20352878012803D00B21842015 -:10644000FEF78EFB02202870E068013000E007E0D4 -:10645000E06000983C00982B00002070009860706D -:106460000A4800686063F8BD0000000107000040B2 -:106470000700010000013080070018DB0100003038 -:106480000700546C010000A00700786E01003C2258 -:106490003C234A4309493C00D42B0000B0B55418B2 -:1064A00058434518211C3822281CFDF7E5FCA06B39 -:1064B0000078A96B0870002020342070B0BD000067 -:1064C00018DB01003C230749584310B54418203419 -:1064D0002078022803D10D213C00102C00008420DC -:1064E000FEF747FB0020207010BD18DB0100FFB550 -:1064F0003C2048431A4981B04418261C2036307885 -:10650000151C0F9F022803D104218420FEF731FBC4 -:106510000120307025710B9930223C004C2C00007A -:1065200061800A99E1620D99A1610C99E1610E996E -:106530006162A762019911557E21C9436163049983 -:10654000002900D10020061C281C08F08BF8002828 -:1065500001D0022000E00020A16B30433C00882CD9 -:106560000000087005B0F0BD000018DB010080B528 -:1065700014218420FEF703FB80BD0148407870475A -:106580000000046C010002480069C007C00F70479A -:10659000000000400700011C3C23044A59433C0012 -:1065A000C42C00008918203109780120002900D06E -:1065B0000020704718DB01000848406A00280AD113 -:1065C000074A002120239B5C022B04D001313C327E -:1065D0000529F7D37047012070470000046C0100C3 -:1065E0003C00002D000018DB0100F8B50E1C041C57 -:1065F000171CFEF782FE201C114C606001202060F9 -:10660000104D686901306861686A002803D007216D -:106610008420FEF7BAFAA068400703D5062184203B -:10662000FEF73C003C2D0000B3FA08480069002842 -:1066300003DAAA218420FEF7ABFA02206862AE607A -:106640002F70F8BD00300700046C01000040070007 -:10665000044A518010710348034908304860012002 -:10666000086070473C00782D00003C6C0100003051 -:1066700007000021002305E002894360C06851182B -:106680000904090C0028F7D104310804000C7047F4 -:106690000000024A516B0843506370470000046CCD -:1066A000010038B50A4C3C00B42D0000221C2032F9 -:1066B000957900AB1D70D2795A7003684068064A1C -:1066C0005065054813655030816000AB1888E08440 -:1066D00038BD000000100700046C010098B50D4C97 -:1066E000201C2030817900AB3C00F02D0000197097 -:1066F000C07958700A4800F0ECF809490020486257 -:10670000FFF769FF002803D012218420FEF749FA21 -:1067100000AB1888E08498BD00000010070000302E -:106720000700046C01000348017A3C002C2E000095 -:10673000FE2291430A310172704700000080070079 -:1067400090B50E4C85B0A078022814D10320A0701B -:106750000B4900200022049202900391E18801225B -:1067600001920091617820782269E3683C00682EEC -:10677000000008F094FD044809F07FF905B090BDD1 -:106780000000B4790100ADB6000071B60000B0B5EC -:106790000C4DAC790C490978002903D001290ED0A1 -:1067A000022908D1C288002A09D0012381683C004F -:1067B000A42E000002200FF0C1F803E00221862081 -:1067C000FEF7F8F9AC71B0BD20100700A079010008 -:1067D00080B5026807494A600379CA78CB700079AE -:1067E000904206D003481430008907F027FE06F0D7 -:1067F0003C00E02E0000ABFA80BD8466010070B55D -:10680000164C154DA0780026983D012803D1286923 -:1068100008F0FBFCA6706068012803D000212869FD -:1068200000F0FFFB0E4829690CF031FA01200CF052 -:10683000E4F83C001C2F0000E078012802D0012081 -:10684000607000E06670064814304168012906D186 -:106850000660416F002902D00020FDF74CFA70BDA0 -:10686000846601003463010030B500220023012555 -:106870002C1C94403C00582F0000044001D0CA5406 -:10688000013301320E2AF6DB181C30BD0000FFB5C3 -:1068900001270026051C022081B00090002D18D091 -:1068A0002878FF2815D0002410E0281980780A994C -:1068B000002901D001063C00942F000008D507F004 -:1068C000E9FE0E2803D0012181400E4300E000279D -:1068D00001346878A042EBDC0098029D01380090FA -:1068E000DFD10398311C814302D003980640002772 -:1068F0000498066005B0381C3C00D02F0000F0BDA5 -:10690000000002210160642101E0013902D0026827 -:106910009207FAD40120002900D10020704710B559 -:106920000020C443054B022201015A50C9188C6053 -:1069300001300828F8DB10BD00003C000C300000DE -:1069400000300700F0B5051C6035C76A041C287BC1 -:10695000002F8BB015D0082815D202A31B5C5B005A -:106960009F4400000704040709090C0C01260021BC -:1069700009E0002606E00226022104E03C0048303F -:1069800000000326032101E0042601218C22125974 -:1069900007912649069004910020039005970892DC -:1069A000E0692269211C7031019121490090700039 -:1069B0004018603002920388591C01801E483C0038 -:1069C000843000000288A1680AA809F0E1FF606035 -:1069D000E87AA16AC9070007000EC90D0843616A79 -:1069E0002269C907890D01430120002A00D1002036 -:1069F00080030843216AC9030843082108430A9910 -:106A00003C00C03000000880201CFEF798FE206982 -:106A1000002804D1201C0AF082F90BB0F0BD807967 -:106A2000062801D9FEF70FF9206906498079800010 -:106A30000958201CFDF774F9EFE7792F0100C469AC -:106A400001003C00FC3000000861010074570100A7 -:106A500010B5041C58308AB00EF07CFE221C803227 -:106A60005168002901D0117A07E0002804D080691C -:106A7000800701D5032100E00121D2680791224956 -:106A8000002008923C003831000004910022059259 -:106A900006900390E06922690090211C70311C4827 -:106AA000019102920389591C01811A480288A16848 -:106AB00009A809F076FF60606B20005DA16A226979 -:106AC000C9070007000E3C0074310000C90D0143E6 -:106AD0000120002A00D10020800308430999088082 -:106AE000201CFEF735FE2069002804D1201C0AF086 -:106AF0001FF90AB010BD8079062801D9FEF7ACF85D -:106B000020690749807980003C00B03100000958B5 -:106B1000201CFDF711F9EFE70000BD2F0100246AEA -:106B2000010008610100745701003EB5051C0069B1 -:106B3000042107F0D2FA002809D042780232011C61 -:106B40006846FDF788F9E86A6C463C00EC310000C5 -:106B5000029000E00024281C143002F003FB0028FF -:106B600004D0211C281C05F0A5FE3EBD002CFCD045 -:106B70000249201C4969FDF7E2F8F6E7447D01006F -:106B800070B51E1C18235843064B049D3C00283248 -:106B900000001950C418002060616260A660E560C2 -:106BA0000FF0B9FD206170BD0000B87D0100024A00 -:106BB000011C9069916170470000447D010001480B -:106BC000406B70470000447D01000449044B3C00C9 -:106BD00064320000CA6809695C3B5B68C91A4143BA -:106BE00050187047A07D01000148007870470000F0 -:106BF0007869010080B506220149FDF735F980BDAD -:106C0000FE670100F0B589B00093164F131C0E1CEF -:106C10003C00A0320000041C3A1C01F062FF01A9F4 -:106C200006A8A26802F00BF901AA06A9381C636A3B -:106C300002F081FC051C012814D10C48FC21C8512C -:106C4000381C02F00CF80321301C07F052FA00281F -:106C500007D03C00DC320000807800F033FC201CC0 -:106C600010300EF047FD00E00025281C09B0F0BDF3 -:106C7000F4670100C138000010B5074C0648062231 -:106C8000211D0838FDF7F6F801F0FCFF00F042FC8A -:106C9000201C02F03C001833000027FC10BDF467F4 -:106CA00001000849C96800290AD0064A0132517812 -:106CB00012784843002A01D108187047101870470D -:106CC000013070470000447D0100044B0549002855 -:106CD0005A6900D0011C3C0054330000101C59615B -:106CE00070470000447D0100B9750000074900208D -:106CF0000A78022A09D10A7C002A05D1CA68002A2A -:106D000003D04969002900D001207047786901004B -:106D10000C4A80B5012151603C009033000009F01D -:106D20006AF809481C308169002907D00023836173 -:106D300000220021002000F0D2F880BD00220021B6 -:106D4000034800F05CF980BD00005C69010051352A -:106D50000000B0B50C1C012816D13C00CC3300005B -:106D60000E4D022C09D100F02BFA00280ED06869D4 -:106D700000280BD1211C13200CE0032CFAD100F0C9 -:106D8000F9F9002802D0287C0028F3D0B0BD211CDE -:106D90000006000E04F062FCB0BD00003C000834A8 -:106DA000000078690100B0B50C4C002525746561C0 -:106DB000E56000F03CFA00F034FA07481C38056141 -:106DC00009F033FF2078002802D104F06EFAB0BD3C -:106DD0000228FCD104F0A5FBB0BD786901003C009D -:106DE000443400000C4880B50178002912D0C068F6 -:106DF00000280FD108481C38406900280AD10748EC -:106E00000068002806D000220721102010F0A0F909 -:106E100002F02CFC80BD000078690100D4670100FD -:106E20003C0080340000F8B51D4E1C4D041CF06879 -:106E300002271C3D002807D0E868002804D0FDF791 -:106E4000C2FE002800D0BC43002C14D03770F0687C -:106E5000144F002810D0E00717D4FDF7B4FE002827 -:106E600013D03C00BC3400007069002806D1E868EB -:106E7000002801D0FDF71AFF0DF00AFAF8BD686985 -:106E8000002805D109480068002801D0012C04D150 -:106E9000391C201C0EF052FDF0E704F01DFB02F03F -:106EA000EBFBEBE73C00F83400007869010050C3CD -:106EB0000000D467010005484169002904D0406AF8 -:106EC000002801D001207047002070470000786939 -:106ED000010010B5041C0649002048600860886065 -:106EE00008F09BFF07213C00343500001220227976 -:106EF00010F03AF910BD00005C6901000149012061 -:106F000008607047E8670100F8B5071C0E1C08F020 -:106F1000A3FA134D041C6868002817D0002F02D074 -:106F2000A868032813D300203C0070350000A86037 -:106F30006860211C0F200EF0F0FE2868002803D0A6 -:106F4000002C06D1012002E0012C02D10020FFF725 -:106F5000FAFEF8BD721C0021044800F068F8A86829 -:106F60000130A860F5E75C6901003C00AC35000029 -:106F7000513500000A4980B5CA68002A0BD0426822 -:106F8000002A09D000224A6202680A6202680721C8 -:106F9000172010F0EFF880BD0120486280BD00008E -:106FA0007869010070B5144D846CE9683C00E835DF -:106FB0000000002917D04030EC614078002801D152 -:106FC00001206862286A0E4E001BB0420CD208F005 -:106FD0003AFE296A401AB04203D202220721132046 -:106FE00009E004F0B6FA70BD0748A9680BF03C0050 -:106FF00024360000BDFE221C0721162010F0C0F828 -:1070000070BD000078690100A086010034630100B2 -:107010000A4980B500208861086900280CD007481B -:107020001C300078002807D001F0D2FF022803D1DD -:107030003C006036000000F012F900F0BCF880BDA2 -:1070400000005C690100F0B5061C0C1C151C91B019 -:1070500001A84021FCF70DFF00216846FDF7A7FFBE -:10706000049001A806220849FCF731FF062202A875 -:1070700002303C009C3600000649FCF72BFF00ABB9 -:10708000DC760C95311C01A807F04EF811B0F0BD6C -:1070900012610100F8670100031C081C191C114B48 -:1070A00080B506D0042111800422191CFCF712FFC0 -:1070B00016E004223C00D8360000011C181CFCF726 -:1070C0000CFF09481038006900280CD007480C3024 -:1070D0000078002807D001F084FF022803D100F0D7 -:1070E000C4F800F06EF8012080BD6C690100F8B5AD -:1070F000041C0F1C00253C0014370000002601F082 -:1071000073FF02282FD11949012F086807D1021CEB -:1071100022400AD120430860A04206D104E00028A2 -:1071200003D0A043086000D10125486800281AD187 -:10713000002D17D0012048603C0050370000381C5B -:1071400008F089FE0B481C308169002907D0002314 -:107150008361002200210020FFF7F1FE06E00022FB -:1071600000210448FFF77BFF00E00126301CF8BD3A -:1071700000005C690100513500003C008C370000C4 -:10718000031C081C191C124B80B506D00421118069 -:107190000422191CFCF7AAFE18E00422011C181C8A -:1071A000FCF7A4FE0A481030C16800290ED0007810 -:1071B00000280BD001F01EFF022807D13C00C83781 -:1071C000000000F064F800F02EF8002801D109F06A -:1071D0007AFD012080BD6869010010B50A4C206964 -:1071E000002809D0A169002906D17D21C9004143A9 -:1071F000032207200FF0E1FE2169012000293C0055 -:107200000438000000D1002010BD00005C690100BE -:1072100010B5054C002803D0FDF79AFCE06010BDC6 -:1072200001200021E16010BD786901000A480A4987 -:1072300010B5C0681C39C968002803D0002901D0E6 -:107240003C0040380000012400E00024002C03D062 -:10725000022207200FF0B7FE201C10BD0000786945 -:10726000010010B5094C0020216900290CD0064905 -:107270001C310978002907D000F009F80120A0612D -:1072800020693C007C3800007D23DB00584310BDA2 -:107290005C69010080B5032107200FF0D1FE80BD9D -:1072A00080B5022107200FF0CBFE80BD064880B5D7 -:1072B0000078002801D0FDF729FD002207211120C8 -:1072C0000FF07CFF3C00B838000080BD00007869FA -:1072D000010010B5041C101C064A516100F0A3F80F -:1072E0001020002C00D11120002207210FF069FF8F -:1072F00010BD5C6901000149486270470000447D8F -:10730000010010B5094C3C00F4380000E069002889 -:107310000CD1E0620120E0610BF008FD0BF074FE7F -:10732000012000F0B5F80FF04DFA606310BD0000C9 -:10733000447D0100054980B50020C861886300F0E4 -:1073400089F800F001F902F03C003039000091FBAF -:1073500080BD447D010010B5012838D10806000E1B -:10736000052832D11D4C2078012809D002281BD0D5 -:1073700003282AD102F07DFB00F06FF8012010E015 -:107380001748216B0BF01BFD0BF03C006C39000023 -:1073900041FE15480069032801D3C00703D5012128 -:1073A000206B07F019FF022000F078F810BD0F489D -:1073B000006820640A485C30C16802698918C160AD -:1073C00003F0CCFC032000F069F801203C00A83950 -:1073D0000000E06210BD092100E008210920FDF74E -:1073E00076FC10BD0000447D010034630100F468A8 -:1073F0000100786E0100B0B50F4C2078651E0128A1 -:107400000FD10020FFF7A1FC0C49098849083C0076 -:10741000E4390000401A0FF019F9002804D0287848 -:10742000012807D0022805D02078002804D1287828 -:10743000032801D10120B0BD0020B0BD457D010071 -:10744000F46701000149C86470470000447D0100F1 -:107450003C00203A00000449054A8968126D012069 -:10746000914200D3002070470000F4680100447D81 -:10747000010010B5064C206B07F0F9FEA06B002848 -:1074800003D10348216B0BF092FC10BD0000447D3A -:1074900001003C005C3A00003463010004480078BD -:1074A000022801D0032801D1012070470020704735 -:1074B000447D0100F8B5071CFFF7D0FF061C012F23 -:1074C000264D1FD0022F45D0032F12D12448254B23 -:1074D00000696A693C00983A000041085A43234B0E -:1074E000D4188C4200D90C1C002E05D01E495B39E3 -:1074F0000978002900D1041C0522211C09200FF065 -:1075000080FD184A5C3A1770F8BDFFF7D6FB0028DB -:1075100002D0286900283C00D43A00000ED004F0C4 -:10752000CFFB134B6969114A59435C3AD26B8918F6 -:10753000884201D9441A04E0002402E004F0AEFDC0 -:10754000041C002EDBD009485B3800780128D6D116 -:10755000084B9C4202D958423C00103B00002418C2 -:10756000D0E70024CEE704F0AEFBCAE70000F468E1 -:107570000100A07D0100983A00008813000080B54A -:10758000052109200FF07DFD02490020087080BD13 -:107590000000447D010070B5061C3C004C3B00001F -:1075A0000DF0BCFAFFF7CEFE094C0A48216B0BF038 -:1075B00021FC012501213006000EA56307F03AFEEB -:1075C000054829020958002900D1056170BD000055 -:1075D000447D010034630100F46701003C00883BF6 -:1075E0000000024A116C0843106470470000447D9B -:1075F000010080B5FFF7BFFE0BF0A1FB80BD024A82 -:10760000011C1069116170470000447D0100F3B551 -:10761000061C002089B0F84C0890E26908253C005F -:10762000C43B0000002A03D006A907A8FCF706FC0B -:10763000301CF34E0027203682286FD015DC01283D -:1076400018D080286BD1EE4D803DA868012867D105 -:1076500068680FF01BF8002863D1012101200DF0AC -:107660003C00003C00009DF808F0DBFD0BB0F0BDD5 -:1076700083286DD0842855D1E7E00A980A2804D2DF -:1076800003A31B181B5A5B009F44F6E00000EE00AA -:107690000B00F700F700F700F7002F0088008B00C1 -:1076A000AD003C003C3C000000F056FE002817D026 -:1076B000D64A803AD16A0698814216D0062100281F -:1076C00000D107210D062D0E00280ED0CF4A012033 -:1076D000803A50650FF0A0F8CC4A803A506604E03A -:1076E000002116203C00783C00000FF0DCFC012556 -:1076F000022005902EE2C6488038406D00282ED02A -:10770000C6492069C44D40180EF0C1FF002812D0B0 -:107710000FF085F8C14949424018BD4920618039C0 -:10772000486E40190EF03C00B43C0000BBFF00283E -:1077300011D00AE0F7E017E2B2E0B0E0B649206904 -:107740008039496E401AA84205DBB349B54D8039EE -:107750004F6503F027FB0622291C16200FF072FC50 -:1077600047E095E000F0FEFD3C00F03C0000002802 -:1077700042D1AA4DC43DEF6008F019FD03F015FB9E -:10778000A86A002802D0FFF74CFFAF62A4488038F7 -:1077900000680021FFF7F9FC08F03FF909211620E5 -:1077A0000FF087FC0022162183203C002C3D0000B6 -:1077B0000FF040FDFFF786FC21E000F01BFE1EE00D -:1077C00006F054FA974D803DA96F401A0490069830 -:1077D000002801D0AF6502E0A86D002808D19148CB -:1077E000C4380078800703D5924847603C00683D64 -:1077F000000000F002FE0498FF382338142802D25B -:107800000120E86353E0EF6351E0874AB57A803A9C -:10781000002D4CD00DF071FF00F0ADFD071C82482B -:107820008038406FFF305F300EF03DFF021C3C009F -:10783000A43D00007E488038406D00281AD100F039 -:10784000F1FD002816D1042D02D1002F12D11BE02A -:10785000002F06D0022D14D079484068002809D0A6 -:1078600012E0002A10D14B21C90001230922162061 -:107870003C00E03D00000FF0D6FC6E4A7348803AB1 -:1078800011680BF0D8FA18E00121002001E0012175 -:10789000012000F02AFE10E0674A6C49803A906EA1 -:1078A00040189066012508958BE104216CE1614A3E -:1078B00066483C001C3E0000803A11680BF0AAFAB2 -:1078C00088E1AF60A86FE8676348016DA967079A10 -:1078D0001420002A00D1002008181230A866707801 -:1078E000B0703078707002203070A069FCF7C2FA76 -:1078F000EF64A86F3C00583E0000E96F594B401AF6 -:10790000984212D2686D069988420ED030780228CB -:107910000BD80EF09CFFA96F0822401A5249091A91 -:107920003B1C16200FF085FC00E0AF6501200590A0 -:107930000890434802253C00943E0000C438C168CA -:10794000002972D10121C1604948006B00286CD028 -:1079500008F066FC69E03C480022019280388068AB -:10796000012804D1384880388760012048E13A482E -:10797000012343603448C4383C00D03E0000007806 -:1079800000280AD100F025FE002806D0FF21913101 -:107990000123092216200FF052FC2C498039486F30 -:1079A000896F421A039206F076F928498039896F67 -:1079B000039A401A0290372000013C000C3F00005F -:1079C000101A50280DD223488038406D002804D169 -:1079D0000298FF385538142801D2012200E0002215 -:1079E0000192039A0120FF3A0B3A502A00D300205B -:1079F000049000280AD017488038C06F3C00483FE8 -:107A00000000081A9B21C900401A142801D2012243 -:107A100000E000220092002A11D00F4D0120803D8D -:107A200068650EF020FF68660125012116200FF021 -:107A30005EFB002116200FF05AFB00E0BAE03C008C -:107A4000843F0000F07902283CD8054A803A516C06 -:107A5000002937D1136C111C002B33D116E0000024 -:107A6000246D010050C30000C05C15007099140023 -:107A7000B057010034630100E204000000900700E9 -:107A80003C00C03F0000530700001E020000C85722 -:107A900001004A6D002A02D0B27A022A15D1009A5A -:107AA000002A03D0CA6D0132CA6500E0CF65019A91 -:107AB000002A0BD08A6FCB6FD21A5A4B9A4202D24D -:107AC0008A6D3C00FC3F0000013200E001228A6523 -:107AD00000E08F650499002901D102280BD9544A8E -:107AE00002281ED9D06F616888421AD1916F081A96 -:107AF0005049884215DD4E4B986FE168401A7D2150 -:107B0000C90088423C00384000000BDD6169401A22 -:107B1000002804DD021140111018401801E0801007 -:107B200008186061586FE0600398FF382338142804 -:107B300009D20298FF382338142804D23E4A906FA5 -:107B40005064906A90643C00744000000EF09AFE0D -:107B50003A49496C401A3B49884201D937494F6438 -:107B6000394903984018142807D23449C86B0028B3 -:107B700003D0886F0864886A88640EF083FE2F49FA -:107B8000096C401A314988423C00B040000001D9DC -:107B90002C48076404200590082116200FF0B9FA3C -:107BA0002848406D002802D00499002908D02949AE -:107BB000002800D129493B1C062216200FF057FB54 -:107BC000022D09D0062D0AD0072D3C00EC40000004 -:107BD00013D107E001211620FDF7D6F81EE01A4A5E -:107BE00057639763184A0698D06207991163536BDD -:107BF00018435063906B084390630598002805D0A4 -:107C000005980CF05FFA05980CF0D2F93C00284179 -:107C10000000082D05D00D4844388570281C03F05D -:107C2000DCFD1149E069884200D161E5089800282F -:107C3000FBD0B07A0228F8D1012116200FF06FFA9C -:107C400002200DF0E8FE53E50000530700003C0061 -:107C500064410000A46C010020A10700204E000038 -:107C60003FFBFFFFA086010050C30000C05C150071 -:107C7000F11D00007047000070470000F8B5214872 -:107C80000068214D6969084001D1012700E0002703 -:107C90003C00A04100001D4D0126696A002900D06A -:107CA00000261B4D1A482C1CA030027A281C40309C -:107CB00080341023B74210D10125C580002900D09F -:107CC00000231A43111C017301200EF088FE0820C6 -:107CD00020703C00DC41000000221621802013E0CF -:107CE0001127C7802E1C0B4D002900D100231A43F9 -:107CF000111C017301200EF075FE08202070306DFC -:107D000000221621686782200FF0D0FAF8BD00002B -:107D1000100007003C0018420000A46C0100009015 -:107D20000700B0B50F4D041CAA7A0121081C002AD7 -:107D300000D00020002C00D0002188420AD0002C66 -:107D400004D100F042FB00F0D6FA03E000F0D9FACB -:107D500000F009F8A87A3C00544200000249E439D6 -:107D60004871AC72B0BD0000446D010080B53EF0BA -:107D700055F802490120087080BD0000687E0100AE -:107D8000F3B501208DB00F1C012408900EF092FD78 -:107D9000061C00F0B5FA09903C009042000000F08B -:107DA00080FB0790FEF73FFA051C00210C9108F0BC -:107DB000F0FB002801D1012000E000200A90FEF72E -:107DC00012FD05F0E0FE0B90002D23D0288841071E -:107DD00020D4291D04910A3500063C00CC42000045 -:107DE000800E01212028039500D000210D1C04984D -:107DF00006F038FD0C90049806F010FD002808D01D -:107E0000039801F087FA002803D0002D01D101204A -:107E100000E000200C9901430C91FCF73C00084362 -:107E2000000023FF00282FD007F099FF051C07F062 -:107E3000B2FF0490FFF7F3F80C990143002D06D030 -:107E40000498F04A301A904201D2012000E000204C -:107E500008430C900B980A9B1843011C0B913C00A3 -:107E60004443000005F0CEFE00281AD1002D06D0B4 -:107E70000498E749301A884201D2012000E000202E -:107E80000C990843051C00F01FFB284303E000F099 -:107E90001BFB0C9908430C9000F0D4FB0B99014399 -:107EA0003C00804300000B91DC49C868002801D0E9 -:107EB0000138C86008F0E7FB069008F090FD311A21 -:107EC00005910699D648814208D8002F08D1059916 -:107ED0004008814204D90699814201D900248BE0EF -:107EE000D0483C00BC4300000599D04D814226D2C9 -:107EF000E879102806D2002F21D1CC48A038806A1A -:107F000000281CD109F062FF0490002802D1002053 -:107F1000C34913E009F010FE002803D0C448C0692B -:107F20000028F4D03C00F84300000498052803D052 -:107F3000C148006A002865D1BB49486A002823D09F -:107F40000138486200F087FF002811D0BB4805992E -:107F500081420DD201F09BF804300DF0EEFC403070 -:107F6000C17A01294ED03C0034440000807A0028B8 -:107F700001D0052849D301F0DFF8022810D0002FE6 -:107F800002D10698002840D10020089082E1AA483A -:107F9000A038C068002838D0A8488069486234E01A -:107FA0000AA903C9084345D03C0070440000A34817 -:107FB0002978A038022940D8406D00280AD09F486F -:107FC000A2492038C06840180EF0C7FB002801D035 -:107FD000012100E00021964A906A002802DA640834 -:107FE00064002AE0002909D1954B3C00AC44000014 -:107FF000A03B5B6D002B02D005280DDB01E00728BC -:108000000ADB0120C043906264088E4964000020AE -:10801000A039886514E0D1E0394311D18949A039EC -:10802000CB6D002B02D1896D012909D93C00E844B0 -:108030000000079B002B01D1072801DB64086400C6 -:1080400001309062BDE07D4988690490002088611C -:108050000C9800282CD007F066FC002802D00220E3 -:10806000044325E07A48C06A002804D177483C00E0 -:1080700024450000A038C06800281CD104980028BE -:108080000DD12878102802D3E878022802D928795F -:10809000102804D304246B4901228A6194E06C48BF -:1080A000A038406D002871D005F0A2FD00286DD0E9 -:1080B0003C00604500006408640088E0FFF75BFA5C -:1080C00000281AD068480078022801D1002F14D166 -:1080D0000020FEF770FE301A0490FFF76CFA0028BB -:1080E00007D0FFF71EFA002803D05D4904988842A4 -:1080F0004FD33C009C45000005F06CFD00284BD19F -:1081000053490878032808D188680122D207301A19 -:10811000904241D201220A7057E054480078022868 -:1081200001D1002F51D14A4988685149801B8842AA -:1081300007D901203C00D8450000FEF742FE7D2112 -:1081400009014018444988604A480078022804D14F -:10815000079B002B01D1012000E00020474B47493D -:10816000584340183C498968891B884230D9079B8D -:108170000020039300F03C001446000079FF0290B9 -:10818000FFF7D8F9049001F057F80499029A514387 -:108190004843019000F0DCFF411C01980122484354 -:1081A000111C00E01BE0314B5B6A834200D30021CD -:1081B000039B0122002B00D03C005046000000220F -:1081C0002C4B51439B6A0122834200D30022500072 -:1081D000081803D023490320087003E00998C068F9 -:1081E000062808D90224089800286ED01D490020CE -:1081F000C8614861A5E01A4948693C008C46000006 -:1082000000280AD1002F05D001224A61C8698018D0 -:10821000C8610AE00020C86103E0002F05D10020FA -:1082200048610D98002800D1C8680020089008789F -:1082300001282FD002284BD1002F08D13C00C8467E -:108240000000E878002802D12878102843D2287945 -:10825000102840D248680A69301A904267D3012238 -:108260000A7038E00000E204000010270000687E79 -:108270000100A086010088130000446D01003C004D -:1082800004470000C857010050C30000983A00009E -:10829000C0570100400D0300C4090000B20C0000EB -:1082A00000200B9A0A9BC0431A4337D0002F35D1C8 -:1082B000079B002B08D06A78022A2FD92A78102A27 -:1082C0003C00404700002CD22A79102A29D2254BA5 -:1082D0001A6C002A06D09A6A9F6CBA4202D11F20FB -:1082E0001FE02EE0204B5A6C002A03D01F4FB31A18 -:1082F000BB4216D31C4B002A05D09A6A9F6CBA4227 -:1083000001D13C007C4700000F200DE0079A002AB5 -:1083100004D0EA79202A01D1002005E0EA79102A68 -:1083200001D3032000E09A6A124A126802400BD17E -:1083300001200890022008700F4808614E6064E731 -:10834000FFE701203C00B8470000089060E70C49B7 -:10835000886A002801DA013002E0002801DD0020EF -:108360008862002008620899200408430FB0F0BD1D -:108370000000A46C010071020000082007005307F0 -:108380000000687E01003C00F447000070470000D8 -:1083900000487047507E010080B53DF07FFD0249E6 -:1083A0000120087080BD00003C7E0100F8B50D1C66 -:1083B0000EF0C8FA2649041C886A264E002801D00F -:1083C000042003E0706A00283C003048000001D01F -:1083D000013870620027002D02D0B761F7610AE012 -:1083E000B0691C490130B061496D002903D00328F0 -:1083F00001D90120F061B460F168009108F0F7FC48 -:10840000F0600099884202D030623C006C48000065 -:1084100034610BE000F090F8002801D0114800E032 -:1084200011483169611A814200D937620B4A0C4800 -:10843000D16C2030002901D00A2103E0017A002903 -:1084400001D0FF310172002D03D1017A3C00A84810 -:108450000000002900D0916A007A002800D1176539 -:10846000F8BDA46C01003C7E0100A60E0000A861CE -:10847000000070470000064980B58968002907D0D0 -:108480000521002800D104210806000E03F03C005D -:10849000E448000005FA80BD606C010007480068F0 -:1084A00007494A69104001D0012000E00020496AD4 -:1084B000884201D10120704700207047100007005A -:1084C000A46C010070B50EF049FA021C00F03AF8F5 -:1084D0003C0020490000104900280ED0081CA031A3 -:1084E0000E780E4B102E01D3806F03E049781029CF -:1084F0000ED3C06FC018841A0AE0081C803045698A -:1085000008498D4201D90C1C05E0C068101A2C1ACC -:10851000002C3C005C49000000DA6419201C70BD8E -:10852000A46C0100A60E000050C3000080B505F049 -:10853000B7FB002802D007F01FFF80BD034800787A -:108540000028FAD007F070FB80BD0000606C0100CD -:10855000034901203C00984900004969032900D8DB -:10856000002070470000606C0100B0B50A4D002487 -:108570002878012803D005F06AFB0406240EFEF7D4 -:10858000D2FC0002204302D1686A002801D10120F8 -:10859000B0BD0020B0BD3C00D4490000606C0100BB -:1085A0000121012800D000210148416270470000EC -:1085B000606C0100154810B504681548006A002871 -:1085C00014D0FFF7CBFF00280ED111481149C43059 -:1085D0004069884208D2CC083C00104A0000A04202 -:1085E00005D3FFF77EFFA04201DA0C4C01E0FF2427 -:1085F00091347D200001844204D900221621832079 -:108600000EF0BDFE01230922211C16200EF0A7FE4C -:1086100010BDB0570100606C01003C004C4A0000E6 -:10862000C05D00001027000070B5051C0E1C00F096 -:1086300043F800280FD0084C2078C00703D405F079 -:10864000ABF909F031FE002D05D02078800702D467 -:10865000301C02F0FDFE70BD606C01003C00884AD9 -:108660000000B0B5002818D01148814215D210483A -:108670000C1C0D1807F0DFFA81000918A14201D285 -:10868000400003E041000918A14201D2241A06E08B -:108690004100A14203D24008F8E7064D074C3C00D8 -:1086A000C44A00000EF072F90019291C07F0DCFA28 -:1086B000B0BD000080B92A00530700004C1D000027 -:1086C00088130000B0B505F0FDFA002813D1FEF7BD -:1086D000B5FE0A4C0A4D0028606300D028600EF0F9 -:1086E0003C00004B000055F9216A002904D1E169E2 -:1086F000401A2968884201D90120B0BD0020B0BDD0 -:108700000000606C0100B057010080B5FFF7DDFF8D -:10871000002805D005F0B7FA002801D1012080BD5E -:1087200000203C003C4B000080BD000010B50A4C0E -:108730000021A268002A03D0A16002F083F910BDD5 -:108740006160011C002204200EF036FD0348216800 -:108750000AF008FC10BD0000BC740100C4600100F8 -:1087600070B5051C3C00784B000001D1FCF7C1FB43 -:10877000204CE06A002815D01F4BA0695843C60B57 -:1087800020884643F0008019E660FBF71CFEA842F3 -:1087900005D8301CFBF717FE8019A84202D2002032 -:1087A000E06020E0E5603C00B44B0000002D1DD0EF -:1087B0002688A0697043C103281CFBF7A5FD6061F2 -:1087C0000D48321C291C3030FBF70AFC0C4B606949 -:1087D0005843C00B606201F0B7FDA062E06800285A -:1087E00004D02069A168FBF73C00F04B0000F4FBCB -:1087F00070BD0548A168FBF7EFFB70BD0000C874B1 -:10880000010040420F00C0C62D0088130000F1B5E2 -:108810003E4800AB8178C0783E4F0A07040758787D -:108820003B49120F085C1439240F3C002C4C00000B -:10883000801878600130B8601878354D085C0019F0 -:10884000B8610130F861EB7833481E09334B1838B2 -:1088500081785E43AB781D09C8236B43002908D19A -:108860002B4D2D783D60C5607D25ED003C00684CAA -:1088700000005D1B2C4B07E0274D6D783D60C56007 -:108880004B252D015D1B284BF618022000F057F8F0 -:10889000281AF8602248221C18388178032000F03A -:1088A0004EF8301A3862396800AB79615A783C006A -:1088B000A44C00005623F9685A43891AF960C8315C -:1088C00039611849183989780029B96911D100AB83 -:1088D0001A78134B143B9A5C531C59430A2359438F -:1088E000144B591A51430A235943401A386212490A -:1088F0003C00E04C000010E000AB1A780A4B143B3F -:108900009A5C531C59430A2359430D4B591A51433E -:108910000A235943401A0B49386240187862F8BD5F -:1089200000000C5A0100665A010094780100A086EC -:1089300001003C001C4D000000487100B0D68C00C6 -:1089400088100000803801005812000070110100EA -:1089500030B5194B0228DD6806D1002904D12B1C43 -:108960000C339C1A64235C43022809D1012907D1E6 -:1089700064237D243C00584D0000E4006B431C1927 -:10898000A0235343E41A0A235A43032809D1002998 -:1089900007D11323FF24E4006B431B199B1A1C1CF3 -:1089A0005C43032808D1012906D10E2005496843FC -:1089B0004018801A041C3C00944D00004443201CC5 -:1089C00030BD00007C7801008408000010B5074C21 -:1089D0000C2360780549143158434018406801F071 -:1089E0004FFC0021607802F04BFF10BD4C7B010072 -:1089F0000C48F8B540780C233C00D04D00000A49E3 -:108A0000584314314418261D60CE301C0BF00BFD6A -:108A10000027412047550548291C02F0F0FE281C7C -:108A200001F031FC0434C0C4F8BD4C7B010055801A -:108A30000000B0B50A4D4C2128783C000C4E0000D7 -:108A4000094A41438C1822680121FBF7E1FA287892 -:108A500001F0FAFB3C23E056411E012007F034FBF5 -:108A6000B0BD00003C7C010058E301000C23074925 -:108A70005843401880B54068416B00293C00484E7F -:108A8000000002D00BF0FBFD80BD0BF02CFD80BD83 -:108A90000000607B010038220A4B4243D2180029B3 -:108AA00080B504D0022907D10BF0FBFC80BDD26A4F -:108AB0000121FBF7B0FA80BD03218620FCF73C00C2 -:108AC000844E00000FFA80BDD4E40100B0B5040666 -:108AD000240E0C200E49604340184568A86B0028FE -:108AE00003D10021201CFDF7E1FA201C07F0F2FF62 -:108AF000002808D0281C6030C179012903D9FF3132 -:108B00003C00C04E0000C171FF3181710121201C69 -:108B100002F0C5FEB0BD607B010070B50006000E1E -:108B2000051C4C230A49584344183C20005DFF3083 -:108B300006063616281C01F090FB0021281C22682E -:108B4000FBF73C00FC4E00006FFA311C002007F0E0 -:108B5000C7FA70BD58E301000C220F4B4243D218F4 -:108B600010B5546800290DD002290FD12C20005DCA -:108B7000002803D007210C20FCF7BAF9201C0BF0C9 -:108B8000BBFC10BD3C00384F0000002102F08DFE00 -:108B900010BD04210C20FCF7AEF910BD0000607B75 -:108BA000010080B5002907D00C230549584340181F -:108BB00040680BF04AFC80BD012102F076FE80BDCA -:108BC0000000607B01003C00744F000010B5041CE5 -:108BD000002905D002291AD1201C0BF0EBFC10BD96 -:108BE0000D4804700D4807F007F90D48018801226F -:108BF0001203114301804C200A4960434018403061 -:108C00000078FDF75DFD201C3C00B04F00000AF02D -:108C1000D4F810BD03218620FCF773F910BD3C7C0D -:108C20000100054E00003280070058E30100FFB547 -:108C3000051C012083B001900C205D4A6843861812 -:108C40000127002974680ED002293C00EC4F000077 -:108C50006AD12C20005D002803D006210C20FCF7EF -:108C600053F9201C0BF020FD07B0F0BD524814381A -:108C70004570A06B002807D0504807F07FF801210D -:108C8000281CFDF725FA1CE04D4807F03C00285051 -:108C9000000077F84A48143805704B4801880122D3 -:108CA0005203114301804020005DFDF712FDB068C2 -:108CB000002809D1281C07F064FFB060002803D108 -:108CC00009210C20FCF723F90598002803D03C006B -:108CD00064500000E06C0130E0640EE06720005D4D -:108CE000002807D1E06C002804D139480238C06A56 -:108CF000A06409E0206D002801D0002704E0281CB2 -:108D000007F000FF0028E5D105982065201C2030E1 -:108D10003C00A0500000626A0290817B281C07F092 -:108D200078FF002F19D0201C6030C1794A1CC27115 -:108D30008079814202D2012001E040E000200190D0 -:108D400000280AD025480078800706D500F00DFBE2 -:108D5000011C3C00DC500000201C0BF015FD0190B4 -:108D6000019800280FD00298007B022803D1201C14 -:108D700004F0D0FE84E7012800D07EE7211C301CDF -:108D800004F0E2FE7CE7251C6035E879FF30A8712D -:108D9000687A06F03C00185100009DFC0DF047FE7B -:108DA000071C05F012FF3F180298817B20690430F0 -:108DB00000F035FA616A05F0EAFE39186B7A3088FE -:108DC0008031094A0DF091FE5DE703210C20FCF78C -:108DD000AAF858E700003C0054510000607B0100F5 -:108DE000A54D0000C94D0000328007001D7501002F -:108DF0008D4E0000FFB581B01F1C051C141C101CFB -:108E00000A9E00F0F5FC291C1031201D0622FBF7FC -:108E1000B7F9A88E2080E88E3C0090510000608059 -:108E20000299201C00F007F9FF34013466602760C6 -:108E300005B0F0BD0000F8B50F1C1E1C051C141C6D -:108E4000101C00F0D8FCA888391C2080288960807C -:108E5000201C00F0F0F8FF3401343C00CC5100003D -:108E60006660F8BD70B5041CC0680568201C14302D -:108E7000061C00F00FFB002816D0012202212069F9 -:108E800005F0F8FA002801D0FBF724FF00220221A8 -:108E9000206905F0EFFA002806D0FBF73C000852E5 -:108EA000000001FF002802D0301C0BF07CFB688919 -:108EB0008007C00F03F0A7F818230449584340184F -:108EC000C168002902D0201CFBF7D4F870BD94675C -:108ED0000100F8B5041C101C0D1C191CFF223C00DD -:108EE000445200000027FF2D25D0002905D04B88D3 -:108EF000002B02D000F050FC15E00021104E4B007A -:108F00009E190223F65E864201DD0A1C04E001314F -:108F10000906090E2629F1D3094E500080194E2367 -:108F20003C0080520000C05E272A07D20649203943 -:108F300049574731401A2060012702E07E20C04394 -:108F40002060381CF8BDFA470100B0B50C1C7E212A -:108F5000051C0020C943002C0FD0101C05F06BFD30 -:108F600000283C00BC52000002D0211CC93901E09D -:108F7000211C86390220C043FBF7B4F9011C0120F3 -:108F80002960B0BD98B5141C00220092221CFDF788 -:108F900043FE98BD054980B5086005490120C861B8 -:108FA000012100203C00F852000003F01CFE80BDAF -:108FB000000020670100AC7C010080B5002100208A -:108FC00003F011FE06F00DFB02490020086080BD91 -:108FD000000020670100034901200969002900D130 -:108FE0000020704700003C0034530000106701006F -:108FF00003480069002801D040697047002070478D -:109000001067010070B5161C0D1C041C002801D04F -:10901000012C07D100F036FA002805D013F0CAF968 -:10902000002801D1012070BD3C00705300000120D8 -:10903000002C00D000200A4C043461C4103C00F025 -:1090400024FA002802D000F0C6F901E000F0E5F8AB -:10905000C030C36B221D07CAFBF720F8002070BD8B -:109060000000D4670100F8B50D1C3C00AC530000B3 -:109070000021041C281C05F0E3F9231CFF332133D5 -:10908000FF27002805D02222011C181CFBF796F8A8 -:1090900000E01F700321281C05F0D2F9261CFF36C2 -:1090A0004136002805D00322011CB01C3C00E853C7 -:1090B0000000FBF786F800E0B7700121281C05F0DE -:1090C000C2F9002807D0011C201CFF300A224630BC -:1090D000FBF777F800E077713221281C05F0B3F92F -:1090E000002807D0011C201CFF30122250303C0009 -:1090F00024540000FBF768F800E0F7730621281CF1 -:1091000005F0A4F9002807D0011C201CFF30042220 -:109110006330FBF759F8F8BDFF346134A770FAE704 -:10912000084980B50968002801D107480168081C72 -:109130003C006054000005D103219020FBF71DFF87 -:10914000002080BD01F0D7FB80BD1C6701002067B7 -:10915000010080B5FFF7E7FF80BDF0B5002484462D -:1091600000200BE08740174007D014230B4D4343EA -:109170005B193C009C5400001B7C65462B55013458 -:10918000013001273B1C0E2800D300230E883D1C14 -:10919000A64200DC00252B40E7D10C80F0BD00008A -:1091A0007440010078B5041C01202070082000AB39 -:1091B0000D1C18803C00D8540000161CA01C6946E9 -:1091C000FFF7D1FF00AB0022D243198882406170C3 -:1091D00032202870102018803240A81C6946FFF702 -:1091E000C2FF00AB1888687078BD80B502F035FF0B -:1091F0000021002800D03C00145500000169081C23 -:1092000080BD00000549002801D0C86800E0086959 -:10921000002801D00430704700207047106701001B -:1092200003480069002801D00430704700207047CF -:1092300010670100024800693C00505500000028FA -:10924000FFD1704700001067010010B5054C206980 -:10925000002803D104219020FBF79BFE206910BD5C -:1092600000001067010010B5041C00F040F9002850 -:1092700001D0002010BD201C00F03C008C550000E7 -:1092800057F9002801D0012010BD022010BD0000B8 -:1092900070B50F4E041C30680D1C002807D0211C2F -:1092A000043005F0C1FB002801D030680BE0094A0A -:1092B0001068002809D0211C141C04303C00C8553B -:1092C000000005F0B4FB002802D020689C3000E0CC -:1092D0000348405D70BD206701001C670100CC475A -:1092E0000100044900200969002902D0FF31013141 -:1092F000886970470000106701000148007A3C004F -:109300000456000070470000AC7C0100FEB5061C4E -:1093100000201F1C141C0029029019D0012926D0FE -:10932000022947D12648007805F0A0FBA0720AF078 -:109330004FFC0E2809D1A07A05F0AAFB002804D022 -:109340003C00405600002048007805F092FBA072D7 -:10935000002020722FE01D4D2868002801D1FBF766 -:1093600052FE00972A68231C1832111C301CFCF78F -:10937000DEFB26E0301C0CF0CAFB051C02D0A868FE -:1093800000283C007C56000008D1134800680028E3 -:1093900001D1FBF73BFE104800681830021C0E4854 -:1093A00000970168231C1831301CFCF7C3FB002D0B -:1093B0000AD040352888800606D40020206003E0CB -:1093C000012190203C00B8560000FBF7F4FD029804 -:1093D000FEBDB069010090570100206701001C67C5 -:1093E000010080B5002002F04AFE1823054A5843C8 -:1093F000801840690121002800D04178081C80BDF8 -:109400000000946701003C00F4560000024908691E -:10941000002800D1C8687047106701000348C06881 -:10942000002801D004307047002070471067010009 -:1094300010B5054CE068002803D105219020FBF70A -:10944000BDFDE06810BD00003C0030570000106713 -:109450000100F8B50D1C002A03D01149124F0E78F7 -:1094600001E0114F0C26082E01D2341C00E0082424 -:10947000012101704470391C221C0230FAF7CBFE26 -:10948000321B002A07DD322028703C006C57000098 -:109490003919A81C6A70FAF7C1FEF8BDFF202870C0 -:1094A00000206870F9E70000A4690100B0690100BC -:1094B000905701000149486270470000946701001D -:1094C000034980B508600121012003F03C00A85742 -:1094D0000000C5FB80BD1C67010080B50021012094 -:1094E00003F0BDFB06F0B9F802490020086080BD1A -:1094F00000001C67010003490120C968002900D150 -:10950000002070470000106701000348C0683C005D -:10951000E4570000002801D04069704700207047E0 -:109520001067010080B50221012003F09BFB80BD84 -:10953000054A80B512690021002A03D0111D05F0EB -:1095400091FA011C081C80BD10670100064A80B515 -:109550003C002058000012690021002A05D0111C8F -:10956000FF31213105F08BFA011C081C80BD10670A -:109570000100054A80B5D2680021002A03D0111DE0 -:1095800005F073FA011C081C80BD10670100064A33 -:1095900080B53C005C580000D2680021002A05D04C -:1095A000111CFF31213105F06DFA011C081C80BD32 -:1095B00010670100FFB50D1C1F1C87B0109E002412 -:1095C00002F072FD1823134958430858002819D097 -:1095D000041C331C3C00985800003A1C281C0999B4 -:1095E000FAF79FFD041C14D0182000AB1880AA685D -:1095F00001A86946FFF7E7FD6A4601A9002007F0C8 -:1096000044FE002805D10A2100E00F219020FBF73D -:10961000EAFC201C0BB03C00D4580000F0BD000058 -:109620009467010010B5002402F044FD1823054999 -:10963000584340188068002802D0FAF771FD0124D1 -:10964000201C10BD9467010080B5024B00F04EF85D -:1096500080BD0000106701003C001059000080B57B -:10966000024B00F046F880BD000011670100F8B51C -:109670000E1C151C00281C4910D048681C4A288064 -:10968000002007E00B181C7A142363439B181B7CF3 -:10969000335401302B888342F4DC3C004C590000E9 -:1096A00024E000200F1C002408600FE0305D05F06E -:1096B00007FA0E2801D10020F8BD391908720122DD -:1096C000396882401143081C386001342888A04260 -:1096D000ECDC28887860FFF7B7FE00283C0088594A -:1096E000000006D00169002903D07F21C9430BF097 -:1096F00052FB0120E3E72C7D01007440010010B50E -:109700001C1C00280BD020780E2805D214230C4AEC -:1097100058438018007C00E0002008700EE03C00F8 -:10972000C4590000087805F0D1F92070FFF792FEC7 -:10973000002806D00169002903D07F21C9430BF01E -:109740002DFB012010BD00007440010080B52720D2 -:10975000C04309F031FC80BD80B52720C04309F02B -:109760003C00005A000039FC80BD80B5282009F07B -:1097700042FC80BD000080B5282009F04AFC80BD75 -:109780000000B0B5012828D1012901D0FBF76BFCFE -:10979000FFF7E9FD02281AD107F013FC124C2169EA -:1097A00088423C003C5A000015D007F00DFC2061B7 -:1097B00020687D24E40044430DF0AEF9051C07F059 -:1097C0000BFC281A844200D9241A0122211C0A20E9 -:1097D0000DF0B2FDB0BD002109200CF075FCB0BD4C -:1097E00007210A203C00785A0000FBF714FCB0BDAA -:1097F0000000D46701007D20024900010860704725 -:109800000000D467010010B5816D041CFF304630A4 -:109810000CF0D1FC201CFF305030A16D0CF0CBFCC3 -:1098200010BDB0B5041C3C00B45A00000D1C02F081 -:1098300059FC201C02F056FC1823044958434018D8 -:109840001822291CFAF770FDB0BD000094670100D2 -:1098500010B5041C09F0BCFB201C09F0C7FB10BDAF -:1098600010B5041C09F0D0FB3C00F05A0000201C8D -:1098700009F0DBFB10BD70B50C78061C48884D78EC -:10988000E200801AE900401A011C414312312420F1 -:10989000FAF791FD211C6143C9004018291C694356 -:1098A000C90042180C4988790C4B3C002C5B000025 -:1098B00053430C4A1360537B34021460527B88710B -:1098C00001335810084B801A0121490258430028DF -:1098D00000DA494208188012213870BD20100700B4 -:1098E000EC04000000A00700030300003C00685BDC -:1098F000000010B5041C06210430FAF770FCFF20AC -:109900002130FF210155201CFF3041308170417111 -:10991000C173FF2063300155002020616061FF3476 -:109920000134A060E06010BD000070B5061C3C0072 -:10993000A45B0000081C58609A601C1C1E60151C6B -:109940009B8AE28A311C02F0A1FC281AE06070BDFB -:1099500070B5041C081C111C1E1C0025EB43221CA6 -:1099600018320BF0F7FB221CFF325032111C0A395F -:109970003C00E05B00000123201C00F0C6F80C282E -:1099800010D00125201C0BF0ACFA201C00F019F8B7 -:10999000201C00F00AF8201C00F029F8311C201CC3 -:1099A0000BF017FA281C70BD0000FF211D3109586B -:1099B00080303C001C5C00008907002901DA01218D -:1099C00000E00021C1627047011C803100220A635F -:1099D000074A1268002A09D04288920606D5FF304D -:1099E0000130C069400701D40120086370470000BE -:1099F000AC6901003C00585C000080B5011C4A883D -:109A00000020520505D5FF310131C969490700D44D -:109A1000012006F0ECFB80BD0000F8B5051C98683D -:109A2000171C0E1C1C1C002802D1201C0CF031F845 -:109A3000AB69391C301C3C00945C0000A2680BF040 -:109A400095FBF8BDF8B5161C0D1C1F1C002402F078 -:109A500061FB18230649584340184368002B05D082 -:109A60003A1C311C281CFAF78EFB0124201CF8BD7F -:109A70009467010080B507F03C00D05C0000C5FA97 -:109A8000094908610868002802D17D2000010860AA -:109A900008687D21C9004143002301220A200DF0FE -:109AA0004EFD80BD0000D467010080B501210A2071 -:109AB0000DF097FC80BDF8B50E1C3C000C5D00005D -:109AC0005168141C1268A5680B1C751B5719974226 -:109AD00000D20131426800258A4202DD0125626020 -:109AE00005E09A4203D10168B94200D90125002D51 -:109AF00009D001682160A660A38AE28A3C00485D23 -:109B00000000606802F0D7FB301AE060281CF8BD46 -:109B1000000080B502F007FB1823034958434018A2 -:109B20001821FAF798FB80BD000094670100FEB58C -:109B3000041C081C111C1E1C0C25012200923C0058 -:109B4000845D0000A26902ABFDF7F0F8002845D063 -:109B500002982721021C0A4001D1084302902149A2 -:109B6000A069084006D00298014003D14921C900EC -:109B700008430290A06D0299884230D0002E2DD06B -:109B80003C00C05D00004021201C5830FAF769FB02 -:109B9000029800250026371CA06519E0C00711D5E2 -:109BA000F019001970300571281C04F0D4FF00284A -:109BB00004D0A01980300572013603E0E01960304E -:109BC00005703C00FC5D0000013701352D06029850 -:109BD0002D0E4008029002980028E2D18420065100 -:109BE000F0192067E765002500E00B25281CFEBD65 -:109BF000D83A000038B5051C081C111C0024E243AB -:109C00006B46FFF73C00385E00004FFA002805D095 -:109C1000A86900990140814200D10124201C38BD6F -:109C200000007CB5056A8669041CC068FBF7B7FBB9 -:109C3000E169FBF7DAFA201CE2694030C18B128936 -:109C40008918C18306493C00745E000001940091AC -:109C50002869331C82880168E068C06800F0F2F966 -:109C60007CBD0000915E0000B0B5D1685569C86840 -:109C7000141C144B0CE002689A4207D1C268CA60F7 -:109C80000021C1600160FBF73C00B05E000073FB87 -:109C900003E0011CC0680028F0D1E068C068E860FB -:109CA000E068C560201C4030C18B2A898918C183B7 -:109CB0002068002802D0FFF7BAFFB0BD044804F0C6 -:109CC0004EF9006A07F077FAB0BD3C00EC5E000088 -:109CD000A07E0100A06A0100F1B582B00298066979 -:109CE000011C083660314568019182E01021002096 -:109CF0002F69FBF763FB6861018908390904090CC6 -:109D000001816869006840180821FBF73C00285F62 -:109D1000000057FBE86168697188006820220180B3 -:109D2000716841600199497B89011143C17000212B -:109D300081702820FBF775FC3988041CC181A86B51 -:109D4000002803D1012080020843E08106223C0064 -:109D5000645F0000391D201C1030FAF7C5FA391C69 -:109D60000A310622201C16300090FAF7BDFA391C81 -:109D700010310622201C1C30FAF7B6FAE189254A78 -:109D80005C201140012292031143405BE1810F21CD -:109D90003C00A05F000008406084201C2030162199 -:109DA000817100212170E96B002907D02969098B95 -:109DB0000907090F2170A184182181710622601CF6 -:109DC0000099FAF794FA7068000EE071706800026A -:109DD000000E3C00DC5F0000207270680004000E82 -:109DE00060727068A0727088000AE07270882073D8 -:109DF000708801300004000C708002D1706801305E -:109E00007060AC61029828622D68002D00D079E75F -:109E1000029804493C00186000004268044804F0BD -:109E200074F8FEBD00008FC7FFFF3DDA0000A06A96 -:109E30000100B0B5074D2878032808D000242C7005 -:109E40006968002903D00120FAF7C8F96C60B0BD39 -:109E500000009C7301003C0054600000F8B52B4BDF -:109E6000D86A002850D02A48011CFF310131CA6845 -:109E70000132CA601A6C002A02D14A6901324A6171 -:109E80000A6901320A61DA68002A04D01F4A0132E5 -:109E90001278002A02D18A693C00906000000132E9 -:109EA0008A610025071D18261A4A6E43743290599C -:109EB000002829D0B4186069002825D160680028DE -:109EC00002D00168002905D1A16800291CD00968C9 -:109ED000002919D0002805D0E1683C00CC600000C2 -:109EE0000131E1600068814211D3A068002806D0EA -:109EF0002169006808180CF0A3FD002807D0064A65 -:109F00000120606174329159381CFAF770F90135FB -:109F1000022DCBDBF8BD0000447D01003C00086150 -:109F20000000F4670100F8B50F1C0025041C002890 -:109F300025D0201C04F003FE002806D0FFF7FFF810 -:109F4000041CFFF750FB061C07E0201CFFF791FBE9 -:109F5000061C201CFFF76FFB041C002E06D03C00E3 -:109F600044610000FFF74CFB002802D001250120CE -:109F700007E0002C06D0FFF7EFF8002802D00125FB -:109F800000203860281CF8BDB0B5C568041C0DF071 -:109F90008FFC207EC10708D5E168A94205D9226956 -:109FA0003C0080610000914202D3E18A0131E182EC -:109FB000810708D5E168A94205D22269914202D8F9 -:109FC000E18A0131E182400706D5E06821698842D3 -:109FD00002D1E08A0130E082E08AA18A88420DD372 -:109FE000607E3C00BC61000002280BD02068E16864 -:109FF000042207F065FB607E002803D1206808F08A -:10A00000ABFFB0BD0020E082B0BD000070B5061C03 -:10A010000C232049584345180020A860301C06F046 -:10A0200091FE041C3C00F8610000686033D0012000 -:10A03000A8702C20005D022803D1201C03F045FEEF -:10A0400010E0616B00290AD0012804D1211C281CD2 -:10A0500003F055FE06E0201C0AF00DFC02E0201C77 -:10A060000AF03DFB0D483C003462000014384168A2 -:10A07000002910D0201C4030028B1207920F012AB9 -:10A0800009D0808B32020009000410438122024370 -:10A090000C200DF0B7F90CF0A5FD606470BD000058 -:10A0A000607B0100FFB5081C3C0070620000111CC1 -:10A0B0000C32202414430C4A83B00CAE526860CE9C -:10A0C00094700024D47093630D234027BB52946195 -:10A0D000148401220292321C00900191231C291C3D -:10A0E000039800F066F907B0F0BD3C00AC620000D8 -:10A0F000A07E0100F8B5041C0027114E1DE0E068A9 -:10A10000002870680CD1808800070DD101210C480F -:10A11000FBF784F9C460E86070688188013102E06F -:10A120008188228989188180E068391C3C00E862B6 -:10A130000000002801D17168C96D251C6160041CF4 -:10A14000002CDFD1F8BDA07E0100064910B549689A -:10A15000002305E08A88048912198A804360C06858 -:10A160000028F7D110BDA07E010010B509493C00C0 -:10A1700024630000002449680AE08A880389D21811 -:10A180008A80C368221C002B00D1CA6D4260181C53 -:10A190000028F2D110BD0000A07E0100011C134870 -:10A1A00010B54068002309E082880C89121982806A -:10A1B0003C00606300004B60CA68002A00D1416621 -:10A1C000C9680029F3D1011C68318164C364436507 -:10A1D00082880823111C08318907890F591A5023D6 -:10A1E000195251188180011C406E4831C16010BD68 -:10A1F00000003C009C630000A07E010010B50749F0 -:10A2000000244B6806E0C268211C002A00D1D96DE9 -:10A210004160101C0028F6D110BD0000A07E010096 -:10A2200070470000FEB5061C0C480C1C40688021DD -:10A23000817000213C00D8630000C170151C4022D1 -:10A2400081631152816101840020042202920090F6 -:10A250000191291C201C1A1C331C00F0BCF8FEBD07 -:10A260000000A07E010070B5061C1748807802210E -:10A27000164A884390703C0014640000101C8078DB -:10A280000843111C887013480024C4707020FBF729 -:10A29000D9F9114D70216860FAF734F83007000FD2 -:10A2A00069689030C8650D4868220880081C28300D -:10A2B00089604861082008823C0050640000081C46 -:10A2C00038304863203848645A20505406480831D2 -:10A2D0004164446570BD0000070058000700A07E7F -:10A2E0000100DEC00000003007000A4B10B5586DB9 -:10A2F0000A490022496800244A623C008C6400003C -:10A300005C654B6E002B01D0DA604A668B6D002BCA -:10A3100003D00A6E0021F9F79CFF10BD0030070042 -:10A32000A07E0100094910B508880130088001208D -:10A33000074980020860074CA26D002A3C00C864EF -:10A34000000005D00521D1200DF06FF90120A06596 -:10A3500010BDB07401000010070000300700FFB509 -:10A3600083B00CAE86468C460E4A43CE0FAD0F1C12 -:10A3700052680C3730CD9770D37096630D263C0031 -:10A38000046500004027BE52059E9661138400229A -:10A3900002922A1C00900191211C6046734600F035 -:10A3A00029F807B0F0BD0000A07E0100FFB5101C29 -:10A3B0001A1C0C1C191C6023FF3213430C4A83B077 -:10A3C0003C00406500000CAE526860CE93700023E4 -:10A3D000D37093634027BB5293611384032202928C -:10A3E0000191291C321C0090201C039B00F005F8F1 -:10A3F00007B0F0BD0000A07E0100F8B5051C1148B3 -:10A400001C1C3C007C650000089B079F4068DE0028 -:10A4100081650266002181800D488159201CF9F771 -:10A4200022FF0B4830184168281CF9F71CFF074928 -:10A4300006984968002C88620F8600D12C1C0548BC -:10A440004C6245653C00B86500000121016501646E -:10A45000F8BDA07E01009052010000300700FFB55A -:10A4600083B00DAE60CE0C9F081C111CD219FF32B8 -:10A47000402414430B4A526894700024D4709363B0 -:10A4800040239F5294613C00F46500001484022232 -:10A490000292321C00900191231C291C0398FFF7A3 -:10A4A000B5FF07B0F0BD0000A07E01004C210D4AB1 -:10A4B000414310B58C180C490978884207D105F042 -:10A4C000C7FD0A48018801223C00306600001203E3 -:10A4D00091430180201C30300C23C156407B8142C7 -:10A4E00002DD208D0CF0E5FB10BD58E301003C7C43 -:10A4F000010032800700011C603180B5CA798B7978 -:10A500009A4207D9487A0C2307493C006C66000040 -:10A510005843085A0CF0D0FB80BD2030007B012846 -:10A52000FAD1487A05F040FD80BD0000607B010053 -:10A5300010B5041C1C21F9F703FF0348A080E0803C -:10A5400020816081A08110BDFFFF00003C00A86653 -:10A550000000FFB5041C002083B00D1C062C0290E7 -:10A5600038D21F4AFF26C10089188978A14203D139 -:10A57000C0008018467804E0013000060016062866 -:10A58000F1DBFF2E24D00193201C0DF0E8F93C00F4 -:10A59000E4660000002805D02421281C01AB02AA93 -:10A5A000FAF730FE1049F00030390F58310609161D -:10A5B000281C059A019BF9F76EFE061C10D1201C81 -:10A5C0000DF0D0F900280BD0281C6969FAF712FEAB -:10A5D0003C00206700000298686104E0062C01D36B -:10A5E000072600E00826301C07B0F0BD0000CC5A5A -:10A5F000010010B50C1C09F086F8002802D0201CC0 -:10A6000009F0B5F810BDFEB5134D041CAE69002E5F -:10A610001CD03C005C670000104F30377868604306 -:10A62000011C2888F9F7D2FF39686143411801A855 -:10A63000321CF9F737FE0298296A401828620BD4B9 -:10A64000E969884208D9A969401A2862019801304D -:10A6500001E000203C009867000002900190019802 -:10A66000FEBDC8740100F8B5002828D00024144DA0 -:10A6700000E0013461000919491949780029F8D12D -:10A6800063001B1903330722694603F0D4FB002C37 -:10A690000FD0002000993C00D46700000AE042007F -:10A6A0001218AE5C531852195E71567801309E71C3 -:10A6B0009278DA71A042F2DB00980322023003495B -:10A6C000F9F77EFEF8BD0000EB620100E8620100D0 -:10A6D000B0B5051C081CFAF73C00106800009DFF8F -:10A6E000041C281CFAF7D9FE211CFAF7FCFD201CDB -:10A6F000B0BDF3B544480C1C007881B0012872D17C -:10A70000FAF782F8414DE86A41490860E86B486011 -:10A710004048FAF7A6F9E86A00283C004C680000B7 -:10A72000FCDA221C0F2001990AF0A4F8384D022708 -:10A730002F63384A64260020AA21083213180130FA -:10A740000004000C64281974F8D3168100205060AE -:10A75000101C103010600025171CD2603C00886867 -:10A76000000008E0281CF9F7A2FF413178190135F3 -:10A770002D042D0C0174B542F4D3264D6F630120D6 -:10A780002863244DE86A0028FBDA0B223B1C244E88 -:10A7900003E00132642A00D10022101C0C213C008D -:10A7A000C46800000139755C1F183F7CBD42F3D1BD -:10A7B000013800D563200029F4D1184E501CF16BEC -:10A7C0001A4A101C0138FDD1F06B884201D0011CDF -:10A7D000F7E702273763164D9021281CF9F7CEFDC5 -:10A7E0003C0000690000281C28302860281C10301C -:10A7F0002F81E860281C20302861042100E00CE053 -:10A800002983E861ED62756301203063221C892091 -:10A8100001990AF038F800202863FEBD00000857AF -:10A8200001003C003C69000000300700108E010070 -:10A8300074FF010009570100204E0000E4FE0100F2 -:10A8400080B513281ED0F02816D109F0B5F90028DC -:10A8500013D10DF0BFFA11F00DFC00220421C42029 -:10A860000CF01CFF3C0078690000094800210078CA -:10A8700005F03FFD05F093F807490120086080BD11 -:10A88000011C0120FAF787FC80BD00F032F880BD82 -:10A8900000006A5701003CD90100B0B50CF0FFF987 -:10A8A0000B49022448603C00B46900000A48046176 -:10A8B0000120772109030861084D6868800702D4E8 -:10A8C00068682043686009F0C7F96868A043686059 -:10A8D0000020B0BDE060010000300700000107006B -:10A8E00080B50123032200213C00F0690000022012 -:10A8F0003CF0F1FA002801D0FAF781FC80BD1CB5CC -:10A90000FCF7F5FAFAF719FE01F003F90024211C0F -:10A91000684601F0E2FB00AB1878012803D002285A -:10A9200001D0032801D10CF0B2FC3C002C6A0000DD -:10A93000013424062416062CECDBFAF709F9FAF7A1 -:10A94000E7FCFAF733FAFAF76DFAFBF7DFFF05F0E9 -:10A950004DFB06F081FC0BF07DF907F029FC114856 -:10A960001021016009010160C90201603C00686AB0 -:10A97000000089000160202101600421016008219C -:10A98000016040210160802101608900016049006F -:10A9900001604900016049000160C9030160890B41 -:10A9A0000160F9F741FF1CBD0000001007003C00EA -:10A9B000A46A000080B53BF04FF83BF07DF9FAF750 -:10A9C0004BF980BDF8B5002500240022002871D085 -:10A9D000434FB9680B1ABB60F868391C0130F86046 -:10A9E000896A002B1EDC0224002906DAFB699842E2 -:10A9F0003C00E06A000006DD3B69984209DD07E0A3 -:10AA0000BB69984201DC012403E07B69984200DDC8 -:10AA10000324786A002808D000207862032C01D132 -:10AA2000022402E0022C00D101242E48012C0079DE -:10AA300018D13C001C6B0000BB78994215DA3B78BA -:10AA40007B7039700131B96201D50131B962B96ADF -:10AA50000125994203D1042804D2013000E00020EE -:10AA600038710122002933DA27E0032C35D1002682 -:10AA7000002807D03C00586B00001E498140386A0E -:10AA800008180CF05CF800282CD01B480078400710 -:10AA900005D5F8683969884201DB0323FE56B86A98 -:10AAA000B04212DD01217962397801257970387060 -:10AAB0000138B86288423C00946B000001D000214C -:10AAC000397100280CDA0720387100E012E007E045 -:10AAD0003879002809D0FF30387106E0002A02D00A -:10AAE0000CF0F8F83862002C04D0FEF797FD291C12 -:10AAF00008F0FCFBF8BD00003C00D06B0000AC7E11 -:10AB0000010050C300001D75010080B510680028C9 -:10AB100002D000F00AF880BD0348C069806808F0E0 -:10AB2000B2F980BD0000846A010010B5041CC06841 -:10AB3000C068002801D1FAF77AFB3C000C6C0000D9 -:10AB4000E068E169C068231C014AFFF7D7FB10BD2C -:10AB5000DD6B0000B0B5051C0C210020FAF7D6FC17 -:10AB6000041C006800214160016029880181698816 -:10AB70004181291CFF312131201C03F03C00486C2D -:10AB8000000077F9291CFF314631201C03F071F9D0 -:10AB9000291CFF315031201C03F06BF9291CFF31B7 -:10ABA0004331201C03F065F9291CFF316331201C5F -:10ABB00003F05FF904480068002802D0201C3C0024 -:10ABC000846C0000FFF78EFD201CB0BDE462010024 -:10ABD000F8B5051C0C1C04D105211820FAF702FB5E -:10ABE0004DE0291C12310622601CF9F725FC221CBD -:10ABF00030320026002100201670344B1B5C2F8A57 -:10AC00003C00C06C0000DF40FF0707D51778013318 -:10AC100001371770671830377B70013101300E280B -:10AC2000EEDBA87B6072107800282BD02A481E210A -:10AC3000095C271C1037217201686181C189217765 -:10AC400081893C00FC6C00007973C18AA181018B71 -:10AC5000E181428A211C60314A80828A8A801F49B0 -:10AC60002C31097A002909D002290AD10122626215 -:10AC70006272428BA281808BE08103E001216662D7 -:10AC800000E000213C00386D0000E87B084001D165 -:10AC90000020F8BDA868431C09D0221C1232009283 -:10ACA000931D0232211C01F09CFAA06200E0A66212 -:10ACB000687B291C1D3120740B4820222062201C37 -:10ACC0004230BE73F9F73C00746D0000C1FB4034A4 -:10ACD0002670687E0449607068682C3148600120E5 -:10ACE000DAE7000090580100C86E010091020100EF -:10ACF00070B5161C0D1C041C002806D00C20FAF799 -:10AD000047FD30C0083806723C00B06D000070BDD1 -:10AD1000002070BD0000011C054880B5006801D00E -:10AD2000012100E00021FCF7A0FC80BD00000C79AF -:10AD3000010070B50E1C041C002801D1FAF78FFA2F -:10AD4000064D2868002801D0FAF73C00EC6D0000A1 -:10AD500089FA04482E60C4600121017070BD0000B2 -:10AD6000A87E01003000070010B5074C20680028BD -:10AD700001D1FAF777FA054800692168F9F7DFFA97 -:10AD80000020206010BD0000A87E01003C00286E5D -:10AD900000003000070001200549C00680B50860AA -:10ADA0000022032154200CF0B8FC80BD00000010EC -:10ADB000070080B500220421C4200CF0AEFC80BD49 -:10ADC0000000044880B500880249FFF7B8FF3C0046 -:10ADD000646E000080BD0000754B0000C874010067 -:10ADE000F8B5061C31480025C0680C1C002830D07E -:10ADF0002E482F4F0430007838762C4804304078A5 -:10AE00003881002A0BD0F9F7A5FA1F20B876201C4C -:10AE10003C00A06E0000F9F7F6F925480430807870 -:10AE2000B87643E02548224984424D6902D26C43FA -:10AE3000E40B0FE01F48211C806A0090F9F723FC07 -:10AE40000099021C4A43A11A1A4A6943526AC90B63 -:10AE500050433C00DC6E00004418022C01D8002056 -:10AE6000F8BDF9F77DFA1F20B876201CF9F7AEF986 -:10AE7000041C114804308078B8760F4F7D6AAC42CC -:10AE800004D2201CFFF722FC051C12E0211C281C08 -:10AE9000F9F7FCFB3C00186F0000061C6843201A01 -:10AEA000FFF717FC051C002404E0786AFFF711FC8B -:10AEB00045190134B442F8D3281CD4E70000C87403 -:10AEC000010030000700C0C62D00011C7D2080B5A8 -:10AED000C000F9F772FB3C00546F00000249886122 -:10AEE0004008C86180BD0000C874010010B5064C60 -:10AEF000211C00200BF042FA211C00200BF00AFA62 -:10AF000000F068FE10BD0000856F000030B50F4DE9 -:10AF10002A78042A19D8002A3C00906F000017D024 -:10AF2000002107E04B005B185C190123E4568442C2 -:10AF300002DA01318A42F5DC8A4200D10139480047 -:10AF4000401840198178024A343A1170C078507024 -:10AF500030BD0075010030B5111C3C00CC6F000005 -:10AF6000383185B09162082111860023141C011C20 -:10AF70005363C068154D0BE00268AA4206D1C2684F -:10AF8000CA60C3600360FAF7D1FA03E0011CC0682D -:10AF90000028F1D1221C4032082120683C000870B2 -:10AFA0000000FAF764FB0B49201C4830029004941F -:10AFB0000391E069828801686E2001920091221C51 -:10AFC0005632035D211C28312068FFF758FA05B07E -:10AFD00030BDA07E0100D57000001CB507493C00C3 -:10AFE00044700000021C01900091C069131C848809 -:10AFF000016810684833221CFFF708F91CBD0000E7 -:10B00000C96F000010B5141C184803F089F8A0425D -:10B0100001D0FAF745F90422201C4030A16AF9F763 -:10B020003C0080700000BDF9002802D101202062A0 -:10B0300005E0002020628420005D002803D1201C50 -:10B0400009F023FB05E02068FAF779FA201CFAF7EB -:10B05000A4FBE0698079062806D1206A0649002809 -:10B0600003D03C00BC70000008690130086110BDCD -:10B0700048690130486110BDA06A010028610100E3 -:10B080001CB5141C154803F051F8A04201D0FAF782 -:10B090000DF9201C4F300279417900AB12021143A7 -:10B0A000C27812043C00F870000011438278120646 -:10B0B0001143009101784078090208439880201CD0 -:10B0C000694606F03CF9002803D1201C09F0E3FA98 -:10B0D0001CBD2068FAF739FA201CFAF764FBF7E781 -:10B0E0000000A06A01003C0034710000BCB51F4D97 -:10B0F000141C281CDC3003F01FF8A04201D0FAF722 -:10B10000DBF8A06C00AB027881781202114302795F -:10B110001204114342791206114300918179C079DA -:10B12000000208439880201C3C00707100006946B2 -:10B1300006F00BF9002817D001280ED1ED6C002D78 -:10B140000BD08020025DE06C0121002800D100219D -:10B1500060686B460A30F9F723F92068FAF7FBF9C3 -:10B16000201CFAF726FBBCBD201C3C00AC71000083 -:10B1700000F08EFEFAE70000C4690100BCB5041CB3 -:10B18000406A0025002803D06068008B05072D0F5A -:10B19000221C403208212068FAF77EFAA168019546 -:10B1A0000091211C221C6032206850313C00E87163 -:10B1B00000000D1CE36809F0E2FFE069806B0028E5 -:10B1C00003D1FEF7E8FA002801D0182000E0102093 -:10B1D000064901940091E169082309680A18211CB5 -:10B1E0002831281CFFF787F9BCBD357100003C00F1 -:10B1F0002472000010B5101C3830906204201086B4 -:10B20000002050631068141C40320421FAF74AFAF7 -:10B21000231C211C2831024A2068FFF7BDF810BD0D -:10B22000657000000EB5C369021C9888054902923A -:10B230003C0060720000019100901B6810689169E9 -:10B240000322FFF7AEF90EBD0000257200000EB517 -:10B25000021C0649102000900292131C01911068F4 -:10B26000002270330021FFF79CF90EBD000025720B -:10B2700000003C009C72000010B5031C002100205F -:10B28000084C00E00131CA00A2589A4202D00B29B2 -:10B29000F8D310BD0B29FCD2C90009190020087190 -:10B2A000012010BD385801008CB500AB86211980F3 -:10B2B000011C04483C00D872000006F0EEFE01902C -:10B2C000684606F0FAF88CBD0000707C010010B5ED -:10B2D000041C0D480D4994B00480062218310C302E -:10B2E000F9F7FBF801A807F0A2F80C2009A94872A9 -:10B2F00000AB1C8002213C0014730000684603F080 -:10B30000DBFF049001A806F0D1F814B010BD0000D6 -:10B31000587C010080B504F045FE05F053FA80BD6D -:10B3200010B5194CE068002806D0611C0878002888 -:10B3300003D14878FF3008703C005073000010BD06 -:10B34000FF300006000E0870A1680029F7D0002821 -:10B35000F5D10E4854308178002903D1C178FF31EE -:10B36000817010BDFF310906090E8170F9D1A16904 -:10B370000029F6D0808803F0D0FB3C008C730000DD -:10B38000044A011C5C320C3205CA801AA269F9F722 -:10B390001FF810BD447D0100F0B5041C4068002575 -:10B3A0000179002285B0C907CB1769490133896A41 -:10B3B000102905D36649C039086B01303C00C873B9 -:10B3C000000008638EE021680E68F678B706FF0F6C -:10B3D000B609002B049706D063691F1C1B6A5037FF -:10B3E0009F4200D10125002D02D063691B6A04E051 -:10B3F0003C23594F7343DB190433E3619F883C00BE -:10B4000004740000002F70D09B79022B6ED0042BA7 -:10B4100017D0062B69D10868A06108890438088113 -:10B4200020680168043101604E4900295DD0049F05 -:10B43000BA425AD14948221C1C3002F065FE05B0C0 -:10B440003C0040740000F0BD0968251CCA794035F5 -:10B45000261CEA738B79221C503213704B796036AC -:10B4600053700B7993704B78D37009781171002168 -:10B4700029721621B173616A002906D0018B090770 -:10B48000090F3C007C7400002972B1811821B1734E -:10B49000011C0A31201C06224930F9F733F8606894 -:10B4A00014220188E982011D201C5830F9F72AF87E -:10B4B000E88A30490840012189030843E8827089FD -:10B4C0000F2108403C00B874000070812068018999 -:10B4D00008390181206801680831016008210020D5 -:10B4E000FAF783F8051C026820680821FAF7FBF8D0 -:10B4F0002068FAF774F82149C5602FE030E0FFE7D3 -:10B50000216860680A683C00F47400008023A2642B -:10B510001E55E564557913792D025B1995792D0433 -:10B520005B19D5792D065B19957812781202AA1845 -:10B5300015040A892D0C083A0A8121680A68083224 -:10B540000A60E169021C0A323C003075000001A863 -:10B5500009680BF03EF9E0692B1C0168201C703073 -:10B5600001AA0BF086F9094901226DE72068FAF774 -:10B5700022F8201CFAF74DF970E7846A010068612F -:10B580000100557200008FC7FFFF3C006C75000082 -:10B59000417000007972000080B502218220F9F725 -:10B5A00093FE80BD704700007047000070470000A8 -:10B5B00070470000704700007047000070470000AF -:10B5C00080B5C068F9F7FAFF012080BD3C00A8757E -:10B5D000000080B50021FF20F9F779FE80BD70479B -:10B5E000000070470000012070477047000070475E -:10B5F0000000704700007047000080B506219920C8 -:10B60000F9F765FE80BDB0B500250129124C3C005C -:10B61000E47500000FD10AF00FFC00281DD06178FE -:10B620003C235943091904310162611C416284625F -:10B63000041C503406E000290FD13C2050432570F3 -:10B6400004190434002C08D02068002802D02021DE -:10B650003C0020760000F8F718FFA5800720A071B5 -:10B66000B0BD6861010070B5041C002101F041FC0F -:10B670006068002801D0216801602068002801D09E -:10B6800061684160124E7068A04201D160687060CC -:10B69000E0683C005C76000000280BD0002506E046 -:10B6A000E068E900411814200BF0E2FF0135308812 -:10B6B0008542F5DB0621201C4430F8F7E9FE206BBB -:10B6C000002801D0F9F786FFE069002801D0FAF7D9 -:10B6D000AFF870BD3C009876000058750100F0B5D9 -:10B6E0001D4F059D3F6801261C1C331C002F00D0F8 -:10B6F0002B1C1D062D0E002906D011780E23164F87 -:10B700000918097A6B4310E02178002913D0FF3122 -:10B710000DE0012901D93C00D476000001311170FF -:10B7200011780E230F4F490811700918097A6B43DD -:10B73000DB19595C21702178002902D11178002988 -:10B74000EAD10948C068002805D02178301C0029BA -:10B7500000D10020F0BD01203C0010770000F0BDBA -:10B76000000018670100246701005C670100AC7CE1 -:10B77000010084460020F0B5002909D011781A4E46 -:10B78000B170194EB178717031700121316127E0CB -:10B79000164E0123F15663465F683C004C7700006B -:10B7A0000023F6560125CC0FB74200D90025002C06 -:10B7B00001D0002DE8D10E4F3B69002B03D0002DA6 -:10B7C00001D1167002E01C4301D111700120012447 -:10B7D000002B00D000243C61002C02D03C00887774 -:10B7E0000000711C397001E0FF3179700028D5D05C -:10B7F0000120F0BD0000AC7C010090B50A4C002097 -:10B8000093B0206103906846002108F084FD207AFF -:10B81000022801D1E06B00E0206CE06101203C00D7 -:10B82000C477000008F08AFD13B090BDF46E0100EB -:10B83000F7B5051C88880C1C82B01F4F002800D16A -:10B8400000270498002801D1F9F78AFD1B483B1C0A -:10B850000068211C0268281C0092049AFEF73CF83C -:10B860003C0000780000061C22D00321049802F05E -:10B87000B8FF00281BD08078012103F0E4FFA088E6 -:10B88000A18E484300040F49000C088003F081F9A1 -:10B890000122002D00D10022011C0E200BF0C9FE58 -:10B8A000002F3C003C78000008D10021281C02F049 -:10B8B000BDFC03E00026281C00F00AF8301C05B08F -:10B8C000F0BD0000C1A10000E4650100A87C0100FA -:10B8D00010B5041CFEF738F80121002C00D100211E -:10B8E0000E200BF03C0078780000DDFE10BDF8B5AE -:10B8F000071C0BF094FAFDF7BCFE002602281E4D33 -:10B9000001D02E70F8BDFDF73EF8041CF9F759FC84 -:10B91000002814D0FDF777F8002810D002F0F9FBCA -:10B92000002801D000243C00B478000000E0154C51 -:10B93000331C211C072216200BF066FF687880213B -:10B940000843687002F00AFC0028DED128788007DE -:10B95000DBD4FDF723F9002805D12878C00702D5EC -:10B96000FDF742F8D1E702F03C00F0780000CDFB93 -:10B970000028CDD02878022108432870211C381CCB -:10B98000FDF7C1F8C4E7606C01007102000010B55A -:10B99000124C01202070FEF7F0F90121A068FBF79E -:10B9A000F4FEA06803F087FF0D483C002C790000EE -:10B9B000A16807F023FDFBF755FFE06800280DD0D4 -:10B9C000094906200AF024FD084905200AF020FD57 -:10B9D000FBF76EFF002801D005F0F8FC10BD000059 -:10B9E0007869010034630100E13500003C006879AA -:10B9F0000000B1350000F0B5244D234C687C203C9C -:10BA00009BB0002808D0022803D820890138208163 -:10BA100037E000276F7434E01C4E68221436311C66 -:10BA20000C3101A8F8F709FE1848338901213C00C0 -:10BA3000A479000044300A1C002B007B00D1021CBA -:10BA40001206120E0DAF3A709446AA7B931930334A -:10BA50005B7B7B70EA7301321206120E0027824272 -:10BA6000AA7301D3AF7304E06246012A01D1776063 -:10BA70003C00E079000000E071600648074A803829 -:10BA800081674267682201A9F8F7DDFD278108F088 -:10BA900012FD1BB0F0BD84660100E92E0000F1B577 -:10BAA00086B006990020886106988468808D656854 -:10BAB00001283C001C7A00004CD9354949680591A1 -:10BAC000002947D00022002100230390281C96461D -:10BAD000944606680496F2788026B2433F2A2ED810 -:10BAE000D706FF0E0126BE40371C049E5209B678C9 -:10BAF0007600B2183C00587A0000264E92001C36A0 -:10BB0000B2583A401ED003E002900289C068511832 -:10BB10000028F9D10598814214D870460130864634 -:10BB2000002B04D06046D86001986246D06003982C -:10BB30000138039006D03C00947A0000231C24684E -:10BB40006068029A01909446C9E77046012807D9B7 -:10BB50002A1C00213F2001F051FF051C0698856139 -:10BB6000281C01F0B3FF0E480068002807D02868A1 -:10BB7000018840790231091A3C00D07A0000281C63 -:10BB800001F0E5FCA2680698C06806990B69291CBB -:10BB9000F8F77CFC034908690130086107B0F0BD83 -:10BBA0000000FC5A0100CC5C010010B5094A80007D -:10BBB0001258D006C00E0130074B3C000C7B000031 -:10BBC0001C68002CFCDB5A602022121A914019607C -:10BBD00019680029FCDB10BDE86001003020070077 -:10BBE000B0B5124C00252570A168114807F032FC51 -:10BBF0006561FBF7A3FEE06800280DD03C00487BA0 -:10BC00000000FBF7A4FE012107200BF070FD0A499C -:10BC100006200AF04CFC094905200AF048FCA068FF -:10BC200003F067FE0021A068FBF7CDFD05F0ABFB3C -:10BC3000B0BD7869010034630100E13500003C00CB -:10BC4000847B0000B135000010B50F4C207C00282B -:10BC500019D16069002816D1E068002806D00A488A -:10BC60001C38C068002801D005F0CEFB0121072058 -:10BC70000BF040FDA06803F03FFE0448A16807F008 -:10BC80003C00C07B0000DBFB0120207010BD786908 -:10BC900001003463010070B50E4C0122A368E56811 -:10BCA000268A5D1BB54201D1002206E025680133DA -:10BCB0002E68A3602660043503C5002A04D1012143 -:10BCC0009D203C00FC7B0000F9F752FB70BD03494E -:10BCD0000220086070BD000044E30100402007001E -:10BCE00080B502F0B9F880BD80B502212D20F9F7AA -:10BCF0003FFB002080BD000080B502212A20F9F71B -:10BD000037FB00203C00387C000080BD000080B57F -:10BD100001212B20F9F72FFB022080BD00000149F3 -:10BD20000120086170477C780100F8B5061C0C23DF -:10BD30000F1C1749584345186C68301C0BF03FFE28 -:10BD4000002F09D1301C3C00747C000003F0EEFE93 -:10BD5000412007551148211CFFF7A6FFF8BD4120DF -:10BD60000755A06B002803D0201C00F0DFF9F5E791 -:10BD7000201C00F0DBF9AC68002C02D00020A86089 -:10BD8000EDE7301C05F034F93C00B07C0000041CE9 -:10BD9000E8D108210C20F9F7F4FAE3E70000607B12 -:10BDA000010055800000074A80B55070516012783C -:10BDB000064B80005201D218101840380268081C47 -:10BDC000F8F77BFB80BD786901003C00EC7C00004B -:10BDD000FC420100B0B50A49041CC870084DE435A6 -:10BDE000A87A0871082C01D3F9F7FCFAA87A05495A -:10BDF00040014018A1004058F8F760FBB0BD0000BA -:10BE0000606C01008043010080B500283C00287D63 -:10BE1000000001D009F01DF980BDB0B5051C0C1C57 -:10BE200000200860686809F036FB6C60B0BD10B592 -:10BE3000041C09F034FB2168002900D1646010BDA6 -:10BE400000000021016040607047F8B546683C0082 -:10BE5000647D0000041C406A351C0A35002804D0AB -:10BE6000201CF9F789FD071C00E00427291C6069E4 -:10BE700000F0F6FC79000F18BA88F18A051C8A4296 -:10BE800005D13088000502D504F0BEFB3CE02868EF -:10BE90003C00A07D000000280FD001328A4204D16E -:10BEA000F9F70FFC2168C1600BE0F9F7F0FBF08AAD -:10BEB000000704D00021296029E0080727D1206865 -:10BEC0002860F08AB8801348016801310160318828 -:10BED00049053C00DC7D000018D429682160002160 -:10BEE0002960E16900290DD0897902290AD1082148 -:10BEF0002186211C3831A162221CDC30084902F065 -:10BF000081F9F8BD201C00F05FF8FAE7201CF9F772 -:10BF1000EFFCF6E73C00187E00002068F9F7BDFB57 -:10BF2000F7E7C4690100B9710000F8B50F1C097882 -:10BF30000124C90721D502F08CFF002801D000247C -:10BF40001BE00E4E756E002D17D0346E0622311C8C -:10BF5000381CF8F7D4FA3C00547E0000002805D1C4 -:10BF60000120002C00D00020041C03E0013D063617 -:10BF7000002DEED1002C03D1024EB06E0130B06620 -:10BF8000201CF8BD1079010030B5051C00200649C1 -:10BF900000221C23CC56AC423C00907E000001D114 -:10BFA000081C30BD01324831012AF5D330BDCC6DBB -:10BFB000010010B5084C00221C235343E358834270 -:10BFC00004D11C20504300190A6010BD01320E2A12 -:10BFD000F2D3002010BDDC7101003C00CC7E0000DB -:10BFE000F0B5416895B0071C90371391041CF878A0 -:10BFF000251C8035C6072879F60F4A4902284DD1FD -:10C000000A6D002A4AD04868013048600AF058FF9B -:10C0100044490861486113990979C9073C00087FC0 -:10C02000000001D441498861206806220690A16879 -:10C0300003A8F8F7EEFA062204A80230E168F8F740 -:10C04000E8FA07A806222169F8F7E3FAB87808ABFE -:10C05000002198700C96636A201CA0300A1C3C00DA -:10C06000447F0000002B02D0028A5207520F08AB17 -:10C07000DA7000AB998413990988C90BD984696B6C -:10C0800010AB1091A96B1191808B29491881096D12 -:10C0900003A8F8F732FA2979686B0BF04DFD29797E -:10C0A0003C00807F0000A86B0BF067FD3DE000289E -:10C0B00038D1486D1490002834D0206806220390AF -:10C0C000A1686846F8F7ABFA062268468018E1686E -:10C0D000F8F7A5FA05A806222169F8F7A0FA0021C9 -:10C0E00004913C00BC7F0000B97808A810AB017235 -:10C0F0000896E9680B9169794172686B0E90A86B9C -:10C100001090288DD880688D1881E1690CA80029CD -:10C1100004D089790170206A0D9001E00721017037 -:10C12000684614993C00F87F0000F8F7EFF902E048 -:10C130002068F9F7CAFA201CF9F7F5FB15B0F0BD35 -:10C140000000C4690100B0B5041CC0680622018962 -:10C150000C3101810568211C0C3D0560A818F8F719 -:10C1600064FA0622A1183C0034800000281CF8F76D -:10C170005FFAA08F0009E062206303480169201C78 -:10C18000F8F7C7F9B0BD00007C790100F8B5061CCE -:10C190006036051C707A0C23254958434418A86B57 -:10C1A0000027002806D0A0783C00708000000128FD -:10C1B00003D1A770707A0AF0B6FD2A1C0C218020EA -:10C1C0000BF095FBA86B002833D0A07802280BD089 -:10C1D000042822D1A7702F1C4037787802280CD170 -:10C1E000707A0AF0A0FD18E003203C00AC8000004B -:10C1F000A0701249002014390969F8F790F90FE08E -:10C200002C1C07E078784121221C08550C21802045 -:10C210000BF070FB6034607A04F020FF041CF1D155 -:10C22000707A4035A98B0002090909043C00E880B6 -:10C2300000000843812101430C200BF0A0FAF8BD57 -:10C240000000607B0100F8B51C49051C886A0130BC -:10C250008862281C0BF07DFD041C11D02B1C2033A0 -:10C260001E1C5A79201CB4301979144FFDF73C007C -:10C270002481000089F8AA7A201CB830B179FDF732 -:10C28000B9F8002F04D101212868FAF76DFAF8BD3A -:10C290006068BC21C08A085328680021FAF764FA54 -:10C2A000002809D00649C86A0130C862002CEED0C7 -:10C2B0003C0060810000201CF9F747FBEAE7201CE6 -:10C2C000F8F73CF9E6E7C4690100A1FF0000F8B502 -:10C2D000164C051F0022211CA03103E02868A04253 -:10C2E00009D02034A142F9D1002A04D102218E20A4 -:10C2F000F9F73C009C81000083F8F8BD0D4FBE7932 -:10C30000606901306061F8F797FDA84207D1A08805 -:10C310000430F8F797FDE0690130E06105E020683E -:10C3200028602560A0690130A061BE71E5E70000CA -:10C33000D05C01003C00D8810000201007000029DB -:10C3400001DB062901DB02207047064BC9005A5C5D -:10C35000C91802704A7842708A78827049684160D0 -:10C36000002070470000CC5A0100B0B50D1C041C21 -:10C37000052801D3F9F73C001482000075F8104835 -:10C380004068002800D00324102D00D30F2506207C -:10C390000B496043123140184178807849190906E9 -:10C3A000090E884200D2011C01208840054901384D -:10C3B000096808400004000C3C005082000002F0B4 -:10C3C00044FEB0BD0000D47A010008200700B0B5DB -:10C3D000041C0D1C09F0CFFD002803D1201C09F01E -:10C3E00082FD0561B0BD80B50AF097FD034A0C32AD -:10C3F00006CA8918081A80BD00003C008C82000023 -:10C40000A07D010070B50B4C049E64680DE065686A -:10C41000854209D1207A0870E068106020691860B0 -:10C42000207D3080012070BD2468002CEFD10020D9 -:10C4300070BD0000A46E010010B5041C3C00C88251 -:10C4400000002030817B20690430FDF764F9011C75 -:10C450006220025B636A4034207802F0CEFD10BD9A -:10C4600000000B4910B508888A690A2350435843D5 -:10C470000ED0084A53899488D2881B1952043C0074 -:10C4800004830000520C9A18C96806324A430A21F4 -:10C490005143F8F7FDF910BDC874010030000700E2 -:10C4A00010B5431C01D1104810BD0F4A0E4B943AF1 -:10C4B0001268443B1B7A10E0546884420CD1002976 -:10C4C0003C00408300000FD1022B03D1D47B022C0F -:10C4D0000AD204E0002B05D1D47BE40704D412680F -:10C4E000002AECD1002010BD101C10BD0000386FD8 -:10C4F0000100011C0120012900D00020704700B577 -:10C50000021C3C007C830000FDF7CEF8002808D018 -:10C51000101CFFF7F1FF1823034958434018006926 -:10C5200000BD002000BD00009467010080B5002818 -:10C5300000D10848074900685031097A002902D023 -:10C54000022904D13C00B883000000E0012100F082 -:10C5500006F880BD002080BD0000A46E0100124AD4 -:10C56000124B127A2C3B002A03D15A68002A18D1A8 -:10C5700004E0022A02D19A68002A12D100207047F2 -:10C58000C27B8A4201D03C00F4830000032A0AD116 -:10C59000827E012A07D1027F01321206120E027733 -:10C5A000C37E9A42EED200680028ECD170470000AA -:10C5B000F46E0100F7B58446002001270024002511 -:10C5C00088B007E06246525D3C0030840000002ADB -:10C5D00005D0AB006E46F25001358D42F5D3002DEB -:10C5E00000D00120002828D00027164C6E4622E0FB -:10C5F000201C00F030F8012801D0072806D10021C6 -:10C60000201C00F034F8316888423C006C84000043 -:10C6100001D2022714E02068C9000C18083C201C35 -:10C6200000F01CF8072807D10120012D00D00020C0 -:10C630002468002800D10834013D0436002DDAD1E9 -:10C640000A9804600BB0381CF0BD00003C00A884C0 -:10C650000000205201000068002901D08002800AF9 -:10C66000704710B540688000440F082C03D30221A6 -:10C670008720F8F7ECFE201C10BD002902D00068CE -:10C68000800D704740688005800D704700003C00B9 -:10C69000E484000010B540684001440F052C03D32A -:10C6A00005218720F8F7D6FE201C10BDF8B5051C23 -:10C6B000880A00901C488E05C069B60D171C1C1C0A -:10C6C000002805D1184881698D421DD0856111E08F -:10C6D0003C0020850000FDF7E8F8154909780E298F -:10C6E00007D1002805D0114950310623C956F9F762 -:10C6F00006FA0E490020C8618D61291C201CF8F73C -:10C70000E2F87943201CF8F7DEF808484161201C64 -:10C7100000993C005C850000F8F7D8F805484069AE -:10C720000A18A24201D2401801E04018001B800202 -:10C730008019F8BDAC7C010011670100F8B50F1C31 -:10C74000061C141C1D1C07F0A1FC0E2809D1201C7E -:10C7500002F0FCFB3C0098850000002804D008484B -:10C76000007802F0E4FB041C0121002EAC7200D022 -:10C77000391C201C02F007FC2860002028726C7213 -:10C78000F8BD90570100031C0A4810B50024021C94 -:10C79000A03203E081883C00D4850000994209D290 -:10C7A00020308242F9D1002C04D102218E20F8F7EA -:10C7B0005DFE002010BD0000D05C0100FFB5061C2E -:10C7C000002081B010601F1C0125141C301CFFF7D5 -:10C7D0006DFF052812D202A33C00108600001B5CEE -:10C7E0005B009F440000030303030800391C301C56 -:10C7F000FFF755FF03E00298F8F7EBF801302060EF -:10C8000004E005218720F8F734FE00252068802801 -:10C8100004D906218720F8F72CFE3C004C86000046 -:10C820000025281C05B0F0BD70B5174C606C0028C1 -:10C8300001D001201DE0164E144D3188A06C002857 -:10C8400008D02878814205D9F8F74CF80138FAF772 -:10C8500051FE0EE0E06C00280AD000203C008886E3 -:10C860000000FAF74AFE29783288914204D99042B2 -:10C8700002D9101C00E0081CFAF7DFFDE16B441A36 -:10C880000AF081FB201A00D5002070BD0000447D15 -:10C890000100F8600100FC600100FFB5274E3C007C -:10C8A000C4860000041CB0790F1C151C81B00090D8 -:10C8B0000AF06CFBC11923480768002F05D10A2133 -:10C8C0008020F8F7DFFD05B0F0BD1E4840688446C3 -:10C8D000002801D100220EE082680368AB4207D134 -:10C8E0003C00008700000379A34204D10B21802083 -:10C8F000F8F7CBFD23E0C0680028F1D1134BF868AE -:10C9000018603D603C71B96004988D1A38616046CA -:10C91000002305E08468A41AAC4203DA031CC06853 -:10C9200000283C003C870000F7D1F860002B08D1BC -:10C9300007483B1C47600848064A00880AF08AFB03 -:10C9400000E0DF600098B071C3E70000201007002E -:10C950007C5D0100213801002C740100F3B583B027 -:10C96000041C09D03C0078870000201C049909F0C1 -:10C970008EFB002803D0201C303005B0F0BD0AF03B -:10C980000EFB1E4A0026049F019600900292029C14 -:10C990000025391C201C143002F0C5FA002801D0F3 -:10C9A000261C03E001353C00B48700001C34042D34 -:10C9B000F2D3002E22D10198134F013001900228AA -:10C9C000E8D30121C906029A00201369009CE31AEA -:10C9D0008B4201DD191C161C01301C320428F4D3D3 -:10C9E0003068002801D0F8F73C00F0870000D3FE43 -:10C9F000301CFDF74AFF301C143006220499F7F76B -:10CA00007AFE009C301C3461BDE7306A010034427C -:10CA10000100094910B54C6903E0E168814203D087 -:10CA20002468002CF9D101E0002C3C002C88000087 -:10CA300003D102210220F8F737FD201C10BD0000B1 -:10CA4000FC5A010010B5C30706D5084B5C690C43BE -:10CA50005C611C7E14431C76800706D5044843693C -:10CA600019434161017E1143017610BD3C00688885 -:10CA70000000FC5701001858010070B50D1C041C83 -:10CA8000161C00F008F8A007C0170130321C291C42 -:10CA900000F021F870BD10B5C30706D5084B5C69DE -:10CAA0008C435C611C7E94431C76800706D53C0059 -:10CAB000A4880000044843698B434361017E91438D -:10CAC000017610BDFC570100185801000322111F08 -:10CAD00080B5012000F002F880BD000030B5151CC3 -:10CAE0000C1C002887B002D01C22224901E02249F8 -:10CAF0003C00E08800001C226846F7F764FE0599B8 -:10CB000000AB1A7E8C43201C9543029A291C0240DC -:10CB10000292019A02400192009A02400092039A06 -:10CB200002400392987C08409874587C08405874DE -:10CB3000187C3C001C89000008401874D87C084010 -:10CB4000D87402991048416101AA06CA91438161D3 -:10CB50008168019A114381608168009A91438160E4 -:10CB600000AA06CA11434268114341604168039A12 -:10CB7000914341603C005889000004A80BF001F883 -:10CB800007B030BD0000FC5701001858010010002C -:10CB9000070010B5041C011C012008F0E0F9002C6E -:10CBA00002D003F01CFF10BDFEF7D1FC10BDF0B5A4 -:10CBB0000C1C010E01233C00948900001B06090691 -:10CBC00099429FB028D11749084000211A2800D364 -:10CBD0000221002919D1C500134F10A8EE19B288FF -:10CBE0002168F7F79DFD201CF8F7EAFD7A5901A9A5 -:10CBF00010A8F7F707FD00283C00D089000005D0F9 -:10CC0000109801A90190B07900F09DF81FB0F0BD17 -:10CC10002A20F8F75EFC201CF8F7D5FDF6E7032183 -:10CC20002A20F8F756FCF1E700007FFFFF002445BB -:10CC3000010010B50C1C802802D03C000C8A0000BA -:10CC4000812808D103E0201C00F006F910BD201C4B -:10CC5000F8F7BCFD10BD03212C20F8F73DFCF6E7EA -:10CC6000F0B50C1C00218BB00A91010E01231B06AC -:10CC7000090699422AD118490840061C3C00488AF6 -:10CC80000000062E01D3072124E02089F8F7F1FEE9 -:10CC900022892168051CF7F74CFD201CF8F799FD47 -:10CCA000F4000F4E281C0AAA69463359F7F7B4FC62 -:10CCB000002801D0012807D12868694600903C006F -:10CCC000848A0000A01900790A9A00F009F9281C4A -:10CCD000F8F7B0FE0BB0F0BD01212B20F8F702FCF5 -:10CCE000F8E700007FFFFF00284601000A1C010E44 -:10CCF00001231B060906994280B508D05B009942C2 -:10CD00003C00C08A00000BD10006000E111C00F090 -:10CD10000EF980BD05490140101C05F0A2F980BD47 -:10CD200001212D20F8F7E1FB80BD7FFFFF0080B5DA -:10CD3000011C0F2000F013F880BD80B5011C0420F9 -:10CD400000F03C00FC8A00000DF880BD80B5011C9D -:10CD5000172000F007F880BD80B5011C012000F00D -:10CD600001F880BDF8B5041C061C802084430F1C0C -:10CD7000192C01D3F8F7EAFB0848045D211C0020B8 -:10CD8000F8F750FD3C00388B0000051C221C391CB4 -:10CD90000068F7F7DAFC2A1C311C0720F8F711F9B4 -:10CDA000F8BDF4450100F8B50D1C161C041C1F1C31 -:10CDB00008210020F8F739FD142201680E4B724358 -:10CDC000D2180C71127C3C00748B00004A710D600B -:10CDD0000B4A8F7112687F2A03D95205520E8023A5 -:10CDE0001A43CA71074A0023516801315160021C7D -:10CDF00081210020F8F708F9F8BD00007440010017 -:10CE0000FC5A0100806E01003C00B08B0000B0B500 -:10CE1000041C08210020F8F70EFD218BE27D051C83 -:10CE200009055207520F490C006811438180A17D0A -:10CE300014230E4A59438918097CC171E16A0160C3 -:10CE4000E168281CF8F717FC0A483C00EC8B00004E -:10CE50000068002801D0F7F7F1FB07490431886822 -:10CE60000130886000212A1C0020236BF8F7D2F8DB -:10CE70000120B0BD744001007C6E01000148806853 -:10CE800070470000806E010010B5041C3C00288C27 -:10CE9000000092B0016868460822F7F762FC00AB18 -:10CEA00098884007400FD87798884004000D188470 -:10CEB000D888588400980D900594208908382081DE -:10CEC000059801680831016000200A900C903C0030 -:10CED000648C00000021112009F078FB0549064A06 -:10CEE000086801300860022102A801F0CDFC12B0F0 -:10CEF00010BD0000806E0100558B0000021C012057 -:10CF00000006084380B52B210AF08AFD80BD000091 -:10CF10003C00A08C0000F7B5041C061C8020844354 -:10CF2000171C062C01D3F8F726FB0B48055D291CBE -:10CF30000020F8F78CFC041C006801992A1CF7F704 -:10CF400016FC391C201CF8F7A2FB221C311C002304 -:10CF500002203C00DC8C0000F8F768F8FEBD000001 -:10CF6000204601000A1C011C80B500230120F8F7AF -:10CF70005DF880BDFFB59FB01F1C051C0A301E90D8 -:10CF80001CAA1DA90AF000FF002871D0002F09D0AB -:10CF90000A2100203C00188D0000F8F75EFC0668AE -:10CFA000041C301DFAF7AFFA05E004210020F8F761 -:10CFB00054FC0668041C28893649012208807080C8 -:10CFC000E88814A9308019A8FCF7F5FCFCF7FFFBF2 -:10CFD000011CFF3121313C00548D0000201C01F068 -:10CFE000EFF819A9201C01F0EBF814A9201C01F09E -:10CFF000E7F8201C2099FDF74BFD0022022101F0EB -:10D0000033FD061C1C9900208861301CF8F71CFABF -:10D01000002E0BD0307A00283C00908D000002D00A -:10D020004021084330721C980222816911438161BA -:10D0300004E01C9902228869904388611DAA06CAEF -:10D0400001A805F058FB09A8002F02D00222427265 -:10D0500001E000214172049401A83C00CC8D000045 -:10D0600004F07AFB01211C9808F0C8FF002F04D0BF -:10D070001C980122816911438161A8881C9C01F0E0 -:10D080009FFE021C211C00E004E00748408809F0D4 -:10D090001FF804E03A1C00210520F9F73C00088E37 -:10D0A00000009BF8002023B0F0BDFC600100987CDC -:10D0B0000100F8B5041CC0680568A01D01F095FFCB -:10D0C000002845D0211C1431201C6A460AF055FE68 -:10D0D00000283DD0FCF77DFA002839D100983C00AB -:10D0E000448E00004B21095C012934D1042609F04B -:10D0F00019F9688800281BD1A8880321890388436F -:10D1000015490026088001220221206901F0B8FC9F -:10D11000041C14D000988069800710D5F8F79AF99C -:10D120003C00808E0000201CF8F7DDF8002809D1B3 -:10D13000F8F77FF901260098022281699143816105 -:10D14000002101E00098022108F061FF0098806949 -:10D15000A988C207D20F301CF9F745F8F8BDFA606C -:10D1600001003C00BC8E00001CB5046900230022B5 -:10D17000002C13D14B24245C022C03D1022905D0AE -:10D18000012203E0022901D101220123002A05D056 -:10D19000009004200193694609F036FA1CBD000096 -:10D1A000B0B5041C3C00F88E0000F2210F200C4D9D -:10D1B0000AF099FB287808280BD201A31B5C5B00BE -:10D1C0009F440703030808080808002C01D105F054 -:10D1D000BCFBB0BD012CFCD1FF2007F038FAB0BD7C -:10D1E0000000746601003C00348F00008CB5054AD5 -:10D1F00000AB1172009019716946082009F00AFA13 -:10D200008CBD0000AC7C0100F3B5041CC06806278F -:10D2100085B0066809F026FF984948632069032114 -:10D2200001F008FC964D00283C00708F00004DD0A6 -:10D230009549403109798078814247D1012120699F -:10D2400001F0FBFB02902069322101F0F6FB019016 -:10D25000021C8D480299FCF746FF002836D00023B7 -:10D260008A480299019AFCF7E4FE3C00AC8F00006A -:10D270000B282ED1864A51887089414003910B1C9E -:10D2800084490B4025D150800399171C00290BD0ED -:10D290000399480502D5381CFCF740FE039988061F -:10D2A00002D5381CFCF724FE2A2120693C00E88FB7 -:10D2B000000001F0C8FB00280DD08078E9698142A8 -:10D2C00009D0E861381CFCF716FE381CFCF707FE95 -:10D2D000381CFCF726FE0027201C20300490407AE2 -:10D2E000082871D10AF0D1FC0020686100233C00BD -:10D2F000249000002B61A86866490130A86030893D -:10D300005C31888201F07AFD62495C310861226AF1 -:10D3100004981821007A01F033FEE16A4018039066 -:10D320005C48006A00280DD0002F0BD1594801231A -:10D330003C00609000005C3001681B0700223068F0 -:10D3400009F049FF002800D105270021A06B0AF051 -:10D35000CEFC0021206C0AF0E8FC4F4B03CE039A70 -:10D360005C33FCF788FD00204C4E0521B06320693A -:10D3700001F03C009C9000006FFB011C01D1F060AB -:10D380001CE00120F0608878454A01321070C878AE -:10D390005070474A1070306900280AD04A780879DE -:10D3A000053109F0DDFA3169F7F785F9F0680028F1 -:10D3B00004D03B4A3C00D89000000132107800288D -:10D3C00008D10020A861716A002903D0201C143004 -:10D3D000F7F774F9344A5C321069316A411800E099 -:10D3E00020E00A23D0680A2209F0FBFE002807D0BB -:10D3F0002D4A316A5C323C0014910000D068401A1A -:10D400001169401A7060294A5C32D0683062F06954 -:10D41000002804D0FAF700FD0120FAF7A1FCFAF782 -:10D4200081FC2748006803F007F90698002803D11B -:10D430001E4E0023B36016E03C00509100001C4ECD -:10D440000120B060069801684068B06519487165B0 -:10D450005430C088002809D0B169002906D001F0F5 -:10D46000DCFC011CE06AB269F7F72FF9002F15D137 -:10D4700012480169002908D101213C008C9100006B -:10D4800001612A68002A03D000210020F7F720F963 -:10D4900009490023CB622B616B6106F0B5F807B038 -:10D4A000F0BD6B680648002BF9D0021D111C381C1A -:10D4B000F7F70FF9F3E70000447D01003C00C89145 -:10D4C0000000F4680100F467010003080000F86040 -:10D4D0000100C467010008B5F8F72FFD009000AB0C -:10D4E000188800280CD005F050FF00AB5988188828 -:10D4F00005F06DF9FEF797F80320FBF70EF83C00F6 -:10D500000492000008BD0120FFF7B2FB002008F0E4 -:10D510008DFEF7E7F8B54F498C68206A00680578FA -:10D52000FCF768FA002812D02A07920F0121012A7D -:10D5300000D00021002903D02906090F0B2906D1AC -:10D540003C00409200002A21095D08189030007BC1 -:10D55000F9F70DFC414F3C3FB86B796BF7F7C0F81A -:10D56000A06C0026C660606B800804D0B8690130EA -:10D57000B86106F0DCF9394D28698005800F08D1C3 -:10D5800078693C007C920000042101307861606B76 -:10D590004008400008436063B86A002803D0606B0D -:10D5A000082108436063201C203000903968F7F799 -:10D5B0009AF80320000228602B498868A063C86895 -:10D5C000E06308793C00B8920000C006C00E251C3C -:10D5D000403528714879687123483C384662009884 -:10D5E000807A01F05EFD00210028214A01D01178E7 -:10D5F00003E09378DB0700D55178A971002804D0A7 -:10D600001B49143108683C00F4920000206400E0DB -:10D610006E80B86AC00702D5FF202871AE71E6613E -:10D62000B8680130B8607968884203D00B21852042 -:10D63000F7F7C4FF0D498868C06C8860FB6A002B4F -:10D640000CD00E4AD47B002B3C003093000002DD4E -:10D650007F2C05D201E0002C02D0D47BE318D373D9 -:10D66000FE62C968884203D105218520F7F7A9FF2A -:10D67000F8BD247E010000400700A0800700E8807C -:10D68000070040000700FEB5304C3C006C930000E2 -:10D69000A06B216BF7F733F82D493C318E68708B06 -:10D6A000062804D2E0690130E0610E203085284967 -:10D6B0003C310D68002D03D103218520F7F784FF4D -:10D6C000244845613562318DEF6804393C00A893E8 -:10D6D00000000C0401210291240C002101911D483D -:10D6E0003C30808AA04203D32C81EE6000240BE002 -:10D6F000002F04D103218520F7F769FF04E03D1CCA -:10D70000201A0404FF68240C0298002804D03C006E -:10D71000E493000012490120086100200290019862 -:10D7200001300190002CDDD10C480C4C3C300760DE -:10D7300001983065B564306A0068606260680130E5 -:10D740006060A1680131884203D00A218520F7F783 -:10D750003C002094000041FF04480068A062FEBD28 -:10D760000000E87D010000300700786E0100B0B5D0 -:10D77000051C01210F200AF0F8F8F2210F200AF011 -:10D78000F4F80C480C4C0068143C00280CD0E078ED -:10D7900001283C005C94000009D00122291C0F20C4 -:10D7A0000AF0ACF86078022806D0012003E0607827 -:10D7B000022801D000206070B0BD00009866010012 -:10D7C0000222002880B500D1032203490E200AF06E -:10D7D0009BF800203C009894000080BD000050C3DE -:10D7E0000000F8B50023002200282ED00689046826 -:10D7F000751E2D04B61AF6072D0CF60FB4460EE072 -:10D80000A75CA618023300977778A7540232120457 -:10D81000009F120C00293C00D4940000777001DDB9 -:10D820008B4215DAAA42EED3C068002810D00289D4 -:10D83000002AF9D06246002A0BD00268665D17788C -:10D8400002336755167001220029D2DD8B42D0DBEE -:10D85000F8BD0022CDE700003C0010950000B0B5F7 -:10D86000041C0D1C0120F8F75EFB0D490028C8615F -:10D8700014D062684260A27C0272A268C260E26850 -:10D880000261228A02750A1D0A621268002AFFD10B -:10D89000026048600020A86001203C004C95000018 -:10D8A000B0BD0120FAE70000A46E0100B0B5041C71 -:10D8B00040680D1C431C02D1211C094808E00020CF -:10D8C000F8F734FB064994390861002803D0211C7D -:10D8D00000F048FE00E00120A86001203C0088958F -:10D8E0000000B0BD0000386F010080B50121972015 -:10D8F000F7F785FE002080BD000038B50A1C143201 -:10D900000092131F051C083A0C1C16314068FEF7E4 -:10D910006CFE002801D0002000E0012069683C0076 -:10D92000C4950000A0606160012038BD10B50C1CDA -:10D93000017A00290FD0012909D0022903D1002141 -:10D9400000200AF073FC00202071012010BD416806 -:10D9500001200AF06BFC00F00DF9F4E780B50449F2 -:10D960003C000096000048680138486001D107F08B -:10D970006EFB002080BDAC790100B0B5051C0C1C0D -:10D9800000F04FFEA060686860600120B0BDB0B5D7 -:10D99000051C0C1C00F06FFEA06068686060012030 -:10D9A000B0BD3C003C960000081C00210022002372 -:10D9B0000EC008C001207047F8B50F1C041C207968 -:10D9C000202801D2202020716679002E02D12579ED -:10D9D00000220DE02579291C301CF7F74FF80029AB -:10D9E00001D1321C3C007896000004E0704380199D -:10D9F00005062D0E321CE079291C00F0F2F9207A80 -:10DA00002F49C007C00F08602E480078C00743D5D3 -:10DA1000A1792C4AC80748D42C4E16608B072B4896 -:10DA200008D5CC0801233C00B4960000A340036055 -:10DA3000490704D52849116001E0402101601368BD -:10DA4000264AB34210D1546801680C4354601468EC -:10DA50000C4001D0516100E0916154680C43546066 -:10DA600094682143916013E03C00F0960000547CE0 -:10DA700001680C435474147C0C4003D0147C0C4398 -:10DA8000147402E0147C8C431474547C0C4354745E -:10DA9000947C21439174B34205D100220168032094 -:10DAA000FFF78DF809E0006800213C002C9700008A -:10DAB0000206120E0320FFF785F801E00B48106004 -:10DAC000002038717D71F7F7E9FD0120F8BD0000F5 -:10DAD000CC5C0100040007005C5B0100B99B000006 -:10DAE000585B0100959B0000100007003C00689700 -:10DAF0000000559B0000B0B50D1C04300024FEF75B -:10DB0000D6FA01206C60B0BD0000F0B5077A43681A -:10DB1000041C0E480E1C00680125011C9BB006E089 -:10DB20004A689A4202D18F76002502E009683C00DB -:10DB3000A49700000029F6D1002D05D1217A0129F2 -:10DB400002D101A9F8F7A8F86068043621C61BB015 -:10DB50000120F0BDA46E010010B50C1C08F0AEFC55 -:10DB60006060012010BD000010B50C1C07F084FAA5 -:10DB70003C00E097000004F054FF002060600120AA -:10DB800010BD0020C043486001207047000010B560 -:10DB90000C1C0079FAF707F8002801D0002000E0FB -:10DBA00002206060012010BD00001CB5064C2068FA -:10DBB00000283C001C98000007D009F0C5FA01902D -:10DBC000206841686846F6F7D6FD1CBDAC790100B7 -:10DBD0000149086070470000AC7901000EB5064BA2 -:10DBE0001B68002B06D00290009101926846D9680C -:10DBF000F6F7C1FD3C00589800000EBD0000AC795E -:10DC000001001CB5041C07F04CFA064841680131BC -:10DC10004160009400210191006801686846F6F7B0 -:10DC2000ADFD1CBD0000AC79010080B5F8F7A3F88C -:10DC300080BD80B5021C3C00949800008021032028 -:10DC400000F05CF8011C034800224369F6F79BFDD5 -:10DC500080BD0000A46D0100F8B50C1C1349051C23 -:10DC60000868161C0130086000202061221C103258 -:10DC7000281D0021071C00923C00D098000003F0F2 -:10DC8000DEFE20712069002810D00104090C00205C -:10DC9000F7F779FE3060291D03C9A060E1603068A4 -:10DCA0000168009A381C03F0CAFE20710120F8BDFB -:10DCB00000001075010080B5021C3C000C990000AA -:10DCC0000821042009F04EFF032080BD10B5074A4B -:10DCD0000C1C516801315160011C1031C2680430C4 -:10DCE00003F0F0FE2071002010BD0000107501004F -:10DCF000044980B581610821021C03203C00489939 -:10DD0000000009F032FF032080BD95D80000F7B570 -:10DD1000071C161C0621002082B0F7F73AFE051CEE -:10DD200020480078062800D928812C680020A77098 -:10DD30000399E170311C03E00A8910180F1C3C00A4 -:10DD400084990000C9680029F9D16B4601AA211DF8 -:10DD500000F034F800AB187860711878002817D0FC -:10DD600011484068002808D019780020F7F714FE01 -:10DD7000011C381CF7F730FD0AE03868002802D192 -:10DD80003C00C09900003F600120B86100AB1978E9 -:10DD900038894018388100AB9888311C02382080BF -:10DDA000281CF7F71CFD281C05B0F0BD0000C85C5E -:10DDB000010001794279008889180239401A7047B8 -:10DDC00000003C00FC99000070B5084D2C78AD783F -:10DDD0002018061C002D03D070190138013DA843FE -:10DDE0001080801B18700C7070BD0000C85C0100B2 -:10DDF000B0B504680C4A218852780231914211D2A0 -:10DE0000551AF7F73C00389A0000C9FD016800294F -:10DE100002D10060012181610189491901812088B5 -:10DE200040192080607940196071B0BD0000C85C65 -:10DE3000010080B500220621F12009F0A2FE80BD7C -:10DE40000000031C02483C00749A000003704170FB -:10DE500082707047C85C0100B0B5081C0968151CC9 -:10DE60008C78F7F785FD0449A0000958002902D0F5 -:10DE7000281CF6F79EFCB0BD846D0100FEB5041CA5 -:10DE8000C07AA17AC607F60F3C00B09A0000321C97 -:10DE9000201D01F03CF86069254FC10737D5B869EE -:10DEA000002801D0F6F787FC2068056828888007DD -:10DEB00034D101AA02A9281C01F00BFC281C01F096 -:10DEC00012FC0078C0070AD460693C00EC9A00009C -:10DED000800726D4331C291CA27A20697D69F6F7B5 -:10DEE00072FC1EE000AB187A002803D0012806D08F -:10DEF000022816D1281C796AF6F761FC11E000AB04 -:10DF000018790E2801D00F280BD1281C3C00289B23 -:10DF10000000396AF6F756FC06E00007800F03D1CF -:10DF20002069F969F6F74EFC786B2121013078639E -:10DF3000221C802009F031FEFEBD287A01000B4929 -:10DF400018B50878C00711D50A4A101C20303C00CB -:10DF5000649B0000847900AB1C70C079587008780D -:10DF600040231843087005480078087000AB1888F3 -:10DF7000D08418BD0400070000100700E060010015 -:10DF800070470000054910B58879054B1A7C054C8F -:10DF90003C00A09B0000246862401A74887110BD88 -:10DFA00000002010070010000700585B0100044922 -:10DFB0000A6804480068024001D0886170474861DF -:10DFC000704710000700585B0100021C012000068A -:10DFD00008433C00DC9B000080B52A2109F0E6FDE7 -:10DFE00080BD000010B5041C002903D0812907D191 -:10DFF000812000E08020221C2C2109F0D7FD10BDDB -:10E0000002212C20F7F74CFB201CF7F7C3FC10BDB6 -:10E0100080B5B4B03C00189C0000012806D08228CE -:10E020001CD11AA807F035FC34B080BD812913D16A -:10E030000D480C4A816900685032814202D0D16A91 -:10E04000012902D01178022902D107F00AF9EBE781 -:10E050006946F7F75AFE3C00549C0000E7E70121AF -:10E0600000E002211820F7F721FBE0E7A46E010091 -:10E07000B0B5041C0068174D9AB0686308F03EFA0A -:10E0800020791449134A50392C3A02280AD1906851 -:10E090008002A861C868E8613C00909C00000220F2 -:10E0A000287207F0E4F81AB0B0BD031C0020002B62 -:10E0B0000BD152689202AA610A1C8968E961287230 -:10E0C00010686946F7F727FEEDE7A861012028727E -:10E0D0002870002006F07DFAE5E73C00CC9C0000AB -:10E0E000F46E0100704700007047000080B5012108 -:10E0F0000720F7F7E1FA80BD70470000F8B500246B -:10E10000194A0026D56811680435081C916002E0A0 -:10E11000011C4019086053688342F9D83C00089DEF -:10E12000000001341032032C0E60EED3F6F7F1FF3D -:10E1300010481049124C0860104900200122192390 -:10E140005B010C2543431B1945434A511F1C6D18A5 -:10E15000AB606B6000251E1C14369E60331C3C00B7 -:10E16000449D00000135272DF8DB013003289F6016 -:10E17000E8DBF8BD2057010014C80100B4CF01004E -:10E1800018D90100B8CF0100B0B5074C251CC03527 -:10E19000286B1E2100F0F2F9A26B201CDC30296BE9 -:10E1A0003C00809D000000F0B6F9B0BD0000C469DD -:10E1B00001000020102210B50A4905E00C2343435A -:10E1C0005C180C34CC5001300F28F7D30C23584383 -:10E1D0000950044841600160028200218160C160F1 -:10E1E00010BD3C00BC9D000084E2010044E301003E -:10E1F00010B5084CA06A002803D10748F9F7E8FEDB -:10E20000A0620448443000680121F9F795FC60627F -:10E2100010BD0000606C0100CD260100FFB50D1C93 -:10E22000041C1E1C3C00F89D000081B00A9F1C21AC -:10E23000F6F74DFB0398A061256025612681A68233 -:10E24000E76005B0F0BD70B50D1CA421041C0830BA -:10E25000F6F73DFB201C44300622291CF6F765FB2F -:10E2600018483C23411C3C00349E00006162417808 -:10E2700059430918897A062901D1A06202E0211CBC -:10E280004D31A16241783C235943081804300F49AD -:10E2900020620B88002B15D0AC20005D0B4A183291 -:10E2A00000028018B030E0603C00709E00008D6875 -:10E2B000002008E0E268C1005450E668820052196C -:10E2C00071184A6001309842F4DB70BD000068614B -:10E2D0000100587501001FB5041C6034617A031CED -:10E2E000806A084A0291019003923C00AC9E0000B3 -:10E2F000E279181C20300092447B827B5E20C15A58 -:10E3000018690430231C02F07FFE1FBD394E000047 -:10E31000B0B50B1C01886920C05C86B00E4A049120 -:10E32000039005920D4D596A9A6A2D683C00E89E4B -:10E3300000000124002D00D0041C0A48005D01915A -:10E3400002920090181C2030447B827B5E20C15AD0 -:10E3500018690430231C02F0A4FE06B0B0BD514F72 -:10E360000000186701000A61010001898A1C3C0055 -:10E37000249F000002810268023A0260080A090232 -:10E38000084310807047000070B5051C08780E1C0B -:10E39000FF2814D0717802310020F7F745FB041CE8 -:10E3A00002890068311CF6F7CFFA002D06D0281C30 -:10E3B0003C00609F0000F7F734FB211CF7F757FA89 -:10E3C00000E0251C281C70BD0000FFB50F1C1E1CA2 -:10E3D000041C981C0104090C002081B0F7F727FBEE -:10E3E000051C0068002C386003990170386846707D -:10E3F00006D03C009C9F0000201CF7F715FB291C51 -:10E40000F7F738FA00E02C1C201C05B0F0BD000026 -:10E4100070B51048046804600F4920200860A0050A -:10E420000E4E02D5706AF6F705FAE00102D5306E9D -:10E43000F6F700FA3C00D89F00000A480440002587 -:10E4400007E0E00703D5A8003058F6F7F6F90135E4 -:10E450006408002CF5D170BD0000004007000010DA -:10E46000070030740100FFFDFFFE80B5072180200A -:10E47000F7F749F980BD3C0014A00000F8B5144B33 -:10E4800082009C58CA060127391CD20E9140114ABD -:10E490001160114E4000851915E06060207BC100BD -:10E4A000891910310A780D239A430A70391C81406A -:10E4B00031730749000108313C0050A000004018AA -:10E4C000084A416842608068F6F7BEF9287B002858 -:10E4D000E6D1F8BD0000A473010000100700006041 -:10E4E0000700D175000003490120097A002900D1F5 -:10E4F000002070470000047A01003C008CA000005E -:10E5000003490120897A002900D1002070470000CA -:10E51000147A0100B0B50024FAF776FC002814D074 -:10E52000012408F07DFE0A4D0A4B00215A18A03242 -:10E530001278102A06D38A00D218926F3C00C8A025 -:10E540000000821AAA4200D2002401310329F0D32C -:10E55000201CB0BD00008B080000A46C0100014825 -:10E56000C068704700007869010070B50D1C041C7C -:10E57000161CFDF72EFE0020E0602661A5603C0021 -:10E5800004A1000070BD0000F8B5171C0E1C041C8F -:10E59000002801D0002E01D1F7F7F2F8A06807F0AB -:10E5A00049F9051C01D1F7F7EBF8291C6E60AF6043 -:10E5B000201CFDF7FDFDE068411CE160002803D14F -:10E5C0003C0040A100000548216905F02CF92068B5 -:10E5D000A84202D1381CF6F748F9F8BD0000C46023 -:10E5E00001000022013910B505E00C2353431C182B -:10E5F0000C34C45001328A42F7D300210C235A4311 -:10E6000081503C007CA1000010BD0000B0B5041C8E -:10E6100001D1F7F7BBF8201CFDF7DAFD011C856876 -:10E62000A06807F009F9E0680138E06003D1064806 -:10E63000216905F0E7F82168002903D08868496856 -:10E64000F6F711F93C00B8A10000281CB0BDC46069 -:10E650000100012100288CB500D100210E2009F015 -:10E6600032FA832000AB1880002004F00CF80190EF -:10E67000684603F07AF98CBD000080B508F0DFFD34 -:10E6800006490A8906493C00F4A10000096E411AB6 -:10E690000B0C5918891A0904090C401A80BD000096 -:10E6A00000900700A46C010070B5041C887E0D1C4E -:10E6B000202803D903211820F7F740F800262676F2 -:10E6C000A87E291C1B3160763C0030A20000201C73 -:10E6D0001D30AA7EF6F75FF96868291C6060A8689B -:10E6E0001331A060A87B06222073E87B6073287C2E -:10E6F000A073687CE073A8892082A87CE0762677E6 -:10E70000201C1230A676F6F746F93C006CA20000F9 -:10E710006068431C1DD0114D6D61286800281AD017 -:10E72000227B011C0B7B9A4201D3206014E00B1C5E -:10E73000096800290BD00E7BB24208D20B68002B6F -:10E74000F0D01E7BB242EDD323600C603C00A8A247 -:10E75000000001E021601C60002070BD26602C607C -:10E76000FAE7A46E0100134AB0B5516801240029EC -:10E770001ED0131DD1611362436804E0106200686B -:10E78000D061002814D0D06945689D42F6D13C0084 -:10E79000E4A20000106A814204D15160D06900688F -:10E7A000086002E0D16909680160D069FCF7CEFF1A -:10E7B000002800D00024201CB0BD0000A46E010081 -:10E7C000B0B5174D01242968002927D06D61296152 -:10E7D0003C0020A30000436804E0686100682861F1 -:10E7E00000281DD0286942689A42F6D1AA692B698F -:10E7F0009A4200D1A9616A69914203D129600068F7 -:10E80000086006E0006810602868002801D107F061 -:10E81000CCFE3C005CA300002869FCF79DFF0028AB -:10E8200002D0002400E00124201CB0BDA46E010031 -:10E83000B0B5051C0748446807E0211C4431281C7A -:10E8400000F0D6FC002802D16468002CF5D1201C11 -:10E85000B0BD00003C0098A300005875010070B5E1 -:10E860000D1C141C00280B4E08D0706E0623584354 -:10E870000204120C311C281C228007E0218806208B -:10E88000F6F7A7F970662288291C301CF6F795F870 -:10E89000012070BD00003C00D4A3000010790100ED -:10E8A00080B5032803D8044AC000115080BD01215F -:10E8B0002620F6F75BFF80BD7C790100B0B5051C12 -:10E8C000C0680189392939D30468A079882835D1ED -:10E8D000E0798E2832D1207A3C0010A40000012873 -:10E8E0002FD1607A03282CD1207B022801D0FE286A -:10E8F00027D1607B1D210840012822D1A07BC8219F -:10E90000084008281DD1A81DFBF7E1F9002818D000 -:10E910001920215C002914D101303C004CA40000D6 -:10E920003928F9DB688B04210843688303F0D6FE9D -:10E93000002809D1002300222620044909F092F979 -:10E940000348006801F084F9B0BD000050C3000026 -:10E950000C790100B0B5084CA36801333C0088A4D1 -:10E960000000A3600C1C09D02568002D03D0237A79 -:10E970006168F5F7A3FF201CF7F7A9F9B0BD9479FA -:10E98000010070B5041CC06801890568082953D3CB -:10E990000622281C5549F5F79EFF002837D13C0078 -:10E9A000C4A40000E988524E043E812924D1E568C0 -:10E9B0002968087A4A7A000280180004000C420B89 -:10E9C0000005000DE27520834B8900204200B25AF9 -:10E9D0009A4206D128890C38020A00021043488165 -:10E9E0003C0000A5000002E001300228F1D3E068FD -:10E9F00001890A390181E06801680A311CE00022BE -:10EA000000204300F35A8B4201D1012202E0013081 -:10EA10000228F6D3002A11D107E036490622063132 -:10EA2000281C3C003CA50000F5F75EFF002808D13B -:10EA3000E068018906390181E068016806310160FA -:10EA400010E0E068FFF7E2FC0CE002310181E068D1 -:10EA5000016802390160E06800890238020A000298 -:10EA6000104308803C0078A50000E0680325028977 -:10EA70000168244E022A10D90988082905D0C1232B -:10EA8000DB00994203D1012502E0002500E00225C8 -:10EA9000E9007158002900D10225F7F704F8E900D0 -:10EAA0008919898888423C00B4A5000000D9032553 -:10EAB000A11D201CFDF734FC002800D10325022DE8 -:10EAC00005D0032D07D1E068F6F7E2FF70BD201CEA -:10EAD000FDF71CFD70BDE068018902390181E06825 -:10EAE000016802310160E8003C00F0A500003158E7 -:10EAF000201CF5F7F1FE0028EFD1E0680189023112 -:10EB00000181E068016802390160E3E700006A46BC -:10EB100001007C79010070B50E1C041C151CF7F770 -:10EB20008CFB00282AD01B4908683C002CA600005A -:10EB300001300860002E0AD0012E0BD0022E0FD11A -:10EB4000201C04F0CDF8201CFFF7D6FE0CE00821B5 -:10EB5000E06802E0C121E068C90004F035F903E093 -:10EB600002212620F6F720FEE27DE16A3C0068A63D -:10EB70000000281CFCF795FB206300202062A062A7 -:10EB8000201C00F06CFE70BDE068F6F78AFF002DD7 -:10EB9000F9D0E37D00220120E16AF5F7A7FE70BD00 -:10EBA00000009479010080B5012804D105483C009B -:10EBB000A4A60000006801F009F980BD0321262009 -:10EBC000F6F7F8FD80BD00000C790100F8B5061CD1 -:10EBD00080790024C0072DD5F0680068417A11299A -:10EBE00028D1C1880A0A09021143C90422D1017837 -:10EBF0003C00E0A60000114F0907890E0818418863 -:10EC00000A0A090211430D042D0C432D396801D164 -:10EC1000CA070ED4442D06D1C90704D5243000F00C -:10EC200022FB002805D00648854206D138688007B7 -:10EC300003D53C001CA700000124F068F6F73AFF5A -:10EC4000201CF8BD7C5A01006C07000080B500282C -:10EC500007D00021262008F07BFF0248006801F061 -:10EC6000BBF880BD0C79010010B5041C094A081CD2 -:10EC7000516801313C0058A7000051600021216219 -:10EC8000A162E27DE16AFCF718FB2063201CF7F724 -:10EC9000E6FA201C00F0EFFD10BD947901000CB5E0 -:10ECA000021C081C0021019100926A4601A900F093 -:10ECB00002F80CBD00003C0094A7000070B513687A -:10ECC000002B1ED000260B68002B02D113681B6896 -:10ECD0000B6013681C681B89E51808E05C781C1938 -:10ECE00002340C601C78844201D1181C70BD0B6882 -:10ECF000AB42F3D31368DB683C00D0A7000013607D -:10ED00000E601368002BE1D1002070BD000070B5CB -:10ED1000031C20D018681E89051C16E00478DD2C21 -:10ED200010D18478002C0DD1C478502C0AD10479EC -:10ED3000F22C07D144798C4204D13C000CA800008D -:10ED400002290CD18479944209D0447820180230E9 -:10ED5000441BB442E5DBDB68002BDED1002070BD34 -:10ED6000044980B50A780A20002A00D0486A00F0D9 -:10ED7000D1F880BD1C750100B0B5174C3C0048A807 -:10ED800000002068002829D0164DE869002825D108 -:10ED900001F03FFA002821D1FFF741FC00281DD1E6 -:10EDA0002068A969401808F0D6F9002816D002F0AA -:10EDB00006FD2168401808F0CEF900280ED03C006E -:10EDC00084A800000120E86100222521802008F0AD -:10EDD0008FFF0648296A04F083FD0121286A00F0AC -:10EDE00089FFB0BDE85901001C75010034630100C2 -:10EDF00070B5051C0024FAF70BFF184E716A401815 -:10EE00003C00C0A8000000F08EF800280BD104F0F0 -:10EE1000FEFB0021252008F0B0FE0322291C281C3F -:10EE200000F0AFF818E0706A441E00F07CF800288B -:10EE300012D10C48316A04F056FD0121306A00F00D -:10EE40005CFF3C00FCA800000020FAF70DFE06F075 -:10EE500003F8002300222520054908F03FFF201C6D -:10EE600007F0FCFA70BD00001C750100346301005E -:10EE70001027000080B5012807D080280DD100227E -:10EE8000002108483C0038A90000F8F79AFE80BD30 -:10EE9000012902D106490020C86104F0BEFB80BDF3 -:10EEA00005212520F6F7A7FC80BD61A900001C758F -:10EEB00001000021002880B501D1034841680122EA -:10EEC000252008F02CFE3C0074A9000080BD000045 -:10EED000E85901000249C8680138486270470000DB -:10EEE0001C75010038B5031C081C191C114B06D0F9 -:10EEF000012111800A1C191CF5F7AAFD17E00D4D20 -:10EF0000011C2C781288181C3C00B0A90000F5F7F1 -:10EF1000A2FD287884420DD000236B61002803D025 -:10EF2000002007F0A4FA05E0002200210020009252 -:10EF3000F8F723FC012038BD00001C75010070B5F6 -:10EF4000041C012608F0E1F9051C3C00ECA90000B6 -:10EF50000020FAF78BFD444302F040FC02F03EFC37 -:10EF6000011C231C0022281C08F07CFA002813D165 -:10EF70000A48231C00228169281C08F073FA002823 -:10EF80000AD1F8F719FC011C231C00223C0028AA16 -:10EF90000000281C08F069FA002800D10026301C67 -:10EFA00070BD1C75010070B50D1C041C161C07F00B -:10EFB00076F900280DD0FAF752FE002809D0FF306C -:10EFC00001304368002B04D0221C291C301C3C005B -:10EFD00064AA0000F5F7BBFC70BD000080B50121FC -:10EFE0001D2008F0DFFD074A0748116901605169DB -:10EFF00041600649496881600021C16003F074FCEA -:10F0000080BD00002861010048750100905C01008E -:10F010003C00A0AA000070B5041C406B002835D04D -:10F020001D4D00262878002824D04120005D0028AE -:10F0300003D108F076F9A8611BE0696901316961C3 -:10F04000A868002808D0814206D12069011C10312F -:10F0500004303C00DCAA00008222FFF7ADFF6868A4 -:10F0600000280AD06969814207D12069011C10314A -:10F0700004300222FFF7A0FF6E6168780521084086 -:10F0800008D0074800780E2803D36034E079FBF7F6 -:10F09000CFFF70BD3C0018AB00000348066070BD98 -:10F0A00000001C75010010670100D47E0100800281 -:10F0B0007047142330B5094D4B435B195B68082436 -:10F0C000002B00D1022438235A43054B8900D21863 -:10F0D000515A026809193C0054AB0000511A0160F2 -:10F0E00030BD0000744001008C410100F8B5071CE0 -:10F0F0002C48141C2C4A484386468018800D8446B0 -:10F100002B482A4A06261D1C48434A430E2F40D24C -:10F1100001A3DB5D5B009F443C0090AB0000060850 -:10F120000A0F14181D202724272B2F31C8001FE099 -:10F1300088001DE0214970464018000D18E01F4A64 -:10F140008018800D401821E01E481018000D1DE0A9 -:10F150001D4970464018400D0AE03C00CCAB000051 -:10F160001B49401801E01B481018400D11E01A49D6 -:10F17000401805E060462080002016E0174810186F -:10F18000800D06E0164902E016484843164940182B -:10F19000C00D03308008800020802E803C0008AC29 -:10F1A0000000F8BDFF21FF20F6F749FB002020807A -:10F1B0002880F6E70000D1451700FFFF3F00E33845 -:10F1C0000E0055551500FFFF0F00A9AA2A01701C5B -:10F1D0003700FFFF1F00CBCC4C00701C47003C00E9 -:10F1E00044AC0000A9AA7A00701C6700A9AABA0062 -:10F1F00084F61200EC25B4000449002801D009224D -:10F2000000E014224A80486070470000A4690100B1 -:10F2100080B50622F5F740FC80BD0000BCB5151C8A -:10F220003C0080AC0000041C04310904090C01AA54 -:10F230006B46FFF76AFF3820064968434018A10073 -:10F24000405A00AB99884018198840180004000CF7 -:10F25000BCBD8C410100BCB5041C151C01AA6B4649 -:10F26000FFF73C00BCAC000053FF38200549684361 -:10F270004018A100405A00AB998840180004000CC7 -:10F28000BCBD00008C41010080B500280FD00029D2 -:10F290000DD002780B789A4209D1FF2A05D0427826 -:10F2A0000232F5F73C00F8AC000081FB002801D1E8 -:10F2B000012080BD002080BD000080B506220449E9 -:10F2C000F5F775FB002801D1012080BD002080BD2D -:10F2D00000005E400100011C49780120002900D097 -:10F2E0000020704700003C0034AD000080B50622CD -:10F2F000F5F760FB002801D1012080BD002080BD12 -:10F3000080B5FFF7C7FF80BD80B506220449F5F739 -:10F3100051FB002801D1012080BD002080BD0000EC -:10F3200012610100011C80203C0070AD000081438F -:10F330008A080E201C2A10B506D2034C5200A35C8A -:10F340008B4201D11019407810BDFC4101001423FB -:10F350000249584340184068704774400100202219 -:10F36000011C80B50248F5F752FD3C00ACAD000031 -:10F3700080BD0000486101000806000E022801D18E -:10F38000002070470120704700290CD00749096808 -:10F39000002908D01423064958434018C0680028A3 -:10F3A00001D0012070470020704700003C00E8AD0C -:10F3B0000000AC6901007440010010B5041C062275 -:10F3C000011C0448F5F77DFB0622211C0348F5F7D4 -:10F3D00078FB10BD00001261010040800700002989 -:10F3E00001D10020704738235A43074BD2183C0004 -:10F3F00024AE00008300D25A14235843054BC01892 -:10F4000040881018081A0A380004000C70470000E1 -:10F410008C41010074400100F8B5071C081C161C43 -:10F420001C1C191C00F05AF8051C1435221C311C38 -:10F430003C0060AE0000381CFFF70BFF28180004EA -:10F44000000CF8BD000000B500F04BF80A300004D5 -:10F45000000C00BD0000F8B5071C081C161C1C1C85 -:10F46000191C00F03EF845001E35221C311C381CCA -:10F47000FFF73C009CAE0000EFFE28180004000CD3 -:10F48000F8BD0000FFB50F1C81B00AA9141C1E1C9A -:10F4900003C900F029F8051C1E35211C301C00F0A2 -:10F4A00023F82D18221C391C0198FFF7D5FE2818C7 -:10F4B0000004000C3C00D8AE000005B0F0BD0A49C5 -:10F4C00080B50988092904D0142907D101018000D9 -:10F4D00000E0C10008180004000C80BDFF21FF20DF -:10F4E000F6F7D1F9002080BD0000A669010038239D -:10F4F0005943064A14233C0014AF000089188200C7 -:10F50000895A054A58438018408808180004000C9E -:10F51000704700008C41010074400100024803491B -:10F5200000684000085A7047A86901005440010073 -:10F530000A20704710B5041C3C0050AF0000FDF7D6 -:10F5400062FF201C10BDB0B5041CC0680568A01D7A -:10F55000FFF7F5FE002818D0211C1431201C08F0FC -:10F56000E2FD002811D0298809482022818269887B -:10F570000183A98806354183C5613C008CAF00003A -:10F580003021095D1154616B41620120F7F728F8C1 -:10F59000201CB0BD707C010070B5041CC068211C2B -:10F5A00014310568201C08F0C1FD002808D0054E64 -:10F5B000F06802F0CFFD2888F08203203C00C8AF3D -:10F5C0000000F7F710F8201C70BD707C01003EB5FC -:10F5D000041CC0680568A01DFFF7B7FE002821D0F5 -:10F5E000211C1431201C02AA08F077FD002819D034 -:10F5F00002984B21095C002910D0012914D03C004D -:10F6000004B0000002290CD129880D2000AB18801D -:10F61000201C03F051F80190684602F05DFAF6F7FD -:10F62000B5F80021029806F09FFE201C3EBD07F0B1 -:10F6300029F8029800218069C207D20F0420F6F74A -:10F640003C0040B000007FFFEEE710B5041CFDF762 -:10F65000E6FE201C10BD3EB5051C00F040FE002853 -:10F6600015D1281C1430FAF7CEFB00280FD0052145 -:10F670002869FFF786FB041C09D00522211C684677 -:10F68000F5F73C007CB000003DFA05340294684672 -:10F6900003F01AFB2A1C0D218F2008F08FFB00209D -:10F6A0003EBD000010B5041CFAF798F8201C05F0C8 -:10F6B000E5F8201C10BD0000B0B5041C0069002155 -:10F6C00094B0FFF73C00B8B0000061FB6946FBF75F -:10F6D00026F800281ED00098FAF729FA011C01A884 -:10F6E00002F0D7F90098FAF7D2F90490052009AD95 -:10F6F000687202A8211C06220230F5F706FA0120E2 -:10F700000890216A0A903C00F4B00000282009917A -:10F71000005D287201A800F069F8201C14B0B0BD8B -:10F72000FFB5161C1F1C81B00A9D4C20F6F790FBFC -:10F73000041C143006220299F5F7EAF9201C06226F -:10F740000199F5F7E5F928203C0030B100000021CF -:10F750000655E1602762002D01D08E2000E08D204B -:10F76000221C0D2108F033FB05B0F0BD0000B0B540 -:10F77000051C4C20F6F76FFB041C4C22291CF5F7E6 -:10F7800026FA2920405D0D282CD23C006CB10000E7 -:10F7900001A31B5C5B009F44281A281E060A282828 -:10F7A0000E2822121600221C0D218C201AE0221C89 -:10F7B0000D21832016E0221C0D21842012E0221C42 -:10F7C0000D2185200EE0221C0D2186203C00A8B1D1 -:10F7D00000000AE0221C0D21872006E0221C0D21DA -:10F7E000892002E0221C0D218B2008F0F6FAB0BD22 -:10F7F000E868F6F7E6F9201CF6F711FBB0BDFEB598 -:10F80000051C9020F6F72DFB041C9021F5F73C0019 -:10F81000E4B100005BF9374E0127F069042803D9F1 -:10F82000706B013070634DE03348B16B04F0D0F879 -:10F8300001202062A87E211C803102910870221CC8 -:10F840006032019200202F1C20379072787A2B1C96 -:10F850003C0020B200001433D072E868AA1DA060FA -:10F86000E86B48604420405D0872291C201C05F0AC -:10F87000AAFC686A00280AD1019A201C937A02998E -:10F88000221C703258300978FAF7DBF906E03A7A30 -:10F89000231C3C005CB20000E869296A7033FDF764 -:10F8A0008DF93020405D184907280BD15820005DA4 -:10F8B000C007C0170130E06100202061201CF7F76D -:10F8C0003FFF18E00122201C05F0ACFF071C12D0FE -:10F8D00003F006FF3C0098B20000F36D002B06D049 -:10F8E00060682030827B616B381CF5F799F8E86816 -:10F8F000F6F773F9201CF6F79EFAFEBDF0690130A9 -:10F90000F061FAE70000C4690100346301000531C9 -:10F91000000070B5061C3C00D4B200000D1C0904A8 -:10F92000090C0020F6F77CF9041C2A1C311C006825 -:10F93000F5F706F9201C70BD4088704703781B0757 -:10F940009B0F0B70007800091070704704307047EF -:10F9500004307047D42101703C0010B30000002136 -:10F96000417070470000C421017000214170704750 -:10F970000000B4210170002141707047000001496E -:10F98000486570470000C469010001490865704777 -:10F990000000C4690100014988653C004CB30000C7 -:10F9A00070470000C4690100F8B55F4F051CB868D6 -:10F9B0000130B86007F024FD38619020F6F766FA50 -:10F9C000041C9021F5F794F8286B271C6063688B62 -:10F9D0008037261CC007C00F2062688B3C0088B3AC -:10F9E0000000603602214007C00F2063688B80074B -:10F9F000C00FF860287F3870B172002808D1F9F77D -:10FA0000C8FF002802D00120606201E00120A0624E -:10FA1000F868002803D00021022006F0CCFF3C004B -:10FA2000C4B300002B1C1033AA1D291C201C05F098 -:10FA3000DFFBA86A00280CD13978022907D0221CE4 -:10FA40007032201C5830B37AFAF710F908E001261A -:10FA50005EE0AA7D231C286A696A7033FDF7C0F84E -:10FA60003C0000B40000E96800200989002900D1A9 -:10FA70000420F0723878012814D10027009000206B -:10FA800006E02969012903D1A969012789071AD547 -:10FA900006F079FC0028F4D1012F14D10098012838 -:10FAA00011D13C003CB4000008E0201C583006F0A6 -:10FAB000E1FC00280AD08069800707D5F07A082188 -:10FAC0000843F0720120E062E87D3073E868A060CE -:10FAD000E06A002812D01A4FF86B00280ED0307B55 -:10FAE000F5F7DEFE3C0078B40000002809D0211CA8 -:10FAF000381C4030FCF755FC1448B96B03F089FF03 -:10FB0000F8BD104F1248B96B03F083FF0022201C90 -:10FB1000104905F0A2FE061C03D1386A0130386294 -:10FB2000EEE7201CF6F73C00B4B400009FF9E8684B -:10FB3000F6F76EF803F0F2FD0448836D002BE2D077 -:10FB40000022301C296BF4F786FFDCE7C469010052 -:10FB5000C4600100346301001130000010B50A20B8 -:10FB600007F0FEFC07F05EFC3C00F0B400000B491F -:10FB700044180CE0201C07F090FB002807D0F7F792 -:10FB800034F9002803D012218620F5F7CAFEF7F7D2 -:10FB90002CF90028EED101F080FD10BD0000409C42 -:10FBA000000010B50C1C011C174A3C002CB50000CD -:10FBB0000129506904D080291DD0812921D11CE060 -:10FBC0009178012915D102219170141C011C104853 -:10FBD00003F028FF0121606900F02EF9606901F04F -:10FBE0005FFC2070A088A16900230A4A3C0068B528 -:10FBF000000007F07EFC10BD222106E001F01DFC94 -:10FC0000201C00F04AF810BD1C212020F5F78FFEC3 -:10FC100010BDB4790100346301003D2E000070B5C1 -:10FC20001C4CA078002832D0052830D060693C00F8 -:10FC3000A4B5000000F0EAF8184EB579A0780128C4 -:10FC40000BD002280ED0032810D0042817D1421F51 -:10FC50008021202008F008F80EE00021202008F084 -:10FC600031F80CE0A08807F01DFC05E0207800F0DA -:10FC70003C00E0B5000039FA002000F0C4FD6069E6 -:10FC800001F0E1FB0520A070B571606900F061F939 -:10FC900000222021812008F0D6F870BD0000B47940 -:10FCA000010020100700B0B50D4D041CA8780028F5 -:10FCB00014D03C001CB60000686900F00BF90A483B -:10FCC000696903F0A7FEA88807F09EFB002C02D00C -:10FCD000687800F079FF0020A870A968201CF4F76C -:10FCE000CAFEB0BDB479010034630100064B80B593 -:10FCF000997803293C0058B6000006D10421997078 -:10FD00002021021C802008F0A4F880BD0000B479F6 -:10FD1000010010B50C4CA17803290FD11030FAF76F -:10FD2000DEF8002809D0207800F0E5F9002000F086 -:10FD300070FD002105483C0094B60000FCF79CFAD9 -:10FD400010BD1B212020F5F701FE10BDB479010084 -:10FD500051B60000094980B58978032909D100F01E -:10FD6000CDF9002000F058FD01210548FCF784FA88 -:10FD700080BD17212020F5F73C00D0B60000E9FD3A -:10FD800080BDB479010051B6000070B5104C1D1C47 -:10FD9000A378061C0498002B18D10123A3702261BC -:10FDA000E6606170A060A561002007F0ACFAA08059 -:10FDB000301CF7F73CFBE08007F03C000CB700007C -:10FDC0004FFBC721C900281A411A0022202007F042 -:10FDD00057FF70BDB4790100B0B5041C0D1C00F0D4 -:10FDE00009F8201C00F024F8002D01D0FFF7D4FE04 -:10FDF000B0BD0000B0B50C4C051CA0683C0048B775 -:10FE0000000000280FD10A48017E022211406160E3 -:10FE1000017E11430176072003F049FC206003F0C6 -:10FE200098FF03F0EEFFA0682843A060B0BD407CBF -:10FE300001000C8007000A4938B50A1C20323C003A -:10FE400084B70000947900AB1C70D279074C5A70CB -:10FE5000E268002A02D1064D01236B701043E06076 -:10FE600000AB1888C88438BD00100700407C010032 -:10FE700000500700B0B5051C002901D000F028F89B -:10FE80003C00C0B70000064C60782169084303D1EC -:10FE900001210E2006F0C5FD206928432061B0BD78 -:10FEA000000018630100B0B50A4C051C226900204F -:10FEB000002A0CD1002900D004E06078002802D18B -:10FEC00004F03C00FCB7000069FB6070281C06F0E1 -:10FED000EFFC0120B0BD00001863010010B5084C14 -:10FEE000607800280AD006F0E3FC002060702069EA -:10FEF000002803D001210E2006F096FD10BD000061 -:10FF0000186301003C0038B80000094980B50B694E -:10FF1000834204D14A78002A01D1012200E0002264 -:10FF200083430B61002A03D000210E2006F07FFDE1 -:10FF300080BD1863010080B50120F6F756FE80BD34 -:10FF4000000010B5041C3C0074B8000000F004F878 -:10FF5000201C00F01FF810BDB0B50C4D041CA868A3 -:10FF6000A0420FD10720296808F08CFB68680222A4 -:10FF700007490028087E01D0104300E0904308762E -:10FF800004F0C4F8A868A0433C00B0B80000A86022 -:10FF9000B0BD407C01000C8007000A4938B50A1C3E -:10FFA0002032947900AB1C70D279074C5A70E26809 -:10FFB000824202D1064D00236B708243E26000ABA7 -:10FFC0001888C88438BD001007003C00ECB8000059 -:10FFD000407C010000500700B0B5051C0A4C002110 -:10FFE0006069FFF711FF042001F046F901F088FB7A -:10FFF00000220421042001F08BF8281C01F04AFAA9 -:02000004800179 -:100000006069FFF7A7FFB0BD407C01003C0028B944 -:10001000000080B501F077FA80BDB0B50D4D01212B -:100020002869FFF7F4FEFFF72AFE00F02CFB00F032 -:1000300084FA002400220421201C01F06CF8013411 -:100040002406240E042CF5D32869FFF786FF3C0014 -:1000500064B90000B0BD0000407C0100F8B5051C8B -:100060000E1C074C171C01212069FFF7D3FE3A1C18 -:10007000311C281C01F052F82069FFF771FFF8BD10 -:10008000407C0100FFB589B0061C16981D1C002895 -:100090003C00A0B9000001D02948149028680088CD -:1000A0000006800E202801D0142817D10AAA18248F -:1000B000182105CAFFF777F9071C281C0189A142FE -:1000C00002DD006801190BE0C068641A0028F5D150 -:1000D0000F213C00DCB900008620F5F761FC00210F -:1000E00001E00021002718480890807907900C2033 -:1000F000164A704380180479049112991598149A3D -:1001000001910390059700950AAB0292211C301CC7 -:100110000CCBF7F73C0018BA000003F90125B540F5 -:100120000C4E083E3078284006D0201C00F0C9FD57 -:100130003078A843307003E0201C139900F043FF8F -:1001400007A903C988710DB0F0BD952400002010E7 -:100150000700747A01003C0054BA0000B0B5041CDA -:100160000C230949584340180079051C00F092FE01 -:10017000281CF7F7C7F80120034AA040083A117875 -:1001800081431170B0BD0000747A010010B5054CB8 -:100190002078002803D11A213C0090BA0000862064 -:1001A000F5F707FC207810BD000018630100014836 -:1001B0004078704700002C63010080B5F6F7D1FE4F -:1001C00000F01BF980BDFEB50168051C0C680E1C13 -:1001D0002178880771D16869C2073C00CCBA000059 -:1001E0006ED580076DD5E87AC20708070909029124 -:1001F0004549800FD20F00284F6805D0012809D04B -:10020000022821D003285BD1FF23201CA97AF4F710 -:1002100074FC55E002980B280AD00C283C0008BB5F -:1002200000000FD00D284ED1394FF868F4F761FC6B -:100230000020C0435AE0354FA97ABB68201CF4F770 -:100240005BFC40E0324F3869F4F753FC3BE000219F -:10025000019102990020FF23090701D401203C00ED -:1002600044BB000013E03189192901D3267E07E041 -:10027000152904D31826711A49190E7B00E00026AF -:10028000B10602D4012073075B0F01210191002800 -:1002900003D0A97A201CF4F736FC0199012915D165 -:1002A0003C0080BB0000F006C60F20881B4FE48A8C -:1002B000F96B0005C00F00291AD04B1C18D0002E76 -:1002C0000AD0002808D03888844213D002980C281D -:1002D00001E01DE012E00DD0081C01F076F90028C5 -:1002E00003D13C00BCBB000000F0A6FAF4F70AFC06 -:1002F0000020C043F863002E0DD03C800020F8633E -:1003000009E020880006800E202804D1044F201C1C -:10031000B96AF4F7F8FB291C0248FBF7EFFFFEBDB2 -:10032000287A01003C00F8BB0000A59A00000348B1 -:1003300080B50078002100F0FCFB80BD0000186350 -:100340000100044B054900281A6800D0011C101C4C -:10035000196070470000D4790100957500000548C8 -:1003600080B5007F24233C0034BC0000044958437E -:100370004018C069F4F7CCFB80BD0000D4790100BF -:1003800094460100021C064880B581628260007FAD -:1003900024230449584340188069F4F7B9FB80BD11 -:1003A000D4790100944601003C0070BC000080B587 -:1003B000002000F03CFB002000F06DFA00F065FA30 -:1003C0000449C86A0130C862081F008807F0C1F8F4 -:1003D00080BDD4790100064880B500210177C16A4B -:1003E0000131C1620438008807F03C00ACBC000059 -:1003F000B3F803F0D1F980BDD479010080B505F0E0 -:10040000E9FA80BD80B5002803D1012004F022FA6A -:1004100080BD012003F0E6FB80BD00000349012000 -:100420004978002900D00020704700003C00E8BC5B -:1004300000002C63010070B5134D2878002820D1EE -:1004400001212E1C7068FFF712FD0021072006F025 -:100450002AFB0D480024047104F0EDF806F0D5F9EC -:10046000012028700A4804604460F6F74CFD3C0007 -:1004700024BD0000F7F75EF8FFF7A2FF00F0A8FD2B -:100480000548716803F020FB012070BD2C6301005A -:100490005000070080000700C4600100B0B51E4C8A -:1004A0002078012835D1251C69681C4803F020FB01 -:1004B0003C0060BD000004F0F0F81A4801684908EB -:1004C00049000160016801221143016000F02BFE28 -:1004D00000F01BFC06F099F8F6F729FEF6F72DFC64 -:1004E00000202070FFF783FF00F08BFD0F4881781C -:1004F00008223C009CBD000091438170817811432B -:1005000081700C49102008716868FFF75FFDF7F7EC -:1005100039F8F6F74DFD0121072006F0CDFA01204C -:10052000B0BD00002C630100C4600100F0000700B2 -:10053000000007003C00D8BD000050000700034940 -:100540000120897A012900D0002070470000147A28 -:100550000100B0B5154D041C287A002820D1F9F708 -:1005600000FC02281CD101202872E868002810D065 -:100570002068296808603C0014BE000069680D48C6 -:1005800003F0C2FA01216868FFF7C8FC00222420AA -:10059000616807F0CFFBB0BD002028722168012000 -:1005A000F4F7CFFAB0BD00202168F4F7CAFAB0BD65 -:1005B000047A0100346301003C0050BE000004488E -:1005C00080B5007A012802D1002002F0F0FE80BD43 -:1005D0000000047A010080B5012807D0802809D1E5 -:1005E0000748007A002804D0012000E0002002F033 -:1005F000DEFE80BD0E212420F5F73C008CBE0000FD -:100600000BFA80BD047A0100F8B53A4E051CB07AA9 -:10061000002869D1F9F7AEFB022865D13648006899 -:10062000002861D03548716803F074FA01217068C0 -:10063000FFF77AFC6C20F5F7B9FC041C3C00C8BE3F -:1006400000006C21F4F7E7FA30682C220460296876 -:1006500081606968C160002111548162A968002924 -:1006600002D0E968016105E006F05DFF69684018A5 -:10067000316808617068FFF714FD692108553C0076 -:1006800004BF00000020F9F709FB01273B1C061CF2 -:10069000221C24320021F9F779FB1C480321008831 -:1006A00089030843211C40310091488318481021D8 -:1006B00060601848A060A76367630020F5F74CFBF3 -:1006C0003C0040BF0000E06002890099CA830768CF -:1006D000311C381D2761FEF78EFE381C0A300F4989 -:1006E000FEF789FEA4203880002004F0DEFB002203 -:1006F0001F20696807F02DFBF8BDFFE7002029687F -:10070000F4F73C007CBF00002EFAF8E7147A0100F1 -:10071000805A010034630100FA60010099EC000086 -:1007200015ED000012610100064880B5817A0029AC -:1007300007D0006804222030017B1143017302F0CE -:100740006BFD80BD3C00B8BF0000147A010010B5FD -:10075000044CA07A012803D106F0F1FE21688861DB -:1007600010BD147A0100031C081C1F4970B50A68EB -:10077000012B1CD0802B05D0832B30D1887A002808 -:1007800014D029E053693C00F4BF0000002B0ED0C8 -:100790009469D5692E1B0C695D1B361BB610A41914 -:1007A0000C61CC682D1BAD106419CC60936102F014 -:1007B00081FD70BD022812D1906A0C1C0028F8D06F -:1007C00007F00EFAA07A01283C0030C00000F3D1F7 -:1007D0002068816A0029EFD12030017B0822114373 -:1007E000017370BD02F021FD70BD0E211F20F5F7D1 -:1007F00028F970BD0000147A010002490C3103C9C8 -:10080000401870470000147A01003C006CC00000E2 -:10081000054880B5006804222030017B1143017334 -:1008200007F0E4F980BD0000147A010070B5164CA1 -:100830000E1CA17A00291CD02168086107F032FA49 -:10084000002817D020680025056200223C00A8C0BF -:10085000000083211F2007F094FA6068FFF703FC73 -:10086000216804222031087B2B1C90430873311C23 -:1008700000221F2007F061FB70BD20680822203095 -:10088000017B1143017302F0D6FC70BD00003C00F7 -:10089000E4C00000147A010080B500F077FC00F09D -:1008A0006FFC00F029FF00F05DFA00F0C5F800F0E1 -:1008B00085FF80BD80B5FAF785FA80BD0148C06824 -:1008C00070470000287A01000349002800D0011C6D -:1008D0003C0020C100000248C160704700008175E3 -:1008E0000000287A010001480249C86070478175FC -:1008F0000000287A01000149886170470000287AC9 -:1009000001000149002088617047287A01000349ED -:1009100000283C005CC1000000D0011C0248C161FD -:100920007047000089750000287A010003490028FB -:1009300000D0011C02488162704700008D750000E4 -:10094000287A01000349002800D0011C02480162F6 -:10095000704700003C0098C1000091750000287AA3 -:1009600001000349002800D0011C024801617047C2 -:10097000000099750000287A0100014802490861C9 -:10098000704781750000287A0100021C081C802A2B -:1009900080B502D100F03C00D4C1000007F880BD52 -:1009A0001E212120F5F762F880BD0000B0B5104D82 -:1009B000041CA86B0130A863696B091A281C006B22 -:1009C0000C2903D90021FFF791FA03E0082901D18E -:1009D000FFF732FB201C00F03C0010C200004DF974 -:1009E0006069400701D503F00CFC201CE96AF4F7AC -:1009F000DBF8B0BD0000287A01000349002800D0D0 -:100A0000011C0248416270470000B5750000287A59 -:100A1000010003490120096C00293C004CC2000080 -:100A200000D1002070470000287A010010B5074C63 -:100A3000E16B002901D1E06304E0814202D0002093 -:100A4000C043F8E706F09CFD206410BD287A010041 -:100A50000148006C70470000287A01003C0088C201 -:100A60000000054980B5002048638863FF210931F3 -:100A700015221020F6F7FBF980BD287A0100034902 -:100A8000002800D0011C0248816070470000C17539 -:100A90000000287A01000349002800D0011C3C0016 -:100AA000C4C200000248C16270470000C575000062 -:100AB000287A0100044B054900285A6800D0011C1F -:100AC000101C596070470000287A0100C9750000A9 -:100AD0000349002800D0011C024841617047000012 -:100AE0003C0000C30000CD750000287A01000F4BC8 -:100AF00010B5D968002919D00E4C0021CA0012196E -:100B0000403AD26B824202DA01310329F6D3481C03 -:100B10001A780006000E904208D018700806000EE1 -:100B2000041C3C003CC30000F6F7BAFA201C03F09A -:100B30001BFD10BD186301003C42010010B5144CB0 -:100B4000E168002922D02178124BCA00D218403A1D -:100B5000D36B834202DA481C20700BE0926B824216 -:100B600014DDFF313C0078C300000806000E207041 -:100B700003D119218620F4F78EFF2078FF3000067C -:100B8000000EF6F790FA2078FF300006000E03F012 -:100B9000EEFC10BD0000186301003C420100094852 -:100BA0000021018141813C00B4C300008181C181E9 -:100BB000074A02800123DB0243808280C2804176A3 -:100BC00031218176012101767047000030800700D5 -:100BD000FFFF000080B50120F6F7F8F80120F6F7D6 -:100BE000DBFC0120F6F75AFA3C00F0C300000120BC -:100BF00000F0F1FD0120F7F7C6FB80BD000010B545 -:100C0000114C002907D1002802D10120E06006E044 -:100C10000021E16003E0012907D1002801D0207004 -:100C200003E018218620F4F73CFF3C002CC40000B0 -:100C30002078FF300006000EF6F73EFA2078FF30ED -:100C40000006000E03F09CFC10BD000018630100BC -:100C5000054980B50968884205D0FEF7FFFB00F022 -:100C600087FAFFF72BFC80BDA86901003C0068C42F -:100C7000000001494870704700002C6301000149E1 -:100C8000C860704700004C7B0100034901200978CF -:100C9000002900D00020704700002C630100044AA6 -:100CA000002802D0906901309061D06940183C0062 -:100CB000A4C40000D0617047905C0100FEB5041C24 -:100CC00000680568281CFEF727FF071C6069154EA1 -:100CD000C007C00F21D001AA02A9281CFEF712FFED -:100CE0003878C0070CD46069800708D500AB187A43 -:100CF0003C00E0C40000002801D0022802D1706A44 -:100D000001307062FEBD00AB187A002801D00228C5 -:100D1000F8D1706A01307062B06A0130B062F1E7F8 -:100D2000F06A0130F062EDE70000905C01000249DA -:100D300048693C001CC50000013048617047000054 -:100D4000905C01007047000070470000011C4031BA -:100D500010B50A8B1207920F012A33D04A781A492C -:100D6000041C6034002A0B6A22D1E279012A02D9DC -:100D7000CC6801343C0058C50000CC60022A02D97E -:100D80000C6901340C610C6801340C60446B002C5C -:100D900003D00469247CE40702D54C6801344C601C -:100DA000806B002802D0086B01300863002A0CD049 -:100DB0009818013808E03C0094C50000012A01D0D1 -:100DC000022A02D1886801308860E0791818086228 -:100DD00010BD0000905C01007047000001490A202E -:100DE00008817047C47A0100F0B5324F041C78784E -:100DF00085B0C007C00F03903C00D0C50000B87894 -:100E000002900120A0400490391C88702C48008872 -:100E100006F00BFC0190FEF7AEFC0430294EA50055 -:100E200071590979884206D0FEF7A5FC7159043042 -:100E3000087101207870002078703C000CC600001A -:100E400021480121204E3038015571590320087086 -:100E500006F0C6FB061CFEF791FC36180E3609E0BC -:100E6000301C06F0F5FA002804D023218620F4F780 -:100E700033FE03E0F6F734FB0028F1D03C0048C60F -:100E80000000124813493C3800780872201CF4F71F -:100E9000A2FA0E4E715908710398002801D0012161 -:100EA000797009480088019906F0BDFB0298B87076 -:100EB000094949790498884203D0242186203C00BE -:100EC00084C60000F4F70EFE05B0F0BD0050070028 -:100ED000D0790100107B010080800700508007005E -:100EE000B0B50D1C041C052801D3F4F729FE052D0F -:100EF00001D3F4F725FE0B4AA8001158A0001058A2 -:100F00003C00C0C600000EC90EC0062106220648DD -:100F100069432A380918624310180622F3F70FFFB5 -:100F200002483038415D0155B0BD107B0100B0B5BD -:100F3000041C0E480D1C80780121A140084003D0FC -:100F400001213C00FCC600008620F4F7D1FD0621FB -:100F50000622094869430918624310180622F3F76C -:100F6000F1FE201CF4F740FA034AA1002A3251583E -:100F70000871B0BD00500700E67A0100034980B552 -:100F8000002048603C0038C7000007F032F980BDFF -:100F90000000D47A010010B5041C052801D3F4F731 -:100FA000D8FD0749087A074A107001200872FEF739 -:100FB000F4FB044A0430A1003C325158087110BDC2 -:100FC0000000808007003C0074C70000D47A010054 -:100FD000034980B50120486007F00EF980BD00008C -:100FE000D47A010010B5041C052801D3F4F7B4FD30 -:100FF000201CF5F78FFE0021201CFBF731FD01219D -:10100000002800D0011C09043C00B0C70000090CF6 -:10101000201C04F022FA10BD000006490120054BF7 -:10102000886000203C33002182009A581170013002 -:101030000528F9DB7047D47A01000F4938B5002044 -:1010400088600E48011C20318A793C00ECC7000002 -:1010500000AB1A70C9790A4C094D59700C343C35F3 -:1010600000210322635C002B02D08B00EB581A7026 -:1010700001310529F6DB00AB1988C18438BD0000B9 -:10108000D47A010000100700FFB5144F3C0028C8B7 -:101090000000041CBE790D1C81B00F2000F0B9F8CF -:1010A0002A1C104D0090211C281CF4F7DEFC211C8A -:1010B000A81D039AF4F7D9FC211C281C0C30049AB3 -:1010C000F4F7D3FC211C281C12300A9AF4F73C00D8 -:1010D00064C80000CDFC07F09BF8009800F076F89B -:1010E000BE7105B0F0BD000020100700E67A0100D7 -:1010F00010B50020F6F726F80749887800090001A6 -:1011000088700024201CF5F711FE01342406240EFB -:101110003C00A0C80000042CF7D310BD0000005014 -:10112000070080B502F0E3FB034881780F221143EA -:10113000817080BD000000500700F8B50D1C041C34 -:10114000052801D3F4F717FDA600002D114F07D194 -:10115000B8593C00DCC80000816800290ED14078F5 -:1011600000280BD002E0FF352D062D0E291C201C77 -:10117000FBF788FC011C201C04F07EF906490120C5 -:101180003039085504483C388068002802D1B959E4 -:10119000032008703C0018C90000F8BD0000107B57 -:1011A000010080B504F0CDF980BD10B5041C052800 -:1011B00001D3F4F7E6FC201CF5F7C1FD0020054A39 -:1011C000A10051588860044988780122A240104348 -:1011D000887010BD00003C0054C90000107B010065 -:1011E00000500700024A9178084390707047000051 -:1011F00000500700F8B50C4FBE790F2000F018F82A -:10120000051C0024201CF4F70DF9084AA1005158D0 -:10121000087101342406240E3C0090C90000042CFF -:10122000F3D3281CFFF7E1FFBE71F8BD00002010CA -:101230000700107B0100B0B508498D788A78054019 -:1012400082438A7006F0F9F9041C0A34201C06F067 -:1012500034F90028FAD0281CB0BD3C00CCC90000ED -:101260000050070001490A2008817047387B0100BF -:10127000F8B510480426041CE034051C383D00274E -:10128000201C1C30E460A06127610B48A682E0614D -:101290002762A7620620A084201CFEF73C0008CA33 -:1012A000000087FC201C0C30F6F7B7F90549383CE4 -:1012B000AC420880E7D1F8BD0000D4E4010012611F -:1012C0000100487B0100F7B5051C0C230F1C1249D7 -:1012D00058434418208806F0EAF9A07801283C0019 -:1012E00044CA00001AD16668022F05D15C20805BD9 -:1012F00002990009884211D1281CFEF7FBFF301C1F -:10130000F9F7FAFD0420A070391C281CFBF7F4F84B -:10131000034AE8003C32115801311150FEBD000073 -:101320003C0080CA0000607B01000120064A0021C9 -:101330000C234B439B189B78002B00D000200131DD -:101340000429F5DB7047607B010070B5041CFFF7D2 -:10135000EAFC002803D120210C20F4F7F6FB261C20 -:1013600060363C00BCCA00000021F171E164606B92 -:10137000251C4035002831D0FFF704F90122120363 -:1013800000282069018801D0914300E011430180C9 -:10139000206901220088D2022883201C583001884D -:1013A000914301803C00F8CA0000A36B5208002B57 -:1013B00010D091430180288B0007800F012815D0A1 -:1013C0002E20015D20690430F8F741FD616AFEF7C7 -:1013D000A8F904E011430180201CFBF7CCFB6883D3 -:1013E00004E0206941803C0034CB0000A88B2169D7 -:1013F000C882E068F6F720F93080606D002804D0DC -:1014000000220321707AFEF70DFF201C00F0B6F9D0 -:10141000707A06F045F870BDB0B5002406F022F9E8 -:10142000094A00210C234B433C0070CB00009D185F -:101430006B685B6CAD78C31A012D02D1A34200DD4D -:101440001C1C01310529F0D3201CB0BD0000607BBD -:101450000100B0B5041C06F0A8FE0C20084960434A -:101460004518288806F035F968683C00ACCB0000C8 -:10147000002806D02030007B012802D1201CFFF775 -:10148000A3FAB0BD607B0100FFB585B00FAE60CEA2 -:1014900038201E497043171C4418FFF77FF80122BB -:1014A0001203002803D02088904320803C00E8CB22 -:1014B000000002E02188114321801198391CE0626C -:1014C0000598F8F7D0FC011C2B1C381C069AFEF777 -:1014D00020F960800622201D0F49F3F772FC231CBF -:1014E0000898303318700E980C49587065633C00AA -:1014F00024CC0000002002900122049209480391AC -:101500005A780188019200911978243B301C626B53 -:10151000FEF7A8FE09B0F0BDD4E40100126101009D -:101520005D4E0000487B0100FFB587B0109812AFF8 -:101530003C0060CC00008C46A2CF4C23304C6B4367 -:101540001C19161C159A2785271C303706970597F6 -:1015500000233B73059F78731198271C60646160BA -:10156000226040373E70614661870798311CF8F76A -:1015700080FC3C009CCC00000599C8730A987870E8 -:10158000301CFEF773F8002801D0012000E0002095 -:10159000410002200140119A0120002A00D10020C0 -:1015A00008433872201C2E300799FDF7CFFF281C06 -:1015B00004F0AEF83C00D8CC0000FEF7FEFF4C2251 -:1015C000124B6A43D218012109032A32002804D0A1 -:1015D000101C12888A43028002E0108808431080A1 -:1015E0000B490020039106990290002204920848BA -:1015F0000A7B4188231C3C0014CD0000019200911D -:1016000079780833281C6268FEF738FE0BB0F0BD0D -:1016100058E30100754F00003C7C0100B0B50C1C84 -:10162000012827D0802830D1E06C002808D069201C -:10163000005D1849C00040183C0050CD0000043047 -:10164000016801310160201CFFF7E9FB134D503D9B -:10165000E868002805D02E20005DFEF710F802F0A3 -:1016600042FE201C6168F3F72FFB403460780028AD -:1016700002D106F012F8A860B0BD3C008CCD00008D -:101680002006000E8128FAD1220C2004000E02212F -:10169000FEF7E6FDB0BD0A210C20F4F77DFAB0BDDF -:1016A0009C7B0100F8B5184E184F051C3479B879A9 -:1016B0000090201CF5F77CFF002806D03C00C8CD28 -:1016C0000000124838384068854201D1002D03D10E -:1016D00010218620F4F763FA0D490020383948605C -:1016E0000421201CFFF759FC0421201CF5F7EBFE18 -:1016F0000C21064A6143303A89180C7104203C00E1 -:1017000004CE000030710098B8710F20FFF7A6FDDD -:10171000F8BD0000A47A010020100700F8B5041CF1 -:101720000F20FFF7C1FDF5F73BFF0125002800D092 -:101730000025164EB079164F00903879042801D153 -:101740003C0040CE0000002C03D111218620F4F78C -:101750002CFA1048290638384460090E0C1C042065 -:10176000FFF721FC0321201CFFF741FC211C042072 -:10177000F5F7AFFE0C21074A69430420303A891877 -:1017800008713C007CCE00003C710098B071201CB8 -:10179000FFF750FD0420F8BD20100700A47A0100D7 -:1017A0000C2302495843401880687047747A01003E -:1017B0006030C1798079814201D9012070470020D1 -:1017C000704700003C00B8CE0000014880687047B8 -:1017D00000004C7B010038B56921095C1823104AD0 -:1017E000594389188A6801328A604B69D21ACB68DA -:1017F000934200D2CA6000220B4C0260221C2032AD -:10180000957900AB1D703C00F4CE0000D2795A707F -:101810000A68002A01D1486000E0106000AB08604F -:101820001888E08438BD0000C47B01000010070068 -:1018300018230A495843411808690130086148686B -:10184000002809D0486901303C0030CF00004861D1 -:10185000486802684A60002A00D10A607047002088 -:101860007047C47B0100F8B5124E104D0F4C0A278B -:10187000211C0020E0602A31221C1832A160626124 -:1018800027820C4AE061A26160623C006CCF0000DC -:1018900006202084081CFEF7D7F9201C0830F5F735 -:1018A00001FF4C3CAC427080E5D1FF203070F8BDA8 -:1018B00088E401000CE301003C7C0100126101009E -:1018C000F8B5041C0B480E1C171C44703C00A8CF34 -:1018D000000005F000FF051C391C301CFDF7ABFFB4 -:1018E0000C21054A28180A30614308325050034839 -:1018F000891800688860F8BD00006C7A0100786E75 -:10190000010070B50B4E051C7078FF280FD03C000D -:10191000E4CF00000C23084C58430834205805F04D -:101920001DFE002806D170780C23584300198168E9 -:101930002943816070BD00006C7A010080B53021C0 -:101940000148F3F743FA80BDECE5010010B505F05E -:101950003C0020D00000C5FE0A4944180CE0201CC1 -:1019600005F0F7FD002807D0F5F751FE002803D059 -:1019700013218620F4F731F9F5F749FE0028EED15E -:1019800010BDB0360000FFB58BB0199B0D1C041CB8 -:101990001A203C005CD00000002B169900D11820C2 -:1019A00001901498002827D0FF20199B0130002BAC -:1019B00001D1182300E01A230433824204D3D01A41 -:1019C000400840000004000C0D906A480088C21ACC -:1019D0001204120C3C0098D000000492002908D098 -:1019E0008979664A4900515A049A511A0A04120C1C -:1019F0000492049A824205D90020049002E06048D3 -:101A000004900D9001980104090C0A910020F4F74C -:101A100084FA009000683C00D4D0000000260690B4 -:101A20002060002005900E9800240005000C09900D -:101A30001A980D9F4007400F089007940395002DBA -:101A40000DD02889B84204D836183F1A07D0ED685F -:101A5000F5E73904090C281C3C0010D10000F4F70C -:101A600038FBEFE7002E02D10799002971D1271C1E -:101A70006C20F4F788FB0799041C002920D10794F7 -:101A80000020A0611898271C606017982437A06078 -:101A90000698206115980FC80FC73C004CD1000074 -:101AA00014985C2160630998085319986921E063D0 -:101AB0001B9808551C9860651998002823D0089831 -:101AC000069908831FE06C22201C0799F3F71AFA85 -:101AD0003C60019862213018C85315983C0088D1A9 -:101AE00000004021807AC8550020B86306980A9902 -:101AF000F4F71FFAF8600299F4F73BF9201C403024 -:101B0000818B059A1207120F1143818303985E217E -:101B100002900198224A30180853126801213C00B3 -:101B2000C4D10000081C002A00D01B980006049AAB -:101B3000000E964203D92C2211551B4904E0159939 -:101B40002C22097A11551949085C662108551C9800 -:101B5000002801D01F200855002D03D0E86803900D -:101B60003C0000D20000002000E009E0E860059899 -:101B7000002601300004000C0D9F0590039D6DE7C9 -:101B80000098E0600299F4F7FAF800202060012143 -:101B9000A1636034608007980FB0F0BD000006615B -:101BA00001003C003CD200005C4301003809000009 -:101BB000186701000E6101000A6101000148006818 -:101BC00070470000C46A01000249091D03C940189A -:101BD00070470000C46901000148006970470000B7 -:101BE000C46901003C0078D2000001484069704798 -:101BF0000000C46901000148806970470000C469A1 -:101C0000010070B50D4E0020351C4035F0630DE02D -:101C1000A068F4F77AF9B36D002B04D000220120FC -:101C2000616BF3F795F83C00B4D20000201CF4F788 -:101C30009DFA281CFAF742FD041CECD170BD00008F -:101C4000C4690100F8B51A4F0026F86B00282CD0A3 -:101C5000381C403000901DE01648B96B02F05CF86B -:101C60000022201C144903F03C00F0D200007BFF4E -:101C7000051C04D1386A0130386201360DE0A068D5 -:101C8000F4F749F9BB6D002B04D00022281C616BCE -:101C9000F3F764F8201CF4F76CFA0098FAF711FDDA -:101CA000041CDCD10748B96B02F03C002CD30000C7 -:101CB00025F80020F863301CF8BD0000C46901005D -:101CC0003463010011300000C460010001490120AB -:101CD000C8637047C469010080B50020054A00212F -:101CE0001C2343439B1801300428D9663C0068D369 -:101CF0000000F8DBFCF7FDFC80BDC4690100014970 -:101D0000C86470470000C4690100014988647047D5 -:101D10000000C4690100B0B5041C0D1C211C028E1A -:101D2000806A4031F3F72FF8002816D102213C00D9 -:101D3000A4D30000201CF4F76FFAE269C000101869 -:101D4000828BAB889A4204D182692B689A4208D26E -:101D500001E09A4205D2002118300CCD0CC000E001 -:101D60000121081CB0BD0000F8B5061C002744681E -:101D70003C00E0D300000FE00949486A01304862A6 -:101D8000A069002802D0F4F700FAA761266225684E -:101D9000201CFFF752FB2C1C002CEDD1F8BDC469B0 -:101DA00001000330074A8108136850681B688900E6 -:101DB00009183C001CD400008B4201D3516000E0A4 -:101DC00000209060704700008C6E010070B5124ECC -:101DD0008038C50070590C1C002804D101210D2049 -:101DE000F3F72EFF0DE02069002805D1A81981889E -:101DF000E06801F03C0058D4000047FA20617159B6 -:101E0000201CF2F7BBFF041C002C07D0E068002860 -:101E100001D0F4F792F8201CF4F7BDF970BD5442DC -:101E2000010070B5041C0D1C0E490622F3F735F8AD -:101E30000026E66166623C0094D400000720302151 -:101E40000855E663281CF8F76BF8A076201C1430C0 -:101E50000622291CF3F724F80622291CA018F3F700 -:101E60001FF8266170BD00001261010080B5FDF70A -:101E700085FE80BD014948603C00D0D40000704719 -:101E80000000E4650100024980B54968F2F77CFF73 -:101E900080BDE465010080B5F4F7E5F9074907481E -:101EA0000EC90EC018380068002802D002F0B7FA38 -:101EB00080BD02F09EFA80BD00003C000CD5000001 -:101EC000B058010090730100054980B58968002071 -:101ED000002900D103200006000EFAF7E3FB80BDC5 -:101EE000606C010080B5034806220349F2F7DEFF6B -:101EF00080BD000040800700126101003C0048D511 -:101F00000000B0B5041C0C4D0B1C211C00200C3D26 -:101F10000029094C05D02878211C1080021C181CAF -:101F200007E011880E2907D80A06120E191C201C7A -:101F30002A70F2F7BEFF0120B0BDB06901003C007D -:101F400084D5000010B500200A4A012111600A4C16 -:101F50000AE0021C016A5032914205D061783C23AC -:101F6000594309190431016204F0BAFB0028F0D189 -:101F700010BD0000DC62010068610100044880B50A -:101F80003C00C0D500000068002803D0011C1020D0 -:101F900004F0C7FE80BD286101000322111F80B537 -:101FA0000020FBF776F980BD000080B50BF0B9FA90 -:101FB00080BDFFB583B0161C002101911F1C0821B4 -:101FC00002AA3C00FCD50000FAF70EFF041C2AD13F -:101FD00002984168490001D4092424E0FAF752FF2D -:101FE0003860029841684902CD0F291CFAF744FF76 -:101FF000011C306038680006000E00F01BF8002855 -:1020000001D10A243C0038D600000FE03168029864 -:102010002B1C01AAFAF7D7FF002806D00198002848 -:1020200004D004990968814200D2032401980499DC -:10203000086007B0201CF0BD000070B5051C0E1C28 -:10204000012400F084FF3C0074D60000002808D072 -:10205000032D01D0042D04D10320C003864200D3F8 -:102060000024201C70BD00007CB5151C061C0C1C37 -:10207000291C6A4601ABFFF7A5FF002802D1002CFE -:1020800001D103207CBD17483C00B0D6000000AB56 -:1020900006601879072821D202A31B5C5B009F44CD -:1020A00000001D040406101713000420EDE72A1C8D -:1020B000211C0120009BF2F781FE002812D106208E -:1020C000E3E72A68009905E000983C00ECD60000A0 -:1020D0004278811C01E02A686946201CF2F7FEFE66 -:1020E00003E004218720F3F7CFFD0020D0E70000B4 -:1020F000F86B0100F7B586B00E1C082105AA0698FA -:10210000FAF77EFE041C45D1059841683C0028D7AB -:10211000000002904902C90F002504950391089F11 -:10212000FAF7D5FE019002A903C9FAF7C6FE019994 -:10213000052914D202A35B5C5B009F4400000E03E0 -:10214000060C030087420ED807E087420BD83C00FC -:1021500064D700000125C01B049007E0874205D129 -:10216000012503E005218720F3F794FD002D01D11F -:10217000032415E005984168002969DA3A4A06996E -:102180001160FAF791FE071C05980399FAF786FE8D -:102190003C00A0D70000051C011C381CFFF75FFFA6 -:1021A000002801D10A245EE0072F57D202A3DB5D8D -:1021B0005B009F440000530404062E504800042492 -:1021C00051E00498002801D1002714E0089908186C -:1021D00000043C00DCD70000000CF4F72BF8071CCF -:1021E000311C089AF2F786FE089804993818F2F71D -:1021F0002FFE089804993E1C40180890311C0020BE -:1022000008AAF2F7ECFD002800D10524002F2DD0FC -:10221000381CF3F73C0018D80000EDFF29E00399C3 -:10222000002904D0059840688702BF0A00E0002713 -:10223000311C281C089AF2F760FE0499002903D08B -:1022400008982818F2F707FE002F12D0F2F7CCFDFD -:102250000FE0311CA81C3C0054D80000089AF2F78B -:102260004FFE0898687007E0FFE7072404E00824A1 -:1022700003218720F3F71AFD201C09B0F0BD0000F0 -:10228000F86B01009EB51C1C00AB19720092002275 -:1022900001946946FBF708FA3C0090D800009EBD07 -:1022A00000008FB5029200220090019003916946D0 -:1022B0000420FBF7FCF98FBD0000B0B50C1C012811 -:1022C0000AD0032819D004282CD1606801F035FC0D -:1022D000011C83200CCC22E01C203C00CCD8000048 -:1022E00014496043401814494518281CF8F746FC67 -:1022F000A968002903D0221C082005F071FEB0BD9A -:10230000208CC82801D3042004E0652801D30220D2 -:1023100000E001202084201C03F0DCFA3C0008D9F6 -:1023200000002268E368011C8220FFF7B4FFB0BD03 -:10233000A0210820F3F7C3FCB0BDDC71010064EEFE -:10234000FFFF0348044A81685161C068906170478B -:102350000000F4680100C07101000349044A3C0018 -:1023600044D90000086B90608868D0607047000016 -:10237000905C0100C071010000B5FFF7F1FFFFF7AD -:10238000E3FF00BDB0B50D1C002814D00B490C4C68 -:1023900088686269C968801AA269891A401804D0DD -:1023A0003C0080D9000064235943F2F7C4FE206149 -:1023B000FFF7CDFF206928600120B0BD0020B0BD2F -:1023C0000000F4680100C0710100B0B50D1C0028C8 -:1023D00017D00C490D4C086BA2688968801AE26816 -:1023E000891A3C00BCD90000401807D022889042CE -:1023F00004D964235943F2F7A1FE6060FFF7B6FFEA -:10240000606828600120B0BD0020B0BD905C010074 -:10241000C07101007CB51068002802D000F024F8DB -:102420007CBD0F483C00F8D90000C0698468E068B2 -:10243000256AA669F3F7E3FDE169F3F706FD201CC1 -:10244000E2694030C18B12898918C1830749019420 -:1024500000912869331C82880168E068C068F8F739 -:102460001EFCE0E700003C0034DA0000846A010052 -:10247000915E0000F0B58569066A041CC06885B0ED -:10248000C068002801D1F3F757FC0A49029504946B -:102490000391306982880168262001920091435D92 -:1024A000E068E1692A1C0E323C0070DA0000C06866 -:1024B000F8F737FD05B0F0BD0000E9D9000010B510 -:1024C000141C0548FCF77BFBA068F3F79EFDE16850 -:1024D000C160201CF5F7BBFA10BDA06A01007CB5F5 -:1024E000041C6030027BA16900913C00ACDA000062 -:1024F0000192221C211C3831A06848320D1C6369EE -:1025000003F07AFB08210020F3F788FDE0602669DC -:10251000B16B002901D0102300E018230549019474 -:1025200000913168CA180823011C281C3C00E8DA15 -:102530000000F8F720FD7CBD000081DA0000F0B556 -:102540004668171C041C0121301C9BB0FAF70DFCD7 -:102550000025002803D013490A7A012A01D1012558 -:102560001CE088624E612089C861608900283C00B7 -:1025700024DB000003D000200884488404E0E068E5 -:102580000884208A4884608A8884086B002803D1E4 -:1025900001A803F077FC04E001200861002002F0AC -:1025A00039FB3D711BB00120F0BD0000F46E01004D -:1025B0003C0060DB000010B5041CF7F7E8FB0028C6 -:1025C00011D14B20005D01280DD1201C04F085FAAB -:1025D0000021201C04F0F3F8A0690021C207D20FEB -:1025E0000420F4F7D8F910BD000038B5041C04F03D -:1025F00036F93C009CDB0000002803D04030807A94 -:10260000002825D10C2029210855211C0622A018BC -:10261000F2F7A0FC201C06220E49F2F79BFC0120D9 -:10262000E06160620720302108550025E56306203F -:1026300000AB18803C00D8DB0000E068002801D027 -:10264000F3F7DBFC02216846FDF773FBE060201C1A -:10265000FFF769FCE560201C38BD12610100FEB582 -:10266000051C0E1C152000AB98801421171C00209F -:10267000F3F7E3FC02903C0014DC0000046806223F -:10268000311C601D2571F2F76BFC0622391C201CE1 -:102690000B30F2F765FC01A8FFF752FCFEBD00000D -:1026A00080B50023FBF75CF880BD000070B5051C09 -:1026B00008350F4E291C041C3C0050DC000006228B -:1026C000301CF2F750FCA088B082281C05F0A1FF56 -:1026D00000280BD0E0883061281C04F0CCF8A188D9 -:1026E000403041800020F4F7B8F902E00420F4F70C -:1026F000A0F9002070BD707C01003C008CDC000063 -:1027000080B50020FBF7F8FB80BD000070B5041C0D -:102710000430051CFDF732F8002809D00020F7F737 -:1027200037FC002804D00622011C281CF2F71EFCEE -:102730000A4E0622291C301CF2F718FC3C00C8DCAB -:1027400000006089F082281C05F069FF002803D092 -:102750000220F4F788F902E00520F9F7F4FA0020E6 -:1027600070BD707C010010B5041C007904281CD2D7 -:102770006079012801D0032804D1002201213C0006 -:1027800004DD0000A01DF9F769FC6079002804D180 -:1027900022790021F9F762FC0AE0032808D100241D -:1027A000221C00210020F9F759FC0134042CF7DB2E -:1027B000012010BDF0B597B0171C051C0430041C97 -:1027C0003C0040DD000015AA16A905F0E2FE002835 -:1027D0002ED015984B21095C002923D0012902D065 -:1027E00002291FD101E004F090F9AD7A1348169E3A -:1027F00005800622211C0830F2F7C1FB221C311C87 -:1028000002A83C007CDD000000F074FB0A200AA94D -:10281000487200AB9D80022101A8FDF79FFA059048 -:1028200002A8FFF795FBF3F7F7F90021159803F0DD -:10283000E1FF002000E00120387117B00120F0BD59 -:10284000987C01003C00B8DD000080B50120FBF75A -:1028500062FB80BD0000B0B5041C807D151C0A1C05 -:10286000C007C0170130211CF9F7FBFC002803D179 -:10287000042028710120B0BD206AF7F776FE606A57 -:10288000F7F77BFE206A3C00F4DD0000FEF788FAD3 -:102890000020B0BD10B5141CC27981798088F7F78B -:1028A000A1FA2071012010BD80B50123FAF770FF55 -:1028B00080BD0000F0B5041C081C00210F2891B059 -:1028C00000D30221002941D13C0030DE0000C000CD -:1028D000244F1090C619B288216802A8F2F75BFB5A -:1028E0002189B088091A002907DD09042268090C2A -:1028F0001018F3F7C0FB051C00E00025B07980211B -:10290000884317497831095C00203C006CDE0000E8 -:10291000F3F7B4FB071C00681349019010980B589B -:10292000019A291C02A8F2F7ACFA0090281CF3F7D0 -:1029300073FB201CF3F782FB0098002808D0029854 -:1029400001990860B079391CFAF720FF3C00A8DE35 -:10295000000011B0F0BD381CF3F761FBF9E72D2042 -:10296000F3F7F5F9201CF3F76CFBF2E700002444C1 -:10297000010070B5051C2035061CA879042848D232 -:10298000E979012913D1301C283003F092FF3C0073 -:10299000E4DE000000283FD0011C8C310165A979DC -:1029A0004C22041C11548118416250340462E11E0F -:1029B00081620BE000292FD13C2218494243541870 -:1029C000174A04341268002A00D14870002C23D022 -:1029D0003C0020DF0000351C3035E879012801D0AB -:1029E000052801D10620E8712022311D2068F2F768 -:1029F000DEFAB08CA080E879A071A8790025A063E8 -:102A0000012060810020E0602E36E80000191830B7 -:102A100008223C005CDF0000311CF2F7CBFA0135E4 -:102A2000042DF5D3012070BD68610100DC62010056 -:102A300010B5041CC07A012801D0032807D1201D3D -:102A400003F040FF002802D0A17A40304173E07AC1 -:102A5000002801D03C0098DF0000032802D1A07AB2 -:102A600002490870012010BD00006861010070B5C6 -:102A70000E1C0321041C301CFCF7E1FB002801D0D4 -:102A8000857800E000250B48321C00680368207C34 -:102A90008007C00F211C3C00D4DF0000F7F762FE66 -:102AA000002805D00121281CFDF7FEFB002000E0D6 -:102AB000082003F0C5FF002070BD0000E4650100A0 -:102AC00080B5426800880121490608432D2105F0A0 -:102AD000D3FB80BD034901203C0010E00000497891 -:102AE000022900D0002070470000846601008CB5E8 -:102AF00001281FD100290DD001290BD0022901D0B6 -:102B0000032916D10020F9F714FC932000AB18809C -:102B1000002008E0012900D000203C004CE000002B -:102B2000F9F70AFC832000AB1880022000F0CCF8F3 -:102B300001906846FFF73AFA8CBD01210E20F3F7A9 -:102B40001BF9F9E7FFB5171C1E1C1421002083B0E8 -:102B5000F3F7ACFA051C0468122000AB3C0088E0D7 -:102B6000000098800622601D0399F2F732FA0020D7 -:102B7000207127730499201CE172311C06220D304C -:102B8000F2F727FA029501A8FFF713FA07B0F0BD94 -:102B90000000F8B5061C0F1C0C210020F3F73C00C8 -:102BA000C4E0000089FA0568041C281D0622311CB7 -:102BB000F2F712FA6F81201CF8BD0000B0B5041CBA -:102BC0000D1C08210020F3F777FA01688C718D80C5 -:102BD000B0BD0000F7B50E1C1021171C0020F3F744 -:102BE0003C0000E100006BFA0468051C201D062271 -:102BF0000099F2F7F4F96681A781281CFEBDF3B5B0 -:102C00000C1C0821002085B0F3F759FA061C076850 -:102C1000E068002802D00599012904D1059838718F -:102C200000203C003CE10000787156E0036801217F -:102C3000039320690290FCF717FB051C02983221D0 -:102C4000FCF712FB0022D243011C281C04ABF7F74F -:102C5000B9F8002804D1301CF3F702FA00263CE052 -:102C6000002D05D03C0078E100006878093807287D -:102C700001D8322028701C210020F3F726FA019099 -:102C80000568011C301CF3F740F9E068F3F70BFA14 -:102C9000A861E1680198F3F738F90020E060059831 -:102CA0008021084338713C00B4E100000120211C60 -:102CB00014317871281C0622F2F79AF9029A292019 -:102CC0000092005D0121E26A082800D00021281C42 -:102CD000039B02F09DFFA06B2861206C68617F3030 -:102CE00001D10F206861301C3C00F0E1000007B00A -:102CF000F0BD10B5041C08210020F3F7ECF90168C1 -:102D00000C7110BD00000148006870470000286188 -:102D100001000149086070470000E4650100021CE1 -:102D200001200006084380B52D213C002CE2000064 -:102D300005F0C0FA80BD000080B5012807D0F12859 -:102D400025D0F32827D1022002F0BCF980BD00294C -:102D50001AD0012903D0F229F8D188211CE01048AB -:102D60000178002905D140780128EFD13C0068E2C4 -:102D7000000000F016FA80BD0B4814300089FCF703 -:102D80005AFC011C01220F2005F09FF980BD04F0C0 -:102D900052FA80BD0020FAF732FE80BD02210F20DA -:102DA000F3F705F880BD84660100014800783C0017 -:102DB000A4E2000070470000746601000149002091 -:102DC00048607047EC650100F8B50E1C134D011CFE -:102DD000141C6822281C1F1C0C30F2F771F90F49D3 -:102DE0000020AC394860012129601921192C6E6737 -:102DF0003C00E0E2000000D3211C2981094914397C -:102E000088738F74C878012808D001210F2005F03D -:102E10009CF91920FCF715FCFBF799F80120F8BD87 -:102E200000009866010080B5012802D100F02FF85B -:102E300080BD3C001CE3000001211D20F2F7C0FF13 -:102E400080BD00007047000001200749000580B5E3 -:102E5000886000228021162005F04CF904F034FD32 -:102E60000249086180BD000000100700246D0100C8 -:102E7000064A80B53C0058E30000D16A814207D180 -:102E8000107F2423044958434018C068F2F735F8EE -:102E900080BDD4790100944601001D481CB500781E -:102EA00000282DD01C480068002829D01A4A1A4B47 -:102EB000043211681C693C0094E30000A14222D155 -:102EC00051685B6999421FD1164949689368C91ACC -:102ED000814219D2D06814490130D0600968884213 -:102EE0000CD90622FF216846F2F72EF9F3F7ACFC65 -:102EF000011C0023002268463C00D0E3000002F0E1 -:102F0000CEF901221D200A4905F0F7F81CBDF7F79C -:102F100088F904228118081CFCF727FBF6E71C75CA -:102F200001004475010028610100905C0100F05926 -:102F30000100A086010080B501683C000CE400009F -:102F4000002915D10079022812D1081CF7F780F862 -:102F500000280DD003F0F2FC0830418F002907D182 -:102F60008069002804D08079062801D1FCF718FB7D -:102F700080BD000001490020886270473C0048E4A1 -:102F8000000078690100B0B5054D041CA91DFFF7CC -:102F900014F80622291CA018F2F74BF8B0BD707C7B -:102FA0000100B0B5041C151CFFF707F80622291C08 -:102FB000A018F2F73EF8B0BD000080B50A303C0022 -:102FC00084E40000F7F7BCF90123002803D005488A -:102FD0000078012804D100220021002003F0C6FD62 -:102FE00080BD0000A079010080B5002300220021EF -:102FF000002003F0BBFD80BDB0B5054DAC790A1CC7 -:103000003C00C0E40000011C0123012003F0B1FDDD -:10301000AC71B0BD000020100700F8B5061C0C1CF8 -:10302000880702D5F6F747FA10E060070ED5174F6C -:10303000A320C05D154D102800D3154D04F059FC98 -:10304000B96F3C00FCE40000401A291A0120F6F791 -:10305000C1FAE0071149C00F48600CD00D4C443C48 -:10306000207803280FD1002E06D0F6F7F9F9011CBD -:103070000120F6F7AFFAF8BD09490120F6F7AAFAE0 -:10308000012020703C0038E50000F7E70121301CEA -:10309000F6F789FAF2E7A60E0000A46C0100C40955 -:1030A0000000B057010040420F0080B5062804DB45 -:1030B0000521FF20F2F79FFE80BD034AC00011509A -:1030C0000121801801713C0074E5000080BD000002 -:1030D0009C5A01000148806870470000D0600100E0 -:1030E000B0B5084C251D281C216800F0F1FE002811 -:1030F00003D101210448F2F7CFFA281C216800F01F -:10310000FBFEB0BDC06001003C00B0E500002C102B -:103110000700B0B5104D0C1CA868002802D104F0BF -:10312000F4FB2860201C04F038FB0121032003F08D -:10313000C4FE04F0F0FBA86800280BD104F0E5FB06 -:103140002968001B401A696840183C00ECE5000043 -:103150004108401828600120A860B0BDD06001007F -:10316000F8B51F4E0024B068002802D104F0D0FB4F -:10317000706005F061F804F08FFB051CF9F766FE3E -:103180003168184A41181268E80B002A3C0028E60A -:10319000000000D1A80A401885421FD9144F2D1AEB -:1031A000381C2030817900AB1970C079587005F057 -:1031B0006EF8002803D102218F20F2F728FE291C87 -:1031C0000C48F268F8F709FC002804D0011C3C0008 -:1031D00064E60000281CFFF7A5FF012400AB188857 -:1031E000F88405F047F8201CF8BD0000D06001000D -:1031F000F474010000100700891301000149012047 -:10320000C8607047D0600100064880B5006801289A -:103210003C00A0E6000007D10448AC38016903482F -:1032200000F079FEF3F72BFA80BD98660100346355 -:10323000010080B542788168007903F0DEFF002844 -:1032400001D1F5F7B6F980BD00001FB504F069FBA8 -:10325000F6F73C00DCE6000091FF164C022803D193 -:10326000FFF7DCFD042802D3002020701FBDFBF710 -:10327000F7FC0028FAD1606A0028F7D02078800790 -:10328000F4D40921162004F093FF012020700B4C88 -:10329000094902903C0018E700000194009104F0F5 -:1032A00046FB001903906846FDF7B5FB0022162186 -:1032B000842005F03EF8DCE70000606C010061ED61 -:1032C000000040420F00234870B580789CB0012870 -:1032D0003ED1204C09A83C0054E70000803C611C12 -:1032E000FEF792FE042011AD6872A06F19A9189024 -:1032F0007C20005D012608711D20005D002806D09D -:1033000010961296FCF7F6FA2872207A1190F3F7CD -:10331000CDFF6A21085340343C0090E700000022B2 -:1033200001A906A8F6F7CDFF211C0020FBF7CBFB77 -:1033300006A9FBF7C8FB01A9FBF7C5FB0A49096809 -:10334000002907D0331C0A226946FBF7DAFB009AF2 -:10335000072191700C9009A8FEF73C00CCE7000013 -:103360007BFE1CB070BD000084660100E4620100B9 -:10337000F8B5041CC068FF22016812020E1C087B0D -:10338000497B090211400843051C311C0622A01884 -:10339000F1F77CFE0622B118201CF1F73C0008E88A -:1033A000000077FE280A290208430004032149028D -:1033B000000C884208D2E06801890E390181E0687A -:1033C00001680E310160F8BD0026201C103003F0AA -:1033D000E8FA218B002905D1E17D00290BD03C00C2 -:1033E00044E800008069800708D4E068012601896C -:1033F00002390181E0680168023106E0E068018974 -:1034000006390181E0680168063101601449002035 -:103410000B1F42009A5AAA4202D11149063102E01A -:103420003C0080E8000001300228F5D3E068062265 -:103430000068F1F734FE012ECBD1812000AB18805B -:10344000E17D208B49030843310308430004000C4D -:10345000010A000208435880E06819880068C180AA -:1034600059883C00BCE800000181B5E76A460100CC -:10347000B0B50D1C01890622083101810468044998 -:10348000083C0460201CF1F70DFEE580B0BD000093 -:103490006A460100F8B5002901D0002801D10020BA -:1034A000F8BD09043C00F8E80000090CF2F743FFFE -:1034B000061C051C002720E02C892968022C01D25B -:1034C000022001E048780230844202DD241A091803 -:1034D000F4E7844210D0011B0A040104090C120C09 -:1034E000281CF2F79EFE3C0034E90000002806D1BB -:1034F000E868F2F72DFEEF602889001B2881ED684F -:10350000002DDCD1301CD1E7F8B58568041C80693A -:103510002E1C00280DD07168F2F7F6FDA069F2F7B5 -:1035200017FE06E00021C1603C0070E90000F16078 -:10353000A08D36680138A085F0680028F5D1306884 -:10354000A060A08D01380004000CA08502D0201CD2 -:10355000F9F739F82A4F2A480068002803D00621D5 -:103560006868FAF77CFD686800683C00ACE9000018 -:10357000817800292BD1C178002930D1218E0139E1 -:103580002186FBF715F8A16A081AA062E169884252 -:1035900003D904210220F2F767FCB86800281ED086 -:1035A0001A49208E49680C22521A90423C00E8E9E0 -:1035B000000008D319239B01AF2292015943A06A4E -:1035C000511A88420ED200210C2003F0ACFC0020DE -:1035D000B86007E0012905D1C078172802D1A08E74 -:1035E0000138A0862A1D06CAE0686369F1F73C002D -:1035F00024EA0000DCFCB54201D02D68B4E7A08DC0 -:10360000002803D10548B96900F09EFCF8BD000010 -:10361000FC5A0100CC5C010018570100C460010095 -:103620008907074BCA0F80B5197C002906D0814352 -:103630003C0060EA0000197403D10721152004F052 -:10364000A2FE80BD00007869010080B5011C012048 -:10365000FFF7E9FF80BD80B5011C0220FFF7E3FF03 -:1036600080BDB0B51B4C6068FCF72FFF20680025BB -:1036700040683C009CEA0000002803D0FDF718FCDD -:10368000206845606068FCF7C5FE1448616800F07A -:1036900061FCA07A012805D0022803D020680068C8 -:1036A00000F0DEF801211F2004F0B2FD00211F20F0 -:1036B00004F0AEFD3C00D8EA000002211F2004F017 -:1036C000AAFDA57221682C20405C8968F1F776FC80 -:1036D0006068FCF7E4FE20680562B0BD0000147A63 -:1036E00001003463010004490A68C868926A002A2C -:1036F00001D0096908183C0014EB00007047000075 -:10370000147A0100B0B5134C051CA07A01380228C8 -:1037100019D801211F2004F081FD2068FC23011C21 -:103720002030027B1A400273002D0FD001231A4370 -:103730000273A07A032807D13C0050EB000001205F -:1037400001F0E7FD002801D1FFF797FFB0BD4B6204 -:10375000B0BD022111430173F6E7147A010010B5E0 -:10376000041C0A30F6F743FE00280CD022880A49D0 -:103770000B7A9004C00F002B06D13C008CEB0000AC -:103780001206920E202A00D10120C86010BD002828 -:10379000FCD100222421802004F004FE10BD000092 -:1037A000047A010080B5021C1F21802004F0FAFD7C -:1037B00080BD0000F8B51D4E041C30683C00C8EB0D -:1037C00000001D1C4768201CF1F70AFCFBF787FA74 -:1037D000002804D0281CF2F72AFB002828D12088D2 -:1037E000400525D430680068FEF759F9002803D158 -:1037F000FDF789FAF1F7EDFB3068002540683C00E1 -:1038000004EC0000002803D0FDF764FB306845603D -:1038100020880009000703D104F0C8F86188451822 -:1038200030684561816A0131816220888004C10F5E -:103830000248F8F7CDFFF8BD147A0100B1EB0000A3 -:103840003C0040EC0000B0B50E4C051C6068FCF775 -:10385000F6FD0C48616800F092FB0021242004F082 -:10386000ECFC0022D2438021242004F0B8FC00208C -:10387000E0602072206801682806000EF1F7B0FBB6 -:10388000B0BD3C007CEC0000047A01003463010010 -:1038900010B5041CC068F2F785FC201CF2F7B0FDDF -:1038A00010BD000070B51C4E051CB07A2C1C4034B5 -:1038B000022826D1A08B3189884222D13068416A02 -:1038C000002908D03C00B8EC00002030007BC00785 -:1038D00004D5012001F02FFD002818D160780028C0 -:1038E00009D1306802232030027B0D495208520072 -:1038F0001A43027301E0FF21F53101221F2004F079 -:103900006EFC0320B0723C00F4EC000002E0281CC6 -:10391000FFF7C4FF6078002803D1291C012003F0C1 -:1039200029FB70BD147A010050C30000B0B5041C1F -:103930006034E0790E4D00280AD10220A872286870 -:103940004068002804D10B483C0030ED0000FDF732 -:10395000D0FA2968486004F038F82968C861FFF790 -:10396000E0FE29680969081A03F06FFF002801D0FA -:10397000E079A071B0BD147A0100C1EB0000F8B588 -:10398000041C002604F021F8051C3C006CED00002E -:10399000224800270770A10704D0E107C90F016280 -:1039A000C5610126416B002934D1002E32D0061C9E -:1039B000F9F744FF316B1A4B411AA20712D5DA68A6 -:1039C000002A08DD91421A6802DA14093C00A8EDC9 -:1039D0000000A21806E01409121B03E00A4302D1FA -:1039E0001A6852001A60B7630AE0B26B0132B26320 -:1039F000022A1A6801DD940800E01409121B1A60FB -:103A0000D9603063F56218680849884201D93C00E2 -:103A1000E4ED0000196003E0642801D2642018601E -:103A2000F5F7FCFDF8BD0000606C0100B057010027 -:103A300020A10700FEB5041C0020504D0021686144 -:103A40002069FBF7B3FC071C20690321FBF7AEFCE0 -:103A50003C0020EE0000002803D0807829788842BE -:103A600063D1474D201C1430391C061C2A7802F003 -:103A70005AFA002859D1E068056841480195583044 -:103A80000290FBF76AFF3E4D193500280BD0281C29 -:103A9000FBF73C005CEE000055FF00281ED1311CF6 -:103AA000281CFBF765FF002842D017E0281CFBF715 -:103AB00049FF002806D0391C0298FBF763FF002855 -:103AC00036D00BE0391C0298FBF75CFF00282FD0A2 -:103AD000311C281C3C0098EE0000FBF74CFF00282E -:103AE00029D0301CF6F7ADFC294A1832117C002988 -:103AF00004D0516A002901D000281CD1906A002806 -:103B00003BD01378019D01216D8901202B409B073B -:103B100011D0A36B1E4E3C00D4EE00001D1C7F355F -:103B20009836002D14D0558A002D08D15569AB4226 -:103B30000FDA0020174D01236B610AE029E0F578C8 -:103B4000022D06D1144F55693F68ED19AB4200DADA -:103B50000020236C1D1C7F353C0010EF000010D0AE -:103B6000558A002D03D19569AB420AD208E0F57859 -:103B7000022D06D10B4E95693668AD19AB4200D2C5 -:103B80000021084308D0106A002801D0F1F74BFA51 -:103B90000021201C01F0B9F9FEBD3C004CEF0000F3 -:103BA000EC650100C4670100CC6701003EB5056A01 -:103BB000041CC068F2F734FBE169F2F757FA201CE5 -:103BC0004030C18B0431C1832B6910499879062894 -:103BD0000AD1988801910294009060693C0088EFB6 -:103BE00000001B680168E0680322C0680AE0022840 -:103BF0000BD11020009001910294E068A369C06885 -:103C000000220021F7F70FFB3EBDF2F7A6F9FBE714 -:103C10000000BDEF000080B5D1685069C9683C0064 -:103C2000C4EF0000C160D168C860111C4031CB8B6B -:103C300000891818C8831068002802D0FFF7BCFF5D -:103C400080BD0348FBF7CCF8006AFEF7F5F980BDAC -:103C5000A06A0100F8B5061C0A2430070109A00774 -:103C60003C0000F0000001430F1C0A4D2F6004F0DF -:103C7000FAFEAD682801000FB04205D0013CF4D235 -:103C800001219B20F2F741F92802000A082E01D1F8 -:103C900031050843F8BD600007000122D20580B558 -:103CA00000213C003CF00000042004F0DDFC0F206B -:103CB000FFF7D6FF0F2109040840000C80BD00006B -:103CC00080B50548FDF74AF90448FDF77BF804483C -:103CD000FDF76CF880BD000089340100ED24000080 -:103CE000111C00003C0078F0000080B50248F3F79A -:103CF0002AFC80BD0000D124000080B5F2F753F902 -:103D000080BD80B50021002001F051FE032002F0AB -:103D100046FF80BD0000064880B5C169002906D174 -:103D2000016A002903D13C00B4F00000816B034814 -:103D300000F05EF980BD0000C46901003463010039 -:103D400010B5044C206AFCF7B3FB0348216A00F06D -:103D50004FF910BD1C75010034630100B0B50D4C66 -:103D6000207C002802D001213C00F0F00000FDF78B -:103D700086F900252570A068012803D10020A560E0 -:103D800001F08FF8A078012805D103489838006920 -:103D9000FCF7EFFBA570B0BD00008466010080B5A4 -:103DA0000021012001F009FE80BD3C002CF1000043 -:103DB00038B569460025F8F7B7FE041C01D101208B -:103DC00038BDA068002804D00099A131082004F073 -:103DD00073FA1C21201CF1F7A3F9281CF0E700005E -:103DE000FEB5071C4C233949584344183C0068F180 -:103DF0000000251C4035287A37494876211C30318F -:103E000002910C23C856421C0A73497B884246DA49 -:103E10003248007880073ED500200190F6F7AFFACF -:103E200000282ED0AC210958002901D0E4303C00F4 -:103E3000A4F1000000E0CC30061C4068002825D02A -:103E40000299087B012811D1201C2E302978F6F721 -:103E5000EDF9716803E07218127A824203D9FF31DA -:103E60000906090EF7D1A97001200190231C3E33E9 -:103E70003C00E0F100001A1D301C00970199F8F792 -:103E800058FA002811D0A8788019007A00E00020A4 -:103E9000687068780121FBF7E0FD6060381C01F074 -:103EA00014FE381C01F0A5FBFEBD0299087BFF3013 -:103EB00048733C001CF20000381CFCF719FC03F0AE -:103EC000C3FD061CFBF78EFE41007618687861681A -:103ED000FBF76AFE3118208D3B1C054A03F012FEE9 -:103EE000E5E7000058E30100308007001D75010080 -:103EF000D54E00003C0058F20000031C044880B579 -:103F000002792030034900F030F880BD0000AC7C1D -:103F10000100C4670100031C044880B5C278383032 -:103F2000034900F022F880BD0000AC7C0100C867A6 -:103F30000100031C04483C0094F2000080B5827923 -:103F40005030034900F014F880BD0000AC7C010043 -:103F5000CC670100031C044880B5427968300349EE -:103F600000F006F880BD0000AC7C0100D0670100C5 -:103F700010B5002484800B603C00D0F20000191CB6 -:103F8000514301601906091610220630F1F79FF916 -:103F900010BDB0B5064D0024AC60EC60EC612C6245 -:103FA00002F0F1FC00F00DF8EC622C70B0BD447D25 -:103FB000010080B580210148F1F73C000CF30000BE -:103FC000C7F880BD04660100F8B5074F002400263D -:103FD00018206043C519EE6003F042FD103501342E -:103FE000022C41C5F4DBF8BDB87D0100002303605D -:103FF000044B002900D1191C4160002A3C0048F301 -:10400000000000D11A1C82607047BD75000010B519 -:10401000074C206801302060202803D958215820FF -:10402000F1F79DFF216801200139884010BD605BD8 -:104030000100B0B50D1C041C2168002000293C00C3 -:1040400084F300000AD0A943216007D1A068F1F7EA -:1040500023F8002802D1216829432160B0BD000067 -:10406000B0B50D1C041C2168002029432160A94221 -:1040700007D16068F1F710F8002802D12168A94340 -:104080003C00C0F300002160B0BD1A4BB0B59A6A85 -:1040900000280BD0002A07DBB8242458013CA41ABE -:1040A0000019B030007B02E00E2000E00D205D6AB8 -:1040B000124C002D01D0207800E0205CFF24A834B1 -:1040C000C4403C00FCF300009C60F524C4409C61AB -:1040D000FD24C440DC61FF242934C4405C61FF241A -:1040E0005334C44000200C3311C3002905D0002AEA -:1040F00003DC0221504200F065FBB0BDAC7E010044 -:10410000B85201003C0038F4000010B5134C1348BD -:10411000211CFF3169310EC90EC0211CFF31242240 -:1041200075310F48F1F751F8211CFF313C229931CC -:104130000D48F1F7A6F8FCF7A2FF211CFF31102271 -:10414000D5310948F1F73C0074F4000041F8211C16 -:10415000FF312822E5310748F1F796F810BD00003D -:1041600040630100008007000C80070030800700DA -:1041700080800700A0800700F8B5002859D004F01F -:104180004BF9F8F7B3FB00223C00B0F4000001212A -:10419000132004F07CF92A492948496C0160002168 -:1041A0002948C9434160264C1434616C8160A16C7C -:1041B000C1600020254D022601016E500A194F19D9 -:1041C000503204370ECA013008283C00ECF40000DD -:1041D0000EC7F4DB1422211CCC311E48F1F75AF82B -:1041E0001D4881780909090181700021C170417061 -:1041F000211CE0310A78027049784170211CE831B5 -:1042000030220830F1F746F8211CFF313C0028F538 -:104210000000502219311248F1F73FF88320800046 -:10422000142221181048F1F738F811204001842297 -:1042300021180D48F1F731F8FFF773FF201CF1F753 -:1042400028FDF8BDFFF76DFFFBE7082007003C00E5 -:1042500064F500002C6301004020070000300700D7 -:104260000040070000500700006007001000070032 -:1042700000900700F8B5051C1848C068002825D034 -:10428000164E013674783078271A7919201CF1F708 -:104290003C00A0F500004BF80090291C201CF1F711 -:1042A000B2F8C119201CF1F742F8601A3070701E84 -:1042B000806800280DD05336F4780099201CF1F75F -:1042C000A2F8B178611A4118201CF1F79CF8601A25 -:1042D000B0703C00DCF5000003485C300169C26846 -:1042E00069435118C160F8BD447D0100B0B50C4D63 -:1042F000E868296940187D2109014418201C03F051 -:104300000BFB00280AD003F0CFFB011B2869F1F753 -:104310007DF801303C0018F600000004000CFFF7A7 -:10432000B2FFB0BD0000A07D010070B5104C606808 -:104330008025A84360602068284320600D4E301C13 -:104340001030F3F7C8FC002803D107218520F1F7CE -:104350002AFE084800213C0054F6000080684163B2 -:10436000C06C10307061012030612068A84320606B -:1043700070BD0000F400070000300700247E01003B -:10438000011C0020052980B509D202A35B5C5B00FB -:104390009F440000030303033C0090F60000030069 -:1043A000FFF7CFFC80BD0122920280B500210720DB -:1043B00004F0ABF980BD80B540220021002004F05C -:1043C000A4F903220021002004F09FF980BD70B5FC -:1043D0000E1C051C141C08280ED13C00CCF6000055 -:1043E00000F000FC0E2801D1142000E01020E103B1 -:1043F00000D50138C0060A49C00E887108E0092DB1 -:1044000006D1A00401D5002000E00120F3F7B0F9A7 -:104410003440211C321C281C04F07AF93C0008F7B7 -:10442000000070BD00000080070070B50024132953 -:1044300011D8002801D1084E0825012801D1074EC6 -:10444000092500F078FA002805D0021C311C281C30 -:10445000FFF7C3FF0124201C70BDF8FF07003C00DC -:1044600044F70000FFFF00000122D20280B50021C6 -:10447000072004F053F980BD0F22120407214904DC -:1044800080B5092004F04AF980BD000080B5002104 -:10449000042004F01BFC4021002004F017FC044918 -:1044A0003C0080F700000020886002480969203045 -:1044B000FFF709FE80BD64730100B0B560210020E4 -:1044C00004F007FC114D002400220420295D04F0B3 -:1044D00028F90C2003F09BFB01342406240E052C44 -:1044E000F2D33C00BCF700000F2200210A2004F0A8 -:1044F0001BF96121002004F0EFFB064901208860D0 -:10450000044809692030FFF7CDFDFF202D30B0BDF4 -:10451000A858010064730100F8B5061C1248C67063 -:104520000120FFF73C00F8F70000FDFB0127BF0268 -:10453000041CB843011C012004F0D1FB0320FFF749 -:10454000F2FB051CB843011C032004F0C8FB301C1F -:1045500000F09FF900F057F8211C012004F0BFFB88 -:10456000291C032004F03C0034F80000BBFB0020B1 -:10457000F8BD00006473010080B5002240210020D6 -:1045800004F0D8F880BD000070B5051C0124092096 -:10459000FFF7CCFB0F210904884303218904E204BF -:1045A000052D124E20D202A33C0070F800005B5D86 -:1045B0005B009F44000006090C100300032109045E -:1045C0000CE00121090409E00121490406E0F36837 -:1045D000042B05D902E0F368042B01D8014301E064 -:1045E0001043011C092004F080FB3C00ACF80000E3 -:1045F000201C70BD0024FBE7647301000121C90584 -:10460000002880B502D00A1C002100E0002204200E -:1046100004F096F880BD0000F0B591B0002640216E -:1046200001A8F0F7DDFD2A4FB87901223C00E8F837 -:104630000000520300900021062004F084F860215D -:10464000002004F058FB6121002004F054FB0820F6 -:1046500003F0EFFA00240F20FFF771FB4005050F70 -:10466000A80001A9095801AA013101340C2C3C0011 -:1046700024F900001150F1D30020810001AA515803 -:10468000B14201D90E1C051C01301028F5D30620BB -:10469000FFF758FB0F2149028843690208430121B3 -:1046A00049030143062004F029FB0D488468643463 -:1046B0003C0060F9000008E0201C03F05AF90028D3 -:1046C00003D001219520F1F798FC0F20FFF73DFB67 -:1046D0000004F1D5872003F0B2FA0098B87111B048 -:1046E000F0BD201007000001070010B5174C6169EC -:1046F00000293C009CF9000004D00A21132003F09B -:1047000047FE10BD011C1248012900780CD0112968 -:10471000F7D1052803D101211320F1F771FC20788E -:104720000728EED102210AE0052807D006280AD082 -:104730000728F7D03C00D8F900000828E4D1002071 -:1047400005E001211320F1F75EFC10BD012002F00D -:104750006CFD10BD00007C7801000D4980B5097822 -:10476000032901D100280BD0072901D1002807D047 -:10477000022901D100283C0014FA000003D10529C8 -:1047800009D1002807D00020FCF728FD00221321C2 -:10479000112003F0C1FE80BD7C78010080B50622A7 -:1047A0000821002003F0DEFF80BD0000074880B52F -:1047B0004069002801D1F1F73C0050FA000033FFB6 -:1047C0000549054A0868506148689061012080BD2C -:1047D000000064730100B058010010000700074892 -:1047E00080B54069002801D1F1F71DFF0549054A50 -:1047F000086890614868506101203C008CFA000014 -:1048000080BD000064730100B05801001000070073 -:1048100011B500AB597814480123C056002209187D -:104820000B061B161321132B02DD00AB597007E09A -:10483000002B02DA00AB5A7002E01C1C3C00C8FAE4 -:10484000000000AB5C7000AB1B7818180006001667 -:10485000132802DD00AB197006E0002802DA00AB75 -:104860001A7001E000AB1870009818BD0000647366 -:10487000010038B50C1C154900AB496813253C00F4 -:1048800004FB00000091597809185970197808182C -:10489000187019881048022CC18001D0002C0BD14F -:1048A00000AB1878132800D91D7000AB19780020D0 -:1048B000FFF7EEFD022C01D0012C09D100AB587896 -:1048C0003C0040FB0000132800D95D7000AB597814 -:1048D0000120FFF7E0FD38BD000064730100A0581F -:1048E000010070470000B0B5041C0E28134D04D021 -:1048F0001249A00000194D3945180620FFF73DFA6E -:104900000F493C007CFB0000E02209191039C97BEB -:104910009043490111400143062004F00DFA291C7F -:104920000520094A03F030FF08481F2200191038FB -:10493000C07BC104D204082003F026FFB0BD0000F4 -:10494000B40900003C00B8FB000014450100FF0F53 -:104950000000C05801007047000080B506490028DB -:1049600001D1086880BD012801D1486880BDF1F7F8 -:1049700090FB002080BD7C730100014840687047B7 -:104980000000A05801003C00F4FB00000448012393 -:104990000449C056C95640180004000C7047000076 -:1049A000A0580100A258010001484068704700006B -:1049B00064730100F8B5051C0E1C00F055F9041CC9 -:1049C00000F058F900282CD03C0030FC0000B30067 -:1049D000601E002D1C4E19491A4A06D10B250E2CBB -:1049E00000D1194AD258085608E0012D1CD19A1856 -:1049F0000436081808250E23126DC056071C4743BD -:104A0000FB00DF19124B3F2158433C006CFC0000B7 -:104A1000114BA9400C1C3818C0181440EC40C011B0 -:104A200060431B0AC018801203D1012004E000205B -:104A3000F8BD3F2800DD3F203060A84008408A4391 -:104A40001043F5E7CC590100DC5801003C00A8FCFC -:104A500000007C7301007C5901000606000026005E -:104A60000200034808B5C08800AB1880009808BD54 -:104A70000000A0580100B0B50B4D094C0E206C6031 -:104A8000FFF78DF90949021CC8600106090E3C00B8 -:104A9000E4FC0000133A022A02D91738042800D88F -:104AA0000021081C6C60B0BD041802006000070003 -:104AB000647301000A4898B502781321142A00D3C0 -:104AC00001704278142A00D34170064C6068FFF7E9 -:104AD0003C0020FD0000BDFE009000AB1888E08087 -:104AE00000F075FF98BDA4580100A05801000348CC -:104AF00080B541780120FFF7E6FC80BD0000A65894 -:104B00000100034880B501780020FFF7DCFC80BD80 -:104B100000003C005CFD0000A6580100B0B5054D4A -:104B20000024201CFFF744F90134102C01C5F8D3F0 -:104B3000B0BD0000D4440100044980B58870044928 -:104B400080000958072004F00FF980BD647301004C -:104B5000D05801003C0098FD0000B0B53F24021C75 -:104B6000002A01D108200B23012A01D109200823A2 -:104B7000251C9D40002900D101213F2900D9211C7D -:104B800099400A1C291CFFF77CFCB0BD000091B5C0 -:104B9000124900AB1A783C00D4FD00000878114C93 -:104BA00080180006000E207049785A788918090686 -:104BB000090E13221328617000D92270132900D91D -:104BC0006270084908480639C98881802178002028 -:104BD000FFF782FC617801203C0010FE0000FFF727 -:104BE0007EFC98BD0000A4580100A6580100647323 -:104BF000010070B51D4D041C28780E1C032803D13C -:104C000002211120F1F735FA201C00F04EF800289F -:104C100025D0287801280AD168683C004CFE0000A5 -:104C2000002807D00121112003F0EEFB0120696864 -:104C3000F0F7BDFA6C706E60201CFFF7C1FC041C1D -:104C400000F0D4FE002C02D06868002802D1F6F7EC -:104C5000D9F870BD012028700122211C3C0088FE7B -:104C60000000112003F09FFB70BD02211120F1F71D -:104C700006FA70BD00009C73010080B5012805D1C3 -:104C8000002904D0012901D1F6F7BFF880BD0549FC -:104C90000878032802D00020087080BD03213C0062 -:104CA000C4FE00001120F1F7EDF980BD9C730100F6 -:104CB00001484078704700009C730100011C0139D5 -:104CC00001200E2900D300207047000010B5134CBE -:104CD000207801280ED1606800280DD00121112014 -:104CE0003C0000FF000003F098FB01206168F0F732 -:104CF00067FA00206060207001E003280ED00021D8 -:104D0000112003F08AFBFFF724FCFFF7C0FB0549E5 -:104D1000087B40084000087303202070012010BD6C -:104D200000003C003CFF00009C730100880007006D -:104D300010B50D4C2078032813D1002020700B48AB -:104D4000017B012211430173FFF770FCFFF718FC90 -:104D5000002806D002212170011C0022112003F03E -:104D60002BFB01203C0078FF000010BD00009C736D -:104D700001008800070080B50549002804D0002004 -:104D8000086003F05AFA80BD0120086080BD805A97 -:104D90000100FEB5051C8035041CA8682979066849 -:104DA000201CA03002293C00B4FF00001CD169790E -:104DB000082901D00C2917D101216162A96809686D -:104DC000098B0182A9690191008AC00605D5606836 -:104DD0000088400501D4012000E000200290052059 -:104DE00001A902F0B7F902E03C00F0FF0000002149 -:104DF00061620182A9681A230A89676A181C002F58 -:104E000000D11820101A0881A8680168626A002A77 -:104E100000D11823C9180160A86841C43088083C33 -:104E2000400403D5201CF7F7BCF93C002C0001001E -:104E3000FEBD0021E1613079C00703D4201CF7F7E3 -:104E400091FEF5E7201CF7F743FFF1E7F7B5051CE6 -:104E50000A30061CF5F7A4FA144F041C3988F2F73F -:104E600083FE328878680280728802303C006800D5 -:104E700001000280B18841806988029A201CFAF7FB -:104E8000CEFE0B4D08356880FBF72BFE0121090390 -:104E90000028288801D0884300E00843288004487F -:104EA000002200211430F2F732FE201CFCF73C00F7 -:104EB000A400010085FAFEBD247B010010B5134C4F -:104EC0001149201CFF3069300EC90EC0201CFF3074 -:104ED000242275300E49F0F717FA201CFF303C22CF -:104EE00099300C49F0F76CFA201CFF301022D530B5 -:104EF0003C00E00001000949F0F709FA201CFF30EE -:104F00002822E5300749F0F75EFA10BD0000008066 -:104F10000700406301000C8007003080070080809C -:104F20000700A0800700B0B500283FD021484168A5 -:104F3000214C3C001C0101006160C168E160016915 -:104F40002161806AA0621E491C48096814384164C6 -:104F50001C48251C3C350FC80FC5201C80224C3036 -:104F60001949F0F733FA1422201CCC301749F0F716 -:104F70002DFA38223C0058010100201CE030154970 -:104F8000F0F727FA201CFF30502219301349F0F7B0 -:104F900020FA83208000142220181049F0F719FA13 -:104FA00011204001842220180E49F0F712FAFFF771 -:104FB0008EFFF8F794FB3C0094010100B0BDFFF7B1 -:104FC00089FFB0BD00100700406301000820070002 -:104FD0004020070000300700004007000050070095 -:104FE0000060070010000700009007000C4980B522 -:104FF000012048600A4814383C00D00101000078C4 -:10500000012804D008489438406F002803D00020BD -:1050100000F01FF880BD08680028FBD00348F2F7B5 -:105020007AFE80BD000098660100FFFF000080B599 -:10503000002809D1F2210F2003F03C000C020100EE -:1050400013FA00220F21F12003F0CCFA80BD0120D9 -:10505000F8F76AFE80BD000010B5041C032000F0C4 -:10506000C9F900210F2003F0FFF9FFF765F80B499C -:1050700000204874FBF7E6FA094800683C00480243 -:105080000100002803DC02214042FFF752FC0448E3 -:1050900014300068002802D0201CF2F742FE10BD38 -:1050A000000084660100D47E0100064980B50978BD -:1050B000042905D0052903D0062901D007293C0081 -:1050C0008402010001D1FEF7BDFD80BD74660100C0 -:1050D00010B5094CE06800280BD107482C38008A2D -:1050E000C00704D5002101206268F9F7C9FA012040 -:1050F000E060012010BD0000F46E01008CB5021CC0 -:105100003C00C0020100081C111CFDF728FF0190A3 -:10511000002805D0172000AB18806846FDF7FFF87F -:105120008CBDF1B52E4CAEB0002525632069012859 -:1051300003D101A801F0A1F84EE00126284F267006 -:10514000503F3C00FC020100B869F8F74FF82549D0 -:105150002C3900281DD0E06A01281AD1088A0F1CBA -:10516000800704D5002102206268F9F78FFA388A97 -:10517000000707D5E068012804D1002108206268F3 -:10518000F9F784FA3C00380301000022182182203C -:10519000266303F036FA25E0088A0E1C800704D542 -:1051A000002102206268F9F774FA308A000707D5F7 -:1051B000E068012804D1002108206268F9F769FA43 -:1051C000308A400704D53C0074030100002200210E -:1051D0000420F9F761FA2E98012804D01E950921C0 -:1051E0001BA8FFF797FFE562BD61E5602FB0F0BD3A -:1051F000F46E010080B50720FEF7A0FE00210F200D -:1052000003F044F90C4801783C00B0030100002988 -:105210000FD00221017088380078002804D0074997 -:105220001031487C01304874F2220F20054903F008 -:10523000FCF800220F21F32003F0E9F980BD746629 -:10524000010080841E0010B5041C3C00EC0301002A -:10525000F2210F2003F020F9012C0AD10848084957 -:1052600000681439002805D0C878022802D1F7F761 -:10527000AFFA10BD002048700520FEF765FE10BD96 -:1052800098660100F8B5284E3021351C3C002804F2 -:10529000010060352889895D884203D10020FFF72D -:1052A000F6FEF8BD341C70340121217041188019BC -:1052B0003030298140781D4F183F3870002808D0C1 -:1052C0000021FBF7C2F9002807D12078FFF73C0046 -:1052D000640401009BFFE7E701210F20F0F71AFFAC -:1052E00014480121803081703869FBF755FA20732A -:1052F00000210F2003F0D6F8707A01280ED10E4855 -:105300000068002804D0387802F0DAFA002805D0C6 -:105310003C00A0040100307F60730320207071897D -:1053200005E005202070A888FAF73BFB011C00224D -:105330000F2003F086F8BAE7000004660100E4627B -:10534000010070B5041C02F06CFC364B191CA03136 -:105350000A783C00DC040100102A02D20A79102AE3 -:1053600001D3012500E00025304ECA798036012C9A -:1053700012D00025022C2ED0042C3CD15C6B002CCA -:1053800039D19C6F001B2A4CA04234D9B268986A6C -:10539000824231D03C00180501004D7234E0B06803 -:1053A0009C6A0222A04221D1586B00281ED1002DF8 -:1053B0001CD1487A192820D03468986F6400001BEB -:1053C00074680019FF301C4C3930A04216D248795D -:1053D0008C79001930283C005405010011D31022AB -:1053E0000FE05C6B012C06D1B0689A6A904200D144 -:1053F0004D72002205E09C6F001B124CA04200D3AE -:10540000202206E04A7A192A01D201324A72202269 -:10541000B06030689B6F98423C009005010004D159 -:10542000002A00D148794A7106E0102A04D370603E -:10543000336048798871F6E7CA7170BD0000A46CCA -:105440000100A304000071020000350C00000548B3 -:1054500080B5817B002905D000213C00CC050100EE -:10546000817303490F2001F00FFF80BD74660100B6 -:10547000E9030100F8B5041C02F0E2FB051C384EFC -:10548000201C3749341CA0341022443901282CD068 -:1054900004284ED1371C743609CE26783C00080605 -:1054A0000100C01A202E04D1304EB04201D900268E -:1054B0004E613E1C3F6C002F48D1776C002F45D1C8 -:1054C000B76A002F3DD0776B002F3AD0274FB842F4 -:1054D00037D26078102806D3F06F181A244B3C009E -:1054E00044060100984201D2E270F5664869062838 -:1054F0002FD201302CE02078202801D106234B61E7 -:1055000002232371B36A002B19D04969032916D9E4 -:10551000716B736D594012D0E178102910D3617806 -:105520003C0080060100331C10290CD3D96F691A86 -:10553000134DA94207D2586C002802D0986C00285D -:1055400000D12271F8BD0228FCD12270FAE7486927 -:10555000002801D0013848610A49F06E401802F075 -:10556000B0FA3C00BC0601000028EED00120E0703B -:1055700006482818F066E8E7A46C0100E204000081 -:105580001A06000053070000002D3101005A620284 -:1055900080B541680979C90713D5C16900290DD0C3 -:1055A000897902293C00F80601000AD10821018608 -:1055B000011C38318162021C06480449F9F7FDFCE0 -:1055C00080BDF7F7DCFB80BDF7F723FB80BDB97129 -:1055D0000000A06A010010B50024002803D002F0EA -:1055E000E8FE002817D03C00340701000C4C0120D5 -:1055F000A0722068002141620A490268C9786032BD -:105600009171218901312181006840308183FBF74C -:1056100031FC20680068FCF7A1F90124201C10BDB2 -:10562000147A01000E6101003C00700701007FB593 -:10563000061C1E481D1C438802881C21002090B0B7 -:10564000F0F745FF03900468FF2101312180082015 -:1056500060800620207104206071C001002D00D1FF -:10566000081CE08001A80230311C3C00AC0701009E -:10567000051CFAF75FFA10496846FAF75BFA201C36 -:1056800008306946FAF756FA291C201C1230FAF73E -:1056900051FA10AB9888002201212083D8886083BA -:1056A0001889E081588920826846F9F73C00E807AC -:1056B000010017FF14B070BD0000146E01001261EC -:1056C0000100B0B5041C1848251C0078603580071F -:1056D000002808DAE879002805D0F4F770FF011CEB -:1056E000201C00F078F929882E20005DF2F73C009C -:1056F000240801009FFAE87900280BD1201C4030D3 -:10570000018B22691180418B22695180808B216934 -:10571000C88207E0012805D1206901220188D20250 -:10572000114301806A7AE0680249F2F753FAB0BD8A -:105730003C00600801001D750100D14F000090B5CC -:10574000041C38230C495843431885B000200A49EB -:105750000290181C012203910949049230304278CA -:1057600009880192009101785A6B0C33201CFBF7D9 -:105770007CF83C009C08010005B090BDD4E4010019 -:105780005D4E0000487B010090B585B0031C0020F1 -:1057900002900A49181C0022049260300391C279D9 -:1057A0000188019200915A6ADC682033997B407A23 -:1057B000231CFBF73C00D80801005DF805B090BD44 -:1057C00000000D4F0000074980B5886A002808D105 -:1057D00001208862F0F7AFFC011C03480022F2F7B9 -:1057E000B8FE80BD00007869010041E40000F0B51A -:1057F0009BB0002820D03C0014090100011C08A81F -:10580000FCF7B2FD01201190032010AD2872042096 -:10581000687205A800226946F4F700FF00240026FC -:1058200005A90020F9F7FCFA6946F9F7F9FA0B9097 -:1058300008A8FCF7BBFD01343C0050090100022C14 -:105840002E72F0DB1BB0F0BD000090B5041C4C23A1 -:105850000C495843431885B000200A4902900022A1 -:1058600004923C200391C25C084841880192412087 -:105870000091C15C5A680833201C3C008C0901006F -:10588000FBF702F805B090BD58E30100754F00002A -:105890003C7C0100F8B50E1C224C3821171C051C5D -:1058A000201CEFF775FD231C2533211C243110200B -:1058B0006A46F9F71DF800AB188807213C00C809B3 -:1058C00001001A4A02382084201C20308170C570E3 -:1058D000111C0673477334312163303262630179DE -:1058E000251C103521812060E5601888401A20832E -:1058F000201C28302061201CF9F711F80D483C00CD -:10590000040A01000068002807D00621201CF8F7CF -:1059100047FD1021281CF8F743FD084802210162C9 -:1059200044620121016206480068EFF7D5FCF8BD2A -:105930008C8E0100E4FE0100CC5C01000030070009 -:105940003C00400A01005C5B0100F0B5061C4036DB -:10595000318B041C251C0807800F6035012885B099 -:105960003BD0E879002805D120690180B08B2169FE -:10597000C88207E0012805D1206901220188D202EE -:1059800011433C007C0A0100018020480078800718 -:1059900026D5E879002823D0A06B00281CD0F4F786 -:1059A0002FFE002809D0B8210958002905D0302140 -:1059B000095DB4300818077A00E000270121381C7F -:1059C000FAF786F93C00B80A010004902069043017 -:1059D000391CF4F76CFD0499FAF7D3F902E0201CA6 -:1059E000F7F7F9FB7083708B216900224880094921 -:1059F0000A48049203910290EA7929880192009161 -:105A0000626AE36820343C00F40A0100A17B687AF2 -:105A1000FAF74CFF05B0F0BD1D750100D14F000035 -:105A2000DD2F0100FEB5041C261C012020360029B4 -:105A300002902ED05820005B0007800F012801D172 -:105A4000CC3100E0B43148683C00300B01000D1C43 -:105A5000002824D0201C6030C2790121012A00D006 -:105A60000021271C626D3037002A04D03A1C281C04 -:105A7000F6F7E7FD07E0427A231C683300923A1CF0 -:105A8000281CF6F79AFD029038783C006C0B010058 -:105A90004019007A0121B073FAF726F901E00020DD -:105AA000B0736062B07B0D2801D9F0F7BBFB0298A0 -:105AB000FEBD0000FFB5041C8030251C5E3500785B -:105AC000AE1DAF1F002883B012D1F4F73C00A80B25 -:105AD0000100C7FB002807D006980599029004989A -:105AE0000190A66167610DE00498069902900598FF -:105AF0000190666105E004A903C90290069801902F -:105B00006761A5610622381CEFF78BFC06223C007A -:105B1000E40B0100281C0299EFF786FC0622301CDA -:105B20000199EFF781FC07B0F0BD0000B0B50D1C86 -:105B3000041C052801D3F0F77BFB0249A00008589C -:105B40008560B0BD107B0100F8B5FFF759F9051C61 -:105B50003C00200C0100FEF7E8FF041C281CFFF7A6 -:105B600058F9002842D0691E214D4A00204B1C3DA7 -:105B7000AE5C985C3040D6180123F6565219D256C6 -:105B8000964201DD151C00E0351C184B2A3B595686 -:105B900051183C005C0C0100B14200DB311C0E1CB2 -:105BA000002826D0FEF7BEFF009000AB18781249FF -:105BB0000023C95600AB1522101A5B78001B401851 -:105BC000D21A121B51180022854202DB00AB1A7058 -:105BD00002E0401B3C00980C010000AB18708E42A4 -:105BE00002DB00AB5A7002E0881B00AB58700098D3 -:105BF000FFF78DF801F0FFF8F8BDE6780100657356 -:105C0000010070B5084E064D00240620604380193F -:105C10000622291CEFF73C00D40C010011FC0134D2 -:105C2000052CF5DB70BD00004E470100E67A01004F -:105C3000034880B501680348FEF742FB80BD0000C1 -:105C4000A8790100C4600100034880B501680348D9 -:105C5000FEF74AFB80BD00003C00100D0100A87952 -:105C60000100C460010010B500280AD0064CA169EB -:105C7000002901D1002000E00968F7F738FBA06196 -:105C800010BD002010BDA46E0100F3B5374883B0ED -:105C9000029080790E1C002701903C004C0D010001 -:105CA0003448354A016A039C031C1B69A14201D098 -:105CB000936100E0536131498A6896423FD02D4894 -:105CC0008E60C1680024251C00292D4809D0002EB3 -:105CD0000BD028480124C06A240300283C00880D0A -:105CE000010006D0012704E0002E01D0051CF9E7D1 -:105CF000041C002F06D0FBF71EFB1F48016822483A -:105D0000FEF7FBFA201C28430ED02A1C211C012080 -:105D100002F021FE2A1C211C022002F01CFE3C0085 -:105D2000C40D01002A1C211C032002F017FE002FC5 -:105D300006D1134801681648FEF7CEFAFAF742FD7D -:105D4000039C002C01D101F0E1FF01A903C9887176 -:105D500001F0DCFF0A4C0A4B443CA1692269083B74 -:105D60003C00000E0100411A002A03D01A685118A5 -:105D7000196002E05A6851185960A061266105B0A7 -:105D8000F0BD20100700A46C010010000700B05700 -:105D9000010000106000847301001CB54C23084909 -:105DA00058433C003C0E01004418201C4030417810 -:105DB0006268009101923F210B5D618F0078626CF7 -:105DC000FAF728F8A0851CBD58E30100B0B5164DC0 -:105DD000A969002925D02C1C3034207A002820D035 -:105DE000002381223C00780E0100182002F089FC7B -:105DF000207AFF300006000E207212D10C482821B4 -:105E00002C38095C2172297A002901D1006A00E04E -:105E1000406AA9698002814203D24900814201D2CD -:105E2000A961B0BDA8613C00B40E0100B0BD01F095 -:105E30001DF9B0BDF46E01007FB5051C04206B4652 -:105E40001B180290002628186A4602A9FCF78AFB54 -:105E5000002806D100AB1879042808D01879032847 -:105E600005D000AB187910213C00F00E010008436A -:105E700004B070BD03A9E868F6F7D3FF002805D089 -:105E80000398202108430006000EF1E703A9002033 -:105E9000F6F7C7FF041C01D10220E9E7E86800AB70 -:105EA0002060009860601879A0763C002C0F0100FB -:105EB000A88C6076E8692061688CA082288C2076A6 -:105EC00069690948814200D9081CA060201C02F0C1 -:105ED000A1FDA168002904D0039AA132082002F094 -:105EE00037FB301CC7E70000A08601003C00680FAC -:105EF0000100FEB5061C40780124062850D3C11EBF -:105F00000320EFF75EFB00900E2849D800200AE03E -:105F10004100091889194A798979511801390E29DE -:105F200000D90024013000998842F1DB002C3C00AC -:105F3000A40F010037D00322B11C1B48EFF7A4FACD -:105F40001A4C1C21201CEFF74DFA002528E06900AF -:105F5000491902918A1953791548435493790F18B6 -:105F60007B70D379BB700723D2560192445C0FE05B -:105F70003C00E00F0100201CFEF77BFF002807D04B -:105F80000C4A600080180121103881730199C17397 -:105F900001342406240E07480299405C79784018A1 -:105FA000A042E8D8013500988542D3DBFEBDE86207 -:105FB00001003C001C100100E6780100EB620100CA -:105FC00001680F2901DD0F2101600168002901DA54 -:105FD0000021016070470000F8B5041C1E48221D16 -:105FE00005680092161C231C0F1CCC332A1C201C95 -:105FF0007030A16D3C005810010000F03EF9009691 -:10600000A16D27200140231CE433201C2A1C5C3096 -:1060100000F033F9134800780E2801D2012585409D -:106020001148A1690078294000070BD4480703D51F -:10603000080701D504203C00941001008143880624 -:1060400003D5480601D520208143231CB4332A1CE4 -:10605000201C3030009600F013F9391C201CF0F79A -:1060600047FCF8BD2C7D0100106701001D75010083 -:10607000B0B5F2F727FCFEF73C00D010010009F99B -:106080000F48002545700E480D4C00885B34A082F7 -:10609000F9F723FD2061A08A002804D00121890599 -:1060A000EFF70DFBE18205480138456001F055FE30 -:1060B000021C231C00210020F4F73C000C110100FD -:1060C00049FDB0BD457D0100F467010070B5161CA7 -:1060D0005A89041C04989207920F00250029A27186 -:1060E00009D00521F9F724FB002801D0C07800E091 -:1060F0000120E07100E0E571E560A6603C00481118 -:10610000010070BD0000FEB5051C0E229C30164932 -:10611000EFF7CFF9291C281C8030883100242F1C70 -:106120006037029101902006000E061CF9F70DFE63 -:10613000002803D001984268029901E0EA6D3C0012 -:1061400084110100391C002A0DD0002003E00B5CF3 -:10615000B34202D801309042F9DB08181038C07BF6 -:1061600029199031087301340E2CDFD3FEBD0000D5 -:10617000CC470100FFB581B0141C101C06220D1C79 -:106180003C00C0110100191C0B9E0A9FEFF797F904 -:106190000622391CA018EFF792F9E6602C60102057 -:1061A00028816E600198E86005B0F0BD000070B510 -:1061B000041C002020615820005D0E1C151CC00727 -:1061C000C0173C00FC1101000130E061216B002987 -:1061D00036D11E490968294332D0A168898A00292D -:1061E0002ED000280BD0201C583000F0F3FD0028E2 -:1061F0001BD0816A026A406A0978007806E0144A76 -:106200003C2311783C0038120100507843439A181F -:106210000432002D03D1022901D0032902D16D21BE -:1062200022610855206900280DD08188002901D1FC -:10623000012070BD8079022805D1221C074907483A -:10624000F8F74BFF02E03C0074120100201CEFF74E -:10625000B5F8002070BD00002861010068610100F0 -:10626000A1DA0000A06A010010B500210020F9F7B2 -:1062700039FEC400F9F754FE2418F9F747FE08491F -:1062800020180988084C40183C00B012010006494B -:10629000098840186061F9F746FE054909884018E9 -:1062A0004000A06110BD0261010004610100D479C9 -:1062B0000100A66901001140081C10B51C1C191C26 -:1062C00008311860F1F731FE60603C00EC1201000B -:1062D00010BD0000F8B5061C22480F1C4168914211 -:1062E00003D000218160C1604260C46815E02820AD -:1062F0001D4960434018051C0622311CEFF770F859 -:10630000002807D1A81D391CF9F710FD3C002813FF -:106310000100002801D00120F8BD01342407240F1A -:10632000124880688442E5D1104C2823A0680F4DA4 -:10633000584340190622311CEFF7D3F8A0682823F0 -:106340005843401906302222391CEFF7CAF83C00A6 -:1063500064130100A06801300007000FA060E1682D -:10636000814203D101310807000FE0600020D6E729 -:10637000EC650100A0F4010010B50021032000F03D -:10638000E5FF054CA068002804D101F007FD616815 -:106390003C00A0130100401A606010BD0000D060F6 -:1063A000010002680A6001607047011C0068002853 -:1063B00001D002680A6070470000FEB5141C1D1C65 -:1063C0000022D24301ABF3F782FF01980026284058 -:1063D00001903C00DC1301000025002720601EE036 -:1063E0000121B9400A1C024018D0884301903906A7 -:1063F000090E7019001902910177081CF9F7C6FC03 -:10640000002806D0301C0019013602993030017086 -:1064100004E0281C3C001814010001350299001901 -:106420000172013701980028DDD17019A061656003 -:10643000E662FEBD0000B0B5144D041C287A0128A8 -:1064400002D10420F6F7ADF9211CA86AF5F721FC6A -:10645000002803D104203C0054140100F6F7A4F9ED -:10646000B0BD02202870288C002800D06081688C84 -:10647000002800D0A081A88C002800D0E081E86925 -:1064800001230204120C201C0249FCF719FFB0BDC5 -:10649000F46E0100A17700003C0090140100F8B5F3 -:1064A000194E051CB069002800D13068FFF73BFC8D -:1064B000154F041C503700280BD06068291C7860E9 -:1064C00001203863201CF5F7EAFB002804D10020E6 -:1064D000F8BD0023FB62FAE700233C00CC14010066 -:1064E0002377F86A002801D10120F862387A012860 -:1064F00007D0F86906490204120C281CFCF7E6FED6 -:1065000001E0FB62B3610120E5E70000A46E010039 -:10651000DD02010070B50D1C041C161C3C000815A2 -:106520000100042C1BD21048834207D258000F49A7 -:10653000EFF7FBF8FF30000A013800E000201F35BC -:10654000EA066107090ED20E11437207520D11437C -:106550000006000A0843064AA100505070BD3C00E6 -:106560004415010001218D20EFF7ACFE70BD000045 -:10657000409C000000803801E8600100094A80006A -:106580001058400940010722024307480368002BC6 -:10659000FCDB42600906016001680029FCDB082081 -:1065A0003C008015010070470000E86001003020C9 -:1065B0000700B0B5041C0D1C0749A00008580028AE -:1065C00003D102218D20EFF780FE291C201CF6F755 -:1065D000A8FAB0BD0000E8600100B0B5041C0D1CB5 -:1065E00007493C00BC150100A0000858002803D151 -:1065F00002218D20EFF76CFE291C201CFFF7C4FF41 -:10660000B0BD0000E8600100F8B50D1C161CF7F7DE -:1066100017F9041C2868404F817800293BD1C178C4 -:10662000002958D13C00F8150100F8F7F8F9228E3E -:10663000618E8A4204D0A16A0918E069814210D9AA -:106640003849321C486B01304863206A01302062AF -:10665000386801303860E0686369291CEEF7D8FEBD -:10666000F8BD013212043C0034160100120C2286DF -:10667000A162B868002834D12C480C2300681B1A8A -:106680009A4207D219239B01AF2292015843101A54 -:10669000814226D30120B86001210C2000F07AFE4F -:1066A0001FE001291DD1C0783C0070160100172899 -:1066B0001AD1A08EE18E884214D3E968096809795D -:1066C00009060FD5606A321C01306062E0686369B8 -:1066D000291CEEF7A3FEE868016808310B2000F0E2 -:1066E0005CFEC3E70130A086A08D3C00AC16010023 -:1066F000E18D884204D103210220EFF7F5FDB8E7D0 -:1067000060684560866000686060F8680130F86025 -:10671000A08D411CA1850028ABD10848B969FDF7BF -:1067200061FE221C0221F12002F064F83C00E81610 -:106730000100A1E70000FC5A0100905C010018571D -:106740000100C460010080B5021C0221F02002F0AB -:1067500054F880BD0000002803D102484178C907E1 -:10676000FCD5704700000400070080B500063C001F -:106770002417010001D1F1F771FE80BD80B5F4F757 -:10678000E5FA80BD80B5F6F7EBF880BD0149002041 -:10679000087470477869010080B5C00703D50249C5 -:1067A000012000F01DFC80BD50C300000006000E5B -:1067B0003C0060170100012880B502D1F6F7E1F92D -:1067C00080BD0028FCD1F1F74CFE80BD000080B5F3 -:1067D000F6F7D7F980BD034980B500200874F6F7B5 -:1067E000FEF980BD00007869010080B50006000E4A -:1067F000F1F73C009C17010071FE80BD10B5012827 -:1068000008D0022803D0032801D0EFF7A7FDF6F740 -:10681000E9F910BD01F0F8FA041CFAF75DFD241A3D -:10682000FAF73EFD084900280BD0486A002808D036 -:10683000064884423C00D817010005D2011B012202 -:10684000072001F0F4FEE5E700204861E2E77869FF -:10685000010050C30000094980B5486900280CD0E8 -:10686000086ACA69801A002807DD002048610121F2 -:10687000072001F010FF3C0014180100F6F7B8F9EA -:1068800080BD00007869010080B500F0E7FB80BDA5 -:1068900080B500F03FFC0020F7F7D4FC80BD00007D -:1068A00080B500F037FCFDF76FFCF5F773FD30F0B5 -:1068B00047FB80BD044880B53C0050180100C16A08 -:1068C000006BF2F7DEFF0120F7F789F880BDA46CBA -:1068D000010010B5F3F741F80D4C002804D0012059 -:1068E000E064F7F7B2FC10BD01210120F3F7E9F8ED -:1068F000FDF74DFC606D002803D03C008C180100B2 -:10690000F3F782F8002801D0F5F74AFD0120F2F7ED -:10691000C1FC10BDA46C0100044880B5C16A006BC5 -:10692000F2F7B2FF0120F7F75DF880BDA46C01001B -:1069300080B500F0F5FBF5F733FDFCF73C00C81817 -:10694000010031FDF9F7CBFF0420F2F7A6FC80BD72 -:106950000000034880B5C16A006BF2F798FF80BD64 -:106960000000A46C010080B500F0DDFB0020F7F70B -:106970003CF830F0EEFA80BD000080B500213C000C -:10698000041901000120FFF719FA0120F2F788FC31 -:1069900080BD000080B500F0C9FBFCF707FD0121B8 -:1069A0000120FFF70BFA0420F2F77AFC80BD00000B -:1069B00080B500220021002000F08AFB80BD00008D -:1069C0003C0040190100034880B5826A012104207F -:1069D00000F081FB80BDD479010080B50022002148 -:1069E000032000F078FB80BD0000034880B5826A78 -:1069F0000121042000F06FFB80BDD479010080B537 -:106A000000223C007C1901000021032000F066FBFD -:106A100080BD0000064880B5816842690069511850 -:106A2000814203D90121012000F058FB80BD000004 -:106A3000D4790100064880B58288816800695118C0 -:106A4000814203D93C00B81901000121022000F065 -:106A500048FB80BD0000D479010010B5084C207BB4 -:106A6000216AF9F79CFAA1694218A0682169801887 -:106A7000884203D90121022000F033FB10BDD479F4 -:106A8000010080B500223C00F41901000021002023 -:106A900000F02AFB80BD00000006000E012880B532 -:106AA00002D1F6F78FF880BD0028FCD1F1F7FAFC8F -:106AB00080BD000080B5F6F785F880BD80B5000682 -:106AC000000EF1F729FD80BD3C00301A0100B0B581 -:106AD00002250228104C0BD1FBF747FC002801D1FE -:106AE000FEF74FFF2570A1680C48FDF7A8FCB0BD6C -:106AF00003280DD108487D231C380069DB0058436A -:106B0000191C40184108022000F03C006C1A0100DA -:106B100091FA2570B0BDF8F731F9B0BD7869010080 -:106B20003463010010B5054CE068002801D1EFF78F -:106B300039FC0220207000F0AFFA10BD7869010026 -:106B4000034880B5826A0121042000F03C00A81AA5 -:106B50000100D3FA80BDD479010080B50022002164 -:106B6000032000F0CAFA80BD000080B50022002199 -:106B7000002000F0C2FA80BD0000034880B54269E1 -:106B80000121012000F0B9FA80BDD47901003C0058 -:106B9000E41A0100064880B58288002A02D001214B -:106BA000022002E000220021002000F0A9FA80BDAE -:106BB000D479010010B5064C207B216AF9F7FEF963 -:106BC000A16942180121022000F09AFA10BD0000CC -:106BD0003C00201B0100D479010080B50022002177 -:106BE000002000F090FA80BD000038B5FAF741FEB1 -:106BF0000020F0F780F8009000AB1C885D88F8F763 -:106C00003CF9002C02D0FDF79EFA02E00120F6F7D5 -:106C10000AFF3C005C1B0100291C201CFCF7B8FC8F -:106C2000002C02D0F5F7E0FB02E0002000F0DCF9D8 -:106C30000320002C00D102200006000EF2F74EFBCC -:106C400038BD0000034880B5826A0121042000F0AD -:106C50005DFA80BD3C00981B0100D479010080B52D -:106C600030F09BF980BD80B500220021032000F0A8 -:106C700050FA80BD0000034880B54269012101201F -:106C800000F047FA80BDD4790100044880B58288BD -:106C9000002A03D001213C00D41B0100022000F097 -:106CA0003BFA80BDD479010010B5064C207B216AE7 -:106CB000F9F790F9A16942180121022000F02CFA9D -:106CC00010BD0000D479010080B5FCF793FB0121D1 -:106CD0000120FFF797F804203C00101C0100F2F798 -:106CE00006FB80BD000080B52FF06BFB00280AD0AA -:106CF0000120F2F7FCFAFAF72AFC002802D104205E -:106D0000F6F75DF880BD03211620EFF732FB80BD5A -:106D10000000024880B50068EEF73C004C1C010002 -:106D2000C5FB80BDD4790100034880B542690121CB -:106D3000012000F0F7F980BDD479010080B530F072 -:106D400035F980BDB0B5184CAA20005D042819D1D2 -:106D50000125E562256301F093F8A0663C00881CDC -:106D6000010001F0FCFDF2F72EFE00280ED00220FB -:106D7000F2F7C3FAA56001F086F864306060FAF7B4 -:106D80008AFD01210120FFF746F8B0BD0120F2F78E -:106D9000B4FA0020A06000210120FFF73CF83C007D -:106DA000C41C0100F2F766FE0028F1D0FAF776FD68 -:106DB000B0BD0000A46C010080B50020EFF7D6FE46 -:106DC00080BD000080B50120EFF7D0FE80BD00003F -:106DD000AC21095C024A09028918C0318160704700 -:106DE0003C00001D01007075010080B5012804D130 -:106DF00003C90968EEF764FB80BD01211420EFF799 -:106E0000C4FA80BD0000002802D1024840687047E3 -:106E10004068704700005875010010B50024F8F76D -:106E20001CFB3C003C1D0100002804D04030807A4F -:106E3000052800D10124201C10BD000004480021B9 -:106E4000406801E0016340680028FBD17047000002 -:106E500058750100B0B5041C0D1CF7F7A5F84034B7 -:106E6000E572B0BD3C00781D0100F8B5071CF8F7CD -:106E7000FAFA041C04D005211420EFF78CFA28E05C -:106E80000025144928024618301C443006221249B5 -:106E9000EEF72DFB002802D1AC208555341C0135BE -:106EA000032DEED3002C3C00B41D010014D0391C7E -:106EB000201CF8F72BF80949002020601839486891 -:106EC0006060002800D004604C60CA68002A03D0CB -:106ED0000121201CEEF7FEFA201CF8BD70750100A0 -:106EE0005846010080B5F8F73C00F01D0100C1FADA -:106EF000002804D106211420EFF753FA80BDF5F7DE -:106F000016FC80BD000080B5F8F7B3FA80BD10B55F -:106F1000094C2188022903D11420EFF742FA04E03A -:106F2000A3688A009850481C20803C002C1E010059 -:106F3000208801380004000C10BD000058750100C5 -:106F40000B1C111C084A80B51288904206D2DA68E0 -:106F5000C0001218142001F0BBFB80BD03211420D7 -:106F6000EFF722FA80BD0000587501003C00681E52 -:106F70000100084A80B51288904206D2C968C00054 -:106F80000918142001F0DBFB80BD04211420EFF769 -:106F90000EFA80BD0000587501000149C8607047B5 -:106FA00000005875010080B506224430EEF73C0021 -:106FB000A41E0100ABFA002801D1012080BD0020F1 -:106FC00080BD00001CB5144C2069002823D0207817 -:106FD0000A2801D000F0FCF8002060610F484079D9 -:106FE000A070002801D0012815D1FDF7EDFE019019 -:106FF0003C00E01E0100FDF782FE009000AB187916 -:107000001978401A187158795978401A58710198AE -:10701000F2F789FE0520207000F0BFF91CBD7C78D6 -:1070200001000C5A010008B5044A009014320020F7 -:10703000024B3C001C1F01000249F1F77DF908BD1D -:107040002C750100B1A80000B0B5002806D00128B9 -:1070500006D0022807D10C4C012507E00B4C04E0B8 -:107060000A4C2A3C01E0084CB634002500F02CFF05 -:107070000749896E3C00581F01000919091AA142ED -:1070800000D900212A1C162001F031FBB0BD71028D -:1070900000000C050000A46C01008CB500AB8E2133 -:1070A0001980FCF738F901906846FBF7A6FA8CBD09 -:1070B0000000BFB5134A3C00941F010001910D1C54 -:1070C000117C8843041C2143081C1074A0070BD5B5 -:1070D0000E4800900120029000F0FCFE0C49401880 -:1070E00003906846F9F76AFFE0070CD5F1F72CFD2D -:1070F000002803D0074885423C00D01F010000D281 -:107100000190064800906846F9F709FFBFBD78690D -:10711000010081EA000010270000A086010075EA46 -:10712000000010B50A4C606900280ED10120606192 -:10713000A1680748FDF7CBF900213C000C200100B5 -:10714000A068F9F7D1FB01220720044901F0D8FA21 -:1071500010BD00007869010034630100983A000016 -:1071600010B50C1C111C064A002B107003D000280F -:1071700002D1F9F7F5FD10BD201CF9F73C004820BD -:10718000010001FE10BDA0790100B0B50A4C051C3C -:10719000E36A201F0133E3620088002906D0A1685A -:1071A00089182161054A00F0FCFE01E000F0CFFEE5 -:1071B0002577B0BD0000D479010055E300003C0004 -:1071C00084200100011C034880B54088FFF7ECFED5 -:1071D00080BD0000987C0100034880B5C168183864 -:1071E0008088FFF7E1FE80BD707C010080B5002142 -:1071F000162001F0BFFA0121162001F0BBFA80BD74 -:107200003C00C020010010B50B4C20780A2810D09B -:10721000012060610A21132001F0AFFA0A2060709A -:107220002070FDF73CFB0120FDF7E9FB0020FAF799 -:10723000C4F910BD00007C78010010B50C4C002092 -:107240000B493C00FC2001002063E062503988615A -:107250002070084838210C38007A08558121182000 -:1072600001F08EFA2069012802D10020F5F73EFBDB -:1072700010BD0000F46E0100B0B51C4C00252C229E -:10728000011D201C3C00382101009AB0EEF739FAAC -:1072900018492C31081C007A8A69002A13D1022867 -:1072A00003D1A068002820D004E000281DD1606828 -:1072B00000281AD0800288610E4869462438006888 -:1072C000EFF7CBFB11E03C00742101000022022803 -:1072D00003D1A068002809D104E0002808D1606823 -:1072E000002803D18A61FFF7B1FF01E080028861C5 -:1072F000281C1AB0B0BD0000C86E0100F8B50C49DA -:10730000022048600B4900053C00B02101000860E4 -:107310000B4FB868F9687C68451A2E1C04E0A06819 -:107320006168EEF709F92468013DF8D27C60F868DD -:107330008019F860F8BD402007000010070044E302 -:107340000100F8B51F4E041C30693C00EC2101001F -:107350000121F9F799FA1D49600040181038817B26 -:107360001B4A5172C07B10741A4F1B4D0E2C0AD150 -:1073700001220221082001F0F3FB0320FF2141310B -:107380003986142108E00222012108203C0028222D -:10739000010001F0E8FB1249022039861021A97191 -:1073A000E8711048114A00191038C07B002803D03A -:1073B00001215173107301E0002050730021201C43 -:1073C000FDF7E5FD3069F9F708FBF8BD00003C006A -:1073D00064220100407C0100764601000C80070019 -:1073E0003080070000800700FF0100005C570100AB -:1073F000D080070010B5154C144A217800201832AF -:1074000005291DD006291BD0072901D0082906D13E -:107410003C00A022010091680520102900DB062015 -:1074200020700120A178002861700BD00020FAF7AD -:10743000DCF800216078F4F73CFA0A221E211320C0 -:1074400001F07FF910BDD16907201029E8DB082081 -:10745000E6E73C00DC2201007C780100B0B50D1CA1 -:10746000011C041C44310020F6F740FA3034002D92 -:1074700007D00EC80EC408C8103808C4F4F7C4F901 -:10748000B0BD1ECC1EC0B0BDF8B5081C111CF4F771 -:1074900087FA084C3C00182301000025084E084FCD -:1074A00006E0306B002803D035632068EEF755F80E -:1074B00038680028F5D0F8BD00005C5B0100E4FEF0 -:1074C0000100845A010080B50006000E00F007F8A4 -:1074D00080BD80B50A1C3C0054230100232101F02B -:1074E0002BFA80BDB0B50D1C041C122803D301215A -:1074F0002320EEF79BFF0649A000085804E012C8BD -:10750000281CEEF72EF8201C0028F8D1B0BD000092 -:10751000685B0100F8B50E1C3C00902301000025BB -:10752000041C122803D301212320EEF782FF134805 -:10753000A700C45908E02068B04203D103212320EA -:10754000EEF777FF251C6468002CF4D10C4A043A4E -:107550001068002801D0416811603C00CC23010074 -:10756000002804D102212320EEF766FFF8BD002198 -:1075700041600660002D01D06860F7E70149C851FD -:10758000F4E70000685B010070B50E1C051C0024C8 -:10759000122803D301212320EEF74EFF3C000824DC -:1075A00001000D4BAA00985804E00168B14204D0D4 -:1075B000041C40680028F8D170BD0028FCD0002CC5 -:1075C000416801D1995000E061600021034A0160E7 -:1075D000043A11684160106070BD685B01003C00B6 -:1075E00044240100F3B581B0002817D00178FF29A9 -:1075F00014D04578441902348027013C2678013D97 -:10760000BE43301CF8F782FC012181400298014002 -:1076100002D03E43301C2070002DEED1FEBD000094 -:107620003C0080240100104B10B55968411A0F2905 -:107630000DDC0E22D243914209DB1A1C926800290C -:1076400001DD002A03DA00290DDA002A0BDC0433FD -:1076500003C3FDF710FD041CFDF713FD002802D045 -:10766000201C3C00BC240100FFF792FE10BD00006E -:1076700018630100F8B5644C071C6078A178884253 -:107680000FD1081CFDF7CEF8E060042060700A22DC -:107690001E21132001F070F800216078F4F724F91E -:1076A000F8BD04283C00F82401006ED1584EFDF7C7 -:1076B000BCF800907178041C0020052921D201A398 -:1076C0005B5C5B009F440B0F141A02005148514948 -:1076D000604341187D20C000EEF787F811E0872055 -:1076E00060434D4902E03C003425010045204D49EE -:1076F0006043401808E04C48CD2109016043401A1E -:1077000002E0462060438238060648480721007997 -:107710003616081A001900906846FEF75FFD381CFF -:10772000FDF72EFB0099424A3C00702501004900FC -:10773000515A48433949041C8878002801D001284F -:107740001ED13549002803D13A480578042002E0CB -:10775000384845780C203049C968491B0818009002 -:107760006846FEF73EFD009833493C00AC25010019 -:1077700040002031085A2A494443C868A84201D928 -:10778000012500E000252E4821184000EEF7A2F860 -:10779000041C002D03D0FDF7C3FA02E03DE0FDF725 -:1077A000F3FA002F02D125480E3801E03C00E8250D -:1077B000010023480A380168611ACB1C01DB032948 -:1077C00000DD04600168A14201D2013104E0A14260 -:1077D00003D9002901D0013901600168381CFDF787 -:1077E000C0FB104C0A2060700A221320A1683C00E4 -:1077F0002426010000F0D2FF606800F0F7FA0028AC -:1078000000D15FE700F0BAFB1149002340180E4990 -:1078100060601E39C856B042F3D00E70311C002093 -:10782000FFF784FE4EE7FFF715FE4BE77C7801007B -:107830003C006026010060D7FFFF608F0100540B01 -:107840000000C90900008EFEFFFF0C5A0100125A09 -:10785000010020A1070040420F0030B50C4BFE2470 -:107860001B880440C0075D076D0FDB08C00F9C42FA -:107870000BD83C009C260100A218043A9A4207D378 -:107880001A1B895C0122AA40114001D00221084341 -:1078900030BD0000FA60010080B5002803D0011C53 -:1078A0001420F5F7FFFA80BDB0B5041CF7F708FD0A -:1078B000134D00283C00D82601001DD1A00716D585 -:1078C00002208443114801222A624068002813D014 -:1078D000F2F751F900280FD10B48E430807A0128E3 -:1078E00000D00022111C0120F2F7A5F904E000F0FD -:1078F0004EFBE861F2F73C00142701006BF9A96A1E -:10790000002902D0201CEDF75CFEB0BD606C0100C8 -:10791000B05701002048B0B58168012904D1007832 -:10792000002801D1FDF772FD1B4D803D2C1C7034E9 -:1079300020780338052818D23C005027010001A305 -:107940001B5C5B009F44041527272700FBF7F1FF12 -:10795000607B011CFF3161730028F7D10420207087 -:10796000A889F8F7DAF9011C00220F2000F025FFA2 -:10797000B0BDEFF7CEFF6A21495B3C008C270100C8 -:1079800088420BD0E889F8F7CBF9011C00230022CC -:107990000F2000F0F7FF07202070B0BDFDF73AFE82 -:1079A000B0BD000084660100F0B585B0041C038002 -:1079B000180C60800D1C5178107809023C00C82713 -:1079C00001004840A080D178907809024840E080CA -:1079D0005179107909024840208168461A491422D9 -:1079E000EDF7E3FE00230020D907C90F8C464200C3 -:1079F0005607760F6146891949006E5C49193C00AB -:107A00000428010049786F4609024E4081007958E8 -:107A10000F4F4900615A01304E403106360A760058 -:107A2000C90D795AF61901277F02F6193688714077 -:107A3000A65A8919A1520528DCDB2089C018013318 -:107A40003C0040280100082B2081D2DB05B0F0BDAE -:107A50000000D8560100D8520100F0B5051C0C1CDE -:107A60001E1C002089B04100535A013006AF7B52E2 -:107A70000528F8DB108900AB3A498019588468461C -:107A800018223C007C280100EDF798FE0020410000 -:107A90000A195278635C6F46120253408200BA584A -:107AA00006AF5200BA5A314F013053401A061B0A32 -:107AB0005B00D20DBA5ADB1901277F02DB191B8844 -:107AC0005A4006AB3C00B82801005B5AD21806ABFE -:107AD0005A520628DEDB617B207B00AB090248405E -:107AE000598C48404108C0034840198B40181883FE -:107AF000E17BA07B09024840198B48404108C00344 -:107B00004840598B40183C00F4280100588302205B -:107B1000410006AA8A18203AD28B01305308D203BA -:107B20005A4006AB5B5AD21806AB5A520628EFDB16 -:107B3000300A28707004400E202108436870AE702F -:107B40006178207800AB09023C00302901004840F0 -:107B5000598C4840C005000EE8700020410006AA7C -:107B6000535A4A190130137106AB595A090A517117 -:107B70000628F3DB09B0F0BD0000EC560100D85236 -:107B80000100F0B54668051C60303C006C2901001E -:107B900085B0049060E068680C2107690020EEF76A -:107BA0002DFE7061018904390904090C0181706995 -:107BB000006840180421EEF721FEF0617069202171 -:107BC000046804980422407B800108433C00A829F3 -:107BD0000100E07028694089A07028694089000A86 -:107BE000207029690C31A018EDF79BFD2078202129 -:107BF0004006400E0843607028690A300188013150 -:107C00000904090C018004D128690C3001683C008A -:107C1000E4290100013101603562617920790902AE -:107C20004018A17909044018E17909064318009326 -:107C3000A0782178090240180404240C1020EEF7E3 -:107C400013FFB06128693A1C0168009B01A80A3241 -:107C50003C00202A0100FFF7C8FE2869231C0168A8 -:107C6000B06901AAFFF711FF3668002E9CD10349C5 -:107C700004486A68F7F763FB05B0F0BD0000FD6BD0 -:107C80000000A06A0100013807494000095C002992 -:107C900006D03C005C2A010004491C39085C00281D -:107CA00001D001207047002070470000E6780100F5 -:107CB000FEB5051C002002901348171C00680C1C20 -:107CC0008678301CFDF728FA002801D10298FEBD05 -:107CD000002D08D13C00982A0100206800AB1871E3 -:107CE00060685871A068987103203880291C301C86 -:107CF00001AA00F00EF8002DECD000AB197921603C -:107D0000597961609979A1600C213980E2E7F86BBB -:107D10000100F8B5151C3C00D42A0100421E0138B0 -:107D200047003F181F483E18002906D001240322AF -:107D3000311C281CEDF704FD32E06878012400288E -:107D400005D02978081801380E2800D90024002C05 -:107D500026D0002A07D12A213C00102B010012480E -:107D6000EDF79FFC1C211148EDF79BFC0F48032207 -:107D7000291C301CEDF7E7FC0C487178C05DB27827 -:107D800000290ED0002A0CD001224318084D06E02D -:107D90004100491910398A73B7783C004C2B010017 -:107DA0000130CF738342F6D8FEF760F8201CF8BD8F -:107DB000EB620100CA78010070B5051C1C48002365 -:107DC000C056431C32D1A87AF8F70CF900260028D7 -:107DD000184C08D0E869E16B00290BD13C00882BD6 -:107DE000010066630121E163A66306E0A869E16B17 -:107DF000002902D06663A663E663A16B0131A1632B -:107E0000820301D50E4A1043E26B002A00D04042A3 -:107E1000626B1018606308290BD1002801DD3C005B -:107E2000C42B0100012003E0002803DA0020C04336 -:107E3000EFF762FE6663A66370BD0000F46B01009D -:107E4000846A01000000FEFF0C21054A41438918A5 -:107E500080B58978002901D1F3F7F2FA80BD0000DE -:107E60003C00002C0100607B010080B5011C00205B -:107E7000F7F703FA80BD80B5011C0120F7F7FDF983 -:107E800080BD02498968401AC00F70470000000198 -:107E9000070002498968081AC017013070470001BD -:107EA00007003C003C2C010005494A6801231A43A5 -:107EB0004A608A681018886048689843486070472C -:107EC0000001070010B5154B00210A019A58002A3D -:107ED00017D101240A019C50D21810730023537348 -:107EE000022301283C00782C01000E4A05D1C8006D -:107EF0008018103002789A4304E0C80080181030CF -:107F000002781A43027002E001310829E0DB0829F7 -:107F100004D101219920EEF7FEFA03490804000C70 -:107F200010BDAC7301003C00B42C010000600700E0 -:107F3000FFFF0000F7B5194F194E0C1CC100C919FD -:107F4000B268103181B0013A4A600B781D1C0D22D5 -:107F500093430B70012282403A73124B0001039A43 -:107F6000C0188260104A101C3C00F02C0100203028 -:107F7000877900AB1F70C0795870B0680330002358 -:107F8000261A01D5041C01234C600D70002B04D06F -:107F9000201CFFF78AFF0028FAD000AB1888D08495 -:107FA000FFBD00600700000107003C002C2D010010 -:107FB000AC7301000010070030B50020C0430B4C2B -:107FC000094B0022D10009190D7CED0707D549693D -:107FD0009D68491B00D50021814200D2081C013256 -:107FE000082AEFDB30BD0000000107003C00682DCF -:107FF000010000600700B0B508280BD2084D04014D -:108000002959002904D000F04AF800202851B0BDB9 -:10801000022100E003219920EEF789FAB0BDAC738C -:108020000100034900014018417B082211433C0034 -:10803000A42D010041737047AC73010001488068B2 -:10804000704700000001070070B50B4E094D00227B -:10805000D0008419207CC00707D56069FFF726FF90 -:10806000002802D0A868323060610132082AEFDBB4 -:108070003C00E02D010070BD000000010700006021 -:108080000700024AC00080180174704700000060B9 -:1080900007000449C0004118087C0823021C9A43C9 -:1080A0000A74704700000060070070B5082817D2F6 -:1080B0000E493C001C2E01008A680E4D013AC10099 -:1080C00049194A610C4B9A7910310C780D26B4434A -:1080D0000C700121814029739A71094A07490001F6 -:1080E0008018416070BD05219920EEF729FA70BD16 -:1080F000000107003C00582E01000060070020101E -:108100000700D1750000AC730100F8B59E461A4B0C -:1081100094469B681A4CC2001219013B5361151C0E -:10812000184CA6792A1C103213780D27BB43137004 -:108130000127124B87403C00942E01001F73A6714B -:10814000124E0001801963464360734683601378C2 -:10815000407BA679012718433843143500AB1E70C5 -:10816000E4795C70064B9B680333CC1A00D5191C6C -:108170002960107000AB18883C00D02E0100034C21 -:10818000203CE084F8BD00010700006007002010DB -:108190000700AC73010000B5011CFFF75EFF421839 -:1081A000101CFFF792FE0028FAD000BD0000891ACB -:1081B000401A9918884201D801203C000C2F010078 -:1081C0007047002070470000F8B50F1C041C002801 -:1081D00001D1EEF7EFF9211C0120FFF719FA412038 -:1081E000005D002801D1002504E0022801D1052509 -:1081F00000E00125E068EEF729FBA66B3C00482F64 -:108200000100002E10D0002F06D02F20025D206A22 -:10821000416B281CEDF744FAA069002801D0EEF765 -:1082200046FC206AEEF743FC201CEEF740FC301CB5 -:10823000F8BDB0B5041CC06B002809D020693C0013 -:10824000842F0100008BEEF755F9002803D0211C84 -:108250000620FFF7E3F9084D201CA96DFFF7BAFFD0 -:10826000002807D0E8680130E860286A01382862F1 -:10827000FCF778F8B0BD0000C469010010B5064CE9 -:108280003C00C02F0100E16DFFF7A7FF002804D0DC -:10829000E0690138E061FCF768F810BD0000C469CE -:1082A00001000C230C495843401810B54468A168DC -:1082B000002902D0201CEDF7F3F9E06B002808D06C -:1082C00020693C00FC2F0100008BEEF719F9002813 -:1082D00002D0201CF9F726F910BD0000607B0100D8 -:1082E000F8B522494868800006D40120400708609C -:1082F0004A69920000D448601D4F787EC306012071 -:10830000021CDB0E3C00383001009A400A6079699B -:108310008C688C602107890F09D0210704D50B21B7 -:108320009E20EEF728F900E078640C208443124880 -:108330003D68065D6C682C3406E0A0680068A060AB -:10834000E968281CEDF73C0074300100B2F9013EE9 -:10835000F6D2A068806800280DD0408900280AD095 -:10836000786C002807D178698068800703D10C21D8 -:108370009E20EEF703F9F8BD00100700CC6D010058 -:10838000B4440100094980B53C00B0300100087ECA -:10839000C206D20E01209040074A106000200A69F0 -:1083A000C04390600868243106C90369EDF786F977 -:1083B00080BDCC6D010000100700F8B54468061CB4 -:1083C0002C3420680D1C806800903C00EC300100CB -:1083D000002800D0C5602068006820604068002840 -:1083E00003D00A219E20EEF7CFF820684560281CB4 -:1083F00002E000224260081CC1680029F9D17168BE -:1084000060270B1C40339C469B78CA7E3C00283179 -:1084100001005B011207120F3B401A438B8FFF27AD -:108420003F041B043B401A4390231A4342606346B7 -:108430009A780132D207D20F9A70896BC160216895 -:1084400088600098002801D00098C5600A4F3C0061 -:1084500064310100BD79A06900280CD00022A2611E -:1084600074686069EFF72EFFE06A616940684860F0 -:10847000616901200860BD71F8BD0000201007008F -:10848000FEB544680F1C01942C34201C123002905D -:108490003C00A03101002CE00C20EEF700FB051C95 -:1084A000606800281DD10298002100900020EEF79E -:1084B0000EFA061C00980421EEF709FA011C019837 -:1084C000C07E0007000FD03070600198C07E0007AA -:1084D000000F3C00DC310100F0304860301CEEF74A -:1084E00019F96560E66001E0206805606068286051 -:1084F000256000206860A860381CFF300006000E70 -:10850000391C071C0029CAD16068A060FEBD0000AC -:10851000FFB5051C3C0018320100081C002681B084 -:10852000F4F72FFE041C02D06068FF2801D1062654 -:1085300028E0211C20310A78012A01D1032621E0FC -:10854000012725600F7011C51D48083D686103981B -:108550006A46E86004983C005432010028611A48D9 -:10856000A8611A48E8611A4828621A486862207EA1 -:10857000A168EDF7B3FE002806D1607EE1686A4687 -:10858000EDF7ACFE002807D00426311C9E20EEF744 -:108590000DF8301C05B0F0BD3C00903201006A4679 -:1085A0000F491D20EDF79DFE01210D48490701608F -:1085B000227E3B1CD206D20E93404360627ED206DE -:1085C000D20E974047604160E6E731330100D9326F -:1085D000010091310100DD3001003C00CC3201008E -:1085E000FD320100713301000010070042682C3297 -:1085F000506843680B6081684B890B818368002158 -:10860000D9604160816000685060002070470000C0 -:1086100070B54268FF269187106B0C043C0008334C -:108620000100051C3604344043685968B1432143B6 -:1086300059600068A842F7D1106B516940684860E2 -:1086400051690120086070BD0000B0B54368081C86 -:1086500059629A6200250AE04581C4682A1C3C00E0 -:1086600044330100002C03D19A7E1207120F1032FE -:108670004260201C0028F2D118694160196901206C -:10868000086002480068EDF737F8B0BD5C5B010098 -:1086900001200549400780B58860044801680D2025 -:1086A0003C0080330100FEF7E6FF80BD00000010B3 -:1086B0000700C4600100F8B50E4F0C4E002448209E -:1086C0006043C5194821281CEDF77BF81C20604346 -:1086D0008119281D1C22EDF7FEF81C23E8560549D8 -:1086E000FBF73C00BC330100CDF80134012CE9D389 -:1086F000F8BD0000B8440100CC6D01001532010046 -:10870000FFB5051C0A30061C81B0F2F7DDF8184FE2 -:10871000041C3988EFF7BCFC3288786802807288C4 -:10872000023002803C00F8330100B188124E4180D3 -:10873000288808364005002805DA6988039A201C35 -:10874000F7F701FD00E000207080F8F75EFC0121E2 -:1087500009030028308801D0884300E008433080B6 -:108760000548002200213C00343401001430EFF7AA -:1087700065FC201CF9F774F805B0F0BDB07A010073 -:1087800010B50E4C6068F8F795F92068006A00286B -:1087900013D1F8F7BFFC002808D021680120086237 -:1087A0001F210022832000F03C00703401009FF95B -:1087B00002E06068F8F721FAFFF797FC216808618A -:1087C00010BD147A0100FEB51B4E0F1C1D1C141C9D -:1087D000B060081CF7F72BFFB08034733562381C8B -:1087E00001AA02A9F7F725FF00AB3C00AC34010059 -:1087F000187A012818D118790B2808D1307F242342 -:108800000F49584340188068ECF788FFFEBD00AB65 -:1088100018790A2808D1F7F739FD071C291C201CF4 -:10882000F7F716FD3818B080307F24233C00E83479 -:1088300001000449584340184068ECF772FFE8E72C -:108840000000D479010094460100B0B5FFF753FC55 -:10885000041CFBF7FCFA0C4D29680969091B0C1A6A -:1088600002211F2000F08BF8142C06DD02223C00B0 -:1088700024350100211C1F2000F050F80120B0BD5C -:1088800029680120896A0029F9D00020B0BD0000C4 -:10889000147A0100F8B51A4D071CAE790121194C64 -:1088A00000202268002A14D1AE71A268D06806CADE -:1088B0003C0060350100ECF73CFFAE790021134A23 -:1088C000506901305061A0688068A0606268904281 -:1088D00006D10120206003E001300C340328E3DBE3 -:1088E000002F08D100290AD00A484068002806D085 -:1088F000FAF73C009C350100F5FF03E0012F03D09F -:10890000002901D1AE71CEE7AE71F8BD201007008D -:1089100018D90100A8600100705D010080B5012335 -:10892000F5F77CF880BD000080B50023F5F776F8F8 -:1089300080BD00003C00D8350100F8B5134B002481 -:108940001B8898421BD2114BC000C01845680668AE -:108950002868002817D10E4FA8684368B34209D190 -:10896000C3688B4206D10368934201D0531C01D1E6 -:108970000124476080683C00143601006B68834224 -:10898000EED103E001218020EDF740FE201CF8BD70 -:1089900056570100845D010029E30000F8B5174F28 -:1089A0000A1CBE79164D00236C6807E021689142CD -:1089B00002D12179814204D03C0050360100231CB1 -:1089C000E468002CF5D117E0002C15D0002B0DD158 -:1089D000E3680D486B600088002B02D1FFF7D1FBE4 -:1089E00006E00A4A9968FFF7F6FB01E0E068D86004 -:1089F0002868E0602C6002E001213C008C36010018 -:108A0000FFF7A4FFBE71F8BD201007007C5D0100D8 -:108A10002C7401002138010070B5094EB579F9F7C1 -:108A2000AFFE041C09D0201CEDF70CFB05498A6839 -:108A300080188860086801300860B5713C00C8364D -:108A40000100201C70BD20100700A860010009482B -:108A500080B54068021C0BE00169002907D0824202 -:108A600004D0816805480088FFF7E5FA80BDC0683A -:108A70000028F1D180BD7C5D01002C7401003C0018 -:108A800004370100054880B54268002A04D0044834 -:108A900000889168FFF7D2FA80BD00007C5D01007C -:108AA0002C74010005480168002904D0C068002822 -:108AB00001D00120704700207047000018D9010044 -:108AC0003C004037010080B5F6F7D1FA80BD131C99 -:108AD0000D4AB0B5128890420FD203290DD20A4A2E -:108AE000C00014580A4DAC4207D113500C2359430F -:108AF000084BC91880184160B0BD02218020EDF7F5 -:108B000094FD3C007C370100B0BD000056570100C9 -:108B1000845D010009A0000018D90100F8B50F1C00 -:108B20001E1C151C041C111CFFF74AFF331C2A1CB9 -:108B3000391C201CF4F78AFFF8BD0000F7B59446F5 -:108B4000FF2921D03C00B837010015480088814238 -:108B500021D2144A154EC8008518B4796868026895 -:108B6000002A03D1031D0CCB9A4211D043689A68A6 -:108B700042600E4A176901371761B4710022026022 -:108B80000098D86060463C00F43701001860197402 -:108B900028685860FEBDB471062100E007218020DE -:108BA000EDF74CFDF6E7000056570100845D01002B -:108BB00020100700A8600100B0B5144D6C68002CAF -:108BC00001D0844204D00C213C00303801008020C8 -:108BD000EDF737FDB0BDFFF7B8FAA168401A0D49AF -:108BE000884203DA10218020EDF72BFD21792268DD -:108BF0000120FFF7ACFFE3686B60002B05D007484E -:108C0000064A00889968FFF7FEFA3C006C380100BC -:108C10002868E0602C60B0BD7C5D010018FCFFFF9F -:108C2000213801002C740100B0B5154C0820211C1E -:108C300080310870134A4104116013480068134DD5 -:108C40006B69184001D1102000E000203C00A838DA -:108C50000100A8235B5D1843231C40331873516047 -:108C600020788008800020700020FFF712FBFFF7BB -:108C700072FA643028660138A06120780321084325 -:108C80002070B0BD000000900700001007003C00FD -:108C9000E438010010000700A46C010038B50A4C4C -:108CA000211C20318A7900AB1A70C979074D59709F -:108CB0006978884203D1F8F713FCFF20687000AB95 -:108CC0001888E08438BD0000001007004C7B0100CC -:108CD0003C0020390100F8B50B1C061C041D7F3335 -:108CE00014D033685D18356023881F180623FF569B -:108CF000EB1B336023881818817120880130000431 -:108D0000000C2080904201D300202080101C31688C -:108D1000ECF73C005C3901006DFEF8BD0E490A7CA1 -:108D200083781A430A74427883789A430B7C93437E -:108D30000B748A7C43781A438A748A7C03789A433A -:108D40008A74027843781A434B7C1A434A744A7CEB -:108D5000C07882433C00983901004A747047100083 -:108D60000700B0B5064D00242006000EEDF7F7F819 -:108D7000A100695808710134042CF5DBB0BD107BEB -:108D800001000B480C497D234269DB00002AC86BB7 -:108D900007D0C0181A013C00D43901009042C863C2 -:108DA00001D90748C8637047FF38F538C86398424F -:108DB000F9D2CB6370470000F4680100447D0100E4 -:108DC0007017000070B50D1C041C161CFBF7F6FA9A -:108DD000B0432843011C201C3C00103A010000F065 -:108DE000CCFA70BD000080B50B4A002909D00229D9 -:108DF0000FD1011C0848D2783830FFF778FF0649B8 -:108E000006E0011C044812792030FFF770FF034987 -:108E1000086080BD0000AC7C01003C004C3A0100C1 -:108E2000C8670100C467010080B50B4A002909D05A -:108E300002290FD1011C084852796830FFF75AFF08 -:108E4000064906E0011C044892795030FFF752FFB2 -:108E50000349086080BD0000AC7C01003C00883AFA -:108E60000100D0670100CC67010008B50421009122 -:108E7000817E4368032906D1011C0C3101206A461A -:108E8000ECF79AFC08BD1968C160FBE7000010B55B -:108E9000031C0020084C0021CA00121992783C00E3 -:108EA000C43A01009A4203D1C8000019406810BDBD -:108EB0000131090609160629F1DB10BDCC5A010063 -:108EC000F8B50F1C161C0025FEF78EF9041C0AD0FD -:108ED0004A20005D052806D1381CF1F781FE0028E4 -:108EE0003C00003B010001D001253460281CF8BD86 -:108EF000000070B50D1C161C0024FEF778F9002840 -:108F00000BD04A21095C052907D10169002904D148 -:108F10003060F1F704FD01242860201C70BDF8B515 -:108F2000061C3C003C3B010000250C1C081CF1F712 -:108F30005DFE002801D0002105E0201CF1F774FE41 -:108F4000002814D00121301CF4F780FB0090002889 -:108F50000DD0084F01250622311C381CECF7C2FC4D -:108F60000622211C3C00783B0100B818ECF7BDFC40 -:108F70000098F860281CF8BD0000707C01000021FA -:108F8000002806D04278072A03D1C079012800D1F1 -:108F90000121081C7047F8B5051C0027164EF1F793 -:108FA00028FE002807D03C00B43B0100F1F7C0FBCD -:108FB000002810D10024F1F7BBFC06E0F1F702FE17 -:108FC000002808D00124F1F799FD011C0622301C6D -:108FD000ECF78EFC0127002F0DD0211C281CF4F784 -:108FE0003BFB011C054806223C00F03B0100063813 -:108FF000C160291CECF77FFC0120F8BD0020FCE7D4 -:109000000000767C0100F0B5071C006802210468AE -:10901000786987B00140002500290591744E12D06F -:1090200022880121130502D4C0073C002C3C01001A -:10903000C11701316F480029006801D0013004E0F8 -:109040001106890E2D2901D1033030602088800758 -:1090500067D17869C00764D503AA04A9201CF7F773 -:109060004BFB00AB187C002807D0187C3C00683C08 -:109070000100022858D1187B4007400F042853D81C -:1090800020790599C007C01701300290002902D14C -:109090000298002848D10599002904D020880005AD -:1090A00001D400203060C020EDF7CBFD051C3C0052 -:1090B000A43C0100201C0A300690FEF7ADF8061C07 -:1090C000281C08302388021D111DDB0506D5069BD0 -:1090D0000360201C10301060201D0EE0231D136063 -:1090E0002288920505D5221C10320260069B0B6077 -:1090F0003C00E03C010004E0069B0360201C1030B3 -:1091000008602869F1F743FC002808D0012812D034 -:10911000022858D100AB187C002854D112E000ABD3 -:10912000187C02280BD1002E4DD04B20805D0228E8 -:1091300049D13C001C3D010007E063E000AB187C16 -:10914000002802D1381CFEF71BFF2088410430485C -:1091500011D5002E52D000AB197C002926D00299DF -:10916000002902D0B06A007800E0007801281DD004 -:10917000032843D13C00583D01001AE000AB197CA4 -:10918000022916D1197B042913D0197B0C2910D080 -:109190002249096800290CD0002E0AD00299002922 -:1091A00002D0B06A007800E00078012829D00328B6 -:1091B00027D02822391C3C00943D0100281C88300F -:1091C000ECF70AFC00AB197C281C80300171197B7C -:1091D00041716C606E611BE00599002914D0114843 -:1091E000846C002C10D00022002E04D04036B07ABF -:1091F000052800D1012200923C00D03D0100F87A00 -:10920000BA7A2969C307DB0F0698ECF700FB281C24 -:10921000EDF707FD0025281C07B0F0BD0000C46A6B -:1092200001006861010028610100C469010080B586 -:109230000220FFF770F880BD00003C000C3E0100EA -:10924000B0B51D4D012817D0A22806D0A32803D100 -:1092500001211520FFF708FCB0BD002901D11748F6 -:1092600002E07D20C000484300230122011C286049 -:109270001520FFF7A7FCB0BD012904D03C00483EF3 -:1092800001000229FAD100F02AF8B0BD6C68F5F7A8 -:10929000DEFCFEF7A8FF6860002C09D029680A23CD -:1092A0005943001B884203D901211520EDF717FA15 -:1092B000012215202968FFF7A6FBB0BD00003C0085 -:1092C000843E0100047901000087930301200449D2 -:1092D000400380B5086003211520EDF703FA80BD37 -:1092E00000100700074880B5BE210173017A1022E3 -:1092F000114301720023022215200349FFF768FC85 -:109300003C00C03E010080BD000000030700809FBC -:10931000D50080B5002803D00A1C1521A22002E048 -:1093200000221521A320FFF766FC80BD000010B5C8 -:1093300000F019F80A48BE210173037A1022934302 -:1093400001243C00FC3E0100234303720173017AB7 -:109350009143202211430172022215200249FFF796 -:109360005BFB10BD00030700809FD50080B5022184 -:109370001520FFF785FB0448BE210173017A1122F5 -:10938000914301723C00383F010080BD00000003A2 -:109390000700F8B5061C051C60360027446822E06B -:1093A00008210020EDF741FB6061018904390904BF -:1093B000090C01816069006840180421EDF735FB54 -:1093C000E0616069717B3C00743F010000688901C5 -:1093D000C17029690C310322ECF7BAFA28690C3004 -:1093E0000168013101602562A7612468002CDAD18F -:1093F000024903486A68F6F7B3F8F8BDFD6B000050 -:10940000A06A010080B500073C00B03F01000009E0 -:109410000902090A084302490860FFF720FF80BDDE -:1094200000006000070008001400C8000000E80306 -:10943000000010001400C8000000E80300001C0039 -:109440001400C8000000E80300003C00EC3F0100ED -:109450002401070032000000E8030000400601007C -:109460000600000007000000416E62697E64616FC3 -:109470006F00000052656C6561736520365F375F71 -:109480003135204275696C6420323A353C00284001 -:1094900001003239382053657020303420323030AA -:1094A000392031373A31333A3230202848573D3469 -:1094B0003A332C4254434F455829000000003200F3 -:1094C0001C00102030405060FFFFFFFFFFFF3C00FA -:1094D00064400100000000000100000001000000E5 -:1094E00000000000E8037000000000000100000020 -:1094F0000000000002000000D0073800000000005B -:109500000100000001000000040000007C151500AF -:109510003C00A0400100000000000100000001002C -:1095200000000B00000070171E0001000000010089 -:109530000000000000000C000000282316000100BD -:109540000000010000000000000012000000F82AE6 -:109550000B003C00DC4001000000000001000000A6 -:109560000100000016000000E02E120001000000C3 -:1095700001000000000000001800000050460E002E -:1095800001000000010000000000000024000000B5 -:10959000F05508003C0018410100010000000000E7 -:1095A0000000010000002C000000C05D0E00010062 -:1095B0000000010000000000000030000000E88012 -:1095C0000400010000000000000001000000420053 -:1095D0000000A08C0A003C00544101000100000082 -:1095E00001000000000000004800000080BB0A00ED -:1095F0000100000001000000000000006000000009 -:10960000F0D20A000100000001000000000000008C -:109610006C000000C00090003C0090410100C000C0 -:109620009000C00090001400100014001000C00052 -:1096300090001400100014001000C00090001400EE -:109640001000C0009000140010001400100014005E -:109650001000C0009000600048003C00CC410100B8 -:109660006000480014001000140010006000480062 -:1096700014001000140010006000480014001000D6 -:1096800060004800140010001400100014001000C6 -:10969000020004010B020C03120416053C000842F0 -:1096A00001001806000E000E2407000E2C083009D9 -:1096B000000E000E000E420A000E480B000E000EB7 -:1096C000000E000E000E600C000E000E6C0D00006F -:1096D00000000000000000000080C0FFFFFF3C0011 -:1096E00044420100B6FFFFFFD3FFFFFFC9FFFFFFAA -:1096F000FFFFFF7F000000000000000000000000EE -:1097000000000000000000000000000051B0000058 -:109710000C00000051B000000C00000059AF000028 -:109720003C008042010000000000A5AF00000000E6 -:1097300000004DAF00000600000000000000000027 -:10974000000045B00000060000000000000000001E -:109750000000D5AF000000000000ADB00000000028 -:1097600000003C00BC42010095DB0000000000004E -:1097700095DB00000000000099B000000C00000024 -:1097800000000000000000000000000000000000D9 -:1097900000000000000000000000000000000000C9 -:1097A000000000003C00F8420100000000002D17FE -:1097B00001003517010021170100D99C000049174D -:1097C00001003D170100D19C0000D19C00001D1A32 -:1097D0000100D19C0000011A0100311A0100251A74 -:1097E00001003D1701003C0034430100811A0100D3 -:1097F000D19C000079170100D99C00005D17010081 -:10980000A11701009517010081170100211801001F -:10981000F5170100000008000C000000100008000F -:1098200008000000010000003C007043010002003D -:109830000000040000000800000010000000191CD7 -:1098400001008941000089410000854100008541F7 -:1098500000008541000085410000894100008541EC -:10986000000085410000351B01003C00AC430100B5 -:109870009D1B0100011C010089410000894100007D -:109880008941000085410000651801002918010088 -:1098900039180100BD180100894100004D18010070 -:1098A000A518010085410000011901003C00E843B2 -:1098B0000100D9180100ED180100151901008941B6 -:1098C0000000894100008941000085410000894174 -:1098D000000089410000691C010089410000711CE1 -:1098E00001008941000089410000FDDB00003C00CF -:1098F000244401001D7C000000008000F5DA000017 -:1099000014008100FDDD000008008200C5DD0000BC -:109910003800830045DC00001000840099DC000062 -:109920000C00860039DC00001000880011DE000009 -:109930003C006044010010008A0035DD00000C008E -:109940008C00ADDF00001C008E00C9DE0000380076 -:109950008F00EDDC00003800900075DF00000C0087 -:1099600091008DDC00000C009300B9DD00000C00BC -:1099700094003C009C44010000080808100C0C0CEA -:10998000080C080C080C0808080814080814003013 -:109990000001010200000000AD300100153001009F -:1099A00020300700303007000607020300000000E7 -:1099B000000000003C00D8440100FFFFFF00FFFF53 -:1099C000FF00FFFFFF000000000080C90200943F7D -:1099D0000300E08B5A00053A8500C8F20600F84CF7 -:1099E000560020A73D00B74A0000B74A000000001B -:1099F0000000000000003C001445010001010102CC -:109A00000202030303040404050600002D7C000089 -:109A10000000FF00FD9500000800FF00ED9700002A -:109A200008008200CD9500000C0083004D960000D8 -:109A30000C0085002D7C00003C005045010000001A -:109A4000FF002D7C00000000FF002D7C00000000C6 -:109A5000FF003D9600000C008900D9970000080027 -:109A60008A00919500000800FF002D7C0000000096 -:109A7000FF002D7C00000000FF003C008C45010031 -:109A8000F997000008008D002D7C00000000FF0009 -:109A90002D7C00000000FF00C997000030009000FE -:109AA0001195000018009100159600000800920022 -:109AB000599500003C009300299600003C00C845E1 -:109AC000010008009400A19500000800950081970E -:109AD00000000C0096006D97000010009800000038 -:109AE00000000000FF00000000000000FF00000870 -:109AF00008080808000000100800000800103C00DA -:109B000004460100080C0C0C0C1C0C0C0800000096 -:109B10000D8B0000F58A0000E98A0000018B00002F -:109B200014080C0C100C0000B1980000800000001C -:109B300019990000810000003D7C000080000000B9 -:109B40003C00404601003D99000082000000099958 -:109B50000000830000003D7C000085000000000044 -:109B6000000000000102020104040808813780F3AC -:109B7000AAAA03000000AAAA030000F86DA96DA913 -:109B80006EA93C007C4601006EA86EA86EA86FA767 -:109B90006FA76FA76FA66FA670A670A570A4000030 -:109BA000B51B0100C91B0100E11B0100E59C000081 -:109BB000A51B0100E59C0000891B0100D59C00004D -:109BC000D59C00003C00B8460100D11A0100E51AFE -:109BD0000100051B0100251B0100B11A0100E59CD5 -:109BE00000009D1A0100D59C0000C11A01008919CE -:109BF0000100A9190100C9190100F1190100791921 -:109C00000100E59C00003C00F446010065190100DC -:109C1000D59C0000D59C0000D59C0000D59C000080 -:109C2000D59C0000D59C0000D59C0000551C01006F -:109C3000451C0100451C0100D59C0000D59C00007E -:109C4000D59C0000D59C00003C0030470100D59C0D -:109C5000000055190100E59C00004119010031196F -:109C60000100D59C000002050A00000002040A0061 -:109C70000000C5200000212100002521000039211D -:109C8000000049210000552100003C006C47010004 -:109C900061210000ED2100000D22000021220000C2 -:109CA0003D22000049220000C5220000E122000000 -:109CB000F5220000E91F0000E91F0000E91F000075 -:109CC000E91F0000E91F0000112300003C00A84725 -:109CD00001001D23000089230000A5230000B923F3 -:109CE0000000112000001D2000006D2000008D20CC -:109CF0000000B92000000001020303050606080960 -:109D000008090909C480CA8080808080D0803C0016 -:109D1000E4470100D6D9DCDFE2808080E5E880807E -:109D20008080EBEEF1F4F7FAFD0001000200030081 -:109D30000400050006000700080009000A000B00E7 -:109D40000C000E00100011001300160018001B007C -:109D50003C00204801001E00220026002B0030009D -:109D600036003C0044004C0055005F006B0078005A -:109D700086009700A900BE00D500EF00FF7F0C0011 -:109D8000060002000000FEFFFCFFFBFFFAFFF9FFE8 -:109D9000F8FF3C005C480100F7FFF6FFF5FFF4FF19 -:109DA000F3FFF2FFF1FFF0FFEFFFEEFFEDFFECFF3F -:109DB000EBFFEAFFE9FFE8FFE7FFE6FFE5FFE4FF6F -:109DC000E3FFE2FFE1FFE0FFDFFFDEFFDDFFDCFF9F -:109DD000DCFF00003C00984801000000000000008B -:109DE0000000B17C4100115A40E2B27C4100055AAA -:109DF00040E2AF7C4100F95940E2B07C4100ED59AE -:109E000040E2246701000E0000E35C6701000E00E1 -:109E100000E30A6101003C00D4480100010000E3B6 -:109E20000E610100010000E3326701000E0000E353 -:109E30006A6701000E0000E30B610100010000E30E -:109E40000F610100010000E3406701000E0000E324 -:109E5000786701000E0000E33C00104901000C612E -:109E60000100010000E310610100010000E34E6702 -:109E700001000E0000E3866701000E0000E30D61A3 -:109E80000100010000E311610100010000E3C0488E -:109E900001000400000AE04801003C004C490100B8 -:109EA0000400000A004901000400000A20490100E2 -:109EB0000400000A18670100040000E2287501018F -:109EC0007DA940E22C750100040000E2207501002C -:109ED000040000E244750100040000E23C008849EF -:109EE0000100F0590100040000E200000000000041 -:109EF00000000000000000000000247501000400C4 -:109F000000E2B87C0100040000E28DA9000001001D -:109F100000DA1D750100010000E2C46701003C0089 -:109F2000C4490100040000E200000000000000003D -:109F3000215900000E0000D9C8670100040000E2AA -:109F4000CC670100040000E2D0670100040000E2D9 -:109F500065D90000040000DAA5D90000040000DA89 -:109F60003C00004A010001590000010000DA32679C -:109F700001000E0000E36A6701000E0000E31159C2 -:109F80000000010000DA0000000000000000B048FE -:109F900001000200000AA04801000200000A404936 -:109FA00001003C003C4A01000500000A684901002C -:109FB0000900000A6C570100040000E2386101004A -:109FC000040000E20000000000000000AC6E010090 -:109FD000040000E2B06E0100040000E270570100CE -:109FE000040000E23C00784A0100E8590100080042 -:109FF00000E3DC5801144DFD40E32C59011439FDF8 -:10A0000040E3C05801000E0000E300000000000023 -:10A0100000000000000000000000647341003D2EBD -:10A0200044E27C5901143C00B44A01009D2F44E3F2 -:10A030005C5701000E0000E2792E0400010000DBF5 -:10A04000A0580100020000E3A2580100020000E352 -:10A05000A05701000E0000E3D1880100010000DAE2 -:10A060001D890100040000DA3C00F04A01009588D7 -:10A070000100040000DB312F04000E0000D9C52EC2 -:10A0800004000E0000D9686C010115D540E2C057EC -:10A090000100080000E3C8570100340000E39C6C95 -:10A0A0000100080000E3B05801033C002C4B010004 -:10A0B000E9D440E2BC580100040000E29DA3000086 -:10A0C000600000D970790100040000E27879010095 -:10A0D000040000E27C5A0100040000E25D1C000064 -:10A0E000110000D9246E0100040000E23C00684B1E -:10A0F000010018580105D5D540E3FC5701001400B4 -:10A1000000E3048E0103E5D540E3005B0100040099 -:10A1100000E2185B0100400000E2D4670100040087 -:10A1200000E28D370000040000DBBD3600003C007B -:10A13000A44B0100040000DBFC600100020000E20F -:10A14000907D0100040000E270690100040000E25B -:10A150000000000000000000B04901001A00000AE1 -:10A16000904B01000600000AA458810005FD40E361 -:10A170003C00E04B0100804A01000C00000A0C5A30 -:10A180008101252D44E3E04A01000300000A186321 -:10A190004100FDBB40E208570100010000E29C487D -:10A1A0000100040000E20000000000000000F84A86 -:10A1B00001003C001C4C01000200000ACC740100AC -:10A1C000030000E365734100A92E44E2F659010142 -:10A1D000D12C44E3084B01000400000A07000000F2 -:10A1E0000100006A284B01000200000A887D01007E -:10A1F000040000E23C00584C010000750104656F4A -:10A2000040E3BC7801000E0000E3384B010004007D -:10A21000000A0457010004000062584B01000200CC -:10A22000000A804B01000200000A684B0100030095 -:10A23000000A8C7D01003C00944C0100040000E207 -:10A24000392D0400040000DB947D0100040000E2CD -:10A2500000000000000000000000000000000000FE -:10A260000000000000000000104001000000006439 -:10A27000A84C01000400000A3C00D04C0100000082 -:10A28000000000000000C84C01000100000AD04C92 -:10A2900001000200000A0000000000000000E77A50 -:10A2A0000100010000E2E87A0100010000E2000084 -:10A2B000000000000000ED7A01003C000C4D0100A0 -:10A2C000010000E2EE7A0100010000E2000000005F -:10A2D00000000000F37A0100010000E2F47A0100BE -:10A2E000010000E20000000000000000F97A010017 -:10A2F000010000E2FA7A0100010000E23C00484D52 -:10A300000100E84C01000300000A004D01000300B9 -:10A31000000A184D01000300000A304D010003003F -:10A32000000A905C0100040000E2945C010004005B -:10A3300000E2985C0100040000E29C5C01003C002B -:10A34000844D0100040000E2A05C0100040000E272 -:10A35000A45C0100040000E2A85C0100040000E22B -:10A36000AC5C0100040000E2B05C0100040000E20B -:10A37000B45C0100040000E2B85C0100040000E2EB -:10A380003C00C04D0100BC5C0100040000E2C05C68 -:10A390000100040000E2C45C0100040000E2905CE3 -:10A3A0000100380000E3684D01000E00000AD84D9E -:10A3B0000100020000FA1261810131D540E306611B -:10A3C00001003C00FC4D0100020000E20B610100B5 -:10A3D000010000E30F610100010000E308610100DA -:10A3E000020000E2507B0100040000E200000000D7 -:10A3F00000000000384E01000E0000649C5701016F -:10A40000918841E33C00384E01006E41676FE26580 -:10A4100060696F20414200000000F04D010009001A -:10A42000000A484E01000100000AE84D0100010049 -:10A43000000A0000000000000000484D0100040078 -:10A44000000A286101013C00744E0100BDD540E2C4 -:10A450006961410085D540E230610100040000E2FD -:10A4600034610100040000E23C610100040000E2EC -:10A4700034610100040000E244610100040000E2D4 -:10A48000000000000400006A3C00B04E0100704E65 -:10A4900001000800000A18610100020000E21C61CE -:10A4A0000100040000E220610100020000E22461DA -:10A4B0000100040000E2B84E01000200000AC84E8C -:10A4C00001000200000AD84E01003C00EC4E0100E1 -:10A4D0000200000A96480100060000E3E062010065 -:10A4E000040000E2000000000400006A9B7D0100FF -:10A4F000010000629C7D010002000062607C01009E -:10A50000040000E2010000000400006A3C00284F43 -:10A5100001002D6301000100006200000000000046 -:10A520000000000000000000000049D500000E00FF -:10A5300000D9F467010002000062467D01000100BD -:10A5400000629C7C0100040000E2987C01003C0059 -:10A55000644F010002000062A07C0100060000625E -:10A56000587C010002000062647C01000600006269 -:10A570005A7C0100020000626A7C01000600006251 -:10A58000010000000400006AE4620100040000E22F -:10A590003C00A04F0100E8620100030000E200005F -:10A5A00000000400006A000000000400006A0100CE -:10A5B00000000400006A000000000400006A0000BF -:10A5C00000000400006A000000000400006A0000AF -:10A5D00000003C00DC4F01000400006A00000000A5 -:10A5E0000400006A000000000400006A000000008F -:10A5F0000400006A000000000400006A000000007F -:10A600000400006A000000000400006A000000006E -:10A610000400006A3C001850010000000000040023 -:10A62000006A000000000400006A0000000004004E -:10A63000006A000000000400006A0000000004003E -:10A64000006AF04E01002A00000A01000000040028 -:10A65000006A752A01003C00545001000C0000DB28 -:10A66000020000000400006A752A01000C0000DBF3 -:10A67000030000000400006A752A01000C0000DBE2 -:10A68000040000000400006A752A01000C0000DBD1 -:10A69000050000000400006A3C0090500100752A8B -:10A6A00001000C0000DB060000000400006A752AAF -:10A6B00001000C0000DB070000000400006A752A9E -:10A6C00001000C0000DB080000000400006A752A8D -:10A6D00001000C0000DB090000003C00CC50010030 -:10A6E0000400006A752A01000C0000DB0A0000006B -:10A6F0000400006A752A01000C0000DB0B0000005A -:10A700000400006A752A01000C0000DB0C00000048 -:10A710000400006A752A01000C0000DB3C000851AF -:10A7200001000D0000000400006A752A01000C0001 -:10A7300000DB0E0000000400006A752A01000C0016 -:10A7400000DB485001000200000A585001000200DE -:10A75000000A685001000200000A785001003C0025 -:10A76000445101000200000A885001000200000A62 -:10A77000985001000200000AA85001000200000ADF -:10A78000B85001000200000AC85001000200000A8F -:10A79000D85001000200000AE85001000200000A3F -:10A7A0003C0080510100F85001000200000A0851ED -:10A7B00001000200000A185101000200000A405086 -:10A7C00001000100000AE84E01000100000A00003B -:10A7D0000000000000000000000000000000B04E7B -:10A7E00001003C00BC5101000100000A0000000013 -:10A7F00000000000285101000E00000A00000000C7 -:10A800000000000000000000000000000000000048 -:10A810000000000000000000000000000000000038 -:10A82000000000003C00F8510100985101000C00AC -:10A83000000A504E01000400000AE04C0100010033 -:10A84000000A0000000000000000C04B01001D00D5 -:10A85000000AF85101000500000A248007000000EA -:10A8600000001D8007003C00345201000800000079 -:10A870002A8007005C00000024800700020000001E -:10A880001D800700200000002A8007006A000000E9 -:10A8900024800700020000001D8007002000000047 -:10A8A0002A8007006A0000003C007052010000018D -:10A8B00002030405060708090A0B0C0D0E0F101100 -:10A8C00012131415161718191A1B1C1D1E1F0163CD -:10A8D0000000A1630000C5630000B1620000C56311 -:10A8E0000000216300004D6300003C00AC520100F9 -:10A8F000A163000001630000A163000006050505D7 -:10A9000005050505050505050505030506070809EF -:10A910000A0A0C0D0E0F0F1011000000A5C684F8D6 -:10A9200099EE8DF60DFFBDD6B1DE54913C00E85294 -:10A93000010050600302A9CE7D5619E762B5E64DCD -:10A940009AEC458F9D1F408987FA15EFEBB2C98EAF -:10A950000BFBEC4167B3FD5FEA45BF23F75396E479 -:10A960005B9BC2751CE1AE3D6A4C5A6C417E3C005B -:10A970002453010002F54F835C68F45134D108F987 -:10A9800093E273AB53623F2A0C08529565465E9D75 -:10A990002830A1370F0AB52F090E36249B1B3DDF47 -:10A9A00026CD694ECD7F9FEA1B129E1D74582E3412 -:10A9B0003C00605301002D36B2DCEEB4FB5BF6A424 -:10A9C0004D7661B7CE7D7B523EDD715E9713F5A665 -:10A9D00068B900002CC160401FE3C879EDB6BED451 -:10A9E000468DD9674B72DE94D498E8B04A856BBB2C -:10A9F0002AC53C009C530100E54F16EDC586D79A49 -:10AA000055669411CF8A10E9060481FEF0A04478BF -:10AA1000BA25E34BF3A2FE5DC0808A05AD3FBC21A1 -:10AA2000487004F1DF63C17775AF634230201AE5E7 -:10AA30000EFD6DBF3C00D85301004C811418352623 -:10AA40002FC3E1BEA235CC88392E5793F25582FC34 -:10AA5000477AACC8E7BA2B3295E6A0C09819D19EC8 -:10AA60007FA366447E54AB3B830BCA8C29C7D36B50 -:10AA70003C2879A7E2BC3C00145401001D1676ADB9 -:10AA80003BDB56644E741E14DB920A0C6C48E4B82F -:10AA90005D9F6EBDEF43A6C4A839A43137D38BF2B6 -:10AAA00032D5438B596EB7DA8C0164B1D29CE04940 -:10AAB000B4D8FAAC07F325CF3C0050540100AFCA1C -:10AAC0008EF4E9471810D56F88F06F4A725C24380D -:10AAD000F157C773519723CB7CA19CE8213EDD96AB -:10AAE000DC61860D850F90E0427CC471AACCD890C1 -:10AAF000050601F7121CA3C25F6A3C008C540100DA -:10AB0000F9AED06991175899273AB92738D913EB7C -:10AB1000B32B3322BBD270A98907A733B62D223CB1 -:10AB2000921520C94987FFAA78507AA58F03F85952 -:10AB30008009171ADA6531D7C684B8D03C00C854EA -:10AB40000100C382B029775A111ECB7BFCA8D66DB9 -:10AB50003A2CC6A5F884EE99F68DFF0DD6BDDEB170 -:10AB6000915460500203CEA9567DE719B5624DE6B7 -:10AB7000EC9A8F451F9D8940FA87EF15B2EB3C0098 -:10AB8000045501008EC9FB0B41ECB3675FFD45EA3C -:10AB900023BF53F7E4969B5B75C2E11C3DAE4C6A44 -:10ABA0006C5A7E41F502834F685C51F4D134F90848 -:10ABB000E293AB7362532A3F080C955246659D5E43 -:10ABC0003C0040550100302837A10A0F2FB50E096F -:10ABD00024361B9BDF3DCD264E697FCDEA9F121B9D -:10ABE0001D9E5874342E362DDCB2B4EE5BFBA4F6F9 -:10ABF000764DB7617DCE527BDD3E5E711397A6F533 -:10AC0000B9683C007C5501000000C12C4060E31F86 -:10AC100079C8B6EDD4BE8D4667D9724B94DE98D410 -:10AC2000B0E8854ABB6BC52A4FE5ED1686C59AD7B5 -:10AC3000665511948ACFE9100406FE81A0F078448D -:10AC400025BA4BE33C00B8550100A2F35DFE80C07D -:10AC5000058A3FAD21BC7048F10463DF77C1AF7551 -:10AC600042632030E51AFD0EBF6D814C1814263565 -:10AC7000C32FBEE135A288CC2E39935755F2FC8202 -:10AC80007A47C8ACBAE73C00F4550100322BE69590 -:10AC9000C0A019989ED1A37F4466547E3BAB0B8322 -:10ACA0008CCAC7296BD3283CA779BCE2161DAD76A8 -:10ACB000DB3B6456744E141E92DB0C0A486CB8E4FD -:10ACC0009F5DBD6E43EFC4A63C003056010039A81D -:10ACD00031A4D337F28BD5328B436E59DAB7018C5E -:10ACE000B1649CD249E0D8B4ACFAF307CF25CAAF1F -:10ACF000F48E47E910186FD5F0884A6F5C723824DB -:10AD000057F173C79751CB23A17C3C006C560100CF -:10AD1000E89C3E2196DD61DC0D860F85E0907C424B -:10AD200071C4CCAA90D80605F7011C12C2A36A5FB1 -:10AD3000AEF969D0179199583A2727B9D938EB134A -:10AD40002BB32233D2BBA970078933A73C00A85686 -:10AD500001002DB63C221592C9208749AAFF5078E0 -:10AD6000A57A038F59F809801A1765DAD73184C696 -:10AD7000D0B882C329B05A771E117BCBA8FC6DD600 -:10AD80002C3A0400000000000000010000003C001C -:10AD9000E45601000200000003000000050000006E -:10ADA000000000000100000002000000030000009D -:10ADB00004000000010000000172657145727252CA -:10ADC0006561736F6E000000010000000500000067 -:10ADD0003C0020570100C48E0100249A01000000AD -:10ADE000000030000000249A0100A4B2010000001D -:10ADF00000006C000000A4B2010014C801000000B3 -:10AE00000000C00000001020304050BB30000100A6 -:10AE100000003C005C5701001416181A1C1E20226A -:10AE20002426282A2B2C01007017000001000000A6 -:10AE30000D250000413F0100652901000D2500009E -:10AE4000F55E0000413F0100413F010002040B0C90 -:10AE5000121618243C00985701003048606C01001D -:10AE60000000101010101010101010101010101002 -:10AE700000006400000001000000FFFFFFFF010070 -:10AE80000000000210121100000118000000020072 -:10AE90000000010000003C00D45701000000000049 -:10AEA000000000000200000004000000000000009C -:10AEB00000000000E093040040420F00000000008A -:10AEC0000100000000800000DF40CFFD0040830053 -:10AED00000000000010200003C00105801000000CA -:10AEE0000000000000000000000040008081000021 -:10AEF0008000BFFF7F7E0102000000000000000014 -:10AF0000000001000000786F010000000000B86F31 -:10AF1000010000000000F86F01003C004C580100E7 -:10AF2000000000003870010000000000787001008F -:10AF300000000000B870010000000000F87001007F -:10AF4000000000003871010000000000787101006D -:10AF50000001000090710100000100003C008858D1 -:10AF60000100A87101000001000000050A01060BA4 -:10AF700002070C03080D040900000303010100048B -:10AF800000040406161E1F0000000000000100005F -:10AF900080000000000000FFFFFF181818183C0098 -:10AFA000C458010018181818181818181818000094 -:10AFB000618B4A00618F4A00618B4A0005E3C00043 -:10AFC00005CBC00005BBC00085BAC00085A2C0008B -:10AFD0008592C000858AC000857AC0004589C0007E -:10AFE0003C00005901004571C0004569C000456141 -:10AFF000C0004559C0004551C0004549C000454109 -:10B00000C0004539C0004531C0004529C000452178 -:10B01000C000602D0600602D0600602D0600602D2A -:10B0200006003C003C590100602D06006028060027 -:10B030005026060050210600501F0600501C060036 -:10B04000501A06005018060050160600501406004C -:10B050005012060050100600500E0600500C06005C -:10B06000500A06003C00785901002B0B06001D75A4 -:10B07000C0001D75C0001D75C0001D75C0001D7588 -:10B08000C0001D75C0001D6DC000DD5BC000DD4B44 -:10B09000C000DD43C000DD3BC000DD33C000DD2B60 -:10B0A000C000DD23C0003C00B4590100DD1BC0001E -:10B0B000DD13C000DD13C000DD13C000DD13C000D0 -:10B0C000DD13C000050505040403030202010100AD -:10B0D000000005050504040303020201010000004D -:10B0E00000000000881300003C00F0590100070038 -:10B0F000000080005B004002E0FDF200B8FCA4010B -:10B1000000000F0000000F000000030B9F5F07010D -:10B110002A04210417040E040404FB03F103E803CA -:10B12000C903AA038A036B034C033C002C5A010099 -:10B130002D030E03EE02EC02010316032B03400362 -:10B1400055036A037F039403A903BE03D303E803F3 -:10B15000BE0394036A030002040607090A0B0C0DE0 -:10B160001010101010101010101000033C00685A3E -:10B17000010005080B0E1010101010101010101008 -:10B18000101010100000010000000100000000007D -:10B1900000000000000000000000000000000000AF -:10B1A00000000000000000000000000000003C0063 -:10B1B000A45A010000000000000000000000000090 -:10B1C000000000000000000000000000000000007F -:10B1D000000000000000000000000000000000006F -:10B1E000000000000000000000000000000000005F -:10B1F0003C00E05A010000000000000000000000D8 -:10B20000000000000000000000000000000000003E -:10B21000000000000000000000000000000000002E -:10B22000000000000000000000000000000000001E -:10B2300000003C001C5B010000000000000000005A -:10B2400000000000000000000000000000000000FE -:10B2500000000000000000000000000000000000EE -:10B2600000000000000000000000000000000000DE -:10B27000000000003C00585B0100000000000000DE -:10B2800000000000000000000000000000000000BE -:10B2900000000000000000000000000000000000AE -:10B2A000000000000000000000000000000000009E -:10B2B0000000000000003C00945B01000000000062 -:10B2C000000000000000000000000000000000007E -:10B2D000000000000000000000000000000000006E -:10B2E000000000000000000000000000000000005E -:10B2F00000000000000000003C00D05B01000000E6 -:10B30000000000000000000000000000000000003D -:10B31000000000000000000000000000000000002D -:10B32000000000000000000000000000000000001D -:10B33000000000000000000000003C000C5C010068 -:10B3400000000000000000000000000000000000FD -:10B3500000000000000000000000000000000000ED -:10B3600000000000000000000000000000000000DD -:10B370000000000000000000000000003C00485CED -:10B3800001000000000000000000000000000000BC -:10B3900000000000000000000000000000000000AD -:10B3A000000000000000000000000000000000009D -:10B3B00000000000000000000000000000003C0051 -:10B3C000845C01000000000000000000000000009C -:10B3D000000000000000000000000000000000006D -:10B3E000000000000000000000000000000000005D -:10B3F000000000000000000000000000000000004D -:10B400003C00C05C010000000000000000000000E3 -:10B41000000000000000000000000000000000002C -:10B42000000000000000000000000000000000001C -:10B43000000000000000000000000000000000000C -:10B4400000003C00FC5C0100000000000000000067 -:10B4500000000000000000000000000000000000EC -:10B4600000000000000000000000000000000000DC -:10B4700000000000000000000000000000000000CC -:10B48000000000003C00385D0100000000000000EA -:10B4900000000000000000000000000000000000AC -:10B4A000000000000000000000000000000000009C -:10B4B000000000000000000000000000000000008C -:10B4C0000000000000003C00745D0100000000006E -:10B4D000000000000000000000000000000000006C -:10B4E000000000000000000000000000000000005C -:10B4F000000000000000000000000000000000004C -:10B5000000000000000000003C00B05D01000000F1 -:10B51000000000000000000000000000000000002B -:10B52000000000000000000000000000000000001B -:10B53000000000000000000000000000000000000B -:10B54000000000000000000000003C00EC5D010075 -:10B5500000000000000000000000000000000000EB -:10B5600000000000000000000000000000000000DB -:10B5700000000000000000000000000000000000CB -:10B580000000000000000000000000003C00285EF9 -:10B5900001000000000000000000000000000000AA -:10B5A000000000000000000000000000000000009B -:10B5B000000000000000000000000000000000008B -:10B5C00000000000000000000000000000003C003F -:10B5D000645E0100000000000000000000000000A8 -:10B5E000000000000000000000000000000000005B -:10B5F000000000000000000000000000000000004B -:10B60000000000000000000000000000000000003A -:10B610003C00A05E010000000000000000000000EF -:10B62000000000000000000000000000000000001A -:10B63000000000000000000000000000000000000A -:10B6400000000000000000000000000000000000FA -:10B6500000003C00DC5E0100000000000000000073 -:10B6600000000000000000000000000000000000DA -:10B6700000000000000000000000000000000000CA -:10B6800000000000000000000000000000000000BA -:10B69000000000003C00185F0100000000000000F6 -:10B6A000000000000000000000000000000000009A -:10B6B000000000000000000000000000000000008A -:10B6C000000000000000000000000000000000007A -:10B6D0000000000000003C00545F0100000000007A -:10B6E000000000000000000000000000000000005A -:10B6F000000000000000000000000000000000004A -:10B700000000000000000000000000000000000039 -:10B7100000000000000000003C00905F01000000FD -:10B720000000000000000000000000000000000019 -:10B730000000000000000000000000000000000009 -:10B7400000000000000000000000000000000000F9 -:10B75000000000000000000000003C00CC5F010081 -:10B7600000000000000000000000000000000000D9 -:10B7700000000000000000000000000000000000C9 -:10B7800000000000000000000000000000000000B9 -:10B790000000000000000000000000003C00086005 -:10B7A0000100000000000000000000000000000098 -:10B7B0000000000000000000000000000000000089 -:10B7C0000000000000000000000000000000000079 -:10B7D00000000000000000000000000000003C002D -:10B7E00044600100000000000000000000000000B4 -:10B7F0000000000000000000000000000000000049 -:10B800000000000000000000000000000000000038 -:10B810000000000000000000000000000000000028 -:10B820003C008060010000000000000000000000FB -:10B830000000000000000000000000000000000008 -:10B8400000000000000000000000000000000000F8 -:10B8500000000000000000000000000000000000E8 -:10B8600000003C00BC60010000000000000000007F -:10B8700000000000000000000000000000000000C8 -:10B8800000000000000000000000000000000000B8 -:10B8900000000000000000000000000000000000A8 -:10B8A000000000003C00F860010000000000000003 -:10B8B0000000000000000000000000000000000088 -:10B8C0000000000000000000000000000000000078 -:10B8D0000000000000000000000000000000000068 -:10B8E0000000000000003C00346101000000000086 -:10B8F0000000000000000000000000000000000048 -:10B900000000000000000000000000000000000037 -:10B910000000000000000000000000000000000027 -:10B9200000000000000000003C0070610100000009 -:10B930000000000000000000000000000000000007 -:10B9400000000000000000000000000000000000F7 -:10B9500000000000000000000000000000000000E7 -:10B96000000000000000000000003C00AC6101008D -:10B9700000000000000000000000000000000000C7 -:10B9800000000000000000000000000000000000B7 -:10B9900000000000000000000000000000000000A7 -:10B9A0000000000000000000000000003C00E86112 -:10B9B0000100000000000000000000000000000086 -:10B9C0000000000000000000000000000000000077 -:10B9D0000000000000000000000000000000000067 -:10B9E00000000000000000000000000000003C001B -:10B9F00024620100000000000000000000000000C0 -:10BA00000000000000000000000000000000000036 -:10BA10000000000000000000000000000000000026 -:10BA20000000000000000000000000000000000016 -:10BA30003C00606201000000000000000000000007 -:10BA400000000000000000000000000000000000F6 -:10BA500000000000000000000000000000000000E6 -:10BA600000000000000000000000000000000000D6 -:10BA700000003C009C62010000000000000000008B -:10BA800000000000000000000000000000000000B6 -:10BA900000000000000000000000000000000000A6 -:10BAA0000000000000000000000000000000000096 -:10BAB000000000003C00D86201000000000000000F -:10BAC0000000000000000000000000000000000076 -:10BAD0000000000000000000000000000000000066 -:10BAE0000000000000000000000000000000000056 -:10BAF0000000000000003C00146301000000000092 -:10BB00000000000000000000000000000000000035 -:10BB10000000000000000000000000000000000025 -:10BB20000000000000000000000000000000000015 -:10BB300000000000000000003C0050630100000015 -:10BB400000000000000000000000000000000000F5 -:10BB500000000000000000000000000000000000E5 -:10BB600000000000000000000000000000000000D5 -:10BB7000000000000000000000003C008C63010099 -:10BB800000000000000000000000000000000000B5 -:10BB900000000000000000000000000000000000A5 -:10BBA0000000000000000000000000000000000095 -:10BBB0000000000000000000000000003C00C8631E -:10BBC0000100000000000000000000000000000074 -:10BBD0000000000000000000000000000000000065 -:10BBE0000000000000000000000000000000000055 -:10BBF00000000000000000000000000000003C0009 -:10BC000004640100000000000000000000000000CB -:10BC10000000000000000000000000000000000024 -:10BC20000000000000000000000000000000000014 -:10BC30000000000000000000000000000000000004 -:10BC40003C00406401000000000000000000000013 -:10BC500000000000000000000000000000000000E4 -:10BC600000000000000000000000000000000000D4 -:10BC700000000000000000000000000000000000C4 -:10BC800000003C007C640100000000000000000097 -:10BC900000000000000000000000000000000000A4 -:10BCA0000000000000000000000000000000000094 -:10BCB0000000000000000000000000000000000084 -:10BCC000000000003C00B86401000000000000001B -:10BCD0000000000000000000000000000000000064 -:10BCE0000000000000000000000000000000000054 -:10BCF0000000000000000000000000000000000044 -:10BD00000000000000003C00F4640100000000009E -:10BD10000000000000000000000000000000000023 -:10BD20000000000000000000000000000000000013 -:10BD30000000000000000000000000000000000003 -:10BD400000000000000000003C0030650100000021 -:10BD500000000000000000000000000000000000E3 -:10BD600000000000000000000000000000000000D3 -:10BD700000000000000000000000000000000000C3 -:10BD8000000000000000000000003C006C650100A5 -:10BD900000000000000000000000000000000000A3 -:10BDA0000000000000000000000000000000000093 -:10BDB0000000000000000000000000000000000083 -:10BDC0000000000000000000000000003C00A8652A -:10BDD0000100000000000000000000000000000062 -:10BDE0000000000000000000000000000000000053 -:10BDF0000000000000000000000000000000000043 -:10BE000000000000000000000000000000003C00F6 -:10BE1000E4650100000000000000000000000000D8 -:10BE20000000000000000000000000000000000012 -:10BE30000000000000000000000000000000000002 -:10BE400000000000000000000000000000000000F2 -:10BE50003C0020660100000000000000000000001F -:10BE600000000000000000000000000000000000D2 -:10BE700000000000000000000000000000000000C2 -:10BE800000000000000000000000000000000000B2 -:10BE900000003C005C6601000000000000000000A3 -:10BEA0000000000000000000000000000000000092 -:10BEB0000000000000000000000000000000000082 -:10BEC0000000000000000000000000000000000072 -:10BED000000000003C009866010000000000000027 -:10BEE0000000000000000000000000000000000052 -:10BEF0000000000000000000000000000000000042 -:10BF00000000000000000000000000000000000031 -:10BF10000000000000003C00D466010000000000AA -:10BF20000000000000000000000000000000000011 -:10BF30000000000000000000000000000000000001 -:10BF400000000000000000000000000000000000F1 -:10BF500000000000000000003C001067010000002D -:10BF600000000000000000000000000000000000D1 -:10BF700000000000000000000000000000000000C1 -:10BF800000000000000000000000000000000000B1 -:10BF9000000000000000000000003C004C670100B1 -:10BFA0000000000000000000000000000000000091 -:10BFB0000000000000000000000000000000000081 -:10BFC0000000000000000000000000000000000071 -:10BFD0000000000000000000000000003C00886736 -:10BFE0000100000000000000000000000000000050 -:10BFF0000000000000000000000000000000000041 -:10C000000000000000000000000000000000000030 -:10C0100000000000000000000000000000003C00E4 -:10C02000C4670100000000000000000000000000E4 -:10C030000000000000000000000000000000000000 -:10C0400000000000000000000000000000000000F0 -:10C0500000000000000000000000000000000000E0 -:10C060003C0000680100000000000000000000002B -:10C0700000000000000000000000000000000000C0 -:10C0800000000000000000000000000000000000B0 -:10C0900000000000000000000000000000000000A0 -:10C0A00000003C003C6801000000000000000000AF -:10C0B0000000000000000000000000000000000080 -:10C0C0000000000000000000000000000000000070 -:10C0D0000000000000000000000000000000000060 -:10C0E000000000003C007868010000000000000033 -:10C0F0000000000000000000000000000000000040 -:10C10000000000000000000000000000000000002F -:10C11000000000000000000000000000000000001F -:10C120000000000000003C00B468010000000000B6 -:10C1300000000000000000000000000000000000FF -:10C1400000000000000000000000000000000000EF -:10C1500000000000000000000000000000000000DF -:10C1600000000000000000003C00F068010000003A -:10C1700000000000000000000000000000000000BF -:10C1800000000000000000000000000000000000AF -:10C19000000000000000000000000000000000009F -:10C1A000000000000000000000003C002C690100BD -:10C1B000000000000000000000000000000000007F -:10C1C000000000000000000000000000000000006F -:10C1D000000000000000000000000000000000005F -:10C1E0000000000000000000000000003C00686942 -:10C1F000010000000000000000000000000000003E -:10C20000000000000000000000000000000000002E -:10C21000000000000000000000000000000000001E -:10C2200000000000000000000000000000003C00D2 -:10C23000A4690100000000000000000000000000F0 -:10C2400000000000000000000000000000000000EE -:10C2500000000000000000000000000000000000DE -:10C2600000000000000000000000000000000000CE -:10C270003C00E06901000000000000000000000038 -:10C2800000000000000000000000000000000000AE -:10C29000000000000000000000000000000000009E -:10C2A000000000000000000000000000000000008E -:10C2B00000003C001C6A01000000000000000000BB -:10C2C000000000000000000000000000000000006E -:10C2D000000000000000000000000000000000005E -:10C2E000000000000000000000000000000000004E -:10C2F000000000003C00586A01000000000000003F -:10C30000000000000000000000000000000000002D -:10C31000000000000000000000000000000000001D -:10C32000000000000000000000000000000000000D -:10C330000000000000003C00946A010000000000C2 -:10C3400000000000000000000000000000000000ED -:10C3500000000000000000000000000000000000DD -:10C3600000000000000000000000000000000000CD -:10C3700000000000000000003C00D06A0100000046 -:10C3800000000000000000000000000000000000AD -:10C39000000000000000000000000000000000009D -:10C3A000000000000000000000000000000000008D -:10C3B000000000000000000000003C000C6B0100C9 -:10C3C000000000000000000000000000000000006D -:10C3D000000000000000000000000000000000005D -:10C3E000000000000000000000000000000000004D -:10C3F0000000000000000000000000003C00486B4E -:10C40000010000000000000000000000000000002B -:10C41000000000000000000000000000000000001C -:10C42000000000000000000000000000000000000C -:10C4300000000000000000000000000000003C00C0 -:10C44000846B0100000000000000000000000000FC -:10C4500000000000000000000000000000000000DC -:10C4600000000000000000000000000000000000CC -:10C4700000000000000000000000000000000000BC -:10C480003C00C06B01000000000000000000000044 -:10C49000000000000000000000000000000000009C -:10C4A000000000000000000000000000000000008C -:10C4B000000000000000000000000000000000007C -:10C4C00000003C00FC6B01000000000000000000C8 -:10C4D000000000000000000000000000000000005C -:10C4E000000000000000000000000000000000004C -:10C4F000000000000000000000000000000000003C -:10C50000000000003C00386C01000000000000004A -:10C51000000000000000000000000000000000001B -:10C52000000000000000000000000000000000000B -:10C5300000000000000000000000000000000000FB -:10C540000000000000003C00746C010000000000CE -:10C5500000000000000000000000000000000000DB -:10C5600000000000000000000000000000000000CB -:10C5700000000000000000000000000000000000BB -:10C5800000000000000000003C00B06C0100000052 -:10C59000000000000000000000000000000000009B -:10C5A000000000000000000000000000000000008B -:10C5B000000000000000000000000000000000007B -:10C5C000000000000000000000003C00EC6C0100D6 -:10C5D000000000000000000000000000000000005B -:10C5E000000000000000000000000000000000004B -:10C5F000000000000000000000000000000000003B -:10C600000000000000000000000000003C00286D59 -:10C610000100000000000000000000000000000019 -:10C62000000000000000000000000000000000000A -:10C6300000000000000000000000000000000000FA -:10C6400000000000000000000000000000003C00AE -:10C65000646D010000000000000000000000000008 -:10C6600000000000000000000000000000000000CA -:10C6700000000000000000000000000000000000BA -:10C6800000000000000000000000000000000000AA -:10C690003C00A06D01000000000000000000000050 -:10C6A000000000000000000000000000000000008A -:10C6B000000000000000000000000000000000007A -:10C6C000000000000000000000000000000000006A -:10C6D00000003C00DC6D01000000000000000000D4 -:10C6E000000000000000000000000000000000004A -:10C6F000000000000000000000000000000000003A -:10C700000000000000000000000000000000000029 -:10C71000000000003C00186E010000000000000056 -:10C720000000000000000000000000000000000009 -:10C7300000000000000000000000000000000000F9 -:10C7400000000000000000000000000000000000E9 -:10C750000000000000003C00546E010000000000DA -:10C7600000000000000000000000000000000000C9 -:10C7700000000000000000000000000000000000B9 -:10C7800000000000000000000000000000000000A9 -:10C7900000000000000000003C00906E010000005E -:10C7A0000000000000000000000000000000000089 -:10C7B0000000000000000000000000000000000079 -:10C7C0000000000000000000000000000000000069 -:10C7D000000000000000000000003C00CC6E0100E2 -:10C7E0000000000000000000000000000000000049 -:10C7F0000000000000000000000000000000000039 -:10C800000000000000000000000000000000000028 -:10C810000000000000000000000000003C00086F65 -:10C820000100000000000000000000000000000007 -:10C8300000000000000000000000000000000000F8 -:10C8400000000000000000000000000000000000E8 -:10C8500000000000000000000000000000003C009C -:10C86000446F010000000000000000000000000014 -:10C8700000000000000000000000000000000000B8 -:10C8800000000000000000000000000000000000A8 -:10C890000000000000000000000000000000000098 -:10C8A0003C00806F0100000000000000000000005C -:10C8B0000000000000000000000000000000000078 -:10C8C0000000000000000000000000000000000068 -:10C8D0000000000000000000000000000000000058 -:10C8E00000003C00BC6F01000000000000000000E0 -:10C8F0000000000000000000000000000000000038 -:10C900000000000000000000000000000000000027 -:10C910000000000000000000000000000000000017 -:10C92000000000003C00F86F010000000000000063 -:10C9300000000000000000000000000000000000F7 -:10C9400000000000000000000000000000000000E7 -:10C9500000000000000000000000000000000000D7 -:10C960000000000000003C003470010000000000E6 -:10C9700000000000000000000000000000000000B7 -:10C9800000000000000000000000000000000000A7 -:10C990000000000000000000000000000000000097 -:10C9A00000000000000000003C007070010000006A -:10C9B0000000000000000000000000000000000077 -:10C9C0000000000000000000000000000000000067 -:10C9D0000000000000000000000000000000000057 -:10C9E000000000000000000000003C00AC700100EE -:10C9F0000000000000000000000000000000000037 -:10CA00000000000000000000000000000000000026 -:10CA10000000000000000000000000000000000016 -:10CA20000000000000000000000000003C00E87072 -:10CA300001000000000000000000000000000000F5 -:10CA400000000000000000000000000000000000E6 -:10CA500000000000000000000000000000000000D6 -:10CA600000000000000000000000000000003C008A -:10CA70002471010000000000000000000000000020 -:10CA800000000000000000000000000000000000A6 -:10CA90000000000000000000000000000000000096 -:10CAA0000000000000000000000000000000000086 -:10CAB0003C00607101000000000000000000000068 -:10CAC0000000000000000000000000000000000066 -:10CAD0000000000000000000000000000000000056 -:10CAE0000000000000000000000000000000000046 -:10CAF00000003C009C7101000000000000000000EC -:10CB00000000000000000000000000000000000025 -:10CB10000000000000000000000000000000000015 -:10CB20000000000000000000000000000000000005 -:10CB3000000000003C00D87101000000000000006F -:10CB400000000000000000000000000000000000E5 -:10CB500000000000000000000000000000000000D5 -:10CB600000000000000000000000000000000000C5 -:10CB70000000000000003C001472010000000000F2 -:10CB800000000000000000000000000000000000A5 -:10CB90000000000000000000000000000000000095 -:10CBA0000000000000000000000000000000000085 -:10CBB00000000000000000003C0050720100000076 -:10CBC0000000000000000000000000000000000065 -:10CBD0000000000000000000000000000000000055 -:10CBE0000000000000000000000000000000000045 -:10CBF000000000000000000000003C008C720100FA -:10CC00000000000000000000000000000000000024 -:10CC10000000000000000000000000000000000014 -:10CC20000000000000000000000000000000000004 -:10CC30000000000000000000000000003C00C8727E -:10CC400001000000000000000000000000000000E3 -:10CC500000000000000000000000000000000000D4 -:10CC600000000000000000000000000000000000C4 -:10CC700000000000000000000000000000003C0078 -:10CC8000047301000000000000000000000000002C -:10CC90000000000000000000000000000000000094 -:10CCA0000000000000000000000000000000000084 -:10CCB0000000000000000000000000000000000074 -:10CCC0003C00407301000000000000000000000074 -:10CCD0000000000000000000000000000000000054 -:10CCE0000000000000000000000000000000000044 -:10CCF0000000000000000000000000000000000034 -:10CD000000003C007C7301000000000000000000F7 -:10CD10000000000000000000000000000000000013 -:10CD20000000000000000000000000000000000003 -:10CD300000000000000000000000000000000000F3 -:10CD4000000000003C00B87301000000000000007B -:10CD500000000000000000000000000000000000D3 -:10CD600000000000000000000000000000000000C3 -:10CD700000000000000000000000000000000000B3 -:10CD80000000000000003C00F473010000000000FF -:10CD90000000000000000000000000000000000093 -:10CDA0000000000000000000000000000000000083 -:10CDB0000000000000000000000000000000000073 -:10CDC00000000000000000003C0030740100000082 -:10CDD0000000000000000000000000000000000053 -:10CDE0000000000000000000000000000000000043 -:10CDF0000000000000000000000000000000000033 -:10CE0000000000000000000000003C006C74010005 -:10CE10000000000000000000000000000000000012 -:10CE20000000000000000000000000000000000002 -:10CE300000000000000000000000000000000000F2 -:10CE40000000000000000000000000003C00A8748A -:10CE500001000000000000000000000000000000D1 -:10CE600000000000000000000000000000000000C2 -:10CE700000000000000000000000000000000000B2 -:10CE800000000000000000000000000000003C0066 -:10CE9000E474010000000000000000000000000039 -:10CEA0000000000000000000000000000000000082 -:10CEB0000000000000000000000000000000000072 -:10CEC0000000000000000000000000000000000062 -:10CED0003C00207501000000000000000000000080 -:10CEE0000000000000000000000000000000000042 -:10CEF0000000000000000000000000000000000032 -:10CF00000000000000000000000000000000000021 -:10CF100000003C005C750100000000000000000003 -:10CF20000000000000000000000000000000000001 -:10CF300000000000000000000000000000000000F1 -:10CF400000000000000000000000000000000000E1 -:10CF5000000000003C009875010000000000000087 -:10CF600000000000000000000000000000000000C1 -:10CF700000000000000000000000000000000000B1 -:10CF800000000000000000000000000000000000A1 -:10CF90000000000000003C00D4750100000000000B -:10CFA0000000000000000000000000000000000081 -:10CFB0000000000000000000000000000000000071 -:10CFC0000000000000000000000000000000000061 -:10CFD00000000000000000003C001076010000008E -:10CFE0000000000000000000000000000000000041 -:10CFF0000000000000000000000000000000000031 -:10D000000000000000000000000000000000000020 -:10D01000000000000000000000003C004C76010011 -:10D020000000000000000000000000000000000000 -:10D0300000000000000000000000000000000000F0 -:10D0400000000000000000000000000000000000E0 -:10D050000000000000000000000000003C00887696 -:10D0600001000000000000000000000000000000BF -:10D0700000000000000000000000000000000000B0 -:10D0800000000000000000000000000000000000A0 -:10D0900000000000000000000000000000003C0054 -:10D0A000C476010000000000000000000000000045 -:10D0B0000000000000000000000000000000000070 -:10D0C0000000000000000000000000000000000060 -:10D0D0000000000000000000000000000000000050 -:10D0E0003C0000770100000000000000000000008C -:10D0F0000000000000000000000000000000000030 -:10D10000000000000000000000000000000000001F -:10D11000000000000000000000000000000000000F -:10D1200000003C003C77010000000000000000000F -:10D1300000000000000000000000000000000000EF -:10D1400000000000000000000000000000000000DF -:10D1500000000000000000000000000000000000CF -:10D16000000000003C007877010000000000000093 -:10D1700000000000000000000000000000000000AF -:10D18000000000000000000000000000000000009F -:10D19000000000000000000000000000000000008F -:10D1A0000000000000003C00B47701000000000017 -:10D1B000000000000000000000000000000000006F -:10D1C000000000000000000000000000000000005F -:10D1D000000000000000000000000000000000004F -:10D1E00000000000000000003C00F077010000009B -:10D1F000000000000000000000000000000000002F -:10D20000000000000000000000000000000000001E -:10D21000000000000000000000000000000000000E -:10D22000000000000000000000003C002C7801001D -:10D2300000000000000000000000000000000000EE -:10D2400000000000000000000000000000000000DE -:10D2500000000000000000000000000000000000CE -:10D260000000000000000000000000003C006878A2 -:10D2700001000000000000000000000000000000AD -:10D28000000000000000000000000000000000009E -:10D29000000000000000000000000000000000008E -:10D2A00000000000000000000000000000003C0042 -:10D2B000A478010000000000000000000000000051 -:10D2C000000000000000000000000000000000005E -:10D2D000000000000000000000000000000000004E -:10D2E000000000000000000000000000000000003E -:10D2F0003C00E07801000000000000000000000099 -:10D30000000000000000000000000000000000001D -:10D31000000000000000000000000000000000000D -:10D3200000000000000000000000000000000000FD -:10D3300000003C001C79010000000000000000001B -:10D3400000000000000000000000000000000000DD -:10D3500000000000000000000000000000000000CD -:10D3600000000000000000000000000000000000BD -:10D37000000000003C00587901000000000000009F -:10D38000000000000000000000000000000000009D -:10D39000000000000000000000000000000000008D -:10D3A000000000000000000000000000000000007D -:10D3B0000000000000003C00947901000000000023 -:10D3C000000000000000000000000000000000005D -:10D3D000000000000000000000000000000000004D -:10D3E000000000000000000000000000000000003D -:10D3F00000000000000000003C00D07901000000A7 -:10D40000000000000000000000000000000000001C -:10D41000000000000000000000000000000000000C -:10D4200000000000000000000000000000000000FC -:10D43000000000000000000000003C000C7A010029 -:10D4400000000000000000000000000000000000DC -:10D4500000000000000000000000000000000000CC -:10D4600000000000000000000000000000000000BC -:10D470000000000000000000000000003C00487AAE -:10D48000010000000000000000000000000000009B -:10D49000000000000000000000000000000000008C -:10D4A000000000000000000000000000000000007C -:10D4B00000000000000000000000000000003C0030 -:10D4C000847A01000000000000000000000000005D -:10D4D000000000000000000000000000000000004C -:10D4E000000000000000000000000000000000003C -:10D4F000000000000000000000000000000000002C -:10D500003C00C07A010000000000000000000000A4 -:10D51000000000000000000000000000000000000B -:10D5200000000000000000000000000000000000FB -:10D5300000000000000000000000000000000000EB -:10D5400000003C00FC7A0100000000000000000028 -:10D5500000000000000000000000000000000000CB -:10D5600000000000000000000000000000000000BB -:10D5700000000000000000000000000000000000AB -:10D58000000000003C00387B0100000000000000AB -:10D59000000000000000000000000000000000008B -:10D5A000000000000000000000000000000000007B -:10D5B000000000000000000000000000000000006B -:10D5C0000000000000003C00747B0100000000002F -:10D5D000000000000000000000000000000000004B -:10D5E000000000000000000000000000000000003B -:10D5F000000000000000000000000000000000002B -:10D6000000000000000000003C00B07B01000000B2 -:10D61000000000000000000000000000000000000A -:10D6200000000000000000000000000000000000FA -:10D6300000000000000000000000000000000000EA -:10D64000000000000000000000003C00EC7B010036 -:10D6500000000000000000000000000000000000CA -:10D6600000000000000000000000000000000000BA -:10D6700000000000000000000000000000000000AA -:10D680000000000000000000000000003C00287CBA -:10D690000100000000000000000000000000000089 -:10D6A000000000000000000000000000000000007A -:10D6B000000000000000000000000000000000006A -:10D6C00000000000000000000000000000003C001E -:10D6D000647C010000000000000000000000000069 -:10D6E000000000000000000000000000000000003A -:10D6F000000000000000000000000000000000002A -:10D700000000000000000000000000000000000019 -:10D710003C00A07C010000000000000000000000B0 -:10D7200000000000000000000000000000000000F9 -:10D7300000000000000000000000000000000000E9 -:10D7400000000000000000000000000000000000D9 -:10D7500000003C00DC7C0100000000000000000034 -:10D7600000000000000000000000000000000000B9 -:10D7700000000000000000000000000000000000A9 -:10D780000000000000000000000000000000000099 -:10D79000000000003C00187D0100000000000000B7 -:10D7A0000000000000000000000000000000000079 -:10D7B0000000000000000000000000000000000069 -:10D7C0000000000000000000000000000000000059 -:10D7D0000000000000003C00547D0100000000003B -:10D7E0000000000000000000000000000000000039 -:10D7F0000000000000000000000000000000000029 -:10D800000000000000000000000000000000000018 -:10D8100000000000000000003C00907D01000000BE -:10D8200000000000000000000000000000000000F8 -:10D8300000000000000000000000000000000000E8 -:10D8400000000000000000000000000000000000D8 -:10D85000000000000000000000003C00CC7D010042 -:10D8600000000000000000000000000000000000B8 -:10D8700000000000000000000000000000000000A8 -:10D880000000000000000000000000000000000098 -:10D890000000000000000000000000003C00087EC6 -:10D8A0000100000000000000000000000000000077 -:10D8B0000000000000000000000000000000000068 -:10D8C0000000000000000000000000000000000058 -:10D8D00000000000000000000000000000003C000C -:10D8E000447E010000000000000000000000000075 -:10D8F0000000000000000000000000000000000028 -:10D900000000000000000000000000000000000017 -:10D910000000000000000000000000000000000007 -:10D920003C00807E010000000000000000000000BC -:10D9300000000000000000000000000000000000E7 -:10D9400000000000000000000000000000000000D7 -:10D9500000000000000000000000000000000000C7 -:10D9600000003C00BC7E0100000000000000000040 -:10D9700000000000000000000000000000000000A7 -:10D980000000000000000000000000000000000097 -:10D990000000000000000000000000000000000087 -:10D9A000000000003C00F87E0100000000000000C4 -:10D9B0000000000000000000000000000000000067 -:10D9C0000000000000000000000000000000000057 -:10D9D0000000000000000000000000000000000047 -:10D9E0000000000000003C00347F01000000000047 -:10D9F0000000000000000000000000000000000027 -:10DA00000000000000000000000000000000000016 -:10DA10000000000000000000000000000000000006 -:10DA200000000000000000003C00707F01000000CA -:10DA300000000000000000000000000000000000E6 -:10DA400000000000000000000000000000000000D6 -:10DA500000000000000000000000000000000000C6 -:10DA6000000000000000000000003C00AC7F01004E -:10DA700000000000000000000000000000000000A6 -:10DA80000000000000000000000000000000000096 -:10DA90000000000000000000000000000000000086 -:10DAA0000000000000000000000000003C00E87FD3 -:10DAB0000100000000000000000000000000000065 -:10DAC0000000000000000000000070B50125074EB6 -:10DAD000AD0375610A20FAF76CFF30688003C40F4C -:10DAE000B5610A20FAF765FF201C70BD00003C00FC -:10DAF000248001001000070070B501256D04002886 -:10DB0000104C01D0656100E0A56160682843606049 -:10DB1000A0682843A0600A20FAF74EFF0126B6034A -:10DB200066610A20FAF748FFA6610120FAF744FF70 -:10DB30003C0060800100A068A843A06060682843A2 -:10DB400060600A20FAF73BFF70BD1000070070B557 -:10DB50000125104C6D046561606828436060A06811 -:10DB60002843A060EE08A6610A20FAF728FF666144 -:10DB70000A203C009C800100FAF724FFA5610A20DE -:10DB8000FAF720FFA6610A20FAF71CFFA068A84355 -:10DB9000A06060682843606070BD0000100007004E -:10DBA00070B501250E4C6D04A56160682843606066 -:10DBB000A06828433C00D8800100A060EE086661A0 -:10DBC0000A20FAF702FF65610A20FAF7FEFEA66155 -:10DBD0000A20FAF7FAFEA068A843A060606828430C -:10DBE000606070BD00001000070070B5051C0024C7 -:10DBF0008026281C30403C0014810100FFF788FF7C -:10DC00006806050E0134082CF6DBFFF76DFF70BDCA -:10DC100080B5021C0B218020FBF73EFB80BD00007D -:10DC2000F8B512480025071CFF37061D0137281CD0 -:10DC3000F9F7EAFD041C17D03C005081010020696F -:10DC4000002804D0E06A002803D00020E062251CF0 -:10DC5000F0E77B68002B05D0321C211C44310120E9 -:10DC6000E8F734F9201C4430F9F737FEE2E7F8BD55 -:10DC7000000020F70100114870B53C008C810100C4 -:10DC80000068FF281DD1FF203230FAF7A7FE0E4DA5 -:10DC90006C680E48FAF7A2FE6868241A012000F0AA -:10DCA00095FD6E680948FAF799FE6868211C0A39E3 -:10DCB000301A884202D30A34A04202D93C00C881FB -:10DCC0000100002000F085FD70BDF4740100000328 -:10DCD00007009303000070B500F04DF80120EDF748 -:10DCE00034F9114D182168600020E9F7F2F9286035 -:10DCF00004688020208000260622FF21201D3C0091 -:10DD0000048201006680E8F70BFA201C0A300949FA -:10DD1000F2F72EFD201C10300749F2F729FDE682AC -:10DD200003CDE9F7F9F8024901201439886070BD84 -:10DD300090D901001261010024F701007047000032 -:10DD40003C004082010010B5064C00220220E16830 -:10DD5000F0F711FB6078022801D100F01AF910BD2C -:10DD6000000040D9010080B5A120FFF750FF80BD21 -:10DD7000000040000E21084080B5A030FFF747FFAB -:10DD800080BD3C007C82010010B5054C2068002855 -:10DD900004D0E9F787F900202060606010BD000022 -:10DDA00090D9010010B5074C0121074A21610220DA -:10DDB0001070616100F0D6FC00F0C8FB201CEDF78C -:10DDC0009FFA10BD3C00B882010020F701007CD909 -:10DDD000010070B5021C081C0225002A134E14D045 -:10DDE00000F011FC3078012108433070307828436E -:10DDF000307000207D214901B279920700D50134AD -:10DE000001308842F8DB3C00F4820100201C70BD28 -:10DE10003078A843307030784008400030700549B1 -:10DE200048680122120490434860012070BD000040 -:10DE3000880007006C000700FFB509AE002060CE27 -:10DE4000286000239C4630603C0030830100694616 -:10DE500001AA17E0DB070ED5124B1C56631C0AD033 -:10DE600001272B68A7403B432B601368DB0702D5D3 -:10DE700033683B4333600B685B080B6013685B08D7 -:10DE8000136001300B68002B01D03C006C83010053 -:10DE90002228E2D3634601332020022B9C4602A9AC -:10DEA00003AAF2DBFFBD0000B48D0100B0B5041C75 -:10DEB0000D1C1E2100220320054BF9F7B3F8211C8D -:10DEC0000320F9F7F5F8291C0320F9F73C00A88393 -:10DED0000100F1F8B0BD80380100B0B51C4C1C4DFC -:10DEE0002178022909D0032919D004291FD0052936 -:10DEF00023D1002000F017FB23E0686114481C3098 -:10DF0000C16802698918C16000F02FFBE0683C001D -:10DF1000E48301000138E06016D13220E060FFF7B1 -:10DF2000A3FE11E0002000F001FB00F02DFC012019 -:10DF3000207009E0002000F0F9FAFFF745FF03E048 -:10DF400005210B20E8F746FF68696168E7F7DDFF08 -:10DF50003C0020840100B0BD00007CD9010020F706 -:10DF60000100F7B5041C171CFFF721FE200AFFF77C -:10DF700018FF2006000EFFF762FEFFF718FEA12033 -:10DF8000FFF75DFE002516E0002000244006060E87 -:10DF9000FFF73C005C840100D1FD0006000E304319 -:10DFA0000134082CF5DB291C019A0135BD4250547F -:10DFB00001DA002000E00120FFF7D4FDBD42E6DBDE -:10DFC000FFF71EFEFEBD000080B5FFF719FE092118 -:10DFD000890300223C00988401000220F0F7E9F94F -:10DFE00080BD0921890380B500220220F0F7C9F91C -:10DFF000012109488903816142680A4342608268BD -:10E000001143816001214904816182688A438260F1 -:10E010004268114341603C00D484010080BD00008F -:10E0200010000700F0B5041CC0687B4E056830780E -:10E0300085B0012801D0022872D100212069F2F7B1 -:10E0400041F97649F2F724FC002869D0201C2030E1 -:10E05000417A082902D1724A3C0010850100002152 -:10E060005161007A226A1821F2F7C9FBE16A371C74 -:10E0700040186C49029030780E1CFF360A1D01369C -:10E080000128049207D0654A02991C32281CEDF73A -:10E09000E2FB00286BD0322120693C004C85010056 -:10E0A000F2F716F9019020690121F2F711F9011C2C -:10E0B0005E480123019AEDF707FC002804D15B4874 -:10E0C000EDF792FA0021B96056481C308168EAF7F2 -:10E0D00019FC201C143003900499F2F73C00888549 -:10E0E0000100D5FB002805D10022BA6004980399ED -:10E0F000F2F76BFB4F4928890988884203D0002238 -:10E100004C49BA60088003212069F2F7E4F800283E -:10E1100010D04649827820310B7994469A423C00CF -:10E12000C485010009D00022BA6062460A71807875 -:10E130000121F3F705F900E077E006212069F2F705 -:10E14000CDF8002808D081783A4840308288914242 -:10E1500002D00022BA6081802A212069F2F7BEF83D -:10E160003C000086010000280DD08078F169334A18 -:10E17000814208D00021B960F061101CEDF709FB65 -:10E180002F48EDF7FAFA38783B1C012817D1022006 -:10E1900018702A4F01233B61274B03CD1C33083DE8 -:10E1A000029A3C003C860100EDF7B0FA381CEDF70E -:10E1B000D7F83268002A03D000210120E7F7C4FE17 -:10E1C00000F0F4F9201CF9F7D5FB071C11D1201C35 -:10E1D000F9F788FB071C2ED001233B616889402199 -:10E1E000C85373683C0078860100002B04D0211CC2 -:10E1F0000020049AE7F7ACFE0123FB62206932217C -:10E20000F2F775F8051C20690121F2F770F80E4E3F -:10E21000011C2A1C301CEDF7C0FB00280ED1322156 -:10E220002069F2F764F83C00B4860100051C2069FF -:10E230000121F2F75FF8011C3B1C2A1C301CEDF792 -:10E24000D7FA05B0F0BD00007CD9010040F801000C -:10E2500020F70100021C081C802A80B506D0812A04 -:10E2600003D004210B20E8F73C00F0860100D9FD23 -:10E2700080BDFFF75CFE80BD000003488178FF2968 -:10E2800001D0007970470020704780F8010030B558 -:10E2900089B000930E4D131C041C2A1CECF725FDBD -:10E2A00001A906A8A268ECF7CEFE3C002C8701006D -:10E2B00001AA06A9281C636AEDF744FA041C012888 -:10E2C00004D1281CEDF72CF800F04AF8201C09B006 -:10E2D00030BD000020F7010080B5EDF72BF800F00D -:10E2E0007DF80248EDF702FA80BD00003C00688727 -:10E2F000010020F7010080B500280BD10648EDF79A -:10E30000F8F900F06EF80120EDF7EBFA034903206D -:10E31000F9F735FE80BD20F701006D870100B0B52B -:10E32000104D041C131C2A1C88B0ECF702FD3C00A5 -:10E33000A4870100211C0A310622281DE7F7A4FE4C -:10E34000694605A86269ECF787FE281CECF7EEFF2A -:10E350007F23DB43281C6A4605A9EDF7F9F900F095 -:10E360001DF808B0B0BD000020F701000A4880B5D4 -:10E370003C00E08701000178002906D0022901D085 -:10E38000052907D10321017080BD0121017000F032 -:10E390002EFA80BD03210B20E8F74FFD80BD7CD90C -:10E3A0000100094980B50878002806D0022801D06C -:10E3B00005283C001C88010005D10420087080BDA0 -:10E3C000FFF738FD80BD02210B20E8F739FD80BD45 -:10E3D0007CD9010080B502210B20044AFAF782FFA4 -:10E3E000F6F786FD0249086180BD0000DD86010068 -:10E3F0007CD901003C00588801000C4880B50178A8 -:10E4000006290ED202A35B5C5B009F44000006035A -:10E4100007070706002000F0C2F880BD0521017043 -:10E4200080BD04210B20E8F70EFD80BD00007CD9E3 -:10E430000100704700003C009488010010B50D4BAE -:10E44000041C181C1030002C08D0DB885B045B0C0B -:10E450000B80807B48800420108008E0DA8801244B -:10E46000E40322400C882243DA804988817301202A -:10E4700010BD0000300007003C00D088010070B5DE -:10E48000104E021C0023F056002A02D0087001240E -:10E4900015E00023CD56854201D1012070BD281C16 -:10E4A00000F05FF9041C0AD00748357000680028A6 -:10E4B00003D000210A20F9F728FD3C000C89010057 -:10E4C00000F016FA201C70BDF46B01003CD901006D -:10E4D000031C081C002B80B506D0042111800422E7 -:10E4E0000449E7F7E3FD02E0006800F0CFF90120FE -:10E4F00080BD0000F474010010B5FFF73C004889AE -:10E50000010097FBFFF789FC041CFFF7B8FBFFF73E -:10E5100084FC002C02D1012800D110BD002010BDC8 -:10E520000000F8B5204F041C78780E1C02282ED06D -:10E530001E4AF968916114231D49584340183C0054 -:10E5400084890100417BB878F8F714FE00F08AF95D -:10E55000002504E00021B878F8F70CFE0135787842 -:10E560001423144958434018807AA842F2DC00254D -:10E5700008E00021B878F8F7FDFD0F48006820702A -:10E580003C00C089010001340135B542F4DB094A81 -:10E59000F86850617878022806D1B868321C211CCE -:10E5A0000004000CFFF725FDB8688019B860F8BDBD -:10E5B000000040D9010010000700648D01003020E8 -:10E5C00007003C00FC89010070B5061C0C4D0024BE -:10E5D0002C70FFF739FC0A4818211C30AC60E7F7B3 -:10E5E00043FD08484461F9F763F9002E06D1064857 -:10E5F0002969F6F7A7FC0020ECF7B0FE70BD00001B -:10E600007CD901003C00388A010020F70100346306 -:10E61000010030B5124C85B0206800281CD00F488E -:10E6200014388068002801D1FFF7C1FB206800235F -:10E63000006801AA04300121ECF7D1FD0849084A1D -:10E6400008310C3100923C00748A010003C900AB10 -:10E650004518997B019A20682B1CF2F72BFE05B018 -:10E6600030BD000090D901002981010010B5134C84 -:10E67000142360705843124BC1188A88E2801858DE -:10E68000E060087AA070FF283C00B08A010012D038 -:10E69000002208210D4BF8F722FD00220220E1683C -:10E6A000EFF7BDFE0A49E06848614A6802434A60E4 -:10E6B0008A68104388606078022801D1FFF7DFFC88 -:10E6C00010BD40D90100648D01003C00EC8A0100BE -:10E6D000B80B000010000700FE300006000E0621F7 -:10E6E000154B4143585C82061448920E4271C9187A -:10E6F0004A78D206D20E027142780C231A43427035 -:10E7000042788B78920892009B079B0F3C00288BE5 -:10E7100001001A4342700278C0239A4340320270CB -:10E72000027838231A4302700278C97804239A4386 -:10E730008900194011430170012070470000D88DF5 -:10E740000100880007008FB50020029003903C0074 -:10E75000648B0100074802AA03A900910192438932 -:10E76000028903C8FFF7D4FB03980299FFF704FC62 -:10E770008FBD0000048E010008494A78002A03D1A9 -:10E78000888000208860704714235A43044BD218B5 -:10E790003C00A08B0100D2884243C88842438A6073 -:10E7A000704740D90100648D0100F8B5254E041C66 -:10E7B000307A400840003072B07A0020B0720127F1 -:10E7C000012C204D01D0FC4213D1307B38433073F3 -:10E7D00000223C00DC8B0100211C0020FFF76EFBB7 -:10E7E000631C01D13F21E973B17AA0221143B172B8 -:10E7F000317A39433172F8BD307B400840003073C4 -:10E800000122211C0120FFF759FB01200021E9739F -:10E81000B17A02223C00188C01001143B172B17A26 -:10E8200004221143B172B17A30221143B172317AAC -:10E830003943317208494A6880239A434A600A681A -:10E840001A430A60317B39433173D7E700008800EF -:10E850000700400007003C00548C01006C000700DA -:10E86000B0B50E4D0E482969F6F79EFB0D48ECF742 -:10E8700093FD0D48094C00881C34A082F1F75AFF23 -:10E880002061FAF797F8021C231C00210020ECF706 -:10E890008BFF3220E860FFF73C00908C0100A5FA66 -:10E8A000B0BD7CD9010034630100DD84010020F794 -:10E8B0000100B0B50A4D687800280ED0142308492D -:10E8C00058434018447A06E0A868E0400106090E63 -:10E8D000A878F8F776FC083CF6D53C00CC8C010013 -:10E8E000B0BD000040D90100648D0100011C144836 -:10E8F000B0B501601348027F02239A430277027F7A -:10E90000012422430277104D00290CD0012200215E -:10E910000320EFF79FFD0D49487CA0433C00088D84 -:10E9200001004874687A20436872B0BD017F2143BA -:10E930000177687A400840006872012200210320B4 -:10E94000EFF7B1FDB0BDF47401003000070088009E -:10E9500007001000070010B5074C211C00203C00E8 -:10E96000448D0100F9F756FB05480023C0560128E5 -:10E9700003DD211C0020F9F719FB10BD651A00000A -:10E98000F46B01000000020008010100021804FFFE -:10E9900082E8D78000000000008000000001000134 -:10E9A0003C00808D010000180006020305010100F3 -:10E9B00000000000000080000100FF1000FFFFFFCA -:10E9C000FFFFFF0000000000020020000100021015 -:10E9D0000006020305010100000004050607080CFB -:10E9E0000D0E3C00BC8D0100FF1415161718191BE5 -:10E9F0001C1DFF1A1113120F10FF0200FF01030963 -:10EA00000A0B0000300D02000000280E0300000079 -:10EA10001E0C00000000300D020100001E0C000161 -:10EA20000000230D3C00F88D0100020100001D0DC7 -:10EA3000020100000000FFFEFB6D000080000200EC -:10EA400000000000000000000000000000000000C6 -:10EA500000000000000000000000000000000000B6 -:10EA60000000000000003C00348E010000000000A7 -:10EA70000000000000000000000000000000000096 -:10EA80000000000000000000000000000000000086 -:10EA90000000000000000000000000000000000076 -:10EAA00000000000000000003C00708E010000002B -:10EAB0000000000000000000000000000000000056 -:10EAC0000000000000000000000000000000000046 -:10EAD0000000000000000000000000000000000036 -:10EAE000000000000000000000003C00AC8E0100AF -:10EAF0000000000000000000000000000000000016 -:10EB00000000000000000000000000000000000005 -:10EB100000000000000000000000000000000000F5 -:10EB20000000000000000000000000003C00E88E33 -:10EB300001000000000000000000000000000000D4 -:10EB400000000000000000000000000000000000C5 -:10EB500000000000000000000000000000000000B5 -:10EB600000000000000000000000000000003C0069 -:10EB7000248F0100000000000000000000000000E1 -:10EB80000000000000000000000000000000000085 -:10EB90000000000000000000000000000000000075 -:10EBA0000000000000000000000000000000000065 -:10EBB0003C00608F01000000000000000000000029 -:10EBC0000000000000000000000000000000000045 -:10EBD0000000000000000000000000000000000035 -:10EBE0000000000000000000000000000000000025 -:10EBF00000003C009C8F01000000000000000000AD -:10EC00000000000000000000000000000000000004 -:10EC100000000000000000000000000000000000F4 -:10EC200000000000000000000000000000000000E4 -:10EC3000000000003C00D88F010000000000000030 -:10EC400000000000000000000000000000000000C4 -:10EC500000000000000000000000000000000000B4 -:10EC600000000000000000000000000000000000A4 -:10EC70000000000000003C001490010000000000B3 -:10EC80000000000000000000000000000000000084 -:10EC90000000000000000000000000000000000074 -:10ECA0000000000000000000000000000000000064 -:10ECB00000000000000000003C0050900100000037 -:10ECC0000000000000000000000000000000000044 -:10ECD0000000000000000000000000000000000034 -:10ECE0000000000000000000000000000000000024 -:10ECF000000000000000000000003C008C900100BB -:10ED00000000000000000000000000000000000003 -:10ED100000000000000000000000000000000000F3 -:10ED200000000000000000000000000000000000E3 -:10ED30000000000000000000000000003C00C8903F -:10ED400001000000000000000000000000000000C2 -:10ED500000000000000000000000000000000000B3 -:10ED600000000000000000000000000000000000A3 -:10ED700000000000000000000000000000003C0057 -:10ED800004910100000000000000000000000000ED -:10ED90000000000000000000000000000000000073 -:10EDA0000000000000000000000000000000000063 -:10EDB0000000000000000000000000000000000053 -:10EDC0003C00409101000000000000000000000035 -:10EDD0000000000000000000000000000000000033 -:10EDE0000000000000000000000000000000000023 -:10EDF0000000000000000000000000000000000013 -:10EE000000003C007C9101000000000000000000B8 -:10EE100000000000000000000000000000000000F2 -:10EE200000000000000000000000000000000000E2 -:10EE300000000000000000000000000000000000D2 -:10EE4000000000003C00B89101000000000000003C -:10EE500000000000000000000000000000000000B2 -:10EE600000000000000000000000000000000000A2 -:10EE70000000000000000000000000000000000092 -:10EE80000000000000003C00F491010000000000C0 -:10EE90000000000000000000000000000000000072 -:10EEA0000000000000000000000000000000000062 -:10EEB0000000000000000000000000000000000052 -:10EEC00000000000000000003C0030920100000043 -:10EED0000000000000000000000000000000000032 -:10EEE0000000000000000000000000000000000022 -:10EEF0000000000000000000000000000000000012 -:10EF0000000000000000000000003C006C920100C6 -:10EF100000000000000000000000000000000000F1 -:10EF200000000000000000000000000000000000E1 -:10EF300000000000000000000000000000000000D1 -:10EF40000000000000000000000000003C00A8924B -:10EF500001000000000000000000000000000000B0 -:10EF600000000000000000000000000000000000A1 -:10EF70000000000000000000000000000000000091 -:10EF800000000000000000000000000000003C0045 -:10EF9000E4920100000000000000000000000000FA -:10EFA0000000000000000000000000000000000061 -:10EFB0000000000000000000000000000000000051 -:10EFC0000000000000000000000000000000000041 -:10EFD0003C00209301000000000000000000000041 -:10EFE0000000000000000000000000000000000021 -:10EFF0000000000000000000000000000000000011 -:10F000000000000000000000000000000000000000 -:10F0100000003C005C9301000000000000000000C4 -:10F0200000000000000000000000000000000000E0 -:10F0300000000000000000000000000000000000D0 -:10F0400000000000000000000000000000000000C0 -:10F05000000000003C009893010000000000000048 -:10F0600000000000000000000000000000000000A0 -:10F070000000000000000000000000000000000090 -:10F080000000000000000000000000000000000080 -:10F090000000000000003C00D493010000000000CC -:10F0A0000000000000000000000000000000000060 -:10F0B0000000000000000000000000000000000050 -:10F0C0000000000000000000000000000000000040 -:10F0D00000000000000000003C001094010000004F -:10F0E0000000000000000000000000000000000020 -:10F0F0000000000000000000000000000000000010 -:10F1000000000000000000000000000000000000FF -:10F11000000000000000000000003C004C940100D2 -:10F1200000000000000000000000000000000000DF -:10F1300000000000000000000000000000000000CF -:10F1400000000000000000000000000000000000BF -:10F150000000000000000000000000003C00889457 -:10F16000010000000000000000000000000000009E -:10F17000000000000000000000000000000000008F -:10F18000000000000000000000000000000000007F -:10F1900000000000000000000000000000003C0033 -:10F1A000C494010000000000000000000000000006 -:10F1B000000000000000000000000000000000004F -:10F1C000000000000000000000000000000000003F -:10F1D000000000000000000000000000000000002F -:10F1E0003C0000950100000000000000000000004D -:10F1F000000000000000000000000000000000000F -:10F2000000000000000000000000000000000000FE -:10F2100000000000000000000000000000000000EE -:10F2200000003C003C9501000000000000000000D0 -:10F2300000000000000000000000000000000000CE -:10F2400000000000000000000000000000000000BE -:10F2500000000000000000000000000000000000AE -:10F26000000000003C007895010000000000000054 -:10F27000000000000000000000000000000000008E -:10F28000000000000000000000000000000000007E -:10F29000000000000000000000000000000000006E -:10F2A0000000000000003C00B495010000000000D8 -:10F2B000000000000000000000000000000000004E -:10F2C000000000000000000000000000000000003E -:10F2D000000000000000000000000000000000002E -:10F2E00000000000000000003C00F095010000005C -:10F2F000000000000000000000000000000000000E -:10F3000000000000000000000000000000000000FD -:10F3100000000000000000000000000000000000ED -:10F32000000000000000000000003C002C960100DE -:10F3300000000000000000000000000000000000CD -:10F3400000000000000000000000000000000000BD -:10F3500000000000000000000000000000000000AD -:10F360000000000000000000000000003C00689663 -:10F37000010000000000000000000000000000008C -:10F38000000000000000000000000000000000007D -:10F39000000000000000000000000000000000006D -:10F3A00000000000000000000000000000003C0021 -:10F3B000A496010000000000000000000000000012 -:10F3C000000000000000000000000000000000003D -:10F3D000000000000000000000000000000000002D -:10F3E000000000000000000000000000000000001D -:10F3F0003C00E0960100000000000000000000005A -:10F4000000000000000000000000000000000000FC -:10F4100000000000000000000000000000000000EC -:10F4200000000000000000000000000000000000DC -:10F4300000003C001C9701000000000000000000DC -:10F4400000000000000000000000000000000000BC -:10F4500000000000000000000000000000000000AC -:10F46000000000000000000000000000000000009C -:10F47000000000003C005897010000000000000060 -:10F48000000000000000000000000000000000007C -:10F49000000000000000000000000000000000006C -:10F4A000000000000000000000000000000000005C -:10F4B0000000000000003C009497010000000000E4 -:10F4C000000000000000000000000000000000003C -:10F4D000000000000000000000000000000000002C -:10F4E000000000000000000000000000000000001C -:10F4F00000000000000000003C00D0970100000068 -:10F5000000000000000000000000000000000000FB -:10F5100000000000000000000000000000000000EB -:10F5200000000000000000000000000000000000DB -:10F53000000000000000000000003C000C980100EA -:10F5400000000000000000000000000000000000BB -:10F5500000000000000000000000000000000000AB -:10F56000000000000000000000000000000000009B -:10F570000000000000000000000000003C0048986F -:10F58000010000000000000000000000000000007A -:10F59000000000000000000000000000000000006B -:10F5A000000000000000000000000000000000005B -:10F5B00000000000000000000000000000003C000F -:10F5C000849801000000000000000000000000001E -:10F5D000000000000000000000000000000000002B -:10F5E000000000000000000000000000000000001B -:10F5F000000000000000000000000000000000000B -:10F600003C00C09801000000000000000000000065 -:10F6100000000000000000000000000000000000EA -:10F6200000000000000000000000000000000000DA -:10F6300000000000000000000000000000000000CA -:10F6400000003C00FC9801000000000000000000E9 -:10F6500000000000000000000000000000000000AA -:10F66000000000000000000000000000000000009A -:10F67000000000000000000000000000000000008A -:10F68000000000003C00389901000000000000006C -:10F69000000000000000000000000000000000006A -:10F6A000000000000000000000000000000000005A -:10F6B000000000000000000000000000000000004A -:10F6C0000000000000003C007499010000000000F0 -:10F6D000000000000000000000000000000000002A -:10F6E000000000000000000000000000000000001A -:10F6F000000000000000000000000000000000000A -:10F7000000000000000000003C00B0990100000073 -:10F7100000000000000000000000000000000000E9 -:10F7200000000000000000000000000000000000D9 -:10F7300000000000000000000000000000000000C9 -:10F74000000000000000000000003C00EC990100F7 -:10F7500000000000000000000000000000000000A9 -:10F760000000000000000000000000000000000099 -:10F770000000000000000000000000000000000089 -:10F780000000000000000000000000003C00289A7B -:10F790000100000000000000000000000000000068 -:10F7A0000000000000000000000000000000000059 -:10F7B0000000000000000000000000000000000049 -:10F7C00000000000000000000000000000003C00FD -:10F7D000649A01000000000000000000000000002A -:10F7E0000000000000000000000000000000000019 -:10F7F0000000000000000000000000000000000009 -:10F8000000000000000000000000000000000000F8 -:10F810003C00A09A01000000000000000000000071 -:10F8200000000000000000000000000000000000D8 -:10F8300000000000000000000000000000000000C8 -:10F8400000000000000000000000000000000000B8 -:10F8500000003C00DC9A01000000000000000000F5 -:10F860000000000000000000000000000000000098 -:10F870000000000000000000000000000000000088 -:10F880000000000000000000000000000000000078 -:10F89000000000003C00189B010000000000000078 -:10F8A0000000000000000000000000000000000058 -:10F8B0000000000000000000000000000000000048 -:10F8C0000000000000000000000000000000000038 -:10F8D0000000000000003C00549B010000000000FC -:10F8E0000000000000000000000000000000000018 -:10F8F0000000000000000000000000000000000008 -:10F9000000000000000000000000000000000000F7 -:10F9100000000000000000003C00909B010000007F -:10F9200000000000000000000000000000000000D7 -:10F9300000000000000000000000000000000000C7 -:10F9400000000000000000000000000000000000B7 -:10F95000000000000000000000003C00CC9B010003 -:10F960000000000000000000000000000000000097 -:10F970000000000000000000000000000000000087 -:10F980000000000000000000000000000000000077 -:10F990000000000000000000000000003C00089C87 -:10F9A0000100000000000000000000000000000056 -:10F9B0000000000000000000000000000000000047 -:10F9C0000000000000000000000000000000000037 -:10F9D00000000000000000000000000000003C00EB -:10F9E000449C010000000000000000000000000036 -:10F9F0000000000000000000000000000000000007 -:10FA000000000000000000000000000000000000F6 -:10FA100000000000000000000000000000000000E6 -:10FA20003C00809C0100000000000000000000007D -:10FA300000000000000000000000000000000000C6 -:10FA400000000000000000000000000000000000B6 -:10FA500000000000000000000000000000000000A6 -:10FA600000003C00BC9C0100000000000000000001 -:10FA70000000000000000000000000000000000086 -:10FA80000000000000000000000000000000000076 -:10FA90000000000000000000000000000000000066 -:10FAA000000000003C00F89C010000000000000085 -:10FAB0000000000000000000000000000000000046 -:10FAC0000000000000000000000000000000000036 -:10FAD0000000000000000000000000000000000026 -:10FAE0000000000000003C00349D01000000000008 -:10FAF0000000000000000000000000000000000006 -:10FB000000000000000000000000000000000000F5 -:10FB100000000000000000000000000000000000E5 -:10FB200000000000000000003C00709D010000008B -:10FB300000000000000000000000000000000000C5 -:10FB400000000000000000000000000000000000B5 -:10FB500000000000000000000000000000000000A5 -:10FB6000000000000000000000003C00AC9D01000F -:10FB70000000000000000000000000000000000085 -:10FB80000000000000000000000000000000000075 -:10FB90000000000000000000000000000000000065 -:10FBA0000000000000000000000000003C00E89D94 -:10FBB0000100000000000000000000000000000044 -:10FBC0000000000000000000000000000000000035 -:10FBD0000000000000000000000000000000000025 -:10FBE00000000000000000000000000000003C00D9 -:10FBF000249E010000000000000000000000000042 -:10FC000000000000000000000000000000000000F4 -:10FC100000000000000000000000000000000000E4 -:10FC200000000000000000000000000000000000D4 -:10FC30003C00609E01000000000000000000000089 -:10FC400000000000000000000000000000000000B4 -:10FC500000000000000000000000000000000000A4 -:10FC60000000000000000000000000000000000094 -:10FC700000003C009C9E010000000000000000000D -:10FC80000000000000000000000000000000000074 -:10FC90000000000000000000000000000000000064 -:10FCA0000000000000000000000000000000000054 -:10FCB000000000003C00D89E010000000000000091 -:10FCC0000000000000000000000000000000000034 -:10FCD0000000000000000000000000000000000024 -:10FCE0000000000000000000000000000000000014 -:10FCF0000000000000003C00149F01000000000014 -:10FD000000000000000000000000000000000000F3 -:10FD100000000000000000000000000000000000E3 -:10FD200000000000000000000000000000000000D3 -:10FD300000000000000000003C00509F0100000097 -:10FD400000000000000000000000000000000000B3 -:10FD500000000000000000000000000000000000A3 -:10FD60000000000000000000000000000000000093 -:10FD7000000000000000000000003C008C9F01001B -:10FD80000000000000000000000000000000000073 -:10FD90000000000000000000000000000000000063 -:10FDA0000000000000000000000000000000000053 -:10FDB0000000000000000000000000003C00C89FA0 -:10FDC0000100000000000000000000000000000032 -:10FDD0000000000000000000000000000000000023 -:10FDE0000000000000000000000000000000000013 -:10FDF00000000000000000000000000000003C00C7 -:10FE000004A001000000000000000000000000004D -:10FE100000000000000000000000000000000000E2 -:10FE200000000000000000000000000000000000D2 -:10FE300000000000000000000000000000000000C2 -:10FE40003C0040A001000000000000000000000095 -:10FE500000000000000000000000000000000000A2 -:10FE60000000000000000000000000000000000092 -:10FE70000000000000000000000000000000000082 -:10FE800000003C007CA00100000000000000000019 -:10FE90000000000000000000000000000000000062 -:10FEA0000000000000000000000000000000000052 -:10FEB0000000000000000000000000000000000042 -:10FEC000000000003C00B8A001000000000000009D -:10FED0000000000000000000000000000000000022 -:10FEE0000000000000000000000000000000000012 -:10FEF0000000000000000000000000000000000002 -:10FF00000000000000003C00F4A001000000000020 -:10FF100000000000000000000000000000000000E1 -:10FF200000000000000000000000000000000000D1 -:10FF300000000000000000000000000000000000C1 -:10FF400000000000000000003C0030A101000000A3 -:10FF500000000000000000000000000000000000A1 -:10FF60000000000000000000000000000000000091 -:10FF70000000000000000000000000000000000081 -:10FF8000000000000000000000003C006CA1010027 -:10FF90000000000000000000000000000000000061 -:10FFA0000000000000000000000000000000000051 -:10FFB0000000000000000000000000000000000041 -:10FFC0000000000000000000000000003C00A8A1AC -:10FFD0000100000000000000000000000000000020 -:10FFE0000000000000000000000000000000000011 -:10FFF0000000000000000000000000000000000001 -:02000004800278 -:1000000000000000000000000000000000003C00B4 -:10001000E4A101000000000000000000000000005A -:1000200000000000000000000000000000000000D0 -:1000300000000000000000000000000000000000C0 -:1000400000000000000000000000000000000000B0 -:100050003C0020A2010000000000000000000000A1 -:100060000000000000000000000000000000000090 -:100070000000000000000000000000000000000080 -:100080000000000000000000000000000000000070 -:1000900000003C005CA20100000000000000000025 -:1000A0000000000000000000000000000000000050 -:1000B0000000000000000000000000000000000040 -:1000C0000000000000000000000000000000000030 -:1000D000000000003C0098A20100000000000000A9 -:1000E0000000000000000000000000000000000010 -:1000F0000000000000000000000000000000000000 -:1001000000000000000000000000000000000000EF -:100110000000000000003C00D4A20100000000002C -:1001200000000000000000000000000000000000CF -:1001300000000000000000000000000000000000BF -:1001400000000000000000000000000000000000AF -:1001500000000000000000003C0010A301000000AF -:10016000000000000000000000000000000000008F -:10017000000000000000000000000000000000007F -:10018000000000000000000000000000000000006F -:10019000000000000000000000003C004CA3010033 -:1001A000000000000000000000000000000000004F -:1001B000000000000000000000000000000000003F -:1001C000000000000000000000000000000000002F -:1001D0000000000000000000000000003C0088A3B8 -:1001E000010000000000000000000000000000000E -:1001F00000000000000000000000000000000000FF -:1002000000000000000000000000000000000000EE -:1002100000000000000000000000000000003C00A2 -:10022000C4A3010000000000000000000000000066 -:1002300000000000000000000000000000000000BE -:1002400000000000000000000000000000000000AE -:10025000000000000000000000000000000000009E -:100260003C0000A4010000000000000000000000AD -:10027000000000000000000000000000000000007E -:10028000000000000000000000000000000000006E -:10029000000000000000000000000000000000005E -:1002A00000003C003CA40100000000000000000031 -:1002B000000000000000000000000000000000003E -:1002C000000000000000000000000000000000002E -:1002D000000000000000000000000000000000001E -:1002E000000000003C0078A40100000000000000B5 -:1002F00000000000000000000000000000000000FE -:1003000000000000000000000000000000000000ED -:1003100000000000000000000000000000000000DD -:100320000000000000003C00B4A401000000000038 -:1003300000000000000000000000000000000000BD -:1003400000000000000000000000000000000000AD -:10035000000000000000000000000000000000009D -:1003600000000000000000003C00F0A401000000BC -:10037000000000000000000000000000000000007D -:10038000000000000000000000000000000000006D -:10039000000000000000000000000000000000005D -:1003A000000000000000000000003C002CA501003F -:1003B000000000000000000000000000000000003D -:1003C000000000000000000000000000000000002D -:1003D000000000000000000000000000000000001D -:1003E0000000000000000000000000003C0068A5C4 -:1003F00001000000000000000000000000000000FC -:1004000000000000000000000000000000000000EC -:1004100000000000000000000000000000000000DC -:1004200000000000000000000000000000003C0090 -:10043000A4A5010000000000000000000000000072 -:1004400000000000000000000000000000000000AC -:10045000000000000000000000000000000000009C -:10046000000000000000000000000000000000008C -:100470003C00E0A5010000000000000000000000BA -:10048000000000000000000000000000000000006C -:10049000000000000000000000000000000000005C -:1004A000000000000000000000000000000000004C -:1004B00000003C001CA6010000000000000000003D -:1004C000000000000000000000000000000000002C -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F000000000003C0058A60100000000000000C1 -:1005000000000000000000000000000000000000EB -:1005100000000000000000000000000000000000DB -:1005200000000000000000000000000000000000CB -:100530000000000000003C0094A601000000000044 -:1005400000000000000000000000000000000000AB -:10055000000000000000000000000000000000009B -:10056000000000000000000000000000000000008B -:1005700000000000000000003C00D0A601000000C8 -:10058000000000000000000000000000000000006B -:10059000000000000000000000000000000000005B -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000003C000CA701004B -:1005C000000000000000000000000000000000002B -:1005D000000000000000000000000000000000001B -:1005E000000000000000000000000000000000000B -:1005F0000000000000000000000000003C0048A7D0 -:1006000001000000000000000000000000000000E9 -:1006100000000000000000000000000000000000DA -:1006200000000000000000000000000000000000CA -:1006300000000000000000000000000000003C007E -:1006400084A701000000000000000000000000007E -:10065000000000000000000000000000000000009A -:10066000000000000000000000000000000000008A -:10067000000000000000000000000000000000007A -:100680003C00C0A7010000000000000000000000C6 -:10069000000000000000000000000000000000005A -:1006A000000000000000000000000000000000004A -:1006B000000000000000000000000000000000003A -:1006C00000003C00FCA7010000000000000000004A -:1006D000000000000000000000000000000000001A -:1006E000000000000000000000000000000000000A -:1006F00000000000000000000000000000000000FA -:10070000000000003C0038A80100000000000000CC -:1007100000000000000000000000000000000000D9 -:1007200000000000000000000000000000000000C9 -:1007300000000000000000000000000000000000B9 -:100740000000000000003C0074A801000000000050 -:100750000000000000000000000000000000000099 -:100760000000000000000000000000000000000089 -:100770000000000000000000000000000000000079 -:1007800000000000000000003C00B0A801000000D4 -:100790000000000000000000000000000000000059 -:1007A0000000000000000000000000000000000049 -:1007B0000000000000000000000000000000000039 -:1007C000000000000000000000003C00ECA8010058 -:1007D0000000000000000000000000000000000019 -:1007E0000000000000000000000000000000000009 -:1007F00000000000000000000000000000000000F9 -:100800000000000000000000000000003C0028A9DB -:1008100001000000000000000000000000000000D7 -:1008200000000000000000000000000000000000C8 -:1008300000000000000000000000000000000000B8 -:1008400000000000000000000000000000003C006C -:1008500064A901000000000000000000000000008A -:100860000000000000000000000000000000000088 -:100870000000000000000000000000000000000078 -:100880000000000000000000000000000000000068 -:100890003C00A0A9010000000000000000000000D2 -:1008A0000000000000000000000000000000000048 -:1008B0000000000000000000000000000000000038 -:1008C0000000000000000000000000000000000028 -:1008D00000003C00DCA90100000000000000000056 -:1008E0000000000000000000000000000000000008 -:1008F00000000000000000000000000000000000F8 -:1009000000000000000000000000000000000000E7 -:10091000000000003C0018AA0100000000000000D8 -:1009200000000000000000000000000000000000C7 -:1009300000000000000000000000000000000000B7 -:1009400000000000000000000000000000000000A7 -:100950000000000000003C0054AA0100000000005C -:100960000000000000000000000000000000000087 -:100970000000000000000000000000000000000077 -:100980000000000000000000000000000000000067 -:1009900000000000000000003C0090AA01000000E0 -:1009A0000000000000000000000000000000000047 -:1009B0000000000000000000000000000000000037 -:1009C0000000000000000000000000000000000027 -:1009D000000000000000000000003C00CCAA010064 -:1009E0000000000000000000000000000000000007 -:1009F00000000000000000000000000000000000F7 -:100A000000000000000000000000000000000000E6 -:100A10000000000000000000000000003C0008ABE7 -:100A200001000000000000000000000000000000C5 -:100A300000000000000000000000000000000000B6 -:100A400000000000000000000000000000000000A6 -:100A500000000000000000000000000000003C005A -:100A600044AB010000000000000000000000000096 -:100A70000000000000000000000000000000000076 -:100A80000000000000000000000000000000000066 -:100A90000000000000000000000000000000000056 -:100AA0003C0080AB010000000000000000000000DE -:100AB0000000000000000000000000000000000036 -:100AC0000000000000000000000000000000000026 -:100AD0000000000000000000000000000000000016 -:100AE00000003C00BCAB0100000000000000000062 -:100AF00000000000000000000000000000000000F6 -:100B000000000000000000000000000000000000E5 -:100B100000000000000000000000000000000000D5 -:100B2000000000003C00F8AB0100000000000000E5 -:100B300000000000000000000000000000000000B5 -:100B400000000000000000000000000000000000A5 -:100B50000000000000000000000000000000000095 -:100B60000000000000003C0034AC01000000000068 -:100B70000000000000000000000000000000000075 -:100B80000000000000000000000000000000000065 -:100B90000000000000000000000000000000000055 -:100BA00000000000000000003C0070AC01000000EC -:100BB0000000000000000000000000000000000035 -:100BC0000000000000000000000000000000000025 -:100BD0000000000000000000000000000000000015 -:100BE000000000000000000000003C00ACAC010070 -:100BF00000000000000000000000000000000000F5 -:100C000000000000000000000000000000000000E4 -:100C100000000000000000000000000000000000D4 -:100C20000000000000000000000000003C00E8ACF4 -:100C300001000000000000000000000000000000B3 -:100C400000000000000000000000000000000000A4 -:100C50000000000000000000000000000000000094 -:100C600000000000000000000000000000003C0048 -:100C700024AD0100000000000000000000000000A2 -:100C80000000000000000000000000000000000064 -:100C90000000000000000000000000000000000054 -:100CA0000000000000000000000000000000000044 -:100CB0003C0060AD010000000000000000000000EA -:100CC0000000000000000000000000000000000024 -:100CD0000000000000000000000000000000000014 -:100CE0000000000000000000000000000000000004 -:100CF00000003C009CAD010000000000000000006E -:100D000000000000000000000000000000000000E3 -:100D100000000000000000000000000000000000D3 -:100D200000000000000000000000000000000000C3 -:100D3000000000003C00D8AD0100000000000000F1 -:100D400000000000000000000000000000000000A3 -:100D50000000000000000000000000000000000093 -:100D60000000000000000000000000000000000083 -:100D70000000000000003C0014AE01000000000074 -:100D80000000000000000000000000000000000063 -:100D90000000000000000000000000000000000053 -:100DA0000000000000000000000000000000000043 -:100DB00000000000000000003C0050AE01000000F8 -:100DC0000000000000000000000000000000000023 -:100DD0000000000000000000000000000000000013 -:100DE0000000000000000000000000000000000003 -:100DF000000000000000000000003C008CAE01007C -:100E000000000000000000000000000000000000E2 -:100E100000000000000000000000000000000000D2 -:100E200000000000000000000000000000000000C2 -:100E30000000000000000000000000003C00C8AE00 -:100E400001000000000000000000000000000000A1 -:100E50000000000000000000000000000000000092 -:100E60000000000000000000000000000000000082 -:100E700000000000000000000000000000003C0036 -:100E800004AF0100000000000000000000000000AE -:100E90000000000000000000000000000000000052 -:100EA0000000000000000000000000000000000042 -:100EB0000000000000000000000000000000000032 -:100EC0003C0040AF010000000000000000000000F6 -:100ED0000000000000000000000000000000000012 -:100EE0000000000000000000000000000000000002 -:100EF00000000000000000000000000000000000F2 -:100F000000003C007CAF0100000000000000000079 -:100F100000000000000000000000000000000000D1 -:100F200000000000000000000000000000000000C1 -:100F300000000000000000000000000000000000B1 -:100F4000000000003C00B8AF0100000000000000FD -:100F50000000000000000000000000000000000091 -:100F60000000000000000000000000000000000081 -:100F70000000000000000000000000000000000071 -:100F80000000000000003C00F4AF01000000000081 -:100F90000000000000000000000000000000000051 -:100FA0000000000000000000000000000000000041 -:100FB0000000000000000000000000000000000031 -:100FC00000000000000000003C0030B00100000004 -:100FD0000000000000000000000000000000000011 -:100FE0000000000000000000000000000000000001 -:100FF00000000000000000000000000000000000F1 -:10100000000000000000000000003C006CB0010087 -:1010100000000000000000000000000000000000D0 -:1010200000000000000000000000000000000000C0 -:1010300000000000000000000000000000000000B0 -:101040000000000000000000000000003C00A8B00C -:10105000010000000000000000000000000000008F -:101060000000000000000000000000000000000080 -:101070000000000000000000000000000000000070 -:1010800000000000000000000000000000003C0024 -:10109000E4B00100000000000000000000000000BB -:1010A0000000000000000000000000000000000040 -:1010B0000000000000000000000000000000000030 -:1010C0000000000000000000000000000000000020 -:1010D0003C0020B101000000000000000000000002 -:1010E0000000000000000000000000000000000000 -:1010F00000000000000000000000000000000000F0 -:1011000000000000000000000000000000000000DF -:1011100000003C005CB10100000000000000000085 -:1011200000000000000000000000000000000000BF -:1011300000000000000000000000000000000000AF -:10114000000000000000000000000000000000009F -:10115000000000003C0098B1010000000000000009 -:10116000000000000000000000000000000000007F -:10117000000000000000000000000000000000006F -:10118000000000000000000000000000000000005F -:101190000000000000003C00D4B10100000000008D -:1011A000000000000000000000000000000000003F -:1011B000000000000000000000000000000000002F -:1011C000000000000000000000000000000000001F -:1011D00000000000000000003C0010B20100000010 -:1011E00000000000000000000000000000000000FF -:1011F00000000000000000000000000000000000EF -:1012000000000000000000000000000000000000DE -:10121000000000000000000000003C004CB2010093 -:1012200000000000000000000000000000000000BE -:1012300000000000000000000000000000000000AE -:10124000000000000000000000000000000000009E -:101250000000000000000000000000003C0088B218 -:10126000010000000000000000000000000000007D -:10127000000000000000000000000000000000006E -:10128000000000000000000000000000000000005E -:1012900000000000000000000000000000003C0012 -:1012A000C4B20100000000000000000000000000C7 -:1012B000000000000000000000000000000000002E -:1012C000000000000000000000000000000000001E -:1012D000000000000000000000000000000000000E -:1012E0003C0000B30100000000000000000000000E -:1012F00000000000000000000000000000000000EE -:1013000000000000000000000000000000000000DD -:1013100000000000000000000000000000000000CD -:1013200000003C003CB30100000000000000000091 -:1013300000000000000000000000000000000000AD -:10134000000000000000000000000000000000009D -:10135000000000000000000000000000000000008D -:10136000000000003C0078B3010000000000000015 -:10137000000000000000000000000000000000006D -:10138000000000000000000000000000000000005D -:10139000000000000000000000000000000000004D -:1013A0000000000000003C00B4B301000000000099 -:1013B000000000000000000000000000000000002D -:1013C000000000000000000000000000000000001D -:1013D000000000000000000000000000000000000D -:1013E00000000000000000003C00F0B3010000001D -:1013F00000000000000000000000000000000000ED -:1014000000000000000000000000000000000000DC -:1014100000000000000000000000000000000000CC -:10142000000000000000000000003C002CB401009F -:1014300000000000000000000000000000000000AC -:10144000000000000000000000000000000000009C -:10145000000000000000000000000000000000008C -:101460000000000000000000000000003C0068B424 -:10147000010000000000000000000000000000006B -:10148000000000000000000000000000000000005C -:10149000000000000000000000000000000000004C -:1014A00000000000000000000000000000003C0000 -:1014B000A4B40100000000000000000000000000D3 -:1014C000000000000000000000000000000000001C -:1014D000000000000000000000000000000000000C -:1014E00000000000000000000000000000000000FC -:1014F0003C00E0B40100000000000000000000001B -:1015000000000000000000000000000000000000DB -:1015100000000000000000000000000000000000CB -:1015200000000000000000000000000000000000BB -:1015300000003C001CB5010000000000000000009D -:10154000000000000000000000000000000000009B -:10155000000000000000000000000000000000008B -:10156000000000000000000000000000000000007B -:10157000000000003C0058B5010000000000000021 -:10158000000000000000000000000000000000005B -:10159000000000000000000000000000000000004B -:1015A000000000000000000000000000000000003B -:1015B0000000000000003C0094B5010000000000A5 -:1015C000000000000000000000000000000000001B -:1015D000000000000000000000000000000000000B -:1015E00000000000000000000000000000000000FB -:1015F00000000000000000003C00D0B50100000029 -:1016000000000000000000000000000000000000DA -:1016100000000000000000000000000000000000CA -:1016200000000000000000000000000000000000BA -:10163000000000000000000000003C000CB60100AB -:10164000000000000000000000000000000000009A -:10165000000000000000000000000000000000008A -:10166000000000000000000000000000000000007A -:101670000000000000000000000000003C0048B630 -:101680000100000000000000000000000000000059 -:10169000000000000000000000000000000000004A -:1016A000000000000000000000000000000000003A -:1016B00000000000000000000000000000003C00EE -:1016C00084B60100000000000000000000000000DF -:1016D000000000000000000000000000000000000A -:1016E00000000000000000000000000000000000FA -:1016F00000000000000000000000000000000000EA -:101700003C00C0B601000000000000000000000026 -:1017100000000000000000000000000000000000C9 -:1017200000000000000000000000000000000000B9 -:1017300000000000000000000000000000000000A9 -:1017400000003C00FCB601000000000000000000AA -:101750000000000000000000000000000000000089 -:101760000000000000000000000000000000000079 -:101770000000000000000000000000000000000069 -:10178000000000003C0038B701000000000000002D -:101790000000000000000000000000000000000049 -:1017A0000000000000000000000000000000000039 -:1017B0000000000000000000000000000000000029 -:1017C0000000000000003C0074B7010000000000B1 -:1017D0000000000000000000000000000000000009 -:1017E00000000000000000000000000000000000F9 -:1017F00000000000000000000000000000000000E9 -:1018000000000000000000003C00B0B70100000034 -:1018100000000000000000000000000000000000C8 -:1018200000000000000000000000000000000000B8 -:1018300000000000000000000000000000000000A8 -:10184000000000000000000000003C00ECB70100B8 -:101850000000000000000000000000000000000088 -:101860000000000000000000000000000000000078 -:101870000000000000000000000000000000000068 -:101880000000000000000000000000003C0028B83C -:101890000100000000000000000000000000000047 -:1018A0000000000000000000000000000000000038 -:1018B0000000000000000000000000000000000028 -:1018C00000000000000000000000000000003C00DC -:1018D00064B80100000000000000000000000000EB -:1018E00000000000000000000000000000000000F8 -:1018F00000000000000000000000000000000000E8 -:1019000000000000000000000000000000000000D7 -:101910003C00A0B801000000000000000000000032 -:1019200000000000000000000000000000000000B7 -:1019300000000000000000000000000000000000A7 -:101940000000000000000000000000000000000097 -:1019500000003C00DCB801000000000000000000B6 -:101960000000000000000000000000000000000077 -:101970000000000000000000000000000000000067 -:101980000000000000000000000000000000000057 -:10199000000000003C0018B9010000000000000039 -:1019A0000000000000000000000000000000000037 -:1019B0000000000000000000000000000000000027 -:1019C0000000000000000000000000000000000017 -:1019D0000000000000003C0054B9010000000000BD -:1019E00000000000000000000000000000000000F7 -:1019F00000000000000000000000000000000000E7 -:101A000000000000000000000000000000000000D6 -:101A100000000000000000003C0090B90100000040 -:101A200000000000000000000000000000000000B6 -:101A300000000000000000000000000000000000A6 -:101A40000000000000000000000000000000000096 -:101A5000000000000000000000003C00CCB90100C4 -:101A60000000000000000000000000000000000076 -:101A70000000000000000000000000000000000066 -:101A80000000000000000000000000000000000056 -:101A90000000000000000000000000003C0008BA48 -:101AA0000100000000000000000000000000000035 -:101AB0000000000000000000000000000000000026 -:101AC0000000000000000000000000000000000016 -:101AD00000000000000000000000000000003C00CA -:101AE00044BA0100000000000000000000000000F7 -:101AF00000000000000000000000000000000000E6 -:101B000000000000000000000000000000000000D5 -:101B100000000000000000000000000000000000C5 -:101B20003C0080BA0100000000000000000000003E -:101B300000000000000000000000000000000000A5 -:101B40000000000000000000000000000000000095 -:101B50000000000000000000000000000000000085 -:101B600000003C00BCBA01000000000000000000C2 -:101B70000000000000000000000000000000000065 -:101B80000000000000000000000000000000000055 -:101B90000000000000000000000000000000000045 -:101BA000000000003C00F8BA010000000000000046 -:101BB0000000000000000000000000000000000025 -:101BC0000000000000000000000000000000000015 -:101BD0000000000000000000000000000000000005 -:101BE0000000000000003C0034BB010000000000C9 -:101BF00000000000000000000000000000000000E5 -:101C000000000000000000000000000000000000D4 -:101C100000000000000000000000000000000000C4 -:101C200000000000000000003C0070BB010000004C -:101C300000000000000000000000000000000000A4 -:101C40000000000000000000000000000000000094 -:101C50000000000000000000000000000000000084 -:101C6000000000000000000000003C00ACBB0100D0 -:101C70000000000000000000000000000000000064 -:101C80000000000000000000000000000000000054 -:101C90000000000000000000000000000000000044 -:101CA0000000000000000000000000003C00E8BB55 -:101CB0000100000000000000000000000000000023 -:101CC0000000000000000000000000000000000014 -:101CD0000000000000000000000000000000000004 -:101CE00000000000000000000000000000003C00B8 -:101CF00024BC010000000000000000000000000003 -:101D000000000000000000000000000000000000D3 -:101D100000000000000000000000000000000000C3 -:101D200000000000000000000000000000000000B3 -:101D30003C0060BC0100000000000000000000004A -:101D40000000000000000000000000000000000093 -:101D50000000000000000000000000000000000083 -:101D60000000000000000000000000000000000073 -:101D700000003C009CBC01000000000000000000CE -:101D80000000000000000000000000000000000053 -:101D90000000000000000000000000000000000043 -:101DA0000000000000000000000000000000000033 -:101DB000000000003C00D8BC010000000000000052 -:101DC0000000000000000000000000000000000013 -:101DD0000000000000000000000000000000000003 -:101DE00000000000000000000000000000000000F3 -:101DF0000000000000003C0014BD010000000000D5 -:101E000000000000000000000000000000000000D2 -:101E100000000000000000000000000000000000C2 -:101E200000000000000000000000000000000000B2 -:101E300000000000000000003C0050BD0100000058 -:101E40000000000000000000000000000000000092 -:101E50000000000000000000000000000000000082 -:101E60000000000000000000000000000000000072 -:101E7000000000000000000000003C008CBD0100DC -:101E80000000000000000000000000000000000052 -:101E90000000000000000000000000000000000042 -:101EA0000000000000000000000000000000000032 -:101EB0000000000000000000000000003C00C8BD61 -:101EC0000100000000000000000000000000000011 -:101ED0000000000000000000000000000000000002 -:101EE00000000000000000000000000000000000F2 -:101EF00000000000000000000000000000003C00A6 -:101F000004BE01000000000000000000000000000E -:101F100000000000000000000000000000000000C1 -:101F200000000000000000000000000000000000B1 -:101F300000000000000000000000000000000000A1 -:101F40003C0040BE01000000000000000000000056 -:101F50000000000000000000000000000000000081 -:101F60000000000000000000000000000000000071 -:101F70000000000000000000000000000000000061 -:101F800000003C007CBE01000000000000000000DA -:101F90000000000000000000000000000000000041 -:101FA0000000000000000000000000000000000031 -:101FB0000000000000000000000000000000000021 -:101FC000000000003C00B8BE01000000000000005E -:101FD0000000000000000000000000000000000001 -:101FE00000000000000000000000000000000000F1 -:101FF00000000000000000000000000000000000E1 -:102000000000000000003C00F4BE010000000000E1 -:1020100000000000000000000000000000000000C0 -:1020200000000000000000000000000000000000B0 -:1020300000000000000000000000000000000000A0 -:1020400000000000000000003C0030BF0100000064 -:102050000000000000000000000000000000000080 -:102060000000000000000000000000000000000070 -:102070000000000000000000000000000000000060 -:10208000000000000000000000003C006CBF0100E8 -:102090000000000000000000000000000000000040 -:1020A0000000000000000000000000000000000030 -:1020B0000000000000000000000000000000000020 -:1020C0000000000000000000000000003C00A8BF6D -:1020D00001000000000000000000000000000000FF -:1020E00000000000000000000000000000000000F0 -:1020F00000000000000000000000000000000000E0 -:1021000000000000000000000000000000003C0093 -:10211000E4BF01000000000000000000000000001B -:1021200000000000000000000000000000000000AF -:10213000000000000000000000000000000000009F -:10214000000000000000000000000000000000008F -:102150003C0020C001000000000000000000000062 -:10216000000000000000000000000000000000006F -:10217000000000000000000000000000000000005F -:10218000000000000000000000000000000000004F -:1021900000003C005CC001000000000000000000E6 -:1021A000000000000000000000000000000000002F -:1021B000000000000000000000000000000000001F -:1021C000000000000000000000000000000000000F -:1021D000000000003C0098C001000000000000006A -:1021E00000000000000000000000000000000000EF -:1021F00000000000000000000000000000000000DF -:1022000000000000000000000000000000000000CE -:102210000000000000003C00D4C0010000000000ED -:1022200000000000000000000000000000000000AE -:10223000000000000000000000000000000000009E -:10224000000000000000000000000000000000008E -:1022500000000000000000003C0010C10100000070 -:10226000000000000000000000000000000000006E -:10227000000000000000000000000000000000005E -:10228000000000000000000000000000000000004E -:10229000000000000000000000003C004CC10100F4 -:1022A000000000000000000000000000000000002E -:1022B000000000000000000000000000000000001E -:1022C000000000000000000000000000000000000E -:1022D0000000000000000000000000003C0088C179 -:1022E00001000000000000000000000000000000ED -:1022F00000000000000000000000000000000000DE -:1023000000000000000000000000000000000000CD -:1023100000000000000000000000000000003C0081 -:10232000C4C1010000000000000000000000000027 -:10233000000000000000000000000000000000009D -:10234000000000000000000000000000000000008D -:10235000000000000000000000000000000000007D -:102360003C0000C20100000000000000000000006E -:10237000000000000000000000000000000000005D -:10238000000000000000000000000000000000004D -:10239000000000000000000000000000000000003D -:1023A00000003C003CC201000000000000000000F2 -:1023B000000000000000000000000000000000001D -:1023C000000000000000000000000000000000000D -:1023D00000000000000000000000000000000000FD -:1023E000000000003C0078C2010000000000000076 -:1023F00000000000000000000000000000000000DD -:1024000000000000000000000000000000000000CC -:1024100000000000000000000000000000000000BC -:102420000000000000003C00B4C2010000000000F9 -:10243000000000000000000000000000000000009C -:10244000000000000000000000000000000000008C -:10245000000000000000000000000000000000007C -:1024600000000000000000003C00F0C2010000007D -:10247000000000000000000000000000000000005C -:10248000000000000000000000000000000000004C -:10249000000000000000000000000000000000003C -:1024A000000000000000000000003C002CC3010000 -:1024B000000000000000000000000000000000001C -:1024C000000000000000000000000000000000000C -:1024D00000000000000000000000000000000000FC -:1024E0000000000000000000000000003C0068C385 -:1024F00001000000000000000000000000000000DB -:1025000000000000000000000000000000000000CB -:1025100000000000000000000000000000000000BB -:1025200000000000000000000000000000003C006F -:10253000A4C3010000000000000000000000000033 -:10254000000000000000000000000000000000008B -:10255000000000000000000000000000000000007B -:10256000000000000000000000000000000000006B -:102570003C00E0C30100000000000000000000007B -:10258000000000000000000000000000000000004B -:10259000000000000000000000000000000000003B -:1025A000000000000000000000000000000000002B -:1025B00000003C001CC401000000000000000000FE -:1025C000000000000000000000000000000000000B -:1025D00000000000000000000000000000000000FB -:1025E00000000000000000000000000000000000EB -:1025F000000000003C0058C4010000000000000082 -:1026000000000000000000000000000000000000CA -:1026100000000000000000000000000000000000BA -:1026200000000000000000000000000000000000AA -:102630000000000000003C0094C401000000000005 -:10264000000000000000000000000000000000008A -:10265000000000000000000000000000000000007A -:10266000000000000000000000000000000000006A -:1026700000000000000000003C00D0C40100000089 -:10268000000000000000000000000000000000004A -:10269000000000000000000000000000000000003A -:1026A000000000000000000000000000000000002A -:1026B000000000000000000000003C000CC501000C -:1026C000000000000000000000000000000000000A -:1026D00000000000000000000000000000000000FA -:1026E00000000000000000000000000000000000EA -:1026F0000000000000000000000000003C0048C591 -:1027000001000000000000000000000000000000C8 -:1027100000000000000000000000000000000000B9 -:1027200000000000000000000000000000000000A9 -:1027300000000000000000000000000000003C005D -:1027400084C501000000000000000000000000003F -:102750000000000000000000000000000000000079 -:102760000000000000000000000000000000000069 -:102770000000000000000000000000000000000059 -:102780003C00C0C501000000000000000000000087 -:102790000000000000000000000000000000000039 -:1027A0000000000000000000000000000000000029 -:1027B0000000000000000000000000000000000019 -:1027C00000003C00FCC5010000000000000000000B -:1027D00000000000000000000000000000000000F9 -:1027E00000000000000000000000000000000000E9 -:1027F00000000000000000000000000000000000D9 -:10280000000000003C0038C601000000000000008D -:1028100000000000000000000000000000000000B8 -:1028200000000000000000000000000000000000A8 -:102830000000000000000000000000000000000098 -:102840000000000000003C0074C601000000000011 -:102850000000000000000000000000000000000078 -:102860000000000000000000000000000000000068 -:102870000000000000000000000000000000000058 -:1028800000000000000000003C00B0C60100000095 -:102890000000000000000000000000000000000038 -:1028A0000000000000000000000000000000000028 -:1028B0000000000000000000000000000000000018 -:1028C000000000000000000000003C00ECC6010019 -:1028D00000000000000000000000000000000000F8 -:1028E00000000000000000000000000000000000E8 -:1028F00000000000000000000000000000000000D8 -:102900000000000000000000000000003C0028C79C -:1029100001000000000000000000000000000000B6 -:1029200000000000000000000000000000000000A7 -:102930000000000000000000000000000000000097 -:1029400000000000000000000000000000003C004B -:1029500064C701000000000000000000000000004B -:102960000000000000000000000000000000000067 -:102970000000000000000000000000000000000057 -:102980000000000000000000000000000000000047 -:102990003C00A0C701000000000000000000000093 -:1029A0000000000000000000000000000000000027 -:1029B0000000000000000000000000000000000017 -:1029C0000000000000000000000000000000000007 -:1029D00000003C00DCC70100000000000000000017 -:1029E00000000000000000000000000000000000E7 -:1029F00000000000000000000000000000000000D7 -:102A000000000000000000000000000000000000C6 -:102A1000000000003C0018C8010000000000000099 -:102A200000000000000000000000000000000000A6 -:102A30000000000000000000000000000000000096 -:102A40000000000000000000000000000000000086 -:102A50000000000000003C0054C80100000000001D -:102A60000000000000000000000000000000000066 -:102A70000000000000000000000000000000000056 -:102A80000000000000000000000000000000000046 -:102A900000000000000000003C0090C801000000A1 -:102AA0000000000000000000000000000000000026 -:102AB0000000000000000000000000000000000016 -:102AC0000000000000000000000000000000000006 -:102AD000000000000000000000003C00CCC8010025 -:102AE00000000000000000000000000000000000E6 -:102AF00000000000000000000000000000000000D6 -:102B000000000000000000000000000000000000C5 -:102B10000000000000000000000000003C0008C9A8 -:102B200001000000000000000000000000000000A4 -:102B30000000000000000000000000000000000095 -:102B40000000000000000000000000000000000085 -:102B500000000000000000000000000000003C0039 -:102B600044C9010000000000000000000000000057 -:102B70000000000000000000000000000000000055 -:102B80000000000000000000000000000000000045 -:102B90000000000000000000000000000000000035 -:102BA0003C0080C90100000000000000000000009F -:102BB0000000000000000000000000000000000015 -:102BC0000000000000000000000000000000000005 -:102BD00000000000000000000000000000000000F5 -:102BE00000003C00BCC90100000000000000000023 -:102BF00000000000000000000000000000000000D5 -:102C000000000000000000000000000000000000C4 -:102C100000000000000000000000000000000000B4 -:102C2000000000003C00F8C90100000000000000A6 -:102C30000000000000000000000000000000000094 -:102C40000000000000000000000000000000000084 -:102C50000000000000000000000000000000000074 -:102C60000000000000003C0034CA01000000000029 -:102C70000000000000000000000000000000000054 -:102C80000000000000000000000000000000000044 -:102C90000000000000000000000000000000000034 -:102CA00000000000000000003C0070CA01000000AD -:102CB0000000000000000000000000000000000014 -:102CC0000000000000000000000000000000000004 -:102CD00000000000000000000000000000000000F4 -:102CE000000000000000000000003C00ACCA010031 -:102CF00000000000000000000000000000000000D4 -:102D000000000000000000000000000000000000C3 -:102D100000000000000000000000000000000000B3 -:102D20000000000000000000000000003C00E8CAB5 -:102D30000100000000000000000000000000000092 -:102D40000000000000000000000000000000000083 -:102D50000000000000000000000000000000000073 -:102D600000000000000000000000000000003C0027 -:102D700024CB010000000000000000000000000063 -:102D80000000000000000000000000000000000043 -:102D90000000000000000000000000000000000033 -:102DA0000000000000000000000000000000000023 -:102DB0003C0060CB010000000000000000000000AB -:102DC0000000000000000000000000000000000003 -:102DD00000000000000000000000000000000000F3 -:102DE00000000000000000000000000000000000E3 -:102DF00000003C009CCB010000000000000000002F -:102E000000000000000000000000000000000000C2 -:102E100000000000000000000000000000000000B2 -:102E200000000000000000000000000000000000A2 -:102E3000000000003C00D8CB0100000000000000B2 -:102E40000000000000000000000000000000000082 -:102E50000000000000000000000000000000000072 -:102E60000000000000000000000000000000000062 -:102E70000000000000003C0014CC01000000000035 -:102E80000000000000000000000000000000000042 -:102E90000000000000000000000000000000000032 -:102EA0000000000000000000000000000000000022 -:102EB00000000000000000003C0050CC01000000B9 -:102EC0000000000000000000000000000000000002 -:102ED00000000000000000000000000000000000F2 -:102EE00000000000000000000000000000000000E2 -:102EF000000000000000000000003C008CCC01003D -:102F000000000000000000000000000000000000C1 -:102F100000000000000000000000000000000000B1 -:102F200000000000000000000000000000000000A1 -:102F30000000000000000000000000003C00C8CCC1 -:102F40000100000000000000000000000000000080 -:102F50000000000000000000000000000000000071 -:102F60000000000000000000000000000000000061 -:102F700000000000000000000000000000003C0015 -:102F800004CD01000000000000000000000000006F -:102F90000000000000000000000000000000000031 -:102FA0000000000000000000000000000000000021 -:102FB0000000000000000000000000000000000011 -:102FC0003C0040CD010000000000000000000000B7 -:102FD00000000000000000000000000000000000F1 -:102FE00000000000000000000000000000000000E1 -:102FF00000000000000000000000000000000000D1 -:1030000000003C007CCD010000000000000000003A -:1030100000000000000000000000000000000000B0 -:1030200000000000000000000000000000000000A0 -:103030000000000000000000000000000000000090 -:10304000000000003C00B8CD0100000000000000BE -:103050000000000000000000000000000000000070 -:103060000000000000000000000000000000000060 -:103070000000000000000000000000000000000050 -:103080000000000000003C00F4CD01000000000042 -:103090000000000000000000000000000000000030 -:1030A0000000000000000000000000000000000020 -:1030B0000000000000000000000000000000000010 -:1030C00000000000000000003C0030CE01000000C5 -:1030D00000000000000000000000000000000000F0 -:1030E00000000000000000000000000000000000E0 -:1030F00000000000000000000000000000000000D0 -:10310000000000000000000000003C006CCE010048 -:1031100000000000000000000000000000000000AF -:10312000000000000000000000000000000000009F -:10313000000000000000000000000000000000008F -:103140000000000000000000000000003C00A8CECD -:10315000010000000000000000000000000000006E -:10316000000000000000000000000000000000005F -:10317000000000000000000000000000000000004F -:1031800000000000000000000000000000003C0003 -:10319000E4CE01000000000000000000000000007C -:1031A000000000000000000000000000000000001F -:1031B000000000000000000000000000000000000F -:1031C00000000000000000000000000000000000FF -:1031D0003C0020CF010000000000000000000000C3 -:1031E00000000000000000000000000000000000DF -:1031F00000000000000000000000000000000000CF -:1032000000000000000000000000000000000000BE -:1032100000003C005CCF0100000000000000000046 -:10322000000000000000000000000000000000009E -:10323000000000000000000000000000000000008E -:10324000000000000000000000000000000000007E -:10325000000000003C0098CF0100000000000000CA -:10326000000000000000000000000000000000005E -:10327000000000000000000000000000000000004E -:10328000000000000000000000000000000000003E -:103290000000000000003C00D4CF0100000000004E -:1032A000000000000000000000000000000000001E -:1032B000000000000000000000000000000000000E -:1032C00000000000000000000000000000000000FE -:1032D00000000000000000003C0010D001000000D1 -:1032E00000000000000000000000000000000000DE -:1032F00000000000000000000000000000000000CE -:1033000000000000000000000000000000000000BD -:10331000000000000000000000003C004CD0010054 -:10332000000000000000000000000000000000009D -:10333000000000000000000000000000000000008D -:10334000000000000000000000000000000000007D -:103350000000000000000000000000003C0088D0D9 -:10336000010000000000000000000000000000005C -:10337000000000000000000000000000000000004D -:10338000000000000000000000000000000000003D -:1033900000000000000000000000000000003C00F1 -:1033A000C4D0010000000000000000000000000088 -:1033B000000000000000000000000000000000000D -:1033C00000000000000000000000000000000000FD -:1033D00000000000000000000000000000000000ED -:1033E0003C0000D1010000000000000000000000CF -:1033F00000000000000000000000000000000000CD -:1034000000000000000000000000000000000000BC -:1034100000000000000000000000000000000000AC -:1034200000003C003CD10100000000000000000052 -:10343000000000000000000000000000000000008C -:10344000000000000000000000000000000000007C -:10345000000000000000000000000000000000006C -:10346000000000003C0078D10100000000000000D6 -:10347000000000000000000000000000000000004C -:10348000000000000000000000000000000000003C -:10349000000000000000000000000000000000002C -:1034A0000000000000003C00B4D10100000000005A -:1034B000000000000000000000000000000000000C -:1034C00000000000000000000000000000000000FC -:1034D00000000000000000000000000000000000EC -:1034E00000000000000000003C00F0D101000000DE -:1034F00000000000000000000000000000000000CC -:1035000000000000000000000000000000000000BB -:1035100000000000000000000000000000000000AB -:10352000000000000000000000003C002CD2010060 -:10353000000000000000000000000000000000008B -:10354000000000000000000000000000000000007B -:10355000000000000000000000000000000000006B -:103560000000000000000000000000003C0068D2E5 -:10357000010000000000000000000000000000004A -:10358000000000000000000000000000000000003B -:10359000000000000000000000000000000000002B -:1035A00000000000000000000000000000003C00DF -:1035B000A4D2010000000000000000000000000094 -:1035C00000000000000000000000000000000000FB -:1035D00000000000000000000000000000000000EB -:1035E00000000000000000000000000000000000DB -:1035F0003C00E0D2010000000000000000000000DC -:1036000000000000000000000000000000000000BA -:1036100000000000000000000000000000000000AA -:10362000000000000000000000000000000000009A -:1036300000003C001CD3010000000000000000005E -:10364000000000000000000000000000000000007A -:10365000000000000000000000000000000000006A -:10366000000000000000000000000000000000005A -:10367000000000003C0058D30100000000000000E2 -:10368000000000000000000000000000000000003A -:10369000000000000000000000000000000000002A -:1036A000000000000000000000000000000000001A -:1036B0000000000000003C0094D301000000000066 -:1036C00000000000000000000000000000000000FA -:1036D00000000000000000000000000000000000EA -:1036E00000000000000000000000000000000000DA -:1036F00000000000000000003C00D0D301000000EA -:1037000000000000000000000000000000000000B9 -:1037100000000000000000000000000000000000A9 -:103720000000000000000000000000000000000099 -:10373000000000000000000000003C000CD401006C -:103740000000000000000000000000000000000079 -:103750000000000000000000000000000000000069 -:103760000000000000000000000000000000000059 -:103770000000000000000000000000003C0048D4F1 -:103780000100000000000000000000000000000038 -:103790000000000000000000000000000000000029 -:1037A0000000000000000000000000000000000019 -:1037B00000000000000000000000000000003C00CD -:1037C00084D40100000000000000000000000000A0 -:1037D00000000000000000000000000000000000E9 -:1037E00000000000000000000000000000000000D9 -:1037F00000000000000000000000000000000000C9 -:103800003C00C0D4010000000000000000000000E7 -:1038100000000000000000000000000000000000A8 -:103820000000000000000000000000000000000098 -:103830000000000000000000000000000000000088 -:1038400000003C00FCD4010000000000000000006B -:103850000000000000000000000000000000000068 -:103860000000000000000000000000000000000058 -:103870000000000000000000000000000000000048 -:10388000000000003C0038D50100000000000000EE -:103890000000000000000000000000000000000028 -:1038A0000000000000000000000000000000000018 -:1038B0000000000000000000000000000000000008 -:1038C0000000000000003C0074D501000000000072 -:1038D00000000000000000000000000000000000E8 -:1038E00000000000000000000000000000000000D8 -:1038F00000000000000000000000000000000000C8 -:1039000000000000000000003C00B0D501000000F5 -:1039100000000000000000000000000000000000A7 -:103920000000000000000000000000000000000097 -:103930000000000000000000000000000000000087 -:10394000000000000000000000003C00ECD5010079 -:103950000000000000000000000000000000000067 -:103960000000000000000000000000000000000057 -:103970000000000000000000000000000000000047 -:103980000000000000000000000000003C0028D6FD -:103990000100000000000000000000000000000026 -:1039A0000000000000000000000000000000000017 -:1039B0000000000000000000000000000000000007 -:1039C00000000000000000000000000000003C00BB -:1039D00064D60100000000000000000000000000AC -:1039E00000000000000000000000000000000000D7 -:1039F00000000000000000000000000000000000C7 -:103A000000000000000000000000000000000000B6 -:103A10003C00A0D6010000000000000000000000F3 -:103A20000000000000000000000000000000000096 -:103A30000000000000000000000000000000000086 -:103A40000000000000000000000000000000000076 -:103A500000003C00DCD60100000000000000000077 -:103A60000000000000000000000000000000000056 -:103A70000000000000000000000000000000000046 -:103A80000000000000000000000000000000000036 -:103A9000000000003C0018D70100000000000000FA -:103AA0000000000000000000000000000000000016 -:103AB0000000000000000000000000000000000006 -:103AC00000000000000000000000000000000000F6 -:103AD0000000000000003C0054D70100000000007E -:103AE00000000000000000000000000000000000D6 -:103AF00000000000000000000000000000000000C6 -:103B000000000000000000000000000000000000B5 -:103B100000000000000000003C0090D70100000001 -:103B20000000000000000000000000000000000095 -:103B30000000000000000000000000000000000085 -:103B40000000000000000000000000000000000075 -:103B5000000000000000000000003C00CCD7010085 -:103B60000000000000000000000000000000000055 -:103B70000000000000000000000000000000000045 -:103B80000000000000000000000000000000000035 -:103B90000000000000000000000000003C0008D809 -:103BA0000100000000000000000000000000000014 -:103BB0000000000000000000000000000000000005 -:103BC00000000000000000000000000000000000F5 -:103BD00000000000000000000000000000003C00A9 -:103BE00044D80100000000000000000000000000B8 -:103BF00000000000000000000000000000000000C5 -:103C000000000000000000000000000000000000B4 -:103C100000000000000000000000000000000000A4 -:103C20003C0080D8010000000000000000000000FF -:103C30000000000000000000000000000000000084 -:103C40000000000000000000000000000000000074 -:103C50000000000000000000000000000000000064 -:103C600000003C00BCD80100000000000000000083 -:103C70000000000000000000000000000000000044 -:103C80000000000000000000000000000000000034 -:103C90000000000000000000000000000000000024 -:103CA000000000003C00F8D8010000000000000007 -:103CB0000000000000000000000000000000000004 -:103CC00000000000000000000000000000000000F4 -:103CD00000000000000000000000000000000000E4 -:103CE0000000000000003C0034D90100000000008A -:103CF00000000000000000000000000000000000C4 -:103D000000000000000000000000000000000000B3 -:103D100000000000000000000000000000000000A3 -:103D200000000000000000003C0070D9010000000D -:103D30000000000000000000000000000000000083 -:103D40000000000000000000000000000000000073 -:103D50000000000000000000000000000000000063 -:103D6000000000000000000000003C00ACD9010091 -:103D70000000000000000000000000000000000043 -:103D80000000000000000000000000000000000033 -:103D90000000000000000000000000000000000023 -:103DA0000000000000000000000000003C00E8D916 -:103DB0000100000000000000000000000000000002 -:103DC00000000000000000000000000000000000F3 -:103DD00000000000000000000000000000000000E3 -:103DE00000000000000000000000000000003C0097 -:103DF00024DA0100000000000000000000000000C4 -:103E000000000000000000000000000000000000B2 -:103E100000000000000000000000000000000000A2 -:103E20000000000000000000000000000000000092 -:103E30003C0060DA0100000000000000000000000B -:103E40000000000000000000000000000000000072 -:103E50000000000000000000000000000000000062 -:103E60000000000000000000000000000000000052 -:103E700000003C009CDA010000000000000000008F -:103E80000000000000000000000000000000000032 -:103E90000000000000000000000000000000000022 -:103EA0000000000000000000000000000000000012 -:103EB000000000003C00D8DA010000000000000013 -:103EC00000000000000000000000000000000000F2 -:103ED00000000000000000000000000000000000E2 -:103EE00000000000000000000000000000000000D2 -:103EF0000000000000003C0014DB01000000000096 -:103F000000000000000000000000000000000000B1 -:103F100000000000000000000000000000000000A1 -:103F20000000000000000000000000000000000091 -:103F300000000000000000003C0050DB0100000019 -:103F40000000000000000000000000000000000071 -:103F50000000000000000000000000000000000061 -:103F60000000000000000000000000000000000051 -:103F7000000000000000000000003C008CDB01009D -:103F80000000000000000000000000000000000031 -:103F90000000000000000000000000000000000021 -:103FA0000000000000000000000000000000000011 -:103FB0000000000000000000000000003C00C8DB22 -:103FC00001000000000000000000000000000000F0 -:103FD00000000000000000000000000000000000E1 -:103FE00000000000000000000000000000000000D1 -:103FF00000000000000000000000000000003C0085 -:1040000004DC0100000000000000000000000000CF -:1040100000000000000000000000000000000000A0 -:104020000000000000000000000000000000000090 -:104030000000000000000000000000000000000080 -:104040003C0040DC01000000000000000000000017 -:104050000000000000000000000000000000000060 -:104060000000000000000000000000000000000050 -:104070000000000000000000000000000000000040 -:1040800000003C007CDC010000000000000000009B -:104090000000000000000000000000000000000020 -:1040A0000000000000000000000000000000000010 -:1040B0000000000000000000000000000000000000 -:1040C000000000003C00B8DC01000000000000001F -:1040D00000000000000000000000000000000000E0 -:1040E00000000000000000000000000000000000D0 -:1040F00000000000000000000000000000000000C0 -:104100000000000000003C00F4DC010000000000A2 -:10411000000000000000000000000000000000009F -:10412000000000000000000000000000000000008F -:10413000000000000000000000000000000000007F -:1041400000000000000000003C0030DD0100000025 -:10415000000000000000000000000000000000005F -:10416000000000000000000000000000000000004F -:10417000000000000000000000000000000000003F -:10418000000000000000000000003C006CDD0100A9 -:10419000000000000000000000000000000000001F -:1041A000000000000000000000000000000000000F -:1041B00000000000000000000000000000000000FF -:1041C0000000000000000000000000003C00A8DD2E -:1041D00001000000000000000000000000000000DE -:1041E00000000000000000000000000000000000CF -:1041F00000000000000000000000000000000000BF -:1042000000000000000000000000000000003C0072 -:10421000E4DD0100000000000000000000000000DC -:10422000000000000000000000000000000000008E -:10423000000000000000000000000000000000007E -:10424000000000000000000000000000000000006E -:104250003C0020DE01000000000000000000000023 -:10426000000000000000000000000000000000004E -:10427000000000000000000000000000000000003E -:10428000000000000000000000000000000000002E -:1042900000003C005CDE01000000000000000000A7 -:1042A000000000000000000000000000000000000E -:1042B00000000000000000000000000000000000FE -:1042C00000000000000000000000000000000000EE -:1042D000000000003C0098DE01000000000000002B -:1042E00000000000000000000000000000000000CE -:1042F00000000000000000000000000000000000BE -:1043000000000000000000000000000000000000AD -:104310000000000000003C00D4DE010000000000AE -:10432000000000000000000000000000000000008D -:10433000000000000000000000000000000000007D -:10434000000000000000000000000000000000006D -:1043500000000000000000003C0010DF0100000031 -:10436000000000000000000000000000000000004D -:10437000000000000000000000000000000000003D -:10438000000000000000000000000000000000002D -:10439000000000000000000000003C004CDF0100B5 -:1043A000000000000000000000000000000000000D -:1043B00000000000000000000000000000000000FD -:1043C00000000000000000000000000000000000ED -:1043D0000000000000000000000000003C0088DF3A -:1043E00001000000000000000000000000000000CC -:1043F00000000000000000000000000000000000BD -:1044000000000000000000000000000000000000AC -:1044100000000000000000000000000000003C0060 -:10442000C4DF0100000000000000000000000000E8 -:10443000000000000000000000000000000000007C -:10444000000000000000000000000000000000006C -:10445000000000000000000000000000000000005C -:104460003C0000E00100000000000000000000002F -:10447000000000000000000000000000000000003C -:10448000000000000000000000000000000000002C -:10449000000000000000000000000000000000001C -:1044A00000003C003CE001000000000000000000B3 -:1044B00000000000000000000000000000000000FC -:1044C00000000000000000000000000000000000EC -:1044D00000000000000000000000000000000000DC -:1044E000000000003C0078E0010000000000000037 -:1044F00000000000000000000000000000000000BC -:1045000000000000000000000000000000000000AB -:10451000000000000000000000000000000000009B -:104520000000000000003C00B4E0010000000000BA -:10453000000000000000000000000000000000007B -:10454000000000000000000000000000000000006B -:10455000000000000000000000000000000000005B -:1045600000000000000000003C00F0E0010000003E -:10457000000000000000000000000000000000003B -:10458000000000000000000000000000000000002B -:10459000000000000000000000000000000000001B -:1045A000000000000000000000003C002CE10100C1 -:1045B00000000000000000000000000000000000FB -:1045C00000000000000000000000000000000000EB -:1045D00000000000000000000000000000000000DB -:1045E0000000000000000000000000003C0068E146 -:1045F00001000000000000000000000000000000BA -:1046000000000000000000000000000000000000AA -:10461000000000000000000000000000000000009A -:1046200000000000000000000000000000003C004E -:10463000A4E10100000000000000000000000000F4 -:10464000000000000000000000000000000000006A -:10465000000000000000000000000000000000005A -:10466000000000000000000000000000000000004A -:104670003C00E0E10100000000000000000000003C -:10468000000000000000000000000000000000002A -:10469000000000000000000000000000000000001A -:1046A000000000000000000000000000000000000A -:1046B00000003C001CE201000000000000000000BF -:1046C00000000000000000000000000000000000EA -:1046D00000000000000000000000000000000000DA -:1046E00000000000000000000000000000000000CA -:1046F000000000003C0058E2010000000000000043 -:1047000000000000000000000000000000000000A9 -:104710000000000000000000000000000000000099 -:104720000000000000000000000000000000000089 -:104730000000000000003C0094E2010000000000C6 -:104740000000000000000000000000000000000069 -:104750000000000000000000000000000000000059 -:104760000000000000000000000000000000000049 -:1047700000000000000000003C00D0E2010000004A -:104780000000000000000000000000000000000029 -:104790000000000000000000000000000000000019 -:1047A0000000000000000000000000000000000009 -:1047B000000000000000000000003C000CE30100CD -:1047C00000000000000000000000000000000000E9 -:1047D00000000000000000000000000000000000D9 -:1047E00000000000000000000000000000000000C9 -:1047F0000000000000000000000000003C0048E352 -:1048000001000000000000000000000000000000A7 -:104810000000000000000000000000000000000098 -:104820000000000000000000000000000000000088 -:1048300000000000000000000000000000003C003C -:1048400084E3010000000000000000000000000000 -:104850000000000000000000000000000000000058 -:104860000000000000000000000000000000000048 -:104870000000000000000000000000000000000038 -:104880003C00C0E301000000000000000000000048 -:104890000000000000000000000000000000000018 -:1048A0000000000000000000000000000000000008 -:1048B00000000000000000000000000000000000F8 -:1048C00000003C00FCE301000000000000000000CC -:1048D00000000000000000000000000000000000D8 -:1048E00000000000000000000000000000000000C8 -:1048F00000000000000000000000000000000000B8 -:10490000000000003C0038E401000000000000004E -:104910000000000000000000000000000000000097 -:104920000000000000000000000000000000000087 -:104930000000000000000000000000000000000077 -:104940000000000000003C0074E4010000000000D2 -:104950000000000000000000000000000000000057 -:104960000000000000000000000000000000000047 -:104970000000000000000000000000000000000037 -:1049800000000000000000003C00B0E40100000056 -:104990000000000000000000000000000000000017 -:1049A0000000000000000000000000000000000007 -:1049B00000000000000000000000000000000000F7 -:1049C000000000000000000000003C00ECE40100DA -:1049D00000000000000000000000000000000000D7 -:1049E00000000000000000000000000000000000C7 -:1049F00000000000000000000000000000000000B7 -:104A00000000000000000000000000003C0028E55D -:104A10000100000000000000000000000000000095 -:104A20000000000000000000000000000000000086 -:104A30000000000000000000000000000000000076 -:104A400000000000000000000000000000003C002A -:104A500064E501000000000000000000000000000C -:104A60000000000000000000000000000000000046 -:104A70000000000000000000000000000000000036 -:104A80000000000000000000000000000000000026 -:104A90003C00A0E501000000000000000000000054 -:104AA0000000000000000000000000000000000006 -:104AB00000000000000000000000000000000000F6 -:104AC00000000000000000000000000000000000E6 -:104AD00000003C00DCE501000000000000000000D8 -:104AE00000000000000000000000000000000000C6 -:104AF00000000000000000000000000000000000B6 -:104B000000000000000000000000000000000000A5 -:104B1000000000003C0018E601000000000000005A -:104B20000000000000000000000000000000000085 -:104B30000000000000000000000000000000000075 -:104B40000000000000000000000000000000000065 -:104B50000000000000003C0054E6010000000000DE -:104B60000000000000000000000000000000000045 -:104B70000000000000000000000000000000000035 -:104B80000000000000000000000000000000000025 -:104B900000000000000000003C0090E60100000062 -:104BA0000000000000000000000000000000000005 -:104BB00000000000000000000000000000000000F5 -:104BC00000000000000000000000000000000000E5 -:104BD000000000000000000000003C00CCE60100E6 -:104BE00000000000000000000000000000000000C5 -:104BF00000000000000000000000000000000000B5 -:104C000000000000000000000000000000000000A4 -:104C10000000000000000000000000003C0008E769 -:104C20000100000000000000000000000000000083 -:104C30000000000000000000000000000000000074 -:104C40000000000000000000000000000000000064 -:104C500000000000000000000000000000003C0018 -:104C600044E7010000000000000000000000000018 -:104C70000000000000000000000000000000000034 -:104C80000000000000000000000000000000000024 -:104C90000000000000000000000000000000000014 -:104CA0003C0080E701000000000000000000000060 -:104CB00000000000000000000000000000000000F4 -:104CC00000000000000000000000000000000000E4 -:104CD00000000000000000000000000000000000D4 -:104CE00000003C00BCE701000000000000000000E4 -:104CF00000000000000000000000000000000000B4 -:104D000000000000000000000000000000000000A3 -:104D10000000000000000000000000000000000093 -:104D2000000000003C00F8E7010000000000000067 -:104D30000000000000000000000000000000000073 -:104D40000000000000000000000000000000000063 -:104D50000000000000000000000000000000000053 -:104D60000000000000003C0034E8010000000000EA -:104D70000000000000000000000000000000000033 -:104D80000000000000000000000000000000000023 -:104D90000000000000000000000000000000000013 -:104DA00000000000000000003C0070E8010000006E -:104DB00000000000000000000000000000000000F3 -:104DC00000000000000000000000000000000000E3 -:104DD00000000000000000000000000000000000D3 -:104DE000000000000000000000003C00ACE80100F2 -:104DF00000000000000000000000000000000000B3 -:104E000000000000000000000000000000000000A2 -:104E10000000000000000000000000000000000092 -:104E20000000000000000000000000003C00E8E876 -:104E30000100000000000000000000000000000071 -:104E40000000000000000000000000000000000062 -:104E50000000000000000000000000000000000052 -:104E600000000000000000000000000000003C0006 -:104E700024E9010000000000000000000000000024 -:104E80000000000000000000000000000000000022 -:104E90000000000000000000000000000000000012 -:104EA0000000000000000000000000000000000002 -:104EB0003C0060E90100000000000000000000006C -:104EC00000000000000000000000000000000000E2 -:104ED00000000000000000000000000000000000D2 -:104EE00000000000000000000000000000000000C2 -:104EF00000003C009CE901000000000000000000F0 -:104F000000000000000000000000000000000000A1 -:104F10000000000000000000000000000000000091 -:104F20000000000000000000000000000000000081 -:104F3000000000003C00D8E9010000000000000073 -:104F40000000000000000000000000000000000061 -:104F50000000000000000000000000000000000051 -:104F60000000000000000000000000000000000041 -:104F70000000000000003C0014EA010000000000F6 -:104F80000000000000000000000000000000000021 -:104F90000000000000000000000000000000000011 -:104FA0000000000000000000000000000000000001 -:104FB00000000000000000003C0050EA010000007A -:104FC00000000000000000000000000000000000E1 -:104FD00000000000000000000000000000000000D1 -:104FE00000000000000000000000000000000000C1 -:104FF000000000000000000000003C008CEA0100FE -:1050000000000000000000000000000000000000A0 -:105010000000000000000000000000000000000090 -:105020000000000000000000000000000000000080 -:105030000000000000000000000000003C00C8EA82 -:10504000010000000000000000000000000000005F -:105050000000000000000000000000000000000050 -:105060000000000000000000000000000000000040 -:1050700000000000000000000000000000003C00F4 -:1050800004EB010000000000000000000000000030 -:105090000000000000000000000000000000000010 -:1050A0000000000000000000000000000000000000 -:1050B00000000000000000000000000000000000F0 -:1050C0003C0040EB01000000000000000000000078 -:1050D00000000000000000000000000000000000D0 -:1050E00000000000000000000000000000000000C0 -:1050F00000000000000000000000000000000000B0 -:1051000000003C007CEB01000000000000000000FB -:10511000000000000000000000000000000000008F -:10512000000000000000000000000000000000007F -:10513000000000000000000000000000000000006F -:10514000000000003C00B8EB01000000000000007F -:10515000000000000000000000000000000000004F -:10516000000000000000000000000000000000003F -:10517000000000000000000000000000000000002F -:105180000000000000003C00F4EB01000000000003 -:10519000000000000000000000000000000000000F -:1051A00000000000000000000000000000000000FF -:1051B00000000000000000000000000000000000EF -:1051C00000000000000000003C0030EC0100000086 -:1051D00000000000000000000000000000000000CF -:1051E00000000000000000000000000000000000BF -:1051F00000000000000000000000000000000000AF -:10520000000000000000000000003C006CEC010009 -:10521000000000000000000000000000000000008E -:10522000000000000000000000000000000000007E -:10523000000000000000000000000000000000006E -:105240000000000000000000000000003C00A8EC8E -:10525000010000000000000000000000000000004D -:10526000000000000000000000000000000000003E -:10527000000000000000000000000000000000002E -:1052800000000000000000000000000000003C00E2 -:10529000E4EC01000000000000000000000000003D -:1052A00000000000000000000000000000000000FE -:1052B00000000000000000000000000000000000EE -:1052C00000000000000000000000000000000000DE -:1052D0003C0020ED01000000000000000000000084 -:1052E00000000000000000000000000000000000BE -:1052F00000000000000000000000000000000000AE -:10530000000000000000000000000000000000009D -:1053100000003C005CED0100000000000000000007 -:10532000000000000000000000000000000000007D -:10533000000000000000000000000000000000006D -:10534000000000000000000000000000000000005D -:10535000000000003C0098ED01000000000000008B -:10536000000000000000000000000000000000003D -:10537000000000000000000000000000000000002D -:10538000000000000000000000000000000000001D -:105390000000000000003C00D4ED0100000000000F -:1053A00000000000000000000000000000000000FD -:1053B00000000000000000000000000000000000ED -:1053C00000000000000000000000000000000000DD -:1053D00000000000000000003C0010EE0100000092 -:1053E00000000000000000000000000000000000BD -:1053F00000000000000000000000000000000000AD -:10540000000000000000000000000000000000009C -:10541000000000000000000000003C004CEE010015 -:10542000000000000000000000000000000000007C -:10543000000000000000000000000000000000006C -:10544000000000000000000000000000000000005C -:105450000000000000000000000000003C0088EE9A -:10546000010000000000000000000000000000003B -:10547000000000000000000000000000000000002C -:10548000000000000000000000000000000000001C -:1054900000000000000000000000000000003C00D0 -:1054A000C4EE010000000000000000000000000049 -:1054B00000000000000000000000000000000000EC -:1054C00000000000000000000000000000000000DC -:1054D00000000000000000000000000000000000CC -:1054E0003C0000EF01000000000000000000000090 -:1054F00000000000000000000000000000000000AC -:10550000000000000000000000000000000000009B -:10551000000000000000000000000000000000008B -:1055200000003C003CEF0100000000000000000013 -:10553000000000000000000000000000000000006B -:10554000000000000000000000000000000000005B -:10555000000000000000000000000000000000004B -:10556000000000003C0078EF010000000000000097 -:10557000000000000000000000000000000000002B -:10558000000000000000000000000000000000001B -:10559000000000000000000000000000000000000B -:1055A0000000000000003C00B4EF0100000000001B -:1055B00000000000000000000000000000000000EB -:1055C00000000000000000000000000000000000DB -:1055D00000000000000000000000000000000000CB -:1055E00000000000000000003C00F0EF010000009F -:1055F00000000000000000000000000000000000AB -:10560000000000000000000000000000000000009A -:10561000000000000000000000000000000000008A -:10562000000000000000000000003C002CF0010021 -:10563000000000000000000000000000000000006A -:10564000000000000000000000000000000000005A -:10565000000000000000000000000000000000004A -:105660000000000000000000000000003C0068F0A6 -:105670000100000000000000000000000000000029 -:10568000000000000000000000000000000000001A -:10569000000000000000000000000000000000000A -:1056A00000000000000000000000000000003C00BE -:1056B000A4F0010000000000000000000000000055 -:1056C00000000000000000000000000000000000DA -:1056D00000000000000000000000000000000000CA -:1056E00000000000000000000000000000000000BA -:1056F0003C00E0F00100000000000000000000009D -:105700000000000000000000000000000000000099 -:105710000000000000000000000000000000000089 -:105720000000000000000000000000000000000079 -:1057300000003C001CF1010000000000000000001F -:105740000000000000000000000000000000000059 -:105750000000000000000000000000000000000049 -:105760000000000000000000000000000000000039 -:10577000000000003C0058F10100000000000000A3 -:105780000000000000000000000000000000000019 -:105790000000000000000000000000000000000009 -:1057A00000000000000000000000000000000000F9 -:1057B0000000000000003C0094F101000000000027 -:1057C00000000000000000000000000000000000D9 -:1057D00000000000000000000000000000000000C9 -:1057E00000000000000000000000000000000000B9 -:1057F00000000000000000003C00D0F101000000AB -:105800000000000000000000000000000000000098 -:105810000000000000000000000000000000000088 -:105820000000000000000000000000000000000078 -:10583000000000000000000000003C000CF201002D -:105840000000000000000000000000000000000058 -:105850000000000000000000000000000000000048 -:105860000000000000000000000000000000000038 -:105870000000000000000000000000003C0048F2B2 -:105880000100000000000000000000000000000017 -:105890000000000000000000000000000000000008 -:1058A00000000000000000000000000000000000F8 -:1058B00000000000000000000000000000003C00AC -:1058C00084F2010000000000000000000000000061 -:1058D00000000000000000000000000000000000C8 -:1058E00000000000000000000000000000000000B8 -:1058F00000000000000000000000000000000000A8 -:105900003C00C0F2010000000000000000000000A8 -:105910000000000000000000000000000000000087 -:105920000000000000000000000000000000000077 -:105930000000000000000000000000000000000067 -:1059400000003C00FCF2010000000000000000002C -:105950000000000000000000000000000000000047 -:105960000000000000000000000000000000000037 -:105970000000000000000000000000000000000027 -:10598000000000003C0038F30100000000000000AF -:105990000000000000000000000000000000000007 -:1059A00000000000000000000000000000000000F7 -:1059B00000000000000000000000000000000000E7 -:1059C0000000000000003C0074F301000000000033 -:1059D00000000000000000000000000000000000C7 -:1059E00000000000000000000000000000000000B7 -:1059F00000000000000000000000000000000000A7 -:105A000000000000000000003C00B0F301000000B6 -:105A10000000000000000000000000000000000086 -:105A20000000000000000000000000000000000076 -:105A30000000000000000000000000000000000066 -:105A4000000000000000000000003C00ECF301003A -:105A50000000000000000000000000000000000046 -:105A60000000000000000000000000000000000036 -:105A70000000000000000000000000000000000026 -:105A80000000000000000000000000003C0028F4BE -:105A90000100000000000000000000000000000005 -:105AA00000000000000000000000000000000000F6 -:105AB00000000000000000000000000000000000E6 -:105AC00000000000000000000000000000003C009A -:105AD00064F401000000000000000000000000006D -:105AE00000000000000000000000000000000000B6 -:105AF00000000000000000000000000000000000A6 -:105B00000000000000000000000000000000000095 -:105B10003C00A0F4010000000000000000000000B4 -:105B20000000000000000000000000000000000075 -:105B30000000000000000000000000000000000065 -:105B40000000000000000000000000000000000055 -:105B500000003C00DCF40100000000000000000038 -:105B60000000000000000000000000000000000035 -:105B70000000000000000000000000000000000025 -:105B80000000000000000000000000000000000015 -:105B9000000000003C0018F50100000000000000BB -:105BA00000000000000000000000000000000000F5 -:105BB00000000000000000000000000000000000E5 -:105BC00000000000000000000000000000000000D5 -:105BD0000000000000003C0054F50100000000003F -:105BE00000000000000000000000000000000000B5 -:105BF00000000000000000000000000000000000A5 -:105C00000000000000000000000000000000000094 -:105C100000000000000000003C0090F501000000C2 -:105C20000000000000000000000000000000000074 -:105C30000000000000000000000000000000000064 -:105C40000000000000000000000000000000000054 -:105C5000000000000000000000003C00CCF5010046 -:105C60000000000000000000000000000000000034 -:105C70000000000000000000000000000000000024 -:105C80000000000000000000000000000000000014 -:105C90000000000000000000000000003C0008F6CA -:105CA00001000000000000000000000000000000F3 -:105CB00000000000000000000000000000000000E4 -:105CC00000000000000000000000000000000000D4 -:105CD00000000000000000000000000000003C0088 -:105CE00044F6010000000000000000000000000079 -:105CF00000000000000000000000000000000000A4 -:105D00000000000000000000000000000000000093 -:105D10000000000000000000000000000000000083 -:105D20003C0080F6010000000000000000000000C0 -:105D30000000000000000000000000000000000063 -:105D40000000000000000000000000000000000053 -:105D50000000000000000000000000000000000043 -:105D600000003C00BCF60100000000000000000044 -:105D70000000000000000000000000000000000023 -:105D80000000000000000000000000000000000013 -:105D90000000000000000000000000000000000003 -:105DA000000000003C00F8F60100000000000000C8 -:105DB00000000000000000000000000000000000E3 -:105DC00000000000000000000000000000000000D3 -:105DD00000000000000000000000000000000000C3 -:105DE0000000000000003C0034F70100000000004B -:105DF00000000000000000000000000000000000A3 -:105E00000000000000000000000000000000000092 -:105E10000000000000000000000000000000000082 -:105E200000000000000000003C0070F701000000CE -:105E30000000000000000000000000000000000062 -:105E40000000000000000000000000000000000052 -:105E50000000000000000000000000000000000042 -:105E6000000000000000000000003C00ACF7010052 -:105E70000000000000000000000000000000000022 -:105E80000000000000000000000000000000000012 -:105E90000000000000000000000000000000000002 -:105EA0000000000000000000000000003C00E8F7D7 -:105EB00001000000000000000000000000000000E1 -:105EC00000000000000000000000000000000000D2 -:105ED00000000000000000000000000000000000C2 -:105EE00000000000000000000000000000003C0076 -:105EF00024F8010000000000000000000000000085 -:105F00000000000000000000000000000000000091 -:105F10000000000000000000000000000000000081 -:105F20000000000000000000000000000000000071 -:105F30003C0060F8010000000000000000000000CC -:105F40000000000000000000000000000000000051 -:105F50000000000000000000000000000000000041 -:105F60000000000000000000000000000000000031 -:105F700000003C009CF80100000000000000000050 -:105F80000000000000000000000000000000000011 -:105F90000000000000000000000000000000000001 -:105FA00000000000000000000000000000000000F1 -:105FB000000000003C00D8F80100000000000000D4 -:105FC00000000000000000000000000000000000D1 -:105FD00000000000000000000000000000000000C1 -:105FE00000000000000000000000000000000000B1 -:105FF0000000000000003C0014F901000000000057 -:106000000000000000000000000000000000000090 -:106010000000000000000000000000000000000080 -:106020000000000000000000000000000000000070 -:1060300000000000000000003C0050F901000000DA -:106040000000000000000000000000000000000050 -:106050000000000000000000000000000000000040 -:106060000000000000000000000000000000000030 -:10607000000000000000000000003C008CF901005E -:106080000000000000000000000000000000000010 -:106090000000000000000000000000000000000000 -:1060A00000000000000000000000000000000000F0 -:1060B0000000000000000000000000003C00C8F9E3 -:1060C00001000000000000000000000000000000CF -:1060D00000000000000000000000000000000000C0 -:1060E00000000000000000000000000000000000B0 -:1060F00000000000000000000000000000003C0064 -:1061000004FA010000000000000000000000000090 -:10611000000000000000000000000000000000007F -:10612000000000000000000000000000000000006F -:10613000000000000000000000000000000000005F -:106140003C0040FA010000000000000000000000D8 -:10615000000000000000000000000000000000003F -:10616000000000000000000000000000000000002F -:10617000000000000000000000000000000000001F -:1061800000003C007CFA010000000000000000005C -:1061900000000000000000000000000000000000FF -:1061A00000000000000000000000000000000000EF -:1061B00000000000000000000000000000000000DF -:1061C000000000003C00B8FA0100000000000000E0 -:1061D00000000000000000000000000000000000BF -:1061E00000000000000000000000000000000000AF -:1061F000000000000000000000000000000000009F -:106200000000000000003C00F4FA01000000000063 -:10621000000000000000000000000000000000007E -:10622000000000000000000000000000000000006E -:10623000000000000000000000000000000000005E -:1062400000000000000000003C0030FB01000000E6 -:10625000000000000000000000000000000000003E -:10626000000000000000000000000000000000002E -:10627000000000000000000000000000000000001E -:10628000000000000000000000003C006CFB01006A -:1062900000000000000000000000000000000000FE -:1062A00000000000000000000000000000000000EE -:1062B00000000000000000000000000000000000DE -:1062C0000000000000000000000000003C00A8FBEF -:1062D00001000000000000000000000000000000BD -:1062E00000000000000000000000000000000000AE -:1062F000000000000000000000000000000000009E -:1063000000000000000000000000000000003C0051 -:10631000E4FB01000000000000000000000000009D -:10632000000000000000000000000000000000006D -:10633000000000000000000000000000000000005D -:10634000000000000000000000000000000000004D -:106350003C0020FC010000000000000000000000E4 -:10636000000000000000000000000000000000002D -:10637000000000000000000000000000000000001D -:10638000000000000000000000000000000000000D -:1063900000003C005CFC0100000000000000000068 -:1063A00000000000000000000000000000000000ED -:1063B00000000000000000000000000000000000DD -:1063C00000000000000000000000000000000000CD -:1063D000000000003C0098FC0100000000000000EC -:1063E00000000000000000000000000000000000AD -:1063F000000000000000000000000000000000009D -:10640000000000000000000000000000000000008C -:106410000000000000003C00D4FC0100000000006F -:10642000000000000000000000000000000000006C -:10643000000000000000000000000000000000005C -:10644000000000000000000000000000000000004C -:1064500000000000000000003C0010FD01000000F2 -:10646000000000000000000000000000000000002C -:10647000000000000000000000000000000000001C -:10648000000000000000000000000000000000000C -:10649000000000000000000000003C004CFD010076 -:1064A00000000000000000000000000000000000EC -:1064B00000000000000000000000000000000000DC -:1064C00000000000000000000000000000000000CC -:1064D0000000000000000000000000003C0088FDFB -:1064E00001000000000000000000000000000000AB -:1064F000000000000000000000000000000000009C -:10650000000000000000000000000000000000008B -:1065100000000000000000000000000000003C003F -:10652000C4FD0100000000000000000000000000A9 -:10653000000000000000000000000000000000005B -:10654000000000000000000000000000000000004B -:10655000000000000000000000000000000000003B -:106560003C0000FE010000000000000000000000F0 -:10657000000000000000000000000000000000001B -:10658000000000000000000000000000000000000B -:1065900000000000000000000000000000000000FB -:1065A00000003C003CFE0100000000000000000074 -:1065B00000000000000000000000000000000000DB -:1065C00000000000000000000000000000000000CB -:1065D00000000000000000000000000000000000BB -:1065E000000000003C0078FE0100000000000000F8 -:1065F000000000000000000000000000000000009B -:10660000000000000000000000000000000000008A -:10661000000000000000000000000000000000007A -:106620000000000000003C00B4FE0100000000007B -:10663000000000000000000000000000000000005A -:10664000000000000000000000000000000000004A -:10665000000000000000000000000000000000003A -:1066600000000000000000003C00F0FE01000000FF -:10667000000000000000000000000000000000001A -:10668000000000000000000000000000000000000A -:1066900000000000000000000000000000000000FA -:1066A000000000000000000000003C002CFF010082 -:1066B00000000000000000000000000000000000DA -:1066C00000000000000000000000000000000000CA -:1066D00000000000000000000000000000000000BA -:1066E0000000000000000000000000000C0068FF37 -:1066F00001000000000000000000000000003C005D -:106700000010040070B52B4806218175C175017E0B -:10671000490849000176017E02229143017626490B -:106720000B785B085B000B7004238B700C234376A3 -:10673000202303751A244475242484761024C476F7 -:106740003C003C1004002A254D70057A3026B543E4 -:1067500020350572857A6D086D008572857A9543BE -:106760008572857A042635438572857A08263543F5 -:106770008572857AA5438572057B2C430473047B5F -:106780001C433C00781004000473047B40252C4318 -:106790000473847A23438372837AAB438372037BCB -:1067A00080242343037308789043087008780122FB -:1067B00010430870087804229043087070BD0000F0 -:1067C0000C8007003C00B4100400808007000149E1 -:1067D00004204873704740800700034980B50020BB -:1067E000088000F00AFB80BD0000FC6B01007047D0 -:1067F000000080B500F067FB80BD80B50A49182015 -:10680000C1F73BFA09493C00F01004000220C1F72F -:1068100037FA08491F20C1F733FA07491C20C1F78E -:106820002FFA06490320C1F72BFA80BD992A0000F0 -:1068300041250000552500005D2500003925000098 -:1068400080B5BFF791FD80BD3C002C11040080B5E0 -:10685000054A05490A20BFF74EFF0120044980027E -:106860000860486080BDB4740100B164000000108D -:10687000070080B500F091FE80BD80B5054A05494E -:106880001B20BFF738FF012004493C0068110400B9 -:10689000C0060860486080BDB87401002D6E00001D -:1068A0000010070080B5044800F080FE0349002076 -:1068B0004860886080BD0000414B0000BC7401004E -:1068C00080B5C5F7D5FECEF7D9F803493C00A41131 -:1068D0000400086003490A20D1F7EFF880BDBC74BA -:1068E0000100496E000080B5012220210620C8F772 -:1068F00056FCBFF770FE03490020086020210248C3 -:10690000BFF763F980BDCC5C0100646D01003C0001 -:10691000E0110400084880B50068002805D006484A -:106920005430426A0021BFF7F3F8044A04490320B7 -:10693000BFF7ACFD80BD0000506D010089980000DC -:106940009198000080B500F003F800F019F880BDC0 -:106950003C001C12040010B5094C6021201CBFF73C -:106960003AF90020C043A0602060FF200230E0849C -:106970002022201C40300249BFF75BF910BD0010F7 -:1069800007007052010000200A49C0438860094B8B -:106990000A493C0058120400002082000130000621 -:1069A000000E20289950F8D30649044A081C1030DC -:1069B000083A03C27047000000100700E07E0100A3 -:1069C0007575000000A00700044800210022002384 -:1069D0000EC00C383C009412040001214160704745 -:1069E0000000707801007047000003480021002279 -:1069F00000230EC008C070470000885A01000449F7 -:106A000080B500204861024840211C30BFF7E9F8FA -:106A100080BDFC5A01003C00D012040080B5CEF7C6 -:106A20003FF80349886103490320D1F755F880BD39 -:106A3000FC5A01000D17010080B5C0F7A5F980BD13 -:106A4000FEB56C4900200090C8786B4C6B4F430733 -:106A5000C006C017DB0EE3583C000C1304000130E5 -:106A600038623B61081C8078664E03224107A036DD -:106A70000296490F3172890061583C1C6161019195 -:106A8000C006C00F7862201C002787610020211CEF -:106A9000C86159485949007809793C0048130400F5 -:106AA0005A4C4E07760F711C8C46B1008E465649E3 -:106AB0008031002824D0524F01287F781AD0022834 -:106AC00071D14F48002F0CD0012F6CD140794D4D22 -:106AD0004007400F8200AA584B4D01303C00841300 -:106AE0000400EA61A07304224B48484DC8614A483B -:106AF000002F00D04A482F1C11E04248002F55D1EA -:106B00000770022747703F484078002810D00128BE -:106B100001D002284AD13F483D4FC8613F483C0060 -:106B2000C013040088613A4970460858351CB861A2 -:106B30006046607304E03C48022288613B48C861BB -:106B40000020324906E00E18B6787607760F042E3C -:106B50002FD801309042F6D3C8792E4FC007C00F0E -:106B60003C00FC130400F86033484168194341605D -:106B7000816819438160019AB9698C461143FA69A9 -:106B8000866811438E4386604668314341600199AF -:106B90000B43181C614608431043011C00220220CD -:106BA000C7F73C003814040003FA1E4E403E7078CC -:106BB000C008C00028437070701C017800E029E014 -:106BC0000825A94301700120C043B08000210120A5 -:106BD000CFF76CFC301C8030817809090901817085 -:106BE0000F2101703C0074140400164A69041160FE -:106BF0005160029E1021327A7B6A002B00D1002165 -:106C000011432173817829438170E0780121084381 -:106C1000E070D2F7F2F9012000900098FEBDC05755 -:106C200001006C4301003C00B0140400A46C01009E -:106C300040900700C91D0000811D0000A51D000037 -:106C4000991D0000F11D0000100007000010070052 -:106C50000349002088620870487008710862704714 -:106C6000AC7E010080B501213C00EC140400002042 -:106C7000CDF769FF80BDB0B50F48C0F718FC0E4DC9 -:106C8000032028700D490D480C3948600D480A4C06 -:106C9000886040211834201CBEF7C1FFFF216868BE -:106CA000090608432060FF2106223C002815040045 -:106CB000201DBFF779F80120E060B0BDC0A8130A1D -:106CC000206E0100C0A81301FFFFFF0080B502493C -:106CD0000120C8F745FF80BD9D1C000098B50C4CF5 -:106CE00000206060E0600B4B0B4982003C006415A3 -:106CF0000400013020289950FADB6A460949052032 -:106D0000BFF72FFD0020C043206006492020086007 -:106D1000486098BD00000040070030740100A9756C -:106D20000000B59F000000100700054900203C004E -:106D3000A0150400086005488178282291438170DD -:106D40008178114381707047786E01000000070060 -:106D500070470000414810B50068022188433F4950 -:106D60000860081C0068022108433C4908603C4850 -:106D70003C00DC1504004068802188433A494860A3 -:106D8000081C006880210843374908603748017AA9 -:106D9000012421430172017A022211430172017A16 -:106DA000042291430172017A082211430172017B8E -:106DB00021433C00181604000173017B0222114399 -:106DC0000173017B042211430173017B08221143EB -:106DD00001732E214173817B3822914328318173C5 -:106DE00020214174817BC908C900033181732221AC -:106DF000C17320493C0054160400097A41721E49AF -:106E0000497A01743C220277011C10314A735023E5 -:106E10008B735A23CB730D23011C20310B70174B3E -:106E200043840E234B7000214182302101700521E3 -:106E30004170042141713C00901604008471C471BA -:106E40000C210171F82141800F49CA728A72032214 -:106E50000A7209224A7208220A73027A40231A43EC -:106E600002724C73FFF7A2FC0848017821430170BD -:106E700010BD0000F00007003C00CC160400F40038 -:106E800007000C800700764601002409000080807E -:106E90000700A080070080B518210948BEF7D7FE7B -:106EA000084800213C3841608160C1600161416156 -:106EB000816101210162FFF75CFF3C0008170400BB -:106EC000C0F76CFF80BD0000247E0100B0B52148F2 -:106ED000006840081F4940000860081C0068012144 -:106EE00008431C4908601C4A1079012108431071AD -:106EF000107902218843107100F06CF83C004417AF -:106F00000400107A012108431072107AFE21884390 -:106F10000A301072282090725A20D072114D14201D -:106F200028772C1C1034A0731620A8751820E8753B -:106F3000FFF7A1FC0C486886E07B4006400E3C0051 -:106F4000801704000E210843E073E07B8021084392 -:106F5000E07307484179042211434171B0BD00003C -:106F6000F00007000080070030800700FF010000EC -:106F70005000070080B5FFF7AFFF00201449C04361 -:106F80003C00BC1704008860C1F70BF913490020CE -:106F90004862C860486108618861C8610F4B086237 -:106FA0000F4A086338331A8001225A710B4A403263 -:106FB000D0601360082313815060094A8A62FF225F -:106FC0000A703C00F81704004870054800210022B0 -:106FD000503000230EC0C1F7FFF880BD003007001D -:106FE000046C0100BEBA0000857500000348102142 -:106FF00081710221C1713021417270470080070008 -:10700000704700003C003418040000B5C1F7DBFBFA -:1070100000BD7047000080B5CDF787FD014988604D -:1070200080BD50D9010080B506210548BEF7FDFDA1 -:10703000044900200439086000F067F800F003F804 -:1070400080BDEC6701003C007018040010B5074CCF -:107050002C21201CBEF710FE0120207003490020C7 -:107060001C39C8600861886110BD000078690100A2 -:1070700080B5CDF75DFD0949886009490820D0F742 -:1070800073FD08490920D0F73C00AC1804006FFDDF -:1070900007491120D0F76BFD0648C2F774F980BD8F -:1070A00000007869010021350000A1380000453456 -:1070B0000000BD26010080B586B00F48C4F745F931 -:1070C00000F045F8FFF7D7FFFFF73C00E818040091 -:1070D000ABFF0C490320D0F74DFD0B4869460090EB -:1070E0000020019009480490094802900948039043 -:1070F000094805900020C4F7CFF806B080BD000015 -:10710000F467010045350000953200003C00241969 -:107110000400A07D0100FD320000CD310000457D5E -:10712000010010B5CDF7D5FC0948094C302160614C -:1071300008487430BEF7A9FD0020A062064920610E -:10714000E1636064A06414212165606210BD3C00AD -:1071500060190400B9750000447D0100701700003B -:1071600080B502210920044AD1F7E8FECDF7ECFCF6 -:107170000249086380BD000039390000447D0100E8 -:1071800080B5AC210348BEF783FD00F051F800F054 -:107190003C009C19040049F880BDA46C010008B5AE -:1071A00000F04DF800F045F800211620184AD1F7FC -:1071B000C8FE174A0421101C403001700021817064 -:1071C0001121C18014490181101C8030C17808222E -:1071D00091433C00D8190400C170C1781143C170BB -:1071E0006A460F491420BFF7F5FA0E490720D0F779 -:1071F000CDFC0D490F20D0F7C9FCCDF7ABFC0B49F6 -:1072000008600A4844388068002802D00020C6F789 -:107210006FF908BD3C00141A0400B53B0000009053 -:107220000700E7FD00008D410000CD480000D9496E -:107230000000A46C010080B500F06FFC80BD7047B9 -:10724000000080B500F061FC80BD70470000B0B563 -:1072500030210C48BEF73C00501A040025FD0B4CB1 -:1072600000250A48843C3822032170386560BEF747 -:10727000DDFD0648382201213838BEF7D7FD0E2043 -:10728000A5606070207000F01DF8B0BD946701002B -:10729000044900B5012048603C008C1A0400886055 -:1072A000C860C3F7F8FF00BD0000D467010080B5D7 -:1072B00002210A20024AD1F750FE80BD00001D5A6B -:1072C000000080B500F005F880BD80B500F0FDFB42 -:1072D00080BD80B502490420D0F73C00C81A0400E4 -:1072E00061FC80BD651F000000211748C94380B5BF -:1072F000164B0170181C102220300271002210332E -:107300009A73427904231A434271427918239A43AB -:1073100008324271081CD7F759F800283C00041BBA -:10732000040003D101219A20BFF7CBFB502009496B -:1073300050220A60C8608860486008610120486186 -:107340000020D7F7D8F80449FF20086080BDF46B0F -:1073500001003000070004020700F47401003C0043 -:10736000401B040080B5D7F7FBF880BD10B5FFF7D0 -:10737000ABFBBFF7DDFB8148CDF798FA0024231C57 -:1073800004220421002001F039FA002801D0BFF7BF -:10739000C9FB231C0022FF21002001F02FFA002846 -:1073A0003C007C1B040001D0BFF7BFFB231C002264 -:1073B000FF21002001F025FA002801D0BFF7B5FB1E -:1073C000C4F727FF704884706F497F2088706E492A -:1073D0000C60032008606B4844706C480480694866 -:1073E000C0783C00B81B0400082108436749C870F6 -:1073F000081CC078042108436449C87001F07EFA73 -:10740000FFF77EFFFFF72CFE01F046FBFFF718FBAE -:1074100001F052FAFFF782FB5F48C16810229143E6 -:10742000C16001693C00F41B04005D4A1143016125 -:107430000169D20A91430161C1685A4A1143C1608E -:10744000816A594A1143816200F077F901F01FF80F -:1074500000F093FA01F099FB00F0F1FF00F099FCC5 -:1074600000F0DDFC00F03C00301C040083FCFFF762 -:10747000B3FC01F031FA01F071FAFFF787FAFFF778 -:107480009BFA012101204B4AD1F77CFD012102200A -:10749000494AD1F777FD02210320484AD1F772FD0E -:1074A00002210420464AD1F73C006C1C04006DFD0B -:1074B00002210520454AD1F768FD02210620434AF2 -:1074C000D1F763FD01210720424AD1F75EFD022179 -:1074D0001720404AD1F759FD022108203F4AD1F731 -:1074E00054FDFFF7C8FD3D4804603C00A81C0400A3 -:1074F0004460FFF717FAFFF709FAFFF74FFC00F0B7 -:1075000043F9FFF733FAFFF7FBFA01F085F801F0D2 -:10751000EBF901F023FA01F071F900F0E3FFFFF756 -:107520006FFA00F0AFF900F0BDF900F03C00E41C88 -:107530000400ADFC00F09BFEFFF7CDFAFFF7ABFEB9 -:1075400000F0C3F9FFF7ABFD00F08DFF00F021FF65 -:1075500000F065F900F097F900F0FDFE00F0E5FE9F -:1075600000F03FF900F073F9FFF737FE00F03C0040 -:10757000201D040021F900F073FBFFF7E5FB00F08C -:10758000D3FBFFF7A9FE00F0BBFB00F009FF00F002 -:10759000DBF91848C9F756F81748C9F72BF8002245 -:1075A0000121F020D1F72EFD002010BDA9690000B7 -:1075B0003C005C1D040000000700F00007002C00E8 -:1075C0000700001007003C000800C03F7438FCDFD3 -:1075D0007F3855690000E5130000610C00006D0C58 -:1075E00000003D0C0000F10D0000C53300003D0F10 -:1075F00000003C00981D0400ADD80000800007008A -:10760000505701000440010080B501F0A9F900F0D5 -:10761000C9F8FFF7C5FE01F003FB01F093FAFFF78D -:10762000CBF92C48FFF7E8F900F0AAF800F058FF72 -:10763000FFF734FD3C00D41D0400FFF7F2FBFFF719 -:107640007AFAFFF700FA00F034F900F03CF901F0A3 -:10765000E2F8FFF77AF9FFF772F9FFF79AF901F00C -:1076600066F901F08EF901F0E0F800F006FF00F095 -:10767000F0FB00F046FB3C00101E040000F0BCFFD5 -:1076800000F0E4FC00F020FEFFF740FAFFF746FEB2 -:10769000FFF756FD00F02CF900F0FAFE00F08AFE2C -:1076A00000F0D4F800F0B4F800F078FE00F04EFEE0 -:1076B00000F0DEF8FFF7ACFD3C004C1E040000F0CB -:1076C0008CF800F0F8FAFFF776FBFFF720FE01F0E8 -:1076D000A6FA00F048FB00F07CFE00F05CF9BEF773 -:1076E00057FD002080BD803801000149002008605E -:1076F0007047A87E010010B5041C3C00881E0400E1 -:1077000001D1BFF739FA0F487D21C900846001809B -:107710000D490161802141800021C16001620B4857 -:1077200041801421818007214181064A4623043289 -:107730000524137054700A21917081763C00C41E98 -:1077400004000376048110BD0000C87401000087A6 -:10775000930330000700094880B50169426911436D -:107760008269C0691143014300220320C6F7BFFCB0 -:10777000CCF71BFA0020C2F792F980BD00003C0054 -:10778000001F0400A46C0100054880B50021816041 -:107790000221C16003394160C7F73AFF80BD000094 -:1077A0004020070008B56A4604491520BFF754F881 -:1077B0000120034940050860486008BDA52101007B -:1077C0003C003C1F04000010070070470000064802 -:1077D00080B58068C001800F05D10322C143C6F780 -:1077E000BAFCD6F700FE80BD00001000070070470D -:1077F000000080B502212A20064AD1F7EAFB0022C8 -:1078000007203C00781F04000449BEF7EDFE044841 -:10781000C7F758FC80BD00008D890000D59B000093 -:107820001046010002480021002200230EC07047CC -:10783000806E010080B502212C20064AD1F7CCFBD6 -:10784000002200203C00B41F04000449BEF7CFFE14 -:1078500004490220C8F70BFA80BD058A0000E99BA5 -:107860000000B18B000002480021002200230EC05E -:1078700070471075010080B502212B20044AD1F712 -:10788000AEFB002202203C00F01F04000249BEF7BC -:10789000B1FE80BD2D8A00008D8C00007047000075 -:1078A00080B502212D20074AD1F79CFB0022012040 -:1078B0000549BEF79FFE0548CBF756FA0448CCF7BA -:1078C000F7F880BDAD8A00003C002C20040021E2C6 -:1078D0000000F9DF00002044010070470000024969 -:1078E00000200860012048607047AC79010080B535 -:1078F00002490D20D0F79BF980BD619800007047C8 -:10790000000080B5CDF777F903493C0068200400FA -:107910000860011C0248CDF797F980BDA8790100E5 -:10792000C460010080B500F029F880BD80B586B044 -:107930000C48C3F76DFDD6F7D3FB0B480D490090FB -:107940000A48049101900A48694602903C00A4202C -:1079500004000020039005900120C3F700FD0749B3 -:107960000320D0F76AF906B080BD20F70100118727 -:107970000100958701005587010098D901006D87A6 -:10798000010080B50120D6F790FC034900203C009F -:10799000E02004000860486002481439486080BD57 -:1079A00090D901003D82010070B50026094C094DB7 -:1079B0002660666044215035281CA661BEF7C8F9D0 -:1079C0001420E060E8632820E861A06028642E703D -:1079D0003C001C21040070BD0000A46E010080B5B5 -:1079E00002211820044AD1F70CFB03490820D0F7E4 -:1079F0002AF980BD0000159C0000699C0000FEB5BE -:107A0000264D2878C0070CD425490020087028701E -:107A100024483C00582104008178490849008170BD -:107A200081780122114381700024FF261F4F013607 -:107A3000211C01A8C6F732F800AB187901281FD025 -:107A4000022819D003281ED1B8680021B043B860BD -:107A5000786830433C009421040078603A683240F2 -:107A6000A02005E03B683340934201D0012101E0B2 -:107A70000138F7D27868B0437860002903D001A8B4 -:107A800000F027FF02E001A800F045FF01342406C2 -:107A90002416062CCFDB3C00D0210400044902222E -:107AA0000878104308702870FEBD0000040007002D -:107AB000E06001000000070010000700B0B50020E2 -:107AC00015231449012542008D54521801300E2807 -:107AD0005370F8D30F481C223C000C2204001C38C1 -:107AE000BEF773F90D480E212A38BEF71CF90B4971 -:107AF000002008600B4C2A21201CBEF714F92570C9 -:107B00000E2060701720A070074853210170452196 -:107B1000417020218170B0BD00003C00482204006B -:107B2000E6780100E4620100EB620100E862010016 -:107B30000C490D48002241600C4981600C49C1602C -:107B40000C4901610C4941610C498261C1610C49D8 -:107B500001620C4941620C4981620C493C0084225B -:107B60000400C162C26370470000C9750000287A32 -:107B70000100C17500008175000099750000CD7588 -:107B800000008975000091750000B57500008D75C5 -:107B90000000C5750000B0B50E480E4908603C00F5 -:107BA000C02204000831C0F743FE0C49002548609C -:107BB0000B480A4C05600B48803C05601020207182 -:107BC000E070A07160712720C043C3F7F7FB282045 -:107BD000C3F7FCFB2572B0BDFF3F00002C7D010008 -:107BE0003C00FC2204001C6701002067010080B5F6 -:107BF0002C210148BEF7C7F880BD3C7E010080B54E -:107C000038210148BEF7BFF880BD687E010080B50D -:107C100002210E20024AD1F70CFA80BD000021E0BB -:107C200000003C003823040070470000F0B585B028 -:107C3000002700AB2F4E1F8100250024281CD6F7FB -:107C4000A1FB022D03D1D6F7F5FA00280CD00124B0 -:107C5000012D03D1072000AB187101E000AB1F71AB -:107C600000AB18793C0074230400D6F708FC002C04 -:107C700039D0082103A8D6F7F2FA00AB187BFE280A -:107C800031D1587B01282AD1022102A8D6F7E7FA80 -:107C900000AB1889002826D018891849884222D0BC -:107CA00019890020BFF73C00B023040013F9041C1D -:107CB000006900AB1989D6F7D5FA206800AB1A899C -:107CC000011C0831083ACBF7A1F9002806D0022898 -:107CD00004D0022194203760BEF762FF201CBFF75A -:107CE000C7F8D4E7012194203C00EC230400BEF740 -:107CF0005AFFD5F726FF01352D062D0E042DA5D3ED -:107D000005B0F0BD000058570100FFFF00000A4811 -:107D10000021021C183280B5094B02E0016083800B -:107D200008308242FAD104486C213C002824040027 -:107D30006C38BEF737F804490220C7F7D1FF80BD81 -:107D40007C790100FC0500009D75000080B50221D2 -:107D500026200D4AD1F77CF90C48C8F773FF0C4870 -:107D6000C8F776FF0B491020CFF794FF3C0064243E -:107D700004000A490C20CFF790FF09490020C7F7FB -:107D8000B2FFCCF76EFF0749086080BD00009DA6DA -:107D90000000A9A4000081A4000031A70000B96D73 -:107DA0000000BDA600000C790100024908783C00E3 -:107DB000A0240400400840000870704758000700E5 -:107DC0000021084880B541618161017041704160C6 -:107DD00081601422C26001614262C161FFF704F850 -:107DE00080BD00001C75010080B502211D20044AE1 -:107DF0003C00DC240400D1F734F903490820CFF714 -:107E000052FF80BD000011E3000009E4000080B5CE -:107E1000012125200A4AD1F724F9CCF728FF084987 -:107E2000086208490120CFF73EFF07490220CFF73B -:107E30003AFF3C0018250400FEF7E6FF0548C1F7AD -:107E4000E1F980BD29A900001C750100A1AA00006C -:107E50002D19000045A8000010B5064C0C22227018 -:107E6000A0180549BDF7D8FF0020C8F785FB012001 -:107E7000A06010BD3C0054250400A4690100905787 -:107E80000100B0B51F4C00256580012020700A203C -:107E9000A0809020E08030202081902060813020E0 -:107EA000A0811748042207211230BEF74CF814486D -:107EB0000422052116303C0090250400BEF746F848 -:107EC0001248114AE08120827032157055700020EE -:107ED0003C23410143438918F4319B1801300428A5 -:107EE0005960F5DB084806221A300949BDF79AFFA8 -:107EF0000748054C0C300FC83C00CC25040020344A -:107F00000FC42021201CBDF762FFB0BD0000F86047 -:107F100001002C090000584001007047000007488C -:107F200010B50068002808D00648BEF79CFE041C67 -:107F3000FFF79DFE201CBEF796FE3C0008260400BD -:107F400010BD000058570100B5AD0000044980B5D0 -:107F50000020887002212020024AD1F791F880BDCC -:107F6000B479010025B5000080B5CCF78FFE01493A -:107F7000486180BDB479010080B518213C004426D9 -:107F800004001448BDF729FF1448012101700021A5 -:107F9000C1604170016100F002F900F0AAF800F040 -:107FA0001EF800F0BAF900F0CCF900F020F900F06A -:107FB00064F900F0CEF900F0FCF800F082F93C0022 -:107FC0008026040000F028F800F06EF800F04AF86F -:107FD000FFF7C2FF00F072F980BD0000407C010095 -:107FE00018630100B0B5084C0025084825772060CB -:107FF000CEF7F0FD0020E562D0F7D0FA211F08800F -:108000003C00BC260400D0F76CFBB0BD0000D47966 -:1080100001009575000080B5CCF7C1FC80BD054915 -:1080200080B500200870487003480449034A0830AE -:10803000CCF727FE80BD2C630100EDBC00004DBDD8 -:1080400000003C00F826040080B5CCF72BFE054963 -:108050004860011C0448CCF74BFE04490320CFF7CD -:108060003DFE80BD2C630100C4600100C1BC000066 -:1080700004480021002200230EC008C00249103825 -:10808000016070473C0034270400047A01001CE6BC -:10809000010080B5CCF709FE0549054A4860022178 -:1080A0002420D0F7FCFF0348C9F76BFD80BD047A9C -:1080B000010069BE000071EB000010B5044C1421F2 -:1080C000201CBDF796FE3C0070270400024820608B -:1080D00010BD0000147A0100ECE5010080B5CCF77A -:1080E000E7FD0749074A486002211F20D0F7DAFF61 -:1080F00005490120086005490C20CFF7F5FD80BD3A -:10810000147A0100D5BF00003C00AC270400805A5F -:10811000010085FF000080B5FFF74FFD0121212000 -:10812000024AD0F7C2FF80BD0000C9C1000080B57F -:10813000CCF7C1FD02490863C9F757FD80BD287A15 -:10814000010010B5CCF7B7FD164C3C00E827040041 -:108150002061CCF7B3FD60611448154908601649E9 -:1081600014480860CCF7AAFD1449086000F034F800 -:10817000FFF7E0FFFFF75EFF00F004F900F08EF874 -:10818000FFF76EFFFFF7B0FFFFF78CFF3C002428DE -:108190000400FFF704FF00F0AAF80A48BFF7BDFF8C -:1081A000C9F7BBFD09490020CFF7A7FD10BD407CF2 -:1081B00001007DB70000187E0100BDB800001C7EE4 -:1081C0000100207E0100B9BA0000812401003C00BA -:1081D0006028040080B538210148BDF719FE80BD34 -:1081E000905C010070470000B0B50C4C0B4D0020B6 -:1081F0000C3460602560E0600A202081281CC8F7EC -:108200003FFD281CC8F73AFD083D68600448C9F7DF -:108210003C009C2804001BFD201CC0F76EFA28803F -:10822000B0BDB87A0100D5330100F8B51F4E1D4C22 -:1082300000200C2141438200013009190831000659 -:10824000000E0428B150F4D318480C383061CEF732 -:10825000F4F93C00D8280400144CA078000900016F -:10826000A0700027E77067700024A50070590770A0 -:10827000201CBEF753F9715908710021201CCEF75C -:108280007DF901342406240E042CEED3074C20780B -:10829000000900013C00142904000A3020702078F5 -:1082A000F021884330302070A0780F210843A0705F -:1082B000F8BD00500700107B010080B5CCF79FFB94 -:1082C00080BDB0B50C4C0B4D00200C3460602560B7 -:1082D000E0600A2020813C0050290400281CC8F7D7 -:1082E000E1FC281CC8F7D4FC083D6860201CC0F7DE -:1082F0000DFA28800248C9F79BFCB0BD2C7B010019 -:108300004900010080B5CAF72FF880BD7047000012 -:10831000B0B5124D3C21281C3C008C290400BDF74F -:1083200086FD0F4828213C30BDF781FD0D48002116 -:1083300014380161C160FF21017041700A490A4A85 -:10834000416001210C20D0F7C8FE2C1C30340C3DBC -:108350000020D0F74AF920800C3C3C00C8290400DA -:10836000AC42F8D1B0BD0000607B010020A1070045 -:1083700035CD0000084900200C22424352181071EC -:1083800001300528F8DB04480021083801704160FD -:10839000FF21417070470000747A01003C00042AFC -:1083A000040080B578210148BDF747FD80BDC47B3E -:1083B000010080B5CAF797FA80BD7047000010B57C -:1083C0000B4CFF210531201CBDF737FD0948F0217A -:1083D0000851201C4030C5F78EF96C2106483C003E -:1083E000402A0400BDF72CFD0448C0216C30BDF7C5 -:1083F00027FD10BDC4690100B0D90100C86A0100A1 -:10840000B0B50B4D00241C20604340196C30C3F7FD -:108410000FFE0134042CF6DBCCF76EFCA863C7F723 -:108420003C007C2A040075F90448C9F71CFC034889 -:10843000CFF703FAB0BDC4690100FD800000E1225E -:10844000010010B5054C00202080034806210830AB -:10845000BDF7D5FC1420606010BD987C010010B5FC -:10846000084C3C00B82A04000020208060800648A8 -:1084700006210C30BDF7C6FC034806211230BDF7BB -:10848000C1FC1420A06010BD587C010070470000A2 -:1084900080B502210D20054AD0F72EFE0448C8F70A -:1084A0001FFC04483C00F42A0400CAF744FC80BDC9 -:1084B000000031D4000051B1000009B100000849AA -:1084C00080B500200860FFF7D0FFFFF7C0FFFFF77F -:1084D00004FC00F04AF8FFF70AFC00F03CF880BD0D -:1084E0000000E46501003C00302B040080B500F082 -:1084F00029F800F01BF800F051F800F031F880BDC9 -:10850000704700007047000080B5FF2189310248A4 -:10851000BDF7A2FC80BD0000DC71010080B50249FE -:108520000820CFF711FC80BD3C006C2B040059D90A -:10853000000080B50348CFF74CF90249488080BD60 -:1085400000008D1F0000987C010080B50348CFF724 -:1085500040F90249888080BD0000D5230000587C86 -:1085600001007047000080B502483C00A82B0400C1 -:10857000CAF7E4FB80BD000071E0000080B5CCF7D5 -:10858000A5FB02210F20064AD0F7C2FD14210548A1 -:10859000BDF768FC034878211430BDF763FC80BD4B -:1085A00035E200008466010080B5CCF73C00E42B86 -:1085B0000400B7FB0549086105490E20CFF7CDFB44 -:1085C00004490820CFF7C9FB80BDEC65010001021A -:1085D0000100C12E0000014900200870704740D9F9 -:1085E00001007047000001490020087070473C00FE -:1085F000202C0400A079010080B50748C8F7F2FFDD -:10860000064948600648C0F707FB0648C0F786FBE6 -:108610000548C9F7A3FA80BDA9E40000A0790100CC -:10862000B9E40000852E000081E40000074880B511 -:108630003C005C2C04000021002200230EC008C076 -:108640001038C821016000210C38024ACCF761FBC8 -:1086500080BDD0600100FDE5000080B5CCF767FB70 -:1086600004490860011C02480430CCF786FB80BD39 -:1086700000003C00982C0400C0600100094880B54F -:108680000A21017041700849084A81600021C160D7 -:10869000527982700161416128211830BDF7EEFBEB -:1086A00080BD00007C780100A08601000C5A01000A -:1086B000F8B50F493C00D42C04000F480D884F88B2 -:1086C00006790024301B684368230C49584341183D -:1086D0007D20C000BDF70FFD6100094AA64250523F -:1086E00000D13D1C01342406240E102CEAD3054988 -:1086F00001200861F8BD3C00102D0400F65901006E -:108700000C5A010034440F00125A01007C78010019 -:1087100080B500F0E7FA02490120086180BD000041 -:108720007C78010010B5041C081C0F494979002908 -:1087300001D10E4B00E00E4B3C004C2D0400002CF0 -:1087400007D0042111800A1C0124191CBDF7CDFBA0 -:108750000AE00124011C181C1288BDF7C6FB00F0BA -:10876000C4FA054901200861201C10BD00000C5A04 -:108770000100FE590100FA5901003C00882D040057 -:108780007C7801000D488CB5C18800AB0C4A9980FB -:1087900001890420D980188002211320D0F7D0FC51 -:1087A00000F0A6FA074901200861FFF78DFF6A462D -:1087B00001A90020FFF7BCFF8CBD00003C00C42DC8 -:1087C0000400F459010095F900007C780100F8B527 -:1087D000134E0125B5700520F070114910480EC9DF -:1087E0002C300EC0002070610F480F49104F00243C -:1087F0004860A0003958201CD1F7D7F801343C005C -:10880000002E0400102CF7D3064C0B4A2034201CF9 -:108810000A49B560CCF792FACCF79EFA3061206035 -:10882000F8BD000064730100B05801000418020094 -:1088300060000700D444010045FA000071FA00000E -:108840003C003C2E04000C4930B50023CC560B4BA9 -:108850000020F0251A5C1107090F09190F2901DD05 -:108860000F2102E0002900DA00212A405118195492 -:1088700001300E28EEDB30BD000064730100C058EB -:1088800001003C00782E0400B0B50D1C002808D073 -:10889000012414800520CCF7B5F88003C00F2870A0 -:1088A00007E028780122410452040520D0F7AEFDEC -:1088B0000124201CB0BD000098B5054C6068CCF7C1 -:1088C000F5FD00903C00B42E040000AB1888E08059 -:1088D000CEF7FBFF98BDA058010038B5031C081C5B -:1088E0000024002B174D07D00E2111800A1C0124F3 -:1088F000291CBDF70CFB22E01188042917D1011CAB -:1089000068461288BDF73C00F02E040003FB009877 -:10891000002801DB323000E032380090011C642076 -:10892000BDF798FB0106091600900E22281CBDF722 -:1089300085FB06E00E2905D10A1C011C281CBDF789 -:10894000E9FA0124201C38BD3C002C2F0400DA5920 -:10895000010038B5031C081C0024002B174D07D05C -:108960000E2111800A1C0124291CBDF7D6FA22E031 -:108970001188042917D1011C68461288BDF7CDFA69 -:108980000098002801DB323000E03C00682F040032 -:1089900032380090011C6420BDF762FB0106091605 -:1089A00000900E22281CBDF74FFB06E00E2905D1D2 -:1089B0000A1C011C281CBDF7B3FA0124201C38BD79 -:1089C000CC590100034880B5017800203C00A42F59 -:1089D0000400CCF7B4FB80BD0000A658010070472E -:1089E00000000249032008700020487070479C7303 -:1089F000010080B502211120024AD0F7BCFB80BDE6 -:108A00000000A1FE0000F0B50B4F1C1C00233C0031 -:108A1000E02F0400FD562B1C062D01D10120F0BDD6 -:108A2000064E051CD80034363554801941708270CA -:108A30004460581C38700020F0BD0000985A0100B6 -:108A400010B5041C0C4800F021F96078FF2804D010 -:108A50003C001C3004000123E056062100F0CDF854 -:108A6000084A012110780843074908702023184359 -:108A70000870802318431070087010BD0000919B8F -:108A80000000E06001000400070010B50A49041C62 -:108A900008783C005830040040084000087008493D -:108AA0000870084800F0F8F86078FF2804D0012327 -:108AB000E056052100F0A4F810BD0000E0600100C0 -:108AC00004000700919B00000348002100220023BE -:108AD0000EC008C03C009430040070470000E860FD -:108AE00001007047000010B5074C00206060208036 -:108AF000E06002211420044AD0F749FB02481030FC -:108B0000A06010BD000058750100051D01007047F0 -:108B1000000010B548213C00D03004000A48BDF7E1 -:108B2000E3F9094CE0214834201CBDF7DDF90020B1 -:108B3000C10009190A1C083201301B284A60F7D30A -:108B400001480438046010BD685B010080B5022153 -:108B50002320024AD0F71EFB3C000C31040080BDEC -:108B600000004523010080B5FFF76BF880BD70471A -:108B70000000F8B501201D49C00748601D49FF20CD -:108B800008731C4E10203060050135601B4C80219D -:108B9000201CBDF7ACF90021194A3C004831040003 -:108BA000154F00200B011B195A60CB00DB191874FC -:108BB00001310829F6DB0F4CFA212180124961802E -:108BC000A0606A4611490420BDF730FF6A4610498B -:108BD0000820BDF72BFF1020706075603C008431C9 -:108BE000040060680221084360600B49064A081CC3 -:108BF0001030083A03C2F8BD000000010700006011 -:108C0000070000100700AC730100D1750000204E72 -:108C10000000052C0100112C010000A007003C0001 -:108C2000C031040070B50E1C0024C4F75BFE0028A0 -:108C30003BD04568FF2D38D00C2E28D201A39B5D78 -:108C40005B009F440507090B0D101316181B1E210E -:108C5000182420E030241EE060241CE0C0241AE028 -:108C60003C00FC310400FF24813417E00924A401F6 -:108C700014E00924E40111E00F4C0FE00924240260 -:108C80000CE00924640209E00324E40206E009245C -:108C9000A40203E009219E20BEF739F86000001904 -:108CA00040083C0038320400054980044018054A59 -:108CB000A900891848606420604370BDDC0700008B -:108CC0008038010004000700024980B50860D0F731 -:108CD00097F880BD5C5B0100F8B50026174C174B78 -:108CE000194926703C0074320400002014330D88AA -:108CF000154E154A04E0C100CF187A605E5001306D -:108D0000A842F8DBC6F72BFDFF21114DA531281C29 -:108D1000BDF7FFF80021281C021C1432C260101C91 -:108D200001311429F8DB3C00B03204000026C66093 -:108D300005480C3060C009481821BDF7EDF8012046 -:108D4000043441C40020F8BD705D010009A000009A -:108D500030D9010056570100045F0100A8600100EE -:108D600080B50020CFF7B6FC3C00EC32040001498E -:108D7000088080BD00002C7401001148F8B54179CD -:108D8000002902D105780F4E01E045780F4E0223ED -:108D9000F75E0024601B784364230C495843411854 -:108DA0007D20C000BDF7F5F961003C0028330400C8 -:108DB000094AAC42505201D10023F75E0134240627 -:108DC000240E102CE9D3F8BD0C5A0100FE59010005 -:108DD000FA59010034440F00325A010038B5104CE2 -:108DE000BE252573207A1821884320723C00643305 -:108DF00004006A460D490D20BDF733FE01200B49E2 -:108E000040030860486025732D20C003206025734F -:108E1000207A102108432072064806490860002085 -:108E2000486038BD0000000307008D3E01002400AB -:108E3000A0330400001007000087930304790100A9 -:108E400080B502211520024AD0F7C8F980BD000084 -:108E50000D3E010070470000040000600400440063 -:108E60000000040040200700FFFFFFFF4D656D6F0D -:108E7000727920636865636B2E2E2E00204F4B0A9B -:108E800000000000204641494C0A000057726974F6 -:108E9000696E67206669726D7761726520646174BE -:108EA0006120746F20666C6173680A005665726990 -:108EB0006679696E67206669726D77617265206494 -:108EC0006174610A00000000566572696679206667 -:108ED00061696C6564206174206279746520256421 -:108EE0002C2030782530327820213D2030782530F4 -:108EF00032780A004669726D776172652073756316 -:108F00006365737366756C6C792073746F726564D6 -:108F100020696E20666C617368210A0005000600F6 -:108F200000000001000001480000000B0000014C9F -:108F300000000009000001780000000F0000019C03 -:108F400000000001000001D800000001000001DC69 -:108F50000000000100000108000000010000010CF9 -:108F600000000001000001100000000100000114D9 -:108F70000000000100000118000000010000011CB9 -:108F80000000000100000120000000010000012499 -:108F9000000000030000012800000001000001346F -:108FA0000000000100000138000000010000013C49 -:108FB0000000000100000140000000010000014429 -:040000058000000077 -:00000001FF diff --git a/libraries/WiFi/extras/binary/wifi_dnld_2_1.elf b/libraries/WiFi/extras/binary/wifi_dnld_2_1.elf deleted file mode 100644 index 7ccbf4d3d3c..00000000000 Binary files a/libraries/WiFi/extras/binary/wifi_dnld_2_1.elf and /dev/null differ diff --git a/libraries/WiFi/extras/scripts/ArduinoWifiShield_upgrade.sh b/libraries/WiFi/extras/scripts/ArduinoWifiShield_upgrade.sh deleted file mode 100644 index b767d769bf2..00000000000 --- a/libraries/WiFi/extras/scripts/ArduinoWifiShield_upgrade.sh +++ /dev/null @@ -1,121 +0,0 @@ -#!/bin/sh - -#WIFI_FW_PATH="/hardware/arduino/firmwares/wifishield/binary" -WIFI_FW_PATH="/libraries/WiFi/extras/binary" -AVR_TOOLS_PATH="/hardware/tools/avr/bin" - -TARGET_MICRO="at32uc3a1256" - - -progname=$0 - -usage () { -cat <&2 - usage - exit 1 - ;; - :) - echo "Option -$OPTARG requires an argument." >&2 - exit 1 - ;; - esac - done -else - echo "Please retry running the script as root.\n" -fi - -shift $(($OPTIND - 1)) diff --git a/libraries/WiFi/extras/wifiHD/.cproject b/libraries/WiFi/extras/wifiHD/.cproject deleted file mode 100644 index fa7fcdd696c..00000000000 --- a/libraries/WiFi/extras/wifiHD/.cproject +++ /dev/null @@ -1,4045 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libraries/WiFi/extras/wifiHD/.project b/libraries/WiFi/extras/wifiHD/.project deleted file mode 100644 index c284bab1b0f..00000000000 --- a/libraries/WiFi/extras/wifiHD/.project +++ /dev/null @@ -1,77 +0,0 @@ - - - wifiHD - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/wifiHD/Debug} - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - com.atmel.avr32.core.nature - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - - - UC3 Software Framework - 2 - framework:/com.atmel.avr32.sf.uc3 - - - diff --git a/libraries/WiFi/extras/wifiHD/Release/wifiHD.elf b/libraries/WiFi/extras/wifiHD/Release/wifiHD.elf deleted file mode 100644 index d4a8bde55f5..00000000000 Binary files a/libraries/WiFi/extras/wifiHD/Release/wifiHD.elf and /dev/null differ diff --git a/libraries/WiFi/extras/wifiHD/Release/wifiHD.hex b/libraries/WiFi/extras/wifiHD/Release/wifiHD.hex deleted file mode 100644 index 0122587ff46..00000000000 --- a/libraries/WiFi/extras/wifiHD/Release/wifiHD.hex +++ /dev/null @@ -1,16358 +0,0 @@ -:0200000480007A -:10000000E08F100000000000000000000000000071 -:1000100000000000000000000000000000000000E0 -:1000200000000000000000000000000000000000D0 -:1000300000000000000000000000000000000000C0 -:1000400000000000000000000000000000000000B0 -:1000500000000000000000000000000000000000A0 -:100060000000000000000000000000000000000090 -:100070000000000000000000000000000000000080 -:100080000000000000000000000000000000000070 -:100090000000000000000000000000000000000060 -:1000A0000000000000000000000000000000000050 -:1000B0000000000000000000000000000000000040 -:1000C0000000000000000000000000000000000030 -:1000D0000000000000000000000000000000000020 -:1000E0000000000000000000000000000000000010 -:1000F0000000000000000000000000000000000000 -:1001000000000000000000000000000000000000EF -:1001100000000000000000000000000000000000DF -:1001200000000000000000000000000000000000CF -:1001300000000000000000000000000000000000BF -:1001400000000000000000000000000000000000AF -:10015000000000000000000000000000000000009F -:10016000000000000000000000000000000000008F -:10017000000000000000000000000000000000007F -:10018000000000000000000000000000000000006F -:10019000000000000000000000000000000000005F -:1001A000000000000000000000000000000000004F -:1001B000000000000000000000000000000000003F -:1001C000000000000000000000000000000000002F -:1001D000000000000000000000000000000000001F -:1001E000000000000000000000000000000000000F -:1001F00000000000000000000000000000000000FF -:1002000000000000000000000000000000000000EE -:1002100000000000000000000000000000000000DE -:1002200000000000000000000000000000000000CE -:1002300000000000000000000000000000000000BE -:1002400000000000000000000000000000000000AE -:10025000000000000000000000000000000000009E -:10026000000000000000000000000000000000008E -:10027000000000000000000000000000000000007E -:10028000000000000000000000000000000000006E -:10029000000000000000000000000000000000005E -:1002A000000000000000000000000000000000004E -:1002B000000000000000000000000000000000003E -:1002C000000000000000000000000000000000002E -:1002D000000000000000000000000000000000001E -:1002E000000000000000000000000000000000000E -:1002F00000000000000000000000000000000000FE -:1003000000000000000000000000000000000000ED -:1003100000000000000000000000000000000000DD -:1003200000000000000000000000000000000000CD -:1003300000000000000000000000000000000000BD -:1003400000000000000000000000000000000000AD -:10035000000000000000000000000000000000009D -:10036000000000000000000000000000000000008D -:10037000000000000000000000000000000000007D -:10038000000000000000000000000000000000006D -:10039000000000000000000000000000000000005D -:1003A000000000000000000000000000000000004D -:1003B000000000000000000000000000000000003D -:1003C000000000000000000000000000000000002D -:1003D000000000000000000000000000000000001D -:1003E000000000000000000000000000000000000D -:1003F00000000000000000000000000000000000FD -:1004000000000000000000000000000000000000EC -:1004100000000000000000000000000000000000DC -:1004200000000000000000000000000000000000CC -:1004300000000000000000000000000000000000BC -:1004400000000000000000000000000000000000AC -:10045000000000000000000000000000000000009C -:10046000000000000000000000000000000000008C -:10047000000000000000000000000000000000007C -:10048000000000000000000000000000000000006C -:10049000000000000000000000000000000000005C -:1004A000000000000000000000000000000000004C -:1004B000000000000000000000000000000000003C -:1004C000000000000000000000000000000000002C -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F00000000000000000000000000000000000FC -:1005000000000000000000000000000000000000EB -:1005100000000000000000000000000000000000DB -:1005200000000000000000000000000000000000CB -:1005300000000000000000000000000000000000BB -:1005400000000000000000000000000000000000AB -:10055000000000000000000000000000000000009B -:10056000000000000000000000000000000000008B -:10057000000000000000000000000000000000007B -:10058000000000000000000000000000000000006B -:10059000000000000000000000000000000000005B -:1005A000000000000000000000000000000000004B -:1005B000000000000000000000000000000000003B -:1005C000000000000000000000000000000000002B -:1005D000000000000000000000000000000000001B -:1005E000000000000000000000000000000000000B -:1005F00000000000000000000000000000000000FB -:1006000000000000000000000000000000000000EA -:1006100000000000000000000000000000000000DA -:1006200000000000000000000000000000000000CA -:1006300000000000000000000000000000000000BA -:1006400000000000000000000000000000000000AA -:10065000000000000000000000000000000000009A -:10066000000000000000000000000000000000008A -:10067000000000000000000000000000000000007A -:10068000000000000000000000000000000000006A -:10069000000000000000000000000000000000005A -:1006A000000000000000000000000000000000004A -:1006B000000000000000000000000000000000003A -:1006C000000000000000000000000000000000002A -:1006D000000000000000000000000000000000001A -:1006E000000000000000000000000000000000000A -:1006F00000000000000000000000000000000000FA -:1007000000000000000000000000000000000000E9 -:1007100000000000000000000000000000000000D9 -:1007200000000000000000000000000000000000C9 -:1007300000000000000000000000000000000000B9 -:1007400000000000000000000000000000000000A9 -:100750000000000000000000000000000000000099 -:100760000000000000000000000000000000000089 -:100770000000000000000000000000000000000079 -:100780000000000000000000000000000000000069 -:100790000000000000000000000000000000000059 -:1007A0000000000000000000000000000000000049 -:1007B0000000000000000000000000000000000039 -:1007C0000000000000000000000000000000000029 -:1007D0000000000000000000000000000000000019 -:1007E0000000000000000000000000000000000009 -:1007F00000000000000000000000000000000000F9 -:1008000000000000000000000000000000000000E8 -:1008100000000000000000000000000000000000D8 -:1008200000000000000000000000000000000000C8 -:1008300000000000000000000000000000000000B8 -:1008400000000000000000000000000000000000A8 -:100850000000000000000000000000000000000098 -:100860000000000000000000000000000000000088 -:100870000000000000000000000000000000000078 -:100880000000000000000000000000000000000068 -:100890000000000000000000000000000000000058 -:1008A0000000000000000000000000000000000048 -:1008B0000000000000000000000000000000000038 -:1008C0000000000000000000000000000000000028 -:1008D0000000000000000000000000000000000018 -:1008E0000000000000000000000000000000000008 -:1008F00000000000000000000000000000000000F8 -:1009000000000000000000000000000000000000E7 -:1009100000000000000000000000000000000000D7 -:1009200000000000000000000000000000000000C7 -:1009300000000000000000000000000000000000B7 -:1009400000000000000000000000000000000000A7 -:100950000000000000000000000000000000000097 -:100960000000000000000000000000000000000087 -:100970000000000000000000000000000000000077 -:100980000000000000000000000000000000000067 -:100990000000000000000000000000000000000057 -:1009A0000000000000000000000000000000000047 -:1009B0000000000000000000000000000000000037 -:1009C0000000000000000000000000000000000027 -:1009D0000000000000000000000000000000000017 -:1009E0000000000000000000000000000000000007 -:1009F00000000000000000000000000000000000F7 -:100A000000000000000000000000000000000000E6 -:100A100000000000000000000000000000000000D6 -:100A200000000000000000000000000000000000C6 -:100A300000000000000000000000000000000000B6 -:100A400000000000000000000000000000000000A6 -:100A50000000000000000000000000000000000096 -:100A60000000000000000000000000000000000086 -:100A70000000000000000000000000000000000076 -:100A80000000000000000000000000000000000066 -:100A90000000000000000000000000000000000056 -:100AA0000000000000000000000000000000000046 -:100AB0000000000000000000000000000000000036 -:100AC0000000000000000000000000000000000026 -:100AD0000000000000000000000000000000000016 -:100AE0000000000000000000000000000000000006 -:100AF00000000000000000000000000000000000F6 -:100B000000000000000000000000000000000000E5 -:100B100000000000000000000000000000000000D5 -:100B200000000000000000000000000000000000C5 -:100B300000000000000000000000000000000000B5 -:100B400000000000000000000000000000000000A5 -:100B50000000000000000000000000000000000095 -:100B60000000000000000000000000000000000085 -:100B70000000000000000000000000000000000075 -:100B80000000000000000000000000000000000065 -:100B90000000000000000000000000000000000055 -:100BA0000000000000000000000000000000000045 -:100BB0000000000000000000000000000000000035 -:100BC0000000000000000000000000000000000025 -:100BD0000000000000000000000000000000000015 -:100BE0000000000000000000000000000000000005 -:100BF00000000000000000000000000000000000F5 -:100C000000000000000000000000000000000000E4 -:100C100000000000000000000000000000000000D4 -:100C200000000000000000000000000000000000C4 -:100C300000000000000000000000000000000000B4 -:100C400000000000000000000000000000000000A4 -:100C50000000000000000000000000000000000094 -:100C60000000000000000000000000000000000084 -:100C70000000000000000000000000000000000074 -:100C80000000000000000000000000000000000064 -:100C90000000000000000000000000000000000054 -:100CA0000000000000000000000000000000000044 -:100CB0000000000000000000000000000000000034 -:100CC0000000000000000000000000000000000024 -:100CD0000000000000000000000000000000000014 -:100CE0000000000000000000000000000000000004 -:100CF00000000000000000000000000000000000F4 -:100D000000000000000000000000000000000000E3 -:100D100000000000000000000000000000000000D3 -:100D200000000000000000000000000000000000C3 -:100D300000000000000000000000000000000000B3 -:100D400000000000000000000000000000000000A3 -:100D50000000000000000000000000000000000093 -:100D60000000000000000000000000000000000083 -:100D70000000000000000000000000000000000073 -:100D80000000000000000000000000000000000063 -:100D90000000000000000000000000000000000053 -:100DA0000000000000000000000000000000000043 -:100DB0000000000000000000000000000000000033 -:100DC0000000000000000000000000000000000023 -:100DD0000000000000000000000000000000000013 -:100DE0000000000000000000000000000000000003 -:100DF00000000000000000000000000000000000F3 -:100E000000000000000000000000000000000000E2 -:100E100000000000000000000000000000000000D2 -:100E200000000000000000000000000000000000C2 -:100E300000000000000000000000000000000000B2 -:100E400000000000000000000000000000000000A2 -:100E50000000000000000000000000000000000092 -:100E60000000000000000000000000000000000082 -:100E70000000000000000000000000000000000072 -:100E80000000000000000000000000000000000062 -:100E90000000000000000000000000000000000052 -:100EA0000000000000000000000000000000000042 -:100EB0000000000000000000000000000000000032 -:100EC0000000000000000000000000000000000022 -:100ED0000000000000000000000000000000000012 -:100EE0000000000000000000000000000000000002 -:100EF00000000000000000000000000000000000F2 -:100F000000000000000000000000000000000000E1 -:100F100000000000000000000000000000000000D1 -:100F200000000000000000000000000000000000C1 -:100F300000000000000000000000000000000000B1 -:100F400000000000000000000000000000000000A1 -:100F50000000000000000000000000000000000091 -:100F60000000000000000000000000000000000081 -:100F70000000000000000000000000000000000071 -:100F80000000000000000000000000000000000061 -:100F90000000000000000000000000000000000051 -:100FA0000000000000000000000000000000000041 -:100FB0000000000000000000000000000000000031 -:100FC0000000000000000000000000000000000021 -:100FD0000000000000000000000000000000000011 -:100FE0000000000000000000000000000000000001 -:100FF00000000000000000000000000000000000F1 -:1010000000000000000000000000000000000000E0 -:1010100000000000000000000000000000000000D0 -:1010200000000000000000000000000000000000C0 -:1010300000000000000000000000000000000000B0 -:1010400000000000000000000000000000000000A0 -:101050000000000000000000000000000000000090 -:101060000000000000000000000000000000000080 -:101070000000000000000000000000000000000070 -:101080000000000000000000000000000000000060 -:101090000000000000000000000000000000000050 -:1010A0000000000000000000000000000000000040 -:1010B0000000000000000000000000000000000030 -:1010C0000000000000000000000000000000000020 -:1010D0000000000000000000000000000000000010 -:1010E0000000000000000000000000000000000000 -:1010F00000000000000000000000000000000000F0 -:1011000000000000000000000000000000000000DF -:1011100000000000000000000000000000000000CF -:1011200000000000000000000000000000000000BF -:1011300000000000000000000000000000000000AF -:10114000000000000000000000000000000000009F -:10115000000000000000000000000000000000008F -:10116000000000000000000000000000000000007F -:10117000000000000000000000000000000000006F -:10118000000000000000000000000000000000005F -:10119000000000000000000000000000000000004F -:1011A000000000000000000000000000000000003F -:1011B000000000000000000000000000000000002F -:1011C000000000000000000000000000000000001F -:1011D000000000000000000000000000000000000F -:1011E00000000000000000000000000000000000FF -:1011F00000000000000000000000000000000000EF -:1012000000000000000000000000000000000000DE -:1012100000000000000000000000000000000000CE -:1012200000000000000000000000000000000000BE -:1012300000000000000000000000000000000000AE -:10124000000000000000000000000000000000009E -:10125000000000000000000000000000000000008E -:10126000000000000000000000000000000000007E -:10127000000000000000000000000000000000006E -:10128000000000000000000000000000000000005E -:10129000000000000000000000000000000000004E -:1012A000000000000000000000000000000000003E -:1012B000000000000000000000000000000000002E -:1012C000000000000000000000000000000000001E -:1012D000000000000000000000000000000000000E -:1012E00000000000000000000000000000000000FE -:1012F00000000000000000000000000000000000EE -:1013000000000000000000000000000000000000DD -:1013100000000000000000000000000000000000CD -:1013200000000000000000000000000000000000BD -:1013300000000000000000000000000000000000AD -:10134000000000000000000000000000000000009D -:10135000000000000000000000000000000000008D -:10136000000000000000000000000000000000007D -:10137000000000000000000000000000000000006D -:10138000000000000000000000000000000000005D -:10139000000000000000000000000000000000004D -:1013A000000000000000000000000000000000003D -:1013B000000000000000000000000000000000002D -:1013C000000000000000000000000000000000001D -:1013D000000000000000000000000000000000000D -:1013E00000000000000000000000000000000000FD -:1013F00000000000000000000000000000000000ED -:1014000000000000000000000000000000000000DC -:1014100000000000000000000000000000000000CC -:1014200000000000000000000000000000000000BC -:1014300000000000000000000000000000000000AC -:10144000000000000000000000000000000000009C -:10145000000000000000000000000000000000008C -:10146000000000000000000000000000000000007C -:10147000000000000000000000000000000000006C -:10148000000000000000000000000000000000005C -:10149000000000000000000000000000000000004C -:1014A000000000000000000000000000000000003C -:1014B000000000000000000000000000000000002C -:1014C000000000000000000000000000000000001C -:1014D000000000000000000000000000000000000C -:1014E00000000000000000000000000000000000FC -:1014F00000000000000000000000000000000000EC -:1015000000000000000000000000000000000000DB -:1015100000000000000000000000000000000000CB -:1015200000000000000000000000000000000000BB -:1015300000000000000000000000000000000000AB -:10154000000000000000000000000000000000009B -:10155000000000000000000000000000000000008B -:10156000000000000000000000000000000000007B -:10157000000000000000000000000000000000006B -:10158000000000000000000000000000000000005B -:10159000000000000000000000000000000000004B -:1015A000000000000000000000000000000000003B -:1015B000000000000000000000000000000000002B -:1015C000000000000000000000000000000000001B -:1015D000000000000000000000000000000000000B -:1015E00000000000000000000000000000000000FB -:1015F00000000000000000000000000000000000EB -:1016000000000000000000000000000000000000DA -:1016100000000000000000000000000000000000CA -:1016200000000000000000000000000000000000BA -:1016300000000000000000000000000000000000AA -:10164000000000000000000000000000000000009A -:10165000000000000000000000000000000000008A -:10166000000000000000000000000000000000007A -:10167000000000000000000000000000000000006A -:10168000000000000000000000000000000000005A -:10169000000000000000000000000000000000004A -:1016A000000000000000000000000000000000003A -:1016B000000000000000000000000000000000002A -:1016C000000000000000000000000000000000001A -:1016D000000000000000000000000000000000000A -:1016E00000000000000000000000000000000000FA -:1016F00000000000000000000000000000000000EA -:1017000000000000000000000000000000000000D9 -:1017100000000000000000000000000000000000C9 -:1017200000000000000000000000000000000000B9 -:1017300000000000000000000000000000000000A9 -:101740000000000000000000000000000000000099 -:101750000000000000000000000000000000000089 -:101760000000000000000000000000000000000079 -:101770000000000000000000000000000000000069 -:101780000000000000000000000000000000000059 -:101790000000000000000000000000000000000049 -:1017A0000000000000000000000000000000000039 -:1017B0000000000000000000000000000000000029 -:1017C0000000000000000000000000000000000019 -:1017D0000000000000000000000000000000000009 -:1017E00000000000000000000000000000000000F9 -:1017F00000000000000000000000000000000000E9 -:1018000000000000000000000000000000000000D8 -:1018100000000000000000000000000000000000C8 -:1018200000000000000000000000000000000000B8 -:1018300000000000000000000000000000000000A8 -:101840000000000000000000000000000000000098 -:101850000000000000000000000000000000000088 -:101860000000000000000000000000000000000078 -:101870000000000000000000000000000000000068 -:101880000000000000000000000000000000000058 -:101890000000000000000000000000000000000048 -:1018A0000000000000000000000000000000000038 -:1018B0000000000000000000000000000000000028 -:1018C0000000000000000000000000000000000018 -:1018D0000000000000000000000000000000000008 -:1018E00000000000000000000000000000000000F8 -:1018F00000000000000000000000000000000000E8 -:1019000000000000000000000000000000000000D7 -:1019100000000000000000000000000000000000C7 -:1019200000000000000000000000000000000000B7 -:1019300000000000000000000000000000000000A7 -:101940000000000000000000000000000000000097 -:101950000000000000000000000000000000000087 -:101960000000000000000000000000000000000077 -:101970000000000000000000000000000000000067 -:101980000000000000000000000000000000000057 -:101990000000000000000000000000000000000047 -:1019A0000000000000000000000000000000000037 -:1019B0000000000000000000000000000000000027 -:1019C0000000000000000000000000000000000017 -:1019D0000000000000000000000000000000000007 -:1019E00000000000000000000000000000000000F7 -:1019F00000000000000000000000000000000000E7 -:101A000000000000000000000000000000000000D6 -:101A100000000000000000000000000000000000C6 -:101A200000000000000000000000000000000000B6 -:101A300000000000000000000000000000000000A6 -:101A40000000000000000000000000000000000096 -:101A50000000000000000000000000000000000086 -:101A60000000000000000000000000000000000076 -:101A70000000000000000000000000000000000066 -:101A80000000000000000000000000000000000056 -:101A90000000000000000000000000000000000046 -:101AA0000000000000000000000000000000000036 -:101AB0000000000000000000000000000000000026 -:101AC0000000000000000000000000000000000016 -:101AD0000000000000000000000000000000000006 -:101AE00000000000000000000000000000000000F6 -:101AF00000000000000000000000000000000000E6 -:101B000000000000000000000000000000000000D5 -:101B100000000000000000000000000000000000C5 -:101B200000000000000000000000000000000000B5 -:101B300000000000000000000000000000000000A5 -:101B40000000000000000000000000000000000095 -:101B50000000000000000000000000000000000085 -:101B60000000000000000000000000000000000075 -:101B70000000000000000000000000000000000065 -:101B80000000000000000000000000000000000055 -:101B90000000000000000000000000000000000045 -:101BA0000000000000000000000000000000000035 -:101BB0000000000000000000000000000000000025 -:101BC0000000000000000000000000000000000015 -:101BD0000000000000000000000000000000000005 -:101BE00000000000000000000000000000000000F5 -:101BF00000000000000000000000000000000000E5 -:101C000000000000000000000000000000000000D4 -:101C100000000000000000000000000000000000C4 -:101C200000000000000000000000000000000000B4 -:101C300000000000000000000000000000000000A4 -:101C40000000000000000000000000000000000094 -:101C50000000000000000000000000000000000084 -:101C60000000000000000000000000000000000074 -:101C70000000000000000000000000000000000064 -:101C80000000000000000000000000000000000054 -:101C90000000000000000000000000000000000044 -:101CA0000000000000000000000000000000000034 -:101CB0000000000000000000000000000000000024 -:101CC0000000000000000000000000000000000014 -:101CD0000000000000000000000000000000000004 -:101CE00000000000000000000000000000000000F4 -:101CF00000000000000000000000000000000000E4 -:101D000000000000000000000000000000000000D3 -:101D100000000000000000000000000000000000C3 -:101D200000000000000000000000000000000000B3 -:101D300000000000000000000000000000000000A3 -:101D40000000000000000000000000000000000093 -:101D50000000000000000000000000000000000083 -:101D60000000000000000000000000000000000073 -:101D70000000000000000000000000000000000063 -:101D80000000000000000000000000000000000053 -:101D90000000000000000000000000000000000043 -:101DA0000000000000000000000000000000000033 -:101DB0000000000000000000000000000000000023 -:101DC0000000000000000000000000000000000013 -:101DD0000000000000000000000000000000000003 -:101DE00000000000000000000000000000000000F3 -:101DF00000000000000000000000000000000000E3 -:101E000000000000000000000000000000000000D2 -:101E100000000000000000000000000000000000C2 -:101E200000000000000000000000000000000000B2 -:101E300000000000000000000000000000000000A2 -:101E40000000000000000000000000000000000092 -:101E50000000000000000000000000000000000082 -:101E60000000000000000000000000000000000072 -:101E70000000000000000000000000000000000062 -:101E80000000000000000000000000000000000052 -:101E90000000000000000000000000000000000042 -:101EA0000000000000000000000000000000000032 -:101EB0000000000000000000000000000000000022 -:101EC0000000000000000000000000000000000012 -:101ED0000000000000000000000000000000000002 -:101EE00000000000000000000000000000000000F2 -:101EF00000000000000000000000000000000000E2 -:101F000000000000000000000000000000000000D1 -:101F100000000000000000000000000000000000C1 -:101F200000000000000000000000000000000000B1 -:101F300000000000000000000000000000000000A1 -:101F40000000000000000000000000000000000091 -:101F50000000000000000000000000000000000081 -:101F60000000000000000000000000000000000071 -:101F70000000000000000000000000000000000061 -:101F80000000000000000000000000000000000051 -:101F90000000000000000000000000000000000041 -:101FA0000000000000000000000000000000000031 -:101FB0000000000000000000000000000000000021 -:101FC0000000000000000000000000000000000011 -:101FD0000000000000000000000000000000000001 -:101FE00000000000000000000000000000000000F1 -:101FF00000000000000000000000000000000000E1 -:08200000481F000080013E04AE -:102008003038F00C19005EBC5C7C4848F00C003994 -:10201800F00C093BB22A5EFC000011C0F80815015B -:102028003039F20C1800E08800035EFDF00B000B5D -:102038004828F00B032C5EFC00007B08580CC0D02D -:1020480048787829F00900293008720A143CC060E1 -:102058002FF82F895848CFA13FF85EF800007B0879 -:102068003038F00C18005EBCF60C001C30094838FB -:10207800F00C09295EFC000000007B085EFFD70316 -:10208800D4011988301EB6881998B6BEEA18FFFF21 -:10209800E818FF80B6AEB698580AC0301588C0A8B0 -:1020A80048981188F4081800C0303038C03848788B -:1020B80011B8B6C83EE8B6D83008B6E8302C306853 -:1020C800B208D802000016AB00000008D40130188E -:1020D800198EB68E199CB6A8EA1CFFFFE81CFF8073 -:1020E800B6B8B69C580AC0A0158CE06A00FFF00C80 -:1020F8001800F4081710F9B80001B6C83EE8B6D8B9 -:102108003008B6E8302C3068B208D802D421202D27 -:102118004AAA189E1698129674075807C071FACAE8 -:10212800FFF814F7F01F0026C4681989B6891999B1 -:10213800EA19FFFFE819FF80B6993039B0A9740988 -:102148007219F20C1618B0F9B0CCF9D9C108F3D944 -:10215800C208B0ECB0D9304BB0BB74097229F20C8C -:102168001618F169000CF16C0009F9D9C108F3D906 -:10217800C208F16C000BF16B0008F169000A7409E0 -:10218800300A7239F16A00133EEAF16A0012F20A63 -:102198001618F1690011F16A000EF16B000DF5D9FE -:1021A800C108F3D9C208F16A0010F169000F302C98 -:1021B8003138AC082FEDD8220000152C800020D42F -:1021C8003038F00C18005EBCF60C001B48F8F00B19 -:1021D800032858085E0C704958195E1C7029581954 -:1021E800C09148B8F00C003C9828B42878089508A5 -:1021F8005EFC71E85808F0091700F1F91001F1F8D0 -:10220800120A9509B4285EFC00007B08000011C082 -:10221800D4314BC8300A10941499910A1893301A83 -:102228004B984BA7910A3EE14B921296C0280A9907 -:10223800E0682710C0485808C5602018664AE21AA6 -:102248000201E04A0201CF81C4F8F2C5FFFFE20AA9 -:102258001800CEE10F9BF7DBC0C15825E0890005C7 -:102268003038300AC2E80FAA3038C148580BC0A02D -:10227800EE08070EEE08000CA96E2FE8199C1C0842 -:10228800C058F0CCFFFFEE080708201AF80800082D -:102298005C5A10395F9CEC0A18005F9EFDEC000C3C -:1022A800EC0C1800CE4110395F09F9DAC008EC0CC3 -:1022B80018005F0CF9E90009EC091800C020D83AA9 -:1022C800840C3009F20C1900CB34201D5C6A1ADB2F -:1022D8001AD849081ADA490C1AD51AD8F01F000F6B -:1022E8002FADCA6BDA3A662A68085C5A2FF8EE09ED -:1022F8000B0A8908E0480063FE9AFFA9305CD832CF -:10230800000014B0000011B8000014B8000016A2B4 -:102318008003792C80037AB0800094C4D431202DB6 -:102328004C68149570081896169712945808C0713E -:10233800FACAFFF814F8F01F0042CC38198830198F -:10234800B6881998B6A9EA18FFFFE818FF80B6986A -:102358004BC89088EDB80002C171189330023EE175 -:102368000788201D4B8C1AD8F01F00382FF22FED4C -:102378000788E2081800C0502FF3E0420400CF118C -:102388004B3CF01F00320DC83099F2081800E08865 -:1023980000114B09920A3009F20A1900E0840091F1 -:1023A8001AD84AD84ADC1AD8F01F00282FEDC88856 -:1023B800E0450032C290A3684A99E0450033C5D091 -:1023C800129B7209F2080309EECAFFFCF3360020DB -:1023D8003009AEB6C088760CF808030CF809070C6B -:1023E8002FF914CCEC091900CF7349A99289EDB9DA -:1023F8000004C5F149A97209F2080308499C1AD8D2 -:1024080049581AD8C538304BA368495A7409F20894 -:10241800030972C9AEBBF20B1618AEC9AEFBF7D9E9 -:10242800C108F3D9C208AEDBAEE948A99289EDB973 -:102438000004C1903046C3D80000152C800020D479 -:10244800000016A080037AF0800094C4800384D42E -:10245800000016A28003785880037AF8000015203F -:1024680080037B187409F208030870C8496C1AD8ED -:10247800304649681AD8C1A8301AAEBA720AF408A8 -:10248800030AF53A0038AECA491A948AEDBA00042C -:10249800C0303016C0E87209F2080308F138003875 -:1024A80048CC1AD8301648981AD8F01F000B2FEDD0 -:1024B8003EE80C07AEC83008AED82FB6A806302CB8 -:1024C8002FEDD83280037B2880037858000016A2AD -:1024D80080037B38800094C4D421204D4A981897F3 -:1024E800118A580AC0313FF6C0D84A7811BC118EFB -:1024F800119611A8B166EDEE1186EDE81086F9E6A1 -:1025080010064A289088EDB80002C0E14A08201D4C -:102518004A0C1ADA1AD61AD8505B5049F01F001E16 -:102528002FCD4009401B49D870085808C081FACA05 -:10253800FFF00E9C14F8F01F001AC2080F88B68826 -:102548000F98EA18FFFFE818FF80B6983018B6A869 -:102558003048B6B8F1D6C108B6E83EE8EC0A161815 -:10256800B6F6F7680008B6CA3008EDD6C208F768AC -:102578000009B6D63098302CB2082FCDD8220000EA -:102588000000152800007B28000016A28003782090 -:1025980080037B48800094C40000152C800020D460 -:1025A800D401580BC0313FF8C0C8178A17B917981B -:1025B800B168F1EA118817AAF1EA1088F3E810085F -:1025C800F00A161848E9B28AF5D8C208B2B8B29A21 -:1025D800F5D8C108B2AA48B99289EDB90002C0A1DC -:1025E800201D1AD848881ADC488C1AD8F01F000811 -:1025F8002FCD30194878B089D802000000007B2818 -:10260800000016A28003799C80037B74800094C428 -:1026180000001528D431204D4AE8189570081697FF -:1026280012965808C071FACAFFF014F8F01F002A71 -:10263800C4D84AA89088EDB80002C1711894300334 -:102648003EE20988201D4A6C1AD8F01F00262FF395 -:102658002FED0988E4081800C0502FF4E043040067 -:10266800CF114A1CF01F001F0B880BCCAE880B98AB -:10267800EA18FFFFE818FF80AE983004BA445014F7 -:102688003025FACAFFFCAEA5301BF01F0018304AEF -:10269800EF64000CEF6500084018F0091618AEF852 -:1026A800AEC99A49AEBAF5D8C108F1D8C208EF69DF -:1026B800000AAED8AEEA3EE8F3D9C108EF68000BCD -:1026C800EF69000930C8302CAC082FCDD832000093 -:1026D8000000152C800020D4000016A080037AF09A -:1026E800800094C4800384D4800021C8D40148A801 -:1026F8009088EDB80002C0E148887008201D1AD8FB -:10270800487811881AD84878487C1AD8F01F0007EA -:102718002FCDDA0A000016A200000008000016AB50 -:10272800800379E480037BA8800094C4D42148E620 -:10273800189E30076C0C580CC0A02FF72EC6E04727 -:102748000024CF91489CF01F000ADC2A4866EE0757 -:102758000027EC070027EF680010AECE8F0B8F2AFA -:102768008F39D822000011E080037BC4800094C414 -:10277800D4214C8618970C9A302830094C6B310CB0 -:10278800F01F00460C9A302830094C5B311CF01FB2 -:1027980000430C9A302830094C2B312CF01F003F95 -:1027A8000E990C9A30284C0B314CF01F003C0E99B6 -:1027B8000C9A30284BDB315CF01F00383018300998 -:1027C8004BBA4BCB320CF01F003530184BA73009F1 -:1027D8000E9B4BAA321CF01F00310E9B301830099B -:1027E8004B7A322CF01F002D4B6532390A9A0E9B1A -:1027F8003018129CF01F002932490A9A0E9B301893 -:10280800129CF01F002632590A9A0E9B3018129C0F -:10281800F01F00220A9A32690E9B3018129CF01F92 -:10282800001F0C9A302830094A7B336CF01F001BBC -:102838000E9B301830094A5A327CF01F00180C9A47 -:10284800302830094A2B330CF01F00144A1533394D -:102858000A9A0E9B3018129CF01F001033190A9A1E -:102868000E9B3018129CF01F000D0A9A33290E9BFC -:102878003018129CF01F00090C9A30283009496B57 -:10288800334CF01F00060E9B30183009493AC278C5 -:10289800800020D48000427C8000273480004118CA -:1028A8008000433080003FD080003EA88000208810 -:1028B800800026F48000208480002114800035ECFC -:1028C80080003514800034A480004B5480003740C9 -:1028D8008000232480003678800024E0335CF01FD9 -:1028E80000370C9A302830094B5B328CF01F0033CC -:1028F8000C9A302830094B3B32DCF01F00300C9A20 -:10290800302830094B0B32ECF01F002C0E9B30188E -:1029180030094AEA329CF01F00290E9B3018300912 -:102928004ABA32CCF01F00250E9B301830094A9A5B -:1029380032BCF01F00220C9A304830094A6B344CE4 -:10294800F01F001E0E9B301830094A4A32ACF01FA7 -:10295800001B0E9B301830094A1A345CF01F001710 -:102968000E9B3018300949FA32FCF01F00140E9BF8 -:102978003018300949CA337CF01F00100E9B3018FC -:10298800300949AA338CF01F000D0C9A30483009E1 -:10299800497B346CF01F00090C9A30283009495BD8 -:1029A800339CF01F00060E9B30183009492A33ACBF -:1029B800F01F0002D82200008000273480003D88E4 -:1029C80080003AC8800038B4800033FC800030D4DE -:1029D800800032848000375C800032088000300438 -:1029E8008000332880002F8C80002EC4800038841B -:1029F800800037CC8000261CD4013038580B5F1972 -:102A0800F00C18005F88F3E80008C060F40C0019A7 -:102A180048D8F009092B48D89088EDB80001C111B1 -:102A280048B848C9580AF20A1700F00A171048A807 -:102A38001ADA1ADB1ADC489C1AD8F01F00092FCDC5 -:102A4800D802000000007B08000016A280037BDC8F -:102A580080037BE4800378C080037BF0800094C40B -:102A6800D401580BF60A1700F7FA180BF01F0002EA -:102A7800D802000080002A00D401320A300B483CFA -:102A8800F01F0003D802000000007B088002E8BCA9 -:102A9800D421206D3087FAC6FFF00E9A4C6B18953A -:102AA8000C9CF01F0046304B0C9CF01F0045300872 -:102AB800FB68000DBA88FB680009FB68000BFB681F -:102AC800000CEE784240501830480E9BFB67000817 -:102AD800FB68000A300AFE7C2400F01F003A1897B1 -:102AE800C0F04B989088EDB80002C0814B78201D4B -:102AF8004B7C1AD8F01F00372FED301CC5A8E06AB0 -:102B0800F980EA1A03371A9BFE7C2400F01F003272 -:102B1800582CC0D14AC89008EE081900C0844AB899 -:102B2800201D4AEC1AD8F01F002B2FEDD303300AD2 -:102B3800E06B01204AACF01F002BD503E1B8000080 -:102B4800EE180001F5D8C201C020D303FE78240096 -:102B58003019705BF7D9D001915B705BF7D9D0C1A0 -:102B6800915B705BF7D9D081915B580AC020D5037F -:102B7800FE7C2400F01F001C0A9CF01F001C364A33 -:102B8800300B49BCF01F001BE06A0400300B49AC55 -:102B9800F01F0018E06A0400300B498CF01F001584 -:102BA800F01F0017497830079107F01F00170E9C97 -:102BB8002FADD822800382078002E7368000A280EA -:102BC8008000A618000016A2800379BC80037C0848 -:102BD800800094C48000A73C80037C2880002C10CF -:102BE8008000A3A08000A7EC80002778000014B81C -:102BF8008002E8BC00000DB8000009B880002A80F7 -:102C0800000000088000751CD401E1B80000EE182F -:102C18000001F5D8C201C020D303FE782400301982 -:102C2800706BF7D9D001916B706BF7D9D0C1916BEC -:102C3800706BF7D9D081916B580AC020D503FE7C00 -:102C480024007848EDB80000C0F1F01F0016C0C19C -:102C5800319CF01F0015495890092FF9B009301917 -:102C68004938B089C1B8E1B80000EE180001F5D8BC -:102C7800C201C020D303FE7824003019705BF7D955 -:102C8800D001915B705BF7D9D0C1915B705BF7D9CC -:102C9800D081915B580AC020D503D402D603000026 -:102CA800800022188000A2E6000014B40000151C61 -:102CB800D4313006189714931694950618983E093F -:102CC800C2C81095118A2FF8F20A1800C251580686 -:102CD800C21049E890093008F0091900C064089B3F -:102CE8000E9C5C7BF01F001A49A890093008F00977 -:102CF8001900C1040C070F98201D1AD849681AD466 -:102D08001AD690881AD84958495C1AD8F01F001565 -:102D18002FAD8706C1882FF60836CD4548D89009CB -:102D28003008F0091900C0353005C0D8201D48A862 -:102D38001AD690881AD8489848BC1AD83005F01F77 -:102D480000092FCD0A9CD832000016A680013DB498 -:102D5800000016A2000014B4800378D080037C48D9 -:102D6800800094C480037C6CD42118971696F01FB9 -:102D780000325F080E3C5F191895F1E91009C03060 -:102D88005808C5710B893E08F0091800C5210B9930 -:102D98003008F0091800C4D5E2190040C0E1EACAB9 -:102DA800FFFD0BAC1298C068158B2FF92FFB160A84 -:102DB80016081839CFA5C2384A089088EDB800021D -:102DC800C0D149F8201D49FC1AD8F01F001FF7D6BA -:102DD800C0100E9CF01F001D2FED3009EACAFFFD40 -:102DE8000BAC1298C0A81587159B2FF9F7E7108B25 -:102DF8002FEB160AF60800081839CF6510053EE9CA -:102E08000BB8F2081800C021DA2A4919920A3009C9 -:102E1800F20A1900C0E4201D1AD848E890881AD888 -:102E2800487848DC1AD8F01F0008300C2FCDD8227B -:102E3800D82A000080002CB8000016A080037974FE -:102E480080037C84800094C480013DB4000016A2F5 -:102E5800000014B480037C8CD4014918581CC0713C -:102E68003039334C9109F01F000FC0683049334C9A -:102E78009109F01F000D48D89088EDB80002C0D124 -:102E880048787008201D1AD848981AD8489848AC2D -:102E98001AD8F01F000A2FCDD80200000000000841 -:102EA8008000A2E68000A300000016A280037A3CFE -:102EB8008003821080037CB0800094C4D421FACDB2 -:102EC80001004AC81697700512965805C071FACACB -:102ED800FF0014F5F01F0028C4A81989301AB68914 -:102EE8001999B6AAEA19FFFFE819FF80B69919B926 -:102EF800F4091800C20119C53FF8F0051800C1B05F -:102F0800E06A00FF300B1A9CF01F001C1A9430086E -:102F1800C048E8080B082FF80A38CFC51A94AEB590 -:102F2800EEC8FFFCFA050009C038093A10CA123485 -:102F3800CFD1C15849256A0CF01F00120A98EECA71 -:102F4800FFFCEBDCC0083009AEB5C068700BF609B1 -:102F5800070B2FF914CBEA091900CF933EE80A07AB -:102F6800AEC83008AED82FB5302CAC052C0DD82201 -:102F78000000152C800020D48002E8BC0000011459 -:102F88008002EDD0D421202D49981697700E129604 -:102F9800580EC071FACAFFF814FEF01F0016C25886 -:102FA8001989B6891998EA18FFFFE818FF80B698BA -:102FB80030184915B6A86A0CF01F0010EEC9FFFCBE -:102FC8005C5C3008AEBCC0686A0AF408070A2FF8CF -:102FD80012CAF8081900CF933EE818072FBCAEC8EC -:102FE8003008AED8AC0C302C2FEDD8220000152CB0 -:102FF800800020D4000001148002EDD0D421202DBF -:103008004AE818967008169712955808C071FACAB7 -:10301800FFF814F8F01F002AC4D84AA811D4303891 -:10302800F0041800E08B0046FACAFFFC1A9B089CC3 -:10303800F01F00250D88C300AE880D98EA18FFFF21 -:10304800E818FF80AE983018AEA81BC8AEB89A280A -:10305800AEC83008C0B8F3D8C010400BF1DAB010D1 -:10306800EE09000AF6090709B4D9F0CAFFFF9A2940 -:10307800F2081900CF13F1D9C010EE0800083EEA93 -:10308800B0DA9AA82FA910073008AEE8AA09089C58 -:10309800F01F000EC0E8AE880D98EA18FFFFE81888 -:1030A800FF80AECCAE98AEAC3EE8AEB83048AA08C9 -:1030B800302C2FEDD82200000000152C800020D4E1 -:1030C80000000DB880006BF480006FBCD431202D57 -:1030D8004C5818967008169712955808C071BAE897 -:1030E800FACAFFFAF01F0041C728F8C8FFFDC3C09D -:1030F80011842FF4F0040004C37009893018F00912 -:103108001800C67109993EE8F0091800C6214B88D5 -:1031180090093008F0091900C5C44B681AD44B6CE3 -:103128001AD8F01F00362FEDC548099309A9F3E313 -:1031380010835C83C54809893018F0091800C1510B -:1031480009993EE8F0091800C1014A989009300829 -:10315800F0091900C0A44A781AD44A7C1AD8F01F7A -:1031680000272FEDC02830030DB43018F0041800E4 -:10317800C2D10DCC3038F00C1800E08B0028F5D304 -:10318800C008FACBFFF9F01F001E0D88C120AE88D9 -:103198000D98EA18FFFFE818FF80AEB4AE98AEA409 -:1031A8001BF8AEC83EE8AED83008AEE83068C0D8E4 -:1031B800AE880D98EA18FFFFE818FF80AE983EE841 -:1031C800AECCAEB8AEAC3048AA08302C2FEDD83211 -:1031D80009883029F2081800CA9030032FF8100423 -:1031E800CAB1CC3B0000152C800020D4000016A2E8 -:1031F8008003780C80037CBC800094C480006FE05E -:10320800D421202D49A81697700E1296580EC07119 -:10321800FACAFFF814FEF01F0017C2681989301A9D -:10322800B6891999B6AAEA19FFFFE819FF80B69975 -:1032380019B9F4091800C0D119C83039F2081800B2 -:10324800E08B000848C9F208033CF01F000CC028B6 -:10325800300C3018AEB83EE8AECCAED83008AEE888 -:10326800302C3068AC082FEDD82200000000152C57 -:10327800800020D400007B0880004D78D421202DC8 -:103288004A181697700E1296580EC071FACAFFF8AF -:1032980014FEF01F001EC3481989301AB6891999FF -:1032A800B6AAEA19FFFFE819FF80B69919B9F40917 -:1032B8001800C0B119CC3038F00C1800E08B0006AB -:1032C800F01F00135C8CC028300C3028AEB83EE8E4 -:1032D800AECCAEE85C7CF8081608AED83008AEF87C -:1032E8003078AC0848B89088EDB80002C08148A88A -:1032F8001ADC48AC1AD8F01F000A2FED302C2FED3D -:10330800D82200000000152C800020D480006D38E1 -:10331800000016A8800378A880037CD8800094C495 -:10332800D421202D4AA81697700512965805C07109 -:10333800FACAFFF814F5F01F0027C4781989301A63 -:10334800B6891999B6AAEA19FFFFE819FF80B69954 -:10335800303819B919C5F40918005F09F0051800C3 -:103368005F881268C19049C8F00503345804C060EA -:10337800089C301BF01F0019C10849989009E809FA -:103388001900C0A449781AD5497C1AD8F01F00172B -:10339800089C2FEDC028300C3018AEB83EE8AECCF3 -:1033A800AED83008AEE83068AC0849189088EDB857 -:1033B8000002C0A148B8201D1ADC48EC1AD51AD85A -:1033C800F01F000A2FCD302C2FEDD8220000152C2D -:1033D800800020D400007B0880004F1C000016A647 -:1033E8008003794080037CEC800094C4000016A818 -:1033F80080037D10D421202D4A181697700E12963E -:10340800580EC071FACAFFF814FEF01F001EC34818 -:103418001989301AB6891999B6AAEA19FFFFE81965 -:10342800FF80B69919B9F4091800C0F119C83039E4 -:10343800F2081800E08B000A4939F2080038300B0E -:10344800701CF01F0012C028300C3018AEB83EE8CF -:10345800AECCAED83008AEE83068AC0848C8908822 -:10346800EDB80002C08148B81ADC48BC1AD8F01F71 -:10347800000B2FED302C2FEDD82200000000152C6A -:10348800800020D400007B0880004F1C000016A894 -:1034980080037A6480037D28800094C4D40149584D -:1034A8009088EDB80002C08149381ADC493C1AD826 -:1034B800F01F00132FED49383009118AF20A18005D -:1034C800C021DC0AB089F01F0010581CC1004898C0 -:1034D80090093008F0091900C025DA0A48681ADC92 -:1034E80048AC1AD8F01F0006301C2FEDD802000097 -:1034F800000016A28003798480037D38800094C47C -:10350800000016AA80019EF880037D54D421202D46 -:103518004B281496700E16971295580EC071FACA59 -:10352800FFF814FEF01F002EC5681989B68919988E -:10353800EA18FFFFE818FF803014B698B6A4F01F09 -:103548000029C3E0E0460025C260E0460026C3200B -:10355800EEC9FFFCE0460024C0F0129AF9380020BA -:103568003009AEB8C058F809070B2FF914CBF00989 -:103578001900CFA3C28830682DACAEB8306A3008C5 -:10358800198B12CB2FF8201C5C88F4081900CF91F6 -:103598003068C19878C8F0091618AEF93049AEC835 -:1035A800AEB9F3D8C108F1D8C208AED9AEE83048F0 -:1035B800C0A8AEB4F9380038AEC83018C048AEB4A8 -:1035C800AECC18983EE91007AEC93009AED92FB86D -:1035D800302CAA082FEDD8220000152C800020D40A -:1035E8008001997CD421202D49F8189670081697E7 -:1035F80012955808C041FACAFFF8C1881988B688D8 -:103608001998EA18FFFFE818FF803019B698306853 -:10361800B6A9B6B81A9CF01F0015581CC0B00A9974 -:103628000E9B0C9CFACAFFF8300814F8F01F001023 -:10363800C1881BD8AEC81BC8AED81BB8AEE81BA83B -:10364800AEF81B98EF6800081B88EF6800093EE891 -:10365800EF68000A3008EF68000B302C30B8AA0871 -:103668002FEDD8220000152C80019128800020D44D -:10367800D421FACD010016961A971A9C173AF01F12 -:103688000025FAC9FF000D88F20800083009F16921 -:10369800FF004A189088EDB80002C08149F81AD78F -:1036A80049FC1AD8F01F001F2FED300849E749FAE6 -:1036B800AE88AE98AEA8AEB8B488109949CA0E9B29 -:1036C8001A9C1A96F01F001B5C5CC040E06C00FF5F -:1036D800C1E849189088EDB80002C1510F8A0FB9A6 -:1036E8000F98B168F1EA11880FAAF1EA1088F3E897 -:1036F8001008201D1AD848981AD648FC1AD8F01F66 -:1037080000092FCD30194898301CB0892C0DD822CB -:103718008002E736000016A280037A7C80037D646D -:10372800800094C400007B2800001528800025A88C -:103738008000C4C080037D84D401F01F0006E068C7 -:1037480000FF581CF00C1710F9BC0001D80200004B -:10375800800199CCD42118971696335CF01F001677 -:103768005827C1F10D980D89F1E910893018F00931 -:103778001900C1710DA80DBA0DC9303BF608180023 -:10378800E0880004300CC04848CBF608033CA96A1E -:10379800ECCBFFFB120A5C7AF01F00091897C028CF -:1037A8003FF7335CF01F0007E06C00FF5817F9BCC7 -:1037B8000001D8228000A30000007B08800053C0CD -:1037C8008000A2E6D421202D581CC4211789F809AD -:1037D8001800C3E1F6C8FFFE1796C170118AF20AF5 -:1037E8001800C131119A3EE9F20A1800C0E149B93E -:1037F800920A3009F20A1900C0841AD84988499CEB -:103808001AD8F01F00192FED3008FACAFFF8300B4C -:1038180014E80C9CF01F00159A3A18973038F006F7 -:103828001800E0880004300CC0484918F006033C32 -:103838005C7A0E9BF01F000F18950C9CF01F000E71 -:103848000E9CF01F000E5815C0310A9CC038E06C61 -:1038580000FF2FEDD8220000000016A28003795C3B -:1038680080037CBC800094C4800072DC00007B086C -:103878008000514080006E188002E28CD401582CE0 -:10388800C13117981789F1E910893018F009190022 -:10389800C0B117C817BA17ACA96A2FBBF00A000A3B -:1038A8005C7AF01F0002DA0A80007380D421581C69 -:1038B800C391580BC0311697C1E81788F80818004B -:1038C800C3411797C33817893018F0091800C13158 -:1038D80017993EE8F0091800C0E1497890093008C6 -:1038E800F0091900C08449581ADB495C1AD8F01F3E -:1038F80000152FED49089088EDB80002C08148F8FE -:103908001AD7491C1AD8F01F000F2FED3038F007CE -:103918001800E08B000848D8F007033CF01F000CA3 -:10392800DA2AE06C00FFD82230072FF8100BCCC140 -:10393800CE2B0000000016A2800379F880037CBC1F -:10394800800094C480037DA800007B088000599CF7 -:10395800D421202D4B981896169414971295908878 -:10396800EDB80002C1314B694B685805F2081700E1 -:10397800201D1AD816985C781ADA1AD84B281ADC3F -:103988004B2C1AD8F01F00322FAD3038F007180032 -:10399800E0880005E06C00FFC8584AE8F0070338E3 -:1039A80050085808C1504A59920A3009F20A1900B9 -:1039B800C0841AD84A484A8C1AD8F01F00252FED1F -:1039C800400CF01F002630094A28F00709391A9CD4 -:1039D800E06A04005016300B1ADC14981AD75C748D -:1039E8001ADB16991AD5089C1ADA169A1AD6F01FF5 -:1039F800001C49282FAD580CC3819088EDB80002EF -:103A0800C1511AD71AD41AD6403850461AD848D8AD -:103A180048B95805F2051700F005171048A81AD537 -:103A2800490C1AD8F01F000A2FAD0E9C400BF01F4E -:103A3800000E301CC3780000000016A280037DC869 -:103A480080037DC4800379C480037DCC800094C446 -:103A580000007B0880037DF88000599C80005D642D -:103A680080037E2480002A689088EDB80002C15146 -:103A78001AD71AD41AD6403850461AD848B848C95E -:103A88005805F2051700F005171048A81AD548ACD4 -:103A98001AD8F01F000A2FAD300948983FFCF007EC -:103AA80009392FEDD822000080037DC480037DC82A -:103AB800800379C480037E50800094C400007B0892 -:103AC800D431584CE081008E580BC2A01785F805F8 -:103AD8001800E081008A179817A7B167EFE81187E7 -:103AE80017B8EFE8108717C8F1E71007C7E80B8980 -:103AF8003018F0091800C7E10B993EE8F0091800E2 -:103B0800C7914C2890093008F0091900C7344C08AF -:103B18001AD54C0C1AD8F01F00402FEDC6B81697CE -:103B28003006C1F80B960BA8F1E610865C86C688AD -:103B380007893018F0091800C72107993EE8F009ED -:103B48001800C6D14B1890093008F0091900C6743E -:103B58004AF81AD34AFC1AD8F01F002F2FEDC5F8DF -:103B68003005C1B80795C61809893018F00918003A -:103B7800C61109993EE8F0091800C5C14A389009EC -:103B88003008F0091900C5644A181AD44A1C1AD812 -:103B9800F01F00212FEDC4E83003C1A80993C50820 -:103BA80009893018F0091800C13109993EE8F0096F -:103BB8001800C0E1495890093008F0091900C0847C -:103BC80049381AD4493C1AD8F01F00132FED06992A -:103BD8000A9AF7D6C0100E9CF01F0010581CC0306F -:103BE800E06C00FFD83230072FF5F6050005C80154 -:103BF800C98B0B833028F0031800C95030062FF307 -:103C0800EA030003C961CADB000016A280037A98A0 -:103C180080037CBC800094C4800039580784301825 -:103C2800F0041800CA0030052FF4E6040004C9D1D6 -:103C3800CB4B09883019F2081800CB1030032FF845 -:103C48001004CAF1CC5B0000D421202D3038169620 -:103C58001494F00B1800E08B0072300750074BA843 -:103C68001188EE081800C0B04B889008EE081900BB -:103C7800C654201D4B684B7C1AD8C0F84B69138971 -:103C8800F0091800C0E14B589008EE081900C56407 -:103C9800201D4AF84B2C1AD8F01F00322FEDC4E82B -:103CA8001A9AE0690400501712981ADAEBDCC0106F -:103CB8001ADB0E9A1AD70E9B1AD40A9C1AD93019F5 -:103CC8001AD7F01F00294A182FAD580CC1B1908897 -:103CD800EDB80002C1114A584A595804F2041700B5 -:103CE800F004171049A81AD64A2C1AD51AD41AD88B -:103CF800F01F001C2FCD0C9C400BF01F001F301C28 -:103D0800C1F89008EE081900C11449884989580477 -:103D1800F2041700F004171048D81AD6497C1AD5AF -:103D28001AD41AD8F01F000F2FCDA17630092FF61C -:103D380049383FFCF0060929C038E06C00FF2FED38 -:103D4800D822000000007B07000016A280037A102A -:103D580080037E80000016AB000016A680037EA0BC -:103D6800800094C480005D6480037DC480037DC8A6 -:103D780080037EB880002A6880037EDC00007B0810 -:103D8800D421583CC661580BC24017843028F0042F -:103D98001800C621179717A8F1E710875C87C5D8C0 -:103DA80009893018F0091800C5D109993EE8F009C9 -:103DB8001800C5814B6890093008F0091900C5241E -:103DC8004B481AD44B4C1AD8F01F00342FEDC4A816 -:103DD80016973006C1B80996C4B80B893018F0098F -:103DE8001800C4B10B993EE8F0091800C4614A886C -:103DF80090093008F0091900C4044A681AD54A6CB9 -:103E08001AD8F01F00262FEDC3883004C1A80B94E0 -:103E1800C3A80B893018F0091800C1310B993EE886 -:103E2800F0091800C0E149A890093008F009190004 -:103E3800C08449881AD5498C1AD8F01F00182FED6C -:103E48000E9C089A0C9B5C7CF01F0015581CC03017 -:103E5800E06C00FFD82230072FF4F6040004CA11E2 -:103E6800CB9B09853018F0051800CB6030062FF57C -:103E7800E8050005CB31CCAB0B883019F2081800E7 -:103E8800CC7030042FF81005CC51CDBB000016A221 -:103E98008003791480037CBC800094C480003C506B -:103EA800D431204D1495740A501A18961788301971 -:103EB800F2081800C771F6C7FFFE1794C1700F8982 -:103EC800F0091800C1310F993EE8F0091800C0E167 -:103ED8004B7890093008F0091900C0844B581AD75C -:103EE8004B5C1AD8F01F00352FED4B189088EDB8B1 -:103EF8000002C0A14AF81AD44B1C1AD61AD51AD8EF -:103F0800F01F002E2FCD3028F0041800E08B004B56 -:103F18003006304030114A624A63C3E80F88E0082F -:103F28001800C4010F990FA8B168F1E911880FB9F9 -:103F3800F1E910880FC92FB7F3E810085807C170C6 -:103F48000F89E2091800C1310F993EEAF4091800F7 -:103F5800C0E18409300AF4091900C0941AD7496CE1 -:103F68001AD35028F01F00152FED400850388489C7 -:103F7800EDB90002C0A11AD84029492C1AD91AD67D -:103F88001AD3F01F000E2FCDF9D6C008FACBFFF4D4 -:103F98002FF6F01F000D0836CC253008301CAAC8B3 -:103FA800C038E06C00FF2FCDD8320000000016A208 -:103FB80080037A4C80037CBC800094C480037F0813 -:103FC80080037F308000C19CD431203D3019149487 -:103FD800189674051788F2081800E0810085F6C75E -:103FE800FFFE1792C1700F89F0091800C1310F99AF -:103FF8003EE8F0091800C0E14BD890093008F009F4 -:104008001900C0844BB81AD74BBC1AD8F01F003B14 -:104018002FED4B789088EDB80002C0A14B581AD20A -:104028004B7C1AD61AD41AD8F01F00342FCD30384A -:10403800F0021800E08B005830064AD04AD1FAC383 -:10404800FFF8C4B80F88304AF4081800C4C10F99A3 -:104058000FA8B168F1E911880FB9F1E910880FC903 -:104068002FB7F3E810085807C1800F89301AF409F0 -:104078001800C1310F993EEAF4091800C0E180091F -:10408800300AF4091900C0941AD749BC1AD150282B -:10409800F01F001A2FED400850288089EDB9000262 -:1040A800C0911AD8497C1AD51AD61AD1F01F001314 -:1040B8002FCD5816C0805826C0B0069B0A9CF01F0A -:1040C8000012C0A8069B0A9CF01F0010C058069B4F -:1040D8000A9CF01F000F2FF60436CB553008301C11 -:1040E800A8C8C038E06C00FF2FDDD832000016A247 -:1040F800800378F080037CBC800094C480037F0830 -:1041080080037F308000CBC88000CA748000CA92C8 -:10411800D421FACD00884C6816979088EDB8000233 -:10412800C0B14C48201D1ADC1AD84C384C3C1AD85F -:10413800F01F00432FCD344A300BFAC6FFFC0C9C0D -:10414800F01F0040306AE06B00FFFACCFFDBF01F85 -:10415800003D0F8A31F8F00A1800E08B008930889A -:10416800EECBFFFFFB68003C0C9CF01F00370F896B -:10417800FB6900244AE89088EDB80002C0A14AE82B -:10418800201D4B2C1AD91AD61AD8F01F002D2FCD66 -:104198000F882FF8FAC6FFB810070C9C0E9B173A29 -:1041A800F01F002BFAC9FF780F88F20800083009C1 -:1041B800F169FFC049E89088EDB80002C0B10F88E6 -:1041C800201D1AD849C81AD64A2C1AD8F01F001C24 -:1041D8002FCD0F8A3018FAC7FFFC3089FACBFFB809 -:1041E8000E9CF01F001D581CC0C0491890093008CB -:1041F800F0091900C3C44908498C1AD81AD8C0E86C -:10420800497CF01F000F0E9C300BF01F001618970A -:10421800581CC080201D1ADC493CF01F00092FEDF6 -:10422800C268492CF01F00060E9CC238000016A276 -:1042380080037A248003787080037F50800094C4C0 -:104248008002E8BC8002E73680037CB08002EE0C76 -:1042580080037F648001908480037F7880037FA03F -:10426800800099A880037FB880037FC0E06C00FFBE -:104278002DEDD822D42120AD4A461697178A31F859 -:10428800F00A1800E08B002FFAC5FFF92FFB0A9CF3 -:10429800F01F001F0F88FAC9FFD8FB680027100914 -:1042A8003008F368FFDF8C88EDB80002C0814998B8 -:1042B8001AD5499C1AD8F01F00192FED300BFACCEB -:1042C800FFF9F01F00171897581CC1B048F890095B -:1042D8003008F0091900C1541ADC48E8491C1AD8FA -:1042E800C0D88C093008F0091900C0353FF7C098CC -:1042F800201D488848CC1AD83FF7F01F00082FED3A -:104308000E9C2F6DD8220000000016A28002E7360E -:10431800800378E080037B18800094C4800099A80B -:1043280080037D5480037FC4D431216D4D281697B6 -:104338009088EDB80002C0B14D08201D1ADC1AD8CB -:104348004CF84D0C1AD8F01F00502FCD321AFAC66F -:10435800FFFD300B0C9CF01F004D0F8A31F8F00A5E -:104368001800E08B0085EECBFFFF0C9CF01F004887 -:104378000F88FB6800234C089088EDB80002C081C4 -:104388004BF81AD64C3C1AD8F01F003F2FED0F8679 -:104398002FF6EE060006FAC7FFAC0C9B0E9C173AE8 -:1043A800F01F003D0D88FAC9FFA8F20800080E9C0E -:1043B8003003F163FFFCF01F00393038EFDCC00830 -:1043C8000D89F00718005FB53018F00918005F185C -:1043D80010450A94E6051800C4A1ECCBFFFDFAC30A -:1043E800FFDC2FE6069C0D8AF01F002B0D88FAC90A -:1043F800FFA8F2080008069BF165FFCCFAC5FFC0CC -:104408000A9CF01F002730D81896F00C18005F1986 -:104418003058F00C18005F18F3E80008E808180096 -:10442800C261FAC4FFB2306AE06B00FF089CF01F5B -:1044380000170C9B08990A9A0E9CF01F001A0E9CF4 -:10444800F01F0019300BFACCFFFDF01F0018581CA4 -:10445800C100489890093008F0091900C0844888BC -:104468001ADC493C1AD8F01F00082FEDE06C00FF59 -:104478002EADD832000016A280037888800379AC6C -:1044880080037F50800094C48002E8BC8002E73635 -:1044980080037FE48002EE0C8002DC2C80009868A8 -:1044A8008001927080019258800099A880037D5401 -:1044B800D401319CF01F0010E06B00EFFE7C280057 -:1044C800F01F000E581CC060FE7C2800F01F000C76 -:1044D800CFC0319CF01F000B48B890093008F00994 -:1044E8001900C0844898201D489C1AD8F01F00095C -:1044F8002FEDD8028000A3008000A7FA8000A7F261 -:104508008000A2E6000016A28003790880037FF0ED -:10451800800094C4D431202D3008FAC7FFF81696CD -:10452800189514930EE81694098B0A9C2FF4F01F23 -:104538000009581CC0B00E9B0A9CF01F0007089881 -:104548000C18E6081900CF13300C2FEDD8320000F4 -:104558008000A7FA8000A816D421202D30081496D0 -:10456800F80C002C129AFAC9FFF812E84A88F00CE5 -:10457800002C169578280C9B0A9C5D184A583049DF -:10458800319C9109F01F00249ABA0C9BFE7C2400F0 -:10459800F01F00221897319CF01F00214A189088BC -:1045A800EDB80002C0414A0CF01F002049D890889D -:1045B800EDB80002C0D149E8201D49EC1AD8F01F17 -:1045C800001B49D80A9C908BF01F001C2FED4958FE -:1045D8009088EDB80002C041499CF01F00144918AA -:1045E8009088EDB80002C0C14918201D491C1AD88E -:1045F800F01F000E9AFB0C9CF01F00102FED9A394B -:1046080049080E9CB0092FEDD8220000000011E0E7 -:10461800000011B88000A3008000451C8000A2E6BD -:10462800000016A080038008800094C480037800EE -:1046380080037C84000011BE80013DB48003800C9F -:10464800000011BCD431202D4BC43048E8C3FFF022 -:10465800BAF81897199616910C90F8C2FFFD2FC456 -:104668003005E21000400988EC081800C4B107883A -:104678003029F2081800C1F10A9C4B08EA05002508 -:10468800029AF00500240E9BE8C5FFF46839F01F74 -:10469800002CC030301CC4E868086A0A049B0FACC0 -:1046A8005D18BAFCE216004030181BF9F009180032 -:1046B800C3C1C3D85800E00A1700F9BA0100E8F8E6 -:1046C800FFFC049B0FAC5D18BAFC30190788F20890 -:1046D8001800C0B10A9C4998EA050025029AF0051D -:1046E80000250E9B6A39C0A83049F2081800C0A1FD -:1046F800029A0E9B0A9CFAC9FFF9F01F0011C170BB -:10470800C1882FF52EC42EC3E0450024CAD148D84D -:1047180090093008F0091900C08448B81AD648BC76 -:104728001AD8F01F000B2FED302CC048304CC02891 -:10473800300C2FEDD8320000000011E080004560F9 -:10474800000016A28003789880038010800094C42B -:10475800D421202D4BD8910C30094BD8118AF20A5C -:104768001800E08000DAB08930085018E1B800007D -:10477800EE180001F5D8C201C020D303FE7824004A -:104788003019706BF7D9D001916B706BF7D9D0C124 -:10479800916B706BF7D9D081916B580AC020D50303 -:1047A8004AC7FACAFFFC6E0B4ABCF01F002C1896C9 -:1047B800C6E04AB8303A6E09910A401B4A98161961 -:1047C800B009E06A03FFF4091900E0880005E06910 -:1047D8000400B0094A064A37EC0B000B4A2C8E8AB3 -:1047E800F01F002230084A2BAC8849FCF01F00213A -:1047F800584CC2204A089088EDB80002C0C149F858 -:10480800201D49FC1AD8F01F001F8E8B496CF01F21 -:10481800001E2FED49889088EDB80002C0D1497874 -:10482800201D497C1AD8F01F00174988490C908B25 -:10483800F01F00152FED4879300893084899B20801 -:1048480048799308C46800000000152C0000151C66 -:10485800000014B0000014B880002D70000011B8DA -:10486800000011BE00000DB88002E736000009B84C -:104878008000464C000016A0800379D880037C8411 -:10488800800094C480013DB4000011BCF01F0024D6 -:104898004A489008EC081900C0A44A3890881AD8E9 -:1048A8004A284A3C1AD8F01F00232FED4A289009BD -:1048B8003008F0091900C0644A084A1C909BF01F90 -:1048C80000214A19300893084A09B20849C9B28830 -:1048D800E06B0120FE7C0D80F01F001DE1B8000098 -:1048E800EE180001F5D8C201C020D303FE782400D9 -:1048F8003019705BF7D9D001915B705BF7D9D0C1E3 -:10490800915B705BF7D9D081915B580AC020D503C1 -:10491800319CF01F00102FEDD8220000800044B811 -:10492800000016A2000014B4800379D88003802CFC -:10493800800094C4000016A6000014B0000014B84B -:1049480080013DB4000011B8000011BE8000A20033 -:104958008000A300D431207D4B6730054B664B782F -:104968001188EA081800EC081710EE0817004B4CDD -:104978001AD8F01F00344B481188EA081800EC07D1 -:1049880017104B2C50074B2230074B23F01F002DDC -:104998000E942FED4B01CBD86A005800E08000B28E -:1049A80080286009201D1AD95028F01F002C602A81 -:1049B8002FFD580AE60A1700E20A171040185C781B -:1049C80060491AD84A681ADC1ADA4A6A5809F40996 -:1049D8001700F00917104A4C1AD91AD01AD61AD744 -:1049E800F01F001860482F8D5808C431E0C9FFBC7B -:1049F800720A580AC0E0744B201D49CC1ADB1ADA37 -:104A08001AD850595048F01F000F2FCD40084019B0 -:104A18002FF82FC95848CED161585808C610704988 -:104A2800493C1AD91AD8F01F00072FEDC598000085 -:104A3800800380548003805C000016AB8003806094 -:104A4800800094C400007B078003807400007B080A -:104A580080037BE480037BDC800096A880037DC410 -:104A680080037DC880038088800380B8800380D05D -:104A780061E85808C350F11900127008201D1AD8AF -:104A8800507850395028F01F002761EA2FFDF53B78 -:104A9800001040291AD940281AD81ADC4A2C1ADBE7 -:104AA8001ADA50B8F01F0021FACAFFE00C9B5084B4 -:104AB800FB5400240E9CF01F001E2FBD40305050A8 -:104AC8001AD0FB1800145028F01F00162FFD4018AC -:104AD8001AD81AD01ADC497CF01F00142FCD0E9C6E -:104AE800F01F001549594968580CF2081710201D85 -:104AF800494C1AD8F01F000D493CF01F000C2FED4F -:104B08002FF62FC55826FE91FF492FF75847C0505A -:104B1800E40700353006C41BF01F000C2FADD83257 -:104B2800800096A8800380E8800094C4800021C893 -:104B380080038114800070788003812C8003812891 -:104B480080038130800381408000D680D431204D9D -:104B58004BE812911896169711895809C1A119881E -:104B6800B6881998EA18FFFFE818FF80B6C9B69802 -:104B7800B6A93EE8B6B83048A2084B589088EDB8B8 -:104B88000002E08100E7201D4B284B3C1AD8C228C0 -:104B9800FACCFFF4F01F0031403366105800C1E131 -:104BA8000D88AE880D98EA18FFFFE818FF80AEA0C0 -:104BB800AE9830093EE8AEC9AEB83048A2084A48B7 -:104BC8009088EDB80002E08100C5201D4A184A4CC3 -:104BD8001AD8F01F00242FEDCBC858B0F9B0020A3C -:104BE80030044A12C0786408F004032C2FF4F01F34 -:104BF800001F641849C51034CF736A0C3004F01FC5 -:104C0800001B8B14661B580BC460A36B301CF01F71 -:104C180000188B0CC3A1497CC1486608F002030B3D -:104C28006A080408501B5008F01F00134008910C34 -:104C3800401B6A082FF4F002030C580CC20148FC10 -:104C4800F01F0008C2880000000016AA000016A283 -:104C58008003783C8003816080018F048003817C1D -:104C6800800094C4000015208002E28C8002DC3CA5 -:104C7800800381988002E2A4800381C0344AF01F37 -:104C880000376A182FF88B18E8021502344C66189A -:104C98001034CC430D88AE880D98EA18FFFFE81849 -:104CA800FF803005AE98AEA030364AD20A984AD96D -:104CB8000E93640AEA0B1502F40B030AF537002079 -:104CC800F4070B08ECCCFFFF2FF7E60C000C5C5741 -:104CD800300AE6060B07C0886404E80B0304E80AF8 -:104CE80007042FFA18C40E9EEE0A1900CF630E9A15 -:104CF8002FFAF4060006928A5C56EDBA0002C1D17A -:104D0800640A202DF40B0304503950281A9C306A89 -:104D1800E8CBFFDFF01F001168CA1ADAE93A003859 -:104D28001ADA491A1AD7491C1AD41AD51ADAF01FEE -:104D380000102F8D400840192FF50035CBB53EE8FF -:104D4800E6060B08069730080C07AE982FF6A20661 -:104D5800302C2FCDD83200008002E7360000152015 -:104D6800000016A28003783C800381E4800094C48C -:104D780048781188580CC0215EFF5C68100C300818 -:104D8800F9390015F00918005F1C5EFC00001530A9 -:104D9800D4211897580CC2A04968F129000030089E -:104DA800F2CA0004F00900065836F5D8E9062FF8CB -:104DB800EE06002C791C163CC17148F89088EDB8B5 -:104DC8000001C0A148D81ADB48DC1AD61AD71AD86D -:104DD800F01F000C2FCDF9D6C00830082F06EE06BC -:104DE80000278F18D8225848CDE1E06C00FFD82260 -:104DF80000001530000016A2800382688003830437 -:104E0800800094C4D42118971695580CC2B04978DC -:104E1800F12900003008F2CB0004F00900065836EA -:104E2800F7D8E9062FF8EE06002A751A580AC03096 -:104E38000A3AC16148E89088EDB80001C0A148D895 -:104E48001AD548DC1AD61AD71AD8F01F000C2FCD5D -:104E5800EE060027F9D6C008EF450044D822584886 -:104E6800CDD1E06C00FFD82200001530000016A25A -:104E780080038CF080038304800094C4D4211897A5 -:104E8800580CC2A049E8F12A00003008F4CC00040C -:104E9800F00A00065836F9D8E9062FF8EE06002978 -:104EA80073195809C170580BC0F049689088EDB85B -:104EB8000001C0A149481AD9494C1AD61AD71AD89C -:104EC800F01F00132FCDEE06002748D8B0866F1CC0 -:104ED800D8225848CDE1580BC10048A8900930089D -:104EE800F0091900C0A448881AD748AC1AD8F01F8E -:104EF8000008300C2FEDD822D82A00000000153009 -:104F0800000016A280038CB880038304800094C438 -:104F180080038324D4214CB816951188189730063D -:104F2800EC081800E08000B6300BF01F004718941A -:104F38005807E0800097580C5F19EC0518005F08C7 -:104F4800F3E81008EC081800E080008C4BF8908813 -:104F5800EDB80002C3314BE811894BE89088EDB8F1 -:104F68000001C2C15C69EE09002871185808C041E7 -:104F7800109E1096C098EE09000AF53E0015F2CA78 -:104F8800FFF8EE0A03266F5A201D580AF40C170082 -:104F9800F5FC10045808F00B1700F1FB10041ADE9A -:104FA8001AD61ADC1ADA1ADB1AD84AB81AD74ABC3F -:104FB8001AD91AD8F01F002A2F6D5805C3D068488F -:104FC80058485F1958085F181268C3304A08118991 -:104FD8004A089088EDB80001C2C15C69EE09002852 -:104FE80071185808C04110951096C098EE09000A2B -:104FF800F5350015F2CAFFF8EE0A03266F5A201D90 -:10500800580AF40C1700F5FC10045808F00B1700A8 -:10501800F1FB10041AD51AD61ADC1ADA1ADB1AD8D8 -:1050280048D81AD748DC1AD91AD8F01F000D2F6DA6 -:10503800E93C0013D8226F58F13C0013D822000035 -:10504800000016AB80004E84000016A80000153042 -:10505800000016A28003828C80038348800094C4D9 -:1050680048D890093008F0091900C1345807EE08EB -:105078001700EE041700EFF810151AD848781AD45C -:10508800487C1AD71AD8F01F0007300C2FCDD82229 -:10509800D82A0000000016A88003828C8003838C25 -:1050A800800094C4D421580CC25049D8F12900007A -:1050B8003008F2CA0004F00900075837F5D8E907A4 -:1050C8002FF8F807002E7D1E163EC12149589088FA -:1050D800EDB80001C0A149481ADB1AD71ADC493CCF -:1050E8001AD8F01F00132FCD0E9C5C5CD8225848AC -:1050F800CE31490890093008F0091900C045E06C24 -:1051080000FFD8224888201D1ADB1ADC48AC1AD8C0 -:10511800F01F0007E06C00FF2FCDD82200001530EB -:10512800000016A6800382BC80038304800094C418 -:10513800000016A2800383C0D421580C5F18580BB6 -:105148005F1918961695F3E800081494C590580A44 -:10515800C5704AC89088EDB80001C0C114985C7841 -:10516800201D1AD84A881ADB4A8C1AD8F01F002842 -:105178002FCD4A889088EDB80001C0D14A28201D5B -:105188004A5C1AD8F01F0022089B0A9C5C7BF01F1F -:1051980000232FED300A5C74149C089BF01F00203C -:1051A8001897C0E149789008F8081900C29449682E -:1051B8001AD649CC1AD8F01F00162FEDC1C8089A84 -:1051C8000A9B781CF01F00180E9B6DECF01F00174F -:1051D8005C5CC12048B890093008F0091900C08407 -:1051E80048981AD6492C1AD8F01F00092FED0E9CA2 -:1051F800F01F0010DC2A0E9CF01F000EDA2ADC2AB1 -:10520800000016A280038CE4800383E8800094C425 -:10521800000016A080037C8480013DB48000D31870 -:10522800800383FC8002E7368001153880038428D8 -:105238008000D13CD421149518971696580CC0417B -:10524800E06C00F6D822F01F00163FF8E9DCC00831 -:10525800F0041800C041E06C00FFD822491890887B -:10526800EDB80001C0E16C48201D1AD848E85C651B -:1052780048EC1AD51AD61AD71AD8F01F000D2FAD38 -:105288006C4858485F0948B8B0893008EE040004F3 -:10529800E9680068F01F00088F7CD82A800050ACAD -:1052A800000016A280038D1080038450800094C4EF -:1052B80000007B0780009504D43118971695F01FDD -:1052C80000353FF8EDDCC008F0061800C5E0EE0632 -:1052D80000083009F1690015ECC8FFF8EE0803244E -:1052E8005804C5304AC89088EDB80001C0A14AB832 -:1052F800201D4ABC1AD41AD41AD8F01F002A2FCD60 -:10530800EB1800726EF91238F20817B00838F0047A -:1053180017804A589088EDB80001C051F01F00234B -:105328004A38910CECC8FFEA3019EE08032B089AAA -:105338000A9C5C7AF01F001FE7DCC008C19049A8EE -:105348009088EDB80001C0F16A48201DF3D3B00879 -:105358001AD91AD41AD849181AD5497C1AD8F01F5C -:1053680000112FAD0C073008EF680015C10830197F -:10537800ECC8FFF8EE060006ED690015EE080329F3 -:105388000819EE080929C038E06300FF069CD832E6 -:10539800800050AC000016A680038C7880038474CB -:1053A800800094C4000016A2800095040000153403 -:1053B800800109C08003848CD43116941493189703 -:1053C800580CC1014AB89008F8081900E08400D3C5 -:1053D8004A98201D4A9C1AD8F01F00293FFC2FED3F -:1053E800D832300BF01F0027189B18960E9CF01F20 -:1053F80000263FF8EBDCC008F0051800E08000BB91 -:105408004A289088EDB80001C0E1F1D3C010201DF2 -:105418001AD849981AD449EC1AD61AD71AD8F01FAC -:1054280000182FAD49B89088EDB80001C0D14928BF -:10543800201D499C1AD8F01F0012F7D3C010089CF1 -:10544800F01F00162FED49189088EDB80001C4B17F -:105458004938118948789088EDB80001C4415C69E1 -:10546800EE09002871185808C1C11092109EC21880 -:10547800000016A280038D20800384C0800094C49D -:1054880080004E84800050AC000016A6800384D8AB -:10549800000016A080037C8480013DB40000153014 -:1054A800EE09000AF5320015F2CAFFF8EE0A032EDB -:1054B8006F5A201D580AF40C1700F5FC1004580800 -:1054C800F00B1700F1FB10041AD21ADE1ADC1ADAF4 -:1054D8001ADB1AD84A881AD74A8C1AD91AD8F01F50 -:1054E80000282F6D5806C46058045F183009F2036D -:1054F80019005F1AF5E80008F2081800C3B0EAC8F6 -:10550800FFEAEE08032C580CC3506C4858785F0B20 -:1055180058485F0AF7EA100AF20A1800C0515828DA -:10552800C0305838C2715C73089B069AF01F00158A -:10553800EAC9FFEA300AEE090328F0030B0A4928F2 -:105548009088EDB80001C0A1EE0903281AD848A830 -:1055580048EC1AD8F01F000A2FED48DB0C9C2F8569 -:10556800EE050923F01F000B0C9B0E9CF01F000A90 -:10557800DA3ADC3A80038D2080038348800094C4A3 -:105588008002E736000016A6800384FC800055A040 -:105598008000D662800052C0D431149518971696B0 -:1055A800580CC041E06C00F6D832F01F001D3FF8DF -:1055B800E9DCC008F0041800C041E06C00FFD832F4 -:1055C8003009EE040008F16900683019F169001526 -:1055D80049489088EDB80001C171E8C8FFF8EE08A5 -:1055E8000323F01F00114918201D1AD37008F8086A -:1055F80001081AD848E85C7548EC1AD51AD61AD8A2 -:10560800F01F000D2FAD2F84EE04032C580CC06042 -:105618000C9B0E9CF01F0009300CD832800050AC57 -:10562800000016A2800095040000153480038D50F8 -:1056380080038508800094C4800052C0D421189744 -:10564800580CC1C0F01F000E18965BFCC060EF3B01 -:10565800000B5C5CF01F000B48B89088EDB80001A7 -:10566800C0A148A8201D48AC1AD61AD71AD8F01FCE -:1056780000092FCD30094888B089D82280002044FD -:1056880080002068000016A280038D3C80038538C6 -:10569800800094C400007B07D4314898189711897A -:1056A80048889088EDB80001C3015C69F8090028B2 -:1056B80071185808C08110951096C0D80000153090 -:1056C800000016A2F809000AF5350015F2CAFFF81D -:1056D800F80A03266F5A201D580AF40C1700F5FC27 -:1056E80010045808F00B1700F1FB10041AD51AD64D -:1056F8001ADC1ADA1ADB1AD84C281AD74C2C1AD901 -:105708001AD8F01F00422F6D0E9C3005F01F004084 -:10571800EEC6FFBC0A924BF34BA45C5CF01F003E44 -:105728006C08300B2FF5109C5808C1D0F01F003BB7 -:105738006C0C300BF01F003A6C0C300BF01F00396A -:105748006C0C300BF01F00388688EDB80001C0B132 -:10575800201D1AD26C0870484B4C1AD81AD4F01F66 -:10576800002B2FCD2FC65845CDC16F5C580CC1D02A -:10577800300BF01F002A300B6F5CF01F002D6F5CA0 -:10578800F01F002C4A385C5C9088EDB80001C0D14D -:10579800201D5C6C1ADC6F5870481AD849984A6CFE -:1057A8001AD8F01F001A2FCD6FEC580CC060F01FEC -:1057B80000236FECF01F00224A28F1260000495808 -:1057C8009088EDB80001C0E1ECC8FFEAEE080328B4 -:1057D800201D1AD848B81AD649BC1AD8F01F000B91 -:1057E8002FCD2EA6EE06032C580CC060F01F001714 -:1057F8003008EE0609280E9CF01F0014D83200006D -:1058080080038CC880038348800094C480002044AF -:10581800000016A280006F288000D6588000D6624B -:105828008000D65C8000D668800385608000D66ED4 -:105838008000E50480038588800111C88001122852 -:1058480000001530800385B08002E28CD4211897BF -:10585800580CE080007EF01F00413FF8EDDCC008E6 -:10586800F0061800C750EE0600287114089CF01FB7 -:10587800003CEBDCC008C0D10A9B089CF01F003933 -:105888000A9B089CF01F00380A9B089CF01F0037F1 -:105898004B789088EDB80001C0D1F1D5B0081AD87E -:1058A80068481AD84B381AD44B3C1AD8F01F003322 -:1058B8002FCD4AF43FF8F0051800C1718809300867 -:1058C800F0091900C0D4EE0600287118201D1AD856 -:1058D8004AB81AD64ABC1AD8F01F00282FCD0C0790 -:1058E8003018EF68006CC368EE0600083009F169EB -:1058F800006CEE0600280E9C711BF01F00238888A0 -:10590800EDB80001C0E1ECC8FFEAEE080328201D4D -:105918001AD849B81AD649DC1AD8F01F00182FCD62 -:105928002EA6EE06032C580CC060F01F0019300894 -:10593800EE06092848E89088EDB80001C0B149088A -:10594800201D494C1AD8F01F000D2FEDC038E06516 -:1059580000FF0A9CD8220000800050AC8000E504BB -:105968008000D6588000D6628000D65C000016A25F -:1059780080038D2C800385CC800094C480038CD850 -:10598800800385F880004D98800385B08002E28C02 -:1059980080038624D4211897580CC0E14BE890085E -:1059A800F8081900C7744BD8201D4BDC1AD8F01F13 -:1059B800003D2FEDD82278264BB85806C121F12595 -:1059C8000000F01F003A0E9CEF34000BF01F003867 -:1059D800089B5C5CF01F00370A07EF660068D82256 -:1059E80011894AD89088EDB80001C2C15C69F809EC -:1059F800002871185808C04110951096C098F809E9 -:105A0800000AF5350015F2CAFFF8F80A03266F5A9E -:105A1800201D580AF40C1700F5FC10045808F00B68 -:105A28001700F1FB10041AD51AD61ADC1ADA1ADB99 -:105A38001AD849A81AD74A0C1AD91AD8F01F001927 -:105A48002F6D4998F1260000ECC5FFF0EE05002502 -:105A58006A1C580CC1F078485898C1C05808C1A0B1 -:105A6800F01F001648C85C5C9088EDB80001C0C102 -:105A7800201D5C6C1ADC6A181AD84888490C1AD898 -:105A8800F01F00082FCDEE0600260E9C6D1BF01FA0 -:105A9800000DD822000016A2800382988003864455 -:105AA800800094C400001530800056A08000204477 -:105AB800800020688003834880010CEC8003865CAA -:105AC80080005854D4214B0818979009169630082E -:105AD800F0091900C0F44AD8F12800001AD8F1DBFF -:105AE800B0081AD84AA81ADC4AAC1AD8F01F002AFB -:105AF8002FCD4AA811893008F0091800C0414A8CF6 -:105B0800F01F00253FB8F0061800C3C15807C110A0 -:105B180049E830091188F2081800C0B53039F20890 -:105B28001800E08900075C68EE080028711BC0288F -:105B3800300B0E9CF01F001B49389088EDB800010F -:105B4800C1114928F1280000201DF0C9FFEAEE091B -:105B580003291AD91AD848E8493C1AD8F01F000E68 -:105B68002FCD48A6ED2800002EA8EE08032C580CCF -:105B7800C090F01F000EED28000030092EA8EE0896 -:105B88000929D822000016A200001530800382A837 -:105B980080038680800094C4000016AB800386B41E -:105BA80080004D98800385B08002E28CD42118973C -:105BB8001696580CC4E04A8890093008F009190074 -:105BC800C0C4F1DBB0081ADC1AD84A481ADC4A4CBF -:105BD8001AD8F01F00242FCD4A3811893008F0094F -:105BE8001800C0414A1CF01F001F3FB8F0061800FB -:105BF800C301499890093008F0091900C084497810 -:105C08001AD749BC1AD8F01F00172FED0E9CF01FA9 -:105C180000194998F126000048F89088EDB800016D -:105C2800C0E1ECC8FFEAEE080328201D1AD848B8DE -:105C38001AD6492C1AD8F01F000B2FCD2EA6EE0627 -:105C4800032C580CC060F01F000E3008EE0609281F -:105C5800D8220000000016A2800382D0800386C8E4 -:105C6800800094C4000016AB800386B4800386F8D5 -:105C78008000564400001530800385B08002E28C15 -:105C8800D4311897149678CC94CAF80A000A8FCAA7 -:105C98001093169512946E385808C1504A5CF01F3C -:105CA8000026EF18001A3509F0090D083008F00928 -:105CB8001900C0414A1CF01F0020EF08001A2FF8F5 -:105CC800EF58001A49E89088EDB80001C171202DFD -:105CD800304A1A9C089BF01F001BF01F001BEF386E -:105CE8000014F3D3C01050091ADC1AD849781AD610 -:105CF800497C1AD8F01F00102FAD0A9AEF3B001408 -:105D08000C9CF01F001409890998B168F1E9118801 -:105D180009A9F1E9108809BBEF3C0014F5D3C010BC -:105D2800104BF01F000D0C9CF01F000CD832000027 -:105D380080037FB4800094C4800384D4000016A23A -:105D48008002E736800096A88003827C800387184B -:105D580080007130800020088000D13CD431204D73 -:105D6800502C503BFAC4FFCC10916800681268238D -:105D780068386846129568545819E088000E4B58E0 -:105D880090093008F0091900E08402B0201D4B2862 -:105D98004B2C1AD8C2F85801C0C14AE89008E2084A -:105DA8001900E08402A3201D4AB84ADC1AD8C22888 -:105DB8005802C0C14A789008E4081900E0840296A5 -:105DC800201D4A584A7C1AD8C158501A500837CB57 -:105DD800301CF01F0025401A18974008C10149D807 -:105DE8009008F8081900E0840281201D49A849FCA0 -:105DF8001AD8F01F001F2FEDE08F0278402999383C -:105E0800B829300840395C729900B831992599DA77 -:105E180099E999F29943F9480050F9480044F9483A -:105E28000048F948004C5803E080008C3058F95875 -:105E38000074F01F0010EF4C00784865580CC1D171 -:105E48008A08F8081900E084020C1AD748A8C8582C -:105E5800000016A280038CA880038744800387640F -:105E6800800387848002DC3C800387A8800094C478 -:105E780080011200800382F88A88EDB80001C131E0 -:105E88006E08201D8EA51AD8F01F00366FE8500541 -:105E98001ADC1AD84B481AD84B484B5C1AD8F01F52 -:105EA80000352FAD6E258EAA6FEC5805C1210E9BCB -:105EB800F01F00315C5CC2504B089008EA081900DA -:105EC800E08401CF1AD74A984ADC1AD8E08F0175C6 -:105ED8004ACBF01F002DF5DCC008C0E04A789009D5 -:105EE8003008F0091900E08401BC201D5C6A49F8FB -:105EF8001ADA1AD7C499EF3C0014149BF01F002338 -:105F08006FEC0E9A4A2BF01F002349C8908CE21CB4 -:105F18000002E08001A76FE8F11900141AD970197E -:105F28001AD9F11900121AD970081AD848E81AD8DB -:105F380048E8499C1AD8F01F000F2FADE08F018F59 -:105F4800F01F00161892C2F148C89008F808190006 -:105F5800E08401871AD749281AD8492CC2D90000E9 -:105F6800800096A88003825C800382F88003880CF6 -:105F7800800094C480011320000016A280038824A6 -:105F88008003B409800112608000200880005C88CA -:105F9800800111F8800388848000E34080038C6CC2 -:105FA800800387E04B880E9BB083F01F0038EF63B7 -:105FB800006FEF63006CEF63006DEF63006E6E2897 -:105FC8004B355808E08100BD049B0E9CF01F003142 -:105FD800E7DCB0086EFCF01F0030E6C8FFEAEE0808 -:105FE800092C8A88EDB80001C0A14AC8201D1ADC16 -:105FF8004ABC1AD31AD8F01F002B2FCD2EA34A451E -:10600800EE0303285808C0B18A09F0091900E08492 -:1060180001281AD74A184A4C1AD8CCE84A3B049C9B -:10602800F01F00234A3B049CF01F00234A3B049CBA -:10603800F01F0023304A4A3B049CF01F00234A38D3 -:106048003009B0898A88EDB80001C0C1EE03032881 -:10605800201D1AD849181AD249DC1AD8F01F001185 -:106068002FCD4898118948A89088EDB80001C5310E -:106078005C69EE09002871185808C2B11093109590 -:10608800C3080000000015308000D658000016A292 -:1060980080004E0C8002E2A480038C6C800388A8E8 -:1060A800800094C4800388C480005BB48000D668F4 -:1060B800800069888000D65C800055A08000D66288 -:1060C800800067B48000D67200007B07800388F4E4 -:1060D800EE09000AF5330015F2CAFFF8EE0A0325A7 -:1060E800201D5808F00B1700F1FB10046F5A580ACE -:1060F800F40C1700F5FC10041AD31AD51ADC1ADAB6 -:106108001ADB1AD84B681AD74B6C1AD91AD8F01F51 -:1061180000362F6D049C4B598EAA0E9BF01F00343D -:106128005C5CE080009F4B3890093008F00919004A -:10613800E08400971AD74AA84AFC1AD8C3D88A8894 -:10614800EDB80001C0F1301B0E9CF01F002C6F58F9 -:106158001ADC1AD84A281AD74A9C1AD8F01F0022E3 -:106168002FCD8EAA4A7B049CF01F00275C5CC120BF -:106178004A0890093008F0091900C724201D5C6CF2 -:1061880049781ADC1AD71AD84A0CF01F00172FCDF5 -:10619800C678049CE06B00FFF01F001DEF4C005414 -:1061A8004945580CC0D18A08F8081900C5941AD76F -:1061B80048B8498C1AD8F01F000C2FEDC5188A88EA -:1061C8004959E21800021389C4505C69EE09002895 -:1061D80071185808C2211095109BC27880038C6CE6 -:1061E80080038348800094C48000523C8000E350C0 -:1061F800000016A28003891080004E84800389382D -:106208008003B4098000D7708003884C8000DC04C8 -:106218008003896400001530EE09000AF535001581 -:10622800F2CAFFF8EE0A032B7843201D5808F00A3B -:106238001700F1FA10041AD51ADB1AD31ADC1ADA85 -:106248001AD84AC81AD74ACC1AD91AD8F01F002B1C -:106258002F6D4ABB6F5CF01F002B300CC0283FFC31 -:106268004A95580CC0E08A093008F0091900C3A4FF -:106278004A68201D4A6C1AD8F01F00202FEDC32849 -:106288008A88EDB80001C2914A284A396E204A31FD -:106298005800F2001700F00017108E226E484A09C5 -:1062A8006EF35808F20117108E355818C0316FEC8C -:1062B800C058301B0E9CF01F001B49481AD05C7256 -:1062C8001AD15C751AD21AD31AD51ADC496C1AD7A6 -:1062D8001AD8F01F000A2F8D8907EF660014300CBA -:1062E800C0580E9CF01F00113FFC2FCDD832000083 -:1062F80080038C6C80038348800094C480006434DD -:106308008000D66E000016A280038CA880038988BE -:1063180080037BDC80037BE480037DC880037DC42D -:1063280080004E84800389A8800056A0D431203D87 -:10633800300730194B38E06504001892169191091E -:10634800E06007D00A9350070E964AF4C22826CC7C -:1063580058ACE08B001F4ADEFC0C032F3016C198A6 -:106368003006C178680CF01F002AE7DCB010C118AD -:1063780030185008C0E8680CF01F0025EBDCB0109E -:10638800C0883017C068680CF01F0021E1DCB0102D -:106398004A0A029B049CF01F00205BFCCD91580622 -:1063A800C161498870080438C0A4E208032BFACCFC -:1063B800FFF8F01F001A402B580BC0A14988201D78 -:1063C800498C1AD8F01F00182FEDC198300B502BAC -:1063D800F1D5C0100C99FAC5FFFC300650161AD535 -:1063E8001AD6402E5C731ADEF9D0C0101AD70C9A50 -:1063F8001AD31ADB0C9BF01F000D2FAD2FDDD83AF6 -:1064080000007AB800007AC0800382208002DC2C69 -:10641800800389E08002E278800098FC0000000C8C -:10642800800389EC800094C480005D64D4211897AF -:106438001696580CC041E06C00F6D8224C1890888B -:10644800EDB80001C0A14C08201D1ADB1ADC4BFC7A -:106458001AD8F01F003F2FCD4BA89088EDB8000147 -:10646800C0F16C481AD8ED1800241AD8ED18001C91 -:106478001AD84B584B7C1AD8F01F00352FCD0C9BDF -:106488000E9CF01F0035EDDCB008ECC8FFEAEE0802 -:1064980003285808C0804B18201D4B1C1AD8F01F21 -:1064A800002C2FED6EFCF01F002FECC8FFEAEE0861 -:1064B800092C4A489088EDB80001C0A14A28201D3F -:1064C8001ADC4A9C1AD61AD8F01F00212FCDECC826 -:1064D800FFEAEE0803285808C10149A99209F00902 -:1064E8001900C08449881AD74A0C1AD8F01F001816 -:1064F8002FEDE06C00FFD8220E9B2F06EE0600263B -:106508006C1CF01F001B49BB6C1CF01F001B49BB17 -:106518006C1CF01F001B6C1C304A49ABF01F001AA2 -:106528000E9CF01F001A583CE08B00075C5C300A98 -:106538000E9BF01F0017F01F00178F7CD82A000051 -:10654800000016A2800382E8800389F0800094C4CA -:1065580080038A1480004E0C80038A3880039DC013 -:106568008002E2A4800388A8800388C48000D658EB -:10657800800069888000D65C80005ACC8000D6688C -:106588008000659C8000D6728000204480002A002C -:1065980080009504D43118971695580CC041E06CCA -:1065A80000F6D832F01F00473FF8EDDCC008F006CF -:1065B8001800C041E06C00FFD832ECC8FFF8EE08C4 -:1065C80003285808EFD6E108F1F91868F7B901FF70 -:1065D800F1F91E68EE0600083049F1380068F20843 -:1065E8001800E088001E4B89920A3009F20A190047 -:1065F800C0A41AD84B581AD74B5C1AD51AD8F01F12 -:1066080000352FCD0C070A9C3006301BEF6600685A -:10661800F01F0031E06C00FBEF66006CD8325805C3 -:10662800C1504AE89088EDB80001C101EAF800A815 -:106638001AD8EAF8009C1AD8EB3800AD1AD84A38AC -:106648004A7C1AD8F01F00232FCDECC8FFF8EE08BB -:1066580003245804C1D049C89088EDB80001C1810D -:10666800EE060008301BF1330068F132006C0E9C16 -:10667800F01F001C4958201D1AD41AD21AD31AD751 -:106688001AD51ADC498C1AD8F01F00122F8D0A9BD4 -:106698000E9CF01F0016EE0600033002E738006C6F -:1066A800E4081800C7100A9CF01F00113FF8E9DC45 -:1066B800C008F0041800C1D13018E768006CC4A8FD -:1066C800800050AC000016A280038C8C80038A4C9A -:1066D800800094C48000E124000016A880038A7C0E -:1066E80080004E8480038AB0800052C08000E50498 -:1066F800EE060028E762006C711B0E9CF01F002359 -:106708004A389088EDB80001C0E1ECC8FFEAEE080D -:106718000328201D1AD849F81AD649FC1AD8F01FA0 -:10672800001F2FCDECC3FFEAEE03032C580CC0600A -:10673800F01F001B3008EE03092849589088EDB86F -:106748000001C0814938201D496C1AD8F01F001378 -:106758002FED48F89088EDB80001C1610E9C301B00 -:106768000C07EF37006CF01F001048A81AD65C64BD -:106778001AD41AD71ADC48DC1AD51AD8F01F000721 -:10678800300C2FADD832D83A80004D98000016A2B0 -:1067980080038C8C800385B0800094C48002E28CD6 -:1067A8008003862480004E8480038AF0D4311897B1 -:1067B8001695580CC041E06C00F6D832F01F003E28 -:1067C8003FF8EDDCC008F0061800C041E06C00FF9F -:1067D800D8324BA89088EDB80001C1A1EE06000898 -:1067E800F1340068F133006C4B58301B11820E9C59 -:1067F800F01F00344B48201D1AD21AD31AD41AD7C6 -:106808001AD51ADC4B1C1AD8F01F00312F8DEE0652 -:1068180000083009F13A006CF20A1800C060F1393A -:1068280000682FF9F1690068EE060008F134006885 -:106838003088F0041800E08800224A68900930087F -:10684800F0091900C104301B0E9CF01F001E49E816 -:10685800201D1AD41AD71ADC49FC1AD51AD8F01FE9 -:10686800001C2FAD30080C070A9CEF680068301B2D -:10687800F01F001AE06C00FBD83249181189300863 -:10688800F0091800C0500A9B0E9CF01F0015EE0678 -:1068980000043008E939006CF0091800C6100A9C99 -:1068A800F01F00103FF8F00C1800C1D13018E9684B -:1068B800006CC3E8800050AC000016A800007B07FD -:1068C80080004E848003824C80038B2C800094C40B -:1068D800000016A280038B6C8000E124800052C067 -:1068E8008000E5040E9CF01F001F49F89088EDB861 -:1068F8000001C0E1ECC8FFEAEE080328201D1AD801 -:1069080049A81AD649AC1AD8F01F001A2FCDECC4E2 -:10691800FFEAEE04032C580CC060F01F0017300883 -:10692800EE040928EE0600083009F169006C48E811 -:106938009088EDB80001C1410E9C301BEE060006A0 -:10694800ED37006CF01F000D48881AD71ADC48CCC8 -:106958001AD51AD8F01F0007300C2FCDD832D83AE4 -:1069680080005644000016A28003824C800385B044 -:10697800800094C48002E28C80004E8480038B984F -:10698800D4311294580A5F1830091497F204180089 -:106998005F0318961695E7E80008F2081800C55036 -:1069A800335CF01F00406CC98EC8F20800088DC81F -:1069B8006C385808C0614BC89088EDB80001C231E6 -:1069C8004BA89088EDB80001C0918EC81AD84B88A2 -:1069D8004B8C1AD8F01F00382FED4B889088EDB8F3 -:1069E8000001C0C14B28201D4B5C1AD8F01F003293 -:1069F8008ECB6E1CF01F00332FEDED08001A2FF818 -:106A0800ED58001A0A9AED3B00140E9CF01F002E58 -:106A18004A689088EDB80001C1218EC8201D1AD897 -:106A28001ADCED38001430091AD91AD71AD51AD831 -:106A380049F84A6C1AD8F01F00202F8D0E9CF01FC1 -:106A48000024335CF01F002358075F081063C160FF -:106A580049689088EDB80001C0C1201D1AD5ED38ED -:106A680000141AD8492849CC1AD8F01F00132FCD82 -:106A78000A9B0C9CF01F0019C1385804C11048B873 -:106A880090093008F0091900C0B44898201D5C64CA -:106A98001AD7493C1AD41AD8F01F00072FCDD83A74 -:106AA8008000A300000016A6000016A280038C98A0 -:106AB80080038BC8800094C4000016A080037C84E7 -:106AC80080013DB48000713080038BD88000D13CB8 -:106AD8008000A2E680038C108000585480038C3C10 -:106AE800D42148C8189716969088EDB80001C0A11F -:106AF8004898201D1ADB1ADC488C1AD8F01F0008A9 -:106B08002FCDF7D6C0100E9CF01F0006D82200002B -:106B1800000016A280038D0480038C50800094C46A -:106B28008000D984D4213007C1B80C9C0E9B2FF665 -:106B3800F01F000D1895C0F078485808C0C1F01F24 -:106B4800000B0A9CEB35000BF01F00090A9B5C5CEC -:106B5800F01F00085846CEA12FF75827C03030063E -:106B6800CE5BD82280002024800056A080002044DC -:106B780080002068D4214978F00C07085808C071B3 -:106B88004959F20C070AF00A1800C1F04929F20C19 -:106B9800070AF4081800C1904909F80C001CF0080D -:106BA8000017A567EE0C0027120748D99289EDB99E -:106BB8000004C0C11AD848B81ADA48BC1AD71AD87B -:106BC800F01F000A2FCDC02830070E9CD8220000E5 -:106BD8000000153C0000153800007B2C000016A6AC -:106BE8008003901080038DE0800094C4D421169710 -:106BF8001496F01F0005C0609828AC087808301C6F -:106C08008F08D82280006B7CD43149B849B91092DA -:106C1800F00C0708F20C070718961AD7498C1AD8EF -:106C2800EC060014F01F001749732FEDA36431E53B -:106C3800EE070018A568E8080008E60800087009CB -:106C48005809C0C090BA90AB1ADB1AD9702848FC12 -:106C58001AD81ADAF01F000B2FCD2FF7E406070811 -:106C68005C57EE051800F9B70000EE081800CE11C1 -:106C7800D8320000000015380000153C80038DF460 -:106C8800800094C400007B2C80038E0CD431201D1E -:106C98004A181896F00C07073005F80C001849F048 -:106CA800A36849F149F231E349F4EE070019A569EF -:106CB800F0090009E0090009720A580AC1D0923B9C -:106CC800922A8289F40B010CE2190010F8050005DC -:106CD8005C855809C1105C7B5C7AF3D5C010201D17 -:106CE800492C1AD91ADB1ADA1AD61AD25068F01FA8 -:106CF80000102FAD40082FF7E80607095C57EE0390 -:106D08001800F9B70000EE091800CD010A9C2FFD04 -:106D1800D83200000000153C00007B2C000016A6AD -:106D280080038DA00000153880038E28800094C44D -:106D3800D421F01F000B48B8EFDCB0109088EDB8F4 -:106D48000004C0A10E985C781AD84878487C1AD8F4 -:106D5800F01F00072FED0E9CD822000080006C94D5 -:106D6800000016A680038D7080038E4C800094C4AA -:106D7800D4214A181897169631D9F20C1800E088D1 -:106D8800000F90093008F0091900C33449B81ADC1B -:106D980049BC1AD8F01F001B2FEDD822F60B001A99 -:106DA8009088F80C0019E2180010A569F20A002969 -:106DB800495AF40903055808C0A04908201D1ADCDF -:106DC800492C1AD51AD8F01F000F2FCD0A9CF01F96 -:106DD80000103008EC060016EE07001748A9A56752 -:106DE800EE060026F20600068D288D08AC28AC3881 -:106DF800D8220000000016A280038DD080038E6880 -:106E0800800094C400007B2C80038E888002E28C72 -:106E1800D4314948F80C00121896F00C0707A36201 -:106E2800491331E44915EE070018A568E40800087D -:106E3800E60803085808C0500E9C0C9BF01F000C75 -:106E48002FF7EA0607085C57EE041800F9B70000A8 -:106E5800EE081800CE914839300CF2060B08D832EB -:106E68000000153C00007B2C0000153880006D7870 -:106E7800D4211897580CC0E14A189008F80819004E -:106E8800C3C44A08201D4A0C1AD8F01F00202FED51 -:106E9800D82249FAF40B070CF8CEFFFFF80C001CB7 -:106EA800A56CF40B0B0E3008F60B0019F809002935 -:106EB800498CF809000993289308B228B23831E9B7 -:106EC800F20E1800C031F40B0B0848D89088EDB8C2 -:106ED8000004C10148E8F00B07081AD848E8F00B8D -:106EE80007081AD848781AD748CC1AD8F01F0007CC -:106EF8002FCD0E9CF01F000AD8220000000016A219 -:106F080080038D8480038E98800094C40000153C13 -:106F180000007B2C0000153880038DE08002E28C95 -:106F2800D42118970E9CF01F0005C060780C0E9BAA -:106F3800F01F0003CF8BD82280006B7C80006E7816 -:106F4800D421496818971696149512949088EDB82C -:106F58000001C0C14928201D1AD91ADA1ADB1ADC27 -:106F6800490C1AD8F01F00102FAD301B0A9CF01FD7 -:106F7800000FC080301B0A9CF01F000C784858088E -:106F8800C0510C9B0E9CF01F000A5804C0500A9B6D -:106F9800089CF01F0008D822000016A280038D600C -:106FA80080038EAC800094C48000202480006AE8AE -:106FB80080006E78D4211897F01F00061898C02119 -:106FC800D8220E9A782C700990ABF01F0003DA2AA9 -:106FD80080006B7C80006F48D42116961494189515 -:106FE800F01F001E1897C021D8229838982B7809CE -:106FF800F6081900C2B2F5D8C0105804C050F20AF9 -:107008000708AC88C068F20A0709AC892FF8B838B5 -:1070180049389088EDB80004C0D10D881AD86E0898 -:107028001AD88EB81AD848F848FC1AD8F01F000F9A -:107038002FCD8E3B8E28F6081900C0710A9A5C7B0A -:107048006E2C6E09F01F000ADA2A0A9A5C7B782CEB -:10705800F01F0007D82A000080006B7C000016A6ED -:1070680080038D9080038ED4800094C480006F4884 -:10707800D4211897F01F00231896C021D8224A2837 -:107088009088EDB80004C0D178081AD898A81AD802 -:107098008CB81AD849D849EC1AD8F01F001E2FCD41 -:1070A8008C398C28F0091900C020DA2A49A8908860 -:1070B800EDB80004C1614998201DF0070709498807 -:1070C8001AD9F00707081AD8F20818005F191AD950 -:1070D8006C081AD848D8493C1AD8F01F000E2FADB2 -:1070E8006C2C6C090E9A8CABF01F000F48C8F00787 -:1070F800070948A8F0070708F00918005F1CD822FC -:1071080080006B7C000016A680038DBC80038EE88F -:10711800800094C4000016A2000015380000153C39 -:1071280080038F0080006F48D43118951697149308 -:10713800580CC0311894CBD8F60B001A4A58F00BEB -:107148000708F0080019A569F20A00294A2AF40973 -:1071580003095809C1604A1A940B300AF40B190044 -:10716800C0A4201D1AD849E81AD949EC1AD8F01F2A -:10717800001E2FCD49780E9BF007070CF01F001B4F -:10718800301B8ACCF01F001A18961894E0800092E1 -:10719800189B30098ACA0A9CF01F00168A485C8C22 -:1071A800F00C1900C2C048D9920A3009F20A190035 -:1071B800C0B45C781AD848A81AD648FC1AD51AD888 -:1071C800F01F00092FCD0C9C3004F01F000CC718CD -:1071D8000000153800007B2C000016A280039004E4 -:1071E80080038F2C800094C480006D788002DC3C82 -:1071F8008000CEC480038F548002E28C4AE9F207F3 -:10720800070AF4CBFFFFF40A001AA56AEE07001874 -:10721800F2070B0BF40800284A8AF4080008300A21 -:107228009123B02C9106B03A31E8F00B1800C03128 -:10723800F2070B0A4A084A29F0070708F207070964 -:10724800F0091800C1C149F9920A3009F20A190077 -:10725800C0A4201D1AD81AD849B849CC1AD8F01F8A -:10726800001C2FCD4948F00707095809F9BA01FF52 -:10727800F3DAE109F9B9001DF0070B0949189088FC -:10728800EDB80004C1618AC848DAF407070A201D6E -:107298000D891ADA488AF407070A1ADA1AD91AD8A5 -:1072A80048981AD648BC1AD71AD8F01F00092F8D4B -:1072B800089CD8320000153800007B2C0000153CD3 -:1072C800000016A28003900480038F90800094C46D -:1072D80080038FBCD431203D1690502A1895F01F9A -:1072E8000021301BE5DCB010F9D2C010F01F001EE1 -:1072F8001896C2C049D8EA050019F0050707A3691E -:10730800189431E849A1189349ABEE070016A56611 -:10731800F2060006F60600066C0B580BC0B0089C77 -:107328008CAA50095018F01F00148CAA4018140495 -:1073380040092FF7E205070A5C57EE081800F9B76D -:107348000000EE0A1800CE110696402A5800E1F611 -:107358001A00580AF5F21C000C9C2FDDD8320000E8 -:1073680080006C948002DC3C0000153C000015385D -:1073780000007B2C8002E736D431303818971693FA -:107388001494F00C1800E088001B48989009300805 -:10739800F0091900C0353005CA2848681ADC3005DC -:1073A8001AD8485CF01F00052FEDC998000016A2F6 -:1073B80080038DB080038FE0800094C4F80C001A1D -:1073C8004C88F00C0708F0080019A569F20A002992 -:1073D8004C5AF40903095809C1604C4A940B300A05 -:1073E800F40B1900C0A4201D1AD84C181AD94C1C2B -:1073F8001AD8F01F00412FCD4BA80E9BF007070CA1 -:10740800F01F003E0892301B5C72049CF01F003C89 -:1074180018961895C640049A069BF01F003AEE0786 -:1074280000184B03E6070702E4020012A562E4080D -:1074380000224AD83001F0020002300B8506A4244D -:10744800A4310E9CF01F0030852CE60707082FF8A2 -:10745800E6070B0831E9F2081800C031E6070B010E -:107468004A084AA9F0070708F2070709F0091800AF -:10747800C1C149E9920A3009F20A1900C0A4201DC5 -:107488001AD81AD849A84A2C1AD8F01F001B2FCD91 -:107498004948F00707095809F9BA01FFF3DAE10981 -:1074A800F9B9001DF0070B0949089088EDB80004E8 -:1074B800C1610D884959F2070709201D1AD9489951 -:1074C800F20707091AD91AD848985C74491C1AD4C3 -:1074D8001AD61AD71AD8F01F00082F8D0A9CD8324E -:1074E8000000153800007B2C000016A280038DB028 -:1074F80080038F2C800094C480006D788002DC3C6F -:107508008002E736800020240000153C80038F901D -:1075180080038FBCD401E06A05A0300B482CF01F13 -:107528000003D80200007B2C8002E8BCD421202D67 -:10753800FE782800501C500B3FF7109E301CC308E3 -:10754800300B7049EDB90001CFD17049EDB9000990 -:10755800CFD140195809C0B01396F2C5FFFE138960 -:107568005015EDE91089F7D9D010C038F7D7D010E9 -:10757800913B7049EDB90000CFD17C2B40095C8B61 -:107588005809C080B29BF7DBC108B28B40092FE9CC -:107598005009F80A1900E0880006202A5C8A580A6F -:1075A800CD01FE78280070482FEDD822580CC06015 -:1075B800FE782800300A7019C058FE78280030FA82 -:1075C8007019F3DAD20491195EFC202D3008E069B5 -:1075D80013885018F8090249C058401A2FF82FFA92 -:1075E800501A1238CFB12FED5EFCD703D401303CCE -:1075F800F01F0005C060303CF01F0004F01F0004BD -:10760800D402D6038000A3708000A38880014014B0 -:10761800D401580CC060300B303CF01F0004D80275 -:10762800303CF01F0003D8028000A31A8000A35C3E -:10763800D401202D3008B888303CF01F0022303C9F -:10764800F01F0021309CF01F001F307CF01F001D30 -:107658003008501840192FF950192FF8E04861A840 -:10766800CFA1309CF01F00193008501840192FF98D -:1076780050192FF8E05886A0CFA1307CF01F0013D6 -:10768800340B300A492CF01F0013FE782800302AEA -:1076980070C9F3DAD108308A91C970C9F3DAD08495 -:1076A800301A91C970C9F3DAD06191C970C9F3DA97 -:1076B800D001303C91C9F01F00082FEDD80A000016 -:1076C8008000A2A88000A2BE8000A2E6800075F417 -:1076D8008000A3A08000A388D42120AD4C68E3B823 -:1076E8000001D5533017FE6810007109F3D7D20294 -:1076F800303AF1490040E06B1B00EA1B00B7FE7C02 -:107708000C00F01F003E310A201D30081ADA0E99CD -:10771800109B308AFE7C0C00F01F003930080E994F -:107728000E9A109BFE7C0C00F01F0036300BFE7C7E -:107738000C00F01F0035FE7C0C00F01F0034300CEC -:107748001ADC18981899189A1ADC189BFE7C0C00F9 -:10775800F01F002F0E9CF01F002F302BFE7C0C001A -:10776800F01F002DF01F002DD503304AFAC7FFD0B7 -:107778004ABB0E9CF01F002B302B0E9CF01F002ADA -:10778800FAC8FFDC4A99722C109B912CE06AF980A8 -:10779800EA1A0337F2E40000FE7C1800F0E5000066 -:1077A800F01F0023308A4A3B0E9CF01F001E310A4E -:1077B800FAC6FFEC300B0C9CF01F001F3018304B42 -:1077C800FB68002149DCF01F00180C9BFE7C280098 -:1077D800F01F001B3009FE7C2800129B129AF01F34 -:1077E80000190E9C0E96304BF01F000F2FCDFAC7D4 -:1077F800FFD8C2D8800376008000A5088000A4B016 -:107808008000A4CE8000A4E68000A4F48000A470C8 -:107818008000A2228000A4FE8000A3D080039038BC -:107828008002E7368000A2808003901C8000AA1C9A -:10783800800390308002E8BC800390288000A66214 -:107848008000A69C0D8C2FE6F01F000F0E36CFB1DE -:10785800FACBFFFCFE7C2800F01F000C3009FE7CF0 -:107868002800129A129BF01F000AFE7C2800F01FC5 -:107878000009302CF01F0008FE7C2800F01F0005CE -:107888002F6DD8228000A2BE8000A6628000A69C30 -:107898008000A7EC8000A2E6D42130A81896F00C4E -:1078A8001800C0C1E067271020175BF7C13030DB34 -:1078B800FE7C1800F01F0008CF81E0672710201712 -:1078C8005BF7C0800C9BFE7C1800F01F0003CF8183 -:1078D800D822DC2A8000A9AED401178A17B91798D4 -:1078E800B168F1EA118817AAF1EA1088F3E81008DC -:1078F8001AD81ADC483CF01F00042FEDD80200000B -:1079080080039064800094C4D421202D4AB811D9F2 -:10791800BAD97009500911C8BAC81A961895169498 -:10792800581CE08900064A6CF01F0026C448761CE3 -:10793800F01F0025201DEFDCC0084A4C1AD7F01FA5 -:1079480000212FED5825C2A0682CF01F001F201D14 -:10795800EDDCC00849EC1AD6F01F001A30182FEDDC -:10796800F0061800C111305A49AB0E9CF01F001ADE -:1079780030AA49AB0E9CF01F00180E9C308A498B28 -:10798800F01F0015C1883028F0061800C141300AE0 -:107998000E9C149BF01F0013C0E83038F007180045 -:1079A800E08B000A300B0E9CF01F000F1A9B306A08 -:1079B800F01F000E2FEDD82A800396B88003909808 -:1079C800800094C48002DC2C800390C4800390D093 -:1079D800800390E480007380800390EC800390F82B -:1079E800800072DC8000202480005140D421189649 -:1079F8001695582CC45176174B3B0E9CF01F00333C -:107A08001896C1014B2CF01F00334B38FE798000CB -:107A1800B0094B28B0064B28B0064B28B006E08FBB -:107A280001C44B1B0E9CF01F0029C1D14AA89088A5 -:107A3800201D4AEC1AD8F01F00274A8890884ACCA3 -:107A48005008F01F00244A6890884AAC5008F01F7C -:107A580000214A4890884A8C5008F01F001E2FEDDC -:107A6800E08F01A30E9C4A5BF01F0018C0C14A4C6E -:107A7800F01F0018E06900FF4978E08F0195582C45 -:107A8800E089000749FCF01F0013E08F018E762C77 -:107A9800F01F001D18975836E08101876A1649BB08 -:107AA8000C9CF01F000AC53148B85807E08A000846 -:107AB8009009A1A9B0095817C2A1C3089009A1C982 -:107AC800B009C2C8800391048002ECC88003910801 -:107AD800800094C4000016A2000016A6000016A09C -:107AE800000016A8800391148003911C8003913430 -:107AF8008003914C800391648003E18C8003917C26 -:107B0800800391888002DC2C800392144B799208C0 -:107B1800A1A8B2085827C071C0D84B499208A1C87B -:107B2800B208C0884B299208A1A8B2085837C0717A -:107B3800C0A84AF99208A1C8B208C0584AD9920800 -:107B4800A1A8CAC84AB99208A1C8CA884AAB0C9C5D -:107B5800F01F002AC2F14AA85807E08A00089009D5 -:107B6800A3A9B0095817C061C0C89009A3C9B00932 -:107B7800C08849E99208A3A8B2085827C071C0D89C -:107B880049A99208A3C8B208C08849999208A3A82D -:107B9800B2085837C071C0A849599208A3C8B2089A -:107BA800C05849499208A3A8C79849299208A3C868 -:107BB800C758494B0C9CF01F0011C3E149085807EE -:107BC800E08A00089009A1B9B0095817C061C1B886 -:107BD8009009A1D9B009C17848499208A1B8B2085A -:107BE8005827C161C1C80000000016A6000016A0F1 -:107BF800000016A88003921C8002ECC8000016A2A0 -:107C0800800392204B699208A1D8B208C0884B59CA -:107C18009208A1B8B2085837C071C0A84B19920889 -:107C2800A1D8B208C0584B099208A1B8C3784AE94C -:107C38009208A1D8C3384ADB0C9CF01F002DC30161 -:107C48004AC85807E08A00089009A3B9B00958172C -:107C5800C061C0C89009A3D9B009C0884A09920870 -:107C6800A3B8B2085827C071C0D849D99208A3D878 -:107C7800B208C08849B99208A3B8B2085837C07189 -:107C8800C0A849899208A3D8B208C058496992087F -:107C9800A3B8C04849499208A3D8B208C858496B44 -:107CA8000C9CF01F0013C3D149285807E08A00082C -:107CB8009009A5A9B0095817C061C0C89009A5C9FD -:107CC800B009C08848699208A5A8B2085827C151C8 -:107CD800C1B848399208A5C8B208C168000016A6FC -:107CE800000016A0000016A8800392248002ECC8A9 -:107CF800000016A2800392284AC99208A5A8B208D3 -:107D08005837C071C0A84A999208A5C8B208C05887 -:107D18004A799208A5A8CC2B4A599208A5C8CBEB5A -:107D28000C9C4A4BF01F0024C3F14A485807E08ACC -:107D3800000B9009EA19FFFFE8198000B0095817ED -:107D4800C071C1089009F3D9C00FB009C0B849C9BA -:107D58009208EA18FFFFE8188000B2085827C08187 -:107D6800C11849789009F3D9C00FB009C0B848F9CB -:107D78009208EA18FFFFE8188000B2085837C08157 -:107D8800C0E848A89009F3D9C00FB009C08848894D -:107D98009208EA18FFFFE8188000C80B48489009C5 -:107DA800F3D9C00FB009D82A000016A0000016A801 -:107DB800800392308002ECC8000016A2000016A6CC -:107DC800D421582CC2717617495B0E9CF01F001500 -:107DD800C1211897494CF01F0015201D494C1AD78E -:107DE800F01F00120E9C2FF7F01F00122FED5847BE -:107DF800CF51C1380E9CF01F0010201DEFDCC008C9 -:107E080048BC1AD7F01F00090E9CF01F000A2FED7E -:107E1800C04848ACF01F0005D82A000080039238FB -:107E28008002ECC88003923C800094C4800390C414 -:107E380080006C108002DC2C80039250D421207DBD -:107E4800306A18951696FAC7FFEAE06B00FF0E9C99 -:107E5800F01F00385825C1B16C1C4B7BF01F003750 -:107E68001896C4B14B6CF01F00370E9B0C9CF01F8A -:107E780000360E9B301CF01F00340E9B0A9CF01F2E -:107E880000320E9B303CF01F0030C5085825E08AB0 -:107E980000356C1CF01F002D6C2B1897500B169C8E -:107EA800F01F002B58DC5F04585C5F08E9E81008F5 -:107EB800ECC5FFFC109418963008FACCFFF8400B7C -:107EC800F0041800C0500C9AF01F0022C238F01FAE -:107ED800002258375F98580C5F091896F3E8100885 -:107EE800E8081800C0A15807C085C0916A08118920 -:107EF8003308F0091800C030498CC098585C5F18E6 -:107F080058DC5F19F3E80008C050495CF01F000D09 -:107F1800C0D85C570C9BFAC9FFEAFACAFFF80E9C56 -:107F2800F01F00100E9CF01F00102F9DD82A000093 -:107F38008002E8BC800392808002ECC880039288AB -:107F4800800094C48001921C8002DC2C8002EDD059 -:107F58008002EE0C800098688003929C800392DC7B -:107F68008001927080019258D421204D4ABC149609 -:107F7800F01F002B1A9CF01F002B581CC0504AAC55 -:107F8800F01F0027C0A81A9CF01F0028201D1ADC2B -:107F98004A7CF01F00232FEDF01F002618974A6C2B -:107FA800F01F001F5807C0514A4CF01F001DC04861 -:107FB8000E9CF01F00234A376E0CF01F0023C1F0FF -:107FC8006E087018201D1AD8F01F0020500C4A0C9B -:107FD800F01F00136E0870285008F01F001C500C8A -:107FE80049CCF01F000F6E0870385008F01F0017BA -:107FF800500C499CF01F000A2FEDC048497CF01F27 -:108008000008497CF01F00060DC93018F009180057 -:10801800C2A1494CC298000080039314800094C404 -:10802800800191288003932C8000967080039348E8 -:108038008001997C80039358800393A880009784DB -:10804800000080D08000CAE4800096A8800393686E -:10805800800393788003938880039398800393B078 -:10806800800393B8493CF01F0014FACCFFF4300B9E -:10807800F01F0012301B4037FACCFFF8F01F000F3A -:10808800201D1AD750574047F01F000D500C48DCF0 -:10809800F01F000950075047F01F0009500C48AC6A -:1080A800F01F0005F01F0009300C2FED2FCDD8224E -:1080B800800393C4800094C48000C1EC800096A81B -:1080C800800393D080039DC08000495CD421202D7B -:1080D8001695584CE089000649ECF01F001FC3684C -:1080E800FACCFFFC761BF01F001D6A2C4014F01F11 -:1080F800001C18976A3CF01F001A18966A4CF01F6B -:108108000018501418951ADC496C1AD61AD71AD4C4 -:10811800F01F0011089CF3D5C008F5D6C0080E9BC7 -:108128005C7BF01F00112FCD5BFCC10148F8900962 -:108138003008F0091900C0A448D81AD548DC1AD666 -:108148001AD71AD8F01F00042FCD2FEDD82A000017 -:10815800800393DC800094C4800098FC8002DC2CAF -:108168008003941480003958000016A280039054AC -:1081780080039448D4211695583CE089000649CCE0 -:10818800F01F001CC338761CF01F001B18976A2CC0 -:10819800F01F001918966A3CF01F00174978201D37 -:1081A80018941AD649651AD7580CF0051710495C67 -:1081B8001AD5F01F0010089AF7D6C0085C5A0E9C12 -:1081C8005C7CF01F00112FCD5BFCC10148F89009C1 -:1081D8003008F0091900C0A448D81AD648DC1AD7C4 -:1081E8001AD51AD8F01F00032FCDD82A80039488F7 -:1081F800800094C48002DC2C80037DC480037DC889 -:10820800800394B880003C50000016A28003969C1E -:10821800800394DCD421206D1697582CE089000641 -:108228004A4CF01F0025C438761CF01F00246E2B22 -:10823800F8C700011A9CF01F0022304A1A9BFAC6A0 -:10824800FFEC0C9CF01F001F201D40681AD8F01F7F -:10825800001E1ADC49DC1AD7F01F00170C9B0E9C75 -:108268005C5CF01F001BFACCFFE0300BF01F00191C -:10827800301B4087FACCFFE4F01F00162FDD505763 -:108288001AD74056F01F00101AD71ADC492C50870D -:10829800F01F00092FDD50461AD6F01F000B1AD622 -:1082A8001ADC48EC5076F01F00042FCD2FADD82AE9 -:1082B80080039510800094C48002DC2C800098FC18 -:1082C8008002E736800096A8800395388000C19C1C -:1082D8008000C1EC8003955480039564D421FACDC5 -:1082E8000108581CE0890006491CF01F0012C1D87B -:1082F800F6C9FFFCF8CA0001FAC7FFFCE06B0100F1 -:108308000E9CF01F000DC110300948CAFACBFEFCC4 -:108318000E9CF01F000B5C5CC0814418489C1AD866 -:108328001AD7F01F00042FED2BEDD82A800395747F -:10833800800094C480009710800078E08000C4C05A -:1083480080039064D43121AD18961695582CE08995 -:1083580000064A1CF01F0021C3B8FAC7FFFC344AC4 -:10836800300B0E9CF01F001E306AE06B00FFFACC49 -:10837800FFDBF01F001BFAC4FFB8EAC9FFFCECCA18 -:108388000002320B089CF01F00171893C210189AAD -:10839800089B0E9CF01F00143088FB6300242016F5 -:1083A800EA060326FB68003C0C9CF01F00100C9B9F -:1083B800189A30180E9C3089F01F000D581CC08088 -:1083C80048C8201D48CC1AD8F01F00042FED2E6D88 -:1083D800D83A000080039590800094C48002E8BCDD -:1083E800800097108002E7368002EDD080019084EB -:1083F80080039048800395B4D42121AD1696582C5B -:10840800C05049BCF01F001BC308FAC7FFFC344A20 -:10841800300B0E9CF01F0018306AE06B00FFFACC9E -:10842800FFDBF01F0015ECC9FFFC301AFAC6FFB8D5 -:10843800320B0C9CF01F00111895C170189A0C9BF8 -:108448000E9CF01F000F3088FB6500240E9CFB6813 -:10845800003CF01F000C581CC08048B8201D48BCC8 -:108468001AD8F01F00042FED2E6DD82A800395D45A -:10847800800094C48002E8BC800097108002E73630 -:1084880080018FF8800396AC800395ECD431204DA1 -:108498001493189516947406582CC091761C304A7B -:1084A8004A7BF01F0028C0513018C458584CC0806F -:1084B8004A5CF01F00264A6CF01F0024C3D8761BC4 -:1084C8001A9CF01F00240A9A1A9BFACCFFF4F01F9A -:1084D80000224A289088EDB80002C0B1201D40480B -:1084E8001AD849F81AD649FC1AD8F01F00182FCD07 -:1084F800FAC7FFF40C9C0E9BF01F001B682B1A9CFC -:10850800F01F0014304A1A9B0E9CF01F00130E9B9C -:108518000C9CF01F0016683B1A9CF01F000E304A96 -:108528001A9B0E9CF01F000C0E9B0C9CF01F001059 -:108538001A953008A6C82FCDD83A0000800392803B -:108548008002EDE680039610800094C48003964074 -:10855800800098FC8002E736000016A28003903C59 -:10856800800396688000CBC88000CA928000CA74D5 -:10857800D421212D581CE0890006491CF01F001148 -:10858800C1C8F6C9FFFCF8CA0001FAC7FFD8320B08 -:108598000E9CF01F000D1896C1000E9B189AFAC782 -:1085A800FFF90E9CF01F0009300BFB6600270E9C9C -:1085B800F01F0007F01F00072EEDD82A80039684CD -:1085C800800094C4800097108002E736800099A844 -:1085D8008000998CD401F01F0003F01F0003D80A13 -:1085E80080019EF880009820D40148BE1898300970 -:1085F8007C0C580CC0A1F2090019487EFC0900291E -:10860800932A9318930BD8022FF92F4E58F9CF11AC -:10861800DC0A000000001544D401484CF01F000497 -:1086280030194848B089D802800396C0800094C4A5 -:10863800000015F8D4314B68169570065806C050DE -:108648005816E08100BAC938580CE08000B5F01F10 -:1086580000314B18910C1897580CE08000AD19891F -:10866800EC091800C0415805C460C4284AB44AC37C -:108678008906C188EC060018E60800287012049CD8 -:108688005802C0E0F01F002718910E9CF01F00252B -:108698000E9BE20C0D4A049CF01F0023C3102FF61A -:1086A8008906680649D258E6FE98FFE658F6C28160 -:1086B8005805C210049749DCF01F001D3008498690 -:1086C8008508C128F0080018EC0800287009580926 -:1086D800C0807018201D497C1AD8F01F00152FED96 -:1086E8006E082FF88F086E0858E8FE98FFED492CA1 -:1086F800F01F000F4888700CF01F0010C5C80E9CB2 -:1087080048FB49074906F01F0011C2C8000016407F -:108718008002ED8400001644000015400000154456 -:108728008002EDD08002EDE6800396C8800094C4F4 -:10873800800396E0800396C48002E28C80039364F1 -:10874800000015FC000016008002EEB86E08EC0868 -:10875800092C2FF88F085908C070498B300CF01F6E -:108768000018580CCF41301949689109496949786E -:108778007008F0080018F20800284959702A720C8D -:108788007008494B5D18581CC1705805C040492CE9 -:10879800F01F001248E83007340A0E9B910748DCA6 -:1087A800F01F000F48F8700CF01F000F4858301CDD -:1087B8009107D832D83ADA3A800393648002EEB847 -:1087C800000016400000154400001540000015FC8C -:1087D80000001600800396C4800094C48002E8BCA0 -:1087E800000016448002E28CD421202D1897FACB81 -:1087F800FFFCFE7C1800F01F0012583CC080584C4B -:10880800C081E0690100FE7818009109301CC15848 -:10881800401C58DCC03130ACC0B8588CC081F01F47 -:108828000009320CF01F00071BFCC0285C5CF01F1D -:1088380000054018300CAE882FEDD8228000A9C260 -:10884800800078A0D431202D30A1FAC0FFF930D2B1 -:10885800308349B749B630043005009CF01F001A30 -:10886800C2A11BF8E20818005F0AE40818005F09B3 -:10887800124AF80A1800C0904929491A1298740B2C -:10888800950CF20B0B0CC188E6081800C0916E0815 -:108898002018F00C17708F0CEC0C0B04C0686E09D4 -:1088A800EC090B082FF98F096E08E0480050CD61DC -:1088B8008F05CD4B3008109C2FEDD832000016489C -:1088C8000000164C800087F0D401F01F0004301B14 -:1088D800F01F0003D80200008000884C8000863C0E -:1088E800D4314974169714951293580BC0B1680C7B -:1088F800580CC0311896C2181696F01F0012890736 -:10890800C1C868085808C0C1E06C0200F01F000E1A -:10891800890CC061189648DCF01F000DC0E80A9C5D -:10892800E066020048650C33E60617806A0B0C9A6D -:10893800F01F00086A088F080C9CD8320000169CAB -:108948008002E28C8002E2A4800396E8800094C44E -:10895800800090B4D401F01F0002D80A800091086A -:10896800D4213008FAC4FFEC19C9F0091800F9B885 -:108978000100E9F81A01E9F81A02E9F81A004A1898 -:108988001AD84A1818971AD8089B3008E8C9FFF867 -:10899800E8CAFFFC780CF01F001D8F0C2FED580C57 -:1089A800C021DC2AF01F001A300949AA301BE06CEC -:1089B8001388F01F00193009498A301BE06C00FA4F -:1089C800F01F00153009496A301BE06C01F4F01FF4 -:1089D80000123009493A301BE06CEA60F01F000EC3 -:1089E8003009491A301BE06C03E8F01F000B30090E -:1089F80048EA301BE06C03E8F01F0007DA2A0000A1 -:108A08008001365C80013C948000CCA88000CAB00C -:108A180080008A708000956C80008A6480008A5883 -:108A280080008A4C80008A4080008A34D401F01F7C -:108A38000002D8028000C664D401F01F0002D802E8 -:108A480080012984D401F01F0002D8028000B8B048 -:108A5800D401F01F0002D8028000C074D401F01FB6 -:108A68000002D8028000E68CD401F01F0002D80270 -:108A78008001326430194828B0895EFC000016AACB -:108A8800D401319CF01F0003319CF01F0003D80271 -:108A98008000A2D28000A2E6D421204D3FF819C957 -:108AA8001897F0091800F9B80001EFF80E0430081B -:108AB800201D1AD850581AD81AD850685058F01F84 -:108AC800001C49CB6E0CF01F001C0E9949BA49CB0B -:108AD80049CCF01F001D2FCD581CC08049B8201D5F -:108AE80049BC1AD8F01F001B2FEDF01F001BF01F08 -:108AF800001B0E9CF01F001AC0F049A8900930080E -:108B0800F0091900C0F44988201D498C1AD8F01FB3 -:108B180000112FEDC07830194958319CB089F01FE9 -:108B280000153018EF6800082FCDD822800089681A -:108B380080008C5C8000CAEE80008B7C80008BDC1F -:108B480080008A7C80009A188003973C80039DC02F -:108B5800800094C48000998C80019EF880002A9837 -:108B6800000016A28003972880039758000016A4D7 -:108B78008000A300D4211897333CF01F000F300663 -:108B88000FD8EC081800C0C048CCF01F000D6E0CC0 -:108B9800F01F000C6E0CF01F000CAED6C07848BC5D -:108BA800F01F00076E0CF01F000A3FFCF01F0009C1 -:108BB800D82200008000A2E680039774800094C445 -:108BC8008000B1D88000AE50800397908000CABC66 -:108BD80080002E60D42116971896333CF01F00149D -:108BE8000C9CF01F0014201D1ADC493CF01F0013D8 -:108BF80030182FED0FC6F0061800C121490CF01FE0 -:108C0800000F6E0CF01F000F48F849095C5CF20C6D -:108C18001700F00C1710F01F0009AED6C0486E0CF4 -:108C2800F01F000BF01F000BD82200008000A300EB -:108C3800800096E48003979C800094C4800397B8D2 -:108C48008000B950800397D080037FC08000CB8814 -:108C58008000C690D42149471896F01F0014189533 -:108C6800C110301CF01F00126C18201D1AD8F01FFC -:108C78000011500C490CF01F001130182FEDAE8870 -:108C8800D822AE8CF01F000E48E89008EA081900B8 -:108C9800C08448D8201D48DC1AD8F01F00082FEDE2 -:108CA800D8220000000016AB8000CAE480002E60C5 -:108CB800800096A8800397D8800094C480006B2C0D -:108CC800000016A28003995C800397E8D4211897C6 -:108CD800F01F0027300A4A7B4A7CF01F0028300A20 -:108CE8004A7B4A8CF01F00254A7B300A4A7CF01FD9 -:108CF80000230E9A4A6B4A7CF01F0020300A4A6B08 -:108D08004A6CF01F001E4A6B300A4A6CF01F001BA9 -:108D18000E9A4A5B4A5CF01F0019300A4A4B4A5CBB -:108D2800F01F0016300A4A4B4A4CF01F0014300A54 -:108D38004A3B4A4CF01F0011300A4A3B4A3CF01F9C -:108D4800000F300A4A2B4A3CF01F000C300A4A2B0D -:108D58004A2CF01F000A300A4A1B4A2CF01F000751 -:108D6800300A4A1B4A1CF01F0005D82280008620C2 -:108D7800800085DC80039804800085F08000857879 -:108D88008003980C80007E448003981480007F70D4 -:108D98008003981C800079F48003982480007DC8A3 -:108DA8008003982C80008494800398348000633476 -:108DB800800398408000834C80039848800084009A -:108DC80080039850800082E4800398588000821CB9 -:108DD800800398608000817C80039868800080D43C -:108DE800800398748000791080039880D4211897A4 -:108DF800F01F000BF01F000BF01F000BF01F000B03 -:108E08006E0CF01F000B48B811893008F0091800E3 -:108E1800C0406E0CF01F0008D82200008000951496 -:108E2800800088D080009504800193A080013BBC1D -:108E3800000016A480004758D421202D3029EE7850 -:108E48000000F1D9D1A23019F1D9D0033007501858 -:108E58000E9B5007337CF01F000F1A9BFE7C3800D6 -:108E6800F01F000D0E9BE06A01A4FE7C3800F01F85 -:108E7800000B0E9BE06A0348FE7C3800F01F0008D8 -:108E88000E9BFE7C3800F01F00072FEDD822000053 -:108E98008000A2308000A8388000A8F08000A926B1 -:108EA8008000A8D4D401333CF01F0009334CF01FD4 -:108EB8000008335CF01F0006333CF01F0006334CFB -:108EC800F01F0004335CF01F0003D8028000A2A842 -:108ED8008000A2E6D421202DF01F0034F01F0034BA -:108EE800F01F0034F01F0034E06C1B00EA1C00B7D0 -:108EF800F01F00324B28201D4B2C1AD8F01F0032CF -:108F080030CB301CF01F00312FED1897580CC08162 -:108F18004AF8201D4AFC1AD8F01F002B2FED344BBD -:108F2800301CF01F002A8F0CC0814A98201D4A9CD3 -:108F38001AD8F01F00252FED3FF80E9CAEC8F01F81 -:108F48000026300B169CF01F0025F01F0025F01F8F -:108F58000025C0804A48201D49EC1AD8F01F001A85 -:108F68002FEDFACAFFFC0E9B4A0CF01F0021581C7B -:108F7800C0C1401A49FB0E9CF01F001F581CC0516D -:108F88000E9CF01F001ECFDB58CCC04058DCC061DF -:108F9800C03849BCC04849BCC02849BCF01F000AB9 -:108FA800F01F001ACFEB000080008A88800076E06E -:108FB80080008EAC80008E408000AAE88003970C69 -:108FC80080039888800094C48002DC3C800398A8C1 -:108FD80080039DC080008CD4800095C88000C8E4C0 -:108FE8008000895C800398B8800088E880013E880A -:108FF80080008AA0800193BC80008DF4800398E4EF -:109008008003990C8003993080009514D4314A1458 -:1090180058095F081296189716951493A888E06067 -:109028000100E06100FFC2E88920A868E203190096 -:10903800E069FFFFE7D9E828E9F88A02E06901005A -:1090480088E8F2080108682989151039E9F8BA0290 -:10905800EE021608049CF01F0010301CF01F000FD1 -:10906800F01F000F5806C090049CF01F000E301C23 -:10907800F01F000DF01F000D6828101310071005D1 -:109088005C83F1D7C0085803CD01069CD832000094 -:10909800000016AC8000A0408000A19880009ED4FB -:1090A80080009F5C8000A17080009E94D4013009EC -:1090B8005C7AF01F0002D80280009014D40148584E -:1090C80090E9701B120C702AF01F0003D8020000F0 -:1090D800000016AC8002E736D4014888189B118A34 -:1090E8003009F20A1800C07090E9701C120B702A3F -:1090F800F01F0003D8020000000016AC8002E7361B -:10910800D421208D48D8F0E60008FAE70008F0EAF4 -:109118000000FAC8FFF0FAEB0000F0E70008F0EBF7 -:109128000000E06CF980EA1C0337F01F0005300CE2 -:109138002FCD2FCDD82200008003996C8000A1C0CC -:10914800D401FAC9FFFCF01F0002D80280031C1CDE -:10915800D401F01F0002D8028002EE88D401F01F6B -:109168000002D8028002ECACD401F01F0002D80241 -:109178008002F0ECD401F01F0002D8028002E71050 -:10918800D401F01F0002D8028002EE2CD401F01F97 -:109198000002D8028002ED84D401F01F0002D80238 -:1091A8008002ECC8D401F01F0002D8028002EE0C45 -:1091B800D401F01F0002D8028002EDD0D401F01FC4 -:1091C8000002D8028002E87ED401F01F0002D80213 -:1091D8008002E8BCD401F01F0002D8028002E73602 -:1091E800D401F01F0002D8028002E28CD401F01FE3 -:1091F8000002D8028002E8D0D401F01F0002D80291 -:109208008002E2A4D401580CC0707808B08B7808AA -:109218002FF89908D802F9DBC008F01F0002D8021D -:10922800800078A0D431189616971495580AE08AC9 -:1092380000153008109AC0282FF8EE08070BF40B19 -:109248001800CFB10A38F9B50400EBD8E515EDB927 -:109258000001C0313303C0283203E9D9C001C090EE -:109268003004C1082FF42015069B0C9CF01F000D3C -:109278005805FE99FFF9C0682FF42FF70C9CF01FD2 -:1092880000090F8B580BCF91C0782FF42015069B3F -:109298000C9CF01F00045805FE99FFF9089CD83271 -:1092A8008000920CD431204DFAC4FFCC109368177B -:1092B800189568041698580BC0B13308BADB08999A -:1092C800069ABAC8FACBFFFCF01F001FC3985809CA -:1092D8005F1B58AA5F09F7E90009C0605808C04435 -:1092E8005C383016C0283006EECB003A3009FAC791 -:1092F800FFF00EF9C0B8F00A0D00029912985898BC -:10930800F1DBE9082D080EF800985808CF515806E7 -:10931800C1005803C0B0EDB40001C08132DB0A9C23 -:109328002013F01F000A3016C04832D830060EF855 -:109338000899069A0E9B0A9CF01F00030C0C2FCD6F -:10934800D83200008000922C8000920CD431203D4D -:109358003007500A18951696325432D3330230919A -:109368003730C978E8081800E081008E2FF60D889C -:109378005808E0800093E8081800E0800085E608B7 -:109388001800F9B90100F7B600FFF9B90001C038B3 -:109398002FF6A1B90D88E4081800CFB03008C048EE -:1093A800F80E00182FF60D8AF008002EF4CC0030C5 -:1093B800F4CB0030E20B1800FE98FFF4E00A180026 -:1093C800C0A1109A4008110B50084B98580BF00B8D -:1093D8001700C548364BF60A1800C0A1361B400ACC -:1093E8001ADB1AD93019740B2FCA502AC358370BF5 -:1093F800F60A1800C121361A40091ADAF2CAFFFC27 -:10940800501A308A1ADA720B3009310A0A9CF01F96 -:1094180000292FED1807C3C8378BF60A1800C0417A -:10942800400A361BC078358BF60A1800C091400AEE -:10943800341B1ADB1AD9740B2FCA502ACE6B375B30 -:10944800F60A1800C0B1361B400A1ADB1AD93009CF -:10945800740B2FCA502A30AACDAB363BF60A180037 -:10946800C171109A4008700B2FC8FB6B0008500898 -:10947800FACBFFF83008FB6800090A9CF01F000EC1 -:109488001807C0682FF70D8B0A9CF01F000C2FF6E9 -:109498000D885808FE91FF685805EBF81000F9B9D7 -:1094A8000100F1F91E000E9C2FDDD8328003997C53 -:1094B800800092AC8000922C8000920CD401189B02 -:1094C800FACAFFFC300CF01F0002D8028000935447 -:1094D800D40148A972082FF89308F2F800CC58086C -:1094E800C040F2FC00D45D18FE780D003019918957 -:1094F8007078D402D6030000000001184838F0F94B -:1095080000D0700CB33C5EFC00000118D431495601 -:1095180030020C9730152F46EEC1FF2C0E930E9497 -:109528000D88E4081800C18166086E291039E08B9F -:1095380000146C185808C0306C2C5D180D98EA0897 -:109548001800E9F80000EFF90001F3D8E008EFF897 -:109558000A02EDF51E002EC62EC70236CE21D832DD -:1095680000000118D431300E189830A5494C1C96CB -:109578002FCCFCC3FFFF1897F9340008EC0418003F -:10958800C071FDD3C0082ECCEA0E1800CF311C9C48 -:1095980048B530030A96FC0E002EEAF500D0F00517 -:1095A8000D048F040D08EF630008EC0E0026080870 -:1095B800EF6B00098F188D498D3AD83200000118D9 -:1095C800D421300A16971896328B495CF01F001583 -:1095D800300AFE7C0D00149BF01F00134935FE7CF9 -:1095E8000D00EAFB00D0F60B1073A19BF01F0010D2 -:1095F800FE7C0D00F01F000FFE7C0D00F01F000E1A -:10960800EAC9FF2CEB4600CCEB4700D430182F45B5 -:10961800AA882EC51235CFD1D8220000800094D850 -:109628008000A3A08000A594000001188000A580F8 -:109638008000A57A8000A562D401306AF01F00027C -:109648005F0CD8028002E710D401F93A0020F738FD -:109658000020F4081800C020D80AF01F00035F0C8F -:10966800D80200008002E710D42119D919881AD924 -:1096780019C91AD919B91AD919A91AD91999486732 -:109688001AD9486A1AD8312B0E9CF01F00050E9C77 -:109698002FADD822000016E0800399848002EC40A8 -:1096A800D4214058F5D8C008F00916181ADAF5D8A8 -:1096B800C108F1D8C2081ADA48671AD8486A1AD90C -:1096C800310B0E9CF01F00050E9C2FCDD8220000F8 -:1096D800000016F4800399A48002EC40D421488746 -:1096E8001896321A300B0E9CF01F00060C9BED3AB0 -:1096F80000200E9CF01F00040E9CD822000016BC0F -:109708008002E8BC8002E736D431300318971696F9 -:109718001491129218950694C1D805002FF4009C54 -:10972800F01F0012F80300030C33E0880009201D25 -:1097380048FC1AD6F01F000F2FEDC108201DEE05BA -:10974800010B1AD00A9C0C0B48BAF01F000C2FED25 -:1097580018050234CE350E35C021D83A30080AF83B -:10976800EA07010CD83200008002EDD0800399B4DA -:10977800800094C4800399CC8002EC40D4211897CF -:109788002DFCF01F001B201D1ADC49ACF01F001A2D -:109798000E9CF01F001A500C499CF01F00176EC851 -:1097A800498C5008F01F00146EF82FED5818C0416E -:1097B800495CF01F0011EF3800383049F2081800F2 -:1097C800C0E03059F2081800C0603029F2081800CB -:1097D800C091C03848DCC04848DCC02848DCF01FCD -:1097E800000648DCF01F0004D822000080009670B4 -:1097F800800399CC800094C4800096E4800399D0BB -:10980800800399D8800399E8800399F480039A0823 -:1098180080039A1C800384D4D421202DFACCFFFC29 -:10982800F01F000C401870185808C04148ACF01FD1 -:10983800000B3007C0887008F007032CF01F0008E1 -:109848002FF75C57401870191237CF632FEDD822C5 -:1098580080018F0480039A40800094C4800097841C -:10986800D431202D300818921696BAE8169CF01FAD -:10987800001DEDBC0000C04149BCF01F001C3007B2 -:109888002FF649B30E94FAC5FFFCC208660BF6081A -:109898000709E2190044C210E04700405F9C0D8AA6 -:1098A800F60A0709E21900445F09F9E91009E8090D -:1098B8001800C131BADABAC8310A300B0A9C2FE64F -:1098C800F01F000CE4070B0C2FF7ED38FFFF5808CA -:1098D800CDE10E9C5C5CC028300C2FEDD832000026 -:1098E8008002EDD080039A50800094C40000049C4C -:1098F8008002F0ECD421204D1A981AD8FAC8FFF843 -:109908001AD8FAC8FFF01AD8FAC8FFE818971AD870 -:10991800169C49BBF01F001B2FCD584CC221403864 -:10992800E04800FFE08B001E402B580BC1A5E04B20 -:1099380000FFE089001740195809C135E04900FFC8 -:10994800E0890010400A580AC0C5E04A00FFE089D3 -:109958000009B16BF7E811881448F1E91088C028AC -:109968003008F0091618AEB8AE890E9CF3D8C208B4 -:10997800F1D8C108AE99AEA82FCDD82280039A603D -:109988008002EBF4486870085808F9BC00FFF9B980 -:109998000101F1F91E10F9BC01015EFC0000170479 -:1099A800D4214988169770085808C021DC2A580C19 -:1099B800C080189B321AF0CCFFEFF01F0013C0389C -:1099C800F16C003148F85807C080700C0E9B306A63 -:1099D8002CECF01F000DC088700C306A2CECE06B8A -:1099E80000FFF01F000A48787008F139003130088C -:1099F800F0091800C021DA2AF01F0005DA2A000051 -:109A0800000017048002E7368002E8BC80019EF857 -:109A1800D4314A241896169714951292680358035D -:109A2800C3B1338B301CF01F001E890C189BC0B1CA -:109A380049C89088EDB80003C2F1201D49A849BC67 -:109A48001AD8C10849ACF01F001B49691891581C65 -:109A5800C0E09288EDB80003C1F1201D4928496C87 -:109A68001AD8F01F00163FFC2FEDD8326808913243 -:109A7800F16300109106911791259288EDB80003C3 -:109A8800C020D8324888201D48DC1AD8F01F000BA7 -:109A9800029C2FEDD832DC3A000017048002DC3C2F -:109AA800000016A280039A8080039AE080009AC87A -:109AB80080018F2480039AF8800094C480039B203F -:109AC800D431202D1697581CC290C083582CC670CC -:109AD8004A78583CE08101A8C998F01F00264A48F6 -:109AE80018969088EDB80003C0A1F01F00234A38EB -:109AF8001ADC4A3C1AD8F01F00232FED333CF01F24 -:109B08000022334CF01F00216E185808E08001979E -:109B18006E3B0C9C5D18E08F019249589088EDB817 -:109B28000003C08149A8201D49AC1AD8F01F0015B0 -:109B38002FED334CF01F0014333CF01F0014EF39A5 -:109B480000103008F0091800E0800179F01F0012B9 -:109B5800581CE080017448689088EDB80003E081E3 -:109B6800016E201D48A848DC1AD8C659000016A264 -:109B78008001997C800096E480039AC880039B3812 -:109B8800800094C48000A3008000A2E680039CE8C3 -:109B980080039B5480019EF880039B784B589088E3 -:109BA800EDB80003C0814B48201D4B4C1AD8F01F5C -:109BB80000342FED4AF89088EDB80003C0814B18A7 -:109BC800201D4B1C1AD8F01F002E2FED333CF01F20 -:109BD800002F6E285808C0306E3C5D18EF39001011 -:109BE8003008F0091800E080012AF01F0029581CED -:109BF800E080012549F89088EDB80003E081011F55 -:109C0800201D4A084A3C1AD8C1699088EDB800035B -:109C1800C0814A18201D4A1C1AD8F01F00192FEDC0 -:109C28006E085808C0306E3C5D18EF3900103008D7 -:109C3800F0091800E0800103EF390031F00918003D -:109C4800E08000FDF01F00161894FACCFFFCF01F0E -:109C58000015581CC591401870185808C550300593 -:109C6800EEC1FFEFEEC3FFCE0A960A92C488000049 -:109C7800000016A280039ABC80039BAC800094C4A9 -:109C880080039A9880039BC48000A2E680019EF816 -:109C980080039BE880039AA880039C1C8001997C20 -:109CA80080018F04EF390031E4091800C080700882 -:109CB800029CF005032BF01F0041C1F0306A4C0BE9 -:109CC800069CF01F0040C0A040187008069CF005D4 -:109CD800032B2DFBF01F003CC1005806C0A0401804 -:109CE8006CC97008F005032870C81039E0890006AF -:109CF80040187008F00503262FF55C5540187019B8 -:109D08001235CD13C02830060C34C0415804E08108 -:109D1800009658065F1858045F19F1E90009C20057 -:109D2800089B0C9CF01F0025C1D068C8FE58FFC0D6 -:109D3800E08400856CCAF0C9FFF71439E084007F1D -:109D48004A299289EDB90003C0D1201D1ADA1AD820 -:109D580049F84A0C1AD8F01F00202FCDC0385808EF -:109D6800C0C0202DECCBFFDF306A1A9CF01F001B0F -:109D7800F01F001B2FEDC17849489088EDB800030B -:109D8800C0C1EECCFFEFF01F001749181ADC496C70 -:109D98001AD8F01F00112FEDEECCFFEFEF3B00318A -:109DA800F01F0012588CC060589CC2F0581CC21199 -:109DB800C458F01F000FC4288000965080039C38B8 -:109DC8008002EDE680009640000016A280039A8C7F -:109DD80080039C40800094C48002E73680019DDCAB -:109DE800800096E480039C6880019EA0800199CC45 -:109DF80049489088EDB80003C0814938201D493C86 -:109E08001AD8F01F00132FEDF01F0012581CC16064 -:109E180048C89088EDB80003C111201D48A848EC37 -:109E28001AD8C0989088EDB80003C081201D48B8A2 -:109E380048BC1AD8F01F00062FED2FEDD8320000CD -:109E4800000016A280039A8C80039C94800094C41E -:109E580080019EF880039CB080039ABC80039CCC50 -:109E6800D4012FEC580BC080F7DCC008FE7C28001A -:109E7800F01F0005D802F7DCC008FE7C2800F01FA0 -:109E88000003D8028000A6C68000A716D42148C7C0 -:109E9800C098300BFE7C2800F01F000A6E082FF8CF -:109EA8008F086E0CF7DCC008CF51F9DCC288F01FB0 -:109EB800000630194858B089D82200000000170859 -:109EC8008000A7FA80009E680000170CD40148683B -:109ED800300B700CF9DCC288F01F000430094848C8 -:109EE800B089D8020000170880009E680000170C8F -:109EF800D421202D4948301B700CF9DCC288F01F92 -:109F08000013E06B00D7FE7C2800F01F0011FAC791 -:109F1800FFFAE06B00FFFE7C2800F01F000D0E9B8F -:109F2800FE7C2800F01F000B9AB8EDB80007CF217F -:109F38004858300B700CF9DCC288F01F00042FED74 -:109F4800D82200000000170880009E688000A7FA49 -:109F58008000A816D421202D49B8A96C910C49B8C5 -:109F680011893008F0091800C030F01F00193009B5 -:109F780049684957B0896E0C301BF9DCC288F01F5C -:109F88000015E06B0082FE7C2800F01F00136E08AD -:109F9800F3D8C008FAC7FFF8F7D8C10CFE7C280030 -:109FA800F3EB109B0EDBB18BF01F000B0FABFE7CAD -:109FB8002800F01F00090FBBFE7C2800F01F0006D8 -:109FC8002FEDDA2A000017080000170C80009EF811 -:109FD80080009E688000A7FAD42149381897118913 -:109FE8003008F0091800C0604908700CA98CF01FEF -:109FF8000010EEC6FF000F3BFE7C2800F01F000D8E -:10A008000C37CFA14898300B700CF8CCFF00910C9E -:10A01800F9DCC288F01F000830194838301CB089B4 -:10A02800D82200000000170C0000170880009F5C71 -:10A038008000A7FA80009E68D421202D4A78A96C58 -:10A04800910C4A7811893008F0091800C030F01FC7 -:10A05800002530094A284A17B0896E0C301BF9DCF4 -:10A06800C288F01F0021E06B00D2FE7C2800F01FA0 -:10A07800001F6E08F3D8C008FAC7FFF8F7D8C10C5C -:10A08800FE7C2800F3EB109B0EDBB18BF01F001752 -:10A098000FABFE7C2800F01F00150FBBFE7C2800CC -:10A0A800F01F0012E06B00FFFE7C2800F01F000F7D -:10A0B800E06B00FFFE7C2800F01F000CE06B00FF47 -:10A0C800FE7C2800F01F0009E06B00FFFE7C2800E2 -:10A0D800F01F00062FEDDA2A000017080000170C01 -:10A0E80080009EF880009E688000A7FAD421202D69 -:10A0F800498818973009118AF20A1800C070B08987 -:10A108004958700CA98CF01F0015FAC5FFFAEEC665 -:10A11800FF00E06B00FFFE7C2800F01F00110A9B87 -:10A12800FE7C2800F01F000F9A380EC80C37CF218C -:10A138004898300B700CF8CCFF00910CF9DCC28801 -:10A14800F01F000930194838301CB0892FEDD8228B -:10A158000000170C000017088000A0408000A7FA34 -:10A168008000A81680009E68D4211897C088F01F28 -:10A178000006486CF01F000620175C87483C58070B -:10A18800CF71DA2A800090C40000171080009FE089 -:10A19800D4211897C088F01F0006486CF01F0006ED -:10A1A80020175C87483C5807CF71DA2A8000A0F452 -:10A1B80000001710800090E0D4213027FAC4FFEC8B -:10A1C8001896A887C0C80C9A089BFE7C2800F01F28 -:10A1D8000009C020D82A09882FF8A8880988EE081D -:10A1E8001800FE98FFF230094838301CB089D82290 -:10A1F8008000A73C0000170CE1B80000EE18000131 -:10A20800F1D8C201C020D3033019F20B094B994B86 -:10A21800783958085E0CD5035EFCFE681400700996 -:10A22800F3DCD0C191095EFCF8081605A968E0289E -:10A23800F000581BC0D0C063582BC0F0583BC12059 -:10A248005EFF3019F20C0949916991A9C108F60C11 -:10A25800094B915B91ABC0B83019F20C094991696F -:10A26800C0583019F20C0949915991993019F20CDA -:10A27800094C912C5EFDD703D4213007189616940B -:10A288000E95C0880D9B0D8C2FF72FE6F01F00044C -:10A2980018450837CF830A9CD82200008000A230D6 -:10A2A8003018F00C0948A59CA96CE02CF000F9487E -:10A2B800004899185EFC3018F00C0948A59CA96C58 -:10A2C800E02CF000F94800745EFC3018F00C0948E6 -:10A2D800A59CA96CE02CF000F94800785EFC3018C9 -:10A2E800F00C0948A59CA96CE02CF000F948005432 -:10A2F800F948004499185EFC3018F00C0948A59CF0 -:10A30800A96CE02CF000F9480058F9480044991865 -:10A318005EFC301AF8081605F40C0949A968E0280B -:10A32800F000F14900C4143BC080C043582BC0F171 -:10A33800C098F14900A8C038F14900A4F14900B813 -:10A34800C078F14900A8F14900B4C0285EFAF14983 -:10A3580000945EFD3018F00C0948A59CA96CE02C0F -:10A36800F000F94800985EFCF8081605A968E0288E -:10A37800F000F0F800D0F00C0A4CF9DCC0015EFCEB -:10A388003018F00C0948A59CA96CE02CF000F9489D -:10A3980000D85EFCC008D703F3DBC0054898A59B2E -:10A3A800F00B00387018F009092C4878F5DAC0026B -:10A3B800F00A0329FE780800F00B09295EFC00006A -:10A3C80080039CFC8003773CD42148F8E3B8000163 -:10A3D80048E848F9700E48FC3008FE7B0800C0E8E1 -:10A3E8007216EC0A00262FFA8D0C0E3ACFA3F60847 -:10A3F800092E2F892FF85948C0407207300ACF6BB1 -:10A40800D8220000800376008003773C80039CFC00 -:10A418008000A39CE0680083FE790800F00C010C22 -:10A42800F20C0328F0CAFFC0F20A032C580C5E0C89 -:10A438004869F80C1200F2080038F80C111F70185F -:10A44800F00C032C5EFC000080039CFC78C83019DB -:10A45800F1D9D10399C85EFC78C83019F1D9D00177 -:10A46800F1DBD20399C85EFCD421FAC4FFEC68176B -:10A47800680EEFD7C003FDDEC0013004E9D7D00372 -:10A48800E9DED0E1E9D7D103E9DED1E1E9DAD203A7 -:10A49800E9DBD2E1E9D8D303E9D9D3E199147958B2 -:10A4A800EDB80005CFD1D822D4213007405E2F8BDC -:10A4B800EFD8D021EFD9D104EFDAD204EFDED306FA -:10A4C800F80B0927D822F5E910192F8BF3E8102883 -:10A4D800F80B0329F3D8D043F80B09295EFC2F8B1E -:10A4E800F80B0328A1A8F80B09285EFC7958EDB8E9 -:10A4F8000000CFD15EFC7808F1DBD00299085EFC41 -:10A50800EC5BBB9FE08B0004304BC138E068C6BFF2 -:10A51800EA18002D103BE08B0004305BC0A8E0680F -:10A528001200EA18007A103BF9BB0306F9BB0207D0 -:10A5380078A8F1DBD00399A878A8F1DAD10399A813 -:10A548007808A3A899087958EDB80007CFD17808FA -:10A558003019F1D9D00299085EFC7808EDB80004EA -:10A56800CFD07808A1A899087808EDB80004CFD012 -:10A578005EFC301899485EFC7808EDB80004CFD02E -:10A58800992B7808EDB80004CFD05EFCD42130F8C0 -:10A5980014951697F00A18005FBA30181896F00B41 -:10A5A80018005FB9F5E91009C020D82AF00B180087 -:10A5B800C0A1FE7C0C00F01F0015300BFE7C0C00C7 -:10A5C800F01F00136C08EDB80004CFD0A377B1A733 -:10A5D800EFE510878D076C08EDB80004CFD06C0844 -:10A5E800E2180010CFD18D186C08EDB80004CFD058 -:10A5F8006C08EDB80004CFD03FF88D286C08EDB892 -:10A608000004CFD0DA2A00008000A4548000A4609F -:10A618003038F00A18005FB93078F00B18005F88FE -:10A62800F3E81008C1913108F00B1800E08B001511 -:10A63800E06800809908208BF4081601F5DAC0015B -:10A64800F1EB104B580AF9BA0100F9BA0002F7EA1F -:10A65800100A99CA5EFD302C5EFCD4013019189896 -:10A66800F73B000DF20B1800E0880004302CD802EC -:10A67800300AE06900809909301E7019149CF3DED5 -:10A68800D001F3DBD081F3DAD0E130FAF3DAD20487 -:10A698009119D802D4013018F00B18005FBEF00AE7 -:10A6A80018005FB81C48C030302CD8027818F1DB8D -:10A6B800D021F1DAD041F1D9D3089918D80A7819FC -:10A6C8001898EA19000F9919781CE21C0004C100B7 -:10A6D80030E9F20B1800E08B001A7019B16B300CDE -:10A6E800EA1BFFF0E81BFFFF126B911B5EFC303981 -:10A6F800F20B1800E08B000B70192F0B301AF40BBB -:10A70800094B5CDB126B911B5EFC302C5EFCE06835 -:10A718002710C0585808C0215EFF20187849EDB9A5 -:10A728000009CF917818EA18000F9918FC18010051 -:10A7380099085EFDD4313036F737000CEC07180065 -:10A74800E08B0050F733000B301EFC031800E08B41 -:10A758000049F73800083079F2081800E08800420C -:10A768003109F2081800E08B003D7619F205160150 -:10A77800F4050005EA090D04E8C90001E04900FEF6 -:10A78800E08B0030F0CA00080E923008EC1200018D -:10A79800A197F1D7D001F1D2D021F1D3D061F1DA6C -:10A7A800D084F73A0009F1D4D1081789F1DAD20830 -:10A7B800F73A000AF1DAD308FC091800C0C0C093C0 -:10A7C800302AF4091800C090EC091800C0A1C0781C -:10A7D80099C8C06899D8C04899E8C02899F8D83A63 -:10A7E800302CD832301899085EFC784CF9DCC0213E -:10A7F8005EFCE0682710C0585808C0215EFF20188A -:10A808007849EDB90001CF915C7B993B5EFDE0682A -:10A818002710C0585808C0215EFF20187849E2194F -:10A828000201E0490201CF717828300CB6085EFCBD -:10A8380076095829E08800035EFE7618A769109B00 -:10A84800E61BC000120CF3D8C003AFB91649109B21 -:10A85800E61B30001649109BE61B0C001649109B9E -:10A86800E61B03001649109BE61B00C01649109B07 -:10A87800E61B00301649109BE61B000C1649109B7E -:10A88800E61B00031649109BE21B60001649109B4B -:10A89800E21B10001649109BE21B0C001649109B86 -:10A8A800E21B03002FCC1649109BE21B0080109A74 -:10A8B8001649E21A0008109BE2180030E21B00401B -:10A8C8001649F3E81008144899085EFDF6081506BD -:10A8D800582BF9BC0BFFF9D8E80CF9B80805F9F8BA -:10A8E8008A00F9BC08005EFC582BE08800035EFE75 -:10A8F800F6081506F80800082FC87008EDB8000F0C -:10A90800C0C1A76BF3DAC010160C2ECC7808E0187B -:10A918000000F3E810089908F9DAC0105EFC582B1B -:10A92800E08800035EFEA76B160C7818EDB8000FE0 -:10A93800C0A12E4CF3DAC0107808E0180000F3E844 -:10A9480010089908F9DAC0105EFCD401F60E150457 -:10A958001C3AF9BE0210F9BE0308FC0B024BF608BC -:10A968001601F00A003AF40B0D0AF4091603F2C8AE -:10A978000001E048FFFEE0880003DA0A7818E86B77 -:10A988000000E418FFF7E018FECF590EF60E171076 -:10A99800F9BE0000FDE810089918F5DAC003F3EADB -:10A9A80011099989D80A7858EDB80001C030302CBF -:10A9B8005EFCF7DBC009997B5EFD7858E21800E081 -:10A9C800C030304C5EFC7859EDB90000F9BC010389 -:10A9D800F9F90006F00C1700E06A01FFF3DAE02845 -:10A9E800F7F80A005EFCE1B80000EE180001F1D8A3 -:10A9F800C201C020D3033FF9993978595808C020BB -:10AA0800D50330089918999899A8EA68610C9908AB -:10AA18005EFCD703D421201D500A16961897F01F04 -:10AA2800002F400A5806C5500DC83049F2081800D2 -:10AA3800E08800503095EA081800E08B004B0DD9EB -:10AA48003078F0091800E08B00458C39E068010186 -:10AA5800F0091900E08B003EED3900083038F009A4 -:10AA68001800E08B00376C0B0E9CF01F001D581C63 -:10AA7800C3000DC8EA081800C0416E18B1B8C05824 -:10AA880020586E19F3E810688F186E19ED3A00080F -:10AA98000DD8A978F1EA10E812488F18302A8C38B6 -:10AAA800F3D8C010F4081900E08800086E18ADB893 -:10AAB8008F1820298FA9C0586E18F1E910C98F196D -:10AAC8006E18E018FFF08F18300C35088F08C02872 -:10AAD800301C2FFDD82200008000A9EE8000A9526A -:10AAE8004828910C5EFC0000000018E8D431189842 -:10AAF800783E580EC620F90600105806C5E0300901 -:10AB08003FF3129A3344C1780E91E8071800C0A1A8 -:10AB1800F2CAFFFEF4C9FFFF5C7A5C89FC0A070AE7 -:10AB2800C0A8F6071800C4A05C75FC050709E4096D -:10AB380000095C89EC091900C0F2F2C5FFFFF9D9D8 -:10AB4800C0105C85FC0C000CEAC2FFFF19870E914F -:10AB5800E6071800CDA1580AC3003019F20A1800F8 -:10AB6800C0617028E06900802948C0C87028302971 -:10AB7800F20A1800C0412D483409C0482D48E06940 -:10AB880000C0300C3FF7C0D8F60A1800C1705C7ED0 -:10AB9800F00E070CEC0C000C5C8CF20C1900C0D207 -:10ABA800F8CEFFFF5C7C5C8EF00C000CFCC6FFFF4F -:10ABB800198AEE0A1800CE91300CD832D401F9085F -:10ABC800001CF3D8C010F2CEFFFE140EE04E004475 -:10ABD800E088000F48F8201D1AD8E06804E31AD866 -:10ABE80048D848EC1AD8F01F000E2FCDC008786E50 -:10ABF800FC090009F36B00F02FF8786BF3D8C0104C -:10AC0800F6090009F36A00F02FF8F958001CD80279 -:10AC180080039DC480039E0880039D9C800094C48B -:10AC2800D4013439F908001CF2081900E088000F33 -:10AC380048C8201D1AD8E06804EE1AD848A848BCAD -:10AC48001AD8F01F000B2FCDC008786AF3D8C010AF -:10AC5800F4090009F36B00F02FF8F958001CD8022A -:10AC680080039DC480039E5080039D9C800094C4F3 -:10AC7800D401580CC0E14B18201D1AD8E068062BE7 -:10AC88001AD84AF84AFC1AD8F01F002F2FCDC0084E -:10AC9800786A580AC0E14A98201D1AD8E068062C3C -:10ACA8001AD84AA84A7C1AD8F01F00272FCDC00806 -:10ACB800F908001C3439F2081900E088000F49F837 -:10ACC800201D1AD8E068062D1AD84A1849DC1AD867 -:10ACD800F01F001D2FCDC008F7D8C010160A3FFB83 -:10ACE800F56B00F02FF8129B5C88300AF958001CAD -:10ACF800C1584928201D1AD8E06806321AD8494890 -:10AD0800490C1AD8F01F00102FCDC008F1DEB01082 -:10AD1800786EFC090009F36A00F0F0CEFFFFF3D863 -:10AD2800C010F6081900FE98FFF3F958001CF3D973 -:10AD3800C002CE01D802000080039DC480039E8C0F -:10AD480080039D9C800094C480039EB080039EDC99 -:10AD5800D401F908001CF3D8C010F2CAFFFEE04A7B -:10AD68000044E088000F4918201D1AD8E06804F54F -:10AD78001AD848F848FC1AD8F01F000F2FCDC00881 -:10AD8800786AF4090009F5DBC108F36A00F02FF8C6 -:10AD9800786AF3D8C010F4090009F36B00F02FF8B3 -:10ADA800F958001CD802000080039DC480039F1C32 -:10ADB80080039D9C800094C4D401F908001CF3D83A -:10ADC800C010F2CAFFFCE04A0044E088000F49B80E -:10ADD800201D1AD8E06804FD1AD84998499C1AD849 -:10ADE800F01F00192FCDC008786AF4090009F60A87 -:10ADF8001618F36A00F0786A2FF8F3D8C010F4092F -:10AE08000009F5DBC208F36A00F0786A2FF8F3D876 -:10AE1800C010F4090009F5DBC108F36A00F02FF847 -:10AE2800786AF3D8C010F4090009F36B00F02FF822 -:10AE3800F958001CD802000080039DC480039F605D -:10AE480080039D9C800094C4D421F9380035A3D890 -:10AE5800F9680035189678A75807C2406E1C580C38 -:10AE6800C050F01F001130088F186E285808C09184 -:10AE78006E355805C061EF090010EA091900C0E0F5 -:10AE880048A8201D1AD8E06804C51AD84888489CE4 -:10AE98001AD8F01F00092FCDC0080E9CF01F00071C -:10AEA8008DA5D8228001122880039DC480039FA00D -:10AEB80080039D9C800094C48002E28CD421189762 -:10AEC800782C580CC050F01F000830088F286E3CB2 -:10AED800580CC070F01F00043008EF5800108F386D -:10AEE800D82200008002E28CD4211896580CC0E1C8 -:10AEF8004AE8201D1AD8E06805D11AD84AC84ADCA1 -:10AF08001AD8F01F002D2FCDC00878A75807C0E128 -:10AF18004A68201D1AD8E06805D31AD84A784A5CCE -:10AF28001AD8F01F00252FCDC0086E585808C0E069 -:10AF380049E8201D1AD8E06805D41AD84A0849DC1F -:10AF48001AD8F01F001D2FCDC0086E655805C0E047 -:10AF58004968201D1AD8E06805D51AD84998495C6F -:10AF68001AD8F01F00152FCDC0080A9AE06B0134DB -:10AF78000A9CF01F00158F5CC041E06C00FFD822CE -:10AF88009859E0680133F0091900E08B00214878EE -:10AF9800201D1AD8E06805DD1AD848C8485C1AD8B8 -:10AFA800F01F00052FCDC00880039DC480039FB407 -:10AFB80080039D9C800094C480039FD880039FFCDD -:10AFC8008003A0288000D3188003A054EF38001312 -:10AFD800EA081800C0514D3870092FF991097818FE -:10AFE800301B8F684CF9720A8F0AB09BB08B306B9C -:10AFF800B0ABF40B1618B0CBF7DAC2083009B0FAC8 -:10B00800B0DBF5DAC108305BB0B9F1690008F16965 -:10B018000009F169000AF169000BF169000CF16996 -:10B02800000DF169000EF169000FB0EAEF3A001265 -:10B03800F60A18005F0C30ABF60A18005F0BF9EB44 -:10B04800100BF20B1800C0513049F20A1800C0D199 -:10B058000DC9F169000C0DD9F169000D0DE9F1690F -:10B06800000E0DF9F169000F3009ECCAFFD1F16942 -:10B078000010F1690011F1690012F1690013F1691A -:10B088000014F1690015F1690016F1690017F169FA -:10B098000018F1690019F169001AF169001BF0CB79 -:10B0A800FFE4ED35002E3106EA091900F9BC02006B -:10B0B800F5FC380016CC2FF92FFA5C89EC09190039 -:10B0C800CF413009F0CAFFD4129C340B14CC2FF9AD -:10B0D8005C89F6091900CFB13009F0CAFF94129CB7 -:10B0E800E06B008014CC2FF95C89F6091900CFB108 -:10B0F8003639F16900EFF16900EC3829F16900EDA2 -:10B108003539F16900EE344A3009F0C8FF10EF59BB -:10B11800001C10C92FF95C89F4091900CFB1D82A8D -:10B12800000001F0D421580CC0E14A28201D1AD88B -:10B13800E06806141AD84A084A0C1AD8F01F0020EA -:10B148002FCDC00878A75807C0E149A8201D1AD8F4 -:10B15800E06806161AD849B8498C1AD8F01F0018A2 -:10B168002FCDC0086E5C580CC0E14928201D1AD8A4 -:10B17800E06806171AD84948490C1AD8F01F001079 -:10B188002FCDC0086E685808C0E148A8201D1AD8FD -:10B19800E06806181AD848D8488C1AD8F01F000852 -:10B1A8002FCDC008F01F000A30088F688F58D822AA -:10B1B80080039DC48003A09880039D9C800094C454 -:10B1C8008003A0BC8003A0E08003A10C8000D13CD8 -:10B1D800D42130D878A7EF390012F0091800EFF819 -:10B1E8001E12F9B80100EFF81E13300818968FE800 -:10B1F8008F988FB88FA88FD88FC8EF48004CEF482A -:10B208000048EF480044F01F0029EBDCC008C201E9 -:10B21800301A335B0E9CF01F0026307B0E9CF01F0B -:10B2280000250E9CF01F00246E5CEF0B001CF6CB73 -:10B23800FF105C7BF01F00210C983439EECAFFDC4C -:10B248006E5B6E1CF01F001E0C9CF01F001EEF387A -:10B2580000132FF85C58EF6800133099F2081800B3 -:10B26800E0880005E0692710C058E06903E8F009A4 -:10B2780002495C79E06801F4F2C9FE0DF2080C0895 -:10B288000C9CEF58001EF01F00100C9C48FBF01F90 -:10B2980000100C9C48DBF01F000F0C9C48BBF01FF3 -:10B2A800000E0A9CD82200008000AEF08000ABC4DB -:10B2B8008000AC288000AC788000D2108001139008 -:10B2C8008000B12C8000CABC8003B4098000CBC8C0 -:10B2D8008000CA748000CA92D421305878A7EF3908 -:10B2E8000012F0091800EFF81E12F9B80100EFF883 -:10B2F8001E131896F01F0026EBDCC008C2A1301AF6 -:10B30800335B0E9CF01F0023303B0E9CF01F002285 -:10B31800302A339B0E9CF01F001FED1B002C0E9C47 -:10B32800F01F001E0E9CF01F001E6E5CEF0B001C31 -:10B33800F6CBFF105C7BF01F001B0C983439EECA6B -:10B34800FFDC6E5B6E1CF01F00180C9CF01F0017D2 -:10B35800EF3800132FF85C58EF6800133099F208A3 -:10B368001800E0880005E0694E20C058E06907D061 -:10B37800F00902495C790A9CF2C9FE0DE06801F403 -:10B38800F2080C08EF58001ED82200008000AEF02A -:10B398008000ABC48000AC288000AD588000AC7839 -:10B3A8008000D210800113908000B12CD42118960F -:10B3B800580CC0E14AF8201D1AD8E06802F51AD8DE -:10B3C8004AD84AEC1AD8F01F002E2FCDC00878A70B -:10B3D8005807C4E0EF3900123088F0091800C4811A -:10B3E80017B8178A1799B169F3EA118917AAF3EA06 -:10B3F8001089F1E910096EA81039C3A130C8EF68A7 -:10B4080000123008EF680013F01F001E5C5CC28158 -:10B41800301A335B0E9CF01F001C304B0E9CF01F43 -:10B42800001B304A332B0E9CF01F00176EAB0E9C8E -:10B43800F01F00170E9CF01F00176E5CEF0B001C2E -:10B44800F6CBFF105C7BF01F00140C983439493A96 -:10B458006E5B6E1CF01F00120C9CF01F0012EF3880 -:10B4680000132FF8EF6800133148EF58001ED82258 -:10B4780080039DC48003A13880039D9C800094C4F0 -:10B488008000AEF08000ABC48000AC288000ADC066 -:10B498008000AC788000D2108003B405800113903E -:10B4A8008000B12CD421303878A7EF390012F00988 -:10B4B8001800EFF81E12F9B80100EFF81E131896DD -:10B4C800F01F002AEBDCC008C321301A335B0E9C46 -:10B4D800F01F0027303B0E9CF01F0026302A339BBC -:10B4E8000E9CF01F0023E06B02400E9CF01F002210 -:10B4F800304A332B0E9CF01F001E6EAB0E9CF01FC3 -:10B50800001F0E9CF01F001E6E5CEF0B001CF6CB9C -:10B51800FF105C7BF01F001B0C98343949AA6E5B46 -:10B528006E1CF01F001A0C9CF01F0019EF38001356 -:10B538002FF85C58EF6800133099F2081800E0887B -:10B548000005E0692710C058E06903E8F0090249DE -:10B558005C790A9CF2C9FE0DE06801F4F2080C0857 -:10B56800EF58001ED82200008000AEF08000ABC467 -:10B578008000AC288000AD588000ADC08000AC7859 -:10B588008000D2108003B405800113908000B12C94 -:10B59800D4214BD811B9118B119A11A8B16AF5EBC6 -:10B5A800118AF5E81088F3E8100878A78FA8EF3912 -:10B5B80000123068F0091800EFF81E12F9B80100FF -:10B5C800EFF81E131896F01F0031EBDCC008C3E13A -:10B5D800301A335B0E9CF01F002E301B0E9CF01FA0 -:10B5E800002D302A339B0E9CF01F0029ED1B002CE8 -:10B5F8000E9CF01F0029304A337B0E9CF01F00245C -:10B60800301B0E9CF01F0023303B0E9CF01F0021C6 -:10B6180031CB0E9CF01F001F306B0E9CF01F001DDD -:10B628000E9CF01F001E6E5CEF0B001CF6CBFF108B -:10B638005C7BF01F001B0C98343949AA6E5B6E1CAA -:10B64800F01F00190C9CF01F0019EF3800132FF899 -:10B658005C58EF6800133059F2081800E0880005BC -:10B66800FE79EA60C058E06903E8F20809495C79A4 -:10B678000A9CF2C9FE0DE06801F4F2080C08EF58C4 -:10B68800001ED8228003B4098000AEF08000ABC44D -:10B698008000AC288000AD588000AC788000D210C3 -:10B6A8008003B405800113908000B12CD421301898 -:10B6B80078A7EF390012F0091800EFF81E12F9B850 -:10B6C8000100EFF81E131896F01F0039EBDCC008D4 -:10B6D800C501301A335B0E9CF01F0036303B0E9CC0 -:10B6E800F01F0035302A339B0E9CF01F0032ED1BF3 -:10B6F800002C0E9CF01F0031304A332B0E9CF01F9B -:10B70800002D6EAB0E9CF01F002E304A336B0E9C42 -:10B71800F01F00286E9B0E9CF01F0029304A337BD7 -:10B728000E9CF01F0024301B0E9CF01F0023303BA2 -:10B738000E9CF01F002131CB0E9CF01F001F306BB8 -:10B748000E9CF01F001D0E9CF01F001E6E5CEF0B80 -:10B75800001CF6CBFF105C7BF01F001B0C983439E3 -:10B7680049AA6E5B6E1CF01F001A0C9CF01F001992 -:10B77800EF3800132FF85C58EF6800133059F208BF -:10B788001800E0880005FE79EA60C058E06903E81F -:10B79800F20809495C790A9CF2C9FE0DE06801F4D7 -:10B7A800F2080C08EF58001ED82200008000AEF006 -:10B7B8008000ABC48000AC288000AD588000ADC0CC -:10B7C8008000AC788000D2108003B405800113900B -:10B7D8008000B12CD421304878A7EF390012F00945 -:10B7E8001800EFF81E12F9B80100EFF81E131896AA -:10B7F800F01F0025EBDCC008C291301A335B0E9CA9 -:10B80800F01F0022303B0E9CF01F0021302A339B92 -:10B818000E9CF01F001EED1B002C0E9CF01F001D3F -:10B828000E9CF01F001D6E5CEF0B001CF6CBFF108A -:10B838005C7BF01F001A0C983439499A6E5B6E1CB9 -:10B84800F01F00180C9CF01F0018EF3800132FF899 -:10B858005C58EF6800133099F2081800E08800057A -:10B86800E0692710C058E06903E8F00902495C79EB -:10B878000A9CF2C9FE0DE06801F4F2080C08EF58C2 -:10B88800001ED8228000AEF08000ABC48000AC2837 -:10B898008000AD588000AC788000D2108003B405D9 -:10B8A800800113908000B12CD4314A5830167007AB -:10B8B80030A20C9330043055C3E86EA85808C3A0D2 -:10B8C800F1090022F2CA0001F15A0022EC0919001C -:10B8D800C151F1380012E40818005F0AE6081800A0 -:10B8E8005F09F5E91009E8091800C041EA081800DD -:10B8F800C2110E9CF01F0013C1D8F1090020F2CA32 -:10B908000001F15A0020EC091900C141F138001278 -:10B91800E40818005F0AE60818005F09F5E910094D -:10B92800E8091800C041EA081800C0410E9CF01F41 -:10B9380000066E075807CC21D8320000000080CCE2 -:10B948008000B7DC8000B2E0D4211896580CC0E122 -:10B958004C08201D1AD8E068024E1AD84BE84BFC58 -:10B968001AD8F01F003F2FCDC008F9380035A3D8EA -:10B97800F968003578A7F909002CE068023FF0095A -:10B988001900E088008B5807C091350CF01F00356E -:10B998001897E08000838DACC2E86E1C580CC0304C -:10B9A800F01F00316E585808C0E04AA8201D1AD868 -:10B9B800E068026C1AD84AD84A8C1AD8F01F0028B6 -:10B9C8002FCDC0086E285808C0916E385808C0613D -:10B9D800EF090010F0091900C0E049E8201D1AD845 -:10B9E800E068026E1AD84A2849CC1AD8F01F001C01 -:10B9F8002FCDC008350A300B0E9CF01F001EF01F1B -:10BA0800001E8F1C1895C0610E9CF01F001C8DA590 -:10BA1800C178344A49ABF01F001B499B343A6E1C6D -:10BA2800F01F00190C9A499B6E1CF01F00190C9C02 -:10BA3800F01F00185C5CC0700C9CF01F0017E06CD5 -:10BA480000FFD822ED380035A3B8ED680035D822BC -:10BA580080039DC48003A13880039D9C800094C40A -:10BA68008002E2A4800112288003A14880039FA0DD -:10BA78008002E8BC800112008002E28C8003B409D5 -:10BA880080011260800113208000BBBC800111F886 -:10BA98008000B5988000AE50E06C00FFD82200000E -:10BAA800D421202D1896580CC0E14BA8201D1AD877 -:10BAB800E06803781AD84B884B8C1AD8F01F0038E6 -:10BAC8002FCDC00878A75807C0E14B28201D1AD8E9 -:10BAD800E068037A1AD84B384B0C1AD8F01F00309C -:10BAE8002FCDC0086F295BF9C1102E2933C8E06A31 -:10BAF800FFFFF2080D081438F40817B0EF580020BB -:10BB08005808F9B80001EFF80C106F395BF9C1104B -:10BB18002E2933C8E06AFFFFF2080D081438F4082C -:10BB280017B0EF5800225808F9B80001EFF80C11C7 -:10BB38006EB850185808C041FC18FF0050186EC85D -:10BB480050085808C0716EA84019F3E80008A1A869 -:10BB58005008EECBFFD80C9CF01F0013FACBFFFC6B -:10BB68000C9CF01F00121A9B0C9CF01F00110C9CDF -:10BB7800F01F0010EF39001230A8F0091800EFF894 -:10BB88001E12F9B80100EFF81E132FEDD82200009D -:10BB980080039DC48003A16080039D9C800094C4A1 -:10BBA8008003A17C8000CBC88000CA928000CA7440 -:10BBB8008000CB88D43178A71896149574186E290C -:10BBC8005809C0916E395809C061EF0B0010F20B8B -:10BBD8001900C0E04BE8201D1AD8E06805651AD89E -:10BBE8004BC84BDC1AD8F01F003D2FCDC0088A5B2C -:10BBF80032BAF40B1900E088020F118B302AF40BCB -:10BC08001800E0810209F93C002EECCBFFD1F0CA04 -:10BC1800FFE4C0982FF917345C59153EFC0418004E -:10BC2800E08101FAF8091800CF6311FA11CB11D994 -:10BC380011E8B169F3EB1189F3E810896E08F5E9A9 -:10BC480010091039E08101E80E9CF01F00258A4C8C -:10BC5800E06800F0F00C1900E088000FF8CC00F064 -:10BC6800EF5C00105C7CF01F001F8F3CC051EF5C44 -:10BC78000010E08F01D1E06C00F0F01F001A8F2C4B -:10BC88001894C0C16E3C580CE08001C6F01F001625 -:10BC9800EF5400108F34E08F01BF189B3009E06A21 -:10BCA80000F00A9CF01F0011E06800F0F00C190089 -:10BCB800C2004878201D1AD8E068052E1AD848C84E -:10BCC800485C1AD8F01F00052FCDC00880039DC41A -:10BCD80080039FA080039D9C800094C48000AEC414 -:10BCE8008002E2A48002E28C8000CEC48003A1948A -:10BCF8006E3B580BE08001B2E06900F0EF1A0010CB -:10BD08000A9CF01F0036EF080010F8081900E080C0 -:10BD180001A54B38201D1AD8E06805351AD84B18EC -:10BD28004B1C1AD8F01F00312FCDC00819A8305A63 -:10BD3800F4081800E0810100EF3800123019F20809 -:10BD48001800E08100EC30086CA4333B89D889B82E -:10BD580089C8089CF01F0026C0F0F8C8FFFC19AB82 -:10BD6800119919BA1188B16AF5EB118AF5E81088AA -:10BD78001248E948004433AB089CF01F001DC0E09E -:10BD8800F8C8FFFC19AB119919BA1188B16AF5EB1B -:10BD9800118AF5E810881248C0386918A198E9484E -:10BDA800004833BB089CF01F0012C0E0F8C8FFFC35 -:10BDB80019AB119919BA1188B16AF5EB118AF5E82E -:10BDC80010881248C0286918E948004C6828F0C94A -:10BDD800FFF0C0F11298C1C88000CEC480039DC492 -:10BDE8008003A1C880039D9C800094C48000AAF4AD -:10BDF800F1390013F13B0010F13A0011F13800124B -:10BE0800B16AF5EB118AF5E81088F3E8100889A8FB -:10BE1800301B089CF01F0084C0E0F8C8FFFC19AB79 -:10BE2800119919BA1188B16AF5EB118AF5E81088E9 -:10BE3800124889B8303B089CF01F007BC0E0F8C866 -:10BE4800FFFC19AB119919BA1188B16AF5EB118A7F -:10BE5800F5E81088124889C831CB089CF01F007299 -:10BE6800C0E0F8C8FFFC19AB119919BA1188B16A7A -:10BE7800F5EB118AF5E81088124889D8306B089CD0 -:10BE8800F01F00691892C2E01998A38889E8582819 -:10BE9800F9B80B02E9F8BA0E3003C1D8E608150262 -:10BEA800E6C9FFF22FE8E8090029E4080008113E76 -:10BEB800113AB16AF5EE118A118EF5EE108A1191D8 -:10BEC800069CF5E11001F2CBFFFC93112FF3F01F54 -:10BED80000575C5368E81033CE23069C4D4BF01F87 -:10BEE80000536CA43008E93A00123089EF58001E5C -:10BEF800F20A1800E9F91E12E9F81E130C9C300A20 -:10BF0800E8CBFFD8F01F004BE93800132FF8E96899 -:10BF180000133018E958001EC7E820383029F20805 -:10BF28001800E08B007930080C9CEF58001EF01FB9 -:10BF38000042C7183069F2081800C3513019EF38A9 -:10BF48000012F20818005F0B3039F20818005F0978 -:10BF5800F7E91009C0813049F2081800C040F40818 -:10BF68001800C5916CA40C9C3003EF53001EF01F01 -:10BF780000330C9C4AEBF01F00320C9C4ACBF01F9C -:10BF880000310C9C4AABF01F0030E939001230C870 -:10BF98000C9CF0091800E9F31E13E9F81E12F01FB3 -:10BFA800002BC398302AF4081800C351EF38001248 -:10BFB800F2081800C30130086CA4EF58001E336B58 -:10BFC800089CF01F0019C270F8C8FFFC19AB119942 -:10BFD80019BA1188B16AF5EB118AF5E81088124888 -:10BFE80089986828F0C9FFF0C0311298C108F13962 -:10BFF8000013F13B0010F13A0011F1380012B16A58 -:10C00800F5EB118AF5E81088F3E8100889A80C9C6C -:10C01800F01F000F0E9CF01F000F0A9CF01F000E6F -:10C02800D83200008000AAF48000C19C8003B409C3 -:10C038008001384C8000BAA88000CABC8000CBC8F8 -:10C048008000CA748000CA928000B5988000B6B497 -:10C058008000AEC48000D13C335B0E9CF01F00030F -:10C06800FE91FE66CD8B00008000AAF4D4314C18F6 -:10C07800301370073002069430813050C7686EA6BE -:10C088005806C720ED05001EE6051900E0880006E1 -:10C098002015ED55001EC688E6051900C651ED3875 -:10C0A8000012306AED52001EF40818005F0A30C909 -:10C0B800F20818005F09F5E91009300AF4091800B8 -:10C0C800C501E8081800C0B1ED380013E0081800F1 -:10C0D800E08B00360E9CF01F0028C468E2081800A8 -:10C0E800C191ED380013E8081800E08B0010300A01 -:10C0F800ECCBFFD80E9CF01F0021ED380013ED5556 -:10C10800001E2FF8ED680013C2F80E9CF01F001CEB -:10C11800C2B8E0081800C0510E9CF01F001AC248AF -:10C128003049F2081800C0F1ED380013E208180091 -:10C13800E08B00060E9CF01F0014C1680E9CF01FD7 -:10C148000013C0F83039F2081800C0E1ED380013C8 -:10C15800E8081800E08B00060E9CF01F000DC04890 -:10C168000E9CF01F000C6E075807C8A1D8320000BB -:10C17800000080CC8000B6B48001384C8000BAA89A -:10C188008000B2E08000B7DC8000B1D88000B4AC99 -:10C198008000B598D4013019F20C1800E08B001D0E -:10C1A800580B5F1A48D9720958095F19F5E900094F -:10C1B800C13017B9178E179A17A8B16AF5EE118A08 -:10C1C800F5E81088F3E81008C0704858304AF00CB9 -:10C1D800002CF01F0004D80200001D5800001D505C -:10C1E8008002E736D42130181897F00B1800E08B3E -:10C1F80000074868304AF00B002BC038304A484BDB -:10C20800F01F00040E9CD82200001D508003B409C2 -:10C218008002E736D4313013189516911492E60C43 -:10C228001800E088000F4BB8201D1AD8E0680246B5 -:10C238001AD84B984B9C1AD8F01F00392FCDC0083C -:10C248004B89F20C0028F20C072B11BA119911A88E -:10C25800B169F3EB1189F3E81088F5E81008C0E13B -:10C268004AC8201D1AD8E06802471AD84AE84ABCCA -:10C278001AD8F01F002B2FCDC008300AE06B011030 -:10C28800149CF01F002A1897C041E06600FFC758A9 -:10C2980078045804C0E049F8201D1AD8E068024D17 -:10C2A8001AD84A3849DC1AD8F01F001D2FCDC0080B -:10C2B800781630CA089B0C9CF01F001EECC9FFF4CE -:10C2C800AC92ACD3E5D2C110ACA3ACC42011AC8203 -:10C2D80032EC2FF1F2C8FFFF300AC05810CBF5D26C -:10C2E800C0082FF1038BF4C2FFFFE80B18005F139F -:10C2F800F80B18005F16E7E60006E8061800CEF10E -:10C30800B28A0389E8091800C1601099CE3B000081 -:10C318008003A1E48003A22880039D9C800094C42C -:10C3280000001D508003A2408000D3188003A2643F -:10C338008002E8BCF0CBFFFB10C9B089B0A9301966 -:10C34800B099B0B96E180E9C101B5C7BF01F000CE6 -:10C3580048C848D6F0050025335A6C0C0A9BF01FD4 -:10C36800000B6C0C0A9A33590E9BF01F0009EDDC88 -:10C37800C0080E9CF01F00070C9CD8328000D21019 -:10C3880000001D5000001D5880011320800114F08A -:10C398008000D13CD421189A303CF80A1800E08873 -:10C3A800000F4BE8201D1AD8E068028A1AD84BC83B -:10C3B8004BCC1AD8F01F003C2FCDC0084BB8E06713 -:10C3C8000118F4070247F007000730180F8B169979 -:10C3D800F00B1800C0A0C603302BF6091800C0F0F7 -:10C3E800F8091800C4C1C4383008AEABAEB8AE986E -:10C3F800EECBFFF43028300CAE88C3680FA92019A3 -:10C408005C59AEA9C4910FBB2FFB5C5BAEBB0F9C04 -:10C41800304EFC0B1800C251F20C1800C1214A4AD8 -:10C4280015FB15CE15DC15EAB16CF9EE118CF9EA9D -:10C43800108AF7EA100AC050AEB9AEA8AE98D82252 -:10C44800EEF801105808C070EEFA0114300BEECC6B -:10C45800FFF45D183008AE883008EF480110D82284 -:10C46800AEABEECBFFF4F01F0013D8226E282018D5 -:10C478008F28C121EF480110AE88D8224878201DA6 -:10C488001AD8E06802C61AD848B8486C1AD8F01FFB -:10C4980000062FCDC008D8228003A1E48003A28023 -:10C4A80080039D9C800094C4000018F000001D507B -:10C4B8008000C21C8003A29CD431580B5F081292E2 -:10C4C80016974BB914967209189558095F04F1E448 -:10C4D8001004E08100B6580CE08000B31989E8091F -:10C4E8001800E08000AEF01F0033E04C00FFE08B46 -:10C4F80000A84B1B0A9CF01F0031C08137F8AEA47E -:10C50800AE88AE9C3018AEB8D8320A9CF01F002C0A -:10C51800F8081618AE88F1DCC208AEBCAE98F1DC9B -:10C52800C108AEA85BFCE081008F4A63300430305C -:10C5380006910788E0081800C171E80400280A9CE1 -:10C54800F00B1503101B2FFBE20B003B2FCBF01F4A -:10C55800001BC0A1E0680118B13449A8F004000428 -:10C56800E8F8010CC0782FF4E6C3FEE85844CE2161 -:10C578003FF8F0091618AE89F3D8C208AEB8AE99DC -:10C58800F3D8C108AEA95BF8C5E1300748E848DB35 -:10C59800118A0E9C0E9930313043F2C0FFFF178488 -:10C5A80016985804C1211297C358000000001D585E -:10C5B8008002EDD08003A2BC8002ECC880011E106E -:10C5C800000018F0000018ECE2041800C0C117C8F9 -:10C5D800F4080104F40801081838E08A0005F9D4C1 -:10C5E800C0081297F3D0C008F6CBFEE8E609180099 -:10C5F800CD513039F2071800E08B0027494BE0682D -:10C608000118EE080248F6080008118BF20B180012 -:10C61800C1B1F4C9FFFFB0CAF1460110301AF142A6 -:10C628000114B08AF0CCFFF448A80A9BB089F01F27 -:10C63800000A0E9CF01F0009E06C00F2D832E06C92 -:10C6480000F7D832D83AE06C00FFD832000018F072 -:10C65800000018EC8002ED708000C39CD40148985B -:10C6680070085808C0D0300CF01F0007301CF01FAD -:10C678000006302CF01F0004303CF01F0003D802E5 -:10C6880000001D588000C39CD421494C4946F01F26 -:10C6980000156C0518975805C1E1F01F00138D0CA3 -:10C6A800C1A0492B0A9AF01F00120A9A491B6C0C68 -:10C6B800F01F00116C085808C0E05807C0C0EE0908 -:10C6C800161848E8B0B7B089F3D7C208EFD7C10841 -:10C6D800B099B0A7D82200008003A2C800001D5856 -:10C6E80080011E10800112008003B40980011260CD -:10C6F8008000C704800111F800001D50D431E068A3 -:10C7080002001496944AF00A1900E08B00E331986D -:10C71800F00A1900E08800DE4DF75C7A30090E9BBC -:10C728000C9CF01F005E8C48F8081900E08100D2CC -:10C738000F993038F0091800E08B00CCE06501183B -:10C74800AB394D75120530290B8AF20A1800E081C1 -:10C7580000C1AA880FBAF5DAC004AADA0FD80FCB3D -:10C76800F1EB108B0FF80FEC5C8BF1EC108C3009AF -:10C778005C8C0FA8F2081800E084009DF20A1800EB -:10C788005F18301AF40B18005F1AF5E81008F20861 -:10C798001800E0810090EAC4FFF42F4708980F8939 -:10C7A800129AE21A00C0E04A00C0C1502FF7C098A0 -:10C7B800F3DBC0082FF7118BF40B1800C7B12FF863 -:10C7C800F2CB00010F8A5809CF41F20A1800C03095 -:10C7D8002FF8CE6B4B0B30082F4B1739129AE21AF1 -:10C7E80000C0E04A00C0C060120B1789F0091800A9 -:10C7F800CF51F1DCC0082FBB300E301A3047C58846 -:10C808001739129CE21C00C0E04C00C0C060120B3B -:10C818001789FC091800CF512FFB17CC17D9B1691C -:10C82800F3EC118917ECF7330008F3EC108917A221 -:10C8380017FC1781F9E91009F73C0009F9E3108C96 -:10C8480017B35C8CE7E2108317925C83E5E11082F2 -:10C85800F4021900C281F4031900C251EE0C190048 -:10C86800C2218B29E8593A80E0880005E8783A80A7 -:10C878008B28EAC7FEF42F6B304A0E9CF01F000984 -:10C88800EAF801105808C250EAFA01140E9B089CF5 -:10C898005D18C1F800001D5C8000CEC4000018F0CF -:10C8A8008002E7365C7C20182F6C5C58180B5808FF -:10C8B800CA81EAF801105808C070EAFA0114300B6E -:10C8C800EACCFFF45D183008AA883008EB4801105C -:10C8D8000C9CF01F0002D8328000D13CD401F01F1C -:10C8E8000003F01F0003D8028000C8F88000C6903B -:10C8F800D42149A949ABF2CCFEC4F2C8FF54300A8E -:10C90800F2C9FF50910A930AB22A172EF14EFFFC82 -:10C918002F092F081838CF71492949382FD9149C65 -:10C92800E019FFFCF0C6FFDC48D7490E910CEE0A6F -:10C938000405189BC098700493042FFB9109FC0A06 -:10C9480005045C8B0809EA0B1900CF632FC82FEA8E -:10C958000C38CED1D8220000000080D48003A2D8A1 -:10C9680000001F5C000072E88003A394D401580BF8 -:10C97800C200F1DBC002C0E048F8201D1AD8E06808 -:10C98800016B1AD848D848EC1AD8F01F000E2FCDE2 -:10C99800C00848D8F00C03299709F00C092B48B8AF -:10C9A800A56CF00C000CF8CCFF54780820189908F6 -:10C9B800D80200008003A2EC8003A33080039D9C72 -:10C9C800800094C4000072E8000080D4D421189834 -:10C9D800588CE088000F49F8201D1AD8E068013DFE -:10C9E8001AD849D849DC1AD8F01F001D2FCDC00825 -:10C9F80049CE49D9FC0C032CF0CAFFF5580CC230BB -:10CA0800A56AF00B15047807F20B000BFC08092740 -:10CA1800F6CBFF5414097608720A2FF8103AF3F887 -:10CA28003A009708F1DCC002C13048A8201D1AD886 -:10CA3800E068014F1AD848D8488C1AD8F01F000867 -:10CA48002FCDC008A56A140992282FF8B228D82239 -:10CA58008003A2EC8003A35080039D9C800094C4B3 -:10CA6800000072E8000080D48003A370580BC0C097 -:10CA780017B8178A179917ABB169F3EA1189F3EB5D -:10CA8800108BF1EB100B993B5EFC580BC0C017B82C -:10CA9800178A179917ABB169F3EA1189F3EB108B71 -:10CAA800F1EB100B992B5EFC4828910C5EFC000002 -:10CAB800000080D0D4211897F9380035EDB800006F -:10CAC800C0D1A1C8F968003578885808C0205D1819 -:10CAD8006E785808C0300E9C5D18D822F93C003595 -:10CAE800F9DCC0015EFC580CF9FB1A075EFCD703A1 -:10CAF800D421300A18971696302C96CBF01F001ABE -:10CB08001895C041E06600FFC2B80C9BF01F0017E3 -:10CB1800EDDCC008C0500A9CF01F0015C2180A9826 -:10CB280070095809C0301298CFCB6EF95809C15016 -:10CB38006F095809C0E148F8201D1AD8E068025367 -:10CB48001AD848D848DC1AD8F01F000D2FCDC008D5 -:10CB58009305EF480040C048EF4800408FF50C9C13 -:10CB6800D82200008000D3188000CF988000D13CE4 -:10CB78008003A3A88003A44480039D9C800094C4E0 -:10CB8800D4211897F9380035EDB80000C170A1A874 -:10CB9800F968003578885808C0205D186E785808FC -:10CBA800C0300E9C5D18EF380035EDB80005C06147 -:10CBB8000E9CEECBFFFCF01F0002D8228001370C40 -:10CBC800D42117881799B169F3E8118917A8F3E8F0 -:10CBD800108917B81697F1E91009189678181039BE -:10CBE800C27049A8700CC0A8780978356C1810393B -:10CBF800C041301BF01F00160A9C580CCF614958E1 -:10CC08007008C14870095809C1006C1A1439C0D19C -:10CC18000F8A0F99B169F3EA11890FAAF3EA10890B -:10CC28000FBAF5E91009910970385808CEC10F8A72 -:10CC38000FB90F98B168F1EA11880FAAF1EA1088C4 -:10CC4800F3E810088D18D8220000820C8000E12437 -:10CC580000008214D421149712961895F01F001022 -:10CC68005807C0C00FB80F8A0F990FA7B169F3EA28 -:10CC78001189F3E71087F1E710078B275806C0C022 -:10CC88000DB80D8A0D990DA6B169F3EA1189F3E67D -:10CC98001086F1E610068B36D82200008000CBC83B -:10CCA800D4213006999899169926993699A6997695 -:10CCB800998699F6F94600404908FAC4FFEC681EBF -:10CCC8006804F96600351185F96500382FF5B085D7 -:10CCD8001897994EF01F000A0E9C5D145C5C4898EA -:10CCE800580CEC071710F1F90000EFF90A00F1F7FA -:10CCF8000A000E9CD82200000000730C8000CC5C57 -:10CD0800000080CC1898300CC0482FFC70085C5C80 -:10CD18005808CFC15EFC580CF9F81207F9B901019F -:10CD2800F1D9E108F9F81C075EFCD703D401580CC7 -:10CD38005F08580B5F09F3E81008C1304978201DD7 -:10CD48001AD8E068028F1AD84958496C1AD8F01FC7 -:10CD580000162FCDC008964AF4080008B848129C5F -:10CD6800984878095809CF819859F0091900C0E006 -:10CD780048A8201D1AD8E06802971AD848B8489CD5 -:10CD88001AD8F01F00092FCDC0089649990BF20850 -:10CD98000008B848D80200008003A4708003A4B437 -:10CDA80080039D9C800094C48003A4ECD421169732 -:10CDB800F01F00065807EFF81207F9B90101F1D979 -:10CDC800E108EFF81C07D8228000CD34D421580C94 -:10CDD800C0E14B58201D1AD8E06801B01AD84B386A -:10CDE8004B3C1AD8F01F00332FCDC008580BC03168 -:10CDF800169CD8223008F00B1900C154F60911000E -:10CE080098585C89F2081900C0F24A78201D1AD88F -:10CE1800E06801B71AD84A884A5C1AD8F01F00257A -:10CE28002FCDC0081699F93E000C300A3037F40EA1 -:10CE380019005F08EE0E19005F061497104678185F -:10CE4800F4061800C0A0F00B01099919F8CAFFF000 -:10CE58001439C2029918DA2A201E3017EE0E19006A -:10CE6800E08B000CF40B1900C1D4985AF20A19008F -:10CE7800C19316189918C0E848B8201D1AD8E06858 -:10CE880001E61AD848D848AC1AD8F01F000A2FCDA6 -:10CE9800C00898581608B8589848F00B000BB84BBB -:10CEA800D82ADA2A8003A47080039EA480039D9C5C -:10CEB800800094C48003A51C8003A53CD43116913E -:10CEC8001497580CC0E14AD8201D1AD8E068033ED0 -:10CED8001AD84AB84ABC1AD8F01F002B2FCDC00860 -:10CEE800580BC070300518960A920A930A90C388A6 -:10CEF8004A28201D1AD8E068033F1AD84A384A1C25 -:10CF08001AD8F01F00212FCDC0085809C0A08C588E -:10CF1800F208010AF0091900C043F3DAB010C1F8A9 -:10CF2800F1D9C0108C54E8090109EE091900EE097D -:10CF380017B06C1BE9D9B010F9D5C010100BE20C72 -:10CF4800000C089A5C7AF01F0012E8030003081727 -:10CF5800E80500055C835C855C8730096C0658062B -:10CF68005F1AE40719005F18F5E80008E0081800E0 -:10CF7800CCD1069CD83200008003A4708003A5B0F1 -:10CF880080039D9C800094C48003A5D08002E7366E -:10CF9800D431580C5F08580B5F0918961697F3E8B8 -:10CFA8001008C06198499648F0091900C0E24C7809 -:10CFB800201D1AD8E06802FE1AD84C584C5C1AD8C2 -:10CFC800F01F00452FCDC00830050A945806C0E16F -:10CFD8004BE8201D1AD8E06803031AD84BF84BDC3D -:10CFE8001AD8F01F003D2FCDC0088C5808995C79DD -:10CFF8008E53F5D8C010F7D3C010121AF3D5C0104D -:10D00800F6090109123AE7D5E413E8091750F1D9EE -:10D01800E51308985C786C1C100CF1D5C0105C8383 -:10D028006E1BF5D3C010100BF01F002DE604000492 -:10D038008C585C84F0041900E088000F4A38201DE1 -:10D048001AD8E068030F1AD84A684A2C1AD8F01F71 -:10D0580000222FCDC008F0041900EDF60000F9B445 -:10D068000000E60500058E585C85F0051900E0888B -:10D07800000F4968201D1AD8E06803151AD849A876 -:10D08800494C1AD8F01F00142FCDC008F00519001C -:10D09800EFF72000F9B502005807C2908E598E4864 -:10D0A800F0091900C2416E085808C2104878201DBE -:10D0B8001AD8E068031F1AD848C8486C1AD8F01F55 -:10D0C80000062FCDC00800008003A4708003A5F4DB -:10D0D80080039D9C800094C48003A6248002E736C8 -:10D0E8008003A6348003A64C8003A6685806C16056 -:10D0F8008C598C48F0091900C1116C085808C0E017 -:10D108004898201D1AD8E06803241AD84878488C13 -:10D118001AD8F01F00082FCDC0085807FE91FF58F5 -:10D128000E9CD8328003A4708003A66880039D9C5F -:10D13800800094C4D421189B580CC0E14AB8201D23 -:10D148001AD8E068021C1AD84A984AAC1AD8F01FB4 -:10D15800002A2FCDC008F939000C3038F009180022 -:10D16800E088000F4A18201D1AD8E06802281AD84B -:10D178004A284A0C1AD8F01F00202FCDC0083007C3 -:10D18800303530169679F2C800015C885809C0E13C -:10D198004968201D1AD8E06802351AD84988495CC0 -:10D1A8001AD8F01F00152FCDC008B6785808C1B19D -:10D1B800F738000C169CF0C900017604EA0819003B -:10D1C800C031308CC068EC091900E08B0006307C57 -:10D1D800F01F000CC038F01F000C2FF7089B5C579D -:10D1E8005804CD110E9CD8228003A47080039EA4FD -:10D1F80080039D9C800094C48003A6948003A6AC01 -:10D208008000C9748002E28CD421580CC0E14B988C -:10D21800201D1AD8E068015F1AD84B784B7C1AD8C1 -:10D22800F01F00372FCDC0083019F938000CF2086C -:10D2380018005F1A3039F20818005F19F5E900097B -:10D24800C1405808C1203029F2081800C0E04A98A7 -:10D25800201D1AD8E06801631AD84AA84A7C1AD84F -:10D26800F01F00272FCDC0089848F00B1900C3F213 -:10D27800F3D8C0101897F1DBB0105C7B121BC27892 -:10D28800E04BFFFEE08A000F49A8201D1AD8E0688D -:10D2980001771AD849C8499C1AD8F01F00192FCD10 -:10D2A800C0088E481608AE486E075807C0E14918EE -:10D2B800201D1AD8E068017B1AD8494848FC1AD8BA -:10D2C800F01F000F2FCDC008F1DAB0108E59F00909 -:10D2D800010AF2081900FE9BFFD5AE48AE586E0C45 -:10D2E800580CC030F01F000A30088F08D822000000 -:10D2F8008003A4708003A70080039D9C800094C4D1 -:10D308008003A7188003A7348003A7488000D13C76 -:10D31800D431202D16971495581CC0B0C083582CB2 -:10D32800C040583CC0B1C1783004C0583144C0280E -:10D3380030042EC42E445C84C0F84C08201D1AD832 -:10D34800E06800D11AD84BE84BEC1AD8F01F003E21 -:10D358002FCDC00830045825E08B00065815E08210 -:10D3680000DDCBF85835E08100E6308CF01F00373F -:10D378001896E08000F25C740E99E8C8FFFD5C79AD -:10D38800E018FFFCB847E06A02443000F4080108DE -:10D39800F8040004F0090D472ED4E014FFFCAC5744 -:10D3A8009914F965000C99005C77F8C3FDAC0E047C -:10D3B8000833C0E24A18201D1AD8E06800EB1AD8D2 -:10D3C8004A384A0C1AD8F01F00202FCDC008580838 -:10D3D800E089000F4998201D1AD8E06800ED1AD896 -:10D3E80049C8498C1AD8F01F00182FCDC008F20779 -:10D3F800010700980A9918943015E0610243B8753E -:10D40800E0620244C6A850195008308CF01F000F83 -:10D418000E9B189A5C8BF4CEFFF0F6011900F60CFF -:10D428001720E40C173040194008580AC1610C9CB9 -:10D438001496F01F0009C9088003A4708003A76030 -:10D4480080039D9C800094C48000C9D48003A77C7D -:10D458008003A7B08000D13C9508890AF569000CC3 -:10D46800F560000DE047FFFFC0E14BD8201D1AD83A -:10D47800E06801071AD84BB84BBC1AD8F01F003B1C -:10D488002FCDC008951EB45CB44BFDDEC002C0E0D1 -:10D498004B38201D1AD8E068010D1AD84B484B2C80 -:10D4A8001AD8F01F00322FCDC0085C7C8CDB18170F -:10D4B80014946C1CF80B000B1633C0E24A88201D2C -:10D4C8001AD8E06801101AD84AA84A7C1AD8F01F5E -:10D4D80000272FCDC008B4755807FE99FF96C3786A -:10D4E8000E985C782FD8E018FFFC5C74E8CCFFED50 -:10D4F800E01CFFFC100CF01F00201896C2D030086A -:10D50800F8040004AC572ED4B847E014FFFCF968BF -:10D51800000C99149908C1B8307CF01F00181896AF -:10D52800C1B03008AC57F965000CB847990899188C -:10D53800C0E848B8201D1AD8E068013D1AD8490843 -:10D54800489C1AD8F01F00092FCDC0083018AC78B5 -:10D558003008ED68000D0C9C2FEDD8328003A470C4 -:10D568008003A7E480039D9C800094C48003A7F8EF -:10D578008003A77C8002E2A48000C9D48003A82885 -:10D58800D43149B8781918951094300CF2C2FFF4C8 -:10D59800F3310009700718961893C1E8EF380010A6 -:10D5A8000238C1716E585808C1400A9A0E9B6E6CB9 -:10D5B80004995D18C0E05806C0410C95301CC0A8FD -:10D5C8006E388D3868088F388907301C3005C028B8 -:10D5D800300C0E966E37E60C18005F0858075F1976 -:10D5E800F3E80008E6081800CDA1D832000073104F -:10D5F800E06C00FB5EFCD421E067040078A8F90B1E -:10D60800002C78C9F5DBC010F90E003C100AEE0EAC -:10D618001900E0880005E06E0400C0285C7EF4096B -:10D628000107EE0E010EC076F95B002E78CCF40CE3 -:10D63800010CD822F009010A580AE08A00063008CD -:10D64800F958002ED82AF2080108F958002ED82ACD -:10D65800996B5EFCF94B008C5EFCF94B00885EFC14 -:10D66800F94B00985EFC998B5EFCF96A0039F94B1E -:10D6780000945EFC5EFC5EFC48A87008C028703808 -:10D688005808CFE148887008C02870385808CFE19A -:10D6980048687008C02870385808CFE15EFC000060 -:10D6A8000000820C0000821400008220D4014A6825 -:10D6B8007008C30870495809C0E14A48201D1AD8A3 -:10D6C800E06805AC1AD84A284A2C1AD8F01F00225C -:10D6D8002FCDC0085819C0E149C8201D1AD8E068E4 -:10D6E80005AD1AD849D849BC1AD8F01F001B2FCD50 -:10D6F800C00858A9C0E14958201D1AD8E06805AEED -:10D708001AD84978493C1AD8F01F00132FCDC00801 -:10D7180070385808CD0149387008C128704958A98F -:10D72800C0E048A8201D1AD8E06805B11AD848E812 -:10D73800488C1AD8F01F00082FCDC0087038580838 -:10D74800CEE1DA0A0000820C8003A8688003A8AC46 -:10D7580080039D9C800094C48003A8D88003A904FA -:10D76800000082208003A934D43118961497784891 -:10D778005808C0E04C48201D1AD8E068011A1AD889 -:10D788004C284C3C1AD8F01F00432FCDC008580A2B -:10D79800C3514C19720C4C19720A4C19109E9207FD -:10D7A8004C08E069100070052FF70A985C87EE0EA8 -:10D7B8001900F2071790C088F104001C0E93EE04BC -:10D7C8001900CF3070385808CF811898C088F104F4 -:10D7D800001C0E93EE041900CE8070385808CF81D3 -:10D7E8001498C088F104001C0E93EE041900CDD0E3 -:10D7F80070385808CF814AA8B0074A887008C1F81D -:10D80800F109001C0E93EE091900C181700A580A2B -:10D81800E0800099580BE0800096178C1799B16941 -:10D82800F3EC118917ACF3EC108917BCF9E910096E -:10D83800E0800089123AE080008670385808CE11DE -:10D8480049887008C1A8F109001CEE091900C141F6 -:10D85800700A580AC770580BC750178C1799B169C6 -:10D86800F3EC118917ACF3EC108917BCF9E910092E -:10D87800C690123AC67070385808CE6148A870052C -:10D888000A98C2D88003A8688003A96080039D9C79 -:10D89800800094C40000822000008214000001F877 -:10D8A8000000820C0000821CF109001C0E93EE0996 -:10D8B8001900C141700A580AC450580BC430178C5B -:10D8C8001799B169F3EC118917ACF3EC108917BCFF -:10D8D800F9E91009C370123AC35070385808CE518C -:10D8E80049A87008C158F109001CEE091900C0F1D7 -:10D8F800178A1799B169F3EA118917AAF3EA108907 -:10D9080017BAF5E91009700A123AC1C070385808F8 -:10D91800CEB1580BC11017891798B168F1E9118871 -:10D9280017A9F1E9108817B9F3E81008C050304A70 -:10D938000C9CF01F00078D354868ED57001C9106B8 -:10D94800D83AE06C00F5D832000082208002E73631 -:10D958000000821CD4211897169CF01F0008C0B044 -:10D96800F908002C5808C0702288EE081900F00742 -:10D9780017305C870E9CD82280012228D421F90810 -:10D98800002C1897F3D8C010E06CFFFFF5DBC0102F -:10D99800F8090109123AE08A000F4948201D1AD8EF -:10D9A800E06801BD1AD84928492C1AD8F01F00127E -:10D9B8002FCDC008100BE0680800EF5B002CF00BBF -:10D9C8001900EFF8BC160E9CF01F000CE04C01FF8C -:10D9D800E08A000AEF380026A1B80E9CEF680026FE -:10D9E800F01F0007D82200008003A8688003A988D8 -:10D9F80080039D9C800094C48000D5FE80010CECBF -:10DA0800D4211896304CF01F000A1897C0E0ECE8B3 -:10DA18000000F8E90000ECE80008F8E900086C48A4 -:10DA28009948781CF01F00030E9CD8228000C9D4A6 -:10DA38008000CD1ED4211896580CC0311897C0B854 -:10DA4800781C580CC030F01F000518970C9B304C00 -:10DA5800F01F00030E9CD8228000D13C8000C974BE -:10DA6800D42130071896C0880C9C6C06F01F00055E -:10DA7800F80700075C575806CF810E9CD822000093 -:10DA88008000DA3CD4217848189758A85F1A5808BB -:10DA98005F19F5E90009C2005818C1E0F8FC0084D4 -:10DAA800580CC060F01F000D3008EF4800843FF8A4 -:10DAB800EEFC0080EF58003AF01F000930066FECCA -:10DAC800EF460080F01F00066FFCF01F0005EF46D0 -:10DAD800007CEF460078D8228000D13C8000DA68CC -:10DAE800D421169778081638C04176389908C11895 -:10DAF8004B899308C0A870390E39C0614B599308F7 -:10DB08006E399139C06812985808CF614B1993083B -:10DB180030060E9C8F36F01F00306E4858A85F19EB -:10DB280058185F181268EC081800C0C0EF380026B3 -:10DB3800EDB80000C071A1B80E9CEF680026F01F78 -:10DB480000276E485818C3206FE85808C0E04A48B4 -:10DB5800201D1AD8E06804F91AD84A284A2C1AD87D -:10DB6800F01F00222FCDC0086FF85808C0E049C840 -:10DB7800201D1AD8E06804FA1AD849D849AC1AD82E -:10DB8800F01F001A2FCDC008EEF800805808C0E03A -:10DB98004938201D1AD8E06804FC1AD84958492C7D -:10DBA8001AD8F01F00122FCDC00830088F48F01F78 -:10DBB8000012C0E148A8201D1AD8E06805021AD84A -:10DBC80048E8489C1AD8F01F00092FCDC008D82271 -:10DBD800000082188000DA8C80010CEC8003A868B1 -:10DBE8008003A9AC80039D9C800094C48003A9C4D1 -:10DBF8008003A9E08000D6B48003A9F8D42118973F -:10DC080078485808C0E04A68201D1AD8E0680175AD -:10DC18001AD84A484A4C1AD8F01F00242FCDC008F9 -:10DC2800303CF01F00231896C380EF08001CF958F9 -:10DC3800001C6E6899688E48A1B8B8483018994891 -:10DC4800EF38000BF968000BEF38000AF968000A92 -:10DC58006E089908497972080E38C0316E38C108C3 -:10DC680049599308C0A870390E39C06149299308E9 -:10DC78006E399139C06812985808CF6148E99308FD -:10DC880030080E9B8F38302CF01F000C48C948D83C -:10DC98008D8970098D3991060C9CD8228003A8685B -:10DCA8008003AA1880039D9C800094C48000C9D476 -:10DCB8000000821C000082188000C9748000D5F81A -:10DCC80000008214D431204D4B583005700910964D -:10DCD8002FF90A9491090A934B2830627007E08F54 -:10DCE800019E6E485808C0E14AF8201D1AD8E0681D -:10DCF80002571AD84AD84AEC1AD8F01F002E2FCD4E -:10DD0800C0085818C0E14A88201D1AD8E06802588F -:10DD18001AD84A984A6C1AD8F01F00262FCDC00886 -:10DD280058A8C0E14A08201D1AD8E06802591AD834 -:10DD38004A2849FC1AD8F01F001F2FCDC0085828C0 -:10DD4800C071EF38004EE4081800E0800081EF3819 -:10DD5800004E30CAF4081800C7A0EF3800AC10997C -:10DD6800E8081800C300EEF900A82FF9EF4900A849 -:10DD7800493A100AF53AFFFF1439C6B33009EF499A -:10DD880000A8E4081800F9B90801F1D9E808EFF883 -:10DD98008EAC0E9CF01F000BC5C80000000082105E -:10DDA8000000820C8003A8688003AA3C80039D9C25 -:10DDB800800094C48003AA688003AA948003AC38C6 -:10DDC80080010A20EF08003AE6081900F9B90401B1 -:10DDD800F1D9E408EFF84C1D6FF85808C3A0EF0913 -:10DDE800003AEF08004CF0091900C3356E4858286E -:10DDF800C100EF09004AEF0800484CD1A3581208A7 -:10DE0800EF39004EE2090709F0090948EF58004CBC -:10DE1800EF080060EF090056F0091900F00917B083 -:10DE2800EF08003CF3D9C02FEF590058F00A15014C -:10DE3800F0091900EFFA3C2CEF08003CEF53003AC8 -:10DE4800EF5800560E9CF01F003BC0383018C02811 -:10DE580030086E495869C0B16C0B6EDAF60A010ACF -:10DE6800E04A0028E08800042FF85C588ECAEDBA12 -:10DE78000003C39158495F0A58795F091449E809B2 -:10DE88001800C3106C0AEEFC00A0EEF100A4F80123 -:10DE980002416ED9EEFB009CF4090109E20B000E69 -:10DEA800E06A01F4FC0A0D00FAE100080039E08894 -:10DEB80000062FF830115C58C178EF3100ADE20C44 -:10DEC800034BF60A0D0A1439E088000E50180E9C10 -:10DED800F01F0019EF3900AD30012FF9EF6900ADDF -:10DEE8004018C0283001EEFC0080580CC1106ED9D3 -:10DEF8006C0A121AEF09004CF2091006123AC08394 -:10DF08005018F01F000E30004018EF4000806E4996 -:10DF18005839C1516C0A6ED9F4090109E049002841 -:10DF2800E08800182FF85C58C14800008003A85802 -:10DF3800800110608001109C8000DA685899C091B7 -:10DF48006C0A6ED9F4090109E04900F0E08B00047D -:10DF58005808C4900E9CF01F00434C385805C14027 -:10DF680070081037C0E14C18201D1AD8E06802E488 -:10DF78001AD84BF84BFC1AD8F01F003F2FCDC00819 -:10DF88006E388B38C13870090E39C0E04B78201DC7 -:10DF98001AD8E06802E81AD84B884B6C1AD8F01FD8 -:10DFA80000362FCDC0086E399109EEF80098580850 -:10DFB800C0403FBB6E6C5D185801C0F0EF180024DC -:10DFC800201DEEC9FFFC1AD80E9AEF18001C6EAB84 -:10DFD8006F7CF01F002B2FED0E9B302C6E37F01F3F -:10DFE8000029C1C8EF3900382FF9EF690038EF3A36 -:10DFF8000039F20A1800E08B0010EF680038EEF8DC -:10E0080000945808C0600E9B6E6C5D185C5CC04143 -:10E018000E9CF01F001D0E956E375807FE91FE638B -:10E0280049A849B410957006C6086C4858A8C0E0BD -:10E0380048E8201D1AD8E068030C1AD8495848DC6B -:10E048001AD8F01F000D2FCDC00868096CD8F20847 -:10E058000108E04800F0E08B004C0C976C36C4587F -:10E068008000DA8C0000820C8003A8688003AAC4B0 -:10E0780080039D9C800094C48003AAF08001023430 -:10E088008000C97480010CEC00008220000082101E -:10E098008003AB1C6A081036C0E149A8201D1AD8B5 -:10E0A800E068031B1AD84988498C1AD8F01F001851 -:10E0B8002FCDC0086C388F38C1386A080C38C0E0DA -:10E0C8004908201D1AD8E068031F1AD8491848FCC7 -:10E0D8001AD8F01F000F2FCDC0086C388B080C9B86 -:10E0E800302C6C36F01F000C5806CA01C0780C9C06 -:10E0F800F01F000A5807CCF1CE1B2FCDD8320000F4 -:10E108008003A8688003AB4C80039D9C800094C466 -:10E118008003AB748000C9748000DA8CD431202D60 -:10E1280018951691784858A8C0A1189B4A2CF01F3A -:10E1380000230A9B302CF01F0022C3B8780850082F -:10E148007818F903001C5018F9020024797778A68A -:10E15800F8F400987860189B49ACF01F00186BFC25 -:10E16800580CC030F01F00186BEC580CC030F01F72 -:10E178000016EAFC0080580CC030F01F00130A9B00 -:10E18800302CF01F000F5804C040009C3FBB5D14AA -:10E198005801C0F0201D5C72F1D3C0101AD20C9B3C -:10E1A800FAC9FFF4FACAFFF80E9CF01F00082FED19 -:10E1B8002FEDD832000082208000DAE88000C97490 -:10E1C8000000820C8000DA6880010234D42118969D -:10E1D800302CF01F00511897C5114D084D0A189999 -:10E1E8007008740BC0A870DAF60A010A123AF4092A -:10E1F8001720F00C172070385808CF61580CC04011 -:10E20800301BF01F0048302CF01F00431897C30143 -:10E218004C584C3A18997008740E37FBC178F13A8B -:10E228000014EC0A1800E08B000DF60A1800E08BC9 -:10E23800000970D7FC0701071237C033109CC0389B -:10E24800169A12977038149B0E995808CE91580C4C -:10E25800C040301BF01F0033302CF01F002F1897E0 -:10E26800C5704B28F10900D42019F15900D44AF897 -:10E27800F10900D42019F15900D4E06A00B0300B3C -:10E288000E9CF01F002B3408EF6800143FF8EF686D -:10E29800000B4A384A7A70097408F2080008950891 -:10E2A800EF48006CEF480068EF48005CEF4800500A -:10E2B8003008EF6800ADEF680038E0680800EF58F4 -:10E2C800002EEF58002C3068EF58004AEF58004CE9 -:10E2D800E0681000EF580072E0680200EF58003C58 -:10E2E8003FF8EF58003A3018EF5800564928EF48E1 -:10E2F800008CE068DD00EA18006DEF48009CE078CB -:10E3080024F88FD9EF4800A03098EF4800A40E9C5D -:10E31800D82200008000C9D40000822000008210AA -:10E328008000E1240000820C000080D48002E8BC58 -:10E33800000001F48000E5ECD401340CF01F000269 -:10E34800D80200008000E1D4D431189714961293B3 -:10E35800169578445804C0E04C98201D1AD8E068F7 -:10E36800020A1AD84C784C8C1AD8F01F00482FCDC6 -:10E37800C008580BC041E06600F7CB78304A140C4F -:10E38800F01F0043EF560024EF08001CE8081900AE -:10E39800C34110944BF84C0970064C08720B700C72 -:10E3A8004BF9E06A100092082FF80C995C88F00489 -:10E3B8001900F4081790C078F30E001CF00E19002D -:10E3C800CF4072395809CF911899C078F30E001CC4 -:10E3D800F00E1900CEA072395809CF911699C0785D -:10E3E800F30E001CF00E1900CE0072395809CF91B7 -:10E3F8004AB9B208EF58001C4AA84AB9700A72080C -:10E40800F40800089308EF48005CF0C90001E068D0 -:10E418000800EF580060EF58002CEF58002E300825 -:10E428008FC88FA8E0680200EF49006CEF490050E0 -:10E43800EF58003C0A9BE06C0200F01F001C5C8C4B -:10E44800F808100AEF5800583018EF430090EF58BA -:10E458000056EF5C003C30288F48495972080E3846 -:10E46800C0316E38C2C849399308C26870390E394C -:10E47800C221490993086E399139C2288003A868D6 -:10E488008003AB9C80039D9C800094C48002E73687 -:10E498000000820C0000821400008220000001F8B5 -:10E4A80000008210000001F48000D95C0000821C8A -:10E4B8000000821812985808CDA148D9930848D866 -:10E4C80070098F3991073019201D30081AD9109A10 -:10E4D8003029109B0E9CF01F00082FEDEDDCC008C2 -:10E4E800C0410E9CF01F00050C9CD8320000821819 -:10E4F8000000820C8001035080010CECD421189795 -:10E5080078465826C390E08B00075806C0C05816B6 -:10E51800C071C2785846C370C3635876C3C030060A -:10E528000C97C4184A8972081838C0317838C1085D -:10E538004A699308C0A870390E39C0614A399308EE -:10E548006E399139C06812985808CF6149F9930813 -:10E5580030080E9B8F38302C1097F01F001DC0A874 -:10E56800189B49CCF01F001C0E9B303CF01F001874 -:10E5780030070E96C188189B498CF01F00170E9B18 -:10E588000C9CCF5B301BF01F0016EDDCC008C0B13F -:10E598003058C088301BF01F0012EDDCC008C031B5 -:10E5A80030988F4858075F193008F00618005F0A3E -:10E5B800F5E90009F0091800C0400E9CF01F000999 -:10E5C8000C9CD8220000821C000082188000C974AC -:10E5D800000082148000DAE80000820C80010A0042 -:10E5E80080010CECD421169C1497580AC08094CB57 -:10E5F800F01F00070E9CF01F0007D82A5809C030EA -:10E60800149CD822F01F00045C5CD8228000D984B6 -:10E618008000D13C8000E504D42149887007C2A855 -:10E62800EEFB0084580BC140169AEEF8008C58088F -:10E63800C06030090E9B6E6C5D18C078169A1099F0 -:10E648000E9B109CF01F000E5C5CEFFC0A21EF385B -:10E658000026EDB80000C0D1A1B80E9CEF680026D6 -:10E66800F01F0008EF380026E018FFFCEF680026CE -:10E678006E375807CD61D8220000820C8000E5EC87 -:10E6880080010CECD401F01F0007487913882FF89B -:10E698005C58B288EDB80000C031F01F0004D80201 -:10E6A8008000E620000073148000DCCCD4314A6876 -:10E6B80070063058ED3E000C2EC6A58EF00E1900DF -:10E6C800E0880040205E3008A36E30175C8E302151 -:10E6D8003042E7DEC010E06401FFE0650200C2E8F6 -:10E6E800F5D8C010EC0A070BEE0B1800C080C293D7 -:10E6F800EC0A0009E20B1800C1B1C0382FF8C1D8E4 -:10E70800139BE40B1800C1D12FDA063AC1A413BA3F -:10E718002FC813A95C88F5E910895C89F2CA000141 -:10E72800E80A1900EA0917B0F959003CC0781399AA -:10E738005809C070F20800085C88FC081900CD135D -:10E74800D832000000007318D4217848189616971C -:10E75800F138000DEDB80000C1C1169C3007F01F5C -:10E768000020C368F138000DEDB80000C0E16C4826 -:10E77800F13A000CF139000DF3EA1089A1A9F16909 -:10E78800000DA989F169000C6E07F01F0016C0285A -:10E7980049555807C1D06E4811C411DBB16BF7E475 -:10E7A800118B11E48EEEF7E4108B6A0A8CE911F4F0 -:10E7B8000E9CE9EB100B16191409F20E010ECD3759 -:10E7C800C098141B6C1CAC6B5C7BF01F00088D0799 -:10E7D800D8225809FE99FFF7CFBB00008000DA68FD -:10E7E8008000DA3C0000731C8000D210D4314C58F1 -:10E7F80018971188EDB80004E081020C79994C282B -:10E80800F90C006070086FAAF208010BC186103974 -:10E81800C0614BE87008F4080108C1164BB87008CD -:10E82800103AC2914BA87008F139000FF138000E68 -:10E83800F3E81088F8081900E088001E4B487009B2 -:10E84800F338000FF339000EF1E910884AE972092C -:10E858005C88EF490064EF5800604AC97209EF49C3 -:10E8680000685808C080EF3900AC3008F00918007B -:10E87800EFF81EAC4A586F497008F009010B580BA5 -:10E88800E089004C3006EF5600704A2B960BEC0BD3 -:10E898001900C3215C7CEF160060F80A000A6FAC0F -:10E8A800EC0C000C143CC281EF0A003AF60A19007D -:10E8B800C2351039C211EF3800542FF85C58EF6890 -:10E8C80000543039F2081800E088000FEF090056AC -:10E8D800EF08003C12085C88F2081900E088014A39 -:10E8E800EF580056C469F2081800E08101430E9CF5 -:10E8F800F01F0009C3E93008EF680054C3A90000FD -:10E90800000073280000731C0000732400007318B3 -:10E91800000073208001016A5CD91009E08600D1EB -:10E928006F7912185808E08900CCEF380026EDB846 -:10E938000002C081A3C8EF680026EF080058EF580E -:10E948000056300A4D39EF6A004E720BEF6A0054D8 -:10E9580072096F48EF490050F6080108EF09007284 -:10E96800EF580070F2080008EF09004AEF580072EB -:10E97800EF080048A358F2080008EF58004C6E480A -:10E988005838E0880066EF080056EF090058F0098B -:10E998001900E0880006EF09003C1009C0A8EF192B -:10E9A800003CB339F7D8C010F20B0C0AF408000980 -:10E9B8005C89F0091900E088004CEF590056C488BA -:10E9C8006C08EF030074EF48007C6C1CF01F0032E9 -:10E9D800F8031900C0E24B18201D1AD8E06803B3E9 -:10E9E8001AD84AF84AFC1AD8F01F002F2FCDC008B1 -:10E9F800EF0800705808C09020186C49F339000DD2 -:10EA0800EDB90000EFF80C38EF0300746C1CF01F30 -:10EA1800002218130C9CEF530074F01F0024EF0819 -:10EA28000074EA081900C1606FF85808C1316FE82E -:10EA38005808C1014998201D1AD8E06803BF1AD8A0 -:10EA480049B8498C1AD8F01F00182FCDC0084914AE -:10EA580030056FF65806C2D06C4811CBF139000D5D -:10EA6800F3D9C0025F1A11D9B169F3EB118911EB1F -:10EA7800F3EB108911F81248680912188CE9F409A7 -:10EA8800000912085808FE9AFF9DE08F045F0000F5 -:10EA9800000073248000CD0C8003AC608003ACA818 -:10EAA80080039D9C800094C48000DA3C8003ACD035 -:10EAB8003FF8EF58003A3008EF680038C5A830082A -:10EAC800EF580070C5686C08EF030074EF480078D1 -:10EAD8006C1CF01F0021F8031900C0E249F8201D42 -:10EAE8001AD8E06803E01AD849D849EC1AD8F01FB8 -:10EAF800001E2FCDC008EF0800705808C0902018DD -:10EB08006C49F339000DEDB90000EFF80C38EF034C -:10EB180000746C1CF01F001018130C9CEF53007449 -:10EB2800F01F0012EF080074EA081900C2406FF8DD -:10EB38005808C2116FE85808C1E14888201D1AD842 -:10EB4800E06803EA1AD848A8486C1AD8F01F0006EB -:10EB58002FCDC0088000CD0C8003AC608003ACA82A -:10EB680080039D9C800094C48000DA3C8003ACD074 -:10EB78004C5430056FE65806C2106C4811CCF13978 -:10EB8800000D11DAF3D9C002B16AF5EC118A11EC63 -:10EB980011F858095F1B6809F5EC108AF1EA100AA8 -:10EBA8008CE8F20A010AF6080008F4080108C066B1 -:10EBB8006F7810195809FE9AFF886F085808C29094 -:10EBC8004B196F1A7209F4090109C2374AFB760B0F -:10EBD800EF0A0048F6080108F40B140316185C88BD -:10EBE800F00A000A5C8AEF09004AF40B14035C4837 -:10EBF800EF5A0048F20A14021419F2080008F6083D -:10EC08000009EF58004AEF59004C3008EF4800401F -:10EC180049F84A09900A6EA8580AE0800381720BE5 -:10EC2800F60911FF1009E08600B15C7AF0C9FFFF10 -:10EC38001619F20A010A580AE08900A849697216E9 -:10EC48005806C0E14958201D1AD8E06804461AD869 -:10EC58004938494C1AD8F01F00142FCDC008F00BC2 -:10EC6800010BE04B7FFEE08A002348C8201D1AD81C -:10EC7800E06804471AD848D848AC1AD8F01F000AE8 -:10EC88002FCDC008000073240000821000007320FC -:10EC98000000731C000073348003AC608003ACF088 -:10ECA80080039D9C800094C48003AD008CD81638E6 -:10ECB800C3148C48F3D8C0101639C0E44AB8201DD4 -:10ECC8001AD8E06804491AD84A984AAC1AD8F01FEA -:10ECD800002A2FCDC0081618300A5C88C058AC48E6 -:10ECE800AC5A121B6C068CD91639CFA55C3B0C9C10 -:10ECF8005C8BF01F0022C21049C8201D1AD8E0689A -:10ED080004561AD849E849BC1AD8F01F001B2FCD61 -:10ED1800C0085C3B0C9C5C8BF01F0018C0E04938B5 -:10ED2800201D1AD8E068045B1AD84958491C1AD81B -:10ED3800F01F00112FCDC0086C1A4929932A492ABF -:10ED48006EA8740B926C9508F80B000A101AB26A38 -:10ED5800F00A16187249B2F8B2CAF5D8C208F1D842 -:10ED6800C108B2DAB2E8C1B88003AC608003AD1064 -:10ED780080039D9C800094C48000CDD48003AD2086 -:10ED8800000073340000731C101BC097EF38002676 -:10ED9800A1B80E9CEF680026F01F00424C256EA912 -:10EDA8006A08F009010AE08602B7F0CAFFFFEF1B04 -:10EDB800002C121A161A580AE08902AE1039E0819E -:10EDC80001F54BA8906A7048F139000DF3D9C002DB -:10EDD8005F19F40900094B6AB409EF0A002CF20A1A -:10EDE8001900C462F13A000CF139000DF3EA1089F8 -:10EDF8005C89EDB90000C081E219FFFEF169000DE0 -:10EE0800A989F169000C4A98EF0A002CB06A704988 -:10EE1800F339000DEDB90001C031201AB06A4A3645 -:10EE28008CEB6C1CF01F00238C696C48F138000DCA -:10EE3800F1D8C0025F18F208000849D9B20849A9F8 -:10EE480072095C78EF1A002C12086EA9F4090009FF -:10EE58001238C0E04988201D1AD8E068048B1AD8F7 -:10EE68004968497C1AD8F01F00172FCDC008EEF664 -:10EE780000805806E08000BE48C46848F138000D9C -:10EE8800EDB80000C080C4B8109C7008EF4800803E -:10EE9800F01F000DEEF800805808CF71CAA80000D6 -:10EEA80080010CEC0000731C000073340000732018 -:10EEB8008000D2108003AC608003AD3480039D9C39 -:10EEC800800094C48000DA3CF138000DEDB80000F1 -:10EED800C1F16848F139000DF13A000CF3EA108AE3 -:10EEE8005C8A1499A1A95C79F20B1608EDBA0001A5 -:10EEF800C0F0F169000DF16B000C68488869F138C1 -:10EF0800000DF1D8C0025F18F2080008A6086C05C9 -:10EF18000A96F01F00455805C041C6984C324C432C -:10EF28006C4811C5868A11D9B169F3E5118911E5D3 -:10EF38008CEBF3E510890C9C11F5EBE91009F40949 -:10EF48000109640A1409F20B010BCBF7E08F0201E7 -:10EF58004B89EEF80080704811FB11C511DC11E8EF -:10EF6800B16CF9E5118CF9E81088F7E81008F00A97 -:10EF7800010A5C8AB26A7248F138000DEDB80001E6 -:10EF8800C031201AB26A4AB58AEB6A1CF01F002AFF -:10EF98008A696A48F138000DF1D8C0025F18F20892 -:10EFA80000084A39B2085C784A097209F009000A6F -:10EFB800EEF80080704811FB11CC11D911E8B16945 -:10EFC800F3EC1189F3E81089F7E91009123AC0E067 -:10EFD80049A8201D1AD8E06804C31AD84988499C52 -:10EFE8001AD8F01F00192FCDC0080C95EF450080E6 -:10EFF80048F848E9908A7209F40900098FA990082D -:10F00800EF09002CF0091900C22248C8201D1AD89F -:10F01800E06804CD1AD848D848AC1AD8F01F000ABE -:10F028002FCDC0088000DA3C0000731C000073205C -:10F03800000073348000D2108003AC608003AD6C94 -:10F0480080039D9C800094C48003ADA810190E9C79 -:10F05800EF59002CF01F004A4CA8300A7019924B47 -:10F06800F40B1900C0504C8A9509300991194C5875 -:10F078007048F138000DEDB80000C5B14C3913885F -:10F08800A5B8B288C56881098CEAF13B000DF7DBA9 -:10F09800C0025F1BF60A000A14098FA9EF0A002CA8 -:10F0A800F138000D8C69F1D8C002F7D9C0105808A2 -:10F0B8005F1EF9DAC010FC0B000B163CC0E44B488D -:10F0C800201D1AD8E06804F21AD84B284B2C1AD8FD -:10F0D800F01F00322FCDC008F409010958085F1845 -:10F0E800F20801080E9CEF58002CF01F00256C1B3D -:10F0F8009648E2081900C090680C580CC040F01FF0 -:10F108000028C028890B8D126C48F138000DEDB825 -:10F118000000C0810B88A5B8AA886E485848EFF34C -:10F128000A046C080C9CEF480080F01F001EC07891 -:10F1380049D030014944300249453073EEF6008029 -:10F148005806C1006C4811CB11D9B169F3EB11898C -:10F1580011EB6EAAF3EB108911FBF7E910091439CA -:10F16800C930EF380026EDB80000C041A1C80E9C98 -:10F17800CE68A1A8EF680026D83200008000D5FE2E -:10F18800000073340000732C000073298003AC6006 -:10F198008003ADC880039D9C800094C48000CD345A -:10F1A8008000DA3C0000731C0E9CF01F0040EEF655 -:10F1B80000805806C0714BECF01F003EEF4C0080F9 -:10F1C800D8326A093005F2CCFFFF6C4811CB11DA4E -:10F1D800B16AF5EB118A11EBF5EB108A11FBF7EA2E -:10F1E800100A1439C1214B2C8C689869F009190050 -:10F1F800E08800B4F01F002FE08000B05805EBFC59 -:10F208001A00EFFC0A20C0D85805C0D1F20A010B39 -:10F21800C4574A7CF01F0027E08000A0EF4C008014 -:10F228000C9BC3986A4B17F417C217D317EBB1633B -:10F23800E7E21183E7EB108BE9EB100B5CDB120BB9 -:10F24800C2D6F80A010B580BE0890029498CF01F37 -:10F2580000191897E08000826A4811F911CA11DB79 -:10F2680011E8B16BF7EA118BF7E8108B4928F3EB3B -:10F27800100B70088AE9101916095809E08A000964 -:10F28800F00B010B6A1CAA6B5C7BF01F000C8B0750 -:10F298000C9B0E9CF01F000AD8326C0B0C95580B77 -:10F2A800C1001696C93B000080010BF000007334C2 -:10F2B8008000DA080000731C8000D2108000E7503C -:10F2C80014195809E08A004AF138000DEDB8000019 -:10F2D800C4404A3CF01F00238D0CC3F06C4811F960 -:10F2E80011CA11DB11E8B16BF7EA118BF7E8108B43 -:10F2F80049D8F3EB100B70088CE910191609580956 -:10F30800E08A002CF00B010B6C1CAC6B5C7BF01FD3 -:10F318000017D8320E9CF01F0016D832720BF60870 -:10F328000109C0A62FFBEF19002CF60801081218D6 -:10F338005808E08A00130E9CEF380026A1B8EF6841 -:10F348000026F01F000CD8323008FE9FFBB4580985 -:10F35800FE99FE00FE9FFE4BD83200000000733479 -:10F368008000DA080000731C8000D21080010BF0C6 -:10F3780080010CECD4314B86ED0800922FF87819F7 -:10F388004B65ED5800928B091388F1D8C004F20838 -:10F39800002818971693109C4B148908F01F003109 -:10F3A8006A080E9C118BF7DBC004A36B5C3BF01F53 -:10F3B800002EC0718E493138F0091900E08B000B1E -:10F3C8004A580E9CF109009A2FF9F159009AE08FDA -:10F3D80003026A0C069B2F0CF01F0024C0B16A0AB6 -:10F3E800FC19E000F5380010B968E618F00012388A -:10F3F800C0A149980E9CF10900A02FF9F15900A06D -:10F40800E08F02E9F4CBFFF48EC830692F0A0E9C16 -:10F41800F01F00175C8CC080ED0800980E9C2FF838 -:10F42800ED580098C11868080E9CF13B000CA58B9C -:10F43800F60B10FCF01F000CC1C0ED08009A0E9CE2 -:10F448002FF8ED58009AED0800962FF8ED58009621 -:10F45800E08F02C6000080D40000733000007318EB -:10F468008000D67C8000CDD48001255880011E2CD8 -:10F47800680811CA11D9B169F3EA118911EAF3EAE6 -:10F48800108911FAF5E91009F20A1618B0CAF5D967 -:10F49800C208B0F9B0DAF5D9C108B0EA4B28910929 -:10F4A8006808F1390008F13A0009B16AF5E9118AEA -:10F4B800F139000AF5E9108AF139000BF3EA100A6C -:10F4C800F4091618F1690008F3DAC208F16A000BAA -:10F4D800F1690009F3DAC108F169000A4A386804D9 -:10F4E800910AE938000DF5D8C002F1D8C0064A0BD8 -:10F4F800B6884A086A09580A5F1A8E4514055C8559 -:10F50800B00549D87006CA586C485808C0E149B8CF -:10F51800201D1AD8E06800B71AD84998499C1AD80B -:10F52800F01F00192FCDC00858A8C0E14938201D88 -:10F538001AD8E06800B81AD84948492C1AD8F01FD8 -:10F5480000122FCDC0085818C24148C8201D1AD82B -:10F55800E06800B91AD848E848AC1AD8F01F000A81 -:10F568002FCDC0080000731C00007324000073280E -:10F57800000073200000820C8003AC608003ADF0B3 -:10F5880080039D9C800094C48003AE188003AE4421 -:10F59800098A0998F1EA1088ED0A0024F00A19008E -:10F5A800C56109AA09B8F1EA1088ED0A001CF00A39 -:10F5B8001900C4D1F33A000CF338000DB168F1EA30 -:10F5C8001188F33A000EF1EA1088F33A000FF5E8D3 -:10F5D80010086C1A103AC3B1F33A0010F33800114E -:10F5E800B168F1EA1188F33A0012F1EA1088F33AA7 -:10F5F8000013F5E810086C0A103AC2916C380C3800 -:10F60800C0E14CA8201D1AD8E06800C21AD84C885E -:10F618004C8C1AD8F01F00482FCDC008580CC06079 -:10F6280099384C6870098D3991066C380C38E0812E -:10F6380001A14BE8201D1AD8E06800C81AD84C0868 -:10F648004BCC1AD8F01F003C2FCDC0080C9C6C3650 -:10F658005806FE91FF5BE08F05296C4858A8C0E06A -:10F668004B28201D1AD8E06800D21AD84B584B1CDA -:10F678001AD8F01F00312FCDC008098B0998ED0A60 -:10F688000024F1EB1088F00A1900C77109AC09BB16 -:10F69800ED08001CF7EC108BF6081900C6E1F33CE6 -:10F6A800000CF33B000DB16BF7EC118BF33C000E33 -:10F6B800F7EC108BF33C000FF9EB100B6C1C163CAD -:10F6C800C5C1F33C0010F33B0011B16BF7EC118B93 -:10F6D800F33C0012F7EC108BF33C0013F9EB100B22 -:10F6E8006C0C163CC4A1498B178CEDBC0002E08061 -:10F6F800013AEDBC0001C2D1494B6CAC760BF60C5B -:10F70800010CC2D6ED14002C081C580CE089002806 -:10F718005C7A201D5C751ADA48DCEA0B000B5C7811 -:10F72800F2CAFFF0780CC7688003AC608003AE6C47 -:10F7380080039D9C800094C40000820C8003AE98D6 -:10F748008003AEC4000073280000731C00007324FB -:10F75800EDBC0000C0414CC870088DD84CB8900969 -:10F768003008F0091900E08000FEED3800260C9CF6 -:10F77800A1B8ED680026CF486C365806FE91FF6F99 -:10F788004C3870050C98CF286A0A580AC130F33CE7 -:10F798000010F33B0011B16BF7EC118BF33C001236 -:10F7A800F7EC108BF33C0013F9EB100B163AE081E1 -:10F7B80000DC09AB09BAF5EB108AEB0B001CF40B63 -:10F7C8001900E08100D25808C0706A3991394B0895 -:10F7D80070098B3991054AF81188EDB80004C1F118 -:10F7E8004AD8700913AB139A13B8201D1389F1EB8B -:10F7F8001088F5E910894A5B1AD9968C4A794A8BA0 -:10F808007209760BF2CAFFF0F80B000B4A5C780C11 -:10F818002FFC2F49F01F00242FEDCA48EDB8000136 -:10F82800E08100A1EB3C0014F01F00201896C08175 -:10F8380049F8F109009C2FF9F159009CC938497819 -:10F848007008F0C9FFF0C0311298C108F1390013EF -:10F85800F13B0010F13A0011F1380012B16AF5EBF2 -:10F86800118AF5E81088F3E810088D08EB08001CE9 -:10F87800ED58001C48987008F0C9FFF4C1A112980F -:10F88800C27800000000821000007320000082147B -:10F898000000732800007318000073300000731C08 -:10F8A80000007324800102348000E1D4000080D479 -:10F8B800F139000FF13B000CF13A000DF138000E60 -:10F8C800B16AF5EB118AF5E81088F3E810088D188D -:10F8D8004C587008118B1199F3EB1089ED590024DD -:10F8E80030398D494C197209F2CBFFFF8DCB8DABA6 -:10F8F800F13B000FF138000EF7E81088ED5800587A -:10F90800ED5800608A48E2180199AC486A684B8A49 -:10F918002019740C8D688D3C6A889506ED49006441 -:10F928008D880C9CF01F0033ECCBFFFCED1C003CD9 -:10F93800F01F00313019ED5C003C201D30081AD949 -:10F94800109A3129109B0C9CF01F002C2FED5C5C49 -:10F95800C0600C9C300BF01F002AC0480C9CF01FA4 -:10F9680000290E9CC3C80A986A355805FE91FF0EF7 -:10F9780049D56A08F13C000DF9DCC006F01F0022E9 -:10F988005806E08003504A188E4A6A09911791492F -:10F99800B06A30096E1A9109912A49D8910949D853 -:10F9A800B089ECFA0084580AC3C0ECF8008C5808F7 -:10F9B800C0500C9B6C6C5D18C06810990C9B109C17 -:10F9C800F01F00155C5CC041ED4C0084C2A80E9C81 -:10F9D8004928F10900962FF9F1590096F01F0010F7 -:10F9E800D8320000000073180000731C0000820C5D -:10F9F8008000E6B48000D95C800103508000E124D7 -:10FA080080010CEC8000D67E000073340000732C5B -:10FA1800000073298000E5EC000080D48000D13C10 -:10FA28004A9891064A981188EDB80002C3216C489B -:10FA38005828C0814A6870096D781039E081026BD6 -:10FA4800C1D84A49720A6CA9F4090109E08602631F -:10FA5800ED1A002C14195809E089025DE08F032182 -:10FA680049D8201D1AD8E06802271AD849B849CCC5 -:10FA78001AD8F01F001C2FCDC00849B91388A3B8A5 -:10FA8800B288ED380026A1C8ED680026E08F024351 -:10FA9800EDB80001C0616C4820285818E08B00A21E -:10FAA800492870088DD830080C9CED6800ADF01F0F -:10FAB80000106C4820285878E08B022D48D9F208AD -:10FAC800032F000000008224000073280000732424 -:10FAD8000000731C8003AC608003AEF480039D9C1F -:10FAE800800094C400007329000082108000E6B4EE -:10FAF8008003AC404CF811891298E218001259287A -:10FB0800C7A14CD8700A6DF8704811FB11C711DCF9 -:10FB180011E8B16CF9E7118CF9E81088F7E81008DA -:10FB28002FF8103AC681ED0800722FF8ED580072D0 -:10FB38004C287008ED4A0050F0CA00012FF88DC813 -:10FB48008DA84BF87008F139000FF138000EF3E872 -:10FB58001088ED5800603048ED4A00648D48EC0884 -:10FB6800000BED1C003CF01F00375C8CF808100AF5 -:10FB7800ED5C003CED580058ED0900563018F009CE -:10FB88001900C021A17CED5C0056ED0800745808EE -:10FB9800C0E14AD8201D1AD8E06802591AD84AB8D4 -:10FBA8004ABC1AD8F01F002B2FCDC00820186DFCB6 -:10FBB800ED5800747808ED48007C5808F9B800FF43 -:10FBC800F9B80100EDF81E4EED58003AF01F00227A -:10FBD800ECF800905808C050300A0C9B6C6C5D180B -:10FBE800ED380026A1B80C9CED680026F01F001B1C -:10FBF800E08F0191EDB90004E081018D4908700999 -:10FC080013AB139A13B8201D1389F1EB1088F5E98B -:10FC18001089493B1AD9968C4929488B7209760B69 -:10FC2800F2CAFFF0F80B000B483C780CC7980000AC -:10FC380000007328000073240000731C0000731870 -:10FC48008000D95C8003AC608003AF1480039D9C66 -:10FC5800800094C48000DA3C80010CEC0000732022 -:10FC6800000073304C281188EDB80004C5E14C1829 -:10FC7800700C6D485CD81808C3D66D78F808010870 -:10FC88005808E089003830488D486C885808C0E129 -:10FC98004B98201D1AD8E068027E1AD84B784B8CF6 -:10FCA8001AD8F01F00382FCDC008300A0C9B6C6C96 -:10FCB8005D185C5CC0700C9C301BF01F0033E08F3B -:10FCC80001A7ED0700560C9CF01F0030ED080070EE -:10FCD8005808F9B901FFF1D9E108EDF81C383019D5 -:10FCE800ED08003CF2071900C021A178ED58005634 -:10FCF800C2E84A78700913AB139A13B81389F1EB69 -:10FD08001088F5E910894A3B201D1AD94A29968797 -:10FD180072094A2BF2CAFFF0760BEE0B000B2F4943 -:10FD2800F01F001F2FEDCF68EDB80001E08100F350 -:10FD380049A870096CA820181039E08100EC0C9CC7 -:10FD4800F01F0018CE780C9CF01F0010496811882D -:10FD5800EDB80005E08100DFED380026A1B80C9C65 -:10FD6800ED680026F01F00113078CC1800007328C9 -:10FD7800000073248003AC608003AF2C80039D9C3B -:10FD8800800094C48000E1248000E7F40000731828 -:10FD980000007320000073300000731C80010234DF -:10FDA800800101000000732980010CEC0C9CF01FFD -:10FDB800003E4BE84BE91188E2180020C2D01388B6 -:10FDC800EDB80004C1F14BB870096D781039C1A1C4 -:10FDD800ED380026A1B80C9CED680026F01F00360F -:10FDE8000C9CF01F00364B6972080C38C5604B59E3 -:10FDF8009308C05870390C39C69012985808CFB17A -:10FE0800C6D8ED380026A1B80C9CED680026F01F76 -:10FE1800002A3088C6C81388EDB80004E081007B4A -:10FE28004A4870096D781039C7513068C6080C9C6B -:10FE3800F01F001D49D81188EDB80005C6B1ED388E -:10FE48000026A1B80C9CED680026F01F001B0C9C36 -:10FE5800F01F001A49A972080C38C1F04999930893 -:10FE6800C05870390C39C32012985808CFB1C368EC -:10FE78000C9CF01F000D48E81188EDB80004C4A1DF -:10FE880048C870096D781039C4510C9CF01F000BDC -:10FE980048B972080C38C0316C38C21848999308B0 -:10FEA800C1B800008000E7F400007329000073283F -:10FEB8000000732480010CEC8000DA8C0000820CB6 -:10FEC8000000821870390C39C0614C0993086C39EC -:10FED8009139C06812985808CF614BC99308300807 -:10FEE8008D384BB870098D39910630A88D48C128D6 -:10FEF8000C9CF01F00384B881188EDB80004C0A195 -:10FF08004B6870096D781039C0514B591388A5A8F2 -:10FF1800B2884B381188EDB80003C091ECF800980E -:10FF28005808C0803FAB6C6C5D18C048EDB8000441 -:10FF3800C0A10C9B4ABCF01F002C0C9B302CF01F5E -:10FF4800002BC658ED0A0070580AC090ECF80088DB -:10FF58005808C0505C7A0C9B6C6C5D184A48700855 -:10FF68005808C24049C91389EDB90003F1F9080DD1 -:10FF7800F9BA0001F3DAE039F1F90E0D49CAECF8E3 -:10FF8800008C5808C070740A30090C9B6C6C5D18A2 -:10FF9800C0781099740A0C9B109CF01F00165C5CCA -:10FFA800C05049387008ED48008448D81188EDB829 -:10FFB8000005C271ECF8008C5808C1D030090C9BC0 -:10FFC800129A6C6C5D18C1D800008218000082205B -:10FFD8008000E7F4000073280000732400007329F0 -:10FFE8000000820C8000DAE88000C9740000732CDD -:08FFF8008000E5EC10990C9B60 -:02000004800179 -:10000000109A109CF01F002E30094AE80C9C9109B0 -:10001000F01F002D30064AB891064AC76E1C580CD6 -:10002000C330F01F002B8F16C2F86A0BF738000D93 -:10003000EDB80002C2604A78F10C00A02FFCF15C20 -:1000400000A0F10C00962FFCF15C0096179C17A6FF -:1000500017B8178BF9EB108B201D49F972091ADBC1 -:1000600049EB968CF2CAFFF0F1E6108849CB2F4994 -:10007000760BF80B000B49BC780CF01F001B2FED22 -:100080000E9CF01F0013F01F0019C1714988201D3C -:100090001AD8E06801771AD84968497C1AD8F01F45 -:1000A00000172FCDC0085808FE90FCE0FE9FFCEB27 -:1000B00049387006FE9FFB67D83200008000E5ECEF -:1000C0000000822480010CEC000073348000D13CDD -:1000D000000080D400007330000073200000731C07 -:1000E00000007324800102348000D6B48003AC6029 -:1000F0008003AF4080039D9C800094C40000822058 -:10010000D42179F95809C3107208F8CEFF88F9484C -:10011000007C79E8C038109E70085808C1C0704B48 -:1001200017F617C417D5B165EBE41185724A17EBC2 -:1001300015F7EBEB108B15C5EDEB100B15D615EA8B -:10014000B166EDE51186EDEA108AEFEA100AF60ACB -:10015000010ACE2693089D093008F9480040F93875 -:10016000004E2FF8F968004ED822D42179F95809A9 -:10017000C600F9380026EDB80002C5B07208F8CE06 -:10018000FF88F948007C79E8C038109E700858084C -:10019000C1C0704B17F617C417D5B165EBE41185D4 -:1001A000724A17EB15F7EBEB108B15C5EDEB100B47 -:1001B00015D615EAB166EDE51186EDEA108AEFEA8B -:1001C000100AF60A010ACE26930830089D09F9485C -:1001D0000040F938004E2FF8F9090056F968004E32 -:1001E000F5D9C02FF9080060F7D8C02FF009190021 -:1001F000F60817B0F4081780F9580058F908003CC1 -:10020000F00915015C78A178F91A0058103AF9F94B -:100210005C2CF9380026A3A8F909003CF9680026EF -:10022000F20815011009F90800581009F95900568B -:10023000D822D703D43118941693149112921096A1 -:100240004097300A314B301CF01F00391895C6D04A -:1002500098593138F0091900E08B000F4B58201DD8 -:100260001AD8E068031F1AD84B384B4C1AD8F01F25 -:1002700000342FCDC0080E9878175C78AEB8A988E6 -:10028000AEA8E0685014EF68000DA988EF68000C74 -:10029000E8081618AEC8F1D4C208AED8E608161899 -:1002A000EF680008F1D3C208F3D6C010EF68000968 -:1002B000AE993088A9893006AEF4EF63000BAE89A1 -:1002C000EF66000FEF660012EF660013EF66001096 -:1002D000EF660011EF68000E3069049A029BE9D4C2 -:1002E000C108E7D3C108AEE4EF63000A98C8F01F65 -:1002F00000155C7CEF6C0011A98CEF6C0010201DC8 -:10030000491C30671AD70C98F9070090049A2FF708 -:10031000029BE06900FFF95700900A9CF01F000B58 -:100320000A9CF01F000B2FEDD83200008000D3187C -:100330008003AF5C8003AFA480039D9C800094C4C5 -:1003400080011E2C000080D4800122948000D13CCA -:10035000D43120BD14915098414A505A12961897A2 -:100360003009F20119005F08F20A18005F0AF1EA89 -:10037000000AF20A1800C110F3D6C002C0E14C789E -:10038000201D1AD8E06800AD1AD84C584C5C1AD819 -:10039000F01F00452FCDC008580B5F195089126817 -:1003A000C0E04BE8201D1AD8E06800AF1AD84BF81F -:1003B0004BCC1AD8F01F003C2FCDC008EF080072BC -:1003C000E2081900C0B2EF380026EA18FFFFE8186B -:1003D000FF80EF680026E08F02E34058F3D8C001A9 -:1003E000E2180002F9B8010CF009002950296FB099 -:1003F000EF02007431F8F0021900E08800144AC8D6 -:10040000F109009C2FF9F159009CE06C00FFEF38D6 -:100410000026EA18FFFFE818FF80EF680026E08F4B -:1004200002C36FF85802C2605808C1404028A38830 -:100430002FB8AD685C883003503B50A8F7D1B0109E -:10044000409A504BF5DAC001069406980695506A1A -:10045000C3796FE85808CEB14908201D1AD8E06862 -:1004600000D01AD8493848FC1AD8F01F000F2FCDF9 -:10047000C0085808C0416FE85808CD904878201D42 -:100480001AD8E06800D31AD848B8486C1AD8F01FB8 -:1004900000062FCDC00800008003AF5C8003AFD4FE -:1004A00080039D9C800094C48003B028000080D409 -:1004B0008003B0688003B0A450195008EF03003CDB -:1004C000304CF01F0042401918954008E080023C73 -:1004D000300B990B991B5809C0301894C118580853 -:1004E000C0E14BB8201D1AD8E06800EF1AD84B982D -:1004F0004B9C1AD8F01F00392FCDC008910C5C73AB -:10050000402A4069E60A010840435C73E6080D434F -:100510005C835809C3904028300AE608000B149CFD -:100520005C7BF01F002F8B1CE080020EF5D3C01007 -:10053000402B98D9F40B00081039C0E44A48201D1C -:100540001AD8E06800FF1AD84A684A3C1AD8F01F47 -:1005500000232FCDC008501AF01F0023401A18980E -:1005600040895809C0A0402B6A195008721C160C0B -:10057000403BF01F001E4008F00200026A185C8237 -:1005800070188B28C3D8406A402B149CF01F0014AD -:100590008B1CE08001D9F01F0014407AF8020002A1 -:1005A0005C82580AC2D0F7D3C010301A303CF01F1A -:1005B000000C189B6A1C580BC1C1F01F000D40694C -:1005C0008B19E08F01C100008000C9D48003AF5CAB -:1005D0008003B0D880039D9C800094C48000D31811 -:1005E0008003B0E88000CD0C8002E7368000D13C6B -:1005F000403897182FF28B285C82F01F003F320B97 -:10060000F6021900E08B01A0AA63314B6A1CF01FAF -:10061000003BC0904BA8F10900A42FF9F15900A4A8 -:10062000E08F0192EF39001C6A1870188B48B0896E -:10063000EF39001DB099EF3900246A48B0A9EF39AD -:100640000025B0B9E00916186A48B0C9F3D0C2084D -:10065000B0F0B0D9F3D0C108B0E96A48F16C00132A -:10066000F16C00126A48F13A000CF139000DF3EA1E -:100670001089E019FFC0EDE910095C79F169000DFE -:10068000A989F169000C405AEB6A000E404806182F -:100690005C88F3D3C0105048403B6A48120B503B73 -:1006A00040AA1200F139000DF3D9C006F5E910098E -:1006B0005C79F169000DA989F169000C0A98300A8A -:1006C000404BF40B19005F1B507B169A58045F09CE -:1006D000300B124AF60A1800FE91FEF0F5D2B01067 -:1006E000503A6FE05800E08000C260085808C0909F -:1006F0001090CFCB8000CD348000CDD4000080D4CA -:1007000080EA6048F139000DF3D9C0025F1B140B79 -:10071000E08000C45809E08100C1F7D6C0025F0C38 -:10072000301BF60618005F0BF9EB100BF20B1800EC -:10073000E08000B488EBEF19003C140B123BE08919 -:1007400000ADE13B000EE939000EF20B1800E0812C -:1007500000A5684911FE13FB504B11CC11DBB16BA6 -:10076000F7EC118B11ECF7EC108BFDEB100B160A6C -:1007700013CB13D8B168F1EB118813EB4049F1EBBF -:100780001088F3E81008103AE08100884028681CBF -:10079000F00B11EC5C8BF01F0037C0E04B68201DA4 -:1007A0001AD8E06801691AD84B484B5C1AD8F01F78 -:1007B00000352FCDC0086818905AF80A1900C0A15A -:1007C00070098919910C4032109C20125C82F01F34 -:1007D000002EF1D6C001681BC220580BC05188689A -:1007E000F6081900C0E04A48201D1AD8E0680177D1 -:1007F0001AD84A684A2C1AD8F01F00222FCDC008F8 -:100800006048F13A000CF139000DF3EA1089A1A912 -:10081000F169000DA989F169000CC1E8580BC050BD -:100820009659F0091900C0E14938201D1AD8E0682E -:10083000017A1AD84968492C1AD8F01F00122FCD16 -:10084000C008601CF01F001380698868F208000867 -:10085000A068680881080835E0051700E1F3020682 -:10086000089B304CF01F000CC198EF440078C16821 -:100870008000CDD48003AF5C8003B11C80039D9CBD -:10088000800094C48000D13C8003B1308003B1501B -:100890008000CD348000C97481040C98EDB600014D -:1008A000C040EDB60000C0312FF15C81EDD6C00133 -:1008B000EFF81826F9B90120F1D9E138EFF81E2632 -:1008C0006FB9F1D1C010F2080008EF520074EF4880 -:1008D000006CEF0800720218EF5800725802C14015 -:1008E0006FF85808C1116FE85808C0E14AF8201D98 -:1008F0001AD8E06801A11AD84AD84AEC1AD8F01FD1 -:10090000002E2FCDC00858055F193008F0031900DC -:100910005F1AF5E90009F0091800C4406A48580850 -:10092000C410409CE21C0002C3D1F13A000CF13922 -:10093000000DF3EA1089A3B9F169000DA989F169E5 -:10094000000CC318EF380026EA18FFFFE818FF80F4 -:10095000EF6800264998F109009C2FF9F159009C95 -:100960005804C040089CF01F0016EF0900743008BE -:10097000F0091900C1406FF85808C1116FE8580814 -:10098000C0E148A8201D1AD8E06801B41AD84888E8 -:10099000488C1AD8F01F00082FCDC008E06C00FF6B -:1009A000C028300C2F5DD8328003AF5C8003B16467 -:1009B00080039D9C800094C4000080D48000DA688D -:1009C000D421784E1298587E5F07584E5F09EFE9A0 -:1009D0001009C081582EC060583EC040E06C00F83D -:1009E000D822580AC031149CD822201D30095C7AC4 -:1009F0001AD9F01F00032FED5C5CD8228001035050 -:100A0000D4013008201D109A16991AD8149B30185A -:100A1000F01F00032FED5C5CD80200008001035042 -:100A2000D431189679F45804C05179E45804E08020 -:100A300000CE6848F133000DE7D3C001C06088697B -:100A40003008F00919005F03300A5C53301C14337E -:100A5000F9BB0114F9BB0015F01F005D1895E0808B -:100A600000B698593138F0091900E08B000F4D9805 -:100A7000201D1AD8E068040F1AD84D784D7C1AD87A -:100A8000F01F00572FCDC008684811FA11CB11D9BB -:100A900011E8B169F3EB1189F3E81089ED38001C16 -:100AA0007817F5E91009AE88EF3A000CED38001D13 -:100AB000AE98EF38000DF1EA1088ED3A0024AEAAA6 -:100AC000ED3B0025AEBBF20B1618AEF9AECBF7D955 -:100AD000C208F3D9C108AEDBAEE9ED390028EF69F1 -:100AE0000008ED390029EF690009ED39002AEF69A6 -:100AF000000AED39002BE018FFC0EF69000BA5A834 -:100B00005C88F5D8C010EF6A000DF40B1608EF6B87 -:100B1000000CED39002EEF69000EF1D8C006300947 -:100B2000E8185000ED3A002F5C78EF6A000FEF688C -:100B3000000DEF690011EF690012EF690013EF6912 -:100B40000010A988EF68000CED19002E6CA8F208BF -:100B500000088DC85803C110EF39000CEF38000DA4 -:100B6000F1E91088E018FFC0E8180011EF68000DE7 -:100B7000A988EF68000CC068682811897818F169A5 -:100B80000014ECC4FFFC8AC83069089A0C9B0A9CCC -:100B9000F01F00145C7CEF6C0011A98C4929EF6CEC -:100BA0000010F30C00902FFCF35C0090306C201DC3 -:100BB000ED39000B089A1ADC0C9B30080A9CF01FD8 -:100BC000000B0A9CF01F000A2FEDD8328000D318CA -:100BD0008003AF5C8003AFA480039D9C800094C41D -:100BE00080011E2C000080D4800122948000D13C22 -:100BF000D431300A1895314B301CF01F003918934E -:100C0000C041E06C00FED832EB380026EB39001C06 -:100C1000E018FFFCEB6800266B787817AE89EB399B -:100C2000001DAE99EB390024F00B1618AEA9F3D8CD -:100C3000C208EB3A0025AEF8F1D8C108AECBAEBA87 -:100C4000AED9AEE86AA8F0091618EF690008F3D823 -:100C5000C208E06A5010EF690009F3D8C1083004F7 -:100C6000EF68000BEF69000AF40B1608EB19002E71 -:100C7000EF6B000CEF6A000DEF69000FEF640012DC -:100C8000EF640013EF640010EF640011F20A16081D -:100C9000F2080008EF6A000E8BC8EAC6FFFC0A9B48 -:100CA0000C9A98C83069F01F000F5C7CEF6C001143 -:100CB000A98CEF6C0010306CEB38000AEB39000B9C -:100CC000201D0C9A1ADC0A9B069CF01F0007069C4C -:100CD000F01F0006089C2FEDD83200008000D318CA -:100CE00080011E2C800122948000D13CD431202D23 -:100CF0004AE8189770081838E08001A3F9080056F0 -:100D0000F9090060F0091900F20817805C785008B2 -:100D100079E6F9380026E2180002C1E05806C170F1 -:100D20008CEB6C48794911CCF609010911DBB16BE8 -:100D3000F7EC118B11FA11E8F7E81088400BF5E891 -:100D40001008F20800081638E08800070E9CF01F13 -:100D500000185C5CC7696FF55805C0B1EEC9FF8427 -:100D6000EEC2FFFC5019300349214930C2B9109539 -:100D70006A085808CFD1CF3BF13C000CF139000D87 -:100D8000F3EC108C5C8CEDBC0002C1F148B8201D66 -:100D90001AD8E06802471AD8489848AC1AD8F01F09 -:100DA000000A2FCDC00800000000822480010BF053 -:100DB000000080D4000082108003AF5C8003B18407 -:100DC00080039D9C800094C46FF95809C150EF3B8B -:100DD00000261699E2190044C0F16FE95809E08035 -:100DE0000133720E580EC081926EEF09003CF20E74 -:100DF0001900E08301296C09EF4900786E495829F0 -:100E0000C0E0A5AC5C7CF16C000DA98CF16C000C11 -:100E1000EF390026E019FFFCEF6900266EA9F20AFF -:100E20001618F16A0008F5D9C208F16A0009F5D967 -:100E3000C108F169000BF16A000AEF1A002EF16A8D -:100E4000000FF40B1608F16B000EF40900098FC9AE -:100E5000ED39000EEDB90000C061E06B0200EA1B45 -:100E60000204915BEF08003A3FF9F2081900F9B863 -:100E70000000EFF80C1D6E085808C071049CF01FAC -:100E80000075C45078188F086F085808C121600990 -:100E90006C48EF49004011F911CB11DA11E8B16A41 -:100EA000F5EB118AF5E81088F3E81008EF480044E4 -:100EB0006C1C6C4478199848985A9914E8090109EF -:100EC000121A1218B85AB84830695C78049A0E9B06 -:100ED000E9630010E9630011F01F005F30695C7C7A -:100EE000E96C0011A98CE96C0010E30800902FF860 -:100EF000201DE35800901AD9049AEF38000AEF3900 -:100F0000000B0E9B6C1CF01F00552FED6C4811FA66 -:100F1000F139000DF3D9C0025F1B11CC8CE9F60941 -:100F2000000911DB11E8B16BF7EC118BF7E81088C1 -:100F3000F5E810086F7AF2080008101AC037EF4879 -:100F4000005C5809C3B08D036FF85808C041EF46E4 -:100F5000007CC3286C4A15FE15C46A4915DBB16BC9 -:100F6000F7E4118B15E4F7E4108BFDEB100B13CEB7 -:100F700013FC13DAB16AF5EE118A13EEF5EE108A5E -:100F8000144CF60C010CC177401AC058109A700826 -:100F90005808C0E0704913C413FC13DEB16EFDE4C1 -:100FA000118E13E4FDE4108E1C4C161CCF068D0828 -:100FB0009506C0788B060C95C0480C9CF01F002845 -:100FC0006FE65806C3706C4811CC6F4A8CEB11D990 -:100FD000141BB169F3EC118911ECF3EC108911FCCD -:100FE000F9E91009F6090009400B1639FE98FEC60A -:100FF000EF3900AC3008F0091800C1C18CEB6C4827 -:10100000F60A010A11F911CC11DB11E8B16BF7EC0A -:10101000118BF7E81088F3E81008100AEF18006049 -:10102000103AF9B80B00EFF8BA2AF9B80B01EFF84B -:10103000BEACEF380026F1D8C007EF680026300CB0 -:101040002FEDD832E21B00A0FE91FED7CD2B000081 -:101050008001222880011E2C800122948000DA3C2D -:10106000D401189879FA580AC170149B7609580966 -:10107000C030129BCFCB71EC970CF1490040F14985 -:10108000007CF139004E2FF9F14A0078109CF1698B -:10109000004EF01F0002D80280010CECD431300A5F -:1010A0001896314B301CF01F00401895C7B0985966 -:1010B0003138F0091900E08B000F4BC8201D1AD8F9 -:1010C000E06803C91AD84BA84BAC1AD8F01F003AF5 -:1010D0002FCDC008ED39001C78176D78AE89ED3939 -:1010E000001DAE99ED3900242018AEA9F00B16189A -:1010F000ED3A0025F3D8C208AEF8F1D8C108AECB5E -:10110000AEBAAED9AEE86CA8F0091618EF690008BF -:10111000F3D8C208E06A5010EF690009F3D8C1089B -:101120003004EF68000BEF69000AF40B1608ED19A4 -:10113000002EEF6B000CEF6A000DEF69000FEF64FB -:101140000012EF640013EF640010EF640011F20A64 -:101150001608F2080008EF6A000E8DC8ECC3FFFC09 -:1011600098C83069069A0C9BF01F00145C7CEF6CE9 -:101170000011A98C4929EF6C0010F30C00902FFC92 -:10118000F35C0090306C201DED39000B08981ADCE0 -:10119000069A0C9B0A9CF01F000B0A9CF01F000A89 -:1011A0002FEDD8328000D3188003AF5C8003AFA44A -:1011B00080039D9C800094C480011E2C000080D47C -:1011C000800122948000D13CF9390010A3C948A8BD -:1011D000F969001011BA118B119911A8B169F3EBDB -:1011E0001189F3E81088F5E8100899183008F958C3 -:1011F00000145EFC8003B409997A996B5EFCD703F6 -:10120000D421301CF01F00071897C080320A300B21 -:10121000F01F00053FF8EF68000B0E9CD82200007D -:101220008000C9D48002E8BCD40148C9189B720868 -:101230001838C0D178389308C0C870395809C060D0 -:101240001639F7F90003F1F90A0370385808CF612D -:10125000301CF01F0003D802000082288000C974EF -:10126000D4214AB83009700E1C98C148103CC111F5 -:101270005809C0E04A78201D1AD8E06802541AD8EC -:101280004A584A6C1AD8F01F00262FCDC0083019D2 -:1012900070385808CEC1580BC0C017B817861797BA -:1012A00017ABB167EFE61187EFEB108BF1EB100B8B -:1012B000990B580AC2211C98E06A1000E0667FFF73 -:1012C0003007C0C8F10B0012F40B1900C061F6CA58 -:1012D000FFFF1C985C8AC0287038EC0A19005F1563 -:1012E00058085F1BEBEB000BEE0B1800CEC1580843 -:1012F000C040E06C00F5D822F95A00125809C0200D -:10130000D82A993E4828910C129CD82200008228A5 -:101310008003B19C8003B1E080039D9C800094C455 -:10132000D4213008169614951897F9090012F0097F -:101330001900C071300A189BF01F00145C5CC231A8 -:101340005806C0C00DB80D8A0D990DA6B169F3EA13 -:101350001189F3E61086F1E61006EF380010A3A815 -:101360008F16EF680010EF55001448987008109C15 -:10137000C0581837C021D82A783C580CCFB18F38C4 -:1013800048389107D82200008001126000008228AE -:10139000D43112971093169414911895F9090012EC -:1013A0003008F0091900C091300A189BF01F004561 -:1013B000E5DCC008E0810084308B089CF01F00420F -:1013C000C0310896C0E8300A308B301CF01F003F57 -:1013D0001896C041E06200FFC728089BF01F003C40 -:1013E0008C593078F0091900E08B000F4B98201DC4 -:1013F0001AD8E06801C51AD84B784B8C1AD8F01F60 -:1014000000382FCDC008EB3900120E986C175C78AD -:10141000AE893009EB3A0013AEB8AE9AA988AEF99E -:10142000AEE9AEA86A085808C041E6C2FFFCC10890 -:1014300066191238C0C00836C041E06200F7C3F830 -:101440000C9CE06200F7F01F0027C3980A928CC83A -:10145000F0091608AED8AEC9EB390010EDB900009E -:10146000C1403119029A049B0C9CF01F001F5C8C38 -:10147000F1DCC010AEF8A988AEE8580CF9B800FF4E -:10148000EFF80E07EFF80E0631181AD3049BEB396C -:10149000000B029A1AD80C9CEB38000AF01F0013BC -:1014A0002FEDE5DCC0080836C0400C9CF01F000D95 -:1014B00048F8F10900782FF9F1590078049CD832E6 -:1014C000800112608000CDD48000D3188000CDB49C -:1014D0008003B19C8003B1EC80039D9C800094C488 -:1014E0008000D13C80011E2C80012064000080D44B -:1014F000D421202D1897501B149C500A1296F01FCF -:10150000000C401B1898400AC0A148A8E06C00FCE1 -:10151000F10900862FF9F1590086C078F3D6C01082 -:101520000E9CF01F00055C5C2FEDD8228001222864 -:10153000000080D480011390D401F8CAFFFCF9198F -:101540000014F01F00035C5CD8020000800114F05E -:10155000D431203D4D98F109007A2FF9F159007AE4 -:10156000781716910F8818955C8898CAF3D8C0042C -:101570002FE9A369123AC0A5F1D8C004F00B1502F7 -:101580005C3BF01F004F1894C0904CC80A9CF109B6 -:1015900000822FF9F1590082C1D96A12EECCFFF016 -:1015A000029B502CF01F004705980583F1E3108340 -:1015B00005B805AE1896F1EE108E5C835C8E34484B -:1015C000F00E1900C2413438F0031900E081008B9D -:1015D00062A85808E080008770145804E0800083F7 -:1015E00068185808E0800092EF3A000CEF39000DBF -:1015F000B169F3EA1189EF3A000EF3EA1089EF3A84 -:10160000000FF5E910091238C6D1C7F84AE8089961 -:10161000700A089B1498500AC618F10C0012FC0CB2 -:101620001900C5A15806C041700C580CC1B0EF306C -:101630000010EF3C0011B16CF9E0118CEF3000129A -:10164000F9E0108CEF300013F60618005F1AE1EC99 -:10165000100C700018305F0CF5EC100CF60C180034 -:10166000C3B05804E08100D6F13C0010E21C000435 -:10167000F0041700CCE8701C580CC150EF3A000C75 -:10168000EF30000DB160E1EA11805010401AEF30E8 -:10169000000EF5E010805010EF30000F401A14409B -:1016A000003CC1A1400A10945809C0F0703893382A -:1016B000893A48589104C148000080D48000CDD4B4 -:1016C00080012558000082284C88F109008E2FF9EE -:1016D000F159008EC058109970385808C9F1580453 -:1016E000C141EF3A0010EF380011B168F1EA1188FA -:1016F000EF3A00126219F1EA1088EF3A0013F5E8A8 -:1017000010081039C6D1300405F805E9F1E9108850 -:10171000C130402A8AC83119EECBFFF40A9CF01F71 -:1017200000345C8CC0904B180A9CF10900802FF9A2 -:10173000F1590080C4F83F8B0A9CF01F002EC0E0D6 -:101740004AD8201D1AD8E06801141AD84AB84ACCE1 -:101750001AD8F01F002C2FCDC0085804C0D06866DE -:101760005806C3E0089BF1D3C010EEC9FFF40A9AF3 -:10177000687C5D16C5585806C261EF380010FC1928 -:10178000E000B968E618F0001238C1D00F8B0A9C4F -:10179000F7DBC0042FEBA36BF01F00166A180E389E -:1017A000C0E04958201D1AD8E068012F1AD84968AE -:1017B000493C1AD8F01F00132FCDC008303B0A9CBB -:1017C000F01F001248980A9CF10900882FF9F1597E -:1017D0000088F109007E2FF9F159007EC0280A9C8B -:1017E000F01F000BC1D80000000080D480011E2C27 -:1017F0008000CDD48003B19C8003B11C80039D9CEC -:10180000800094C48003B21C800118FC8000D13C8D -:10181000F10C0014E60C1900FE91FF5FC2DB2FDD16 -:10182000D8320000D431189316921494324B300AF7 -:10183000301CF01F00241897C43098593238F00932 -:101840001900E08B000F4A08201D1AD8E068012E0D -:101850001AD849E849EC1AD8F01F001E2FCDC0084D -:101860007816661531CAAC94AC823004ACC4ACD4E2 -:10187000ACE4ACF4661B781C2F8CF01F00170C9C9A -:10188000ACA4ACB48EDBF01F00155C7CACBCA98CA6 -:10189000ACAC201D492C30161AD60898F906006009 -:1018A000EACAFFF4E06900FF089B2FF6F9560060D2 -:1018B0000E9CF01F000C0E9CF01F000B2FEDD83279 -:1018C0008000D3188003B2308003B27880039D9CDF -:1018D000800094C48002E73680011F4A000080D453 -:1018E000800122948000D13CD401F5DBC00830BBDC -:1018F000F01F0002D802000080011824D401F5DB9B -:10190000C008303BF01F0002D802000080011824FC -:10191000D4314C62E50800622FF81694E558006255 -:10192000781618970D85EBD5C004A365EA0311005E -:101930005C83069BF01F003EE08101788E493038C1 -:10194000F0091900E08801726E1811893088F009D9 -:101950001800E081015DED380010ED310011B1613A -:10196000E3E81181ED380012E3E81081ED3800134F -:10197000089BF1E11001ECCCFFF0F01F002EC071CC -:10198000E611F000FC18E0001031C0914A780E9C7E -:10199000F10900742FF9F1590074C4498E49307867 -:1019A000F0091900E08801420E9CF01F00235C8CB6 -:1019B000C0A00E9CF01F0021E50800682FF8E55834 -:1019C0000068D832330B0E9CF01F0019C6E00A9B4A -:1019D0000E9CF01F0017189AC0E04998201D1AD8D5 -:1019E000E06800981AD84978497C1AD8F01F001787 -:1019F0002FCDC0088ECB302CF01F00151892E08040 -:101A0000011F98D9EAC8FFF81039C25248C8201DF2 -:101A10001AD8E06800A21AD848E848BC1AD8F01FC3 -:101A2000000B2FCDC0080000000080D48000CDD472 -:101A30008001255880011FAC8000D13C8003B2306A -:101A40008003B2A480039D9C800094C48000D318BE -:101A50008003B2D80E9BF01F00445C5CC0E04C38A1 -:101A6000201D1AD8E06800A51AD84C184C1C1AD8AA -:101A7000F01F00412FCDC008069B6416049CF01F88 -:101A8000003FC0E04B98201D1AD8E06800AB1AD880 -:101A90004BB84B8C1AD8F01F00382FCDC0080E9CC5 -:101AA0000497F01F0038C1383D0B0E9CF01F003327 -:101AB000C0E04AE8201D1AD8E06800B51AD84B08E3 -:101AC0004ACC1AD8F01F002C2FCDC008ED3A000CDC -:101AD000ED39000DB169F3EA1189ED3A000EED3BE5 -:101AE0000010F3EA1089ED3A000FF5E91009ED3A1C -:101AF0000011B16AF5EB118AED3B0012F5EB108A8B -:101B0000ED3B0013F7EA100AF40B16186E18ED6A95 -:101B1000000FED6B000CF7DAC208F5DAC108ED6AC8 -:101B2000000EF20A1618ED690013ED6A0010ED6B55 -:101B3000000DF5D9C208F3D9C108ED6A0011ED69AD -:101B40000012300911AAB08911B9F3EA1089FE7A9E -:101B5000F7FE5C89F4091900E0880016F2C9F7FF66 -:101B6000C14800008000CF988003B2308003B310DA -:101B700080039D9C800094C48000CDD48003B33842 -:101B80008000D13CF2C9F8005C79B0B9A989B0A94C -:101B9000ED380009E818FF00ED680009A988ED6834 -:101BA00000083008314BED68000BED68000A0C9C12 -:101BB000F01F00284A885C7CED6C000BA98CED6C52 -:101BC000000AF10900602FF90A9BF15900600E9C90 -:101BD000F01F00221898C0E04A18201D1AD8E068AB -:101BE00000D71AD849F84A0C1AD8F01F00202FCD78 -:101BF000C00830191AD4189A1AD9ECCBFFF4E0694E -:101C000000FF0E9CF01F001A2FEDC0B8E508007011 -:101C10002FF8E5580070E50800662FF8E5580066D3 -:101C20000E9CF01F0014D8320E9CF01F001248A822 -:101C3000F109006A2FF9F159006AD8320E9CF01FA1 -:101C4000000D4858F10900742FF9F1590074D83289 -:101C500080011F4A000080D48000CDD48003B230C0 -:101C60008003B36C80039D9C800094C48001206439 -:101C70008000D13CD431205D30951988FAC9FFF03D -:101C8000FACEFFFC5009330231033056F0C9003060 -:101C9000EA091800E08B00BAE4081800C03030A749 -:101CA000C1582FFC35891988F20818005F0A378956 -:101CB000F20818005F09F5E91009F9B70008F7BC48 -:101CC00001FFF9B70110F9F81800F8CAFFFF300951 -:101CD0003191F2070244F0C000301004F4CC00014E -:101CE000EA001800E08B0005E8C90030C1E80E9456 -:101CF000E6071800C1D1F0C400615C54EC04180080 -:101D0000E088000EF0C00041EC001800E08B0011EC -:101D1000E2041800E0880004341CC028361C2F6838 -:101D2000F00C010CF9E9104915882FFACD3B32EA85 -:101D3000F4081800C0814008103EC6701CA92FFC92 -:101D40001988CA5B5808C28030CAF40818005F1CA2 -:101D5000320AF40818005F1A146C300AF40C1800E8 -:101D6000C1B030DCF80818005F1730ACF808180074 -:101D70005F1CEFEC000CF40C1800C0E030BC309796 -:101D8000F80818005F1CEE0818005F18F9E8000852 -:101D9000F4081800C3A1FAC8FFFC101EA34E2FFEC2 -:101DA000582EC0B0E0890005580EC2F0C298583EC7 -:101DB000C0F0584EC251C168E064FFFFEA1400FF52 -:101DC0000839E08B00234018F3E81189C198E049F5 -:101DD000FFFFE08B001B4018402AB968F1EA1108A8 -:101DE000C0D8E04900FFE08B0011402A4018B968D4 -:101DF000F1EA1108403AF1EA1088F1E91009580BAC -:101E0000F7F91A00301CC028300C2FBDD832D70388 -:101E1000D401202DFACBFFFCF01F0004F9BC00FF19 -:101E2000FBFC10012FEDD80280011C74D431202D51 -:101E3000300630110C9EC4A898557812E7D5B01022 -:101E4000049430075008C0B8E92800000990202306 -:101E5000E1E810805C835C702FE40007E203190066 -:101E6000FE9BFFF40A944008E214FFFEE7D5C00190 -:101E700008023000E0031900C0400584A964080787 -:101E8000E9D7C010B187E80700070E94E0140000FE -:101E9000C060E9D7C010B187E80700075C77EBD5D1 -:101EA000C001EE0E000EEFDEC010B18EEE0E000E81 -:101EB0005805C0B0EFDEC108EC061101A96E5C56F2 -:101EC000FDDEC010EFEE100E780C580CCB615806FA -:101ED000C080F9DEC108A96EFDDEC010F9EE100E5B -:101EE00017B715BC17851796B166EDE5118617ABC8 -:101EF0001585EDEB108B5C781596EFEB100B15AAA2 -:101F0000EFDBC010B166B18BEDE511860E0BEDEA8B -:101F1000108AF9EA100AF40C1610F5DAC010F60A65 -:101F2000000A180AF4090009F2080008F00E000E71 -:101F3000F1DEC010B18EF00E000EF9DEC010B18ED1 -:101F40001C0C5CDC5C8C2FEDD832D4213008189945 -:101F5000F5DBB010301EC0B8F32600001397202A1E -:101F6000EFE610875C8A5C772FE90E08FC0A1900FF -:101F7000FE9BFFF41699E219FFFE120CEDBB000068 -:101F8000C0411989A9691208F3D8C010B188F208B4 -:101F900000081099E0190000C060F3D8C010B188A3 -:101FA000F20800085CD8F9D8B010D822D431300A31 -:101FB000301414981495C488985B7816EFDBB01031 -:101FC0000C9E3009C0B8FD2200001D932027E7E2D7 -:101FD00010835C875C732FEE06090E93E8071900E7 -:101FE000FE9BFFF3169EE21EFFFE1C06FDDBC001FA -:101FF000EA0E1900C0400D8EA96E1C09FDD9C01053 -:10200000B189FC090009129EE01E0000C060FDD9E4 -:10201000C010B189FC0900095C79F7DBC001F20846 -:102020000008F3D8C010B188F2080008580BC0B0FF -:10203000F3D8C108F40A1101A9685C5AF1D8C0109C -:10204000F3E81008780C580CCB81580AC080F3D8FC -:10205000C108A968F1D8C010F3E810085CD8F9D815 -:10206000B010D832D431201DFAC4FFD8169712937D -:102070001092681518966801580AE0800091500A7D -:10208000314BF01F0055400AC0A04D48E06C00FEE7 -:10209000F109005C2FF9F159005CCC286C148C59C3 -:1020A0003138F0091900E08B000F4CD8201D1AD8E8 -:1020B000E068022C1AD84CB84CBC1AD8F01F004B60 -:1020C0002FCDC0085C53E3E310815C71E961000926 -:1020D000A981E9610008158B1598B168F1EB1188A9 -:1020E00015ABF1EB108815BBF7E81008F00B1618CC -:1020F000E9680013E96B0010F7D8C208F1D8C108ED -:10210000E96B0011E9680012E81245005C72A892C0 -:10211000E4031608A883ED380008A8A8ED380009E4 -:102120004B39A8FCA8B8A8EC9208F7D8C010A8DBD7 -:10213000A98BA8CB2FF8B2085807C0D00F8B0FB9C6 -:102140000F98B168F1EB11880FABF1EB1088F3E851 -:102150001008C051EAC8FFFCEBF81001F00916188E -:10216000E968000FE969000CF3D8C208F1D8C1088A -:10217000E969000DE968000E3008E968000BE968BC -:10218000000A500A314B089CF01F001A5C7CE96C75 -:10219000000BA98CE96C000A400AC038781A2F0A93 -:1021A00048E8F10900482FF9F1590048158B1599B5 -:1021B000B169F3EB118915AB6A18F3EB108915BB04 -:1021C000F7E910091039C1910C9B0A9CF01F000A15 -:1021D000C26800008000CDD4000080D48003B3909A -:1021E0008003B3D880039D9C800094C40000734892 -:1021F00080011F4A8000CAF8EB08002C5808C0B0C4 -:102200008C49F0091900E08800070A9B0C9CF01F1C -:102210000006C0580C9B0A9C6A585D185C5C2FFD38 -:10222000D8320000800125A0D42149781896700783 -:10223000C1680E9CF01F0015C1100D8B0D98B16880 -:10224000F1EB11880DAB6E1AF1EB10886E290DBB06 -:10225000F7E8100814581268C1306E075807CEA16D -:1022600048B66C0C580CC040F01F0008C08148985C -:10227000F10900562FF9F1590056C0286C070E9C41 -:10228000D8220000000080CC8000CAE4000080D08A -:10229000000080D4D421204D1897503B149C502A24 -:1022A000501950084096F01F000D403B402A40193D -:1022B0004008C0A148A8E06C00FCF10900562FF9C5 -:1022C000F1590056C0881ADC0E9C1AD6F01F000582 -:1022D0002FED5C5C2FCDD82280012228000080D415 -:1022E00080012064D4314C05EB08004A2FF87817A0 -:1022F000EB58004A0F980F831694F1E31083189659 -:10230000E609160C3048F0091900C090F01F00379C -:10231000EB08005C2FF8EB58005CC2980FB8E7D3CD -:10232000C1040FA2A363F1E2108298585C82E60810 -:102330001900C0539848E4081900C0B20C9CF01F63 -:10234000002B4A98F10900522FF9F1590052C86840 -:10235000069B0E9CF01F00265C8CC0F00C9CF01FAE -:102360000023EB0800502FF8EB580050EB08004E0C -:102370002FF8EB58004ECD48F7D2C0100C9CEEC0A1 -:10238000FFF0F01F001C0895301249B10A9CF01FA5 -:10239000001BC1D0EAC8FFFCC1A06A185808C17070 -:1023A000EF3A0010EF390011B169F3EA1189EF3A01 -:1023B0000012F3EA1089EF3A0013F5E91009103919 -:1023C000C2A00A9B009CF01F000EC2515802E3F508 -:1023D0001000EBF5000030020835EBF50000580561 -:1023E000CD61C9F8000080D48000D13C80011F4A33 -:1023F0008000D210000080CC8000CAE48001255803 -:10240000EE03000307B807A9F1E910893448F00981 -:102410001900C2A0EF39000CEF38000DB168F1E9E6 -:102420001188EF39000EF1E91088EF39000FF3E859 -:102430001008C1B0089BEECCFFF4F01F003DC0A116 -:10244000EF38000CFC19E000B968E618F00012380B -:10245000C0C10C9CF01F00374B78F109004E2FF9DA -:10246000F159004EC5D808955805C0510C9CF01F75 -:102470000031C5680FE90FF8F1E91088F1D8C00EF6 -:10248000C0700C9CF01F002D1896C4A078174AC885 -:1024900091044AC8089B91070C9CF01F002BC3B104 -:1024A000EF3800095868C0B05918C0405818C11119 -:1024B000C0B8089B0C9CF01F0025C2D8089B0C9C40 -:1024C000F01F0023C288089B0C9CF01F0022C2381A -:1024D000089BEECCFFF0F01F0016C0F1EF380010A3 -:1024E000FC19E000B968E618F0001238C0608D17DA -:1024F000302B0C9CF01F00180C9CF01F000E48E8BD -:10250000F10900582FF9F1590058F109004E2FF93F -:10251000F159004E48A93008930848A99308D83AC1 -:10252000EF3800095918FE91FF77C6BB8001255886 -:102530008000D13C000080D4800129BC0000822CA6 -:10254000000082308000D588800115508000F37C27 -:1025500080011910800118FC19B9198A1998B168FD -:10256000F1EA118819AAF1EA1088F3E81008F0C915 -:1025700000015BD9E08800035EFFF7390035EDB953 -:102580000001C0E1761A1438C0B07629105A126AD8 -:10259000C0715CD9F3E8000812385F0C5EFC5EFD88 -:1025A000D431209D503B506A781B403AF519002CDD -:1025B000F2C80013502B5078214917EA17F8F1EAB6 -:1025C00010885C88109BF1D8C00DE21B2000984356 -:1025D000505B2143308B5018F20B0C0A1897F3DA3A -:1025E000B0105C8312985049A37830025C88314067 -:1025F0005088C938401B405AF1DBC00D14485008C0 -:10260000E3D3B010F1D3C01040791039E08900064F -:10261000400B4081ADBB500B300A314B302CF01FCA -:1026200000421894C3708E58313AF4081900E08BB8 -:10263000000F4BE8201D1AD8E06802C31AD84BC817 -:102640004BCC1AD8F01F003C2FCDC008314A402B8C -:10265000781CF01F003A6E19F1D0C010F208000883 -:102660006816EBD1B0108F188E58F0000100AE50F4 -:10267000C2188E52EA021900EA0217205C82C19049 -:10268000302A300B303CF01F0028C071089CF01F2E -:10269000002CE06C00FFC4586E18B842B852189B6A -:1026A00099180415089C5C85F01F00265805C02069 -:1026B0006E075805CDF1ED65000B40085C78ACF86D -:1026C000A988ACE8E2C8FFEC5C78ACB8A988314BCB -:1026D000ACA8ED65000A0C9CF01F001B5C7CED6C47 -:1026E000000BA98CED6C000A4039406A7258089BB7 -:1026F000129C5D18495BF70800302FF8089CF758CA -:102700000030F01F000F40180213404AE1D2B01011 -:1027100014085C835C8850185803FE91FF6D069C7A -:102720002F7DD8328000D3188003B4108003B45CAE -:1027300080039D9C800094C48002E7368000D13CD9 -:102740008000CD3480011F4A000080D4D40148F8B5 -:1027500070091839C04178099109C128580BC0E1A6 -:1027600048B8201D1AD8E06801341AD8489848ACF7 -:102770001AD8F01F000A2FCDC00878089708189BB8 -:10278000305CF01F0007D8020000734C8003B410C7 -:102790008003B47C80039D9C800094C48000C97435 -:1027A000D43118971696183BC0E14BC8201D1AD893 -:1027B000E06800A41AD84BA84BAC1AD8F01F003A16 -:1027C0002FCDC008580BC11076081838C0E04B3820 -:1027D000201D1AD8E06800A61AD84B484B1C1AD8FE -:1027E000F01F00312FCDC0086E156A1811CA11D91B -:1027F000F3EA1089C0303004C1D8118A1199109CB5 -:10280000B169F3EA118911AA11B8F3EA10891248E3 -:10281000314A8F18EECBFFF8F01F0025301B0A9CC1 -:10282000F01F00240A9CF01F002418940A9CF01F3B -:1028300000236E15C1486A1811B9118A119311A8A5 -:10284000B163E7EA1183E7E81083F3E31003F01FB5 -:10285000001A18040A9C0695F01F00180A9C5805D7 -:10286000CEB10C9B0E9CF01F001649689009F5D95B -:10287000C010083AC0E44898201D1AD8E06800C784 -:102880001AD84918487C1AD8F01F00072FCDC00865 -:102890000819089CB009D8328003B4108003B4989A -:1028A00080039D9C800094C48003B4A48002E7361A -:1028B000800118E88000CD0C8000D13C8001274CBD -:1028C000000073508003B4B8D431300618971692C4 -:1028D0004AB30C94300566080A9B0A9CC3E8EF3A99 -:1028E000000CEF39000DB169F3EA1189EF3A000EDF -:1028F000F3EA1089EF3A000FF5E91009705A123A1D -:10290000C1B1EF3A0010EF390011B169F3EA118952 -:10291000EF3A0012F3EA1089EF3A0013F5E91009D3 -:10292000706A123AC0910FCA0FD9F3EA1089906AFF -:10293000F20A1900C0D02FF5580CC090F13A001FD0 -:10294000F939001FF20A1800E08B0003109C70098F -:102950005809F00B171012985808CC21580CC04099 -:10296000F01F0008180658155F9804365F59F3E801 -:102970000008E8081800CAF10C9CD8320000734C1B -:10298000800127A0D42148C83007700CC108F9384D -:10299000001F7806F0C900015808C050F969001FEF -:1029A0001897C0480E9BF01F00050C9C580CCF01D7 -:1029B000D82200000000734C800127A0D431201DD4 -:1029C0004CD8F10900322FF9F159003278161895D8 -:1029D0000D835C83F3D3C004A3695949C080F10916 -:1029E00000442FF9F1590044E08F02570DF80DE132 -:1029F000F1E110810DB80DA24C07F1E21082F01F39 -:102A000000408E885C815C821894F808000858A801 -:102A1000E08A000D189B0C9CF01F003AC5708E8850 -:102A2000E808000858A8E08900524B783009700780 -:102A30005009C3D8ED39000CED38000DB168F1E94B -:102A40001188ED39000EF1E91088ED39000FF3E837 -:102A500010086E591039C291ED390010ED3800118F -:102A6000B168F1E91188ED390012F1E91088ED390A -:102A70000013F3E810086E691039C1710DC90DD843 -:102A8000F1E910888E69F0091900C0F149A8F1092F -:102A900000462FF9F15900460DE90DF8F1E91088CB -:102AA000F1D8C00DC360C3F850076E075807CC318A -:102AB000E08F021E089B0C9CF01F0012083CC065B2 -:102AC000305CF01F00121897C09148B8F109003C23 -:102AD0002FF9F159003CE08F01E0320A300B0E9CD7 -:102AE000F01F000B30394888EF69001F70098F090B -:102AF0009107C138000080D4000073508000CD0CD5 -:102B0000800128C80000734C8000C9D48002E8BC52 -:102B10008EF8F1D8C00DC070314A0C9BEECCFFF896 -:102B2000F01F004F4CF89009F20400045C84B004DC -:102B30000DE8A598EDB80000C120EF38001EE3D1E4 -:102B4000C00DE7D3C004A371E60310FCE20200024B -:102B5000A1A80602EF68001EEF52001C6A1811BB04 -:102B6000300A11AEF7EE108E118BB09AB0AAB0BA3F -:102B7000B08A1499F5DBC00411FBF40A10FC11ECC7 -:102B8000F7EC108CF9DCB00DA37CF7DCC010B0DBE7 -:102B9000A98B180EB0CB140E10935C8E3016F5DE98 -:102BA000C010B0FAA98AB0EA6E11029BC548761A25 -:102BB00015C015D2E5E010825C82E40C1900C292C7 -:102BC000F6021618B0BBB082E5DBC208F7DBC1081D -:102BD000B092B0AB5809E080008213E213FBF7E239 -:102BE000108BF60C1900E08300FF15DB15CAF7EA1D -:102BF000108AF40E1900E08B00F7EA0A1618B2B535 -:102C0000B28AF5D5C208EBD5C108B29AB2A5C6788A -:102C1000E40C1900E08000E815E015FBF7E0108BEC -:102C2000F60C1900E08300E05809C09013FB13E98B -:102C3000F7E91089E4091900F9B601001582159B1E -:102C40001499B16BF7E2118B15A215BAF7E2108B4C -:102C5000F5EB100B580BCAC1C52900008002E736FE -:102C60000000735013EB13FA11CCF5EB108A11DB53 -:102C7000F7EC108BF60A1900E088000F4BC8201DF6 -:102C80001AD8E068018E1AD84BA84BBC1AD8F01F8E -:102C9000003B2FCDC008EA0B1618B28BF7D5C2083F -:102CA000B2B5B29BEBD5C108B2A511CB11D9F3EBEC -:102CB0001089F20A1900F9B60100C1185801C0E0E4 -:102CC0004AB8201D1AD8E06801971AD84AC84AACF9 -:102CD0001AD8F01F002A2FCDC0088F15EF39001E1B -:102CE000EDB90000E08100E45806E08000E16E19D3 -:102CF000721A15CB15D9F3EB1089E08100D9118B2D -:102D000011951099B165EBEB118511AB11B8EBEB97 -:102D10001085F1E51005C1A807F86A1907EB13CC77 -:102D2000F1EB108B13D8F1EC1088F00B1900E08157 -:102D300000BF13881395B165EBE8118513A81293B2 -:102D4000EBE8108513B8F1E510055805CE61123A8D -:102D5000C1A14878201D1AD8E06801B91AD848984E -:102D6000485C1AD8F01F00052FCDC0088003B410AE -:102D70008003B4D480039D9C800094C48003B4F489 -:102D80008003B52C138A1398B168F1EA118813AA4D -:102D9000F1EA108813BAF5E81008C0E04C68201D6D -:102DA0001AD8E06801BB1AD84C484C5C1AD8F01FFE -:102DB00000452FCDC00813F813E9F1E91088EF0999 -:102DC000001C5C88F0091900C1704BB8201D1AD88E -:102DD000E06801BD1AD84BC84B9C1AD8F01F0039C7 -:102DE0002FCDC0080A9CF01F00394B9818143006EC -:102DF000B0040A9CC5982EC8EF58001C6E187016B7 -:102E00000D880D94B164E9E811840DA8E9E81084F7 -:102E10000DB8314AF1E41004EECBFFF80C9CF01F22 -:102E2000002DEF38001CACA8EF38001D0C9CED65A0 -:102E3000000BACB8ACE5ACF5ED65000A314BF01F0A -:102E400000265C7CED6C000BA98CED6C000A6E1604 -:102E5000C1586815089C3ECBF01F0020089B0C9CB5 -:102E6000F01F001F0B890BB80B94B164E9E91184C2 -:102E70000BA9E9E91084F1E410045804CEB10E9CCA -:102E8000400BF01F00180C9C49178E05F01F000F17 -:102E90001815AE05C0D849480A9CF109003630061D -:102EA0002FF9F1590036F01F0011C02830060C9C94 -:102EB0002FFDD8328003B4108003B53C80039D9C65 -:102EC000800094C48003B5608000CD0C0000735076 -:102ED0008002E73680011F4A8000CDD48000CD34C7 -:102EE0008001274C000080D48000D13C305CF01F72 -:102EF00000061897FE91FDF3FE9FFDDE5809FE9136 -:102F0000FEB3CDDA8000C9D4D4211898F937002E49 -:102F1000761E306CF8071800C0E04948201D1AD80A -:102F2000E06801B41AD84928492C1AD8F01F0012B9 -:102F30002FCDC008306C201C5C5CF20C0706FC0C2A -:102F40000007EF66000EF40C0706EF660014580C3D -:102F5000CF313089FD6C001BFD69001A109C706830 -:102F60005D185C5CD82200008003B5948003B5DC5A -:102F700080039D9C800094C4D4211897580CC0E114 -:102F800049D8201D1AD8E06800941AD849B849CC0D -:102F90001AD8F01F001C2FCDC00878185808C0E1BF -:102FA0004958201D1AD8E06800951AD84968494C3C -:102FB0001AD8F01F00142FCDC0086E186E06109C92 -:102FC0005808C0E148C8201D1AD8E06800991AD8EE -:102FD00048E848BC1AD8F01F000B2FCDC008F01FDE -:102FE000000C0E9B306C0C97F01F000A5806CE6147 -:102FF000D82200008003B5948003B62080039D9CF6 -:10300000800094C48003B62C8003B63C8000D13C81 -:103010008000C974D431201D500B1897580CC0C0C3 -:103020004D084D19118CF80815031818F2080028DE -:1030300070495829C0D030AA30094CBE129C1C924D -:10304000129B2ECE1298149314911490C1980F8A4B -:103050000F99B169F3EA11890FAA7018F3EA108980 -:103060000FBAF5E910091039CE714C08F109002E9C -:103070002FF9F159002ECE480C990A9C089B30A6D6 -:10308000EC031800C0A1FCF6FFFC5806C0611296C4 -:10309000189516941093C498FCF6FFFC5816C2417C -:1030A0005807C0F00F860F95B165EBE611850FA6A6 -:1030B000EBE610850FB6EDE5100564160C35C26021 -:1030C00064051D865805C080F2061800C2B3189525 -:1030D0001694109AC2A80C94F6061800C2331296E1 -:1030E00018951090C2285826C1D15807C1300F86B4 -:1030F0000F95B165EBE611850FA6EBE610850FB6CF -:10310000EDE5100564160C35C0514969109CB28874 -:10311000C9781D85F8051800C053129616941091B1 -:10312000C0481296189516942FF82E4E5C582E42D1 -:1031300030A9F2081800CA11F2031800C061400655 -:10314000EDB60000E081007B4005E2150002E08161 -:1031500000763098F0031800E089000A5C53C498A8 -:103160000000735200007354000080D430A8F001B6 -:103170001800C180E7D1C0084B38E60915030619CD -:10318000F00903285808C2304B08201D1AD8E068FF -:1031900001761AD84AE84AFC1AD8F01F002F2FCD22 -:1031A000C008F0001800C040E7D0C008C108E20A1B -:1031B0001800C4404A48E7DAC008E60615030616B8 -:1031C000F00600266C0CF01F00258D053098F003EA -:1031D0001800E088000F49D8201D1AD8E068018C3B -:1031E0001AD849F849BC1AD8F01F001B2FCDC008C7 -:1031F0004959E6081503300A0618F2080028F0C9F4 -:10320000FFF0930A5807C0D00F8B0FBA0F99B1691E -:10321000F3EB11890FABF3EB1089F5E91009911964 -:103220004899E60815030618F20800282F08300907 -:10323000069CB0C948B8B083C038E06C00FF2FFDD1 -:10324000D8320000000073548003B5948003B64C5C -:1032500080039D9C800094C480012F788003B66415 -:1032600000007352D431494730050E963EF42EC704 -:10327000ECC3FED40F882FF85C58AE88EEF9FFFC43 -:103280005829C061E8081800E08B0009C0F85819F7 -:10329000C0D1F2081800E088000A6C0C580CC0403D -:1032A000F01F00068D05EF45FFFC2E472E46063722 -:1032B000CE21D8320000735480012F78D431306889 -:1032C0001293189616951497F939002EF0091800E4 -:1032D000C0E04B78201D1AD8E06801DA1AD84B58A4 -:1032E0004B5C1AD8F01F00352FCDC008580BC5C055 -:1032F00017891798B168F1E9118817A9F1E91088C1 -:1033000017B9F3E81008C500189B0A9CF01F002CA1 -:103310001894C4A10B88FC19E000B968E618F00005 -:103320001238C420069B0A9CF01F00265C5CE80C47 -:103330001800C3C55C6C4A49F8081503302AF00C24 -:10334000010CF20C00289166F0C9FFF0930A0FDA25 -:10335000F16A000D0FCAF16A000C0FBAF16A000B96 -:103360000FAAF16A000A0F9A1095F16A0009ECC3DE -:10337000FFD10F8AB2C4F16A0008C0F87009701456 -:103380008B09F01F00120E99069A089B0C9CF01FE7 -:103390000010089CF01F000F6A08306C109B580842 -:1033A000CEE1109CD832E06C00F6D8328003B594A0 -:1033B0008003B67880039D9C800094C480012558CA -:1033C00080013014000073548000C97480012F08FC -:1033D0008000D13CD421189E580CC0E14958201DD2 -:1033E0001AD8E068024A1AD84938494C1AD8F01F4E -:1033F00000142FCDC008761AF4C8FFE4F137000F8F -:10340000F136000CF139000DF138000E782BB1695E -:10341000F3E61189F3E810897818EFE910091059DB -:103420001669C061F4CBFFD82ECAF01F0006D8225F -:103430008003B5948003A13880039D9C800094C4D0 -:10344000800132BCD431202D189616911495580C59 -:10345000C0E14CA8201D1AD8E068027F1AD84C8819 -:103460004C8C1AD8F01F00482FCDC00894593378DF -:10347000F0091900E08B000A4C48149CF109002265 -:103480002FF9F1590022C3087414E8C7FFE40F981C -:103490000F89F1E910893018F0091900C1E10FD83E -:1034A0000FC9F1E91089E0680604F0091900C1515B -:1034B0000FB80FA9F1E91089E0680800F0091900B8 -:1034C000C0C1E938001BE939001AF1E91089E06848 -:1034D0000806F0091900C0E04AC80A9CF109002852 -:1034E0002FF9F1590028F109001E2FF9F159001E9A -:1034F000CA184A68F109001A2FF9E8C3FFD6F15932 -:10350000001AFAC2FFFC304A069B049CF01F002000 -:10351000EF380018EF390019B169F3E81189EF3875 -:10352000001AF3E81089EF38001BF1E910096C1854 -:103530005808C0C01039C0A1049B3019E8CAFFDC8C -:103540000C9CF01F00143018C0A83009EECAFFF818 -:10355000FACBFFFC0C9CF01F000F30080FEA0FF9AC -:10356000F3EA1089301AF4091900C1503028F00923 -:103570001900C591C52800008003B5948003A138C7 -:1035800080039D9C800094C4000080D48002E736B4 -:10359000800132BC5808C4D03008AEE83028304A28 -:1035A000AEF8EECBFFF2EECCFFE8F01F0025304A7C -:1035B000069CEC0A000BF01F0022ED39002E30684B -:1035C000F0091800C0E049F8201D1AD8E06802D9B7 -:1035D0001AD849D849DC1AD8F01F001D2FCDC008D1 -:1035E000306820185C58EE080009F33B0008F36BC4 -:1035F0000012E808000AF56B000EE208070BF36BF7 -:103600000008E2080709F56900145808CEB10C9CBF -:103610006C680A9B5D18C0D80C9CFACBFFFCF01FAD -:10362000000DC07848C8F109002C2FF9F159002C81 -:103630000A9CF01F000A2FEDD83200008002E73606 -:103640008003B5948003B5DC80039D9C800094C406 -:103650008000B3B4000080D48000D13CD42178191C -:10366000F338001BF339001A1697F1E91088189601 -:10367000E0690800F2081900C070E0690806F20865 -:103680001900C231C1C8189B0E9CF01F00173E4B99 -:103690000C9CF01F0016C0E04958201D1AD8E068A5 -:1036A00004A41AD84938494C1AD8F01F00142FCD59 -:1036B000C0080E9B0C9CF01F0012C148189A169C63 -:1036C0002D1BF01F0010C0E848F8F10900282FF961 -:1036D000F1590028F109001E2FF9F159001EF01FC1 -:1036E000000BD82A800133D48000CDD48003B59458 -:1036F0008003B36C80039D9C800094C4800122E40D -:1037000080013444000080D48000D13CD431300AA0 -:1037100018941691303C338BF01F0042E8C8FFD15B -:103720001895580CC0A14C08E06700FFF10900246F -:103730002FF9F1590024C738985A3379F20A190041 -:10374000E08B000F4B98201D1AD8E06804311AD87E -:103750004B784B8C1AD8F01F00382FCDC008300999 -:103760007813E6C7FFE4AEE93019AEF93069E93AFB -:10377000002EF20A1800C0E04AC8201D1AD8E068DE -:1037800004391AD84AD84ABC1AD8F01F002B2FCDBA -:10379000C00830664AAB4ABA20165C56F006070CE1 -:1037A000EE060009F36C0008F606070CF36C001235 -:1037B000F406070CE6060009F36C000EF006070C91 -:1037C000F36C00145806CE913042EECCFFF2E802C2 -:1037D000000B049AF01F001C049A029BEECCFFE839 -:1037E000F01F00193069AED2AEC9AEB6AE863088D1 -:1037F000301AAEA8AE9AE769001BE768001A089C69 -:1038000068680A9B5D184888F10900182FF9EFDCF9 -:10381000C008F15900180A9CF01F000C0E9CD83209 -:103820008000D318000080D48003B5948003B6A034 -:1038300080039D9C800094C48003B5DC8003B71690 -:103840008003B58D8002E7368000D13CD4211694E8 -:103850001896189B1497089CF01F00541895E08147 -:1038600000DF09890998B168F1E9118809A9F1E92E -:10387000108809B9FC1AE000F3E810081099E6195D -:10388000F0001439E08000CC5808E08000C9301BFB -:10389000089CF01F00475C5CEA0C1800C0545807F5 -:1038A000E08100CBCC184C39EBDCB008EA081503FA -:1038B0000A18F20800282F0870095809F9B9000100 -:1038C000F1F90A004BB9EA0815030A18F2080028B2 -:1038D0007048F0C900015819E088000F4B68201D9E -:1038E0001AD8E06803A51AD84B484B5C1AD8F01FC9 -:1038F00000352FCDC00858185F0858075F09F3E856 -:103900001008C041E06400FFC078089B0C9CF01FC9 -:10391000002EE9DCC0085807E08000854A5AEA0911 -:1039200015030A19A369F409000870485828C0B1A2 -:103930002F890E9BF40900090C9CECCAFFD1F01FE3 -:103940000023C6B85818C6E110990E98905B904AAB -:10395000F40B1900C111700A580AC0E04968201D13 -:103960001AD8E06803C41AD84998495C1AD8F01FDD -:1039700000152FCDC008F13A000CF20A1800C05112 -:1039800070085808CE41C51890CB300A303CF01F63 -:1039900000111896C4F00E9BF01F000F5C5CC1F084 -:1039A0000C9CF01F000EC468800125588001301463 -:1039B000000073548003B5948003B6D480039D9CAB -:1039C000800094C48001370C80012F088003B6FC6E -:1039D0008000D3188000CF988000D13C306CF01F5D -:1039E000001AC170300899169908EA081503F00505 -:1039F00001054968F00500256A045804C07008985C -:103A000068045804CFD1910CC0288B0C089CD82294 -:103A10000C9CF01F000F089C5C5CD822E06C00F648 -:103A2000D822089C5C5CD8220E960E9CF01F0009E0 -:103A3000CD6B089C5C5C4888F10900242FF9F15992 -:103A40000024D8228000C9D4000073548000D13CE7 -:103A50008000CD1E000080D4D421202D169618970A -:103A6000149531CB0C9CF01F0027C0804A68E06C95 -:103A700000FE90592FF9B059C4180E9B0A9CF01FF4 -:103A80000023C3410B890B98B168F1E911880BA998 -:103A9000F1E910880BB9FC1AE000F3E8100810995E -:103AA000E619F0001439C0F13019BAA935E9BAC9DC -:103AB000F3D8C207BAF8BAD9A988BABCBAE8FAC921 -:103AC000FFFEC1586E1912586E291268C0906E38E8 -:103AD0005808C041E06C00FCC118EEC5FFF40C9A18 -:103AE0000A9B0E9CF01F000AC08848A90C9B0E9CE4 -:103AF000EECAFFD1F01F00085C5C2FEDD822000059 -:103B00008000CDD4000080D4800125588001384C3D -:103B10008003B58D80012F0878983019B0895EFC3C -:103B2000D4217897EF380024EF390025F0091800E8 -:103B3000C021D82AEE080028201D701630086C1904 -:103B40008CCA8CDB20EA1AD620EBF2CCFFF2F01FF5 -:103B500000182FED587CC0F0581CC0310C95C138AE -:103B6000EF3800242FF8F1D8C0030C9CEF68002434 -:103B7000F01F0010E06C00F4D8228ADB6A1CF01FF2 -:103B8000000E6A055805CFA1EF3800242FF8F1D8B0 -:103B9000C0030C9CEF680024F01F00064878E06C1E -:103BA00000F290092FF9B009D82200008001933467 -:103BB0008000D13C80013F7C000080D4D421204D86 -:103BC0001896F01F002D5806C5306C955805C50095 -:103BD0000B885808C4D0E0680600300ABA68E06B69 -:103BE0000600303CF01F00251897C3F03008FACBD0 -:103BF000FFF4AA88781CF01F00229A6B580BC35060 -:103C00005C7BFAC8FFF2FAC9FFFCFACAFFF86E1C27 -:103C1000F01F001C586CC2606E18402B101B40181F -:103C20005C5B0E9C100B5C7BF01F001749789019B1 -:103C30002FF9B0196E19F338001BF339001AF1E9A6 -:103C40001088E0690800F2081900C060E069080601 -:103C5000F2081900C0716C480C9B0E9C5D185C5CEE -:103C6000C0400E9CF01F000A0C9CF01F000A2FCDD4 -:103C7000D822000080013FA08000D31880013F5867 -:103C8000800192DC8000D210000080D48000D13C02 -:103C900080013B20D4211897580CC0E149B8201D61 -:103CA0001AD8E06801491AD8499849AC1AD8F01FC7 -:103CB000001A2FCDC008499899983778F9680036CE -:103CC00036C8F9680037496899584968189B996857 -:103CD000495CF01F0016496CF01F00163628EF688B -:103CE00000353068EECCFFD1EF68002EF01F0012D7 -:103CF000581CC040E06C00F4D822E06805DC300CB1 -:103D0000EF58002CD82200008003B71C8003A13894 -:103D100080039D9C800094C40000746C80013A581C -:103D200080013D5880013B1880013E6880013D388C -:103D300080018F4480019128D40116985C7A189BE9 -:103D40002F29109C5C79F01F00045C7CF9BC00FFFB -:103D5000D80200008000CEC4D42131B918977898D9 -:103D6000965AF20A1900E08B0005E06C00F4D822A4 -:103D7000F1390025F13C0024F2CAFFFFF5DAC00357 -:103D8000183AC041E06C00F2D822F16A0025F0092F -:103D90000028169C911B3F26F01F00050E9CF01F6B -:103DA0000005EC0C1800CFB0D82A00008000CD1E12 -:103DB00080013B20D42130061897E9DBC01030A5E4 -:103DC000C138EE060708201D48BC1AD8F01F000BAA -:103DD0002FED5806C080EC050C085809C041488CEE -:103DE000F01F00062FF60836CED5486CF01F0003F2 -:103DF000D822000080037AF0800094C48003B76862 -:103E0000800384D448CD48D0E3B00001D55348C0E6 -:103E100048C10230C06248C2A505A1240230CFD3F8 -:103E200048A048B10230C06230023003A122023003 -:103E3000CFE3488F000100008003760000000008F7 -:103E4000000009B88003F480000009B800008CC8A5 -:103E500080008EDCD4013018F96800087808580812 -:103E6000C030781C5D18D802D4014869930C931BAC -:103E7000F33800085808C040129CF01F0003DA0A0B -:103E80000000749880013E54D421201D1895169688 -:103E90001494300B30CA49DCF01F001D300B49DC94 -:103EA000F01F001D300B49DCF01F001D497B49DC71 -:103EB000F01F001D1897581CC0400E9C2FFDD822E3 -:103EC000F01F001A1897581CCF910C9B0A9C49862A -:103ED0008D07F01F00181897581CC04030088D0837 -:103EE000CEDB30088D08F01F00141897581CCE61E7 -:103EF000FACBFFFD302CF01F0011F9B701FFFBF8E2 -:103F00000803E9F80A00CDAB00007498800091D056 -:103F100080013F8C80018F3080013F3C80019F6099 -:103F200080013E54800144588001440C0000749488 -:103F300080018F488001443080014110D401169CDB -:103F4000580BC041F01F0004D802300B301CF01F8A -:103F50000002D80280014110D4014879F3380008EA -:103F60005808C021DC0A3008F3680008F01F00037D -:103F7000DA0A00000000749880014284D4015C7B5E -:103F8000F01F0002DA0A00008001433CD401169CB5 -:103F9000F7DAC010F01F0002D80200008001433C95 -:103FA000EBCD40C0203DF01F00164969F3380008F2 -:103FB0005808C04072085808C0402FDDE3CD80C0CB -:103FC000E0680100FAC6FFF4E06C01000CE8F01FA5 -:103FD000000E0C9B1897F01F000D9A5B580BC0A0A9 -:103FE0005C7BFAC8FFF81A99FACAFFFC0E9CF01F16 -:103FF00000080E9CF01F0007CE1B0000800140A4AB -:10400000000074988000920080013F58800192DC8B -:10401000800091E8D40148583019701CF1690009FA -:10402000700A5D1AD8020000000074A8EBCD40CCE5 -:10403000206D49A6FAC7FFF46C2E8F2EECE200002B -:10404000EEE3000016961093FACEFFF0580CC22053 -:104050007C08FC1C8000F1EC100BF4081509BBB8BF -:10406000F1E611C812481648301C9D08F01F000CDC -:104070000E9C30CA1A9BF01F000BFB38000AA68862 -:10408000FB39000B300CA699F01F00052FADE3CDD6 -:1040900080CC7C0BCE3B00008003B774800075B4ED -:1040A00080007534EBCD4080201D4987EF38000833 -:1040B000EDB80000C071EF3900093008F0091800B0 -:1040C000C0402FFDE3CD808030091A98129B129CCE -:1040D000305AF01F000F3FF91B88F2081800CF205C -:1040E0001B98EDB80001CEE13008301C109B302940 -:1040F000E06A00F0F01F000630186E1CEF6800093F -:104100006E095D19CDFB0000000074A88001402CF1 -:10411000EBCD40C0201D301AF40C1800C1B0C08394 -:104120003028F00C1800C2602FFDE3CFC0C01A97F2 -:10413000300630091A98E06A00F1129B301CF01F1B -:1041400000161B98EC081800CF51300C2FFDE3CD62 -:1041500080C018961A9730191A98E06A00F1300B4F -:10416000129CF01F000D1B98EC081800CF51300C6A -:10417000CEEB48A8F1390008F9D9C001F7FA1E00C2 -:10418000F9BC0100F9B8005AF7F80E002FFDE3CD95 -:1041900080C000008001402C000074A8EBCD406876 -:1041A00048F516961893AA4B301CF01F000E0A9C77 -:1041B000310A300BF01F000C069BF5D6C010300CF6 -:1041C000F01F0009304A300B488CF01F0007300CFC -:1041D000F01F00040C9CE3CD80680000000002107A -:1041E000800075B4800075348003B780EBCD40400B -:1041F00020ED30083009FAE90018FAE90000FAE980 -:104200000008FAE9001049BBFAC6FFD4762A8D2AC5 -:10421000F6E80000301CECE90000F01F0017320A3D -:10422000300B1A9CF01F00150C9C30CAFACBFFE033 -:10423000F01F0012300CF01F00103019FB38002A5C -:10424000F2081800C0503FFC2F2DE3CD804048C835 -:10425000F1390008F9D9C001CF8030083039304A2F -:10426000109B301CF01F00072F2DE3CF8040000073 -:104270008003B784800075B480007534000074A892 -:104280008001402CD42130094A881695F169000933 -:104290001896320BF01F00268C085CC82FE8F7D860 -:1042A000B010AA0BEFDCB010F6C90007E06805F902 -:1042B000F0091900E08B00300D890D98F208180004 -:1042C000C220F6071900C182E0640200F9D7C010CD -:1042D0005C7B181BEC0C000CE04B0200E80B17B0E9 -:1042E0005C7BF01F00138A0B0E0CEFDCB010EE0BA2 -:1042F0001900FE9BFFED48F83009118AF20A1800F8 -:10430000C0D1D8220DA8F2081800CDC10DB8F2080E -:104310001800CD813008AA08D822F5DBC010486CFF -:104320000C9BF01F0006D822000074A88001419C5D -:10433000000074A48003B76C8001447CD4314A38F7 -:1043400018921695118A3009F20A1800C3615805AF -:10435000C33049F83004F0C0FFF4E0610200C22825 -:10436000E06602000C970C93301CA006F01F0019A9 -:10437000300B497C314AF01F0018E404000C0E9AFF -:10438000300BF01F0015304A300B494CF01F001263 -:10439000300CF01F0010EA0601080604EBD8B0103C -:1043A000C0B0E2051900FE9BFFDDEDD5B010EFD6E1 -:1043B000C0100E93CDABD832F5DBC010189B488CE3 -:1043C000F01F0008CC5B0000000074A4000001FC9A -:1043D000800075B4800075348003B7808003B770A7 -:1043E0008001447CD401201D3009301C1A98E06AF9 -:1043F00000F5129BF01F0004314CF01F00042FFD4C -:10440000D80200008001402C800075D2D401F01F3A -:104410000007F01F0007C03030CCD802F01F0003A7 -:10442000F01F0003CFA1DA0A800143E4800141ECD0 -:10443000D401314CF01F0006F01F0006C03030CC14 -:10444000D802301CF01F0004DA0A0000800075D288 -:10445000800141EC80007618D4014878910C911BC2 -:10446000F0CCFFF8F01F0005F9BC010CF9BC00010D -:10447000D8020000000074A8800076385EFCD703E4 -:10448000EBCD40F849C56A096A181039C2F08B0CA7 -:10449000EAC7FFF0EAC6FFF4EEC30010EAC4FF70FB -:1044A0000F89EDB90000C091EDB90001C0616C0940 -:1044B0006A081039E08800082F072F060837CF1147 -:1044C000E3CD80F86E19300B169C5D190F883FDA2A -:1044D000F1EA0009EDB80002C0716609EEF8FFF8D4 -:1044E00012088D08CEABAE89CE8B5809CD118B1C2E -:1044F0008B0CCCFB000074B8EBCD408048CE1897F5 -:10450000300AFCCBFFF0F408150417892F88FC084B -:10451000000CEDB90000C0512FFA2F0B588ACF4183 -:104520003018F96800088F0AE3CF9080000074B853 -:104530002FFC4849A56C18091388A1D8B2885EFCE5 -:10454000000074B82FFC4848A56C30091808B089E1 -:104550005EFC0000000074B8EBCD40E0189E14979C -:104560001295587BE08B002C496AF6C8FFFFA568BE -:10457000F408000C1989EDB90001C1F0F608150422 -:104580001296F4080008A1B6F60915012FF9F409EE -:10459000093E740AB8869157FC0A000A913A5805F8 -:1045A000F9BC0001F9B90104EDD9E138F9F81E00B0 -:1045B000F9BC0101E3CD80E0E3CF80E0E3CFC0E0D0 -:1045C000000074B848387019700C121C5EFC0000B2 -:1045D000000074B85EFC300899085EFC1899780CED -:1045E000580CF9B80001F3F80A005EFC300899088D -:1045F0005EFC300899085EFC5EFC5EFC5EFC5EFCC6 -:10460000D401580BC110F80B000B300A487E7C090E -:10461000F40900092FDAF208141FB98810091019DB -:1046200018C9163CCF51D802000074B85EFD5EFF79 -:104630005EFF5EFF5EFF3FDC5EFC78082FF89908A6 -:104640005EFCD401780820189908C020D80A5D1BA8 -:10465000DA0A301899085EFCD401F01F0002D80273 -:1046600080016D6CEBCD406048784889F5DBC01067 -:104670001895189B7006720C5D160A9CF01F0004BA -:10468000E3CF906000007540000074B4800091E8B2 -:10469000D401E06A0088300B485CF01F0006F01F70 -:1046A00000064868300C9118910CD802000074B8CC -:1046B000800091D0800146C000008B545EFCD7037F -:1046C000D401F01F0011F01F0011301B4909169C86 -:1046D000490AF01F00114919491A301B303CF01FDC -:1046E000000EF01F0010300A301BE06C00F0F01FCD -:1046F000000EF01F000E300A302C149BF01F000C2F -:10470000D80A0000800148C0800147888003B79024 -:10471000800146BC800148548003B794800157A4AF -:104720008001499C800147E0800149F480014730C5 -:104730004828F00C092B5EFC00007548EBCD40E0EA -:104740004905189716966A085808C0205D1848E869 -:10475000F007032C580CC061C088F0061800C09008 -:104760002F8C19885808CFA16A085808C080C00843 -:1047700078193028F0091800FE9BFFF8E3CD80E09F -:1047800000007544000075485EFCD703EBCD40FC8B -:104790004935189630120A94EAC3FFF46A0858089B -:1047A000C0D068385808C19030185806CF805816C5 -:1047B000C0305808CF40E3CD80FC48976E28701970 -:1047C000703C700B5D196E2870296E188F29103996 -:1047D000EFF20A003008CEAB0697CF1B000084B47E -:1047E000EBCD40C018961497580BC24049789009F9 -:1047F000F6091900E088001BF60B00184949F20879 -:10480000002C781A74085808C171741E7428103E60 -:10481000C1507C283009951895099D369D07FD6B80 -:10482000001078089D18E3CD80C0307B305CF01F0D -:104830000009E3CD80C0741ECEDB306B305CF01F0E -:104840000005E3CD80C00000000002200000755C80 -:104850008001473CEBCD408049281497129E581B9D -:104860005F8A9009F80919005FB81468C130F80C24 -:10487000001AF60B0019F4CCFFFF48BB48B8F60A43 -:10488000002AF0090029952EF60C09299507E3CD99 -:104890008080302B305CF01F0006E3CD808000006C -:1048A000000002200000755C000084B48001473CD9 -:1048B000D401307B305CF01F0002D8028001473CFD -:1048C000EBCD404030084AB9B2884ABA940858083B -:1048D000C4D04AA95C784AABF00800184A9EA36885 -:1048E000300C2F88F6CAFFF4F20800082F89930CC9 -:1048F000F34AFFFCF34EFFF82F491039CF91F6CE63 -:10490000FFE84A1A49EB301C970C972A971A14981B -:10491000F4C9FED42EC8F148FFF41238CFC1F54ACD -:1049200001342F4BF4CAFEC01C3BCEF1E06A00807C -:10493000300B496CF01F00164948F0C9FF902F0852 -:10494000F148FFFC491A1238CFB130064918F54634 -:10495000007C910A9116310A0C9B48FCF01F000C58 -:1049600048E80C9C9106E3CD8040485BCC9B00005E -:1049700000007598000002200000755C000084B4FF -:10498000800148B0000082340000759C800091D006 -:1049900000007630000076200000761C4848485918 -:1049A000485A91099119913A912A5EFC000002241B -:1049B000800149D4800149EC48484859485A911926 -:1049C0009109913A912A5EFC00000224800149D4A9 -:1049D000800149EC48494858311AEA1A4000143C11 -:1049E0005E085E19800149D480014A0C481C5EFCB7 -:1049F000800149ECD4013019300A303BFC1C4000E6 -:104A0000F01F0002D8020000800186C8EBCD408074 -:104A10004B373099EA194000123CC310E088001F60 -:104A200030B9EA194000123CC2A0C4233139EA1956 -:104A30004000123CC500E069078AEA198000123C78 -:104A4000C241761CF01F0027300A4A77149B314C74 -:104A5000F01F00260E9CE3CD80803019EA1940003B -:104A6000123CC320E08800153079EA194000123C5E -:104A7000C0603089EA194000123CC0713019300A18 -:104A8000303BF01F001B49B70E9CE3CD8080FC1922 -:104A90004000123CCFA130194978300AF149004456 -:104AA000304C149BF01F00110E9CE3CD8080301918 -:104AB000300A303B30ACEA1C4000F01F000D48D7F4 -:104AC0000E9CE3CD8080302B300CF01F000C0E9C30 -:104AD000E3CD808048470E9CE3CD808080014A0C66 -:104AE0008001DA2C800149D480014658800186C8B3 -:104AF000800152F0000087F480018390D401201DD2 -:104B00001A9CF01F0008C07040085818E088000682 -:104B1000F01F00052FFDD802F01F00042FFDD80262 -:104B200080015F4480015EDC80015EB4EBCD40F823 -:104B3000201DFEF805EA189716951496103AC3A0A2 -:104B4000FEF805E0103AC610FEF805DC103AC06029 -:104B50000C970E9C2FFDE3CD80F8E068018CEA18DD -:104B60008000103CE08000F7E068078AEA188000C7 -:104B7000103CE08000ADE0680186EA188000103C3F -:104B8000CE8176170E9CF01F0169F01F0169C0915C -:104B9000FEF805A0EEEA0000F0EB00006E29912976 -:104BA0000C97FEFA0592300BFEFC0590F01F016495 -:104BB000CD1BF01F015F1894C4D1E0680184EA188E -:104BC00080001037E0800185E08B00D2E0680107AB -:104BD000EA1880001037E08001A0E0680183EA183D -:104BE00080001037CB616A170E9CF01F0156E080E1 -:104BF0000230FEF905523048F34800440E9B334C16 -:104C00000C97F01F0152CA6BFEF4053CE0680112DC -:104C1000EA188000E8F300F8103CC540E08B006320 -:104C2000E0680107EA188000103CE08000F7E068C7 -:104C3000010DEA188000103CE080010DE0680105DC -:104C4000EA188000103CC851761C1497F01F0140F0 -:104C5000C81BFEF304F2E0680188EA188000E6F45D -:104C600000F81037E08001B0E08B00ABE068018312 -:104C7000EA1880001037E080018BE0680184EA18B0 -:104C800080001037E080016EE0680107EA188000BC -:104C90001037FE91FF5F6A18303CF13B000BF01FAC -:104CA000012D3019300A303B30CCEA1C4000F01F97 -:104CB000012A300AFEF70470149B301CF01F0127F4 -:104CC000C49B761C1497F01F0126C44B6A1CF01F6E -:104CD0000125300AFEF70490149B314CF01F011F90 -:104CE000C39BE068018AEA188000103CE08000CB9A -:104CF000E068078AEA188000103CCE90E068011551 -:104D0000EA188000103CFE91FF2576150A9CF01FE2 -:104D100001170BC93048F0091800E08001BBE08B97 -:104D2000019B3008F0091800E08001BF6738301996 -:104D300011EAF20A1800E08001DD0A9CF01F010C64 -:104D4000FE90FF08300A0C97305C149BF01F0103A3 -:104D5000C01B76170E9CF01F0107F01F00F5C4F171 -:104D60000E9B33DC0C97F01F00F9CF4AE068018AF4 -:104D7000EA1880001037E08000BDE068078AEA1872 -:104D800080001037E0800099E0680188EA18800010 -:104D90001037FE91FEDF6A170E9CF01F00F7C0A0CF -:104DA000F01F00F63069FEF8039EFEF60376F14927 -:104DB00000440E9B336C0C97F01F00E4CCBAE06803 -:104DC000018EEA1880001037E08000B7E068078A9B -:104DD000EA1880001037FE90FF7BE068018AEA182D -:104DE00080001037FE91FEB66A160C9CF01F00E49E -:104DF0001897E0800114FEF7032ACACA3099FEF81A -:104E000003460C97F1490044FEFA032C300BFEFCDC -:104E10000372F01F00CBC9EA76150A9CF01F00DA76 -:104E2000302B169CF01F00D9FEF702FCF01F00C0CB -:104E30001896E08100DD0A9B337CF01F00C40C9AB9 -:104E40003019303B30ECEA1C4000F01F00C3FE9FDD -:104E5000FE8276160C9CF01F00CE302B304CFEF7F5 -:104E600002C6F01F00CAF01F00B2E08000EC30194B -:104E7000300A303B310CEA1C4000F01F00B7FE9FA7 -:104E8000FE6A76150A9CF01F00BE1897E08000BAF3 -:104E9000300A302C149BF01F00B13078E9480044F0 -:104EA000F01F00A3FE91FE560A9B0C9733BCF01F27 -:104EB00000A7FE9FFE506A1CF01F00AA089AFEF78A -:104EC00002A6089B314CF01F00A5FE9FFE446A1706 -:104ED0000E9CF01F00B0C060FEF9026C3058F34821 -:104EE00000440E9B335C0C97F01F0098FE9FFE332E -:104EF0006A170E9CF01F00A2C0803069FEF80248BD -:104F0000FEF60220F14900440E9B33BC0C97F01FC3 -:104F1000008FFE9FFE206A1B337CF01F008C089AD6 -:104F2000FEF702043019303B30ECEA1C4000F01F61 -:104F3000008AFE9FFE106938301911EAF20A180043 -:104F4000FE90FE086A1CF01F0094FE91FE03189A62 -:104F5000189BFEF70246301CF01F0080FE9FFDFBF1 -:104F60006A150A9CF01F008B1897E08000874F2A73 -:104F7000300BFEFC022AF01F00721897E08000AE92 -:104F800030580C97E7480044FE9FFDE56A150A9CDF -:104F9000F01F006C1897E08000956938301911EA0D -:104FA000F20A1800FE91FDD64E3A300B4FDCF01F8E -:104FB00000641897E08000A930480C97E748004447 -:104FC000FE9FFDC96A160C9CF01F006B1897C2600B -:104FD000F01F006A30684D37E7480044FE9FFDBB74 -:104FE000EACBFFFC301A30DCF01F005C3019300ACD -:104FF000303B30CCEA1C4000F01F0057FE9FFDAB59 -:10500000F01F004BFE90FF4E0E9A3019303B30CC13 -:10501000EA1C4000F01F0050C44B303B30CCEA1C6F -:10502000400030190E9AF01F004C0DEB304CF01F71 -:1050300000490E9A0E9B301C4BB7F01F0048FE9F94 -:10504000FD8A0C9B33ACF01F0041FE9FFD844D3662 -:10505000FE9FFDD63068F0091800FE98FE693828DA -:10506000F0091800FE91FD76300A0C97325C149B13 -:10507000F01F003AFE9FFD6F189A303B30CCEA1CBF -:1050800040003019F01F0034EB3B000D303CCD0BDD -:105090003008FACBFFFC0C9716F8301A30ECF01FF2 -:1050A000002FFE9FFD580A9CF01F003FFE90FD520E -:1050B000300A0C97306C149BF01F0028FE9FFD4BAC -:1050C0000BCB302CF01F00230E9A0E9B301C4B375D -:1050D000F01F0022FE9FFD3F189A303B30CCEA1CA7 -:1050E00040003019F01F001CEB3B000D301CCA0BB8 -:1050F00048D7F01F000FFE91FF750A9B338CF01FFD -:105100000013FE9FFD28189A303B30CCEA1C40006B -:105110003019F01F00110BCB301CC8AB800152F0CE -:10512000800151A8800156388001D9AC800185E406 -:105130000000763880018E9C8001E03C8001EF20E9 -:105140008001E88C000087F480016D6C8001E2D45E -:1051500080018390800186C8800146588001E00864 -:105160008001DA2C800149D48001E2FC80016D4A83 -:105170008001D9C88001E4D080014AFC8001E4307C -:105180008001E0D48001D9FC800183A08001D9E8AE -:105190008001E81C8001E3DC80014A0C8001E7B853 -:1051A0008001E58880016D48EBCD40C04C96189792 -:1051B0003138EA184000103CE0800087E088002485 -:1051C000E068010DEA188000103CC150E088004002 -:1051D000E0680115EA188000103CC0D0E068018A40 -:1051E000EA188000103CC070E0680112EA188000E4 -:1051F000103CC3910E9C4B7AF01F003718960C9C04 -:10520000E3CD80C03018EA184000103CC510E0889B -:10521000002E30D8EA184000103CC1003108EA18CE -:105220004000103CC3F030C8EA184000103CC1B147 -:10523000301C302BF01F00290E9C3019300A303BF7 -:10524000F01F00274A760C9CE3CD80C0E068010582 -:10525000EA188000103CCCF0E0680107EA188000F2 -:10526000103CCC900C9CE3CD80C0E04C008ACC304C -:10527000FC184000103CCF71307949B8300AF14930 -:105280000044149B302CF01F0019300A30FC149B92 -:10529000F01F0016302B300CF01F00100C9CE3CDDB -:1052A00080C0303C302BF01F000D0E9CCC7B48E9B9 -:1052B0007298ABC8300A9398149B303CF01F000BD7 -:1052C0000C9CE3CD80C048A60C9CE3CD80C00000C0 -:1052D000800151A880014B2C800183A0800186C8E9 -:1052E00080015638000087F480014658800149D477 -:1052F000D421FACD00E4FEF602E21898FEF502E0B1 -:10530000ECF700F83109EA194000123CE08000D5C2 -:10531000E08B003630A9EA194000123CE08000C260 -:10532000E088005330C9EA194000123CE08000A830 -:10533000C6A330D9EA194000123CE080011930F9C7 -:10534000EA194000123CC3D1FEFA0298300BFEFC71 -:105350000296F01F00A61896C341189BFEFA02841D -:10536000FEFC028CF01F00A1304C301BF01F00A18E -:105370000C9A0C9B301CF01F00A0C238E06901841D -:10538000EA198000123CE0880011E0690188EA19FE -:105390008000123CC100E08B00A5E0690186EA199B -:1053A0008000123CC0E1C078E0690183EA19800006 -:1053B000123CC363109CFEFA0226F01F0090189561 -:1053C0000A9C2C7DD8223079EA194000123CC7C0D3 -:1053D000E08800973089EA194000123CE08000CF55 -:1053E0003099EA194000123CCEC14FEA300BFEFC66 -:1053F000020EF01F007E1894E08000CF3048ED4888 -:105400000044CDFB4F7A300B4FECF01F0078CD916C -:10541000189A189B4FC5301CF01F0077CD2BE06900 -:105420000107EA198000123CCC60E0690115EA1915 -:105430008000123CC1203139EA194000123CCC11E5 -:10544000300A301C149BF01F006C300A304C149B47 -:105450004EE5F01F0069CB5B6F38301911EAF20A94 -:105460001800C72076160C9CF01F00690C9CF01FDA -:1054700000694E98580CF0051710CA3B303B3019A4 -:10548000300AF01F0066302B303CF01F005A300A03 -:10549000301C149BF01F00584E150A9C2C7DD822FE -:1054A0004D0A300B4DFCF01F00511897C3B0305817 -:1054B000ED480044C86B303B3019300AF01F0057EC -:1054C000302B304CCE3B6C9BE21B0040C2414C5A0F -:1054D0004D5CF01F0046C9D03028ED480044C71B82 -:1054E000E069018AEA198000123CFE90FF65E069DC -:1054F000018EEA198000123CFE91FF64C5CBFC19B5 -:105500004000123CFE91FF5E300A149B149CF01F79 -:10551000003AC57B300A4BC5149B301CF01F003687 -:10552000C50B30481A9BBAE8336CF01F00400E9A46 -:105530003019303B30ECEA1C4000F01F00384B893A -:105540004BB89119C3EB76170E9CF01F00310FC9B1 -:105550003068F0091800FE9BFF354B15F01F003531 -:10556000C2A10E9B338CF01F0031C2BB4AC530195B -:10557000300A303BF01F0029C24B49AA300B4AAC1D -:10558000F01F001ACAA1304849F5BAC81A9B334C1B -:10559000F01F0026C16B306AEECBFFE2FACCFFFCB5 -:1055A000F01F002530481A9BBA68335CF01F001FBB -:1055B000089ACBFB3019300A303B30CCEA1C400053 -:1055C000F01F00160FCB305CF01F000A300A301CB1 -:1055D000149BF01F0009CF5A000087F4800152F09D -:1055E00080018E9C8001E7548001EF208001E03C27 -:1055F000800183908001465880014B2C8001E58812 -:105600008001DA5480014A0C800149D48001E2FC17 -:1056100080016D48800151A8800186C880015638FC -:105620008001E7B88001EA8C80016D6C00000224E3 -:10563000800185E48002E736EBCD40804C9731084D -:10564000EA184000103CC6F0E088001DE068018CBC -:10565000EA188000103CC3B0E088002EE068019397 -:10566000EA188000103CC440E0680194EA18800009 -:10567000103CC2714BC7761CF01F003C0E9CE3CD62 -:10568000808030C8EA184000103CC400E088001D4B -:1056900030D8EA184000103CC21030E8EA18400048 -:1056A000103CC0F14B2A300B4B2CF01F00330E9CEA -:1056B000E3CD8080E0680186EA188000103CC0706D -:1056C0000E9CE3CD8080E04C008ACFB14A5AF01F97 -:1056D000002B18970E9CE3CD8080F01F00294A4ACA -:1056E000300B4A8CF01F00240E9CE3CD8080761C8A -:1056F000F01F0025F01F0025C0514A5B33CCF01F7E -:10570000002549970E9CE3CD80804A39731858983C -:10571000CD803098496AF3480044300B49FCF01FB3 -:105720000016CCFB49C973185888CCB03088F348B0 -:105730000044F2F900F87338301911EAF20A18003F -:10574000C0A03019300A303B30DCEA1C4000F01FAA -:105750000014CB7B486A300B492CF01F0007CB1B91 -:105760008001563880014A0C8001DA4680018E9C07 -:105770008001E03C8001EF2080014B2C80015E34F1 -:105780008001DA448001DA48800185E4000076383F -:1057900080016D6C000087F48001E0D4800186C830 -:1057A0008001E094EBCD40F84A37189416956E18B6 -:1057B0006E090E930E96C118300B301CEA1C400087 -:1057C0005D19300B6C39FC1C40005D196C388D285C -:1057D0006E186E091238C2001039C190300B301C9F -:1057E000EA1C40005D19300B6E19FC1C40005D196D -:1057F0006E188F086E296E381039CDF10A9B089CFF -:105800005D19873C6629123CCF71CE3B0A9B089CF0 -:105810005D198F1CCF0B5805C0706A085818C060FE -:105820000A9CF01F0006E3CD80F8EACCFFFCF01FD5 -:105830000004CF7B00000224800091E88001D3A8FF -:105840004878F14C00F8580CF9F81004F9B9010146 -:10585000F1D9E108F9F81A045EFC0000000087F4B1 -:10586000EBCD40C04948FAC6FFF4F0F700F4580702 -:10587000C051C1E8F8C70008C1B0EECAFFDC740827 -:10588000204D502815C9FB69000C15D8FB68000D88 -:105890006C0850080DC9BAC90DD8BAD8F01F000756 -:1058A0002FCD580CC0516E2C580CCE5118970E9C11 -:1058B000E3CD80C0000087F480018898D40149D9E5 -:1058C000F2F800F41838C0B078285808C2B0784808 -:1058D000201899482F8CF01F0018D802580CF9F89E -:1058E0001004F9BA01FFF1DAE108F9F81A043008F6 -:1058F000F34800F448FA78285808C180F0C9000835 -:10590000F54900F4CE8072482FF89348F4F900F47A -:105910005809CE10724820182F8C9348F01F0006AB -:10592000D80278385808CD41D802F54800F4CD3B6C -:10593000000087F48001F2A0D4014989F2F800F058 -:105940001838C0A078085808C240784820189948EC -:10595000F01F0013D802580CF9F81004F9BA01FF2F -:10596000F1DAE108F9F81A043008F34800F0780A8F -:10597000F34A00F0580ACED074482FF89548487979 -:10598000F2F900F05809CE50724820189348CE1B07 -:1059900078185808CDB1CDFB000087F48001F2A043 -:1059A000EBCD40801897580AC2C07858F608010815 -:1059B0001438E08800274948F0FB00F8580BC190E4 -:1059C000F8CAFFDC15D8204DFB68000D740950297A -:1059D00015C8F6CAFFDCFB68000C7408500815C92E -:1059E000BAC915D8BAD8F01F00092FCD580CC091EC -:1059F0000E9CF01F00070E9CF01F0006E3CF908066 -:105A0000E3CF8080000087F48001889880015938B6 -:105A1000800158BCD4214A141895E8F700F05807C3 -:105A2000C27079383006704AC02810976F387049B4 -:105A30001439E08A00086E080E965808CF710E9649 -:105A400010970A37C0D06A085808C0B00A9CF01FE7 -:105A500000145806C1300A9B0C9CF01F0012D8227B -:105A60006A185808CF416A482FF88B48CF3BE94C59 -:105A700000F078482FF89948D8220A9B0E9CF01F16 -:105A800000090E9CE94500F0F01F00050E9B0A9CE2 -:105A9000F01F0004D8220000000087F48001F2A06B -:105AA0008001F28CEBCD40C04A48FAC7FFF4F0F613 -:105AB00000F05806C051C3D86C065806C3A06D3814 -:105AC000707C2F4CF8E80000212DFAE90024F8EA58 -:105AD0000008FAEB002CF8E80010FAE90034F8EAC4 -:105AE0000018FAEB003CF9380020FB680044F93953 -:105AF0000021FB690045EEE80000FAE90000EEEA4B -:105B00000008FAEB0008EEE80010FAE90010EEEAEF -:105B10000018FAEB0018EF380020FB680020EF397E -:105B20000021FB690021F01F00062EED580CCC501F -:105B30000C9CE3CD80C00000000087F48001891038 -:105B4000EBCD40E0205D7608502817C9FB69000CBA -:105B500017D81697FB68000DF8CBFFE2306A18964D -:105B60001A9CF01F0034F01F00342FCD580CC05188 -:105B7000300C2FFDE3CD80E06E7C2F4CF8E8000068 -:105B8000212DFAE90024F8EA0008FAEB002CF8E8E5 -:105B90000010FAE90034F8EA0018FAEB003CF93892 -:105BA0000020FB680044F9390021FB6900456D388D -:105BB000707C2F4CF8E80000FAE90000F8EA0008D1 -:105BC000FAEB0008F8E80010FAE90010F8EA00180B -:105BD000FAEB0018F9380020FB680020F9390021A1 -:105BE000FB690021F01F00152EED580CCC20320B64 -:105BF000300CF01F00131895CBC0189A0E99491B52 -:105C0000F01F00110BF93008F0091800EDF800132F -:105C1000F1F90807EBF90E07FACCFFFC6D3818D83C -:105C20001A9CED45004CF01F0009301CCA3B0000D7 -:105C30008002E73680018898800189108001D8DCD5 -:105C40008001D3EC8001AD408001D3A8EBCD40C0F2 -:105C500049C649D86C09700A1439C05530070E9CE2 -:105C6000E3CD80C0350CF01F00191897CF906C0859 -:105C70002FF8350A8D08300BF01F0015320B300C51 -:105C8000F01F0014EF4C004C1898C16030084929EF -:105C90008F680E9CF30A017C8F28EF5A001CEF6876 -:105CA000002A8FF88F488F58EF4800408F188F08D0 -:105CB0008F38E3CD80C00E9C1097F01F0008CD0BED -:105CC000000076440000025880009200800091D0CD -:105CD0008001D8DC00000260800091E8EBCD4080BC -:105CE000189778485808E08A0004E3CD8080793816 -:105CF0005808C0402B4CF01F000648697208201855 -:105D00000E9C9308F01F0004E3CD80808001D3A88F -:105D100000007644800091E8D4014899F2FC00F834 -:105D2000580CC0A07848201899483008F34800F86B -:105D3000F01F0004D802F34C00F8D802000087F4EA -:105D400080015CDCEBCD40F84B131894E6F700F8CB -:105D50005807C060189B0E9CF01F002EC1D1E6F7BB -:105D600000F05807C4203006C1285806C0706F38AC -:105D70006D39704A7248103AC064E6F800F80E387F -:105D8000EE0617106E070E955807C0900E9C089BE4 -:105D9000F01F0020CEB00E9CE3CD80F8F01F001E57 -:105DA00058065F18580C5F0918971069EA0918001F -:105DB000C201089B306AEECCFFDCF01F0018089B84 -:105DC000306AEECCFFE2F01F00156F3A0899149C80 -:105DD000493BF01F001430080E9C8F088F18F01FED -:105DE00000120E9CE3CD80F8F01F000B1897CE2B0D -:105DF0000C9CF01F000E0C9CF01F000D0C9CF01F63 -:105E0000000DF01F00051897CD51CC6B000087F4F2 -:105E100080015B4080015C4C800091DC8001D3EC10 -:105E20008001AD4080015A1480015938800158BC6E -:105E300080015CDCEBCD40E04905EAF700F458074F -:105E4000C0D1C158F0C600080E9CF01F000D0E9C7A -:105E5000F01F000C5806C0B00C976E285808CF31C0 -:105E60000E9CF01F00070E9CF01F00063008EB4848 -:105E700000F4E3CD80E00000000087F4800158BC0E -:105E800080015CDC580CC04078185B98C110489ABF -:105E900074991298EDB90001F9BC0101F9BB001029 -:105EA000F3DBE038F5F80A09F9BC00015EFC5EFDA1 -:105EB000000087F4489A7498109CF0091604E21CBC -:105EC0000002F9BB0110F1DBE138F5F81A09F9B865 -:105ED0000101F3D8E12C5EFC000087F4489A749825 -:105EE000109CF0091604E21C0002F9BB01EFF1DB83 -:105EF000E128F5F81A09F9B80101F3D8E12C5EFCA4 -:105F0000000087F448887099129CA589E21C000261 -:105F1000F9BA0101F3DAE148F9B90101F1D9E12C4B -:105F20005EFC0000000087F418994868709CE21C31 -:105F30000002F1F8103FF3F81A00F9BC01015EFC11 -:105F4000000087F418994868709CE21C0002F1F880 -:105F50001041F3F81A00F9BC01015EFC000087F45F -:105F600018984859729CE21C0002F3F81A41F9BCD7 -:105F700001015EFC000087F44839300C7298A7C814 -:105F800093985EFC000087F44839300C7298A5D8CD -:105F900093985EFC000087F4D401E06A0100300BA6 -:105FA000482CF01F0003DA0A00007648800091D0E8 -:105FB000EBCD40C04A0A18967498109CE21C00026F -:105FC000C1D0F4F700F85807C1801099E2190020F9 -:105FD000C270A5C8A7A8F4FB00BC95983009497AFF -:105FE000E06CEA60F01F00163008F0061800C100EF -:105FF0003018F0061800C040301CE3CD80C0311CC2 -:10600000EECBFFE2306AF01F000FE3CF90C0312CDF -:10601000EECBFFE2306AF01F000BE3CF90C0A5B8D3 -:10602000F4FB00B89598E06CEA60487AF01F000431 -:10603000CDCB0000000087F480015F7880014558D7 -:106040008001465880015F88D401F01F0002D80209 -:1060500080018040D40148687098E2180002C03185 -:10606000109CD802F01F0003D8020000000087F443 -:10607000800183FCD40148687098E2180002C031A6 -:10608000109CD802F01F0003D8020000000087F423 -:10609000800183D8D431FACD0188E06A0168300BE1 -:1060A0001A9CF01F002CFAC6FE541A901A9CF01F7E -:1060B000002A581CC03029EDD832FAC5FFF8401824 -:1060C000F0081016EA0800081035C4120A97FAC43E -:1060D000FE98ECC1FFF8C09840182EA7F0081016E3 -:1060E000EA0800081037C3326C08204D50280DC94B -:1060F000FB69000C0DD80E9BFB68000D306A1A9CE2 -:10610000F01F0016F01F00162FCD580CCE60EECBFE -:10611000FFFA310AFACCFE88F01F0010E2E8000016 -:10612000310AE8E90000089BE2E20008FACCFE88A8 -:10613000E8E30008F01F000BCD01189B316A0E9CAC -:10614000F01F0004009CF01F0008CB6B29EDD83A2B -:10615000800091D0800160748002E73680018898C9 -:106160008000917C80016054D431FACD018CE06ACA -:106170000168300BFACCFFFCF01F0050FAC5FE504E -:10618000FACCFFFCF01F004E581CC03029DDD8327D -:10619000402858F8E088007FF0081016FAC1FFF494 -:1061A000E20800081031E0820087E06801685018BA -:1061B000EACBFFF8FAC6FFF002973004FAC0FE946B -:1061C000500BC0C85804C36040282EA7F008101612 -:1061D0002EA6E20800081037C4926A08204D502805 -:1061E0000BC9FB69000C0BD80E9BFB68000D306AD5 -:1061F0001A9CF01F0034F01F00342FCD580CCE3005 -:10620000ECCBFFFE310AFACCFE84F01F002E400BCF -:10621000F6E80000310AE0E90000FACCFE84F6E27C -:106220000008009BE0E30008F01F0028CB005804A2 -:10623000CCC10F89E8091800CC810F98F20818002A -:10624000CC410FA9F0091800CC010FB8F2081800D2 -:10625000CBC10D89F0091800CB810FD8F2081800C6 -:10626000F9B40100EE041700CB0B5804C2400A9B9E -:10627000306A089CF01F0013EACBFFF8310AE8CC23 -:10628000FFFAF01F0010FACCFFFCF01F001129DD0F -:10629000D832F00A1110FAC1FFF4F40A1016E2081D -:1062A000000C300BF01F00053108E0690168502830 -:1062B0005019C7FB3FDCC6BB800091D080016074E1 -:1062C0008002E736800188988000917C80016054CC -:1062D000EBCD40C0208DBACBBA8A189B4968709C20 -:1062E000E21C0002C06118970E9C2F8DE3CD80C088 -:1062F0003008FAC6FFF8504850281A99FACAFFFC2D -:106300000C9CF01F000EC111189740285808C0407F -:106310000C9CF01F000B404C580CCE70F01F000975 -:106320000E9C2F8DE3CD80C00C9CF01F0007581CE5 -:106330005F07CECB000087F48001E1308001D3A855 -:10634000800091E880018E9CEBCD40C0201D491754 -:1063500018966E9CE21C0002C0412FFDE3CD80C068 -:106360001A9CF01F000DEF4600FCEEF801105808D3 -:10637000C051301C2FFDE3CD80C0EECCFEECEF3AD7 -:10638000011BEF3B011AF01F0005301CCF4B000032 -:10639000000087F4800177A4800162D0EBCD4080BB -:1063A000201DBA8C48C76E98EDB80001C0402FFD83 -:1063B000E3CF808030181A99300A308B487CF01F68 -:1063C0000008581CCF511B88EF4801202FFDE3CD5A -:1063D00080800000000087F48003B7A08001776C04 -:1063E000D401201D48B91898729CE21C0002C0E03C -:1063F000300AF368004C308BFAC9FFFC486C12F885 -:106400003018F01F0006581C5F0C2FFDD80200004A -:10641000000087F48003B7A88001776CD401203D89 -:10642000BA8C496A749CE21C0002C0312FDDD8028C -:106430001B8B3038F00B1800E089001DE06832003B -:10644000EA18312EE069352EEA19312EFAE90004F6 -:10645000F4F800F8F3DBB008300A5808F1F91A0F25 -:10646000308B30181A99FACCFFFCF01F0005581C2D -:10647000CDE03FECCDCB0000000087F48001776CCD -:10648000D421206D4A0618976C98EDB80001C040E1 -:10649000300C2FADD822584C5FB8E04C00FF5F198C -:1064A0001268C0303FECCF6B300814995028169A10 -:1064B0005008189B1A951A9CF01F0014CEA01A9C25 -:1064C000F01F0013400818945808C0401A9CF01F91 -:1064D0000011402C580CC030F01F000F5814CD9103 -:1064E0006C98EDB80007C0C15837E08B000AEE0881 -:1064F000150648A9300A1009089C930ACCBB301C29 -:10650000CC9B0000000087F48001E1A480018E9CF8 -:106510008001D3A8800091E800007648EBCD40C010 -:10652000202D496718966E98E2180002C2103FF8B5 -:10653000FACAFFFEBAF8BAA8BAB8BAC8BAD8BAE85E -:10654000300BF01F000F6E98EDB80007C0E1583611 -:10655000E08B000CEC081506300A48A9301C100925 -:10656000930A2FEDE3CD80C02FEDE3CF90C0109CB8 -:106570002FEDE3CD80C00000000087F4800164802F -:1065800000007648EBCD40C0202D49F66C9CE21C03 -:106590000002C2703FF8BAF8BAA8BAB8BAC8BAD8F6 -:1065A000BAE8ECFB00F8580BC260F6CCFFE2303AD8 -:1065B000300BF01F0016FAC7FFFE301CF01F00144E -:1065C000303B0E9A300CF01F00136C99300B129870 -:1065D000ED4B0110A3D88D98EDB90007C050301CC9 -:1065E0002FEDE3CD80C0E06A010048BCF01F000B36 -:1065F000301CCF7BFAC7FFFE303A0E9CF01F000321 -:10660000CDDB0000000087F4800162D08001651CB2 -:106610008001648000007648800091D0D43120DD74 -:10662000FB690010FB68000CFAC9FFA8FEF7023CEA -:1066300018956E981696149272307201E218000244 -:1066400072147223C041300C2F3DD832E04B002031 -:10665000E08800043FFCCF9B584CE08B002158DBC6 -:106660005FBA301BFB380010F60818005F09126A89 -:10667000C030580CC1413078FACCFFD4FB680033ED -:10668000F01F007B3008303C50785058F01F0079E4 -:1066900058D6C070E08B00315856C0303FECCD5B0F -:1066A00030683019FB680033EF49011CFACCFFCD8C -:1066B000F01F0071501C1AD31AD41AD1FB38001CD9 -:1066C00004991AD80C9AFB380043FACCFFDC0A9BD9 -:1066D000F01F006A2FCD580CC1B140585808C05067 -:1066E000FACCFFECF01F0066407C580CCAD0F01FBB -:1066F0000065300CCAAB5906C6C0E0460020CCF19C -:1067000030283029FB680033EF49011CCD0BFACC4F -:10671000FFECF01F005D500C40585808C050FACCF8 -:10672000FFECF01F0057407C580CC030F01F0055A4 -:1067300040085818C8915800EFF81009F9B9010835 -:10674000F1D9E138EFF81A093009FB380010F208E6 -:106750001800C051F9D5B008F01F004C6E98EDB884 -:106760000001C0514C18F0F800FC501840185808AF -:10677000C080FB3A0010FB3B000C089CF01F00445B -:10678000306A089BEECCFEECF01F0042301AFACBC8 -:10679000FFF4EECCFEE6F01F003FEECCFEE5301A33 -:1067A000FACBFFF0F01F003B3018EF480110FB68F8 -:1067B00000326E9C4AD7EDBC0001C120EDBC000741 -:1067C000C061FB38000C50285845C1E1301CC3DBC8 -:1067D00030483039FB680033EF49011CC68B300864 -:1067E0004ADB1099109A109CF01F002CC3401ADC51 -:1067F0003018FAC9FFCA300A308B4A9CF01F0029B2 -:106800006E9C2FFDCDCBEA0915064A780C9AF0094B -:106810000007049BEF650026EF560024EECCFFFC3A -:10682000F01F001C089BEF610036306AEECCFFD8E9 -:10683000F01F00185803C110069B308AEECCFFD21F -:10684000F01F001440288FF0EF68003830188F08D0 -:10685000109CCFBA6E9CCB3B069B308AEECCFFD20D -:10686000F01F0012CF0B0000000087F4800177A416 -:106870008001EF6C80017BD88001E2148001D3A8F5 -:10688000800091E880018E9C8001641C800162D0B0 -:10689000800091DC80015E8480016AF48003B798F7 -:1068A0008001773000007648800091D0EBCD40C069 -:1068B000300749A60E98A7682FF7EC08000B76085A -:1068C0005808C0F10E985847CF714957EF3C004C1B -:1068D000F01F0014EEFC0100F01F0013E3CF90C086 -:1068E00076F8F6C9FFD2F73C00261AD8F6C8FFD8CA -:1068F0001AD91AD8F7390036F6CAFFFC1AD9F73870 -:106900000038F7390027F71B0024F01F00082FCDAF -:10691000581CCD90E3CF80C000007648000087F47B -:10692000800163E0800163488001661C7808301CA8 -:10693000F80A094C201C106C5EFCD70348787008DC -:106940005808C0901838C041C078103CC05070B88A -:106950005808CFC15EFD5EFF0000778C189A48F89A -:10696000709CE21C00025E0C70A8EDB80000C03004 -:10697000305C5EFC48AC780B583BE089000D300978 -:106980004888F00B003891189109950BF6C8FFFF65 -:1069900099085EFF3FDC5EFC000087F4000077880A -:1069A0000000776848D972A8EDB80000C1313008FE -:1069B000780A99D848ABF60A003A741999E974181C -:1069C000F8C9FFCC910C7808301CF60800389119F2 -:1069D0005EFC305C5EFC0000000087F4000077681D -:1069E000EBCD40C0189778B95809C18078C893C8D2 -:1069F0006EC891096E3C580CC050F01F000B300857 -:106A00008F3833CA6EA635AB0E9CF01F00080C9B66 -:106A10000E9CF01F0007E3CF80C078C94858911939 -:106A200078B9CE7B800091E8800091D0800183B05E -:106A30000000778CEBCD40801897580CC180789877 -:106A40005D1848F972095809C051C11872B958093E -:106A5000C0E01237CFC16E785808C0B06E3C580CF9 -:106A6000C060F01F000830088F588F38E3CF908047 -:106A70000E9C301BF01F0004E3CF90800000778C49 -:106A8000800091E8800169E0EBCD4080496972A8FF -:106A9000EDB80000C040305CE3CD8080493870091B -:106AA0001839E08A001E4928F00C00376E09580991 -:106AB000C15072DA580AF3F8000EEFF80A01F3FA3F -:106AC000000DF3F8100EF5F81A0E72E8129C910AF8 -:106AD000F01F00086E095809CED1E3CF90803FCC5B -:106AE000E3CD8080000087F400007788000077689D -:106AF00080016A34EBCD40F81897169614951294DD -:106B0000109333CCF01F000CC1403008990799B89E -:106B10009938995899889996994599649973487ABA -:106B2000301899A8741999C9930CF8C8FFD495180E -:106B3000E3CD80F8800092000000778CD401202DF6 -:106B4000500A48C972A8EDB80000C040305C2FED73 -:106B5000D80248981A99F00B032A3048FA08000B1B -:106B6000F01F0006581CF9BC0001F9BC01FECF0B58 -:106B7000000087F4000077488001F1D8EBCD40C0D9 -:106B8000201D4AC618976CA8EDB80000C441580CE7 -:106B9000C3F0789B580BC3C0780A580AC3954A695A -:106BA000F20A033850085808C061C1A870D85008CC -:106BB0005808C1601037CFB1F40815036EDA580ACF -:106BC000F3D8E009EFF8000EF3F80A01EFF8100E21 -:106BD000F5F81A0E400870DA70E9930A6E9B3F9838 -:106BE0008F18580BC0300E9C5D1B6E8B581BC0500D -:106BF000582BC150580BC0516E2A1A9CF01F000F21 -:106C00000E9C301BF01F000E2FFDE3CF90C02FFD18 -:106C1000E3CF90C0305C2FFDE3CD80C0ECF801B82D -:106C20000E38CEF130094838F14901B8CEAB00003A -:106C3000000087F40000776880016B3C800169E008 -:106C4000D40148C9169E72A8F1D8C001C031305C89 -:106C5000D8024898304A76A9F00C032C1ADAF6C804 -:106C6000FFF833CAF01F00052FFD581C5F0CD80237 -:106C7000000087F4000077488001F164D431204D92 -:106C800030084931189650285018FAC5FFF4FAC256 -:106C9000FFF802901A93FAC4FFFCC098E006032A9A -:106CA000F01F000C0E9B401CF01F000B3049049B92 -:106CB0000A9AE206032CF01F0009304818970A9937 -:106CC0001A9B089C5817CEB02FCDD83200007748B9 -:106CD0008001F1D880016B7C8001F0B4EBCD40E005 -:106CE000201D49356AA8A1A8300A49298BA8149704 -:106CF000930A14984906EC08002C2FF748FA303B09 -:106D0000F01F000F581CC0F10E985887CF5148D87B -:106D1000300991189109301B1A9CF01F000B2FFDB0 -:106D2000E3CD80E06AA8A1C88BA8CF2B000087F430 -:106D300000007788000077488001692C8001F05CB2 -:106D40000000778C8001695C5EFD5EFFEBCD4080CA -:106D5000189778785808C030788C5D180E9CF01F12 -:106D60000003E3CD80800000800091E8D4314B1017 -:106D70001895169260095809C58030047258721926 -:106D80000A38F7B400FF5809CFA10891E80C1502A2 -:106D9000F01F00291893C46060075807C2303006FE -:106DA000C0486E175807C1E06E580A38CFB10E9C24 -:106DB000F01F0022E60609276E485808C0F06E1939 -:106DC0005809EFF80002E1F80A01EFF90001EFF8C5 -:106DD0001002F3F81A026E2891092FF66E17580761 -:106DE000CE415804C1A006953006C0380836C154BB -:106DF0006A07049C6E686E8B5D18491B0E9CF01F21 -:106E000000112FF62FC56E485808CF100E9C48CBA6 -:106E1000F01F000C0836CED5069CF01F000B029C1C -:106E2000D8321891029CD83212941291CB0B0000E8 -:106E300000007794800092008001463A80016D4CFA -:106E400080014642800091E8EBCD4080324CF01F3B -:106E500000081897C080324A300BF01F00060E9CC5 -:106E6000F01F00050E9CE3CD8080000080009200A2 -:106E7000800091D080014652EBCD40FC18961695CB -:106E80001494129310924077F01F000AC100995693 -:106E900099359964998799739942487A3008991875 -:106EA00074199929930CF8C8FFFC9518E3CD80FC60 -:106EB00080016E4800007794D431FACEFFDC189739 -:106EC00016901491129310927C157C04580CC26099 -:106ED00078095809C26049A66C085808C051C09882 -:106EE00070185808C0601039CFC13018109CD832C3 -:106EF000F01F0014C13099509931996399859972A6 -:106F00009944300899186C199929930CF8C8FFFC1A -:106F10008D188F0C3018109CD8323008109CD83245 -:106F200008981AD50499069A029B009CF01F000647 -:106F30002FFD580C5F188F0CCDAB0000000077942C -:106F400080016E4880016E78EBCD40404856ECCC15 -:106F5000FFF8F01F000530088D168D08E3CD804046 -:106F600000007794800145D6EBCD40807847785A71 -:106F70006E18103AE0880004E3CF8080783B6E0CF6 -:106F8000F01F000B6E285808C0406E1B6E0C5D1879 -:106F90006E3CE04C002BC050300A149BF01F0005E3 -:106FA0000E9CF01F0005E3CF90800000800091DC74 -:106FB00080014658800091E8EBCD40C0203D30086C -:106FC00018979928990814961A9C308AF01F001176 -:106FD000FACBFFF80E9CF01F00102FED580CC101EA -:106FE0006E085808C0400E9CF01F000C6E2C580C08 -:106FF000C040F01F000B300C2FFDE3CD80C05806C1 -:10700000FBF81000EDF81A002FFDE3CF90C0000050 -:107010008002E7368001DE6C8001D3A8800091E811 -:10702000EBCD40C0189778185B98C0C0783B580BE0 -:10703000C17078465806C04078685908C050E3CF00 -:1070400090C0E3CF80C0785A590AE08800153FF815 -:107050008D28ECCCFFF4F01F000CE3CF90C0784CEF -:10706000580CCEE06E685908CEB12F4CF01F0006C8 -:10707000E3CF90C06C0CF01F00056E5830198D18CE -:107080008D29CE8B8001A25C800091DCEBCD40E0AD -:10709000201D1697E04C0081E0800088E08A0027E0 -:1070A000E04C0083C2F0C2B4760A1A9C300BF01F89 -:1070B0000064E08A004F585CC490314CF01F0061BE -:1070C0004008913C4009723A580AC7A06E0830093E -:1070D000990899399919EF380008992840083149D9 -:1070E000301A91594008911AC1D8584CC4A0E04CAC -:1070F0000080C330300C2FFDE3CD80E0E04C0085F4 -:10710000CFA16E0A300B1A9CF01F004DE08A0022BE -:10711000585CC1C0EF3900084008300A9119400896 -:10712000915A301B400CF01F0048581CCE41400CB7 -:10713000F01F0046C0B0400B76785808C070300C85 -:10714000F01F0043581C5F0CCD7B2FFDE3CF90E078 -:107150003FEC2FFDE3CD80E07645760A1A9C300B9C -:10716000F01F0037FE9AFFF6585CCF005805C49117 -:1071700040089135400993550FCA4008911ACD2B0C -:107180007626760A1A9C300BF01F002DFE9AFFE23D -:10719000585CCDC05806C1914008301A913640095C -:1071A00093564008911ACBEB760A1A9C300BF01FCD -:1071B0000024FE9AFFCF585CCC900FC9CAEB3FD891 -:1071C00093184009935ACAEBECC5FFED0A9CF01FD7 -:1071D000001D4008913C1899400A743B580BC2406E -:1071E0006E080C9A93089336EECBFFF430162F0CF2 -:1071F0009316F01F00184008915540099316C92BAB -:1072000040060A9CF01F000F8D3C4009723C580C50 -:10721000C1000A9A6E5BF01F000F400891550FC91C -:1072200040089119C7FB3FD895184009935BC7AB3D -:107230003FD893184009935CC75B000080016B3C0A -:1072400080009200800169A48001693C80016C404B -:10725000800091DCEBCD40FC4C151696189476021C -:107260006A095909E088001B4BE7C15878BA580AE7 -:10727000F9F8000CEFF80A01F9F8100CF5F81A0CFF -:10728000201978C8910A8B09F01F00376A0959093B -:10729000E08800056E0C580CCEA16C2338086C36C3 -:1072A000ECCCFFCCF0041800C260F01F003018973F -:1072B000C2F0B8C464080C9A990899A6069B2CCC15 -:1072C0008F9CF01F002B3808F0041800C2303818CB -:1072D000F0041800C2B04A3B30088FB8761A8FCA43 -:1072E0009507EEC9FFD46A0897192FF8301C8B0850 -:1072F000E3CD80FC64495809CD90ECC8FFC9E01883 -:10730000FFFCF009000CF01F00191897CD31E3CDF8 -:1073100080FC318A049BEECCFFF4F01F00156E7ADE -:107320008F2A580AC1018F8ACD7BEEC6FFF4318ABD -:10733000300B0C9CF01F000F049B0C9C308AF01F3C -:10734000000CCCAB6EA82FD8E018FFFC6E9C100C84 -:107350008F8C645BF01F0006CBFB0000000077A061 -:1073600000000234800091E880009200800091DCEF -:10737000800091D0D421207D1297FACEFFD04B29E6 -:1073800018947298EDB80001C040300C2F9DD8229F -:10739000FCE800003006BB295C7A50265046FAC54E -:1073A000FFF8FAC9FFE00A9CF01F00282FED580CE7 -:1073B000C2D05807C0B08F368F5640680E9B0C9CC9 -:1073C0008F28F01F0023581CC2E11A9CF01F0021D7 -:1073D0005BBCC29040076E4C580CC070F01F001E82 -:1073E00030088F388F4840075807C0401A9CF01F5C -:1073F000001B402C580CC030F01F00175804FBF83D -:107400001006E9F81A002F9DDA2A40085808C040F3 -:107410001A9CF01F0012402C580CCB80F01F000E5D -:107420002F9DD82A40085808C0401A9CF01F000B16 -:10743000402C580CC0313FDCCAABF01F00073FDCCA -:10744000CA6B0000000087F48001DF7480016C408B -:1074500080018E9C800091E88001D3A8EBCD40E0B4 -:10746000208D149616951897308A300BF01F001354 -:1074700059F6E08800052F8DE3CF80E00A9B0C9A37 -:107480001A9CF01F000FFAC9FFE030080C09FACC73 -:107490000001F368FFE0F8C6FFFF300B30AA0C9C38 -:1074A000F01F000832EB0ECC0C9CF01F0007CF4100 -:1074B0002F8DE3CF90E00000800091D0800091DC20 -:1074C0008000917080009164D43120AD189E109599 -:1074D00014974C781292709CE21C0002C0511896CE -:1074E0000C9C2F6DD832169AFAC6FFE41C9B0C9C9C -:1074F000F01F00400C9BFAC3FFFCFACAFFDC069C9D -:10750000F01F003D1896581CCEC15807C2F10E91CD -:107510000E90069CF01F0039401818945808C0407F -:10752000069CF01F0037403C580CC030F01F00355F -:107530005BB4C4D05807C170E06B0BB8E0CCFFF46B -:10754000F01F00315BDCC3A0582CC07060285BF8D2 -:10755000C04060188508CC5B029C301B3006F01FD1 -:10756000002BCBFB40988B08CBCB3FF8310C8B0822 -:10757000F01F002718941890C280F8C8FFF4500834 -:10758000109CF01F00248907640930088919089AA3 -:1075900031094A1B109CF01F00211891C20040982D -:1075A000189B9928300CF01F001E581CCB300C9BE8 -:1075B000029C3FD6F01F001BC94B029C301BF01FE2 -:1075C000001340988B08C8DB3FD6C8BB5807CFD004 -:1075D000029C301B3FD6F01F000DC83B400CF01F33 -:1075E0000012089C3FD6F01F0007C7BB000087F4BD -:1075F0008001745C80016FB880018E9C8001D3A8EB -:10760000800091E88001A22880016B7C80009200BC -:107610008001A28C8001702080016AF480016C409E -:10762000800169E08001A27CEBCD40E0209D49F81B -:1076300018991495709CE21C0002C06118960C9C6D -:107640002F7DE3CD80E0169AFAC6FFE8129B0C9CD2 -:10765000F01F00170C9B1A97FACAFFE01A9CF01F44 -:1076600000151896581CCEC11A9CF01F0013400834 -:1076700018965808C0401A9CF01F0010402C580C57 -:10768000C030F01F000F5BB6C0313FD6CD9B300C31 -:107690008B3C8B5C40880A9B8B28F01F000A581C8F -:1076A000CCF03FD6CCDB0000000087F48001745C96 -:1076B00080016FB880018E9C8001D3A8800091E882 -:1076C00080016C40EBCD40FC1895169414921293F7 -:1076D00010974076310CF01F0012C1D099369905F1 -:1076E00099149927189A3008310948EB109CF01F1B -:1076F000000E1896C100069B049C0C9AF01F000B0C -:107700001897581CC0500C9C301BF01F00090E9C91 -:10771000E3CD80FC30070E9CE3CD80FC800092001E -:1077200080016F6880016AF480017628800169E039 -:10773000EBCD406E202D4086129310951491169A31 -:10774000189B1A9CF01F0008069B0C99FAE2000097 -:107750000A9ABB23029CF01F00052FED2FEDE3CD0D -:10776000806E00008001745C80017374EBCD406812 -:10777000202D129310961495169A189B1A9CF01FA0 -:107780000008FAE800000C9ABB29069B0A9C300905 -:10779000F01F00042FED2FEDE3CD80688001745CB5 -:1077A00080017374EBCD40401896303CF01F00040C -:1077B0007848301C8D08E3CD804000008001EF6CDC -:1077C000EBCD406048A618952F060C9CF01F0009D1 -:1077D000303CF01F0009310AF8CBFF8C0A9CF01FE7 -:1077E00000070C9CF01F0006E3CF9060000087F4B8 -:1077F000800145F88001EF6C800091DC800145FA42 -:10780000D42149461894ECC5FFF00A9CF01F0012E1 -:10781000ECF700F85807C0C06F38707B2F4B322A46 -:10782000089CF01F000E0A9CF01F000DDA2A303C65 -:10783000F01F000CC060F9380088EE081800C06026 -:10784000ECCCFFF0F01F0006D82AF8CBFF78CE8BE7 -:10785000000087F4800145F88002E736800145FA90 -:107860008001EF6CEBCD40E049061895ECC7FFF0C6 -:107870000E9CF01F000F303CF01F000EECF600F8DD -:107880005806C0C0ECCBFFE2306A0A9CF01F000A29 -:107890000E9CF01F000AE3CF90E00E9CF01F000743 -:1078A0000C9CE3CD80E00000000087F4800145F8E7 -:1078B0008001EF6C8002E736800145FAEBCD404055 -:1078C000209DE04B0020E08B001CBABB580BC1B1DF -:1078D0003FF8BAA849162F060C9CF01F0011303C47 -:1078E000F01F0010322AFACBFFFEF8CCFF78F01F11 -:1078F000000E0C9CF01F000D2F7DE3CF90402F7DDC -:10790000E3CFC0403008169ABAA8189BFACCFFFC07 -:10791000F01F0007CE0B0000000087F4800145FC3B -:107920008001EF6C8002E736800145FE800091DC2B -:10793000EBCD40E01895303CF01F000B1897C110BC -:1079400048A62F060C9CF01F000A0A9B306AEECC5A -:10795000FF56F01F00080C9CF01F0007E3CF90E0DB -:10796000E3CD80E08001EF6C000087F4800145FCEE -:10797000800091DC800145FED401F01F0002D80296 -:1079800080017930EBCD40EC202D18961697586B7E -:10799000C0503FFC2FEDE3CD80ECFACCFFF8E06364 -:1079A000312EEA13322EE0623100EA12312EB92371 -:1079B00016980C99300A308B1A9CF01F0010301C5E -:1079C000F01F000F48F81893F0C5FFF00A9CF01F55 -:1079D000000E5803C0C00E9A0C9B069CF01F000BB3 -:1079E0000A9CF01F000B2FEDE3CF90EC0A9CF01FD8 -:1079F0000008069CCD0B00008001776C8001EF6CC5 -:107A0000000087F4800145FC800091DC800145FE88 -:107A1000EBCD40E01897303CF01F0018EEC8000195 -:107A200018955818E0880004E3CF80E058175F09E4 -:107A300049366D1858385F0AF5E90009C0E1582742 -:107A40005F08F5E80008C030E3CF90E0F01F000DBC -:107A5000C0A18B47E3CF90E0F01F000B6D185838A2 -:107A60005F0ACEEB303CF01F000578485818CF2055 -:107A7000F01F0005CEFB00008001EF6C000087F4D2 -:107A800080017BC88001F340EBCD40F81696189337 -:107A900076085858E08A002A49A83064F0C5FFF0FB -:107AA00097040A9CF01F0018301CF01F001818974C -:107AB000C160202D189B089A1A9CF01F0015F01F1A -:107AC00000152FED580CC1616C0A0E9B069CF01F2F -:107AD00000120A9CF01F0011E3CF90F80A9CF01FDF -:107AE000000F0E9CE3CD80F830683FFC9708E3CD93 -:107AF00080F80A9CF01F00093FBCE3CD80F800002D -:107B0000000087F4800145F88001EF6C8002E736C1 -:107B1000800188B0800091DC800145FA0050F200BD -:107B2000000FAC003008F9480320F94803245EFC3C -:107B3000EBCD40C016971496F8FE0320FCCBFFFF58 -:107B4000F60A141FE069851FEA1951EBF60904488B -:107B5000A5591419F8FA0324F2091064121B143BF6 -:107B6000C0B0F94B0320F80E0927FCC8FF9CF808A9 -:107B70000926E3CF90C0E3CF80C0D401189EF8FC63 -:107B80000324FCF803201838C1F0F8C8FF9CFC0C53 -:107B9000032CFC08032930089709E069851FEA19BE -:107BA00051EBFCFB0324FC0B09282FFBF6090448CE -:107BB000F60A141FA5591419F2091064F6090109EF -:107BC000FD490324D802D80A4838F0F900F85809CA -:107BD0005F1C5EFC000087F43018198CF00C180054 -:107BE0005F0A3058F00C18005F09124AC0F1306883 -:107BF000F00C1800C0B03028F00C1800C080584CB1 -:107C0000F9BC0003F9BC01005EFC5EFF302C5EFC99 -:107C100048C8F0F800FC5818C0D0C0635828C0D03D -:107C20005838C0505EFF580C5F0C5EFC583C5F8CAF -:107C30005EFC581C5F8C5EFC582C5F8C5EFC000068 -:107C4000000087F4EBCD40C01897169E740A580ABE -:107C5000C0D0753A580AC0A0747A580AC0704FF85C -:107C6000F0F901045889E0880004E3CF80C04FC8D0 -:107C7000F009032F94D8EDB80004CF813008301CF0 -:107C80009D08E3CD80C0F53900C83FF8F009180021 -:107C9000CED0F51B00D2580BCE90F51C00D030266C -:107CA000F4FA00D8F40C002811B9EC091800E080AF -:107CB00000BFF8C8FFFF3009F40800280C9CF0CA88 -:107CC000FFFDC07815882FCAF8081800E08000B0C2 -:107CD0002FF91639CF85CCABF53900C83FF8F0093C -:107CE0001800CC40F51B00D2580BCC00F51C00D07E -:107CF0003016F4FA00D8F40C002811B9EC09180079 -:107D0000E08000A4F8C8FFFF3009F40800280C9CAC -:107D1000F0CAFFFDC07815882FCAF8081800E08067 -:107D200000952FF91639CF85CA1BF53900A43FF805 -:107D3000F0091800C9B0F51B00B2580BC970F51C4A -:107D400000B03026F4FA00B8F40C002811B9EC09A0 -:107D50001800C660F8C8FFFF3009F40800280C9C22 -:107D6000F0CAFFFDC06815882FCAF8081800C58042 -:107D70002FF91639CF95C7ABF53900A43FF8F009B4 -:107D80001800FE90FF74F51B00B2580BFE90FF6FB9 -:107D9000F51C00B03026F4FA00B8F40C002811B934 -:107DA000EC091800C3D0F8C8FFFF3009F408002818 -:107DB0000C9CF0CAFFFDC06815882FCAF80818008F -:107DC000C2F02FF91639CF95C51BF53900A43FF83D -:107DD000F0091800FE90FF4BF51B00B2580BFE9007 -:107DE000FF46F51C00B03016F4FA00B8F40C002879 -:107DF00011B9EC091800C220F8C8FFFF3009F408D7 -:107E000000280C9CF0CAFFFDC06815882FCAF8082E -:107E10001800C1402FF9123BFE99FFF9C27B3028B0 -:107E2000AE8830199D09129CE3CD80C03028AE8801 -:107E30003029301C9D09E3CD80C03018AE88301940 -:107E40009D09129CE3CD80C03018AE883029301CCB -:107E50009D09E3CD80C00000000087F48003B7B027 -:107E60003028F00C1800C390E088001B3048F00C5C -:107E70001800C3503058F00C1800C21030093028D8 -:107E8000F00B1800C160F00B1800E08B001B3018DD -:107E9000F00B1800C100300812385F5C5EFC30182F -:107EA000F00C1800CEC130193028F00B1800CEC1EC -:107EB0003038C02830181039CF045EFE3029CE0B80 -:107EC0003048F00B1800C0703058F00B1800CE414D -:107ED0003028CF2B3048CF0B3039CD2B3049CD0B4C -:107EE000D431307977387075B8891894581AC0D061 -:107EF000C043582AC4C0D83A7738707A94D9EDB9BB -:107F00000004E0800087DA3AEB3900A43FF8F0097A -:107F10001800CF20EB0800B03009F2081900CF405C -:107F2000149112923006307B30533060C1A8E007C4 -:107F30001800C2B03028F0071800C7A03048EE087B -:107F40001800F9BC0003F9BC0100F01F003CE9F780 -:107F50001E002FF6EB1800B00C38FE9AFFD6098BE6 -:107F6000EAF800B8F006002811B70E9CF01F0034A4 -:107F7000FE9AFFF1E20718005F08E60718005F09A4 -:107F80001248E4081800CD40301CCE0BEB3900C875 -:107F90003FF8F0091800CB00EB0800D03009F208D8 -:107FA0001900CB2012913006307B301230533060F4 -:107FB000C1A8E0071800C2B03028F0071800C3A01D -:107FC0003048EE081800F9BC0003F9BC0100F01FAE -:107FD000001BE9F71E002FF6EB1800D00C38FE9AB4 -:107FE000FF94098BEAF800D8F006002811B70E9C20 -:107FF000F01F0013FE9AFFF1E40718005F08E60780 -:1080000018005F091248E2081800CD40301CCE0B62 -:10801000307B305CF01F000AFE9AFF77301CF01FA7 -:108020000007FE90FF723058301CA888D832302CE0 -:10803000C8DB302CCCDB000080017C1080017E602E -:108040003008484A48499508951893085EFC000096 -:10805000000089EC00008C5CEBCD4080189E198BF1 -:10806000580BC130300A3017149CFC0A00092FFA53 -:1080700013982018EE080948F9E81008F9D8B0104C -:10808000163ACF45E3CD8080169CE3CD80807938C9 -:10809000707A3308F53900C8F0091800C0205EFD79 -:1080A000F51800D4E218000C5848C0E0E08A000837 -:1080B0005888C08058C8CF41310C5EFC5808CF01A9 -:1080C0005EFF304C5EFC302C5EFCD703EBCD40E015 -:1080D00030081896109A169C8D084927760E301590 -:1080E000109BC0A8F80A00082FFA11C9EE0B070868 -:1080F000A7D91039C0A01C3ACF652FFB58DBE08B05 -:10810000000E300A780ECF8B6C08EA0B0949124832 -:108110008D082FFB58DBFE98FFF6E3CF90E00000C0 -:108120008003B7F4EBCD40C030069906149EF8C723 -:10813000FFFC1799EC091800C0E00C9AF60A000839 -:1081400011A90EC978082FF899082FFA1798143832 -:10815000FE99FFF61D993008F0091800C0F0300BA9 -:10816000FC0B000811A9EE0B0B0978082FF89908F1 -:108170002FFB1D981638FE99FFF5E3CF90C0EBCD8D -:1081800040F816941897780B68065806E08A002C79 -:10819000F6C8FFFCE8C5FFFCF8080003300E2FCC42 -:1081A000EA0E070A580BE08A00130FC81458F1D8DA -:1081B000C007C1503009C078F80907081458F1D831 -:1081C000C007C0D02FF9123BFE99FFF8597BE08B16 -:1081D000000706CA6E0B2FFB8F0B68062FFE1C369E -:1081E000FE99FFE0E3CF90F8EBCD40FE1894169295 -:1081F0001497780676055805E08A0025ECC8FFFC40 -:10820000F6C3FFFCF8080001300EF4CCFFFCE60ECC -:10821000070A6E0B580BE08A00120FC81458F1D8E9 -:10822000C007C1203009C078F80907081458F1D8F0 -:10823000C007C0A02FF91639CF852FFE1C35FE9937 -:10824000FFE8E3CF90FE5976FE9BFFF902CA68066D -:108250002FF689062FFE64051C35FE99FFDACF2B19 -:10826000D42178045804E08A0027F8C7FFFC493875 -:108270000F8B700C11C6580CE08A0017F0C5FFFC7C -:10828000300EEDEB2008F1D8C007C0F00A9A300993 -:10829000C0782FFA15881658F1D8C007C0602FF99A -:1082A000123CFE99FFF8D82A2FFE2FF7083EC03463 -:1082B0000F8BCE8BDA2A00000000023CD4211897E5 -:1082C00076055805E08A0026F6C6FFFCF8CEFFFCCE -:1082D000300B1694C0482FFB0A3BC1B4EC0B070AC5 -:1082E000E80A1800CF946E0C580CE08A00120FC8F0 -:1082F0001458F1D8C007CF003009C078FC0907082E -:108300001458F1D8C007CE802FF91839CF85D82A54 -:10831000DA2A3248F00C1800C110E08800113488C5 -:10832000F00C1800C0B0E08800183608F00C1800F7 -:10833000C05036C8F00C1800C0E15EFF3128F00CC8 -:108340001800CFC03188F00C1800CF8030C8F00C76 -:108350001800CF405EFD3308F00C1800CFC1CEEB03 -:10836000EBCD40E078055805E08A0010F8C6FFFC28 -:108370003007C0380A37C0940D8C2FF72FF6F01F46 -:108380000004CF90E3CF90E0E3CF80E08001831240 -:108390004838F14B01DCF14C01D85EFC000087F459 -:1083A0004838F14B01ECF14C01E85EFC000087F429 -:1083B000EBCD40801697581BC050582BC080E3CFA0 -:1083C0008080F01F00050E9CE3CD8080F01F00022E -:1083D000E3CF9080800091E8D401580CC070486BC6 -:1083E000760AE04A0168E0880003D80AF01F00031B -:1083F000DA0A0000000089EC800091DCD401580CFE -:10840000C0A078185908E08B0007780AE04A016894 -:10841000E0880003D80A189B482CF01F0003DA0AF2 -:10842000000089EC800091DCEBCD4040350A1896C5 -:10843000F01F000330088D48E3CD8040800091DCC0 -:10844000D401306AF01F0002D8020000800091DCE5 -:10845000D401300CF01F0002DA0A000080016C7CAD -:10846000D421201D189414971296169A1095189BD3 -:108470001A9CF01F001CE08A0032585CC27058063B -:108480005F1858075F191268C241300840099338D5 -:10849000400A95584008301B9115400CF01F0012FF -:1084A000581CC100400C78785808C090189B089C54 -:1084B000F01F000E581CC0A03FDCC098301BF01FFE -:1084C000000C400C78785808CF21301C2FFDD822A2 -:1084D0004008913740099356CDEB3FEC2FFDD82251 -:1084E00080016B3C800169A480016C40800169E0DF -:1084F000EBCD40C018971696303CF01F00283DD8B1 -:108500003079AE88AE9935083F29300BAEB8AEC988 -:1085100030283019AED8EF6B0008AEABAEEBAEF939 -:1085200058065F1AF8F900BC58095F181468F60875 -:108530001800C310F8F800D05818F9B80008EFF880 -:108540000E08F8F800CC5818EFF80808F9B900043C -:10855000F1D9E038EFF80E08F8F800C85818EFF82D -:108560000808F9B90002F1D9E038EFF80E08F8F878 -:1085700000C45818EFF80808F9B90001F1D9E0383B -:10858000EFF80E08F8F900D4EF380008F1E91048C8 -:10859000EF680008E3CD80C08001EF6CEBCD404078 -:1085A0001896303C5C76F01F000E5876E088000488 -:1085B000E3CF804048B8F006032FF90C00C6E3CDA6 -:1085C0008040F90C00CAE3CD8040F90C00CEE3CD29 -:1085D0008040F90C00D2E3CD804000008001EF6CB8 -:1085E0008003B7D4D40130DCF01F0002784CD802ED -:1085F0008001EF6CEBCD40FC207D31CA1893300B2D -:108600001A9C1A92F01F001266045804E08A00189F -:10861000E6C6FFFC30070D852FF72FF60A9CF01FEA -:10862000000DC0A14008FACAFFE4F0C9FFFF100A1C -:108630005009F565FFE80E34FE99FFEF1A9B069C82 -:1086400031CAF01F00052F9DE3CD80FC800091D042 -:1086500080018312800091DCEBCD40E0207D300B67 -:10866000189731CA1A9CF01F00171A956E0B580BF9 -:10867000E08A0024300AFAC6FFFCEEC9FFFC0C9C1D -:10868000149EC0582FF9143BE08A000D2FFA13886E -:10869000FC081800CF8418C82FF96E0B143BFE9904 -:1086A000FFF7F80601061A9B50060E9C31CAF01F10 -:1086B00000062F9DE3CD80E0FAC6FFFC0C9CCF2B7B -:1086C000800091D0800091DCD421129618971695E5 -:1086D0001494580CC1205809C111314CF01F0009E5 -:1086E000C0C09907B8C599249936487A7419994930 -:1086F000930CF8C8FFF49518D822F01F0004D82274 -:1087000080009200000077A4800147E0EBCD40C0DC -:108710001896580CC110308CF01F000C1897C090A0 -:108720000C9CF01F000B8F1C1898C0A030188F08ED -:108730000E9CE3CD80C018970E9CE3CD80C00E9CAC -:108740001097F01F0004CF5B800092008001D920B9 -:10875000800091E8EBCD40C049566C075807C180B6 -:108760006E395809EFF80004EDF80A01EFF810042B -:10877000F3F81A046E4891096E2A0FCB6E0CF01FA5 -:10878000000D0E9CF01F000C6C075807CEA148B8D6 -:10879000F0C7FFEC0E9CF01F000AC071302CF01FD8 -:1087A00000090E9CF01F0008E3CD80C0000077A4F4 -:1087B000800147E0800091E8000087F4800145DCFB -:1087C0008001478C800145ECD4014848300991185C -:1087D0009109F01F0003D802000077A4800187549C -:1087E000EBCD40FE4A0618976C0816951494201895 -:1087F000E0480167E0880004E3CFC0FE580A5F1933 -:108800006C1A300B580A5F181268F6081800CF501F -:10881000183A5FB858FC5F891268F6081800CED085 -:1088200016910C92C0B82FF7641958F75F8A0E3969 -:108830005FB81468E2081800CE00EE031016306A24 -:10884000E6CCFFF80A9BEC0C000CF01F0008CEC130 -:10885000485B089C060B310A2F2BF01F00050E9C6D -:10886000E3CD80FE000089EC8000917C800091DCEB -:10887000EBCD40E018951697300C18960E9A0A9B8F -:108880002F07F01F0005C0452FF62FFCCF8B0C9C47 -:10889000E3CD80E0800187E0D401306AFACCFFFCB0 -:1088A000FACBFFF4F01F00025F0CD8028000917C2D -:1088B000EBCD4068205D3FF8FACAFFDC15D9FB68B4 -:1088C0000013FB68000EFB68000FFB680010FB68DC -:1088D0000011FB680012FAC6FFF8ACD974088D08C5 -:1088E00015C9FAC3FFFEACC93065FACBFFF20A9A8C -:1088F000069CF01F00060A9A069B0C9CF01F0004C1 -:108900005F0C2FBDE3CD80688002E7368000917C4C -:10891000D401FACBFFFCF73900241788F0091800BE -:10892000C020D80AF73A00251798F4081800CFA1FC -:10893000F6CCFFFE2DABF01F00035F0CD802000049 -:108940008000917CEBCD4040211D303CF01F001E8B -:10895000322A1896FACBFFB4FA0A000CF01F001B5B -:10896000ECC6FF78ECE80000FAE90000ECEA000849 -:10897000FAEB0008ECE80010FAE90010ECEA001845 -:10898000FAEB0018ED380020FB680020ED390021DB -:10899000FB690021FB3A00221B88F4081800C05034 -:1089A000300C2EFDE3CD80401B9AFB380023F408E9 -:1089B0001800CF71FACBFFFEFACCFFDCF01F0004E9 -:1089C0005F0CCF0B8001EF6C8002E7368000917C5A -:1089D000EBCD40E0203D4B571896EF3900943FF81F -:1089E000F0091800C3507938707C2F4CF8E800006B -:1089F000209DFAE90000F8EA0008FAEB0008F8E820 -:108A00000010FAE90010F8EA0018FAEB0018F9383B -:108A10000020FB680020F9390021FB690021F01FCC -:108A200000242F7D580CC0412FDDE3CD80E0202DA8 -:108A3000EEC7FF4A306A0E9B1A9CF01F001EF01F03 -:108A4000001E2FED580CC1C02FDDE3CF90E0F8CB16 -:108A5000FFE2306A1A9CF01F0017EECBFF4AFAC6FD -:108A6000FFFA306A0C9CF01F00130C9B1A9C306AB2 -:108A70001A95F01F00125F0C2FDDE3CD80E0ECCBE8 -:108A8000FFE2FAC5FFFA306A0A9CF01F000A0E9B4B -:108A9000306A1A9CF01F00071A9B0A9C306A1A96CB -:108AA000F01F00065F0CCC1B0000026080018944AF -:108AB0008002E736800188B08000917CD401201DBF -:108AC000500C580CC0401A9CF01F00022FFDD80219 -:108AD0008001D3A8D401201D500C580CC0401A9C12 -:108AE000F01F00022FFDD8028001D3A8EBCD40C0BB -:108AF000E06B00E41896300CF01F000A1897C0E0F5 -:108B0000E06A00E40C9BF01F0008ECC9FFF8EECA15 -:108B1000FFF8486B0E9CF01F00060E9CE3CD80C052 -:108B20008001D8DC800091DC8001D3EC8001ACA80E -:108B3000EBCD40C0E06B00EC1896300CF01F000A43 -:108B40001897C0E0E06A00EC0C9BF01F0008ECC92D -:108B5000FFF0EECAFFF0486B0E9CF01F00060E9C63 -:108B6000E3CD80C08001D8DC800091DC8001D3ECB3 -:108B70008001ACA8EBCD40FE129210914A88F0F92A -:108B800000F818933DD8733C316916977874AE8815 -:108B9000AE9930083509AEA8AEB93F283019301665 -:108BA00014954A0B303AAEC8AED9AE36EECCFFF8CB -:108BB000F01F001D069CEF65000BAE76AE66308B95 -:108BC000F01F001A8F5CC290303A496BF01F0016FC -:108BD0006E58B0B28EE86E5C303AF808002C491B33 -:108BE000F01F00116E598EE8F2080028B0B1E919A3 -:108BF00000B0E91800B21208E93900A5A3682F08EF -:108C00001039C030E3CF90FE0F9830092FE8EF59AC -:108C10000010AE98E3CF90FEE3CD80FE000087F415 -:108C200080017B1C800091DC8001D3ECD431201DBD -:108C3000314E1697330BAE9EAE8B1090FACBFFD809 -:108C40007618500818921493129176055805E08A08 -:108C50000006EA0815042EA8AE983016303AAE1673 -:108C600049E4EECCFFFCE8CBFFFCF01F001D049CA8 -:108C7000AEF3AE56AE46AE75EA0B15042F8BF01F61 -:108C800000198F4CC280303AE8CBFFFCF01F001473 -:108C90006E48B0B18EC86E4CE8CBFFFCF808002CD3 -:108CA000303AF01F000F6E498EC8F2080028B0B0AD -:108CB0003289AE695805E08A000D6E488EC98EDC97 -:108CC000EA0A1504120C400BF00C002CF01F0004F3 -:108CD0002FFDDA3A2FFDD83280017B1C800091DC19 -:108CE0008001D3ECEBCD40E0201D500B1897580CC1 -:108CF000C070169A4C4C0E9BF01F0044C6404C4668 -:108D000030080DA9F0091800C050301C2FFDE3CD2C -:108D100080E0ECCCFFE4F01F003FCF815807C2F0A9 -:108D2000301CF01F003DC3304B751A9B4B6CF01F7D -:108D3000003B1897C320F01F003A3018ED4C00CCD0 -:108D4000ACA80E9C3005400BED5500D04B07F01F32 -:108D500000351896581CC3F1EECCFFE4F01F00322A -:108D60004B28F1090142EA091900CD006E98EDB8CF -:108D7000000ECCC0F01F002E0C9CCC9B4A25EAF9BB -:108D80000320EAF803241039CCC1CD0BECCCFFE46E -:108D9000F01F0025301CCBBBECF801245818C04054 -:108DA000301CF01F0024ECCCFFE4F01F001FEAF998 -:108DB0000324EAF803201238CA90301CF01F001672 -:108DC000301CCA5B492AF50B00D2F80B1900C0A071 -:108DD0003FBCC9DBEECCFFE4AEA5F01F00133FBCE7 -:108DE000C96B3018F55800D24909F3080142F6085A -:108DF0001900CEF07498EDB8000ECEB0F01F000C44 -:108E00003FBCC85B000084CC80017B30000087F44D -:108E1000800145DC80019F3080017B7A800145C460 -:108E200080014664800145EC000002608001FBFC8B -:108E30008001A128EBCD40C01897F01F0015C1B0EC -:108E40006E4849468D186E598D2930096E2C8F2930 -:108E50006E486E3BE2180080F9B80001EDF80E0292 -:108E6000F01F000D1897581CC0803008300CACA8BB -:108E7000E3CD80C0E3CF90C0F01F00083008ED4C78 -:108E800000CCED5800D00E9CE3CD80C08001C6A080 -:108E9000000087F480014664800145C4EBCD40802A -:108EA000491A18977498EDB80001C111F4F801241B -:108EB0005818C0A07848951878599529F01F000BCC -:108EC000C091E3CD8080109CE3CD80803FBCE3CD9A -:108ED000808030086E2C6E3B8F28F01F0005E3CD9C -:108EE00080800000000087F48001C6A080018CE42F -:108EF000106104000000000040200700FFFFFFFF9A -:108F0000000000004869F2F802045828C0205EFE04 -:108F1000580CCFE0F2C8FFF099085EFF000077AC74 -:108F20005EFDD7034828912C913B5EFF000077AC93 -:108F300048384849910C930B5EFC000000007540D6 -:108F4000000074B45EFCD703D431202D500C3008DF -:108F5000FAC1FFF81690109402D84A424A43E269D7 -:108F60005A4C089A0819029B009C40085D181895F5 -:108F70005804C0B1584CF80A1780F9BA0B0449DB01 -:108F8000401CF01F001DC2E140165805C1000A97A1 -:108F90005907EE0A1780F9BA0B100C9B1417140628 -:108FA00064085C7A660C5D185807CF310A04E24405 -:108FB0005A4BFE98FFD65875E088000D4018EACC51 -:108FC000000848CBF00C000C2F8B308AF01F000AF1 -:108FD000C0913009009C129A129B40085D182FED39 -:108FE000DA3A30DC2FEDD83200007540000074B45E -:108FF00080018EF08000917CEBCD40FC49F8189404 -:10900000F0C3FDDCF0C7FFBC3072C0B8321A089B59 -:109010000A9CF01F001B1896C1D02C470637C16070 -:10902000EEC5002C5804CF316E08109C5808CF6054 -:10903000F01F00148F04EF44FFF86E185808CEE1BB -:109040008F248F322C470637CEC15804C0D0E3CFCF -:10905000C0FC6ABC580CC080F01F000A8B968BB60F -:109060006AC85808C030E3CF90FC8BD8301C3078E9 -:109070008BE8E3CD80FC0000000077AC8000917CA1 -:10908000800091E8EBCD40FE109114961895169251 -:109090001293F4C80008E0480037E08B00185859D4 -:1090A000C18049D8F0C4FE08F0C7FFE86EB8580880 -:1090B000C1300E9C321A0A9BF01F0018C1D02C47F9 -:1090C0000837CF51307CE3CD80FE30ACE3CD80FE5D -:1090D000129CE3CD80FEECCBFFFF049CF01F001040 -:1090E0000A9B8FBC8F968FD18FE30E9C321AF01F94 -:1090F000000DE3CF90FE6EBCF01F000B049CECCB88 -:10910000FFFFF01F00078FE38FBC8F968FD1E3CF57 -:1091100090FE0000000077AC8000917C8000918878 -:10912000800091DC800091E8D401487BF6F80204CD -:109130005828C020DC0AF6CBFE04306AF01F00037A -:10914000DA0A0000000077AC800091DCEBCD40FE35 -:10915000209D580B5F09580A5F08169314941069F4 -:10916000C341580BC4514A9264585808C2E03005B4 -:10917000FAC1FFFD0A970A9CC0D8ED3A0020FB38DF -:109180000023F4081800C2E00E9C64580E38E088F2 -:10919000001E64482FF7F00C03265803CEF1306A06 -:1091A000089B5804C0A0202D1A9CF01F0019F01F26 -:1091B00000192FED580CC0E05805C0506AC96CC8A2 -:1091C0001238CE350C95CE1B30050A9C2F7DE3CD91 -:1091D00080FE306A089BECCCFFDFF01F000FCD5102 -:1091E000CECB029B0C9CF01F000CCCF1CD9B189BAE -:1091F000069AFACCFFFDF01F0009FB6300234832FA -:1092000064585808CB51CE1B000077AC8002E7367B -:10921000800188B08000917C800091DCEBCD4060C3 -:10922000306A202D169618951A9CF01F0009F01F21 -:1092300000090C9A5F0B0A9CF01F00072FED581CC9 -:10924000F9BC0001F9BC01FFE3CD80608002E73684 -:10925000800188B080016480D4015C6CF01F000440 -:10926000581CF9BC0001F9BC01FFD8028001641C44 -:10927000EBCD406E202D1293189116921495300B61 -:10928000308A1A9CF01F0012306A069B1A96202D15 -:109290001A9CF01F0010F01F001030085F091AD848 -:1092A0000A9A1AD6049B1AD3029C1AD83038F01F97 -:1092B000000B2FAD5BFCC070581CF9BC01FF2FEDFB -:1092C000E3CD806E304C2FEDE3CD806E800091D0E9 -:1092D0008002E736800188B08001661CEBCD406ECD -:1092E00010911892169314951296F01F00113008E1 -:1092F0000C991AD80A9A1AD1069B049CF01F000DEB -:109300002FED583CE0890007582CC085306CE3CD28 -:10931000806E584CC070E3CFC06E5BECC050581CE0 -:10932000CFB1E3CF906E30BCE3CD806E8001A1DC85 -:109330008001F7D8EBCD4040201D10964978F0FE13 -:109340000204582EC0503FFC2FFDE3CD804030EE8C -:10935000FAC8FFFC10DE300E1A985C761ADE1AD6B8 -:10936000F01F000F2FEDFE5CFC17E0890010FE5C83 -:10937000FC16C114FE5CFB4FC070FE5CFBB4C0B0B9 -:10938000FE5CFAECCE11307CCE0B5BECC040581C7E -:10939000CDB1CDBB30BCCD9B000077AC8001F54496 -:1093A000D4014858F0F902045809C030F01F0003F6 -:1093B000D8020000000077AC80014480EBCD40E88B -:1093C0004D56189514971693E06A0218300B0C9CB2 -:1093D000F01F00524D288D05700C8D133005A36CC5 -:1093E000ED450204F01F004F8D4CC031E3CFC0E8C3 -:1093F0000A9CF01F004D581CCFA11AD5F1D7C00808 -:109400000A990A9A310B320CF01F00482FFD581CA4 -:10941000CEE1F01F0047581CCEA11AD50A980A9930 -:109420004C4A0A9B302CF01F00442FFD580CCDF005 -:1094300030670A981AD70A994BEA0A9B322CF01F18 -:10944000003E2FFD580CCD3030780A991AD84B9A2F -:109450000A980A9B323CF01F00382FFD580CCC7044 -:109460001AD50E9C0A980A994B2A0A9BF01F0032C3 -:109470002FFD580CCBC030270A981AD70A994ADA20 -:109480000A9B304CF01F002C2FFD580CCB001AD734 -:109490000A984A8A0A990A9B305CF01F00272FFD20 -:1094A000580CCA50301C0A981ADC0A994A1A0A9BAE -:1094B000F01F00212FFD580CC9A030390A981AD985 -:1094C00049CA0A990A9B31CCF01F001B2FFD580C8A -:1094D000C8E0F01F001A581CC8A1F01F0019581C42 -:1094E000FE91FF860A980C9730490C9A495B0A9CBA -:1094F000F01F0015FE90FF7C189A308B493CF01F3E -:109500000014581CFE91FF74ED4C0204EF45020C50 -:10951000E3CD80E8000077AC800091D000000258D5 -:1095200080009200800200AC8002067C8001FFB4C3 -:109530008001984C80016E788001FD8C8001A00034 -:109540008001955080016AF48003B8048001762878 -:10955000EBCD40E078185B98C031E3CFC0E078569F -:109560005866CFC1783B0C9A4985EAC7FE040E9C29 -:10957000F01F0017303A497B0E9CF01F0017C131D5 -:10958000F01F00163026EB460204F01F00150C9C5D -:10959000F01F00146A195809C14048C8700C5D19C1 -:1095A000E3CF80E037A83C49EB6801FC30E80C9B36 -:1095B0000E9CEB6901FDEB6801FEF01F000BCE1B5A -:1095C000129CE3CD80E00000000077AC800091DCCD -:1095D0008003B80C8000917C8001FD8080020290A5 -:1095E0008002023480017984EBCD40FC7875580B01 -:1095F000F9B80100F7F81A001693EB3900C83FF8E4 -:10960000F0091800C250EB0900D03008F009190029 -:10961000C4D0307430073022EE061502EAF800D8C4 -:109620000C082FF711BC089BF01F0027E08A0009E7 -:10963000EAF800D80C0811B45803E7F21A00EB1846 -:1096400000D00E38FE99FFEA089CE3CD80FCEB3891 -:1096500000A4F2081800C250EB0900B03008F0096D -:109660001900C240307430073012EE061502EAF8D5 -:1096700000B80C082FF711BC089BF01F0013E08AFC -:109680000009EAF800B80C0811B45803E7F21A0010 -:10969000EB1800B00E38FE99FFEA089CE3CD80FC81 -:1096A000787992D8EDB80004C040307CE3CD80FCDE -:1096B000307B305CF01F0004FE9AFFF9305CE3CD94 -:1096C00080FC000080017E60D431201D4D876E58E3 -:1096D0005808C0E030060C996E48F009032CF01FC2 -:1096E00000552FF66E580C990C38FE9BFFF730068C -:1096F0001A9B8F560C9CF01F00501A94400C580C6B -:10970000C0312FFDD832A36CF01F004C1890CFA0B1 -:10971000400A0C9BA36AF01F004A40085808E08AE0 -:1097200000260C950096C0782FF52FC640080A3801 -:10973000E08A001D350CF01F00418D0CCF614009FF -:109740005809E08A000F009530062FF66A0C580C75 -:10975000C040F01F003840092FC50C39FE99FFF7B3 -:10976000009CF01F00342FFDD8321A9B009CF01F84 -:1097700000324B4972084009F0090D488F585808CB -:10978000CE00300408930891A363E003000264084C -:109790006E467135344CF01F0029F9410040060631 -:1097A0008D0C6A796E48F2CBFFF2F0030306F33AB0 -:1097B000000D0C9CF01F00246A78F139000D306A0E -:1097C000ED690020ECCCFFDF640B2E2BF01F001E98 -:1097D000029B0A9CF01F001DED6C00386A498DC980 -:1097E0006A585808F9B805008DD86A79F338005ED0 -:1097F000ED6800276A7992C88DA80BF9ED59002C05 -:1098000030290BEAF20A1800E2081710F9B8000133 -:109810008DF830286E49F20309062FF4F00A18007B -:1098200008936E580838FE9BFFB1C8AB000077ACB8 -:10983000800091E88002105880009200800091D052 -:1098400000000258800091DC800195E8EBCD40C01B -:10985000201D1696582BC680E0880013586BC590C3 -:10986000587BC2D0583BC4804C076E295809C05061 -:109870004BE80C9C703B5D192FFDE3CD80C0580B6D -:10988000C0F14BA7EEF902085819C6C0EEF8020C59 -:109890003019A1D8EF690210EF48020CCE7B581B9B -:1098A000CE414B273008EEF9020C4B1AA3A9EF6802 -:1098B0000210A1D9B488EF49020CCD8B4ACA3008F6 -:1098C0001589F0091800C4C14A87EEF8020CEDB8FA -:1098D0000001CD31EF380210F2081800CCE1F01F82 -:1098E0000025F01F0025EEF8020C3016E018FFF9F5 -:1098F000EF48020CCBBBF01F002049C7EEF9020C69 -:10990000EDB90004CBA11298A5C8EF48020CCAEB30 -:1099100049673019EEF8020CEF690210A1D8300641 -:10992000EF48020CCA3B4917EEF8020CA3C81A9C78 -:10993000EF48020CF01F001140085828C050F01FDB -:10994000000DF01F000D300A4898B08AEF39021060 -:10995000F4091800C9204858F16A0210C87BB4887D -:10996000C8CB4838B089C89B000077AC000079C4E8 -:1099700080021298800196C8800177A4D401201D2E -:1099800048F9F2F802045828C0302FFDD80AF339FC -:1099900002103008F0091800C0711A9CF01F00096D -:1099A00040085828CF31F01F0008CF00F8CAFFE266 -:1099B000300B169CF01F00052FFDD802000077AC7D -:1099C000800177A4800210FC8001914CEBCD408097 -:1099D000201D4967EEF802045828C0503FFC2FFDB7 -:1099E000E3CD8080F01F0012C051302C2FFDE3CD5D -:1099F0008080EEF9020CEDB90002CF10EDB9000144 -:109A0000C031309CCEDB1A9CF01F000A4008580879 -:109A1000CED0F01F0009581CCE21EEF8020CA3A8EE -:109A2000EF48020CCDDB0000000077AC800210FC98 -:109A3000800211088001F370EBCD40C020AD189872 -:109A40001697580BC07076DC581CC0402F6DE3CDC4 -:109A500080C0109BF13A0020FAC6FFFE0C9CF01F5C -:109A6000001B0C9B209D322A1A9CF01F0019F01F2E -:109A700000192F7D580CCEB0793CFACBFFDCF01FDB -:109A8000001640985818C150C0923058F808180075 -:109A9000F9BC0003F9BC0102CDAB5828C030301C22 -:109AA000CD6B5807C0D06EC85808C0A0305CCCFB46 -:109AB0005807C0806EC85808C050304CCC8B307CE2 -:109AC000CC6B306CCC4B00008002113C8002E7363E -:109AD0008001F2BC800195E8D43120EDFEF3029CB8 -:109AE000FAC1FFA4E6F8020C18971694E2180006D3 -:109AF000C040309C2F2DD832F01F00A1C040308CC8 -:109B00002F2DD832E74C02085807C130BA8CF5D453 -:109B1000C008FAC6FFFEBA9A0E9B0C9CF01F009973 -:109B20000C9C1B9BF01F0098581CC0802F2DDC3A0A -:109B3000BA97BA87FAC6FFFECF4B029CF01F00937C -:109B40001892581CCF41029A089B0E9CF01F00905F -:109B50001890C580E6C7FFE8E6C6FE08EF3A002089 -:109B6000E1380020F4081800E08000A02C470C37F2 -:109B7000CF6130070E950E9B009CF01F0086E136EA -:109B800000381897CD40585CE08000C2E08B00B9E7 -:109B9000583CE08000B4584CC020300CF01F007ED0 -:109BA0003048F0061800E08000A83054E80618009D -:109BB000E08000983028F0061800E080009A300C11 -:109BC000F01F0076E8061800E080008F300CF01FD0 -:109BD00000745837E08B007960F85818C710301CB3 -:109BE000F01F0070300B4F0CF01F0070CA00F01F08 -:109BF0000070581CC9C1E6F8020CA1B8E748020C75 -:109C0000C7ABFAC5FFCE306A029B0A9CF01F005D0D -:109C1000FAC6FFDE0C9CF01F00673FF81AD00C9BC1 -:109C20001AD2310A1AD8204D1A9CF01F00630A9BE1 -:109C3000202D306A1A9CF01F00600499209DE6CC0C -:109C4000FDECFB380069FAEA0048FAE20050FB68D4 -:109C50000021FAEB0000FB380068FAEA0058FAE34A -:109C60000008FAE20060FAEB0010FAE30018FB6863 -:109C70000020303A0098129B4C03F01F00502EED4C -:109C80001895581CFE91FF54009BE6FC0214F01F2F -:109C9000004C5BBCC620580CC3E1189BE6FC0214C8 -:109CA000F01F00483FFCC27B0E9C009BF01F00464B -:109CB000FE91FF5E6EB55805EA071700C5DB302C34 -:109CC000F01F0038C90B5805FE90FF320A9AE13B9D -:109CD0000020009CF01F003D3018E7480208C7DB59 -:109CE000301CF01F002E301CF01F002DC73B302C05 -:109CF000F01F002AC6CB303CCFCB301CC50B586CB4 -:109D0000C080587CFE91FF4B308CC49B307CC47B60 -:109D1000305CC45B344CF01F002E089A18960E9BE2 -:109D2000F01F0018029B306AED640020ECCCFFDFCE -:109D3000F01F001400991AD60A984A6A009B31CC89 -:109D4000F01F00252FFD580CC0E0E6F8020C0A9C1D -:109D5000A1B8E748020CCCFA009BE6FC0214F01F05 -:109D60000019CC8A189BE6FC0214F01F00160C9C0C -:109D7000F01F001A3FFCCBFA000077AC800210FC09 -:109D8000800091DC800178BC800179788001914C61 -:109D900080019A3880015F60800163488001639C84 -:109DA00080017A1080018F208001FD408001F3A0A6 -:109DB000800177C08002E73680020BFC80020A70C7 -:109DC00080020B408000917C800214708000920021 -:109DD00080019E0080016E78800091E8D401202DE2 -:109DE000FACAFFF415D8BAD87409500915C8300B4F -:109DF000BAC8169CF01F00022FEDD80280019AD835 -:109E0000EBCD40E049F51697EAFC0214300BF01F49 -:109E1000001EF01F001EEEC6FFDFEF3B00200C9A75 -:109E20000E9CF01F001BC150EAF8020CA1D8202D97 -:109E30000C9BEB48020C306A1A9CEF360020F01F96 -:109E400000150C9B0E9CF01F00142FED581CC060D9 -:109E5000EAF8020CEDB80001C0600E9CF01F000F84 -:109E6000E3CD80E0301B300CF01F000D302B300CA8 -:109E7000F01F000B0E9CF01F0009E3CD80E00000F6 -:109E8000000077AC80020B40800196C88001914CA5 -:109E90008002E73680019AD8800091E88001984CD2 -:109EA000EBCD40E0202D18951697580CC0513FFC83 -:109EB0002FEDE3CD80E0580BCFB0E04B0020FE9BB0 -:109EC000FFF8FAC6FFFE306AE06B00FF0C9CF01F43 -:109ED0000008306A202D0C9B1A9CF01F00060E9B78 -:109EE0000A9CF01F00052FEDCE4B0000800091D0A2 -:109EF0008002E73680019AD8EBCD408048B7EEF873 -:109F000002045828C030E3CFC080F01F0009581C5D -:109F1000F9BC0109EFF80083F9B90010F1D9E03874 -:109F2000EFF80A83E3CD8080000077AC80020A84DA -:109F3000D40148B9F338000A104CF36C000A7218C7 -:109F40005808C0B05828C0803028726C9318301B55 -:109F500072595D19D80AD80ADA0A0000000079C8D7 -:109F60004828916B915C5EFC000079C8EBCD40C045 -:109F7000203D5CBBBA89502B109714965CC85C8856 -:109F80005807C0513FFC2FDDE3CD80C05C784959B4 -:109F90005018B28C3048FAC9FFF8300A306B492C9F -:109FA000F01F0012581CCEF11B89491A1898B48969 -:109FB000306B1A99300A48FCF01F000C581CCE3147 -:109FC00048D8300AB007306B304848CCFA0800094E -:109FD000F01F0006581CCD7148989146CD5B0000DB -:109FE00000007A288003B8108001776C0000025CC2 -:109FF0008003B8180000025E8003B820000079C812 -:10A00000EBCD40C030074A161AD78D078D17ED6784 -:10A010000008ED670009ED67000A8D378D470E983F -:10A020000E9949BA0E9B302CF01F001A2FFD580CC8 -:10A03000C0413FFCE3CD80C01AD70E980E99496A03 -:10A040000E9B304CF01F00132FFD580CCF301AD749 -:10A050000E980E99491A0E9B32ECF01F000E2FFD40 -:10A06000580CCE8031483019E06A138830AB0E9C12 -:10A07000F01F000B581CCDE10E9BECCCFFF4F01F41 -:10A080000009581CCD71CD7B000079C88001A0F07B -:10A0900080016E788001A1A08001A0A480019F6C46 -:10A0A000800144F8D401F01F000E48EA74085838C3 -:10A0B000C12030289508F539000A3008F009180049 -:10A0C000C020D8023018300B9518487C487AF01F11 -:10A0D0000008D80230089508D80200008001DA365E -:10A0E000000079C88001DA5880018E348001EF20A9 -:10A0F000EBCD408048973018EF6800086E4958094A -:10A10000C0A0308CF01F00066E4C3009485A6E3BE0 -:10A11000F01F0005E3CD8080000079C880019F30EA -:10A120008001A1CC80014558D4014989F80C11FF68 -:10A13000F338000A106CF36C000AC1E1F33800092F -:10A14000F8081800C19072185808C161F338000867 -:10A15000F8081800C06072085808C0F05818C0C04D -:10A160003018300B931848AA48ACF01F000B300B86 -:10A17000331CF01F000AD802301B485A930B488C3E -:10A18000F01F0005D8020000000079C880018E345D -:10A190008001DA588001EF2080016D6C8001DA8443 -:10A1A000EBCD404048766C3CF01F0007308CF01F30 -:10A1B000000730083009ED6800088D09E3CD8040C4 -:10A1C000000079C8800145308001A128D401308C7D -:10A1D000F01F0002D80A00008001A128EBCD4080CA -:10A1E00048E76E185828C030E3CD80806E58300B99 -:10A1F0006E6C5D18300B8F1B4899F2FA0324F2F84D -:10A2000003201438C040169CF01F0006300B332C7E -:10A21000F01F0005E3CD8080000079C8000084CCE9 -:10A2200080018CE480016D6CEBCD40C018971696D0 -:10A23000F01F0009C0C06E0C581CC0700C9B0E9C17 -:10A24000F01F0006CF91302CE3CD80C03FDCE3CD82 -:10A2500080C000008001462C80014636EBCD404096 -:10A26000301818969908F01F00040C9CF01F00038A -:10A27000E3CD80408001463280014634D401580C41 -:10A28000C030F01F0002D80280014630D4013008EF -:10A290009908F01F0002D8028001462ED401189EB2 -:10A2A000580AC0C196199688F9D9C010103CC165EA -:10A2B000F2C8FFFF973AB618D802581AC06096192C -:10A2C000F2C8FFFFB618D802969996881039C0F4E4 -:10A2D0007648F0090709B889CF3B1D897648F00C0C -:10A2E0000B099619F2C8FFFFB618D8023008973844 -:10A2F000B8889619F2C8FFFFB618D802EBCD408097 -:10A300001897580AC1D1961C9689FDDCC010FCC86C -:10A31000FFFF1238F7FA4A03F7F85004F1DEE508B8 -:10A32000EFF95801F1F95E00EFFA5800F1FA5E0119 -:10A33000F7FC5201F8C8FFFEB618E3CD8080581A2A -:10A34000C070961CF8C8FFFEB618E3CD8080969AC0 -:10A350009689F4C8FFFF1238C09476481408119902 -:10A36000B889118AB89A961CCEEB30089738B8088D -:10A37000961CF8C8FFFEB618E3CD8080EBCD408078 -:10A38000189E169C580AC0F1961B9889EFDBC010E6 -:10A39000EEC8FFFD1238C205F6C8FFFC993AB8189E -:10A3A000E3CD8080581AC070981BF6C8FFFCB8181F -:10A3B000E3CD8080969B9889F6C8FFFD1238C1C412 -:10A3C000784A160A15B8BC8815A9BC991598BCA876 -:10A3D0001589BCB9CEAB1DB8784A0E0AB4881DA940 -:10A3E000B4991D98B4A81D89B4B9981BF6C8FFFC90 -:10A3F000B818E3CD8080300899389D08981BF6C8BE -:10A40000FFFCB818E3CD8080EBCD4068189316951B -:10A410001496F01F000C0C9A0A9BE6CCFFFFF01F6D -:10A4200000090C9A0A9BE6CCFFFEF01F00060C9A6E -:10A430000A9BE6CCFFFDF01F0003E3CD806800001F -:10A440008001A29CD4211697189596141496F01F9B -:10A4500000080C9A0E9BEACCFFFEF01F00060BC80A -:10A460005808F1D4E108EFF81C01D8228001A2FCC1 -:10A470008001A408EBCD4068189316951496F01F40 -:10A4800000060C9A0A9BE6CCFFFCF01F0003E3CD0C -:10A49000806800008001A37CEBCD4068189316957E -:10A4A0001496F01F00090C9A0A9BE6CCFFFCF01FE3 -:10A4B00000070C9A0A9BE6CCFFFAF01F0004E3CDDC -:10A4C000806800008001A37C8001A2FCEBCD406885 -:10A4D000189316951496F01F000F0C9A0A9BE6CC61 -:10A4E000FFFCF01F000D0C9A0A9BE6CCFFFBF01F4F -:10A4F000000A0C9A0A9BE6CCFFFAF01F00070C9AA0 -:10A500000A9BE6CCFFF9F01F0004E3CD8068000051 -:10A510008001A37C8001A29CEBCD40681893169526 -:10A520001496F01F000C0C9A0A9BE6CCFFFCF01F5F -:10A53000000A0C9A0A9BE6CCFFFAF01F00080C9A5E -:10A540000A9BE6CCFFF9F01F0005E3CD8068000010 -:10A550008001A37C8001A2FC8001A29CEBCD40681D -:10A56000189316951496F01F00150C9A0A9BE6CCCA -:10A57000FFFCF01F00120C9A0A9BE6CCFFF8F01FBC -:10A5800000100C9A0A9BE6CCFFF6F01F000D0C9A07 -:10A590000A9BE6CCFFF4F01F00090C9A0A9BE6CC5C -:10A5A000FFF0F01F00070C9A0A9BE6CCFFEEF01FAD -:10A5B0000004E3CD806800008001A37C8001A2FC40 -:10A5C000EBCD4068189316951496F01F00090C9A6D -:10A5D0000A9BE6CCFFFCF01F00060C9A0A9BE6CC17 -:10A5E000FFF8F01F0003E3CD806800008001A37C2A -:10A5F000EBCD4068189316951496F01F00060C9A40 -:10A600000A9BE6CCFFFCF01F0003E3CD806800004E -:10A610008001A37CEBCD4068189316951496F01F2B -:10A62000000C0C9A0A9BE6CCFFFCF01F00090C9A68 -:10A630000A9BE6CCFFF8F01F00060C9A0A9BE6CCBA -:10A64000FFF4F01F0003E3CD806800008001A37CCD -:10A65000EBCD4068189316951496F01F00330C9AB2 -:10A660000A9BE6CCFFFCF01F00300C9A0A9BE6CC5C -:10A67000FFF8F01F002D0C9A0A9BE6CCFFF4F01FA8 -:10A68000002B0C9A0A9BE6CCFFF2F01F00280C9AD4 -:10A690000A9BE6CCFFF0F01F00250C9A0A9BE6CC43 -:10A6A000FFEEF01F00220C9A0A9BE6CCFFECF01F95 -:10A6B000001F0C9A0A9BE6CCFFEAF01F001C0C9AC4 -:10A6C0000A9BE6CCFFE8F01F00190C9A0A9BE6CC27 -:10A6D000FFE6F01F00160C9A0A9BE6CCFFE4F01F81 -:10A6E00000130C9A0A9BE6CCFFE2F01F00110C9AB3 -:10A6F0000A9BE6CCFFE1F01F000E0C9A0A9BE6CC09 -:10A70000FFE0F01F00090C9A0A9BE6CCFFDCF01F6B -:10A7100000060C9A0A9BE6CCFFD8F01F0005E3CD9B -:10A72000806800008001A37C8001A2FC8001A29CC3 -:10A73000EBCD4068189316951496F01F00120C9AF2 -:10A740000A9BE6CCFFFCF01F00100C9A0A9BE6CC9B -:10A75000FFFBF01F000D0C9A0A9BE6CCFFFAF01FDE -:10A76000000A0C9A0A9BE6CCFFF9F01F00070C9A2E -:10A770000A9BE6CCFFF8F01F0004E3CD80680000E0 -:10A780008001A37C8001A29CEBCD406818931695B4 -:10A790001496F01F00060C9A0A9BE6CCFFFCF01FF3 -:10A7A0000003E3CD806800008001A37CEBCD40680E -:10A7B000189316951496F01F00060C9A0A9BE6CC87 -:10A7C000FFFCF01F0003E3CD806800008001A37C44 -:10A7D000EBCD4068189316951496F01F00060C9A5E -:10A7E0000A9BE6CCFFFCF01F0003E3CD806800006D -:10A7F0008001A37CEBCD4068189316951496F01F4A -:10A8000000060C9A0A9BE6CCFFFCF01F0003E3CD88 -:10A81000806800008001A37CEBCD406818931695FA -:10A820001496F01F00060C9A0A9BE6CCFFFCF01F62 -:10A830000003E3CD806800008001A37CEBCD40687D -:10A84000189316951496F01F00060C9A0A9BE6CCF6 -:10A85000FFFCF01F0003E3CD806800008001A37CB3 -:10A86000EBCD4068189316951496F01F00060C9ACD -:10A870000A9BE6CCFFFCF01F0003E3CD80680000DC -:10A880008001A37CEBCD4068189316951496F01FB9 -:10A8900000060C9A0A9BE6CCFFFCF01F0003E3CDF8 -:10A8A000806800008001A37CEBCD4068189316956A -:10A8B0001496F01F00060C9A0A9BE6CCFFFCF01FD2 -:10A8C0000004E3CD806800008001A37C8001A650D5 -:10A8D000EBCD4068189316951496F01F00060C9A5D -:10A8E0000A9BE6CCFFFCF01F0003E3CD806800006C -:10A8F0008001A37CEBCD4068189316951496F01F49 -:10A9000000090C9A0A9BE6CCFFFCF01F00060C9A8B -:10A910000A9BE6CCFFF8F01F0003E3CD806800003F -:10A920008001A37CEBCD4068189316951496F01F18 -:10A9300000060C9A0A9BE6CCFFFCF01F0003E3CD57 -:10A94000806800008001A37CEBCD406818931695C9 -:10A950001496F01F00090C9A0A9BE6CCFFFCF01F2E -:10A9600000060C9A0A9BE6CCFFF8F01F0003E3CD2B -:10A97000806800008001A37CEBCD40681893169599 -:10A980001496F01F00090C9A0A9BE6CCFFFCF01FFE -:10A9900000060C9A0A9BE6CCFFF8F01F0003E3CDFB -:10A9A000806800008001A37CEBCD40681893169569 -:10A9B0001496F01F00060C9A0A9BE6CCFFFCF01FD1 -:10A9C0000003E3CD806800008001A37CEBCD4068EC -:10A9D000189316951496F01F00090C9A0A9BE6CC62 -:10A9E000FFFCF01F00060C9A0A9BE6CCFFF8F01F54 -:10A9F0000003E3CD806800008001A37CEBCD4068BC -:10AA0000189316951496F01F00060C9A0A9BE6CC34 -:10AA1000FFFCF01F0003E3CD806800008001A37CF1 -:10AA2000EBCD4068189316951496F01F00090C9A08 -:10AA30000A9BE6CCFFFCF01F00060C9A0A9BE6CCB2 -:10AA4000FFF8F01F0003E3CD806800008001A37CC5 -:10AA5000EBCD4068189316951496F01F00090C9AD8 -:10AA60000A9BE6CCFFFCF01F00060C9A0A9BE6CC82 -:10AA7000FFF8F01F0003E3CD806800008001A37C95 -:10AA8000EBCD4068189316951496F01F00060C9AAB -:10AA90000A9BE6CCFFFCF01F0003E3CD80680000BA -:10AAA0008001A37CEBCD4068189316951496F01F97 -:10AAB00000060C9A0A9BE6CCFFFCF01F0003E3CDD6 -:10AAC000806800008001A37CEBCD40681893169548 -:10AAD0001496F01F00060C9A0A9BE6CCFFFCF01FB0 -:10AAE0000003E3CD806800008001A37CEBCD4068CB -:10AAF000189316951496F01F00060C9A0A9BE6CC44 -:10AB0000FFFCF01F0004E3CD806800008001A37CFF -:10AB10008001A29CEBCD4068189316951496F01F07 -:10AB200000060C9A0A9BE6CCFFFCF01F0004E3CD64 -:10AB3000806800008001A37C8001D434EBCD4068A4 -:10AB4000189316951496F01F00330C9A0A9BE6CCC6 -:10AB5000FFDEF01F00310C9A0A9BE6CCFFD4F01FF9 -:10AB6000002F0C9A0A9BE6CCFFC2F01F002D0C9A16 -:10AB70000A9BE6CCFFBFF01F002B0C9A0A9BE6CC89 -:10AB8000FFBCF01F00290C9A0A9BE6CCFFB0F01F17 -:10AB900000270C9A0A9BE6CCFFACF01F00250C9A0C -:10ABA0000A9BE6CCFFA4F01F00230C9A0A9BE6CC7C -:10ABB000FF9CF01F00210C9A0A9BE6CCFF98F01F27 -:10ABC000001F0C9A0A9BE6CCFF8CF01F001D0C9A0C -:10ABD0000A9BE6CCFF72F01F001B0C9A0A9BE6CC86 -:10ABE000FF68F01F00190C9A0A9BE6CCFF44F01F87 -:10ABF00000170C9A0A9BE6CCFF50F01F00150C9A28 -:10AC00000A9BE6CCFF30F01F0013E3CD8068000004 -:10AC10008001D3448001D2DC8001D2748001CAF863 -:10AC20008001C9D88001D8608001CA688001CA9CAF -:10AC30008001CA0C8001C9A48001D4348001CDB444 -:10AC40008001CE848001D5588001D6B08001D4E443 -:10AC50008001CFFCEBCD4068189316951496F01F39 -:10AC6000000F0C9A0A9BE6CCFFFCF01F000D0C9A1B -:10AC70000A9BE6CCFFFAF01F000B0C9A0A9BE6CC6D -:10AC8000FFF9F01F00080C9A0A9BE6CCFFF8F01FB2 -:10AC90000006E3CD806800008001A37C8001A2FC57 -:10ACA0008001A29C8001AB3CEBCD406C14951296C8 -:10ACB00018921693E06A00DC129B0A9CF01F001A9F -:10ACC000ECC9FF98EACAFF98069B049CF01F001786 -:10ACD000ECC9FFBCEACAFFBC069B049CF01F001431 -:10ACE000ECC9FF68EACAFF68069B049CF01F0011CC -:10ACF000ECC9FF50EACAFF50069B049CF01F000EEF -:10AD0000ECC9FF44EACAFF44069B049CF01F000BF9 -:10AD1000ECC9FF30EACAFF30069B049CF01F000814 -:10AD2000E3CD806C8002E7368001D1588001D24C9F -:10AD30008001D1E88001D1C08001D21C8001CF9C6C -:10AD4000EBCD40EC1296F2E80000F4E90000ECE8EC -:10AD50000008F4E90008ECE20010F4E30010ECE86D -:10AD6000001814971695F4E90018E06B00E85D15DB -:10AD70008F7CC0D030CA6C7BF01F00066E7A6C7975 -:10AD8000149C0A9B2F492F4AF01F0003E3CD80EC4F -:10AD9000800091DC8001ACA8EBCD40C014971696E2 -:10ADA00074385808C160949E948AF60E00081438CE -:10ADB000F5DEE916F9B80900EFF89A03580CC090CF -:10ADC0005809C0C1189B0C9A6E4C1C0CF01F000A4D -:10ADD0008E180C08AE18E3CD80C05819CFA16E4B69 -:10ADE0000C9A1C0BF01F00048E180C08AE18E3CD53 -:10ADF00080C00000800091DCEBCD40E016971496F7 -:10AE00001895581AC0B0F01F000C0C99189B0E9A98 -:10AE10000A9CF01F000AE3CD80E09698968614996C -:10AE20001016169A0C9BF01F00053008EA060B0856 -:10AE3000E3CD80E0800091B88001AD98EBCD406813 -:10AE4000189316951496F01F00060C9A0A9BE6CCF0 -:10AE5000FFFCF01F0004E3CD806800008001A37CAC -:10AE60008001ADF8EBCD4068189316951496F01F4D -:10AE700000060C9A0A9BE6CCFFFCF01F0004E3CD11 -:10AE8000806800008001A37C8001ADF8EBCD4068B4 -:10AE9000189316951496F01F000F0C9A0A9BE6CC97 -:10AEA000FFFCF01F000C0C9A0A9BE6CCFFF8F01F89 -:10AEB00000090C9A0A9BE6CCFFF4F01F00060C99DF -:10AEC0000A9AE6CCFFF0320BF01F0003E3CD806856 -:10AED0008001A37C8001AD98EBCD40681893169556 -:10AEE0001496F01F000C0C9A0A9BE6CCFFFCF01F96 -:10AEF00000090C9A0A9BE6CCFFF8F01F00060C999B -:10AF00000A9AE6CCFFF4320BF01F0003E3CD806811 -:10AF10008001A37C8001AD98EBCD40681893169515 -:10AF20001496F01F000C0C9A0A9BE6CCFFFCF01F55 -:10AF300000090C9A0A9BE6CCFFF8F01F00070C9959 -:10AF40000A9AE6CCFFF7303BF01F0004E3CD80689F -:10AF50008001A37C8001A29C8001AD98EBCD40686C -:10AF6000189316951496F01F00180C9A0A9BE6CCBD -:10AF7000FFFCF01F00150C9A0A9BE6CCFFF8F01FAF -:10AF800000120C9A0A9BE6CCFFF4F01F000F0C9AFB -:10AF90000A9BE6CCFFF0F01F000C0C9A0A9BE6CC53 -:10AFA000FFECF01F000A0C9A0A9BE6CCFFEAF01FA8 -:10AFB00000080C990A9AE6CCFFE9303BF01F000527 -:10AFC000E3CD80688001A37C8001A2FC8001A29C6B -:10AFD0008001AD98EBCD4068189316951496F01F3C -:10AFE00000280C9A0A9BE6CCFFFCF01F00250C9A67 -:10AFF0000A9BE6CCFFF8F01F00220C9A0A9BE6CCD5 -:10B00000FFF4F01F00200C9A0A9BE6CCFFF2F01F21 -:10B01000001E0C9A0A9BE6CCFFF1F01F001B0C9A55 -:10B020000A9BE6CCFFF0F01F00180C9A0A9BE6CCB6 -:10B03000FFEFF01F00150C9A0A9BE6CCFFEEF01F05 -:10B0400000120C990A9AE6CCFFED306BF01F000F4E -:10B050000C9A0A9BE6CCFFE7F01F000B0C9A0A9BA8 -:10B06000E6CCFFE6F01F00080C990A9AE6CCFFE553 -:10B07000320BF01F0006E3CD806800008001A37C46 -:10B080008001A2FC8001A29C8001AD98EBCD4068BC -:10B09000189316951496F01F00150C9A0A9BE6CC8F -:10B0A000FFFCF01F00120C9A0A9BE6CCFFF8F01F81 -:10B0B000000F0C9A0A9BE6CCFFF4F01F000C0C9AD0 -:10B0C0000A9BE6CCFFF0F01F000A0C9A0A9BE6CC24 -:10B0D000FFEEF01F00080C990A9AE6CCFFED303B1A -:10B0E000F01F0005E3CD80688001A37C8001A2FCF5 -:10B0F0008001A29C8001AD98EBCD40681893169515 -:10B100001496F01F00120C9A0A9BE6CCFFFCF01F6D -:10B1100000100C9A0A9BE6CCFFFBF01F000D0C9967 -:10B120000A9AE6CCFFFA302BF01F000A0C9A0A9B11 -:10B13000E6CCFFF8F01F00050C9A0A9BE6CCFFF462 -:10B14000F01F0002E3CD80688001A37C8001A29CF7 -:10B150008001AD98EBCD4068189316951496F01FBA -:10B1600000120C9A0A9BE6CCFFFCF01F00100C9A10 -:10B170000A9BE6CCFFFBF01F000D0C990A9AE6CC67 -:10B18000FFFA302BF01F000A0C9A0A9BE6CCFFF85E -:10B19000F01F00050C9A0A9BE6CCFFF4F01F00029A -:10B1A000E3CD80688001A37C8001A29C8001AD98E2 -:10B1B000EBCD4068189316951496F01F000C0C9A6E -:10B1C0000A9BE6CCFFFCF01F000A0C9A0A9BE6CC17 -:10B1D000FFFBF01F00070C990A9AE6CCFFFA302B10 -:10B1E000F01F0004E3CD80688001A37C8001A29C55 -:10B1F0008001AD98EBCD4068189316951496F01F1A -:10B2000000090C9A0A9BE6CCFFFCF01F00070C9982 -:10B210000A9AE6CCFFFB303BF01F0004E3CD8068C8 -:10B220008001A37C8001A29C8001AD98EBCD406899 -:10B23000189316951496F01F00090C9A0A9BE6CCF9 -:10B24000FFFCF01F00070C990A9AE6CCFFFB303B8D -:10B25000F01F0004E3CD80688001A37C8001A29CE4 -:10B260008001AD98EBCD4068189316951496F01FA9 -:10B2700000090C9A0A9BE6CCFFFCF01F00070C9912 -:10B280000A9AE6CCFFFB303BF01F0004E3CD806858 -:10B290008001A37C8001A29C8001AD98EBCD406829 -:10B2A000189316951496F01F000C0C9A0A9BE6CC86 -:10B2B000FFFCF01F00090C9A0A9BE6CCFFF8F01F78 -:10B2C00000070C990A9AE6CCFFF7303BF01F000408 -:10B2D000E3CD80688001A37C8001A29C8001AD98B1 -:10B2E000EBCD4068189316951496F01F000C0C9A3D -:10B2F0000A9BE6CCFFFCF01F00090C9A0A9BE6CCE7 -:10B30000FFF8F01F00070C990A9AE6CCFFF7303BD4 -:10B31000F01F0004E3CD80688001A37C8001A29C23 -:10B320008001AD98EBCD4068189316951496F01FE8 -:10B33000000C0C9A0A9BE6CCFFFCF01F00090C9A4B -:10B340000A9BE6CCFFF8F01F00070C990A9AE6CC9E -:10B35000FFF7303BF01F0004E3CD80688001A37C41 -:10B360008001A29C8001AD98EBCD406818931695A2 -:10B370001496F01F000C0C9A0A9BE6CCFFFCF01F01 -:10B3800000090C9A0A9BE6CCFFF8F01F00070C9905 -:10B390000A9AE6CCFFF7303BF01F0004E3CD80684B -:10B3A0008001A37C8001A29C8001AD98EBCD406818 -:10B3B000189316951496F01F00090C9A0A9BE6CC78 -:10B3C000FFFCF01F00070C990A9AE6CCFFFB303B0C -:10B3D000F01F0004E3CD80688001A37C8001A29C63 -:10B3E0008001AD98EBCD4068169514961893F01F28 -:10B3F00000220C990A9AE6CCFFFC308BF01F001F4C -:10B400000C9A0A9BE6CCFFF4F01F001B0C9A0A9BD7 -:10B41000E6CCFFF0F01F00180C9A0A9BE6CCFFEC7C -:10B42000F01F00150C9A0A9BE6CCFFE8F01F0012F3 -:10B430000C9A0A9BE6CCFFE4F01F000F0C9A0A9BC3 -:10B44000E6CCFFE0F01F000E0C9A0A9BE6CCFFDE74 -:10B45000F01F000B0C9A0A9BE6CCFFDCF01F0008E3 -:10B460000C990A9AE6CCFFDA302BF01F0004E3CDEA -:10B47000806800008001A37C8001AD988001A2FC5F -:10B48000EBCD4068189316951496F01F00090C9A9E -:10B490000A9BE6CCFFFCF01F00070C990A9AE6CC49 -:10B4A000FFFB303BF01F0004E3CD80688001A37CEC -:10B4B0008001A29C8001AD98EBCD40681695149652 -:10B4C0001893F01F00060C990A9AE6CCFFFC308B0B -:10B4D000F01F0003E3CD80688001A37C8001AD985C -:10B4E000EBCD4068189316951496F01F00090C9A3E -:10B4F0000A9BE6CCFFFCF01F00070C990A9AE6CCE9 -:10B50000FFFB303BF01F0004E3CD80688001A37C8B -:10B510008001A29C8001AD98EBCD406818931695F0 -:10B520001496F01F00100C9A0A9BE6CCFFFCF01F4B -:10B53000000E0C990A9AE6CCFFFB306BF01F000B53 -:10B540000A9AE6CCFFF50C99306BF01F00080C9AB4 -:10B550000A9BE6CCFFEFF01F0004E3CD80680000FB -:10B560008001A37C8001A29C8001AD98EBCD406856 -:10B57000169514961893F01F000C0C990A9AE6CCB5 -:10B58000FFFC306BF01F00090C9A0A9BE6CCFFF61B -:10B59000F01F00070C9A0A9BE6CCFFF5F01F000491 -:10B5A000E3CD80688001A37C8001AD988001A29CDE -:10B5B000EBCD4068169514961893F01F000D0C996A -:10B5C0000A9AE6CCFFFC306BF01F000A0A9AE6CC20 -:10B5D000FFF60C99302BF01F00070C9A0A9BE6CC63 -:10B5E000FFF4F01F0005E3CD806800008001A37C1C -:10B5F0008001AD988001AB3CEBCD40681695149668 -:10B600001893F01F000D0C990A9AE6CCFFFC306BE2 -:10B61000F01F000A0A9AE6CCFFF60C99302BF01FB7 -:10B6200000070C9A0A9BE6CCFFF4F01F0005E3CD5F -:10B63000806800008001A37C8001AD988001AB3C54 -:10B64000EBCD4068169514961893F01F00100C99D6 -:10B650000A9AE6CCFFFC306BF01F000D0C9A0A9B97 -:10B66000E6CCFFF6F01F000B0C9A0A9BE6CCFFF429 -:10B67000F01F00080C990A9AE6CCFFF2302BF01F5D -:10B680000004E3CD806800008001A37C8001AD98B8 -:10B690008001A2FCEBCD4068169514961893F01F1C -:10B6A000000A0C990A9AE6CCFFFC306BF01F0007E9 -:10B6B0000C990A9AE6CCFFF6302BF01F0004E3CD7C -:10B6C000806800008001A37C8001AD98EBCD4068CC -:10B6D000169514961893F01F000A0C990A9AE6CC56 -:10B6E000FFFC306BF01F00070C990A9AE6CCFFF6BE -:10B6F000302BF01F0004E3CD806800008001A37CA4 -:10B700008001AD98EBCD4068189316951496F01F04 -:10B7100000220C9A0A9BE6CCFFFCF01F00200C9A3A -:10B720000A9BE6CCFFFAF01F001D0C9A0A9BE6CCA0 -:10B73000FFF8F01F001A0C990A9AE6CCFFF6306B5E -:10B74000F01F00170C9A0A9BE6CCFFF0F01F0015C3 -:10B750000C9A0A9BE6CCFFEFF01F00120C990A9A94 -:10B76000E6CCFFEE302BF01F000E0C9A0A9BE6CCC5 -:10B77000FFECF01F00090C9A0A9BE6CCFFE8F01FD3 -:10B7800000060C9A0A9BE6CCFFE4F01F0007E3CD0D -:10B79000806800008001A37C8001A2FC8001AD983C -:10B7A0008001A29C8001AB3CEBCD406816951496BD -:10B7B0001893F01F000C0C990A9AE6CCFFFC306B32 -:10B7C000F01F00090C9A0A9BE6CCFFF6F01F000759 -:10B7D0000C9A0A9BE6CCFFF5F01F0004E3CD8068CD -:10B7E0008001A37C8001AD988001A29CEBCD4068D4 -:10B7F000169514961893F01F000C0C990A9AE6CC33 -:10B80000FFFC306BF01F00090C9A0A9BE6CCFFF698 -:10B81000F01F00070C9A0A9BE6CCFFF5F01F00040E -:10B82000E3CD80688001A37C8001AD988001A29C5B -:10B83000EBCD4068189316951496F01F00120C9AE1 -:10B840000A9BE6CCFFFCF01F00100C9A0A9BE6CC8A -:10B85000FFFAF01F000D0C9A0A9BE6CCFFF8F01FD0 -:10B86000000A0A9AE6CCFFF60C99306BF01F00072D -:10B870000C9A0A9BE6CCFFF0F01F0005E3CD806830 -:10B880008001A37C8001A2FC8001AD988001AB3CCB -:10B89000EBCD4068189316951496F01F00100C9A83 -:10B8A0000A9BE6CCFFFCF01F000E0C9A0A9BE6CC2C -:10B8B000FFFAF01F000B0C990A9AE6CCFFF8306BE8 -:10B8C000F01F00080C990A9AE6CCFFF2302BF01F0B -:10B8D0000005E3CD806800008001A37C8001A2FC0C -:10B8E0008001AD98EBCD4068189316951496F01F23 -:10B8F00000090C9A0A9BE6CCFFFFF01F00060C998A -:10B900000A9AE6CCFFFE302BF01F0003E3CD8068DF -:10B910008001A29C8001AD98EBCD406816951496ED -:10B920001893F01F00130C990A9AE6CCFFFF306BB6 -:10B93000F01F00100C9A0A9BE6CCFFF9F01F000CD8 -:10B940000C9A0A9BE6CCFFF8F01F00090A9AE6CC95 -:10B95000FFF70C99306BF01F00070C9A0A9BE6CC9E -:10B96000FFF1F01F0003E3CD806800008001A29C7E -:10B970008001AD98EBCD4068189316951496F01F92 -:10B9800000060C9A0A9BE6CCFFFCF01F0004E3CDF6 -:10B99000806800008001A37C8001B918EBCD40686D -:10B9A0001696149518931499169A306BF01F000888 -:10B9B0000A9A0C9BE6CCFFFAF01F00060A9A0C9B31 -:10B9C000E6CCFFF9F01F0003E3CD80688001AD985D -:10B9D0008001A29CEBCD4068189316951496F01F39 -:10B9E00000060C9A0A9BE6CCFFFCF01F0004E3CD96 -:10B9F000806800008001A37C8001B99CEBCD406889 -:10BA0000189316951496F01F00090C9A0A9BE6CC21 -:10BA1000FFFFF01F00060C990A9AE6CCFFFE306B80 -:10BA2000F01F0003E3CD80688001A29C8001AD98E7 -:10BA3000EBCD4068189316951496F01F00060C9AEB -:10BA40000A9BE6CCFFFCF01F0004E3CD80680000F9 -:10BA50008001A37C8001B9FCD4011499169A308B23 -:10BA6000F01F0002D80200008001AD98EBCD4068C5 -:10BA7000169514961893F01F00090A9AE6CCFFFC5D -:10BA80000C99306BF01F00060C9A0A9BE6CCFFF66F -:10BA9000F01F0004E3CD80688001A37C8001AD9895 -:10BAA0008001A2FCEBCD4068189316951496F01F08 -:10BAB00000090C9A0A9BE6CCFFFCF01F00070C99CA -:10BAC0000A9AE6CCFFFB303BF01F0004E3CD806810 -:10BAD0008001A37C8001A29C8001AD98D4011499BF -:10BAE000169A320BF01F0002D80200008001AD98B8 -:10BAF000EBCD4068189316951496F01F00180C9A19 -:10BB00000A9BE6CCFFE0F01F00160C9A0A9BE6CCDD -:10BB1000FFDEF01F00140C9A0A9BE6CCFFDDF01F3D -:10BB200000110C990A9AE6CCFFDC306BF01F000E76 -:10BB30000C9A0A9BE6CCFFD6F01F000C0C9A0A9BCD -:10BB4000E6CCFFCEF01F00070C9A0A9BE6CCFFCD97 -:10BB5000F01F0004E3CD80688001BADC8001A2FC04 -:10BB60008001A29C8001AD988001BA58EBCD40685D -:10BB7000189316951496F01F00060C9A0A9BE6CCB3 -:10BB8000FFFCF01F0004E3CD806800008001A37C6F -:10BB90008001BAF0D4011499169A303BF01F0002CC -:10BBA000D80200008001AD98EBCD40E018971695C3 -:10BBB0001496F01F000D6E1C580CC0800C990A9A48 -:10BBC0006E0BF01F000AE3CD80E05816C0918A99F1 -:10BBD0006A4812088F186E098A181208AA18E3CD4D -:10BBE00080E000008001A37C8001AD98EBCD40682F -:10BBF000189316951496F01F00060C9A0A9BE6CC33 -:10BC0000FFFCF01F0004E3CD806800008001A37CEE -:10BC10008001BBA8EBCD4068189316951496F01FD1 -:10BC200000100C9A0A9BE6CCFFFCF01F000E0C994A -:10BC30000A9AE6CCFFFB303BF01F000B0A9AE6CCD9 -:10BC4000FFF80C99308BF01F00080C9A0A9BE6CC89 -:10BC5000FFF0F01F0006E3CD806800008001A37CA8 -:10BC60008001A29C8001AD988001BBA8EBCD40680B -:10BC7000169514961893F01F00090A9AE6CCFFFC5B -:10BC80000C99308BF01F00060C9A0A9BE6CCFFF44F -:10BC9000F01F0004E3CD80688001A37C8001AD9893 -:10BCA0008001BBA8EBCD40801697189B580AC0F1C5 -:10BCB0008E1C8E89FDDCC010FCC8FFF91238C285CD -:10BCC000F8C8FFF88F3AAE18E3CD8080581AC070DC -:10BCD0008E1CF8C8FFF8AE18E3CD80808E9A8E894E -:10BCE000F4C8FFF91238C2C46E48140811F9B889B3 -:10BCF00011EAB89A11D9B8A911CAB8BA11B9B8C914 -:10BD000011AAB8DA1199B8E9118AB8FACE2B17F846 -:10BD10006E4A1C0AB48817E9B49917D8B4A817C991 -:10BD2000B4B917B8B4C817A9B4D91798B4E8178923 -:10BD3000B4F98E1CF8C8FFF8AE18E3CD8080300B44 -:10BD4000308A8F3BF01F00028E1CCC4B800091D0BC -:10BD5000EBCD4068189316951496F01F000C0C9AC2 -:10BD60000A9BE6CCFFF8F01F000A0C9A0A9BE6CC6F -:10BD7000FFF6F01F00070C9A0A9BE6CCFFF4F01FB9 -:10BD80000005E3CD806800008001BCA48001A2FC16 -:10BD90008001AB3CEBCD40F8206D169714961499BA -:10BDA0001895169A306BF01F002D0C9A0E9BEACC5A -:10BDB000FFFAF01F002B0C9A0E9BEACCFFF9F01F44 -:10BDC00000280C9A0E9BEACCFFF8F01F00260C9A74 -:10BDD0000E9BEACCFFF0F01F00240C9A0E9BEACCDD -:10BDE000FFECF01F0021318A0E9B1A9CF01F001FF0 -:10BDF000EAC3FFE81A940C9A1A9B069CF01F001ADB -:10BE00005816C1801A9B0C9A6A7CF01F00199A98E8 -:10BE10008E992048F00901098B690C9A069C0E9BAB -:10BE2000F01F00116A698E181208AE182FADE3CD0D -:10BE300080F86A698E182FC81208E06B00E8BA080B -:10BE40006E5CF01F000C8B7CCF20505C1A9B0C9A10 -:10BE5000F01F0007CE3B00008001AD988001A29C3E -:10BE60008001BCA48001A37C800091DC8001BD50D6 -:10BE70008001D3ECEBCD4068189316951496F01F13 -:10BE800000120C9A0A9BE6CCFFFCF01F00100C9AE3 -:10BE90000A9BE6CCFFFAF01F000D0C9A0A9BE6CC39 -:10BEA000FFF8F01F00090C9A0A9BE6CCFFF4F01F84 -:10BEB00000060C9A0A9BE6CCFFF0F01F0005E3CDCC -:10BEC000806800008001A37C8001A2FC8001BD94F9 -:10BED000EBCD40E0189716951496F01F000B0C9AC6 -:10BEE0000A9BEECCFFFCF01F00090FD93008F009C7 -:10BEF0001800C0700C9A0A9BEECCFFF8F01F0004EB -:10BF0000E3CD80E08001A37C8001B8E48001BD9492 -:10BF1000EBCD4060202D301A18951696FACCFFFE16 -:10BF2000F01F00089A181BF92FE8F0090109AC0965 -:10BF30001BCA8B5A1BD88B482FEDE3CD80600000C5 -:10BF40008001A444EBCD40E07808975818971696E6 -:10BF50007859E049003FE0880004E3CF80E0FEF834 -:10BF6000029AF009032F78455815E0800127E04533 -:10BF70000080CF41780C301AF01F00A1E3CF90E091 -:10BF800078485808C391780C301AF01F009EE3CF10 -:10BF900090E07848F0C90005E049008FFE9BFFDF84 -:10BFA000FEF80264F009032F7848E0480081E08041 -:10BFB000010CE08A002BE0480083E0800118E08556 -:10BFC0000110E0480085CCA1780C301AF01F008FDA -:10BFD000E3CF90E0780C301AF01F008DE3CF90E0B3 -:10BFE0007848F0C90001E049009BFE9BFFB8FEF8CD -:10BFF0000222F009032FE0480081CB01780C301AAF -:10C00000F01F0085E3CF90E05848E08000E4E0486E -:10C010000080CA41781A300B780CF01F00806E0C3B -:10C020000C9B301AF01F007EE3CF90E0780C301AA2 -:10C03000F01F007CE3CF90E0780C301AF01F007AFC -:10C04000E3CF90E0780C301AF01F0078E3CF90E057 -:10C05000780C301AF01F0076E3CF90E0780C301A9D -:10C06000F01F0074E3CF90E0780C301AF01F0072DC -:10C07000E3CF90E0780C301AF01F0070E3CF90E02F -:10C08000780C301AF01F006EE3CF90E0780C301A75 -:10C09000F01F006CE3CF90E0780C301AF01F006ABC -:10C0A000E3CF90E0780C301AF01F0068E3CF90E007 -:10C0B000780C301AF01F0066E3CF90E0780C301A4D -:10C0C000F01F0064E3CF90E0780C301AF01F00629C -:10C0D000E3CF90E0780C301AF01F0060E3CF90E0DF -:10C0E000780C301AF01F005EE3CF90E0780C301A25 -:10C0F000F01F005CE3CF90E0780C301AF01F005A7C -:10C10000E3CF90E0780C301AF01F0058E3CF90E0B6 -:10C11000780C301AF01F0056E3CF90E0780C301AFC -:10C12000F01F0054E3CF90E0780C301AF01F00525B -:10C13000E3CF90E0780C301AF01F0050E3CF90E08E -:10C14000780C301AF01F004EE3CF90E0780C301AD4 -:10C15000F01F004CE3CF90E0780C301AF01F004A3B -:10C16000E3CF90E0780C301AF01F0048E3CF90E066 -:10C17000780C301AF01F0046E3CF90E0780C301AAC -:10C18000F01F0044E3CF90E0780C301AF01F00421B -:10C19000E3CF90E0780C301AF01F0040E3CF90E03E -:10C1A000780C301AF01F003EE3CF90E0780C301A84 -:10C1B000F01F003CE3CF90E0780C0A9AF01F003AA1 -:10C1C0000A9CE3CD80E0780C301AF01F0038E3CFF2 -:10C1D00090E0780C301AF01F0036E3CF90E0780C36 -:10C1E000301AF01F0034E3CF90E0780C301AF01FC3 -:10C1F0000032E3CF90E000008003B8288001AAEC71 -:10C200008001A4988003B9288001B3248001A37C15 -:10C210008003BB688001A4CC800091D08001BC1455 -:10C220008001BAA48001A4748001BA6C8001AC546E -:10C230008001AA808001AE8C8001AAC88001AAA4D6 -:10C240008001AA208001AF5C8001A9CC8001A9787F -:10C250008001A9488001A8F48001A8D08001A884A9 -:10C260008001A8608001B1548001B1B08001B1F4B7 -:10C270008001A8188001AA508001B0F88001A83C74 -:10C280008001A7F48001B4E08001B56C8001B5B0F5 -:10C290008001B5F88001B6408001BED08001B5189C -:10C2A0008001B9748001AE3C8001B3AC8001A6145A -:10C2B0008001B3688001B2E0EBCD40C012971499C1 -:10C2C0008E96109A582CC280E08A0008584CC360A1 -:10C2D000587CC190E3CF80C0580CC0A0581CCFB18F -:10C2E00058EBFE9BFFF9FEF80312F00B032F580BDF -:10C2F000CF21129C0E9BF01F00C28E98F006010CFD -:10C30000E3CD80C0202BE04B007FFE9BFFE5FEF8D5 -:10C3100002F2F00B032F582BE080015DE089001A38 -:10C32000580BC260581BCD71129C0E9BF01F00B6BB -:10C330008E98F006010CE3CD80C0580BCCC1129C46 -:10C340000E9BF01F00B28E98F006010CE3CD80C06A -:10C35000584BC170E0850148585BCBD1129C0E9BB5 -:10C36000F01F00AB8E98F006010CE3CD80C0129C4C -:10C370000E9BF01F00A88E98F006010CE3CD80C044 -:10C38000129C0E9BF01F00A48E98F006010CE3CDCA -:10C3900080C0129C0E9BF01F00A18E98F006010C2D -:10C3A000E3CD80C0129C0E9BF01F009D8E98F0067E -:10C3B000010CE3CD80C0129C0E9BF01F009A8E985A -:10C3C000F006010CE3CD80C0129C0E9BF01F00967E -:10C3D0008E98F006010CE3CD80C0129C0E9BF01FDE -:10C3E00000938E98F006010CE3CD80C0129C0E9B4A -:10C3F000F01F008F8E98F006010CE3CD80C0129CD8 -:10C400000E9BF01F008C8E98F006010CE3CD80C0CF -:10C41000129C0E9BF01F00888E98F006010CE3CD55 -:10C4200080C0129C0E9BF01F00858E98F006010CB8 -:10C43000E3CD80C0129C0E9BF01F00818E98F00609 -:10C44000010CE3CD80C0129C0E9BF01F007E8E98E5 -:10C45000F006010CE3CD80C0129C0E9BF01F007A09 -:10C460008E98F006010CE3CD80C0129C0E9BF01F4D -:10C4700000778E98F006010CE3CD80C0129C0E9BD5 -:10C48000F01F00738E98F006010CE3CD80C0129C63 -:10C490000E9BF01F00708E98F006010CE3CD80C05B -:10C4A000129C0E9BF01F006C8E98F006010CE3CDE1 -:10C4B00080C0129C0E9BF01F00698E98F006010C44 -:10C4C000E3CD80C0129C0E9BF01F00658E98F00695 -:10C4D000010CE3CD80C0129C0E9BF01F00628E9871 -:10C4E000F006010CE3CD80C0129C0E9BF01F005E95 -:10C4F0008E98F006010CE3CD80C0129C0E9BF01FBD -:10C50000005B8E98F006010CE3CD80C0129C0E9B60 -:10C51000F01F00578E98F006010CE3CD80C0129CEE -:10C520000E9BF01F00548E98F006010CE3CD80C0E6 -:10C53000129C0E9BF01F00508E98F006010CE3CD6C -:10C5400080C0129C0E9BF01F004D8E98F006010CCF -:10C55000E3CD80C0129C0E9BF01F00498E98F00620 -:10C56000010CE3CD80C0129C0E9BF01F00468E98FC -:10C57000F006010CE3CD80C0129C0E9BF01F004220 -:10C580008E98F006010CE3CD80C0129C0E9BF01F2C -:10C59000003F8E98F006010CE3CD80C0129C0E9BEC -:10C5A000F01F003B8E98F006010CE3CD80C0129C7A -:10C5B0000E9BF01F00388E98F006010CE3CD80C072 -:10C5C000129C0E9BF01F00348E98F006010CE3CDF8 -:10C5D00080C0129C0E9BF01F00318E98F006010C5B -:10C5E000E3CD80C0129C0E9BF01F002D8E98F006AC -:10C5F000010CE3CD80C000008003BDD88001A49869 -:10C600008003BE148001BC6C8001AE648001A5C0B3 -:10C610008001B4B88001A5F08001B8308001B29CDF -:10C620008001B6948001B6CC8001B9D48001BA30C3 -:10C630008001BB6C8001B7048001B7EC8001BA6C4B -:10C640008001B8908001BE748001A5188001A55CAE -:10C650008001B7A88001A7308001A7888001AE8C37 -:10C660008001AED88001A7D08001AB148001AF1843 -:10C670008001A9FC8001A9A88001AFD48001A92470 -:10C680008001B08C8001A8A88001B22C8001A7ACE9 -:10C690008001B2648001BBEC8001B4808001B3E40E -:10C6A000EBCD40FE208D306A18977853784578019D -:10C6B000FAC2FFE6300B049CF01F00384B88F139BA -:10C6C000010BE06AFFFFFB69001E300B1A9CF01F94 -:10C6D0000035302A1A9B049CF01F0033029A302840 -:10C6E0001A990A9B069CF01F00319A194B08F9D938 -:10C6F000C0101188103CF9B60200F1DCE318E06AC2 -:10C7000000FFF1DAE326EDD9E309FBF93C01F9D6A4 -:10C71000E30C1A944A78118A580AC060F4C80001E0 -:10C72000F9E80008C2918F3CF01F00238F2CC31042 -:10C730006E3A300BF01F0019FB66001F6E2BFB6377 -:10C74000001CFB65001D8E78F5D8C01020281A9CAF -:10C75000FB58001AF01F0013049C1A9B300AF01FAC -:10C7600000121A99029A0A9B069C3008F01F000FCB -:10C770002F8DE3CF90FE9A18F4C90001F9E9000962 -:10C78000F40901095C591208120CBA181206CCCB34 -:10C790002F8DE3CD80FE0000800091D0000087F453 -:10C7A0008001C7B88001A4448001C2B8000079E5C7 -:10C7B000000079E48000920030083019B838B818C9 -:10C7C000B828B80A3008994B993999285EFCD703E4 -:10C7D000EBCD4068189316951496F01F00090C9A3B -:10C7E0000A9BE6CCFFFFF01F00060C9A0A9BE6CCE2 -:10C7F000FFFEF01F0004E3CD806800008001A29CD2 -:10C800008001A2FCEBCD40681696149518931499FC -:10C81000169A303BF01F00050A9A0C9BE6CCFFFDF0 -:10C82000F01F0003E3CD80688001AD988001A29CD9 -:10C83000EBCD40681696149518931499169A303BD0 -:10C84000F01F00050A9A0C9BE6CCFFFDF01F0003C9 -:10C85000E3CD80688001AD988001A29CD431FACEEE -:10C86000FFDC189616971494129210907C157C0198 -:10C87000581AC2D0C153582AC1300D893FF8F00967 -:10C880001800C2100D98E2081900E08B0005E008BE -:10C890001900C6E23FF83009AC88AC99D83A8E1836 -:10C8A000AE383FF80D89F0091800C0D00C9C089AEA -:10C8B0000E9BF01F0034089A0E9BECCCFFFFF01F7C -:10C8C0000031CDCB3008300CAC98D83296285808BF -:10C8D000C4C0B618AE3830088B08AC983FFAAC8AA2 -:10C8E0008E198E08F2081900FE98FFEE1494ECC31E -:10C8F000FFFFC1D8E8081800EDF41E000D9A8E184D -:10C900008E89F408000B5C781019123AE089002631 -:10C91000AE1B6A082FF88B080D89E8091800CB3187 -:10C920008E198E08F2081900FE98FFCEAE39301A23 -:10C930000E9B0C9CF01F0013301A0E9B069CF01FE0 -:10C9400000110D88E4081800CD618E888E990D9A2B -:10C950001218103AE08A000E3FF83009AC88AC9902 -:10C960008E182028AE08C8AB9618B628CB4BDA3AFA -:10C970006A0A6E293018F00A094810498F29C7EB56 -:10C980008001A29CEBCD4040201D1A9E9AF65C7857 -:10C990001ADE1AD6F01F00032FED2FFDE3CD8040E5 -:10C9A0008001C85CEBCD40E0302818951AD8169667 -:10C9B00014973069F01F00072FFD580CC0700E9AB5 -:10C9C0000C9BEACCFFFEF01F0004E3CD80E00000EA -:10C9D0008001C9848001A2FCEBCD40E0301818959D -:10C9E0001AD81696149732A9F01F00072FFD580C7D -:10C9F000C0700E9A0C9BEACCFFFEF01F0004E3CD42 -:10CA000080E000008001C9848001A29CEBCD40E061 -:10CA1000305818951AD8169614973029F01F001020 -:10CA20002FFD580CC190EACCFFFE0E9A0C9BF01F14 -:10CA3000000D0E9A0C9BEACCFFFCF01F000B0E9A27 -:10CA40000C9BEACCFFFBF01F00080E9A0C9BEACC73 -:10CA5000FFFAF01F0005E3CD80E000008001C984EB -:10CA60008001A2FC8001A29CEBCD40E0301818951B -:10CA70001AD8169614973039F01F00072FFD580C5E -:10CA8000C0700E9A0C9BEACCFFFEF01F0004E3CDB1 -:10CA900080E000008001C9848001A29CEBCD40E0D1 -:10CAA000306818951AD8169614973049F01F001060 -:10CAB0002FFD580CC190EACCFFFE0E9A0C9BF01F84 -:10CAC000000D0E9A0C9BEACCFFFDF01F000A0E9A97 -:10CAD0000C9BEACCFFFCF01F00080E9A0C9BEACCE2 -:10CAE000FFFAF01F0005E3CD80E000008001C9845B -:10CAF0008001A29C8001A2FCEBCD40E0301818958B -:10CB00001AD81696149730A9F01F00072FFD580C5D -:10CB1000C0700E9A0C9BEACCFFFEF01F0004E3CD20 -:10CB200080E000008001C9848001A29CD43120BD36 -:10CB30005019500818961697581AC390C272E06898 -:10CB400000FDE06900DD1AD8300A3018F01F005CE3 -:10CB50002FFD580CC1E0300A0E9BECCCFFFEF01FFD -:10CB60000059300A0E9BECCCFFFDF01F0056300A36 -:10CB70000E9BECCCFFFCF01F0053ECCCFFFB0E9B9C -:10CB8000300AF01F0050301CC048582AC040301CEA -:10CB90002F5DD83219893FF8F0091800E080008B2A -:10CBA0009618301C2FA8B6182F5DD832761850581A -:10CBB000B1485038760A504AF6E80008F8C2FFFE3D -:10CBC000FAE90018F8C3FFFDF6EA0010F8C9FFFB08 -:10CBD000FAEB0020F8C4FFFC50293FF5FAC0FFD85B -:10CBE000E06100FDC0680D998E382FE81208AE286C -:10CBF0001AD030181AD1E06900DD109A0E9B0C9CF7 -:10CC0000F01F00312FED580CC4105805FBF5500AE9 -:10CC1000FBF8400AF9B90401F1D9E408EBD8E405BE -:10CC2000301A0E9B049CF01F0027301A0E9B069CA6 -:10CC3000F01F0024301A0E9B089CF01F00220DA844 -:10CC40003009F2081800CD010DB83509F2081800B6 -:10CC5000CCB10DC83F29F2081800CC61301A0E9BE8 -:10CC6000402CF01F00180DD84019F2081800CBC155 -:10CC70004038301CAE28F80509496E2812488F2824 -:10CC800040095809C8509305C84B4038FB58001458 -:10CC9000FAE80020EEE90010FAEA0010EEEB0000DE -:10CCA000FAE80018EEE90008AC9C3FF8AC882F5D6C -:10CCB000D8323008B898300CC6CB00008001C98447 -:10CCC0008001A29C8001C85CD431207D1895169704 -:10CCD00014961293581AC110C0B2300830290C9A19 -:10CCE0000E9B0A9CF01F0032C5712F9DD832582A26 -:10CCF000CF50301C2F9DD83276185018760AF0008D -:10CD00001410500A1A91F6E80008F8C4FFFAFAE97C -:10CD100000083FF6F6EA0010FAC2FFE8FAEB00104E -:10CD2000C1A85806FBF65006FBF84006F9B9040105 -:10CD3000F1D9E408EDD8E406301A0E9B089CF01FE8 -:10CD4000001D0BE8E6081800C1D00B998E382FE8BB -:10CD50001208AE2804983029301A0E9B0A9CF01F46 -:10CD60000014CE01BA20E2E80010EEE90010E2E87B -:10CD70000000EEE90000E2EA0008EEEB00082F9D5B -:10CD8000D83230186E29F006094AAE201449109C9A -:10CD90008F292F9DD8320B982FF8EACCFFFA0C9AE6 -:10CDA0000E9BAA98F01F0003301CCA5B8001CB2C9D -:10CDB0008001A29CEBCD40EC206D301918971693A2 -:10CDC0001495F01F002DC0412FADE3CD80ECEECCCB -:10CDD000FFF90A9A069BF01F00290A9A069BEECCDF -:10CDE000FFF8F01F00260A9A069BEECCFFF7F01F13 -:10CDF00000230A9A069BEECCFFF6F01F00210A9A48 -:10CE0000069BEECCFFF2F01F001E0A9A069BEECCAA -:10CE1000FFEEF01F001B0A9A069BEECCFFEAF01F04 -:10CE2000001858055F0858255F091248CCE06608CD -:10CE30005008661886160A9A5018EBD8B010BA1522 -:10CE4000E6E80008FAE900082026E6E20010E068BB -:10CE500000FD0A16AE961A9BFAE300100E9C1AD833 -:10CE6000E06900DD3018F01F00072FFD2FADE3CD86 -:10CE700080EC00008001CCC88001A29C8001C7D05A -:10CE80008001C984EBCD40EC206D18971693149562 -:10CE9000582AC18119893FF8F0091800F9F91801D9 -:10CEA000F7F81201F9BA0102F1DAE108F1D9E10863 -:10CEB000F7F81C01F9B80000F9F80E012FADE3CD29 -:10CEC00080EC3009F01F0019CFA0EECCFFF90A9AD0 -:10CED000069BF01F00170A9A069BEECCFFF8F01F86 -:10CEE00000145805CEC166085008661886160A9ABE -:10CEF0005018EBD8B010BA15E6E80008FAE90008B7 -:10CF00002026E6E20010E06800FD0A16AE961A9BA5 -:10CF1000FAE300100E9C1AD8E06900DD3018F01F0B -:10CF200000052FFDCCCB00008001CCC88001A29C65 -:10CF30008001C984D42112951497580A5F095805B5 -:10CF40005F08169A1248C2510B986E29F0C4FFFE72 -:10CF5000F2C800015BD8E08B0015129C089B5D1A9B -:10CF600018965806C0C06E086E192FF80809089A5E -:10CF70000A9B8F088F190C9CF01F00080C9CD8226C -:10CF8000089B5D1A300818968F2C8F188F08CEAB2F -:10CF900030060C9CD8220000800091DCEBCD40FCD8 -:10CFA00012951494580A5F0958055F0818921248A0 -:10CFB0001693C191300995296A085808E08A00162D -:10CFC00012966A270E99089A069B049CF01F000B84 -:10CFD0002FF6EEF7FFF86A085807F7B701F80C3894 -:10CFE000FE99FFF2E3CD80FCEAE80000F4E90000DE -:10CFF0006A2A892AE3CD80FC8001CF34EBCD40FC46 -:10D0000018931695581AC2C0C053582AC5E0E3CDEC -:10D0100080FC782778085808FE9AFFFB7819580991 -:10D02000FE9AFFF79698300612087649F208000437 -:10D030000F9A0E9B2FEA1414089CF01F00332FF652 -:10D04000EEF7FFF866085807F7B701F80C38FE99B5 -:10D05000FFF166198A181208AA18E3CD80FC9628F9 -:10D060005808C3C0B618F9D8B010AA3C300830121E -:10D0700087088718872810948A1C8A0E189AFC0C37 -:10D080001900C212F7DAC0106A46EC0B00081199B9 -:10D09000F2C7FFFE5827C250F1DEC0101618103735 -:10D0A000E0890020E40409496A2B2FF4F3EB00081F -:10D0B000C1C0F4070008AA18F9D8B010189AFC0CDF -:10D0C0001900CE13E3CD80FC781C580CFE9AFFA10A -:10D0D00096181808B618E3CD80FC961CB62CCC6BBD -:10D0E000AA0CFDDCB010CCBBF3EB1008069A8A99B1 -:10D0F0008B28EC090009485B6A5CF01F00058A1A5E -:10D100008A0ECD8B800091DC8001D3EC8001CF347E -:10D11000EBCD40F83FF510941697149340661388B2 -:10D12000EA081800C05130070E9CE3CD80F858047F -:10D130005F1858065F991268CF700C9B5D1718979F -:10D14000C0600C9A089BF01F0004CEFBA685A69C2D -:10D15000CECB0000800091DCEBCD40C0129EF2E807 -:10D160000000F4E9000014977C2A8F2A18961D8984 -:10D17000169C3FF8F0091800C1401D993058F0097D -:10D180001800E088000F2039E06A5556EA1A555514 -:10D19000F20B141FF20A04481619F2090019C028EC -:10D1A00030091AD9189B1C990C9C7C280E9AF01FE8 -:10D1B00000042FFD8F2CE3CD80C000008001D11032 -:10D1C000EBCD406CF2E20000F4E3000072289528F9 -:10D1D0001495722813961AD6F01F00032FFD8B2C7E -:10D1E000E3CD806C8001D110EBCD406FF2E2000006 -:10D1F000F4E30000F2E00008F4E10008F2E20010BD -:10D20000F4E300101495725813961AD6F01F000319 -:10D210002FFD8B5CE3CD806F8001D110EBCD406F93 -:10D22000F2E20000F4E30000F2E00008F4E100089C -:10D23000724895481495724813961AD6F01F000349 -:10D240002FFD8B4CE3CD806F8001D110EBCD406C76 -:10D25000F2E20000F4E30000722895281495722889 -:10D2600013961AD6F01F00032FFD8B2CE3CD806C94 -:10D270008001D110D421310418971AD41696149530 -:10D2800030183329F01F00142FFD580CC0B058057A -:10D29000C0E18C986C4C0F9A100CEECBFFFEF01F87 -:10D2A000000F0F998C181208AC18D8225815CFA16E -:10D2B0000F9AE80A1800E08800073FF83009AE88A6 -:10D2C000AE99CF0B8C986C4BEECCFFFE100BF01F81 -:10D2D0000003CE8B8001C984800091DCD4213018FA -:10D2E000189716961495308410991AD4F01F0014CC -:10D2F0002FFD580CC0B05805C0E18C986C4C0F9AAB -:10D30000100CEECBFFFEF01F000F0F998C181208C7 -:10D31000AC18D8225815CFA10F9AE80A1800E08857 -:10D3200000073FF83009AE88AE99CF0B8C986C4B54 -:10D33000EECCFFFE100BF01F0003CE8B8001C984E2 -:10D34000800091DCEBCD40E0320930081AD9189505 -:10D35000169714961099F01F00132FFD580CC0F06B -:10D360005806C0F18E986E4C0B9A100CEACBFFFE5B -:10D37000F01F000D0B998E181208AE18E3CD80E057 -:10D380005816CF918E986E4B0B9A100BEACCFFFE7D -:10D39000F01F00050B998E181208AE18CF0B000075 -:10D3A0008001C984800091ACD421201D7809189691 -:10D3B000F2C800015BD8E08B0014F2C80008C0E09E -:10D3C0001A943005C0280E98500870079105680C13 -:10D3D000F01F00068D055807CF712FFDD8223008A9 -:10D3E00099082FFDD8220000800091E8EBCD40C0C5 -:10D3F00018971696F6CCFFF8F01F000DC130EEF826 -:10D40000FFF8EEC900089908F8C7FFF8930C9916C1 -:10D410000C9AE06B00FF0E9CF01F00060E9CE3CD03 -:10D4200080C018970E9CE3CD80C000008000920061 -:10D43000800091D0EBCD40FC32E818931AD81692B8 -:10D44000149430683079F01F00232FFD580CC03140 -:10D45000E3CD80FC089A049BE6CCFFFEF01F001E83 -:10D4600007993058F0091800E088001F2039E06A59 -:10D470005556EA1A5555F20B141FF20A0448F20BDE -:10D4800001055814C18030060C972FF6662C0899B8 -:10D490000E0C049A2FD7303BF01F00100C35FE996C -:10D4A000FFF6E3CD80FC5814F9B80000E7F80A0253 -:10D4B000E3CD80FCEA050017645C0E9BF01F0008BA -:10D4C000872CCC700E9A300BF01F0006CDDB0000CD -:10D4D0008001C9848001BB948001AD988001D3ECA8 -:10D4E000800091D0D421189616951497582AC161BE -:10D4F00019893FF8F0091800F9F91801F7F8120135 -:10D50000F9BA0102F1DAE108F1D9E108F7F81C01F2 -:10D51000F9B80000F9F80E01D82230083049F01FA0 -:10D52000000CC0C00D98F0C400045817C0800E99BC -:10D530000A9A089B6C2CF01F0007D822089B6A5C93 -:10D54000F01F00058D2CCF41CF9B00008001CB2C1C -:10D550008001AD988001D3ECEBCD40FC206D189498 -:10D5600016951493582AC18119893FF8F0091800BB -:10D57000F9F91801F7F81201F9BA0102F1DAE10834 -:10D58000F1D9E108F7F81C01F9B80000F9F80E012B -:10D590002FADE3CD80FC30083019F01F0040CF9054 -:10D5A0006A1E501E6A0A500AEAE80008FAE90008F2 -:10D5B000EAEA0010FAEB0010EDDEB0105813C600D6 -:10D5C000E8C7FFFA0999ECC8FFFE12080E9CE5D8DF -:10D5D000B010069A0A9BF01F00328A18E40819005E -:10D5E000CD82069A0A9BE8CCFFF8F01F002E8A181D -:10D5F000E4081900CCE2E8CCFFF4069A0A9BF01F7D -:10D600000028685C88693008F0091900C0E01896A5 -:10D6100030070C9C2FF7069A0A9BF01F00222FC69A -:10D6200088E80E38FE99FFF78A18E4081900CB1233 -:10D63000069AE8CCFFF20A9BF01F0019685888E9A7 -:10D64000887AF009002C3008F00A1900C0E018961A -:10D6500030070C9C2FF7069A0A9BF01F00132FC669 -:10D6600088F80E38FE99FFF78A18E4081900C912E5 -:10D67000069A0A9BE8CCFFF0F01F0009C8ABE8C788 -:10D68000FFFA30EA300B0E9CF01F0008099B6A5C21 -:10D69000F01F0007895CC97B8001CB2C8001A2FCB4 -:10D6A0008001C8308001C804800091D08001D3EC93 -:10D6B000EBCD40FC206D189416951493582AC18127 -:10D6C00019893FF8F0091800F9F91801F7F8120163 -:10D6D000F9BA0102F1DAE108F1D9E108F7F81C0121 -:10D6E000F9B80000F9F80E012FADE3CD80FCE06839 -:10D6F00000FF33091AD83008F01F00532FFD580CD3 -:10D70000CF406A1E501E6A0A500AEAE80008FAE989 -:10D710000008EAEA0010FAEB0010EDDEB010581332 -:10D72000E0800085E8C7FFFE0999ECC8FFFE1208FB -:10D730000E9CE5D8B010069A0A9BF01F00448A1888 -:10D74000E4081900CD22069A0A9BE8CCFFFCF01FE2 -:10D7500000408A18E4081900CC82E8CCFFF8069A49 -:10D760000A9BF01F003A684C88493008F0091900FC -:10D77000C0E0189630070C9C2FF7069A0A9BF01F02 -:10D7800000342FC688C80E38FE99FFF78A18E408BF -:10D790001900CAB2069AE8CCFFF60A9BF01F002BCC -:10D7A000684888C9885AF009002C3008F00A190026 -:10D7B000C0E0189630070C9C2FF7069A0A9BF01FC2 -:10D7C00000252FC688D80E38FE99FFF78A18E4087E -:10D7D0001900C8B2069A0A9BE8CCFFF4F01F001BA0 -:10D7E0008A18E4081900C812069AE8CCFFF20A9BCE -:10D7F000F01F001688C988D81208684A8879F4088A -:10D80000002C3008F0091900FE90FF7018963007C0 -:10D810000C9C2FF706990A9A310BF01F000F2F0668 -:10D8200088F80E38FE99FFF6C60BE8C7FFFE30EA0F -:10D83000300B0E9CF01F0009099B6A5CF01F00086A -:10D84000894CC73B8001C9848001A2FC8001C8309B -:10D850008001C8048001AD98800091D08001D3EC94 -:10D86000EBCD40E0E06800FE18971AD816951496A4 -:10D8700030483059F01F00162FFD580CC031E3CD51 -:10D8800080E0EECCFFFE0C9A0A9BF01F00120C9A6F -:10D890000A9BEECCFFFDF01F000F0C9A0A9BEECC0A -:10D8A000FFFCF01F000C5816C0A00F9B0C990A9AA1 -:10D8B0006E2C203BF01F0008E3CD80E00F9B6A5CDC -:10D8C000203BF01F00068F2CCF11CDAB8001C98407 -:10D8D0008001A29C8001AD988001D3ECEBCD40E0AB -:10D8E00018951696F6CCFFF8F01F000CC12099167B -:10D8F00030089908F8C7FFF80C9A5805EBF71A0595 -:10D90000E06B00FF0E9CF01F00060E9CE3CD80E054 -:10D9100018970E9CE3CD80E080009200800091D0AB -:10D92000EBCD40C0201DF8C60008300C6C1BF01F6A -:10D930000014C1A0500C3007C1286C1B400CF01F14 -:10D9400000111897C1406C1AECCBFFF8EF4AFFFCAE -:10D950000E9CF01F000D6C065806C0505807CEE113 -:10D960004007CF2B400C2FFDE3CD80C01A9CF01F49 -:10D9700000070E9C2FFDE3CD80C000008001D8DCA5 -:10D980008001D3EC800091DC8001D3A8D401E06851 -:10D990000081301999489959189A7408129C11CE2F -:10D9A000F20E18005F089708D802D703486830398C -:10D9B000F0FA00F830089569985BF00B19005F0CDD -:10D9C0005EFC0000000087F419C8300A4869F2F9CB -:10D9D00000F8F4081800F9BC0001F9BC0100F3FCE0 -:10D9E0001A065EFC000087F448483009F0FA00F897 -:10D9F000301C95695EFC0000000087F448B8985A16 -:10DA0000F0FB00F83178F00A1900E08B000B3018B9 -:10DA1000F00A0948E4180080E01803FEC0205EFF09 -:10DA20003008301C97685EFC000087F478185808AE -:10DA30005F0C5EFC5EFF19C830192018F208180050 -:10DA40005FBC5EFC5EFD5EFD19C93008F009180080 -:10DA50005F0C5EFC5EFD5EFFEBCD4080308B189767 -:10DA6000991B300CF01F00078F0CC0803078E069E4 -:10DA700000818F588F49E3CF9080E3CD80800000F4 -:10DA80008001D8DCEBCD40C018971696308B991BDF -:10DA9000300CF01F00108F0CC160301830298F58E7 -:10DAA0008F4948D8B826118948C8B8E948C71189AC -:10DAB000B8F96EB899086EBC580CC0752FFC8FBCB5 -:10DAC000E3CF90C0E3CD80C0F01F0006CF9B0000E5 -:10DAD0008001D8DC00007A280000025C000087F496 -:10DAE00080018450EBCD40FE1897FACCFFE01694ED -:10DAF000781330CB14928F1B129178061095300C4E -:10DB0000F01F00118F0CC1A0307830498F588F4919 -:10DB10009905B8E6B8F1F9630008B8C4B8D248B8B6 -:10DB200048B9B084B28248B76EB899086EBC580C38 -:10DB3000C0752FFC8FBCE3CF90FEE3CD80FEF01FBD -:10DB40000006CF9B8001D8DC000079E5000079E475 -:10DB5000000087F480018450EBCD40FC1897FACC8C -:10DB6000FFE4314B781414938F1B129278061095B2 -:10DB7000300CF01F00158F0CC2003018F3D4C01009 -:10DB80008F488F589913B8429935F9560010F954B7 -:10DB9000001248E7F1D6C0100A481248F9B800FF51 -:10DBA000F9B80100B8586EB999096EBC580CC07527 -:10DBB0002FFC8FBCE3CF90FCE3CD80FCF01F000472 -:10DBC000CF9B00008001D8DC000087F480018450E6 -:10DBD000D401780A3009740B15F8129C129AF01FC0 -:10DBE0000002DA0A80018460D401780A3009740BDB -:10DBF000F538000B129C129AF01F0002DA0A00009E -:10DC000080018460D401780A3009740BF538000B68 -:10DC1000129C129AF01F0002DA0A00008001846050 -:10DC2000D401780A3009740BF538000B129C129A53 -:10DC3000F01F0002DA0A000080018460D401780A33 -:10DC40003009740BF538000B129C129AF01F000279 -:10DC5000DA0A000080018460D401780A3009740B6C -:10DC6000F538000B129C129AF01F0002DA0A00002D -:10DC700080018460D401780A3009740B15F8129C75 -:10DC8000129AF01F0002DA0A80018460EBCD40F89E -:10DC900030C618979916169414930C9B300CF01FED -:10DCA00000108F0C1895C160307831690C9A8F582C -:10DCB000089B8F49F01F000B48B66CB88B086CBCF2 -:10DCC000580CC0A52FFC8DBC301C6A088708E3CD1A -:10DCD00080F8E3CD80F8F01F0005CF6B8001D8DC21 -:10DCE000800091DC000087F480018450EBCD40F887 -:10DCF000308618979916169414930C9B300CF01FCD -:10DD000000108F0C1895C160307831490C9A8F58EB -:10DD1000089B8F49F01F000B48B66CB88B086CBC91 -:10DD2000580CC0A52FFC8DBC301C6A088708E3CDB9 -:10DD300080F8E3CD80F8F01F0005CF6B8001D8DCC0 -:10DD4000800091DC000087F480018450EBCD40F826 -:10DD500033C618979916169414930C9B300CF01F29 -:10DD600000108F0C1895C160307831390C9A8F589B -:10DD7000089B8F49F01F000B48B66CB88B086CBC31 -:10DD8000580CC0A52FFC8DBC301C6A088708E3CD59 -:10DD900080F8E3CD80F8F01F0005CF6B8001D8DC60 -:10DDA000800091DC000087F480018450EBCD40F8C6 -:10DDB000318618979916169414930C9B300CF01F0B -:10DDC00000108F0C1895C160307831190C9A8F585B -:10DDD000089B8F49F01F000B48B66CB88B086CBCD1 -:10DDE000580CC0A52FFC8DBC301C6A088708E3CDF9 -:10DDF00080F8E3CD80F8F01F0005CF6B8001D8DC00 -:10DE0000800091DC000087F480018450EBCD40F865 -:10DE1000330618979916169414930C9B300CF01F28 -:10DE200000108F0C1895C160307831090C9A8F580A -:10DE3000089B8F49F01F000B48B66CB88B086CBC70 -:10DE4000580CC0A52FFC8DBC301C6A088708E3CD98 -:10DE500080F8E3CD80F8F01F0005CF6B8001D8DC9F -:10DE6000800091DC000087F480018450D421189751 -:10DE7000169530CB991B300CF01F00128F0C1896A2 -:10DE8000FAC4FFEC580CC190302830098F588F49E4 -:10DE900048D76EB899086EBC580CC1052FFC8FBCD2 -:10DEA0005805EDF81000EBF81A00089BECCCFFFCCD -:10DEB000308AF01F0006DA2AD822F01F0005CF0BA7 -:10DEC0008001D8DC000087F4800091DC8001845060 -:10DED000EBCD40E018961695310B991B300CF01FD6 -:10DEE00000108D0C1897C1503078317A0A998D58EE -:10DEF0008D4A48CBF8CAFFFCF01F000B48B56AB842 -:10DF00008F086ABC580CC0752FFC8BBCE3CF90E027 -:10DF1000E3CD80E0F01F0006CF9B00008001D8DC3D -:10DF20008001D3EC8001D158000087F48001845037 -:10DF3000EBCD408078076E285808C0B0300C189A96 -:10DF40005C586E0B3109300CF01F0009E3CF908054 -:10DF5000310CF01F00086E189908EF390016991956 -:10DF60006E3899286E4999396E28CEAB800184604D -:10DF700080009200EBCD40FC189716931495314B1E -:10DF80001294991B300CF01F001C8F0C1896FAC2CB -:10DF9000FFE4580CC200302830198F588F495805BB -:10DFA000C1C18D455C7549576EB88D086EBC580C63 -:10DFB000C1F52FFC8FBC5804EDF81000E9F81A00E9 -:10DFC000049B308AECCCFFFCF01F000D301C8D351B -:10DFD000E3CD80FCE3CF80FC5C750A9CF01F000958 -:10DFE0008D4CCF90069B0A9AF01F0005CDDBF01FE9 -:10DFF0000006CE1B8001D8DC000087F4800091DC95 -:10E000008000920080018450EBCD40801897F93C4D -:10E01000000BF01F00084888F0F900F85809C0709C -:10E02000EECBFFFC310A313CF01F0004E3CF9080BF -:10E0300080015FB0000087F480014658D42130C8C9 -:10E040001896109B4904300CE8F500F88D18F01F65 -:10E05000000F8D0C1897C120301830D98D582FCC57 -:10E06000EACBFFE28D49F01F000A68B88F0868BC50 -:10E07000580CC0552FFC89BCDA2AD822F01F0005A5 -:10E08000CFBB0000000087F48001D8DC8001844011 -:10E0900080018450D42130CB1897991B300CF01F8D -:10E0A000000B8F0C1894C1004898301530868F559E -:10E0B0008F462FCCF0FB00F82E2BF01F00060A9C99 -:10E0C000E966000AD822D8228001D8DC000087F453 -:10E0D00080018440EBCD40E030CB1896991B300C8A -:10E0E000F01F00108D0C1897C1703018305948E59A -:10E0F0008D588D492FCCEAFB00F82E2BF01F000B1A -:10E100003028AE586AB98F096ABC580CC0752FFC0C -:10E110008BBCE3CF90E0E3CD80E0F01F0005CF9B08 -:10E120008001D8DC000087F48001844080018450A5 -:10E13000EBCD40FC30C518969915169414931292A5 -:10E140000A9B300CF01F00138D0C1897C1D03018AB -:10E150008D458D580A9A300BF01F000FEECCFFFC56 -:10E16000089BF01F000E078848D6EF68000A058953 -:10E17000EF69000B6CB88F086CBC580CC0752FFC95 -:10E180008DBCE3CF90FCE3CD80FCF01F0006CF9B5D -:10E190008001D8DC800091D080018440000087F4A9 -:10E1A00080018450EBCD40FC30C51896991516942B -:10E1B000149312920A9B300CF01F00128D0C1897CA -:10E1C000C1B0301830B98D588D490A9A300BF01F04 -:10E1D000000E306AAEC4AED3049BEE0A000CF01FF2 -:10E1E000000B48B66CB88F086CBC580CC0752FFC7F -:10E1F0008DBCE3CF90FCE3CD80FCF01F0006CF9BED -:10E200008001D8DC800091D0800091DC000087F490 -:10E2100080018450D431203D502B5018FACEFFD0CD -:10E2200033857C3499157C181896149312917C00D0 -:10E2300050087C220A9B300CF01F00228D0C18978E -:10E24000C370301830A98D580A9A8D49300BF01FD1 -:10E25000001E069A029BEECCFFFCF01F001CEF5341 -:10E2600000244028049BEF680026EF600027306AF6 -:10E27000EECCFFD8F01F00155804C1C0089B308AAF -:10E28000EECCFFD2F01F00114008EF6800364018B6 -:10E2900048F6EF6800376CB88F086CBC580CC05556 -:10E2A0002FFC8DBC2FDDDA3AF01F000ACFBB2FDD2B -:10E2B000D832089B308AEECCFFD2F01F0003CE5B31 -:10E2C0008001D8DC800091D0800091DC000087F4D0 -:10E2D00080018450D4012FCC7808202D500819C912 -:10E2E000BAC919D8BAD8F01F00052FED580CF9B8E3 -:10E2F000010DF9F81A06DA0A80015860D40148D8ED -:10E30000F8CBFFF5F0F900F8733C7808204D502861 -:10E3100019C9FB69000C19D8306AFB68000D1A9CFA -:10E32000F01F0005F01F00052FCD580C5F1CD80210 -:10E33000000087F48002E73680018898EBCD40FE2C -:10E340003007FAC5FFE0189116924A134A1466087E -:10E350000E38E08A00216A08204D50280BC9FB695D -:10E36000000C0BD8EE061504FB68000DE806000A49 -:10E3700015D8BAD87409500915C8BAC8F01F0016C4 -:10E380002FCD580CC0A12FF75907CE2118970E9CFE -:10E39000E3CD80FEEE061504E80600060A9B0C9C01 -:10E3A000F01F000EF3D2C001EE081501AC692FF882 -:10E3B000E808093166090E39FE99FFEBEEC9FFFF47 -:10E3C00048380E9C9109E3CD80FE000000008C5C73 -:10E3D00000008B5C8001889880018440EBCD4080F8 -:10E3E000300819C9F0091800C10048E8F0F700F832 -:10E3F0005807C130F01F000C0E9CF01F000C0E9C43 -:10E40000F01F000BE3CF8080486830A9F0FA00F8D5 -:10E41000301C9569E3CD80800E9CE3CD80800000A8 -:10E42000000087F480015D188001593880015CDCB0 -:10E43000EBCD40E01896F01F00224A2A0DE9F4F7D0 -:10E4400000F85809C1103018F0091800C32030280E -:10E45000F0091800C31030488F687498300CABC8AE -:10E460009598E3CD80E06F3930D8322A8F68496CB7 -:10E47000727B2F4BF01F00156F3C3FF8787BF7390C -:10E4800000C8F0091800C130202DF71600D47845D7 -:10E49000306AEECBFFE21A9CF01F000C0C9B0A9C2A -:10E4A000F01F000B301C2FEDE3CD80E0E3CF90E0B8 -:10E4B00030088F68CD3B30588F68CD0B8001F00459 -:10E4C000000087F400008C608002E7368001E33CA6 -:10E4D000EBCD40E01896F01F00284A8A0DE9F4F7CA -:10E4E00000F85809C1503018F0091800C3603028EE -:10E4F000F0091800C3906F0830492FF88F69EF4872 -:10E5000000407498300CABC89598E3CD80E06F392B -:10E5100030D8322A8F6849AC727B2F4BF01F00191C -:10E520006F3C3FF8787BF73900C8F0091800C1301C -:10E53000202DF71600D47845306AEECBFFE21A9C06 -:10E54000F01F00100C9B0A9CF01F000F301C2FEDD9 -:10E55000E3CD80E0E3CF90E06F0830092FF88F69BA -:10E56000EF480040CCFB6F0830592FF88F69EF4817 -:10E570000040CC8B8001F004000087F400008C6028 -:10E580008002E7368001E33CD421310B1896991BB9 -:10E59000300CF01F00198D0C1897C28030183049CC -:10E5A0008D588D494955302CEAF400F8F01F0014BD -:10E5B000E8CBFFE21896EECCFFF8F01F00126C38A3 -:10E5C000AE38EAF901045819C0D03008AE2830B886 -:10E5D00089686AB98F096ABC580CC0952FFC8BBC3E -:10E5E000DA2AEAF8011C5818CF20D82AF01F0006B2 -:10E5F000CF7B00008001D8DC000087F48001EF6C45 -:10E600008001844080018450EBCD40F81897169427 -:10E6100030CCF01F0046303CF01F00441895302CE1 -:10E62000F01F0042E06A00EC1896E06B00FF0E9CC1 -:10E63000F01F003FE8CBFFE2EECCFFF6F01F003DFD -:10E640006C384BD9AE289208AE483DD86939727BF8 -:10E65000F73A009AF00A1800C480F73900803DD8D4 -:10E66000F0091800C52030050A93F01F00349838CF -:10E67000AE381896F93900A83FF8F0091800C09094 -:10E68000F8C9FF58EECAFF584ADB0E9CF01F002D58 -:10E69000ED3900CC3FF8F0091800C1900E9CECC990 -:10E6A000FF34EECAFF344A6BF01F0027089CF01FAE -:10E6B0000027583CE089000C4A587099ABC99199E1 -:10E6C0003FFA301CEF6A009EE3CD80F85805CF502A -:10E6D000EECCFF62069BF01F001F49D9301C7298D8 -:10E6E000ABA89398E3CD80F8F73900A03008F00983 -:10E6F0001800CB41EAF900B85819CB01F72800A25D -:10E700001295F003161FCB2BF73900863018F0094D -:10E710001800CAA1EAFC00B8581CCA61F728008892 -:10E720001895F003161FCA2B8001EF6C800091D062 -:10E73000800184400000025E8001EFF88001D3EC8C -:10E740008001D1E88001D21C8001808E000087F416 -:10E75000800184F0D421E06800EC1897109B4924D4 -:10E76000300CE8F500F88F18F01F00108F0C189689 -:10E77000C090301830798F588F490A9BF01F000CD9 -:10E78000C021D82A0C9CF01F000B30C88B6868B9D8 -:10E790008D0968BC580CC0452FFC89BCDA2AF01FD3 -:10E7A0000006CFCB000087F48001D8DC8001E608AA -:10E7B0008001F03080018450D421E06800EC18978B -:10E7C000109B4924300CE8F500F88F18F01F00105A -:10E7D0008F0C1896C090301830698F588F490A9B5B -:10E7E000F01F000CC021D82A0C9CF01F000B30C871 -:10E7F0008B6868B98D0968BC580CC0452FFC89BC72 -:10E80000DA2AF01F0006CFCB000087F48001D8DCA5 -:10E810008001E6088001F03080018450EBCD40405B -:10E82000201D18961A9CF01F001849888C69F0FB6F -:10E8300000F85809C1203018F0091900C0B030287C -:10E84000F0091900C170770830492FF89769F74827 -:10E8500000402FFDE3CF80407738301911EA301C9B -:10E86000F20A1800F9B8000CF7F80A062FFDE3CDFC -:10E870008040770830592FF89769F74800402FFDFE -:10E88000E3CF8040800177A4000087F4D401496879 -:10E8900019C9F0FA00F85809C1803028F0091800A9 -:10E8A000C1803048F0091800C0503018F009180035 -:10E8B000C180750830492FF89569F548004019CB9B -:10E8C000302CF01F000AD80A3088301C9568D80216 -:10E8D000750830592FF89569F548004019CBCF1BC2 -:10E8E000301BCEFB000087F480018390D431215D82 -:10E8F000303C169614911290F01F00584D83F8C4C6 -:10E90000FFB0189531CA089B069CF01F0056C0A1A5 -:10E910006D3830AA707BE6CCFFE42D2BF01F005140 -:10E92000C7B06D38FAC7FFC8707B0E9CF6CAFFC827 -:10E930002D2BF01F004D089B0E9CF01F004CC0417A -:10E94000300C2EBDD83231CA0E9BFA0A0002049C4C -:10E95000F01F0047049CF01F004730080E9A500833 -:10E960001A97089B1A9CF01F00446D38707930E8A4 -:10E97000F33A005EF00A1800C670EB3A0074580AC9 -:10E98000CE006D387079EB380075F33B005EF60809 -:10E990001800C0F0EACCFF8A3009C0581938F608D0 -:10E9A0001800C0502FF9123AFE99FFFA123ACC9093 -:10E9B000049CF01F0032CC50049B1A9CF01F0030C6 -:10E9C0001A9B029CF01F002F049B009CF01F002D3F -:10E9D000089B31CA4A2CF01F00266D3830AA707B84 -:10E9E000E6CCFFE42D2BF01F00226D38312A707B1E -:10E9F000E6CCFFDA2C8BF01F001E029B304AE6CCDF -:10EA0000FFC8F01F001B009BE6CCFFC4304AF01F7C -:10EA10000018301CC97B6D38312A707BE6CCFFDAD8 -:10EA20002C8BF01F0010FE91FF7E304AE6CBFFC812 -:10EA3000029CF01F000FE6CBFFC4009C304AF01F81 -:10EA4000000C301CC7FB049CF01F000FFE90FF7AE7 -:10EA50001A9CF01F000EC92B8001EF6C000079E8B2 -:10EA60008000917C80018124800182BC800091DC47 -:10EA700080018658800181E8800182608001817E6A -:10EA8000800180CC80018360800185F4EBCD40FC67 -:10EA9000FACD0110300733095407FEF3022EE6F8D1 -:10EAA00000F854281896129B0E9C8D19F01F0088B0 -:10EAB0008D0C1895E080008A3018303C8D588D4CB4 -:10EAC000F01F0084FACBFEFC1894FACAFEF8FACCC8 -:10EAD000FEF2F01F0081442871390E9CE06B00ECBF -:10EAE0007277F01F007BC710540CE0680420B83820 -:10EAF000442B7738707992D9EDB90000C6B0EDB9E2 -:10EB00000001C06144099238A1B8B238442BE8F83A -:10EB100000B85808C0C07738707A94D9EDB90009A8 -:10EB2000C06144099238A9B8B238442BFAC2FEF148 -:10EB3000441A049CF01F006944185818E08000A58E -:10EB4000C6823079FB38010FF2081800C050440922 -:10EB50009238A5A8B238440CF01F0061049CF01F45 -:10EB600000614428E74C0100EACAFFF071390A9CB1 -:10EB70004DDBF01F005E6858AA286869AA394D3C31 -:10EB800069B85808C440442B773870793078F33A24 -:10EB90000074F00A1800C240EAC9FFF4EACAFFF89C -:10EBA000300CF01F0053581CC53030063018E748B1 -:10EBB000004444095809C0A0FACCFF00F01F004DE2 -:10EBC0000C9C2BCDE3CD80FC30060C9C2BCDE3CDF3 -:10EBD00080FC44099238A1A8B238442BC99BF8F8AC -:10EBE00001AC5808C050F8CCFE54F01F004230CBA6 -:10EBF000300CF01F0037E74C01AC189AC080442855 -:10EC0000713B76794B8B28C9F01F003B442BCC5BC2 -:10EC10005828CA51442C1A9B2E2CF01F00381A96E3 -:10EC20001AD61ADC442BFB380116FB390117EF3AD0 -:10EC300000CF169CF6CBFF34F01F003144283289F8 -:10EC4000F15900D8442CF01F00262FEDC88BE8F8AE -:10EC500000B85808C2916AB93FF8F368009A3028A2 -:10EC60003039E7480044442891694426F01F0025C4 -:10EC7000ED4C004466B88B0866BC580CC2352FFCBE -:10EC800087BC3016C94B440BEF3A00AF169CFB38DB -:10EC9000010EFB39010FF6CBFF58F01F001B440C8F -:10ECA000F01F000FC5CB44287139727A94D8EDB8A3 -:10ECB0000001CD21189B6ABCF8CCFF66F01F001341 -:10ECC000CCFBF01F0013CDDB000087F48001D8DC03 -:10ECD0008001EF6C80017C4480017EE08001F03097 -:10ECE00080017BD88001D3EC8001AD408001E8EC4D -:10ECF0008001D3A88001D1588001887080018C2CBC -:10ED0000800145C480018B74800184F080018450AF -:10ED1000D431203D189616971493303CF01F0070A4 -:10ED2000301831798D588D4930086C068F0858039A -:10ED3000EDF81805E7F81A0018950DC40898A7D83B -:10ED4000C0505898C0302FDDD83A0DD93018F0098E -:10ED50001800C1003008F0041800F9B80500EFF8F9 -:10ED60005A00F9BC0501F9BC0401EFFC4A002FDD93 -:10ED7000D832303CF01F005A6C98F93A0074F13BDD -:10ED8000005E580ACE80F9380075F6081800C0A059 -:10ED900028AC30092FF91439CDE41938F00B1800DC -:10EDA000CFA1ECC0FFF8009CF01F004E1891CD30B1 -:10EDB0006BB85808C090793870793078F33A00749D -:10EDC000F00A1800C6E0FACCFFF8F01F0047581C04 -:10EDD000C0A0F01F0046029B835C350A31DCF01FA7 -:10EDE0000044CB9B40285818CF51FACCFFFCF01FB1 -:10EDF0000041581CCEF1401820785818FE9BFFEBBC -:10EE00004BD8F0F900F85809CE501A9CF01F003B7F -:10EE1000581CCE01400820285818FE9BFFDC6C9E31 -:10EE20002F4EFCE80000212DFAE90024FCE8000840 -:10EE3000FAE9002CFCE20010FAE30034FCE80018C8 -:10EE4000FAE9003CFD3C0020FB6C0044FD38002149 -:10EE5000322AFB6800454AAB1A9CF01F002AF01FBB -:10EE6000002A2EED580CCB606C9A3FF8F53900C89B -:10EE7000F0091800CAF06008F51B00D4202D6C6C56 -:10EE8000500801C9BAC901D8BAD8F01F0020A56C32 -:10EE900049FB310A180B315CF01F00152FEDC9AB8F -:10EEA0004955EAF801AC5808C050EACCFE54F01FAE -:10EEB000001930CB300CF01F0018EB4C01AC189A45 -:10EEC00048D5580CFE90FF816338494B707928C9AA -:10EED000F01F00136A98ABB88B98C76B8001EF6C7A -:10EEE00080015D44800177A4800145C480014658BB -:10EEF00080015F44000087F480015F2800008C607F -:10EF00008002E736800189108001E33C00008B5CC1 -:10EF10008001D3A88001D8DC8001D3EC8001D158D6 -:10EF2000EBCD40E0206D300818991495502850081A -:10EF30001A9C1A965D191897C10140085808C040DC -:10EF40001A9CF01F0009402C580CC030F01F00071D -:10EF50000E9C2FADE3CD80E01A9C5D15581C5F0719 -:10EF6000CEDB00008001D3A8800091E858DCE08867 -:10EF700000035EFD49B8F00C032F49B8F0CCFFF454 -:10EF80005EFC4998F0CCFFE45EFC4978F0CCFFD4FD -:10EF90005EFC4958F0CCFFCC5EFC4938F0CCFFC495 -:10EFA0005EFC4918F0CCFF305EFC48F8F0CCFF1C4A -:10EFB0005EFC48D8F0CCFEF45EFC48B8F0CCFEBC59 -:10EFC0005EFC4898F0CCFE945EFC487C5EFC486891 -:10EFD000F0CCFFFC5EFC4848F0CCFE785EFC000004 -:10EFE0008003C01400000260483930089318930869 -:10EFF0005EFC000000008C844828700C5EFC000061 -:10F0000000008C84EBCD40C0487618976C1C580CDF -:10F01000C030F01F00060E9CF01F00058D1CE3CDD4 -:10F0200080C0000000008C8480018AD480018AECBA -:10F03000EBCD40C0487618976C0C580CC030F01FD0 -:10F0400000060E9CF01F00058D0CE3CD80C0000073 -:10F0500000008C8480018ABC80018B30D4211894FC -:10F060001696149530CCF01F00121897C1D03018A6 -:10F0700099069915F0060946EC0C1502F01F000CD4 -:10F080008F2CC0F05806E08A000B3009129A6E28C7 -:10F09000F009092A2FF91236FE99FFFB8907DA2AAF -:10F0A0000E9CF01F00043FDCD8220000800092007C -:10F0B000800091E8D4311893169214901291580C54 -:10F0C000C36078093018760CF0090945580CC390D4 -:10F0D000189468160A36C1A468075807C0606E48BD -:10F0E0000238C1B03FCCD832662CF8060327580747 -:10F0F000CF71ECC8FFFFF808002CC0582FF8190793 -:10F100005807CEE110960A38CFA5089CF01F0013CF -:10F1100030083FEC8508D832029A009C6E3BF01F05 -:10F120000010301C89166E088908D832760C580CED -:10F13000C040F01F000ADA3A66093018F0090945A4 -:10F14000308CF01F00081894C060850C30089918A6 -:10F150009908CC0BD8320000800091E8800091DC47 -:10F1600080009200D431109412907818409618952F -:10F17000169214910C9B780A089C5D181893318C98 -:10F18000F01F00131897C1F00C9CF01F00118F3C6A -:10F19000C170089B0C9AF01F000F30088F468F1229 -:10F1A0008F218F508F086A29F203002C78085808A5 -:10F1B000C0C0109970085808CFD19307DA3A0E9C56 -:10F1C000F01F00053FDCD8329907DA3A8000920040 -:10F1D000800091DC800091E8D431203D501C500B20 -:10F1E000149112921090580AC4307418009B740A3B -:10F1F000129C5D18A36C502C6228F00C0307580772 -:10F20000C3706E450A990035C3610E940E93C09881 -:10F210006E075807C2D008936E490A39C2C10E94CE -:10F220006E3B0A9A049CF01F00181896CF214019D3 -:10F230006E18930840086E2991098F1C8F2C6E3C24 -:10F24000F01F00128F468F3640296228F009000C0B -:10F2500078090E39EFF80000F9F80A00EFF810000D -:10F26000E7F81A000E9CF01F00092FDDDA3A3FEC98 -:10F270002FDDD8326E385808CFB00039CF903FCC50 -:10F280002FDDD8328000917C800091E8163C5E0C26 -:10F290007808971C990B97085808F1FB1A015EFC37 -:10F2A00078195809F9F81000F3F81A007808580886 -:10F2B000F1F91A013008990899185EFCD40149380F -:10F2C000FACEFFFC709CE21C0002C1D0209DFD3AEA -:10F2D0000021FB6A0021FCE80000FAE90000FCEADA -:10F2E0000008FAEB0008FCE80010FAE90010FCEA5C -:10F2F0000018FAEB0018FD380020FB680020F01F12 -:10F3000000042F7DD8020000000087F480015AA479 -:10F31000D4014898709CE21C0002C0C0300930CC77 -:10F32000EA1C4000303B129AF01F0004F01F00045A -:10F33000301CD802000087F4800186C88001875401 -:10F34000D4014898709CE21C0002C0C0300930DC37 -:10F35000EA1C4000303B129AF01F0004F01F00042A -:10F36000301CD802000087F4800186C880018754D1 -:10F37000D4014898709CE21C0002C0C03009310CD6 -:10F38000EA1C4000303B129AF01F0004F01F0004FA -:10F39000301CD802000087F4800186C880018754A1 -:10F3A000EBCD4080495818977098E2180002C04190 -:10F3B000109CE3CD8080F01F00126F38302911EAD5 -:10F3C000F20A1800C0D03009303B129A307CEA1C97 -:10F3D0004000F01F000CF01F000CE3CF90806E681F -:10F3E0005898CF213009303B129A30BCEA1C4000BB -:10F3F000F01F0004CF1B0000000087F4800158407C -:10F40000800186C88001875458DBE08A0012F939F0 -:10F41000000C3078F0091800E08B000C595BE08A92 -:10F420000008F939000E3AA8F0091800C0D05EFDB6 -:10F430003888F0091800CFC1F939000D38E8F00913 -:10F4400018005F0C5EFCF938000FF2081800CF01BD -:10F45000F93900103038F0091800CEA1F93900113F -:10F460003008F0091800CE41F93A0012F20A1800EB -:10F47000CDF1F9380013F4081800CDA1F9390014C2 -:10F480003888F0091800CD41F939001538E8F0093D -:10F4900018005F0C5EFCD7033019482891095EFC08 -:10F4A00000007A38EBCD40C0208D48D730088E0957 -:10F4B000F0091900C101E06AFFFF300B1A9CF01F30 -:10F4C00000091A9B302AFACCFFE8F01F00079A18AF -:10F4D0001A96AE088E0C2F8DE3CD80C000007A2ADC -:10F4E0008001C7B88001A498D401F01F00054858D6 -:10F4F000F139010B120C5C8CD80200008001F4A4DD -:10F50000000087F4EBCD4060208D306AFAC5FFE63D -:10F51000300B0A9CF01F00091A9CE06AFFFF300BB9 -:10F52000F01F00070A9C1A9B302AF01F00061A964B -:10F530009A1C2F8DE3CD8060800091D08001C7B8E8 -:10F540008001A444D43120DDFEF60234FACEFFA8B7 -:10F55000189516916C9C1494129310907C177C0251 -:10F56000E21C0002C0312F3DD832FEF802167009AD -:10F570005809C041FE7CFBB4CF7BECF8012458183D -:10F58000C041FE7CFC17CF0BECC9FFE85019129C60 -:10F59000F01F007D581CE08000E30D890D98F009F4 -:10F5A0001800E08200E6302CF01F0078E08000D2E6 -:10F5B0006CB850282FF88DB85807FBF91002EFF9F6 -:10F5C0001A00F01F0073C0E0029B0A9CF01F00713C -:10F5D000E08000C96C98EDB80006C0414E88402913 -:10F5E00091D9F01F006D6008EFDCB010F3D7C010A8 -:10F5F00050091039E08B006C0D882FF8AC880D99FC -:10F60000F0091800C061300A320C149BF01F00632F -:10F61000E8C800020E08FB58002EED38010B30043C -:10F62000FB680032400A300BFB640030FB640031A1 -:10F63000FB640033069CF01F005A069BFAC7FFF4D8 -:10F64000400A0E9CF01F0057300A0E9BFACCFFD2E6 -:10F65000F01F0055ED38010BF9D2C003BA78F01F46 -:10F660000053300CFB520028FB5C002AE041003EB6 -:10F67000E0880008EB39000C3888F0091800C2D087 -:10F680004028300A50980E9BFACCFFDCF01F00484F -:10F690004009ECCCFFE88109F01F0046F01F00464E -:10F6A0003008ED4C00CCED5800D04C49F30A014233 -:10F6B000F00A1900C0604B297298EDB8000EC031F5 -:10F6C000301CC52BF01F003E301CC4EBECCCFFE817 -:10F6D000F01F00383FFCC48BEB39000D38E8F0090F -:10F6E0001800CCF1EB39000E3018F0091800CC915D -:10F6F000EB39000F3038F0091800CC313028EB3BE3 -:10F700000012F00B18005F1A3FE8F00B18005F19A9 -:10F71000126AE80A1800CB51EB380013E218001DFA -:10F720005818CAF1EB380014E21800C85888CA917A -:10F73000189A31F9EA090708F4081800CA212FF9C4 -:10F74000E049003FCF81E0680400FB58002AC99BD4 -:10F75000401CF01F0018FE7CFAECC06BFE7CFC160F -:10F76000C03BECCCFFE8F01F00133FECCFDA401CAD -:10F77000F01F0010FE7CFB4FCF7A0000000087F4E2 -:10F7800000007A38800145DC80019F3080015F04F1 -:10F790008001F4088001F4E880014658800091D08F -:10F7A0008001C7B88001A4448001859C8001A49891 -:10F7B000800145EC800145C4000002608001FBFC33 -:10F7C000D401302CF01F0003300948389109D802C9 -:10F7D0008001A12800007A38D431FACD01385009CF -:10F7E000FACEFEA416971896FEFB031C14947C1305 -:10F7F0007C00F6F801245818C460FEFA030A749CD1 -:10F80000E21C0002C05118970E9C2B2DD832E068E4 -:10F8100000F8FAC5FEFCF5D7C0100C9B0A9C548872 -:10F82000549654A730025472F01F00B8FAC1FEE497 -:10F830000A9B029CF01F00B644C95879E08B00284F -:10F840003018F0090948E2180085C2104488FAC946 -:10F85000FFF45012502854D944D80A9B5478029C83 -:10F86000F01F00ACC1C1302744D95809CCE0FAC818 -:10F87000FFF41039CCA0FACCFECCF01F00A70E9CF0 -:10F880002B2DD83230270E9C2B2DD832448B300CA8 -:10F89000F01F00A2E08000B354DCCDFB44C9E04976 -:10F8A000003FE088000B300744B8EDB80007E08067 -:10F8B000009EF01F009BCD9BFEF80268F009032F0D -:10F8C000ECCAFFFC1588EC08000889080DD81589DA -:10F8D000400BEE0901093067F208010A970A44B8A3 -:10F8E000CE5B44B8F0C90001E0490097E088008988 -:10F8F000447CF01F008D44C8189A300944BC303B4A -:10F90000BFBCF9E8108CF01F0089F01F0085301B88 -:10F91000300CF01F008744B83027CC8B44B8E04847 -:10F920000082C090E08900A9E0480080C040E04823 -:10F930000081CEE10E9B0C9CF01F007ECE9B44B854 -:10F94000E0480082E08000C4E08900915978E080BE -:10F9500000C4E0480081CCD1029CF01F0077CD8B21 -:10F9600044B85808C7E144D65803EDF81000E7F84A -:10F970001A008C28A008FB1A0106445814088908AC -:10F98000FB190104F20A0105400A30EB95056807EE -:10F990000E9CF01F006AE08000AE4DB9F2F801D075 -:10F9A0005808E080009E0A9B0E9C5D18E08000993C -:10F9B00030270DE84D4BF768007B44B8C77B44B84F -:10F9C0005818CB90E0480080CA31CB5B447B44BCE4 -:10F9D000F01F005B44BCF8C800805818FE9BFF99DC -:10F9E000029B5C5CF01F0057C93B30084C69300B30 -:10F9F000B2A8169CF01F0054C5DB3FD7C06B4D3832 -:10FA0000F009032F029CF01F0052C82B029CF01F2C -:10FA10000051C7EB029CF01F0050C7AB029CF01FC7 -:10FA2000004FC76B029CF01F004EC72B029CF01FBB -:10FA3000004DC6EBF01F004C4B3AF54C00D4C68B82 -:10FA4000029CF01F004AC64B029CF01F0049C60BE7 -:10FA5000029CF01F0048C5CB447CF01F0047C58BBB -:10FA6000E0480081C1403027C21BF0C8008F5828F1 -:10FA7000FE9BFF40C4DBE0480084FE90FF5DFE95E6 -:10FA8000FF5BE0480085FE91FF44C55B49E91388B0 -:10FA900020185C58B28844D7C29049BB7698E218C7 -:10FAA0000040C20076D96E081039E088002944B8B9 -:10FAB000A7D854B85803F9B70003EFF81000E7F8D7 -:10FAC0001A00F9B70103FBF8104BCF0A447B32EC64 -:10FAD000F01F002AC1DB029CF01F0029C19B3047A8 -:10FAE000C69B0FD8F768007ACE3B302CF01F00255C -:10FAF000CD5BF01F0025CF403FE7C5CBF01F0023B3 -:10FB0000CD7B0000000087F48001C7B88001BF10E2 -:10FB10008001BF448001D3A88001D8DC80018754D4 -:10FB20008003C04C8001870C800186C880016A88F0 -:10FB3000800237E8800208948001F4088001708C0C -:10FB40008001725480018CE48003C14C8002084023 -:10FB50008002085880020864800208708002087CD5 -:10FB600080020888800145C48002084C8002083465 -:10FB7000800209B48001DA3480016D6C8002094092 -:10FB80008001A12880015F048001F310EBCD406863 -:10FB90003006493C1AD61AD649250C9899064929A7 -:10FBA000492A302B0A9CF01F001249231AD60C98C0 -:10FBB0001AD60699490A303BEACCFFFCF01F000C2C -:10FBC0000C981AD606991AD6EACCFFF848BA305BD8 -:10FBD000F01F0007301C2FADE3CD806800007A389D -:10FBE00000007A2C8001F4988003C3AC80016EB8C9 -:10FBF0008001F7C08003C3C48003C3E05EFCD70369 -:10FC0000EBCD40E0203D1897580CC1F07938707A60 -:10FC100094D9EDB90001C1D04C166C785828C15068 -:10FC20000E9CF01F0040C110ED3900943FF8F00920 -:10FC30001800C1405017FACAFFFC1A9BFACCFFF615 -:10FC4000F01F0039581CC180301C2FDDE3CD80E04F -:10FC50004B366C785818CE51CF8B202D306A1A9CB9 -:10FC60004AFBF6CBFF4AF01F0031F01F00312FEDA9 -:10FC7000580CCEB1CE0BFAC5FFF5400A401B0A9CCA -:10FC8000F01F002C581CCE113079FB38000BF20805 -:10FC90001800C35140187139727A94D8EDB8000435 -:10FCA000CD404A5AF4F801045818C3206DE85808AA -:10FCB000C1D1ED3B008049AA580BC2806F387079E2 -:10FCC000F5380081F33C005EF8081800C1F0F4CA72 -:10FCD000FF7E3009C0581538F8081800C0402FF9C9 -:10FCE0001639CFA516395F0CCB1B48D973F85808C5 -:10FCF000CE10F4F801AC5808CDD1CA7B0A9CF01F95 -:10FD0000000FF01F000FCA10CCDB3009CECB3059EA -:10FD1000FB38000BF2081800C981CC9B0000026080 -:10FD2000800189D080017C448002E736800188B060 -:10FD300080017EE0000087F480017BD880017C1088 -:10FD4000EBCD40E048D818961695F0F700F058072C -:10FD5000C0E00E9CF01F000AC0715806C0A00E9CA7 -:10FD60000A9B5D16C0606E075807CF41E3CF80E065 -:10FD70000E9CE3CD80E00000000087F48001FC00D1 -:10FD8000D401F01F0002D80280021500EBCD40F82C -:10FD9000204DE0683100EA18312EE069312EEA1971 -:10FDA000322E306CFAE90000F01F00631894E080F6 -:10FDB00000B9303CF01F00611896301CF01F005F46 -:10FDC000306A202D189B18951A9CF01F005DF01FBB -:10FDD000005D2FED580CE080008732B80A9C1AD8DD -:10FDE000308930084D8A306BF01F00582FFD1A9370 -:10FDF000ECFC00D8F01F0056ECFC00DCF01F0055B6 -:10FE0000ECFC00E4F01F0054ECFC00E8F01F005391 -:10FE1000ECFC00ECF01F0052ECFC00F0F01F005175 -:10FE2000ED3C00B7F01F00506DC85808F9B801014B -:10FE3000EDF81A1BED3C006FF01F004CECFC012CA0 -:10FE4000F01F004BF01F004BF01F004BF01F004B4A -:10FE5000F01F004BECF800F85808C6616D084C978D -:10FE6000EF4800D8ECFC0130F01F0047300830A903 -:10FE700032B54C6A1AD5E06B0080EECCFED8F01F8C -:10FE80000033EEC6FE58304A300B0C9CF01F004089 -:10FE900030081AD530594BFA0C9C304BF01F002B10 -:10FEA0004BD82FEDF10A01423009F20A1900C26065 -:10FEB0006E99EDB9000EC201A7B930688F9950381C -:10FEC0001A9CFAC8FFF8FAC9FFF4089A308BF01FA1 -:10FED00000331897581CC140089CF01F00312FCDEB -:10FEE000E3CF80F8189A0A991A933068308B1A9CDD -:10FEF000F01F002CC7EBF01F002C6E99CDEB089C77 -:10FF0000F01F00273009303B129A311CEA1C4000D8 -:10FF1000F01F0026F01F00260E9C2FCDE3CD80F8A9 -:10FF20002FCDE3CD80F8300A301B149CF01F002148 -:10FF3000C96B0000800092008001EF6C8002E73600 -:10FF4000800188B08003B804800176C480020594E3 -:10FF500080020538800204DC8002048080020424D0 -:10FF6000800203C8800202F880020374800202D477 -:10FF70008002078C800168AC8002017080020EFC58 -:10FF8000000087F48002031C8003C400800091D02D -:10FF90008003C40C00000260800174C8800091E8F6 -:10FFA0008001776C8001FBFC800186C8800187544A -:10FFB00080020B34EBCD406830094AF63068ACA9BA -:10FFC000AC893129314AAC988D99300530130A9BA0 -:10FFD000ED4500ECED4500E88DA58DC5ED550040E3 -:10FFE000ED550042ED55004EED4500D88DB3ECCCFB -:10FFF000FEF0F01F0022ED450124F01F0021ED5519 -:02000004800278 -:1000000000D0ED4C00CCED5500D249ECF01F001EA5 -:10001000F01F001EED4501B8F01F001DF01F001D70 -:10002000F01F001D0A9BECCCFF48F01F001C0A9B30 -:10003000ECCCFF44F01F0019069BECCCFF40F01FF6 -:100040000017069BECCCFF3CF01F0014ED4300446E -:10005000F01F0013F01F001330DCF01F0013F93CF9 -:10006000000FF01F0012F01F0006ED4C01CC069CA3 -:10007000E3CD8068000087F4800091D0800145C402 -:10008000000084CC80017B24800237D080016CDCAE -:100090008001FB8C8001EFE8800144F8800187C873 -:1000A000800205EC8001EF6C800202B8EBCD40606D -:1000B000E06A01F8300B49D518960A9CF01F001C25 -:1000C000F01F001C0C9CF01F001CEACCFFF4F01F7A -:1000D000001BEACCFFE0F01F0019EACCFFF0F01F94 -:1000E0000017EACCFFECF01F0016EACCFFE8F01F87 -:1000F0000014EACCFFE4F01F0012300930DC1AD9FA -:100100001298129A129BF01F000FF01F000FF01FA1 -:10011000000FF01F000FF01F000FF01F000F301C2A -:100120002FFDE3CD80600000000087F4800091D0B7 -:1001300080016F4880021124800145D6800145F27C -:100140008002067C80014690800149B88001804091 -:1001500080015F98800201584848300A4849911848 -:10016000910A930A5EFC000000007A3C00007A4489 -:10017000D421219D4A846808F3D8C001FB6900633B -:10018000E2180002C14030183005FB6800634A3CA9 -:10019000F01F00233018189BFAC9FF9D300A49FC54 -:1001A000F01F0020581CC2802E7DD8225809C1C0E3 -:1001B000109549D870065806CEB0EA050019FA091C -:1001C00000170C9B0E9C306A2FA72FF5F01F00170D -:1001D0006C265806CDD05905CF516808F1D8C0011A -:1001E000F0051700CD5B306AE06B00FF1A9C3015FC -:1001F000F01F000FCDFB48FCF01F0009EA050018B6 -:10020000189BA1781A99300A48ACF01F00062E7D81 -:10021000D822000000007A448003C414800091B802 -:100220008001776C00007A3C800091DC800091D0E6 -:100230008003C41CD40148697208104C930CEDBCB7 -:100240000002C021DA0AF01F0003D80200007A443D -:1002500080020170EBCD408048C76E095809C1305B -:10026000722A580AF3F80003EFF80A01F3F81003B2 -:10027000F5F81A037238129C910AF01F00056E09F6 -:100280005809CEF1E3CF908000007A3C800091E8DD -:10029000D401F01F0007581CC020D802485972082A -:1002A000EDB80002CFB0F01F0004D8028002025463 -:1002B00000007A4480020170F8C900013058F0094A -:1002C0001800E08B00054838B09C5EFF3FCC5EFC18 -:1002D000000087F4D401201DFAC9FFFC12DC1A9932 -:1002E0003048300A307B483CF01F00032FFDD80215 -:1002F0008003C43C8001776CD401201D3018BA8C77 -:100300001A99300A306B484CF01F0004581C5F0CDF -:100310002FFDD8028003C45C8001776CEBCD406870 -:10032000201D48F61893FAC5FFFC2F060AFC0C9C0A -:10033000F01F000C303CF01F000CF94301300C9C06 -:10034000F01F000A0A993018300A307B488CF01FE1 -:100350000009581C5F0C2FFDE3CD8068000087F476 -:10036000800145FC8001EF6C800145FE8003C46C78 -:100370008001776CEBCD4040201D48E6BA8C2F06FB -:100380000C9CF01F000D303CF01F000C1B88F9483E -:10039000006C0C9CF01F000A30181A99300A309B30 -:1003A000488CF01F0009581C5F0C2FFDE3CD8040E6 -:1003B000000087F4800145FC8001EF6C800145FE60 -:1003C0008003C4748001776CEBCD4068201D1898C1 -:1003D0005CB81895FAC3FFFC48D606D82F060C9CCB -:1003E000F01F000C303CF01F000CF94500F00C9C95 -:1003F000F01F000A1A993048300A309B488CF01FD1 -:100400000009581C5F0C2FFDE3CD8068000087F4C5 -:10041000800145FC8001EF6C800145FE8003C480B3 -:100420008001776CEBCD4068201D18985CB818955A -:10043000FAC3FFFC48D606D82F060C9CF01F000C10 -:10044000303CF01F000CF94500EC0C9CF01F000A3A -:100450001A993048300A309B488CF01F0009581C0C -:100460005F0C2FFDE3CD8068000087F4800145FC20 -:100470008001EF6C800145FE8003C48C8001776CA5 -:10048000EBCD4068201D18985CB81895FAC3FFFCA6 -:1004900048D606D82F060C9CF01F000C303CF01FED -:1004A000000CF94500E80C9CF01F000A1A9930482E -:1004B000300A309B488CF01F0009581C5F0C2FFD40 -:1004C000E3CD8068000087F4800145FC8001EF6C7B -:1004D000800145FE8003C4988001776CEBCD4068B5 -:1004E000201D18985CB81895FAC3FFFC48D606D8AA -:1004F0002F060C9CF01F000C303CF01F000CF9453F -:1005000000E40C9CF01F000A1A993048300A309B16 -:10051000488CF01F0009581C5F0C2FFDE3CD80684C -:10052000000087F4800145FC8001EF6C800145FEEE -:100530008003C4A48001776CEBCD4068201D18981F -:100540005CB81895FAC3FFFC48D606D82F060C9C59 -:10055000F01F000C303CF01F000CF94500DC0C9C37 -:10056000F01F000A1A993048300A309B488CF01F5F -:100570000009581C5F0C2FFDE3CD8068000087F454 -:10058000800145FC8001EF6C800145FE8003C4B012 -:100590008001776CEBCD4060201D48F5BABC2F057B -:1005A0000A9CF01F000E303CF01F000DFAC6FFFC45 -:1005B0000D78F94800D80A9CF01F000A0C993018F1 -:1005C000300A306B488CF01F0009581C5F0C2FFD5F -:1005D000E3CD8060000087F4800145FC8001EF6C72 -:1005E000800145FE8003C4BC8001776CEBCD40C028 -:1005F000206D49EC3008F939010DF93B010850082C -:1006000050281AD9F93A010C1ADAFAC7FFF8F93961 -:10061000010AF93A01090E9CF01F00152FED580C44 -:10062000C10140085808C0401A9CF01F0012402C1D -:10063000580CC040F01F0010300C2FADE3CD80C02F -:100640001A9CF01F000E400818965808C0401A9CCB -:10065000F01F0008402C580CC030F01F000758163F -:100660005F0C2FADE3CD80C0000087F48001DAE499 -:100670008001D3A8800091E880018E9CD4214C0792 -:10068000405EEF6C0108EF6B0109EF6E010D1495F0 -:100690001294109A3019F2081800C120EEF801B037 -:1006A0005808C3D05828C4C04B5CEF3B01B5338811 -:1006B000F00B1800C5403398F00B1800C440EF6AE7 -:1006C000010CF01F0030EDDCB010F01F002F0C0CFF -:1006D0005C5C5805C1E11895F01F002A1815EF65FC -:1006E000010AF01F0029EDDCB010F01F00260C0CF1 -:1006F0005C5C5804C3F11894F01F00221814EF64D6 -:10070000010B6E98EDB80001C031F01F0020DA2A0D -:10071000EA0C1800FE98FFE23FCCD822EF3901B571 -:100720003348F0091800CC11EF3901B63418F0093C -:100730001800FE98FFC630E8EF68010CCC3BEF696B -:10074000010CCC0BEF3901B63408F0091800FE9803 -:10075000FFB8301948A8F169010CCB4BF93901B643 -:100760003408F0091800FE98FFA835A8F968010CB4 -:10077000CA9BE80C1800FE9BFFD1CBFB000087F45E -:100780008001F4A48001F504800205ECEBCD40E08B -:10079000303CF01F002330CB18954A26300CF01F58 -:1007A0000022ED4C01AC1897C360303BF01F001FD6 -:1007B0008F2CECF901AC72275807C2903078300BBF -:1007C000B2883068ECFA01ACB498ECF901ACB2AB89 -:1007D000ECF801ACB0BBECF901ACB2CBECF801AC7D -:1007E000EB390075702AB489ECF801ACEB39007470 -:1007F000702AB499ECF801ACEAFB00847029B2AB22 -:10080000ECFC01ACF01F000AE3CF90E0ECCCFE540E -:10081000F01F00080E9CE3CD80E000008001EF6C2B -:10082000000087F48001D8DC8001D3EC800208D47A -:100830008001D3A8D401F01F0002DA0A8001DA5641 -:10084000D401F01F0002DA0A8001DF30D401F01F6A -:100850000002DA0A8001DBE8D401F01F0002DA0AA4 -:100860008001DC04D401F01F0002DA0A8001DC20E0 -:10087000D401F01F0002DA0A8001DC3CD401F01F31 -:100880000002DA0A8001DC58D401F01F0002DA0A03 -:100890008001DC74D401201D1A9BF01F000CC09055 -:1008A00040085808C06048AA7499EDB90000C030EB -:1008B0002FFDDA0A1298A1C831CC9598300A149B02 -:1008C000F01F00042FFDDA0A8001D98C000087F4A4 -:1008D00080014658EBCD40C0206D4958189B709C54 -:1008E000E21C0002C06118970E9C2FADE3CD80C0C2 -:1008F00030081A96502850081A9CF01F000EC1119B -:10090000189740085808C0401A9CF01F000B402C54 -:10091000580CCEB0F01F00090E9C2FADE3CD80C067 -:100920001A9C3017F01F0006CEDB0000000087F491 -:100930008001DED08001D3A8800091E880018E9CE8 -:10094000EBCD4080201D300A1A9BF01F0017C0F02D -:1009500040085808C0F149576E99EDB9000BC071B5 -:10096000EEF801A84917F1D8C001C1212FFDE3CF4E -:10097000908048E76E99EDB90000CF01A1C9300A17 -:100980008F9931CC149BF01F000A6E99CE7BEEFC40 -:1009900001ACF01F00086E98301CABD88F982FFD6B -:1009A000E3CD80808001ED10000087F4800146587F -:1009B000800208D4D401F01F0002DA0A8001DBD0E3 -:1009C000EBCD40FC206D4A5318951097169266980F -:1009D0001496109C1294E21C0002C2D05BF5C30175 -:1009E000303CF01F001F300BF3D7C010F5D4C010FF -:1009F0001AD90C981ADAF3D2C010504B502BFAC601 -:100A0000FFF8F93B00F70A9A0C9CF01F00162FED37 -:100A1000580CC1B1189740085808C0401A9CF01FE4 -:100A20000012402C580CC030F01F00100E9C2FAD4F -:100A3000E3CD80FC18970E9C2FADE3CD80FCEDB884 -:100A40000000CCF13FB7CF3B6698A1A81A9C8798CD -:100A50003017F01F0007CE0B000087F48001EF6C09 -:100A60008001DB588001D3A8800091E880018E9C32 -:100A7000D40130085C7B1099109AF01F0002D80254 -:100A8000800209C0D4013008364B1099109A109C8E -:100A9000F01F0002D8020000800209C0EBCD40E048 -:100AA00020AD3006507CFB6B00201497500650267A -:100AB0001A95FACAFFDCFACBFFE81A9CF01F00195E -:100AC000C111189640085808C0401A9CF01F001623 -:100AD000402C580CC030F01F00150C9C2F6DE3CD3E -:100AE00080E05807C09040980E9B0C9C8F28F01F08 -:100AF0000010581CC0611A9C3016F01F000ECE3B2F -:100B000040085808C0401A9CF01F0007402C580CA1 -:100B1000C0313FD6CE3BF01F00053FD6CDFB0000D5 -:100B20008001DC8C8001D3A8800091E880016C40BA -:100B300080018E9CD401F01F0002D80280020A9C22 -:100B4000EBCD40E0209D3018189A1697F00C09481C -:100B50004A5B7609F1E9000CC06118970E9C2F7D65 -:100B6000E3CD80E0F00811FF12683006507A970854 -:100B7000500650261A95FACAFFE0FACBFFE81A9CF5 -:100B8000F01F001AC1E05807C09040880E9B0C9CD3 -:100B90008F28F01F0017581CC1611A9C3017F01FD6 -:100BA000001540085808C0401A9CF01F0013402C44 -:100BB000580CCD50F01F00110E9C2F7DE3CD80E02E -:100BC0001897CF0B40085808C0401A9CF01F000A25 -:100BD000402C580CC0313FD7CC2BF01F00083FD71A -:100BE000CBEB000000007A4C8001DCEC80016C4013 -:100BF00080018E9C8001D3A8800091E8EBCD40F865 -:100C0000216DFAC6FF901897FB69000EFB68000F74 -:100C1000FB6B0010FB6A00116CF46D036D15ECCCDE -:100C2000FFD4F01F0038306ABA6CECCBFFDCFACC92 -:100C3000FFEDF01F00350D88FB6800190D99ECCB16 -:100C4000FFFEFB69001A320AFACCFFE5F01F002E06 -:100C50004AEE30097C0B301CF809094AF5EB000814 -:100C6000C0902FF95899CF9130060C9C2EADE3CD52 -:100C700080F8F7EA10089D085BF9CF705024FB63F9 -:100C8000001250195807EFF91A003006FAC7FFC4CE -:100C900050F65116FACAFFAC1A9B0E9CF01F001CAE -:100CA000C111189640F85808C0400E9CF01F00195A -:100CB000411C580CCDB0F01F00180C9C2EADE3CD9C -:100CC00080F85805C09041580A9B0C9C8B28F01F57 -:100CD0000013581CC0610E9C3016F01F0011CE3B53 -:100CE00040F85808C0400E9CF01F000A411C580CE8 -:100CF000C0313FD6CBBBF01F00083FD6CB7B0000F6 -:100D000080018058800091DC00007A4C8001DD4C2D -:100D10008001D3A8800091E880016C4080018E9C06 -:100D2000D42120DD4B0510946A0E4126F1DEC0016E -:100D3000C0B0EDBE0001C411EDBE0002C411300709 -:100D40000E9C2F3DD82210973018FB6B002A508A3A -:100D50005077FDE8100850998B08FB540028580C78 -:100D6000F9F71A001A953007FACAFFD05007502732 -:100D7000FACBFFE81A9CF01F001DC101189740082C -:100D80005808C0401A9CF01F001A402C580CCD90F7 -:100D9000F01F00180E9C2F3DD8225806C09040C866 -:100DA0000C9B0E9C8D28F01F0014581CC0C11A9C6F -:100DB0003017F01F0012CE4B30173028CC7B302775 -:100DC0003048CC4B40085808C0401A9CF01F00081F -:100DD000402C580CC0313FD7CB4BF01F00063FD7FB -:100DE000CB0B000000007A488001DDAC8001D3A865 -:100DF000800091E880016C4080018E9CEBCD40E04A -:100E0000207D300616975006189B50261A95FACA70 -:100E1000FFE81A9CF01F001AC111189640085808E4 -:100E2000C0401A9CF01F0017402C580CC030F01F17 -:100E300000160C9C2F9DE3CD80E05807C1904068C0 -:100E40000E9B0C9C8F28F01F0011581CC1104008ED -:100E50005808C0401A9CF01F000B402C580CC0D002 -:100E6000F01F000930060C9C2F9DE3CD80E01A9CFA -:100E70003016F01F0007CD3B1896CDCB8001DE0C5D -:100E80008001D3A8800091E880016C4080018E9C95 -:100E9000D40120CDFB5A0012FB590014FACAFFCC32 -:100EA000502874197408FB590016501874397428A6 -:100EB000FB59001AFB580018745974485039FB58F4 -:100EC000001C74797468FB590020FB58001E74994B -:100ED000748850A95098300974A8FB6C0022FB5B01 -:100EE0000010FB68002C74BBFB6900231A9CF01FE8 -:100EF00000032F4DD802000080020DFCEBCD40EE28 -:100F000020CD3FF94CC850A950B94CC93005303CF0 -:100F100091059305F01F004A322A18961A971A9CD9 -:100F20000A9BF01F0048FAC3FFDE306AE06B00FF47 -:100F3000069CF01F00441AD5ED38004F1AD86D28D2 -:100F40001AD86D191AD9ED1800361AD8ED190032D1 -:100F50001AD96CE81AD8ED19002E1AD9ED18002A02 -:100F60001AD8ED1900261AD9ED1800221AD86C6982 -:100F700030BB1AD9301C6D08ED1900FEED3A001F88 -:100F8000F01F0031ECFB01282F4DF6C80001581866 -:100F9000E0880045ED3100F7ECCAFF8C30153006D3 -:100FA0001AD61AD540D81AD8F4E80000206D069B4E -:100FB000FAE900081A9CF4E20008306AFAE300102B -:100FC000F01F0022EF380021209DFB680021EEE891 -:100FD0000000FAE90000EEE20008FAE30008EEE89B -:100FE0000010FAE90010EEE20018FAE30018EF38FA -:100FF0000020029BFB6800200A990C98FACCFF9015 -:10100000303AF01F00130C9A2EED0C9B40ACF01FF1 -:1010100000110A9C2F4DE3CD80EE1AD50A98FACC28 -:10102000FFD05C5B0A99FE7AFF6AF01F000B2FFD70 -:10103000CB2B000000007A4C00007A488001EF6C56 -:10104000800091D080020E908002E73680020BFC77 -:1010500080020A9C80020D20D431202D500B189163 -:101060004A1776026E9CE21C0002C350304C5011AD -:101070005801E2021700F01F001DEEF700F0189073 -:101080005807C2D030043013C0A82FF45802C1B1A1 -:101090005801F9B301FF5805C1100A9760B66E05F3 -:1010A000F01F00130C9A189B0E9CF01F0012CEE04C -:1010B0000E9CF01F00115805CF114008069C9104AA -:1010C0002FEDD83240182012110C0E9B5018F01F33 -:1010D000000BCE2B1893069C2FEDD8320E943013B4 -:1010E000CEDB0000000087F48001EF6C800145C476 -:1010F000800159A080015CDC800184284828F0FC34 -:1011000000F85EFC000087F4486871195879F9B856 -:101110000001F9F80A00F9B80100F9F81A005EFFB9 -:10112000000087F44828F14C007C5EFC000087F446 -:101130004828F14C01D05EFF000087F4EBCD40C0A1 -:1011400018971496E04A0020E088000830083FF91C -:10115000B898B889E3CF80C02FECF01F00043008A6 -:10116000AE96AE88E3CF90C0800091DCEBCD40FC22 -:10117000206D18941695F01F00431897C1A0F939F7 -:1011800000CC3FF8F0091800C3910896EF3900A889 -:101190003FF8F0091800C5414BB8F0F700F85807C0 -:1011A000C0A1EC040104301C8B042FADE3CD80FC06 -:1011B0000896CF3BE06AFFFF300B1A9CF01F00330C -:1011C0006F38302A707C1A9B2F4CF01F00311A9216 -:1011D0006A0A9A93063AC0442FADE3CFC0FC0C9B39 -:1011E0001A9C5C7AF01F00296F380606707C1A9BE7 -:1011F0002F4C300AF01F0026CD5BE06AFFFF300B5A -:101200001A9CF01F0022302AEEC2FF341A9B049C65 -:10121000F01F00201A966A0A9A93063ACDE55C7A86 -:10122000089B1A9CF01F00191A9B049C300AF01F9F -:1012300000196A08E803000606188B08CA8BE06AE2 -:10124000FFFF300B1A9CF01F0011302AEEC7FF5829 -:101250001A9B0E9CF01F00101A926A0A9A93063A83 -:10126000CBC50C9B5C7A1A9CF01F00081A9B0E9C45 -:10127000300AF01F00096A08060606188B08C8DB4A -:101280008001EFF8000087F48001C7B88001D344E3 -:101290008001D6B08001D558D401F01F0002D802D9 -:1012A00080015D18EBCD40F8FACD00803225149313 -:1012B00018941297BA85FAC6FFFF0C9CF01F001B0A -:1012C000300806063019AC85AC981A951A9A498BE5 -:1012D000089CF01F0018C0503FFC2E0DE3CD80F895 -:1012E0000E9CF01F0015E04C0040C1701AD7493A1F -:1012F000E06B00800A9CF01F00120A9A3019491B0B -:10130000089CF01F000C2FFD1897580CCE61089C0C -:10131000F01F000D0E9CCE2B0E9A089C3019489B96 -:10132000F01F0004CDB0CD9B800091DC8003C4FC95 -:1013300080023BB8800091B8800399D0800091482A -:101340008003C50480024328D421210D300B4B6655 -:10135000169CF01F00368D0CC2B078075807C2A04B -:101360006F985808C2704B283014EF4400641A95E7 -:10137000340B1AD84AFA0A9CF01F002F08990A9ACF -:101380004AEB0E9CF01F002E2FFD580CC2506C082B -:10139000700CF01F002C6C09300893086C08700961 -:1013A0004A98722A910A6C09300893486C0C2F0DE8 -:1013B000D822F01F00261897CF70F01F00254A583A -:1013C0004A59118A4A5B0E9CF01F0025C2056E29FE -:1013D00049D89109CE9B08994A2A4A3B0E9CF01F96 -:1013E0000018C1C14A18340B1AD8492A0A9CF01FA8 -:1013F000001208990A9A49EB0E9CF01F00112FFD6C -:10140000580CC0C13088EF480054CC9B0E9CF01F94 -:10141000000D6C0930089308CC7B0E9CF01F00096E -:10142000CB7B000000008C8C80023B4C8003C50805 -:10143000800399D0800091488003C4FC80023BB8AF -:1014400080024190000003FC80024F4080023B225A -:10145000000004000000042800000404800212A41C -:101460008003C5108003C5148003C5188003C538E8 -:10147000D421169849871495189B109A49740E9C8C -:10148000A888F01F00170A9B30064965EF66002008 -:10149000341A0A9CF01F001449484959EB66004071 -:1014A000700B720CF01F00131896C0C0F01F0012D2 -:1014B0000A99098A0E9B0C9CF01F00106D185808A1 -:1014C000C021D822ECCAFFDC0A9C3209341BF01F71 -:1014D000000CD8220000040400000400800091DC0D -:1014E00000000428800091AC000003FC00008C8CFC -:1014F00080023B0680023B22800212A480023A68EE -:10150000D421210D328A300B1A9CF01F00301A9C16 -:1015100030073014504750544AD5F01F002E8B0C22 -:101520001A96C4A0FAC6FFD8318A0E9B0C9CF01FF5 -:1015300000274A984A990C9B50E850A96A0CF01F62 -:1015400000281896C3B04A7CF01F00274A761AD7A5 -:10155000304B1AD70E984A694A6AEC0B000CF01F00 -:1015600000260E981AD74A591AD74A5A302B0C9C83 -:10157000F01F00210E981AD74A291AD74A2A311B80 -:10158000ECCCFFF8F01F001C0E981AD749F91AD7B7 -:1015900049FA312BECCCFFF4F01F00170E982F8D79 -:1015A000ECCCFFF01AD749B91AD749BA315BF01F12 -:1015B0000012089C2FED2F0DD8226A0CF01F001787 -:1015C0000C9C8B06CF9B0000800091D000007A50CD -:1015D00080022B4C8003C5448003C54C80022C0440 -:1015E000800216FC8002113000007A5480021670CE -:1015F0008003C55480016EB8800217408003C3ACDD -:10160000800216C48003C5708002168C8003C58CCE -:101610008002161C8003C5A480022AF8EBCD40C0CE -:1016200021AD189798E8EDB80000C181368A300BDB -:101630001A9CF01F000C306A0E9B1A9CF01F000AC7 -:101640006E2830195C3850395028488870091A962D -:101650001A9A720C306BF01F00062E6DE3CD80C01D -:10166000800091D0800091DC00007A508002792CBB -:10167000D40148587009300A720C301BF01F000367 -:10168000D802000000007A508002792CEBCD404057 -:1016900021AD368A300B1A9CF01F000830084889AB -:1016A000500872081A961A9A700C302BF01F000519 -:1016B0002E6DE3CD80400000800091D000007A5074 -:1016C0008002792CEBCD404021AD368A300B1A9C3C -:1016D000F01F000830184889500872081A961A9AA4 -:1016E000700C302BF01F00052E6DE3CD8040000004 -:1016F000800091D000007A508002792CD401487883 -:10170000700EF6C9000E189AF8CBFFFA2F2A7C0C3F -:10171000F01F0003DA0A000000007A50800224E083 -:10172000D401580CC051304CF01F0004D802304C8A -:10173000F01F0003D80200008001A12880019F3023 -:10174000EBCD40E0FACD0170FACCFE98F01F001905 -:10175000581CC22145A85818E088001FE068010005 -:10176000FACBFE901A9C16D8F01F00131A95189603 -:10177000FAC7FF00368A300B0E9CF01F0010581677 -:10178000C11048F870090E9A720C300BF01F000D52 -:101790002A4DE3CD80E0300CF01F000B2A4DE3CD45 -:1017A00080E045B85808FE9AFFEE540D5418CEABB1 -:1017B00080015F448002116C800091D000007A505B -:1017C0008002792C80021720000000000000000039 -:1017D000EBCD40C0F8F800D418971696F0F80088C2 -:1017E000F8FA00E85808C040F8FC00C45D185876C4 -:1017F000C1A058065F0858365F091248C11030185A -:10180000EF4800ECEEF900D473985808C050300B44 -:10181000EEFC00C45D18EF4600E8E3CD80C05846FA -:10182000CEF0CFABEEF800EC5808CF603008301B9C -:10183000EF4800ECEF4B00F0EEF800D47198580838 -:10184000CE81CEABD401F01F0002D802800217D0A7 -:10185000F8FC00E85EFCD401F8F800D471A8580840 -:10186000C050F8FC00C45D18D802109CD802D40106 -:10187000F8F800D471185808C050F8FC00C45D187E -:10188000D802DC0AD401F8F800D471285808C050F6 -:10189000F8FC00C45D18D802DC0AD703EBCD408009 -:1018A0003008F8F90108F94801085809C031C08822 -:1018B0000E997207129CF01F00045807CFA1E3CDC8 -:1018C00080800000800091E8D401F8FC00DCF01F6B -:1018D0000002D8028002B4A4D401F8FC0090F01FEA -:1018E0000002D80280023B8CD401F8FC0090F01F6B -:1018F0000002D80280023C84EBCD40C01696F8F777 -:1019000001085807C051C0B86E075807C080EECC18 -:10191000FFFC306A0C9BF01F0004CF710E9CE3CDDE -:1019200080C000008000917CD4011699F8F801185D -:101930005808C0A1F8F800D470285808C0C0F8FCB6 -:1019400000C45D18D802F8CBFF64306A129CF01F07 -:101950000003D80ADC0A0000800091DCEBCD40F8DF -:1019600020AD1897F8F801185808C06030070E9C91 -:101970002F6DE3CD80F8F8F800D470385808CF7098 -:10198000F8FC00C41A9B1A935D181895CF05EEF861 -:1019900001185808C431EEF800D470285808CE70E9 -:1019A000FAC4FFE0EEFC00C4089B5D18CE05EEFC17 -:1019B000009078465806C301EEF800D45808C2C01B -:1019C000700C49BBF01F001BEFFC0024F9B60001AE -:1019D000EFFC102478075807C111CCAB5806C0B0F3 -:1019E0006E885808CC50EECBFFE8306A089CF01F98 -:1019F0000012CBE06E075807CBB0EEF80194580800 -:101A0000CFA16E581035CEB16E4B0A9A1A9CF01FBA -:101A1000000ACE70CE4B3006CDEBFAC4FFE0306A40 -:101A2000EECBFF64089CF01F0005CC2B8003C65C46 -:101A3000800091A08000917C800091DCD401F01F97 -:101A40000002D8028002195CD42120AD3008FB5876 -:101A50000024508816961897F6F801845818C0404C -:101A60003FFC2F6DD82277185808CFB0F8F500B892 -:101A70005885C2205905CF512DCB0A9A1A9CF01FC8 -:101A800000171A940A9A303BEEFE00D47C5858088E -:101A9000CE801ADA1AD43009EF490104EEFC00C4F2 -:101AA00030681AD8FACAFFD430181ADA48CA7C56F5 -:101AB0005D162FCDCD7B2DCB318A1A9CF01F0007F0 -:101AC0000A9AECCBFFCCFACCFFE8F01F00041A9482 -:101AD000320A302BCDAB0000800091DC80039C38B3 -:101AE000D42118951696F01F000F1897C05078381B -:101AF0002FF89938D82A310CF01F000B1894C0F039 -:101B00000C9B306A2FCCF01F000930188938EAF995 -:101B100001088909EB4401080E9CD822DC2A000048 -:101B2000800218F880028F24800091DCEBCD40FC0D -:101B3000EDD9C010407218941693ECCCFFFC1495AC -:101B4000910CF01F00161897C190E8F800907039BA -:101B5000EC081608B893B889B8B6B8A85805C100FB -:101B60000C9A0A9BF8C6FFFC0C9CF01F000D0E9C03 -:101B70005802E5F61A00E3CD80FCE3CD80FC0C9A18 -:101B80000A9BF8C6FFFC0C9CF01F00060E9C580236 -:101B9000E5F61A00E3CD80FC80009200800091DC25 -:101BA000800091D0D401401E5C791ADEF01F000243 -:101BB0002FFDD80280021B2CEBCD40F8203DF8F819 -:101BC00000BC1493129458485F0A58285F0918976C -:101BD00016961449C0603FF70E9C2FDDE3CD80F8C8 -:101BE000F8FC00DCF01F002BC0305816CF50EEC5BB -:101BF000FF64306A4A8B0A9CF01F0028C0D1EEF8BF -:101C000000D470285808C060EEFC00C41A9B5D1810 -:101C1000C370EEC5FF043008F7D6C0081AD8F3D455 -:101C2000C010FAC8FFF4069A0E9CF01F001D2FFD8D -:101C30001896580CCD1040296E2C580CC1001298E3 -:101C40000A9B0C99E06A888EF01F001618970C9C6E -:101C5000F01F00150E9C2FDDE3CD80F8EEF800D4C8 -:101C600071845804C0B01298EEFC00C40A9B0C9911 -:101C7000E06A888E5D141897CEBB3FF7CE9B306A22 -:101C8000485B1A9CF01F0005CC501A95CC5B0000F5 -:101C900080028F78800217C88000917C80021B2C04 -:101CA00080028154800091E8EBCD40C0189EEFDAAD -:101CB000C010782C580CC0600E9AF01F0009E3CDBC -:101CC00080C0FCFA00D475865806C0700E9AFCFCE1 -:101CD00000C45D16E3CD80C0E3CFC0C08002815454 -:101CE000D421497A1894301BF01F0016300A089B43 -:101CF000495CE8C5FF64F01F0015E8F701085807C4 -:101D0000C1C03006C0680E966E0C580CC1601897A2 -:101D1000306A0A9BEECCFFFCF01F000DCF51580635 -:101D2000EFF80000E9F80A42EFF81000EDF81A00A9 -:101D30000E9CF01F0008D822D82200008003C66441 -:101D400080023A1A80023058800274008000917C30 -:101D5000800091E8D401F01F0002D80280021CE04C -:101D6000EBCD408048FA1897301BF01F000FEEF8BB -:101D700000BC5818C0F00E9B300A48CCF01F000C75 -:101D80000E9CF01F000C0E9C307BF01F000BE3CD6F -:101D900080800E9C305BF01F0008E3CD8080000047 -:101DA0008003C68880023A1A8002360080027400DE -:101DB00080021CE0800217D0EBCD4040486A1896A4 -:101DC000301BF01F00060C9B300A485CF01F00051A -:101DD000E3CD80408003C6A880023A1A8002360014 -:101DE00080027400EBCD40F81894F8FC00CC580C3D -:101DF000C360E8F800D05808E08A00321897E8C3BA -:101E0000FF643005C0A8580AC200EEC7FF64E8F8B6 -:101E100000D00A38E08A00242FF5E8F600B0306AD6 -:101E2000069B0E9CF01F0015CF115806C0E06C5A9F -:101E30006EA81438CE91EECCFFFA6C4BF01F000F59 -:101E4000C0406C5A580ACE215807C0906F5AEECB4A -:101E5000FFD4E8FC00DCF01F000AC0403FFCE3CDEB -:101E600080F8EECBFFA8E8FC00DCEEFA0080F01F63 -:101E70000005CF60CF4B00008000917C8002B58CC4 -:101E80008002B52CD4211895E06C009CF01F001B3B -:101E90001897C310EAF401185804C2A1EAF800D454 -:101EA00070C85808C250189B301AEAFC00C45D186C -:101EB0001898C1E50E9C3016E06B009CF0060D46AC -:101EC000EC0B024BF01F000E58065F09580C5F1810 -:101ED0001248E8081800F8071710EAFC00CCF01FB9 -:101EE0000009089CEB4600D0EB4700CCD8220E9CA2 -:101EF000F01F0004DC2A000080009200800091F4B2 -:101F0000800091E8EBCD40801897F01F0008C031A9 -:101F1000E3CD80800E9CF01F0006C0550E9CF01F84 -:101F20000003CF7BE3CFC08080021DE480021E84CB -:101F3000EBCD40FE208D18961697149512921091B5 -:101F4000580BC580F6FB0080580BC0E16F5B580B47 -:101F5000C3210C9CFEFA02E4303BF01F00B93FFCA9 -:101F60002F8DE3CD80FE7568EDB80001CF011A9A80 -:101F7000EECCFFA8F01F00B3CEA16B484029126839 -:101F8000CE606B3840191268CE206B584039126809 -:101F9000CDE0FEFA02B2301B0C9CF01F00A9EEC48B -:101FA000FFD4302A303BECFC00DCF01F00A8089C7A -:101FB0006F5AC4386B68EDB80000CCC1EEC4FFD4D2 -:101FC0001A9A089CF01F009FCC516B484029126858 -:101FD000CC106B3840191268CBD06B58403912685E -:101FE000CB90FEFA026A301B0C9CF01F0095301A51 -:101FF000CDAB7568E21800021A93F9B40102F9B486 -:102000000001F8FC00DC1A9BF01F0092C1F05BECB1 -:10201000C4001A9C320A300BF01F008F6B48502806 -:102020006B3950196B585038089A303BECFC00DC87 -:10203000F01F0086300C189A189BECFC00DCF01F97 -:102040000087C3602F8DE3CFC0FE402A6B49F3EABF -:102050000008C0D0401A6B39F3EA0008C110403ABA -:102060006B59F3EA0008C1B04004CDFB1AD9302BFC -:102070001ADA0C9C4FAAF01F00722FEDCCBB1AD9B4 -:10208000302B1ADA0C9C4F7AF01F006D2FEDCC2B01 -:102090004F5A302B0C9CF01F006ACBCB1AD9302B37 -:1020A0001ADA0C9C4F1AF01F00662FEDCB3B580735 -:1020B000EE0B1700F60A1700F9B80158EFD8E10B3C -:1020C000EFFA1020ECFC00DCF01F0069CBC16B487C -:1020D0004029F1E90009EDB90004C5D0EDB90003CC -:1020E000C750EDB90002E081009430484E1AED4827 -:1020F00000B8301B0C9CF01F00526B384019F1E9FE -:102100000009EDB90004C500EDB90003C7513088DE -:102110004D9AED4800B4301B0C9CF01F00496B58E1 -:102120004039F1E90009EDB90000E080007FEDB928 -:102130000001C55130284D1AED4800BC301B0C9CE5 -:10214000F01F003FECFA00BC306BECFC00DCF01F31 -:10215000003FECFA00B4304BECFC00DCF01F003B1D -:10216000ECFA00B8305BECFC00DCF01F0038029A9F -:10217000049BECFC00DCF01F00421894FE91FF640D -:102180006B57E2170002C191ECFC00DCF01F003D30 -:102190000E9CCE7A31084BCAED4800B8301B0C9C1F -:1021A000F01F0027CABB31084B8AED4800B4301B32 -:1021B0000C9CF01F0023CB4BECFC00DCEACBFFDCDB -:1021C000320AF01F0033089CCCCA30884B1AED4805 -:1021D00000B8301B0C9CF01F001AC90BEDB90004AD -:1021E000FE91FF3231084ACAED4800BC301B0C9CFE -:1021F000F01F0013CA8BEDB90000FE91FF25301BC4 -:102200004A6AED4B00B40C9CF01F000DC89BEDB961 -:102210000001FE91FF1930284A1AED4800B8301B22 -:102220000C9CF01F0007C6AB301B49EAED4B00BC0D -:102230000C9CF01F0003C87B8003C8EC80023A1A94 -:102240008002BD688003C6C08002B4D48003C6E0AB -:102250008002C04C800091D08002B58C8003C734CE -:102260008003C7788003C7008003C7BC8002B52CF9 -:102270008003C8288003C86C8003C8B08002B64CB5 -:102280008002B9EC8003C8008003C8588002B91CE2 -:102290008003C8148003C8CC8003C8808003C84072 -:1022A0008003C894EBCD40C07758EDB80003F9B86F -:1022B0000008F9F80A2FF9B80104F9F81A2F18974D -:1022C000300A1696F8FC00DC149BF01F0025300A3B -:1022D000EEFC00DC149BF01F0023300AEEFC00DC57 -:1022E000149BF01F002130183009ECCBFECCEF48D6 -:1022F00000B8EF4800B4EF4900C02FF976085858ED -:10230000E08B00225808C2512FCB5849CF71EEFA0A -:1023100000BC306BEEFC00DCF01F0014EEFA00B4E1 -:10232000304BEEFC00DCF01F0011EEFA00B8305B21 -:10233000EEFC00DCF01F000DEEFC00DCF01F000CDA -:10234000E3CD80C03048EF4800B8EF4800B4CE0B72 -:102350003028EF4800B8EF4800B4CDAB8002B58C10 -:102360008002B52C8002B5EC8002B4D480028F804C -:10237000EBCD40E0205D1897F8F600B0F8F800BC0F -:102380005828C57059085F0958485F081248C2901C -:10239000302BEEFC00E0F01F002F314A300B1A9C6E -:1023A000F01F002D1A95EEFA00BC588AC200EEF814 -:1023B00000905808C03070785028149958895F18D8 -:1023C00058195F191069ECF8017CEEFC00E01A9ACC -:1023D0000C9B50495038F01F00212FBDE3CD80E009 -:1023E000300BEEFC00E0F01F001BCD8B30085018C6 -:1023F000301B500BECF900F0F3EB0008FBFB1A016B -:10240000EDB90001C120EEF800905808C1F0EEFCD3 -:1024100000D4580CCD10780C491BF01F0012FBFCA7 -:102420000A01EEFA00BCCC4B4018A1B85018CECB34 -:10243000300BF8FC00E0F01F000C300BEEFC00E06D -:10244000F01F000AEEF800BCC9EB3089CB8B00000E -:1024500080026178800091D08002581C8003C65CA5 -:10246000800091A0800261A48002618CEBCD40E0ED -:10247000189716951496F8F800905808C0D0704830 -:102480005808C0A1F8FC00D4580CC060780C48EB88 -:10249000F01F000EC1501AD648DA1AD5301B0E9C18 -:1024A000F01F000C300A0E9B48BCF01F000C0E9968 -:1024B0000C9B0A9C3008488AF01F00092FEDE3CDE1 -:1024C00080E000008003C65C800091A08003C960AA -:1024D00080023A1A800230588002740080027474BC -:1024E000D4211295169614941897F8F900BC5849FF -:1024F000C1C0F8FA00F4580AC10158895F08581998 -:102500005F0B104BF40B1800F9BB000AF9BB014636 -:10251000F01F0019EEFA00F4F4C8FFFFEF4800F4D2 -:10252000EEF900945809C020D822306A0C9BEECCFA -:10253000FF04F01F0012EEF800BC5828C111EEF89D -:1025400000D471585808C040EEFC00C45D180A99C8 -:10255000089A0C9BEEFC00DCF01F0009D8220A99B7 -:10256000089A0C9BEEFC00E0F01F0006FE99FFDECF -:10257000CE7B00008002246C800091DC8002C3CC02 -:10258000800261FCEBCD406C1ADA18951ADB1692CA -:102590001493301B48AAF01F000B48B6300A0A9B60 -:1025A0000C9CF01F000A0A990C9A069B049C3008A8 -:1025B000F01F00072FEDE3CD806C00008003C99071 -:1025C00080023A1A8002360080027400800274741D -:1025D000D401F01F0002D80280022584EBCD40C058 -:1025E000189E1497109CFCF800BC5888C240580BE9 -:1025F000C1A0FCCAFF64FCF600D46C585808C19016 -:102600001ADC16981AD9300BFCFC00C41ADBFD4BFF -:102610000104490E0E991ADE301B6C565D162FCD43 -:10262000E3CD80C0FCF600D448BA6C585808CE916F -:10263000E3CFC0C0585CF9B80002F9B80104580BE8 -:10264000C040FD4800B4CD6BFD4800B8482ACD4BD2 -:1026500080037E2080039C38EBCD40F8FACEFFE863 -:1026600018967C35F8F400D47C037C17685C7C2ECB -:10267000580CC0F01AD51ADE300E1AD71AD3ED4E08 -:102680000104ECFC00C468565D162FCDE3CD80F844 -:10269000E3CFC0F8D42118951694F8F70104580731 -:1026A000C020D822F8F900D472585808C4C01AD7EC -:1026B000F94701041AD70E981AD74B6A1AD70E9BFE -:1026C0007256F8FC00C40E995D16EAF900D42FCDBD -:1026D00072585808C3801AD7EB4701041AD70E98CE -:1026E0001AD74ACA1AD70E9B7256EAFC00C4301990 -:1026F0005D16EAF900D42FCD72585808C2401AD797 -:10270000EB4701041AD70E981AD74A2A1AD70E9BFC -:102710007256EAFC00C430295D16EAF900D42FCDC8 -:1027200072585808C1001AD7EB4701041AD70E98FF -:102730001AD7498A1AD70E9B7256EAFC00C4303960 -:102740005D162FCD5804C200EAFA00D47458580818 -:10275000C12030091AD91AD9EB4901041AD91298A3 -:102760001AD9129B7456EAFC00C4089A5D16EAFA5C -:1027700000D42FCD75A85808C070089B3019300AB6 -:10278000EAFC00C45D183018EB480104D8220000B0 -:1027900080039C38D421204DF8F900D41897169561 -:1027A00073885808C2C11094F8C6FFEAC1C8EEFC8D -:1027B00000C45D1B1AD4189B0E984C19E06A888ED1 -:1027C0000C9CF01F00408F2C2FFD580CC111580598 -:1027D000C140189B305CF01F003CEEF900D47388B8 -:1027E0005808C0D1737B580BCE31169CCE4BEECB24 -:1027F000FFF0F01F0036C1302FCDDC2A7378580867 -:10280000C0B0EEFC00C45D18C070189B306AEECCFE -:10281000FFF0F01F002F6E2C580CCEA1EF39007A7C -:102820003008F0091800C3A1EEF800D47048580829 -:10283000C100301BEEFC00C45D18C0B4EEF800D43B -:1028400071485808C0601A9BEEFC00C45D18C214A1 -:10285000300B0E9CF01F001FEEF800D47099580941 -:10286000C070300BEEFC00C45D19EEF800D470A807 -:102870005808C050301BEEFC00C45D183018EF48FB -:1028800000C84959300C72082FF893082FCDD82270 -:102890004038F1D8C002CDD0CB0B300848891AD8C7 -:1028A000E06A888E0E98EECBFFF0EECCFF86F01F2C -:1028B00000058F3C2FFD580CCB81C9FB800224E022 -:1028C0008002819C80028F1C800281E4800091DC68 -:1028D0008002269400007A6CEBCD40E018971695A4 -:1028E000300BF01F001DEEC6FF64306A49BB0C9C24 -:1028F000F01F001BC2E0EEF801185808C1F00C9B55 -:102900000E9CF01F00183006EEFC00DC0C9BEF461E -:1029100000B0F01F00150C9A0C9BEEFC00E0F01FBD -:1029200000130C9BEEFC00E0F01F00110C9BEEFC72 -:1029300000E0F01F0010E3CD80E0EEF800D470D886 -:102940005808CDE00A9A0C9BEEFC00C45D18CD8BB4 -:102950001896CD6B800217D0800217C88000917C3A -:10296000800226948002B9D48002581C800261E85B -:10297000800261D4D401F01F0002D802800228D85E -:10298000EBCD40C01897F8F800C45808C230303B6F -:10299000F01F003DEEF800D470495809C070300BAC -:1029A000EEFC00C45D19EEF800D470A95809C0709F -:1029B000300BEEFC00C45D19EEF800D47098580896 -:1029C000C050300BEEFC00C45D18300B0E9CF01FA5 -:1029D000002F6E2C3006F01F002E8F266E3C580CF8 -:1029E000C040F01F002B8F36EEF800E45808F9B80D -:1029F0000100EFF81A39EEFC0090580CC060F01F8F -:102A000000253008EF480090EEFC008CF01F0022FB -:102A10003006EEFC00DC0C9BEF46008CF01F001F24 -:102A2000EEFC00E0F01F001EEEFC00DCEF4600E0D4 -:102A3000F01F001CEEFC00DCF01F001BEEFC00DCB5 -:102A4000F01F001A0E9CEF4600DCF01F0019EEFC90 -:102A500000CCF01F00110E9CEF4600D0EF4600CCDA -:102A6000F01F00140E9CF01F0014EEFC00C4580C64 -:102A7000C070EEF800D470785808C0205D18E3CD1F -:102A800080C00000800228D88002269480028174D1 -:102A9000800242B4800091E88002B4CC800256ECFF -:102AA00080029438800294088002C0788002189CCA -:102AB00080021DB880021CE0EBCD4080169778099B -:102AC0001639C0F1761899080E9CF01F000A0E9C6A -:102AD000F01F0009E3CF808072180E38C060109993 -:102AE0005809CFB1E3CFC0806E189318CEEB000029 -:102AF00080022980800091E8EBCD40801897580C27 -:102B0000C051C1980E9CF01F000D6E0B580BCFB139 -:102B1000F01F000BF01F000B6E4C580CC060F01F34 -:102B2000000A6E4CF01F00096E8CF01F00080E9C0E -:102B3000F01F0006E3CD808080022AB88002724C2C -:102B40008002728480028F20800091E8EBCD40C02B -:102B50001897580CC05130060C9CE3CD80C0F01F74 -:102B60000021CFA1334CF01F00201896CF606E08D3 -:102B70006E19991899296E286E89993899996E3C21 -:102B8000580CC040F01F00198D4C6E7C580CC04092 -:102B9000F01F00168D8C6E498D59495891096E5A57 -:102BA0008D6A4948910A49486E698D7991090C9C52 -:102BB000F01F0012C11130196C988DB95808EDF949 -:102BC0001A0C6C285808CC906C185808CC606C4CC7 -:102BD000F01F000BCC200C9C3006F01F000ACBDB52 -:102BE0008002720880028F24800091940000046C9F -:102BF00000007AA400007AA0800275F880028F1E7F -:102C000080022AF8D431204D580C5F08580B5F0918 -:102C1000189316971248C05030050A9C2FCDD83211 -:102C2000E06C011CF01F00C01895CF803018F948E7 -:102C3000010CFEF102F66E22620B580BC100580225 -:102C4000E0800144E2C4FFFC3006760B049CF01FD8 -:102C500000B8C0C02FF6090B580BCF810A9CF01F9B -:102C600000B50A9CF01F00B4CD8BE2060328EB48A8 -:102C700000D46E0C580CE0800122F01F00B0EB4C29 -:102C8000008CF01F00AFEB4C0090CE906E185808EF -:102C9000C0A0785CF01F00A86E1CEAF60090F01F40 -:102CA00000A78D5C6E385808C0C0EAF8009070BC70 -:102CB000F01F00A16E3CEAF60090F01F00A08DBC52 -:102CC000EAF800905808CCB06E4C580CCC80F01F3D -:102CD000009DE04C0063FE9BFFC3EAC1FFEA364A59 -:102CE0006E4B029CF01F00986E5C580CE08100F95E -:102CF0006620340CF01F008C1897CB10FEF8024CA5 -:102D00008F78FEF8024AFEF9024A8F98FEF80248D0 -:102D10008F058F458F658F898FC83006FEF4023C82 -:102D20008F168FA4FEF202388FB2EAF900907288F3 -:102D30008FD8EAF9009072988FE8EAF9009072A8AB -:102D40008FF8F01F0088EB4C00E0E08000C20C9B85 -:102D5000F01F00850C9BEAFC00E0F01F0084EAF8FD -:102D600000D470685808E08000A7029B0A9C5D1898 -:102D7000EB4C00C4FE90FF74EAF8009070BBEAF8D8 -:102D800000D470895809C0605D19FE95FF69EAF8A2 -:102D900000D471685808C0F0EAFC00C45D181897A8 -:102DA000C0A0029BF01F0062C0600E9B364A029CCE -:102DB000F01F006534CCF01F005CFE90FF514EC840 -:102DC0004EC9991899294EC84EC9993899494EC883 -:102DD0004EC9995899694EC84EC9997899894EC873 -:102DE0004EC9999899A94EC84EC999B899D94EC853 -:102DF0004EC999C899E94EC84EC9F9440040F942F4 -:102E00000044990599F8F9490048F01F0069EB4C16 -:102E100000DCFE90FF25EB39007A3008F00918003D -:102E2000C5C1300A029BF01F0063EAF80090EAFC7B -:102E300000DC707BF01F0060EAFB00E0EAFC00DCD5 -:102E4000F01F005EEAFA009074C85808C60174D8F2 -:102E50005808C52174EA580AC080302BEAFC00DC0F -:102E6000F01F0057FE91FEFC009B0A9CF01F0055CE -:102E7000FE95FEF6EACBFFF0EAFC00DCF01F005204 -:102E80003FF8EB4800E4EAF900D473485808C0D092 -:102E90001A9BEAFC00C45D18C0814038EDB80002FE -:102EA000C0413018EB4801188B0366088B18870562 -:102EB000FE9FFEB5EB4800C4CD2A6E3B6E1CF01F92 -:102EC0000043EB4C0090CFDAF94B00D4CD3A0E9C86 -:102ED000F01F0019FE9FFEC4EACAFF86CA4BF01F0E -:102EE000001958FCFE9BFEBC6E5B310AEACCFF86E3 -:102EF000F01F0015CFEA109A301BEAFC00DCF01F2F -:102F00000030FE91FEADEAFA0090CA5B109A300BD9 -:102F1000EAFC00DCF01F002AFE91FEA2EAFA009013 -:102F2000C97B000080028F2400000470800091A003 -:102F300080022980800091E88000919480021348EB -:102F4000800091B8800091AC80021D60800225DC79 -:102F500080021BB8800218C8800218E8800218D8C6 -:102F60008002609C800261E8800261D48002184483 -:102F700080021850800225D0800229748002304CD3 -:102F8000800226588002360080021A3C80021928EE -:102F900080021CA880021F0480021BA480021D5412 -:102FA0008002186E80021884800218568002C0DCED -:102FB0008002B4C08002B4B88002B4CC8002B4D421 -:102FC000800227948002B90480023B4CEBCD40E0A4 -:102FD000306A18971695F8C6FF64497B0C9CF01F61 -:102FE0000017C270EEF801185808C1800C9B0E9CA7 -:102FF000F01F00130E9CF01F00133006EEFC00DCE7 -:103000000C9BEF4600B0F01F00100C9A0C9BEEFCDE -:1030100000E0F01F000EE3CD80E0EEF800D470E891 -:103020005808CE500A9A0C9BEEFC00C45D18CDFBEC -:103030001896CDDB800217C88000917C8002269410 -:10304000800276648002B9D48002581CD401F01F3B -:103050000002D80280022FCCEBCD40C0499BF8C7BC -:10306000FF641896306A0E9CF01F0017EDFB189C49 -:10307000E06800A2EDD8E007EDFB08A20FD81AD84F -:103080000FC91AD90FB81AD80FA91AD90F9848FA28 -:103090001AD80C9C1ADB302BF01F000D0E9B0C9CD9 -:1030A000F01F000CECFC00DCF01F000B303B0C9C14 -:1030B000F01F000A30182FADED4800A8E3CD80C006 -:1030C000800217C88000917C8003C9B880023A1A38 -:1030D00080021AE08002BA1C80022FCCD431FACDD3 -:1030E00000D03007F94700A8189516941491580B92 -:1030F000E0800217F6F60084E8CCFFFA76ABF01F0A -:10310000012A1AD61ADC09D81AD809C91AD909B855 -:103110001AD809A91AD909981AD809890A9C1AD95A -:10312000FEFA0488302BF01F01220E9B306A2F8D8F -:10313000EACCFF64F01F011F306A089BEACCFF5EF7 -:10314000F01F011D0A9CF01F011D300AEAFC00DC83 -:10315000149BF01F011B635AEDBA0003C061E2F833 -:1031600001745808E08100B1301063795809C0E05B -:10317000E1D9C0011298EDB90001E08000A4EDB9D9 -:103180000002F9B80004E1D8E030EAF800D4710890 -:103190005808C060009BEAFC00C45D18635A5804DC -:1031A000C07069585808C5A0F1DAC002C6E114978A -:1031B000E2170013C5B1029B0A9CF01F0102FAC876 -:1031C000FF9453375028089B0A9CF01F00FFEAF831 -:1031D00000B45828E08001BAE089007F5818E080E8 -:1031E000017130285038EAF800B85828C7F058283C -:1031F000E08900805818E080016230285048EAF9E0 -:1032000000BC58495F0B58895F08F7E81008C78071 -:10321000E2C9FECCE2C8FF0C16963007EC1600019E -:103220005019500812931092505766095809E081BE -:1032300001122FF72FC32F025847CF81EAF900BCA4 -:103240005889C671E2F800F04059F1D8C002F3E89D -:103250001008E08101311096C5F8E8F800805808A0 -:10326000CA70F1DAC002CA40C1083509FAC8FF3095 -:1032700010D9029AFAC9FF94300B50290A9CF01F0A -:1032800000D3CA202CCDD832E2F801485808E0819A -:10329000010FEAF900B0089A300BEAFC00DCF01FDD -:1032A00000CCE080017A3509FAC8FF3010D9029AC3 -:1032B000FAC9FF94089B50290A9CF01F00C4C8401B -:1032C000CE2BA1B0C5DBE2F801785808F9B00004B4 -:1032D000F9B00105C4BB5848C8605908C831303935 -:1032E0005039EAF800B85828C83130195049C88B0D -:1032F0005848C8505908C82130395049C81B3008AF -:103300005058E2C8FECC30165018E2C8FF0C5008E6 -:103310005909E080011FEAF800D470A85808C0508D -:103320000C9BEAFC00C45D18303B0A9CF01F00A90E -:10333000354AFAC7FFE8300B0E9CF01F009E580478 -:10334000E0800126E8F8008450645098E8C8FFFA4D -:10335000507868A95089E2FA0184581AE080009EEA -:103360004029403850A950C84049433850D950B836 -:10337000EAF800BC5848E08000E7E0890088581867 -:10338000E08000A43018510A4014400350E850F087 -:10339000FACAFFAC0899069BFACCFF9C7208580841 -:1033A000C040F54BFFF0720814A82FC92F0B183A34 -:1033B000CF61E2F801445198EAF601185806E0801E -:1033C0000089FEFA0212302B0A9CF01F0079301996 -:1033D000EAF800BC5908E080008F5809E0800098A6 -:1033E000305B300A0A9CF01F007D40585808C1C06D -:1033F000EAF800D471485808C170FACBFF44EAFCDF -:1034000000C45D18C1114328EDB80001C0D1189760 -:103410004F30189268095809E08100A12FF72FC496 -:103420002F035847CF81EAF800B05808C070103118 -:10343000C050EAFC00E0F01F006BEAFC00DC029BDD -:10344000EB4100B0F01F00680A9CF01F00682CCD13 -:10345000D832EAFB00D4E2FA014476585808C13069 -:103460001AD91AD23009EB4901041AD94DC90E3ABA -:103470005F081AD94DEA76560E99301BEAFC00C453 -:103480005D162FCD30165056CD5A5888C2005908B7 -:10349000FE91FF7A3048C78BE2F901A45809FE9AE1 -:1034A000FF6140985808FBF90A09C5BB6368F1D869 -:1034B000C021CF0A50375047C2FB30085048CA0AD3 -:1034C00030085038FE9FFE913008C5EB3038C5CB30 -:1034D000EAF800D470F85808FE90FF750E9BEAFCDD -:1034E00000C45D18FE95FF6F0C99EAF800BC5908FE -:1034F000FE91FF75029B0A9CF01F003E0A9CF01F84 -:10350000003E307B0A9CF01F0033C70BEAF80090A6 -:1035100070495819F9BB000AF9BB013CC63B745B02 -:10352000744CF01F00214B5A1ADC302B0A9CF01F00 -:103530000020306A089BEACCFF5EF01F001E2FFDC2 -:10354000FE9FFE023028C20B30195039FE9FFE4DFF -:10355000029B0A9CF01F0027CDFAEAFB00D4E2FA96 -:10356000014476585808FE90FF5B1AD91AD3EB42F3 -:1035700001041AD20E3A5F081AD00E99765649CA3B -:10358000301BEAFC00C45D162FCDC49B6248507806 -:1035900062595089CE1A301BEAFC00E0F01F001877 -:1035A000FE9FFE8380023A1C8003C9F880023A1A0B -:1035B000800091D0800091DC80021DB88002B5ECC3 -:1035C000800222A48002269480021F308002938011 -:1035D000800217D08003CA6C8002246C80037E2096 -:1035E000800257488002B9D48002237080039C383F -:1035F00080021A4880021CE08003CA488002559667 -:10360000EBCD40C021AD1897F8F800AC5808C68142 -:10361000F8F6010CEEFB009076095809C061C8F875 -:1036200072095809E080008CF2F801945808CF9193 -:103630003008EF48010C76495809C670EEFC00D4FA -:10364000580CC0E04DAB780CF01F005AEFF8002486 -:10365000F1FC0A04EEFB009076485808C560EEF8CD -:1036600000E85818E088008D760AEEF800C858186F -:10367000C3F0580AC090103AC041C3981438C370C0 -:10368000740A580ACFC15826C04076485828C690B8 -:10369000580AEFFA1A32F9B80001EFF80A32EEF9D7 -:1036A00001105809C04176485818C710EEF80118A3 -:1036B0005808C4F1580AF40B1700F60A1700F5FB76 -:1036C0001004F5FA1005EEF800D470B85808C410CC -:1036D000EEFC00C45D18C3D12E6DE3CD80C0F8F6BA -:1036E000010C5806C9812E6DE3CD80C0740A580ABA -:1036F000CCB0F4F801945808CFA175885808CC4193 -:1037000076485828CF41CC0B0E9CF01F002BCE5092 -:10371000EEF800B05808EFFC0A2C0E9CF01F0027B2 -:10372000300B1A9C368AF01F00261A961A9A0E9CA5 -:10373000300BF01F00242E6DE3CD80C05806FE91A3 -:10374000FF790E9C301BF01F00202E6DE3CD80C052 -:103750000E9C300A30ABF01F001D2E6DE3CD80C0F3 -:10376000580AC1D074085808EFFA1A32F9B80001A3 -:10377000EFF80A320E9C300BF01F0015CAEB302B0D -:103780000E9CF01F0011EEFB0090C6FBEF480110ED -:10379000129A0E9C303BF01F000BC9FB30180E9C98 -:1037A000EF4800C8149BF01F0009C97B8003C65C6A -:1037B000800091A08002195C80022370800091D06B -:1037C0008002792C800217D080022584800230DCB0 -:1037D0004848300A48499118910A930A5EFF000050 -:1037E00000007A7000007A78EBCD40681695189347 -:1037F000F6CCFFEDF01F0022314A1896300BF01F77 -:1038000000210A9A8D15ECCCFFF0069BF01F001EDC -:1038100049EAF5090042AC09F50800422FF8F558CD -:10382000004249B530088D286A198D3993062F86D4 -:103830008B1649866C08F0C9FFFF8D095909E0888D -:1038400000180A936A0C782A580AF9F80003E7F876 -:103850000A01F9F81003F5F81A0320197838910ACB -:103860008D09F01F000D6C095909FE9BFFED300A10 -:10387000326C149BF01F0009E3CF90688000920027 -:10388000800091D0800091DC000087F400007A7005 -:1038900000007A78800091E880014658EBCD40E046 -:1038A00030961697305E300B33A51989F2C8003078 -:1038B000EC081800E08B0019F2CA0030580AC2C5A3 -:1038C0001999F2C80030EC081800E08B0017F2C814 -:1038D00000305808C215F1EA1048EE0B0B08585B8F -:1038E000C291E3CF80E0F2C80061FC081800E08BD1 -:1038F000000EF2CA0057CE3BF2C80061FC08180067 -:10390000E08B000DF2C80057CE5BF2C80041FC0806 -:103910001800E088000DE3CFC0E0F2C80041FC08C9 -:103920001800FE9BFFFAF2C80037CD4BF2CA0037F1 -:10393000CC6B19A8EA081800CEF12FFB586BCD20EC -:103940002FDCCB4BEBCD40E016961497580AC4C041 -:10395000300B3095305EC1B8F2CA0030580AC365EA -:103960001999F2C80030EA081800E08B0021F2C86B -:1039700000305808C2B5F1EA10485808C275EC0B7F -:103980000B082FFB1637E08800302FEC1989F2C89E -:103990000030EA081800FE98FFE1F2C80061FC0858 -:1039A0001800E08B000EF2CA0057CD9BF2C80061F0 -:1039B000FC081800E08B000DF2C80057CDBBF2C820 -:1039C0000041FC081800E088000DE3CFC0E0F2C819 -:1039D0000041FC081800FE9BFFFAF2C80037CCAB90 -:1039E000F2CA0037CBCBE3CF80E0F6CA00015E6CB1 -:1039F000F80A000913882FF85C58B2885E1CF6C8D4 -:103A00000002100CC08819882FF85C58B888201C58 -:103A100058085E1C201ACF875EFC5EFCEBCD40C0D0 -:103A200049071696189BE0460020F9B60B200E9C1D -:103A30000C9AF01F000D3008EE060B080F8858088E -:103A4000C0D00E9C35E935FA2208F2081800F9FAC0 -:103A5000BE002FFC19885808CF81482CE3CD80C0C8 -:103A600000007A7C800091DCEBCD40FE189114922E -:103A7000169C1293580BC2A0E20B00045809C20016 -:103A800002973006C0881835E08A001418070C33F6 -:103A9000E0880018E4060708E80701051AD80E9C1C -:103AA00048CA0A9B2FF6F01F000C2FFD580CCEC4FD -:103AB0003008EE01010CE968FFFFE3CD80FE0297BC -:103AC0003008EE01010CE968FFFFE3CD80FE000045 -:103AD0008003DA3080009148580CC140F8FC00D0D7 -:103AE000580CC1002FCCF8F8FFFC5808C0417809E9 -:103AF0005809C0901638C0302F8CCF6B7808143816 -:103B0000CFC15EFF5EF9780C580C5E0C7828163831 -:103B1000C0515EFC782816385E0C780C580CCFB17A -:103B20005EFC30383189F94800F0F9480058F9480E -:103B3000005431E8F949004CF94800503FF9E06879 -:103B40000576F949017CF948019C5EFCEBCD40E02B -:103B500018961695344CF01F000C1897C1103018A9 -:103B60009978993899485806C0500C9CF01F000766 -:103B70008F5C5805C0500A9CF01F00048FBC0E9C3F -:103B8000E3CD80E080028F2480009194EBCD40C093 -:103B9000169679075807C051C0C86E375807C090AD -:103BA0006E0C0C9BF01F0004CF910E9CE3CD80C0E7 -:103BB000E3CF80C0800091A0EBCD40FC1695189417 -:103BC000580C5F0B58055F081493104B1292C040BD -:103BD0003FFCE3CD80FC580ACFC048E73006C06800 -:103BE0002FF62E07E0460038CF406E0B0A9CF01FE0 -:103BF000000ACF710699049A089B0E9C6E185D18F6 -:103C0000F9BC01FFF9BC0000E0460038CE31CE1B04 -:103C10008003CC00800091A0EBCD40801897580C19 -:103C2000C0A0780CF01F00056E1CF01F00040E9C55 -:103C3000F01F0002E3CD8080800091E8D421189429 -:103C4000169579075807C1A03006C0680E966E3CDD -:103C5000580CC14018970A9B6E0CF01F0009CF71D9 -:103C60005806EFF81003EDF81A03EFF80003E9F82F -:103C70000A100E9CF01F0003D82ADC2A800091A0B5 -:103C800080023C18EBCD406016961895760BF01F1D -:103C900000056B088D38EB460040E3CD80600000E6 -:103CA00080023C3CD431202D500B129CF01F003C74 -:103CB0001890C730198A580AC670300118965011EA -:103CC000320230930294C0382FF60D8AE40A1800AD -:103CD0005F08E60A18005F091248E8081800CF518B -:103CE000580AC2C00D87E40718005F18E6071800DD -:103CF0005F191268E8081800C4505807C4300C95C2 -:103D0000C0385807C0D02FF50B87E40718005F189C -:103D1000E60718005F191268E8081800CF31AA8476 -:103D20004A0B0C9CF01F0020C171A1A15807C06074 -:103D3000EAC6FFFF0D8A580ACCA1009CF01F001BA9 -:103D40005801C2404008F141005C40195809C25175 -:103D5000129C2FEDD832496B0C9CF01F0013C03120 -:103D6000A1B1CE5B0C9C493BF01F000FF9B80004D9 -:103D7000E3D8E031FBF91001F7B901FFFBF91A01B3 -:103D8000CD6B0C95CCDBF01F0009300840093FFCDF -:103D9000F348005C2FEDD8322FEDDC3A800091948F -:103DA0008003D304800091A0800091E88003D30CAD -:103DB0008003D314EBCD40FE169CF01F00451891F4 -:103DC000C6B0198A580AC7A0189630023203309438 -:103DD000E80A18005F08E60A18005F091049300871 -:103DE000F0091800C0E0109B2FF60D8AE60A1800B3 -:103DF0005F08E80A18005F091248F6081800CF515A -:103E0000580AC4500D87E80718005F18E607180025 -:103E10005F1910693008F0091800C3705807C350C3 -:103E2000109A0C95C0385807C0D02FF50B87E607BD -:103E300018005F18E80718005F191268F4081800E6 -:103E4000CF3130084A3BAA880C9CF01F0023C0F1F8 -:103E5000A5A25807C060EAC6FFFF0D8A580ACB9199 -:103E6000029CF01F001E049CE3CD80FE49CB0C9CFD -:103E7000F01F0019C031A3B2CEDB49AB0C9CF01F80 -:103E80000016C0E1A3A2CE6B0C95CDCB029CF01F17 -:103E900000135802CE913FF2049CE3CD80FE492BE3 -:103EA0000C9CF01F000DC031A1B2CD4B0C9C48FB07 -:103EB000F01F0009C071A1A2CCDBF01F00083FF287 -:103EC000CD3B029C3FF2F01F0005CCEB80009194AB -:103ED00080039A74800091A0800091E880039A6C1E -:103EE0008003D31C8003D3248003C8E4EBCD40803F -:103EF0001697149C129BF01F00085BFCC031E3CFA7 -:103F0000C0801898E018FFE1CFB1EF4C0050109C32 -:103F1000E3CD808080023DB4EBCD40801697149CA9 -:103F2000129BF01F00085BFCC031E3CFC0801898E3 -:103F3000E018FFE6CFB1EF4C004C109CE3CD808041 -:103F400080023DB4D431201D500B129CF01F00485C -:103F50001891E080007F198A580AC6B0300218967E -:103F6000049032033094E80A18005F08E60A18004B -:103F70005F0910493008F0091800C0E0109B2FF6C7 -:103F80000D8AE60A18005F08E80A18005F0912485F -:103F9000F6081800CF51580AC2F00D87E80718003C -:103FA0005F18E60718005F1910693008F00918005B -:103FB000C3E05807C3C0109A0C95C0385807C0D04A -:103FC0002FF50B87E60718005F18E80718005F1940 -:103FD0001268F4081800CF3130084A6BAA880C9C8C -:103FE000F01F0025C161A1B25807C060EAC6FFFFFB -:103FF0000D8A580ACB91029CF01F00205802C1B0D4 -:104000004009F34200545800C241009C2FFDD832B1 -:1040100049BB0C9CF01F0018C031A1A2CE6B499B7C -:104020000C9CF01F0015C0E1A3B2CDFB0C95CD5B3D -:10403000F01F0012300840093FFCF34800542FFDE8 -:10404000D832491B0C9CF01F000CC051A3A2CCDB42 -:104050002FFDDC3A0C9C48DBF01F0007F9B800107C -:10406000E5D8E032F7B001FFCC0B0000800091945E -:104070008003C8C4800091A0800091E88003D32C05 -:104080008003D3348003C8E48003C8E0D431202DFA -:10409000500B129CF01F00391890C6D0198A580A8C -:1040A000C610300118955011320230930294C03876 -:1040B0002FF50B8AE40A18005F08E60A18005F096A -:1040C0001248E8081800CF51580AC2C00B87E4070D -:1040D00018005F18E60718005F191268E808180052 -:1040E000C3F05807C3D00A96C0385807C0D02FF67F -:1040F0000D87E40718005F18E60718005F191268BB -:10410000E8081800CF31AC8449DB0A9CF01F001D81 -:10411000C171A1A15807C060ECC5FFFF0B8A580A06 -:10412000CCA1009CF01F00185801C1E04008F141EB -:10413000005840195809C1F1129C2FEDD832493B63 -:104140000A9CF01F0010C031A1B1CE5B0A9C490B44 -:10415000F01F000CCFA040192FF95019CDCB0A96B3 -:10416000CD3BF01F0009300840093FFCF3480058E0 -:104170002FEDD8322FEDDC3A800091948003D340AC -:10418000800091A0800091E88003D3448003D3484D -:10419000EBCD40401896784CF01F00466D2CF01F78 -:1041A0000045ECFC00D0F01F00436DACF01F004157 -:1041B0006DCCF01F00406DECF01F003EECFC008069 -:1041C000F01F003CECFC0088F01F003AECFC009073 -:1041D000F01F0038ECFC0094F01F0036ECFC009857 -:1041E000F01F0034ECFC009CF01F0032ECFC00A03F -:1041F000F01F0030ECFC00A4F01F002EECFC00A827 -:10420000F01F002CECFC00ACF01F002AECFC00B00E -:10421000F01F0028ECFC00B4F01F0026ECFC00B8F6 -:10422000F01F0024ECFC00BCF01F0022ECFC00C0DE -:10423000F01F0020ECFC00C4F01F001EECFC00C8C6 -:10424000F01F001CECFC00CCF01F001AECFC00D4AA -:10425000F01F0018ECFC00D8F01F0016ECFC00DC8E -:10426000F01F0014ECFC00E0F01F0012ECFC00E872 -:10427000F01F0010ECFC00ECF01F000EECFC0150F5 -:10428000F01F000CECFC016CF01F000AECFC01803C -:10429000F01F0008ECFC018CF01F0006ECFC01A0F4 -:1042A000F01F00040C9CF01F0003E3CD80400000D1 -:1042B000800091E8EBCD40C0189678085808C031CE -:1042C000C0880E987007109CF01F00155807CFA1EA -:1042D0006D085808C031C0880E987037109CF01FC8 -:1042E00000115807CFA16C5CF01F000F6C6CF01F21 -:1042F000000E6C8CF01F000C6C9CF01F000B6CAC63 -:10430000F01F00096CBCF01F00086C1CF01F0006B9 -:104310000C9CF01F0005E3CD80C00000800241909E -:1043200080023C18800091E8EBCD4040320818969E -:104330001AD8E0691000F8C8FFDC785A784B792C5D -:10434000F01F000430182FFDED480044E3CD8040FD -:104350008002B254D421F60815011695F0C6FFFF6D -:1043600018940C9CF01F00061897C0600A99089AD0 -:104370000C9BF01F00040E9CD822000080028F24AA -:1043800080023A68EBCD40E016951896F6CCFFFD1A -:10439000F01F00091897C0C00C9B0A9A322618C655 -:1043A000F01F0006EE0500093008B296B2A80E9C78 -:1043B000E3CD80E080009200800091DCD401580CB5 -:1043C000C1D0580BC160198835E92208F2081800DD -:1043D000E08B0013129A3009C088F80907082208F8 -:1043E000F4081800E08B00092FF9123BFE9BFFF741 -:1043F000F01F0003D802F01F0003D802800243849C -:1044000080024354D4011698F6FC0140580CC06059 -:10441000189BF0CCFEDCF01F0002D802800243BCE7 -:10442000D4011698F6FC013C580CC060189BF0CCE7 -:10443000FEECF01F0002D802800243BCD4011698A3 -:10444000F6FC0138580CC060189BF0CCFEFCF01F45 -:104450000002D802800243BCD4011698F6FC013455 -:10446000580CC060189BF0CCFF0CF01F0002D80263 -:10447000800243BCEBCD40F831EC1694F01F0028CD -:104480001896C3906979F8C3FFE2EDB90000C360E4 -:104490001897EDB90001C1614A294A380C37F20872 -:1044A0001710E60701051AD84A0A0A9B0E9CF01F4E -:1044B00000202FFD580CC1C51835E08A001A1807D6 -:1044C0006979EDB90002C171496949780C37F20880 -:1044D00017100E9C1AD8E6070107496A0E9BF01FB9 -:1044E00000142FFD580CC0451837E089000530082E -:1044F000E768FFFF0C9CE3CD80F848B848EA1AD87B -:1045000031EBF01F000B2FFD580CCF2559DCFE9925 -:10451000FFF0EC0C00076979CBDB000080028F24F0 -:104520008003936480037E208003D35880009148E9 -:104530008003D3648003D350EBCD40F81894332C20 -:10454000F01F003E1896C650F8C3FFCEEDB400042D -:10455000C6301897EDB40003C1514B994B980C37F6 -:10456000F2081710E60701051AD84B7A0A9B0E9C31 -:10457000F01F00362FFD580CC4951835E08A00470F -:104580001807EDB40002C1514AD94AE80C37F208C5 -:104590001710E60701051AD84ADA0A9B0E9CF01F8D -:1045A000002B2FFD580CC3251835E08A0030180762 -:1045B000EDB40001C1514A294A280C37F2081710FE -:1045C000E60701051AD84A3A0A9B0E9CF01F001F05 -:1045D0002FFD580CC1B51835E08A00191807EDB445 -:1045E0000000C171496949780C37F20817100E9C18 -:1045F0001AD8E6070107498A0E9BF01F00142FFD09 -:10460000580CC0451837E08900053008E768FFFFFF -:104610000C9CE3CD80F848B8490A1AD8332BF01F18 -:10462000000B2FFD580CCF25E04C0031FE99FFEF19 -:10463000EC0C0007C90B000080028F2480039364F8 -:1046400080037E208003D374800091488003D37C54 -:104650008003D3888003D3908003D36CD401774C3C -:10466000F01F0002D802000080024538D401773CD8 -:10467000F01F0002D802000080024538EBCD40F860 -:10468000332C1693F01F00401896C6906759F8C453 -:10469000FFCEEDB90001C6601897EDB90000C16109 -:1046A0004BA94BB80C37F2081710E80701051AD8C8 -:1046B0004B8A0A9B0E9CF01F00382FFD580CC4C576 -:1046C0001835E08A004A18076759EDB90003C1613F -:1046D0004AE94AF80C37F2081710E80701051AD81A -:1046E0004AEA0A9B0E9CF01F002C2FFD580CC34574 -:1046F0001835E08A003218076759EDB90002C16128 -:104700004A294A380C37F2081710E80701051AD869 -:104710004A3A0A9B0E9CF01F00202FFD580CC1C581 -:104720001835E08A001A18076759EDB90004C171FD -:10473000496949780C37F20817100E9C1AD8E80717 -:104740000107498A0E9BF01F00142FFD580CC0452D -:104750001837E08900053008E968FFFF0C9CE3CDBD -:1047600080F848B8490A1AD8332BF01F000B2FFDE8 -:10477000580CCF25E04C0031FE99FFEFEC0C000700 -:104780006759C8CB80028F248003936480037E2006 -:104790008003D3A4800091488003D3B08003D390DA -:1047A0008003D3BC8003D398EBCD40C030AC1696C9 -:1047B000F01F00181897C1806D69EDB90000C17035 -:1047C000189A301BEDB90001C0F149384939580B2E -:1047D000F0091700149C1AD9EECBFFF6141B490AF6 -:1047E000F01F00102FFD0E9CE3CD80C048B848EAB2 -:1047F0001AD830ABF01F000B2FFD580CCF55589C2A -:10480000FE99FFF3EE0C000A6D69300BCDCB000072 -:1048100080028F248003936480037E208003D3D0A2 -:10482000800091488003D3C8EBCD40C01697768CAA -:10483000580CC05118960C9CE3CD80C0314CF01F31 -:1048400000101896CF90EF38001DEF3A00181AD8D4 -:10485000EF39001C1AD9EF38001B1AD8EF39001AAB -:104860001AD9EF380019314B1AD81ADA485AF01F02 -:10487000000630082FADED680013CDEB80009200EC -:104880008003DA4880009148EBCD40E078351696F9 -:10489000314CF01F000A1897C0C0EC050308488A85 -:1048A0001AD8314BF01F000730082FFDEF680013B6 -:1048B0000E9CE3CD80E00000800092008003DD6864 -:1048C00080009148EBCD40801697772C580CC09013 -:1048D000F01F0009189B6F2CF01F0008E3CD8080AB -:1048E000771C580CC060F6CCFFDC320BF01F0004C4 -:1048F000E3CD8080800091B88002438480024354DD -:10490000EBCD40807838F60800076E085808C0C024 -:10491000784C580CC0C0F60C030C189B109CF01F70 -:104920000007E3CD8080109CE3CD8080109CF01FB9 -:1049300000046E08CF3B0000800243BC800091B8A9 -:10494000EBCD40F83228169418961989F009180012 -:10495000C0A0F01F001BEBDCC001C19030070E9C13 -:10496000E3CD80F8F8C7FFFF322B0E9CF01F001537 -:10497000CF6019985808CF31B8880E9CF01F0010EE -:10498000890C0E9CF01F00101897CEABF80316018F -:10499000E6CCFFFFF01F000D1897CE200C9C069A66 -:1049A0000E9BF01F000BC051EE030B0C8903CD8B47 -:1049B0000E9C0A97F01F0007CD3B0000800091B8C5 -:1049C00080009158800091948000920080023944C8 -:1049D000800091E8D421205D18951094129C1696C1 -:1049E000F01F000F1897C1906C0A590AE08B001451 -:1049F000189B0A9CF01F000B0E9CF01F000B48BA7E -:104A00001AD4314BFACCFFFCF01F0009300C2FFDFB -:104A10002FBDD822F01F00042FBDDC2A80024940A0 -:104A2000800091DC800091E88003D3D88000914819 -:104A3000D4013038F6CCFEDCF6CBFEC0F01F00020D -:104A4000D8020000800249D4D4013028F6CCFEEC14 -:104A5000F6CBFEC4F01F0002D8020000800249D449 -:104A6000D4013018F6CCFEFCF6CBFEC8F01F0002D5 -:104A7000D8020000800249D4D4013008F6CCFF0CE3 -:104A8000F6CBFECCF01F0002D8020000800249D411 -:104A9000EBCD40F8201D18971693129C1A9BF01F1F -:104AA00000171895C2306E595809C0504008103987 -:104AB000E08B00206E695809C04040081039C133AE -:104AC0006E366E44E60600066C0CF01F000D8D0578 -:104AD0006E4C580CC0504008300CE60409082FFDFD -:104AE000E3CD80F80A9CF01F00062FFDE3CFC0F84D -:104AF000F01F00033FFCCF4B80024940800091E84B -:104B0000EBCD40FEF6F700D05807C0510E94089C3C -:104B1000E3CD80FE364CF01F00191894CF90EEC6FE -:104B2000FFFCF8C3FF9C189749514962ECFCFFFC5D -:104B3000580CC2116C0B580BC1A02F86F01F00122D -:104B4000CF600837E2081700E40817101ADCE60700 -:104B500001051AD80E9C48DA0A9BF01F000D2FEDB4 -:104B60001807580CC0451835FE99FFE23008E76871 -:104B7000FFFFCCEB6C0BCE2B80028F2480037E20BA -:104B800080039364800271BC8003D3E48000914869 -:104B9000D431205D500B129CF01F0056502CE08049 -:104BA000008E198A580AE080009B3009402650196F -:104BB000503912905049320230931294C0382FF677 -:104BC0000D8AE40A18005F08E60A18005F09124817 -:104BD000E8081800CF51580AC4E00D87E407180010 -:104BE0005F18E60718005F191268E8081800C64049 -:104BF0005807C6200C95C0385807C0D02FF50B8732 -:104C0000E40718005F18E60718005F191268E80843 -:104C10001800CF31AA842FF0403CE00B1503F01FA1 -:104C200000361891C4E040490C9CE20900060C9B38 -:104C3000F01F00328D1C6C085808C141580CC1018E -:104C400040182FF850185807C15040482F88504836 -:104C5000EAC6FFFF0D8A580AC3C05031CB3B591C2E -:104C6000C2404009F2F801782FF8F348017858075C -:104C7000CED15031E0C8FFFFF0071503402CF01FE4 -:104C800000200E9B403CF01F001CC2E0F8000039E1 -:104C90003008931893084008F14C00D04019580987 -:104CA000C0D1129C2FBDD8324009F2F801742FF800 -:104CB000F3480174CC9B0C95CAEB3FFC2FBDD83256 -:104CC000403CF01F000F402CF01F000D2FBDDC3AC0 -:104CD000E0C8FFFF5031F0071503CD1B501A308795 -:104CE000503A1490CCCB403CF01F00053FFCCE7BEB -:104CF00080009194800091F48002720C800091E811 -:104D0000D4213228129716951389F0091800C0A0F3 -:104D1000320A2DCB0E9CF01F00271896C2F03FFCE4 -:104D2000D822EEC6FFFF322B0C9CF01F0023C3C01D -:104D3000F8060107EEC80008E0480037FE9BFFF1C7 -:104D40006B2C580CC060F01F001D0E3CC2606B2C19 -:104D50003004EB440044F01F001AEECCFFFFF01FBC -:104D60000019EB4C0048CDC00C9B0E9AF01F0016AA -:104D70006B28089CF0070B04D822EF390040F80993 -:104D80001800CCE16B2CF01F000E3018EB460048E9 -:104D90000C9CEB480044D8220E9A0C9B6B2CF01F05 -:104DA000000BCD61CBEB0C9CF01F00041897CC3BA3 -:104DB0008002394480009158800091B8800091E8C9 -:104DC00080009200800091DC8000917CEBCD4080DF -:104DD0001697129C2E8BF01F0006F9BC01FFF9B844 -:104DE0000001EFF80A08E3CD808000008002389CC3 -:104DF000EBCD40C018976E38129CF00B000630AA1D -:104E0000300BF01F000C8D0C18996E585808C030EC -:104E1000103CC0956E6C580CC0401839E0890007F2 -:104E2000E3CF80C08D08E3CFC0C08D0CE3CFC0C0FE -:104E300080009170D42116941895782B580BE08A35 -:104E400000557817683E6E0C78381C38C410EECACE -:104E5000FFFC3009C058150C78381C38C3902FF966 -:104E60001639CFA52FFB0E9CA36BF01F00241896BC -:104E7000C3506A2C580CE08A003B6C08683E7039BD -:104E80001C39C355ECC8FFFC300AC0A81097700845 -:104E9000F40B15027039EEC8FFFC1C39C2052FFA5D -:104EA000143CFE99FFF5F4C8FFFFEC0A002BA36841 -:104EB0001697F80A010AEC08000CA36AF01F00100C -:104EC0008F048B166A28300C2FF88B28D82218985C -:104ED000781C580CCFD19114D822DC2AF4C8FFFFDB -:104EE000EC0B000BA368CE6B7817CBDB0C97300A6A -:104EF00030480C9BCDFB0000800091F4800091C4F1 -:104F0000D4211895781CF01F000D300C8B1C8B2CB5 -:104F10006A075807C0F0189618948F140E9B0A9CC5 -:104F2000F01F00076E07F9B605FF5807CF710C9CFC -:104F3000D8220E96CFDB0000800091E880024E342C -:104F4000D421189578095809C1E03FFAC028109972 -:104F50007228F4080C4A72085808CFA1F4C4FFFF65 -:104F60001296E06C01A8F01F000A1897C0A09924BF -:104F70005806EDFC1A00EBFC0A000A9CF01F000525 -:104F80000E9CD82212961294CEDB000080028F2451 -:104F900080024F005EFD5EFD5EFD5EFD5EFD5EFD1E -:104FA000D401584BC0E0E0880007586BC0A0587B84 -:104FB000C040D802580BC091300CF01F0005D80239 -:104FC000301CF01F0003D802D80200008002172016 -:104FD000D401581BC070300A323C149BF01F0005EE -:104FE000D80A300A322C149BF01F0002D80A0000A5 -:104FF00080014658EBCD40FE201D1094129216956C -:10500000F01F0057E8C8FFF25C7C4D69F00C000609 -:10501000F33A0109580AC060EC0A0D085809E0810A -:10502000008F3003500CE6060001029CF01F004E7A -:105030000A9B1897306A400CEE0C000CF01F004BD6 -:10504000400C306A4CAB140CEE0C000CF01F004707 -:10505000400C302A4C7B2F4CEE0C000CF01F004310 -:10506000400C089A049B2F2CEE0C000CF01F003F04 -:10507000FAC8FFFC3005114A0E991AD5EE0A000C49 -:105080001AD5EC0A010A30EBF01F003B2FED581C3B -:10509000C5914009EC090108E048003EE08B001092 -:1050A0008E085CC806085CC8AED3029B0E9CAE0896 -:1050B000F01F0032300C2FFDE3CD80FEEE09000E14 -:1050C0003888FD39000CF0091800CEB1FD39000D0B -:1050D00038E8F0091800CE51FD38000EF808180025 -:1050E000CE01FD39000F3038F0091800CDA130286D -:1050F000FD3A0012F00A18005F1B3FE8F00A1800A2 -:105100005F19126BEA0B1800CCC1FD380013E218CE -:10511000001D5818CC61FD380014E21800C85888EA -:10512000CC01FCCAFFC1FCC9FFE1C0482FF914390A -:10513000C0E01388F6081800CFA0CB3BF4090103A8 -:10514000C72B0E9CF01F000E3FFCCB6B0FC92FA985 -:10515000EE0900091388A3A8B288CA3B8001F4E8CD -:10516000000087F480009200800091DC00007AA8A3 -:105170008003D6548001F54480014664800091E8A4 -:10518000D401201D3068FACBFFFC16D81A9B486C5E -:10519000F01F00064848581CF00C1700F9BC01002D -:1051A0002FFDD80200007AA880017A88EBCD40401C -:1051B000310A1696300B0C9CF01F000630F930783F -:1051C0008D198D09300C30398D288D39E3CD804013 -:1051D000800091D0D401F01F0002D80A80016048FD -:1051E000EBCD4068206DFAC3FFEE1496069C306A42 -:1051F000F01F0010FAC5FFFE0C9B310A0A9CF01F3D -:10520000000D0A9B204D310A1A9CF01F000B069BD3 -:10521000202D306A1A9CF01F0008F01F00082FADE7 -:10522000581CF9BC01FFF9BC00002FADE3CD80682C -:10523000800091DC8002E73680016094EBCD40680D -:10524000206DFAC3FFEE1496069C306AF01F001022 -:10525000FAC5FFFE0C9B310A0A9CF01F000D0A9B49 -:10526000204D310A1A9CF01F000B069B202D306A3E -:105270001A9CF01F0008F01F00082FAD581CF9BC45 -:1052800001FFF9BC00002FADE3CD8068800091DC08 -:105290008002E73680016168D401F01F0005581CC8 -:1052A000F9BC01FFF9BC0000D80200008001F370D6 -:1052B000D401F01F0005581CF9BC01FFF9BC000027 -:1052C000D80200008001F310D401169CF01F0004E6 -:1052D000581CF9BC01FFF9BC0000D802800163E052 -:1052E000D431207DFACEFFC050287C027C387C1758 -:1052F00050087C2E501E16901894149B1293580A36 -:10530000C5C0FAC5FFEA306A0A9CF01F0031202DA3 -:10531000306A0A9B1A9CF01F002FF01F002F5802C2 -:105320005F1858075F1918912FED1268C181300678 -:105330005800C26168193018F0030948F00811FFDD -:10534000F1E9000C891C580CC365BFBC891CF01F17 -:10535000002318975817C2F02F9DDC3A5887FE9B00 -:10536000FFFDFAC6FFF2308A300B0C9CF01F001CC8 -:105370000E9A049B0C9CF01F00165800CDC04028CC -:1053800058015F091AD8069C1AD630381AD530163B -:10539000404A403B1AD6F01F00136819EC03094835 -:1053A0001248F1D8C01F189789180C9CF01F000EE6 -:1053B0002FCDCD1B2F9DD83AFAC5FFEA306AE06B9E -:1053C00000FF0A9CF01F0006CA3B0000800091DC31 -:1053D0008002E736800188B080016584800091D02A -:1053E0008001661C8001639CEBCD40C01896308C18 -:1053F000F01F00091897C0C0300899069918F01FCF -:105400000007301CF01F00060E9CE3CD80C0E3CDEA -:1054100080C0000080028F248001604880017A10E3 -:10542000EBCD4080209D1697FACCFFFEF01F0009BF -:10543000581CC0402F7DE3CFC0800E9C1BBAFACB16 -:10544000FFFCF01F00051BBC2F7DE3CD808000001A -:1054500080017800800091DCEBCD4080202D580B3E -:10546000C120FAC7FFFE306A0E9CF01F000C0E9C94 -:10547000F01F000B581CF9BC01FFF9BC00002FED18 -:10548000E3CD8080FAC7FFFE306AE06B00FF0E9C20 -:10549000F01F0004CEDB0000800091DC8001793039 -:1054A000800091D0EBCD4040485B1896F01F00057E -:1054B0000C9CF01F0005E3CD8040000080039C3869 -:1054C00080025458800091E8EBCD40C0202DFAC7EF -:1054D000FFFE16960E9CF01F0008581CC0402FEDD2 -:1054E000E3CFC0C00E9B0C9C306AF01F00042FED70 -:1054F000E3CF80C080017864800091DCEBCD40C0B8 -:1055000018977939580BC0305839C0E03018EF4837 -:1055100000BC3038EF48004C1039C0808F2830086C -:105520008F58E3CD80C0F949004C6F682FF8EEFA30 -:10553000010CEF4800586FA830098F288F59301B95 -:10554000746C7486487A5D16EEF80094EEF900905B -:105550002FF82FF9EF480094EF490090E3CD80C079 -:1055600080037E20580C5E0C580BF9FB4A19580A30 -:10557000F9FA4A225809F9F94A1A5808F9F84A1B5F -:105580005EFC580CF9F81024F9B90101F1D9E108D1 -:10559000F9F81A245EFC580C5E0C580BF9B801019E -:1055A000F9F81A45F9FB0A455EFCD703EBCD40C07C -:1055B0001897580CC04079385858C030E3CD80C097 -:1055C000F8F8010C3009706C7086488A301B5D1643 -:1055D000EEF80094EEF900902FF82FF9EF480094C0 -:1055E000EF490090E3CD80C080037E20580CF9FC89 -:1055F00010315EFC580CC0B0F8F800D45808C070E8 -:10560000F8F800D89708F8FC00D45EFC300897083A -:105610005EF8D703580CC040588BE08800035EFD4D -:1056200048D8F00B032FF8FC00E05EFCF8FC00DC2F -:105630005EFC78BC5EFCF8FC00805EFC79FC5EFCE5 -:10564000F8FC00845EFC784C5EFC797C5EFC786C37 -:105650005EFC00008003D6FC580C5E0C588B5EBCD0 -:1056600048E8F00B032FF94A00E05EFCF94A00DC41 -:105670005EFC99BA5EFCF94A00805EFCF94A007C47 -:105680005EFCF94A00845EFC994A5EFCF94A005CC3 -:105690005EFC996A5EFC00008003D720580CC05065 -:1056A000580BC031783C5EFC5EFD580C5E0C580B0C -:1056B000F9FA0A035EFCD401580CC0A0F8FC010CF6 -:1056C000580CC06078A85808C030780C5D18D80213 -:1056D000D401580CC021D80AF8FC010C580CCFC0DA -:1056E00078B85808CF90780C5D18D802EBCD408080 -:1056F0001897580CC1E0189A300B48FCF01F000FA7 -:105700000E9A300B48ECF01F000DEEFC00C0F01FAD -:10571000000DEEFC00CCF01F000CEEFC00D4F01FDE -:10572000000AEEFC010CF01F00080E9CF01F0006A2 -:10573000E3CD80808002608C800274008002602053 -:10574000800270E0800091E8D401580CC050F8FC51 -:1057500000C0F01F0002D80280026410D401580C6F -:10576000C050F8FC00C0F01F0002D802800264287C -:10577000D401189A580CC0A030583019F8FC00C059 -:10578000F548004C95C9F01F0002D802800263BAA8 -:10579000EBCD40801897580BC04079E85888C0403E -:1057A0003018EF4800BC30193088EF490044EF480A -:1057B00000788F99EEFC00C0F01F0004F9B80100DA -:1057C000EFF81A39E3CD8080800263B2EBCD40E080 -:1057D000201D189716951496580CC0513FFC2FFDAC -:1057E000E3CD80E0F8FC00C0F01F000ACF801A9BD8 -:1057F000EEFC00C0F01F0008189BCF10400C0C3CC2 -:10580000CEF30C9A0A9CF01F0005300CCE9B0000D2 -:10581000800263B2800263CE800091DCEBCD40C099 -:1058200018971496580CC1F0F94B00C4580AC1B02F -:1058300074087419F94800F8F94900FC7428F9480B -:105840000100F8FC00C0580CC0E0742BF01F0007EA -:105850006C3BEEFC00C0F01F00066C4BEEFC00C081 -:10586000F01F0004E3CD80C0800263A6800263AC19 -:1058700080026408D431FACD00A81897F8F600CC5D -:105880005806C0F0F8F800F85808C0B00DA80DB9D7 -:10589000F3E81089F8F800D02FC91039E088000427 -:1058A0002D6DD832ECC4FFFC0999500909A0F01FF6 -:1058B000006FFAC1FFF8340A029B0E9CF01F006CC7 -:1058C0001895CEF5590CE0800090580CCEA132020C -:1058D0005012EEF800E45808C7D1E8C5FFE4FAC357 -:1058E000FF68310A0A9B069CF01F0062310A300BE8 -:1058F0000A9CF01F00610DAA0DB9049BF3EA108900 -:10590000FACCFFD8EEFA00CC0A982FC9F01F005B42 -:10591000310A0A9B069CF01F005AC7614009E1E961 -:1059200010880DB9EBD8B0100DA8F3E81089320833 -:10593000F2CE002CF00519005FB9E04E00205F9A0E -:10594000124AF80A1800CAD15C751C35C630580EC8 -:10595000CA81FAC3FF88029B0A9A069CF01F004581 -:105960003018308AEF4800E4E8CBFFFDEECCFF189A -:10597000F01F0040EEFC010C78965806C0D0E93AC2 -:10598000001B0A98149B0699780CE21B0080F5DA3C -:10599000C0025D16C865E939001B3008F00918001F -:1059A000C5753018EF48011CEEF901185809C0718F -:1059B000EEF800FCEDB80000FE90FF7430188FD8B0 -:1059C000EEFC010C78785808FE90FF6C780C5D189E -:1059D000C68B308AE8CBFFFDEECCFF18F01F002805 -:1059E000FE94FF60C7BB189A029B0E9CF01F00201C -:1059F000FE91FF580A9A029BFACCFFD80A92F01F38 -:105A0000001D5015C67B069B0A9C310AF01F001929 -:105A1000C48BFAC6FFB8E8CBFFF50C9C310AF01F27 -:105A20000015049A029BFACCFFA8F01F0012FAC3DB -:105A3000FF880A9AE8CBFFD4069CF01F000E40199D -:105A40000C9A2F090A9B069CF01F000EC8AB301859 -:105A5000EF480118EEF9011C5809CB11EEF800FCD3 -:105A6000EDB80001CAC1C1DB8002575C800257CC8F -:105A7000800091DC800091D080028EF88000917CC3 -:105A800080029C38D431201D3003189730140695BD -:105A900030213040EF4500BC6F4A580AE08000C911 -:105AA0006F585808E08100C56E7C580CE08100C238 -:105AB0006EB85808E08000BE6F385828EFF41A2FEF -:105AC000EEF8010CEF41004C3009706C7086FEFA64 -:105AD000051E029B5D16EF4400548FC5EEF800983A -:105AE000EEF900902FF82FF9EF480098EF49009059 -:105AF0006E7C580CC0516EB85808E08100EC6FC83D -:105B0000EF4400705818EFF41A2F6FD85808E0814E -:105B100000F8580CE08100A76EE85808E08100A367 -:105B20006FE8F0C900015879E08B000EFEF804C45C -:105B3000F009032FEF4400BCEF410078EF4500402F -:105B4000EF4400C8EEFC00C0F01F012BE08000B560 -:105B5000EF4400BC2FF3E0430064C9D10E9A300B30 -:105B6000FEFC0498F01F012630090E98FEFA048C02 -:105B7000129B129CF01F0123EEF9010C72285808A9 -:105B8000C0E0EEF801105808C0A058185F0B3008AC -:105B90000E9CEF480110723A72285D182FFDD83222 -:105BA000EEF80088EF4400BCEF4000788F55EF45D9 -:105BB000007CEF4500C88F08CC6B6E585808E08118 -:105BC00000DF6E4B580BE08100D06E085808C161B1 -:105BD0003078EF4400BCEF480078EF440048CB3BFE -:105BE000EEF900845809E08101846FF85808E081DB -:105BF000015C6E4B580BE08100B86E685808CA30E3 -:105C00000E9CF01F0101C9FB6E485808E08100A9F5 -:105C10006E585808E08100B06E685808C9406F0897 -:105C20005808C910300B0E9CF01F00F7C8CB6E7CD3 -:105C30006EA95809C2F16F885808C2C06F38EF4585 -:105C400000605818EFF41A2FEF44004CEF4500584D -:105C5000EF4500548FC58FE4EF450118EF45011C57 -:105C6000C49B6FE8EEFC00CC5818EFF41A2FEF44F9 -:105C70000078F01F00E6EEFC00D4EF4500CCF01FEA -:105C800000E3EEFC00C0EF4500D4F01F00E18FE51B -:105C9000C5AB580CCD416EB85808CD105829C3B0CB -:105CA0005819C4706F3820185878FE9BFF26FEF9EB -:105CB0000362F208032FEEF800BC5808FE91FF4C77 -:105CC000C5CB6E585808E08100FE6ED85808E080B9 -:105CD00000FE6FC95819FE90FF1A5829FE91FF1E49 -:105CE0006FD85808FE90FF1A0E9CEF490070EF44E1 -:105CF00000BCF01F00C96E7CEF450074C0BB0E9C59 -:105D0000EF4400BCEF410070F01F00C36E7CEF4514 -:105D10000074C00B6F885828CC606F388FC45898B7 -:105D2000EFF41A2FEF4100603098EF48004CCE4A54 -:105D30006F885818CB806F3858A8EFF91A2FEEF9F2 -:105D4000010C30A88FC5EF440060EF48004CFEFA0C -:105D5000029E7286726C302B0A995D16CC0A6F080F -:105D60005808FE90FF573068EF4400BC8FF4EF48AE -:105D70000078CE9A6F085808FE90FF503038EF44F4 -:105D800000BC8F05EF440080EF480078CDCA6E69F3 -:105D90005809C0A06ED85808E0810117EEF800F845 -:105DA0005808E08100FC6E485808E08100EB6E88DE -:105DB0005808C0506ED85808E08000E46F28580892 -:105DC000C050300B0E9CF01F00956E7CC93A6F7866 -:105DD0005808C8018F88EF4400BCEF40004CEF48E2 -:105DE0000058EF4800448FF8EF4800488F98EF4480 -:105DF0000040C82A6E1B580BCE606E585808FE90A3 -:105E0000FF6A3089EF4400BCEF49004CEF44005C6E -:105E1000C73A6E2B580BC2716F696FB81039CD330A -:105E20006ED85808C2003058EF4400BCEF48004C10 -:105E30008FC4EF440110FE9FFE60580AFE91FF4B95 -:105E4000EF4A011CEF4400BCEF44004CEF4A0060F5 -:105E5000EF4A0058EF4A00548FCA8FE4EF4A011806 -:105E6000FE9FFE4B6E685808C7B16E485808C78140 -:105E70006E585808CC71580BFE91FF2D6F696FB8A2 -:105E80001039FE93FF286ED85808FE91FF24307811 -:105E90008FCBEF48004CEF4400BC6F98EF410110EE -:105EA0008F18FE9FFE2AEEF80088EF4900C8EF44E5 -:105EB00000BCEF4000788F59EF49007C8F08FE9FAF -:105EC000FE436ED85808E081008AEF4400BCEF44DE -:105ED000004CEF450060EF450058EF4500548FC57A -:105EE0008FE4EF450118EF45011CFE9FFE06305977 -:105EF000EF4400BCEF4900781A9BEEFC00C0F01F95 -:105F000000481892C290EEF8010C4009189A708669 -:105F1000706C300B5D16049CF01F003CEEF800C85E -:105F20005808EFF81028F9B90101F1D9E108EFF8A4 -:105F30001A28EFF80029F9B90001F1D9E008EFF8C3 -:105F40000A29EEF90090EEF8009C2FF92FF8EF499E -:105F50000090EF48009CEF450084FE9FFDF5EF4464 -:105F600000BCEF40004CEF450058EF4500448FF572 -:105F7000EF4500488F958F85EF440040FE9FFDBDA3 -:105F80003078EF4400BCEF48004C8FC56F98EF416C -:105F900001108F186E7CFE9FFDAEEEF800FC5808D5 -:105FA000FE91FF038FD4EEFC010C78785808C040B6 -:105FB000780C5D186E695809FE90FEF76ED8580887 -:105FC000FE90FEF36E7C3059EF4400BCEF49004C6C -:105FD0008FC4EF440110FE9FFD8E3088EF4400BC5B -:105FE000EF48004CEF44005CFE9FFD8780037E205D -:105FF0008003D744800268308002608C8002740085 -:106000008002747480025790800091E88002653CA1 -:106010008003D76480025874800254FC800263E6D7 -:10602000EBCD408076085808F9B901FFF1D9E108B5 -:10603000F7F81A0076185808F9B901FFF1D9E10804 -:10604000F7F81A0176285808F9B901FFF1D9E108E3 -:10605000F7F81A0276385808F9B901FFF1D9E108C2 -:10606000F7F81A03169718991698486A300B301CDF -:10607000F01F00050E9CF01F0005E3CD808000009E -:10608000800260208002747480025A84D401169CBD -:10609000F01F0002D802000080025A84D421203D63 -:1060A0001895E06C0120F01F00221897C38031E89A -:1060B0003039F9480088F948006833C8F949006C5C -:1060C000F9480064F945010C300430CA99A4089BD2 -:1060D0001A9CF01F00186AF850286ADA500A6AE819 -:1060E0005018EEF8010C1A99704A493B0E9CF01FAB -:1060F0000013EF4C00C01A961898C14030160E9C41 -:106100008F76F01F000F0E9C8F74F01F000D0E98FD -:1061100008990C9C48BA089BF01F000B0E9C2FDDC1 -:10612000D8220E9C1097F01F0009CF9B80028F246D -:10613000800091D0000004788002711C80025A8493 -:106140008002602080027474800091E8D401580CB1 -:10615000C090F8F800D45808C050F8F800805808EB -:10616000C020D8023018F94800809958F01F00026A -:10617000D802000080025A84D401580CC04099AB68 -:10618000F01F0002D802000080025A84D401580C8B -:10619000C060F94B00E0994BF01F0002D8020000EC -:1061A00080025A84EBCD40801897580CC090996BB0 -:1061B000F94B00DC580BC0610E9CF01F0005E3CDCD -:1061C0008080F8FC00C0F01F0003CF7B80025A845F -:1061D000800263BAD401580CC04099DBF01F000262 -:1061E000D802000080025A84D401580CC04099BBE8 -:1061F000F01F0002D802000080025A84EBCD40E07C -:10620000189714951296580CC3A0F8F8008C2FF824 -:10621000F948008C5839E08B0009F8F800A82FF8ED -:10622000F94800A8E3CF80E01588306AF94800B04B -:10623000F8CCFF4CF01F0042ECCA00040BA90BB8CD -:10624000F1E910861436E08B00130B99300CF80935 -:106250001800C4603038F0091800C130EEF800A80A -:10626000301C2FF8EF4800A8E3CD80E0EEF800AC3A -:10627000300C2FF8EF4800ACE3CD80E0E3CF80E0B6 -:10628000E046002BE088004C3FE80BCBF00B1800F9 -:106290005F0A3028F00B18005F09124AF80A18004C -:1062A000CEE13018F00B1800C3A1EEFC00CCF01FBB -:1062B00000252FC60C9CF01F0024EF4C00CCC2F030 -:1062C0000C9A0A9BF01F001E0E9CEF4600D0301661 -:1062D000EF460074F01F001D0C9CE3CD80E0EEF84B -:1062E00001145808C100300830398FC8EF48011434 -:1062F0008F29EF49004CEEFC010C78C85808C030DB -:10630000780C5D18EEFC00D4F01F000E0C9CEF46DC -:1063100000D8F01F000DEF4C00D4C031E3CF90E067 -:10632000EACBFFFCEEFA00D8F01F00050E9C3016F9 -:106330008F56F01F00060C9CE3CD80E0800091DCBE -:10634000800091E88000920080025A84EBCD40806A -:10635000189779685808C0B079BB580BC08070494D -:106360005D193008EF480058EF48006CE3CD80809D -:10637000EBCD40C01897580BC04078085878C04003 -:106380003018EF48006030786FA68F086F9C6C293A -:10639000300A305B5D196FA86F9C7029301A304B42 -:1063A0005D19E3CD80C0F94B00745EFCF94B00B081 -:1063B0005EFC580CF9FC10135EFC580CF9B8010196 -:1063C000F9F81A06F9B9010BF9F91A005EFC580C34 -:1063D000C08079485808C05079589708794C5EFCBD -:1063E000300897085EF8580CC0C0791A580AC09057 -:1063F000792897083009F9490048F94900445EFABC -:106400003008109A97085EFAF94B00C45EFCD70377 -:10641000D401580CC040483BF01F0003D8020000D4 -:106420008003D7B08002634CEBCD40801897580CA6 -:10643000C0F079A8300B7019799C5D19C0916E6815 -:106440005808C0606E2820385818E0880004E3CD52 -:1064500080806F485808F9B80101EFF81A136FA847 -:106460006F9C7029301A300B5D19EEFC00A4483A7D -:10647000302BF01F0003CECB8003D7BC80023A1A2A -:10648000EBCD40801897580BC040780858B8C040F2 -:106490003018EF4800606F4930B88F085809F9B8D4 -:1064A0000101EFF81A136FA86F9C7029301A300B96 -:1064B0005D196FA86F9C7029300A305B5D196FA859 -:1064C0006F9C301A7029304B5D19EEFC00A4484ACD -:1064D000302BF01F0004E3CD808000008003D81C27 -:1064E00080023A1AEBCD40C01897580BC04078088C -:1064F00058C8C0403018EF48006030C86FA68F08F9 -:106500006F9C6C29301A302B5D196FA86F9C702915 -:10651000300A305B5D196FA86F9C301A7029304BC0 -:106520005D19EEFC00A4484A302BF01F0004E3CDB7 -:1065300080C000008003D86080023A1AEBCD406032 -:106540001896784CF01F000B30056D1C8D45F01F20 -:1065500000096D4CED450044F01F00066DA8ED45A7 -:1065600000500A9A6D9C70290A9B5D19E3CD8060EA -:10657000800091E8EBCD40E01897580BC4F0780804 -:106580005808C4C130088F086FD95809C0B06F6867 -:106590005808C08070985808C0506FBB0E9C5D189A -:1065A000C4114A4B0E9CF01F00246FA83006301512 -:1065B0008F16EF4500408F268F666EFA70490C9B50 -:1065C0006F9C5D196FA80C9A70290C9B6F9C5D19CC -:1065D0006FA80C9A7029302B6F9C5D196F4CF01FBF -:1065E00000176FA80A9BEF460050EF46004C0C9A2C -:1065F00070296F9C5D193FF80C9A8F386FA5303B5E -:106600006F9C6A295D196FA80C9A7029304B6F9C9A -:106610005D19EF4600C0E3CD80E03018EF48006020 -:10662000CB2B6F686FBB70A90E9C5D19CBFB000074 -:106630008003D8948002634C800091E8EBCD40E069 -:10664000205D1897580BC04078085858C040301843 -:10665000EF48006030588F086F695809C4406FA830 -:10666000FACBFFF070596F9C5D19310A300B189509 -:106670001A9CF01F00256F1C6EE850086E295019F7 -:106680006E6850286F095039F01F002030086F6B7A -:10669000EF48005CEF480044EEC8FFB81A9A0A9928 -:1066A0001AD80E9C405876566FBB5D16EF4C0044CE -:1066B00040188FE82FFD5808C1616F785808C13124 -:1066C00040188F2840298F694038EF4800406F6894 -:1066D00070695809C08070785808C0506FBB0E9C14 -:1066E0005D19C0412FBDE3CD80E06F4CF01F000766 -:1066F0006F68EECAFFAC70796FBB0E9C5D19EF4CF2 -:106700000050CF1B800091D0800091E8EBCD4080FD -:106710001897580BC04078085868C0403018EF48A8 -:10672000006030686E4C8F08F01F001A6F18580810 -:10673000C2E0EEF800B05808C2216EA86F2C8F3866 -:10674000F01F00158F4CC0706F2A6F1BF01F0013D5 -:106750006F288F586FA8301A7029303B6F9C5D19D5 -:106760006FA86F9C7029300A305B5D196FA86F9C11 -:1067700070496EFA300B5D19E3CD8080310AEECBA3 -:10678000FF7CEECCFF6CF01F0005CD8B8F48CE9BBD -:10679000800091E880009200800091DCEBCD40FC0D -:1067A000201D79A81897169214931294799C700959 -:1067B0005D191896C2F06F685808C23070C8580842 -:1067C000C2000E9C1A9A6FBB5D181895C1A0400CB0 -:1067D0002FBC870CF01F0015C1D03028B892B888A4 -:1067E00030188699B8B9A9891897B8A9B8C80A9B6A -:1067F000400A2FBCF01F000E0E9C2FFDE3CD80FC45 -:106800005804C0416DCC580CC0A16DB86DA5580599 -:10681000C0A130070E9C2FFDE3CD80FC6DD81895EC -:106820005008CD6B5008CD4B80009200800091DC69 -:10683000D431209D3004F8C9FF7CF8C8FF6C18974C -:1068400050195008F8C0FFB808956FA8EF450060D0 -:10685000301B70196F9C5D19C0706FA8306B701978 -:106860006F9C5D19C2F16FA8306B70196F9C5D1938 -:10687000C140EEF800C45808C101EEF800C0E0487D -:106880000032E08A0025E0480033E080011C6F8878 -:106890005808C1003014CDAB6E085818F9B8010182 -:1068A000EFF81A18EF4500C030188F086F885808A5 -:1068B000CF216F7C580CE80C1700F9BC01012F7D2B -:1068C000D832301B0E9CF01F01EECE2B6E0958A95A -:1068D000FE9BFFDFFEF807ACF009032F30183029CC -:1068E000EF4800608F09CD4B300B0E9CF01F01E686 -:1068F000CCFB6E196EB81039C760300B0E9CF01FC0 -:1069000001E2CC6B6EA96E381039E0800137300B94 -:106910006E8E580EC1B06E685808C1806EAA6E396E -:10692000123AE08000BBEEF800B05808C0F0F2C8A0 -:10693000FFFFF1D8C008103AE08000B0F2C8FFFEB7 -:10694000F1D8C008103AE08000A96E2C582CC20083 -:106950006E985808E08001236E685828E080011F77 -:106960006EAA6E39123AE0800146EEF800B058087F -:10697000C0F0F2C8FFFFF1D8C008103AE080013B38 -:10698000F2C8FFFEF1D8C008103AE08001346E78FA -:1069900058085F1A3008F5EB0009F0091800E0818B -:1069A000010FEC1B0001F5EB0008F2081800E08075 -:1069B00001056EBB1699582BE080012A6E16580609 -:1069C000C071581BE080021B582BE08101630C3B17 -:1069D000E080014F0C995919C0F1580EC0416FE881 -:1069E0005808C0A0300B0E9CF01F01A8C51B6EEB11 -:1069F000580BFE90FF7C300B0E9CF01F01A5C48B42 -:106A00006FA8305B70196F9C5D19C7016FA8307B50 -:106A100070196F9C5D19C0506E685808FE91FF395F -:106A20006FA8300B70396F9C5D19C0516E68582883 -:106A3000FE90FF2F6FA8308B70196F9C5D19FE912F -:106A4000FF286FA8189B70396F9C5D19C0516E6844 -:106A50005828FE91FF1E6FA8307B70196F9C5D193E -:106A6000C0806E285828C0506E685808FE90FF11EC -:106A70006E185918E080025C5998FE91FF0AEEF8F2 -:106A800000805808FE90FF056E685808FE90FF01D0 -:106A90006E285848FE91FEFD300B0E9CF01F017DC4 -:106AA000CF7A6FA8306B70196F9C5D19FE90FEF164 -:106AB000EEFB00C4580BFE91FEEC0E9CF01F017023 -:106AC000CE7A3328EEFC00A4FEFA05CC1AD8302B7F -:106AD000F01F0172EEF800C0301B16080E9CEF4844 -:106AE00000C0F01F016F2FFDCD3A6FAA3038FACBEE -:106AF000FFE08F0830136F9CEF43006074595D19FD -:106B00008F95507C8F85EF4500788F758FA58FB559 -:106B10008FC58FD55F0A408B1896583B5F88104A07 -:106B2000EA0A1800C23119A919B8F1E910885068A9 -:106B3000103BC1C319988FA8EEF900B05809C09056 -:106B4000069C4019FACAFFE8FACBFFE4F01F015592 -:106B50000D893028F0091800E080011CE08B008DC1 -:106B60003018F0091800E0800123EEF800C02FF87B -:106B7000EF4800C0FE9FFE8D6E785808FE90FEC95B -:106B8000EEF800B05808C080310A400B401CF01FDE -:106B90000146FE91FEBE301BCBCA580EFE90FEF998 -:106BA0006E685808FE91FEF56E185918FE91FEDACF -:106BB000583CFE91FED7CECA6E19C0EB301830A9F2 -:106BC000EF4800608F096F1CF01F01386E485808AD -:106BD000C1A06E5CF01F0136EF4C0044FE90FE59E0 -:106BE0006E5A6E4BF01F01336E58EF480048FE9FFF -:106BF000FE50300B0E9CF01F012AFE9FFE4A30090A -:106C000050494048EF480044FE9FFE436F08580833 -:106C1000FE90FED6301830996FAA8F09EF480060B9 -:106C20007458FACBFFE86F9C5D1819A919B818962B -:106C3000F1E910885848E08B01476F1CF01F011BD9 -:106C4000305CEF450044EF4C00486EA6F01F011881 -:106C5000E08001853029B896B889EF18004AB8C994 -:106C6000B8B8A988B8A8EF4C0044FE9FFE12584C53 -:106C7000FE90FEB3CB8A3038F0091800E08000DCCB -:106C80003048F0091800FE91FF7230188F98C6EB5B -:106C900030181693EF48006030496FA8E04B00FEB3 -:106CA000EFF3000D8F096EC670096F9C5D19069A8F -:106CB0000C9BF01F0101E08100C36F1CF01F00FB63 -:106CC0006FA8EF4500446EA270096F9C5D19503C9F -:106CD000FACCFFE8F01F00F91893C9206EB8E0481D -:106CE00000FEE08101516FA8406670096F9C5D193C -:106CF00030C8505CA376EF480048ECCCFFECF01FA6 -:106D000000EC1891E080012E3FE9B892B8C9302913 -:106D1000B889F8C8FFFBB0A5B085B095F8C9FFF8F1 -:106D20003038B285B295B2A5B2B8504CF8C2FFF473 -:106D30000A96C298661A6ED81438C210405CF01FCA -:106D400000DE049AE4CBFFFC580CC1903FE814C865 -:106D50008689B4896608A988B4986609B4A907C861 -:106D6000B68886A9B6996618A988B6A86619B6B96C -:106D7000F6C2FFFC60082FF62F88810866F35803DF -:106D8000E0800099660B6EC81638CD50661ACD7B30 -:106D90006E185918FE91FEEB40685848FE98FEE7C1 -:106DA0003018EF4800780DC98FB9CE0A406A584AAA -:106DB000FE98FEDD30188F780DC98FB9E04900FECE -:106DC000FE91FED558BAFE98FED2ECC9FFFB139C8B -:106DD000138A13A8F1EA1108F1EC1088ECCBFFF844 -:106DE0008FC817AC17B81789179AF1E91188F1EA1B -:106DF0001108F1EC10888FD8CB9A6FA83089EF4B2F -:106E000000608F09FACBFFE0705A6F9C5D1AFEFAA2 -:106E100002AE302BEEFC00A4F01F00A06F1CF01F90 -:106E200000A30C99EF460044009A6EAB0E9CF01F35 -:106E300000A5C1AB30188F88FE9FFE990C9C069B65 -:106E4000F01F00A1FE90FF3B6FD85808C0906F6AFA -:106E5000580AC06074096EC81039E0800086FEFBD5 -:106E6000026A0E9C3006F01F009A6EB88F186F6C85 -:106E7000580CE08000CD5806C54078B86FBB0E9C1A -:106E80005D18EF4C006C6FB65806E08000CA6F6A60 -:106E90006ECB30188F287429FEFA02381AD91AD30B -:106EA0001ADB302BEEFC00A4F01F007C2FDDFE9FD0 -:106EB000FCF05806C4206F285C78A2B8A988A2A864 -:106EC000FE9FFEA1F0CC0004F0C20005F01F007888 -:106ED0001893FE90FEB45802C120ECCCFFFB300AA0 -:106EE00035DB1938F0C90021F6091800F9B80B5F35 -:106EF000E60A0B082FFA1432FE9BFFF53008E60273 -:106F00000B084F581AD34F5A1AD8302BEEFC00A456 -:106F1000F01F0062069CF01F00652FEDFE9FFE8FA4 -:106F200078380E9C5D18EF4C006CCAEB6FF858086F -:106F3000FE90FCAFFE9FFDAA04983FE910C9B0A6E1 -:106F4000B086B096E4C9FFFCB2B6B286B296B2A6DD -:106F50006F282F88EF480048CB0B0A9CFE9FFE85C8 -:106F60005045FE9FFE5074181033FE91FF7A7499BD -:106F70005809FE90FF766FBB0E9C5D19FE90FF7165 -:106F80003016C74B3058406CEF4800482FACF01F0C -:106F900000481896FE90FE35B89230283039B888EF -:106FA000B8C9504CF8C2FFFB50250A91C1A8661A17 -:106FB0006EB8103AC130403CF01F003FC0F0660888 -:106FC0005808C5A040285808C0913FE904C93018A6 -:106FD000502860082FF12FF8810866F35803C0602D -:106FE000660B580BCE50661ACE7B5801EFF8101284 -:106FF000E5F10E00EFF80012F7B800FFEFF80A1203 -:107000005C78ACB8A988ACA8FE9FFDFD069B6ECC51 -:10701000F01F002DEF4C0058FE90FE51C2DB6FA810 -:107020006F9C70095D196F6870291AD91AD36EC8E0 -:1070300018921AD8302B4AAAEEFC00A4F01F0017B1 -:10704000EF4600588F268F1658025F1B6EB92FDD52 -:1070500058D95F081668EC081800FE90FE30E4F876 -:1070600001605808FE91FC15E4F801685808FE908C -:10707000FE26FE9FFC0E661804C8CACB800265740B -:107080008003D7848002670C8002663C80026370B4 -:10709000800264808003D8A080023A1A800264E4EF -:1070A00080028D9C8000917C800091E8800092009D -:1070B000800091DC80023AD8800271E48003D8F02D -:1070C0008002679C800271908003D9248002634C07 -:1070D0008003D9708003D8D08003D3E48003D930F3 -:1070E000EBCD40801897580CC0E0488BF01F00088B -:1070F0000E9CF01F0008EEFC00ACF01F00070E9C79 -:10710000F01F0006E3CD80808003D9AC8002634C81 -:107110008002653C8002D298800091E8EBCD40F877 -:10712000203D1896169414931295E06C00C8F01F39 -:1071300000151897C1C033C8F946006499F8F9449E -:107140000068F94300A430CA300B1A9CF01F000EEF -:107150006A2850286A0950096A181A9C5018F01FAA -:10716000000BEF4C00AC1A961898C0500E9C2FDD07 -:10717000E3CD80F80E9C1097F01F0005CF8B000028 -:1071800080028F24800091D08002D2C4800091E8D8 -:10719000189948A8700C580CC051C0D878FC580CED -:1071A000C0A078081238CFB1781816385E0C78FC79 -:1071B000580CCF815EFD000000007AB01899489805 -:1071C000700C580CC051C0C878FC580CC09078089E -:1071D0001238CFB178181638CF81782C5EFC5EFD5E -:1071E00000007AB0189B4888700C580CC0A0189901 -:1071F000300A2FFA72F95809CFD1149897085EFC1B -:107200001898CFDB00007AB05EFDD703EBCD40E0ED -:1072100048D81896169570075807C051C0E86EF701 -:107220005807C0B06E2C0C9BF01F0008CF916E0861 -:107230008B086E1CE3CD80E030088B08109CE3CDFA -:1072400080E0000000007AB0800091A0EBCD40C04B -:1072500048B70E966E095809C0B072F88D08129C96 -:1072600072D85808C0705D186E095809CF71E3CD07 -:1072700080C0129CF01F0003CEEB000000007AB02B -:10728000800091E8EBCD40C048D66C485808C0312A -:10729000C0880E987057109CF01F000A5807CFA1A5 -:1072A0006C6CF01F000930086C3C8D68F01F000505 -:1072B0006C8CF01F0004E3CD80C0000000008C90B7 -:1072C000800091E880014544EBCD40F8495718967D -:1072D000169314946E2B12952FFB6E3CA56BF01F2A -:1072E0000012C1D06E28A568F80809066E29A569A4 -:1072F000F8090009932593146E2AF4081504F80878 -:10730000000891336E188F3C2FFA1036EFF69A0171 -:107310008F2A3018300C8FC8E3CD80F8E3CFC0F847 -:1073200000008C90800091F4EBCD404CE0634DD395 -:10733000EA1310621896F01F000DF8030648A7899B -:10734000E06A03E8F20A0248F8080109121CF20A8E -:10735000024AF80304428D1ABF5CA743E60C010CF5 -:107360008D0CE3CD804C0000800145C4EBCD408006 -:10737000202D4A076E495809C2C06E581039C29074 -:107380001A9CF01F001D6E484009700A1439C2444F -:107390007018401BF40901091618C276F00B141F6F -:1073A000E06A03E8F20A024AE0694DD3EA19106282 -:1073B000F0090448A7491619F20A000C580CE08A93 -:1073C000000E300948DA6E6BF01F000D6E488F58C2 -:1073D0002FEDE3CD80801439C030301CCF3B7018C6 -:1073E000401B103BCFB4CD7B2019F028BDC0CD7B16 -:1073F00000008C9080027328800275188001455827 -:10740000D43149A0189516931492604C580CC2B010 -:1074100030060C940C91785778480A38C09018962A -:107420000E9C5807CF91F01F0012089CD8325BF3D6 -:107430005F0A782906395F081448E2081800CF006F -:107440005BF25F0A783904395F081448E2081800D3 -:10745000CE705806E1F70A04EDF71A052FF4F01F75 -:107460000005CDFB1894CE0B00008C908002736C4D -:10747000800091E8EBCD40FC18961695149212947A -:107480001093318CF01F00211897C3A0F01F00202B -:107490006E0A6E1B0C0AEA0B000B8F0A8F1BEE5B49 -:1074A000423FE08A000B2FFAEE3B42408F0A8F1BCF -:1074B000EE5B423FFE99FFF98F248F338F423008F5 -:1074C0008F58494C78495809C1D072081438E0895E -:1074D000001A2F0CC0A8F2CCFFEC72595809C0A0BA -:1074E00072081438E0890007103ACF617218103B17 -:1074F000CF348F599907F01F0008E3CF80FCE3CF0A -:10750000C0FC2F0CCF7B000080009200800273280B -:1075100000008C908002736CEBCD40E0202D49661A -:107520001A9CF01F00166C475807C1F040096E08FE -:107530001238E089001B3005C05840096E08103928 -:10754000C1451039C0516E1940181238C0E56E5847 -:107550008D558D486E3B6E486E2C5D180E9CF01F4D -:1075600000086C475807CEA1F01F00062FEDE3CFAF -:1075700080E0000000008C9080027328800091E879 -:107580008002736CEBCD408049A76E3E580EC2B0AE -:107590006E2A580AC280E08A002B7C081838C27014 -:1075A000FCC9FFF0300BC05872082F091838C050C2 -:1075B0002FFB163AFE99FFFA143BC170201A163AB7 -:1075C000C0F0161AF60C1504A56AFC0C000C2FFB73 -:1075D000A56BFC0B000BF01F00086E2A201A301858 -:1075E0008F2A8FC8E3CD8080E3CD8080300BCE7BA7 -:1075F00000008C90800091C4EBCD406048861895C7 -:10760000334A300B0C9CF01F0007ECCCFFE88D05D3 -:10761000301BF01F0005E3CF8060000000008C905D -:10762000800091D0800144F80050F2010100000078 -:107630000000000000000000F6F800DC5808C05010 -:10764000F8F800F85808C0205EFDF6FB00D0580B93 -:10765000CFC076085808C04176185808CF602F8BE5 -:10766000CF9BD703EBCD4080300B1897F01F001352 -:10767000306A300BEECCFF64F01F0011306A300B23 -:10768000EECCFF5EF01F000E300BEEFC00E0F01FB2 -:10769000000D300BEEFC00E0F01F000BEEF800BC1C -:1076A0005828C030E3CD8080EEFC00E0300BF01FA6 -:1076B0000007E3CD80800000800217D0800091D0C9 -:1076C000800261E8800261D4800261A4EBCD408039 -:1076D0001897F8F800945808C160300BF94B0094E3 -:1076E000F8F800D470985808C040F8FC00C45D1841 -:1076F000486A302B0E9CF01F0006300A0E9C149B2B -:10770000F01F0004E3CD80808003D9D480023A1AB0 -:1077100080022584D431209D500C761558155F9831 -:107720007607169058075F1910693008F00918009D -:10773000E08000B8EEC4FFFF0989F2C6FFFE0C35F9 -:10774000E08500B010923DD33301C168E208180013 -:10775000C2800C0758155F9958075F181268E40833 -:107760001800E080009EEEC4FFFF0989F2C6FFFE0C -:107770000A36E08900960C150F88E6081800CE71CD -:10778000305AF4091800FE98FFE6EECCFFFE306A8E -:107790004DFBF01F0060C0B00F88E2081800CDA1BB -:1077A00009883019F2081800FE98FFD540080E9B92 -:1077B0000C9AF0FC00DCF01F00581897C711400A23 -:1077C000FACBFFFCF4FC00DCF01F0054C21540793A -:1077D0005809C1E040685808E0890007C19840682E -:1077E0001037C1644079EE0B1504F20B000B400911 -:1077F0003008F2FC00DC2FF71099109AF01F0048B7 -:10780000CEF14008301BF0FC00E0F01F004660465F -:10781000605558065F1958155F981069C760ECC429 -:10782000FFFF0989F2C7FFFE0E35C6F53003069249 -:107830000691C1A85802C0610D88330AF4081800E7 -:10784000C3A00E060E1558065F1858155F991268EA -:10785000E2081800C3F0ECC4FFFF0989F2C7FFFE7D -:107860000A37E08900385803CE610D883DDAF40804 -:107870001800CE113058F0091800FE98FFDD306A6C -:107880004A3BECCCFFFEF01F0023CD5140090E9A7D -:107890000C9BF2FC00DC3013F01F0023CCCB600704 -:1078A0005807CB604009300AF2FC00DC149BF01F43 -:1078B000001ACAEB09883019F2081800FE98FFC3B5 -:1078C00040080E9A0C9BF0FC00DC3012F01F0017F1 -:1078D000CB9B5803C0F05802C0B160485808C08024 -:1078E0004008049AF0FC00DC049BF01F00102F7D80 -:1078F000D83260465806CF004009300AF2FC00DC5E -:10790000149BF01F0009CE8B3002CF5B80027628DB -:107910008000917C8002B5EC8002C04C8002938094 -:10792000800255968002B58C8002B52CD431FACDF8 -:10793000009018911497586BE08B00C4FEF807482C -:10794000F00B032F580AC0A0F8F800907009739A42 -:10795000580AC0410E9BF01F01CD304B029CF01F16 -:1079600001CCE2F801185808E0810312FAC7FF942D -:10797000E2F800D470285808C4C00E9BE2FC00C492 -:107980005D18C475E2C6FF64306A0C9B0E9CF01F44 -:1079900001C1C3F0FB3800711AD8FB3900741AD941 -:1079A000FB3800771AD8FB39007A1AD9FB38007DEA -:1079B0001AD8FB390080FEFA06DE1AD9301B029C69 -:1079C000F01F01B6306A0E9B0C9CF01F01B5306AA7 -:1079D000300BE2CCFF5EF01F01B3E2FA00BC2FAD2A -:1079E000584A5F08590A5F091248C081588AE080E6 -:1079F000030C0E9B029CF01F01ACE2F80090704952 -:107A00005819E08102D5E2F800B05808E08002D0B1 -:107A1000FB3800711AD8FB3900741AD9FB3800778B -:107A20001AD8FB39007A1AD9FB38007D1AD8FB39ED -:107A30000080302B1AD9FEFA0672029CF01F0197C3 -:107A4000E2FB00B02FAD580BC040029CF01F019824 -:107A50000E9BE2FC00DCF01F0197622CF01F0196E8 -:107A6000300BE2FC00E0F01F0195300BE2FC00E07F -:107A7000F01F0193E2F800BC5828C061300BE2FC13 -:107A800000E0F01F0190301BE2FC00E0F01F018BD2 -:107A9000300BE34B00F4E2F900BC59095F0A584986 -:107AA0005F081448F6081800E0800216029CF01FD8 -:107AB0000186307B029CF01F0176029CF01F01833F -:107AC0002DCDD832580ACFD0149B7439F8FC00DC85 -:107AD000742AF01F017F2DCDD832F8FB00BC590B62 -:107AE000CF00F8F800E85858E08002355838E08BAD -:107AF0000234E2C7FF64306AFEFB05D80E9C2F8B70 -:107B0000F01F0164EE0B1710E06800A2E3D8E00B51 -:107B1000029CF01F0171E2FC00DCF01F0170FEFA14 -:107B200005BE302B029CF01F015DE2FA00BC584AF2 -:107B30005F08590A5F091248C0B1588AE08002976D -:107B400030080E9BE3480104029CF01F0157029C81 -:107B5000F01F01642DCDD832FEFA058C303BF01FAA -:107B6000014F5807E08002806E0858085F1B169A84 -:107B7000E2FC00DC301BF01F015DFACCFF94F01F2B -:107B8000015CE2F800985808E08001D541B9F2089C -:107B90000108E048003CE08A01A6E34900982DCDA9 -:107BA000D832F01F0154E08501EBE2F900907248F1 -:107BB0005828C870E2F800AC5808C831E2FA00CC86 -:107BC0001094500AE2F000D072285808E08A00A908 -:107BD000300850187218401AF00A032850585800FC -:107BE000E08A0097400530020A96C11808973003D2 -:107BF00030142FF2ECC6FF6404305F983009E9E8D6 -:107C00000008F2081800E08000970E940C9B029C7C -:107C10000C93F01F0139C05078385818FE99FFE8CE -:107C20006D585808C051ECF800805808CE004059F3 -:107C30005809CDD0ECC8FFFAECCAFFA8ECC9FFD4B4 -:107C40005048502A50394057C0486E175807CCF05A -:107C5000EEF801945808CFA16CAA6E58103ACF6183 -:107C60006E4B404CF01F010BCF116E885808E0811D -:107C700000E16F6AEDBA0001C061ECFB0080580BB7 -:107C8000E08100E3F1DAC001300AF4081800CDE029 -:107C90006D5B580BCDB0FACAFF94403CF01F011742 -:107CA000CD516F6841B91268CD106F3841C9126863 -:107CB000CCD06F4841D91268CC906F5841E9126816 -:107CC000CC5058065F04C96B149BF01F00F02DCDFB -:107CD000D832149B2EACF01F010A1896FE91FEF2CA -:107CE0006F9B580BE080012A581BFE91FEEBE34B83 -:107CF00000D8029CF01F00FB622CF01F01028326BB -:107D0000CE0A5803E08100BF0E94E2F900904018BB -:107D10002FF850187228401A103AFE95FF5DE2F8CD -:107D200001085808E0800121029CF01F00F7E2F9E9 -:107D30000090C4BB5804CE600E923006C108049770 -:107D4000089930032FF6EAC5FF640C305F98F3E81A -:107D500000083009F2081800CD500E920A9B029CD0 -:107D60000A93F01F00E5C05078385818FE99FFE9D3 -:107D700040585808CE50EACAFFFA4057506AC078B7 -:107D80006AA8103AC5006E175807CDA0EEF8019406 -:107D90005808CFA16E5A580ACF416E885808C1E1E1 -:107DA0006F5BEDBB0002C040EDBB0003CED1F1DB49 -:107DB000C002C0806B585808CE71EAF8008058089D -:107DC000CE31EEF8014C5808C110EB190088EDB91E -:107DD0000001CDA058055F09CB6B306AEECBFFE800 -:107DE0000A9CF01F00ACCD01CDCB1099EEC8FECCA3 -:107DF0002FF9700A580AC2612FC85849CFA1EDBBAC -:107E00000003C071EEF800F0F1D8C002F9BA010128 -:107E1000EB190088EDB90004C030580A5F0A580A0F -:107E2000CB30CD6B6E4B406CF01F009ACAD1CB6B40 -:107E3000306AEECBFFE80C9CF01F0096FE91FF0726 -:107E4000C19B301ACDDBFACAFF94402CF01F00AB67 -:107E5000C0306F6AC18B6F6A41B8F5E80008FE90C8 -:107E6000FF136F3841C91268FE90FF0E6F4841D969 -:107E70001268FE90FF096F5841E91268FE90FF04F6 -:107E8000C21BE2F800A85808C131306AE2CBFF6497 -:107E9000069CF01F0080C170E2F800E85838C081ED -:107EA000306AE2CBFF5E069CF01F007AC0C00E9BDA -:107EB000029CF01F007FE08100B50E9A069B029C99 -:107EC000F01F0092009A400BE2FC00DCF01F0090D3 -:107ED000FE9FFDF8169A029C30ABF01F008EFE9FAD -:107EE000FDEE3017FEFA0230303B029CE34700946F -:107EF000F01F006AE06B2710300CF01F0088E2F8DA -:107F000000D470985808C0500E9BE2FC00C45D1865 -:107F100030EB029CF01F0082300A029BFEFC020440 -:107F2000F01F0081300802994FEA109B33CCF01FFC -:107F3000007F41B9FE9FFE33E2F800D85808FE905A -:107F4000FDC1E34B00D8029C301BF01F0079FE9F5F -:107F5000FDB9582BC780E07A86A0300B029CF01F39 -:107F60000075FE9FFDC8305BE2F801105818C7206D -:107F7000029C300AF01F006FFE9FFDA4E2F9009002 -:107F800072485828FE90FD9E301BCEFBFAC7FF9426 -:107F9000E2C6FF64306A0C9B0E9CF01F0041E2F8C1 -:107FA00001185808FE91FCF8FE9FFCE4029CF01FAB -:107FB00000621896C230F8FB0194580BC1F1795851 -:107FC000E2180013C351189B029CF01F005CE2F8FA -:107FD00000B05808C0701036C050E2FC00E0F01F3E -:107FE0000058E2FC00DC0C9BE34600B0F01F00559B -:107FF000029CF01F0055FE9FFD0D029C303BF01FC0 -:108000000053FE9FFD5FE2F800B05808FE90FCF3BD -:10801000F0F800F0F1D8C002FE91FCEDFE9FFCEFFD -:10802000029C300A30ABF01F0043FE9FFD4B350928 -:10803000FAC8FF70189A10D9029CFAC9FFE4F01F21 -:108040000044CC6B4C3AF01F0015E2F800E8FE9FAC -:10805000FD4F72485818F9B80002E3F80A44F9BB1A -:108060000000C87B0E9BFE9FFD84E2F800B058081C -:10807000FE90FD68F0F800F0F1D8C002FE91FD62BC -:10808000FE9FFD678003D9B880027714800217D065 -:108090008000917C8003D9F880023A1A800091DC3C -:1080A000800091D0800226948003DA3880027638EE -:1080B0008002BA4C80028172800261E8800261D441 -:1080C000800261A480021CE080021DB88002979C9F -:1080D0008002762880021AE08002BA1C8003DAA8A7 -:1080E000800276648003DAE48002D19C80028F549F -:1080F00080021E84800218F88002BD68800091A072 -:10810000800281748002189C800230DC800298A476 -:108110008002246C8003DB0480028F1C800228D83C -:10812000800276CC800274008002747480022794EE -:10813000800225848002195C800222A480025748B4 -:108140008002B9D48002237080022FCC80021F30BD -:108150008003DA68580C5E0E5E1DD401201D3008C5 -:10816000767C3009BA881A9A7668129B5D182FFDC2 -:10817000D8025EFCEBCD40801897580CC090789CDC -:10818000580CC035F01F00040E9CF01F0004E3CD16 -:108190008080000080027584800091E8EBCD40F87B -:1081A0001896129510944063328CF01F000B1897AC -:1081B000C0F00C9B311AF01F00093FFC8F658F74D3 -:1081C0008F838F9C30090E9A485BF01F00060E9C2F -:1081D000E3CD80F880028F24800091AC8002815A28 -:1081E000800272C8D4011698306AF8CBFFEF109C59 -:1081F000F01F0002D80A0000800091DCD431213D3C -:1082000076FE511E760A503A761950497628505813 -:10821000763E506E764A507A7669508976785098D4 -:10822000768E50AE769A50BA76B950D976C850E864 -:1082300076DE189850FEF8C9FFF876EA510A7654AF -:1082400076AB500C5019E02BA44F50CB110EF8CB4D -:10825000FFF45008512E403A700340487205502BED -:10826000E069A478EA19D76AFC0900091409760ABA -:10827000E06BB756EA1BE8C7F40B000B100BF5E5F3 -:108280002008066814581009E06870DBEA182420FA -:10829000EBE3200AF20E1507FDE9139E060EFDEA38 -:1082A000000A0A5A1005140BFDE32008F606150C07 -:1082B000EDEB13461C06EDE800080658405AE0694D -:1082C000CEEEEA19C1BD14051005EDEE2008EA0B4B -:1082D0001511F7E512FB0C0BF7E800081C58120308 -:1082E0004069120310034078E6051516E0690FAFE8 -:1082F000EA19F57CEBE312A5F00900091605F7E68B -:108300002008EBE800080C581C091009EBEB2008CA -:10831000F2031507E7E913930A03E7E80008165884 -:10832000E06AC62AEA1A4787E80A000A0C0A100A15 -:10833000E7E52008F402150CE5EA13420602E5E839 -:1083400000080A58408EE0694613EA19A830FC0973 -:10835000000916091009E5E32008F2061511EDE9F8 -:1083600012F60406EDE800080658409AE06B950105 -:10837000EA1BFD46F40B000B0A0B100B40A840C98A -:10838000F60E1516FE395BB1FDEB12AEE06A98D819 -:10839000EA1A69800C0E40BBF00A000AEDE22008E0 -:1083A000FDE80008045840C1060A50C9100AE069F7 -:1083B000F7AFEA198B44FDE62008F6090009F40B33 -:1083C0001507F7EA139B1C0BF7E800080C58F7EEAB -:1083D000200A0C0104091009F206150CEDE91346F8 -:1083E0001606EDEB2008EDEA000A1C5A1401E2051E -:1083F0001511EBE112F50C05EBE80008165840DA10 -:10840000E069D7BEEA19895CF40900091C09100962 -:1084100040E8F20E1516E06A1122EA1A6B90FDE9A7 -:1084200012AEF00A000A0A0EEBE62008160AFDE872 -:10843000000840FB0C58E0697193EA19FD98100A96 -:10844000F6090009FDE52008F40B1507F7EA139B70 -:108450001C0BF7E800080A580C0910094108F2063D -:10846000150CE06A438EEA1AA679EDE91346F00A84 -:10847000000A1606F7EE2008EDE800081C580A0A64 -:10848000100A4118F4051511E0690821EA1949B4E8 -:10849000EBEA12F5F00900090C05EDEB2008EBE81A -:1084A000000816581C091009F2031516E7E912A373 -:1084B0000A03E7E520080C680A58404EE06A256286 -:1084C000EA1AF61EFC0A000A160A408B100A40D867 -:1084D000F40E1505E069B340EA19C040FDEA13BE89 -:1084E000F6090009060E403B0C09E0665A51EA16EF -:1084F000265EF0060006FDE320080A68065810090B -:10850000E062C7AAEA12E9B6F6020002F20B150908 -:10851000F7E9137B41191C0BF7EE200806681C587D -:108520000A0606021006E063E681EA13D8A1F20308 -:108530000003EC09150EF3E613291609F3EB2008E6 -:108540001C68165840CA10024078E065105DEA15B4 -:10855000D62FE0611453EA110244E8050005F40146 -:1085600000011C051601E40A1514E06EFBC8EA1EA2 -:10857000E7D3F5E212CAF00E000E120AF5E9200860 -:10858000166840BB125812031005E066CDE6EA16E5 -:1085900021E1F6060006EA0B1505F7E513BB140BFF -:1085A000F7EA2008126841091458E06507D6EA1571 -:1085B000C3371001F2050005E2091509F3E113794B -:1085C0001609F3EB20081468165810034068140EBF -:1085D0001606E60A150EE0620D87EA12F4D5F5E3F9 -:1085E000132AF0020002120AF5E92008166840ABCF -:1085F00012581205100EE06314EDEA13455AF60303 -:108600000003FC0B1514F7EE12CB140BF7EA20084D -:10861000126840F91458E061E905EA11A9E310066F -:10862000F2010001EC091505F3E613B91609F3EBA5 -:10863000200814681658100540581402E066A3F884 -:10864000EA16FCEFEA0A1509F0060006F5E5137ACA -:10865000120AF5E9200816681258409E1002160307 -:10866000E40B150EF7E2132B140BF7EA200812683F -:108670001458E06502D9EA15676F1003FC05000580 -:10868000E60E1514FDE312CE160EFDEB200814685D -:1086900016581201100140A840E91406E060F68166 -:1086A000EA108771E20A1505F0000000F5E113BA3F -:1086B0001C0AF5EE200816681C58E0624C8AEA1283 -:1086C0008D2A1006F2020002EC091509F3E613796F -:1086D0001409F3EA20081C681458160540DB10053D -:1086E0004108E434C6BEE0616122EA116D9DE80AEA -:1086F0000007F6010001E066380CEA16FDE5F00619 -:108700000006EA08150EF1E513281208F1E9200B1E -:10871000F7EA000A125A1C021402407A404E120074 -:108720001001E063CFA9EA134BDEF4030003E40A6F -:108730001514F5E212CA100AF5EB200BF5E8200833 -:10874000EE0B000BF6091504F3EB13C914091258CC -:1087500014061000F3EA200AE065EA44EA15A4BE14 -:10876000E008150BFC050005F1E01358120512088E -:10877000105A10031401F1E92009E20B1510F7E17A -:10878000130B100B1659F7E820081206EC0E1517FC -:10879000FDE6129E160E1C5810054098FDEB200AAF -:1087A000EA061504E0694B60EA19F6BBEDE513C66D -:1087B000F00900091C0616090C5AEDEE20081403F6 -:1087C00040CBE605150BEBE313550C050A58E06AA0 -:1087D000BC70EA1ABEBF1009F60A000AEBE62008D0 -:1087E000F20B1510F7E9130B0A0B16581C0A100AA6 -:1087F00040F8F40E1517E0697EC6EA19289BFDEAD9 -:10880000129EF0090009160EF7E520081C580C0905 -:1088100010094038F2061504E06A27FAEA1AEAA1BC -:10882000EDE913C6F00A000A1C06FDEB20080C58FF -:108830000A0A100A4068F405150BE0693085EA1948 -:10884000D4EFEBEA1355F00900090C05EDEE200812 -:1088500016090A58408B1009E06A1D05EA1A0488B7 -:10886000EBE62008F60A000AF20B1510F7E9130BE5 -:108870000A0B16581C0A100A40B8F40E1517E069C6 -:10888000D039EA19D9D4FDEA129EF0090009160E72 -:10889000F7E520081C580C09100940E8F2061504F9 -:1088A000E06A99E5EA1AE6DBEDE913C6F00A000A88 -:1088B0001C06FDEB20080C580A0A100A4118F405A2 -:1088C000150BE0697CF8EA191FA2EBEA1355F009D1 -:1088D00000090C05EDEE200816090A58405B100946 -:1088E000E06A5665EA1AC4ACEBE62008F60A000A0C -:1088F000F20B15101C0AF7E9130BE0692244EA1980 -:10890000F4290A0B1658100A4032F40E15171202F9 -:10891000FDEA129EEA0811FF160E409AFDE81008C3 -:10892000E069FF97EA19432A1658F40900090A0971 -:108930000C0241061002F60811FFE40A1506F5E2E2 -:1089400013AA1C0AF5E810081C58F2080005E06993 -:1089500023A7EA19AB941206FC0811FFEC0B000BDD -:10896000EA06150AEDE513661406EDE8100814583A -:10897000F6080008E069A039EA19FC93F00B150F1E -:10898000FA243942F7E8131BE80900050C0BEA0E3C -:10899000000EF40811FFF7E810080C58E06959C3FD -:1089A000EA19655BFC08000540E2EA0E15151202A3 -:1089B000FDE512BEEC0811FF160EFDE81008165872 -:1089C000E40A000AE069CC92EA198F0CF40800026C -:1089D0004068F00900090C09E40A1506F60811FFC1 -:1089E000F5E213AA1C0AF5E810081C58F208000268 -:1089F000E069F47DEA19FFEF40C1FC0811FF1201A4 -:108A0000E406150AE20B000BE0695DD1EA198584E2 -:108A1000EDE213661406EDE8100814584045F60818 -:108A200000011205E20B150FEA0E000EF7E1131B11 -:108A3000F40811FF0C0BE0697E4FEA196FA8F7E804 -:108A4000100840A30C581203E60A000AFC080005AF -:108A5000EC0811FFEA0E1515FDE512BE160EFDE835 -:108A600010081658F4080003411AF60811FFE069CF -:108A7000E6E0EA19FE2CF4090009E60A15060C09DD -:108A8000F5E313AA1C0AF5E810081C58F2080003C5 -:108A90004088E0694314EA19A301F00900091609A6 -:108AA000FC0811FF40FBE605150AEBE3136514050E -:108AB000EBE810081458F2080008E06911A1EA195F -:108AC0004E08F6090009F20E000EF006150FE069D7 -:108AD0007E82EA19F753EDE81316F40811FF0A062F -:108AE000EDE810080A58FC080001407E120EEA0862 -:108AF00011FFFC0A000AE20E1515FDE112BE0C0E74 -:108B0000FDE810080C58F40800094128F20A15067F -:108B1000F5E913AA1C0AF4080009E068F235EA181E -:108B2000BD3A990940D91009EC0811FFF205000B74 -:108B3000F5E8100840091C58720CF6080001E069BD -:108B4000D2BBEA192AD740581208E20B150AF006E0 -:108B50000009F7E1136BFC0811FF140BF7E810088C -:108B60001458F208000640B8E069D391EA19EB8680 -:108B7000F0090009F20E0008F40A11FF400EEC099A -:108B8000150FF3E613191609F20C000CF3EA100A9C -:108B9000165AF00A0006EC081515F1E612B8100C8A -:108BA0009D0C401A7408120895084028700916098F -:108BB00091092EDDD832D703EBCD40E03809764855 -:108BC000F1D8C066F608000AF56900181895F00A91 -:108BD000113F1697F6080008F0CCFFE7587AE08BB3 -:108BE0000056300BF01F002DEEC6FFE8EECCFFA8BC -:108BF0000C9B1798178917BAF3E8108917A8F1EAA0 -:108C00001088F3E8110916A9183BCF410C9B0E9C64 -:108C1000F01F0023338A300B0C9CF01F00200C9BAC -:108C2000ECCCFFC81798178917BAF3E8108917A872 -:108C3000F1EA1088F3E8110916A9183BCF416E48F4 -:108C40006E590C9B0E9CEF480050EF490054F01FEA -:108C500000140E9BEECCFFF01798178917BAF3E8B3 -:108C6000108917A8F1EA1088F3E8110916A9183B32 -:108C7000CF410E9B0A9C310AF01F000A0E9C304A1D -:108C8000300BF01F0006E3CD80E0208A300BEEC6EB -:108C9000FFE8F01F0002CC4B800091D0800281FCE5 -:108CA000800091DCEBCD40FC1493784AF40300384B -:108CB000103AF9F98005F9F9B005F7B90BFFF9F9A0 -:108CC000BA059948E608161DF20800089958189444 -:108CD0001692F1DAC066C381F8C5FFE8E043003FB1 -:108CE000E088002C3006EAC7FFC0E406000B340A17 -:108CF0000A9CF01F00290A9B1798178917BAF3E8F6 -:108D0000108917A8F1EA1088F3E8110916A90E3B9B -:108D1000CF410A9B089CF01F00212C06E6060108A3 -:108D2000E048003FFE9BFFE3E6C80040E7D8C006EE -:108D3000E018FFC02C081002069A049B0A9CF01F42 -:108D40000016E3CD80FCF00711402E88100C0E3386 -:108D5000C1D30E9AF01F0010E8C5FFE8E8CCFFA8C9 -:108D60000A9B1798178917BAF3E8108917A8F1EA30 -:108D70001088F3E8110916A9183BCF410E130E0213 -:108D80000A9B089CF01F0005CAAB069AF01F000260 -:108D9000E3CD80FC800091DC800281FCEBCD40FCC7 -:108DA000216DE0682301EA186745E06EAB89EA1E91 -:108DB000EFCD30075008501EE068DCFEEA1898BA84 -:108DC000E06E5476EA1E1032504750575028503EFD -:108DD00018931292580CC140149416951A962FF7B6 -:108DE000090A0B0B1A9CF01F00080E33FE9BFFF9BB -:108DF0001A9B049CF01F00052EADE3CD80FC1A9653 -:108E0000CF8B000080028CA480028BB8D431FACDC5 -:108E10000088501C500B14931292109142B0585A73 -:108E2000E08B0056E04B0040E08B0054FAC4FFF8A2 -:108E3000340A300B089CF01F002E400A401B089C8F -:108E40000896F01F002CFAC5FFB808970D88EC189B -:108E500000360CC80A36CFB1340851845128580363 -:108E6000C110FACCFF9CFACBFFB4300AE60E150213 -:108E7000E40A030818A8E20A030916A92FCA1C3A33 -:108E8000CF81E6CCFFFF00990A9AFAC3FFA0069BA8 -:108E9000F01F0019340A300B089CF01F0015400A1F -:108EA000401B089CF01F00130F88EC18005C0EC8D4 -:108EB0000C37CFB1310C3408513C5184519000999A -:108EC0000A9A069B5128302CF01F000B2DEDD8324A -:108ED000FAC6FF881A9A0C99FACBFFFC301CF01FD7 -:108EE0000006310850165008CA2B0000800091D0AF -:108EF000800091DC80028D9CD401202D501A5009F5 -:108F0000301A1AD8FAC9FFF8FAC8FFFCF01F00039C -:108F10002FFD2FEDD802000080028E0C5EFC5EFE5D -:108F20005EFCD703EBCD40C01896F01F00061897E3 -:108F3000C0500C9A300BF01F00040E9CE3CD80C093 -:108F400080009200800091D0D401F01F0002D80A66 -:108F500080014600D401F8CBFFFCF01F0002D80AC4 -:108F6000800145D4780C580C5E0C3008F948004C50 -:108F7000780C580CCFC15EFC580CF9FC10435EFC19 -:108F8000580CF9B80100F9F81A435EFCEBCD40E04B -:108F9000189716961495314CF01F0005F9F71A032F -:108FA000F9F61A04F9F51A02E3CD80E080028F2465 -:108FB000EBCD40E01696149578075807C160580627 -:108FC000C080306A0C9BEECCFFC0F01F000AC0A12D -:108FD0005805C0B0EECCFFFC310A0A9BF01F00051B -:108FE000C0406E075807CEC10E9CE3CD80E0000064 -:108FF0008000917CEBCD4040781820181696991887 -:10900000784B78390C9C5D190C9CF01F0003E3CD64 -:1090100080400000800091E8EBCD4080202D300A98 -:109020001897189B49BCF01F001C300A0E9B49BCC6 -:10903000F01F00196E085808C2201A9CF01F001873 -:109040006E08400A70EC0E993008141C109BF8084A -:109050000C4C490A2FFCF01F00136E2BF6FA010C82 -:10906000580AC1006E08400A712C0E99141C300871 -:1090700048AAF8080C4C109BF01F000A2FEDE3CD16 -:109080008080F6CBFEB80E9CF01F0007CF80CEBBD1 -:10909000800290E4800274008002913080028F543C -:1090A0008002747480028FB0EBCD40C01896580CCB -:1090B000C1407809300899085809C031C0880E9914 -:1090C0007207129CF01F00065807CFA10C9CF01FDE -:1090D00000050C9CF01F0002E3CD80C0800091E8E9 -:1090E00080029018EBCD4080202D18971A9CF01F1D -:1090F000000E6E0A580AC0C1C1087408149B8F087C -:10910000300A0E9CF01F00096E0A580AC06074E90C -:1091100040081039FE9AFFF30E9CF01F00052FED5A -:10912000E3CD808080028F5480028FF480029018FB -:10913000D4013008782AF548010C7829F2FC0104A2 -:10914000F01F0002D8020000800255ACD43120CDBF -:109150001096782814941293E04A00205FBAF0F930 -:109160000160189758295F18169241511448C05051 -:1091700030060C9C2F4DD832354CF01F00621890F1 -:10918000CF80089A049B2ECCF01F005F81D4FAC9CF -:10919000FFE450965083FAC5FFF84DC81AD5303A0F -:1091A000089B049C4DA65086F01F005AE0C8FFFCA7 -:1091B0000A9B5018310A109CF01F0053FACCFFD4C0 -:1091C000F01F0055E0C8FFC0502840BC6E29F2F8DF -:1091D0000150F808000881E86E2AF4FB0150F4F908 -:1091E0000154E06A851FEA1A51EBB739F20A0648C2 -:1091F000301AA599180981FAE1490048306A402CD3 -:10920000069BF01F0041E141004C2FFD6E06580601 -:10921000C2903005C0680C956C0C580CC58018962F -:10922000ECCBFFC0306A069CF01F003CCF516CD8DD -:109230000838C5505805EDF80000EFF80A00EDF8C1 -:109240001000EBF81A006E29F2F8010C0C38F9B88E -:109250000000F3F80A430C9B301A0E9CF01F0030FC -:109260006E066E1859F8E08A00155806C3200C9A4D -:1092700015088F086E28F0F90128ECCBFFC0720C9E -:1092800072F85D180C9B300A0E9CF01F00256E06CC -:109290005806C1F060EA6CE8103AC074C1A872E8E0 -:1092A0001438E089000612966C095809CF9181099B -:1092B0008D006E2C6E18400A401B2FF88F18F8F99D -:1092C00001280096720C72E85D18C54B6E06CCAB97 -:1092D00081068F000E9CF01F0013CECB089A049BD2 -:1092E000ECCCFFECF01F000DCA61310A400BECCC56 -:1092F000FFFCF01F000AC9F1009CF01F000BC3AB7C -:1093000080028F24800091DC8003DB248003DB9CBF -:109310008002B14480028F548000917C80028FF4DF -:1093200080029018800091E8EBCD4080189E78076D -:10933000580BC06116970E9CE3CD80806E075807CE -:10934000CFB06F381638CFB11AD814997C286EDA9E -:10935000F0C8FEC8EECBFFEC1C9CF01F00092FFDEF -:10936000580CF8071700EFF8100EF9F81A0EF80766 -:109370001710F9B80101F9F81A14CDEB8002914CDD -:10938000EBCD40FC1897300CEF4C010C1496129268 -:109390001094EEF50108580BC080169A189B0A9C91 -:1093A000F01F0016EF4C010C58065F13EEFC010C89 -:1093B000580C5F09F3E30008C16158045F18F3E833 -:1093C0000008C0A05803C0800C9A049B0A9CF01FA0 -:1093D000000CEF4C010C580CF9BC00FFF9BC01006B -:1093E000E3CD80FC300A0C9B0A9CF01F00045F094F -:1093F000EF4C010CCE3B000080028FB0800293281E -:109400000000000000000000EBCD4080580CC100BF -:10941000F8F901103008F94801105809C031C08826 -:109420000E997207129CF01F00045807CFA1E3CDDC -:1094300080800000800091E8EBCD40C01897580C68 -:10944000C250F8F801245808C210189B300A491C71 -:10945000F01F0011EEFC0124F01F00103006306AEE -:109460000C9BEF460124EECCFEE4F01F000DEEFC59 -:109470000114F01F000CEF460114EEFC0118580C0B -:10948000C050F01F0008EF460118E3CD80C0000077 -:109490008002996880027400800256EC800091D0AE -:1094A00080028174EBCD40F8205D189716951494D6 -:1094B000F8F601245806C0503FFC2FBDE3CD80F8DC -:1094C000F8FA012817D81AD817C91AD917B81AD80C -:1094D00017A91AD917981AD81789301B1AD9740CDA -:1094E0004C6AF01F0047EEC3FEC81AD60E984C59BE -:1094F000E06A88C7069BEEFC0140F01F0043EF4C7A -:1095000001142F9D580CC6F0EEFC0144580CC0E02D -:109510001AD6069B0E984BB9E06A88C7F01F003A2E -:10952000EF4C01182FFD580CC5E0340CF01F00372C -:109530001896C5B0EEF8012870099909EEF80128CF -:109540003019700A4B2899199928994A99374B185C -:10955000EEF9012C998899599967EEF8012871095B -:1095600099A9EEF80128711999B9F01F002BEF4C59 -:109570000124C3D0314A300B1A9CF01F0028EEF9A9 -:1095800001305804E9F8105FFBF81A03300650293F -:109590001A9A089B50165006EEFC0124F01F00207A -:1095A000306830593FFAEEFC0124149BF01F001D77 -:1095B000306A0A9BEECCFEE4F01F001B301BEEFC71 -:1095C0000124F01F001A301BEEFC0124F01F0018CC -:1095D0000C980E99497A0C9BEEFC0158F01F00166E -:1095E0000C9CC6CB3FECC6AB3FCCC68B0C9CF01F93 -:1095F00000133FDCC63B00008003DBA880023A1A60 -:1096000080029AF08002819C80028F2480029A243A -:10961000800299C48002609C800091D08002581C16 -:1096200080025564800091DC800261D4800261E890 -:109630008002996880027474800091E8EBCD40FC50 -:109640001897F8F801105808C6F0F8F801284CAA45 -:10965000700C301BF01F0049EEF801245808C0A020 -:10966000EEF801284C6A700C301BF01F0044E3CD6B -:1096700080FCEEF801605828CF41EEF80128700C0C -:1096800070295D19587CCED1EEF8016C5818CE9136 -:10969000EEF501105805C410EEC2FEB8EAC3FFFC97 -:1096A000300A069BEEFC0108F01F0036306A189461 -:1096B000069B049CF01F0034C0605804C3706948C6 -:1096C0005808C341EB3800091AD8EB3800081AD8FB -:1096D0000BF81AD80BE8EEF601281AD80BD91AD9CC -:1096E0000BC84AAA1AD8301B6C0CF01F00242FADEF -:1096F0005804C090EEF90128E8CAFFFC069B720CE2 -:1097000072E85D186A080A9CEF480110F01F0020FB -:10971000EEF501105805CC31EEF8012849DA700C4D -:10972000301BF01F0016E3CD80FCEB3800091AD87F -:10973000EB380008EEF601281AD80BF81AD80BE817 -:109740001AD80BD91AD90BC8493A1AD8301B6C0C45 -:10975000F01F000A6A08069BEEFA0134EF48011078 -:109760000E9CF01F000E0A9CF01F00092FADE3CDE8 -:1097700080FC00008003DBEC80023A1A8003DC14DA -:1097800080028FB08000917C8003DCA0800091E893 -:109790008003DCFC8003DC4C800294A4EBCD40F819 -:1097A0001695189414931297F8FB0134580BC05077 -:1097B000F6F801485808C5D15807C4C0E8F60110AA -:1097C0005806C4A03007C0680C976C0C580CC440F5 -:1097D0001896306A0A9BECCCFFFCF01F002CCF518E -:1097E0005807EDF81000EFF81A00EDF80000E9F85E -:1097F0000A44E04303E7E08A003BE8FA0110580A14 -:10980000C4006C3B74381638C065C3B8723816385B -:10981000C054129A74095809CFA18D0995061AD31C -:109820000BD80B8CE8F601281AD80BC91AD90BB83B -:109830001AD80BA91AD90B98495A1AD8301B1ADC16 -:109840006C0CF01F0014089CF01F00132F9DE3CD3B -:1098500080F8E3CD80F8310CF01F00101896C0F0AE -:10986000306A0A9BECCCFFFCF01F000D8D33CC6BF3 -:109870000A9AF8FC0108F01F000BC9FBE3CD80F841 -:109880008D0AE9460110CCCB8000917C8003DD2459 -:1098900080023A1A8002963C80028F24800091DC7C -:1098A00080029328EBCD40F8208D169414971895DC -:1098B000F8F801345808C470F01F0027EEC6000104 -:1098C000C426E068009C1A93EC080248E8080007E8 -:1098D000EAC4FEB8C0682016EEC7009C5806C3351F -:1098E000EAF901346EAA7258103ACF61724BEECC8D -:1098F000FFFAF01F001ACF01306A089B0E9CF01F80 -:109900000017CEA0EEFB0080580BCE601A9AEECC6A -:10991000FFA8F01F0013CE01189A0E9BEAFC010865 -:10992000F01F0010C13079485808CD604048EDB8AC -:109930000000CD213019E06A03E80E9B0A9CF01F5D -:10994000000ACCAB2F8DE3CD80F84048F3D8C0019E -:10995000CF3B0000800294088000917C8002BD68AB -:1099600080028FB08002979CEBCD4060F9380121D6 -:10997000F8F501281AD8F93901201AD9F938011F48 -:109980001AD8F939011E1AD9F938011D1AD8F9392E -:10999000011C489A1AD9302B18966A0CF01F000740 -:1099A0000C9CF01F00070C9CF01F00062FADE3CDB0 -:1099B000806000008003DD6C80023A1A80029438D7 -:1099C0008002963CEBCD40E0201D1897F8F801147A -:1099D0005808C0613FF60C9C2FFDE3CD80E0F8F8FD -:1099E0000128300C5C791ADC5C5B700C70D6FAC80C -:1099F000FFFC5D162FFD1895580CCED01899400825 -:109A0000E06A88C7EECBFEE4EEFC0114F01F000410 -:109A100018960A9CF01F0003CDFB000080028154C1 -:109A2000800091E8EBCD40E0208D14971896580BFC -:109A3000C2614A781AD8EEF60128EF3801211AD807 -:109A4000EF3901201AD9EF38011F1AD8EF39011E5A -:109A50001AD9EF38011D1AD8EF39011C49DA1AD981 -:109A6000302B6C0CF01F001C0E9CF01F001C0E9C79 -:109A7000F01F001B2F9D2F8DE3CD80E01A95320A39 -:109A80001A9BF01F0018C1211A9B320AEEF801340C -:109A90008F8A1AD8EEC9FEE4EEC8FEC8EEFC0108B3 -:109AA000F01F001149182FFDCC6B0C9C310A1A9B3A -:109AB000F01F000CC090EEF8012848DA700C302B33 -:109AC000F01F0005CB7B1A9B310ACE1B8003AD2C07 -:109AD0008003DE1880023A1A800294388002963C95 -:109AE000800257CC8002914C8003DDB48003DDCC32 -:109AF000EBCD40F81897169514931294F8F80124BA -:109B00005808C090F8C6FEE4306A48BB0C9CF01FB1 -:109B1000000BC031E3CD80F80C9C306A0A9BF01F2B -:109B20000007CF910899069A0A9BEEFC0124F01FCA -:109B30000004CF1B800294008000917C800261FCB5 -:109B4000EBCD40F8FACD01001293109418961697B9 -:109B5000149530081A99F2080B082FF8E048010014 -:109B6000CFB1300E1A9C1C9BEC0B0709198AFC0A1A -:109B700000081208FAC9FF00FDD8C0081C09F33814 -:109B8000FF0018C8F36AFF002FFBFAC8FF000E3B66 -:109B9000F9BB0200103CCE915805C4C0300E1C9792 -:109BA0001C9CF8C8FFFFFACAFF00F9D8C008180AC1 -:109BB000F53BFF00F60E0008FAC9FF00FDD8C0080B -:109BC0001C09F338FF00F568FF00F36BFF002FF767 -:109BD0000E35FE9BFFE85804C2A006963007F8C871 -:109BE000FFFFFACAFF00F9D8C008180AF539FF00CC -:109BF000F20E0008FACBFF00FDD8C0081C0BF738A6 -:109C0000FF00F568FF00F769FF00F538FF00100955 -:109C1000F3D9C008FACAFF00120A0D89F538FF000F -:109C200012580CC82FF70E34FE9BFFDB2C0DE3CD32 -:109C300080F80A9E0A9CCD0BD401129E16981899A2 -:109C40001C9B149C300AF01F0002D80280029B402B -:109C500000000000D431FACD0180340AFAC4FEC0FD -:109C6000510C089CF01F04BF688A516A689950A97A -:109C700068A8509868B65086684568216830416683 -:109C800050E5685250D2686A50CA687950B968087D -:109C90005158E3E8200868D50C580A586812F00AB1 -:109CA000150150F2F5E813FA517A68E868F640E5D4 -:109CB00040A9105940980C580A5802580059F00A07 -:109CC00015010459F5E813FAF20215014178E5E9A6 -:109CD00013F2519A518240C54089105968C80458FE -:109CE00040E20A58045840D6F00A15010C59F5E82C -:109CF00013FA005951AA419840B640D5416240CA72 -:109D0000F2071501EFE913F768D9105968E80E5802 -:109D1000045814580C590A59F0051501F20615019A -:109D2000EBE813F5EDE913F640B851C551B641A281 -:109D300068F940AA416504591459105941780C58E2 -:109D400040960C580A58F2021501F00A1501E5E98F -:109D500013F2F5E813FA41C851EA51D2408640A502 -:109D6000409A418910594198045868C204581458BF -:109D70000C590A59F0051501F2061501EBE813F527 -:109D8000EDE913F6408851F6520541E268DA68C5FC -:109D9000EFE220091459105941A80C5868E60C58F4 -:109DA0000A58F2021501F00A1501E5E913F2F5E887 -:109DB00013FA52124208522A41B968F668D568EA85 -:109DC000105941C804584172045814580C590A5982 -:109DD000F0051501F2061501EBE813F5EDE913F6B0 -:109DE0005245523668F84222418A417541D9045998 -:109DF0001459105941E80C5841960C580A58F2026F -:109E00001501F00A1501E5E913F2F5E813FA4248E5 -:109E1000418641A5525241F9105942080E59045841 -:109E20000C5941920A580458526AF20A1501F5E990 -:109E300013FAF0091501F3E813F9426841B641C578 -:109E400041A2527A52894219105942280C59145889 -:109E50000E590A580458F20A1501F5E913FAF009E7 -:109E60001501529AF3E813F9428852A941D641B537 -:109E700041E2423910594248145841CA0458145812 -:109E80000C5941FA0A59F0051501F2061501EBE8E3 -:109E900013F5EDE913F641D852C542A241E552B699 -:109EA00042590459145942CA105942680C58420682 -:109EB0000C580A5841F6F20E1501F0021501FDE9A1 -:109EC00013FEE5E813F2421942781458420A42257B -:109ED000125842890C581C59F00615010A59EDE830 -:109EE00013F61459F20A1501F5E913FA0C951493B7 -:109EF000423952E652FA4216424A52D24298045825 -:109F0000125842A90C580A5942261459F00A150150 -:109F1000F5E813FA0C59530A1496F2081501425A3F -:109F2000F1E913F84239109C531842B806581458F6 -:109F3000426A125842C90C591459424A1459F00A3B -:109F40001501F5E813FAF2081501F1E913F8109B71 -:109F500053384278FDEC20091059425810595019D5 -:109F60004289E5EA200812584269125840195008FF -:109F70004018A178F1E913F8400953484008A17846 -:109F8000F1E913F853584298EBEB20091059427845 -:109F9000105942A850194349E7E92009105942884D -:109FA000105940185009532A4019A179F3E813F9C0 -:109FB000400853694009A179F3E813F953794358EC -:109FC000EDE8200942B810594298105942C850197A -:109FD0004369F9E92009105942A81059401850095D -:109FE0004019A179F3E813F9400853894009A17990 -:109FF000F3E813F943785399F5E8200942B81C595E -:10A00000105950194389F7E92009129842C9045898 -:10A010001258401950084018A178F1E913F8400986 -:10A0200053A84008A178F1E913F8434953B843987D -:10A0300010590A591C59501943A94358125840192C -:10A04000065804584012A172E5E913F253C2F00217 -:10A050001501E5E813F243B84369105943780C59E8 -:10A060000A5943C50A581858065853D2F202150126 -:10A07000E5E913F2F0091501F3E813F943D853F9B0 -:10A08000438910594398145904580C5916581858B4 -:10A0900053E243F54342F20C1501F0061501F9E9CC -:10A0A00013FCEDE813F643A943B80A5918580459AC -:10A0B0001459435A145816585406436A4402F20677 -:10A0C0001501F0051501EDE913F6EBE813F543482A -:10A0D00054255416435543C904591459105943D8AB -:10A0E000F20215010C58E5E913F2437654320C588C -:10A0F0000A58F00A1501F5E813FA544A890A442966 -:10A1000043864365437A43E8125843F90C5804598F -:10A110000A584392F0061501EDE813F654568916D5 -:10A1200004591459F2051501EBE913F55465892515 -:10A13000444243AA4389F9E2200814581258F00215 -:10A140001501E5E813F25472439544090C5943B6DE -:10A1500089320C590A59F20A1501F5E913FA548AA1 -:10A16000894A43C6446943A5441812580C580A58F2 -:10A17000F0061501EDE813F6549643BA4429045944 -:10A1800043D2895604591459F2051501EBE913F528 -:10A1900054A58965448243EA43C944380458145895 -:10A1A0001258F0021501E5E813F254B243D54449C0 -:10A1B0000C5943F689720C5944080A59446A045AE6 -:10A1C000105A0C5AF2061501EDE913F654C6447BF9 -:10A1D00089860C5BF4061501EDEA13F654E6441586 -:10A1E00044A243E9445889A60A5B045818581258F7 -:10A1F000F0051501EBE813F554D58995185BF602C7 -:10A200001501E5EB13F254F289B2444A4489449BA8 -:10A210000A590C5B4405442644A804581458F3E634 -:10A22000200A0C580A5A5028E0657999EA155A8292 -:10A23000504A410644325116441AEE050009F7E22D -:10A2400020081458E062EBA1EA126ED95038507918 -:10A25000040E0C99506EE068BCDCEA188F1B0C9A57 -:10A26000100C2F8A505C512A1306511941087403AF -:10A27000720C2F485138410A2F0A514A700A41483E -:10A28000700941580A08F0090009EC081505F1E6C3 -:10A2900013B8F2080008F5E3200918691459F00909 -:10A2A000000740F80A08F00A0009F80B151EF7EC41 -:10A2B000122BF7E320080C680658F2080008EE0994 -:10A2C0001505F3E713B9EC0A151EF009000EF5E6C3 -:10A2D000122AFC091505F7EA2008F3EE13B9EFE896 -:10A2E000000816580A01EE0C151E0601F9E7122C9B -:10A2F0001001F9EA200812011C68E209150514583A -:10A30000F3E113B90A001600100040E812000A0831 -:10A31000F00A0009FC0B151EF7EE122BF7EC2008D3 -:10A3200002681858F2080008E0091505F3E013B9AF -:10A33000F009000640D80A08F00C0009E20A151ED0 -:10A34000F5E1122AF5EB200800681658F20800081B -:10A35000EC091505F3E613B9F009000E40C80A0828 -:10A36000F00B0009E00C151EF9E0122CF9EA2008A8 -:10A370000C681458F2080008FC091505F3EE13B92F -:10A38000F009000340B80A08F00A0009EC0B151E9A -:10A39000F7E6122BF7EC20081C681858F2080008A2 -:10A3A000E6091505F3E313B9F009000641680A0848 -:10A3B000F00C0009FC0A151EF5EE122AF5EB200838 -:10A3C00006681658F2080008EC091505F3E613B9FB -:10A3D000F009000E40A90A091609E60C151EF9E35A -:10A3E000122CF9EA20080C681458F2080008FC093D -:10A3F0001505F3EE13B9F009000340980A08F00AB6 -:10A400000009EC0B151EF7E6122BF7EC20081C6870 -:10A410001858F2080008E6091505F3E313B9F00926 -:10A42000000640890A091809FC0A151EF5EE122AD1 -:10A43000F5EB200806681658F2080008EC09150527 -:10A44000F3E613B9F009000E68C80A08F00B00091A -:10A45000E60C151EF9E3122CF9EA20080C681458D2 -:10A46000F2080008FC091505F3EE13B9F009000124 -:10A4700068D90A091409EC0B151EF7E6122BF7EC44 -:10A4800020081C681858F2080006E2091505F3E1D7 -:10A4900013B968E8EC0900030A08F00C0009FC0A8B -:10A4A000151EF5EE122AF5EB200802681658F20880 -:10A4B0000008E6091505F3E313B9F009000E68F981 -:10A4C0000A091609E20C151EF9E1122CF9EA200816 -:10A4D00006681458F208000BFC091505F3EE13B9D1 -:10A4E0004178F60900000A08F00A0009E606151E80 -:10A4F000EDE31226EDEC20081C681858F208000A5B -:10A50000E0091505F3E013B9F409000341890A09CC -:10A510001809FC0A151EF5EE122AF5E62008006857 -:10A520000C58F208000CE6091505F3E313B941983D -:10A53000F80900010A08F0060009E00B151EF7E013 -:10A54000122BF7EA200806681458F2080008E209FE -:10A550001505F3E113B94077F009000E1407FC0963 -:10A560001505E60A151EF3EE13B9F5E3122AF5EB0D -:10A57000200802681658EE080008F009000341A8F8 -:10A580000408F00B0009E20C151EF9E1122CF9EA9F -:10A5900020081C58F2080008E6091505F3E313B972 -:10A5A000F009000541B904091409FC0B151EF7EE6A -:10A5B000122BF7EC20080658F2080008EA091505E6 -:10A5C000F3E513B9F009000641C80408F00C0009CE -:10A5D000E60A151EF5E3122AF5EB20080A58F208E0 -:10A5E0000008EC091505F3E613B9F009000E41D98E -:10A5F00004091609EA0C151EF9E5122CF9EA2008DF -:10A600000C58F2080008FC091505F3EE13B9F0091F -:10A61000000541E80408F00A0009EC0B151EF7E6F6 -:10A62000122BF7EC20081C58F2080008EA0915055F -:10A63000F3E513B9F009000641F904091809FC0A09 -:10A64000151EF5EE122AF5EB20080A58F20800084C -:10A65000EC091505F3E613B9F009000E42080408E9 -:10A66000F00B0009EA0C151EF9E5122CF9EA200896 -:10A670000C58F2080008FC091505F3EE13B9F009AF -:10A680000005421904091409EC0B151EF7E6122BFC -:10A69000F7EC20081C58F2080008EA091505F3E554 -:10A6A00013B9F009000642280408F00C0009FC0A5E -:10A6B000151EF5EE122AF5EB20080A58F2080008DC -:10A6C000EC091505F3E613B9F009000E4239040947 -:10A6D0001609EA0C151EF9E5122CF9EA20080C58A7 -:10A6E000F2080008FC091505F3EE13B9F00900059E -:10A6F00042480408F00A0009EC0B151EF7E6122B7D -:10A70000F7EC20081C58F2080008EA091505F3E5E3 -:10A7100013B9F0090006425904091809FC0A151E6C -:10A72000F5EE122AF5EB20080A58F2080008EC09A9 -:10A730001505F3E613B9F009000E42680408F00BA2 -:10A740000009EA0C151EF9E5122CF9EA20080C584C -:10A75000F2080008FC091505F3EE13B9F00900032F -:10A76000427904091409EC0B151EF7E6122BF7ECDD -:10A7700020081C58F2080008E6091505F3E313B990 -:10A78000F0090005428904091809FC0A151EF5EEB6 -:10A79000122AF5EB20080658F2080008EA09150508 -:10A7A000F3E513B9F009000E429904091609E60C05 -:10A7B000151EF9E3122CF9EA20080A58F208000BDA -:10A7C000FC091505F3EE13B9F609000042A90409C6 -:10A7D0001409EA06151EEDE51226EDEC20081C58BA -:10A7E000F208000AE0091505F3E013B9F4090003C3 -:10A7F00042B9FC0A151E0409F5EE122A1809F5E6FD -:10A80000200800584065F208000C1405E6091505FB -:10A81000E00B151EF3E313B9F7E0122BF809000162 -:10A82000F7EA200AE2081505065AF1E113B842C911 -:10A8300004090C091409E60A151EF208000EF5E3D6 -:10A84000122AF5EB20080258EA080008E066BCDC92 -:10A85000EA168F1BFC091505F3EE13B9F009000089 -:10A8600042D80C08E20C151EF00B0002F9E1122C84 -:10A87000FDEC0008FDEC100914691049E00815050D -:10A88000F1E013B8E4090009F208000242E80C08FC -:10A89000FC0B151EF00A0005F7EE122BE1EB000889 -:10A8A000E1EB100918691049E4081505EA090009E7 -:10A8B000F1E213B8E00A151EF2080005F5E0122ACD -:10A8C00042F9E5EA00080C09F20C0003E5EA100978 -:10A8D00016691049EA081505F1E513B8E6090009FB -:10A8E000F208000343080C08E40C151EF00B0006E8 -:10A8F000F9E2122CEBEC0008EBEC1009146910499A -:10A90000E6081505EC090009F1E313B8EA0B151E7A -:10A91000F2080006F7E5122B4319E065BCDCEA15E6 -:10A920008F1BE7EB00080A09F20A000AE7EB10099F -:10A9300018691049EC081505F1E613B8F409000987 -:10A94000F208000243280A08E60A151EF00C000C63 -:10A95000F5E3122AEDEA0008EDEA1009166910493C -:10A96000E4081505F8090009F1E213B8EC0C151E0E -:10A97000F208000EF9E6122C4339E5EC00080A094A -:10A98000F20B000BE5EC100914691049FC081505E1 -:10A99000120BF1EE13B84349F6080005E40B151E3F -:10A9A000F7E2122BE062BCDCEA128F1BFDEB000821 -:10A9B0000409F20A000AFDEB100918691049EA08B7 -:10A9C0001505F1E513B8F4090009F208000643582B -:10A9D0000408FC0A151EF00C000CF5EE122AEBEA36 -:10A9E0000008EBEA100916691049EC081505F8098A -:10A9F0000009F1E613B8EA0C151EF208000EF9E59D -:10AA0000122C4369EDEC00080409F20B000BEDEC8D -:10AA1000100914691049FC081505F1EE13B8F60980 -:10AA20000009F208000543780408EC0B151EF00A33 -:10AA3000000AF7E6122BFDEB0008FDEB1009186980 -:10AA40001049EA081505F4090009F1E513B8FC0AF4 -:10AA5000151EF2080006F5EE122A4389EBEA0008FB -:10AA60000409F20C000CEBEA100916691049EC0815 -:10AA70001505F1E613B8F8090009F208000E43982D -:10AA80000408EA0C151EF00B000BF9E5122CEDEC96 -:10AA90000008EDEC100914691049FC081505F609C9 -:10AAA0000009F1EE13B8EC0B151EF2080005F7E6ED -:10AAB000122B43A9FDEB00080409F20A000AFDEB82 -:10AAC000100918691049EA081505F1E513B8F409E9 -:10AAD0000009F208000643B80408FC0A151EF00C31 -:10AAE000000CF5EE122AEBEA0008EBEA10091669F1 -:10AAF0001049EC081505F8090009F1E613B8EA0C4D -:10AB0000151EF208000EF9E5122C43C9EDEC000801 -:10AB10000409F20B000BEDEC100914691049FC0854 -:10AB20001505F1EE13B8F6090009F208000343D841 -:10AB30000408EC0B151EF00A000AF7E6122BFDEBD9 -:10AB40000008FDEB100918691049F4090009E6082E -:10AB50001505F1E313B8F208000543E90409FC0AFE -:10AB6000151EF20C000CF5EE122AE7EA0008E7EADF -:10AB7000100916691049F8090009EA081505F1E5F8 -:10AB800013B8F208000E43F90409E60C151EF20B87 -:10AB9000000BF9E3122CEBEC0008EBEC1009146944 -:10ABA00010494057FC0815051407F1EE13B8F609D3 -:10ABB000000AEA0B151EF7E5122BFDEB0009F4085D -:10ABC0000003FDEB1008E60A15051868F5E313BA53 -:10ABD0001248EE080009F20A00054409E06AC1D6ED -:10ABE000EA1ACA6214091809FC06151EEDEE1226AF -:10ABF000EDEB20080658F2080008EA091505F3E510 -:10AC000013B9F009000A4419E068C1D6EA18CA620B -:10AC100010091609E60C151EF9E3122CF9E62008B6 -:10AC20000A58F2080008F4091505F3EA13B9EA0B0B -:10AC3000151EF0090003F7E5122B4429E065C1D683 -:10AC4000EA15CA620A090C09F7EC20081458F20840 -:10AC50000008E6091505F3E313B9F009000EFC0935 -:10AC60001505F3EE13B9F406151EEDEA1226443A63 -:10AC7000EDEB20080A0A0658180A100A120A44497D -:10AC80000A091609E60C151EF9E3122CF9E620084C -:10AC90001C58F2080008F4091505F3EA13B9FC057D -:10ACA000151EF0090003EBEE1225E6091505EBEC85 -:10ACB0002008F3E313B91458E062C1D6EA12CA625D -:10ACC000445B040B0C0BF406151E100BEDEA122668 -:10ACD000120BEDE52008F60915050658F3EB13B93C -:10ACE000446A040A180A100A4478F409000E040899 -:10ACF000F0050009E60A151EF5E3122AF5E620081C -:10AD00001658F2080008FC091505F3EE13B9F0090E -:10AD10000005448904090C09F60C151EF9EB122CE8 -:10AD2000F9EA20081C58F2080008EA091505F3E5BD -:10AD300013B9F009000344980408F00A0009FC0B59 -:10AD4000151EF7EE122BF7EC20080A58F20800083F -:10AD5000E6091505F3E313B9F009000E44A9040947 -:10AD60001809EA06151EEDE51226EDEB2008065837 -:10AD7000F2080008FC091505F3EE13B9F009000507 -:10AD8000EA091505F3E513B944BAE60C151E040AE1 -:10AD9000F9E3122C160AF9E620081C58100A120AC8 -:10ADA00044C904090C09FC0B151EF7EE122BF7EC35 -:10ADB00020080A58F2080002F4091505F3EA13B94D -:10ADC00044D8E409000EE069C1D6EA19CA62120843 -:10ADD000EA06151EF00C0009EDE51226EDEB200841 -:10ADE0001458F2080008FC091505F3EE13B9F00930 -:10ADF000000CE068C1D6EA18CA62F405151EF8090D -:10AE00001505EBEA1225F3EC13B944EA100AEBE658 -:10AE10002008160A1C58100AFC02151EF40900012D -:10AE2000E5EE1222E06AC1D6EA1ACA62E5E5200818 -:10AE3000E20915051858F3E113B944FB140B404A15 -:10AE40000C0BA17A100B44B8F609000E4049F5E945 -:10AE500013FA14584459F1E9200B4438E069C1D67B -:10AE6000EA19CA6289CAF7E820074108F806151EE0 -:10AE7000120AEDEC1226700CEDE22008120C0258BA -:10AE8000FC091505F3EE13B90A0AE203151E100AB0 -:10AE9000E7E11223120AE7E62008E069C1D6EA19C1 -:10AEA000CA621C5840354030A170E1E513F0E0095A -:10AEB000000BF4091505040BF3EA13B9100B402835 -:10AEC0004021120BE065C1D6EA15CA62A171E3E820 -:10AED00013F1E2050008F0060009FC02151EE5EE7C -:10AEE0001222E5E320081458F2080008F6091505B7 -:10AEF000F3EB13B9F406151EF009000EEDEA122665 -:10AF0000EE051501410AEBE713F5EDE220080A0C06 -:10AF10001658060CFC091505100CF3EE13B9120CAB -:10AF2000950C411972081C089308F609151E412A50 -:10AF3000F3EB1229740812089508413870090C09BE -:10AF4000910989D089E189F541466C080408089C7B -:10AF50008D08340A300BF01F00042A0DD83200008F -:10AF6000800091DC800091D0EBCD40F878581494AB -:10AF7000A37AF40800099959123AF9F98006F9F907 -:10AF8000B006F7B90BFFF9F9BA06FDD8C066E808B4 -:10AF9000161DF2080008996818951693E80E000926 -:10AFA000E049003FE08B000F3006FCCCFFE4E606F2 -:10AFB000000BEA0C000CE806010AF01F0014E3CDB8 -:10AFC00080F8FC061140FCCCFFE40C9AEA0C000C63 -:10AFD000F01F000EEACBFFE40A9CF01F000DECC846 -:10AFE000FFC11034E088000FE60600070E9B0A9CA4 -:10AFF0002C07F01F00072C06ECC8FFC11034FE9B85 -:10B00000FFF7300ECD3B0000800091DC80029C54A5 -:10B01000D421202D16961895300B1A94583BF9B868 -:10B020000B14F9B80818F60911FFEC08030AF3D954 -:10B03000C002A379F4090A4AE80B0B0A2FFB588BCC -:10B04000CEE1301A49EBC038301A49EB0C9CF01FA6 -:10B05000001E6C58E21801F8E04801C0CF61308A48 -:10B060001A9B0C9CF01F00183007EE081602EE0920 -:10B0700011FFEC08032AF3D9C002A379F4090A4AA4 -:10B08000EA070B0A2FF75947CF11300B340AECCCE3 -:10B09000FFE4F01F000E0E9A300B0C9CF01F000B0B -:10B0A000ECCCFFEC308A300BF01F00081A9C308A81 -:10B0B000300BF01F00062FEDD82200008003DE5871 -:10B0C00080029C508002AF68800091D0EBCD40FCA4 -:10B0D000217DE0682301EA186745E06EAB89EA1E2E -:10B0E000EFCD5008E068DCFEEA1898BA3007501E31 -:10B0F0005028E06E5476EA1E1032E068E1F0EA185B -:10B10000C3D250675057503E504818931292580C73 -:10B11000C140149416951A962FF7090A0B0B1A9C26 -:10B12000F01F00070E33FE9BFFF91A9B049CF01FD3 -:10B1300000052E9DE3CD80FC1A96CF8B8002AF6870 -:10B140008002B010D431FACD008C501C500B1493F7 -:10B150001292109142C0585AE08B0056E04B0040CA -:10B16000E08B0054FAC4FFF8340A300B089CF01F3F -:10B17000002E400A401B089C0896F01F002CFAC5C0 -:10B18000FFB808970D88EC1800360CC80A36CFB106 -:10B190003408518451285803C110FACCFF9CFACBD3 -:10B1A000FFB4300AE60E1502E40A030818A8E20A02 -:10B1B000030916A92FCA1C3ACF81E6CCFFFF0099DC -:10B1C0000A9AFAC3FFA0069BF01F0019340A300B3D -:10B1D000089CF01F0015400A401B089CF01F00133C -:10B1E0000F88EC18005C0EC80C37CFB1314C340816 -:10B1F000513C5184519000990A9A069B5128302C59 -:10B20000F01F000B2DDDD832FAC6FF881A9A0C9970 -:10B21000FACBFFFC301CF01F0006314850165008D6 -:10B22000CA2B0000800091D0800091DC8002B0CC5D -:10B23000D401202D501A5009301A1AD8FAC9FFF833 -:10B24000FAC8FFFCF01F00032FFD2FEDD80200000D -:10B250008002B144D43121AD5009502B501A1892BC -:10B2600042395809C6D0504850593008FAC7FFAC87 -:10B270005038FAC3FFD4FAC0FFC0FAC4FFE8049CF8 -:10B28000F01F003140382FF850381AD34038518819 -:10B2900040285168FAC8FF98519830484046517884 -:10B2A000B986FB380013FAC9FFA0FB68006B189B36 -:10B2B0000E98FB66006840454046302A1891B185DB -:10B2C000049CFB650069A986FB66006AF01F001FED -:10B2D000314A069B009CF01F001E2FFD40085818A5 -:10B2E000E08A001C301608983149069A029B049C9B -:10B2F000F01F0018314A089B069CF01F0015009AA9 -:10B30000089B17381589125814C80E3ACFB12FF67A -:10B3100040080C38FE99FFE940560C985946F9B69A -:10B320000B140C180C9A5058009B404CF01F00084E -:10B3300040585808C05040480C085048CA1B2E6D51 -:10B34000D8320000800091B88002B144800091DCC6 -:10B350008002B230D43120EDFACEFFA4109530082F -:10B3600018927C14149716911296FB680036FB68AD -:10B3700000377C00149CF01F00275804C3003018CD -:10B38000FAC9FFC9508850685097FAC8FFCA505C84 -:10B3900050B6507550A950C85934E0880023300782 -:10B3A000FAC3FFECFAC6FFDCC088FB680036E8078A -:10B3B00001055935E088001CE00700080C991AD8EF -:10B3C0002EC70698304A029B049CF01F00132FFDE5 -:10B3D000FB3800362FF80E34FE9BFFE92F2DD832B4 -:10B3E00008953007FAC3FFECFAC6FFDC0C99069803 -:10B3F0001A96049C1AD6029B304AF01F00070A9A3C -:10B400000C9BE007000CF01F00052FFD2F2DD832FC -:10B41000800091B88002B144800091DC00000000FF -:10B4200000000000EBCD4080129E1097584CC26087 -:10B43000E08A0013588CC140590CC101590B5F18A8 -:10B4400058FA5FA91248C0A130689D083039300C05 -:10B450008F09E3CD8080582CC1E0E3CFC080E04B62 -:10B4600000205F1859FA5FA91248CF8130689D0803 -:10B470003029300C8F09E3CD808058DB5F1858CA23 -:10B480005FA91248CEB130099D093018129C8F086F -:10B49000E3CD8080585B5F18584A5FA91248CF40BF -:10B4A000E3CFC080580C5E0CF8F8010C5808F9B8CE -:10B4B0000100F9F81A435EFC580CF9FB1A4C5EFCCB -:10B4C000580CF9FA1A51F9FB1A505EFC580CF9FBAA -:10B4D0001A415EFC580CC080586BE08800035EFD8A -:10B4E0004928F00B032F5EFEF94A016C5EFDF94A14 -:10B4F00001685EFDF94A01645EFDF94A01605EFD86 -:10B50000580ACF20F94A01585EFDF4C80001E0480E -:10B510000063FE9BFFEAF94A01545EFD580ACE40E3 -:10B52000F94A01505EFD00008003DE5CEBCD40E097 -:10B53000189716951496580CC130F8FC0180F01F2E -:10B54000001158055F0858065F091248C0B030085E -:10B55000EF480188EF480180109CE3CD80E0E3CF05 -:10B56000C0E00C9CF01F0008EF4C0180CF900A9BBC -:10B570000C9AF01F0006300CEF460188E3CD80E006 -:10B58000800091E880009200800091DCEBCD40E0EB -:10B59000189716951496580CC130F8FC017CF01FD2 -:10B5A000001158055F0858065F091248C0B03008FE -:10B5B000EF480184EF48017C109CE3CD80E0E3CFAD -:10B5C000C0E00C9CF01F0008EF4C017CCF900A9B60 -:10B5D0000C9AF01F0006300CEF460184E3CD80E0AA -:10B5E000800091E880009200800091DCEBCD40E08B -:10B5F000189716951496580CC130F8FC0174F01F7A -:10B60000001158055F0858065F091248C0B030089D -:10B61000EF480178EF480174109CE3CD80E0E3CF60 -:10B62000C0E00C9CF01F0008EF4C0174CF900A9B07 -:10B630000C9AF01F0006300CEF460178E3CD80E055 -:10B64000800091E880009200800091DCEBCD40FE0C -:10B65000189716961493580CC031E3CFC0FE7409A6 -:10B66000F8F801605828C5E0F8F1016CF8F50168B8 -:10B67000F8F201645979FE98FFF23DD8304AB68855 -:10B68000ECCCFFFEFEFB0238F01F008E30083019B4 -:10B69000ACF8ACE9ECC4FFF85905E08000A158858E -:10B6A000E08000AA5845E08100BC0A9AFEFB02181F -:10B6B000089CF01F00843018A8C8E8C9FFFB3008B8 -:10B6C000B288E8C5FFFA5902E08000905882E08114 -:10B6D000009F304A4FDB0A9CF01F007A3018AAC83E -:10B6E000EAC9FFFB3008B2882FA55811E080008A14 -:10B6F0005821E08100A5304A4F5B0A9CF01F007181 -:10B70000EAC9FFFCEC0811FE1208AC98F206010C25 -:10B71000CA56870CEEF501745805E08000C1E3CFEE -:10B7200080FEF8F8010CF8F2016C5808F9B801280D -:10B73000F9B80016F8FA0168F8F401641039C8E3A2 -:10B7400033083009B688B6B93018B6A8F6C5FFFC7C -:10B75000590AC6F0588AE0800082584AE081009772 -:10B760004DCB0A9CF01F00573018AAC8EAC9FFFB4E -:10B770003008B2882FA55904C6B05884E081007EF5 -:10B78000304A4D5B0A9CF01F004F3018AAC8EAC926 -:10B79000FFFB3008B2882FA55812C661304A4CFB17 -:10B7A0000A9CF01F0048EAC8FFFC300AB08AB09A31 -:10B7B000EAC9FFFAEEF8010C5808CA503018B288EE -:10B7C000EAC9FFF9EACCFFF8B28A310AEEFB010CB4 -:10B7D0002FCBF01F003CEAC9FFE8C95B304A4C0B95 -:10B7E000089CF01F0038C68B304A4BDB0A9CF01FC8 -:10B7F0000035C75B304A4B5B089CF01F0032C5CB5D -:10B80000304A4B8B0A9CF01F002FC7BB5812FE9189 -:10B81000FF26304A4B4B0A9CF01F002AC60B5825C6 -:10B82000FE91FF1D304A4B1B089CF01F0026C44BA5 -:10B83000304A4AFB0A9CF01F0023C97B5901FE9144 -:10B84000FF0E304A4ABB0A9CF01F001EC5AB304AAF -:10B850004A7B0A9CF01F001BC99B304A49EB0A9C9B -:10B86000F01F0018C82B5822FE91FEF9304A4A2BCF -:10B870000A9CF01F0014C98B5814FE91FEF0304A48 -:10B8800049EB0A9CF01F000FC81B582AFE91FEE7E7 -:10B89000304A49BB0A9CF01F000BC67BF01F001901 -:10B8A000EF4C0174FE90FEDB0C9B660AF01F000556 -:10B8B00066080A9CEF480178E3CD80FE8003DE989D -:10B8C000800091DC8003DEA08003DE8C8003DE7CC0 -:10B8D0008003DE888003DE808003E1EC8003E1E406 -:10B8E0008003DE9C8003DEA48003DE948003DEB44C -:10B8F0008003DEB08003E1E88003DEA88003DE84FD -:10B9000080009200D401580CC060F8CCFEC8306AA8 -:10B91000F01F0002D8020000800091DCD4011898CA -:10B92000580CC040918AF01F0002D802800091DCC0 -:10B93000EBCD40F8208D189416971493F6C6FFF0BF -:10B94000F8F501685885C2E0E8F801645818C1604C -:10B950006EC8E8F901286E0B1AD81AD66E2849CAA3 -:10B960001AD81AD3720C72666E186E395D162FCD06 -:10B97000580CC1552F8DE3CF80F86EC9E8FA012825 -:10B980006E0B1AD91AD66E291AD91AD3740C74668A -:10B990006E3948FA5D162FCD580CCED42F8DE3CFDB -:10B9A000C0F80C9B310A1A9CF01F000A0A9AEECBD1 -:10B9B000FFD8FACCFFF0F01F00070A9AEECBFFE0A9 -:10B9C000FACCFFE81A96F01F0003CBFB80039C38EB -:10B9D000800091DCD401580CC070F94B0134F8FCA4 -:10B9E0000108F01F0002D80280028F64D401580CB5 -:10B9F000C110F8F8010C5808C08070DAF0CBFFECE9 -:10BA0000998AF01F0005D802320A109B998AF01F0C -:10BA10000003D802800091DC800091D0EBCD408003 -:10BA20001897F01F000AEEF801287029700C5D19B4 -:10BA3000585CEFF80057F9B90001F1D9E008EFF8C8 -:10BA40000A57E3CD8080000080029438EBCD40C0DF -:10BA500018971696580CC190306AF8CCFEB8F01FB3 -:10BA6000000F308A300BEECCFF10F01F000D3008B5 -:10BA700030190C9BEF4800F8EF4900EC306AEECC2F -:10BA8000FEE4F01F0008C030E3CD80C00E9CF01F24 -:10BA90000006E3CD80C00000800091DC800091D0E2 -:10BAA0008000917C80029438EBCD40C016971496AC -:10BAB000F6F8010C1838C0D0768A78D8103AC03021 -:10BAC000E3CD80C0F8CBFFEC0E9CF01F000ECF91B1 -:10BAD0003008EF48010C5806CF41320A0C9B0E9CEF -:10BAE000F01F0009EEF90128301B720C72485D1836 -:10BAF000EEF801280C9A700C70390C9B5D19CE1B66 -:10BB00008000917C800091D0D431189716941493C2 -:10BB1000300B324A069CEE040005F01F0052EEC6C0 -:10BB2000FFFF0C35E0880034E8C800013DD2EE0884 -:10BB30000004C0D8E4091800C2B01499F2C8FFFE8E -:10BB40001007EEC6FFFF0C35E08800220F89E409DC -:10BB50001800C4B10837C1B00D8A580AC180F4C8B2 -:10BB6000FFFEEE0800081035C4733308F009180012 -:10BB7000CE2187270D882FE887380D89F2C8FFFE70 -:10BB80001007EEC6FFFF0C35FE9BFFE2D83A580ABD -:10BB9000CFE03058F00A1800E08B003FEEC8FFFB02 -:10BBA0001035E08B002B14993061E2091800FE98E3 -:10BBB000FFC7EEC0FFFE304A4ABB009CF01F002BBF -:10BBC000C3900D89E2091800FE98FFBA009C304A24 -:10BBD0004A7BF01F0026C071EEC9FFFA87790D88F5 -:10BBE000204887880D89CABB0D8AF4C8FFFEEE087D -:10BBF00000081035CBB2DC3A14993138F00A18003D -:10BC0000FE98FFD4304A49BBEECCFFFEF01F001770 -:10BC1000C1900D89CCAB304A497BEECCFFFEF01FC2 -:10BC20000013C0610FE93018F0091800C1000D8A37 -:10BC3000CB6BEEC9FFFA87590D88204887680D89BC -:10BC4000C7EBEEC8FFFA87480D89C79B0FF8F808C5 -:10BC50001800CEE187070D882FE887180D89C6FBED -:10BC6000800091D08003DE788000917C8003DEAC80 -:10BC70008003DE908003DE98EBCD4080304A189739 -:10BC8000496BF01F0017C031E3CF9080304A495B09 -:10BC90000E9CF01F0013C041302CE3CD8080304A51 -:10BCA000491B0E9CF01F000EC041308CE3CD8080FC -:10BCB000304A48EB0E9CF01F000AC041310CE3CD26 -:10BCC00080800E9C304A48ABF01F0005F9BC000490 -:10BCD000F9BC0100E3CD80808003DEA88000917C68 -:10BCE0008003DE848003DE808003DEB48003DE8890 -:10BCF000EBCD4080304A1897496BF01F0017C031D8 -:10BD0000E3CF9080304A495B0E9CF01F0013C04186 -:10BD1000302CE3CD8080304A491B0E9CF01F000E72 -:10BD2000C041308CE3CD8080304A48EB0E9CF01F40 -:10BD3000000AC041310CE3CD80800E9C304A48ABF4 -:10BD4000F01F0005F9BC0004F9BC0100E3CD8080C0 -:10BD50008003DEA48000917C8003DE948003DE8C6F -:10BD60008003E1E48003DEA0EBCD40FC189416963E -:10BD70001497580BC160198B3308F00B1800C1D011 -:10BD80003008301595789548956895589505308810 -:10BD90009535952895185876E08B009BE3CFC0FC2D -:10BDA000301830898F7B8F4B8F6B8F5B9538950860 -:10BDB00095299519E3CFC0FC300531099545956566 -:10BDC000955595759529951930289508301A8F3A0B -:10BDD0005836FE98FFE51988F6081800CE01199923 -:10BDE000ECC800021039CDB119B919A8F1E91088D1 -:10BDF000F4081900CD4120465836E08A01112FC4BD -:10BE0000089CF01F008A8F2C20465816E08A010BF0 -:10BE10008F15E8CCFFFC19991988F1E91082CBF055 -:10BE2000ECC30002E40815021033CB95F8C4FFFE02 -:10BE300030056E16089CF01F007D0C4C8F1C2FC423 -:10BE400020432FF50A32FE99FFF65813E08A00E5E9 -:10BE5000300A8F3A09990988F1E91082CA00202333 -:10BE6000E40815021033C9B5E8C6FFFE14956E3418 -:10BE7000304A4EFB0C9CF01F006FE08100C430186C -:10BE800008488F382FC620432FF50A32FE99FFF15C -:10BE90005813E08A00940D990D88F1E910888F48B5 -:10BEA000E6CB0002581BE08A008AECCCFFFE199812 -:10BEB0001989F3E810898F59F6C80002A56912386C -:10BEC000C7F5F8C8FFFE300C8F68E3CD80FC1989F8 -:10BED0003DD8F0091800FE91FF631999ECC80002E3 -:10BEE0001039FE91FF5D304A4D3B2FECF01F0051A1 -:10BEF0001893FE91FF5509F909E8F1E91088EA085D -:10BF00001900FE91FF4DECCA0008583AE08A005E25 -:10BF1000E8CCFFF8F01F00498F2CECCA000C0A3A5D -:10BF2000E08A00578F13E8CCFFF419991988F1E9DA -:10BF30001082FE90FF35F4C30002E40815021033AE -:10BF4000FE95FF2EF8C4FFFE30056E16089CF01F0C -:10BF5000003B0C4C8F1C2FC420432FF50A32FE9956 -:10BF6000FFF65813E08A0042300A8F3A099909888F -:10BF7000F1E91082FE90FF142023E408150210332B -:10BF8000FE95FF0EE8C6FFFE14956E340C9C304AF9 -:10BF90004ABBF01F0028C211301808488F382FC63E -:10BFA00020432FF50A32FE99FFF25813E08A00145D -:10BFB0000D880D99F1E910888F48E3CF80FC300897 -:10BFC0008F58109CE3CD80FC580AFE99FEE9581A60 -:10BFD000FE90FEE6E3CF80FC304A49AB0C9CF01F9C -:10BFE0000015C0613028CDAB5813CF51CD8A0C9CC1 -:10BFF000304A495BF01F000FF9B80010F9B8010092 -:10C00000CCDB0C9C304A491BF01F000AF9B8000237 -:10C01000F9B80100C36B5813CD11CC1A5806FE991C -:10C02000FEBF5816CCB1CBBA8002BC788003E1ECDD -:10C030008000917C8003DE988002BCF08003DE9C4F -:10C040008003DE7C8003DEB08003E1E8D401580C7D -:10C05000C021DC0AF8F801745808CFC0169AF8FB22 -:10C060000178109CF01F0004F9BC01FEF9BC00002F -:10C07000D80200008002BD68EBCD40801897580CB4 -:10C08000C1D0F8FC0108F01F000F300A0E9B48ECED -:10C09000F01F000EEEFC0174F01F000DEEFC017CA1 -:10C0A000F01F000BEEFC0180F01F0009EEFC0128E0 -:10C0B000F01F00070E9CF01F0006E3CD80800000FB -:10C0C000800290A88002C0D080027400800091E8B5 -:10C0D000D401F01F0002D8028002963CEBCD40C094 -:10C0E0001896E06C018CF01F00131897C19030185F -:10C0F000E069A8C0F94800ECF9490150346833C937 -:10C10000F9480154F9460128F9490158189A189B31 -:10C11000489CF01F000AEF4C01081898C0400E9C84 -:10C12000E3CD80C00E9C1097F01F0005CF9B000050 -:10C1300080028F248002BAA880028F8C800091E850 -:10C14000EBCD4060149E1DD81896158CECF5012897 -:10C150001AD81DC91AD91DB81AD81DA91AD91D98DF -:10C1600048CA1AD81ADC1ADB303B6A0CF01F000AE6 -:10C17000ECF90128311B720C72585D18ECF901289A -:10C18000300A720C7238149B5D182F9DE3CD8060CD -:10C190008003DF4880023A1AEBCD40C0205D109743 -:10C1A000581BC130582BC0402FBDE3CD80C0310B90 -:10C1B0001A98F01F00091A961A9B0E9C310AF01F5C -:10C1C00000072FBDE3CD80C0310BF01F00052FBD50 -:10C1D000E3CD80C08002B230800091DC80028EF816 -:10C1E000D431201DFACEFFD81894500B149012961B -:10C1F00010917C237C077C12306A49AB129CF01FA3 -:10C20000001AC1D05803C0800698009B400C0499C6 -:10C210000E9AF01F00160C9BE8F501280498F5D142 -:10C22000C0100E996A0C6AA65D16E8FC0104F01FA6 -:10C2300000100E9CF01F000F2FFDD832E8C5FEB88D -:10C24000306A488B0A9CF01F0008CDD1E8F801281D -:10C250000A9B700C70995D19EA061740CD4B0000DF -:10C260008002B41C8000917C8002C19880025582BB -:10C27000800091E8EBCD40E0189716961495F8F8F9 -:10C2800001685848E0800081E08A00495888C780EA -:10C290005908C4F04C19EEF801645848C480584855 -:10C2A000E089004A5818C6605828C6604BB81AD9A9 -:10C2B0001AD8EEFA01280DD81AD80DC91AD90DB816 -:10C2C0001AD80DA91AD90D981AD80D89302B1AD958 -:10C2D000740C4B3AF01F0033EEF801282F8D700BD1 -:10C2E000707C300AF01F0030EEF90128720C72C821 -:10C2F0005D18EEF90128307B720C72185D18580534 -:10C30000C201EEFC010C580CC07079485808F9B80D -:10C310000100F9F81A14E3CD80E05818C33058280A -:10C32000CBA14A29EEF801645848CBA14A08CC0BAE -:10C330004A09CB2B5888C2205908CB9149D8CB8BBE -:10C34000EEF801280C9B700C71263019303A5D16FE -:10C35000301BEEFC0104F01F0018EEF8016C5828A9 -:10C36000C15030080E99495A109B301CF01F001420 -:10C37000CC9B4948C9DB48D8C9BB4938C99B492926 -:10C38000C8BB4909C89B48A9C87B301BEEFC010407 -:10C39000F01F000ECE7B00008003C6288003DF74F0 -:10C3A00080023A1A800274008003DF088003DF10E5 -:10C3B00080039A74800261D48002C0D080027474B9 -:10C3C0008003C8E480039A6C800261A4D431FACD62 -:10C3D00000DC1897169314951296E0490062E08BE2 -:10C3E000000630060C9C2C9DD832129CF01F034492 -:10C3F0001892E08000D60C9A0A9BF01F034205A910 -:10C4000005B8F1E910880599F5D8B0103038F00971 -:10C410001800C0603006049CF01F033BCE4BECC8F4 -:10C420000004EBDAC01030090A385F3AE045005EDC -:10C430005F88F5E8100CF20C1800CED13FE8E4C19B -:10C44000FFFC038AF00A18005F1B3028F00A18006E -:10C450005F19F7E90004F8041800CDD1EEFC0104DF -:10C46000F01F032A039903A8F1E91088EDD8B01052 -:10C47000FDD6C003506E1C9930182019F009190020 -:10C48000E08800043FF6CC8BEEF8016459085F0A9F -:10C490003028F00E19005F19126AE80A1800C080EF -:10C4A000EEF801685908CEF0EDB60003CEC0EEF804 -:10C4B00000F85808E08100ABE1D6C0100098E218FF -:10C4C0002080CE10009AE21A0800502ACDC12FC554 -:10C4D00000995055E21901005039C641405AE339DC -:10C4E000005DE338005E263AF1E91088F7D8B01015 -:10C4F000E9DBC010083AE0830598EEF9016058299D -:10C50000E0800550EDB00003E0810333E21000301D -:10C51000CBA140395809E08001CAEEF90128305B0F -:10C52000720C72185D18039903A8F1E91088E339B9 -:10C53000005DEBD8B010E33B005EFACAFF50F7E9AC -:10C54000108BE2CCFFA1F01F02F243185808C04044 -:10C55000EDB5000CC231EEC3FEB8EEF60134EEF8D4 -:10C56000017C5808E08004E742C95809E08004C80B -:10C57000EEFB017C580BC79042DAEEF80184103ACA -:10C58000C70042FE42EC1ADE14981ADC069A0E9C92 -:10C59000FEFB0B80F01F02E02FED3016C3DB3FF6F1 -:10C5A000C22BE2C6FFB3FAC4FF84310A0C9B089C7D -:10C5B000F01F02D440685C785048EEF800A8580894 -:10C5C000C301EEF800A45808FE90FF5E310A300B5C -:10C5D0000C9CF01F02D2049A404BEECCFFDC0C986E -:10C5E0004059F01F02CF0C9B089C310AF01F02CD6E -:10C5F000FE91FF4A308AE2CBFFFBEECCFF10F01F2A -:10C6000002C13018EF4800F8C6AB308AEECBFF10FD -:10C61000E2CCFFFBF01F02C3FE99FF503FF6CFCAEA -:10C62000402B310A0C9CF01F02BD049A404B0C9821 -:10C630004059EEC5FF9C0A9CF01F02B9310A0C9BC1 -:10C64000089CF01F02B8CBE13018EF4C00A80A9B01 -:10C65000EF4800A4340AEECCFFDCF01F02AACCBBEA -:10C66000129CF01F02B0C10142EC580CC160EEFBFD -:10C670000180580BC12042FEEEF80188103EC090A8 -:10C6800042C942DAC81B42FE42C942EC42DAC7CB79 -:10C690001C9AF01F02A4CF81EEF801605818E080C8 -:10C6A00000E6320AE2CBFFF3EECCFF34F01F029D2E -:10C6B000FE91FF7503B903C8F1E91088F3D8B010F3 -:10C6C000EEF801645888E08000CC5908E08000CA88 -:10C6D000EEF80128FAC9FF2C1AD970D6700C35F97A -:10C6E000FAC8FF24300A303B5D162FFD1896580C0F -:10C6F000FE90FF55EEF80160E06900FE5828F20850 -:10C700001710435AB48840680A99E2190200F1E907 -:10C7100010094358E8190108F20B1608B09B435A58 -:10C72000B4A9EEF801605828E0810093300843591D -:10C73000B2B8435AB4C8435C308AE2CBFFFB2FBC8B -:10C74000F01F02704358300AF16A005D4359F36AE2 -:10C75000005E4358406A2B381AD84379E068888EC7 -:10C760001AD9EECBFFDC1AD606990E9CF01F026E8A -:10C770003018EF4800EC5C752FDDEDB50006C0F118 -:10C78000FEFA09A8F4E80000FAE9007CEEF801647A -:10C790005888E08003F65908E08003D90A90E21037 -:10C7A0000200C0E0EEFA01283019740C069B7528CF -:10C7B000129A5D18301BEEFC0104F01F025DEEF8CA -:10C7C0000128306B700C70195D1943165806FE90E5 -:10C7D000FEE64328FAC4FF84F0C50002334A300B5A -:10C7E000089CF01F024EE0450020FE9BFED80D88FD -:10C7F000F1D8C00252280D89F3D9C041C050EEF8DB -:10C80000016458185F095209ECCBFFFE0A9AFACC72 -:10C81000FF74F01F023C0A9A52B50898FAC9FF7CCF -:10C820000A9BEEFC0168F01F0243FE91FEB8E2CACB -:10C83000FFC3089B0E9CF01F0240FE91FEB0009AC1 -:10C84000069B0E9C3016F01F023DFE9FFDE6435CEA -:10C85000302AE2CBFFFD2FDCF01F022AC6DB3208B4 -:10C86000F0091900FE91FE9BC34B42EB580BFE9062 -:10C87000FF1A58065F1AEEF9018058095F0814681C -:10C88000FE90FF116D68EDB80001FE91FF0C42F8BB -:10C89000069A1AD80E9C1ADBFEFB08A442F842E95D -:10C8A000F01F021D2FEDFE9FFE7AEEF90128720C9B -:10C8B00072885D18FE90FE73EEF80128305B700CF4 -:10C8C00070195D19403BFAC6FF50324A0C9CF01FAC -:10C8D0000213EEF801605828C0C1E338005DE33B65 -:10C8E000005E0C9AF7E8108BE2CCFFA1F01F020863 -:10C8F00043065806C0E0EEFC010C580CE08003D162 -:10C90000F8CBFFFC310A0C9CF01F0206E08003C04C -:10C910003005EEF8016C5818E08000D45805C0606E -:10C92000EEFB016C581BE080029BEEF800EC58080F -:10C93000E08102B5EEC8FF545008EECAFEB8EEC959 -:10C94000FF9CE2C8FFF3508AEEC6FEC850A950987B -:10C95000306A6E85408B0C9CF01F01F2E08500FB75 -:10C96000306A408BFAC0FFD0009CF01F01E60C9BA0 -:10C97000306AFACCFFCAF01F01E3320A409B400C38 -:10C98000F01F01E8E08500D0320A409BFACCFFC4DA -:10C99000F01F01DC320A400BFACCFFA4F01F01D9D2 -:10C9A000340E1ADE40BE00991ADE34C80A9BFEFA25 -:10C9B00007920E9CF01F01E4EEC5FF6CFAC3FF7CEA -:10C9C0000A9B308A069CF01F01CF0A9CEEC6FF64CA -:10C9D000308A0C9BF01F01CB069B0C9C308AF01F09 -:10C9E00001C93018EF4800A82FEDEEF50178EEF000 -:10C9F00001745800FE90FDD3EEFA0128FAC8FF2812 -:10CA0000E9D5B0101AD8E8C9FFA1740C74D6FAC8D9 -:10CA1000FF285C79300A303B5D162FFD1893580CC7 -:10CA2000FE90FDBDEEF80160E06900FE5828F208B6 -:10CA30001710436AB48843683019B0994066436858 -:10CA40005C760C9AA3BAB0AAEEF901605829C631F7 -:10CA500030084369B2B8436AB4C8436CE2CBFFFB09 -:10CA6000308A2FBCF01F01A74368F3D4C108F169D5 -:10CA7000005D43680A9AF165005E009B436C2A1CC6 -:10CA8000F01F01A0400B436C320A2F3CF01F019DA8 -:10CA9000408940AB43682B381AD8436C0C9A1ADC97 -:10CAA000E068888E1AD30E9CF01F019F40CBEECC1D -:10CAB000FF34320A3016F01F01932FDDFE9FFCADCC -:10CAC000EEFC0104580CFE90FF2B320A0E9BF01F67 -:10CAD000019FC361320A8F8AEEF8013406991AD891 -:10CAE0000E9BEEC8FEC8EEFC0108F01F0199580627 -:10CAF0005F1AEEF9010C2FFD58095F081468FE90CB -:10CB0000FF0F0C9A069BEEFC0108F01F0192FE91AC -:10CB1000FF0EC05B436C302AE2CBFFFD2FDCF01F21 -:10CB20000179C9CB400B320AFACCFFC4F01F017562 -:10CB3000320A409BFACCFFA4F01F0172C32B310ACA -:10CB40000E9BEEFC0104F01F0181E08101B4310A6B -:10CB5000CC3B0C9BFAC0FFD0306A009CF01F0169EF -:10CB6000306A408BFACCFFCAF01F0166C07B009B85 -:10CB7000E21B2000FE91FD13403A580AFE90FD0F83 -:10CB8000334AFAC0FFD0009CF01F0164EEF901287F -:10CB90007228720C5D1850BC039903A8F1E9108843 -:10CBA000E339005DE7D8B010E338005EF1E91088A2 -:10CBB000EEF90160F7D8B0105829E080011303B9ED -:10CBC00003C8F1E910895189EBDBC0100A34E08316 -:10CBD00000CB3028406EF00E1900E08001D80A9694 -:10CBE000129B0098FAC9FFC80C9AEEFC0168F01F6E -:10CBF0000151E08100B9F5D3C010F1DAC082501ABA -:10CC000050F830194068F2081900E08000C7302859 -:10CC1000406EF00E1900E08000A4401AF1DAC0C1A5 -:10CC2000C050EEF8016458185F0850D8EEF801289B -:10CC3000306B700C70195D19009BE2CAFFC30E9C2B -:10CC4000F01F013D1895FE91FCAAEEF80128FAC9E3 -:10CC5000FF2C0A9A1AD9303B700C70D635F9FAC8F5 -:10CC6000FF245D162FFD1894580CFE90FC98EEF8EA -:10CC70000160E06900FE5828F20817104066435A28 -:10CC80005C76B488E21300304358E8130300E7E60B -:10CC9000100CF80B1608B09B4359B2ACEEF80160CB -:10CCA0005828E08102234358B0B54359B2C5435CCC -:10CCB000E2CBFFFB308A2FBCF01F01124358300A31 -:10CCC000F16A005D4359F36A005E43582B381AD865 -:10CCD00043790C9A1AD9EEC6FEB81AD40C99E068BA -:10CCE000888EEECBFFDC0E9CF01F010F2FDD40B9CC -:10CCF0005879E08101F1EEF801685848E08001E6DA -:10CD0000E08901DC5818E080014B5828E08001469A -:10CD1000FEF804441AD8EEFA0128EF38014D1AD86B -:10CD2000EF39014C1AD9EF38014B1AD8EF39014AC3 -:10CD30001AD9EF3801491AD8EF390148302B1AD9DE -:10CD4000740CFEFA0416F01F0106EEF80128307B81 -:10CD5000700C701930165D192F9DFE9FFB5EF1D58A -:10CD6000C003C0A0EEF80128306B700C70193016AB -:10CD70005D19FE9FFB52E0460020FE9BFFF5EC0B89 -:10CD80001603FAC9FFC0E2CAFFA1EECCFFCCF01F28 -:10CD900000F5FE90FF44CE7B310AE2CBFFD3FAC40C -:10CDA000FF84089CF01F00D7310AEECBFFCCFACCF1 -:10CDB000FF74F01F00D4E0450020FE9BFFD5FAC6AB -:10CDC000FFC00A9AE2CBFFA10C9CF01F00CE0A988C -:10CDD0000C99089CE06A0100320BF01F00E3C1EBE4 -:10CDE0005C7BFACAFF50E2CCFFA1F01F00C94318D8 -:10CDF0005808CB90F3D3C0105019EDB9000CCB31CB -:10CE000043282028FAC9FFC8109A5188149B00981B -:10CE1000EEFC0168F01F00C7CA61431B1788F1D8F8 -:10CE2000C00250F81789F3D9C041C050EEF8016430 -:10CE300058185F0950D94328F0CA0002E04A002080 -:10CE4000FE9BFF922FEBFACCFFC0F01F00AEEEF975 -:10CE50000128306B720C72185D18CEFAEEF80128BA -:10CE600030091AD9129A700C70D6FAC8FF285D16CC -:10CE70002FFD1893580CFE90FB92EEF5012818999F -:10CE8000EECBFEB84358E06A888E6A0C6AA65D163F -:10CE9000069CF01F009DFE9FFB82EECEFF54320BDE -:10CEA000500E1C9CF01F00B1C1F1EF4C00ECFE9F36 -:10CEB000FD46EEF80128FEFA02B6700C303BF01F7A -:10CEC00000A8EEF80128FEFA02AA700C303BF01F11 -:10CED00000A4EEF8010C5808FE90FB613008EF4802 -:10CEE000010CFE9FFD1FEEF80128FEFA028A700C6D -:10CEF000303B3016F01F009AFE9FFA8F42EC580C20 -:10CF0000FE91FBB7EEF8017C5808C061EEF8018095 -:10CF10005808FE90FBC342F830091AD8069A1AD96D -:10CF20000E9C42F8FEFB0254F01F007B2FEDFE9F8B -:10CF3000FB36EEF801805808FE91FB18EEF9012847 -:10CF4000720C72B85D18FE9FFB111099303BEEF821 -:10CF500001605828C180E2CCFFC31AD9EEC8FFBCDB -:10CF6000EEFA012830691AD830181AD930091ADCBB -:10CF7000740C7466069A5D162FCDFE9FFC11302B43 -:10CF80003209CE6BFACCFF84CE9B5875FE98FEEC2E -:10CF9000EAC60008FE9FFE264F98CBDA4F98CBBA20 -:10CFA000EDB0000CFE91FAB0EEF800A45808FE9027 -:10CFB000FA6B3018406EF00E1900C490406AF20A05 -:10CFC0001900FE91FAA1F1D4C003FE91FA5DF6C8F2 -:10CFD00000085C88109550785C750A9CF01F00482A -:10CFE0001896FE90FA51E2C4FFA11899089AEA0B2C -:10CFF0001603EECCFFCCF01F005BC2310A9A0C9BEB -:10D00000089CF01F00400C9CF01F003F4078EA098C -:10D0100016085C58E369005DE368005E5C59F1E95D -:10D020001084FE9FFA711ADA1AD4EEF801284D6ABC -:10D03000700C302B3FF6F01F004A2FEDFE9FF9EDEC -:10D040000C9C3FF6F01F0030FE9FF9E7FAC6FF8404 -:10D05000310AE2CBFFD30C9CF01F002A310AEECB41 -:10D06000FFCCFACCFF74F01F00270898E2C9FFA19B -:10D070000C9CE06A0100320BF01F003BE339005DBD -:10D08000E338005EF1E91084FE9FFA3E0E9CF01F2B -:10D09000003FEEFC0104F01F003EFE9FFC480C9A8E -:10D0A000069BEEFC0108F01F002BEF4C010CFE91DB -:10D0B000FC293015FE9FFC2F5888C0A05908FE910E -:10D0C000FE294B48FE9FFE284B38FE9FFE254B381D -:10D0D000FE9FFE22401A0C9BE21A02000E9C3016A4 -:10D0E000F01F0016FE9FF999435C302AE2CBFFFD4A -:10D0F0002FDCF01F0004FE9FFDDC0000800092008A -:10D10000800091DC800091E88002575C8002BB08BF -:10D110008003E0488002C140800091D08002C19825 -:10D120008000917C8002C1E08003E1DC800261D458 -:10D130008002B4248002B9308002C2748003E0848B -:10D140008003E1788002B354800257CC8002914C76 -:10D1500080028FB08003C6288003E19080023A1AD3 -:10D160008002D8A080029B4080028F488003E0F0BC -:10D170008003E1308003E14C8003E0048003DF089A -:10D180008003C8E48003DFC88002B9EC80025770D6 -:10D1900080039A748003DF1080039A6CD431204D91 -:10D1A0001894F8F80128E8F9016416955909F9B3BB -:10D1B0000002F9B301011492700C1A9070991A9B35 -:10D1C0005D19C635E8F80128FAC9FFF8300A1AD9FE -:10D1D000303B700C70D635F9FAC8FFF05D162FFDA4 -:10D1E0001891580CC520E8F80160E06900FE402A5B -:10D1F0005828F2081710B4880697E8F800A4ABB7CF -:10D200005808C050E0680900E7E810075805E068D2 -:10D210000400EFD8E1375802F9B80108EFD8E13738 -:10D220004028F3D7C108B09940283006B0A740295C -:10D23000B2B64028308AB0C6E8C5FF04402C0A9B2D -:10D240002FBCF01F00130A9C308BF01F00124028E7 -:10D25000F166005D4029F366005E0E99E219010057 -:10D26000FBF81002F9BA014DF1DAE1091AD9404888 -:10D2700000991AD8069A1AD1089CE068888EE8CBE3 -:10D28000FFDCF01F00052FDD2FCDD832800091DCB0 -:10D29000800239EA8002C1E0EBCD40804879720813 -:10D2A000201893081897C031F01F00050E9CF01F3E -:10D2B0000005E3CD8080000000007AB48002D2F83F -:10D2C000800091E8EBCD40C048976E065806C041FB -:10D2D000F01F0008C0916E082FF8304C8F08F01F27 -:10D2E0000006E3CD80C00C9CE3CD80C000007AB482 -:10D2F0008002D30480028F24D401F01F0002D802E0 -:10D300008002D996D401F01F0002D8028002D9947D -:10D31000D4211789179A17B8F1E9118817A9F1EAEA -:10D320001108F1E91088990817CA17D8B168F1EA0D -:10D33000118817EA17F91258F1EA10889918F73A84 -:10D340000008F739000BF7380009B168F1EA1188D5 -:10D35000F73A000A1258F1EA10889928189EF73A0D -:10D36000000CF738000DF739000FF8C5FFE4B1687D -:10D37000F73C000EF1EA11883007125849B4F1EC7D -:10D38000108C49B69D3CC038149C2F05E80707084F -:10D390002F0EFCF9FFF0F3E82189EC0C0F88E2185E -:10D3A000FF001059EC0C0F98E61800FF1059EC0C18 -:10D3B0000FB8F1D8C1081059FCF8FFF4EC0C0FAB12 -:10D3C000A96BE61BFF0016599D091059FCF8FFF8E0 -:10D3D0009D1910599D29FCF8FFFCF3E8200A8B0ADF -:10D3E0002FF758A7CD21D8228003E2F08003E6FC76 -:10D3F000EBCD40FE1892F01F002F0493E4CBFF60AA -:10D40000E4C4FFFCE4C5FF5CE4C6FFF8E4C7FF58D2 -:10D41000E4CEFFF4E4CCFF54E4C1FFB06609760823 -:10D4200087089709680A6A0889088B0A6E086C09D8 -:10D430008D088F097C0A78089D08990A2F03210B13 -:10D440002F0421052F0621072F0E210C023BCE7140 -:10D45000E4C4FFF030134985498608972F046E0A0B -:10D46000EC0A0F98EA080F9EEC0A0F88EA080F9C56 -:10D47000EC0A0FB8EA080F9BEC0A0FA8F809150888 -:10D48000FC0A1510F3EC1389F5EE130A1659EA0895 -:10D490000F9BF6081518F1EB1288105914590EA9B4 -:10D4A0000E34CDE12FF358A3CD91E3CD80FE0000E3 -:10D4B0008002D3108003E2FC8003E6FCD431209D7F -:10D4C000F736000E505A178A780917B8F1EA118812 -:10D4D000179A1258F1EA210817AEF1EE208E506E1D -:10D4E000781817CA17F9105917D8F3EA2189F3E801 -:10D4F000210917EEF3EE208E507E7828F7390008C8 -:10D50000F73A000B105AF7380009F5E9218AF73984 -:10D51000000AF5E8210AF5E920827839F73A000C8B -:10D52000F738000FFEF7034412581894F1EA2188E7 -:10D53000F739000DF8CAFF60F1E92108500AF1E659 -:10D5400020800E91E0081618406AEE080326F3DAF0 -:10D55000C008F1D2C208EE090329EE080328504999 -:10D560005038407AEE0A0F9950296878684B105667 -:10D570004068EE000FACEE080FBA4079165AEE097B -:10D580000F8BF6081508F1EB1388F8091518105AD7 -:10D59000F3EC1289EE020F9C125AF8081510F1EC08 -:10D5A0001308F5E82008685E68654079EE090FBB4E -:10D5B00050884068EE020F8C1C5BEE080FAEF80836 -:10D5C0001508F1EC1388EE000F9A105BFC09151892 -:10D5D000F4081510F3EE1289F1EA1308125B407992 -:10D5E000F7E82003EE000F8BF6081508F1EB13881F -:10D5F000EE020FBCEE090FAE0A5CFC091518105CB8 -:10D60000F3EE12894068125CEE080F9B404A4048D6 -:10D61000F6091510A968F3EB1309F1EA1388F9E983 -:10D620002000105640394038B968F1E912882E04BC -:10D63000105640294028B169400AF3E81309EDE982 -:10D6400020021434C770E4081618408AF3DAC008C0 -:10D65000E208032EE2090326F1D0C208E2030F9983 -:10D66000E20803255019E2020FACE2030F8B6809B0 -:10D67000F6081508F1EB1388E20A0FBA125AF809F6 -:10D680001518105AF3EC1289E2000F9C125AF80890 -:10D690001510F1EC1308F5E82008E2030FBB506801 -:10D6A00040886819E2000F8AE2080FAC125BF408A8 -:10D6B0001508F8091518F1EA1388F3EC1289E2004D -:10D6C0000FBAE2020F9C105BF8081510125BF1EC28 -:10D6D0001308F7E8200850786829E2030FAC125AC3 -:10D6E000F8091518F3EC1289E2020F8BF6081508F9 -:10D6F000F1EB1388105A125A4089E2090F9B6839DE -:10D70000F6081510F1EB1308125EF5E82002EC099B -:10D710001508EA081518F3E61389F1E51288125E78 -:10D720004019105EB1694018F3E81309FDE92000C3 -:10D73000C0AB4089F1D3C1084CDBFDD9C008F60865 -:10D740000706E40A1618EBD0C208F60A0709F60520 -:10D750000708F60E070CF9E9118CF3D3C008F9E8B5 -:10D76000110C4088B988F608070AF6090708F3D2B1 -:10D77000C208F1EA1188F609070AF3D0C108680E59 -:10D78000F1EA1108F609070AF1EA10881C58F009B5 -:10D790001618405AB4B8B4894059F00A1610A9882E -:10D7A000B29AB2A8E6091618F609070AF3D0C0081B -:10D7B000F6090708F1EA1188408AF3DAC208F60987 -:10D7C000070AF3D2C108F1EA1108F609070A40591D -:10D7D000681EF1EA10881C58B2F8F0091618405A71 -:10D7E000B4C94059F00A1610A988B2DAB2E8E009C3 -:10D7F0001618F609070AF3D2C008F6090708F3D38A -:10D80000C208F1EA1188F609070AF1EA1108408A0C -:10D81000F3DAC108F609070A4059682EF1EA1088C0 -:10D820001C58F368000BF0091618405AF5690008F7 -:10D830004059F00A1610A988F36A0009F368000A33 -:10D840006839405AF9E6108C125CF8081618F80985 -:10D850001610F56C000FF568000CA98CF569000D29 -:10D86000F56C000E2F7DD8328003E2FC8003E1F0DE -:10D87000EBCD40C01897590BC030E3CF80C0E06CAF -:10D8800000B0F01F00061896CF900E9BF01F00040A -:10D890000C9CE3CD80C00000800092008002D3F099 -:10D8A000D431209D129714961895500B308A0C9BFA -:10D8B000FAC2FFE4049CF01F0034ECCBFFF8400AEE -:10D8C0000E9CA37AF01F00300A9C310BF01F002F32 -:10D8D0001893C57040082018EE08003840095028F9 -:10D8E0005C39400A5C59F40A00285019E9D8C0088C -:10D8F0003050FAC7FFF4FAC1FFEC40095809E08A3A -:10D90000002940251296308A049B0E9CF01F001EB1 -:10D91000FB390013E806000812580A9BFB68001345 -:10D92000308A029CF01F00180E9A0E9B069CF01F76 -:10D930000018308A0E9B049CF01F001320160A9CCE -:10D94000308A2085029BF01F00105806FE99FFDDEB -:10D95000401A2010E80A0008E9D8C0085BF0CCE1C2 -:10D96000069CF01F000C049C3A691988F208180004 -:10D97000C0812FFCFAC8FFDC103CCF812F7DD83A44 -:10D980002F7DDC3A800091DC8002D8708002D4BC0C -:10D99000800091E85EFD5EFCD4311A97202D109E28 -:10D9A000129514965809C4911638E0880057F0086B -:10D9B0001200C0D0F608094BF0091120FC08094EEE -:10D9C000F4090A49F4080946F3EB100BFC0516109C -:10D9D000F9DEC010F6050D0AEC0816101499F1EBEB -:10D9E0001108B93A103AE088000C20191C08103EC2 -:10D9F000E08B0007103AF7B90B01F1DEEB08F00AF3 -:10DA0000010BEDD6C010F6050D0AEDEB11061498CA -:10DA1000F40C024C0C3CE088000A20181C060C3E5A -:10DA2000E08B00050C3CF7B80B01F1E9110B300C51 -:10DA3000169A189B2FEDD8321639E08B0051F20C54 -:10DA40001200C53114385F8916355F381049F8095E -:10DA50001800C450301BC4585808C0513019F2087F -:10DA60000D08109EFC081200E08100911C1BFC05B3 -:10DA70001610F3DEC010301CF6050D0AEC08161067 -:10DA8000F4090243F1EB1108149B1033E088000CF9 -:10DA9000201B1C08103EE08B00071033F7BB0B0166 -:10DAA000F1DEEB08F0030103EDD6C010E6050D0230 -:10DAB000EDE311060498E40902490C39E088000AF4 -:10DAC00020181C060C3EE08B00050C39F7B80B0142 -:10DAD000F1EB110B169A189B2FEDD832300B169CD8 -:10DAE000169A189B2FEDD832F20C0945F80E11202A -:10DAF000F00C0943F40E0A46F00E0A48F60E0A4EE0 -:10DB00000A48F0011610FC010D04EEE5FFF8F60CD2 -:10DB10000949EBD8C010EDE910090896F20E16106D -:10DB2000EEF4FFF8EC05024BFDE4110E1C3BE0881F -:10DB300000072016100E1C38E088006D161EF3D961 -:10DB4000C010FC010D00F3E11109009BE005024E3D -:10DB5000123EE0880007201B10091238E0880055AB -:10DB6000F7E6110B1C19F60306420639C0935F094C -:10DB7000F40C094C043C5F38F3E80008C020201B7B -:10DB8000300C169A189B2FEDD832F6080949FC087C -:10DB9000094EF0011120FC051610F4010A42F601AD -:10DBA0000A411242E2050D00F3DEC010E406161031 -:10DBB0000093EDE11106E009024C0C3CE0880007FF -:10DBC00020131C060C3EE088002CEC0C0101F7D25F -:10DBD000C010E2050D00F7E1110B009CE0090241C5 -:10DBE0001631E088000C201C1C0B163EE08B000751 -:10DBF0001631F7BC0B01F7DEEB0BF4080946021BEC -:10DC0000F9E3110CC3AB123EF3D8EB09F7BB0B01E0 -:10DC1000CA8B1C3BF7B60B01FDD8EB0EC90B0C3CB5 -:10DC2000F7B30B01EDDEEB06CD1BD703D40130AA11 -:10DC3000300BF01F0002D8028002F0ECD4014848FB -:10DC4000169A189B700CF01F0003D802000005986C -:10DC50008002DC54D421F40B024BF01F00151897FE -:10DC6000C230F8FAFFFCE01AFFFC204AE04A002428 -:10DC7000E08B00181898593AE088000F300910A975 -:10DC800010A959BAE088000910A910A9E04A002497 -:10DC9000C03110A910A9300910A991199109C048E3 -:10DCA000300BF01F00040E9CD82200008002E2BC62 -:10DCB0008002E8BCD421300EF6C80001F60614013B -:10DCC000F808002818991897C07870046E050EA4FB -:10DCD00091052FFE20480C3ECF95F40B000B1897B2 -:10DCE000F6C80001300EF8080028A15BC078700566 -:10DCF0006E060EA591062FFE2048163ECF95F4C85D -:10DD00000001A15AF808002C3008C078780E720B78 -:10DD100012AE990B2FF8204C1438CF95D822D70388 -:10DD2000D431205D502C503816971496580C5F0B48 -:10DD300058075F0C1295F9EB100B40E33008F00B1D -:10DD40001800E081028058095F09580A5F08F3E86B -:10DD50000008F6081800E08102764BE4402B6808C2 -:10DD60001638E0840270EE08032C580CE080026B39 -:10DD70004B9BF01F003AC06168082FF88908E08FBC -:10DD8000026268085808C05130184B598908930836 -:10DD90005806C14032D90D88F20818005F0232B926 -:10DDA000F20818005F08E5E81008C0805802F9B2D0 -:10DDB0000101F9B200022FF6C0884AACF01F002A18 -:10DDC000F9B20102F9B200004A5870085818C61199 -:10DDD0005812C2B049F95822C4A0129872043001F6 -:10DDE00032DB32BA7009F2C0FFFFEE09032C580C87 -:10DDF000E080023B1989F6091800C0805803E080D2 -:10DE00000225F4091800E081022150015014492B29 -:10DE1000F01F0012C411EE04002C029B301A2FF4E4 -:10DE2000F01F0012E08F022148A87009EE090328B4 -:10DE30005808C2F0118A32DBF60A1800C2A0580353 -:10DE4000E080020832BBF60A1800E0810203C21823 -:10DE500000007AB88003EC008002ECC800007ABCB5 -:10DE60008003EC04800326948002DCB47208EE0880 -:10DE700003285808C0E0118832D9F2081800C09071 -:10DE80005803E08001E032B9F2081800E08101DBBC -:10DE90003009500950195805E08000A44BE4680887 -:10DEA000302AEE08032C4BDBF01F003DC0D0580396 -:10DEB000E08000986808EE080328118932B8F0095C -:10DEC0001800E081008F4B7468085818E081008AC0 -:10DED0004B187008302AEE08032C4B0BF01F003053 -:10DEE000F9B80002E9F80A004AB468084AD1EE0815 -:10DEF000032C620833DB100CF01F002B1893C0E1D9 -:10DF00006808EE08032CF01F002968096208EE0972 -:10DF10000323F80801081803C08868086209EE089E -:10DF20000328F8080108121850430A910C933FF493 -:10DF300030001096C4784989720849A9EE08032C6C -:10DF400072080C9A100CF01F0016C3A1620CF01F8F -:10DF500000171836C051069600944043C3C85BF4BE -:10DF6000C2E0493870085808C7C062081AD848A8E3 -:10DF700070096E08EE090329A564EA04030A1ADA97 -:10DF80001AD91AD848B8700848BB702CF01F000B7B -:10DF90002FCDC67800007AB88003EC008002E7102D -:10DFA00000007ABC8002ECAC8002EDD0000004A43A -:10DFB000000005988003EC1480031FE800942FF004 -:10DFC0002F01620B580BCB81069640435BF4C031A6 -:10DFD0000898C0A8E8081504EA0800087018C048A6 -:10DFE0003FF83003109458065F19F3E403F9C03189 -:10DFF0003006C5484BE162084BE3EE08032966088A -:10E000000C9CF208070BF01F003C1896C2D14BB8CD -:10E0100070085808C11062096608EE090329F20861 -:10E0200007081AD86E081AD84B5870084B5B702C2A -:10E03000F01F00352FED4AF8700B2FFB910B4AC9EA -:10E04000720AEE0A032CF80B070C300BF60C1800C2 -:10E05000F7BA00FFF3FA0A00F9B90001F1F90A0072 -:10E0600033F8109CC818199833A9F2081800C0306A -:10E070003008C08819A9F0091800F9B80002F9B8E9 -:10E08000010149CA49A97209EE09032974030D8ADD -:10E090002FF3F203000349D9930A5818C1505828A6 -:10E0A000C0405808C6C0C208078933D8F009180014 -:10E0B000F7B300FF4968078A3009F20A1800C10166 -:10E0C00030069106C718078933D8F0091800F7B34E -:10E0D00000FF30080789F0091800C1B048C8910353 -:10E0E0003019484891093006C5F8000000007AB898 -:10E0F00000007ABC8002ECAC000004A4000005988B -:10E100008003EC5080031FE8000004A000007AC0E8 -:10E110004C08402B70082FF81638C2954BE8700851 -:10E120005808C1C06E084BD71AD86E084BCB702C5C -:10E13000F01F003C2FFD5BF4C0906E08A5644BAB54 -:10E14000EA0403091AD9702CC0686E080D894B7B4C -:10E150001AD9702CF01F00332FFD4AE933A8720A38 -:10E16000109C2FFA930A4B299308C6D84B19EE0836 -:10E17000032A3018930A10964AF9C1584AE95BF409 -:10E18000C0D1720A2FFA930A4A2B760BEE0B032B9F -:10E19000F60A070AF00A1800C03130189308300850 -:10E1A0004A49109693085802C1B140094A285809B3 -:10E1B0005F19700858185F08F3E80008E4081800B1 -:10E1C000C0F04018ECCAFFFFEE08002C400BF01F17 -:10E1D000001B40182FF8F006000648E8C0A8496860 -:10E1E00070085818C07148B870092FF9F206000677 -:10E1F00091065BF4C240403B580BF7F41A00A5644B -:10E2000008056A3C6A285808C1E0910C300CC1B876 -:10E2100000007AB8000004A4000005988003EC70A8 -:10E2200080031FE88003EC948003EC9C000004A0B2 -:10E2300000007AC000007ABC8002DCB448C8700CD0 -:10E24000C0283FFC2FBDD83291002FF1FE9FFDCC9E -:10E25000488B97084888F2CAFFFF3019910A129C30 -:10E2600048389109CF0B48489104CECB000004A058 -:10E2700000007AC000007AB8D40130091AD9129887 -:10E28000F01F00022FFDD8028002DD20D401484893 -:10E29000189B700CF01F0003D802000000000598C6 -:10E2A0008003217CD4014848189B700CF01F0003A8 -:10E2B000D8020000000005988002E2BCD431F6C705 -:10E2C000FFF518955967F9B70810F9B80BF8EFD8AA -:10E2D000EB2716375F38F1E713F8C05030C899388C -:10E2E000E08F01F4F01F0050E04701F7E08B001CC5 -:10E2F000EE0316034CD8F003003870361036C061B8 -:10E30000ECC8FFF870361036C0C06C18E018FFFC7F -:10E310006C3AEC0800090A9C6C289528913AC4785C -:10E320002FE3C4D8EE081609C041EE031603C278E5 -:10E330005848E08B0006EE0316062C83C2085948A5 -:10E34000E08B0005F0C3FFA5C1A8E0480054E08BB6 -:10E350000006EE03160C2923C128E0480154E08B87 -:10E360000006EE03160F2893C0A8EE031612E0482D -:10E370000554E088000437E3C02828434ABAF40370 -:10E38000003A7436C1986C19E019FFFCF207010BD2 -:10E3900058FBE08A00042013C1186C38580BC0B534 -:10E3A0006C2AEC0900090A9C912A95387218A1A8D8 -:10E3B0009318CBD810961436CE712FF349BAF4CCFB -:10E3C000FFF878261836C6F06C19E019FFFCF20742 -:10E3D000010858F8E0890091993C992C5808C055DB -:10E3E000EC0900090A9CCE3BE04901FFE08B0013D9 -:10E3F000A399F4090038702B8D388D2B9736912610 -:10E40000A3497418301BF6090949F1E91009951957 -:10E41000C4A8F20816095848E08B000AF20A16064A -:10E420002C8AC2488002E8CA0000059C5948E08B4B -:10E430000005F0CAFFA5C1A8E0480054E08B000623 -:10E44000F20A160C292AC128E0480154E08B000684 -:10E45000F20A160F289AC0A8F20A1612E0480554CC -:10E46000E088000437EAC028284A4C8BF60A0034BA -:10E4700068280838C0E17619A34A301EFC0A094A08 -:10E48000F3EA100A1099971AC0A870280838C060DB -:10E49000701AE01AFFFC1439CF9370398D398D282A -:10E4A00091369326E6081402301B4B84F608094B7C -:10E4B0006818103BE08B006EF7E80009C0B1E0136C -:10E4C000FFFCA17B2FC3C0382FC3A17BF7E8000955 -:10E4D000CFC0E803003E06921C916236C2E86C1A77 -:10E4E000E01AFFFCF407010858F8E08A00156C3ABE -:10E4F0006C299529933A0E99EC070007A1A9993741 -:10E5000099278D19EE0809088F2C8F3CA1A80A9C29 -:10E510008F18C0D86C395808C0F5EC0A000A741876 -:10E52000A1A80A9C95186C2893289139F01F00180F -:10E53000ECCCFFF8D83212960236CD212FF2F1D270 -:10E54000C002C0302F81CCAB1C98F3D3C002C08175 -:10E550006819F60811FFF3E800088918C078F0C9B7 -:10E560000008201370081238CF10A17B6818103BE8 -:10E57000E08B0010580BC0D00493C0382FC3A17B90 -:10E58000F7E80009CA71CFBB0000059C8002E8CC07 -:10E5900068236612E012FFFC0E325F39E4070108BF -:10E5A00058F85FAAF5E91009E08000A24C887001D4 -:10E5B0004C882F0170080E015BF8C0402811E01153 -:10E5C000FF80029B0A9CF01F004418965BFCC6E08B -:10E5D000E6020008103CC0320833C6814BFA7409C9 -:10E5E000E209000995091036C0A1F5D6C007C0712F -:10E5F000E20200026828A1A29112C4C84B5A740B0F -:10E600005BFBC0319506C068EC0900094B3A101954 -:10E610009509F1D6C003F00911085808F20817103F -:10E62000EDD8E1062808EC0100010A9CE3D1C007FF -:10E63000F0010101029BF01F00284A885BFCEC0CF2 -:10E640001700F9B1000070090C1C8926020C120198 -:10E65000A1AC91018D1C0833C1D058F2E08B0005AC -:10E6600030188D18C238305920C2E012FFF8E60287 -:10E670000008912991196618F1D8C001E5E8100841 -:10E68000871858F2E0880007E6CBFFF80A9CF01FD5 -:10E6900000144949720A491870081438F3F8BA008E -:10E6A0004919720A1438F3F8BA0068287018E0188B -:10E6B000FFFC0E385F390E1858F85FAAF5E910090B -:10E6C000C1600A9CF01F0009D83A000000007ACC13 -:10E6D000000009A88002EBC800007AD08003217CEA -:10E6E00000007AC800007AC48002E8CC6826A1A89D -:10E6F0000E99A1A98D19EC0700070A9C89278F188C -:10E70000F01F0003ECCCFFF8D83200008002E8CC08 -:10E71000D4013008C0D8F808070EF6080709201AF7 -:10E720002FF8F20E1800C040FC09010CD802580A5C -:10E73000CF31149CD802588AC2F5F9EB1009E219BE -:10E740000003E0810097E04A0020C3B4F4081402FB -:10E75000F0091108FE09002F7669996976599959CF -:10E7600076499949763999397629992976199919E5 -:10E7700076099909F608002BF8080028E01A00032A -:10E78000F40A1104FE0A002F17A9B0A91799B0992D -:10E790001789B0895EFCF40A1109FE0A002F17F9E7 -:10E7A000B8F917E9B8E917D9B8D917C9B8C917B965 -:10E7B000B8B917A9B8A91799B8991789B8895EFC8B -:10E7C000EBCD40C01899220AB707B326B707B32686 -:10E7D000B707B326B707B326220ACF742F0AC0653E -:10E7E000B707B326B707B326210A5C3AFE0A003FF3 -:10E7F000D703D703F736000EF366000EF736000D89 -:10E80000F366000DF736000CF366000CF736000BCC -:10E81000F366000BF736000AF366000AF7360009C4 -:10E82000F3660009F7360008F3660008F7360007BC -:10E83000F3660007F7360006F3660006F7360005B4 -:10E84000F3660005F7360004F3660004F7360003AC -:10E85000F3660003F7360002F3660002F7360001A4 -:10E86000F3660001F7360000F3660000E3CD80C0D8 -:10E87000201AF60A0709F80A0B09CFB15EFCD40189 -:10E88000183BC192F60A0009123CC152F80A000B6B -:10E890003008C068F208070E201AF6080B0E201880 -:10E8A000580ACF91D802F6080709201AF8080B0970 -:10E8B0002FF8C0283008580ACF71D8021898C038ED -:10E8C00010CB201A580ACFD15EFC5EFC5EFCD70349 -:10E8D000D4014848169A189B700CF01F0003D80208 -:10E8E000000005988002E8E8D431201D16941892A3 -:10E8F000149B5804C051F01F005B1895C5B9500A0D -:10E90000F01F0059400BE8C10008F6C6FFF5621C75 -:10E910005966F9B60810F9B80BF8EDD8EB2616369B -:10E920005F38F1E613F8C05030C830058538C42987 -:10E930001890E010FFFC0C30E08401124CB8E200AB -:10E94000000970250A39C090721AA1CAF20A000A99 -:10E95000741AEDBA0000C220721AE01AFFFCF4002B -:10E9600000030A39C131ECC7FFF00E33C195E2064E -:10E9700000090C13A1A393139129049C6218089514 -:10E98000F1D8C00110468316C1390C33C0957228E6 -:10E990000297723993289139CE48300A1499EDBC08 -:10E9A0000000E080009D6207E20701076E1CE01C8A -:10E9B000FFFC5809C5E0F80000030A39C4811403BC -:10E9C000ECC9FFF01233C5556E3A6E299529933A7A -:10E9D000EEC5FFF8E0CA0004E04A0024E08B002501 -:10E9E0000A99593AE088001A09098B0909098F39EF -:10E9F000EEC9FFF059BAE0880011090B930B090921 -:10EA00008F59EEC9FFE8E04A0024C071090A930A51 -:10EA1000EEC9FFE0090A8F7A090A12AA680A930A66 -:10EA2000681A931AC0785008089B0A9CF01F0010BF -:10EA30004008EE0600090C13A1A393139129049C2E -:10EA40006E18F1D8C00110468F16CB2814030C3372 -:10EA5000C10572287239932891396E286E39C0F831 -:10EA60008002E2BC8002E8CA0000059C8002E87EC9 -:10EA7000F80000030C33C3356E396E2893289139A2 -:10EA8000E0CA0004EECCFFF8E04A0024E08B00244A -:10EA9000593AE088001A0908990809088F38EECC1D -:10EAA000FFF059BAE08800110908990809088F5841 -:10EAB000EECCFFE8E04A0024C07109089908EECCCA -:10EAC000FFE009088F78090818A8680899086818ED -:10EAD0009918C478089BF01F0039C438049CF01FB3 -:10EAE00000381895C3A06218F8C90008A1C8E20848 -:10EAF00000081039C07172130297E013FFFC000385 -:10EB0000C308E0CA0004E04A0024E08B0020089912 -:10EB10001898593AE0880014130B10AB130B10AB84 -:10EB200059BAE088000D130B10AB130B10ABE04A81 -:10EB30000024C051130A10AA130A10AA130A10AA1B -:10EB4000720A910A72199119C048089BF01F001BA4 -:10EB5000089B049CF01F001B049CC2A80093029712 -:10EB6000E60601096E1858F9E0880016F1D8C001D0 -:10EB7000EDE810088F181298A1A8EE06000BF60910 -:10EB8000000997187218A1A82F8B9318049CF01FE6 -:10EB9000000DC0B8F1D8C001E7E810088F18EE03E7 -:10EBA00000036618A1A88718049CEEC5FFF8F01FA3 -:10EBB00000060A9C2FFDD8328002E87E8002E2BC6B -:10EBC0008003217C8002E8CCD42130081897487655 -:10EBD000169C8D08F01F00065BFCC0516C0858089D -:10EBE000EFF81A03D822000000008CC48002F1E87C -:10EBF0005EFDD703D421217DE06802041697BA6830 -:10EC0000504C500CF01F000B3008512850D848A829 -:10EC100050983FF8BA784898505C501CFAC9FF9059 -:10EC20000E9A700C1A9BF01F00062E9DD822000031 -:10EC30008002EDD08002EBF00000059880030C4CC0 -:10EC4000D421217D4988FAC9FF9016977006580B88 -:10EC5000C064E068008B3FFC8D38C228580BF60872 -:10EC600017005807F9BB01FFEFDBE10850585028A7 -:10EC7000E0680208BA683FF8504C500CBA781A9B0A -:10EC80000C9CF01F000A5BFCC044E068008B8D38D0 -:10EC90005807F9B90100FBF81000F1F91E002E9D8C -:10ECA000D8220000000005988002F5685C5BC0284F -:10ECB0002FFC19885808C050F6081800CFA15EFC38 -:10ECC000580B5E0C5E1DD703F9EB100AE21A000325 -:10ECD000C341780A76095CEAC170123AC151781AC8 -:10ECE00076195CEAC110123AC0F1782A76295CEAFA -:10ECF000C0B0123AC091783A76395CEAC0502F0C15 -:10ED00002F0B123ACE70F9DAC308F7D9C3085E0C9C -:10ED1000161C5E1CF9DAC208F7D9C2085E0C161C74 -:10ED20005E1CF9DAC108F7D9C1085E0C161C5E1C1E -:10ED30005C5A5C59121A5EFA178A1989580A5E09D8 -:10ED400014195E19179A1999580A5E0914195E194F -:10ED500017AA19A9580A5E0914195E1917BA19B920 -:10ED6000580A5E0914195E192FCB2FCCCE6B000008 -:10ED70003008F6080709F8080B092FF85809CFA141 -:10ED80005EFCD703D4014848189B700CF01F0003A9 -:10ED9000D8020000000005988002ED9CD42118974D -:10EDA0001696169CF01F0008F8C5FFFF0E9C0A9BE4 -:10EDB000F01F00061897C0500A9A0C9BF01F000421 -:10EDC0000E9CD8228002EDD08002E2BC8002E736A1 -:10EDD00030091898C0282FF8118AF20A1800CFC1FC -:10EDE000F00C010C5EFC580AC0815EFA580AC0B0F3 -:10EDF0005808C0902FFC2FFB201A19881789F0099A -:10EE00001800CF50198C1788101C5EFC3008103A7F -:10EE10005E0CF6080709F8080B092FF85809CF818E -:10EE2000103A5E0CF8080B092FF8CFBBD401484804 -:10EE3000169A189B700CF01F0003D802000005986A -:10EE40008002EE44D421300816951696C0282FF67D -:10EE5000580AC060201A0D89F0091800CF910A16CF -:10EE6000ECCBFFFFF01F00071897C0800A9B0C9A9D -:10EE7000F01F00053008EE060B080E9CD82200009B -:10EE80008002E2BC8002E736D42118981696580B0F -:10EE9000C0C03007C0481897F8C8FFFF109C0C9BF3 -:10EEA000F01F0005CF91C048F01F000318970E9C7B -:10EEB000D82200008002ECACD421201D4A351897DE -:10EEC0006A04E8F600E85806C351500B350CF01FF1 -:10EED00000206A08E94C00E8F0F900E89326930660 -:10EEE0009316F0F900E893469336F0F900E893663C -:10EEF0009356F0F900E893B693A6F0F900E893D69C -:10EF000093C6F0F900E893F693E6F0F900E8F346CB -:10EF10000044F3460040F0F900E8F346004CF346A5 -:10EF20000048F0F900E8F366001CF0F800E8400B38 -:10EF30009196486870080E9CF0FA00E83019F01FAE -:10EF400000052FFDD8220000000005988002E2A4F1 -:10EF50008002EF54D421580CC041740C580CC2905C -:10EF600018981697113EC0A80C3EC0815809C030B1 -:10EF7000109CCF7B9508B889D8220F365806CF5100 -:10EF8000580EC051950E1C9CD822129810991697B5 -:10EF9000133E0F361C36C0A1580EFC091700F9BBF2 -:10EFA0000100F1FB1E009509D8225806CF31CEEBA7 -:10EFB000D822D703D431203D4CC8502C700116986C -:10EFC000113EE20E0706E2160008CFB1E04E002D1A -:10EFD000C041113E3016C058E04E002BC021113EFA -:10EFE00058095F0C59095F053007F9E51005EE0572 -:10EFF0001800C1E0E04E0030C131118535843783FF -:10F00000E80518005F04E60518005F05E9E510054E -:10F01000EE051800C050119E31092FE8C098580C19 -:10F02000C070E04E0030F9B90008F9B9010AE06C8F -:10F03000FFFFEA1C7FFF3007FC1580000E930E36A1 -:10F04000F80517000E9CEA090D0408925005E20E1F -:10F050000704E1D4C001F9B00137F9B000575010EE -:10F06000FCC500300890E2100004C0814010E9D4D3 -:10F07000C002FC0001055804C1C01235C1A4043C03 -:10F080005FBEFDE713FEE60E1800C101043C5F0EF3 -:10F0900040070E355F97EFEE000EE60E1800C061D8 -:10F0A000B33C3017EA0C000CC0283FF7113ECD0BE3 -:10F0B0005BF7C0E1E069FFFFEA197FFFFC1C8000FD -:10F0C00040205806F20C170032298139C0485806F2 -:10F0D000FBBC0100580AC0705807F9B901FFF1D90B -:10F0E000E10B950B2FDDD8320000049CD401485869 -:10F0F0001499169A189B700CF01F0003D802000098 -:10F10000000005988002EFB43028D6733FFC358BA1 -:10F11000580C5E4C482A950B5EFC000000008CC425 -:10F120003058D6733FFC358B580C5E4C482A950BF3 -:10F130005EFC000000008CC43038D6733FFC358B79 -:10F14000580C5E4C482A950B5EFC000000008CC4F5 -:10F150003048D6733FFC358B580C5E4C482A950BD3 -:10F160005EFC000000008CC430B8D6733FFC358BC9 -:10F17000580C5E4C482A950B5EFC000000008CC4C5 -:10F180003098D6733FFC358B580C5E4C482A950B53 -:10F190005EFC000000008CC4D421210D16971A9B40 -:10F1A000F01F0011C0343FFCC1C84008AE08401831 -:10F1B000AE1840288F184038AE484048AE584058E6 -:10F1C000AE684068AE7840888F4840A88FB840C885 -:10F1D0008FC840D88F5840E8300C8F7840F88F980F -:10F1E0002F0DD8228002F180D40148C87009580937 -:10F1F000C03148B99109489948AA7208F00C000C2E -:10F20000143CE08B0004930CC068F01F000730C86A -:10F2100099083FF8109CD80200007AF800008CC8CA -:10F220000000F00080031D20D431208DFAC4FFBC03 -:10F23000504B682E505812967C0B7005506E580B30 -:10F24000F40B17006803681140493008C2C92FFB4E -:10F25000325C178AF80A18005F1EF00A18005F1C5B -:10F26000FDEC000CF00C1800CF31580AE0800129A9 -:10F27000300C3FFA1890503A18941892F80C003C51 -:10F280001697507C4CDC0F3AF80A070E407C1C0C99 -:10F290004CBEFC0C070E201E500E4CAEFC0C070C96 -:10F2A000507C400C587CE08B00F84C7EFC0C032F0B -:10F2B000368BF60A1800E08000F0371BF60A1800BB -:10F2C000C07034CBF60A1800C051A3B4CE58A5B410 -:10F2D000CE380F8B36CAF40B1800C051A5B4EECB54 -:10F2E000FFFFCDB8A5A4CD88EBD5C005367CF80AC4 -:10F2F0001800E08B0027365BF60A1800C48234FB46 -:10F30000F60A1800C480E08B000C345BF60A180083 -:10F31000C3E0347BF60A1800C3A0344BC088358B99 -:10F32000F60A1800C2C0E08B0007355BF60A180029 -:10F33000C351C318363BF60A1800C2F0364BC0E87A -:10F34000370BF60A1800C250E08B000D36EBF60AB8 -:10F350001800C1F0E08B0014369BF60A1800C1E1DA -:10F36000C0E8375BF60A1800C0A0378BF60A180011 -:10F37000C060373BF60A1800C111C0B8EDB40004F4 -:10F38000C0A0EDB40005C0913020C0883040C068F6 -:10F390003030C0483010C0283000403B5BFBC040DC -:10F3A000E20B0920C7985860E08B00776C0AEACC22 -:10F3B000FFFF486EFC00032F8003EE088003ED641E -:10F3C0008003ECF88003ECAC8003ECCCF4CBFFF8CA -:10F3D0008D0BF4EA0000E605083AC0F8F4CBFFFC18 -:10F3E0008D0B740AE605093AC088F4CBFFF88D0B43 -:10F3F000F4EA0000E605083A0E9B1895C4E8620A94 -:10F400005BFAC0B150195028E06A0080300B029CB2 -:10F41000F01F004D40284019E4CC00010E9B503CE9 -:10F42000F20C0C49C3A8620A5BFAC0B1501950280B -:10F43000E06A0080300B029CF01F00434028401916 -:10F440002012300A0E9BE202092AF2020C49C2582D -:10F4500016976C0AF4CBFFFC8D0B740A0E9BE60525 -:10F46000093A2FF5C1A8F4C20030C068E4020022B6 -:10F470002FF7F40200120F8A580AC0E0230A589AA4 -:10F48000FE98FFF6C0982FF70F8A580AC050230A3B -:10F49000589AFE98FFFA0E9B407C30BAF40C180084 -:10F4A000FE91FEEE4042178C0A325F4AF00C1800C3 -:10F4B0005F1CF9EA000AF00A1800FE91FECB300842 -:10F4C000404E178AE2050021F00A1800FC091710C7 -:10F4D000E6050038069EC2A8620A583AC1E0E089F3 -:10F4E0000007581AC1A0582AC181C058585AC0C034 -:10F4F000C0B5C1386C0AF4CCFFF88D0CF4E2000002 -:10F50000F0E30000C1086C0AF4CCFFF88D0CF4E2C3 -:10F510000000F0E30000C0786C0AF4CCFFFC8D0C16 -:10F52000740A910A2FF52F882FC11235FE9AFFD643 -:10F530001C934052406E85059D0B404BE60B003CF2 -:10F540002F8DD8328002E8BCD42114977428580833 -:10F55000C0419518109CD822F01F000330088F1866 -:10F560008F28D82280032320D431FACD068850A9D1 -:10F57000169014971893580CC06078685808C031DA -:10F58000F01F004E4CE81030C0316600C0A84CD8C7 -:10F590001030C0316610C0584CB81030E7F000028F -:10F5A0008068EDB80003C04160485808C071009BF6 -:10F5B000069CF01F0046E0810B4080681099E2191C -:10F5C000001A58A9C3D18079300AF4091900C385FB -:10F5D000A1D8FB5805B86088FB4805CC60A8FB485B -:10F5E00005D4FAC8FFD4FB4805BCFB4805ACE0686D -:10F5F0000400FB4805C0FB4805B43008FB5905BAB8 -:10F600000E9A40A9FAC7FA54FB4805C4069C0E9B03 -:10F61000F01F002F506CC0950E9B069CF01F002D14 -:10F62000406EF9BE01FF506EFB0805B8EDB800064C -:10F63000E0810B058068A7A8A068E08F0B00300868 -:10F64000FAC4F9F85098FB480678409CFB480674C9 -:10F65000FB48067CFB48068050573FF8FB44067089 -:10F66000FB48052C506C1896069150204055C02838 -:10F670002FF50B88300B325AF60818005F19F40882 -:10F6800018005F181268F6081800CF314059EA09CF -:10F690000107C2E0FAF806780E088909FB480678E7 -:10F6A0008917FAF806742FF8FB4806745878E08931 -:10F6B00000132F84C1A8000080031F388003EF2CA3 -:10F6C0008003EF4C8003EF6C80031C388002F568E8 -:10F6D00080031D2CFACAF990402B029CF01F00A158 -:10F6E000E0810AA6FAC4F9F840680E0850680B8851 -:10F6F0003007EE081800E0800A8AEAC2FFFF3003F4 -:10F700005052FB6706873FFE50745043503E0690B0 -:10F71000508506920C944057C0683FFC0A97503CB5 -:10F72000C02830000F38C0281292E0480063E08003 -:10F7300001CCE0890045E0480039E0890026E04836 -:10F740000031E0840198E048002BE0800101E0896D -:10F75000000FE0480023E080008EE048002AE080AF -:10F76000008CE0480020E0810897C7B8E048002EF0 -:10F77000E08000F1E0480030E080017BE048002DAF -:10F78000E081088ACE28505750420897408540743F -:10F790001092E048004FE0800439E0890008E0481A -:10F7A0000044E081087DE08F01DEE0480055E08004 -:10F7B00005DFE0480058E0810873C428E048006F86 -:10F7C000C430E089001FE0480069C450E089000AA5 -:10F7D000E0480064C400E0480068E081085DC63984 -:10F7E000E048006CE0800163505750420897408524 -:10F7F00040741092E048006EE0810852E08F02ED04 -:10F80000E0480073E0800553E089000BE048007099 -:10F81000E08004F9E0480071E081083EC5295057B6 -:10F8200050420897408540741092E0480075E0808F -:10F8300005A0E0480078E0810833E08F06964CABE5 -:10F84000509BE08F06945057408508975042407473 -:10F85000E08F03DD50574085089750424074C83907 -:10F86000FB380687300AF4081800FE91FF5D320865 -:10F87000C6E8A1A3C58B0F89F2C800305898E08B69 -:10F88000001EEEC8FFFF300B2309F60B002BF20B16 -:10F89000001B1139F2CA0030589AFE98FFF7E04970 -:10F8A0000024FE91FF40E04B0020E08909C1201BAD -:10F8B000FAF90680123BC095C108FAF90680ECCA35 -:10F8C000FFFF1236C1F5C268FAC9F9781097F20B3A -:10F8D000003BF6F2FDA4C358FAC7F9841AD7109773 -:10F8E000FAC2FAD01AD2FAC8FBCC029C1AD8FAC8CB -:10F8F000F974FAC9FFCC40BAF01F001C2FDD780262 -:10F90000C208FACEF9781496FC040038F0F2FDA48F -:10F91000C18840A859F9E0890011F0CBFFFC50AB39 -:10F920007002FACCF978F8090038F142FDA42FF9F9 -:10F930001496FB490680C058700214962FC850A830 -:10F940005802FE94FEF15C32A3A3CEDAFB68068770 -:10F95000CEAA0F38E048002AC0A03009C7D800005E -:10F960008002F5488003EDD08002F2280F88F0C9AC -:10F9700000305899E08B001EEEC5FFFF300B2308C6 -:10F98000F60B002BF00B001B0B38F0C90030589918 -:10F99000FE98FFF7E0480024FE91FEC5E04B0020F2 -:10F9A000E0890946201BFAF80680103BC095C10883 -:10F9B000FAF90680ECCAFFFF1236C1F5C288FACA0E -:10F9C000F978F40B003BF6FBFDA4503BC3C8FAC921 -:10F9D000F9841AD9FAC8FAD01AD8FAC8FBCC029C12 -:10F9E0001AD8FAC8F974FAC9FFCC40BAF01F027AE3 -:10F9F0002FDD780C503CC278FACEF9780E95FC04D5 -:10FA000000381496F0F8FDA45038C1D840A859F930 -:10FA1000E0890014F0CBFFFC700850AB5038FACCF2 -:10FA2000F978403BF8090038F14BFDA42FF90E9509 -:10FA3000FB4906801496C07870090E952FC850397E -:10FA4000149650A840385808FE95FE690A97C6BA21 -:10FA5000F40B00190F38F209002BF0CA0030589A45 -:10FA6000FE98FFF83FFEF20E0C495039C5FAA7B3D5 -:10FA7000C5AA30092308F2090029F00900190F3836 -:10FA8000F0CA0030589AFE98FFF7E0480024FE9133 -:10FA9000FE4DE0490020E08908CBF2C4000130109F -:10FAA000FE9FFE42A7A3FE9FFE3F0F89F0091800AC -:10FAB000C0512FF7A5B3FE9FFE37A5A3FE9FFE34CE -:10FAC000A5B3FE9FFE3150575042089740854074C1 -:10FAD0000C99FAF806805800C1D01037C064FACCEF -:10FAE000F978F8070037C1D8FAC8F9841AD8FAC8E3 -:10FAF000FAD01AD8FAC8FBCC1AD8FAC8F974FAC9DD -:10FB0000FFCC0A9A0E9B029CF01F02332FDD19B81E -:10FB1000C2282FF61039C084FACBF978F6070037DF -:10FB2000EF38FDA7C18840A959F8E0890012F2CA50 -:10FB3000FFFC50AA7209FAC2F978E408003A2FF8DB -:10FB4000F549FDA4FB480680F1D9C008C04813B8A8 -:10FB50002FC950A9300EFB680648FB6E0687E08F60 -:10FB600006A7A5A30C92EDB30005C4D1FAF8068050 -:10FB70005800C1E01037C064FACCF978F8070037B4 -:10FB8000C1F8FAC8F9841AD8FAC8FAD00A9A1AD869 -:10FB9000FAC8FBCC1AD8FAC9FFCCFAC8F9740E9B84 -:10FBA000029CF01F020D2FDD781A7809C288ECC282 -:10FBB000FFFF1036C0A4FACBF978F6070037EEFA4B -:10FBC000FDA8EEF9FDA4C1B840A959F8E0890013D9 -:10FBD000F2CAFFF850AAFAC6F978721AEC08003B8C -:10FBE0007209F74AFDA8F749FDA42FF8FB480680E3 -:10FBF000C068F2C8FFF8721A50A87209049650093A -:10FC0000501ACD58EDB30004C441FAF806805800EC -:10FC1000C1D01037C064FACEF978FC070037C1E8CC -:10FC2000FAC8F9841AD8FAC8FAD00A9A1AD8FAC8BF -:10FC3000FBCC0E9B1AD8029CFAC8F974FAC9FFCC07 -:10FC4000F01F01E52FDD780AC218ECC2FFFF103665 -:10FC5000C084FACCF978F8070037EEFAFDA4C16841 -:10FC600040A959F8E0890010F2CAFFFC50AAFACB6B -:10FC7000F978720AF6080039F34AFDA42FF8FB4818 -:10FC80000680C048720A2FC950A90496501AC8D8D5 -:10FC9000EDB30006C481FAF806805800C1D01037D1 -:10FCA000C064FAC8F978F0070037C1E8FAC8F984E7 -:10FCB0001AD8FAC8FAD01AD8FAC8FBCC1AD8FAC897 -:10FCC000F974FAC9FFCC0A9A0E9B029CF01F01C27C -:10FCD0002FDD9818C238ECC2FFFF1036C084FAC678 -:10FCE000F978EC070037EF08FDA6C18840A959F85C -:10FCF000E0890012F2CAFFFC50AA7209FACEF97824 -:10FD0000FC08003A2FF8F549FDA4FB480680F1D91C -:10FD1000B010C04892182FC950A950180496BF5867 -:10FD20005008C458FAF806805800C1D01037C06493 -:10FD3000FACBF978F6070037C1E8FAC8F9841AD87F -:10FD4000FAC8FAD00A9A1AD8FAC8FBCC0E9B1AD86D -:10FD5000029CFAC8F974FAC9FFCCF01F019F2FDD8D -:10FD6000780AC218ECC2FFFF1036C084FACAF978CC -:10FD7000F4070037EEFAFDA4C16840A959F8E089FC -:10FD80000010F2CAFFFC50AAFAC6F978720AEC0811 -:10FD90000039F34AFDA42FF8FB480680C048720AD8 -:10FDA0002FC950A90496501ABF5A500AFAEA000007 -:10FDB000580A5C2BC0E43008FAEA00003009F00A67 -:10FDC000010AF20B014B32D8FAEB0000FB68068700 -:10FDD0003010E08F04E30C99EDB30005C471FAF81C -:10FDE00006805800C1D01037C064FACAF978F40709 -:10FDF0000037C1D8FAC8F9841AD8FAC8FAD00A9AD2 -:10FE00001AD8FAC8FBCC0E9B1AD8029CFAC8F9740F -:10FE1000FAC9FFCCF01F01702FDD780AC2082FF657 -:10FE20001039C084FAC9F978F2070037EEFAFDA458 -:10FE3000C16840A959F8E0890010F2CAFFFC50AA35 -:10FE4000FAC3F978720AE6080039F34AFDA42FF8DC -:10FE5000FB480680C048720A2FC950A94062049826 -:10FE60009512BF589508FE9FFC03EDB30004C441F2 -:10FE7000FAF806805800C1D01037C064FACEF9787D -:10FE8000FC070037C1D8FAC8F9841AD8FAC8FAD0E2 -:10FE90000A9A1AD8FAC8FBCC0E9B1AD8029CFAC848 -:10FEA000F974FAC9FFCCF01F014C2FDD780AC208A3 -:10FEB0002FF61039C084FACCF978F8070037EEFA3B -:10FEC000FDA4C16840A959F8E0890010F2CAFFFCFE -:10FED00050AAFACBF978720AF6080039F34AFDA461 -:10FEE0002FF8FB480680C048720A2FC950A9406904 -:10FEF0009509FE9FFBBDE2130040C440FAF806805E -:10FF00005800C1D01037C064FAC8F978F00700373C -:10FF1000C1D8FAC8F9841AD8FAC8FAD00A9A1AD8F5 -:10FF2000FAC8FBCC0E9B1AD8029CFAC8F974FAC91D -:10FF3000FFCCF01F01292FDD780AC2082FF61039F7 -:10FF4000C084FAC3F978E6070037EEFAFDA4C16869 -:10FF500040A959F8E0890010F2CAFFFC50AAFAC281 -:10FF6000F978720AE4080039F34AFDA42FF8FB4837 -:10FF70000680C048720A2FC950A9406EB40EFE9F79 -:10FF8000FB77FAF806805800C1D01037C064FACC6D -:10FF9000F978F8070037C1D8FAC8F9841AD8FAC82E -:10FFA000FAD00A9A1AD8FAC8FBCC0E9B1AD8029C2F -:10FFB000FAC8F974FAC9FFCCF01F01072FDD780ADF -:10FFC000C2082FF61039C084FACBF978F60700374B -:10FFD000EEFAFDA4C16840A959F8E0890010F2CA00 -:10FFE000FFFC50AAFAC3F978720AE6080039F34A0E -:10FFF000FDA42FF8FB480680C048720A2FC950A9FB -:02000004800377 -:1000000040629502FE9FFB34A5A30C99EDB3000559 -:10001000C571FAF806805800C2601037C0A4FACE45 -:10002000F978FC070037EEEAFDA4FAEB0000C1887E -:10003000FAC8F9841AD8FAC8FAD01AD8FAC8FBCC88 -:100040001AD8FAC8F974FAC9FFCC0A9A0E9B029C16 -:10005000F01F00E12FDDF8E80000FAE900003000B1 -:10006000E08F03992FF61039C0B4FAC8F978F00779 -:100070000037EEEAFDA4FAEB0000E08F038C40A904 -:1000800059F8E0890016F2CAFFF850AAF2EA000017 -:10009000FAEB0000FACAF978F4080039FAEA00002D -:1000A000F2EBFDA42FF8FB480680E08F0374F2EA20 -:1000B00000002F89FAEB000050A9E08F036CEDB32C -:1000C0000004C141FAF806805800C0801037C60409 -:1000D000FACAF978F4070037C7782FF61039C774D1 -:1000E000FAC9F978F2070037C6F8EDB30006C45133 -:1000F000FAF806805800C1D01037C064FACCF978FD -:10010000F8070037C1D8FAC8F9841AD8FAC8FAD063 -:100110001AD8FAC8FBCC1AD8FAC8F974FAC9FFCCB5 -:100120000A9A0E9B029CF01F00AC2FDD9818C22883 -:100130002FF61039C084FACBF978F6070037EF08AC -:10014000FDA6C18840A959F8E0890012F2CAFFFC57 -:1001500050AA7209FAC2F978E408003A2FF8F54972 -:10016000FDA4FB480680F1D9B010C04892182FC9F1 -:1001700050A95C785018C418FAF806805800C1D00D -:100180001037C064FACCF978F8070037C1D8FAC83C -:10019000F9841AD8FAC8FAD00A9A1AD8FAC8FBCC45 -:1001A0000E9B1AD8029CFAC8F974FAC9FFCCF01F4A -:1001B000008A2FDD780AC2082FF61039C084FACBE6 -:1001C000F978F6070037EEFAFDA4C16840A959F89E -:1001D000E0890010F2CAFFFC50AAFAC2F978720A4C -:1001E000E4080039F34AFDA42FF8FB480680C04814 -:1001F000720A2FC950A9501A300E500E1C90E08F71 -:1002000002CA505750420897408540740C99FAF83A -:1002100006805800C1D01037C064FACCF978F807CE -:100220000037C1D8FAC8F9841AD8FAC8FAD01AD84F -:10023000FAC8FBCC1AD8FAC9FFCCFAC8F9740A9AE2 -:100240000E9B029CF01F00642FDD7809C2182FF668 -:100250001039C084FACBF978F6070037EEF9FDA41F -:10026000C17840A959F8E0890010F2CAFFFC50AAF1 -:10027000FAC2F9787209E408003AF549FDA42FF8AA -:10028000FB480680C058F2C8FFFC50A8720933082A -:10029000300EFB6806844D1C37885019A1B3FB68EB -:1002A0000685500E509CE08F02755057300B50421F -:1002B000FB6B06870897408540740C99FAF8068016 -:1002C0005800C1D01037C064FACAF978F407003773 -:1002D000C1D8FAC8F9841AD8FAC8FAD01AD8FAC814 -:1002E000FBCC0E9B1AD80A9AFAC8F974FAC9FFCC4B -:1002F000029CF01F00392FDD7807C2082FF6103955 -:10030000C084FAC9F978F2070037EEF7FDA4C16896 -:1003100040A959F8E0890010F2CAFFFC50AA720700 -:10032000FAC2F978E4080039F347FDA42FF8FB4836 -:100330000680C04872072FC950A9403E580EC1051B -:100340001C9A300B0E9CF01F0026E08002B6F807C6 -:100350000105403C1835E08902B0E08F02AF0E9CE9 -:100360003000F01F00201895E08F02A9A5A30C997A -:10037000EDB30005C581FAF806805800C2001037B9 -:10038000C064FACBF978F6070037C208FAC8F984D6 -:100390001AD8FAC8FAD00A9A1AD80E9BFAC8FBCC17 -:1003A000029C1AD8FAC8F974FAC9FFCCF01F000AE7 -:1003B0002FDDF8EA0000FAEB0000C3282FF6103911 -:1003C000C124FACAF978F4070037EEE8FDA4FAE987 -:1003D0000000C2688002F2288003EDE4800328A4B4 -:1003E0008002EDD040A959F8E0890015F2CAFFF863 -:1003F00050AAF2EA0000FAEB0000FACAF978F40811 -:100400000039FAEA0000F2EBFDA42FF8FB48068061 -:10041000C078F2EA00002F89FAEB000050A93010F2 -:10042000E08F01B9EDB30004C141FAF8068058002D -:10043000C0801037C604FACAF978F4070037C778C5 -:100440002FF61039C774FAC9F978F2070037C6F8E1 -:10045000EDB30006C451FAF806805800C1D0103739 -:10046000C064FACCF978F8070037C1D8FAC8F98423 -:100470001AD8FAC8FAD01AD8FAC8FBCC1AD8FAC8CF -:10048000F974FAC9FFCC0A9A0E9B029CF01F0086F1 -:100490002FDD9818C2282FF61039C084FACBF978CE -:1004A000F6070037EF08FDA6C18840A959F8E08992 -:1004B0000012F2CAFFFC50AA7209FAC2F978E408E5 -:1004C000003A2FF8F549FDA4FB480680F1D9B01099 -:1004D000C04892182FC950A95C785018C418FAF86F -:1004E00006805800C1D01037C064FACCF978F807FC -:1004F0000037C1D8FAC8F9841AD8FAC8FAD00A9ACB -:100500001AD8FAC8FBCC0E9B1AD8029CFAC8F97408 -:10051000FAC9FFCCF01F00642FDD780AC2082FF65D -:100520001039C084FACBF978F6070037EEFAFDA44B -:10053000C16840A959F8E0890010F2CAFFFC50AA2E -:10054000FAC2F978720AE4080039F34AFDA42FF8D8 -:10055000FB480680C048720A2FC950A9501A300EB5 -:100560003010500EC1794D1C509CEDB30005C541B3 -:10057000FAF806805800C2201037C0A4FACBF978E8 -:10058000F6070037EEE8FDA4FAE90000CF28FAC824 -:10059000F9841AD8FAC8FAD00A9A1AD80E9BFAC85F -:1005A000FBCC029C1AD8FAC8F974FAC9FFCCF01F28 -:1005B000003E2FDDF8EA0000C0C8ECCAFFFF10368D -:1005C000C0B4FAC9F9781496F2070037EEEAFDA430 -:1005D000FAEB0000CCE840A959F8E0890016F2E6F1 -:1005E0000000F2CBFFF8FAE7000050ABFAC6F9784A -:1005F000EC080039FAE60000F2E7FDA42FF81496A3 -:10060000FB480680CB68F2E600002F89FAE700007D -:1006100050A91496CAE8EDB30004C161FAF8068047 -:100620005800C0801037C6A4FACEF978FC0700370E -:10063000C838ECCAFFFF1036E0840082FACCF978A3 -:10064000F8070037C788EDB30006C4D1FAF8068072 -:100650005800C1D01037C064FACCF978F8070037D9 -:10066000C1F8FAC8F9841AD8FAC8FAD01AD8FAC860 -:10067000FBCC1AD8FAC8F974FAC9FFCC0A9A0E9BB7 -:10068000029CF01F00092FDD9818C2A8ECCAFFFFDA -:100690001036C0D4FACBF9781496F6070037EF0875 -:1006A000FDA6C1E88002F2288003EDE440A959F8D4 -:1006B000E0890013F2CBFFFC50AB7209FAC6F9785F -:1006C000EC08003B2FF8F749FDA4FB480680149680 -:1006D000F1D9B010C058921814962FC950A95C785F -:1006E0005018C458FAF806805800C1D01037C064BA -:1006F000FACCF978F8070037C1F8FAC8F9841AD8A3 -:10070000FAC8FAD00E9B1AD8FAC8FBCC0A9A1AD8A3 -:10071000029CFAC8F974FAC9FFCCF01F00C42FDD9F -:10072000780BC248ECCAFFFF1036C094FACBF978B8 -:10073000F60700371496EEFBFDA4C18840A959F8CE -:10074000E0890011F2CBFFFC50ABFAC6F978720BCE -:10075000EC080039F34BFDA42FF81496FB480680F3 -:10076000C058720B14962FC950A9501B300E500E52 -:100770004008401C300B18485F18E7E80008F608EE -:100780001800C0703308FB620685A1B3FB680684BD -:100790003020300AFB6A068740395809C025A7D3A4 -:1007A0004038401758085F194008FAC5F9900E48BC -:1007B00030025F18F3E81008E4081800C5E03018AC -:1007C000F0001800C0603028F0001800C051C3E8E5 -:1007D0000A970690C2C80A97FAE80000F5D8C00345 -:1007E0002D0A0EFAF00B1603F20C1603F7E911DBD3 -:1007F0001899169858085C29CF21FAE90000EDB342 -:100800000000C4613309F20A1800C4200EF9C408BC -:10081000F01F008730A82D0A3009AE8AFAEA0000DE -:10082000F01F008416991498FAE90000EECC00013C -:1008300030A83009FAEA00001897589A5C2BFE9B02 -:10084000FFE91BF800932D08C2080A97FAE8000098 -:10085000F5D8C004409EFC0A070A0EFAF20B1604F3 -:10086000F00A1604F5E911CA1699149858085C297B -:10087000CF01FAE90000C0C85800C091EDB30000F4 -:10088000C061FAC7F9913308AE88C0280A970E15DF -:100890004030C14850425057407410925802E08096 -:1008A00001B6300CFB620648FB6C06873015300041 -:1008B000FAC7F9B8C03840353000069A0699E21AEE -:1008C0000002E2190084508A5079EA000C42FB3899 -:1008D0000687300BF6081800F7B201FF580AF7B286 -:1008E00001FE5809C4514048041850385808E0899E -:1008F000001DC3E8FB4C06784CFE310C890E891CA8 -:10090000FB4B0674587BE08900042F84C0B8FACAF8 -:10091000F990402B029CF01F0049E0810189FAC444 -:10092000F9F8403B210B503BFAF90678FAF80674C7 -:10093000F2CCFFF0F0CBFFFF4BFA403E590EFE9990 -:10094000FFDB1C09890AFB490678891EFB4B0674EC -:10095000587BE08900042F84C0B8FACAF990402B74 -:10096000029CF01F0036E0810163FAC4F9F8FB38FD -:100970000687300CF8081800C1F0FAF80678FAC9B2 -:10098000F9792FF88909FB4806783019FAF80674C6 -:1009900089192FF8FB4806745878E08900042F84E1 -:1009A000C0B8FACAF990402B029CF01F0024E081E5 -:1009B000013FFAC4F9F8408B580BC1F0FAF80678F9 -:1009C000FAC9F97C2FE88909FB4806783029FAF83A -:1009D000067489192FF8FB4806745878E0890004DA -:1009E0002F84C0B8FACAF990402B029CF01F001364 -:1009F000E081011EFAC4F9F8407AE04A0080C5118E -:100A00004049041950395809E0890029C4A848C848 -:100A1000310EFB4C06788908891EFB4B0674587B07 -:100A2000E08900102F84C1788002F228800373408F -:100A30008002D9988003EDF88002F5488003ECE845 -:100A4000FACAF990402B029CF01F0052E08100F09E -:100A5000FAC4F9F8403C210C503CFAF90678FAF84F -:100A60000674F2CCFFF0F0CBFFFF4CBA403E590EBB -:100A7000FE99FFCF1C09890AFB490678891EFB4BAA -:100A80000674587BE08900042F84C0B8FACAF99034 -:100A9000402B029CF01F003FE08100CAFAC4F9F825 -:100AA0000A105800E089001BC3B8FB4C0678310AD5 -:100AB0004B9C891A890CFB4B0674587BE089000417 -:100AC0002F84C0B8FACAF990402B029CF01F003165 -:100AD000E08100AEFAC4F9F82100FAF90678FAF8D4 -:100AE0000674F2CCFFF0F0CBFFFF4ABA5900FE9932 -:100AF000FFDE0009890AFB4906788910FB4B067462 -:100B0000587BE08900042F84C0B8FACAF990402BC2 -:100B1000029CF01F0020E081008BFAC4F9F8FAF87B -:100B2000067889158907F0050005FAF80674FB4573 -:100B300006782FF8FB4806745878E08900042F8463 -:100B4000C0A8FACAF990402B029CF01F0012C6F10F -:100B5000FAC4F9F8E2130004C41040470417580718 -:100B6000E089001CC3B8FB4C067889058913FB4B50 -:100B70000674587BE08900042F84C098009A402BAB -:100B8000029CF01F0004C531FAC4F9F82107C0988F -:100B90008002F5488003ECE84AB53103FAC0F990C9 -:100BA000FAF90678FAF80674F2CCFFF0F0CBFFFF02 -:100BB0004A5A5907FE99FFD90E09890A8917FB4934 -:100BC0000678FB4B0674587BE08A0009FACAF99054 -:100BD000402B029CF01F001DC2A140684049E4095F -:100BE0000C4204085068FAF806785808C080FACA1F -:100BF000F990402B029CF01F0015C1913003FAC4FC -:100C0000F9F8FB430674FE9FF53302934020FAF88F -:100C100006785808C080029CFACAF990009BF01F21 -:100C2000000BC0613008FB480674C0284020806873 -:100C3000EDB80006C0313FF25062406CFE3DF978DD -:100C4000D83200008003EDF88002F548D431FACDA7 -:100C500001E03007503C16961295507A5087505755 -:100C60000E930E905047407E1D8957795809E080B9 -:100C700007A22FFE4D5C507E780C502CF809070817 -:100C8000E2180008C1B06C185808E08900070C9BF6 -:100C9000403CF01F004FCE816C084CCBF0C9FFFFE9 -:100CA000760A1188F4080708EDB80003CDD16C1856 -:100CB0008D0920182FF08D18CE7BE0490025E081AA -:100CC000008906941091109236CA344C358E407BC0 -:100CD0001739507B364BF6091800E08000BBE08BDB -:100CE0000042F8091800E08000B4E08B0021339B3B -:100CF000F6091800E08B01D2330BF6091800E082E8 -:100D00000094325BF6091800C640E08B000B5809CE -:100D1000E080074F324BF6091800E08101BFC8A8F8 -:100D200032ABF6091800E08101B9C6D8FC091800F9 -:100D3000E08000A4E08B000C34CBF6091800C7005B -:100D400034FAF4091800E08101A9C8C835BAF409D9 -:100D50001800E0800098363AF4091800E081019EFE -:100D6000C9E836FBF6091800C7E0E08B0017369B90 -:100D7000F6091800C720E08B0008368BF60918002A -:100D8000E081018CC4F8F4091800C3F036EAF409D4 -:100D90001800E0810183C8D8373AF4091800C1303F -:100DA000E08B0008370AF4091800E0810177C7A832 -:100DB000375AF4091800C5C0378AF4091800E081D1 -:100DC000016DC5B83029C7590000049C800328BCB8 -:100DD0006C185808E08900080C9B403CF01F006428 -:100DE000E08106E0407A6C08F539FFFF118AF20ACB -:100DF0001800E08106E02FF82FF08D086C182018FD -:100E00008D18C32BA5A1C64B407B1789F409180088 -:100E1000C0512FFBA1B1507BC5BBA1A1C59BA1B106 -:100E2000C57BA3A1C55BE4020022A17223021202CA -:100E3000C4FBE0420020E08B0007E4C4000130184E -:100E40003002C46B3168403A9538E08F06ABA1A1FF -:100E50004C8930AE5089C2B84C6C300B508C505B12 -:100E6000C279A1A14C4A3089508A5059C2194C2EDE -:100E700030AC508E505CC1C94BFBA9B1508B310ACC -:100E8000C169301950085019407BFACCFFD4F01FCB -:100E9000003BA7A1507C40194008C0B9A7A1300968 -:100EA000C0894B59E81102205089310E505EC009AB -:100EB000EDB10004FE90FED9EDB10002C441580826 -:100EC000C2500E34C064FACCFE20F8040024C2786C -:100ED000FACAFED40A99F407002A0E98130B14AB31 -:100EE0002FF81034CFC4EEC9FFFFEE0811FFF0C792 -:100EF000FFFF2FE808080807EA080025F2070007A7 -:100F0000FAC8FED4F0040324C1C8E6C8FFFF0E33BC -:100F1000C094FACBFE201093F6040024E8F4FF4CB2 -:100F2000C1086A042FC559F7E089000B1093FACA6B -:100F3000FE20F40700282FF7F144FF4CC02810933F -:100F4000A800C92AEDB10000C1A15808E0800088BE -:100F50000E34C635FACAFED40A99F407002A0E9850 -:100F6000130B14AB2FF81034CFC4C678800328BC01 -:100F70008002EFB480032E6C800329ECE2110002A2 -:100F8000C4805808C2500E34C064FACCFE20F80465 -:100F90000024C278FACAFED40A99F407002A0E98EF -:100FA000130B14AB2FF81034CFC4EEC9FFFFEE08BB -:100FB00011FFF0C7FFFF2FE808080807EA0800251F -:100FC000F2070007FAC8FED4F0040324C1C8E6C83B -:100FD000FFFF0E33C094FACBFE201093F6040024DA -:100FE000E8F4FF4CC1086A042FC559F7E089000BEB -:100FF0001093FACAFE20F40700282FF7F144FF4CA3 -:10100000C0281093E008141F89108908FE9FFE2D48 -:101010005808C2500E34C064FAC9FE20F2040024FD -:10102000C278FACAFED40A99F407002A0E98130B64 -:1010300014AB2FF81034CFC4EEC9FFFFEE0811FF38 -:10104000F0C7FFFF2FE808080807EA080025F207A5 -:101050000007FAC8FED4F0040324C1C8E6C8FFFFA5 -:101060000E33C094FAC2FE201093E4040024E8F486 -:10107000FF4CC1086A042FC559F7E089000B109393 -:10108000FACEFE20FC0700282FF7F144FF4CC028C1 -:1010900010938900FE9FFDE9402CF8090709EDB97E -:1010A0000000C021A1A14C7B30AA508B505A30398E -:1010B0006C1A580AE089000C501950080C9B403CEF -:1010C000F01F004140194008E081056CEDB10006B9 -:1010D000C151C1F86C1A201A8D1A580AE08A00040E -:1010E0008D0CC0B8501950080C9B403CF01F0036C6 -:1010F00040194008E08105562FF06C0A4B3EF4CCB5 -:10110000FFFF7C0B158AF60A070AEDBA0003CE3002 -:101110005829E08001C05839E080031D5819E0804B -:10112000011B029CE21C0010502C5802F9B2000175 -:10113000E3D1C001E080009B580CC0303001C4985E -:101140005808C2500E34C064FACBFE20F6040024C6 -:10115000C278FACAFED40A99F407002A0E98130B33 -:1011600014AB2FF81034CFC4EEC9FFFFEE0811FF07 -:10117000F0C7FFFF2FE808080807EA080025F20774 -:101180000007FAC8FED4F0040324C228E6C8FFFF13 -:101190000E33C094FACAFE201093F4040024E8F43D -:1011A000FF4CC1686A042FC559F7E08900111093FC -:1011B000FAC9FE20F20700282FF7F144FF4CC0883F -:1011C0008002EFB4800328BC0000049C10930891B7 -:1011D00030044D5E7C081034E08004E46C08118912 -:1011E000FAC8FE200808F169FFCC6C1820188D1889 -:1011F0006C082FF8308A8D08300BFACCFE2CF01FCB -:10120000004B2FF4FAC8FE2C0899FACAFE54029B30 -:10121000403CF01F00475BFCE08004C4580CC061F8 -:10122000402C580CC051830CC0385BECC0B0080097 -:10123000402B2012580BF9B40100F7B100FCFBF46D -:1012400000026C185808E089000B0C9B403CF01F12 -:101250000039C0505804C050E08F04A45802CBA1FC -:10126000402A580AFE91FD01C718402E580EC1A011 -:101270006C186C090438C0F4100910128D091001A3 -:101280000C9B403CF01F002BCF405801E08101E651 -:10129000E08F0488040904188D098D180401E08F7B -:1012A00001DD5808C2500E34C064FACCFE20F804A8 -:1012B0000024C278FACAFED40A99F407002A0E98CC -:1012C000130B14AB2FF81034CFC4EEC9FFFFEE0898 -:1012D00011FFF0C7FFFF2FE808080807EA080025FC -:1012E000F2070007FAC8FED4F0040324C258E6C887 -:1012F000FFFF0E33C094FACBFE201093F6040024B7 -:10130000E8F4FF4CC1986A042FC559F7E08900142E -:101310001093FACAFE20F40700282FF7F144FF4C7F -:10132000C0B80000000009AC8002E8BC800328407F -:10133000800328BC1093049A089C0C99301BF01F62 -:1013400000C9E080042FF800000040492FF95049FF -:10135000FE9FFC8B5802F9B200FFEDB10004C261A0 -:1013600030040891C1286C188D0920188D182FF4AD -:101370000832E080008D5808E08900080C9B403C52 -:10138000F01F00B9E08100846C08FACEFE20F0C99D -:10139000FFFF1188FC080008F138FE4CE208180035 -:1013A000CE315804C741E08F04065808C2500E34AD -:1013B000C064FACCFE20F8040024C278FACAFED435 -:1013C0000A99F407002A0E98130B14AB2FF8103467 -:1013D000CFC4EEC9FFFFEE0811FFF0C7FFFF2FE8F3 -:1013E00008080807EA080025F2070007FAC8FED433 -:1013F000F0040324C1C8E6C8FFFF0E33C094FACB43 -:10140000FE201093F6040024E8F4FF4CC1086A049F -:101410002FC559F7E089000B1093FACAFE20F40794 -:1014200000282FF7F144FF4CC02810930891300892 -:10143000C1886C1A201A8D1A133A02CA8D095802F3 -:10144000C1D06C195809E089000D50080C9B403C34 -:10145000F01F00854008C0500831C101E08F03A291 -:101460006C0AFACEFE2014992012158AFC0A000A92 -:10147000F53AFE4CF00A1800CDD1E2040104E080F8 -:10148000039A404C2FFC504C3008A2880800FE9F65 -:10149000FBEC029BE21B0010502B5802F9B200FF3C -:1014A000E3D1C001E08000BC580BC050FACAFE2452 -:1014B000506AC4385808C2500E34C064FAC9FE20BD -:1014C000F2040024C278FACAFED40A99F407002A6A -:1014D0000E98130B14AB2FF81034CFC4EEC9FFFFD6 -:1014E000EE0811FFF0C7FFFF2FE808080807EA0819 -:1014F0000025F2070007FAC8FED4F0040324C1C88F -:10150000E6C8FFFF0E33C094FACEFE201093FC0411 -:101510000024E8F4FF4CC1086A042FC559F7E0899C -:10152000000B1093FACCFE20F80700282FF7F144A7 -:10153000FF4CC0281093506430014CC4C598680813 -:101540001031E080032FFAC8FE200208F169FFCCB9 -:101550006C1820188D186C082FF8308A8D08300B05 -:10156000FACCFE2CF01F00422FF1FAC8FE2C029993 -:10157000FACAFE54406B403CF01F003E5BFCE0802A -:101580000311580CC041406B970CC0385BECC23063 -:10159000406A740CF01F0038C100FAC4FE20020437 -:1015A0002354C088098B201120140C9A403CF01F52 -:1015B00000335801CF81C2C80200402920125809C7 -:1015C000F8011710FBF80006F7B800FCFBF80A0654 -:1015D000FBF100026C185808E089000B0C9B403CA2 -:1015E000F01F0021C0505801E08102DCC1186C08D6 -:1015F00058025F1A11894A2E300C7C08F00907083E -:10160000EC180008F5E80238F8081800C991402BDA -:10161000580BFE91FB2A406A950BC98A402E580E42 -:10162000C300C1086C188D0A20188D182FF10232E2 -:10163000C1405808E08900070C9B403CF01F000A9D -:10164000C0C16C0848ECF0CAFFFF78091188F208A5 -:101650000708EDB80003CE710200FE9FFB060000F4 -:10166000800320B8800328BC000009AC8002E8BCDD -:10167000800328408003274880032FF40000049C47 -:101680005808C2500E34C064FACBFE20F604002481 -:10169000C278FACAFED40A99F407002A0E98130BEE -:1016A00014AB2FF81034CFC4EEC9FFFFEE0811FFC2 -:1016B000F0C7FFFF2FE808080807EA080025F2072F -:1016C0000007FAC8FED4F0040324C1C8E6C8FFFF2F -:1016D0000E33C094FACAFE201093F4040024E8F4F8 -:1016E000FF4CC1086A042FC559F7E089000B10931D -:1016F000FAC9FE20F20700282FF7F144FF4CC0285A -:1017000010930891C1286C1920198D19113902C93B -:101710008D085802C1506C185808E08900070C9BCE -:10172000403CF01F0059C0C16C094D8E12987C0AD4 -:1017300013892012F4090709EDB90003CE51404C7A -:101740002FFC504C08103008E2000000A288FE9FD9 -:10175000FA8CE4C90001E0490026E08B0005300B5B -:10176000506BC058E4CA00273272506A3009FACE72 -:10177000FE54509950A7E8110D80502E35894057DE -:101780006C0A339C158AF80A1800E08B0015338B1D -:10179000F60A1800C4E2330BF60A1800C270E08B98 -:1017A000004532BBF60A1800C51032DBF60A1800F5 -:1017B000C7C1C4C8F20A1800C4E0E08B000AF4CB29 -:1017C0000041305EFC0B1800E08B0070C398361CA3 -:1017D000F80A1800C6A3366BF60A1800E088003134 -:1017E000378EFC0A1800C611C368029BEDB1000BCE -:1017F000C3C15807E06B0200E3DBE031F9B7000832 -:10180000EDB1000AC041E011FA7FC2F8409B406C84 -:101810002FFB580CF7BC0101FBFC1A06F7B201FFC5 -:10182000E011FC7F509BC248499EFC070417C0B8DA -:10183000497CF80704175887E0890006C36858A751 -:10184000E08A0034E011F47FC108EDB10007C2D195 -:10185000A7D1C0B8029BE21B0600E04B0200C251B8 -:10186000A9D13107E8110500402B16CA502B6C1A7C -:10187000201A8D1A580AE08A000D6C0A2FFA8D0A78 -:10188000C1180000800328BC0000049C8003EF08FE -:10189000501950080C9B403CF01F00BD40194008F7 -:1018A000C0412012FE91FF6E505740A7EDB10008D5 -:1018B000C161FAC9FE54402A123AE088000B40295F -:1018C0000C9A137B403C50085029F01F00B240088E -:1018D000FAC9FE5440221232E080016D029AE21AE7 -:1018E0000010E081014B402EBC8A50084059FACBD1 -:1018F000FE54403C40825D1202994008E2190020EB -:10190000C2A05808C1400E34C064FACEFE20FC04C8 -:101910000024C1D9FACAFED40A99F407002A0E9805 -:10192000130B14AB2FF81034CFC4CF68E6C8FFFFF9 -:101930000E33C064FACBFE20F6040024C0796A049A -:101940002FC559F7E08901151093FACAFE20F40754 -:101950000028C0A9EDB10002C4415808C2500E349D -:10196000C064FAC9FE20F2040024C278FACAFED488 -:101970000A99F407002A0E98130B14AB2FF81034B1 -:10198000CFC4EEC9FFFFEE0811FFF0C7FFFF2FE83D -:1019900008080807EA080025F2070007FAC8FED47D -:1019A000F0040324C1C8E6C8FFFF0E33C094FAC296 -:1019B000FE201093E4040024E8F4FF4CC1086A04FC -:1019C0002FC559F7E089000B1093FACEFE20FC07D3 -:1019D00000282FF7F144FF4CC0281093A80CCCA886 -:1019E000F5D1C001C2A05808C1400E34C064FACB82 -:1019F000FE20F6040024CAB8FACAFED40A99F407F5 -:101A0000002A0E98130B14AB2FF81034CFC4C8481B -:101A1000E6C8FFFF0E33C064FACAFE20F4040024B7 -:101A2000C9586A042FC559F7E08900A31093FAC971 -:101A3000FE20F2070028C988E2110002C5904D6916 -:101A400040821232C091FACBFE544059403C5008BB -:101A5000F01F0052C088FACBFE544059403C500859 -:101A6000F01F004F40085808C2500E34C064FACE30 -:101A7000FE20FC040024C278FACCFED40A99F807B0 -:101A8000002C0E98130E18AE2FF81034CFC4EEC9E8 -:101A9000FFFFEE0811FFF0C7FFFF2FE80808080757 -:101AA000EA080025F2070007FAC8FED4F004032470 -:101AB000C1C8E6C8FFFF0E33C094FACCFE201093D5 -:101AC000F8040024E8F4FF4CC1086A042FC559F754 -:101AD000E089000B1093FAC9FE20F20700282FF7C7 -:101AE000F144FF4CC0281093891A890BC438580858 -:101AF000C2500E34C064FAC8FE20F0040024C2783C -:101B0000FACAFED40A99F407002A0E98130B14ABF4 -:101B10002FF81034CFC4EEC9FFFFEE0811FFF0C755 -:101B2000FFFF2FE808080807EA080025F20700076A -:101B3000FAC8FED4F0040324C1C8E6C8FFFF0E3380 -:101B4000C094FAC2FE20E40400241093E8F4FF4C91 -:101B5000C1086A042FC559F7E089000B1093FACE2B -:101B6000FE20FC070028F144FF4C2FF7C0281093FB -:101B7000890C404C2FFC504CFAC8FE54409B10106E -:101B8000402A1600F4000000FE9FF86F800328BC76 -:101B900080032FF480032E6C80032CE480032B340D -:101BA00040495809C0508C68EDB80006C0313FF874 -:101BB0005048404C288DD832D421217D1497189656 -:101BC000129A5807C064E068008B99383FFCC2281D -:101BD0005807EE0C1700F9B901FFEFD9E10C109985 -:101BE000E0680208BA683FF8504B505C500B502C2C -:101BF000BA781A9B0C9CF01F00095BFCC044E0689B -:101C0000008B8D385807F9B90100FBF81000F1F985 -:101C10001E002E9DD82200008002F568D401129883 -:101C20001499169A189B483C780CF01F0003D802B0 -:101C30000000059880031BB8D4214B3818961697DE -:101C4000700C580CC06078685808C031F01F002F25 -:101C50004AF81037C0514AC870087007C0E84AD81F -:101C60001037C0514A8870087017C0784AA81037DA -:101C7000C0414A58700870278E68EDB80003C1E073 -:101C8000EDB80004C3E1EDB80002C1516EDB580BA2 -:101C9000C0A0EEC8FFBC103BC0400C9CF01F001F52 -:101CA00030088FD88E68E018FFDBAE6830088F18D8 -:101CB0006E488F088E68A3B8AE686E485808C0B1E9 -:101CC0008E68E2180280E0480200C0500C9C0E9B17 -:101CD000F01F00138E69F1D9C001C07030088F2841 -:101CE0006E585C388F68C068EDB90001EFF81005D8 -:101CF0008F286E485808C0618E68EDB80007C02173 -:101D0000DC2AD82A0000059880031F388003EF2CB6 -:101D10008003EF4C8003EF6C8003217C8003276CF1 -:101D20004828700C2F4C5EFC00000598D4211697B3 -:101D3000189676485808C7D0580CC060786858087C -:101D4000C031F01F003D4BD81037C0316C07C0A820 -:101D50004BB81037C0316C17C0584BA81037EDF78F -:101D600000028E6A1498EDBA0003C420ABBAAE6AC2 -:101D70006E185808E08900066F085808E08A005A73 -:101D80006EB85808C560E21A1000C0306F55C0F830 -:101D900030196E8B0C9C5D1818955BFCC0816C38FB -:101DA00059D8C4708E68A7A8AE68D8228E68EDB8DE -:101DB0000002C0916E1810156ED85808EFF8101078 -:101DC000EBD8E1156EB80C9C30090A9A6E8B5D1841 -:101DD0008E680A3CC261ABD8300C6E49AE688F1C6D -:101DE0008F09EDB8000CC251EF450054D8226E4562 -:101DF0005805C1F06E04F5DAC0028F05F9B801008C -:101E0000EFF800050A148F28C11808990A9A6EA8DD -:101E10006E8B0C9C5D181814580CE08900078E68B6 -:101E2000A7A83FFCAE68D82218055804FE99FFEF1A -:101E3000D82A000080031F388003EF2C8003EF4C6A -:101E40008003EF6CD401189B580CC0714868487B24 -:101E5000700CF01F0007D8024868700CF01F0003D8 -:101E6000D80200008003ECA880031D2C800325E825 -:101E7000000005985EFC5EFCD401483BF01F0003A7 -:101E8000D80200008003629080032640D42116957A -:101E9000F606105CECCBFFF4F01F00071897C0901B -:101EA0009915300B2F4C0C9A8F2C8F0BF01F0003C1 -:101EB0000E9CD8228002E2BC8002E8BCD42149C832 -:101EC000189670076E685808C0410E9CF01F0019E4 -:101ED000EEC7FF2830056E2C6E18C0689869EA09B5 -:101EE0001900C1202A4C2018CFA76E085808C071CD -:101EF000304B0C9CF01F00108F0CC0306E07CECB07 -:101F000030C88D38D8223008F948004C99089928F3 -:101F1000991899489958996899D899E8F9480048C2 -:101F20003FF8B8783018B868D82200008003ECA8D1 -:101F300080031F3880031E8CD421189678675807B9 -:101F4000C4714A48301599A8F94700D8F94700DC10 -:101F5000F94700E09965F01F00208D0C0C9CF01FE4 -:101F6000001E8D1C0C9CF01F001C6C093048930750 -:101F7000B268931793276C18B27793479357936778 -:101F80009389910791179127494E495B939E93AB93 -:101F9000494A495493BA93C43099B069B07591C411 -:101FA0009147915791679188919E91AB91BA8D2CF1 -:101FB00031289907B868991799273028B87899C4B3 -:101FC0009967999E99AB99BA99479957998CD82254 -:101FD00080031E7880031EBC80032B1080032AD848 -:101FE00080032AAC80032A9CD4014858169AFAC967 -:101FF000FFFC189B700CF01F0003D802000005982E -:1020000080033424D43114901291169310971895AC -:10201000F20A02425802C0310491C418580CC06040 -:1020200078685808C031F01F001F49F81037C031D8 -:102030006A07C0A849D81037C0316A17C05849C8C4 -:102040001037EBF700026E185808C03430088F18AC -:102050000496C148F01F00176E08080308160E9B6F -:10206000F00400040A9C8F04F01F0013C070E40603 -:102070000109F2000D081091C1286E146E08069C2B -:10208000089A109B0836FE9BFFE70C9AF01F000988 -:102090006E080C088F086E180C188F18029CD83226 -:1020A00080031F388003EF2C8003EF4C8003EF6C1C -:1020B0008002E736800328BCD40112981499169A3E -:1020C000189B483C780CF01F0003D80200000598CC -:1020D00080032004D42116951897F01F00234A345A -:1020E00068287016E016FFFCECC8FF91F0050105AA -:1020F000E015FF80EAC50080E045007FE08A00230C -:10210000300B0E9CF01F001A68280C08103CC1A16F -:10211000EA0B11000E9CF01F00165BFCC171300B26 -:102120000E9CF01F00136828F808010958F9E08A8E -:10213000000AA1A9911948F8700948F8F80901099D -:1021400091090E9CF01F000DD82A68280A16A1A636 -:102150009116489870090A190E9C9109F01F000702 -:10216000DA2A00008002E8CA0000059C8002EBC861 -:10217000000009A800007AD08002E8CCD42116968D -:102180001897580BE08000CAF01F004E20864CEADA -:102190006C18742EF9D8C001A1C8EC080009721B94 -:1021A000E01BFFFC1C39C1D1F6080008580CC081A7 -:1021B0006C09121612086C3B6C299729933B1099F5 -:1021C0009526A1A98D194C1972091238C0634C08C3 -:1021D0000E9C700BF01F003F0E9CF01F003FD8229A -:1021E000931B580CC030300CC1086C0EF4C5FFF8BE -:1021F0001C161C086C2E0A3EF9BC0001EDF51003FC -:10220000EBFE1A02FDF51A03F20B000E7C1EEDBE6A -:102210000000C1301608580CC0C14ABE722B2F8E68 -:102220001C3BC071973697268D2B8D3B301CC058B8 -:10223000722B7239932B97391099EC080908A1A9D0 -:102240008D19580CC671E04801FFE08B0013A3986C -:10225000F4080039722B8D398D2B97369326A348BD -:102260007419301BF6080948F3E810089518C528BA -:10227000F00916095849E08B0006F00B16062C8B66 -:10228000C2D85949E08B0005F2CBFFA5C278E049DE -:102290000054E08B0006F00B160C292BC1F8E04926 -:1022A0000154E08B0006F00B160F289BC178F00B51 -:1022B0001612E0490554E088001137EBC0F8000021 -:1022C0008002E8CA0000059C000009A400007ACC46 -:1022D000800320D48002E8CC284BF40B003C782902 -:1022E0001839C0E17418A34B301CF80B094BF1EB03 -:1022F000100B1298951BC0A872291839C060721A69 -:10230000E01AFFFC1438CF9372388D388D2993363C -:1023100091260E9CF01F0002D82200008002E8CC1B -:10232000D431203D14941895169774285808E080ED -:10233000014A9668EDB80003C04176485808C0C10C -:102340000E9B0A9CF01F00A1C0708E68A7A8AE6803 -:1023500030988B38C3598E6368000696E2160002E7 -:10236000C2103003E06204000696C04860036016A5 -:102370002F805806CFC0E0460400EC091780E4091E -:1023800017B0069A6EA86E8B0A9C5D181816580C2A -:10239000E08A0114682818188928E08001141803BD -:1023A000CE9BE7D3C001C07050060C930C91501522 -:1023B0000892CA0806960891C048600360162F80EC -:1023C0005806CFC08E686E241099E2190200C570BD -:1023D0000836C4531099E2190480C4106E4B6E097C -:1023E000161950096E59109CF209001A3028F40889 -:1023F0000C08FAE9000410944009E21C04002FF9CB -:102400000C091238F2041730580CC110089B0A9CB2 -:10241000F01F006F1892C150400A6E4BF01F006D04 -:102420008E68E018FB7FA7B8AE68C0E8089A0A9CDF -:10243000F01F00691892C0816E4B0A9CF01F006764 -:1024400030C88B38CBA8400A4009E80A010AE409E1 -:1024500000088F548F2A8F088F420C940836EC04A2 -:102460001730069B089A6E0CF01F005D6E08080876 -:102470008F086E2808180C948F28C30808365FBA96 -:102480006E0C6E48103C5FB8F5E80008F2081800C2 -:10249000C0E0069B089AF01F00526E0808080E9BC9 -:1024A0008F080A9CF01F004FC190C8786E591236F1 -:1024B000C0A36EA8069A6E8B0A9C5D181894E089DA -:1024C000000EC7B80C9A069BF01F00456E080C085A -:1024D0000C948F086E280C188F28622808188328FF -:1024E000C71008160803C6DB6003601130082F8090 -:1024F00050085801CFA0400A580AC181029A30AB57 -:10250000069CF01F0039F9B80101F9D8E106EDD3B6 -:10251000E116F9B90101FBF91A00F9B80001E3D895 -:10252000E006F9B80001FBF80A000236EC04178057 -:10253000E20417B06E596E25F20500050A345F9A61 -:102540006E0C6E48103C5FB8F5E80008300AF408DD -:102550001800C0E0069B0A9AF01F00216E080A08C6 -:102560000E9B8F08401CF01F001FC180C2681234F0 -:10257000C0A56EA8069A6E8B401C5D181895E08960 -:10258000000EC1B8089A069BF01F00156E080808D7 -:1025900008958F086E2808188F280A16C0710E9BA0 -:1025A000401CF01F0010C091500664280A188528AE -:1025B000C0900A110A03C9EB8E68A7A8AE683FFC59 -:1025C000C028300C2FDDD83280031C388002E2BCDA -:1025D0008002E7368002E8E88003217C8002E87E02 -:1025E00080031D2C800328A4D43130051893169045 -:1025F0000A91F01F00123FF2E6C7FF28C1786E264D -:102600006E142F46C0D88C08E2081900C0808C18C0 -:10261000E4081900C040069C5D1018452A462014A5 -:10262000ECCB000C5804CF046E075807CE91F01F76 -:1026300000040A9CD832000080031E7480031E76BA -:10264000D43130051691F8C7FF280A92F01F001008 -:102650003FF3C1686E266E142F46C0C88C08E4088C -:102660001900C0708C18E6081900C0305D111845BB -:102670002A462014ECCC000C5804CF146E075807DF -:10268000CEA1F01F00040A9CD832000080031E7403 -:1026900080031E76D401201D4848189B1A9A700C9E -:1026A000F01F00032FFDD80200000598800326B01C -:1026B000D431169414921895F01F00204A08700720 -:1026C0005807C050300633DA0C98C0780A9CF01FC7 -:1026D000001D0E9CD8322FF6E8060709F0091800F5 -:1026E0005F1BF40918005F191669F0091800CF4143 -:1026F000C1A8029C0C9A089BF01F0013C1216E0117 -:102700000C010388E6081800C0C148D870080A9C6C -:102710001017A3478507F01F000BE2CCFFFFD8324C -:102720002FC7C02833D36E015801CE410A9CF01F39 -:102730000005029CD8320000800361BC000009B093 -:10274000800361BE8002EDE6E04C00FFE0880003FC -:102750005EFD48487008F00C070CE21C00085EFCA7 -:102760000000049C481C5EFC8003EF8CD42120FDFB -:10277000966816971896E2180002C3C1967BF00B74 -:102780001900C0551A9AF01F002AC0F48E650A98E5 -:10279000ABB8E2150080AE683004E0680400F9B51B -:1027A0000140F0051700C1B84018E218F000E048F9 -:1027B00020005F04E0488000C0D16EB949D81039CC -:1027C000C0918E68E0650400ABA8EF450050AE688C -:1027D000C0688E68E0650400ABB8AE680A9B0C9CCC -:1027E000F01F00158E68C0D1EDB80009C1E0A1B896 -:1027F000AE68EEC8FFB98F488F0830188F58C1589F -:10280000A7B88F4CAE688F5548C88F0C8DA8580458 -:10281000C0C08E7CF01F000AEFF81206F9B9010162 -:10282000F1D9E138EFF81C062F1DD822800362A8E9 -:1028300080032AAC8002E2BC80031E788002F1682B -:10284000D42118971096580AC041149B3019486A31 -:10285000F01F00065BFCC06130088D08E068008A4C -:102860008F38D82280037E208003286C201D5809D1 -:102870005F09580BFA0B1700580A5F18F3E80008B5 -:102880003009F2081800C0303FECC0B8580AC03117 -:10289000149CC078158997091589F00918005F1CE8 -:1028A0002FFD5EFCF7DBC008C068201A19881638B7 -:1028B0005E0C2FFC580ACFA15EFAD703D4211697DD -:1028C0001896580CC06078685808C031F01F00385E -:1028D0004B881037C0316C07C0A84B781037C03117 -:1028E0006C17C0584B581037EDF7000230088F189E -:1028F0008E68EDB80005C590EDB80002C1A0EDB836 -:102900000004C060A7A8AE6830988D38C4D8EDB870 -:102910000003C0B10E9B0C9CF01F0029C4618E689F -:102920008F6CA3D88F2CAE688E68A3A8AE68C14800 -:102930006EDB580BC110EEC8FFBC103BC0400C9CB6 -:10294000F01F0020300C6F088FDC8F185808C04033 -:102950006EF88F08D8226E485808C0510E9B0C9C08 -:10296000F01F00198E68F1D8C002C0604978498B09 -:10297000700CF01F00186E4A6E980C9C8F0A6E59EE -:102980006E8B5D188E688F1CADD8AE68580CE08ACF -:102990000003D82A580CC041A5B8AE68C058A7A8F3 -:1029A000AE6830088F18DC2ADC2A000080031F384C -:1029B0008003EF2C8003EF4C8003EF6C80031D2C11 -:1029C0008003217C8003276C8003ECA8800329D43A -:1029D00080032640D4019868E21800095898C02066 -:1029E000D80AF01F0002D80280031E44D431189E7A -:1029F0001738E048005EC030300AC0381738301A47 -:102A00003009FC090B0A2FF9E0490100CFB1580841 -:102A1000C041F6CC0001D832149632D4EC16000135 -:102A2000300735D5C0381498129BFC080B06F6C940 -:102A3000FFFF178A129CE80A1800C090EA0A1800E3 -:102A4000C1E0EE0A1800CF01169CD832138C103C5E -:102A50005F53E04C005D5F0AE7EA100AEE0A1800D7 -:102A6000C03032D8CE2BF0CAFFFFFC0A000A14C6D1 -:102A70002FF81838CFD52FEB2FE9CDCBD8321498BB -:102A8000F5DBC01FF00C1100104CFC187FF0F5ECCA -:102A900013FCF00C010CBF9C5EFCD703D401967BA9 -:102AA000F01F0002D8020000800353E0D4211697E3 -:102AB000967BF01F00098E681099ADC95BFCEFF999 -:102AC0000C06EFFC1A15E0691000F1D9E138EFF8B7 -:102AD0001C06D822800362D4D421966816971495D8 -:102AE0001294E21801001896C0603029300A967BD3 -:102AF000F01F00068E68ADC808990A9A8E7B0C9C60 -:102B0000AE68F01F0003D822800362D4800353B460 -:102B1000D4211697967BF01F0007C0656F581808E0 -:102B2000EF480054D8228E68ADC8AE68D8220000A5 -:102B30008003694CD431208D4DB8500B7008507C07 -:102B4000502A1295501816970F36401AF4060704AB -:102B5000E2140008CFA1E046002DC0410F3630142A -:102B6000C058E046002BC0210F3658055F085905B4 -:102B70005F0A3009F1EA100AF20A1800C1D0E046F3 -:102B80000030C1210F8A358B378CF60A18005F0B95 -:102B9000F80A18005F0A144BF20B1800C0500F9689 -:102BA00031052FE7C0985808C070E0460030F9B5ED -:102BB0000008F9B5010A5804C0713FF0E061FFFF59 -:102BC000EA117FFFC0483000FC118000EA03141FA7 -:102BD0000A980699009A029BF01F00340699505AF1 -:102BE0000A98009A029BF01F0032069C14981699CE -:102BF000300A30003001149E109212934019F206F0 -:102C0000070BF3DBC001F9B90137F9B90057506977 -:102C1000ECC80030EDBB0002C0804069F7DBC002A9 -:102C2000EC090108580BC2D00A38C2B40430E601DE -:102C300013005FB9F3EA13FAFC0A1800C1F104307B -:102C4000E60113005F09405A14385F9AF5E900095C -:102C5000FC091800C131E005064AEA010249504862 -:102C6000F8000349BF58F20B000B5038FAE0000C93 -:102C70001400E20B0041301AC0283FFA0F36CBFB9C -:102C80005BFAC1715804C0713FF0E061FFFFEA11C7 -:102C90007FFFC0483000FC11800032284079933813 -:102CA000C10800000000049C800373408002D99892 -:102CB0005804C07030083009F0000100F2010141F1 -:102CC00040285808C0B0580AF9B801FFEFD8E10A07 -:102CD000FBFA1A00402940089308009A029B2F8DA6 -:102CE000D8320000D431209D4DE816927008508CE7 -:102CF000505A1295504816970F36404EFC0607035F -:102D0000E2130008CFA1E046002DC0410F3630137A -:102D1000C058E046002BC0210F3658055F08590502 -:102D20005F0A3009F1EA100AF20A1800C1D0E04641 -:102D30000030C1210F8A358B378CF60A18005F0BE3 -:102D4000F80A18005F0A144BF20B1800C0500F96D7 -:102D500031052FE7C0985808C070E0460030F9B53B -:102D60000008F9B5010AEA04141F0A9808993FFA05 -:102D70003FFBF01F003D0899502B503A0A983FFA4C -:102D80003FFBF01F003A300B300830094041E206AB -:102D9000070EE1DEC001ECCC00305800F9B101377C -:102DA000F9B100571C90E2100004C061EC01010C65 -:102DB000FDDEC002C3700A3CC354FAE000080038CC -:102DC000E20913005FBE3000FDEB13FBE00B1800BF -:102DD000C261FAE00008143C5F9E0038E20913006B -:102DE0005F0B3000FDEB000BE00B1800C181F0051C -:102DF0000640EA09024BFAE10000E808034BF6013D -:102E00000001507C5001BF5CFAE00000506C301BA8 -:102E1000FAE800180008F2010049C0283FFB0F360D -:102E2000CB6B5BFBC071322840803FF981383FF8A3 -:102E3000C0985803C07030043005E8080108EA095A -:102E40000149405E580EC080580BF9BA01FFEFDA15 -:102E5000E102405A9502109A129B2F7DD832000051 -:102E60000000049C8002D99880037340D431203D37 -:102E70004C48502C70011698113EE20E0705E215E1 -:102E80000008CFB1E04E002DC041113E3015C058B2 -:102E9000E04E002BC021113E58095F0C59095F0616 -:102EA0003007F9E61006EE061800C1E0E04E0030EB -:102EB000C131118635843783E80618005F04E606C1 -:102EC00018005F06E9E61006EE061800C050119ED5 -:102ED00031092FE8C098580CC070E04E0030F9B9A5 -:102EE0000008F9B9010A3FF3E6090D023007500363 -:102EF0000E9C0E93E20E0704E1D4C001F9B0013735 -:102F0000F9B000575010FCC600300890E2100004E1 -:102F1000C0814010E9D4C002FC0001065804C1C0C1 -:102F20001236C1A4043C5FBEFDE713FEE60E180096 -:102F3000C101043C5F0E40070E365F97EFEE000EB6 -:102F4000E60E1800C061B33C3017EC0C000CC02832 -:102F50003FF7113ECD0B5BF7C061322940200E9C3C -:102F60008139C0485805FBBC0100580AC070580799 -:102F7000F9B901FFF1D9E10B950B2FDDD832000033 -:102F80000000049CD421169776DBEEC8FFBC103BF2 -:102F9000C171E06B0400F01F0015C250E06804002E -:102FA0008FDC8FE8EF380046F8CCFC03B8A8EF3888 -:102FB0000045B898EF380044B8888F0CC1386EE5EA -:102FC000EA041501089AF01F000A1896C0C00A9A70 -:102FD000189BF80500050A9CF01F00068FE48F057A -:102FE0008FD6D82ADC2A00008002E2BC8002E8E802 -:102FF0008002E736D4211697149618955BFBC650CD -:10300000580CC06078685808C031F01F00314B1868 -:103010001036C0316A06C0A84AF81036C0316A16A8 -:10302000C0584AE81036EBF600028C68A5D8AC68A8 -:10303000EDB80002C140EDB80004C461EDB8000372 -:10304000C0B10C9B0A9CF01F0026C3E18C688D6CFC -:10305000A3D88D2CAC688C68A3A8AC680E946CD8EF -:103060005C545808C1006C196CE81039C0650A9CA2 -:103070000C9BF01F001CC2816C0820188D08B084C6 -:103080000897C0C86C495809C0C06C081238E0885D -:10309000000911770837C0518D086C182FF8C12826 -:1030A0006C18ED4800406C088DF8ECC8FFBC8DD85A -:1030B00030388DE8ECC8FFBAED6400468D080897FB -:1030C00030188D18C0283FF70E9CD82280031F3877 -:1030D0008003EF2C8003EF4C8003EF6C80031D2CEA -:1030E00080032F84D431208DFAC4FFBC504B682E4E -:1030F000505812967C0B7005506E580BF40B17004D -:103100006803681140493008C2C92FFB325C178A36 -:10311000F80A18005F1EF00A18005F1CFDEC000C96 -:10312000F00C1800CF31580AE0800129300C3FFA2A -:103130001890503A18941892F80C003C1697507C4E -:103140004CDC0F3AF80A070E407C1C0C4CBEFC0C01 -:10315000070E201E500E4CAEFC0C070C507C400C91 -:10316000587CE08B00F84C7EFC0C032F368BF60A63 -:103170001800E08000F0371BF60A1800C07034CB4E -:10318000F60A1800C051A3B4CE58A5B4CE380F8BA0 -:1031900036CAF40B1800C051A5B4EECBFFFFCDB872 -:1031A000A5A4CD88EBD5C005367CF80A1800E08BC5 -:1031B0000027365BF60A1800C48234FBF60A1800B2 -:1031C000C480E08B000C345BF60A1800C3E0347B4B -:1031D000F60A1800C3A0344BC088358BF60A1800D5 -:1031E000C2C0E08B0007355BF60A1800C351C31854 -:1031F000363BF60A1800C2F0364BC0E8370BF60A29 -:103200001800C250E08B000D36EBF60A1800C1F032 -:10321000E08B0014369BF60A1800C1E1C0E8375B6A -:10322000F60A1800C0A0378BF60A1800C060373BBA -:10323000F60A1800C111C0B8EDB40004C0A0EDB486 -:103240000005C0913020C0883040C0683030C04890 -:103250003010C0283000403B5BFBC040E20B09202F -:10326000C7985860E08B00776C0AEACCFFFF486E85 -:10327000FC00032F8003F2708003F1D48003F16817 -:103280008003EFC88003EFE8F4CBFFF88D0BF4EA7E -:103290000000E605083AC0F8F4CBFFFC8D0B740A79 -:1032A000E605093AC088F4CBFFF88D0BF4EA00007C -:1032B000E605083A0E9B1895C4E8620A5BFAC0B1AD -:1032C00050195028E06A0080300B029CF01F004D1E -:1032D00040284019E4CC00010E9B503CF20C0C49F4 -:1032E000C3A8620A5BFAC0B150195028E06A008096 -:1032F000300B029CF01F0043402840192012300A76 -:103300000E9BE202092AF2020C49C25816976C0A77 -:10331000F4CBFFFC8D0B740A0E9BE605093A2FF5E2 -:10332000C1A8F4C20030C068E40200222FF7F40202 -:1033300000120F8A580AC0E0230A589AFE98FFF636 -:10334000C0982FF70F8A580AC050230A589AFE983F -:10335000FFFA0E9B407C30BAF40C1800FE91FEEE92 -:103360004042178C0A325F4AF00C18005F1CF9EAE1 -:10337000000AF00A1800FE91FECB3008404E178A72 -:10338000E2050021F00A1800FC091710E6050038D4 -:10339000069EC2A8620A583AC1E0E0890007581A9E -:1033A000C1A0582AC181C058585AC0C0C0B5C13840 -:1033B0006C0AF4CCFFF88D0CF4E20000F0E300009E -:1033C000C1086C0AF4CCFFF88D0CF4E20000F0E3C5 -:1033D0000000C0786C0AF4CCFFFC8D0C740A910AD2 -:1033E0002FF52F882FC11235FE9AFFD61C9340521D -:1033F000406E85059D0B404BE60B003C2F8DD8326F -:103400008002E8BCD421149774285808C04195184C -:10341000109CD822F01F000330088F188F28D82264 -:1034200080032320D431FACD06BC5109169114979C -:103430001895F01F0056780C50CC5805C0706A687B -:103440005808C0410A9CF01F00524D281031C0316D -:103450006A01C0A84D081031C0316A11C0584CF83B -:103460001031EBF100028268EDB80003C041624800 -:103470005808C071029B0A9CF01F0049E0810F941C -:1034800082681099E219001A58A9C3D18279300ACA -:10349000F4091900C385A1D8FB5805D06288FB4800 -:1034A00005E462A8FB4805ECFAC8FFBCFB4805D45C -:1034B000FB4805C4E0680400FB4805D8FB4805CC80 -:1034C0003008FB5905D20E9A4109FAC7FA3CFB486D -:1034D00005DC0A9C0E9BF01F003350BCC0950E9B70 -:1034E0000A9CF01F003140BEF9BE01FF50BEFB0830 -:1034F00005D0EDB80006E0810F598268A7A8A26840 -:10350000E08F0F543008FB4806B4FB480690FB4898 -:10351000068CFB4806B03008300950A75078FAC432 -:10352000F9E03FF85059FB440688FB480544129CDB -:10353000506950D950E950B9129740A2325A300818 -:10354000C0282FF20589F00918005F1BF409180044 -:103550005F19F3EB000BF00B1800CF4140ABE40B0D -:103560000106C300FAF806900C08890BFB48069088 -:103570008916FAF8068C2FF8FB48068C5878E089F3 -:1035800000152F84C1C800008003276480031F3802 -:103590008003EF2C8003EF4C8003EF6C80031C381A -:1035A0008003342480031D2CFACAF978029B0A9CFC -:1035B000F01F0071E0810EF4FAC4F9E040BA0C0A81 -:1035C00050BA05893008F0091800E0800ED930099A -:1035D000FB6806BB0E96E4C8FFFF3FFE50945041C7 -:1035E0000E940491508950A8502E50391293129085 -:1035F00010970A92C0783FFC0A97502CC038300BC5 -:10360000503B0F38C0281290F0C90020E049005804 -:10361000E08B0A4A4D9AF409032F50A750800C976B -:103620000495089602924D6940941090404150D9FB -:10363000E08F08AA3008FB3906BBF0091800CE213C -:103640003208C6E8A1A3CDEB0F89F2C80030589824 -:10365000E08B001DEEC8FFFF300B2309F60B002B9B -:10366000F20B001B1139F2CA0030589AFE98FFF78E -:10367000E0490024CC51E04B0020E0890E90201B53 -:10368000FAF906B4123BC095C108FAF906B4ECCABF -:10369000FFFF1236C1F5C268FACEF9441097FC0B51 -:1036A000003BF6F0FD88C3581097FAC8F9501AD8B5 -:1036B000FAC8FAB81AD8FAC8FBB4029A1AD8049C05 -:1036C000FAC8F940FAC9FFB4F01F002E2FDD7800C8 -:1036D000C208FACCF9441496F8040038F0F0FD88DA -:1036E000C188410859F9E0890011F0CBFFFC510B6A -:1036F0007000FACBF944F6090038F140FD882FF943 -:103700001496FB4906B4C058700014962FC851088F -:103710005800FE94FF785C30A3A3C74B32B8FB6817 -:1037200006BBC70B0F38E048002AC0303009C80874 -:103730000F88F0C900305899E08B0026EEC5FFFFD6 -:10374000300B2308F60B002BF00B001B0B38F0C9D5 -:1037500000305899FE98FFF7E0480024FE91FF5191 -:10376000E04B0020E0890E1B201BFAF806B4103B4A -:10377000C115C188800334048003F0048003EDD0B8 -:10378000800330E4FAFA06B4ECC9FFFF1436C1F541 -:10379000C288FACAF944F40B003BF6FBFD88502BB3 -:1037A000C3C8FAC8F9501AD8FAC8FAB81AD8FAC869 -:1037B000FBB4029A1AD8049CFAC8F940FAC9FFB4BB -:1037C000F01F017B2FDD780C502CC27812960E95DD -:1037D000FAC9F944F2040038F0F8FD885028C1D83D -:1037E000410859FAE0890014F0CBFFFC7008510B36 -:1037F0005028FAC6F944402EEC0A0038F14EFD88F4 -:103800002FFA0E95FB4A06B41296C078700C0E95EE -:103810002FC8502C12965108402B580BFE95FEEDE8 -:103820000A97CF0AF20900290F38F4090019F0CAE3 -:103830000030589AFE98FFF83FFAF20A0C495029D6 -:10384000CE4AA7B3CDFA30092308F2090029F009BE -:1038500000190F38F0CA0030589AFE98FFF7E04878 -:103860000024FE91FED2E0490020E0890D98F2C4C8 -:10387000000130195039CC6AA3B3CC4AA7A3CC2A93 -:103880000F8836CEFC081800C0412FF7A5B3CBAA8D -:10389000A5A3CB8AA5B3CB6A50A750800C971090F4 -:1038A00008960495409402920E994041FAF806B4A5 -:1038B000403C580CC1D01036C064FACBF944F6062F -:1038C0000036C1D8FAC8F9501AD8FAC8FAB81AD8C6 -:1038D000FAC8FBB41AD8FAC8F940FAC9FFB4049A76 -:1038E0000C9B0A9CF01F01322FDD19B8C2282FF75C -:1038F0001039C084FACAF944F4060036ED38FD8B5D -:10390000C188410959F8E0890012F2CAFFFC510A46 -:103910007209FAC6F944EC08003A2FF8F549FD8817 -:10392000FB4806B4F1D9C008C04813B82FC95109E3 -:10393000FB680660300E30083012FB6806BB502E64 -:10394000E08F08C450A750800C9704950896029207 -:10395000409410904041A5A3C0A850A750800C9758 -:10396000049508960292409410904041EDB30005F2 -:10397000C511FAF806B4403C580CC1E01036C064DA -:10398000FACBF944F6060036C208FAC8F9501AD83C -:10399000FAC8FAB80C9B1AD8FAC8FBB41AD8FAC9F4 -:1039A000FFB4FAC8F940049A0A9CF01F01012FDD08 -:1039B000781B7809C2B8EECAFFFF1037C0B4FAC945 -:1039C000F9441497F2060036ECFBFD8CECF9FD8807 -:1039D000C1D8410959F8E0890014F2CBFFF8510B26 -:1039E000FAC6F944721BEC08003C7209F94BFD8CD5 -:1039F000F949FD882FF81497FB4806B4C078F2C83F -:103A0000FFF8721B1497510872091698FAE9000022 -:103A1000CAE8EDB30004C171FAF806B4403E580E8E -:103A2000C0801036C694FACCF944F8060036C8288F -:103A3000EECAFFFF1037E0840081FACBF944F606A6 -:103A40000036C778EDB30006C4B1FAF806B4403CBE -:103A5000580CC1D01036C064FACBF944F6060036D3 -:103A6000C1F8FAC8F9501AD8FAC8FAB81AD8FAC878 -:103A7000FBB41AD8FAC8F940FAC9FFB4049A0C9BEF -:103A80000A9CF01F00CB2FDD9818C268EECAFFFF1A -:103A90001037C094FAC9F9441497F2060036ED08BD -:103AA000FD8AC1A8410959F8E0890013F2CBFFFC57 -:103AB000510B7209FAC6F944EC08003B2FF8F7499C -:103AC000FD88FB4806B41497F1D9B010C05892187D -:103AD00014972FC951095018BF585008C488FAF8D4 -:103AE00006B4403C580CC1D01036C064FACBF9443F -:103AF000F6060036C1F8FAC8F9501AD8FAC8FAB86A -:103B00000C9B1AD8FAC8FBB4049A1AD80A9CFAC8B3 -:103B1000F940FAC9FFB4F01F00A62FDD780BC248A8 -:103B2000EECAFFFF1037C094FAC9F944F206003616 -:103B30001497ECFBFD88C188410959F8E089001110 -:103B4000F2CBFFFC510BFAC6F944720BEC080039BA -:103B5000F34BFD882FF81497FB4806B4C058720B3E -:103B600014972FC95109501BBF5B500BFAEA000094 -:103B7000580A5C2BC0E43008FAEA00003009F00A69 -:103B8000010AF20B014B32D8FAEB0000FB6806BBCE -:103B90003018E08F071150A750800C9704950896B5 -:103BA00002924094109040410E99EDB30003C4116D -:103BB000FAF806B4403A580AC1901036C645FAC819 -:103BC000F9501AD8FAC8FAB81AD8FAC8FBB40C9B3C -:103BD0001AD8049AFAC8F940FAC9FFB40A9CF01F2F -:103BE00000742FDD78165076C4882FF71039C0C4C2 -:103BF000FACEF944FC060036ECFCFD8C507CECF669 -:103C0000FD885056C668410959F8E0890010F2CA8B -:103C1000FFF8721B510A7209FACAF944507B5059D5 -:103C2000F4080039405B407AC47872185078C4C8F0 -:103C3000FAF806B4403E580EC2301036C094FACCA2 -:103C4000F944F8060036ECFBFD8C507BCD9BFAC89E -:103C5000F9501AD8FAC8FAB8049A1AD8FAC8FBB4B4 -:103C60000C9B1AD80A9CFAC8F940FAC9FFB4F01F95 -:103C700000502FDD781A507A780C505CC2A82FF7CC -:103C80001039C094FAC9F944F2060036ECF8FD8CFC -:103C90005078CB6B410959F8E0890015F2CAFFF85A -:103CA00072167209510A5059FACEF9445076FC083E -:103CB0000039405B0C9AF2EBFD882FF8FB4806B404 -:103CC000C088721C507CF2C8FFF851087209505924 -:103CD000405B407AF01F00371896C1503008300919 -:103CE000405B407AF01F0034C04032D8FB6806BB0E -:103CF0004B284B36A7D3E0400047F00617A03032E0 -:103D0000E08F06E7405B407AF01F002EC0C05026CF -:103D10004AD84AE6A7D3E0400047F00617A0303261 -:103D2000E08F06DD402A5BFAC04130695029C11896 -:103D3000E04000475F09E04000675F08F3E81008D3 -:103D4000F8081800C06040285808F9B80001502849 -:103D500040784059FAE90694A9A3FAF8069458085D -:103D6000C065405E300C506E509CC078405B32DACB -:103D7000EE1B8000509A506BE04000465F09E04027 -:103D800000665F08F3E810085048C0404022303910 -:103D9000C228E04000455F09E04000655F084046FA -:103DA0001049EC091800C1314022C148800330E4B9 -:103DB0008003697880036FC08003F2408003F2447F -:103DC00080032A7E8003F2488003F24C402EFCC21E -:103DD000FFFF3029FAC8F95C1AD8FAC8F9541AD882 -:103DE000FAC8F94C0A9C1AD80498409B40AAF01FC4 -:103DF00001E0E04000475F19E04000675F18189657 -:103E00002FDDF3E80008C041EDB30000C301EC0270 -:103E1000000C503C404B580BC1500D893308F00941 -:103E20001800C0B130083009406B407AF01F01D152 -:103E3000FBB20001FBF20BAB403AFAF806AC100AF9 -:103E4000503A406B30083009407AF01F01CAC090E8 -:103E50004039FB4906A4C05810C9FB4806A4C02835 -:103E60003309FAF806A4403E1C38CF73E0400047FF -:103E70005F09E04000675F08F3E81008FAF906A45C -:103E80000C1950695808C0B0FAF806AC5BD8C05598 -:103E9000402C1838E08A006A2020C058E0400065B5 -:103EA000E0890046FAFB06ACFB60069C201BFB4B3E -:103EB00006ACC0475C3B32D8C02832B8FB68069DD0 -:103EC000589BE08A001DFAC9FA3530AA12980E9C58 -:103ED0000C92F60A0C060E9B2D0B10FB0C9B5896B1 -:103EE000FE99FFF92D0B1897049610FBFACAF96298 -:103EF000C038113B14CB1238CFD3C0982D0B3308E8 -:103F0000FB6B069FFB68069EFACAF960FAC8F96463 -:103F1000F408010850E81092406B1602581BE08923 -:103F20000005EDB30000C3512FF2C338E040006636 -:103F3000C1C1FAF206AC5802E08A000C402A580AC5 -:103F4000C041EDB30000C2512FF240291202C0B8A7 -:103F500040285808C061EDB30000C0303012C1984D -:103F600040222FE23660C158FAF206AC406E1C3295 -:103F7000C065EDB30000F7B200FFC0A8E40811026D -:103F8000406C5802F00217A0F9B20901180236700D -:103F9000409B580BE080059D32D8FB6806BBE08F44 -:103FA000059C50A704950C970292089640414094B6 -:103FB0000E99EDB30005C481FAF806B4403E580EE0 -:103FC000C1D01036C064FACCF944F8060036C1D826 -:103FD000FAC8F9501AD8FAC8FAB8049A1AD8FAC81E -:103FE000FBB40C9B1AD80A9CFAC8F940FAC9FFB472 -:103FF000F01F01612FDD780AC2082FF71039C08445 -:10400000FACBF944F6060036ECFAFD88C16841099E -:1040100059F8E0890010F2CAFFFC510AFAC6F944C7 -:10402000720AEC080039F34AFD882FF8FB4806B401 -:10403000C048720A2FC9510940BE1C98951EBF582E -:104040009508FE9FFA7CEDB30004C480E2130040A3 -:10405000C450FAF806B4403C580CC1D01036C064C5 -:10406000FACBF944F6060036C1D8FAC8F9501AD886 -:10407000FAC8FAB8049A1AD8FAC8FBB40C9B1AD832 -:104080000A9CFAC8F940FAC9FFB4F01F013B2FDDC2 -:10409000780AC2082FF71039C084FACAF944F40626 -:1040A0000036ECFAFD88C168410959F8E089001032 -:1040B000F2CAFFFC510AFAC6F944720AEC08003948 -:1040C000F34AFD882FF8FB4806B4C048720A2FC98E -:1040D000510940BEB40EFE9FFA32FAF806B4403CD5 -:1040E000580CC1D01036C064FACBF944F60600363D -:1040F000C1D8FAC8F9501AD8FAC8FAB8049A1AD826 -:10410000FAC8FBB40C9B1AD80A9CFAC8F940FAC941 -:10411000FFB4F01F01192FDD780AC2082FF71039FC -:10412000C084FACAF944F4060036ECFAFD88C16886 -:10413000410959F8E0890010F2CAFFFC510AFAC699 -:10414000F944720AEC080039F34AFD882FF8FB485D -:1041500006B4C048720A2FC9510940BE950EFE9F91 -:10416000F9EE50A750800C9704950896029240945F -:1041700010904041A5A3C0A850A750800C9704956B -:1041800008960292409410904041EDB30005C5D1CD -:10419000FAF806B4403C580CC2601036C0A4FACB02 -:1041A000F944F6060036ECE8FD88FAE90000C1881B -:1041B000FAC8F9501AD8FAC8FAB8049A1AD80C9B57 -:1041C000FAC8FBB40A9C1AD8FAC8F940FAC9FFB475 -:1041D000F01F00E92FDDF8EA0000FAEB00003008DC -:1041E000E08F03E7EECAFFFF1037C0B4FAC9F94405 -:1041F0001497F2060036ECEAFD88FAEB0000C1885D -:10420000410959F8E0890018F2E60000F2CBFFF806 -:10421000FAE70000510BFAC6F944EC080039FAE657 -:104220000000F2E7FD882FF81497FB4806B44038E9 -:10423000E08F03BFF2E600004038FAE700002F8964 -:1042400014975109E08F03B5EDB30004C161FAF88A -:1042500006B4403E580EC0801036C674FACCF944FD -:10426000F8060036C808EECAFFFF1037C7F4FACBCD -:10427000F944F6060036C768EDB30006C4A1FAF8A3 -:1042800006B4403C580CC1D01036C064FACBF94497 -:10429000F6060036C1F8FAC8F9501AD8FAC8FAB8C2 -:1042A0001AD8FAC8FBB41AD8FAC8F940FAC9FFB448 -:1042B000049A0C9B0A9CF01F00B02FDD9818C2686E -:1042C000EECAFFFF1037C094FAC9F9441497F206FA -:1042D0000036ED08FD8AC1A8410959F8E0890013AC -:1042E000F2CBFFFC510B7209FAC6F944EC08003B13 -:1042F0002FF8F749FD88FB4806B41497F1D9B010A0 -:10430000C058921814972FC951095C785018C46886 -:10431000FAF806B4403C580CC1D01036C064FACB51 -:10432000F944F6060036C1F8FAC8F9501AD8FAC8A6 -:10433000FAB80C9B1AD8FAC8FBB4049A1AD80A9C8B -:10434000FAC8F940FAC9FFB4F01F008B2FDD780BD3 -:10435000C248EECAFFFF1037C094FAC9F944F2060A -:1043600000361497ECFBFD88C188410959F8E089B3 -:104370000011F2CBFFFC510BFAC6F944720BEC08AA -:104380000039F34BFD882FF81497FB4806B4C0584A -:10439000720B14972FC95109501B300E500E1C98E8 -:1043A000E08F030750A750800C970495089602925F -:1043B000409440410E99FAF806B4403C580CC1D0E4 -:1043C0001036C064FACBF944F6060036C1D8FAC8F4 -:1043D000F9501AD8FAC8FAB81AD8FAC8FBB41AD8D9 -:1043E000FAC9FFB4FAC8F940049A0C9B0A9CF01F62 -:1043F00000622FDD7809C2182FF71039C084FACA7D -:10440000F944F4060036ECF9FD88C178410959F801 -:10441000E0890010F2CAFFFC510AFAC6F944720999 -:10442000EC08003AF549FD882FF8FB4806B4C0585F -:10443000F2C8FFFC510872093308FB6806B83788D8 -:10444000300EFB6806B94CDC5019A1B3500E50DC9D -:1044500030283780E08F02AD50A750801090300890 -:10446000FB6806BB0C970495089602924094404165 -:104470000E99FAF806B4403B580BC1D01036C06410 -:10448000FACAF944F4060036C1D8FAC8F9501AD865 -:10449000FAC8FAB81AD8FAC8FBB40C9B1AD8049A0E -:1044A000FAC8F940FAC9FFB40A9CF01F00332FDDA7 -:1044B0007806C2082FF71039C084FAC9F944F20609 -:1044C0000036ECF6FD88C168410959F8E089001012 -:1044D000F2CAFFFC510A7206FACEF944FC08003910 -:1044E000F346FD882FF8FB4806B4C04872062FC972 -:1044F0005109402C580CC105189A300B0C9CF01F28 -:104500000020E08002E9F8060102402B1632E08923 -:1045100002E3E08F02DE300A0C9C502AF01F0019E3 -:104520001892E08F02DC50A750800C9704950896F3 -:104530000292409410904041A5A3C0A850A750807B -:104540000C97049508960292409410904041EDB368 -:104550000005C611FAF806B440395809C2C0103631 -:10456000C124FAC8F944F0060036C2E88003552C8D -:1045700080036F32800330E48003EDE4800328A4DD -:104580008002EDD0FAC8F9501AD8FAC8FAB81AD889 -:10459000FAC8FBB41AD8FAC8F940FAC9FFB4049AA9 -:1045A0000C9B0A9CF01F00C82FDDF8E80000FAE918 -:1045B0000000C2E8EECAFFFF1037C0B4FAC8F944E1 -:1045C0001497F0060036ECEAFD88FAEB0000C2080A -:1045D000410959F8E0890016F2E60000F2CBFFF835 -:1045E000FAE70000510BFAC6F944EC080039FAE684 -:1045F0000000F2E7FD882FF81497FB4806B4C08846 -:10460000F2E600002F89FAE70000510914973018EC -:10461000E08F01CFEDB30004C161FAF806B4403E6B -:10462000580EC0801036C674FACCF944F80600362D -:10463000C808EECAFFFF1037C7F4FACBF944F606F4 -:104640000036C768EDB30006C4A1FAF806B4403CD2 -:10465000580CC1D01036C064FACBF944F6060036C7 -:10466000C1F8FAC8F9501AD8FAC8FAB81AD8FAC86C -:10467000FBB41AD8FAC8F940FAC9FFB4049A0C9BE3 -:104680000A9CF01F00912FDD9818C268EECAFFFF48 -:104690001037C094FAC9F9441497F2060036ED08B1 -:1046A000FD8AC1A8410959F8E0890013F2CBFFFC4B -:1046B000510B7209FAC6F944EC08003B2FF8F74990 -:1046C000FD88FB4806B41497F1D9B010C058921871 -:1046D00014972FC951095C785018C468FAF806B4C9 -:1046E000403C580CC1D01036C064FACBF944F606F1 -:1046F0000036C1F8FAC8F9501AD8FAC8FAB80C9BB3 -:104700001AD8FAC8FBB4049A1AD80A9CFAC8F94015 -:10471000FAC9FFB4F01F006C2FDD780BC248EECA57 -:10472000FFFF1037C094FAC9F944F2060036149717 -:10473000ECFBFD88C188410959F8E0890011F2CBF2 -:10474000FFFC510BFAC6F944720BEC080039F34B2D -:10475000FD882FF81497FB4806B4C058720B1497C5 -:104760002FC95109501B300E3018500EC21950A7D6 -:1047700050800C970495089602924D4C40941090EE -:10478000404150DCEDB30005C551FAF806B4403B9A -:10479000580BC2201036C0A4FACAF944F4060036F9 -:1047A000ECE8FD88FAE90000CF58FAC8F9501AD8A9 -:1047B000FAC8FAB8049A1AD80C9BFAC8FBB40A9C37 -:1047C0001AD8FAC8F940FAC9FFB4F01F003F2FDD2C -:1047D000F8EA0000C0C8EECAFFFF1037C0B4FAC93B -:1047E000F9441497F2060036ECEAFD88FAEB000073 -:1047F000CD18410959F8E0890016F2E60000F2CB25 -:10480000FFF8FAE70000510BFAC6F944EC0800394A -:10481000FAE60000F2E7FD882FF81497FB4806B48B -:10482000CB98F2E600002F89FAE7000051091497AF -:10483000CB18EDB30004C171FAF806B4403E580E2F -:10484000C0801036C6C4FACCF944F8060036C85801 -:10485000EECAFFFF1037E0840084FACBF944F60675 -:104860000036C7A8EDB30006C4E1FAF806B4403C30 -:10487000580CC1D01036C064FACBF944F6060036A5 -:10488000C1F8FAC8F9501AD8FAC8FAB81AD8FAC84A -:10489000FBB41AD8FAC8F940FAC9FFB4049A0C9BC1 -:1048A0000A9CF01F00092FDD9818C2A8EECAFFFF6E -:1048B0001037C0D4FAC9F9441497F2060036ED084F -:1048C000FD8AC1E8800330E48003EDE4410959F832 -:1048D000E0890013F2CBFFFC510B7209FAC6F944D0 -:1048E000EC08003B2FF8F749FD88FB4806B4149705 -:1048F000F1D9B010C058921814972FC951095C789B -:104900005018C468FAF806B4403C580CC1D01036B0 -:10491000C064FACBF944F6060036C1F8FAC8F9507B -:104920001AD8FAC8FAB80C9B1AD8FAC8FBB4049A79 -:104930001AD80A9CFAC8F940FAC9FFB4F01F00C996 -:104940002FDD780BC248EECAFFFF1037C094FAC9BA -:10495000F944F20600361497ECFBFD88C188410942 -:1049600059F8E0890011F2CBFFFC510BFAC6F9446B -:10497000720BEC080039F34BFD882FF81497FB48B5 -:1049800006B4C058720B14972FC95109501B300E32 -:10499000500E4008401C18485F18E7E80008C07037 -:1049A0003308FB6006B9A1B3FB6806B830283009AC -:1049B000FB6906BB402B580BC025A7D3402A4009F2 -:1049C000580A5F1A4016FAC2F9780C495F19F5E9DE -:1049D0001009C5C03019F2081800C0603029F2086B -:1049E0001800C041C3C80496C3080496FAE8000042 -:1049F000F5D8C0032D0A0CFAF00B1603F20C1603BF -:104A0000F7E911DB1899169858085C29CF21FAE9C3 -:104A10000000EDB30000C4513309F20A1800C410BD -:104A20000CF9C3F8FAEA000030A83009F01F008E34 -:104A300030A82D0A3009AC8AFAEA0000F01F008B7A -:104A400016991498FAE900002016FAEA0000589A1C -:104A50005C2BFE9BFFE91BF82D08C2080496FAE8C0 -:104A60000000F5D8C00440DEFC0A070A0CFAF20B7D -:104A70001604F00A1604F5E911CA16991498580894 -:104A80005C29CF01FAE90000C0C85808C091EDB315 -:104A90000000C061FAC6F9793308AC88C0280496D2 -:104AA0000C12C1C850A7508040940C9710900495E8 -:104AB00040415808E0800464FB680660300C300810 -:104AC0003012FB6806BB502CFAC6F9A0C078300B38 -:104AD000502BC0484022300A502A4029E4090C4992 -:104AE000FB3806BB5039069E3009E21E0002F20870 -:104AF0001800FBF81003F7B801FFFBF81A03069B38 -:104B0000580EFBFC1003F7BC01FEFBFC1A03E21B72 -:104B1000008450FE509BC451408A4039121A504ABA -:104B2000580AE089001FC3D82F092FF84D0E310C09 -:104B3000FB490690890E891CFB48068C5878E08951 -:104B400000042F84C0B8FACAF978029B0A9CF01FAF -:104B50000049E0810425FAC4F9E0404B210B504B99 -:104B6000FAF90690FAF8068C4C1A404E590EFE9946 -:104B7000FFDD1C092FF8890AFB490690891EFB48B6 -:104B8000068C5878E08900042F84C0B8FACAF978F6 -:104B9000029B0A9CF01F0037E0810402FAC4F9E08E -:104BA0003009FB3806BBF2081800C1F0FAF806908D -:104BB000FAC9F9452FF88909FB4806903019FAF827 -:104BC000068C89192FF8FB48068C5878E089000478 -:104BD0002F84C0B8FACAF978029B0A9CF01F0025FE -:104BE000E08103DEFAC4F9E040FC580CC1F0FAF8A9 -:104BF0000690FAC9F9482FE88909FB480690302940 -:104C0000FAF8068C89192FF8FB48068C5878E08949 -:104C100000042F84C0B8FACAF978029B0A9CF01FDE -:104C20000015E08103BDFAC4F9E0409BE04B008031 -:104C3000C511408A4039121A504A580AE089002B9F -:104C4000C4982F092FF848CE310CFB490690890EE5 -:104C5000891CFB48068C5878E08900102F84C178A5 -:104C6000800330E4800373408002D9988003F250BF -:104C7000800334048003F260FACAF978029B0A9C2C -:104C8000F01F004CE081038CFAC4F9E0404B210B8B -:104C9000504BFAF90690FAF8068C4C7A404E590EB1 -:104CA000FE99FFD11C092FF8890AFB490690891E3D -:104CB000FB48068C5878E08900042F84C0B8FACAF3 -:104CC000F978029B0A9CF01F003BE0810369FAC45B -:104CD000F9E0402C041C502C580CE089001FC3D86C -:104CE0002F092FF84B4B310AFB490690890B891A83 -:104CF000FB48068C5878E08900042F84C0B8FACAB3 -:104D0000F978029B0A9CF01F002BE0810349FAC44A -:104D1000F9E0402921095029FAF90690FAF8068CA1 -:104D20004A5A402E590EFE99FFDD1C092FF8890AB8 -:104D3000FB490690891EFB48068C5878E0890004E0 -:104D40002F84C0B8FACAF978029B0A9CF01F001998 -:104D5000E0810326FAC4F9E0EDB30008C0B0FAF828 -:104D6000069089128906F0020002FB420690E08F4D -:104D700001DBE0400065E08A01DD30083009405B7E -:104D8000407AF01F000EC7E0FAF8069048C92FF8E5 -:104D90008909FB4806903019FAF8068C89192FF812 -:104DA000FB48068C5878E089000D2F84C14800002C -:104DB000800334048003F26080036F328003A6C056 -:104DC000FACAF978029B0A9CF01F0078E08102E899 -:104DD000FAC4F9E0FAF806AC406C1838C055EDB3E7 -:104DE0000000E081026DFAF806902FF840CBFB48F6 -:104DF00006903019FAF8068C890B2FF88919FB48B0 -:104E0000068C5878E08900042F84C0B8FACAF97873 -:104E1000029B0A9CF01F0065E08102C2FAC4F9E01F -:104E2000406620165806E089001DE08F02492F09D0 -:104E30002FF8FB49069089028910FB48068C5878A8 -:104E4000E08900042F84C0B8FACAF978029B0A9C52 -:104E5000F01F0056E08102A4FAC4F9E02106C03830 -:104E60004D323100FAF90690FAF8068C4D0A5906CF -:104E7000FE99FFDF0C09890AFB4906902FF8891675 -:104E8000C559FAFA06AC580AE0890096FAF8069075 -:104E90004C892FF88909FB4806903019FAF8068CDE -:104EA00089192FF8FB48068C5878E08900042F8474 -:104EB000C0B8FACAF978029B0A9CF01F003CE08156 -:104EC000026FFAC4F9E0FAF806AC5808C081406AEB -:104ED000580AC051EDB30000E08101F240C9FAF870 -:104EE00006902FF88909FB4806903019FAF8068CCD -:104EF00089192FF8FB48068C5878E08900042F8424 -:104F0000C0B8FACAF978029B0A9CF01F0028E08119 -:104F10000247FAC4F9E0FAF206AC5C325802E089C2 -:104F2000001DC3B82F092FF8310EFB4906908900E8 -:104F3000891EFB48068C5878E08900042F84C0B88D -:104F4000FACAF978029B0A9CF01F0018E081022837 -:104F5000FAC4F9E02102C0284950FAF90690FAF89B -:104F6000068C493A5902FE99FFDF04092FF8890A95 -:104F7000FB4906908912FB48068C5878E0890004AA -:104F80002F84C0B8FACAF978029B0A9CF01F000768 -:104F9000E0810206FAC4F9E0406CFAF8069089064E -:104FA000891C1808CBE80000800334048003F260F9 -:104FB0008003A6C0FAF90690FAF8068C406B163A00 -:104FC000C6D516092FF88906FB490690891BFB48B0 -:104FD000068C5878E08900042F84C0B8FACAF978A2 -:104FE000029B0A9CF01F006FE08101DAFAC4F9E02D -:104FF000FAF606AC406A14165806E089001CC3B8DD -:105000002F092FF8FB49069089028910FB48068C6E -:105010005878E08900042F84C0B8FACAF978029B56 -:105020000A9CF01F0060E08101BBFAC4F9E0210690 -:10503000C0384DD23100FAF90690FAF8068C4DAA24 -:105040005906FE99FFDF0C092FF8890AFB490690E3 -:105050008916FB48068C5878E08900042F84C0B874 -:10506000FACAF978029B0A9CF01F004EE081019871 -:10507000FAC4F9E0EDB30000E081012240C9FAF87A -:1050800006902FF88909FB4806903019FAF8068C2B -:1050900089192FF8FB48068CC04914092FF8FB49E1 -:1050A00006908906891AFB48068C5878E089000426 -:1050B0002F84C0B8FACAF978029B0A9CF01F003905 -:1050C000E081016EFAC4F9E040C88908FAF8069058 -:1050D0002FF83019FB4806908919FAF8068C2FF83A -:1050E000FB48068CFAF206AC5878E08900042F845D -:1050F000C0B8FACAF978029B0A9CF01F002AE08126 -:10510000014FFAC4F9E00406FAF806AC8906FAF988 -:1051100006904066406E1016F208010889161C08B9 -:10512000FB480690FAF8068C2FF8FB48068CCB98C3 -:10513000406C581CE0890006EDB30000E081008758 -:10514000FAF806902FF83019FB4806908906FAF80D -:10515000068C89192FF8FB48068C5878E0890004E2 -:105160002F84C0B8FACAF978029B0A9CF01F000D80 -:10517000E0810116FAC4F9E0FAF806902FF840CB66 -:10518000FB4806903019FAF8068C890B2FF889191C -:10519000FB48068C5878E08900092F84C10800007C -:1051A000800334048003F260FACAF978029B0A9CF7 -:1051B000F01F006FE08100F4FAC4F9E03008300914 -:1051C000405B407AF01F006B40682018580CC0D13B -:1051D0002FF689188906FAF606901006FAF8068C5A -:1051E000FB4606902FF8C2F810965808E089001C7C -:1051F000C4982F092FF8FB49069089028910FB48B3 -:10520000068C5878E08900042F84C0B8FACAF9786F -:10521000029B0A9CF01F0056E08100C2FAC4F9E02C -:105220002106C0384D423100FAF90690FAF8068C92 -:105230004D1A5906FE99FFDF0C09890AFB490690B1 -:105240002FF88916FB48068CC0E8FAF806902FF86C -:105250003019FB4806908906FAF8068C89192FF850 -:10526000FB48068C5878E08900042F84C0B8FACA3D -:10527000F978029B0A9CF01F003EE0810091FAC47D -:10528000F9E040EAFAF806901408FAC9F964FB4814 -:105290000690891AFAF8068C89092FF8FB48068CC3 -:1052A0005878E08900042F84C0A8FACAF978029BD4 -:1052B0000A9CF01F002FC731FAC4F9E0E213000482 -:1052C000C3D04086403912165806E089001AC368D8 -:1052D0002F092FF8FB49069089038912FB48068C99 -:1052E0005878E08900042F84C098009A029B0A9C99 -:1052F000F01F001FC541FAC4F9E02106C05849F368 -:105300003102FAC0F978FAF90690FAF8068C49BA2F -:105310005906FE99FFDF0C092FF8890A8916FB4907 -:105320000690FB48068C5878E08A0009FACAF9789A -:10533000029B0A9CF01F000EC32140BC4036408EE9 -:10534000EC0E0C48100C50BCFAF806905808C080BF -:10535000FACAF978029B0A9CF01F0005C201300BC3 -:10536000FAC4F9E0FB4B068CFE9FF0E9800334049D -:1053700080036F328003F2608003F250FAF80690E7 -:105380005808C0800A9CFACAF978029BF01F0009ED -:10539000C0613008FB48068CC02840418268EDB8E7 -:1053A0000006C0313FFA50BA40BCFE3DF944D83245 -:1053B00080033404D42116981897109C3008149B4D -:1053C0004866129A8D08F01F00065BFCC0516C08FD -:1053D0005808EFF81A03D82200008CC48002F1505C -:1053E000D421300818974876169C8D08F01F0006C7 -:1053F0005BFCC0516C085808EFF81A03D822000073 -:1054000000008CC48002F108D431202D1897784810 -:1054100076460C38C034300CC858ECC2FFFCF6C3DA -:10542000FFECF6020329F802032C2FF92016F809E5 -:105430000D08F6020022EEC4FFEC10955808C410C7 -:105440003009069A08981291500B700EB18E501EBA -:10545000150EFC001610FDDEC010EA0E0341FDD152 -:10546000C010B181401BEA000240E2000000E3D01E -:10547000C010021B501B700BE3DBC0100209F20EC0 -:10548000010EB01EFC091410401EFC090009B009F1 -:10549000E00116102FC8B149043AFE98FFD8400B1E -:1054A000580CC0F1ECC8FFFBEE080028C0282016FD -:1054B00020480838E088000570095809CF908F46C9 -:1054C0000E9CF01F001AC2D52FF508983009070B63 -:1054D000F60A1610700CF7DBC010F80E1610141E2A -:1054E000F5DCC010161A120AB01AB14AFC0A0009FB -:1054F000B0092FC8B1490433FE98FFEBECC8FFFB9D -:10550000EE0803295809C0D1EE080028C02820164B -:1055100020480838E088000570095809CF908F4668 -:105520000A9C2FEDD8320000800363EED43121AD08 -:10553000FAC4FF7418971695682C50C96816680944 -:1055400050E81494512CFAE5000851596E9558050D -:10555000C091310CF01F004799358F9C9915992502 -:1055600099056E9972085808C0F0721A911A301A8B -:105570007219F4090949109B91290E9CF01F003EF5 -:105580006E9830099109402810945808C064F1D8E9 -:10559000C01F50283018C02830088D08FC1C7FF030 -:1055A00040260C98E6187FF01838C1C1E068270F34 -:1055B000415B9708403A580AC061EDD6C014C0312B -:1055C0004AECC0284AEC41295809E08005DEF8C8B9 -:1055D000FFFD3009118AF20A1800C190F8C8FFF8DF -:1055E000C168FAEA00083008FAEB003C3009F01F05 -:1055F0000025C1103018415A950841294A285809F8 -:10560000C041109CE08F05C1109C2FF841258B08EC -:10561000E08F05BBFAC8FF9CFAC9FFA0FAEA003C7C -:105620000E9CEBD6C28BF01F001918935805C0D002 -:10563000FAEA003C3004F1DBC014EAC503FF109B1A -:105640005174EA1B3FF0C3284188419C100CF8C5F7 -:10565000FBCEE0450020E08A001BF8CCFBEE403B8F -:10566000EA081140F60C0A4CEC0809460C4CC148FB -:105670008002E2A4800364208003F3708003F37C43 -:1056800080036F328003A6C0800364D0EA0C11202F -:10569000403AF40C094CF01F006BFC18FE10301956 -:1056A000EAC50433F00B000B51793008FC193FF8C0 -:1056B000F01F0065E0684361EA18636FE06987A73F -:1056C000EA193FD2F01F0061E068C8B3EA188B60A6 -:1056D000E0698A28EA193FC6F01F005D0A9C149011 -:1056E0001691F01F005CE06879FBEA18509FE069B2 -:1056F0004413EA193FD3F01F005514981699009AE5 -:10570000029BF01F005314901691F01F00533008B5 -:1057100018963009009A029BF01F0050C0C00C9CE4 -:10572000F01F004C14981699009A029BF01F004C31 -:10573000F7B600015966E088000530185148C128C5 -:105740004C88FAEA003CF0060238F01F0044F9B435 -:105750000000FBF40A14F7B60101F9BC0100FBFCE0 -:105760001A14419020100A10C04650403000C04822 -:10577000300B5C30504BEC0211005806FBFA400431 -:10578000F5D6E40AFBFA4A04FBF64A11F9B2040022 -:10579000E1D6E510F9B90500FBF95A1140C858984F -:1057A000E08B00205858F9B40A01FBF5900CF7B5CE -:1057B0000904FBF59A0CF9B4090040CC583CC2D05E -:1057C000E0890005582CC101C18840CB584BC0600E -:1057D000585BC0A1301A50DAC228301950D9C0F82D -:1057E0003008301450C83FF5301C300B509550DC59 -:1057F0000A91312850EBC208300A50DA40E95809C2 -:10580000E089000730185098109150E8C15840E5E1 -:1058100050950A910A98C108300C50DC40EBEC0B13 -:10582000000B509B16982FF85808E089000510913E -:105830003018C028109130096E9A95193049C178F6 -:1058400080036E4A80036B7C800369A480036D181B -:1058500080036E5280036E2480036FC080036F321A -:105860008003F38C6A1AA1792FFA8B1A6E95F2CA0B -:10587000FFEC103AFE98FFF86A1B0E9CF01F0053D5 -:1058800058E15F888B0CF1E400046E987008508832 -:10589000E08001985806E08A0040F3D6C0044CC866 -:1058A000F0090234FAE50018EC041404EDB4000425 -:1058B000C0303025C0F84C78F0E80020FAEA003C0F -:1058C000E9D4C004F01F0044303514981699FAE961 -:1058D00000084C0C50A30C931896C0F8FAEA001874 -:1058E000EDB40000C081ECE800002FF5F01F003B94 -:1058F000FAEB0018A1542F865804CF11FAE80018CB -:10590000FAEA00080696F01F003440A3149816998E -:10591000FAE90008C2D8EC081100C0313025C2886D -:105920004ACCF0041404501CF1D8C0044A89FAEAA5 -:10593000003CF2080238F01F0029401C506330255B -:105940000C93FAEB00081896C0F8FAEA0008EDB4D8 -:105950000000C081ECE800002FF5F01F0020FAEBFA -:105960000008A1542F865804CF1106964063414A7F -:10597000580AC370FAE8000858015F94FAE9001861 -:105980003008FC193FF0FAEA0018F01F0015F9BCC6 -:105990000000F9BC0101E9EC000CC2304098580845 -:1059A000E08A010C3008FC194024ECC40001FAEA3A -:1059B00000182FF55064F01F0009409414981699B0 -:1059C000FAE90008C1080000800364588003F38CE2 -:1059D0008003F45480037028800369A480036FC09F -:1059E000506602940A9CF01F0069FAE80008F01F54 -:1059F00000683008FC19401CF01F006614981699C6 -:105A0000FAE90028FC18FCC040A5100550A5580470 -:105A1000C211FAEA00083008FC194014F01F005EB9 -:105A200040BCFAEB000814981699189A0A9BF01FCC -:105A3000005BE08102740A9840B9EE188000FAEA2F -:105A40000008109512980A99F01F0054E081025E38 -:105A5000CB484D39E8C8000140D55805C4F0300C9A -:105A6000F2080238513C300AFC1B3FE0F01F004DA9 -:105A7000FAE800284085F01F0048FAEB0028FAEA0F -:105A80000008F01F0049516CF01F0040149816994F -:105A9000FAEA0008F01F0040FAEB000841682D0800 -:105AA0000AC841392FF95139FAE80028F01F003BA4 -:105AB000E081035AFAE80008300AFC1B3FF0F01FAF -:105AC0000036FAE80028F01F0035FAEA002830080E -:105AD000FC194024E08100E8413C083CC6E4F01F8A -:105AE000002C3008FAEB0028FC194024FAEA0008E0 -:105AF000F01F0027FAEB0008CC3B40850805F208B0 -:105B0000023A5135FAE800284085F01F0021FAEBEF -:105B10000028FAEA0008F01F0024516CF01F001B57 -:105B200014981699FAEA0008F01F001BFAEB000817 -:105B300041682D080AC8413C1835C3713008FC196A -:105B40003FE0FAEA0028F01F00134085FAE8000859 -:105B50000805F01F0012E08100A7FAE80028300ACB -:105B6000FC1B3FE0F01F000C14981699FAEA00089D -:105B7000F01F000AC22033090A98117AF20A1800AD -:105B8000E08102F21095CF9B80036E52800369A4DE -:105B900080036D1880036B7C80036FC08003F38CDF -:105BA0008003702880036E243008FC194024F01F05 -:105BB0000056FAEB0008CAEBFAEA003CFAEB0008E0 -:105BC00058E65FAB418A3008F40911FFF7E903F9A1 -:105BD000F0091800E080008140EA58015FA9F3EA6B -:105BE00003F94CAAF4060234FAE50010F009180093 -:105BF000C1405801E081018A3008FC194014089A1C -:105C00000A9BF01F0041FAE80008F01F0041E08104 -:105C1000017D0292E08F018540853014FAE8001082 -:105C2000FAEA0008F01F003BF01F003B1892F01F3B -:105C3000003BFAE80010F01F003414981699FAEAB5 -:105C40000008F01F0037FAEB0008E4C8FFD00AC8CC -:105C5000FC19402430080234C331FAE80008F01F70 -:105C600000311691149014980299FAEA0010F01F6E -:105C7000002EC1A1FAE80010009A029BF01F002B31 -:105C8000E0800271E5D2C001C0F1E08F026C408A71 -:105C90001438C0301095C098330840892FF6B28868 -:105CA0004088C088406633990A98117AF20A180031 -:105CB000CEF0506611892FF9B089E08F0255F01FA0 -:105CC00000122FF4FAEB000830083009F01F00171B -:105CD000CA60E08F024840D85808C0510498009527 -:105CE00040D4C4A840C55815E08900224174580426 -:105CF000C040F4C9FBCDC0484199F209113604985F -:105D00000095C2F8800369A48003F38C80036F5868 -:105D10008003702880036E2480036E5280036B7CA6 -:105D200080036D1880036FC080036F32E2C80001EA -:105D30005801E0051740E2091740E1D1E515F9B92E -:105D400005001032E5D8E418F1D2E518E5D8E502EF -:105D5000FBFC5011F9D8E50CFBFC5A11F9B8050011 -:105D6000404B120B5008504B1200301B0E9CF01F82 -:105D7000010840081894404A58055F99580A5F9AEC -:105D8000F5E90009C080404CF8050D49121C1210BD -:105D9000504C12155802E08A002740DB580BC1D046 -:105DA0005808E08A0017109A5008089B0E9CF01FB4 -:105DB00000F9069A189B18940E9CF01F00F718998A -:105DC000069B50190E9CF01F00F5401940081293D5 -:105DD000E408010AC080C028049A069B0E9CF01FAC -:105DE00000ED1893301B0E9CF01F00E9411A189229 -:105DF000580AE08A0007189B0E9CF01F00E61892D4 -:105E000040C95819E089001440385808C101402998 -:105E1000F1D9C014C0C11298E6187FF0C080404C80 -:105E2000301B2FFC2FF0504C506BC038300A506A9A -:105E300041195809C031301CC09864482FC8E40883 -:105E4000032CF01F00D7F80C1120404BF80B000872 -:105E5000F1D8C005C0C0F00811205848E08A0006FB -:105E60002048100B504BC0785848C070404A2E480C -:105E7000100A504A100010055800E08A0008069BDE -:105E8000009A0E9CF01F00C7189340495809E08AF9 -:105E90000008049B129A0E9CF01F00C21892414801 -:105EA0005808C1B0049B069CF01F00BFC164069B4C -:105EB000300930AA0E9CF01F00BD2016189340DC5C -:105EC000580CC0314091C098089B4091300930AACD -:105ED0000E9CF01F00B6189458015FA940CB582BB8 -:105EE0005F98F3E80008C2505801C111049B029961 -:105EF000305A0E9CF01F00AD1892189B069CF01FA4 -:105F000000AAE089000FC0383002049440EA30094A -:105F10005CDA4085506A5049C0F9089240660494A2 -:105F20002FF65066331840850AC830085048C049DB -:105F300040DC580CE08000B55805E08A0008089B5A -:105F40000A9A0E9CF01F00971894406B580BC031B2 -:105F5000089CC138681B0E9CF01F0095684A189574 -:105F6000E8CBFFF42FEA2F4CA36AF01F00920A9BA4 -:105F7000301A0E9CF01F008B5044403A3019F5DA6D -:105F8000C001189450DA40855099502650E1049B86 -:105F9000069CF01F0089404BF8C0FFD0069CF01F04 -:105FA0000082089A506C049B0E9CF01F008418918C -:105FB00078385808C0303016C068189B069CF01F0F -:105FC000007A18960E9C029BF01F007440CCEDECFA -:105FD0001008C0D140DB580BC0A14026E04000397A -:105FE000C300406A580AE0890024C2F84069580991 -:105FF000C085129840CC1848C1D140DB580BC1A1D4 -:106000000C9940265809E08A0021069B301A0E9C04 -:10601000F01F0064049B1893F01F0063E0890006E2 -:10602000C141EDB00000C111E0400039C0A02FF027 -:10603000C0C85806E08A000C4026E0400039C04144 -:1060400033980AC8C6782FF00AC0C7580AC0409AC9 -:1060500040E9123AC430069B300930AA0E9CF01F6A -:106060000053404818930838C091109B300930AA5B -:106070000E9CF01F004E504CC0E8404B300930AA37 -:106080000E9CF01F004A089B504C300930AA0E9C11 -:10609000F01F00461894409C2FFC509CC79B301862 -:1060A0000690408508930C941096049B009CF01F6A -:1060B00000422D0C0ACC0236C0A4009B300930AA45 -:1060C0000E9C2FF6F01F00391890CF0B0896300B5E -:1060D0000694504B00931890C0284026069B301A17 -:1060E0000E9CF01F0030049B1893F01F002FE089D6 -:1060F0000012C1B1E1D0C001C0D1C17840891238CD -:10610000C0301095C0882FF650663318408CB88880 -:10611000C138339A0A981179F4091800CF002FF981 -:10612000B089C0981095C02833090A98117AF20AEC -:106130001800CF905066049B0E9CF01F0018580466 -:10614000C120404B083B5F19580B5F18F3E800086B -:10615000C0400E9CF01F0011089B0E9CF01F000F0A -:10616000C02850660E9C069BF01F000C3008AA88C1 -:106170004068415A2FF841299508408C5809FBF88E -:106180001012F1F51A002E6DD8320000800368005D -:10619000800368A0800366F88003642080036300A6 -:1061A00080036664800363EE80036818800364588C -:1061B0008002E736800354088003658C5EFC5EFC39 -:1061C000D42118961697580BC0311695C508F01FA4 -:1061D00000295806C0706C685808C0410C9CF01F1C -:1061E00000264A681037C0316C07C0A84A481037EB -:1061F000C0316C17C0584A381037EDF700028E696D -:106200003008F0091900C051F01F001F3005C2F816 -:106210000E9B0C9CF01F001D6EC818955808C0609E -:106220006E8B0C9C5D18F9B505FF8E68EDB8000704 -:10623000C0516E4B0C9CF01F00166EDB580BC0A0BB -:10624000EEC8FFBC103BC0400C9CF01F0011300892 -:106250008FD86F2B580BC0700C9CF01F000D3008AE -:10626000EF4800483008AE68F01F00070A9CD822AB -:1062700080031E7480031F388003EF2C8003EF4CD3 -:106280008003EF6C80031E7680031D2C8003217C2D -:10629000D4014848189B700CF01F0003D80200007E -:1062A00000000598800361C0D42116981897109CAF -:1062B00030084876149B8D08F01F00065BFCC05127 -:1062C0006C085808EFF81A03D822000000008CC4AC -:1062D0008002F198D42116981897109C3008149BCE -:1062E0004866129A8D08F01F00065BFCC0516C08CE -:1062F0005808EFF81A03D82200008CC48002F1205D -:106300001898E01C0000F0091510580CF20817004E -:10631000F9BC0010F9BC0100109AF0091508E61A42 -:10632000FF00F7BC00F8F2081700109AF0091504F6 -:10633000E61AF000F7BC00FCF2081700109AF0090A -:106340001502E61AC000F7BC00FEF2081700580854 -:106350005E5CEDB8001EF9BC0120F7BC00FF5EFCDE -:1063600018997808F9D8C003C150EDB80000C021D1 -:106370005EFD109BF00A1601E21B0002A388580B79 -:10638000F3FA1A00F9BC0101F3F80A00F9BC0002A3 -:106390005EFCF5D8C010F00B1610580AF60817006E -:1063A000F9BC0010F7D8C008F00A1608580BF7BC63 -:1063B00000F8F4081700F7D8C004F00A1604580BC8 -:1063C000F7BC00FCF4081700F7D8C002F00A160268 -:1063D000580BF7BC00FEF4081700EDB80000C060D1 -:1063E000A198C031320C5EFC2FFC93085EFCD401F6 -:1063F00018987649784C121CC1312FB9A369120B39 -:10640000F00900092EC8134E174A143EC060F9BCAB -:1064100003FFF9BC0201D8021039FE9BFFF6D80237 -:10642000D4211897169578965806C091310CF01F14 -:10643000000A99368F9C9916992699065805C0909E -:106440006A196E987038F009032A8B0AF009092539 -:10645000D82200008002E2A4D421189716967895DD -:106460005805C091310CF01F001999358F9C991572 -:10647000992599056E956A385808C0B1310A304B94 -:106480000E9CF01F00138B3C6E98703C580CC1B0F2 -:106490006E987038F0060028700C580CC0407809CF -:1064A0009109C0E80E9C30170E9BEE060947EECA14 -:1064B000FFFBA36AF01F0006C060991699273008F9 -:1064C00099389948D82200008002E2A48002DC5466 -:1064D000D431202D1693129610951492301BF01F74 -:1064E0000029F3D3C0145009F1D3C01FF0011614D2 -:1064F000FC1A0010F3DAE139FBF91A00189458027B -:10650000C1E0FACCFFF818D2F01F001F4018C0D02D -:106510004009F80A1120F20A094AF5E810088958DA -:10652000F20C0A495009C028895840085808F9B3A4 -:106530000102F9B3000189688943C0981A9CF01FD1 -:106540000012301340082E0C894389585801C0901E -:10655000E2C1043318018D01F80C11358B0CC0D841 -:10656000E6C8FFFCF8CC0432A5738D0CE808032CB8 -:10657000F01F000618138B03089C2FEDD832000083 -:10658000800364588003636080036300D4317448DF -:106590007645169714961015C1312FB8EECEFFEC44 -:1065A000A368F408000BEE080008114A1749123AD4 -:1065B000C030C0E2C0781C38FE9BFFF9C4A8580563 -:1065C000C0640E9830150C971096C02830056E1BCD -:1065D000F01F00246E496C4499352FB4F2C5FFFBBF -:1065E000EC040024EE0500252EC62EC7F8C8FFECEB -:1065F000300A0F0E0D0BFC021610F6031610FDDE0E -:10660000C010E4030103F7DBC010FC0B010BF60A1A -:10661000000AB01AB14AE60A000AB00A2FC8B14A05 -:106620000836CE83C0D80F0BF60E1610F7DBC0105D -:10663000160AB01AB14A1C0AB00A2FC8B14A0A3762 -:10664000CF33C0282019114A580ACFD09949D832DF -:10665000300BF01F00043018994830089958D83290 -:1066600080036458D43116977646F40214052FF649 -:10667000149318940406761B6E28C0382FFBA1785B -:106680001036FE99FFFD089CF01F001A300918957E -:10669000F8C8FFEC129AC03810AA2FF90439CFD5E8 -:1066A0006E4BE7D3C0052FBBEEC9FFECEE0B002B02 -:1066B0005803C130E60C1120300A7202E40309428B -:1066C000044A10AA130AF40C0A4A1639CF73910A25 -:1066D000580AC0702FF6C058130A10AA1639CFD323 -:1066E000089C20160E9B8B46F01F00030A9CD83294 -:1066F0008003645880036420D431202D7649744887 -:10670000169614951039EC081750EA061750F00544 -:1067100017506C2876437442761BE4030007103749 -:10672000F7BB09FFF01F0036EEC4FFFBF8C9FFEC12 -:10673000F8040024300A1298C02810AA0838CFE3C1 -:106740002FB32FB2EC030023EA020022ECCBFFECC4 -:106750005012EACAFFECC44894955805C20012983A -:106760001696300E50090D02E400161070017009E3 -:10677000B181E5D2C010E0050341AB32E1D9C010D0 -:106780000002E40E000EB01EB18E1C01B001E20E3C -:1067900016102FC80636CE834009910E94865806EF -:1067A000C1D072021298169E3005B0121D0190825F -:1067B000E1D1C010AD30E0020002E4050005B005F3 -:1067C000B185B1812FC8AD319092E20200020A0278 -:1067D000E4051610063ECEA391022FCA2FC9401819 -:1067E000103ACBB3C02820175807E08A00050948A3 -:1067F0005808CFA099472FEDD83200008003645885 -:10680000D4211697301BF01F00043019995799496D -:10681000D822000080036458D431300812951697AE -:1068200018967644F6C9FFEC720BF60C1610F7DBDF -:10683000C010F40C024CF40B0345F7D5C010B18521 -:106840001805EA0C1510F80B000B12AB2FF8B185E8 -:106850000838CEB55805C1D06E281034C1456E1B1E -:106860000C9C2FFBF01F000C6E4AEECBFFF418932C -:106870002FEA2F4CA36AF01F00090E9B0C9CF01FFF -:1068800000080697E8C8FFFF2FB48F48EE040925DB -:106890000E9CD832800364588002E736800364205F -:1068A000D431149618971694F1DAC002C0902018CB -:1068B0004A19F208032A3009F01F00201894A34651 -:1068C000C3706E955805C091310CF01F001D9935AD -:1068D0008F9C9915992599056E9366255805C0D109 -:1068E000E06B02710E9CF01F0017872C3008189582 -:1068F0009908C038069C1895EDB60000C0C1089BE9 -:106900000A9A0E9CF01F0010089B18930E9C069488 -:10691000F01F000EA156C0C06A035803CEC10A9AE8 -:106920000A9B0E9CF01F00088B0C9903CE5B089C01 -:10693000D83200008003F380800368188002E2A44C -:1069400080036800800366F880036420D4211698D1 -:106950001897109C3008149B4866129A8D08F01FF7 -:1069600000065BFCC0516C085808EFF81A03D822E7 -:1069700000008CC48002F1381498FC197FF0F5DB1C -:10698000C01FF00B1100F7E81008F5E813F8F20843 -:106990000108F00C1100F9E81008F00C141F2FFC8E -:1069A0005EFCD703F5EB101CE08000DCD421F7E996 -:1069B000200EEFDBC28B3015C430AB6BF7EA136BE4 -:1069C000AB6AF7D5D3C2EDD9C28BC5C0A1785CF94B -:1069D000F3D5D2ABE04707FFC770E04607FFC740DB -:1069E000EE06000CE02C03FEF6080644F40907440A -:1069F000F4080646F609064A0807F405004A5C0B47 -:106A0000EDBB0014C050A1775CFA5CFB201C580C55 -:106A1000E08A006FE04C07FFE084009CF7DCD28B3B -:106A2000EDEA11F6EFE61217EE178000F1B7042039 -:106A30000E0A5C0BEDBE001FEFBB001FD822E41B4B -:106A4000000FF40C1200F6061200F7BC03E1F80682 -:106A50001730F7B60201E0460020C0D4EC0C11203C -:106A6000F606094BF40C0A4C184BF406094A20B6FA -:106A70000C17CAABF406094BC640300A20B60C17F7 -:106A8000CA3BE419000FF00C1200F2051200F7BC2B -:106A900003EAF8051730F7B5020AE0450020C0D434 -:106AA000EA0C1120F2050949F00C0A4C1849F005CE -:106AB000094820250A16C8FBF0050949C4203008FA -:106AC00020250A16C88BE419000FE41B000F144B95 -:106AD0001049E04707FFC091580BC381E04607FF0C -:106AE000C3815809C360C3285809C330C2F85C3C4D -:106AF0002FFCF1BC04C0E04C0020C114F8081120A8 -:106B00000E46EE0C0A47F40809491247F40C0A4AEB -:106B1000F6080949124AF60C0A4BC83BF80811203E -:106B2000F9B90000C030F60809490E46EDEA101622 -:106B3000F40C0A4AF3EA1007F60C0A4A300BC71B9A -:106B40001C9BE61B8000300AD8223FFB3FFAD8226C -:106B5000F06B0000EDBE001FEFBB001F300AD82213 -:106B6000F7E9200BE61B8000F9D9C28BE04C07FF48 -:106B70005E1C3FFA3FFB5EFCEE198000F7E9200C3B -:106B8000E08600CAEBCD40E0169CE61C8000BFDB2F -:106B9000BFD9103AF20B1300C0921697129B0E99B0 -:106BA0001497109A0E98EE1C8000F6071614AB7B13 -:106BB000F7EA135BAB7ABFBBF2061614C440AB799D -:106BC000F3E81359AB78BFB9E04707FFC4F00E26CE -:106BD000C120EC051120E0460020C7C2F005094E97 -:106BE000F2050945F0060A48F2060A490A48580E15 -:106BF0005F1E1C48101AF609014BF6061200C0E091 -:106C0000C783EC0E1120F606094BF40E0A4E1C4BFE -:106C1000F406094A0C17E08A0039F4091515AB9AF5 -:106C2000F5EB115AAB9BF7D7D28B184BFC178000B2 -:106C3000EDBA0000F7B701FF0E395F29120A5C0BAD -:106C4000E3CD80E0AB79F3E81359AB78F3E8100EAD -:106C5000F9B60101EE0E1100F9B70001EFBB001FFC -:106C6000F7EA100EF9B70000CB0BBFDBF7EA100E06 -:106C7000C081E04607FFC050F9E7114BE3CD80E04B -:106C80003FFA3FFBE3CD80E05C372FF7F1B704C05C -:106C9000E0470020C114EE081120F40809495F16EE -:106CA000F4070A4A0C4AF6080949F5E9100AF407FC -:106CB0000A4B3007CB3BEE081140F608094914494E -:106CC0005F16F6070A4A0C4A300B3007CA7BE3CD41 -:106CD00080E0F1B604C0F00E1700C040F205094E86 -:106CE000104EF2060A483009580E5F1E1C48C83B79 -:106CF000F4061200F9B70300F9B60300F9BC03006B -:106D0000F7B602E0F406094B300A0C17FE9AFFBEF4 -:106D1000C85B0000EE198000F7E9200CFE96FF2EFC -:106D2000EBCD40E0169CE61C8000BFDBBFD9123BD8 -:106D3000C0721697129B0E991497109A0E98300EE7 -:106D4000EFDBC28BF7DBC014B5ABEDD9C28BC5F05E -:106D5000F3D9C014B5A9E04707FFC2500E26C0F012 -:106D6000EC051120E0460020C352F005094EF20563 -:106D70000945F0060A48F2060A490A48100AF609C7 -:106D8000004BEDBB0015C340F7D7D28B184BF9DA97 -:106D9000C001184EEE1E8000F1BE04201C0A5C0BE0 -:106DA000E3CD80E0B5CBF7EA100EC101E04607FF66 -:106DB000C030E3CD80E0B5C9F3E8100EC071300AF1 -:106DC000FC1B7FF0184BE3CD80E03FFA3FFBE3CDA7 -:106DD00080E0F1B604C0F00E1700C060F205094E65 -:106DE00058085F18104EF2060A483009CC8BFDEEA9 -:106DF000101EA19B5D0A5D0E2FF7E04707FFF9BA51 -:106E00000000F9BB0000F9BE0000CBFB30165807AC -:106E1000CA31B5CB100AF609004B184BE3CD80E020 -:106E2000580B5E6DF60C1501B59CE02C03FF5E3D22 -:106E3000F80C111F1699AB7BBFBBF7EA135BF60C7E -:106E40000A4BA1795E2B5C3B5EFBF8CB0000300C5B -:106E5000C038189B5C4B300A5E0BD401E069041EFD -:106E6000F6081200C170C0C3F00E1120F608094BDD -:106E7000F40E0A4E1C4BF408094A1019C0B8F40865 -:106E80001200F9B80300F7B802E0F408094B300A21 -:106E900010195809E08900305C392FF9E0490036B3 -:106EA000C043300B300AC2682F69F2081120E04954 -:106EB0000020C0B2F408094EF6080948F4090A4A4D -:106EC000F6090A4B104BC088F608094E144E169A64 -:106ED000300BF4090A4AEDBA0000C0921C7EC04192 -:106EE000EDBA0001C0422FFAF7BB02FF5CFC5D0B5C -:106EF0005D0AD802E06803FFEDBA000BF7B800FFA7 -:106F0000100A5C0BF7B903FEE04907FFC055300AD1 -:106F1000FC1BFFE0C0C8EDBB001FF7B90101AB9A35 -:106F2000F5EB115AA17BAB9BF7E9115BA17C5D0BE3 -:106F3000D802103AF20B1300C080A17BA179144B48 -:106F4000124B104B5E0F5EFDA17BFC1CFFE0580A4C -:106F5000F80B13005E8F5EFD1ADE1AD7A17B5F3C33 -:106F6000A1795F375CFCFC1EFFE0580AFC0B1300A4 -:106F7000E08B001D5808FC091300E08B0018580B2B -:106F8000F5BA0000C1501B071B0E583CC0A0581C8E -:106F9000C0335E0F5E1D103AF20B13005E2F5E3D94 -:106FA0001438F60913005E2F5E3D1B07D80A5817E8 -:106FB0005F0C5809F5B800001B071B0E5E0F5EFC46 -:106FC0001ADE1AD7A17B5F3CA1795F375CFCFC1EFF -:106FD000FFE0580AFC0B1300E08B001D5808FC0969 -:106FE0001300E08B0018580BF5BA0000C1501B07C6 -:106FF0001B0E583CC0A0581CC0335E0D5E1F103ADB -:10700000F20B13005E2D5E3F1438F60913005E2D5F -:107010005E3F1B07D80A58175F1C5809F5B80000D7 -:107020001B071B0E5E0D5EFCEBCD40FFF7E9200E4B -:10703000F6071614A97BF7EA137BA97ABDBBE41BFC -:107040003FFFABD7E08000CCE04707FFE08400B50E -:10705000F2061614A979F3E81379A978BDB9E419F1 -:107060003FFFABD6E08000E2E04607FFE08400B2DD -:107070000C17FE37FC01FC1C8000F8031601E9D94F -:10708000C3625CD4E7D4D382E6090644F80501253F -:10709000E6050644EA031502E6090644F80501255B -:1070A000E6050644EA031502E6090644F80501254B -:1070B000E6050644EA031502E6080640E40907402F -:1070C000E609064402045C05A365EBE413E5A3644A -:1070D0005C34F8050145E6040640E4050740E60592 -:1070E000064402045C05EA031502E7E413E3E80240 -:1070F0001502E6080640E4090740E60906440204D2 -:107100005C05A365EBE413E5A3645C34F805014575 -:10711000E6040640E4050740E605064402045C0573 -:10712000EA031502E7E413E3E8021502E60A064063 -:10713000E40B0740E60B064202025C03EDB3001CC1 -:10714000C090A1725CF32017A39AF5EB11DAA39B10 -:10715000C058A58AF5EB11CAA58B5807E08A008BA9 -:10716000E012FF00E8120080E6080640E40907404C -:10717000E4080644E60906480005F00100485C09F9 -:10718000F9D2C10158045C25F4081300F609130074 -:107190005F36F8061700E40A1608F5E3118AE60BD5 -:1071A0001608F7D7D28BEDBE001FEFBB001F0C0AED -:1071B0005C0BE3CD80FFE41B000F144BE08100A7C4 -:1071C000F2061614ABD6E04607FFE08100A4C9E83A -:1071D000E419000F1049E081009AC928A37BF7EA5F -:1071E00013DBA37AF5EB1004E08000A0F604120094 -:1071F000C170C0C3E8051120F604094BF4050A4527 -:107200000A4BF404094A0817C0B8F4041200F9B490 -:107210000300F7B402E0F404094B300A0817A38A0C -:10722000F5EB11EAA38BC11BA379F3E813D9A3787B -:10723000F3E81004C6F0F2041200C170C0C3E80500 -:107240001120F2040949F0050A450A49F0040948E9 -:107250000816C0B8F0041200F9B40300F7B402E055 -:10726000F004094930080816A388F1E911E8A38958 -:10727000CFCA5C372FF7F1B704C0E0470020C154F4 -:10728000EE061120E4070A42E606094C1842E6071A -:107290000A43F4060941F4070A4AF606094C184A5B -:1072A000F6070A4B3000C158EE061120F9B0000075 -:1072B000F9BC0000C050F4060940F606094CE60788 -:1072C0000A423003F4070A411841F6070A4A300B14 -:1072D000E012FF00E8120080E6080646E4090746CF -:1072E000E4080644E60906480C05F00700485C0976 -:1072F0003007F9D2C1010034E2051300C46B1C9BB6 -:10730000E61B8000300AE3CD80FF3FFB300AE3CD6F -:1073100080FFF5EB1004C0901C9BE61B8000EA1B6D -:107320007FF0300AE3CD80FFF1E91015CEF0E9D906 -:10733000C28BE04407FFCE41F1E910C5CE10CE6B01 -:10734000D4311A97202D109C1295149E16931696E0 -:107350005809C4411638E088005AF0081200C0D01D -:10736000F6080946F808094CF00B1120F408094EFC -:10737000F40B0A4BF7E61006F80A1610EBDCC01007 -:10738000EC0A0D02FC091610EA02024BF3E31109A4 -:10739000123BE08800091809123CE08B0005123B03 -:1073A000F3DCEB09F20B010BFDDEC010F60A0D0A4F -:1073B000FDEB110EEA0A024A1C3AE0880009180E99 -:1073C0001C3CE08B00051C3AFDDCEB0EFC0A010ABC -:1073D000300BF4080A4A2FEDD8321639FE9BFFFD18 -:1073E000F2091200C46114385F8B06355F3AF7EA80 -:1073F000100AF20A1800C060FC08010AE6050146FE -:10740000149E0C9B1C9A2FEDD8325808C05130198D -:10741000F2080D08109CF8081200E0810084EC0CC2 -:10742000010BF8031610EBDCC010F6030D0AFC0983 -:107430001610EA0A024AF3EB1109123AE088000931 -:107440001809123CE08B0005123AF3DCEB09141921 -:10745000FDDEC010F2030D02FDE3110EEA02024A46 -:107460001C3AFE98FFB5180E1C3CFE9BFFB1CACB20 -:10747000F20E1120EA090945F609094BE60E0A4306 -:10748000F0090941F4090942F00E0A48F40E0A4ACB -:107490000A48164AF0061610F9D8C010E6060D0480 -:1074A000F4031610089BE7E51103E80C02450635C6 -:1074B000E0880007201B10030638E0880072F5DA28 -:1074C000C0100A13E6060D04F5E51106E80C024C9F -:1074D000089A0C3CE0880007201A10060C38E08857 -:1074E000005AF5EB110B1816F601064A149C1636D5 -:1074F000C0735F0514325F3AEBEA000AC060F8011E -:107500000104F608014B089CE40C010AEC0B01464F -:10751000EC090A4BF4090A4AEC0E09460C4A2FED15 -:10752000D832F0011120F4010A4BF808094CEC089C -:107530000949EC010A41F7E91009F8031610EBDCE0 -:10754000C010E2030D00F20B1610EA00024EF7E144 -:10755000110B163EE0880006180B163CE088002749 -:10756000F60E0101F3D9C010E2030D00F3E1110999 -:10757000EA00024B123BE08800091809123CE08B3C -:107580000005123BF3DCEB09F20B010BF408094E8A -:10759000C4DB0C3CF7BA0B01EDD8EB06CA3B063551 -:1075A000F7BB0B01E7D8EB03C8BB163EF7DCEB0BD0 -:0275B000CD8B81 -:10760000C0080000C0080000C0080000C00800005A -:10761000C0080000C0080000C0080000C00800004A -:10762000C0080000C0080000C0080000C00800003A -:10763000C0080000C0080000C0080000C00800002A -:10764000C0080000C00800000000000000000000AA -:10765000C008000000000000000000000000000062 -:10766000C008000000000000000000000000000052 -:10767000C008000000000000000000000000000042 -:1076800000000000000000000000000000000000FA -:1076900000000000000000000000000000000000EA -:1076A00000000000000000000000000000000000DA -:1076B00000000000000000000000000000000000CA -:1076C00000000000000000000000000000000000BA -:1076D00000000000000000000000000000000000AA -:1076E000000000000000000000000000000000009A -:1076F000000000000000000000000000000000008A -:10770000C0080000300CF01F0012580CF80F1710C2 -:10771000D603301CF01F000E580CF80F1710D603BC -:10772000302CF01F000B580CF80F1710D603303C0C -:10773000F01F0007580CF80F1710D60300000104C3 -:107740004000011280000120C000012E8000A41C16 -:107750000000000000000000000000000000000029 -:107760000000000000000000000000000000000019 -:107770000000000000000000000000000000000009 -:1077800000000000000000000000000000000000F9 -:1077900000000000000000000000000000000000E9 -:1077A00000000000000000000000000000000000D9 -:1077B00000000000000000000000000000000000C9 -:1077C00000000000000000000000000000000000B9 -:1077D00000000000000000000000000000000000A9 -:1077E0000000000000000000000000000000000099 -:1077F0000000000000000000000000000000000089 -:1078000073656E645265706C790000006765745F23 -:10781000646174615F7463705F636D645F63620071 -:107820006765745F7265706C795F686F73745F62AF -:10783000795F6E616D655F63620000006765745F0C -:107840007265706C795F7363616E5F6E6574776F7C -:10785000726B735F636200006765745F7265706C62 -:10786000795F6964785F6E65745F63620000000031 -:107870007365745F706173737068726173655F6361 -:107880006D645F63620000007365745F6B65795FB0 -:10789000636D645F6362000063616C6C5F7265704E -:1078A0006C795F6362000000617661696C5F64619E -:1078B00074615F7463705F636D645F636200000096 -:1078C0007365744D6170536F636B4D6F6465000039 -:1078D0006765745374617274436D6453657100001D -:1078E0007365745F6E65745F636D645F63620000EF -:1078F0007365745F69705F636F6E6669675F636D00 -:10790000645F63620000000073656E644572726FAD -:107910007200000073746172745F736572766572D1 -:107920005F7463705F636D645F6362007370695F4F -:10793000736C61766552656365697665496E74003E -:107940006765745F636C69656E745F737461746599 -:107950005F7463705F636D645F63620073656E6420 -:107960005F646174615F7564705F636D645F6362BF -:1079700000000000636865636B4D7367466F726D4E -:107980006174000073746172745F7363616E5F6E23 -:1079900065745F636D645F6362000000666F756E9F -:1079A00064486F737442794E616D65007365745FEE -:1079B0006B65795F636D645F63620000696E697413 -:1079C0005370690073746172745F636C69656E747F -:1079D0005F746370000000007370695F706F6C6C9F -:1079E000000000006765745F726573756C745F6397 -:1079F0006D645F636200000073746F705F636C6935 -:107A0000656E745F7463705F636D645F63620000D2 -:107A100073746172745F7365727665725F7463709C -:107A2000000000007365745F706173737068726149 -:107A300073655F636D645F63620000007365745F0C -:107A4000726573756C745F636D6400007365745F59 -:107A5000646E735F636F6E6669675F636D645F63B7 -:107A6000620000006765745F73746174655F7463BE -:107A7000705F636D645F6362000000007265715F38 -:107A80007265706C795F686F73745F62795F6E6145 -:107A90006D655F636200000073746172745F636C94 -:107AA00069656E745F7463705F636D645F636200C9 -:107AB000572D5B25735D2057726F6E67207465725A -:107AC0006D696E6174696F6E20696E6465783A25C0 -:107AD00064206E506172616D3A2564206964783A61 -:107AE00025642031366269743A25640A000000007A -:107AF0003078257820000000572D5B25735D2049E4 -:107B00006E646578206F7574206F662072616E6791 -:107B1000653A2025640A00005B25735D20535349B4 -:107B2000443A25730A0000005B25735D20525353CD -:107B3000493A25640A0000005B25735D20454E43E9 -:107B4000543A25640A0000005B25735D205365618B -:107B5000726368696E6720666F7220486F73743A4B -:107B60002069703D3078257820666F756E643D25FC -:107B7000640A00005B25735D20666F756E64486F54 -:107B8000737442794E616D653A20466F756E64205C -:107B9000486F73743A206E616D653D25732069707E -:107BA0003D307825780A00005B25735D20696653B7 -:107BB00074617475733A256420726573756C743AD8 -:107BC00025640A004C69737420436F6D6D616E64A7 -:107BD000732066756C6C210A000000005245434515 -:107BE000495645005452414E534D4954000000003F -:107BF0005B25735D204D6170205B25642C20257012 -:107C00002C2025735D0A00005B25735D20535049CD -:107C100020696E697469616C697A6174696F6E203C -:107C20006661696C65642100572D5B25735D204595 -:107C300072726F7220636F6E6669677572696E67C4 -:107C4000205350490A000000572D5B25735D202505 -:107C5000645D20446973616C6C2E2025642F25645B -:107C600020636D643A25640A00000000572D5B25EF -:107C7000735D2025645D20446973616C6C2E202542 -:107C8000640A00005B25735D3A200000572D5B25D8 -:107C9000735D2025645D204E6F7420666F756E6481 -:107CA00020656E6420636D643A20307825780A0080 -:107CB0005B25735D2025732025640A00572D5B2505 -:107CC000735D20456E64206F6620636D6420706173 -:107CD00072616D73000000005B25735D2064617448 -:107CE00061417661696C3A25640A0000572D5B2575 -:107CF000735D2054544350206E6F7420666F756E10 -:107D00006420666F7220736F636B3A25640A00000B -:107D10005B25735D20736F636B3A25642073746118 -:107D200074653A25640A00005B25735D20737461F5 -:107D300074653A25640A00005B25735D2053746105 -:107D40007274204E6574776F726B205363616E207E -:107D500025640A00572D5B25735D206572723D25F1 -:107D6000640A00005B25735D204C6F6F6B696E6762 -:107D700020666F7220486F73743A206E616D653DA6 -:107D800025730A005B25735D20466F756E6420487D -:107D90006F73743A206E616D653D25732069703D87 -:107DA000307825780A0000005B25735D2053746FDE -:107DB0007020636C69656E7420736F636B3A256421 -:107DC0000A00000055445000544350005B25735D89 -:107DD00020416464723A307825782C20706F727478 -:107DE0003A25642C20736F636B3A25642C207072E3 -:107DF0006F743A25730A0000572D5B25735D205080 -:107E0000726576696F757320636C69656E74202581 -:107E100070206E6F742073746F7070656420210A17 -:107E2000000000005B25735D205374617274204371 -:107E30006C69656E74202573202570205B30782571 -:107E4000782C2025642C2025645D204F4B210A00CE -:107E50005B25735D20537461727420436C69656E99 -:107E600074202573202570205B307825782C202500 -:107E7000642C2025645D204641494C4544210A007C -:107E8000572D5B25735D205374696C6C20636F6E96 -:107E90006E65637465642E2E2E776169740A000026 -:107EA000572D5B25735D20494620646F776E2E2E1B -:107EB0002E776169740A00005B25735D205374613D -:107EC000727420536572766572202573205B256479 -:107ED0002C2025645D204F4B210A0000572D5B2587 -:107EE000735D2053746172742053657276657220DD -:107EF0002573205B25642C2025645D204641494C78 -:107F00004544210A000000005B25735D2025702098 -:107F10006E756D506172616D3D2564207061726D8A -:107F200073546F4368616E67653D25640A00000005 -:107F30005B25735D2025645D206E69663A2570209F -:107F40006C7769705F616464723D307825780A00EF -:107F50005B25735D20257320706172616D733D2513 -:107F6000640A00005B25735D20506173733A20251D -:107F7000732025640A000000572D5B25735D2025C2 -:107F800073203A204661696C656420746F206164D7 -:107F90006420706173737068726173650A00000019 -:107FA000436F6E6E65637420746F206E6574776FB7 -:107FB000726B2E2E2E0000006572723D25640A0041 -:107FC0004F4B0A00572D5B25735D205353494420C6 -:107FD0006C656E206F7574206F662072616E6765C8 -:107FE000000000005B25735D2025730A000000007F -:107FF000572D5B25735D2053656E642053504920D7 -:108000006572726F72210A003D3D3E003C3D3D00AD -:10801000572D5B25735D20556E6B6E6F776E2063F9 -:108020006D6420307825780A00000000572D5B250C -:10803000735D2025645D20436865636B20666F7205 -:108040006D6174206D7367206661696C6564210AD7 -:1080500000000000444F574E000000005550000043 -:1080600049462020207374617475733A2025730A81 -:1080700000000000434F4E4E207374617475733AD4 -:108080002025730A00000000536F636B6574206E37 -:108090002E3A256428256429205B307825785D20D8 -:1080A000257320257320616464723A257320706FF4 -:1080B00072743A25640A00005B2564207470637052 -:1080C0002D25705D2D5374617475733A25640A0013 -:1080D0005B746C63702D25705D2D537461747573C2 -:1080E0003A25640A000000005B757063702D2570EE -:1080F0005D20666C6167733A3078257820206C6F5C -:1081000063616C3A25735B307825785D2D25640AB0 -:108110000000000072656D6F74653A257328307831 -:108120002578292D25640A004E4F0000594553003B -:108130004461746120617661696C3A25730A0000BC -:108140002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D5F -:108150002D2D2D2D2D2D2D2D2D2D2D2D2D2D0A009F -:108160005B25735D205363616E206E6F7420636FB7 -:108170006D706C65746564210A0000005B25735D99 -:10818000204E6574776F726B73206E6F7420666F0C -:10819000756E64210A000000636F756C64206E6F59 -:1081A0007420616C6C6F6361746520616C6C206716 -:1081B0007569206E65742061727261790A00000031 -:1081C000636F756C64206E6F7420616C6C6F63619B -:1081D000746520616C6C20677569206E6574730A24 -:1081E000000000005B25735D202564202D20257391 -:1081F000205B25645D2D202564202D202564202D05 -:1082000020307825780A000D000B000C000A0000D1 -:108210007365745F726573756C745F636D64000081 -:108220008000636C800063988000637E80006398A8 -:108230008000638E80006398800063648000639890 -:10824000800063688000638A800063786174637073 -:108250005F706F6C6C5F636F6E6E00007564705F53 -:10826000737461727400000072656D6F76654E659F -:1082700077436C69656E74436F6E6E0061756470F0 -:108280005F726563765F6362000000006765745328 -:1082900074617465546370006172645F7463705FCD -:1082A00073746F7000000000617463705F636F6EC1 -:1082B0006E5F6572725F6362000000006765744EF6 -:1082C0006577436C69656E74436F6E6E4964000038 -:1082D000617463705F636F6E6E5F636C695F65721C -:1082E000725F636200000000617463705F616363CA -:1082F0006570745F636200007564705F73746172AF -:10830000740000005B25735D20747463703A2570FF -:108310002069643D25642C20747063623D25700AD9 -:1083200000000000572D5B25735D204E6F205661C5 -:108330006C696420636C69656E7420666F7220746A -:108340007463703A25700A005B25735D2025645DB7 -:1083500020747463703A257020747063623A2570DB -:108360002073746174653A2564206C7063623A25E9 -:10837000702073746174653A2564206C6566743A84 -:1083800025642073656E743A25640A00572D5B25B9 -:10839000735D20544350206E6F7420696E69746958 -:1083A000616C697A656420747463703A2570207416 -:1083B0007063623A2570206C7063623A25700A001F -:1083C000572D5B25735D204E6F2056616C696420CC -:1083D000496420666F7220747463703A257020704F -:1083E00063623A25700A00005B25735D2062756642 -:1083F0003A2570206C656E3A25640A00572D5B257E -:10840000735D2054544350205B25705D3A20636FA8 -:10841000756C64206E6F7420616C6C6F6361746541 -:1084200020706275660A0000572D5B25735D20542D -:10843000544350205B25705D3A207564705F73650E -:108440006E642829206661696C65640A000000007A -:108450005B25735D2054544350205B25702D25709F -:108460005D3A20636F6E6E65637420256420256419 -:108470000A0000005B25735D206C6566743D256411 -:10848000206C656E3A25640A000000005B25735D70 -:10849000207463705F7772697465206661696C65CA -:1084A000642025702073746174653A2564206C65BE -:1084B0006E3A2564206572723A25640A0000000055 -:1084C000572D5B25735D2074746370203D3D204EF5 -:1084D000554C4C210A0000005B25735D20747463C9 -:1084E000703A2570207063623A2570206275663A92 -:1084F0002570206C656E3A25640A00005B25735D6B -:1085000020272573270A00005B25735D20506163D7 -:108510006B65742073656E74207063623A257020F9 -:108520006C656E3A2564206475723A2564206C652A -:1085300066743A25640A00005B25735D2054544339 -:1085400050205B25705D3A20636C65616E536F63EC -:108550006B53746174655F63622025640A000000D8 -:108560005B25735D20436C6F73696E672074706365 -:10857000623A2073746174653A30782578206572A8 -:10858000723A25640A0000005B25735D20436C6F1E -:1085900073696E67206C7063623A207374617465EE -:1085A0003A30782578206572723A25640A00000016 -:1085B0005B25735D2046726565696E672070617921 -:1085C0006C6F61642025642D25700A005B25735D46 -:1085D00020436C6F73696E6720747063625B2570F3 -:1085E0005D3A2073746174653A307825782065723D -:1085F000723A25640A000000572D5B25735D204305 -:10860000616E6E6F7420636C6F73652069643A25C8 -:10861000642D2570207075742070656E64696E67B6 -:108620000A0000005B25735D202D2D2D2D2D2D2D95 -:108630002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0A8D -:1086400000000000572D5B25735D2074746370205B -:108650003D204E554C4C210A000000005B25735D07 -:1086600020666C75736820646174613A207470636D -:10867000623A2570206572723A25640A0000000093 -:10868000572D5B25735D2054544350205B25705D4E -:108690003A20636F6E6E656374696F6E20657272E7 -:1086A0006F723A202564206375727249643A2564BA -:1086B0000A00000041626F727420636F6E6E656322 -:1086C00074696F6E0A000000572D5B25735D20549E -:1086D000544350205B25705D3A20636F6E6E656376 -:1086E00074696F6E206572726F723A202564206122 -:1086F00072673A25700A0000572D5B25735D205480 -:10870000544350205B25705D3A2066726565206D8C -:10871000656D6F72790A00005B25735D20554450CA -:1087200020496E7365727420257020736F636B3AF5 -:10873000256420616464723A257320706F72743A04 -:1087400025640A00572D5B25735D20545443502047 -:108750005B2D5D3A20696E76616C6964206D6F6493 -:10876000650A0000572D5B25735D2054544350204B -:108770005B2D5D3A20696E76616C6964206E62756E -:10878000660A0000572D5B25735D2054544350202A -:108790005B2D5D3A20696E76616C69642062756656 -:1087A0006C656E0A00000000572D5B25735D205438 -:1087B000544350205B2D5D3A20636F756C64206ECE -:1087C0006F7420616C6C6F63617465206D656D6F93 -:1087D000727920666F7220747463700A0000000062 -:1087E000572D5B25735D2054544350205B25705DED -:1087F0003A20636F756C64206E6F7420616C6C6FCF -:1088000063617465207063620A0000005B25735D1C -:108810002025732C20757063623A25702025733AE9 -:1088200025640A00572D5B25735D20545443502066 -:108830005B25705D3A2075647020636F6E6E6563B2 -:1088400074206661696C65640A000000572D5B2521 -:10885000735D2054544350205B25705D3A2062695B -:108860006E64206661696C6564206572723D256482 -:1088700020506F727420616C726561647920757329 -:1088800065640A005B25735D2025732C206C6F6383 -:108890003A307825782D25642072656D3A30782538 -:1088A000782D25640A0000005B25735D20416C6C07 -:1088B0006F63207061796C6F61642025642D257071 -:1088C0000A000000572D5B25735D2054544350204F -:1088D0005B25705D3A20636F756C64206E6F742049 -:1088E000616C6C6F63617465207061796C6F616439 -:1088F0000A0000005B25735D205B747063625D2D70 -:108900002570207061796C6F61643A25700A0000EF -:10891000572D5B25735D2054544350205B25705DBB -:108920003A2074637020636F6E6E656374206661B5 -:10893000696C65640A0000005B25735D2042454652 -:108940004F52452042494E4420747463703A25705A -:10895000206C7063623A2570207063623A25700A59 -:1089600000000000572D5B25735D205454435020B8 -:108970005B25705D3A206C697374656E2066616971 -:108980006C65640A00000000572D5B25735D205361 -:108990007461727420736572766572204641494C29 -:1089A0004544210A000000005B25735D20545443B8 -:1089B00050205B25702D25705D3A206E6275663DF6 -:1089C00025642C206275666C656E3D25642C2070D4 -:1089D0006F72743D2564202825732F2573290A00A2 -:1089E0007574726C3A6E3A703A7600002573000026 -:1089F0005B25735D2041524420544350205B257019 -:108A00005D3A20616363657074206E6577205B2535 -:108A1000705D0A005B25735D206C6F63616C3A25A5 -:108A2000642072656D6F74653A2564207374617497 -:108A3000653A25640A0000007061796C6F616420FA -:108A40006E6F74206672656564210000572D5B258A -:108A5000735D2041524420544350205B25705D20BB -:108A60006172673D257020726574726965733D257A -:108A7000642061626F72740A000000005B25735D00 -:108A8000206B656570416C697665436E743A256448 -:108A9000206B6565705F69646C653A25642070655C -:108AA00072736973745F636E743A25640A00000020 -:108AB0005B25735D2041524420544350205B257058 -:108AC0002D25705D206172673D257020726574727E -:108AD0006965733D25642070656E642E636C6F73E9 -:108AE000653A2564206C656E3A25640A0000000032 -:108AF0005B25735D2041524420544350205B257018 -:108B00002D25705D2074727920746F20636C6F73F3 -:108B1000652070656E64696E673A256420657272BF -:108B20003A25642069643A25640A00005B25735D78 -:108B30002041524420544350205B25702D25705D08 -:108B4000206172673D257020726574726965733D9E -:108B500025642070656E642E636C6F73653A2564BE -:108B600020636F6E6E3A25640A000000572D5B2566 -:108B7000735D2041524420544350205B25702D25C5 -:108B8000705D206172673D25702072657472696541 -:108B9000733D25640A0000005B25735D204152444B -:108BA00020544350205B25702D25705D2074727910 -:108BB00020746F20636C6F73652070656E64696EDE -:108BC000673A25640A0000005B25735D206C656EC2 -:108BD0003A25640A000000005B25735D20736F6313 -:108BE0006B3A2564207063623A2570207062756666 -:108BF0003A2570206572723A256420627566537456 -:108C00006F72653A2570206C656E3A25640A000023 -:108C10005B25735D20617463705F726563765F636B -:108C20006220703D4E554C4C206F6E20736F636B0D -:108C30003A2564207063623A25700A00572D5B253F -:108C4000735D206572723D256420703D25700A00B9 -:108C50005B25735D205265636569766564202570C8 -:108C6000206C656E3A25640A000000006174637030 -:108C70005F737461727400007463705F73656E6417 -:108C80005F646174615F70636200000061746370AF -:108C90005F706F6C6C000000617463705F7265637D -:108CA000765F6362000000006172645F7463705FEE -:108CB000737461727400000067657446697273743E -:108CC000436C69656E7400006172645F7463705F09 -:108CD00064657374726F7900636C6F73655F636F43 -:108CE0006E6E000073656E6455647044617461005B -:108CF000696E736572744E6577436C69656E744313 -:108D00006F6E6E0061636B5F726563766564000011 -:108D10007463705F636F6E6E6563745F636200009F -:108D200073656E645463704461746100636C6F7347 -:108D3000655F636F6E6E5F7063620000636C656198 -:108D40006E536F636B53746174655F636200000000 -:108D50007463705F646174615F73656E74000000BA -:108D600061636B416E6446726565446174610000C5 -:108D7000676574417661696C5463704461746142E3 -:108D80007974650066726565744461746100000001 -:108D9000676574546370446174614279746500005E -:108DA00063616C634D657267654C656E0000000021 -:108DB000696E73657274427566000000697341766E -:108DC00061696C5463704461746142797465000038 -:108DD00066726565744461746149647800000000DE -:108DE0005B25735D202570205B25642C25645D0A5E -:108DF00000000000686561644275663D256420746A -:108E000061696C4275663D25640A000025645D2039 -:108E10007063623A2570204275663A202570204CB6 -:108E2000656E3A25640A00005B25735D20205B2592 -:108E3000645D3A206C656E3A2564206964783A2551 -:108E40006420746F743A25640A0000005B25735D2A -:108E500020417661696C61626C6564206461746153 -:108E60003A2025640A000000572D5B25735D2069B8 -:108E70006478427566206F7574206F662072616E2B -:108E800067653A2025640A005B25735D2025702004 -:108E90006964783A25640A00572D5B25735D20428A -:108EA0007566203D3D204E554C4C21005B25735D81 -:108EB0002041636B207063623A2570206C656E3AC6 -:108EC000256420736F636B3A256420646174613A92 -:108ED00025700A005B25735D206765743A25642060 -:108EE00025702025640A00005B25735D206368659A -:108EF000636B3A25642025642025700A0000000079 -:108F00005B25735D2046726565202570206F74684F -:108F1000657220627566202564207461696C3A254B -:108F20006420686561643A25640A0000572D5B255A -:108F3000735D204F76657277726974696E6720621F -:108F40007566666572202570206964783A2564210B -:108F50000A000000572D5B25735D20706275665F07 -:108F6000636F70795F7061727469616C20666169AA -:108F70006C65643A207372633A25702C20647374B4 -:108F80003A25702C206C656E3A25640A00000000BA -:108F9000572D5B25735D2041766F696420746F20C7 -:108FA0004F76657277726974652064617461205BC5 -:108FB00025642D25645D210A000000005B25735D9A -:108FC00020496E736572745B25645D3A2025703AA2 -:108FD00025642D2564205B25642C25645D0A000032 -:108FE000572D5B25735D20536F636B206F75742065 -:108FF0006F662072616E67653A20736F636B3D2503 -:1090000064000000696E736572745F70427566007B -:109010006765745F70427566000000000000E10043 -:1090200008040000000000000F01110110011301ED -:109030000E01110110010F0106000500636D645F50 -:109040007365745F69700000636D645F736574704D -:1090500061737300636D645F7374617274436C69F0 -:1090600000000000466F756E6420486F73743A20EC -:109070006E616D653D25732069703D307825780AF5 -:109080000000000075736167653A206474203C310C -:109090007C303E0A0000000075736167653A2073FA -:1090A000656E64556470205B736F636B5D0A097352 -:1090B0006F636B3A20736F636B6574204E756D62DE -:1090C00065720A00536F636B65743A2025640A0069 -:1090D0005061747465726E547970653A2025640A23 -:1090E0000000000050726F766100000031323334AE -:1090F000353637383930000046696E65546573740B -:10910000000000006F6666004465627567204F4688 -:10911000460A00007072696E740000004465627552 -:10912000672009656E61626C65643A203078257845 -:109130000A000000566572626F736520656E616299 -:109140006C65643A20307825780A000044756D70AB -:109150002009656E61626C65643A20307825780A72 -:1091600000000000504F6F6C6C2009656E61626CEE -:1091700065643A20307825780A00000044656275FD -:1091800067204F4E0A00000075736167653A2064DE -:1091900065627567203C73656374696F6E3E203C41 -:1091A0006C6576656C3E0A0973656374696F6E3A27 -:1091B00020696E69742C20636D2C207370692C20DB -:1091C000746370202C207574696C2C207761726E2A -:1091D0000A096C6576656C20203A203020286F667D -:1091E00066292C203120286F6E292C2032202876E9 -:1091F0006572626F7365290A096F723A206465624D -:109200007567207072696E742F6F6E2F6F66660AB5 -:1092100000000000696E697400000000737069004E -:1092200074637000636D00007574696C0000000069 -:109230007761726E00000000616C6C0044756D70A7 -:1092400020416C6C20427566666572730A000000EE -:1092500075736167653A2064756D7050627566203C -:109260005B736F636B5D0A09736F636B3A20736F97 -:10927000636B6574204E756D6265720A00000000B4 -:109280006E6F6E650000000044656C6574696E6702 -:1092900020574550206B6579730A0000757361672C -:1092A000653A207365746B6579203C6B65795F69FD -:1092B00064782028302D33293E203C6B6579206965 -:1092C0006E206865783E0A09206F723A20736574D3 -:1092D0006B6579206E6F6E650A000000205745505F -:1092E000206B6579206D75737420626520313020A4 -:1092F000285745502D343029206F722032362028CF -:109300005745502D31303429206469676974730AD8 -:1093100000000000776C5F61706920766572736988 -:109320006F6E2076322E372E300A00006661696C2F -:10933000656420746F20676574206D6163206164CB -:1093400064726573730A0000687720616464723A1E -:109350002025730A000000006C696E6B2073746135 -:109360007475733A20000000697020616464723A79 -:10937000202573202D2000006E65746D61736B3A9B -:10938000202573202D200000676174657761793A8C -:109390002025730A00000000697020696E746572F0 -:1093A0006661636520697320646F776E0A00000050 -:1093B00064686370203A2000656E61626C65640ABF -:1093C0000000000064697361626C65640A0000005B -:1093D000444E533A202573202D2000007573616799 -:1093E000653A207374617274436C69203C697061E2 -:1093F0006464723E203C706F72743E203C736F63F5 -:109400006B3E203C7463702830292F7564702831BE -:10941000293E0A00537461727420636C69656E742E -:10942000206F6E206164647220307825782C207063 -:109430006F727420256420736F636B202564206D28 -:109440006F64652025640A00572D5B25735D2053EA -:109450007461727420636C69656E74206F6E207025 -:109460006F727420256420736F636B2025642070F5 -:10947000726F74202564206D6F646520256420461A -:1094800041494C45440A000075736167653A207391 -:1094900074617274537276203C706F72743E203C1B -:1094A000736F636B3E203C7463702830292F7564A2 -:1094B000702831293E0A00005374617274202573AC -:1094C00020736572766572206F6E20706F727420E3 -:1094D000256420736F636B2025640A00572D5B257C -:1094E000735D2053746172742025732073657276E6 -:1094F0006572206F6E20706F727420256420736F08 -:10950000636B202564204641494C45440A00000015 -:1095100075736167653A20736574646E73205B319F -:109520002D325D206161612E6262622E6363632E63 -:109530006464640A0000000053657420444E5320A4 -:1095400073657276657220256420746F2025730A16 -:10955000000000003D3D3E20444E53313A2025732B -:109560000A0000003D3D3E20444E53323A20257310 -:109570000A00000075736167653A20676574486F7B -:109580007374203C686F73746E616D653E0A0000F1 -:1095900075736167653A207770617373203C7373EC -:1095A00069643E203C706173737068726173653EDC -:1095B0000A0000002573203A204661696C6564202A -:1095C000746F20616464207061737370687261737A -:1095D000650A000075736167653A20647061737392 -:1095E000203C737369643E0A000000002573203A32 -:1095F000204661696C656420746F2064656C6574D5 -:109600006520706173737068726173650A00000091 -:1096100075736167653A206970636F6E666967206C -:109620003C69703E203C6E65746D61736B3E203CFE -:10963000676174657761792D69703E0A00000000EA -:1096400020206F72203A206970636F6E6669672010 -:109650006E6F6E652028746F20656E61626C652088 -:1096600044484350290A00005B25735D206E6966FB -:109670003A2570206C7769705F616464723D307860 -:1096800025780A0075736167653A20636F6E6E65B1 -:109690006374203C737369643E0A0000636D645F09 -:1096A000737461727453727600000000636D645FBE -:1096B00064656C70617373004D494D4C4644000005 -:1096C0000A24200024200000617661696C61626CCC -:1096D0006520636F6D6D616E64733A0A000000006F -:1096E000202025730A000000636F756C64206E6F84 -:1096F0007420616C6C6F63617465206669726D774C -:10970000617265206275666665720A00547565202F -:109710004D61722032362032323A30393A353420B7 -:109720003230313300000000776C5F696E69745F1E -:10973000636F6D706C6574655F6362006661696C10 -:10974000656420746F20696E697420776C20636F84 -:109750006E6E206D67720000572D5B25735D205380 -:109760007069206E6F7420696E697469616C697AC2 -:1097700065640A006C696E6B20646F776E2C2072D2 -:10978000656C6561736520646863700A00000000A1 -:109790006C696E6B20646F776E0A00006C696E6B8B -:1097A0002075702C20636F6E6E6563746564207421 -:1097B0006F20222573220A007265717565737469C2 -:1097C0006E672064686370202E2E2E20000000003B -:1097D0004641494C45440A00626F756E6420746FBF -:1097E0002025730A00000000572D5B25735D20497A -:1097F0006E74657266616365206E6F74207570218A -:109800000A0000007363616E00000000636F6E6EFB -:10981000656374007365746B6579000073746174BB -:1098200075730000646562756700000064756D7093 -:10983000427566006970636F6E66696700000000BC -:10984000747463700000000077706173730000002F -:109850006470617373000000676574486F7374000F -:10986000736574444E53000073746172745372765E -:10987000000000007374617274436C6900000000A2 -:1098800073656E645564700041726475696E6F2013 -:109890005769666920537461727475702E2E2E207C -:1098A0005B25735D0A0000006F7574206F66206D84 -:1098B000656D6F72790000006661696C6564207483 -:1098C0006F207072657061726520666F72206669C4 -:1098D000726D7761726520646F776E6C6F61640A78 -:1098E00000000000436F756C64206E6F7420646527 -:1098F0007465637420776C206465766963652C20D9 -:1099000061626F7274696E670A000000496E766169 -:109910006C6964206669726D776172652064617438 -:10992000612C2061626F7274696E670A000000002A -:109930004661696C656420746F2073746172742071 -:10994000776C20696E697469616C697A6174696F9A -:109950006E0A0000312E312E3000000069705F73F6 -:1099600074617475735F63620000000002000000A0 -:1099700000B71B000800000100010000286E756C94 -:109980006C290000253032782D253032782D253095 -:1099900032782D253032782D253032782D25303211 -:1099A00078000000256C752E256C752E256C752EA3 -:1099B000256C75007373696420746F6F206C6F6E13 -:1099C0006720286D6178202564290A00257320000E -:1099D00022257322000000002052535349202564A1 -:1099E0002064426D200000002041642D486F6320F8 -:1099F00000000000202857455020656E6372797082 -:109A000074696F6E290000002028544B495020656E -:109A10006E6372797074696F6E2900002028434369 -:109A20004D5020656E6372797074696F6E29000005 -:109A3000202020002530325820000000256300003F -:109A40006E6F206E65747320666F756E640A000019 -:109A5000496E76616C6964206C656E6774680A0093 -:109A600025642E25642E25642E256400544B495010 -:109A70000000000043434D500000000057455000D7 -:109A8000776C5F636D5F696E6974000073656C6508 -:109A900063745F6E65740000776C5F636F6E6E5FFA -:109AA0006C6F73745F636200776C5F7363616E5F8A -:109AB000636F6D706C6574655F636200776C5F6582 -:109AC00076656E745F636200776C5F6D6564696173 -:109AD0005F636F6E6E65637465645F636200000050 -:109AE0005B25735D20434D3A206F7574206F6620AF -:109AF0006D656D6F72790A005B25735D20434D3A89 -:109B000020636F756C64206E6F7420726567697373 -:109B1000746572206576656E742063620A000000C9 -:109B20005B25735D20434D3A20696E697469616CF1 -:109B3000697A65640A0000005B25735D20434D3A35 -:109B400020636F6E6E656374656420746F20257387 -:109B50000A0000005B25735D20434D3A20636F6E61 -:109B60006E656374206661696C65642C2073636143 -:109B70006E6E696E670A00005B25735D20434D3A87 -:109B800020636F756C64206E6F74207374617274DF -:109B9000207363616E20616674657220636F6E6E00 -:109BA000656374206661696C210A00005B25735D42 -:109BB00020434D3A20646973636F6E6E656374650C -:109BC000640A00005B25735D20434D3A20636F6E8D -:109BD0006E656374696F6E206C6F73742C20736391 -:109BE000616E6E696E670A005B25735D20434D3AB6 -:109BF00020636F756C64206E6F742073746172746F -:109C0000207363616E20616674657220636F6E6E8F -:109C1000656374206C6F7374210A00005B25735DAB -:109C200020434D3A207363616E20636F6D706C65E5 -:109C30007465640A00000000FFFFFFFFFFFF0000E3 -:109C40005B25735D20434D3A20526F616D696E67ED -:109C50002066726F6D207273736920256420746FA3 -:109C60002025640A000000005B25735D20434D3A07 -:109C7000204E6F2063616E64696461746520666F55 -:109C8000756E6420666F7220737369642022257379 -:109C9000220A00005B25735D20434D3A206661690E -:109CA0006C656420746F20636F6E6E6563740A0068 -:109CB0005B25735D20434D3A206661696C656420C5 -:109CC000746F207363616E0A000000005B25735D92 -:109CD00020434D3A20756E68616E646C6564206542 -:109CE00076656E740A000000776C5F636F6E6E5F5E -:109CF0006661696C7572655F636200000000000157 -:109D0000000018500000000B00001854000000096B -:109D1000000018800000000F000018A400000001DF -:109D2000000018E000000001000018E4000000013D -:109D300000001810000000010000181400000001CD -:109D400000001818000000010000181C00000001AD -:109D5000000018200000000100001824000000018D -:109D600000001828000000010000182C000000036B -:109D700000001830000000010000183C0000000145 -:109D8000000018400000000100001844000000011D -:109D900000001848000000010000184C4173736572 -:109DA0007274696F6E2022257322206661696C656A -:109DB00064206174206C696E6520256420696E20C2 -:109DC00025730A002E2E2F7372632F534F4654575C -:109DD0004152455F4652414D45574F524B2F5345D7 -:109DE0005256494345532F4C5749502F6C77697051 -:109DF0002D312E332E322F7372632F636F72652FC6 -:109E0000646863702E630000646863705F6F7074D1 -:109E1000696F6E3A20646863702D3E6F7074696F6D -:109E20006E735F6F75745F6C656E202B2032202B14 -:109E3000206F7074696F6E5F6C656E203C3D2044CE -:109E40004843505F4F5054494F4E535F4C454E006E -:109E5000646863705F6F7074696F6E5F6279746558 -:109E60003A20646863702D3E6F7074696F6E735F23 -:109E70006F75745F6C656E203C20444843505F4FA3 -:109E80005054494F4E535F4C454E00006468637018 -:109E90005F6F7074696F6E5F747261696C65723A3E -:109EA000206468637020213D204E554C4C0000001A -:109EB000646863705F6F7074696F6E5F74726169FC -:109EC0006C65723A20646863702D3E6D73675F6FD6 -:109ED000757420213D204E554C4C0A006468637017 -:109EE0005F6F7074696F6E5F747261696C65723AEE -:109EF00020646863702D3E6F7074696F6E735F6F5E -:109F000075745F6C656E203C20444843505F4F5031 -:109F100054494F4E535F4C454E0A000064686370CD -:109F20005F6F7074696F6E5F73686F72743A2064EC -:109F30006863702D3E6F7074696F6E735F6F7574B8 -:109F40005F6C656E202B2032203C3D2044484350FE -:109F50005F4F5054494F4E535F4C454E0000000038 -:109F6000646863705F6F7074696F6E5F6C6F6E674B -:109F70003A20646863702D3E6F7074696F6E735F12 -:109F80006F75745F6C656E202B2034203C3D20443F -:109F90004843505F4F5054494F4E535F4C454E001D -:109FA0007265706C79207761736E277420667265B4 -:109FB00065640000646863705F6372656174655F07 -:109FC000726571756573743A206E657469662021D7 -:109FD0003D204E554C4C0000646863705F637265B1 -:109FE0006174655F726571756573743A2064686346 -:109FF0007020213D204E554C4C0000006468637079 -:10A000005F6372656174655F726571756573743ADB -:10A0100020646863702D3E705F6F7574203D3D2035 -:10A020004E554C4C00000000646863705F637265BD -:10A030006174655F726571756573743A20646863F5 -:10A04000702D3E6D73675F6F7574203D3D204E55DA -:10A050004C4C0000646863705F6372656174655F97 -:10A06000726571756573743A20636865636B2074FB -:10A07000686174206669727374207062756620630B -:10A08000616E20686F6C64207374727563742064F1 -:10A090006863705F6D736700646863705F64656CAC -:10A0A0006574655F726571756573743A206E657469 -:10A0B000696620213D204E554C4C00006468637059 -:10A0C0005F64656C6574655F726571756573743A1C -:10A0D000206468637020213D204E554C4C000000E8 -:10A0E000646863705F64656C6574655F72657175E3 -:10A0F0006573743A20646863702D3E705F6F757489 -:10A1000020213D204E554C4C0000000064686370D7 -:10A110005F64656C6574655F726571756573743ACB -:10A1200020646863702D3E6D73675F6F75742021C6 -:10A130003D204E554C4C00006E6574696620213DF3 -:10A14000204E554C4C0000007062756620705F6FA9 -:10A150007574207761736E2774206672656564007C -:10A16000646863705F62696E643A206E65746966E4 -:10A1700020213D204E554C4C000000006468637067 -:10A180005F62696E643A206468637020213D204EEE -:10A19000554C4C00726574203D3D2073697A656FA3 -:10A1A000662873747275637420646863705F6D737E -:10A1B0006729202D20444843505F4F5054494F4E4B -:10A1C000535F4C454E000000726574203D3D206495 -:10A1D0006863702D3E6F7074696F6E735F696E5F38 -:10A1E0006C656E002E2E2F7372632F534F4654579B -:10A1F0004152455F4652414D45574F524B2F5345B3 -:10A200005256494345532F4C5749502F6C7769702C -:10A210002D312E332E322F7372632F636F72652FA1 -:10A22000646E732E63000000646E73207365727633 -:10A230006572206F7574206F66206172726179009B -:10A24000646E732073657276657220686173206E28 -:10A250006F20495020616464726573732073657464 -:10A260000000000070627566206D75737420626571 -:10A2700020696E206F6E652070696563650000005F -:10A28000617272617920696E646578206F757420DF -:10A290006F6620626F756E6473000000756E6B6E82 -:10A2A0006F776E20646E735F7461626C6520656E9B -:10A2B0007472792073746174653A00006C6F636125 -:10A2C0006C686F73740000003230382E36372E32CF -:10A2D00032322E3232320000000400040004000248 -:10A2E000002000050002001E002000002E2E2F730B -:10A2F00072632F534F4654574152455F4652414D6A -:10A3000045574F524B2F53455256494345532F4CB7 -:10A310005749502F6C7769702D312E332E322F73A1 -:10A3200072632F636F72652F6D656D702E63000011 -:10A330006D656D705F667265653A206D656D207044 -:10A34000726F7065726C7920616C69676E6564000C -:10A350006D656D705F6D616C6C6F633A20747970C0 -:10A3600065203C204D454D505F4D41580000000098 -:10A370006D656D705F6D616C6C6F633A206D656DBE -:10A38000702070726F7065726C7920616C69676E95 -:10A3900065640000001C002000B0002400140020B0 -:10A3A00000080010025400002E2E2F7372632F53EA -:10A3B0004F4654574152455F4652414D45574F52C3 -:10A3C0004B2F53455256494345532F4C5749502F15 -:10A3D0006C7769702D312E332E322F7372632F6399 -:10A3E0006F72652F6E657469662E6300626F6775A4 -:10A3F0007320706275663A206C656E20213D207472 -:10A400006F745F6C656E20627574206E6578742061 -:10A410003D3D204E554C4C210000000073686F7587 -:10A420006C64206E6F74206265206E756C6C207396 -:10A43000696E636520666972737420213D206C61CA -:10A4400073742100696620666972737420213D204F -:10A450004E554C4C2C206C617374206D75737420B8 -:10A46000616C736F20626520213D204E554C4C007D -:10A470002E2E2F7372632F534F4654574152455F10 -:10A480004652414D45574F524B2F53455256494323 -:10A4900045532F4C5749502F6C7769702D312E330F -:10A4A0002E322F7372632F636F72652F7062756621 -:10A4B0002E630000286820213D204E554C4C292059 -:10A4C000262620287420213D204E554C4C2920283A -:10A4D00070726F6772616D6D65722076696F6C6105 -:10A4E000746573204150492900000000702D3E74AE -:10A4F0006F745F6C656E203D3D20702D3E6C656E07 -:10A5000020286F66206C6173742070627566206904 -:10A510006E20636861696E2900000000696E6372D5 -:10A52000656D656E745F6D61676E697475646520D5 -:10A530003C3D20702D3E6C656E0000006261642021 -:10A5400070627566207479706500000070627566CF -:10A550005F74616B653A20696E76616C6964206234 -:10A5600075660000706275665F74616B653A20699C -:10A570006E76616C6964206461746170747200004D -:10A58000706275665F74616B653A20696E76616CA6 -:10A590006964207062756600646964206E6F74205F -:10A5A000636F707920616C6C2064617461000000DD -:10A5B000706275665F636F70795F706172746961F4 -:10A5C0006C3A20696E76616C696420627566000081 -:10A5D000706275665F636F70795F706172746961D4 -:10A5E0006C3A20696E76616C696420646174617094 -:10A5F00074720000706275665F636F70793A2074E0 -:10A600006172676574206E6F742062696720656E81 -:10A610006F75676820746F20686F6C6420736F7546 -:10A6200072636500705F746F20213D204E554C4C65 -:10A63000000000006F66667365745F746F203C3DB8 -:10A6400020705F746F2D3E6C656E00006F666673E0 -:10A6500065745F66726F6D203C3D20705F66726F3F -:10A660006D2D3E6C656E0000706275665F636F7085 -:10A6700079282920646F6573206E6F7420616C6C7B -:10A680006F77207061636B65742071756575657394 -:10A69000210A0000706275665F667265653A207314 -:10A6A000616E6520747970650000000070627566E7 -:10A6B0005F667265653A20702D3E726566203E20A9 -:10A6C00030000000702D3E746F745F6C656E203D2D -:10A6D0003D20702D3E6C656E202B20712D3E746FD9 -:10A6E000745F6C656E000000702D3E746F745F6C5B -:10A6F000656E203D3D20702D3E6C656E00000000B3 -:10A70000706275665F7265616C6C6F633A20702071 -:10A71000213D204E554C4C00706275665F7265613C -:10A720006C6C6F633A2073616E6520702D3E747996 -:10A730007065000067726F77203C206D61785F75EF -:10A7400031365F7400000000706275665F7265618B -:10A750006C6C6F633A207120213D204E554C4C00AB -:10A76000706275665F616C6C6F633A206261642031 -:10A7700070627566206C617965720000636865635C -:10A780006B20702D3E7061796C6F6164202B20709E -:10A790002D3E6C656E20646F6573206E6F74206F44 -:10A7A000766572666C6F77207062756600000000D7 -:10A7B000504255465F504F4F4C5F42554653495AA1 -:10A7C00045206D75737420626520626967676572E4 -:10A7D000207468616E204D454D5F414C49474E4D98 -:10A7E000454E540072656D5F6C656E203C206D6156 -:10A7F000785F7531365F7400706275665F616C6C8E -:10A800006F633A207062756620712D3E7061796CBD -:10A810006F61642070726F7065726C7920616C6911 -:10A82000676E656400000000706275665F616C6C45 -:10A830006F633A206572726F6E656F7573207479FD -:10A8400070650000706275665F636F707920666185 -:10A85000696C656400000000010203040506070737 -:10A8600007070707070000002E2E2F7372632F5370 -:10A870004F4654574152455F4652414D45574F52FE -:10A880004B2F53455256494345532F4C5749502F50 -:10A890006C7769702D312E332E322F7372632F63D4 -:10A8A0006F72652F7463702E630000007463705FB5 -:10A8B000706362735F73616E653A20616374697679 -:10A8C00065207063622D3E737461746520213D20A4 -:10A8D000434C4F53454400007463705F7063627370 -:10A8E0005F73616E653A2061637469766520706399 -:10A8F000622D3E737461746520213D204C49535490 -:10A90000454E00007463705F706362735F73616EC5 -:10A91000653A20616374697665207063622D3E73C9 -:10A920007461746520213D2054494D452D5741499E -:10A93000540000007463705F706362735F73616ED4 -:10A94000653A207477207063622D3E73746174657C -:10A95000203D3D2054494D452D57414954000000AC -:10A960007463705F62696E643A2063616E206F6E1B -:10A970006C792062696E6420696E207374617465FD -:10A9800020434C4F534544007463705F7265637697 -:10A9900065643A206C656E20776F756C6420777201 -:10A9A0006170207263765F776E640A00756E7365FE -:10A9B0006E74207365676D656E7473206C65616B72 -:10A9C000696E6700756E61636B6564207365676DA2 -:10A9D000656E7473206C65616B696E6700000000C2 -:10A9E0006F6F736571207365676D656E7473206C2E -:10A9F00065616B696E6700007463705F7063625FAE -:10AA000072656D6F76653A207463705F7063627310 -:10AA10005F73616E652829007463705F6C6973747D -:10AA2000656E3A2070636220616C726561647920A2 -:10AA3000636F6E6E65637465640000007463705FBD -:10AA4000736C6F77746D723A2061637469766520F8 -:10AA50007063622D3E737461746520213D20434C08 -:10AA60004F5345440A0000007463705F736C6F7746 -:10AA7000746D723A20616374697665207063622D2B -:10AA80003E737461746520213D204C495354454EFA -:10AA90000A0000007463705F736C6F77746D723AB4 -:10AAA00020616374697665207063622D3E73746102 -:10AAB000746520213D2054494D452D574149540A84 -:10AAC000000000007463705F736C6F77746D723A8E -:10AAD000206D6964646C652074637020213D20746E -:10AAE00063705F6163746976655F706362730000B1 -:10AAF0007463705F736C6F77746D723A20666972FD -:10AB0000737420706362203D3D207463705F6163E5 -:10AB1000746976655F706362730000007463705FD0 -:10AB2000736C6F77746D723A2054494D452D5741BF -:10AB30004954207063622D3E7374617465203D3DFD -:10AB40002054494D452D5741495400007463705FAE -:10AB5000736C6F77746D723A206D6964646C6520F4 -:10AB600074637020213D207463705F74775F70633D -:10AB7000627300007463705F736C6F77746D723A08 -:10AB800020666972737420706362203D3D20746397 -:10AB9000705F74775F706362730000007463705F4E -:10ABA000636F6E6E6563743A2063616E206F6E6CC6 -:10ABB0007920636F6E6E65637465642066726F6D75 -:10ABC00020737461746520434C4F5345440000006A -:10ABD00053594E5F53454E540000000053594E5F89 -:10ABE000524356440000000045535441424C4953DF -:10ABF0004845440046494E5F574149545F31000083 -:10AC000046494E5F574149545F320000434C4F5311 -:10AC1000455F574149540000434C4F53494E47004C -:10AC20004C4153545F41434B0000000054494D4593 -:10AC30005F5741495400000003060C18306078004B -:10AC40008000FAFC8000FC6C8000FD4E8000FDB4AA -:10AC50008000FE368000FD4E8000FE788000FEF809 -:10AC60002E2E2F7372632F534F4654574152455F18 -:10AC70004652414D45574F524B2F5345525649432B -:10AC800045532F4C5749502F6C7769702D312E3317 -:10AC90002E322F7372632F636F72652F7463705F30 -:10ACA000696E2E63000000007063622D3E736E6457 -:10ACB0005F71756575656C656E203E3D20706275CF -:10ACC000665F636C656E286E6578742D3E70290032 -:10ACD0007463705F726563656976653A2076616C4E -:10ACE0006964207175657565206C656E67746800B0 -:10ACF000696E7365672E7020213D204E554C4C00C7 -:10AD0000696E73616E65206F6666736574210000FD -:10AD10007062756620746F6F2073686F72742100A3 -:10AD2000706275665F686561646572206661696CF2 -:10AD3000656400007463705F726563656976653A87 -:10AD4000207365676D656E74206E6F742074726910 -:10AD50006D6D656420636F72726563746C792074C5 -:10AD60006F207263765F776E640A00007463705FB1 -:10AD7000726563656976653A207365676D656E74A3 -:10AD8000206E6F74207472696D6D656420636F72DC -:10AD9000726563746C7920746F206F6F73657120B6 -:10ADA00071756575650A00007463705F726563652F -:10ADB0006976653A207463706C656E203E2072631C -:10ADC000765F776E640A00007463705F7265636516 -:10ADD0006976653A206F6F736571207463706C6576 -:10ADE0006E203E207263765F776E640A000000007A -:10ADF0007463705F696E7075743A2061637469760C -:10AE000065207063622D3E737461746520213D205E -:10AE1000434C4F53454400007463705F696E707516 -:10AE2000743A20616374697665207063622D3E73A5 -:10AE30007461746520213D2054494D452D57414989 -:10AE4000540000007463705F696E7075743A20611D -:10AE50006374697665207063622D3E7374617465F6 -:10AE600020213D204C495354454E00007463705FCF -:10AE7000696E7075743A207063622D3E6E657874E9 -:10AE800020213D2070636220286265666F72652014 -:10AE900063616368652900007463705F696E707533 -:10AEA000743A207063622D3E6E65787420213D20D7 -:10AEB00070636220286166746572206361636865EF -:10AEC000290000007463705F696E7075743A2054D5 -:10AED000494D452D57414954207063622D3E73748E -:10AEE000617465203D3D2054494D452D57414954DD -:10AEF000000000007463705F696E7075743A2070B2 -:10AF000063622D3E737461746520213D20434C4F74 -:10AF1000534544007063622D3E736E645F717565C6 -:10AF200075656C656E203E20300000007063622DF8 -:10AF30003E61636365707420213D204E554C4C008A -:10AF40007463705F696E7075743A207463705F70BB -:10AF50006362735F73616E65282900002E2E2F7364 -:10AF600072632F534F4654574152455F4652414DED -:10AF700045574F524B2F53455256494345532F4C3B -:10AF80005749502F6C7769702D312E332E322F7325 -:10AF900072632F636F72652F7463705F6F75742EA9 -:10AFA00063000000636865636B20746861742066E9 -:10AFB0006972737420706275662063616E20686FB9 -:10AFC0006C6420737472756374207463705F68645A -:10AFD000720000007463705F656E71756575653A27 -:10AFE000207061636B6574206E65656473207061A9 -:10AFF000796C6F61642C206F7074696F6E732C2094 -:10B000006F722053594E2F46494E202870726F6739 -:10B0100072616D6D65722076696F6C617465732005 -:10B0200041504929000000007463705F656E7175BE -:10B030006575653A206C656E20213D2030207C7C52 -:10B0400020617267203D3D204E554C4C2028707287 -:10B050006F6772616D6D65722076696F6C61746582 -:10B0600073204150492900007463705F656E7175EB -:10B070006575653A207062756673206F6E20717514 -:10B08000657565203D3E206174206C656173742098 -:10B090006F6E65207175657565206E6F6E2D656DBF -:10B0A000707479007463705F656E71756575653A6B -:10B0B000206E6F207062756673206F6E20717565EB -:10B0C0007565203D3E20626F7468207175657565F9 -:10B0D0007320656D707479007573656720213D205C -:10B0E0004E554C4C00000000636865636B2074682B -:10B0F0006174206669727374207062756620636182 -:10B100006E20686F6C642074686520636F6D706C6E -:10B11000657465207365676C656E000070627566A6 -:10B120005F686561646572206661696C65640A00C8 -:10B1300046494E20656E71756575656420746F674C -:10B140006574686572207769746820646174610051 -:10B150007A65726F2D6C656E6774682070627566B3 -:10B16000000000007463705F656E71756575653A07 -:10B170002076616C6964207175657565206C656EFB -:10B1800067746800525354206E6F74206578706540 -:10B190006374656420686572652100002E2E2F732C -:10B1A00072632F534F4654574152455F4652414DAB -:10B1B00045574F524B2F53455256494345532F4CF9 -:10B1C0005749502F6C7769702D312E332E322F73E3 -:10B1D00072632F636F72652F7564702E63000000B9 -:10B1E000726562696E64203D3D203000636865636E -:10B1F0006B20746861742066697273742070627564 -:10B20000662063616E20686F6C642073747275636E -:10B2100074207564705F686472000000702D3E7069 -:10B2200061796C6F6164203D3D20697068647200D3 -:10B230002E2E2F7372632F534F4654574152455F42 -:10B240004652414D45574F524B2F53455256494355 -:10B2500045532F4C5749502F6C7769702D312E3341 -:10B260002E322F7372632F636F72652F697076347D -:10B270002F69636D702E6300636865636B2074686B -:10B2800061742066697273742070627566206361F0 -:10B290006E20686F6C642069636D70206D657373D8 -:10B2A0006167650069636D705F696E7075743A20DF -:10B2B0006D6F76696E6720702D3E7061796C6F617D -:10B2C0006420746F2069702068656164657220660F -:10B2D00061696C65640A0000636865636B2074686B -:10B2E0006174206669727374207062756620636190 -:10B2F0006E20686F6C642073747275637420746858 -:10B30000652049434D502068656164657200000006 -:10B3100069636D705F696E7075743A20636F7079E0 -:10B32000696E6720746F206E657720706275662085 -:10B330006661696C65640A0069636D705F696E704F -:10B3400075743A20726573746F72696E67206F72DC -:10B350006967696E616C20702D3E7061796C6F61F8 -:10B3600064206661696C65640A00000043616E27B1 -:10B3700074206D6F7665206F7665722068656164F4 -:10B38000657220696E207061636B65740000000057 -:10B390002E2E2F7372632F534F4654574152455FE1 -:10B3A0004652414D45574F524B2F534552564943F4 -:10B3B00045532F4C5749502F6C7769702D312E33E0 -:10B3C0002E322F7372632F636F72652F697076341C -:10B3D0002F69702E63000000636865636B207468DA -:10B3E000617420666972737420706275662063618F -:10B3F0006E20686F6C64207374727563742069705A -:10B400005F68647200FFFFFFFF00000000000000A3 -:10B410002E2E2F7372632F534F4654574152455F60 -:10B420004652414D45574F524B2F53455256494373 -:10B4300045532F4C5749502F6C7769702D312E335F -:10B440002E322F7372632F636F72652F697076349B -:10B450002F69705F667261672E630000746869739C -:10B46000206E656564732061207062756620696E68 -:10B47000206F6E65207069656365210073616E6978 -:10B48000747920636865636B206C696E6B656420FA -:10B490006C697374000000007072657620213D2095 -:10B4A00069707200707265762D3E6E657874203D0D -:10B4B0003D2069707200000069705F72656173738E -:10B4C0005F70627566636F756E74203E3D20636CBD -:10B4D000656E0000636865636B20667261676D6509 -:10B4E0006E747320646F6E2774206F7665726C6162 -:10B4F000700000006E6F2070726576696F75732042 -:10B50000667261676D656E742C2074686973206D56 -:10B51000757374206265207468652066697273743F -:10B5200020667261676D656E7421000073616E69DB -:10B53000747920636865636B0000000076616C6954 -:10B54000646174655F646174616772616D3A6E65B0 -:10B5500078745F70627566213D4E554C4C0000005A -:10B5600076616C69646174655F646174616772615E -:10B570006D3A646174616772616D20656E64213D2E -:10B58000646174616772616D206C656E00FFFFFF1E -:10B59000FFFFFF002E2E2F7372632F534F46545719 -:10B5A0004152455F4652414D45574F524B2F5345EF -:10B5B0005256494345532F4C5749502F6C77697069 -:10B5C0002D312E332E322F7372632F6E65746966A0 -:10B5D0002F6574686172702E630000006E65746977 -:10B5E000662D3E6877616464725F6C656E206D7570 -:10B5F0007374206265207468652073616D652061D5 -:10B6000073204554484152505F4857414444525F6B -:10B610004C454E20666F722065746861727021001F -:10B620007120213D204E554C4C000000712D3E7084 -:10B6300020213D204E554C4C00000000722D3E70E4 -:10B6400020213D204E554C4C000000006172705F7F -:10B650007461626C655B695D2E71203D3D204E55C5 -:10B660004C4C000069203C204152505F5441424CF8 -:10B67000455F53495A4500006E657469662D3E6802 -:10B6800077616464725F6C656E203D3D204554486F -:10B690004152505F4857414444525F4C454E000070 -:10B6A000636865636B207468617420666972737483 -:10B6B00020706275662063616E20686F6C64207311 -:10B6C0007472756374206574686172705F68647207 -:10B6D000000000006172705F7461626C655B695D9F -:10B6E0002E7374617465203D3D2050454E44494E93 -:10B6F00047206F7220535441424C45006E6F2070BA -:10B7000061636B65742071756575657320616C6C20 -:10B710006F77656421000000000000002E2E2F735B -:10B7200072632F534F4654574152455F4652414D25 -:10B7300045574F524B2F53455256494345532F4C73 -:10B740005749502F6C7769702D706F72742D312EA0 -:10B75000332E322F48442F69662F6E657469662F29 -:10B76000776C69662E6300000A09000052580000D9 -:10B7700054580000FFFFFF740000000001FFFFFFAE -:10B780000000FFFFFFFFFF400000000001FFFFFF80 -:10B7900041505000484D4700312E352E312E370094 -:10B7A000312E352E312E3100312E352E312E3400F2 -:10B7B00080017C7C80017C7480017C7C80017C6ABF -:10B7C00080017DCA80017D7880017D2A80017CD83E -:10B7D00080017C86800185D2800185CA800185CA6E -:10B7E000800185D2800185C2800185C2800185BA31 -:10B7F000800185BA02040B0C121618242C30424822 -:10B80000606C0000322E312E312E310078C40E00D3 -:10B81000352E332E31000000352E332E350000003A -:10B82000352E332E340000008001BF808001BF928E -:10B830008001BFA88001BF5A8001BF668001BFD4CC -:10B840008001BF5A8001BFE08001BF5A8001BF5A0A -:10B850008001BF5A8001BF5A8001BF5A8001BF5A80 -:10B860008001BF5A8001BF5A8001BF5A8001BF5A70 -:10B870008001BF5A8001BF5A8001BF5A8001BF5A60 -:10B880008001BF5A8001BF5A8001BF5A8001BF5A50 -:10B890008001BF5A8001BF5A8001BF5A8001BF5A40 -:10B8A0008001BF5A8001BF5A8001BF5A8001BF5A30 -:10B8B0008001BF5A8001BF5A8001BF5A8001BF5A20 -:10B8C0008001BF5A8001BF5A8001BF5A8001BF5A10 -:10B8D0008001BF5A8001BF5A8001BF5A8001BF5A00 -:10B8E0008001BF5A8001BF5A8001BF5A8001BF5AF0 -:10B8F0008001BF5A8001BF5A8001BF5A8001BF5AE0 -:10B900008001BF5A8001BF5A8001BF5A8001BF5ACF -:10B910008001BF5A8001BF5A8001BF5A8001BF5ABF -:10B920008001BF5A8001BF7C8001C0448001BF5AA2 -:10B930008001C0448001BF5A8001C17C8001BF5A90 -:10B940008001C1708001BF5A8001C1648001BF5A6B -:10B950008001BF5A8001BF5A8001BF5A8001C1AC2B -:10B960008001BF5A8001BF5A8001C1A08001BF5A27 -:10B970008001C1948001BF5A8001BF5A8001BF5A23 -:10B980008001BF5A8001BF5A8001BF5A8001BF5A4F -:10B990008001BF5A8001BF5A8001BF5A8001BF5A3F -:10B9A0008001BF5A8001BF5A8001BF5A8001BF5A2F -:10B9B0008001BF5A8001BF5A8001BF5A8001BF5A1F -:10B9C0008001BF5A8001BF5A8001BF5A8001BF5A0F -:10B9D0008001BF5A8001BF5A8001BF5A8001BF5AFF -:10B9E0008001BF5A8001BF5A8001BF5A8001BF5AEF -:10B9F0008001BF5A8001BF5A8001BF5A8001BF5ADF -:10BA00008001BF5A8001BF5A8001BF5A8001BF5ACE -:10BA10008001BF5A8001BF5A8001BF5A8001BF5ABE -:10BA20008001BF5A8001BF5A8001BF5A8001BF5AAE -:10BA30008001BF5A8001BF5A8001BF5A8001BF5A9E -:10BA40008001BF5A8001BF5A8001BF5A8001BF5A8E -:10BA50008001BF5A8001BF5A8001BF5A8001BF5A7E -:10BA60008001BF5A8001BF5A8001BF5A8001BF5A6E -:10BA70008001BF5A8001BF5A8001BF5A8001BF5A5E -:10BA80008001BF5A8001BF5A8001BF5A8001BF5A4E -:10BA90008001BF5A8001BF5A8001BF5A8001BF5A3E -:10BAA0008001BF5A8001BF5A8001BF5A8001BF5A2E -:10BAB0008001BF5A8001BF5A8001BF5A8001BF5A1E -:10BAC0008001BF5A8001BF5A8001BF5A8001BF5A0E -:10BAD0008001BF5A8001BF5A8001BF5A8001BF5AFE -:10BAE0008001BF5A8001BF5A8001BF5A8001BF5AEE -:10BAF0008001BF5A8001BF5A8001BF5A8001BF5ADE -:10BB00008001BF5A8001BF5A8001BF5A8001BF5ACD -:10BB10008001BF5A8001C02C8001C1588001C02C17 -:10BB20008001C02C8001C1888001BF5A8001C044BF -:10BB30008001BF5A8001C0508001BF5A8001C050AF -:10BB40008001BF5A8001C02C8001BF5A8001C02CE7 -:10BB50008001C0388001C0388001C0388001BF5AE0 -:10BB60008001C02C8001C02C8001C14C8001BF5AD3 -:10BB70008001BF5A8001C1408001BF5A8001BF5A75 -:10BB80008001BF5A8001BF5A8001BF5A8001BF5A4D -:10BB90008001BF5A8001BF5A8001BF5A8001BF5A3D -:10BBA0008001C1348001BF5A8001BF5A8001BF5A51 -:10BBB0008001BF5A8001BF5A8001BF5A8001BF5A1D -:10BBC0008001C1288001BF5A8001BF5A8001BF5A3D -:10BBD0008001BF5A8001BF5A8001BF5A8001BF5AFD -:10BBE0008001BF5A8001BF5A8001BF5A8001BF5AED -:10BBF0008001BF5A8001BF5A8001BF5A8001BF5ADD -:10BC00008001BF5A8001BF5A8001BF5A8001BF5ACC -:10BC10008001BF5A8001BF5A8001BF5A8001BF5ABC -:10BC20008001BF5A8001BF5A8001BF5A8001BF5AAC -:10BC30008001BF5A8001BF5A8001BF5A8001BF5A9C -:10BC40008001BF5A8001BF5A8001BF5A8001BF5A8C -:10BC50008001BF5A8001BF5A8001BF5A8001BF5A7C -:10BC60008001BF5A8001BF5A8001BF5A8001BF5A6C -:10BC70008001BF5A8001BF5A8001BF5A8001BF5A5C -:10BC80008001BF5A8001BF5A8001BF5A8001BF5A4C -:10BC90008001BF5A8001BF5A8001BF5A8001BF5A3C -:10BCA0008001BF5A8001BF5A8001BF5A8001BF5A2C -:10BCB0008001BF5A8001BF5A8001BF5A8001BF5A1C -:10BCC0008001BF5A8001BF5A8001BF5A8001BF5A0C -:10BCD0008001BF5A8001BF5A8001BF5A8001BF5AFC -:10BCE0008001BF5A8001BF5A8001BF5A8001BF5AEC -:10BCF0008001BF5A8001BF5A8001BF5A8001BF5ADC -:10BD00008001BF5A8001BF5A8001BF5A8001BF5ACB -:10BD10008001BF5A8001BF5A8001BF5A8001BF5ABB -:10BD20008001BF5A8001BF5A8001BF5A8001BF5AAB -:10BD30008001BF5A8001BF5A8001BF5A8001BF5A9B -:10BD40008001BF5A8001BF5A8001BF5A8001BF5A8B -:10BD50008001BF5A8001BF5A8001BF5A8001BF5A7B -:10BD60008001BF5A8001BF5A8001BF5A8001C11CA7 -:10BD70008001C1108001BF5A8001C1048001BF5AF7 -:10BD80008001BF5A8001BF5A8001C0F88001C0EC19 -:10BD90008001BF5A8001BF5A8001C0E08001BF5AB4 -:10BDA0008001BF5A8001C0D48001C0C88001C0BCDE -:10BDB0008001C0B08001C0A48001C0988001C08C07 -:10BDC0008001BF5A8001C0808001C0748001BF5AC9 -:10BDD0008001C0688001C05C8001C48E8001C47C89 -:10BDE0008001C46A8001C4588001C4468001C43403 -:10BDF0008001C3928001C3928001C4228001C410DB -:10BE00008001C3FE8001C3EC8001C3DA8001C3C896 -:10BE10008001C3B68001C3A48001C3A48001C4A073 -:10BE20008001C2D48001C2D48001C2D48001C5C0C7 -:10BE30008001C5AE8001C59C8001C2D48001C2D4FE -:10BE40008001C58A8001C2D48001C2D48001C57836 -:10BE50008001C5668001C5548001C5428001C5309E -:10BE60008001C51E8001C50C8001C4FA8001C4E8B0 -:10BE70008001C2D48001C4D68001C4C48001C2D470 -:10BE80008001C2D48001C2D48001C2D48001C2D456 -:10BE90008001C2D48001C2D48001C2D48001C2D446 -:10BEA0008001C2D48001C2D48001C2D48001C2D436 -:10BEB0008001C2D48001C2D48001C2D48001C2D426 -:10BEC0008001C2D48001C2D48001C2D48001C2D416 -:10BED0008001C2D48001C2D48001C2D48001C2D406 -:10BEE0008001C2D48001C2D48001C2D48001C2D4F6 -:10BEF0008001C2D48001C2D48001C2D48001C2D4E6 -:10BF00008001C2D48001C2D48001C2D48001C2D4D5 -:10BF10008001C2D48001C2D48001C2D48001C2D4C5 -:10BF20008001C2D48001C2D48001C2D48001C2D4B5 -:10BF30008001C2D48001C2D48001C2D48001C2D4A5 -:10BF40008001C2D48001C2D48001C2D48001C2D495 -:10BF50008001C2D48001C2D48001C2D48001C2D485 -:10BF60008001C2D48001C2D48001C2D48001C2D475 -:10BF70008001C2D48001C2D48001C2D48001C2D465 -:10BF80008001C2D48001C2D48001C2D48001C2D455 -:10BF90008001C2D48001C2D48001C2D48001C2D445 -:10BFA0008001C2D48001C2D48001C2D48001C2D435 -:10BFB0008001C2D48001C2D48001C2D48001C2D425 -:10BFC0008001C2D48001C2D48001C2D48001C2D415 -:10BFD0008001C2D48001C2D48001C2D48001C2D405 -:10BFE0008001C2D48001C2D48001C2D48001C2D4F5 -:10BFF0008001C2D48001C2D48001C2D48001C2D4E5 -:10C000008001C2D48001C2D48001C2D48001C2D4D4 -:10C010008001C4B28001EFCA8001EFCE8001EF7AC7 -:10C020008001EF7A8001EF828001EF8A8001EF9238 -:10C030008001EF9A8001EFA28001EFAA8001EFB2A8 -:10C040008001EFBA8001EFC28001EFD68001F96074 -:10C050008001F93E8001F9CC8001F8A68001F9BE8B -:10C060008001F91C8001F8A68001F8E28001F8A6A1 -:10C070008001F8A68001F8A68001F8A68001F8A644 -:10C080008001F8A68001F8A68001F8A68001F8A634 -:10C090008001F8A68001F8A68001F8A68001F8A624 -:10C0A0008001F8A68001F8A68001F8A68001F8A614 -:10C0B0008001F8A68001F8A68001F8A68001F8A604 -:10C0C0008001F8A68001F8A68001F8A68001F8A6F4 -:10C0D0008001F8A68001F8A68001F8A68001F8A6E4 -:10C0E0008001F8A68001F8A68001F8A68001F8A6D4 -:10C0F0008001F8A68001F8A68001F8A68001F8A6C4 -:10C100008001F8A68001F8A68001F8A68001F8A6B3 -:10C110008001F8A68001F8A68001F8A68001F8A6A3 -:10C120008001F8A68001F8A68001F8A68001F8A693 -:10C130008001F8A68001F8A68001F8A68001F8A683 -:10C140008001F8A68001F8A68001F8C08001FA58A5 -:10C150008001F8F08001F8F08001F90E8001F8F01C -:10C160008001F8F08001F8F08001F8F08001F8F02B -:10C170008001F8F08001F8F08001F8F08001F8F01B -:10C180008001F8F08001F90E8001F8F08001F8F0EC -:10C190008001F8F08001F8F08001F8F08001F8F0FB -:10C1A0008001F8F08001FA488001F8F08001F8F091 -:10C1B0008001F8F08001F8F08001F8F08001F8F0DB -:10C1C0008001F8F08001F8F08001F8F08001F8F0CB -:10C1D0008001F8F08001F8F08001F8F08001F8F0BB -:10C1E0008001F8F08001F8F08001F8F08001F8F0AB -:10C1F0008001F8F08001F8F08001F8F08001F8F09B -:10C200008001F8F08001F8F08001F8F08001F8F08A -:10C210008001F8F08001F8F08001F8F08001F8F07A -:10C220008001F8F08001F8F08001F8F08001F8F06A -:10C230008001F8F08001F8F08001F8F08001F8F05A -:10C240008001F8F08001F8F08001F8F08001F8F04A -:10C250008001F8F08001F8F08001F8F08001F8F03A -:10C260008001F8F08001F8F08001F8F08001F8F02A -:10C270008001F8F08001F8F08001F8F08001F8F01A -:10C280008001F8F08001F8F08001F8F08001F8F00A -:10C290008001F8F08001F8F08001F8F08001F8F0FA -:10C2A0008001F8F08001F8F08001F8F08001F8F0EA -:10C2B0008001F8F08001F8F08001F8F08001F8F0DA -:10C2C0008001F8F08001F8F08001F8F08001F8F0CA -:10C2D0008001F8F08001F8F08001F8F08001F8F0BA -:10C2E0008001F8F08001F8F08001F8F08001F8F0AA -:10C2F0008001F8F08001F8F08001F8F08001F8F09A -:10C300008001F8F08001F8F08001F8F08001F8F089 -:10C310008001F8F08001F8F08001F8F08001F8F079 -:10C320008001F8F08001F8F08001F8F08001F8F069 -:10C330008001F8F08001F8F08001F8F08001F8F059 -:10C340008001F8F08001F8F08001F8F08001F8F049 -:10C350008001F90E8001FA348001F8F08001F90EB5 -:10C360008001F8F08001F8F08001F8F08001F8F029 -:10C370008001F8F08001F8F08001F8F08001F90EFA -:10C380008001F8F08001F8F08001FA2C8001FA2495 -:10C390008001FA1C8001FA148001FA0C8001FA0471 -:10C3A0008001FA408001F8F08001FA5057455F495A -:10C3B0004E445F38303231315F434F4E4E45435427 -:10C3C0004544000057455F494E445F3830323131B3 -:10C3D0005F444953434F4E4E454354494E47000036 -:10C3E00057455F494E445F38303231315F494253DF -:10C3F000535F444953434F4E4E4543544544000018 -:10C40000332E312E322E312E34000000352E3233B1 -:10C4100000000000352E32322E320000352E32322E -:10C420002E310000352E322E39000000352E3138E5 -:10C430002E310000352E31382E320000352E3232AA -:10C440002E340000352E32342E320000352E323498 -:10C450002E310000352E31312E310000352E322E96 -:10C4600032000000352E31362E320000352E3136A6 -:10C470002E310000312E312E312E323200000000DC -:10C48000352E322E31392E3500000000352E322E59 -:10C4900031392E3400000000352E322E31392E3342 -:10C4A00000000000352E322E31392E3200000000FF -:10C4B000352E322E31392E3100000000352E322E2D -:10C4C00031000000352E31312E320000352E313151 -:10C4D0002E330000352E31312E340000352E31310F -:10C4E0002E350000352E31312E360000352E3131FB -:10C4F0002E380000352E31312E37000073736964F9 -:10C500000000000070736B004A756E6B41500000B4 -:10C5100057534300656170005746412D53696D7054 -:10C520006C65436F6E6669672D456E726F6C6C65E6 -:10C53000652D312D300000006964656E7469747971 -:10C54000000000006E7277696669000064656661CC -:10C55000756C740057455F494E445F383032313155 -:10C560005F444953434F4E4E4543544544000000F9 -:10C5700057455F494E445F50414952574953455FC3 -:10C580004D49435F4552524F5200000057455F49A5 -:10C590004E445F47524F55505F4D49435F4552529D -:10C5A0004F52000057455F494E445F43414E444956 -:10C5B000444154455F4C495354000000494E4143A7 -:10C5C0005449564500000000444953434F4E4E45E0 -:10C5D00043544544000000005343414E4E494E47EA -:10C5E000000000004153534F43494154494E470016 -:10C5F0004153534F43494154454400003457415936 -:10C600005F48414E445348414B45000047524F5507 -:10C61000505F48414E445348414B4500434F4D50B5 -:10C620004C45544544000000554E4B4E4F574E006C -:10C630004354524C2D4556454E542D5445524D4968 -:10C640004E4154494E47202D207369676E616C201E -:10C650002564207265636569766564007769726533 -:10C660006400000043616E63656C6C696E672061F5 -:10C67000757468656E7469636174696F6E2074693E -:10C680006D656F75740000005750413A2045415068 -:10C690004F4C2070726F63657373696E6720636FB0 -:10C6A0006D706C657465000043616E63656C6C69E8 -:10C6B0006E67207363616E207265717565737400B7 -:10C6C00052534E3A207573696E672049454545209F -:10C6D0003830322E3131692F44392E3000000000BD -:10C6E0005750413A207573696E672049454545208A -:10C6F0003830322E3131692F44332E3000000000A3 -:10C700005750413A204661696C656420746F20700F -:10C7100061727365205750412049452066726F6DE4 -:10C72000206173736F63696174696F6E20696E66EF -:10C730006F0000005750413A2044726976657220BC -:10C74000757365642064697361626C6564206772E7 -:10C750006F75702063697068657220307825782065 -:10C76000286D61736B203078257829202D20726523 -:10C770006A656374000000005750413A20447269B2 -:10C7800076657220757365642064697361626C6597 -:10C790006420706169727769736520636970686588 -:10C7A00072203078257820286D61736B20307825D1 -:10C7B0007829202D2072656A656374005750413ACC -:10C7C00020447269766572207573656420646973AC -:10C7D00061626C6564206B6579206D616E6167656F -:10C7E0006D656E74203078257820286D61736B201C -:10C7F0003078257829202D2072656A6563740000E1 -:10C800005750413A207573696E672047544B204357 -:10C81000434D50005750413A207573696E67204769 -:10C82000544B20544B4950005750413A207573697E -:10C830006E672047544B205745503130340000007C -:10C840005750413A207573696E672047544B205703 -:10C8500045503430000000005750413A207573694C -:10C860006E672050544B2043434D50005750413A7F -:10C87000207573696E672050544B20544B4950000B -:10C880005750413A207573696E672050544B204EC3 -:10C890004F4E45005750413A207573696E67204BE3 -:10C8A00045595F4D474D54203830322E31580000E5 -:10C8B0005750413A207573696E67204B45595F4D5B -:10C8C000474D54205750412D50534B005750413A3B -:10C8D000207573696E67204B45595F4D474D542055 -:10C8E0005750412D4E4F4E45000000005750413AE1 -:10C8F000204661696C656420746F2073656C6563A4 -:10C9000074205750412F52534E0000004661696C0D -:10C91000656420746F20706172736520746865208F -:10C92000636F6E66696775726174696F6E206669A0 -:10C930006C652027257327202D2065786974696E22 -:10C94000670000005265636F6E6669677572617497 -:10C95000696F6E20636F6D706C65746564000000B4 -:10C9600053657474696E672061757468656E746967 -:10C97000636174696F6E2074696D656F75743A20B8 -:10C98000256420736563202564207573656300004A -:10C9900053657474696E67207363616E207265718C -:10C9A000756573743A2025642073656320256420BF -:10C9B000757365630000000041757468656E746985 -:10C9C000636174696F6E20776974682025303278EE -:10C9D0003A253032783A253032783A253032783A72 -:10C9E000253032783A253032782074696D656420BC -:10C9F0006F75742E00000000547279696E672074A0 -:10CA00006F206173736F63696174652077697468FF -:10CA100020253032783A253032783A253032783A4B -:10CA2000253032783A253032783A2530327820284D -:10CA3000535349443D2725732720667265713D2570 -:10CA400064204D487A290000547279696E67207419 -:10CA50006F206173736F63696174652077697468AF -:10CA60002053534944202725732700004173736FD7 -:10CA700063696174696F6E20726571756573742086 -:10CA8000746F2074686520647269766572206661CF -:10CA9000696C6564000000007770615F7375707089 -:10CAA0006C6963616E742076302E352E31300A4306 -:10CAB0006F7079726967687420286329203230307A -:10CAC000332D323030382C204A6F756E69204D611D -:10CAD0006C696E656E203C6A4077312E66693E2037 -:10CAE000616E6420636F6E7472696275746F7273C5 -:10CAF00000000000546869732070726F6772616D86 -:10CB0000206973206672656520736F667477617241 -:10CB1000652E20596F752063616E2064697374728D -:10CB2000696275746520697420616E642F6F72206C -:10CB30006D6F646966792069740A756E6465722028 -:10CB4000746865207465726D73206F662074686503 -:10CB500020474E552047656E6572616C20507562A6 -:10CB60006C6963204C6963656E73652076657273CA -:10CB7000696F6E20322E0A0A416C7465726E6174A0 -:10CB80006976656C792C207468697320736F66749C -:10CB900077617265206D61792062652064697374C4 -:10CBA0007269627574656420756E6465722074685C -:10CBB00065207465726D73206F66207468650A4223 -:10CBC0005344206C6963656E73652E205365652040 -:10CBD000524541444D4520616E6420434F505949B0 -:10CBE0004E4720666F72206D6F72652064657461B8 -:10CBF000696C732E0A0000002530325800000000D6 -:10CC00008003C4FC80024A908002490000000010AA -:10CC100000000014000000000000002000000000E0 -:10CC20008003D3EC80024DF0800248880000006051 -:10CC300000000000000000000000000100000000F3 -:10CC40008003D3F880024DCC800248280000000009 -:10CC500000000000000000000000000000000000D4 -:10CC60008003C50480024D00800248C4000000001B -:10CC700000000000000000000000000000000001B3 -:10CC80008003D4008002408C800247A8000000008E -:10CC90000000000000000000000000000000000094 -:10CCA0008003D40880023F448002467C00000000DC -:10CCB0000000000000000000000000000000000074 -:10CCC0008003D41480023F188002466C00000000EC -:10CCD0000000000000000000000000000000000054 -:10CCE0008003D42080023EEC8002465C00000000FD -:10CCF0000000000000000000000000000000000034 -:10CD00008003D42880023CA4800244740000000008 -:10CD10000000000000000000000000000000000013 -:10CD20008003C51480024B9080024B00000000007D -:10CD300000000000000000000000000000000000F3 -:10CD40008003C53880024A908002490000000068D4 -:10CD50000000006C00000000000000000000000067 -:10CD60008003D43480024A908002490000000070A1 -:10CD7000000000740000000000000000000000003F -:10CD80008003D44880024A90800249000000007865 -:10CD90000000007C000000100000002000000001E6 -:10CDA0008003D45080024A90800249000000008035 -:10CDB00000000084000000000000000000000000EF -:10CDC0008003D45480024A90800249000000008809 -:10CDD0000000008C000000000000000000000001C6 -:10CDE0008003D46080024A908002490000000090D5 -:10CDF0000000000000000000000000000000000033 -:10CE00008003D46880024A908002490000000094A8 -:10CE10000000000000000000000000000000000012 -:10CE20008003D47080024A9080024900000000987C -:10CE300000000000000000000000000000000000F2 -:10CE40008003D47C80024A90800249000000009C4C -:10CE500000000000000000000000000000000000D2 -:10CE60008003D48880024A9080024900000000A01C -:10CE700000000000000000000000000000000001B1 -:10CE80008003D49C80024A9080024900000000A4E4 -:10CE90000000000000000000000000000000000092 -:10CEA0008003D4A480024A9080024900000000A8B8 -:10CEB0000000000000000000000000000000000072 -:10CEC0008003D4B480024A9080024900000000AC84 -:10CED0000000000000000000000000000000000052 -:10CEE0008003D4C880024A9080024900000000B04C -:10CEF0000000000000000000000000000000000032 -:10CF00008003D4D480024A9080024900000000B41B -:10CF10000000000000000000000000000000000011 -:10CF20008003D4E080024A9080024900000000B8EB -:10CF300000000000000000000000000000000000F1 -:10CF40008003D4F080024A9080024900000000BCB7 -:10CF500000000000000000000000000000000000D1 -:10CF60008003D50080024A9080024900000000C082 -:10CF700000000000000000000000000000000001B0 -:10CF80008003D51480024A9080024900000000C44A -:10CF90000000000000000000000000000000000091 -:10CFA0008003D52080024A9080024900000000C81A -:10CFB0000000000000000000000000000000000071 -:10CFC0008003D53080024A9080024900000000CCE6 -:10CFD0000000000000000000000000000000000051 -:10CFE0008003D54480024A9080024900000000D4AA -:10CFF0000000000000000000000000000000000031 -:10D000008003D54C80024A9080024900000000D87D -:10D010000000000000000000000000000000000010 -:10D020008003D55480024A9080024900000000DC51 -:10D0300000000000000000000000000000000000F0 -:10D040008003D55C80024A9080024900000000E025 -:10D0500000000000000000000000000000000001CF -:10D060008003D56080024A9080024900000000E8F9 -:10D0700000000000000000000000000000000000B0 -:10D080008003D56C80024A9080024900000000ECC9 -:10D090000000000000000000000000000000000090 -:10D0A0008003D65C80024DF080024888000000E4D6 -:10D0B0000000000000000000000000000000000070 -:10D0C0008003D57480024DF080024888000000F093 -:10D0D0000000000000000000000000000000000050 -:10D0E0008003D58080024A78800244580000000006 -:10D0F000000000000000000000000000000000012F -:10D100008003D58C80024A608002443C000000000D -:10D11000000000000000000000000000000000010E -:10D120008003D59880024A48800244200000000015 -:10D1300000000000000000000000000000000001EE -:10D140008003D5A480024A3080024404000000001D -:10D1500000000000000000000000000000000001CE -:10D160008003D5B080024DF0800248880000014461 -:10D1700000000000000000000000000000000000AF -:10D180008003D5C080024DF0800248880000000C6A -:10D19000000000000000000000000000000000008F -:10D1A0008003D5CC80024DF0800248880000017CCD -:10D1B000000000000000000000000000000000006F -:10D1C0008003D5DC80024A90800249000000018083 -:10D1D000000000000000000000000000000000004F -:10D1E0008003D5E880024DF0800248880000019C51 -:10D1F000000000000000000000000000000000002F -:10D200008003D5F880024DF0800248880000018438 -:10D21000000000000000000000000001000000000D -:10D220008003D60080024DF0800248880000006430 -:10D2300000000000000000000000000200000000EC -:10D240008003D60880024DF0800248880000014823 -:10D2500000000000000000000000000100000000CD -:10D260008003D62080024DF080024888000001949F -:10D2700000000000000000000000000100000000AD -:10D280008003D62C80024A9080024900000001A051 -:10D29000000000000000000000000000000000008E -:10D2A0008003D63480024DF0800248880000019847 -:10D2B000000000000000000000000001000000006D -:10D2C0008003D63C80024DF0800248880000014C6B -:10D2D000000000000000000000000001000000004D -:10D2E0008003D64880024DF080024888000001A4E7 -:10D2F00000000000000000000000271000000000F7 -:10D300002A0000004F50454E000000005348415293 -:10D31000454400004C454150000000005745503145 -:10D320003034000057455034300000005750412D34 -:10D3300045415000494545453830323158000000DC -:10D340005750410052534E005750413200000000E8 -:10D3500025734F50454E00002573534841524544B4 -:10D360000000000025734C454150000025734343E5 -:10D370004D5000002573544B49500000257357450C -:10D3800050313034000000002573574550343000D0 -:10D3900025734E4F4E45000025735750412D505375 -:10D3A0004B00000025735750412D454150000000AF -:10D3B000257349454545383032315800257357505B -:10D3C000412D4E4F4E45000025735750410000003F -:10D3D000257352534E0000007765705F6B657925A9 -:10D3E0006400000025732573000000007363616E04 -:10D3F0005F73736964000000627373696400000006 -:10D4000070726F746F0000006B65795F6D676D748B -:10D4100000000000706169727769736500000000A8 -:10D4200067726F7570000000617574685F616C678A -:10D4300000000000616E6F6E796D6F75735F6964D7 -:10D44000656E74697479000065617070736B0000BB -:10D450006E61690070617373776F72640000000021 -:10D4600063615F636572740063615F70617468001B -:10D47000636C69656E745F6365727400707269765F -:10D480006174655F6B657900707269766174655F60 -:10D490006B65795F706173737764000064685F66C1 -:10D4A000696C65007375626A6563745F6D6174634E -:10D4B00068000000616C747375626A6563745F6D07 -:10D4C000617463680000000063615F6365727432B9 -:10D4D0000000000063615F7061746832000000004A -:10D4E000636C69656E745F6365727432000000007E -:10D4F000707269766174655F6B6579320000000057 -:10D50000707269766174655F6B6579325F706173A3 -:10D510007377640064685F66696C653200000000C0 -:10D520007375626A6563745F6D617463683200006D -:10D53000616C747375626A6563745F6D617463684E -:10D5400032000000706861736531000070686173BB -:10D5500065320000706373630000000070696E0044 -:10D56000656E67696E655F69640000006B65795F71 -:10D57000696400006561706F6C5F666C6167730061 -:10D580007765705F6B657930000000007765705FCC -:10D590006B657931000000007765705F6B657932EB -:10D5A000000000007765705F6B6579330000000054 -:10D5B0007765705F74785F6B6579696478000000E7 -:10D5C0007072696F72697479000000006561705F44 -:10D5D000776F726B61726F756E6400007061635F6C -:10D5E00066696C6500000000667261676D656E7447 -:10D5F0005F73697A650000006D6F6465000000006C -:10D600007573655F7770730070726F6163746976AC -:10D61000655F6B65795F63616368696E67000000D1 -:10D6200064697361626C65640000000069645F7323 -:10D6300074720000706565726B6579006D6978655C -:10D64000645F63656C6C00006672657175656E631E -:10D6500079000000888E000077696669656E6769E9 -:10D660006E65000057694669456E67696E65000022 -:10D670008003D6588003D664800254C880025420A8 -:10D6800080024F98800252E0800253E8800254A446 -:10D690000000000080024F9A800252C880024F941E -:10D6A00080024F96800252B08002529880024F9CB6 -:10D6B00080024F9E8002523C800251E0800251D491 -:10D6C000800251AC00000000000000008002518088 -:10D6D00080024FF480024FD00000000000000000E4 -:10D6E000000000000000000000000000000000003A -:10D6F000000000000000000080024FA08002564E93 -:10D700008002564A80025646800256408002563CAD -:10D7100080025636800256328002562C80025626EF -:10D72000800256928002568C800256888002568271 -:10D730008002567C80025676800256728002566CB9 -:10D740008002566680025B3480025C0880025BE0E7 -:10D7500080025BBA80025BA080025B3480025B3493 -:10D7600080025B3480025DC280025E3A80025E12FB -:10D7700080025D8E80025CC280025AF680025DF4F7 -:10D7800080025DCE800268DC80026AA280026A00AC -:10D7900080026904800268F2800269EE800268DC1F -:10D7A000800268DC800268E8800268E8800268E83D -:10D7B000696E76616C696461746500004354524C13 -:10D7C0002D4556454E542D4541502D535543434507 -:10D7D0005353204541502061757468656E746963C8 -:10D7E0006174696F6E20636F6D706C657465642021 -:10D7F0007375636365737366756C6C7920286261F9 -:10D80000736564206F6E206C6F776572206C617930 -:10D810006572207375636365737329004354524CBA -:10D820002D4556454E542D4541502D5355434345A6 -:10D830005353204541502061757468656E74696367 -:10D840006174696F6E20636F6D706C6574656420C0 -:10D850007375636365737366756C6C7900000000A3 -:10D860004354524C2D4556454E542D4541502D465E -:10D8700041494C55524520454150206175746865B9 -:10D880006E7469636174696F6E206661696C65644A -:10D8900000000000494E495449414C495A45000096 -:10D8A0004541503A206D6F7265207468616E202585 -:10D8B000642061757468656E7469636174696F6E04 -:10D8C00020726F756E6473202D2061626F72740018 -:10D8D0004354524C2D4556454E542D4541502D4EE6 -:10D8E0004F54494649434154494F4E2000000000DF -:10D8F0004354524C2D4556454E542D4541502D53C1 -:10D900005441525445442045415020617574686526 -:10D910006E7469636174696F6E207374617274658B -:10D92000640000004745545F4D4554484F44000093 -:10D930004541503A204661696C656420746F2069E6 -:10D940006E697469616C697A6520454150206D6526 -:10D9500074686F643A2076656E646F722025752056 -:10D960006D6574686F642025752028257329000073 -:10D970004354524C2D4556454E542D4541502D4D46 -:10D980004554484F44204541502076656E646F727F -:10D99000202575206D6574686F6420257520282505 -:10D9A00073292073656C656374656400454150207C -:10D9B0006465696E697400008002794480027ADAD5 -:10D9C00080027B5880027BA280027CC880027CD2CD -:10D9D00080027AC45750413A20544B495020636F1B -:10D9E000756E7465726D656173757265732073749D -:10D9F0006F707065640000004173736F63696174D8 -:10DA0000656420746F2061206E6577204253533A1D -:10DA10002042535349443D253032783A25303278FC -:10DA20003A253032783A253032783A253032783A11 -:10DA300025303278000000004173736F63696174B0 -:10DA40006564207769746820253032783A25303251 -:10DA5000783A253032783A253032783A25303278A3 -:10DA60003A253032780000005750413A20342D5783 -:10DA700061792048616E647368616B6520666169D5 -:10DA80006C6564202D207072652D73686172656409 -:10DA9000206B6579206D617920626520696E636F06 -:10DAA00072726563740000004354524C2D45564514 -:10DAB0004E542D444953434F4E4E45435445442004 -:10DAC0002D20446973636F6E6E656374206576659F -:10DAD0006E74202D2072656D6F7665206B6579738D -:10DAE000000000004D69636861656C204D4943206A -:10DAF0006661696C757265206465746563746564DC -:10DB000000000000544B495020636F756E746572BD -:10DB10006D65617375726573207374617274656489 -:10DB200000000000000000080000000600000006E1 -:10DB3000496E646578202F204141202F20504D4BA5 -:10DB40004944202F2065787069726174696F6E2076 -:10DB500028696E207365636F6E647329202F206FB0 -:10DB600070706F7274756E69737469630A00000077 -:10DB7000256420253032783A253032783A25303203 -:10DB8000783A253032783A253032783A2530327872 -:10DB9000200000002025642025640A00504D4B2001 -:10DBA0004E616D650000000052534E3A207374615F -:10DBB0007274696E67207072652D61757468656E28 -:10DBC0007469636174696F6E2077697468202530A9 -:10DBD00032783A253032783A253032783A25303268 -:10DBE000783A253032783A253032780052534E3A1E -:10DBF0002070726F63657373696E6720504D4B536D -:10DC0000412063616E646964617465206C6973743A -:10DC10000000000052534E3A206E6F7420696E204F -:10DC20007375697461626C652073746174652066D4 -:10DC30006F72206E6577207072652D6175746865EE -:10DC40006E7469636174696F6E00000052534E3ADE -:10DC500020504D4B53412063616E6469646174656B -:10DC600020253032783A253032783A253032783AE9 -:10DC7000253032783A253032783A253032782073A0 -:10DC8000656C656374656420666F72207072652DC3 -:10DC900061757468656E7469636174696F6E0000A4 -:10DCA00052534E3A20504D4B53412063616E64698C -:10DCB0006461746520253032783A253032783A250F -:10DCC0003032783A253032783A253032783A253079 -:10DCD000327820646F6573206E6F74206E656564A2 -:10DCE000207072652D61757468656E746963617406 -:10DCF000696F6E20616E796D6F72650052534E3A96 -:10DD0000206E6F206D6F72652070656E64696E673E -:10DD100020504D4B53412063616E646964617465AA -:10DD20007300000052534E3A2061646465642050D1 -:10DD30004D4B53412063616368652063616E646984 -:10DD40006461746520253032783A253032783A257E -:10DD50003032783A253032783A253032783A2530E8 -:10DD60003278207072696F202564000052534E3A59 -:10DD7000207072652D61757468656E746963617475 -:10DD8000696F6E207769746820253032783A2530C3 -:10DD900032783A253032783A253032783A253032A6 -:10DDA000783A253032782074696D6564206F757417 -:10DDB00000000000636F6D706C657465642073759E -:10DDC000636365737366756C6C79000052534E3AE9 -:10DDD000206661696C656420746F20676574206DCE -:10DDE00061737465722073657373696F6E206B6500 -:10DDF000792066726F6D207072652D617574682070 -:10DE00004541504F4C207374617465206D616368A7 -:10DE1000696E65730000000052534E3A20707265BF -:10DE20002D61757468656E7469636174696F6E20C5 -:10DE30007769746820253032783A253032783A256F -:10DE40003032783A253032783A253032783A2530F7 -:10DE50003278202573000000800000008002B51C8D -:10DE60008002B50A8002B5008002B4FA8002B4F4E0 -:10DE70008002B4EE8002B4E8000FAC010050F20260 -:10DE8000000FAC02000FAC01000FAC050050F20215 -:10DE9000000FAC040050F2010050F2010050F201FA -:10DEA0000050F2050050F200000FAC00000FAC0370 -:10DEB0000050F200000FAC0449454545203830328F -:10DEC0002E315820286E6F20575041290000000045 -:10DED0005750412F49454545203830322E31582F73 -:10DEE00045415000575041322F4945454520383073 -:10DEF000322E31582F45415000000000575041321A -:10DF00002D50534B000000005745502D3430000079 -:10DF10005745502D313034007061697277697365EF -:10DF20005F6369706865723D25730A67726F75700B -:10DF30005F6369706865723D25730A6B65795F6D13 -:10DF4000676D743D25730A005750413A20257320B0 -:10DF5000287372633D253032783A253032783A257D -:10DF60003032783A253032783A253032783A2530D6 -:10DF7000327829005750413A204B6579206E656709 -:10DF80006F74696174696F6E20636F6D706C657416 -:10DF90006564207769746820253032783A253032FC -:10DFA000783A253032783A253032783A253032784E -:10DFB0003A25303278205B50544B3D25732047542E -:10DFC0004B3D25735D0000005750413A20496E7665 -:10DFD000616C6964204541504F4C2D4B657920663A -:10DFE00072616D65202D206B65795F6461746120BD -:10DFF0006F766572666C6F7720282564203E202539 -:10E000006C752900494520696E20332F34206D73CB -:10E010006720646F6573206E6F74206D6174636830 -:10E02000207769746820494520696E2042656163E4 -:10E030006F6E2F50726F62655265737020286E6F1D -:10E040002049453F29000000494520696E20332FB3 -:10E0500034206D736720646F6573206E6F74206D5C -:10E0600061746368207769746820494520696E206F -:10E07000426561636F6E2F50726F62655265737097 -:10E0800000000000506F737369626C6520646F77E5 -:10E090006E67726164652061747461636B2064658E -:10E0A000746563746564202D2052534E207761732C -:10E0B00020656E61626C656420616E642052534E0F -:10E0C0002049452077617320696E206D7367203386 -:10E0D0002F342C20627574206E6F7420696E20427C -:10E0E0006561636F6E2F50726F6265526573700069 -:10E0F0005750413A204661696C656420746F20670F -:10E100006574206D61737465722073657373696FD4 -:10E110006E206B65792066726F6D204541504F4CC3 -:10E12000207374617465206D616368696E65730046 -:10E130005750413A204B65792068616E647368617D -:10E140006B652061626F7274656400005750413ADC -:10E15000204661696C656420746F20676574207265 -:10E16000616E646F6D206461746120666F7220530C -:10E170004E6F6E6365000000506169727769736568 -:10E18000206B657920657870616E73696F6E000031 -:10E190005750413A2047726F75702072656B6579F0 -:10E1A000696E6720636F6D706C6574656420776954 -:10E1B000746820253032783A253032783A2530326A -:10E1C000783A253032783A253032783A253032782C -:10E1D000205B47544B3D25735D00000000000000AC -:10E1E000000000000050F204000FAC02000FAC0170 -:10E1F00052096AD53036A538BF40A39E81F3D7FBBC -:10E200007CE339829B2FFF87348E4344C4DEE9CB05 -:10E21000547B9432A6C2233DEE4C950B42FAC34E7A -:10E22000082EA16628D924B2765BA2496D8BD12530 -:10E2300072F8F66486689816D4A45CCC5D65B692D4 -:10E240006C704850FDEDB9DA5E154657A78D9D8478 -:10E2500090D8AB008CBCD30AF7E45805B8B3450698 -:10E26000D02C1E8FCA3F0F02C1AFBD0301138A6BB2 -:10E270003A9111414F67DCEA97F2CFCEF0B4E673E2 -:10E2800096AC7422E7AD3585E2F937E81C75DF6E90 -:10E2900047F11A711D29C5896FB7620EAA18BE1BF6 -:10E2A000FC563E4BC6D279209ADBC0FE78CD5AF49C -:10E2B0001FDDA8338807C731B11210592780EC5FE2 -:10E2C00060517FA919B54A0D2DE57A9F93C99CEF3E -:10E2D000A0E03B4DAE2AF5B0C8EBBB3C835399613F -:10E2E000172B047EBA77D626E169146355210C7D7D -:10E2F00001020408102040801B36000051F4A75092 -:10E300007E4165531A17A4C33A275E963BAB6BCB8D -:10E310001F9D45F1ACFA58AB4BE303932030FA55FF -:10E32000AD766DF688CC7691F5024C254FE5D7FC9D -:10E33000C52ACBD726354480B562A38FDEB15A49B2 -:10E3400025BA1B6745EA0E985DFEC0E1C32F750232 -:10E35000814CF0128D4697A36BD3F9C6038F5FE70C -:10E3600015929C95BF6D7AEB955259DAD4BE832DE8 -:10E37000587421D349E069298EC9C84475C2896A95 -:10E38000F48E797899583E6B27B971DDBEE14FB6AE -:10E39000F088AD17C920AC667DCE3AB463DF4A1869 -:10E3A000E51A31829751336062537F45B16477E05B -:10E3B000BB6BAE84FE81A01CF9082B947048685892 -:10E3C0008F45FD1994DE6C87527BF8B7AB73D3236E -:10E3D000724B02E2E31F8F576655AB2AB2EB280758 -:10E3E0002FB5C20386C57B9AD33708A5302887F29C -:10E3F00023BFA5B202036ABAED16825C8ACF1C2B3A -:10E40000A779B492F307F2F04E69E2A165DAF4CD90 -:10E410000605BED5D134621FC4A6FE8A342E539D94 -:10E42000A2F355A0058AE132A4F6EB750B83EC3913 -:10E430004060EFAA5E719F06BD6E10513E218AF9C1 -:10E4400096DD063DDD3E05AE4DE6BD4691548DB5EB -:10E4500071C45D050406D46F605015FF1998FB2444 -:10E46000D6BDE997894043CC67D99E77B0E842BDD5 -:10E4700007898B88E7195B3879C8EEDBA17C0A47EE -:10E480007C420FE9F8841EC90000000009808683E1 -:10E49000322BED481E1170AC6C5A724EFD0EFFFB14 -:10E4A0000F8538563DAED51E362D39270A0FD96453 -:10E4B000685CA6219B5B54D124362E3A0C0A67B1C6 -:10E4C0009357E70FB4EE96D21B9B919E80C0C54F29 -:10E4D00061DC20A25A774B691C121A16E293BA0A21 -:10E4E000C0A02AE53C22E043121B171D0E090D0BAC -:10E4F000F28BC7AD2DB6A8B9141EA9C857F119855E -:10E50000AF75074CEE99DDBBA37F60FDF701269F39 -:10E510005C72F5BC44663BC55BFB7E348B4329765D -:10E52000CB23C6DCB6EDFC68B8E4F163D731DCCAB6 -:10E53000426385101397224084C61120854A247DAA -:10E54000D2BB3DF8AEF93211C729A16D1D9E2F4BEC -:10E55000DCB230F30D8652EC77C1E3D02BB3166CEE -:10E56000A970B999119448FA47E96422A8FC8CC4AF -:10E57000A0F03F1A567D2CD8223390EF87494EC722 -:10E58000D938D1C18CCAA2FE98D40B36A6F581CF5A -:10E59000A57ADE28DAB78E263FADBFA42C3A9DE4DB -:10E5A0005078920D6A5FCC9B547E4662F68D13C202 -:10E5B00090D8B8E82E39F75E82C3AFF59F5D80BE74 -:10E5C00069D0937C6FD52DA9CF2512B3C8AC993BE8 -:10E5D00010187DA7E89C636EDB3BBB7BCD267809DA -:10E5E0006E5918F4EC9AB701834F9AA8E6956E65B8 -:10E5F000AAFFE67E21BCCF08EF15E8E6BAE79BD973 -:10E600004A6F36CEEA9F09D429B07CD631A4B2AF86 -:10E610002A3F2331C6A5943035A266C0744EBC375C -:10E62000FC82CAA6E090D0B033A7D815F104984A6E -:10E6300041ECDAF77FCD500E1791F62F764DD68D3F -:10E6400043EFB04DCCAA4D54E49604DF9ED1B5E320 -:10E650004C6A881BC12C1FB84665517F9D5EEA0439 -:10E66000018C355DFA877473FB0B412EB3671D5A1D -:10E6700092DBD252E91056336DD647139AD7618C8C -:10E6800037A10C7A59F8148EEB133C89CEA927EEEA -:10E69000B761C935E11CE5ED7A47B13C9CD2DF5941 -:10E6A00055F2733F1814CE7973C737BF53F7CDEACD -:10E6B0005FFDAA5BDF3D6F147844DB86CAAFF38150 -:10E6C000B968C43E3824342CC2A3405F161DC372FF -:10E6D000BCE2250C283C498BFF0D954139A80171FE -:10E6E000080CB3DED8B4E49C6456C1907BCB846143 -:10E6F000D532B670486C5C74D0B85742C66363A517 -:10E70000F87C7C84EE777799F67B7B8DFFF2F20DB7 -:10E71000D66B6BBDDE6F6FB191C5C55460303050A4 -:10E7200002010103CE6767A9562B2B7DE7FEFE1978 -:10E73000B5D7D7624DABABE6EC76769A8FCACA45B1 -:10E740001F82829D89C9C940FA7D7D87EFFAFA153B -:10E75000B25959EB8E4747C9FBF0F00B41ADADEC18 -:10E76000B3D4D4675FA2A2FD45AFAFEA239C9CBFA0 -:10E7700053A4A4F7E47272969BC0C05B75B7B7C28E -:10E78000E1FDFD1C3D9393AE4C26266A6C36365A4D -:10E790007E3F3F41F5F7F70283CCCC4F6834345CC1 -:10E7A00051A5A5F4D1E5E534F9F1F108E2717193D1 -:10E7B000ABD8D873623131532A15153F0804040CC5 -:10E7C00095C7C752462323659DC3C35E30181828DA -:10E7D000379696A10A05050F2F9A9AB50E070709D5 -:10E7E000241212361B80809BDFE2E23DCDEBEB264C -:10E7F0004E2727697FB2B2CDEA75759F1209091BB2 -:10E800001D83839E582C2C74341A1A2E361B1B2DF4 -:10E81000DC6E6EB2B45A5AEE5BA0A0FBA45252F664 -:10E82000763B3B4DB7D6D6617DB3B3CE5229297B1B -:10E83000DDE3E33E5E2F2F7113848497A65353F5D7 -:10E84000B9D1D16800000000C1EDED2C402020605E -:10E85000E3FCFC1F79B1B1C8B65B5BEDD46A6ABE5C -:10E860008DCBCB4667BEBED97239394B944A4ADE4E -:10E87000984C4CD4B05858E885CFCF4ABBD0D06B19 -:10E88000C5EFEF2A4FAAAAE5EDFBFB16864343C569 -:10E890009A4D4DD766333355118585948A4545CFBA -:10E8A000E9F9F91004020206FE7F7F81A05050F0C2 -:10E8B000783C3C44259F9FBA4BA8A8E3A25151F352 -:10E8C0005DA3A3FE804040C0058F8F8A3F9292AD2A -:10E8D000219D9DBC70383848F1F5F50463BCBCDF60 -:10E8E00077B6B6C1AFDADA75422121632010103055 -:10E8F000E5FFFF1AFDF3F30EBFD2D26D81CDCD4CF3 -:10E90000180C0C1426131335C3ECEC2FBE5F5FE11B -:10E91000359797A2884444CC2E17173993C4C4570F -:10E9200055A7A7F2FC7E7E827A3D3D47C86464AC61 -:10E93000BA5D5DE73219192BE6737395C06060A06C -:10E94000198181989E4F4FD1A3DCDC7F442222663F -:10E95000542A2A7E3B9090AB0B8888838C4646CA0B -:10E96000C7EEEE296BB8B8D32814143CA7DEDE79C5 -:10E97000BC5E5EE2160B0B1DADDBDB76DBE0E03B45 -:10E9800064323256743A3A4E140A0A1E924949DBEE -:10E990000C06060A4824246CB85C5CE49FC2C25D85 -:10E9A000BDD3D36E43ACACEFC46262A6399191A8DB -:10E9B000319595A4D3E4E437F279798BD5E7E73242 -:10E9C0008BC8C8436E373759DA6D6DB7018D8D8CA2 -:10E9D000B1D5D5649C4E4ED249A9A9E0D86C6CB48F -:10E9E000AC5656FAF3F4F407CFEAEA25CA6565AFE8 -:10E9F000F47A7A8E47AEAEE9100808186FBABAD525 -:10EA0000F07878884A25256F5C2E2E72381C1C24DD -:10EA100057A6A6F173B4B4C797C6C651CBE8E8238E -:10EA2000A1DDDD7CE874749C3E1F1F21964B4BDDFD -:10EA300061BDBDDC0D8B8B860F8A8A85E07070907E -:10EA40007C3E3E4271B5B5C4CC6666AA904848D8B3 -:10EA500006030305F7F6F6011C0E0E12C26161A350 -:10EA60006A35355FAE5757F969B9B9D017868691BF -:10EA700099C1C1583A1D1D27279E9EB9D9E1E13899 -:10EA8000EBF8F8132B9898B322111133D26969BBB4 -:10EA9000A9D9D970078E8E89339494A72D9B9BB6E4 -:10EAA0003C1E1E2215878792C9E9E92087CECE49F0 -:10EAB000AA5555FF50282878A5DFDF7A038C8C8F64 -:10EAC00059A1A1F8098989801A0D0D1765BFBFDA10 -:10EAD000D7E6E631844242C6D06868B8824141C375 -:10EAE000299999B05A2D2D771E0F0F117BB0B0CBFD -:10EAF000A85454FC6DBBBBD62C16163A002020201F -:10EB000020202020202028282828282020202020DD -:10EB100020202020202020202020202020881010AD -:10EB20001010101010101010101010101004040409 -:10EB300004040404040404101010101010104141C7 -:10EB400041414141010101010101010101010101B5 -:10EB500001010101010101011010101010104242C9 -:10EB60004242424202020202020202020202020285 -:10EB70000202020202020202101010102000000025 -:10EB80000000000000000000000000000000000085 -:10EB90000000000000000000000000000000000075 -:10EBA0000000000000000000000000000000000065 -:10EBB0000000000000000000000000000000000055 -:10EBC0000000000000000000000000000000000045 -:10EBD0000000000000000000000000000000000035 -:10EBE0000000000000000000000000000000000025 -:10EBF0000000000000000000000000000000000015 -:10EC00002D2D0000504F5349584C595F434F5252DD -:10EC10004543540025733A206F7074696F6E20600D -:10EC200025732720697320616D626967756F75733D -:10EC30002028636F756C6420626520602D2D25731C -:10EC400027206F7220602D2D257327290A000000D0 -:10EC500025733A20696E76616C6964206F707469FF -:10EC60006F6E202D2D20602D2563270A00000000E7 -:10EC700025733A20617267756D656E7420726571D7 -:10EC8000756972656420666F72206F7074696F6E4B -:10EC9000206000002D2D2573270A00002D256327F5 -:10ECA0000A00000043000000000004A88002F4668F -:10ECB0008002F4888002F2B08002F2E88002F4520E -:10ECC0008002F4508002F3FE8002F4268002F3DC1E -:10ECD0008002F3DC8002F3CC8002F3DC8002F3EAF2 -:10ECE0008002F3EA8002F3DC3030303030303030F4 -:10ECF000303030303030303001020B040B0506016B -:10ED00000B01020B040B0506010B0B0B03040B0597 -:10ED10000B0B0B0B0B0B040B050B0B0B0B0B0B0B50 -:10ED20000B0B0B0B0B05080B040B0B070B0B0B0949 -:10ED30000B040B050B0B0B0B0A0B040B0B0B0B0B38 -:10ED40000B0B0B040B0B0B0B0B0B0B030B0B0B0B22 -:10ED50000B0B0B0B080B0B0B0B0B0B00000000003D -:10ED6000000000000001000304000000000001009A -:10ED7000030400000000000007030400000000007E -:10ED80000000030400000000000000000400000078 -:10ED90000000020003040000000000010005060559 -:10EDA0000000000001000506000000000000000354 -:10EDB0000400000000000008000000000000000047 -:10EDC000080000000000000000000000000000003B -:10EDD0003031323334353637383941424344454691 -:10EDE0000000000030313233343536373839616253 -:10EDF0006364656600000000202020202020202081 -:10EE000020202020202020200808080808080808C2 -:10EE10000808080808080808080808080808080872 -:10EE2000080808080808080807080807020808076B -:10EE30000808060708070508000101010101010192 -:10EE40000101080808080808080408040404040468 -:10EE50000808080803080804080808040804080843 -:10EE6000040808080808080808040804040404043E -:10EE70000304030803080404040308040304080843 -:10EE8000040803080808080808080808080808080B -:10EE900008080808080808080808080808080808F2 -:10EEA00008080808080808080808080808080808E2 -:10EEB00008080808080808080808080808080808D2 -:10EEC00008080808080808080808080808080808C2 -:10EED00008080808080808080808080808080808B2 -:10EEE00008080808080808080808080808080808A2 -:10EEF0000808080808080808080808080808080892 -:10EF00000808080808080808000A000100020003B1 -:10EF1000000400050006000700080009000A000BB5 -:10EF2000000C000D000E000F00100000000000009B -:10EF300000000000000000000000000000000000D1 -:10EF400000000000000000000000000000000000C1 -:10EF500000000000000000000000000000000000B1 -:10EF600000000000000000000000000000000000A1 -:10EF70000000000000000000000000000000000091 -:10EF800000000000000000000000000080037FB4CB -:10EF900080037E2080037E2080037E2080037E20ED -:10EFA00080037E2080037E2080037E2080037E20DD -:10EFB00080037E20FFFFFFFFFFFFFFFF49534F2D20 -:10EFC000383835392D310000800333228003334433 -:10EFD0008003316C800331A48003330E8003330C33 -:10EFE000800332BA800332E2800332988003329881 -:10EFF0008003328880033298800332A6800332A6D1 -:10F00000800332988003363480034AA480034AA4E4 -:10F010008003364480034AA480034AA480034AA4A0 -:10F0200080034AA480034AA480034AA4800336488C -:10F030008003371C80034AA48003371880033724D9 -:10F0400080034AA480033842800338468003384650 -:10F0500080033846800338468003384680033846AC -:10F0600080033846800338468003384680034AA42C -:10F0700080034AA480034AA480034AA480034AA4CC -:10F0800080034AA480034AA480034AA480034AA4BC -:10F0900080034AA48003394480033B9680034AA43A -:10F0A00080033B9680034AA480034AA480034AA4B9 -:10F0B00080034AA48003387880034AA480034AA4CA -:10F0C0008003416280034AA480034AA480034AA4C7 -:10F0D00080034AA480034AA48003452680034AA4EF -:10F0E00080034AA48003361A80034AA480034AA4FA -:10F0F00080034AA480034AA480034AA480034AA44C -:10F1000080034AA480034AA480034AA480034AA43B -:10F11000800338988003395A80033B9680033B96DE -:10F1200080033B968003387C8003395A80034AA4CD -:10F1300080034AA48003388080034AA480033FA24E -:10F1400080034178800343A48003389480034AA459 -:10F150008003445880034AA48003453C80034AA4AA -:10F1600080034AA48003476E01020B040B050601CD -:10F170000B01020B040B0506010B0B0B03040B0523 -:10F180000B0B0B0B0B0B040B050B0B0B0B0B0B0BDC -:10F190000B0B0B0B0B05080B040B0B070B0B0B09D5 -:10F1A0000B040B050B0B0B0B0A0B040B0B0B0B0BC4 -:10F1B0000B0B0B040B0B0B0B0B0B0B030B0B0B0BAE -:10F1C0000B0B0B0B080B0B0B0B0B0B0000000000C9 -:10F1D0000000000000010003040000000000010026 -:10F1E000030400000000000007030400000000000A -:10F1F0000000030400000000000000000400000004 -:10F2000000000200030400000000000100050605E4 -:10F2100000000000010005060000000000000003DF -:10F2200004000000000000080000000000000000D2 -:10F2300008000000000000000000000000000000C6 -:10F24000494E4600696E66004E414E006E616E008A -:10F2500020202020202020202020202020202020AE -:10F26000303030303030303030303030303030309E -:10F27000080808080808080808080808080808080E -:10F2800008080808080808080808080808080808FE -:10F2900007080807020808070808060708070508FE -:10F2A0000001010101010101010108080808080825 -:10F2B00008040804040404040808080803080804EF -:10F2C00008080804080408080408080808080808CA -:10F2D00008040804040404040304030803080404E1 -:10F2E00004030804030408080408030808080808BD -:10F2F000080808080808080808080808080808088E -:10F30000080808080808080808080808080808087D -:10F31000080808080808080808080808080808086D -:10F32000080808080808080808080808080808085D -:10F33000080808080808080808080808080808084D -:10F34000080808080808080808080808080808083D -:10F35000080808080808080808080808080808082D -:10F36000080808080808080808080808080808081D -:10F37000496E66696E697479000000004E614E0046 -:10F3800000000005000000190000007D3FF00000B3 -:10F390000000000040240000000000004059000070 -:10F3A00000000000408F40000000000040C38800C3 -:10F3B0000000000040F86A0000000000412E848038 -:10F3C00000000000416312D0000000004197D78484 -:10F3D0000000000041CDCD65000000004202A05FAA -:10F3E0002000000042374876E8000000426D1A9481 -:10F3F000A200000042A2309CE540000042D6BCC4FE -:10F400001E900000430C6BF5263400004341C37985 -:10F4100037E080004376345785D8A00043ABC16DF8 -:10F42000674EC80043E158E460913D004415AF1DAC -:10F4300078B58C40444B1AE4D6E2EF504480F0CFCC -:10F44000064DD59244B52D02C7E14AF644EA784309 -:10F4500079D99DB44341C37937E080004693B8B56C -:10F46000B5056E174D384F03E93FF9F55A827748D5 -:0CF47000F9301D3275154FDD7F73BF3C75 -:10F480000000000455736167653A2074746370204E -:10F490002D742F2D72205B2D6F7074696F6E735DEC -:10F4A00020686F73740A20202020202020202D6CDB -:10F4B0002020202020206C656E677468206F6620F5 -:10F4C00062756673207772697474656E20746F203C -:10F4D0006E6574776F726B202864656661756C74F5 -:10F4E0002031303234290A20202020202020202DD5 -:10F4F0006E2020202020206E756D626572206F6660 -:10F500002062756673207772697474656E20746FFB -:10F51000206E6574776F726B202864656661756C08 -:10F52000742031303234290A20202020202020204D -:10F530002D70202020202020706F7274206E756D39 -:10F5400062657220746F2073656E6420746F20286A -:10F5500064656661756C742032303030290A202071 -:10F560002020202020202D752020202020207564A0 -:10F57000700A20202020202020202D7620202020EE -:10F580002020766572626F73650A000080039954CB -:10F59000000000000000000000000000000000006B -:10F5A000000000000000000000000000000000005B -:10F5B000000000000000000000000000000000004B -:10F5C000000000000000000000000000000000003B -:10F5D000000000000000000000000000000000002B -:10F5E000000000000000000000000000000000001B -:10F5F000000000000000000000000000000000000B -:10F6000000000000000000000000000000000000FA -:10F6100000000000000000000000000000000000EA -:10F6200000000000000000000000000000000000DA -:10F6300000000000000000000000000000000000CA -:10F6400000000000000000000000000000000000BA -:10F6500000000000000000000000000000000000AA -:10F660000000000400000000ABCD00000000196E97 -:10F6700010000000FFFFFFFFFFFFFFFFFF7590007E -:10F68000000001FFFFFFFFFEFFFFFFFFFF751000FF -:10F69000000001FFFFFFFFFE00050000800149ECB4 -:10F6A000800149EC800149EC800149EC0000000038 -:10F6B000000002340000000C02040B0C1216182487 -:10F6C0003048606C000000000000000000000000F6 -:10F6D00000000010010000146D3E86B0FFFFFFFF28 -:10F6E000FFFF0000000003E800000001000000012F -:10F6F00000000320000000010000000000000008DE -:10F70000000000020000006400000000000000058E -:10F710000000000F000000050000000F000013882B -:10F7200000001388000007D00000138800003E800E -:10F73000000000020000000C02040B0C121618243A -:10F740003048606C00000000000000000000000075 -:10F7500000000000000000000D0102030405060780 -:10F7600008090A0B0C0D000000000011FF0000004A -:10F770000000000000000000000000000000000089 -:10F780000000000000000000000000000000FFFF7B -:10F79000FFFFFFFF00000001000000030000000168 -:10F7A0000000000100000000000000010000000156 -:10F7B0000000000100000001000000000000000146 -:10F7C0000000000A00000005000000000000000525 -:10F7D00000000000FFFFFFFF00000001000000002C -:10F7E00000000002FF000000000000000000000018 -:10F7F0000000000000000000000000000000000009 -:10F80000000000000000FFFFFFFFFFFF00000001FD -:10F810000000000300000000000007D000000064AA -:10F8200003010100060200000000000C82848B8CA2 -:10F83000129618243048606C0000000000000000A0 -:10F8400000000000000000000000000100000001B6 -:10F85000000000010014000000000014000007D0A8 -:10F860000000000000000001000000000000000691 -:10F8700000000001FFFFFFFF0A00000064756D6DCE -:10F88000795F7373696400000000000000000000ED -:10F890000000000000000000000000000000000068 -:10F8A000303030313032303330343035303630373C -:10F8B0003038303930613062306330643065306602 -:10F8C0003130313131323133313431353136313714 -:10F8D00031383139316131623163316431653166DA -:10F8E00000000000000000028003D670000000004D -:10F8F000800255EC80025614800256588002569CB5 -:10F90000800256AA800255F4800256B6800256D074 -:10F910008002614C8003EAFD0000003F000000010E -:10F920008003EF2C8003EF4C8003EF6C000000009D -:10F9300000000000000000000000000000000000C7 -:10F940008003ECA4000000000000000000000000A4 -:10F9500000000000000000000000000000000000A7 -:10F960000000000000000000000000000000000097 -:10F970000000000000000000000000000000000087 -:10F980000000000000000000000000000000000077 -:10F990000000000000000000000000000000000067 -:10F9A0000000000000000000000000000000000057 -:10F9B0000000000000000000000000000000000047 -:10F9C0000000000000000000000000000000000037 -:10F9D0000000000000000000000000000000000027 -:10F9E0000000000000000000000000000000000017 -:10F9F0000000000000000000000000000000000007 -:10FA000000000000000000000000000000000000F6 -:10FA1000000004A800000000000000000000059C99 -:10FA20000000059C000005A4000005A4000005AC32 -:10FA3000000005AC000005B4000005B4000005BCE2 -:10FA4000000005BC000005C4000005C4000005CC92 -:10FA5000000005CC000005D4000005D4000005DC42 -:10FA6000000005DC000005E4000005E4000005ECF2 -:10FA7000000005EC000005F4000005F4000005FCA2 -:10FA8000000005FC00000604000006040000060C4F -:10FA90000000060C00000614000006140000061CFE -:10FAA0000000061C00000624000006240000062CAE -:10FAB0000000062C00000634000006340000063C5E -:10FAC0000000063C00000644000006440000064C0E -:10FAD0000000064C00000654000006540000065CBE -:10FAE0000000065C00000664000006640000066C6E -:10FAF0000000066C00000674000006740000067C1E -:10FB00000000067C00000684000006840000068CCD -:10FB10000000068C00000694000006940000069C7D -:10FB20000000069C000006A4000006A4000006AC2D -:10FB3000000006AC000006B4000006B4000006BCDD -:10FB4000000006BC000006C4000006C4000006CC8D -:10FB5000000006CC000006D4000006D4000006DC3D -:10FB6000000006DC000006E4000006E4000006ECED -:10FB7000000006EC000006F4000006F4000006FC9D -:10FB8000000006FC00000704000007040000070C4A -:10FB90000000070C00000714000007140000071CF9 -:10FBA0000000071C00000724000007240000072CA9 -:10FBB0000000072C00000734000007340000073C59 -:10FBC0000000073C00000744000007440000074C09 -:10FBD0000000074C00000754000007540000075CB9 -:10FBE0000000075C00000764000007640000076C69 -:10FBF0000000076C00000774000007740000077C19 -:10FC00000000077C00000784000007840000078CC8 -:10FC10000000078C00000794000007940000079C78 -:10FC20000000079C000007A4000007A4000007AC28 -:10FC3000000007AC000007B4000007B4000007BCD8 -:10FC4000000007BC000007C4000007C4000007CC88 -:10FC5000000007CC000007D4000007D4000007DC38 -:10FC6000000007DC000007E4000007E4000007ECE8 -:10FC7000000007EC000007F4000007F4000007FC98 -:10FC8000000007FC00000804000008040000080C45 -:10FC90000000080C00000814000008140000081CF4 -:10FCA0000000081C00000824000008240000082CA4 -:10FCB0000000082C00000834000008340000083C54 -:10FCC0000000083C00000844000008440000084C04 -:10FCD0000000084C00000854000008540000085CB4 -:10FCE0000000085C00000864000008640000086C64 -:10FCF0000000086C00000874000008740000087C14 -:10FD00000000087C00000884000008840000088CC3 -:10FD10000000088C00000894000008940000089C73 -:10FD20000000089C000008A4000008A4000008AC23 -:10FD3000000008AC000008B4000008B4000008BCD3 -:10FD4000000008BC000008C4000008C4000008CC83 -:10FD5000000008CC000008D4000008D4000008DC33 -:10FD6000000008DC000008E4000008E4000008ECE3 -:10FD7000000008EC000008F4000008F4000008FC93 -:10FD8000000008FC00000904000009040000090C40 -:10FD90000000090C00000914000009140000091CEF -:10FDA0000000091C00000924000009240000092C9F -:10FDB0000000092C00000934000009340000093C4F -:10FDC0000000093C00000944000009440000094CFF -:10FDD0000000094C00000954000009540000095CAF -:10FDE0000000095C00000964000009640000096C5F -:10FDF0000000096C00000974000009740000097C0F -:10FE00000000097C00000984000009840000098CBE -:10FE10000000098C00000994000009940002000011 -:0CFE2000FFFFFFFF0000000100007AFC63 -:040000058000000077 -:00000001FF diff --git a/libraries/WiFi/extras/wifiHD/src/CONFIG/conf_access.h b/libraries/WiFi/extras/wifiHD/src/CONFIG/conf_access.h deleted file mode 100644 index 2d38d506920..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/CONFIG/conf_access.h +++ /dev/null @@ -1,170 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Memory access control configuration file. - * - * This file contains the possible external configuration of the memory access - * control. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _CONF_ACCESS_H_ -#define _CONF_ACCESS_H_ - -#include "compiler.h" -#include "board.h" - - -/*! \name Activation of Logical Unit Numbers - */ -//! @{ -#define LUN_0 DISABLE //!< On-Chip Virtual Memory. -#define LUN_1 ENABLE //!< AT45DBX Data Flash. -#define LUN_2 DISABLE //!< SD/MMC Card over SPI. -#define LUN_3 DISABLE -#define LUN_4 DISABLE -#define LUN_5 DISABLE -#define LUN_6 DISABLE -#define LUN_7 DISABLE -#define LUN_USB DISABLE //!< Host Mass-Storage Memory. -//! @} - -/*! \name LUN 0 Definitions - */ -//! @{ -#define VIRTUAL_MEM LUN_0 -#define LUN_ID_VIRTUAL_MEM LUN_ID_0 -#define LUN_0_INCLUDE "virtual_mem.h" -#define Lun_0_test_unit_ready virtual_test_unit_ready -#define Lun_0_read_capacity virtual_read_capacity -#define Lun_0_wr_protect virtual_wr_protect -#define Lun_0_removal virtual_removal -#define Lun_0_usb_read_10 virtual_usb_read_10 -#define Lun_0_usb_write_10 virtual_usb_write_10 -#define Lun_0_mem_2_ram virtual_mem_2_ram -#define Lun_0_ram_2_mem virtual_ram_2_mem -#define LUN_0_NAME "\"On-Chip Virtual Memory\"" -//! @} - -/*! \name LUN 1 Definitions - */ -//! @{ -#define AT45DBX_MEM LUN_1 -#define LUN_ID_AT45DBX_MEM LUN_ID_1 -#define LUN_1_INCLUDE "at45dbx_mem.h" -#define Lun_1_test_unit_ready at45dbx_test_unit_ready -#define Lun_1_read_capacity at45dbx_read_capacity -#define Lun_1_wr_protect at45dbx_wr_protect -#define Lun_1_removal at45dbx_removal -#define Lun_1_usb_read_10 at45dbx_usb_read_10 -#define Lun_1_usb_write_10 at45dbx_usb_write_10 -#define Lun_1_mem_2_ram at45dbx_df_2_ram -#define Lun_1_ram_2_mem at45dbx_ram_2_df -#define LUN_1_NAME "\"AT45DBX Data Flash\"" -//! @} - -/*! \name LUN 2 Definitions - */ -//! @{ -#define SD_MMC_SPI_MEM LUN_2 -#define LUN_ID_SD_MMC_SPI_MEM LUN_ID_2 -#define LUN_2_INCLUDE "sd_mmc_spi_mem.h" -#define Lun_2_test_unit_ready sd_mmc_spi_test_unit_ready -#define Lun_2_read_capacity sd_mmc_spi_read_capacity -#define Lun_2_wr_protect sd_mmc_spi_wr_protect -#define Lun_2_removal sd_mmc_spi_removal -#define Lun_2_usb_read_10 sd_mmc_spi_usb_read_10 -#define Lun_2_usb_write_10 sd_mmc_spi_usb_write_10 -#define Lun_2_mem_2_ram sd_mmc_spi_mem_2_ram -#define Lun_2_ram_2_mem sd_mmc_spi_ram_2_mem -#define LUN_2_NAME "\"SD/MMC Card over SPI\"" -//! @} - -/*! \name USB LUNs Definitions - */ -//! @{ -#define MEM_USB LUN_USB -#define LUN_ID_MEM_USB LUN_ID_USB -#define LUN_USB_INCLUDE "host_mem.h" -#define Lun_usb_test_unit_ready(lun) host_test_unit_ready(lun) -#define Lun_usb_read_capacity(lun, nb_sect) host_read_capacity(lun, nb_sect) -#define Lun_usb_read_sector_size(lun) host_read_sector_size(lun) -#define Lun_usb_wr_protect(lun) host_wr_protect(lun) -#define Lun_usb_removal() host_removal() -#define Lun_usb_mem_2_ram(addr, ram) host_read_10_ram(addr, ram) -#define Lun_usb_ram_2_mem(addr, ram) host_write_10_ram(addr, ram) -#define LUN_USB_NAME "\"Host Mass-Storage Memory\"" -//! @} - -/*! \name Actions Associated with Memory Accesses - * - * Write here the action to associate with each memory access. - * - * \warning Be careful not to waste time in order not to disturb the functions. - */ -//! @{ -#define memory_start_read_action(nb_sectors) -#define memory_stop_read_action() -#define memory_start_write_action(nb_sectors) -#define memory_stop_write_action() -//! @} - -/*! \name Activation of Interface Features - */ -//! @{ -#define ACCESS_USB DISABLED //!< MEM <-> USB interface. -#define ACCESS_MEM_TO_RAM ENABLED //!< MEM <-> RAM interface. -#define ACCESS_STREAM ENABLED //!< Streaming MEM <-> MEM interface. //mlf -#define ACCESS_STREAM_RECORD DISABLED //!< Streaming MEM <-> MEM interface in record mode. -#define ACCESS_MEM_TO_MEM DISABLED //!< MEM <-> MEM interface. -#define ACCESS_CODEC DISABLED //!< Codec interface. -//! @} - -/*! \name Specific Options for Access Control - */ -//! @{ -#define GLOBAL_WR_PROTECT DISABLED //!< Management of a global write protection. -//! @} - - -#endif // _CONF_ACCESS_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/CONFIG/conf_at45dbx.h b/libraries/WiFi/extras/wifiHD/src/CONFIG/conf_at45dbx.h deleted file mode 100644 index 3280e4fc1ce..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/CONFIG/conf_at45dbx.h +++ /dev/null @@ -1,83 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT45DBX configuration file. - * - * This file contains the possible external configuration of the AT45DBX. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _CONF_AT45DBX_H_ -#define _CONF_AT45DBX_H_ - - -#include "conf_access.h" - -#if AT45DBX_MEM == DISABLE - #error conf_at45dbx.h is #included although AT45DBX_MEM is disabled -#endif - - -#include "at45dbx.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -//! Size of AT45DBX data flash memories to manage. -#define AT45DBX_MEM_SIZE AT45DBX_1MB - -//! Number of AT45DBX components to manage. -#define AT45DBX_MEM_CNT 1 - -//! First chip select used by AT45DBX components on the SPI module instance. -//! AT45DBX_SPI_NPCS0_PIN always corresponds to this first NPCS, whatever it is. -#define AT45DBX_SPI_FIRST_NPCS AT45DBX_SPI_NPCS - -//! SPI master speed in Hz. -#define AT45DBX_SPI_MASTER_SPEED 12000000 - -//! Number of bits in each SPI transfer. -#define AT45DBX_SPI_BITS 8 - - -#endif // _CONF_AT45DBX_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/CONFIG/conf_ebi.h b/libraries/WiFi/extras/wifiHD/src/CONFIG/conf_ebi.h deleted file mode 100644 index aacdb13147e..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/CONFIG/conf_ebi.h +++ /dev/null @@ -1,108 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief CONF_EBI EBI/SMC driver for AVR32 UC3. - * - * \note The values defined in this file are device-specific. See the device - * datasheet for further information. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SMC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _CONF_EBI_H_ -#define _CONF_EBI_H_ - -#include "compiler.h" -#include "board.h" - -#if (ET024006DHU_SMC_USE_NCS == 0) -#define SMC_USE_NCS0 -#define SMC_COMPONENT_CS0 ET024006DHU_SMC_COMPONENT_CS -#else - -#if (ET024006DHU_SMC_USE_NCS == 2) -#define SMC_USE_NCS2 -#define SMC_COMPONENT_CS2 ET024006DHU_SMC_COMPONENT_CS - -#else -#error This board is not supported -#endif -#endif - -#define EBI_DATA_0 ET024006DHU_EBI_DATA_0 -#define EBI_DATA_1 ET024006DHU_EBI_DATA_1 -#define EBI_DATA_2 ET024006DHU_EBI_DATA_2 -#define EBI_DATA_3 ET024006DHU_EBI_DATA_3 -#define EBI_DATA_4 ET024006DHU_EBI_DATA_4 -#define EBI_DATA_5 ET024006DHU_EBI_DATA_5 -#define EBI_DATA_6 ET024006DHU_EBI_DATA_6 -#define EBI_DATA_7 ET024006DHU_EBI_DATA_7 -#define EBI_DATA_8 ET024006DHU_EBI_DATA_8 -#define EBI_DATA_9 ET024006DHU_EBI_DATA_9 -#define EBI_DATA_10 ET024006DHU_EBI_DATA_10 -#define EBI_DATA_11 ET024006DHU_EBI_DATA_11 -#define EBI_DATA_12 ET024006DHU_EBI_DATA_12 -#define EBI_DATA_13 ET024006DHU_EBI_DATA_13 -#define EBI_DATA_14 ET024006DHU_EBI_DATA_14 -#define EBI_DATA_15 ET024006DHU_EBI_DATA_15 - -#if BOARD==EVK1105 -#ifdef EVK1105_REV3 -#define EBI_ADDR_19 AVR32_EBI_ADDR_19 -#define EBI_NCS_2 ET024006DHU_EBI_NCS -#else -#define EBI_ADDR_21 ET024006DHU_EBI_ADDR_21 -#define EBI_NCS_0 ET024006DHU_EBI_NCS -#endif -#elif BOARD == UC3C_EK -#define EBI_ADDR_22 AVR32_EBI_ADDR_22 -#define EBI_NCS_0 ET024006DHU_EBI_NCS -#elif BOARD == EVK1104 -#define EBI_ADDR_21 ET024006DHU_EBI_ADDR_21 -#define EBI_NCS_0 ET024006DHU_EBI_NCS -#endif - - -#define EBI_NWE0 ET024006DHU_EBI_NWE -#define EBI_NRD ET024006DHU_EBI_NRD - -#endif // _CONF_EBI_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/CONFIG/conf_sd_mmc_spi.h b/libraries/WiFi/extras/wifiHD/src/CONFIG/conf_sd_mmc_spi.h deleted file mode 100644 index 94b55e10cf7..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/CONFIG/conf_sd_mmc_spi.h +++ /dev/null @@ -1,73 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SD/MMC configuration file. - * - * This file contains the possible external configuration of the SD/MMC. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _CONF_SD_MMC_SPI_H_ -#define _CONF_SD_MMC_SPI_H_ - - -#include "conf_access.h" - -#if SD_MMC_SPI_MEM == DISABLE - #error conf_sd_mmc_spi.h is #included although SD_MMC_SPI_MEM is disabled -#endif - - -#include "sd_mmc_spi.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -//! SPI master speed in Hz. -#define SD_MMC_SPI_MASTER_SPEED 12000000 - -//! Number of bits in each SPI transfer. -#define SD_MMC_SPI_BITS 8 - - -#endif // _CONF_SD_MMC_SPI_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x deleted file mode 100644 index c12712150e3..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x +++ /dev/null @@ -1,74 +0,0 @@ -/* This file is part of the ATMEL AVR32-SoftwareFramework-AT32UC3A-1.4.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AVR32 UC3 ISP trampoline. - * - * In order to be able to program a project with both BatchISP and JTAGICE mkII - * without having to take the general-purpose fuses into consideration, add this - * file to the project and change the program entry point to _trampoline. - * - * The pre-programmed ISP will be erased if JTAGICE mkII is used. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32UC devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (C) 2006-2008, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#include "conf_isp.h" - - -//! @{ -//! \verbatim - - - // This must be linked @ 0x80000000 if it is to be run upon reset. - .section .reset, "ax", @progbits - - - .global _trampoline - .type _trampoline, @function -_trampoline: - // Jump to program start. - rjmp program_start - - .org PROGRAM_START_OFFSET -program_start: - // Jump to the C runtime startup routine. - lda.w pc, _stext - - -//! \endverbatim -//! @} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h deleted file mode 100644 index e687723c3f3..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h +++ /dev/null @@ -1,237 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1100 board header file. - * - * This file contains definitions and services related to the features of the - * EVK1100 board rev. B and C. - * - * To use this board, define BOARD=EVK1100. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _ARDUINO_H_ -#define _ARDUINO_H_ - -#include "compiler.h" - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. -# include "led.h" -#endif // __AVR32_ABI_COMPILER__ - - -/*! \name Oscillator Definitions - */ -//! @{ - -// RCOsc has no custom calibration by default. Set the following definition to -// the appropriate value if a custom RCOsc calibration has been applied to your -// part. -//#define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< RCOsc frequency: Hz. - -#define FOSC32 32768 //!< Osc32 frequency: Hz. -#define OSC32_STARTUP AVR32_PM_OSCCTRL32_STARTUP_8192_RCOSC //!< Osc32 startup time: RCOsc periods. - -#define FOSC0 12000000 //!< Osc0 frequency: Hz. -#define OSC0_STARTUP AVR32_PM_OSCCTRL0_STARTUP_2048_RCOSC //!< Osc0 startup time: RCOsc periods. - -// Osc1 crystal is not mounted by default. Set the following definitions to the -// appropriate values if a custom Osc1 crystal is mounted on your board. -//#define FOSC1 12000000 //!< Osc1 frequency: Hz. -//#define OSC1_STARTUP AVR32_PM_OSCCTRL1_STARTUP_2048_RCOSC //!< Osc1 startup time: RCOsc periods. - -//! @} - - -//! Number of LEDs. -#define LED_COUNT 0 - -/*! \name GPIO Connections of LEDs - */ -//! @{ -#define LED0_GPIO AVR32_PIN_PB19 -#define LED1_GPIO AVR32_PIN_PB20 -#define LED2_GPIO AVR32_PIN_PB21 -#define DEB_PIN_GPIO AVR32_PIN_PA20 -#define DEB2_PIN_GPIO AVR32_PIN_PB00 -//! @} - -/*! \name PWM Channels of LEDs - */ -//! @{ -#define LED0_PWM 0 -#define LED1_PWM 1 -#define LED2_PWM 2 -//! @} - -/*! \name PWM Functions of LEDs - */ -//! @{ -#define LED0_PWM_FUNCTION AVR32_PWM_0_FUNCTION -#define LED1_PWM_FUNCTION AVR32_PWM_1_FUNCTION -#define LED2_PWM_FUNCTION AVR32_PWM_2_FUNCTION -//! @} - -/*! \name Color Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED_MONO0_GREEN LED0 -#define LED_MONO1_RED LED1 -#define LED_MONO2_BLU LED2 -//! @} - -#if 0 -/*! \name SPI Connections of the DIP204 LCD - */ -//! @{ -#define DIP204_SPI (&AVR32_SPI1) -#define DIP204_SPI_NPCS 2 -#define DIP204_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN -#define DIP204_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION -#define DIP204_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN -#define DIP204_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION -#define DIP204_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN -#define DIP204_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION -#define DIP204_SPI_NPCS_PIN AVR32_SPI1_NPCS_2_0_PIN -#define DIP204_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_2_0_FUNCTION -//! @} - -/*! \name GPIO and PWM Connections of the DIP204 LCD Backlight - */ -//! @{ -#define DIP204_BACKLIGHT_PIN AVR32_PIN_PB18 -#define DIP204_PWM_CHANNEL 6 -#define DIP204_PWM_PIN AVR32_PWM_6_PIN -#define DIP204_PWM_FUNCTION AVR32_PWM_6_FUNCTION -//! @} -#endif - -/*! \name SPI Connections of the AT45DBX Data Flash Memory - */ -//! @{ -#define AT45DBX_SPI (&AVR32_SPI1) -#define AT45DBX_SPI_NPCS 2 -#define AT45DBX_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN -#define AT45DBX_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION -#define AT45DBX_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN -#define AT45DBX_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION -#define AT45DBX_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN -#define AT45DBX_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION -#define AT45DBX_SPI_NPCS2_PIN AVR32_SPI1_NPCS_2_0_PIN -#define AT45DBX_SPI_NPCS2_FUNCTION AVR32_SPI1_NPCS_2_0_FUNCTION -#define AT45DBX_CHIP_RESET AVR32_PIN_PA02 -//! @} - - -/*! \name GPIO and SPI Connections of the SD/MMC Connector - */ -//! @{ -//#define SD_MMC_CARD_DETECT_PIN AVR32_PIN_PA02 -//#define SD_MMC_WRITE_PROTECT_PIN AVR32_PIN_PA07 -#define SD_MMC_SPI (&AVR32_SPI1) -#define SD_MMC_SPI_NPCS 1 -#define SD_MMC_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN -#define SD_MMC_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION -#define SD_MMC_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN -#define SD_MMC_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION -#define SD_MMC_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN -#define SD_MMC_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION -#define SD_MMC_SPI_NPCS_PIN AVR32_SPI1_NPCS_1_0_PIN -#define SD_MMC_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_1_0_FUNCTION -//! @} - -/* Timer Counter to generate clock for WiFi chip*/ -# define WIFI_TC (&AVR32_TC) -# define WIFI_TC_CHANNEL_ID 0 -# define WIFI_TC_CHANNEL_PIN AVR32_TC_A0_0_0_PIN -# define WIFI_TC_CHANNEL_FUNCTION AVR32_TC_A0_0_0_FUNCTION -// Note that TC_A0_0_0 pin is pin 6 (PB23) on AT32UC3A1512 QFP100. - -/* Pin related to WiFi chip communication */ -#ifndef USE_POLL - #define USE_POLL -#endif - #define SPI_CS 0 - #define AVR32_SPI AVR32_SPI1 - #define GPIO_IRQ_PIN AVR32_PIN_PA03 - #define GPIO_IRQ AVR32_GPIO_IRQ_7 - #define GPIO_W_RESET_PIN AVR32_PIN_PA07 - #define GPIO_W_SHUTDOWN_PIN AVR32_PIN_PA09 - -/* Pin related to shield communication */ - #define ARDUINO_HANDSHAKE_PIN AVR32_PIN_PA25 - #define ARDUINO_EXTINT_PIN AVR32_PIN_PA04 //not used - - #define AVR32_PDCA_PID_TX AVR32_PDCA_PID_SPI1_TX - #define AVR32_PDCA_PID_RX AVR32_PDCA_PID_SPI1_RX - - -#if 0 -/*! \name TWI Connections of the Spare TWI Connector - */ -//! @{ -#define SPARE_TWI (&AVR32_TWI) -#define SPARE_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define SPARE_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define SPARE_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define SPARE_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION -//! @} - - -/*! \name SPI Connections of the Spare SPI Connector - */ -//! @{ -#define SPARE_SPI (&AVR32_SPI0) -#define SPARE_SPI_NPCS 0 -#define SPARE_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define SPARE_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define SPARE_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define SPARE_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define SPARE_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define SPARE_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define SPARE_SPI_NPCS_PIN AVR32_SPI0_NPCS_0_0_PIN -#define SPARE_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_0_0_FUNCTION -//! @} -#endif - -#endif // _ARDUINO_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c deleted file mode 100644 index d7cd439dbb6..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c +++ /dev/null @@ -1,346 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1100 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1100 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include -#include "preprocessor.h" -#include "compiler.h" -#include "arduino.h" -#include "led.h" - - -//! Structure describing LED hardware connections. -typedef const struct -{ - struct - { - U32 PORT; //!< LED GPIO port. - U32 PIN_MASK; //!< Bit-mask of LED pin in GPIO port. - } GPIO; //!< LED GPIO descriptor. - struct - { - S32 CHANNEL; //!< LED PWM channel (< 0 if N/A). - S32 FUNCTION; //!< LED pin PWM function (< 0 if N/A). - } PWM; //!< LED PWM descriptor. -} tLED_DESCRIPTOR; - - -//! Hardware descriptors of all LEDs. -static tLED_DESCRIPTOR LED_DESCRIPTOR[LED_COUNT] = -{ -#define INSERT_LED_DESCRIPTOR(LED_NO, unused) \ - { \ - {LED##LED_NO##_GPIO / 32, 1 << (LED##LED_NO##_GPIO % 32)},\ - {LED##LED_NO##_PWM, LED##LED_NO##_PWM_FUNCTION } \ - }, - MREPEAT(LED_COUNT, INSERT_LED_DESCRIPTOR, ~) -#undef INSERT_LED_DESCRIPTOR -}; - - -//! Saved state of all LEDs. -static volatile U32 LED_State = (1 << LED_COUNT) - 1; - - -U32 LED_Read_Display(void) -{ - return LED_State; -} - - -void LED_Display(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor; - volatile avr32_gpio_port_t *led_gpio_port; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - LED_State = leds; - - // For all LEDs... - for (led_descriptor = &LED_DESCRIPTOR[0]; - led_descriptor < LED_DESCRIPTOR + LED_COUNT; - led_descriptor++) - { - // Set the LED to the requested state. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - } -} - - -U32 LED_Read_Display_Mask(U32 mask) -{ - return Rd_bits(LED_State, mask); -} - - -void LED_Display_Mask(U32 mask, U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - mask &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Wr_bits(LED_State, mask, leds); - - // While there are specified LEDs left to manage... - while (mask) - { - // Select the next specified LED and set it to the requested state. - led_shift = 1 + ctz(mask); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - leds >>= led_shift - 1; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - mask >>= led_shift; - } -} - - -Bool LED_Test(U32 leds) -{ - return Tst_bits(LED_State, leds); -} - - -void LED_Off(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Clr_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it off. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_On(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Set_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it on. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_Toggle(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Tgl_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and toggle it. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrt = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -U32 LED_Read_Display_Field(U32 field) -{ - return Rd_bitfield(LED_State, field); -} - - -void LED_Display_Field(U32 field, U32 leds) -{ - // Move the bit-field to the appropriate position for the bit-mask. - LED_Display_Mask(field, leds << ctz(field)); -} - - -U8 LED_Get_Intensity(U32 led) -{ - tLED_DESCRIPTOR *led_descriptor; - - // Check that the argument value is valid. - led = ctz(led); - led_descriptor = &LED_DESCRIPTOR[led]; - if (led >= LED_COUNT || led_descriptor->PWM.CHANNEL < 0) return 0; - - // Return the duty cycle value if the LED PWM channel is enabled, else 0. - return (AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)) ? - AVR32_PWM.channel[led_descriptor->PWM.CHANNEL].cdty : 0; -} - - -void LED_Set_Intensity(U32 leds, U8 intensity) -{ - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_pwm_channel_t *led_pwm_channel; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // For each specified LED... - for (leds &= (1 << LED_COUNT) - 1; leds; leds >>= led_shift) - { - // Select the next specified LED and check that it has a PWM channel. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - if (led_descriptor->PWM.CHANNEL < 0) continue; - - // Initialize or update the LED PWM channel. - led_pwm_channel = &AVR32_PWM.channel[led_descriptor->PWM.CHANNEL]; - if (!(AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL))) - { - led_pwm_channel->cmr = (AVR32_PWM_CPRE_MCK << AVR32_PWM_CPRE_OFFSET) & - ~(AVR32_PWM_CALG_MASK | - AVR32_PWM_CPOL_MASK | - AVR32_PWM_CPD_MASK); - led_pwm_channel->cprd = 0x000000FF; - led_pwm_channel->cdty = intensity; - AVR32_PWM.ena = 1 << led_descriptor->PWM.CHANNEL; - } - else - { - AVR32_PWM.isr; - while (!(AVR32_PWM.isr & (1 << led_descriptor->PWM.CHANNEL))); - led_pwm_channel->cupd = intensity; - } - - // Switch the LED pin to its PWM function. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (led_descriptor->PWM.FUNCTION & 0x1) - { - led_gpio_port->pmr0s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr0c = led_descriptor->GPIO.PIN_MASK; - } - if (led_descriptor->PWM.FUNCTION & 0x2) - { - led_gpio_port->pmr1s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr1c = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->gperc = led_descriptor->GPIO.PIN_MASK; - } -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h deleted file mode 100644 index a577124ff6f..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h +++ /dev/null @@ -1,191 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1100 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1100 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _LED_H_ -#define _LED_H_ - -#include "compiler.h" - - -/*! \name Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED0 0x01 -#define LED1 0x02 -#define LED2 0x04 -#define LED3 0x08 -#define LED4 0x10 -#define LED5 0x20 -#define LED6 0x40 -#define LED7 0x80 -//! @} - - -/*! \brief Gets the last state of all LEDs set through the LED API. - * - * \return State of all LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display(void); - -/*! \brief Sets the state of all LEDs. - * - * \param leds New state of all LEDs (1 bit per LED). - * - * \note The pins of all LEDs are set to GPIO output mode. - */ -extern void LED_Display(U32 leds); - -/*! \brief Gets the last state of the specified LEDs set through the LED API. - * - * \param mask LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Mask(U32 mask); - -/*! \brief Sets the state of the specified LEDs. - * - * \param mask LEDs of which to set the state (1 bit per LED). - * - * \param leds New state of the specified LEDs (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Mask(U32 mask, U32 leds); - -/*! \brief Tests the last state of the specified LEDs set through the LED API. - * - * \param leds LEDs of which to test the state (1 bit per LED). - * - * \return \c TRUE if at least one of the specified LEDs has a state on, else - * \c FALSE. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern Bool LED_Test(U32 leds); - -/*! \brief Turns off the specified LEDs. - * - * \param leds LEDs to turn off (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Off(U32 leds); - -/*! \brief Turns on the specified LEDs. - * - * \param leds LEDs to turn on (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_On(U32 leds); - -/*! \brief Toggles the specified LEDs. - * - * \param leds LEDs to toggle (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Toggle(U32 leds); - -/*! \brief Gets as a bit-field the last state of the specified LEDs set through - * the LED API. - * - * \param field LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED, beginning with the first - * specified LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Field(U32 field); - -/*! \brief Sets as a bit-field the state of the specified LEDs. - * - * \param field LEDs of which to set the state (1 bit per LED). - * \param leds New state of the specified LEDs (1 bit per LED, beginning with - * the first specified LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Field(U32 field, U32 leds); - -/*! \brief Gets the intensity of the specified LED. - * - * \param led LED of which to get the intensity (1 bit per LED; only the least - * significant set bit is used). - * - * \return Intensity of the specified LED (0x00 to 0xFF). - * - * \warning The PWM channel of the specified LED is supposed to be used only by - * this module. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U8 LED_Get_Intensity(U32 led); - -/*! \brief Sets the intensity of the specified LEDs. - * - * \param leds LEDs of which to set the intensity (1 bit per LED). - * \param intensity New intensity of the specified LEDs (0x00 to 0xFF). - * - * \warning The PWM channels of the specified LEDs are supposed to be used only - * by this module. - * - * \note The pins of the specified LEDs are set to PWM output mode. - */ -extern void LED_Set_Intensity(U32 leds, U8 intensity); - - -#endif // _LED_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h deleted file mode 100644 index edda44cb3cc..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h +++ /dev/null @@ -1,433 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1105 board header file. - * - * This file contains definitions and services related to the features of the - * EVK1105 board rev. B. - * - * To use this board, define BOARD=EVK1105. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _EVK1105_H_ -#define _EVK1105_H_ - -#ifdef EVK1105_REV3 -# include "evk1105_rev3.h" -#else - -#include "compiler.h" - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. -# include "led.h" -#endif // __AVR32_ABI_COMPILER__ - - -/*! \name Oscillator Definitions - */ -//! @{ - -// RCOsc has no custom calibration by default. Set the following definition to -// the appropriate value if a custom RCOsc calibration has been applied to your -// part. -//#define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< RCOsc frequency: Hz. - -#define FOSC32 32768 //!< Osc32 frequency: Hz. -#define OSC32_STARTUP AVR32_PM_OSCCTRL32_STARTUP_8192_RCOSC //!< Osc32 startup time: RCOsc periods. - -#define FOSC0 12000000 //!< Osc0 frequency: Hz. -#define OSC0_STARTUP AVR32_PM_OSCCTRL0_STARTUP_2048_RCOSC //!< Osc0 startup time: RCOsc periods. - -#define FOSC1 11289600 //!< Osc1 frequency: Hz -#define OSC1_STARTUP AVR32_PM_OSCCTRL1_STARTUP_2048_RCOSC //!< Osc1 startup time: RCOsc periods. - - -//! @} - - -/*! \name SDRAM Definitions - */ -//! @{ - -//! Part header file of used SDRAM(s). -#define SDRAM_PART_HDR "MT48LC16M16A2TG7E/mt48lc16m16a2tg7e.h" - -//! Data bus width to use the SDRAM(s) with (16 or 32 bits; always 16 bits on -//! UC3). -#define SDRAM_DBW 16 -//! @} - - -/*! \name USB Definitions - */ -//! @{ -//! Multiplexed pin used for USB_ID: AVR32_USBB_USB_ID_x_x. -//! To be selected according to the AVR32_USBB_USB_ID_x_x_PIN and -//! AVR32_USBB_USB_ID_x_x_FUNCTION definitions from . -#define AVR32_USBB_USB_ID_0_2_PIN 21 -#define AVR32_USBB_USB_ID_0_2_FUNCTION 2 -#define USB_ID AVR32_USBB_USB_ID_0_2 - -//! Multiplexed pin used for USB_VBOF: AVR32_USBB_USB_VBOF_x_x. -//! To be selected according to the AVR32_USBB_USB_VBOF_x_x_PIN and -//! AVR32_USBB_USB_VBOF_x_x_FUNCTION definitions from . -# define USB_VBOF AVR32_USBB_USB_VBOF_0_1 - - -//! Active level of the USB_VBOF output pin. -# define USB_VBOF_ACTIVE_LEVEL LOW - -//! USB overcurrent detection pin. -# define USB_OVERCURRENT_DETECT_PIN AVR32_PIN_PX15 - -//! @} - - -//! GPIO connection of the MAC PHY PWR_DOWN/INT signal. -# define MACB_INTERRUPT_PIN AVR32_PIN_PA26 - - - -//! Number of LEDs. -#define LED_COUNT 4 - -/*! \name GPIO Connections of LEDs - */ -//! @{ -# define LED0_GPIO AVR32_PIN_PB27 -# define LED1_GPIO AVR32_PIN_PB28 -# define LED2_GPIO AVR32_PIN_PA05 -# define LED3_GPIO AVR32_PIN_PA06 -//! @} - -/*! \name Color Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED_MONO0_GREEN LED0 -#define LED_MONO1_GREEN LED1 -#define LED_MONO2_GREEN LED2 -#define LED_MONO3_GREEN LED3 -//! @} - -/*! \name PWM Channels of LEDs - */ -//! @{ -#define LED0_PWM 4 -#define LED1_PWM 5 -#define LED2_PWM (-1) -#define LED3_PWM (-1) -//! @} - -/*! \name PWM Functions of LEDs - */ -//! @{ -/* TODO: Implement PWM functionality */ -#define LED0_PWM_FUNCTION (-1)//AVR32_PWM_0_FUNCTION -#define LED1_PWM_FUNCTION (-1)//AVR32_PWM_1_FUNCTION -#define LED2_PWM_FUNCTION (-1) -#define LED3_PWM_FUNCTION (-1) -//! @} - -//! External interrupt connection of touch sensor. -#define QT1081_EIC_EXTINT_PIN AVR32_EIC_EXTINT_1_PIN -#define QT1081_EIC_EXTINT_FUNCTION AVR32_EIC_EXTINT_1_FUNCTION -#define QT1081_EIC_EXTINT_IRQ AVR32_EIC_IRQ_1 -#define QT1081_EIC_EXTINT_INT AVR32_EIC_INT1 -/*! \name Touch sensor low power mode select - */ -#define QT1081_LP_MODE AVR32_PIN_PB29 - -/*! \name GPIO Connections of touch buttons - */ -//! @{ -#define QT1081_TOUCH_SENSOR_0 AVR32_PIN_PB22 -#define QT1081_TOUCH_SENSOR_0_PRESSED 1 -#define QT1081_TOUCH_SENSOR_1 AVR32_PIN_PB23 -#define QT1081_TOUCH_SENSOR_1_PRESSED 1 -#define QT1081_TOUCH_SENSOR_2 AVR32_PIN_PB24 -#define QT1081_TOUCH_SENSOR_2_PRESSED 1 -#define QT1081_TOUCH_SENSOR_3 AVR32_PIN_PB25 -#define QT1081_TOUCH_SENSOR_3_PRESSED 1 -#define QT1081_TOUCH_SENSOR_4 AVR32_PIN_PB26 -#define QT1081_TOUCH_SENSOR_4_PRESSED 1 - -#define QT1081_TOUCH_SENSOR_ENTER QT1081_TOUCH_SENSOR_4 -#define QT1081_TOUCH_SENSOR_ENTER_PRESSED QT1081_TOUCH_SENSOR_4_PRESSED -#define QT1081_TOUCH_SENSOR_LEFT QT1081_TOUCH_SENSOR_3 -#define QT1081_TOUCH_SENSOR_LEFT_PRESSED QT1081_TOUCH_SENSOR_3_PRESSED -#define QT1081_TOUCH_SENSOR_RIGHT QT1081_TOUCH_SENSOR_2 -#define QT1081_TOUCH_SENSOR_RIGHT_PRESSED QT1081_TOUCH_SENSOR_2_PRESSED -#define QT1081_TOUCH_SENSOR_UP QT1081_TOUCH_SENSOR_0 -#define QT1081_TOUCH_SENSOR_UP_PRESSED QT1081_TOUCH_SENSOR_0_PRESSED -#define QT1081_TOUCH_SENSOR_DOWN QT1081_TOUCH_SENSOR_1 -#define QT1081_TOUCH_SENSOR_DOWN_PRESSED QT1081_TOUCH_SENSOR_1_PRESSED -//! @} - -/*! \name SPI Connections of the AT45DBX Data Flash Memory - */ -//! @{ -#define AT45DBX_SPI (&AVR32_SPI0) -#define AT45DBX_SPI_NPCS 0 -#define AT45DBX_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define AT45DBX_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define AT45DBX_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define AT45DBX_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define AT45DBX_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define AT45DBX_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define AT45DBX_SPI_NPCS0_PIN AVR32_SPI0_NPCS_0_0_PIN -#define AT45DBX_SPI_NPCS0_FUNCTION AVR32_SPI0_NPCS_0_0_FUNCTION -//! @} - -/*! \name GPIO and SPI Connections of the SD/MMC Connector - */ -//! @{ -#define SD_MMC_CARD_DETECT_PIN AVR32_PIN_PA02 -#define SD_MMC_WRITE_PROTECT_PIN AVR32_PIN_PA18 -#define SD_MMC_SPI (&AVR32_SPI0) -#define SD_MMC_SPI_NPCS 1 -#define SD_MMC_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define SD_MMC_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define SD_MMC_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define SD_MMC_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define SD_MMC_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define SD_MMC_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define SD_MMC_SPI_NPCS_PIN AVR32_SPI0_NPCS_1_0_PIN -#define SD_MMC_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_1_0_FUNCTION -//! @} - - -/*! \name TWI expansion - */ -//! @{ -#define EXPANSION_TWI (&AVR32_TWI) -#define EXPANSION_RESET AVR32_PIN_PX16 -#define EXPANSION_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define EXPANSION_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define EXPANSION_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define EXPANSION_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION -//! @} - -/*! \name Wireless expansion - */ - -#define WEXPANSION_EXTINT_PIN AVR32_EIC_EXTINT_8_PIN -#define WEXPANSION_EXTINT_FUNCTION AVR32_EIC_EXTINT_8_FUNCTION -#define WEXPANSION_GPIO1 AVR32_PIN_PB30 -#define WEXPANSION_GPIO2 AVR32_PIN_PB31 - -#define WEXPANSION_SPI (&AVR32_SPI0) -#define WEXPANSION_SPI_NPCS 2 -#define WEXPANSION_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define WEXPANSION_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define WEXPANSION_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define WEXPANSION_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define WEXPANSION_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define WEXPANSION_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define WEXPANSION_SPI_NPCS_PIN AVR32_SPI0_NPCS_2_0_PIN -#define WEXPANSION_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_2_0_FUNCTION - -//! @} - -/*! \name ET024006DHU TFT display - */ -//! @{ - -#define ET024006DHU_TE_PIN AVR32_PIN_PX19 -#define ET024006DHU_RESET_PIN AVR32_PIN_PX22 -#define ET024006DHU_BL_PIN AVR32_PWM_6_PIN -#define ET024006DHU_BL_FUNCTION AVR32_PWM_6_FUNCTION -#define ET024006DHU_DNC_PIN AVR32_EBI_ADDR_21_1_PIN -#define ET024006DHU_DNC_FUNCTION AVR32_EBI_ADDR_21_1_FUNCTION -#define ET024006DHU_EBI_NCS_PIN AVR32_EBI_NCS_0_1_PIN -#define ET024006DHU_EBI_NCS_FUNCTION AVR32_EBI_NCS_0_1_FUNCTION - -//! @} -/*! \name Optional SPI connection to the TFT - */ -//! @{ - -#define ET024006DHU_SPI (&AVR32_SPI0) -#define ET024006DHU_SPI_NPCS 3 -#define ET024006DHU_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define ET024006DHU_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define ET024006DHU_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define ET024006DHU_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define ET024006DHU_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define ET024006DHU_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define ET024006DHU_SPI_NPCS_PIN AVR32_SPI1_NPCS_3_0_PIN -#define ET024006DHU_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_3_0_FUNCTION - -//! @} - - -/*! \name Audio amplifier connection to the DAC - */ -//! @{ - -#define TPA6130_ABDAC (&AVR32_ABDAC) - -#define TPA6130_DATA0_PIN AVR32_ABDAC_DATA_0_1_PIN -#define TPA6130_DATA0_FUNCTION AVR32_ABDAC_DATA_0_1_FUNCTION -#define TPA6130_DATAN0_PIN AVR32_ABDAC_DATAN_0_1_PIN -#define TPA6130_DATAN0_FUNCTION AVR32_ABDAC_DATAN_0_1_FUNCTION -#define TPA6130_DATA1_PIN AVR32_ABDAC_DATA_1_1_PIN -#define TPA6130_DATA1_FUNCTION AVR32_ABDAC_DATA_1_1_FUNCTION -#define TPA6130_DATAN1_PIN AVR32_ABDAC_DATAN_1_1_PIN -#define TPA6130_DATAN1_FUNCTION AVR32_ABDAC_DATAN_1_1_FUNCTION - -#define TPA6130_ABDAC_PDCA_PID AVR32_PDCA_PID_ABDAC_TX -#define TPA6130_ABDAC_PDCA_CHANNEL 0 -#define TPA6130_ABDAC_PDCA_IRQ AVR32_PDCA_IRQ_0 -#define TPA6130_ABDAC_PDCA_INT_LEVEL AVR32_INTC_INT3 - -#define TPA6130_TWI (&AVR32_TWI) -#define TPA6130_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define TPA6130_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define TPA6130_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define TPA6130_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION - -//! }@ -/*! \name TI TLV320AIC23B sound chip - */ -//! @{ -#define TLV320_SSC (&AVR32_SSC) -#define TLV320_SSC_TX_CLOCK_PIN AVR32_SSC_TX_CLOCK_0_PIN -#define TLV320_SSC_TX_CLOCK_FUNCTION AVR32_SSC_TX_CLOCK_0_FUNCTION -#define TLV320_SSC_TX_DATA_PIN AVR32_SSC_TX_DATA_0_PIN -#define TLV320_SSC_TX_DATA_FUNCTION AVR32_SSC_TX_DATA_0_FUNCTION -#define TLV320_SSC_TX_FRAME_SYNC_PIN AVR32_SSC_TX_FRAME_SYNC_0_PIN -#define TLV320_SSC_TX_FRAME_SYNC_FUNCTION AVR32_SSC_TX_FRAME_SYNC_0_FUNCTION - -#define TLV320_TWI (&AVR32_TWI) -#define TLV320_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define TLV320_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define TLV320_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define TLV320_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION - -#define TLV320_PM_GCLK_PIN AVR32_PM_GCLK_0_0_PIN -#define TLV320_PM_GCLK_FUNCTION AVR32_PM_GCLK_0_0_FUNCTION -//! @} - -////! \name SPI: Apple Authentication Chip Hardware Connections -////! @{ -#define IPOD_AUTH_CHIP_SPI (&AVR32_SPI0) -#define IPOD_AUTH_CHIP_SPI_IRQ AVR32_SPI0_IRQ -#define IPOD_AUTH_CHIP_SPI_NPCS 2 -#define IPOD_AUTH_CHIP_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define IPOD_AUTH_CHIP_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define IPOD_AUTH_CHIP_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define IPOD_AUTH_CHIP_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_NPCS_PIN AVR32_SPI0_NPCS_2_0_PIN -#define IPOD_AUTH_CHIP_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_2_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_N_RESET_PIN AVR32_PIN_PB30 -#define IPOD_AUTH_CHIP_SPI_CP_READY_PIN AVR32_PIN_PB31 -//! }@ - -/*! \name Connections of the iPOD Authentication Coprocessor - */ -//! @{ - -#define IPOD_AUTH_CHIP_TWI (&AVR32_TWI) -#define IPOD_AUTH_CHIP_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define IPOD_AUTH_CHIP_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define IPOD_AUTH_CHIP_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define IPOD_AUTH_CHIP_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION -#define IPOD_AUTH_CHIP_TWI_N_RESET_PIN AVR32_PIN_PX16 - -//! @} - -/*! \name USART connection to the UC3B board controller - */ -//! @{ - -#define USART0_RXD_PIN AVR32_USART0_RXD_0_0_PIN -#define USART0_RXD_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION -#define USART0_TXD_PIN AVR32_USART0_TXD_0_0_PIN -#define USART0_TXD_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION -#define USART0_RTS_PIN AVR32_USART0_RTS_0_0_PIN -#define USART0_RTS_FUNCTION AVR32_USART0_RTS_0_0_FUNCTION -#define USART0_CTS_PIN AVR32_USART0_CTS_0_0_PIN -#define USART0_CTS_FUNCTION AVR32_USART0_CTS_0_0_FUNCTION - -//! @} - -#define ADC_VEXT_PIN AVR32_ADC_AD_7_PIN -#define ADC_VEXT_FUNCTION AVR32_ADC_AD_7_FUNCTION - -/*! \name LCD Connections of the ET024006DHU display - */ -//! @{ -#define ET024006DHU_SMC_USE_NCS 0 -#define ET024006DHU_SMC_COMPONENT_CS "smc_et024006dhu.h" - -#define ET024006DHU_EBI_DATA_0 AVR32_EBI_DATA_0 -#define ET024006DHU_EBI_DATA_1 AVR32_EBI_DATA_1 -#define ET024006DHU_EBI_DATA_2 AVR32_EBI_DATA_2 -#define ET024006DHU_EBI_DATA_3 AVR32_EBI_DATA_3 -#define ET024006DHU_EBI_DATA_4 AVR32_EBI_DATA_4 -#define ET024006DHU_EBI_DATA_5 AVR32_EBI_DATA_5 -#define ET024006DHU_EBI_DATA_6 AVR32_EBI_DATA_6 -#define ET024006DHU_EBI_DATA_7 AVR32_EBI_DATA_7 -#define ET024006DHU_EBI_DATA_8 AVR32_EBI_DATA_8 -#define ET024006DHU_EBI_DATA_9 AVR32_EBI_DATA_9 -#define ET024006DHU_EBI_DATA_10 AVR32_EBI_DATA_10 -#define ET024006DHU_EBI_DATA_11 AVR32_EBI_DATA_11 -#define ET024006DHU_EBI_DATA_12 AVR32_EBI_DATA_12 -#define ET024006DHU_EBI_DATA_13 AVR32_EBI_DATA_13 -#define ET024006DHU_EBI_DATA_14 AVR32_EBI_DATA_14 -#define ET024006DHU_EBI_DATA_15 AVR32_EBI_DATA_15 - -#define ET024006DHU_EBI_ADDR_21 AVR32_EBI_ADDR_21_1 - -#define ET024006DHU_EBI_NWE AVR32_EBI_NWE0_0 -#define ET024006DHU_EBI_NRD AVR32_EBI_NRD_0 -#define ET024006DHU_EBI_NCS AVR32_EBI_NCS_0_1 -//! @} - - -#endif // !EVK1105_REVA - -#endif // _EVK1105_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c deleted file mode 100644 index 561652aebc3..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c +++ /dev/null @@ -1,346 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1105 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1105 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include -#include "preprocessor.h" -#include "compiler.h" -#include "evk1105.h" -#include "led.h" - - -//! Structure describing LED hardware connections. -typedef const struct -{ - struct - { - U32 PORT; //!< LED GPIO port. - U32 PIN_MASK; //!< Bit-mask of LED pin in GPIO port. - } GPIO; //!< LED GPIO descriptor. - struct - { - S32 CHANNEL; //!< LED PWM channel (< 0 if N/A). - S32 FUNCTION; //!< LED pin PWM function (< 0 if N/A). - } PWM; //!< LED PWM descriptor. -} tLED_DESCRIPTOR; - - -//! Hardware descriptors of all LEDs. -static tLED_DESCRIPTOR LED_DESCRIPTOR[LED_COUNT] = -{ -#define INSERT_LED_DESCRIPTOR(LED_NO, unused) \ - { \ - {LED##LED_NO##_GPIO / 32, 1 << (LED##LED_NO##_GPIO % 32)},\ - {LED##LED_NO##_PWM, LED##LED_NO##_PWM_FUNCTION } \ - }, - MREPEAT(LED_COUNT, INSERT_LED_DESCRIPTOR, ~) -#undef INSERT_LED_DESCRIPTOR -}; - - -//! Saved state of all LEDs. -static volatile U32 LED_State = (1 << LED_COUNT) - 1; - - -U32 LED_Read_Display(void) -{ - return LED_State; -} - - -void LED_Display(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor; - volatile avr32_gpio_port_t *led_gpio_port; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - LED_State = leds; - - // For all LEDs... - for (led_descriptor = &LED_DESCRIPTOR[0]; - led_descriptor < LED_DESCRIPTOR + LED_COUNT; - led_descriptor++) - { - // Set the LED to the requested state. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - } -} - - -U32 LED_Read_Display_Mask(U32 mask) -{ - return Rd_bits(LED_State, mask); -} - - -void LED_Display_Mask(U32 mask, U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - mask &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Wr_bits(LED_State, mask, leds); - - // While there are specified LEDs left to manage... - while (mask) - { - // Select the next specified LED and set it to the requested state. - led_shift = 1 + ctz(mask); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - leds >>= led_shift - 1; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - mask >>= led_shift; - } -} - - -Bool LED_Test(U32 leds) -{ - return Tst_bits(LED_State, leds); -} - - -void LED_Off(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Clr_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it off. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_On(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Set_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it on. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_Toggle(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Tgl_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and toggle it. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrt = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -U32 LED_Read_Display_Field(U32 field) -{ - return Rd_bitfield(LED_State, field); -} - - -void LED_Display_Field(U32 field, U32 leds) -{ - // Move the bit-field to the appropriate position for the bit-mask. - LED_Display_Mask(field, leds << ctz(field)); -} - - -U8 LED_Get_Intensity(U32 led) -{ - tLED_DESCRIPTOR *led_descriptor; - - // Check that the argument value is valid. - led = ctz(led); - led_descriptor = &LED_DESCRIPTOR[led]; - if (led >= LED_COUNT || led_descriptor->PWM.CHANNEL < 0) return 0; - - // Return the duty cycle value if the LED PWM channel is enabled, else 0. - return (AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)) ? - AVR32_PWM.channel[led_descriptor->PWM.CHANNEL].cdty : 0; -} - - -void LED_Set_Intensity(U32 leds, U8 intensity) -{ - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_pwm_channel_t *led_pwm_channel; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // For each specified LED... - for (leds &= (1 << LED_COUNT) - 1; leds; leds >>= led_shift) - { - // Select the next specified LED and check that it has a PWM channel. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - if (led_descriptor->PWM.CHANNEL < 0) continue; - - // Initialize or update the LED PWM channel. - led_pwm_channel = &AVR32_PWM.channel[led_descriptor->PWM.CHANNEL]; - if (!(AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL))) - { - led_pwm_channel->cmr = (AVR32_PWM_CPRE_MCK << AVR32_PWM_CPRE_OFFSET) & - ~(AVR32_PWM_CALG_MASK | - AVR32_PWM_CPOL_MASK | - AVR32_PWM_CPD_MASK); - led_pwm_channel->cprd = 0x000000FF; - led_pwm_channel->cdty = intensity; - AVR32_PWM.ena = 1 << led_descriptor->PWM.CHANNEL; - } - else - { - AVR32_PWM.isr; - while (!(AVR32_PWM.isr & (1 << led_descriptor->PWM.CHANNEL))); - led_pwm_channel->cupd = intensity; - } - - // Switch the LED pin to its PWM function. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (led_descriptor->PWM.FUNCTION & 0x1) - { - led_gpio_port->pmr0s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr0c = led_descriptor->GPIO.PIN_MASK; - } - if (led_descriptor->PWM.FUNCTION & 0x2) - { - led_gpio_port->pmr1s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr1c = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->gperc = led_descriptor->GPIO.PIN_MASK; - } -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h deleted file mode 100644 index 7766b6a766b..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h +++ /dev/null @@ -1,187 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1105 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1105 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _LED_H_ -#define _LED_H_ - -#include "compiler.h" - - -/*! \name Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED0 0x01 -#define LED1 0x02 -#define LED2 0x04 -#define LED3 0x08 -//! @} - - -/*! \brief Gets the last state of all LEDs set through the LED API. - * - * \return State of all LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display(void); - -/*! \brief Sets the state of all LEDs. - * - * \param leds New state of all LEDs (1 bit per LED). - * - * \note The pins of all LEDs are set to GPIO output mode. - */ -extern void LED_Display(U32 leds); - -/*! \brief Gets the last state of the specified LEDs set through the LED API. - * - * \param mask LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Mask(U32 mask); - -/*! \brief Sets the state of the specified LEDs. - * - * \param mask LEDs of which to set the state (1 bit per LED). - * - * \param leds New state of the specified LEDs (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Mask(U32 mask, U32 leds); - -/*! \brief Tests the last state of the specified LEDs set through the LED API. - * - * \param leds LEDs of which to test the state (1 bit per LED). - * - * \return \c TRUE if at least one of the specified LEDs has a state on, else - * \c FALSE. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern Bool LED_Test(U32 leds); - -/*! \brief Turns off the specified LEDs. - * - * \param leds LEDs to turn off (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Off(U32 leds); - -/*! \brief Turns on the specified LEDs. - * - * \param leds LEDs to turn on (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_On(U32 leds); - -/*! \brief Toggles the specified LEDs. - * - * \param leds LEDs to toggle (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Toggle(U32 leds); - -/*! \brief Gets as a bit-field the last state of the specified LEDs set through - * the LED API. - * - * \param field LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED, beginning with the first - * specified LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Field(U32 field); - -/*! \brief Sets as a bit-field the state of the specified LEDs. - * - * \param field LEDs of which to set the state (1 bit per LED). - * \param leds New state of the specified LEDs (1 bit per LED, beginning with - * the first specified LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Field(U32 field, U32 leds); - -/*! \brief Gets the intensity of the specified LED. - * - * \param led LED of which to get the intensity (1 bit per LED; only the least - * significant set bit is used). - * - * \return Intensity of the specified LED (0x00 to 0xFF). - * - * \warning The PWM channel of the specified LED is supposed to be used only by - * this module. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U8 LED_Get_Intensity(U32 led); - -/*! \brief Sets the intensity of the specified LEDs. - * - * \param leds LEDs of which to set the intensity (1 bit per LED). - * \param intensity New intensity of the specified LEDs (0x00 to 0xFF). - * - * \warning The PWM channels of the specified LEDs are supposed to be used only - * by this module. - * - * \note The pins of the specified LEDs are set to PWM output mode. - */ -extern void LED_Set_Intensity(U32 leds, U8 intensity); - - -#endif // _LED_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h deleted file mode 100644 index 78ee91e75aa..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h +++ /dev/null @@ -1,120 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Standard board header file. - * - * This file includes the appropriate board header file according to the - * defined board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _BOARD_H_ -#define _BOARD_H_ - -#include - -/*! \name Base Boards - */ -//! @{ -#define EVK1100 1 //!< AT32UC3A EVK1100 board. -#define EVK1101 2 //!< AT32UC3B EVK1101 board. -#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board. -#define EVK1104 4 //!< AT32UC3A3 EVK1104 board. -#define EVK1105 5 //!< AT32UC3A EVK1105 board. -#define STK1000 6 //!< AT32AP7000 STK1000 board. -#define NGW100 7 //!< AT32AP7000 NGW100 board. -#define STK600_RCUC3L0 8 //!< STK600 RCUC3L0 board. -#define UC3L_EK 9 //!< AT32UC3L-EK board. -#define USER_BOARD 99 //!< User-reserved board (if any). -//! @} - -/*! \name Extension Boards - */ -//! @{ -#define EXT1102 1 //!< AT32UC3B EXT1102 board. -#define MC300 2 //!< AT32UC3 MC300 board. -#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any). -//! @} - -#if BOARD == EVK1100 - #include "EVK1100/evk1100.h" -#elif BOARD == EVK1101 - #include "EVK1101/evk1101.h" -#elif BOARD == UC3C_EK - #include "UC3C_EK/uc3c_ek.h" -#elif BOARD == EVK1104 - #include "EVK1104/evk1104.h" -#elif BOARD == EVK1105 - #include "EVK1105/evk1105.h" -#elif BOARD == STK1000 - #include "STK1000/stk1000.h" -#elif BOARD == NGW100 - #include "NGW100/ngw100.h" -#elif BOARD == STK600_RCUC3L0 - #include "STK600/RCUC3L0/stk600_rcuc3l0.h" -#elif BOARD == UC3L_EK - #include "UC3L_EK/uc3l_ek.h" -#elif BOARD == ARDUINO - #include "ARDUINO/arduino.h" -#else - #error No known AVR32 board defined -#endif - -#if (defined EXT_BOARD) - #if EXT_BOARD == EXT1102 - #include "EXT1102/ext1102.h" - #elif EXT_BOARD == MC300 - #include "MC300/mc300.h" - #elif EXT_BOARD == USER_EXT_BOARD - // User-reserved area: #include the header file of your extension board here - // (if any). - #endif -#endif - - -#ifndef FRCOSC - #define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< Default RCOsc frequency. -#endif - - -#endif // _BOARD_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.my b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.my deleted file mode 100644 index 78ee91e75aa..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.my +++ /dev/null @@ -1,120 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Standard board header file. - * - * This file includes the appropriate board header file according to the - * defined board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _BOARD_H_ -#define _BOARD_H_ - -#include - -/*! \name Base Boards - */ -//! @{ -#define EVK1100 1 //!< AT32UC3A EVK1100 board. -#define EVK1101 2 //!< AT32UC3B EVK1101 board. -#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board. -#define EVK1104 4 //!< AT32UC3A3 EVK1104 board. -#define EVK1105 5 //!< AT32UC3A EVK1105 board. -#define STK1000 6 //!< AT32AP7000 STK1000 board. -#define NGW100 7 //!< AT32AP7000 NGW100 board. -#define STK600_RCUC3L0 8 //!< STK600 RCUC3L0 board. -#define UC3L_EK 9 //!< AT32UC3L-EK board. -#define USER_BOARD 99 //!< User-reserved board (if any). -//! @} - -/*! \name Extension Boards - */ -//! @{ -#define EXT1102 1 //!< AT32UC3B EXT1102 board. -#define MC300 2 //!< AT32UC3 MC300 board. -#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any). -//! @} - -#if BOARD == EVK1100 - #include "EVK1100/evk1100.h" -#elif BOARD == EVK1101 - #include "EVK1101/evk1101.h" -#elif BOARD == UC3C_EK - #include "UC3C_EK/uc3c_ek.h" -#elif BOARD == EVK1104 - #include "EVK1104/evk1104.h" -#elif BOARD == EVK1105 - #include "EVK1105/evk1105.h" -#elif BOARD == STK1000 - #include "STK1000/stk1000.h" -#elif BOARD == NGW100 - #include "NGW100/ngw100.h" -#elif BOARD == STK600_RCUC3L0 - #include "STK600/RCUC3L0/stk600_rcuc3l0.h" -#elif BOARD == UC3L_EK - #include "UC3L_EK/uc3l_ek.h" -#elif BOARD == ARDUINO - #include "ARDUINO/arduino.h" -#else - #error No known AVR32 board defined -#endif - -#if (defined EXT_BOARD) - #if EXT_BOARD == EXT1102 - #include "EXT1102/ext1102.h" - #elif EXT_BOARD == MC300 - #include "MC300/mc300.h" - #elif EXT_BOARD == USER_EXT_BOARD - // User-reserved area: #include the header file of your extension board here - // (if any). - #endif -#endif - - -#ifndef FRCOSC - #define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< Default RCOsc frequency. -#endif - - -#endif // _BOARD_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c deleted file mode 100644 index 93d3dd96ce9..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c +++ /dev/null @@ -1,653 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Management of the AT45DBX data flash controller through SPI. - * - * This file manages the accesses to the AT45DBX data flash components. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -//_____ I N C L U D E S ___________________________________________________ - -#include "conf_access.h" - - -#if AT45DBX_MEM == ENABLE - -#include "compiler.h" -#include "board.h" -#include "gpio.h" -#include "spi.h" -#include "conf_at45dbx.h" -#include "at45dbx.h" - - -#if AT45DBX_MEM_CNT > 4 - #error AT45DBX_MEM_CNT must not exceed 4 -#endif - - -//_____ D E F I N I T I O N S ______________________________________________ - -/*! \name AT45DBX Group A Commands - */ -//! @{ -#define AT45DBX_CMDA_RD_PAGE 0xD2 //!< Main Memory Page Read (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_ARRAY_LEG 0xE8 //!< Continuous Array Read, Legacy Command (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_ARRAY_LF_SM 0x03 //!< Continuous Array Read, Low-Frequency Mode (Serial Mode). -#define AT45DBX_CMDA_RD_ARRAY_AF_SM 0x0B //!< Continuous Array Read, Any-Frequency Mode (Serial Mode). -#define AT45DBX_CMDA_RD_SECTOR_PROT_REG 0x32 //!< Read Sector Protection Register (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_SECTOR_LKDN_REG 0x35 //!< Read Sector Lockdown Register (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_SECURITY_REG 0x77 //!< Read Security Register (Serial/8-bit Mode). -//! @} - -/*! \name AT45DBX Group B Commands - */ -//! @{ -#define AT45DBX_CMDB_ER_PAGE 0x81 //!< Page Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_ER_BLOCK 0x50 //!< Block Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_ER_SECTOR 0x7C //!< Sector Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_ER_CHIP 0xC794809A //!< Chip Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_XFR_PAGE_TO_BUF1 0x53 //!< Main Memory Page to Buffer 1 Transfer (Serial/8-bit Mode). -#define AT45DBX_CMDB_XFR_PAGE_TO_BUF2 0x55 //!< Main Memory Page to Buffer 2 Transfer (Serial/8-bit Mode). -#define AT45DBX_CMDB_CMP_PAGE_TO_BUF1 0x60 //!< Main Memory Page to Buffer 1 Compare (Serial/8-bit Mode). -#define AT45DBX_CMDB_CMP_PAGE_TO_BUF2 0x61 //!< Main Memory Page to Buffer 2 Compare (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF1_TO_PAGE_ER 0x83 //!< Buffer 1 to Main Memory Page Program with Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF2_TO_PAGE_ER 0x86 //!< Buffer 2 to Main Memory Page Program with Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF1_TO_PAGE 0x88 //!< Buffer 1 to Main Memory Page Program without Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF2_TO_PAGE 0x89 //!< Buffer 2 to Main Memory Page Program without Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_PAGE_TH_BUF1 0x82 //!< Main Memory Page Program through Buffer 1 (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_PAGE_TH_BUF2 0x85 //!< Main Memory Page Program through Buffer 2 (Serial/8-bit Mode). -#define AT45DBX_CMDB_RWR_PAGE_TH_BUF1 0x58 //!< Auto Page Rewrite through Buffer 1 (Serial/8-bit Mode). -#define AT45DBX_CMDB_RWR_PAGE_TH_BUF2 0x59 //!< Auto Page Rewrite through Buffer 2 (Serial/8-bit Mode). -//! @} - -/*! \name AT45DBX Group C Commands - */ -//! @{ -#define AT45DBX_CMDC_RD_BUF1_LF_SM 0xD1 //!< Buffer 1 Read, Low-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF2_LF_SM 0xD3 //!< Buffer 2 Read, Low-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF1_AF_SM 0xD4 //!< Buffer 1 Read, Any-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF2_AF_SM 0xD6 //!< Buffer 2 Read, Any-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF1_AF_8M 0x54 //!< Buffer 1 Read, Any-Frequency Mode (8-bit Mode). -#define AT45DBX_CMDC_RD_BUF2_AF_8M 0x56 //!< Buffer 2 Read, Any-Frequency Mode (8-bit Mode). -#define AT45DBX_CMDC_WR_BUF1 0x84 //!< Buffer 1 Write (Serial/8-bit Mode). -#define AT45DBX_CMDC_WR_BUF2 0x87 //!< Buffer 2 Write (Serial/8-bit Mode). -#define AT45DBX_CMDC_RD_STATUS_REG 0xD7 //!< Status Register Read (Serial/8-bit Mode). -#define AT45DBX_CMDC_RD_MNFCT_DEV_ID_SM 0x9F //!< Manufacturer and Device ID Read (Serial Mode). -//! @} - -/*! \name AT45DBX Group D Commands - */ -//! @{ -#define AT45DBX_CMDD_EN_SECTOR_PROT 0x3D2A7FA9 //!< Enable Sector Protection (Serial/8-bit Mode). -#define AT45DBX_CMDD_DIS_SECTOR_PROT 0x3D2A7F9A //!< Disable Sector Protection (Serial/8-bit Mode). -#define AT45DBX_CMDD_ER_SECTOR_PROT_REG 0x3D2A7FCF //!< Erase Sector Protection Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_PR_SECTOR_PROT_REG 0x3D2A7FFC //!< Program Sector Protection Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_LKDN_SECTOR 0x3D2A7F30 //!< Sector Lockdown (Serial/8-bit Mode). -#define AT45DBX_CMDD_PR_SECURITY_REG 0x9B000000 //!< Program Security Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_PR_CONF_REG 0x3D2A80A6 //!< Program Configuration Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_DEEP_PWR_DN 0xB9 //!< Deep Power-down (Serial/8-bit Mode). -#define AT45DBX_CMDD_RSM_DEEP_PWR_DN 0xAB //!< Resume from Deep Power-down (Serial/8-bit Mode). -//! @} - - -/*! \name Bit-Masks and Values for the Status Register - */ -//! @{ -#define AT45DBX_MSK_BUSY 0x80 //!< Busy status bit-mask. -#define AT45DBX_BUSY 0x00 //!< Busy status value (0x00 when busy, 0x80 when ready). -#define AT45DBX_MSK_DENSITY 0x3C //!< Device density bit-mask. -//! @} -#if AT45DBX_MEM_SIZE == AT45DBX_1MB - -/*! \name AT45DB081 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x24 //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 9 //!< Address bits for byte position within buffer. - -//! @} -#elif AT45DBX_MEM_SIZE == AT45DBX_2MB - -/*! \name AT45DB161 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x2C //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer. -//! @} - -#elif AT45DBX_MEM_SIZE == AT45DBX_4MB - -/*! \name AT45DB321 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x34 //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer. -//! @} - -#elif AT45DBX_MEM_SIZE == AT45DBX_8MB - -/*! \name AT45DB642 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x3C //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 11 //!< Address bits for byte position within buffer. -//! @} - -#else - #error AT45DBX_MEM_SIZE is not defined to a supported value -#endif - -//! Address bits for page selection. -#define AT45DBX_PAGE_ADDR_BITS (AT45DBX_MEM_SIZE - AT45DBX_PAGE_BITS) - -//! Number of bits for addresses within pages. -#define AT45DBX_PAGE_BITS (AT45DBX_BYTE_ADDR_BITS - 1) - -//! Page size in bytes. -#define AT45DBX_PAGE_SIZE (1 << AT45DBX_PAGE_BITS) - -//! Bit-mask for byte position within buffer in \ref gl_ptr_mem. -#define AT45DBX_MSK_PTR_BYTE ((1 << AT45DBX_PAGE_BITS) - 1) - -//! Bit-mask for page selection in \ref gl_ptr_mem. -#define AT45DBX_MSK_PTR_PAGE (((1 << AT45DBX_PAGE_ADDR_BITS) - 1) << AT45DBX_PAGE_BITS) - -//! Bit-mask for byte position within sector in \ref gl_ptr_mem. -#define AT45DBX_MSK_PTR_SECTOR ((1 << AT45DBX_SECTOR_BITS) - 1) - - -/*! \brief Sends a dummy byte through SPI. - */ -#define spi_write_dummy() spi_write(AT45DBX_SPI, 0xFF) - - -//! Boolean indicating whether memory is in busy state. -static Bool at45dbx_busy; - -//! Memory data pointer. -static U32 gl_ptr_mem; - -//! Sector buffer. -static U8 sector_buf[AT45DBX_SECTOR_SIZE]; - - -/*! \name Control Functions - */ -//! @{ - - -Bool at45dbx_init(spi_options_t spiOptions, unsigned int pba_hz) -{ - // Setup SPI registers according to spiOptions. - for (spiOptions.reg = AT45DBX_SPI_FIRST_NPCS; - spiOptions.reg < AT45DBX_SPI_FIRST_NPCS + AT45DBX_MEM_CNT; - spiOptions.reg++) - { - if (spi_setupChipReg(AT45DBX_SPI, &spiOptions, pba_hz) != SPI_OK) return KO; - } - - // Memory ready. - at45dbx_busy = FALSE; - - return OK; -} - - -/*! \brief Selects or unselects a DF memory. - * - * \param memidx Memory ID of DF to select or unselect. - * \param bSelect Boolean indicating whether the DF memory has to be selected. - */ -static void at45dbx_chipselect_df(U8 memidx, Bool bSelect) -{ - if (bSelect) - { - // Select SPI chip. - spi_selectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx); - } - else - { - // Unselect SPI chip. - spi_unselectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx); - } -} - - -Bool at45dbx_mem_check(void) -{ - U8 df; - U16 status = 0; - - // DF memory check. - for (df = 0; df < AT45DBX_MEM_CNT; df++) - { - // Select the DF memory to check. - at45dbx_chipselect_df(df, TRUE); - - // Send the Status Register Read command. - spi_write(AT45DBX_SPI, AT45DBX_CMDC_RD_STATUS_REG); - - // Send a dummy byte to read the status register. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &status); - - // Unselect the checked DF memory. - at45dbx_chipselect_df(df, FALSE); - - // Unexpected device density value. - if ((status & AT45DBX_MSK_DENSITY) < AT45DBX_DENSITY) return KO; - } - - return OK; -} - - -/*! \brief Waits until the DF is ready. - */ -static void at45dbx_wait_ready(void) -{ - U16 status; - - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Send the Status Register Read command. - spi_write(AT45DBX_SPI, AT45DBX_CMDC_RD_STATUS_REG); - - // Read the status register until the DF is ready. - do - { - // Send a dummy byte to read the status register. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &status); - } while ((status & AT45DBX_MSK_BUSY) == AT45DBX_BUSY); - - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); -} - - -Bool at45dbx_read_open(U32 sector) -{ - U32 addr; - - // Set the global memory pointer to a byte address. - gl_ptr_mem = sector << AT45DBX_SECTOR_BITS; // gl_ptr_mem = sector * AT45DBX_SECTOR_SIZE. - - // If the DF memory is busy, wait until it's ready. - if (at45dbx_busy) at45dbx_wait_ready(); - at45dbx_busy = FALSE; - - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Initiate a page read at a given sector. - - // Send the Main Memory Page Read command. - spi_write(AT45DBX_SPI, AT45DBX_CMDA_RD_PAGE); - - // Send the three address bytes, which comprise: - // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits; - // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be read; - // - then AT45DBX_BYTE_ADDR_BITS bits specifying the starting byte address within that page. - // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local - // DF addressing. They are used for DF discrimination when there are several DFs. - addr = (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS) | - Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE); - spi_write(AT45DBX_SPI, LSB2W(addr)); - spi_write(AT45DBX_SPI, LSB1W(addr)); - spi_write(AT45DBX_SPI, LSB0W(addr)); - - // Send 32 don't care clock cycles to initialize the read operation. - spi_write_dummy(); - spi_write_dummy(); - spi_write_dummy(); - spi_write_dummy(); - - return OK; -} - - -void at45dbx_read_close(void) -{ - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory ready. - at45dbx_busy = FALSE; -} - - -Bool at45dbx_write_open(U32 sector) -{ - U32 addr; - - // Set the global memory pointer to a byte address. - gl_ptr_mem = sector << AT45DBX_SECTOR_BITS; // gl_ptr_mem = sector * AT45DBX_SECTOR_SIZE. - - // If the DF memory is busy, wait until it's ready. - if (at45dbx_busy) at45dbx_wait_ready(); - at45dbx_busy = FALSE; - -#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Transfer the content of the current page to buffer 1. - - // Send the Main Memory Page to Buffer 1 Transfer command. - spi_write(AT45DBX_SPI, AT45DBX_CMDB_XFR_PAGE_TO_BUF1); - - // Send the three address bytes, which comprise: - // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits; - // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be read; - // - then AT45DBX_BYTE_ADDR_BITS don't care bits. - // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local - // DF addressing. They are used for DF discrimination when there are several DFs. - addr = Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS; - spi_write(AT45DBX_SPI, LSB2W(addr)); - spi_write(AT45DBX_SPI, LSB1W(addr)); - spi_write(AT45DBX_SPI, LSB0W(addr)); - - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Wait for end of page transfer. - at45dbx_wait_ready(); -#endif - - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Initiate a page write at a given sector. - - // Send the Main Memory Page Program through Buffer 1 command. - spi_write(AT45DBX_SPI, AT45DBX_CMDB_PR_PAGE_TH_BUF1); - - // Send the three address bytes, which comprise: - // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits; - // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be written; - // - then AT45DBX_BYTE_ADDR_BITS bits specifying the starting byte address within that page. - // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local - // DF addressing. They are used for DF discrimination when there are several DFs. - addr = (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS) | - Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE); - spi_write(AT45DBX_SPI, LSB2W(addr)); - spi_write(AT45DBX_SPI, LSB1W(addr)); - spi_write(AT45DBX_SPI, LSB0W(addr)); - - return OK; -} - - -void at45dbx_write_close(void) -{ - // While end of logical sector not reached, zero-fill remaining memory bytes. - while (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_SECTOR)) - { - spi_write(AT45DBX_SPI, 0x00); - gl_ptr_mem++; - } - - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; -} - - -//! @} - - -/*! \name Single-Byte Access Functions - */ -//! @{ - - -U8 at45dbx_read_byte(void) -{ - U16 data; - - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously finished a page read. - // => We have to access the next page. - - // Memory ready. - at45dbx_busy = FALSE; - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_read_open input parameter is a sector. - at45dbx_read_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Send a dummy byte to read the next data byte. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &data); - gl_ptr_mem++; - - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) - { - // unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return data; -} - - -Bool at45dbx_write_byte(U8 b) -{ - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously launched a page programming. - // => We have to access the next page. - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_write_open input parameter is a sector. - at45dbx_write_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Write the next data byte. - spi_write(AT45DBX_SPI, b); - gl_ptr_mem++; - - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) - { - // unselect the DF memory gl_ptr_mem points to in order to program the page. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return OK; -} - - -//! @} - - -/*! \name Multiple-Sector Access Functions - */ -//! @{ - - -Bool at45dbx_read_multiple_sector(U16 nb_sector) -{ - while (nb_sector--) - { - // Read the next sector. - at45dbx_read_sector_2_ram(sector_buf); - at45dbx_read_multiple_sector_callback(sector_buf); - } - - return OK; -} - - -Bool at45dbx_write_multiple_sector(U16 nb_sector) -{ - while (nb_sector--) - { - // Write the next sector. - at45dbx_write_multiple_sector_callback(sector_buf); - at45dbx_write_sector_from_ram(sector_buf); - } - - return OK; -} - - -//! @} - - -/*! \name Single-Sector Access Functions - */ -//! @{ - - -Bool at45dbx_read_sector_2_ram(void *ram) -{ - U8 *_ram = ram; - U16 i; - U16 data; - - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously finished a page read. - // => We have to access the next page. - - // Memory ready. - at45dbx_busy = FALSE; - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_read_open input parameter is a sector. - at45dbx_read_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Read the next sector. - for (i = AT45DBX_SECTOR_SIZE; i; i--) - { - // Send a dummy byte to read the next data byte. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &data); - *_ram++ = data; - } - - // Update the memory pointer. - gl_ptr_mem += AT45DBX_SECTOR_SIZE; - -#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) -#endif - { - // unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return OK; -} - - -Bool at45dbx_write_sector_from_ram(const void *ram) -{ - const U8 *_ram = ram; - U16 i; - - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously launched a page programming. - // => We have to access the next page. - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_write_open input parameter is a sector. - at45dbx_write_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Write the next sector. - for (i = AT45DBX_SECTOR_SIZE; i; i--) - { - // Write the next data byte. - spi_write(AT45DBX_SPI, *_ram++); - } - - // Update the memory pointer. - gl_ptr_mem += AT45DBX_SECTOR_SIZE; - -#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) -#endif - { - // unselect the DF memory gl_ptr_mem points to in order to program the page. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return OK; -} - - -//! @} - - -#endif // AT45DBX_MEM == ENABLE diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h deleted file mode 100644 index e5263b247d8..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h +++ /dev/null @@ -1,270 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Management of the AT45DBX data flash controller through SPI. - * - * This file manages the accesses to the AT45DBX data flash components. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _AT45DBX_H_ -#define _AT45DBX_H_ - - -#include "conf_access.h" - -#if AT45DBX_MEM == DISABLE - #error at45dbx.h is #included although AT45DBX_MEM is disabled -#endif - - -#include "spi.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -/*! \name Available AT45DBX Sizes - * - * Number of address bits of available AT45DBX data flash memories. - * - * \note Only memories with page sizes of at least 512 bytes (sector size) are - * supported. - */ -//! @{ -#define AT45DBX_1MB 20 -#define AT45DBX_2MB 21 -#define AT45DBX_4MB 22 -#define AT45DBX_8MB 23 -//! @} - -// AT45DBX_1MB -#define AT45DBX_SECTOR_BITS 8 //! Number of bits for addresses within sectors. -// AT45DBX_2MB AT45DBX_4MB AT45DBX_8MB -//#define AT45DBX_SECTOR_BITS 9 //! Number of bits for addresses within sectors. - -//! Sector size in bytes. -#define AT45DBX_SECTOR_SIZE (1 << AT45DBX_SECTOR_BITS) - - -//_____ D E C L A R A T I O N S ____________________________________________ - -/*! \name Control Functions - */ -//! @{ - -/*! \brief Initializes the data flash controller and the SPI channel by which - * the DF is controlled. - * - * \param spiOptions Initialization options of the DF SPI channel. - * \param pba_hz SPI module input clock frequency (PBA clock, Hz). - * - * \retval OK Success. - * \retval KO Failure. - */ -extern Bool at45dbx_init(spi_options_t spiOptions, unsigned int pba_hz); - -/*! \brief Performs a memory check on all DFs. - * - * \retval OK Success. - * \retval KO Failure. - */ -extern Bool at45dbx_mem_check(void); - -/*! \brief Opens a DF memory in read mode at a given sector. - * - * \param sector Start sector. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note Sector may be page-unaligned (depending on the DF page size). - */ -extern Bool at45dbx_read_open(U32 sector); - -/*! \brief Unselects the current DF memory. - */ -extern void at45dbx_read_close(void); - -/*! \brief This function opens a DF memory in write mode at a given sector. - * - * \param sector Start sector. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note Sector may be page-unaligned (depending on the DF page size). - * - * \note If \ref AT45DBX_PAGE_SIZE > \ref AT45DBX_SECTOR_SIZE, page content is - * first loaded in buffer to then be partially updated by write byte or - * write sector functions. - */ -extern Bool at45dbx_write_open(U32 sector); - -/*! \brief Fills the end of the current logical sector and launches page programming. - */ -extern void at45dbx_write_close(void); - -//! @} - - -/*! \name Single-Byte Access Functions - */ -//! @{ - -/*! \brief Performs a single byte read from DF memory. - * - * \return The read byte. - * - * \note First call must be preceded by a call to the \ref at45dbx_read_open - * function. - */ -extern U8 at45dbx_read_byte(void); - -/*! \brief Performs a single byte write to DF memory. - * - * \param b The byte to write. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_write_open - * function. - */ -extern Bool at45dbx_write_byte(U8 b); - -//! @} - - -/*! \name Multiple-Sector Access Functions - */ -//! @{ - -/*! \brief Reads \a nb_sector sectors from DF memory. - * - * Data flow is: DF -> callback. - * - * \param nb_sector Number of contiguous sectors to read. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_read_open - * function. - * - * \note As \ref AT45DBX_PAGE_SIZE is always a multiple of - * \ref AT45DBX_SECTOR_SIZE, there is no need to check page end for each - * byte. - */ -extern Bool at45dbx_read_multiple_sector(U16 nb_sector); - -/*! \brief Callback function invoked after each sector read during - * \ref at45dbx_read_multiple_sector. - * - * \param psector Pointer to read sector. - */ -extern void at45dbx_read_multiple_sector_callback(const void *psector); - -/*! \brief Writes \a nb_sector sectors to DF memory. - * - * Data flow is: callback -> DF. - * - * \param nb_sector Number of contiguous sectors to write. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_write_open - * function. - * - * \note As \ref AT45DBX_PAGE_SIZE is always a multiple of - * \ref AT45DBX_SECTOR_SIZE, there is no need to check page end for each - * byte. - */ -extern Bool at45dbx_write_multiple_sector(U16 nb_sector); - -/*! \brief Callback function invoked before each sector write during - * \ref at45dbx_write_multiple_sector. - * - * \param psector Pointer to sector to write. - */ -extern void at45dbx_write_multiple_sector_callback(void *psector); - -//! @} - - -/*! \name Single-Sector Access Functions - */ -//! @{ - -/*! \brief Reads 1 DF sector to a RAM buffer. - * - * Data flow is: DF -> RAM. - * - * \param ram Pointer to RAM buffer. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_read_open - * function. - */ -extern Bool at45dbx_read_sector_2_ram(void *ram); - -/*! \brief Writes 1 DF sector from a RAM buffer. - * - * Data flow is: RAM -> DF. - * - * \param ram Pointer to RAM buffer. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_write_open - * function. - */ -extern Bool at45dbx_write_sector_from_ram(const void *ram); - -//! @} - - -#endif // _AT45DBX_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c deleted file mode 100644 index 4c0ace2f5db..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c +++ /dev/null @@ -1,234 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief CTRL_ACCESS interface for the AT45DBX data flash controller. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -//_____ I N C L U D E S ___________________________________________________ - -#include "conf_access.h" - - -#if AT45DBX_MEM == ENABLE - -#include "conf_at45dbx.h" -#include "at45dbx.h" -#include "at45dbx_mem.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -//! Whether to detect write accesses to the memory. -#define AT45DBX_MEM_TEST_CHANGE_STATE ENABLED - - -#if (ACCESS_USB == ENABLED || ACCESS_MEM_TO_RAM == ENABLED) && AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED - -//! Memory data modified flag. -static volatile Bool s_b_data_modify = FALSE; - -#endif - - -/*! \name Control Interface - */ -//! @{ - - -Ctrl_status at45dbx_test_unit_ready(void) -{ - return (at45dbx_mem_check() == OK) ? CTRL_GOOD : CTRL_NO_PRESENT; -} - - -Ctrl_status at45dbx_read_capacity(U32 *u32_nb_sector) -{ - *u32_nb_sector = (AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) - 1; - - return CTRL_GOOD; -} - - -Bool at45dbx_wr_protect(void) -{ - return FALSE; -} - - -Bool at45dbx_removal(void) -{ - return FALSE; -} - - -//! @} - - -#if ACCESS_USB == ENABLED - -#include "usb_drv.h" -#include "scsi_decoder.h" - - -/*! \name MEM <-> USB Interface - */ -//! @{ - - -Ctrl_status at45dbx_usb_read_10(U32 addr, U16 nb_sector) -{ - if (addr + nb_sector > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - - at45dbx_read_open(addr); - at45dbx_read_multiple_sector(nb_sector); - at45dbx_read_close(); - - return CTRL_GOOD; -} - - -void at45dbx_read_multiple_sector_callback(const void *psector) -{ - U16 data_to_transfer = AT45DBX_SECTOR_SIZE; - - // Transfer read sector to the USB interface. - while (data_to_transfer) - { - while (!Is_usb_in_ready(g_scsi_ep_ms_in)) - { - if(!Is_usb_endpoint_enabled(g_scsi_ep_ms_in)) - return; // USB Reset - } - - Usb_reset_endpoint_fifo_access(g_scsi_ep_ms_in); - data_to_transfer = usb_write_ep_txpacket(g_scsi_ep_ms_in, psector, - data_to_transfer, &psector); - Usb_ack_in_ready_send(g_scsi_ep_ms_in); - } -} - - -Ctrl_status at45dbx_usb_write_10(U32 addr, U16 nb_sector) -{ - if (addr + nb_sector > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - -#if AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED - if (nb_sector) s_b_data_modify = TRUE; -#endif - - at45dbx_write_open(addr); - at45dbx_write_multiple_sector(nb_sector); - at45dbx_write_close(); - - return CTRL_GOOD; -} - - -void at45dbx_write_multiple_sector_callback(void *psector) -{ - U16 data_to_transfer = AT45DBX_SECTOR_SIZE; - - // Transfer sector to write from the USB interface. - while (data_to_transfer) - { - while (!Is_usb_out_received(g_scsi_ep_ms_out)) - { - if(!Is_usb_endpoint_enabled(g_scsi_ep_ms_out)) - return; // USB Reset - } - - Usb_reset_endpoint_fifo_access(g_scsi_ep_ms_out); - data_to_transfer = usb_read_ep_rxpacket(g_scsi_ep_ms_out, psector, - data_to_transfer, &psector); - Usb_ack_out_received_free(g_scsi_ep_ms_out); - } -} - - -//! @} - -#endif // ACCESS_USB == ENABLED - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - - -Ctrl_status at45dbx_df_2_ram(U32 addr, void *ram) -{ - if (addr + 1 > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - - at45dbx_read_open(addr); - at45dbx_read_sector_2_ram(ram); - at45dbx_read_close(); - - return CTRL_GOOD; -} - - -Ctrl_status at45dbx_ram_2_df(U32 addr, const void *ram) -{ - if (addr + 1 > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - -#if AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED - s_b_data_modify = TRUE; -#endif - - at45dbx_write_open(addr); - at45dbx_write_sector_from_ram(ram); - at45dbx_write_close(); - - return CTRL_GOOD; -} - - -//! @} - -#endif // ACCESS_MEM_TO_RAM == ENABLED - - -#endif // AT45DBX_MEM == ENABLE diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h deleted file mode 100644 index de24fa3718a..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h +++ /dev/null @@ -1,164 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief CTRL_ACCESS interface for the AT45DBX data flash controller. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _AT45DBX_MEM_H_ -#define _AT45DBX_MEM_H_ - - -#include "conf_access.h" - -#if AT45DBX_MEM == DISABLE - #error at45dbx_mem.h is #included although AT45DBX_MEM is disabled -#endif - - -#include "ctrl_access.h" - - -//_____ D E C L A R A T I O N S ____________________________________________ - -/*! \name Control Interface - */ -//! @{ - -/*! \brief Tests the memory state and initializes the memory if required. - * - * The TEST UNIT READY SCSI primary command allows an application client to poll - * a LUN until it is ready without having to allocate memory for returned data. - * - * This command may be used to check the media status of LUNs with removable - * media. - * - * \return Status. - */ -extern Ctrl_status at45dbx_test_unit_ready(void); - -/*! \brief Returns the address of the last valid sector in the memory. - * - * \param u32_nb_sector Pointer to the address of the last valid sector. - * - * \return Status. - */ -extern Ctrl_status at45dbx_read_capacity(U32 *u32_nb_sector); - -/*! \brief Returns the write-protection state of the memory. - * - * \return \c TRUE if the memory is write-protected, else \c FALSE. - * - * \note Only used by removable memories with hardware-specific write - * protection. - */ -extern Bool at45dbx_wr_protect(void); - -/*! \brief Tells whether the memory is removable. - * - * \return \c TRUE if the memory is removable, else \c FALSE. - */ -extern Bool at45dbx_removal(void); - -//! @} - - -#if ACCESS_USB == ENABLED - -/*! \name MEM <-> USB Interface - */ -//! @{ - -/*! \brief Tranfers data from the memory to USB. - * - * \param addr Address of first memory sector to read. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status at45dbx_usb_read_10(U32 addr, U16 nb_sector); - -/*! \brief Tranfers data from USB to the memory. - * - * \param addr Address of first memory sector to write. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status at45dbx_usb_write_10(U32 addr, U16 nb_sector); - -//! @} - -#endif - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - -/*! \brief Copies 1 data sector from the memory to RAM. - * - * \param addr Address of first memory sector to read. - * \param ram Pointer to RAM buffer to write. - * - * \return Status. - */ -extern Ctrl_status at45dbx_df_2_ram(U32 addr, void *ram); - -/*! \brief Copies 1 data sector from RAM to the memory. - * - * \param addr Address of first memory sector to write. - * \param ram Pointer to RAM buffer to read. - * - * \return Status. - */ -extern Ctrl_status at45dbx_ram_2_df(U32 addr, const void *ram); - -//! @} - -#endif - - -#endif // _AT45DBX_MEM_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_sdio_v2.7.0.a b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_sdio_v2.7.0.a deleted file mode 100644 index e01ab14a691..00000000000 Binary files a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_sdio_v2.7.0.a and /dev/null differ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_spi_v2.7.0.a b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_spi_v2.7.0.a deleted file mode 100644 index 9aa4f241079..00000000000 Binary files a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_spi_v2.7.0.a and /dev/null differ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a deleted file mode 100644 index 00536f5dcf8..00000000000 Binary files a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR1/GCC/lib_ucr1_hd_wl_sta_intwpa_v2.7.0.a and /dev/null differ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_sdio_v2.7.0.a b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_sdio_v2.7.0.a deleted file mode 100644 index a61dea3d026..00000000000 Binary files a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_sdio_v2.7.0.a and /dev/null differ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_spi_v2.7.0.a b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_spi_v2.7.0.a deleted file mode 100644 index 688319295c8..00000000000 Binary files a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_spi_v2.7.0.a and /dev/null differ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a deleted file mode 100644 index 0b09aa811b4..00000000000 Binary files a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC/lib_ucr2_hd_wl_sta_intwpa_v2.7.0.a and /dev/null differ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/revision.txt b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/revision.txt deleted file mode 100644 index 5420c93d5df..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/revision.txt +++ /dev/null @@ -1 +0,0 @@ -Revision: 2491 diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_api.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_api.h deleted file mode 100644 index 17ba2ba8cbb..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_api.h +++ /dev/null @@ -1,1687 +0,0 @@ -/* - * Programming interface for wl_api. - * Copyright (C) 2010 HD Wireless AB - * - * You should have received a copy of the license along with this library. - */ - -/*! \file wl_api.h ************************************************************* - * - * \brief Basic WiFi API - * - * This file provides the wl_api interface. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: - * \li SPB104 + EVK1100 - * \li SPB104 + EVK1101 - * \li SPB104 + EVK1104 - * \li SPB104 + EVK1105 (SPI) - * \li SPB104 + EVK1105 (SPI + irq) - * \li SPB105 + EVK1105 (SPI) - * - AppNote: - * - * \author H&D Wireless AB: \n - * - ***************************************************************************** - * - * \section intro Introduction - * This is the documentation for the generic WiFi Driver API \a wl_api. - * - * \section files Main Files - * - wl_api.h : WiFi driver interface. - * - lib_ucr*_hd_wifi_standalone_v*.*.a - Driver library. - * - */ -/** \mainpage wl_api Reference Manual - -\image html images/wl_api_block_diagram_small.png "wl_api Architecture" - -(o)WL API © is a programming interface for WiFi (802.11). It aims -to be a complete interface for embedded applications wanting to use -wireless as a communications interface. (o)WL API © is shortened -"wl_api" in this document. - -wl_api has been designed to meet the following goals : - \li Simple : The API is as simple as is practicable - to make it easy to use. - \li Minimal size : The API is usable on very resource constrained - platforms. - \li Portable : The API is deployable on any platform with a standards - compliant C compiler. - \li OS independent : The API is deployable on systems using a real time - operating system as well as with applications running on the - "bare metal" of a hardware platform (that is without an operating system). - -As a consequence of these design goals wl_api does not allow very fine -grained control of most parameters relating to 802.11 networks. That -would increase the flexibility of the API while also increasing -complexity and code size. When the underlying WiFi hardware can -support a richer feature set the extra features can be offered as a -add-on library if required. - -The wl_api is implemented by two libraries. The core library is -compiled for a hardware platform and is independent of operating -system or IP stack. The core library contains all WiFi -functionality. The core library is supported by a suite of transport -libraries. The transport libraries implements the hardware -communication layer and are specific to the type of hardware interface -used to connect the host platform to the WiFi hardware. For example, -there are transport libraries for SPI and for SDIO. Only the core -library has a public interface (wl_api.h) but applications will need -to link with both the core library and a transport library matching -the hardware configuration. - -\section wl_api_princ Operation Principles - -There are three important properties of wl_api to keep in mind when -programming with it. - -The first is that wl_api is \b asynchronous. For instance, when the -\a wl_connect() function is called to attempt connection with an access -point it will trigger a sequence of packets being exchanged with the -access point after which, if everything is okay, a connection has been -established. The \a wl_connect() call is asynchronous (or non-blocking) -which means that you don't know if the connection attempt has -succeeded after the call returns. You only know if the sequence was -successfully started or not. To find out if, and when, the connection -attempt was successful you must register an event handler using the -function \a wl_register_event_cb(). This is true of a number of API calls -(which is indicated in their documentation). - -The second important property is that wl_api is \b polled. wl_api -never executes "by itself", since it would then have to support -interrupts, timers, locks and other operating system dependent -features. Instead all asynchronous processes proceed when wl_api is -polled by calling the \a wl_tick() function. When \a wl_tick() is called -wl_api reacts to any received management frames, expires any internal timers and -performs any other tasks necessary for forward progress. After -\a wl_tick() returns nothing will happen unless it or some other wl_api -function is called again. Also, to send and receive data, the \a wl_process_rx() -and \a wl_process_tx() must be invoked upon reception and transmission of data. - -The third important property is that wl_api is \b not \b thread \b safe. -All wl_api calls must execute in the same context since the -library has no knowledge of the locking mechanisms available (if any). - -\section wl_api_code_examples A note on the code examples - -The code examples illustrate how to call the different wl_api functions. -They do not constitute a complete program. Functions with the prefix "app_" -in the code examples are application specific calls that illustrate a -particular action. These functions are not part of the API and will have -to be implemented if needed. For a complete working code example see -one of the H&D Wireless software reference designs, such as the WiFi HTTP -server demo code in the Atmel Software Framework. - -The API is structured into these functional groups: - -\li \ref wl_api -\li \ref wl_wifi -\li \ref wl_data -\li \ref wl_transport -\li \ref wl_custom - -Also documented here is the transport layers for SPI and SDIO. -There interfaces are only necessary when porting the library to -a new hardware platform. - -\li \ref wl_spi -\li \ref wl_sdio - - * \section contactinfo Contact Information - * For further information, visit - * H&D Wireless.\n - * Support and FAQ: http://www.atmel.com/ - */ - -#ifndef WL_API_H -#define WL_API_H - -#define WL_API_RELEASE_NAME "v2.7.0" - -/*! Maximum size of a SSID */ -#define WL_SSID_MAX_LENGTH 32 -/*! Size of a MAC-address or BSSID */ -#define WL_MAC_ADDR_LENGTH 6 -/*! Maximum length of a passphrase */ -#define WL_MAX_PASS_LEN 64 -/*! Indicates that there is no SNR information */ -#define WL_SNR_UNKNOWN -128 - -#define SPB104 104 -#define SPB105 105 - -/*! \ingroup wl_api - * API Error codes */ -typedef enum { - WL_FAILURE = -1, - WL_SUCCESS = 1, - WL_NOEFFECT, - WL_OOM, - WL_INVALID_LENGTH, - WL_NOT_SUPPORTED, - WL_ABSORBED, - WL_RESOURCES, - WL_BUSY, - WL_RETRY, /*!< Retry the operation later. The driver is busy - resolving an operation that conflicts with the - request. */ - WL_INVALID_ARGS, - WL_AVAIL, - WL_CARD_FAILURE, /*!< Could not detect SPB device */ - WL_FIRMWARE_INVALID, /*!< Invalid firmware data */ - -} wl_err_t; - -/*! \ingroup wl_wifi - * Event identifiers */ -enum wl_event_id_t { - WL_EVENT_MEDIA_CONNECTED = 0, - WL_EVENT_CONN_FAILURE, - WL_EVENT_MEDIA_DISCONNECTED, - WL_EVENT_SCAN_COMPLETE, - WL_EVENT_FAILURE, - MAX_WL_EVENT -}; - -/*! \ingroup wl_wifi - * Authentication modes */ -enum wl_auth_mode { - AUTH_MODE_INVALID, - AUTH_MODE_AUTO, - AUTH_MODE_OPEN_SYSTEM, - AUTH_MODE_SHARED_KEY, - AUTH_MODE_WPA, - AUTH_MODE_WPA2, - AUTH_MODE_WPA_PSK, - AUTH_MODE_WPA2_PSK -}; - -/*! \ingroup wl_wifi - * Encryption modes */ -enum wl_enc_type { /* Values map to 802.11 encryption suites... */ - ENC_TYPE_WEP = 5, - ENC_TYPE_TKIP = 2, - ENC_TYPE_CCMP = 4, - /* ... except these two, 7 and 8 are reserved in 802.11-2007 */ - ENC_TYPE_NONE = 7, - ENC_TYPE_AUTO = 8 -}; - -enum wl_host_attention_mode { - WL_HOST_ATTENTION_SDIO = 0x1, /*!< For SDIO or polled SPI */ - WL_HOST_ATTENTION_SPI = 0x5a /*!< For SPI with interrupt line */ -}; - -/*! \ingroup wl_wifi - * Event descriptor -*/ -struct wl_event_t { - enum wl_event_id_t id; /**< Event identifier. */ - -}; - -/*! \ingroup wl_wifi - * Infrastructure (ESS) or Ad-hoc (IBSS) connection modes. - */ -enum wl_conn_type_t { - WL_CONN_TYPE_INFRA, /*!< For infrastructure mode (default) */ - WL_CONN_TYPE_ADHOC /*!< For ad-hoc mode */ -}; - -/* Note: - * If your environment does not have stdint.h you will have to - * define the fixed-width integer types specified in that file - * yourself, make sure that those definitions are included - * before any inclusions of wl_api.h, and build with the macro - * WITHOUT_STDINT defined. In this case the wl_api library - * must have been built with the same integer type definitions. - */ - -#ifndef WITHOUT_STDINT -#include -#endif - -/* Note: - * If your environment does not have stdio.h you will have to define - * the size_t type yourself, make sure that that definition is - * included before any inclusions of wl_api.h, and build with the - * macro WITHOUT_STDIO defined. In this case the wl_api library must - * have been built with the same size_t type definition. - */ -#ifndef WITHOUT_STDIO -#include -#endif - -/*! \ingroup wl_wifi - * - * \brief SSID representation. - * - * The SSID is a binary string and cannot be treated as a - * C-string safely. An empty SSID is represented by a - * SSID struct with the len field set to 0. - */ -struct wl_ssid_t -{ - char ssid[WL_SSID_MAX_LENGTH]; /**< Octet array containing the SSID data. */ - uint8_t len; /**< Length of valid data in ssid member. - * Cannot be longer than WL_SSID_MAX_LENGTH. */ -}; - -/*! \ingroup wl_wifi - * - * MAC-address/BSSID representation - * - * A broadcast BSSID is one with all octets set to 0xFF. - */ -struct wl_mac_addr_t -{ - uint8_t octet[WL_MAC_ADDR_LENGTH]; /**< Octet array containing the MAC address - * data. This array is always WL_MAC_ADDR_LENGTH bytes. - */ -}; - -/*! \ingroup wl_wifi - * - * Network representation - * - */ -struct wl_network_t -{ - struct wl_ssid_t ssid; /**< The SSID of the network. */ - struct wl_mac_addr_t bssid; /**< The BSSID of the network. */ - uint8_t channel; /**< The wlan channel which the network uses */ - uint32_t beacon_period; /**< Beacon period for the network */ - uint16_t dtim_period; /**< DTIM period for the network */ - int32_t rssi; /**< Received Signal Strength in dBm (measured on beacons) */ - int32_t snr; /**< Received Signal to noise ratio in dBm (measured on beacons) */ - uint8_t enc_type; /**< The encryption type used in the network. */ - - enum wl_conn_type_t net_type; /**< Type of network (Infrastructure or Ad-Hoc */ - size_t ie_len; /**< Always 0 unless wl_api has been built with WL_CONFIG_WPA_SUPPLICANT */ - - uint8_t ie[0]; /**< Not used unless wl_api has been built with WL_CONFIG_WPA_SUPPLICANT */ -}; - -/*! \ingroup wl_wifi - * Network list representation. Array of pointers to wl_network_t entries. - * - */ -struct wl_network_list_t -{ - struct wl_network_t **net; /**< The list of pointers to networks */ - size_t cnt; /**< Number of networks */ -}; - -#define WL_RATE_1MBIT 2 -#define WL_RATE_2MBIT 4 -#define WL_RATE_5_5MBIT 11 -#define WL_RATE_6MBIT 12 -#define WL_RATE_9MBIT 18 -#define WL_RATE_11MBIT 22 -#define WL_RATE_12MBIT 24 -#define WL_RATE_18MBIT 36 -#define WL_RATE_22MBIT 44 -#define WL_RATE_24MBIT 48 -#define WL_RATE_33MBIT 66 -#define WL_RATE_36MBIT 72 -#define WL_RATE_48MBIT 96 -#define WL_RATE_54MBIT 108 -#define WL_RATE_NUM_RATES 14 -#define WL_RATE_INVALID WL_RATE_NUM_RATES - -/*! \ingroup wl_wifi - * - * Rate representation - * - */ -typedef uint8_t wl_rate_t; - -/** \defgroup wl_api Library support functions - * - * These functions manage the library in general. They concern initalizing - * the library, downloading firmware to the WiFi chip and handling events - * from the library. - -For this example we assume that the application is running stand-alone -without an operating system. - -Before the library can do anything it needs to start up the WiFi -hardware by downloading a firmware image. The firmware image is -relatively big (around 144kB) and is therefore not included in the library -it is only needed once. It is up to the application to decide where to -store the firmware image and how to read it into the wl_api library. - -Step one is to write a function of the type \a ::wl_fw_read_cb_t -that wl_api will call to retrive the firmware image. Assuming that you -have some spare RAM (or whatever memory type is used for read only -data, such as FLASH memory) on your platform you can simply include -the firmware image from the \a wl_fw.h header file and write a -firmware read function like this - -\code -static size_t fw_read_cb(void* ctx, - uint8_t** buf, - size_t offset, - size_t len) -{ - if ( NULL == buf ) { - return 0; - } - *buf = ((uint8_t*) fw_buf) + offset; - if ( len > ( fw_len - offset ) ) { - return fw_len - offset; - } - return len; -} - -\endcode - -If the firmware image is stored in ROM this function may have to read -it back block by block instead. - -First, firmware must be downloaded to the device - -\code -if ( wl_transport_init(fw_read_cb, NULL, &mode) != WL_SUCCESS ) { - app_error("Firmware download failed"); - return 0; -} -\endcode - -The wl_api library is then initialized like this - -\code -if ( wl_init(NULL, init_complete_cb, mode) != WL_SUCCESS ) { - app_error("Init failed"); - return 0; -} -\endcode - -The library startup process will now require \a wl_poll() to be called -a number of times before it can complete. In addition, if the -application needs to know when the startup process has completed so -that it can, for example, start up an IP stack it will have to supply -a valid callback function of the type \a ::wl_init_complete_cb_t as a parameter -to the \a wl_init() call and start polling the wl_api library. - -The init complete callback will only be executed during a call to \a wl_poll() -or another wl_api function. This simplifies the implementation since no -internal locking is required and the wl_api library becomes OS-independent. - -\code -static void init_complete_cb(void* ctx) { - init_ip_stack(); -} -\endcode - -Registering the event callback is straightforward : - -\code -if (wl_register_event_cb(event_cb, NULL) != WL_SUCCESS) { - app_error("Failed to register event handler"); - return 0; -} -\endcode - -Similar to \a wl_poll(), there is also a \a wl_tick() function that takes a -free running "tick" counter with millisecond resolution as an argument so -that it can trigger internal timers when necessary. Assuming that such a tick -counter is provided by the macro GET_MS_TICK() the wl_api execution loop becomes - -\code -while (TRUE) { - wl_tick(GET_MS_TICK()); - wl_poll(); -} -\endcode - -In a stand-alone application this loop would usually be the main application -loop and include application specific calls as well. - -After some number of main loop iterations the init_complete_cb will be -invoked and the application can initialize its IP stack. - - * @{ - */ - -/*! \brief WiFi event callback. - * - * This function receives WiFi events that the application - * wants notification of. This function is supplied by the user - * of the API. - * - * @param event Struct describing the type of event and, for some - * events, additional information regarding the - * status of the event. See wl_event_t for additional - * information. - * @param ctx A context handle. This handle is passed - * untouched to the callback and has the same value - * as the context registered with the callback in - * wl_register_event_cb(). - */ -typedef void (*wl_event_cb_t) (struct wl_event_t event, void* ctx); - - -/*! \brief Initialization complete callback function. - * - * Invoked when WiFi initialization is complete. - * - * @param ctx Opaque context pointer as provided to \a wl_init() that will be - * passed back to the callback. - */ -typedef void (wl_init_complete_cb_t)(void* ctx); - - -/*! \brief Register an event handler. - * - * Register an event handler with the driver. This - * event handler will be called whenever a event - * listed in #wl_event_id_t occurs. - * See #wl_event_cb_t and #wl_event_id_t for more details. - * - * @param cb Event callback function to register. - * @param ctx Opaque context pointer that will be - * passed to the callback when it is - * invoked. This parameter is never - * accessed by the API. - * @return WL_SUCCESS - */ -wl_err_t wl_register_event_cb(wl_event_cb_t cb, void* ctx); - -/*! \brief Initialize the wl_api library. - * - * Note that \a wl_poll() must be called for this function to progress - * towards complete init - * - * The startup process will proceed asynchronously and will inkove - * init_complete_cb when completed. The callback will not be invoked if any - * error occurs during initialization. - * - * This function should be called after firmware has been downloaded to the - * device. - * - * @param ctx Opaque context pointer that will be passed to the callback - * when invoked. This parameter is never accessed by the API. - * @param init_complete_cb callback function to invoke when initialization is - * complete. - * @param mode Indicates the host attention mode used by the device. If - * \a wl_transport_init() was used to download the firmware image to the - * device, the proper mode can be obtained from the mode parameter of - * that function. - * - * @return - * - WL_SUCCESS - * - WL_FAILURE - */ -wl_err_t wl_init(void* ctx, wl_init_complete_cb_t init_complete_cb, - enum wl_host_attention_mode mode); - - -/*! \brief Shutdown the wl_api library and free resources. - * - * \a wl_init() must be invoked to startup the library - * again. - * - * @return - * - WL_SUCCESS on success - * - WL_FAILURE - * - */ -wl_err_t wl_shutdown(void); - - -/*! \brief WiFi driver timer tick function - * - * Periodic timers are triggered from this function so it should be called as - * often as possible if precision timing is required (traffic timeouts, - * authentication timeouts etc). - * - * @param tick A tick count in us. This is used to expire timers - * in the driver. - */ -void wl_tick(uint32_t tick); - -/*! @} */ - - -/** \defgroup wl_wifi Connection Management - * - * These functions access WiFi-specific functionality such as - * scanning, connect/disconnect, authentication and encryption, - * and power save modes. - * - -\section scanning Scanning - -To scan all channels that are available in the current regulatory -domain - -\code - if ( wl_scan() != WL_SUCCESS ) { - // May be busy scanning already, no fatal error - return 0; - } -\endcode - -Since wl_scan() only starts the scanning process the application -should add code to the event handler to catch the "scan complete" event -and retrieve the list of seen networks from the library - -\code -static void event_cb(struct wl_event_t event, void* ctx) { - switch(event.id) { - case WL_EVENT_SCAN_COMPLETE: - struct wl_network_list_t *netlist; - uint8_t netcnt; - - wl_get_network_list(&netlist); - netcnt = netlist->cnt; - while (--netcnt) { - print_network(netlist->net[netcnt]); - } - break; - } -} -\endcode - -The function print_network() could display the network name, the SSID, in -a user interface. It is important to keep in mind is that despite the fact -that the SSID is usually presented as a ASCII string, it is -in fact just a byte string and can legally contain all kinds of -non-printable characters, including a 0-byte. This means that it is -easy to end up with buffer overrun bugs if the SSID is ever treated -as a normal string without precautions. - -\code -void print_network(struct wl_network_t* wl_network) -{ - char ssid[WL_SSID_MAX_LENGTH + 1]; - memset(ssid, 0, sizeof(ssid)); - memcpy(ssid, wl_network->ssid.ssid, wl_network->ssid.len); - if (app_is_printable(ssid)) { - app_print("\"%s\" ", ssid); - } - else { - app_print(" "); - } - switch (wl_network->enc_type) { - case ENC_TYPE_WEP : - app_print("(WEP encryption)"); - break; - case ENC_TYPE_TKIP : - app_print("(TKIP encryption)"); - break; - case ENC_TYPE_CCMP : - app_print("(CCMP encryption)"); - break; - } - app_print("\n"); -} -\endcode - -\section connecting Connecting - -To connect to an access point (beware binary SSIDs) the connection process -must be started - -\code - if ( wl_connect("My AP", strlen("My AP")) - != WL_SUCCESS ) { - app_error("Connection failed.\n"); - return 0; - } -\endcode - -and the \a WL_EVENT_MEDIA_CONNECTED and \a WL_EVENT_CONN_FAILURE events should be -caught. To detect that a connection is terminated after it has been successfully established -(such as when the AP goes out of range) the \a WL_EVENT_MEDIA_DISCONNECTED event -must be also be caught - - -\code -static void event_cb(struct wl_event_t event, void* ctx) { - switch(event.id) { - case WL_EVENT_SCAN_COMPLETE: - struct wl_network_list_t *netlist; - uint8_t netcnt; - - wl_get_network_list(&netlist); - netcnt = netlist->cnt; - while (--netcnt) { - print_network(netlist->net[netcnt]); - } - break; - case WL_EVENT_CONN_FAILURE: - app_error("Connection failed\n"); - break; - case WL_EVENT_MEDIA_CONNECTED: - app_print("Connected to Access Point\n"); - app_ip_interface_up(); - break; - case WL_EVENT_MEDIA_DISCONNECTED: - app_print("Disconnected from Access Point\n"); - app_ip_interface_down(); - break; - } -} -\endcode - -\section security Security - -To use WEP a WEP key must be added before the connection is initiated. -To set the 40-bit WEP key 0xDEADBEEF00 as default key for key index 0 do - -\code - char key[5] = { 0xDE, 0xAD, 0xBE, 0xEF, 0x00 }; - struct wl_mac_addr_t bssid; - - // This means that the bssid is a broadcast bssid and the WEP key will be a default key instead of a key-mapping key. - memset(&bssid.octet, 0xff, sizeof bssid.octet); - - if ( wl_add_wep_key(0, sizeof key, key, &bssid) - != WL_SUCCESS ) { - app_error("Failed to add WEP key."); - return 0; - } -\endcode - -To use WPA/WPA2 with a Pre-shared key a passphrase must be associated -with the network before the connection is initiated. - -\code - struct wl_network_t net; - char passphrase[] = "MySecretKey"; - - memset(&net, 0, sizeof net); - memset(net.bssid.octet, 0xFF, sizeof net.bssid.octet); - strncpy(net.ssid.ssid, "My AP", strlen("My AP")); - net.ssid.len = strlen("My AP"); - net.enc_type = ENC_TYPE_AUTO; - if (wl_set_passphrase(&net, - passphrase, - strlen(passphrase), - ENC_TYPE_AUTO, - AUTH_MODE_AUTO) - != WL_SUCCESS) { - app_error("Failed to add passphrase"); - } -\endcode - -The library supports several passphrase-network associations to be -configured simultaneously. Be aware that the \a wl_connect() call -can take up to 15 seconds longer than normal when using a pre-shared -WPA/WPA2 key since the platform must calculate a temporal encryption -key from the passphrase before the connection attempt can start. - - * @{ - */ - - -/*! \brief Scan all channels. - * - * Starts a scan of all WiFi channels allowed in this regulatory - * domain. The list of allowed channels (the domain) is adapted to the - * channels announced as allowed by the first AP heard. - * - * The scan will proceed asynchronously and will raise a - * WL_EVENT_SCAN_COMPLETE event when completed. - * - * Currently, there's a limit on the scan list size that depends on the - * architecture (6 networks for the AVR32 UCR1 architecture 16 networks for - * other architectures. If more network exist, the strongest networks are - * chosen. Note that the limitation on the scan list size does not limit the - * networks which the device can connect to. See wl_connect() for more - * details. - * - * @return - * - WL_SUCCESS - * - WL_FAILURE. - */ -wl_err_t wl_scan(void); - -/*! \brief Get the list of currently known networks. - * - * Retrieves the list of currently known networks from - * the driver. To ensure that this list is up-to-date - * a wl_scan() call should be issued and this function - * should be called upon reception of the WL_EVENT_SCAN_COMPLETE - * event. This function can be called at other times - * but the list of networks retrieved then might not - * correspond to the networks actually in range. - * - * Note that a successful scan does not necessarily - * find any networks. - * - * @param network_list Output buffer. The API call returns - * a pointer to allocated memory containing the network list. - * @return - * - WL_SUCCESS - * - WL_FAILURE. - */ -wl_err_t wl_get_network_list(struct wl_network_list_t **network_list); - -#ifdef WFE_6_12 -/*! \brief Start a Ad-hoc network. - * - * Attempt to start a Ad-hoc (IBSS) network. If a Ad-hoc network - * is successfully started then a WL_EVENT_MEDIA_CONNECTED event - * will be raised once the first peer station connects to the Ad-hoc - * network (and not when the network is announced on the air). - * - * If a Ad-hoc network should be started with encryption - * enabled then \a wl_set_passphrase() should be called before - * \a wl_start_adhoc_net() to configure the security parameters. - * The Ad-hoc network is started with the security parameters - * (if any) that was configured for the specified \a ssid. - * - * @param ssid The SSID of the new network. If there's a network - * already present with this SSID this call will fail. - * @param channel The channel to use. Valid channels are 1-14 - * @param auth_mode The authentication mode to use. Supported - * authentication modes for Ad-hoc networks are - * AUTH_MODE_OPEN_SYSTEM and AUTH_MODE_SHARED_KEY. - * Passing other modes will cause a WL_INVALID_ARGS return. - * If AUTH_MODE_SHARED_KEY is used then a valid WEP - * key must be set with a call to \a wl_add_wep_key() - * and the default WEP key index must be set with a - * call to \a wl_set_default_wep_key(). - * @return - * - WL_SUCCESS on success. - * - WL_INVALID_ARGS if the ssid is malformed, if - * the channel not valid or if the authentication mode - * is invalid. - * - WL_RETRY if the driver is busy resolving a conflicting - * operation. The operation should be retried after a wait - * (at least one call to wl_poll() for polled implementations). - * - WL_BUSY if the driver is already connected or if a network - * with the same SSID is already known. - * - */ -wl_err_t wl_start_adhoc_net(struct wl_ssid_t ssid, - uint8_t channel, - enum wl_auth_mode auth_mode); -#endif -/*! \brief Connect to a SSID. - * - * Attempt to connect to a given SSID. If the driver is already - * connected to an AP with a different SSID then this call will - * return WL_BUSY and wl_disconnect() should be called before - * trying again. - * - * The connection process will proceed asynchronously and will raise a - * WL_EVENT_MEDIA_CONNECTED event when completed, or a WL_EVENT_CONN_FAILURE - * when failed. After a WL_EVENT_MEDIA_CONNECTED event has been raised - * a WL_EVENT_MEDIA_DISCONNECT event will be raised if the connection is - * terminated. Note that this can be caused by external factors and can - * happen at any time. - * - * If wl_connect() is invoked with a network that is not shown in the - * scan list, the device will probe for that specific network and connect - * to it, if found. This is also the method to use in order to connect to - * "hidden" networks (AP's that doesn't broadcast its SSID). - * - * @param ssid Pointer to the SSID string. - * Freed by caller. - * @param ssid_len Length of the SSID string in octets. Max value is 32. - * @return - * - WL_SUCCESS - * - WL_FAILURE if the network could not be found - * - WL_BUSY if the driver is already connected - * - WL_RETRY if the driver is busy resolving a conflicting operation. - * The operation should be retried after a wait (at least one call to wl_poll() - * for polled implementations). - */ -wl_err_t wl_connect(char* ssid, size_t ssid_len); - -/*! \brief Connect to a BSSID - * - * Attempt to connect to a given BSSID. If the driver is already - * connected to an AP with a different BSSID then this call will - * return WL_BUSY and wl_disconnect() should be called before - * trying again. - * - * The connection process will proceed asynchronously and will raise a - * WL_EVENT_MEDIA_CONNECTED event when completed, or a WL_EVENT_CONN_FAILURE - * when failed. After a WL_EVENT_MEDIA_CONNECTED event has been raised - * a WL_EVENT_MEDIA_DISCONNECT event will be raised if the connection is - * terminated. Note that this can be caused by external factors and can - * happen at any time. - * - * If wl_connect_bssid() is invoked with a network that is not shown in the - * scan list, the device will probe for that specific network and connect - * to it, if found. - * - * @param bssid Pointer to the BSSID. Freed by caller. - * @return - * - WL_SUCCESS - * - WL_FAILURE if the network could not be found - * - WL_BUSY if the driver is already connected - * - WL_RETRY if the driver is busy resolving a conflicting operation. - * The operation should be retried after a wait (at least one call to wl_poll() - * for polled implementations). - */ -wl_err_t wl_connect_bssid(struct wl_mac_addr_t bssid); - -/*! \brief Disconnect from the network - * - * Disconnect from any currently associated network. - * - * The disconnection process will proceed asynchronously and will raise a - * WL_EVENT_MEDIA_DISCONNECTED event when completed. - * @return - * - WL_SUCCESS if the disconnect process was started - * - WL_FAILURE if the driver was not connected - * - WL_RETRY if the driver is in the process of connecting. - * In this case the disconnect must be retried after - * the connection attempt has completed (resulted in a - * WL_EVENT_MEDIA_CONNECTED or a WL_EVENT_CONN_FAILURE event). - */ -wl_err_t wl_disconnect(void); - -/*! - * @brief Add a WEP encryption key to the device. - * - * Configure a key into the device. The key type (WEP-40, WEP-104) - * is determined by the size of the key (5 bytes for WEP-40, 13 bytes for WEP-104). - * - * @param key_idx The key index to set. Valid values are 0-3. - * @param key_len Length of key in bytes. Valid values are 5 and 13. - * @param key Key input buffer. - * @param bssid BSSID that the key applies to. If this is - * the broadcast BSSID then the key is configured - * as one of the default keys (not _the_ default key, - * this must be set by calling set_default_wep_key() - * after adding it). If the BSSID is a valid unicast - * bssid then the key is configured as a key-mapping - * key ( See 802.11-2007 8.2.1.3 ). - * @return - * - WL_SUCCESS on success. - * - WL_INVALID_LENGTH if the key length is bad. - * - WL_FAILURE on failure - */ -wl_err_t wl_add_wep_key(uint8_t key_idx, - size_t key_len, - const void *key, - struct wl_mac_addr_t *bssid); - -/*! @brief Set the default WEP key index. - * - * Select which WEP key to use for transmitted packets. - * For this to work correctly you must have added a WEP - * key with \a wl_add_wep_key() as a default key, using the - * same index as the one set in this call. - * @param key_idx Index of the key to make the default key. - * Valid values are 0-3. - * @return WL_SUCCESS or WL_FAILURE. - */ -wl_err_t wl_set_default_wep_key(uint8_t key_idx); - -/*! \brief Delete a WEP key. - * - * Deletes a WEP key from the driver. - * - * @param key_idx The index of the key to delete. Valid values are 0-3. - * @param bssid BSSID that the key applies to. If this is - * the broadcast BSSID then the key deleted is a default key. - * If the BSSID is a valid unicast bssid then the deleted - * key is a key-mapping key. - * @return WL_SUCCESS or WL_FAILURE - */ -wl_err_t wl_delete_wep_key(uint8_t key_idx, struct wl_mac_addr_t *bssid); - -/*! @brief Set a WPA/WPA2 passphase - * - * Associate a WPA/WPA2/RSN passphrase with a network. - * The number of passphrases that can be stored can - * vary but is always at least one. Passphrases can - * be added until \a wl_add_wpa_passphrase() returns - * WL_RESOURCES. - * - * @param net Network with which to associate the passphrase. - * @param passphrase Passphrase. Valid characters in a passphrase - * must lie between ASCII 32-126 (decimal). - * @param len Length of passphrase. Valid lengths are 8-63. - * @param enc_type Encryption type. If this is set to ENC_TYPE_AUTO - * then the most secure supported mode will be automatically - * selected. Normally you only need to pass something else here - * if you need to enforce picking a certain encryption mode when - * the network supports several modes and you don't want to use - * the best one. - * @param auth_mode Authentication mode. If this is set to AUTH_MODE_AUTO - * then the most secure mode will be automatically selected. - * Normally you only need to pass something else here if the network - * announces support for both WPA and WPA2/RSN and the passphrases are - * different. - * @return - * - WL_SUCCESS - * - WL_INVALID_ARGS if the passphrase length is invalid. - * - WL_RESOURCES if no more passphrases can be added. - */ -wl_err_t wl_set_passphrase(const struct wl_network_t *net, - const char *passphrase, - const size_t len, - const enum wl_enc_type enc_type, - const enum wl_auth_mode auth_mode); - -/*! @brief Remove a WPA/WPA2 passphase - * - * Remove a WPA/WPA2/RSN passphrase associated with a network. - * - * @param net Network with which to associate the passphrase. - * If net is NULL then all stored passphrases will be - * cleared. - * @return - * - WL_SUCCESS - * - WL_FAILURE if no passphrase was associated with the net. - */ -wl_err_t wl_clear_passphrase(struct wl_network_t *net); - - -/*! \brief Enable legacy power save mode - * - * Enable legacy power save mode. In legacy power save mode, the device - * will power down when idle. When connected, the device will wake up to - * receive beacon frames and any buffered data from the AP. The response - * time when legacy power save is enabled might therefore be as long as the - * AP beacon interval (mostly 100 ms). However, the throughput should not - * be affected. - * - * @return WL_SUCCESS or WL_FAILURE. - */ -wl_err_t wl_enable_ps(void); - -/*! \brief Disable legacy power save mode - * - * @return WL_SUCCESS or WL_FAILURE. - */ -wl_err_t wl_disable_ps(void); - -/*! \brief Configure power save parameters. - * - * @param use_ps_poll Use PS-Poll frames to retrieve buffered data. Any changes - * to this parameter will take effect upon next connect - * or when power save is enabled through wl_enable_ps(). - * Note: To retrieve one buffered packet, the ps poll scheme - * needs one ps poll packet to the AP instead of two null - * packets in the power management bit scheme. Ps poll avoids - * the overhead of traffic monitoring time in active mode as - * well. But since each ps poll request can make the AP - * release only one buffered packet, it is not the optimal - * scheme for applications with heavy downlink traffic. - * @param ps_traffic_timeout Timeout in [ms] to wait for more buffered data - * from AP. This setting has no effect if - * use_ps_poll is 1. Any changes to this parameter - * will take effect immediately. - * @param ps_delay Power save will de delayed ps_delay [ms] after connecting to - * an AP. - * @param rx_all_dtim If set to 1, then STA will wake up to listen to every - * beacon containing DTIM (delivery traffic indication messages) when - * connected. The actual DTIM interval is configured in the AP. - * If the DTIM interval, as configured in the AP, is larger than - * \a listen_interval, the STA will wakeup according to the - * \a listen_interval parameter. - * @param listen_interval The Listen Interval field is used to indicate to the - * AP how often a STA in power save mode wakes to listen - * to beacon frames. The value of this parameter is expressed in units - * of Beacon Interval. An AP may use the Listen Interval information in - * determining the lifetime of frames that it buffers for a STA. - * Any changes to this parameter will take effect upon next association. - * - * @return WL_SUCCESS or WL_FAILURE. - */ -wl_err_t wl_conf_ps(uint8_t use_ps_poll, - uint32_t ps_traffic_timeout, - uint32_t ps_delay, - uint8_t rx_all_dtim, - uint16_t listen_interval); - -/*! \brief Get the interface MAC address. - * - * Return the 802.3 MAC address of the network interface. - * - * @param buf Output buffer. It must be at least WL_MAC_ADDR_LENGTH - * bytes long and only the first WL_MAC_ADDR_LENGTH bytes - * will contain valid data. - * @return - * - WL_FAILURE if the interface is not up. - * - WL_SUCCESS - */ -wl_err_t wl_get_mac_addr(uint8_t* buf); - -/*! \brief Return the associated network. - * - * Return the description of the currently associated - * network, if any. - * - * @return The network description, or NULL of the driver - * is unconnected. - */ -struct wl_network_t* wl_get_current_network(void); -/*! @} */ - -/** \defgroup wl_data Data Transfer - * - * \brief Packet processing interface. - * - * Note that the examples in this group assumes that the transport library - * functions in the \a wl_transport group are being used. For more information, - * See the documentation for those functions in the \a wl_transport group. - -For the IP stack integration you need to intercept received packets so -they can be sent up the stack and to transmit packets coming down the -stack. - -By default the wl_api library discards all data packets. To receive -them the application must register a rx interrupt service routine (isr) -using the \a wl_register_rx_isr() function. - -\code -static void rx_isr(void* ctx) { - rx_pending = TRUE; -} -\endcode - -Since the rx_isr() function is only called in interrupt context, it is not -safe to perform the actual read directly from rx_isr(). If an OS is used, -the normal case is to signal a receiver thread to invoke the ip stack -read function to read the pending data. In a system that runs without an OS -(as in the example), a flag is set to indicate that wl_rx() can be invoked -from the ip stack read function next time the ip stack is polled. -The beginning of a ip stack read function can look like this - -\code -static void ip_stack_rx_pkt() { - char *pkt = malloc(MAX_PKT_SIZE); - uint16_t len = MAX_PKT_SIZE; - - if (p == NULL) { - app_error("Out of memory."); - return; - } - wl_rx(pkt, &len); - if (0 == len) { - app_error("Packet reception failed."); - free(pkt); - return - } -} -\endcode - -Since the ip_stack_rx_pkt() function should only be called when there is -actually a packet ready to read you do not have to check the return value -from \a wl_rx() since it only returns failure if there is no packet ready to -read. - -A packet arriving from the WiFi interface can be either a data -packet or a message from the WiFi hardware to the WiFi driver -(which is implemented by the wl_api library). This means that -wl_api must process every packet to decide if it is an internal -message or a data frame that -should be passed up to the application. Data packets are -prefixed with an extra header containing some administrative -information, and may be followed by padding bytes and so -wl_api also needs to strip the extra header and any padding -before the packet can be safely ingested by the IP stack. -All this happens in the function \a wl_process_rx() which \b must -be called on every packet received by a call to \a wl_rx(). - -Continuing the ip_stack_rx_pkt() example - -\code - { - char* stripped_pkt; - size_t stripped_pkt_len; - uint16_t vlan; - int status; - - status = wl_process_rx(pkt, - len, - &stripped_pkt, - &stripped_pkt_len, - &vlan); - if (WL_ABSORBED == status) { - // This is normal. The packet was a - // wl_api-internal message. - free(pkt); - return; - } - app_ip_stack_input(stripped_pkt, - stripped_pkt_len, - vlan); - free(pkt); - } -} -\endcode - -If \a wl_process_rx() decides that the packet was a command it processes -it and returns \a WL_ABSORBED to signal that the packet should -not be used by anyone else. Otherwise stripped_pkt is -pointing to the beginning of a 802.3 Ethernet frame of length -stripped_pkt_len. If the IP stack supports VLAN and QoS -the extra VLAN tag should be passed to the IP stack -together with the packet. For IP stacks without this support the VLAN tag -contents can safely be ignored, but it must still be filled in by \a wl_process_tx(). - -To register the receive isr - -\code - wl_register_rx_isr(rx_isr, NULL); -\endcode - -Transmitting data packets happens in a similar way but does not -require a callback/isr since the application/IP stack knows when it has -packets to send. - -\code -int ip_stack_tx_pkt(char *pkt, size_t len, uint16_t vlan_tag) { - int status; - char wlan_hdr[WL_HEADER_SIZE]; - // The packet must have an Ethernet header - if (len < ETHERNET_HEADER_SIZE) { - app_error("Invalid packet length"); - return 0; - } - hdr_len = sizeof wlan_hdr; - status = wl_process_tx(pkt, - ETHERNET_HEADER_SIZE, - len, - wlan_hdr, - vlan_tag, - NULL); - if ( WL_SUCCESS != status ) { - app_error("Packet processing failed"); - return 0; - } - // Transmit the header first - if (wl_tx(wlan_hdr, hdr_len) != WL_SUCCESS) { - app_error("Header transmission failed"); - return 0; - } - // Then transmit the data packet - if (wl_tx(pkt, len) != WL_SUCCESS) { - app_error("Packet transmission failed"); - return 0; - } -} -\endcode - -The final piece of the puzzle in the IP stack integration is -the MAC address of the WiFi interface - -\code - char mac_addr[WL_MAC_ADDR_LENGTH]; - - wl_get_mac_addr(mac_addr); - ip_stack_set_mac_address(mac_addr); -\endcode - - * @{ - */ - -/*! Size of the wl_api packet header */ -#ifdef WFE_6_12 -#define WL_HEADER_SIZE 16 -#else -#define WL_HEADER_SIZE 14 -#endif - -/*! Maximum packet size (including wl_api headers and paddings) - * - * Maximum packet size is obtained with the following data: - * - * 1500 bytes of Ethernet payload (MTU) + 14 bytes of Ethernet header + - * WL_HEADER_SIZE of wl header. This data is then size-aligned to 16. - * - */ -#define WL_MAX_PKT_LEN 1536 - - -/*! - * \brief Process rx packet. - * - * Processes a raw rx packet by unencrypting it (if necessary) - * and stripping headers so as to output a 802.3 frame. - * - * wl_process_rx() will strip bytes both from the head and from the tail. - * - * Upon return from wl_process_rx(), the pointer at stripped_pkt will - * point to the start of the Ethernet header, hence adjusting the offset - * by WL_HEADER_LEN bytes. Any padding (added by the wifi device) will - * be removed from the tail of the packet, hence making len smaller. - * - * The wl_api library of the device will not perform any Ethernet padding - * removal. The padding removal performed by wl_process_rx() is only for - * the padding used in the protocol shared by the host and the device. - * This padding is mainly there to ensure that the host does not have to - * deal with rx of odd-sized data buffers (which some DMA's have problems - * to handle). - * - * @param pkt Input buffer (raw packet) - * @param pkt_len Length of the input buffer (in bytes) - * @param stripped_pkt Pointer to the packet with the - * transport header stripped. - * @param stripped_pkt_len Length of the stripped packet. - * @param vlanid_prio VLAN ID and 802.1p priority value - * using following format: - *
    - *        1
    - *  5|432109876543|210
    - *  -+------------+---
    - *  0|   VLANID   |PRI
    - * 
    - * - * @returns - * - WL_FAILURE - * - WL_ABSORBED if the packet was an internal driver command - * and not a proper data packet. The packet should - * be freed and the stripped_pkt will not point - * to a valid packet. - * - WL_SUCCESS - */ -wl_err_t wl_process_rx(char *pkt, size_t pkt_len, char **stripped_pkt, - size_t *stripped_pkt_len, uint16_t *vlanid_prio); - -/*! \brief Process tx packet. - * - * Prepare tx packet for transmission. - * - * This function is typically used only by the TCP/IP stack driver. - * - * Takes a Ethernet II frame header and generates a message passing header - * for it. - * - * The caller should ensure that any frames injected into wl_process_tx() - * are proper Ethernet frames. The wl_api library or the device will not - * perform any Ethernet padding if the frames are too short. - * - * The Ethernet header is assumed to have the following layout : - * ... - * The rest of the Ethernet header buffer (if any) is ignored. - * - * A note on the TX packet representation : - * If your TX packets are simple contiguous buffers you can ignore - * the rest of this note and pass NULL in parameter \a pkt_handle. - * A TX packet may have a more complex structure than a RX packet - * (which must be a contiguous, flat buffer). The IP stack may - * for example represent a packet as a linked list of buffers where - * the Ethernet header, the IP header and other headers, are represented - * by separate buffers. In some cases, such as when the driver is - * running in SoftAP mode, a TX packet has to be copied and queued - * internally for later processing and to support this when packets - * have a complicated structure a special data access function can - * be registered. See \a wl_register_pkt_read_cb() for details. - * If you use \a wl_process_tx() with non-simple packets you - * should pass a handle to the packet in parameter \a pkt_handle - * and register an access function with \a wl_register_pkt_read_cb(). - * - * @param eth_hdr Input buffer (Ethernet header) - * @param eth_hdr_len Input buffer length (must be >= 14) - * This is usually the same as pkt_len unless e.g linked list or buffers - * chained in other ways are being used. - * @param pkt_len Length of the complete data packet (in bytes) - * @param hdr Pointer to the header buffer (must be - * allocated by the caller). The length of the buffer - * must be at least WL_HEADER_SIZE bytes. - * @param vlanid_prio VLAN ID and 802.1p priority value - * using following format: - *
    - *        1
    - *  5|432109876543|210
    - *  -+------------+---
    - *  0|   VLANID   |PRI
    - * 
    - * Ignored for legacy association (no WMM) - * @param pkt_handle A handle to the complete packet. If this parameter - * is NULL then \a eth_hdr is expected to point to the whole packet - * in a single contiguous buffer (the default). If a different packet - * representation is used this parameter should be a handle to the - * complete packet and will be passed unmodified to the data - * access function that was registered with \a wl_register_pkt_read_cb(). - * - * @returns - * - WL_FAILURE - * - WL_RESOURCES if packet can not be processed at the moment. - * The caller must either drop the packet or try - * retransmit it later. - * - WL_AVAIL if network not available - * - WL_SUCCESS if packet is ready for transmission through wl_tx(). - */ -wl_err_t wl_process_tx(char *eth_hdr, - size_t eth_hdr_len, - size_t pkt_len, - char *hdr, - uint16_t vlanid_prio, - void *pkt_handle); - - -/*! \brief Get current TX and RX rate used for data transfer - * - * During transmission and reception of data, the actual rate used will depend - * on the signal quality. This function can be used to get the actual rate used - * for the last tx and rx data. - * - * @param tx will hold the tx rate upon successful return. - * @param rx will hold the rx rate upon successful return. - * - * @return - * - WL_SUCCESS on success - * - WL_FAILURE on failure. - */ -wl_err_t wl_get_rate(wl_rate_t *tx, wl_rate_t *rx); - - -/*! @} */ /* End wl_data group */ - - -/** \defgroup wl_transport Transport interface - * - * \brief Low level transport interface. - * - * These functions access the low level transport driver which makes - * the application independent of the actual physical transport - * layer (usually SDIO or SPI). - * - -For applications running on an real time kernel or without an -operating system, the provided transport library will fit right into the -application design. However, when running on a more complex operating system -(such as windows or linux) which has its own transport primitivies and -components (and probably its own IP stack) it might be preferred to design a -custom transport library for that specific environment. Therefore, these -transport interface functions are fully optional. - - - * @{ - */ - -#define WL_RX_MIN_PKT_LEN 32 - - -/*! \brief WiFi event callback. - * - * This function is invoked in interrupt context when there is new data - * available from the mac. This function is supplied by the user - * of the API. - * - * This function is typically used only by the TCP/IP stack driver. - * - * @param ctx A context handle. This handle is passed - * untouched to the callback and has the same value - * as the context registered with the callback in - * wl_register_event_cb(). - */ -typedef void (*wl_rx_isr_t) (void* ctx); - - -/*! \brief Firmware access function. - * - * Reads the WiFi firmware image. This function is supplied by - * the user of this API since storage for the firmware image is - * managed by the application. - * - * This function should read the specified number of bytes of the - * firmware image starting at the specified \a offset. The number of - * bytes to read is given in \a len. Upon return, \a buf should point - * to a buffer which holds the read data and the number of valid bytes - * in \a buf is returned from the call. - * - * This function will be called repeatedly until the complete firmware - * image has been read. - * - * This function may be called again at any time while the driver is - * running to download further pieces of the WiFi firmware image as - * needed by the runtime requirements. This will normally only happen - * when the driver switches between networks of different kinds such - * as from WEP to WPA, or from ESS to IBSS for example. - * - * For convenience, any time a firmware chunk has been completely - * downloaded this function will be called once with the \a buf - * parameter set to NULL to indicate that no more data is needed right - * now and that any dynamically allocated buffers which holds firmware - * data can be freed without much performance impact. - * - * @param ctx Opaque context pointer as provided to \a wl_init() that will be - * passed back to the callback. - * @param buf Should be assigned the address of the buffer holding the read - * data upon return. This parameter can be NULL which indicates - * that there are no further immediately pending accesses. - * @param offset Offset in bytes from the start of the firmware image. - * Data should be copied into buf starting at \a offset. - * @param len The number of bytes to copy into \a buf. - * @return The number of bytes copied into buf. This may be smaller than - * \len if the implementation of the function so requires. - */ -typedef size_t (wl_fw_read_cb_t)(void *ctx, - const uint8_t **buf, - size_t offset, - size_t len); - - -/*! \brief Initialize the transport interface and download the WiFi firmware - * image to the device. - * - * This operation will proceed synchronously until the firmware is completely - * downloaded. wl_init() should be called after this function has returned to - * perform device initialization. - * - * @param fw_read_cb callback function to invoke during firmware download. - * @param ctx Opaque context pointer that will be passed to the callbacks - * when they are invoked. This parameter is never - * accessed by the API. - * @param mode will hold the host attention mode used by the transport layer. - * This parameter can be passed directly to \a wl_init(). - * - * @return - * - * - WL_CARD_FAILURE if the wl hardware device is not available - * - WL_FIRMWARE_INVALID if the firmware obtained through fw_read_cb is - * invalid. - * - WL_OOM if the necessary memory could not be allocated. - */ -wl_err_t wl_transport_init(wl_fw_read_cb_t *fw_read_cb, - void *ctx, - enum wl_host_attention_mode *mode); - -/*! \brief WiFi driver forward progress function - * - * This function must be called in polled environments to - * ensure forward progress. The call can be made as often as possible from - * the main application loop. However, the call will not have any effect unless - * there is an interrupt pending from the hardware. - * - * In interrupt mode, wl_poll() must be called if no interrupt - * handler is registered through wl_register_rx_isr(). When an interrupt - * handler is registered, it is no longer necessary to invoke wl_poll(). - * - * Note that this function should not be invoked from interrupt context. - * - */ -void wl_poll(void); - - -/*! \brief Register RX callback - * - * Register function to be called by the low level transport driver - * when a new packet is available or when there is a state change in the - * data path. When invoked, any pending data can be fetched by calling wl_rx(). - * - * This function is typically used only by the TCP/IP stack driver. - * Note, the registered function is called in interrupt context. - * - * @param isr rx interrup handler. - * @param ctx Opaque context pointer that is passed unmodified to the - * rx_cb callback when it is invoked. - * - * @return WL_SUCCESS - */ -wl_err_t wl_register_rx_isr(wl_rx_isr_t isr, void* ctx); - - -/*! \brief Read pending packet - * - * Read a pending packet from the low level transport driver. - * The read packet must be passed to the wl_process_rx() function - * for proper driver operation. - * - * @param buf Buffer to read the packet into. This buffer must be - * at least WL_MAX_PKT_LEN bytes long. - * @param len Length of buf in bytes. Contains the length of the - * read packet in bytes on output. - * @return - * - WL_FAILURE if no RX packet is pending. - * - WL_SUCCESS - */ -wl_err_t wl_rx(uint8_t* buf, uint16_t* len); - -/*! \brief Send processed tx packet - * - * Send a packet to the low level transport driver. - * This packet has to have been successfully processed by the - * wl_process_tx() function. - * - * @param buf Buffer to send. - * @param len Length of buf in bytes. - * - * @return - * - WL_FAILURE if the interface is not ready to send. - * - WL_SUCCESS if the packet was successfully transmitted. - */ -wl_err_t wl_tx(const uint8_t* buf, uint16_t len); - - -/*! \brief Configure data alignment - * - * This function can be used if the host SDIO/SPI controller has certain - * requirements on the data transfer sizes that can be used on the SDIO/SPI bus. - * - * If the txsize parameter is non-zero, additional padding data should be added - * when performing the low level transfer of data buffer of sizes that are not - * a multiple of the size_align parameter. See \ref wl_sdio and \ref wl_spi for - * more information. - * - * @param txsize will configure the size alignment for tx data. - * - */ -void wl_conf_alignment(uint8_t txsize); - - -/*! @} */ /* End wl_transport group */ - - -/** \defgroup wl_custom Custom environment support - * - * \brief Support for custom environments - * - * These functions should only be used in cases where the transport library is - * not used at all. This usually applies to operating systems and environments - * where there already exists a transport layer framework, e.g. linux or - * windows. - * - * - -Note that the \a wl_poll() function is part of the transport library. Therefore, -it should not be used in custom environments. Therefore, it is necessary to -implement a custom polling or interrupt based scheme to ensure that any -incoming packets are processed by the core. - - * @{ - */ - - /*! \brief Wakeup callback function. - * - * Invoked when the WiFi device should wake up from power save mode. - * This function should send the proper commands to the device. - * - * Note that this type should only be used in custom environments, where - * the transport library is not used. - * - * @param ctx Opaque context pointer as provided to \a wl_register_wakeup_cb() - * that will be passed back to the callback. - * @param wakeup indicates whether wakeup should be set or cleared in the - * device. - */ -typedef void (wl_wakeup_cb_t)(void* ctx, uint8_t wakeup); - -/*! \brief Register wakeup callback function. - * - * Register a function that will be invoked when the WiFi device should wake - * up from power save mode. - * - * Note that this function should only be used in custom environments, where - * the transport library is not used. - * - * @param wakeup_cb Will be invoked when the device should wakeup from sleep - * mode. - * @param ctx Opaque context pointer that will be passed back to the callback. - */ -void wl_register_wakeup_cb(wl_wakeup_cb_t *wakeup_cb, void *ctx); - - -/*! \brief Management tx callback function. - * - * Invoked when the a management message should be transmitted to the - * WiFi device. This function should ensure that the message is passed through - * to the device and should never fail. - * - * Note that this type should only be used in custom environments, where - * the transport library is not used. - * - * @param ctx Opaque context pointer as provided to \a wl_register_mgmt_tx_cb() - * that will be passed back to the callback. - * @param buf Points to the buffer which holds the management data, - * @param len Size of the buffer. - */ -typedef void (wl_mgmt_tx_cb_t)(void *ctx, const uint8_t *buf, uint16_t len); - - -/*! \brief Register management tx callback function - * - * Register a function that will be invoked when a management message should - * be transmitted to the device. - * - * Note that this function should only be used in custom environments, where - * the transport library is not used. - * - * IMPORTANT : In a custom environment without a transport library \a - * wl_register_mgmt_tx_cb() \b must have been called - * before \a wl_fw_download() is called since \a - * wl_fw_download() depends on the \a mgmt_tx_cb() to send - * the firmware data to the WiFi chip. - * - * @param mgmt_tx_cb The callback function to invoke. - * @param ctx Opaque context pointer that will be passed back to the callback. - */ -void wl_register_mgmt_tx_cb(wl_mgmt_tx_cb_t *mgmt_tx_cb, void *ctx); - - - -/*! \brief Download the WiFi firmware image to the device. - * - * This operation will proceed synchronously until the firmware is completely - * downloaded. wl_init() should be called after this function has returned to - * perform device initialization. This function depends on \a - * wl_register_mgmt_tx_cb(). See that function for details. - * - * @param ctx Opaque context pointer that will be passed to the callbacks - * when they are invoked. This parameter is never - * accessed by the API. - * @param fw_read_cb callback function to invoke during firmware download. - * - * @return - * - * - WL_CARD_FAILURE if the wl hardware device is not available - * - WL_FIRMWARE_INVALID if the firmware obtained through fw_read_cb is - * invalid. - * - WL_OOM if the necessary memory could not be allocated. - */ - wl_err_t wl_fw_download(wl_fw_read_cb_t *fw_read_cb, void *ctx); - - - -/*! @} */ /* End wl_custom group */ - - - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h deleted file mode 100644 index 5be5f376263..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_fw.h +++ /dev/null @@ -1,19287 +0,0 @@ -/* - * Programming interface for wl_api. - * Copyright (C) 2010 HD Wireless AB - * - * You should have received a copy of the license along with this library. - */ - -#ifndef WITHOUT_STDINT -#include -#endif -const uint8_t fw_buf[154188] = { - 0x10, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x10, 0x61, 0x04, 0x00, - 0x38, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x61, 0x04, 0x00, - 0x30, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x30, 0x61, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x61, 0x04, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xee, - 0xee, 0xee, 0x18, 0xf0, 0x9f, 0xe5, 0x18, 0xf0, - 0x9f, 0xe5, 0x18, 0xf0, 0x9f, 0xe5, 0x18, 0xf0, - 0x9f, 0xe5, 0x00, 0x00, 0xa0, 0xe1, 0x18, 0xf0, - 0x9f, 0xe5, 0x18, 0xf0, 0x9f, 0xe5, 0x44, 0x00, - 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0xb4, 0x08, - 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0xb4, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x08, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0xe1, 0x1f, 0x00, 0xc0, 0xe3, - 0x13, 0x00, 0x80, 0xe3, 0xc0, 0x00, 0x80, 0xe3, - 0x00, 0xf0, 0x2f, 0xe1, 0x1c, 0xf0, 0x9f, 0xe5, - 0x3d, 0x02, 0x00, 0xeb, 0x5a, 0x02, 0x00, 0xeb, - 0x8d, 0x02, 0x00, 0xeb, 0x01, 0x00, 0x8f, 0xe2, - 0x10, 0xff, 0x2f, 0xe1, 0x41, 0xf0, 0xde, 0xfb, - 0x01, 0xf0, 0xdc, 0xfd, 0x3c, 0x00, 0x78, 0x00, - 0x00, 0x00, 0xfe, 0xe7, 0x00, 0x00, 0x5c, 0x00, - 0x00, 0x00, 0x78, 0x47, 0xc0, 0x46, 0x01, 0x00, - 0x00, 0xea, 0x78, 0x47, 0xc0, 0x46, 0x17, 0x00, - 0x00, 0xea, 0x8c, 0x11, 0x9f, 0xe5, 0x00, 0x20, - 0x91, 0xe5, 0x00, 0x30, 0x0f, 0xe1, 0x84, 0x11, - 0x9f, 0xe5, 0xfd, 0x20, 0xa1, 0xe8, 0x80, 0x01, - 0x9f, 0xe5, 0x80, 0x21, 0x9f, 0xe5, 0x01, 0x20, - 0x42, 0xe0, 0x0d, 0x00, 0x40, 0xe0, 0x3c, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x50, 0xe1, - 0x28, 0x00, 0x00, 0xaa, 0x68, 0x01, 0x9f, 0xe5, - 0x0d, 0x00, 0x50, 0xe1, 0x02, 0x00, 0x00, 0xba, - 0x04, 0x20, 0x10, 0xe4, 0x04, 0x20, 0x81, 0xe4, - 0xfa, 0xff, 0xff, 0xea, 0x58, 0x11, 0x9f, 0xe5, - 0x58, 0x01, 0x9f, 0xe5, 0x00, 0x00, 0x81, 0xe5, - 0x3c, 0x11, 0x9f, 0xe5, 0x50, 0x01, 0x9f, 0xe5, - 0x00, 0x00, 0x81, 0xe5, 0x1e, 0xff, 0x2f, 0xe1, - 0x3c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x48, 0x11, - 0x9f, 0xe5, 0x00, 0x00, 0x91, 0xe5, 0x24, 0x11, - 0x9f, 0xe5, 0x00, 0x00, 0x81, 0xe5, 0x2c, 0x11, - 0x9f, 0xe5, 0x38, 0x01, 0x9f, 0xe5, 0x00, 0x00, - 0x81, 0xe5, 0x1e, 0xff, 0x2f, 0xe1, 0x74, 0x02, - 0x00, 0xeb, 0x10, 0x01, 0x9f, 0xe5, 0x28, 0x11, - 0x9f, 0xe5, 0x04, 0x20, 0x91, 0xe4, 0x04, 0x20, - 0x00, 0xe4, 0x04, 0x21, 0x9f, 0xe5, 0x02, 0x00, - 0x51, 0xe1, 0x3c, 0x00, 0x2c, 0x01, 0x00, 0x00, - 0xfa, 0xff, 0xff, 0x1a, 0xf0, 0x10, 0x9f, 0xe5, - 0xfd, 0x20, 0xb1, 0xe8, 0x03, 0xf0, 0x2f, 0xe1, - 0xe0, 0x10, 0x9f, 0xe5, 0x00, 0x20, 0x81, 0xe5, - 0xe8, 0x10, 0x9f, 0xe5, 0xf4, 0x20, 0x9f, 0xe5, - 0x00, 0x20, 0x81, 0xe5, 0x02, 0x10, 0x80, 0xe2, - 0x00, 0x00, 0x20, 0xe0, 0x01, 0x00, 0x40, 0xe2, - 0x11, 0xff, 0x2f, 0xe1, 0x01, 0x00, 0x8f, 0xe2, - 0x10, 0xff, 0x2f, 0xe1, 0x3c, 0x00, 0x68, 0x01, - 0x00, 0x00, 0x01, 0xf0, 0x9c, 0xf8, 0x78, 0x47, - 0x00, 0x00, 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, - 0x2f, 0xe1, 0x01, 0xf0, 0x94, 0xf8, 0x78, 0x47, - 0x00, 0x00, 0x03, 0x00, 0x2d, 0xe9, 0x00, 0x10, - 0x0f, 0xe1, 0x00, 0x10, 0x80, 0xe5, 0xb8, 0x10, - 0x9f, 0xe5, 0x04, 0x10, 0x80, 0xe5, 0x00, 0x10, - 0xa0, 0xe1, 0x10, 0x00, 0x80, 0xe2, 0xfc, 0x1f, - 0xa0, 0xe8, 0x00, 0x20, 0xa0, 0xe1, 0x3c, 0x00, - 0xa4, 0x01, 0x00, 0x00, 0x01, 0x30, 0xa0, 0xe1, - 0x03, 0x00, 0xbd, 0xe8, 0x08, 0x00, 0x83, 0xe5, - 0x0c, 0x10, 0x83, 0xe5, 0xd3, 0x00, 0xa0, 0xe3, - 0x00, 0xf0, 0x21, 0xe1, 0x00, 0x60, 0xa2, 0xe8, - 0x00, 0x10, 0x4f, 0xe1, 0x04, 0x10, 0x82, 0xe4, - 0xd2, 0x00, 0xa0, 0xe3, 0x00, 0xf0, 0x21, 0xe1, - 0x00, 0x60, 0xa2, 0xe8, 0x00, 0x10, 0x4f, 0xe1, - 0x04, 0x10, 0x82, 0xe4, 0xd1, 0x00, 0xa0, 0xe3, - 0x3c, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, - 0x21, 0xe1, 0x00, 0x7f, 0xa2, 0xe8, 0x00, 0x10, - 0x4f, 0xe1, 0x04, 0x10, 0x82, 0xe4, 0xd7, 0x00, - 0xa0, 0xe3, 0x00, 0xf0, 0x21, 0xe1, 0x00, 0x60, - 0xa2, 0xe8, 0x00, 0x10, 0x4f, 0xe1, 0x04, 0x10, - 0x82, 0xe4, 0xdb, 0x00, 0xa0, 0xe3, 0x00, 0xf0, - 0x21, 0xe1, 0x00, 0x60, 0xa2, 0xe8, 0x00, 0x10, - 0x4f, 0xe1, 0x00, 0x10, 0x82, 0xe5, 0x00, 0x00, - 0x93, 0xe5, 0x3c, 0x00, 0x1c, 0x02, 0x00, 0x00, - 0x00, 0xf0, 0x2f, 0xe1, 0x1e, 0xff, 0x2f, 0xe1, - 0x20, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, - 0x20, 0xee, 0x01, 0x00, 0xd8, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0xf0, 0x9f, 0xe5, - 0x10, 0x01, 0x00, 0x00, 0x08, 0x03, 0x00, 0x00, - 0xee, 0xee, 0xee, 0xee, 0x24, 0x03, 0x00, 0x00, - 0x20, 0x02, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x63, 0x1c, 0x0b, 0x4d, 0x3c, 0x00, 0x58, 0x02, - 0x00, 0x00, 0x01, 0xd1, 0x6c, 0x69, 0x10, 0xe0, - 0x00, 0xf0, 0x6c, 0xfb, 0x09, 0x48, 0xff, 0xf7, - 0x0c, 0xff, 0xec, 0x60, 0x08, 0x4a, 0x51, 0x68, - 0x50, 0x68, 0x88, 0x42, 0xfc, 0xd0, 0x02, 0x20, - 0x28, 0x70, 0x01, 0x21, 0x8a, 0x20, 0x01, 0xf0, - 0x12, 0xf8, 0x20, 0x1c, 0xb0, 0xbd, 0x30, 0x00, - 0x07, 0x00, 0x51, 0x02, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x00, 0xb0, 0xb5, 0x05, 0x1c, 0x3c, 0x00, - 0x94, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0xf0, - 0x50, 0xfb, 0x14, 0x48, 0xff, 0xf7, 0xf0, 0xfe, - 0x13, 0x49, 0x14, 0x48, 0xc1, 0x60, 0x01, 0x21, - 0x13, 0x4a, 0x49, 0x03, 0x91, 0x60, 0x13, 0x49, - 0xca, 0x78, 0x08, 0x23, 0x9a, 0x43, 0xca, 0x70, - 0xca, 0x78, 0x04, 0x23, 0x1a, 0x43, 0xca, 0x70, - 0x6b, 0x1c, 0x0d, 0xd0, 0x0e, 0x4b, 0x5a, 0x68, - 0x59, 0x68, 0x91, 0x42, 0xfc, 0xd0, 0xbe, 0x21, - 0x3c, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x19, 0x73, - 0x19, 0x7a, 0x11, 0x22, 0x91, 0x43, 0x19, 0x72, - 0x19, 0x7a, 0xc9, 0x07, 0xfc, 0xd4, 0x02, 0x21, - 0x01, 0x70, 0xff, 0xf7, 0xd0, 0xfe, 0x20, 0x1c, - 0xb0, 0xbd, 0x91, 0x02, 0x00, 0x00, 0xff, 0xff, - 0xff, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x03, 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, 0x47, - 0x08, 0x47, 0x10, 0x47, 0x18, 0x47, 0x20, 0x47, - 0x28, 0x47, 0x30, 0x47, 0x38, 0x47, 0x10, 0xb5, - 0x04, 0x1c, 0x10, 0x1c, 0x00, 0xf0, 0x23, 0xf9, - 0x03, 0xc4, 0x10, 0xbc, 0x08, 0xbc, 0x18, 0x47, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x03, 0x00, 0x00, - 0x10, 0xb4, 0x04, 0x2a, 0x0e, 0xd3, 0x03, 0x1c, - 0x0b, 0x43, 0x9b, 0x07, 0x0a, 0xd1, 0x08, 0xc8, - 0x10, 0xc9, 0xa3, 0x42, 0x02, 0xd1, 0x04, 0x3a, - 0x04, 0x2a, 0xf8, 0xd2, 0xa3, 0x42, 0x01, 0xd0, - 0x04, 0x38, 0x04, 0x39, 0x00, 0x2a, 0x02, 0xd1, - 0x00, 0x20, 0x10, 0xbc, 0x70, 0x47, 0xd3, 0x07, - 0x01, 0xd5, 0x01, 0x32, 0x05, 0xe0, 0x03, 0x78, - 0x0c, 0x78, 0x01, 0x31, 0x3c, 0x00, 0x38, 0x04, - 0x00, 0x00, 0x01, 0x30, 0xa3, 0x42, 0x07, 0xd1, - 0x03, 0x78, 0x0c, 0x78, 0x01, 0x31, 0x01, 0x30, - 0xa3, 0x42, 0x01, 0xd1, 0x02, 0x3a, 0xf1, 0xd1, - 0x18, 0x1b, 0xe9, 0xe7, 0x00, 0x00, 0x78, 0x47, - 0x00, 0x00, 0x00, 0x20, 0xa0, 0xe3, 0x04, 0x00, - 0x51, 0xe3, 0x08, 0x00, 0x00, 0x3a, 0x03, 0xc0, - 0x10, 0xe2, 0x0d, 0x00, 0x00, 0x0a, 0x04, 0xc0, - 0x6c, 0xe2, 0x02, 0x00, 0x5c, 0xe3, 0x3c, 0x00, - 0x74, 0x04, 0x00, 0x00, 0x01, 0x20, 0xc0, 0xe4, - 0x01, 0x20, 0xc0, 0xa4, 0x01, 0x20, 0xc0, 0xc4, - 0x0c, 0x10, 0x41, 0xe0, 0x06, 0x00, 0x00, 0xea, - 0x81, 0xcf, 0xb0, 0xe1, 0x01, 0x20, 0xc0, 0x24, - 0x01, 0x20, 0xc0, 0x24, 0x01, 0x20, 0xc0, 0x44, - 0x1e, 0xff, 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, - 0x00, 0x20, 0xa0, 0xe3, 0x00, 0x40, 0x2d, 0xe9, - 0x02, 0x30, 0xa0, 0xe1, 0x02, 0xc0, 0xa0, 0xe1, - 0x3c, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x02, 0xe0, - 0xa0, 0xe1, 0x20, 0x10, 0x51, 0xe2, 0x0c, 0x50, - 0xa0, 0x28, 0x0c, 0x50, 0xa0, 0x28, 0x20, 0x10, - 0x51, 0x22, 0xfb, 0xff, 0xff, 0x2a, 0x01, 0x1e, - 0xb0, 0xe1, 0x0c, 0x50, 0xa0, 0x28, 0x0c, 0x00, - 0xa0, 0x48, 0x00, 0x40, 0xbd, 0xe8, 0x01, 0x11, - 0xb0, 0xe1, 0x04, 0x20, 0x80, 0x24, 0x1e, 0xff, - 0x2f, 0x01, 0x01, 0x20, 0xc0, 0x44, 0x01, 0x20, - 0xc0, 0x44, 0x3c, 0x00, 0xec, 0x04, 0x00, 0x00, - 0x40, 0x04, 0x11, 0xe3, 0x01, 0x20, 0xc0, 0x14, - 0x1e, 0xff, 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, - 0x03, 0x00, 0x52, 0xe3, 0x3e, 0x00, 0x00, 0x9a, - 0x03, 0xc0, 0x10, 0xe2, 0x08, 0x00, 0x00, 0x0a, - 0x01, 0x30, 0xd1, 0xe4, 0x02, 0x00, 0x5c, 0xe3, - 0x0c, 0x20, 0x82, 0xe0, 0x01, 0xc0, 0xd1, 0x94, - 0x01, 0x30, 0xc0, 0xe4, 0x01, 0x30, 0xd1, 0x34, - 0x04, 0x20, 0x42, 0xe2, 0x3c, 0x00, 0x28, 0x05, - 0x00, 0x00, 0x01, 0xc0, 0xc0, 0x94, 0x01, 0x30, - 0xc0, 0x34, 0x03, 0x30, 0x11, 0xe2, 0x1e, 0x00, - 0x00, 0x0a, 0x04, 0x20, 0x52, 0xe2, 0x2f, 0x00, - 0x00, 0x3a, 0x03, 0xc0, 0x31, 0xe7, 0x02, 0x00, - 0x53, 0xe3, 0x08, 0x00, 0x00, 0x0a, 0x0f, 0x00, - 0x00, 0x8a, 0x2c, 0x34, 0xa0, 0xe1, 0x04, 0xc0, - 0xb1, 0xe5, 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x3c, - 0x83, 0xe1, 0x04, 0x30, 0x80, 0xe4, 0x3c, 0x00, - 0x64, 0x05, 0x00, 0x00, 0xf9, 0xff, 0xff, 0x2a, - 0x01, 0x10, 0x81, 0xe2, 0x23, 0x00, 0x00, 0xea, - 0x2c, 0x38, 0xa0, 0xe1, 0x04, 0xc0, 0xb1, 0xe5, - 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x38, 0x83, 0xe1, - 0x04, 0x30, 0x80, 0xe4, 0xf9, 0xff, 0xff, 0x2a, - 0x02, 0x10, 0x81, 0xe2, 0x1b, 0x00, 0x00, 0xea, - 0x2c, 0x3c, 0xa0, 0xe1, 0x04, 0xc0, 0xb1, 0xe5, - 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x34, 0x83, 0xe1, - 0x3c, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x04, 0x30, - 0x80, 0xe4, 0xf9, 0xff, 0xff, 0x2a, 0x03, 0x10, - 0x81, 0xe2, 0x13, 0x00, 0x00, 0xea, 0x78, 0x47, - 0x00, 0x00, 0x10, 0x40, 0x2d, 0xe9, 0x20, 0x20, - 0x52, 0xe2, 0x05, 0x00, 0x00, 0x3a, 0x18, 0x50, - 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, 0x18, 0x50, - 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, 0x20, 0x20, - 0x52, 0x22, 0xf9, 0xff, 0xff, 0x2a, 0x02, 0xce, - 0xb0, 0xe1, 0x3c, 0x00, 0xdc, 0x05, 0x00, 0x00, - 0x18, 0x50, 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, - 0x18, 0x00, 0xb1, 0x48, 0x18, 0x00, 0xa0, 0x48, - 0x10, 0x40, 0xbd, 0xe8, 0x02, 0xcf, 0xb0, 0xe1, - 0x04, 0x30, 0x91, 0x24, 0x04, 0x30, 0x80, 0x24, - 0x1e, 0xff, 0x2f, 0x01, 0x82, 0x2f, 0xb0, 0xe1, - 0x01, 0x20, 0xd1, 0x44, 0x01, 0x30, 0xd1, 0x24, - 0x01, 0xc0, 0xd1, 0x24, 0x01, 0x20, 0xc0, 0x44, - 0x01, 0x30, 0xc0, 0x24, 0x3c, 0x00, 0x18, 0x06, - 0x00, 0x00, 0x01, 0xc0, 0xc0, 0x24, 0x1e, 0xff, - 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, 0xff, 0x30, - 0x01, 0xe2, 0x02, 0x10, 0xa0, 0xe1, 0x03, 0x24, - 0x83, 0xe1, 0x02, 0x28, 0x82, 0xe1, 0x88, 0xff, - 0xff, 0xea, 0x78, 0x47, 0x00, 0x00, 0x80, 0x24, - 0x10, 0xe2, 0x00, 0x00, 0x60, 0x42, 0x41, 0x30, - 0x32, 0xe0, 0x00, 0x10, 0x61, 0x22, 0xa1, 0xc1, - 0x70, 0xe0, 0x20, 0x00, 0x00, 0x3a, 0x3c, 0x00, - 0x54, 0x06, 0x00, 0x00, 0x21, 0xc4, 0x70, 0xe0, - 0x0f, 0x00, 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, - 0xff, 0x24, 0x82, 0xe3, 0x21, 0xc2, 0x70, 0xe0, - 0x17, 0x00, 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, - 0x09, 0x00, 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, - 0xff, 0x28, 0x82, 0xe3, 0x21, 0xc4, 0x70, 0xe0, - 0x00, 0x04, 0xa0, 0x21, 0xff, 0x2c, 0x82, 0x23, - 0x21, 0xc2, 0x70, 0xe0, 0x0e, 0x00, 0x00, 0x3a, - 0x3c, 0x00, 0x90, 0x06, 0x00, 0x00, 0x00, 0xc0, - 0x70, 0xe2, 0x83, 0x00, 0x00, 0x2a, 0x20, 0x04, - 0xa0, 0x21, 0xa1, 0xc3, 0x70, 0xe0, 0x80, 0x13, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc3, - 0x70, 0xe0, 0x00, 0x13, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0xa1, 0xc2, 0x70, 0xe0, 0x80, 0x12, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc2, - 0x70, 0xe0, 0x00, 0x12, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x3c, 0x00, 0xcc, 0x06, 0x00, 0x00, - 0xa1, 0xc1, 0x70, 0xe0, 0x80, 0x11, 0x41, 0x20, - 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc1, 0x70, 0xe0, - 0x00, 0x11, 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, - 0xa1, 0xc0, 0x70, 0xe0, 0x80, 0x10, 0x41, 0x20, - 0x02, 0x20, 0xa2, 0xe0, 0x01, 0xc0, 0x70, 0xe0, - 0x00, 0x10, 0x41, 0x20, 0x02, 0x20, 0xb2, 0xe0, - 0xe5, 0xff, 0xff, 0x2a, 0xc3, 0x0f, 0x32, 0xe0, - 0xa3, 0x0f, 0x80, 0xe0, 0x3c, 0x00, 0x08, 0x07, - 0x00, 0x00, 0x00, 0x10, 0x61, 0x22, 0x1e, 0xff, - 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, 0x00, 0x20, - 0xa0, 0xe3, 0xa1, 0xc1, 0x70, 0xe0, 0x20, 0x00, - 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, 0x0f, 0x00, - 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, 0xff, 0x24, - 0x82, 0xe3, 0x21, 0xc2, 0x70, 0xe0, 0x17, 0x00, - 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, 0x09, 0x00, - 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, 0x3c, 0x00, - 0x44, 0x07, 0x00, 0x00, 0xff, 0x28, 0x82, 0xe3, - 0x21, 0xc4, 0x70, 0xe0, 0x00, 0x04, 0xa0, 0x21, - 0xff, 0x2c, 0x82, 0x23, 0x21, 0xc2, 0x70, 0xe0, - 0x0e, 0x00, 0x00, 0x3a, 0x00, 0xc0, 0x70, 0xe2, - 0x50, 0x00, 0x00, 0x2a, 0x20, 0x04, 0xa0, 0x21, - 0xa1, 0xc3, 0x70, 0xe0, 0x80, 0x13, 0x41, 0x20, - 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc3, 0x70, 0xe0, - 0x00, 0x13, 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, - 0x3c, 0x00, 0x80, 0x07, 0x00, 0x00, 0xa1, 0xc2, - 0x70, 0xe0, 0x80, 0x12, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x21, 0xc2, 0x70, 0xe0, 0x00, 0x12, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0xa1, 0xc1, - 0x70, 0xe0, 0x80, 0x11, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x21, 0xc1, 0x70, 0xe0, 0x00, 0x11, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0xa1, 0xc0, - 0x70, 0xe0, 0x80, 0x10, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x3c, 0x00, 0xbc, 0x07, 0x00, 0x00, - 0x01, 0xc0, 0x70, 0xe0, 0x00, 0x10, 0x41, 0x20, - 0x02, 0x20, 0xb2, 0xe0, 0xe5, 0xff, 0xff, 0x2a, - 0x02, 0x00, 0xa0, 0xe1, 0x1e, 0xff, 0x2f, 0xe1, - 0x78, 0x47, 0x00, 0x00, 0x0a, 0x10, 0x40, 0xe2, - 0x20, 0x01, 0x40, 0xe0, 0x20, 0x02, 0x80, 0xe0, - 0x20, 0x04, 0x80, 0xe0, 0x20, 0x08, 0x80, 0xe0, - 0xa0, 0x01, 0xa0, 0xe1, 0x00, 0x21, 0x80, 0xe0, - 0x82, 0x10, 0x51, 0xe0, 0x3c, 0x00, 0xf8, 0x07, - 0x00, 0x00, 0x01, 0x00, 0x80, 0x52, 0x0a, 0x10, - 0x81, 0x42, 0x1e, 0xff, 0x2f, 0xe1, 0x30, 0xb4, - 0x44, 0x1c, 0x81, 0x07, 0x08, 0xd0, 0x01, 0x78, - 0x01, 0x30, 0x00, 0x29, 0x02, 0xd1, 0x00, 0x1b, - 0x30, 0xbc, 0x70, 0x47, 0x81, 0x07, 0xf6, 0xd1, - 0x0b, 0x4a, 0xd5, 0x01, 0x02, 0xc8, 0x8b, 0x1a, - 0x8b, 0x43, 0x2b, 0x40, 0xfa, 0xd0, 0x00, 0x1b, - 0x0a, 0x06, 0x01, 0xd1, 0x03, 0x38, 0x3c, 0x00, - 0x34, 0x08, 0x00, 0x00, 0xef, 0xe7, 0x0a, 0x04, - 0x12, 0x0e, 0x01, 0xd1, 0x02, 0x38, 0xea, 0xe7, - 0x09, 0x02, 0x09, 0x0e, 0xe7, 0xd1, 0x01, 0x38, - 0xe5, 0xe7, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0xf0, 0xb4, 0x03, 0x1c, 0x04, 0x1c, 0x0c, 0x43, - 0xa4, 0x07, 0x0c, 0xd1, 0x10, 0x4d, 0xef, 0x01, - 0x02, 0xe0, 0x04, 0x31, 0x04, 0x3a, 0x10, 0xc3, - 0x04, 0x2a, 0x04, 0xd3, 0x0c, 0x68, 0x66, 0x1b, - 0x3c, 0x00, 0x70, 0x08, 0x00, 0x00, 0xa6, 0x43, - 0x3e, 0x40, 0xf5, 0xd0, 0x00, 0x2a, 0x07, 0xd0, - 0x0c, 0x78, 0x01, 0x31, 0x1c, 0x70, 0x01, 0x33, - 0x00, 0x2c, 0x03, 0xd0, 0x01, 0x3a, 0xf7, 0xd1, - 0xf0, 0xbc, 0x70, 0x47, 0x01, 0x2a, 0xfb, 0xd9, - 0x51, 0x1e, 0x00, 0x22, 0x1a, 0x70, 0x01, 0x33, - 0x01, 0x39, 0xfb, 0xd1, 0xf4, 0xe7, 0x01, 0x01, - 0x01, 0x01, 0x78, 0x47, 0x00, 0x00, 0x02, 0x00, - 0xa0, 0xe3, 0x3c, 0x00, 0xac, 0x08, 0x00, 0x00, - 0x02, 0x10, 0xa0, 0xe3, 0x2e, 0xfe, 0xff, 0xea, - 0x1f, 0x40, 0x2d, 0xe9, 0x00, 0x00, 0x0f, 0xe1, - 0xc0, 0x00, 0x80, 0xe3, 0x00, 0xf0, 0x2f, 0xe1, - 0x81, 0x00, 0xa0, 0xe3, 0x02, 0x10, 0xa0, 0xe3, - 0x01, 0x20, 0x8f, 0xe2, 0x12, 0xff, 0x2f, 0xe1, - 0x00, 0xf0, 0xe6, 0xfc, 0x78, 0x47, 0x00, 0x00, - 0x1f, 0x40, 0xbd, 0xe8, 0xfe, 0xff, 0xff, 0xea, - 0x1f, 0x50, 0x2d, 0xe9, 0x3c, 0x00, 0xe8, 0x08, - 0x00, 0x00, 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, - 0x2f, 0xe1, 0x00, 0xf0, 0x40, 0xfb, 0x78, 0x47, - 0x00, 0x00, 0x1f, 0x50, 0xbd, 0xe8, 0x04, 0xf0, - 0x5e, 0xe2, 0x1f, 0x50, 0x2d, 0xe9, 0x01, 0x00, - 0x8f, 0xe2, 0x10, 0xff, 0x2f, 0xe1, 0x00, 0xf0, - 0x18, 0xfb, 0x78, 0x47, 0x00, 0x00, 0x1f, 0x50, - 0xbd, 0xe8, 0x04, 0xf0, 0x5e, 0xe2, 0x00, 0xbd, - 0x01, 0xb5, 0x00, 0xa0, 0x00, 0x47, 0x3c, 0x00, - 0x24, 0x09, 0x00, 0x00, 0x00, 0x30, 0x0f, 0xe1, - 0xc0, 0x30, 0xc3, 0xe3, 0x03, 0xf0, 0x21, 0xe1, - 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, 0x2f, 0xe1, - 0x01, 0xbd, 0x01, 0xb5, 0x00, 0xa0, 0x00, 0x47, - 0x00, 0x30, 0x0f, 0xe1, 0xc0, 0x30, 0x83, 0xe3, - 0x03, 0xf0, 0x21, 0xe1, 0x01, 0x00, 0x8f, 0xe2, - 0x10, 0xff, 0x2f, 0xe1, 0x01, 0xbd, 0x00, 0x00, - 0x18, 0x00, 0x9f, 0xe5, 0x04, 0x10, 0x90, 0xe4, - 0x3c, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0x00, - 0x51, 0xe3, 0x02, 0x00, 0x00, 0x0a, 0x04, 0x20, - 0x90, 0xe4, 0x00, 0x20, 0x81, 0xe5, 0xf9, 0xff, - 0xff, 0xea, 0x0e, 0xf0, 0xa0, 0xe1, 0x7c, 0x09, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, - 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xd8, 0x03, - 0x00, 0x00, 0xd8, 0x03, 0x00, 0x00, 0xd8, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x09, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, - 0x00, 0x80, 0x01, 0x00, 0x10, 0x8e, 0x01, 0x00, - 0x10, 0x8e, 0x01, 0x00, 0x88, 0xf8, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, - 0xc4, 0x33, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x50, 0xa0, 0xe1, - 0x58, 0x40, 0x9f, 0xe5, 0x3c, 0x00, 0xd8, 0x09, - 0x00, 0x00, 0x04, 0x00, 0x94, 0xe4, 0x01, 0x00, - 0x50, 0xe3, 0x05, 0xf0, 0xa0, 0x01, 0x04, 0x10, - 0x94, 0xe4, 0x04, 0x20, 0x94, 0xe4, 0x03, 0x00, - 0x00, 0xeb, 0x04, 0x00, 0x94, 0xe4, 0x04, 0x10, - 0x94, 0xe4, 0x07, 0x00, 0x00, 0xeb, 0xf5, 0xff, - 0xff, 0xea, 0x01, 0x00, 0x50, 0xe1, 0x0e, 0xf0, - 0xa0, 0x01, 0x02, 0x00, 0x51, 0xe1, 0x04, 0x30, - 0x90, 0x14, 0x04, 0x30, 0x81, 0x14, 0x3c, 0x00, - 0x14, 0x0a, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x1a, - 0x0e, 0xf0, 0xa0, 0xe1, 0x14, 0x20, 0x9f, 0xe5, - 0x00, 0x20, 0x92, 0xe5, 0x01, 0x00, 0x50, 0xe1, - 0x04, 0x20, 0x80, 0x14, 0xfc, 0xff, 0xff, 0x1a, - 0x0e, 0xf0, 0xa0, 0xe1, 0x80, 0x09, 0x00, 0x00, - 0xcc, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x20, 0xe6, 0x01, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x43, 0x5f, 0x00, 0x04, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x0a, 0x00, 0x00, 0x20, 0xee, - 0x01, 0x00, 0x12, 0x00, 0x00, 0x00, 0x49, 0x52, - 0x51, 0x5f, 0x00, 0x02, 0x00, 0x00, 0x20, 0xf2, - 0x01, 0x00, 0x11, 0x00, 0x00, 0x00, 0x46, 0x49, - 0x51, 0x5f, 0x80, 0x00, 0x00, 0x00, 0x20, 0xf4, - 0x01, 0x00, 0x17, 0x00, 0x00, 0x00, 0x41, 0x42, - 0x54, 0x5f, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf4, - 0x01, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x55, 0x4e, - 0x44, 0x5f, 0x3c, 0x00, 0x8c, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf4, 0x01, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x55, 0x53, 0x52, 0x5f, - 0x01, 0x00, 0x00, 0x00, 0x0e, 0x50, 0xa0, 0xe1, - 0x00, 0x60, 0x0f, 0xe1, 0x8c, 0x40, 0x9f, 0xe5, - 0x04, 0x10, 0x94, 0xe4, 0x01, 0x00, 0x51, 0xe3, - 0x09, 0x00, 0x00, 0x0a, 0x04, 0x00, 0x94, 0xe4, - 0x01, 0x10, 0x80, 0xe0, 0x03, 0x10, 0xc1, 0xe3, - 0x04, 0x20, 0x94, 0xe4, 0x3c, 0x00, 0xc8, 0x0a, - 0x00, 0x00, 0xc0, 0x20, 0x82, 0xe3, 0x02, 0xf0, - 0x2f, 0xe1, 0x04, 0xd0, 0x41, 0xe2, 0x04, 0x20, - 0x94, 0xe4, 0x13, 0x00, 0x00, 0xeb, 0xf2, 0xff, - 0xff, 0xea, 0x06, 0xf0, 0x2f, 0xe1, 0x05, 0xf0, - 0xa0, 0xe1, 0x0e, 0x50, 0xa0, 0xe1, 0x00, 0x60, - 0x0f, 0xe1, 0x44, 0x40, 0x9f, 0xe5, 0x04, 0x10, - 0x94, 0xe4, 0x01, 0x00, 0x51, 0xe3, 0x08, 0x00, - 0x00, 0x0a, 0x04, 0x00, 0x94, 0xe4, 0x3c, 0x00, - 0x04, 0x0b, 0x00, 0x00, 0x01, 0x10, 0x80, 0xe0, - 0x03, 0x10, 0xc1, 0xe3, 0x04, 0x20, 0x94, 0xe4, - 0xc0, 0x20, 0x82, 0xe3, 0x02, 0xf0, 0x2f, 0xe1, - 0x04, 0xd0, 0x41, 0xe2, 0x04, 0x20, 0x94, 0xe4, - 0xf3, 0xff, 0xff, 0xea, 0x06, 0xf0, 0x2f, 0xe1, - 0x05, 0xf0, 0xa0, 0xe1, 0x01, 0x00, 0x50, 0xe1, - 0x04, 0x20, 0x80, 0x14, 0xfc, 0xff, 0xff, 0x1a, - 0x0e, 0xf0, 0xa0, 0xe1, 0x3c, 0x0a, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x01, 0x60, - 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0x70, 0x47, - 0x00, 0x00, 0x10, 0x1e, 0x10, 0xee, 0x02, 0x00, - 0x11, 0xe3, 0xfc, 0xff, 0xff, 0x1a, 0x10, 0x0e, - 0x01, 0xee, 0x10, 0x1e, 0x10, 0xee, 0x02, 0x00, - 0x11, 0xe3, 0xfc, 0xff, 0xff, 0x1a, 0x1e, 0xff, - 0x2f, 0xe1, 0x10, 0x1e, 0x10, 0xee, 0x01, 0x00, - 0x11, 0xe3, 0x03, 0x00, 0x00, 0x0a, 0x10, 0x1e, - 0x11, 0xee, 0x3c, 0x00, 0x7c, 0x0b, 0x00, 0x00, - 0x00, 0x10, 0x80, 0xe5, 0x01, 0x00, 0xa0, 0xe3, - 0x1e, 0xff, 0x2f, 0xe1, 0x00, 0x00, 0x20, 0xe0, - 0x1e, 0xff, 0x2f, 0xe1, 0x8d, 0x46, 0x97, 0x46, - 0x78, 0x47, 0xc0, 0x46, 0x78, 0xfd, 0xff, 0xea, - 0x10, 0xb5, 0x04, 0x1c, 0x03, 0x28, 0x01, 0xd9, - 0x00, 0xf0, 0xac, 0xfb, 0x0c, 0x48, 0x40, 0x68, - 0x00, 0x28, 0x00, 0xd0, 0x03, 0x24, 0x0b, 0x48, - 0x01, 0x68, 0x09, 0x48, 0x3c, 0x00, 0xb8, 0x0b, - 0x00, 0x00, 0x12, 0x30, 0x00, 0x29, 0x05, 0xd0, - 0x06, 0x21, 0x61, 0x43, 0x40, 0x5c, 0xc3, 0x00, - 0x18, 0x18, 0x04, 0xe0, 0x06, 0x21, 0x61, 0x43, - 0x40, 0x5c, 0x14, 0x23, 0x58, 0x43, 0x0a, 0x30, - 0x00, 0x06, 0x00, 0x0e, 0x10, 0xbd, 0xd4, 0x7a, - 0x01, 0x00, 0xa8, 0x69, 0x01, 0x00, 0x80, 0xb5, - 0x09, 0x4a, 0x09, 0x49, 0x03, 0x20, 0x00, 0xf0, - 0xf2, 0xf9, 0x08, 0x49, 0x08, 0x20, 0x3c, 0x00, - 0xf4, 0x0b, 0x00, 0x00, 0x08, 0x60, 0x48, 0x60, - 0x07, 0x49, 0x1d, 0x20, 0x01, 0xf0, 0xb2, 0xfc, - 0x06, 0x49, 0x1e, 0x20, 0x01, 0xf0, 0xae, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, - 0x31, 0x27, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x29, 0x25, 0x00, 0x00, 0x31, 0x25, 0x00, 0x00, - 0x05, 0x49, 0x80, 0xb5, 0x08, 0x20, 0x88, 0x60, - 0x1d, 0x20, 0x01, 0xf0, 0xbf, 0xfc, 0x1e, 0x20, - 0x3c, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x01, 0xf0, - 0xbc, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0xd1, 0x2a, - 0x80, 0xb5, 0x01, 0xd1, 0x05, 0xf0, 0x19, 0xfc, - 0x80, 0xbd, 0x03, 0x49, 0x80, 0xb5, 0x00, 0x20, - 0x08, 0x80, 0x05, 0x20, 0x05, 0xf0, 0xd5, 0xfb, - 0x80, 0xbd, 0xb0, 0x74, 0x01, 0x00, 0x80, 0xb5, - 0x54, 0x28, 0x01, 0xd1, 0x06, 0xf0, 0xcd, 0xf8, - 0x80, 0xbd, 0x3c, 0x00, 0x6c, 0x0c, 0x00, 0x00, - 0xb0, 0xb5, 0x10, 0x4d, 0x02, 0x1c, 0x01, 0x24, - 0x01, 0x2a, 0x0d, 0x48, 0x29, 0x68, 0x06, 0xd0, - 0xc4, 0x2a, 0x03, 0xd1, 0x6a, 0x68, 0x00, 0x2a, - 0x05, 0xd0, 0xac, 0x60, 0xb0, 0xbd, 0x0e, 0xf0, - 0x89, 0xfb, 0x6c, 0x60, 0x08, 0xe0, 0x00, 0x22, - 0xaa, 0x60, 0x6c, 0x60, 0x0e, 0xf0, 0x82, 0xfb, - 0x00, 0x21, 0x04, 0x20, 0x12, 0xf0, 0xc8, 0xfc, - 0x06, 0xf0, 0xd8, 0xf8, 0x3c, 0x00, 0xa8, 0x0c, - 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, 0xc4, 0x60, - 0x01, 0x00, 0xbc, 0x74, 0x01, 0x00, 0x05, 0x4a, - 0x51, 0x69, 0x08, 0x1a, 0x11, 0x69, 0x09, 0x68, - 0x10, 0x31, 0x81, 0x42, 0x01, 0xd8, 0x50, 0x61, - 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x8c, 0x6e, - 0x01, 0x00, 0x01, 0x49, 0x49, 0x68, 0x40, 0x1a, - 0x70, 0x47, 0x8c, 0x6e, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x69, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x0c, 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, - 0x02, 0x4a, 0x51, 0x69, 0x08, 0x18, 0x50, 0x61, - 0x70, 0x47, 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, - 0x0e, 0x49, 0x0f, 0x48, 0x10, 0xb5, 0x19, 0x22, - 0x92, 0x01, 0x41, 0x60, 0x89, 0x18, 0xc1, 0x60, - 0x0b, 0x49, 0x00, 0x22, 0x0c, 0x31, 0x01, 0x60, - 0x0a, 0x49, 0x82, 0x60, 0x09, 0x68, 0x01, 0x23, - 0xdb, 0x03, 0xc9, 0x18, 0x08, 0x4c, 0x41, 0x61, - 0x3c, 0x00, 0x20, 0x0d, 0x00, 0x00, 0x21, 0x68, - 0x00, 0x29, 0x02, 0xd0, 0x07, 0x49, 0x01, 0x61, - 0x01, 0xe0, 0x00, 0xf0, 0x0c, 0xf8, 0x22, 0x60, - 0x10, 0xbd, 0x44, 0xdc, 0x01, 0x00, 0x8c, 0x6e, - 0x01, 0x00, 0xc8, 0x09, 0x00, 0x00, 0x34, 0x58, - 0x01, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x01, 0x48, - 0x02, 0x49, 0x08, 0x61, 0x70, 0x47, 0xc8, 0x09, - 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, 0x08, 0x28, - 0x05, 0xd2, 0x3c, 0x00, 0x5c, 0x0d, 0x00, 0x00, - 0x03, 0x4b, 0x80, 0x00, 0x19, 0x50, 0x02, 0x49, - 0x20, 0x31, 0x0a, 0x50, 0x70, 0x47, 0x00, 0x00, - 0x64, 0x6d, 0x01, 0x00, 0x70, 0xb5, 0x06, 0x1c, - 0x0d, 0x48, 0x0d, 0x1c, 0x00, 0x68, 0x14, 0x1c, - 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x00, 0xf0, - 0x09, 0xfc, 0x70, 0xbd, 0x28, 0x06, 0x01, 0xd5, - 0x00, 0xf0, 0x22, 0xfe, 0x22, 0x1c, 0x29, 0x1c, - 0x30, 0x1c, 0x08, 0xf0, 0x3c, 0x00, 0x98, 0x0d, - 0x00, 0x00, 0xdd, 0xfd, 0x01, 0x1c, 0x03, 0x48, - 0x54, 0x30, 0x43, 0x69, 0x32, 0x1c, 0xff, 0xf7, - 0x1b, 0xfb, 0x70, 0xbd, 0x00, 0x00, 0x50, 0x6d, - 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0d, 0x48, - 0x1f, 0x1c, 0x00, 0x68, 0x15, 0x1c, 0x0c, 0x1c, - 0x00, 0x28, 0x02, 0xd1, 0x28, 0x1c, 0x00, 0xf0, - 0xe8, 0xfb, 0x20, 0x06, 0x01, 0xd5, 0x00, 0xf0, - 0x02, 0xfe, 0x2a, 0x1c, 0x21, 0x1c, 0x3c, 0x00, - 0xd4, 0x0d, 0x00, 0x00, 0x30, 0x1c, 0x08, 0xf0, - 0xbd, 0xfd, 0x01, 0x1c, 0x03, 0x48, 0x54, 0x30, - 0x43, 0x69, 0x3a, 0x1c, 0xff, 0xf7, 0xfb, 0xfa, - 0xf8, 0xbd, 0x00, 0x00, 0x50, 0x6d, 0x01, 0x00, - 0xf8, 0xb5, 0xf1, 0x28, 0x4e, 0xd1, 0x2a, 0x48, - 0x69, 0x46, 0x82, 0x69, 0xff, 0xf7, 0xee, 0xfa, - 0x27, 0x49, 0x00, 0x26, 0x54, 0x39, 0xc8, 0x68, - 0x8b, 0x68, 0xc2, 0x00, 0x01, 0x30, 0xd5, 0x18, - 0x3c, 0x00, 0x10, 0x0e, 0x00, 0x00, 0x07, 0x28, - 0xc8, 0x60, 0x00, 0xd1, 0xce, 0x60, 0x22, 0x48, - 0x6c, 0x68, 0x00, 0x68, 0x00, 0x28, 0x03, 0xd0, - 0x00, 0x21, 0x20, 0x1c, 0x08, 0xf0, 0x3b, 0xfb, - 0x6e, 0x60, 0x25, 0x68, 0x20, 0x89, 0xa9, 0x78, - 0x02, 0x39, 0x40, 0x1a, 0xe9, 0x78, 0x40, 0x1a, - 0x20, 0x81, 0xa8, 0x78, 0x28, 0x18, 0x02, 0x38, - 0x20, 0x60, 0x6e, 0x78, 0x28, 0x78, 0x08, 0x28, - 0x17, 0xd2, 0x3c, 0x00, 0x4c, 0x0e, 0x00, 0x00, - 0x30, 0x06, 0x07, 0xd5, 0x27, 0x1c, 0x20, 0x1c, - 0x00, 0xf0, 0x7a, 0xfc, 0x04, 0x1c, 0x38, 0x1c, - 0x00, 0xf0, 0x9c, 0xfb, 0x28, 0x78, 0x0f, 0x49, - 0x40, 0x39, 0x80, 0x00, 0x0a, 0x58, 0x00, 0x2a, - 0x04, 0xd0, 0x31, 0x1c, 0x20, 0x1c, 0xff, 0xf7, - 0xb3, 0xfa, 0x08, 0xe0, 0x05, 0x21, 0x00, 0xe0, - 0x04, 0x21, 0x06, 0x20, 0x00, 0xf0, 0x10, 0xfa, - 0x20, 0x1c, 0x00, 0xf0, 0x3c, 0x00, 0x88, 0x0e, - 0x00, 0x00, 0x87, 0xfb, 0x30, 0x06, 0x01, 0xd5, - 0x00, 0xf0, 0xa1, 0xfd, 0xf8, 0xbd, 0x01, 0x21, - 0x06, 0x20, 0x00, 0xf0, 0x04, 0xfa, 0xf9, 0xe7, - 0x00, 0x00, 0xa4, 0x6d, 0x01, 0x00, 0xcc, 0x5c, - 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4d, 0x19, 0x4f, - 0x01, 0x24, 0x54, 0x35, 0x29, 0x1c, 0x03, 0x20, - 0x7c, 0x60, 0x17, 0x4b, 0x18, 0x4a, 0x05, 0xf0, - 0xf4, 0xfb, 0x00, 0x28, 0x02, 0xd0, 0x3c, 0x00, - 0xc4, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x38, 0x60, - 0x1f, 0xe0, 0x3c, 0x60, 0x07, 0x21, 0x28, 0x1c, - 0xea, 0x69, 0xff, 0xf7, 0x83, 0xfa, 0x38, 0x20, - 0x00, 0xf0, 0x80, 0xfc, 0x00, 0x24, 0xb8, 0x60, - 0xb8, 0x68, 0xe6, 0x00, 0x35, 0x18, 0x68, 0x46, - 0x02, 0x21, 0x00, 0xf0, 0x75, 0xfb, 0x28, 0x60, - 0x28, 0x1c, 0x00, 0xf0, 0xa5, 0xfd, 0xb8, 0x68, - 0x81, 0x59, 0x06, 0x48, 0x54, 0x30, 0x02, 0x6a, - 0x3c, 0x00, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xf7, - 0x6c, 0xfa, 0x01, 0x34, 0x07, 0x2c, 0xea, 0xdb, - 0x00, 0x20, 0xf8, 0x60, 0x38, 0x61, 0xf8, 0xbd, - 0x00, 0x00, 0x50, 0x6d, 0x01, 0x00, 0x81, 0x9a, - 0x00, 0x00, 0x61, 0x9a, 0x00, 0x00, 0x05, 0x48, - 0x80, 0xb5, 0x00, 0x68, 0x00, 0x28, 0x05, 0xd0, - 0x03, 0x48, 0x54, 0x30, 0x42, 0x6a, 0x00, 0x21, - 0xff, 0xf7, 0x53, 0xfa, 0x80, 0xbd, 0x50, 0x6d, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x0f, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0xb5, 0x0a, 0x4e, - 0x09, 0x4d, 0x08, 0x4c, 0x08, 0x3e, 0xa1, 0x69, - 0x00, 0x29, 0x07, 0xd0, 0x30, 0x68, 0x41, 0x60, - 0x00, 0x7b, 0x81, 0x00, 0x69, 0x58, 0xff, 0xf7, - 0x3e, 0xfa, 0xf4, 0xe7, 0x03, 0x49, 0x02, 0x20, - 0x08, 0x70, 0x70, 0xbd, 0x00, 0x10, 0x07, 0x00, - 0xe0, 0x7e, 0x01, 0x00, 0x00, 0x02, 0x07, 0x00, - 0x70, 0xb5, 0x0a, 0x4e, 0x3c, 0x00, 0x78, 0x0f, - 0x00, 0x00, 0x09, 0x4d, 0x08, 0x4c, 0x08, 0x3e, - 0xe1, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x70, 0x68, - 0x41, 0x60, 0x00, 0x7b, 0x81, 0x00, 0x69, 0x58, - 0xff, 0xf7, 0x24, 0xfa, 0xf4, 0xe7, 0x03, 0x49, - 0x02, 0x20, 0x08, 0x70, 0x70, 0xbd, 0x00, 0x10, - 0x07, 0x00, 0xe0, 0x7e, 0x01, 0x00, 0x00, 0x02, - 0x07, 0x00, 0xb0, 0xb5, 0x09, 0x4d, 0x04, 0x1c, - 0x28, 0x1c, 0x20, 0x22, 0x40, 0x30, 0x3c, 0x00, - 0xb4, 0x0f, 0x00, 0x00, 0x05, 0x49, 0xff, 0xf7, - 0x9f, 0xfa, 0xe0, 0x68, 0xe8, 0x60, 0x20, 0x69, - 0x28, 0x61, 0xa0, 0x6a, 0xa8, 0x62, 0x60, 0x68, - 0x68, 0x60, 0xb0, 0xbd, 0x70, 0x52, 0x01, 0x00, - 0x00, 0x10, 0x07, 0x00, 0xf8, 0xb5, 0x00, 0x24, - 0x00, 0x23, 0x20, 0x28, 0x01, 0xdb, 0x01, 0x24, - 0x07, 0xe0, 0x08, 0x4e, 0x80, 0x00, 0x35, 0x58, - 0x07, 0x4f, 0xbd, 0x42, 0x00, 0xd0, 0x2b, 0x1c, - 0x3c, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x31, 0x50, - 0x13, 0x60, 0x00, 0x2c, 0x03, 0xd0, 0x21, 0x1c, - 0x82, 0x20, 0x00, 0xf0, 0x52, 0xf9, 0x20, 0x1c, - 0xf8, 0xbd, 0xe0, 0x7e, 0x01, 0x00, 0x75, 0x75, - 0x00, 0x00, 0xb0, 0xb5, 0x0b, 0x4d, 0x04, 0x1c, - 0x28, 0x68, 0x00, 0x28, 0x0f, 0xd0, 0x20, 0x1c, - 0x12, 0xf0, 0xb7, 0xfd, 0x00, 0x28, 0x0a, 0xd0, - 0x21, 0x7a, 0x28, 0x7a, 0x0a, 0x07, 0x00, 0x07, - 0x00, 0x0f, 0x3c, 0x00, 0x2c, 0x10, 0x00, 0x00, - 0x12, 0x0f, 0x90, 0x42, 0x29, 0x72, 0x01, 0xd0, - 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, - 0x70, 0x78, 0x01, 0x00, 0xf0, 0xb5, 0x42, 0x4e, - 0x05, 0x1c, 0x30, 0x68, 0x85, 0xb0, 0x00, 0x28, - 0x63, 0xd0, 0x00, 0x24, 0x00, 0x20, 0x00, 0x2d, - 0x06, 0xd0, 0x69, 0x78, 0x18, 0x29, 0x03, 0xd1, - 0xe9, 0x79, 0x01, 0x29, 0x00, 0xd1, 0x01, 0x20, - 0x00, 0x28, 0x45, 0xd0, 0x3c, 0x00, 0x68, 0x10, - 0x00, 0x00, 0x00, 0x20, 0xb0, 0x72, 0x81, 0x00, - 0x4a, 0x19, 0x93, 0x7a, 0x59, 0x06, 0x89, 0x0f, - 0xdb, 0x06, 0x04, 0xd5, 0xb3, 0x7a, 0x01, 0x27, - 0x8f, 0x40, 0x3b, 0x43, 0xb3, 0x72, 0xd2, 0x7a, - 0x13, 0x09, 0x12, 0x07, 0x12, 0x0f, 0x93, 0x42, - 0x05, 0xd3, 0x01, 0x22, 0x8a, 0x40, 0x14, 0x43, - 0x01, 0xaa, 0x89, 0x00, 0x50, 0x50, 0x01, 0x30, - 0x04, 0x28, 0xe4, 0xdb, 0xb0, 0x7a, 0x3c, 0x00, - 0xa4, 0x10, 0x00, 0x00, 0x20, 0x40, 0x01, 0x07, - 0x0d, 0xd5, 0x41, 0x07, 0x09, 0xd5, 0xc1, 0x07, - 0x05, 0xd5, 0x81, 0x07, 0x01, 0xd5, 0x00, 0x24, - 0x05, 0xe0, 0x02, 0x99, 0x02, 0xe0, 0x01, 0x99, - 0x00, 0xe0, 0x03, 0x99, 0x04, 0x91, 0x41, 0x07, - 0x09, 0xd5, 0xc1, 0x07, 0x05, 0xd5, 0x81, 0x07, - 0x01, 0xd5, 0x00, 0x24, 0x03, 0xe0, 0x02, 0x99, - 0x00, 0xe0, 0x01, 0x99, 0x03, 0x91, 0xc1, 0x07, - 0x3c, 0x00, 0xe0, 0x10, 0x00, 0x00, 0x05, 0xd5, - 0x81, 0x07, 0x01, 0xd5, 0x00, 0x24, 0x01, 0xe0, - 0x02, 0x99, 0x01, 0x91, 0x80, 0x07, 0x01, 0xd5, - 0x00, 0x24, 0x22, 0xe0, 0x0f, 0x2c, 0x20, 0xd1, - 0x70, 0x68, 0x00, 0x28, 0x0b, 0xd0, 0x04, 0x9a, - 0x02, 0xab, 0x00, 0x92, 0x0a, 0xcb, 0x01, 0x9a, - 0x28, 0x1c, 0x0b, 0xf0, 0x8a, 0xfb, 0x00, 0x20, - 0x70, 0x60, 0x10, 0xe0, 0x17, 0xe0, 0x30, 0x7a, - 0x29, 0x7a, 0x3c, 0x00, 0x1c, 0x11, 0x00, 0x00, - 0x00, 0x07, 0x09, 0x07, 0x09, 0x0f, 0x00, 0x0f, - 0x88, 0x42, 0x07, 0xd0, 0x04, 0x9a, 0x02, 0xab, - 0x00, 0x92, 0x0a, 0xcb, 0x01, 0x9a, 0x28, 0x1c, - 0x0b, 0xf0, 0x76, 0xfb, 0x28, 0x7a, 0x30, 0x72, - 0x01, 0x20, 0x0f, 0x2c, 0x00, 0xd0, 0x00, 0x20, - 0x05, 0xb0, 0xf0, 0xbd, 0x01, 0x20, 0xfb, 0xe7, - 0x70, 0x78, 0x01, 0x00, 0x0d, 0x4a, 0x70, 0xb5, - 0x11, 0x68, 0x00, 0x20, 0x3c, 0x00, 0x58, 0x11, - 0x00, 0x00, 0x00, 0x29, 0x0e, 0xd0, 0x11, 0x7a, - 0x09, 0x06, 0x0b, 0xd5, 0x53, 0x7a, 0x94, 0x7a, - 0x03, 0x21, 0x01, 0x25, 0x2a, 0x1c, 0x8a, 0x40, - 0x1e, 0x1c, 0x16, 0x40, 0x03, 0xd0, 0x22, 0x40, - 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, 0xff, 0x31, - 0x09, 0x06, 0x09, 0x16, 0xf2, 0xd5, 0x70, 0xbd, - 0x00, 0x00, 0x70, 0x78, 0x01, 0x00, 0x10, 0xb5, - 0x08, 0x4c, 0x20, 0x68, 0x00, 0x28, 0x3c, 0x00, - 0x94, 0x11, 0x00, 0x00, 0x04, 0xd0, 0x60, 0x68, - 0x00, 0x28, 0x01, 0xd1, 0x0b, 0xf0, 0xc0, 0xfb, - 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x07, 0xc4, - 0x0c, 0x3c, 0x01, 0x20, 0x60, 0x60, 0x10, 0xbd, - 0x70, 0x78, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0x08, 0x60, 0x70, 0x47, 0x70, 0x78, 0x01, 0x00, - 0xf8, 0xb5, 0x0e, 0x4d, 0x04, 0x1c, 0x00, 0x20, - 0x68, 0x72, 0x20, 0x1c, 0x12, 0xf0, 0xde, 0xfc, - 0x3c, 0x00, 0xd0, 0x11, 0x00, 0x00, 0x00, 0x28, - 0x12, 0xd0, 0x00, 0x20, 0x03, 0x21, 0x01, 0x22, - 0x0f, 0x1a, 0x16, 0x1c, 0x23, 0x7a, 0xbe, 0x40, - 0x33, 0x40, 0x04, 0xd0, 0x6b, 0x7a, 0x16, 0x1c, - 0x86, 0x40, 0x33, 0x43, 0x6b, 0x72, 0x01, 0x30, - 0x00, 0x06, 0x00, 0x0e, 0x03, 0x28, 0xef, 0xd9, - 0xf8, 0xbd, 0x70, 0x78, 0x01, 0x00, 0x92, 0x00, - 0x51, 0x18, 0x8a, 0x7a, 0x12, 0x07, 0x12, 0x0f, - 0x02, 0x70, 0x3c, 0x00, 0x0c, 0x12, 0x00, 0x00, - 0xca, 0x7a, 0x12, 0x07, 0x12, 0x0f, 0x42, 0x70, - 0xca, 0x7a, 0x12, 0x09, 0x82, 0x70, 0x09, 0x7b, - 0x81, 0x80, 0x70, 0x47, 0x03, 0x4a, 0x0f, 0x21, - 0x52, 0x7a, 0x01, 0x20, 0x91, 0x43, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x70, 0x78, 0x01, 0x00, - 0x40, 0x07, 0x05, 0x49, 0x40, 0x0f, 0x05, 0x4a, - 0x09, 0x56, 0x52, 0x7a, 0x01, 0x20, 0x0a, 0x40, - 0x00, 0xd1, 0x00, 0x20, 0x3c, 0x00, 0x48, 0x12, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x5e, 0x46, - 0x01, 0x00, 0x70, 0x78, 0x01, 0x00, 0x12, 0x4a, - 0x70, 0xb5, 0x53, 0x7a, 0x94, 0x7a, 0xff, 0x20, - 0x03, 0x21, 0x01, 0x25, 0x2a, 0x1c, 0x8a, 0x40, - 0x1e, 0x1c, 0x16, 0x40, 0x14, 0xd0, 0x22, 0x40, - 0x12, 0xd1, 0x08, 0x06, 0x00, 0x0e, 0x07, 0xd0, - 0x01, 0x28, 0x07, 0xd0, 0x02, 0x28, 0x07, 0xd0, - 0x03, 0x28, 0x07, 0xd1, 0x07, 0x20, 0x3c, 0x00, - 0x84, 0x12, 0x00, 0x00, 0x70, 0xbd, 0x03, 0x20, - 0x70, 0xbd, 0x01, 0x20, 0x70, 0xbd, 0x05, 0x20, - 0x70, 0xbd, 0xff, 0x20, 0x70, 0xbd, 0xff, 0x31, - 0x09, 0x06, 0x09, 0x16, 0xe1, 0xd5, 0x70, 0xbd, - 0x70, 0x78, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x13, 0x48, 0x0d, 0x1c, 0x81, 0x68, 0x00, 0x29, - 0x05, 0xd0, 0x01, 0x7b, 0x00, 0x29, 0x01, 0xd1, - 0x04, 0x73, 0x45, 0x73, 0xf8, 0xbd, 0x0f, 0x4e, - 0x3c, 0x00, 0xc0, 0x12, 0x00, 0x00, 0x31, 0x1c, - 0x20, 0x31, 0x8a, 0x79, 0x00, 0xab, 0x1a, 0x70, - 0xc9, 0x79, 0x59, 0x70, 0x42, 0x68, 0x00, 0x2a, - 0x07, 0xd0, 0x20, 0x02, 0x28, 0x43, 0x01, 0x1c, - 0x00, 0x20, 0xff, 0xf7, 0x7e, 0xf8, 0x00, 0x28, - 0x04, 0xd1, 0x2a, 0x1c, 0x21, 0x1c, 0x00, 0x20, - 0x11, 0xf0, 0x0f, 0xf8, 0x00, 0xab, 0x18, 0x88, - 0xf0, 0x84, 0xe2, 0xe7, 0x00, 0x00, 0x88, 0x5a, - 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x12, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x81, 0x20, 0xff, 0xf7, 0xcd, 0xff, 0x80, 0xbd, - 0x01, 0x49, 0x01, 0x20, 0x88, 0x60, 0x70, 0x47, - 0x88, 0x5a, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0x88, 0x60, 0x08, 0x7b, 0x00, 0x28, - 0x02, 0xd0, 0x49, 0x7b, 0xff, 0xf7, 0xbc, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, - 0x02, 0x4a, 0x01, 0x1c, 0x3c, 0x00, 0x38, 0x13, - 0x00, 0x00, 0x50, 0x68, 0x51, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, 0x10, 0xb5, - 0x0c, 0x1c, 0x07, 0xf0, 0x64, 0xfa, 0x04, 0x61, - 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, 0xff, 0xb5, - 0x0e, 0x1c, 0x1f, 0x1c, 0x38, 0x20, 0x81, 0xb0, - 0x00, 0xf0, 0x3d, 0xfa, 0x1d, 0x49, 0x04, 0x1c, - 0x48, 0x69, 0x00, 0x28, 0x01, 0xd1, 0x4c, 0x61, - 0x00, 0xe0, 0x04, 0x60, 0x30, 0x01, 0x3c, 0x00, - 0x74, 0x13, 0x00, 0x00, 0x00, 0x90, 0x00, 0x04, - 0x00, 0x0c, 0x00, 0xf0, 0x15, 0xfa, 0x05, 0x1c, - 0x00, 0x99, 0xff, 0xf7, 0x8b, 0xf8, 0x00, 0x20, - 0x73, 0x1e, 0x04, 0xe0, 0x01, 0x01, 0x4a, 0x19, - 0x10, 0x32, 0x6a, 0x50, 0x01, 0x30, 0x98, 0x42, - 0xf8, 0xd3, 0x00, 0x01, 0x2d, 0x50, 0x38, 0x21, - 0x20, 0x1c, 0xff, 0xf7, 0x7b, 0xf8, 0xa5, 0x60, - 0x65, 0x60, 0xe6, 0x85, 0x0c, 0x20, 0x60, 0x86, - 0x3c, 0x00, 0xb0, 0x13, 0x00, 0x00, 0xaf, 0x20, - 0x80, 0x01, 0xe0, 0x61, 0x0e, 0x20, 0xe0, 0x86, - 0x00, 0x20, 0x20, 0x60, 0x01, 0x98, 0xe0, 0x60, - 0x38, 0x68, 0x60, 0x61, 0x03, 0x99, 0x04, 0x48, - 0x08, 0x60, 0x04, 0x48, 0x38, 0x60, 0x05, 0xb0, - 0x00, 0x20, 0xf0, 0xbd, 0x00, 0x00, 0xfc, 0x5a, - 0x01, 0x00, 0xdd, 0x15, 0x01, 0x00, 0xfd, 0x16, - 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0xf0, 0x2a, - 0x80, 0xb5, 0x3c, 0x00, 0xec, 0x13, 0x00, 0x00, - 0x04, 0xd0, 0xf1, 0x2a, 0x07, 0xd1, 0x06, 0xf0, - 0x09, 0xfb, 0x80, 0xbd, 0x07, 0xf0, 0x0c, 0xfa, - 0x0d, 0xf0, 0xa8, 0xfa, 0x80, 0xbd, 0x01, 0x21, - 0x02, 0x20, 0xff, 0xf7, 0x4d, 0xff, 0x80, 0xbd, - 0x01, 0x49, 0x00, 0x20, 0x48, 0x61, 0x70, 0x47, - 0xfc, 0x5a, 0x01, 0x00, 0x00, 0x28, 0x02, 0xd0, - 0x00, 0x29, 0x00, 0xd0, 0xc1, 0x60, 0x70, 0x47, - 0xf8, 0xb5, 0x17, 0x1c, 0x3c, 0x00, 0x28, 0x14, - 0x00, 0x00, 0x0e, 0x1c, 0x05, 0x1c, 0x1c, 0x1c, - 0x1c, 0x30, 0x07, 0xf0, 0xc8, 0xf8, 0x01, 0x69, - 0x42, 0x69, 0x80, 0x68, 0x89, 0x19, 0x89, 0x1a, - 0x81, 0x42, 0x06, 0xd2, 0x23, 0x1c, 0x3a, 0x1c, - 0x31, 0x1c, 0x28, 0x1c, 0x00, 0xf0, 0x05, 0xf8, - 0xf8, 0xbd, 0x00, 0x20, 0x38, 0x60, 0x20, 0x60, - 0xfa, 0xe7, 0xff, 0xb5, 0x85, 0xb0, 0x05, 0x98, - 0x01, 0x27, 0x0e, 0x1c, 0x1c, 0x30, 0x3c, 0x00, - 0x64, 0x14, 0x00, 0x00, 0x07, 0xf0, 0xae, 0xf8, - 0x04, 0x1c, 0x80, 0x88, 0x04, 0x30, 0x03, 0x90, - 0x2c, 0x48, 0x04, 0x90, 0x80, 0x79, 0x02, 0x90, - 0xa0, 0x69, 0xb0, 0x42, 0x17, 0xd2, 0x35, 0x1a, - 0x11, 0xe0, 0x03, 0x98, 0xff, 0xf7, 0x16, 0xfc, - 0x00, 0x28, 0x06, 0xd1, 0x01, 0x21, 0x8e, 0x20, - 0xff, 0xf7, 0x08, 0xff, 0x00, 0x25, 0x00, 0x27, - 0x05, 0xe0, 0x21, 0x68, 0x01, 0x60, 0x20, 0x60, - 0x3c, 0x00, 0xa0, 0x14, 0x00, 0x00, 0xa0, 0x69, - 0x01, 0x30, 0xa0, 0x61, 0x01, 0x3d, 0xeb, 0xd2, - 0x00, 0x2f, 0x35, 0xd0, 0xa0, 0x69, 0x80, 0x1b, - 0xa0, 0x61, 0x20, 0x69, 0x80, 0x19, 0x20, 0x61, - 0x61, 0x69, 0x40, 0x1a, 0xe1, 0x68, 0x88, 0x42, - 0x03, 0xd9, 0x07, 0x21, 0x8e, 0x20, 0xff, 0xf7, - 0xec, 0xfe, 0x25, 0x68, 0x2f, 0x1c, 0x70, 0x1e, - 0x01, 0x95, 0x00, 0xe0, 0x3f, 0x68, 0x01, 0x38, - 0xfc, 0xd2, 0x3c, 0x00, 0xdc, 0x14, 0x00, 0x00, - 0x38, 0x68, 0x20, 0x60, 0x02, 0x98, 0x04, 0x99, - 0x88, 0x71, 0x2e, 0x68, 0x2c, 0x60, 0x32, 0x1d, - 0x00, 0x92, 0x29, 0x1c, 0x20, 0x31, 0x01, 0x22, - 0x28, 0x1d, 0x05, 0x9b, 0x08, 0xf0, 0x7a, 0xfc, - 0xbd, 0x42, 0x01, 0xd0, 0x35, 0x1c, 0xf0, 0xe7, - 0x00, 0x20, 0x38, 0x61, 0x01, 0x98, 0x07, 0x99, - 0x04, 0x30, 0x08, 0x60, 0x08, 0x98, 0x04, 0x37, - 0x07, 0x60, 0x09, 0xb0, 0x3c, 0x00, 0x18, 0x15, - 0x00, 0x00, 0xf0, 0xbd, 0x02, 0x98, 0x04, 0x99, - 0x88, 0x71, 0xf9, 0xe7, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0x38, 0xb5, 0x04, 0x1c, 0x15, 0x1c, - 0x00, 0x20, 0x0c, 0x60, 0x09, 0xe0, 0xe2, 0x68, - 0x20, 0x1c, 0x00, 0x92, 0xa3, 0x8a, 0x21, 0x68, - 0xa2, 0x69, 0x08, 0xf0, 0x56, 0xfc, 0x20, 0x1c, - 0xe4, 0x68, 0x00, 0x2c, 0xf3, 0xd1, 0x28, 0x60, - 0x38, 0xbd, 0x80, 0xb5, 0x0c, 0xe0, 0x3c, 0x00, - 0x54, 0x15, 0x00, 0x00, 0xc2, 0x68, 0x8a, 0x42, - 0x08, 0xd1, 0x00, 0x21, 0xc1, 0x60, 0x00, 0x28, - 0x03, 0xd1, 0x06, 0x21, 0x8e, 0x20, 0xff, 0xf7, - 0x9d, 0xfe, 0x80, 0xbd, 0x10, 0x1c, 0x00, 0x28, - 0xf7, 0xd0, 0xef, 0xe7, 0x10, 0xb5, 0x04, 0x1c, - 0x0c, 0xd0, 0xa0, 0x69, 0x00, 0x28, 0x06, 0xd1, - 0x20, 0x69, 0x00, 0x28, 0x03, 0xd0, 0x06, 0xf0, - 0xf7, 0xfd, 0x00, 0x20, 0x20, 0x61, 0x20, 0x1c, - 0x3c, 0x00, 0x90, 0x15, 0x00, 0x00, 0x06, 0xf0, - 0xf2, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x10, 0xb5, - 0x00, 0x28, 0x09, 0xd0, 0xc4, 0x68, 0x03, 0xe0, - 0xff, 0xf7, 0xe7, 0xff, 0x20, 0x1c, 0xf9, 0xe7, - 0x00, 0x2c, 0xf9, 0xd1, 0xff, 0xf7, 0xe1, 0xff, - 0x10, 0xbd, 0x01, 0x1c, 0x00, 0x20, 0x04, 0xe0, - 0x0a, 0x89, 0xc9, 0x68, 0x10, 0x18, 0x00, 0x04, - 0x00, 0x0c, 0x00, 0x29, 0xf8, 0xd1, 0x70, 0x47, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x15, 0x00, 0x00, - 0x00, 0xe0, 0x08, 0x1c, 0xc1, 0x68, 0x00, 0x29, - 0xfb, 0xd1, 0x70, 0x47, 0xf8, 0xb5, 0x06, 0x1c, - 0x0c, 0x1c, 0x1c, 0x20, 0x00, 0xf0, 0x68, 0xfa, - 0x05, 0x1c, 0x00, 0x2e, 0x01, 0xd1, 0x00, 0x2c, - 0x02, 0xd1, 0x30, 0x1c, 0x01, 0x21, 0x03, 0xe0, - 0x20, 0x1c, 0x00, 0xf0, 0x5d, 0xfa, 0x00, 0x21, - 0x00, 0x22, 0x00, 0x92, 0x0a, 0x1c, 0x01, 0x1c, - 0x23, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0x08, 0x16, - 0x00, 0x00, 0x08, 0xf0, 0xf2, 0xfb, 0x28, 0x1c, - 0xf8, 0xbd, 0xb0, 0xb5, 0x03, 0x32, 0x92, 0x08, - 0x92, 0x00, 0x14, 0x04, 0x24, 0x0c, 0x09, 0x19, - 0x1d, 0x1c, 0xc9, 0x18, 0x09, 0x04, 0x09, 0x0c, - 0xff, 0xf7, 0xd7, 0xff, 0x01, 0x89, 0x02, 0x68, - 0x12, 0x19, 0x09, 0x1b, 0x49, 0x1b, 0x02, 0x60, - 0x01, 0x81, 0xb0, 0xbd, 0x00, 0x00, 0xf8, 0xb5, - 0x0a, 0x4c, 0xa0, 0x21, 0x20, 0x1c, 0x3c, 0x00, - 0x44, 0x16, 0x00, 0x00, 0xfe, 0xf7, 0x2a, 0xff, - 0x00, 0x20, 0x26, 0x1c, 0xa0, 0x36, 0x07, 0x4d, - 0x07, 0xe0, 0x0c, 0x21, 0x41, 0x43, 0x49, 0x19, - 0x0e, 0xc9, 0x27, 0x1d, 0x0e, 0xc7, 0x20, 0x34, - 0x01, 0x30, 0xa6, 0x42, 0xf5, 0xd1, 0xf8, 0xbd, - 0xd0, 0x5c, 0x01, 0x00, 0xc8, 0x3f, 0x01, 0x00, - 0xf7, 0xb5, 0xc4, 0x68, 0x06, 0x1c, 0x00, 0x25, - 0x00, 0x2c, 0x82, 0xb0, 0x23, 0xd0, 0x20, 0x89, - 0x3c, 0x00, 0x80, 0x16, 0x00, 0x00, 0x90, 0x42, - 0x20, 0xd3, 0xe1, 0x68, 0x87, 0x1a, 0x01, 0x91, - 0x00, 0x21, 0xe1, 0x60, 0x03, 0x99, 0x00, 0x20, - 0xff, 0xf7, 0xa1, 0xff, 0x05, 0x1c, 0x20, 0x89, - 0xc0, 0x1b, 0x20, 0x81, 0x2a, 0x68, 0x03, 0x99, - 0x30, 0x1c, 0x00, 0xf0, 0x16, 0xf8, 0x20, 0x89, - 0xc0, 0x19, 0x20, 0x81, 0x01, 0x99, 0x20, 0x1c, - 0xff, 0xf7, 0xb1, 0xfe, 0x21, 0x1c, 0x28, 0x1c, - 0xff, 0xf7, 0x3c, 0x00, 0xbc, 0x16, 0x00, 0x00, - 0xad, 0xfe, 0x29, 0x1c, 0x30, 0x1c, 0xff, 0xf7, - 0xa9, 0xfe, 0x01, 0x20, 0x00, 0x2d, 0x00, 0xd1, - 0x00, 0x20, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xf7, 0xb5, 0x04, 0x1c, 0x0e, 0x1c, 0x00, 0x20, - 0x01, 0xe0, 0x20, 0x1c, 0x0c, 0x1c, 0xe1, 0x68, - 0x00, 0x29, 0xfa, 0xd1, 0x27, 0x89, 0xb7, 0x42, - 0x0a, 0xd3, 0xb8, 0x1b, 0x00, 0x04, 0x00, 0x0c, - 0x20, 0x81, 0x21, 0x68, 0x3c, 0x00, 0xf8, 0x16, - 0x00, 0x00, 0x09, 0x18, 0x02, 0x98, 0x32, 0x1c, - 0xfe, 0xf7, 0xfb, 0xfe, 0xfe, 0xbd, 0xf1, 0x1b, - 0x0d, 0x04, 0x2d, 0x0c, 0x00, 0x28, 0x19, 0xd0, - 0x01, 0x89, 0xa9, 0x42, 0x16, 0xd3, 0x49, 0x1b, - 0x09, 0x04, 0x09, 0x0c, 0x01, 0x81, 0x00, 0x68, - 0x41, 0x18, 0x02, 0x98, 0x2a, 0x1c, 0xfe, 0xf7, - 0xe8, 0xfe, 0x21, 0x68, 0x02, 0x98, 0x72, 0x1b, - 0x40, 0x19, 0xfe, 0xf7, 0xe2, 0xfe, 0x3c, 0x00, - 0x34, 0x17, 0x00, 0x00, 0x20, 0x89, 0xc0, 0x1b, - 0x20, 0x81, 0x20, 0x68, 0xc0, 0x19, 0x20, 0x60, - 0xdf, 0xe7, 0x03, 0x21, 0x8e, 0x20, 0xff, 0xf7, - 0xad, 0xfd, 0xda, 0xe7, 0xf8, 0xb5, 0x04, 0x1c, - 0x00, 0x26, 0x13, 0xe0, 0x21, 0x89, 0x00, 0x20, - 0xff, 0xf7, 0x3e, 0xff, 0x05, 0x1c, 0x22, 0x89, - 0x21, 0x68, 0x00, 0x68, 0xfe, 0xf7, 0xc8, 0xfe, - 0x00, 0x2e, 0x01, 0xd1, 0x2e, 0x1c, 0x03, 0xe0, - 0x3c, 0x00, 0x70, 0x17, 0x00, 0x00, 0x29, 0x1c, - 0x38, 0x1c, 0xff, 0xf7, 0x50, 0xfe, 0xe4, 0x68, - 0x2f, 0x1c, 0x00, 0x2c, 0xe9, 0xd1, 0x30, 0x1c, - 0xf8, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x89, - 0x40, 0x1a, 0x05, 0x04, 0x20, 0x68, 0x2d, 0x0c, - 0x40, 0x18, 0x29, 0x1c, 0xff, 0xf7, 0x1f, 0xff, - 0x21, 0x89, 0x49, 0x1b, 0x21, 0x81, 0xe1, 0x68, - 0xc1, 0x60, 0xe0, 0x60, 0xb0, 0xbd, 0x10, 0xb5, - 0x03, 0x30, 0x3c, 0x00, 0xac, 0x17, 0x00, 0x00, - 0x09, 0x4a, 0x81, 0x08, 0x10, 0x68, 0x3d, 0x24, - 0x08, 0x4b, 0x64, 0x01, 0x89, 0x00, 0x09, 0x18, - 0x1b, 0x19, 0x99, 0x42, 0x01, 0xd8, 0x11, 0x60, - 0x10, 0xbd, 0x0f, 0x21, 0x80, 0x20, 0xff, 0xf7, - 0x6b, 0xfd, 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0xb4, 0xcf, 0x01, 0x00, 0x14, 0xc8, 0x01, 0x00, - 0x10, 0xb5, 0x11, 0xf0, 0x61, 0xff, 0x04, 0x1c, - 0x03, 0xd1, 0x0d, 0x21, 0x3c, 0x00, 0xe8, 0x17, - 0x00, 0x00, 0x80, 0x20, 0xff, 0xf7, 0x5b, 0xfd, - 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x01, 0x1f, 0x0b, 0x68, 0x0d, 0x48, 0x00, 0x22, - 0x83, 0x42, 0x04, 0xd0, 0x01, 0x32, 0x10, 0x30, - 0x03, 0x2a, 0xf9, 0xd3, 0x01, 0xe0, 0x03, 0x2a, - 0x06, 0xd3, 0x09, 0x24, 0x21, 0x1c, 0x80, 0x20, - 0xff, 0xf7, 0x45, 0xfd, 0x20, 0x1c, 0xb0, 0xbd, - 0x05, 0x4b, 0x00, 0x24, 0x9a, 0x79, 0x3c, 0x00, - 0x24, 0x18, 0x00, 0x00, 0x85, 0x68, 0x0d, 0x60, - 0x81, 0x60, 0x9a, 0x71, 0xf5, 0xe7, 0x00, 0x00, - 0x20, 0x57, 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, - 0xb0, 0xb5, 0x00, 0x21, 0x10, 0x4a, 0x00, 0x23, - 0xd4, 0x68, 0x84, 0x42, 0x04, 0xd2, 0x01, 0x33, - 0x10, 0x32, 0x03, 0x2b, 0xf8, 0xd3, 0x01, 0xe0, - 0x03, 0x2b, 0x01, 0xd3, 0x04, 0x21, 0x0e, 0xe0, - 0x0a, 0x4c, 0xa3, 0x79, 0x90, 0x68, 0x00, 0x28, - 0x3c, 0x00, 0x60, 0x18, 0x00, 0x00, 0x02, 0xd1, - 0xa3, 0x71, 0x03, 0x21, 0x06, 0xe0, 0x05, 0x68, - 0x95, 0x60, 0xa3, 0x71, 0x00, 0x29, 0x01, 0xd1, - 0x04, 0xc0, 0xb0, 0xbd, 0x80, 0x20, 0xff, 0xf7, - 0x14, 0xfd, 0x00, 0x20, 0xb0, 0xbd, 0x20, 0x57, - 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, 0xa0, 0x30, - 0x00, 0x8a, 0x40, 0x07, 0x40, 0x0f, 0x08, 0x28, - 0x0f, 0xd2, 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x3c, 0x00, 0x9c, 0x18, 0x00, 0x00, - 0x05, 0x03, 0x03, 0x05, 0x07, 0x07, 0x09, 0x09, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x02, 0x20, 0x70, 0x47, 0x03, 0x20, 0x70, 0x47, - 0x04, 0x20, 0x70, 0x47, 0xb0, 0xb5, 0x10, 0x4d, - 0x68, 0x69, 0x00, 0x28, 0x07, 0xd0, 0x0e, 0x49, - 0x00, 0x22, 0x2c, 0x31, 0x03, 0xc9, 0x01, 0x43, - 0x03, 0x20, 0x06, 0xf0, 0xcf, 0xff, 0x0b, 0x4c, - 0x00, 0x22, 0x03, 0xcc, 0x3c, 0x00, 0xd8, 0x18, - 0x00, 0x00, 0x08, 0x3c, 0x01, 0x43, 0x03, 0x20, - 0x06, 0xf0, 0xaf, 0xff, 0x03, 0xcc, 0x08, 0x43, - 0x07, 0x49, 0x4a, 0x68, 0x02, 0x43, 0x4a, 0x60, - 0x8a, 0x68, 0x10, 0x43, 0x88, 0x60, 0x01, 0x20, - 0x68, 0x61, 0xb0, 0xbd, 0x00, 0x00, 0x64, 0x73, - 0x01, 0x00, 0xb0, 0x58, 0x01, 0x00, 0x10, 0x00, - 0x07, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x0f, 0xf0, - 0xa8, 0xfa, 0x05, 0x4d, 0xe8, 0x6a, 0x3c, 0x00, - 0x14, 0x19, 0x00, 0x00, 0x00, 0x28, 0x06, 0xd1, - 0x00, 0x2c, 0x04, 0xd0, 0x20, 0x1c, 0x0f, 0xf0, - 0xb7, 0xfd, 0x01, 0x20, 0x28, 0x70, 0xb0, 0xbd, - 0xf4, 0x6e, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5, - 0x88, 0x6a, 0x00, 0x28, 0x04, 0xda, 0x00, 0x20, - 0x88, 0x62, 0x01, 0x21, 0x0d, 0xf0, 0x42, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7e, 0x01, 0x00, - 0xf8, 0xb5, 0x1e, 0x4d, 0x04, 0x1c, 0x00, 0x20, - 0x3c, 0x00, 0x50, 0x19, 0x00, 0x00, 0x68, 0x62, - 0xa8, 0x70, 0x1c, 0x48, 0x00, 0x78, 0xc0, 0x07, - 0x22, 0xd5, 0xb8, 0x20, 0x03, 0x59, 0x1a, 0x48, - 0x00, 0x78, 0x0e, 0x28, 0x09, 0xd1, 0x0a, 0x1c, - 0x80, 0x32, 0x06, 0xd0, 0x18, 0x4e, 0x0d, 0x20, - 0x32, 0x5c, 0x8a, 0x42, 0x01, 0xdd, 0x01, 0x38, - 0xfa, 0xd1, 0x59, 0x1e, 0x0b, 0x06, 0x1b, 0x0e, - 0xab, 0x70, 0xab, 0x62, 0x0e, 0x28, 0x0b, 0xd2, - 0x08, 0xe0, 0x3c, 0x00, 0x8c, 0x19, 0x00, 0x00, - 0x62, 0x18, 0xb0, 0x32, 0x12, 0x7b, 0x82, 0x42, - 0x02, 0xd8, 0x58, 0x1a, 0xa8, 0x62, 0x02, 0xe0, - 0x01, 0x39, 0x00, 0x29, 0xf4, 0xda, 0x0e, 0xf0, - 0x35, 0xf9, 0x00, 0x90, 0x00, 0xab, 0x18, 0x78, - 0x59, 0x78, 0x81, 0x42, 0x00, 0xd9, 0x58, 0x78, - 0xed, 0x30, 0xe8, 0x70, 0x01, 0x21, 0x20, 0x1c, - 0x0d, 0xf0, 0x02, 0xfd, 0xf8, 0xbd, 0x00, 0x00, - 0xac, 0x7e, 0x01, 0x00, 0x3c, 0x00, 0xc8, 0x19, - 0x00, 0x00, 0x1d, 0x75, 0x01, 0x00, 0x11, 0x67, - 0x01, 0x00, 0xc7, 0x52, 0x01, 0x00, 0x0e, 0x49, - 0x10, 0xb5, 0x08, 0x69, 0x8b, 0x68, 0xc2, 0x00, - 0xd4, 0x18, 0x62, 0x68, 0x00, 0x2a, 0x0f, 0xd1, - 0x01, 0x30, 0x08, 0x61, 0x07, 0x28, 0x01, 0xd1, - 0x00, 0x20, 0x08, 0x61, 0x20, 0x1c, 0x00, 0xf0, - 0x24, 0xf8, 0x05, 0x48, 0x21, 0x68, 0x54, 0x30, - 0x02, 0x6a, 0xfe, 0xf7, 0xec, 0xfc, 0x3c, 0x00, - 0x04, 0x1a, 0x00, 0x00, 0x10, 0xbd, 0x06, 0x21, - 0x06, 0x20, 0xff, 0xf7, 0x4b, 0xfc, 0x10, 0xbd, - 0x50, 0x6d, 0x01, 0x00, 0x08, 0x49, 0x09, 0x79, - 0xc9, 0x07, 0x08, 0x4a, 0x08, 0xd4, 0x00, 0xe0, - 0x08, 0x1c, 0xc1, 0x68, 0x00, 0x29, 0xfb, 0xd1, - 0x01, 0x89, 0x04, 0x31, 0x01, 0x81, 0x00, 0xe0, - 0x00, 0x20, 0xd0, 0x62, 0x70, 0x47, 0x00, 0x00, - 0x60, 0x80, 0x07, 0x00, 0x04, 0x6c, 0x01, 0x00, - 0x3c, 0x00, 0x40, 0x1a, 0x00, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x19, 0x21, 0x89, 0x01, 0x00, 0x20, - 0xff, 0xf7, 0xc5, 0xfd, 0x01, 0x1c, 0x60, 0x60, - 0x20, 0x68, 0xff, 0xf7, 0xe0, 0xfc, 0x60, 0x68, - 0x21, 0x68, 0x08, 0x30, 0x08, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x0a, 0x28, 0x01, 0xda, 0x04, 0x20, - 0x04, 0xe0, 0x50, 0x28, 0x01, 0xda, 0x05, 0x20, - 0x00, 0xe0, 0x07, 0x20, 0x04, 0x4a, 0x11, 0x78, - 0x38, 0x23, 0x3c, 0x00, 0x7c, 0x1a, 0x00, 0x00, - 0xc0, 0x00, 0x18, 0x40, 0x99, 0x43, 0x08, 0x43, - 0x10, 0x70, 0x70, 0x47, 0x88, 0x00, 0x07, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x07, 0x48, 0x40, 0x68, - 0x08, 0xe0, 0x01, 0x69, 0xa9, 0x42, 0x04, 0xd1, - 0x44, 0x68, 0x05, 0xf0, 0xc7, 0xfd, 0x20, 0x1c, - 0x00, 0xe0, 0x40, 0x68, 0x00, 0x28, 0xf4, 0xd1, - 0xb0, 0xbd, 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, - 0xf8, 0xb5, 0x00, 0x25, 0x3c, 0x00, 0xb8, 0x1a, - 0x00, 0x00, 0x06, 0xf0, 0x84, 0xfd, 0x11, 0x4f, - 0x04, 0x1c, 0xbe, 0x79, 0x20, 0x68, 0x00, 0x28, - 0x07, 0xd1, 0xa0, 0x88, 0x04, 0x30, 0xff, 0xf7, - 0xf2, 0xf8, 0x00, 0x28, 0x06, 0xd1, 0x01, 0x21, - 0x0f, 0xe0, 0x01, 0x68, 0x21, 0x60, 0xa1, 0x69, - 0x01, 0x39, 0xa1, 0x61, 0x10, 0xc0, 0x05, 0x1c, - 0x20, 0x69, 0x01, 0x30, 0x20, 0x61, 0x61, 0x69, - 0x40, 0x1a, 0xe1, 0x68, 0x88, 0x42, 0x3c, 0x00, - 0xf4, 0x1a, 0x00, 0x00, 0x03, 0xd9, 0x07, 0x21, - 0x8e, 0x20, 0xff, 0xf7, 0xd3, 0xfb, 0xbe, 0x71, - 0x28, 0x1c, 0xf8, 0xbd, 0x20, 0x10, 0x07, 0x00, - 0xb0, 0xb5, 0x09, 0xf0, 0xbb, 0xff, 0x2f, 0x4c, - 0x00, 0x28, 0x20, 0x74, 0x03, 0xd0, 0x01, 0x21, - 0x01, 0x20, 0x0a, 0xf0, 0x71, 0xfc, 0x2b, 0x4d, - 0x14, 0x35, 0x28, 0x68, 0x00, 0x28, 0x4d, 0xd0, - 0x01, 0x21, 0x0f, 0x20, 0x11, 0xf0, 0x82, 0xfd, - 0x3c, 0x00, 0x30, 0x1b, 0x00, 0x00, 0x28, 0x89, - 0x08, 0xf0, 0xfb, 0xff, 0x01, 0x1c, 0x01, 0x22, - 0x0f, 0x20, 0x11, 0xf0, 0x40, 0xfd, 0xe0, 0x78, - 0x01, 0x25, 0x02, 0x28, 0x36, 0xd1, 0x0a, 0xf0, - 0xc6, 0xf8, 0x00, 0x28, 0x0a, 0xd0, 0x0b, 0xf0, - 0x92, 0xfb, 0x1e, 0x49, 0x09, 0x68, 0x40, 0x18, - 0x11, 0xf0, 0x5f, 0xf8, 0x00, 0x28, 0x01, 0xd1, - 0x02, 0x20, 0x2f, 0xe0, 0xe0, 0x78, 0x02, 0x28, - 0x24, 0xd1, 0x3c, 0x00, 0x6c, 0x1b, 0x00, 0x00, - 0x60, 0x70, 0x25, 0x70, 0x60, 0x68, 0x01, 0x28, - 0x1c, 0xd0, 0x15, 0x48, 0x10, 0x38, 0x81, 0x7b, - 0x00, 0x29, 0x04, 0xd1, 0x85, 0x73, 0x0f, 0x20, - 0x13, 0x49, 0x10, 0xf0, 0x01, 0xfc, 0x08, 0xf0, - 0x4f, 0xfe, 0x00, 0x28, 0x07, 0xd0, 0x0e, 0x48, - 0x01, 0x21, 0x98, 0x38, 0x00, 0x69, 0x01, 0xf0, - 0xb7, 0xfd, 0x00, 0x28, 0x05, 0xd0, 0x01, 0x20, - 0x0e, 0xf0, 0x0c, 0xfd, 0x3c, 0x00, 0xa8, 0x1b, - 0x00, 0x00, 0x01, 0x20, 0x0e, 0xf0, 0x1d, 0xfc, - 0xb0, 0xbd, 0x05, 0xf0, 0xdc, 0xfe, 0xb0, 0xbd, - 0xe0, 0x78, 0x00, 0x28, 0x01, 0xd1, 0x25, 0x70, - 0xf7, 0xe7, 0x03, 0x20, 0x00, 0xe0, 0x04, 0x20, - 0x0d, 0xf0, 0x8d, 0xfa, 0xb0, 0xbd, 0x84, 0x66, - 0x01, 0x00, 0x6c, 0x57, 0x01, 0x00, 0xe9, 0x03, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x00, 0x21, - 0x00, 0x20, 0x0a, 0x4d, 0x00, 0xe0, 0x3c, 0x00, - 0xe4, 0x1b, 0x00, 0x00, 0x01, 0x31, 0xcb, 0x00, - 0x5a, 0x19, 0x16, 0x79, 0x01, 0x2e, 0x02, 0xd0, - 0x52, 0x79, 0xa2, 0x42, 0x02, 0xd0, 0x0b, 0x29, - 0xf4, 0xd3, 0x70, 0xbd, 0x0b, 0x29, 0xfc, 0xd2, - 0xc8, 0x00, 0x01, 0x21, 0x5a, 0x19, 0x28, 0x58, - 0x11, 0x71, 0x70, 0xbd, 0x38, 0x58, 0x01, 0x00, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x7f, 0x24, 0x23, - 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x6a, - 0x3c, 0x00, 0x20, 0x1c, 0x00, 0x00, 0xfe, 0xf7, - 0xda, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x94, 0x46, 0x01, 0x00, 0x80, 0xb5, - 0x04, 0xf0, 0x37, 0xff, 0x00, 0x20, 0x11, 0xf0, - 0x84, 0xfc, 0x00, 0x20, 0x80, 0xbd, 0xb0, 0xb5, - 0x05, 0x4c, 0x05, 0x1c, 0x20, 0x6b, 0xe1, 0x6a, - 0x02, 0xf0, 0xe3, 0xfd, 0x29, 0x1c, 0xa0, 0x6a, - 0x02, 0xf0, 0x11, 0xfb, 0xb0, 0xbd, 0xa4, 0x6c, - 0x01, 0x00, 0x3c, 0x00, 0x5c, 0x1c, 0x00, 0x00, - 0xb0, 0xb5, 0x03, 0x1c, 0x08, 0x1c, 0x14, 0x1c, - 0x00, 0x2b, 0x0c, 0x4d, 0x09, 0xd0, 0x69, 0x69, - 0x89, 0x00, 0x01, 0x31, 0x0a, 0x04, 0x12, 0x0c, - 0x22, 0x80, 0x29, 0x1c, 0xfe, 0xf7, 0x3e, 0xfc, - 0x0a, 0xe0, 0x01, 0x1c, 0x28, 0x1c, 0x22, 0x88, - 0xfe, 0xf7, 0x38, 0xfc, 0x20, 0x88, 0x01, 0x28, - 0x02, 0xd9, 0x80, 0x08, 0x01, 0x38, 0x68, 0x61, - 0x01, 0x20, 0xb0, 0xbd, 0x3c, 0x00, 0x98, 0x1c, - 0x00, 0x00, 0x20, 0x6e, 0x01, 0x00, 0xf1, 0xb5, - 0x00, 0x98, 0x00, 0x26, 0xc1, 0x68, 0x08, 0x68, - 0x09, 0x89, 0x1c, 0x29, 0x34, 0xd3, 0xc1, 0x88, - 0xff, 0x23, 0x01, 0x33, 0x99, 0x42, 0x2f, 0xd1, - 0x01, 0x88, 0xc9, 0x1a, 0x2c, 0xd1, 0x41, 0x88, - 0x08, 0x29, 0x29, 0xd1, 0x01, 0x79, 0x06, 0x29, - 0x26, 0xd1, 0x41, 0x79, 0x04, 0x29, 0x23, 0xd1, - 0x00, 0x25, 0x00, 0x24, 0x07, 0x1c, 0x3c, 0x00, - 0xd4, 0x1c, 0x00, 0x00, 0x18, 0x37, 0x0b, 0xe0, - 0xa0, 0x00, 0x41, 0x18, 0x04, 0x31, 0x04, 0x22, - 0x38, 0x1c, 0xfe, 0xf7, 0x8b, 0xfb, 0x00, 0x28, - 0x01, 0xd1, 0x01, 0x25, 0x04, 0xe0, 0x01, 0x34, - 0x0a, 0x49, 0x48, 0x69, 0xa0, 0x42, 0xef, 0xd8, - 0x08, 0x49, 0x08, 0x78, 0x00, 0x28, 0x0a, 0xd0, - 0x01, 0x28, 0x01, 0xd0, 0x02, 0x28, 0x06, 0xd1, - 0x00, 0x2d, 0x04, 0xd1, 0x00, 0x98, 0xc0, 0x68, - 0x3c, 0x00, 0x10, 0x1d, 0x00, 0x00, 0xff, 0xf7, - 0x42, 0xfc, 0x01, 0x26, 0x30, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x20, 0x6e, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, 0x20, 0x6e, - 0x01, 0x00, 0x02, 0x49, 0x48, 0x60, 0x01, 0x20, - 0x48, 0x61, 0x70, 0x47, 0x00, 0x00, 0x20, 0x6e, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x01, 0x26, - 0x03, 0xf0, 0xef, 0xfa, 0x25, 0x1c, 0x10, 0x35, - 0x00, 0x28, 0x3c, 0x00, 0x4c, 0x1d, 0x00, 0x00, - 0x04, 0xd0, 0x00, 0x20, 0x20, 0x77, 0x03, 0xf0, - 0xf1, 0xfb, 0x07, 0xe0, 0x03, 0xf0, 0x38, 0xfd, - 0x00, 0x28, 0x09, 0xd0, 0x01, 0x20, 0x20, 0x77, - 0x03, 0xf0, 0xce, 0xfc, 0x01, 0x1c, 0x06, 0x22, - 0x28, 0x1c, 0xfe, 0xf7, 0xc3, 0xfb, 0x02, 0xe0, - 0x02, 0x20, 0x20, 0x77, 0x00, 0x26, 0x30, 0x1c, - 0x70, 0xbd, 0x00, 0x00, 0x03, 0x48, 0x80, 0x7a, - 0xc0, 0x07, 0x03, 0x49, 0x3c, 0x00, 0x88, 0x1d, - 0x00, 0x00, 0xc0, 0x0f, 0x88, 0x62, 0x70, 0x47, - 0x00, 0x00, 0x40, 0x90, 0x07, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, 0x88, 0x62, - 0x70, 0x47, 0xa4, 0x6c, 0x01, 0x00, 0x06, 0x48, - 0x80, 0x7a, 0xc1, 0x07, 0x06, 0x4a, 0xc9, 0x0f, - 0x91, 0x62, 0x20, 0x21, 0x80, 0x07, 0x00, 0xd4, - 0x00, 0x21, 0xa0, 0x32, 0x11, 0x70, 0x70, 0x47, - 0x00, 0x00, 0x40, 0x90, 0x07, 0x00, 0x3c, 0x00, - 0xc4, 0x1d, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x07, 0x4a, 0x12, 0x68, 0x07, 0x4b, 0x9b, 0x69, - 0x1a, 0x40, 0x01, 0xd0, 0x01, 0x22, 0x00, 0xe0, - 0x00, 0x22, 0x0a, 0x60, 0x01, 0x21, 0x00, 0x2a, - 0x00, 0xd0, 0x00, 0x21, 0x01, 0x60, 0x70, 0x47, - 0x10, 0x00, 0x07, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x01, 0x22, 0x02, 0x60, 0x0a, 0x60, 0x70, 0x47, - 0xb0, 0xb5, 0x0d, 0x1c, 0x01, 0x1c, 0x58, 0x31, - 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x04, 0x1c, - 0x06, 0x22, 0x28, 0x1d, 0xfe, 0xf7, 0x77, 0xfb, - 0x21, 0x1c, 0x5e, 0x31, 0x06, 0x22, 0x28, 0x1c, - 0x0a, 0x30, 0xfe, 0xf7, 0x70, 0xfb, 0x21, 0x1c, - 0x64, 0x31, 0x06, 0x22, 0x28, 0x1c, 0x10, 0x30, - 0xfe, 0xf7, 0x69, 0xfb, 0xb0, 0xbd, 0xfe, 0xb5, - 0x00, 0x25, 0x1d, 0x72, 0x17, 0x1c, 0x0e, 0x1c, - 0xb2, 0x6d, 0x00, 0x21, 0x92, 0x19, 0x50, 0x32, - 0xd2, 0x7a, 0x3c, 0x00, 0x3c, 0x1e, 0x00, 0x00, - 0x1c, 0x1c, 0x5a, 0x72, 0x00, 0x78, 0x32, 0x1c, - 0x80, 0x32, 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, - 0x01, 0x90, 0x08, 0x98, 0x02, 0x92, 0x00, 0x28, - 0x01, 0xd1, 0x30, 0x7f, 0x2b, 0xe0, 0x37, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x00, 0xdd, 0x01, 0x1c, - 0x01, 0x98, 0x00, 0x28, 0x02, 0xd0, 0x08, 0x98, - 0x01, 0x28, 0x10, 0xd1, 0x02, 0x9a, 0x90, 0x6b, - 0x00, 0x28, 0x06, 0xd0, 0x3c, 0x00, 0x78, 0x1e, - 0x00, 0x00, 0x88, 0x42, 0x01, 0xd9, 0x45, 0x1a, - 0x01, 0x3d, 0x70, 0x19, 0xb0, 0x30, 0x03, 0xe0, - 0xb5, 0x6d, 0x01, 0x3d, 0x70, 0x19, 0x50, 0x30, - 0x00, 0x7b, 0x0f, 0xe0, 0x02, 0x9a, 0x10, 0x6a, - 0x00, 0x28, 0x07, 0xd0, 0x88, 0x42, 0x01, 0xd9, - 0x45, 0x1a, 0x01, 0x3d, 0x70, 0x19, 0xa0, 0x30, - 0x00, 0x79, 0x03, 0xe0, 0xbd, 0x69, 0x01, 0x3d, - 0x78, 0x19, 0x00, 0x7f, 0xa0, 0x72, 0x3c, 0x00, - 0xb4, 0x1e, 0x00, 0x00, 0x0e, 0xf0, 0x0c, 0xf8, - 0x0e, 0x28, 0x11, 0xd1, 0xa0, 0x7a, 0x08, 0xf0, - 0x67, 0xff, 0x00, 0x28, 0x0c, 0xd0, 0x78, 0x68, - 0x00, 0x28, 0x05, 0xd1, 0x1b, 0x48, 0x00, 0x25, - 0x00, 0x78, 0x08, 0xf0, 0x4b, 0xff, 0x02, 0xe0, - 0x45, 0x1e, 0x78, 0x19, 0x00, 0x7a, 0xa0, 0x72, - 0x02, 0x9a, 0x50, 0x69, 0x00, 0x28, 0x17, 0xd0, - 0x08, 0x98, 0x01, 0x28, 0x14, 0xd0, 0xa0, 0x7a, - 0x3c, 0x00, 0xf0, 0x1e, 0x00, 0x00, 0x08, 0xf0, - 0x4e, 0xff, 0x00, 0x28, 0x0f, 0xd0, 0x01, 0x98, - 0x00, 0x28, 0x07, 0xd0, 0x02, 0x20, 0x20, 0x72, - 0x70, 0x6c, 0x80, 0x19, 0x40, 0x30, 0xc0, 0x79, - 0x60, 0x72, 0x04, 0xe0, 0x7d, 0x68, 0x01, 0x3d, - 0x78, 0x19, 0x00, 0x7a, 0xa0, 0x72, 0x02, 0x9a, - 0xa0, 0x7a, 0x91, 0x69, 0x08, 0xf0, 0x51, 0xff, - 0x20, 0x60, 0x02, 0x9a, 0x60, 0x7a, 0x91, 0x69, - 0x08, 0xf0, 0x3c, 0x00, 0x2c, 0x1f, 0x00, 0x00, - 0x4b, 0xff, 0x60, 0x60, 0xa0, 0x7a, 0xe0, 0x72, - 0x25, 0x73, 0xfe, 0xbd, 0xd4, 0x7e, 0x01, 0x00, - 0x90, 0x57, 0x01, 0x00, 0x00, 0x06, 0x00, 0x0e, - 0x00, 0x2a, 0x8c, 0xb5, 0x01, 0xd0, 0x8a, 0x22, - 0x00, 0xe0, 0x88, 0x22, 0x00, 0xab, 0x1a, 0x80, - 0x0c, 0xf0, 0xc2, 0xf8, 0x01, 0x90, 0x68, 0x46, - 0x0b, 0xf0, 0xbc, 0xfa, 0x8c, 0xbd, 0x00, 0x00, - 0x01, 0x1c, 0x08, 0x48, 0x3c, 0x00, 0x68, 0x1f, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x68, 0x00, 0x28, - 0x09, 0xd0, 0x49, 0x68, 0x02, 0x20, 0x00, 0x29, - 0x00, 0xd1, 0x01, 0x20, 0x01, 0x06, 0x09, 0x0e, - 0x00, 0x20, 0x06, 0xf0, 0xd8, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0x1c, 0xb5, - 0x01, 0x90, 0x04, 0x1c, 0x44, 0x30, 0x01, 0xaa, - 0x69, 0x46, 0x11, 0xf0, 0xb8, 0xfd, 0x00, 0x28, - 0x0b, 0xd0, 0xa0, 0x69, 0x00, 0x21, 0x3c, 0x00, - 0xa4, 0x1f, 0x00, 0x00, 0xc2, 0x07, 0xd2, 0x0f, - 0x02, 0x20, 0xff, 0xf7, 0xc9, 0xff, 0x00, 0x21, - 0x20, 0x1c, 0x0f, 0xf0, 0xd9, 0xfe, 0x1c, 0xbd, - 0x04, 0x21, 0x98, 0x20, 0xff, 0xf7, 0x72, 0xf9, - 0xf9, 0xe7, 0x00, 0x00, 0x8c, 0xb5, 0x00, 0xab, - 0x84, 0x21, 0x19, 0x80, 0x05, 0x4b, 0x02, 0x1c, - 0x18, 0x1c, 0x99, 0x8a, 0x0c, 0xf0, 0x8e, 0xf8, - 0x01, 0x90, 0x68, 0x46, 0x0b, 0xf0, 0x7c, 0xfa, - 0x3c, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x8c, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x06, 0x49, 0x80, 0xb5, 0xc9, 0x68, - 0x14, 0x23, 0x40, 0x31, 0x89, 0x7a, 0x04, 0x4a, - 0x59, 0x43, 0x89, 0x18, 0x80, 0x00, 0x08, 0x58, - 0xfe, 0xf7, 0xe9, 0xf9, 0x80, 0xbd, 0x70, 0x7c, - 0x01, 0x00, 0x54, 0x47, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x20, 0xff, 0xf7, 0xd6, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x20, 0x00, 0x00, - 0x80, 0xb5, 0x12, 0x48, 0x11, 0x49, 0x80, 0x8a, - 0x0a, 0x8b, 0x00, 0x21, 0x00, 0x28, 0xc2, 0xb0, - 0x0c, 0xd1, 0x01, 0x2a, 0x05, 0xd0, 0x02, 0x2a, - 0x15, 0xd0, 0x00, 0xab, 0x5a, 0x80, 0x0e, 0x22, - 0x07, 0xe0, 0x02, 0x22, 0x00, 0xab, 0x5a, 0x80, - 0x99, 0x80, 0x04, 0xe0, 0x00, 0xab, 0x5a, 0x80, - 0x0d, 0x22, 0x00, 0xab, 0x9a, 0x80, 0x00, 0xab, - 0x18, 0x80, 0xff, 0x20, 0x3c, 0x00, 0x58, 0x20, - 0x00, 0x00, 0x98, 0x71, 0xd9, 0x71, 0x68, 0x46, - 0x00, 0xf0, 0xd1, 0xf9, 0x42, 0xb0, 0x80, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x09, 0xf0, 0x5f, 0xfc, 0x00, 0x20, 0x05, 0xf0, - 0x2a, 0xf9, 0x03, 0x4c, 0xe0, 0x8a, 0x05, 0xf0, - 0x36, 0xf9, 0x20, 0x1c, 0x0f, 0xf0, 0xb3, 0xfe, - 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x1c, 0xb5, - 0x09, 0xf0, 0x4f, 0xfc, 0x07, 0x20, 0x3c, 0x00, - 0x94, 0x20, 0x00, 0x00, 0x00, 0xab, 0x07, 0x4c, - 0x18, 0x80, 0xe1, 0x8a, 0x20, 0x1c, 0x0c, 0xf0, - 0x0b, 0xf8, 0x01, 0x90, 0x68, 0x46, 0x0b, 0xf0, - 0x17, 0xfa, 0x20, 0x1c, 0x0f, 0xf0, 0x9e, 0xfe, - 0x1c, 0xbd, 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x98, 0x20, 0xff, 0xf7, - 0xf1, 0xf8, 0x80, 0xbd, 0x10, 0xb5, 0x15, 0x4c, - 0xc2, 0xb0, 0xa0, 0x8a, 0x00, 0x28, 0x03, 0xd0, - 0x3c, 0x00, 0xd0, 0x20, 0x00, 0x00, 0x01, 0x28, - 0x1e, 0xd1, 0x02, 0x20, 0x00, 0xe0, 0x01, 0x20, - 0xe1, 0x68, 0x40, 0x31, 0x88, 0x72, 0x20, 0x69, - 0x08, 0xf0, 0x23, 0xfd, 0x02, 0x1c, 0x0c, 0x48, - 0x18, 0x38, 0x80, 0x88, 0xe1, 0x68, 0x0f, 0xf0, - 0xa4, 0xfe, 0xa0, 0x8a, 0x00, 0xab, 0x18, 0x80, - 0x01, 0x20, 0x58, 0x80, 0x00, 0x20, 0x98, 0x80, - 0xff, 0x21, 0x99, 0x71, 0xd8, 0x71, 0x68, 0x46, - 0x00, 0xf0, 0x3c, 0x00, 0x0c, 0x21, 0x00, 0x00, - 0x7b, 0xf9, 0x42, 0xb0, 0x10, 0xbd, 0x03, 0x21, - 0x98, 0x20, 0xff, 0xf7, 0xc5, 0xf8, 0xf8, 0xe7, - 0x70, 0x7c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0x03, 0x48, 0x0f, 0xf0, 0x60, 0xfe, - 0x00, 0x20, 0x05, 0xf0, 0xcd, 0xf8, 0x80, 0xbd, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x48, - 0x0f, 0xf0, 0x56, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0x70, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x48, 0x21, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x98, 0x20, - 0xff, 0xf7, 0xa9, 0xf8, 0x80, 0xbd, 0x80, 0xb5, - 0x03, 0x20, 0xff, 0xf7, 0x34, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0xf0, 0xb5, 0x21, 0x4e, 0x00, 0x27, - 0xb1, 0x8a, 0x30, 0x1c, 0x00, 0x25, 0x04, 0x24, - 0x00, 0x29, 0x00, 0x8b, 0xc3, 0xb0, 0x1e, 0xd1, - 0x01, 0x28, 0x07, 0xd0, 0x31, 0x1c, 0x49, 0x8b, - 0x02, 0x28, 0x12, 0xd1, 0x00, 0x29, 0x3c, 0x00, - 0x84, 0x21, 0x00, 0x00, 0x07, 0xd1, 0x00, 0x24, - 0x05, 0xe0, 0x00, 0x24, 0x01, 0x25, 0x02, 0x20, - 0x00, 0xab, 0xd8, 0x80, 0x1f, 0x81, 0x0f, 0xf0, - 0x7f, 0xff, 0x00, 0x2c, 0x10, 0xd1, 0xf1, 0x68, - 0x05, 0x20, 0x40, 0x31, 0x88, 0x72, 0x0e, 0xe0, - 0x00, 0x29, 0x1a, 0xd1, 0x00, 0xab, 0xd8, 0x80, - 0x0e, 0x20, 0x02, 0xe0, 0x00, 0xab, 0xd8, 0x80, - 0x0d, 0x20, 0x00, 0xab, 0x18, 0x81, 0x07, 0xe0, - 0x3c, 0x00, 0xc0, 0x21, 0x00, 0x00, 0x30, 0x1c, - 0x0f, 0xf0, 0x13, 0xfe, 0x20, 0x1c, 0xff, 0xf7, - 0xfc, 0xfe, 0x00, 0x2d, 0x08, 0xd0, 0xb0, 0x8a, - 0x00, 0xab, 0x98, 0x80, 0xff, 0x20, 0x98, 0x72, - 0xdf, 0x72, 0x01, 0xa8, 0x00, 0xf0, 0x11, 0xf9, - 0x43, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0x10, 0xb5, 0x00, 0x20, 0x05, 0xf0, - 0x6c, 0xf8, 0x04, 0x4c, 0xe0, 0x8a, 0x05, 0xf0, - 0x78, 0xf8, 0x3c, 0x00, 0xfc, 0x21, 0x00, 0x00, - 0x0f, 0xf0, 0x4c, 0xff, 0x20, 0x1c, 0x0f, 0xf0, - 0xf3, 0xfd, 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x80, 0xb5, 0x04, 0x20, 0xff, 0xf7, 0xd8, 0xfe, - 0x01, 0x48, 0x0f, 0xf0, 0xe9, 0xfd, 0x80, 0xbd, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x20, - 0xff, 0xf7, 0xce, 0xfe, 0x01, 0x20, 0x05, 0xf0, - 0x5f, 0xf8, 0x02, 0x48, 0x0f, 0xf0, 0xdc, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x22, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, - 0x03, 0x20, 0xff, 0xf7, 0xc0, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x1d, 0x4d, 0xc2, 0xb0, - 0x28, 0x8b, 0x00, 0xab, 0xff, 0x21, 0x58, 0x80, - 0x99, 0x71, 0x00, 0x21, 0xd9, 0x71, 0xaa, 0x8a, - 0x00, 0x24, 0x01, 0x2a, 0x18, 0xd1, 0x2a, 0x1c, - 0x52, 0x8b, 0x02, 0x28, 0x0f, 0xd1, 0x00, 0x2a, - 0x16, 0xd1, 0x03, 0x20, 0x58, 0x80, 0x3c, 0x00, - 0x74, 0x22, 0x00, 0x00, 0x99, 0x80, 0x2c, 0x1c, - 0xff, 0x22, 0x98, 0x1d, 0xe9, 0x69, 0xfe, 0xf7, - 0x3b, 0xf9, 0xe1, 0x68, 0x04, 0x20, 0x40, 0x31, - 0x88, 0x72, 0x10, 0xe0, 0x00, 0x2a, 0x06, 0xd1, - 0x01, 0x24, 0x0e, 0x20, 0x01, 0xe0, 0x01, 0x24, - 0x0d, 0x20, 0x00, 0xab, 0x98, 0x80, 0x28, 0x1c, - 0x0f, 0xf0, 0xa4, 0xfd, 0x04, 0x20, 0xff, 0xf7, - 0x8d, 0xfe, 0x00, 0x2c, 0x05, 0xd0, 0xa8, 0x8a, - 0x3c, 0x00, 0xb0, 0x22, 0x00, 0x00, 0x00, 0xab, - 0x18, 0x80, 0x68, 0x46, 0x00, 0xf0, 0xa5, 0xf8, - 0x42, 0xb0, 0xb0, 0xbd, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0x10, 0xb5, 0x00, 0x20, 0x05, 0xf0, - 0x00, 0xf8, 0x03, 0x4c, 0xe0, 0x8a, 0x05, 0xf0, - 0x0c, 0xf8, 0x20, 0x1c, 0x0f, 0xf0, 0x89, 0xfd, - 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, - 0x04, 0x20, 0xff, 0xf7, 0x6e, 0xfe, 0x01, 0x48, - 0x0f, 0xf0, 0x3c, 0x00, 0xec, 0x22, 0x00, 0x00, - 0x7f, 0xfd, 0x80, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x20, 0xff, 0xf7, 0x64, 0xfe, - 0x01, 0x20, 0x04, 0xf0, 0xf5, 0xff, 0x02, 0x48, - 0x0f, 0xf0, 0x72, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x20, - 0xff, 0xf7, 0x56, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x19, 0x4d, 0x04, 0x24, 0xa9, 0x8a, - 0x28, 0x1c, 0x02, 0x8b, 0x3c, 0x00, 0x28, 0x23, - 0x00, 0x00, 0xc2, 0xb0, 0x01, 0x29, 0x14, 0xd1, - 0x40, 0x8b, 0x04, 0x2a, 0x0b, 0xd1, 0x00, 0x28, - 0x00, 0xd1, 0x00, 0x24, 0x0f, 0xf0, 0xad, 0xfe, - 0x00, 0x2c, 0x19, 0xd1, 0xe9, 0x68, 0x05, 0x20, - 0x40, 0x31, 0x88, 0x72, 0x17, 0xe0, 0x00, 0x28, - 0x10, 0xd1, 0x00, 0xab, 0x5a, 0x80, 0x0e, 0x20, - 0x02, 0xe0, 0x00, 0xab, 0x5a, 0x80, 0x0d, 0x20, - 0x00, 0xab, 0x98, 0x80, 0x19, 0x80, 0x3c, 0x00, - 0x64, 0x23, 0x00, 0x00, 0xff, 0x20, 0x98, 0x71, - 0x00, 0x20, 0xd8, 0x71, 0x68, 0x46, 0x00, 0xf0, - 0x49, 0xf8, 0x42, 0xb0, 0xb0, 0xbd, 0x28, 0x1c, - 0x0f, 0xf0, 0x38, 0xfd, 0x20, 0x1c, 0xff, 0xf7, - 0x21, 0xfe, 0xf6, 0xe7, 0x70, 0x7c, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x20, 0x04, 0xf0, 0x9e, 0xff, - 0x03, 0x4c, 0xe0, 0x8a, 0x04, 0xf0, 0xaa, 0xff, - 0x20, 0x1c, 0x0f, 0xf0, 0x27, 0xfd, 0x10, 0xbd, - 0x3c, 0x00, 0xa0, 0x23, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0x80, 0xb5, 0x04, 0x20, 0xff, 0xf7, - 0x0c, 0xfe, 0x01, 0x48, 0x0f, 0xf0, 0x1d, 0xfd, - 0x80, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x20, 0xff, 0xf7, 0x02, 0xfe, 0x01, 0x20, - 0x04, 0xf0, 0x93, 0xff, 0x02, 0x48, 0x0f, 0xf0, - 0x10, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x01, 0x1c, - 0x44, 0x31, 0x3c, 0x00, 0xdc, 0x23, 0x00, 0x00, - 0x04, 0x1c, 0x06, 0x22, 0x28, 0x1c, 0xfe, 0xf7, - 0x89, 0xf8, 0xec, 0x60, 0x20, 0x69, 0x03, 0xf0, - 0x97, 0xf8, 0x01, 0x1c, 0x06, 0x22, 0xa8, 0x18, - 0xfe, 0xf7, 0x80, 0xf8, 0x04, 0x20, 0xff, 0xf7, - 0xf7, 0xfd, 0xb0, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x90, 0xb5, 0x04, 0x1c, 0x80, 0x88, 0x93, 0xb0, - 0x00, 0x28, 0x06, 0xd0, 0x15, 0x49, 0x06, 0x22, - 0x48, 0x80, 0x18, 0x31, 0x3c, 0x00, 0x18, 0x24, - 0x00, 0x00, 0x88, 0x1f, 0xfe, 0xf7, 0x6d, 0xf8, - 0x68, 0x46, 0x0c, 0xf0, 0x14, 0xf8, 0x20, 0x88, - 0x01, 0x28, 0x08, 0xd1, 0x60, 0x88, 0x03, 0x28, - 0x05, 0xd1, 0xa0, 0x88, 0x00, 0x28, 0x02, 0xd1, - 0x06, 0x20, 0x0c, 0xa9, 0x08, 0x70, 0xa0, 0x79, - 0x06, 0x21, 0xff, 0x28, 0x04, 0xd0, 0xe0, 0x79, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x1c, 0x08, 0x31, - 0x0b, 0x20, 0x08, 0xaa, 0x50, 0x72, 0x3c, 0x00, - 0x54, 0x24, 0x00, 0x00, 0x20, 0x1c, 0x08, 0xf0, - 0x3b, 0xff, 0x03, 0x90, 0x68, 0x46, 0x0b, 0xf0, - 0x31, 0xf8, 0x13, 0xb0, 0x90, 0xbd, 0x00, 0x00, - 0x58, 0x7c, 0x01, 0x00, 0x07, 0x4b, 0x1a, 0x78, - 0x82, 0x42, 0x01, 0xd0, 0x00, 0x29, 0x07, 0xd0, - 0xff, 0x20, 0x18, 0x70, 0x04, 0x48, 0x01, 0x88, - 0x01, 0x22, 0x52, 0x03, 0x91, 0x43, 0x01, 0x80, - 0x70, 0x47, 0x00, 0x00, 0x4c, 0x7b, 0x01, 0x00, - 0x3c, 0x00, 0x90, 0x24, 0x00, 0x00, 0x32, 0x80, - 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x0c, 0x23, - 0x07, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x79, - 0x0a, 0xf0, 0x4f, 0xf9, 0x01, 0x20, 0x03, 0x49, - 0xa0, 0x40, 0x08, 0x39, 0x0a, 0x78, 0x10, 0x43, - 0x08, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x74, 0x7a, - 0x01, 0x00, 0x03, 0x4a, 0x00, 0x21, 0x11, 0x54, - 0x80, 0x00, 0x30, 0x32, 0x10, 0x58, 0x01, 0x70, - 0x70, 0x47, 0x3c, 0x00, 0xcc, 0x24, 0x00, 0x00, - 0xe0, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xfe, 0xf7, 0x12, 0xff, - 0x20, 0x1c, 0xff, 0xf7, 0xed, 0xff, 0x00, 0x21, - 0x20, 0x1c, 0x0e, 0xf0, 0x89, 0xfb, 0x10, 0xbd, - 0x05, 0x49, 0x80, 0xb5, 0x88, 0x60, 0x08, 0x7f, - 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, 0x08, 0x58, - 0xfd, 0xf7, 0x6c, 0xff, 0x80, 0xbd, 0x00, 0x00, - 0xd4, 0x79, 0x01, 0x00, 0x3c, 0x00, 0x08, 0x25, - 0x00, 0x00, 0x94, 0x46, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x21, 0x91, 0x20, 0xfe, 0xf7, 0xc7, 0xfe, - 0x80, 0xbd, 0x02, 0x4a, 0x11, 0x68, 0x81, 0x43, - 0x11, 0x60, 0x70, 0x47, 0x00, 0x00, 0x78, 0x6e, - 0x01, 0x00, 0x80, 0xb5, 0xfe, 0xf7, 0xe9, 0xfe, - 0x80, 0xbd, 0x80, 0xb5, 0xfe, 0xf7, 0xe5, 0xfe, - 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, 0x31, 0xfa, - 0x80, 0xbd, 0x03, 0x49, 0x80, 0xb5, 0x3c, 0x00, - 0x44, 0x25, 0x00, 0x00, 0x04, 0x20, 0x88, 0x60, - 0x00, 0xf0, 0xd0, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x99, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, - 0x99, 0xfb, 0x80, 0xbd, 0x38, 0xb5, 0x20, 0x28, - 0x15, 0xd2, 0x0d, 0x4c, 0x22, 0x1c, 0x20, 0x32, - 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0xd2, 0x79, - 0x5a, 0x70, 0x0a, 0x4b, 0x82, 0x00, 0x99, 0x50, - 0x3c, 0x00, 0x80, 0x25, 0x00, 0x00, 0x01, 0x21, - 0x81, 0x40, 0x08, 0x48, 0x01, 0x60, 0x42, 0x68, - 0x11, 0x43, 0x41, 0x60, 0x00, 0xab, 0x18, 0x88, - 0xe0, 0x84, 0x38, 0xbd, 0x01, 0x21, 0xff, 0x20, - 0xfe, 0xf7, 0x83, 0xfe, 0xf9, 0xe7, 0x00, 0x10, - 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0x00, 0x40, - 0x07, 0x00, 0x20, 0x28, 0x09, 0xd2, 0x05, 0x49, - 0x06, 0x4b, 0x82, 0x00, 0x99, 0x50, 0x05, 0x4a, - 0x51, 0x68, 0x3c, 0x00, 0xbc, 0x25, 0x00, 0x00, - 0x01, 0x23, 0x83, 0x40, 0x99, 0x43, 0x51, 0x60, - 0x70, 0x47, 0x00, 0x00, 0xa9, 0x75, 0x00, 0x00, - 0x30, 0x74, 0x01, 0x00, 0x00, 0x40, 0x07, 0x00, - 0x02, 0x4a, 0x11, 0x68, 0x08, 0x43, 0x10, 0x60, - 0x70, 0x47, 0x00, 0x00, 0x78, 0x6e, 0x01, 0x00, - 0x0b, 0x48, 0x01, 0x68, 0x03, 0x22, 0x12, 0x04, - 0x11, 0x43, 0x01, 0x60, 0x01, 0x68, 0x07, 0x22, - 0x12, 0x06, 0x91, 0x43, 0x3c, 0x00, 0xf8, 0x25, - 0x00, 0x00, 0x01, 0x22, 0x52, 0x06, 0x89, 0x18, - 0x01, 0x60, 0x01, 0x68, 0x12, 0x0c, 0x11, 0x43, - 0x01, 0x60, 0x01, 0x68, 0x52, 0x08, 0x11, 0x43, - 0x01, 0x60, 0x70, 0x47, 0x00, 0x00, 0x80, 0x00, - 0x07, 0x00, 0xfe, 0xb5, 0x1c, 0x4e, 0x05, 0x1c, - 0xb0, 0x8a, 0xf2, 0x68, 0x12, 0xd0, 0x01, 0x24, - 0x00, 0x29, 0x09, 0xd1, 0x11, 0x6d, 0x02, 0xaa, - 0x01, 0xab, 0xfe, 0xf7, 0xf8, 0xfe, 0x3c, 0x00, - 0x34, 0x26, 0x00, 0x00, 0x02, 0x98, 0x00, 0x28, - 0x01, 0xd0, 0x00, 0x24, 0x0b, 0xe0, 0x01, 0xaa, - 0x02, 0xa9, 0x28, 0x1c, 0xfe, 0xf7, 0x70, 0xff, - 0x05, 0xe0, 0x11, 0x6d, 0x02, 0xaa, 0x00, 0x24, - 0x01, 0xab, 0xfe, 0xf7, 0x01, 0xff, 0x0e, 0x49, - 0x08, 0x1c, 0x20, 0x30, 0x82, 0x79, 0x00, 0xab, - 0x1a, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x30, 0x68, - 0x00, 0x28, 0x02, 0xd1, 0x02, 0x98, 0x30, 0x60, - 0x3c, 0x00, 0x70, 0x26, 0x00, 0x00, 0x02, 0xe0, - 0x02, 0x98, 0x72, 0x68, 0xd0, 0x60, 0x01, 0x98, - 0x00, 0xab, 0x70, 0x60, 0x18, 0x88, 0xc8, 0x84, - 0xf0, 0x68, 0xc0, 0x6c, 0xf0, 0x60, 0x20, 0x1c, - 0xfe, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x00, 0x10, - 0x07, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0x54, 0x27, - 0x1d, 0x4e, 0x00, 0x20, 0x30, 0x60, 0x70, 0x60, - 0x67, 0x43, 0x38, 0x04, 0x15, 0x1c, 0x00, 0x0c, - 0xb1, 0x82, 0x3c, 0x00, 0xac, 0x26, 0x00, 0x00, - 0xff, 0xf7, 0x96, 0xf8, 0x08, 0x21, 0x30, 0x61, - 0x00, 0x26, 0x17, 0x4a, 0x14, 0xe0, 0x03, 0x1c, - 0x24, 0x33, 0x42, 0x61, 0x03, 0x61, 0xc6, 0x61, - 0x01, 0x83, 0x08, 0x33, 0x03, 0x60, 0xb1, 0x23, - 0x43, 0x60, 0x03, 0x1c, 0x64, 0x33, 0xc3, 0x60, - 0x0c, 0x23, 0x03, 0x81, 0x03, 0x1c, 0x54, 0x33, - 0x4c, 0x30, 0x28, 0xc0, 0x01, 0x3c, 0x18, 0x1c, - 0x00, 0x2c, 0xe8, 0xd1, 0x3c, 0x00, 0xe8, 0x26, - 0x00, 0x00, 0x09, 0x4e, 0x07, 0x22, 0x30, 0x69, - 0xd2, 0x43, 0xc1, 0x19, 0x50, 0x50, 0x02, 0x1c, - 0x10, 0x32, 0x80, 0x39, 0x8a, 0x63, 0xf0, 0x60, - 0xb0, 0x60, 0x00, 0x21, 0x00, 0x20, 0xff, 0xf7, - 0x88, 0xff, 0x30, 0x69, 0xf0, 0x60, 0xb0, 0x60, - 0xf8, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x91, 0x00, - 0x05, 0x00, 0x01, 0x48, 0x40, 0x6a, 0x70, 0x47, - 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, 0x3c, 0x00, - 0x24, 0x27, 0x00, 0x00, 0x01, 0x48, 0x00, 0x88, - 0x70, 0x47, 0x00, 0x00, 0xfc, 0x6b, 0x01, 0x00, - 0x06, 0x49, 0x80, 0xb5, 0x08, 0x88, 0x01, 0x30, - 0x08, 0x80, 0x05, 0x49, 0x08, 0x20, 0x08, 0x60, - 0x04, 0x49, 0x88, 0x69, 0x88, 0x61, 0x00, 0xf0, - 0x21, 0xf8, 0x80, 0xbd, 0xfc, 0x6b, 0x01, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x03, 0x4a, 0x01, 0x20, 0x12, 0x1d, 0x06, 0xca, - 0x3c, 0x00, 0x60, 0x27, 0x00, 0x00, 0x91, 0x42, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0xe8, 0x7d, - 0x01, 0x00, 0x06, 0x48, 0x00, 0xb5, 0xc0, 0x7c, - 0x00, 0x28, 0x03, 0xd1, 0xff, 0xf7, 0xef, 0xff, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, 0x00, 0xbd, - 0x00, 0x20, 0x00, 0xbd, 0x00, 0x00, 0xa0, 0x80, - 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x80, 0x07, - 0x02, 0xd5, 0x06, 0xf0, 0x3e, 0xfd, 0x03, 0xe0, - 0xe0, 0x07, 0x3c, 0x00, 0x9c, 0x27, 0x00, 0x00, - 0x01, 0xd5, 0x06, 0xf0, 0xe3, 0xfd, 0x60, 0x07, - 0x01, 0xd5, 0xfe, 0xf7, 0xab, 0xfd, 0x10, 0xbd, - 0x02, 0x4a, 0x01, 0x1c, 0x10, 0x68, 0x11, 0x60, - 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, - 0x38, 0xb5, 0x20, 0x4d, 0x2c, 0x1c, 0x20, 0x34, - 0xa0, 0x79, 0x00, 0xab, 0x18, 0x70, 0xe0, 0x79, - 0x58, 0x70, 0xfe, 0xf7, 0x27, 0xfa, 0x00, 0xab, - 0x18, 0x88, 0xe8, 0x84, 0x3c, 0x00, 0xd8, 0x27, - 0x00, 0x00, 0x1a, 0x48, 0x81, 0x78, 0x08, 0x22, - 0x91, 0x43, 0x81, 0x70, 0x81, 0x78, 0x11, 0x43, - 0x81, 0x70, 0x17, 0x48, 0x41, 0x68, 0x80, 0x22, - 0x91, 0x43, 0x41, 0x60, 0x01, 0x68, 0x11, 0x43, - 0x01, 0x60, 0x00, 0x20, 0x01, 0x30, 0x64, 0x28, - 0xfc, 0xd3, 0xa0, 0x79, 0x0f, 0x4d, 0x00, 0xab, - 0x18, 0x70, 0xe0, 0x79, 0x10, 0x4c, 0x58, 0x70, - 0x20, 0x1c, 0x10, 0x30, 0x00, 0xf0, 0x3c, 0x00, - 0x14, 0x28, 0x00, 0x00, 0xdf, 0xfb, 0x00, 0x20, - 0xc0, 0x43, 0xa0, 0x61, 0xff, 0xf7, 0x9c, 0xff, - 0x00, 0x28, 0x09, 0xd0, 0x0a, 0x49, 0x08, 0x69, - 0x01, 0x30, 0x08, 0x61, 0x00, 0x20, 0x3c, 0x31, - 0x89, 0x68, 0x48, 0x63, 0x06, 0xf0, 0xee, 0xfc, - 0x00, 0xab, 0x18, 0x88, 0xe8, 0x84, 0x38, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, - 0xf4, 0x00, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x3c, 0x00, 0x50, 0x28, 0x00, 0x00, 0xe8, 0x7d, - 0x01, 0x00, 0x0a, 0x48, 0x80, 0xb5, 0x00, 0x6a, - 0x00, 0x28, 0x01, 0xd0, 0xfe, 0xf7, 0xc1, 0xf9, - 0x07, 0x48, 0x07, 0x49, 0x3c, 0x30, 0x80, 0x68, - 0x10, 0x30, 0x48, 0x61, 0x01, 0x20, 0x08, 0x61, - 0x05, 0x49, 0x08, 0x68, 0x80, 0x22, 0x90, 0x43, - 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0xe8, 0x7d, - 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, 0xf4, 0x00, - 0x07, 0x00, 0x3c, 0x00, 0x8c, 0x28, 0x00, 0x00, - 0x80, 0xb5, 0x0c, 0xf0, 0xcb, 0xfe, 0x06, 0xf0, - 0xbf, 0xfc, 0x80, 0xbd, 0x01, 0x49, 0xc8, 0x62, - 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, - 0x02, 0x4a, 0x91, 0x6a, 0x08, 0x43, 0x90, 0x62, - 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, - 0x18, 0x23, 0x06, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x00, 0x21, 0x02, 0x79, 0x03, 0x68, 0x1a, 0x70, - 0x01, 0x31, 0x08, 0x30, 0x3c, 0x00, 0xc8, 0x28, - 0x00, 0x00, 0x03, 0x29, 0xf8, 0xd3, 0x70, 0x47, - 0x00, 0x00, 0x28, 0x52, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, - 0x81, 0x62, 0x70, 0x47, 0x00, 0x00, 0x85, 0x75, - 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0xf8, 0xb5, - 0xff, 0xf7, 0x33, 0xff, 0x28, 0x4f, 0x00, 0x28, - 0x04, 0xd0, 0xff, 0xf7, 0xc8, 0xff, 0x38, 0x6a, - 0x01, 0x30, 0x38, 0x62, 0xf8, 0x6a, 0x3c, 0x00, - 0x04, 0x29, 0x00, 0x00, 0x00, 0x28, 0x02, 0xd0, - 0x01, 0x89, 0x04, 0x39, 0x01, 0x81, 0x38, 0x6b, - 0x00, 0x25, 0x00, 0x28, 0x08, 0xd0, 0x0b, 0x20, - 0x3d, 0x63, 0x10, 0xf0, 0xe5, 0xfa, 0x1e, 0x49, - 0x08, 0x68, 0x21, 0x22, 0x90, 0x43, 0x08, 0x60, - 0x38, 0x78, 0x3c, 0x21, 0x1b, 0x4a, 0x41, 0x43, - 0x8c, 0x18, 0xff, 0x22, 0x79, 0x6a, 0x3a, 0x70, - 0x00, 0x29, 0x0c, 0xd0, 0xb9, 0x69, 0x01, 0x31, - 0x3c, 0x00, 0x40, 0x29, 0x00, 0x00, 0xb9, 0x61, - 0x7d, 0x62, 0xbd, 0x68, 0x00, 0x2d, 0x04, 0xd0, - 0x63, 0x6b, 0x7a, 0x6b, 0x00, 0x21, 0xfd, 0xf7, - 0x47, 0xfd, 0xf8, 0xbd, 0x04, 0x28, 0x03, 0xd3, - 0x01, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0xa1, 0xfc, - 0x38, 0x69, 0x26, 0x1c, 0x01, 0x30, 0x38, 0x61, - 0x20, 0x36, 0x30, 0x78, 0x02, 0x28, 0x03, 0xd0, - 0x0c, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x95, 0xfc, - 0x35, 0x70, 0x3c, 0x00, 0x7c, 0x29, 0x00, 0x00, - 0xa1, 0x69, 0x00, 0x29, 0xe8, 0xd0, 0x63, 0x6b, - 0x30, 0x34, 0x20, 0x78, 0x0c, 0x1c, 0x00, 0x21, - 0x7a, 0x6b, 0xfd, 0xf7, 0x27, 0xfd, 0xdf, 0xe7, - 0x04, 0x6c, 0x01, 0x00, 0xf4, 0x00, 0x07, 0x00, - 0x18, 0xdb, 0x01, 0x00, 0x10, 0xb5, 0x0b, 0x4c, - 0x60, 0x6a, 0x00, 0x28, 0x0e, 0xd0, 0x0a, 0x48, - 0x00, 0xf0, 0x12, 0xfb, 0x00, 0x20, 0x60, 0x62, - 0xa4, 0x68, 0x00, 0x2c, 0x3c, 0x00, 0xb8, 0x29, - 0x00, 0x00, 0x05, 0xd0, 0x7e, 0x23, 0xdb, 0x43, - 0x00, 0x22, 0x01, 0x21, 0xfd, 0xf7, 0x0d, 0xfd, - 0x10, 0xbd, 0xe0, 0x69, 0x01, 0x30, 0xe0, 0x61, - 0x10, 0xbd, 0x04, 0x6c, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x09, 0x48, 0x41, 0x68, 0x3f, 0x22, - 0x12, 0x04, 0x91, 0x43, 0x0d, 0x22, 0x12, 0x04, - 0x89, 0x18, 0x41, 0x60, 0x41, 0x68, 0x01, 0x22, - 0x52, 0x02, 0x91, 0x43, 0x41, 0x60, 0x3c, 0x00, - 0xf4, 0x29, 0x00, 0x00, 0x03, 0x48, 0x81, 0x78, - 0x81, 0x70, 0x81, 0x78, 0x81, 0x70, 0x70, 0x47, - 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, - 0xf0, 0xb5, 0x01, 0x25, 0x08, 0x24, 0x00, 0x20, - 0x0e, 0x4a, 0x0f, 0x49, 0x00, 0x26, 0x3c, 0x23, - 0x43, 0x43, 0xd1, 0x52, 0x9b, 0x18, 0x5d, 0x71, - 0x9b, 0x60, 0x5e, 0x61, 0x1c, 0x82, 0xc0, 0x27, - 0xdf, 0x60, 0x20, 0x27, 0xfe, 0x54, 0x9e, 0x61, - 0x3c, 0x00, 0x30, 0x2a, 0x00, 0x00, 0x30, 0x27, - 0xfe, 0x54, 0x07, 0x4f, 0x3f, 0x18, 0x20, 0x37, - 0x01, 0x30, 0x05, 0x28, 0x9f, 0x63, 0xe9, 0xd3, - 0x05, 0x48, 0xff, 0x32, 0x01, 0x32, 0x90, 0x62, - 0xf0, 0xbd, 0x18, 0xdb, 0x01, 0x00, 0xbe, 0xba, - 0x00, 0x00, 0x30, 0x80, 0x07, 0x00, 0x06, 0x6c, - 0x01, 0x00, 0x01, 0x49, 0x48, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x05, 0x49, - 0x08, 0x5c, 0x3c, 0x00, 0x6c, 0x2a, 0x00, 0x00, - 0x05, 0x49, 0x49, 0x68, 0x40, 0x18, 0xc0, 0x06, - 0xc0, 0x0e, 0x04, 0x49, 0x20, 0x30, 0x48, 0x72, - 0x70, 0x47, 0x00, 0x00, 0xa0, 0x57, 0x01, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x80, 0xb5, 0x15, 0x21, 0x84, 0x20, 0xfe, 0xf7, - 0x07, 0xfc, 0x80, 0xbd, 0xf8, 0xb5, 0x43, 0x48, - 0x84, 0x68, 0x03, 0x34, 0x42, 0x4d, 0x04, 0xe0, - 0x20, 0x1c, 0x10, 0xf0, 0x3c, 0x00, 0xa8, 0x2a, - 0x00, 0x00, 0xb9, 0xf8, 0x00, 0x28, 0x71, 0xd1, - 0x28, 0x69, 0xc0, 0x07, 0xf7, 0xd5, 0x3e, 0x48, - 0x28, 0x60, 0x3e, 0x4a, 0x14, 0x1c, 0x20, 0x34, - 0x20, 0x79, 0x00, 0x90, 0x3c, 0x23, 0x3c, 0x49, - 0x58, 0x43, 0x45, 0x18, 0x28, 0x79, 0xff, 0xf7, - 0xcc, 0xff, 0x28, 0x1c, 0x3a, 0x49, 0x08, 0x30, - 0x48, 0x60, 0x01, 0x26, 0x08, 0x1c, 0x06, 0x60, - 0x68, 0x6a, 0x00, 0x28, 0x0d, 0xd0, 0x3c, 0x00, - 0xe4, 0x2a, 0x00, 0x00, 0xa9, 0x6a, 0x92, 0x6a, - 0x35, 0x4b, 0x9f, 0x68, 0xd7, 0x1b, 0x1a, 0x68, - 0x51, 0x18, 0x79, 0x18, 0x8a, 0x42, 0x5a, 0x68, - 0x00, 0xd8, 0x00, 0xe0, 0x01, 0x32, 0x06, 0xc0, - 0xe8, 0x6a, 0xfe, 0xf7, 0x87, 0xff, 0x2d, 0x49, - 0xe8, 0x6a, 0x48, 0x60, 0x30, 0x1c, 0x0e, 0x60, - 0x66, 0x79, 0x1f, 0xe0, 0x2b, 0x48, 0x46, 0x61, - 0x04, 0x7f, 0x29, 0x49, 0x20, 0x1c, 0x50, 0x39, - 0x3c, 0x00, 0x20, 0x2b, 0x00, 0x00, 0x89, 0x6a, - 0xfd, 0xf7, 0x5a, 0xfc, 0x00, 0x98, 0x84, 0x42, - 0x10, 0xd0, 0x3c, 0x20, 0x22, 0x49, 0x60, 0x43, - 0x40, 0x18, 0x87, 0x69, 0x00, 0x2f, 0x09, 0xd0, - 0x00, 0x21, 0x20, 0x30, 0x01, 0x70, 0x7e, 0x23, - 0xdb, 0x43, 0x02, 0x21, 0x00, 0x22, 0x20, 0x1c, - 0xfd, 0xf7, 0x4c, 0xfc, 0x01, 0x20, 0xa0, 0x40, - 0x86, 0x43, 0x00, 0x2e, 0xdd, 0xd1, 0xe9, 0x69, - 0x00, 0x29, 0x3c, 0x00, 0x5c, 0x2b, 0x00, 0x00, - 0x03, 0xd0, 0x30, 0x20, 0x40, 0x5d, 0xfd, 0xf7, - 0x3a, 0xfc, 0x16, 0x4c, 0x50, 0x3c, 0x60, 0x6a, - 0x00, 0x28, 0x03, 0xd0, 0x0a, 0x21, 0x84, 0x20, - 0xfe, 0xf7, 0x96, 0xfb, 0x20, 0x35, 0x28, 0x78, - 0x01, 0x28, 0x03, 0xd0, 0x0b, 0x21, 0x84, 0x20, - 0xfe, 0xf7, 0x8e, 0xfb, 0x02, 0x20, 0x28, 0x70, - 0xe0, 0x68, 0x01, 0x30, 0x00, 0xe0, 0x07, 0xe0, - 0xe0, 0x60, 0x00, 0x98, 0x3c, 0x00, 0x98, 0x2b, - 0x00, 0x00, 0x20, 0x70, 0x00, 0x98, 0x60, 0x70, - 0x0a, 0x48, 0x00, 0x68, 0x60, 0x63, 0xf8, 0xbd, - 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x40, - 0x07, 0x00, 0x01, 0x00, 0x00, 0x01, 0x30, 0x80, - 0x07, 0x00, 0x18, 0xdb, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x54, 0x6c, 0x01, 0x00, 0x00, 0xa0, - 0x07, 0x00, 0x78, 0x6e, 0x01, 0x00, 0x3c, 0x22, - 0x3c, 0x23, 0x4a, 0x43, 0x09, 0x49, 0x3c, 0x00, - 0xd4, 0x2b, 0x00, 0x00, 0xb0, 0xb5, 0x54, 0x18, - 0x58, 0x43, 0x45, 0x18, 0x21, 0x1c, 0x38, 0x22, - 0x28, 0x1c, 0xfd, 0xf7, 0xe5, 0xfc, 0xa0, 0x6b, - 0x00, 0x78, 0xa9, 0x6b, 0x08, 0x70, 0x00, 0x20, - 0x20, 0x34, 0x20, 0x70, 0xb0, 0xbd, 0x00, 0x00, - 0x18, 0xdb, 0x01, 0x00, 0x3c, 0x23, 0x07, 0x49, - 0x58, 0x43, 0x10, 0xb5, 0x44, 0x18, 0x20, 0x34, - 0x20, 0x78, 0x02, 0x28, 0x03, 0xd1, 0x0d, 0x21, - 0x3c, 0x00, 0x10, 0x2c, 0x00, 0x00, 0x84, 0x20, - 0xfe, 0xf7, 0x47, 0xfb, 0x00, 0x20, 0x20, 0x70, - 0x10, 0xbd, 0x18, 0xdb, 0x01, 0x00, 0xff, 0xb5, - 0x3c, 0x20, 0x48, 0x43, 0x1a, 0x49, 0x81, 0xb0, - 0x44, 0x18, 0x26, 0x1c, 0x20, 0x36, 0x30, 0x78, - 0x15, 0x1c, 0x0f, 0x9f, 0x02, 0x28, 0x03, 0xd1, - 0x04, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x31, 0xfb, - 0x01, 0x20, 0x30, 0x70, 0x25, 0x71, 0x0b, 0x99, - 0x30, 0x22, 0x3c, 0x00, 0x4c, 0x2c, 0x00, 0x00, - 0x61, 0x80, 0x0a, 0x99, 0xe1, 0x62, 0x0d, 0x99, - 0xa1, 0x61, 0x0c, 0x99, 0xe1, 0x61, 0x0e, 0x99, - 0x61, 0x62, 0xa7, 0x62, 0x01, 0x99, 0x11, 0x55, - 0x7e, 0x21, 0xc9, 0x43, 0x61, 0x63, 0x04, 0x99, - 0x00, 0x29, 0x00, 0xd1, 0x00, 0x20, 0x06, 0x1c, - 0x28, 0x1c, 0x08, 0xf0, 0x8b, 0xf8, 0x00, 0x28, - 0x01, 0xd0, 0x02, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0xa1, 0x6b, 0x30, 0x43, 0x3c, 0x00, 0x88, 0x2c, - 0x00, 0x00, 0x08, 0x70, 0x05, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0x18, 0xdb, 0x01, 0x00, 0x80, 0xb5, - 0x14, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x03, 0xfb, - 0x80, 0xbd, 0x01, 0x48, 0x40, 0x78, 0x70, 0x47, - 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x02, 0x48, - 0x00, 0x69, 0xc0, 0x07, 0xc0, 0x0f, 0x70, 0x47, - 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x01, 0x1c, - 0x3c, 0x23, 0x04, 0x4a, 0x59, 0x43, 0x3c, 0x00, - 0xc4, 0x2c, 0x00, 0x00, 0x89, 0x18, 0x20, 0x31, - 0x09, 0x78, 0x01, 0x20, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x18, 0xdb, 0x01, 0x00, - 0x08, 0x48, 0x40, 0x6a, 0x00, 0x28, 0x0a, 0xd1, - 0x07, 0x4a, 0x00, 0x21, 0x20, 0x23, 0x9b, 0x5c, - 0x02, 0x2b, 0x04, 0xd0, 0x01, 0x31, 0x3c, 0x32, - 0x05, 0x29, 0xf7, 0xd3, 0x70, 0x47, 0x01, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, - 0x3c, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x18, 0xdb, - 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, 0x04, 0x1c, - 0x17, 0x1c, 0xfe, 0xf7, 0x82, 0xfe, 0x20, 0x1c, - 0x11, 0x4c, 0x60, 0x60, 0x01, 0x20, 0x20, 0x60, - 0x10, 0x4d, 0x68, 0x69, 0x01, 0x30, 0x68, 0x61, - 0x68, 0x6a, 0x00, 0x28, 0x03, 0xd0, 0x07, 0x21, - 0x84, 0x20, 0xfe, 0xf7, 0xba, 0xfa, 0xa0, 0x68, - 0x40, 0x07, 0x03, 0xd5, 0x06, 0x21, 0x84, 0x20, - 0xfe, 0xf7, 0x3c, 0x00, 0x3c, 0x2d, 0x00, 0x00, - 0xb3, 0xfa, 0x08, 0x48, 0x00, 0x69, 0x00, 0x28, - 0x03, 0xda, 0xaa, 0x21, 0x84, 0x20, 0xfe, 0xf7, - 0xab, 0xfa, 0x02, 0x20, 0x68, 0x62, 0xae, 0x60, - 0x2f, 0x70, 0xf8, 0xbd, 0x00, 0x30, 0x07, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0x00, 0x40, 0x07, 0x00, - 0x04, 0x4a, 0x51, 0x80, 0x10, 0x71, 0x03, 0x48, - 0x03, 0x49, 0x08, 0x30, 0x48, 0x60, 0x01, 0x20, - 0x08, 0x60, 0x70, 0x47, 0x3c, 0x00, 0x78, 0x2d, - 0x00, 0x00, 0x3c, 0x6c, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x00, 0x21, 0x00, 0x23, 0x05, 0xe0, - 0x02, 0x89, 0x43, 0x60, 0xc0, 0x68, 0x51, 0x18, - 0x09, 0x04, 0x09, 0x0c, 0x00, 0x28, 0xf7, 0xd1, - 0x04, 0x31, 0x08, 0x04, 0x00, 0x0c, 0x70, 0x47, - 0x00, 0x00, 0x02, 0x4a, 0x51, 0x6b, 0x08, 0x43, - 0x50, 0x63, 0x70, 0x47, 0x00, 0x00, 0x04, 0x6c, - 0x01, 0x00, 0x38, 0xb5, 0x0a, 0x4c, 0x3c, 0x00, - 0xb4, 0x2d, 0x00, 0x00, 0x22, 0x1c, 0x20, 0x32, - 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0xd2, 0x79, - 0x5a, 0x70, 0x03, 0x68, 0x40, 0x68, 0x06, 0x4a, - 0x50, 0x65, 0x05, 0x48, 0x13, 0x65, 0x50, 0x30, - 0x81, 0x60, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x84, - 0x38, 0xbd, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0x98, 0xb5, 0x0d, 0x4c, - 0x20, 0x1c, 0x20, 0x30, 0x81, 0x79, 0x00, 0xab, - 0x3c, 0x00, 0xf0, 0x2d, 0x00, 0x00, 0x19, 0x70, - 0xc0, 0x79, 0x58, 0x70, 0x0a, 0x48, 0x00, 0xf0, - 0xec, 0xf8, 0x09, 0x49, 0x00, 0x20, 0x48, 0x62, - 0xff, 0xf7, 0x69, 0xff, 0x00, 0x28, 0x03, 0xd0, - 0x12, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x49, 0xfa, - 0x00, 0xab, 0x18, 0x88, 0xe0, 0x84, 0x98, 0xbd, - 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x03, 0x48, - 0x01, 0x7a, 0x3c, 0x00, 0x2c, 0x2e, 0x00, 0x00, - 0xfe, 0x22, 0x91, 0x43, 0x0a, 0x31, 0x01, 0x72, - 0x70, 0x47, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x90, 0xb5, 0x0e, 0x4c, 0x85, 0xb0, 0xa0, 0x78, - 0x02, 0x28, 0x14, 0xd1, 0x03, 0x20, 0xa0, 0x70, - 0x0b, 0x49, 0x00, 0x20, 0x00, 0x22, 0x04, 0x92, - 0x02, 0x90, 0x03, 0x91, 0xe1, 0x88, 0x01, 0x22, - 0x01, 0x92, 0x00, 0x91, 0x61, 0x78, 0x20, 0x78, - 0x22, 0x69, 0xe3, 0x68, 0x3c, 0x00, 0x68, 0x2e, - 0x00, 0x00, 0x08, 0xf0, 0x94, 0xfd, 0x04, 0x48, - 0x09, 0xf0, 0x7f, 0xf9, 0x05, 0xb0, 0x90, 0xbd, - 0x00, 0x00, 0xb4, 0x79, 0x01, 0x00, 0xad, 0xb6, - 0x00, 0x00, 0x71, 0xb6, 0x00, 0x00, 0xb0, 0xb5, - 0x0c, 0x4d, 0xac, 0x79, 0x0c, 0x49, 0x09, 0x78, - 0x00, 0x29, 0x03, 0xd0, 0x01, 0x29, 0x0e, 0xd0, - 0x02, 0x29, 0x08, 0xd1, 0xc2, 0x88, 0x00, 0x2a, - 0x09, 0xd0, 0x01, 0x23, 0x81, 0x68, 0x3c, 0x00, - 0xa4, 0x2e, 0x00, 0x00, 0x02, 0x20, 0x0f, 0xf0, - 0xc1, 0xf8, 0x03, 0xe0, 0x02, 0x21, 0x86, 0x20, - 0xfe, 0xf7, 0xf8, 0xf9, 0xac, 0x71, 0xb0, 0xbd, - 0x20, 0x10, 0x07, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x68, 0x07, 0x49, 0x4a, 0x60, - 0x03, 0x79, 0xca, 0x78, 0xcb, 0x70, 0x00, 0x79, - 0x90, 0x42, 0x06, 0xd0, 0x03, 0x48, 0x14, 0x30, - 0x00, 0x89, 0x07, 0xf0, 0x27, 0xfe, 0x06, 0xf0, - 0x3c, 0x00, 0xe0, 0x2e, 0x00, 0x00, 0xab, 0xfa, - 0x80, 0xbd, 0x84, 0x66, 0x01, 0x00, 0x70, 0xb5, - 0x16, 0x4c, 0x15, 0x4d, 0xa0, 0x78, 0x00, 0x26, - 0x98, 0x3d, 0x01, 0x28, 0x03, 0xd1, 0x28, 0x69, - 0x08, 0xf0, 0xfb, 0xfc, 0xa6, 0x70, 0x60, 0x68, - 0x01, 0x28, 0x03, 0xd0, 0x00, 0x21, 0x28, 0x69, - 0x00, 0xf0, 0xff, 0xfb, 0x0e, 0x48, 0x29, 0x69, - 0x0c, 0xf0, 0x31, 0xfa, 0x01, 0x20, 0x0c, 0xf0, - 0xe4, 0xf8, 0x3c, 0x00, 0x1c, 0x2f, 0x00, 0x00, - 0xe0, 0x78, 0x01, 0x28, 0x02, 0xd0, 0x01, 0x20, - 0x60, 0x70, 0x00, 0xe0, 0x66, 0x70, 0x06, 0x48, - 0x14, 0x30, 0x41, 0x68, 0x01, 0x29, 0x06, 0xd1, - 0x06, 0x60, 0x41, 0x6f, 0x00, 0x29, 0x02, 0xd0, - 0x00, 0x20, 0xfd, 0xf7, 0x4c, 0xfa, 0x70, 0xbd, - 0x84, 0x66, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x30, 0xb5, 0x00, 0x22, 0x00, 0x23, 0x01, 0x25, - 0x2c, 0x1c, 0x94, 0x40, 0x3c, 0x00, 0x58, 0x2f, - 0x00, 0x00, 0x04, 0x40, 0x01, 0xd0, 0xca, 0x54, - 0x01, 0x33, 0x01, 0x32, 0x0e, 0x2a, 0xf6, 0xdb, - 0x18, 0x1c, 0x30, 0xbd, 0x00, 0x00, 0xff, 0xb5, - 0x01, 0x27, 0x00, 0x26, 0x05, 0x1c, 0x02, 0x20, - 0x81, 0xb0, 0x00, 0x90, 0x00, 0x2d, 0x18, 0xd0, - 0x28, 0x78, 0xff, 0x28, 0x15, 0xd0, 0x00, 0x24, - 0x10, 0xe0, 0x28, 0x19, 0x80, 0x78, 0x0a, 0x99, - 0x00, 0x29, 0x01, 0xd0, 0x01, 0x06, 0x3c, 0x00, - 0x94, 0x2f, 0x00, 0x00, 0x08, 0xd5, 0x07, 0xf0, - 0xe9, 0xfe, 0x0e, 0x28, 0x03, 0xd0, 0x01, 0x21, - 0x81, 0x40, 0x0e, 0x43, 0x00, 0xe0, 0x00, 0x27, - 0x01, 0x34, 0x68, 0x78, 0xa0, 0x42, 0xeb, 0xdc, - 0x00, 0x98, 0x02, 0x9d, 0x01, 0x38, 0x00, 0x90, - 0xdf, 0xd1, 0x03, 0x98, 0x31, 0x1c, 0x81, 0x43, - 0x02, 0xd0, 0x03, 0x98, 0x06, 0x40, 0x00, 0x27, - 0x04, 0x98, 0x06, 0x60, 0x05, 0xb0, 0x38, 0x1c, - 0x3c, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0xf0, 0xbd, - 0x00, 0x00, 0x02, 0x21, 0x01, 0x60, 0x64, 0x21, - 0x01, 0xe0, 0x01, 0x39, 0x02, 0xd0, 0x02, 0x68, - 0x92, 0x07, 0xfa, 0xd4, 0x01, 0x20, 0x00, 0x29, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x10, 0xb5, - 0x00, 0x20, 0xc4, 0x43, 0x05, 0x4b, 0x02, 0x22, - 0x01, 0x01, 0x5a, 0x50, 0xc9, 0x18, 0x8c, 0x60, - 0x01, 0x30, 0x08, 0x28, 0xf8, 0xdb, 0x10, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x30, 0x00, 0x00, - 0x00, 0x30, 0x07, 0x00, 0xf0, 0xb5, 0x05, 0x1c, - 0x60, 0x35, 0xc7, 0x6a, 0x04, 0x1c, 0x28, 0x7b, - 0x00, 0x2f, 0x8b, 0xb0, 0x15, 0xd0, 0x08, 0x28, - 0x15, 0xd2, 0x02, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x00, 0x00, 0x07, 0x04, 0x04, 0x07, - 0x09, 0x09, 0x0c, 0x0c, 0x01, 0x26, 0x00, 0x21, - 0x09, 0xe0, 0x00, 0x26, 0x06, 0xe0, 0x02, 0x26, - 0x02, 0x21, 0x04, 0xe0, 0x3c, 0x00, 0x48, 0x30, - 0x00, 0x00, 0x03, 0x26, 0x03, 0x21, 0x01, 0xe0, - 0x04, 0x26, 0x01, 0x21, 0x8c, 0x22, 0x12, 0x59, - 0x07, 0x91, 0x26, 0x49, 0x06, 0x90, 0x04, 0x91, - 0x00, 0x20, 0x03, 0x90, 0x05, 0x97, 0x08, 0x92, - 0xe0, 0x69, 0x22, 0x69, 0x21, 0x1c, 0x70, 0x31, - 0x01, 0x91, 0x21, 0x49, 0x00, 0x90, 0x70, 0x00, - 0x40, 0x18, 0x60, 0x30, 0x02, 0x92, 0x03, 0x88, - 0x59, 0x1c, 0x01, 0x80, 0x1e, 0x48, 0x3c, 0x00, - 0x84, 0x30, 0x00, 0x00, 0x02, 0x88, 0xa1, 0x68, - 0x0a, 0xa8, 0x09, 0xf0, 0xe1, 0xff, 0x60, 0x60, - 0xe8, 0x7a, 0xa1, 0x6a, 0xc9, 0x07, 0x00, 0x07, - 0x00, 0x0e, 0xc9, 0x0d, 0x08, 0x43, 0x61, 0x6a, - 0x22, 0x69, 0xc9, 0x07, 0x89, 0x0d, 0x01, 0x43, - 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x80, 0x03, 0x08, 0x43, 0x21, 0x6a, 0xc9, 0x03, - 0x08, 0x43, 0x08, 0x21, 0x08, 0x43, 0x0a, 0x99, - 0x3c, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x08, 0x80, - 0x20, 0x1c, 0xfe, 0xf7, 0x98, 0xfe, 0x20, 0x69, - 0x00, 0x28, 0x04, 0xd1, 0x20, 0x1c, 0x0a, 0xf0, - 0x82, 0xf9, 0x0b, 0xb0, 0xf0, 0xbd, 0x80, 0x79, - 0x06, 0x28, 0x01, 0xd9, 0xfe, 0xf7, 0x0f, 0xf9, - 0x20, 0x69, 0x06, 0x49, 0x80, 0x79, 0x80, 0x00, - 0x09, 0x58, 0x20, 0x1c, 0xfd, 0xf7, 0x74, 0xf9, - 0xef, 0xe7, 0x79, 0x2f, 0x01, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x30, 0x00, 0x00, - 0x08, 0x61, 0x01, 0x00, 0x74, 0x57, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x58, 0x30, 0x8a, 0xb0, - 0x0e, 0xf0, 0x7c, 0xfe, 0x22, 0x1c, 0x80, 0x32, - 0x51, 0x68, 0x00, 0x29, 0x01, 0xd0, 0x11, 0x7a, - 0x07, 0xe0, 0x00, 0x28, 0x04, 0xd0, 0x80, 0x69, - 0x80, 0x07, 0x01, 0xd5, 0x03, 0x21, 0x00, 0xe0, - 0x01, 0x21, 0xd2, 0x68, 0x07, 0x91, 0x22, 0x49, - 0x00, 0x20, 0x08, 0x92, 0x3c, 0x00, 0x38, 0x31, - 0x00, 0x00, 0x04, 0x91, 0x00, 0x22, 0x05, 0x92, - 0x06, 0x90, 0x03, 0x90, 0xe0, 0x69, 0x22, 0x69, - 0x00, 0x90, 0x21, 0x1c, 0x70, 0x31, 0x1c, 0x48, - 0x01, 0x91, 0x02, 0x92, 0x03, 0x89, 0x59, 0x1c, - 0x01, 0x81, 0x1a, 0x48, 0x02, 0x88, 0xa1, 0x68, - 0x09, 0xa8, 0x09, 0xf0, 0x76, 0xff, 0x60, 0x60, - 0x6b, 0x20, 0x00, 0x5d, 0xa1, 0x6a, 0x22, 0x69, - 0xc9, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x3c, 0x00, - 0x74, 0x31, 0x00, 0x00, 0xc9, 0x0d, 0x01, 0x43, - 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x80, 0x03, 0x08, 0x43, 0x09, 0x99, 0x08, 0x80, - 0x20, 0x1c, 0xfe, 0xf7, 0x35, 0xfe, 0x20, 0x69, - 0x00, 0x28, 0x04, 0xd1, 0x20, 0x1c, 0x0a, 0xf0, - 0x1f, 0xf9, 0x0a, 0xb0, 0x10, 0xbd, 0x80, 0x79, - 0x06, 0x28, 0x01, 0xd9, 0xfe, 0xf7, 0xac, 0xf8, - 0x20, 0x69, 0x07, 0x49, 0x80, 0x79, 0x80, 0x00, - 0x3c, 0x00, 0xb0, 0x31, 0x00, 0x00, 0x09, 0x58, - 0x20, 0x1c, 0xfd, 0xf7, 0x11, 0xf9, 0xef, 0xe7, - 0x00, 0x00, 0xbd, 0x2f, 0x01, 0x00, 0x24, 0x6a, - 0x01, 0x00, 0x08, 0x61, 0x01, 0x00, 0x74, 0x57, - 0x01, 0x00, 0x3e, 0xb5, 0x05, 0x1c, 0x00, 0x69, - 0x04, 0x21, 0x07, 0xf0, 0xd2, 0xfa, 0x00, 0x28, - 0x09, 0xd0, 0x42, 0x78, 0x02, 0x32, 0x01, 0x1c, - 0x68, 0x46, 0xfd, 0xf7, 0x88, 0xf9, 0xe8, 0x6a, - 0x6c, 0x46, 0x3c, 0x00, 0xec, 0x31, 0x00, 0x00, - 0x02, 0x90, 0x00, 0xe0, 0x00, 0x24, 0x28, 0x1c, - 0x14, 0x30, 0x02, 0xf0, 0x03, 0xfb, 0x00, 0x28, - 0x04, 0xd0, 0x21, 0x1c, 0x28, 0x1c, 0x05, 0xf0, - 0xa5, 0xfe, 0x3e, 0xbd, 0x00, 0x2c, 0xfc, 0xd0, - 0x02, 0x49, 0x20, 0x1c, 0x49, 0x69, 0xfd, 0xf7, - 0xe2, 0xf8, 0xf6, 0xe7, 0x44, 0x7d, 0x01, 0x00, - 0x70, 0xb5, 0x1e, 0x1c, 0x18, 0x23, 0x58, 0x43, - 0x06, 0x4b, 0x04, 0x9d, 0x3c, 0x00, 0x28, 0x32, - 0x00, 0x00, 0x19, 0x50, 0xc4, 0x18, 0x00, 0x20, - 0x60, 0x61, 0x62, 0x60, 0xa6, 0x60, 0xe5, 0x60, - 0x0f, 0xf0, 0xb9, 0xfd, 0x20, 0x61, 0x70, 0xbd, - 0x00, 0x00, 0xb8, 0x7d, 0x01, 0x00, 0x02, 0x4a, - 0x01, 0x1c, 0x90, 0x69, 0x91, 0x61, 0x70, 0x47, - 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x6b, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x04, 0x49, 0x04, 0x4b, 0x3c, 0x00, - 0x64, 0x32, 0x00, 0x00, 0xca, 0x68, 0x09, 0x69, - 0x5c, 0x3b, 0x5b, 0x68, 0xc9, 0x1a, 0x41, 0x43, - 0x50, 0x18, 0x70, 0x47, 0xa0, 0x7d, 0x01, 0x00, - 0x01, 0x48, 0x00, 0x78, 0x70, 0x47, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0x80, 0xb5, 0x06, 0x22, - 0x01, 0x49, 0xfd, 0xf7, 0x35, 0xf9, 0x80, 0xbd, - 0xfe, 0x67, 0x01, 0x00, 0xf0, 0xb5, 0x89, 0xb0, - 0x00, 0x93, 0x16, 0x4f, 0x13, 0x1c, 0x0e, 0x1c, - 0x3c, 0x00, 0xa0, 0x32, 0x00, 0x00, 0x04, 0x1c, - 0x3a, 0x1c, 0x01, 0xf0, 0x62, 0xff, 0x01, 0xa9, - 0x06, 0xa8, 0xa2, 0x68, 0x02, 0xf0, 0x0b, 0xf9, - 0x01, 0xaa, 0x06, 0xa9, 0x38, 0x1c, 0x63, 0x6a, - 0x02, 0xf0, 0x81, 0xfc, 0x05, 0x1c, 0x01, 0x28, - 0x14, 0xd1, 0x0c, 0x48, 0xfc, 0x21, 0xc8, 0x51, - 0x38, 0x1c, 0x02, 0xf0, 0x0c, 0xf8, 0x03, 0x21, - 0x30, 0x1c, 0x07, 0xf0, 0x52, 0xfa, 0x00, 0x28, - 0x07, 0xd0, 0x3c, 0x00, 0xdc, 0x32, 0x00, 0x00, - 0x80, 0x78, 0x00, 0xf0, 0x33, 0xfc, 0x20, 0x1c, - 0x10, 0x30, 0x0e, 0xf0, 0x47, 0xfd, 0x00, 0xe0, - 0x00, 0x25, 0x28, 0x1c, 0x09, 0xb0, 0xf0, 0xbd, - 0xf4, 0x67, 0x01, 0x00, 0xc1, 0x38, 0x00, 0x00, - 0x10, 0xb5, 0x07, 0x4c, 0x06, 0x48, 0x06, 0x22, - 0x21, 0x1d, 0x08, 0x38, 0xfd, 0xf7, 0xf6, 0xf8, - 0x01, 0xf0, 0xfc, 0xff, 0x00, 0xf0, 0x42, 0xfc, - 0x20, 0x1c, 0x02, 0xf0, 0x3c, 0x00, 0x18, 0x33, - 0x00, 0x00, 0x27, 0xfc, 0x10, 0xbd, 0xf4, 0x67, - 0x01, 0x00, 0x08, 0x49, 0xc9, 0x68, 0x00, 0x29, - 0x0a, 0xd0, 0x06, 0x4a, 0x01, 0x32, 0x51, 0x78, - 0x12, 0x78, 0x48, 0x43, 0x00, 0x2a, 0x01, 0xd1, - 0x08, 0x18, 0x70, 0x47, 0x10, 0x18, 0x70, 0x47, - 0x01, 0x30, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, 0x00, 0x28, - 0x5a, 0x69, 0x00, 0xd0, 0x01, 0x1c, 0x3c, 0x00, - 0x54, 0x33, 0x00, 0x00, 0x10, 0x1c, 0x59, 0x61, - 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0xb9, 0x75, 0x00, 0x00, 0x07, 0x49, 0x00, 0x20, - 0x0a, 0x78, 0x02, 0x2a, 0x09, 0xd1, 0x0a, 0x7c, - 0x00, 0x2a, 0x05, 0xd1, 0xca, 0x68, 0x00, 0x2a, - 0x03, 0xd0, 0x49, 0x69, 0x00, 0x29, 0x00, 0xd0, - 0x01, 0x20, 0x70, 0x47, 0x78, 0x69, 0x01, 0x00, - 0x0c, 0x4a, 0x80, 0xb5, 0x01, 0x21, 0x51, 0x60, - 0x3c, 0x00, 0x90, 0x33, 0x00, 0x00, 0x09, 0xf0, - 0x6a, 0xf8, 0x09, 0x48, 0x1c, 0x30, 0x81, 0x69, - 0x00, 0x29, 0x07, 0xd0, 0x00, 0x23, 0x83, 0x61, - 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, 0xf0, - 0xd2, 0xf8, 0x80, 0xbd, 0x00, 0x22, 0x00, 0x21, - 0x03, 0x48, 0x00, 0xf0, 0x5c, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0x51, 0x35, - 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x01, 0x28, - 0x16, 0xd1, 0x3c, 0x00, 0xcc, 0x33, 0x00, 0x00, - 0x0e, 0x4d, 0x02, 0x2c, 0x09, 0xd1, 0x00, 0xf0, - 0x2b, 0xfa, 0x00, 0x28, 0x0e, 0xd0, 0x68, 0x69, - 0x00, 0x28, 0x0b, 0xd1, 0x21, 0x1c, 0x13, 0x20, - 0x0c, 0xe0, 0x03, 0x2c, 0xfa, 0xd1, 0x00, 0xf0, - 0xf9, 0xf9, 0x00, 0x28, 0x02, 0xd0, 0x28, 0x7c, - 0x00, 0x28, 0xf3, 0xd0, 0xb0, 0xbd, 0x21, 0x1c, - 0x00, 0x06, 0x00, 0x0e, 0x04, 0xf0, 0x62, 0xfc, - 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x34, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x0c, 0x4c, 0x00, 0x25, 0x25, 0x74, 0x65, 0x61, - 0xe5, 0x60, 0x00, 0xf0, 0x3c, 0xfa, 0x00, 0xf0, - 0x34, 0xfa, 0x07, 0x48, 0x1c, 0x38, 0x05, 0x61, - 0x09, 0xf0, 0x33, 0xff, 0x20, 0x78, 0x00, 0x28, - 0x02, 0xd1, 0x04, 0xf0, 0x6e, 0xfa, 0xb0, 0xbd, - 0x02, 0x28, 0xfc, 0xd1, 0x04, 0xf0, 0xa5, 0xfb, - 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, 0x3c, 0x00, - 0x44, 0x34, 0x00, 0x00, 0x0c, 0x48, 0x80, 0xb5, - 0x01, 0x78, 0x00, 0x29, 0x12, 0xd0, 0xc0, 0x68, - 0x00, 0x28, 0x0f, 0xd1, 0x08, 0x48, 0x1c, 0x38, - 0x40, 0x69, 0x00, 0x28, 0x0a, 0xd1, 0x07, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x06, 0xd0, 0x00, 0x22, - 0x07, 0x21, 0x10, 0x20, 0x10, 0xf0, 0xa0, 0xf9, - 0x02, 0xf0, 0x2c, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0xd4, 0x67, 0x01, 0x00, - 0x3c, 0x00, 0x80, 0x34, 0x00, 0x00, 0xf8, 0xb5, - 0x1d, 0x4e, 0x1c, 0x4d, 0x04, 0x1c, 0xf0, 0x68, - 0x02, 0x27, 0x1c, 0x3d, 0x00, 0x28, 0x07, 0xd0, - 0xe8, 0x68, 0x00, 0x28, 0x04, 0xd0, 0xfd, 0xf7, - 0xc2, 0xfe, 0x00, 0x28, 0x00, 0xd0, 0xbc, 0x43, - 0x00, 0x2c, 0x14, 0xd0, 0x37, 0x70, 0xf0, 0x68, - 0x14, 0x4f, 0x00, 0x28, 0x10, 0xd0, 0xe0, 0x07, - 0x17, 0xd4, 0xfd, 0xf7, 0xb4, 0xfe, 0x00, 0x28, - 0x13, 0xd0, 0x3c, 0x00, 0xbc, 0x34, 0x00, 0x00, - 0x70, 0x69, 0x00, 0x28, 0x06, 0xd1, 0xe8, 0x68, - 0x00, 0x28, 0x01, 0xd0, 0xfd, 0xf7, 0x1a, 0xff, - 0x0d, 0xf0, 0x0a, 0xfa, 0xf8, 0xbd, 0x68, 0x69, - 0x00, 0x28, 0x05, 0xd1, 0x09, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x2c, 0x04, 0xd1, - 0x39, 0x1c, 0x20, 0x1c, 0x0e, 0xf0, 0x52, 0xfd, - 0xf0, 0xe7, 0x04, 0xf0, 0x1d, 0xfb, 0x02, 0xf0, - 0xeb, 0xfb, 0xeb, 0xe7, 0x3c, 0x00, 0xf8, 0x34, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0x50, 0xc3, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x05, 0x48, - 0x41, 0x69, 0x00, 0x29, 0x04, 0xd0, 0x40, 0x6a, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x49, - 0x00, 0x20, 0x48, 0x60, 0x08, 0x60, 0x88, 0x60, - 0x08, 0xf0, 0x9b, 0xff, 0x07, 0x21, 0x3c, 0x00, - 0x34, 0x35, 0x00, 0x00, 0x12, 0x20, 0x22, 0x79, - 0x10, 0xf0, 0x3a, 0xf9, 0x10, 0xbd, 0x00, 0x00, - 0x5c, 0x69, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0x08, 0x60, 0x70, 0x47, 0xe8, 0x67, 0x01, 0x00, - 0xf8, 0xb5, 0x07, 0x1c, 0x0e, 0x1c, 0x08, 0xf0, - 0xa3, 0xfa, 0x13, 0x4d, 0x04, 0x1c, 0x68, 0x68, - 0x00, 0x28, 0x17, 0xd0, 0x00, 0x2f, 0x02, 0xd0, - 0xa8, 0x68, 0x03, 0x28, 0x13, 0xd3, 0x00, 0x20, - 0x3c, 0x00, 0x70, 0x35, 0x00, 0x00, 0xa8, 0x60, - 0x68, 0x60, 0x21, 0x1c, 0x0f, 0x20, 0x0e, 0xf0, - 0xf0, 0xfe, 0x28, 0x68, 0x00, 0x28, 0x03, 0xd0, - 0x00, 0x2c, 0x06, 0xd1, 0x01, 0x20, 0x02, 0xe0, - 0x01, 0x2c, 0x02, 0xd1, 0x00, 0x20, 0xff, 0xf7, - 0xfa, 0xfe, 0xf8, 0xbd, 0x72, 0x1c, 0x00, 0x21, - 0x04, 0x48, 0x00, 0xf0, 0x68, 0xf8, 0xa8, 0x68, - 0x01, 0x30, 0xa8, 0x60, 0xf5, 0xe7, 0x5c, 0x69, - 0x01, 0x00, 0x3c, 0x00, 0xac, 0x35, 0x00, 0x00, - 0x51, 0x35, 0x00, 0x00, 0x0a, 0x49, 0x80, 0xb5, - 0xca, 0x68, 0x00, 0x2a, 0x0b, 0xd0, 0x42, 0x68, - 0x00, 0x2a, 0x09, 0xd0, 0x00, 0x22, 0x4a, 0x62, - 0x02, 0x68, 0x0a, 0x62, 0x02, 0x68, 0x07, 0x21, - 0x17, 0x20, 0x10, 0xf0, 0xef, 0xf8, 0x80, 0xbd, - 0x01, 0x20, 0x48, 0x62, 0x80, 0xbd, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0x70, 0xb5, 0x14, 0x4d, - 0x84, 0x6c, 0xe9, 0x68, 0x3c, 0x00, 0xe8, 0x35, - 0x00, 0x00, 0x00, 0x29, 0x17, 0xd0, 0x40, 0x30, - 0xec, 0x61, 0x40, 0x78, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x68, 0x62, 0x28, 0x6a, 0x0e, 0x4e, - 0x00, 0x1b, 0xb0, 0x42, 0x0c, 0xd2, 0x08, 0xf0, - 0x3a, 0xfe, 0x29, 0x6a, 0x40, 0x1a, 0xb0, 0x42, - 0x03, 0xd2, 0x02, 0x22, 0x07, 0x21, 0x13, 0x20, - 0x09, 0xe0, 0x04, 0xf0, 0xb6, 0xfa, 0x70, 0xbd, - 0x07, 0x48, 0xa9, 0x68, 0x0b, 0xf0, 0x3c, 0x00, - 0x24, 0x36, 0x00, 0x00, 0xbd, 0xfe, 0x22, 0x1c, - 0x07, 0x21, 0x16, 0x20, 0x10, 0xf0, 0xc0, 0xf8, - 0x70, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0xa0, 0x86, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x0a, 0x49, 0x80, 0xb5, 0x00, 0x20, 0x88, 0x61, - 0x08, 0x69, 0x00, 0x28, 0x0c, 0xd0, 0x07, 0x48, - 0x1c, 0x30, 0x00, 0x78, 0x00, 0x28, 0x07, 0xd0, - 0x01, 0xf0, 0xd2, 0xff, 0x02, 0x28, 0x03, 0xd1, - 0x3c, 0x00, 0x60, 0x36, 0x00, 0x00, 0x00, 0xf0, - 0x12, 0xf9, 0x00, 0xf0, 0xbc, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0xf0, 0xb5, - 0x06, 0x1c, 0x0c, 0x1c, 0x15, 0x1c, 0x91, 0xb0, - 0x01, 0xa8, 0x40, 0x21, 0xfc, 0xf7, 0x0d, 0xff, - 0x00, 0x21, 0x68, 0x46, 0xfd, 0xf7, 0xa7, 0xff, - 0x04, 0x90, 0x01, 0xa8, 0x06, 0x22, 0x08, 0x49, - 0xfc, 0xf7, 0x31, 0xff, 0x06, 0x22, 0x02, 0xa8, - 0x02, 0x30, 0x3c, 0x00, 0x9c, 0x36, 0x00, 0x00, - 0x06, 0x49, 0xfc, 0xf7, 0x2b, 0xff, 0x00, 0xab, - 0xdc, 0x76, 0x0c, 0x95, 0x31, 0x1c, 0x01, 0xa8, - 0x07, 0xf0, 0x4e, 0xf8, 0x11, 0xb0, 0xf0, 0xbd, - 0x12, 0x61, 0x01, 0x00, 0xf8, 0x67, 0x01, 0x00, - 0x03, 0x1c, 0x08, 0x1c, 0x19, 0x1c, 0x11, 0x4b, - 0x80, 0xb5, 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, - 0x04, 0x22, 0x19, 0x1c, 0xfc, 0xf7, 0x12, 0xff, - 0x16, 0xe0, 0x04, 0x22, 0x3c, 0x00, 0xd8, 0x36, - 0x00, 0x00, 0x01, 0x1c, 0x18, 0x1c, 0xfc, 0xf7, - 0x0c, 0xff, 0x09, 0x48, 0x10, 0x38, 0x00, 0x69, - 0x00, 0x28, 0x0c, 0xd0, 0x07, 0x48, 0x0c, 0x30, - 0x00, 0x78, 0x00, 0x28, 0x07, 0xd0, 0x01, 0xf0, - 0x84, 0xff, 0x02, 0x28, 0x03, 0xd1, 0x00, 0xf0, - 0xc4, 0xf8, 0x00, 0xf0, 0x6e, 0xf8, 0x01, 0x20, - 0x80, 0xbd, 0x6c, 0x69, 0x01, 0x00, 0xf8, 0xb5, - 0x04, 0x1c, 0x0f, 0x1c, 0x00, 0x25, 0x3c, 0x00, - 0x14, 0x37, 0x00, 0x00, 0x00, 0x26, 0x01, 0xf0, - 0x73, 0xff, 0x02, 0x28, 0x2f, 0xd1, 0x19, 0x49, - 0x01, 0x2f, 0x08, 0x68, 0x07, 0xd1, 0x02, 0x1c, - 0x22, 0x40, 0x0a, 0xd1, 0x20, 0x43, 0x08, 0x60, - 0xa0, 0x42, 0x06, 0xd1, 0x04, 0xe0, 0x00, 0x28, - 0x03, 0xd0, 0xa0, 0x43, 0x08, 0x60, 0x00, 0xd1, - 0x01, 0x25, 0x48, 0x68, 0x00, 0x28, 0x1a, 0xd1, - 0x00, 0x2d, 0x17, 0xd0, 0x01, 0x20, 0x48, 0x60, - 0x3c, 0x00, 0x50, 0x37, 0x00, 0x00, 0x38, 0x1c, - 0x08, 0xf0, 0x89, 0xfe, 0x0b, 0x48, 0x1c, 0x30, - 0x81, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x00, 0x23, - 0x83, 0x61, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, - 0xff, 0xf7, 0xf1, 0xfe, 0x06, 0xe0, 0x00, 0x22, - 0x00, 0x21, 0x04, 0x48, 0xff, 0xf7, 0x7b, 0xff, - 0x00, 0xe0, 0x01, 0x26, 0x30, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0x51, 0x35, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x37, 0x00, 0x00, - 0x03, 0x1c, 0x08, 0x1c, 0x19, 0x1c, 0x12, 0x4b, - 0x80, 0xb5, 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, - 0x04, 0x22, 0x19, 0x1c, 0xfc, 0xf7, 0xaa, 0xfe, - 0x18, 0xe0, 0x04, 0x22, 0x01, 0x1c, 0x18, 0x1c, - 0xfc, 0xf7, 0xa4, 0xfe, 0x0a, 0x48, 0x10, 0x30, - 0xc1, 0x68, 0x00, 0x29, 0x0e, 0xd0, 0x00, 0x78, - 0x00, 0x28, 0x0b, 0xd0, 0x01, 0xf0, 0x1e, 0xff, - 0x02, 0x28, 0x07, 0xd1, 0x3c, 0x00, 0xc8, 0x37, - 0x00, 0x00, 0x00, 0xf0, 0x64, 0xf8, 0x00, 0xf0, - 0x2e, 0xf8, 0x00, 0x28, 0x01, 0xd1, 0x09, 0xf0, - 0x7a, 0xfd, 0x01, 0x20, 0x80, 0xbd, 0x68, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x0a, 0x4c, 0x20, 0x69, - 0x00, 0x28, 0x09, 0xd0, 0xa1, 0x69, 0x00, 0x29, - 0x06, 0xd1, 0x7d, 0x21, 0xc9, 0x00, 0x41, 0x43, - 0x03, 0x22, 0x07, 0x20, 0x0f, 0xf0, 0xe1, 0xfe, - 0x21, 0x69, 0x01, 0x20, 0x00, 0x29, 0x3c, 0x00, - 0x04, 0x38, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x20, - 0x10, 0xbd, 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0x00, 0x28, 0x03, 0xd0, - 0xfd, 0xf7, 0x9a, 0xfc, 0xe0, 0x60, 0x10, 0xbd, - 0x01, 0x20, 0x00, 0x21, 0xe1, 0x60, 0x10, 0xbd, - 0x78, 0x69, 0x01, 0x00, 0x0a, 0x48, 0x0a, 0x49, - 0x10, 0xb5, 0xc0, 0x68, 0x1c, 0x39, 0xc9, 0x68, - 0x00, 0x28, 0x03, 0xd0, 0x00, 0x29, 0x01, 0xd0, - 0x3c, 0x00, 0x40, 0x38, 0x00, 0x00, 0x01, 0x24, - 0x00, 0xe0, 0x00, 0x24, 0x00, 0x2c, 0x03, 0xd0, - 0x02, 0x22, 0x07, 0x20, 0x0f, 0xf0, 0xb7, 0xfe, - 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4c, 0x00, 0x20, - 0x21, 0x69, 0x00, 0x29, 0x0c, 0xd0, 0x06, 0x49, - 0x1c, 0x31, 0x09, 0x78, 0x00, 0x29, 0x07, 0xd0, - 0x00, 0xf0, 0x09, 0xf8, 0x01, 0x20, 0xa0, 0x61, - 0x20, 0x69, 0x3c, 0x00, 0x7c, 0x38, 0x00, 0x00, - 0x7d, 0x23, 0xdb, 0x00, 0x58, 0x43, 0x10, 0xbd, - 0x5c, 0x69, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x21, - 0x07, 0x20, 0x0f, 0xf0, 0xd1, 0xfe, 0x80, 0xbd, - 0x80, 0xb5, 0x02, 0x21, 0x07, 0x20, 0x0f, 0xf0, - 0xcb, 0xfe, 0x80, 0xbd, 0x06, 0x48, 0x80, 0xb5, - 0x00, 0x78, 0x00, 0x28, 0x01, 0xd0, 0xfd, 0xf7, - 0x29, 0xfd, 0x00, 0x22, 0x07, 0x21, 0x11, 0x20, - 0x0f, 0xf0, 0x7c, 0xff, 0x3c, 0x00, 0xb8, 0x38, - 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x10, 0x1c, - 0x06, 0x4a, 0x51, 0x61, 0x00, 0xf0, 0xa3, 0xf8, - 0x10, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x11, 0x20, - 0x00, 0x22, 0x07, 0x21, 0x0f, 0xf0, 0x69, 0xff, - 0x10, 0xbd, 0x5c, 0x69, 0x01, 0x00, 0x01, 0x49, - 0x48, 0x62, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4c, 0x3c, 0x00, - 0xf4, 0x38, 0x00, 0x00, 0xe0, 0x69, 0x00, 0x28, - 0x0c, 0xd1, 0xe0, 0x62, 0x01, 0x20, 0xe0, 0x61, - 0x0b, 0xf0, 0x08, 0xfd, 0x0b, 0xf0, 0x74, 0xfe, - 0x01, 0x20, 0x00, 0xf0, 0xb5, 0xf8, 0x0f, 0xf0, - 0x4d, 0xfa, 0x60, 0x63, 0x10, 0xbd, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0xc8, 0x61, 0x88, 0x63, 0x00, 0xf0, - 0x89, 0xf8, 0x00, 0xf0, 0x01, 0xf9, 0x02, 0xf0, - 0x3c, 0x00, 0x30, 0x39, 0x00, 0x00, 0x91, 0xfb, - 0x80, 0xbd, 0x44, 0x7d, 0x01, 0x00, 0x10, 0xb5, - 0x01, 0x28, 0x38, 0xd1, 0x08, 0x06, 0x00, 0x0e, - 0x05, 0x28, 0x32, 0xd1, 0x1d, 0x4c, 0x20, 0x78, - 0x01, 0x28, 0x09, 0xd0, 0x02, 0x28, 0x1b, 0xd0, - 0x03, 0x28, 0x2a, 0xd1, 0x02, 0xf0, 0x7d, 0xfb, - 0x00, 0xf0, 0x6f, 0xf8, 0x01, 0x20, 0x10, 0xe0, - 0x17, 0x48, 0x21, 0x6b, 0x0b, 0xf0, 0x1b, 0xfd, - 0x0b, 0xf0, 0x3c, 0x00, 0x6c, 0x39, 0x00, 0x00, - 0x41, 0xfe, 0x15, 0x48, 0x00, 0x69, 0x03, 0x28, - 0x01, 0xd3, 0xc0, 0x07, 0x03, 0xd5, 0x01, 0x21, - 0x20, 0x6b, 0x07, 0xf0, 0x19, 0xff, 0x02, 0x20, - 0x00, 0xf0, 0x78, 0xf8, 0x10, 0xbd, 0x0f, 0x48, - 0x00, 0x68, 0x20, 0x64, 0x0a, 0x48, 0x5c, 0x30, - 0xc1, 0x68, 0x02, 0x69, 0x89, 0x18, 0xc1, 0x60, - 0x03, 0xf0, 0xcc, 0xfc, 0x03, 0x20, 0x00, 0xf0, - 0x69, 0xf8, 0x01, 0x20, 0x3c, 0x00, 0xa8, 0x39, - 0x00, 0x00, 0xe0, 0x62, 0x10, 0xbd, 0x09, 0x21, - 0x00, 0xe0, 0x08, 0x21, 0x09, 0x20, 0xfd, 0xf7, - 0x76, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0xf4, 0x68, - 0x01, 0x00, 0x78, 0x6e, 0x01, 0x00, 0xb0, 0xb5, - 0x0f, 0x4c, 0x20, 0x78, 0x65, 0x1e, 0x01, 0x28, - 0x0f, 0xd1, 0x00, 0x20, 0xff, 0xf7, 0xa1, 0xfc, - 0x0c, 0x49, 0x09, 0x88, 0x49, 0x08, 0x3c, 0x00, - 0xe4, 0x39, 0x00, 0x00, 0x40, 0x1a, 0x0f, 0xf0, - 0x19, 0xf9, 0x00, 0x28, 0x04, 0xd0, 0x28, 0x78, - 0x01, 0x28, 0x07, 0xd0, 0x02, 0x28, 0x05, 0xd0, - 0x20, 0x78, 0x00, 0x28, 0x04, 0xd1, 0x28, 0x78, - 0x03, 0x28, 0x01, 0xd1, 0x01, 0x20, 0xb0, 0xbd, - 0x00, 0x20, 0xb0, 0xbd, 0x45, 0x7d, 0x01, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x01, 0x49, 0xc8, 0x64, - 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0x3c, 0x00, 0x20, 0x3a, 0x00, 0x00, 0x04, 0x49, - 0x05, 0x4a, 0x89, 0x68, 0x12, 0x6d, 0x01, 0x20, - 0x91, 0x42, 0x00, 0xd3, 0x00, 0x20, 0x70, 0x47, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, 0x20, 0x6b, - 0x07, 0xf0, 0xf9, 0xfe, 0xa0, 0x6b, 0x00, 0x28, - 0x03, 0xd1, 0x03, 0x48, 0x21, 0x6b, 0x0b, 0xf0, - 0x92, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x3c, 0x00, 0x5c, 0x3a, 0x00, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x04, 0x48, 0x00, 0x78, - 0x02, 0x28, 0x01, 0xd0, 0x03, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x44, 0x7d, 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, - 0xff, 0xf7, 0xd0, 0xff, 0x06, 0x1c, 0x01, 0x2f, - 0x26, 0x4d, 0x1f, 0xd0, 0x02, 0x2f, 0x45, 0xd0, - 0x03, 0x2f, 0x12, 0xd1, 0x24, 0x48, 0x25, 0x4b, - 0x00, 0x69, 0x6a, 0x69, 0x3c, 0x00, 0x98, 0x3a, - 0x00, 0x00, 0x41, 0x08, 0x5a, 0x43, 0x23, 0x4b, - 0xd4, 0x18, 0x8c, 0x42, 0x00, 0xd9, 0x0c, 0x1c, - 0x00, 0x2e, 0x05, 0xd0, 0x1e, 0x49, 0x5b, 0x39, - 0x09, 0x78, 0x00, 0x29, 0x00, 0xd1, 0x04, 0x1c, - 0x05, 0x22, 0x21, 0x1c, 0x09, 0x20, 0x0f, 0xf0, - 0x80, 0xfd, 0x18, 0x4a, 0x5c, 0x3a, 0x17, 0x70, - 0xf8, 0xbd, 0xff, 0xf7, 0xd6, 0xfb, 0x00, 0x28, - 0x02, 0xd0, 0x28, 0x69, 0x00, 0x28, 0x3c, 0x00, - 0xd4, 0x3a, 0x00, 0x00, 0x0e, 0xd0, 0x04, 0xf0, - 0xcf, 0xfb, 0x13, 0x4b, 0x69, 0x69, 0x11, 0x4a, - 0x59, 0x43, 0x5c, 0x3a, 0xd2, 0x6b, 0x89, 0x18, - 0x88, 0x42, 0x01, 0xd9, 0x44, 0x1a, 0x04, 0xe0, - 0x00, 0x24, 0x02, 0xe0, 0x04, 0xf0, 0xae, 0xfd, - 0x04, 0x1c, 0x00, 0x2e, 0xdb, 0xd0, 0x09, 0x48, - 0x5b, 0x38, 0x00, 0x78, 0x01, 0x28, 0xd6, 0xd1, - 0x08, 0x4b, 0x9c, 0x42, 0x02, 0xd9, 0x58, 0x42, - 0x3c, 0x00, 0x10, 0x3b, 0x00, 0x00, 0x24, 0x18, - 0xd0, 0xe7, 0x00, 0x24, 0xce, 0xe7, 0x04, 0xf0, - 0xae, 0xfb, 0xca, 0xe7, 0x00, 0x00, 0xf4, 0x68, - 0x01, 0x00, 0xa0, 0x7d, 0x01, 0x00, 0x98, 0x3a, - 0x00, 0x00, 0x88, 0x13, 0x00, 0x00, 0x80, 0xb5, - 0x05, 0x21, 0x09, 0x20, 0x0f, 0xf0, 0x7d, 0xfd, - 0x02, 0x49, 0x00, 0x20, 0x08, 0x70, 0x80, 0xbd, - 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0x70, 0xb5, - 0x06, 0x1c, 0x3c, 0x00, 0x4c, 0x3b, 0x00, 0x00, - 0x0d, 0xf0, 0xbc, 0xfa, 0xff, 0xf7, 0xce, 0xfe, - 0x09, 0x4c, 0x0a, 0x48, 0x21, 0x6b, 0x0b, 0xf0, - 0x21, 0xfc, 0x01, 0x25, 0x01, 0x21, 0x30, 0x06, - 0x00, 0x0e, 0xa5, 0x63, 0x07, 0xf0, 0x3a, 0xfe, - 0x05, 0x48, 0x29, 0x02, 0x09, 0x58, 0x00, 0x29, - 0x00, 0xd1, 0x05, 0x61, 0x70, 0xbd, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x3b, - 0x00, 0x00, 0x02, 0x4a, 0x11, 0x6c, 0x08, 0x43, - 0x10, 0x64, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xbf, 0xfe, - 0x0b, 0xf0, 0xa1, 0xfb, 0x80, 0xbd, 0x02, 0x4a, - 0x01, 0x1c, 0x10, 0x69, 0x11, 0x61, 0x70, 0x47, - 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0xf3, 0xb5, - 0x06, 0x1c, 0x00, 0x20, 0x89, 0xb0, 0xf8, 0x4c, - 0x08, 0x90, 0xe2, 0x69, 0x08, 0x25, 0x3c, 0x00, - 0xc4, 0x3b, 0x00, 0x00, 0x00, 0x2a, 0x03, 0xd0, - 0x06, 0xa9, 0x07, 0xa8, 0xfc, 0xf7, 0x06, 0xfc, - 0x30, 0x1c, 0xf3, 0x4e, 0x00, 0x27, 0x20, 0x36, - 0x82, 0x28, 0x6f, 0xd0, 0x15, 0xdc, 0x01, 0x28, - 0x18, 0xd0, 0x80, 0x28, 0x6b, 0xd1, 0xee, 0x4d, - 0x80, 0x3d, 0xa8, 0x68, 0x01, 0x28, 0x67, 0xd1, - 0x68, 0x68, 0x0f, 0xf0, 0x1b, 0xf8, 0x00, 0x28, - 0x63, 0xd1, 0x01, 0x21, 0x01, 0x20, 0x0d, 0xf0, - 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x9d, 0xf8, - 0x08, 0xf0, 0xdb, 0xfd, 0x0b, 0xb0, 0xf0, 0xbd, - 0x83, 0x28, 0x6d, 0xd0, 0x84, 0x28, 0x55, 0xd1, - 0xe7, 0xe0, 0x0a, 0x98, 0x0a, 0x28, 0x04, 0xd2, - 0x03, 0xa3, 0x1b, 0x18, 0x1b, 0x5a, 0x5b, 0x00, - 0x9f, 0x44, 0xf6, 0xe0, 0x00, 0x00, 0xee, 0x00, - 0x0b, 0x00, 0xf7, 0x00, 0xf7, 0x00, 0xf7, 0x00, - 0xf7, 0x00, 0x2f, 0x00, 0x88, 0x00, 0x8b, 0x00, - 0xad, 0x00, 0x3c, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x00, 0xf0, 0x56, 0xfe, 0x00, 0x28, 0x17, 0xd0, - 0xd6, 0x4a, 0x80, 0x3a, 0xd1, 0x6a, 0x06, 0x98, - 0x81, 0x42, 0x16, 0xd0, 0x06, 0x21, 0x00, 0x28, - 0x00, 0xd1, 0x07, 0x21, 0x0d, 0x06, 0x2d, 0x0e, - 0x00, 0x28, 0x0e, 0xd0, 0xcf, 0x4a, 0x01, 0x20, - 0x80, 0x3a, 0x50, 0x65, 0x0f, 0xf0, 0xa0, 0xf8, - 0xcc, 0x4a, 0x80, 0x3a, 0x50, 0x66, 0x04, 0xe0, - 0x00, 0x21, 0x16, 0x20, 0x3c, 0x00, 0x78, 0x3c, - 0x00, 0x00, 0x0f, 0xf0, 0xdc, 0xfc, 0x01, 0x25, - 0x02, 0x20, 0x05, 0x90, 0x2e, 0xe2, 0xc6, 0x48, - 0x80, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x2e, 0xd0, - 0xc6, 0x49, 0x20, 0x69, 0xc4, 0x4d, 0x40, 0x18, - 0x0e, 0xf0, 0xc1, 0xff, 0x00, 0x28, 0x12, 0xd0, - 0x0f, 0xf0, 0x85, 0xf8, 0xc1, 0x49, 0x49, 0x42, - 0x40, 0x18, 0xbd, 0x49, 0x20, 0x61, 0x80, 0x39, - 0x48, 0x6e, 0x40, 0x19, 0x0e, 0xf0, 0x3c, 0x00, - 0xb4, 0x3c, 0x00, 0x00, 0xbb, 0xff, 0x00, 0x28, - 0x11, 0xd0, 0x0a, 0xe0, 0xf7, 0xe0, 0x17, 0xe2, - 0xb2, 0xe0, 0xb0, 0xe0, 0xb6, 0x49, 0x20, 0x69, - 0x80, 0x39, 0x49, 0x6e, 0x40, 0x1a, 0xa8, 0x42, - 0x05, 0xdb, 0xb3, 0x49, 0xb5, 0x4d, 0x80, 0x39, - 0x4f, 0x65, 0x03, 0xf0, 0x27, 0xfb, 0x06, 0x22, - 0x29, 0x1c, 0x16, 0x20, 0x0f, 0xf0, 0x72, 0xfc, - 0x47, 0xe0, 0x95, 0xe0, 0x00, 0xf0, 0xfe, 0xfd, - 0x3c, 0x00, 0xf0, 0x3c, 0x00, 0x00, 0x00, 0x28, - 0x42, 0xd1, 0xaa, 0x4d, 0xc4, 0x3d, 0xef, 0x60, - 0x08, 0xf0, 0x19, 0xfd, 0x03, 0xf0, 0x15, 0xfb, - 0xa8, 0x6a, 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, - 0x4c, 0xff, 0xaf, 0x62, 0xa4, 0x48, 0x80, 0x38, - 0x00, 0x68, 0x00, 0x21, 0xff, 0xf7, 0xf9, 0xfc, - 0x08, 0xf0, 0x3f, 0xf9, 0x09, 0x21, 0x16, 0x20, - 0x0f, 0xf0, 0x87, 0xfc, 0x00, 0x22, 0x16, 0x21, - 0x83, 0x20, 0x3c, 0x00, 0x2c, 0x3d, 0x00, 0x00, - 0x0f, 0xf0, 0x40, 0xfd, 0xff, 0xf7, 0x86, 0xfc, - 0x21, 0xe0, 0x00, 0xf0, 0x1b, 0xfe, 0x1e, 0xe0, - 0x06, 0xf0, 0x54, 0xfa, 0x97, 0x4d, 0x80, 0x3d, - 0xa9, 0x6f, 0x40, 0x1a, 0x04, 0x90, 0x06, 0x98, - 0x00, 0x28, 0x01, 0xd0, 0xaf, 0x65, 0x02, 0xe0, - 0xa8, 0x6d, 0x00, 0x28, 0x08, 0xd1, 0x91, 0x48, - 0xc4, 0x38, 0x00, 0x78, 0x80, 0x07, 0x03, 0xd5, - 0x92, 0x48, 0x47, 0x60, 0x3c, 0x00, 0x68, 0x3d, - 0x00, 0x00, 0x00, 0xf0, 0x02, 0xfe, 0x04, 0x98, - 0xff, 0x38, 0x23, 0x38, 0x14, 0x28, 0x02, 0xd2, - 0x01, 0x20, 0xe8, 0x63, 0x53, 0xe0, 0xef, 0x63, - 0x51, 0xe0, 0x87, 0x4a, 0xb5, 0x7a, 0x80, 0x3a, - 0x00, 0x2d, 0x4c, 0xd0, 0x0d, 0xf0, 0x71, 0xff, - 0x00, 0xf0, 0xad, 0xfd, 0x07, 0x1c, 0x82, 0x48, - 0x80, 0x38, 0x40, 0x6f, 0xff, 0x30, 0x5f, 0x30, - 0x0e, 0xf0, 0x3d, 0xff, 0x02, 0x1c, 0x3c, 0x00, - 0xa4, 0x3d, 0x00, 0x00, 0x7e, 0x48, 0x80, 0x38, - 0x40, 0x6d, 0x00, 0x28, 0x1a, 0xd1, 0x00, 0xf0, - 0xf1, 0xfd, 0x00, 0x28, 0x16, 0xd1, 0x04, 0x2d, - 0x02, 0xd1, 0x00, 0x2f, 0x12, 0xd1, 0x1b, 0xe0, - 0x00, 0x2f, 0x06, 0xd0, 0x02, 0x2d, 0x14, 0xd0, - 0x79, 0x48, 0x40, 0x68, 0x00, 0x28, 0x09, 0xd0, - 0x12, 0xe0, 0x00, 0x2a, 0x10, 0xd1, 0x4b, 0x21, - 0xc9, 0x00, 0x01, 0x23, 0x09, 0x22, 0x16, 0x20, - 0x3c, 0x00, 0xe0, 0x3d, 0x00, 0x00, 0x0f, 0xf0, - 0xd6, 0xfc, 0x6e, 0x4a, 0x73, 0x48, 0x80, 0x3a, - 0x11, 0x68, 0x0b, 0xf0, 0xd8, 0xfa, 0x18, 0xe0, - 0x01, 0x21, 0x00, 0x20, 0x01, 0xe0, 0x01, 0x21, - 0x01, 0x20, 0x00, 0xf0, 0x2a, 0xfe, 0x10, 0xe0, - 0x67, 0x4a, 0x6c, 0x49, 0x80, 0x3a, 0x90, 0x6e, - 0x40, 0x18, 0x90, 0x66, 0x01, 0x25, 0x08, 0x95, - 0x8b, 0xe1, 0x04, 0x21, 0x6c, 0xe1, 0x61, 0x4a, - 0x66, 0x48, 0x3c, 0x00, 0x1c, 0x3e, 0x00, 0x00, - 0x80, 0x3a, 0x11, 0x68, 0x0b, 0xf0, 0xaa, 0xfa, - 0x88, 0xe1, 0xaf, 0x60, 0xa8, 0x6f, 0xe8, 0x67, - 0x63, 0x48, 0x01, 0x6d, 0xa9, 0x67, 0x07, 0x9a, - 0x14, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x08, 0x18, 0x12, 0x30, 0xa8, 0x66, 0x70, 0x78, - 0xb0, 0x70, 0x30, 0x78, 0x70, 0x70, 0x02, 0x20, - 0x30, 0x70, 0xa0, 0x69, 0xfc, 0xf7, 0xc2, 0xfa, - 0xef, 0x64, 0xa8, 0x6f, 0x3c, 0x00, 0x58, 0x3e, - 0x00, 0x00, 0xe9, 0x6f, 0x59, 0x4b, 0x40, 0x1a, - 0x98, 0x42, 0x12, 0xd2, 0x68, 0x6d, 0x06, 0x99, - 0x88, 0x42, 0x0e, 0xd0, 0x30, 0x78, 0x02, 0x28, - 0x0b, 0xd8, 0x0e, 0xf0, 0x9c, 0xff, 0xa9, 0x6f, - 0x08, 0x22, 0x40, 0x1a, 0x52, 0x49, 0x09, 0x1a, - 0x3b, 0x1c, 0x16, 0x20, 0x0f, 0xf0, 0x85, 0xfc, - 0x00, 0xe0, 0xaf, 0x65, 0x01, 0x20, 0x05, 0x90, - 0x08, 0x90, 0x43, 0x48, 0x02, 0x25, 0x3c, 0x00, - 0x94, 0x3e, 0x00, 0x00, 0xc4, 0x38, 0xc1, 0x68, - 0x00, 0x29, 0x72, 0xd1, 0x01, 0x21, 0xc1, 0x60, - 0x49, 0x48, 0x00, 0x6b, 0x00, 0x28, 0x6c, 0xd0, - 0x08, 0xf0, 0x66, 0xfc, 0x69, 0xe0, 0x3c, 0x48, - 0x00, 0x22, 0x01, 0x92, 0x80, 0x38, 0x80, 0x68, - 0x01, 0x28, 0x04, 0xd1, 0x38, 0x48, 0x80, 0x38, - 0x87, 0x60, 0x01, 0x20, 0x48, 0xe1, 0x3a, 0x48, - 0x01, 0x23, 0x43, 0x60, 0x34, 0x48, 0xc4, 0x38, - 0x3c, 0x00, 0xd0, 0x3e, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x28, 0x0a, 0xd1, 0x00, 0xf0, 0x25, 0xfe, - 0x00, 0x28, 0x06, 0xd0, 0xff, 0x21, 0x91, 0x31, - 0x01, 0x23, 0x09, 0x22, 0x16, 0x20, 0x0f, 0xf0, - 0x52, 0xfc, 0x2c, 0x49, 0x80, 0x39, 0x48, 0x6f, - 0x89, 0x6f, 0x42, 0x1a, 0x03, 0x92, 0x06, 0xf0, - 0x76, 0xf9, 0x28, 0x49, 0x80, 0x39, 0x89, 0x6f, - 0x03, 0x9a, 0x40, 0x1a, 0x02, 0x90, 0x37, 0x20, - 0x00, 0x01, 0x3c, 0x00, 0x0c, 0x3f, 0x00, 0x00, - 0x10, 0x1a, 0x50, 0x28, 0x0d, 0xd2, 0x23, 0x48, - 0x80, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x04, 0xd1, - 0x02, 0x98, 0xff, 0x38, 0x55, 0x38, 0x14, 0x28, - 0x01, 0xd2, 0x01, 0x22, 0x00, 0xe0, 0x00, 0x22, - 0x01, 0x92, 0x03, 0x9a, 0x01, 0x20, 0xff, 0x3a, - 0x0b, 0x3a, 0x50, 0x2a, 0x00, 0xd3, 0x00, 0x20, - 0x04, 0x90, 0x00, 0x28, 0x0a, 0xd0, 0x17, 0x48, - 0x80, 0x38, 0xc0, 0x6f, 0x3c, 0x00, 0x48, 0x3f, - 0x00, 0x00, 0x08, 0x1a, 0x9b, 0x21, 0xc9, 0x00, - 0x40, 0x1a, 0x14, 0x28, 0x01, 0xd2, 0x01, 0x22, - 0x00, 0xe0, 0x00, 0x22, 0x00, 0x92, 0x00, 0x2a, - 0x11, 0xd0, 0x0f, 0x4d, 0x01, 0x20, 0x80, 0x3d, - 0x68, 0x65, 0x0e, 0xf0, 0x20, 0xff, 0x68, 0x66, - 0x01, 0x25, 0x01, 0x21, 0x16, 0x20, 0x0f, 0xf0, - 0x5e, 0xfb, 0x00, 0x21, 0x16, 0x20, 0x0f, 0xf0, - 0x5a, 0xfb, 0x00, 0xe0, 0xba, 0xe0, 0x3c, 0x00, - 0x84, 0x3f, 0x00, 0x00, 0xf0, 0x79, 0x02, 0x28, - 0x3c, 0xd8, 0x05, 0x4a, 0x80, 0x3a, 0x51, 0x6c, - 0x00, 0x29, 0x37, 0xd1, 0x13, 0x6c, 0x11, 0x1c, - 0x00, 0x2b, 0x33, 0xd1, 0x16, 0xe0, 0x00, 0x00, - 0x24, 0x6d, 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, - 0xc0, 0x5c, 0x15, 0x00, 0x70, 0x99, 0x14, 0x00, - 0xb0, 0x57, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xe2, 0x04, 0x00, 0x00, 0x00, 0x90, 0x07, 0x00, - 0x3c, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x53, 0x07, - 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00, 0xc8, 0x57, - 0x01, 0x00, 0x4a, 0x6d, 0x00, 0x2a, 0x02, 0xd0, - 0xb2, 0x7a, 0x02, 0x2a, 0x15, 0xd1, 0x00, 0x9a, - 0x00, 0x2a, 0x03, 0xd0, 0xca, 0x6d, 0x01, 0x32, - 0xca, 0x65, 0x00, 0xe0, 0xcf, 0x65, 0x01, 0x9a, - 0x00, 0x2a, 0x0b, 0xd0, 0x8a, 0x6f, 0xcb, 0x6f, - 0xd2, 0x1a, 0x5a, 0x4b, 0x9a, 0x42, 0x02, 0xd2, - 0x8a, 0x6d, 0x3c, 0x00, 0xfc, 0x3f, 0x00, 0x00, - 0x01, 0x32, 0x00, 0xe0, 0x01, 0x22, 0x8a, 0x65, - 0x00, 0xe0, 0x8f, 0x65, 0x04, 0x99, 0x00, 0x29, - 0x01, 0xd1, 0x02, 0x28, 0x0b, 0xd9, 0x54, 0x4a, - 0x02, 0x28, 0x1e, 0xd9, 0xd0, 0x6f, 0x61, 0x68, - 0x88, 0x42, 0x1a, 0xd1, 0x91, 0x6f, 0x08, 0x1a, - 0x50, 0x49, 0x88, 0x42, 0x15, 0xdd, 0x4e, 0x4b, - 0x98, 0x6f, 0xe1, 0x68, 0x40, 0x1a, 0x7d, 0x21, - 0xc9, 0x00, 0x88, 0x42, 0x3c, 0x00, 0x38, 0x40, - 0x00, 0x00, 0x0b, 0xdd, 0x61, 0x69, 0x40, 0x1a, - 0x00, 0x28, 0x04, 0xdd, 0x02, 0x11, 0x40, 0x11, - 0x10, 0x18, 0x40, 0x18, 0x01, 0xe0, 0x80, 0x10, - 0x08, 0x18, 0x60, 0x61, 0x58, 0x6f, 0xe0, 0x60, - 0x03, 0x98, 0xff, 0x38, 0x23, 0x38, 0x14, 0x28, - 0x09, 0xd2, 0x02, 0x98, 0xff, 0x38, 0x23, 0x38, - 0x14, 0x28, 0x04, 0xd2, 0x3e, 0x4a, 0x90, 0x6f, - 0x50, 0x64, 0x90, 0x6a, 0x90, 0x64, 0x3c, 0x00, - 0x74, 0x40, 0x00, 0x00, 0x0e, 0xf0, 0x9a, 0xfe, - 0x3a, 0x49, 0x49, 0x6c, 0x40, 0x1a, 0x3b, 0x49, - 0x88, 0x42, 0x01, 0xd9, 0x37, 0x49, 0x4f, 0x64, - 0x39, 0x49, 0x03, 0x98, 0x40, 0x18, 0x14, 0x28, - 0x07, 0xd2, 0x34, 0x49, 0xc8, 0x6b, 0x00, 0x28, - 0x03, 0xd0, 0x88, 0x6f, 0x08, 0x64, 0x88, 0x6a, - 0x88, 0x64, 0x0e, 0xf0, 0x83, 0xfe, 0x2f, 0x49, - 0x09, 0x6c, 0x40, 0x1a, 0x31, 0x49, 0x88, 0x42, - 0x3c, 0x00, 0xb0, 0x40, 0x00, 0x00, 0x01, 0xd9, - 0x2c, 0x48, 0x07, 0x64, 0x04, 0x20, 0x05, 0x90, - 0x08, 0x21, 0x16, 0x20, 0x0f, 0xf0, 0xb9, 0xfa, - 0x28, 0x48, 0x40, 0x6d, 0x00, 0x28, 0x02, 0xd0, - 0x04, 0x99, 0x00, 0x29, 0x08, 0xd0, 0x29, 0x49, - 0x00, 0x28, 0x00, 0xd1, 0x29, 0x49, 0x3b, 0x1c, - 0x06, 0x22, 0x16, 0x20, 0x0f, 0xf0, 0x57, 0xfb, - 0x02, 0x2d, 0x09, 0xd0, 0x06, 0x2d, 0x0a, 0xd0, - 0x07, 0x2d, 0x3c, 0x00, 0xec, 0x40, 0x00, 0x00, - 0x13, 0xd1, 0x07, 0xe0, 0x01, 0x21, 0x16, 0x20, - 0xfd, 0xf7, 0xd6, 0xf8, 0x1e, 0xe0, 0x1a, 0x4a, - 0x57, 0x63, 0x97, 0x63, 0x18, 0x4a, 0x06, 0x98, - 0xd0, 0x62, 0x07, 0x99, 0x11, 0x63, 0x53, 0x6b, - 0x18, 0x43, 0x50, 0x63, 0x90, 0x6b, 0x08, 0x43, - 0x90, 0x63, 0x05, 0x98, 0x00, 0x28, 0x05, 0xd0, - 0x05, 0x98, 0x0c, 0xf0, 0x5f, 0xfa, 0x05, 0x98, - 0x0c, 0xf0, 0xd2, 0xf9, 0x3c, 0x00, 0x28, 0x41, - 0x00, 0x00, 0x08, 0x2d, 0x05, 0xd0, 0x0d, 0x48, - 0x44, 0x38, 0x85, 0x70, 0x28, 0x1c, 0x03, 0xf0, - 0xdc, 0xfd, 0x11, 0x49, 0xe0, 0x69, 0x88, 0x42, - 0x00, 0xd1, 0x61, 0xe5, 0x08, 0x98, 0x00, 0x28, - 0xfb, 0xd0, 0xb0, 0x7a, 0x02, 0x28, 0xf8, 0xd1, - 0x01, 0x21, 0x16, 0x20, 0x0f, 0xf0, 0x6f, 0xfa, - 0x02, 0x20, 0x0d, 0xf0, 0xe8, 0xfe, 0x53, 0xe5, - 0x00, 0x00, 0x53, 0x07, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x41, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x20, 0xa1, 0x07, 0x00, 0x20, 0x4e, 0x00, 0x00, - 0x3f, 0xfb, 0xff, 0xff, 0xa0, 0x86, 0x01, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0xc0, 0x5c, 0x15, 0x00, - 0xf1, 0x1d, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xf8, 0xb5, 0x21, 0x48, - 0x00, 0x68, 0x21, 0x4d, 0x69, 0x69, 0x08, 0x40, - 0x01, 0xd1, 0x01, 0x27, 0x00, 0xe0, 0x00, 0x27, - 0x3c, 0x00, 0xa0, 0x41, 0x00, 0x00, 0x1d, 0x4d, - 0x01, 0x26, 0x69, 0x6a, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x26, 0x1b, 0x4d, 0x1a, 0x48, 0x2c, 0x1c, - 0xa0, 0x30, 0x02, 0x7a, 0x28, 0x1c, 0x40, 0x30, - 0x80, 0x34, 0x10, 0x23, 0xb7, 0x42, 0x10, 0xd1, - 0x01, 0x25, 0xc5, 0x80, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x23, 0x1a, 0x43, 0x11, 0x1c, 0x01, 0x73, - 0x01, 0x20, 0x0e, 0xf0, 0x88, 0xfe, 0x08, 0x20, - 0x20, 0x70, 0x3c, 0x00, 0xdc, 0x41, 0x00, 0x00, - 0x00, 0x22, 0x16, 0x21, 0x80, 0x20, 0x13, 0xe0, - 0x11, 0x27, 0xc7, 0x80, 0x2e, 0x1c, 0x0b, 0x4d, - 0x00, 0x29, 0x00, 0xd1, 0x00, 0x23, 0x1a, 0x43, - 0x11, 0x1c, 0x01, 0x73, 0x01, 0x20, 0x0e, 0xf0, - 0x75, 0xfe, 0x08, 0x20, 0x20, 0x70, 0x30, 0x6d, - 0x00, 0x22, 0x16, 0x21, 0x68, 0x67, 0x82, 0x20, - 0x0f, 0xf0, 0xd0, 0xfa, 0xf8, 0xbd, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0x3c, 0x00, 0x18, 0x42, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x00, 0x90, - 0x07, 0x00, 0xb0, 0xb5, 0x0f, 0x4d, 0x04, 0x1c, - 0xaa, 0x7a, 0x01, 0x21, 0x08, 0x1c, 0x00, 0x2a, - 0x00, 0xd0, 0x00, 0x20, 0x00, 0x2c, 0x00, 0xd0, - 0x00, 0x21, 0x88, 0x42, 0x0a, 0xd0, 0x00, 0x2c, - 0x04, 0xd1, 0x00, 0xf0, 0x42, 0xfb, 0x00, 0xf0, - 0xd6, 0xfa, 0x03, 0xe0, 0x00, 0xf0, 0xd9, 0xfa, - 0x00, 0xf0, 0x09, 0xf8, 0xa8, 0x7a, 0x3c, 0x00, - 0x54, 0x42, 0x00, 0x00, 0x02, 0x49, 0xe4, 0x39, - 0x48, 0x71, 0xac, 0x72, 0xb0, 0xbd, 0x00, 0x00, - 0x44, 0x6d, 0x01, 0x00, 0x80, 0xb5, 0x3e, 0xf0, - 0x55, 0xf8, 0x02, 0x49, 0x01, 0x20, 0x08, 0x70, - 0x80, 0xbd, 0x00, 0x00, 0x68, 0x7e, 0x01, 0x00, - 0xf3, 0xb5, 0x01, 0x20, 0x8d, 0xb0, 0x0f, 0x1c, - 0x01, 0x24, 0x08, 0x90, 0x0e, 0xf0, 0x92, 0xfd, - 0x06, 0x1c, 0x00, 0xf0, 0xb5, 0xfa, 0x09, 0x90, - 0x3c, 0x00, 0x90, 0x42, 0x00, 0x00, 0x00, 0xf0, - 0x80, 0xfb, 0x07, 0x90, 0xfe, 0xf7, 0x3f, 0xfa, - 0x05, 0x1c, 0x00, 0x21, 0x0c, 0x91, 0x08, 0xf0, - 0xf0, 0xfb, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x0a, 0x90, 0xfe, 0xf7, - 0x12, 0xfd, 0x05, 0xf0, 0xe0, 0xfe, 0x0b, 0x90, - 0x00, 0x2d, 0x23, 0xd0, 0x28, 0x88, 0x41, 0x07, - 0x20, 0xd4, 0x29, 0x1d, 0x04, 0x91, 0x0a, 0x35, - 0x00, 0x06, 0x3c, 0x00, 0xcc, 0x42, 0x00, 0x00, - 0x80, 0x0e, 0x01, 0x21, 0x20, 0x28, 0x03, 0x95, - 0x00, 0xd0, 0x00, 0x21, 0x0d, 0x1c, 0x04, 0x98, - 0x06, 0xf0, 0x38, 0xfd, 0x0c, 0x90, 0x04, 0x98, - 0x06, 0xf0, 0x10, 0xfd, 0x00, 0x28, 0x08, 0xd0, - 0x03, 0x98, 0x01, 0xf0, 0x87, 0xfa, 0x00, 0x28, - 0x03, 0xd0, 0x00, 0x2d, 0x01, 0xd1, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x0c, 0x99, 0x01, 0x43, - 0x0c, 0x91, 0xfc, 0xf7, 0x3c, 0x00, 0x08, 0x43, - 0x00, 0x00, 0x23, 0xff, 0x00, 0x28, 0x2f, 0xd0, - 0x07, 0xf0, 0x99, 0xff, 0x05, 0x1c, 0x07, 0xf0, - 0xb2, 0xff, 0x04, 0x90, 0xff, 0xf7, 0xf3, 0xf8, - 0x0c, 0x99, 0x01, 0x43, 0x00, 0x2d, 0x06, 0xd0, - 0x04, 0x98, 0xf0, 0x4a, 0x30, 0x1a, 0x90, 0x42, - 0x01, 0xd2, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0x08, 0x43, 0x0c, 0x90, 0x0b, 0x98, 0x0a, 0x9b, - 0x18, 0x43, 0x01, 0x1c, 0x0b, 0x91, 0x3c, 0x00, - 0x44, 0x43, 0x00, 0x00, 0x05, 0xf0, 0xce, 0xfe, - 0x00, 0x28, 0x1a, 0xd1, 0x00, 0x2d, 0x06, 0xd0, - 0x04, 0x98, 0xe7, 0x49, 0x30, 0x1a, 0x88, 0x42, - 0x01, 0xd2, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0x0c, 0x99, 0x08, 0x43, 0x05, 0x1c, 0x00, 0xf0, - 0x1f, 0xfb, 0x28, 0x43, 0x03, 0xe0, 0x00, 0xf0, - 0x1b, 0xfb, 0x0c, 0x99, 0x08, 0x43, 0x0c, 0x90, - 0x00, 0xf0, 0xd4, 0xfb, 0x0b, 0x99, 0x01, 0x43, - 0x3c, 0x00, 0x80, 0x43, 0x00, 0x00, 0x0b, 0x91, - 0xdc, 0x49, 0xc8, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0x01, 0x38, 0xc8, 0x60, 0x08, 0xf0, 0xe7, 0xfb, - 0x06, 0x90, 0x08, 0xf0, 0x90, 0xfd, 0x31, 0x1a, - 0x05, 0x91, 0x06, 0x99, 0xd6, 0x48, 0x81, 0x42, - 0x08, 0xd8, 0x00, 0x2f, 0x08, 0xd1, 0x05, 0x99, - 0x40, 0x08, 0x81, 0x42, 0x04, 0xd9, 0x06, 0x99, - 0x81, 0x42, 0x01, 0xd9, 0x00, 0x24, 0x8b, 0xe0, - 0xd0, 0x48, 0x3c, 0x00, 0xbc, 0x43, 0x00, 0x00, - 0x05, 0x99, 0xd0, 0x4d, 0x81, 0x42, 0x26, 0xd2, - 0xe8, 0x79, 0x10, 0x28, 0x06, 0xd2, 0x00, 0x2f, - 0x21, 0xd1, 0xcc, 0x48, 0xa0, 0x38, 0x80, 0x6a, - 0x00, 0x28, 0x1c, 0xd1, 0x09, 0xf0, 0x62, 0xff, - 0x04, 0x90, 0x00, 0x28, 0x02, 0xd1, 0x00, 0x20, - 0xc3, 0x49, 0x13, 0xe0, 0x09, 0xf0, 0x10, 0xfe, - 0x00, 0x28, 0x03, 0xd0, 0xc4, 0x48, 0xc0, 0x69, - 0x00, 0x28, 0xf4, 0xd0, 0x3c, 0x00, 0xf8, 0x43, - 0x00, 0x00, 0x04, 0x98, 0x05, 0x28, 0x03, 0xd0, - 0xc1, 0x48, 0x00, 0x6a, 0x00, 0x28, 0x65, 0xd1, - 0xbb, 0x49, 0x48, 0x6a, 0x00, 0x28, 0x23, 0xd0, - 0x01, 0x38, 0x48, 0x62, 0x00, 0xf0, 0x87, 0xff, - 0x00, 0x28, 0x11, 0xd0, 0xbb, 0x48, 0x05, 0x99, - 0x81, 0x42, 0x0d, 0xd2, 0x01, 0xf0, 0x9b, 0xf8, - 0x04, 0x30, 0x0d, 0xf0, 0xee, 0xfc, 0x40, 0x30, - 0xc1, 0x7a, 0x01, 0x29, 0x4e, 0xd0, 0x3c, 0x00, - 0x34, 0x44, 0x00, 0x00, 0x80, 0x7a, 0x00, 0x28, - 0x01, 0xd0, 0x05, 0x28, 0x49, 0xd3, 0x01, 0xf0, - 0xdf, 0xf8, 0x02, 0x28, 0x10, 0xd0, 0x00, 0x2f, - 0x02, 0xd1, 0x06, 0x98, 0x00, 0x28, 0x40, 0xd1, - 0x00, 0x20, 0x08, 0x90, 0x82, 0xe1, 0xaa, 0x48, - 0xa0, 0x38, 0xc0, 0x68, 0x00, 0x28, 0x38, 0xd0, - 0xa8, 0x48, 0x80, 0x69, 0x48, 0x62, 0x34, 0xe0, - 0x0a, 0xa9, 0x03, 0xc9, 0x08, 0x43, 0x45, 0xd0, - 0x3c, 0x00, 0x70, 0x44, 0x00, 0x00, 0xa3, 0x48, - 0x29, 0x78, 0xa0, 0x38, 0x02, 0x29, 0x40, 0xd8, - 0x40, 0x6d, 0x00, 0x28, 0x0a, 0xd0, 0x9f, 0x48, - 0xa2, 0x49, 0x20, 0x38, 0xc0, 0x68, 0x40, 0x18, - 0x0e, 0xf0, 0xc7, 0xfb, 0x00, 0x28, 0x01, 0xd0, - 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0x96, 0x4a, - 0x90, 0x6a, 0x00, 0x28, 0x02, 0xda, 0x64, 0x08, - 0x64, 0x00, 0x2a, 0xe0, 0x00, 0x29, 0x09, 0xd1, - 0x95, 0x4b, 0x3c, 0x00, 0xac, 0x44, 0x00, 0x00, - 0xa0, 0x3b, 0x5b, 0x6d, 0x00, 0x2b, 0x02, 0xd0, - 0x05, 0x28, 0x0d, 0xdb, 0x01, 0xe0, 0x07, 0x28, - 0x0a, 0xdb, 0x01, 0x20, 0xc0, 0x43, 0x90, 0x62, - 0x64, 0x08, 0x8e, 0x49, 0x64, 0x00, 0x00, 0x20, - 0xa0, 0x39, 0x88, 0x65, 0x14, 0xe0, 0xd1, 0xe0, - 0x39, 0x43, 0x11, 0xd1, 0x89, 0x49, 0xa0, 0x39, - 0xcb, 0x6d, 0x00, 0x2b, 0x02, 0xd1, 0x89, 0x6d, - 0x01, 0x29, 0x09, 0xd9, 0x3c, 0x00, 0xe8, 0x44, - 0x00, 0x00, 0x07, 0x9b, 0x00, 0x2b, 0x01, 0xd1, - 0x07, 0x28, 0x01, 0xdb, 0x64, 0x08, 0x64, 0x00, - 0x01, 0x30, 0x90, 0x62, 0xbd, 0xe0, 0x7d, 0x49, - 0x88, 0x69, 0x04, 0x90, 0x00, 0x20, 0x88, 0x61, - 0x0c, 0x98, 0x00, 0x28, 0x2c, 0xd0, 0x07, 0xf0, - 0x66, 0xfc, 0x00, 0x28, 0x02, 0xd0, 0x02, 0x20, - 0x04, 0x43, 0x25, 0xe0, 0x7a, 0x48, 0xc0, 0x6a, - 0x00, 0x28, 0x04, 0xd1, 0x77, 0x48, 0x3c, 0x00, - 0x24, 0x45, 0x00, 0x00, 0xa0, 0x38, 0xc0, 0x68, - 0x00, 0x28, 0x1c, 0xd1, 0x04, 0x98, 0x00, 0x28, - 0x0d, 0xd1, 0x28, 0x78, 0x10, 0x28, 0x02, 0xd3, - 0xe8, 0x78, 0x02, 0x28, 0x02, 0xd9, 0x28, 0x79, - 0x10, 0x28, 0x04, 0xd3, 0x04, 0x24, 0x6b, 0x49, - 0x01, 0x22, 0x8a, 0x61, 0x94, 0xe0, 0x6c, 0x48, - 0xa0, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x71, 0xd0, - 0x05, 0xf0, 0xa2, 0xfd, 0x00, 0x28, 0x6d, 0xd0, - 0x3c, 0x00, 0x60, 0x45, 0x00, 0x00, 0x64, 0x08, - 0x64, 0x00, 0x88, 0xe0, 0xff, 0xf7, 0x5b, 0xfa, - 0x00, 0x28, 0x1a, 0xd0, 0x68, 0x48, 0x00, 0x78, - 0x02, 0x28, 0x01, 0xd1, 0x00, 0x2f, 0x14, 0xd1, - 0x00, 0x20, 0xfe, 0xf7, 0x70, 0xfe, 0x30, 0x1a, - 0x04, 0x90, 0xff, 0xf7, 0x6c, 0xfa, 0x00, 0x28, - 0x07, 0xd0, 0xff, 0xf7, 0x1e, 0xfa, 0x00, 0x28, - 0x03, 0xd0, 0x5d, 0x49, 0x04, 0x98, 0x88, 0x42, - 0x4f, 0xd3, 0x3c, 0x00, 0x9c, 0x45, 0x00, 0x00, - 0x05, 0xf0, 0x6c, 0xfd, 0x00, 0x28, 0x4b, 0xd1, - 0x53, 0x49, 0x08, 0x78, 0x03, 0x28, 0x08, 0xd1, - 0x88, 0x68, 0x01, 0x22, 0xd2, 0x07, 0x30, 0x1a, - 0x90, 0x42, 0x41, 0xd2, 0x01, 0x22, 0x0a, 0x70, - 0x57, 0xe0, 0x54, 0x48, 0x00, 0x78, 0x02, 0x28, - 0x01, 0xd1, 0x00, 0x2f, 0x51, 0xd1, 0x4a, 0x49, - 0x88, 0x68, 0x51, 0x49, 0x80, 0x1b, 0x88, 0x42, - 0x07, 0xd9, 0x01, 0x20, 0x3c, 0x00, 0xd8, 0x45, - 0x00, 0x00, 0xfe, 0xf7, 0x42, 0xfe, 0x7d, 0x21, - 0x09, 0x01, 0x40, 0x18, 0x44, 0x49, 0x88, 0x60, - 0x4a, 0x48, 0x00, 0x78, 0x02, 0x28, 0x04, 0xd1, - 0x07, 0x9b, 0x00, 0x2b, 0x01, 0xd1, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x47, 0x4b, 0x47, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x3c, 0x49, 0x89, 0x68, - 0x89, 0x1b, 0x88, 0x42, 0x30, 0xd9, 0x07, 0x9b, - 0x00, 0x20, 0x03, 0x93, 0x00, 0xf0, 0x3c, 0x00, - 0x14, 0x46, 0x00, 0x00, 0x79, 0xff, 0x02, 0x90, - 0xff, 0xf7, 0xd8, 0xf9, 0x04, 0x90, 0x01, 0xf0, - 0x57, 0xf8, 0x04, 0x99, 0x02, 0x9a, 0x51, 0x43, - 0x48, 0x43, 0x01, 0x90, 0x00, 0xf0, 0xdc, 0xff, - 0x41, 0x1c, 0x01, 0x98, 0x01, 0x22, 0x48, 0x43, - 0x11, 0x1c, 0x00, 0xe0, 0x1b, 0xe0, 0x31, 0x4b, - 0x5b, 0x6a, 0x83, 0x42, 0x00, 0xd3, 0x00, 0x21, - 0x03, 0x9b, 0x01, 0x22, 0x00, 0x2b, 0x00, 0xd0, - 0x3c, 0x00, 0x50, 0x46, 0x00, 0x00, 0x00, 0x22, - 0x2c, 0x4b, 0x51, 0x43, 0x9b, 0x6a, 0x01, 0x22, - 0x83, 0x42, 0x00, 0xd3, 0x00, 0x22, 0x50, 0x00, - 0x08, 0x18, 0x03, 0xd0, 0x23, 0x49, 0x03, 0x20, - 0x08, 0x70, 0x03, 0xe0, 0x09, 0x98, 0xc0, 0x68, - 0x06, 0x28, 0x08, 0xd9, 0x02, 0x24, 0x08, 0x98, - 0x00, 0x28, 0x6e, 0xd0, 0x1d, 0x49, 0x00, 0x20, - 0xc8, 0x61, 0x48, 0x61, 0xa5, 0xe0, 0x1a, 0x49, - 0x48, 0x69, 0x3c, 0x00, 0x8c, 0x46, 0x00, 0x00, - 0x00, 0x28, 0x0a, 0xd1, 0x00, 0x2f, 0x05, 0xd0, - 0x01, 0x22, 0x4a, 0x61, 0xc8, 0x69, 0x80, 0x18, - 0xc8, 0x61, 0x0a, 0xe0, 0x00, 0x20, 0xc8, 0x61, - 0x03, 0xe0, 0x00, 0x2f, 0x05, 0xd1, 0x00, 0x20, - 0x48, 0x61, 0x0d, 0x98, 0x00, 0x28, 0x00, 0xd1, - 0xc8, 0x68, 0x00, 0x20, 0x08, 0x90, 0x08, 0x78, - 0x01, 0x28, 0x2f, 0xd0, 0x02, 0x28, 0x4b, 0xd1, - 0x00, 0x2f, 0x08, 0xd1, 0x3c, 0x00, 0xc8, 0x46, - 0x00, 0x00, 0xe8, 0x78, 0x00, 0x28, 0x02, 0xd1, - 0x28, 0x78, 0x10, 0x28, 0x43, 0xd2, 0x28, 0x79, - 0x10, 0x28, 0x40, 0xd2, 0x48, 0x68, 0x0a, 0x69, - 0x30, 0x1a, 0x90, 0x42, 0x67, 0xd3, 0x01, 0x22, - 0x0a, 0x70, 0x38, 0xe0, 0x00, 0x00, 0xe2, 0x04, - 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x68, 0x7e, - 0x01, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x88, 0x13, - 0x00, 0x00, 0x44, 0x6d, 0x01, 0x00, 0x3c, 0x00, - 0x04, 0x47, 0x00, 0x00, 0xc8, 0x57, 0x01, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0x98, 0x3a, 0x00, 0x00, - 0xc0, 0x57, 0x01, 0x00, 0x40, 0x0d, 0x03, 0x00, - 0xc4, 0x09, 0x00, 0x00, 0xb2, 0x0c, 0x00, 0x00, - 0x00, 0x20, 0x0b, 0x9a, 0x0a, 0x9b, 0xc0, 0x43, - 0x1a, 0x43, 0x37, 0xd0, 0x00, 0x2f, 0x35, 0xd1, - 0x07, 0x9b, 0x00, 0x2b, 0x08, 0xd0, 0x6a, 0x78, - 0x02, 0x2a, 0x2f, 0xd9, 0x2a, 0x78, 0x10, 0x2a, - 0x3c, 0x00, 0x40, 0x47, 0x00, 0x00, 0x2c, 0xd2, - 0x2a, 0x79, 0x10, 0x2a, 0x29, 0xd2, 0x25, 0x4b, - 0x1a, 0x6c, 0x00, 0x2a, 0x06, 0xd0, 0x9a, 0x6a, - 0x9f, 0x6c, 0xba, 0x42, 0x02, 0xd1, 0x1f, 0x20, - 0x1f, 0xe0, 0x2e, 0xe0, 0x20, 0x4b, 0x5a, 0x6c, - 0x00, 0x2a, 0x03, 0xd0, 0x1f, 0x4f, 0xb3, 0x1a, - 0xbb, 0x42, 0x16, 0xd3, 0x1c, 0x4b, 0x00, 0x2a, - 0x05, 0xd0, 0x9a, 0x6a, 0x9f, 0x6c, 0xba, 0x42, - 0x01, 0xd1, 0x3c, 0x00, 0x7c, 0x47, 0x00, 0x00, - 0x0f, 0x20, 0x0d, 0xe0, 0x07, 0x9a, 0x00, 0x2a, - 0x04, 0xd0, 0xea, 0x79, 0x20, 0x2a, 0x01, 0xd1, - 0x00, 0x20, 0x05, 0xe0, 0xea, 0x79, 0x10, 0x2a, - 0x01, 0xd3, 0x03, 0x20, 0x00, 0xe0, 0x9a, 0x6a, - 0x12, 0x4a, 0x12, 0x68, 0x02, 0x40, 0x0b, 0xd1, - 0x01, 0x20, 0x08, 0x90, 0x02, 0x20, 0x08, 0x70, - 0x0f, 0x48, 0x08, 0x61, 0x4e, 0x60, 0x64, 0xe7, - 0xff, 0xe7, 0x01, 0x20, 0x3c, 0x00, 0xb8, 0x47, - 0x00, 0x00, 0x08, 0x90, 0x60, 0xe7, 0x0c, 0x49, - 0x88, 0x6a, 0x00, 0x28, 0x01, 0xda, 0x01, 0x30, - 0x02, 0xe0, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20, - 0x88, 0x62, 0x00, 0x20, 0x08, 0x62, 0x08, 0x99, - 0x20, 0x04, 0x08, 0x43, 0x0f, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x71, 0x02, - 0x00, 0x00, 0x08, 0x20, 0x07, 0x00, 0x53, 0x07, - 0x00, 0x00, 0x68, 0x7e, 0x01, 0x00, 0x3c, 0x00, - 0xf4, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x00, 0x48, 0x70, 0x47, 0x50, 0x7e, 0x01, 0x00, - 0x80, 0xb5, 0x3d, 0xf0, 0x7f, 0xfd, 0x02, 0x49, - 0x01, 0x20, 0x08, 0x70, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x7e, 0x01, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, - 0x0e, 0xf0, 0xc8, 0xfa, 0x26, 0x49, 0x04, 0x1c, - 0x88, 0x6a, 0x26, 0x4e, 0x00, 0x28, 0x01, 0xd0, - 0x04, 0x20, 0x03, 0xe0, 0x70, 0x6a, 0x00, 0x28, - 0x3c, 0x00, 0x30, 0x48, 0x00, 0x00, 0x01, 0xd0, - 0x01, 0x38, 0x70, 0x62, 0x00, 0x27, 0x00, 0x2d, - 0x02, 0xd0, 0xb7, 0x61, 0xf7, 0x61, 0x0a, 0xe0, - 0xb0, 0x69, 0x1c, 0x49, 0x01, 0x30, 0xb0, 0x61, - 0x49, 0x6d, 0x00, 0x29, 0x03, 0xd0, 0x03, 0x28, - 0x01, 0xd9, 0x01, 0x20, 0xf0, 0x61, 0xb4, 0x60, - 0xf1, 0x68, 0x00, 0x91, 0x08, 0xf0, 0xf7, 0xfc, - 0xf0, 0x60, 0x00, 0x99, 0x88, 0x42, 0x02, 0xd0, - 0x30, 0x62, 0x3c, 0x00, 0x6c, 0x48, 0x00, 0x00, - 0x34, 0x61, 0x0b, 0xe0, 0x00, 0xf0, 0x90, 0xf8, - 0x00, 0x28, 0x01, 0xd0, 0x11, 0x48, 0x00, 0xe0, - 0x11, 0x48, 0x31, 0x69, 0x61, 0x1a, 0x81, 0x42, - 0x00, 0xd9, 0x37, 0x62, 0x0b, 0x4a, 0x0c, 0x48, - 0xd1, 0x6c, 0x20, 0x30, 0x00, 0x29, 0x01, 0xd0, - 0x0a, 0x21, 0x03, 0xe0, 0x01, 0x7a, 0x00, 0x29, - 0x01, 0xd0, 0xff, 0x31, 0x01, 0x72, 0x00, 0x2d, - 0x03, 0xd1, 0x01, 0x7a, 0x3c, 0x00, 0xa8, 0x48, - 0x00, 0x00, 0x00, 0x29, 0x00, 0xd0, 0x91, 0x6a, - 0x00, 0x7a, 0x00, 0x28, 0x00, 0xd1, 0x17, 0x65, - 0xf8, 0xbd, 0xa4, 0x6c, 0x01, 0x00, 0x3c, 0x7e, - 0x01, 0x00, 0xa6, 0x0e, 0x00, 0x00, 0xa8, 0x61, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x06, 0x49, - 0x80, 0xb5, 0x89, 0x68, 0x00, 0x29, 0x07, 0xd0, - 0x05, 0x21, 0x00, 0x28, 0x00, 0xd1, 0x04, 0x21, - 0x08, 0x06, 0x00, 0x0e, 0x03, 0xf0, 0x3c, 0x00, - 0xe4, 0x48, 0x00, 0x00, 0x05, 0xfa, 0x80, 0xbd, - 0x60, 0x6c, 0x01, 0x00, 0x07, 0x48, 0x00, 0x68, - 0x07, 0x49, 0x4a, 0x69, 0x10, 0x40, 0x01, 0xd0, - 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x49, 0x6a, - 0x88, 0x42, 0x01, 0xd1, 0x01, 0x20, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x10, 0x00, 0x07, 0x00, - 0xa4, 0x6c, 0x01, 0x00, 0x70, 0xb5, 0x0e, 0xf0, - 0x49, 0xfa, 0x02, 0x1c, 0x00, 0xf0, 0x3a, 0xf8, - 0x3c, 0x00, 0x20, 0x49, 0x00, 0x00, 0x10, 0x49, - 0x00, 0x28, 0x0e, 0xd0, 0x08, 0x1c, 0xa0, 0x31, - 0x0e, 0x78, 0x0e, 0x4b, 0x10, 0x2e, 0x01, 0xd3, - 0x80, 0x6f, 0x03, 0xe0, 0x49, 0x78, 0x10, 0x29, - 0x0e, 0xd3, 0xc0, 0x6f, 0xc0, 0x18, 0x84, 0x1a, - 0x0a, 0xe0, 0x08, 0x1c, 0x80, 0x30, 0x45, 0x69, - 0x08, 0x49, 0x8d, 0x42, 0x01, 0xd9, 0x0c, 0x1c, - 0x05, 0xe0, 0xc0, 0x68, 0x10, 0x1a, 0x2c, 0x1a, - 0x00, 0x2c, 0x3c, 0x00, 0x5c, 0x49, 0x00, 0x00, - 0x00, 0xda, 0x64, 0x19, 0x20, 0x1c, 0x70, 0xbd, - 0xa4, 0x6c, 0x01, 0x00, 0xa6, 0x0e, 0x00, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0x80, 0xb5, 0x05, 0xf0, - 0xb7, 0xfb, 0x00, 0x28, 0x02, 0xd0, 0x07, 0xf0, - 0x1f, 0xff, 0x80, 0xbd, 0x03, 0x48, 0x00, 0x78, - 0x00, 0x28, 0xfa, 0xd0, 0x07, 0xf0, 0x70, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, - 0x03, 0x49, 0x01, 0x20, 0x3c, 0x00, 0x98, 0x49, - 0x00, 0x00, 0x49, 0x69, 0x03, 0x29, 0x00, 0xd8, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x60, 0x6c, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x00, 0x24, - 0x28, 0x78, 0x01, 0x28, 0x03, 0xd0, 0x05, 0xf0, - 0x6a, 0xfb, 0x04, 0x06, 0x24, 0x0e, 0xfe, 0xf7, - 0xd2, 0xfc, 0x00, 0x02, 0x20, 0x43, 0x02, 0xd1, - 0x68, 0x6a, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, - 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, 0x3c, 0x00, - 0xd4, 0x49, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, - 0x01, 0x21, 0x01, 0x28, 0x00, 0xd0, 0x00, 0x21, - 0x01, 0x48, 0x41, 0x62, 0x70, 0x47, 0x00, 0x00, - 0x60, 0x6c, 0x01, 0x00, 0x15, 0x48, 0x10, 0xb5, - 0x04, 0x68, 0x15, 0x48, 0x00, 0x6a, 0x00, 0x28, - 0x14, 0xd0, 0xff, 0xf7, 0xcb, 0xff, 0x00, 0x28, - 0x0e, 0xd1, 0x11, 0x48, 0x11, 0x49, 0xc4, 0x30, - 0x40, 0x69, 0x88, 0x42, 0x08, 0xd2, 0xcc, 0x08, - 0x3c, 0x00, 0x10, 0x4a, 0x00, 0x00, 0xa0, 0x42, - 0x05, 0xd3, 0xff, 0xf7, 0x7e, 0xff, 0xa0, 0x42, - 0x01, 0xda, 0x0c, 0x4c, 0x01, 0xe0, 0xff, 0x24, - 0x91, 0x34, 0x7d, 0x20, 0x00, 0x01, 0x84, 0x42, - 0x04, 0xd9, 0x00, 0x22, 0x16, 0x21, 0x83, 0x20, - 0x0e, 0xf0, 0xbd, 0xfe, 0x01, 0x23, 0x09, 0x22, - 0x21, 0x1c, 0x16, 0x20, 0x0e, 0xf0, 0xa7, 0xfe, - 0x10, 0xbd, 0xb0, 0x57, 0x01, 0x00, 0x60, 0x6c, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x4a, 0x00, 0x00, - 0xc0, 0x5d, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x0e, 0x1c, 0x00, 0xf0, - 0x43, 0xf8, 0x00, 0x28, 0x0f, 0xd0, 0x08, 0x4c, - 0x20, 0x78, 0xc0, 0x07, 0x03, 0xd4, 0x05, 0xf0, - 0xab, 0xf9, 0x09, 0xf0, 0x31, 0xfe, 0x00, 0x2d, - 0x05, 0xd0, 0x20, 0x78, 0x80, 0x07, 0x02, 0xd4, - 0x30, 0x1c, 0x02, 0xf0, 0xfd, 0xfe, 0x70, 0xbd, - 0x60, 0x6c, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x4a, - 0x00, 0x00, 0xb0, 0xb5, 0x00, 0x28, 0x18, 0xd0, - 0x11, 0x48, 0x81, 0x42, 0x15, 0xd2, 0x10, 0x48, - 0x0c, 0x1c, 0x0d, 0x18, 0x07, 0xf0, 0xdf, 0xfa, - 0x81, 0x00, 0x09, 0x18, 0xa1, 0x42, 0x01, 0xd2, - 0x40, 0x00, 0x03, 0xe0, 0x41, 0x00, 0x09, 0x18, - 0xa1, 0x42, 0x01, 0xd2, 0x24, 0x1a, 0x06, 0xe0, - 0x41, 0x00, 0xa1, 0x42, 0x03, 0xd2, 0x40, 0x08, - 0xf8, 0xe7, 0x06, 0x4d, 0x07, 0x4c, 0x3c, 0x00, - 0xc4, 0x4a, 0x00, 0x00, 0x0e, 0xf0, 0x72, 0xf9, - 0x00, 0x19, 0x29, 0x1c, 0x07, 0xf0, 0xdc, 0xfa, - 0xb0, 0xbd, 0x00, 0x00, 0x80, 0xb9, 0x2a, 0x00, - 0x53, 0x07, 0x00, 0x00, 0x4c, 0x1d, 0x00, 0x00, - 0x88, 0x13, 0x00, 0x00, 0xb0, 0xb5, 0x05, 0xf0, - 0xfd, 0xfa, 0x00, 0x28, 0x13, 0xd1, 0xfe, 0xf7, - 0xb5, 0xfe, 0x0a, 0x4c, 0x0a, 0x4d, 0x00, 0x28, - 0x60, 0x63, 0x00, 0xd0, 0x28, 0x60, 0x0e, 0xf0, - 0x3c, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x55, 0xf9, - 0x21, 0x6a, 0x00, 0x29, 0x04, 0xd1, 0xe1, 0x69, - 0x40, 0x1a, 0x29, 0x68, 0x88, 0x42, 0x01, 0xd9, - 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, - 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, 0xb0, 0x57, - 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xdd, 0xff, - 0x00, 0x28, 0x05, 0xd0, 0x05, 0xf0, 0xb7, 0xfa, - 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, 0x80, 0xbd, - 0x00, 0x20, 0x3c, 0x00, 0x3c, 0x4b, 0x00, 0x00, - 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x4c, - 0x00, 0x21, 0xa2, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0xa1, 0x60, 0x02, 0xf0, 0x83, 0xf9, 0x10, 0xbd, - 0x61, 0x60, 0x01, 0x1c, 0x00, 0x22, 0x04, 0x20, - 0x0e, 0xf0, 0x36, 0xfd, 0x03, 0x48, 0x21, 0x68, - 0x0a, 0xf0, 0x08, 0xfc, 0x10, 0xbd, 0x00, 0x00, - 0xbc, 0x74, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x3c, 0x00, 0x78, 0x4b, - 0x00, 0x00, 0x01, 0xd1, 0xfc, 0xf7, 0xc1, 0xfb, - 0x20, 0x4c, 0xe0, 0x6a, 0x00, 0x28, 0x15, 0xd0, - 0x1f, 0x4b, 0xa0, 0x69, 0x58, 0x43, 0xc6, 0x0b, - 0x20, 0x88, 0x46, 0x43, 0xf0, 0x00, 0x80, 0x19, - 0xe6, 0x60, 0xfb, 0xf7, 0x1c, 0xfe, 0xa8, 0x42, - 0x05, 0xd8, 0x30, 0x1c, 0xfb, 0xf7, 0x17, 0xfe, - 0x80, 0x19, 0xa8, 0x42, 0x02, 0xd2, 0x00, 0x20, - 0xe0, 0x60, 0x20, 0xe0, 0xe5, 0x60, 0x3c, 0x00, - 0xb4, 0x4b, 0x00, 0x00, 0x00, 0x2d, 0x1d, 0xd0, - 0x26, 0x88, 0xa0, 0x69, 0x70, 0x43, 0xc1, 0x03, - 0x28, 0x1c, 0xfb, 0xf7, 0xa5, 0xfd, 0x60, 0x61, - 0x0d, 0x48, 0x32, 0x1c, 0x29, 0x1c, 0x30, 0x30, - 0xfb, 0xf7, 0x0a, 0xfc, 0x0c, 0x4b, 0x60, 0x69, - 0x58, 0x43, 0xc0, 0x0b, 0x60, 0x62, 0x01, 0xf0, - 0xb7, 0xfd, 0xa0, 0x62, 0xe0, 0x68, 0x00, 0x28, - 0x04, 0xd0, 0x20, 0x69, 0xa1, 0x68, 0xfb, 0xf7, - 0x3c, 0x00, 0xf0, 0x4b, 0x00, 0x00, 0xf4, 0xfb, - 0x70, 0xbd, 0x05, 0x48, 0xa1, 0x68, 0xfb, 0xf7, - 0xef, 0xfb, 0x70, 0xbd, 0x00, 0x00, 0xc8, 0x74, - 0x01, 0x00, 0x40, 0x42, 0x0f, 0x00, 0xc0, 0xc6, - 0x2d, 0x00, 0x88, 0x13, 0x00, 0x00, 0xf1, 0xb5, - 0x3e, 0x48, 0x00, 0xab, 0x81, 0x78, 0xc0, 0x78, - 0x3e, 0x4f, 0x0a, 0x07, 0x04, 0x07, 0x58, 0x78, - 0x3b, 0x49, 0x12, 0x0f, 0x08, 0x5c, 0x14, 0x39, - 0x24, 0x0f, 0x3c, 0x00, 0x2c, 0x4c, 0x00, 0x00, - 0x80, 0x18, 0x78, 0x60, 0x01, 0x30, 0xb8, 0x60, - 0x18, 0x78, 0x35, 0x4d, 0x08, 0x5c, 0x00, 0x19, - 0xb8, 0x61, 0x01, 0x30, 0xf8, 0x61, 0xeb, 0x78, - 0x33, 0x48, 0x1e, 0x09, 0x33, 0x4b, 0x18, 0x38, - 0x81, 0x78, 0x5e, 0x43, 0xab, 0x78, 0x1d, 0x09, - 0xc8, 0x23, 0x6b, 0x43, 0x00, 0x29, 0x08, 0xd1, - 0x2b, 0x4d, 0x2d, 0x78, 0x3d, 0x60, 0xc5, 0x60, - 0x7d, 0x25, 0xed, 0x00, 0x3c, 0x00, 0x68, 0x4c, - 0x00, 0x00, 0x5d, 0x1b, 0x2c, 0x4b, 0x07, 0xe0, - 0x27, 0x4d, 0x6d, 0x78, 0x3d, 0x60, 0xc5, 0x60, - 0x4b, 0x25, 0x2d, 0x01, 0x5d, 0x1b, 0x28, 0x4b, - 0xf6, 0x18, 0x02, 0x20, 0x00, 0xf0, 0x57, 0xf8, - 0x28, 0x1a, 0xf8, 0x60, 0x22, 0x48, 0x22, 0x1c, - 0x18, 0x38, 0x81, 0x78, 0x03, 0x20, 0x00, 0xf0, - 0x4e, 0xf8, 0x30, 0x1a, 0x38, 0x62, 0x39, 0x68, - 0x00, 0xab, 0x79, 0x61, 0x5a, 0x78, 0x3c, 0x00, - 0xa4, 0x4c, 0x00, 0x00, 0x56, 0x23, 0xf9, 0x68, - 0x5a, 0x43, 0x89, 0x1a, 0xf9, 0x60, 0xc8, 0x31, - 0x39, 0x61, 0x18, 0x49, 0x18, 0x39, 0x89, 0x78, - 0x00, 0x29, 0xb9, 0x69, 0x11, 0xd1, 0x00, 0xab, - 0x1a, 0x78, 0x13, 0x4b, 0x14, 0x3b, 0x9a, 0x5c, - 0x53, 0x1c, 0x59, 0x43, 0x0a, 0x23, 0x59, 0x43, - 0x14, 0x4b, 0x59, 0x1a, 0x51, 0x43, 0x0a, 0x23, - 0x59, 0x43, 0x40, 0x1a, 0x38, 0x62, 0x12, 0x49, - 0x3c, 0x00, 0xe0, 0x4c, 0x00, 0x00, 0x10, 0xe0, - 0x00, 0xab, 0x1a, 0x78, 0x0a, 0x4b, 0x14, 0x3b, - 0x9a, 0x5c, 0x53, 0x1c, 0x59, 0x43, 0x0a, 0x23, - 0x59, 0x43, 0x0d, 0x4b, 0x59, 0x1a, 0x51, 0x43, - 0x0a, 0x23, 0x59, 0x43, 0x40, 0x1a, 0x0b, 0x49, - 0x38, 0x62, 0x40, 0x18, 0x78, 0x62, 0xf8, 0xbd, - 0x00, 0x00, 0x0c, 0x5a, 0x01, 0x00, 0x66, 0x5a, - 0x01, 0x00, 0x94, 0x78, 0x01, 0x00, 0xa0, 0x86, - 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x4d, 0x00, 0x00, - 0x00, 0x48, 0x71, 0x00, 0xb0, 0xd6, 0x8c, 0x00, - 0x88, 0x10, 0x00, 0x00, 0x80, 0x38, 0x01, 0x00, - 0x58, 0x12, 0x00, 0x00, 0x70, 0x11, 0x01, 0x00, - 0x30, 0xb5, 0x19, 0x4b, 0x02, 0x28, 0xdd, 0x68, - 0x06, 0xd1, 0x00, 0x29, 0x04, 0xd1, 0x2b, 0x1c, - 0x0c, 0x33, 0x9c, 0x1a, 0x64, 0x23, 0x5c, 0x43, - 0x02, 0x28, 0x09, 0xd1, 0x01, 0x29, 0x07, 0xd1, - 0x64, 0x23, 0x7d, 0x24, 0x3c, 0x00, 0x58, 0x4d, - 0x00, 0x00, 0xe4, 0x00, 0x6b, 0x43, 0x1c, 0x19, - 0xa0, 0x23, 0x53, 0x43, 0xe4, 0x1a, 0x0a, 0x23, - 0x5a, 0x43, 0x03, 0x28, 0x09, 0xd1, 0x00, 0x29, - 0x07, 0xd1, 0x13, 0x23, 0xff, 0x24, 0xe4, 0x00, - 0x6b, 0x43, 0x1b, 0x19, 0x9b, 0x1a, 0x1c, 0x1c, - 0x5c, 0x43, 0x03, 0x28, 0x08, 0xd1, 0x01, 0x29, - 0x06, 0xd1, 0x0e, 0x20, 0x05, 0x49, 0x68, 0x43, - 0x40, 0x18, 0x80, 0x1a, 0x04, 0x1c, 0x3c, 0x00, - 0x94, 0x4d, 0x00, 0x00, 0x44, 0x43, 0x20, 0x1c, - 0x30, 0xbd, 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, - 0x84, 0x08, 0x00, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0x0c, 0x23, 0x60, 0x78, 0x05, 0x49, 0x14, 0x31, - 0x58, 0x43, 0x40, 0x18, 0x40, 0x68, 0x01, 0xf0, - 0x4f, 0xfc, 0x00, 0x21, 0x60, 0x78, 0x02, 0xf0, - 0x4b, 0xff, 0x10, 0xbd, 0x4c, 0x7b, 0x01, 0x00, - 0x0c, 0x48, 0xf8, 0xb5, 0x40, 0x78, 0x0c, 0x23, - 0x3c, 0x00, 0xd0, 0x4d, 0x00, 0x00, 0x0a, 0x49, - 0x58, 0x43, 0x14, 0x31, 0x44, 0x18, 0x26, 0x1d, - 0x60, 0xce, 0x30, 0x1c, 0x0b, 0xf0, 0x0b, 0xfd, - 0x00, 0x27, 0x41, 0x20, 0x47, 0x55, 0x05, 0x48, - 0x29, 0x1c, 0x02, 0xf0, 0xf0, 0xfe, 0x28, 0x1c, - 0x01, 0xf0, 0x31, 0xfc, 0x04, 0x34, 0xc0, 0xc4, - 0xf8, 0xbd, 0x4c, 0x7b, 0x01, 0x00, 0x55, 0x80, - 0x00, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x4c, 0x21, - 0x28, 0x78, 0x3c, 0x00, 0x0c, 0x4e, 0x00, 0x00, - 0x09, 0x4a, 0x41, 0x43, 0x8c, 0x18, 0x22, 0x68, - 0x01, 0x21, 0xfb, 0xf7, 0xe1, 0xfa, 0x28, 0x78, - 0x01, 0xf0, 0xfa, 0xfb, 0x3c, 0x23, 0xe0, 0x56, - 0x41, 0x1e, 0x01, 0x20, 0x07, 0xf0, 0x34, 0xfb, - 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x7c, 0x01, 0x00, - 0x58, 0xe3, 0x01, 0x00, 0x0c, 0x23, 0x07, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x80, 0xb5, 0x40, 0x68, - 0x41, 0x6b, 0x00, 0x29, 0x3c, 0x00, 0x48, 0x4e, - 0x00, 0x00, 0x02, 0xd0, 0x0b, 0xf0, 0xfb, 0xfd, - 0x80, 0xbd, 0x0b, 0xf0, 0x2c, 0xfd, 0x80, 0xbd, - 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0x38, 0x22, - 0x0a, 0x4b, 0x42, 0x43, 0xd2, 0x18, 0x00, 0x29, - 0x80, 0xb5, 0x04, 0xd0, 0x02, 0x29, 0x07, 0xd1, - 0x0b, 0xf0, 0xfb, 0xfc, 0x80, 0xbd, 0xd2, 0x6a, - 0x01, 0x21, 0xfb, 0xf7, 0xb0, 0xfa, 0x80, 0xbd, - 0x03, 0x21, 0x86, 0x20, 0xfc, 0xf7, 0x3c, 0x00, - 0x84, 0x4e, 0x00, 0x00, 0x0f, 0xfa, 0x80, 0xbd, - 0xd4, 0xe4, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x06, - 0x24, 0x0e, 0x0c, 0x20, 0x0e, 0x49, 0x60, 0x43, - 0x40, 0x18, 0x45, 0x68, 0xa8, 0x6b, 0x00, 0x28, - 0x03, 0xd1, 0x00, 0x21, 0x20, 0x1c, 0xfd, 0xf7, - 0xe1, 0xfa, 0x20, 0x1c, 0x07, 0xf0, 0xf2, 0xff, - 0x00, 0x28, 0x08, 0xd0, 0x28, 0x1c, 0x60, 0x30, - 0xc1, 0x79, 0x01, 0x29, 0x03, 0xd9, 0xff, 0x31, - 0x3c, 0x00, 0xc0, 0x4e, 0x00, 0x00, 0xc1, 0x71, - 0xff, 0x31, 0x81, 0x71, 0x01, 0x21, 0x20, 0x1c, - 0x02, 0xf0, 0xc5, 0xfe, 0xb0, 0xbd, 0x60, 0x7b, - 0x01, 0x00, 0x70, 0xb5, 0x00, 0x06, 0x00, 0x0e, - 0x05, 0x1c, 0x4c, 0x23, 0x0a, 0x49, 0x58, 0x43, - 0x44, 0x18, 0x3c, 0x20, 0x00, 0x5d, 0xff, 0x30, - 0x06, 0x06, 0x36, 0x16, 0x28, 0x1c, 0x01, 0xf0, - 0x90, 0xfb, 0x00, 0x21, 0x28, 0x1c, 0x22, 0x68, - 0xfb, 0xf7, 0x3c, 0x00, 0xfc, 0x4e, 0x00, 0x00, - 0x6f, 0xfa, 0x31, 0x1c, 0x00, 0x20, 0x07, 0xf0, - 0xc7, 0xfa, 0x70, 0xbd, 0x58, 0xe3, 0x01, 0x00, - 0x0c, 0x22, 0x0f, 0x4b, 0x42, 0x43, 0xd2, 0x18, - 0x10, 0xb5, 0x54, 0x68, 0x00, 0x29, 0x0d, 0xd0, - 0x02, 0x29, 0x0f, 0xd1, 0x2c, 0x20, 0x00, 0x5d, - 0x00, 0x28, 0x03, 0xd0, 0x07, 0x21, 0x0c, 0x20, - 0xfc, 0xf7, 0xba, 0xf9, 0x20, 0x1c, 0x0b, 0xf0, - 0xbb, 0xfc, 0x10, 0xbd, 0x3c, 0x00, 0x38, 0x4f, - 0x00, 0x00, 0x00, 0x21, 0x02, 0xf0, 0x8d, 0xfe, - 0x10, 0xbd, 0x04, 0x21, 0x0c, 0x20, 0xfc, 0xf7, - 0xae, 0xf9, 0x10, 0xbd, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x29, 0x07, 0xd0, - 0x0c, 0x23, 0x05, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x40, 0x68, 0x0b, 0xf0, 0x4a, 0xfc, 0x80, 0xbd, - 0x01, 0x21, 0x02, 0xf0, 0x76, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0x3c, 0x00, - 0x74, 0x4f, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x00, 0x29, 0x05, 0xd0, 0x02, 0x29, 0x1a, 0xd1, - 0x20, 0x1c, 0x0b, 0xf0, 0xeb, 0xfc, 0x10, 0xbd, - 0x0d, 0x48, 0x04, 0x70, 0x0d, 0x48, 0x07, 0xf0, - 0x07, 0xf9, 0x0d, 0x48, 0x01, 0x88, 0x01, 0x22, - 0x12, 0x03, 0x11, 0x43, 0x01, 0x80, 0x4c, 0x20, - 0x0a, 0x49, 0x60, 0x43, 0x40, 0x18, 0x40, 0x30, - 0x00, 0x78, 0xfd, 0xf7, 0x5d, 0xfd, 0x20, 0x1c, - 0x3c, 0x00, 0xb0, 0x4f, 0x00, 0x00, 0x0a, 0xf0, - 0xd4, 0xf8, 0x10, 0xbd, 0x03, 0x21, 0x86, 0x20, - 0xfc, 0xf7, 0x73, 0xf9, 0x10, 0xbd, 0x3c, 0x7c, - 0x01, 0x00, 0x05, 0x4e, 0x00, 0x00, 0x32, 0x80, - 0x07, 0x00, 0x58, 0xe3, 0x01, 0x00, 0xff, 0xb5, - 0x05, 0x1c, 0x01, 0x20, 0x83, 0xb0, 0x01, 0x90, - 0x0c, 0x20, 0x5d, 0x4a, 0x68, 0x43, 0x86, 0x18, - 0x01, 0x27, 0x00, 0x29, 0x74, 0x68, 0x0e, 0xd0, - 0x02, 0x29, 0x3c, 0x00, 0xec, 0x4f, 0x00, 0x00, - 0x6a, 0xd1, 0x2c, 0x20, 0x00, 0x5d, 0x00, 0x28, - 0x03, 0xd0, 0x06, 0x21, 0x0c, 0x20, 0xfc, 0xf7, - 0x53, 0xf9, 0x20, 0x1c, 0x0b, 0xf0, 0x20, 0xfd, - 0x07, 0xb0, 0xf0, 0xbd, 0x52, 0x48, 0x14, 0x38, - 0x45, 0x70, 0xa0, 0x6b, 0x00, 0x28, 0x07, 0xd0, - 0x50, 0x48, 0x07, 0xf0, 0x7f, 0xf8, 0x01, 0x21, - 0x28, 0x1c, 0xfd, 0xf7, 0x25, 0xfa, 0x1c, 0xe0, - 0x4d, 0x48, 0x07, 0xf0, 0x3c, 0x00, 0x28, 0x50, - 0x00, 0x00, 0x77, 0xf8, 0x4a, 0x48, 0x14, 0x38, - 0x05, 0x70, 0x4b, 0x48, 0x01, 0x88, 0x01, 0x22, - 0x52, 0x03, 0x11, 0x43, 0x01, 0x80, 0x40, 0x20, - 0x00, 0x5d, 0xfd, 0xf7, 0x12, 0xfd, 0xb0, 0x68, - 0x00, 0x28, 0x09, 0xd1, 0x28, 0x1c, 0x07, 0xf0, - 0x64, 0xff, 0xb0, 0x60, 0x00, 0x28, 0x03, 0xd1, - 0x09, 0x21, 0x0c, 0x20, 0xfc, 0xf7, 0x23, 0xf9, - 0x05, 0x98, 0x00, 0x28, 0x03, 0xd0, 0x3c, 0x00, - 0x64, 0x50, 0x00, 0x00, 0xe0, 0x6c, 0x01, 0x30, - 0xe0, 0x64, 0x0e, 0xe0, 0x67, 0x20, 0x00, 0x5d, - 0x00, 0x28, 0x07, 0xd1, 0xe0, 0x6c, 0x00, 0x28, - 0x04, 0xd1, 0x39, 0x48, 0x02, 0x38, 0xc0, 0x6a, - 0xa0, 0x64, 0x09, 0xe0, 0x20, 0x6d, 0x00, 0x28, - 0x01, 0xd0, 0x00, 0x27, 0x04, 0xe0, 0x28, 0x1c, - 0x07, 0xf0, 0x00, 0xff, 0x00, 0x28, 0xe5, 0xd1, - 0x05, 0x98, 0x20, 0x65, 0x20, 0x1c, 0x20, 0x30, - 0x3c, 0x00, 0xa0, 0x50, 0x00, 0x00, 0x62, 0x6a, - 0x02, 0x90, 0x81, 0x7b, 0x28, 0x1c, 0x07, 0xf0, - 0x78, 0xff, 0x00, 0x2f, 0x19, 0xd0, 0x20, 0x1c, - 0x60, 0x30, 0xc1, 0x79, 0x4a, 0x1c, 0xc2, 0x71, - 0x80, 0x79, 0x81, 0x42, 0x02, 0xd2, 0x01, 0x20, - 0x01, 0xe0, 0x40, 0xe0, 0x00, 0x20, 0x01, 0x90, - 0x00, 0x28, 0x0a, 0xd0, 0x25, 0x48, 0x00, 0x78, - 0x80, 0x07, 0x06, 0xd5, 0x00, 0xf0, 0x0d, 0xfb, - 0x01, 0x1c, 0x3c, 0x00, 0xdc, 0x50, 0x00, 0x00, - 0x20, 0x1c, 0x0b, 0xf0, 0x15, 0xfd, 0x01, 0x90, - 0x01, 0x98, 0x00, 0x28, 0x0f, 0xd0, 0x02, 0x98, - 0x00, 0x7b, 0x02, 0x28, 0x03, 0xd1, 0x20, 0x1c, - 0x04, 0xf0, 0xd0, 0xfe, 0x84, 0xe7, 0x01, 0x28, - 0x00, 0xd0, 0x7e, 0xe7, 0x21, 0x1c, 0x30, 0x1c, - 0x04, 0xf0, 0xe2, 0xfe, 0x7c, 0xe7, 0x25, 0x1c, - 0x60, 0x35, 0xe8, 0x79, 0xff, 0x30, 0xa8, 0x71, - 0x68, 0x7a, 0x06, 0xf0, 0x3c, 0x00, 0x18, 0x51, - 0x00, 0x00, 0x9d, 0xfc, 0x0d, 0xf0, 0x47, 0xfe, - 0x07, 0x1c, 0x05, 0xf0, 0x12, 0xff, 0x3f, 0x18, - 0x02, 0x98, 0x81, 0x7b, 0x20, 0x69, 0x04, 0x30, - 0x00, 0xf0, 0x35, 0xfa, 0x61, 0x6a, 0x05, 0xf0, - 0xea, 0xfe, 0x39, 0x18, 0x6b, 0x7a, 0x30, 0x88, - 0x80, 0x31, 0x09, 0x4a, 0x0d, 0xf0, 0x91, 0xfe, - 0x5d, 0xe7, 0x03, 0x21, 0x0c, 0x20, 0xfc, 0xf7, - 0xaa, 0xf8, 0x58, 0xe7, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x51, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, - 0xa5, 0x4d, 0x00, 0x00, 0xc9, 0x4d, 0x00, 0x00, - 0x32, 0x80, 0x07, 0x00, 0x1d, 0x75, 0x01, 0x00, - 0x8d, 0x4e, 0x00, 0x00, 0xff, 0xb5, 0x81, 0xb0, - 0x1f, 0x1c, 0x05, 0x1c, 0x14, 0x1c, 0x10, 0x1c, - 0x0a, 0x9e, 0x00, 0xf0, 0xf5, 0xfc, 0x29, 0x1c, - 0x10, 0x31, 0x20, 0x1d, 0x06, 0x22, 0xfb, 0xf7, - 0xb7, 0xf9, 0xa8, 0x8e, 0x20, 0x80, 0xe8, 0x8e, - 0x3c, 0x00, 0x90, 0x51, 0x00, 0x00, 0x60, 0x80, - 0x02, 0x99, 0x20, 0x1c, 0x00, 0xf0, 0x07, 0xf9, - 0xff, 0x34, 0x01, 0x34, 0x66, 0x60, 0x27, 0x60, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xf8, 0xb5, - 0x0f, 0x1c, 0x1e, 0x1c, 0x05, 0x1c, 0x14, 0x1c, - 0x10, 0x1c, 0x00, 0xf0, 0xd8, 0xfc, 0xa8, 0x88, - 0x39, 0x1c, 0x20, 0x80, 0x28, 0x89, 0x60, 0x80, - 0x20, 0x1c, 0x00, 0xf0, 0xf0, 0xf8, 0xff, 0x34, - 0x01, 0x34, 0x3c, 0x00, 0xcc, 0x51, 0x00, 0x00, - 0x66, 0x60, 0xf8, 0xbd, 0x70, 0xb5, 0x04, 0x1c, - 0xc0, 0x68, 0x05, 0x68, 0x20, 0x1c, 0x14, 0x30, - 0x06, 0x1c, 0x00, 0xf0, 0x0f, 0xfb, 0x00, 0x28, - 0x16, 0xd0, 0x01, 0x22, 0x02, 0x21, 0x20, 0x69, - 0x05, 0xf0, 0xf8, 0xfa, 0x00, 0x28, 0x01, 0xd0, - 0xfb, 0xf7, 0x24, 0xff, 0x00, 0x22, 0x02, 0x21, - 0x20, 0x69, 0x05, 0xf0, 0xef, 0xfa, 0x00, 0x28, - 0x06, 0xd0, 0xfb, 0xf7, 0x3c, 0x00, 0x08, 0x52, - 0x00, 0x00, 0x01, 0xff, 0x00, 0x28, 0x02, 0xd0, - 0x30, 0x1c, 0x0b, 0xf0, 0x7c, 0xfb, 0x68, 0x89, - 0x80, 0x07, 0xc0, 0x0f, 0x03, 0xf0, 0xa7, 0xf8, - 0x18, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0xc1, 0x68, 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, - 0xfb, 0xf7, 0xd4, 0xf8, 0x70, 0xbd, 0x94, 0x67, - 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0x10, 0x1c, - 0x0d, 0x1c, 0x19, 0x1c, 0xff, 0x22, 0x3c, 0x00, - 0x44, 0x52, 0x00, 0x00, 0x00, 0x27, 0xff, 0x2d, - 0x25, 0xd0, 0x00, 0x29, 0x05, 0xd0, 0x4b, 0x88, - 0x00, 0x2b, 0x02, 0xd0, 0x00, 0xf0, 0x50, 0xfc, - 0x15, 0xe0, 0x00, 0x21, 0x10, 0x4e, 0x4b, 0x00, - 0x9e, 0x19, 0x02, 0x23, 0xf6, 0x5e, 0x86, 0x42, - 0x01, 0xdd, 0x0a, 0x1c, 0x04, 0xe0, 0x01, 0x31, - 0x09, 0x06, 0x09, 0x0e, 0x26, 0x29, 0xf1, 0xd3, - 0x09, 0x4e, 0x50, 0x00, 0x80, 0x19, 0x4e, 0x23, - 0x3c, 0x00, 0x80, 0x52, 0x00, 0x00, 0xc0, 0x5e, - 0x27, 0x2a, 0x07, 0xd2, 0x06, 0x49, 0x20, 0x39, - 0x49, 0x57, 0x47, 0x31, 0x40, 0x1a, 0x20, 0x60, - 0x01, 0x27, 0x02, 0xe0, 0x7e, 0x20, 0xc0, 0x43, - 0x20, 0x60, 0x38, 0x1c, 0xf8, 0xbd, 0xfa, 0x47, - 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x7e, 0x21, - 0x05, 0x1c, 0x00, 0x20, 0xc9, 0x43, 0x00, 0x2c, - 0x0f, 0xd0, 0x10, 0x1c, 0x05, 0xf0, 0x6b, 0xfd, - 0x00, 0x28, 0x3c, 0x00, 0xbc, 0x52, 0x00, 0x00, - 0x02, 0xd0, 0x21, 0x1c, 0xc9, 0x39, 0x01, 0xe0, - 0x21, 0x1c, 0x86, 0x39, 0x02, 0x20, 0xc0, 0x43, - 0xfb, 0xf7, 0xb4, 0xf9, 0x01, 0x1c, 0x01, 0x20, - 0x29, 0x60, 0xb0, 0xbd, 0x98, 0xb5, 0x14, 0x1c, - 0x00, 0x22, 0x00, 0x92, 0x22, 0x1c, 0xfd, 0xf7, - 0x43, 0xfe, 0x98, 0xbd, 0x05, 0x49, 0x80, 0xb5, - 0x08, 0x60, 0x05, 0x49, 0x01, 0x20, 0xc8, 0x61, - 0x01, 0x21, 0x00, 0x20, 0x3c, 0x00, 0xf8, 0x52, - 0x00, 0x00, 0x03, 0xf0, 0x1c, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x00, 0x20, - 0x03, 0xf0, 0x11, 0xfe, 0x06, 0xf0, 0x0d, 0xfb, - 0x02, 0x49, 0x00, 0x20, 0x08, 0x60, 0x80, 0xbd, - 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0x03, 0x49, - 0x01, 0x20, 0x09, 0x69, 0x00, 0x29, 0x00, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x53, 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, - 0x03, 0x48, 0x00, 0x69, 0x00, 0x28, 0x01, 0xd0, - 0x40, 0x69, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x1c, - 0x0d, 0x1c, 0x04, 0x1c, 0x00, 0x28, 0x01, 0xd0, - 0x01, 0x2c, 0x07, 0xd1, 0x00, 0xf0, 0x36, 0xfa, - 0x00, 0x28, 0x05, 0xd0, 0x13, 0xf0, 0xca, 0xf9, - 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, - 0x3c, 0x00, 0x70, 0x53, 0x00, 0x00, 0x01, 0x20, - 0x00, 0x2c, 0x00, 0xd0, 0x00, 0x20, 0x0a, 0x4c, - 0x04, 0x34, 0x61, 0xc4, 0x10, 0x3c, 0x00, 0xf0, - 0x24, 0xfa, 0x00, 0x28, 0x02, 0xd0, 0x00, 0xf0, - 0xc6, 0xf9, 0x01, 0xe0, 0x00, 0xf0, 0xe5, 0xf8, - 0xc0, 0x30, 0xc3, 0x6b, 0x22, 0x1d, 0x07, 0xca, - 0xfb, 0xf7, 0x20, 0xf8, 0x00, 0x20, 0x70, 0xbd, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0xf8, 0xb5, - 0x0d, 0x1c, 0x3c, 0x00, 0xac, 0x53, 0x00, 0x00, - 0x00, 0x21, 0x04, 0x1c, 0x28, 0x1c, 0x05, 0xf0, - 0xe3, 0xf9, 0x23, 0x1c, 0xff, 0x33, 0x21, 0x33, - 0xff, 0x27, 0x00, 0x28, 0x05, 0xd0, 0x22, 0x22, - 0x01, 0x1c, 0x18, 0x1c, 0xfb, 0xf7, 0x96, 0xf8, - 0x00, 0xe0, 0x1f, 0x70, 0x03, 0x21, 0x28, 0x1c, - 0x05, 0xf0, 0xd2, 0xf9, 0x26, 0x1c, 0xff, 0x36, - 0x41, 0x36, 0x00, 0x28, 0x05, 0xd0, 0x03, 0x22, - 0x01, 0x1c, 0xb0, 0x1c, 0x3c, 0x00, 0xe8, 0x53, - 0x00, 0x00, 0xfb, 0xf7, 0x86, 0xf8, 0x00, 0xe0, - 0xb7, 0x70, 0x01, 0x21, 0x28, 0x1c, 0x05, 0xf0, - 0xc2, 0xf9, 0x00, 0x28, 0x07, 0xd0, 0x01, 0x1c, - 0x20, 0x1c, 0xff, 0x30, 0x0a, 0x22, 0x46, 0x30, - 0xfb, 0xf7, 0x77, 0xf8, 0x00, 0xe0, 0x77, 0x71, - 0x32, 0x21, 0x28, 0x1c, 0x05, 0xf0, 0xb3, 0xf9, - 0x00, 0x28, 0x07, 0xd0, 0x01, 0x1c, 0x20, 0x1c, - 0xff, 0x30, 0x12, 0x22, 0x50, 0x30, 0x3c, 0x00, - 0x24, 0x54, 0x00, 0x00, 0xfb, 0xf7, 0x68, 0xf8, - 0x00, 0xe0, 0xf7, 0x73, 0x06, 0x21, 0x28, 0x1c, - 0x05, 0xf0, 0xa4, 0xf9, 0x00, 0x28, 0x07, 0xd0, - 0x01, 0x1c, 0x20, 0x1c, 0xff, 0x30, 0x04, 0x22, - 0x63, 0x30, 0xfb, 0xf7, 0x59, 0xf8, 0xf8, 0xbd, - 0xff, 0x34, 0x61, 0x34, 0xa7, 0x70, 0xfa, 0xe7, - 0x08, 0x49, 0x80, 0xb5, 0x09, 0x68, 0x00, 0x28, - 0x01, 0xd1, 0x07, 0x48, 0x01, 0x68, 0x08, 0x1c, - 0x3c, 0x00, 0x60, 0x54, 0x00, 0x00, 0x05, 0xd1, - 0x03, 0x21, 0x90, 0x20, 0xfb, 0xf7, 0x1d, 0xff, - 0x00, 0x20, 0x80, 0xbd, 0x01, 0xf0, 0xd7, 0xfb, - 0x80, 0xbd, 0x1c, 0x67, 0x01, 0x00, 0x20, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xe7, 0xff, - 0x80, 0xbd, 0xf0, 0xb5, 0x00, 0x24, 0x84, 0x46, - 0x00, 0x20, 0x0b, 0xe0, 0x87, 0x40, 0x17, 0x40, - 0x07, 0xd0, 0x14, 0x23, 0x0b, 0x4d, 0x43, 0x43, - 0x5b, 0x19, 0x3c, 0x00, 0x9c, 0x54, 0x00, 0x00, - 0x1b, 0x7c, 0x65, 0x46, 0x2b, 0x55, 0x01, 0x34, - 0x01, 0x30, 0x01, 0x27, 0x3b, 0x1c, 0x0e, 0x28, - 0x00, 0xd3, 0x00, 0x23, 0x0e, 0x88, 0x3d, 0x1c, - 0xa6, 0x42, 0x00, 0xdc, 0x00, 0x25, 0x2b, 0x40, - 0xe7, 0xd1, 0x0c, 0x80, 0xf0, 0xbd, 0x00, 0x00, - 0x74, 0x40, 0x01, 0x00, 0x78, 0xb5, 0x04, 0x1c, - 0x01, 0x20, 0x20, 0x70, 0x08, 0x20, 0x00, 0xab, - 0x0d, 0x1c, 0x18, 0x80, 0x3c, 0x00, 0xd8, 0x54, - 0x00, 0x00, 0x16, 0x1c, 0xa0, 0x1c, 0x69, 0x46, - 0xff, 0xf7, 0xd1, 0xff, 0x00, 0xab, 0x00, 0x22, - 0xd2, 0x43, 0x19, 0x88, 0x82, 0x40, 0x61, 0x70, - 0x32, 0x20, 0x28, 0x70, 0x10, 0x20, 0x18, 0x80, - 0x32, 0x40, 0xa8, 0x1c, 0x69, 0x46, 0xff, 0xf7, - 0xc2, 0xff, 0x00, 0xab, 0x18, 0x88, 0x68, 0x70, - 0x78, 0xbd, 0x80, 0xb5, 0x02, 0xf0, 0x35, 0xff, - 0x00, 0x21, 0x00, 0x28, 0x00, 0xd0, 0x3c, 0x00, - 0x14, 0x55, 0x00, 0x00, 0x01, 0x69, 0x08, 0x1c, - 0x80, 0xbd, 0x00, 0x00, 0x05, 0x49, 0x00, 0x28, - 0x01, 0xd0, 0xc8, 0x68, 0x00, 0xe0, 0x08, 0x69, - 0x00, 0x28, 0x01, 0xd0, 0x04, 0x30, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x10, 0x67, 0x01, 0x00, - 0x03, 0x48, 0x00, 0x69, 0x00, 0x28, 0x01, 0xd0, - 0x04, 0x30, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x02, 0x48, 0x00, 0x69, - 0x3c, 0x00, 0x50, 0x55, 0x00, 0x00, 0x00, 0x28, - 0xff, 0xd1, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, 0x20, 0x69, - 0x00, 0x28, 0x03, 0xd1, 0x04, 0x21, 0x90, 0x20, - 0xfb, 0xf7, 0x9b, 0xfe, 0x20, 0x69, 0x10, 0xbd, - 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x00, 0xf0, 0x40, 0xf9, 0x00, 0x28, - 0x01, 0xd0, 0x00, 0x20, 0x10, 0xbd, 0x20, 0x1c, - 0x00, 0xf0, 0x3c, 0x00, 0x8c, 0x55, 0x00, 0x00, - 0x57, 0xf9, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, - 0x10, 0xbd, 0x02, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0x70, 0xb5, 0x0f, 0x4e, 0x04, 0x1c, 0x30, 0x68, - 0x0d, 0x1c, 0x00, 0x28, 0x07, 0xd0, 0x21, 0x1c, - 0x04, 0x30, 0x05, 0xf0, 0xc1, 0xfb, 0x00, 0x28, - 0x01, 0xd0, 0x30, 0x68, 0x0b, 0xe0, 0x09, 0x4a, - 0x10, 0x68, 0x00, 0x28, 0x09, 0xd0, 0x21, 0x1c, - 0x14, 0x1c, 0x04, 0x30, 0x3c, 0x00, 0xc8, 0x55, - 0x00, 0x00, 0x05, 0xf0, 0xb4, 0xfb, 0x00, 0x28, - 0x02, 0xd0, 0x20, 0x68, 0x9c, 0x30, 0x00, 0xe0, - 0x03, 0x48, 0x40, 0x5d, 0x70, 0xbd, 0x20, 0x67, - 0x01, 0x00, 0x1c, 0x67, 0x01, 0x00, 0xcc, 0x47, - 0x01, 0x00, 0x04, 0x49, 0x00, 0x20, 0x09, 0x69, - 0x00, 0x29, 0x02, 0xd0, 0xff, 0x31, 0x01, 0x31, - 0x88, 0x69, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0x01, 0x48, 0x00, 0x7a, 0x3c, 0x00, - 0x04, 0x56, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0xac, 0x7c, 0x01, 0x00, 0xfe, 0xb5, 0x06, 0x1c, - 0x00, 0x20, 0x1f, 0x1c, 0x14, 0x1c, 0x00, 0x29, - 0x02, 0x90, 0x19, 0xd0, 0x01, 0x29, 0x26, 0xd0, - 0x02, 0x29, 0x47, 0xd1, 0x26, 0x48, 0x00, 0x78, - 0x05, 0xf0, 0xa0, 0xfb, 0xa0, 0x72, 0x0a, 0xf0, - 0x4f, 0xfc, 0x0e, 0x28, 0x09, 0xd1, 0xa0, 0x7a, - 0x05, 0xf0, 0xaa, 0xfb, 0x00, 0x28, 0x04, 0xd0, - 0x3c, 0x00, 0x40, 0x56, 0x00, 0x00, 0x20, 0x48, - 0x00, 0x78, 0x05, 0xf0, 0x92, 0xfb, 0xa0, 0x72, - 0x00, 0x20, 0x20, 0x72, 0x2f, 0xe0, 0x1d, 0x4d, - 0x28, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xfb, 0xf7, - 0x52, 0xfe, 0x00, 0x97, 0x2a, 0x68, 0x23, 0x1c, - 0x18, 0x32, 0x11, 0x1c, 0x30, 0x1c, 0xfc, 0xf7, - 0xde, 0xfb, 0x26, 0xe0, 0x30, 0x1c, 0x0c, 0xf0, - 0xca, 0xfb, 0x05, 0x1c, 0x02, 0xd0, 0xa8, 0x68, - 0x00, 0x28, 0x3c, 0x00, 0x7c, 0x56, 0x00, 0x00, - 0x08, 0xd1, 0x13, 0x48, 0x00, 0x68, 0x00, 0x28, - 0x01, 0xd1, 0xfb, 0xf7, 0x3b, 0xfe, 0x10, 0x48, - 0x00, 0x68, 0x18, 0x30, 0x02, 0x1c, 0x0e, 0x48, - 0x00, 0x97, 0x01, 0x68, 0x23, 0x1c, 0x18, 0x31, - 0x30, 0x1c, 0xfc, 0xf7, 0xc3, 0xfb, 0x00, 0x2d, - 0x0a, 0xd0, 0x40, 0x35, 0x28, 0x88, 0x80, 0x06, - 0x06, 0xd4, 0x00, 0x20, 0x20, 0x60, 0x03, 0xe0, - 0x01, 0x21, 0x90, 0x20, 0x3c, 0x00, 0xb8, 0x56, - 0x00, 0x00, 0xfb, 0xf7, 0xf4, 0xfd, 0x02, 0x98, - 0xfe, 0xbd, 0xb0, 0x69, 0x01, 0x00, 0x90, 0x57, - 0x01, 0x00, 0x20, 0x67, 0x01, 0x00, 0x1c, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x20, 0x02, 0xf0, - 0x4a, 0xfe, 0x18, 0x23, 0x05, 0x4a, 0x58, 0x43, - 0x80, 0x18, 0x40, 0x69, 0x01, 0x21, 0x00, 0x28, - 0x00, 0xd0, 0x41, 0x78, 0x08, 0x1c, 0x80, 0xbd, - 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, 0x3c, 0x00, - 0xf4, 0x56, 0x00, 0x00, 0x02, 0x49, 0x08, 0x69, - 0x00, 0x28, 0x00, 0xd1, 0xc8, 0x68, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x03, 0x48, 0xc0, 0x68, - 0x00, 0x28, 0x01, 0xd0, 0x04, 0x30, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x10, 0x67, 0x01, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0xe0, 0x68, 0x00, 0x28, - 0x03, 0xd1, 0x05, 0x21, 0x90, 0x20, 0xfb, 0xf7, - 0xbd, 0xfd, 0xe0, 0x68, 0x10, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x57, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, 0x00, 0x2a, - 0x03, 0xd0, 0x11, 0x49, 0x12, 0x4f, 0x0e, 0x78, - 0x01, 0xe0, 0x11, 0x4f, 0x0c, 0x26, 0x08, 0x2e, - 0x01, 0xd2, 0x34, 0x1c, 0x00, 0xe0, 0x08, 0x24, - 0x01, 0x21, 0x01, 0x70, 0x44, 0x70, 0x39, 0x1c, - 0x22, 0x1c, 0x02, 0x30, 0xfa, 0xf7, 0xcb, 0xfe, - 0x32, 0x1b, 0x00, 0x2a, 0x07, 0xdd, 0x32, 0x20, - 0x28, 0x70, 0x3c, 0x00, 0x6c, 0x57, 0x00, 0x00, - 0x39, 0x19, 0xa8, 0x1c, 0x6a, 0x70, 0xfa, 0xf7, - 0xc1, 0xfe, 0xf8, 0xbd, 0xff, 0x20, 0x28, 0x70, - 0x00, 0x20, 0x68, 0x70, 0xf9, 0xe7, 0x00, 0x00, - 0xa4, 0x69, 0x01, 0x00, 0xb0, 0x69, 0x01, 0x00, - 0x90, 0x57, 0x01, 0x00, 0x01, 0x49, 0x48, 0x62, - 0x70, 0x47, 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, - 0x03, 0x49, 0x80, 0xb5, 0x08, 0x60, 0x01, 0x21, - 0x01, 0x20, 0x03, 0xf0, 0x3c, 0x00, 0xa8, 0x57, - 0x00, 0x00, 0xc5, 0xfb, 0x80, 0xbd, 0x1c, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x01, 0x20, - 0x03, 0xf0, 0xbd, 0xfb, 0x06, 0xf0, 0xb9, 0xf8, - 0x02, 0x49, 0x00, 0x20, 0x08, 0x60, 0x80, 0xbd, - 0x00, 0x00, 0x1c, 0x67, 0x01, 0x00, 0x03, 0x49, - 0x01, 0x20, 0xc9, 0x68, 0x00, 0x29, 0x00, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0x03, 0x48, 0xc0, 0x68, 0x3c, 0x00, - 0xe4, 0x57, 0x00, 0x00, 0x00, 0x28, 0x01, 0xd0, - 0x40, 0x69, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x01, 0x20, 0x03, 0xf0, 0x9b, 0xfb, 0x80, 0xbd, - 0x05, 0x4a, 0x80, 0xb5, 0x12, 0x69, 0x00, 0x21, - 0x00, 0x2a, 0x03, 0xd0, 0x11, 0x1d, 0x05, 0xf0, - 0x91, 0xfa, 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, - 0x10, 0x67, 0x01, 0x00, 0x06, 0x4a, 0x80, 0xb5, - 0x3c, 0x00, 0x20, 0x58, 0x00, 0x00, 0x12, 0x69, - 0x00, 0x21, 0x00, 0x2a, 0x05, 0xd0, 0x11, 0x1c, - 0xff, 0x31, 0x21, 0x31, 0x05, 0xf0, 0x8b, 0xfa, - 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, 0x10, 0x67, - 0x01, 0x00, 0x05, 0x4a, 0x80, 0xb5, 0xd2, 0x68, - 0x00, 0x21, 0x00, 0x2a, 0x03, 0xd0, 0x11, 0x1d, - 0x05, 0xf0, 0x73, 0xfa, 0x01, 0x1c, 0x08, 0x1c, - 0x80, 0xbd, 0x10, 0x67, 0x01, 0x00, 0x06, 0x4a, - 0x80, 0xb5, 0x3c, 0x00, 0x5c, 0x58, 0x00, 0x00, - 0xd2, 0x68, 0x00, 0x21, 0x00, 0x2a, 0x05, 0xd0, - 0x11, 0x1c, 0xff, 0x31, 0x21, 0x31, 0x05, 0xf0, - 0x6d, 0xfa, 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, - 0x10, 0x67, 0x01, 0x00, 0xff, 0xb5, 0x0d, 0x1c, - 0x1f, 0x1c, 0x87, 0xb0, 0x10, 0x9e, 0x00, 0x24, - 0x02, 0xf0, 0x72, 0xfd, 0x18, 0x23, 0x13, 0x49, - 0x58, 0x43, 0x08, 0x58, 0x00, 0x28, 0x19, 0xd0, - 0x04, 0x1c, 0x33, 0x1c, 0x3c, 0x00, 0x98, 0x58, - 0x00, 0x00, 0x3a, 0x1c, 0x28, 0x1c, 0x09, 0x99, - 0xfa, 0xf7, 0x9f, 0xfd, 0x04, 0x1c, 0x14, 0xd0, - 0x18, 0x20, 0x00, 0xab, 0x18, 0x80, 0xaa, 0x68, - 0x01, 0xa8, 0x69, 0x46, 0xff, 0xf7, 0xe7, 0xfd, - 0x6a, 0x46, 0x01, 0xa9, 0x00, 0x20, 0x07, 0xf0, - 0x44, 0xfe, 0x00, 0x28, 0x05, 0xd1, 0x0a, 0x21, - 0x00, 0xe0, 0x0f, 0x21, 0x90, 0x20, 0xfb, 0xf7, - 0xea, 0xfc, 0x20, 0x1c, 0x0b, 0xb0, 0x3c, 0x00, - 0xd4, 0x58, 0x00, 0x00, 0xf0, 0xbd, 0x00, 0x00, - 0x94, 0x67, 0x01, 0x00, 0x10, 0xb5, 0x00, 0x24, - 0x02, 0xf0, 0x44, 0xfd, 0x18, 0x23, 0x05, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x80, 0x68, 0x00, 0x28, - 0x02, 0xd0, 0xfa, 0xf7, 0x71, 0xfd, 0x01, 0x24, - 0x20, 0x1c, 0x10, 0xbd, 0x94, 0x67, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x4b, 0x00, 0xf0, 0x4e, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, - 0x3c, 0x00, 0x10, 0x59, 0x00, 0x00, 0x80, 0xb5, - 0x02, 0x4b, 0x00, 0xf0, 0x46, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x11, 0x67, 0x01, 0x00, 0xf8, 0xb5, - 0x0e, 0x1c, 0x15, 0x1c, 0x00, 0x28, 0x1c, 0x49, - 0x10, 0xd0, 0x48, 0x68, 0x1c, 0x4a, 0x28, 0x80, - 0x00, 0x20, 0x07, 0xe0, 0x0b, 0x18, 0x1c, 0x7a, - 0x14, 0x23, 0x63, 0x43, 0x9b, 0x18, 0x1b, 0x7c, - 0x33, 0x54, 0x01, 0x30, 0x2b, 0x88, 0x83, 0x42, - 0xf4, 0xdc, 0x3c, 0x00, 0x4c, 0x59, 0x00, 0x00, - 0x24, 0xe0, 0x00, 0x20, 0x0f, 0x1c, 0x00, 0x24, - 0x08, 0x60, 0x0f, 0xe0, 0x30, 0x5d, 0x05, 0xf0, - 0x07, 0xfa, 0x0e, 0x28, 0x01, 0xd1, 0x00, 0x20, - 0xf8, 0xbd, 0x39, 0x19, 0x08, 0x72, 0x01, 0x22, - 0x39, 0x68, 0x82, 0x40, 0x11, 0x43, 0x08, 0x1c, - 0x38, 0x60, 0x01, 0x34, 0x28, 0x88, 0xa0, 0x42, - 0xec, 0xdc, 0x28, 0x88, 0x78, 0x60, 0xff, 0xf7, - 0xb7, 0xfe, 0x00, 0x28, 0x3c, 0x00, 0x88, 0x59, - 0x00, 0x00, 0x06, 0xd0, 0x01, 0x69, 0x00, 0x29, - 0x03, 0xd0, 0x7f, 0x21, 0xc9, 0x43, 0x0b, 0xf0, - 0x52, 0xfb, 0x01, 0x20, 0xe3, 0xe7, 0x2c, 0x7d, - 0x01, 0x00, 0x74, 0x40, 0x01, 0x00, 0x10, 0xb5, - 0x1c, 0x1c, 0x00, 0x28, 0x0b, 0xd0, 0x20, 0x78, - 0x0e, 0x28, 0x05, 0xd2, 0x14, 0x23, 0x0c, 0x4a, - 0x58, 0x43, 0x80, 0x18, 0x00, 0x7c, 0x00, 0xe0, - 0x00, 0x20, 0x08, 0x70, 0x0e, 0xe0, 0x3c, 0x00, - 0xc4, 0x59, 0x00, 0x00, 0x08, 0x78, 0x05, 0xf0, - 0xd1, 0xf9, 0x20, 0x70, 0xff, 0xf7, 0x92, 0xfe, - 0x00, 0x28, 0x06, 0xd0, 0x01, 0x69, 0x00, 0x29, - 0x03, 0xd0, 0x7f, 0x21, 0xc9, 0x43, 0x0b, 0xf0, - 0x2d, 0xfb, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0x74, 0x40, 0x01, 0x00, 0x80, 0xb5, 0x27, 0x20, - 0xc0, 0x43, 0x09, 0xf0, 0x31, 0xfc, 0x80, 0xbd, - 0x80, 0xb5, 0x27, 0x20, 0xc0, 0x43, 0x09, 0xf0, - 0x3c, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x39, 0xfc, - 0x80, 0xbd, 0x80, 0xb5, 0x28, 0x20, 0x09, 0xf0, - 0x42, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x28, 0x20, 0x09, 0xf0, 0x4a, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x01, 0x28, 0x28, 0xd1, - 0x01, 0x29, 0x01, 0xd0, 0xfb, 0xf7, 0x6b, 0xfc, - 0xff, 0xf7, 0xe9, 0xfd, 0x02, 0x28, 0x1a, 0xd1, - 0x07, 0xf0, 0x13, 0xfc, 0x12, 0x4c, 0x21, 0x69, - 0x88, 0x42, 0x3c, 0x00, 0x3c, 0x5a, 0x00, 0x00, - 0x15, 0xd0, 0x07, 0xf0, 0x0d, 0xfc, 0x20, 0x61, - 0x20, 0x68, 0x7d, 0x24, 0xe4, 0x00, 0x44, 0x43, - 0x0d, 0xf0, 0xae, 0xf9, 0x05, 0x1c, 0x07, 0xf0, - 0x0b, 0xfc, 0x28, 0x1a, 0x84, 0x42, 0x00, 0xd9, - 0x24, 0x1a, 0x01, 0x22, 0x21, 0x1c, 0x0a, 0x20, - 0x0d, 0xf0, 0xb2, 0xfd, 0xb0, 0xbd, 0x00, 0x21, - 0x09, 0x20, 0x0c, 0xf0, 0x75, 0xfc, 0xb0, 0xbd, - 0x07, 0x21, 0x0a, 0x20, 0x3c, 0x00, 0x78, 0x5a, - 0x00, 0x00, 0xfb, 0xf7, 0x14, 0xfc, 0xb0, 0xbd, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x7d, 0x20, - 0x02, 0x49, 0x00, 0x01, 0x08, 0x60, 0x70, 0x47, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x10, 0xb5, - 0x81, 0x6d, 0x04, 0x1c, 0xff, 0x30, 0x46, 0x30, - 0x0c, 0xf0, 0xd1, 0xfc, 0x20, 0x1c, 0xff, 0x30, - 0x50, 0x30, 0xa1, 0x6d, 0x0c, 0xf0, 0xcb, 0xfc, - 0x10, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0x3c, 0x00, - 0xb4, 0x5a, 0x00, 0x00, 0x0d, 0x1c, 0x02, 0xf0, - 0x59, 0xfc, 0x20, 0x1c, 0x02, 0xf0, 0x56, 0xfc, - 0x18, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x18, 0x22, 0x29, 0x1c, 0xfa, 0xf7, 0x70, 0xfd, - 0xb0, 0xbd, 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x09, 0xf0, 0xbc, 0xfb, - 0x20, 0x1c, 0x09, 0xf0, 0xc7, 0xfb, 0x10, 0xbd, - 0x10, 0xb5, 0x04, 0x1c, 0x09, 0xf0, 0xd0, 0xfb, - 0x3c, 0x00, 0xf0, 0x5a, 0x00, 0x00, 0x20, 0x1c, - 0x09, 0xf0, 0xdb, 0xfb, 0x10, 0xbd, 0x70, 0xb5, - 0x0c, 0x78, 0x06, 0x1c, 0x48, 0x88, 0x4d, 0x78, - 0xe2, 0x00, 0x80, 0x1a, 0xe9, 0x00, 0x40, 0x1a, - 0x01, 0x1c, 0x41, 0x43, 0x12, 0x31, 0x24, 0x20, - 0xfa, 0xf7, 0x91, 0xfd, 0x21, 0x1c, 0x61, 0x43, - 0xc9, 0x00, 0x40, 0x18, 0x29, 0x1c, 0x69, 0x43, - 0xc9, 0x00, 0x42, 0x18, 0x0c, 0x49, 0x88, 0x79, - 0x0c, 0x4b, 0x3c, 0x00, 0x2c, 0x5b, 0x00, 0x00, - 0x53, 0x43, 0x0c, 0x4a, 0x13, 0x60, 0x53, 0x7b, - 0x34, 0x02, 0x14, 0x60, 0x52, 0x7b, 0x88, 0x71, - 0x01, 0x33, 0x58, 0x10, 0x08, 0x4b, 0x80, 0x1a, - 0x01, 0x21, 0x49, 0x02, 0x58, 0x43, 0x00, 0x28, - 0x00, 0xda, 0x49, 0x42, 0x08, 0x18, 0x80, 0x12, - 0x21, 0x38, 0x70, 0xbd, 0x20, 0x10, 0x07, 0x00, - 0xec, 0x04, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00, - 0x03, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x5b, - 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x21, - 0x04, 0x30, 0xfa, 0xf7, 0x70, 0xfc, 0xff, 0x20, - 0x21, 0x30, 0xff, 0x21, 0x01, 0x55, 0x20, 0x1c, - 0xff, 0x30, 0x41, 0x30, 0x81, 0x70, 0x41, 0x71, - 0xc1, 0x73, 0xff, 0x20, 0x63, 0x30, 0x01, 0x55, - 0x00, 0x20, 0x20, 0x61, 0x60, 0x61, 0xff, 0x34, - 0x01, 0x34, 0xa0, 0x60, 0xe0, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0x3c, 0x00, - 0xa4, 0x5b, 0x00, 0x00, 0x08, 0x1c, 0x58, 0x60, - 0x9a, 0x60, 0x1c, 0x1c, 0x1e, 0x60, 0x15, 0x1c, - 0x9b, 0x8a, 0xe2, 0x8a, 0x31, 0x1c, 0x02, 0xf0, - 0xa1, 0xfc, 0x28, 0x1a, 0xe0, 0x60, 0x70, 0xbd, - 0x70, 0xb5, 0x04, 0x1c, 0x08, 0x1c, 0x11, 0x1c, - 0x1e, 0x1c, 0x00, 0x25, 0xeb, 0x43, 0x22, 0x1c, - 0x18, 0x32, 0x0b, 0xf0, 0xf7, 0xfb, 0x22, 0x1c, - 0xff, 0x32, 0x50, 0x32, 0x11, 0x1c, 0x0a, 0x39, - 0x3c, 0x00, 0xe0, 0x5b, 0x00, 0x00, 0x01, 0x23, - 0x20, 0x1c, 0x00, 0xf0, 0xc6, 0xf8, 0x0c, 0x28, - 0x10, 0xd0, 0x01, 0x25, 0x20, 0x1c, 0x0b, 0xf0, - 0xac, 0xfa, 0x20, 0x1c, 0x00, 0xf0, 0x19, 0xf8, - 0x20, 0x1c, 0x00, 0xf0, 0x0a, 0xf8, 0x20, 0x1c, - 0x00, 0xf0, 0x29, 0xf8, 0x31, 0x1c, 0x20, 0x1c, - 0x0b, 0xf0, 0x17, 0xfa, 0x28, 0x1c, 0x70, 0xbd, - 0x00, 0x00, 0xff, 0x21, 0x1d, 0x31, 0x09, 0x58, - 0x80, 0x30, 0x3c, 0x00, 0x1c, 0x5c, 0x00, 0x00, - 0x89, 0x07, 0x00, 0x29, 0x01, 0xda, 0x01, 0x21, - 0x00, 0xe0, 0x00, 0x21, 0xc1, 0x62, 0x70, 0x47, - 0x01, 0x1c, 0x80, 0x31, 0x00, 0x22, 0x0a, 0x63, - 0x07, 0x4a, 0x12, 0x68, 0x00, 0x2a, 0x09, 0xd0, - 0x42, 0x88, 0x92, 0x06, 0x06, 0xd5, 0xff, 0x30, - 0x01, 0x30, 0xc0, 0x69, 0x40, 0x07, 0x01, 0xd4, - 0x01, 0x20, 0x08, 0x63, 0x70, 0x47, 0x00, 0x00, - 0xac, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x58, 0x5c, - 0x00, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x4a, 0x88, - 0x00, 0x20, 0x52, 0x05, 0x05, 0xd5, 0xff, 0x31, - 0x01, 0x31, 0xc9, 0x69, 0x49, 0x07, 0x00, 0xd4, - 0x01, 0x20, 0x06, 0xf0, 0xec, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xf8, 0xb5, 0x05, 0x1c, 0x98, 0x68, - 0x17, 0x1c, 0x0e, 0x1c, 0x1c, 0x1c, 0x00, 0x28, - 0x02, 0xd1, 0x20, 0x1c, 0x0c, 0xf0, 0x31, 0xf8, - 0xab, 0x69, 0x39, 0x1c, 0x30, 0x1c, 0x3c, 0x00, - 0x94, 0x5c, 0x00, 0x00, 0xa2, 0x68, 0x0b, 0xf0, - 0x95, 0xfb, 0xf8, 0xbd, 0xf8, 0xb5, 0x16, 0x1c, - 0x0d, 0x1c, 0x1f, 0x1c, 0x00, 0x24, 0x02, 0xf0, - 0x61, 0xfb, 0x18, 0x23, 0x06, 0x49, 0x58, 0x43, - 0x40, 0x18, 0x43, 0x68, 0x00, 0x2b, 0x05, 0xd0, - 0x3a, 0x1c, 0x31, 0x1c, 0x28, 0x1c, 0xfa, 0xf7, - 0x8e, 0xfb, 0x01, 0x24, 0x20, 0x1c, 0xf8, 0xbd, - 0x94, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x07, 0xf0, - 0x3c, 0x00, 0xd0, 0x5c, 0x00, 0x00, 0xc5, 0xfa, - 0x09, 0x49, 0x08, 0x61, 0x08, 0x68, 0x00, 0x28, - 0x02, 0xd1, 0x7d, 0x20, 0x00, 0x01, 0x08, 0x60, - 0x08, 0x68, 0x7d, 0x21, 0xc9, 0x00, 0x41, 0x43, - 0x00, 0x23, 0x01, 0x22, 0x0a, 0x20, 0x0d, 0xf0, - 0x4e, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, 0x0a, 0x20, - 0x0d, 0xf0, 0x97, 0xfc, 0x80, 0xbd, 0xf8, 0xb5, - 0x0e, 0x1c, 0x3c, 0x00, 0x0c, 0x5d, 0x00, 0x00, - 0x51, 0x68, 0x14, 0x1c, 0x12, 0x68, 0xa5, 0x68, - 0x0b, 0x1c, 0x75, 0x1b, 0x57, 0x19, 0x97, 0x42, - 0x00, 0xd2, 0x01, 0x31, 0x42, 0x68, 0x00, 0x25, - 0x8a, 0x42, 0x02, 0xdd, 0x01, 0x25, 0x62, 0x60, - 0x05, 0xe0, 0x9a, 0x42, 0x03, 0xd1, 0x01, 0x68, - 0xb9, 0x42, 0x00, 0xd9, 0x01, 0x25, 0x00, 0x2d, - 0x09, 0xd0, 0x01, 0x68, 0x21, 0x60, 0xa6, 0x60, - 0xa3, 0x8a, 0xe2, 0x8a, 0x3c, 0x00, 0x48, 0x5d, - 0x00, 0x00, 0x60, 0x68, 0x02, 0xf0, 0xd7, 0xfb, - 0x30, 0x1a, 0xe0, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0xf0, 0x07, 0xfb, - 0x18, 0x23, 0x03, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x18, 0x21, 0xfa, 0xf7, 0x98, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, 0xfe, 0xb5, - 0x04, 0x1c, 0x08, 0x1c, 0x11, 0x1c, 0x1e, 0x1c, - 0x0c, 0x25, 0x01, 0x22, 0x00, 0x92, 0x3c, 0x00, - 0x84, 0x5d, 0x00, 0x00, 0xa2, 0x69, 0x02, 0xab, - 0xfd, 0xf7, 0xf0, 0xf8, 0x00, 0x28, 0x45, 0xd0, - 0x02, 0x98, 0x27, 0x21, 0x02, 0x1c, 0x0a, 0x40, - 0x01, 0xd1, 0x08, 0x43, 0x02, 0x90, 0x21, 0x49, - 0xa0, 0x69, 0x08, 0x40, 0x06, 0xd0, 0x02, 0x98, - 0x01, 0x40, 0x03, 0xd1, 0x49, 0x21, 0xc9, 0x00, - 0x08, 0x43, 0x02, 0x90, 0xa0, 0x6d, 0x02, 0x99, - 0x88, 0x42, 0x30, 0xd0, 0x00, 0x2e, 0x2d, 0xd0, - 0x3c, 0x00, 0xc0, 0x5d, 0x00, 0x00, 0x40, 0x21, - 0x20, 0x1c, 0x58, 0x30, 0xfa, 0xf7, 0x69, 0xfb, - 0x02, 0x98, 0x00, 0x25, 0x00, 0x26, 0x37, 0x1c, - 0xa0, 0x65, 0x19, 0xe0, 0xc0, 0x07, 0x11, 0xd5, - 0xf0, 0x19, 0x00, 0x19, 0x70, 0x30, 0x05, 0x71, - 0x28, 0x1c, 0x04, 0xf0, 0xd4, 0xff, 0x00, 0x28, - 0x04, 0xd0, 0xa0, 0x19, 0x80, 0x30, 0x05, 0x72, - 0x01, 0x36, 0x03, 0xe0, 0xe0, 0x19, 0x60, 0x30, - 0x05, 0x70, 0x3c, 0x00, 0xfc, 0x5d, 0x00, 0x00, - 0x01, 0x37, 0x01, 0x35, 0x2d, 0x06, 0x02, 0x98, - 0x2d, 0x0e, 0x40, 0x08, 0x02, 0x90, 0x02, 0x98, - 0x00, 0x28, 0xe2, 0xd1, 0x84, 0x20, 0x06, 0x51, - 0xf0, 0x19, 0x20, 0x67, 0xe7, 0x65, 0x00, 0x25, - 0x00, 0xe0, 0x0b, 0x25, 0x28, 0x1c, 0xfe, 0xbd, - 0xd8, 0x3a, 0x00, 0x00, 0x38, 0xb5, 0x05, 0x1c, - 0x08, 0x1c, 0x11, 0x1c, 0x00, 0x24, 0xe2, 0x43, - 0x6b, 0x46, 0xff, 0xf7, 0x3c, 0x00, 0x38, 0x5e, - 0x00, 0x00, 0x4f, 0xfa, 0x00, 0x28, 0x05, 0xd0, - 0xa8, 0x69, 0x00, 0x99, 0x01, 0x40, 0x81, 0x42, - 0x00, 0xd1, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd, - 0x00, 0x00, 0x7c, 0xb5, 0x05, 0x6a, 0x86, 0x69, - 0x04, 0x1c, 0xc0, 0x68, 0xfb, 0xf7, 0xb7, 0xfb, - 0xe1, 0x69, 0xfb, 0xf7, 0xda, 0xfa, 0x20, 0x1c, - 0xe2, 0x69, 0x40, 0x30, 0xc1, 0x8b, 0x12, 0x89, - 0x89, 0x18, 0xc1, 0x83, 0x06, 0x49, 0x3c, 0x00, - 0x74, 0x5e, 0x00, 0x00, 0x01, 0x94, 0x00, 0x91, - 0x28, 0x69, 0x33, 0x1c, 0x82, 0x88, 0x01, 0x68, - 0xe0, 0x68, 0xc0, 0x68, 0x00, 0xf0, 0xf2, 0xf9, - 0x7c, 0xbd, 0x00, 0x00, 0x91, 0x5e, 0x00, 0x00, - 0xb0, 0xb5, 0xd1, 0x68, 0x55, 0x69, 0xc8, 0x68, - 0x14, 0x1c, 0x14, 0x4b, 0x0c, 0xe0, 0x02, 0x68, - 0x9a, 0x42, 0x07, 0xd1, 0xc2, 0x68, 0xca, 0x60, - 0x00, 0x21, 0xc1, 0x60, 0x01, 0x60, 0xfb, 0xf7, - 0x3c, 0x00, 0xb0, 0x5e, 0x00, 0x00, 0x73, 0xfb, - 0x03, 0xe0, 0x01, 0x1c, 0xc0, 0x68, 0x00, 0x28, - 0xf0, 0xd1, 0xe0, 0x68, 0xc0, 0x68, 0xe8, 0x60, - 0xe0, 0x68, 0xc5, 0x60, 0x20, 0x1c, 0x40, 0x30, - 0xc1, 0x8b, 0x2a, 0x89, 0x89, 0x18, 0xc1, 0x83, - 0x20, 0x68, 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, - 0xba, 0xff, 0xb0, 0xbd, 0x04, 0x48, 0x04, 0xf0, - 0x4e, 0xf9, 0x00, 0x6a, 0x07, 0xf0, 0x77, 0xfa, - 0xb0, 0xbd, 0x3c, 0x00, 0xec, 0x5e, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0xa0, 0x6a, 0x01, 0x00, - 0xf1, 0xb5, 0x82, 0xb0, 0x02, 0x98, 0x06, 0x69, - 0x01, 0x1c, 0x08, 0x36, 0x60, 0x31, 0x45, 0x68, - 0x01, 0x91, 0x82, 0xe0, 0x10, 0x21, 0x00, 0x20, - 0x2f, 0x69, 0xfb, 0xf7, 0x63, 0xfb, 0x68, 0x61, - 0x01, 0x89, 0x08, 0x39, 0x09, 0x04, 0x09, 0x0c, - 0x01, 0x81, 0x68, 0x69, 0x00, 0x68, 0x40, 0x18, - 0x08, 0x21, 0xfb, 0xf7, 0x3c, 0x00, 0x28, 0x5f, - 0x00, 0x00, 0x57, 0xfb, 0xe8, 0x61, 0x68, 0x69, - 0x71, 0x88, 0x00, 0x68, 0x20, 0x22, 0x01, 0x80, - 0x71, 0x68, 0x41, 0x60, 0x01, 0x99, 0x49, 0x7b, - 0x89, 0x01, 0x11, 0x43, 0xc1, 0x70, 0x00, 0x21, - 0x81, 0x70, 0x28, 0x20, 0xfb, 0xf7, 0x75, 0xfc, - 0x39, 0x88, 0x04, 0x1c, 0xc1, 0x81, 0xa8, 0x6b, - 0x00, 0x28, 0x03, 0xd1, 0x01, 0x20, 0x80, 0x02, - 0x08, 0x43, 0xe0, 0x81, 0x06, 0x22, 0x3c, 0x00, - 0x64, 0x5f, 0x00, 0x00, 0x39, 0x1d, 0x20, 0x1c, - 0x10, 0x30, 0xfa, 0xf7, 0xc5, 0xfa, 0x39, 0x1c, - 0x0a, 0x31, 0x06, 0x22, 0x20, 0x1c, 0x16, 0x30, - 0x00, 0x90, 0xfa, 0xf7, 0xbd, 0xfa, 0x39, 0x1c, - 0x10, 0x31, 0x06, 0x22, 0x20, 0x1c, 0x1c, 0x30, - 0xfa, 0xf7, 0xb6, 0xfa, 0xe1, 0x89, 0x25, 0x4a, - 0x5c, 0x20, 0x11, 0x40, 0x01, 0x22, 0x92, 0x03, - 0x11, 0x43, 0x40, 0x5b, 0xe1, 0x81, 0x0f, 0x21, - 0x3c, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x08, 0x40, - 0x60, 0x84, 0x20, 0x1c, 0x20, 0x30, 0x16, 0x21, - 0x81, 0x71, 0x00, 0x21, 0x21, 0x70, 0xe9, 0x6b, - 0x00, 0x29, 0x07, 0xd0, 0x29, 0x69, 0x09, 0x8b, - 0x09, 0x07, 0x09, 0x0f, 0x21, 0x70, 0xa1, 0x84, - 0x18, 0x21, 0x81, 0x71, 0x06, 0x22, 0x60, 0x1c, - 0x00, 0x99, 0xfa, 0xf7, 0x94, 0xfa, 0x70, 0x68, - 0x00, 0x0e, 0xe0, 0x71, 0x70, 0x68, 0x00, 0x02, - 0x00, 0x0e, 0x3c, 0x00, 0xdc, 0x5f, 0x00, 0x00, - 0x20, 0x72, 0x70, 0x68, 0x00, 0x04, 0x00, 0x0e, - 0x60, 0x72, 0x70, 0x68, 0xa0, 0x72, 0x70, 0x88, - 0x00, 0x0a, 0xe0, 0x72, 0x70, 0x88, 0x20, 0x73, - 0x70, 0x88, 0x01, 0x30, 0x00, 0x04, 0x00, 0x0c, - 0x70, 0x80, 0x02, 0xd1, 0x70, 0x68, 0x01, 0x30, - 0x70, 0x60, 0xac, 0x61, 0x02, 0x98, 0x28, 0x62, - 0x2d, 0x68, 0x00, 0x2d, 0x00, 0xd0, 0x79, 0xe7, - 0x02, 0x98, 0x04, 0x49, 0x3c, 0x00, 0x18, 0x60, - 0x00, 0x00, 0x42, 0x68, 0x04, 0x48, 0x04, 0xf0, - 0x74, 0xf8, 0xfe, 0xbd, 0x00, 0x00, 0x8f, 0xc7, - 0xff, 0xff, 0x3d, 0xda, 0x00, 0x00, 0xa0, 0x6a, - 0x01, 0x00, 0xb0, 0xb5, 0x07, 0x4d, 0x28, 0x78, - 0x03, 0x28, 0x08, 0xd0, 0x00, 0x24, 0x2c, 0x70, - 0x69, 0x68, 0x00, 0x29, 0x03, 0xd0, 0x01, 0x20, - 0xfa, 0xf7, 0xc8, 0xf9, 0x6c, 0x60, 0xb0, 0xbd, - 0x00, 0x00, 0x9c, 0x73, 0x01, 0x00, 0x3c, 0x00, - 0x54, 0x60, 0x00, 0x00, 0xf8, 0xb5, 0x2b, 0x4b, - 0xd8, 0x6a, 0x00, 0x28, 0x50, 0xd0, 0x2a, 0x48, - 0x01, 0x1c, 0xff, 0x31, 0x01, 0x31, 0xca, 0x68, - 0x01, 0x32, 0xca, 0x60, 0x1a, 0x6c, 0x00, 0x2a, - 0x02, 0xd1, 0x4a, 0x69, 0x01, 0x32, 0x4a, 0x61, - 0x0a, 0x69, 0x01, 0x32, 0x0a, 0x61, 0xda, 0x68, - 0x00, 0x2a, 0x04, 0xd0, 0x1f, 0x4a, 0x01, 0x32, - 0x12, 0x78, 0x00, 0x2a, 0x02, 0xd1, 0x8a, 0x69, - 0x3c, 0x00, 0x90, 0x60, 0x00, 0x00, 0x01, 0x32, - 0x8a, 0x61, 0x00, 0x25, 0x07, 0x1d, 0x18, 0x26, - 0x1a, 0x4a, 0x6e, 0x43, 0x74, 0x32, 0x90, 0x59, - 0x00, 0x28, 0x29, 0xd0, 0xb4, 0x18, 0x60, 0x69, - 0x00, 0x28, 0x25, 0xd1, 0x60, 0x68, 0x00, 0x28, - 0x02, 0xd0, 0x01, 0x68, 0x00, 0x29, 0x05, 0xd1, - 0xa1, 0x68, 0x00, 0x29, 0x1c, 0xd0, 0x09, 0x68, - 0x00, 0x29, 0x19, 0xd0, 0x00, 0x28, 0x05, 0xd0, - 0xe1, 0x68, 0x3c, 0x00, 0xcc, 0x60, 0x00, 0x00, - 0x01, 0x31, 0xe1, 0x60, 0x00, 0x68, 0x81, 0x42, - 0x11, 0xd3, 0xa0, 0x68, 0x00, 0x28, 0x06, 0xd0, - 0x21, 0x69, 0x00, 0x68, 0x08, 0x18, 0x0c, 0xf0, - 0xa3, 0xfd, 0x00, 0x28, 0x07, 0xd0, 0x06, 0x4a, - 0x01, 0x20, 0x60, 0x61, 0x74, 0x32, 0x91, 0x59, - 0x38, 0x1c, 0xfa, 0xf7, 0x70, 0xf9, 0x01, 0x35, - 0x02, 0x2d, 0xcb, 0xdb, 0xf8, 0xbd, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x3c, 0x00, 0x08, 0x61, - 0x00, 0x00, 0xf4, 0x67, 0x01, 0x00, 0xf8, 0xb5, - 0x0f, 0x1c, 0x00, 0x25, 0x04, 0x1c, 0x00, 0x28, - 0x25, 0xd0, 0x20, 0x1c, 0x04, 0xf0, 0x03, 0xfe, - 0x00, 0x28, 0x06, 0xd0, 0xff, 0xf7, 0xff, 0xf8, - 0x04, 0x1c, 0xff, 0xf7, 0x50, 0xfb, 0x06, 0x1c, - 0x07, 0xe0, 0x20, 0x1c, 0xff, 0xf7, 0x91, 0xfb, - 0x06, 0x1c, 0x20, 0x1c, 0xff, 0xf7, 0x6f, 0xfb, - 0x04, 0x1c, 0x00, 0x2e, 0x06, 0xd0, 0x3c, 0x00, - 0x44, 0x61, 0x00, 0x00, 0xff, 0xf7, 0x4c, 0xfb, - 0x00, 0x28, 0x02, 0xd0, 0x01, 0x25, 0x01, 0x20, - 0x07, 0xe0, 0x00, 0x2c, 0x06, 0xd0, 0xff, 0xf7, - 0xef, 0xf8, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x25, - 0x00, 0x20, 0x38, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0xb0, 0xb5, 0xc5, 0x68, 0x04, 0x1c, 0x0d, 0xf0, - 0x8f, 0xfc, 0x20, 0x7e, 0xc1, 0x07, 0x08, 0xd5, - 0xe1, 0x68, 0xa9, 0x42, 0x05, 0xd9, 0x22, 0x69, - 0x3c, 0x00, 0x80, 0x61, 0x00, 0x00, 0x91, 0x42, - 0x02, 0xd3, 0xe1, 0x8a, 0x01, 0x31, 0xe1, 0x82, - 0x81, 0x07, 0x08, 0xd5, 0xe1, 0x68, 0xa9, 0x42, - 0x05, 0xd2, 0x22, 0x69, 0x91, 0x42, 0x02, 0xd8, - 0xe1, 0x8a, 0x01, 0x31, 0xe1, 0x82, 0x40, 0x07, - 0x06, 0xd5, 0xe0, 0x68, 0x21, 0x69, 0x88, 0x42, - 0x02, 0xd1, 0xe0, 0x8a, 0x01, 0x30, 0xe0, 0x82, - 0xe0, 0x8a, 0xa1, 0x8a, 0x88, 0x42, 0x0d, 0xd3, - 0x60, 0x7e, 0x3c, 0x00, 0xbc, 0x61, 0x00, 0x00, - 0x02, 0x28, 0x0b, 0xd0, 0x20, 0x68, 0xe1, 0x68, - 0x04, 0x22, 0x07, 0xf0, 0x65, 0xfb, 0x60, 0x7e, - 0x00, 0x28, 0x03, 0xd1, 0x20, 0x68, 0x08, 0xf0, - 0xab, 0xff, 0xb0, 0xbd, 0x00, 0x20, 0xe0, 0x82, - 0xb0, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, - 0x0c, 0x23, 0x20, 0x49, 0x58, 0x43, 0x45, 0x18, - 0x00, 0x20, 0xa8, 0x60, 0x30, 0x1c, 0x06, 0xf0, - 0x91, 0xfe, 0x04, 0x1c, 0x3c, 0x00, 0xf8, 0x61, - 0x00, 0x00, 0x68, 0x60, 0x33, 0xd0, 0x01, 0x20, - 0xa8, 0x70, 0x2c, 0x20, 0x00, 0x5d, 0x02, 0x28, - 0x03, 0xd1, 0x20, 0x1c, 0x03, 0xf0, 0x45, 0xfe, - 0x10, 0xe0, 0x61, 0x6b, 0x00, 0x29, 0x0a, 0xd0, - 0x01, 0x28, 0x04, 0xd1, 0x21, 0x1c, 0x28, 0x1c, - 0x03, 0xf0, 0x55, 0xfe, 0x06, 0xe0, 0x20, 0x1c, - 0x0a, 0xf0, 0x0d, 0xfc, 0x02, 0xe0, 0x20, 0x1c, - 0x0a, 0xf0, 0x3d, 0xfb, 0x0d, 0x48, 0x3c, 0x00, - 0x34, 0x62, 0x00, 0x00, 0x14, 0x38, 0x41, 0x68, - 0x00, 0x29, 0x10, 0xd0, 0x20, 0x1c, 0x40, 0x30, - 0x02, 0x8b, 0x12, 0x07, 0x92, 0x0f, 0x01, 0x2a, - 0x09, 0xd0, 0x80, 0x8b, 0x32, 0x02, 0x00, 0x09, - 0x00, 0x04, 0x10, 0x43, 0x81, 0x22, 0x02, 0x43, - 0x0c, 0x20, 0x0d, 0xf0, 0xb7, 0xf9, 0x0c, 0xf0, - 0xa5, 0xfd, 0x60, 0x64, 0x70, 0xbd, 0x00, 0x00, - 0x60, 0x7b, 0x01, 0x00, 0xff, 0xb5, 0x08, 0x1c, - 0x3c, 0x00, 0x70, 0x62, 0x00, 0x00, 0x11, 0x1c, - 0x0c, 0x32, 0x20, 0x24, 0x14, 0x43, 0x0c, 0x4a, - 0x83, 0xb0, 0x0c, 0xae, 0x52, 0x68, 0x60, 0xce, - 0x94, 0x70, 0x00, 0x24, 0xd4, 0x70, 0x93, 0x63, - 0x0d, 0x23, 0x40, 0x27, 0xbb, 0x52, 0x94, 0x61, - 0x14, 0x84, 0x01, 0x22, 0x02, 0x92, 0x32, 0x1c, - 0x00, 0x90, 0x01, 0x91, 0x23, 0x1c, 0x29, 0x1c, - 0x03, 0x98, 0x00, 0xf0, 0x66, 0xf9, 0x07, 0xb0, - 0xf0, 0xbd, 0x3c, 0x00, 0xac, 0x62, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x00, 0x27, 0x11, 0x4e, 0x1d, 0xe0, 0xe0, 0x68, - 0x00, 0x28, 0x70, 0x68, 0x0c, 0xd1, 0x80, 0x88, - 0x00, 0x07, 0x0d, 0xd1, 0x01, 0x21, 0x0c, 0x48, - 0xfb, 0xf7, 0x84, 0xf9, 0xc4, 0x60, 0xe8, 0x60, - 0x70, 0x68, 0x81, 0x88, 0x01, 0x31, 0x02, 0xe0, - 0x81, 0x88, 0x22, 0x89, 0x89, 0x18, 0x81, 0x80, - 0xe0, 0x68, 0x39, 0x1c, 0x3c, 0x00, 0xe8, 0x62, - 0x00, 0x00, 0x00, 0x28, 0x01, 0xd1, 0x71, 0x68, - 0xc9, 0x6d, 0x25, 0x1c, 0x61, 0x60, 0x04, 0x1c, - 0x00, 0x2c, 0xdf, 0xd1, 0xf8, 0xbd, 0xa0, 0x7e, - 0x01, 0x00, 0x06, 0x49, 0x10, 0xb5, 0x49, 0x68, - 0x00, 0x23, 0x05, 0xe0, 0x8a, 0x88, 0x04, 0x89, - 0x12, 0x19, 0x8a, 0x80, 0x43, 0x60, 0xc0, 0x68, - 0x00, 0x28, 0xf7, 0xd1, 0x10, 0xbd, 0xa0, 0x7e, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x49, 0x3c, 0x00, - 0x24, 0x63, 0x00, 0x00, 0x00, 0x24, 0x49, 0x68, - 0x0a, 0xe0, 0x8a, 0x88, 0x03, 0x89, 0xd2, 0x18, - 0x8a, 0x80, 0xc3, 0x68, 0x22, 0x1c, 0x00, 0x2b, - 0x00, 0xd1, 0xca, 0x6d, 0x42, 0x60, 0x18, 0x1c, - 0x00, 0x28, 0xf2, 0xd1, 0x10, 0xbd, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x01, 0x1c, 0x13, 0x48, - 0x10, 0xb5, 0x40, 0x68, 0x00, 0x23, 0x09, 0xe0, - 0x82, 0x88, 0x0c, 0x89, 0x12, 0x19, 0x82, 0x80, - 0x3c, 0x00, 0x60, 0x63, 0x00, 0x00, 0x4b, 0x60, - 0xca, 0x68, 0x00, 0x2a, 0x00, 0xd1, 0x41, 0x66, - 0xc9, 0x68, 0x00, 0x29, 0xf3, 0xd1, 0x01, 0x1c, - 0x68, 0x31, 0x81, 0x64, 0xc3, 0x64, 0x43, 0x65, - 0x82, 0x88, 0x08, 0x23, 0x11, 0x1c, 0x08, 0x31, - 0x89, 0x07, 0x89, 0x0f, 0x59, 0x1a, 0x50, 0x23, - 0x19, 0x52, 0x51, 0x18, 0x81, 0x80, 0x01, 0x1c, - 0x40, 0x6e, 0x48, 0x31, 0xc1, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x63, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x49, - 0x00, 0x24, 0x4b, 0x68, 0x06, 0xe0, 0xc2, 0x68, - 0x21, 0x1c, 0x00, 0x2a, 0x00, 0xd1, 0xd9, 0x6d, - 0x41, 0x60, 0x10, 0x1c, 0x00, 0x28, 0xf6, 0xd1, - 0x10, 0xbd, 0x00, 0x00, 0xa0, 0x7e, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xfe, 0xb5, 0x06, 0x1c, - 0x0c, 0x48, 0x0c, 0x1c, 0x40, 0x68, 0x80, 0x21, - 0x81, 0x70, 0x00, 0x21, 0x3c, 0x00, 0xd8, 0x63, - 0x00, 0x00, 0xc1, 0x70, 0x15, 0x1c, 0x40, 0x22, - 0x81, 0x63, 0x11, 0x52, 0x81, 0x61, 0x01, 0x84, - 0x00, 0x20, 0x04, 0x22, 0x02, 0x92, 0x00, 0x90, - 0x01, 0x91, 0x29, 0x1c, 0x20, 0x1c, 0x1a, 0x1c, - 0x33, 0x1c, 0x00, 0xf0, 0xbc, 0xf8, 0xfe, 0xbd, - 0x00, 0x00, 0xa0, 0x7e, 0x01, 0x00, 0x70, 0xb5, - 0x06, 0x1c, 0x17, 0x48, 0x80, 0x78, 0x02, 0x21, - 0x16, 0x4a, 0x88, 0x43, 0x90, 0x70, 0x3c, 0x00, - 0x14, 0x64, 0x00, 0x00, 0x10, 0x1c, 0x80, 0x78, - 0x08, 0x43, 0x11, 0x1c, 0x88, 0x70, 0x13, 0x48, - 0x00, 0x24, 0xc4, 0x70, 0x70, 0x20, 0xfb, 0xf7, - 0xd9, 0xf9, 0x11, 0x4d, 0x70, 0x21, 0x68, 0x60, - 0xfa, 0xf7, 0x34, 0xf8, 0x30, 0x07, 0x00, 0x0f, - 0x69, 0x68, 0x90, 0x30, 0xc8, 0x65, 0x0d, 0x48, - 0x68, 0x22, 0x08, 0x80, 0x08, 0x1c, 0x28, 0x30, - 0x89, 0x60, 0x48, 0x61, 0x08, 0x20, 0x08, 0x82, - 0x3c, 0x00, 0x50, 0x64, 0x00, 0x00, 0x08, 0x1c, - 0x38, 0x30, 0x48, 0x63, 0x20, 0x38, 0x48, 0x64, - 0x5a, 0x20, 0x50, 0x54, 0x06, 0x48, 0x08, 0x31, - 0x41, 0x64, 0x44, 0x65, 0x70, 0xbd, 0x00, 0x00, - 0x07, 0x00, 0x58, 0x00, 0x07, 0x00, 0xa0, 0x7e, - 0x01, 0x00, 0xde, 0xc0, 0x00, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x0a, 0x4b, 0x10, 0xb5, 0x58, 0x6d, - 0x0a, 0x49, 0x00, 0x22, 0x49, 0x68, 0x00, 0x24, - 0x4a, 0x62, 0x3c, 0x00, 0x8c, 0x64, 0x00, 0x00, - 0x5c, 0x65, 0x4b, 0x6e, 0x00, 0x2b, 0x01, 0xd0, - 0xda, 0x60, 0x4a, 0x66, 0x8b, 0x6d, 0x00, 0x2b, - 0x03, 0xd0, 0x0a, 0x6e, 0x00, 0x21, 0xf9, 0xf7, - 0x9c, 0xff, 0x10, 0xbd, 0x00, 0x30, 0x07, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x09, 0x49, 0x10, 0xb5, - 0x08, 0x88, 0x01, 0x30, 0x08, 0x80, 0x01, 0x20, - 0x07, 0x49, 0x80, 0x02, 0x08, 0x60, 0x07, 0x4c, - 0xa2, 0x6d, 0x00, 0x2a, 0x3c, 0x00, 0xc8, 0x64, - 0x00, 0x00, 0x05, 0xd0, 0x05, 0x21, 0xd1, 0x20, - 0x0d, 0xf0, 0x6f, 0xf9, 0x01, 0x20, 0xa0, 0x65, - 0x10, 0xbd, 0xb0, 0x74, 0x01, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, 0xff, 0xb5, - 0x83, 0xb0, 0x0c, 0xae, 0x86, 0x46, 0x8c, 0x46, - 0x0e, 0x4a, 0x43, 0xce, 0x0f, 0xad, 0x0f, 0x1c, - 0x52, 0x68, 0x0c, 0x37, 0x30, 0xcd, 0x97, 0x70, - 0xd3, 0x70, 0x96, 0x63, 0x0d, 0x26, 0x3c, 0x00, - 0x04, 0x65, 0x00, 0x00, 0x40, 0x27, 0xbe, 0x52, - 0x05, 0x9e, 0x96, 0x61, 0x13, 0x84, 0x00, 0x22, - 0x02, 0x92, 0x2a, 0x1c, 0x00, 0x90, 0x01, 0x91, - 0x21, 0x1c, 0x60, 0x46, 0x73, 0x46, 0x00, 0xf0, - 0x29, 0xf8, 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0xff, 0xb5, 0x10, 0x1c, - 0x1a, 0x1c, 0x0c, 0x1c, 0x19, 0x1c, 0x60, 0x23, - 0xff, 0x32, 0x13, 0x43, 0x0c, 0x4a, 0x83, 0xb0, - 0x3c, 0x00, 0x40, 0x65, 0x00, 0x00, 0x0c, 0xae, - 0x52, 0x68, 0x60, 0xce, 0x93, 0x70, 0x00, 0x23, - 0xd3, 0x70, 0x93, 0x63, 0x40, 0x27, 0xbb, 0x52, - 0x93, 0x61, 0x13, 0x84, 0x03, 0x22, 0x02, 0x92, - 0x01, 0x91, 0x29, 0x1c, 0x32, 0x1c, 0x00, 0x90, - 0x20, 0x1c, 0x03, 0x9b, 0x00, 0xf0, 0x05, 0xf8, - 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xa0, 0x7e, - 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, 0x11, 0x48, - 0x1c, 0x1c, 0x3c, 0x00, 0x7c, 0x65, 0x00, 0x00, - 0x08, 0x9b, 0x07, 0x9f, 0x40, 0x68, 0xde, 0x00, - 0x81, 0x65, 0x02, 0x66, 0x00, 0x21, 0x81, 0x80, - 0x0d, 0x48, 0x81, 0x59, 0x20, 0x1c, 0xf9, 0xf7, - 0x22, 0xff, 0x0b, 0x48, 0x30, 0x18, 0x41, 0x68, - 0x28, 0x1c, 0xf9, 0xf7, 0x1c, 0xff, 0x07, 0x49, - 0x06, 0x98, 0x49, 0x68, 0x00, 0x2c, 0x88, 0x62, - 0x0f, 0x86, 0x00, 0xd1, 0x2c, 0x1c, 0x05, 0x48, - 0x4c, 0x62, 0x45, 0x65, 0x3c, 0x00, 0xb8, 0x65, - 0x00, 0x00, 0x01, 0x21, 0x01, 0x65, 0x01, 0x64, - 0xf8, 0xbd, 0xa0, 0x7e, 0x01, 0x00, 0x90, 0x52, - 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, 0xff, 0xb5, - 0x83, 0xb0, 0x0d, 0xae, 0x60, 0xce, 0x0c, 0x9f, - 0x08, 0x1c, 0x11, 0x1c, 0xd2, 0x19, 0xff, 0x32, - 0x40, 0x24, 0x14, 0x43, 0x0b, 0x4a, 0x52, 0x68, - 0x94, 0x70, 0x00, 0x24, 0xd4, 0x70, 0x93, 0x63, - 0x40, 0x23, 0x9f, 0x52, 0x94, 0x61, 0x3c, 0x00, - 0xf4, 0x65, 0x00, 0x00, 0x14, 0x84, 0x02, 0x22, - 0x02, 0x92, 0x32, 0x1c, 0x00, 0x90, 0x01, 0x91, - 0x23, 0x1c, 0x29, 0x1c, 0x03, 0x98, 0xff, 0xf7, - 0xb5, 0xff, 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x4c, 0x21, 0x0d, 0x4a, - 0x41, 0x43, 0x10, 0xb5, 0x8c, 0x18, 0x0c, 0x49, - 0x09, 0x78, 0x88, 0x42, 0x07, 0xd1, 0x05, 0xf0, - 0xc7, 0xfd, 0x0a, 0x48, 0x01, 0x88, 0x01, 0x22, - 0x3c, 0x00, 0x30, 0x66, 0x00, 0x00, 0x12, 0x03, - 0x91, 0x43, 0x01, 0x80, 0x20, 0x1c, 0x30, 0x30, - 0x0c, 0x23, 0xc1, 0x56, 0x40, 0x7b, 0x81, 0x42, - 0x02, 0xdd, 0x20, 0x8d, 0x0c, 0xf0, 0xe5, 0xfb, - 0x10, 0xbd, 0x58, 0xe3, 0x01, 0x00, 0x3c, 0x7c, - 0x01, 0x00, 0x32, 0x80, 0x07, 0x00, 0x01, 0x1c, - 0x60, 0x31, 0x80, 0xb5, 0xca, 0x79, 0x8b, 0x79, - 0x9a, 0x42, 0x07, 0xd9, 0x48, 0x7a, 0x0c, 0x23, - 0x07, 0x49, 0x3c, 0x00, 0x6c, 0x66, 0x00, 0x00, - 0x58, 0x43, 0x08, 0x5a, 0x0c, 0xf0, 0xd0, 0xfb, - 0x80, 0xbd, 0x20, 0x30, 0x00, 0x7b, 0x01, 0x28, - 0xfa, 0xd1, 0x48, 0x7a, 0x05, 0xf0, 0x40, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x1c, 0x21, 0xf9, 0xf7, - 0x03, 0xff, 0x03, 0x48, 0xa0, 0x80, 0xe0, 0x80, - 0x20, 0x81, 0x60, 0x81, 0xa0, 0x81, 0x10, 0xbd, - 0xff, 0xff, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x66, - 0x00, 0x00, 0xff, 0xb5, 0x04, 0x1c, 0x00, 0x20, - 0x83, 0xb0, 0x0d, 0x1c, 0x06, 0x2c, 0x02, 0x90, - 0x38, 0xd2, 0x1f, 0x4a, 0xff, 0x26, 0xc1, 0x00, - 0x89, 0x18, 0x89, 0x78, 0xa1, 0x42, 0x03, 0xd1, - 0xc0, 0x00, 0x80, 0x18, 0x46, 0x78, 0x04, 0xe0, - 0x01, 0x30, 0x00, 0x06, 0x00, 0x16, 0x06, 0x28, - 0xf1, 0xdb, 0xff, 0x2e, 0x24, 0xd0, 0x01, 0x93, - 0x20, 0x1c, 0x0d, 0xf0, 0xe8, 0xf9, 0x3c, 0x00, - 0xe4, 0x66, 0x00, 0x00, 0x00, 0x28, 0x05, 0xd0, - 0x24, 0x21, 0x28, 0x1c, 0x01, 0xab, 0x02, 0xaa, - 0xfa, 0xf7, 0x30, 0xfe, 0x10, 0x49, 0xf0, 0x00, - 0x30, 0x39, 0x0f, 0x58, 0x31, 0x06, 0x09, 0x16, - 0x28, 0x1c, 0x05, 0x9a, 0x01, 0x9b, 0xf9, 0xf7, - 0x6e, 0xfe, 0x06, 0x1c, 0x10, 0xd1, 0x20, 0x1c, - 0x0d, 0xf0, 0xd0, 0xf9, 0x00, 0x28, 0x0b, 0xd0, - 0x28, 0x1c, 0x69, 0x69, 0xfa, 0xf7, 0x12, 0xfe, - 0x3c, 0x00, 0x20, 0x67, 0x00, 0x00, 0x02, 0x98, - 0x68, 0x61, 0x04, 0xe0, 0x06, 0x2c, 0x01, 0xd3, - 0x07, 0x26, 0x00, 0xe0, 0x08, 0x26, 0x30, 0x1c, - 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xcc, 0x5a, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x09, 0xf0, - 0x86, 0xf8, 0x00, 0x28, 0x02, 0xd0, 0x20, 0x1c, - 0x09, 0xf0, 0xb5, 0xf8, 0x10, 0xbd, 0xfe, 0xb5, - 0x13, 0x4d, 0x04, 0x1c, 0xae, 0x69, 0x00, 0x2e, - 0x1c, 0xd0, 0x3c, 0x00, 0x5c, 0x67, 0x00, 0x00, - 0x10, 0x4f, 0x30, 0x37, 0x78, 0x68, 0x60, 0x43, - 0x01, 0x1c, 0x28, 0x88, 0xf9, 0xf7, 0xd2, 0xff, - 0x39, 0x68, 0x61, 0x43, 0x41, 0x18, 0x01, 0xa8, - 0x32, 0x1c, 0xf9, 0xf7, 0x37, 0xfe, 0x02, 0x98, - 0x29, 0x6a, 0x40, 0x18, 0x28, 0x62, 0x0b, 0xd4, - 0xe9, 0x69, 0x88, 0x42, 0x08, 0xd9, 0xa9, 0x69, - 0x40, 0x1a, 0x28, 0x62, 0x01, 0x98, 0x01, 0x30, - 0x01, 0xe0, 0x00, 0x20, 0x3c, 0x00, 0x98, 0x67, - 0x00, 0x00, 0x02, 0x90, 0x01, 0x90, 0x01, 0x98, - 0xfe, 0xbd, 0xc8, 0x74, 0x01, 0x00, 0xf8, 0xb5, - 0x00, 0x28, 0x28, 0xd0, 0x00, 0x24, 0x14, 0x4d, - 0x00, 0xe0, 0x01, 0x34, 0x61, 0x00, 0x09, 0x19, - 0x49, 0x19, 0x49, 0x78, 0x00, 0x29, 0xf8, 0xd1, - 0x63, 0x00, 0x1b, 0x19, 0x03, 0x33, 0x07, 0x22, - 0x69, 0x46, 0x03, 0xf0, 0xd4, 0xfb, 0x00, 0x2c, - 0x0f, 0xd0, 0x00, 0x20, 0x00, 0x99, 0x3c, 0x00, - 0xd4, 0x67, 0x00, 0x00, 0x0a, 0xe0, 0x42, 0x00, - 0x12, 0x18, 0xae, 0x5c, 0x53, 0x18, 0x52, 0x19, - 0x5e, 0x71, 0x56, 0x78, 0x01, 0x30, 0x9e, 0x71, - 0x92, 0x78, 0xda, 0x71, 0xa0, 0x42, 0xf2, 0xdb, - 0x00, 0x98, 0x03, 0x22, 0x02, 0x30, 0x03, 0x49, - 0xf9, 0xf7, 0x7e, 0xfe, 0xf8, 0xbd, 0x00, 0x00, - 0xeb, 0x62, 0x01, 0x00, 0xe8, 0x62, 0x01, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x08, 0x1c, 0xfa, 0xf7, - 0x3c, 0x00, 0x10, 0x68, 0x00, 0x00, 0x9d, 0xff, - 0x04, 0x1c, 0x28, 0x1c, 0xfa, 0xf7, 0xd9, 0xfe, - 0x21, 0x1c, 0xfa, 0xf7, 0xfc, 0xfd, 0x20, 0x1c, - 0xb0, 0xbd, 0xf3, 0xb5, 0x44, 0x48, 0x0c, 0x1c, - 0x00, 0x78, 0x81, 0xb0, 0x01, 0x28, 0x72, 0xd1, - 0xfa, 0xf7, 0x82, 0xf8, 0x41, 0x4d, 0xe8, 0x6a, - 0x41, 0x49, 0x08, 0x60, 0xe8, 0x6b, 0x48, 0x60, - 0x40, 0x48, 0xfa, 0xf7, 0xa6, 0xf9, 0xe8, 0x6a, - 0x00, 0x28, 0x3c, 0x00, 0x4c, 0x68, 0x00, 0x00, - 0xfc, 0xda, 0x22, 0x1c, 0x0f, 0x20, 0x01, 0x99, - 0x0a, 0xf0, 0xa4, 0xf8, 0x38, 0x4d, 0x02, 0x27, - 0x2f, 0x63, 0x38, 0x4a, 0x64, 0x26, 0x00, 0x20, - 0xaa, 0x21, 0x08, 0x32, 0x13, 0x18, 0x01, 0x30, - 0x00, 0x04, 0x00, 0x0c, 0x64, 0x28, 0x19, 0x74, - 0xf8, 0xd3, 0x16, 0x81, 0x00, 0x20, 0x50, 0x60, - 0x10, 0x1c, 0x10, 0x30, 0x10, 0x60, 0x00, 0x25, - 0x17, 0x1c, 0xd2, 0x60, 0x3c, 0x00, 0x88, 0x68, - 0x00, 0x00, 0x08, 0xe0, 0x28, 0x1c, 0xf9, 0xf7, - 0xa2, 0xff, 0x41, 0x31, 0x78, 0x19, 0x01, 0x35, - 0x2d, 0x04, 0x2d, 0x0c, 0x01, 0x74, 0xb5, 0x42, - 0xf4, 0xd3, 0x26, 0x4d, 0x6f, 0x63, 0x01, 0x20, - 0x28, 0x63, 0x24, 0x4d, 0xe8, 0x6a, 0x00, 0x28, - 0xfb, 0xda, 0x0b, 0x22, 0x3b, 0x1c, 0x24, 0x4e, - 0x03, 0xe0, 0x01, 0x32, 0x64, 0x2a, 0x00, 0xd1, - 0x00, 0x22, 0x10, 0x1c, 0x0c, 0x21, 0x3c, 0x00, - 0xc4, 0x68, 0x00, 0x00, 0x01, 0x39, 0x75, 0x5c, - 0x1f, 0x18, 0x3f, 0x7c, 0xbd, 0x42, 0xf3, 0xd1, - 0x01, 0x38, 0x00, 0xd5, 0x63, 0x20, 0x00, 0x29, - 0xf4, 0xd1, 0x18, 0x4e, 0x50, 0x1c, 0xf1, 0x6b, - 0x1a, 0x4a, 0x10, 0x1c, 0x01, 0x38, 0xfd, 0xd1, - 0xf0, 0x6b, 0x88, 0x42, 0x01, 0xd0, 0x01, 0x1c, - 0xf7, 0xe7, 0x02, 0x27, 0x37, 0x63, 0x16, 0x4d, - 0x90, 0x21, 0x28, 0x1c, 0xf9, 0xf7, 0xce, 0xfd, - 0x3c, 0x00, 0x00, 0x69, 0x00, 0x00, 0x28, 0x1c, - 0x28, 0x30, 0x28, 0x60, 0x28, 0x1c, 0x10, 0x30, - 0x2f, 0x81, 0xe8, 0x60, 0x28, 0x1c, 0x20, 0x30, - 0x28, 0x61, 0x04, 0x21, 0x00, 0xe0, 0x0c, 0xe0, - 0x29, 0x83, 0xe8, 0x61, 0xed, 0x62, 0x75, 0x63, - 0x01, 0x20, 0x30, 0x63, 0x22, 0x1c, 0x89, 0x20, - 0x01, 0x99, 0x0a, 0xf0, 0x38, 0xf8, 0x00, 0x20, - 0x28, 0x63, 0xfe, 0xbd, 0x00, 0x00, 0x08, 0x57, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x69, 0x00, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x10, 0x8e, 0x01, 0x00, - 0x74, 0xff, 0x01, 0x00, 0x09, 0x57, 0x01, 0x00, - 0x20, 0x4e, 0x00, 0x00, 0xe4, 0xfe, 0x01, 0x00, - 0x80, 0xb5, 0x13, 0x28, 0x1e, 0xd0, 0xf0, 0x28, - 0x16, 0xd1, 0x09, 0xf0, 0xb5, 0xf9, 0x00, 0x28, - 0x13, 0xd1, 0x0d, 0xf0, 0xbf, 0xfa, 0x11, 0xf0, - 0x0d, 0xfc, 0x00, 0x22, 0x04, 0x21, 0xc4, 0x20, - 0x0c, 0xf0, 0x1c, 0xff, 0x3c, 0x00, 0x78, 0x69, - 0x00, 0x00, 0x09, 0x48, 0x00, 0x21, 0x00, 0x78, - 0x05, 0xf0, 0x3f, 0xfd, 0x05, 0xf0, 0x93, 0xf8, - 0x07, 0x49, 0x01, 0x20, 0x08, 0x60, 0x80, 0xbd, - 0x01, 0x1c, 0x01, 0x20, 0xfa, 0xf7, 0x87, 0xfc, - 0x80, 0xbd, 0x00, 0xf0, 0x32, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x6a, 0x57, 0x01, 0x00, 0x3c, 0xd9, - 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0xf0, 0xff, 0xf9, - 0x0b, 0x49, 0x02, 0x24, 0x48, 0x60, 0x3c, 0x00, - 0xb4, 0x69, 0x00, 0x00, 0x0a, 0x48, 0x04, 0x61, - 0x01, 0x20, 0x77, 0x21, 0x09, 0x03, 0x08, 0x61, - 0x08, 0x4d, 0x68, 0x68, 0x80, 0x07, 0x02, 0xd4, - 0x68, 0x68, 0x20, 0x43, 0x68, 0x60, 0x09, 0xf0, - 0xc7, 0xf9, 0x68, 0x68, 0xa0, 0x43, 0x68, 0x60, - 0x00, 0x20, 0xb0, 0xbd, 0xe0, 0x60, 0x01, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x00, 0x01, 0x07, 0x00, - 0x80, 0xb5, 0x01, 0x23, 0x03, 0x22, 0x00, 0x21, - 0x3c, 0x00, 0xf0, 0x69, 0x00, 0x00, 0x02, 0x20, - 0x3c, 0xf0, 0xf1, 0xfa, 0x00, 0x28, 0x01, 0xd0, - 0xfa, 0xf7, 0x81, 0xfc, 0x80, 0xbd, 0x1c, 0xb5, - 0xfc, 0xf7, 0xf5, 0xfa, 0xfa, 0xf7, 0x19, 0xfe, - 0x01, 0xf0, 0x03, 0xf9, 0x00, 0x24, 0x21, 0x1c, - 0x68, 0x46, 0x01, 0xf0, 0xe2, 0xfb, 0x00, 0xab, - 0x18, 0x78, 0x01, 0x28, 0x03, 0xd0, 0x02, 0x28, - 0x01, 0xd0, 0x03, 0x28, 0x01, 0xd1, 0x0c, 0xf0, - 0xb2, 0xfc, 0x3c, 0x00, 0x2c, 0x6a, 0x00, 0x00, - 0x01, 0x34, 0x24, 0x06, 0x24, 0x16, 0x06, 0x2c, - 0xec, 0xdb, 0xfa, 0xf7, 0x09, 0xf9, 0xfa, 0xf7, - 0xe7, 0xfc, 0xfa, 0xf7, 0x33, 0xfa, 0xfa, 0xf7, - 0x6d, 0xfa, 0xfb, 0xf7, 0xdf, 0xff, 0x05, 0xf0, - 0x4d, 0xfb, 0x06, 0xf0, 0x81, 0xfc, 0x0b, 0xf0, - 0x7d, 0xf9, 0x07, 0xf0, 0x29, 0xfc, 0x11, 0x48, - 0x10, 0x21, 0x01, 0x60, 0x09, 0x01, 0x01, 0x60, - 0xc9, 0x02, 0x01, 0x60, 0x3c, 0x00, 0x68, 0x6a, - 0x00, 0x00, 0x89, 0x00, 0x01, 0x60, 0x20, 0x21, - 0x01, 0x60, 0x04, 0x21, 0x01, 0x60, 0x08, 0x21, - 0x01, 0x60, 0x40, 0x21, 0x01, 0x60, 0x80, 0x21, - 0x01, 0x60, 0x89, 0x00, 0x01, 0x60, 0x49, 0x00, - 0x01, 0x60, 0x49, 0x00, 0x01, 0x60, 0x49, 0x00, - 0x01, 0x60, 0xc9, 0x03, 0x01, 0x60, 0x89, 0x0b, - 0x01, 0x60, 0xf9, 0xf7, 0x41, 0xff, 0x1c, 0xbd, - 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00, - 0xa4, 0x6a, 0x00, 0x00, 0x80, 0xb5, 0x3b, 0xf0, - 0x4f, 0xf8, 0x3b, 0xf0, 0x7d, 0xf9, 0xfa, 0xf7, - 0x4b, 0xf9, 0x80, 0xbd, 0xf8, 0xb5, 0x00, 0x25, - 0x00, 0x24, 0x00, 0x22, 0x00, 0x28, 0x71, 0xd0, - 0x43, 0x4f, 0xb9, 0x68, 0x0b, 0x1a, 0xbb, 0x60, - 0xf8, 0x68, 0x39, 0x1c, 0x01, 0x30, 0xf8, 0x60, - 0x89, 0x6a, 0x00, 0x2b, 0x1e, 0xdc, 0x02, 0x24, - 0x00, 0x29, 0x06, 0xda, 0xfb, 0x69, 0x98, 0x42, - 0x3c, 0x00, 0xe0, 0x6a, 0x00, 0x00, 0x06, 0xdd, - 0x3b, 0x69, 0x98, 0x42, 0x09, 0xdd, 0x07, 0xe0, - 0xbb, 0x69, 0x98, 0x42, 0x01, 0xdc, 0x01, 0x24, - 0x03, 0xe0, 0x7b, 0x69, 0x98, 0x42, 0x00, 0xdd, - 0x03, 0x24, 0x78, 0x6a, 0x00, 0x28, 0x08, 0xd0, - 0x00, 0x20, 0x78, 0x62, 0x03, 0x2c, 0x01, 0xd1, - 0x02, 0x24, 0x02, 0xe0, 0x02, 0x2c, 0x00, 0xd1, - 0x01, 0x24, 0x2e, 0x48, 0x01, 0x2c, 0x00, 0x79, - 0x18, 0xd1, 0x3c, 0x00, 0x1c, 0x6b, 0x00, 0x00, - 0xbb, 0x78, 0x99, 0x42, 0x15, 0xda, 0x3b, 0x78, - 0x7b, 0x70, 0x39, 0x70, 0x01, 0x31, 0xb9, 0x62, - 0x01, 0xd5, 0x01, 0x31, 0xb9, 0x62, 0xb9, 0x6a, - 0x01, 0x25, 0x99, 0x42, 0x03, 0xd1, 0x04, 0x28, - 0x04, 0xd2, 0x01, 0x30, 0x00, 0xe0, 0x00, 0x20, - 0x38, 0x71, 0x01, 0x22, 0x00, 0x29, 0x33, 0xda, - 0x27, 0xe0, 0x03, 0x2c, 0x35, 0xd1, 0x00, 0x26, - 0x00, 0x28, 0x07, 0xd0, 0x3c, 0x00, 0x58, 0x6b, - 0x00, 0x00, 0x1e, 0x49, 0x81, 0x40, 0x38, 0x6a, - 0x08, 0x18, 0x0c, 0xf0, 0x5c, 0xf8, 0x00, 0x28, - 0x2c, 0xd0, 0x1b, 0x48, 0x00, 0x78, 0x40, 0x07, - 0x05, 0xd5, 0xf8, 0x68, 0x39, 0x69, 0x88, 0x42, - 0x01, 0xdb, 0x03, 0x23, 0xfe, 0x56, 0xb8, 0x6a, - 0xb0, 0x42, 0x12, 0xdd, 0x01, 0x21, 0x79, 0x62, - 0x39, 0x78, 0x01, 0x25, 0x79, 0x70, 0x38, 0x70, - 0x01, 0x38, 0xb8, 0x62, 0x88, 0x42, 0x3c, 0x00, - 0x94, 0x6b, 0x00, 0x00, 0x01, 0xd0, 0x00, 0x21, - 0x39, 0x71, 0x00, 0x28, 0x0c, 0xda, 0x07, 0x20, - 0x38, 0x71, 0x00, 0xe0, 0x12, 0xe0, 0x07, 0xe0, - 0x38, 0x79, 0x00, 0x28, 0x09, 0xd0, 0xff, 0x30, - 0x38, 0x71, 0x06, 0xe0, 0x00, 0x2a, 0x02, 0xd0, - 0x0c, 0xf0, 0xf8, 0xf8, 0x38, 0x62, 0x00, 0x2c, - 0x04, 0xd0, 0xfe, 0xf7, 0x97, 0xfd, 0x29, 0x1c, - 0x08, 0xf0, 0xfc, 0xfb, 0xf8, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x6b, 0x00, 0x00, 0xac, 0x7e, - 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x1d, 0x75, - 0x01, 0x00, 0x80, 0xb5, 0x10, 0x68, 0x00, 0x28, - 0x02, 0xd0, 0x00, 0xf0, 0x0a, 0xf8, 0x80, 0xbd, - 0x03, 0x48, 0xc0, 0x69, 0x80, 0x68, 0x08, 0xf0, - 0xb2, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x84, 0x6a, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x68, - 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xfa, 0xf7, - 0x7a, 0xfb, 0x3c, 0x00, 0x0c, 0x6c, 0x00, 0x00, - 0xe0, 0x68, 0xe1, 0x69, 0xc0, 0x68, 0x23, 0x1c, - 0x01, 0x4a, 0xff, 0xf7, 0xd7, 0xfb, 0x10, 0xbd, - 0xdd, 0x6b, 0x00, 0x00, 0xb0, 0xb5, 0x05, 0x1c, - 0x0c, 0x21, 0x00, 0x20, 0xfa, 0xf7, 0xd6, 0xfc, - 0x04, 0x1c, 0x00, 0x68, 0x00, 0x21, 0x41, 0x60, - 0x01, 0x60, 0x29, 0x88, 0x01, 0x81, 0x69, 0x88, - 0x41, 0x81, 0x29, 0x1c, 0xff, 0x31, 0x21, 0x31, - 0x20, 0x1c, 0x03, 0xf0, 0x3c, 0x00, 0x48, 0x6c, - 0x00, 0x00, 0x77, 0xf9, 0x29, 0x1c, 0xff, 0x31, - 0x46, 0x31, 0x20, 0x1c, 0x03, 0xf0, 0x71, 0xf9, - 0x29, 0x1c, 0xff, 0x31, 0x50, 0x31, 0x20, 0x1c, - 0x03, 0xf0, 0x6b, 0xf9, 0x29, 0x1c, 0xff, 0x31, - 0x43, 0x31, 0x20, 0x1c, 0x03, 0xf0, 0x65, 0xf9, - 0x29, 0x1c, 0xff, 0x31, 0x63, 0x31, 0x20, 0x1c, - 0x03, 0xf0, 0x5f, 0xf9, 0x04, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x20, 0x1c, 0x3c, 0x00, - 0x84, 0x6c, 0x00, 0x00, 0xff, 0xf7, 0x8e, 0xfd, - 0x20, 0x1c, 0xb0, 0xbd, 0xe4, 0x62, 0x01, 0x00, - 0xf8, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, 0x04, 0xd1, - 0x05, 0x21, 0x18, 0x20, 0xfa, 0xf7, 0x02, 0xfb, - 0x4d, 0xe0, 0x29, 0x1c, 0x12, 0x31, 0x06, 0x22, - 0x60, 0x1c, 0xf9, 0xf7, 0x25, 0xfc, 0x22, 0x1c, - 0x30, 0x32, 0x00, 0x26, 0x00, 0x21, 0x00, 0x20, - 0x16, 0x70, 0x34, 0x4b, 0x1b, 0x5c, 0x2f, 0x8a, - 0x3c, 0x00, 0xc0, 0x6c, 0x00, 0x00, 0xdf, 0x40, - 0xff, 0x07, 0x07, 0xd5, 0x17, 0x78, 0x01, 0x33, - 0x01, 0x37, 0x17, 0x70, 0x67, 0x18, 0x30, 0x37, - 0x7b, 0x70, 0x01, 0x31, 0x01, 0x30, 0x0e, 0x28, - 0xee, 0xdb, 0xa8, 0x7b, 0x60, 0x72, 0x10, 0x78, - 0x00, 0x28, 0x2b, 0xd0, 0x2a, 0x48, 0x1e, 0x21, - 0x09, 0x5c, 0x27, 0x1c, 0x10, 0x37, 0x21, 0x72, - 0x01, 0x68, 0x61, 0x81, 0xc1, 0x89, 0x21, 0x77, - 0x81, 0x89, 0x3c, 0x00, 0xfc, 0x6c, 0x00, 0x00, - 0x79, 0x73, 0xc1, 0x8a, 0xa1, 0x81, 0x01, 0x8b, - 0xe1, 0x81, 0x42, 0x8a, 0x21, 0x1c, 0x60, 0x31, - 0x4a, 0x80, 0x82, 0x8a, 0x8a, 0x80, 0x1f, 0x49, - 0x2c, 0x31, 0x09, 0x7a, 0x00, 0x29, 0x09, 0xd0, - 0x02, 0x29, 0x0a, 0xd1, 0x01, 0x22, 0x62, 0x62, - 0x62, 0x72, 0x42, 0x8b, 0xa2, 0x81, 0x80, 0x8b, - 0xe0, 0x81, 0x03, 0xe0, 0x01, 0x21, 0x66, 0x62, - 0x00, 0xe0, 0x00, 0x21, 0x3c, 0x00, 0x38, 0x6d, - 0x00, 0x00, 0xe8, 0x7b, 0x08, 0x40, 0x01, 0xd1, - 0x00, 0x20, 0xf8, 0xbd, 0xa8, 0x68, 0x43, 0x1c, - 0x09, 0xd0, 0x22, 0x1c, 0x12, 0x32, 0x00, 0x92, - 0x93, 0x1d, 0x02, 0x32, 0x21, 0x1c, 0x01, 0xf0, - 0x9c, 0xfa, 0xa0, 0x62, 0x00, 0xe0, 0xa6, 0x62, - 0x68, 0x7b, 0x29, 0x1c, 0x1d, 0x31, 0x20, 0x74, - 0x0b, 0x48, 0x20, 0x22, 0x20, 0x62, 0x20, 0x1c, - 0x42, 0x30, 0xbe, 0x73, 0xf9, 0xf7, 0x3c, 0x00, - 0x74, 0x6d, 0x00, 0x00, 0xc1, 0xfb, 0x40, 0x34, - 0x26, 0x70, 0x68, 0x7e, 0x04, 0x49, 0x60, 0x70, - 0x68, 0x68, 0x2c, 0x31, 0x48, 0x60, 0x01, 0x20, - 0xda, 0xe7, 0x00, 0x00, 0x90, 0x58, 0x01, 0x00, - 0xc8, 0x6e, 0x01, 0x00, 0x91, 0x02, 0x01, 0x00, - 0x70, 0xb5, 0x16, 0x1c, 0x0d, 0x1c, 0x04, 0x1c, - 0x00, 0x28, 0x06, 0xd0, 0x0c, 0x20, 0xfa, 0xf7, - 0x47, 0xfd, 0x30, 0xc0, 0x08, 0x38, 0x06, 0x72, - 0x3c, 0x00, 0xb0, 0x6d, 0x00, 0x00, 0x70, 0xbd, - 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x01, 0x1c, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x01, 0xd0, - 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0xfc, 0xf7, - 0xa0, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x0c, 0x79, - 0x01, 0x00, 0x70, 0xb5, 0x0e, 0x1c, 0x04, 0x1c, - 0x00, 0x28, 0x01, 0xd1, 0xfa, 0xf7, 0x8f, 0xfa, - 0x06, 0x4d, 0x28, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0xfa, 0xf7, 0x3c, 0x00, 0xec, 0x6d, 0x00, 0x00, - 0x89, 0xfa, 0x04, 0x48, 0x2e, 0x60, 0xc4, 0x60, - 0x01, 0x21, 0x01, 0x70, 0x70, 0xbd, 0x00, 0x00, - 0xa8, 0x7e, 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, - 0x10, 0xb5, 0x07, 0x4c, 0x20, 0x68, 0x00, 0x28, - 0x01, 0xd1, 0xfa, 0xf7, 0x77, 0xfa, 0x05, 0x48, - 0x00, 0x69, 0x21, 0x68, 0xf9, 0xf7, 0xdf, 0xfa, - 0x00, 0x20, 0x20, 0x60, 0x10, 0xbd, 0x00, 0x00, - 0xa8, 0x7e, 0x01, 0x00, 0x3c, 0x00, 0x28, 0x6e, - 0x00, 0x00, 0x30, 0x00, 0x07, 0x00, 0x01, 0x20, - 0x05, 0x49, 0xc0, 0x06, 0x80, 0xb5, 0x08, 0x60, - 0x00, 0x22, 0x03, 0x21, 0x54, 0x20, 0x0c, 0xf0, - 0xb8, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x04, 0x21, - 0xc4, 0x20, 0x0c, 0xf0, 0xae, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x04, 0x48, 0x80, 0xb5, 0x00, 0x88, - 0x02, 0x49, 0xff, 0xf7, 0xb8, 0xff, 0x3c, 0x00, - 0x64, 0x6e, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0x75, 0x4b, 0x00, 0x00, 0xc8, 0x74, 0x01, 0x00, - 0xf8, 0xb5, 0x06, 0x1c, 0x31, 0x48, 0x00, 0x25, - 0xc0, 0x68, 0x0c, 0x1c, 0x00, 0x28, 0x30, 0xd0, - 0x2e, 0x48, 0x2f, 0x4f, 0x04, 0x30, 0x00, 0x78, - 0x38, 0x76, 0x2c, 0x48, 0x04, 0x30, 0x40, 0x78, - 0x38, 0x81, 0x00, 0x2a, 0x0b, 0xd0, 0xf9, 0xf7, - 0xa5, 0xfa, 0x1f, 0x20, 0xb8, 0x76, 0x20, 0x1c, - 0x3c, 0x00, 0xa0, 0x6e, 0x00, 0x00, 0xf9, 0xf7, - 0xf6, 0xf9, 0x25, 0x48, 0x04, 0x30, 0x80, 0x78, - 0xb8, 0x76, 0x43, 0xe0, 0x25, 0x48, 0x22, 0x49, - 0x84, 0x42, 0x4d, 0x69, 0x02, 0xd2, 0x6c, 0x43, - 0xe4, 0x0b, 0x0f, 0xe0, 0x1f, 0x48, 0x21, 0x1c, - 0x80, 0x6a, 0x00, 0x90, 0xf9, 0xf7, 0x23, 0xfc, - 0x00, 0x99, 0x02, 0x1c, 0x4a, 0x43, 0xa1, 0x1a, - 0x1a, 0x4a, 0x69, 0x43, 0x52, 0x6a, 0xc9, 0x0b, - 0x50, 0x43, 0x3c, 0x00, 0xdc, 0x6e, 0x00, 0x00, - 0x44, 0x18, 0x02, 0x2c, 0x01, 0xd8, 0x00, 0x20, - 0xf8, 0xbd, 0xf9, 0xf7, 0x7d, 0xfa, 0x1f, 0x20, - 0xb8, 0x76, 0x20, 0x1c, 0xf9, 0xf7, 0xae, 0xf9, - 0x04, 0x1c, 0x11, 0x48, 0x04, 0x30, 0x80, 0x78, - 0xb8, 0x76, 0x0f, 0x4f, 0x7d, 0x6a, 0xac, 0x42, - 0x04, 0xd2, 0x20, 0x1c, 0xff, 0xf7, 0x22, 0xfc, - 0x05, 0x1c, 0x12, 0xe0, 0x21, 0x1c, 0x28, 0x1c, - 0xf9, 0xf7, 0xfc, 0xfb, 0x3c, 0x00, 0x18, 0x6f, - 0x00, 0x00, 0x06, 0x1c, 0x68, 0x43, 0x20, 0x1a, - 0xff, 0xf7, 0x17, 0xfc, 0x05, 0x1c, 0x00, 0x24, - 0x04, 0xe0, 0x78, 0x6a, 0xff, 0xf7, 0x11, 0xfc, - 0x45, 0x19, 0x01, 0x34, 0xb4, 0x42, 0xf8, 0xd3, - 0x28, 0x1c, 0xd4, 0xe7, 0x00, 0x00, 0xc8, 0x74, - 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0xc0, 0xc6, - 0x2d, 0x00, 0x01, 0x1c, 0x7d, 0x20, 0x80, 0xb5, - 0xc0, 0x00, 0xf9, 0xf7, 0x72, 0xfb, 0x3c, 0x00, - 0x54, 0x6f, 0x00, 0x00, 0x02, 0x49, 0x88, 0x61, - 0x40, 0x08, 0xc8, 0x61, 0x80, 0xbd, 0x00, 0x00, - 0xc8, 0x74, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, - 0x21, 0x1c, 0x00, 0x20, 0x0b, 0xf0, 0x42, 0xfa, - 0x21, 0x1c, 0x00, 0x20, 0x0b, 0xf0, 0x0a, 0xfa, - 0x00, 0xf0, 0x68, 0xfe, 0x10, 0xbd, 0x00, 0x00, - 0x85, 0x6f, 0x00, 0x00, 0x30, 0xb5, 0x0f, 0x4d, - 0x2a, 0x78, 0x04, 0x2a, 0x19, 0xd8, 0x00, 0x2a, - 0x3c, 0x00, 0x90, 0x6f, 0x00, 0x00, 0x17, 0xd0, - 0x00, 0x21, 0x07, 0xe0, 0x4b, 0x00, 0x5b, 0x18, - 0x5c, 0x19, 0x01, 0x23, 0xe4, 0x56, 0x84, 0x42, - 0x02, 0xda, 0x01, 0x31, 0x8a, 0x42, 0xf5, 0xdc, - 0x8a, 0x42, 0x00, 0xd1, 0x01, 0x39, 0x48, 0x00, - 0x40, 0x18, 0x40, 0x19, 0x81, 0x78, 0x02, 0x4a, - 0x34, 0x3a, 0x11, 0x70, 0xc0, 0x78, 0x50, 0x70, - 0x30, 0xbd, 0x00, 0x75, 0x01, 0x00, 0x30, 0xb5, - 0x11, 0x1c, 0x3c, 0x00, 0xcc, 0x6f, 0x00, 0x00, - 0x38, 0x31, 0x85, 0xb0, 0x91, 0x62, 0x08, 0x21, - 0x11, 0x86, 0x00, 0x23, 0x14, 0x1c, 0x01, 0x1c, - 0x53, 0x63, 0xc0, 0x68, 0x15, 0x4d, 0x0b, 0xe0, - 0x02, 0x68, 0xaa, 0x42, 0x06, 0xd1, 0xc2, 0x68, - 0xca, 0x60, 0xc3, 0x60, 0x03, 0x60, 0xfa, 0xf7, - 0xd1, 0xfa, 0x03, 0xe0, 0x01, 0x1c, 0xc0, 0x68, - 0x00, 0x28, 0xf1, 0xd1, 0x22, 0x1c, 0x40, 0x32, - 0x08, 0x21, 0x20, 0x68, 0x3c, 0x00, 0x08, 0x70, - 0x00, 0x00, 0xfa, 0xf7, 0x64, 0xfb, 0x0b, 0x49, - 0x20, 0x1c, 0x48, 0x30, 0x02, 0x90, 0x04, 0x94, - 0x03, 0x91, 0xe0, 0x69, 0x82, 0x88, 0x01, 0x68, - 0x6e, 0x20, 0x01, 0x92, 0x00, 0x91, 0x22, 0x1c, - 0x56, 0x32, 0x03, 0x5d, 0x21, 0x1c, 0x28, 0x31, - 0x20, 0x68, 0xff, 0xf7, 0x58, 0xfa, 0x05, 0xb0, - 0x30, 0xbd, 0xa0, 0x7e, 0x01, 0x00, 0xd5, 0x70, - 0x00, 0x00, 0x1c, 0xb5, 0x07, 0x49, 0x3c, 0x00, - 0x44, 0x70, 0x00, 0x00, 0x02, 0x1c, 0x01, 0x90, - 0x00, 0x91, 0xc0, 0x69, 0x13, 0x1c, 0x84, 0x88, - 0x01, 0x68, 0x10, 0x68, 0x48, 0x33, 0x22, 0x1c, - 0xff, 0xf7, 0x08, 0xf9, 0x1c, 0xbd, 0x00, 0x00, - 0xc9, 0x6f, 0x00, 0x00, 0x10, 0xb5, 0x14, 0x1c, - 0x18, 0x48, 0x03, 0xf0, 0x89, 0xf8, 0xa0, 0x42, - 0x01, 0xd0, 0xfa, 0xf7, 0x45, 0xf9, 0x04, 0x22, - 0x20, 0x1c, 0x40, 0x30, 0xa1, 0x6a, 0xf9, 0xf7, - 0x3c, 0x00, 0x80, 0x70, 0x00, 0x00, 0xbd, 0xf9, - 0x00, 0x28, 0x02, 0xd1, 0x01, 0x20, 0x20, 0x62, - 0x05, 0xe0, 0x00, 0x20, 0x20, 0x62, 0x84, 0x20, - 0x00, 0x5d, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, - 0x09, 0xf0, 0x23, 0xfb, 0x05, 0xe0, 0x20, 0x68, - 0xfa, 0xf7, 0x79, 0xfa, 0x20, 0x1c, 0xfa, 0xf7, - 0xa4, 0xfb, 0xe0, 0x69, 0x80, 0x79, 0x06, 0x28, - 0x06, 0xd1, 0x20, 0x6a, 0x06, 0x49, 0x00, 0x28, - 0x03, 0xd0, 0x3c, 0x00, 0xbc, 0x70, 0x00, 0x00, - 0x08, 0x69, 0x01, 0x30, 0x08, 0x61, 0x10, 0xbd, - 0x48, 0x69, 0x01, 0x30, 0x48, 0x61, 0x10, 0xbd, - 0xa0, 0x6a, 0x01, 0x00, 0x28, 0x61, 0x01, 0x00, - 0x1c, 0xb5, 0x14, 0x1c, 0x15, 0x48, 0x03, 0xf0, - 0x51, 0xf8, 0xa0, 0x42, 0x01, 0xd0, 0xfa, 0xf7, - 0x0d, 0xf9, 0x20, 0x1c, 0x4f, 0x30, 0x02, 0x79, - 0x41, 0x79, 0x00, 0xab, 0x12, 0x02, 0x11, 0x43, - 0xc2, 0x78, 0x12, 0x04, 0x3c, 0x00, 0xf8, 0x70, - 0x00, 0x00, 0x11, 0x43, 0x82, 0x78, 0x12, 0x06, - 0x11, 0x43, 0x00, 0x91, 0x01, 0x78, 0x40, 0x78, - 0x09, 0x02, 0x08, 0x43, 0x98, 0x80, 0x20, 0x1c, - 0x69, 0x46, 0x06, 0xf0, 0x3c, 0xf9, 0x00, 0x28, - 0x03, 0xd1, 0x20, 0x1c, 0x09, 0xf0, 0xe3, 0xfa, - 0x1c, 0xbd, 0x20, 0x68, 0xfa, 0xf7, 0x39, 0xfa, - 0x20, 0x1c, 0xfa, 0xf7, 0x64, 0xfb, 0xf7, 0xe7, - 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x3c, 0x00, - 0x34, 0x71, 0x00, 0x00, 0xbc, 0xb5, 0x1f, 0x4d, - 0x14, 0x1c, 0x28, 0x1c, 0xdc, 0x30, 0x03, 0xf0, - 0x1f, 0xf8, 0xa0, 0x42, 0x01, 0xd0, 0xfa, 0xf7, - 0xdb, 0xf8, 0xa0, 0x6c, 0x00, 0xab, 0x02, 0x78, - 0x81, 0x78, 0x12, 0x02, 0x11, 0x43, 0x02, 0x79, - 0x12, 0x04, 0x11, 0x43, 0x42, 0x79, 0x12, 0x06, - 0x11, 0x43, 0x00, 0x91, 0x81, 0x79, 0xc0, 0x79, - 0x00, 0x02, 0x08, 0x43, 0x98, 0x80, 0x20, 0x1c, - 0x3c, 0x00, 0x70, 0x71, 0x00, 0x00, 0x69, 0x46, - 0x06, 0xf0, 0x0b, 0xf9, 0x00, 0x28, 0x17, 0xd0, - 0x01, 0x28, 0x0e, 0xd1, 0xed, 0x6c, 0x00, 0x2d, - 0x0b, 0xd0, 0x80, 0x20, 0x02, 0x5d, 0xe0, 0x6c, - 0x01, 0x21, 0x00, 0x28, 0x00, 0xd1, 0x00, 0x21, - 0x60, 0x68, 0x6b, 0x46, 0x0a, 0x30, 0xf9, 0xf7, - 0x23, 0xf9, 0x20, 0x68, 0xfa, 0xf7, 0xfb, 0xf9, - 0x20, 0x1c, 0xfa, 0xf7, 0x26, 0xfb, 0xbc, 0xbd, - 0x20, 0x1c, 0x3c, 0x00, 0xac, 0x71, 0x00, 0x00, - 0x00, 0xf0, 0x8e, 0xfe, 0xfa, 0xe7, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0xbc, 0xb5, 0x04, 0x1c, - 0x40, 0x6a, 0x00, 0x25, 0x00, 0x28, 0x03, 0xd0, - 0x60, 0x68, 0x00, 0x8b, 0x05, 0x07, 0x2d, 0x0f, - 0x22, 0x1c, 0x40, 0x32, 0x08, 0x21, 0x20, 0x68, - 0xfa, 0xf7, 0x7e, 0xfa, 0xa1, 0x68, 0x01, 0x95, - 0x00, 0x91, 0x21, 0x1c, 0x22, 0x1c, 0x60, 0x32, - 0x20, 0x68, 0x50, 0x31, 0x3c, 0x00, 0xe8, 0x71, - 0x00, 0x00, 0x0d, 0x1c, 0xe3, 0x68, 0x09, 0xf0, - 0xe2, 0xff, 0xe0, 0x69, 0x80, 0x6b, 0x00, 0x28, - 0x03, 0xd1, 0xfe, 0xf7, 0xe8, 0xfa, 0x00, 0x28, - 0x01, 0xd0, 0x18, 0x20, 0x00, 0xe0, 0x10, 0x20, - 0x06, 0x49, 0x01, 0x94, 0x00, 0x91, 0xe1, 0x69, - 0x08, 0x23, 0x09, 0x68, 0x0a, 0x18, 0x21, 0x1c, - 0x28, 0x31, 0x28, 0x1c, 0xff, 0xf7, 0x87, 0xf9, - 0xbc, 0xbd, 0x35, 0x71, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x72, 0x00, 0x00, 0x10, 0xb5, 0x10, 0x1c, - 0x38, 0x30, 0x90, 0x62, 0x04, 0x20, 0x10, 0x86, - 0x00, 0x20, 0x50, 0x63, 0x10, 0x68, 0x14, 0x1c, - 0x40, 0x32, 0x04, 0x21, 0xfa, 0xf7, 0x4a, 0xfa, - 0x23, 0x1c, 0x21, 0x1c, 0x28, 0x31, 0x02, 0x4a, - 0x20, 0x68, 0xff, 0xf7, 0xbd, 0xf8, 0x10, 0xbd, - 0x65, 0x70, 0x00, 0x00, 0x0e, 0xb5, 0xc3, 0x69, - 0x02, 0x1c, 0x98, 0x88, 0x05, 0x49, 0x02, 0x92, - 0x3c, 0x00, 0x60, 0x72, 0x00, 0x00, 0x01, 0x91, - 0x00, 0x90, 0x1b, 0x68, 0x10, 0x68, 0x91, 0x69, - 0x03, 0x22, 0xff, 0xf7, 0xae, 0xf9, 0x0e, 0xbd, - 0x00, 0x00, 0x25, 0x72, 0x00, 0x00, 0x0e, 0xb5, - 0x02, 0x1c, 0x06, 0x49, 0x10, 0x20, 0x00, 0x90, - 0x02, 0x92, 0x13, 0x1c, 0x01, 0x91, 0x10, 0x68, - 0x00, 0x22, 0x70, 0x33, 0x00, 0x21, 0xff, 0xf7, - 0x9c, 0xf9, 0x0e, 0xbd, 0x00, 0x00, 0x25, 0x72, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x72, 0x00, 0x00, - 0x10, 0xb5, 0x03, 0x1c, 0x00, 0x21, 0x00, 0x20, - 0x08, 0x4c, 0x00, 0xe0, 0x01, 0x31, 0xca, 0x00, - 0xa2, 0x58, 0x9a, 0x42, 0x02, 0xd0, 0x0b, 0x29, - 0xf8, 0xd3, 0x10, 0xbd, 0x0b, 0x29, 0xfc, 0xd2, - 0xc9, 0x00, 0x09, 0x19, 0x00, 0x20, 0x08, 0x71, - 0x01, 0x20, 0x10, 0xbd, 0x38, 0x58, 0x01, 0x00, - 0x8c, 0xb5, 0x00, 0xab, 0x86, 0x21, 0x19, 0x80, - 0x01, 0x1c, 0x04, 0x48, 0x3c, 0x00, 0xd8, 0x72, - 0x00, 0x00, 0x06, 0xf0, 0xee, 0xfe, 0x01, 0x90, - 0x68, 0x46, 0x06, 0xf0, 0xfa, 0xf8, 0x8c, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x0d, 0x48, 0x0d, 0x49, 0x94, 0xb0, - 0x04, 0x80, 0x06, 0x22, 0x18, 0x31, 0x0c, 0x30, - 0xf9, 0xf7, 0xfb, 0xf8, 0x01, 0xa8, 0x07, 0xf0, - 0xa2, 0xf8, 0x0c, 0x20, 0x09, 0xa9, 0x48, 0x72, - 0x00, 0xab, 0x1c, 0x80, 0x02, 0x21, 0x3c, 0x00, - 0x14, 0x73, 0x00, 0x00, 0x68, 0x46, 0x03, 0xf0, - 0xdb, 0xff, 0x04, 0x90, 0x01, 0xa8, 0x06, 0xf0, - 0xd1, 0xf8, 0x14, 0xb0, 0x10, 0xbd, 0x00, 0x00, - 0x58, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x04, 0xf0, - 0x45, 0xfe, 0x05, 0xf0, 0x53, 0xfa, 0x80, 0xbd, - 0x10, 0xb5, 0x19, 0x4c, 0xe0, 0x68, 0x00, 0x28, - 0x06, 0xd0, 0x61, 0x1c, 0x08, 0x78, 0x00, 0x28, - 0x03, 0xd1, 0x48, 0x78, 0xff, 0x30, 0x08, 0x70, - 0x3c, 0x00, 0x50, 0x73, 0x00, 0x00, 0x10, 0xbd, - 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x08, 0x70, - 0xa1, 0x68, 0x00, 0x29, 0xf7, 0xd0, 0x00, 0x28, - 0xf5, 0xd1, 0x0e, 0x48, 0x54, 0x30, 0x81, 0x78, - 0x00, 0x29, 0x03, 0xd1, 0xc1, 0x78, 0xff, 0x31, - 0x81, 0x70, 0x10, 0xbd, 0xff, 0x31, 0x09, 0x06, - 0x09, 0x0e, 0x81, 0x70, 0xf9, 0xd1, 0xa1, 0x69, - 0x00, 0x29, 0xf6, 0xd0, 0x80, 0x88, 0x03, 0xf0, - 0xd0, 0xfb, 0x3c, 0x00, 0x8c, 0x73, 0x00, 0x00, - 0x04, 0x4a, 0x01, 0x1c, 0x5c, 0x32, 0x0c, 0x32, - 0x05, 0xca, 0x80, 0x1a, 0xa2, 0x69, 0xf9, 0xf7, - 0x1f, 0xf8, 0x10, 0xbd, 0x44, 0x7d, 0x01, 0x00, - 0xf0, 0xb5, 0x04, 0x1c, 0x40, 0x68, 0x00, 0x25, - 0x01, 0x79, 0x00, 0x22, 0x85, 0xb0, 0xc9, 0x07, - 0xcb, 0x17, 0x69, 0x49, 0x01, 0x33, 0x89, 0x6a, - 0x10, 0x29, 0x05, 0xd3, 0x66, 0x49, 0xc0, 0x39, - 0x08, 0x6b, 0x01, 0x30, 0x3c, 0x00, 0xc8, 0x73, - 0x00, 0x00, 0x08, 0x63, 0x8e, 0xe0, 0x21, 0x68, - 0x0e, 0x68, 0xf6, 0x78, 0xb7, 0x06, 0xff, 0x0f, - 0xb6, 0x09, 0x00, 0x2b, 0x04, 0x97, 0x06, 0xd0, - 0x63, 0x69, 0x1f, 0x1c, 0x1b, 0x6a, 0x50, 0x37, - 0x9f, 0x42, 0x00, 0xd1, 0x01, 0x25, 0x00, 0x2d, - 0x02, 0xd0, 0x63, 0x69, 0x1b, 0x6a, 0x04, 0xe0, - 0x3c, 0x23, 0x59, 0x4f, 0x73, 0x43, 0xdb, 0x19, - 0x04, 0x33, 0xe3, 0x61, 0x9f, 0x88, 0x3c, 0x00, - 0x04, 0x74, 0x00, 0x00, 0x00, 0x2f, 0x70, 0xd0, - 0x9b, 0x79, 0x02, 0x2b, 0x6e, 0xd0, 0x04, 0x2b, - 0x17, 0xd0, 0x06, 0x2b, 0x69, 0xd1, 0x08, 0x68, - 0xa0, 0x61, 0x08, 0x89, 0x04, 0x38, 0x08, 0x81, - 0x20, 0x68, 0x01, 0x68, 0x04, 0x31, 0x01, 0x60, - 0x4e, 0x49, 0x00, 0x29, 0x5d, 0xd0, 0x04, 0x9f, - 0xba, 0x42, 0x5a, 0xd1, 0x49, 0x48, 0x22, 0x1c, - 0x1c, 0x30, 0x02, 0xf0, 0x65, 0xfe, 0x05, 0xb0, - 0x3c, 0x00, 0x40, 0x74, 0x00, 0x00, 0xf0, 0xbd, - 0x09, 0x68, 0x25, 0x1c, 0xca, 0x79, 0x40, 0x35, - 0x26, 0x1c, 0xea, 0x73, 0x8b, 0x79, 0x22, 0x1c, - 0x50, 0x32, 0x13, 0x70, 0x4b, 0x79, 0x60, 0x36, - 0x53, 0x70, 0x0b, 0x79, 0x93, 0x70, 0x4b, 0x78, - 0xd3, 0x70, 0x09, 0x78, 0x11, 0x71, 0x00, 0x21, - 0x29, 0x72, 0x16, 0x21, 0xb1, 0x73, 0x61, 0x6a, - 0x00, 0x29, 0x06, 0xd0, 0x01, 0x8b, 0x09, 0x07, - 0x09, 0x0f, 0x3c, 0x00, 0x7c, 0x74, 0x00, 0x00, - 0x29, 0x72, 0xb1, 0x81, 0x18, 0x21, 0xb1, 0x73, - 0x01, 0x1c, 0x0a, 0x31, 0x20, 0x1c, 0x06, 0x22, - 0x49, 0x30, 0xf9, 0xf7, 0x33, 0xf8, 0x60, 0x68, - 0x14, 0x22, 0x01, 0x88, 0xe9, 0x82, 0x01, 0x1d, - 0x20, 0x1c, 0x58, 0x30, 0xf9, 0xf7, 0x2a, 0xf8, - 0xe8, 0x8a, 0x30, 0x49, 0x08, 0x40, 0x01, 0x21, - 0x89, 0x03, 0x08, 0x43, 0xe8, 0x82, 0x70, 0x89, - 0x0f, 0x21, 0x08, 0x40, 0x3c, 0x00, 0xb8, 0x74, - 0x00, 0x00, 0x70, 0x81, 0x20, 0x68, 0x01, 0x89, - 0x08, 0x39, 0x01, 0x81, 0x20, 0x68, 0x01, 0x68, - 0x08, 0x31, 0x01, 0x60, 0x08, 0x21, 0x00, 0x20, - 0xfa, 0xf7, 0x83, 0xf8, 0x05, 0x1c, 0x02, 0x68, - 0x20, 0x68, 0x08, 0x21, 0xfa, 0xf7, 0xfb, 0xf8, - 0x20, 0x68, 0xfa, 0xf7, 0x74, 0xf8, 0x21, 0x49, - 0xc5, 0x60, 0x2f, 0xe0, 0x30, 0xe0, 0xff, 0xe7, - 0x21, 0x68, 0x60, 0x68, 0x0a, 0x68, 0x3c, 0x00, - 0xf4, 0x74, 0x00, 0x00, 0x80, 0x23, 0xa2, 0x64, - 0x1e, 0x55, 0xe5, 0x64, 0x55, 0x79, 0x13, 0x79, - 0x2d, 0x02, 0x5b, 0x19, 0x95, 0x79, 0x2d, 0x04, - 0x5b, 0x19, 0xd5, 0x79, 0x2d, 0x06, 0x5b, 0x19, - 0x95, 0x78, 0x12, 0x78, 0x12, 0x02, 0xaa, 0x18, - 0x15, 0x04, 0x0a, 0x89, 0x2d, 0x0c, 0x08, 0x3a, - 0x0a, 0x81, 0x21, 0x68, 0x0a, 0x68, 0x08, 0x32, - 0x0a, 0x60, 0xe1, 0x69, 0x02, 0x1c, 0x0a, 0x32, - 0x3c, 0x00, 0x30, 0x75, 0x00, 0x00, 0x01, 0xa8, - 0x09, 0x68, 0x0b, 0xf0, 0x3e, 0xf9, 0xe0, 0x69, - 0x2b, 0x1c, 0x01, 0x68, 0x20, 0x1c, 0x70, 0x30, - 0x01, 0xaa, 0x0b, 0xf0, 0x86, 0xf9, 0x09, 0x49, - 0x01, 0x22, 0x6d, 0xe7, 0x20, 0x68, 0xfa, 0xf7, - 0x22, 0xf8, 0x20, 0x1c, 0xfa, 0xf7, 0x4d, 0xf9, - 0x70, 0xe7, 0x84, 0x6a, 0x01, 0x00, 0x68, 0x61, - 0x01, 0x00, 0x55, 0x72, 0x00, 0x00, 0x8f, 0xc7, - 0xff, 0xff, 0x3c, 0x00, 0x6c, 0x75, 0x00, 0x00, - 0x41, 0x70, 0x00, 0x00, 0x79, 0x72, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x82, 0x20, 0xf9, 0xf7, - 0x93, 0xfe, 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0xc0, 0x68, 0xf9, 0xf7, 0xfa, 0xff, - 0x01, 0x20, 0x80, 0xbd, 0x3c, 0x00, 0xa8, 0x75, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, 0xff, 0x20, - 0xf9, 0xf7, 0x79, 0xfe, 0x80, 0xbd, 0x70, 0x47, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x01, 0x20, - 0x70, 0x47, 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x06, 0x21, 0x99, 0x20, - 0xf9, 0xf7, 0x65, 0xfe, 0x80, 0xbd, 0xb0, 0xb5, - 0x00, 0x25, 0x01, 0x29, 0x12, 0x4c, 0x3c, 0x00, - 0xe4, 0x75, 0x00, 0x00, 0x0f, 0xd1, 0x0a, 0xf0, - 0x0f, 0xfc, 0x00, 0x28, 0x1d, 0xd0, 0x61, 0x78, - 0x3c, 0x23, 0x59, 0x43, 0x09, 0x19, 0x04, 0x31, - 0x01, 0x62, 0x61, 0x1c, 0x41, 0x62, 0x84, 0x62, - 0x04, 0x1c, 0x50, 0x34, 0x06, 0xe0, 0x00, 0x29, - 0x0f, 0xd1, 0x3c, 0x20, 0x50, 0x43, 0x25, 0x70, - 0x04, 0x19, 0x04, 0x34, 0x00, 0x2c, 0x08, 0xd0, - 0x20, 0x68, 0x00, 0x28, 0x02, 0xd0, 0x20, 0x21, - 0x3c, 0x00, 0x20, 0x76, 0x00, 0x00, 0xf8, 0xf7, - 0x18, 0xff, 0xa5, 0x80, 0x07, 0x20, 0xa0, 0x71, - 0xb0, 0xbd, 0x68, 0x61, 0x01, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x00, 0x21, 0x01, 0xf0, 0x41, 0xfc, - 0x60, 0x68, 0x00, 0x28, 0x01, 0xd0, 0x21, 0x68, - 0x01, 0x60, 0x20, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0x61, 0x68, 0x41, 0x60, 0x12, 0x4e, 0x70, 0x68, - 0xa0, 0x42, 0x01, 0xd1, 0x60, 0x68, 0x70, 0x60, - 0xe0, 0x68, 0x3c, 0x00, 0x5c, 0x76, 0x00, 0x00, - 0x00, 0x28, 0x0b, 0xd0, 0x00, 0x25, 0x06, 0xe0, - 0xe0, 0x68, 0xe9, 0x00, 0x41, 0x18, 0x14, 0x20, - 0x0b, 0xf0, 0xe2, 0xff, 0x01, 0x35, 0x30, 0x88, - 0x85, 0x42, 0xf5, 0xdb, 0x06, 0x21, 0x20, 0x1c, - 0x44, 0x30, 0xf8, 0xf7, 0xe9, 0xfe, 0x20, 0x6b, - 0x00, 0x28, 0x01, 0xd0, 0xf9, 0xf7, 0x86, 0xff, - 0xe0, 0x69, 0x00, 0x28, 0x01, 0xd0, 0xfa, 0xf7, - 0xaf, 0xf8, 0x70, 0xbd, 0x3c, 0x00, 0x98, 0x76, - 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0xf0, 0xb5, - 0x1d, 0x4f, 0x05, 0x9d, 0x3f, 0x68, 0x01, 0x26, - 0x1c, 0x1c, 0x33, 0x1c, 0x00, 0x2f, 0x00, 0xd0, - 0x2b, 0x1c, 0x1d, 0x06, 0x2d, 0x0e, 0x00, 0x29, - 0x06, 0xd0, 0x11, 0x78, 0x0e, 0x23, 0x16, 0x4f, - 0x09, 0x18, 0x09, 0x7a, 0x6b, 0x43, 0x10, 0xe0, - 0x21, 0x78, 0x00, 0x29, 0x13, 0xd0, 0xff, 0x31, - 0x0d, 0xe0, 0x01, 0x29, 0x01, 0xd9, 0x3c, 0x00, - 0xd4, 0x76, 0x00, 0x00, 0x01, 0x31, 0x11, 0x70, - 0x11, 0x78, 0x0e, 0x23, 0x0f, 0x4f, 0x49, 0x08, - 0x11, 0x70, 0x09, 0x18, 0x09, 0x7a, 0x6b, 0x43, - 0xdb, 0x19, 0x59, 0x5c, 0x21, 0x70, 0x21, 0x78, - 0x00, 0x29, 0x02, 0xd1, 0x11, 0x78, 0x00, 0x29, - 0xea, 0xd1, 0x09, 0x48, 0xc0, 0x68, 0x00, 0x28, - 0x05, 0xd0, 0x21, 0x78, 0x30, 0x1c, 0x00, 0x29, - 0x00, 0xd1, 0x00, 0x20, 0xf0, 0xbd, 0x01, 0x20, - 0x3c, 0x00, 0x10, 0x77, 0x00, 0x00, 0xf0, 0xbd, - 0x00, 0x00, 0x18, 0x67, 0x01, 0x00, 0x24, 0x67, - 0x01, 0x00, 0x5c, 0x67, 0x01, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x84, 0x46, 0x00, 0x20, 0xf0, 0xb5, - 0x00, 0x29, 0x09, 0xd0, 0x11, 0x78, 0x1a, 0x4e, - 0xb1, 0x70, 0x19, 0x4e, 0xb1, 0x78, 0x71, 0x70, - 0x31, 0x70, 0x01, 0x21, 0x31, 0x61, 0x27, 0xe0, - 0x16, 0x4e, 0x01, 0x23, 0xf1, 0x56, 0x63, 0x46, - 0x5f, 0x68, 0x3c, 0x00, 0x4c, 0x77, 0x00, 0x00, - 0x00, 0x23, 0xf6, 0x56, 0x01, 0x25, 0xcc, 0x0f, - 0xb7, 0x42, 0x00, 0xd9, 0x00, 0x25, 0x00, 0x2c, - 0x01, 0xd0, 0x00, 0x2d, 0xe8, 0xd1, 0x0e, 0x4f, - 0x3b, 0x69, 0x00, 0x2b, 0x03, 0xd0, 0x00, 0x2d, - 0x01, 0xd1, 0x16, 0x70, 0x02, 0xe0, 0x1c, 0x43, - 0x01, 0xd1, 0x11, 0x70, 0x01, 0x20, 0x01, 0x24, - 0x00, 0x2b, 0x00, 0xd0, 0x00, 0x24, 0x3c, 0x61, - 0x00, 0x2c, 0x02, 0xd0, 0x3c, 0x00, 0x88, 0x77, - 0x00, 0x00, 0x71, 0x1c, 0x39, 0x70, 0x01, 0xe0, - 0xff, 0x31, 0x79, 0x70, 0x00, 0x28, 0xd5, 0xd0, - 0x01, 0x20, 0xf0, 0xbd, 0x00, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x90, 0xb5, 0x0a, 0x4c, 0x00, 0x20, - 0x93, 0xb0, 0x20, 0x61, 0x03, 0x90, 0x68, 0x46, - 0x00, 0x21, 0x08, 0xf0, 0x84, 0xfd, 0x20, 0x7a, - 0x02, 0x28, 0x01, 0xd1, 0xe0, 0x6b, 0x00, 0xe0, - 0x20, 0x6c, 0xe0, 0x61, 0x01, 0x20, 0x3c, 0x00, - 0xc4, 0x77, 0x00, 0x00, 0x08, 0xf0, 0x8a, 0xfd, - 0x13, 0xb0, 0x90, 0xbd, 0xf4, 0x6e, 0x01, 0x00, - 0xf7, 0xb5, 0x05, 0x1c, 0x88, 0x88, 0x0c, 0x1c, - 0x82, 0xb0, 0x1f, 0x4f, 0x00, 0x28, 0x00, 0xd1, - 0x00, 0x27, 0x04, 0x98, 0x00, 0x28, 0x01, 0xd1, - 0xf9, 0xf7, 0x8a, 0xfd, 0x1b, 0x48, 0x3b, 0x1c, - 0x00, 0x68, 0x21, 0x1c, 0x02, 0x68, 0x28, 0x1c, - 0x00, 0x92, 0x04, 0x9a, 0xfe, 0xf7, 0x3c, 0xf8, - 0x3c, 0x00, 0x00, 0x78, 0x00, 0x00, 0x06, 0x1c, - 0x22, 0xd0, 0x03, 0x21, 0x04, 0x98, 0x02, 0xf0, - 0xb8, 0xff, 0x00, 0x28, 0x1b, 0xd0, 0x80, 0x78, - 0x01, 0x21, 0x03, 0xf0, 0xe4, 0xff, 0xa0, 0x88, - 0xa1, 0x8e, 0x48, 0x43, 0x00, 0x04, 0x0f, 0x49, - 0x00, 0x0c, 0x08, 0x80, 0x03, 0xf0, 0x81, 0xf9, - 0x01, 0x22, 0x00, 0x2d, 0x00, 0xd1, 0x00, 0x22, - 0x01, 0x1c, 0x0e, 0x20, 0x0b, 0xf0, 0xc9, 0xfe, - 0x00, 0x2f, 0x3c, 0x00, 0x3c, 0x78, 0x00, 0x00, - 0x08, 0xd1, 0x00, 0x21, 0x28, 0x1c, 0x02, 0xf0, - 0xbd, 0xfc, 0x03, 0xe0, 0x00, 0x26, 0x28, 0x1c, - 0x00, 0xf0, 0x0a, 0xf8, 0x30, 0x1c, 0x05, 0xb0, - 0xf0, 0xbd, 0x00, 0x00, 0xc1, 0xa1, 0x00, 0x00, - 0xe4, 0x65, 0x01, 0x00, 0xa8, 0x7c, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0xfe, 0xf7, 0x38, 0xf8, - 0x01, 0x21, 0x00, 0x2c, 0x00, 0xd1, 0x00, 0x21, - 0x0e, 0x20, 0x0b, 0xf0, 0x3c, 0x00, 0x78, 0x78, - 0x00, 0x00, 0xdd, 0xfe, 0x10, 0xbd, 0xf8, 0xb5, - 0x07, 0x1c, 0x0b, 0xf0, 0x94, 0xfa, 0xfd, 0xf7, - 0xbc, 0xfe, 0x00, 0x26, 0x02, 0x28, 0x1e, 0x4d, - 0x01, 0xd0, 0x2e, 0x70, 0xf8, 0xbd, 0xfd, 0xf7, - 0x3e, 0xf8, 0x04, 0x1c, 0xf9, 0xf7, 0x59, 0xfc, - 0x00, 0x28, 0x14, 0xd0, 0xfd, 0xf7, 0x77, 0xf8, - 0x00, 0x28, 0x10, 0xd0, 0x02, 0xf0, 0xf9, 0xfb, - 0x00, 0x28, 0x01, 0xd0, 0x00, 0x24, 0x3c, 0x00, - 0xb4, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x15, 0x4c, - 0x33, 0x1c, 0x21, 0x1c, 0x07, 0x22, 0x16, 0x20, - 0x0b, 0xf0, 0x66, 0xff, 0x68, 0x78, 0x80, 0x21, - 0x08, 0x43, 0x68, 0x70, 0x02, 0xf0, 0x0a, 0xfc, - 0x00, 0x28, 0xde, 0xd1, 0x28, 0x78, 0x80, 0x07, - 0xdb, 0xd4, 0xfd, 0xf7, 0x23, 0xf9, 0x00, 0x28, - 0x05, 0xd1, 0x28, 0x78, 0xc0, 0x07, 0x02, 0xd5, - 0xfd, 0xf7, 0x42, 0xf8, 0xd1, 0xe7, 0x02, 0xf0, - 0x3c, 0x00, 0xf0, 0x78, 0x00, 0x00, 0xcd, 0xfb, - 0x00, 0x28, 0xcd, 0xd0, 0x28, 0x78, 0x02, 0x21, - 0x08, 0x43, 0x28, 0x70, 0x21, 0x1c, 0x38, 0x1c, - 0xfd, 0xf7, 0xc1, 0xf8, 0xc4, 0xe7, 0x60, 0x6c, - 0x01, 0x00, 0x71, 0x02, 0x00, 0x00, 0x10, 0xb5, - 0x12, 0x4c, 0x01, 0x20, 0x20, 0x70, 0xfe, 0xf7, - 0xf0, 0xf9, 0x01, 0x21, 0xa0, 0x68, 0xfb, 0xf7, - 0xf4, 0xfe, 0xa0, 0x68, 0x03, 0xf0, 0x87, 0xff, - 0x0d, 0x48, 0x3c, 0x00, 0x2c, 0x79, 0x00, 0x00, - 0xa1, 0x68, 0x07, 0xf0, 0x23, 0xfd, 0xfb, 0xf7, - 0x55, 0xff, 0xe0, 0x68, 0x00, 0x28, 0x0d, 0xd0, - 0x09, 0x49, 0x06, 0x20, 0x0a, 0xf0, 0x24, 0xfd, - 0x08, 0x49, 0x05, 0x20, 0x0a, 0xf0, 0x20, 0xfd, - 0xfb, 0xf7, 0x6e, 0xff, 0x00, 0x28, 0x01, 0xd0, - 0x05, 0xf0, 0xf8, 0xfc, 0x10, 0xbd, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xe1, 0x35, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x79, - 0x00, 0x00, 0xb1, 0x35, 0x00, 0x00, 0xf0, 0xb5, - 0x24, 0x4d, 0x23, 0x4c, 0x68, 0x7c, 0x20, 0x3c, - 0x9b, 0xb0, 0x00, 0x28, 0x08, 0xd0, 0x02, 0x28, - 0x03, 0xd8, 0x20, 0x89, 0x01, 0x38, 0x20, 0x81, - 0x37, 0xe0, 0x00, 0x27, 0x6f, 0x74, 0x34, 0xe0, - 0x1c, 0x4e, 0x68, 0x22, 0x14, 0x36, 0x31, 0x1c, - 0x0c, 0x31, 0x01, 0xa8, 0xf8, 0xf7, 0x09, 0xfe, - 0x18, 0x48, 0x33, 0x89, 0x01, 0x21, 0x3c, 0x00, - 0xa4, 0x79, 0x00, 0x00, 0x44, 0x30, 0x0a, 0x1c, - 0x00, 0x2b, 0x00, 0x7b, 0x00, 0xd1, 0x02, 0x1c, - 0x12, 0x06, 0x12, 0x0e, 0x0d, 0xaf, 0x3a, 0x70, - 0x94, 0x46, 0xaa, 0x7b, 0x93, 0x19, 0x30, 0x33, - 0x5b, 0x7b, 0x7b, 0x70, 0xea, 0x73, 0x01, 0x32, - 0x12, 0x06, 0x12, 0x0e, 0x00, 0x27, 0x82, 0x42, - 0xaa, 0x73, 0x01, 0xd3, 0xaf, 0x73, 0x04, 0xe0, - 0x62, 0x46, 0x01, 0x2a, 0x01, 0xd1, 0x77, 0x60, - 0x3c, 0x00, 0xe0, 0x79, 0x00, 0x00, 0x00, 0xe0, - 0x71, 0x60, 0x06, 0x48, 0x07, 0x4a, 0x80, 0x38, - 0x81, 0x67, 0x42, 0x67, 0x68, 0x22, 0x01, 0xa9, - 0xf8, 0xf7, 0xdd, 0xfd, 0x27, 0x81, 0x08, 0xf0, - 0x12, 0xfd, 0x1b, 0xb0, 0xf0, 0xbd, 0x84, 0x66, - 0x01, 0x00, 0xe9, 0x2e, 0x00, 0x00, 0xf1, 0xb5, - 0x86, 0xb0, 0x06, 0x99, 0x00, 0x20, 0x88, 0x61, - 0x06, 0x98, 0x84, 0x68, 0x80, 0x8d, 0x65, 0x68, - 0x01, 0x28, 0x3c, 0x00, 0x1c, 0x7a, 0x00, 0x00, - 0x4c, 0xd9, 0x35, 0x49, 0x49, 0x68, 0x05, 0x91, - 0x00, 0x29, 0x47, 0xd0, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x23, 0x03, 0x90, 0x28, 0x1c, 0x96, 0x46, - 0x94, 0x46, 0x06, 0x68, 0x04, 0x96, 0xf2, 0x78, - 0x80, 0x26, 0xb2, 0x43, 0x3f, 0x2a, 0x2e, 0xd8, - 0xd7, 0x06, 0xff, 0x0e, 0x01, 0x26, 0xbe, 0x40, - 0x37, 0x1c, 0x04, 0x9e, 0x52, 0x09, 0xb6, 0x78, - 0x76, 0x00, 0xb2, 0x18, 0x3c, 0x00, 0x58, 0x7a, - 0x00, 0x00, 0x26, 0x4e, 0x92, 0x00, 0x1c, 0x36, - 0xb2, 0x58, 0x3a, 0x40, 0x1e, 0xd0, 0x03, 0xe0, - 0x02, 0x90, 0x02, 0x89, 0xc0, 0x68, 0x51, 0x18, - 0x00, 0x28, 0xf9, 0xd1, 0x05, 0x98, 0x81, 0x42, - 0x14, 0xd8, 0x70, 0x46, 0x01, 0x30, 0x86, 0x46, - 0x00, 0x2b, 0x04, 0xd0, 0x60, 0x46, 0xd8, 0x60, - 0x01, 0x98, 0x62, 0x46, 0xd0, 0x60, 0x03, 0x98, - 0x01, 0x38, 0x03, 0x90, 0x06, 0xd0, 0x3c, 0x00, - 0x94, 0x7a, 0x00, 0x00, 0x23, 0x1c, 0x24, 0x68, - 0x60, 0x68, 0x02, 0x9a, 0x01, 0x90, 0x94, 0x46, - 0xc9, 0xe7, 0x70, 0x46, 0x01, 0x28, 0x07, 0xd9, - 0x2a, 0x1c, 0x00, 0x21, 0x3f, 0x20, 0x01, 0xf0, - 0x51, 0xff, 0x05, 0x1c, 0x06, 0x98, 0x85, 0x61, - 0x28, 0x1c, 0x01, 0xf0, 0xb3, 0xff, 0x0e, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x07, 0xd0, 0x28, 0x68, - 0x01, 0x88, 0x40, 0x79, 0x02, 0x31, 0x09, 0x1a, - 0x3c, 0x00, 0xd0, 0x7a, 0x00, 0x00, 0x28, 0x1c, - 0x01, 0xf0, 0xe5, 0xfc, 0xa2, 0x68, 0x06, 0x98, - 0xc0, 0x68, 0x06, 0x99, 0x0b, 0x69, 0x29, 0x1c, - 0xf8, 0xf7, 0x7c, 0xfc, 0x03, 0x49, 0x08, 0x69, - 0x01, 0x30, 0x08, 0x61, 0x07, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xfc, 0x5a, 0x01, 0x00, 0xcc, 0x5c, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4a, 0x80, 0x00, - 0x12, 0x58, 0xd0, 0x06, 0xc0, 0x0e, 0x01, 0x30, - 0x07, 0x4b, 0x3c, 0x00, 0x0c, 0x7b, 0x00, 0x00, - 0x1c, 0x68, 0x00, 0x2c, 0xfc, 0xdb, 0x5a, 0x60, - 0x20, 0x22, 0x12, 0x1a, 0x91, 0x40, 0x19, 0x60, - 0x19, 0x68, 0x00, 0x29, 0xfc, 0xdb, 0x10, 0xbd, - 0xe8, 0x60, 0x01, 0x00, 0x30, 0x20, 0x07, 0x00, - 0xb0, 0xb5, 0x12, 0x4c, 0x00, 0x25, 0x25, 0x70, - 0xa1, 0x68, 0x11, 0x48, 0x07, 0xf0, 0x32, 0xfc, - 0x65, 0x61, 0xfb, 0xf7, 0xa3, 0xfe, 0xe0, 0x68, - 0x00, 0x28, 0x0d, 0xd0, 0x3c, 0x00, 0x48, 0x7b, - 0x00, 0x00, 0xfb, 0xf7, 0xa4, 0xfe, 0x01, 0x21, - 0x07, 0x20, 0x0b, 0xf0, 0x70, 0xfd, 0x0a, 0x49, - 0x06, 0x20, 0x0a, 0xf0, 0x4c, 0xfc, 0x09, 0x49, - 0x05, 0x20, 0x0a, 0xf0, 0x48, 0xfc, 0xa0, 0x68, - 0x03, 0xf0, 0x67, 0xfe, 0x00, 0x21, 0xa0, 0x68, - 0xfb, 0xf7, 0xcd, 0xfd, 0x05, 0xf0, 0xab, 0xfb, - 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0xe1, 0x35, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x7b, 0x00, 0x00, 0xb1, 0x35, 0x00, 0x00, - 0x10, 0xb5, 0x0f, 0x4c, 0x20, 0x7c, 0x00, 0x28, - 0x19, 0xd1, 0x60, 0x69, 0x00, 0x28, 0x16, 0xd1, - 0xe0, 0x68, 0x00, 0x28, 0x06, 0xd0, 0x0a, 0x48, - 0x1c, 0x38, 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0x05, 0xf0, 0xce, 0xfb, 0x01, 0x21, 0x07, 0x20, - 0x0b, 0xf0, 0x40, 0xfd, 0xa0, 0x68, 0x03, 0xf0, - 0x3f, 0xfe, 0x04, 0x48, 0xa1, 0x68, 0x07, 0xf0, - 0x3c, 0x00, 0xc0, 0x7b, 0x00, 0x00, 0xdb, 0xfb, - 0x01, 0x20, 0x20, 0x70, 0x10, 0xbd, 0x78, 0x69, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x70, 0xb5, - 0x0e, 0x4c, 0x01, 0x22, 0xa3, 0x68, 0xe5, 0x68, - 0x26, 0x8a, 0x5d, 0x1b, 0xb5, 0x42, 0x01, 0xd1, - 0x00, 0x22, 0x06, 0xe0, 0x25, 0x68, 0x01, 0x33, - 0x2e, 0x68, 0xa3, 0x60, 0x26, 0x60, 0x04, 0x35, - 0x03, 0xc5, 0x00, 0x2a, 0x04, 0xd1, 0x01, 0x21, - 0x9d, 0x20, 0x3c, 0x00, 0xfc, 0x7b, 0x00, 0x00, - 0xf9, 0xf7, 0x52, 0xfb, 0x70, 0xbd, 0x03, 0x49, - 0x02, 0x20, 0x08, 0x60, 0x70, 0xbd, 0x00, 0x00, - 0x44, 0xe3, 0x01, 0x00, 0x40, 0x20, 0x07, 0x00, - 0x80, 0xb5, 0x02, 0xf0, 0xb9, 0xf8, 0x80, 0xbd, - 0x80, 0xb5, 0x02, 0x21, 0x2d, 0x20, 0xf9, 0xf7, - 0x3f, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x2a, 0x20, 0xf9, 0xf7, - 0x37, 0xfb, 0x00, 0x20, 0x3c, 0x00, 0x38, 0x7c, - 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x01, 0x21, 0x2b, 0x20, 0xf9, 0xf7, 0x2f, 0xfb, - 0x02, 0x20, 0x80, 0xbd, 0x00, 0x00, 0x01, 0x49, - 0x01, 0x20, 0x08, 0x61, 0x70, 0x47, 0x7c, 0x78, - 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0c, 0x23, - 0x0f, 0x1c, 0x17, 0x49, 0x58, 0x43, 0x45, 0x18, - 0x6c, 0x68, 0x30, 0x1c, 0x0b, 0xf0, 0x3f, 0xfe, - 0x00, 0x2f, 0x09, 0xd1, 0x30, 0x1c, 0x3c, 0x00, - 0x74, 0x7c, 0x00, 0x00, 0x03, 0xf0, 0xee, 0xfe, - 0x41, 0x20, 0x07, 0x55, 0x11, 0x48, 0x21, 0x1c, - 0xff, 0xf7, 0xa6, 0xff, 0xf8, 0xbd, 0x41, 0x20, - 0x07, 0x55, 0xa0, 0x6b, 0x00, 0x28, 0x03, 0xd0, - 0x20, 0x1c, 0x00, 0xf0, 0xdf, 0xf9, 0xf5, 0xe7, - 0x20, 0x1c, 0x00, 0xf0, 0xdb, 0xf9, 0xac, 0x68, - 0x00, 0x2c, 0x02, 0xd0, 0x00, 0x20, 0xa8, 0x60, - 0xed, 0xe7, 0x30, 0x1c, 0x05, 0xf0, 0x34, 0xf9, - 0x3c, 0x00, 0xb0, 0x7c, 0x00, 0x00, 0x04, 0x1c, - 0xe8, 0xd1, 0x08, 0x21, 0x0c, 0x20, 0xf9, 0xf7, - 0xf4, 0xfa, 0xe3, 0xe7, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x55, 0x80, 0x00, 0x00, 0x07, 0x4a, - 0x80, 0xb5, 0x50, 0x70, 0x51, 0x60, 0x12, 0x78, - 0x06, 0x4b, 0x80, 0x00, 0x52, 0x01, 0xd2, 0x18, - 0x10, 0x18, 0x40, 0x38, 0x02, 0x68, 0x08, 0x1c, - 0xf8, 0xf7, 0x7b, 0xfb, 0x80, 0xbd, 0x78, 0x69, - 0x01, 0x00, 0x3c, 0x00, 0xec, 0x7c, 0x00, 0x00, - 0xfc, 0x42, 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x49, - 0x04, 0x1c, 0xc8, 0x70, 0x08, 0x4d, 0xe4, 0x35, - 0xa8, 0x7a, 0x08, 0x71, 0x08, 0x2c, 0x01, 0xd3, - 0xf9, 0xf7, 0xfc, 0xfa, 0xa8, 0x7a, 0x05, 0x49, - 0x40, 0x01, 0x40, 0x18, 0xa1, 0x00, 0x40, 0x58, - 0xf8, 0xf7, 0x60, 0xfb, 0xb0, 0xbd, 0x00, 0x00, - 0x60, 0x6c, 0x01, 0x00, 0x80, 0x43, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x28, 0x3c, 0x00, 0x28, 0x7d, - 0x00, 0x00, 0x01, 0xd0, 0x09, 0xf0, 0x1d, 0xf9, - 0x80, 0xbd, 0xb0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, - 0x00, 0x20, 0x08, 0x60, 0x68, 0x68, 0x09, 0xf0, - 0x36, 0xfb, 0x6c, 0x60, 0xb0, 0xbd, 0x10, 0xb5, - 0x04, 0x1c, 0x09, 0xf0, 0x34, 0xfb, 0x21, 0x68, - 0x00, 0x29, 0x00, 0xd1, 0x64, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x00, 0x21, 0x01, 0x60, 0x40, 0x60, - 0x70, 0x47, 0xf8, 0xb5, 0x46, 0x68, 0x3c, 0x00, - 0x64, 0x7d, 0x00, 0x00, 0x04, 0x1c, 0x40, 0x6a, - 0x35, 0x1c, 0x0a, 0x35, 0x00, 0x28, 0x04, 0xd0, - 0x20, 0x1c, 0xf9, 0xf7, 0x89, 0xfd, 0x07, 0x1c, - 0x00, 0xe0, 0x04, 0x27, 0x29, 0x1c, 0x60, 0x69, - 0x00, 0xf0, 0xf6, 0xfc, 0x79, 0x00, 0x0f, 0x18, - 0xba, 0x88, 0xf1, 0x8a, 0x05, 0x1c, 0x8a, 0x42, - 0x05, 0xd1, 0x30, 0x88, 0x00, 0x05, 0x02, 0xd5, - 0x04, 0xf0, 0xbe, 0xfb, 0x3c, 0xe0, 0x28, 0x68, - 0x3c, 0x00, 0xa0, 0x7d, 0x00, 0x00, 0x00, 0x28, - 0x0f, 0xd0, 0x01, 0x32, 0x8a, 0x42, 0x04, 0xd1, - 0xf9, 0xf7, 0x0f, 0xfc, 0x21, 0x68, 0xc1, 0x60, - 0x0b, 0xe0, 0xf9, 0xf7, 0xf0, 0xfb, 0xf0, 0x8a, - 0x00, 0x07, 0x04, 0xd0, 0x00, 0x21, 0x29, 0x60, - 0x29, 0xe0, 0x08, 0x07, 0x27, 0xd1, 0x20, 0x68, - 0x28, 0x60, 0xf0, 0x8a, 0xb8, 0x80, 0x13, 0x48, - 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x31, 0x88, - 0x49, 0x05, 0x3c, 0x00, 0xdc, 0x7d, 0x00, 0x00, - 0x18, 0xd4, 0x29, 0x68, 0x21, 0x60, 0x00, 0x21, - 0x29, 0x60, 0xe1, 0x69, 0x00, 0x29, 0x0d, 0xd0, - 0x89, 0x79, 0x02, 0x29, 0x0a, 0xd1, 0x08, 0x21, - 0x21, 0x86, 0x21, 0x1c, 0x38, 0x31, 0xa1, 0x62, - 0x22, 0x1c, 0xdc, 0x30, 0x08, 0x49, 0x02, 0xf0, - 0x81, 0xf9, 0xf8, 0xbd, 0x20, 0x1c, 0x00, 0xf0, - 0x5f, 0xf8, 0xfa, 0xe7, 0x20, 0x1c, 0xf9, 0xf7, - 0xef, 0xfc, 0xf6, 0xe7, 0x3c, 0x00, 0x18, 0x7e, - 0x00, 0x00, 0x20, 0x68, 0xf9, 0xf7, 0xbd, 0xfb, - 0xf7, 0xe7, 0xc4, 0x69, 0x01, 0x00, 0xb9, 0x71, - 0x00, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, 0x09, 0x78, - 0x01, 0x24, 0xc9, 0x07, 0x21, 0xd5, 0x02, 0xf0, - 0x8c, 0xff, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x24, - 0x1b, 0xe0, 0x0e, 0x4e, 0x75, 0x6e, 0x00, 0x2d, - 0x17, 0xd0, 0x34, 0x6e, 0x06, 0x22, 0x31, 0x1c, - 0x38, 0x1c, 0xf8, 0xf7, 0xd4, 0xfa, 0x3c, 0x00, - 0x54, 0x7e, 0x00, 0x00, 0x00, 0x28, 0x05, 0xd1, - 0x01, 0x20, 0x00, 0x2c, 0x00, 0xd0, 0x00, 0x20, - 0x04, 0x1c, 0x03, 0xe0, 0x01, 0x3d, 0x06, 0x36, - 0x00, 0x2d, 0xee, 0xd1, 0x00, 0x2c, 0x03, 0xd1, - 0x02, 0x4e, 0xb0, 0x6e, 0x01, 0x30, 0xb0, 0x66, - 0x20, 0x1c, 0xf8, 0xbd, 0x10, 0x79, 0x01, 0x00, - 0x30, 0xb5, 0x05, 0x1c, 0x00, 0x20, 0x06, 0x49, - 0x00, 0x22, 0x1c, 0x23, 0xcc, 0x56, 0xac, 0x42, - 0x3c, 0x00, 0x90, 0x7e, 0x00, 0x00, 0x01, 0xd1, - 0x08, 0x1c, 0x30, 0xbd, 0x01, 0x32, 0x48, 0x31, - 0x01, 0x2a, 0xf5, 0xd3, 0x30, 0xbd, 0xcc, 0x6d, - 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, 0x00, 0x22, - 0x1c, 0x23, 0x53, 0x43, 0xe3, 0x58, 0x83, 0x42, - 0x04, 0xd1, 0x1c, 0x20, 0x50, 0x43, 0x00, 0x19, - 0x0a, 0x60, 0x10, 0xbd, 0x01, 0x32, 0x0e, 0x2a, - 0xf2, 0xd3, 0x00, 0x20, 0x10, 0xbd, 0xdc, 0x71, - 0x01, 0x00, 0x3c, 0x00, 0xcc, 0x7e, 0x00, 0x00, - 0xf0, 0xb5, 0x41, 0x68, 0x95, 0xb0, 0x07, 0x1c, - 0x90, 0x37, 0x13, 0x91, 0x04, 0x1c, 0xf8, 0x78, - 0x25, 0x1c, 0x80, 0x35, 0xc6, 0x07, 0x28, 0x79, - 0xf6, 0x0f, 0x4a, 0x49, 0x02, 0x28, 0x4d, 0xd1, - 0x0a, 0x6d, 0x00, 0x2a, 0x4a, 0xd0, 0x48, 0x68, - 0x01, 0x30, 0x48, 0x60, 0x0a, 0xf0, 0x58, 0xff, - 0x44, 0x49, 0x08, 0x61, 0x48, 0x61, 0x13, 0x99, - 0x09, 0x79, 0xc9, 0x07, 0x3c, 0x00, 0x08, 0x7f, - 0x00, 0x00, 0x01, 0xd4, 0x41, 0x49, 0x88, 0x61, - 0x20, 0x68, 0x06, 0x22, 0x06, 0x90, 0xa1, 0x68, - 0x03, 0xa8, 0xf8, 0xf7, 0xee, 0xfa, 0x06, 0x22, - 0x04, 0xa8, 0x02, 0x30, 0xe1, 0x68, 0xf8, 0xf7, - 0xe8, 0xfa, 0x07, 0xa8, 0x06, 0x22, 0x21, 0x69, - 0xf8, 0xf7, 0xe3, 0xfa, 0xb8, 0x78, 0x08, 0xab, - 0x00, 0x21, 0x98, 0x70, 0x0c, 0x96, 0x63, 0x6a, - 0x20, 0x1c, 0xa0, 0x30, 0x0a, 0x1c, 0x3c, 0x00, - 0x44, 0x7f, 0x00, 0x00, 0x00, 0x2b, 0x02, 0xd0, - 0x02, 0x8a, 0x52, 0x07, 0x52, 0x0f, 0x08, 0xab, - 0xda, 0x70, 0x00, 0xab, 0x99, 0x84, 0x13, 0x99, - 0x09, 0x88, 0xc9, 0x0b, 0xd9, 0x84, 0x69, 0x6b, - 0x10, 0xab, 0x10, 0x91, 0xa9, 0x6b, 0x11, 0x91, - 0x80, 0x8b, 0x29, 0x49, 0x18, 0x81, 0x09, 0x6d, - 0x03, 0xa8, 0xf8, 0xf7, 0x32, 0xfa, 0x29, 0x79, - 0x68, 0x6b, 0x0b, 0xf0, 0x4d, 0xfd, 0x29, 0x79, - 0x3c, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xa8, 0x6b, - 0x0b, 0xf0, 0x67, 0xfd, 0x3d, 0xe0, 0x00, 0x28, - 0x38, 0xd1, 0x48, 0x6d, 0x14, 0x90, 0x00, 0x28, - 0x34, 0xd0, 0x20, 0x68, 0x06, 0x22, 0x03, 0x90, - 0xa1, 0x68, 0x68, 0x46, 0xf8, 0xf7, 0xab, 0xfa, - 0x06, 0x22, 0x68, 0x46, 0x80, 0x18, 0xe1, 0x68, - 0xf8, 0xf7, 0xa5, 0xfa, 0x05, 0xa8, 0x06, 0x22, - 0x21, 0x69, 0xf8, 0xf7, 0xa0, 0xfa, 0x00, 0x21, - 0x04, 0x91, 0x3c, 0x00, 0xbc, 0x7f, 0x00, 0x00, - 0xb9, 0x78, 0x08, 0xa8, 0x10, 0xab, 0x01, 0x72, - 0x08, 0x96, 0xe9, 0x68, 0x0b, 0x91, 0x69, 0x79, - 0x41, 0x72, 0x68, 0x6b, 0x0e, 0x90, 0xa8, 0x6b, - 0x10, 0x90, 0x28, 0x8d, 0xd8, 0x80, 0x68, 0x8d, - 0x18, 0x81, 0xe1, 0x69, 0x0c, 0xa8, 0x00, 0x29, - 0x04, 0xd0, 0x89, 0x79, 0x01, 0x70, 0x20, 0x6a, - 0x0d, 0x90, 0x01, 0xe0, 0x07, 0x21, 0x01, 0x70, - 0x68, 0x46, 0x14, 0x99, 0x3c, 0x00, 0xf8, 0x7f, - 0x00, 0x00, 0xf8, 0xf7, 0xef, 0xf9, 0x02, 0xe0, - 0x20, 0x68, 0xf9, 0xf7, 0xca, 0xfa, 0x20, 0x1c, - 0xf9, 0xf7, 0xf5, 0xfb, 0x15, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0xc0, 0x68, 0x06, 0x22, 0x01, 0x89, - 0x0c, 0x31, 0x01, 0x81, 0x05, 0x68, 0x21, 0x1c, - 0x0c, 0x3d, 0x05, 0x60, 0xa8, 0x18, 0xf8, 0xf7, - 0x64, 0xfa, 0x06, 0x22, 0xa1, 0x18, 0x3c, 0x00, - 0x34, 0x80, 0x00, 0x00, 0x28, 0x1c, 0xf8, 0xf7, - 0x5f, 0xfa, 0xa0, 0x8f, 0x00, 0x09, 0xe0, 0x62, - 0x20, 0x63, 0x03, 0x48, 0x01, 0x69, 0x20, 0x1c, - 0xf8, 0xf7, 0xc7, 0xf9, 0xb0, 0xbd, 0x00, 0x00, - 0x7c, 0x79, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x60, 0x36, 0x05, 0x1c, 0x70, 0x7a, 0x0c, 0x23, - 0x25, 0x49, 0x58, 0x43, 0x44, 0x18, 0xa8, 0x6b, - 0x00, 0x27, 0x00, 0x28, 0x06, 0xd0, 0xa0, 0x78, - 0x3c, 0x00, 0x70, 0x80, 0x00, 0x00, 0x01, 0x28, - 0x03, 0xd1, 0xa7, 0x70, 0x70, 0x7a, 0x0a, 0xf0, - 0xb6, 0xfd, 0x2a, 0x1c, 0x0c, 0x21, 0x80, 0x20, - 0x0b, 0xf0, 0x95, 0xfb, 0xa8, 0x6b, 0x00, 0x28, - 0x33, 0xd0, 0xa0, 0x78, 0x02, 0x28, 0x0b, 0xd0, - 0x04, 0x28, 0x22, 0xd1, 0xa7, 0x70, 0x2f, 0x1c, - 0x40, 0x37, 0x78, 0x78, 0x02, 0x28, 0x0c, 0xd1, - 0x70, 0x7a, 0x0a, 0xf0, 0xa0, 0xfd, 0x18, 0xe0, - 0x03, 0x20, 0x3c, 0x00, 0xac, 0x80, 0x00, 0x00, - 0xa0, 0x70, 0x12, 0x49, 0x00, 0x20, 0x14, 0x39, - 0x09, 0x69, 0xf8, 0xf7, 0x90, 0xf9, 0x0f, 0xe0, - 0x2c, 0x1c, 0x07, 0xe0, 0x78, 0x78, 0x41, 0x21, - 0x22, 0x1c, 0x08, 0x55, 0x0c, 0x21, 0x80, 0x20, - 0x0b, 0xf0, 0x70, 0xfb, 0x60, 0x34, 0x60, 0x7a, - 0x04, 0xf0, 0x20, 0xff, 0x04, 0x1c, 0xf1, 0xd1, - 0x70, 0x7a, 0x40, 0x35, 0xa9, 0x8b, 0x00, 0x02, - 0x09, 0x09, 0x09, 0x04, 0x3c, 0x00, 0xe8, 0x80, - 0x00, 0x00, 0x08, 0x43, 0x81, 0x21, 0x01, 0x43, - 0x0c, 0x20, 0x0b, 0xf0, 0xa0, 0xfa, 0xf8, 0xbd, - 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0xf8, 0xb5, - 0x1c, 0x49, 0x05, 0x1c, 0x88, 0x6a, 0x01, 0x30, - 0x88, 0x62, 0x28, 0x1c, 0x0b, 0xf0, 0x7d, 0xfd, - 0x04, 0x1c, 0x11, 0xd0, 0x2b, 0x1c, 0x20, 0x33, - 0x1e, 0x1c, 0x5a, 0x79, 0x20, 0x1c, 0xb4, 0x30, - 0x19, 0x79, 0x14, 0x4f, 0xfd, 0xf7, 0x3c, 0x00, - 0x24, 0x81, 0x00, 0x00, 0x89, 0xf8, 0xaa, 0x7a, - 0x20, 0x1c, 0xb8, 0x30, 0xb1, 0x79, 0xfd, 0xf7, - 0xb9, 0xf8, 0x00, 0x2f, 0x04, 0xd1, 0x01, 0x21, - 0x28, 0x68, 0xfa, 0xf7, 0x6d, 0xfa, 0xf8, 0xbd, - 0x60, 0x68, 0xbc, 0x21, 0xc0, 0x8a, 0x08, 0x53, - 0x28, 0x68, 0x00, 0x21, 0xfa, 0xf7, 0x64, 0xfa, - 0x00, 0x28, 0x09, 0xd0, 0x06, 0x49, 0xc8, 0x6a, - 0x01, 0x30, 0xc8, 0x62, 0x00, 0x2c, 0xee, 0xd0, - 0x3c, 0x00, 0x60, 0x81, 0x00, 0x00, 0x20, 0x1c, - 0xf9, 0xf7, 0x47, 0xfb, 0xea, 0xe7, 0x20, 0x1c, - 0xf8, 0xf7, 0x3c, 0xf9, 0xe6, 0xe7, 0xc4, 0x69, - 0x01, 0x00, 0xa1, 0xff, 0x00, 0x00, 0xf8, 0xb5, - 0x16, 0x4c, 0x05, 0x1f, 0x00, 0x22, 0x21, 0x1c, - 0xa0, 0x31, 0x03, 0xe0, 0x28, 0x68, 0xa0, 0x42, - 0x09, 0xd0, 0x20, 0x34, 0xa1, 0x42, 0xf9, 0xd1, - 0x00, 0x2a, 0x04, 0xd1, 0x02, 0x21, 0x8e, 0x20, - 0xf9, 0xf7, 0x3c, 0x00, 0x9c, 0x81, 0x00, 0x00, - 0x83, 0xf8, 0xf8, 0xbd, 0x0d, 0x4f, 0xbe, 0x79, - 0x60, 0x69, 0x01, 0x30, 0x60, 0x61, 0xf8, 0xf7, - 0x97, 0xfd, 0xa8, 0x42, 0x07, 0xd1, 0xa0, 0x88, - 0x04, 0x30, 0xf8, 0xf7, 0x97, 0xfd, 0xe0, 0x69, - 0x01, 0x30, 0xe0, 0x61, 0x05, 0xe0, 0x20, 0x68, - 0x28, 0x60, 0x25, 0x60, 0xa0, 0x69, 0x01, 0x30, - 0xa0, 0x61, 0xbe, 0x71, 0xe5, 0xe7, 0x00, 0x00, - 0xd0, 0x5c, 0x01, 0x00, 0x3c, 0x00, 0xd8, 0x81, - 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, 0x00, 0x29, - 0x01, 0xdb, 0x06, 0x29, 0x01, 0xdb, 0x02, 0x20, - 0x70, 0x47, 0x06, 0x4b, 0xc9, 0x00, 0x5a, 0x5c, - 0xc9, 0x18, 0x02, 0x70, 0x4a, 0x78, 0x42, 0x70, - 0x8a, 0x78, 0x82, 0x70, 0x49, 0x68, 0x41, 0x60, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0xcc, 0x5a, - 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xf9, 0xf7, 0x3c, 0x00, - 0x14, 0x82, 0x00, 0x00, 0x75, 0xf8, 0x10, 0x48, - 0x40, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x03, 0x24, - 0x10, 0x2d, 0x00, 0xd3, 0x0f, 0x25, 0x06, 0x20, - 0x0b, 0x49, 0x60, 0x43, 0x12, 0x31, 0x40, 0x18, - 0x41, 0x78, 0x80, 0x78, 0x49, 0x19, 0x09, 0x06, - 0x09, 0x0e, 0x88, 0x42, 0x00, 0xd2, 0x01, 0x1c, - 0x01, 0x20, 0x88, 0x40, 0x05, 0x49, 0x01, 0x38, - 0x09, 0x68, 0x08, 0x40, 0x00, 0x04, 0x00, 0x0c, - 0x3c, 0x00, 0x50, 0x82, 0x00, 0x00, 0x02, 0xf0, - 0x44, 0xfe, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x7a, - 0x01, 0x00, 0x08, 0x20, 0x07, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0d, 0x1c, 0x09, 0xf0, 0xcf, 0xfd, - 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x09, 0xf0, - 0x82, 0xfd, 0x05, 0x61, 0xb0, 0xbd, 0x80, 0xb5, - 0x0a, 0xf0, 0x97, 0xfd, 0x03, 0x4a, 0x0c, 0x32, - 0x06, 0xca, 0x89, 0x18, 0x08, 0x1a, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x82, 0x00, 0x00, - 0xa0, 0x7d, 0x01, 0x00, 0x70, 0xb5, 0x0b, 0x4c, - 0x04, 0x9e, 0x64, 0x68, 0x0d, 0xe0, 0x65, 0x68, - 0x85, 0x42, 0x09, 0xd1, 0x20, 0x7a, 0x08, 0x70, - 0xe0, 0x68, 0x10, 0x60, 0x20, 0x69, 0x18, 0x60, - 0x20, 0x7d, 0x30, 0x80, 0x01, 0x20, 0x70, 0xbd, - 0x24, 0x68, 0x00, 0x2c, 0xef, 0xd1, 0x00, 0x20, - 0x70, 0xbd, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0xc8, 0x82, - 0x00, 0x00, 0x20, 0x30, 0x81, 0x7b, 0x20, 0x69, - 0x04, 0x30, 0xfd, 0xf7, 0x64, 0xf9, 0x01, 0x1c, - 0x62, 0x20, 0x02, 0x5b, 0x63, 0x6a, 0x40, 0x34, - 0x20, 0x78, 0x02, 0xf0, 0xce, 0xfd, 0x10, 0xbd, - 0x00, 0x00, 0x0b, 0x49, 0x10, 0xb5, 0x08, 0x88, - 0x8a, 0x69, 0x0a, 0x23, 0x50, 0x43, 0x58, 0x43, - 0x0e, 0xd0, 0x08, 0x4a, 0x53, 0x89, 0x94, 0x88, - 0xd2, 0x88, 0x1b, 0x19, 0x52, 0x04, 0x3c, 0x00, - 0x04, 0x83, 0x00, 0x00, 0x52, 0x0c, 0x9a, 0x18, - 0xc9, 0x68, 0x06, 0x32, 0x4a, 0x43, 0x0a, 0x21, - 0x51, 0x43, 0xf8, 0xf7, 0xfd, 0xf9, 0x10, 0xbd, - 0xc8, 0x74, 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, - 0x10, 0xb5, 0x43, 0x1c, 0x01, 0xd1, 0x10, 0x48, - 0x10, 0xbd, 0x0f, 0x4a, 0x0e, 0x4b, 0x94, 0x3a, - 0x12, 0x68, 0x44, 0x3b, 0x1b, 0x7a, 0x10, 0xe0, - 0x54, 0x68, 0x84, 0x42, 0x0c, 0xd1, 0x00, 0x29, - 0x3c, 0x00, 0x40, 0x83, 0x00, 0x00, 0x0f, 0xd1, - 0x02, 0x2b, 0x03, 0xd1, 0xd4, 0x7b, 0x02, 0x2c, - 0x0a, 0xd2, 0x04, 0xe0, 0x00, 0x2b, 0x05, 0xd1, - 0xd4, 0x7b, 0xe4, 0x07, 0x04, 0xd4, 0x12, 0x68, - 0x00, 0x2a, 0xec, 0xd1, 0x00, 0x20, 0x10, 0xbd, - 0x10, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x38, 0x6f, - 0x01, 0x00, 0x01, 0x1c, 0x01, 0x20, 0x01, 0x29, - 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, 0x00, 0xb5, - 0x02, 0x1c, 0x3c, 0x00, 0x7c, 0x83, 0x00, 0x00, - 0xfd, 0xf7, 0xce, 0xf8, 0x00, 0x28, 0x08, 0xd0, - 0x10, 0x1c, 0xff, 0xf7, 0xf1, 0xff, 0x18, 0x23, - 0x03, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x69, - 0x00, 0xbd, 0x00, 0x20, 0x00, 0xbd, 0x00, 0x00, - 0x94, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x28, - 0x00, 0xd1, 0x08, 0x48, 0x07, 0x49, 0x00, 0x68, - 0x50, 0x31, 0x09, 0x7a, 0x00, 0x29, 0x02, 0xd0, - 0x02, 0x29, 0x04, 0xd1, 0x3c, 0x00, 0xb8, 0x83, - 0x00, 0x00, 0x00, 0xe0, 0x01, 0x21, 0x00, 0xf0, - 0x06, 0xf8, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, 0x12, 0x4a, - 0x12, 0x4b, 0x12, 0x7a, 0x2c, 0x3b, 0x00, 0x2a, - 0x03, 0xd1, 0x5a, 0x68, 0x00, 0x2a, 0x18, 0xd1, - 0x04, 0xe0, 0x02, 0x2a, 0x02, 0xd1, 0x9a, 0x68, - 0x00, 0x2a, 0x12, 0xd1, 0x00, 0x20, 0x70, 0x47, - 0xc2, 0x7b, 0x8a, 0x42, 0x01, 0xd0, 0x3c, 0x00, - 0xf4, 0x83, 0x00, 0x00, 0x03, 0x2a, 0x0a, 0xd1, - 0x82, 0x7e, 0x01, 0x2a, 0x07, 0xd1, 0x02, 0x7f, - 0x01, 0x32, 0x12, 0x06, 0x12, 0x0e, 0x02, 0x77, - 0xc3, 0x7e, 0x9a, 0x42, 0xee, 0xd2, 0x00, 0x68, - 0x00, 0x28, 0xec, 0xd1, 0x70, 0x47, 0x00, 0x00, - 0xf4, 0x6e, 0x01, 0x00, 0xf7, 0xb5, 0x84, 0x46, - 0x00, 0x20, 0x01, 0x27, 0x00, 0x24, 0x00, 0x25, - 0x88, 0xb0, 0x07, 0xe0, 0x62, 0x46, 0x52, 0x5d, - 0x3c, 0x00, 0x30, 0x84, 0x00, 0x00, 0x00, 0x2a, - 0x05, 0xd0, 0xab, 0x00, 0x6e, 0x46, 0xf2, 0x50, - 0x01, 0x35, 0x8d, 0x42, 0xf5, 0xd3, 0x00, 0x2d, - 0x00, 0xd0, 0x01, 0x20, 0x00, 0x28, 0x28, 0xd0, - 0x00, 0x27, 0x16, 0x4c, 0x6e, 0x46, 0x22, 0xe0, - 0x20, 0x1c, 0x00, 0xf0, 0x30, 0xf8, 0x01, 0x28, - 0x01, 0xd0, 0x07, 0x28, 0x06, 0xd1, 0x00, 0x21, - 0x20, 0x1c, 0x00, 0xf0, 0x34, 0xf8, 0x31, 0x68, - 0x88, 0x42, 0x3c, 0x00, 0x6c, 0x84, 0x00, 0x00, - 0x01, 0xd2, 0x02, 0x27, 0x14, 0xe0, 0x20, 0x68, - 0xc9, 0x00, 0x0c, 0x18, 0x08, 0x3c, 0x20, 0x1c, - 0x00, 0xf0, 0x1c, 0xf8, 0x07, 0x28, 0x07, 0xd1, - 0x01, 0x20, 0x01, 0x2d, 0x00, 0xd0, 0x00, 0x20, - 0x24, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x08, 0x34, - 0x01, 0x3d, 0x04, 0x36, 0x00, 0x2d, 0xda, 0xd1, - 0x0a, 0x98, 0x04, 0x60, 0x0b, 0xb0, 0x38, 0x1c, - 0xf0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x84, - 0x00, 0x00, 0x20, 0x52, 0x01, 0x00, 0x00, 0x68, - 0x00, 0x29, 0x01, 0xd0, 0x80, 0x02, 0x80, 0x0a, - 0x70, 0x47, 0x10, 0xb5, 0x40, 0x68, 0x80, 0x00, - 0x44, 0x0f, 0x08, 0x2c, 0x03, 0xd3, 0x02, 0x21, - 0x87, 0x20, 0xf8, 0xf7, 0xec, 0xfe, 0x20, 0x1c, - 0x10, 0xbd, 0x00, 0x29, 0x02, 0xd0, 0x00, 0x68, - 0x80, 0x0d, 0x70, 0x47, 0x40, 0x68, 0x80, 0x05, - 0x80, 0x0d, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x84, 0x00, 0x00, 0x10, 0xb5, 0x40, 0x68, - 0x40, 0x01, 0x44, 0x0f, 0x05, 0x2c, 0x03, 0xd3, - 0x05, 0x21, 0x87, 0x20, 0xf8, 0xf7, 0xd6, 0xfe, - 0x20, 0x1c, 0x10, 0xbd, 0xf8, 0xb5, 0x05, 0x1c, - 0x88, 0x0a, 0x00, 0x90, 0x1c, 0x48, 0x8e, 0x05, - 0xc0, 0x69, 0xb6, 0x0d, 0x17, 0x1c, 0x1c, 0x1c, - 0x00, 0x28, 0x05, 0xd1, 0x18, 0x48, 0x81, 0x69, - 0x8d, 0x42, 0x1d, 0xd0, 0x85, 0x61, 0x11, 0xe0, - 0x3c, 0x00, 0x20, 0x85, 0x00, 0x00, 0xfd, 0xf7, - 0xe8, 0xf8, 0x15, 0x49, 0x09, 0x78, 0x0e, 0x29, - 0x07, 0xd1, 0x00, 0x28, 0x05, 0xd0, 0x11, 0x49, - 0x50, 0x31, 0x06, 0x23, 0xc9, 0x56, 0xf9, 0xf7, - 0x06, 0xfa, 0x0e, 0x49, 0x00, 0x20, 0xc8, 0x61, - 0x8d, 0x61, 0x29, 0x1c, 0x20, 0x1c, 0xf8, 0xf7, - 0xe2, 0xf8, 0x79, 0x43, 0x20, 0x1c, 0xf8, 0xf7, - 0xde, 0xf8, 0x08, 0x48, 0x41, 0x61, 0x20, 0x1c, - 0x00, 0x99, 0x3c, 0x00, 0x5c, 0x85, 0x00, 0x00, - 0xf8, 0xf7, 0xd8, 0xf8, 0x05, 0x48, 0x40, 0x69, - 0x0a, 0x18, 0xa2, 0x42, 0x01, 0xd2, 0x40, 0x18, - 0x01, 0xe0, 0x40, 0x18, 0x00, 0x1b, 0x80, 0x02, - 0x80, 0x19, 0xf8, 0xbd, 0xac, 0x7c, 0x01, 0x00, - 0x11, 0x67, 0x01, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, - 0x06, 0x1c, 0x14, 0x1c, 0x1d, 0x1c, 0x07, 0xf0, - 0xa1, 0xfc, 0x0e, 0x28, 0x09, 0xd1, 0x20, 0x1c, - 0x02, 0xf0, 0xfc, 0xfb, 0x3c, 0x00, 0x98, 0x85, - 0x00, 0x00, 0x00, 0x28, 0x04, 0xd0, 0x08, 0x48, - 0x00, 0x78, 0x02, 0xf0, 0xe4, 0xfb, 0x04, 0x1c, - 0x01, 0x21, 0x00, 0x2e, 0xac, 0x72, 0x00, 0xd0, - 0x39, 0x1c, 0x20, 0x1c, 0x02, 0xf0, 0x07, 0xfc, - 0x28, 0x60, 0x00, 0x20, 0x28, 0x72, 0x6c, 0x72, - 0xf8, 0xbd, 0x90, 0x57, 0x01, 0x00, 0x03, 0x1c, - 0x0a, 0x48, 0x10, 0xb5, 0x00, 0x24, 0x02, 0x1c, - 0xa0, 0x32, 0x03, 0xe0, 0x81, 0x88, 0x3c, 0x00, - 0xd4, 0x85, 0x00, 0x00, 0x99, 0x42, 0x09, 0xd2, - 0x20, 0x30, 0x82, 0x42, 0xf9, 0xd1, 0x00, 0x2c, - 0x04, 0xd1, 0x02, 0x21, 0x8e, 0x20, 0xf8, 0xf7, - 0x5d, 0xfe, 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0xd0, 0x5c, 0x01, 0x00, 0xff, 0xb5, 0x06, 0x1c, - 0x00, 0x20, 0x81, 0xb0, 0x10, 0x60, 0x1f, 0x1c, - 0x01, 0x25, 0x14, 0x1c, 0x30, 0x1c, 0xff, 0xf7, - 0x6d, 0xff, 0x05, 0x28, 0x12, 0xd2, 0x02, 0xa3, - 0x3c, 0x00, 0x10, 0x86, 0x00, 0x00, 0x1b, 0x5c, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x03, 0x03, - 0x03, 0x03, 0x08, 0x00, 0x39, 0x1c, 0x30, 0x1c, - 0xff, 0xf7, 0x55, 0xff, 0x03, 0xe0, 0x02, 0x98, - 0xf8, 0xf7, 0xeb, 0xf8, 0x01, 0x30, 0x20, 0x60, - 0x04, 0xe0, 0x05, 0x21, 0x87, 0x20, 0xf8, 0xf7, - 0x34, 0xfe, 0x00, 0x25, 0x20, 0x68, 0x80, 0x28, - 0x04, 0xd9, 0x06, 0x21, 0x87, 0x20, 0xf8, 0xf7, - 0x2c, 0xfe, 0x3c, 0x00, 0x4c, 0x86, 0x00, 0x00, - 0x00, 0x25, 0x28, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, - 0x70, 0xb5, 0x17, 0x4c, 0x60, 0x6c, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x1d, 0xe0, 0x16, 0x4e, - 0x14, 0x4d, 0x31, 0x88, 0xa0, 0x6c, 0x00, 0x28, - 0x08, 0xd0, 0x28, 0x78, 0x81, 0x42, 0x05, 0xd9, - 0xf8, 0xf7, 0x4c, 0xf8, 0x01, 0x38, 0xfa, 0xf7, - 0x51, 0xfe, 0x0e, 0xe0, 0xe0, 0x6c, 0x00, 0x28, - 0x0a, 0xd0, 0x00, 0x20, 0x3c, 0x00, 0x88, 0x86, - 0x00, 0x00, 0xfa, 0xf7, 0x4a, 0xfe, 0x29, 0x78, - 0x32, 0x88, 0x91, 0x42, 0x04, 0xd9, 0x90, 0x42, - 0x02, 0xd9, 0x10, 0x1c, 0x00, 0xe0, 0x08, 0x1c, - 0xfa, 0xf7, 0xdf, 0xfd, 0xe1, 0x6b, 0x44, 0x1a, - 0x0a, 0xf0, 0x81, 0xfb, 0x20, 0x1a, 0x00, 0xd5, - 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0xf8, 0x60, 0x01, 0x00, 0xfc, 0x60, - 0x01, 0x00, 0xff, 0xb5, 0x27, 0x4e, 0x3c, 0x00, - 0xc4, 0x86, 0x00, 0x00, 0x04, 0x1c, 0xb0, 0x79, - 0x0f, 0x1c, 0x15, 0x1c, 0x81, 0xb0, 0x00, 0x90, - 0x0a, 0xf0, 0x6c, 0xfb, 0xc1, 0x19, 0x23, 0x48, - 0x07, 0x68, 0x00, 0x2f, 0x05, 0xd1, 0x0a, 0x21, - 0x80, 0x20, 0xf8, 0xf7, 0xdf, 0xfd, 0x05, 0xb0, - 0xf0, 0xbd, 0x1e, 0x48, 0x40, 0x68, 0x84, 0x46, - 0x00, 0x28, 0x01, 0xd1, 0x00, 0x22, 0x0e, 0xe0, - 0x82, 0x68, 0x03, 0x68, 0xab, 0x42, 0x07, 0xd1, - 0x3c, 0x00, 0x00, 0x87, 0x00, 0x00, 0x03, 0x79, - 0xa3, 0x42, 0x04, 0xd1, 0x0b, 0x21, 0x80, 0x20, - 0xf8, 0xf7, 0xcb, 0xfd, 0x23, 0xe0, 0xc0, 0x68, - 0x00, 0x28, 0xf1, 0xd1, 0x13, 0x4b, 0xf8, 0x68, - 0x18, 0x60, 0x3d, 0x60, 0x3c, 0x71, 0xb9, 0x60, - 0x04, 0x98, 0x8d, 0x1a, 0x38, 0x61, 0x60, 0x46, - 0x00, 0x23, 0x05, 0xe0, 0x84, 0x68, 0xa4, 0x1a, - 0xac, 0x42, 0x03, 0xda, 0x03, 0x1c, 0xc0, 0x68, - 0x00, 0x28, 0x3c, 0x00, 0x3c, 0x87, 0x00, 0x00, - 0xf7, 0xd1, 0xf8, 0x60, 0x00, 0x2b, 0x08, 0xd1, - 0x07, 0x48, 0x3b, 0x1c, 0x47, 0x60, 0x08, 0x48, - 0x06, 0x4a, 0x00, 0x88, 0x0a, 0xf0, 0x8a, 0xfb, - 0x00, 0xe0, 0xdf, 0x60, 0x00, 0x98, 0xb0, 0x71, - 0xc3, 0xe7, 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, - 0x7c, 0x5d, 0x01, 0x00, 0x21, 0x38, 0x01, 0x00, - 0x2c, 0x74, 0x01, 0x00, 0xf3, 0xb5, 0x83, 0xb0, - 0x04, 0x1c, 0x09, 0xd0, 0x3c, 0x00, 0x78, 0x87, - 0x00, 0x00, 0x20, 0x1c, 0x04, 0x99, 0x09, 0xf0, - 0x8e, 0xfb, 0x00, 0x28, 0x03, 0xd0, 0x20, 0x1c, - 0x30, 0x30, 0x05, 0xb0, 0xf0, 0xbd, 0x0a, 0xf0, - 0x0e, 0xfb, 0x1e, 0x4a, 0x00, 0x26, 0x04, 0x9f, - 0x01, 0x96, 0x00, 0x90, 0x02, 0x92, 0x02, 0x9c, - 0x00, 0x25, 0x39, 0x1c, 0x20, 0x1c, 0x14, 0x30, - 0x02, 0xf0, 0xc5, 0xfa, 0x00, 0x28, 0x01, 0xd0, - 0x26, 0x1c, 0x03, 0xe0, 0x01, 0x35, 0x3c, 0x00, - 0xb4, 0x87, 0x00, 0x00, 0x1c, 0x34, 0x04, 0x2d, - 0xf2, 0xd3, 0x00, 0x2e, 0x22, 0xd1, 0x01, 0x98, - 0x13, 0x4f, 0x01, 0x30, 0x01, 0x90, 0x02, 0x28, - 0xe8, 0xd3, 0x01, 0x21, 0xc9, 0x06, 0x02, 0x9a, - 0x00, 0x20, 0x13, 0x69, 0x00, 0x9c, 0xe3, 0x1a, - 0x8b, 0x42, 0x01, 0xdd, 0x19, 0x1c, 0x16, 0x1c, - 0x01, 0x30, 0x1c, 0x32, 0x04, 0x28, 0xf4, 0xd3, - 0x30, 0x68, 0x00, 0x28, 0x01, 0xd0, 0xf8, 0xf7, - 0x3c, 0x00, 0xf0, 0x87, 0x00, 0x00, 0xd3, 0xfe, - 0x30, 0x1c, 0xfd, 0xf7, 0x4a, 0xff, 0x30, 0x1c, - 0x14, 0x30, 0x06, 0x22, 0x04, 0x99, 0xf7, 0xf7, - 0x7a, 0xfe, 0x00, 0x9c, 0x30, 0x1c, 0x34, 0x61, - 0xbd, 0xe7, 0x30, 0x6a, 0x01, 0x00, 0x34, 0x42, - 0x01, 0x00, 0x09, 0x49, 0x10, 0xb5, 0x4c, 0x69, - 0x03, 0xe0, 0xe1, 0x68, 0x81, 0x42, 0x03, 0xd0, - 0x24, 0x68, 0x00, 0x2c, 0xf9, 0xd1, 0x01, 0xe0, - 0x00, 0x2c, 0x3c, 0x00, 0x2c, 0x88, 0x00, 0x00, - 0x03, 0xd1, 0x02, 0x21, 0x02, 0x20, 0xf8, 0xf7, - 0x37, 0xfd, 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, - 0xfc, 0x5a, 0x01, 0x00, 0x10, 0xb5, 0xc3, 0x07, - 0x06, 0xd5, 0x08, 0x4b, 0x5c, 0x69, 0x0c, 0x43, - 0x5c, 0x61, 0x1c, 0x7e, 0x14, 0x43, 0x1c, 0x76, - 0x80, 0x07, 0x06, 0xd5, 0x04, 0x48, 0x43, 0x69, - 0x19, 0x43, 0x41, 0x61, 0x01, 0x7e, 0x11, 0x43, - 0x01, 0x76, 0x10, 0xbd, 0x3c, 0x00, 0x68, 0x88, - 0x00, 0x00, 0xfc, 0x57, 0x01, 0x00, 0x18, 0x58, - 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x16, 0x1c, 0x00, 0xf0, 0x08, 0xf8, 0xa0, 0x07, - 0xc0, 0x17, 0x01, 0x30, 0x32, 0x1c, 0x29, 0x1c, - 0x00, 0xf0, 0x21, 0xf8, 0x70, 0xbd, 0x10, 0xb5, - 0xc3, 0x07, 0x06, 0xd5, 0x08, 0x4b, 0x5c, 0x69, - 0x8c, 0x43, 0x5c, 0x61, 0x1c, 0x7e, 0x94, 0x43, - 0x1c, 0x76, 0x80, 0x07, 0x06, 0xd5, 0x3c, 0x00, - 0xa4, 0x88, 0x00, 0x00, 0x04, 0x48, 0x43, 0x69, - 0x8b, 0x43, 0x43, 0x61, 0x01, 0x7e, 0x91, 0x43, - 0x01, 0x76, 0x10, 0xbd, 0xfc, 0x57, 0x01, 0x00, - 0x18, 0x58, 0x01, 0x00, 0x03, 0x22, 0x11, 0x1f, - 0x80, 0xb5, 0x01, 0x20, 0x00, 0xf0, 0x02, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x30, 0xb5, 0x15, 0x1c, - 0x0c, 0x1c, 0x00, 0x28, 0x87, 0xb0, 0x02, 0xd0, - 0x1c, 0x22, 0x22, 0x49, 0x01, 0xe0, 0x22, 0x49, - 0x3c, 0x00, 0xe0, 0x88, 0x00, 0x00, 0x1c, 0x22, - 0x68, 0x46, 0xf7, 0xf7, 0x64, 0xfe, 0x05, 0x99, - 0x00, 0xab, 0x1a, 0x7e, 0x8c, 0x43, 0x20, 0x1c, - 0x95, 0x43, 0x02, 0x9a, 0x29, 0x1c, 0x02, 0x40, - 0x02, 0x92, 0x01, 0x9a, 0x02, 0x40, 0x01, 0x92, - 0x00, 0x9a, 0x02, 0x40, 0x00, 0x92, 0x03, 0x9a, - 0x02, 0x40, 0x03, 0x92, 0x98, 0x7c, 0x08, 0x40, - 0x98, 0x74, 0x58, 0x7c, 0x08, 0x40, 0x58, 0x74, - 0x18, 0x7c, 0x3c, 0x00, 0x1c, 0x89, 0x00, 0x00, - 0x08, 0x40, 0x18, 0x74, 0xd8, 0x7c, 0x08, 0x40, - 0xd8, 0x74, 0x02, 0x99, 0x10, 0x48, 0x41, 0x61, - 0x01, 0xaa, 0x06, 0xca, 0x91, 0x43, 0x81, 0x61, - 0x81, 0x68, 0x01, 0x9a, 0x11, 0x43, 0x81, 0x60, - 0x81, 0x68, 0x00, 0x9a, 0x91, 0x43, 0x81, 0x60, - 0x00, 0xaa, 0x06, 0xca, 0x11, 0x43, 0x42, 0x68, - 0x11, 0x43, 0x41, 0x60, 0x41, 0x68, 0x03, 0x9a, - 0x91, 0x43, 0x41, 0x60, 0x3c, 0x00, 0x58, 0x89, - 0x00, 0x00, 0x04, 0xa8, 0x0b, 0xf0, 0x01, 0xf8, - 0x07, 0xb0, 0x30, 0xbd, 0x00, 0x00, 0xfc, 0x57, - 0x01, 0x00, 0x18, 0x58, 0x01, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x01, 0x1c, - 0x01, 0x20, 0x08, 0xf0, 0xe0, 0xf9, 0x00, 0x2c, - 0x02, 0xd0, 0x03, 0xf0, 0x1c, 0xff, 0x10, 0xbd, - 0xfe, 0xf7, 0xd1, 0xfc, 0x10, 0xbd, 0xf0, 0xb5, - 0x0c, 0x1c, 0x01, 0x0e, 0x01, 0x23, 0x3c, 0x00, - 0x94, 0x89, 0x00, 0x00, 0x1b, 0x06, 0x09, 0x06, - 0x99, 0x42, 0x9f, 0xb0, 0x28, 0xd1, 0x17, 0x49, - 0x08, 0x40, 0x00, 0x21, 0x1a, 0x28, 0x00, 0xd3, - 0x02, 0x21, 0x00, 0x29, 0x19, 0xd1, 0xc5, 0x00, - 0x13, 0x4f, 0x10, 0xa8, 0xee, 0x19, 0xb2, 0x88, - 0x21, 0x68, 0xf7, 0xf7, 0x9d, 0xfd, 0x20, 0x1c, - 0xf8, 0xf7, 0xea, 0xfd, 0x7a, 0x59, 0x01, 0xa9, - 0x10, 0xa8, 0xf7, 0xf7, 0x07, 0xfd, 0x00, 0x28, - 0x3c, 0x00, 0xd0, 0x89, 0x00, 0x00, 0x05, 0xd0, - 0x10, 0x98, 0x01, 0xa9, 0x01, 0x90, 0xb0, 0x79, - 0x00, 0xf0, 0x9d, 0xf8, 0x1f, 0xb0, 0xf0, 0xbd, - 0x2a, 0x20, 0xf8, 0xf7, 0x5e, 0xfc, 0x20, 0x1c, - 0xf8, 0xf7, 0xd5, 0xfd, 0xf6, 0xe7, 0x03, 0x21, - 0x2a, 0x20, 0xf8, 0xf7, 0x56, 0xfc, 0xf1, 0xe7, - 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00, 0x24, 0x45, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x80, 0x28, - 0x02, 0xd0, 0x3c, 0x00, 0x0c, 0x8a, 0x00, 0x00, - 0x81, 0x28, 0x08, 0xd1, 0x03, 0xe0, 0x20, 0x1c, - 0x00, 0xf0, 0x06, 0xf9, 0x10, 0xbd, 0x20, 0x1c, - 0xf8, 0xf7, 0xbc, 0xfd, 0x10, 0xbd, 0x03, 0x21, - 0x2c, 0x20, 0xf8, 0xf7, 0x3d, 0xfc, 0xf6, 0xe7, - 0xf0, 0xb5, 0x0c, 0x1c, 0x00, 0x21, 0x8b, 0xb0, - 0x0a, 0x91, 0x01, 0x0e, 0x01, 0x23, 0x1b, 0x06, - 0x09, 0x06, 0x99, 0x42, 0x2a, 0xd1, 0x18, 0x49, - 0x08, 0x40, 0x06, 0x1c, 0x3c, 0x00, 0x48, 0x8a, - 0x00, 0x00, 0x06, 0x2e, 0x01, 0xd3, 0x07, 0x21, - 0x24, 0xe0, 0x20, 0x89, 0xf8, 0xf7, 0xf1, 0xfe, - 0x22, 0x89, 0x21, 0x68, 0x05, 0x1c, 0xf7, 0xf7, - 0x4c, 0xfd, 0x20, 0x1c, 0xf8, 0xf7, 0x99, 0xfd, - 0xf4, 0x00, 0x0f, 0x4e, 0x28, 0x1c, 0x0a, 0xaa, - 0x69, 0x46, 0x33, 0x59, 0xf7, 0xf7, 0xb4, 0xfc, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, 0x07, 0xd1, - 0x28, 0x68, 0x69, 0x46, 0x00, 0x90, 0x3c, 0x00, - 0x84, 0x8a, 0x00, 0x00, 0xa0, 0x19, 0x00, 0x79, - 0x0a, 0x9a, 0x00, 0xf0, 0x09, 0xf9, 0x28, 0x1c, - 0xf8, 0xf7, 0xb0, 0xfe, 0x0b, 0xb0, 0xf0, 0xbd, - 0x01, 0x21, 0x2b, 0x20, 0xf8, 0xf7, 0x02, 0xfc, - 0xf8, 0xe7, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00, - 0x28, 0x46, 0x01, 0x00, 0x0a, 0x1c, 0x01, 0x0e, - 0x01, 0x23, 0x1b, 0x06, 0x09, 0x06, 0x99, 0x42, - 0x80, 0xb5, 0x08, 0xd0, 0x5b, 0x00, 0x99, 0x42, - 0x3c, 0x00, 0xc0, 0x8a, 0x00, 0x00, 0x0b, 0xd1, - 0x00, 0x06, 0x00, 0x0e, 0x11, 0x1c, 0x00, 0xf0, - 0x0e, 0xf9, 0x80, 0xbd, 0x05, 0x49, 0x01, 0x40, - 0x10, 0x1c, 0x05, 0xf0, 0xa2, 0xf9, 0x80, 0xbd, - 0x01, 0x21, 0x2d, 0x20, 0xf8, 0xf7, 0xe1, 0xfb, - 0x80, 0xbd, 0x7f, 0xff, 0xff, 0x00, 0x80, 0xb5, - 0x01, 0x1c, 0x0f, 0x20, 0x00, 0xf0, 0x13, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x01, 0x1c, 0x04, 0x20, - 0x00, 0xf0, 0x3c, 0x00, 0xfc, 0x8a, 0x00, 0x00, - 0x0d, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x01, 0x1c, - 0x17, 0x20, 0x00, 0xf0, 0x07, 0xf8, 0x80, 0xbd, - 0x80, 0xb5, 0x01, 0x1c, 0x01, 0x20, 0x00, 0xf0, - 0x01, 0xf8, 0x80, 0xbd, 0xf8, 0xb5, 0x04, 0x1c, - 0x06, 0x1c, 0x80, 0x20, 0x84, 0x43, 0x0f, 0x1c, - 0x19, 0x2c, 0x01, 0xd3, 0xf8, 0xf7, 0xea, 0xfb, - 0x08, 0x48, 0x04, 0x5d, 0x21, 0x1c, 0x00, 0x20, - 0xf8, 0xf7, 0x50, 0xfd, 0x3c, 0x00, 0x38, 0x8b, - 0x00, 0x00, 0x05, 0x1c, 0x22, 0x1c, 0x39, 0x1c, - 0x00, 0x68, 0xf7, 0xf7, 0xda, 0xfc, 0x2a, 0x1c, - 0x31, 0x1c, 0x07, 0x20, 0xf8, 0xf7, 0x11, 0xf9, - 0xf8, 0xbd, 0xf4, 0x45, 0x01, 0x00, 0xf8, 0xb5, - 0x0d, 0x1c, 0x16, 0x1c, 0x04, 0x1c, 0x1f, 0x1c, - 0x08, 0x21, 0x00, 0x20, 0xf8, 0xf7, 0x39, 0xfd, - 0x14, 0x22, 0x01, 0x68, 0x0e, 0x4b, 0x72, 0x43, - 0xd2, 0x18, 0x0c, 0x71, 0x12, 0x7c, 0x3c, 0x00, - 0x74, 0x8b, 0x00, 0x00, 0x4a, 0x71, 0x0d, 0x60, - 0x0b, 0x4a, 0x8f, 0x71, 0x12, 0x68, 0x7f, 0x2a, - 0x03, 0xd9, 0x52, 0x05, 0x52, 0x0e, 0x80, 0x23, - 0x1a, 0x43, 0xca, 0x71, 0x07, 0x4a, 0x00, 0x23, - 0x51, 0x68, 0x01, 0x31, 0x51, 0x60, 0x02, 0x1c, - 0x81, 0x21, 0x00, 0x20, 0xf8, 0xf7, 0x08, 0xf9, - 0xf8, 0xbd, 0x00, 0x00, 0x74, 0x40, 0x01, 0x00, - 0xfc, 0x5a, 0x01, 0x00, 0x80, 0x6e, 0x01, 0x00, - 0x3c, 0x00, 0xb0, 0x8b, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x08, 0x21, 0x00, 0x20, 0xf8, 0xf7, - 0x0e, 0xfd, 0x21, 0x8b, 0xe2, 0x7d, 0x05, 0x1c, - 0x09, 0x05, 0x52, 0x07, 0x52, 0x0f, 0x49, 0x0c, - 0x00, 0x68, 0x11, 0x43, 0x81, 0x80, 0xa1, 0x7d, - 0x14, 0x23, 0x0e, 0x4a, 0x59, 0x43, 0x89, 0x18, - 0x09, 0x7c, 0xc1, 0x71, 0xe1, 0x6a, 0x01, 0x60, - 0xe1, 0x68, 0x28, 0x1c, 0xf8, 0xf7, 0x17, 0xfc, - 0x0a, 0x48, 0x3c, 0x00, 0xec, 0x8b, 0x00, 0x00, - 0x00, 0x68, 0x00, 0x28, 0x01, 0xd0, 0xf7, 0xf7, - 0xf1, 0xfb, 0x07, 0x49, 0x04, 0x31, 0x88, 0x68, - 0x01, 0x30, 0x88, 0x60, 0x00, 0x21, 0x2a, 0x1c, - 0x00, 0x20, 0x23, 0x6b, 0xf8, 0xf7, 0xd2, 0xf8, - 0x01, 0x20, 0xb0, 0xbd, 0x74, 0x40, 0x01, 0x00, - 0x7c, 0x6e, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68, - 0x70, 0x47, 0x00, 0x00, 0x80, 0x6e, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0x28, 0x8c, - 0x00, 0x00, 0x92, 0xb0, 0x01, 0x68, 0x68, 0x46, - 0x08, 0x22, 0xf7, 0xf7, 0x62, 0xfc, 0x00, 0xab, - 0x98, 0x88, 0x40, 0x07, 0x40, 0x0f, 0xd8, 0x77, - 0x98, 0x88, 0x40, 0x04, 0x00, 0x0d, 0x18, 0x84, - 0xd8, 0x88, 0x58, 0x84, 0x00, 0x98, 0x0d, 0x90, - 0x05, 0x94, 0x20, 0x89, 0x08, 0x38, 0x20, 0x81, - 0x05, 0x98, 0x01, 0x68, 0x08, 0x31, 0x01, 0x60, - 0x00, 0x20, 0x0a, 0x90, 0x0c, 0x90, 0x3c, 0x00, - 0x64, 0x8c, 0x00, 0x00, 0x00, 0x21, 0x11, 0x20, - 0x09, 0xf0, 0x78, 0xfb, 0x05, 0x49, 0x06, 0x4a, - 0x08, 0x68, 0x01, 0x30, 0x08, 0x60, 0x02, 0x21, - 0x02, 0xa8, 0x01, 0xf0, 0xcd, 0xfc, 0x12, 0xb0, - 0x10, 0xbd, 0x00, 0x00, 0x80, 0x6e, 0x01, 0x00, - 0x55, 0x8b, 0x00, 0x00, 0x02, 0x1c, 0x01, 0x20, - 0x00, 0x06, 0x08, 0x43, 0x80, 0xb5, 0x2b, 0x21, - 0x0a, 0xf0, 0x8a, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x8c, 0x00, 0x00, 0xf7, 0xb5, - 0x04, 0x1c, 0x06, 0x1c, 0x80, 0x20, 0x84, 0x43, - 0x17, 0x1c, 0x06, 0x2c, 0x01, 0xd3, 0xf8, 0xf7, - 0x26, 0xfb, 0x0b, 0x48, 0x05, 0x5d, 0x29, 0x1c, - 0x00, 0x20, 0xf8, 0xf7, 0x8c, 0xfc, 0x04, 0x1c, - 0x00, 0x68, 0x01, 0x99, 0x2a, 0x1c, 0xf7, 0xf7, - 0x16, 0xfc, 0x39, 0x1c, 0x20, 0x1c, 0xf8, 0xf7, - 0xa2, 0xfb, 0x22, 0x1c, 0x31, 0x1c, 0x00, 0x23, - 0x02, 0x20, 0x3c, 0x00, 0xdc, 0x8c, 0x00, 0x00, - 0xf8, 0xf7, 0x68, 0xf8, 0xfe, 0xbd, 0x00, 0x00, - 0x20, 0x46, 0x01, 0x00, 0x0a, 0x1c, 0x01, 0x1c, - 0x80, 0xb5, 0x00, 0x23, 0x01, 0x20, 0xf8, 0xf7, - 0x5d, 0xf8, 0x80, 0xbd, 0xff, 0xb5, 0x9f, 0xb0, - 0x1f, 0x1c, 0x05, 0x1c, 0x0a, 0x30, 0x1e, 0x90, - 0x1c, 0xaa, 0x1d, 0xa9, 0x0a, 0xf0, 0x00, 0xff, - 0x00, 0x28, 0x71, 0xd0, 0x00, 0x2f, 0x09, 0xd0, - 0x0a, 0x21, 0x00, 0x20, 0x3c, 0x00, 0x18, 0x8d, - 0x00, 0x00, 0xf8, 0xf7, 0x5e, 0xfc, 0x06, 0x68, - 0x04, 0x1c, 0x30, 0x1d, 0xfa, 0xf7, 0xaf, 0xfa, - 0x05, 0xe0, 0x04, 0x21, 0x00, 0x20, 0xf8, 0xf7, - 0x54, 0xfc, 0x06, 0x68, 0x04, 0x1c, 0x28, 0x89, - 0x36, 0x49, 0x01, 0x22, 0x08, 0x80, 0x70, 0x80, - 0xe8, 0x88, 0x14, 0xa9, 0x30, 0x80, 0x19, 0xa8, - 0xfc, 0xf7, 0xf5, 0xfc, 0xfc, 0xf7, 0xff, 0xfb, - 0x01, 0x1c, 0xff, 0x31, 0x21, 0x31, 0x3c, 0x00, - 0x54, 0x8d, 0x00, 0x00, 0x20, 0x1c, 0x01, 0xf0, - 0xef, 0xf8, 0x19, 0xa9, 0x20, 0x1c, 0x01, 0xf0, - 0xeb, 0xf8, 0x14, 0xa9, 0x20, 0x1c, 0x01, 0xf0, - 0xe7, 0xf8, 0x20, 0x1c, 0x20, 0x99, 0xfd, 0xf7, - 0x4b, 0xfd, 0x00, 0x22, 0x02, 0x21, 0x01, 0xf0, - 0x33, 0xfd, 0x06, 0x1c, 0x1c, 0x99, 0x00, 0x20, - 0x88, 0x61, 0x30, 0x1c, 0xf8, 0xf7, 0x1c, 0xfa, - 0x00, 0x2e, 0x0b, 0xd0, 0x30, 0x7a, 0x00, 0x28, - 0x3c, 0x00, 0x90, 0x8d, 0x00, 0x00, 0x02, 0xd0, - 0x40, 0x21, 0x08, 0x43, 0x30, 0x72, 0x1c, 0x98, - 0x02, 0x22, 0x81, 0x69, 0x11, 0x43, 0x81, 0x61, - 0x04, 0xe0, 0x1c, 0x99, 0x02, 0x22, 0x88, 0x69, - 0x90, 0x43, 0x88, 0x61, 0x1d, 0xaa, 0x06, 0xca, - 0x01, 0xa8, 0x05, 0xf0, 0x58, 0xfb, 0x09, 0xa8, - 0x00, 0x2f, 0x02, 0xd0, 0x02, 0x22, 0x42, 0x72, - 0x01, 0xe0, 0x00, 0x21, 0x41, 0x72, 0x04, 0x94, - 0x01, 0xa8, 0x3c, 0x00, 0xcc, 0x8d, 0x00, 0x00, - 0x04, 0xf0, 0x7a, 0xfb, 0x01, 0x21, 0x1c, 0x98, - 0x08, 0xf0, 0xc8, 0xff, 0x00, 0x2f, 0x04, 0xd0, - 0x1c, 0x98, 0x01, 0x22, 0x81, 0x69, 0x11, 0x43, - 0x81, 0x61, 0xa8, 0x88, 0x1c, 0x9c, 0x01, 0xf0, - 0x9f, 0xfe, 0x02, 0x1c, 0x21, 0x1c, 0x00, 0xe0, - 0x04, 0xe0, 0x07, 0x48, 0x40, 0x88, 0x09, 0xf0, - 0x1f, 0xf8, 0x04, 0xe0, 0x3a, 0x1c, 0x00, 0x21, - 0x05, 0x20, 0xf9, 0xf7, 0x3c, 0x00, 0x08, 0x8e, - 0x00, 0x00, 0x9b, 0xf8, 0x00, 0x20, 0x23, 0xb0, - 0xf0, 0xbd, 0xfc, 0x60, 0x01, 0x00, 0x98, 0x7c, - 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0xc0, 0x68, - 0x05, 0x68, 0xa0, 0x1d, 0x01, 0xf0, 0x95, 0xff, - 0x00, 0x28, 0x45, 0xd0, 0x21, 0x1c, 0x14, 0x31, - 0x20, 0x1c, 0x6a, 0x46, 0x0a, 0xf0, 0x55, 0xfe, - 0x00, 0x28, 0x3d, 0xd0, 0xfc, 0xf7, 0x7d, 0xfa, - 0x00, 0x28, 0x39, 0xd1, 0x00, 0x98, 0x3c, 0x00, - 0x44, 0x8e, 0x00, 0x00, 0x4b, 0x21, 0x09, 0x5c, - 0x01, 0x29, 0x34, 0xd1, 0x04, 0x26, 0x09, 0xf0, - 0x19, 0xf9, 0x68, 0x88, 0x00, 0x28, 0x1b, 0xd1, - 0xa8, 0x88, 0x03, 0x21, 0x89, 0x03, 0x88, 0x43, - 0x15, 0x49, 0x00, 0x26, 0x08, 0x80, 0x01, 0x22, - 0x02, 0x21, 0x20, 0x69, 0x01, 0xf0, 0xb8, 0xfc, - 0x04, 0x1c, 0x14, 0xd0, 0x00, 0x98, 0x80, 0x69, - 0x80, 0x07, 0x10, 0xd5, 0xf8, 0xf7, 0x9a, 0xf9, - 0x3c, 0x00, 0x80, 0x8e, 0x00, 0x00, 0x20, 0x1c, - 0xf8, 0xf7, 0xdd, 0xf8, 0x00, 0x28, 0x09, 0xd1, - 0xf8, 0xf7, 0x7f, 0xf9, 0x01, 0x26, 0x00, 0x98, - 0x02, 0x22, 0x81, 0x69, 0x91, 0x43, 0x81, 0x61, - 0x00, 0x21, 0x01, 0xe0, 0x00, 0x98, 0x02, 0x21, - 0x08, 0xf0, 0x61, 0xff, 0x00, 0x98, 0x80, 0x69, - 0xa9, 0x88, 0xc2, 0x07, 0xd2, 0x0f, 0x30, 0x1c, - 0xf9, 0xf7, 0x45, 0xf8, 0xf8, 0xbd, 0xfa, 0x60, - 0x01, 0x00, 0x3c, 0x00, 0xbc, 0x8e, 0x00, 0x00, - 0x1c, 0xb5, 0x04, 0x69, 0x00, 0x23, 0x00, 0x22, - 0x00, 0x2c, 0x13, 0xd1, 0x4b, 0x24, 0x24, 0x5c, - 0x02, 0x2c, 0x03, 0xd1, 0x02, 0x29, 0x05, 0xd0, - 0x01, 0x22, 0x03, 0xe0, 0x02, 0x29, 0x01, 0xd1, - 0x01, 0x22, 0x01, 0x23, 0x00, 0x2a, 0x05, 0xd0, - 0x00, 0x90, 0x04, 0x20, 0x01, 0x93, 0x69, 0x46, - 0x09, 0xf0, 0x36, 0xfa, 0x1c, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0xf8, 0x8e, - 0x00, 0x00, 0xf2, 0x21, 0x0f, 0x20, 0x0c, 0x4d, - 0x0a, 0xf0, 0x99, 0xfb, 0x28, 0x78, 0x08, 0x28, - 0x0b, 0xd2, 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x07, 0x03, 0x03, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x00, 0x2c, 0x01, 0xd1, 0x05, 0xf0, - 0xbc, 0xfb, 0xb0, 0xbd, 0x01, 0x2c, 0xfc, 0xd1, - 0xff, 0x20, 0x07, 0xf0, 0x38, 0xfa, 0xb0, 0xbd, - 0x00, 0x00, 0x74, 0x66, 0x01, 0x00, 0x3c, 0x00, - 0x34, 0x8f, 0x00, 0x00, 0x8c, 0xb5, 0x05, 0x4a, - 0x00, 0xab, 0x11, 0x72, 0x00, 0x90, 0x19, 0x71, - 0x69, 0x46, 0x08, 0x20, 0x09, 0xf0, 0x0a, 0xfa, - 0x8c, 0xbd, 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, - 0xf3, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0x06, 0x27, - 0x85, 0xb0, 0x06, 0x68, 0x09, 0xf0, 0x26, 0xff, - 0x98, 0x49, 0x48, 0x63, 0x20, 0x69, 0x03, 0x21, - 0x01, 0xf0, 0x08, 0xfc, 0x96, 0x4d, 0x00, 0x28, - 0x3c, 0x00, 0x70, 0x8f, 0x00, 0x00, 0x4d, 0xd0, - 0x95, 0x49, 0x40, 0x31, 0x09, 0x79, 0x80, 0x78, - 0x81, 0x42, 0x47, 0xd1, 0x01, 0x21, 0x20, 0x69, - 0x01, 0xf0, 0xfb, 0xfb, 0x02, 0x90, 0x20, 0x69, - 0x32, 0x21, 0x01, 0xf0, 0xf6, 0xfb, 0x01, 0x90, - 0x02, 0x1c, 0x8d, 0x48, 0x02, 0x99, 0xfc, 0xf7, - 0x46, 0xff, 0x00, 0x28, 0x36, 0xd0, 0x00, 0x23, - 0x8a, 0x48, 0x02, 0x99, 0x01, 0x9a, 0xfc, 0xf7, - 0xe4, 0xfe, 0x3c, 0x00, 0xac, 0x8f, 0x00, 0x00, - 0x0b, 0x28, 0x2e, 0xd1, 0x86, 0x4a, 0x51, 0x88, - 0x70, 0x89, 0x41, 0x40, 0x03, 0x91, 0x0b, 0x1c, - 0x84, 0x49, 0x0b, 0x40, 0x25, 0xd1, 0x50, 0x80, - 0x03, 0x99, 0x17, 0x1c, 0x00, 0x29, 0x0b, 0xd0, - 0x03, 0x99, 0x48, 0x05, 0x02, 0xd5, 0x38, 0x1c, - 0xfc, 0xf7, 0x40, 0xfe, 0x03, 0x99, 0x88, 0x06, - 0x02, 0xd5, 0x38, 0x1c, 0xfc, 0xf7, 0x24, 0xfe, - 0x2a, 0x21, 0x20, 0x69, 0x3c, 0x00, 0xe8, 0x8f, - 0x00, 0x00, 0x01, 0xf0, 0xc8, 0xfb, 0x00, 0x28, - 0x0d, 0xd0, 0x80, 0x78, 0xe9, 0x69, 0x81, 0x42, - 0x09, 0xd0, 0xe8, 0x61, 0x38, 0x1c, 0xfc, 0xf7, - 0x16, 0xfe, 0x38, 0x1c, 0xfc, 0xf7, 0x07, 0xfe, - 0x38, 0x1c, 0xfc, 0xf7, 0x26, 0xfe, 0x00, 0x27, - 0x20, 0x1c, 0x20, 0x30, 0x04, 0x90, 0x40, 0x7a, - 0x08, 0x28, 0x71, 0xd1, 0x0a, 0xf0, 0xd1, 0xfc, - 0x00, 0x20, 0x68, 0x61, 0x00, 0x23, 0x3c, 0x00, - 0x24, 0x90, 0x00, 0x00, 0x2b, 0x61, 0xa8, 0x68, - 0x66, 0x49, 0x01, 0x30, 0xa8, 0x60, 0x30, 0x89, - 0x5c, 0x31, 0x88, 0x82, 0x01, 0xf0, 0x7a, 0xfd, - 0x62, 0x49, 0x5c, 0x31, 0x08, 0x61, 0x22, 0x6a, - 0x04, 0x98, 0x18, 0x21, 0x00, 0x7a, 0x01, 0xf0, - 0x33, 0xfe, 0xe1, 0x6a, 0x40, 0x18, 0x03, 0x90, - 0x5c, 0x48, 0x00, 0x6a, 0x00, 0x28, 0x0d, 0xd0, - 0x00, 0x2f, 0x0b, 0xd1, 0x59, 0x48, 0x01, 0x23, - 0x3c, 0x00, 0x60, 0x90, 0x00, 0x00, 0x5c, 0x30, - 0x01, 0x68, 0x1b, 0x07, 0x00, 0x22, 0x30, 0x68, - 0x09, 0xf0, 0x49, 0xff, 0x00, 0x28, 0x00, 0xd1, - 0x05, 0x27, 0x00, 0x21, 0xa0, 0x6b, 0x0a, 0xf0, - 0xce, 0xfc, 0x00, 0x21, 0x20, 0x6c, 0x0a, 0xf0, - 0xe8, 0xfc, 0x4f, 0x4b, 0x03, 0xce, 0x03, 0x9a, - 0x5c, 0x33, 0xfc, 0xf7, 0x88, 0xfd, 0x00, 0x20, - 0x4c, 0x4e, 0x05, 0x21, 0xb0, 0x63, 0x20, 0x69, - 0x01, 0xf0, 0x3c, 0x00, 0x9c, 0x90, 0x00, 0x00, - 0x6f, 0xfb, 0x01, 0x1c, 0x01, 0xd1, 0xf0, 0x60, - 0x1c, 0xe0, 0x01, 0x20, 0xf0, 0x60, 0x88, 0x78, - 0x45, 0x4a, 0x01, 0x32, 0x10, 0x70, 0xc8, 0x78, - 0x50, 0x70, 0x47, 0x4a, 0x10, 0x70, 0x30, 0x69, - 0x00, 0x28, 0x0a, 0xd0, 0x4a, 0x78, 0x08, 0x79, - 0x05, 0x31, 0x09, 0xf0, 0xdd, 0xfa, 0x31, 0x69, - 0xf7, 0xf7, 0x85, 0xf9, 0xf0, 0x68, 0x00, 0x28, - 0x04, 0xd0, 0x3b, 0x4a, 0x3c, 0x00, 0xd8, 0x90, - 0x00, 0x00, 0x01, 0x32, 0x10, 0x78, 0x00, 0x28, - 0x08, 0xd1, 0x00, 0x20, 0xa8, 0x61, 0x71, 0x6a, - 0x00, 0x29, 0x03, 0xd0, 0x20, 0x1c, 0x14, 0x30, - 0xf7, 0xf7, 0x74, 0xf9, 0x34, 0x4a, 0x5c, 0x32, - 0x10, 0x69, 0x31, 0x6a, 0x41, 0x18, 0x00, 0xe0, - 0x20, 0xe0, 0x0a, 0x23, 0xd0, 0x68, 0x0a, 0x22, - 0x09, 0xf0, 0xfb, 0xfe, 0x00, 0x28, 0x07, 0xd0, - 0x2d, 0x4a, 0x31, 0x6a, 0x5c, 0x32, 0x3c, 0x00, - 0x14, 0x91, 0x00, 0x00, 0xd0, 0x68, 0x40, 0x1a, - 0x11, 0x69, 0x40, 0x1a, 0x70, 0x60, 0x29, 0x4a, - 0x5c, 0x32, 0xd0, 0x68, 0x30, 0x62, 0xf0, 0x69, - 0x00, 0x28, 0x04, 0xd0, 0xfa, 0xf7, 0x00, 0xfd, - 0x01, 0x20, 0xfa, 0xf7, 0xa1, 0xfc, 0xfa, 0xf7, - 0x81, 0xfc, 0x27, 0x48, 0x00, 0x68, 0x03, 0xf0, - 0x07, 0xf9, 0x06, 0x98, 0x00, 0x28, 0x03, 0xd1, - 0x1e, 0x4e, 0x00, 0x23, 0xb3, 0x60, 0x16, 0xe0, - 0x3c, 0x00, 0x50, 0x91, 0x00, 0x00, 0x1c, 0x4e, - 0x01, 0x20, 0xb0, 0x60, 0x06, 0x98, 0x01, 0x68, - 0x40, 0x68, 0xb0, 0x65, 0x19, 0x48, 0x71, 0x65, - 0x54, 0x30, 0xc0, 0x88, 0x00, 0x28, 0x09, 0xd0, - 0xb1, 0x69, 0x00, 0x29, 0x06, 0xd0, 0x01, 0xf0, - 0xdc, 0xfc, 0x01, 0x1c, 0xe0, 0x6a, 0xb2, 0x69, - 0xf7, 0xf7, 0x2f, 0xf9, 0x00, 0x2f, 0x15, 0xd1, - 0x12, 0x48, 0x01, 0x69, 0x00, 0x29, 0x08, 0xd1, - 0x01, 0x21, 0x3c, 0x00, 0x8c, 0x91, 0x00, 0x00, - 0x01, 0x61, 0x2a, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0x00, 0x21, 0x00, 0x20, 0xf7, 0xf7, 0x20, 0xf9, - 0x09, 0x49, 0x00, 0x23, 0xcb, 0x62, 0x2b, 0x61, - 0x6b, 0x61, 0x06, 0xf0, 0xb5, 0xf8, 0x07, 0xb0, - 0xf0, 0xbd, 0x6b, 0x68, 0x06, 0x48, 0x00, 0x2b, - 0xf9, 0xd0, 0x02, 0x1d, 0x11, 0x1c, 0x38, 0x1c, - 0xf7, 0xf7, 0x0f, 0xf9, 0xf3, 0xe7, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x3c, 0x00, 0xc8, 0x91, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xf4, 0x67, - 0x01, 0x00, 0x03, 0x08, 0x00, 0x00, 0xf8, 0x60, - 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, 0x08, 0xb5, - 0xf8, 0xf7, 0x2f, 0xfd, 0x00, 0x90, 0x00, 0xab, - 0x18, 0x88, 0x00, 0x28, 0x0c, 0xd0, 0x05, 0xf0, - 0x50, 0xff, 0x00, 0xab, 0x59, 0x88, 0x18, 0x88, - 0x05, 0xf0, 0x6d, 0xf9, 0xfe, 0xf7, 0x97, 0xf8, - 0x03, 0x20, 0xfb, 0xf7, 0x0e, 0xf8, 0x3c, 0x00, - 0x04, 0x92, 0x00, 0x00, 0x08, 0xbd, 0x01, 0x20, - 0xff, 0xf7, 0xb2, 0xfb, 0x00, 0x20, 0x08, 0xf0, - 0x8d, 0xfe, 0xf7, 0xe7, 0xf8, 0xb5, 0x4f, 0x49, - 0x8c, 0x68, 0x20, 0x6a, 0x00, 0x68, 0x05, 0x78, - 0xfc, 0xf7, 0x68, 0xfa, 0x00, 0x28, 0x12, 0xd0, - 0x2a, 0x07, 0x92, 0x0f, 0x01, 0x21, 0x01, 0x2a, - 0x00, 0xd0, 0x00, 0x21, 0x00, 0x29, 0x03, 0xd0, - 0x29, 0x06, 0x09, 0x0f, 0x0b, 0x29, 0x06, 0xd1, - 0x3c, 0x00, 0x40, 0x92, 0x00, 0x00, 0x2a, 0x21, - 0x09, 0x5d, 0x08, 0x18, 0x90, 0x30, 0x00, 0x7b, - 0xf9, 0xf7, 0x0d, 0xfc, 0x41, 0x4f, 0x3c, 0x3f, - 0xb8, 0x6b, 0x79, 0x6b, 0xf7, 0xf7, 0xc0, 0xf8, - 0xa0, 0x6c, 0x00, 0x26, 0xc6, 0x60, 0x60, 0x6b, - 0x80, 0x08, 0x04, 0xd0, 0xb8, 0x69, 0x01, 0x30, - 0xb8, 0x61, 0x06, 0xf0, 0xdc, 0xf9, 0x39, 0x4d, - 0x28, 0x69, 0x80, 0x05, 0x80, 0x0f, 0x08, 0xd1, - 0x78, 0x69, 0x3c, 0x00, 0x7c, 0x92, 0x00, 0x00, - 0x04, 0x21, 0x01, 0x30, 0x78, 0x61, 0x60, 0x6b, - 0x40, 0x08, 0x40, 0x00, 0x08, 0x43, 0x60, 0x63, - 0xb8, 0x6a, 0x00, 0x28, 0x03, 0xd0, 0x60, 0x6b, - 0x08, 0x21, 0x08, 0x43, 0x60, 0x63, 0x20, 0x1c, - 0x20, 0x30, 0x00, 0x90, 0x39, 0x68, 0xf7, 0xf7, - 0x9a, 0xf8, 0x03, 0x20, 0x00, 0x02, 0x28, 0x60, - 0x2b, 0x49, 0x88, 0x68, 0xa0, 0x63, 0xc8, 0x68, - 0xe0, 0x63, 0x08, 0x79, 0x3c, 0x00, 0xb8, 0x92, - 0x00, 0x00, 0xc0, 0x06, 0xc0, 0x0e, 0x25, 0x1c, - 0x40, 0x35, 0x28, 0x71, 0x48, 0x79, 0x68, 0x71, - 0x23, 0x48, 0x3c, 0x38, 0x46, 0x62, 0x00, 0x98, - 0x80, 0x7a, 0x01, 0xf0, 0x5e, 0xfd, 0x00, 0x21, - 0x00, 0x28, 0x21, 0x4a, 0x01, 0xd0, 0x11, 0x78, - 0x03, 0xe0, 0x93, 0x78, 0xdb, 0x07, 0x00, 0xd5, - 0x51, 0x78, 0xa9, 0x71, 0x00, 0x28, 0x04, 0xd0, - 0x1b, 0x49, 0x14, 0x31, 0x08, 0x68, 0x3c, 0x00, - 0xf4, 0x92, 0x00, 0x00, 0x20, 0x64, 0x00, 0xe0, - 0x6e, 0x80, 0xb8, 0x6a, 0xc0, 0x07, 0x02, 0xd5, - 0xff, 0x20, 0x28, 0x71, 0xae, 0x71, 0xe6, 0x61, - 0xb8, 0x68, 0x01, 0x30, 0xb8, 0x60, 0x79, 0x68, - 0x88, 0x42, 0x03, 0xd0, 0x0b, 0x21, 0x85, 0x20, - 0xf7, 0xf7, 0xc4, 0xff, 0x0d, 0x49, 0x88, 0x68, - 0xc0, 0x6c, 0x88, 0x60, 0xfb, 0x6a, 0x00, 0x2b, - 0x0c, 0xd0, 0x0e, 0x4a, 0xd4, 0x7b, 0x00, 0x2b, - 0x3c, 0x00, 0x30, 0x93, 0x00, 0x00, 0x02, 0xdd, - 0x7f, 0x2c, 0x05, 0xd2, 0x01, 0xe0, 0x00, 0x2c, - 0x02, 0xd0, 0xd4, 0x7b, 0xe3, 0x18, 0xd3, 0x73, - 0xfe, 0x62, 0xc9, 0x68, 0x88, 0x42, 0x03, 0xd1, - 0x05, 0x21, 0x85, 0x20, 0xf7, 0xf7, 0xa9, 0xff, - 0xf8, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x00, 0x40, - 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0xe8, 0x80, - 0x07, 0x00, 0x40, 0x00, 0x07, 0x00, 0xfe, 0xb5, - 0x30, 0x4c, 0x3c, 0x00, 0x6c, 0x93, 0x00, 0x00, - 0xa0, 0x6b, 0x21, 0x6b, 0xf7, 0xf7, 0x33, 0xf8, - 0x2d, 0x49, 0x3c, 0x31, 0x8e, 0x68, 0x70, 0x8b, - 0x06, 0x28, 0x04, 0xd2, 0xe0, 0x69, 0x01, 0x30, - 0xe0, 0x61, 0x0e, 0x20, 0x30, 0x85, 0x28, 0x49, - 0x3c, 0x31, 0x0d, 0x68, 0x00, 0x2d, 0x03, 0xd1, - 0x03, 0x21, 0x85, 0x20, 0xf7, 0xf7, 0x84, 0xff, - 0x24, 0x48, 0x45, 0x61, 0x35, 0x62, 0x31, 0x8d, - 0xef, 0x68, 0x04, 0x39, 0x3c, 0x00, 0xa8, 0x93, - 0x00, 0x00, 0x0c, 0x04, 0x01, 0x21, 0x02, 0x91, - 0x24, 0x0c, 0x00, 0x21, 0x01, 0x91, 0x1d, 0x48, - 0x3c, 0x30, 0x80, 0x8a, 0xa0, 0x42, 0x03, 0xd3, - 0x2c, 0x81, 0xee, 0x60, 0x00, 0x24, 0x0b, 0xe0, - 0x00, 0x2f, 0x04, 0xd1, 0x03, 0x21, 0x85, 0x20, - 0xf7, 0xf7, 0x69, 0xff, 0x04, 0xe0, 0x3d, 0x1c, - 0x20, 0x1a, 0x04, 0x04, 0xff, 0x68, 0x24, 0x0c, - 0x02, 0x98, 0x00, 0x28, 0x04, 0xd0, 0x3c, 0x00, - 0xe4, 0x93, 0x00, 0x00, 0x12, 0x49, 0x01, 0x20, - 0x08, 0x61, 0x00, 0x20, 0x02, 0x90, 0x01, 0x98, - 0x01, 0x30, 0x01, 0x90, 0x00, 0x2c, 0xdd, 0xd1, - 0x0c, 0x48, 0x0c, 0x4c, 0x3c, 0x30, 0x07, 0x60, - 0x01, 0x98, 0x30, 0x65, 0xb5, 0x64, 0x30, 0x6a, - 0x00, 0x68, 0x60, 0x62, 0x60, 0x68, 0x01, 0x30, - 0x60, 0x60, 0xa1, 0x68, 0x01, 0x31, 0x88, 0x42, - 0x03, 0xd0, 0x0a, 0x21, 0x85, 0x20, 0xf7, 0xf7, - 0x3c, 0x00, 0x20, 0x94, 0x00, 0x00, 0x41, 0xff, - 0x04, 0x48, 0x00, 0x68, 0xa0, 0x62, 0xfe, 0xbd, - 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x78, 0x6e, 0x01, 0x00, 0xb0, 0xb5, - 0x05, 0x1c, 0x01, 0x21, 0x0f, 0x20, 0x0a, 0xf0, - 0xf8, 0xf8, 0xf2, 0x21, 0x0f, 0x20, 0x0a, 0xf0, - 0xf4, 0xf8, 0x0c, 0x48, 0x0c, 0x4c, 0x00, 0x68, - 0x14, 0x3c, 0x00, 0x28, 0x0c, 0xd0, 0xe0, 0x78, - 0x01, 0x28, 0x3c, 0x00, 0x5c, 0x94, 0x00, 0x00, - 0x09, 0xd0, 0x01, 0x22, 0x29, 0x1c, 0x0f, 0x20, - 0x0a, 0xf0, 0xac, 0xf8, 0x60, 0x78, 0x02, 0x28, - 0x06, 0xd0, 0x01, 0x20, 0x03, 0xe0, 0x60, 0x78, - 0x02, 0x28, 0x01, 0xd0, 0x00, 0x20, 0x60, 0x70, - 0xb0, 0xbd, 0x00, 0x00, 0x98, 0x66, 0x01, 0x00, - 0x02, 0x22, 0x00, 0x28, 0x80, 0xb5, 0x00, 0xd1, - 0x03, 0x22, 0x03, 0x49, 0x0e, 0x20, 0x0a, 0xf0, - 0x9b, 0xf8, 0x00, 0x20, 0x3c, 0x00, 0x98, 0x94, - 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x50, 0xc3, - 0x00, 0x00, 0xf8, 0xb5, 0x00, 0x23, 0x00, 0x22, - 0x00, 0x28, 0x2e, 0xd0, 0x06, 0x89, 0x04, 0x68, - 0x75, 0x1e, 0x2d, 0x04, 0xb6, 0x1a, 0xf6, 0x07, - 0x2d, 0x0c, 0xf6, 0x0f, 0xb4, 0x46, 0x0e, 0xe0, - 0xa7, 0x5c, 0xa6, 0x18, 0x02, 0x33, 0x00, 0x97, - 0x77, 0x78, 0xa7, 0x54, 0x02, 0x32, 0x12, 0x04, - 0x00, 0x9f, 0x12, 0x0c, 0x00, 0x29, 0x3c, 0x00, - 0xd4, 0x94, 0x00, 0x00, 0x77, 0x70, 0x01, 0xdd, - 0x8b, 0x42, 0x15, 0xda, 0xaa, 0x42, 0xee, 0xd3, - 0xc0, 0x68, 0x00, 0x28, 0x10, 0xd0, 0x02, 0x89, - 0x00, 0x2a, 0xf9, 0xd0, 0x62, 0x46, 0x00, 0x2a, - 0x0b, 0xd0, 0x02, 0x68, 0x66, 0x5d, 0x17, 0x78, - 0x02, 0x33, 0x67, 0x55, 0x16, 0x70, 0x01, 0x22, - 0x00, 0x29, 0xd2, 0xdd, 0x8b, 0x42, 0xd0, 0xdb, - 0xf8, 0xbd, 0x00, 0x22, 0xcd, 0xe7, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x95, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0d, 0x1c, 0x01, 0x20, 0xf8, 0xf7, - 0x5e, 0xfb, 0x0d, 0x49, 0x00, 0x28, 0xc8, 0x61, - 0x14, 0xd0, 0x62, 0x68, 0x42, 0x60, 0xa2, 0x7c, - 0x02, 0x72, 0xa2, 0x68, 0xc2, 0x60, 0xe2, 0x68, - 0x02, 0x61, 0x22, 0x8a, 0x02, 0x75, 0x0a, 0x1d, - 0x0a, 0x62, 0x12, 0x68, 0x00, 0x2a, 0xff, 0xd1, - 0x02, 0x60, 0x48, 0x60, 0x00, 0x20, 0xa8, 0x60, - 0x01, 0x20, 0x3c, 0x00, 0x4c, 0x95, 0x00, 0x00, - 0xb0, 0xbd, 0x01, 0x20, 0xfa, 0xe7, 0x00, 0x00, - 0xa4, 0x6e, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x40, 0x68, 0x0d, 0x1c, 0x43, 0x1c, 0x02, 0xd1, - 0x21, 0x1c, 0x09, 0x48, 0x08, 0xe0, 0x00, 0x20, - 0xf8, 0xf7, 0x34, 0xfb, 0x06, 0x49, 0x94, 0x39, - 0x08, 0x61, 0x00, 0x28, 0x03, 0xd0, 0x21, 0x1c, - 0x00, 0xf0, 0x48, 0xfe, 0x00, 0xe0, 0x01, 0x20, - 0xa8, 0x60, 0x01, 0x20, 0x3c, 0x00, 0x88, 0x95, - 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, 0x38, 0x6f, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, 0x97, 0x20, - 0xf7, 0xf7, 0x85, 0xfe, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x38, 0xb5, 0x0a, 0x1c, 0x14, 0x32, - 0x00, 0x92, 0x13, 0x1f, 0x05, 0x1c, 0x08, 0x3a, - 0x0c, 0x1c, 0x16, 0x31, 0x40, 0x68, 0xfe, 0xf7, - 0x6c, 0xfe, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x20, - 0x00, 0xe0, 0x01, 0x20, 0x69, 0x68, 0x3c, 0x00, - 0xc4, 0x95, 0x00, 0x00, 0xa0, 0x60, 0x61, 0x60, - 0x01, 0x20, 0x38, 0xbd, 0x10, 0xb5, 0x0c, 0x1c, - 0x01, 0x7a, 0x00, 0x29, 0x0f, 0xd0, 0x01, 0x29, - 0x09, 0xd0, 0x02, 0x29, 0x03, 0xd1, 0x00, 0x21, - 0x00, 0x20, 0x0a, 0xf0, 0x73, 0xfc, 0x00, 0x20, - 0x20, 0x71, 0x01, 0x20, 0x10, 0xbd, 0x41, 0x68, - 0x01, 0x20, 0x0a, 0xf0, 0x6b, 0xfc, 0x00, 0xf0, - 0x0d, 0xf9, 0xf4, 0xe7, 0x80, 0xb5, 0x04, 0x49, - 0x3c, 0x00, 0x00, 0x96, 0x00, 0x00, 0x48, 0x68, - 0x01, 0x38, 0x48, 0x60, 0x01, 0xd1, 0x07, 0xf0, - 0x6e, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0xac, 0x79, - 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, - 0x00, 0xf0, 0x4f, 0xfe, 0xa0, 0x60, 0x68, 0x68, - 0x60, 0x60, 0x01, 0x20, 0xb0, 0xbd, 0xb0, 0xb5, - 0x05, 0x1c, 0x0c, 0x1c, 0x00, 0xf0, 0x6f, 0xfe, - 0xa0, 0x60, 0x68, 0x68, 0x60, 0x60, 0x01, 0x20, - 0xb0, 0xbd, 0x3c, 0x00, 0x3c, 0x96, 0x00, 0x00, - 0x08, 0x1c, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x08, 0xc0, 0x01, 0x20, 0x70, 0x47, - 0xf8, 0xb5, 0x0f, 0x1c, 0x04, 0x1c, 0x20, 0x79, - 0x20, 0x28, 0x01, 0xd2, 0x20, 0x20, 0x20, 0x71, - 0x66, 0x79, 0x00, 0x2e, 0x02, 0xd1, 0x25, 0x79, - 0x00, 0x22, 0x0d, 0xe0, 0x25, 0x79, 0x29, 0x1c, - 0x30, 0x1c, 0xf7, 0xf7, 0x4f, 0xf8, 0x00, 0x29, - 0x01, 0xd1, 0x32, 0x1c, 0x3c, 0x00, 0x78, 0x96, - 0x00, 0x00, 0x04, 0xe0, 0x70, 0x43, 0x80, 0x19, - 0x05, 0x06, 0x2d, 0x0e, 0x32, 0x1c, 0xe0, 0x79, - 0x29, 0x1c, 0x00, 0xf0, 0xf2, 0xf9, 0x20, 0x7a, - 0x2f, 0x49, 0xc0, 0x07, 0xc0, 0x0f, 0x08, 0x60, - 0x2e, 0x48, 0x00, 0x78, 0xc0, 0x07, 0x43, 0xd5, - 0xa1, 0x79, 0x2c, 0x4a, 0xc8, 0x07, 0x48, 0xd4, - 0x2c, 0x4e, 0x16, 0x60, 0x8b, 0x07, 0x2b, 0x48, - 0x08, 0xd5, 0xcc, 0x08, 0x01, 0x23, 0x3c, 0x00, - 0xb4, 0x96, 0x00, 0x00, 0xa3, 0x40, 0x03, 0x60, - 0x49, 0x07, 0x04, 0xd5, 0x28, 0x49, 0x11, 0x60, - 0x01, 0xe0, 0x40, 0x21, 0x01, 0x60, 0x13, 0x68, - 0x26, 0x4a, 0xb3, 0x42, 0x10, 0xd1, 0x54, 0x68, - 0x01, 0x68, 0x0c, 0x43, 0x54, 0x60, 0x14, 0x68, - 0x0c, 0x40, 0x01, 0xd0, 0x51, 0x61, 0x00, 0xe0, - 0x91, 0x61, 0x54, 0x68, 0x0c, 0x43, 0x54, 0x60, - 0x94, 0x68, 0x21, 0x43, 0x91, 0x60, 0x13, 0xe0, - 0x3c, 0x00, 0xf0, 0x96, 0x00, 0x00, 0x54, 0x7c, - 0x01, 0x68, 0x0c, 0x43, 0x54, 0x74, 0x14, 0x7c, - 0x0c, 0x40, 0x03, 0xd0, 0x14, 0x7c, 0x0c, 0x43, - 0x14, 0x74, 0x02, 0xe0, 0x14, 0x7c, 0x8c, 0x43, - 0x14, 0x74, 0x54, 0x7c, 0x0c, 0x43, 0x54, 0x74, - 0x94, 0x7c, 0x21, 0x43, 0x91, 0x74, 0xb3, 0x42, - 0x05, 0xd1, 0x00, 0x22, 0x01, 0x68, 0x03, 0x20, - 0xff, 0xf7, 0x8d, 0xf8, 0x09, 0xe0, 0x00, 0x68, - 0x00, 0x21, 0x3c, 0x00, 0x2c, 0x97, 0x00, 0x00, - 0x02, 0x06, 0x12, 0x0e, 0x03, 0x20, 0xff, 0xf7, - 0x85, 0xf8, 0x01, 0xe0, 0x0b, 0x48, 0x10, 0x60, - 0x00, 0x20, 0x38, 0x71, 0x7d, 0x71, 0xf7, 0xf7, - 0xe9, 0xfd, 0x01, 0x20, 0xf8, 0xbd, 0x00, 0x00, - 0xcc, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00, - 0x5c, 0x5b, 0x01, 0x00, 0xb9, 0x9b, 0x00, 0x00, - 0x58, 0x5b, 0x01, 0x00, 0x95, 0x9b, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0x3c, 0x00, 0x68, 0x97, - 0x00, 0x00, 0x55, 0x9b, 0x00, 0x00, 0xb0, 0xb5, - 0x0d, 0x1c, 0x04, 0x30, 0x00, 0x24, 0xfe, 0xf7, - 0xd6, 0xfa, 0x01, 0x20, 0x6c, 0x60, 0xb0, 0xbd, - 0x00, 0x00, 0xf0, 0xb5, 0x07, 0x7a, 0x43, 0x68, - 0x04, 0x1c, 0x0e, 0x48, 0x0e, 0x1c, 0x00, 0x68, - 0x01, 0x25, 0x01, 0x1c, 0x9b, 0xb0, 0x06, 0xe0, - 0x4a, 0x68, 0x9a, 0x42, 0x02, 0xd1, 0x8f, 0x76, - 0x00, 0x25, 0x02, 0xe0, 0x09, 0x68, 0x3c, 0x00, - 0xa4, 0x97, 0x00, 0x00, 0x00, 0x29, 0xf6, 0xd1, - 0x00, 0x2d, 0x05, 0xd1, 0x21, 0x7a, 0x01, 0x29, - 0x02, 0xd1, 0x01, 0xa9, 0xf8, 0xf7, 0xa8, 0xf8, - 0x60, 0x68, 0x04, 0x36, 0x21, 0xc6, 0x1b, 0xb0, - 0x01, 0x20, 0xf0, 0xbd, 0xa4, 0x6e, 0x01, 0x00, - 0x10, 0xb5, 0x0c, 0x1c, 0x08, 0xf0, 0xae, 0xfc, - 0x60, 0x60, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0x10, 0xb5, 0x0c, 0x1c, 0x07, 0xf0, 0x84, 0xfa, - 0x3c, 0x00, 0xe0, 0x97, 0x00, 0x00, 0x04, 0xf0, - 0x54, 0xff, 0x00, 0x20, 0x60, 0x60, 0x01, 0x20, - 0x10, 0xbd, 0x00, 0x20, 0xc0, 0x43, 0x48, 0x60, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, - 0x0c, 0x1c, 0x00, 0x79, 0xfa, 0xf7, 0x07, 0xf8, - 0x00, 0x28, 0x01, 0xd0, 0x00, 0x20, 0x00, 0xe0, - 0x02, 0x20, 0x60, 0x60, 0x01, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0x1c, 0xb5, 0x06, 0x4c, 0x20, 0x68, - 0x00, 0x28, 0x3c, 0x00, 0x1c, 0x98, 0x00, 0x00, - 0x07, 0xd0, 0x09, 0xf0, 0xc5, 0xfa, 0x01, 0x90, - 0x20, 0x68, 0x41, 0x68, 0x68, 0x46, 0xf6, 0xf7, - 0xd6, 0xfd, 0x1c, 0xbd, 0xac, 0x79, 0x01, 0x00, - 0x01, 0x49, 0x08, 0x60, 0x70, 0x47, 0x00, 0x00, - 0xac, 0x79, 0x01, 0x00, 0x0e, 0xb5, 0x06, 0x4b, - 0x1b, 0x68, 0x00, 0x2b, 0x06, 0xd0, 0x02, 0x90, - 0x00, 0x91, 0x01, 0x92, 0x68, 0x46, 0xd9, 0x68, - 0xf6, 0xf7, 0xc1, 0xfd, 0x3c, 0x00, 0x58, 0x98, - 0x00, 0x00, 0x0e, 0xbd, 0x00, 0x00, 0xac, 0x79, - 0x01, 0x00, 0x1c, 0xb5, 0x04, 0x1c, 0x07, 0xf0, - 0x4c, 0xfa, 0x06, 0x48, 0x41, 0x68, 0x01, 0x31, - 0x41, 0x60, 0x00, 0x94, 0x00, 0x21, 0x01, 0x91, - 0x00, 0x68, 0x01, 0x68, 0x68, 0x46, 0xf6, 0xf7, - 0xad, 0xfd, 0x1c, 0xbd, 0x00, 0x00, 0xac, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0xf8, 0xf7, 0xa3, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x02, 0x1c, 0x3c, 0x00, - 0x94, 0x98, 0x00, 0x00, 0x80, 0x21, 0x03, 0x20, - 0x00, 0xf0, 0x5c, 0xf8, 0x01, 0x1c, 0x03, 0x48, - 0x00, 0x22, 0x43, 0x69, 0xf6, 0xf7, 0x9b, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xa4, 0x6d, 0x01, 0x00, - 0xf8, 0xb5, 0x0c, 0x1c, 0x13, 0x49, 0x05, 0x1c, - 0x08, 0x68, 0x16, 0x1c, 0x01, 0x30, 0x08, 0x60, - 0x00, 0x20, 0x20, 0x61, 0x22, 0x1c, 0x10, 0x32, - 0x28, 0x1d, 0x00, 0x21, 0x07, 0x1c, 0x00, 0x92, - 0x3c, 0x00, 0xd0, 0x98, 0x00, 0x00, 0x03, 0xf0, - 0xde, 0xfe, 0x20, 0x71, 0x20, 0x69, 0x00, 0x28, - 0x10, 0xd0, 0x01, 0x04, 0x09, 0x0c, 0x00, 0x20, - 0xf7, 0xf7, 0x79, 0xfe, 0x30, 0x60, 0x29, 0x1d, - 0x03, 0xc9, 0xa0, 0x60, 0xe1, 0x60, 0x30, 0x68, - 0x01, 0x68, 0x00, 0x9a, 0x38, 0x1c, 0x03, 0xf0, - 0xca, 0xfe, 0x20, 0x71, 0x01, 0x20, 0xf8, 0xbd, - 0x00, 0x00, 0x10, 0x75, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x1c, 0x3c, 0x00, 0x0c, 0x99, 0x00, 0x00, - 0x08, 0x21, 0x04, 0x20, 0x09, 0xf0, 0x4e, 0xff, - 0x03, 0x20, 0x80, 0xbd, 0x10, 0xb5, 0x07, 0x4a, - 0x0c, 0x1c, 0x51, 0x68, 0x01, 0x31, 0x51, 0x60, - 0x01, 0x1c, 0x10, 0x31, 0xc2, 0x68, 0x04, 0x30, - 0x03, 0xf0, 0xf0, 0xfe, 0x20, 0x71, 0x00, 0x20, - 0x10, 0xbd, 0x00, 0x00, 0x10, 0x75, 0x01, 0x00, - 0x04, 0x49, 0x80, 0xb5, 0x81, 0x61, 0x08, 0x21, - 0x02, 0x1c, 0x03, 0x20, 0x3c, 0x00, 0x48, 0x99, - 0x00, 0x00, 0x09, 0xf0, 0x32, 0xff, 0x03, 0x20, - 0x80, 0xbd, 0x95, 0xd8, 0x00, 0x00, 0xf7, 0xb5, - 0x07, 0x1c, 0x16, 0x1c, 0x06, 0x21, 0x00, 0x20, - 0x82, 0xb0, 0xf7, 0xf7, 0x3a, 0xfe, 0x05, 0x1c, - 0x20, 0x48, 0x00, 0x78, 0x06, 0x28, 0x00, 0xd9, - 0x28, 0x81, 0x2c, 0x68, 0x00, 0x20, 0xa7, 0x70, - 0x03, 0x99, 0xe1, 0x70, 0x31, 0x1c, 0x03, 0xe0, - 0x0a, 0x89, 0x10, 0x18, 0x0f, 0x1c, 0x3c, 0x00, - 0x84, 0x99, 0x00, 0x00, 0xc9, 0x68, 0x00, 0x29, - 0xf9, 0xd1, 0x6b, 0x46, 0x01, 0xaa, 0x21, 0x1d, - 0x00, 0xf0, 0x34, 0xf8, 0x00, 0xab, 0x18, 0x78, - 0x60, 0x71, 0x18, 0x78, 0x00, 0x28, 0x17, 0xd0, - 0x11, 0x48, 0x40, 0x68, 0x00, 0x28, 0x08, 0xd0, - 0x19, 0x78, 0x00, 0x20, 0xf7, 0xf7, 0x14, 0xfe, - 0x01, 0x1c, 0x38, 0x1c, 0xf7, 0xf7, 0x30, 0xfd, - 0x0a, 0xe0, 0x38, 0x68, 0x00, 0x28, 0x02, 0xd1, - 0x3c, 0x00, 0xc0, 0x99, 0x00, 0x00, 0x3f, 0x60, - 0x01, 0x20, 0xb8, 0x61, 0x00, 0xab, 0x19, 0x78, - 0x38, 0x89, 0x40, 0x18, 0x38, 0x81, 0x00, 0xab, - 0x98, 0x88, 0x31, 0x1c, 0x02, 0x38, 0x20, 0x80, - 0x28, 0x1c, 0xf7, 0xf7, 0x1c, 0xfd, 0x28, 0x1c, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xc8, 0x5c, - 0x01, 0x00, 0x01, 0x79, 0x42, 0x79, 0x00, 0x88, - 0x89, 0x18, 0x02, 0x39, 0x40, 0x1a, 0x70, 0x47, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x99, 0x00, 0x00, - 0x70, 0xb5, 0x08, 0x4d, 0x2c, 0x78, 0xad, 0x78, - 0x20, 0x18, 0x06, 0x1c, 0x00, 0x2d, 0x03, 0xd0, - 0x70, 0x19, 0x01, 0x38, 0x01, 0x3d, 0xa8, 0x43, - 0x10, 0x80, 0x80, 0x1b, 0x18, 0x70, 0x0c, 0x70, - 0x70, 0xbd, 0x00, 0x00, 0xc8, 0x5c, 0x01, 0x00, - 0xb0, 0xb5, 0x04, 0x68, 0x0c, 0x4a, 0x21, 0x88, - 0x52, 0x78, 0x02, 0x31, 0x91, 0x42, 0x11, 0xd2, - 0x55, 0x1a, 0xf7, 0xf7, 0x3c, 0x00, 0x38, 0x9a, - 0x00, 0x00, 0xc9, 0xfd, 0x01, 0x68, 0x00, 0x29, - 0x02, 0xd1, 0x00, 0x60, 0x01, 0x21, 0x81, 0x61, - 0x01, 0x89, 0x49, 0x19, 0x01, 0x81, 0x20, 0x88, - 0x40, 0x19, 0x20, 0x80, 0x60, 0x79, 0x40, 0x19, - 0x60, 0x71, 0xb0, 0xbd, 0x00, 0x00, 0xc8, 0x5c, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x06, 0x21, - 0xf1, 0x20, 0x09, 0xf0, 0xa2, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x1c, 0x02, 0x48, 0x3c, 0x00, - 0x74, 0x9a, 0x00, 0x00, 0x03, 0x70, 0x41, 0x70, - 0x82, 0x70, 0x70, 0x47, 0xc8, 0x5c, 0x01, 0x00, - 0xb0, 0xb5, 0x08, 0x1c, 0x09, 0x68, 0x15, 0x1c, - 0x8c, 0x78, 0xf7, 0xf7, 0x85, 0xfd, 0x04, 0x49, - 0xa0, 0x00, 0x09, 0x58, 0x00, 0x29, 0x02, 0xd0, - 0x28, 0x1c, 0xf6, 0xf7, 0x9e, 0xfc, 0xb0, 0xbd, - 0x84, 0x6d, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0xc0, 0x7a, 0xa1, 0x7a, 0xc6, 0x07, 0xf6, 0x0f, - 0x3c, 0x00, 0xb0, 0x9a, 0x00, 0x00, 0x32, 0x1c, - 0x20, 0x1d, 0x01, 0xf0, 0x3c, 0xf8, 0x60, 0x69, - 0x25, 0x4f, 0xc1, 0x07, 0x37, 0xd5, 0xb8, 0x69, - 0x00, 0x28, 0x01, 0xd0, 0xf6, 0xf7, 0x87, 0xfc, - 0x20, 0x68, 0x05, 0x68, 0x28, 0x88, 0x80, 0x07, - 0x34, 0xd1, 0x01, 0xaa, 0x02, 0xa9, 0x28, 0x1c, - 0x01, 0xf0, 0x0b, 0xfc, 0x28, 0x1c, 0x01, 0xf0, - 0x12, 0xfc, 0x00, 0x78, 0xc0, 0x07, 0x0a, 0xd4, - 0x60, 0x69, 0x3c, 0x00, 0xec, 0x9a, 0x00, 0x00, - 0x80, 0x07, 0x26, 0xd4, 0x33, 0x1c, 0x29, 0x1c, - 0xa2, 0x7a, 0x20, 0x69, 0x7d, 0x69, 0xf6, 0xf7, - 0x72, 0xfc, 0x1e, 0xe0, 0x00, 0xab, 0x18, 0x7a, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x28, 0x06, 0xd0, - 0x02, 0x28, 0x16, 0xd1, 0x28, 0x1c, 0x79, 0x6a, - 0xf6, 0xf7, 0x61, 0xfc, 0x11, 0xe0, 0x00, 0xab, - 0x18, 0x79, 0x0e, 0x28, 0x01, 0xd0, 0x0f, 0x28, - 0x0b, 0xd1, 0x28, 0x1c, 0x3c, 0x00, 0x28, 0x9b, - 0x00, 0x00, 0x39, 0x6a, 0xf6, 0xf7, 0x56, 0xfc, - 0x06, 0xe0, 0x00, 0x07, 0x80, 0x0f, 0x03, 0xd1, - 0x20, 0x69, 0xf9, 0x69, 0xf6, 0xf7, 0x4e, 0xfc, - 0x78, 0x6b, 0x21, 0x21, 0x01, 0x30, 0x78, 0x63, - 0x22, 0x1c, 0x80, 0x20, 0x09, 0xf0, 0x31, 0xfe, - 0xfe, 0xbd, 0x28, 0x7a, 0x01, 0x00, 0x0b, 0x49, - 0x18, 0xb5, 0x08, 0x78, 0xc0, 0x07, 0x11, 0xd5, - 0x0a, 0x4a, 0x10, 0x1c, 0x20, 0x30, 0x3c, 0x00, - 0x64, 0x9b, 0x00, 0x00, 0x84, 0x79, 0x00, 0xab, - 0x1c, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x08, 0x78, - 0x40, 0x23, 0x18, 0x43, 0x08, 0x70, 0x05, 0x48, - 0x00, 0x78, 0x08, 0x70, 0x00, 0xab, 0x18, 0x88, - 0xd0, 0x84, 0x18, 0xbd, 0x04, 0x00, 0x07, 0x00, - 0x00, 0x10, 0x07, 0x00, 0xe0, 0x60, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x05, 0x49, 0x10, 0xb5, - 0x88, 0x79, 0x05, 0x4b, 0x1a, 0x7c, 0x05, 0x4c, - 0x3c, 0x00, 0xa0, 0x9b, 0x00, 0x00, 0x24, 0x68, - 0x62, 0x40, 0x1a, 0x74, 0x88, 0x71, 0x10, 0xbd, - 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x58, 0x5b, 0x01, 0x00, 0x04, 0x49, - 0x0a, 0x68, 0x04, 0x48, 0x00, 0x68, 0x02, 0x40, - 0x01, 0xd0, 0x88, 0x61, 0x70, 0x47, 0x48, 0x61, - 0x70, 0x47, 0x10, 0x00, 0x07, 0x00, 0x58, 0x5b, - 0x01, 0x00, 0x02, 0x1c, 0x01, 0x20, 0x00, 0x06, - 0x08, 0x43, 0x3c, 0x00, 0xdc, 0x9b, 0x00, 0x00, - 0x80, 0xb5, 0x2a, 0x21, 0x09, 0xf0, 0xe6, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x00, 0x29, 0x03, 0xd0, 0x81, 0x29, 0x07, 0xd1, - 0x81, 0x20, 0x00, 0xe0, 0x80, 0x20, 0x22, 0x1c, - 0x2c, 0x21, 0x09, 0xf0, 0xd7, 0xfd, 0x10, 0xbd, - 0x02, 0x21, 0x2c, 0x20, 0xf7, 0xf7, 0x4c, 0xfb, - 0x20, 0x1c, 0xf7, 0xf7, 0xc3, 0xfc, 0x10, 0xbd, - 0x80, 0xb5, 0xb4, 0xb0, 0x3c, 0x00, 0x18, 0x9c, - 0x00, 0x00, 0x01, 0x28, 0x06, 0xd0, 0x82, 0x28, - 0x1c, 0xd1, 0x1a, 0xa8, 0x07, 0xf0, 0x35, 0xfc, - 0x34, 0xb0, 0x80, 0xbd, 0x81, 0x29, 0x13, 0xd1, - 0x0d, 0x48, 0x0c, 0x4a, 0x81, 0x69, 0x00, 0x68, - 0x50, 0x32, 0x81, 0x42, 0x02, 0xd0, 0xd1, 0x6a, - 0x01, 0x29, 0x02, 0xd0, 0x11, 0x78, 0x02, 0x29, - 0x02, 0xd1, 0x07, 0xf0, 0x0a, 0xf9, 0xeb, 0xe7, - 0x69, 0x46, 0xf7, 0xf7, 0x5a, 0xfe, 0x3c, 0x00, - 0x54, 0x9c, 0x00, 0x00, 0xe7, 0xe7, 0x01, 0x21, - 0x00, 0xe0, 0x02, 0x21, 0x18, 0x20, 0xf7, 0xf7, - 0x21, 0xfb, 0xe0, 0xe7, 0xa4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x68, 0x17, 0x4d, - 0x9a, 0xb0, 0x68, 0x63, 0x08, 0xf0, 0x3e, 0xfa, - 0x20, 0x79, 0x14, 0x49, 0x13, 0x4a, 0x50, 0x39, - 0x2c, 0x3a, 0x02, 0x28, 0x0a, 0xd1, 0x90, 0x68, - 0x80, 0x02, 0xa8, 0x61, 0xc8, 0x68, 0xe8, 0x61, - 0x3c, 0x00, 0x90, 0x9c, 0x00, 0x00, 0x02, 0x20, - 0x28, 0x72, 0x07, 0xf0, 0xe4, 0xf8, 0x1a, 0xb0, - 0xb0, 0xbd, 0x03, 0x1c, 0x00, 0x20, 0x00, 0x2b, - 0x0b, 0xd1, 0x52, 0x68, 0x92, 0x02, 0xaa, 0x61, - 0x0a, 0x1c, 0x89, 0x68, 0xe9, 0x61, 0x28, 0x72, - 0x10, 0x68, 0x69, 0x46, 0xf7, 0xf7, 0x27, 0xfe, - 0xed, 0xe7, 0xa8, 0x61, 0x01, 0x20, 0x28, 0x72, - 0x28, 0x70, 0x00, 0x20, 0x06, 0xf0, 0x7d, 0xfa, - 0xe5, 0xe7, 0x3c, 0x00, 0xcc, 0x9c, 0x00, 0x00, - 0xf4, 0x6e, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x07, 0x20, 0xf7, 0xf7, 0xe1, 0xfa, 0x80, 0xbd, - 0x70, 0x47, 0x00, 0x00, 0xf8, 0xb5, 0x00, 0x24, - 0x19, 0x4a, 0x00, 0x26, 0xd5, 0x68, 0x11, 0x68, - 0x04, 0x35, 0x08, 0x1c, 0x91, 0x60, 0x02, 0xe0, - 0x01, 0x1c, 0x40, 0x19, 0x08, 0x60, 0x53, 0x68, - 0x83, 0x42, 0xf9, 0xd8, 0x3c, 0x00, 0x08, 0x9d, - 0x00, 0x00, 0x01, 0x34, 0x10, 0x32, 0x03, 0x2c, - 0x0e, 0x60, 0xee, 0xd3, 0xf6, 0xf7, 0xf1, 0xff, - 0x10, 0x48, 0x10, 0x49, 0x12, 0x4c, 0x08, 0x60, - 0x10, 0x49, 0x00, 0x20, 0x01, 0x22, 0x19, 0x23, - 0x5b, 0x01, 0x0c, 0x25, 0x43, 0x43, 0x1b, 0x19, - 0x45, 0x43, 0x4a, 0x51, 0x1f, 0x1c, 0x6d, 0x18, - 0xab, 0x60, 0x6b, 0x60, 0x00, 0x25, 0x1e, 0x1c, - 0x14, 0x36, 0x9e, 0x60, 0x33, 0x1c, 0x3c, 0x00, - 0x44, 0x9d, 0x00, 0x00, 0x01, 0x35, 0x27, 0x2d, - 0xf8, 0xdb, 0x01, 0x30, 0x03, 0x28, 0x9f, 0x60, - 0xe8, 0xdb, 0xf8, 0xbd, 0x20, 0x57, 0x01, 0x00, - 0x14, 0xc8, 0x01, 0x00, 0xb4, 0xcf, 0x01, 0x00, - 0x18, 0xd9, 0x01, 0x00, 0xb8, 0xcf, 0x01, 0x00, - 0xb0, 0xb5, 0x07, 0x4c, 0x25, 0x1c, 0xc0, 0x35, - 0x28, 0x6b, 0x1e, 0x21, 0x00, 0xf0, 0xf2, 0xf9, - 0xa2, 0x6b, 0x20, 0x1c, 0xdc, 0x30, 0x29, 0x6b, - 0x3c, 0x00, 0x80, 0x9d, 0x00, 0x00, 0x00, 0xf0, - 0xb6, 0xf9, 0xb0, 0xbd, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x00, 0x20, 0x10, 0x22, 0x10, 0xb5, - 0x0a, 0x49, 0x05, 0xe0, 0x0c, 0x23, 0x43, 0x43, - 0x5c, 0x18, 0x0c, 0x34, 0xcc, 0x50, 0x01, 0x30, - 0x0f, 0x28, 0xf7, 0xd3, 0x0c, 0x23, 0x58, 0x43, - 0x09, 0x50, 0x04, 0x48, 0x41, 0x60, 0x01, 0x60, - 0x02, 0x82, 0x00, 0x21, 0x81, 0x60, 0xc1, 0x60, - 0x10, 0xbd, 0x3c, 0x00, 0xbc, 0x9d, 0x00, 0x00, - 0x84, 0xe2, 0x01, 0x00, 0x44, 0xe3, 0x01, 0x00, - 0x10, 0xb5, 0x08, 0x4c, 0xa0, 0x6a, 0x00, 0x28, - 0x03, 0xd1, 0x07, 0x48, 0xf9, 0xf7, 0xe8, 0xfe, - 0xa0, 0x62, 0x04, 0x48, 0x44, 0x30, 0x00, 0x68, - 0x01, 0x21, 0xf9, 0xf7, 0x95, 0xfc, 0x60, 0x62, - 0x10, 0xbd, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, - 0xcd, 0x26, 0x01, 0x00, 0xff, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x1e, 0x1c, 0x3c, 0x00, 0xf8, 0x9d, - 0x00, 0x00, 0x81, 0xb0, 0x0a, 0x9f, 0x1c, 0x21, - 0xf6, 0xf7, 0x4d, 0xfb, 0x03, 0x98, 0xa0, 0x61, - 0x25, 0x60, 0x25, 0x61, 0x26, 0x81, 0xa6, 0x82, - 0xe7, 0x60, 0x05, 0xb0, 0xf0, 0xbd, 0x70, 0xb5, - 0x0d, 0x1c, 0xa4, 0x21, 0x04, 0x1c, 0x08, 0x30, - 0xf6, 0xf7, 0x3d, 0xfb, 0x20, 0x1c, 0x44, 0x30, - 0x06, 0x22, 0x29, 0x1c, 0xf6, 0xf7, 0x65, 0xfb, - 0x18, 0x48, 0x3c, 0x23, 0x41, 0x1c, 0x3c, 0x00, - 0x34, 0x9e, 0x00, 0x00, 0x61, 0x62, 0x41, 0x78, - 0x59, 0x43, 0x09, 0x18, 0x89, 0x7a, 0x06, 0x29, - 0x01, 0xd1, 0xa0, 0x62, 0x02, 0xe0, 0x21, 0x1c, - 0x4d, 0x31, 0xa1, 0x62, 0x41, 0x78, 0x3c, 0x23, - 0x59, 0x43, 0x08, 0x18, 0x04, 0x30, 0x0f, 0x49, - 0x20, 0x62, 0x0b, 0x88, 0x00, 0x2b, 0x15, 0xd0, - 0xac, 0x20, 0x00, 0x5d, 0x0b, 0x4a, 0x18, 0x32, - 0x00, 0x02, 0x80, 0x18, 0xb0, 0x30, 0xe0, 0x60, - 0x3c, 0x00, 0x70, 0x9e, 0x00, 0x00, 0x8d, 0x68, - 0x00, 0x20, 0x08, 0xe0, 0xe2, 0x68, 0xc1, 0x00, - 0x54, 0x50, 0xe6, 0x68, 0x82, 0x00, 0x52, 0x19, - 0x71, 0x18, 0x4a, 0x60, 0x01, 0x30, 0x98, 0x42, - 0xf4, 0xdb, 0x70, 0xbd, 0x00, 0x00, 0x68, 0x61, - 0x01, 0x00, 0x58, 0x75, 0x01, 0x00, 0x1f, 0xb5, - 0x04, 0x1c, 0x60, 0x34, 0x61, 0x7a, 0x03, 0x1c, - 0x80, 0x6a, 0x08, 0x4a, 0x02, 0x91, 0x01, 0x90, - 0x03, 0x92, 0x3c, 0x00, 0xac, 0x9e, 0x00, 0x00, - 0xe2, 0x79, 0x18, 0x1c, 0x20, 0x30, 0x00, 0x92, - 0x44, 0x7b, 0x82, 0x7b, 0x5e, 0x20, 0xc1, 0x5a, - 0x18, 0x69, 0x04, 0x30, 0x23, 0x1c, 0x02, 0xf0, - 0x7f, 0xfe, 0x1f, 0xbd, 0x39, 0x4e, 0x00, 0x00, - 0xb0, 0xb5, 0x0b, 0x1c, 0x01, 0x88, 0x69, 0x20, - 0xc0, 0x5c, 0x86, 0xb0, 0x0e, 0x4a, 0x04, 0x91, - 0x03, 0x90, 0x05, 0x92, 0x0d, 0x4d, 0x59, 0x6a, - 0x9a, 0x6a, 0x2d, 0x68, 0x3c, 0x00, 0xe8, 0x9e, - 0x00, 0x00, 0x01, 0x24, 0x00, 0x2d, 0x00, 0xd0, - 0x04, 0x1c, 0x0a, 0x48, 0x00, 0x5d, 0x01, 0x91, - 0x02, 0x92, 0x00, 0x90, 0x18, 0x1c, 0x20, 0x30, - 0x44, 0x7b, 0x82, 0x7b, 0x5e, 0x20, 0xc1, 0x5a, - 0x18, 0x69, 0x04, 0x30, 0x23, 0x1c, 0x02, 0xf0, - 0xa4, 0xfe, 0x06, 0xb0, 0xb0, 0xbd, 0x51, 0x4f, - 0x00, 0x00, 0x18, 0x67, 0x01, 0x00, 0x0a, 0x61, - 0x01, 0x00, 0x01, 0x89, 0x8a, 0x1c, 0x3c, 0x00, - 0x24, 0x9f, 0x00, 0x00, 0x02, 0x81, 0x02, 0x68, - 0x02, 0x3a, 0x02, 0x60, 0x08, 0x0a, 0x09, 0x02, - 0x08, 0x43, 0x10, 0x80, 0x70, 0x47, 0x00, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x08, 0x78, 0x0e, 0x1c, - 0xff, 0x28, 0x14, 0xd0, 0x71, 0x78, 0x02, 0x31, - 0x00, 0x20, 0xf7, 0xf7, 0x45, 0xfb, 0x04, 0x1c, - 0x02, 0x89, 0x00, 0x68, 0x31, 0x1c, 0xf6, 0xf7, - 0xcf, 0xfa, 0x00, 0x2d, 0x06, 0xd0, 0x28, 0x1c, - 0x3c, 0x00, 0x60, 0x9f, 0x00, 0x00, 0xf7, 0xf7, - 0x34, 0xfb, 0x21, 0x1c, 0xf7, 0xf7, 0x57, 0xfa, - 0x00, 0xe0, 0x25, 0x1c, 0x28, 0x1c, 0x70, 0xbd, - 0x00, 0x00, 0xff, 0xb5, 0x0f, 0x1c, 0x1e, 0x1c, - 0x04, 0x1c, 0x98, 0x1c, 0x01, 0x04, 0x09, 0x0c, - 0x00, 0x20, 0x81, 0xb0, 0xf7, 0xf7, 0x27, 0xfb, - 0x05, 0x1c, 0x00, 0x68, 0x00, 0x2c, 0x38, 0x60, - 0x03, 0x99, 0x01, 0x70, 0x38, 0x68, 0x46, 0x70, - 0x06, 0xd0, 0x3c, 0x00, 0x9c, 0x9f, 0x00, 0x00, - 0x20, 0x1c, 0xf7, 0xf7, 0x15, 0xfb, 0x29, 0x1c, - 0xf7, 0xf7, 0x38, 0xfa, 0x00, 0xe0, 0x2c, 0x1c, - 0x20, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0x70, 0xb5, 0x10, 0x48, 0x04, 0x68, 0x04, 0x60, - 0x0f, 0x49, 0x20, 0x20, 0x08, 0x60, 0xa0, 0x05, - 0x0e, 0x4e, 0x02, 0xd5, 0x70, 0x6a, 0xf6, 0xf7, - 0x05, 0xfa, 0xe0, 0x01, 0x02, 0xd5, 0x30, 0x6e, - 0xf6, 0xf7, 0x00, 0xfa, 0x3c, 0x00, 0xd8, 0x9f, - 0x00, 0x00, 0x0a, 0x48, 0x04, 0x40, 0x00, 0x25, - 0x07, 0xe0, 0xe0, 0x07, 0x03, 0xd5, 0xa8, 0x00, - 0x30, 0x58, 0xf6, 0xf7, 0xf6, 0xf9, 0x01, 0x35, - 0x64, 0x08, 0x00, 0x2c, 0xf5, 0xd1, 0x70, 0xbd, - 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0xff, 0xfd, - 0xff, 0xfe, 0x80, 0xb5, 0x07, 0x21, 0x80, 0x20, - 0xf7, 0xf7, 0x49, 0xf9, 0x80, 0xbd, 0x3c, 0x00, - 0x14, 0xa0, 0x00, 0x00, 0xf8, 0xb5, 0x14, 0x4b, - 0x82, 0x00, 0x9c, 0x58, 0xca, 0x06, 0x01, 0x27, - 0x39, 0x1c, 0xd2, 0x0e, 0x91, 0x40, 0x11, 0x4a, - 0x11, 0x60, 0x11, 0x4e, 0x40, 0x00, 0x85, 0x19, - 0x15, 0xe0, 0x60, 0x60, 0x20, 0x7b, 0xc1, 0x00, - 0x89, 0x19, 0x10, 0x31, 0x0a, 0x78, 0x0d, 0x23, - 0x9a, 0x43, 0x0a, 0x70, 0x39, 0x1c, 0x81, 0x40, - 0x31, 0x73, 0x07, 0x49, 0x00, 0x01, 0x08, 0x31, - 0x3c, 0x00, 0x50, 0xa0, 0x00, 0x00, 0x40, 0x18, - 0x08, 0x4a, 0x41, 0x68, 0x42, 0x60, 0x80, 0x68, - 0xf6, 0xf7, 0xbe, 0xf9, 0x28, 0x7b, 0x00, 0x28, - 0xe6, 0xd1, 0xf8, 0xbd, 0x00, 0x00, 0xa4, 0x73, - 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x60, - 0x07, 0x00, 0xd1, 0x75, 0x00, 0x00, 0x03, 0x49, - 0x01, 0x20, 0x09, 0x7a, 0x00, 0x29, 0x00, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x04, 0x7a, - 0x01, 0x00, 0x3c, 0x00, 0x8c, 0xa0, 0x00, 0x00, - 0x03, 0x49, 0x01, 0x20, 0x89, 0x7a, 0x00, 0x29, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0xb0, 0xb5, 0x00, 0x24, - 0xfa, 0xf7, 0x76, 0xfc, 0x00, 0x28, 0x14, 0xd0, - 0x01, 0x24, 0x08, 0xf0, 0x7d, 0xfe, 0x0a, 0x4d, - 0x0a, 0x4b, 0x00, 0x21, 0x5a, 0x18, 0xa0, 0x32, - 0x12, 0x78, 0x10, 0x2a, 0x06, 0xd3, 0x8a, 0x00, - 0xd2, 0x18, 0x92, 0x6f, 0x3c, 0x00, 0xc8, 0xa0, - 0x00, 0x00, 0x82, 0x1a, 0xaa, 0x42, 0x00, 0xd2, - 0x00, 0x24, 0x01, 0x31, 0x03, 0x29, 0xf0, 0xd3, - 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, 0x8b, 0x08, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x01, 0x48, - 0xc0, 0x68, 0x70, 0x47, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x16, 0x1c, 0xfd, 0xf7, 0x2e, 0xfe, 0x00, 0x20, - 0xe0, 0x60, 0x26, 0x61, 0xa5, 0x60, 0x3c, 0x00, - 0x04, 0xa1, 0x00, 0x00, 0x70, 0xbd, 0x00, 0x00, - 0xf8, 0xb5, 0x17, 0x1c, 0x0e, 0x1c, 0x04, 0x1c, - 0x00, 0x28, 0x01, 0xd0, 0x00, 0x2e, 0x01, 0xd1, - 0xf7, 0xf7, 0xf2, 0xf8, 0xa0, 0x68, 0x07, 0xf0, - 0x49, 0xf9, 0x05, 0x1c, 0x01, 0xd1, 0xf7, 0xf7, - 0xeb, 0xf8, 0x29, 0x1c, 0x6e, 0x60, 0xaf, 0x60, - 0x20, 0x1c, 0xfd, 0xf7, 0xfd, 0xfd, 0xe0, 0x68, - 0x41, 0x1c, 0xe1, 0x60, 0x00, 0x28, 0x03, 0xd1, - 0x3c, 0x00, 0x40, 0xa1, 0x00, 0x00, 0x05, 0x48, - 0x21, 0x69, 0x05, 0xf0, 0x2c, 0xf9, 0x20, 0x68, - 0xa8, 0x42, 0x02, 0xd1, 0x38, 0x1c, 0xf6, 0xf7, - 0x48, 0xf9, 0xf8, 0xbd, 0x00, 0x00, 0xc4, 0x60, - 0x01, 0x00, 0x00, 0x22, 0x01, 0x39, 0x10, 0xb5, - 0x05, 0xe0, 0x0c, 0x23, 0x53, 0x43, 0x1c, 0x18, - 0x0c, 0x34, 0xc4, 0x50, 0x01, 0x32, 0x8a, 0x42, - 0xf7, 0xd3, 0x00, 0x21, 0x0c, 0x23, 0x5a, 0x43, - 0x81, 0x50, 0x3c, 0x00, 0x7c, 0xa1, 0x00, 0x00, - 0x10, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x01, 0xd1, 0xf7, 0xf7, 0xbb, 0xf8, 0x20, 0x1c, - 0xfd, 0xf7, 0xda, 0xfd, 0x01, 0x1c, 0x85, 0x68, - 0xa0, 0x68, 0x07, 0xf0, 0x09, 0xf9, 0xe0, 0x68, - 0x01, 0x38, 0xe0, 0x60, 0x03, 0xd1, 0x06, 0x48, - 0x21, 0x69, 0x05, 0xf0, 0xe7, 0xf8, 0x21, 0x68, - 0x00, 0x29, 0x03, 0xd0, 0x88, 0x68, 0x49, 0x68, - 0xf6, 0xf7, 0x11, 0xf9, 0x3c, 0x00, 0xb8, 0xa1, - 0x00, 0x00, 0x28, 0x1c, 0xb0, 0xbd, 0xc4, 0x60, - 0x01, 0x00, 0x01, 0x21, 0x00, 0x28, 0x8c, 0xb5, - 0x00, 0xd1, 0x00, 0x21, 0x0e, 0x20, 0x09, 0xf0, - 0x32, 0xfa, 0x83, 0x20, 0x00, 0xab, 0x18, 0x80, - 0x00, 0x20, 0x04, 0xf0, 0x0c, 0xf8, 0x01, 0x90, - 0x68, 0x46, 0x03, 0xf0, 0x7a, 0xf9, 0x8c, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x08, 0xf0, 0xdf, 0xfd, - 0x06, 0x49, 0x0a, 0x89, 0x06, 0x49, 0x3c, 0x00, - 0xf4, 0xa1, 0x00, 0x00, 0x09, 0x6e, 0x41, 0x1a, - 0x0b, 0x0c, 0x59, 0x18, 0x89, 0x1a, 0x09, 0x04, - 0x09, 0x0c, 0x40, 0x1a, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x90, 0x07, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x70, 0xb5, 0x04, 0x1c, 0x88, 0x7e, 0x0d, 0x1c, - 0x20, 0x28, 0x03, 0xd9, 0x03, 0x21, 0x18, 0x20, - 0xf7, 0xf7, 0x40, 0xf8, 0x00, 0x26, 0x26, 0x76, - 0xa8, 0x7e, 0x29, 0x1c, 0x1b, 0x31, 0x60, 0x76, - 0x3c, 0x00, 0x30, 0xa2, 0x00, 0x00, 0x20, 0x1c, - 0x1d, 0x30, 0xaa, 0x7e, 0xf6, 0xf7, 0x5f, 0xf9, - 0x68, 0x68, 0x29, 0x1c, 0x60, 0x60, 0xa8, 0x68, - 0x13, 0x31, 0xa0, 0x60, 0xa8, 0x7b, 0x06, 0x22, - 0x20, 0x73, 0xe8, 0x7b, 0x60, 0x73, 0x28, 0x7c, - 0xa0, 0x73, 0x68, 0x7c, 0xe0, 0x73, 0xa8, 0x89, - 0x20, 0x82, 0xa8, 0x7c, 0xe0, 0x76, 0x26, 0x77, - 0x20, 0x1c, 0x12, 0x30, 0xa6, 0x76, 0xf6, 0xf7, - 0x46, 0xf9, 0x3c, 0x00, 0x6c, 0xa2, 0x00, 0x00, - 0x60, 0x68, 0x43, 0x1c, 0x1d, 0xd0, 0x11, 0x4d, - 0x6d, 0x61, 0x28, 0x68, 0x00, 0x28, 0x1a, 0xd0, - 0x22, 0x7b, 0x01, 0x1c, 0x0b, 0x7b, 0x9a, 0x42, - 0x01, 0xd3, 0x20, 0x60, 0x14, 0xe0, 0x0b, 0x1c, - 0x09, 0x68, 0x00, 0x29, 0x0b, 0xd0, 0x0e, 0x7b, - 0xb2, 0x42, 0x08, 0xd2, 0x0b, 0x68, 0x00, 0x2b, - 0xf0, 0xd0, 0x1e, 0x7b, 0xb2, 0x42, 0xed, 0xd3, - 0x23, 0x60, 0x0c, 0x60, 0x3c, 0x00, 0xa8, 0xa2, - 0x00, 0x00, 0x01, 0xe0, 0x21, 0x60, 0x1c, 0x60, - 0x00, 0x20, 0x70, 0xbd, 0x26, 0x60, 0x2c, 0x60, - 0xfa, 0xe7, 0xa4, 0x6e, 0x01, 0x00, 0x13, 0x4a, - 0xb0, 0xb5, 0x51, 0x68, 0x01, 0x24, 0x00, 0x29, - 0x1e, 0xd0, 0x13, 0x1d, 0xd1, 0x61, 0x13, 0x62, - 0x43, 0x68, 0x04, 0xe0, 0x10, 0x62, 0x00, 0x68, - 0xd0, 0x61, 0x00, 0x28, 0x14, 0xd0, 0xd0, 0x69, - 0x45, 0x68, 0x9d, 0x42, 0xf6, 0xd1, 0x3c, 0x00, - 0xe4, 0xa2, 0x00, 0x00, 0x10, 0x6a, 0x81, 0x42, - 0x04, 0xd1, 0x51, 0x60, 0xd0, 0x69, 0x00, 0x68, - 0x08, 0x60, 0x02, 0xe0, 0xd1, 0x69, 0x09, 0x68, - 0x01, 0x60, 0xd0, 0x69, 0xfc, 0xf7, 0xce, 0xff, - 0x00, 0x28, 0x00, 0xd0, 0x00, 0x24, 0x20, 0x1c, - 0xb0, 0xbd, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x17, 0x4d, 0x01, 0x24, 0x29, 0x68, - 0x00, 0x29, 0x27, 0xd0, 0x6d, 0x61, 0x29, 0x61, - 0x3c, 0x00, 0x20, 0xa3, 0x00, 0x00, 0x43, 0x68, - 0x04, 0xe0, 0x68, 0x61, 0x00, 0x68, 0x28, 0x61, - 0x00, 0x28, 0x1d, 0xd0, 0x28, 0x69, 0x42, 0x68, - 0x9a, 0x42, 0xf6, 0xd1, 0xaa, 0x69, 0x2b, 0x69, - 0x9a, 0x42, 0x00, 0xd1, 0xa9, 0x61, 0x6a, 0x69, - 0x91, 0x42, 0x03, 0xd1, 0x29, 0x60, 0x00, 0x68, - 0x08, 0x60, 0x06, 0xe0, 0x00, 0x68, 0x10, 0x60, - 0x28, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x07, 0xf0, - 0xcc, 0xfe, 0x3c, 0x00, 0x5c, 0xa3, 0x00, 0x00, - 0x28, 0x69, 0xfc, 0xf7, 0x9d, 0xff, 0x00, 0x28, - 0x02, 0xd0, 0x00, 0x24, 0x00, 0xe0, 0x01, 0x24, - 0x20, 0x1c, 0xb0, 0xbd, 0xa4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x07, 0x48, 0x44, 0x68, - 0x07, 0xe0, 0x21, 0x1c, 0x44, 0x31, 0x28, 0x1c, - 0x00, 0xf0, 0xd6, 0xfc, 0x00, 0x28, 0x02, 0xd1, - 0x64, 0x68, 0x00, 0x2c, 0xf5, 0xd1, 0x20, 0x1c, - 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xa3, - 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0x70, 0xb5, - 0x0d, 0x1c, 0x14, 0x1c, 0x00, 0x28, 0x0b, 0x4e, - 0x08, 0xd0, 0x70, 0x6e, 0x06, 0x23, 0x58, 0x43, - 0x02, 0x04, 0x12, 0x0c, 0x31, 0x1c, 0x28, 0x1c, - 0x22, 0x80, 0x07, 0xe0, 0x21, 0x88, 0x06, 0x20, - 0xf6, 0xf7, 0xa7, 0xf9, 0x70, 0x66, 0x22, 0x88, - 0x29, 0x1c, 0x30, 0x1c, 0xf6, 0xf7, 0x95, 0xf8, - 0x01, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xa3, 0x00, 0x00, 0x10, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x03, 0x28, 0x03, 0xd8, 0x04, 0x4a, - 0xc0, 0x00, 0x11, 0x50, 0x80, 0xbd, 0x01, 0x21, - 0x26, 0x20, 0xf6, 0xf7, 0x5b, 0xff, 0x80, 0xbd, - 0x7c, 0x79, 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x1c, - 0xc0, 0x68, 0x01, 0x89, 0x39, 0x29, 0x39, 0xd3, - 0x04, 0x68, 0xa0, 0x79, 0x88, 0x28, 0x35, 0xd1, - 0xe0, 0x79, 0x8e, 0x28, 0x32, 0xd1, 0x20, 0x7a, - 0x3c, 0x00, 0x10, 0xa4, 0x00, 0x00, 0x01, 0x28, - 0x2f, 0xd1, 0x60, 0x7a, 0x03, 0x28, 0x2c, 0xd1, - 0x20, 0x7b, 0x02, 0x28, 0x01, 0xd0, 0xfe, 0x28, - 0x27, 0xd1, 0x60, 0x7b, 0x1d, 0x21, 0x08, 0x40, - 0x01, 0x28, 0x22, 0xd1, 0xa0, 0x7b, 0xc8, 0x21, - 0x08, 0x40, 0x08, 0x28, 0x1d, 0xd1, 0xa8, 0x1d, - 0xfb, 0xf7, 0xe1, 0xf9, 0x00, 0x28, 0x18, 0xd0, - 0x19, 0x20, 0x21, 0x5c, 0x00, 0x29, 0x14, 0xd1, - 0x01, 0x30, 0x3c, 0x00, 0x4c, 0xa4, 0x00, 0x00, - 0x39, 0x28, 0xf9, 0xdb, 0x68, 0x8b, 0x04, 0x21, - 0x08, 0x43, 0x68, 0x83, 0x03, 0xf0, 0xd6, 0xfe, - 0x00, 0x28, 0x09, 0xd1, 0x00, 0x23, 0x00, 0x22, - 0x26, 0x20, 0x04, 0x49, 0x09, 0xf0, 0x92, 0xf9, - 0x03, 0x48, 0x00, 0x68, 0x01, 0xf0, 0x84, 0xf9, - 0xb0, 0xbd, 0x00, 0x00, 0x50, 0xc3, 0x00, 0x00, - 0x0c, 0x79, 0x01, 0x00, 0xb0, 0xb5, 0x08, 0x4c, - 0xa3, 0x68, 0x01, 0x33, 0x3c, 0x00, 0x88, 0xa4, - 0x00, 0x00, 0xa3, 0x60, 0x0c, 0x1c, 0x09, 0xd0, - 0x25, 0x68, 0x00, 0x2d, 0x03, 0xd0, 0x23, 0x7a, - 0x61, 0x68, 0xf5, 0xf7, 0xa3, 0xff, 0x20, 0x1c, - 0xf7, 0xf7, 0xa9, 0xf9, 0xb0, 0xbd, 0x94, 0x79, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0xc0, 0x68, - 0x01, 0x89, 0x05, 0x68, 0x08, 0x29, 0x53, 0xd3, - 0x06, 0x22, 0x28, 0x1c, 0x55, 0x49, 0xf5, 0xf7, - 0x9e, 0xff, 0x00, 0x28, 0x37, 0xd1, 0x3c, 0x00, - 0xc4, 0xa4, 0x00, 0x00, 0xe9, 0x88, 0x52, 0x4e, - 0x04, 0x3e, 0x81, 0x29, 0x24, 0xd1, 0xe5, 0x68, - 0x29, 0x68, 0x08, 0x7a, 0x4a, 0x7a, 0x00, 0x02, - 0x80, 0x18, 0x00, 0x04, 0x00, 0x0c, 0x42, 0x0b, - 0x00, 0x05, 0x00, 0x0d, 0xe2, 0x75, 0x20, 0x83, - 0x4b, 0x89, 0x00, 0x20, 0x42, 0x00, 0xb2, 0x5a, - 0x9a, 0x42, 0x06, 0xd1, 0x28, 0x89, 0x0c, 0x38, - 0x02, 0x0a, 0x00, 0x02, 0x10, 0x43, 0x48, 0x81, - 0x3c, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x02, 0xe0, - 0x01, 0x30, 0x02, 0x28, 0xf1, 0xd3, 0xe0, 0x68, - 0x01, 0x89, 0x0a, 0x39, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x0a, 0x31, 0x1c, 0xe0, 0x00, 0x22, - 0x00, 0x20, 0x43, 0x00, 0xf3, 0x5a, 0x8b, 0x42, - 0x01, 0xd1, 0x01, 0x22, 0x02, 0xe0, 0x01, 0x30, - 0x02, 0x28, 0xf6, 0xd3, 0x00, 0x2a, 0x11, 0xd1, - 0x07, 0xe0, 0x36, 0x49, 0x06, 0x22, 0x06, 0x31, - 0x28, 0x1c, 0x3c, 0x00, 0x3c, 0xa5, 0x00, 0x00, - 0xf5, 0xf7, 0x5e, 0xff, 0x00, 0x28, 0x08, 0xd1, - 0xe0, 0x68, 0x01, 0x89, 0x06, 0x39, 0x01, 0x81, - 0xe0, 0x68, 0x01, 0x68, 0x06, 0x31, 0x01, 0x60, - 0x10, 0xe0, 0xe0, 0x68, 0xff, 0xf7, 0xe2, 0xfc, - 0x0c, 0xe0, 0x02, 0x31, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x02, 0x39, 0x01, 0x60, 0xe0, 0x68, - 0x00, 0x89, 0x02, 0x38, 0x02, 0x0a, 0x00, 0x02, - 0x10, 0x43, 0x08, 0x80, 0x3c, 0x00, 0x78, 0xa5, - 0x00, 0x00, 0xe0, 0x68, 0x03, 0x25, 0x02, 0x89, - 0x01, 0x68, 0x24, 0x4e, 0x02, 0x2a, 0x10, 0xd9, - 0x09, 0x88, 0x08, 0x29, 0x05, 0xd0, 0xc1, 0x23, - 0xdb, 0x00, 0x99, 0x42, 0x03, 0xd1, 0x01, 0x25, - 0x02, 0xe0, 0x00, 0x25, 0x00, 0xe0, 0x02, 0x25, - 0xe9, 0x00, 0x71, 0x58, 0x00, 0x29, 0x00, 0xd1, - 0x02, 0x25, 0xf7, 0xf7, 0x04, 0xf8, 0xe9, 0x00, - 0x89, 0x19, 0x89, 0x88, 0x88, 0x42, 0x3c, 0x00, - 0xb4, 0xa5, 0x00, 0x00, 0x00, 0xd9, 0x03, 0x25, - 0xa1, 0x1d, 0x20, 0x1c, 0xfd, 0xf7, 0x34, 0xfc, - 0x00, 0x28, 0x00, 0xd1, 0x03, 0x25, 0x02, 0x2d, - 0x05, 0xd0, 0x03, 0x2d, 0x07, 0xd1, 0xe0, 0x68, - 0xf6, 0xf7, 0xe2, 0xff, 0x70, 0xbd, 0x20, 0x1c, - 0xfd, 0xf7, 0x1c, 0xfd, 0x70, 0xbd, 0xe0, 0x68, - 0x01, 0x89, 0x02, 0x39, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x02, 0x31, 0x01, 0x60, 0xe8, 0x00, - 0x3c, 0x00, 0xf0, 0xa5, 0x00, 0x00, 0x31, 0x58, - 0x20, 0x1c, 0xf5, 0xf7, 0xf1, 0xfe, 0x00, 0x28, - 0xef, 0xd1, 0xe0, 0x68, 0x01, 0x89, 0x02, 0x31, - 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, 0x02, 0x39, - 0x01, 0x60, 0xe3, 0xe7, 0x00, 0x00, 0x6a, 0x46, - 0x01, 0x00, 0x7c, 0x79, 0x01, 0x00, 0x70, 0xb5, - 0x0e, 0x1c, 0x04, 0x1c, 0x15, 0x1c, 0xf7, 0xf7, - 0x8c, 0xfb, 0x00, 0x28, 0x2a, 0xd0, 0x1b, 0x49, - 0x08, 0x68, 0x3c, 0x00, 0x2c, 0xa6, 0x00, 0x00, - 0x01, 0x30, 0x08, 0x60, 0x00, 0x2e, 0x0a, 0xd0, - 0x01, 0x2e, 0x0b, 0xd0, 0x02, 0x2e, 0x0f, 0xd1, - 0x20, 0x1c, 0x04, 0xf0, 0xcd, 0xf8, 0x20, 0x1c, - 0xff, 0xf7, 0xd6, 0xfe, 0x0c, 0xe0, 0x08, 0x21, - 0xe0, 0x68, 0x02, 0xe0, 0xc1, 0x21, 0xe0, 0x68, - 0xc9, 0x00, 0x04, 0xf0, 0x35, 0xf9, 0x03, 0xe0, - 0x02, 0x21, 0x26, 0x20, 0xf6, 0xf7, 0x20, 0xfe, - 0xe2, 0x7d, 0xe1, 0x6a, 0x3c, 0x00, 0x68, 0xa6, - 0x00, 0x00, 0x28, 0x1c, 0xfc, 0xf7, 0x95, 0xfb, - 0x20, 0x63, 0x00, 0x20, 0x20, 0x62, 0xa0, 0x62, - 0x20, 0x1c, 0x00, 0xf0, 0x6c, 0xfe, 0x70, 0xbd, - 0xe0, 0x68, 0xf6, 0xf7, 0x8a, 0xff, 0x00, 0x2d, - 0xf9, 0xd0, 0xe3, 0x7d, 0x00, 0x22, 0x01, 0x20, - 0xe1, 0x6a, 0xf5, 0xf7, 0xa7, 0xfe, 0x70, 0xbd, - 0x00, 0x00, 0x94, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x28, 0x04, 0xd1, 0x05, 0x48, 0x3c, 0x00, - 0xa4, 0xa6, 0x00, 0x00, 0x00, 0x68, 0x01, 0xf0, - 0x09, 0xf9, 0x80, 0xbd, 0x03, 0x21, 0x26, 0x20, - 0xf6, 0xf7, 0xf8, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x0c, 0x79, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x80, 0x79, 0x00, 0x24, 0xc0, 0x07, 0x2d, 0xd5, - 0xf0, 0x68, 0x00, 0x68, 0x41, 0x7a, 0x11, 0x29, - 0x28, 0xd1, 0xc1, 0x88, 0x0a, 0x0a, 0x09, 0x02, - 0x11, 0x43, 0xc9, 0x04, 0x22, 0xd1, 0x01, 0x78, - 0x3c, 0x00, 0xe0, 0xa6, 0x00, 0x00, 0x11, 0x4f, - 0x09, 0x07, 0x89, 0x0e, 0x08, 0x18, 0x41, 0x88, - 0x0a, 0x0a, 0x09, 0x02, 0x11, 0x43, 0x0d, 0x04, - 0x2d, 0x0c, 0x43, 0x2d, 0x39, 0x68, 0x01, 0xd1, - 0xca, 0x07, 0x0e, 0xd4, 0x44, 0x2d, 0x06, 0xd1, - 0xc9, 0x07, 0x04, 0xd5, 0x24, 0x30, 0x00, 0xf0, - 0x22, 0xfb, 0x00, 0x28, 0x05, 0xd0, 0x06, 0x48, - 0x85, 0x42, 0x06, 0xd1, 0x38, 0x68, 0x80, 0x07, - 0x03, 0xd5, 0x3c, 0x00, 0x1c, 0xa7, 0x00, 0x00, - 0x01, 0x24, 0xf0, 0x68, 0xf6, 0xf7, 0x3a, 0xff, - 0x20, 0x1c, 0xf8, 0xbd, 0x7c, 0x5a, 0x01, 0x00, - 0x6c, 0x07, 0x00, 0x00, 0x80, 0xb5, 0x00, 0x28, - 0x07, 0xd0, 0x00, 0x21, 0x26, 0x20, 0x08, 0xf0, - 0x7b, 0xff, 0x02, 0x48, 0x00, 0x68, 0x01, 0xf0, - 0xbb, 0xf8, 0x80, 0xbd, 0x0c, 0x79, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x09, 0x4a, 0x08, 0x1c, - 0x51, 0x68, 0x01, 0x31, 0x3c, 0x00, 0x58, 0xa7, - 0x00, 0x00, 0x51, 0x60, 0x00, 0x21, 0x21, 0x62, - 0xa1, 0x62, 0xe2, 0x7d, 0xe1, 0x6a, 0xfc, 0xf7, - 0x18, 0xfb, 0x20, 0x63, 0x20, 0x1c, 0xf7, 0xf7, - 0xe6, 0xfa, 0x20, 0x1c, 0x00, 0xf0, 0xef, 0xfd, - 0x10, 0xbd, 0x94, 0x79, 0x01, 0x00, 0x0c, 0xb5, - 0x02, 0x1c, 0x08, 0x1c, 0x00, 0x21, 0x01, 0x91, - 0x00, 0x92, 0x6a, 0x46, 0x01, 0xa9, 0x00, 0xf0, - 0x02, 0xf8, 0x0c, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xa7, 0x00, 0x00, 0x70, 0xb5, 0x13, 0x68, - 0x00, 0x2b, 0x1e, 0xd0, 0x00, 0x26, 0x0b, 0x68, - 0x00, 0x2b, 0x02, 0xd1, 0x13, 0x68, 0x1b, 0x68, - 0x0b, 0x60, 0x13, 0x68, 0x1c, 0x68, 0x1b, 0x89, - 0xe5, 0x18, 0x08, 0xe0, 0x5c, 0x78, 0x1c, 0x19, - 0x02, 0x34, 0x0c, 0x60, 0x1c, 0x78, 0x84, 0x42, - 0x01, 0xd1, 0x18, 0x1c, 0x70, 0xbd, 0x0b, 0x68, - 0xab, 0x42, 0xf3, 0xd3, 0x13, 0x68, 0xdb, 0x68, - 0x3c, 0x00, 0xd0, 0xa7, 0x00, 0x00, 0x13, 0x60, - 0x0e, 0x60, 0x13, 0x68, 0x00, 0x2b, 0xe1, 0xd1, - 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x70, 0xb5, - 0x03, 0x1c, 0x20, 0xd0, 0x18, 0x68, 0x1e, 0x89, - 0x05, 0x1c, 0x16, 0xe0, 0x04, 0x78, 0xdd, 0x2c, - 0x10, 0xd1, 0x84, 0x78, 0x00, 0x2c, 0x0d, 0xd1, - 0xc4, 0x78, 0x50, 0x2c, 0x0a, 0xd1, 0x04, 0x79, - 0xf2, 0x2c, 0x07, 0xd1, 0x44, 0x79, 0x8c, 0x42, - 0x04, 0xd1, 0x3c, 0x00, 0x0c, 0xa8, 0x00, 0x00, - 0x02, 0x29, 0x0c, 0xd1, 0x84, 0x79, 0x94, 0x42, - 0x09, 0xd0, 0x44, 0x78, 0x20, 0x18, 0x02, 0x30, - 0x44, 0x1b, 0xb4, 0x42, 0xe5, 0xdb, 0xdb, 0x68, - 0x00, 0x2b, 0xde, 0xd1, 0x00, 0x20, 0x70, 0xbd, - 0x04, 0x49, 0x80, 0xb5, 0x0a, 0x78, 0x0a, 0x20, - 0x00, 0x2a, 0x00, 0xd0, 0x48, 0x6a, 0x00, 0xf0, - 0xd1, 0xf8, 0x80, 0xbd, 0x1c, 0x75, 0x01, 0x00, - 0xb0, 0xb5, 0x17, 0x4c, 0x3c, 0x00, 0x48, 0xa8, - 0x00, 0x00, 0x20, 0x68, 0x00, 0x28, 0x29, 0xd0, - 0x16, 0x4d, 0xe8, 0x69, 0x00, 0x28, 0x25, 0xd1, - 0x01, 0xf0, 0x3f, 0xfa, 0x00, 0x28, 0x21, 0xd1, - 0xff, 0xf7, 0x41, 0xfc, 0x00, 0x28, 0x1d, 0xd1, - 0x20, 0x68, 0xa9, 0x69, 0x40, 0x18, 0x08, 0xf0, - 0xd6, 0xf9, 0x00, 0x28, 0x16, 0xd0, 0x02, 0xf0, - 0x06, 0xfd, 0x21, 0x68, 0x40, 0x18, 0x08, 0xf0, - 0xce, 0xf9, 0x00, 0x28, 0x0e, 0xd0, 0x3c, 0x00, - 0x84, 0xa8, 0x00, 0x00, 0x01, 0x20, 0xe8, 0x61, - 0x00, 0x22, 0x25, 0x21, 0x80, 0x20, 0x08, 0xf0, - 0x8f, 0xff, 0x06, 0x48, 0x29, 0x6a, 0x04, 0xf0, - 0x83, 0xfd, 0x01, 0x21, 0x28, 0x6a, 0x00, 0xf0, - 0x89, 0xff, 0xb0, 0xbd, 0xe8, 0x59, 0x01, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x00, 0x24, 0xfa, 0xf7, - 0x0b, 0xff, 0x18, 0x4e, 0x71, 0x6a, 0x40, 0x18, - 0x3c, 0x00, 0xc0, 0xa8, 0x00, 0x00, 0x00, 0xf0, - 0x8e, 0xf8, 0x00, 0x28, 0x0b, 0xd1, 0x04, 0xf0, - 0xfe, 0xfb, 0x00, 0x21, 0x25, 0x20, 0x08, 0xf0, - 0xb0, 0xfe, 0x03, 0x22, 0x29, 0x1c, 0x28, 0x1c, - 0x00, 0xf0, 0xaf, 0xf8, 0x18, 0xe0, 0x70, 0x6a, - 0x44, 0x1e, 0x00, 0xf0, 0x7c, 0xf8, 0x00, 0x28, - 0x12, 0xd1, 0x0c, 0x48, 0x31, 0x6a, 0x04, 0xf0, - 0x56, 0xfd, 0x01, 0x21, 0x30, 0x6a, 0x00, 0xf0, - 0x5c, 0xff, 0x3c, 0x00, 0xfc, 0xa8, 0x00, 0x00, - 0x00, 0x20, 0xfa, 0xf7, 0x0d, 0xfe, 0x06, 0xf0, - 0x03, 0xf8, 0x00, 0x23, 0x00, 0x22, 0x25, 0x20, - 0x05, 0x49, 0x08, 0xf0, 0x3f, 0xff, 0x20, 0x1c, - 0x07, 0xf0, 0xfc, 0xfa, 0x70, 0xbd, 0x00, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x10, 0x27, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x28, - 0x07, 0xd0, 0x80, 0x28, 0x0d, 0xd1, 0x00, 0x22, - 0x00, 0x21, 0x08, 0x48, 0x3c, 0x00, 0x38, 0xa9, - 0x00, 0x00, 0xf8, 0xf7, 0x9a, 0xfe, 0x80, 0xbd, - 0x01, 0x29, 0x02, 0xd1, 0x06, 0x49, 0x00, 0x20, - 0xc8, 0x61, 0x04, 0xf0, 0xbe, 0xfb, 0x80, 0xbd, - 0x05, 0x21, 0x25, 0x20, 0xf6, 0xf7, 0xa7, 0xfc, - 0x80, 0xbd, 0x61, 0xa9, 0x00, 0x00, 0x1c, 0x75, - 0x01, 0x00, 0x00, 0x21, 0x00, 0x28, 0x80, 0xb5, - 0x01, 0xd1, 0x03, 0x48, 0x41, 0x68, 0x01, 0x22, - 0x25, 0x20, 0x08, 0xf0, 0x2c, 0xfe, 0x3c, 0x00, - 0x74, 0xa9, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0xe8, 0x59, 0x01, 0x00, 0x02, 0x49, 0xc8, 0x68, - 0x01, 0x38, 0x48, 0x62, 0x70, 0x47, 0x00, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, - 0x08, 0x1c, 0x19, 0x1c, 0x11, 0x4b, 0x06, 0xd0, - 0x01, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x19, 0x1c, - 0xf5, 0xf7, 0xaa, 0xfd, 0x17, 0xe0, 0x0d, 0x4d, - 0x01, 0x1c, 0x2c, 0x78, 0x12, 0x88, 0x18, 0x1c, - 0x3c, 0x00, 0xb0, 0xa9, 0x00, 0x00, 0xf5, 0xf7, - 0xa2, 0xfd, 0x28, 0x78, 0x84, 0x42, 0x0d, 0xd0, - 0x00, 0x23, 0x6b, 0x61, 0x00, 0x28, 0x03, 0xd0, - 0x00, 0x20, 0x07, 0xf0, 0xa4, 0xfa, 0x05, 0xe0, - 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, 0x92, - 0xf8, 0xf7, 0x23, 0xfc, 0x01, 0x20, 0x38, 0xbd, - 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x01, 0x26, 0x08, 0xf0, 0xe1, 0xf9, - 0x05, 0x1c, 0x3c, 0x00, 0xec, 0xa9, 0x00, 0x00, - 0x00, 0x20, 0xfa, 0xf7, 0x8b, 0xfd, 0x44, 0x43, - 0x02, 0xf0, 0x40, 0xfc, 0x02, 0xf0, 0x3e, 0xfc, - 0x01, 0x1c, 0x23, 0x1c, 0x00, 0x22, 0x28, 0x1c, - 0x08, 0xf0, 0x7c, 0xfa, 0x00, 0x28, 0x13, 0xd1, - 0x0a, 0x48, 0x23, 0x1c, 0x00, 0x22, 0x81, 0x69, - 0x28, 0x1c, 0x08, 0xf0, 0x73, 0xfa, 0x00, 0x28, - 0x0a, 0xd1, 0xf8, 0xf7, 0x19, 0xfc, 0x01, 0x1c, - 0x23, 0x1c, 0x00, 0x22, 0x3c, 0x00, 0x28, 0xaa, - 0x00, 0x00, 0x28, 0x1c, 0x08, 0xf0, 0x69, 0xfa, - 0x00, 0x28, 0x00, 0xd1, 0x00, 0x26, 0x30, 0x1c, - 0x70, 0xbd, 0x1c, 0x75, 0x01, 0x00, 0x70, 0xb5, - 0x0d, 0x1c, 0x04, 0x1c, 0x16, 0x1c, 0x07, 0xf0, - 0x76, 0xf9, 0x00, 0x28, 0x0d, 0xd0, 0xfa, 0xf7, - 0x52, 0xfe, 0x00, 0x28, 0x09, 0xd0, 0xff, 0x30, - 0x01, 0x30, 0x43, 0x68, 0x00, 0x2b, 0x04, 0xd0, - 0x22, 0x1c, 0x29, 0x1c, 0x30, 0x1c, 0x3c, 0x00, - 0x64, 0xaa, 0x00, 0x00, 0xf5, 0xf7, 0xbb, 0xfc, - 0x70, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x1d, 0x20, 0x08, 0xf0, 0xdf, 0xfd, 0x07, 0x4a, - 0x07, 0x48, 0x11, 0x69, 0x01, 0x60, 0x51, 0x69, - 0x41, 0x60, 0x06, 0x49, 0x49, 0x68, 0x81, 0x60, - 0x00, 0x21, 0xc1, 0x60, 0x03, 0xf0, 0x74, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x28, 0x61, 0x01, 0x00, - 0x48, 0x75, 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, - 0x3c, 0x00, 0xa0, 0xaa, 0x00, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x40, 0x6b, 0x00, 0x28, 0x35, 0xd0, - 0x1d, 0x4d, 0x00, 0x26, 0x28, 0x78, 0x00, 0x28, - 0x24, 0xd0, 0x41, 0x20, 0x00, 0x5d, 0x00, 0x28, - 0x03, 0xd1, 0x08, 0xf0, 0x76, 0xf9, 0xa8, 0x61, - 0x1b, 0xe0, 0x69, 0x69, 0x01, 0x31, 0x69, 0x61, - 0xa8, 0x68, 0x00, 0x28, 0x08, 0xd0, 0x81, 0x42, - 0x06, 0xd1, 0x20, 0x69, 0x01, 0x1c, 0x10, 0x31, - 0x04, 0x30, 0x3c, 0x00, 0xdc, 0xaa, 0x00, 0x00, - 0x82, 0x22, 0xff, 0xf7, 0xad, 0xff, 0x68, 0x68, - 0x00, 0x28, 0x0a, 0xd0, 0x69, 0x69, 0x81, 0x42, - 0x07, 0xd1, 0x20, 0x69, 0x01, 0x1c, 0x10, 0x31, - 0x04, 0x30, 0x02, 0x22, 0xff, 0xf7, 0xa0, 0xff, - 0x6e, 0x61, 0x68, 0x78, 0x05, 0x21, 0x08, 0x40, - 0x08, 0xd0, 0x07, 0x48, 0x00, 0x78, 0x0e, 0x28, - 0x03, 0xd3, 0x60, 0x34, 0xe0, 0x79, 0xfb, 0xf7, - 0xcf, 0xff, 0x70, 0xbd, 0x3c, 0x00, 0x18, 0xab, - 0x00, 0x00, 0x03, 0x48, 0x06, 0x60, 0x70, 0xbd, - 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, 0x10, 0x67, - 0x01, 0x00, 0xd4, 0x7e, 0x01, 0x00, 0x80, 0x02, - 0x70, 0x47, 0x14, 0x23, 0x30, 0xb5, 0x09, 0x4d, - 0x4b, 0x43, 0x5b, 0x19, 0x5b, 0x68, 0x08, 0x24, - 0x00, 0x2b, 0x00, 0xd1, 0x02, 0x24, 0x38, 0x23, - 0x5a, 0x43, 0x05, 0x4b, 0x89, 0x00, 0xd2, 0x18, - 0x51, 0x5a, 0x02, 0x68, 0x09, 0x19, 0x3c, 0x00, - 0x54, 0xab, 0x00, 0x00, 0x51, 0x1a, 0x01, 0x60, - 0x30, 0xbd, 0x00, 0x00, 0x74, 0x40, 0x01, 0x00, - 0x8c, 0x41, 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, - 0x2c, 0x48, 0x14, 0x1c, 0x2c, 0x4a, 0x48, 0x43, - 0x86, 0x46, 0x80, 0x18, 0x80, 0x0d, 0x84, 0x46, - 0x2b, 0x48, 0x2a, 0x4a, 0x06, 0x26, 0x1d, 0x1c, - 0x48, 0x43, 0x4a, 0x43, 0x0e, 0x2f, 0x40, 0xd2, - 0x01, 0xa3, 0xdb, 0x5d, 0x5b, 0x00, 0x9f, 0x44, - 0x3c, 0x00, 0x90, 0xab, 0x00, 0x00, 0x06, 0x08, - 0x0a, 0x0f, 0x14, 0x18, 0x1d, 0x20, 0x27, 0x24, - 0x27, 0x2b, 0x2f, 0x31, 0xc8, 0x00, 0x1f, 0xe0, - 0x88, 0x00, 0x1d, 0xe0, 0x21, 0x49, 0x70, 0x46, - 0x40, 0x18, 0x00, 0x0d, 0x18, 0xe0, 0x1f, 0x4a, - 0x80, 0x18, 0x80, 0x0d, 0x40, 0x18, 0x21, 0xe0, - 0x1e, 0x48, 0x10, 0x18, 0x00, 0x0d, 0x1d, 0xe0, - 0x1d, 0x49, 0x70, 0x46, 0x40, 0x18, 0x40, 0x0d, - 0x0a, 0xe0, 0x3c, 0x00, 0xcc, 0xab, 0x00, 0x00, - 0x1b, 0x49, 0x40, 0x18, 0x01, 0xe0, 0x1b, 0x48, - 0x10, 0x18, 0x40, 0x0d, 0x11, 0xe0, 0x1a, 0x49, - 0x40, 0x18, 0x05, 0xe0, 0x60, 0x46, 0x20, 0x80, - 0x00, 0x20, 0x16, 0xe0, 0x17, 0x48, 0x10, 0x18, - 0x80, 0x0d, 0x06, 0xe0, 0x16, 0x49, 0x02, 0xe0, - 0x16, 0x48, 0x48, 0x43, 0x16, 0x49, 0x40, 0x18, - 0xc0, 0x0d, 0x03, 0x30, 0x80, 0x08, 0x80, 0x00, - 0x20, 0x80, 0x2e, 0x80, 0x3c, 0x00, 0x08, 0xac, - 0x00, 0x00, 0xf8, 0xbd, 0xff, 0x21, 0xff, 0x20, - 0xf6, 0xf7, 0x49, 0xfb, 0x00, 0x20, 0x20, 0x80, - 0x28, 0x80, 0xf6, 0xe7, 0x00, 0x00, 0xd1, 0x45, - 0x17, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xe3, 0x38, - 0x0e, 0x00, 0x55, 0x55, 0x15, 0x00, 0xff, 0xff, - 0x0f, 0x00, 0xa9, 0xaa, 0x2a, 0x01, 0x70, 0x1c, - 0x37, 0x00, 0xff, 0xff, 0x1f, 0x00, 0xcb, 0xcc, - 0x4c, 0x00, 0x70, 0x1c, 0x47, 0x00, 0x3c, 0x00, - 0x44, 0xac, 0x00, 0x00, 0xa9, 0xaa, 0x7a, 0x00, - 0x70, 0x1c, 0x67, 0x00, 0xa9, 0xaa, 0xba, 0x00, - 0x84, 0xf6, 0x12, 0x00, 0xec, 0x25, 0xb4, 0x00, - 0x04, 0x49, 0x00, 0x28, 0x01, 0xd0, 0x09, 0x22, - 0x00, 0xe0, 0x14, 0x22, 0x4a, 0x80, 0x48, 0x60, - 0x70, 0x47, 0x00, 0x00, 0xa4, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0x06, 0x22, 0xf5, 0xf7, 0x40, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0xbc, 0xb5, 0x15, 0x1c, - 0x3c, 0x00, 0x80, 0xac, 0x00, 0x00, 0x04, 0x1c, - 0x04, 0x31, 0x09, 0x04, 0x09, 0x0c, 0x01, 0xaa, - 0x6b, 0x46, 0xff, 0xf7, 0x6a, 0xff, 0x38, 0x20, - 0x06, 0x49, 0x68, 0x43, 0x40, 0x18, 0xa1, 0x00, - 0x40, 0x5a, 0x00, 0xab, 0x99, 0x88, 0x40, 0x18, - 0x19, 0x88, 0x40, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0xbc, 0xbd, 0x8c, 0x41, 0x01, 0x00, 0xbc, 0xb5, - 0x04, 0x1c, 0x15, 0x1c, 0x01, 0xaa, 0x6b, 0x46, - 0xff, 0xf7, 0x3c, 0x00, 0xbc, 0xac, 0x00, 0x00, - 0x53, 0xff, 0x38, 0x20, 0x05, 0x49, 0x68, 0x43, - 0x40, 0x18, 0xa1, 0x00, 0x40, 0x5a, 0x00, 0xab, - 0x99, 0x88, 0x40, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0xbc, 0xbd, 0x00, 0x00, 0x8c, 0x41, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x28, 0x0f, 0xd0, 0x00, 0x29, - 0x0d, 0xd0, 0x02, 0x78, 0x0b, 0x78, 0x9a, 0x42, - 0x09, 0xd1, 0xff, 0x2a, 0x05, 0xd0, 0x42, 0x78, - 0x02, 0x32, 0xf5, 0xf7, 0x3c, 0x00, 0xf8, 0xac, - 0x00, 0x00, 0x81, 0xfb, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x06, 0x22, 0x04, 0x49, - 0xf5, 0xf7, 0x75, 0xfb, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x5e, 0x40, 0x01, 0x00, 0x01, 0x1c, - 0x49, 0x78, 0x01, 0x20, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xad, 0x00, 0x00, 0x80, 0xb5, 0x06, 0x22, - 0xf5, 0xf7, 0x60, 0xfb, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x80, 0xb5, 0xff, 0xf7, 0xc7, 0xff, 0x80, 0xbd, - 0x80, 0xb5, 0x06, 0x22, 0x04, 0x49, 0xf5, 0xf7, - 0x51, 0xfb, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, - 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, 0x00, 0x00, - 0x12, 0x61, 0x01, 0x00, 0x01, 0x1c, 0x80, 0x20, - 0x3c, 0x00, 0x70, 0xad, 0x00, 0x00, 0x81, 0x43, - 0x8a, 0x08, 0x0e, 0x20, 0x1c, 0x2a, 0x10, 0xb5, - 0x06, 0xd2, 0x03, 0x4c, 0x52, 0x00, 0xa3, 0x5c, - 0x8b, 0x42, 0x01, 0xd1, 0x10, 0x19, 0x40, 0x78, - 0x10, 0xbd, 0xfc, 0x41, 0x01, 0x00, 0x14, 0x23, - 0x02, 0x49, 0x58, 0x43, 0x40, 0x18, 0x40, 0x68, - 0x70, 0x47, 0x74, 0x40, 0x01, 0x00, 0x20, 0x22, - 0x01, 0x1c, 0x80, 0xb5, 0x02, 0x48, 0xf5, 0xf7, - 0x52, 0xfd, 0x3c, 0x00, 0xac, 0xad, 0x00, 0x00, - 0x80, 0xbd, 0x00, 0x00, 0x48, 0x61, 0x01, 0x00, - 0x08, 0x06, 0x00, 0x0e, 0x02, 0x28, 0x01, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, - 0x00, 0x29, 0x0c, 0xd0, 0x07, 0x49, 0x09, 0x68, - 0x00, 0x29, 0x08, 0xd0, 0x14, 0x23, 0x06, 0x49, - 0x58, 0x43, 0x40, 0x18, 0xc0, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xad, - 0x00, 0x00, 0xac, 0x69, 0x01, 0x00, 0x74, 0x40, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x22, - 0x01, 0x1c, 0x04, 0x48, 0xf5, 0xf7, 0x7d, 0xfb, - 0x06, 0x22, 0x21, 0x1c, 0x03, 0x48, 0xf5, 0xf7, - 0x78, 0xfb, 0x10, 0xbd, 0x00, 0x00, 0x12, 0x61, - 0x01, 0x00, 0x40, 0x80, 0x07, 0x00, 0x00, 0x29, - 0x01, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x38, 0x23, - 0x5a, 0x43, 0x07, 0x4b, 0xd2, 0x18, 0x3c, 0x00, - 0x24, 0xae, 0x00, 0x00, 0x83, 0x00, 0xd2, 0x5a, - 0x14, 0x23, 0x58, 0x43, 0x05, 0x4b, 0xc0, 0x18, - 0x40, 0x88, 0x10, 0x18, 0x08, 0x1a, 0x0a, 0x38, - 0x00, 0x04, 0x00, 0x0c, 0x70, 0x47, 0x00, 0x00, - 0x8c, 0x41, 0x01, 0x00, 0x74, 0x40, 0x01, 0x00, - 0xf8, 0xb5, 0x07, 0x1c, 0x08, 0x1c, 0x16, 0x1c, - 0x1c, 0x1c, 0x19, 0x1c, 0x00, 0xf0, 0x5a, 0xf8, - 0x05, 0x1c, 0x14, 0x35, 0x22, 0x1c, 0x31, 0x1c, - 0x3c, 0x00, 0x60, 0xae, 0x00, 0x00, 0x38, 0x1c, - 0xff, 0xf7, 0x0b, 0xff, 0x28, 0x18, 0x00, 0x04, - 0x00, 0x0c, 0xf8, 0xbd, 0x00, 0x00, 0x00, 0xb5, - 0x00, 0xf0, 0x4b, 0xf8, 0x0a, 0x30, 0x00, 0x04, - 0x00, 0x0c, 0x00, 0xbd, 0x00, 0x00, 0xf8, 0xb5, - 0x07, 0x1c, 0x08, 0x1c, 0x16, 0x1c, 0x1c, 0x1c, - 0x19, 0x1c, 0x00, 0xf0, 0x3e, 0xf8, 0x45, 0x00, - 0x1e, 0x35, 0x22, 0x1c, 0x31, 0x1c, 0x38, 0x1c, - 0xff, 0xf7, 0x3c, 0x00, 0x9c, 0xae, 0x00, 0x00, - 0xef, 0xfe, 0x28, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0xf8, 0xbd, 0x00, 0x00, 0xff, 0xb5, 0x0f, 0x1c, - 0x81, 0xb0, 0x0a, 0xa9, 0x14, 0x1c, 0x1e, 0x1c, - 0x03, 0xc9, 0x00, 0xf0, 0x29, 0xf8, 0x05, 0x1c, - 0x1e, 0x35, 0x21, 0x1c, 0x30, 0x1c, 0x00, 0xf0, - 0x23, 0xf8, 0x2d, 0x18, 0x22, 0x1c, 0x39, 0x1c, - 0x01, 0x98, 0xff, 0xf7, 0xd5, 0xfe, 0x28, 0x18, - 0x00, 0x04, 0x00, 0x0c, 0x3c, 0x00, 0xd8, 0xae, - 0x00, 0x00, 0x05, 0xb0, 0xf0, 0xbd, 0x0a, 0x49, - 0x80, 0xb5, 0x09, 0x88, 0x09, 0x29, 0x04, 0xd0, - 0x14, 0x29, 0x07, 0xd1, 0x01, 0x01, 0x80, 0x00, - 0x00, 0xe0, 0xc1, 0x00, 0x08, 0x18, 0x00, 0x04, - 0x00, 0x0c, 0x80, 0xbd, 0xff, 0x21, 0xff, 0x20, - 0xf6, 0xf7, 0xd1, 0xf9, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0xa6, 0x69, 0x01, 0x00, 0x38, 0x23, - 0x59, 0x43, 0x06, 0x4a, 0x14, 0x23, 0x3c, 0x00, - 0x14, 0xaf, 0x00, 0x00, 0x89, 0x18, 0x82, 0x00, - 0x89, 0x5a, 0x05, 0x4a, 0x58, 0x43, 0x80, 0x18, - 0x40, 0x88, 0x08, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0x70, 0x47, 0x00, 0x00, 0x8c, 0x41, 0x01, 0x00, - 0x74, 0x40, 0x01, 0x00, 0x02, 0x48, 0x03, 0x49, - 0x00, 0x68, 0x40, 0x00, 0x08, 0x5a, 0x70, 0x47, - 0xa8, 0x69, 0x01, 0x00, 0x54, 0x40, 0x01, 0x00, - 0x0a, 0x20, 0x70, 0x47, 0x10, 0xb5, 0x04, 0x1c, - 0x3c, 0x00, 0x50, 0xaf, 0x00, 0x00, 0xfd, 0xf7, - 0x62, 0xff, 0x20, 0x1c, 0x10, 0xbd, 0xb0, 0xb5, - 0x04, 0x1c, 0xc0, 0x68, 0x05, 0x68, 0xa0, 0x1d, - 0xff, 0xf7, 0xf5, 0xfe, 0x00, 0x28, 0x18, 0xd0, - 0x21, 0x1c, 0x14, 0x31, 0x20, 0x1c, 0x08, 0xf0, - 0xe2, 0xfd, 0x00, 0x28, 0x11, 0xd0, 0x29, 0x88, - 0x09, 0x48, 0x20, 0x22, 0x81, 0x82, 0x69, 0x88, - 0x01, 0x83, 0xa9, 0x88, 0x06, 0x35, 0x41, 0x83, - 0xc5, 0x61, 0x3c, 0x00, 0x8c, 0xaf, 0x00, 0x00, - 0x30, 0x21, 0x09, 0x5d, 0x11, 0x54, 0x61, 0x6b, - 0x41, 0x62, 0x01, 0x20, 0xf7, 0xf7, 0x28, 0xf8, - 0x20, 0x1c, 0xb0, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x70, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0x21, 0x1c, - 0x14, 0x31, 0x05, 0x68, 0x20, 0x1c, 0x08, 0xf0, - 0xc1, 0xfd, 0x00, 0x28, 0x08, 0xd0, 0x05, 0x4e, - 0xf0, 0x68, 0x02, 0xf0, 0xcf, 0xfd, 0x28, 0x88, - 0xf0, 0x82, 0x03, 0x20, 0x3c, 0x00, 0xc8, 0xaf, - 0x00, 0x00, 0xf7, 0xf7, 0x10, 0xf8, 0x20, 0x1c, - 0x70, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x3e, 0xb5, - 0x04, 0x1c, 0xc0, 0x68, 0x05, 0x68, 0xa0, 0x1d, - 0xff, 0xf7, 0xb7, 0xfe, 0x00, 0x28, 0x21, 0xd0, - 0x21, 0x1c, 0x14, 0x31, 0x20, 0x1c, 0x02, 0xaa, - 0x08, 0xf0, 0x77, 0xfd, 0x00, 0x28, 0x19, 0xd0, - 0x02, 0x98, 0x4b, 0x21, 0x09, 0x5c, 0x00, 0x29, - 0x10, 0xd0, 0x01, 0x29, 0x14, 0xd0, 0x3c, 0x00, - 0x04, 0xb0, 0x00, 0x00, 0x02, 0x29, 0x0c, 0xd1, - 0x29, 0x88, 0x0d, 0x20, 0x00, 0xab, 0x18, 0x80, - 0x20, 0x1c, 0x03, 0xf0, 0x51, 0xf8, 0x01, 0x90, - 0x68, 0x46, 0x02, 0xf0, 0x5d, 0xfa, 0xf6, 0xf7, - 0xb5, 0xf8, 0x00, 0x21, 0x02, 0x98, 0x06, 0xf0, - 0x9f, 0xfe, 0x20, 0x1c, 0x3e, 0xbd, 0x07, 0xf0, - 0x29, 0xf8, 0x02, 0x98, 0x00, 0x21, 0x80, 0x69, - 0xc2, 0x07, 0xd2, 0x0f, 0x04, 0x20, 0xf6, 0xf7, - 0x3c, 0x00, 0x40, 0xb0, 0x00, 0x00, 0x7f, 0xff, - 0xee, 0xe7, 0x10, 0xb5, 0x04, 0x1c, 0xfd, 0xf7, - 0xe6, 0xfe, 0x20, 0x1c, 0x10, 0xbd, 0x3e, 0xb5, - 0x05, 0x1c, 0x00, 0xf0, 0x40, 0xfe, 0x00, 0x28, - 0x15, 0xd1, 0x28, 0x1c, 0x14, 0x30, 0xfa, 0xf7, - 0xce, 0xfb, 0x00, 0x28, 0x0f, 0xd0, 0x05, 0x21, - 0x28, 0x69, 0xff, 0xf7, 0x86, 0xfb, 0x04, 0x1c, - 0x09, 0xd0, 0x05, 0x22, 0x21, 0x1c, 0x68, 0x46, - 0xf5, 0xf7, 0x3c, 0x00, 0x7c, 0xb0, 0x00, 0x00, - 0x3d, 0xfa, 0x05, 0x34, 0x02, 0x94, 0x68, 0x46, - 0x03, 0xf0, 0x1a, 0xfb, 0x2a, 0x1c, 0x0d, 0x21, - 0x8f, 0x20, 0x08, 0xf0, 0x8f, 0xfb, 0x00, 0x20, - 0x3e, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0xfa, 0xf7, 0x98, 0xf8, 0x20, 0x1c, 0x05, 0xf0, - 0xe5, 0xf8, 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x69, 0x00, 0x21, - 0x94, 0xb0, 0xff, 0xf7, 0x3c, 0x00, 0xb8, 0xb0, - 0x00, 0x00, 0x61, 0xfb, 0x69, 0x46, 0xfb, 0xf7, - 0x26, 0xf8, 0x00, 0x28, 0x1e, 0xd0, 0x00, 0x98, - 0xfa, 0xf7, 0x29, 0xfa, 0x01, 0x1c, 0x01, 0xa8, - 0x02, 0xf0, 0xd7, 0xf9, 0x00, 0x98, 0xfa, 0xf7, - 0xd2, 0xf9, 0x04, 0x90, 0x05, 0x20, 0x09, 0xad, - 0x68, 0x72, 0x02, 0xa8, 0x21, 0x1c, 0x06, 0x22, - 0x02, 0x30, 0xf5, 0xf7, 0x06, 0xfa, 0x01, 0x20, - 0x08, 0x90, 0x21, 0x6a, 0x0a, 0x90, 0x3c, 0x00, - 0xf4, 0xb0, 0x00, 0x00, 0x28, 0x20, 0x09, 0x91, - 0x00, 0x5d, 0x28, 0x72, 0x01, 0xa8, 0x00, 0xf0, - 0x69, 0xf8, 0x20, 0x1c, 0x14, 0xb0, 0xb0, 0xbd, - 0xff, 0xb5, 0x16, 0x1c, 0x1f, 0x1c, 0x81, 0xb0, - 0x0a, 0x9d, 0x4c, 0x20, 0xf6, 0xf7, 0x90, 0xfb, - 0x04, 0x1c, 0x14, 0x30, 0x06, 0x22, 0x02, 0x99, - 0xf5, 0xf7, 0xea, 0xf9, 0x20, 0x1c, 0x06, 0x22, - 0x01, 0x99, 0xf5, 0xf7, 0xe5, 0xf9, 0x28, 0x20, - 0x3c, 0x00, 0x30, 0xb1, 0x00, 0x00, 0x00, 0x21, - 0x06, 0x55, 0xe1, 0x60, 0x27, 0x62, 0x00, 0x2d, - 0x01, 0xd0, 0x8e, 0x20, 0x00, 0xe0, 0x8d, 0x20, - 0x22, 0x1c, 0x0d, 0x21, 0x08, 0xf0, 0x33, 0xfb, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x05, 0x1c, 0x4c, 0x20, 0xf6, 0xf7, 0x6f, 0xfb, - 0x04, 0x1c, 0x4c, 0x22, 0x29, 0x1c, 0xf5, 0xf7, - 0x26, 0xfa, 0x29, 0x20, 0x40, 0x5d, 0x0d, 0x28, - 0x2c, 0xd2, 0x3c, 0x00, 0x6c, 0xb1, 0x00, 0x00, - 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, - 0x28, 0x1a, 0x28, 0x1e, 0x06, 0x0a, 0x28, 0x28, - 0x0e, 0x28, 0x22, 0x12, 0x16, 0x00, 0x22, 0x1c, - 0x0d, 0x21, 0x8c, 0x20, 0x1a, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x83, 0x20, 0x16, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x84, 0x20, 0x12, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x85, 0x20, 0x0e, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x86, 0x20, 0x3c, 0x00, 0xa8, 0xb1, - 0x00, 0x00, 0x0a, 0xe0, 0x22, 0x1c, 0x0d, 0x21, - 0x87, 0x20, 0x06, 0xe0, 0x22, 0x1c, 0x0d, 0x21, - 0x89, 0x20, 0x02, 0xe0, 0x22, 0x1c, 0x0d, 0x21, - 0x8b, 0x20, 0x08, 0xf0, 0xf6, 0xfa, 0xb0, 0xbd, - 0xe8, 0x68, 0xf6, 0xf7, 0xe6, 0xf9, 0x20, 0x1c, - 0xf6, 0xf7, 0x11, 0xfb, 0xb0, 0xbd, 0xfe, 0xb5, - 0x05, 0x1c, 0x90, 0x20, 0xf6, 0xf7, 0x2d, 0xfb, - 0x04, 0x1c, 0x90, 0x21, 0xf5, 0xf7, 0x3c, 0x00, - 0xe4, 0xb1, 0x00, 0x00, 0x5b, 0xf9, 0x37, 0x4e, - 0x01, 0x27, 0xf0, 0x69, 0x04, 0x28, 0x03, 0xd9, - 0x70, 0x6b, 0x01, 0x30, 0x70, 0x63, 0x4d, 0xe0, - 0x33, 0x48, 0xb1, 0x6b, 0x04, 0xf0, 0xd0, 0xf8, - 0x01, 0x20, 0x20, 0x62, 0xa8, 0x7e, 0x21, 0x1c, - 0x80, 0x31, 0x02, 0x91, 0x08, 0x70, 0x22, 0x1c, - 0x60, 0x32, 0x01, 0x92, 0x00, 0x20, 0x2f, 0x1c, - 0x20, 0x37, 0x90, 0x72, 0x78, 0x7a, 0x2b, 0x1c, - 0x3c, 0x00, 0x20, 0xb2, 0x00, 0x00, 0x14, 0x33, - 0xd0, 0x72, 0xe8, 0x68, 0xaa, 0x1d, 0xa0, 0x60, - 0xe8, 0x6b, 0x48, 0x60, 0x44, 0x20, 0x40, 0x5d, - 0x08, 0x72, 0x29, 0x1c, 0x20, 0x1c, 0x05, 0xf0, - 0xaa, 0xfc, 0x68, 0x6a, 0x00, 0x28, 0x0a, 0xd1, - 0x01, 0x9a, 0x20, 0x1c, 0x93, 0x7a, 0x02, 0x99, - 0x22, 0x1c, 0x70, 0x32, 0x58, 0x30, 0x09, 0x78, - 0xfa, 0xf7, 0xdb, 0xf9, 0x06, 0xe0, 0x3a, 0x7a, - 0x23, 0x1c, 0x3c, 0x00, 0x5c, 0xb2, 0x00, 0x00, - 0xe8, 0x69, 0x29, 0x6a, 0x70, 0x33, 0xfd, 0xf7, - 0x8d, 0xf9, 0x30, 0x20, 0x40, 0x5d, 0x18, 0x49, - 0x07, 0x28, 0x0b, 0xd1, 0x58, 0x20, 0x00, 0x5d, - 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, 0xe0, 0x61, - 0x00, 0x20, 0x20, 0x61, 0x20, 0x1c, 0xf7, 0xf7, - 0x3f, 0xff, 0x18, 0xe0, 0x01, 0x22, 0x20, 0x1c, - 0x05, 0xf0, 0xac, 0xff, 0x07, 0x1c, 0x12, 0xd0, - 0x03, 0xf0, 0x06, 0xff, 0x3c, 0x00, 0x98, 0xb2, - 0x00, 0x00, 0xf3, 0x6d, 0x00, 0x2b, 0x06, 0xd0, - 0x60, 0x68, 0x20, 0x30, 0x82, 0x7b, 0x61, 0x6b, - 0x38, 0x1c, 0xf5, 0xf7, 0x99, 0xf8, 0xe8, 0x68, - 0xf6, 0xf7, 0x73, 0xf9, 0x20, 0x1c, 0xf6, 0xf7, - 0x9e, 0xfa, 0xfe, 0xbd, 0xf0, 0x69, 0x01, 0x30, - 0xf0, 0x61, 0xfa, 0xe7, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x05, 0x31, - 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0x3c, 0x00, - 0xd4, 0xb2, 0x00, 0x00, 0x0d, 0x1c, 0x09, 0x04, - 0x09, 0x0c, 0x00, 0x20, 0xf6, 0xf7, 0x7c, 0xf9, - 0x04, 0x1c, 0x2a, 0x1c, 0x31, 0x1c, 0x00, 0x68, - 0xf5, 0xf7, 0x06, 0xf9, 0x20, 0x1c, 0x70, 0xbd, - 0x40, 0x88, 0x70, 0x47, 0x03, 0x78, 0x1b, 0x07, - 0x9b, 0x0f, 0x0b, 0x70, 0x00, 0x78, 0x00, 0x09, - 0x10, 0x70, 0x70, 0x47, 0x04, 0x30, 0x70, 0x47, - 0x04, 0x30, 0x70, 0x47, 0xd4, 0x21, 0x01, 0x70, - 0x3c, 0x00, 0x10, 0xb3, 0x00, 0x00, 0x00, 0x21, - 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x21, - 0x01, 0x70, 0x00, 0x21, 0x41, 0x70, 0x70, 0x47, - 0x00, 0x00, 0xb4, 0x21, 0x01, 0x70, 0x00, 0x21, - 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, - 0x48, 0x65, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x01, 0x49, 0x08, 0x65, 0x70, 0x47, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x49, - 0x88, 0x65, 0x3c, 0x00, 0x4c, 0xb3, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, - 0xf8, 0xb5, 0x5f, 0x4f, 0x05, 0x1c, 0xb8, 0x68, - 0x01, 0x30, 0xb8, 0x60, 0x07, 0xf0, 0x24, 0xfd, - 0x38, 0x61, 0x90, 0x20, 0xf6, 0xf7, 0x66, 0xfa, - 0x04, 0x1c, 0x90, 0x21, 0xf5, 0xf7, 0x94, 0xf8, - 0x28, 0x6b, 0x27, 0x1c, 0x60, 0x63, 0x68, 0x8b, - 0x80, 0x37, 0x26, 0x1c, 0xc0, 0x07, 0xc0, 0x0f, - 0x20, 0x62, 0x68, 0x8b, 0x3c, 0x00, 0x88, 0xb3, - 0x00, 0x00, 0x60, 0x36, 0x02, 0x21, 0x40, 0x07, - 0xc0, 0x0f, 0x20, 0x63, 0x68, 0x8b, 0x80, 0x07, - 0xc0, 0x0f, 0xf8, 0x60, 0x28, 0x7f, 0x38, 0x70, - 0xb1, 0x72, 0x00, 0x28, 0x08, 0xd1, 0xf9, 0xf7, - 0xc8, 0xff, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x20, - 0x60, 0x62, 0x01, 0xe0, 0x01, 0x20, 0xa0, 0x62, - 0xf8, 0x68, 0x00, 0x28, 0x03, 0xd0, 0x00, 0x21, - 0x02, 0x20, 0x06, 0xf0, 0xcc, 0xff, 0x3c, 0x00, - 0xc4, 0xb3, 0x00, 0x00, 0x2b, 0x1c, 0x10, 0x33, - 0xaa, 0x1d, 0x29, 0x1c, 0x20, 0x1c, 0x05, 0xf0, - 0xdf, 0xfb, 0xa8, 0x6a, 0x00, 0x28, 0x0c, 0xd1, - 0x39, 0x78, 0x02, 0x29, 0x07, 0xd0, 0x22, 0x1c, - 0x70, 0x32, 0x20, 0x1c, 0x58, 0x30, 0xb3, 0x7a, - 0xfa, 0xf7, 0x10, 0xf9, 0x08, 0xe0, 0x01, 0x26, - 0x5e, 0xe0, 0xaa, 0x7d, 0x23, 0x1c, 0x28, 0x6a, - 0x69, 0x6a, 0x70, 0x33, 0xfd, 0xf7, 0xc0, 0xf8, - 0x3c, 0x00, 0x00, 0xb4, 0x00, 0x00, 0xe9, 0x68, - 0x00, 0x20, 0x09, 0x89, 0x00, 0x29, 0x00, 0xd1, - 0x04, 0x20, 0xf0, 0x72, 0x38, 0x78, 0x01, 0x28, - 0x14, 0xd1, 0x00, 0x27, 0x00, 0x90, 0x00, 0x20, - 0x06, 0xe0, 0x29, 0x69, 0x01, 0x29, 0x03, 0xd1, - 0xa9, 0x69, 0x01, 0x27, 0x89, 0x07, 0x1a, 0xd5, - 0x06, 0xf0, 0x79, 0xfc, 0x00, 0x28, 0xf4, 0xd1, - 0x01, 0x2f, 0x14, 0xd1, 0x00, 0x98, 0x01, 0x28, - 0x11, 0xd1, 0x3c, 0x00, 0x3c, 0xb4, 0x00, 0x00, - 0x08, 0xe0, 0x20, 0x1c, 0x58, 0x30, 0x06, 0xf0, - 0xe1, 0xfc, 0x00, 0x28, 0x0a, 0xd0, 0x80, 0x69, - 0x80, 0x07, 0x07, 0xd5, 0xf0, 0x7a, 0x08, 0x21, - 0x08, 0x43, 0xf0, 0x72, 0x01, 0x20, 0xe0, 0x62, - 0xe8, 0x7d, 0x30, 0x73, 0xe8, 0x68, 0xa0, 0x60, - 0xe0, 0x6a, 0x00, 0x28, 0x12, 0xd0, 0x1a, 0x4f, - 0xf8, 0x6b, 0x00, 0x28, 0x0e, 0xd0, 0x30, 0x7b, - 0xf5, 0xf7, 0xde, 0xfe, 0x3c, 0x00, 0x78, 0xb4, - 0x00, 0x00, 0x00, 0x28, 0x09, 0xd0, 0x21, 0x1c, - 0x38, 0x1c, 0x40, 0x30, 0xfc, 0xf7, 0x55, 0xfc, - 0x14, 0x48, 0xb9, 0x6b, 0x03, 0xf0, 0x89, 0xff, - 0xf8, 0xbd, 0x10, 0x4f, 0x12, 0x48, 0xb9, 0x6b, - 0x03, 0xf0, 0x83, 0xff, 0x00, 0x22, 0x20, 0x1c, - 0x10, 0x49, 0x05, 0xf0, 0xa2, 0xfe, 0x06, 0x1c, - 0x03, 0xd1, 0x38, 0x6a, 0x01, 0x30, 0x38, 0x62, - 0xee, 0xe7, 0x20, 0x1c, 0xf6, 0xf7, 0x3c, 0x00, - 0xb4, 0xb4, 0x00, 0x00, 0x9f, 0xf9, 0xe8, 0x68, - 0xf6, 0xf7, 0x6e, 0xf8, 0x03, 0xf0, 0xf2, 0xfd, - 0x04, 0x48, 0x83, 0x6d, 0x00, 0x2b, 0xe2, 0xd0, - 0x00, 0x22, 0x30, 0x1c, 0x29, 0x6b, 0xf4, 0xf7, - 0x86, 0xff, 0xdc, 0xe7, 0xc4, 0x69, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x11, 0x30, 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x20, - 0x07, 0xf0, 0xfe, 0xfc, 0x07, 0xf0, 0x5e, 0xfc, - 0x3c, 0x00, 0xf0, 0xb4, 0x00, 0x00, 0x0b, 0x49, - 0x44, 0x18, 0x0c, 0xe0, 0x20, 0x1c, 0x07, 0xf0, - 0x90, 0xfb, 0x00, 0x28, 0x07, 0xd0, 0xf7, 0xf7, - 0x34, 0xf9, 0x00, 0x28, 0x03, 0xd0, 0x12, 0x21, - 0x86, 0x20, 0xf5, 0xf7, 0xca, 0xfe, 0xf7, 0xf7, - 0x2c, 0xf9, 0x00, 0x28, 0xee, 0xd1, 0x01, 0xf0, - 0x80, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x40, 0x9c, - 0x00, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x01, 0x1c, - 0x17, 0x4a, 0x3c, 0x00, 0x2c, 0xb5, 0x00, 0x00, - 0x01, 0x29, 0x50, 0x69, 0x04, 0xd0, 0x80, 0x29, - 0x1d, 0xd0, 0x81, 0x29, 0x21, 0xd1, 0x1c, 0xe0, - 0x91, 0x78, 0x01, 0x29, 0x15, 0xd1, 0x02, 0x21, - 0x91, 0x70, 0x14, 0x1c, 0x01, 0x1c, 0x10, 0x48, - 0x03, 0xf0, 0x28, 0xff, 0x01, 0x21, 0x60, 0x69, - 0x00, 0xf0, 0x2e, 0xf9, 0x60, 0x69, 0x01, 0xf0, - 0x5f, 0xfc, 0x20, 0x70, 0xa0, 0x88, 0xa1, 0x69, - 0x00, 0x23, 0x0a, 0x4a, 0x3c, 0x00, 0x68, 0xb5, - 0x00, 0x00, 0x07, 0xf0, 0x7e, 0xfc, 0x10, 0xbd, - 0x22, 0x21, 0x06, 0xe0, 0x01, 0xf0, 0x1d, 0xfc, - 0x20, 0x1c, 0x00, 0xf0, 0x4a, 0xf8, 0x10, 0xbd, - 0x1c, 0x21, 0x20, 0x20, 0xf5, 0xf7, 0x8f, 0xfe, - 0x10, 0xbd, 0xb4, 0x79, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0x3d, 0x2e, 0x00, 0x00, 0x70, 0xb5, - 0x1c, 0x4c, 0xa0, 0x78, 0x00, 0x28, 0x32, 0xd0, - 0x05, 0x28, 0x30, 0xd0, 0x60, 0x69, 0x3c, 0x00, - 0xa4, 0xb5, 0x00, 0x00, 0x00, 0xf0, 0xea, 0xf8, - 0x18, 0x4e, 0xb5, 0x79, 0xa0, 0x78, 0x01, 0x28, - 0x0b, 0xd0, 0x02, 0x28, 0x0e, 0xd0, 0x03, 0x28, - 0x10, 0xd0, 0x04, 0x28, 0x17, 0xd1, 0x42, 0x1f, - 0x80, 0x21, 0x20, 0x20, 0x08, 0xf0, 0x08, 0xf8, - 0x0e, 0xe0, 0x00, 0x21, 0x20, 0x20, 0x08, 0xf0, - 0x31, 0xf8, 0x0c, 0xe0, 0xa0, 0x88, 0x07, 0xf0, - 0x1d, 0xfc, 0x05, 0xe0, 0x20, 0x78, 0x00, 0xf0, - 0x3c, 0x00, 0xe0, 0xb5, 0x00, 0x00, 0x39, 0xfa, - 0x00, 0x20, 0x00, 0xf0, 0xc4, 0xfd, 0x60, 0x69, - 0x01, 0xf0, 0xe1, 0xfb, 0x05, 0x20, 0xa0, 0x70, - 0xb5, 0x71, 0x60, 0x69, 0x00, 0xf0, 0x61, 0xf9, - 0x00, 0x22, 0x20, 0x21, 0x81, 0x20, 0x08, 0xf0, - 0xd6, 0xf8, 0x70, 0xbd, 0x00, 0x00, 0xb4, 0x79, - 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, 0xb0, 0xb5, - 0x0d, 0x4d, 0x04, 0x1c, 0xa8, 0x78, 0x00, 0x28, - 0x14, 0xd0, 0x3c, 0x00, 0x1c, 0xb6, 0x00, 0x00, - 0x68, 0x69, 0x00, 0xf0, 0x0b, 0xf9, 0x0a, 0x48, - 0x69, 0x69, 0x03, 0xf0, 0xa7, 0xfe, 0xa8, 0x88, - 0x07, 0xf0, 0x9e, 0xfb, 0x00, 0x2c, 0x02, 0xd0, - 0x68, 0x78, 0x00, 0xf0, 0x79, 0xff, 0x00, 0x20, - 0xa8, 0x70, 0xa9, 0x68, 0x20, 0x1c, 0xf4, 0xf7, - 0xca, 0xfe, 0xb0, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x06, 0x4b, 0x80, 0xb5, - 0x99, 0x78, 0x03, 0x29, 0x3c, 0x00, 0x58, 0xb6, - 0x00, 0x00, 0x06, 0xd1, 0x04, 0x21, 0x99, 0x70, - 0x20, 0x21, 0x02, 0x1c, 0x80, 0x20, 0x08, 0xf0, - 0xa4, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0xb4, 0x79, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x4c, 0xa1, 0x78, - 0x03, 0x29, 0x0f, 0xd1, 0x10, 0x30, 0xfa, 0xf7, - 0xde, 0xf8, 0x00, 0x28, 0x09, 0xd0, 0x20, 0x78, - 0x00, 0xf0, 0xe5, 0xf9, 0x00, 0x20, 0x00, 0xf0, - 0x70, 0xfd, 0x00, 0x21, 0x05, 0x48, 0x3c, 0x00, - 0x94, 0xb6, 0x00, 0x00, 0xfc, 0xf7, 0x9c, 0xfa, - 0x10, 0xbd, 0x1b, 0x21, 0x20, 0x20, 0xf5, 0xf7, - 0x01, 0xfe, 0x10, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0x51, 0xb6, 0x00, 0x00, 0x09, 0x49, 0x80, 0xb5, - 0x89, 0x78, 0x03, 0x29, 0x09, 0xd1, 0x00, 0xf0, - 0xcd, 0xf9, 0x00, 0x20, 0x00, 0xf0, 0x58, 0xfd, - 0x01, 0x21, 0x05, 0x48, 0xfc, 0xf7, 0x84, 0xfa, - 0x80, 0xbd, 0x17, 0x21, 0x20, 0x20, 0xf5, 0xf7, - 0x3c, 0x00, 0xd0, 0xb6, 0x00, 0x00, 0xe9, 0xfd, - 0x80, 0xbd, 0xb4, 0x79, 0x01, 0x00, 0x51, 0xb6, - 0x00, 0x00, 0x70, 0xb5, 0x10, 0x4c, 0x1d, 0x1c, - 0xa3, 0x78, 0x06, 0x1c, 0x04, 0x98, 0x00, 0x2b, - 0x18, 0xd1, 0x01, 0x23, 0xa3, 0x70, 0x22, 0x61, - 0xe6, 0x60, 0x61, 0x70, 0xa0, 0x60, 0xa5, 0x61, - 0x00, 0x20, 0x07, 0xf0, 0xac, 0xfa, 0xa0, 0x80, - 0x30, 0x1c, 0xf7, 0xf7, 0x3c, 0xfb, 0xe0, 0x80, - 0x07, 0xf0, 0x3c, 0x00, 0x0c, 0xb7, 0x00, 0x00, - 0x4f, 0xfb, 0xc7, 0x21, 0xc9, 0x00, 0x28, 0x1a, - 0x41, 0x1a, 0x00, 0x22, 0x20, 0x20, 0x07, 0xf0, - 0x57, 0xff, 0x70, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, 0x00, 0xf0, - 0x09, 0xf8, 0x20, 0x1c, 0x00, 0xf0, 0x24, 0xf8, - 0x00, 0x2d, 0x01, 0xd0, 0xff, 0xf7, 0xd4, 0xfe, - 0xb0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x4c, - 0x05, 0x1c, 0xa0, 0x68, 0x3c, 0x00, 0x48, 0xb7, - 0x00, 0x00, 0x00, 0x28, 0x0f, 0xd1, 0x0a, 0x48, - 0x01, 0x7e, 0x02, 0x22, 0x11, 0x40, 0x61, 0x60, - 0x01, 0x7e, 0x11, 0x43, 0x01, 0x76, 0x07, 0x20, - 0x03, 0xf0, 0x49, 0xfc, 0x20, 0x60, 0x03, 0xf0, - 0x98, 0xff, 0x03, 0xf0, 0xee, 0xff, 0xa0, 0x68, - 0x28, 0x43, 0xa0, 0x60, 0xb0, 0xbd, 0x40, 0x7c, - 0x01, 0x00, 0x0c, 0x80, 0x07, 0x00, 0x0a, 0x49, - 0x38, 0xb5, 0x0a, 0x1c, 0x20, 0x32, 0x3c, 0x00, - 0x84, 0xb7, 0x00, 0x00, 0x94, 0x79, 0x00, 0xab, - 0x1c, 0x70, 0xd2, 0x79, 0x07, 0x4c, 0x5a, 0x70, - 0xe2, 0x68, 0x00, 0x2a, 0x02, 0xd1, 0x06, 0x4d, - 0x01, 0x23, 0x6b, 0x70, 0x10, 0x43, 0xe0, 0x60, - 0x00, 0xab, 0x18, 0x88, 0xc8, 0x84, 0x38, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0x40, 0x7c, 0x01, 0x00, - 0x00, 0x50, 0x07, 0x00, 0xb0, 0xb5, 0x05, 0x1c, - 0x00, 0x29, 0x01, 0xd0, 0x00, 0xf0, 0x28, 0xf8, - 0x3c, 0x00, 0xc0, 0xb7, 0x00, 0x00, 0x06, 0x4c, - 0x60, 0x78, 0x21, 0x69, 0x08, 0x43, 0x03, 0xd1, - 0x01, 0x21, 0x0e, 0x20, 0x06, 0xf0, 0xc5, 0xfd, - 0x20, 0x69, 0x28, 0x43, 0x20, 0x61, 0xb0, 0xbd, - 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, 0xb0, 0xb5, - 0x0a, 0x4c, 0x05, 0x1c, 0x22, 0x69, 0x00, 0x20, - 0x00, 0x2a, 0x0c, 0xd1, 0x00, 0x29, 0x00, 0xd0, - 0x04, 0xe0, 0x60, 0x78, 0x00, 0x28, 0x02, 0xd1, - 0x04, 0xf0, 0x3c, 0x00, 0xfc, 0xb7, 0x00, 0x00, - 0x69, 0xfb, 0x60, 0x70, 0x28, 0x1c, 0x06, 0xf0, - 0xef, 0xfc, 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x00, - 0x18, 0x63, 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, - 0x60, 0x78, 0x00, 0x28, 0x0a, 0xd0, 0x06, 0xf0, - 0xe3, 0xfc, 0x00, 0x20, 0x60, 0x70, 0x20, 0x69, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x21, 0x0e, 0x20, - 0x06, 0xf0, 0x96, 0xfd, 0x10, 0xbd, 0x00, 0x00, - 0x18, 0x63, 0x01, 0x00, 0x3c, 0x00, 0x38, 0xb8, - 0x00, 0x00, 0x09, 0x49, 0x80, 0xb5, 0x0b, 0x69, - 0x83, 0x42, 0x04, 0xd1, 0x4a, 0x78, 0x00, 0x2a, - 0x01, 0xd1, 0x01, 0x22, 0x00, 0xe0, 0x00, 0x22, - 0x83, 0x43, 0x0b, 0x61, 0x00, 0x2a, 0x03, 0xd0, - 0x00, 0x21, 0x0e, 0x20, 0x06, 0xf0, 0x7f, 0xfd, - 0x80, 0xbd, 0x18, 0x63, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x20, 0xf6, 0xf7, 0x56, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, - 0x74, 0xb8, 0x00, 0x00, 0x00, 0xf0, 0x04, 0xf8, - 0x20, 0x1c, 0x00, 0xf0, 0x1f, 0xf8, 0x10, 0xbd, - 0xb0, 0xb5, 0x0c, 0x4d, 0x04, 0x1c, 0xa8, 0x68, - 0xa0, 0x42, 0x0f, 0xd1, 0x07, 0x20, 0x29, 0x68, - 0x08, 0xf0, 0x8c, 0xfb, 0x68, 0x68, 0x02, 0x22, - 0x07, 0x49, 0x00, 0x28, 0x08, 0x7e, 0x01, 0xd0, - 0x10, 0x43, 0x00, 0xe0, 0x90, 0x43, 0x08, 0x76, - 0x04, 0xf0, 0xc4, 0xf8, 0xa8, 0x68, 0xa0, 0x43, - 0x3c, 0x00, 0xb0, 0xb8, 0x00, 0x00, 0xa8, 0x60, - 0xb0, 0xbd, 0x40, 0x7c, 0x01, 0x00, 0x0c, 0x80, - 0x07, 0x00, 0x0a, 0x49, 0x38, 0xb5, 0x0a, 0x1c, - 0x20, 0x32, 0x94, 0x79, 0x00, 0xab, 0x1c, 0x70, - 0xd2, 0x79, 0x07, 0x4c, 0x5a, 0x70, 0xe2, 0x68, - 0x82, 0x42, 0x02, 0xd1, 0x06, 0x4d, 0x00, 0x23, - 0x6b, 0x70, 0x82, 0x43, 0xe2, 0x60, 0x00, 0xab, - 0x18, 0x88, 0xc8, 0x84, 0x38, 0xbd, 0x00, 0x10, - 0x07, 0x00, 0x3c, 0x00, 0xec, 0xb8, 0x00, 0x00, - 0x40, 0x7c, 0x01, 0x00, 0x00, 0x50, 0x07, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x0a, 0x4c, 0x00, 0x21, - 0x60, 0x69, 0xff, 0xf7, 0x11, 0xff, 0x04, 0x20, - 0x01, 0xf0, 0x46, 0xf9, 0x01, 0xf0, 0x88, 0xfb, - 0x00, 0x22, 0x04, 0x21, 0x04, 0x20, 0x01, 0xf0, - 0x8b, 0xf8, 0x28, 0x1c, 0x01, 0xf0, 0x4a, 0xfa, - 0x60, 0x69, 0xff, 0xf7, 0xa7, 0xff, 0xb0, 0xbd, - 0x40, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x28, 0xb9, - 0x00, 0x00, 0x80, 0xb5, 0x01, 0xf0, 0x77, 0xfa, - 0x80, 0xbd, 0xb0, 0xb5, 0x0d, 0x4d, 0x01, 0x21, - 0x28, 0x69, 0xff, 0xf7, 0xf4, 0xfe, 0xff, 0xf7, - 0x2a, 0xfe, 0x00, 0xf0, 0x2c, 0xfb, 0x00, 0xf0, - 0x84, 0xfa, 0x00, 0x24, 0x00, 0x22, 0x04, 0x21, - 0x20, 0x1c, 0x01, 0xf0, 0x6c, 0xf8, 0x01, 0x34, - 0x24, 0x06, 0x24, 0x0e, 0x04, 0x2c, 0xf5, 0xd3, - 0x28, 0x69, 0xff, 0xf7, 0x86, 0xff, 0x3c, 0x00, - 0x64, 0xb9, 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, - 0x40, 0x7c, 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, - 0x0e, 0x1c, 0x07, 0x4c, 0x17, 0x1c, 0x01, 0x21, - 0x20, 0x69, 0xff, 0xf7, 0xd3, 0xfe, 0x3a, 0x1c, - 0x31, 0x1c, 0x28, 0x1c, 0x01, 0xf0, 0x52, 0xf8, - 0x20, 0x69, 0xff, 0xf7, 0x71, 0xff, 0xf8, 0xbd, - 0x40, 0x7c, 0x01, 0x00, 0xff, 0xb5, 0x89, 0xb0, - 0x06, 0x1c, 0x16, 0x98, 0x1d, 0x1c, 0x00, 0x28, - 0x3c, 0x00, 0xa0, 0xb9, 0x00, 0x00, 0x01, 0xd0, - 0x29, 0x48, 0x14, 0x90, 0x28, 0x68, 0x00, 0x88, - 0x00, 0x06, 0x80, 0x0e, 0x20, 0x28, 0x01, 0xd0, - 0x14, 0x28, 0x17, 0xd1, 0x0a, 0xaa, 0x18, 0x24, - 0x18, 0x21, 0x05, 0xca, 0xff, 0xf7, 0x77, 0xf9, - 0x07, 0x1c, 0x28, 0x1c, 0x01, 0x89, 0xa1, 0x42, - 0x02, 0xdd, 0x00, 0x68, 0x01, 0x19, 0x0b, 0xe0, - 0xc0, 0x68, 0x64, 0x1a, 0x00, 0x28, 0xf5, 0xd1, - 0x0f, 0x21, 0x3c, 0x00, 0xdc, 0xb9, 0x00, 0x00, - 0x86, 0x20, 0xf5, 0xf7, 0x61, 0xfc, 0x00, 0x21, - 0x01, 0xe0, 0x00, 0x21, 0x00, 0x27, 0x18, 0x48, - 0x08, 0x90, 0x80, 0x79, 0x07, 0x90, 0x0c, 0x20, - 0x16, 0x4a, 0x70, 0x43, 0x80, 0x18, 0x04, 0x79, - 0x04, 0x91, 0x12, 0x99, 0x15, 0x98, 0x14, 0x9a, - 0x01, 0x91, 0x03, 0x90, 0x05, 0x97, 0x00, 0x95, - 0x0a, 0xab, 0x02, 0x92, 0x21, 0x1c, 0x30, 0x1c, - 0x0c, 0xcb, 0xf7, 0xf7, 0x3c, 0x00, 0x18, 0xba, - 0x00, 0x00, 0x03, 0xf9, 0x01, 0x25, 0xb5, 0x40, - 0x0c, 0x4e, 0x08, 0x3e, 0x30, 0x78, 0x28, 0x40, - 0x06, 0xd0, 0x20, 0x1c, 0x00, 0xf0, 0xc9, 0xfd, - 0x30, 0x78, 0xa8, 0x43, 0x30, 0x70, 0x03, 0xe0, - 0x20, 0x1c, 0x13, 0x99, 0x00, 0xf0, 0x43, 0xff, - 0x07, 0xa9, 0x03, 0xc9, 0x88, 0x71, 0x0d, 0xb0, - 0xf0, 0xbd, 0x95, 0x24, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0x74, 0x7a, 0x01, 0x00, 0x3c, 0x00, - 0x54, 0xba, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0c, 0x23, 0x09, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x00, 0x79, 0x05, 0x1c, 0x00, 0xf0, 0x92, 0xfe, - 0x28, 0x1c, 0xf7, 0xf7, 0xc7, 0xf8, 0x01, 0x20, - 0x03, 0x4a, 0xa0, 0x40, 0x08, 0x3a, 0x11, 0x78, - 0x81, 0x43, 0x11, 0x70, 0xb0, 0xbd, 0x00, 0x00, - 0x74, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, - 0x20, 0x78, 0x00, 0x28, 0x03, 0xd1, 0x1a, 0x21, - 0x3c, 0x00, 0x90, 0xba, 0x00, 0x00, 0x86, 0x20, - 0xf5, 0xf7, 0x07, 0xfc, 0x20, 0x78, 0x10, 0xbd, - 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x78, 0x70, 0x47, 0x00, 0x00, 0x2c, 0x63, - 0x01, 0x00, 0x80, 0xb5, 0xf6, 0xf7, 0xd1, 0xfe, - 0x00, 0xf0, 0x1b, 0xf9, 0x80, 0xbd, 0xfe, 0xb5, - 0x01, 0x68, 0x05, 0x1c, 0x0c, 0x68, 0x0e, 0x1c, - 0x21, 0x78, 0x88, 0x07, 0x71, 0xd1, 0x68, 0x69, - 0xc2, 0x07, 0x3c, 0x00, 0xcc, 0xba, 0x00, 0x00, - 0x6e, 0xd5, 0x80, 0x07, 0x6d, 0xd5, 0xe8, 0x7a, - 0xc2, 0x07, 0x08, 0x07, 0x09, 0x09, 0x02, 0x91, - 0x45, 0x49, 0x80, 0x0f, 0xd2, 0x0f, 0x00, 0x28, - 0x4f, 0x68, 0x05, 0xd0, 0x01, 0x28, 0x09, 0xd0, - 0x02, 0x28, 0x21, 0xd0, 0x03, 0x28, 0x5b, 0xd1, - 0xff, 0x23, 0x20, 0x1c, 0xa9, 0x7a, 0xf4, 0xf7, - 0x74, 0xfc, 0x55, 0xe0, 0x02, 0x98, 0x0b, 0x28, - 0x0a, 0xd0, 0x0c, 0x28, 0x3c, 0x00, 0x08, 0xbb, - 0x00, 0x00, 0x0f, 0xd0, 0x0d, 0x28, 0x4e, 0xd1, - 0x39, 0x4f, 0xf8, 0x68, 0xf4, 0xf7, 0x61, 0xfc, - 0x00, 0x20, 0xc0, 0x43, 0x5a, 0xe0, 0x35, 0x4f, - 0xa9, 0x7a, 0xbb, 0x68, 0x20, 0x1c, 0xf4, 0xf7, - 0x5b, 0xfc, 0x40, 0xe0, 0x32, 0x4f, 0x38, 0x69, - 0xf4, 0xf7, 0x53, 0xfc, 0x3b, 0xe0, 0x00, 0x21, - 0x01, 0x91, 0x02, 0x99, 0x00, 0x20, 0xff, 0x23, - 0x09, 0x07, 0x01, 0xd4, 0x01, 0x20, 0x3c, 0x00, - 0x44, 0xbb, 0x00, 0x00, 0x13, 0xe0, 0x31, 0x89, - 0x19, 0x29, 0x01, 0xd3, 0x26, 0x7e, 0x07, 0xe0, - 0x15, 0x29, 0x04, 0xd3, 0x18, 0x26, 0x71, 0x1a, - 0x49, 0x19, 0x0e, 0x7b, 0x00, 0xe0, 0x00, 0x26, - 0xb1, 0x06, 0x02, 0xd4, 0x01, 0x20, 0x73, 0x07, - 0x5b, 0x0f, 0x01, 0x21, 0x01, 0x91, 0x00, 0x28, - 0x03, 0xd0, 0xa9, 0x7a, 0x20, 0x1c, 0xf4, 0xf7, - 0x36, 0xfc, 0x01, 0x99, 0x01, 0x29, 0x15, 0xd1, - 0x3c, 0x00, 0x80, 0xbb, 0x00, 0x00, 0xf0, 0x06, - 0xc6, 0x0f, 0x20, 0x88, 0x1b, 0x4f, 0xe4, 0x8a, - 0xf9, 0x6b, 0x00, 0x05, 0xc0, 0x0f, 0x00, 0x29, - 0x1a, 0xd0, 0x4b, 0x1c, 0x18, 0xd0, 0x00, 0x2e, - 0x0a, 0xd0, 0x00, 0x28, 0x08, 0xd0, 0x38, 0x88, - 0x84, 0x42, 0x13, 0xd0, 0x02, 0x98, 0x0c, 0x28, - 0x01, 0xe0, 0x1d, 0xe0, 0x12, 0xe0, 0x0d, 0xd0, - 0x08, 0x1c, 0x01, 0xf0, 0x76, 0xf9, 0x00, 0x28, - 0x03, 0xd1, 0x3c, 0x00, 0xbc, 0xbb, 0x00, 0x00, - 0x00, 0xf0, 0xa6, 0xfa, 0xf4, 0xf7, 0x0a, 0xfc, - 0x00, 0x20, 0xc0, 0x43, 0xf8, 0x63, 0x00, 0x2e, - 0x0d, 0xd0, 0x3c, 0x80, 0x00, 0x20, 0xf8, 0x63, - 0x09, 0xe0, 0x20, 0x88, 0x00, 0x06, 0x80, 0x0e, - 0x20, 0x28, 0x04, 0xd1, 0x04, 0x4f, 0x20, 0x1c, - 0xb9, 0x6a, 0xf4, 0xf7, 0xf8, 0xfb, 0x29, 0x1c, - 0x02, 0x48, 0xfb, 0xf7, 0xef, 0xff, 0xfe, 0xbd, - 0x28, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0xf8, 0xbb, - 0x00, 0x00, 0xa5, 0x9a, 0x00, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x00, 0x78, 0x00, 0x21, 0x00, 0xf0, - 0xfc, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x18, 0x63, - 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, 0x00, 0x28, - 0x1a, 0x68, 0x00, 0xd0, 0x01, 0x1c, 0x10, 0x1c, - 0x19, 0x60, 0x70, 0x47, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x95, 0x75, 0x00, 0x00, 0x05, 0x48, - 0x80, 0xb5, 0x00, 0x7f, 0x24, 0x23, 0x3c, 0x00, - 0x34, 0xbc, 0x00, 0x00, 0x04, 0x49, 0x58, 0x43, - 0x40, 0x18, 0xc0, 0x69, 0xf4, 0xf7, 0xcc, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, - 0x94, 0x46, 0x01, 0x00, 0x02, 0x1c, 0x06, 0x48, - 0x80, 0xb5, 0x81, 0x62, 0x82, 0x60, 0x00, 0x7f, - 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x80, 0x69, 0xf4, 0xf7, 0xb9, 0xfb, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, 0x01, 0x00, - 0x3c, 0x00, 0x70, 0xbc, 0x00, 0x00, 0x80, 0xb5, - 0x00, 0x20, 0x00, 0xf0, 0x3c, 0xfb, 0x00, 0x20, - 0x00, 0xf0, 0x6d, 0xfa, 0x00, 0xf0, 0x65, 0xfa, - 0x04, 0x49, 0xc8, 0x6a, 0x01, 0x30, 0xc8, 0x62, - 0x08, 0x1f, 0x00, 0x88, 0x07, 0xf0, 0xc1, 0xf8, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x06, 0x48, - 0x80, 0xb5, 0x00, 0x21, 0x01, 0x77, 0xc1, 0x6a, - 0x01, 0x31, 0xc1, 0x62, 0x04, 0x38, 0x00, 0x88, - 0x07, 0xf0, 0x3c, 0x00, 0xac, 0xbc, 0x00, 0x00, - 0xb3, 0xf8, 0x03, 0xf0, 0xd1, 0xf9, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, 0x05, 0xf0, - 0xe9, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x28, - 0x03, 0xd1, 0x01, 0x20, 0x04, 0xf0, 0x22, 0xfa, - 0x80, 0xbd, 0x01, 0x20, 0x03, 0xf0, 0xe6, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x03, 0x49, 0x01, 0x20, - 0x49, 0x78, 0x00, 0x29, 0x00, 0xd0, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xbc, - 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x70, 0xb5, - 0x13, 0x4d, 0x28, 0x78, 0x00, 0x28, 0x20, 0xd1, - 0x01, 0x21, 0x2e, 0x1c, 0x70, 0x68, 0xff, 0xf7, - 0x12, 0xfd, 0x00, 0x21, 0x07, 0x20, 0x06, 0xf0, - 0x2a, 0xfb, 0x0d, 0x48, 0x00, 0x24, 0x04, 0x71, - 0x04, 0xf0, 0xed, 0xf8, 0x06, 0xf0, 0xd5, 0xf9, - 0x01, 0x20, 0x28, 0x70, 0x0a, 0x48, 0x04, 0x60, - 0x44, 0x60, 0xf6, 0xf7, 0x4c, 0xfd, 0x3c, 0x00, - 0x24, 0xbd, 0x00, 0x00, 0xf7, 0xf7, 0x5e, 0xf8, - 0xff, 0xf7, 0xa2, 0xff, 0x00, 0xf0, 0xa8, 0xfd, - 0x05, 0x48, 0x71, 0x68, 0x03, 0xf0, 0x20, 0xfb, - 0x01, 0x20, 0x70, 0xbd, 0x2c, 0x63, 0x01, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x80, 0x00, 0x07, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0xb0, 0xb5, 0x1e, 0x4c, - 0x20, 0x78, 0x01, 0x28, 0x35, 0xd1, 0x25, 0x1c, - 0x69, 0x68, 0x1c, 0x48, 0x03, 0xf0, 0x20, 0xfb, - 0x3c, 0x00, 0x60, 0xbd, 0x00, 0x00, 0x04, 0xf0, - 0xf0, 0xf8, 0x1a, 0x48, 0x01, 0x68, 0x49, 0x08, - 0x49, 0x00, 0x01, 0x60, 0x01, 0x68, 0x01, 0x22, - 0x11, 0x43, 0x01, 0x60, 0x00, 0xf0, 0x2b, 0xfe, - 0x00, 0xf0, 0x1b, 0xfc, 0x06, 0xf0, 0x99, 0xf8, - 0xf6, 0xf7, 0x29, 0xfe, 0xf6, 0xf7, 0x2d, 0xfc, - 0x00, 0x20, 0x20, 0x70, 0xff, 0xf7, 0x83, 0xff, - 0x00, 0xf0, 0x8b, 0xfd, 0x0f, 0x48, 0x81, 0x78, - 0x08, 0x22, 0x3c, 0x00, 0x9c, 0xbd, 0x00, 0x00, - 0x91, 0x43, 0x81, 0x70, 0x81, 0x78, 0x11, 0x43, - 0x81, 0x70, 0x0c, 0x49, 0x10, 0x20, 0x08, 0x71, - 0x68, 0x68, 0xff, 0xf7, 0x5f, 0xfd, 0xf7, 0xf7, - 0x39, 0xf8, 0xf6, 0xf7, 0x4d, 0xfd, 0x01, 0x21, - 0x07, 0x20, 0x06, 0xf0, 0xcd, 0xfa, 0x01, 0x20, - 0xb0, 0xbd, 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0xf0, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x3c, 0x00, 0xd8, 0xbd, - 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x03, 0x49, - 0x01, 0x20, 0x89, 0x7a, 0x01, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0xb0, 0xb5, 0x15, 0x4d, 0x04, 0x1c, - 0x28, 0x7a, 0x00, 0x28, 0x20, 0xd1, 0xf9, 0xf7, - 0x00, 0xfc, 0x02, 0x28, 0x1c, 0xd1, 0x01, 0x20, - 0x28, 0x72, 0xe8, 0x68, 0x00, 0x28, 0x10, 0xd0, - 0x20, 0x68, 0x29, 0x68, 0x08, 0x60, 0x3c, 0x00, - 0x14, 0xbe, 0x00, 0x00, 0x69, 0x68, 0x0d, 0x48, - 0x03, 0xf0, 0xc2, 0xfa, 0x01, 0x21, 0x68, 0x68, - 0xff, 0xf7, 0xc8, 0xfc, 0x00, 0x22, 0x24, 0x20, - 0x61, 0x68, 0x07, 0xf0, 0xcf, 0xfb, 0xb0, 0xbd, - 0x00, 0x20, 0x28, 0x72, 0x21, 0x68, 0x01, 0x20, - 0xf4, 0xf7, 0xcf, 0xfa, 0xb0, 0xbd, 0x00, 0x20, - 0x21, 0x68, 0xf4, 0xf7, 0xca, 0xfa, 0xb0, 0xbd, - 0x04, 0x7a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x3c, 0x00, 0x50, 0xbe, 0x00, 0x00, 0x04, 0x48, - 0x80, 0xb5, 0x00, 0x7a, 0x01, 0x28, 0x02, 0xd1, - 0x00, 0x20, 0x02, 0xf0, 0xf0, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x04, 0x7a, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x28, 0x07, 0xd0, 0x80, 0x28, 0x09, 0xd1, - 0x07, 0x48, 0x00, 0x7a, 0x00, 0x28, 0x04, 0xd0, - 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x02, 0xf0, - 0xde, 0xfe, 0x80, 0xbd, 0x0e, 0x21, 0x24, 0x20, - 0xf5, 0xf7, 0x3c, 0x00, 0x8c, 0xbe, 0x00, 0x00, - 0x0b, 0xfa, 0x80, 0xbd, 0x04, 0x7a, 0x01, 0x00, - 0xf8, 0xb5, 0x3a, 0x4e, 0x05, 0x1c, 0xb0, 0x7a, - 0x00, 0x28, 0x69, 0xd1, 0xf9, 0xf7, 0xae, 0xfb, - 0x02, 0x28, 0x65, 0xd1, 0x36, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x61, 0xd0, 0x35, 0x48, 0x71, 0x68, - 0x03, 0xf0, 0x74, 0xfa, 0x01, 0x21, 0x70, 0x68, - 0xff, 0xf7, 0x7a, 0xfc, 0x6c, 0x20, 0xf5, 0xf7, - 0xb9, 0xfc, 0x04, 0x1c, 0x3c, 0x00, 0xc8, 0xbe, - 0x00, 0x00, 0x6c, 0x21, 0xf4, 0xf7, 0xe7, 0xfa, - 0x30, 0x68, 0x2c, 0x22, 0x04, 0x60, 0x29, 0x68, - 0x81, 0x60, 0x69, 0x68, 0xc1, 0x60, 0x00, 0x21, - 0x11, 0x54, 0x81, 0x62, 0xa9, 0x68, 0x00, 0x29, - 0x02, 0xd0, 0xe9, 0x68, 0x01, 0x61, 0x05, 0xe0, - 0x06, 0xf0, 0x5d, 0xff, 0x69, 0x68, 0x40, 0x18, - 0x31, 0x68, 0x08, 0x61, 0x70, 0x68, 0xff, 0xf7, - 0x14, 0xfd, 0x69, 0x21, 0x08, 0x55, 0x3c, 0x00, - 0x04, 0xbf, 0x00, 0x00, 0x00, 0x20, 0xf9, 0xf7, - 0x09, 0xfb, 0x01, 0x27, 0x3b, 0x1c, 0x06, 0x1c, - 0x22, 0x1c, 0x24, 0x32, 0x00, 0x21, 0xf9, 0xf7, - 0x79, 0xfb, 0x1c, 0x48, 0x03, 0x21, 0x00, 0x88, - 0x89, 0x03, 0x08, 0x43, 0x21, 0x1c, 0x40, 0x31, - 0x00, 0x91, 0x48, 0x83, 0x18, 0x48, 0x10, 0x21, - 0x60, 0x60, 0x18, 0x48, 0xa0, 0x60, 0xa7, 0x63, - 0x67, 0x63, 0x00, 0x20, 0xf5, 0xf7, 0x4c, 0xfb, - 0x3c, 0x00, 0x40, 0xbf, 0x00, 0x00, 0xe0, 0x60, - 0x02, 0x89, 0x00, 0x99, 0xca, 0x83, 0x07, 0x68, - 0x31, 0x1c, 0x38, 0x1d, 0x27, 0x61, 0xfe, 0xf7, - 0x8e, 0xfe, 0x38, 0x1c, 0x0a, 0x30, 0x0f, 0x49, - 0xfe, 0xf7, 0x89, 0xfe, 0xa4, 0x20, 0x38, 0x80, - 0x00, 0x20, 0x04, 0xf0, 0xde, 0xfb, 0x00, 0x22, - 0x1f, 0x20, 0x69, 0x68, 0x07, 0xf0, 0x2d, 0xfb, - 0xf8, 0xbd, 0xff, 0xe7, 0x00, 0x20, 0x29, 0x68, - 0xf4, 0xf7, 0x3c, 0x00, 0x7c, 0xbf, 0x00, 0x00, - 0x2e, 0xfa, 0xf8, 0xe7, 0x14, 0x7a, 0x01, 0x00, - 0x80, 0x5a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xfa, 0x60, 0x01, 0x00, 0x99, 0xec, 0x00, 0x00, - 0x15, 0xed, 0x00, 0x00, 0x12, 0x61, 0x01, 0x00, - 0x06, 0x48, 0x80, 0xb5, 0x81, 0x7a, 0x00, 0x29, - 0x07, 0xd0, 0x00, 0x68, 0x04, 0x22, 0x20, 0x30, - 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, 0x02, 0xf0, - 0x6b, 0xfd, 0x80, 0xbd, 0x3c, 0x00, 0xb8, 0xbf, - 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x4c, 0xa0, 0x7a, 0x01, 0x28, 0x03, 0xd1, - 0x06, 0xf0, 0xf1, 0xfe, 0x21, 0x68, 0x88, 0x61, - 0x10, 0xbd, 0x14, 0x7a, 0x01, 0x00, 0x03, 0x1c, - 0x08, 0x1c, 0x1f, 0x49, 0x70, 0xb5, 0x0a, 0x68, - 0x01, 0x2b, 0x1c, 0xd0, 0x80, 0x2b, 0x05, 0xd0, - 0x83, 0x2b, 0x30, 0xd1, 0x88, 0x7a, 0x00, 0x28, - 0x14, 0xd0, 0x29, 0xe0, 0x53, 0x69, 0x3c, 0x00, - 0xf4, 0xbf, 0x00, 0x00, 0x00, 0x2b, 0x0e, 0xd0, - 0x94, 0x69, 0xd5, 0x69, 0x2e, 0x1b, 0x0c, 0x69, - 0x5d, 0x1b, 0x36, 0x1b, 0xb6, 0x10, 0xa4, 0x19, - 0x0c, 0x61, 0xcc, 0x68, 0x2d, 0x1b, 0xad, 0x10, - 0x64, 0x19, 0xcc, 0x60, 0x93, 0x61, 0x02, 0xf0, - 0x81, 0xfd, 0x70, 0xbd, 0x02, 0x28, 0x12, 0xd1, - 0x90, 0x6a, 0x0c, 0x1c, 0x00, 0x28, 0xf8, 0xd0, - 0x07, 0xf0, 0x0e, 0xfa, 0xa0, 0x7a, 0x01, 0x28, - 0x3c, 0x00, 0x30, 0xc0, 0x00, 0x00, 0xf3, 0xd1, - 0x20, 0x68, 0x81, 0x6a, 0x00, 0x29, 0xef, 0xd1, - 0x20, 0x30, 0x01, 0x7b, 0x08, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x70, 0xbd, 0x02, 0xf0, 0x21, 0xfd, - 0x70, 0xbd, 0x0e, 0x21, 0x1f, 0x20, 0xf5, 0xf7, - 0x28, 0xf9, 0x70, 0xbd, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0x02, 0x49, 0x0c, 0x31, 0x03, 0xc9, - 0x40, 0x18, 0x70, 0x47, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0x3c, 0x00, 0x6c, 0xc0, 0x00, 0x00, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x04, 0x22, - 0x20, 0x30, 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, - 0x07, 0xf0, 0xe4, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x4c, - 0x0e, 0x1c, 0xa1, 0x7a, 0x00, 0x29, 0x1c, 0xd0, - 0x21, 0x68, 0x08, 0x61, 0x07, 0xf0, 0x32, 0xfa, - 0x00, 0x28, 0x17, 0xd0, 0x20, 0x68, 0x00, 0x25, - 0x05, 0x62, 0x00, 0x22, 0x3c, 0x00, 0xa8, 0xc0, - 0x00, 0x00, 0x83, 0x21, 0x1f, 0x20, 0x07, 0xf0, - 0x94, 0xfa, 0x60, 0x68, 0xff, 0xf7, 0x03, 0xfc, - 0x21, 0x68, 0x04, 0x22, 0x20, 0x31, 0x08, 0x7b, - 0x2b, 0x1c, 0x90, 0x43, 0x08, 0x73, 0x31, 0x1c, - 0x00, 0x22, 0x1f, 0x20, 0x07, 0xf0, 0x61, 0xfb, - 0x70, 0xbd, 0x20, 0x68, 0x08, 0x22, 0x20, 0x30, - 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, 0x02, 0xf0, - 0xd6, 0xfc, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xc0, 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0x77, 0xfc, 0x00, 0xf0, - 0x6f, 0xfc, 0x00, 0xf0, 0x29, 0xff, 0x00, 0xf0, - 0x5d, 0xfa, 0x00, 0xf0, 0xc5, 0xf8, 0x00, 0xf0, - 0x85, 0xff, 0x80, 0xbd, 0x80, 0xb5, 0xfa, 0xf7, - 0x85, 0xfa, 0x80, 0xbd, 0x01, 0x48, 0xc0, 0x68, - 0x70, 0x47, 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, - 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, - 0x3c, 0x00, 0x20, 0xc1, 0x00, 0x00, 0x02, 0x48, - 0xc1, 0x60, 0x70, 0x47, 0x00, 0x00, 0x81, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x01, 0x48, - 0x02, 0x49, 0xc8, 0x60, 0x70, 0x47, 0x81, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x01, 0x49, - 0x88, 0x61, 0x70, 0x47, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, 0x88, 0x61, - 0x70, 0x47, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x3c, 0x00, 0x5c, 0xc1, 0x00, 0x00, - 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0xc1, 0x61, - 0x70, 0x47, 0x00, 0x00, 0x89, 0x75, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, - 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0x81, 0x62, - 0x70, 0x47, 0x00, 0x00, 0x8d, 0x75, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, - 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0x01, 0x62, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xc1, - 0x00, 0x00, 0x91, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, - 0x01, 0x1c, 0x02, 0x48, 0x01, 0x61, 0x70, 0x47, - 0x00, 0x00, 0x99, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x01, 0x48, 0x02, 0x49, 0x08, 0x61, - 0x70, 0x47, 0x81, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0x80, 0x2a, - 0x80, 0xb5, 0x02, 0xd1, 0x00, 0xf0, 0x3c, 0x00, - 0xd4, 0xc1, 0x00, 0x00, 0x07, 0xf8, 0x80, 0xbd, - 0x1e, 0x21, 0x21, 0x20, 0xf5, 0xf7, 0x62, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x10, 0x4d, - 0x04, 0x1c, 0xa8, 0x6b, 0x01, 0x30, 0xa8, 0x63, - 0x69, 0x6b, 0x09, 0x1a, 0x28, 0x1c, 0x00, 0x6b, - 0x0c, 0x29, 0x03, 0xd9, 0x00, 0x21, 0xff, 0xf7, - 0x91, 0xfa, 0x03, 0xe0, 0x08, 0x29, 0x01, 0xd1, - 0xff, 0xf7, 0x32, 0xfb, 0x20, 0x1c, 0x00, 0xf0, - 0x3c, 0x00, 0x10, 0xc2, 0x00, 0x00, 0x4d, 0xf9, - 0x60, 0x69, 0x40, 0x07, 0x01, 0xd5, 0x03, 0xf0, - 0x0c, 0xfc, 0x20, 0x1c, 0xe9, 0x6a, 0xf4, 0xf7, - 0xdb, 0xf8, 0xb0, 0xbd, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, - 0x01, 0x1c, 0x02, 0x48, 0x41, 0x62, 0x70, 0x47, - 0x00, 0x00, 0xb5, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x03, 0x49, 0x01, 0x20, 0x09, 0x6c, - 0x00, 0x29, 0x3c, 0x00, 0x4c, 0xc2, 0x00, 0x00, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0xe1, 0x6b, 0x00, 0x29, 0x01, 0xd1, 0xe0, 0x63, - 0x04, 0xe0, 0x81, 0x42, 0x02, 0xd0, 0x00, 0x20, - 0xc0, 0x43, 0xf8, 0xe7, 0x06, 0xf0, 0x9c, 0xfd, - 0x20, 0x64, 0x10, 0xbd, 0x28, 0x7a, 0x01, 0x00, - 0x01, 0x48, 0x00, 0x6c, 0x70, 0x47, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0x88, 0xc2, - 0x00, 0x00, 0x05, 0x49, 0x80, 0xb5, 0x00, 0x20, - 0x48, 0x63, 0x88, 0x63, 0xff, 0x21, 0x09, 0x31, - 0x15, 0x22, 0x10, 0x20, 0xf6, 0xf7, 0xfb, 0xf9, - 0x80, 0xbd, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, - 0x81, 0x60, 0x70, 0x47, 0x00, 0x00, 0xc1, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x3c, 0x00, - 0xc4, 0xc2, 0x00, 0x00, 0x02, 0x48, 0xc1, 0x62, - 0x70, 0x47, 0x00, 0x00, 0xc5, 0x75, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, - 0x00, 0x28, 0x5a, 0x68, 0x00, 0xd0, 0x01, 0x1c, - 0x10, 0x1c, 0x59, 0x60, 0x70, 0x47, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0xc9, 0x75, 0x00, 0x00, - 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, - 0x02, 0x48, 0x41, 0x61, 0x70, 0x47, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xc3, 0x00, 0x00, 0xcd, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x0f, 0x4b, - 0x10, 0xb5, 0xd9, 0x68, 0x00, 0x29, 0x19, 0xd0, - 0x0e, 0x4c, 0x00, 0x21, 0xca, 0x00, 0x12, 0x19, - 0x40, 0x3a, 0xd2, 0x6b, 0x82, 0x42, 0x02, 0xda, - 0x01, 0x31, 0x03, 0x29, 0xf6, 0xd3, 0x48, 0x1c, - 0x1a, 0x78, 0x00, 0x06, 0x00, 0x0e, 0x90, 0x42, - 0x08, 0xd0, 0x18, 0x70, 0x08, 0x06, 0x00, 0x0e, - 0x04, 0x1c, 0x3c, 0x00, 0x3c, 0xc3, 0x00, 0x00, - 0xf6, 0xf7, 0xba, 0xfa, 0x20, 0x1c, 0x03, 0xf0, - 0x1b, 0xfd, 0x10, 0xbd, 0x18, 0x63, 0x01, 0x00, - 0x3c, 0x42, 0x01, 0x00, 0x10, 0xb5, 0x14, 0x4c, - 0xe1, 0x68, 0x00, 0x29, 0x22, 0xd0, 0x21, 0x78, - 0x12, 0x4b, 0xca, 0x00, 0xd2, 0x18, 0x40, 0x3a, - 0xd3, 0x6b, 0x83, 0x42, 0x02, 0xda, 0x48, 0x1c, - 0x20, 0x70, 0x0b, 0xe0, 0x92, 0x6b, 0x82, 0x42, - 0x14, 0xdd, 0xff, 0x31, 0x3c, 0x00, 0x78, 0xc3, - 0x00, 0x00, 0x08, 0x06, 0x00, 0x0e, 0x20, 0x70, - 0x03, 0xd1, 0x19, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x8e, 0xff, 0x20, 0x78, 0xff, 0x30, 0x00, 0x06, - 0x00, 0x0e, 0xf6, 0xf7, 0x90, 0xfa, 0x20, 0x78, - 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x03, 0xf0, - 0xee, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x18, 0x63, - 0x01, 0x00, 0x3c, 0x42, 0x01, 0x00, 0x09, 0x48, - 0x00, 0x21, 0x01, 0x81, 0x41, 0x81, 0x3c, 0x00, - 0xb4, 0xc3, 0x00, 0x00, 0x81, 0x81, 0xc1, 0x81, - 0x07, 0x4a, 0x02, 0x80, 0x01, 0x23, 0xdb, 0x02, - 0x43, 0x80, 0x82, 0x80, 0xc2, 0x80, 0x41, 0x76, - 0x31, 0x21, 0x81, 0x76, 0x01, 0x21, 0x01, 0x76, - 0x70, 0x47, 0x00, 0x00, 0x30, 0x80, 0x07, 0x00, - 0xff, 0xff, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, - 0xf6, 0xf7, 0xf8, 0xf8, 0x01, 0x20, 0xf6, 0xf7, - 0xdb, 0xfc, 0x01, 0x20, 0xf6, 0xf7, 0x5a, 0xfa, - 0x3c, 0x00, 0xf0, 0xc3, 0x00, 0x00, 0x01, 0x20, - 0x00, 0xf0, 0xf1, 0xfd, 0x01, 0x20, 0xf7, 0xf7, - 0xc6, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, - 0x11, 0x4c, 0x00, 0x29, 0x07, 0xd1, 0x00, 0x28, - 0x02, 0xd1, 0x01, 0x20, 0xe0, 0x60, 0x06, 0xe0, - 0x00, 0x21, 0xe1, 0x60, 0x03, 0xe0, 0x01, 0x29, - 0x07, 0xd1, 0x00, 0x28, 0x01, 0xd0, 0x20, 0x70, - 0x03, 0xe0, 0x18, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x3c, 0xff, 0x3c, 0x00, 0x2c, 0xc4, 0x00, 0x00, - 0x20, 0x78, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, - 0xf6, 0xf7, 0x3e, 0xfa, 0x20, 0x78, 0xff, 0x30, - 0x00, 0x06, 0x00, 0x0e, 0x03, 0xf0, 0x9c, 0xfc, - 0x10, 0xbd, 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, - 0x05, 0x49, 0x80, 0xb5, 0x09, 0x68, 0x88, 0x42, - 0x05, 0xd0, 0xfe, 0xf7, 0xff, 0xfb, 0x00, 0xf0, - 0x87, 0xfa, 0xff, 0xf7, 0x2b, 0xfc, 0x80, 0xbd, - 0xa8, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x68, 0xc4, - 0x00, 0x00, 0x01, 0x49, 0x48, 0x70, 0x70, 0x47, - 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x01, 0x49, - 0xc8, 0x60, 0x70, 0x47, 0x00, 0x00, 0x4c, 0x7b, - 0x01, 0x00, 0x03, 0x49, 0x01, 0x20, 0x09, 0x78, - 0x00, 0x29, 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, - 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x04, 0x4a, - 0x00, 0x28, 0x02, 0xd0, 0x90, 0x69, 0x01, 0x30, - 0x90, 0x61, 0xd0, 0x69, 0x40, 0x18, 0x3c, 0x00, - 0xa4, 0xc4, 0x00, 0x00, 0xd0, 0x61, 0x70, 0x47, - 0x90, 0x5c, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0x00, 0x68, 0x05, 0x68, 0x28, 0x1c, 0xfe, 0xf7, - 0x27, 0xff, 0x07, 0x1c, 0x60, 0x69, 0x15, 0x4e, - 0xc0, 0x07, 0xc0, 0x0f, 0x21, 0xd0, 0x01, 0xaa, - 0x02, 0xa9, 0x28, 0x1c, 0xfe, 0xf7, 0x12, 0xff, - 0x38, 0x78, 0xc0, 0x07, 0x0c, 0xd4, 0x60, 0x69, - 0x80, 0x07, 0x08, 0xd5, 0x00, 0xab, 0x18, 0x7a, - 0x3c, 0x00, 0xe0, 0xc4, 0x00, 0x00, 0x00, 0x28, - 0x01, 0xd0, 0x02, 0x28, 0x02, 0xd1, 0x70, 0x6a, - 0x01, 0x30, 0x70, 0x62, 0xfe, 0xbd, 0x00, 0xab, - 0x18, 0x7a, 0x00, 0x28, 0x01, 0xd0, 0x02, 0x28, - 0xf8, 0xd1, 0x70, 0x6a, 0x01, 0x30, 0x70, 0x62, - 0xb0, 0x6a, 0x01, 0x30, 0xb0, 0x62, 0xf1, 0xe7, - 0xf0, 0x6a, 0x01, 0x30, 0xf0, 0x62, 0xed, 0xe7, - 0x00, 0x00, 0x90, 0x5c, 0x01, 0x00, 0x02, 0x49, - 0x48, 0x69, 0x3c, 0x00, 0x1c, 0xc5, 0x00, 0x00, - 0x01, 0x30, 0x48, 0x61, 0x70, 0x47, 0x00, 0x00, - 0x90, 0x5c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x01, 0x1c, 0x40, 0x31, - 0x10, 0xb5, 0x0a, 0x8b, 0x12, 0x07, 0x92, 0x0f, - 0x01, 0x2a, 0x33, 0xd0, 0x4a, 0x78, 0x1a, 0x49, - 0x04, 0x1c, 0x60, 0x34, 0x00, 0x2a, 0x0b, 0x6a, - 0x22, 0xd1, 0xe2, 0x79, 0x01, 0x2a, 0x02, 0xd9, - 0xcc, 0x68, 0x01, 0x34, 0x3c, 0x00, 0x58, 0xc5, - 0x00, 0x00, 0xcc, 0x60, 0x02, 0x2a, 0x02, 0xd9, - 0x0c, 0x69, 0x01, 0x34, 0x0c, 0x61, 0x0c, 0x68, - 0x01, 0x34, 0x0c, 0x60, 0x44, 0x6b, 0x00, 0x2c, - 0x03, 0xd0, 0x04, 0x69, 0x24, 0x7c, 0xe4, 0x07, - 0x02, 0xd5, 0x4c, 0x68, 0x01, 0x34, 0x4c, 0x60, - 0x80, 0x6b, 0x00, 0x28, 0x02, 0xd0, 0x08, 0x6b, - 0x01, 0x30, 0x08, 0x63, 0x00, 0x2a, 0x0c, 0xd0, - 0x98, 0x18, 0x01, 0x38, 0x08, 0xe0, 0x3c, 0x00, - 0x94, 0xc5, 0x00, 0x00, 0x01, 0x2a, 0x01, 0xd0, - 0x02, 0x2a, 0x02, 0xd1, 0x88, 0x68, 0x01, 0x30, - 0x88, 0x60, 0xe0, 0x79, 0x18, 0x18, 0x08, 0x62, - 0x10, 0xbd, 0x00, 0x00, 0x90, 0x5c, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, 0x0a, 0x20, - 0x08, 0x81, 0x70, 0x47, 0xc4, 0x7a, 0x01, 0x00, - 0xf0, 0xb5, 0x32, 0x4f, 0x04, 0x1c, 0x78, 0x78, - 0x85, 0xb0, 0xc0, 0x07, 0xc0, 0x0f, 0x03, 0x90, - 0x3c, 0x00, 0xd0, 0xc5, 0x00, 0x00, 0xb8, 0x78, - 0x02, 0x90, 0x01, 0x20, 0xa0, 0x40, 0x04, 0x90, - 0x39, 0x1c, 0x88, 0x70, 0x2c, 0x48, 0x00, 0x88, - 0x06, 0xf0, 0x0b, 0xfc, 0x01, 0x90, 0xfe, 0xf7, - 0xae, 0xfc, 0x04, 0x30, 0x29, 0x4e, 0xa5, 0x00, - 0x71, 0x59, 0x09, 0x79, 0x88, 0x42, 0x06, 0xd0, - 0xfe, 0xf7, 0xa5, 0xfc, 0x71, 0x59, 0x04, 0x30, - 0x08, 0x71, 0x01, 0x20, 0x78, 0x70, 0x00, 0x20, - 0x78, 0x70, 0x3c, 0x00, 0x0c, 0xc6, 0x00, 0x00, - 0x21, 0x48, 0x01, 0x21, 0x20, 0x4e, 0x30, 0x38, - 0x01, 0x55, 0x71, 0x59, 0x03, 0x20, 0x08, 0x70, - 0x06, 0xf0, 0xc6, 0xfb, 0x06, 0x1c, 0xfe, 0xf7, - 0x91, 0xfc, 0x36, 0x18, 0x0e, 0x36, 0x09, 0xe0, - 0x30, 0x1c, 0x06, 0xf0, 0xf5, 0xfa, 0x00, 0x28, - 0x04, 0xd0, 0x23, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x33, 0xfe, 0x03, 0xe0, 0xf6, 0xf7, 0x34, 0xfb, - 0x00, 0x28, 0xf1, 0xd0, 0x3c, 0x00, 0x48, 0xc6, - 0x00, 0x00, 0x12, 0x48, 0x13, 0x49, 0x3c, 0x38, - 0x00, 0x78, 0x08, 0x72, 0x20, 0x1c, 0xf4, 0xf7, - 0xa2, 0xfa, 0x0e, 0x4e, 0x71, 0x59, 0x08, 0x71, - 0x03, 0x98, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x21, - 0x79, 0x70, 0x09, 0x48, 0x00, 0x88, 0x01, 0x99, - 0x06, 0xf0, 0xbd, 0xfb, 0x02, 0x98, 0xb8, 0x70, - 0x09, 0x49, 0x49, 0x79, 0x04, 0x98, 0x88, 0x42, - 0x03, 0xd0, 0x24, 0x21, 0x86, 0x20, 0x3c, 0x00, - 0x84, 0xc6, 0x00, 0x00, 0xf4, 0xf7, 0x0e, 0xfe, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x50, 0x07, 0x00, - 0xd0, 0x79, 0x01, 0x00, 0x10, 0x7b, 0x01, 0x00, - 0x80, 0x80, 0x07, 0x00, 0x50, 0x80, 0x07, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, 0x05, 0x28, - 0x01, 0xd3, 0xf4, 0xf7, 0x29, 0xfe, 0x05, 0x2d, - 0x01, 0xd3, 0xf4, 0xf7, 0x25, 0xfe, 0x0b, 0x4a, - 0xa8, 0x00, 0x11, 0x58, 0xa0, 0x00, 0x10, 0x58, - 0x3c, 0x00, 0xc0, 0xc6, 0x00, 0x00, 0x0e, 0xc9, - 0x0e, 0xc0, 0x06, 0x21, 0x06, 0x22, 0x06, 0x48, - 0x69, 0x43, 0x2a, 0x38, 0x09, 0x18, 0x62, 0x43, - 0x10, 0x18, 0x06, 0x22, 0xf3, 0xf7, 0x0f, 0xff, - 0x02, 0x48, 0x30, 0x38, 0x41, 0x5d, 0x01, 0x55, - 0xb0, 0xbd, 0x10, 0x7b, 0x01, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0e, 0x48, 0x0d, 0x1c, 0x80, 0x78, - 0x01, 0x21, 0xa1, 0x40, 0x08, 0x40, 0x03, 0xd0, - 0x01, 0x21, 0x3c, 0x00, 0xfc, 0xc6, 0x00, 0x00, - 0x86, 0x20, 0xf4, 0xf7, 0xd1, 0xfd, 0x06, 0x21, - 0x06, 0x22, 0x09, 0x48, 0x69, 0x43, 0x09, 0x18, - 0x62, 0x43, 0x10, 0x18, 0x06, 0x22, 0xf3, 0xf7, - 0xf1, 0xfe, 0x20, 0x1c, 0xf4, 0xf7, 0x40, 0xfa, - 0x03, 0x4a, 0xa1, 0x00, 0x2a, 0x32, 0x51, 0x58, - 0x08, 0x71, 0xb0, 0xbd, 0x00, 0x50, 0x07, 0x00, - 0xe6, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0x48, 0x60, 0x3c, 0x00, 0x38, 0xc7, - 0x00, 0x00, 0x07, 0xf0, 0x32, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0xd4, 0x7a, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, - 0xd8, 0xfd, 0x07, 0x49, 0x08, 0x7a, 0x07, 0x4a, - 0x10, 0x70, 0x01, 0x20, 0x08, 0x72, 0xfe, 0xf7, - 0xf4, 0xfb, 0x04, 0x4a, 0x04, 0x30, 0xa1, 0x00, - 0x3c, 0x32, 0x51, 0x58, 0x08, 0x71, 0x10, 0xbd, - 0x00, 0x00, 0x80, 0x80, 0x07, 0x00, 0x3c, 0x00, - 0x74, 0xc7, 0x00, 0x00, 0xd4, 0x7a, 0x01, 0x00, - 0x03, 0x49, 0x80, 0xb5, 0x01, 0x20, 0x48, 0x60, - 0x07, 0xf0, 0x0e, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0xd4, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, 0xb4, 0xfd, - 0x20, 0x1c, 0xf5, 0xf7, 0x8f, 0xfe, 0x00, 0x21, - 0x20, 0x1c, 0xfb, 0xf7, 0x31, 0xfd, 0x01, 0x21, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x09, 0x04, - 0x3c, 0x00, 0xb0, 0xc7, 0x00, 0x00, 0x09, 0x0c, - 0x20, 0x1c, 0x04, 0xf0, 0x22, 0xfa, 0x10, 0xbd, - 0x00, 0x00, 0x06, 0x49, 0x01, 0x20, 0x05, 0x4b, - 0x88, 0x60, 0x00, 0x20, 0x3c, 0x33, 0x00, 0x21, - 0x82, 0x00, 0x9a, 0x58, 0x11, 0x70, 0x01, 0x30, - 0x05, 0x28, 0xf9, 0xdb, 0x70, 0x47, 0xd4, 0x7a, - 0x01, 0x00, 0x0f, 0x49, 0x38, 0xb5, 0x00, 0x20, - 0x88, 0x60, 0x0e, 0x48, 0x01, 0x1c, 0x20, 0x31, - 0x8a, 0x79, 0x3c, 0x00, 0xec, 0xc7, 0x00, 0x00, - 0x00, 0xab, 0x1a, 0x70, 0xc9, 0x79, 0x0a, 0x4c, - 0x09, 0x4d, 0x59, 0x70, 0x0c, 0x34, 0x3c, 0x35, - 0x00, 0x21, 0x03, 0x22, 0x63, 0x5c, 0x00, 0x2b, - 0x02, 0xd0, 0x8b, 0x00, 0xeb, 0x58, 0x1a, 0x70, - 0x01, 0x31, 0x05, 0x29, 0xf6, 0xdb, 0x00, 0xab, - 0x19, 0x88, 0xc1, 0x84, 0x38, 0xbd, 0x00, 0x00, - 0xd4, 0x7a, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0xff, 0xb5, 0x14, 0x4f, 0x3c, 0x00, 0x28, 0xc8, - 0x00, 0x00, 0x04, 0x1c, 0xbe, 0x79, 0x0d, 0x1c, - 0x81, 0xb0, 0x0f, 0x20, 0x00, 0xf0, 0xb9, 0xf8, - 0x2a, 0x1c, 0x10, 0x4d, 0x00, 0x90, 0x21, 0x1c, - 0x28, 0x1c, 0xf4, 0xf7, 0xde, 0xfc, 0x21, 0x1c, - 0xa8, 0x1d, 0x03, 0x9a, 0xf4, 0xf7, 0xd9, 0xfc, - 0x21, 0x1c, 0x28, 0x1c, 0x0c, 0x30, 0x04, 0x9a, - 0xf4, 0xf7, 0xd3, 0xfc, 0x21, 0x1c, 0x28, 0x1c, - 0x12, 0x30, 0x0a, 0x9a, 0xf4, 0xf7, 0x3c, 0x00, - 0x64, 0xc8, 0x00, 0x00, 0xcd, 0xfc, 0x07, 0xf0, - 0x9b, 0xf8, 0x00, 0x98, 0x00, 0xf0, 0x76, 0xf8, - 0xbe, 0x71, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0x20, 0x10, 0x07, 0x00, 0xe6, 0x7a, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x20, 0xf6, 0xf7, 0x26, 0xf8, - 0x07, 0x49, 0x88, 0x78, 0x00, 0x09, 0x00, 0x01, - 0x88, 0x70, 0x00, 0x24, 0x20, 0x1c, 0xf5, 0xf7, - 0x11, 0xfe, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, - 0x3c, 0x00, 0xa0, 0xc8, 0x00, 0x00, 0x04, 0x2c, - 0xf7, 0xd3, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x50, - 0x07, 0x00, 0x80, 0xb5, 0x02, 0xf0, 0xe3, 0xfb, - 0x03, 0x48, 0x81, 0x78, 0x0f, 0x22, 0x11, 0x43, - 0x81, 0x70, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x50, - 0x07, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, 0x17, 0xfd, - 0xa6, 0x00, 0x00, 0x2d, 0x11, 0x4f, 0x07, 0xd1, - 0xb8, 0x59, 0x3c, 0x00, 0xdc, 0xc8, 0x00, 0x00, - 0x81, 0x68, 0x00, 0x29, 0x0e, 0xd1, 0x40, 0x78, - 0x00, 0x28, 0x0b, 0xd0, 0x02, 0xe0, 0xff, 0x35, - 0x2d, 0x06, 0x2d, 0x0e, 0x29, 0x1c, 0x20, 0x1c, - 0xfb, 0xf7, 0x88, 0xfc, 0x01, 0x1c, 0x20, 0x1c, - 0x04, 0xf0, 0x7e, 0xf9, 0x06, 0x49, 0x01, 0x20, - 0x30, 0x39, 0x08, 0x55, 0x04, 0x48, 0x3c, 0x38, - 0x80, 0x68, 0x00, 0x28, 0x02, 0xd1, 0xb9, 0x59, - 0x03, 0x20, 0x08, 0x70, 0x3c, 0x00, 0x18, 0xc9, - 0x00, 0x00, 0xf8, 0xbd, 0x00, 0x00, 0x10, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0x04, 0xf0, 0xcd, 0xf9, - 0x80, 0xbd, 0x10, 0xb5, 0x04, 0x1c, 0x05, 0x28, - 0x01, 0xd3, 0xf4, 0xf7, 0xe6, 0xfc, 0x20, 0x1c, - 0xf5, 0xf7, 0xc1, 0xfd, 0x00, 0x20, 0x05, 0x4a, - 0xa1, 0x00, 0x51, 0x58, 0x88, 0x60, 0x04, 0x49, - 0x88, 0x78, 0x01, 0x22, 0xa2, 0x40, 0x10, 0x43, - 0x88, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xc9, 0x00, 0x00, 0x10, 0x7b, 0x01, 0x00, - 0x00, 0x50, 0x07, 0x00, 0x02, 0x4a, 0x91, 0x78, - 0x08, 0x43, 0x90, 0x70, 0x70, 0x47, 0x00, 0x00, - 0x00, 0x50, 0x07, 0x00, 0xf8, 0xb5, 0x0c, 0x4f, - 0xbe, 0x79, 0x0f, 0x20, 0x00, 0xf0, 0x18, 0xf8, - 0x05, 0x1c, 0x00, 0x24, 0x20, 0x1c, 0xf4, 0xf7, - 0x0d, 0xf9, 0x08, 0x4a, 0xa1, 0x00, 0x51, 0x58, - 0x08, 0x71, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, - 0x3c, 0x00, 0x90, 0xc9, 0x00, 0x00, 0x04, 0x2c, - 0xf3, 0xd3, 0x28, 0x1c, 0xff, 0xf7, 0xe1, 0xff, - 0xbe, 0x71, 0xf8, 0xbd, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0x10, 0x7b, 0x01, 0x00, 0xb0, 0xb5, - 0x08, 0x49, 0x8d, 0x78, 0x8a, 0x78, 0x05, 0x40, - 0x82, 0x43, 0x8a, 0x70, 0x06, 0xf0, 0xf9, 0xf9, - 0x04, 0x1c, 0x0a, 0x34, 0x20, 0x1c, 0x06, 0xf0, - 0x34, 0xf9, 0x00, 0x28, 0xfa, 0xd0, 0x28, 0x1c, - 0xb0, 0xbd, 0x3c, 0x00, 0xcc, 0xc9, 0x00, 0x00, - 0x00, 0x50, 0x07, 0x00, 0x01, 0x49, 0x0a, 0x20, - 0x08, 0x81, 0x70, 0x47, 0x38, 0x7b, 0x01, 0x00, - 0xf8, 0xb5, 0x10, 0x48, 0x04, 0x26, 0x04, 0x1c, - 0xe0, 0x34, 0x05, 0x1c, 0x38, 0x3d, 0x00, 0x27, - 0x20, 0x1c, 0x1c, 0x30, 0xe4, 0x60, 0xa0, 0x61, - 0x27, 0x61, 0x0b, 0x48, 0xa6, 0x82, 0xe0, 0x61, - 0x27, 0x62, 0xa7, 0x62, 0x06, 0x20, 0xa0, 0x84, - 0x20, 0x1c, 0xfe, 0xf7, 0x3c, 0x00, 0x08, 0xca, - 0x00, 0x00, 0x87, 0xfc, 0x20, 0x1c, 0x0c, 0x30, - 0xf6, 0xf7, 0xb7, 0xf9, 0x05, 0x49, 0x38, 0x3c, - 0xac, 0x42, 0x08, 0x80, 0xe7, 0xd1, 0xf8, 0xbd, - 0x00, 0x00, 0xd4, 0xe4, 0x01, 0x00, 0x12, 0x61, - 0x01, 0x00, 0x48, 0x7b, 0x01, 0x00, 0xf7, 0xb5, - 0x05, 0x1c, 0x0c, 0x23, 0x0f, 0x1c, 0x12, 0x49, - 0x58, 0x43, 0x44, 0x18, 0x20, 0x88, 0x06, 0xf0, - 0xea, 0xf9, 0xa0, 0x78, 0x01, 0x28, 0x3c, 0x00, - 0x44, 0xca, 0x00, 0x00, 0x1a, 0xd1, 0x66, 0x68, - 0x02, 0x2f, 0x05, 0xd1, 0x5c, 0x20, 0x80, 0x5b, - 0x02, 0x99, 0x00, 0x09, 0x88, 0x42, 0x11, 0xd1, - 0x28, 0x1c, 0xfe, 0xf7, 0xfb, 0xff, 0x30, 0x1c, - 0xf9, 0xf7, 0xfa, 0xfd, 0x04, 0x20, 0xa0, 0x70, - 0x39, 0x1c, 0x28, 0x1c, 0xfb, 0xf7, 0xf4, 0xf8, - 0x03, 0x4a, 0xe8, 0x00, 0x3c, 0x32, 0x11, 0x58, - 0x01, 0x31, 0x11, 0x50, 0xfe, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xca, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x01, 0x20, 0x06, 0x4a, 0x00, 0x21, - 0x0c, 0x23, 0x4b, 0x43, 0x9b, 0x18, 0x9b, 0x78, - 0x00, 0x2b, 0x00, 0xd0, 0x00, 0x20, 0x01, 0x31, - 0x04, 0x29, 0xf5, 0xdb, 0x70, 0x47, 0x60, 0x7b, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0xff, 0xf7, - 0xea, 0xfc, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x21, - 0x0c, 0x20, 0xf4, 0xf7, 0xf6, 0xfb, 0x26, 0x1c, - 0x60, 0x36, 0x3c, 0x00, 0xbc, 0xca, 0x00, 0x00, - 0x00, 0x21, 0xf1, 0x71, 0xe1, 0x64, 0x60, 0x6b, - 0x25, 0x1c, 0x40, 0x35, 0x00, 0x28, 0x31, 0xd0, - 0xff, 0xf7, 0x04, 0xf9, 0x01, 0x22, 0x12, 0x03, - 0x00, 0x28, 0x20, 0x69, 0x01, 0x88, 0x01, 0xd0, - 0x91, 0x43, 0x00, 0xe0, 0x11, 0x43, 0x01, 0x80, - 0x20, 0x69, 0x01, 0x22, 0x00, 0x88, 0xd2, 0x02, - 0x28, 0x83, 0x20, 0x1c, 0x58, 0x30, 0x01, 0x88, - 0x91, 0x43, 0x01, 0x80, 0x3c, 0x00, 0xf8, 0xca, - 0x00, 0x00, 0xa3, 0x6b, 0x52, 0x08, 0x00, 0x2b, - 0x10, 0xd0, 0x91, 0x43, 0x01, 0x80, 0x28, 0x8b, - 0x00, 0x07, 0x80, 0x0f, 0x01, 0x28, 0x15, 0xd0, - 0x2e, 0x20, 0x01, 0x5d, 0x20, 0x69, 0x04, 0x30, - 0xf8, 0xf7, 0x41, 0xfd, 0x61, 0x6a, 0xfe, 0xf7, - 0xa8, 0xf9, 0x04, 0xe0, 0x11, 0x43, 0x01, 0x80, - 0x20, 0x1c, 0xfb, 0xf7, 0xcc, 0xfb, 0x68, 0x83, - 0x04, 0xe0, 0x20, 0x69, 0x41, 0x80, 0x3c, 0x00, - 0x34, 0xcb, 0x00, 0x00, 0xa8, 0x8b, 0x21, 0x69, - 0xc8, 0x82, 0xe0, 0x68, 0xf6, 0xf7, 0x20, 0xf9, - 0x30, 0x80, 0x60, 0x6d, 0x00, 0x28, 0x04, 0xd0, - 0x00, 0x22, 0x03, 0x21, 0x70, 0x7a, 0xfe, 0xf7, - 0x0d, 0xff, 0x20, 0x1c, 0x00, 0xf0, 0xb6, 0xf9, - 0x70, 0x7a, 0x06, 0xf0, 0x45, 0xf8, 0x70, 0xbd, - 0xb0, 0xb5, 0x00, 0x24, 0x06, 0xf0, 0x22, 0xf9, - 0x09, 0x4a, 0x00, 0x21, 0x0c, 0x23, 0x4b, 0x43, - 0x3c, 0x00, 0x70, 0xcb, 0x00, 0x00, 0x9d, 0x18, - 0x6b, 0x68, 0x5b, 0x6c, 0xad, 0x78, 0xc3, 0x1a, - 0x01, 0x2d, 0x02, 0xd1, 0xa3, 0x42, 0x00, 0xdd, - 0x1c, 0x1c, 0x01, 0x31, 0x05, 0x29, 0xf0, 0xd3, - 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x06, 0xf0, - 0xa8, 0xfe, 0x0c, 0x20, 0x08, 0x49, 0x60, 0x43, - 0x45, 0x18, 0x28, 0x88, 0x06, 0xf0, 0x35, 0xf9, - 0x68, 0x68, 0x3c, 0x00, 0xac, 0xcb, 0x00, 0x00, - 0x00, 0x28, 0x06, 0xd0, 0x20, 0x30, 0x00, 0x7b, - 0x01, 0x28, 0x02, 0xd1, 0x20, 0x1c, 0xff, 0xf7, - 0xa3, 0xfa, 0xb0, 0xbd, 0x60, 0x7b, 0x01, 0x00, - 0xff, 0xb5, 0x85, 0xb0, 0x0f, 0xae, 0x60, 0xce, - 0x38, 0x20, 0x1e, 0x49, 0x70, 0x43, 0x17, 0x1c, - 0x44, 0x18, 0xff, 0xf7, 0x7f, 0xf8, 0x01, 0x22, - 0x12, 0x03, 0x00, 0x28, 0x03, 0xd0, 0x20, 0x88, - 0x90, 0x43, 0x20, 0x80, 0x3c, 0x00, 0xe8, 0xcb, - 0x00, 0x00, 0x02, 0xe0, 0x21, 0x88, 0x11, 0x43, - 0x21, 0x80, 0x11, 0x98, 0x39, 0x1c, 0xe0, 0x62, - 0x05, 0x98, 0xf8, 0xf7, 0xd0, 0xfc, 0x01, 0x1c, - 0x2b, 0x1c, 0x38, 0x1c, 0x06, 0x9a, 0xfe, 0xf7, - 0x20, 0xf9, 0x60, 0x80, 0x06, 0x22, 0x20, 0x1d, - 0x0f, 0x49, 0xf3, 0xf7, 0x72, 0xfc, 0x23, 0x1c, - 0x08, 0x98, 0x30, 0x33, 0x18, 0x70, 0x0e, 0x98, - 0x0c, 0x49, 0x58, 0x70, 0x65, 0x63, 0x3c, 0x00, - 0x24, 0xcc, 0x00, 0x00, 0x00, 0x20, 0x02, 0x90, - 0x01, 0x22, 0x04, 0x92, 0x09, 0x48, 0x03, 0x91, - 0x5a, 0x78, 0x01, 0x88, 0x01, 0x92, 0x00, 0x91, - 0x19, 0x78, 0x24, 0x3b, 0x30, 0x1c, 0x62, 0x6b, - 0xfe, 0xf7, 0xa8, 0xfe, 0x09, 0xb0, 0xf0, 0xbd, - 0xd4, 0xe4, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00, - 0x5d, 0x4e, 0x00, 0x00, 0x48, 0x7b, 0x01, 0x00, - 0xff, 0xb5, 0x87, 0xb0, 0x10, 0x98, 0x12, 0xaf, - 0x3c, 0x00, 0x60, 0xcc, 0x00, 0x00, 0x8c, 0x46, - 0xa2, 0xcf, 0x4c, 0x23, 0x30, 0x4c, 0x6b, 0x43, - 0x1c, 0x19, 0x16, 0x1c, 0x15, 0x9a, 0x27, 0x85, - 0x27, 0x1c, 0x30, 0x37, 0x06, 0x97, 0x05, 0x97, - 0x00, 0x23, 0x3b, 0x73, 0x05, 0x9f, 0x78, 0x73, - 0x11, 0x98, 0x27, 0x1c, 0x60, 0x64, 0x61, 0x60, - 0x22, 0x60, 0x40, 0x37, 0x3e, 0x70, 0x61, 0x46, - 0x61, 0x87, 0x07, 0x98, 0x31, 0x1c, 0xf8, 0xf7, - 0x80, 0xfc, 0x3c, 0x00, 0x9c, 0xcc, 0x00, 0x00, - 0x05, 0x99, 0xc8, 0x73, 0x0a, 0x98, 0x78, 0x70, - 0x30, 0x1c, 0xfe, 0xf7, 0x73, 0xf8, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0x41, 0x00, 0x02, 0x20, 0x01, 0x40, 0x11, 0x9a, - 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x08, 0x43, 0x38, 0x72, 0x20, 0x1c, 0x2e, 0x30, - 0x07, 0x99, 0xfd, 0xf7, 0xcf, 0xff, 0x28, 0x1c, - 0x04, 0xf0, 0xae, 0xf8, 0x3c, 0x00, 0xd8, 0xcc, - 0x00, 0x00, 0xfe, 0xf7, 0xfe, 0xff, 0x4c, 0x22, - 0x12, 0x4b, 0x6a, 0x43, 0xd2, 0x18, 0x01, 0x21, - 0x09, 0x03, 0x2a, 0x32, 0x00, 0x28, 0x04, 0xd0, - 0x10, 0x1c, 0x12, 0x88, 0x8a, 0x43, 0x02, 0x80, - 0x02, 0xe0, 0x10, 0x88, 0x08, 0x43, 0x10, 0x80, - 0x0b, 0x49, 0x00, 0x20, 0x03, 0x91, 0x06, 0x99, - 0x02, 0x90, 0x00, 0x22, 0x04, 0x92, 0x08, 0x48, - 0x0a, 0x7b, 0x41, 0x88, 0x23, 0x1c, 0x3c, 0x00, - 0x14, 0xcd, 0x00, 0x00, 0x01, 0x92, 0x00, 0x91, - 0x79, 0x78, 0x08, 0x33, 0x28, 0x1c, 0x62, 0x68, - 0xfe, 0xf7, 0x38, 0xfe, 0x0b, 0xb0, 0xf0, 0xbd, - 0x58, 0xe3, 0x01, 0x00, 0x75, 0x4f, 0x00, 0x00, - 0x3c, 0x7c, 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, - 0x01, 0x28, 0x27, 0xd0, 0x80, 0x28, 0x30, 0xd1, - 0xe0, 0x6c, 0x00, 0x28, 0x08, 0xd0, 0x69, 0x20, - 0x00, 0x5d, 0x18, 0x49, 0xc0, 0x00, 0x40, 0x18, - 0x3c, 0x00, 0x50, 0xcd, 0x00, 0x00, 0x04, 0x30, - 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x20, 0x1c, - 0xff, 0xf7, 0xe9, 0xfb, 0x13, 0x4d, 0x50, 0x3d, - 0xe8, 0x68, 0x00, 0x28, 0x05, 0xd0, 0x2e, 0x20, - 0x00, 0x5d, 0xfe, 0xf7, 0x10, 0xf8, 0x02, 0xf0, - 0x42, 0xfe, 0x20, 0x1c, 0x61, 0x68, 0xf3, 0xf7, - 0x2f, 0xfb, 0x40, 0x34, 0x60, 0x78, 0x00, 0x28, - 0x02, 0xd1, 0x06, 0xf0, 0x12, 0xf8, 0xa8, 0x60, - 0xb0, 0xbd, 0x3c, 0x00, 0x8c, 0xcd, 0x00, 0x00, - 0x20, 0x06, 0x00, 0x0e, 0x81, 0x28, 0xfa, 0xd1, - 0x22, 0x0c, 0x20, 0x04, 0x00, 0x0e, 0x02, 0x21, - 0xfe, 0xf7, 0xe6, 0xfd, 0xb0, 0xbd, 0x0a, 0x21, - 0x0c, 0x20, 0xf4, 0xf7, 0x7d, 0xfa, 0xb0, 0xbd, - 0x9c, 0x7b, 0x01, 0x00, 0xf8, 0xb5, 0x18, 0x4e, - 0x18, 0x4f, 0x05, 0x1c, 0x34, 0x79, 0xb8, 0x79, - 0x00, 0x90, 0x20, 0x1c, 0xf5, 0xf7, 0x7c, 0xff, - 0x00, 0x28, 0x06, 0xd0, 0x3c, 0x00, 0xc8, 0xcd, - 0x00, 0x00, 0x12, 0x48, 0x38, 0x38, 0x40, 0x68, - 0x85, 0x42, 0x01, 0xd1, 0x00, 0x2d, 0x03, 0xd1, - 0x10, 0x21, 0x86, 0x20, 0xf4, 0xf7, 0x63, 0xfa, - 0x0d, 0x49, 0x00, 0x20, 0x38, 0x39, 0x48, 0x60, - 0x04, 0x21, 0x20, 0x1c, 0xff, 0xf7, 0x59, 0xfc, - 0x04, 0x21, 0x20, 0x1c, 0xf5, 0xf7, 0xeb, 0xfe, - 0x0c, 0x21, 0x06, 0x4a, 0x61, 0x43, 0x30, 0x3a, - 0x89, 0x18, 0x0c, 0x71, 0x04, 0x20, 0x3c, 0x00, - 0x04, 0xce, 0x00, 0x00, 0x30, 0x71, 0x00, 0x98, - 0xb8, 0x71, 0x0f, 0x20, 0xff, 0xf7, 0xa6, 0xfd, - 0xf8, 0xbd, 0x00, 0x00, 0xa4, 0x7a, 0x01, 0x00, - 0x20, 0x10, 0x07, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x0f, 0x20, 0xff, 0xf7, 0xc1, 0xfd, 0xf5, 0xf7, - 0x3b, 0xff, 0x01, 0x25, 0x00, 0x28, 0x00, 0xd0, - 0x00, 0x25, 0x16, 0x4e, 0xb0, 0x79, 0x16, 0x4f, - 0x00, 0x90, 0x38, 0x79, 0x04, 0x28, 0x01, 0xd1, - 0x3c, 0x00, 0x40, 0xce, 0x00, 0x00, 0x00, 0x2c, - 0x03, 0xd1, 0x11, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x2c, 0xfa, 0x10, 0x48, 0x29, 0x06, 0x38, 0x38, - 0x44, 0x60, 0x09, 0x0e, 0x0c, 0x1c, 0x04, 0x20, - 0xff, 0xf7, 0x21, 0xfc, 0x03, 0x21, 0x20, 0x1c, - 0xff, 0xf7, 0x41, 0xfc, 0x21, 0x1c, 0x04, 0x20, - 0xf5, 0xf7, 0xaf, 0xfe, 0x0c, 0x21, 0x07, 0x4a, - 0x69, 0x43, 0x04, 0x20, 0x30, 0x3a, 0x89, 0x18, - 0x08, 0x71, 0x3c, 0x00, 0x7c, 0xce, 0x00, 0x00, - 0x3c, 0x71, 0x00, 0x98, 0xb0, 0x71, 0x20, 0x1c, - 0xff, 0xf7, 0x50, 0xfd, 0x04, 0x20, 0xf8, 0xbd, - 0x20, 0x10, 0x07, 0x00, 0xa4, 0x7a, 0x01, 0x00, - 0x0c, 0x23, 0x02, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x80, 0x68, 0x70, 0x47, 0x74, 0x7a, 0x01, 0x00, - 0x60, 0x30, 0xc1, 0x79, 0x80, 0x79, 0x81, 0x42, - 0x01, 0xd9, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xce, - 0x00, 0x00, 0x01, 0x48, 0x80, 0x68, 0x70, 0x47, - 0x00, 0x00, 0x4c, 0x7b, 0x01, 0x00, 0x38, 0xb5, - 0x69, 0x21, 0x09, 0x5c, 0x18, 0x23, 0x10, 0x4a, - 0x59, 0x43, 0x89, 0x18, 0x8a, 0x68, 0x01, 0x32, - 0x8a, 0x60, 0x4b, 0x69, 0xd2, 0x1a, 0xcb, 0x68, - 0x93, 0x42, 0x00, 0xd2, 0xca, 0x60, 0x00, 0x22, - 0x0b, 0x4c, 0x02, 0x60, 0x22, 0x1c, 0x20, 0x32, - 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0x3c, 0x00, - 0xf4, 0xce, 0x00, 0x00, 0xd2, 0x79, 0x5a, 0x70, - 0x0a, 0x68, 0x00, 0x2a, 0x01, 0xd1, 0x48, 0x60, - 0x00, 0xe0, 0x10, 0x60, 0x00, 0xab, 0x08, 0x60, - 0x18, 0x88, 0xe0, 0x84, 0x38, 0xbd, 0x00, 0x00, - 0xc4, 0x7b, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x18, 0x23, 0x0a, 0x49, 0x58, 0x43, 0x41, 0x18, - 0x08, 0x69, 0x01, 0x30, 0x08, 0x61, 0x48, 0x68, - 0x00, 0x28, 0x09, 0xd0, 0x48, 0x69, 0x01, 0x30, - 0x3c, 0x00, 0x30, 0xcf, 0x00, 0x00, 0x48, 0x61, - 0x48, 0x68, 0x02, 0x68, 0x4a, 0x60, 0x00, 0x2a, - 0x00, 0xd1, 0x0a, 0x60, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0xc4, 0x7b, 0x01, 0x00, 0xf8, 0xb5, - 0x12, 0x4e, 0x10, 0x4d, 0x0f, 0x4c, 0x0a, 0x27, - 0x21, 0x1c, 0x00, 0x20, 0xe0, 0x60, 0x2a, 0x31, - 0x22, 0x1c, 0x18, 0x32, 0xa1, 0x60, 0x62, 0x61, - 0x27, 0x82, 0x0c, 0x4a, 0xe0, 0x61, 0xa2, 0x61, - 0x60, 0x62, 0x3c, 0x00, 0x6c, 0xcf, 0x00, 0x00, - 0x06, 0x20, 0x20, 0x84, 0x08, 0x1c, 0xfe, 0xf7, - 0xd7, 0xf9, 0x20, 0x1c, 0x08, 0x30, 0xf5, 0xf7, - 0x01, 0xff, 0x4c, 0x3c, 0xac, 0x42, 0x70, 0x80, - 0xe5, 0xd1, 0xff, 0x20, 0x30, 0x70, 0xf8, 0xbd, - 0x88, 0xe4, 0x01, 0x00, 0x0c, 0xe3, 0x01, 0x00, - 0x3c, 0x7c, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00, - 0xf8, 0xb5, 0x04, 0x1c, 0x0b, 0x48, 0x0e, 0x1c, - 0x17, 0x1c, 0x44, 0x70, 0x3c, 0x00, 0xa8, 0xcf, - 0x00, 0x00, 0x05, 0xf0, 0x00, 0xff, 0x05, 0x1c, - 0x39, 0x1c, 0x30, 0x1c, 0xfd, 0xf7, 0xab, 0xff, - 0x0c, 0x21, 0x05, 0x4a, 0x28, 0x18, 0x0a, 0x30, - 0x61, 0x43, 0x08, 0x32, 0x50, 0x50, 0x03, 0x48, - 0x89, 0x18, 0x00, 0x68, 0x88, 0x60, 0xf8, 0xbd, - 0x00, 0x00, 0x6c, 0x7a, 0x01, 0x00, 0x78, 0x6e, - 0x01, 0x00, 0x70, 0xb5, 0x0b, 0x4e, 0x05, 0x1c, - 0x70, 0x78, 0xff, 0x28, 0x0f, 0xd0, 0x3c, 0x00, - 0xe4, 0xcf, 0x00, 0x00, 0x0c, 0x23, 0x08, 0x4c, - 0x58, 0x43, 0x08, 0x34, 0x20, 0x58, 0x05, 0xf0, - 0x1d, 0xfe, 0x00, 0x28, 0x06, 0xd1, 0x70, 0x78, - 0x0c, 0x23, 0x58, 0x43, 0x00, 0x19, 0x81, 0x68, - 0x29, 0x43, 0x81, 0x60, 0x70, 0xbd, 0x00, 0x00, - 0x6c, 0x7a, 0x01, 0x00, 0x80, 0xb5, 0x30, 0x21, - 0x01, 0x48, 0xf3, 0xf7, 0x43, 0xfa, 0x80, 0xbd, - 0xec, 0xe5, 0x01, 0x00, 0x10, 0xb5, 0x05, 0xf0, - 0x3c, 0x00, 0x20, 0xd0, 0x00, 0x00, 0xc5, 0xfe, - 0x0a, 0x49, 0x44, 0x18, 0x0c, 0xe0, 0x20, 0x1c, - 0x05, 0xf0, 0xf7, 0xfd, 0x00, 0x28, 0x07, 0xd0, - 0xf5, 0xf7, 0x51, 0xfe, 0x00, 0x28, 0x03, 0xd0, - 0x13, 0x21, 0x86, 0x20, 0xf4, 0xf7, 0x31, 0xf9, - 0xf5, 0xf7, 0x49, 0xfe, 0x00, 0x28, 0xee, 0xd1, - 0x10, 0xbd, 0xb0, 0x36, 0x00, 0x00, 0xff, 0xb5, - 0x8b, 0xb0, 0x19, 0x9b, 0x0d, 0x1c, 0x04, 0x1c, - 0x1a, 0x20, 0x3c, 0x00, 0x5c, 0xd0, 0x00, 0x00, - 0x00, 0x2b, 0x16, 0x99, 0x00, 0xd1, 0x18, 0x20, - 0x01, 0x90, 0x14, 0x98, 0x00, 0x28, 0x27, 0xd0, - 0xff, 0x20, 0x19, 0x9b, 0x01, 0x30, 0x00, 0x2b, - 0x01, 0xd1, 0x18, 0x23, 0x00, 0xe0, 0x1a, 0x23, - 0x04, 0x33, 0x82, 0x42, 0x04, 0xd3, 0xd0, 0x1a, - 0x40, 0x08, 0x40, 0x00, 0x00, 0x04, 0x00, 0x0c, - 0x0d, 0x90, 0x6a, 0x48, 0x00, 0x88, 0xc2, 0x1a, - 0x12, 0x04, 0x12, 0x0c, 0x3c, 0x00, 0x98, 0xd0, - 0x00, 0x00, 0x04, 0x92, 0x00, 0x29, 0x08, 0xd0, - 0x89, 0x79, 0x66, 0x4a, 0x49, 0x00, 0x51, 0x5a, - 0x04, 0x9a, 0x51, 0x1a, 0x0a, 0x04, 0x12, 0x0c, - 0x04, 0x92, 0x04, 0x9a, 0x82, 0x42, 0x05, 0xd9, - 0x00, 0x20, 0x04, 0x90, 0x02, 0xe0, 0x60, 0x48, - 0x04, 0x90, 0x0d, 0x90, 0x01, 0x98, 0x01, 0x04, - 0x09, 0x0c, 0x0a, 0x91, 0x00, 0x20, 0xf4, 0xf7, - 0x84, 0xfa, 0x00, 0x90, 0x00, 0x68, 0x3c, 0x00, - 0xd4, 0xd0, 0x00, 0x00, 0x00, 0x26, 0x06, 0x90, - 0x20, 0x60, 0x00, 0x20, 0x05, 0x90, 0x0e, 0x98, - 0x00, 0x24, 0x00, 0x05, 0x00, 0x0c, 0x09, 0x90, - 0x1a, 0x98, 0x0d, 0x9f, 0x40, 0x07, 0x40, 0x0f, - 0x08, 0x90, 0x07, 0x94, 0x03, 0x95, 0x00, 0x2d, - 0x0d, 0xd0, 0x28, 0x89, 0xb8, 0x42, 0x04, 0xd8, - 0x36, 0x18, 0x3f, 0x1a, 0x07, 0xd0, 0xed, 0x68, - 0xf5, 0xe7, 0x39, 0x04, 0x09, 0x0c, 0x28, 0x1c, - 0x3c, 0x00, 0x10, 0xd1, 0x00, 0x00, 0xf4, 0xf7, - 0x38, 0xfb, 0xef, 0xe7, 0x00, 0x2e, 0x02, 0xd1, - 0x07, 0x99, 0x00, 0x29, 0x71, 0xd1, 0x27, 0x1c, - 0x6c, 0x20, 0xf4, 0xf7, 0x88, 0xfb, 0x07, 0x99, - 0x04, 0x1c, 0x00, 0x29, 0x20, 0xd1, 0x07, 0x94, - 0x00, 0x20, 0xa0, 0x61, 0x18, 0x98, 0x27, 0x1c, - 0x60, 0x60, 0x17, 0x98, 0x24, 0x37, 0xa0, 0x60, - 0x06, 0x98, 0x20, 0x61, 0x15, 0x98, 0x0f, 0xc8, - 0x0f, 0xc7, 0x3c, 0x00, 0x4c, 0xd1, 0x00, 0x00, - 0x14, 0x98, 0x5c, 0x21, 0x60, 0x63, 0x09, 0x98, - 0x08, 0x53, 0x19, 0x98, 0x69, 0x21, 0xe0, 0x63, - 0x1b, 0x98, 0x08, 0x55, 0x1c, 0x98, 0x60, 0x65, - 0x19, 0x98, 0x00, 0x28, 0x23, 0xd0, 0x08, 0x98, - 0x06, 0x99, 0x08, 0x83, 0x1f, 0xe0, 0x6c, 0x22, - 0x20, 0x1c, 0x07, 0x99, 0xf3, 0xf7, 0x1a, 0xfa, - 0x3c, 0x60, 0x01, 0x98, 0x62, 0x21, 0x30, 0x18, - 0xc8, 0x53, 0x15, 0x98, 0x3c, 0x00, 0x88, 0xd1, - 0x00, 0x00, 0x40, 0x21, 0x80, 0x7a, 0xc8, 0x55, - 0x00, 0x20, 0xb8, 0x63, 0x06, 0x98, 0x0a, 0x99, - 0xf4, 0xf7, 0x1f, 0xfa, 0xf8, 0x60, 0x02, 0x99, - 0xf4, 0xf7, 0x3b, 0xf9, 0x20, 0x1c, 0x40, 0x30, - 0x81, 0x8b, 0x05, 0x9a, 0x12, 0x07, 0x12, 0x0f, - 0x11, 0x43, 0x81, 0x83, 0x03, 0x98, 0x5e, 0x21, - 0x02, 0x90, 0x01, 0x98, 0x22, 0x4a, 0x30, 0x18, - 0x08, 0x53, 0x12, 0x68, 0x01, 0x21, 0x3c, 0x00, - 0xc4, 0xd1, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x2a, - 0x00, 0xd0, 0x1b, 0x98, 0x00, 0x06, 0x04, 0x9a, - 0x00, 0x0e, 0x96, 0x42, 0x03, 0xd9, 0x2c, 0x22, - 0x11, 0x55, 0x1b, 0x49, 0x04, 0xe0, 0x15, 0x99, - 0x2c, 0x22, 0x09, 0x7a, 0x11, 0x55, 0x19, 0x49, - 0x08, 0x5c, 0x66, 0x21, 0x08, 0x55, 0x1c, 0x98, - 0x00, 0x28, 0x01, 0xd0, 0x1f, 0x20, 0x08, 0x55, - 0x00, 0x2d, 0x03, 0xd0, 0xe8, 0x68, 0x03, 0x90, - 0x3c, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x20, - 0x00, 0xe0, 0x09, 0xe0, 0xe8, 0x60, 0x05, 0x98, - 0x00, 0x26, 0x01, 0x30, 0x00, 0x04, 0x00, 0x0c, - 0x0d, 0x9f, 0x05, 0x90, 0x03, 0x9d, 0x6d, 0xe7, - 0x00, 0x98, 0xe0, 0x60, 0x02, 0x99, 0xf4, 0xf7, - 0xfa, 0xf8, 0x00, 0x20, 0x20, 0x60, 0x01, 0x21, - 0xa1, 0x63, 0x60, 0x34, 0x60, 0x80, 0x07, 0x98, - 0x0f, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x06, 0x61, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0xd2, 0x00, 0x00, - 0x5c, 0x43, 0x01, 0x00, 0x38, 0x09, 0x00, 0x00, - 0x18, 0x67, 0x01, 0x00, 0x0e, 0x61, 0x01, 0x00, - 0x0a, 0x61, 0x01, 0x00, 0x01, 0x48, 0x00, 0x68, - 0x70, 0x47, 0x00, 0x00, 0xc4, 0x6a, 0x01, 0x00, - 0x02, 0x49, 0x09, 0x1d, 0x03, 0xc9, 0x40, 0x18, - 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, - 0x01, 0x48, 0x00, 0x69, 0x70, 0x47, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x78, 0xd2, - 0x00, 0x00, 0x01, 0x48, 0x40, 0x69, 0x70, 0x47, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x48, - 0x80, 0x69, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x4e, 0x00, 0x20, - 0x35, 0x1c, 0x40, 0x35, 0xf0, 0x63, 0x0d, 0xe0, - 0xa0, 0x68, 0xf4, 0xf7, 0x7a, 0xf9, 0xb3, 0x6d, - 0x00, 0x2b, 0x04, 0xd0, 0x00, 0x22, 0x01, 0x20, - 0x61, 0x6b, 0xf3, 0xf7, 0x95, 0xf8, 0x3c, 0x00, - 0xb4, 0xd2, 0x00, 0x00, 0x20, 0x1c, 0xf4, 0xf7, - 0x9d, 0xfa, 0x28, 0x1c, 0xfa, 0xf7, 0x42, 0xfd, - 0x04, 0x1c, 0xec, 0xd1, 0x70, 0xbd, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4f, - 0x00, 0x26, 0xf8, 0x6b, 0x00, 0x28, 0x2c, 0xd0, - 0x38, 0x1c, 0x40, 0x30, 0x00, 0x90, 0x1d, 0xe0, - 0x16, 0x48, 0xb9, 0x6b, 0x02, 0xf0, 0x5c, 0xf8, - 0x00, 0x22, 0x20, 0x1c, 0x14, 0x49, 0x03, 0xf0, - 0x3c, 0x00, 0xf0, 0xd2, 0x00, 0x00, 0x7b, 0xff, - 0x05, 0x1c, 0x04, 0xd1, 0x38, 0x6a, 0x01, 0x30, - 0x38, 0x62, 0x01, 0x36, 0x0d, 0xe0, 0xa0, 0x68, - 0xf4, 0xf7, 0x49, 0xf9, 0xbb, 0x6d, 0x00, 0x2b, - 0x04, 0xd0, 0x00, 0x22, 0x28, 0x1c, 0x61, 0x6b, - 0xf3, 0xf7, 0x64, 0xf8, 0x20, 0x1c, 0xf4, 0xf7, - 0x6c, 0xfa, 0x00, 0x98, 0xfa, 0xf7, 0x11, 0xfd, - 0x04, 0x1c, 0xdc, 0xd1, 0x07, 0x48, 0xb9, 0x6b, - 0x02, 0xf0, 0x3c, 0x00, 0x2c, 0xd3, 0x00, 0x00, - 0x25, 0xf8, 0x00, 0x20, 0xf8, 0x63, 0x30, 0x1c, - 0xf8, 0xbd, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x11, 0x30, 0x00, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0xc8, 0x63, 0x70, 0x47, 0xc4, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0x05, 0x4a, 0x00, 0x21, - 0x1c, 0x23, 0x43, 0x43, 0x9b, 0x18, 0x01, 0x30, - 0x04, 0x28, 0xd9, 0x66, 0x3c, 0x00, 0x68, 0xd3, - 0x00, 0x00, 0xf8, 0xdb, 0xfc, 0xf7, 0xfd, 0xfc, - 0x80, 0xbd, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x49, - 0xc8, 0x64, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x01, 0x49, 0x88, 0x64, 0x70, 0x47, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0d, 0x1c, 0x21, 0x1c, 0x02, 0x8e, - 0x80, 0x6a, 0x40, 0x31, 0xf3, 0xf7, 0x2f, 0xf8, - 0x00, 0x28, 0x16, 0xd1, 0x02, 0x21, 0x3c, 0x00, - 0xa4, 0xd3, 0x00, 0x00, 0x20, 0x1c, 0xf4, 0xf7, - 0x6f, 0xfa, 0xe2, 0x69, 0xc0, 0x00, 0x10, 0x18, - 0x82, 0x8b, 0xab, 0x88, 0x9a, 0x42, 0x04, 0xd1, - 0x82, 0x69, 0x2b, 0x68, 0x9a, 0x42, 0x08, 0xd2, - 0x01, 0xe0, 0x9a, 0x42, 0x05, 0xd2, 0x00, 0x21, - 0x18, 0x30, 0x0c, 0xcd, 0x0c, 0xc0, 0x00, 0xe0, - 0x01, 0x21, 0x08, 0x1c, 0xb0, 0xbd, 0x00, 0x00, - 0xf8, 0xb5, 0x06, 0x1c, 0x00, 0x27, 0x44, 0x68, - 0x3c, 0x00, 0xe0, 0xd3, 0x00, 0x00, 0x0f, 0xe0, - 0x09, 0x49, 0x48, 0x6a, 0x01, 0x30, 0x48, 0x62, - 0xa0, 0x69, 0x00, 0x28, 0x02, 0xd0, 0xf4, 0xf7, - 0x00, 0xfa, 0xa7, 0x61, 0x26, 0x62, 0x25, 0x68, - 0x20, 0x1c, 0xff, 0xf7, 0x52, 0xfb, 0x2c, 0x1c, - 0x00, 0x2c, 0xed, 0xd1, 0xf8, 0xbd, 0xc4, 0x69, - 0x01, 0x00, 0x03, 0x30, 0x07, 0x4a, 0x81, 0x08, - 0x13, 0x68, 0x50, 0x68, 0x1b, 0x68, 0x89, 0x00, - 0x09, 0x18, 0x3c, 0x00, 0x1c, 0xd4, 0x00, 0x00, - 0x8b, 0x42, 0x01, 0xd3, 0x51, 0x60, 0x00, 0xe0, - 0x00, 0x20, 0x90, 0x60, 0x70, 0x47, 0x00, 0x00, - 0x8c, 0x6e, 0x01, 0x00, 0x70, 0xb5, 0x12, 0x4e, - 0x80, 0x38, 0xc5, 0x00, 0x70, 0x59, 0x0c, 0x1c, - 0x00, 0x28, 0x04, 0xd1, 0x01, 0x21, 0x0d, 0x20, - 0xf3, 0xf7, 0x2e, 0xff, 0x0d, 0xe0, 0x20, 0x69, - 0x00, 0x28, 0x05, 0xd1, 0xa8, 0x19, 0x81, 0x88, - 0xe0, 0x68, 0x01, 0xf0, 0x3c, 0x00, 0x58, 0xd4, - 0x00, 0x00, 0x47, 0xfa, 0x20, 0x61, 0x71, 0x59, - 0x20, 0x1c, 0xf2, 0xf7, 0xbb, 0xff, 0x04, 0x1c, - 0x00, 0x2c, 0x07, 0xd0, 0xe0, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0xf4, 0xf7, 0x92, 0xf8, 0x20, 0x1c, - 0xf4, 0xf7, 0xbd, 0xf9, 0x70, 0xbd, 0x54, 0x42, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, - 0x0e, 0x49, 0x06, 0x22, 0xf3, 0xf7, 0x35, 0xf8, - 0x00, 0x26, 0xe6, 0x61, 0x66, 0x62, 0x3c, 0x00, - 0x94, 0xd4, 0x00, 0x00, 0x07, 0x20, 0x30, 0x21, - 0x08, 0x55, 0xe6, 0x63, 0x28, 0x1c, 0xf8, 0xf7, - 0x6b, 0xf8, 0xa0, 0x76, 0x20, 0x1c, 0x14, 0x30, - 0x06, 0x22, 0x29, 0x1c, 0xf3, 0xf7, 0x24, 0xf8, - 0x06, 0x22, 0x29, 0x1c, 0xa0, 0x18, 0xf3, 0xf7, - 0x1f, 0xf8, 0x26, 0x61, 0x70, 0xbd, 0x00, 0x00, - 0x12, 0x61, 0x01, 0x00, 0x80, 0xb5, 0xfd, 0xf7, - 0x85, 0xfe, 0x80, 0xbd, 0x01, 0x49, 0x48, 0x60, - 0x3c, 0x00, 0xd0, 0xd4, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x02, 0x49, - 0x80, 0xb5, 0x49, 0x68, 0xf2, 0xf7, 0x7c, 0xff, - 0x80, 0xbd, 0xe4, 0x65, 0x01, 0x00, 0x80, 0xb5, - 0xf4, 0xf7, 0xe5, 0xf9, 0x07, 0x49, 0x07, 0x48, - 0x0e, 0xc9, 0x0e, 0xc0, 0x18, 0x38, 0x00, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x02, 0xf0, 0xb7, 0xfa, - 0x80, 0xbd, 0x02, 0xf0, 0x9e, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xd5, 0x00, 0x00, - 0xb0, 0x58, 0x01, 0x00, 0x90, 0x73, 0x01, 0x00, - 0x05, 0x49, 0x80, 0xb5, 0x89, 0x68, 0x00, 0x20, - 0x00, 0x29, 0x00, 0xd1, 0x03, 0x20, 0x00, 0x06, - 0x00, 0x0e, 0xfa, 0xf7, 0xe3, 0xfb, 0x80, 0xbd, - 0x60, 0x6c, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x48, - 0x06, 0x22, 0x03, 0x49, 0xf2, 0xf7, 0xde, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x40, 0x80, 0x07, 0x00, - 0x12, 0x61, 0x01, 0x00, 0x3c, 0x00, 0x48, 0xd5, - 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0c, 0x4d, - 0x0b, 0x1c, 0x21, 0x1c, 0x00, 0x20, 0x0c, 0x3d, - 0x00, 0x29, 0x09, 0x4c, 0x05, 0xd0, 0x28, 0x78, - 0x21, 0x1c, 0x10, 0x80, 0x02, 0x1c, 0x18, 0x1c, - 0x07, 0xe0, 0x11, 0x88, 0x0e, 0x29, 0x07, 0xd8, - 0x0a, 0x06, 0x12, 0x0e, 0x19, 0x1c, 0x20, 0x1c, - 0x2a, 0x70, 0xf2, 0xf7, 0xbe, 0xff, 0x01, 0x20, - 0xb0, 0xbd, 0xb0, 0x69, 0x01, 0x00, 0x3c, 0x00, - 0x84, 0xd5, 0x00, 0x00, 0x10, 0xb5, 0x00, 0x20, - 0x0a, 0x4a, 0x01, 0x21, 0x11, 0x60, 0x0a, 0x4c, - 0x0a, 0xe0, 0x02, 0x1c, 0x01, 0x6a, 0x50, 0x32, - 0x91, 0x42, 0x05, 0xd0, 0x61, 0x78, 0x3c, 0x23, - 0x59, 0x43, 0x09, 0x19, 0x04, 0x31, 0x01, 0x62, - 0x04, 0xf0, 0xba, 0xfb, 0x00, 0x28, 0xf0, 0xd1, - 0x10, 0xbd, 0x00, 0x00, 0xdc, 0x62, 0x01, 0x00, - 0x68, 0x61, 0x01, 0x00, 0x04, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0xc0, 0xd5, 0x00, 0x00, 0x00, 0x68, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x1c, 0x10, 0x20, - 0x04, 0xf0, 0xc7, 0xfe, 0x80, 0xbd, 0x28, 0x61, - 0x01, 0x00, 0x03, 0x22, 0x11, 0x1f, 0x80, 0xb5, - 0x00, 0x20, 0xfb, 0xf7, 0x76, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x0b, 0xf0, 0xb9, 0xfa, - 0x80, 0xbd, 0xff, 0xb5, 0x83, 0xb0, 0x16, 0x1c, - 0x00, 0x21, 0x01, 0x91, 0x1f, 0x1c, 0x08, 0x21, - 0x02, 0xaa, 0x3c, 0x00, 0xfc, 0xd5, 0x00, 0x00, - 0xfa, 0xf7, 0x0e, 0xff, 0x04, 0x1c, 0x2a, 0xd1, - 0x02, 0x98, 0x41, 0x68, 0x49, 0x00, 0x01, 0xd4, - 0x09, 0x24, 0x24, 0xe0, 0xfa, 0xf7, 0x52, 0xff, - 0x38, 0x60, 0x02, 0x98, 0x41, 0x68, 0x49, 0x02, - 0xcd, 0x0f, 0x29, 0x1c, 0xfa, 0xf7, 0x44, 0xff, - 0x01, 0x1c, 0x30, 0x60, 0x38, 0x68, 0x00, 0x06, - 0x00, 0x0e, 0x00, 0xf0, 0x1b, 0xf8, 0x00, 0x28, - 0x01, 0xd1, 0x0a, 0x24, 0x3c, 0x00, 0x38, 0xd6, - 0x00, 0x00, 0x0f, 0xe0, 0x31, 0x68, 0x02, 0x98, - 0x2b, 0x1c, 0x01, 0xaa, 0xfa, 0xf7, 0xd7, 0xff, - 0x00, 0x28, 0x06, 0xd0, 0x01, 0x98, 0x00, 0x28, - 0x04, 0xd0, 0x04, 0x99, 0x09, 0x68, 0x81, 0x42, - 0x00, 0xd2, 0x03, 0x24, 0x01, 0x98, 0x04, 0x99, - 0x08, 0x60, 0x07, 0xb0, 0x20, 0x1c, 0xf0, 0xbd, - 0x00, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x0e, 0x1c, - 0x01, 0x24, 0x00, 0xf0, 0x84, 0xff, 0x3c, 0x00, - 0x74, 0xd6, 0x00, 0x00, 0x00, 0x28, 0x08, 0xd0, - 0x03, 0x2d, 0x01, 0xd0, 0x04, 0x2d, 0x04, 0xd1, - 0x03, 0x20, 0xc0, 0x03, 0x86, 0x42, 0x00, 0xd3, - 0x00, 0x24, 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x00, - 0x7c, 0xb5, 0x15, 0x1c, 0x06, 0x1c, 0x0c, 0x1c, - 0x29, 0x1c, 0x6a, 0x46, 0x01, 0xab, 0xff, 0xf7, - 0xa5, 0xff, 0x00, 0x28, 0x02, 0xd1, 0x00, 0x2c, - 0x01, 0xd1, 0x03, 0x20, 0x7c, 0xbd, 0x17, 0x48, - 0x3c, 0x00, 0xb0, 0xd6, 0x00, 0x00, 0x00, 0xab, - 0x06, 0x60, 0x18, 0x79, 0x07, 0x28, 0x21, 0xd2, - 0x02, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, - 0x00, 0x00, 0x1d, 0x04, 0x04, 0x06, 0x10, 0x17, - 0x13, 0x00, 0x04, 0x20, 0xed, 0xe7, 0x2a, 0x1c, - 0x21, 0x1c, 0x01, 0x20, 0x00, 0x9b, 0xf2, 0xf7, - 0x81, 0xfe, 0x00, 0x28, 0x12, 0xd1, 0x06, 0x20, - 0xe3, 0xe7, 0x2a, 0x68, 0x00, 0x99, 0x05, 0xe0, - 0x00, 0x98, 0x3c, 0x00, 0xec, 0xd6, 0x00, 0x00, - 0x42, 0x78, 0x81, 0x1c, 0x01, 0xe0, 0x2a, 0x68, - 0x69, 0x46, 0x20, 0x1c, 0xf2, 0xf7, 0xfe, 0xfe, - 0x03, 0xe0, 0x04, 0x21, 0x87, 0x20, 0xf3, 0xf7, - 0xcf, 0xfd, 0x00, 0x20, 0xd0, 0xe7, 0x00, 0x00, - 0xf8, 0x6b, 0x01, 0x00, 0xf7, 0xb5, 0x86, 0xb0, - 0x0e, 0x1c, 0x08, 0x21, 0x05, 0xaa, 0x06, 0x98, - 0xfa, 0xf7, 0x7e, 0xfe, 0x04, 0x1c, 0x45, 0xd1, - 0x05, 0x98, 0x41, 0x68, 0x3c, 0x00, 0x28, 0xd7, - 0x00, 0x00, 0x02, 0x90, 0x49, 0x02, 0xc9, 0x0f, - 0x00, 0x25, 0x04, 0x95, 0x03, 0x91, 0x08, 0x9f, - 0xfa, 0xf7, 0xd5, 0xfe, 0x01, 0x90, 0x02, 0xa9, - 0x03, 0xc9, 0xfa, 0xf7, 0xc6, 0xfe, 0x01, 0x99, - 0x05, 0x29, 0x14, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x0e, 0x03, - 0x06, 0x0c, 0x03, 0x00, 0x87, 0x42, 0x0e, 0xd8, - 0x07, 0xe0, 0x87, 0x42, 0x0b, 0xd8, 0x3c, 0x00, - 0x64, 0xd7, 0x00, 0x00, 0x01, 0x25, 0xc0, 0x1b, - 0x04, 0x90, 0x07, 0xe0, 0x87, 0x42, 0x05, 0xd1, - 0x01, 0x25, 0x03, 0xe0, 0x05, 0x21, 0x87, 0x20, - 0xf3, 0xf7, 0x94, 0xfd, 0x00, 0x2d, 0x01, 0xd1, - 0x03, 0x24, 0x15, 0xe0, 0x05, 0x98, 0x41, 0x68, - 0x00, 0x29, 0x69, 0xda, 0x3a, 0x4a, 0x06, 0x99, - 0x11, 0x60, 0xfa, 0xf7, 0x91, 0xfe, 0x07, 0x1c, - 0x05, 0x98, 0x03, 0x99, 0xfa, 0xf7, 0x86, 0xfe, - 0x3c, 0x00, 0xa0, 0xd7, 0x00, 0x00, 0x05, 0x1c, - 0x01, 0x1c, 0x38, 0x1c, 0xff, 0xf7, 0x5f, 0xff, - 0x00, 0x28, 0x01, 0xd1, 0x0a, 0x24, 0x5e, 0xe0, - 0x07, 0x2f, 0x57, 0xd2, 0x02, 0xa3, 0xdb, 0x5d, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x53, 0x04, - 0x04, 0x06, 0x2e, 0x50, 0x48, 0x00, 0x04, 0x24, - 0x51, 0xe0, 0x04, 0x98, 0x00, 0x28, 0x01, 0xd1, - 0x00, 0x27, 0x14, 0xe0, 0x08, 0x99, 0x08, 0x18, - 0x00, 0x04, 0x3c, 0x00, 0xdc, 0xd7, 0x00, 0x00, - 0x00, 0x0c, 0xf4, 0xf7, 0x2b, 0xf8, 0x07, 0x1c, - 0x31, 0x1c, 0x08, 0x9a, 0xf2, 0xf7, 0x86, 0xfe, - 0x08, 0x98, 0x04, 0x99, 0x38, 0x18, 0xf2, 0xf7, - 0x2f, 0xfe, 0x08, 0x98, 0x04, 0x99, 0x3e, 0x1c, - 0x40, 0x18, 0x08, 0x90, 0x31, 0x1c, 0x00, 0x20, - 0x08, 0xaa, 0xf2, 0xf7, 0xec, 0xfd, 0x00, 0x28, - 0x00, 0xd1, 0x05, 0x24, 0x00, 0x2f, 0x2d, 0xd0, - 0x38, 0x1c, 0xf3, 0xf7, 0x3c, 0x00, 0x18, 0xd8, - 0x00, 0x00, 0xed, 0xff, 0x29, 0xe0, 0x03, 0x99, - 0x00, 0x29, 0x04, 0xd0, 0x05, 0x98, 0x40, 0x68, - 0x87, 0x02, 0xbf, 0x0a, 0x00, 0xe0, 0x00, 0x27, - 0x31, 0x1c, 0x28, 0x1c, 0x08, 0x9a, 0xf2, 0xf7, - 0x60, 0xfe, 0x04, 0x99, 0x00, 0x29, 0x03, 0xd0, - 0x08, 0x98, 0x28, 0x18, 0xf2, 0xf7, 0x07, 0xfe, - 0x00, 0x2f, 0x12, 0xd0, 0xf2, 0xf7, 0xcc, 0xfd, - 0x0f, 0xe0, 0x31, 0x1c, 0xa8, 0x1c, 0x3c, 0x00, - 0x54, 0xd8, 0x00, 0x00, 0x08, 0x9a, 0xf2, 0xf7, - 0x4f, 0xfe, 0x08, 0x98, 0x68, 0x70, 0x07, 0xe0, - 0xff, 0xe7, 0x07, 0x24, 0x04, 0xe0, 0x08, 0x24, - 0x03, 0x21, 0x87, 0x20, 0xf3, 0xf7, 0x1a, 0xfd, - 0x20, 0x1c, 0x09, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xf8, 0x6b, 0x01, 0x00, 0x9e, 0xb5, 0x1c, 0x1c, - 0x00, 0xab, 0x19, 0x72, 0x00, 0x92, 0x00, 0x22, - 0x01, 0x94, 0x69, 0x46, 0xfb, 0xf7, 0x08, 0xfa, - 0x3c, 0x00, 0x90, 0xd8, 0x00, 0x00, 0x9e, 0xbd, - 0x00, 0x00, 0x8f, 0xb5, 0x02, 0x92, 0x00, 0x22, - 0x00, 0x90, 0x01, 0x90, 0x03, 0x91, 0x69, 0x46, - 0x04, 0x20, 0xfb, 0xf7, 0xfc, 0xf9, 0x8f, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x01, 0x28, - 0x0a, 0xd0, 0x03, 0x28, 0x19, 0xd0, 0x04, 0x28, - 0x2c, 0xd1, 0x60, 0x68, 0x01, 0xf0, 0x35, 0xfc, - 0x01, 0x1c, 0x83, 0x20, 0x0c, 0xcc, 0x22, 0xe0, - 0x1c, 0x20, 0x3c, 0x00, 0xcc, 0xd8, 0x00, 0x00, - 0x14, 0x49, 0x60, 0x43, 0x40, 0x18, 0x14, 0x49, - 0x45, 0x18, 0x28, 0x1c, 0xf8, 0xf7, 0x46, 0xfc, - 0xa9, 0x68, 0x00, 0x29, 0x03, 0xd0, 0x22, 0x1c, - 0x08, 0x20, 0x05, 0xf0, 0x71, 0xfe, 0xb0, 0xbd, - 0x20, 0x8c, 0xc8, 0x28, 0x01, 0xd3, 0x04, 0x20, - 0x04, 0xe0, 0x65, 0x28, 0x01, 0xd3, 0x02, 0x20, - 0x00, 0xe0, 0x01, 0x20, 0x20, 0x84, 0x20, 0x1c, - 0x03, 0xf0, 0xdc, 0xfa, 0x3c, 0x00, 0x08, 0xd9, - 0x00, 0x00, 0x22, 0x68, 0xe3, 0x68, 0x01, 0x1c, - 0x82, 0x20, 0xff, 0xf7, 0xb4, 0xff, 0xb0, 0xbd, - 0xa0, 0x21, 0x08, 0x20, 0xf3, 0xf7, 0xc3, 0xfc, - 0xb0, 0xbd, 0xdc, 0x71, 0x01, 0x00, 0x64, 0xee, - 0xff, 0xff, 0x03, 0x48, 0x04, 0x4a, 0x81, 0x68, - 0x51, 0x61, 0xc0, 0x68, 0x90, 0x61, 0x70, 0x47, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xc0, 0x71, - 0x01, 0x00, 0x03, 0x49, 0x04, 0x4a, 0x3c, 0x00, - 0x44, 0xd9, 0x00, 0x00, 0x08, 0x6b, 0x90, 0x60, - 0x88, 0x68, 0xd0, 0x60, 0x70, 0x47, 0x00, 0x00, - 0x90, 0x5c, 0x01, 0x00, 0xc0, 0x71, 0x01, 0x00, - 0x00, 0xb5, 0xff, 0xf7, 0xf1, 0xff, 0xff, 0xf7, - 0xe3, 0xff, 0x00, 0xbd, 0xb0, 0xb5, 0x0d, 0x1c, - 0x00, 0x28, 0x14, 0xd0, 0x0b, 0x49, 0x0c, 0x4c, - 0x88, 0x68, 0x62, 0x69, 0xc9, 0x68, 0x80, 0x1a, - 0xa2, 0x69, 0x89, 0x1a, 0x40, 0x18, 0x04, 0xd0, - 0x3c, 0x00, 0x80, 0xd9, 0x00, 0x00, 0x64, 0x23, - 0x59, 0x43, 0xf2, 0xf7, 0xc4, 0xfe, 0x20, 0x61, - 0xff, 0xf7, 0xcd, 0xff, 0x20, 0x69, 0x28, 0x60, - 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xc0, 0x71, - 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x00, 0x28, - 0x17, 0xd0, 0x0c, 0x49, 0x0d, 0x4c, 0x08, 0x6b, - 0xa2, 0x68, 0x89, 0x68, 0x80, 0x1a, 0xe2, 0x68, - 0x89, 0x1a, 0x3c, 0x00, 0xbc, 0xd9, 0x00, 0x00, - 0x40, 0x18, 0x07, 0xd0, 0x22, 0x88, 0x90, 0x42, - 0x04, 0xd9, 0x64, 0x23, 0x59, 0x43, 0xf2, 0xf7, - 0xa1, 0xfe, 0x60, 0x60, 0xff, 0xf7, 0xb6, 0xff, - 0x60, 0x68, 0x28, 0x60, 0x01, 0x20, 0xb0, 0xbd, - 0x00, 0x20, 0xb0, 0xbd, 0x90, 0x5c, 0x01, 0x00, - 0xc0, 0x71, 0x01, 0x00, 0x7c, 0xb5, 0x10, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x00, 0xf0, 0x24, 0xf8, - 0x7c, 0xbd, 0x0f, 0x48, 0x3c, 0x00, 0xf8, 0xd9, - 0x00, 0x00, 0xc0, 0x69, 0x84, 0x68, 0xe0, 0x68, - 0x25, 0x6a, 0xa6, 0x69, 0xf3, 0xf7, 0xe3, 0xfd, - 0xe1, 0x69, 0xf3, 0xf7, 0x06, 0xfd, 0x20, 0x1c, - 0xe2, 0x69, 0x40, 0x30, 0xc1, 0x8b, 0x12, 0x89, - 0x89, 0x18, 0xc1, 0x83, 0x07, 0x49, 0x01, 0x94, - 0x00, 0x91, 0x28, 0x69, 0x33, 0x1c, 0x82, 0x88, - 0x01, 0x68, 0xe0, 0x68, 0xc0, 0x68, 0xf8, 0xf7, - 0x1e, 0xfc, 0xe0, 0xe7, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xda, 0x00, 0x00, 0x84, 0x6a, 0x01, 0x00, - 0x91, 0x5e, 0x00, 0x00, 0xf0, 0xb5, 0x85, 0x69, - 0x06, 0x6a, 0x04, 0x1c, 0xc0, 0x68, 0x85, 0xb0, - 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xf3, 0xf7, - 0x57, 0xfc, 0x0a, 0x49, 0x02, 0x95, 0x04, 0x94, - 0x03, 0x91, 0x30, 0x69, 0x82, 0x88, 0x01, 0x68, - 0x26, 0x20, 0x01, 0x92, 0x00, 0x91, 0x43, 0x5d, - 0xe0, 0x68, 0xe1, 0x69, 0x2a, 0x1c, 0x0e, 0x32, - 0x3c, 0x00, 0x70, 0xda, 0x00, 0x00, 0xc0, 0x68, - 0xf8, 0xf7, 0x37, 0xfd, 0x05, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xe9, 0xd9, 0x00, 0x00, 0x10, 0xb5, - 0x14, 0x1c, 0x05, 0x48, 0xfc, 0xf7, 0x7b, 0xfb, - 0xa0, 0x68, 0xf3, 0xf7, 0x9e, 0xfd, 0xe1, 0x68, - 0xc1, 0x60, 0x20, 0x1c, 0xf5, 0xf7, 0xbb, 0xfa, - 0x10, 0xbd, 0xa0, 0x6a, 0x01, 0x00, 0x7c, 0xb5, - 0x04, 0x1c, 0x60, 0x30, 0x02, 0x7b, 0xa1, 0x69, - 0x00, 0x91, 0x3c, 0x00, 0xac, 0xda, 0x00, 0x00, - 0x01, 0x92, 0x22, 0x1c, 0x21, 0x1c, 0x38, 0x31, - 0xa0, 0x68, 0x48, 0x32, 0x0d, 0x1c, 0x63, 0x69, - 0x03, 0xf0, 0x7a, 0xfb, 0x08, 0x21, 0x00, 0x20, - 0xf3, 0xf7, 0x88, 0xfd, 0xe0, 0x60, 0x26, 0x69, - 0xb1, 0x6b, 0x00, 0x29, 0x01, 0xd0, 0x10, 0x23, - 0x00, 0xe0, 0x18, 0x23, 0x05, 0x49, 0x01, 0x94, - 0x00, 0x91, 0x31, 0x68, 0xca, 0x18, 0x08, 0x23, - 0x01, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0xe8, 0xda, - 0x00, 0x00, 0xf8, 0xf7, 0x20, 0xfd, 0x7c, 0xbd, - 0x00, 0x00, 0x81, 0xda, 0x00, 0x00, 0xf0, 0xb5, - 0x46, 0x68, 0x17, 0x1c, 0x04, 0x1c, 0x01, 0x21, - 0x30, 0x1c, 0x9b, 0xb0, 0xfa, 0xf7, 0x0d, 0xfc, - 0x00, 0x25, 0x00, 0x28, 0x03, 0xd0, 0x13, 0x49, - 0x0a, 0x7a, 0x01, 0x2a, 0x01, 0xd1, 0x01, 0x25, - 0x1c, 0xe0, 0x88, 0x62, 0x4e, 0x61, 0x20, 0x89, - 0xc8, 0x61, 0x60, 0x89, 0x00, 0x28, 0x3c, 0x00, - 0x24, 0xdb, 0x00, 0x00, 0x03, 0xd0, 0x00, 0x20, - 0x08, 0x84, 0x48, 0x84, 0x04, 0xe0, 0xe0, 0x68, - 0x08, 0x84, 0x20, 0x8a, 0x48, 0x84, 0x60, 0x8a, - 0x88, 0x84, 0x08, 0x6b, 0x00, 0x28, 0x03, 0xd1, - 0x01, 0xa8, 0x03, 0xf0, 0x77, 0xfc, 0x04, 0xe0, - 0x01, 0x20, 0x08, 0x61, 0x00, 0x20, 0x02, 0xf0, - 0x39, 0xfb, 0x3d, 0x71, 0x1b, 0xb0, 0x01, 0x20, - 0xf0, 0xbd, 0x00, 0x00, 0xf4, 0x6e, 0x01, 0x00, - 0x3c, 0x00, 0x60, 0xdb, 0x00, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0xf7, 0xf7, 0xe8, 0xfb, 0x00, 0x28, - 0x11, 0xd1, 0x4b, 0x20, 0x00, 0x5d, 0x01, 0x28, - 0x0d, 0xd1, 0x20, 0x1c, 0x04, 0xf0, 0x85, 0xfa, - 0x00, 0x21, 0x20, 0x1c, 0x04, 0xf0, 0xf3, 0xf8, - 0xa0, 0x69, 0x00, 0x21, 0xc2, 0x07, 0xd2, 0x0f, - 0x04, 0x20, 0xf4, 0xf7, 0xd8, 0xf9, 0x10, 0xbd, - 0x00, 0x00, 0x38, 0xb5, 0x04, 0x1c, 0x04, 0xf0, - 0x36, 0xf9, 0x3c, 0x00, 0x9c, 0xdb, 0x00, 0x00, - 0x00, 0x28, 0x03, 0xd0, 0x40, 0x30, 0x80, 0x7a, - 0x00, 0x28, 0x25, 0xd1, 0x0c, 0x20, 0x29, 0x21, - 0x08, 0x55, 0x21, 0x1c, 0x06, 0x22, 0xa0, 0x18, - 0xf2, 0xf7, 0xa0, 0xfc, 0x20, 0x1c, 0x06, 0x22, - 0x0e, 0x49, 0xf2, 0xf7, 0x9b, 0xfc, 0x01, 0x20, - 0xe0, 0x61, 0x60, 0x62, 0x07, 0x20, 0x30, 0x21, - 0x08, 0x55, 0x00, 0x25, 0xe5, 0x63, 0x06, 0x20, - 0x00, 0xab, 0x18, 0x80, 0x3c, 0x00, 0xd8, 0xdb, - 0x00, 0x00, 0xe0, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0xf3, 0xf7, 0xdb, 0xfc, 0x02, 0x21, 0x68, 0x46, - 0xfd, 0xf7, 0x73, 0xfb, 0xe0, 0x60, 0x20, 0x1c, - 0xff, 0xf7, 0x69, 0xfc, 0xe5, 0x60, 0x20, 0x1c, - 0x38, 0xbd, 0x12, 0x61, 0x01, 0x00, 0xfe, 0xb5, - 0x05, 0x1c, 0x0e, 0x1c, 0x15, 0x20, 0x00, 0xab, - 0x98, 0x80, 0x14, 0x21, 0x17, 0x1c, 0x00, 0x20, - 0xf3, 0xf7, 0xe3, 0xfc, 0x02, 0x90, 0x3c, 0x00, - 0x14, 0xdc, 0x00, 0x00, 0x04, 0x68, 0x06, 0x22, - 0x31, 0x1c, 0x60, 0x1d, 0x25, 0x71, 0xf2, 0xf7, - 0x6b, 0xfc, 0x06, 0x22, 0x39, 0x1c, 0x20, 0x1c, - 0x0b, 0x30, 0xf2, 0xf7, 0x65, 0xfc, 0x01, 0xa8, - 0xff, 0xf7, 0x52, 0xfc, 0xfe, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x23, 0xfb, 0xf7, 0x5c, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x05, 0x1c, - 0x08, 0x35, 0x0f, 0x4e, 0x29, 0x1c, 0x04, 0x1c, - 0x3c, 0x00, 0x50, 0xdc, 0x00, 0x00, 0x06, 0x22, - 0x30, 0x1c, 0xf2, 0xf7, 0x50, 0xfc, 0xa0, 0x88, - 0xb0, 0x82, 0x28, 0x1c, 0x05, 0xf0, 0xa1, 0xff, - 0x00, 0x28, 0x0b, 0xd0, 0xe0, 0x88, 0x30, 0x61, - 0x28, 0x1c, 0x04, 0xf0, 0xcc, 0xf8, 0xa1, 0x88, - 0x40, 0x30, 0x41, 0x80, 0x00, 0x20, 0xf4, 0xf7, - 0xb8, 0xf9, 0x02, 0xe0, 0x04, 0x20, 0xf4, 0xf7, - 0xa0, 0xf9, 0x00, 0x20, 0x70, 0xbd, 0x70, 0x7c, - 0x01, 0x00, 0x3c, 0x00, 0x8c, 0xdc, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0xfb, 0xf7, 0xf8, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x04, 0x1c, - 0x04, 0x30, 0x05, 0x1c, 0xfd, 0xf7, 0x32, 0xf8, - 0x00, 0x28, 0x09, 0xd0, 0x00, 0x20, 0xf7, 0xf7, - 0x37, 0xfc, 0x00, 0x28, 0x04, 0xd0, 0x06, 0x22, - 0x01, 0x1c, 0x28, 0x1c, 0xf2, 0xf7, 0x1e, 0xfc, - 0x0a, 0x4e, 0x06, 0x22, 0x29, 0x1c, 0x30, 0x1c, - 0xf2, 0xf7, 0x18, 0xfc, 0x3c, 0x00, 0xc8, 0xdc, - 0x00, 0x00, 0x60, 0x89, 0xf0, 0x82, 0x28, 0x1c, - 0x05, 0xf0, 0x69, 0xff, 0x00, 0x28, 0x03, 0xd0, - 0x02, 0x20, 0xf4, 0xf7, 0x88, 0xf9, 0x02, 0xe0, - 0x05, 0x20, 0xf9, 0xf7, 0xf4, 0xfa, 0x00, 0x20, - 0x70, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x00, 0x79, 0x04, 0x28, 0x1c, 0xd2, - 0x60, 0x79, 0x01, 0x28, 0x01, 0xd0, 0x03, 0x28, - 0x04, 0xd1, 0x00, 0x22, 0x01, 0x21, 0x3c, 0x00, - 0x04, 0xdd, 0x00, 0x00, 0xa0, 0x1d, 0xf9, 0xf7, - 0x69, 0xfc, 0x60, 0x79, 0x00, 0x28, 0x04, 0xd1, - 0x22, 0x79, 0x00, 0x21, 0xf9, 0xf7, 0x62, 0xfc, - 0x0a, 0xe0, 0x03, 0x28, 0x08, 0xd1, 0x00, 0x24, - 0x22, 0x1c, 0x00, 0x21, 0x00, 0x20, 0xf9, 0xf7, - 0x59, 0xfc, 0x01, 0x34, 0x04, 0x2c, 0xf7, 0xdb, - 0x01, 0x20, 0x10, 0xbd, 0xf0, 0xb5, 0x97, 0xb0, - 0x17, 0x1c, 0x05, 0x1c, 0x04, 0x30, 0x04, 0x1c, - 0x3c, 0x00, 0x40, 0xdd, 0x00, 0x00, 0x15, 0xaa, - 0x16, 0xa9, 0x05, 0xf0, 0xe2, 0xfe, 0x00, 0x28, - 0x2e, 0xd0, 0x15, 0x98, 0x4b, 0x21, 0x09, 0x5c, - 0x00, 0x29, 0x23, 0xd0, 0x01, 0x29, 0x02, 0xd0, - 0x02, 0x29, 0x1f, 0xd1, 0x01, 0xe0, 0x04, 0xf0, - 0x90, 0xf9, 0xad, 0x7a, 0x13, 0x48, 0x16, 0x9e, - 0x05, 0x80, 0x06, 0x22, 0x21, 0x1c, 0x08, 0x30, - 0xf2, 0xf7, 0xc1, 0xfb, 0x22, 0x1c, 0x31, 0x1c, - 0x02, 0xa8, 0x3c, 0x00, 0x7c, 0xdd, 0x00, 0x00, - 0x00, 0xf0, 0x74, 0xfb, 0x0a, 0x20, 0x0a, 0xa9, - 0x48, 0x72, 0x00, 0xab, 0x9d, 0x80, 0x02, 0x21, - 0x01, 0xa8, 0xfd, 0xf7, 0x9f, 0xfa, 0x05, 0x90, - 0x02, 0xa8, 0xff, 0xf7, 0x95, 0xfb, 0xf3, 0xf7, - 0xf7, 0xf9, 0x00, 0x21, 0x15, 0x98, 0x03, 0xf0, - 0xe1, 0xff, 0x00, 0x20, 0x00, 0xe0, 0x01, 0x20, - 0x38, 0x71, 0x17, 0xb0, 0x01, 0x20, 0xf0, 0xbd, - 0x98, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0xb8, 0xdd, - 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, 0xfb, 0xf7, - 0x62, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x80, 0x7d, 0x15, 0x1c, 0x0a, 0x1c, - 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, 0x21, 0x1c, - 0xf9, 0xf7, 0xfb, 0xfc, 0x00, 0x28, 0x03, 0xd1, - 0x04, 0x20, 0x28, 0x71, 0x01, 0x20, 0xb0, 0xbd, - 0x20, 0x6a, 0xf7, 0xf7, 0x76, 0xfe, 0x60, 0x6a, - 0xf7, 0xf7, 0x7b, 0xfe, 0x20, 0x6a, 0x3c, 0x00, - 0xf4, 0xdd, 0x00, 0x00, 0xfe, 0xf7, 0x88, 0xfa, - 0x00, 0x20, 0xb0, 0xbd, 0x10, 0xb5, 0x14, 0x1c, - 0xc2, 0x79, 0x81, 0x79, 0x80, 0x88, 0xf7, 0xf7, - 0xa1, 0xfa, 0x20, 0x71, 0x01, 0x20, 0x10, 0xbd, - 0x80, 0xb5, 0x01, 0x23, 0xfa, 0xf7, 0x70, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0xf0, 0xb5, 0x04, 0x1c, - 0x08, 0x1c, 0x00, 0x21, 0x0f, 0x28, 0x91, 0xb0, - 0x00, 0xd3, 0x02, 0x21, 0x00, 0x29, 0x41, 0xd1, - 0x3c, 0x00, 0x30, 0xde, 0x00, 0x00, 0xc0, 0x00, - 0x24, 0x4f, 0x10, 0x90, 0xc6, 0x19, 0xb2, 0x88, - 0x21, 0x68, 0x02, 0xa8, 0xf2, 0xf7, 0x5b, 0xfb, - 0x21, 0x89, 0xb0, 0x88, 0x09, 0x1a, 0x00, 0x29, - 0x07, 0xdd, 0x09, 0x04, 0x22, 0x68, 0x09, 0x0c, - 0x10, 0x18, 0xf3, 0xf7, 0xc0, 0xfb, 0x05, 0x1c, - 0x00, 0xe0, 0x00, 0x25, 0xb0, 0x79, 0x80, 0x21, - 0x88, 0x43, 0x17, 0x49, 0x78, 0x31, 0x09, 0x5c, - 0x00, 0x20, 0x3c, 0x00, 0x6c, 0xde, 0x00, 0x00, - 0xf3, 0xf7, 0xb4, 0xfb, 0x07, 0x1c, 0x00, 0x68, - 0x13, 0x49, 0x01, 0x90, 0x10, 0x98, 0x0b, 0x58, - 0x01, 0x9a, 0x29, 0x1c, 0x02, 0xa8, 0xf2, 0xf7, - 0xac, 0xfa, 0x00, 0x90, 0x28, 0x1c, 0xf3, 0xf7, - 0x73, 0xfb, 0x20, 0x1c, 0xf3, 0xf7, 0x82, 0xfb, - 0x00, 0x98, 0x00, 0x28, 0x08, 0xd0, 0x02, 0x98, - 0x01, 0x99, 0x08, 0x60, 0xb0, 0x79, 0x39, 0x1c, - 0xfa, 0xf7, 0x20, 0xff, 0x3c, 0x00, 0xa8, 0xde, - 0x00, 0x00, 0x11, 0xb0, 0xf0, 0xbd, 0x38, 0x1c, - 0xf3, 0xf7, 0x61, 0xfb, 0xf9, 0xe7, 0x2d, 0x20, - 0xf3, 0xf7, 0xf5, 0xf9, 0x20, 0x1c, 0xf3, 0xf7, - 0x6c, 0xfb, 0xf2, 0xe7, 0x00, 0x00, 0x24, 0x44, - 0x01, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x20, 0x35, - 0x06, 0x1c, 0xa8, 0x79, 0x04, 0x28, 0x48, 0xd2, - 0xe9, 0x79, 0x01, 0x29, 0x13, 0xd1, 0x30, 0x1c, - 0x28, 0x30, 0x03, 0xf0, 0x92, 0xff, 0x3c, 0x00, - 0xe4, 0xde, 0x00, 0x00, 0x00, 0x28, 0x3f, 0xd0, - 0x01, 0x1c, 0x8c, 0x31, 0x01, 0x65, 0xa9, 0x79, - 0x4c, 0x22, 0x04, 0x1c, 0x11, 0x54, 0x81, 0x18, - 0x41, 0x62, 0x50, 0x34, 0x04, 0x62, 0xe1, 0x1e, - 0x81, 0x62, 0x0b, 0xe0, 0x00, 0x29, 0x2f, 0xd1, - 0x3c, 0x22, 0x18, 0x49, 0x42, 0x43, 0x54, 0x18, - 0x17, 0x4a, 0x04, 0x34, 0x12, 0x68, 0x00, 0x2a, - 0x00, 0xd1, 0x48, 0x70, 0x00, 0x2c, 0x23, 0xd0, - 0x3c, 0x00, 0x20, 0xdf, 0x00, 0x00, 0x35, 0x1c, - 0x30, 0x35, 0xe8, 0x79, 0x01, 0x28, 0x01, 0xd0, - 0x05, 0x28, 0x01, 0xd1, 0x06, 0x20, 0xe8, 0x71, - 0x20, 0x22, 0x31, 0x1d, 0x20, 0x68, 0xf2, 0xf7, - 0xde, 0xfa, 0xb0, 0x8c, 0xa0, 0x80, 0xe8, 0x79, - 0xa0, 0x71, 0xa8, 0x79, 0x00, 0x25, 0xa0, 0x63, - 0x01, 0x20, 0x60, 0x81, 0x00, 0x20, 0xe0, 0x60, - 0x2e, 0x36, 0xe8, 0x00, 0x00, 0x19, 0x18, 0x30, - 0x08, 0x22, 0x3c, 0x00, 0x5c, 0xdf, 0x00, 0x00, - 0x31, 0x1c, 0xf2, 0xf7, 0xcb, 0xfa, 0x01, 0x35, - 0x04, 0x2d, 0xf5, 0xd3, 0x01, 0x20, 0x70, 0xbd, - 0x68, 0x61, 0x01, 0x00, 0xdc, 0x62, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x7a, 0x01, 0x28, - 0x01, 0xd0, 0x03, 0x28, 0x07, 0xd1, 0x20, 0x1d, - 0x03, 0xf0, 0x40, 0xff, 0x00, 0x28, 0x02, 0xd0, - 0xa1, 0x7a, 0x40, 0x30, 0x41, 0x73, 0xe0, 0x7a, - 0x00, 0x28, 0x01, 0xd0, 0x3c, 0x00, 0x98, 0xdf, - 0x00, 0x00, 0x03, 0x28, 0x02, 0xd1, 0xa0, 0x7a, - 0x02, 0x49, 0x08, 0x70, 0x01, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0x68, 0x61, 0x01, 0x00, 0x70, 0xb5, - 0x0e, 0x1c, 0x03, 0x21, 0x04, 0x1c, 0x30, 0x1c, - 0xfc, 0xf7, 0xe1, 0xfb, 0x00, 0x28, 0x01, 0xd0, - 0x85, 0x78, 0x00, 0xe0, 0x00, 0x25, 0x0b, 0x48, - 0x32, 0x1c, 0x00, 0x68, 0x03, 0x68, 0x20, 0x7c, - 0x80, 0x07, 0xc0, 0x0f, 0x21, 0x1c, 0x3c, 0x00, - 0xd4, 0xdf, 0x00, 0x00, 0xf7, 0xf7, 0x62, 0xfe, - 0x00, 0x28, 0x05, 0xd0, 0x01, 0x21, 0x28, 0x1c, - 0xfd, 0xf7, 0xfe, 0xfb, 0x00, 0x20, 0x00, 0xe0, - 0x08, 0x20, 0x03, 0xf0, 0xc5, 0xff, 0x00, 0x20, - 0x70, 0xbd, 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, - 0x80, 0xb5, 0x42, 0x68, 0x00, 0x88, 0x01, 0x21, - 0x49, 0x06, 0x08, 0x43, 0x2d, 0x21, 0x05, 0xf0, - 0xd3, 0xfb, 0x80, 0xbd, 0x03, 0x49, 0x01, 0x20, - 0x3c, 0x00, 0x10, 0xe0, 0x00, 0x00, 0x49, 0x78, - 0x02, 0x29, 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, - 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0x8c, 0xb5, - 0x01, 0x28, 0x1f, 0xd1, 0x00, 0x29, 0x0d, 0xd0, - 0x01, 0x29, 0x0b, 0xd0, 0x02, 0x29, 0x01, 0xd0, - 0x03, 0x29, 0x16, 0xd1, 0x00, 0x20, 0xf9, 0xf7, - 0x14, 0xfc, 0x93, 0x20, 0x00, 0xab, 0x18, 0x80, - 0x00, 0x20, 0x08, 0xe0, 0x01, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x3c, 0x00, 0x4c, 0xe0, 0x00, 0x00, - 0xf9, 0xf7, 0x0a, 0xfc, 0x83, 0x20, 0x00, 0xab, - 0x18, 0x80, 0x02, 0x20, 0x00, 0xf0, 0xcc, 0xf8, - 0x01, 0x90, 0x68, 0x46, 0xff, 0xf7, 0x3a, 0xfa, - 0x8c, 0xbd, 0x01, 0x21, 0x0e, 0x20, 0xf3, 0xf7, - 0x1b, 0xf9, 0xf9, 0xe7, 0xff, 0xb5, 0x17, 0x1c, - 0x1e, 0x1c, 0x14, 0x21, 0x00, 0x20, 0x83, 0xb0, - 0xf3, 0xf7, 0xac, 0xfa, 0x05, 0x1c, 0x04, 0x68, - 0x12, 0x20, 0x00, 0xab, 0x3c, 0x00, 0x88, 0xe0, - 0x00, 0x00, 0x98, 0x80, 0x06, 0x22, 0x60, 0x1d, - 0x03, 0x99, 0xf2, 0xf7, 0x32, 0xfa, 0x00, 0x20, - 0x20, 0x71, 0x27, 0x73, 0x04, 0x99, 0x20, 0x1c, - 0xe1, 0x72, 0x31, 0x1c, 0x06, 0x22, 0x0d, 0x30, - 0xf2, 0xf7, 0x27, 0xfa, 0x02, 0x95, 0x01, 0xa8, - 0xff, 0xf7, 0x13, 0xfa, 0x07, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0f, 0x1c, - 0x0c, 0x21, 0x00, 0x20, 0xf3, 0xf7, 0x3c, 0x00, - 0xc4, 0xe0, 0x00, 0x00, 0x89, 0xfa, 0x05, 0x68, - 0x04, 0x1c, 0x28, 0x1d, 0x06, 0x22, 0x31, 0x1c, - 0xf2, 0xf7, 0x12, 0xfa, 0x6f, 0x81, 0x20, 0x1c, - 0xf8, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0d, 0x1c, 0x08, 0x21, 0x00, 0x20, 0xf3, 0xf7, - 0x77, 0xfa, 0x01, 0x68, 0x8c, 0x71, 0x8d, 0x80, - 0xb0, 0xbd, 0x00, 0x00, 0xf7, 0xb5, 0x0e, 0x1c, - 0x10, 0x21, 0x17, 0x1c, 0x00, 0x20, 0xf3, 0xf7, - 0x3c, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x6b, 0xfa, - 0x04, 0x68, 0x05, 0x1c, 0x20, 0x1d, 0x06, 0x22, - 0x00, 0x99, 0xf2, 0xf7, 0xf4, 0xf9, 0x66, 0x81, - 0xa7, 0x81, 0x28, 0x1c, 0xfe, 0xbd, 0xf3, 0xb5, - 0x0c, 0x1c, 0x08, 0x21, 0x00, 0x20, 0x85, 0xb0, - 0xf3, 0xf7, 0x59, 0xfa, 0x06, 0x1c, 0x07, 0x68, - 0xe0, 0x68, 0x00, 0x28, 0x02, 0xd0, 0x05, 0x99, - 0x01, 0x29, 0x04, 0xd1, 0x05, 0x98, 0x38, 0x71, - 0x00, 0x20, 0x3c, 0x00, 0x3c, 0xe1, 0x00, 0x00, - 0x78, 0x71, 0x56, 0xe0, 0x03, 0x68, 0x01, 0x21, - 0x03, 0x93, 0x20, 0x69, 0x02, 0x90, 0xfc, 0xf7, - 0x17, 0xfb, 0x05, 0x1c, 0x02, 0x98, 0x32, 0x21, - 0xfc, 0xf7, 0x12, 0xfb, 0x00, 0x22, 0xd2, 0x43, - 0x01, 0x1c, 0x28, 0x1c, 0x04, 0xab, 0xf7, 0xf7, - 0xb9, 0xf8, 0x00, 0x28, 0x04, 0xd1, 0x30, 0x1c, - 0xf3, 0xf7, 0x02, 0xfa, 0x00, 0x26, 0x3c, 0xe0, - 0x00, 0x2d, 0x05, 0xd0, 0x3c, 0x00, 0x78, 0xe1, - 0x00, 0x00, 0x68, 0x78, 0x09, 0x38, 0x07, 0x28, - 0x01, 0xd8, 0x32, 0x20, 0x28, 0x70, 0x1c, 0x21, - 0x00, 0x20, 0xf3, 0xf7, 0x26, 0xfa, 0x01, 0x90, - 0x05, 0x68, 0x01, 0x1c, 0x30, 0x1c, 0xf3, 0xf7, - 0x40, 0xf9, 0xe0, 0x68, 0xf3, 0xf7, 0x0b, 0xfa, - 0xa8, 0x61, 0xe1, 0x68, 0x01, 0x98, 0xf3, 0xf7, - 0x38, 0xf9, 0x00, 0x20, 0xe0, 0x60, 0x05, 0x98, - 0x80, 0x21, 0x08, 0x43, 0x38, 0x71, 0x3c, 0x00, - 0xb4, 0xe1, 0x00, 0x00, 0x01, 0x20, 0x21, 0x1c, - 0x14, 0x31, 0x78, 0x71, 0x28, 0x1c, 0x06, 0x22, - 0xf2, 0xf7, 0x9a, 0xf9, 0x02, 0x9a, 0x29, 0x20, - 0x00, 0x92, 0x00, 0x5d, 0x01, 0x21, 0xe2, 0x6a, - 0x08, 0x28, 0x00, 0xd0, 0x00, 0x21, 0x28, 0x1c, - 0x03, 0x9b, 0x02, 0xf0, 0x9d, 0xff, 0xa0, 0x6b, - 0x28, 0x61, 0x20, 0x6c, 0x68, 0x61, 0x7f, 0x30, - 0x01, 0xd1, 0x0f, 0x20, 0x68, 0x61, 0x30, 0x1c, - 0x3c, 0x00, 0xf0, 0xe1, 0x00, 0x00, 0x07, 0xb0, - 0xf0, 0xbd, 0x10, 0xb5, 0x04, 0x1c, 0x08, 0x21, - 0x00, 0x20, 0xf3, 0xf7, 0xec, 0xf9, 0x01, 0x68, - 0x0c, 0x71, 0x10, 0xbd, 0x00, 0x00, 0x01, 0x48, - 0x00, 0x68, 0x70, 0x47, 0x00, 0x00, 0x28, 0x61, - 0x01, 0x00, 0x01, 0x49, 0x08, 0x60, 0x70, 0x47, - 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x02, 0x1c, - 0x01, 0x20, 0x00, 0x06, 0x08, 0x43, 0x80, 0xb5, - 0x2d, 0x21, 0x3c, 0x00, 0x2c, 0xe2, 0x00, 0x00, - 0x05, 0xf0, 0xc0, 0xfa, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x01, 0x28, 0x07, 0xd0, 0xf1, 0x28, - 0x25, 0xd0, 0xf3, 0x28, 0x27, 0xd1, 0x02, 0x20, - 0x02, 0xf0, 0xbc, 0xf9, 0x80, 0xbd, 0x00, 0x29, - 0x1a, 0xd0, 0x01, 0x29, 0x03, 0xd0, 0xf2, 0x29, - 0xf8, 0xd1, 0x88, 0x21, 0x1c, 0xe0, 0x10, 0x48, - 0x01, 0x78, 0x00, 0x29, 0x05, 0xd1, 0x40, 0x78, - 0x01, 0x28, 0xef, 0xd1, 0x3c, 0x00, 0x68, 0xe2, - 0x00, 0x00, 0x00, 0xf0, 0x16, 0xfa, 0x80, 0xbd, - 0x0b, 0x48, 0x14, 0x30, 0x00, 0x89, 0xfc, 0xf7, - 0x5a, 0xfc, 0x01, 0x1c, 0x01, 0x22, 0x0f, 0x20, - 0x05, 0xf0, 0x9f, 0xf9, 0x80, 0xbd, 0x04, 0xf0, - 0x52, 0xfa, 0x80, 0xbd, 0x00, 0x20, 0xfa, 0xf7, - 0x32, 0xfe, 0x80, 0xbd, 0x02, 0x21, 0x0f, 0x20, - 0xf3, 0xf7, 0x05, 0xf8, 0x80, 0xbd, 0x84, 0x66, - 0x01, 0x00, 0x01, 0x48, 0x00, 0x78, 0x3c, 0x00, - 0xa4, 0xe2, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x74, 0x66, 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, - 0x48, 0x60, 0x70, 0x47, 0xec, 0x65, 0x01, 0x00, - 0xf8, 0xb5, 0x0e, 0x1c, 0x13, 0x4d, 0x01, 0x1c, - 0x14, 0x1c, 0x68, 0x22, 0x28, 0x1c, 0x1f, 0x1c, - 0x0c, 0x30, 0xf2, 0xf7, 0x71, 0xf9, 0x0f, 0x49, - 0x00, 0x20, 0xac, 0x39, 0x48, 0x60, 0x01, 0x21, - 0x29, 0x60, 0x19, 0x21, 0x19, 0x2c, 0x6e, 0x67, - 0x3c, 0x00, 0xe0, 0xe2, 0x00, 0x00, 0x00, 0xd3, - 0x21, 0x1c, 0x29, 0x81, 0x09, 0x49, 0x14, 0x39, - 0x88, 0x73, 0x8f, 0x74, 0xc8, 0x78, 0x01, 0x28, - 0x08, 0xd0, 0x01, 0x21, 0x0f, 0x20, 0x05, 0xf0, - 0x9c, 0xf9, 0x19, 0x20, 0xfc, 0xf7, 0x15, 0xfc, - 0xfb, 0xf7, 0x99, 0xf8, 0x01, 0x20, 0xf8, 0xbd, - 0x00, 0x00, 0x98, 0x66, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x28, 0x02, 0xd1, 0x00, 0xf0, 0x2f, 0xf8, - 0x80, 0xbd, 0x3c, 0x00, 0x1c, 0xe3, 0x00, 0x00, - 0x01, 0x21, 0x1d, 0x20, 0xf2, 0xf7, 0xc0, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x01, 0x20, 0x07, 0x49, 0x00, 0x05, 0x80, 0xb5, - 0x88, 0x60, 0x00, 0x22, 0x80, 0x21, 0x16, 0x20, - 0x05, 0xf0, 0x4c, 0xf9, 0x04, 0xf0, 0x34, 0xfd, - 0x02, 0x49, 0x08, 0x61, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x24, 0x6d, 0x01, 0x00, - 0x06, 0x4a, 0x80, 0xb5, 0x3c, 0x00, 0x58, 0xe3, - 0x00, 0x00, 0xd1, 0x6a, 0x81, 0x42, 0x07, 0xd1, - 0x10, 0x7f, 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, - 0x40, 0x18, 0xc0, 0x68, 0xf2, 0xf7, 0x35, 0xf8, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, - 0x01, 0x00, 0x1d, 0x48, 0x1c, 0xb5, 0x00, 0x78, - 0x00, 0x28, 0x2d, 0xd0, 0x1c, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x29, 0xd0, 0x1a, 0x4a, 0x1a, 0x4b, - 0x04, 0x32, 0x11, 0x68, 0x1c, 0x69, 0x3c, 0x00, - 0x94, 0xe3, 0x00, 0x00, 0xa1, 0x42, 0x22, 0xd1, - 0x51, 0x68, 0x5b, 0x69, 0x99, 0x42, 0x1f, 0xd1, - 0x16, 0x49, 0x49, 0x68, 0x93, 0x68, 0xc9, 0x1a, - 0x81, 0x42, 0x19, 0xd2, 0xd0, 0x68, 0x14, 0x49, - 0x01, 0x30, 0xd0, 0x60, 0x09, 0x68, 0x88, 0x42, - 0x0c, 0xd9, 0x06, 0x22, 0xff, 0x21, 0x68, 0x46, - 0xf2, 0xf7, 0x2e, 0xf9, 0xf3, 0xf7, 0xac, 0xfc, - 0x01, 0x1c, 0x00, 0x23, 0x00, 0x22, 0x68, 0x46, - 0x3c, 0x00, 0xd0, 0xe3, 0x00, 0x00, 0x02, 0xf0, - 0xce, 0xf9, 0x01, 0x22, 0x1d, 0x20, 0x0a, 0x49, - 0x05, 0xf0, 0xf7, 0xf8, 0x1c, 0xbd, 0xf7, 0xf7, - 0x88, 0xf9, 0x04, 0x22, 0x81, 0x18, 0x08, 0x1c, - 0xfc, 0xf7, 0x27, 0xfb, 0xf6, 0xe7, 0x1c, 0x75, - 0x01, 0x00, 0x44, 0x75, 0x01, 0x00, 0x28, 0x61, - 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, 0xf0, 0x59, - 0x01, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x68, 0x3c, 0x00, 0x0c, 0xe4, 0x00, 0x00, - 0x00, 0x29, 0x15, 0xd1, 0x00, 0x79, 0x02, 0x28, - 0x12, 0xd1, 0x08, 0x1c, 0xf7, 0xf7, 0x80, 0xf8, - 0x00, 0x28, 0x0d, 0xd0, 0x03, 0xf0, 0xf2, 0xfc, - 0x08, 0x30, 0x41, 0x8f, 0x00, 0x29, 0x07, 0xd1, - 0x80, 0x69, 0x00, 0x28, 0x04, 0xd0, 0x80, 0x79, - 0x06, 0x28, 0x01, 0xd1, 0xfc, 0xf7, 0x18, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x01, 0x49, 0x00, 0x20, - 0x88, 0x62, 0x70, 0x47, 0x3c, 0x00, 0x48, 0xe4, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x05, 0x4d, 0x04, 0x1c, 0xa9, 0x1d, 0xff, 0xf7, - 0x14, 0xf8, 0x06, 0x22, 0x29, 0x1c, 0xa0, 0x18, - 0xf2, 0xf7, 0x4b, 0xf8, 0xb0, 0xbd, 0x70, 0x7c, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x15, 0x1c, - 0xff, 0xf7, 0x07, 0xf8, 0x06, 0x22, 0x29, 0x1c, - 0xa0, 0x18, 0xf2, 0xf7, 0x3e, 0xf8, 0xb0, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x0a, 0x30, 0x3c, 0x00, - 0x84, 0xe4, 0x00, 0x00, 0xf7, 0xf7, 0xbc, 0xf9, - 0x01, 0x23, 0x00, 0x28, 0x03, 0xd0, 0x05, 0x48, - 0x00, 0x78, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x22, - 0x00, 0x21, 0x00, 0x20, 0x03, 0xf0, 0xc6, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x03, 0xf0, 0xbb, 0xfd, 0x80, 0xbd, - 0xb0, 0xb5, 0x05, 0x4d, 0xac, 0x79, 0x0a, 0x1c, - 0x3c, 0x00, 0xc0, 0xe4, 0x00, 0x00, 0x01, 0x1c, - 0x01, 0x23, 0x01, 0x20, 0x03, 0xf0, 0xb1, 0xfd, - 0xac, 0x71, 0xb0, 0xbd, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0c, 0x1c, - 0x88, 0x07, 0x02, 0xd5, 0xf6, 0xf7, 0x47, 0xfa, - 0x10, 0xe0, 0x60, 0x07, 0x0e, 0xd5, 0x17, 0x4f, - 0xa3, 0x20, 0xc0, 0x5d, 0x15, 0x4d, 0x10, 0x28, - 0x00, 0xd3, 0x15, 0x4d, 0x04, 0xf0, 0x59, 0xfc, - 0xb9, 0x6f, 0x3c, 0x00, 0xfc, 0xe4, 0x00, 0x00, - 0x40, 0x1a, 0x29, 0x1a, 0x01, 0x20, 0xf6, 0xf7, - 0xc1, 0xfa, 0xe0, 0x07, 0x11, 0x49, 0xc0, 0x0f, - 0x48, 0x60, 0x0c, 0xd0, 0x0d, 0x4c, 0x44, 0x3c, - 0x20, 0x78, 0x03, 0x28, 0x0f, 0xd1, 0x00, 0x2e, - 0x06, 0xd0, 0xf6, 0xf7, 0xf9, 0xf9, 0x01, 0x1c, - 0x01, 0x20, 0xf6, 0xf7, 0xaf, 0xfa, 0xf8, 0xbd, - 0x09, 0x49, 0x01, 0x20, 0xf6, 0xf7, 0xaa, 0xfa, - 0x01, 0x20, 0x20, 0x70, 0x3c, 0x00, 0x38, 0xe5, - 0x00, 0x00, 0xf7, 0xe7, 0x01, 0x21, 0x30, 0x1c, - 0xf6, 0xf7, 0x89, 0xfa, 0xf2, 0xe7, 0xa6, 0x0e, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0xc4, 0x09, - 0x00, 0x00, 0xb0, 0x57, 0x01, 0x00, 0x40, 0x42, - 0x0f, 0x00, 0x80, 0xb5, 0x06, 0x28, 0x04, 0xdb, - 0x05, 0x21, 0xff, 0x20, 0xf2, 0xf7, 0x9f, 0xfe, - 0x80, 0xbd, 0x03, 0x4a, 0xc0, 0x00, 0x11, 0x50, - 0x01, 0x21, 0x80, 0x18, 0x01, 0x71, 0x3c, 0x00, - 0x74, 0xe5, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0x9c, 0x5a, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68, - 0x70, 0x47, 0x00, 0x00, 0xd0, 0x60, 0x01, 0x00, - 0xb0, 0xb5, 0x08, 0x4c, 0x25, 0x1d, 0x28, 0x1c, - 0x21, 0x68, 0x00, 0xf0, 0xf1, 0xfe, 0x00, 0x28, - 0x03, 0xd1, 0x01, 0x21, 0x04, 0x48, 0xf2, 0xf7, - 0xcf, 0xfa, 0x28, 0x1c, 0x21, 0x68, 0x00, 0xf0, - 0xfb, 0xfe, 0xb0, 0xbd, 0xc0, 0x60, 0x01, 0x00, - 0x3c, 0x00, 0xb0, 0xe5, 0x00, 0x00, 0x2c, 0x10, - 0x07, 0x00, 0xb0, 0xb5, 0x10, 0x4d, 0x0c, 0x1c, - 0xa8, 0x68, 0x00, 0x28, 0x02, 0xd1, 0x04, 0xf0, - 0xf4, 0xfb, 0x28, 0x60, 0x20, 0x1c, 0x04, 0xf0, - 0x38, 0xfb, 0x01, 0x21, 0x03, 0x20, 0x03, 0xf0, - 0xc4, 0xfe, 0x04, 0xf0, 0xf0, 0xfb, 0xa8, 0x68, - 0x00, 0x28, 0x0b, 0xd1, 0x04, 0xf0, 0xe5, 0xfb, - 0x29, 0x68, 0x00, 0x1b, 0x40, 0x1a, 0x69, 0x68, - 0x40, 0x18, 0x3c, 0x00, 0xec, 0xe5, 0x00, 0x00, - 0x41, 0x08, 0x40, 0x18, 0x28, 0x60, 0x01, 0x20, - 0xa8, 0x60, 0xb0, 0xbd, 0xd0, 0x60, 0x01, 0x00, - 0xf8, 0xb5, 0x1f, 0x4e, 0x00, 0x24, 0xb0, 0x68, - 0x00, 0x28, 0x02, 0xd1, 0x04, 0xf0, 0xd0, 0xfb, - 0x70, 0x60, 0x05, 0xf0, 0x61, 0xf8, 0x04, 0xf0, - 0x8f, 0xfb, 0x05, 0x1c, 0xf9, 0xf7, 0x66, 0xfe, - 0x31, 0x68, 0x18, 0x4a, 0x41, 0x18, 0x12, 0x68, - 0xe8, 0x0b, 0x00, 0x2a, 0x3c, 0x00, 0x28, 0xe6, - 0x00, 0x00, 0x00, 0xd1, 0xa8, 0x0a, 0x40, 0x18, - 0x85, 0x42, 0x1f, 0xd9, 0x14, 0x4f, 0x2d, 0x1a, - 0x38, 0x1c, 0x20, 0x30, 0x81, 0x79, 0x00, 0xab, - 0x19, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x05, 0xf0, - 0x6e, 0xf8, 0x00, 0x28, 0x03, 0xd1, 0x02, 0x21, - 0x8f, 0x20, 0xf2, 0xf7, 0x28, 0xfe, 0x29, 0x1c, - 0x0c, 0x48, 0xf2, 0x68, 0xf8, 0xf7, 0x09, 0xfc, - 0x00, 0x28, 0x04, 0xd0, 0x01, 0x1c, 0x3c, 0x00, - 0x64, 0xe6, 0x00, 0x00, 0x28, 0x1c, 0xff, 0xf7, - 0xa5, 0xff, 0x01, 0x24, 0x00, 0xab, 0x18, 0x88, - 0xf8, 0x84, 0x05, 0xf0, 0x47, 0xf8, 0x20, 0x1c, - 0xf8, 0xbd, 0x00, 0x00, 0xd0, 0x60, 0x01, 0x00, - 0xf4, 0x74, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x89, 0x13, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0xc8, 0x60, 0x70, 0x47, 0xd0, 0x60, 0x01, 0x00, - 0x06, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x01, 0x28, - 0x3c, 0x00, 0xa0, 0xe6, 0x00, 0x00, 0x07, 0xd1, - 0x04, 0x48, 0xac, 0x38, 0x01, 0x69, 0x03, 0x48, - 0x00, 0xf0, 0x79, 0xfe, 0xf3, 0xf7, 0x2b, 0xfa, - 0x80, 0xbd, 0x98, 0x66, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0x80, 0xb5, 0x42, 0x78, 0x81, 0x68, - 0x00, 0x79, 0x03, 0xf0, 0xde, 0xff, 0x00, 0x28, - 0x01, 0xd1, 0xf5, 0xf7, 0xb6, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x1f, 0xb5, 0x04, 0xf0, 0x69, 0xfb, - 0xf6, 0xf7, 0x3c, 0x00, 0xdc, 0xe6, 0x00, 0x00, - 0x91, 0xff, 0x16, 0x4c, 0x02, 0x28, 0x03, 0xd1, - 0xff, 0xf7, 0xdc, 0xfd, 0x04, 0x28, 0x02, 0xd3, - 0x00, 0x20, 0x20, 0x70, 0x1f, 0xbd, 0xfb, 0xf7, - 0xf7, 0xfc, 0x00, 0x28, 0xfa, 0xd1, 0x60, 0x6a, - 0x00, 0x28, 0xf7, 0xd0, 0x20, 0x78, 0x80, 0x07, - 0xf4, 0xd4, 0x09, 0x21, 0x16, 0x20, 0x04, 0xf0, - 0x93, 0xff, 0x01, 0x20, 0x20, 0x70, 0x0b, 0x4c, - 0x09, 0x49, 0x02, 0x90, 0x3c, 0x00, 0x18, 0xe7, - 0x00, 0x00, 0x01, 0x94, 0x00, 0x91, 0x04, 0xf0, - 0x46, 0xfb, 0x00, 0x19, 0x03, 0x90, 0x68, 0x46, - 0xfd, 0xf7, 0xb5, 0xfb, 0x00, 0x22, 0x16, 0x21, - 0x84, 0x20, 0x05, 0xf0, 0x3e, 0xf8, 0xdc, 0xe7, - 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, 0x61, 0xed, - 0x00, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x23, 0x48, - 0x70, 0xb5, 0x80, 0x78, 0x9c, 0xb0, 0x01, 0x28, - 0x3e, 0xd1, 0x20, 0x4c, 0x09, 0xa8, 0x3c, 0x00, - 0x54, 0xe7, 0x00, 0x00, 0x80, 0x3c, 0x61, 0x1c, - 0xfe, 0xf7, 0x92, 0xfe, 0x04, 0x20, 0x11, 0xad, - 0x68, 0x72, 0xa0, 0x6f, 0x19, 0xa9, 0x18, 0x90, - 0x7c, 0x20, 0x00, 0x5d, 0x01, 0x26, 0x08, 0x71, - 0x1d, 0x20, 0x00, 0x5d, 0x00, 0x28, 0x06, 0xd0, - 0x10, 0x96, 0x12, 0x96, 0xfc, 0xf7, 0xf6, 0xfa, - 0x28, 0x72, 0x20, 0x7a, 0x11, 0x90, 0xf3, 0xf7, - 0xcd, 0xff, 0x6a, 0x21, 0x08, 0x53, 0x40, 0x34, - 0x3c, 0x00, 0x90, 0xe7, 0x00, 0x00, 0x00, 0x22, - 0x01, 0xa9, 0x06, 0xa8, 0xf6, 0xf7, 0xcd, 0xff, - 0x21, 0x1c, 0x00, 0x20, 0xfb, 0xf7, 0xcb, 0xfb, - 0x06, 0xa9, 0xfb, 0xf7, 0xc8, 0xfb, 0x01, 0xa9, - 0xfb, 0xf7, 0xc5, 0xfb, 0x0a, 0x49, 0x09, 0x68, - 0x00, 0x29, 0x07, 0xd0, 0x33, 0x1c, 0x0a, 0x22, - 0x69, 0x46, 0xfb, 0xf7, 0xda, 0xfb, 0x00, 0x9a, - 0x07, 0x21, 0x91, 0x70, 0x0c, 0x90, 0x09, 0xa8, - 0xfe, 0xf7, 0x3c, 0x00, 0xcc, 0xe7, 0x00, 0x00, - 0x7b, 0xfe, 0x1c, 0xb0, 0x70, 0xbd, 0x00, 0x00, - 0x84, 0x66, 0x01, 0x00, 0xe4, 0x62, 0x01, 0x00, - 0xf8, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0xff, 0x22, - 0x01, 0x68, 0x12, 0x02, 0x0e, 0x1c, 0x08, 0x7b, - 0x49, 0x7b, 0x09, 0x02, 0x11, 0x40, 0x08, 0x43, - 0x05, 0x1c, 0x31, 0x1c, 0x06, 0x22, 0xa0, 0x18, - 0xf1, 0xf7, 0x7c, 0xfe, 0x06, 0x22, 0xb1, 0x18, - 0x20, 0x1c, 0xf1, 0xf7, 0x3c, 0x00, 0x08, 0xe8, - 0x00, 0x00, 0x77, 0xfe, 0x28, 0x0a, 0x29, 0x02, - 0x08, 0x43, 0x00, 0x04, 0x03, 0x21, 0x49, 0x02, - 0x00, 0x0c, 0x88, 0x42, 0x08, 0xd2, 0xe0, 0x68, - 0x01, 0x89, 0x0e, 0x39, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x0e, 0x31, 0x01, 0x60, 0xf8, 0xbd, - 0x00, 0x26, 0x20, 0x1c, 0x10, 0x30, 0x03, 0xf0, - 0xe8, 0xfa, 0x21, 0x8b, 0x00, 0x29, 0x05, 0xd1, - 0xe1, 0x7d, 0x00, 0x29, 0x0b, 0xd0, 0x3c, 0x00, - 0x44, 0xe8, 0x00, 0x00, 0x80, 0x69, 0x80, 0x07, - 0x08, 0xd4, 0xe0, 0x68, 0x01, 0x26, 0x01, 0x89, - 0x02, 0x39, 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, - 0x02, 0x31, 0x06, 0xe0, 0xe0, 0x68, 0x01, 0x89, - 0x06, 0x39, 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, - 0x06, 0x31, 0x01, 0x60, 0x14, 0x49, 0x00, 0x20, - 0x0b, 0x1f, 0x42, 0x00, 0x9a, 0x5a, 0xaa, 0x42, - 0x02, 0xd1, 0x11, 0x49, 0x06, 0x31, 0x02, 0xe0, - 0x3c, 0x00, 0x80, 0xe8, 0x00, 0x00, 0x01, 0x30, - 0x02, 0x28, 0xf5, 0xd3, 0xe0, 0x68, 0x06, 0x22, - 0x00, 0x68, 0xf1, 0xf7, 0x34, 0xfe, 0x01, 0x2e, - 0xcb, 0xd1, 0x81, 0x20, 0x00, 0xab, 0x18, 0x80, - 0xe1, 0x7d, 0x20, 0x8b, 0x49, 0x03, 0x08, 0x43, - 0x31, 0x03, 0x08, 0x43, 0x00, 0x04, 0x00, 0x0c, - 0x01, 0x0a, 0x00, 0x02, 0x08, 0x43, 0x58, 0x80, - 0xe0, 0x68, 0x19, 0x88, 0x00, 0x68, 0xc1, 0x80, - 0x59, 0x88, 0x3c, 0x00, 0xbc, 0xe8, 0x00, 0x00, - 0x01, 0x81, 0xb5, 0xe7, 0x6a, 0x46, 0x01, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x01, 0x89, 0x06, 0x22, - 0x08, 0x31, 0x01, 0x81, 0x04, 0x68, 0x04, 0x49, - 0x08, 0x3c, 0x04, 0x60, 0x20, 0x1c, 0xf1, 0xf7, - 0x0d, 0xfe, 0xe5, 0x80, 0xb0, 0xbd, 0x00, 0x00, - 0x6a, 0x46, 0x01, 0x00, 0xf8, 0xb5, 0x00, 0x29, - 0x01, 0xd0, 0x00, 0x28, 0x01, 0xd1, 0x00, 0x20, - 0xf8, 0xbd, 0x09, 0x04, 0x3c, 0x00, 0xf8, 0xe8, - 0x00, 0x00, 0x09, 0x0c, 0xf2, 0xf7, 0x43, 0xff, - 0x06, 0x1c, 0x05, 0x1c, 0x00, 0x27, 0x20, 0xe0, - 0x2c, 0x89, 0x29, 0x68, 0x02, 0x2c, 0x01, 0xd2, - 0x02, 0x20, 0x01, 0xe0, 0x48, 0x78, 0x02, 0x30, - 0x84, 0x42, 0x02, 0xdd, 0x24, 0x1a, 0x09, 0x18, - 0xf4, 0xe7, 0x84, 0x42, 0x10, 0xd0, 0x01, 0x1b, - 0x0a, 0x04, 0x01, 0x04, 0x09, 0x0c, 0x12, 0x0c, - 0x28, 0x1c, 0xf2, 0xf7, 0x9e, 0xfe, 0x3c, 0x00, - 0x34, 0xe9, 0x00, 0x00, 0x00, 0x28, 0x06, 0xd1, - 0xe8, 0x68, 0xf2, 0xf7, 0x2d, 0xfe, 0xef, 0x60, - 0x28, 0x89, 0x00, 0x1b, 0x28, 0x81, 0xed, 0x68, - 0x00, 0x2d, 0xdc, 0xd1, 0x30, 0x1c, 0xd1, 0xe7, - 0xf8, 0xb5, 0x85, 0x68, 0x04, 0x1c, 0x80, 0x69, - 0x2e, 0x1c, 0x00, 0x28, 0x0d, 0xd0, 0x71, 0x68, - 0xf2, 0xf7, 0xf6, 0xfd, 0xa0, 0x69, 0xf2, 0xf7, - 0x17, 0xfe, 0x06, 0xe0, 0x00, 0x21, 0xc1, 0x60, - 0x3c, 0x00, 0x70, 0xe9, 0x00, 0x00, 0xf1, 0x60, - 0xa0, 0x8d, 0x36, 0x68, 0x01, 0x38, 0xa0, 0x85, - 0xf0, 0x68, 0x00, 0x28, 0xf5, 0xd1, 0x30, 0x68, - 0xa0, 0x60, 0xa0, 0x8d, 0x01, 0x38, 0x00, 0x04, - 0x00, 0x0c, 0xa0, 0x85, 0x02, 0xd0, 0x20, 0x1c, - 0xf9, 0xf7, 0x39, 0xf8, 0x2a, 0x4f, 0x2a, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x03, 0xd0, 0x06, 0x21, - 0x68, 0x68, 0xfa, 0xf7, 0x7c, 0xfd, 0x68, 0x68, - 0x00, 0x68, 0x3c, 0x00, 0xac, 0xe9, 0x00, 0x00, - 0x81, 0x78, 0x00, 0x29, 0x2b, 0xd1, 0xc1, 0x78, - 0x00, 0x29, 0x30, 0xd1, 0x21, 0x8e, 0x01, 0x39, - 0x21, 0x86, 0xfb, 0xf7, 0x15, 0xf8, 0xa1, 0x6a, - 0x08, 0x1a, 0xa0, 0x62, 0xe1, 0x69, 0x88, 0x42, - 0x03, 0xd9, 0x04, 0x21, 0x02, 0x20, 0xf2, 0xf7, - 0x67, 0xfc, 0xb8, 0x68, 0x00, 0x28, 0x1e, 0xd0, - 0x1a, 0x49, 0x20, 0x8e, 0x49, 0x68, 0x0c, 0x22, - 0x52, 0x1a, 0x90, 0x42, 0x3c, 0x00, 0xe8, 0xe9, - 0x00, 0x00, 0x08, 0xd3, 0x19, 0x23, 0x9b, 0x01, - 0xaf, 0x22, 0x92, 0x01, 0x59, 0x43, 0xa0, 0x6a, - 0x51, 0x1a, 0x88, 0x42, 0x0e, 0xd2, 0x00, 0x21, - 0x0c, 0x20, 0x03, 0xf0, 0xac, 0xfc, 0x00, 0x20, - 0xb8, 0x60, 0x07, 0xe0, 0x01, 0x29, 0x05, 0xd1, - 0xc0, 0x78, 0x17, 0x28, 0x02, 0xd1, 0xa0, 0x8e, - 0x01, 0x38, 0xa0, 0x86, 0x2a, 0x1d, 0x06, 0xca, - 0xe0, 0x68, 0x63, 0x69, 0xf1, 0xf7, 0x3c, 0x00, - 0x24, 0xea, 0x00, 0x00, 0xdc, 0xfc, 0xb5, 0x42, - 0x01, 0xd0, 0x2d, 0x68, 0xb4, 0xe7, 0xa0, 0x8d, - 0x00, 0x28, 0x03, 0xd1, 0x05, 0x48, 0xb9, 0x69, - 0x00, 0xf0, 0x9e, 0xfc, 0xf8, 0xbd, 0x00, 0x00, - 0xfc, 0x5a, 0x01, 0x00, 0xcc, 0x5c, 0x01, 0x00, - 0x18, 0x57, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, - 0x89, 0x07, 0x07, 0x4b, 0xca, 0x0f, 0x80, 0xb5, - 0x19, 0x7c, 0x00, 0x29, 0x06, 0xd0, 0x81, 0x43, - 0x3c, 0x00, 0x60, 0xea, 0x00, 0x00, 0x19, 0x74, - 0x03, 0xd1, 0x07, 0x21, 0x15, 0x20, 0x04, 0xf0, - 0xa2, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x01, 0x20, - 0xff, 0xf7, 0xe9, 0xff, 0x80, 0xbd, 0x80, 0xb5, - 0x01, 0x1c, 0x02, 0x20, 0xff, 0xf7, 0xe3, 0xff, - 0x80, 0xbd, 0xb0, 0xb5, 0x1b, 0x4c, 0x60, 0x68, - 0xfc, 0xf7, 0x2f, 0xff, 0x20, 0x68, 0x00, 0x25, - 0x40, 0x68, 0x3c, 0x00, 0x9c, 0xea, 0x00, 0x00, - 0x00, 0x28, 0x03, 0xd0, 0xfd, 0xf7, 0x18, 0xfc, - 0x20, 0x68, 0x45, 0x60, 0x60, 0x68, 0xfc, 0xf7, - 0xc5, 0xfe, 0x14, 0x48, 0x61, 0x68, 0x00, 0xf0, - 0x61, 0xfc, 0xa0, 0x7a, 0x01, 0x28, 0x05, 0xd0, - 0x02, 0x28, 0x03, 0xd0, 0x20, 0x68, 0x00, 0x68, - 0x00, 0xf0, 0xde, 0xf8, 0x01, 0x21, 0x1f, 0x20, - 0x04, 0xf0, 0xb2, 0xfd, 0x00, 0x21, 0x1f, 0x20, - 0x04, 0xf0, 0xae, 0xfd, 0x3c, 0x00, 0xd8, 0xea, - 0x00, 0x00, 0x02, 0x21, 0x1f, 0x20, 0x04, 0xf0, - 0xaa, 0xfd, 0xa5, 0x72, 0x21, 0x68, 0x2c, 0x20, - 0x40, 0x5c, 0x89, 0x68, 0xf1, 0xf7, 0x76, 0xfc, - 0x60, 0x68, 0xfc, 0xf7, 0xe4, 0xfe, 0x20, 0x68, - 0x05, 0x62, 0xb0, 0xbd, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x04, 0x49, - 0x0a, 0x68, 0xc8, 0x68, 0x92, 0x6a, 0x00, 0x2a, - 0x01, 0xd0, 0x09, 0x69, 0x08, 0x18, 0x3c, 0x00, - 0x14, 0xeb, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0xb0, 0xb5, 0x13, 0x4c, - 0x05, 0x1c, 0xa0, 0x7a, 0x01, 0x38, 0x02, 0x28, - 0x19, 0xd8, 0x01, 0x21, 0x1f, 0x20, 0x04, 0xf0, - 0x81, 0xfd, 0x20, 0x68, 0xfc, 0x23, 0x01, 0x1c, - 0x20, 0x30, 0x02, 0x7b, 0x1a, 0x40, 0x02, 0x73, - 0x00, 0x2d, 0x0f, 0xd0, 0x01, 0x23, 0x1a, 0x43, - 0x02, 0x73, 0xa0, 0x7a, 0x03, 0x28, 0x07, 0xd1, - 0x3c, 0x00, 0x50, 0xeb, 0x00, 0x00, 0x01, 0x20, - 0x01, 0xf0, 0xe7, 0xfd, 0x00, 0x28, 0x01, 0xd1, - 0xff, 0xf7, 0x97, 0xff, 0xb0, 0xbd, 0x4b, 0x62, - 0xb0, 0xbd, 0x02, 0x21, 0x11, 0x43, 0x01, 0x73, - 0xf6, 0xe7, 0x14, 0x7a, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x0a, 0x30, 0xf6, 0xf7, 0x43, 0xfe, - 0x00, 0x28, 0x0c, 0xd0, 0x22, 0x88, 0x0a, 0x49, - 0x0b, 0x7a, 0x90, 0x04, 0xc0, 0x0f, 0x00, 0x2b, - 0x06, 0xd1, 0x3c, 0x00, 0x8c, 0xeb, 0x00, 0x00, - 0x12, 0x06, 0x92, 0x0e, 0x20, 0x2a, 0x00, 0xd1, - 0x01, 0x20, 0xc8, 0x60, 0x10, 0xbd, 0x00, 0x28, - 0xfc, 0xd1, 0x00, 0x22, 0x24, 0x21, 0x80, 0x20, - 0x04, 0xf0, 0x04, 0xfe, 0x10, 0xbd, 0x00, 0x00, - 0x04, 0x7a, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x1c, - 0x1f, 0x21, 0x80, 0x20, 0x04, 0xf0, 0xfa, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xf8, 0xb5, 0x1d, 0x4e, - 0x04, 0x1c, 0x30, 0x68, 0x3c, 0x00, 0xc8, 0xeb, - 0x00, 0x00, 0x1d, 0x1c, 0x47, 0x68, 0x20, 0x1c, - 0xf1, 0xf7, 0x0a, 0xfc, 0xfb, 0xf7, 0x87, 0xfa, - 0x00, 0x28, 0x04, 0xd0, 0x28, 0x1c, 0xf2, 0xf7, - 0x2a, 0xfb, 0x00, 0x28, 0x28, 0xd1, 0x20, 0x88, - 0x40, 0x05, 0x25, 0xd4, 0x30, 0x68, 0x00, 0x68, - 0xfe, 0xf7, 0x59, 0xf9, 0x00, 0x28, 0x03, 0xd1, - 0xfd, 0xf7, 0x89, 0xfa, 0xf1, 0xf7, 0xed, 0xfb, - 0x30, 0x68, 0x00, 0x25, 0x40, 0x68, 0x3c, 0x00, - 0x04, 0xec, 0x00, 0x00, 0x00, 0x28, 0x03, 0xd0, - 0xfd, 0xf7, 0x64, 0xfb, 0x30, 0x68, 0x45, 0x60, - 0x20, 0x88, 0x00, 0x09, 0x00, 0x07, 0x03, 0xd1, - 0x04, 0xf0, 0xc8, 0xf8, 0x61, 0x88, 0x45, 0x18, - 0x30, 0x68, 0x45, 0x61, 0x81, 0x6a, 0x01, 0x31, - 0x81, 0x62, 0x20, 0x88, 0x80, 0x04, 0xc1, 0x0f, - 0x02, 0x48, 0xf8, 0xf7, 0xcd, 0xff, 0xf8, 0xbd, - 0x14, 0x7a, 0x01, 0x00, 0xb1, 0xeb, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xec, 0x00, 0x00, 0xb0, 0xb5, - 0x0e, 0x4c, 0x05, 0x1c, 0x60, 0x68, 0xfc, 0xf7, - 0xf6, 0xfd, 0x0c, 0x48, 0x61, 0x68, 0x00, 0xf0, - 0x92, 0xfb, 0x00, 0x21, 0x24, 0x20, 0x04, 0xf0, - 0xec, 0xfc, 0x00, 0x22, 0xd2, 0x43, 0x80, 0x21, - 0x24, 0x20, 0x04, 0xf0, 0xb8, 0xfc, 0x00, 0x20, - 0xe0, 0x60, 0x20, 0x72, 0x20, 0x68, 0x01, 0x68, - 0x28, 0x06, 0x00, 0x0e, 0xf1, 0xf7, 0xb0, 0xfb, - 0xb0, 0xbd, 0x3c, 0x00, 0x7c, 0xec, 0x00, 0x00, - 0x04, 0x7a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0xf2, 0xf7, - 0x85, 0xfc, 0x20, 0x1c, 0xf2, 0xf7, 0xb0, 0xfd, - 0x10, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x1c, 0x4e, - 0x05, 0x1c, 0xb0, 0x7a, 0x2c, 0x1c, 0x40, 0x34, - 0x02, 0x28, 0x26, 0xd1, 0xa0, 0x8b, 0x31, 0x89, - 0x88, 0x42, 0x22, 0xd1, 0x30, 0x68, 0x41, 0x6a, - 0x00, 0x29, 0x08, 0xd0, 0x3c, 0x00, 0xb8, 0xec, - 0x00, 0x00, 0x20, 0x30, 0x00, 0x7b, 0xc0, 0x07, - 0x04, 0xd5, 0x01, 0x20, 0x01, 0xf0, 0x2f, 0xfd, - 0x00, 0x28, 0x18, 0xd1, 0x60, 0x78, 0x00, 0x28, - 0x09, 0xd1, 0x30, 0x68, 0x02, 0x23, 0x20, 0x30, - 0x02, 0x7b, 0x0d, 0x49, 0x52, 0x08, 0x52, 0x00, - 0x1a, 0x43, 0x02, 0x73, 0x01, 0xe0, 0xff, 0x21, - 0xf5, 0x31, 0x01, 0x22, 0x1f, 0x20, 0x04, 0xf0, - 0x6e, 0xfc, 0x03, 0x20, 0xb0, 0x72, 0x3c, 0x00, - 0xf4, 0xec, 0x00, 0x00, 0x02, 0xe0, 0x28, 0x1c, - 0xff, 0xf7, 0xc4, 0xff, 0x60, 0x78, 0x00, 0x28, - 0x03, 0xd1, 0x29, 0x1c, 0x01, 0x20, 0x03, 0xf0, - 0x29, 0xfb, 0x70, 0xbd, 0x14, 0x7a, 0x01, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x60, 0x34, 0xe0, 0x79, 0x0e, 0x4d, 0x00, 0x28, - 0x0a, 0xd1, 0x02, 0x20, 0xa8, 0x72, 0x28, 0x68, - 0x40, 0x68, 0x00, 0x28, 0x04, 0xd1, 0x0b, 0x48, - 0x3c, 0x00, 0x30, 0xed, 0x00, 0x00, 0xfd, 0xf7, - 0xd0, 0xfa, 0x29, 0x68, 0x48, 0x60, 0x04, 0xf0, - 0x38, 0xf8, 0x29, 0x68, 0xc8, 0x61, 0xff, 0xf7, - 0xe0, 0xfe, 0x29, 0x68, 0x09, 0x69, 0x08, 0x1a, - 0x03, 0xf0, 0x6f, 0xff, 0x00, 0x28, 0x01, 0xd0, - 0xe0, 0x79, 0xa0, 0x71, 0xb0, 0xbd, 0x14, 0x7a, - 0x01, 0x00, 0xc1, 0xeb, 0x00, 0x00, 0xf8, 0xb5, - 0x04, 0x1c, 0x00, 0x26, 0x04, 0xf0, 0x21, 0xf8, - 0x05, 0x1c, 0x3c, 0x00, 0x6c, 0xed, 0x00, 0x00, - 0x22, 0x48, 0x00, 0x27, 0x07, 0x70, 0xa1, 0x07, - 0x04, 0xd0, 0xe1, 0x07, 0xc9, 0x0f, 0x01, 0x62, - 0xc5, 0x61, 0x01, 0x26, 0x41, 0x6b, 0x00, 0x29, - 0x34, 0xd1, 0x00, 0x2e, 0x32, 0xd0, 0x06, 0x1c, - 0xf9, 0xf7, 0x44, 0xff, 0x31, 0x6b, 0x1a, 0x4b, - 0x41, 0x1a, 0xa2, 0x07, 0x12, 0xd5, 0xda, 0x68, - 0x00, 0x2a, 0x08, 0xdd, 0x91, 0x42, 0x1a, 0x68, - 0x02, 0xda, 0x14, 0x09, 0x3c, 0x00, 0xa8, 0xed, - 0x00, 0x00, 0xa2, 0x18, 0x06, 0xe0, 0x14, 0x09, - 0x12, 0x1b, 0x03, 0xe0, 0x0a, 0x43, 0x02, 0xd1, - 0x1a, 0x68, 0x52, 0x00, 0x1a, 0x60, 0xb7, 0x63, - 0x0a, 0xe0, 0xb2, 0x6b, 0x01, 0x32, 0xb2, 0x63, - 0x02, 0x2a, 0x1a, 0x68, 0x01, 0xdd, 0x94, 0x08, - 0x00, 0xe0, 0x14, 0x09, 0x12, 0x1b, 0x1a, 0x60, - 0xd9, 0x60, 0x30, 0x63, 0xf5, 0x62, 0x18, 0x68, - 0x08, 0x49, 0x88, 0x42, 0x01, 0xd9, 0x3c, 0x00, - 0xe4, 0xed, 0x00, 0x00, 0x19, 0x60, 0x03, 0xe0, - 0x64, 0x28, 0x01, 0xd2, 0x64, 0x20, 0x18, 0x60, - 0xf5, 0xf7, 0xfc, 0xfd, 0xf8, 0xbd, 0x00, 0x00, - 0x60, 0x6c, 0x01, 0x00, 0xb0, 0x57, 0x01, 0x00, - 0x20, 0xa1, 0x07, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0x00, 0x20, 0x50, 0x4d, 0x00, 0x21, 0x68, 0x61, - 0x20, 0x69, 0xfb, 0xf7, 0xb3, 0xfc, 0x07, 0x1c, - 0x20, 0x69, 0x03, 0x21, 0xfb, 0xf7, 0xae, 0xfc, - 0x3c, 0x00, 0x20, 0xee, 0x00, 0x00, 0x00, 0x28, - 0x03, 0xd0, 0x80, 0x78, 0x29, 0x78, 0x88, 0x42, - 0x63, 0xd1, 0x47, 0x4d, 0x20, 0x1c, 0x14, 0x30, - 0x39, 0x1c, 0x06, 0x1c, 0x2a, 0x78, 0x02, 0xf0, - 0x5a, 0xfa, 0x00, 0x28, 0x59, 0xd1, 0xe0, 0x68, - 0x05, 0x68, 0x41, 0x48, 0x01, 0x95, 0x58, 0x30, - 0x02, 0x90, 0xfb, 0xf7, 0x6a, 0xff, 0x3e, 0x4d, - 0x19, 0x35, 0x00, 0x28, 0x0b, 0xd0, 0x28, 0x1c, - 0xfb, 0xf7, 0x3c, 0x00, 0x5c, 0xee, 0x00, 0x00, - 0x55, 0xff, 0x00, 0x28, 0x1e, 0xd1, 0x31, 0x1c, - 0x28, 0x1c, 0xfb, 0xf7, 0x65, 0xff, 0x00, 0x28, - 0x42, 0xd0, 0x17, 0xe0, 0x28, 0x1c, 0xfb, 0xf7, - 0x49, 0xff, 0x00, 0x28, 0x06, 0xd0, 0x39, 0x1c, - 0x02, 0x98, 0xfb, 0xf7, 0x63, 0xff, 0x00, 0x28, - 0x36, 0xd0, 0x0b, 0xe0, 0x39, 0x1c, 0x02, 0x98, - 0xfb, 0xf7, 0x5c, 0xff, 0x00, 0x28, 0x2f, 0xd0, - 0x31, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0x98, 0xee, - 0x00, 0x00, 0xfb, 0xf7, 0x4c, 0xff, 0x00, 0x28, - 0x29, 0xd0, 0x30, 0x1c, 0xf6, 0xf7, 0xad, 0xfc, - 0x29, 0x4a, 0x18, 0x32, 0x11, 0x7c, 0x00, 0x29, - 0x04, 0xd0, 0x51, 0x6a, 0x00, 0x29, 0x01, 0xd0, - 0x00, 0x28, 0x1c, 0xd1, 0x90, 0x6a, 0x00, 0x28, - 0x3b, 0xd0, 0x13, 0x78, 0x01, 0x9d, 0x01, 0x21, - 0x6d, 0x89, 0x01, 0x20, 0x2b, 0x40, 0x9b, 0x07, - 0x11, 0xd0, 0xa3, 0x6b, 0x1e, 0x4e, 0x3c, 0x00, - 0xd4, 0xee, 0x00, 0x00, 0x1d, 0x1c, 0x7f, 0x35, - 0x98, 0x36, 0x00, 0x2d, 0x14, 0xd0, 0x55, 0x8a, - 0x00, 0x2d, 0x08, 0xd1, 0x55, 0x69, 0xab, 0x42, - 0x0f, 0xda, 0x00, 0x20, 0x17, 0x4d, 0x01, 0x23, - 0x6b, 0x61, 0x0a, 0xe0, 0x29, 0xe0, 0xf5, 0x78, - 0x02, 0x2d, 0x06, 0xd1, 0x14, 0x4f, 0x55, 0x69, - 0x3f, 0x68, 0xed, 0x19, 0xab, 0x42, 0x00, 0xda, - 0x00, 0x20, 0x23, 0x6c, 0x1d, 0x1c, 0x7f, 0x35, - 0x3c, 0x00, 0x10, 0xef, 0x00, 0x00, 0x10, 0xd0, - 0x55, 0x8a, 0x00, 0x2d, 0x03, 0xd1, 0x95, 0x69, - 0xab, 0x42, 0x0a, 0xd2, 0x08, 0xe0, 0xf5, 0x78, - 0x02, 0x2d, 0x06, 0xd1, 0x0b, 0x4e, 0x95, 0x69, - 0x36, 0x68, 0xad, 0x19, 0xab, 0x42, 0x00, 0xd2, - 0x00, 0x21, 0x08, 0x43, 0x08, 0xd0, 0x10, 0x6a, - 0x00, 0x28, 0x01, 0xd0, 0xf1, 0xf7, 0x4b, 0xfa, - 0x00, 0x21, 0x20, 0x1c, 0x01, 0xf0, 0xb9, 0xf9, - 0xfe, 0xbd, 0x3c, 0x00, 0x4c, 0xef, 0x00, 0x00, - 0xec, 0x65, 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, - 0xcc, 0x67, 0x01, 0x00, 0x3e, 0xb5, 0x05, 0x6a, - 0x04, 0x1c, 0xc0, 0x68, 0xf2, 0xf7, 0x34, 0xfb, - 0xe1, 0x69, 0xf2, 0xf7, 0x57, 0xfa, 0x20, 0x1c, - 0x40, 0x30, 0xc1, 0x8b, 0x04, 0x31, 0xc1, 0x83, - 0x2b, 0x69, 0x10, 0x49, 0x98, 0x79, 0x06, 0x28, - 0x0a, 0xd1, 0x98, 0x88, 0x01, 0x91, 0x02, 0x94, - 0x00, 0x90, 0x60, 0x69, 0x3c, 0x00, 0x88, 0xef, - 0x00, 0x00, 0x1b, 0x68, 0x01, 0x68, 0xe0, 0x68, - 0x03, 0x22, 0xc0, 0x68, 0x0a, 0xe0, 0x02, 0x28, - 0x0b, 0xd1, 0x10, 0x20, 0x00, 0x90, 0x01, 0x91, - 0x02, 0x94, 0xe0, 0x68, 0xa3, 0x69, 0xc0, 0x68, - 0x00, 0x22, 0x00, 0x21, 0xf7, 0xf7, 0x0f, 0xfb, - 0x3e, 0xbd, 0xf2, 0xf7, 0xa6, 0xf9, 0xfb, 0xe7, - 0x00, 0x00, 0xbd, 0xef, 0x00, 0x00, 0x80, 0xb5, - 0xd1, 0x68, 0x50, 0x69, 0xc9, 0x68, 0x3c, 0x00, - 0xc4, 0xef, 0x00, 0x00, 0xc1, 0x60, 0xd1, 0x68, - 0xc8, 0x60, 0x11, 0x1c, 0x40, 0x31, 0xcb, 0x8b, - 0x00, 0x89, 0x18, 0x18, 0xc8, 0x83, 0x10, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, 0xbc, 0xff, - 0x80, 0xbd, 0x03, 0x48, 0xfb, 0xf7, 0xcc, 0xf8, - 0x00, 0x6a, 0xfe, 0xf7, 0xf5, 0xf9, 0x80, 0xbd, - 0xa0, 0x6a, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x0a, 0x24, 0x30, 0x07, 0x01, 0x09, 0xa0, 0x07, - 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x01, 0x43, - 0x0f, 0x1c, 0x0a, 0x4d, 0x2f, 0x60, 0x04, 0xf0, - 0xfa, 0xfe, 0xad, 0x68, 0x28, 0x01, 0x00, 0x0f, - 0xb0, 0x42, 0x05, 0xd0, 0x01, 0x3c, 0xf4, 0xd2, - 0x01, 0x21, 0x9b, 0x20, 0xf2, 0xf7, 0x41, 0xf9, - 0x28, 0x02, 0x00, 0x0a, 0x08, 0x2e, 0x01, 0xd1, - 0x31, 0x05, 0x08, 0x43, 0xf8, 0xbd, 0x60, 0x00, - 0x07, 0x00, 0x01, 0x22, 0xd2, 0x05, 0x80, 0xb5, - 0x00, 0x21, 0x3c, 0x00, 0x3c, 0xf0, 0x00, 0x00, - 0x04, 0x20, 0x04, 0xf0, 0xdd, 0xfc, 0x0f, 0x20, - 0xff, 0xf7, 0xd6, 0xff, 0x0f, 0x21, 0x09, 0x04, - 0x08, 0x40, 0x00, 0x0c, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x05, 0x48, 0xfd, 0xf7, 0x4a, 0xf9, - 0x04, 0x48, 0xfd, 0xf7, 0x7b, 0xf8, 0x04, 0x48, - 0xfd, 0xf7, 0x6c, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0x89, 0x34, 0x01, 0x00, 0xed, 0x24, 0x00, 0x00, - 0x11, 0x1c, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xf0, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0x48, 0xf3, 0xf7, - 0x2a, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0xd1, 0x24, - 0x00, 0x00, 0x80, 0xb5, 0xf2, 0xf7, 0x53, 0xf9, - 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x21, 0x00, 0x20, - 0x01, 0xf0, 0x51, 0xfe, 0x03, 0x20, 0x02, 0xf0, - 0x46, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x06, 0x48, - 0x80, 0xb5, 0xc1, 0x69, 0x00, 0x29, 0x06, 0xd1, - 0x01, 0x6a, 0x00, 0x29, 0x03, 0xd1, 0x3c, 0x00, - 0xb4, 0xf0, 0x00, 0x00, 0x81, 0x6b, 0x03, 0x48, - 0x00, 0xf0, 0x5e, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x4c, 0x20, 0x6a, 0xfc, 0xf7, - 0xb3, 0xfb, 0x03, 0x48, 0x21, 0x6a, 0x00, 0xf0, - 0x4f, 0xf9, 0x10, 0xbd, 0x1c, 0x75, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x4c, - 0x20, 0x7c, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x21, - 0x3c, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xfd, 0xf7, - 0x86, 0xf9, 0x00, 0x25, 0x25, 0x70, 0xa0, 0x68, - 0x01, 0x28, 0x03, 0xd1, 0x00, 0x20, 0xa5, 0x60, - 0x01, 0xf0, 0x8f, 0xf8, 0xa0, 0x78, 0x01, 0x28, - 0x05, 0xd1, 0x03, 0x48, 0x98, 0x38, 0x00, 0x69, - 0xfc, 0xf7, 0xef, 0xfb, 0xa5, 0x70, 0xb0, 0xbd, - 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x21, 0x01, 0x20, 0x01, 0xf0, 0x09, 0xfe, - 0x80, 0xbd, 0x3c, 0x00, 0x2c, 0xf1, 0x00, 0x00, - 0x38, 0xb5, 0x69, 0x46, 0x00, 0x25, 0xf8, 0xf7, - 0xb7, 0xfe, 0x04, 0x1c, 0x01, 0xd1, 0x01, 0x20, - 0x38, 0xbd, 0xa0, 0x68, 0x00, 0x28, 0x04, 0xd0, - 0x00, 0x99, 0xa1, 0x31, 0x08, 0x20, 0x04, 0xf0, - 0x73, 0xfa, 0x1c, 0x21, 0x20, 0x1c, 0xf1, 0xf7, - 0xa3, 0xf9, 0x28, 0x1c, 0xf0, 0xe7, 0x00, 0x00, - 0xfe, 0xb5, 0x07, 0x1c, 0x4c, 0x23, 0x39, 0x49, - 0x58, 0x43, 0x44, 0x18, 0x3c, 0x00, 0x68, 0xf1, - 0x00, 0x00, 0x25, 0x1c, 0x40, 0x35, 0x28, 0x7a, - 0x37, 0x49, 0x48, 0x76, 0x21, 0x1c, 0x30, 0x31, - 0x02, 0x91, 0x0c, 0x23, 0xc8, 0x56, 0x42, 0x1c, - 0x0a, 0x73, 0x49, 0x7b, 0x88, 0x42, 0x46, 0xda, - 0x32, 0x48, 0x00, 0x78, 0x80, 0x07, 0x3e, 0xd5, - 0x00, 0x20, 0x01, 0x90, 0xf6, 0xf7, 0xaf, 0xfa, - 0x00, 0x28, 0x2e, 0xd0, 0xac, 0x21, 0x09, 0x58, - 0x00, 0x29, 0x01, 0xd0, 0xe4, 0x30, 0x3c, 0x00, - 0xa4, 0xf1, 0x00, 0x00, 0x00, 0xe0, 0xcc, 0x30, - 0x06, 0x1c, 0x40, 0x68, 0x00, 0x28, 0x25, 0xd0, - 0x02, 0x99, 0x08, 0x7b, 0x01, 0x28, 0x11, 0xd1, - 0x20, 0x1c, 0x2e, 0x30, 0x29, 0x78, 0xf6, 0xf7, - 0xed, 0xf9, 0x71, 0x68, 0x03, 0xe0, 0x72, 0x18, - 0x12, 0x7a, 0x82, 0x42, 0x03, 0xd9, 0xff, 0x31, - 0x09, 0x06, 0x09, 0x0e, 0xf7, 0xd1, 0xa9, 0x70, - 0x01, 0x20, 0x01, 0x90, 0x23, 0x1c, 0x3e, 0x33, - 0x3c, 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x1a, 0x1d, - 0x30, 0x1c, 0x00, 0x97, 0x01, 0x99, 0xf8, 0xf7, - 0x58, 0xfa, 0x00, 0x28, 0x11, 0xd0, 0xa8, 0x78, - 0x80, 0x19, 0x00, 0x7a, 0x00, 0xe0, 0x00, 0x20, - 0x68, 0x70, 0x68, 0x78, 0x01, 0x21, 0xfb, 0xf7, - 0xe0, 0xfd, 0x60, 0x60, 0x38, 0x1c, 0x01, 0xf0, - 0x14, 0xfe, 0x38, 0x1c, 0x01, 0xf0, 0xa5, 0xfb, - 0xfe, 0xbd, 0x02, 0x99, 0x08, 0x7b, 0xff, 0x30, - 0x48, 0x73, 0x3c, 0x00, 0x1c, 0xf2, 0x00, 0x00, - 0x38, 0x1c, 0xfc, 0xf7, 0x19, 0xfc, 0x03, 0xf0, - 0xc3, 0xfd, 0x06, 0x1c, 0xfb, 0xf7, 0x8e, 0xfe, - 0x41, 0x00, 0x76, 0x18, 0x68, 0x78, 0x61, 0x68, - 0xfb, 0xf7, 0x6a, 0xfe, 0x31, 0x18, 0x20, 0x8d, - 0x3b, 0x1c, 0x05, 0x4a, 0x03, 0xf0, 0x12, 0xfe, - 0xe5, 0xe7, 0x00, 0x00, 0x58, 0xe3, 0x01, 0x00, - 0x30, 0x80, 0x07, 0x00, 0x1d, 0x75, 0x01, 0x00, - 0xd5, 0x4e, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xf2, - 0x00, 0x00, 0x03, 0x1c, 0x04, 0x48, 0x80, 0xb5, - 0x02, 0x79, 0x20, 0x30, 0x03, 0x49, 0x00, 0xf0, - 0x30, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, 0x03, 0x1c, - 0x04, 0x48, 0x80, 0xb5, 0xc2, 0x78, 0x38, 0x30, - 0x03, 0x49, 0x00, 0xf0, 0x22, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, 0xc8, 0x67, - 0x01, 0x00, 0x03, 0x1c, 0x04, 0x48, 0x3c, 0x00, - 0x94, 0xf2, 0x00, 0x00, 0x80, 0xb5, 0x82, 0x79, - 0x50, 0x30, 0x03, 0x49, 0x00, 0xf0, 0x14, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, - 0xcc, 0x67, 0x01, 0x00, 0x03, 0x1c, 0x04, 0x48, - 0x80, 0xb5, 0x42, 0x79, 0x68, 0x30, 0x03, 0x49, - 0x00, 0xf0, 0x06, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0xac, 0x7c, 0x01, 0x00, 0xd0, 0x67, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x24, 0x84, 0x80, 0x0b, 0x60, - 0x3c, 0x00, 0xd0, 0xf2, 0x00, 0x00, 0x19, 0x1c, - 0x51, 0x43, 0x01, 0x60, 0x19, 0x06, 0x09, 0x16, - 0x10, 0x22, 0x06, 0x30, 0xf1, 0xf7, 0x9f, 0xf9, - 0x10, 0xbd, 0xb0, 0xb5, 0x06, 0x4d, 0x00, 0x24, - 0xac, 0x60, 0xec, 0x60, 0xec, 0x61, 0x2c, 0x62, - 0x02, 0xf0, 0xf1, 0xfc, 0x00, 0xf0, 0x0d, 0xf8, - 0xec, 0x62, 0x2c, 0x70, 0xb0, 0xbd, 0x44, 0x7d, - 0x01, 0x00, 0x80, 0xb5, 0x80, 0x21, 0x01, 0x48, - 0xf1, 0xf7, 0x3c, 0x00, 0x0c, 0xf3, 0x00, 0x00, - 0xc7, 0xf8, 0x80, 0xbd, 0x04, 0x66, 0x01, 0x00, - 0xf8, 0xb5, 0x07, 0x4f, 0x00, 0x24, 0x00, 0x26, - 0x18, 0x20, 0x60, 0x43, 0xc5, 0x19, 0xee, 0x60, - 0x03, 0xf0, 0x42, 0xfd, 0x10, 0x35, 0x01, 0x34, - 0x02, 0x2c, 0x41, 0xc5, 0xf4, 0xdb, 0xf8, 0xbd, - 0xb8, 0x7d, 0x01, 0x00, 0x00, 0x23, 0x03, 0x60, - 0x04, 0x4b, 0x00, 0x29, 0x00, 0xd1, 0x19, 0x1c, - 0x41, 0x60, 0x00, 0x2a, 0x3c, 0x00, 0x48, 0xf3, - 0x00, 0x00, 0x00, 0xd1, 0x1a, 0x1c, 0x82, 0x60, - 0x70, 0x47, 0xbd, 0x75, 0x00, 0x00, 0x10, 0xb5, - 0x07, 0x4c, 0x20, 0x68, 0x01, 0x30, 0x20, 0x60, - 0x20, 0x28, 0x03, 0xd9, 0x58, 0x21, 0x58, 0x20, - 0xf1, 0xf7, 0x9d, 0xff, 0x21, 0x68, 0x01, 0x20, - 0x01, 0x39, 0x88, 0x40, 0x10, 0xbd, 0x60, 0x5b, - 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x21, 0x68, 0x00, 0x20, 0x00, 0x29, 0x3c, 0x00, - 0x84, 0xf3, 0x00, 0x00, 0x0a, 0xd0, 0xa9, 0x43, - 0x21, 0x60, 0x07, 0xd1, 0xa0, 0x68, 0xf1, 0xf7, - 0x23, 0xf8, 0x00, 0x28, 0x02, 0xd1, 0x21, 0x68, - 0x29, 0x43, 0x21, 0x60, 0xb0, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, 0x21, 0x68, - 0x00, 0x20, 0x29, 0x43, 0x21, 0x60, 0xa9, 0x42, - 0x07, 0xd1, 0x60, 0x68, 0xf1, 0xf7, 0x10, 0xf8, - 0x00, 0x28, 0x02, 0xd1, 0x21, 0x68, 0xa9, 0x43, - 0x3c, 0x00, 0xc0, 0xf3, 0x00, 0x00, 0x21, 0x60, - 0xb0, 0xbd, 0x1a, 0x4b, 0xb0, 0xb5, 0x9a, 0x6a, - 0x00, 0x28, 0x0b, 0xd0, 0x00, 0x2a, 0x07, 0xdb, - 0xb8, 0x24, 0x24, 0x58, 0x01, 0x3c, 0xa4, 0x1a, - 0x00, 0x19, 0xb0, 0x30, 0x00, 0x7b, 0x02, 0xe0, - 0x0e, 0x20, 0x00, 0xe0, 0x0d, 0x20, 0x5d, 0x6a, - 0x12, 0x4c, 0x00, 0x2d, 0x01, 0xd0, 0x20, 0x78, - 0x00, 0xe0, 0x20, 0x5c, 0xff, 0x24, 0xa8, 0x34, - 0xc4, 0x40, 0x3c, 0x00, 0xfc, 0xf3, 0x00, 0x00, - 0x9c, 0x60, 0xf5, 0x24, 0xc4, 0x40, 0x9c, 0x61, - 0xfd, 0x24, 0xc4, 0x40, 0xdc, 0x61, 0xff, 0x24, - 0x29, 0x34, 0xc4, 0x40, 0x5c, 0x61, 0xff, 0x24, - 0x53, 0x34, 0xc4, 0x40, 0x00, 0x20, 0x0c, 0x33, - 0x11, 0xc3, 0x00, 0x29, 0x05, 0xd0, 0x00, 0x2a, - 0x03, 0xdc, 0x02, 0x21, 0x50, 0x42, 0x00, 0xf0, - 0x65, 0xfb, 0xb0, 0xbd, 0xac, 0x7e, 0x01, 0x00, - 0xb8, 0x52, 0x01, 0x00, 0x3c, 0x00, 0x38, 0xf4, - 0x00, 0x00, 0x10, 0xb5, 0x13, 0x4c, 0x13, 0x48, - 0x21, 0x1c, 0xff, 0x31, 0x69, 0x31, 0x0e, 0xc9, - 0x0e, 0xc0, 0x21, 0x1c, 0xff, 0x31, 0x24, 0x22, - 0x75, 0x31, 0x0f, 0x48, 0xf1, 0xf7, 0x51, 0xf8, - 0x21, 0x1c, 0xff, 0x31, 0x3c, 0x22, 0x99, 0x31, - 0x0d, 0x48, 0xf1, 0xf7, 0xa6, 0xf8, 0xfc, 0xf7, - 0xa2, 0xff, 0x21, 0x1c, 0xff, 0x31, 0x10, 0x22, - 0xd5, 0x31, 0x09, 0x48, 0xf1, 0xf7, 0x3c, 0x00, - 0x74, 0xf4, 0x00, 0x00, 0x41, 0xf8, 0x21, 0x1c, - 0xff, 0x31, 0x28, 0x22, 0xe5, 0x31, 0x07, 0x48, - 0xf1, 0xf7, 0x96, 0xf8, 0x10, 0xbd, 0x00, 0x00, - 0x40, 0x63, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x0c, 0x80, 0x07, 0x00, 0x30, 0x80, 0x07, 0x00, - 0x80, 0x80, 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, - 0xf8, 0xb5, 0x00, 0x28, 0x59, 0xd0, 0x04, 0xf0, - 0x4b, 0xf9, 0xf8, 0xf7, 0xb3, 0xfb, 0x00, 0x22, - 0x3c, 0x00, 0xb0, 0xf4, 0x00, 0x00, 0x01, 0x21, - 0x13, 0x20, 0x04, 0xf0, 0x7c, 0xf9, 0x2a, 0x49, - 0x29, 0x48, 0x49, 0x6c, 0x01, 0x60, 0x00, 0x21, - 0x29, 0x48, 0xc9, 0x43, 0x41, 0x60, 0x26, 0x4c, - 0x14, 0x34, 0x61, 0x6c, 0x81, 0x60, 0xa1, 0x6c, - 0xc1, 0x60, 0x00, 0x20, 0x25, 0x4d, 0x02, 0x26, - 0x01, 0x01, 0x6e, 0x50, 0x0a, 0x19, 0x4f, 0x19, - 0x50, 0x32, 0x04, 0x37, 0x0e, 0xca, 0x01, 0x30, - 0x08, 0x28, 0x3c, 0x00, 0xec, 0xf4, 0x00, 0x00, - 0x0e, 0xc7, 0xf4, 0xdb, 0x14, 0x22, 0x21, 0x1c, - 0xcc, 0x31, 0x1e, 0x48, 0xf1, 0xf7, 0x5a, 0xf8, - 0x1d, 0x48, 0x81, 0x78, 0x09, 0x09, 0x09, 0x01, - 0x81, 0x70, 0x00, 0x21, 0xc1, 0x70, 0x41, 0x70, - 0x21, 0x1c, 0xe0, 0x31, 0x0a, 0x78, 0x02, 0x70, - 0x49, 0x78, 0x41, 0x70, 0x21, 0x1c, 0xe8, 0x31, - 0x30, 0x22, 0x08, 0x30, 0xf1, 0xf7, 0x46, 0xf8, - 0x21, 0x1c, 0xff, 0x31, 0x3c, 0x00, 0x28, 0xf5, - 0x00, 0x00, 0x50, 0x22, 0x19, 0x31, 0x12, 0x48, - 0xf1, 0xf7, 0x3f, 0xf8, 0x83, 0x20, 0x80, 0x00, - 0x14, 0x22, 0x21, 0x18, 0x10, 0x48, 0xf1, 0xf7, - 0x38, 0xf8, 0x11, 0x20, 0x40, 0x01, 0x84, 0x22, - 0x21, 0x18, 0x0d, 0x48, 0xf1, 0xf7, 0x31, 0xf8, - 0xff, 0xf7, 0x73, 0xff, 0x20, 0x1c, 0xf1, 0xf7, - 0x28, 0xfd, 0xf8, 0xbd, 0xff, 0xf7, 0x6d, 0xff, - 0xfb, 0xe7, 0x08, 0x20, 0x07, 0x00, 0x3c, 0x00, - 0x64, 0xf5, 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, - 0x40, 0x20, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x00, 0x40, 0x07, 0x00, 0x00, 0x50, 0x07, 0x00, - 0x00, 0x60, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x00, 0x90, 0x07, 0x00, 0xf8, 0xb5, 0x05, 0x1c, - 0x18, 0x48, 0xc0, 0x68, 0x00, 0x28, 0x25, 0xd0, - 0x16, 0x4e, 0x01, 0x36, 0x74, 0x78, 0x30, 0x78, - 0x27, 0x1a, 0x79, 0x19, 0x20, 0x1c, 0xf1, 0xf7, - 0x3c, 0x00, 0xa0, 0xf5, 0x00, 0x00, 0x4b, 0xf8, - 0x00, 0x90, 0x29, 0x1c, 0x20, 0x1c, 0xf1, 0xf7, - 0xb2, 0xf8, 0xc1, 0x19, 0x20, 0x1c, 0xf1, 0xf7, - 0x42, 0xf8, 0x60, 0x1a, 0x30, 0x70, 0x70, 0x1e, - 0x80, 0x68, 0x00, 0x28, 0x0d, 0xd0, 0x53, 0x36, - 0xf4, 0x78, 0x00, 0x99, 0x20, 0x1c, 0xf1, 0xf7, - 0xa2, 0xf8, 0xb1, 0x78, 0x61, 0x1a, 0x41, 0x18, - 0x20, 0x1c, 0xf1, 0xf7, 0x9c, 0xf8, 0x60, 0x1a, - 0xb0, 0x70, 0x3c, 0x00, 0xdc, 0xf5, 0x00, 0x00, - 0x03, 0x48, 0x5c, 0x30, 0x01, 0x69, 0xc2, 0x68, - 0x69, 0x43, 0x51, 0x18, 0xc1, 0x60, 0xf8, 0xbd, - 0x44, 0x7d, 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x4d, - 0xe8, 0x68, 0x29, 0x69, 0x40, 0x18, 0x7d, 0x21, - 0x09, 0x01, 0x44, 0x18, 0x20, 0x1c, 0x03, 0xf0, - 0x0b, 0xfb, 0x00, 0x28, 0x0a, 0xd0, 0x03, 0xf0, - 0xcf, 0xfb, 0x01, 0x1b, 0x28, 0x69, 0xf1, 0xf7, - 0x7d, 0xf8, 0x01, 0x30, 0x3c, 0x00, 0x18, 0xf6, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x0c, 0xff, 0xf7, - 0xb2, 0xff, 0xb0, 0xbd, 0x00, 0x00, 0xa0, 0x7d, - 0x01, 0x00, 0x70, 0xb5, 0x10, 0x4c, 0x60, 0x68, - 0x80, 0x25, 0xa8, 0x43, 0x60, 0x60, 0x20, 0x68, - 0x28, 0x43, 0x20, 0x60, 0x0d, 0x4e, 0x30, 0x1c, - 0x10, 0x30, 0xf3, 0xf7, 0xc8, 0xfc, 0x00, 0x28, - 0x03, 0xd1, 0x07, 0x21, 0x85, 0x20, 0xf1, 0xf7, - 0x2a, 0xfe, 0x08, 0x48, 0x00, 0x21, 0x3c, 0x00, - 0x54, 0xf6, 0x00, 0x00, 0x80, 0x68, 0x41, 0x63, - 0xc0, 0x6c, 0x10, 0x30, 0x70, 0x61, 0x01, 0x20, - 0x30, 0x61, 0x20, 0x68, 0xa8, 0x43, 0x20, 0x60, - 0x70, 0xbd, 0x00, 0x00, 0xf4, 0x00, 0x07, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x24, 0x7e, 0x01, 0x00, - 0x01, 0x1c, 0x00, 0x20, 0x05, 0x29, 0x80, 0xb5, - 0x09, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, - 0x3c, 0x00, 0x90, 0xf6, 0x00, 0x00, 0x03, 0x00, - 0xff, 0xf7, 0xcf, 0xfc, 0x80, 0xbd, 0x01, 0x22, - 0x92, 0x02, 0x80, 0xb5, 0x00, 0x21, 0x07, 0x20, - 0x04, 0xf0, 0xab, 0xf9, 0x80, 0xbd, 0x80, 0xb5, - 0x40, 0x22, 0x00, 0x21, 0x00, 0x20, 0x04, 0xf0, - 0xa4, 0xf9, 0x03, 0x22, 0x00, 0x21, 0x00, 0x20, - 0x04, 0xf0, 0x9f, 0xf9, 0x80, 0xbd, 0x70, 0xb5, - 0x0e, 0x1c, 0x05, 0x1c, 0x14, 0x1c, 0x08, 0x28, - 0x0e, 0xd1, 0x3c, 0x00, 0xcc, 0xf6, 0x00, 0x00, - 0x00, 0xf0, 0x00, 0xfc, 0x0e, 0x28, 0x01, 0xd1, - 0x14, 0x20, 0x00, 0xe0, 0x10, 0x20, 0xe1, 0x03, - 0x00, 0xd5, 0x01, 0x38, 0xc0, 0x06, 0x0a, 0x49, - 0xc0, 0x0e, 0x88, 0x71, 0x08, 0xe0, 0x09, 0x2d, - 0x06, 0xd1, 0xa0, 0x04, 0x01, 0xd5, 0x00, 0x20, - 0x00, 0xe0, 0x01, 0x20, 0xf3, 0xf7, 0xb0, 0xf9, - 0x34, 0x40, 0x21, 0x1c, 0x32, 0x1c, 0x28, 0x1c, - 0x04, 0xf0, 0x7a, 0xf9, 0x3c, 0x00, 0x08, 0xf7, - 0x00, 0x00, 0x70, 0xbd, 0x00, 0x00, 0x00, 0x80, - 0x07, 0x00, 0x70, 0xb5, 0x00, 0x24, 0x13, 0x29, - 0x11, 0xd8, 0x00, 0x28, 0x01, 0xd1, 0x08, 0x4e, - 0x08, 0x25, 0x01, 0x28, 0x01, 0xd1, 0x07, 0x4e, - 0x09, 0x25, 0x00, 0xf0, 0x78, 0xfa, 0x00, 0x28, - 0x05, 0xd0, 0x02, 0x1c, 0x31, 0x1c, 0x28, 0x1c, - 0xff, 0xf7, 0xc3, 0xff, 0x01, 0x24, 0x20, 0x1c, - 0x70, 0xbd, 0xf8, 0xff, 0x07, 0x00, 0x3c, 0x00, - 0x44, 0xf7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x01, 0x22, 0xd2, 0x02, 0x80, 0xb5, 0x00, 0x21, - 0x07, 0x20, 0x04, 0xf0, 0x53, 0xf9, 0x80, 0xbd, - 0x0f, 0x22, 0x12, 0x04, 0x07, 0x21, 0x49, 0x04, - 0x80, 0xb5, 0x09, 0x20, 0x04, 0xf0, 0x4a, 0xf9, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, - 0x04, 0x20, 0x04, 0xf0, 0x1b, 0xfc, 0x40, 0x21, - 0x00, 0x20, 0x04, 0xf0, 0x17, 0xfc, 0x04, 0x49, - 0x3c, 0x00, 0x80, 0xf7, 0x00, 0x00, 0x00, 0x20, - 0x88, 0x60, 0x02, 0x48, 0x09, 0x69, 0x20, 0x30, - 0xff, 0xf7, 0x09, 0xfe, 0x80, 0xbd, 0x64, 0x73, - 0x01, 0x00, 0xb0, 0xb5, 0x60, 0x21, 0x00, 0x20, - 0x04, 0xf0, 0x07, 0xfc, 0x11, 0x4d, 0x00, 0x24, - 0x00, 0x22, 0x04, 0x20, 0x29, 0x5d, 0x04, 0xf0, - 0x28, 0xf9, 0x0c, 0x20, 0x03, 0xf0, 0x9b, 0xfb, - 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, 0x05, 0x2c, - 0xf2, 0xd3, 0x3c, 0x00, 0xbc, 0xf7, 0x00, 0x00, - 0x0f, 0x22, 0x00, 0x21, 0x0a, 0x20, 0x04, 0xf0, - 0x1b, 0xf9, 0x61, 0x21, 0x00, 0x20, 0x04, 0xf0, - 0xef, 0xfb, 0x06, 0x49, 0x01, 0x20, 0x88, 0x60, - 0x04, 0x48, 0x09, 0x69, 0x20, 0x30, 0xff, 0xf7, - 0xcd, 0xfd, 0xff, 0x20, 0x2d, 0x30, 0xb0, 0xbd, - 0xa8, 0x58, 0x01, 0x00, 0x64, 0x73, 0x01, 0x00, - 0xf8, 0xb5, 0x06, 0x1c, 0x12, 0x48, 0xc6, 0x70, - 0x01, 0x20, 0xff, 0xf7, 0x3c, 0x00, 0xf8, 0xf7, - 0x00, 0x00, 0xfd, 0xfb, 0x01, 0x27, 0xbf, 0x02, - 0x04, 0x1c, 0xb8, 0x43, 0x01, 0x1c, 0x01, 0x20, - 0x04, 0xf0, 0xd1, 0xfb, 0x03, 0x20, 0xff, 0xf7, - 0xf2, 0xfb, 0x05, 0x1c, 0xb8, 0x43, 0x01, 0x1c, - 0x03, 0x20, 0x04, 0xf0, 0xc8, 0xfb, 0x30, 0x1c, - 0x00, 0xf0, 0x9f, 0xf9, 0x00, 0xf0, 0x57, 0xf8, - 0x21, 0x1c, 0x01, 0x20, 0x04, 0xf0, 0xbf, 0xfb, - 0x29, 0x1c, 0x03, 0x20, 0x04, 0xf0, 0x3c, 0x00, - 0x34, 0xf8, 0x00, 0x00, 0xbb, 0xfb, 0x00, 0x20, - 0xf8, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x22, 0x40, 0x21, 0x00, 0x20, - 0x04, 0xf0, 0xd8, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x01, 0x24, 0x09, 0x20, - 0xff, 0xf7, 0xcc, 0xfb, 0x0f, 0x21, 0x09, 0x04, - 0x88, 0x43, 0x03, 0x21, 0x89, 0x04, 0xe2, 0x04, - 0x05, 0x2d, 0x12, 0x4e, 0x20, 0xd2, 0x02, 0xa3, - 0x3c, 0x00, 0x70, 0xf8, 0x00, 0x00, 0x5b, 0x5d, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x06, 0x09, - 0x0c, 0x10, 0x03, 0x00, 0x03, 0x21, 0x09, 0x04, - 0x0c, 0xe0, 0x01, 0x21, 0x09, 0x04, 0x09, 0xe0, - 0x01, 0x21, 0x49, 0x04, 0x06, 0xe0, 0xf3, 0x68, - 0x04, 0x2b, 0x05, 0xd9, 0x02, 0xe0, 0xf3, 0x68, - 0x04, 0x2b, 0x01, 0xd8, 0x01, 0x43, 0x01, 0xe0, - 0x10, 0x43, 0x01, 0x1c, 0x09, 0x20, 0x04, 0xf0, - 0x80, 0xfb, 0x3c, 0x00, 0xac, 0xf8, 0x00, 0x00, - 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x24, 0xfb, 0xe7, - 0x64, 0x73, 0x01, 0x00, 0x01, 0x21, 0xc9, 0x05, - 0x00, 0x28, 0x80, 0xb5, 0x02, 0xd0, 0x0a, 0x1c, - 0x00, 0x21, 0x00, 0xe0, 0x00, 0x22, 0x04, 0x20, - 0x04, 0xf0, 0x96, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0xf0, 0xb5, 0x91, 0xb0, 0x00, 0x26, 0x40, 0x21, - 0x01, 0xa8, 0xf0, 0xf7, 0xdd, 0xfd, 0x2a, 0x4f, - 0xb8, 0x79, 0x01, 0x22, 0x3c, 0x00, 0xe8, 0xf8, - 0x00, 0x00, 0x52, 0x03, 0x00, 0x90, 0x00, 0x21, - 0x06, 0x20, 0x04, 0xf0, 0x84, 0xf8, 0x60, 0x21, - 0x00, 0x20, 0x04, 0xf0, 0x58, 0xfb, 0x61, 0x21, - 0x00, 0x20, 0x04, 0xf0, 0x54, 0xfb, 0x08, 0x20, - 0x03, 0xf0, 0xef, 0xfa, 0x00, 0x24, 0x0f, 0x20, - 0xff, 0xf7, 0x71, 0xfb, 0x40, 0x05, 0x05, 0x0f, - 0xa8, 0x00, 0x01, 0xa9, 0x09, 0x58, 0x01, 0xaa, - 0x01, 0x31, 0x01, 0x34, 0x0c, 0x2c, 0x3c, 0x00, - 0x24, 0xf9, 0x00, 0x00, 0x11, 0x50, 0xf1, 0xd3, - 0x00, 0x20, 0x81, 0x00, 0x01, 0xaa, 0x51, 0x58, - 0xb1, 0x42, 0x01, 0xd9, 0x0e, 0x1c, 0x05, 0x1c, - 0x01, 0x30, 0x10, 0x28, 0xf5, 0xd3, 0x06, 0x20, - 0xff, 0xf7, 0x58, 0xfb, 0x0f, 0x21, 0x49, 0x02, - 0x88, 0x43, 0x69, 0x02, 0x08, 0x43, 0x01, 0x21, - 0x49, 0x03, 0x01, 0x43, 0x06, 0x20, 0x04, 0xf0, - 0x29, 0xfb, 0x0d, 0x48, 0x84, 0x68, 0x64, 0x34, - 0x3c, 0x00, 0x60, 0xf9, 0x00, 0x00, 0x08, 0xe0, - 0x20, 0x1c, 0x03, 0xf0, 0x5a, 0xf9, 0x00, 0x28, - 0x03, 0xd0, 0x01, 0x21, 0x95, 0x20, 0xf1, 0xf7, - 0x98, 0xfc, 0x0f, 0x20, 0xff, 0xf7, 0x3d, 0xfb, - 0x00, 0x04, 0xf1, 0xd5, 0x87, 0x20, 0x03, 0xf0, - 0xb2, 0xfa, 0x00, 0x98, 0xb8, 0x71, 0x11, 0xb0, - 0xf0, 0xbd, 0x20, 0x10, 0x07, 0x00, 0x00, 0x01, - 0x07, 0x00, 0x10, 0xb5, 0x17, 0x4c, 0x61, 0x69, - 0x00, 0x29, 0x3c, 0x00, 0x9c, 0xf9, 0x00, 0x00, - 0x04, 0xd0, 0x0a, 0x21, 0x13, 0x20, 0x03, 0xf0, - 0x47, 0xfe, 0x10, 0xbd, 0x01, 0x1c, 0x12, 0x48, - 0x01, 0x29, 0x00, 0x78, 0x0c, 0xd0, 0x11, 0x29, - 0xf7, 0xd1, 0x05, 0x28, 0x03, 0xd1, 0x01, 0x21, - 0x13, 0x20, 0xf1, 0xf7, 0x71, 0xfc, 0x20, 0x78, - 0x07, 0x28, 0xee, 0xd1, 0x02, 0x21, 0x0a, 0xe0, - 0x05, 0x28, 0x07, 0xd0, 0x06, 0x28, 0x0a, 0xd0, - 0x07, 0x28, 0xf7, 0xd0, 0x3c, 0x00, 0xd8, 0xf9, - 0x00, 0x00, 0x08, 0x28, 0xe4, 0xd1, 0x00, 0x20, - 0x05, 0xe0, 0x01, 0x21, 0x13, 0x20, 0xf1, 0xf7, - 0x5e, 0xfc, 0x10, 0xbd, 0x01, 0x20, 0x02, 0xf0, - 0x6c, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x7c, 0x78, - 0x01, 0x00, 0x0d, 0x49, 0x80, 0xb5, 0x09, 0x78, - 0x03, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x0b, 0xd0, - 0x07, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x07, 0xd0, - 0x02, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x3c, 0x00, - 0x14, 0xfa, 0x00, 0x00, 0x03, 0xd1, 0x05, 0x29, - 0x09, 0xd1, 0x00, 0x28, 0x07, 0xd0, 0x00, 0x20, - 0xfc, 0xf7, 0x28, 0xfd, 0x00, 0x22, 0x13, 0x21, - 0x11, 0x20, 0x03, 0xf0, 0xc1, 0xfe, 0x80, 0xbd, - 0x7c, 0x78, 0x01, 0x00, 0x80, 0xb5, 0x06, 0x22, - 0x08, 0x21, 0x00, 0x20, 0x03, 0xf0, 0xde, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x07, 0x48, 0x80, 0xb5, - 0x40, 0x69, 0x00, 0x28, 0x01, 0xd1, 0xf1, 0xf7, - 0x3c, 0x00, 0x50, 0xfa, 0x00, 0x00, 0x33, 0xff, - 0x05, 0x49, 0x05, 0x4a, 0x08, 0x68, 0x50, 0x61, - 0x48, 0x68, 0x90, 0x61, 0x01, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xb0, 0x58, - 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, 0x07, 0x48, - 0x80, 0xb5, 0x40, 0x69, 0x00, 0x28, 0x01, 0xd1, - 0xf1, 0xf7, 0x1d, 0xff, 0x05, 0x49, 0x05, 0x4a, - 0x08, 0x68, 0x90, 0x61, 0x48, 0x68, 0x50, 0x61, - 0x01, 0x20, 0x3c, 0x00, 0x8c, 0xfa, 0x00, 0x00, - 0x80, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, - 0xb0, 0x58, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x11, 0xb5, 0x00, 0xab, 0x59, 0x78, 0x14, 0x48, - 0x01, 0x23, 0xc0, 0x56, 0x00, 0x22, 0x09, 0x18, - 0x0b, 0x06, 0x1b, 0x16, 0x13, 0x21, 0x13, 0x2b, - 0x02, 0xdd, 0x00, 0xab, 0x59, 0x70, 0x07, 0xe0, - 0x00, 0x2b, 0x02, 0xda, 0x00, 0xab, 0x5a, 0x70, - 0x02, 0xe0, 0x1c, 0x1c, 0x3c, 0x00, 0xc8, 0xfa, - 0x00, 0x00, 0x00, 0xab, 0x5c, 0x70, 0x00, 0xab, - 0x1b, 0x78, 0x18, 0x18, 0x00, 0x06, 0x00, 0x16, - 0x13, 0x28, 0x02, 0xdd, 0x00, 0xab, 0x19, 0x70, - 0x06, 0xe0, 0x00, 0x28, 0x02, 0xda, 0x00, 0xab, - 0x1a, 0x70, 0x01, 0xe0, 0x00, 0xab, 0x18, 0x70, - 0x00, 0x98, 0x18, 0xbd, 0x00, 0x00, 0x64, 0x73, - 0x01, 0x00, 0x38, 0xb5, 0x0c, 0x1c, 0x15, 0x49, - 0x00, 0xab, 0x49, 0x68, 0x13, 0x25, 0x3c, 0x00, - 0x04, 0xfb, 0x00, 0x00, 0x00, 0x91, 0x59, 0x78, - 0x09, 0x18, 0x59, 0x70, 0x19, 0x78, 0x08, 0x18, - 0x18, 0x70, 0x19, 0x88, 0x10, 0x48, 0x02, 0x2c, - 0xc1, 0x80, 0x01, 0xd0, 0x00, 0x2c, 0x0b, 0xd1, - 0x00, 0xab, 0x18, 0x78, 0x13, 0x28, 0x00, 0xd9, - 0x1d, 0x70, 0x00, 0xab, 0x19, 0x78, 0x00, 0x20, - 0xff, 0xf7, 0xee, 0xfd, 0x02, 0x2c, 0x01, 0xd0, - 0x01, 0x2c, 0x09, 0xd1, 0x00, 0xab, 0x58, 0x78, - 0x3c, 0x00, 0x40, 0xfb, 0x00, 0x00, 0x13, 0x28, - 0x00, 0xd9, 0x5d, 0x70, 0x00, 0xab, 0x59, 0x78, - 0x01, 0x20, 0xff, 0xf7, 0xe0, 0xfd, 0x38, 0xbd, - 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xa0, 0x58, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0e, 0x28, 0x13, 0x4d, 0x04, 0xd0, - 0x12, 0x49, 0xa0, 0x00, 0x00, 0x19, 0x4d, 0x39, - 0x45, 0x18, 0x06, 0x20, 0xff, 0xf7, 0x3d, 0xfa, - 0x0f, 0x49, 0x3c, 0x00, 0x7c, 0xfb, 0x00, 0x00, - 0xe0, 0x22, 0x09, 0x19, 0x10, 0x39, 0xc9, 0x7b, - 0x90, 0x43, 0x49, 0x01, 0x11, 0x40, 0x01, 0x43, - 0x06, 0x20, 0x04, 0xf0, 0x0d, 0xfa, 0x29, 0x1c, - 0x05, 0x20, 0x09, 0x4a, 0x03, 0xf0, 0x30, 0xff, - 0x08, 0x48, 0x1f, 0x22, 0x00, 0x19, 0x10, 0x38, - 0xc0, 0x7b, 0xc1, 0x04, 0xd2, 0x04, 0x08, 0x20, - 0x03, 0xf0, 0x26, 0xff, 0xb0, 0xbd, 0x00, 0x00, - 0xb4, 0x09, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xfb, - 0x00, 0x00, 0x14, 0x45, 0x01, 0x00, 0xff, 0x0f, - 0x00, 0x00, 0xc0, 0x58, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x06, 0x49, 0x00, 0x28, - 0x01, 0xd1, 0x08, 0x68, 0x80, 0xbd, 0x01, 0x28, - 0x01, 0xd1, 0x48, 0x68, 0x80, 0xbd, 0xf1, 0xf7, - 0x90, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0x7c, 0x73, - 0x01, 0x00, 0x01, 0x48, 0x40, 0x68, 0x70, 0x47, - 0x00, 0x00, 0xa0, 0x58, 0x01, 0x00, 0x3c, 0x00, - 0xf4, 0xfb, 0x00, 0x00, 0x04, 0x48, 0x01, 0x23, - 0x04, 0x49, 0xc0, 0x56, 0xc9, 0x56, 0x40, 0x18, - 0x00, 0x04, 0x00, 0x0c, 0x70, 0x47, 0x00, 0x00, - 0xa0, 0x58, 0x01, 0x00, 0xa2, 0x58, 0x01, 0x00, - 0x01, 0x48, 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, - 0x64, 0x73, 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, - 0x0e, 0x1c, 0x00, 0xf0, 0x55, 0xf9, 0x04, 0x1c, - 0x00, 0xf0, 0x58, 0xf9, 0x00, 0x28, 0x2c, 0xd0, - 0x3c, 0x00, 0x30, 0xfc, 0x00, 0x00, 0xb3, 0x00, - 0x60, 0x1e, 0x00, 0x2d, 0x1c, 0x4e, 0x19, 0x49, - 0x1a, 0x4a, 0x06, 0xd1, 0x0b, 0x25, 0x0e, 0x2c, - 0x00, 0xd1, 0x19, 0x4a, 0xd2, 0x58, 0x08, 0x56, - 0x08, 0xe0, 0x01, 0x2d, 0x1c, 0xd1, 0x9a, 0x18, - 0x04, 0x36, 0x08, 0x18, 0x08, 0x25, 0x0e, 0x23, - 0x12, 0x6d, 0xc0, 0x56, 0x07, 0x1c, 0x47, 0x43, - 0xfb, 0x00, 0xdf, 0x19, 0x12, 0x4b, 0x3f, 0x21, - 0x58, 0x43, 0x3c, 0x00, 0x6c, 0xfc, 0x00, 0x00, - 0x11, 0x4b, 0xa9, 0x40, 0x0c, 0x1c, 0x38, 0x18, - 0xc0, 0x18, 0x14, 0x40, 0xec, 0x40, 0xc0, 0x11, - 0x60, 0x43, 0x1b, 0x0a, 0xc0, 0x18, 0x80, 0x12, - 0x03, 0xd1, 0x01, 0x20, 0x04, 0xe0, 0x00, 0x20, - 0xf8, 0xbd, 0x3f, 0x28, 0x00, 0xdd, 0x3f, 0x20, - 0x30, 0x60, 0xa8, 0x40, 0x08, 0x40, 0x8a, 0x43, - 0x10, 0x43, 0xf5, 0xe7, 0xcc, 0x59, 0x01, 0x00, - 0xdc, 0x58, 0x01, 0x00, 0x3c, 0x00, 0xa8, 0xfc, - 0x00, 0x00, 0x7c, 0x73, 0x01, 0x00, 0x7c, 0x59, - 0x01, 0x00, 0x06, 0x06, 0x00, 0x00, 0x26, 0x00, - 0x02, 0x00, 0x03, 0x48, 0x08, 0xb5, 0xc0, 0x88, - 0x00, 0xab, 0x18, 0x80, 0x00, 0x98, 0x08, 0xbd, - 0x00, 0x00, 0xa0, 0x58, 0x01, 0x00, 0xb0, 0xb5, - 0x0b, 0x4d, 0x09, 0x4c, 0x0e, 0x20, 0x6c, 0x60, - 0xff, 0xf7, 0x8d, 0xf9, 0x09, 0x49, 0x02, 0x1c, - 0xc8, 0x60, 0x01, 0x06, 0x09, 0x0e, 0x3c, 0x00, - 0xe4, 0xfc, 0x00, 0x00, 0x13, 0x3a, 0x02, 0x2a, - 0x02, 0xd9, 0x17, 0x38, 0x04, 0x28, 0x00, 0xd8, - 0x00, 0x21, 0x08, 0x1c, 0x6c, 0x60, 0xb0, 0xbd, - 0x04, 0x18, 0x02, 0x00, 0x60, 0x00, 0x07, 0x00, - 0x64, 0x73, 0x01, 0x00, 0x0a, 0x48, 0x98, 0xb5, - 0x02, 0x78, 0x13, 0x21, 0x14, 0x2a, 0x00, 0xd3, - 0x01, 0x70, 0x42, 0x78, 0x14, 0x2a, 0x00, 0xd3, - 0x41, 0x70, 0x06, 0x4c, 0x60, 0x68, 0xff, 0xf7, - 0x3c, 0x00, 0x20, 0xfd, 0x00, 0x00, 0xbd, 0xfe, - 0x00, 0x90, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x80, - 0x00, 0xf0, 0x75, 0xff, 0x98, 0xbd, 0xa4, 0x58, - 0x01, 0x00, 0xa0, 0x58, 0x01, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x41, 0x78, 0x01, 0x20, 0xff, 0xf7, - 0xe6, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0xa6, 0x58, - 0x01, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x01, 0x78, - 0x00, 0x20, 0xff, 0xf7, 0xdc, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xfd, 0x00, 0x00, - 0xa6, 0x58, 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x4d, - 0x00, 0x24, 0x20, 0x1c, 0xff, 0xf7, 0x44, 0xf9, - 0x01, 0x34, 0x10, 0x2c, 0x01, 0xc5, 0xf8, 0xd3, - 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x44, 0x01, 0x00, - 0x04, 0x49, 0x80, 0xb5, 0x88, 0x70, 0x04, 0x49, - 0x80, 0x00, 0x09, 0x58, 0x07, 0x20, 0x04, 0xf0, - 0x0f, 0xf9, 0x80, 0xbd, 0x64, 0x73, 0x01, 0x00, - 0xd0, 0x58, 0x01, 0x00, 0x3c, 0x00, 0x98, 0xfd, - 0x00, 0x00, 0xb0, 0xb5, 0x3f, 0x24, 0x02, 0x1c, - 0x00, 0x2a, 0x01, 0xd1, 0x08, 0x20, 0x0b, 0x23, - 0x01, 0x2a, 0x01, 0xd1, 0x09, 0x20, 0x08, 0x23, - 0x25, 0x1c, 0x9d, 0x40, 0x00, 0x29, 0x00, 0xd1, - 0x01, 0x21, 0x3f, 0x29, 0x00, 0xd9, 0x21, 0x1c, - 0x99, 0x40, 0x0a, 0x1c, 0x29, 0x1c, 0xff, 0xf7, - 0x7c, 0xfc, 0xb0, 0xbd, 0x00, 0x00, 0x91, 0xb5, - 0x12, 0x49, 0x00, 0xab, 0x1a, 0x78, 0x3c, 0x00, - 0xd4, 0xfd, 0x00, 0x00, 0x08, 0x78, 0x11, 0x4c, - 0x80, 0x18, 0x00, 0x06, 0x00, 0x0e, 0x20, 0x70, - 0x49, 0x78, 0x5a, 0x78, 0x89, 0x18, 0x09, 0x06, - 0x09, 0x0e, 0x13, 0x22, 0x13, 0x28, 0x61, 0x70, - 0x00, 0xd9, 0x22, 0x70, 0x13, 0x29, 0x00, 0xd9, - 0x62, 0x70, 0x08, 0x49, 0x08, 0x48, 0x06, 0x39, - 0xc9, 0x88, 0x81, 0x80, 0x21, 0x78, 0x00, 0x20, - 0xff, 0xf7, 0x82, 0xfc, 0x61, 0x78, 0x01, 0x20, - 0x3c, 0x00, 0x10, 0xfe, 0x00, 0x00, 0xff, 0xf7, - 0x7e, 0xfc, 0x98, 0xbd, 0x00, 0x00, 0xa4, 0x58, - 0x01, 0x00, 0xa6, 0x58, 0x01, 0x00, 0x64, 0x73, - 0x01, 0x00, 0x70, 0xb5, 0x1d, 0x4d, 0x04, 0x1c, - 0x28, 0x78, 0x0e, 0x1c, 0x03, 0x28, 0x03, 0xd1, - 0x02, 0x21, 0x11, 0x20, 0xf1, 0xf7, 0x35, 0xfa, - 0x20, 0x1c, 0x00, 0xf0, 0x4e, 0xf8, 0x00, 0x28, - 0x25, 0xd0, 0x28, 0x78, 0x01, 0x28, 0x0a, 0xd1, - 0x68, 0x68, 0x3c, 0x00, 0x4c, 0xfe, 0x00, 0x00, - 0x00, 0x28, 0x07, 0xd0, 0x01, 0x21, 0x11, 0x20, - 0x03, 0xf0, 0xee, 0xfb, 0x01, 0x20, 0x69, 0x68, - 0xf0, 0xf7, 0xbd, 0xfa, 0x6c, 0x70, 0x6e, 0x60, - 0x20, 0x1c, 0xff, 0xf7, 0xc1, 0xfc, 0x04, 0x1c, - 0x00, 0xf0, 0xd4, 0xfe, 0x00, 0x2c, 0x02, 0xd0, - 0x68, 0x68, 0x00, 0x28, 0x02, 0xd1, 0xf6, 0xf7, - 0xd9, 0xf8, 0x70, 0xbd, 0x01, 0x20, 0x28, 0x70, - 0x01, 0x22, 0x21, 0x1c, 0x3c, 0x00, 0x88, 0xfe, - 0x00, 0x00, 0x11, 0x20, 0x03, 0xf0, 0x9f, 0xfb, - 0x70, 0xbd, 0x02, 0x21, 0x11, 0x20, 0xf1, 0xf7, - 0x06, 0xfa, 0x70, 0xbd, 0x00, 0x00, 0x9c, 0x73, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x28, 0x05, 0xd1, - 0x00, 0x29, 0x04, 0xd0, 0x01, 0x29, 0x01, 0xd1, - 0xf6, 0xf7, 0xbf, 0xf8, 0x80, 0xbd, 0x05, 0x49, - 0x08, 0x78, 0x03, 0x28, 0x02, 0xd0, 0x00, 0x20, - 0x08, 0x70, 0x80, 0xbd, 0x03, 0x21, 0x3c, 0x00, - 0xc4, 0xfe, 0x00, 0x00, 0x11, 0x20, 0xf1, 0xf7, - 0xed, 0xf9, 0x80, 0xbd, 0x9c, 0x73, 0x01, 0x00, - 0x01, 0x48, 0x40, 0x78, 0x70, 0x47, 0x00, 0x00, - 0x9c, 0x73, 0x01, 0x00, 0x01, 0x1c, 0x01, 0x39, - 0x01, 0x20, 0x0e, 0x29, 0x00, 0xd3, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, 0x13, 0x4c, - 0x20, 0x78, 0x01, 0x28, 0x0e, 0xd1, 0x60, 0x68, - 0x00, 0x28, 0x0d, 0xd0, 0x01, 0x21, 0x11, 0x20, - 0x3c, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0xf0, - 0x98, 0xfb, 0x01, 0x20, 0x61, 0x68, 0xf0, 0xf7, - 0x67, 0xfa, 0x00, 0x20, 0x60, 0x60, 0x20, 0x70, - 0x01, 0xe0, 0x03, 0x28, 0x0e, 0xd0, 0x00, 0x21, - 0x11, 0x20, 0x03, 0xf0, 0x8a, 0xfb, 0xff, 0xf7, - 0x24, 0xfc, 0xff, 0xf7, 0xc0, 0xfb, 0x05, 0x49, - 0x08, 0x7b, 0x40, 0x08, 0x40, 0x00, 0x08, 0x73, - 0x03, 0x20, 0x20, 0x70, 0x01, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xff, 0x00, 0x00, - 0x9c, 0x73, 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, - 0x10, 0xb5, 0x0d, 0x4c, 0x20, 0x78, 0x03, 0x28, - 0x13, 0xd1, 0x00, 0x20, 0x20, 0x70, 0x0b, 0x48, - 0x01, 0x7b, 0x01, 0x22, 0x11, 0x43, 0x01, 0x73, - 0xff, 0xf7, 0x70, 0xfc, 0xff, 0xf7, 0x18, 0xfc, - 0x00, 0x28, 0x06, 0xd0, 0x02, 0x21, 0x21, 0x70, - 0x01, 0x1c, 0x00, 0x22, 0x11, 0x20, 0x03, 0xf0, - 0x2b, 0xfb, 0x01, 0x20, 0x3c, 0x00, 0x78, 0xff, - 0x00, 0x00, 0x10, 0xbd, 0x00, 0x00, 0x9c, 0x73, - 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, 0x80, 0xb5, - 0x05, 0x49, 0x00, 0x28, 0x04, 0xd0, 0x00, 0x20, - 0x08, 0x60, 0x03, 0xf0, 0x5a, 0xfa, 0x80, 0xbd, - 0x01, 0x20, 0x08, 0x60, 0x80, 0xbd, 0x80, 0x5a, - 0x01, 0x00, 0xfe, 0xb5, 0x05, 0x1c, 0x80, 0x35, - 0x04, 0x1c, 0xa8, 0x68, 0x29, 0x79, 0x06, 0x68, - 0x20, 0x1c, 0xa0, 0x30, 0x02, 0x29, 0x3c, 0x00, - 0xb4, 0xff, 0x00, 0x00, 0x1c, 0xd1, 0x69, 0x79, - 0x08, 0x29, 0x01, 0xd0, 0x0c, 0x29, 0x17, 0xd1, - 0x01, 0x21, 0x61, 0x62, 0xa9, 0x68, 0x09, 0x68, - 0x09, 0x8b, 0x01, 0x82, 0xa9, 0x69, 0x01, 0x91, - 0x00, 0x8a, 0xc0, 0x06, 0x05, 0xd5, 0x60, 0x68, - 0x00, 0x88, 0x40, 0x05, 0x01, 0xd4, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x02, 0x90, 0x05, 0x20, - 0x01, 0xa9, 0x02, 0xf0, 0xb7, 0xf9, 0x02, 0xe0, - 0x3c, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x21, - 0x61, 0x62, 0x01, 0x82, 0xa9, 0x68, 0x1a, 0x23, - 0x0a, 0x89, 0x67, 0x6a, 0x18, 0x1c, 0x00, 0x2f, - 0x00, 0xd1, 0x18, 0x20, 0x10, 0x1a, 0x08, 0x81, - 0xa8, 0x68, 0x01, 0x68, 0x62, 0x6a, 0x00, 0x2a, - 0x00, 0xd1, 0x18, 0x23, 0xc9, 0x18, 0x01, 0x60, - 0xa8, 0x68, 0x41, 0xc4, 0x30, 0x88, 0x08, 0x3c, - 0x40, 0x04, 0x03, 0xd5, 0x20, 0x1c, 0xf7, 0xf7, - 0xbc, 0xf9, 0x3c, 0x00, 0x2c, 0x00, 0x01, 0x00, - 0xfe, 0xbd, 0x00, 0x21, 0xe1, 0x61, 0x30, 0x79, - 0xc0, 0x07, 0x03, 0xd4, 0x20, 0x1c, 0xf7, 0xf7, - 0x91, 0xfe, 0xf5, 0xe7, 0x20, 0x1c, 0xf7, 0xf7, - 0x43, 0xff, 0xf1, 0xe7, 0xf7, 0xb5, 0x05, 0x1c, - 0x0a, 0x30, 0x06, 0x1c, 0xf5, 0xf7, 0xa4, 0xfa, - 0x14, 0x4f, 0x04, 0x1c, 0x39, 0x88, 0xf2, 0xf7, - 0x83, 0xfe, 0x32, 0x88, 0x78, 0x68, 0x02, 0x80, - 0x72, 0x88, 0x02, 0x30, 0x3c, 0x00, 0x68, 0x00, - 0x01, 0x00, 0x02, 0x80, 0xb1, 0x88, 0x41, 0x80, - 0x69, 0x88, 0x02, 0x9a, 0x20, 0x1c, 0xfa, 0xf7, - 0xce, 0xfe, 0x0b, 0x4d, 0x08, 0x35, 0x68, 0x80, - 0xfb, 0xf7, 0x2b, 0xfe, 0x01, 0x21, 0x09, 0x03, - 0x00, 0x28, 0x28, 0x88, 0x01, 0xd0, 0x88, 0x43, - 0x00, 0xe0, 0x08, 0x43, 0x28, 0x80, 0x04, 0x48, - 0x00, 0x22, 0x00, 0x21, 0x14, 0x30, 0xf2, 0xf7, - 0x32, 0xfe, 0x20, 0x1c, 0xfc, 0xf7, 0x3c, 0x00, - 0xa4, 0x00, 0x01, 0x00, 0x85, 0xfa, 0xfe, 0xbd, - 0x24, 0x7b, 0x01, 0x00, 0x10, 0xb5, 0x13, 0x4c, - 0x11, 0x49, 0x20, 0x1c, 0xff, 0x30, 0x69, 0x30, - 0x0e, 0xc9, 0x0e, 0xc0, 0x20, 0x1c, 0xff, 0x30, - 0x24, 0x22, 0x75, 0x30, 0x0e, 0x49, 0xf0, 0xf7, - 0x17, 0xfa, 0x20, 0x1c, 0xff, 0x30, 0x3c, 0x22, - 0x99, 0x30, 0x0c, 0x49, 0xf0, 0xf7, 0x6c, 0xfa, - 0x20, 0x1c, 0xff, 0x30, 0x10, 0x22, 0xd5, 0x30, - 0x3c, 0x00, 0xe0, 0x00, 0x01, 0x00, 0x09, 0x49, - 0xf0, 0xf7, 0x09, 0xfa, 0x20, 0x1c, 0xff, 0x30, - 0x28, 0x22, 0xe5, 0x30, 0x07, 0x49, 0xf0, 0xf7, - 0x5e, 0xfa, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x80, - 0x07, 0x00, 0x40, 0x63, 0x01, 0x00, 0x0c, 0x80, - 0x07, 0x00, 0x30, 0x80, 0x07, 0x00, 0x80, 0x80, - 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0xb0, 0xb5, - 0x00, 0x28, 0x3f, 0xd0, 0x21, 0x48, 0x41, 0x68, - 0x21, 0x4c, 0x3c, 0x00, 0x1c, 0x01, 0x01, 0x00, - 0x61, 0x60, 0xc1, 0x68, 0xe1, 0x60, 0x01, 0x69, - 0x21, 0x61, 0x80, 0x6a, 0xa0, 0x62, 0x1e, 0x49, - 0x1c, 0x48, 0x09, 0x68, 0x14, 0x38, 0x41, 0x64, - 0x1c, 0x48, 0x25, 0x1c, 0x3c, 0x35, 0x0f, 0xc8, - 0x0f, 0xc5, 0x20, 0x1c, 0x80, 0x22, 0x4c, 0x30, - 0x19, 0x49, 0xf0, 0xf7, 0x33, 0xfa, 0x14, 0x22, - 0x20, 0x1c, 0xcc, 0x30, 0x17, 0x49, 0xf0, 0xf7, - 0x2d, 0xfa, 0x38, 0x22, 0x3c, 0x00, 0x58, 0x01, - 0x01, 0x00, 0x20, 0x1c, 0xe0, 0x30, 0x15, 0x49, - 0xf0, 0xf7, 0x27, 0xfa, 0x20, 0x1c, 0xff, 0x30, - 0x50, 0x22, 0x19, 0x30, 0x13, 0x49, 0xf0, 0xf7, - 0x20, 0xfa, 0x83, 0x20, 0x80, 0x00, 0x14, 0x22, - 0x20, 0x18, 0x10, 0x49, 0xf0, 0xf7, 0x19, 0xfa, - 0x11, 0x20, 0x40, 0x01, 0x84, 0x22, 0x20, 0x18, - 0x0e, 0x49, 0xf0, 0xf7, 0x12, 0xfa, 0xff, 0xf7, - 0x8e, 0xff, 0xf8, 0xf7, 0x94, 0xfb, 0x3c, 0x00, - 0x94, 0x01, 0x01, 0x00, 0xb0, 0xbd, 0xff, 0xf7, - 0x89, 0xff, 0xb0, 0xbd, 0x00, 0x10, 0x07, 0x00, - 0x40, 0x63, 0x01, 0x00, 0x08, 0x20, 0x07, 0x00, - 0x40, 0x20, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x00, 0x40, 0x07, 0x00, 0x00, 0x50, 0x07, 0x00, - 0x00, 0x60, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x00, 0x90, 0x07, 0x00, 0x0c, 0x49, 0x80, 0xb5, - 0x01, 0x20, 0x48, 0x60, 0x0a, 0x48, 0x14, 0x38, - 0x3c, 0x00, 0xd0, 0x01, 0x01, 0x00, 0x00, 0x78, - 0x01, 0x28, 0x04, 0xd0, 0x08, 0x48, 0x94, 0x38, - 0x40, 0x6f, 0x00, 0x28, 0x03, 0xd0, 0x00, 0x20, - 0x00, 0xf0, 0x1f, 0xf8, 0x80, 0xbd, 0x08, 0x68, - 0x00, 0x28, 0xfb, 0xd0, 0x03, 0x48, 0xf2, 0xf7, - 0x7a, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x98, 0x66, - 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x80, 0xb5, - 0x00, 0x28, 0x09, 0xd1, 0xf2, 0x21, 0x0f, 0x20, - 0x03, 0xf0, 0x3c, 0x00, 0x0c, 0x02, 0x01, 0x00, - 0x13, 0xfa, 0x00, 0x22, 0x0f, 0x21, 0xf1, 0x20, - 0x03, 0xf0, 0xcc, 0xfa, 0x80, 0xbd, 0x01, 0x20, - 0xf8, 0xf7, 0x6a, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x03, 0x20, 0x00, 0xf0, - 0xc9, 0xf9, 0x00, 0x21, 0x0f, 0x20, 0x03, 0xf0, - 0xff, 0xf9, 0xff, 0xf7, 0x65, 0xf8, 0x0b, 0x49, - 0x00, 0x20, 0x48, 0x74, 0xfb, 0xf7, 0xe6, 0xfa, - 0x09, 0x48, 0x00, 0x68, 0x3c, 0x00, 0x48, 0x02, - 0x01, 0x00, 0x00, 0x28, 0x03, 0xdc, 0x02, 0x21, - 0x40, 0x42, 0xff, 0xf7, 0x52, 0xfc, 0x04, 0x48, - 0x14, 0x30, 0x00, 0x68, 0x00, 0x28, 0x02, 0xd0, - 0x20, 0x1c, 0xf2, 0xf7, 0x42, 0xfe, 0x10, 0xbd, - 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0xd4, 0x7e, - 0x01, 0x00, 0x06, 0x49, 0x80, 0xb5, 0x09, 0x78, - 0x04, 0x29, 0x05, 0xd0, 0x05, 0x29, 0x03, 0xd0, - 0x06, 0x29, 0x01, 0xd0, 0x07, 0x29, 0x3c, 0x00, - 0x84, 0x02, 0x01, 0x00, 0x01, 0xd1, 0xfe, 0xf7, - 0xbd, 0xfd, 0x80, 0xbd, 0x74, 0x66, 0x01, 0x00, - 0x10, 0xb5, 0x09, 0x4c, 0xe0, 0x68, 0x00, 0x28, - 0x0b, 0xd1, 0x07, 0x48, 0x2c, 0x38, 0x00, 0x8a, - 0xc0, 0x07, 0x04, 0xd5, 0x00, 0x21, 0x01, 0x20, - 0x62, 0x68, 0xf9, 0xf7, 0xc9, 0xfa, 0x01, 0x20, - 0xe0, 0x60, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0xf4, 0x6e, 0x01, 0x00, 0x8c, 0xb5, 0x02, 0x1c, - 0x3c, 0x00, 0xc0, 0x02, 0x01, 0x00, 0x08, 0x1c, - 0x11, 0x1c, 0xfd, 0xf7, 0x28, 0xff, 0x01, 0x90, - 0x00, 0x28, 0x05, 0xd0, 0x17, 0x20, 0x00, 0xab, - 0x18, 0x80, 0x68, 0x46, 0xfd, 0xf7, 0xff, 0xf8, - 0x8c, 0xbd, 0xf1, 0xb5, 0x2e, 0x4c, 0xae, 0xb0, - 0x00, 0x25, 0x25, 0x63, 0x20, 0x69, 0x01, 0x28, - 0x03, 0xd1, 0x01, 0xa8, 0x01, 0xf0, 0xa1, 0xf8, - 0x4e, 0xe0, 0x01, 0x26, 0x28, 0x4f, 0x26, 0x70, - 0x50, 0x3f, 0x3c, 0x00, 0xfc, 0x02, 0x01, 0x00, - 0xb8, 0x69, 0xf8, 0xf7, 0x4f, 0xf8, 0x25, 0x49, - 0x2c, 0x39, 0x00, 0x28, 0x1d, 0xd0, 0xe0, 0x6a, - 0x01, 0x28, 0x1a, 0xd1, 0x08, 0x8a, 0x0f, 0x1c, - 0x80, 0x07, 0x04, 0xd5, 0x00, 0x21, 0x02, 0x20, - 0x62, 0x68, 0xf9, 0xf7, 0x8f, 0xfa, 0x38, 0x8a, - 0x00, 0x07, 0x07, 0xd5, 0xe0, 0x68, 0x01, 0x28, - 0x04, 0xd1, 0x00, 0x21, 0x08, 0x20, 0x62, 0x68, - 0xf9, 0xf7, 0x84, 0xfa, 0x3c, 0x00, 0x38, 0x03, - 0x01, 0x00, 0x00, 0x22, 0x18, 0x21, 0x82, 0x20, - 0x26, 0x63, 0x03, 0xf0, 0x36, 0xfa, 0x25, 0xe0, - 0x08, 0x8a, 0x0e, 0x1c, 0x80, 0x07, 0x04, 0xd5, - 0x00, 0x21, 0x02, 0x20, 0x62, 0x68, 0xf9, 0xf7, - 0x74, 0xfa, 0x30, 0x8a, 0x00, 0x07, 0x07, 0xd5, - 0xe0, 0x68, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x21, - 0x08, 0x20, 0x62, 0x68, 0xf9, 0xf7, 0x69, 0xfa, - 0x30, 0x8a, 0x40, 0x07, 0x04, 0xd5, 0x3c, 0x00, - 0x74, 0x03, 0x01, 0x00, 0x00, 0x22, 0x00, 0x21, - 0x04, 0x20, 0xf9, 0xf7, 0x61, 0xfa, 0x2e, 0x98, - 0x01, 0x28, 0x04, 0xd0, 0x1e, 0x95, 0x09, 0x21, - 0x1b, 0xa8, 0xff, 0xf7, 0x97, 0xff, 0xe5, 0x62, - 0xbd, 0x61, 0xe5, 0x60, 0x2f, 0xb0, 0xf0, 0xbd, - 0xf4, 0x6e, 0x01, 0x00, 0x80, 0xb5, 0x07, 0x20, - 0xfe, 0xf7, 0xa0, 0xfe, 0x00, 0x21, 0x0f, 0x20, - 0x03, 0xf0, 0x44, 0xf9, 0x0c, 0x48, 0x01, 0x78, - 0x3c, 0x00, 0xb0, 0x03, 0x01, 0x00, 0x00, 0x29, - 0x0f, 0xd0, 0x02, 0x21, 0x01, 0x70, 0x88, 0x38, - 0x00, 0x78, 0x00, 0x28, 0x04, 0xd0, 0x07, 0x49, - 0x10, 0x31, 0x48, 0x7c, 0x01, 0x30, 0x48, 0x74, - 0xf2, 0x22, 0x0f, 0x20, 0x05, 0x49, 0x03, 0xf0, - 0xfc, 0xf8, 0x00, 0x22, 0x0f, 0x21, 0xf3, 0x20, - 0x03, 0xf0, 0xe9, 0xf9, 0x80, 0xbd, 0x74, 0x66, - 0x01, 0x00, 0x80, 0x84, 0x1e, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x3c, 0x00, 0xec, 0x03, 0x01, 0x00, - 0xf2, 0x21, 0x0f, 0x20, 0x03, 0xf0, 0x20, 0xf9, - 0x01, 0x2c, 0x0a, 0xd1, 0x08, 0x48, 0x08, 0x49, - 0x00, 0x68, 0x14, 0x39, 0x00, 0x28, 0x05, 0xd0, - 0xc8, 0x78, 0x02, 0x28, 0x02, 0xd1, 0xf7, 0xf7, - 0xaf, 0xfa, 0x10, 0xbd, 0x00, 0x20, 0x48, 0x70, - 0x05, 0x20, 0xfe, 0xf7, 0x65, 0xfe, 0x10, 0xbd, - 0x98, 0x66, 0x01, 0x00, 0xf8, 0xb5, 0x28, 0x4e, - 0x30, 0x21, 0x35, 0x1c, 0x3c, 0x00, 0x28, 0x04, - 0x01, 0x00, 0x60, 0x35, 0x28, 0x89, 0x89, 0x5d, - 0x88, 0x42, 0x03, 0xd1, 0x00, 0x20, 0xff, 0xf7, - 0xf6, 0xfe, 0xf8, 0xbd, 0x34, 0x1c, 0x70, 0x34, - 0x01, 0x21, 0x21, 0x70, 0x41, 0x18, 0x80, 0x19, - 0x30, 0x30, 0x29, 0x81, 0x40, 0x78, 0x1d, 0x4f, - 0x18, 0x3f, 0x38, 0x70, 0x00, 0x28, 0x08, 0xd0, - 0x00, 0x21, 0xfb, 0xf7, 0xc2, 0xf9, 0x00, 0x28, - 0x07, 0xd1, 0x20, 0x78, 0xff, 0xf7, 0x3c, 0x00, - 0x64, 0x04, 0x01, 0x00, 0x9b, 0xff, 0xe7, 0xe7, - 0x01, 0x21, 0x0f, 0x20, 0xf0, 0xf7, 0x1a, 0xff, - 0x14, 0x48, 0x01, 0x21, 0x80, 0x30, 0x81, 0x70, - 0x38, 0x69, 0xfb, 0xf7, 0x55, 0xfa, 0x20, 0x73, - 0x00, 0x21, 0x0f, 0x20, 0x03, 0xf0, 0xd6, 0xf8, - 0x70, 0x7a, 0x01, 0x28, 0x0e, 0xd1, 0x0e, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x04, 0xd0, 0x38, 0x78, - 0x02, 0xf0, 0xda, 0xfa, 0x00, 0x28, 0x05, 0xd0, - 0x3c, 0x00, 0xa0, 0x04, 0x01, 0x00, 0x30, 0x7f, - 0x60, 0x73, 0x03, 0x20, 0x20, 0x70, 0x71, 0x89, - 0x05, 0xe0, 0x05, 0x20, 0x20, 0x70, 0xa8, 0x88, - 0xfa, 0xf7, 0x3b, 0xfb, 0x01, 0x1c, 0x00, 0x22, - 0x0f, 0x20, 0x03, 0xf0, 0x86, 0xf8, 0xba, 0xe7, - 0x00, 0x00, 0x04, 0x66, 0x01, 0x00, 0xe4, 0x62, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x02, 0xf0, - 0x6c, 0xfc, 0x36, 0x4b, 0x19, 0x1c, 0xa0, 0x31, - 0x0a, 0x78, 0x3c, 0x00, 0xdc, 0x04, 0x01, 0x00, - 0x10, 0x2a, 0x02, 0xd2, 0x0a, 0x79, 0x10, 0x2a, - 0x01, 0xd3, 0x01, 0x25, 0x00, 0xe0, 0x00, 0x25, - 0x30, 0x4e, 0xca, 0x79, 0x80, 0x36, 0x01, 0x2c, - 0x12, 0xd0, 0x00, 0x25, 0x02, 0x2c, 0x2e, 0xd0, - 0x04, 0x2c, 0x3c, 0xd1, 0x5c, 0x6b, 0x00, 0x2c, - 0x39, 0xd1, 0x9c, 0x6f, 0x00, 0x1b, 0x2a, 0x4c, - 0xa0, 0x42, 0x34, 0xd9, 0xb2, 0x68, 0x98, 0x6a, - 0x82, 0x42, 0x31, 0xd0, 0x3c, 0x00, 0x18, 0x05, - 0x01, 0x00, 0x4d, 0x72, 0x34, 0xe0, 0xb0, 0x68, - 0x9c, 0x6a, 0x02, 0x22, 0xa0, 0x42, 0x21, 0xd1, - 0x58, 0x6b, 0x00, 0x28, 0x1e, 0xd1, 0x00, 0x2d, - 0x1c, 0xd1, 0x48, 0x7a, 0x19, 0x28, 0x20, 0xd0, - 0x34, 0x68, 0x98, 0x6f, 0x64, 0x00, 0x00, 0x1b, - 0x74, 0x68, 0x00, 0x19, 0xff, 0x30, 0x1c, 0x4c, - 0x39, 0x30, 0xa0, 0x42, 0x16, 0xd2, 0x48, 0x79, - 0x8c, 0x79, 0x00, 0x19, 0x30, 0x28, 0x3c, 0x00, - 0x54, 0x05, 0x01, 0x00, 0x11, 0xd3, 0x10, 0x22, - 0x0f, 0xe0, 0x5c, 0x6b, 0x01, 0x2c, 0x06, 0xd1, - 0xb0, 0x68, 0x9a, 0x6a, 0x90, 0x42, 0x00, 0xd1, - 0x4d, 0x72, 0x00, 0x22, 0x05, 0xe0, 0x9c, 0x6f, - 0x00, 0x1b, 0x12, 0x4c, 0xa0, 0x42, 0x00, 0xd3, - 0x20, 0x22, 0x06, 0xe0, 0x4a, 0x7a, 0x19, 0x2a, - 0x01, 0xd2, 0x01, 0x32, 0x4a, 0x72, 0x20, 0x22, - 0xb0, 0x60, 0x30, 0x68, 0x9b, 0x6f, 0x98, 0x42, - 0x3c, 0x00, 0x90, 0x05, 0x01, 0x00, 0x04, 0xd1, - 0x00, 0x2a, 0x00, 0xd1, 0x48, 0x79, 0x4a, 0x71, - 0x06, 0xe0, 0x10, 0x2a, 0x04, 0xd3, 0x70, 0x60, - 0x33, 0x60, 0x48, 0x79, 0x88, 0x71, 0xf6, 0xe7, - 0xca, 0x71, 0x70, 0xbd, 0x00, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0xa3, 0x04, 0x00, 0x00, 0x71, 0x02, - 0x00, 0x00, 0x35, 0x0c, 0x00, 0x00, 0x05, 0x48, - 0x80, 0xb5, 0x81, 0x7b, 0x00, 0x29, 0x05, 0xd0, - 0x00, 0x21, 0x3c, 0x00, 0xcc, 0x05, 0x01, 0x00, - 0x81, 0x73, 0x03, 0x49, 0x0f, 0x20, 0x01, 0xf0, - 0x0f, 0xff, 0x80, 0xbd, 0x74, 0x66, 0x01, 0x00, - 0xe9, 0x03, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x02, 0xf0, 0xe2, 0xfb, 0x05, 0x1c, 0x38, 0x4e, - 0x20, 0x1c, 0x37, 0x49, 0x34, 0x1c, 0xa0, 0x34, - 0x10, 0x22, 0x44, 0x39, 0x01, 0x28, 0x2c, 0xd0, - 0x04, 0x28, 0x4e, 0xd1, 0x37, 0x1c, 0x74, 0x36, - 0x09, 0xce, 0x26, 0x78, 0x3c, 0x00, 0x08, 0x06, - 0x01, 0x00, 0xc0, 0x1a, 0x20, 0x2e, 0x04, 0xd1, - 0x30, 0x4e, 0xb0, 0x42, 0x01, 0xd9, 0x00, 0x26, - 0x4e, 0x61, 0x3e, 0x1c, 0x3f, 0x6c, 0x00, 0x2f, - 0x48, 0xd1, 0x77, 0x6c, 0x00, 0x2f, 0x45, 0xd1, - 0xb7, 0x6a, 0x00, 0x2f, 0x3d, 0xd0, 0x77, 0x6b, - 0x00, 0x2f, 0x3a, 0xd0, 0x27, 0x4f, 0xb8, 0x42, - 0x37, 0xd2, 0x60, 0x78, 0x10, 0x28, 0x06, 0xd3, - 0xf0, 0x6f, 0x18, 0x1a, 0x24, 0x4b, 0x3c, 0x00, - 0x44, 0x06, 0x01, 0x00, 0x98, 0x42, 0x01, 0xd2, - 0xe2, 0x70, 0xf5, 0x66, 0x48, 0x69, 0x06, 0x28, - 0x2f, 0xd2, 0x01, 0x30, 0x2c, 0xe0, 0x20, 0x78, - 0x20, 0x28, 0x01, 0xd1, 0x06, 0x23, 0x4b, 0x61, - 0x02, 0x23, 0x23, 0x71, 0xb3, 0x6a, 0x00, 0x2b, - 0x19, 0xd0, 0x49, 0x69, 0x03, 0x29, 0x16, 0xd9, - 0x71, 0x6b, 0x73, 0x6d, 0x59, 0x40, 0x12, 0xd0, - 0xe1, 0x78, 0x10, 0x29, 0x10, 0xd3, 0x61, 0x78, - 0x3c, 0x00, 0x80, 0x06, 0x01, 0x00, 0x33, 0x1c, - 0x10, 0x29, 0x0c, 0xd3, 0xd9, 0x6f, 0x69, 0x1a, - 0x13, 0x4d, 0xa9, 0x42, 0x07, 0xd2, 0x58, 0x6c, - 0x00, 0x28, 0x02, 0xd0, 0x98, 0x6c, 0x00, 0x28, - 0x00, 0xd1, 0x22, 0x71, 0xf8, 0xbd, 0x02, 0x28, - 0xfc, 0xd1, 0x22, 0x70, 0xfa, 0xe7, 0x48, 0x69, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x38, 0x48, 0x61, - 0x0a, 0x49, 0xf0, 0x6e, 0x40, 0x18, 0x02, 0xf0, - 0xb0, 0xfa, 0x3c, 0x00, 0xbc, 0x06, 0x01, 0x00, - 0x00, 0x28, 0xee, 0xd0, 0x01, 0x20, 0xe0, 0x70, - 0x06, 0x48, 0x28, 0x18, 0xf0, 0x66, 0xe8, 0xe7, - 0xa4, 0x6c, 0x01, 0x00, 0xe2, 0x04, 0x00, 0x00, - 0x1a, 0x06, 0x00, 0x00, 0x53, 0x07, 0x00, 0x00, - 0x00, 0x2d, 0x31, 0x01, 0x00, 0x5a, 0x62, 0x02, - 0x80, 0xb5, 0x41, 0x68, 0x09, 0x79, 0xc9, 0x07, - 0x13, 0xd5, 0xc1, 0x69, 0x00, 0x29, 0x0d, 0xd0, - 0x89, 0x79, 0x02, 0x29, 0x3c, 0x00, 0xf8, 0x06, - 0x01, 0x00, 0x0a, 0xd1, 0x08, 0x21, 0x01, 0x86, - 0x01, 0x1c, 0x38, 0x31, 0x81, 0x62, 0x02, 0x1c, - 0x06, 0x48, 0x04, 0x49, 0xf9, 0xf7, 0xfd, 0xfc, - 0x80, 0xbd, 0xf7, 0xf7, 0xdc, 0xfb, 0x80, 0xbd, - 0xf7, 0xf7, 0x23, 0xfb, 0x80, 0xbd, 0xb9, 0x71, - 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x10, 0xb5, - 0x00, 0x24, 0x00, 0x28, 0x03, 0xd0, 0x02, 0xf0, - 0xe8, 0xfe, 0x00, 0x28, 0x17, 0xd0, 0x3c, 0x00, - 0x34, 0x07, 0x01, 0x00, 0x0c, 0x4c, 0x01, 0x20, - 0xa0, 0x72, 0x20, 0x68, 0x00, 0x21, 0x41, 0x62, - 0x0a, 0x49, 0x02, 0x68, 0xc9, 0x78, 0x60, 0x32, - 0x91, 0x71, 0x21, 0x89, 0x01, 0x31, 0x21, 0x81, - 0x00, 0x68, 0x40, 0x30, 0x81, 0x83, 0xfb, 0xf7, - 0x31, 0xfc, 0x20, 0x68, 0x00, 0x68, 0xfc, 0xf7, - 0xa1, 0xf9, 0x01, 0x24, 0x20, 0x1c, 0x10, 0xbd, - 0x14, 0x7a, 0x01, 0x00, 0x0e, 0x61, 0x01, 0x00, - 0x3c, 0x00, 0x70, 0x07, 0x01, 0x00, 0x7f, 0xb5, - 0x06, 0x1c, 0x1e, 0x48, 0x1d, 0x1c, 0x43, 0x88, - 0x02, 0x88, 0x1c, 0x21, 0x00, 0x20, 0x90, 0xb0, - 0xf0, 0xf7, 0x45, 0xff, 0x03, 0x90, 0x04, 0x68, - 0xff, 0x21, 0x01, 0x31, 0x21, 0x80, 0x08, 0x20, - 0x60, 0x80, 0x06, 0x20, 0x20, 0x71, 0x04, 0x20, - 0x60, 0x71, 0xc0, 0x01, 0x00, 0x2d, 0x00, 0xd1, - 0x08, 0x1c, 0xe0, 0x80, 0x01, 0xa8, 0x02, 0x30, - 0x31, 0x1c, 0x3c, 0x00, 0xac, 0x07, 0x01, 0x00, - 0x05, 0x1c, 0xfa, 0xf7, 0x5f, 0xfa, 0x10, 0x49, - 0x68, 0x46, 0xfa, 0xf7, 0x5b, 0xfa, 0x20, 0x1c, - 0x08, 0x30, 0x69, 0x46, 0xfa, 0xf7, 0x56, 0xfa, - 0x29, 0x1c, 0x20, 0x1c, 0x12, 0x30, 0xfa, 0xf7, - 0x51, 0xfa, 0x10, 0xab, 0x98, 0x88, 0x00, 0x22, - 0x01, 0x21, 0x20, 0x83, 0xd8, 0x88, 0x60, 0x83, - 0x18, 0x89, 0xe0, 0x81, 0x58, 0x89, 0x20, 0x82, - 0x68, 0x46, 0xf9, 0xf7, 0x3c, 0x00, 0xe8, 0x07, - 0x01, 0x00, 0x17, 0xff, 0x14, 0xb0, 0x70, 0xbd, - 0x00, 0x00, 0x14, 0x6e, 0x01, 0x00, 0x12, 0x61, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x18, 0x48, - 0x25, 0x1c, 0x00, 0x78, 0x60, 0x35, 0x80, 0x07, - 0x00, 0x28, 0x08, 0xda, 0xe8, 0x79, 0x00, 0x28, - 0x05, 0xd0, 0xf4, 0xf7, 0x70, 0xff, 0x01, 0x1c, - 0x20, 0x1c, 0x00, 0xf0, 0x78, 0xf9, 0x29, 0x88, - 0x2e, 0x20, 0x00, 0x5d, 0xf2, 0xf7, 0x3c, 0x00, - 0x24, 0x08, 0x01, 0x00, 0x9f, 0xfa, 0xe8, 0x79, - 0x00, 0x28, 0x0b, 0xd1, 0x20, 0x1c, 0x40, 0x30, - 0x01, 0x8b, 0x22, 0x69, 0x11, 0x80, 0x41, 0x8b, - 0x22, 0x69, 0x51, 0x80, 0x80, 0x8b, 0x21, 0x69, - 0xc8, 0x82, 0x07, 0xe0, 0x01, 0x28, 0x05, 0xd1, - 0x20, 0x69, 0x01, 0x22, 0x01, 0x88, 0xd2, 0x02, - 0x11, 0x43, 0x01, 0x80, 0x6a, 0x7a, 0xe0, 0x68, - 0x02, 0x49, 0xf2, 0xf7, 0x53, 0xfa, 0xb0, 0xbd, - 0x3c, 0x00, 0x60, 0x08, 0x01, 0x00, 0x1d, 0x75, - 0x01, 0x00, 0xd1, 0x4f, 0x00, 0x00, 0x90, 0xb5, - 0x04, 0x1c, 0x38, 0x23, 0x0c, 0x49, 0x58, 0x43, - 0x43, 0x18, 0x85, 0xb0, 0x00, 0x20, 0x0a, 0x49, - 0x02, 0x90, 0x18, 0x1c, 0x01, 0x22, 0x03, 0x91, - 0x09, 0x49, 0x04, 0x92, 0x30, 0x30, 0x42, 0x78, - 0x09, 0x88, 0x01, 0x92, 0x00, 0x91, 0x01, 0x78, - 0x5a, 0x6b, 0x0c, 0x33, 0x20, 0x1c, 0xfb, 0xf7, - 0x7c, 0xf8, 0x3c, 0x00, 0x9c, 0x08, 0x01, 0x00, - 0x05, 0xb0, 0x90, 0xbd, 0xd4, 0xe4, 0x01, 0x00, - 0x5d, 0x4e, 0x00, 0x00, 0x48, 0x7b, 0x01, 0x00, - 0x90, 0xb5, 0x85, 0xb0, 0x03, 0x1c, 0x00, 0x20, - 0x02, 0x90, 0x0a, 0x49, 0x18, 0x1c, 0x00, 0x22, - 0x04, 0x92, 0x60, 0x30, 0x03, 0x91, 0xc2, 0x79, - 0x01, 0x88, 0x01, 0x92, 0x00, 0x91, 0x5a, 0x6a, - 0xdc, 0x68, 0x20, 0x33, 0x99, 0x7b, 0x40, 0x7a, - 0x23, 0x1c, 0xfb, 0xf7, 0x3c, 0x00, 0xd8, 0x08, - 0x01, 0x00, 0x5d, 0xf8, 0x05, 0xb0, 0x90, 0xbd, - 0x00, 0x00, 0x0d, 0x4f, 0x00, 0x00, 0x07, 0x49, - 0x80, 0xb5, 0x88, 0x6a, 0x00, 0x28, 0x08, 0xd1, - 0x01, 0x20, 0x88, 0x62, 0xf0, 0xf7, 0xaf, 0xfc, - 0x01, 0x1c, 0x03, 0x48, 0x00, 0x22, 0xf2, 0xf7, - 0xb8, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x41, 0xe4, 0x00, 0x00, 0xf0, 0xb5, - 0x9b, 0xb0, 0x00, 0x28, 0x20, 0xd0, 0x3c, 0x00, - 0x14, 0x09, 0x01, 0x00, 0x01, 0x1c, 0x08, 0xa8, - 0xfc, 0xf7, 0xb2, 0xfd, 0x01, 0x20, 0x11, 0x90, - 0x03, 0x20, 0x10, 0xad, 0x28, 0x72, 0x04, 0x20, - 0x68, 0x72, 0x05, 0xa8, 0x00, 0x22, 0x69, 0x46, - 0xf4, 0xf7, 0x00, 0xff, 0x00, 0x24, 0x00, 0x26, - 0x05, 0xa9, 0x00, 0x20, 0xf9, 0xf7, 0xfc, 0xfa, - 0x69, 0x46, 0xf9, 0xf7, 0xf9, 0xfa, 0x0b, 0x90, - 0x08, 0xa8, 0xfc, 0xf7, 0xbb, 0xfd, 0x01, 0x34, - 0x3c, 0x00, 0x50, 0x09, 0x01, 0x00, 0x02, 0x2c, - 0x2e, 0x72, 0xf0, 0xdb, 0x1b, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0x90, 0xb5, 0x04, 0x1c, 0x4c, 0x23, - 0x0c, 0x49, 0x58, 0x43, 0x43, 0x18, 0x85, 0xb0, - 0x00, 0x20, 0x0a, 0x49, 0x02, 0x90, 0x00, 0x22, - 0x04, 0x92, 0x3c, 0x20, 0x03, 0x91, 0xc2, 0x5c, - 0x08, 0x48, 0x41, 0x88, 0x01, 0x92, 0x41, 0x20, - 0x00, 0x91, 0xc1, 0x5c, 0x5a, 0x68, 0x08, 0x33, - 0x20, 0x1c, 0x3c, 0x00, 0x8c, 0x09, 0x01, 0x00, - 0xfb, 0xf7, 0x02, 0xf8, 0x05, 0xb0, 0x90, 0xbd, - 0x58, 0xe3, 0x01, 0x00, 0x75, 0x4f, 0x00, 0x00, - 0x3c, 0x7c, 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, - 0x22, 0x4c, 0x38, 0x21, 0x17, 0x1c, 0x05, 0x1c, - 0x20, 0x1c, 0xef, 0xf7, 0x75, 0xfd, 0x23, 0x1c, - 0x25, 0x33, 0x21, 0x1c, 0x24, 0x31, 0x10, 0x20, - 0x6a, 0x46, 0xf9, 0xf7, 0x1d, 0xf8, 0x00, 0xab, - 0x18, 0x88, 0x07, 0x21, 0x3c, 0x00, 0xc8, 0x09, - 0x01, 0x00, 0x1a, 0x4a, 0x02, 0x38, 0x20, 0x84, - 0x20, 0x1c, 0x20, 0x30, 0x81, 0x70, 0xc5, 0x70, - 0x11, 0x1c, 0x06, 0x73, 0x47, 0x73, 0x34, 0x31, - 0x21, 0x63, 0x30, 0x32, 0x62, 0x63, 0x01, 0x79, - 0x25, 0x1c, 0x10, 0x35, 0x21, 0x81, 0x20, 0x60, - 0xe5, 0x60, 0x18, 0x88, 0x40, 0x1a, 0x20, 0x83, - 0x20, 0x1c, 0x28, 0x30, 0x20, 0x61, 0x20, 0x1c, - 0xf9, 0xf7, 0x11, 0xf8, 0x0d, 0x48, 0x3c, 0x00, - 0x04, 0x0a, 0x01, 0x00, 0x00, 0x68, 0x00, 0x28, - 0x07, 0xd0, 0x06, 0x21, 0x20, 0x1c, 0xf8, 0xf7, - 0x47, 0xfd, 0x10, 0x21, 0x28, 0x1c, 0xf8, 0xf7, - 0x43, 0xfd, 0x08, 0x48, 0x02, 0x21, 0x01, 0x62, - 0x44, 0x62, 0x01, 0x21, 0x01, 0x62, 0x06, 0x48, - 0x00, 0x68, 0xef, 0xf7, 0xd5, 0xfc, 0xf8, 0xbd, - 0x8c, 0x8e, 0x01, 0x00, 0xe4, 0xfe, 0x01, 0x00, - 0xcc, 0x5c, 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x3c, 0x00, 0x40, 0x0a, 0x01, 0x00, 0x5c, 0x5b, - 0x01, 0x00, 0xf0, 0xb5, 0x06, 0x1c, 0x40, 0x36, - 0x31, 0x8b, 0x04, 0x1c, 0x25, 0x1c, 0x08, 0x07, - 0x80, 0x0f, 0x60, 0x35, 0x01, 0x28, 0x85, 0xb0, - 0x3b, 0xd0, 0xe8, 0x79, 0x00, 0x28, 0x05, 0xd1, - 0x20, 0x69, 0x01, 0x80, 0xb0, 0x8b, 0x21, 0x69, - 0xc8, 0x82, 0x07, 0xe0, 0x01, 0x28, 0x05, 0xd1, - 0x20, 0x69, 0x01, 0x22, 0x01, 0x88, 0xd2, 0x02, - 0x11, 0x43, 0x3c, 0x00, 0x7c, 0x0a, 0x01, 0x00, - 0x01, 0x80, 0x20, 0x48, 0x00, 0x78, 0x80, 0x07, - 0x26, 0xd5, 0xe8, 0x79, 0x00, 0x28, 0x23, 0xd0, - 0xa0, 0x6b, 0x00, 0x28, 0x1c, 0xd0, 0xf4, 0xf7, - 0x2f, 0xfe, 0x00, 0x28, 0x09, 0xd0, 0xb8, 0x21, - 0x09, 0x58, 0x00, 0x29, 0x05, 0xd0, 0x30, 0x21, - 0x09, 0x5d, 0xb4, 0x30, 0x08, 0x18, 0x07, 0x7a, - 0x00, 0xe0, 0x00, 0x27, 0x01, 0x21, 0x38, 0x1c, - 0xfa, 0xf7, 0x86, 0xf9, 0x3c, 0x00, 0xb8, 0x0a, - 0x01, 0x00, 0x04, 0x90, 0x20, 0x69, 0x04, 0x30, - 0x39, 0x1c, 0xf4, 0xf7, 0x6c, 0xfd, 0x04, 0x99, - 0xfa, 0xf7, 0xd3, 0xf9, 0x02, 0xe0, 0x20, 0x1c, - 0xf7, 0xf7, 0xf9, 0xfb, 0x70, 0x83, 0x70, 0x8b, - 0x21, 0x69, 0x00, 0x22, 0x48, 0x80, 0x09, 0x49, - 0x0a, 0x48, 0x04, 0x92, 0x03, 0x91, 0x02, 0x90, - 0xea, 0x79, 0x29, 0x88, 0x01, 0x92, 0x00, 0x91, - 0x62, 0x6a, 0xe3, 0x68, 0x20, 0x34, 0x3c, 0x00, - 0xf4, 0x0a, 0x01, 0x00, 0xa1, 0x7b, 0x68, 0x7a, - 0xfa, 0xf7, 0x4c, 0xff, 0x05, 0xb0, 0xf0, 0xbd, - 0x1d, 0x75, 0x01, 0x00, 0xd1, 0x4f, 0x00, 0x00, - 0xdd, 0x2f, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0x26, 0x1c, 0x01, 0x20, 0x20, 0x36, 0x00, 0x29, - 0x02, 0x90, 0x2e, 0xd0, 0x58, 0x20, 0x00, 0x5b, - 0x00, 0x07, 0x80, 0x0f, 0x01, 0x28, 0x01, 0xd1, - 0xcc, 0x31, 0x00, 0xe0, 0xb4, 0x31, 0x48, 0x68, - 0x3c, 0x00, 0x30, 0x0b, 0x01, 0x00, 0x0d, 0x1c, - 0x00, 0x28, 0x24, 0xd0, 0x20, 0x1c, 0x60, 0x30, - 0xc2, 0x79, 0x01, 0x21, 0x01, 0x2a, 0x00, 0xd0, - 0x00, 0x21, 0x27, 0x1c, 0x62, 0x6d, 0x30, 0x37, - 0x00, 0x2a, 0x04, 0xd0, 0x3a, 0x1c, 0x28, 0x1c, - 0xf6, 0xf7, 0xe7, 0xfd, 0x07, 0xe0, 0x42, 0x7a, - 0x23, 0x1c, 0x68, 0x33, 0x00, 0x92, 0x3a, 0x1c, - 0x28, 0x1c, 0xf6, 0xf7, 0x9a, 0xfd, 0x02, 0x90, - 0x38, 0x78, 0x3c, 0x00, 0x6c, 0x0b, 0x01, 0x00, - 0x40, 0x19, 0x00, 0x7a, 0x01, 0x21, 0xb0, 0x73, - 0xfa, 0xf7, 0x26, 0xf9, 0x01, 0xe0, 0x00, 0x20, - 0xb0, 0x73, 0x60, 0x62, 0xb0, 0x7b, 0x0d, 0x28, - 0x01, 0xd9, 0xf0, 0xf7, 0xbb, 0xfb, 0x02, 0x98, - 0xfe, 0xbd, 0x00, 0x00, 0xff, 0xb5, 0x04, 0x1c, - 0x80, 0x30, 0x25, 0x1c, 0x5e, 0x35, 0x00, 0x78, - 0xae, 0x1d, 0xaf, 0x1f, 0x00, 0x28, 0x83, 0xb0, - 0x12, 0xd1, 0xf4, 0xf7, 0x3c, 0x00, 0xa8, 0x0b, - 0x01, 0x00, 0xc7, 0xfb, 0x00, 0x28, 0x07, 0xd0, - 0x06, 0x98, 0x05, 0x99, 0x02, 0x90, 0x04, 0x98, - 0x01, 0x90, 0xa6, 0x61, 0x67, 0x61, 0x0d, 0xe0, - 0x04, 0x98, 0x06, 0x99, 0x02, 0x90, 0x05, 0x98, - 0x01, 0x90, 0x66, 0x61, 0x05, 0xe0, 0x04, 0xa9, - 0x03, 0xc9, 0x02, 0x90, 0x06, 0x98, 0x01, 0x90, - 0x67, 0x61, 0xa5, 0x61, 0x06, 0x22, 0x38, 0x1c, - 0xef, 0xf7, 0x8b, 0xfc, 0x06, 0x22, 0x3c, 0x00, - 0xe4, 0x0b, 0x01, 0x00, 0x28, 0x1c, 0x02, 0x99, - 0xef, 0xf7, 0x86, 0xfc, 0x06, 0x22, 0x30, 0x1c, - 0x01, 0x99, 0xef, 0xf7, 0x81, 0xfc, 0x07, 0xb0, - 0xf0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x05, 0x28, 0x01, 0xd3, 0xf0, 0xf7, - 0x7b, 0xfb, 0x02, 0x49, 0xa0, 0x00, 0x08, 0x58, - 0x85, 0x60, 0xb0, 0xbd, 0x10, 0x7b, 0x01, 0x00, - 0xf8, 0xb5, 0xff, 0xf7, 0x59, 0xf9, 0x05, 0x1c, - 0x3c, 0x00, 0x20, 0x0c, 0x01, 0x00, 0xfe, 0xf7, - 0xe8, 0xff, 0x04, 0x1c, 0x28, 0x1c, 0xff, 0xf7, - 0x58, 0xf9, 0x00, 0x28, 0x42, 0xd0, 0x69, 0x1e, - 0x21, 0x4d, 0x4a, 0x00, 0x20, 0x4b, 0x1c, 0x3d, - 0xae, 0x5c, 0x98, 0x5c, 0x30, 0x40, 0xd6, 0x18, - 0x01, 0x23, 0xf6, 0x56, 0x52, 0x19, 0xd2, 0x56, - 0x96, 0x42, 0x01, 0xdd, 0x15, 0x1c, 0x00, 0xe0, - 0x35, 0x1c, 0x18, 0x4b, 0x2a, 0x3b, 0x59, 0x56, - 0x51, 0x18, 0x3c, 0x00, 0x5c, 0x0c, 0x01, 0x00, - 0xb1, 0x42, 0x00, 0xdb, 0x31, 0x1c, 0x0e, 0x1c, - 0x00, 0x28, 0x26, 0xd0, 0xfe, 0xf7, 0xbe, 0xff, - 0x00, 0x90, 0x00, 0xab, 0x18, 0x78, 0x12, 0x49, - 0x00, 0x23, 0xc9, 0x56, 0x00, 0xab, 0x15, 0x22, - 0x10, 0x1a, 0x5b, 0x78, 0x00, 0x1b, 0x40, 0x18, - 0xd2, 0x1a, 0x12, 0x1b, 0x51, 0x18, 0x00, 0x22, - 0x85, 0x42, 0x02, 0xdb, 0x00, 0xab, 0x1a, 0x70, - 0x02, 0xe0, 0x40, 0x1b, 0x3c, 0x00, 0x98, 0x0c, - 0x01, 0x00, 0x00, 0xab, 0x18, 0x70, 0x8e, 0x42, - 0x02, 0xdb, 0x00, 0xab, 0x5a, 0x70, 0x02, 0xe0, - 0x88, 0x1b, 0x00, 0xab, 0x58, 0x70, 0x00, 0x98, - 0xff, 0xf7, 0x8d, 0xf8, 0x01, 0xf0, 0xff, 0xf8, - 0xf8, 0xbd, 0xe6, 0x78, 0x01, 0x00, 0x65, 0x73, - 0x01, 0x00, 0x70, 0xb5, 0x08, 0x4e, 0x06, 0x4d, - 0x00, 0x24, 0x06, 0x20, 0x60, 0x43, 0x80, 0x19, - 0x06, 0x22, 0x29, 0x1c, 0xef, 0xf7, 0x3c, 0x00, - 0xd4, 0x0c, 0x01, 0x00, 0x11, 0xfc, 0x01, 0x34, - 0x05, 0x2c, 0xf5, 0xdb, 0x70, 0xbd, 0x00, 0x00, - 0x4e, 0x47, 0x01, 0x00, 0xe6, 0x7a, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x01, 0x68, 0x03, 0x48, - 0xfe, 0xf7, 0x42, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0xa8, 0x79, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x01, 0x68, 0x03, 0x48, - 0xfe, 0xf7, 0x4a, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x0d, 0x01, 0x00, 0xa8, 0x79, - 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, 0x10, 0xb5, - 0x00, 0x28, 0x0a, 0xd0, 0x06, 0x4c, 0xa1, 0x69, - 0x00, 0x29, 0x01, 0xd1, 0x00, 0x20, 0x00, 0xe0, - 0x09, 0x68, 0xf7, 0xf7, 0x38, 0xfb, 0xa0, 0x61, - 0x10, 0xbd, 0x00, 0x20, 0x10, 0xbd, 0xa4, 0x6e, - 0x01, 0x00, 0xf3, 0xb5, 0x37, 0x48, 0x83, 0xb0, - 0x02, 0x90, 0x80, 0x79, 0x0e, 0x1c, 0x00, 0x27, - 0x01, 0x90, 0x3c, 0x00, 0x4c, 0x0d, 0x01, 0x00, - 0x34, 0x48, 0x35, 0x4a, 0x01, 0x6a, 0x03, 0x9c, - 0x03, 0x1c, 0x1b, 0x69, 0xa1, 0x42, 0x01, 0xd0, - 0x93, 0x61, 0x00, 0xe0, 0x53, 0x61, 0x31, 0x49, - 0x8a, 0x68, 0x96, 0x42, 0x3f, 0xd0, 0x2d, 0x48, - 0x8e, 0x60, 0xc1, 0x68, 0x00, 0x24, 0x25, 0x1c, - 0x00, 0x29, 0x2d, 0x48, 0x09, 0xd0, 0x00, 0x2e, - 0x0b, 0xd0, 0x28, 0x48, 0x01, 0x24, 0xc0, 0x6a, - 0x24, 0x03, 0x00, 0x28, 0x3c, 0x00, 0x88, 0x0d, - 0x01, 0x00, 0x06, 0xd0, 0x01, 0x27, 0x04, 0xe0, - 0x00, 0x2e, 0x01, 0xd0, 0x05, 0x1c, 0xf9, 0xe7, - 0x04, 0x1c, 0x00, 0x2f, 0x06, 0xd0, 0xfb, 0xf7, - 0x1e, 0xfb, 0x1f, 0x48, 0x01, 0x68, 0x22, 0x48, - 0xfe, 0xf7, 0xfb, 0xfa, 0x20, 0x1c, 0x28, 0x43, - 0x0e, 0xd0, 0x2a, 0x1c, 0x21, 0x1c, 0x01, 0x20, - 0x02, 0xf0, 0x21, 0xfe, 0x2a, 0x1c, 0x21, 0x1c, - 0x02, 0x20, 0x02, 0xf0, 0x1c, 0xfe, 0x3c, 0x00, - 0xc4, 0x0d, 0x01, 0x00, 0x2a, 0x1c, 0x21, 0x1c, - 0x03, 0x20, 0x02, 0xf0, 0x17, 0xfe, 0x00, 0x2f, - 0x06, 0xd1, 0x13, 0x48, 0x01, 0x68, 0x16, 0x48, - 0xfe, 0xf7, 0xce, 0xfa, 0xfa, 0xf7, 0x42, 0xfd, - 0x03, 0x9c, 0x00, 0x2c, 0x01, 0xd1, 0x01, 0xf0, - 0xe1, 0xff, 0x01, 0xa9, 0x03, 0xc9, 0x88, 0x71, - 0x01, 0xf0, 0xdc, 0xff, 0x0a, 0x4c, 0x0a, 0x4b, - 0x44, 0x3c, 0xa1, 0x69, 0x22, 0x69, 0x08, 0x3b, - 0x3c, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x41, 0x1a, - 0x00, 0x2a, 0x03, 0xd0, 0x1a, 0x68, 0x51, 0x18, - 0x19, 0x60, 0x02, 0xe0, 0x5a, 0x68, 0x51, 0x18, - 0x59, 0x60, 0xa0, 0x61, 0x26, 0x61, 0x05, 0xb0, - 0xf0, 0xbd, 0x20, 0x10, 0x07, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, 0xb0, 0x57, - 0x01, 0x00, 0x00, 0x10, 0x60, 0x00, 0x84, 0x73, - 0x01, 0x00, 0x1c, 0xb5, 0x4c, 0x23, 0x08, 0x49, - 0x58, 0x43, 0x3c, 0x00, 0x3c, 0x0e, 0x01, 0x00, - 0x44, 0x18, 0x20, 0x1c, 0x40, 0x30, 0x41, 0x78, - 0x62, 0x68, 0x00, 0x91, 0x01, 0x92, 0x3f, 0x21, - 0x0b, 0x5d, 0x61, 0x8f, 0x00, 0x78, 0x62, 0x6c, - 0xfa, 0xf7, 0x28, 0xf8, 0xa0, 0x85, 0x1c, 0xbd, - 0x58, 0xe3, 0x01, 0x00, 0xb0, 0xb5, 0x16, 0x4d, - 0xa9, 0x69, 0x00, 0x29, 0x25, 0xd0, 0x2c, 0x1c, - 0x30, 0x34, 0x20, 0x7a, 0x00, 0x28, 0x20, 0xd0, - 0x00, 0x23, 0x81, 0x22, 0x3c, 0x00, 0x78, 0x0e, - 0x01, 0x00, 0x18, 0x20, 0x02, 0xf0, 0x89, 0xfc, - 0x20, 0x7a, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, - 0x20, 0x72, 0x12, 0xd1, 0x0c, 0x48, 0x28, 0x21, - 0x2c, 0x38, 0x09, 0x5c, 0x21, 0x72, 0x29, 0x7a, - 0x00, 0x29, 0x01, 0xd1, 0x00, 0x6a, 0x00, 0xe0, - 0x40, 0x6a, 0xa9, 0x69, 0x80, 0x02, 0x81, 0x42, - 0x03, 0xd2, 0x49, 0x00, 0x81, 0x42, 0x01, 0xd2, - 0xa9, 0x61, 0xb0, 0xbd, 0xa8, 0x61, 0x3c, 0x00, - 0xb4, 0x0e, 0x01, 0x00, 0xb0, 0xbd, 0x01, 0xf0, - 0x1d, 0xf9, 0xb0, 0xbd, 0xf4, 0x6e, 0x01, 0x00, - 0x7f, 0xb5, 0x05, 0x1c, 0x04, 0x20, 0x6b, 0x46, - 0x1b, 0x18, 0x02, 0x90, 0x00, 0x26, 0x28, 0x18, - 0x6a, 0x46, 0x02, 0xa9, 0xfc, 0xf7, 0x8a, 0xfb, - 0x00, 0x28, 0x06, 0xd1, 0x00, 0xab, 0x18, 0x79, - 0x04, 0x28, 0x08, 0xd0, 0x18, 0x79, 0x03, 0x28, - 0x05, 0xd0, 0x00, 0xab, 0x18, 0x79, 0x10, 0x21, - 0x3c, 0x00, 0xf0, 0x0e, 0x01, 0x00, 0x08, 0x43, - 0x04, 0xb0, 0x70, 0xbd, 0x03, 0xa9, 0xe8, 0x68, - 0xf6, 0xf7, 0xd3, 0xff, 0x00, 0x28, 0x05, 0xd0, - 0x03, 0x98, 0x20, 0x21, 0x08, 0x43, 0x00, 0x06, - 0x00, 0x0e, 0xf1, 0xe7, 0x03, 0xa9, 0x00, 0x20, - 0xf6, 0xf7, 0xc7, 0xff, 0x04, 0x1c, 0x01, 0xd1, - 0x02, 0x20, 0xe9, 0xe7, 0xe8, 0x68, 0x00, 0xab, - 0x20, 0x60, 0x00, 0x98, 0x60, 0x60, 0x18, 0x79, - 0xa0, 0x76, 0x3c, 0x00, 0x2c, 0x0f, 0x01, 0x00, - 0xa8, 0x8c, 0x60, 0x76, 0xe8, 0x69, 0x20, 0x61, - 0x68, 0x8c, 0xa0, 0x82, 0x28, 0x8c, 0x20, 0x76, - 0x69, 0x69, 0x09, 0x48, 0x81, 0x42, 0x00, 0xd9, - 0x08, 0x1c, 0xa0, 0x60, 0x20, 0x1c, 0x02, 0xf0, - 0xa1, 0xfd, 0xa1, 0x68, 0x00, 0x29, 0x04, 0xd0, - 0x03, 0x9a, 0xa1, 0x32, 0x08, 0x20, 0x02, 0xf0, - 0x37, 0xfb, 0x30, 0x1c, 0xc7, 0xe7, 0x00, 0x00, - 0xa0, 0x86, 0x01, 0x00, 0x3c, 0x00, 0x68, 0x0f, - 0x01, 0x00, 0xfe, 0xb5, 0x06, 0x1c, 0x40, 0x78, - 0x01, 0x24, 0x06, 0x28, 0x50, 0xd3, 0xc1, 0x1e, - 0x03, 0x20, 0xef, 0xf7, 0x5e, 0xfb, 0x00, 0x90, - 0x0e, 0x28, 0x49, 0xd8, 0x00, 0x20, 0x0a, 0xe0, - 0x41, 0x00, 0x09, 0x18, 0x89, 0x19, 0x4a, 0x79, - 0x89, 0x79, 0x51, 0x18, 0x01, 0x39, 0x0e, 0x29, - 0x00, 0xd9, 0x00, 0x24, 0x01, 0x30, 0x00, 0x99, - 0x88, 0x42, 0xf1, 0xdb, 0x00, 0x2c, 0x3c, 0x00, - 0xa4, 0x0f, 0x01, 0x00, 0x37, 0xd0, 0x03, 0x22, - 0xb1, 0x1c, 0x1b, 0x48, 0xef, 0xf7, 0xa4, 0xfa, - 0x1a, 0x4c, 0x1c, 0x21, 0x20, 0x1c, 0xef, 0xf7, - 0x4d, 0xfa, 0x00, 0x25, 0x28, 0xe0, 0x69, 0x00, - 0x49, 0x19, 0x02, 0x91, 0x8a, 0x19, 0x53, 0x79, - 0x15, 0x48, 0x43, 0x54, 0x93, 0x79, 0x0f, 0x18, - 0x7b, 0x70, 0xd3, 0x79, 0xbb, 0x70, 0x07, 0x23, - 0xd2, 0x56, 0x01, 0x92, 0x44, 0x5c, 0x0f, 0xe0, - 0x3c, 0x00, 0xe0, 0x0f, 0x01, 0x00, 0x20, 0x1c, - 0xfe, 0xf7, 0x7b, 0xff, 0x00, 0x28, 0x07, 0xd0, - 0x0c, 0x4a, 0x60, 0x00, 0x80, 0x18, 0x01, 0x21, - 0x10, 0x38, 0x81, 0x73, 0x01, 0x99, 0xc1, 0x73, - 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, 0x07, 0x48, - 0x02, 0x99, 0x40, 0x5c, 0x79, 0x78, 0x40, 0x18, - 0xa0, 0x42, 0xe8, 0xd8, 0x01, 0x35, 0x00, 0x98, - 0x85, 0x42, 0xd3, 0xdb, 0xfe, 0xbd, 0xe8, 0x62, - 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x10, 0x01, 0x00, - 0xe6, 0x78, 0x01, 0x00, 0xeb, 0x62, 0x01, 0x00, - 0x01, 0x68, 0x0f, 0x29, 0x01, 0xdd, 0x0f, 0x21, - 0x01, 0x60, 0x01, 0x68, 0x00, 0x29, 0x01, 0xda, - 0x00, 0x21, 0x01, 0x60, 0x70, 0x47, 0x00, 0x00, - 0xf8, 0xb5, 0x04, 0x1c, 0x1e, 0x48, 0x22, 0x1d, - 0x05, 0x68, 0x00, 0x92, 0x16, 0x1c, 0x23, 0x1c, - 0x0f, 0x1c, 0xcc, 0x33, 0x2a, 0x1c, 0x20, 0x1c, - 0x70, 0x30, 0xa1, 0x6d, 0x3c, 0x00, 0x58, 0x10, - 0x01, 0x00, 0x00, 0xf0, 0x3e, 0xf9, 0x00, 0x96, - 0xa1, 0x6d, 0x27, 0x20, 0x01, 0x40, 0x23, 0x1c, - 0xe4, 0x33, 0x20, 0x1c, 0x2a, 0x1c, 0x5c, 0x30, - 0x00, 0xf0, 0x33, 0xf9, 0x13, 0x48, 0x00, 0x78, - 0x0e, 0x28, 0x01, 0xd2, 0x01, 0x25, 0x85, 0x40, - 0x11, 0x48, 0xa1, 0x69, 0x00, 0x78, 0x29, 0x40, - 0x00, 0x07, 0x0b, 0xd4, 0x48, 0x07, 0x03, 0xd5, - 0x08, 0x07, 0x01, 0xd5, 0x04, 0x20, 0x3c, 0x00, - 0x94, 0x10, 0x01, 0x00, 0x81, 0x43, 0x88, 0x06, - 0x03, 0xd5, 0x48, 0x06, 0x01, 0xd5, 0x20, 0x20, - 0x81, 0x43, 0x23, 0x1c, 0xb4, 0x33, 0x2a, 0x1c, - 0x20, 0x1c, 0x30, 0x30, 0x00, 0x96, 0x00, 0xf0, - 0x13, 0xf9, 0x39, 0x1c, 0x20, 0x1c, 0xf0, 0xf7, - 0x47, 0xfc, 0xf8, 0xbd, 0x2c, 0x7d, 0x01, 0x00, - 0x10, 0x67, 0x01, 0x00, 0x1d, 0x75, 0x01, 0x00, - 0xb0, 0xb5, 0xf2, 0xf7, 0x27, 0xfc, 0xfe, 0xf7, - 0x3c, 0x00, 0xd0, 0x10, 0x01, 0x00, 0x09, 0xf9, - 0x0f, 0x48, 0x00, 0x25, 0x45, 0x70, 0x0e, 0x48, - 0x0d, 0x4c, 0x00, 0x88, 0x5b, 0x34, 0xa0, 0x82, - 0xf9, 0xf7, 0x23, 0xfd, 0x20, 0x61, 0xa0, 0x8a, - 0x00, 0x28, 0x04, 0xd0, 0x01, 0x21, 0x89, 0x05, - 0xef, 0xf7, 0x0d, 0xfb, 0xe1, 0x82, 0x05, 0x48, - 0x01, 0x38, 0x45, 0x60, 0x01, 0xf0, 0x55, 0xfe, - 0x02, 0x1c, 0x23, 0x1c, 0x00, 0x21, 0x00, 0x20, - 0xf4, 0xf7, 0x3c, 0x00, 0x0c, 0x11, 0x01, 0x00, - 0x49, 0xfd, 0xb0, 0xbd, 0x45, 0x7d, 0x01, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x1c, - 0x5a, 0x89, 0x04, 0x1c, 0x04, 0x98, 0x92, 0x07, - 0x92, 0x0f, 0x00, 0x25, 0x00, 0x29, 0xa2, 0x71, - 0x09, 0xd0, 0x05, 0x21, 0xf9, 0xf7, 0x24, 0xfb, - 0x00, 0x28, 0x01, 0xd0, 0xc0, 0x78, 0x00, 0xe0, - 0x01, 0x20, 0xe0, 0x71, 0x00, 0xe0, 0xe5, 0x71, - 0xe5, 0x60, 0xa6, 0x60, 0x3c, 0x00, 0x48, 0x11, - 0x01, 0x00, 0x70, 0xbd, 0x00, 0x00, 0xfe, 0xb5, - 0x05, 0x1c, 0x0e, 0x22, 0x9c, 0x30, 0x16, 0x49, - 0xef, 0xf7, 0xcf, 0xf9, 0x29, 0x1c, 0x28, 0x1c, - 0x80, 0x30, 0x88, 0x31, 0x00, 0x24, 0x2f, 0x1c, - 0x60, 0x37, 0x02, 0x91, 0x01, 0x90, 0x20, 0x06, - 0x00, 0x0e, 0x06, 0x1c, 0xf9, 0xf7, 0x0d, 0xfe, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x98, 0x42, 0x68, - 0x02, 0x99, 0x01, 0xe0, 0xea, 0x6d, 0x3c, 0x00, - 0x84, 0x11, 0x01, 0x00, 0x39, 0x1c, 0x00, 0x2a, - 0x0d, 0xd0, 0x00, 0x20, 0x03, 0xe0, 0x0b, 0x5c, - 0xb3, 0x42, 0x02, 0xd8, 0x01, 0x30, 0x90, 0x42, - 0xf9, 0xdb, 0x08, 0x18, 0x10, 0x38, 0xc0, 0x7b, - 0x29, 0x19, 0x90, 0x31, 0x08, 0x73, 0x01, 0x34, - 0x0e, 0x2c, 0xdf, 0xd3, 0xfe, 0xbd, 0x00, 0x00, - 0xcc, 0x47, 0x01, 0x00, 0xff, 0xb5, 0x81, 0xb0, - 0x14, 0x1c, 0x10, 0x1c, 0x06, 0x22, 0x0d, 0x1c, - 0x3c, 0x00, 0xc0, 0x11, 0x01, 0x00, 0x19, 0x1c, - 0x0b, 0x9e, 0x0a, 0x9f, 0xef, 0xf7, 0x97, 0xf9, - 0x06, 0x22, 0x39, 0x1c, 0xa0, 0x18, 0xef, 0xf7, - 0x92, 0xf9, 0xe6, 0x60, 0x2c, 0x60, 0x10, 0x20, - 0x28, 0x81, 0x6e, 0x60, 0x01, 0x98, 0xe8, 0x60, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x00, 0x20, 0x20, 0x61, 0x58, 0x20, - 0x00, 0x5d, 0x0e, 0x1c, 0x15, 0x1c, 0xc0, 0x07, - 0xc0, 0x17, 0x3c, 0x00, 0xfc, 0x11, 0x01, 0x00, - 0x01, 0x30, 0xe0, 0x61, 0x21, 0x6b, 0x00, 0x29, - 0x36, 0xd1, 0x1e, 0x49, 0x09, 0x68, 0x29, 0x43, - 0x32, 0xd0, 0xa1, 0x68, 0x89, 0x8a, 0x00, 0x29, - 0x2e, 0xd0, 0x00, 0x28, 0x0b, 0xd0, 0x20, 0x1c, - 0x58, 0x30, 0x00, 0xf0, 0xf3, 0xfd, 0x00, 0x28, - 0x1b, 0xd0, 0x81, 0x6a, 0x02, 0x6a, 0x40, 0x6a, - 0x09, 0x78, 0x00, 0x78, 0x06, 0xe0, 0x14, 0x4a, - 0x3c, 0x23, 0x11, 0x78, 0x3c, 0x00, 0x38, 0x12, - 0x01, 0x00, 0x50, 0x78, 0x43, 0x43, 0x9a, 0x18, - 0x04, 0x32, 0x00, 0x2d, 0x03, 0xd1, 0x02, 0x29, - 0x01, 0xd0, 0x03, 0x29, 0x02, 0xd1, 0x6d, 0x21, - 0x22, 0x61, 0x08, 0x55, 0x20, 0x69, 0x00, 0x28, - 0x0d, 0xd0, 0x81, 0x88, 0x00, 0x29, 0x01, 0xd1, - 0x01, 0x20, 0x70, 0xbd, 0x80, 0x79, 0x02, 0x28, - 0x05, 0xd1, 0x22, 0x1c, 0x07, 0x49, 0x07, 0x48, - 0xf8, 0xf7, 0x4b, 0xff, 0x02, 0xe0, 0x3c, 0x00, - 0x74, 0x12, 0x01, 0x00, 0x20, 0x1c, 0xef, 0xf7, - 0xb5, 0xf8, 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, - 0x28, 0x61, 0x01, 0x00, 0x68, 0x61, 0x01, 0x00, - 0xa1, 0xda, 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x21, 0x00, 0x20, 0xf9, 0xf7, - 0x39, 0xfe, 0xc4, 0x00, 0xf9, 0xf7, 0x54, 0xfe, - 0x24, 0x18, 0xf9, 0xf7, 0x47, 0xfe, 0x08, 0x49, - 0x20, 0x18, 0x09, 0x88, 0x08, 0x4c, 0x40, 0x18, - 0x3c, 0x00, 0xb0, 0x12, 0x01, 0x00, 0x06, 0x49, - 0x09, 0x88, 0x40, 0x18, 0x60, 0x61, 0xf9, 0xf7, - 0x46, 0xfe, 0x05, 0x49, 0x09, 0x88, 0x40, 0x18, - 0x40, 0x00, 0xa0, 0x61, 0x10, 0xbd, 0x02, 0x61, - 0x01, 0x00, 0x04, 0x61, 0x01, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0xa6, 0x69, 0x01, 0x00, 0x11, 0x40, - 0x08, 0x1c, 0x10, 0xb5, 0x1c, 0x1c, 0x19, 0x1c, - 0x08, 0x31, 0x18, 0x60, 0xf1, 0xf7, 0x31, 0xfe, - 0x60, 0x60, 0x3c, 0x00, 0xec, 0x12, 0x01, 0x00, - 0x10, 0xbd, 0x00, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x22, 0x48, 0x0f, 0x1c, 0x41, 0x68, 0x91, 0x42, - 0x03, 0xd0, 0x00, 0x21, 0x81, 0x60, 0xc1, 0x60, - 0x42, 0x60, 0xc4, 0x68, 0x15, 0xe0, 0x28, 0x20, - 0x1d, 0x49, 0x60, 0x43, 0x40, 0x18, 0x05, 0x1c, - 0x06, 0x22, 0x31, 0x1c, 0xef, 0xf7, 0x70, 0xf8, - 0x00, 0x28, 0x07, 0xd1, 0xa8, 0x1d, 0x39, 0x1c, - 0xf9, 0xf7, 0x10, 0xfd, 0x3c, 0x00, 0x28, 0x13, - 0x01, 0x00, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, - 0xf8, 0xbd, 0x01, 0x34, 0x24, 0x07, 0x24, 0x0f, - 0x12, 0x48, 0x80, 0x68, 0x84, 0x42, 0xe5, 0xd1, - 0x10, 0x4c, 0x28, 0x23, 0xa0, 0x68, 0x0f, 0x4d, - 0x58, 0x43, 0x40, 0x19, 0x06, 0x22, 0x31, 0x1c, - 0xef, 0xf7, 0xd3, 0xf8, 0xa0, 0x68, 0x28, 0x23, - 0x58, 0x43, 0x40, 0x19, 0x06, 0x30, 0x22, 0x22, - 0x39, 0x1c, 0xef, 0xf7, 0xca, 0xf8, 0x3c, 0x00, - 0x64, 0x13, 0x01, 0x00, 0xa0, 0x68, 0x01, 0x30, - 0x00, 0x07, 0x00, 0x0f, 0xa0, 0x60, 0xe1, 0x68, - 0x81, 0x42, 0x03, 0xd1, 0x01, 0x31, 0x08, 0x07, - 0x00, 0x0f, 0xe0, 0x60, 0x00, 0x20, 0xd6, 0xe7, - 0xec, 0x65, 0x01, 0x00, 0xa0, 0xf4, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, - 0xe5, 0xff, 0x05, 0x4c, 0xa0, 0x68, 0x00, 0x28, - 0x04, 0xd1, 0x01, 0xf0, 0x07, 0xfd, 0x61, 0x68, - 0x3c, 0x00, 0xa0, 0x13, 0x01, 0x00, 0x40, 0x1a, - 0x60, 0x60, 0x10, 0xbd, 0x00, 0x00, 0xd0, 0x60, - 0x01, 0x00, 0x02, 0x68, 0x0a, 0x60, 0x01, 0x60, - 0x70, 0x47, 0x01, 0x1c, 0x00, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0x02, 0x68, 0x0a, 0x60, 0x70, 0x47, - 0x00, 0x00, 0xfe, 0xb5, 0x14, 0x1c, 0x1d, 0x1c, - 0x00, 0x22, 0xd2, 0x43, 0x01, 0xab, 0xf3, 0xf7, - 0x82, 0xff, 0x01, 0x98, 0x00, 0x26, 0x28, 0x40, - 0x01, 0x90, 0x3c, 0x00, 0xdc, 0x13, 0x01, 0x00, - 0x00, 0x25, 0x00, 0x27, 0x20, 0x60, 0x1e, 0xe0, - 0x01, 0x21, 0xb9, 0x40, 0x0a, 0x1c, 0x02, 0x40, - 0x18, 0xd0, 0x88, 0x43, 0x01, 0x90, 0x39, 0x06, - 0x09, 0x0e, 0x70, 0x19, 0x00, 0x19, 0x02, 0x91, - 0x01, 0x77, 0x08, 0x1c, 0xf9, 0xf7, 0xc6, 0xfc, - 0x00, 0x28, 0x06, 0xd0, 0x30, 0x1c, 0x00, 0x19, - 0x01, 0x36, 0x02, 0x99, 0x30, 0x30, 0x01, 0x70, - 0x04, 0xe0, 0x28, 0x1c, 0x3c, 0x00, 0x18, 0x14, - 0x01, 0x00, 0x01, 0x35, 0x02, 0x99, 0x00, 0x19, - 0x01, 0x72, 0x01, 0x37, 0x01, 0x98, 0x00, 0x28, - 0xdd, 0xd1, 0x70, 0x19, 0xa0, 0x61, 0x65, 0x60, - 0xe6, 0x62, 0xfe, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x14, 0x4d, 0x04, 0x1c, 0x28, 0x7a, 0x01, 0x28, - 0x02, 0xd1, 0x04, 0x20, 0xf6, 0xf7, 0xad, 0xf9, - 0x21, 0x1c, 0xa8, 0x6a, 0xf5, 0xf7, 0x21, 0xfc, - 0x00, 0x28, 0x03, 0xd1, 0x04, 0x20, 0x3c, 0x00, - 0x54, 0x14, 0x01, 0x00, 0xf6, 0xf7, 0xa4, 0xf9, - 0xb0, 0xbd, 0x02, 0x20, 0x28, 0x70, 0x28, 0x8c, - 0x00, 0x28, 0x00, 0xd0, 0x60, 0x81, 0x68, 0x8c, - 0x00, 0x28, 0x00, 0xd0, 0xa0, 0x81, 0xa8, 0x8c, - 0x00, 0x28, 0x00, 0xd0, 0xe0, 0x81, 0xe8, 0x69, - 0x01, 0x23, 0x02, 0x04, 0x12, 0x0c, 0x20, 0x1c, - 0x02, 0x49, 0xfc, 0xf7, 0x19, 0xff, 0xb0, 0xbd, - 0xf4, 0x6e, 0x01, 0x00, 0xa1, 0x77, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x14, 0x01, 0x00, 0xf8, 0xb5, - 0x19, 0x4e, 0x05, 0x1c, 0xb0, 0x69, 0x00, 0x28, - 0x00, 0xd1, 0x30, 0x68, 0xff, 0xf7, 0x3b, 0xfc, - 0x15, 0x4f, 0x04, 0x1c, 0x50, 0x37, 0x00, 0x28, - 0x0b, 0xd0, 0x60, 0x68, 0x29, 0x1c, 0x78, 0x60, - 0x01, 0x20, 0x38, 0x63, 0x20, 0x1c, 0xf5, 0xf7, - 0xea, 0xfb, 0x00, 0x28, 0x04, 0xd1, 0x00, 0x20, - 0xf8, 0xbd, 0x00, 0x23, 0xfb, 0x62, 0xfa, 0xe7, - 0x00, 0x23, 0x3c, 0x00, 0xcc, 0x14, 0x01, 0x00, - 0x23, 0x77, 0xf8, 0x6a, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0xf8, 0x62, 0x38, 0x7a, 0x01, 0x28, - 0x07, 0xd0, 0xf8, 0x69, 0x06, 0x49, 0x02, 0x04, - 0x12, 0x0c, 0x28, 0x1c, 0xfc, 0xf7, 0xe6, 0xfe, - 0x01, 0xe0, 0xfb, 0x62, 0xb3, 0x61, 0x01, 0x20, - 0xe5, 0xe7, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, - 0xdd, 0x02, 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x16, 0x1c, 0x3c, 0x00, 0x08, 0x15, - 0x01, 0x00, 0x04, 0x2c, 0x1b, 0xd2, 0x10, 0x48, - 0x83, 0x42, 0x07, 0xd2, 0x58, 0x00, 0x0f, 0x49, - 0xef, 0xf7, 0xfb, 0xf8, 0xff, 0x30, 0x00, 0x0a, - 0x01, 0x38, 0x00, 0xe0, 0x00, 0x20, 0x1f, 0x35, - 0xea, 0x06, 0x61, 0x07, 0x09, 0x0e, 0xd2, 0x0e, - 0x11, 0x43, 0x72, 0x07, 0x52, 0x0d, 0x11, 0x43, - 0x00, 0x06, 0x00, 0x0a, 0x08, 0x43, 0x06, 0x4a, - 0xa1, 0x00, 0x50, 0x50, 0x70, 0xbd, 0x3c, 0x00, - 0x44, 0x15, 0x01, 0x00, 0x01, 0x21, 0x8d, 0x20, - 0xef, 0xf7, 0xac, 0xfe, 0x70, 0xbd, 0x00, 0x00, - 0x40, 0x9c, 0x00, 0x00, 0x00, 0x80, 0x38, 0x01, - 0xe8, 0x60, 0x01, 0x00, 0x09, 0x4a, 0x80, 0x00, - 0x10, 0x58, 0x40, 0x09, 0x40, 0x01, 0x07, 0x22, - 0x02, 0x43, 0x07, 0x48, 0x03, 0x68, 0x00, 0x2b, - 0xfc, 0xdb, 0x42, 0x60, 0x09, 0x06, 0x01, 0x60, - 0x01, 0x68, 0x00, 0x29, 0xfc, 0xdb, 0x08, 0x20, - 0x3c, 0x00, 0x80, 0x15, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0xe8, 0x60, 0x01, 0x00, 0x30, 0x20, - 0x07, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, - 0x07, 0x49, 0xa0, 0x00, 0x08, 0x58, 0x00, 0x28, - 0x03, 0xd1, 0x02, 0x21, 0x8d, 0x20, 0xef, 0xf7, - 0x80, 0xfe, 0x29, 0x1c, 0x20, 0x1c, 0xf6, 0xf7, - 0xa8, 0xfa, 0xb0, 0xbd, 0x00, 0x00, 0xe8, 0x60, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, - 0x07, 0x49, 0x3c, 0x00, 0xbc, 0x15, 0x01, 0x00, - 0xa0, 0x00, 0x08, 0x58, 0x00, 0x28, 0x03, 0xd1, - 0x02, 0x21, 0x8d, 0x20, 0xef, 0xf7, 0x6c, 0xfe, - 0x29, 0x1c, 0x20, 0x1c, 0xff, 0xf7, 0xc4, 0xff, - 0xb0, 0xbd, 0x00, 0x00, 0xe8, 0x60, 0x01, 0x00, - 0xf8, 0xb5, 0x0d, 0x1c, 0x16, 0x1c, 0xf7, 0xf7, - 0x17, 0xf9, 0x04, 0x1c, 0x28, 0x68, 0x40, 0x4f, - 0x81, 0x78, 0x00, 0x29, 0x3b, 0xd1, 0xc1, 0x78, - 0x00, 0x29, 0x58, 0xd1, 0x3c, 0x00, 0xf8, 0x15, - 0x01, 0x00, 0xf8, 0xf7, 0xf8, 0xf9, 0x22, 0x8e, - 0x61, 0x8e, 0x8a, 0x42, 0x04, 0xd0, 0xa1, 0x6a, - 0x09, 0x18, 0xe0, 0x69, 0x81, 0x42, 0x10, 0xd9, - 0x38, 0x49, 0x32, 0x1c, 0x48, 0x6b, 0x01, 0x30, - 0x48, 0x63, 0x20, 0x6a, 0x01, 0x30, 0x20, 0x62, - 0x38, 0x68, 0x01, 0x30, 0x38, 0x60, 0xe0, 0x68, - 0x63, 0x69, 0x29, 0x1c, 0xee, 0xf7, 0xd8, 0xfe, - 0xf8, 0xbd, 0x01, 0x32, 0x12, 0x04, 0x3c, 0x00, - 0x34, 0x16, 0x01, 0x00, 0x12, 0x0c, 0x22, 0x86, - 0xa1, 0x62, 0xb8, 0x68, 0x00, 0x28, 0x34, 0xd1, - 0x2c, 0x48, 0x0c, 0x23, 0x00, 0x68, 0x1b, 0x1a, - 0x9a, 0x42, 0x07, 0xd2, 0x19, 0x23, 0x9b, 0x01, - 0xaf, 0x22, 0x92, 0x01, 0x58, 0x43, 0x10, 0x1a, - 0x81, 0x42, 0x26, 0xd3, 0x01, 0x20, 0xb8, 0x60, - 0x01, 0x21, 0x0c, 0x20, 0x00, 0xf0, 0x7a, 0xfe, - 0x1f, 0xe0, 0x01, 0x29, 0x1d, 0xd1, 0xc0, 0x78, - 0x3c, 0x00, 0x70, 0x16, 0x01, 0x00, 0x17, 0x28, - 0x1a, 0xd1, 0xa0, 0x8e, 0xe1, 0x8e, 0x88, 0x42, - 0x14, 0xd3, 0xe9, 0x68, 0x09, 0x68, 0x09, 0x79, - 0x09, 0x06, 0x0f, 0xd5, 0x60, 0x6a, 0x32, 0x1c, - 0x01, 0x30, 0x60, 0x62, 0xe0, 0x68, 0x63, 0x69, - 0x29, 0x1c, 0xee, 0xf7, 0xa3, 0xfe, 0xe8, 0x68, - 0x01, 0x68, 0x08, 0x31, 0x0b, 0x20, 0x00, 0xf0, - 0x5c, 0xfe, 0xc3, 0xe7, 0x01, 0x30, 0xa0, 0x86, - 0xa0, 0x8d, 0x3c, 0x00, 0xac, 0x16, 0x01, 0x00, - 0xe1, 0x8d, 0x88, 0x42, 0x04, 0xd1, 0x03, 0x21, - 0x02, 0x20, 0xef, 0xf7, 0xf5, 0xfd, 0xb8, 0xe7, - 0x60, 0x68, 0x45, 0x60, 0x86, 0x60, 0x00, 0x68, - 0x60, 0x60, 0xf8, 0x68, 0x01, 0x30, 0xf8, 0x60, - 0xa0, 0x8d, 0x41, 0x1c, 0xa1, 0x85, 0x00, 0x28, - 0xab, 0xd1, 0x08, 0x48, 0xb9, 0x69, 0xfd, 0xf7, - 0x61, 0xfe, 0x22, 0x1c, 0x02, 0x21, 0xf1, 0x20, - 0x02, 0xf0, 0x64, 0xf8, 0x3c, 0x00, 0xe8, 0x16, - 0x01, 0x00, 0xa1, 0xe7, 0x00, 0x00, 0xfc, 0x5a, - 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, 0x18, 0x57, - 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x1c, 0x02, 0x21, 0xf0, 0x20, 0x02, 0xf0, - 0x54, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x28, - 0x03, 0xd1, 0x02, 0x48, 0x41, 0x78, 0xc9, 0x07, - 0xfc, 0xd5, 0x70, 0x47, 0x00, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x80, 0xb5, 0x00, 0x06, 0x3c, 0x00, - 0x24, 0x17, 0x01, 0x00, 0x01, 0xd1, 0xf1, 0xf7, - 0x71, 0xfe, 0x80, 0xbd, 0x80, 0xb5, 0xf4, 0xf7, - 0xe5, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0xf6, 0xf7, - 0xeb, 0xf8, 0x80, 0xbd, 0x01, 0x49, 0x00, 0x20, - 0x08, 0x74, 0x70, 0x47, 0x78, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0xc0, 0x07, 0x03, 0xd5, 0x02, 0x49, - 0x01, 0x20, 0x00, 0xf0, 0x1d, 0xfc, 0x80, 0xbd, - 0x50, 0xc3, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0e, - 0x3c, 0x00, 0x60, 0x17, 0x01, 0x00, 0x01, 0x28, - 0x80, 0xb5, 0x02, 0xd1, 0xf6, 0xf7, 0xe1, 0xf9, - 0x80, 0xbd, 0x00, 0x28, 0xfc, 0xd1, 0xf1, 0xf7, - 0x4c, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0xf6, 0xf7, 0xd7, 0xf9, 0x80, 0xbd, 0x03, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x08, 0x74, 0xf6, 0xf7, - 0xfe, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x06, 0x00, 0x0e, - 0xf1, 0xf7, 0x3c, 0x00, 0x9c, 0x17, 0x01, 0x00, - 0x71, 0xfe, 0x80, 0xbd, 0x10, 0xb5, 0x01, 0x28, - 0x08, 0xd0, 0x02, 0x28, 0x03, 0xd0, 0x03, 0x28, - 0x01, 0xd0, 0xef, 0xf7, 0xa7, 0xfd, 0xf6, 0xf7, - 0xe9, 0xf9, 0x10, 0xbd, 0x01, 0xf0, 0xf8, 0xfa, - 0x04, 0x1c, 0xfa, 0xf7, 0x5d, 0xfd, 0x24, 0x1a, - 0xfa, 0xf7, 0x3e, 0xfd, 0x08, 0x49, 0x00, 0x28, - 0x0b, 0xd0, 0x48, 0x6a, 0x00, 0x28, 0x08, 0xd0, - 0x06, 0x48, 0x84, 0x42, 0x3c, 0x00, 0xd8, 0x17, - 0x01, 0x00, 0x05, 0xd2, 0x01, 0x1b, 0x01, 0x22, - 0x07, 0x20, 0x01, 0xf0, 0xf4, 0xfe, 0xe5, 0xe7, - 0x00, 0x20, 0x48, 0x61, 0xe2, 0xe7, 0x78, 0x69, - 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x09, 0x49, - 0x80, 0xb5, 0x48, 0x69, 0x00, 0x28, 0x0c, 0xd0, - 0x08, 0x6a, 0xca, 0x69, 0x80, 0x1a, 0x00, 0x28, - 0x07, 0xdd, 0x00, 0x20, 0x48, 0x61, 0x01, 0x21, - 0x07, 0x20, 0x01, 0xf0, 0x10, 0xff, 0x3c, 0x00, - 0x14, 0x18, 0x01, 0x00, 0xf6, 0xf7, 0xb8, 0xf9, - 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0xe7, 0xfb, 0x80, 0xbd, - 0x80, 0xb5, 0x00, 0xf0, 0x3f, 0xfc, 0x00, 0x20, - 0xf7, 0xf7, 0xd4, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0x37, 0xfc, 0xfd, 0xf7, - 0x6f, 0xfc, 0xf5, 0xf7, 0x73, 0xfd, 0x30, 0xf0, - 0x47, 0xfb, 0x80, 0xbd, 0x04, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0x50, 0x18, 0x01, 0x00, 0xc1, 0x6a, - 0x00, 0x6b, 0xf2, 0xf7, 0xde, 0xff, 0x01, 0x20, - 0xf7, 0xf7, 0x89, 0xf8, 0x80, 0xbd, 0xa4, 0x6c, - 0x01, 0x00, 0x10, 0xb5, 0xf3, 0xf7, 0x41, 0xf8, - 0x0d, 0x4c, 0x00, 0x28, 0x04, 0xd0, 0x01, 0x20, - 0xe0, 0x64, 0xf7, 0xf7, 0xb2, 0xfc, 0x10, 0xbd, - 0x01, 0x21, 0x01, 0x20, 0xf3, 0xf7, 0xe9, 0xf8, - 0xfd, 0xf7, 0x4d, 0xfc, 0x60, 0x6d, 0x00, 0x28, - 0x03, 0xd0, 0x3c, 0x00, 0x8c, 0x18, 0x01, 0x00, - 0xf3, 0xf7, 0x82, 0xf8, 0x00, 0x28, 0x01, 0xd0, - 0xf5, 0xf7, 0x4a, 0xfd, 0x01, 0x20, 0xf2, 0xf7, - 0xc1, 0xfc, 0x10, 0xbd, 0xa4, 0x6c, 0x01, 0x00, - 0x04, 0x48, 0x80, 0xb5, 0xc1, 0x6a, 0x00, 0x6b, - 0xf2, 0xf7, 0xb2, 0xff, 0x01, 0x20, 0xf7, 0xf7, - 0x5d, 0xf8, 0x80, 0xbd, 0xa4, 0x6c, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0xf5, 0xfb, 0xf5, 0xf7, - 0x33, 0xfd, 0xfc, 0xf7, 0x3c, 0x00, 0xc8, 0x18, - 0x01, 0x00, 0x31, 0xfd, 0xf9, 0xf7, 0xcb, 0xff, - 0x04, 0x20, 0xf2, 0xf7, 0xa6, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0xc1, 0x6a, - 0x00, 0x6b, 0xf2, 0xf7, 0x98, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0xf0, 0xdd, 0xfb, 0x00, 0x20, 0xf7, 0xf7, - 0x3c, 0xf8, 0x30, 0xf0, 0xee, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x3c, 0x00, - 0x04, 0x19, 0x01, 0x00, 0x01, 0x20, 0xff, 0xf7, - 0x19, 0xfa, 0x01, 0x20, 0xf2, 0xf7, 0x88, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0xc9, 0xfb, 0xfc, 0xf7, 0x07, 0xfd, 0x01, 0x21, - 0x01, 0x20, 0xff, 0xf7, 0x0b, 0xfa, 0x04, 0x20, - 0xf2, 0xf7, 0x7a, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, - 0x00, 0xf0, 0x8a, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x19, 0x01, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x82, 0x6a, 0x01, 0x21, 0x04, 0x20, - 0x00, 0xf0, 0x81, 0xfb, 0x80, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x03, 0x20, 0x00, 0xf0, 0x78, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x82, 0x6a, - 0x01, 0x21, 0x04, 0x20, 0x00, 0xf0, 0x6f, 0xfb, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x22, 0x3c, 0x00, 0x7c, 0x19, 0x01, 0x00, - 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, 0x66, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x06, 0x48, 0x80, 0xb5, - 0x81, 0x68, 0x42, 0x69, 0x00, 0x69, 0x51, 0x18, - 0x81, 0x42, 0x03, 0xd9, 0x01, 0x21, 0x01, 0x20, - 0x00, 0xf0, 0x58, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0xd4, 0x79, 0x01, 0x00, 0x06, 0x48, 0x80, 0xb5, - 0x82, 0x88, 0x81, 0x68, 0x00, 0x69, 0x51, 0x18, - 0x81, 0x42, 0x03, 0xd9, 0x3c, 0x00, 0xb8, 0x19, - 0x01, 0x00, 0x01, 0x21, 0x02, 0x20, 0x00, 0xf0, - 0x48, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, 0x20, 0x7b, - 0x21, 0x6a, 0xf9, 0xf7, 0x9c, 0xfa, 0xa1, 0x69, - 0x42, 0x18, 0xa0, 0x68, 0x21, 0x69, 0x80, 0x18, - 0x88, 0x42, 0x03, 0xd9, 0x01, 0x21, 0x02, 0x20, - 0x00, 0xf0, 0x33, 0xfb, 0x10, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x3c, 0x00, - 0xf4, 0x19, 0x01, 0x00, 0x00, 0x21, 0x00, 0x20, - 0x00, 0xf0, 0x2a, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x0e, 0x01, 0x28, 0x80, 0xb5, - 0x02, 0xd1, 0xf6, 0xf7, 0x8f, 0xf8, 0x80, 0xbd, - 0x00, 0x28, 0xfc, 0xd1, 0xf1, 0xf7, 0xfa, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0xf6, 0xf7, - 0x85, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x06, - 0x00, 0x0e, 0xf1, 0xf7, 0x29, 0xfd, 0x80, 0xbd, - 0x3c, 0x00, 0x30, 0x1a, 0x01, 0x00, 0xb0, 0xb5, - 0x02, 0x25, 0x02, 0x28, 0x10, 0x4c, 0x0b, 0xd1, - 0xfb, 0xf7, 0x47, 0xfc, 0x00, 0x28, 0x01, 0xd1, - 0xfe, 0xf7, 0x4f, 0xff, 0x25, 0x70, 0xa1, 0x68, - 0x0c, 0x48, 0xfd, 0xf7, 0xa8, 0xfc, 0xb0, 0xbd, - 0x03, 0x28, 0x0d, 0xd1, 0x08, 0x48, 0x7d, 0x23, - 0x1c, 0x38, 0x00, 0x69, 0xdb, 0x00, 0x58, 0x43, - 0x19, 0x1c, 0x40, 0x18, 0x41, 0x08, 0x02, 0x20, - 0x00, 0xf0, 0x3c, 0x00, 0x6c, 0x1a, 0x01, 0x00, - 0x91, 0xfa, 0x25, 0x70, 0xb0, 0xbd, 0xf8, 0xf7, - 0x31, 0xf9, 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, - 0xe0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xef, 0xf7, - 0x39, 0xfc, 0x02, 0x20, 0x20, 0x70, 0x00, 0xf0, - 0xaf, 0xfa, 0x10, 0xbd, 0x78, 0x69, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x82, 0x6a, 0x01, 0x21, - 0x04, 0x20, 0x00, 0xf0, 0x3c, 0x00, 0xa8, 0x1a, - 0x01, 0x00, 0xd3, 0xfa, 0x80, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x03, 0x20, 0x00, 0xf0, 0xca, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x00, 0xf0, 0xc2, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x42, 0x69, - 0x01, 0x21, 0x01, 0x20, 0x00, 0xf0, 0xb9, 0xfa, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x3c, 0x00, - 0xe4, 0x1a, 0x01, 0x00, 0x06, 0x48, 0x80, 0xb5, - 0x82, 0x88, 0x00, 0x2a, 0x02, 0xd0, 0x01, 0x21, - 0x02, 0x20, 0x02, 0xe0, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x00, 0xf0, 0xa9, 0xfa, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, - 0x20, 0x7b, 0x21, 0x6a, 0xf9, 0xf7, 0xfe, 0xf9, - 0xa1, 0x69, 0x42, 0x18, 0x01, 0x21, 0x02, 0x20, - 0x00, 0xf0, 0x9a, 0xfa, 0x10, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x1b, 0x01, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x00, 0xf0, 0x90, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x38, 0xb5, 0xfa, 0xf7, 0x41, 0xfe, - 0x00, 0x20, 0xf0, 0xf7, 0x80, 0xf8, 0x00, 0x90, - 0x00, 0xab, 0x1c, 0x88, 0x5d, 0x88, 0xf8, 0xf7, - 0x3c, 0xf9, 0x00, 0x2c, 0x02, 0xd0, 0xfd, 0xf7, - 0x9e, 0xfa, 0x02, 0xe0, 0x01, 0x20, 0xf6, 0xf7, - 0x0a, 0xff, 0x3c, 0x00, 0x5c, 0x1b, 0x01, 0x00, - 0x29, 0x1c, 0x20, 0x1c, 0xfc, 0xf7, 0xb8, 0xfc, - 0x00, 0x2c, 0x02, 0xd0, 0xf5, 0xf7, 0xe0, 0xfb, - 0x02, 0xe0, 0x00, 0x20, 0x00, 0xf0, 0xdc, 0xf9, - 0x03, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x02, 0x20, - 0x00, 0x06, 0x00, 0x0e, 0xf2, 0xf7, 0x4e, 0xfb, - 0x38, 0xbd, 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, - 0x82, 0x6a, 0x01, 0x21, 0x04, 0x20, 0x00, 0xf0, - 0x5d, 0xfa, 0x80, 0xbd, 0x3c, 0x00, 0x98, 0x1b, - 0x01, 0x00, 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x30, 0xf0, 0x9b, 0xf9, 0x80, 0xbd, 0x80, 0xb5, - 0x00, 0x22, 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, - 0x50, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x42, 0x69, 0x01, 0x21, 0x01, 0x20, - 0x00, 0xf0, 0x47, 0xfa, 0x80, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x04, 0x48, 0x80, 0xb5, 0x82, 0x88, - 0x00, 0x2a, 0x03, 0xd0, 0x01, 0x21, 0x3c, 0x00, - 0xd4, 0x1b, 0x01, 0x00, 0x02, 0x20, 0x00, 0xf0, - 0x3b, 0xfa, 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, - 0x10, 0xb5, 0x06, 0x4c, 0x20, 0x7b, 0x21, 0x6a, - 0xf9, 0xf7, 0x90, 0xf9, 0xa1, 0x69, 0x42, 0x18, - 0x01, 0x21, 0x02, 0x20, 0x00, 0xf0, 0x2c, 0xfa, - 0x10, 0xbd, 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0xfc, 0xf7, 0x93, 0xfb, 0x01, 0x21, - 0x01, 0x20, 0xff, 0xf7, 0x97, 0xf8, 0x04, 0x20, - 0x3c, 0x00, 0x10, 0x1c, 0x01, 0x00, 0xf2, 0xf7, - 0x06, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x2f, 0xf0, 0x6b, 0xfb, 0x00, 0x28, 0x0a, 0xd0, - 0x01, 0x20, 0xf2, 0xf7, 0xfc, 0xfa, 0xfa, 0xf7, - 0x2a, 0xfc, 0x00, 0x28, 0x02, 0xd1, 0x04, 0x20, - 0xf6, 0xf7, 0x5d, 0xf8, 0x80, 0xbd, 0x03, 0x21, - 0x16, 0x20, 0xef, 0xf7, 0x32, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x02, 0x48, 0x80, 0xb5, 0x00, 0x68, - 0xee, 0xf7, 0x3c, 0x00, 0x4c, 0x1c, 0x01, 0x00, - 0xc5, 0xfb, 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x42, 0x69, 0x01, 0x21, - 0x01, 0x20, 0x00, 0xf0, 0xf7, 0xf9, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, 0x30, 0xf0, - 0x35, 0xf9, 0x80, 0xbd, 0xb0, 0xb5, 0x18, 0x4c, - 0xaa, 0x20, 0x00, 0x5d, 0x04, 0x28, 0x19, 0xd1, - 0x01, 0x25, 0xe5, 0x62, 0x25, 0x63, 0x01, 0xf0, - 0x93, 0xf8, 0xa0, 0x66, 0x3c, 0x00, 0x88, 0x1c, - 0x01, 0x00, 0x01, 0xf0, 0xfc, 0xfd, 0xf2, 0xf7, - 0x2e, 0xfe, 0x00, 0x28, 0x0e, 0xd0, 0x02, 0x20, - 0xf2, 0xf7, 0xc3, 0xfa, 0xa5, 0x60, 0x01, 0xf0, - 0x86, 0xf8, 0x64, 0x30, 0x60, 0x60, 0xfa, 0xf7, - 0x8a, 0xfd, 0x01, 0x21, 0x01, 0x20, 0xff, 0xf7, - 0x46, 0xf8, 0xb0, 0xbd, 0x01, 0x20, 0xf2, 0xf7, - 0xb4, 0xfa, 0x00, 0x20, 0xa0, 0x60, 0x00, 0x21, - 0x01, 0x20, 0xff, 0xf7, 0x3c, 0xf8, 0x3c, 0x00, - 0xc4, 0x1c, 0x01, 0x00, 0xf2, 0xf7, 0x66, 0xfe, - 0x00, 0x28, 0xf1, 0xd0, 0xfa, 0xf7, 0x76, 0xfd, - 0xb0, 0xbd, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0xef, 0xf7, 0xd6, 0xfe, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, - 0xef, 0xf7, 0xd0, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0xac, 0x21, 0x09, 0x5c, 0x02, 0x4a, 0x09, 0x02, - 0x89, 0x18, 0xc0, 0x31, 0x81, 0x60, 0x70, 0x47, - 0x3c, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x70, 0x75, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x28, 0x04, 0xd1, - 0x03, 0xc9, 0x09, 0x68, 0xee, 0xf7, 0x64, 0xfb, - 0x80, 0xbd, 0x01, 0x21, 0x14, 0x20, 0xef, 0xf7, - 0xc4, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x28, - 0x02, 0xd1, 0x02, 0x48, 0x40, 0x68, 0x70, 0x47, - 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, 0x58, 0x75, - 0x01, 0x00, 0x10, 0xb5, 0x00, 0x24, 0xf8, 0xf7, - 0x1c, 0xfb, 0x3c, 0x00, 0x3c, 0x1d, 0x01, 0x00, - 0x00, 0x28, 0x04, 0xd0, 0x40, 0x30, 0x80, 0x7a, - 0x05, 0x28, 0x00, 0xd1, 0x01, 0x24, 0x20, 0x1c, - 0x10, 0xbd, 0x00, 0x00, 0x04, 0x48, 0x00, 0x21, - 0x40, 0x68, 0x01, 0xe0, 0x01, 0x63, 0x40, 0x68, - 0x00, 0x28, 0xfb, 0xd1, 0x70, 0x47, 0x00, 0x00, - 0x58, 0x75, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0d, 0x1c, 0xf7, 0xf7, 0xa5, 0xf8, 0x40, 0x34, - 0xe5, 0x72, 0xb0, 0xbd, 0x3c, 0x00, 0x78, 0x1d, - 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, 0xf8, 0xf7, - 0xfa, 0xfa, 0x04, 0x1c, 0x04, 0xd0, 0x05, 0x21, - 0x14, 0x20, 0xef, 0xf7, 0x8c, 0xfa, 0x28, 0xe0, - 0x00, 0x25, 0x14, 0x49, 0x28, 0x02, 0x46, 0x18, - 0x30, 0x1c, 0x44, 0x30, 0x06, 0x22, 0x12, 0x49, - 0xee, 0xf7, 0x2d, 0xfb, 0x00, 0x28, 0x02, 0xd1, - 0xac, 0x20, 0x85, 0x55, 0x34, 0x1c, 0x01, 0x35, - 0x03, 0x2d, 0xee, 0xd3, 0x00, 0x2c, 0x3c, 0x00, - 0xb4, 0x1d, 0x01, 0x00, 0x14, 0xd0, 0x39, 0x1c, - 0x20, 0x1c, 0xf8, 0xf7, 0x2b, 0xf8, 0x09, 0x49, - 0x00, 0x20, 0x20, 0x60, 0x18, 0x39, 0x48, 0x68, - 0x60, 0x60, 0x00, 0x28, 0x00, 0xd0, 0x04, 0x60, - 0x4c, 0x60, 0xca, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0x01, 0x21, 0x20, 0x1c, 0xee, 0xf7, 0xfe, 0xfa, - 0x20, 0x1c, 0xf8, 0xbd, 0x70, 0x75, 0x01, 0x00, - 0x58, 0x46, 0x01, 0x00, 0x80, 0xb5, 0xf8, 0xf7, - 0x3c, 0x00, 0xf0, 0x1d, 0x01, 0x00, 0xc1, 0xfa, - 0x00, 0x28, 0x04, 0xd1, 0x06, 0x21, 0x14, 0x20, - 0xef, 0xf7, 0x53, 0xfa, 0x80, 0xbd, 0xf5, 0xf7, - 0x16, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0xf8, 0xf7, 0xb3, 0xfa, 0x80, 0xbd, 0x10, 0xb5, - 0x09, 0x4c, 0x21, 0x88, 0x02, 0x29, 0x03, 0xd1, - 0x14, 0x20, 0xef, 0xf7, 0x42, 0xfa, 0x04, 0xe0, - 0xa3, 0x68, 0x8a, 0x00, 0x98, 0x50, 0x48, 0x1c, - 0x20, 0x80, 0x3c, 0x00, 0x2c, 0x1e, 0x01, 0x00, - 0x20, 0x88, 0x01, 0x38, 0x00, 0x04, 0x00, 0x0c, - 0x10, 0xbd, 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, - 0x0b, 0x1c, 0x11, 0x1c, 0x08, 0x4a, 0x80, 0xb5, - 0x12, 0x88, 0x90, 0x42, 0x06, 0xd2, 0xda, 0x68, - 0xc0, 0x00, 0x12, 0x18, 0x14, 0x20, 0x01, 0xf0, - 0xbb, 0xfb, 0x80, 0xbd, 0x03, 0x21, 0x14, 0x20, - 0xef, 0xf7, 0x22, 0xfa, 0x80, 0xbd, 0x00, 0x00, - 0x58, 0x75, 0x01, 0x00, 0x3c, 0x00, 0x68, 0x1e, - 0x01, 0x00, 0x08, 0x4a, 0x80, 0xb5, 0x12, 0x88, - 0x90, 0x42, 0x06, 0xd2, 0xc9, 0x68, 0xc0, 0x00, - 0x09, 0x18, 0x14, 0x20, 0x01, 0xf0, 0xdb, 0xfb, - 0x80, 0xbd, 0x04, 0x21, 0x14, 0x20, 0xef, 0xf7, - 0x0e, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x58, 0x75, - 0x01, 0x00, 0x01, 0x49, 0xc8, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0x80, 0xb5, - 0x06, 0x22, 0x44, 0x30, 0xee, 0xf7, 0x3c, 0x00, - 0xa4, 0x1e, 0x01, 0x00, 0xab, 0xfa, 0x00, 0x28, - 0x01, 0xd1, 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, - 0x80, 0xbd, 0x00, 0x00, 0x1c, 0xb5, 0x14, 0x4c, - 0x20, 0x69, 0x00, 0x28, 0x23, 0xd0, 0x20, 0x78, - 0x0a, 0x28, 0x01, 0xd0, 0x00, 0xf0, 0xfc, 0xf8, - 0x00, 0x20, 0x60, 0x61, 0x0f, 0x48, 0x40, 0x79, - 0xa0, 0x70, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, - 0x15, 0xd1, 0xfd, 0xf7, 0xed, 0xfe, 0x01, 0x90, - 0x3c, 0x00, 0xe0, 0x1e, 0x01, 0x00, 0xfd, 0xf7, - 0x82, 0xfe, 0x00, 0x90, 0x00, 0xab, 0x18, 0x79, - 0x19, 0x78, 0x40, 0x1a, 0x18, 0x71, 0x58, 0x79, - 0x59, 0x78, 0x40, 0x1a, 0x58, 0x71, 0x01, 0x98, - 0xf2, 0xf7, 0x89, 0xfe, 0x05, 0x20, 0x20, 0x70, - 0x00, 0xf0, 0xbf, 0xf9, 0x1c, 0xbd, 0x7c, 0x78, - 0x01, 0x00, 0x0c, 0x5a, 0x01, 0x00, 0x08, 0xb5, - 0x04, 0x4a, 0x00, 0x90, 0x14, 0x32, 0x00, 0x20, - 0x02, 0x4b, 0x3c, 0x00, 0x1c, 0x1f, 0x01, 0x00, - 0x02, 0x49, 0xf1, 0xf7, 0x7d, 0xf9, 0x08, 0xbd, - 0x2c, 0x75, 0x01, 0x00, 0xb1, 0xa8, 0x00, 0x00, - 0xb0, 0xb5, 0x00, 0x28, 0x06, 0xd0, 0x01, 0x28, - 0x06, 0xd0, 0x02, 0x28, 0x07, 0xd1, 0x0c, 0x4c, - 0x01, 0x25, 0x07, 0xe0, 0x0b, 0x4c, 0x04, 0xe0, - 0x0a, 0x4c, 0x2a, 0x3c, 0x01, 0xe0, 0x08, 0x4c, - 0xb6, 0x34, 0x00, 0x25, 0x00, 0xf0, 0x2c, 0xff, - 0x07, 0x49, 0x89, 0x6e, 0x3c, 0x00, 0x58, 0x1f, - 0x01, 0x00, 0x09, 0x19, 0x09, 0x1a, 0xa1, 0x42, - 0x00, 0xd9, 0x00, 0x21, 0x2a, 0x1c, 0x16, 0x20, - 0x01, 0xf0, 0x31, 0xfb, 0xb0, 0xbd, 0x71, 0x02, - 0x00, 0x00, 0x0c, 0x05, 0x00, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0x8c, 0xb5, 0x00, 0xab, 0x8e, 0x21, - 0x19, 0x80, 0xfc, 0xf7, 0x38, 0xf9, 0x01, 0x90, - 0x68, 0x46, 0xfb, 0xf7, 0xa6, 0xfa, 0x8c, 0xbd, - 0x00, 0x00, 0xbf, 0xb5, 0x13, 0x4a, 0x3c, 0x00, - 0x94, 0x1f, 0x01, 0x00, 0x01, 0x91, 0x0d, 0x1c, - 0x11, 0x7c, 0x88, 0x43, 0x04, 0x1c, 0x21, 0x43, - 0x08, 0x1c, 0x10, 0x74, 0xa0, 0x07, 0x0b, 0xd5, - 0x0e, 0x48, 0x00, 0x90, 0x01, 0x20, 0x02, 0x90, - 0x00, 0xf0, 0xfc, 0xfe, 0x0c, 0x49, 0x40, 0x18, - 0x03, 0x90, 0x68, 0x46, 0xf9, 0xf7, 0x6a, 0xff, - 0xe0, 0x07, 0x0c, 0xd5, 0xf1, 0xf7, 0x2c, 0xfd, - 0x00, 0x28, 0x03, 0xd0, 0x07, 0x48, 0x85, 0x42, - 0x3c, 0x00, 0xd0, 0x1f, 0x01, 0x00, 0x00, 0xd2, - 0x01, 0x90, 0x06, 0x48, 0x00, 0x90, 0x68, 0x46, - 0xf9, 0xf7, 0x09, 0xff, 0xbf, 0xbd, 0x78, 0x69, - 0x01, 0x00, 0x81, 0xea, 0x00, 0x00, 0x10, 0x27, - 0x00, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x75, 0xea, - 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x4c, 0x60, 0x69, - 0x00, 0x28, 0x0e, 0xd1, 0x01, 0x20, 0x60, 0x61, - 0xa1, 0x68, 0x07, 0x48, 0xfd, 0xf7, 0xcb, 0xf9, - 0x00, 0x21, 0x3c, 0x00, 0x0c, 0x20, 0x01, 0x00, - 0xa0, 0x68, 0xf9, 0xf7, 0xd1, 0xfb, 0x01, 0x22, - 0x07, 0x20, 0x04, 0x49, 0x01, 0xf0, 0xd8, 0xfa, - 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x98, 0x3a, 0x00, 0x00, - 0x10, 0xb5, 0x0c, 0x1c, 0x11, 0x1c, 0x06, 0x4a, - 0x00, 0x2b, 0x10, 0x70, 0x03, 0xd0, 0x00, 0x28, - 0x02, 0xd1, 0xf9, 0xf7, 0xf5, 0xfd, 0x10, 0xbd, - 0x20, 0x1c, 0xf9, 0xf7, 0x3c, 0x00, 0x48, 0x20, - 0x01, 0x00, 0x01, 0xfe, 0x10, 0xbd, 0xa0, 0x79, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4c, 0x05, 0x1c, - 0xe3, 0x6a, 0x20, 0x1f, 0x01, 0x33, 0xe3, 0x62, - 0x00, 0x88, 0x00, 0x29, 0x06, 0xd0, 0xa1, 0x68, - 0x89, 0x18, 0x21, 0x61, 0x05, 0x4a, 0x00, 0xf0, - 0xfc, 0xfe, 0x01, 0xe0, 0x00, 0xf0, 0xcf, 0xfe, - 0x25, 0x77, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x55, 0xe3, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x20, 0x01, 0x00, 0x01, 0x1c, 0x03, 0x48, - 0x80, 0xb5, 0x40, 0x88, 0xff, 0xf7, 0xec, 0xfe, - 0x80, 0xbd, 0x00, 0x00, 0x98, 0x7c, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0xc1, 0x68, 0x18, 0x38, - 0x80, 0x88, 0xff, 0xf7, 0xe1, 0xfe, 0x80, 0xbd, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, - 0x16, 0x20, 0x01, 0xf0, 0xbf, 0xfa, 0x01, 0x21, - 0x16, 0x20, 0x01, 0xf0, 0xbb, 0xfa, 0x80, 0xbd, - 0x3c, 0x00, 0xc0, 0x20, 0x01, 0x00, 0x10, 0xb5, - 0x0b, 0x4c, 0x20, 0x78, 0x0a, 0x28, 0x10, 0xd0, - 0x01, 0x20, 0x60, 0x61, 0x0a, 0x21, 0x13, 0x20, - 0x01, 0xf0, 0xaf, 0xfa, 0x0a, 0x20, 0x60, 0x70, - 0x20, 0x70, 0xfd, 0xf7, 0x3c, 0xfb, 0x01, 0x20, - 0xfd, 0xf7, 0xe9, 0xfb, 0x00, 0x20, 0xfa, 0xf7, - 0xc4, 0xf9, 0x10, 0xbd, 0x00, 0x00, 0x7c, 0x78, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x4c, 0x00, 0x20, - 0x0b, 0x49, 0x3c, 0x00, 0xfc, 0x20, 0x01, 0x00, - 0x20, 0x63, 0xe0, 0x62, 0x50, 0x39, 0x88, 0x61, - 0x20, 0x70, 0x08, 0x48, 0x38, 0x21, 0x0c, 0x38, - 0x00, 0x7a, 0x08, 0x55, 0x81, 0x21, 0x18, 0x20, - 0x01, 0xf0, 0x8e, 0xfa, 0x20, 0x69, 0x01, 0x28, - 0x02, 0xd1, 0x00, 0x20, 0xf5, 0xf7, 0x3e, 0xfb, - 0x10, 0xbd, 0x00, 0x00, 0xf4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x1c, 0x4c, 0x00, 0x25, 0x2c, 0x22, - 0x01, 0x1d, 0x20, 0x1c, 0x3c, 0x00, 0x38, 0x21, - 0x01, 0x00, 0x9a, 0xb0, 0xee, 0xf7, 0x39, 0xfa, - 0x18, 0x49, 0x2c, 0x31, 0x08, 0x1c, 0x00, 0x7a, - 0x8a, 0x69, 0x00, 0x2a, 0x13, 0xd1, 0x02, 0x28, - 0x03, 0xd1, 0xa0, 0x68, 0x00, 0x28, 0x20, 0xd0, - 0x04, 0xe0, 0x00, 0x28, 0x1d, 0xd1, 0x60, 0x68, - 0x00, 0x28, 0x1a, 0xd0, 0x80, 0x02, 0x88, 0x61, - 0x0e, 0x48, 0x69, 0x46, 0x24, 0x38, 0x00, 0x68, - 0xef, 0xf7, 0xcb, 0xfb, 0x11, 0xe0, 0x3c, 0x00, - 0x74, 0x21, 0x01, 0x00, 0x00, 0x22, 0x02, 0x28, - 0x03, 0xd1, 0xa0, 0x68, 0x00, 0x28, 0x09, 0xd1, - 0x04, 0xe0, 0x00, 0x28, 0x08, 0xd1, 0x60, 0x68, - 0x00, 0x28, 0x03, 0xd1, 0x8a, 0x61, 0xff, 0xf7, - 0xb1, 0xff, 0x01, 0xe0, 0x80, 0x02, 0x88, 0x61, - 0x28, 0x1c, 0x1a, 0xb0, 0xb0, 0xbd, 0x00, 0x00, - 0xc8, 0x6e, 0x01, 0x00, 0xf8, 0xb5, 0x0c, 0x49, - 0x02, 0x20, 0x48, 0x60, 0x0b, 0x49, 0x00, 0x05, - 0x3c, 0x00, 0xb0, 0x21, 0x01, 0x00, 0x08, 0x60, - 0x0b, 0x4f, 0xb8, 0x68, 0xf9, 0x68, 0x7c, 0x68, - 0x45, 0x1a, 0x2e, 0x1c, 0x04, 0xe0, 0xa0, 0x68, - 0x61, 0x68, 0xee, 0xf7, 0x09, 0xf9, 0x24, 0x68, - 0x01, 0x3d, 0xf8, 0xd2, 0x7c, 0x60, 0xf8, 0x68, - 0x80, 0x19, 0xf8, 0x60, 0xf8, 0xbd, 0x40, 0x20, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x44, 0xe3, - 0x01, 0x00, 0xf8, 0xb5, 0x1f, 0x4e, 0x04, 0x1c, - 0x30, 0x69, 0x3c, 0x00, 0xec, 0x21, 0x01, 0x00, - 0x01, 0x21, 0xf9, 0xf7, 0x99, 0xfa, 0x1d, 0x49, - 0x60, 0x00, 0x40, 0x18, 0x10, 0x38, 0x81, 0x7b, - 0x1b, 0x4a, 0x51, 0x72, 0xc0, 0x7b, 0x10, 0x74, - 0x1a, 0x4f, 0x1b, 0x4d, 0x0e, 0x2c, 0x0a, 0xd1, - 0x01, 0x22, 0x02, 0x21, 0x08, 0x20, 0x01, 0xf0, - 0xf3, 0xfb, 0x03, 0x20, 0xff, 0x21, 0x41, 0x31, - 0x39, 0x86, 0x14, 0x21, 0x08, 0xe0, 0x02, 0x22, - 0x01, 0x21, 0x08, 0x20, 0x3c, 0x00, 0x28, 0x22, - 0x01, 0x00, 0x01, 0xf0, 0xe8, 0xfb, 0x12, 0x49, - 0x02, 0x20, 0x39, 0x86, 0x10, 0x21, 0xa9, 0x71, - 0xe8, 0x71, 0x10, 0x48, 0x11, 0x4a, 0x00, 0x19, - 0x10, 0x38, 0xc0, 0x7b, 0x00, 0x28, 0x03, 0xd0, - 0x01, 0x21, 0x51, 0x73, 0x10, 0x73, 0x01, 0xe0, - 0x00, 0x20, 0x50, 0x73, 0x00, 0x21, 0x20, 0x1c, - 0xfd, 0xf7, 0xe5, 0xfd, 0x30, 0x69, 0xf9, 0xf7, - 0x08, 0xfb, 0xf8, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x22, 0x01, 0x00, 0x40, 0x7c, 0x01, 0x00, - 0x76, 0x46, 0x01, 0x00, 0x0c, 0x80, 0x07, 0x00, - 0x30, 0x80, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, - 0xff, 0x01, 0x00, 0x00, 0x5c, 0x57, 0x01, 0x00, - 0xd0, 0x80, 0x07, 0x00, 0x10, 0xb5, 0x15, 0x4c, - 0x14, 0x4a, 0x21, 0x78, 0x00, 0x20, 0x18, 0x32, - 0x05, 0x29, 0x1d, 0xd0, 0x06, 0x29, 0x1b, 0xd0, - 0x07, 0x29, 0x01, 0xd0, 0x08, 0x29, 0x06, 0xd1, - 0x3c, 0x00, 0xa0, 0x22, 0x01, 0x00, 0x91, 0x68, - 0x05, 0x20, 0x10, 0x29, 0x00, 0xdb, 0x06, 0x20, - 0x20, 0x70, 0x01, 0x20, 0xa1, 0x78, 0x00, 0x28, - 0x61, 0x70, 0x0b, 0xd0, 0x00, 0x20, 0xfa, 0xf7, - 0xdc, 0xf8, 0x00, 0x21, 0x60, 0x78, 0xf4, 0xf7, - 0x3c, 0xfa, 0x0a, 0x22, 0x1e, 0x21, 0x13, 0x20, - 0x01, 0xf0, 0x7f, 0xf9, 0x10, 0xbd, 0xd1, 0x69, - 0x07, 0x20, 0x10, 0x29, 0xe8, 0xdb, 0x08, 0x20, - 0xe6, 0xe7, 0x3c, 0x00, 0xdc, 0x22, 0x01, 0x00, - 0x7c, 0x78, 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, - 0x01, 0x1c, 0x04, 0x1c, 0x44, 0x31, 0x00, 0x20, - 0xf6, 0xf7, 0x40, 0xfa, 0x30, 0x34, 0x00, 0x2d, - 0x07, 0xd0, 0x0e, 0xc8, 0x0e, 0xc4, 0x08, 0xc8, - 0x10, 0x38, 0x08, 0xc4, 0xf4, 0xf7, 0xc4, 0xf9, - 0xb0, 0xbd, 0x1e, 0xcc, 0x1e, 0xc0, 0xb0, 0xbd, - 0xf8, 0xb5, 0x08, 0x1c, 0x11, 0x1c, 0xf4, 0xf7, - 0x87, 0xfa, 0x08, 0x4c, 0x3c, 0x00, 0x18, 0x23, - 0x01, 0x00, 0x00, 0x25, 0x08, 0x4e, 0x08, 0x4f, - 0x06, 0xe0, 0x30, 0x6b, 0x00, 0x28, 0x03, 0xd0, - 0x35, 0x63, 0x20, 0x68, 0xee, 0xf7, 0x55, 0xf8, - 0x38, 0x68, 0x00, 0x28, 0xf5, 0xd0, 0xf8, 0xbd, - 0x00, 0x00, 0x5c, 0x5b, 0x01, 0x00, 0xe4, 0xfe, - 0x01, 0x00, 0x84, 0x5a, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x06, 0x00, 0x0e, 0x00, 0xf0, 0x07, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x0a, 0x1c, 0x3c, 0x00, - 0x54, 0x23, 0x01, 0x00, 0x23, 0x21, 0x01, 0xf0, - 0x2b, 0xfa, 0x80, 0xbd, 0xb0, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, - 0x23, 0x20, 0xee, 0xf7, 0x9b, 0xff, 0x06, 0x49, - 0xa0, 0x00, 0x08, 0x58, 0x04, 0xe0, 0x12, 0xc8, - 0x28, 0x1c, 0xee, 0xf7, 0x2e, 0xf8, 0x20, 0x1c, - 0x00, 0x28, 0xf8, 0xd1, 0xb0, 0xbd, 0x00, 0x00, - 0x68, 0x5b, 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, - 0x3c, 0x00, 0x90, 0x23, 0x01, 0x00, 0x00, 0x25, - 0x04, 0x1c, 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, - 0x23, 0x20, 0xee, 0xf7, 0x82, 0xff, 0x13, 0x48, - 0xa7, 0x00, 0xc4, 0x59, 0x08, 0xe0, 0x20, 0x68, - 0xb0, 0x42, 0x03, 0xd1, 0x03, 0x21, 0x23, 0x20, - 0xee, 0xf7, 0x77, 0xff, 0x25, 0x1c, 0x64, 0x68, - 0x00, 0x2c, 0xf4, 0xd1, 0x0c, 0x4a, 0x04, 0x3a, - 0x10, 0x68, 0x00, 0x28, 0x01, 0xd0, 0x41, 0x68, - 0x11, 0x60, 0x3c, 0x00, 0xcc, 0x23, 0x01, 0x00, - 0x00, 0x28, 0x04, 0xd1, 0x02, 0x21, 0x23, 0x20, - 0xee, 0xf7, 0x66, 0xff, 0xf8, 0xbd, 0x00, 0x21, - 0x41, 0x60, 0x06, 0x60, 0x00, 0x2d, 0x01, 0xd0, - 0x68, 0x60, 0xf7, 0xe7, 0x01, 0x49, 0xc8, 0x51, - 0xf4, 0xe7, 0x00, 0x00, 0x68, 0x5b, 0x01, 0x00, - 0x70, 0xb5, 0x0e, 0x1c, 0x05, 0x1c, 0x00, 0x24, - 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, 0x23, 0x20, - 0xee, 0xf7, 0x4e, 0xff, 0x3c, 0x00, 0x08, 0x24, - 0x01, 0x00, 0x0d, 0x4b, 0xaa, 0x00, 0x98, 0x58, - 0x04, 0xe0, 0x01, 0x68, 0xb1, 0x42, 0x04, 0xd0, - 0x04, 0x1c, 0x40, 0x68, 0x00, 0x28, 0xf8, 0xd1, - 0x70, 0xbd, 0x00, 0x28, 0xfc, 0xd0, 0x00, 0x2c, - 0x41, 0x68, 0x01, 0xd1, 0x99, 0x50, 0x00, 0xe0, - 0x61, 0x60, 0x00, 0x21, 0x03, 0x4a, 0x01, 0x60, - 0x04, 0x3a, 0x11, 0x68, 0x41, 0x60, 0x10, 0x60, - 0x70, 0xbd, 0x68, 0x5b, 0x01, 0x00, 0x3c, 0x00, - 0x44, 0x24, 0x01, 0x00, 0xf3, 0xb5, 0x81, 0xb0, - 0x00, 0x28, 0x17, 0xd0, 0x01, 0x78, 0xff, 0x29, - 0x14, 0xd0, 0x45, 0x78, 0x44, 0x19, 0x02, 0x34, - 0x80, 0x27, 0x01, 0x3c, 0x26, 0x78, 0x01, 0x3d, - 0xbe, 0x43, 0x30, 0x1c, 0xf8, 0xf7, 0x82, 0xfc, - 0x01, 0x21, 0x81, 0x40, 0x02, 0x98, 0x01, 0x40, - 0x02, 0xd0, 0x3e, 0x43, 0x30, 0x1c, 0x20, 0x70, - 0x00, 0x2d, 0xee, 0xd1, 0xfe, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x24, 0x01, 0x00, 0x10, 0x4b, - 0x10, 0xb5, 0x59, 0x68, 0x41, 0x1a, 0x0f, 0x29, - 0x0d, 0xdc, 0x0e, 0x22, 0xd2, 0x43, 0x91, 0x42, - 0x09, 0xdb, 0x1a, 0x1c, 0x92, 0x68, 0x00, 0x29, - 0x01, 0xdd, 0x00, 0x2a, 0x03, 0xda, 0x00, 0x29, - 0x0d, 0xda, 0x00, 0x2a, 0x0b, 0xdc, 0x04, 0x33, - 0x03, 0xc3, 0xfd, 0xf7, 0x10, 0xfd, 0x04, 0x1c, - 0xfd, 0xf7, 0x13, 0xfd, 0x00, 0x28, 0x02, 0xd0, - 0x20, 0x1c, 0x3c, 0x00, 0xbc, 0x24, 0x01, 0x00, - 0xff, 0xf7, 0x92, 0xfe, 0x10, 0xbd, 0x00, 0x00, - 0x18, 0x63, 0x01, 0x00, 0xf8, 0xb5, 0x64, 0x4c, - 0x07, 0x1c, 0x60, 0x78, 0xa1, 0x78, 0x88, 0x42, - 0x0f, 0xd1, 0x08, 0x1c, 0xfd, 0xf7, 0xce, 0xf8, - 0xe0, 0x60, 0x04, 0x20, 0x60, 0x70, 0x0a, 0x22, - 0x1e, 0x21, 0x13, 0x20, 0x01, 0xf0, 0x70, 0xf8, - 0x00, 0x21, 0x60, 0x78, 0xf4, 0xf7, 0x24, 0xf9, - 0xf8, 0xbd, 0x04, 0x28, 0x3c, 0x00, 0xf8, 0x24, - 0x01, 0x00, 0x6e, 0xd1, 0x58, 0x4e, 0xfd, 0xf7, - 0xbc, 0xf8, 0x00, 0x90, 0x71, 0x78, 0x04, 0x1c, - 0x00, 0x20, 0x05, 0x29, 0x21, 0xd2, 0x01, 0xa3, - 0x5b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, 0x0b, 0x0f, - 0x14, 0x1a, 0x02, 0x00, 0x51, 0x48, 0x51, 0x49, - 0x60, 0x43, 0x41, 0x18, 0x7d, 0x20, 0xc0, 0x00, - 0xee, 0xf7, 0x87, 0xf8, 0x11, 0xe0, 0x87, 0x20, - 0x60, 0x43, 0x4d, 0x49, 0x02, 0xe0, 0x3c, 0x00, - 0x34, 0x25, 0x01, 0x00, 0x45, 0x20, 0x4d, 0x49, - 0x60, 0x43, 0x40, 0x18, 0x08, 0xe0, 0x4c, 0x48, - 0xcd, 0x21, 0x09, 0x01, 0x60, 0x43, 0x40, 0x1a, - 0x02, 0xe0, 0x46, 0x20, 0x60, 0x43, 0x82, 0x38, - 0x06, 0x06, 0x48, 0x48, 0x07, 0x21, 0x00, 0x79, - 0x36, 0x16, 0x08, 0x1a, 0x00, 0x19, 0x00, 0x90, - 0x68, 0x46, 0xfe, 0xf7, 0x5f, 0xfd, 0x38, 0x1c, - 0xfd, 0xf7, 0x2e, 0xfb, 0x00, 0x99, 0x42, 0x4a, - 0x3c, 0x00, 0x70, 0x25, 0x01, 0x00, 0x49, 0x00, - 0x51, 0x5a, 0x48, 0x43, 0x39, 0x49, 0x04, 0x1c, - 0x88, 0x78, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, - 0x1e, 0xd1, 0x35, 0x49, 0x00, 0x28, 0x03, 0xd1, - 0x3a, 0x48, 0x05, 0x78, 0x04, 0x20, 0x02, 0xe0, - 0x38, 0x48, 0x45, 0x78, 0x0c, 0x20, 0x30, 0x49, - 0xc9, 0x68, 0x49, 0x1b, 0x08, 0x18, 0x00, 0x90, - 0x68, 0x46, 0xfe, 0xf7, 0x3e, 0xfd, 0x00, 0x98, - 0x33, 0x49, 0x3c, 0x00, 0xac, 0x25, 0x01, 0x00, - 0x40, 0x00, 0x20, 0x31, 0x08, 0x5a, 0x2a, 0x49, - 0x44, 0x43, 0xc8, 0x68, 0xa8, 0x42, 0x01, 0xd9, - 0x01, 0x25, 0x00, 0xe0, 0x00, 0x25, 0x2e, 0x48, - 0x21, 0x18, 0x40, 0x00, 0xee, 0xf7, 0xa2, 0xf8, - 0x04, 0x1c, 0x00, 0x2d, 0x03, 0xd0, 0xfd, 0xf7, - 0xc3, 0xfa, 0x02, 0xe0, 0x3d, 0xe0, 0xfd, 0xf7, - 0xf3, 0xfa, 0x00, 0x2f, 0x02, 0xd1, 0x25, 0x48, - 0x0e, 0x38, 0x01, 0xe0, 0x3c, 0x00, 0xe8, 0x25, - 0x01, 0x00, 0x23, 0x48, 0x0a, 0x38, 0x01, 0x68, - 0x61, 0x1a, 0xcb, 0x1c, 0x01, 0xdb, 0x03, 0x29, - 0x00, 0xdd, 0x04, 0x60, 0x01, 0x68, 0xa1, 0x42, - 0x01, 0xd2, 0x01, 0x31, 0x04, 0xe0, 0xa1, 0x42, - 0x03, 0xd9, 0x00, 0x29, 0x01, 0xd0, 0x01, 0x39, - 0x01, 0x60, 0x01, 0x68, 0x38, 0x1c, 0xfd, 0xf7, - 0xc0, 0xfb, 0x10, 0x4c, 0x0a, 0x20, 0x60, 0x70, - 0x0a, 0x22, 0x13, 0x20, 0xa1, 0x68, 0x3c, 0x00, - 0x24, 0x26, 0x01, 0x00, 0x00, 0xf0, 0xd2, 0xff, - 0x60, 0x68, 0x00, 0xf0, 0xf7, 0xfa, 0x00, 0x28, - 0x00, 0xd1, 0x5f, 0xe7, 0x00, 0xf0, 0xba, 0xfb, - 0x11, 0x49, 0x00, 0x23, 0x40, 0x18, 0x0e, 0x49, - 0x60, 0x60, 0x1e, 0x39, 0xc8, 0x56, 0xb0, 0x42, - 0xf3, 0xd0, 0x0e, 0x70, 0x31, 0x1c, 0x00, 0x20, - 0xff, 0xf7, 0x84, 0xfe, 0x4e, 0xe7, 0xff, 0xf7, - 0x15, 0xfe, 0x4b, 0xe7, 0x7c, 0x78, 0x01, 0x00, - 0x3c, 0x00, 0x60, 0x26, 0x01, 0x00, 0x60, 0xd7, - 0xff, 0xff, 0x60, 0x8f, 0x01, 0x00, 0x54, 0x0b, - 0x00, 0x00, 0xc9, 0x09, 0x00, 0x00, 0x8e, 0xfe, - 0xff, 0xff, 0x0c, 0x5a, 0x01, 0x00, 0x12, 0x5a, - 0x01, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x40, 0x42, - 0x0f, 0x00, 0x30, 0xb5, 0x0c, 0x4b, 0xfe, 0x24, - 0x1b, 0x88, 0x04, 0x40, 0xc0, 0x07, 0x5d, 0x07, - 0x6d, 0x0f, 0xdb, 0x08, 0xc0, 0x0f, 0x9c, 0x42, - 0x0b, 0xd8, 0x3c, 0x00, 0x9c, 0x26, 0x01, 0x00, - 0xa2, 0x18, 0x04, 0x3a, 0x9a, 0x42, 0x07, 0xd3, - 0x1a, 0x1b, 0x89, 0x5c, 0x01, 0x22, 0xaa, 0x40, - 0x11, 0x40, 0x01, 0xd0, 0x02, 0x21, 0x08, 0x43, - 0x30, 0xbd, 0x00, 0x00, 0xfa, 0x60, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x28, 0x03, 0xd0, 0x01, 0x1c, - 0x14, 0x20, 0xf5, 0xf7, 0xff, 0xfa, 0x80, 0xbd, - 0xb0, 0xb5, 0x04, 0x1c, 0xf7, 0xf7, 0x08, 0xfd, - 0x13, 0x4d, 0x00, 0x28, 0x3c, 0x00, 0xd8, 0x26, - 0x01, 0x00, 0x1d, 0xd1, 0xa0, 0x07, 0x16, 0xd5, - 0x02, 0x20, 0x84, 0x43, 0x11, 0x48, 0x01, 0x22, - 0x2a, 0x62, 0x40, 0x68, 0x00, 0x28, 0x13, 0xd0, - 0xf2, 0xf7, 0x51, 0xf9, 0x00, 0x28, 0x0f, 0xd1, - 0x0b, 0x48, 0xe4, 0x30, 0x80, 0x7a, 0x01, 0x28, - 0x00, 0xd0, 0x00, 0x22, 0x11, 0x1c, 0x01, 0x20, - 0xf2, 0xf7, 0xa5, 0xf9, 0x04, 0xe0, 0x00, 0xf0, - 0x4e, 0xfb, 0xe8, 0x61, 0xf2, 0xf7, 0x3c, 0x00, - 0x14, 0x27, 0x01, 0x00, 0x6b, 0xf9, 0xa9, 0x6a, - 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, 0xed, 0xf7, - 0x5c, 0xfe, 0xb0, 0xbd, 0x60, 0x6c, 0x01, 0x00, - 0xb0, 0x57, 0x01, 0x00, 0x20, 0x48, 0xb0, 0xb5, - 0x81, 0x68, 0x01, 0x29, 0x04, 0xd1, 0x00, 0x78, - 0x00, 0x28, 0x01, 0xd1, 0xfd, 0xf7, 0x72, 0xfd, - 0x1b, 0x4d, 0x80, 0x3d, 0x2c, 0x1c, 0x70, 0x34, - 0x20, 0x78, 0x03, 0x38, 0x05, 0x28, 0x18, 0xd2, - 0x3c, 0x00, 0x50, 0x27, 0x01, 0x00, 0x01, 0xa3, - 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, 0x04, 0x15, - 0x27, 0x27, 0x27, 0x00, 0xfb, 0xf7, 0xf1, 0xff, - 0x60, 0x7b, 0x01, 0x1c, 0xff, 0x31, 0x61, 0x73, - 0x00, 0x28, 0xf7, 0xd1, 0x04, 0x20, 0x20, 0x70, - 0xa8, 0x89, 0xf8, 0xf7, 0xda, 0xf9, 0x01, 0x1c, - 0x00, 0x22, 0x0f, 0x20, 0x00, 0xf0, 0x25, 0xff, - 0xb0, 0xbd, 0xef, 0xf7, 0xce, 0xff, 0x6a, 0x21, - 0x49, 0x5b, 0x3c, 0x00, 0x8c, 0x27, 0x01, 0x00, - 0x88, 0x42, 0x0b, 0xd0, 0xe8, 0x89, 0xf8, 0xf7, - 0xcb, 0xf9, 0x01, 0x1c, 0x00, 0x23, 0x00, 0x22, - 0x0f, 0x20, 0x00, 0xf0, 0xf7, 0xff, 0x07, 0x20, - 0x20, 0x70, 0xb0, 0xbd, 0xfd, 0xf7, 0x3a, 0xfe, - 0xb0, 0xbd, 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, - 0xf0, 0xb5, 0x85, 0xb0, 0x04, 0x1c, 0x03, 0x80, - 0x18, 0x0c, 0x60, 0x80, 0x0d, 0x1c, 0x51, 0x78, - 0x10, 0x78, 0x09, 0x02, 0x3c, 0x00, 0xc8, 0x27, - 0x01, 0x00, 0x48, 0x40, 0xa0, 0x80, 0xd1, 0x78, - 0x90, 0x78, 0x09, 0x02, 0x48, 0x40, 0xe0, 0x80, - 0x51, 0x79, 0x10, 0x79, 0x09, 0x02, 0x48, 0x40, - 0x20, 0x81, 0x68, 0x46, 0x1a, 0x49, 0x14, 0x22, - 0xed, 0xf7, 0xe3, 0xfe, 0x00, 0x23, 0x00, 0x20, - 0xd9, 0x07, 0xc9, 0x0f, 0x8c, 0x46, 0x42, 0x00, - 0x56, 0x07, 0x76, 0x0f, 0x61, 0x46, 0x89, 0x19, - 0x49, 0x00, 0x6e, 0x5c, 0x49, 0x19, 0x3c, 0x00, - 0x04, 0x28, 0x01, 0x00, 0x49, 0x78, 0x6f, 0x46, - 0x09, 0x02, 0x4e, 0x40, 0x81, 0x00, 0x79, 0x58, - 0x0f, 0x4f, 0x49, 0x00, 0x61, 0x5a, 0x01, 0x30, - 0x4e, 0x40, 0x31, 0x06, 0x36, 0x0a, 0x76, 0x00, - 0xc9, 0x0d, 0x79, 0x5a, 0xf6, 0x19, 0x01, 0x27, - 0x7f, 0x02, 0xf6, 0x19, 0x36, 0x88, 0x71, 0x40, - 0xa6, 0x5a, 0x89, 0x19, 0xa1, 0x52, 0x05, 0x28, - 0xdc, 0xdb, 0x20, 0x89, 0xc0, 0x18, 0x01, 0x33, - 0x3c, 0x00, 0x40, 0x28, 0x01, 0x00, 0x08, 0x2b, - 0x20, 0x81, 0xd2, 0xdb, 0x05, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xd8, 0x56, 0x01, 0x00, 0xd8, 0x52, - 0x01, 0x00, 0xf0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, - 0x1e, 0x1c, 0x00, 0x20, 0x89, 0xb0, 0x41, 0x00, - 0x53, 0x5a, 0x01, 0x30, 0x06, 0xaf, 0x7b, 0x52, - 0x05, 0x28, 0xf8, 0xdb, 0x10, 0x89, 0x00, 0xab, - 0x3a, 0x49, 0x80, 0x19, 0x58, 0x84, 0x68, 0x46, - 0x18, 0x22, 0x3c, 0x00, 0x7c, 0x28, 0x01, 0x00, - 0xed, 0xf7, 0x98, 0xfe, 0x00, 0x20, 0x41, 0x00, - 0x0a, 0x19, 0x52, 0x78, 0x63, 0x5c, 0x6f, 0x46, - 0x12, 0x02, 0x53, 0x40, 0x82, 0x00, 0xba, 0x58, - 0x06, 0xaf, 0x52, 0x00, 0xba, 0x5a, 0x31, 0x4f, - 0x01, 0x30, 0x53, 0x40, 0x1a, 0x06, 0x1b, 0x0a, - 0x5b, 0x00, 0xd2, 0x0d, 0xba, 0x5a, 0xdb, 0x19, - 0x01, 0x27, 0x7f, 0x02, 0xdb, 0x19, 0x1b, 0x88, - 0x5a, 0x40, 0x06, 0xab, 0x3c, 0x00, 0xb8, 0x28, - 0x01, 0x00, 0x5b, 0x5a, 0xd2, 0x18, 0x06, 0xab, - 0x5a, 0x52, 0x06, 0x28, 0xde, 0xdb, 0x61, 0x7b, - 0x20, 0x7b, 0x00, 0xab, 0x09, 0x02, 0x48, 0x40, - 0x59, 0x8c, 0x48, 0x40, 0x41, 0x08, 0xc0, 0x03, - 0x48, 0x40, 0x19, 0x8b, 0x40, 0x18, 0x18, 0x83, - 0xe1, 0x7b, 0xa0, 0x7b, 0x09, 0x02, 0x48, 0x40, - 0x19, 0x8b, 0x48, 0x40, 0x41, 0x08, 0xc0, 0x03, - 0x48, 0x40, 0x59, 0x8b, 0x40, 0x18, 0x3c, 0x00, - 0xf4, 0x28, 0x01, 0x00, 0x58, 0x83, 0x02, 0x20, - 0x41, 0x00, 0x06, 0xaa, 0x8a, 0x18, 0x20, 0x3a, - 0xd2, 0x8b, 0x01, 0x30, 0x53, 0x08, 0xd2, 0x03, - 0x5a, 0x40, 0x06, 0xab, 0x5b, 0x5a, 0xd2, 0x18, - 0x06, 0xab, 0x5a, 0x52, 0x06, 0x28, 0xef, 0xdb, - 0x30, 0x0a, 0x28, 0x70, 0x70, 0x04, 0x40, 0x0e, - 0x20, 0x21, 0x08, 0x43, 0x68, 0x70, 0xae, 0x70, - 0x61, 0x78, 0x20, 0x78, 0x00, 0xab, 0x09, 0x02, - 0x3c, 0x00, 0x30, 0x29, 0x01, 0x00, 0x48, 0x40, - 0x59, 0x8c, 0x48, 0x40, 0xc0, 0x05, 0x00, 0x0e, - 0xe8, 0x70, 0x00, 0x20, 0x41, 0x00, 0x06, 0xaa, - 0x53, 0x5a, 0x4a, 0x19, 0x01, 0x30, 0x13, 0x71, - 0x06, 0xab, 0x59, 0x5a, 0x09, 0x0a, 0x51, 0x71, - 0x06, 0x28, 0xf3, 0xdb, 0x09, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xec, 0x56, 0x01, 0x00, 0xd8, 0x52, - 0x01, 0x00, 0xf0, 0xb5, 0x46, 0x68, 0x05, 0x1c, - 0x60, 0x30, 0x3c, 0x00, 0x6c, 0x29, 0x01, 0x00, - 0x85, 0xb0, 0x04, 0x90, 0x60, 0xe0, 0x68, 0x68, - 0x0c, 0x21, 0x07, 0x69, 0x00, 0x20, 0xee, 0xf7, - 0x2d, 0xfe, 0x70, 0x61, 0x01, 0x89, 0x04, 0x39, - 0x09, 0x04, 0x09, 0x0c, 0x01, 0x81, 0x70, 0x69, - 0x00, 0x68, 0x40, 0x18, 0x04, 0x21, 0xee, 0xf7, - 0x21, 0xfe, 0xf0, 0x61, 0x70, 0x69, 0x20, 0x21, - 0x04, 0x68, 0x04, 0x98, 0x04, 0x22, 0x40, 0x7b, - 0x80, 0x01, 0x08, 0x43, 0x3c, 0x00, 0xa8, 0x29, - 0x01, 0x00, 0xe0, 0x70, 0x28, 0x69, 0x40, 0x89, - 0xa0, 0x70, 0x28, 0x69, 0x40, 0x89, 0x00, 0x0a, - 0x20, 0x70, 0x29, 0x69, 0x0c, 0x31, 0xa0, 0x18, - 0xed, 0xf7, 0x9b, 0xfd, 0x20, 0x78, 0x20, 0x21, - 0x40, 0x06, 0x40, 0x0e, 0x08, 0x43, 0x60, 0x70, - 0x28, 0x69, 0x0a, 0x30, 0x01, 0x88, 0x01, 0x31, - 0x09, 0x04, 0x09, 0x0c, 0x01, 0x80, 0x04, 0xd1, - 0x28, 0x69, 0x0c, 0x30, 0x01, 0x68, 0x3c, 0x00, - 0xe4, 0x29, 0x01, 0x00, 0x01, 0x31, 0x01, 0x60, - 0x35, 0x62, 0x61, 0x79, 0x20, 0x79, 0x09, 0x02, - 0x40, 0x18, 0xa1, 0x79, 0x09, 0x04, 0x40, 0x18, - 0xe1, 0x79, 0x09, 0x06, 0x43, 0x18, 0x00, 0x93, - 0xa0, 0x78, 0x21, 0x78, 0x09, 0x02, 0x40, 0x18, - 0x04, 0x04, 0x24, 0x0c, 0x10, 0x20, 0xee, 0xf7, - 0x13, 0xff, 0xb0, 0x61, 0x28, 0x69, 0x3a, 0x1c, - 0x01, 0x68, 0x00, 0x9b, 0x01, 0xa8, 0x0a, 0x32, - 0x3c, 0x00, 0x20, 0x2a, 0x01, 0x00, 0xff, 0xf7, - 0xc8, 0xfe, 0x28, 0x69, 0x23, 0x1c, 0x01, 0x68, - 0xb0, 0x69, 0x01, 0xaa, 0xff, 0xf7, 0x11, 0xff, - 0x36, 0x68, 0x00, 0x2e, 0x9c, 0xd1, 0x03, 0x49, - 0x04, 0x48, 0x6a, 0x68, 0xf7, 0xf7, 0x63, 0xfb, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xfd, 0x6b, - 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x01, 0x38, - 0x07, 0x49, 0x40, 0x00, 0x09, 0x5c, 0x00, 0x29, - 0x06, 0xd0, 0x3c, 0x00, 0x5c, 0x2a, 0x01, 0x00, - 0x04, 0x49, 0x1c, 0x39, 0x08, 0x5c, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0xe6, 0x78, 0x01, 0x00, - 0xfe, 0xb5, 0x05, 0x1c, 0x00, 0x20, 0x02, 0x90, - 0x13, 0x48, 0x17, 0x1c, 0x00, 0x68, 0x0c, 0x1c, - 0x86, 0x78, 0x30, 0x1c, 0xfd, 0xf7, 0x28, 0xfa, - 0x00, 0x28, 0x01, 0xd1, 0x02, 0x98, 0xfe, 0xbd, - 0x00, 0x2d, 0x08, 0xd1, 0x3c, 0x00, 0x98, 0x2a, - 0x01, 0x00, 0x20, 0x68, 0x00, 0xab, 0x18, 0x71, - 0x60, 0x68, 0x58, 0x71, 0xa0, 0x68, 0x98, 0x71, - 0x03, 0x20, 0x38, 0x80, 0x29, 0x1c, 0x30, 0x1c, - 0x01, 0xaa, 0x00, 0xf0, 0x0e, 0xf8, 0x00, 0x2d, - 0xec, 0xd0, 0x00, 0xab, 0x19, 0x79, 0x21, 0x60, - 0x59, 0x79, 0x61, 0x60, 0x99, 0x79, 0xa1, 0x60, - 0x0c, 0x21, 0x39, 0x80, 0xe2, 0xe7, 0xf8, 0x6b, - 0x01, 0x00, 0xf8, 0xb5, 0x15, 0x1c, 0x3c, 0x00, - 0xd4, 0x2a, 0x01, 0x00, 0x42, 0x1e, 0x01, 0x38, - 0x47, 0x00, 0x3f, 0x18, 0x1f, 0x48, 0x3e, 0x18, - 0x00, 0x29, 0x06, 0xd0, 0x01, 0x24, 0x03, 0x22, - 0x31, 0x1c, 0x28, 0x1c, 0xed, 0xf7, 0x04, 0xfd, - 0x32, 0xe0, 0x68, 0x78, 0x01, 0x24, 0x00, 0x28, - 0x05, 0xd0, 0x29, 0x78, 0x08, 0x18, 0x01, 0x38, - 0x0e, 0x28, 0x00, 0xd9, 0x00, 0x24, 0x00, 0x2c, - 0x26, 0xd0, 0x00, 0x2a, 0x07, 0xd1, 0x2a, 0x21, - 0x3c, 0x00, 0x10, 0x2b, 0x01, 0x00, 0x12, 0x48, - 0xed, 0xf7, 0x9f, 0xfc, 0x1c, 0x21, 0x11, 0x48, - 0xed, 0xf7, 0x9b, 0xfc, 0x0f, 0x48, 0x03, 0x22, - 0x29, 0x1c, 0x30, 0x1c, 0xed, 0xf7, 0xe7, 0xfc, - 0x0c, 0x48, 0x71, 0x78, 0xc0, 0x5d, 0xb2, 0x78, - 0x00, 0x29, 0x0e, 0xd0, 0x00, 0x2a, 0x0c, 0xd0, - 0x01, 0x22, 0x43, 0x18, 0x08, 0x4d, 0x06, 0xe0, - 0x41, 0x00, 0x49, 0x19, 0x10, 0x39, 0x8a, 0x73, - 0xb7, 0x78, 0x3c, 0x00, 0x4c, 0x2b, 0x01, 0x00, - 0x01, 0x30, 0xcf, 0x73, 0x83, 0x42, 0xf6, 0xd8, - 0xfe, 0xf7, 0x60, 0xf8, 0x20, 0x1c, 0xf8, 0xbd, - 0xeb, 0x62, 0x01, 0x00, 0xca, 0x78, 0x01, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x1c, 0x48, 0x00, 0x23, - 0xc0, 0x56, 0x43, 0x1c, 0x32, 0xd1, 0xa8, 0x7a, - 0xf8, 0xf7, 0x0c, 0xf9, 0x00, 0x26, 0x00, 0x28, - 0x18, 0x4c, 0x08, 0xd0, 0xe8, 0x69, 0xe1, 0x6b, - 0x00, 0x29, 0x0b, 0xd1, 0x3c, 0x00, 0x88, 0x2b, - 0x01, 0x00, 0x66, 0x63, 0x01, 0x21, 0xe1, 0x63, - 0xa6, 0x63, 0x06, 0xe0, 0xa8, 0x69, 0xe1, 0x6b, - 0x00, 0x29, 0x02, 0xd0, 0x66, 0x63, 0xa6, 0x63, - 0xe6, 0x63, 0xa1, 0x6b, 0x01, 0x31, 0xa1, 0x63, - 0x82, 0x03, 0x01, 0xd5, 0x0e, 0x4a, 0x10, 0x43, - 0xe2, 0x6b, 0x00, 0x2a, 0x00, 0xd0, 0x40, 0x42, - 0x62, 0x6b, 0x10, 0x18, 0x60, 0x63, 0x08, 0x29, - 0x0b, 0xd1, 0x00, 0x28, 0x01, 0xdd, 0x3c, 0x00, - 0xc4, 0x2b, 0x01, 0x00, 0x01, 0x20, 0x03, 0xe0, - 0x00, 0x28, 0x03, 0xda, 0x00, 0x20, 0xc0, 0x43, - 0xef, 0xf7, 0x62, 0xfe, 0x66, 0x63, 0xa6, 0x63, - 0x70, 0xbd, 0x00, 0x00, 0xf4, 0x6b, 0x01, 0x00, - 0x84, 0x6a, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, - 0x0c, 0x21, 0x05, 0x4a, 0x41, 0x43, 0x89, 0x18, - 0x80, 0xb5, 0x89, 0x78, 0x00, 0x29, 0x01, 0xd1, - 0xf3, 0xf7, 0xf2, 0xfa, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x00, 0x20, - 0xf7, 0xf7, 0x03, 0xfa, 0x80, 0xbd, 0x80, 0xb5, - 0x01, 0x1c, 0x01, 0x20, 0xf7, 0xf7, 0xfd, 0xf9, - 0x80, 0xbd, 0x02, 0x49, 0x89, 0x68, 0x40, 0x1a, - 0xc0, 0x0f, 0x70, 0x47, 0x00, 0x00, 0x00, 0x01, - 0x07, 0x00, 0x02, 0x49, 0x89, 0x68, 0x08, 0x1a, - 0xc0, 0x17, 0x01, 0x30, 0x70, 0x47, 0x00, 0x01, - 0x07, 0x00, 0x3c, 0x00, 0x3c, 0x2c, 0x01, 0x00, - 0x05, 0x49, 0x4a, 0x68, 0x01, 0x23, 0x1a, 0x43, - 0x4a, 0x60, 0x8a, 0x68, 0x10, 0x18, 0x88, 0x60, - 0x48, 0x68, 0x98, 0x43, 0x48, 0x60, 0x70, 0x47, - 0x00, 0x01, 0x07, 0x00, 0x10, 0xb5, 0x15, 0x4b, - 0x00, 0x21, 0x0a, 0x01, 0x9a, 0x58, 0x00, 0x2a, - 0x17, 0xd1, 0x01, 0x24, 0x0a, 0x01, 0x9c, 0x50, - 0xd2, 0x18, 0x10, 0x73, 0x00, 0x23, 0x53, 0x73, - 0x02, 0x23, 0x01, 0x28, 0x3c, 0x00, 0x78, 0x2c, - 0x01, 0x00, 0x0e, 0x4a, 0x05, 0xd1, 0xc8, 0x00, - 0x80, 0x18, 0x10, 0x30, 0x02, 0x78, 0x9a, 0x43, - 0x04, 0xe0, 0xc8, 0x00, 0x80, 0x18, 0x10, 0x30, - 0x02, 0x78, 0x1a, 0x43, 0x02, 0x70, 0x02, 0xe0, - 0x01, 0x31, 0x08, 0x29, 0xe0, 0xdb, 0x08, 0x29, - 0x04, 0xd1, 0x01, 0x21, 0x99, 0x20, 0xee, 0xf7, - 0xfe, 0xfa, 0x03, 0x49, 0x08, 0x04, 0x00, 0x0c, - 0x10, 0xbd, 0xac, 0x73, 0x01, 0x00, 0x3c, 0x00, - 0xb4, 0x2c, 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, - 0xff, 0xff, 0x00, 0x00, 0xf7, 0xb5, 0x19, 0x4f, - 0x19, 0x4e, 0x0c, 0x1c, 0xc1, 0x00, 0xc9, 0x19, - 0xb2, 0x68, 0x10, 0x31, 0x81, 0xb0, 0x01, 0x3a, - 0x4a, 0x60, 0x0b, 0x78, 0x1d, 0x1c, 0x0d, 0x22, - 0x93, 0x43, 0x0b, 0x70, 0x01, 0x22, 0x82, 0x40, - 0x3a, 0x73, 0x12, 0x4b, 0x00, 0x01, 0x03, 0x9a, - 0xc0, 0x18, 0x82, 0x60, 0x10, 0x4a, 0x10, 0x1c, - 0x3c, 0x00, 0xf0, 0x2c, 0x01, 0x00, 0x20, 0x30, - 0x87, 0x79, 0x00, 0xab, 0x1f, 0x70, 0xc0, 0x79, - 0x58, 0x70, 0xb0, 0x68, 0x03, 0x30, 0x00, 0x23, - 0x26, 0x1a, 0x01, 0xd5, 0x04, 0x1c, 0x01, 0x23, - 0x4c, 0x60, 0x0d, 0x70, 0x00, 0x2b, 0x04, 0xd0, - 0x20, 0x1c, 0xff, 0xf7, 0x8a, 0xff, 0x00, 0x28, - 0xfa, 0xd0, 0x00, 0xab, 0x18, 0x88, 0xd0, 0x84, - 0xff, 0xbd, 0x00, 0x60, 0x07, 0x00, 0x00, 0x01, - 0x07, 0x00, 0x3c, 0x00, 0x2c, 0x2d, 0x01, 0x00, - 0xac, 0x73, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x30, 0xb5, 0x00, 0x20, 0xc0, 0x43, 0x0b, 0x4c, - 0x09, 0x4b, 0x00, 0x22, 0xd1, 0x00, 0x09, 0x19, - 0x0d, 0x7c, 0xed, 0x07, 0x07, 0xd5, 0x49, 0x69, - 0x9d, 0x68, 0x49, 0x1b, 0x00, 0xd5, 0x00, 0x21, - 0x81, 0x42, 0x00, 0xd2, 0x08, 0x1c, 0x01, 0x32, - 0x08, 0x2a, 0xef, 0xdb, 0x30, 0xbd, 0x00, 0x00, - 0x00, 0x01, 0x07, 0x00, 0x3c, 0x00, 0x68, 0x2d, - 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, 0xb0, 0xb5, - 0x08, 0x28, 0x0b, 0xd2, 0x08, 0x4d, 0x04, 0x01, - 0x29, 0x59, 0x00, 0x29, 0x04, 0xd0, 0x00, 0xf0, - 0x4a, 0xf8, 0x00, 0x20, 0x28, 0x51, 0xb0, 0xbd, - 0x02, 0x21, 0x00, 0xe0, 0x03, 0x21, 0x99, 0x20, - 0xee, 0xf7, 0x89, 0xfa, 0xb0, 0xbd, 0xac, 0x73, - 0x01, 0x00, 0x03, 0x49, 0x00, 0x01, 0x40, 0x18, - 0x41, 0x7b, 0x08, 0x22, 0x11, 0x43, 0x3c, 0x00, - 0xa4, 0x2d, 0x01, 0x00, 0x41, 0x73, 0x70, 0x47, - 0xac, 0x73, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68, - 0x70, 0x47, 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, - 0x70, 0xb5, 0x0b, 0x4e, 0x09, 0x4d, 0x00, 0x22, - 0xd0, 0x00, 0x84, 0x19, 0x20, 0x7c, 0xc0, 0x07, - 0x07, 0xd5, 0x60, 0x69, 0xff, 0xf7, 0x26, 0xff, - 0x00, 0x28, 0x02, 0xd0, 0xa8, 0x68, 0x32, 0x30, - 0x60, 0x61, 0x01, 0x32, 0x08, 0x2a, 0xef, 0xdb, - 0x3c, 0x00, 0xe0, 0x2d, 0x01, 0x00, 0x70, 0xbd, - 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x02, 0x4a, 0xc0, 0x00, 0x80, 0x18, - 0x01, 0x74, 0x70, 0x47, 0x00, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x04, 0x49, 0xc0, 0x00, 0x41, 0x18, - 0x08, 0x7c, 0x08, 0x23, 0x02, 0x1c, 0x9a, 0x43, - 0x0a, 0x74, 0x70, 0x47, 0x00, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x70, 0xb5, 0x08, 0x28, 0x17, 0xd2, - 0x0e, 0x49, 0x3c, 0x00, 0x1c, 0x2e, 0x01, 0x00, - 0x8a, 0x68, 0x0e, 0x4d, 0x01, 0x3a, 0xc1, 0x00, - 0x49, 0x19, 0x4a, 0x61, 0x0c, 0x4b, 0x9a, 0x79, - 0x10, 0x31, 0x0c, 0x78, 0x0d, 0x26, 0xb4, 0x43, - 0x0c, 0x70, 0x01, 0x21, 0x81, 0x40, 0x29, 0x73, - 0x9a, 0x71, 0x09, 0x4a, 0x07, 0x49, 0x00, 0x01, - 0x80, 0x18, 0x41, 0x60, 0x70, 0xbd, 0x05, 0x21, - 0x99, 0x20, 0xee, 0xf7, 0x29, 0xfa, 0x70, 0xbd, - 0x00, 0x01, 0x07, 0x00, 0x3c, 0x00, 0x58, 0x2e, - 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, 0x20, 0x10, - 0x07, 0x00, 0xd1, 0x75, 0x00, 0x00, 0xac, 0x73, - 0x01, 0x00, 0xf8, 0xb5, 0x9e, 0x46, 0x1a, 0x4b, - 0x94, 0x46, 0x9b, 0x68, 0x1a, 0x4c, 0xc2, 0x00, - 0x12, 0x19, 0x01, 0x3b, 0x53, 0x61, 0x15, 0x1c, - 0x18, 0x4c, 0xa6, 0x79, 0x2a, 0x1c, 0x10, 0x32, - 0x13, 0x78, 0x0d, 0x27, 0xbb, 0x43, 0x13, 0x70, - 0x01, 0x27, 0x12, 0x4b, 0x87, 0x40, 0x3c, 0x00, - 0x94, 0x2e, 0x01, 0x00, 0x1f, 0x73, 0xa6, 0x71, - 0x12, 0x4e, 0x00, 0x01, 0x80, 0x19, 0x63, 0x46, - 0x43, 0x60, 0x73, 0x46, 0x83, 0x60, 0x13, 0x78, - 0x40, 0x7b, 0xa6, 0x79, 0x01, 0x27, 0x18, 0x43, - 0x38, 0x43, 0x14, 0x35, 0x00, 0xab, 0x1e, 0x70, - 0xe4, 0x79, 0x5c, 0x70, 0x06, 0x4b, 0x9b, 0x68, - 0x03, 0x33, 0xcc, 0x1a, 0x00, 0xd5, 0x19, 0x1c, - 0x29, 0x60, 0x10, 0x70, 0x00, 0xab, 0x18, 0x88, - 0x3c, 0x00, 0xd0, 0x2e, 0x01, 0x00, 0x03, 0x4c, - 0x20, 0x3c, 0xe0, 0x84, 0xf8, 0xbd, 0x00, 0x01, - 0x07, 0x00, 0x00, 0x60, 0x07, 0x00, 0x20, 0x10, - 0x07, 0x00, 0xac, 0x73, 0x01, 0x00, 0x00, 0xb5, - 0x01, 0x1c, 0xff, 0xf7, 0x5e, 0xff, 0x42, 0x18, - 0x10, 0x1c, 0xff, 0xf7, 0x92, 0xfe, 0x00, 0x28, - 0xfa, 0xd0, 0x00, 0xbd, 0x00, 0x00, 0x89, 0x1a, - 0x40, 0x1a, 0x99, 0x18, 0x88, 0x42, 0x01, 0xd8, - 0x01, 0x20, 0x3c, 0x00, 0x0c, 0x2f, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0xf8, 0xb5, 0x0f, 0x1c, 0x04, 0x1c, 0x00, 0x28, - 0x01, 0xd1, 0xee, 0xf7, 0xef, 0xf9, 0x21, 0x1c, - 0x01, 0x20, 0xff, 0xf7, 0x19, 0xfa, 0x41, 0x20, - 0x00, 0x5d, 0x00, 0x28, 0x01, 0xd1, 0x00, 0x25, - 0x04, 0xe0, 0x02, 0x28, 0x01, 0xd1, 0x05, 0x25, - 0x00, 0xe0, 0x01, 0x25, 0xe0, 0x68, 0xee, 0xf7, - 0x29, 0xfb, 0xa6, 0x6b, 0x3c, 0x00, 0x48, 0x2f, - 0x01, 0x00, 0x00, 0x2e, 0x10, 0xd0, 0x00, 0x2f, - 0x06, 0xd0, 0x2f, 0x20, 0x02, 0x5d, 0x20, 0x6a, - 0x41, 0x6b, 0x28, 0x1c, 0xed, 0xf7, 0x44, 0xfa, - 0xa0, 0x69, 0x00, 0x28, 0x01, 0xd0, 0xee, 0xf7, - 0x46, 0xfc, 0x20, 0x6a, 0xee, 0xf7, 0x43, 0xfc, - 0x20, 0x1c, 0xee, 0xf7, 0x40, 0xfc, 0x30, 0x1c, - 0xf8, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0xc0, 0x6b, - 0x00, 0x28, 0x09, 0xd0, 0x20, 0x69, 0x3c, 0x00, - 0x84, 0x2f, 0x01, 0x00, 0x00, 0x8b, 0xee, 0xf7, - 0x55, 0xf9, 0x00, 0x28, 0x03, 0xd0, 0x21, 0x1c, - 0x06, 0x20, 0xff, 0xf7, 0xe3, 0xf9, 0x08, 0x4d, - 0x20, 0x1c, 0xa9, 0x6d, 0xff, 0xf7, 0xba, 0xff, - 0x00, 0x28, 0x07, 0xd0, 0xe8, 0x68, 0x01, 0x30, - 0xe8, 0x60, 0x28, 0x6a, 0x01, 0x38, 0x28, 0x62, - 0xfc, 0xf7, 0x78, 0xf8, 0xb0, 0xbd, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, - 0x3c, 0x00, 0xc0, 0x2f, 0x01, 0x00, 0xe1, 0x6d, - 0xff, 0xf7, 0xa7, 0xff, 0x00, 0x28, 0x04, 0xd0, - 0xe0, 0x69, 0x01, 0x38, 0xe0, 0x61, 0xfc, 0xf7, - 0x68, 0xf8, 0x10, 0xbd, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x0c, 0x23, 0x0c, 0x49, 0x58, 0x43, - 0x40, 0x18, 0x10, 0xb5, 0x44, 0x68, 0xa1, 0x68, - 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, 0xed, 0xf7, - 0xf3, 0xf9, 0xe0, 0x6b, 0x00, 0x28, 0x08, 0xd0, - 0x20, 0x69, 0x3c, 0x00, 0xfc, 0x2f, 0x01, 0x00, - 0x00, 0x8b, 0xee, 0xf7, 0x19, 0xf9, 0x00, 0x28, - 0x02, 0xd0, 0x20, 0x1c, 0xf9, 0xf7, 0x26, 0xf9, - 0x10, 0xbd, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, - 0xf8, 0xb5, 0x22, 0x49, 0x48, 0x68, 0x80, 0x00, - 0x06, 0xd4, 0x01, 0x20, 0x40, 0x07, 0x08, 0x60, - 0x4a, 0x69, 0x92, 0x00, 0x00, 0xd4, 0x48, 0x60, - 0x1d, 0x4f, 0x78, 0x7e, 0xc3, 0x06, 0x01, 0x20, - 0x02, 0x1c, 0xdb, 0x0e, 0x3c, 0x00, 0x38, 0x30, - 0x01, 0x00, 0x9a, 0x40, 0x0a, 0x60, 0x79, 0x69, - 0x8c, 0x68, 0x8c, 0x60, 0x21, 0x07, 0x89, 0x0f, - 0x09, 0xd0, 0x21, 0x07, 0x04, 0xd5, 0x0b, 0x21, - 0x9e, 0x20, 0xee, 0xf7, 0x28, 0xf9, 0x00, 0xe0, - 0x78, 0x64, 0x0c, 0x20, 0x84, 0x43, 0x12, 0x48, - 0x3d, 0x68, 0x06, 0x5d, 0x6c, 0x68, 0x2c, 0x34, - 0x06, 0xe0, 0xa0, 0x68, 0x00, 0x68, 0xa0, 0x60, - 0xe9, 0x68, 0x28, 0x1c, 0xed, 0xf7, 0x3c, 0x00, - 0x74, 0x30, 0x01, 0x00, 0xb2, 0xf9, 0x01, 0x3e, - 0xf6, 0xd2, 0xa0, 0x68, 0x80, 0x68, 0x00, 0x28, - 0x0d, 0xd0, 0x40, 0x89, 0x00, 0x28, 0x0a, 0xd0, - 0x78, 0x6c, 0x00, 0x28, 0x07, 0xd1, 0x78, 0x69, - 0x80, 0x68, 0x80, 0x07, 0x03, 0xd1, 0x0c, 0x21, - 0x9e, 0x20, 0xee, 0xf7, 0x03, 0xf9, 0xf8, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0xcc, 0x6d, 0x01, 0x00, - 0xb4, 0x44, 0x01, 0x00, 0x09, 0x49, 0x80, 0xb5, - 0x3c, 0x00, 0xb0, 0x30, 0x01, 0x00, 0x08, 0x7e, - 0xc2, 0x06, 0xd2, 0x0e, 0x01, 0x20, 0x90, 0x40, - 0x07, 0x4a, 0x10, 0x60, 0x00, 0x20, 0x0a, 0x69, - 0xc0, 0x43, 0x90, 0x60, 0x08, 0x68, 0x24, 0x31, - 0x06, 0xc9, 0x03, 0x69, 0xed, 0xf7, 0x86, 0xf9, - 0x80, 0xbd, 0xcc, 0x6d, 0x01, 0x00, 0x00, 0x10, - 0x07, 0x00, 0xf8, 0xb5, 0x44, 0x68, 0x06, 0x1c, - 0x2c, 0x34, 0x20, 0x68, 0x0d, 0x1c, 0x80, 0x68, - 0x00, 0x90, 0x3c, 0x00, 0xec, 0x30, 0x01, 0x00, - 0x00, 0x28, 0x00, 0xd0, 0xc5, 0x60, 0x20, 0x68, - 0x00, 0x68, 0x20, 0x60, 0x40, 0x68, 0x00, 0x28, - 0x03, 0xd0, 0x0a, 0x21, 0x9e, 0x20, 0xee, 0xf7, - 0xcf, 0xf8, 0x20, 0x68, 0x45, 0x60, 0x28, 0x1c, - 0x02, 0xe0, 0x00, 0x22, 0x42, 0x60, 0x08, 0x1c, - 0xc1, 0x68, 0x00, 0x29, 0xf9, 0xd1, 0x71, 0x68, - 0x60, 0x27, 0x0b, 0x1c, 0x40, 0x33, 0x9c, 0x46, - 0x9b, 0x78, 0xca, 0x7e, 0x3c, 0x00, 0x28, 0x31, - 0x01, 0x00, 0x5b, 0x01, 0x12, 0x07, 0x12, 0x0f, - 0x3b, 0x40, 0x1a, 0x43, 0x8b, 0x8f, 0xff, 0x27, - 0x3f, 0x04, 0x1b, 0x04, 0x3b, 0x40, 0x1a, 0x43, - 0x90, 0x23, 0x1a, 0x43, 0x42, 0x60, 0x63, 0x46, - 0x9a, 0x78, 0x01, 0x32, 0xd2, 0x07, 0xd2, 0x0f, - 0x9a, 0x70, 0x89, 0x6b, 0xc1, 0x60, 0x21, 0x68, - 0x88, 0x60, 0x00, 0x98, 0x00, 0x28, 0x01, 0xd0, - 0x00, 0x98, 0xc5, 0x60, 0x0a, 0x4f, 0x3c, 0x00, - 0x64, 0x31, 0x01, 0x00, 0xbd, 0x79, 0xa0, 0x69, - 0x00, 0x28, 0x0c, 0xd0, 0x00, 0x22, 0xa2, 0x61, - 0x74, 0x68, 0x60, 0x69, 0xef, 0xf7, 0x2e, 0xff, - 0xe0, 0x6a, 0x61, 0x69, 0x40, 0x68, 0x48, 0x60, - 0x61, 0x69, 0x01, 0x20, 0x08, 0x60, 0xbd, 0x71, - 0xf8, 0xbd, 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, - 0xfe, 0xb5, 0x44, 0x68, 0x0f, 0x1c, 0x01, 0x94, - 0x2c, 0x34, 0x20, 0x1c, 0x12, 0x30, 0x02, 0x90, - 0x3c, 0x00, 0xa0, 0x31, 0x01, 0x00, 0x2c, 0xe0, - 0x0c, 0x20, 0xee, 0xf7, 0x00, 0xfb, 0x05, 0x1c, - 0x60, 0x68, 0x00, 0x28, 0x1d, 0xd1, 0x02, 0x98, - 0x00, 0x21, 0x00, 0x90, 0x00, 0x20, 0xee, 0xf7, - 0x0e, 0xfa, 0x06, 0x1c, 0x00, 0x98, 0x04, 0x21, - 0xee, 0xf7, 0x09, 0xfa, 0x01, 0x1c, 0x01, 0x98, - 0xc0, 0x7e, 0x00, 0x07, 0x00, 0x0f, 0xd0, 0x30, - 0x70, 0x60, 0x01, 0x98, 0xc0, 0x7e, 0x00, 0x07, - 0x00, 0x0f, 0x3c, 0x00, 0xdc, 0x31, 0x01, 0x00, - 0xf0, 0x30, 0x48, 0x60, 0x30, 0x1c, 0xee, 0xf7, - 0x19, 0xf9, 0x65, 0x60, 0xe6, 0x60, 0x01, 0xe0, - 0x20, 0x68, 0x05, 0x60, 0x60, 0x68, 0x28, 0x60, - 0x25, 0x60, 0x00, 0x20, 0x68, 0x60, 0xa8, 0x60, - 0x38, 0x1c, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, - 0x39, 0x1c, 0x07, 0x1c, 0x00, 0x29, 0xca, 0xd1, - 0x60, 0x68, 0xa0, 0x60, 0xfe, 0xbd, 0x00, 0x00, - 0xff, 0xb5, 0x05, 0x1c, 0x3c, 0x00, 0x18, 0x32, - 0x01, 0x00, 0x08, 0x1c, 0x00, 0x26, 0x81, 0xb0, - 0xf4, 0xf7, 0x2f, 0xfe, 0x04, 0x1c, 0x02, 0xd0, - 0x60, 0x68, 0xff, 0x28, 0x01, 0xd1, 0x06, 0x26, - 0x28, 0xe0, 0x21, 0x1c, 0x20, 0x31, 0x0a, 0x78, - 0x01, 0x2a, 0x01, 0xd1, 0x03, 0x26, 0x21, 0xe0, - 0x01, 0x27, 0x25, 0x60, 0x0f, 0x70, 0x11, 0xc5, - 0x1d, 0x48, 0x08, 0x3d, 0x68, 0x61, 0x03, 0x98, - 0x6a, 0x46, 0xe8, 0x60, 0x04, 0x98, 0x3c, 0x00, - 0x54, 0x32, 0x01, 0x00, 0x28, 0x61, 0x1a, 0x48, - 0xa8, 0x61, 0x1a, 0x48, 0xe8, 0x61, 0x1a, 0x48, - 0x28, 0x62, 0x1a, 0x48, 0x68, 0x62, 0x20, 0x7e, - 0xa1, 0x68, 0xed, 0xf7, 0xb3, 0xfe, 0x00, 0x28, - 0x06, 0xd1, 0x60, 0x7e, 0xe1, 0x68, 0x6a, 0x46, - 0xed, 0xf7, 0xac, 0xfe, 0x00, 0x28, 0x07, 0xd0, - 0x04, 0x26, 0x31, 0x1c, 0x9e, 0x20, 0xee, 0xf7, - 0x0d, 0xf8, 0x30, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, - 0x3c, 0x00, 0x90, 0x32, 0x01, 0x00, 0x6a, 0x46, - 0x0f, 0x49, 0x1d, 0x20, 0xed, 0xf7, 0x9d, 0xfe, - 0x01, 0x21, 0x0d, 0x48, 0x49, 0x07, 0x01, 0x60, - 0x22, 0x7e, 0x3b, 0x1c, 0xd2, 0x06, 0xd2, 0x0e, - 0x93, 0x40, 0x43, 0x60, 0x62, 0x7e, 0xd2, 0x06, - 0xd2, 0x0e, 0x97, 0x40, 0x47, 0x60, 0x41, 0x60, - 0xe6, 0xe7, 0x31, 0x33, 0x01, 0x00, 0xd9, 0x32, - 0x01, 0x00, 0x91, 0x31, 0x01, 0x00, 0xdd, 0x30, - 0x01, 0x00, 0x3c, 0x00, 0xcc, 0x32, 0x01, 0x00, - 0xfd, 0x32, 0x01, 0x00, 0x71, 0x33, 0x01, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x42, 0x68, 0x2c, 0x32, - 0x50, 0x68, 0x43, 0x68, 0x0b, 0x60, 0x81, 0x68, - 0x4b, 0x89, 0x0b, 0x81, 0x83, 0x68, 0x00, 0x21, - 0xd9, 0x60, 0x41, 0x60, 0x81, 0x60, 0x00, 0x68, - 0x50, 0x60, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0x70, 0xb5, 0x42, 0x68, 0xff, 0x26, 0x91, 0x87, - 0x10, 0x6b, 0x0c, 0x04, 0x3c, 0x00, 0x08, 0x33, - 0x01, 0x00, 0x05, 0x1c, 0x36, 0x04, 0x34, 0x40, - 0x43, 0x68, 0x59, 0x68, 0xb1, 0x43, 0x21, 0x43, - 0x59, 0x60, 0x00, 0x68, 0xa8, 0x42, 0xf7, 0xd1, - 0x10, 0x6b, 0x51, 0x69, 0x40, 0x68, 0x48, 0x60, - 0x51, 0x69, 0x01, 0x20, 0x08, 0x60, 0x70, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x43, 0x68, 0x08, 0x1c, - 0x59, 0x62, 0x9a, 0x62, 0x00, 0x25, 0x0a, 0xe0, - 0x45, 0x81, 0xc4, 0x68, 0x2a, 0x1c, 0x3c, 0x00, - 0x44, 0x33, 0x01, 0x00, 0x00, 0x2c, 0x03, 0xd1, - 0x9a, 0x7e, 0x12, 0x07, 0x12, 0x0f, 0x10, 0x32, - 0x42, 0x60, 0x20, 0x1c, 0x00, 0x28, 0xf2, 0xd1, - 0x18, 0x69, 0x41, 0x60, 0x19, 0x69, 0x01, 0x20, - 0x08, 0x60, 0x02, 0x48, 0x00, 0x68, 0xed, 0xf7, - 0x37, 0xf8, 0xb0, 0xbd, 0x5c, 0x5b, 0x01, 0x00, - 0x01, 0x20, 0x05, 0x49, 0x40, 0x07, 0x80, 0xb5, - 0x88, 0x60, 0x04, 0x48, 0x01, 0x68, 0x0d, 0x20, - 0x3c, 0x00, 0x80, 0x33, 0x01, 0x00, 0xfe, 0xf7, - 0xe6, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0xc4, 0x60, 0x01, 0x00, 0xf8, 0xb5, - 0x0e, 0x4f, 0x0c, 0x4e, 0x00, 0x24, 0x48, 0x20, - 0x60, 0x43, 0xc5, 0x19, 0x48, 0x21, 0x28, 0x1c, - 0xed, 0xf7, 0x7b, 0xf8, 0x1c, 0x20, 0x60, 0x43, - 0x81, 0x19, 0x28, 0x1d, 0x1c, 0x22, 0xed, 0xf7, - 0xfe, 0xf8, 0x1c, 0x23, 0xe8, 0x56, 0x05, 0x49, - 0xfb, 0xf7, 0x3c, 0x00, 0xbc, 0x33, 0x01, 0x00, - 0xcd, 0xf8, 0x01, 0x34, 0x01, 0x2c, 0xe9, 0xd3, - 0xf8, 0xbd, 0x00, 0x00, 0xb8, 0x44, 0x01, 0x00, - 0xcc, 0x6d, 0x01, 0x00, 0x15, 0x32, 0x01, 0x00, - 0xff, 0xb5, 0x05, 0x1c, 0x0a, 0x30, 0x06, 0x1c, - 0x81, 0xb0, 0xf2, 0xf7, 0xdd, 0xf8, 0x18, 0x4f, - 0x04, 0x1c, 0x39, 0x88, 0xef, 0xf7, 0xbc, 0xfc, - 0x32, 0x88, 0x78, 0x68, 0x02, 0x80, 0x72, 0x88, - 0x02, 0x30, 0x02, 0x80, 0x3c, 0x00, 0xf8, 0x33, - 0x01, 0x00, 0xb1, 0x88, 0x12, 0x4e, 0x41, 0x80, - 0x28, 0x88, 0x08, 0x36, 0x40, 0x05, 0x00, 0x28, - 0x05, 0xda, 0x69, 0x88, 0x03, 0x9a, 0x20, 0x1c, - 0xf7, 0xf7, 0x01, 0xfd, 0x00, 0xe0, 0x00, 0x20, - 0x70, 0x80, 0xf8, 0xf7, 0x5e, 0xfc, 0x01, 0x21, - 0x09, 0x03, 0x00, 0x28, 0x30, 0x88, 0x01, 0xd0, - 0x88, 0x43, 0x00, 0xe0, 0x08, 0x43, 0x30, 0x80, - 0x05, 0x48, 0x00, 0x22, 0x00, 0x21, 0x3c, 0x00, - 0x34, 0x34, 0x01, 0x00, 0x14, 0x30, 0xef, 0xf7, - 0x65, 0xfc, 0x20, 0x1c, 0xf9, 0xf7, 0x74, 0xf8, - 0x05, 0xb0, 0xf0, 0xbd, 0xb0, 0x7a, 0x01, 0x00, - 0x10, 0xb5, 0x0e, 0x4c, 0x60, 0x68, 0xf8, 0xf7, - 0x95, 0xf9, 0x20, 0x68, 0x00, 0x6a, 0x00, 0x28, - 0x13, 0xd1, 0xf8, 0xf7, 0xbf, 0xfc, 0x00, 0x28, - 0x08, 0xd0, 0x21, 0x68, 0x01, 0x20, 0x08, 0x62, - 0x1f, 0x21, 0x00, 0x22, 0x83, 0x20, 0x00, 0xf0, - 0x3c, 0x00, 0x70, 0x34, 0x01, 0x00, 0x9f, 0xf9, - 0x02, 0xe0, 0x60, 0x68, 0xf8, 0xf7, 0x21, 0xfa, - 0xff, 0xf7, 0x97, 0xfc, 0x21, 0x68, 0x08, 0x61, - 0x10, 0xbd, 0x14, 0x7a, 0x01, 0x00, 0xfe, 0xb5, - 0x1b, 0x4e, 0x0f, 0x1c, 0x1d, 0x1c, 0x14, 0x1c, - 0xb0, 0x60, 0x08, 0x1c, 0xf7, 0xf7, 0x2b, 0xff, - 0xb0, 0x80, 0x34, 0x73, 0x35, 0x62, 0x38, 0x1c, - 0x01, 0xaa, 0x02, 0xa9, 0xf7, 0xf7, 0x25, 0xff, - 0x00, 0xab, 0x3c, 0x00, 0xac, 0x34, 0x01, 0x00, - 0x18, 0x7a, 0x01, 0x28, 0x18, 0xd1, 0x18, 0x79, - 0x0b, 0x28, 0x08, 0xd1, 0x30, 0x7f, 0x24, 0x23, - 0x0f, 0x49, 0x58, 0x43, 0x40, 0x18, 0x80, 0x68, - 0xec, 0xf7, 0x88, 0xff, 0xfe, 0xbd, 0x00, 0xab, - 0x18, 0x79, 0x0a, 0x28, 0x08, 0xd1, 0xf7, 0xf7, - 0x39, 0xfd, 0x07, 0x1c, 0x29, 0x1c, 0x20, 0x1c, - 0xf7, 0xf7, 0x16, 0xfd, 0x38, 0x18, 0xb0, 0x80, - 0x30, 0x7f, 0x24, 0x23, 0x3c, 0x00, 0xe8, 0x34, - 0x01, 0x00, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x40, 0x68, 0xec, 0xf7, 0x72, 0xff, 0xe8, 0xe7, - 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, - 0x01, 0x00, 0xb0, 0xb5, 0xff, 0xf7, 0x53, 0xfc, - 0x04, 0x1c, 0xfb, 0xf7, 0xfc, 0xfa, 0x0c, 0x4d, - 0x29, 0x68, 0x09, 0x69, 0x09, 0x1b, 0x0c, 0x1a, - 0x02, 0x21, 0x1f, 0x20, 0x00, 0xf0, 0x8b, 0xf8, - 0x14, 0x2c, 0x06, 0xdd, 0x02, 0x22, 0x3c, 0x00, - 0x24, 0x35, 0x01, 0x00, 0x21, 0x1c, 0x1f, 0x20, - 0x00, 0xf0, 0x50, 0xf8, 0x01, 0x20, 0xb0, 0xbd, - 0x29, 0x68, 0x01, 0x20, 0x89, 0x6a, 0x00, 0x29, - 0xf9, 0xd0, 0x00, 0x20, 0xb0, 0xbd, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4d, - 0x07, 0x1c, 0xae, 0x79, 0x01, 0x21, 0x19, 0x4c, - 0x00, 0x20, 0x22, 0x68, 0x00, 0x2a, 0x14, 0xd1, - 0xae, 0x71, 0xa2, 0x68, 0xd0, 0x68, 0x06, 0xca, - 0x3c, 0x00, 0x60, 0x35, 0x01, 0x00, 0xec, 0xf7, - 0x3c, 0xff, 0xae, 0x79, 0x00, 0x21, 0x13, 0x4a, - 0x50, 0x69, 0x01, 0x30, 0x50, 0x61, 0xa0, 0x68, - 0x80, 0x68, 0xa0, 0x60, 0x62, 0x68, 0x90, 0x42, - 0x06, 0xd1, 0x01, 0x20, 0x20, 0x60, 0x03, 0xe0, - 0x01, 0x30, 0x0c, 0x34, 0x03, 0x28, 0xe3, 0xdb, - 0x00, 0x2f, 0x08, 0xd1, 0x00, 0x29, 0x0a, 0xd0, - 0x0a, 0x48, 0x40, 0x68, 0x00, 0x28, 0x06, 0xd0, - 0xfa, 0xf7, 0x3c, 0x00, 0x9c, 0x35, 0x01, 0x00, - 0xf5, 0xff, 0x03, 0xe0, 0x01, 0x2f, 0x03, 0xd0, - 0x00, 0x29, 0x01, 0xd1, 0xae, 0x71, 0xce, 0xe7, - 0xae, 0x71, 0xf8, 0xbd, 0x20, 0x10, 0x07, 0x00, - 0x18, 0xd9, 0x01, 0x00, 0xa8, 0x60, 0x01, 0x00, - 0x70, 0x5d, 0x01, 0x00, 0x80, 0xb5, 0x01, 0x23, - 0xf5, 0xf7, 0x7c, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x23, 0xf5, 0xf7, 0x76, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x35, - 0x01, 0x00, 0xf8, 0xb5, 0x13, 0x4b, 0x00, 0x24, - 0x1b, 0x88, 0x98, 0x42, 0x1b, 0xd2, 0x11, 0x4b, - 0xc0, 0x00, 0xc0, 0x18, 0x45, 0x68, 0x06, 0x68, - 0x28, 0x68, 0x00, 0x28, 0x17, 0xd1, 0x0e, 0x4f, - 0xa8, 0x68, 0x43, 0x68, 0xb3, 0x42, 0x09, 0xd1, - 0xc3, 0x68, 0x8b, 0x42, 0x06, 0xd1, 0x03, 0x68, - 0x93, 0x42, 0x01, 0xd0, 0x53, 0x1c, 0x01, 0xd1, - 0x01, 0x24, 0x47, 0x60, 0x80, 0x68, 0x3c, 0x00, - 0x14, 0x36, 0x01, 0x00, 0x6b, 0x68, 0x83, 0x42, - 0xee, 0xd1, 0x03, 0xe0, 0x01, 0x21, 0x80, 0x20, - 0xed, 0xf7, 0x40, 0xfe, 0x20, 0x1c, 0xf8, 0xbd, - 0x56, 0x57, 0x01, 0x00, 0x84, 0x5d, 0x01, 0x00, - 0x29, 0xe3, 0x00, 0x00, 0xf8, 0xb5, 0x17, 0x4f, - 0x0a, 0x1c, 0xbe, 0x79, 0x16, 0x4d, 0x00, 0x23, - 0x6c, 0x68, 0x07, 0xe0, 0x21, 0x68, 0x91, 0x42, - 0x02, 0xd1, 0x21, 0x79, 0x81, 0x42, 0x04, 0xd0, - 0x3c, 0x00, 0x50, 0x36, 0x01, 0x00, 0x23, 0x1c, - 0xe4, 0x68, 0x00, 0x2c, 0xf5, 0xd1, 0x17, 0xe0, - 0x00, 0x2c, 0x15, 0xd0, 0x00, 0x2b, 0x0d, 0xd1, - 0xe3, 0x68, 0x0d, 0x48, 0x6b, 0x60, 0x00, 0x88, - 0x00, 0x2b, 0x02, 0xd1, 0xff, 0xf7, 0xd1, 0xfb, - 0x06, 0xe0, 0x0a, 0x4a, 0x99, 0x68, 0xff, 0xf7, - 0xf6, 0xfb, 0x01, 0xe0, 0xe0, 0x68, 0xd8, 0x60, - 0x28, 0x68, 0xe0, 0x60, 0x2c, 0x60, 0x02, 0xe0, - 0x01, 0x21, 0x3c, 0x00, 0x8c, 0x36, 0x01, 0x00, - 0xff, 0xf7, 0xa4, 0xff, 0xbe, 0x71, 0xf8, 0xbd, - 0x20, 0x10, 0x07, 0x00, 0x7c, 0x5d, 0x01, 0x00, - 0x2c, 0x74, 0x01, 0x00, 0x21, 0x38, 0x01, 0x00, - 0x70, 0xb5, 0x09, 0x4e, 0xb5, 0x79, 0xf9, 0xf7, - 0xaf, 0xfe, 0x04, 0x1c, 0x09, 0xd0, 0x20, 0x1c, - 0xed, 0xf7, 0x0c, 0xfb, 0x05, 0x49, 0x8a, 0x68, - 0x80, 0x18, 0x88, 0x60, 0x08, 0x68, 0x01, 0x30, - 0x08, 0x60, 0xb5, 0x71, 0x3c, 0x00, 0xc8, 0x36, - 0x01, 0x00, 0x20, 0x1c, 0x70, 0xbd, 0x20, 0x10, - 0x07, 0x00, 0xa8, 0x60, 0x01, 0x00, 0x09, 0x48, - 0x80, 0xb5, 0x40, 0x68, 0x02, 0x1c, 0x0b, 0xe0, - 0x01, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x82, 0x42, - 0x04, 0xd0, 0x81, 0x68, 0x05, 0x48, 0x00, 0x88, - 0xff, 0xf7, 0xe5, 0xfa, 0x80, 0xbd, 0xc0, 0x68, - 0x00, 0x28, 0xf1, 0xd1, 0x80, 0xbd, 0x7c, 0x5d, - 0x01, 0x00, 0x2c, 0x74, 0x01, 0x00, 0x3c, 0x00, - 0x04, 0x37, 0x01, 0x00, 0x05, 0x48, 0x80, 0xb5, - 0x42, 0x68, 0x00, 0x2a, 0x04, 0xd0, 0x04, 0x48, - 0x00, 0x88, 0x91, 0x68, 0xff, 0xf7, 0xd2, 0xfa, - 0x80, 0xbd, 0x00, 0x00, 0x7c, 0x5d, 0x01, 0x00, - 0x2c, 0x74, 0x01, 0x00, 0x05, 0x48, 0x01, 0x68, - 0x00, 0x29, 0x04, 0xd0, 0xc0, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x18, 0xd9, 0x01, 0x00, - 0x3c, 0x00, 0x40, 0x37, 0x01, 0x00, 0x80, 0xb5, - 0xf6, 0xf7, 0xd1, 0xfa, 0x80, 0xbd, 0x13, 0x1c, - 0x0d, 0x4a, 0xb0, 0xb5, 0x12, 0x88, 0x90, 0x42, - 0x0f, 0xd2, 0x03, 0x29, 0x0d, 0xd2, 0x0a, 0x4a, - 0xc0, 0x00, 0x14, 0x58, 0x0a, 0x4d, 0xac, 0x42, - 0x07, 0xd1, 0x13, 0x50, 0x0c, 0x23, 0x59, 0x43, - 0x08, 0x4b, 0xc9, 0x18, 0x80, 0x18, 0x41, 0x60, - 0xb0, 0xbd, 0x02, 0x21, 0x80, 0x20, 0xed, 0xf7, - 0x94, 0xfd, 0x3c, 0x00, 0x7c, 0x37, 0x01, 0x00, - 0xb0, 0xbd, 0x00, 0x00, 0x56, 0x57, 0x01, 0x00, - 0x84, 0x5d, 0x01, 0x00, 0x09, 0xa0, 0x00, 0x00, - 0x18, 0xd9, 0x01, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, - 0x1e, 0x1c, 0x15, 0x1c, 0x04, 0x1c, 0x11, 0x1c, - 0xff, 0xf7, 0x4a, 0xff, 0x33, 0x1c, 0x2a, 0x1c, - 0x39, 0x1c, 0x20, 0x1c, 0xf4, 0xf7, 0x8a, 0xff, - 0xf8, 0xbd, 0x00, 0x00, 0xf7, 0xb5, 0x94, 0x46, - 0xff, 0x29, 0x21, 0xd0, 0x3c, 0x00, 0xb8, 0x37, - 0x01, 0x00, 0x15, 0x48, 0x00, 0x88, 0x81, 0x42, - 0x21, 0xd2, 0x14, 0x4a, 0x15, 0x4e, 0xc8, 0x00, - 0x85, 0x18, 0xb4, 0x79, 0x68, 0x68, 0x02, 0x68, - 0x00, 0x2a, 0x03, 0xd1, 0x03, 0x1d, 0x0c, 0xcb, - 0x9a, 0x42, 0x11, 0xd0, 0x43, 0x68, 0x9a, 0x68, - 0x42, 0x60, 0x0e, 0x4a, 0x17, 0x69, 0x01, 0x37, - 0x17, 0x61, 0xb4, 0x71, 0x00, 0x22, 0x02, 0x60, - 0x00, 0x98, 0xd8, 0x60, 0x60, 0x46, 0x3c, 0x00, - 0xf4, 0x37, 0x01, 0x00, 0x18, 0x60, 0x19, 0x74, - 0x28, 0x68, 0x58, 0x60, 0xfe, 0xbd, 0xb4, 0x71, - 0x06, 0x21, 0x00, 0xe0, 0x07, 0x21, 0x80, 0x20, - 0xed, 0xf7, 0x4c, 0xfd, 0xf6, 0xe7, 0x00, 0x00, - 0x56, 0x57, 0x01, 0x00, 0x84, 0x5d, 0x01, 0x00, - 0x20, 0x10, 0x07, 0x00, 0xa8, 0x60, 0x01, 0x00, - 0xb0, 0xb5, 0x14, 0x4d, 0x6c, 0x68, 0x00, 0x2c, - 0x01, 0xd0, 0x84, 0x42, 0x04, 0xd0, 0x0c, 0x21, - 0x3c, 0x00, 0x30, 0x38, 0x01, 0x00, 0x80, 0x20, - 0xed, 0xf7, 0x37, 0xfd, 0xb0, 0xbd, 0xff, 0xf7, - 0xb8, 0xfa, 0xa1, 0x68, 0x40, 0x1a, 0x0d, 0x49, - 0x88, 0x42, 0x03, 0xda, 0x10, 0x21, 0x80, 0x20, - 0xed, 0xf7, 0x2b, 0xfd, 0x21, 0x79, 0x22, 0x68, - 0x01, 0x20, 0xff, 0xf7, 0xac, 0xff, 0xe3, 0x68, - 0x6b, 0x60, 0x00, 0x2b, 0x05, 0xd0, 0x07, 0x48, - 0x06, 0x4a, 0x00, 0x88, 0x99, 0x68, 0xff, 0xf7, - 0xfe, 0xfa, 0x3c, 0x00, 0x6c, 0x38, 0x01, 0x00, - 0x28, 0x68, 0xe0, 0x60, 0x2c, 0x60, 0xb0, 0xbd, - 0x7c, 0x5d, 0x01, 0x00, 0x18, 0xfc, 0xff, 0xff, - 0x21, 0x38, 0x01, 0x00, 0x2c, 0x74, 0x01, 0x00, - 0xb0, 0xb5, 0x15, 0x4c, 0x08, 0x20, 0x21, 0x1c, - 0x80, 0x31, 0x08, 0x70, 0x13, 0x4a, 0x41, 0x04, - 0x11, 0x60, 0x13, 0x48, 0x00, 0x68, 0x13, 0x4d, - 0x6b, 0x69, 0x18, 0x40, 0x01, 0xd1, 0x10, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x3c, 0x00, 0xa8, 0x38, - 0x01, 0x00, 0xa8, 0x23, 0x5b, 0x5d, 0x18, 0x43, - 0x23, 0x1c, 0x40, 0x33, 0x18, 0x73, 0x51, 0x60, - 0x20, 0x78, 0x80, 0x08, 0x80, 0x00, 0x20, 0x70, - 0x00, 0x20, 0xff, 0xf7, 0x12, 0xfb, 0xff, 0xf7, - 0x72, 0xfa, 0x64, 0x30, 0x28, 0x66, 0x01, 0x38, - 0xa0, 0x61, 0x20, 0x78, 0x03, 0x21, 0x08, 0x43, - 0x20, 0x70, 0xb0, 0xbd, 0x00, 0x00, 0x00, 0x90, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00, - 0xe4, 0x38, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, - 0xa4, 0x6c, 0x01, 0x00, 0x38, 0xb5, 0x0a, 0x4c, - 0x21, 0x1c, 0x20, 0x31, 0x8a, 0x79, 0x00, 0xab, - 0x1a, 0x70, 0xc9, 0x79, 0x07, 0x4d, 0x59, 0x70, - 0x69, 0x78, 0x88, 0x42, 0x03, 0xd1, 0xf8, 0xf7, - 0x13, 0xfc, 0xff, 0x20, 0x68, 0x70, 0x00, 0xab, - 0x18, 0x88, 0xe0, 0x84, 0x38, 0xbd, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x4c, 0x7b, 0x01, 0x00, - 0x3c, 0x00, 0x20, 0x39, 0x01, 0x00, 0xf8, 0xb5, - 0x0b, 0x1c, 0x06, 0x1c, 0x04, 0x1d, 0x7f, 0x33, - 0x14, 0xd0, 0x33, 0x68, 0x5d, 0x18, 0x35, 0x60, - 0x23, 0x88, 0x1f, 0x18, 0x06, 0x23, 0xff, 0x56, - 0xeb, 0x1b, 0x33, 0x60, 0x23, 0x88, 0x18, 0x18, - 0x81, 0x71, 0x20, 0x88, 0x01, 0x30, 0x00, 0x04, - 0x00, 0x0c, 0x20, 0x80, 0x90, 0x42, 0x01, 0xd3, - 0x00, 0x20, 0x20, 0x80, 0x10, 0x1c, 0x31, 0x68, - 0xec, 0xf7, 0x3c, 0x00, 0x5c, 0x39, 0x01, 0x00, - 0x6d, 0xfe, 0xf8, 0xbd, 0x0e, 0x49, 0x0a, 0x7c, - 0x83, 0x78, 0x1a, 0x43, 0x0a, 0x74, 0x42, 0x78, - 0x83, 0x78, 0x9a, 0x43, 0x0b, 0x7c, 0x93, 0x43, - 0x0b, 0x74, 0x8a, 0x7c, 0x43, 0x78, 0x1a, 0x43, - 0x8a, 0x74, 0x8a, 0x7c, 0x03, 0x78, 0x9a, 0x43, - 0x8a, 0x74, 0x02, 0x78, 0x43, 0x78, 0x1a, 0x43, - 0x4b, 0x7c, 0x1a, 0x43, 0x4a, 0x74, 0x4a, 0x7c, - 0xc0, 0x78, 0x82, 0x43, 0x3c, 0x00, 0x98, 0x39, - 0x01, 0x00, 0x4a, 0x74, 0x70, 0x47, 0x10, 0x00, - 0x07, 0x00, 0xb0, 0xb5, 0x06, 0x4d, 0x00, 0x24, - 0x20, 0x06, 0x00, 0x0e, 0xed, 0xf7, 0xf7, 0xf8, - 0xa1, 0x00, 0x69, 0x58, 0x08, 0x71, 0x01, 0x34, - 0x04, 0x2c, 0xf5, 0xdb, 0xb0, 0xbd, 0x10, 0x7b, - 0x01, 0x00, 0x0b, 0x48, 0x0c, 0x49, 0x7d, 0x23, - 0x42, 0x69, 0xdb, 0x00, 0x00, 0x2a, 0xc8, 0x6b, - 0x07, 0xd0, 0xc0, 0x18, 0x1a, 0x01, 0x3c, 0x00, - 0xd4, 0x39, 0x01, 0x00, 0x90, 0x42, 0xc8, 0x63, - 0x01, 0xd9, 0x07, 0x48, 0xc8, 0x63, 0x70, 0x47, - 0xff, 0x38, 0xf5, 0x38, 0xc8, 0x63, 0x98, 0x42, - 0xf9, 0xd2, 0xcb, 0x63, 0x70, 0x47, 0x00, 0x00, - 0xf4, 0x68, 0x01, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0x70, 0x17, 0x00, 0x00, 0x70, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x16, 0x1c, 0xfb, 0xf7, 0xf6, 0xfa, - 0xb0, 0x43, 0x28, 0x43, 0x01, 0x1c, 0x20, 0x1c, - 0x3c, 0x00, 0x10, 0x3a, 0x01, 0x00, 0x00, 0xf0, - 0xcc, 0xfa, 0x70, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x0b, 0x4a, 0x00, 0x29, 0x09, 0xd0, 0x02, 0x29, - 0x0f, 0xd1, 0x01, 0x1c, 0x08, 0x48, 0xd2, 0x78, - 0x38, 0x30, 0xff, 0xf7, 0x78, 0xff, 0x06, 0x49, - 0x06, 0xe0, 0x01, 0x1c, 0x04, 0x48, 0x12, 0x79, - 0x20, 0x30, 0xff, 0xf7, 0x70, 0xff, 0x03, 0x49, - 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x3a, 0x01, 0x00, - 0xc8, 0x67, 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, - 0x80, 0xb5, 0x0b, 0x4a, 0x00, 0x29, 0x09, 0xd0, - 0x02, 0x29, 0x0f, 0xd1, 0x01, 0x1c, 0x08, 0x48, - 0x52, 0x79, 0x68, 0x30, 0xff, 0xf7, 0x5a, 0xff, - 0x06, 0x49, 0x06, 0xe0, 0x01, 0x1c, 0x04, 0x48, - 0x92, 0x79, 0x50, 0x30, 0xff, 0xf7, 0x52, 0xff, - 0x03, 0x49, 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, - 0xac, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x3a, - 0x01, 0x00, 0xd0, 0x67, 0x01, 0x00, 0xcc, 0x67, - 0x01, 0x00, 0x08, 0xb5, 0x04, 0x21, 0x00, 0x91, - 0x81, 0x7e, 0x43, 0x68, 0x03, 0x29, 0x06, 0xd1, - 0x01, 0x1c, 0x0c, 0x31, 0x01, 0x20, 0x6a, 0x46, - 0xec, 0xf7, 0x9a, 0xfc, 0x08, 0xbd, 0x19, 0x68, - 0xc1, 0x60, 0xfb, 0xe7, 0x00, 0x00, 0x10, 0xb5, - 0x03, 0x1c, 0x00, 0x20, 0x08, 0x4c, 0x00, 0x21, - 0xca, 0x00, 0x12, 0x19, 0x92, 0x78, 0x3c, 0x00, - 0xc4, 0x3a, 0x01, 0x00, 0x9a, 0x42, 0x03, 0xd1, - 0xc8, 0x00, 0x00, 0x19, 0x40, 0x68, 0x10, 0xbd, - 0x01, 0x31, 0x09, 0x06, 0x09, 0x16, 0x06, 0x29, - 0xf1, 0xdb, 0x10, 0xbd, 0xcc, 0x5a, 0x01, 0x00, - 0xf8, 0xb5, 0x0f, 0x1c, 0x16, 0x1c, 0x00, 0x25, - 0xfe, 0xf7, 0x8e, 0xf9, 0x04, 0x1c, 0x0a, 0xd0, - 0x4a, 0x20, 0x00, 0x5d, 0x05, 0x28, 0x06, 0xd1, - 0x38, 0x1c, 0xf1, 0xf7, 0x81, 0xfe, 0x00, 0x28, - 0x3c, 0x00, 0x00, 0x3b, 0x01, 0x00, 0x01, 0xd0, - 0x01, 0x25, 0x34, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x16, 0x1c, - 0x00, 0x24, 0xfe, 0xf7, 0x78, 0xf9, 0x00, 0x28, - 0x0b, 0xd0, 0x4a, 0x21, 0x09, 0x5c, 0x05, 0x29, - 0x07, 0xd1, 0x01, 0x69, 0x00, 0x29, 0x04, 0xd1, - 0x30, 0x60, 0xf1, 0xf7, 0x04, 0xfd, 0x01, 0x24, - 0x28, 0x60, 0x20, 0x1c, 0x70, 0xbd, 0xf8, 0xb5, - 0x06, 0x1c, 0x3c, 0x00, 0x3c, 0x3b, 0x01, 0x00, - 0x00, 0x25, 0x0c, 0x1c, 0x08, 0x1c, 0xf1, 0xf7, - 0x5d, 0xfe, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x21, - 0x05, 0xe0, 0x20, 0x1c, 0xf1, 0xf7, 0x74, 0xfe, - 0x00, 0x28, 0x14, 0xd0, 0x01, 0x21, 0x30, 0x1c, - 0xf4, 0xf7, 0x80, 0xfb, 0x00, 0x90, 0x00, 0x28, - 0x0d, 0xd0, 0x08, 0x4f, 0x01, 0x25, 0x06, 0x22, - 0x31, 0x1c, 0x38, 0x1c, 0xec, 0xf7, 0xc2, 0xfc, - 0x06, 0x22, 0x21, 0x1c, 0x3c, 0x00, 0x78, 0x3b, - 0x01, 0x00, 0xb8, 0x18, 0xec, 0xf7, 0xbd, 0xfc, - 0x00, 0x98, 0xf8, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x00, 0x21, - 0x00, 0x28, 0x06, 0xd0, 0x42, 0x78, 0x07, 0x2a, - 0x03, 0xd1, 0xc0, 0x79, 0x01, 0x28, 0x00, 0xd1, - 0x01, 0x21, 0x08, 0x1c, 0x70, 0x47, 0xf8, 0xb5, - 0x05, 0x1c, 0x00, 0x27, 0x16, 0x4e, 0xf1, 0xf7, - 0x28, 0xfe, 0x00, 0x28, 0x07, 0xd0, 0x3c, 0x00, - 0xb4, 0x3b, 0x01, 0x00, 0xf1, 0xf7, 0xc0, 0xfb, - 0x00, 0x28, 0x10, 0xd1, 0x00, 0x24, 0xf1, 0xf7, - 0xbb, 0xfc, 0x06, 0xe0, 0xf1, 0xf7, 0x02, 0xfe, - 0x00, 0x28, 0x08, 0xd0, 0x01, 0x24, 0xf1, 0xf7, - 0x99, 0xfd, 0x01, 0x1c, 0x06, 0x22, 0x30, 0x1c, - 0xec, 0xf7, 0x8e, 0xfc, 0x01, 0x27, 0x00, 0x2f, - 0x0d, 0xd0, 0x21, 0x1c, 0x28, 0x1c, 0xf4, 0xf7, - 0x3b, 0xfb, 0x01, 0x1c, 0x05, 0x48, 0x06, 0x22, - 0x3c, 0x00, 0xf0, 0x3b, 0x01, 0x00, 0x06, 0x38, - 0xc1, 0x60, 0x29, 0x1c, 0xec, 0xf7, 0x7f, 0xfc, - 0x01, 0x20, 0xf8, 0xbd, 0x00, 0x20, 0xfc, 0xe7, - 0x00, 0x00, 0x76, 0x7c, 0x01, 0x00, 0xf0, 0xb5, - 0x07, 0x1c, 0x00, 0x68, 0x02, 0x21, 0x04, 0x68, - 0x78, 0x69, 0x87, 0xb0, 0x01, 0x40, 0x00, 0x25, - 0x00, 0x29, 0x05, 0x91, 0x74, 0x4e, 0x12, 0xd0, - 0x22, 0x88, 0x01, 0x21, 0x13, 0x05, 0x02, 0xd4, - 0xc0, 0x07, 0x3c, 0x00, 0x2c, 0x3c, 0x01, 0x00, - 0xc1, 0x17, 0x01, 0x31, 0x6f, 0x48, 0x00, 0x29, - 0x00, 0x68, 0x01, 0xd0, 0x01, 0x30, 0x04, 0xe0, - 0x11, 0x06, 0x89, 0x0e, 0x2d, 0x29, 0x01, 0xd1, - 0x03, 0x30, 0x30, 0x60, 0x20, 0x88, 0x80, 0x07, - 0x67, 0xd1, 0x78, 0x69, 0xc0, 0x07, 0x64, 0xd5, - 0x03, 0xaa, 0x04, 0xa9, 0x20, 0x1c, 0xf7, 0xf7, - 0x4b, 0xfb, 0x00, 0xab, 0x18, 0x7c, 0x00, 0x28, - 0x07, 0xd0, 0x18, 0x7c, 0x3c, 0x00, 0x68, 0x3c, - 0x01, 0x00, 0x02, 0x28, 0x58, 0xd1, 0x18, 0x7b, - 0x40, 0x07, 0x40, 0x0f, 0x04, 0x28, 0x53, 0xd8, - 0x20, 0x79, 0x05, 0x99, 0xc0, 0x07, 0xc0, 0x17, - 0x01, 0x30, 0x02, 0x90, 0x00, 0x29, 0x02, 0xd1, - 0x02, 0x98, 0x00, 0x28, 0x48, 0xd1, 0x05, 0x99, - 0x00, 0x29, 0x04, 0xd0, 0x20, 0x88, 0x00, 0x05, - 0x01, 0xd4, 0x00, 0x20, 0x30, 0x60, 0xc0, 0x20, - 0xed, 0xf7, 0xcb, 0xfd, 0x05, 0x1c, 0x3c, 0x00, - 0xa4, 0x3c, 0x01, 0x00, 0x20, 0x1c, 0x0a, 0x30, - 0x06, 0x90, 0xfe, 0xf7, 0xad, 0xf8, 0x06, 0x1c, - 0x28, 0x1c, 0x08, 0x30, 0x23, 0x88, 0x02, 0x1d, - 0x11, 0x1d, 0xdb, 0x05, 0x06, 0xd5, 0x06, 0x9b, - 0x03, 0x60, 0x20, 0x1c, 0x10, 0x30, 0x10, 0x60, - 0x20, 0x1d, 0x0e, 0xe0, 0x23, 0x1d, 0x13, 0x60, - 0x22, 0x88, 0x92, 0x05, 0x05, 0xd5, 0x22, 0x1c, - 0x10, 0x32, 0x02, 0x60, 0x06, 0x9b, 0x0b, 0x60, - 0x3c, 0x00, 0xe0, 0x3c, 0x01, 0x00, 0x04, 0xe0, - 0x06, 0x9b, 0x03, 0x60, 0x20, 0x1c, 0x10, 0x30, - 0x08, 0x60, 0x28, 0x69, 0xf1, 0xf7, 0x43, 0xfc, - 0x00, 0x28, 0x08, 0xd0, 0x01, 0x28, 0x12, 0xd0, - 0x02, 0x28, 0x58, 0xd1, 0x00, 0xab, 0x18, 0x7c, - 0x00, 0x28, 0x54, 0xd1, 0x12, 0xe0, 0x00, 0xab, - 0x18, 0x7c, 0x02, 0x28, 0x0b, 0xd1, 0x00, 0x2e, - 0x4d, 0xd0, 0x4b, 0x20, 0x80, 0x5d, 0x02, 0x28, - 0x49, 0xd1, 0x3c, 0x00, 0x1c, 0x3d, 0x01, 0x00, - 0x07, 0xe0, 0x63, 0xe0, 0x00, 0xab, 0x18, 0x7c, - 0x00, 0x28, 0x02, 0xd1, 0x38, 0x1c, 0xfe, 0xf7, - 0x1b, 0xff, 0x20, 0x88, 0x41, 0x04, 0x30, 0x48, - 0x11, 0xd5, 0x00, 0x2e, 0x52, 0xd0, 0x00, 0xab, - 0x19, 0x7c, 0x00, 0x29, 0x26, 0xd0, 0x02, 0x99, - 0x00, 0x29, 0x02, 0xd0, 0xb0, 0x6a, 0x00, 0x78, - 0x00, 0xe0, 0x00, 0x78, 0x01, 0x28, 0x1d, 0xd0, - 0x03, 0x28, 0x43, 0xd1, 0x3c, 0x00, 0x58, 0x3d, - 0x01, 0x00, 0x1a, 0xe0, 0x00, 0xab, 0x19, 0x7c, - 0x02, 0x29, 0x16, 0xd1, 0x19, 0x7b, 0x04, 0x29, - 0x13, 0xd0, 0x19, 0x7b, 0x0c, 0x29, 0x10, 0xd0, - 0x22, 0x49, 0x09, 0x68, 0x00, 0x29, 0x0c, 0xd0, - 0x00, 0x2e, 0x0a, 0xd0, 0x02, 0x99, 0x00, 0x29, - 0x02, 0xd0, 0xb0, 0x6a, 0x00, 0x78, 0x00, 0xe0, - 0x00, 0x78, 0x01, 0x28, 0x29, 0xd0, 0x03, 0x28, - 0x27, 0xd0, 0x28, 0x22, 0x39, 0x1c, 0x3c, 0x00, - 0x94, 0x3d, 0x01, 0x00, 0x28, 0x1c, 0x88, 0x30, - 0xec, 0xf7, 0x0a, 0xfc, 0x00, 0xab, 0x19, 0x7c, - 0x28, 0x1c, 0x80, 0x30, 0x01, 0x71, 0x19, 0x7b, - 0x41, 0x71, 0x6c, 0x60, 0x6e, 0x61, 0x1b, 0xe0, - 0x05, 0x99, 0x00, 0x29, 0x14, 0xd0, 0x11, 0x48, - 0x84, 0x6c, 0x00, 0x2c, 0x10, 0xd0, 0x00, 0x22, - 0x00, 0x2e, 0x04, 0xd0, 0x40, 0x36, 0xb0, 0x7a, - 0x05, 0x28, 0x00, 0xd1, 0x01, 0x22, 0x00, 0x92, - 0x3c, 0x00, 0xd0, 0x3d, 0x01, 0x00, 0xf8, 0x7a, - 0xba, 0x7a, 0x29, 0x69, 0xc3, 0x07, 0xdb, 0x0f, - 0x06, 0x98, 0xec, 0xf7, 0x00, 0xfb, 0x28, 0x1c, - 0xed, 0xf7, 0x07, 0xfd, 0x00, 0x25, 0x28, 0x1c, - 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xc4, 0x6a, - 0x01, 0x00, 0x68, 0x61, 0x01, 0x00, 0x28, 0x61, - 0x01, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x20, 0xff, 0xf7, 0x70, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x3e, 0x01, 0x00, - 0xb0, 0xb5, 0x1d, 0x4d, 0x01, 0x28, 0x17, 0xd0, - 0xa2, 0x28, 0x06, 0xd0, 0xa3, 0x28, 0x03, 0xd1, - 0x01, 0x21, 0x15, 0x20, 0xff, 0xf7, 0x08, 0xfc, - 0xb0, 0xbd, 0x00, 0x29, 0x01, 0xd1, 0x17, 0x48, - 0x02, 0xe0, 0x7d, 0x20, 0xc0, 0x00, 0x48, 0x43, - 0x00, 0x23, 0x01, 0x22, 0x01, 0x1c, 0x28, 0x60, - 0x15, 0x20, 0xff, 0xf7, 0xa7, 0xfc, 0xb0, 0xbd, - 0x01, 0x29, 0x04, 0xd0, 0x3c, 0x00, 0x48, 0x3e, - 0x01, 0x00, 0x02, 0x29, 0xfa, 0xd1, 0x00, 0xf0, - 0x2a, 0xf8, 0xb0, 0xbd, 0x6c, 0x68, 0xf5, 0xf7, - 0xde, 0xfc, 0xfe, 0xf7, 0xa8, 0xff, 0x68, 0x60, - 0x00, 0x2c, 0x09, 0xd0, 0x29, 0x68, 0x0a, 0x23, - 0x59, 0x43, 0x00, 0x1b, 0x88, 0x42, 0x03, 0xd9, - 0x01, 0x21, 0x15, 0x20, 0xed, 0xf7, 0x17, 0xfa, - 0x01, 0x22, 0x15, 0x20, 0x29, 0x68, 0xff, 0xf7, - 0xa6, 0xfb, 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x3e, 0x01, 0x00, 0x04, 0x79, 0x01, 0x00, - 0x00, 0x87, 0x93, 0x03, 0x01, 0x20, 0x04, 0x49, - 0x40, 0x03, 0x80, 0xb5, 0x08, 0x60, 0x03, 0x21, - 0x15, 0x20, 0xed, 0xf7, 0x03, 0xfa, 0x80, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0x07, 0x48, 0x80, 0xb5, - 0xbe, 0x21, 0x01, 0x73, 0x01, 0x7a, 0x10, 0x22, - 0x11, 0x43, 0x01, 0x72, 0x00, 0x23, 0x02, 0x22, - 0x15, 0x20, 0x03, 0x49, 0xff, 0xf7, 0x68, 0xfc, - 0x3c, 0x00, 0xc0, 0x3e, 0x01, 0x00, 0x80, 0xbd, - 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x80, 0x9f, - 0xd5, 0x00, 0x80, 0xb5, 0x00, 0x28, 0x03, 0xd0, - 0x0a, 0x1c, 0x15, 0x21, 0xa2, 0x20, 0x02, 0xe0, - 0x00, 0x22, 0x15, 0x21, 0xa3, 0x20, 0xff, 0xf7, - 0x66, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, - 0x00, 0xf0, 0x19, 0xf8, 0x0a, 0x48, 0xbe, 0x21, - 0x01, 0x73, 0x03, 0x7a, 0x10, 0x22, 0x93, 0x43, - 0x01, 0x24, 0x3c, 0x00, 0xfc, 0x3e, 0x01, 0x00, - 0x23, 0x43, 0x03, 0x72, 0x01, 0x73, 0x01, 0x7a, - 0x91, 0x43, 0x20, 0x22, 0x11, 0x43, 0x01, 0x72, - 0x02, 0x22, 0x15, 0x20, 0x02, 0x49, 0xff, 0xf7, - 0x5b, 0xfb, 0x10, 0xbd, 0x00, 0x03, 0x07, 0x00, - 0x80, 0x9f, 0xd5, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x15, 0x20, 0xff, 0xf7, 0x85, 0xfb, 0x04, 0x48, - 0xbe, 0x21, 0x01, 0x73, 0x01, 0x7a, 0x11, 0x22, - 0x91, 0x43, 0x01, 0x72, 0x3c, 0x00, 0x38, 0x3f, - 0x01, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x05, 0x1c, - 0x60, 0x36, 0x00, 0x27, 0x44, 0x68, 0x22, 0xe0, - 0x08, 0x21, 0x00, 0x20, 0xed, 0xf7, 0x41, 0xfb, - 0x60, 0x61, 0x01, 0x89, 0x04, 0x39, 0x09, 0x04, - 0x09, 0x0c, 0x01, 0x81, 0x60, 0x69, 0x00, 0x68, - 0x40, 0x18, 0x04, 0x21, 0xed, 0xf7, 0x35, 0xfb, - 0xe0, 0x61, 0x60, 0x69, 0x71, 0x7b, 0x3c, 0x00, - 0x74, 0x3f, 0x01, 0x00, 0x00, 0x68, 0x89, 0x01, - 0xc1, 0x70, 0x29, 0x69, 0x0c, 0x31, 0x03, 0x22, - 0xec, 0xf7, 0xba, 0xfa, 0x28, 0x69, 0x0c, 0x30, - 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x25, 0x62, - 0xa7, 0x61, 0x24, 0x68, 0x00, 0x2c, 0xda, 0xd1, - 0x02, 0x49, 0x03, 0x48, 0x6a, 0x68, 0xf6, 0xf7, - 0xb3, 0xf8, 0xf8, 0xbd, 0xfd, 0x6b, 0x00, 0x00, - 0xa0, 0x6a, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x07, - 0x3c, 0x00, 0xb0, 0x3f, 0x01, 0x00, 0x00, 0x09, - 0x09, 0x02, 0x09, 0x0a, 0x08, 0x43, 0x02, 0x49, - 0x08, 0x60, 0xff, 0xf7, 0x20, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x08, 0x00, - 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xe8, 0x03, - 0x00, 0x00, 0x10, 0x00, 0x14, 0x00, 0xc8, 0x00, - 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x1c, 0x00, - 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xe8, 0x03, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x3f, 0x01, 0x00, - 0x24, 0x01, 0x07, 0x00, 0x32, 0x00, 0x00, 0x00, - 0xe8, 0x03, 0x00, 0x00, 0x40, 0x06, 0x01, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x41, 0x6e, 0x62, 0x69, 0x7e, 0x64, 0x61, 0x6f, - 0x6f, 0x00, 0x00, 0x00, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x20, 0x36, 0x5f, 0x37, 0x5f, - 0x31, 0x35, 0x20, 0x42, 0x75, 0x69, 0x6c, 0x64, - 0x20, 0x32, 0x3a, 0x35, 0x3c, 0x00, 0x28, 0x40, - 0x01, 0x00, 0x32, 0x39, 0x38, 0x20, 0x53, 0x65, - 0x70, 0x20, 0x30, 0x34, 0x20, 0x32, 0x30, 0x30, - 0x39, 0x20, 0x31, 0x37, 0x3a, 0x31, 0x33, 0x3a, - 0x32, 0x30, 0x20, 0x28, 0x48, 0x57, 0x3d, 0x34, - 0x3a, 0x33, 0x2c, 0x42, 0x54, 0x43, 0x4f, 0x45, - 0x58, 0x29, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, - 0x1c, 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3c, 0x00, - 0x64, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x70, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xd0, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x7c, 0x15, 0x15, 0x00, - 0x3c, 0x00, 0xa0, 0x40, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x70, 0x17, - 0x1e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x28, 0x23, 0x16, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0xf8, 0x2a, - 0x0b, 0x00, 0x3c, 0x00, 0xdc, 0x40, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xe0, 0x2e, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x50, 0x46, 0x0e, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0xf0, 0x55, 0x08, 0x00, 0x3c, 0x00, 0x18, 0x41, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x00, 0x00, 0xc0, 0x5d, 0x0e, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xe8, 0x80, - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, - 0x00, 0x00, 0xa0, 0x8c, 0x0a, 0x00, 0x3c, 0x00, - 0x54, 0x41, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x80, 0xbb, 0x0a, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0xf0, 0xd2, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x90, 0x00, - 0x3c, 0x00, 0x90, 0x41, 0x01, 0x00, 0xc0, 0x00, - 0x90, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00, - 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, 0xc0, 0x00, - 0x90, 0x00, 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, - 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00, - 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00, - 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, - 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x60, 0x00, - 0x48, 0x00, 0x3c, 0x00, 0xcc, 0x41, 0x01, 0x00, - 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x14, 0x00, 0x10, 0x00, 0x60, 0x00, 0x48, 0x00, - 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x04, 0x01, 0x0b, 0x02, 0x0c, 0x03, - 0x12, 0x04, 0x16, 0x05, 0x3c, 0x00, 0x08, 0x42, - 0x01, 0x00, 0x18, 0x06, 0x00, 0x0e, 0x00, 0x0e, - 0x24, 0x07, 0x00, 0x0e, 0x2c, 0x08, 0x30, 0x09, - 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x42, 0x0a, - 0x00, 0x0e, 0x48, 0x0b, 0x00, 0x0e, 0x00, 0x0e, - 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x60, 0x0c, - 0x00, 0x0e, 0x00, 0x0e, 0x6c, 0x0d, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0xc0, 0xff, 0xff, 0xff, 0x3c, 0x00, - 0x44, 0x42, 0x01, 0x00, 0xb6, 0xff, 0xff, 0xff, - 0xd3, 0xff, 0xff, 0xff, 0xc9, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 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, 0x51, 0xb0, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x51, 0xb0, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x59, 0xaf, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x42, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa5, 0xaf, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4d, 0xaf, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x45, 0xb0, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xd5, 0xaf, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xad, 0xb0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x42, 0x01, 0x00, - 0x95, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x95, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x99, 0xb0, 0x00, 0x00, 0x0c, 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, 0x3c, 0x00, 0xf8, 0x42, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x17, - 0x01, 0x00, 0x35, 0x17, 0x01, 0x00, 0x21, 0x17, - 0x01, 0x00, 0xd9, 0x9c, 0x00, 0x00, 0x49, 0x17, - 0x01, 0x00, 0x3d, 0x17, 0x01, 0x00, 0xd1, 0x9c, - 0x00, 0x00, 0xd1, 0x9c, 0x00, 0x00, 0x1d, 0x1a, - 0x01, 0x00, 0xd1, 0x9c, 0x00, 0x00, 0x01, 0x1a, - 0x01, 0x00, 0x31, 0x1a, 0x01, 0x00, 0x25, 0x1a, - 0x01, 0x00, 0x3d, 0x17, 0x01, 0x00, 0x3c, 0x00, - 0x34, 0x43, 0x01, 0x00, 0x81, 0x1a, 0x01, 0x00, - 0xd1, 0x9c, 0x00, 0x00, 0x79, 0x17, 0x01, 0x00, - 0xd9, 0x9c, 0x00, 0x00, 0x5d, 0x17, 0x01, 0x00, - 0xa1, 0x17, 0x01, 0x00, 0x95, 0x17, 0x01, 0x00, - 0x81, 0x17, 0x01, 0x00, 0x21, 0x18, 0x01, 0x00, - 0xf5, 0x17, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x43, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x19, 0x1c, - 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x85, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x85, 0x41, - 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x85, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x35, 0x1b, - 0x01, 0x00, 0x3c, 0x00, 0xac, 0x43, 0x01, 0x00, - 0x9d, 0x1b, 0x01, 0x00, 0x01, 0x1c, 0x01, 0x00, - 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, - 0x89, 0x41, 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, - 0x65, 0x18, 0x01, 0x00, 0x29, 0x18, 0x01, 0x00, - 0x39, 0x18, 0x01, 0x00, 0xbd, 0x18, 0x01, 0x00, - 0x89, 0x41, 0x00, 0x00, 0x4d, 0x18, 0x01, 0x00, - 0xa5, 0x18, 0x01, 0x00, 0x85, 0x41, 0x00, 0x00, - 0x01, 0x19, 0x01, 0x00, 0x3c, 0x00, 0xe8, 0x43, - 0x01, 0x00, 0xd9, 0x18, 0x01, 0x00, 0xed, 0x18, - 0x01, 0x00, 0x15, 0x19, 0x01, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x69, 0x1c, - 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x71, 0x1c, - 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0xfd, 0xdb, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x44, 0x01, 0x00, 0x1d, 0x7c, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0xf5, 0xda, 0x00, 0x00, - 0x14, 0x00, 0x81, 0x00, 0xfd, 0xdd, 0x00, 0x00, - 0x08, 0x00, 0x82, 0x00, 0xc5, 0xdd, 0x00, 0x00, - 0x38, 0x00, 0x83, 0x00, 0x45, 0xdc, 0x00, 0x00, - 0x10, 0x00, 0x84, 0x00, 0x99, 0xdc, 0x00, 0x00, - 0x0c, 0x00, 0x86, 0x00, 0x39, 0xdc, 0x00, 0x00, - 0x10, 0x00, 0x88, 0x00, 0x11, 0xde, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x44, 0x01, 0x00, 0x10, 0x00, - 0x8a, 0x00, 0x35, 0xdd, 0x00, 0x00, 0x0c, 0x00, - 0x8c, 0x00, 0xad, 0xdf, 0x00, 0x00, 0x1c, 0x00, - 0x8e, 0x00, 0xc9, 0xde, 0x00, 0x00, 0x38, 0x00, - 0x8f, 0x00, 0xed, 0xdc, 0x00, 0x00, 0x38, 0x00, - 0x90, 0x00, 0x75, 0xdf, 0x00, 0x00, 0x0c, 0x00, - 0x91, 0x00, 0x8d, 0xdc, 0x00, 0x00, 0x0c, 0x00, - 0x93, 0x00, 0xb9, 0xdd, 0x00, 0x00, 0x0c, 0x00, - 0x94, 0x00, 0x3c, 0x00, 0x9c, 0x44, 0x01, 0x00, - 0x00, 0x08, 0x08, 0x08, 0x10, 0x0c, 0x0c, 0x0c, - 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x08, - 0x08, 0x08, 0x14, 0x08, 0x08, 0x14, 0x00, 0x30, - 0x00, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, - 0xad, 0x30, 0x01, 0x00, 0x15, 0x30, 0x01, 0x00, - 0x20, 0x30, 0x07, 0x00, 0x30, 0x30, 0x07, 0x00, - 0x06, 0x07, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x44, - 0x01, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xc9, 0x02, 0x00, 0x94, 0x3f, - 0x03, 0x00, 0xe0, 0x8b, 0x5a, 0x00, 0x05, 0x3a, - 0x85, 0x00, 0xc8, 0xf2, 0x06, 0x00, 0xf8, 0x4c, - 0x56, 0x00, 0x20, 0xa7, 0x3d, 0x00, 0xb7, 0x4a, - 0x00, 0x00, 0xb7, 0x4a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x45, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, - 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, - 0x05, 0x06, 0x00, 0x00, 0x2d, 0x7c, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0xfd, 0x95, 0x00, 0x00, - 0x08, 0x00, 0xff, 0x00, 0xed, 0x97, 0x00, 0x00, - 0x08, 0x00, 0x82, 0x00, 0xcd, 0x95, 0x00, 0x00, - 0x0c, 0x00, 0x83, 0x00, 0x4d, 0x96, 0x00, 0x00, - 0x0c, 0x00, 0x85, 0x00, 0x2d, 0x7c, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x45, 0x01, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x3d, 0x96, 0x00, 0x00, 0x0c, 0x00, - 0x89, 0x00, 0xd9, 0x97, 0x00, 0x00, 0x08, 0x00, - 0x8a, 0x00, 0x91, 0x95, 0x00, 0x00, 0x08, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x3c, 0x00, 0x8c, 0x45, 0x01, 0x00, - 0xf9, 0x97, 0x00, 0x00, 0x08, 0x00, 0x8d, 0x00, - 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0xc9, 0x97, 0x00, 0x00, 0x30, 0x00, 0x90, 0x00, - 0x11, 0x95, 0x00, 0x00, 0x18, 0x00, 0x91, 0x00, - 0x15, 0x96, 0x00, 0x00, 0x08, 0x00, 0x92, 0x00, - 0x59, 0x95, 0x00, 0x00, 0x3c, 0x00, 0x93, 0x00, - 0x29, 0x96, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x45, - 0x01, 0x00, 0x08, 0x00, 0x94, 0x00, 0xa1, 0x95, - 0x00, 0x00, 0x08, 0x00, 0x95, 0x00, 0x81, 0x97, - 0x00, 0x00, 0x0c, 0x00, 0x96, 0x00, 0x6d, 0x97, - 0x00, 0x00, 0x10, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x10, - 0x08, 0x00, 0x00, 0x08, 0x00, 0x10, 0x3c, 0x00, - 0x04, 0x46, 0x01, 0x00, 0x08, 0x0c, 0x0c, 0x0c, - 0x0c, 0x1c, 0x0c, 0x0c, 0x08, 0x00, 0x00, 0x00, - 0x0d, 0x8b, 0x00, 0x00, 0xf5, 0x8a, 0x00, 0x00, - 0xe9, 0x8a, 0x00, 0x00, 0x01, 0x8b, 0x00, 0x00, - 0x14, 0x08, 0x0c, 0x0c, 0x10, 0x0c, 0x00, 0x00, - 0xb1, 0x98, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x19, 0x99, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, - 0x3d, 0x7c, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x46, 0x01, 0x00, 0x3d, 0x99, - 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x09, 0x99, - 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x3d, 0x7c, - 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01, - 0x04, 0x04, 0x08, 0x08, 0x81, 0x37, 0x80, 0xf3, - 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0xaa, 0xaa, - 0x03, 0x00, 0x00, 0xf8, 0x6d, 0xa9, 0x6d, 0xa9, - 0x6e, 0xa9, 0x3c, 0x00, 0x7c, 0x46, 0x01, 0x00, - 0x6e, 0xa8, 0x6e, 0xa8, 0x6e, 0xa8, 0x6f, 0xa7, - 0x6f, 0xa7, 0x6f, 0xa7, 0x6f, 0xa6, 0x6f, 0xa6, - 0x70, 0xa6, 0x70, 0xa5, 0x70, 0xa4, 0x00, 0x00, - 0xb5, 0x1b, 0x01, 0x00, 0xc9, 0x1b, 0x01, 0x00, - 0xe1, 0x1b, 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, - 0xa5, 0x1b, 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, - 0x89, 0x1b, 0x01, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x46, - 0x01, 0x00, 0xd1, 0x1a, 0x01, 0x00, 0xe5, 0x1a, - 0x01, 0x00, 0x05, 0x1b, 0x01, 0x00, 0x25, 0x1b, - 0x01, 0x00, 0xb1, 0x1a, 0x01, 0x00, 0xe5, 0x9c, - 0x00, 0x00, 0x9d, 0x1a, 0x01, 0x00, 0xd5, 0x9c, - 0x00, 0x00, 0xc1, 0x1a, 0x01, 0x00, 0x89, 0x19, - 0x01, 0x00, 0xa9, 0x19, 0x01, 0x00, 0xc9, 0x19, - 0x01, 0x00, 0xf1, 0x19, 0x01, 0x00, 0x79, 0x19, - 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x46, 0x01, 0x00, 0x65, 0x19, 0x01, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0x55, 0x1c, 0x01, 0x00, - 0x45, 0x1c, 0x01, 0x00, 0x45, 0x1c, 0x01, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x47, 0x01, 0x00, 0xd5, 0x9c, - 0x00, 0x00, 0x55, 0x19, 0x01, 0x00, 0xe5, 0x9c, - 0x00, 0x00, 0x41, 0x19, 0x01, 0x00, 0x31, 0x19, - 0x01, 0x00, 0xd5, 0x9c, 0x00, 0x00, 0x02, 0x05, - 0x0a, 0x00, 0x00, 0x00, 0x02, 0x04, 0x0a, 0x00, - 0x00, 0x00, 0xc5, 0x20, 0x00, 0x00, 0x21, 0x21, - 0x00, 0x00, 0x25, 0x21, 0x00, 0x00, 0x39, 0x21, - 0x00, 0x00, 0x49, 0x21, 0x00, 0x00, 0x55, 0x21, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x47, 0x01, 0x00, - 0x61, 0x21, 0x00, 0x00, 0xed, 0x21, 0x00, 0x00, - 0x0d, 0x22, 0x00, 0x00, 0x21, 0x22, 0x00, 0x00, - 0x3d, 0x22, 0x00, 0x00, 0x49, 0x22, 0x00, 0x00, - 0xc5, 0x22, 0x00, 0x00, 0xe1, 0x22, 0x00, 0x00, - 0xf5, 0x22, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00, - 0xe9, 0x1f, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00, - 0xe9, 0x1f, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00, - 0x11, 0x23, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x47, - 0x01, 0x00, 0x1d, 0x23, 0x00, 0x00, 0x89, 0x23, - 0x00, 0x00, 0xa5, 0x23, 0x00, 0x00, 0xb9, 0x23, - 0x00, 0x00, 0x11, 0x20, 0x00, 0x00, 0x1d, 0x20, - 0x00, 0x00, 0x6d, 0x20, 0x00, 0x00, 0x8d, 0x20, - 0x00, 0x00, 0xb9, 0x20, 0x00, 0x00, 0x00, 0x01, - 0x02, 0x03, 0x03, 0x05, 0x06, 0x06, 0x08, 0x09, - 0x08, 0x09, 0x09, 0x09, 0xc4, 0x80, 0xca, 0x80, - 0x80, 0x80, 0x80, 0x80, 0xd0, 0x80, 0x3c, 0x00, - 0xe4, 0x47, 0x01, 0x00, 0xd6, 0xd9, 0xdc, 0xdf, - 0xe2, 0x80, 0x80, 0x80, 0xe5, 0xe8, 0x80, 0x80, - 0x80, 0x80, 0xeb, 0xee, 0xf1, 0xf4, 0xf7, 0xfa, - 0xfd, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, - 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, - 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, - 0x0c, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x11, 0x00, - 0x13, 0x00, 0x16, 0x00, 0x18, 0x00, 0x1b, 0x00, - 0x3c, 0x00, 0x20, 0x48, 0x01, 0x00, 0x1e, 0x00, - 0x22, 0x00, 0x26, 0x00, 0x2b, 0x00, 0x30, 0x00, - 0x36, 0x00, 0x3c, 0x00, 0x44, 0x00, 0x4c, 0x00, - 0x55, 0x00, 0x5f, 0x00, 0x6b, 0x00, 0x78, 0x00, - 0x86, 0x00, 0x97, 0x00, 0xa9, 0x00, 0xbe, 0x00, - 0xd5, 0x00, 0xef, 0x00, 0xff, 0x7f, 0x0c, 0x00, - 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, - 0xfc, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, - 0xf8, 0xff, 0x3c, 0x00, 0x5c, 0x48, 0x01, 0x00, - 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, - 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf0, 0xff, - 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, - 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe8, 0xff, - 0xe7, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff, - 0xe3, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe0, 0xff, - 0xdf, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdc, 0xff, - 0xdc, 0xff, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x48, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xb1, 0x7c, 0x41, 0x00, 0x11, 0x5a, - 0x40, 0xe2, 0xb2, 0x7c, 0x41, 0x00, 0x05, 0x5a, - 0x40, 0xe2, 0xaf, 0x7c, 0x41, 0x00, 0xf9, 0x59, - 0x40, 0xe2, 0xb0, 0x7c, 0x41, 0x00, 0xed, 0x59, - 0x40, 0xe2, 0x24, 0x67, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x5c, 0x67, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x0a, 0x61, 0x01, 0x00, 0x3c, 0x00, - 0xd4, 0x48, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x0e, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x32, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x6a, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x0b, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x0f, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x40, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x78, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x3c, 0x00, 0x10, 0x49, 0x01, 0x00, 0x0c, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x10, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x4e, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x86, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x0d, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x11, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0xc0, 0x48, - 0x01, 0x00, 0x04, 0x00, 0x00, 0x0a, 0xe0, 0x48, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x49, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x00, 0x49, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x20, 0x49, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x18, 0x67, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x28, 0x75, 0x01, 0x01, - 0x7d, 0xa9, 0x40, 0xe2, 0x2c, 0x75, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x20, 0x75, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x44, 0x75, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x88, 0x49, - 0x01, 0x00, 0xf0, 0x59, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x75, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0xb8, 0x7c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x8d, 0xa9, 0x00, 0x00, 0x01, 0x00, - 0x00, 0xda, 0x1d, 0x75, 0x01, 0x00, 0x01, 0x00, - 0x00, 0xe2, 0xc4, 0x67, 0x01, 0x00, 0x3c, 0x00, - 0xc4, 0x49, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x59, 0x00, 0x00, 0x0e, 0x00, 0x00, 0xd9, - 0xc8, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xcc, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xd0, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x65, 0xd9, 0x00, 0x00, 0x04, 0x00, 0x00, 0xda, - 0xa5, 0xd9, 0x00, 0x00, 0x04, 0x00, 0x00, 0xda, - 0x3c, 0x00, 0x00, 0x4a, 0x01, 0x00, 0x01, 0x59, - 0x00, 0x00, 0x01, 0x00, 0x00, 0xda, 0x32, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x6a, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x11, 0x59, - 0x00, 0x00, 0x01, 0x00, 0x00, 0xda, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x48, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xa0, 0x48, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x40, 0x49, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x4a, 0x01, 0x00, - 0x05, 0x00, 0x00, 0x0a, 0x68, 0x49, 0x01, 0x00, - 0x09, 0x00, 0x00, 0x0a, 0x6c, 0x57, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x38, 0x61, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xac, 0x6e, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0xb0, 0x6e, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x70, 0x57, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x78, 0x4a, - 0x01, 0x00, 0xe8, 0x59, 0x01, 0x00, 0x08, 0x00, - 0x00, 0xe3, 0xdc, 0x58, 0x01, 0x14, 0x4d, 0xfd, - 0x40, 0xe3, 0x2c, 0x59, 0x01, 0x14, 0x39, 0xfd, - 0x40, 0xe3, 0xc0, 0x58, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x64, 0x73, 0x41, 0x00, 0x3d, 0x2e, - 0x44, 0xe2, 0x7c, 0x59, 0x01, 0x14, 0x3c, 0x00, - 0xb4, 0x4a, 0x01, 0x00, 0x9d, 0x2f, 0x44, 0xe3, - 0x5c, 0x57, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe2, - 0x79, 0x2e, 0x04, 0x00, 0x01, 0x00, 0x00, 0xdb, - 0xa0, 0x58, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe3, - 0xa2, 0x58, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe3, - 0xa0, 0x57, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0xd1, 0x88, 0x01, 0x00, 0x01, 0x00, 0x00, 0xda, - 0x1d, 0x89, 0x01, 0x00, 0x04, 0x00, 0x00, 0xda, - 0x3c, 0x00, 0xf0, 0x4a, 0x01, 0x00, 0x95, 0x88, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xdb, 0x31, 0x2f, - 0x04, 0x00, 0x0e, 0x00, 0x00, 0xd9, 0xc5, 0x2e, - 0x04, 0x00, 0x0e, 0x00, 0x00, 0xd9, 0x68, 0x6c, - 0x01, 0x01, 0x15, 0xd5, 0x40, 0xe2, 0xc0, 0x57, - 0x01, 0x00, 0x08, 0x00, 0x00, 0xe3, 0xc8, 0x57, - 0x01, 0x00, 0x34, 0x00, 0x00, 0xe3, 0x9c, 0x6c, - 0x01, 0x00, 0x08, 0x00, 0x00, 0xe3, 0xb0, 0x58, - 0x01, 0x03, 0x3c, 0x00, 0x2c, 0x4b, 0x01, 0x00, - 0xe9, 0xd4, 0x40, 0xe2, 0xbc, 0x58, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x9d, 0xa3, 0x00, 0x00, - 0x60, 0x00, 0x00, 0xd9, 0x70, 0x79, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x78, 0x79, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x7c, 0x5a, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x5d, 0x1c, 0x00, 0x00, - 0x11, 0x00, 0x00, 0xd9, 0x24, 0x6e, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x68, 0x4b, - 0x01, 0x00, 0x18, 0x58, 0x01, 0x05, 0xd5, 0xd5, - 0x40, 0xe3, 0xfc, 0x57, 0x01, 0x00, 0x14, 0x00, - 0x00, 0xe3, 0x04, 0x8e, 0x01, 0x03, 0xe5, 0xd5, - 0x40, 0xe3, 0x00, 0x5b, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x18, 0x5b, 0x01, 0x00, 0x40, 0x00, - 0x00, 0xe2, 0xd4, 0x67, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x8d, 0x37, 0x00, 0x00, 0x04, 0x00, - 0x00, 0xdb, 0xbd, 0x36, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x4b, 0x01, 0x00, 0x04, 0x00, 0x00, 0xdb, - 0xfc, 0x60, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, - 0x90, 0x7d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x70, 0x69, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0x49, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x0a, - 0x90, 0x4b, 0x01, 0x00, 0x06, 0x00, 0x00, 0x0a, - 0xa4, 0x58, 0x81, 0x00, 0x05, 0xfd, 0x40, 0xe3, - 0x3c, 0x00, 0xe0, 0x4b, 0x01, 0x00, 0x80, 0x4a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0a, 0x0c, 0x5a, - 0x81, 0x01, 0x25, 0x2d, 0x44, 0xe3, 0xe0, 0x4a, - 0x01, 0x00, 0x03, 0x00, 0x00, 0x0a, 0x18, 0x63, - 0x41, 0x00, 0xfd, 0xbb, 0x40, 0xe2, 0x08, 0x57, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0x9c, 0x48, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x4a, - 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x4c, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x0a, 0xcc, 0x74, 0x01, 0x00, - 0x03, 0x00, 0x00, 0xe3, 0x65, 0x73, 0x41, 0x00, - 0xa9, 0x2e, 0x44, 0xe2, 0xf6, 0x59, 0x01, 0x01, - 0xd1, 0x2c, 0x44, 0xe3, 0x08, 0x4b, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x07, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x6a, 0x28, 0x4b, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x0a, 0x88, 0x7d, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x58, 0x4c, - 0x01, 0x00, 0x00, 0x75, 0x01, 0x04, 0x65, 0x6f, - 0x40, 0xe3, 0xbc, 0x78, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x38, 0x4b, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x0a, 0x04, 0x57, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x62, 0x58, 0x4b, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x80, 0x4b, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x68, 0x4b, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x8c, 0x7d, 0x01, 0x00, 0x3c, 0x00, - 0x94, 0x4c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x39, 0x2d, 0x04, 0x00, 0x04, 0x00, 0x00, 0xdb, - 0x94, 0x7d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x64, - 0xa8, 0x4c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x0a, - 0x3c, 0x00, 0xd0, 0x4c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x4c, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0xd0, 0x4c, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x7a, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0xe8, 0x7a, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x7a, - 0x01, 0x00, 0x3c, 0x00, 0x0c, 0x4d, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0xee, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf3, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0xf4, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf9, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0xfa, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x48, 0x4d, - 0x01, 0x00, 0xe8, 0x4c, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x00, 0x4d, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x18, 0x4d, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x30, 0x4d, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x90, 0x5c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x94, 0x5c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x98, 0x5c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x9c, 0x5c, 0x01, 0x00, 0x3c, 0x00, - 0x84, 0x4d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xa0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xa4, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xa8, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xac, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xb0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xb4, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xb8, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x3c, 0x00, 0xc0, 0x4d, 0x01, 0x00, 0xbc, 0x5c, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xc0, 0x5c, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xc4, 0x5c, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x90, 0x5c, - 0x01, 0x00, 0x38, 0x00, 0x00, 0xe3, 0x68, 0x4d, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0xd8, 0x4d, - 0x01, 0x00, 0x02, 0x00, 0x00, 0xfa, 0x12, 0x61, - 0x81, 0x01, 0x31, 0xd5, 0x40, 0xe3, 0x06, 0x61, - 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x4d, 0x01, 0x00, - 0x02, 0x00, 0x00, 0xe2, 0x0b, 0x61, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe3, 0x0f, 0x61, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe3, 0x08, 0x61, 0x01, 0x00, - 0x02, 0x00, 0x00, 0xe2, 0x50, 0x7b, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0x01, 0x00, - 0x0e, 0x00, 0x00, 0x64, 0x9c, 0x57, 0x01, 0x01, - 0x91, 0x88, 0x41, 0xe3, 0x3c, 0x00, 0x38, 0x4e, - 0x01, 0x00, 0x6e, 0x41, 0x67, 0x6f, 0xe2, 0x65, - 0x60, 0x69, 0x6f, 0x20, 0x41, 0x42, 0x00, 0x00, - 0x00, 0x00, 0xf0, 0x4d, 0x01, 0x00, 0x09, 0x00, - 0x00, 0x0a, 0x48, 0x4e, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x0a, 0xe8, 0x4d, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x48, 0x4d, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x0a, 0x28, 0x61, 0x01, 0x01, 0x3c, 0x00, - 0x74, 0x4e, 0x01, 0x00, 0xbd, 0xd5, 0x40, 0xe2, - 0x69, 0x61, 0x41, 0x00, 0x85, 0xd5, 0x40, 0xe2, - 0x30, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x34, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x3c, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x34, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x44, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x3c, 0x00, 0xb0, 0x4e, 0x01, 0x00, 0x70, 0x4e, - 0x01, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x18, 0x61, - 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, 0x1c, 0x61, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x20, 0x61, - 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, 0x24, 0x61, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xb8, 0x4e, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xc8, 0x4e, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xd8, 0x4e, - 0x01, 0x00, 0x3c, 0x00, 0xec, 0x4e, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x0a, 0x96, 0x48, 0x01, 0x00, - 0x06, 0x00, 0x00, 0xe3, 0xe0, 0x62, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x9b, 0x7d, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x62, 0x9c, 0x7d, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x62, 0x60, 0x7c, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x01, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x3c, 0x00, 0x28, 0x4f, - 0x01, 0x00, 0x2d, 0x63, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x49, 0xd5, 0x00, 0x00, 0x0e, 0x00, - 0x00, 0xd9, 0xf4, 0x67, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x62, 0x46, 0x7d, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x62, 0x9c, 0x7c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x98, 0x7c, 0x01, 0x00, 0x3c, 0x00, - 0x64, 0x4f, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62, - 0xa0, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62, - 0x58, 0x7c, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62, - 0x64, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62, - 0x5a, 0x7c, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62, - 0x6a, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62, - 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0xe4, 0x62, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x3c, 0x00, 0xa0, 0x4f, 0x01, 0x00, 0xe8, 0x62, - 0x01, 0x00, 0x03, 0x00, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x01, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x4f, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x3c, 0x00, 0x18, 0x50, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0xf0, 0x4e, 0x01, 0x00, 0x2a, 0x00, - 0x00, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x3c, 0x00, - 0x54, 0x50, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x3c, 0x00, 0x90, 0x50, 0x01, 0x00, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x06, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x07, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x08, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x09, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x50, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x0a, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x0b, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x0c, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x3c, 0x00, 0x08, 0x51, - 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0xdb, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0xdb, 0x48, 0x50, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x58, 0x50, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x68, 0x50, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x78, 0x50, 0x01, 0x00, 0x3c, 0x00, - 0x44, 0x51, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0x88, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0x98, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xa8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xb8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xc8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xd8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xe8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0x3c, 0x00, 0x80, 0x51, 0x01, 0x00, 0xf8, 0x50, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x08, 0x51, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x18, 0x51, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x40, 0x50, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0xe8, 0x4e, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x4e, - 0x01, 0x00, 0x3c, 0x00, 0xbc, 0x51, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x28, 0x51, 0x01, 0x00, - 0x0e, 0x00, 0x00, 0x0a, 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, 0x3c, 0x00, 0xf8, 0x51, - 0x01, 0x00, 0x98, 0x51, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0x0a, 0x50, 0x4e, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x0a, 0xe0, 0x4c, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x4b, 0x01, 0x00, 0x1d, 0x00, - 0x00, 0x0a, 0xf8, 0x51, 0x01, 0x00, 0x05, 0x00, - 0x00, 0x0a, 0x24, 0x80, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1d, 0x80, 0x07, 0x00, 0x3c, 0x00, - 0x34, 0x52, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0x07, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0x24, 0x80, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x80, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0x07, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x24, 0x80, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x80, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0x07, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x52, 0x01, 0x00, 0x00, 0x01, - 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, - 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x01, 0x63, - 0x00, 0x00, 0xa1, 0x63, 0x00, 0x00, 0xc5, 0x63, - 0x00, 0x00, 0xb1, 0x62, 0x00, 0x00, 0xc5, 0x63, - 0x00, 0x00, 0x21, 0x63, 0x00, 0x00, 0x4d, 0x63, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x52, 0x01, 0x00, - 0xa1, 0x63, 0x00, 0x00, 0x01, 0x63, 0x00, 0x00, - 0xa1, 0x63, 0x00, 0x00, 0x06, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x03, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x10, - 0x11, 0x00, 0x00, 0x00, 0xa5, 0xc6, 0x84, 0xf8, - 0x99, 0xee, 0x8d, 0xf6, 0x0d, 0xff, 0xbd, 0xd6, - 0xb1, 0xde, 0x54, 0x91, 0x3c, 0x00, 0xe8, 0x52, - 0x01, 0x00, 0x50, 0x60, 0x03, 0x02, 0xa9, 0xce, - 0x7d, 0x56, 0x19, 0xe7, 0x62, 0xb5, 0xe6, 0x4d, - 0x9a, 0xec, 0x45, 0x8f, 0x9d, 0x1f, 0x40, 0x89, - 0x87, 0xfa, 0x15, 0xef, 0xeb, 0xb2, 0xc9, 0x8e, - 0x0b, 0xfb, 0xec, 0x41, 0x67, 0xb3, 0xfd, 0x5f, - 0xea, 0x45, 0xbf, 0x23, 0xf7, 0x53, 0x96, 0xe4, - 0x5b, 0x9b, 0xc2, 0x75, 0x1c, 0xe1, 0xae, 0x3d, - 0x6a, 0x4c, 0x5a, 0x6c, 0x41, 0x7e, 0x3c, 0x00, - 0x24, 0x53, 0x01, 0x00, 0x02, 0xf5, 0x4f, 0x83, - 0x5c, 0x68, 0xf4, 0x51, 0x34, 0xd1, 0x08, 0xf9, - 0x93, 0xe2, 0x73, 0xab, 0x53, 0x62, 0x3f, 0x2a, - 0x0c, 0x08, 0x52, 0x95, 0x65, 0x46, 0x5e, 0x9d, - 0x28, 0x30, 0xa1, 0x37, 0x0f, 0x0a, 0xb5, 0x2f, - 0x09, 0x0e, 0x36, 0x24, 0x9b, 0x1b, 0x3d, 0xdf, - 0x26, 0xcd, 0x69, 0x4e, 0xcd, 0x7f, 0x9f, 0xea, - 0x1b, 0x12, 0x9e, 0x1d, 0x74, 0x58, 0x2e, 0x34, - 0x3c, 0x00, 0x60, 0x53, 0x01, 0x00, 0x2d, 0x36, - 0xb2, 0xdc, 0xee, 0xb4, 0xfb, 0x5b, 0xf6, 0xa4, - 0x4d, 0x76, 0x61, 0xb7, 0xce, 0x7d, 0x7b, 0x52, - 0x3e, 0xdd, 0x71, 0x5e, 0x97, 0x13, 0xf5, 0xa6, - 0x68, 0xb9, 0x00, 0x00, 0x2c, 0xc1, 0x60, 0x40, - 0x1f, 0xe3, 0xc8, 0x79, 0xed, 0xb6, 0xbe, 0xd4, - 0x46, 0x8d, 0xd9, 0x67, 0x4b, 0x72, 0xde, 0x94, - 0xd4, 0x98, 0xe8, 0xb0, 0x4a, 0x85, 0x6b, 0xbb, - 0x2a, 0xc5, 0x3c, 0x00, 0x9c, 0x53, 0x01, 0x00, - 0xe5, 0x4f, 0x16, 0xed, 0xc5, 0x86, 0xd7, 0x9a, - 0x55, 0x66, 0x94, 0x11, 0xcf, 0x8a, 0x10, 0xe9, - 0x06, 0x04, 0x81, 0xfe, 0xf0, 0xa0, 0x44, 0x78, - 0xba, 0x25, 0xe3, 0x4b, 0xf3, 0xa2, 0xfe, 0x5d, - 0xc0, 0x80, 0x8a, 0x05, 0xad, 0x3f, 0xbc, 0x21, - 0x48, 0x70, 0x04, 0xf1, 0xdf, 0x63, 0xc1, 0x77, - 0x75, 0xaf, 0x63, 0x42, 0x30, 0x20, 0x1a, 0xe5, - 0x0e, 0xfd, 0x6d, 0xbf, 0x3c, 0x00, 0xd8, 0x53, - 0x01, 0x00, 0x4c, 0x81, 0x14, 0x18, 0x35, 0x26, - 0x2f, 0xc3, 0xe1, 0xbe, 0xa2, 0x35, 0xcc, 0x88, - 0x39, 0x2e, 0x57, 0x93, 0xf2, 0x55, 0x82, 0xfc, - 0x47, 0x7a, 0xac, 0xc8, 0xe7, 0xba, 0x2b, 0x32, - 0x95, 0xe6, 0xa0, 0xc0, 0x98, 0x19, 0xd1, 0x9e, - 0x7f, 0xa3, 0x66, 0x44, 0x7e, 0x54, 0xab, 0x3b, - 0x83, 0x0b, 0xca, 0x8c, 0x29, 0xc7, 0xd3, 0x6b, - 0x3c, 0x28, 0x79, 0xa7, 0xe2, 0xbc, 0x3c, 0x00, - 0x14, 0x54, 0x01, 0x00, 0x1d, 0x16, 0x76, 0xad, - 0x3b, 0xdb, 0x56, 0x64, 0x4e, 0x74, 0x1e, 0x14, - 0xdb, 0x92, 0x0a, 0x0c, 0x6c, 0x48, 0xe4, 0xb8, - 0x5d, 0x9f, 0x6e, 0xbd, 0xef, 0x43, 0xa6, 0xc4, - 0xa8, 0x39, 0xa4, 0x31, 0x37, 0xd3, 0x8b, 0xf2, - 0x32, 0xd5, 0x43, 0x8b, 0x59, 0x6e, 0xb7, 0xda, - 0x8c, 0x01, 0x64, 0xb1, 0xd2, 0x9c, 0xe0, 0x49, - 0xb4, 0xd8, 0xfa, 0xac, 0x07, 0xf3, 0x25, 0xcf, - 0x3c, 0x00, 0x50, 0x54, 0x01, 0x00, 0xaf, 0xca, - 0x8e, 0xf4, 0xe9, 0x47, 0x18, 0x10, 0xd5, 0x6f, - 0x88, 0xf0, 0x6f, 0x4a, 0x72, 0x5c, 0x24, 0x38, - 0xf1, 0x57, 0xc7, 0x73, 0x51, 0x97, 0x23, 0xcb, - 0x7c, 0xa1, 0x9c, 0xe8, 0x21, 0x3e, 0xdd, 0x96, - 0xdc, 0x61, 0x86, 0x0d, 0x85, 0x0f, 0x90, 0xe0, - 0x42, 0x7c, 0xc4, 0x71, 0xaa, 0xcc, 0xd8, 0x90, - 0x05, 0x06, 0x01, 0xf7, 0x12, 0x1c, 0xa3, 0xc2, - 0x5f, 0x6a, 0x3c, 0x00, 0x8c, 0x54, 0x01, 0x00, - 0xf9, 0xae, 0xd0, 0x69, 0x91, 0x17, 0x58, 0x99, - 0x27, 0x3a, 0xb9, 0x27, 0x38, 0xd9, 0x13, 0xeb, - 0xb3, 0x2b, 0x33, 0x22, 0xbb, 0xd2, 0x70, 0xa9, - 0x89, 0x07, 0xa7, 0x33, 0xb6, 0x2d, 0x22, 0x3c, - 0x92, 0x15, 0x20, 0xc9, 0x49, 0x87, 0xff, 0xaa, - 0x78, 0x50, 0x7a, 0xa5, 0x8f, 0x03, 0xf8, 0x59, - 0x80, 0x09, 0x17, 0x1a, 0xda, 0x65, 0x31, 0xd7, - 0xc6, 0x84, 0xb8, 0xd0, 0x3c, 0x00, 0xc8, 0x54, - 0x01, 0x00, 0xc3, 0x82, 0xb0, 0x29, 0x77, 0x5a, - 0x11, 0x1e, 0xcb, 0x7b, 0xfc, 0xa8, 0xd6, 0x6d, - 0x3a, 0x2c, 0xc6, 0xa5, 0xf8, 0x84, 0xee, 0x99, - 0xf6, 0x8d, 0xff, 0x0d, 0xd6, 0xbd, 0xde, 0xb1, - 0x91, 0x54, 0x60, 0x50, 0x02, 0x03, 0xce, 0xa9, - 0x56, 0x7d, 0xe7, 0x19, 0xb5, 0x62, 0x4d, 0xe6, - 0xec, 0x9a, 0x8f, 0x45, 0x1f, 0x9d, 0x89, 0x40, - 0xfa, 0x87, 0xef, 0x15, 0xb2, 0xeb, 0x3c, 0x00, - 0x04, 0x55, 0x01, 0x00, 0x8e, 0xc9, 0xfb, 0x0b, - 0x41, 0xec, 0xb3, 0x67, 0x5f, 0xfd, 0x45, 0xea, - 0x23, 0xbf, 0x53, 0xf7, 0xe4, 0x96, 0x9b, 0x5b, - 0x75, 0xc2, 0xe1, 0x1c, 0x3d, 0xae, 0x4c, 0x6a, - 0x6c, 0x5a, 0x7e, 0x41, 0xf5, 0x02, 0x83, 0x4f, - 0x68, 0x5c, 0x51, 0xf4, 0xd1, 0x34, 0xf9, 0x08, - 0xe2, 0x93, 0xab, 0x73, 0x62, 0x53, 0x2a, 0x3f, - 0x08, 0x0c, 0x95, 0x52, 0x46, 0x65, 0x9d, 0x5e, - 0x3c, 0x00, 0x40, 0x55, 0x01, 0x00, 0x30, 0x28, - 0x37, 0xa1, 0x0a, 0x0f, 0x2f, 0xb5, 0x0e, 0x09, - 0x24, 0x36, 0x1b, 0x9b, 0xdf, 0x3d, 0xcd, 0x26, - 0x4e, 0x69, 0x7f, 0xcd, 0xea, 0x9f, 0x12, 0x1b, - 0x1d, 0x9e, 0x58, 0x74, 0x34, 0x2e, 0x36, 0x2d, - 0xdc, 0xb2, 0xb4, 0xee, 0x5b, 0xfb, 0xa4, 0xf6, - 0x76, 0x4d, 0xb7, 0x61, 0x7d, 0xce, 0x52, 0x7b, - 0xdd, 0x3e, 0x5e, 0x71, 0x13, 0x97, 0xa6, 0xf5, - 0xb9, 0x68, 0x3c, 0x00, 0x7c, 0x55, 0x01, 0x00, - 0x00, 0x00, 0xc1, 0x2c, 0x40, 0x60, 0xe3, 0x1f, - 0x79, 0xc8, 0xb6, 0xed, 0xd4, 0xbe, 0x8d, 0x46, - 0x67, 0xd9, 0x72, 0x4b, 0x94, 0xde, 0x98, 0xd4, - 0xb0, 0xe8, 0x85, 0x4a, 0xbb, 0x6b, 0xc5, 0x2a, - 0x4f, 0xe5, 0xed, 0x16, 0x86, 0xc5, 0x9a, 0xd7, - 0x66, 0x55, 0x11, 0x94, 0x8a, 0xcf, 0xe9, 0x10, - 0x04, 0x06, 0xfe, 0x81, 0xa0, 0xf0, 0x78, 0x44, - 0x25, 0xba, 0x4b, 0xe3, 0x3c, 0x00, 0xb8, 0x55, - 0x01, 0x00, 0xa2, 0xf3, 0x5d, 0xfe, 0x80, 0xc0, - 0x05, 0x8a, 0x3f, 0xad, 0x21, 0xbc, 0x70, 0x48, - 0xf1, 0x04, 0x63, 0xdf, 0x77, 0xc1, 0xaf, 0x75, - 0x42, 0x63, 0x20, 0x30, 0xe5, 0x1a, 0xfd, 0x0e, - 0xbf, 0x6d, 0x81, 0x4c, 0x18, 0x14, 0x26, 0x35, - 0xc3, 0x2f, 0xbe, 0xe1, 0x35, 0xa2, 0x88, 0xcc, - 0x2e, 0x39, 0x93, 0x57, 0x55, 0xf2, 0xfc, 0x82, - 0x7a, 0x47, 0xc8, 0xac, 0xba, 0xe7, 0x3c, 0x00, - 0xf4, 0x55, 0x01, 0x00, 0x32, 0x2b, 0xe6, 0x95, - 0xc0, 0xa0, 0x19, 0x98, 0x9e, 0xd1, 0xa3, 0x7f, - 0x44, 0x66, 0x54, 0x7e, 0x3b, 0xab, 0x0b, 0x83, - 0x8c, 0xca, 0xc7, 0x29, 0x6b, 0xd3, 0x28, 0x3c, - 0xa7, 0x79, 0xbc, 0xe2, 0x16, 0x1d, 0xad, 0x76, - 0xdb, 0x3b, 0x64, 0x56, 0x74, 0x4e, 0x14, 0x1e, - 0x92, 0xdb, 0x0c, 0x0a, 0x48, 0x6c, 0xb8, 0xe4, - 0x9f, 0x5d, 0xbd, 0x6e, 0x43, 0xef, 0xc4, 0xa6, - 0x3c, 0x00, 0x30, 0x56, 0x01, 0x00, 0x39, 0xa8, - 0x31, 0xa4, 0xd3, 0x37, 0xf2, 0x8b, 0xd5, 0x32, - 0x8b, 0x43, 0x6e, 0x59, 0xda, 0xb7, 0x01, 0x8c, - 0xb1, 0x64, 0x9c, 0xd2, 0x49, 0xe0, 0xd8, 0xb4, - 0xac, 0xfa, 0xf3, 0x07, 0xcf, 0x25, 0xca, 0xaf, - 0xf4, 0x8e, 0x47, 0xe9, 0x10, 0x18, 0x6f, 0xd5, - 0xf0, 0x88, 0x4a, 0x6f, 0x5c, 0x72, 0x38, 0x24, - 0x57, 0xf1, 0x73, 0xc7, 0x97, 0x51, 0xcb, 0x23, - 0xa1, 0x7c, 0x3c, 0x00, 0x6c, 0x56, 0x01, 0x00, - 0xe8, 0x9c, 0x3e, 0x21, 0x96, 0xdd, 0x61, 0xdc, - 0x0d, 0x86, 0x0f, 0x85, 0xe0, 0x90, 0x7c, 0x42, - 0x71, 0xc4, 0xcc, 0xaa, 0x90, 0xd8, 0x06, 0x05, - 0xf7, 0x01, 0x1c, 0x12, 0xc2, 0xa3, 0x6a, 0x5f, - 0xae, 0xf9, 0x69, 0xd0, 0x17, 0x91, 0x99, 0x58, - 0x3a, 0x27, 0x27, 0xb9, 0xd9, 0x38, 0xeb, 0x13, - 0x2b, 0xb3, 0x22, 0x33, 0xd2, 0xbb, 0xa9, 0x70, - 0x07, 0x89, 0x33, 0xa7, 0x3c, 0x00, 0xa8, 0x56, - 0x01, 0x00, 0x2d, 0xb6, 0x3c, 0x22, 0x15, 0x92, - 0xc9, 0x20, 0x87, 0x49, 0xaa, 0xff, 0x50, 0x78, - 0xa5, 0x7a, 0x03, 0x8f, 0x59, 0xf8, 0x09, 0x80, - 0x1a, 0x17, 0x65, 0xda, 0xd7, 0x31, 0x84, 0xc6, - 0xd0, 0xb8, 0x82, 0xc3, 0x29, 0xb0, 0x5a, 0x77, - 0x1e, 0x11, 0x7b, 0xcb, 0xa8, 0xfc, 0x6d, 0xd6, - 0x2c, 0x3a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x56, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x72, 0x65, 0x71, 0x45, 0x72, 0x72, 0x52, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x57, 0x01, 0x00, 0xc4, 0x8e, - 0x01, 0x00, 0x24, 0x9a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x24, 0x9a, - 0x01, 0x00, 0xa4, 0xb2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xa4, 0xb2, - 0x01, 0x00, 0x14, 0xc8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x10, 0x20, - 0x30, 0x40, 0x50, 0xbb, 0x30, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x57, 0x01, 0x00, - 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, - 0x24, 0x26, 0x28, 0x2a, 0x2b, 0x2c, 0x01, 0x00, - 0x70, 0x17, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0d, 0x25, 0x00, 0x00, 0x41, 0x3f, 0x01, 0x00, - 0x65, 0x29, 0x01, 0x00, 0x0d, 0x25, 0x00, 0x00, - 0xf5, 0x5e, 0x00, 0x00, 0x41, 0x3f, 0x01, 0x00, - 0x41, 0x3f, 0x01, 0x00, 0x02, 0x04, 0x0b, 0x0c, - 0x12, 0x16, 0x18, 0x24, 0x3c, 0x00, 0x98, 0x57, - 0x01, 0x00, 0x30, 0x48, 0x60, 0x6c, 0x01, 0x00, - 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x10, 0x12, 0x11, 0x00, - 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x57, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x93, 0x04, 0x00, - 0x40, 0x42, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0xdf, 0x40, 0xcf, 0xfd, 0x00, 0x40, 0x83, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x58, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x80, 0x81, 0x00, 0x00, - 0x80, 0x00, 0xbf, 0xff, 0x7f, 0x7e, 0x01, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x6f, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x58, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xb8, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x71, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x71, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x90, 0x71, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x58, - 0x01, 0x00, 0xa8, 0x71, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x05, 0x0a, 0x01, 0x06, 0x0b, - 0x02, 0x07, 0x0c, 0x03, 0x08, 0x0d, 0x04, 0x09, - 0x00, 0x00, 0x03, 0x03, 0x01, 0x01, 0x00, 0x04, - 0x00, 0x04, 0x04, 0x06, 0x16, 0x1e, 0x1f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, - 0xc4, 0x58, 0x01, 0x00, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x61, 0x8b, 0x4a, 0x00, 0x61, 0x8f, 0x4a, 0x00, - 0x61, 0x8b, 0x4a, 0x00, 0x05, 0xe3, 0xc0, 0x00, - 0x05, 0xcb, 0xc0, 0x00, 0x05, 0xbb, 0xc0, 0x00, - 0x85, 0xba, 0xc0, 0x00, 0x85, 0xa2, 0xc0, 0x00, - 0x85, 0x92, 0xc0, 0x00, 0x85, 0x8a, 0xc0, 0x00, - 0x85, 0x7a, 0xc0, 0x00, 0x45, 0x89, 0xc0, 0x00, - 0x3c, 0x00, 0x00, 0x59, 0x01, 0x00, 0x45, 0x71, - 0xc0, 0x00, 0x45, 0x69, 0xc0, 0x00, 0x45, 0x61, - 0xc0, 0x00, 0x45, 0x59, 0xc0, 0x00, 0x45, 0x51, - 0xc0, 0x00, 0x45, 0x49, 0xc0, 0x00, 0x45, 0x41, - 0xc0, 0x00, 0x45, 0x39, 0xc0, 0x00, 0x45, 0x31, - 0xc0, 0x00, 0x45, 0x29, 0xc0, 0x00, 0x45, 0x21, - 0xc0, 0x00, 0x60, 0x2d, 0x06, 0x00, 0x60, 0x2d, - 0x06, 0x00, 0x60, 0x2d, 0x06, 0x00, 0x60, 0x2d, - 0x06, 0x00, 0x3c, 0x00, 0x3c, 0x59, 0x01, 0x00, - 0x60, 0x2d, 0x06, 0x00, 0x60, 0x28, 0x06, 0x00, - 0x50, 0x26, 0x06, 0x00, 0x50, 0x21, 0x06, 0x00, - 0x50, 0x1f, 0x06, 0x00, 0x50, 0x1c, 0x06, 0x00, - 0x50, 0x1a, 0x06, 0x00, 0x50, 0x18, 0x06, 0x00, - 0x50, 0x16, 0x06, 0x00, 0x50, 0x14, 0x06, 0x00, - 0x50, 0x12, 0x06, 0x00, 0x50, 0x10, 0x06, 0x00, - 0x50, 0x0e, 0x06, 0x00, 0x50, 0x0c, 0x06, 0x00, - 0x50, 0x0a, 0x06, 0x00, 0x3c, 0x00, 0x78, 0x59, - 0x01, 0x00, 0x2b, 0x0b, 0x06, 0x00, 0x1d, 0x75, - 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x75, - 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x75, - 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x6d, - 0xc0, 0x00, 0xdd, 0x5b, 0xc0, 0x00, 0xdd, 0x4b, - 0xc0, 0x00, 0xdd, 0x43, 0xc0, 0x00, 0xdd, 0x3b, - 0xc0, 0x00, 0xdd, 0x33, 0xc0, 0x00, 0xdd, 0x2b, - 0xc0, 0x00, 0xdd, 0x23, 0xc0, 0x00, 0x3c, 0x00, - 0xb4, 0x59, 0x01, 0x00, 0xdd, 0x1b, 0xc0, 0x00, - 0xdd, 0x13, 0xc0, 0x00, 0xdd, 0x13, 0xc0, 0x00, - 0xdd, 0x13, 0xc0, 0x00, 0xdd, 0x13, 0xc0, 0x00, - 0xdd, 0x13, 0xc0, 0x00, 0x05, 0x05, 0x05, 0x04, - 0x04, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03, - 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x88, 0x13, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x59, 0x01, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x5b, 0x00, 0x40, 0x02, - 0xe0, 0xfd, 0xf2, 0x00, 0xb8, 0xfc, 0xa4, 0x01, - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x03, 0x0b, 0x9f, 0x5f, 0x07, 0x01, - 0x2a, 0x04, 0x21, 0x04, 0x17, 0x04, 0x0e, 0x04, - 0x04, 0x04, 0xfb, 0x03, 0xf1, 0x03, 0xe8, 0x03, - 0xc9, 0x03, 0xaa, 0x03, 0x8a, 0x03, 0x6b, 0x03, - 0x4c, 0x03, 0x3c, 0x00, 0x2c, 0x5a, 0x01, 0x00, - 0x2d, 0x03, 0x0e, 0x03, 0xee, 0x02, 0xec, 0x02, - 0x01, 0x03, 0x16, 0x03, 0x2b, 0x03, 0x40, 0x03, - 0x55, 0x03, 0x6a, 0x03, 0x7f, 0x03, 0x94, 0x03, - 0xa9, 0x03, 0xbe, 0x03, 0xd3, 0x03, 0xe8, 0x03, - 0xbe, 0x03, 0x94, 0x03, 0x6a, 0x03, 0x00, 0x02, - 0x04, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x00, 0x03, 0x3c, 0x00, 0x68, 0x5a, - 0x01, 0x00, 0x05, 0x08, 0x0b, 0x0e, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 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, 0x3c, 0x00, - 0xa4, 0x5a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x5a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x5b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x5b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x5b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x5b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x5c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x5c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x5c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x5c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x5c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x5d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x5d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x5d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x5d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x5e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x5e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x5e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x5e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x5f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x5f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x5f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x5f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x60, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x60, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x60, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x61, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x61, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x61, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x62, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x62, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x62, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x62, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x63, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x63, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x63, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x63, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x64, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0x64, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x64, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x65, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x65, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x65, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x65, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x66, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x66, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x66, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x66, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x67, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0x67, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x67, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0x67, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x68, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x68, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0x68, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x68, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0x69, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x69, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x69, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x69, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x6a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x6a, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x6a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x6a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x6b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x6b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x6b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x6b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x6b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x6c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x6c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x6c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x6c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x6d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x6d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x6d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x6e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x6e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x6e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x6e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x6f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x6f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x6f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x70, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x70, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x70, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x71, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x71, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x71, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x71, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x72, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x72, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x72, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x72, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0x73, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x73, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0x73, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x73, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x73, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x74, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x74, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x74, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x74, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x75, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x75, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x75, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x75, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x76, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0x76, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x76, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0x76, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x77, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x77, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0x77, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x77, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0x78, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x78, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x78, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x78, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x79, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x79, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x79, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x79, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x7a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x7a, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x7a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x7a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x7a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x7b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x7b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x7b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x7b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x7c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x7c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x7c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x7c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x7d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x7d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x7d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x7e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x7e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x7e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x7e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x7e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x7f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x7f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x7f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x7f, - 0x01, 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, 0x70, 0xb5, 0x01, 0x25, 0x07, 0x4e, - 0xad, 0x03, 0x75, 0x61, 0x0a, 0x20, 0xfa, 0xf7, - 0x6c, 0xff, 0x30, 0x68, 0x80, 0x03, 0xc4, 0x0f, - 0xb5, 0x61, 0x0a, 0x20, 0xfa, 0xf7, 0x65, 0xff, - 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x80, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x70, 0xb5, 0x01, 0x25, 0x6d, 0x04, 0x00, 0x28, - 0x10, 0x4c, 0x01, 0xd0, 0x65, 0x61, 0x00, 0xe0, - 0xa5, 0x61, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, - 0xa0, 0x68, 0x28, 0x43, 0xa0, 0x60, 0x0a, 0x20, - 0xfa, 0xf7, 0x4e, 0xff, 0x01, 0x26, 0xb6, 0x03, - 0x66, 0x61, 0x0a, 0x20, 0xfa, 0xf7, 0x48, 0xff, - 0xa6, 0x61, 0x01, 0x20, 0xfa, 0xf7, 0x44, 0xff, - 0x3c, 0x00, 0x60, 0x80, 0x01, 0x00, 0xa0, 0x68, - 0xa8, 0x43, 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, - 0x60, 0x60, 0x0a, 0x20, 0xfa, 0xf7, 0x3b, 0xff, - 0x70, 0xbd, 0x10, 0x00, 0x07, 0x00, 0x70, 0xb5, - 0x01, 0x25, 0x10, 0x4c, 0x6d, 0x04, 0x65, 0x61, - 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, 0xa0, 0x68, - 0x28, 0x43, 0xa0, 0x60, 0xee, 0x08, 0xa6, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0x28, 0xff, 0x66, 0x61, - 0x0a, 0x20, 0x3c, 0x00, 0x9c, 0x80, 0x01, 0x00, - 0xfa, 0xf7, 0x24, 0xff, 0xa5, 0x61, 0x0a, 0x20, - 0xfa, 0xf7, 0x20, 0xff, 0xa6, 0x61, 0x0a, 0x20, - 0xfa, 0xf7, 0x1c, 0xff, 0xa0, 0x68, 0xa8, 0x43, - 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, - 0x70, 0xbd, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x70, 0xb5, 0x01, 0x25, 0x0e, 0x4c, 0x6d, 0x04, - 0xa5, 0x61, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, - 0xa0, 0x68, 0x28, 0x43, 0x3c, 0x00, 0xd8, 0x80, - 0x01, 0x00, 0xa0, 0x60, 0xee, 0x08, 0x66, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0x02, 0xff, 0x65, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0xfe, 0xfe, 0xa6, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0xfa, 0xfe, 0xa0, 0x68, - 0xa8, 0x43, 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, - 0x60, 0x60, 0x70, 0xbd, 0x00, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x00, 0x24, - 0x80, 0x26, 0x28, 0x1c, 0x30, 0x40, 0x3c, 0x00, - 0x14, 0x81, 0x01, 0x00, 0xff, 0xf7, 0x88, 0xff, - 0x68, 0x06, 0x05, 0x0e, 0x01, 0x34, 0x08, 0x2c, - 0xf6, 0xdb, 0xff, 0xf7, 0x6d, 0xff, 0x70, 0xbd, - 0x80, 0xb5, 0x02, 0x1c, 0x0b, 0x21, 0x80, 0x20, - 0xfb, 0xf7, 0x3e, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0xf8, 0xb5, 0x12, 0x48, 0x00, 0x25, 0x07, 0x1c, - 0xff, 0x37, 0x06, 0x1d, 0x01, 0x37, 0x28, 0x1c, - 0xf9, 0xf7, 0xea, 0xfd, 0x04, 0x1c, 0x17, 0xd0, - 0x3c, 0x00, 0x50, 0x81, 0x01, 0x00, 0x20, 0x69, - 0x00, 0x28, 0x04, 0xd0, 0xe0, 0x6a, 0x00, 0x28, - 0x03, 0xd0, 0x00, 0x20, 0xe0, 0x62, 0x25, 0x1c, - 0xf0, 0xe7, 0x7b, 0x68, 0x00, 0x2b, 0x05, 0xd0, - 0x32, 0x1c, 0x21, 0x1c, 0x44, 0x31, 0x01, 0x20, - 0xe8, 0xf7, 0x34, 0xf9, 0x20, 0x1c, 0x44, 0x30, - 0xf9, 0xf7, 0x37, 0xfe, 0xe2, 0xe7, 0xf8, 0xbd, - 0x00, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x11, 0x48, - 0x70, 0xb5, 0x3c, 0x00, 0x8c, 0x81, 0x01, 0x00, - 0x00, 0x68, 0xff, 0x28, 0x1d, 0xd1, 0xff, 0x20, - 0x32, 0x30, 0xfa, 0xf7, 0xa7, 0xfe, 0x0e, 0x4d, - 0x6c, 0x68, 0x0e, 0x48, 0xfa, 0xf7, 0xa2, 0xfe, - 0x68, 0x68, 0x24, 0x1a, 0x01, 0x20, 0x00, 0xf0, - 0x95, 0xfd, 0x6e, 0x68, 0x09, 0x48, 0xfa, 0xf7, - 0x99, 0xfe, 0x68, 0x68, 0x21, 0x1c, 0x0a, 0x39, - 0x30, 0x1a, 0x88, 0x42, 0x02, 0xd3, 0x0a, 0x34, - 0xa0, 0x42, 0x02, 0xd9, 0x3c, 0x00, 0xc8, 0x81, - 0x01, 0x00, 0x00, 0x20, 0x00, 0xf0, 0x85, 0xfd, - 0x70, 0xbd, 0xf4, 0x74, 0x01, 0x00, 0x00, 0x03, - 0x07, 0x00, 0x93, 0x03, 0x00, 0x00, 0x70, 0xb5, - 0x00, 0xf0, 0x4d, 0xf8, 0x01, 0x20, 0xed, 0xf7, - 0x34, 0xf9, 0x11, 0x4d, 0x18, 0x21, 0x68, 0x60, - 0x00, 0x20, 0xe9, 0xf7, 0xf2, 0xf9, 0x28, 0x60, - 0x04, 0x68, 0x80, 0x20, 0x20, 0x80, 0x00, 0x26, - 0x06, 0x22, 0xff, 0x21, 0x20, 0x1d, 0x3c, 0x00, - 0x04, 0x82, 0x01, 0x00, 0x66, 0x80, 0xe8, 0xf7, - 0x0b, 0xfa, 0x20, 0x1c, 0x0a, 0x30, 0x09, 0x49, - 0xf2, 0xf7, 0x2e, 0xfd, 0x20, 0x1c, 0x10, 0x30, - 0x07, 0x49, 0xf2, 0xf7, 0x29, 0xfd, 0xe6, 0x82, - 0x03, 0xcd, 0xe9, 0xf7, 0xf9, 0xf8, 0x02, 0x49, - 0x01, 0x20, 0x14, 0x39, 0x88, 0x60, 0x70, 0xbd, - 0x90, 0xd9, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00, - 0x24, 0xf7, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x82, 0x01, 0x00, 0x10, 0xb5, - 0x06, 0x4c, 0x00, 0x22, 0x02, 0x20, 0xe1, 0x68, - 0xf0, 0xf7, 0x11, 0xfb, 0x60, 0x78, 0x02, 0x28, - 0x01, 0xd1, 0x00, 0xf0, 0x1a, 0xf9, 0x10, 0xbd, - 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, 0x80, 0xb5, - 0xa1, 0x20, 0xff, 0xf7, 0x50, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x40, 0x00, 0x0e, 0x21, 0x08, 0x40, - 0x80, 0xb5, 0xa0, 0x30, 0xff, 0xf7, 0x47, 0xff, - 0x80, 0xbd, 0x3c, 0x00, 0x7c, 0x82, 0x01, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0x20, 0x68, 0x00, 0x28, - 0x04, 0xd0, 0xe9, 0xf7, 0x87, 0xf9, 0x00, 0x20, - 0x20, 0x60, 0x60, 0x60, 0x10, 0xbd, 0x00, 0x00, - 0x90, 0xd9, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0x01, 0x21, 0x07, 0x4a, 0x21, 0x61, 0x02, 0x20, - 0x10, 0x70, 0x61, 0x61, 0x00, 0xf0, 0xd6, 0xfc, - 0x00, 0xf0, 0xc8, 0xfb, 0x20, 0x1c, 0xed, 0xf7, - 0x9f, 0xfa, 0x10, 0xbd, 0x3c, 0x00, 0xb8, 0x82, - 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x7c, 0xd9, - 0x01, 0x00, 0x70, 0xb5, 0x02, 0x1c, 0x08, 0x1c, - 0x02, 0x25, 0x00, 0x2a, 0x13, 0x4e, 0x14, 0xd0, - 0x00, 0xf0, 0x11, 0xfc, 0x30, 0x78, 0x01, 0x21, - 0x08, 0x43, 0x30, 0x70, 0x30, 0x78, 0x28, 0x43, - 0x30, 0x70, 0x00, 0x20, 0x7d, 0x21, 0x49, 0x01, - 0xb2, 0x79, 0x92, 0x07, 0x00, 0xd5, 0x01, 0x34, - 0x01, 0x30, 0x88, 0x42, 0xf8, 0xdb, 0x3c, 0x00, - 0xf4, 0x82, 0x01, 0x00, 0x20, 0x1c, 0x70, 0xbd, - 0x30, 0x78, 0xa8, 0x43, 0x30, 0x70, 0x30, 0x78, - 0x40, 0x08, 0x40, 0x00, 0x30, 0x70, 0x05, 0x49, - 0x48, 0x68, 0x01, 0x22, 0x12, 0x04, 0x90, 0x43, - 0x48, 0x60, 0x01, 0x20, 0x70, 0xbd, 0x00, 0x00, - 0x88, 0x00, 0x07, 0x00, 0x6c, 0x00, 0x07, 0x00, - 0xff, 0xb5, 0x09, 0xae, 0x00, 0x20, 0x60, 0xce, - 0x28, 0x60, 0x00, 0x23, 0x9c, 0x46, 0x30, 0x60, - 0x3c, 0x00, 0x30, 0x83, 0x01, 0x00, 0x69, 0x46, - 0x01, 0xaa, 0x17, 0xe0, 0xdb, 0x07, 0x0e, 0xd5, - 0x12, 0x4b, 0x1c, 0x56, 0x63, 0x1c, 0x0a, 0xd0, - 0x01, 0x27, 0x2b, 0x68, 0xa7, 0x40, 0x3b, 0x43, - 0x2b, 0x60, 0x13, 0x68, 0xdb, 0x07, 0x02, 0xd5, - 0x33, 0x68, 0x3b, 0x43, 0x33, 0x60, 0x0b, 0x68, - 0x5b, 0x08, 0x0b, 0x60, 0x13, 0x68, 0x5b, 0x08, - 0x13, 0x60, 0x01, 0x30, 0x0b, 0x68, 0x00, 0x2b, - 0x01, 0xd0, 0x3c, 0x00, 0x6c, 0x83, 0x01, 0x00, - 0x22, 0x28, 0xe2, 0xd3, 0x63, 0x46, 0x01, 0x33, - 0x20, 0x20, 0x02, 0x2b, 0x9c, 0x46, 0x02, 0xa9, - 0x03, 0xaa, 0xf2, 0xdb, 0xff, 0xbd, 0x00, 0x00, - 0xb4, 0x8d, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0d, 0x1c, 0x1e, 0x21, 0x00, 0x22, 0x03, 0x20, - 0x05, 0x4b, 0xf9, 0xf7, 0xb3, 0xf8, 0x21, 0x1c, - 0x03, 0x20, 0xf9, 0xf7, 0xf5, 0xf8, 0x29, 0x1c, - 0x03, 0x20, 0xf9, 0xf7, 0x3c, 0x00, 0xa8, 0x83, - 0x01, 0x00, 0xf1, 0xf8, 0xb0, 0xbd, 0x80, 0x38, - 0x01, 0x00, 0xb0, 0xb5, 0x1c, 0x4c, 0x1c, 0x4d, - 0x21, 0x78, 0x02, 0x29, 0x09, 0xd0, 0x03, 0x29, - 0x19, 0xd0, 0x04, 0x29, 0x1f, 0xd0, 0x05, 0x29, - 0x23, 0xd1, 0x00, 0x20, 0x00, 0xf0, 0x17, 0xfb, - 0x23, 0xe0, 0x68, 0x61, 0x14, 0x48, 0x1c, 0x30, - 0xc1, 0x68, 0x02, 0x69, 0x89, 0x18, 0xc1, 0x60, - 0x00, 0xf0, 0x2f, 0xfb, 0xe0, 0x68, 0x3c, 0x00, - 0xe4, 0x83, 0x01, 0x00, 0x01, 0x38, 0xe0, 0x60, - 0x16, 0xd1, 0x32, 0x20, 0xe0, 0x60, 0xff, 0xf7, - 0xa3, 0xfe, 0x11, 0xe0, 0x00, 0x20, 0x00, 0xf0, - 0x01, 0xfb, 0x00, 0xf0, 0x2d, 0xfc, 0x01, 0x20, - 0x20, 0x70, 0x09, 0xe0, 0x00, 0x20, 0x00, 0xf0, - 0xf9, 0xfa, 0xff, 0xf7, 0x45, 0xff, 0x03, 0xe0, - 0x05, 0x21, 0x0b, 0x20, 0xe8, 0xf7, 0x46, 0xff, - 0x68, 0x69, 0x61, 0x68, 0xe7, 0xf7, 0xdd, 0xff, - 0x3c, 0x00, 0x20, 0x84, 0x01, 0x00, 0xb0, 0xbd, - 0x00, 0x00, 0x7c, 0xd9, 0x01, 0x00, 0x20, 0xf7, - 0x01, 0x00, 0xf7, 0xb5, 0x04, 0x1c, 0x17, 0x1c, - 0xff, 0xf7, 0x21, 0xfe, 0x20, 0x0a, 0xff, 0xf7, - 0x18, 0xff, 0x20, 0x06, 0x00, 0x0e, 0xff, 0xf7, - 0x62, 0xfe, 0xff, 0xf7, 0x18, 0xfe, 0xa1, 0x20, - 0xff, 0xf7, 0x5d, 0xfe, 0x00, 0x25, 0x16, 0xe0, - 0x00, 0x20, 0x00, 0x24, 0x40, 0x06, 0x06, 0x0e, - 0xff, 0xf7, 0x3c, 0x00, 0x5c, 0x84, 0x01, 0x00, - 0xd1, 0xfd, 0x00, 0x06, 0x00, 0x0e, 0x30, 0x43, - 0x01, 0x34, 0x08, 0x2c, 0xf5, 0xdb, 0x29, 0x1c, - 0x01, 0x9a, 0x01, 0x35, 0xbd, 0x42, 0x50, 0x54, - 0x01, 0xda, 0x00, 0x20, 0x00, 0xe0, 0x01, 0x20, - 0xff, 0xf7, 0xd4, 0xfd, 0xbd, 0x42, 0xe6, 0xdb, - 0xff, 0xf7, 0x1e, 0xfe, 0xfe, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0xff, 0xf7, 0x19, 0xfe, 0x09, 0x21, - 0x89, 0x03, 0x00, 0x22, 0x3c, 0x00, 0x98, 0x84, - 0x01, 0x00, 0x02, 0x20, 0xf0, 0xf7, 0xe9, 0xf9, - 0x80, 0xbd, 0x09, 0x21, 0x89, 0x03, 0x80, 0xb5, - 0x00, 0x22, 0x02, 0x20, 0xf0, 0xf7, 0xc9, 0xf9, - 0x01, 0x21, 0x09, 0x48, 0x89, 0x03, 0x81, 0x61, - 0x42, 0x68, 0x0a, 0x43, 0x42, 0x60, 0x82, 0x68, - 0x11, 0x43, 0x81, 0x60, 0x01, 0x21, 0x49, 0x04, - 0x81, 0x61, 0x82, 0x68, 0x8a, 0x43, 0x82, 0x60, - 0x42, 0x68, 0x11, 0x43, 0x41, 0x60, 0x3c, 0x00, - 0xd4, 0x84, 0x01, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0xf0, 0xb5, 0x04, 0x1c, - 0xc0, 0x68, 0x7b, 0x4e, 0x05, 0x68, 0x30, 0x78, - 0x85, 0xb0, 0x01, 0x28, 0x01, 0xd0, 0x02, 0x28, - 0x72, 0xd1, 0x00, 0x21, 0x20, 0x69, 0xf2, 0xf7, - 0x41, 0xf9, 0x76, 0x49, 0xf2, 0xf7, 0x24, 0xfc, - 0x00, 0x28, 0x69, 0xd0, 0x20, 0x1c, 0x20, 0x30, - 0x41, 0x7a, 0x08, 0x29, 0x02, 0xd1, 0x72, 0x4a, - 0x3c, 0x00, 0x10, 0x85, 0x01, 0x00, 0x00, 0x21, - 0x51, 0x61, 0x00, 0x7a, 0x22, 0x6a, 0x18, 0x21, - 0xf2, 0xf7, 0xc9, 0xfb, 0xe1, 0x6a, 0x37, 0x1c, - 0x40, 0x18, 0x6c, 0x49, 0x02, 0x90, 0x30, 0x78, - 0x0e, 0x1c, 0xff, 0x36, 0x0a, 0x1d, 0x01, 0x36, - 0x01, 0x28, 0x04, 0x92, 0x07, 0xd0, 0x65, 0x4a, - 0x02, 0x99, 0x1c, 0x32, 0x28, 0x1c, 0xed, 0xf7, - 0xe2, 0xfb, 0x00, 0x28, 0x6b, 0xd0, 0x32, 0x21, - 0x20, 0x69, 0x3c, 0x00, 0x4c, 0x85, 0x01, 0x00, - 0xf2, 0xf7, 0x16, 0xf9, 0x01, 0x90, 0x20, 0x69, - 0x01, 0x21, 0xf2, 0xf7, 0x11, 0xf9, 0x01, 0x1c, - 0x5e, 0x48, 0x01, 0x23, 0x01, 0x9a, 0xed, 0xf7, - 0x07, 0xfc, 0x00, 0x28, 0x04, 0xd1, 0x5b, 0x48, - 0xed, 0xf7, 0x92, 0xfa, 0x00, 0x21, 0xb9, 0x60, - 0x56, 0x48, 0x1c, 0x30, 0x81, 0x68, 0xea, 0xf7, - 0x19, 0xfc, 0x20, 0x1c, 0x14, 0x30, 0x03, 0x90, - 0x04, 0x99, 0xf2, 0xf7, 0x3c, 0x00, 0x88, 0x85, - 0x01, 0x00, 0xd5, 0xfb, 0x00, 0x28, 0x05, 0xd1, - 0x00, 0x22, 0xba, 0x60, 0x04, 0x98, 0x03, 0x99, - 0xf2, 0xf7, 0x6b, 0xfb, 0x4f, 0x49, 0x28, 0x89, - 0x09, 0x88, 0x88, 0x42, 0x03, 0xd0, 0x00, 0x22, - 0x4c, 0x49, 0xba, 0x60, 0x08, 0x80, 0x03, 0x21, - 0x20, 0x69, 0xf2, 0xf7, 0xe4, 0xf8, 0x00, 0x28, - 0x10, 0xd0, 0x46, 0x49, 0x82, 0x78, 0x20, 0x31, - 0x0b, 0x79, 0x94, 0x46, 0x9a, 0x42, 0x3c, 0x00, - 0xc4, 0x85, 0x01, 0x00, 0x09, 0xd0, 0x00, 0x22, - 0xba, 0x60, 0x62, 0x46, 0x0a, 0x71, 0x80, 0x78, - 0x01, 0x21, 0xf3, 0xf7, 0x05, 0xf9, 0x00, 0xe0, - 0x77, 0xe0, 0x06, 0x21, 0x20, 0x69, 0xf2, 0xf7, - 0xcd, 0xf8, 0x00, 0x28, 0x08, 0xd0, 0x81, 0x78, - 0x3a, 0x48, 0x40, 0x30, 0x82, 0x88, 0x91, 0x42, - 0x02, 0xd0, 0x00, 0x22, 0xba, 0x60, 0x81, 0x80, - 0x2a, 0x21, 0x20, 0x69, 0xf2, 0xf7, 0xbe, 0xf8, - 0x3c, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x28, - 0x0d, 0xd0, 0x80, 0x78, 0xf1, 0x69, 0x33, 0x4a, - 0x81, 0x42, 0x08, 0xd0, 0x00, 0x21, 0xb9, 0x60, - 0xf0, 0x61, 0x10, 0x1c, 0xed, 0xf7, 0x09, 0xfb, - 0x2f, 0x48, 0xed, 0xf7, 0xfa, 0xfa, 0x38, 0x78, - 0x3b, 0x1c, 0x01, 0x28, 0x17, 0xd1, 0x02, 0x20, - 0x18, 0x70, 0x2a, 0x4f, 0x01, 0x23, 0x3b, 0x61, - 0x27, 0x4b, 0x03, 0xcd, 0x1c, 0x33, 0x08, 0x3d, - 0x02, 0x9a, 0x3c, 0x00, 0x3c, 0x86, 0x01, 0x00, - 0xed, 0xf7, 0xb0, 0xfa, 0x38, 0x1c, 0xed, 0xf7, - 0xd7, 0xf8, 0x32, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0x00, 0x21, 0x01, 0x20, 0xe7, 0xf7, 0xc4, 0xfe, - 0x00, 0xf0, 0xf4, 0xf9, 0x20, 0x1c, 0xf9, 0xf7, - 0xd5, 0xfb, 0x07, 0x1c, 0x11, 0xd1, 0x20, 0x1c, - 0xf9, 0xf7, 0x88, 0xfb, 0x07, 0x1c, 0x2e, 0xd0, - 0x01, 0x23, 0x3b, 0x61, 0x68, 0x89, 0x40, 0x21, - 0xc8, 0x53, 0x73, 0x68, 0x3c, 0x00, 0x78, 0x86, - 0x01, 0x00, 0x00, 0x2b, 0x04, 0xd0, 0x21, 0x1c, - 0x00, 0x20, 0x04, 0x9a, 0xe7, 0xf7, 0xac, 0xfe, - 0x01, 0x23, 0xfb, 0x62, 0x20, 0x69, 0x32, 0x21, - 0xf2, 0xf7, 0x75, 0xf8, 0x05, 0x1c, 0x20, 0x69, - 0x01, 0x21, 0xf2, 0xf7, 0x70, 0xf8, 0x0e, 0x4e, - 0x01, 0x1c, 0x2a, 0x1c, 0x30, 0x1c, 0xed, 0xf7, - 0xc0, 0xfb, 0x00, 0x28, 0x0e, 0xd1, 0x32, 0x21, - 0x20, 0x69, 0xf2, 0xf7, 0x64, 0xf8, 0x3c, 0x00, - 0xb4, 0x86, 0x01, 0x00, 0x05, 0x1c, 0x20, 0x69, - 0x01, 0x21, 0xf2, 0xf7, 0x5f, 0xf8, 0x01, 0x1c, - 0x3b, 0x1c, 0x2a, 0x1c, 0x30, 0x1c, 0xed, 0xf7, - 0xd7, 0xfa, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0x7c, 0xd9, 0x01, 0x00, 0x40, 0xf8, 0x01, 0x00, - 0x20, 0xf7, 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, - 0x80, 0x2a, 0x80, 0xb5, 0x06, 0xd0, 0x81, 0x2a, - 0x03, 0xd0, 0x04, 0x21, 0x0b, 0x20, 0xe8, 0xf7, - 0x3c, 0x00, 0xf0, 0x86, 0x01, 0x00, 0xd9, 0xfd, - 0x80, 0xbd, 0xff, 0xf7, 0x5c, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x81, 0x78, 0xff, 0x29, - 0x01, 0xd0, 0x00, 0x79, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x80, 0xf8, 0x01, 0x00, 0x30, 0xb5, - 0x89, 0xb0, 0x00, 0x93, 0x0e, 0x4d, 0x13, 0x1c, - 0x04, 0x1c, 0x2a, 0x1c, 0xec, 0xf7, 0x25, 0xfd, - 0x01, 0xa9, 0x06, 0xa8, 0xa2, 0x68, 0xec, 0xf7, - 0xce, 0xfe, 0x3c, 0x00, 0x2c, 0x87, 0x01, 0x00, - 0x01, 0xaa, 0x06, 0xa9, 0x28, 0x1c, 0x63, 0x6a, - 0xed, 0xf7, 0x44, 0xfa, 0x04, 0x1c, 0x01, 0x28, - 0x04, 0xd1, 0x28, 0x1c, 0xed, 0xf7, 0x2c, 0xf8, - 0x00, 0xf0, 0x4a, 0xf8, 0x20, 0x1c, 0x09, 0xb0, - 0x30, 0xbd, 0x00, 0x00, 0x20, 0xf7, 0x01, 0x00, - 0x80, 0xb5, 0xed, 0xf7, 0x2b, 0xf8, 0x00, 0xf0, - 0x7d, 0xf8, 0x02, 0x48, 0xed, 0xf7, 0x02, 0xfa, - 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x87, - 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x28, 0x0b, 0xd1, 0x06, 0x48, 0xed, 0xf7, - 0xf8, 0xf9, 0x00, 0xf0, 0x6e, 0xf8, 0x01, 0x20, - 0xed, 0xf7, 0xeb, 0xfa, 0x03, 0x49, 0x03, 0x20, - 0xf9, 0xf7, 0x35, 0xfe, 0x80, 0xbd, 0x20, 0xf7, - 0x01, 0x00, 0x6d, 0x87, 0x01, 0x00, 0xb0, 0xb5, - 0x10, 0x4d, 0x04, 0x1c, 0x13, 0x1c, 0x2a, 0x1c, - 0x88, 0xb0, 0xec, 0xf7, 0x02, 0xfd, 0x3c, 0x00, - 0xa4, 0x87, 0x01, 0x00, 0x21, 0x1c, 0x0a, 0x31, - 0x06, 0x22, 0x28, 0x1d, 0xe7, 0xf7, 0xa4, 0xfe, - 0x69, 0x46, 0x05, 0xa8, 0x62, 0x69, 0xec, 0xf7, - 0x87, 0xfe, 0x28, 0x1c, 0xec, 0xf7, 0xee, 0xff, - 0x7f, 0x23, 0xdb, 0x43, 0x28, 0x1c, 0x6a, 0x46, - 0x05, 0xa9, 0xed, 0xf7, 0xf9, 0xf9, 0x00, 0xf0, - 0x1d, 0xf8, 0x08, 0xb0, 0xb0, 0xbd, 0x00, 0x00, - 0x20, 0xf7, 0x01, 0x00, 0x0a, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0xe0, 0x87, 0x01, 0x00, 0x01, 0x78, - 0x00, 0x29, 0x06, 0xd0, 0x02, 0x29, 0x01, 0xd0, - 0x05, 0x29, 0x07, 0xd1, 0x03, 0x21, 0x01, 0x70, - 0x80, 0xbd, 0x01, 0x21, 0x01, 0x70, 0x00, 0xf0, - 0x2e, 0xfa, 0x80, 0xbd, 0x03, 0x21, 0x0b, 0x20, - 0xe8, 0xf7, 0x4f, 0xfd, 0x80, 0xbd, 0x7c, 0xd9, - 0x01, 0x00, 0x09, 0x49, 0x80, 0xb5, 0x08, 0x78, - 0x00, 0x28, 0x06, 0xd0, 0x02, 0x28, 0x01, 0xd0, - 0x05, 0x28, 0x3c, 0x00, 0x1c, 0x88, 0x01, 0x00, - 0x05, 0xd1, 0x04, 0x20, 0x08, 0x70, 0x80, 0xbd, - 0xff, 0xf7, 0x38, 0xfd, 0x80, 0xbd, 0x02, 0x21, - 0x0b, 0x20, 0xe8, 0xf7, 0x39, 0xfd, 0x80, 0xbd, - 0x7c, 0xd9, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x0b, 0x20, 0x04, 0x4a, 0xfa, 0xf7, 0x82, 0xff, - 0xf6, 0xf7, 0x86, 0xfd, 0x02, 0x49, 0x08, 0x61, - 0x80, 0xbd, 0x00, 0x00, 0xdd, 0x86, 0x01, 0x00, - 0x7c, 0xd9, 0x01, 0x00, 0x3c, 0x00, 0x58, 0x88, - 0x01, 0x00, 0x0c, 0x48, 0x80, 0xb5, 0x01, 0x78, - 0x06, 0x29, 0x0e, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x06, 0x03, - 0x07, 0x07, 0x07, 0x06, 0x00, 0x20, 0x00, 0xf0, - 0xc2, 0xf8, 0x80, 0xbd, 0x05, 0x21, 0x01, 0x70, - 0x80, 0xbd, 0x04, 0x21, 0x0b, 0x20, 0xe8, 0xf7, - 0x0e, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0x7c, 0xd9, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x88, 0x01, 0x00, 0x10, 0xb5, 0x0d, 0x4b, - 0x04, 0x1c, 0x18, 0x1c, 0x10, 0x30, 0x00, 0x2c, - 0x08, 0xd0, 0xdb, 0x88, 0x5b, 0x04, 0x5b, 0x0c, - 0x0b, 0x80, 0x80, 0x7b, 0x48, 0x80, 0x04, 0x20, - 0x10, 0x80, 0x08, 0xe0, 0xda, 0x88, 0x01, 0x24, - 0xe4, 0x03, 0x22, 0x40, 0x0c, 0x88, 0x22, 0x43, - 0xda, 0x80, 0x49, 0x88, 0x81, 0x73, 0x01, 0x20, - 0x10, 0xbd, 0x00, 0x00, 0x30, 0x00, 0x07, 0x00, - 0x3c, 0x00, 0xd0, 0x88, 0x01, 0x00, 0x70, 0xb5, - 0x10, 0x4e, 0x02, 0x1c, 0x00, 0x23, 0xf0, 0x56, - 0x00, 0x2a, 0x02, 0xd0, 0x08, 0x70, 0x01, 0x24, - 0x15, 0xe0, 0x00, 0x23, 0xcd, 0x56, 0x85, 0x42, - 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, 0x28, 0x1c, - 0x00, 0xf0, 0x5f, 0xf9, 0x04, 0x1c, 0x0a, 0xd0, - 0x07, 0x48, 0x35, 0x70, 0x00, 0x68, 0x00, 0x28, - 0x03, 0xd0, 0x00, 0x21, 0x0a, 0x20, 0xf9, 0xf7, - 0x28, 0xfd, 0x3c, 0x00, 0x0c, 0x89, 0x01, 0x00, - 0x00, 0xf0, 0x16, 0xfa, 0x20, 0x1c, 0x70, 0xbd, - 0xf4, 0x6b, 0x01, 0x00, 0x3c, 0xd9, 0x01, 0x00, - 0x03, 0x1c, 0x08, 0x1c, 0x00, 0x2b, 0x80, 0xb5, - 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, 0x04, 0x22, - 0x04, 0x49, 0xe7, 0xf7, 0xe3, 0xfd, 0x02, 0xe0, - 0x00, 0x68, 0x00, 0xf0, 0xcf, 0xf9, 0x01, 0x20, - 0x80, 0xbd, 0x00, 0x00, 0xf4, 0x74, 0x01, 0x00, - 0x10, 0xb5, 0xff, 0xf7, 0x3c, 0x00, 0x48, 0x89, - 0x01, 0x00, 0x97, 0xfb, 0xff, 0xf7, 0x89, 0xfc, - 0x04, 0x1c, 0xff, 0xf7, 0xb8, 0xfb, 0xff, 0xf7, - 0x84, 0xfc, 0x00, 0x2c, 0x02, 0xd1, 0x01, 0x28, - 0x00, 0xd1, 0x10, 0xbd, 0x00, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0xf8, 0xb5, 0x20, 0x4f, 0x04, 0x1c, - 0x78, 0x78, 0x0e, 0x1c, 0x02, 0x28, 0x2e, 0xd0, - 0x1e, 0x4a, 0xf9, 0x68, 0x91, 0x61, 0x14, 0x23, - 0x1d, 0x49, 0x58, 0x43, 0x40, 0x18, 0x3c, 0x00, - 0x84, 0x89, 0x01, 0x00, 0x41, 0x7b, 0xb8, 0x78, - 0xf8, 0xf7, 0x14, 0xfe, 0x00, 0xf0, 0x8a, 0xf9, - 0x00, 0x25, 0x04, 0xe0, 0x00, 0x21, 0xb8, 0x78, - 0xf8, 0xf7, 0x0c, 0xfe, 0x01, 0x35, 0x78, 0x78, - 0x14, 0x23, 0x14, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x80, 0x7a, 0xa8, 0x42, 0xf2, 0xdc, 0x00, 0x25, - 0x08, 0xe0, 0x00, 0x21, 0xb8, 0x78, 0xf8, 0xf7, - 0xfd, 0xfd, 0x0f, 0x48, 0x00, 0x68, 0x20, 0x70, - 0x3c, 0x00, 0xc0, 0x89, 0x01, 0x00, 0x01, 0x34, - 0x01, 0x35, 0xb5, 0x42, 0xf4, 0xdb, 0x09, 0x4a, - 0xf8, 0x68, 0x50, 0x61, 0x78, 0x78, 0x02, 0x28, - 0x06, 0xd1, 0xb8, 0x68, 0x32, 0x1c, 0x21, 0x1c, - 0x00, 0x04, 0x00, 0x0c, 0xff, 0xf7, 0x25, 0xfd, - 0xb8, 0x68, 0x80, 0x19, 0xb8, 0x60, 0xf8, 0xbd, - 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x64, 0x8d, 0x01, 0x00, 0x30, 0x20, - 0x07, 0x00, 0x3c, 0x00, 0xfc, 0x89, 0x01, 0x00, - 0x70, 0xb5, 0x06, 0x1c, 0x0c, 0x4d, 0x00, 0x24, - 0x2c, 0x70, 0xff, 0xf7, 0x39, 0xfc, 0x0a, 0x48, - 0x18, 0x21, 0x1c, 0x30, 0xac, 0x60, 0xe7, 0xf7, - 0x43, 0xfd, 0x08, 0x48, 0x44, 0x61, 0xf9, 0xf7, - 0x63, 0xf9, 0x00, 0x2e, 0x06, 0xd1, 0x06, 0x48, - 0x29, 0x69, 0xf6, 0xf7, 0xa7, 0xfc, 0x00, 0x20, - 0xec, 0xf7, 0xb0, 0xfe, 0x70, 0xbd, 0x00, 0x00, - 0x7c, 0xd9, 0x01, 0x00, 0x3c, 0x00, 0x38, 0x8a, - 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0x30, 0xb5, 0x12, 0x4c, 0x85, 0xb0, - 0x20, 0x68, 0x00, 0x28, 0x1c, 0xd0, 0x0f, 0x48, - 0x14, 0x38, 0x80, 0x68, 0x00, 0x28, 0x01, 0xd1, - 0xff, 0xf7, 0xc1, 0xfb, 0x20, 0x68, 0x00, 0x23, - 0x00, 0x68, 0x01, 0xaa, 0x04, 0x30, 0x01, 0x21, - 0xec, 0xf7, 0xd1, 0xfd, 0x08, 0x49, 0x08, 0x4a, - 0x08, 0x31, 0x0c, 0x31, 0x00, 0x92, 0x3c, 0x00, - 0x74, 0x8a, 0x01, 0x00, 0x03, 0xc9, 0x00, 0xab, - 0x45, 0x18, 0x99, 0x7b, 0x01, 0x9a, 0x20, 0x68, - 0x2b, 0x1c, 0xf2, 0xf7, 0x2b, 0xfe, 0x05, 0xb0, - 0x30, 0xbd, 0x00, 0x00, 0x90, 0xd9, 0x01, 0x00, - 0x29, 0x81, 0x01, 0x00, 0x10, 0xb5, 0x13, 0x4c, - 0x14, 0x23, 0x60, 0x70, 0x58, 0x43, 0x12, 0x4b, - 0xc1, 0x18, 0x8a, 0x88, 0xe2, 0x80, 0x18, 0x58, - 0xe0, 0x60, 0x08, 0x7a, 0xa0, 0x70, 0xff, 0x28, - 0x3c, 0x00, 0xb0, 0x8a, 0x01, 0x00, 0x12, 0xd0, - 0x00, 0x22, 0x08, 0x21, 0x0d, 0x4b, 0xf8, 0xf7, - 0x22, 0xfd, 0x00, 0x22, 0x02, 0x20, 0xe1, 0x68, - 0xef, 0xf7, 0xbd, 0xfe, 0x0a, 0x49, 0xe0, 0x68, - 0x48, 0x61, 0x4a, 0x68, 0x02, 0x43, 0x4a, 0x60, - 0x8a, 0x68, 0x10, 0x43, 0x88, 0x60, 0x60, 0x78, - 0x02, 0x28, 0x01, 0xd1, 0xff, 0xf7, 0xdf, 0xfc, - 0x10, 0xbd, 0x40, 0xd9, 0x01, 0x00, 0x64, 0x8d, - 0x01, 0x00, 0x3c, 0x00, 0xec, 0x8a, 0x01, 0x00, - 0xb8, 0x0b, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, - 0xfe, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x06, 0x21, - 0x15, 0x4b, 0x41, 0x43, 0x58, 0x5c, 0x82, 0x06, - 0x14, 0x48, 0x92, 0x0e, 0x42, 0x71, 0xc9, 0x18, - 0x4a, 0x78, 0xd2, 0x06, 0xd2, 0x0e, 0x02, 0x71, - 0x42, 0x78, 0x0c, 0x23, 0x1a, 0x43, 0x42, 0x70, - 0x42, 0x78, 0x8b, 0x78, 0x92, 0x08, 0x92, 0x00, - 0x9b, 0x07, 0x9b, 0x0f, 0x3c, 0x00, 0x28, 0x8b, - 0x01, 0x00, 0x1a, 0x43, 0x42, 0x70, 0x02, 0x78, - 0xc0, 0x23, 0x9a, 0x43, 0x40, 0x32, 0x02, 0x70, - 0x02, 0x78, 0x38, 0x23, 0x1a, 0x43, 0x02, 0x70, - 0x02, 0x78, 0xc9, 0x78, 0x04, 0x23, 0x9a, 0x43, - 0x89, 0x00, 0x19, 0x40, 0x11, 0x43, 0x01, 0x70, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x00, 0xd8, 0x8d, - 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, 0x8f, 0xb5, - 0x00, 0x20, 0x02, 0x90, 0x03, 0x90, 0x3c, 0x00, - 0x64, 0x8b, 0x01, 0x00, 0x07, 0x48, 0x02, 0xaa, - 0x03, 0xa9, 0x00, 0x91, 0x01, 0x92, 0x43, 0x89, - 0x02, 0x89, 0x03, 0xc8, 0xff, 0xf7, 0xd4, 0xfb, - 0x03, 0x98, 0x02, 0x99, 0xff, 0xf7, 0x04, 0xfc, - 0x8f, 0xbd, 0x00, 0x00, 0x04, 0x8e, 0x01, 0x00, - 0x08, 0x49, 0x4a, 0x78, 0x00, 0x2a, 0x03, 0xd1, - 0x88, 0x80, 0x00, 0x20, 0x88, 0x60, 0x70, 0x47, - 0x14, 0x23, 0x5a, 0x43, 0x04, 0x4b, 0xd2, 0x18, - 0x3c, 0x00, 0xa0, 0x8b, 0x01, 0x00, 0xd2, 0x88, - 0x42, 0x43, 0xc8, 0x88, 0x42, 0x43, 0x8a, 0x60, - 0x70, 0x47, 0x40, 0xd9, 0x01, 0x00, 0x64, 0x8d, - 0x01, 0x00, 0xf8, 0xb5, 0x25, 0x4e, 0x04, 0x1c, - 0x30, 0x7a, 0x40, 0x08, 0x40, 0x00, 0x30, 0x72, - 0xb0, 0x7a, 0x00, 0x20, 0xb0, 0x72, 0x01, 0x27, - 0x01, 0x2c, 0x20, 0x4d, 0x01, 0xd0, 0xfc, 0x42, - 0x13, 0xd1, 0x30, 0x7b, 0x38, 0x43, 0x30, 0x73, - 0x00, 0x22, 0x3c, 0x00, 0xdc, 0x8b, 0x01, 0x00, - 0x21, 0x1c, 0x00, 0x20, 0xff, 0xf7, 0x6e, 0xfb, - 0x63, 0x1c, 0x01, 0xd1, 0x3f, 0x21, 0xe9, 0x73, - 0xb1, 0x7a, 0xa0, 0x22, 0x11, 0x43, 0xb1, 0x72, - 0x31, 0x7a, 0x39, 0x43, 0x31, 0x72, 0xf8, 0xbd, - 0x30, 0x7b, 0x40, 0x08, 0x40, 0x00, 0x30, 0x73, - 0x01, 0x22, 0x21, 0x1c, 0x01, 0x20, 0xff, 0xf7, - 0x59, 0xfb, 0x01, 0x20, 0x00, 0x21, 0xe9, 0x73, - 0xb1, 0x7a, 0x02, 0x22, 0x3c, 0x00, 0x18, 0x8c, - 0x01, 0x00, 0x11, 0x43, 0xb1, 0x72, 0xb1, 0x7a, - 0x04, 0x22, 0x11, 0x43, 0xb1, 0x72, 0xb1, 0x7a, - 0x30, 0x22, 0x11, 0x43, 0xb1, 0x72, 0x31, 0x7a, - 0x39, 0x43, 0x31, 0x72, 0x08, 0x49, 0x4a, 0x68, - 0x80, 0x23, 0x9a, 0x43, 0x4a, 0x60, 0x0a, 0x68, - 0x1a, 0x43, 0x0a, 0x60, 0x31, 0x7b, 0x39, 0x43, - 0x31, 0x73, 0xd7, 0xe7, 0x00, 0x00, 0x88, 0x00, - 0x07, 0x00, 0x40, 0x00, 0x07, 0x00, 0x3c, 0x00, - 0x54, 0x8c, 0x01, 0x00, 0x6c, 0x00, 0x07, 0x00, - 0xb0, 0xb5, 0x0e, 0x4d, 0x0e, 0x48, 0x29, 0x69, - 0xf6, 0xf7, 0x9e, 0xfb, 0x0d, 0x48, 0xec, 0xf7, - 0x93, 0xfd, 0x0d, 0x48, 0x09, 0x4c, 0x00, 0x88, - 0x1c, 0x34, 0xa0, 0x82, 0xf1, 0xf7, 0x5a, 0xff, - 0x20, 0x61, 0xfa, 0xf7, 0x97, 0xf8, 0x02, 0x1c, - 0x23, 0x1c, 0x00, 0x21, 0x00, 0x20, 0xec, 0xf7, - 0x8b, 0xff, 0x32, 0x20, 0xe8, 0x60, 0xff, 0xf7, - 0x3c, 0x00, 0x90, 0x8c, 0x01, 0x00, 0xa5, 0xfa, - 0xb0, 0xbd, 0x7c, 0xd9, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0xdd, 0x84, 0x01, 0x00, 0x20, 0xf7, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x68, 0x78, - 0x00, 0x28, 0x0e, 0xd0, 0x14, 0x23, 0x08, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x44, 0x7a, 0x06, 0xe0, - 0xa8, 0x68, 0xe0, 0x40, 0x01, 0x06, 0x09, 0x0e, - 0xa8, 0x78, 0xf8, 0xf7, 0x76, 0xfc, 0x08, 0x3c, - 0xf6, 0xd5, 0x3c, 0x00, 0xcc, 0x8c, 0x01, 0x00, - 0xb0, 0xbd, 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, - 0x64, 0x8d, 0x01, 0x00, 0x01, 0x1c, 0x14, 0x48, - 0xb0, 0xb5, 0x01, 0x60, 0x13, 0x48, 0x02, 0x7f, - 0x02, 0x23, 0x9a, 0x43, 0x02, 0x77, 0x02, 0x7f, - 0x01, 0x24, 0x22, 0x43, 0x02, 0x77, 0x10, 0x4d, - 0x00, 0x29, 0x0c, 0xd0, 0x01, 0x22, 0x00, 0x21, - 0x03, 0x20, 0xef, 0xf7, 0x9f, 0xfd, 0x0d, 0x49, - 0x48, 0x7c, 0xa0, 0x43, 0x3c, 0x00, 0x08, 0x8d, - 0x01, 0x00, 0x48, 0x74, 0x68, 0x7a, 0x20, 0x43, - 0x68, 0x72, 0xb0, 0xbd, 0x01, 0x7f, 0x21, 0x43, - 0x01, 0x77, 0x68, 0x7a, 0x40, 0x08, 0x40, 0x00, - 0x68, 0x72, 0x01, 0x22, 0x00, 0x21, 0x03, 0x20, - 0xef, 0xf7, 0xb1, 0xfd, 0xb0, 0xbd, 0xf4, 0x74, - 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0x88, 0x00, - 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, 0x10, 0xb5, - 0x07, 0x4c, 0x21, 0x1c, 0x00, 0x20, 0x3c, 0x00, - 0x44, 0x8d, 0x01, 0x00, 0xf9, 0xf7, 0x56, 0xfb, - 0x05, 0x48, 0x00, 0x23, 0xc0, 0x56, 0x01, 0x28, - 0x03, 0xdd, 0x21, 0x1c, 0x00, 0x20, 0xf9, 0xf7, - 0x19, 0xfb, 0x10, 0xbd, 0x65, 0x1a, 0x00, 0x00, - 0xf4, 0x6b, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x08, 0x01, 0x01, 0x00, 0x02, 0x18, 0x04, 0xff, - 0x82, 0xe8, 0xd7, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, - 0x3c, 0x00, 0x80, 0x8d, 0x01, 0x00, 0x00, 0x18, - 0x00, 0x06, 0x02, 0x03, 0x05, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x01, 0x00, 0xff, 0x10, 0x00, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x20, 0x00, 0x01, 0x00, 0x02, 0x10, - 0x00, 0x06, 0x02, 0x03, 0x05, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0c, - 0x0d, 0x0e, 0x3c, 0x00, 0xbc, 0x8d, 0x01, 0x00, - 0xff, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1b, - 0x1c, 0x1d, 0xff, 0x1a, 0x11, 0x13, 0x12, 0x0f, - 0x10, 0xff, 0x02, 0x00, 0xff, 0x01, 0x03, 0x09, - 0x0a, 0x0b, 0x00, 0x00, 0x30, 0x0d, 0x02, 0x00, - 0x00, 0x00, 0x28, 0x0e, 0x03, 0x00, 0x00, 0x00, - 0x1e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0d, - 0x02, 0x01, 0x00, 0x00, 0x1e, 0x0c, 0x00, 0x01, - 0x00, 0x00, 0x23, 0x0d, 0x3c, 0x00, 0xf8, 0x8d, - 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x1d, 0x0d, - 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, - 0xfb, 0x6d, 0x00, 0x00, 0x80, 0x00, 0x02, 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, 0x3c, 0x00, - 0x34, 0x8e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x8e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x8e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x8e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x8f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x8f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x8f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x8f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x90, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x90, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x90, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x91, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0x91, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x91, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x92, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x92, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x92, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x92, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x93, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x93, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x93, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x94, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0x94, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x94, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x95, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x95, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0x95, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x95, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0x96, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x96, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x96, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x96, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x97, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x97, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x97, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x97, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x98, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x98, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x98, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x98, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x99, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x99, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x99, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x9a, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x9a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x9a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x9a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x9b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x9b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x9b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x9c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x9c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x9c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x9c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x9c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x9d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x9d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x9d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x9d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x9e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x9e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x9e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x9e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x9f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x9f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x9f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x9f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xa0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xa0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xa0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xa1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xa1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xa1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xa1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xa2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xa2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xa2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xa2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xa3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xa3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xa3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xa3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xa4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xa4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xa4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xa4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xa5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xa5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xa5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xa5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xa6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xa6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xa6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xa6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xa7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xa7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xa7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xa7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xa7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xa8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xa8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xa8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xa8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xa9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xa9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xa9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xa9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xaa, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xaa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xaa, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xaa, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xab, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xab, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xab, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xab, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xab, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xac, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xac, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xac, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xac, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xad, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xad, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xad, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xad, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xae, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xae, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xae, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xae, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xaf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xaf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xaf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xaf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xaf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xb0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xb0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xb0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xb1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xb1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xb1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xb2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xb2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xb2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xb3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xb3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xb3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xb4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xb4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xb4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xb4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xb5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xb5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xb5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xb5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xb6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xb6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xb6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xb6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xb6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xb7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xb7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xb7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xb7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xb8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xb8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xb8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xb8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xb9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xb9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xb9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xb9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xba, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xba, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xba, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xba, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xba, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xbb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xbb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xbb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xbb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xbc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xbc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xbc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xbc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xbd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xbd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xbd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xbd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xbe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xbe, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xbe, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xbe, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xbe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xbf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xbf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xbf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xbf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xc0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xc0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xc0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xc1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xc1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xc1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xc2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xc2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xc2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xc3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xc3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xc3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xc4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xc4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xc4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xc5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xc5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xc5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xc5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xc5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xc6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xc6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xc6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xc7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xc7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xc7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xc7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xc8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xc8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xc8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xc9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xc9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xc9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xc9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xca, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xca, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xca, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xca, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xcb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xcb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xcb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xcb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xcc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xcc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xcc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xcc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xcd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xcd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xcd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xce, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xce, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xce, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xce, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xcf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xcf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xcf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xcf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xd0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xd0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xd0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xd1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xd1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xd1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xd2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xd2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xd2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xd2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xd3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xd3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xd3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xd3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xd4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xd4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xd4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xd4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xd4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xd5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xd5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xd5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xd5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xd6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xd6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xd6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xd6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xd7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xd7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xd7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xd7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xd8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xd8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xd8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xd8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xd9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xd9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xd9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xd9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xda, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xda, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xda, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xda, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xdb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xdb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xdb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xdb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xdc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xdc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xdc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xdd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xdd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xdd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xdd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xde, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xde, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xde, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xde, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xdf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xdf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xdf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xdf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xe0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xe0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xe0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xe1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xe1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xe1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xe1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xe2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xe2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xe2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xe2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xe3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xe3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xe3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xe3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xe4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xe4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xe4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xe5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xe5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xe5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xe5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xe6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xe6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xe6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xe6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xe7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xe7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xe7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xe7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xe7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xe8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xe8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xe8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xe9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xe9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xe9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xe9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xea, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xea, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xea, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xea, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xeb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xeb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xeb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xeb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xeb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xec, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xec, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xec, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xec, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xed, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xed, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xed, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xed, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xee, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xee, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xee, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xee, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xef, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xef, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xef, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xef, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xf0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xf0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xf0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xf1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xf1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xf1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xf1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xf2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xf2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xf2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xf2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xf2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xf3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xf3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xf3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xf4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xf4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xf4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xf5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xf5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xf5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xf5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xf6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xf6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xf6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xf6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xf6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xf7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xf7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xf7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xf8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xf8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xf8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xf9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xf9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xf9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xf9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xfa, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xfa, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xfa, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xfb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xfb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xfb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xfb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xfc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xfc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xfc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xfd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xfd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xfd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xfd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xfe, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xfe, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xfe, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xff, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x68, 0xff, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x10, 0x04, 0x00, 0x70, 0xb5, 0x2b, 0x48, - 0x06, 0x21, 0x81, 0x75, 0xc1, 0x75, 0x01, 0x7e, - 0x49, 0x08, 0x49, 0x00, 0x01, 0x76, 0x01, 0x7e, - 0x02, 0x22, 0x91, 0x43, 0x01, 0x76, 0x26, 0x49, - 0x0b, 0x78, 0x5b, 0x08, 0x5b, 0x00, 0x0b, 0x70, - 0x04, 0x23, 0x8b, 0x70, 0x0c, 0x23, 0x43, 0x76, - 0x20, 0x23, 0x03, 0x75, 0x1a, 0x24, 0x44, 0x75, - 0x24, 0x24, 0x84, 0x76, 0x10, 0x24, 0xc4, 0x76, - 0x3c, 0x00, 0x3c, 0x10, 0x04, 0x00, 0x2a, 0x25, - 0x4d, 0x70, 0x05, 0x7a, 0x30, 0x26, 0xb5, 0x43, - 0x20, 0x35, 0x05, 0x72, 0x85, 0x7a, 0x6d, 0x08, - 0x6d, 0x00, 0x85, 0x72, 0x85, 0x7a, 0x95, 0x43, - 0x85, 0x72, 0x85, 0x7a, 0x04, 0x26, 0x35, 0x43, - 0x85, 0x72, 0x85, 0x7a, 0x08, 0x26, 0x35, 0x43, - 0x85, 0x72, 0x85, 0x7a, 0xa5, 0x43, 0x85, 0x72, - 0x05, 0x7b, 0x2c, 0x43, 0x04, 0x73, 0x04, 0x7b, - 0x1c, 0x43, 0x3c, 0x00, 0x78, 0x10, 0x04, 0x00, - 0x04, 0x73, 0x04, 0x7b, 0x40, 0x25, 0x2c, 0x43, - 0x04, 0x73, 0x84, 0x7a, 0x23, 0x43, 0x83, 0x72, - 0x83, 0x7a, 0xab, 0x43, 0x83, 0x72, 0x03, 0x7b, - 0x80, 0x24, 0x23, 0x43, 0x03, 0x73, 0x08, 0x78, - 0x90, 0x43, 0x08, 0x70, 0x08, 0x78, 0x01, 0x22, - 0x10, 0x43, 0x08, 0x70, 0x08, 0x78, 0x04, 0x22, - 0x90, 0x43, 0x08, 0x70, 0x70, 0xbd, 0x00, 0x00, - 0x0c, 0x80, 0x07, 0x00, 0x3c, 0x00, 0xb4, 0x10, - 0x04, 0x00, 0x80, 0x80, 0x07, 0x00, 0x01, 0x49, - 0x04, 0x20, 0x48, 0x73, 0x70, 0x47, 0x40, 0x80, - 0x07, 0x00, 0x03, 0x49, 0x80, 0xb5, 0x00, 0x20, - 0x08, 0x80, 0x00, 0xf0, 0x0a, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xfc, 0x6b, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x67, 0xfb, - 0x80, 0xbd, 0x80, 0xb5, 0x0a, 0x49, 0x18, 0x20, - 0xc1, 0xf7, 0x3b, 0xfa, 0x09, 0x49, 0x3c, 0x00, - 0xf0, 0x10, 0x04, 0x00, 0x02, 0x20, 0xc1, 0xf7, - 0x37, 0xfa, 0x08, 0x49, 0x1f, 0x20, 0xc1, 0xf7, - 0x33, 0xfa, 0x07, 0x49, 0x1c, 0x20, 0xc1, 0xf7, - 0x2f, 0xfa, 0x06, 0x49, 0x03, 0x20, 0xc1, 0xf7, - 0x2b, 0xfa, 0x80, 0xbd, 0x99, 0x2a, 0x00, 0x00, - 0x41, 0x25, 0x00, 0x00, 0x55, 0x25, 0x00, 0x00, - 0x5d, 0x25, 0x00, 0x00, 0x39, 0x25, 0x00, 0x00, - 0x80, 0xb5, 0xbf, 0xf7, 0x91, 0xfd, 0x80, 0xbd, - 0x3c, 0x00, 0x2c, 0x11, 0x04, 0x00, 0x80, 0xb5, - 0x05, 0x4a, 0x05, 0x49, 0x0a, 0x20, 0xbf, 0xf7, - 0x4e, 0xff, 0x01, 0x20, 0x04, 0x49, 0x80, 0x02, - 0x08, 0x60, 0x48, 0x60, 0x80, 0xbd, 0xb4, 0x74, - 0x01, 0x00, 0xb1, 0x64, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x91, 0xfe, - 0x80, 0xbd, 0x80, 0xb5, 0x05, 0x4a, 0x05, 0x49, - 0x1b, 0x20, 0xbf, 0xf7, 0x38, 0xff, 0x01, 0x20, - 0x04, 0x49, 0x3c, 0x00, 0x68, 0x11, 0x04, 0x00, - 0xc0, 0x06, 0x08, 0x60, 0x48, 0x60, 0x80, 0xbd, - 0xb8, 0x74, 0x01, 0x00, 0x2d, 0x6e, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x80, 0xb5, 0x04, 0x48, - 0x00, 0xf0, 0x80, 0xfe, 0x03, 0x49, 0x00, 0x20, - 0x48, 0x60, 0x88, 0x60, 0x80, 0xbd, 0x00, 0x00, - 0x41, 0x4b, 0x00, 0x00, 0xbc, 0x74, 0x01, 0x00, - 0x80, 0xb5, 0xc5, 0xf7, 0xd5, 0xfe, 0xce, 0xf7, - 0xd9, 0xf8, 0x03, 0x49, 0x3c, 0x00, 0xa4, 0x11, - 0x04, 0x00, 0x08, 0x60, 0x03, 0x49, 0x0a, 0x20, - 0xd1, 0xf7, 0xef, 0xf8, 0x80, 0xbd, 0xbc, 0x74, - 0x01, 0x00, 0x49, 0x6e, 0x00, 0x00, 0x80, 0xb5, - 0x01, 0x22, 0x20, 0x21, 0x06, 0x20, 0xc8, 0xf7, - 0x56, 0xfc, 0xbf, 0xf7, 0x70, 0xfe, 0x03, 0x49, - 0x00, 0x20, 0x08, 0x60, 0x20, 0x21, 0x02, 0x48, - 0xbf, 0xf7, 0x63, 0xf9, 0x80, 0xbd, 0xcc, 0x5c, - 0x01, 0x00, 0x64, 0x6d, 0x01, 0x00, 0x3c, 0x00, - 0xe0, 0x11, 0x04, 0x00, 0x08, 0x48, 0x80, 0xb5, - 0x00, 0x68, 0x00, 0x28, 0x05, 0xd0, 0x06, 0x48, - 0x54, 0x30, 0x42, 0x6a, 0x00, 0x21, 0xbf, 0xf7, - 0xf3, 0xf8, 0x04, 0x4a, 0x04, 0x49, 0x03, 0x20, - 0xbf, 0xf7, 0xac, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x50, 0x6d, 0x01, 0x00, 0x89, 0x98, 0x00, 0x00, - 0x91, 0x98, 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x03, 0xf8, 0x00, 0xf0, 0x19, 0xf8, 0x80, 0xbd, - 0x3c, 0x00, 0x1c, 0x12, 0x04, 0x00, 0x10, 0xb5, - 0x09, 0x4c, 0x60, 0x21, 0x20, 0x1c, 0xbf, 0xf7, - 0x3a, 0xf9, 0x00, 0x20, 0xc0, 0x43, 0xa0, 0x60, - 0x20, 0x60, 0xff, 0x20, 0x02, 0x30, 0xe0, 0x84, - 0x20, 0x22, 0x20, 0x1c, 0x40, 0x30, 0x02, 0x49, - 0xbf, 0xf7, 0x5b, 0xf9, 0x10, 0xbd, 0x00, 0x10, - 0x07, 0x00, 0x70, 0x52, 0x01, 0x00, 0x00, 0x20, - 0x0a, 0x49, 0xc0, 0x43, 0x88, 0x60, 0x09, 0x4b, - 0x0a, 0x49, 0x3c, 0x00, 0x58, 0x12, 0x04, 0x00, - 0x00, 0x20, 0x82, 0x00, 0x01, 0x30, 0x00, 0x06, - 0x00, 0x0e, 0x20, 0x28, 0x99, 0x50, 0xf8, 0xd3, - 0x06, 0x49, 0x04, 0x4a, 0x08, 0x1c, 0x10, 0x30, - 0x08, 0x3a, 0x03, 0xc2, 0x70, 0x47, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0xe0, 0x7e, 0x01, 0x00, - 0x75, 0x75, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00, - 0x04, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x0c, 0x38, 0x3c, 0x00, 0x94, 0x12, - 0x04, 0x00, 0x01, 0x21, 0x41, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x70, 0x78, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x03, 0x48, 0x00, 0x21, 0x00, 0x22, - 0x00, 0x23, 0x0e, 0xc0, 0x08, 0xc0, 0x70, 0x47, - 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, 0x04, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x48, 0x61, 0x02, 0x48, - 0x40, 0x21, 0x1c, 0x30, 0xbf, 0xf7, 0xe9, 0xf8, - 0x80, 0xbd, 0xfc, 0x5a, 0x01, 0x00, 0x3c, 0x00, - 0xd0, 0x12, 0x04, 0x00, 0x80, 0xb5, 0xce, 0xf7, - 0x3f, 0xf8, 0x03, 0x49, 0x88, 0x61, 0x03, 0x49, - 0x03, 0x20, 0xd1, 0xf7, 0x55, 0xf8, 0x80, 0xbd, - 0xfc, 0x5a, 0x01, 0x00, 0x0d, 0x17, 0x01, 0x00, - 0x80, 0xb5, 0xc0, 0xf7, 0xa5, 0xf9, 0x80, 0xbd, - 0xfe, 0xb5, 0x6c, 0x49, 0x00, 0x20, 0x00, 0x90, - 0xc8, 0x78, 0x6b, 0x4c, 0x6b, 0x4f, 0x43, 0x07, - 0xc0, 0x06, 0xc0, 0x17, 0xdb, 0x0e, 0xe3, 0x58, - 0x3c, 0x00, 0x0c, 0x13, 0x04, 0x00, 0x01, 0x30, - 0x38, 0x62, 0x3b, 0x61, 0x08, 0x1c, 0x80, 0x78, - 0x66, 0x4e, 0x03, 0x22, 0x41, 0x07, 0xa0, 0x36, - 0x02, 0x96, 0x49, 0x0f, 0x31, 0x72, 0x89, 0x00, - 0x61, 0x58, 0x3c, 0x1c, 0x61, 0x61, 0x01, 0x91, - 0xc0, 0x06, 0xc0, 0x0f, 0x78, 0x62, 0x20, 0x1c, - 0x00, 0x27, 0x87, 0x61, 0x00, 0x20, 0x21, 0x1c, - 0xc8, 0x61, 0x59, 0x48, 0x59, 0x49, 0x00, 0x78, - 0x09, 0x79, 0x3c, 0x00, 0x48, 0x13, 0x04, 0x00, - 0x5a, 0x4c, 0x4e, 0x07, 0x76, 0x0f, 0x71, 0x1c, - 0x8c, 0x46, 0xb1, 0x00, 0x8e, 0x46, 0x56, 0x49, - 0x80, 0x31, 0x00, 0x28, 0x24, 0xd0, 0x52, 0x4f, - 0x01, 0x28, 0x7f, 0x78, 0x1a, 0xd0, 0x02, 0x28, - 0x71, 0xd1, 0x4f, 0x48, 0x00, 0x2f, 0x0c, 0xd0, - 0x01, 0x2f, 0x6c, 0xd1, 0x40, 0x79, 0x4d, 0x4d, - 0x40, 0x07, 0x40, 0x0f, 0x82, 0x00, 0xaa, 0x58, - 0x4b, 0x4d, 0x01, 0x30, 0x3c, 0x00, 0x84, 0x13, - 0x04, 0x00, 0xea, 0x61, 0xa0, 0x73, 0x04, 0x22, - 0x4b, 0x48, 0x48, 0x4d, 0xc8, 0x61, 0x4a, 0x48, - 0x00, 0x2f, 0x00, 0xd0, 0x4a, 0x48, 0x2f, 0x1c, - 0x11, 0xe0, 0x42, 0x48, 0x00, 0x2f, 0x55, 0xd1, - 0x07, 0x70, 0x02, 0x27, 0x47, 0x70, 0x3f, 0x48, - 0x40, 0x78, 0x00, 0x28, 0x10, 0xd0, 0x01, 0x28, - 0x01, 0xd0, 0x02, 0x28, 0x4a, 0xd1, 0x3f, 0x48, - 0x3d, 0x4f, 0xc8, 0x61, 0x3f, 0x48, 0x3c, 0x00, - 0xc0, 0x13, 0x04, 0x00, 0x88, 0x61, 0x3a, 0x49, - 0x70, 0x46, 0x08, 0x58, 0x35, 0x1c, 0xb8, 0x61, - 0x60, 0x46, 0x60, 0x73, 0x04, 0xe0, 0x3c, 0x48, - 0x02, 0x22, 0x88, 0x61, 0x3b, 0x48, 0xc8, 0x61, - 0x00, 0x20, 0x32, 0x49, 0x06, 0xe0, 0x0e, 0x18, - 0xb6, 0x78, 0x76, 0x07, 0x76, 0x0f, 0x04, 0x2e, - 0x2f, 0xd8, 0x01, 0x30, 0x90, 0x42, 0xf6, 0xd3, - 0xc8, 0x79, 0x2e, 0x4f, 0xc0, 0x07, 0xc0, 0x0f, - 0x3c, 0x00, 0xfc, 0x13, 0x04, 0x00, 0xf8, 0x60, - 0x33, 0x48, 0x41, 0x68, 0x19, 0x43, 0x41, 0x60, - 0x81, 0x68, 0x19, 0x43, 0x81, 0x60, 0x01, 0x9a, - 0xb9, 0x69, 0x8c, 0x46, 0x11, 0x43, 0xfa, 0x69, - 0x86, 0x68, 0x11, 0x43, 0x8e, 0x43, 0x86, 0x60, - 0x46, 0x68, 0x31, 0x43, 0x41, 0x60, 0x01, 0x99, - 0x0b, 0x43, 0x18, 0x1c, 0x61, 0x46, 0x08, 0x43, - 0x10, 0x43, 0x01, 0x1c, 0x00, 0x22, 0x02, 0x20, - 0xc7, 0xf7, 0x3c, 0x00, 0x38, 0x14, 0x04, 0x00, - 0x03, 0xfa, 0x1e, 0x4e, 0x40, 0x3e, 0x70, 0x78, - 0xc0, 0x08, 0xc0, 0x00, 0x28, 0x43, 0x70, 0x70, - 0x70, 0x1c, 0x01, 0x78, 0x00, 0xe0, 0x29, 0xe0, - 0x08, 0x25, 0xa9, 0x43, 0x01, 0x70, 0x01, 0x20, - 0xc0, 0x43, 0xb0, 0x80, 0x00, 0x21, 0x01, 0x20, - 0xcf, 0xf7, 0x6c, 0xfc, 0x30, 0x1c, 0x80, 0x30, - 0x81, 0x78, 0x09, 0x09, 0x09, 0x01, 0x81, 0x70, - 0x0f, 0x21, 0x01, 0x70, 0x3c, 0x00, 0x74, 0x14, - 0x04, 0x00, 0x16, 0x4a, 0x69, 0x04, 0x11, 0x60, - 0x51, 0x60, 0x02, 0x9e, 0x10, 0x21, 0x32, 0x7a, - 0x7b, 0x6a, 0x00, 0x2b, 0x00, 0xd1, 0x00, 0x21, - 0x11, 0x43, 0x21, 0x73, 0x81, 0x78, 0x29, 0x43, - 0x81, 0x70, 0xe0, 0x78, 0x01, 0x21, 0x08, 0x43, - 0xe0, 0x70, 0xd2, 0xf7, 0xf2, 0xf9, 0x01, 0x20, - 0x00, 0x90, 0x00, 0x98, 0xfe, 0xbd, 0xc0, 0x57, - 0x01, 0x00, 0x6c, 0x43, 0x01, 0x00, 0x3c, 0x00, - 0xb0, 0x14, 0x04, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x40, 0x90, 0x07, 0x00, 0xc9, 0x1d, 0x00, 0x00, - 0x81, 0x1d, 0x00, 0x00, 0xa5, 0x1d, 0x00, 0x00, - 0x99, 0x1d, 0x00, 0x00, 0xf1, 0x1d, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x03, 0x49, 0x00, 0x20, 0x88, 0x62, 0x08, 0x70, - 0x48, 0x70, 0x08, 0x71, 0x08, 0x62, 0x70, 0x47, - 0xac, 0x7e, 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x3c, 0x00, 0xec, 0x14, 0x04, 0x00, 0x00, 0x20, - 0xcd, 0xf7, 0x69, 0xff, 0x80, 0xbd, 0xb0, 0xb5, - 0x0f, 0x48, 0xc0, 0xf7, 0x18, 0xfc, 0x0e, 0x4d, - 0x03, 0x20, 0x28, 0x70, 0x0d, 0x49, 0x0d, 0x48, - 0x0c, 0x39, 0x48, 0x60, 0x0d, 0x48, 0x0a, 0x4c, - 0x88, 0x60, 0x40, 0x21, 0x18, 0x34, 0x20, 0x1c, - 0xbe, 0xf7, 0xc1, 0xff, 0xff, 0x21, 0x68, 0x68, - 0x09, 0x06, 0x08, 0x43, 0x20, 0x60, 0xff, 0x21, - 0x06, 0x22, 0x3c, 0x00, 0x28, 0x15, 0x04, 0x00, - 0x20, 0x1d, 0xbf, 0xf7, 0x79, 0xf8, 0x01, 0x20, - 0xe0, 0x60, 0xb0, 0xbd, 0xc0, 0xa8, 0x13, 0x0a, - 0x20, 0x6e, 0x01, 0x00, 0xc0, 0xa8, 0x13, 0x01, - 0xff, 0xff, 0xff, 0x00, 0x80, 0xb5, 0x02, 0x49, - 0x01, 0x20, 0xc8, 0xf7, 0x45, 0xff, 0x80, 0xbd, - 0x9d, 0x1c, 0x00, 0x00, 0x98, 0xb5, 0x0c, 0x4c, - 0x00, 0x20, 0x60, 0x60, 0xe0, 0x60, 0x0b, 0x4b, - 0x0b, 0x49, 0x82, 0x00, 0x3c, 0x00, 0x64, 0x15, - 0x04, 0x00, 0x01, 0x30, 0x20, 0x28, 0x99, 0x50, - 0xfa, 0xdb, 0x6a, 0x46, 0x09, 0x49, 0x05, 0x20, - 0xbf, 0xf7, 0x2f, 0xfd, 0x00, 0x20, 0xc0, 0x43, - 0x20, 0x60, 0x06, 0x49, 0x20, 0x20, 0x08, 0x60, - 0x48, 0x60, 0x98, 0xbd, 0x00, 0x00, 0x00, 0x40, - 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0xa9, 0x75, - 0x00, 0x00, 0xb5, 0x9f, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x05, 0x49, 0x00, 0x20, 0x3c, 0x00, - 0xa0, 0x15, 0x04, 0x00, 0x08, 0x60, 0x05, 0x48, - 0x81, 0x78, 0x28, 0x22, 0x91, 0x43, 0x81, 0x70, - 0x81, 0x78, 0x11, 0x43, 0x81, 0x70, 0x70, 0x47, - 0x78, 0x6e, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x41, 0x48, 0x10, 0xb5, - 0x00, 0x68, 0x02, 0x21, 0x88, 0x43, 0x3f, 0x49, - 0x08, 0x60, 0x08, 0x1c, 0x00, 0x68, 0x02, 0x21, - 0x08, 0x43, 0x3c, 0x49, 0x08, 0x60, 0x3c, 0x48, - 0x3c, 0x00, 0xdc, 0x15, 0x04, 0x00, 0x40, 0x68, - 0x80, 0x21, 0x88, 0x43, 0x3a, 0x49, 0x48, 0x60, - 0x08, 0x1c, 0x00, 0x68, 0x80, 0x21, 0x08, 0x43, - 0x37, 0x49, 0x08, 0x60, 0x37, 0x48, 0x01, 0x7a, - 0x01, 0x24, 0x21, 0x43, 0x01, 0x72, 0x01, 0x7a, - 0x02, 0x22, 0x11, 0x43, 0x01, 0x72, 0x01, 0x7a, - 0x04, 0x22, 0x91, 0x43, 0x01, 0x72, 0x01, 0x7a, - 0x08, 0x22, 0x11, 0x43, 0x01, 0x72, 0x01, 0x7b, - 0x21, 0x43, 0x3c, 0x00, 0x18, 0x16, 0x04, 0x00, - 0x01, 0x73, 0x01, 0x7b, 0x02, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x01, 0x7b, 0x04, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x01, 0x7b, 0x08, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x2e, 0x21, 0x41, 0x73, 0x81, 0x7b, - 0x38, 0x22, 0x91, 0x43, 0x28, 0x31, 0x81, 0x73, - 0x20, 0x21, 0x41, 0x74, 0x81, 0x7b, 0xc9, 0x08, - 0xc9, 0x00, 0x03, 0x31, 0x81, 0x73, 0x22, 0x21, - 0xc1, 0x73, 0x20, 0x49, 0x3c, 0x00, 0x54, 0x16, - 0x04, 0x00, 0x09, 0x7a, 0x41, 0x72, 0x1e, 0x49, - 0x49, 0x7a, 0x01, 0x74, 0x3c, 0x22, 0x02, 0x77, - 0x01, 0x1c, 0x10, 0x31, 0x4a, 0x73, 0x50, 0x23, - 0x8b, 0x73, 0x5a, 0x23, 0xcb, 0x73, 0x0d, 0x23, - 0x01, 0x1c, 0x20, 0x31, 0x0b, 0x70, 0x17, 0x4b, - 0x43, 0x84, 0x0e, 0x23, 0x4b, 0x70, 0x00, 0x21, - 0x41, 0x82, 0x30, 0x21, 0x01, 0x70, 0x05, 0x21, - 0x41, 0x70, 0x04, 0x21, 0x41, 0x71, 0x3c, 0x00, - 0x90, 0x16, 0x04, 0x00, 0x84, 0x71, 0xc4, 0x71, - 0x0c, 0x21, 0x01, 0x71, 0xf8, 0x21, 0x41, 0x80, - 0x0f, 0x49, 0xca, 0x72, 0x8a, 0x72, 0x03, 0x22, - 0x0a, 0x72, 0x09, 0x22, 0x4a, 0x72, 0x08, 0x22, - 0x0a, 0x73, 0x02, 0x7a, 0x40, 0x23, 0x1a, 0x43, - 0x02, 0x72, 0x4c, 0x73, 0xff, 0xf7, 0xa2, 0xfc, - 0x08, 0x48, 0x01, 0x78, 0x21, 0x43, 0x01, 0x70, - 0x10, 0xbd, 0x00, 0x00, 0xf0, 0x00, 0x07, 0x00, - 0x3c, 0x00, 0xcc, 0x16, 0x04, 0x00, 0xf4, 0x00, - 0x07, 0x00, 0x0c, 0x80, 0x07, 0x00, 0x76, 0x46, - 0x01, 0x00, 0x24, 0x09, 0x00, 0x00, 0x80, 0x80, - 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0x80, 0xb5, - 0x18, 0x21, 0x09, 0x48, 0xbe, 0xf7, 0xd7, 0xfe, - 0x08, 0x48, 0x00, 0x21, 0x3c, 0x38, 0x41, 0x60, - 0x81, 0x60, 0xc1, 0x60, 0x01, 0x61, 0x41, 0x61, - 0x81, 0x61, 0x01, 0x21, 0x01, 0x62, 0xff, 0xf7, - 0x5c, 0xff, 0x3c, 0x00, 0x08, 0x17, 0x04, 0x00, - 0xc0, 0xf7, 0x6c, 0xff, 0x80, 0xbd, 0x00, 0x00, - 0x24, 0x7e, 0x01, 0x00, 0xb0, 0xb5, 0x21, 0x48, - 0x00, 0x68, 0x40, 0x08, 0x1f, 0x49, 0x40, 0x00, - 0x08, 0x60, 0x08, 0x1c, 0x00, 0x68, 0x01, 0x21, - 0x08, 0x43, 0x1c, 0x49, 0x08, 0x60, 0x1c, 0x4a, - 0x10, 0x79, 0x01, 0x21, 0x08, 0x43, 0x10, 0x71, - 0x10, 0x79, 0x02, 0x21, 0x88, 0x43, 0x10, 0x71, - 0x00, 0xf0, 0x6c, 0xf8, 0x3c, 0x00, 0x44, 0x17, - 0x04, 0x00, 0x10, 0x7a, 0x01, 0x21, 0x08, 0x43, - 0x10, 0x72, 0x10, 0x7a, 0xfe, 0x21, 0x88, 0x43, - 0x0a, 0x30, 0x10, 0x72, 0x28, 0x20, 0x90, 0x72, - 0x5a, 0x20, 0xd0, 0x72, 0x11, 0x4d, 0x14, 0x20, - 0x28, 0x77, 0x2c, 0x1c, 0x10, 0x34, 0xa0, 0x73, - 0x16, 0x20, 0xa8, 0x75, 0x18, 0x20, 0xe8, 0x75, - 0xff, 0xf7, 0xa1, 0xfc, 0x0c, 0x48, 0x68, 0x86, - 0xe0, 0x7b, 0x40, 0x06, 0x40, 0x0e, 0x3c, 0x00, - 0x80, 0x17, 0x04, 0x00, 0x0e, 0x21, 0x08, 0x43, - 0xe0, 0x73, 0xe0, 0x7b, 0x80, 0x21, 0x08, 0x43, - 0xe0, 0x73, 0x07, 0x48, 0x41, 0x79, 0x04, 0x22, - 0x11, 0x43, 0x41, 0x71, 0xb0, 0xbd, 0x00, 0x00, - 0xf0, 0x00, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x30, 0x80, 0x07, 0x00, 0xff, 0x01, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x80, 0xb5, 0xff, 0xf7, - 0xaf, 0xff, 0x00, 0x20, 0x14, 0x49, 0xc0, 0x43, - 0x3c, 0x00, 0xbc, 0x17, 0x04, 0x00, 0x88, 0x60, - 0xc1, 0xf7, 0x0b, 0xf9, 0x13, 0x49, 0x00, 0x20, - 0x48, 0x62, 0xc8, 0x60, 0x48, 0x61, 0x08, 0x61, - 0x88, 0x61, 0xc8, 0x61, 0x0f, 0x4b, 0x08, 0x62, - 0x0f, 0x4a, 0x08, 0x63, 0x38, 0x33, 0x1a, 0x80, - 0x01, 0x22, 0x5a, 0x71, 0x0b, 0x4a, 0x40, 0x32, - 0xd0, 0x60, 0x13, 0x60, 0x08, 0x23, 0x13, 0x81, - 0x50, 0x60, 0x09, 0x4a, 0x8a, 0x62, 0xff, 0x22, - 0x0a, 0x70, 0x3c, 0x00, 0xf8, 0x17, 0x04, 0x00, - 0x48, 0x70, 0x05, 0x48, 0x00, 0x21, 0x00, 0x22, - 0x50, 0x30, 0x00, 0x23, 0x0e, 0xc0, 0xc1, 0xf7, - 0xff, 0xf8, 0x80, 0xbd, 0x00, 0x30, 0x07, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0xbe, 0xba, 0x00, 0x00, - 0x85, 0x75, 0x00, 0x00, 0x03, 0x48, 0x10, 0x21, - 0x81, 0x71, 0x02, 0x21, 0xc1, 0x71, 0x30, 0x21, - 0x41, 0x72, 0x70, 0x47, 0x00, 0x80, 0x07, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0x34, 0x18, - 0x04, 0x00, 0x00, 0xb5, 0xc1, 0xf7, 0xdb, 0xfb, - 0x00, 0xbd, 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, - 0xcd, 0xf7, 0x87, 0xfd, 0x01, 0x49, 0x88, 0x60, - 0x80, 0xbd, 0x50, 0xd9, 0x01, 0x00, 0x80, 0xb5, - 0x06, 0x21, 0x05, 0x48, 0xbe, 0xf7, 0xfd, 0xfd, - 0x04, 0x49, 0x00, 0x20, 0x04, 0x39, 0x08, 0x60, - 0x00, 0xf0, 0x67, 0xf8, 0x00, 0xf0, 0x03, 0xf8, - 0x80, 0xbd, 0xec, 0x67, 0x01, 0x00, 0x3c, 0x00, - 0x70, 0x18, 0x04, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0x2c, 0x21, 0x20, 0x1c, 0xbe, 0xf7, 0x10, 0xfe, - 0x01, 0x20, 0x20, 0x70, 0x03, 0x49, 0x00, 0x20, - 0x1c, 0x39, 0xc8, 0x60, 0x08, 0x61, 0x88, 0x61, - 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0xcd, 0xf7, 0x5d, 0xfd, 0x09, 0x49, - 0x88, 0x60, 0x09, 0x49, 0x08, 0x20, 0xd0, 0xf7, - 0x73, 0xfd, 0x08, 0x49, 0x09, 0x20, 0xd0, 0xf7, - 0x3c, 0x00, 0xac, 0x18, 0x04, 0x00, 0x6f, 0xfd, - 0x07, 0x49, 0x11, 0x20, 0xd0, 0xf7, 0x6b, 0xfd, - 0x06, 0x48, 0xc2, 0xf7, 0x74, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0x21, 0x35, - 0x00, 0x00, 0xa1, 0x38, 0x00, 0x00, 0x45, 0x34, - 0x00, 0x00, 0xbd, 0x26, 0x01, 0x00, 0x80, 0xb5, - 0x86, 0xb0, 0x0f, 0x48, 0xc4, 0xf7, 0x45, 0xf9, - 0x00, 0xf0, 0x45, 0xf8, 0xff, 0xf7, 0xd7, 0xff, - 0xff, 0xf7, 0x3c, 0x00, 0xe8, 0x18, 0x04, 0x00, - 0xab, 0xff, 0x0c, 0x49, 0x03, 0x20, 0xd0, 0xf7, - 0x4d, 0xfd, 0x0b, 0x48, 0x69, 0x46, 0x00, 0x90, - 0x00, 0x20, 0x01, 0x90, 0x09, 0x48, 0x04, 0x90, - 0x09, 0x48, 0x02, 0x90, 0x09, 0x48, 0x03, 0x90, - 0x09, 0x48, 0x05, 0x90, 0x00, 0x20, 0xc4, 0xf7, - 0xcf, 0xf8, 0x06, 0xb0, 0x80, 0xbd, 0x00, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x45, 0x35, 0x00, 0x00, - 0x95, 0x32, 0x00, 0x00, 0x3c, 0x00, 0x24, 0x19, - 0x04, 0x00, 0xa0, 0x7d, 0x01, 0x00, 0xfd, 0x32, - 0x00, 0x00, 0xcd, 0x31, 0x00, 0x00, 0x45, 0x7d, - 0x01, 0x00, 0x10, 0xb5, 0xcd, 0xf7, 0xd5, 0xfc, - 0x09, 0x48, 0x09, 0x4c, 0x30, 0x21, 0x60, 0x61, - 0x08, 0x48, 0x74, 0x30, 0xbe, 0xf7, 0xa9, 0xfd, - 0x00, 0x20, 0xa0, 0x62, 0x06, 0x49, 0x20, 0x61, - 0xe1, 0x63, 0x60, 0x64, 0xa0, 0x64, 0x14, 0x21, - 0x21, 0x65, 0x60, 0x62, 0x10, 0xbd, 0x3c, 0x00, - 0x60, 0x19, 0x04, 0x00, 0xb9, 0x75, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x70, 0x17, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x09, 0x20, 0x04, 0x4a, - 0xd1, 0xf7, 0xe8, 0xfe, 0xcd, 0xf7, 0xec, 0xfc, - 0x02, 0x49, 0x08, 0x63, 0x80, 0xbd, 0x00, 0x00, - 0x39, 0x39, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0x80, 0xb5, 0xac, 0x21, 0x03, 0x48, 0xbe, 0xf7, - 0x83, 0xfd, 0x00, 0xf0, 0x51, 0xf8, 0x00, 0xf0, - 0x3c, 0x00, 0x9c, 0x19, 0x04, 0x00, 0x49, 0xf8, - 0x80, 0xbd, 0xa4, 0x6c, 0x01, 0x00, 0x08, 0xb5, - 0x00, 0xf0, 0x4d, 0xf8, 0x00, 0xf0, 0x45, 0xf8, - 0x00, 0x21, 0x16, 0x20, 0x18, 0x4a, 0xd1, 0xf7, - 0xc8, 0xfe, 0x17, 0x4a, 0x04, 0x21, 0x10, 0x1c, - 0x40, 0x30, 0x01, 0x70, 0x00, 0x21, 0x81, 0x70, - 0x11, 0x21, 0xc1, 0x80, 0x14, 0x49, 0x01, 0x81, - 0x10, 0x1c, 0x80, 0x30, 0xc1, 0x78, 0x08, 0x22, - 0x91, 0x43, 0x3c, 0x00, 0xd8, 0x19, 0x04, 0x00, - 0xc1, 0x70, 0xc1, 0x78, 0x11, 0x43, 0xc1, 0x70, - 0x6a, 0x46, 0x0f, 0x49, 0x14, 0x20, 0xbf, 0xf7, - 0xf5, 0xfa, 0x0e, 0x49, 0x07, 0x20, 0xd0, 0xf7, - 0xcd, 0xfc, 0x0d, 0x49, 0x0f, 0x20, 0xd0, 0xf7, - 0xc9, 0xfc, 0xcd, 0xf7, 0xab, 0xfc, 0x0b, 0x49, - 0x08, 0x60, 0x0a, 0x48, 0x44, 0x38, 0x80, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x00, 0x20, 0xc6, 0xf7, - 0x6f, 0xf9, 0x08, 0xbd, 0x3c, 0x00, 0x14, 0x1a, - 0x04, 0x00, 0xb5, 0x3b, 0x00, 0x00, 0x00, 0x90, - 0x07, 0x00, 0xe7, 0xfd, 0x00, 0x00, 0x8d, 0x41, - 0x00, 0x00, 0xcd, 0x48, 0x00, 0x00, 0xd9, 0x49, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0xf0, 0x6f, 0xfc, 0x80, 0xbd, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x61, 0xfc, - 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, 0xb0, 0xb5, - 0x30, 0x21, 0x0c, 0x48, 0xbe, 0xf7, 0x3c, 0x00, - 0x50, 0x1a, 0x04, 0x00, 0x25, 0xfd, 0x0b, 0x4c, - 0x00, 0x25, 0x0a, 0x48, 0x84, 0x3c, 0x38, 0x22, - 0x03, 0x21, 0x70, 0x38, 0x65, 0x60, 0xbe, 0xf7, - 0xdd, 0xfd, 0x06, 0x48, 0x38, 0x22, 0x01, 0x21, - 0x38, 0x38, 0xbe, 0xf7, 0xd7, 0xfd, 0x0e, 0x20, - 0xa5, 0x60, 0x60, 0x70, 0x20, 0x70, 0x00, 0xf0, - 0x1d, 0xf8, 0xb0, 0xbd, 0x94, 0x67, 0x01, 0x00, - 0x04, 0x49, 0x00, 0xb5, 0x01, 0x20, 0x48, 0x60, - 0x3c, 0x00, 0x8c, 0x1a, 0x04, 0x00, 0x88, 0x60, - 0xc8, 0x60, 0xc3, 0xf7, 0xf8, 0xff, 0x00, 0xbd, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x0a, 0x20, 0x02, 0x4a, 0xd1, 0xf7, - 0x50, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x1d, 0x5a, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x05, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, 0xfd, 0xfb, - 0x80, 0xbd, 0x80, 0xb5, 0x02, 0x49, 0x04, 0x20, - 0xd0, 0xf7, 0x3c, 0x00, 0xc8, 0x1a, 0x04, 0x00, - 0x61, 0xfc, 0x80, 0xbd, 0x65, 0x1f, 0x00, 0x00, - 0x00, 0x21, 0x17, 0x48, 0xc9, 0x43, 0x80, 0xb5, - 0x16, 0x4b, 0x01, 0x70, 0x18, 0x1c, 0x10, 0x22, - 0x20, 0x30, 0x02, 0x71, 0x00, 0x22, 0x10, 0x33, - 0x9a, 0x73, 0x42, 0x79, 0x04, 0x23, 0x1a, 0x43, - 0x42, 0x71, 0x42, 0x79, 0x18, 0x23, 0x9a, 0x43, - 0x08, 0x32, 0x42, 0x71, 0x08, 0x1c, 0xd7, 0xf7, - 0x59, 0xf8, 0x00, 0x28, 0x3c, 0x00, 0x04, 0x1b, - 0x04, 0x00, 0x03, 0xd1, 0x01, 0x21, 0x9a, 0x20, - 0xbf, 0xf7, 0xcb, 0xfb, 0x50, 0x20, 0x09, 0x49, - 0x50, 0x22, 0x0a, 0x60, 0xc8, 0x60, 0x88, 0x60, - 0x48, 0x60, 0x08, 0x61, 0x01, 0x20, 0x48, 0x61, - 0x00, 0x20, 0xd7, 0xf7, 0xd8, 0xf8, 0x04, 0x49, - 0xff, 0x20, 0x08, 0x60, 0x80, 0xbd, 0xf4, 0x6b, - 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0x04, 0x02, - 0x07, 0x00, 0xf4, 0x74, 0x01, 0x00, 0x3c, 0x00, - 0x40, 0x1b, 0x04, 0x00, 0x80, 0xb5, 0xd7, 0xf7, - 0xfb, 0xf8, 0x80, 0xbd, 0x10, 0xb5, 0xff, 0xf7, - 0xab, 0xfb, 0xbf, 0xf7, 0xdd, 0xfb, 0x81, 0x48, - 0xcd, 0xf7, 0x98, 0xfa, 0x00, 0x24, 0x23, 0x1c, - 0x04, 0x22, 0x04, 0x21, 0x00, 0x20, 0x01, 0xf0, - 0x39, 0xfa, 0x00, 0x28, 0x01, 0xd0, 0xbf, 0xf7, - 0xc9, 0xfb, 0x23, 0x1c, 0x00, 0x22, 0xff, 0x21, - 0x00, 0x20, 0x01, 0xf0, 0x2f, 0xfa, 0x00, 0x28, - 0x3c, 0x00, 0x7c, 0x1b, 0x04, 0x00, 0x01, 0xd0, - 0xbf, 0xf7, 0xbf, 0xfb, 0x23, 0x1c, 0x00, 0x22, - 0xff, 0x21, 0x00, 0x20, 0x01, 0xf0, 0x25, 0xfa, - 0x00, 0x28, 0x01, 0xd0, 0xbf, 0xf7, 0xb5, 0xfb, - 0xc4, 0xf7, 0x27, 0xff, 0x70, 0x48, 0x84, 0x70, - 0x6f, 0x49, 0x7f, 0x20, 0x88, 0x70, 0x6e, 0x49, - 0x0c, 0x60, 0x03, 0x20, 0x08, 0x60, 0x6b, 0x48, - 0x44, 0x70, 0x6c, 0x48, 0x04, 0x80, 0x69, 0x48, - 0xc0, 0x78, 0x3c, 0x00, 0xb8, 0x1b, 0x04, 0x00, - 0x08, 0x21, 0x08, 0x43, 0x67, 0x49, 0xc8, 0x70, - 0x08, 0x1c, 0xc0, 0x78, 0x04, 0x21, 0x08, 0x43, - 0x64, 0x49, 0xc8, 0x70, 0x01, 0xf0, 0x7e, 0xfa, - 0xff, 0xf7, 0x7e, 0xff, 0xff, 0xf7, 0x2c, 0xfe, - 0x01, 0xf0, 0x46, 0xfb, 0xff, 0xf7, 0x18, 0xfb, - 0x01, 0xf0, 0x52, 0xfa, 0xff, 0xf7, 0x82, 0xfb, - 0x5f, 0x48, 0xc1, 0x68, 0x10, 0x22, 0x91, 0x43, - 0xc1, 0x60, 0x01, 0x69, 0x3c, 0x00, 0xf4, 0x1b, - 0x04, 0x00, 0x5d, 0x4a, 0x11, 0x43, 0x01, 0x61, - 0x01, 0x69, 0xd2, 0x0a, 0x91, 0x43, 0x01, 0x61, - 0xc1, 0x68, 0x5a, 0x4a, 0x11, 0x43, 0xc1, 0x60, - 0x81, 0x6a, 0x59, 0x4a, 0x11, 0x43, 0x81, 0x62, - 0x00, 0xf0, 0x77, 0xf9, 0x01, 0xf0, 0x1f, 0xf8, - 0x00, 0xf0, 0x93, 0xfa, 0x01, 0xf0, 0x99, 0xfb, - 0x00, 0xf0, 0xf1, 0xff, 0x00, 0xf0, 0x99, 0xfc, - 0x00, 0xf0, 0xdd, 0xfc, 0x00, 0xf0, 0x3c, 0x00, - 0x30, 0x1c, 0x04, 0x00, 0x83, 0xfc, 0xff, 0xf7, - 0xb3, 0xfc, 0x01, 0xf0, 0x31, 0xfa, 0x01, 0xf0, - 0x71, 0xfa, 0xff, 0xf7, 0x87, 0xfa, 0xff, 0xf7, - 0x9b, 0xfa, 0x01, 0x21, 0x01, 0x20, 0x4b, 0x4a, - 0xd1, 0xf7, 0x7c, 0xfd, 0x01, 0x21, 0x02, 0x20, - 0x49, 0x4a, 0xd1, 0xf7, 0x77, 0xfd, 0x02, 0x21, - 0x03, 0x20, 0x48, 0x4a, 0xd1, 0xf7, 0x72, 0xfd, - 0x02, 0x21, 0x04, 0x20, 0x46, 0x4a, 0xd1, 0xf7, - 0x3c, 0x00, 0x6c, 0x1c, 0x04, 0x00, 0x6d, 0xfd, - 0x02, 0x21, 0x05, 0x20, 0x45, 0x4a, 0xd1, 0xf7, - 0x68, 0xfd, 0x02, 0x21, 0x06, 0x20, 0x43, 0x4a, - 0xd1, 0xf7, 0x63, 0xfd, 0x01, 0x21, 0x07, 0x20, - 0x42, 0x4a, 0xd1, 0xf7, 0x5e, 0xfd, 0x02, 0x21, - 0x17, 0x20, 0x40, 0x4a, 0xd1, 0xf7, 0x59, 0xfd, - 0x02, 0x21, 0x08, 0x20, 0x3f, 0x4a, 0xd1, 0xf7, - 0x54, 0xfd, 0xff, 0xf7, 0xc8, 0xfd, 0x3d, 0x48, - 0x04, 0x60, 0x3c, 0x00, 0xa8, 0x1c, 0x04, 0x00, - 0x44, 0x60, 0xff, 0xf7, 0x17, 0xfa, 0xff, 0xf7, - 0x09, 0xfa, 0xff, 0xf7, 0x4f, 0xfc, 0x00, 0xf0, - 0x43, 0xf9, 0xff, 0xf7, 0x33, 0xfa, 0xff, 0xf7, - 0xfb, 0xfa, 0x01, 0xf0, 0x85, 0xf8, 0x01, 0xf0, - 0xeb, 0xf9, 0x01, 0xf0, 0x23, 0xfa, 0x01, 0xf0, - 0x71, 0xf9, 0x00, 0xf0, 0xe3, 0xff, 0xff, 0xf7, - 0x6f, 0xfa, 0x00, 0xf0, 0xaf, 0xf9, 0x00, 0xf0, - 0xbd, 0xf9, 0x00, 0xf0, 0x3c, 0x00, 0xe4, 0x1c, - 0x04, 0x00, 0xad, 0xfc, 0x00, 0xf0, 0x9b, 0xfe, - 0xff, 0xf7, 0xcd, 0xfa, 0xff, 0xf7, 0xab, 0xfe, - 0x00, 0xf0, 0xc3, 0xf9, 0xff, 0xf7, 0xab, 0xfd, - 0x00, 0xf0, 0x8d, 0xff, 0x00, 0xf0, 0x21, 0xff, - 0x00, 0xf0, 0x65, 0xf9, 0x00, 0xf0, 0x97, 0xf9, - 0x00, 0xf0, 0xfd, 0xfe, 0x00, 0xf0, 0xe5, 0xfe, - 0x00, 0xf0, 0x3f, 0xf9, 0x00, 0xf0, 0x73, 0xf9, - 0xff, 0xf7, 0x37, 0xfe, 0x00, 0xf0, 0x3c, 0x00, - 0x20, 0x1d, 0x04, 0x00, 0x21, 0xf9, 0x00, 0xf0, - 0x73, 0xfb, 0xff, 0xf7, 0xe5, 0xfb, 0x00, 0xf0, - 0xd3, 0xfb, 0xff, 0xf7, 0xa9, 0xfe, 0x00, 0xf0, - 0xbb, 0xfb, 0x00, 0xf0, 0x09, 0xff, 0x00, 0xf0, - 0xdb, 0xf9, 0x18, 0x48, 0xc9, 0xf7, 0x56, 0xf8, - 0x17, 0x48, 0xc9, 0xf7, 0x2b, 0xf8, 0x00, 0x22, - 0x01, 0x21, 0xf0, 0x20, 0xd1, 0xf7, 0x2e, 0xfd, - 0x00, 0x20, 0x10, 0xbd, 0xa9, 0x69, 0x00, 0x00, - 0x3c, 0x00, 0x5c, 0x1d, 0x04, 0x00, 0x00, 0x00, - 0x07, 0x00, 0xf0, 0x00, 0x07, 0x00, 0x2c, 0x00, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00, - 0x08, 0x00, 0xc0, 0x3f, 0x74, 0x38, 0xfc, 0xdf, - 0x7f, 0x38, 0x55, 0x69, 0x00, 0x00, 0xe5, 0x13, - 0x00, 0x00, 0x61, 0x0c, 0x00, 0x00, 0x6d, 0x0c, - 0x00, 0x00, 0x3d, 0x0c, 0x00, 0x00, 0xf1, 0x0d, - 0x00, 0x00, 0xc5, 0x33, 0x00, 0x00, 0x3d, 0x0f, - 0x00, 0x00, 0x3c, 0x00, 0x98, 0x1d, 0x04, 0x00, - 0xad, 0xd8, 0x00, 0x00, 0x80, 0x00, 0x07, 0x00, - 0x50, 0x57, 0x01, 0x00, 0x04, 0x40, 0x01, 0x00, - 0x80, 0xb5, 0x01, 0xf0, 0xa9, 0xf9, 0x00, 0xf0, - 0xc9, 0xf8, 0xff, 0xf7, 0xc5, 0xfe, 0x01, 0xf0, - 0x03, 0xfb, 0x01, 0xf0, 0x93, 0xfa, 0xff, 0xf7, - 0xcb, 0xf9, 0x2c, 0x48, 0xff, 0xf7, 0xe8, 0xf9, - 0x00, 0xf0, 0xaa, 0xf8, 0x00, 0xf0, 0x58, 0xff, - 0xff, 0xf7, 0x34, 0xfd, 0x3c, 0x00, 0xd4, 0x1d, - 0x04, 0x00, 0xff, 0xf7, 0xf2, 0xfb, 0xff, 0xf7, - 0x7a, 0xfa, 0xff, 0xf7, 0x00, 0xfa, 0x00, 0xf0, - 0x34, 0xf9, 0x00, 0xf0, 0x3c, 0xf9, 0x01, 0xf0, - 0xe2, 0xf8, 0xff, 0xf7, 0x7a, 0xf9, 0xff, 0xf7, - 0x72, 0xf9, 0xff, 0xf7, 0x9a, 0xf9, 0x01, 0xf0, - 0x66, 0xf9, 0x01, 0xf0, 0x8e, 0xf9, 0x01, 0xf0, - 0xe0, 0xf8, 0x00, 0xf0, 0x06, 0xff, 0x00, 0xf0, - 0xf0, 0xfb, 0x00, 0xf0, 0x46, 0xfb, 0x3c, 0x00, - 0x10, 0x1e, 0x04, 0x00, 0x00, 0xf0, 0xbc, 0xff, - 0x00, 0xf0, 0xe4, 0xfc, 0x00, 0xf0, 0x20, 0xfe, - 0xff, 0xf7, 0x40, 0xfa, 0xff, 0xf7, 0x46, 0xfe, - 0xff, 0xf7, 0x56, 0xfd, 0x00, 0xf0, 0x2c, 0xf9, - 0x00, 0xf0, 0xfa, 0xfe, 0x00, 0xf0, 0x8a, 0xfe, - 0x00, 0xf0, 0xd4, 0xf8, 0x00, 0xf0, 0xb4, 0xf8, - 0x00, 0xf0, 0x78, 0xfe, 0x00, 0xf0, 0x4e, 0xfe, - 0x00, 0xf0, 0xde, 0xf8, 0xff, 0xf7, 0xac, 0xfd, - 0x3c, 0x00, 0x4c, 0x1e, 0x04, 0x00, 0x00, 0xf0, - 0x8c, 0xf8, 0x00, 0xf0, 0xf8, 0xfa, 0xff, 0xf7, - 0x76, 0xfb, 0xff, 0xf7, 0x20, 0xfe, 0x01, 0xf0, - 0xa6, 0xfa, 0x00, 0xf0, 0x48, 0xfb, 0x00, 0xf0, - 0x7c, 0xfe, 0x00, 0xf0, 0x5c, 0xf9, 0xbe, 0xf7, - 0x57, 0xfd, 0x00, 0x20, 0x80, 0xbd, 0x80, 0x38, - 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, 0x08, 0x60, - 0x70, 0x47, 0xa8, 0x7e, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x3c, 0x00, 0x88, 0x1e, 0x04, 0x00, - 0x01, 0xd1, 0xbf, 0xf7, 0x39, 0xfa, 0x0f, 0x48, - 0x7d, 0x21, 0xc9, 0x00, 0x84, 0x60, 0x01, 0x80, - 0x0d, 0x49, 0x01, 0x61, 0x80, 0x21, 0x41, 0x80, - 0x00, 0x21, 0xc1, 0x60, 0x01, 0x62, 0x0b, 0x48, - 0x41, 0x80, 0x14, 0x21, 0x81, 0x80, 0x07, 0x21, - 0x41, 0x81, 0x06, 0x4a, 0x46, 0x23, 0x04, 0x32, - 0x05, 0x24, 0x13, 0x70, 0x54, 0x70, 0x0a, 0x21, - 0x91, 0x70, 0x81, 0x76, 0x3c, 0x00, 0xc4, 0x1e, - 0x04, 0x00, 0x03, 0x76, 0x04, 0x81, 0x10, 0xbd, - 0x00, 0x00, 0xc8, 0x74, 0x01, 0x00, 0x00, 0x87, - 0x93, 0x03, 0x30, 0x00, 0x07, 0x00, 0x09, 0x48, - 0x80, 0xb5, 0x01, 0x69, 0x42, 0x69, 0x11, 0x43, - 0x82, 0x69, 0xc0, 0x69, 0x11, 0x43, 0x01, 0x43, - 0x00, 0x22, 0x03, 0x20, 0xc6, 0xf7, 0xbf, 0xfc, - 0xcc, 0xf7, 0x1b, 0xfa, 0x00, 0x20, 0xc2, 0xf7, - 0x92, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x1f, 0x04, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x21, 0x81, 0x60, - 0x02, 0x21, 0xc1, 0x60, 0x03, 0x39, 0x41, 0x60, - 0xc7, 0xf7, 0x3a, 0xff, 0x80, 0xbd, 0x00, 0x00, - 0x40, 0x20, 0x07, 0x00, 0x08, 0xb5, 0x6a, 0x46, - 0x04, 0x49, 0x15, 0x20, 0xbf, 0xf7, 0x54, 0xf8, - 0x01, 0x20, 0x03, 0x49, 0x40, 0x05, 0x08, 0x60, - 0x48, 0x60, 0x08, 0xbd, 0xa5, 0x21, 0x01, 0x00, - 0x3c, 0x00, 0x3c, 0x1f, 0x04, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x70, 0x47, 0x00, 0x00, 0x06, 0x48, - 0x80, 0xb5, 0x80, 0x68, 0xc0, 0x01, 0x80, 0x0f, - 0x05, 0xd1, 0x03, 0x22, 0xc1, 0x43, 0xc6, 0xf7, - 0xba, 0xfc, 0xd6, 0xf7, 0x00, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x2a, 0x20, - 0x06, 0x4a, 0xd1, 0xf7, 0xea, 0xfb, 0x00, 0x22, - 0x07, 0x20, 0x3c, 0x00, 0x78, 0x1f, 0x04, 0x00, - 0x04, 0x49, 0xbe, 0xf7, 0xed, 0xfe, 0x04, 0x48, - 0xc7, 0xf7, 0x58, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x8d, 0x89, 0x00, 0x00, 0xd5, 0x9b, 0x00, 0x00, - 0x10, 0x46, 0x01, 0x00, 0x02, 0x48, 0x00, 0x21, - 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, 0x70, 0x47, - 0x80, 0x6e, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x2c, 0x20, 0x06, 0x4a, 0xd1, 0xf7, 0xcc, 0xfb, - 0x00, 0x22, 0x00, 0x20, 0x3c, 0x00, 0xb4, 0x1f, - 0x04, 0x00, 0x04, 0x49, 0xbe, 0xf7, 0xcf, 0xfe, - 0x04, 0x49, 0x02, 0x20, 0xc8, 0xf7, 0x0b, 0xfa, - 0x80, 0xbd, 0x05, 0x8a, 0x00, 0x00, 0xe9, 0x9b, - 0x00, 0x00, 0xb1, 0x8b, 0x00, 0x00, 0x02, 0x48, - 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, - 0x70, 0x47, 0x10, 0x75, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x2b, 0x20, 0x04, 0x4a, 0xd1, 0xf7, - 0xae, 0xfb, 0x00, 0x22, 0x02, 0x20, 0x3c, 0x00, - 0xf0, 0x1f, 0x04, 0x00, 0x02, 0x49, 0xbe, 0xf7, - 0xb1, 0xfe, 0x80, 0xbd, 0x2d, 0x8a, 0x00, 0x00, - 0x8d, 0x8c, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x2d, 0x20, 0x07, 0x4a, - 0xd1, 0xf7, 0x9c, 0xfb, 0x00, 0x22, 0x01, 0x20, - 0x05, 0x49, 0xbe, 0xf7, 0x9f, 0xfe, 0x05, 0x48, - 0xcb, 0xf7, 0x56, 0xfa, 0x04, 0x48, 0xcc, 0xf7, - 0xf7, 0xf8, 0x80, 0xbd, 0xad, 0x8a, 0x00, 0x00, - 0x3c, 0x00, 0x2c, 0x20, 0x04, 0x00, 0x21, 0xe2, - 0x00, 0x00, 0xf9, 0xdf, 0x00, 0x00, 0x20, 0x44, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x02, 0x49, - 0x00, 0x20, 0x08, 0x60, 0x01, 0x20, 0x48, 0x60, - 0x70, 0x47, 0xac, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x49, 0x0d, 0x20, 0xd0, 0xf7, 0x9b, 0xf9, - 0x80, 0xbd, 0x61, 0x98, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0xcd, 0xf7, 0x77, 0xf9, - 0x03, 0x49, 0x3c, 0x00, 0x68, 0x20, 0x04, 0x00, - 0x08, 0x60, 0x01, 0x1c, 0x02, 0x48, 0xcd, 0xf7, - 0x97, 0xf9, 0x80, 0xbd, 0xa8, 0x79, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x29, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x86, 0xb0, - 0x0c, 0x48, 0xc3, 0xf7, 0x6d, 0xfd, 0xd6, 0xf7, - 0xd3, 0xfb, 0x0b, 0x48, 0x0d, 0x49, 0x00, 0x90, - 0x0a, 0x48, 0x04, 0x91, 0x01, 0x90, 0x0a, 0x48, - 0x69, 0x46, 0x02, 0x90, 0x3c, 0x00, 0xa4, 0x20, - 0x04, 0x00, 0x00, 0x20, 0x03, 0x90, 0x05, 0x90, - 0x01, 0x20, 0xc3, 0xf7, 0x00, 0xfd, 0x07, 0x49, - 0x03, 0x20, 0xd0, 0xf7, 0x6a, 0xf9, 0x06, 0xb0, - 0x80, 0xbd, 0x20, 0xf7, 0x01, 0x00, 0x11, 0x87, - 0x01, 0x00, 0x95, 0x87, 0x01, 0x00, 0x55, 0x87, - 0x01, 0x00, 0x98, 0xd9, 0x01, 0x00, 0x6d, 0x87, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x20, 0xd6, 0xf7, - 0x90, 0xfc, 0x03, 0x49, 0x00, 0x20, 0x3c, 0x00, - 0xe0, 0x20, 0x04, 0x00, 0x08, 0x60, 0x48, 0x60, - 0x02, 0x48, 0x14, 0x39, 0x48, 0x60, 0x80, 0xbd, - 0x90, 0xd9, 0x01, 0x00, 0x3d, 0x82, 0x01, 0x00, - 0x70, 0xb5, 0x00, 0x26, 0x09, 0x4c, 0x09, 0x4d, - 0x26, 0x60, 0x66, 0x60, 0x44, 0x21, 0x50, 0x35, - 0x28, 0x1c, 0xa6, 0x61, 0xbe, 0xf7, 0xc8, 0xf9, - 0x14, 0x20, 0xe0, 0x60, 0xe8, 0x63, 0x28, 0x20, - 0xe8, 0x61, 0xa0, 0x60, 0x28, 0x64, 0x2e, 0x70, - 0x3c, 0x00, 0x1c, 0x21, 0x04, 0x00, 0x70, 0xbd, - 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x18, 0x20, 0x04, 0x4a, 0xd1, 0xf7, - 0x0c, 0xfb, 0x03, 0x49, 0x08, 0x20, 0xd0, 0xf7, - 0x2a, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x15, 0x9c, - 0x00, 0x00, 0x69, 0x9c, 0x00, 0x00, 0xfe, 0xb5, - 0x26, 0x4d, 0x28, 0x78, 0xc0, 0x07, 0x0c, 0xd4, - 0x25, 0x49, 0x00, 0x20, 0x08, 0x70, 0x28, 0x70, - 0x24, 0x48, 0x3c, 0x00, 0x58, 0x21, 0x04, 0x00, - 0x81, 0x78, 0x49, 0x08, 0x49, 0x00, 0x81, 0x70, - 0x81, 0x78, 0x01, 0x22, 0x11, 0x43, 0x81, 0x70, - 0x00, 0x24, 0xff, 0x26, 0x1f, 0x4f, 0x01, 0x36, - 0x21, 0x1c, 0x01, 0xa8, 0xc6, 0xf7, 0x32, 0xf8, - 0x00, 0xab, 0x18, 0x79, 0x01, 0x28, 0x1f, 0xd0, - 0x02, 0x28, 0x19, 0xd0, 0x03, 0x28, 0x1e, 0xd1, - 0xb8, 0x68, 0x00, 0x21, 0xb0, 0x43, 0xb8, 0x60, - 0x78, 0x68, 0x30, 0x43, 0x3c, 0x00, 0x94, 0x21, - 0x04, 0x00, 0x78, 0x60, 0x3a, 0x68, 0x32, 0x40, - 0xa0, 0x20, 0x05, 0xe0, 0x3b, 0x68, 0x33, 0x40, - 0x93, 0x42, 0x01, 0xd0, 0x01, 0x21, 0x01, 0xe0, - 0x01, 0x38, 0xf7, 0xd2, 0x78, 0x68, 0xb0, 0x43, - 0x78, 0x60, 0x00, 0x29, 0x03, 0xd0, 0x01, 0xa8, - 0x00, 0xf0, 0x27, 0xff, 0x02, 0xe0, 0x01, 0xa8, - 0x00, 0xf0, 0x45, 0xff, 0x01, 0x34, 0x24, 0x06, - 0x24, 0x16, 0x06, 0x2c, 0xcf, 0xdb, 0x3c, 0x00, - 0xd0, 0x21, 0x04, 0x00, 0x04, 0x49, 0x02, 0x22, - 0x08, 0x78, 0x10, 0x43, 0x08, 0x70, 0x28, 0x70, - 0xfe, 0xbd, 0x00, 0x00, 0x04, 0x00, 0x07, 0x00, - 0xe0, 0x60, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x10, 0x00, 0x07, 0x00, 0xb0, 0xb5, 0x00, 0x20, - 0x15, 0x23, 0x14, 0x49, 0x01, 0x25, 0x42, 0x00, - 0x8d, 0x54, 0x52, 0x18, 0x01, 0x30, 0x0e, 0x28, - 0x53, 0x70, 0xf8, 0xd3, 0x0f, 0x48, 0x1c, 0x22, - 0x3c, 0x00, 0x0c, 0x22, 0x04, 0x00, 0x1c, 0x38, - 0xbe, 0xf7, 0x73, 0xf9, 0x0d, 0x48, 0x0e, 0x21, - 0x2a, 0x38, 0xbe, 0xf7, 0x1c, 0xf9, 0x0b, 0x49, - 0x00, 0x20, 0x08, 0x60, 0x0b, 0x4c, 0x2a, 0x21, - 0x20, 0x1c, 0xbe, 0xf7, 0x14, 0xf9, 0x25, 0x70, - 0x0e, 0x20, 0x60, 0x70, 0x17, 0x20, 0xa0, 0x70, - 0x07, 0x48, 0x53, 0x21, 0x01, 0x70, 0x45, 0x21, - 0x41, 0x70, 0x20, 0x21, 0x81, 0x70, 0xb0, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x48, 0x22, 0x04, 0x00, - 0xe6, 0x78, 0x01, 0x00, 0xe4, 0x62, 0x01, 0x00, - 0xeb, 0x62, 0x01, 0x00, 0xe8, 0x62, 0x01, 0x00, - 0x0c, 0x49, 0x0d, 0x48, 0x00, 0x22, 0x41, 0x60, - 0x0c, 0x49, 0x81, 0x60, 0x0c, 0x49, 0xc1, 0x60, - 0x0c, 0x49, 0x01, 0x61, 0x0c, 0x49, 0x41, 0x61, - 0x0c, 0x49, 0x82, 0x61, 0xc1, 0x61, 0x0c, 0x49, - 0x01, 0x62, 0x0c, 0x49, 0x41, 0x62, 0x0c, 0x49, - 0x81, 0x62, 0x0c, 0x49, 0x3c, 0x00, 0x84, 0x22, - 0x04, 0x00, 0xc1, 0x62, 0xc2, 0x63, 0x70, 0x47, - 0x00, 0x00, 0xc9, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0xc1, 0x75, 0x00, 0x00, 0x81, 0x75, - 0x00, 0x00, 0x99, 0x75, 0x00, 0x00, 0xcd, 0x75, - 0x00, 0x00, 0x89, 0x75, 0x00, 0x00, 0x91, 0x75, - 0x00, 0x00, 0xb5, 0x75, 0x00, 0x00, 0x8d, 0x75, - 0x00, 0x00, 0xc5, 0x75, 0x00, 0x00, 0xb0, 0xb5, - 0x0e, 0x48, 0x0e, 0x49, 0x08, 0x60, 0x3c, 0x00, - 0xc0, 0x22, 0x04, 0x00, 0x08, 0x31, 0xc0, 0xf7, - 0x43, 0xfe, 0x0c, 0x49, 0x00, 0x25, 0x48, 0x60, - 0x0b, 0x48, 0x0a, 0x4c, 0x05, 0x60, 0x0b, 0x48, - 0x80, 0x3c, 0x05, 0x60, 0x10, 0x20, 0x20, 0x71, - 0xe0, 0x70, 0xa0, 0x71, 0x60, 0x71, 0x27, 0x20, - 0xc0, 0x43, 0xc3, 0xf7, 0xf7, 0xfb, 0x28, 0x20, - 0xc3, 0xf7, 0xfc, 0xfb, 0x25, 0x72, 0xb0, 0xbd, - 0xff, 0x3f, 0x00, 0x00, 0x2c, 0x7d, 0x01, 0x00, - 0x3c, 0x00, 0xfc, 0x22, 0x04, 0x00, 0x1c, 0x67, - 0x01, 0x00, 0x20, 0x67, 0x01, 0x00, 0x80, 0xb5, - 0x2c, 0x21, 0x01, 0x48, 0xbe, 0xf7, 0xc7, 0xf8, - 0x80, 0xbd, 0x3c, 0x7e, 0x01, 0x00, 0x80, 0xb5, - 0x38, 0x21, 0x01, 0x48, 0xbe, 0xf7, 0xbf, 0xf8, - 0x80, 0xbd, 0x68, 0x7e, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x0e, 0x20, 0x02, 0x4a, 0xd1, 0xf7, - 0x0c, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x21, 0xe0, - 0x00, 0x00, 0x3c, 0x00, 0x38, 0x23, 0x04, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xf0, 0xb5, 0x85, 0xb0, - 0x00, 0x27, 0x00, 0xab, 0x2f, 0x4e, 0x1f, 0x81, - 0x00, 0x25, 0x00, 0x24, 0x28, 0x1c, 0xd6, 0xf7, - 0xa1, 0xfb, 0x02, 0x2d, 0x03, 0xd1, 0xd6, 0xf7, - 0xf5, 0xfa, 0x00, 0x28, 0x0c, 0xd0, 0x01, 0x24, - 0x01, 0x2d, 0x03, 0xd1, 0x07, 0x20, 0x00, 0xab, - 0x18, 0x71, 0x01, 0xe0, 0x00, 0xab, 0x1f, 0x71, - 0x00, 0xab, 0x18, 0x79, 0x3c, 0x00, 0x74, 0x23, - 0x04, 0x00, 0xd6, 0xf7, 0x08, 0xfc, 0x00, 0x2c, - 0x39, 0xd0, 0x08, 0x21, 0x03, 0xa8, 0xd6, 0xf7, - 0xf2, 0xfa, 0x00, 0xab, 0x18, 0x7b, 0xfe, 0x28, - 0x31, 0xd1, 0x58, 0x7b, 0x01, 0x28, 0x2a, 0xd1, - 0x02, 0x21, 0x02, 0xa8, 0xd6, 0xf7, 0xe7, 0xfa, - 0x00, 0xab, 0x18, 0x89, 0x00, 0x28, 0x26, 0xd0, - 0x18, 0x89, 0x18, 0x49, 0x88, 0x42, 0x22, 0xd0, - 0x19, 0x89, 0x00, 0x20, 0xbf, 0xf7, 0x3c, 0x00, - 0xb0, 0x23, 0x04, 0x00, 0x13, 0xf9, 0x04, 0x1c, - 0x00, 0x69, 0x00, 0xab, 0x19, 0x89, 0xd6, 0xf7, - 0xd5, 0xfa, 0x20, 0x68, 0x00, 0xab, 0x1a, 0x89, - 0x01, 0x1c, 0x08, 0x31, 0x08, 0x3a, 0xcb, 0xf7, - 0xa1, 0xf9, 0x00, 0x28, 0x06, 0xd0, 0x02, 0x28, - 0x04, 0xd0, 0x02, 0x21, 0x94, 0x20, 0x37, 0x60, - 0xbe, 0xf7, 0x62, 0xff, 0x20, 0x1c, 0xbf, 0xf7, - 0xc7, 0xf8, 0xd4, 0xe7, 0x01, 0x21, 0x94, 0x20, - 0x3c, 0x00, 0xec, 0x23, 0x04, 0x00, 0xbe, 0xf7, - 0x5a, 0xff, 0xd5, 0xf7, 0x26, 0xff, 0x01, 0x35, - 0x2d, 0x06, 0x2d, 0x0e, 0x04, 0x2d, 0xa5, 0xd3, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x58, 0x57, - 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0a, 0x48, - 0x00, 0x21, 0x02, 0x1c, 0x18, 0x32, 0x80, 0xb5, - 0x09, 0x4b, 0x02, 0xe0, 0x01, 0x60, 0x83, 0x80, - 0x08, 0x30, 0x82, 0x42, 0xfa, 0xd1, 0x04, 0x48, - 0x6c, 0x21, 0x3c, 0x00, 0x28, 0x24, 0x04, 0x00, - 0x6c, 0x38, 0xbe, 0xf7, 0x37, 0xf8, 0x04, 0x49, - 0x02, 0x20, 0xc7, 0xf7, 0xd1, 0xff, 0x80, 0xbd, - 0x7c, 0x79, 0x01, 0x00, 0xfc, 0x05, 0x00, 0x00, - 0x9d, 0x75, 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x26, 0x20, 0x0d, 0x4a, 0xd1, 0xf7, 0x7c, 0xf9, - 0x0c, 0x48, 0xc8, 0xf7, 0x73, 0xff, 0x0c, 0x48, - 0xc8, 0xf7, 0x76, 0xff, 0x0b, 0x49, 0x10, 0x20, - 0xcf, 0xf7, 0x94, 0xff, 0x3c, 0x00, 0x64, 0x24, - 0x04, 0x00, 0x0a, 0x49, 0x0c, 0x20, 0xcf, 0xf7, - 0x90, 0xff, 0x09, 0x49, 0x00, 0x20, 0xc7, 0xf7, - 0xb2, 0xff, 0xcc, 0xf7, 0x6e, 0xff, 0x07, 0x49, - 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0x9d, 0xa6, - 0x00, 0x00, 0xa9, 0xa4, 0x00, 0x00, 0x81, 0xa4, - 0x00, 0x00, 0x31, 0xa7, 0x00, 0x00, 0xb9, 0x6d, - 0x00, 0x00, 0xbd, 0xa6, 0x00, 0x00, 0x0c, 0x79, - 0x01, 0x00, 0x02, 0x49, 0x08, 0x78, 0x3c, 0x00, - 0xa0, 0x24, 0x04, 0x00, 0x40, 0x08, 0x40, 0x00, - 0x08, 0x70, 0x70, 0x47, 0x58, 0x00, 0x07, 0x00, - 0x00, 0x21, 0x08, 0x48, 0x80, 0xb5, 0x41, 0x61, - 0x81, 0x61, 0x01, 0x70, 0x41, 0x70, 0x41, 0x60, - 0x81, 0x60, 0x14, 0x22, 0xc2, 0x60, 0x01, 0x61, - 0x42, 0x62, 0xc1, 0x61, 0xff, 0xf7, 0x04, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x1d, 0x20, 0x04, 0x4a, - 0x3c, 0x00, 0xdc, 0x24, 0x04, 0x00, 0xd1, 0xf7, - 0x34, 0xf9, 0x03, 0x49, 0x08, 0x20, 0xcf, 0xf7, - 0x52, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x11, 0xe3, - 0x00, 0x00, 0x09, 0xe4, 0x00, 0x00, 0x80, 0xb5, - 0x01, 0x21, 0x25, 0x20, 0x0a, 0x4a, 0xd1, 0xf7, - 0x24, 0xf9, 0xcc, 0xf7, 0x28, 0xff, 0x08, 0x49, - 0x08, 0x62, 0x08, 0x49, 0x01, 0x20, 0xcf, 0xf7, - 0x3e, 0xff, 0x07, 0x49, 0x02, 0x20, 0xcf, 0xf7, - 0x3a, 0xff, 0x3c, 0x00, 0x18, 0x25, 0x04, 0x00, - 0xfe, 0xf7, 0xe6, 0xff, 0x05, 0x48, 0xc1, 0xf7, - 0xe1, 0xf9, 0x80, 0xbd, 0x29, 0xa9, 0x00, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0xa1, 0xaa, 0x00, 0x00, - 0x2d, 0x19, 0x00, 0x00, 0x45, 0xa8, 0x00, 0x00, - 0x10, 0xb5, 0x06, 0x4c, 0x0c, 0x22, 0x22, 0x70, - 0xa0, 0x18, 0x05, 0x49, 0xbd, 0xf7, 0xd8, 0xff, - 0x00, 0x20, 0xc8, 0xf7, 0x85, 0xfb, 0x01, 0x20, - 0xa0, 0x60, 0x10, 0xbd, 0x3c, 0x00, 0x54, 0x25, - 0x04, 0x00, 0xa4, 0x69, 0x01, 0x00, 0x90, 0x57, - 0x01, 0x00, 0xb0, 0xb5, 0x1f, 0x4c, 0x00, 0x25, - 0x65, 0x80, 0x01, 0x20, 0x20, 0x70, 0x0a, 0x20, - 0xa0, 0x80, 0x90, 0x20, 0xe0, 0x80, 0x30, 0x20, - 0x20, 0x81, 0x90, 0x20, 0x60, 0x81, 0x30, 0x20, - 0xa0, 0x81, 0x17, 0x48, 0x04, 0x22, 0x07, 0x21, - 0x12, 0x30, 0xbe, 0xf7, 0x4c, 0xf8, 0x14, 0x48, - 0x04, 0x22, 0x05, 0x21, 0x16, 0x30, 0x3c, 0x00, - 0x90, 0x25, 0x04, 0x00, 0xbe, 0xf7, 0x46, 0xf8, - 0x12, 0x48, 0x11, 0x4a, 0xe0, 0x81, 0x20, 0x82, - 0x70, 0x32, 0x15, 0x70, 0x55, 0x70, 0x00, 0x20, - 0x3c, 0x23, 0x41, 0x01, 0x43, 0x43, 0x89, 0x18, - 0xf4, 0x31, 0x9b, 0x18, 0x01, 0x30, 0x04, 0x28, - 0x59, 0x60, 0xf5, 0xdb, 0x08, 0x48, 0x06, 0x22, - 0x1a, 0x30, 0x09, 0x49, 0xbd, 0xf7, 0x9a, 0xff, - 0x07, 0x48, 0x05, 0x4c, 0x0c, 0x30, 0x0f, 0xc8, - 0x3c, 0x00, 0xcc, 0x25, 0x04, 0x00, 0x20, 0x34, - 0x0f, 0xc4, 0x20, 0x21, 0x20, 0x1c, 0xbd, 0xf7, - 0x62, 0xff, 0xb0, 0xbd, 0x00, 0x00, 0xf8, 0x60, - 0x01, 0x00, 0x2c, 0x09, 0x00, 0x00, 0x58, 0x40, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x07, 0x48, - 0x10, 0xb5, 0x00, 0x68, 0x00, 0x28, 0x08, 0xd0, - 0x06, 0x48, 0xbe, 0xf7, 0x9c, 0xfe, 0x04, 0x1c, - 0xff, 0xf7, 0x9d, 0xfe, 0x20, 0x1c, 0xbe, 0xf7, - 0x96, 0xfe, 0x3c, 0x00, 0x08, 0x26, 0x04, 0x00, - 0x10, 0xbd, 0x00, 0x00, 0x58, 0x57, 0x01, 0x00, - 0xb5, 0xad, 0x00, 0x00, 0x04, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0x88, 0x70, 0x02, 0x21, 0x20, 0x20, - 0x02, 0x4a, 0xd1, 0xf7, 0x91, 0xf8, 0x80, 0xbd, - 0xb4, 0x79, 0x01, 0x00, 0x25, 0xb5, 0x00, 0x00, - 0x80, 0xb5, 0xcc, 0xf7, 0x8f, 0xfe, 0x01, 0x49, - 0x48, 0x61, 0x80, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x18, 0x21, 0x3c, 0x00, 0x44, 0x26, - 0x04, 0x00, 0x14, 0x48, 0xbd, 0xf7, 0x29, 0xff, - 0x14, 0x48, 0x01, 0x21, 0x01, 0x70, 0x00, 0x21, - 0xc1, 0x60, 0x41, 0x70, 0x01, 0x61, 0x00, 0xf0, - 0x02, 0xf9, 0x00, 0xf0, 0xaa, 0xf8, 0x00, 0xf0, - 0x1e, 0xf8, 0x00, 0xf0, 0xba, 0xf9, 0x00, 0xf0, - 0xcc, 0xf9, 0x00, 0xf0, 0x20, 0xf9, 0x00, 0xf0, - 0x64, 0xf9, 0x00, 0xf0, 0xce, 0xf9, 0x00, 0xf0, - 0xfc, 0xf8, 0x00, 0xf0, 0x82, 0xf9, 0x3c, 0x00, - 0x80, 0x26, 0x04, 0x00, 0x00, 0xf0, 0x28, 0xf8, - 0x00, 0xf0, 0x6e, 0xf8, 0x00, 0xf0, 0x4a, 0xf8, - 0xff, 0xf7, 0xc2, 0xff, 0x00, 0xf0, 0x72, 0xf9, - 0x80, 0xbd, 0x00, 0x00, 0x40, 0x7c, 0x01, 0x00, - 0x18, 0x63, 0x01, 0x00, 0xb0, 0xb5, 0x08, 0x4c, - 0x00, 0x25, 0x08, 0x48, 0x25, 0x77, 0x20, 0x60, - 0xce, 0xf7, 0xf0, 0xfd, 0x00, 0x20, 0xe5, 0x62, - 0xd0, 0xf7, 0xd0, 0xfa, 0x21, 0x1f, 0x08, 0x80, - 0x3c, 0x00, 0xbc, 0x26, 0x04, 0x00, 0xd0, 0xf7, - 0x6c, 0xfb, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x95, 0x75, 0x00, 0x00, 0x80, 0xb5, - 0xcc, 0xf7, 0xc1, 0xfc, 0x80, 0xbd, 0x05, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x08, 0x70, 0x48, 0x70, - 0x03, 0x48, 0x04, 0x49, 0x03, 0x4a, 0x08, 0x30, - 0xcc, 0xf7, 0x27, 0xfe, 0x80, 0xbd, 0x2c, 0x63, - 0x01, 0x00, 0xed, 0xbc, 0x00, 0x00, 0x4d, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x26, 0x04, 0x00, - 0x80, 0xb5, 0xcc, 0xf7, 0x2b, 0xfe, 0x05, 0x49, - 0x48, 0x60, 0x01, 0x1c, 0x04, 0x48, 0xcc, 0xf7, - 0x4b, 0xfe, 0x04, 0x49, 0x03, 0x20, 0xcf, 0xf7, - 0x3d, 0xfe, 0x80, 0xbd, 0x2c, 0x63, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0xc1, 0xbc, 0x00, 0x00, - 0x04, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x08, 0xc0, 0x02, 0x49, 0x10, 0x38, - 0x01, 0x60, 0x70, 0x47, 0x3c, 0x00, 0x34, 0x27, - 0x04, 0x00, 0x04, 0x7a, 0x01, 0x00, 0x1c, 0xe6, - 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x09, 0xfe, - 0x05, 0x49, 0x05, 0x4a, 0x48, 0x60, 0x02, 0x21, - 0x24, 0x20, 0xd0, 0xf7, 0xfc, 0xff, 0x03, 0x48, - 0xc9, 0xf7, 0x6b, 0xfd, 0x80, 0xbd, 0x04, 0x7a, - 0x01, 0x00, 0x69, 0xbe, 0x00, 0x00, 0x71, 0xeb, - 0x00, 0x00, 0x10, 0xb5, 0x04, 0x4c, 0x14, 0x21, - 0x20, 0x1c, 0xbd, 0xf7, 0x96, 0xfe, 0x3c, 0x00, - 0x70, 0x27, 0x04, 0x00, 0x02, 0x48, 0x20, 0x60, - 0x10, 0xbd, 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, - 0xec, 0xe5, 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, - 0xe7, 0xfd, 0x07, 0x49, 0x07, 0x4a, 0x48, 0x60, - 0x02, 0x21, 0x1f, 0x20, 0xd0, 0xf7, 0xda, 0xff, - 0x05, 0x49, 0x01, 0x20, 0x08, 0x60, 0x05, 0x49, - 0x0c, 0x20, 0xcf, 0xf7, 0xf5, 0xfd, 0x80, 0xbd, - 0x14, 0x7a, 0x01, 0x00, 0xd5, 0xbf, 0x00, 0x00, - 0x3c, 0x00, 0xac, 0x27, 0x04, 0x00, 0x80, 0x5a, - 0x01, 0x00, 0x85, 0xff, 0x00, 0x00, 0x80, 0xb5, - 0xff, 0xf7, 0x4f, 0xfd, 0x01, 0x21, 0x21, 0x20, - 0x02, 0x4a, 0xd0, 0xf7, 0xc2, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0xc9, 0xc1, 0x00, 0x00, 0x80, 0xb5, - 0xcc, 0xf7, 0xc1, 0xfd, 0x02, 0x49, 0x08, 0x63, - 0xc9, 0xf7, 0x57, 0xfd, 0x80, 0xbd, 0x28, 0x7a, - 0x01, 0x00, 0x10, 0xb5, 0xcc, 0xf7, 0xb7, 0xfd, - 0x16, 0x4c, 0x3c, 0x00, 0xe8, 0x27, 0x04, 0x00, - 0x20, 0x61, 0xcc, 0xf7, 0xb3, 0xfd, 0x60, 0x61, - 0x14, 0x48, 0x15, 0x49, 0x08, 0x60, 0x16, 0x49, - 0x14, 0x48, 0x08, 0x60, 0xcc, 0xf7, 0xaa, 0xfd, - 0x14, 0x49, 0x08, 0x60, 0x00, 0xf0, 0x34, 0xf8, - 0xff, 0xf7, 0xe0, 0xff, 0xff, 0xf7, 0x5e, 0xff, - 0x00, 0xf0, 0x04, 0xf9, 0x00, 0xf0, 0x8e, 0xf8, - 0xff, 0xf7, 0x6e, 0xff, 0xff, 0xf7, 0xb0, 0xff, - 0xff, 0xf7, 0x8c, 0xff, 0x3c, 0x00, 0x24, 0x28, - 0x04, 0x00, 0xff, 0xf7, 0x04, 0xff, 0x00, 0xf0, - 0xaa, 0xf8, 0x0a, 0x48, 0xbf, 0xf7, 0xbd, 0xff, - 0xc9, 0xf7, 0xbb, 0xfd, 0x09, 0x49, 0x00, 0x20, - 0xcf, 0xf7, 0xa7, 0xfd, 0x10, 0xbd, 0x40, 0x7c, - 0x01, 0x00, 0x7d, 0xb7, 0x00, 0x00, 0x18, 0x7e, - 0x01, 0x00, 0xbd, 0xb8, 0x00, 0x00, 0x1c, 0x7e, - 0x01, 0x00, 0x20, 0x7e, 0x01, 0x00, 0xb9, 0xba, - 0x00, 0x00, 0x81, 0x24, 0x01, 0x00, 0x3c, 0x00, - 0x60, 0x28, 0x04, 0x00, 0x80, 0xb5, 0x38, 0x21, - 0x01, 0x48, 0xbd, 0xf7, 0x19, 0xfe, 0x80, 0xbd, - 0x90, 0x5c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0xb0, 0xb5, 0x0c, 0x4c, 0x0b, 0x4d, 0x00, 0x20, - 0x0c, 0x34, 0x60, 0x60, 0x25, 0x60, 0xe0, 0x60, - 0x0a, 0x20, 0x20, 0x81, 0x28, 0x1c, 0xc8, 0xf7, - 0x3f, 0xfd, 0x28, 0x1c, 0xc8, 0xf7, 0x3a, 0xfd, - 0x08, 0x3d, 0x68, 0x60, 0x04, 0x48, 0xc9, 0xf7, - 0x3c, 0x00, 0x9c, 0x28, 0x04, 0x00, 0x1b, 0xfd, - 0x20, 0x1c, 0xc0, 0xf7, 0x6e, 0xfa, 0x28, 0x80, - 0xb0, 0xbd, 0xb8, 0x7a, 0x01, 0x00, 0xd5, 0x33, - 0x01, 0x00, 0xf8, 0xb5, 0x1f, 0x4e, 0x1d, 0x4c, - 0x00, 0x20, 0x0c, 0x21, 0x41, 0x43, 0x82, 0x00, - 0x01, 0x30, 0x09, 0x19, 0x08, 0x31, 0x00, 0x06, - 0x00, 0x0e, 0x04, 0x28, 0xb1, 0x50, 0xf4, 0xd3, - 0x18, 0x48, 0x0c, 0x38, 0x30, 0x61, 0xce, 0xf7, - 0xf4, 0xf9, 0x3c, 0x00, 0xd8, 0x28, 0x04, 0x00, - 0x14, 0x4c, 0xa0, 0x78, 0x00, 0x09, 0x00, 0x01, - 0xa0, 0x70, 0x00, 0x27, 0xe7, 0x70, 0x67, 0x70, - 0x00, 0x24, 0xa5, 0x00, 0x70, 0x59, 0x07, 0x70, - 0x20, 0x1c, 0xbe, 0xf7, 0x53, 0xf9, 0x71, 0x59, - 0x08, 0x71, 0x00, 0x21, 0x20, 0x1c, 0xce, 0xf7, - 0x7d, 0xf9, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, - 0x04, 0x2c, 0xee, 0xd3, 0x07, 0x4c, 0x20, 0x78, - 0x00, 0x09, 0x00, 0x01, 0x3c, 0x00, 0x14, 0x29, - 0x04, 0x00, 0x0a, 0x30, 0x20, 0x70, 0x20, 0x78, - 0xf0, 0x21, 0x88, 0x43, 0x30, 0x30, 0x20, 0x70, - 0xa0, 0x78, 0x0f, 0x21, 0x08, 0x43, 0xa0, 0x70, - 0xf8, 0xbd, 0x00, 0x50, 0x07, 0x00, 0x10, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x9f, 0xfb, - 0x80, 0xbd, 0xb0, 0xb5, 0x0c, 0x4c, 0x0b, 0x4d, - 0x00, 0x20, 0x0c, 0x34, 0x60, 0x60, 0x25, 0x60, - 0xe0, 0x60, 0x0a, 0x20, 0x20, 0x81, 0x3c, 0x00, - 0x50, 0x29, 0x04, 0x00, 0x28, 0x1c, 0xc8, 0xf7, - 0xe1, 0xfc, 0x28, 0x1c, 0xc8, 0xf7, 0xd4, 0xfc, - 0x08, 0x3d, 0x68, 0x60, 0x20, 0x1c, 0xc0, 0xf7, - 0x0d, 0xfa, 0x28, 0x80, 0x02, 0x48, 0xc9, 0xf7, - 0x9b, 0xfc, 0xb0, 0xbd, 0x2c, 0x7b, 0x01, 0x00, - 0x49, 0x00, 0x01, 0x00, 0x80, 0xb5, 0xca, 0xf7, - 0x2f, 0xf8, 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, - 0xb0, 0xb5, 0x12, 0x4d, 0x3c, 0x21, 0x28, 0x1c, - 0x3c, 0x00, 0x8c, 0x29, 0x04, 0x00, 0xbd, 0xf7, - 0x86, 0xfd, 0x0f, 0x48, 0x28, 0x21, 0x3c, 0x30, - 0xbd, 0xf7, 0x81, 0xfd, 0x0d, 0x48, 0x00, 0x21, - 0x14, 0x38, 0x01, 0x61, 0xc1, 0x60, 0xff, 0x21, - 0x01, 0x70, 0x41, 0x70, 0x0a, 0x49, 0x0a, 0x4a, - 0x41, 0x60, 0x01, 0x21, 0x0c, 0x20, 0xd0, 0xf7, - 0xc8, 0xfe, 0x2c, 0x1c, 0x30, 0x34, 0x0c, 0x3d, - 0x00, 0x20, 0xd0, 0xf7, 0x4a, 0xf9, 0x20, 0x80, - 0x0c, 0x3c, 0x3c, 0x00, 0xc8, 0x29, 0x04, 0x00, - 0xac, 0x42, 0xf8, 0xd1, 0xb0, 0xbd, 0x00, 0x00, - 0x60, 0x7b, 0x01, 0x00, 0x20, 0xa1, 0x07, 0x00, - 0x35, 0xcd, 0x00, 0x00, 0x08, 0x49, 0x00, 0x20, - 0x0c, 0x22, 0x42, 0x43, 0x52, 0x18, 0x10, 0x71, - 0x01, 0x30, 0x05, 0x28, 0xf8, 0xdb, 0x04, 0x48, - 0x00, 0x21, 0x08, 0x38, 0x01, 0x70, 0x41, 0x60, - 0xff, 0x21, 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, - 0x74, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0x04, 0x2a, - 0x04, 0x00, 0x80, 0xb5, 0x78, 0x21, 0x01, 0x48, - 0xbd, 0xf7, 0x47, 0xfd, 0x80, 0xbd, 0xc4, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0xca, 0xf7, 0x97, 0xfa, - 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, - 0x0b, 0x4c, 0xff, 0x21, 0x05, 0x31, 0x20, 0x1c, - 0xbd, 0xf7, 0x37, 0xfd, 0x09, 0x48, 0xf0, 0x21, - 0x08, 0x51, 0x20, 0x1c, 0x40, 0x30, 0xc5, 0xf7, - 0x8e, 0xf9, 0x6c, 0x21, 0x06, 0x48, 0x3c, 0x00, - 0x40, 0x2a, 0x04, 0x00, 0xbd, 0xf7, 0x2c, 0xfd, - 0x04, 0x48, 0xc0, 0x21, 0x6c, 0x30, 0xbd, 0xf7, - 0x27, 0xfd, 0x10, 0xbd, 0xc4, 0x69, 0x01, 0x00, - 0xb0, 0xd9, 0x01, 0x00, 0xc8, 0x6a, 0x01, 0x00, - 0xb0, 0xb5, 0x0b, 0x4d, 0x00, 0x24, 0x1c, 0x20, - 0x60, 0x43, 0x40, 0x19, 0x6c, 0x30, 0xc3, 0xf7, - 0x0f, 0xfe, 0x01, 0x34, 0x04, 0x2c, 0xf6, 0xdb, - 0xcc, 0xf7, 0x6e, 0xfc, 0xa8, 0x63, 0xc7, 0xf7, - 0x3c, 0x00, 0x7c, 0x2a, 0x04, 0x00, 0x75, 0xf9, - 0x04, 0x48, 0xc9, 0xf7, 0x1c, 0xfc, 0x03, 0x48, - 0xcf, 0xf7, 0x03, 0xfa, 0xb0, 0xbd, 0xc4, 0x69, - 0x01, 0x00, 0xfd, 0x80, 0x00, 0x00, 0xe1, 0x22, - 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, 0x00, 0x20, - 0x20, 0x80, 0x03, 0x48, 0x06, 0x21, 0x08, 0x30, - 0xbd, 0xf7, 0xd5, 0xfc, 0x14, 0x20, 0x60, 0x60, - 0x10, 0xbd, 0x98, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x08, 0x4c, 0x3c, 0x00, 0xb8, 0x2a, 0x04, 0x00, - 0x00, 0x20, 0x20, 0x80, 0x60, 0x80, 0x06, 0x48, - 0x06, 0x21, 0x0c, 0x30, 0xbd, 0xf7, 0xc6, 0xfc, - 0x03, 0x48, 0x06, 0x21, 0x12, 0x30, 0xbd, 0xf7, - 0xc1, 0xfc, 0x14, 0x20, 0xa0, 0x60, 0x10, 0xbd, - 0x58, 0x7c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x0d, 0x20, 0x05, 0x4a, - 0xd0, 0xf7, 0x2e, 0xfe, 0x04, 0x48, 0xc8, 0xf7, - 0x1f, 0xfc, 0x04, 0x48, 0x3c, 0x00, 0xf4, 0x2a, - 0x04, 0x00, 0xca, 0xf7, 0x44, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x31, 0xd4, 0x00, 0x00, 0x51, 0xb1, - 0x00, 0x00, 0x09, 0xb1, 0x00, 0x00, 0x08, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x08, 0x60, 0xff, 0xf7, - 0xd0, 0xff, 0xff, 0xf7, 0xc0, 0xff, 0xff, 0xf7, - 0x04, 0xfc, 0x00, 0xf0, 0x4a, 0xf8, 0xff, 0xf7, - 0x0a, 0xfc, 0x00, 0xf0, 0x3c, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x3c, 0x00, - 0x30, 0x2b, 0x04, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x29, 0xf8, 0x00, 0xf0, 0x1b, 0xf8, 0x00, 0xf0, - 0x51, 0xf8, 0x00, 0xf0, 0x31, 0xf8, 0x80, 0xbd, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0xff, 0x21, 0x89, 0x31, 0x02, 0x48, - 0xbd, 0xf7, 0xa2, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0xdc, 0x71, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x49, - 0x08, 0x20, 0xcf, 0xf7, 0x11, 0xfc, 0x80, 0xbd, - 0x3c, 0x00, 0x6c, 0x2b, 0x04, 0x00, 0x59, 0xd9, - 0x00, 0x00, 0x80, 0xb5, 0x03, 0x48, 0xcf, 0xf7, - 0x4c, 0xf9, 0x02, 0x49, 0x48, 0x80, 0x80, 0xbd, - 0x00, 0x00, 0x8d, 0x1f, 0x00, 0x00, 0x98, 0x7c, - 0x01, 0x00, 0x80, 0xb5, 0x03, 0x48, 0xcf, 0xf7, - 0x40, 0xf9, 0x02, 0x49, 0x88, 0x80, 0x80, 0xbd, - 0x00, 0x00, 0xd5, 0x23, 0x00, 0x00, 0x58, 0x7c, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, - 0x02, 0x48, 0x3c, 0x00, 0xa8, 0x2b, 0x04, 0x00, - 0xca, 0xf7, 0xe4, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x71, 0xe0, 0x00, 0x00, 0x80, 0xb5, 0xcc, 0xf7, - 0xa5, 0xfb, 0x02, 0x21, 0x0f, 0x20, 0x06, 0x4a, - 0xd0, 0xf7, 0xc2, 0xfd, 0x14, 0x21, 0x05, 0x48, - 0xbd, 0xf7, 0x68, 0xfc, 0x03, 0x48, 0x78, 0x21, - 0x14, 0x30, 0xbd, 0xf7, 0x63, 0xfc, 0x80, 0xbd, - 0x35, 0xe2, 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, - 0x80, 0xb5, 0xcc, 0xf7, 0x3c, 0x00, 0xe4, 0x2b, - 0x04, 0x00, 0xb7, 0xfb, 0x05, 0x49, 0x08, 0x61, - 0x05, 0x49, 0x0e, 0x20, 0xcf, 0xf7, 0xcd, 0xfb, - 0x04, 0x49, 0x08, 0x20, 0xcf, 0xf7, 0xc9, 0xfb, - 0x80, 0xbd, 0xec, 0x65, 0x01, 0x00, 0x01, 0x02, - 0x01, 0x00, 0xc1, 0x2e, 0x00, 0x00, 0x01, 0x49, - 0x00, 0x20, 0x08, 0x70, 0x70, 0x47, 0x40, 0xd9, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, - 0x00, 0x20, 0x08, 0x70, 0x70, 0x47, 0x3c, 0x00, - 0x20, 0x2c, 0x04, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x07, 0x48, 0xc8, 0xf7, 0xf2, 0xff, - 0x06, 0x49, 0x48, 0x60, 0x06, 0x48, 0xc0, 0xf7, - 0x07, 0xfb, 0x06, 0x48, 0xc0, 0xf7, 0x86, 0xfb, - 0x05, 0x48, 0xc9, 0xf7, 0xa3, 0xfa, 0x80, 0xbd, - 0xa9, 0xe4, 0x00, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0xb9, 0xe4, 0x00, 0x00, 0x85, 0x2e, 0x00, 0x00, - 0x81, 0xe4, 0x00, 0x00, 0x07, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0x5c, 0x2c, 0x04, 0x00, 0x00, 0x21, - 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, 0x08, 0xc0, - 0x10, 0x38, 0xc8, 0x21, 0x01, 0x60, 0x00, 0x21, - 0x0c, 0x38, 0x02, 0x4a, 0xcc, 0xf7, 0x61, 0xfb, - 0x80, 0xbd, 0xd0, 0x60, 0x01, 0x00, 0xfd, 0xe5, - 0x00, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x67, 0xfb, - 0x04, 0x49, 0x08, 0x60, 0x01, 0x1c, 0x02, 0x48, - 0x04, 0x30, 0xcc, 0xf7, 0x86, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x98, 0x2c, 0x04, 0x00, - 0xc0, 0x60, 0x01, 0x00, 0x09, 0x48, 0x80, 0xb5, - 0x0a, 0x21, 0x01, 0x70, 0x41, 0x70, 0x08, 0x49, - 0x08, 0x4a, 0x81, 0x60, 0x00, 0x21, 0xc1, 0x60, - 0x52, 0x79, 0x82, 0x70, 0x01, 0x61, 0x41, 0x61, - 0x28, 0x21, 0x18, 0x30, 0xbd, 0xf7, 0xee, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, - 0xa0, 0x86, 0x01, 0x00, 0x0c, 0x5a, 0x01, 0x00, - 0xf8, 0xb5, 0x0f, 0x49, 0x3c, 0x00, 0xd4, 0x2c, - 0x04, 0x00, 0x0f, 0x48, 0x0d, 0x88, 0x4f, 0x88, - 0x06, 0x79, 0x00, 0x24, 0x30, 0x1b, 0x68, 0x43, - 0x68, 0x23, 0x0c, 0x49, 0x58, 0x43, 0x41, 0x18, - 0x7d, 0x20, 0xc0, 0x00, 0xbd, 0xf7, 0x0f, 0xfd, - 0x61, 0x00, 0x09, 0x4a, 0xa6, 0x42, 0x50, 0x52, - 0x00, 0xd1, 0x3d, 0x1c, 0x01, 0x34, 0x24, 0x06, - 0x24, 0x0e, 0x10, 0x2c, 0xea, 0xd3, 0x05, 0x49, - 0x01, 0x20, 0x08, 0x61, 0xf8, 0xbd, 0x3c, 0x00, - 0x10, 0x2d, 0x04, 0x00, 0xf6, 0x59, 0x01, 0x00, - 0x0c, 0x5a, 0x01, 0x00, 0x34, 0x44, 0x0f, 0x00, - 0x12, 0x5a, 0x01, 0x00, 0x7c, 0x78, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0xe7, 0xfa, 0x02, 0x49, - 0x01, 0x20, 0x08, 0x61, 0x80, 0xbd, 0x00, 0x00, - 0x7c, 0x78, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x08, 0x1c, 0x0f, 0x49, 0x49, 0x79, 0x00, 0x29, - 0x01, 0xd1, 0x0e, 0x4b, 0x00, 0xe0, 0x0e, 0x4b, - 0x3c, 0x00, 0x4c, 0x2d, 0x04, 0x00, 0x00, 0x2c, - 0x07, 0xd0, 0x04, 0x21, 0x11, 0x80, 0x0a, 0x1c, - 0x01, 0x24, 0x19, 0x1c, 0xbd, 0xf7, 0xcd, 0xfb, - 0x0a, 0xe0, 0x01, 0x24, 0x01, 0x1c, 0x18, 0x1c, - 0x12, 0x88, 0xbd, 0xf7, 0xc6, 0xfb, 0x00, 0xf0, - 0xc4, 0xfa, 0x05, 0x49, 0x01, 0x20, 0x08, 0x61, - 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x0c, 0x5a, - 0x01, 0x00, 0xfe, 0x59, 0x01, 0x00, 0xfa, 0x59, - 0x01, 0x00, 0x3c, 0x00, 0x88, 0x2d, 0x04, 0x00, - 0x7c, 0x78, 0x01, 0x00, 0x0d, 0x48, 0x8c, 0xb5, - 0xc1, 0x88, 0x00, 0xab, 0x0c, 0x4a, 0x99, 0x80, - 0x01, 0x89, 0x04, 0x20, 0xd9, 0x80, 0x18, 0x80, - 0x02, 0x21, 0x13, 0x20, 0xd0, 0xf7, 0xd0, 0xfc, - 0x00, 0xf0, 0xa6, 0xfa, 0x07, 0x49, 0x01, 0x20, - 0x08, 0x61, 0xff, 0xf7, 0x8d, 0xff, 0x6a, 0x46, - 0x01, 0xa9, 0x00, 0x20, 0xff, 0xf7, 0xbc, 0xff, - 0x8c, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xc4, 0x2d, - 0x04, 0x00, 0xf4, 0x59, 0x01, 0x00, 0x95, 0xf9, - 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, 0xf8, 0xb5, - 0x13, 0x4e, 0x01, 0x25, 0xb5, 0x70, 0x05, 0x20, - 0xf0, 0x70, 0x11, 0x49, 0x10, 0x48, 0x0e, 0xc9, - 0x2c, 0x30, 0x0e, 0xc0, 0x00, 0x20, 0x70, 0x61, - 0x0f, 0x48, 0x0f, 0x49, 0x10, 0x4f, 0x00, 0x24, - 0x48, 0x60, 0xa0, 0x00, 0x39, 0x58, 0x20, 0x1c, - 0xd1, 0xf7, 0xd7, 0xf8, 0x01, 0x34, 0x3c, 0x00, - 0x00, 0x2e, 0x04, 0x00, 0x10, 0x2c, 0xf7, 0xd3, - 0x06, 0x4c, 0x0b, 0x4a, 0x20, 0x34, 0x20, 0x1c, - 0x0a, 0x49, 0xb5, 0x60, 0xcc, 0xf7, 0x92, 0xfa, - 0xcc, 0xf7, 0x9e, 0xfa, 0x30, 0x61, 0x20, 0x60, - 0xf8, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, - 0xb0, 0x58, 0x01, 0x00, 0x04, 0x18, 0x02, 0x00, - 0x60, 0x00, 0x07, 0x00, 0xd4, 0x44, 0x01, 0x00, - 0x45, 0xfa, 0x00, 0x00, 0x71, 0xfa, 0x00, 0x00, - 0x3c, 0x00, 0x3c, 0x2e, 0x04, 0x00, 0x0c, 0x49, - 0x30, 0xb5, 0x00, 0x23, 0xcc, 0x56, 0x0b, 0x4b, - 0x00, 0x20, 0xf0, 0x25, 0x1a, 0x5c, 0x11, 0x07, - 0x09, 0x0f, 0x09, 0x19, 0x0f, 0x29, 0x01, 0xdd, - 0x0f, 0x21, 0x02, 0xe0, 0x00, 0x29, 0x00, 0xda, - 0x00, 0x21, 0x2a, 0x40, 0x51, 0x18, 0x19, 0x54, - 0x01, 0x30, 0x0e, 0x28, 0xee, 0xdb, 0x30, 0xbd, - 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xc0, 0x58, - 0x01, 0x00, 0x3c, 0x00, 0x78, 0x2e, 0x04, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x00, 0x28, 0x08, 0xd0, - 0x01, 0x24, 0x14, 0x80, 0x05, 0x20, 0xcc, 0xf7, - 0xb5, 0xf8, 0x80, 0x03, 0xc0, 0x0f, 0x28, 0x70, - 0x07, 0xe0, 0x28, 0x78, 0x01, 0x22, 0x41, 0x04, - 0x52, 0x04, 0x05, 0x20, 0xd0, 0xf7, 0xae, 0xfd, - 0x01, 0x24, 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, - 0x98, 0xb5, 0x05, 0x4c, 0x60, 0x68, 0xcc, 0xf7, - 0xf5, 0xfd, 0x00, 0x90, 0x3c, 0x00, 0xb4, 0x2e, - 0x04, 0x00, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x80, - 0xce, 0xf7, 0xfb, 0xff, 0x98, 0xbd, 0xa0, 0x58, - 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, 0x08, 0x1c, - 0x00, 0x24, 0x00, 0x2b, 0x17, 0x4d, 0x07, 0xd0, - 0x0e, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x01, 0x24, - 0x29, 0x1c, 0xbd, 0xf7, 0x0c, 0xfb, 0x22, 0xe0, - 0x11, 0x88, 0x04, 0x29, 0x17, 0xd1, 0x01, 0x1c, - 0x68, 0x46, 0x12, 0x88, 0xbd, 0xf7, 0x3c, 0x00, - 0xf0, 0x2e, 0x04, 0x00, 0x03, 0xfb, 0x00, 0x98, - 0x00, 0x28, 0x01, 0xdb, 0x32, 0x30, 0x00, 0xe0, - 0x32, 0x38, 0x00, 0x90, 0x01, 0x1c, 0x64, 0x20, - 0xbd, 0xf7, 0x98, 0xfb, 0x01, 0x06, 0x09, 0x16, - 0x00, 0x90, 0x0e, 0x22, 0x28, 0x1c, 0xbd, 0xf7, - 0x85, 0xfb, 0x06, 0xe0, 0x0e, 0x29, 0x05, 0xd1, - 0x0a, 0x1c, 0x01, 0x1c, 0x28, 0x1c, 0xbd, 0xf7, - 0xe9, 0xfa, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd, - 0x3c, 0x00, 0x2c, 0x2f, 0x04, 0x00, 0xda, 0x59, - 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, 0x08, 0x1c, - 0x00, 0x24, 0x00, 0x2b, 0x17, 0x4d, 0x07, 0xd0, - 0x0e, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x01, 0x24, - 0x29, 0x1c, 0xbd, 0xf7, 0xd6, 0xfa, 0x22, 0xe0, - 0x11, 0x88, 0x04, 0x29, 0x17, 0xd1, 0x01, 0x1c, - 0x68, 0x46, 0x12, 0x88, 0xbd, 0xf7, 0xcd, 0xfa, - 0x00, 0x98, 0x00, 0x28, 0x01, 0xdb, 0x32, 0x30, - 0x00, 0xe0, 0x3c, 0x00, 0x68, 0x2f, 0x04, 0x00, - 0x32, 0x38, 0x00, 0x90, 0x01, 0x1c, 0x64, 0x20, - 0xbd, 0xf7, 0x62, 0xfb, 0x01, 0x06, 0x09, 0x16, - 0x00, 0x90, 0x0e, 0x22, 0x28, 0x1c, 0xbd, 0xf7, - 0x4f, 0xfb, 0x06, 0xe0, 0x0e, 0x29, 0x05, 0xd1, - 0x0a, 0x1c, 0x01, 0x1c, 0x28, 0x1c, 0xbd, 0xf7, - 0xb3, 0xfa, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd, - 0xcc, 0x59, 0x01, 0x00, 0x03, 0x48, 0x80, 0xb5, - 0x01, 0x78, 0x00, 0x20, 0x3c, 0x00, 0xa4, 0x2f, - 0x04, 0x00, 0xcc, 0xf7, 0xb4, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xa6, 0x58, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x02, 0x49, 0x03, 0x20, 0x08, 0x70, - 0x00, 0x20, 0x48, 0x70, 0x70, 0x47, 0x9c, 0x73, - 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x11, 0x20, - 0x02, 0x4a, 0xd0, 0xf7, 0xbc, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xa1, 0xfe, 0x00, 0x00, 0xf0, 0xb5, - 0x0b, 0x4f, 0x1c, 0x1c, 0x00, 0x23, 0x3c, 0x00, - 0xe0, 0x2f, 0x04, 0x00, 0xfd, 0x56, 0x2b, 0x1c, - 0x06, 0x2d, 0x01, 0xd1, 0x01, 0x20, 0xf0, 0xbd, - 0x06, 0x4e, 0x05, 0x1c, 0xd8, 0x00, 0x34, 0x36, - 0x35, 0x54, 0x80, 0x19, 0x41, 0x70, 0x82, 0x70, - 0x44, 0x60, 0x58, 0x1c, 0x38, 0x70, 0x00, 0x20, - 0xf0, 0xbd, 0x00, 0x00, 0x98, 0x5a, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x0c, 0x48, 0x00, 0xf0, - 0x21, 0xf9, 0x60, 0x78, 0xff, 0x28, 0x04, 0xd0, - 0x3c, 0x00, 0x1c, 0x30, 0x04, 0x00, 0x01, 0x23, - 0xe0, 0x56, 0x06, 0x21, 0x00, 0xf0, 0xcd, 0xf8, - 0x08, 0x4a, 0x01, 0x21, 0x10, 0x78, 0x08, 0x43, - 0x07, 0x49, 0x08, 0x70, 0x20, 0x23, 0x18, 0x43, - 0x08, 0x70, 0x80, 0x23, 0x18, 0x43, 0x10, 0x70, - 0x08, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x91, 0x9b, - 0x00, 0x00, 0xe0, 0x60, 0x01, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x10, 0xb5, 0x0a, 0x49, 0x04, 0x1c, - 0x08, 0x78, 0x3c, 0x00, 0x58, 0x30, 0x04, 0x00, - 0x40, 0x08, 0x40, 0x00, 0x08, 0x70, 0x08, 0x49, - 0x08, 0x70, 0x08, 0x48, 0x00, 0xf0, 0xf8, 0xf8, - 0x60, 0x78, 0xff, 0x28, 0x04, 0xd0, 0x01, 0x23, - 0xe0, 0x56, 0x05, 0x21, 0x00, 0xf0, 0xa4, 0xf8, - 0x10, 0xbd, 0x00, 0x00, 0xe0, 0x60, 0x01, 0x00, - 0x04, 0x00, 0x07, 0x00, 0x91, 0x9b, 0x00, 0x00, - 0x03, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x08, 0xc0, 0x3c, 0x00, 0x94, 0x30, - 0x04, 0x00, 0x70, 0x47, 0x00, 0x00, 0xe8, 0x60, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, - 0x07, 0x4c, 0x00, 0x20, 0x60, 0x60, 0x20, 0x80, - 0xe0, 0x60, 0x02, 0x21, 0x14, 0x20, 0x04, 0x4a, - 0xd0, 0xf7, 0x49, 0xfb, 0x02, 0x48, 0x10, 0x30, - 0xa0, 0x60, 0x10, 0xbd, 0x00, 0x00, 0x58, 0x75, - 0x01, 0x00, 0x05, 0x1d, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x10, 0xb5, 0x48, 0x21, 0x3c, 0x00, - 0xd0, 0x30, 0x04, 0x00, 0x0a, 0x48, 0xbd, 0xf7, - 0xe3, 0xf9, 0x09, 0x4c, 0xe0, 0x21, 0x48, 0x34, - 0x20, 0x1c, 0xbd, 0xf7, 0xdd, 0xf9, 0x00, 0x20, - 0xc1, 0x00, 0x09, 0x19, 0x0a, 0x1c, 0x08, 0x32, - 0x01, 0x30, 0x1b, 0x28, 0x4a, 0x60, 0xf7, 0xd3, - 0x01, 0x48, 0x04, 0x38, 0x04, 0x60, 0x10, 0xbd, - 0x68, 0x5b, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x23, 0x20, 0x02, 0x4a, 0xd0, 0xf7, 0x1e, 0xfb, - 0x3c, 0x00, 0x0c, 0x31, 0x04, 0x00, 0x80, 0xbd, - 0x00, 0x00, 0x45, 0x23, 0x01, 0x00, 0x80, 0xb5, - 0xff, 0xf7, 0x6b, 0xf8, 0x80, 0xbd, 0x70, 0x47, - 0x00, 0x00, 0xf8, 0xb5, 0x01, 0x20, 0x1d, 0x49, - 0xc0, 0x07, 0x48, 0x60, 0x1d, 0x49, 0xff, 0x20, - 0x08, 0x73, 0x1c, 0x4e, 0x10, 0x20, 0x30, 0x60, - 0x05, 0x01, 0x35, 0x60, 0x1b, 0x4c, 0x80, 0x21, - 0x20, 0x1c, 0xbd, 0xf7, 0xac, 0xf9, 0x00, 0x21, - 0x19, 0x4a, 0x3c, 0x00, 0x48, 0x31, 0x04, 0x00, - 0x15, 0x4f, 0x00, 0x20, 0x0b, 0x01, 0x1b, 0x19, - 0x5a, 0x60, 0xcb, 0x00, 0xdb, 0x19, 0x18, 0x74, - 0x01, 0x31, 0x08, 0x29, 0xf6, 0xdb, 0x0f, 0x4c, - 0xfa, 0x21, 0x21, 0x80, 0x12, 0x49, 0x61, 0x80, - 0xa0, 0x60, 0x6a, 0x46, 0x11, 0x49, 0x04, 0x20, - 0xbd, 0xf7, 0x30, 0xff, 0x6a, 0x46, 0x10, 0x49, - 0x08, 0x20, 0xbd, 0xf7, 0x2b, 0xff, 0x10, 0x20, - 0x70, 0x60, 0x75, 0x60, 0x3c, 0x00, 0x84, 0x31, - 0x04, 0x00, 0x60, 0x68, 0x02, 0x21, 0x08, 0x43, - 0x60, 0x60, 0x0b, 0x49, 0x06, 0x4a, 0x08, 0x1c, - 0x10, 0x30, 0x08, 0x3a, 0x03, 0xc2, 0xf8, 0xbd, - 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0xac, 0x73, - 0x01, 0x00, 0xd1, 0x75, 0x00, 0x00, 0x20, 0x4e, - 0x00, 0x00, 0x05, 0x2c, 0x01, 0x00, 0x11, 0x2c, - 0x01, 0x00, 0x00, 0xa0, 0x07, 0x00, 0x3c, 0x00, - 0xc0, 0x31, 0x04, 0x00, 0x70, 0xb5, 0x0e, 0x1c, - 0x00, 0x24, 0xc4, 0xf7, 0x5b, 0xfe, 0x00, 0x28, - 0x3b, 0xd0, 0x45, 0x68, 0xff, 0x2d, 0x38, 0xd0, - 0x0c, 0x2e, 0x28, 0xd2, 0x01, 0xa3, 0x9b, 0x5d, - 0x5b, 0x00, 0x9f, 0x44, 0x05, 0x07, 0x09, 0x0b, - 0x0d, 0x10, 0x13, 0x16, 0x18, 0x1b, 0x1e, 0x21, - 0x18, 0x24, 0x20, 0xe0, 0x30, 0x24, 0x1e, 0xe0, - 0x60, 0x24, 0x1c, 0xe0, 0xc0, 0x24, 0x1a, 0xe0, - 0x3c, 0x00, 0xfc, 0x31, 0x04, 0x00, 0xff, 0x24, - 0x81, 0x34, 0x17, 0xe0, 0x09, 0x24, 0xa4, 0x01, - 0x14, 0xe0, 0x09, 0x24, 0xe4, 0x01, 0x11, 0xe0, - 0x0f, 0x4c, 0x0f, 0xe0, 0x09, 0x24, 0x24, 0x02, - 0x0c, 0xe0, 0x09, 0x24, 0x64, 0x02, 0x09, 0xe0, - 0x03, 0x24, 0xe4, 0x02, 0x06, 0xe0, 0x09, 0x24, - 0xa4, 0x02, 0x03, 0xe0, 0x09, 0x21, 0x9e, 0x20, - 0xbe, 0xf7, 0x39, 0xf8, 0x60, 0x00, 0x00, 0x19, - 0x40, 0x08, 0x3c, 0x00, 0x38, 0x32, 0x04, 0x00, - 0x05, 0x49, 0x80, 0x04, 0x40, 0x18, 0x05, 0x4a, - 0xa9, 0x00, 0x89, 0x18, 0x48, 0x60, 0x64, 0x20, - 0x60, 0x43, 0x70, 0xbd, 0xdc, 0x07, 0x00, 0x00, - 0x80, 0x38, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00, - 0x02, 0x49, 0x80, 0xb5, 0x08, 0x60, 0xd0, 0xf7, - 0x97, 0xf8, 0x80, 0xbd, 0x5c, 0x5b, 0x01, 0x00, - 0xf8, 0xb5, 0x00, 0x26, 0x17, 0x4c, 0x17, 0x4b, - 0x19, 0x49, 0x26, 0x70, 0x3c, 0x00, 0x74, 0x32, - 0x04, 0x00, 0x00, 0x20, 0x14, 0x33, 0x0d, 0x88, - 0x15, 0x4e, 0x15, 0x4a, 0x04, 0xe0, 0xc1, 0x00, - 0xcf, 0x18, 0x7a, 0x60, 0x5e, 0x50, 0x01, 0x30, - 0xa8, 0x42, 0xf8, 0xdb, 0xc6, 0xf7, 0x2b, 0xfd, - 0xff, 0x21, 0x11, 0x4d, 0xa5, 0x31, 0x28, 0x1c, - 0xbd, 0xf7, 0xff, 0xf8, 0x00, 0x21, 0x28, 0x1c, - 0x02, 0x1c, 0x14, 0x32, 0xc2, 0x60, 0x10, 0x1c, - 0x01, 0x31, 0x14, 0x29, 0xf8, 0xdb, 0x3c, 0x00, - 0xb0, 0x32, 0x04, 0x00, 0x00, 0x26, 0xc6, 0x60, - 0x05, 0x48, 0x0c, 0x30, 0x60, 0xc0, 0x09, 0x48, - 0x18, 0x21, 0xbd, 0xf7, 0xed, 0xf8, 0x01, 0x20, - 0x04, 0x34, 0x41, 0xc4, 0x00, 0x20, 0xf8, 0xbd, - 0x70, 0x5d, 0x01, 0x00, 0x09, 0xa0, 0x00, 0x00, - 0x30, 0xd9, 0x01, 0x00, 0x56, 0x57, 0x01, 0x00, - 0x04, 0x5f, 0x01, 0x00, 0xa8, 0x60, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0xcf, 0xf7, 0xb6, 0xfc, - 0x3c, 0x00, 0xec, 0x32, 0x04, 0x00, 0x01, 0x49, - 0x08, 0x80, 0x80, 0xbd, 0x00, 0x00, 0x2c, 0x74, - 0x01, 0x00, 0x11, 0x48, 0xf8, 0xb5, 0x41, 0x79, - 0x00, 0x29, 0x02, 0xd1, 0x05, 0x78, 0x0f, 0x4e, - 0x01, 0xe0, 0x45, 0x78, 0x0f, 0x4e, 0x02, 0x23, - 0xf7, 0x5e, 0x00, 0x24, 0x60, 0x1b, 0x78, 0x43, - 0x64, 0x23, 0x0c, 0x49, 0x58, 0x43, 0x41, 0x18, - 0x7d, 0x20, 0xc0, 0x00, 0xbd, 0xf7, 0xf5, 0xf9, - 0x61, 0x00, 0x3c, 0x00, 0x28, 0x33, 0x04, 0x00, - 0x09, 0x4a, 0xac, 0x42, 0x50, 0x52, 0x01, 0xd1, - 0x00, 0x23, 0xf7, 0x5e, 0x01, 0x34, 0x24, 0x06, - 0x24, 0x0e, 0x10, 0x2c, 0xe9, 0xd3, 0xf8, 0xbd, - 0x0c, 0x5a, 0x01, 0x00, 0xfe, 0x59, 0x01, 0x00, - 0xfa, 0x59, 0x01, 0x00, 0x34, 0x44, 0x0f, 0x00, - 0x32, 0x5a, 0x01, 0x00, 0x38, 0xb5, 0x10, 0x4c, - 0xbe, 0x25, 0x25, 0x73, 0x20, 0x7a, 0x18, 0x21, - 0x88, 0x43, 0x20, 0x72, 0x3c, 0x00, 0x64, 0x33, - 0x04, 0x00, 0x6a, 0x46, 0x0d, 0x49, 0x0d, 0x20, - 0xbd, 0xf7, 0x33, 0xfe, 0x01, 0x20, 0x0b, 0x49, - 0x40, 0x03, 0x08, 0x60, 0x48, 0x60, 0x25, 0x73, - 0x2d, 0x20, 0xc0, 0x03, 0x20, 0x60, 0x25, 0x73, - 0x20, 0x7a, 0x10, 0x21, 0x08, 0x43, 0x20, 0x72, - 0x06, 0x48, 0x06, 0x49, 0x08, 0x60, 0x00, 0x20, - 0x48, 0x60, 0x38, 0xbd, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x00, 0x8d, 0x3e, 0x01, 0x00, 0x24, 0x00, - 0xa0, 0x33, 0x04, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x00, 0x87, 0x93, 0x03, 0x04, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x15, 0x20, 0x02, 0x4a, - 0xd0, 0xf7, 0xc8, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0x0d, 0x3e, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x60, 0x04, 0x00, 0x44, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x40, 0x20, 0x07, 0x00, - 0xff, 0xff, 0xff, 0xff, -}; -const uint32_t fw_len = sizeof(fw_buf) / sizeof(fw_buf[0]); diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_os.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_os.h deleted file mode 100644 index 1a3b75f3583..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_os.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef WL_OS_H -#define WL_OS_H - -#include -#include - -void *owl_os_alloc(size_t size); -void *owl_os_realloc(void *ptr, size_t size); -void owl_os_free(void *p); -void *owl_os_memcpy(void *dst, const void *src, size_t n); -void *owl_os_memset(void *s, int c, size_t n); -void *owl_os_memmove(void *dst, const void *src, size_t n); -size_t owl_os_strlen(char *s); -char *owl_os_strncpy(char *dst, const char *src, size_t n); -int owl_os_strncmp(const char *s1, const char *s2, size_t n); -int owl_os_strcmp(const char *s1, const char *s2); -char *owl_os_strcpy(char *dst, const char *src); -char *owl_os_strdup(const char *s); -char *owl_os_strndup(const char *s, size_t n); -int owl_os_memcmp(const void *s1, const void *s2, size_t n); -long int owl_os_strtol(const char *nptr, char **endptr, int base); -char *owl_os_strchr(const char *s, int c); -char *owl_os_strrchr(const char *s, int c); -int owl_os_strcasecmp(const char *s1, const char *s2); -char *owl_os_strstr(const char *haystack, const char *needle); - -int owl_os_snprintf(char *str, size_t size, const char *format, ...) - __attribute__((format(printf, 3, 4))); - -int owl_os_vprintf(const char *format, va_list arg); /* debug only */ -int owl_os_printf(const char *format, ...) /* debug only */ - __attribute__((format(printf, 1, 2))); - -#endif /* WL_OS_H */ - diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_sdio.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_sdio.h deleted file mode 100644 index ee08fad71af..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_sdio.h +++ /dev/null @@ -1,172 +0,0 @@ -/*! - * \file wl_sdio.h - * \brief SDIO interface for wl_api. - * Copyright (C) 2010 HD Wireless AB - * - * You should have received a copy of the license along with this library. - */ - -#ifndef WL_SDIO_H -#define WL_SDIO_H - -/** \defgroup wl_sdio SDIO Interface - * - * These functions implement the interface that the wl_api library - * needs to work with a SDIO transport layer. - * - * The functions prototyped here must be implemented when porting the - * wl_api library to a new platform with a different SDIO configuration - * - * On platforms supported by H&D Wireless these functions are - * implemented in the file avr32_sdio.c - * - * @{ - */ - -/** - * Maximum transfer size. This will set an upper limit on the len parameter - * passed to owl_sdio_tx() and owl_sdio_rx(). - * - */ -#define MAX_BLOCK_LEN 512 - - -/** - * This flag might be set when owl_sdio_cmd() is called in case the cmd will - * be followed by a data transfer. If the flag is set, the transfer direction is - * from the device to the host (read). Otherwise, the transfer direction is - * from the host to the device (write). - * - */ - #define CMD_FLAG_TO_HOST (1 << 0) - - -/** - * Indicates that the sdio driver needs to be polled in order to make - * forward progress, i.e. it does not support interrupts - * - * The actual polling will result in owl_sdio_cmd() being called to - * request status information from the device. - * - * To activate polling, this flag should be set in owl_sdio_init(). - */ -#define SDIO_FLAG_POLL (1 << 0) - -/** - * Indicates that the sdio driver only supports 1-bit mode. - * - * To set 1-bit mode, this flag should be set in owl_sdio_init(). - */ -#define SDIO_FLAG_1BIT_MODE (1 << 1) - -/** - * This function will be invoked when wlan initialization should be performed, - * this happens when the wl_fw_download() function in the transport group of - * wl_api is invoked. - * - * The wifi device supports sdio high speed mode and clock frequencies up to - * 50 MHz. - * - * The function is responsible for doing any necessary sdio initialization such - * as allocating gpio's, setting up the mci master, one time allocations of - * dma buffers etc. - * - * @param flags is an out parameter that should hold any sdio flags upon return. - * The avaible flags are prefixed with SDIO_FLAG_ - * - * - */ -void owl_sdio_init(uint8_t *flags); - - - -/** - * This function will be invoked when an sdio cmd should be sent to the - * device. - * - * @param idx is the sdio command number - * @param arg is the sdio command argument - * @param flags specifies other options, such as any transfer direction. - * @param rsp should hold the command response upon return. If null, the - * response can be ignored. - * @param data holds a pointer to any data that might follow the command. This - * allows the sdio driver to setup dma transfers while waiting for the - * command response. NULL if no data transfer will follow. Note that - * the same data pointer will be passed to owl_sdio_tx(), which should - * start the actual transfer. - * @param len is the length of the data buffer. - * - */ -void owl_sdio_cmd(uint8_t idx, uint32_t arg, uint8_t flags, uint32_t *rsp, - const uint8_t *data, uint16_t len); - - -/** - * This function will be invoked when data should be transmitted to the device. - * - * If wl_fw_downlad() was called with the size_align parameter set to non-zero, - * the pad parameter should be used. If the pad parameter is not 0, additional - * data must be transmitted after the data buffer has be sent. Depending on - * how the data buffer was first allocated (probably by an TCP/IP stack), it - * might be safe or unsafe to continue reading beyond the data buffer to - * transmit the additional padding bytes. - * - * @param data holds a pointer to the data to transmit, the pointer is the - * same as the one passed to wl_tx(). - * @param len is the number of bytes that should be transmitted, including - * padding. - * @param pad is the number of padding bytes to send. - * - */ -void owl_sdio_tx(const uint8_t *data, uint16_t len, uint8_t pad); - - -/** - * This function will be invoked when data should be received from the device. - * - * @param data should hold the read data upon return. - * @param len is the number of bytes to read. - * - */ -void owl_sdio_rx(uint8_t *data, uint16_t len); - - -/** - * Invoked when sdio rx interrupts from the device should be enabled or - * disabled. - * - * If SDIO_FLAG_POLL was set in wl_spi_init(), then this function can be - * left empty. - * - * @param enable specifies if interrupts should be enabled or disabled. - * - */ -void owl_sdio_irq(uint8_t enable); - - -/** - * Delay executiom for the specified number of ms. This function will be called - * with delays in the 10-20 ms range during fw download and startup of the - * Wi-Fi device. This function can be implemented with a simple for-loop if - * desired (beware of optimization). The timing does not have to be accurate as - * long as the actual delay becomes at least the specified number of ms. - * - * @param ms is the minimal amount of time to wait [ms]. - * - */ -void owl_sdio_mdelay(uint32_t ms); - - -/** - * This function should be called whenever an interrupt is detected. It can - * be called from an interrupt context. - * - * If SDIO_FLAG_POLL was set in owl_sdio_init(), then wl_sdio_irq() - * should never be called. - * - */ -extern void wl_sdio_irq(void); - -/*! @} */ - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_spi.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_spi.h deleted file mode 100644 index 5d91374990d..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wl_spi.h +++ /dev/null @@ -1,185 +0,0 @@ -/*! - * \file wl_spi.h - * \brief SPI interface for wl_api. - * Copyright (C) 2010 HD Wireless AB - * - * You should have received a copy of the license along with this library. - */ - -#ifndef WL_SPI_H -#define WL_SPI_H - -#ifndef WITHOUT_STDINT -#include -#endif - -/** \defgroup wl_spi SPI Interface - * - * These functions implement the interface that the wl_api library - * needs to work with a SPI transport layer. - * - * The functions prototyped here must be implemented when porting the - * wl_api library to a new platform with a different SPI configuration - * - * On platforms supported by H&D Wireless these functions are - * implemented in the file avr32_spi.c - * - * @{ - */ - -/** - * Maximum transfer size. This will set an upper limit on the len parameter - * passed to owl_spi_txrx(). - * - * - */ -#define MAX_BLOCK_LEN 512 - - -/** - * Indicates that the spi driver needs to be polled in order to make - * forward progress, i.e. it does not support interrupts through SD pin 8. - * - * The actual polling will result in owl_spi_txrx() being call to - * request status information from the device. - * - * To activate polling, this flag should be set in owl_spi_init(). - * - * See wl_poll() and wl_register_rx_isr() for more information regarding - * polled and interrupt modes. - * - */ -#define SPI_FLAG_POLL (1 << 0) - - -/** - * This function will be invoked when wlan device initialization should be - * performed, this happens when the wl_fw_download() function in the transport - * group of wl_api is invoked. - * - * The wifi device requires spi mode 3, i.e. clock polarity high and sample - * on second phase. This corresponds to CPOL=1, CPHA=1. Maximum frequency on - * spi clock is 30 MHz. - * - * The function is also responsible for doing any necessary spi initialization - * such as allocating gpio's, setting up the SPI master, one time allocations of - * dma buffers etc. - * - * - * If the SPB105 device is used, two signals; POWER (pin 10 on SPB105) and - * SHUTDOWN (pin 4 on SPB105) might be connected to gpio's on the host. - * The GPIO_POWER_PIN is the main power supply to the device. The - * GPIO_SHUTDOWN_PIN (active low) should be defined as an input. - * - * After GPIO_POWER_PIN is pulled high by the host, the device will pull the - * GPIO_SHUTDOWN_PIN high once the device is properly powered. - * - * However, if pin 4 (GPIO_SHUTDOWN_PIN) is not connected to the host, a delay - * of up to 250 ms must be added after GPIO_POWER_PIN is pulled high to ensure - * that startup is completed. The actual time is usually much shorter, therefore - * one might try to reduce the delay for a particualar hardware design. - * - * On SPB104, the GPIO_POWER_PIN will be connected to VCC and GPIO_SHUTDOWN_PIN - * will be unconnected; hence we have to make sure that we have enough delay - * after powering on the host. Since the device power-on usually happens at the - * same time as the host power-on, the startup time of the host can be - * subtracted from any delay put into owl_spi_init(). - * - * @param flags is an out parameter that should hold any spi flags upon return. - * The avaible flags are prefixed with SPI_FLAG_ - * - * @return 0 on success - * -1 if any error occurs - * - */ -int owl_spi_init(uint8_t *flags); - - -/** - * Invoked when a spi transfer should be performed. - * - * All buffers that are allocated by the wl library will have a size that is - * aligned to 4. If size-unaligned data is passed to this function, it is - * always allocated by the ip stack. If 4-byte size alignment (e.g. for DMA) - * is required, 1-3 extra padding bytes can be transmitted after the in buffer. - * These bytes must be 0xff. - * - * Since size-unaligned data always comes from the ip stack, the out ptr is - * always NULL for such data. - * - * @param in points a buffer which holds the data to be transmitted. If NULL, - * then \a len bytes with the value 0xff should be transmitted on the - * bus. - * @param out points a buffer should hold the data received from the device. If - * NULL, any received data can be discarded. - * @param len is the length of the in and out buffers. - * - */ -void owl_spi_txrx(const uint8_t *in, uint8_t* out, uint16_t len); - - -/** - * Invoked when spi rx interrupts from the device should be enabled or disabled. - * Note that the spi interrupts are obtained from pin 8 on SPB104 or pin 3 from - * SPB105. This pin can be be connected to a gpio on the host. The irq line - * will signal an interrupt on both edges. - * - * In general, the wifi device will not issue a new interrupt unless the - * last interrupt has been handled. Also, during normal operation (i.e after - * the complete callback registered in wl_init() has been invoked), - * owl_spi_irq() will never be invoked so interrupts will be enabled all - * the time. For the SPI-mode, the purpose of owl_spi_irq() is basically to - * make sure that the first interrupt (coming after the reset performed in - * owl_spi_init()) is ignored. - * - * If SPI_FLAG_POLL was set in owl_spi_init(), then this function can be - * left empty and the wifi device will be used in polled mode. In polled mode, - * the interrupt line is not used. Regardless of polled or interrupt-mode, - * wl_poll() must be called to ensure progress of the driver. - * - * @param enable specifies if interrupts should be enabled or disabled. - * - */ -void owl_spi_irq(uint8_t enable); - - -/** - * Invoked when the spi cs for the wifi device should be enabled. Note that - * multiple calls to owl_spi_txrx() might be done during a 'single' chip - * select. - * - * @param enable specifies whether chip select should be asserted or deasserted, - * The chip select signal is active low, so if enable is '1' then the - * chip select connected to the wifi device should be set to '0'. - * - */ -void owl_spi_cs(uint8_t enable); - - -/** - * Delay executiom for the specified number of ms. This function will be called - * with delays in the 10-20 ms range during fw download and startup of the - * Wi-Fi device. This function can be implemented with a simple for-loop if - * desired (beware of optimization). The timing does not have to be accurate as - * long as the actual delay becomes at least the specified number of ms. - * - * @param ms is the minimal amount of time to wait [ms]. - * - */ -void owl_spi_mdelay(uint32_t ms); - - -/** - * This function should be called whenever an interrupt is detected. It can - * be called from an interrupt context. - * - * If SPI_FLAG_POLL was set in owl_spi_init(), then wl_spi_irq() - * should never be called. - * - */ -extern void wl_spi_irq(void); - - -/*! @} */ - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wlap_api.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wlap_api.h deleted file mode 100644 index 9a4483afae9..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/wlap_api.h +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Programming interface for wlap_api. - * Copyright (C) 2011 HD Wireless AB - * - * You should have received a copy of the license along with this library. - */ - -/*! \file wlap_api.h ************************************************************* - * - * \brief WiFi AP API - * - * This file provides the wlap_api interface. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: - * \li SPB104 + EVK1100 - * \li SPB104 + EVK1101 - * \li SPB104 + EVK1104 - * \li SPB104 + EVK1105 (SPI) - * \li SPB104 + EVK1105 (SPI + irq) - * \li SPB105 + EVK1105 (SPI) - * - AppNote: - * - * \author H&D Wireless AB: \n - * - ***************************************************************************** - * - * \section intro Introduction - * This is the documentation for the WiFi AP Driver API \a wlap_api. - * - * \section files Main Files - * - wlap_api.h : WiFi driver interface. - * - libwlap_api_*.*.a - Driver library. - * - */ - -#ifndef WLAP_API_H -#define WLAP_API_H - -#define WLAP_API_RELEASE_NAME "unknown" - -#include - -/** \defgroup wl_softap Access Point Mode - * - * \brief Support the WiFi Access Point mode. - * - * @{ - */ -/* - * Station representation - * - */ -struct wl_sta_t -{ - struct wl_mac_addr_t bssid; /**< The BSSID of the network. */ - uint8_t queued_pkt_cnt; /**< Number of queueud packets for - this STA. */ - uint8_t in_ps; /**< Is the STA in power save mode. */ - uint8_t aid; /**< STA AID */ -}; - -/* Station list representation. Array of pointers to wl_sta_t entries. */ -struct wl_sta_list_t -{ - struct wl_sta_t **sta; /**< The list of pointers to stations */ - size_t cnt; /**< Number of stations */ -}; - -/*! \brief Get the list of currently associated stations (SoftAP). - * - * Retrieves the list of current stations from - * the driver. - * - * This function is not thread safe. It must be called in the - * same execution context as wl_poll(). - * - * @param network_list Output buffer. The API call returns - * a pointer to allocated memory containing the network list. - * @return - * - WL_SUCCESS - * - WL_FAILURE. - */ -wl_err_t wlap_get_sta_list(struct wl_sta_list_t **network_list); - - -/*! Callback used to read data from a TX packet. - * This function is supplied by the user of the API. - * - * @param dst Destination buffer. The data should be copied - * to this buffer. - * @param src_handle Handle to the source packet from where - * the data should be copied. This handle is the same one that - * is passed in parameter \a pkt_handle to \a wl_process_tx(). - * @param read_len Number of bytes to copy from \a src_handle - * to \a dst. - * @param offset The offset in bytes, counting from the - * beginning of the Ethernet header, from where to copy data. - * @return - * - The number of bytes copied. This number may be smaller - * than the length requested in \a read_len but it may not - * be shorter than the length of the packet counting from - * \a offset. In other words, if the caller of this function - * receives a return count that is shorter than \a read_len - * he will assume that all packet data has been read. - * - < 0 on error. - */ -typedef ssize_t (*wl_pkt_read_cb_t)(char *dst, - void *src_handle, - size_t read_len, - int offset); - -/*! \brief Register a data access function for TX packets (SoftAP). - * - * When a TX data packet has a different representation than a single - * contiguous buffer in memory then a packet read function must be - * implemented and registered with this call. Whenever the library - * needs to read packet data it will call this function to do it. - * - * This function can be ignored if the TX packet representation is - * a single contiguous buffer. This function is only needed in SoftAP - * mode. - * - * @param pkt_read_cb Read callback. - * @param ctx Context - */ -void wl_register_pkt_read_cb(wl_pkt_read_cb_t pkt_read_cb); - -/*! \brief Start a network using the SoftAP mode. - * - * This call will cause the WiFi chip to start sending beacons - * and accept associations from WiFi stations. - * - */ -wl_err_t wlap_start_ap(const char *ssid, - const size_t ssid_len, - const uint8_t channel, - const enum wl_auth_mode auth_mode, - const enum wl_enc_type enc_type); - -/*! \brief Disconnect a STA (SoftAP) - * - * @param bssid The BSSID of the station to disconnect. - * @return - * - WL_SUCCESS - * - WL_FAILURE. - */ -wl_err_t wlap_disconnect_sta(const struct wl_mac_addr_t bssid); - - -/*! @} */ /* End wl_softap group */ - - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER/cycle_counter.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER/cycle_counter.h deleted file mode 100644 index d0c51dfa1c4..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER/cycle_counter.h +++ /dev/null @@ -1,309 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Cycle counter driver. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32UC devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _CYCLE_COUNTER_H_ -#define _CYCLE_COUNTER_H_ - -#include "compiler.h" - - -//! Structure holding private information, automatically initialized by the -//! cpu_set_timeout() function. -typedef struct -{ - //! The cycle count at the begining of the timeout. - unsigned long delay_start_cycle; - - //! The cycle count at the end of the timeout. - unsigned long delay_end_cycle; - - //! Enable/disable the timout detection - unsigned char timer_state; - #define CPU_TIMER_STATE_STARTED 0 - #define CPU_TIMER_STATE_REACHED 1 - #define CPU_TIMER_STATE_STOPPED 2 -} t_cpu_time; - - -/*! - * \brief Convert milli-seconds into CPU cycles. - * - * \param ms: Number of millisecond. - * \param fcpu_hz: CPU frequency in Hz. - * - * \return the converted number of CPU cycles. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ U32 cpu_ms_2_cy(unsigned long ms, unsigned long fcpu_hz) -{ - return ((unsigned long long)ms * fcpu_hz + 999) / 1000; -} - - -/*! - * \brief Convert micro-seconds into CPU cycles. - * - * \param us: Number of microsecond. - * \param fcpu_hz: CPU frequency in Hz. - * - * \return the converted number of CPU cycles. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ U32 cpu_us_2_cy(unsigned long us, unsigned long fcpu_hz) -{ - return ((unsigned long long)us * fcpu_hz + 999999) / 1000000; -} - - -/*! - * \brief Convert CPU cycles into milli-seconds. - * - * \param cy: Number of CPU cycles. - * \param fcpu_hz: CPU frequency in Hz. - * - * \return the converted number of milli-second. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ U32 cpu_cy_2_ms(unsigned long cy, unsigned long fcpu_hz) -{ - return ((unsigned long long)cy * 1000 + fcpu_hz-1) / fcpu_hz; -} - - -/*! - * \brief Convert CPU cycles into micro-seconds. - * - * \param cy: Number of CPU cycles. - * \param fcpu_hz: CPU frequency in Hz. - * - * \return the converted number of micro-second. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ U32 cpu_cy_2_us(unsigned long cy, unsigned long fcpu_hz) -{ - return ((unsigned long long)cy * 1000000 + fcpu_hz-1) / fcpu_hz; -} - - -/*! - * \brief Set a timer variable. - * - * Ex: t_cpu_time timer; - * cpu_set_timeout( cpu_ms_2_cy(10, FOSC0), &timer ); // timeout in 10 ms - * if( cpu_is_timeout(&timer) ) - * cpu_stop_timeout(&timer); - * ../.. - * - * \param delay: (input) delay in CPU cycles before timeout. - * \param cpu_time: (output) internal information used by the timer API. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void cpu_set_timeout(unsigned long delay, t_cpu_time *cpu_time) -{ - cpu_time->delay_start_cycle = Get_system_register(AVR32_COUNT); - cpu_time->delay_end_cycle = cpu_time->delay_start_cycle + delay; - cpu_time->timer_state = CPU_TIMER_STATE_STARTED; -} - - -/*! - * \brief Test if a timer variable reached its timeout. - * - * Once the timeout is reached, the function will always return TRUE, - * until the cpu_stop_timeout() function is called. - * - * Ex: t_cpu_time timer; - * cpu_set_timeout( 10, FOSC0, &timer ); // timeout in 10 ms - * if( cpu_is_timeout(&timer) ) - * cpu_stop_timeout(&timer); - * ../.. - * - * \param cpu_time: (input) internal information used by the timer API. - * - * \return TRUE if timeout occured, otherwise FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned long cpu_is_timeout(t_cpu_time *cpu_time) -{ - unsigned long current_cycle_count = Get_system_register(AVR32_COUNT); - - if( cpu_time->timer_state==CPU_TIMER_STATE_STOPPED ) - return FALSE; - - // Test if the timeout as already occured. - else if (cpu_time->timer_state == CPU_TIMER_STATE_REACHED) - return TRUE; - - // If the ending cycle count of this timeout is wrapped, ... - else if (cpu_time->delay_start_cycle > cpu_time->delay_end_cycle) - { - if (current_cycle_count < cpu_time->delay_start_cycle && current_cycle_count > cpu_time->delay_end_cycle) - { - cpu_time->timer_state = CPU_TIMER_STATE_REACHED; - return TRUE; - } - return FALSE; - } - else - { - if (current_cycle_count < cpu_time->delay_start_cycle || current_cycle_count > cpu_time->delay_end_cycle) - { - cpu_time->timer_state = CPU_TIMER_STATE_REACHED; - return TRUE; - } - return FALSE; - } -} - - -/*! - * \brief Stop a timeout detection. - * - * Ex: t_cpu_time timer; - * cpu_set_timeout( 10, FOSC0, &timer ); // timeout in 10 ms - * if( cpu_is_timeout(&timer) ) - * cpu_stop_timeout(&timer); - * ../.. - * - * \param cpu_time: (input) internal information used by the timer API. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void cpu_stop_timeout(t_cpu_time *cpu_time) -{ - cpu_time->timer_state = CPU_TIMER_STATE_STOPPED; -} - - -/*! - * \brief Test if a timer is stopped. - * - * \param cpu_time: (input) internal information used by the timer API. - * - * \return TRUE if timer is stopped, otherwise FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned long cpu_is_timer_stopped(t_cpu_time *cpu_time) -{ - - if( cpu_time->timer_state==CPU_TIMER_STATE_STOPPED ) - return TRUE; - else - return FALSE; -} - - -/*! - * \brief Waits during at least the specified delay (in millisecond) before returning. - * - * \param delay: Number of millisecond to wait. - * \param fcpu_hz: CPU frequency in Hz. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void cpu_delay_ms(unsigned long delay, unsigned long fcpu_hz) -{ - t_cpu_time timer; - cpu_set_timeout( cpu_ms_2_cy(delay, fcpu_hz), &timer); - while( !cpu_is_timeout(&timer) ); -} - -/*! - * \brief Waits during at least the specified delay (in microsecond) before returning. - * - * \param delay: Number of microsecond to wait. - * \param fcpu_hz: CPU frequency in Hz. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void cpu_delay_us(unsigned long delay, unsigned long fcpu_hz) -{ - t_cpu_time timer; - cpu_set_timeout( cpu_us_2_cy(delay, fcpu_hz), &timer); - while( !cpu_is_timeout(&timer) ); -} - -/*! - * \brief Waits during at least the specified delay (in CPU cycles) before returning. - * - * \param delay: Number of CPU cycles to wait. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void cpu_delay_cy(unsigned long delay) -{ - t_cpu_time timer; - cpu_set_timeout( delay, &timer); - while( !cpu_is_timeout(&timer) ); -} - - -#define Get_sys_count() ( Get_system_register(AVR32_COUNT) ) -#define Set_sys_count(x) ( Set_system_register(AVR32_COUNT, (x)) ) -#define Get_sys_compare() ( Get_system_register(AVR32_COMPARE) ) -#define Set_sys_compare(x) ( Set_system_register(AVR32_COMPARE, (x)) ) - - -#endif // _CYCLE_COUNTER_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.c deleted file mode 100644 index 543fed64480..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.c +++ /dev/null @@ -1,995 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SMC on EBI driver for AVR32 UC3. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a SMC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "compiler.h" -#include "preprocessor.h" -#include "gpio.h" -#include "smc.h" - -// Configure the SM Controller with SM setup and timing information for all chip select -#define SMC_CS_SETUP(ncs) { \ - U32 nwe_setup = ((NWE_SETUP * hsb_mhz_up + 999) / 1000); \ - U32 ncs_wr_setup = ((NCS_WR_SETUP * hsb_mhz_up + 999) / 1000); \ - U32 nrd_setup = ((NRD_SETUP * hsb_mhz_up + 999) / 1000); \ - U32 ncs_rd_setup = ((NCS_RD_SETUP * hsb_mhz_up + 999) / 1000); \ - U32 nwe_pulse = ((NWE_PULSE * hsb_mhz_up + 999) / 1000); \ - U32 ncs_wr_pulse = ((NCS_WR_PULSE * hsb_mhz_up + 999) / 1000); \ - U32 nrd_pulse = ((NRD_PULSE * hsb_mhz_up + 999) / 1000); \ - U32 ncs_rd_pulse = ((NCS_RD_PULSE * hsb_mhz_up + 999) / 1000); \ - U32 nwe_cycle = ((NWE_CYCLE * hsb_mhz_up + 999) / 1000); \ - U32 nrd_cycle = ((NRD_CYCLE * hsb_mhz_up + 999) / 1000); \ - \ - /* Some coherence checks... */ \ - /* Ensures CS is active during Rd or Wr */ \ - if( ncs_rd_setup + ncs_rd_pulse < nrd_setup + nrd_pulse ) \ - ncs_rd_pulse = nrd_setup + nrd_pulse - ncs_rd_setup; \ - if( ncs_wr_setup + ncs_wr_pulse < nwe_setup + nwe_pulse ) \ - ncs_wr_pulse = nwe_setup + nwe_pulse - ncs_wr_setup; \ - \ - /* ncs_hold = n_cycle - ncs_setup - ncs_pulse */ \ - /* n_hold = n_cycle - n_setup - n_pulse */ \ - /* */ \ - /* All holds parameters must be positive or null, so: */ \ - /* nwe_cycle shall be >= ncs_wr_setup + ncs_wr_pulse */ \ - if( nwe_cycle < ncs_wr_setup + ncs_wr_pulse ) \ - nwe_cycle = ncs_wr_setup + ncs_wr_pulse; \ - \ - /* nwe_cycle shall be >= nwe_setup + nwe_pulse */ \ - if( nwe_cycle < nwe_setup + nwe_pulse ) \ - nwe_cycle = nwe_setup + nwe_pulse; \ - \ - /* nrd_cycle shall be >= ncs_rd_setup + ncs_rd_pulse */ \ - if( nrd_cycle < ncs_rd_setup + ncs_rd_pulse ) \ - nrd_cycle = ncs_rd_setup + ncs_rd_pulse; \ - \ - /* nrd_cycle shall be >= nrd_setup + nrd_pulse */ \ - if( nrd_cycle < nrd_setup + nrd_pulse ) \ - nrd_cycle = nrd_setup + nrd_pulse; \ - \ - AVR32_SMC.cs[ncs].setup = (nwe_setup << AVR32_SMC_SETUP0_NWE_SETUP_OFFSET) | \ - (ncs_wr_setup << AVR32_SMC_SETUP0_NCS_WR_SETUP_OFFSET) | \ - (nrd_setup << AVR32_SMC_SETUP0_NRD_SETUP_OFFSET) | \ - (ncs_rd_setup << AVR32_SMC_SETUP0_NCS_RD_SETUP_OFFSET); \ - AVR32_SMC.cs[ncs].pulse = (nwe_pulse << AVR32_SMC_PULSE0_NWE_PULSE_OFFSET) | \ - (ncs_wr_pulse << AVR32_SMC_PULSE0_NCS_WR_PULSE_OFFSET) | \ - (nrd_pulse << AVR32_SMC_PULSE0_NRD_PULSE_OFFSET) | \ - (ncs_rd_pulse << AVR32_SMC_PULSE0_NCS_RD_PULSE_OFFSET); \ - AVR32_SMC.cs[ncs].cycle = (nwe_cycle << AVR32_SMC_CYCLE0_NWE_CYCLE_OFFSET) | \ - (nrd_cycle << AVR32_SMC_CYCLE0_NRD_CYCLE_OFFSET); \ - AVR32_SMC.cs[ncs].mode = (((NCS_CONTROLLED_READ) ? AVR32_SMC_MODE0_READ_MODE_NCS_CONTROLLED : \ - AVR32_SMC_MODE0_READ_MODE_NRD_CONTROLLED) << AVR32_SMC_MODE0_READ_MODE_OFFSET) | \ - + (((NCS_CONTROLLED_WRITE) ? AVR32_SMC_MODE0_WRITE_MODE_NCS_CONTROLLED : \ - AVR32_SMC_MODE0_WRITE_MODE_NWE_CONTROLLED) << AVR32_SMC_MODE0_WRITE_MODE_OFFSET) | \ - (NWAIT_MODE << AVR32_SMC_MODE0_EXNW_MODE_OFFSET) | \ - (((SMC_8_BIT_CHIPS) ? AVR32_SMC_MODE0_BAT_BYTE_WRITE : \ - AVR32_SMC_MODE0_BAT_BYTE_SELECT) << AVR32_SMC_MODE0_BAT_OFFSET) | \ - (((SMC_DBW <= 8 ) ? AVR32_SMC_MODE0_DBW_8_BITS : \ - (SMC_DBW <= 16) ? AVR32_SMC_MODE0_DBW_16_BITS : \ - AVR32_SMC_MODE0_DBW_32_BITS) << AVR32_SMC_MODE0_DBW_OFFSET) | \ - (TDF_CYCLES << AVR32_SMC_MODE0_TDF_CYCLES_OFFSET) | \ - (TDF_OPTIM << AVR32_SMC_MODE0_TDF_MODE_OFFSET) | \ - (PAGE_MODE << AVR32_SMC_MODE0_PMEN_OFFSET) | \ - (PAGE_SIZE << AVR32_SMC_MODE0_PS_OFFSET); \ - smc_tab_cs_size[ncs] = (U8)EXT_SM_SIZE; \ - } - -static U8 smc_tab_cs_size[6]; - -static void smc_enable_muxed_pins(void); - - -void smc_init(unsigned long hsb_hz) -{ - unsigned long hsb_mhz_up = (hsb_hz + 999999) / 1000000; - -//! Whether to use the NCS0 pin -#ifdef SMC_USE_NCS0 - #include SMC_COMPONENT_CS0 - - // Setup SMC for NCS0 - SMC_CS_SETUP(0) - - #ifdef SMC_DBW_GLOBAL - #if (SMC_DBW_GLOBAL < SMC_DBW) - #undef SMC_DBW_GLOBAL - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - #else - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - - #ifdef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT) - #undef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - #else - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - - #ifdef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE_GLOBAL < NWAIT_MODE) - #undef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - #else - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - - #undef EXT_SM_SIZE - #undef SMC_DBW - #undef SMC_8_BIT_CHIPS - #undef NWE_SETUP - #undef NCS_WR_SETUP - #undef NRD_SETUP - #undef NCS_RD_SETUP - #undef NCS_WR_PULSE - #undef NWE_PULSE - #undef NCS_RD_PULSE - #undef NRD_PULSE - #undef NCS_WR_HOLD - #undef NWE_HOLD - #undef NWE_CYCLE - #undef NCS_RD_HOLD - #undef NRD_CYCLE - #undef TDF_CYCLES - #undef TDF_OPTIM - #undef PAGE_MODE - #undef PAGE_SIZE - #undef NCS_CONTROLLED_READ - #undef NCS_CONTROLLED_WRITE - #undef NWAIT_MODE -#endif - - -//! Whether to use the NCS1 pin -#ifdef SMC_USE_NCS1 - #include SMC_COMPONENT_CS1 - - // Enable SM mode for CS1 if necessary. - AVR32_HMATRIX.sfr[AVR32_EBI_HMATRIX_NR] &= ~(1 << AVR32_EBI_SDRAM_CS); - AVR32_HMATRIX.sfr[AVR32_EBI_HMATRIX_NR]; - - // Setup SMC for NCS1 - SMC_CS_SETUP(1) - - #ifdef SMC_DBW_GLOBAL - #if (SMC_DBW_GLOBAL < SMC_DBW) - #undef SMC_DBW_GLOBAL - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - #else - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - - #ifdef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT) - #undef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - #else - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - - #ifdef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE_GLOBAL < NWAIT_MODE) - #undef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - #else - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - - #undef EXT_SM_SIZE - #undef SMC_DBW - #undef SMC_8_BIT_CHIPS - #undef NWE_SETUP - #undef NCS_WR_SETUP - #undef NRD_SETUP - #undef NCS_RD_SETUP - #undef NCS_WR_PULSE - #undef NWE_PULSE - #undef NCS_RD_PULSE - #undef NRD_PULSE - #undef NCS_WR_HOLD - #undef NWE_HOLD - #undef NWE_CYCLE - #undef NCS_RD_HOLD - #undef NRD_CYCLE - #undef TDF_CYCLES - #undef TDF_OPTIM - #undef PAGE_MODE - #undef PAGE_SIZE - #undef NCS_CONTROLLED_READ - #undef NCS_CONTROLLED_WRITE - #undef NWAIT_MODE -#endif - -//! Whether to use the NCS2 pin -#ifdef SMC_USE_NCS2 - #include SMC_COMPONENT_CS2 - - // Setup SMC for NCS2 - SMC_CS_SETUP(2) - - #ifdef SMC_DBW_GLOBAL - #if (SMC_DBW_GLOBAL < SMC_DBW) - #undef SMC_DBW_GLOBAL - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - #else - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - - #ifdef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT) - #undef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - #else - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - - #ifdef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE_GLOBAL < NWAIT_MODE) - #undef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - #else - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - - - #undef EXT_SM_SIZE - #undef SMC_DBW - #undef SMC_8_BIT_CHIPS - #undef NWE_SETUP - #undef NCS_WR_SETUP - #undef NRD_SETUP - #undef NCS_RD_SETUP - #undef NCS_WR_PULSE - #undef NWE_PULSE - #undef NCS_RD_PULSE - #undef NRD_PULSE - #undef NCS_WR_HOLD - #undef NWE_HOLD - #undef NWE_CYCLE - #undef NCS_RD_HOLD - #undef NRD_CYCLE - #undef TDF_CYCLES - #undef TDF_OPTIM - #undef PAGE_MODE - #undef PAGE_SIZE - #undef NCS_CONTROLLED_READ - #undef NCS_CONTROLLED_WRITE - #undef NWAIT_MODE -#endif - -//! Whether to use the NCS3 pin -#ifdef SMC_USE_NCS3 - #include SMC_COMPONENT_CS3 - - // Setup SMC for NCS3 - SMC_CS_SETUP(3) - - #ifdef SMC_DBW_GLOBAL - #if (SMC_DBW_GLOBAL < SMC_DBW) - #undef SMC_DBW_GLOBAL - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - #else - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - - #ifdef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT) - #undef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - #else - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - - #ifdef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE_GLOBAL < NWAIT_MODE) - #undef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - #else - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - - - #undef EXT_SM_SIZE - #undef SMC_DBW - #undef SMC_8_BIT_CHIPS - #undef NWE_SETUP - #undef NCS_WR_SETUP - #undef NRD_SETUP - #undef NCS_RD_SETUP - #undef NCS_WR_PULSE - #undef NWE_PULSE - #undef NCS_RD_PULSE - #undef NRD_PULSE - #undef NCS_WR_HOLD - #undef NWE_HOLD - #undef NWE_CYCLE - #undef NCS_RD_HOLD - #undef NRD_CYCLE - #undef TDF_CYCLES - #undef TDF_OPTIM - #undef PAGE_MODE - #undef PAGE_SIZE - #undef NCS_CONTROLLED_READ - #undef NCS_CONTROLLED_WRITE - #undef NWAIT_MODE -#endif - -//! Whether to use the NCS4 pin -#ifdef SMC_USE_NCS4 - #include SMC_COMPONENT_CS4 - - // Setup SMC for NCS4 - SMC_CS_SETUP(4) - - #ifdef SMC_DBW_GLOBAL - #if (SMC_DBW_GLOBAL < SMC_DBW) - #undef SMC_DBW_GLOBAL - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - #else - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - - #ifdef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT) - #undef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - #else - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - - #ifdef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE_GLOBAL < NWAIT_MODE) - #undef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - #else - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - - - #undef EXT_SM_SIZE - #undef SMC_DBW - #undef SMC_8_BIT_CHIPS - #undef NWE_SETUP - #undef NCS_WR_SETUP - #undef NRD_SETUP - #undef NCS_RD_SETUP - #undef NCS_WR_PULSE - #undef NWE_PULSE - #undef NCS_RD_PULSE - #undef NRD_PULSE - #undef NCS_WR_HOLD - #undef NWE_HOLD - #undef NWE_CYCLE - #undef NCS_RD_HOLD - #undef NRD_CYCLE - #undef TDF_CYCLES - #undef TDF_OPTIM - #undef PAGE_MODE - #undef PAGE_SIZE - #undef NCS_CONTROLLED_READ - #undef NCS_CONTROLLED_WRITE - #undef NWAIT_MODE -#endif - -//! Whether to use the NCS5 pin -#ifdef SMC_USE_NCS5 - #include SMC_COMPONENT_CS5 - - // Setup SMC for NCS5 - SMC_CS_SETUP(5) - - #ifdef SMC_DBW_GLOBAL - #if (SMC_DBW_GLOBAL < SMC_DBW) - #undef SMC_DBW_GLOBAL - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - #else - #if (SMC_DBW == 8) - #define SMC_DBW_GLOBAL 8 - #elif (SMC_DBW == 16) - #define SMC_DBW_GLOBAL 16 - #elif (SMC_DBW == 32) - #define SMC_DBW_GLOBAL 32 - #else - #error error in SMC_DBW size - #endif - #endif - - #ifdef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS_GLOBAL < SMC_8_BIT) - #undef SMC_8_BIT_CHIPS_GLOBAL - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - #else - #if (SMC_8_BIT_CHIPS == TRUE) - #define SMC_8_BIT_CHIPS_GLOBAL TRUE - #elif (SMC_8_BIT_CHIPS == FALSE) - #define SMC_8_BIT_CHIPS_GLOBAL FALSE - #else - #error error in SMC_8_BIT_CHIPS size - #endif - #endif - - #ifdef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE_GLOBAL < NWAIT_MODE) - #undef NWAIT_MODE_GLOBAL - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - #else - #if (NWAIT_MODE == AVR32_SMC_EXNW_MODE_DISABLED) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_DISABLED - #elif (NWAIT_MODE == AVR32_SMC_EXNW_MODE_FROZEN) - #define NWAIT_MODE_GLOBAL AVR32_SMC_EXNW_MODE_FROZEN - #else - #error error in NWAIT_MODE size - #endif - #endif - - - #undef EXT_SM_SIZE - #undef SMC_DBW - #undef SMC_8_BIT_CHIPS - #undef NWE_SETUP - #undef NCS_WR_SETUP - #undef NRD_SETUP - #undef NCS_RD_SETUP - #undef NCS_WR_PULSE - #undef NWE_PULSE - #undef NCS_RD_PULSE - #undef NRD_PULSE - #undef NCS_WR_HOLD - #undef NWE_HOLD - #undef NWE_CYCLE - #undef NCS_RD_HOLD - #undef NRD_CYCLE - #undef TDF_CYCLES - #undef TDF_OPTIM - #undef PAGE_MODE - #undef PAGE_SIZE - #undef NCS_CONTROLLED_READ - #undef NCS_CONTROLLED_WRITE - #undef NWAIT_MODE -#endif - // Put the multiplexed MCU pins used for the SM under control of the SMC. - smc_enable_muxed_pins(); -} - -/*! \brief Puts the multiplexed MCU pins used for the SMC - * - */ -static void smc_enable_muxed_pins(void) -{ - static const gpio_map_t SMC_EBI_GPIO_MAP = - { - // Enable data pins. -#ifdef EBI_DATA_0 - {ATPASTE2(EBI_DATA_0,_PIN),ATPASTE2(EBI_DATA_0,_FUNCTION)}, -#endif -#ifdef EBI_DATA_1 - {ATPASTE2(EBI_DATA_1,_PIN),ATPASTE2(EBI_DATA_1,_FUNCTION)}, -#endif -#ifdef EBI_DATA_2 - {ATPASTE2(EBI_DATA_2,_PIN),ATPASTE2(EBI_DATA_2,_FUNCTION)}, -#endif -#ifdef EBI_DATA_3 - {ATPASTE2(EBI_DATA_3,_PIN),ATPASTE2(EBI_DATA_3,_FUNCTION)}, -#endif -#ifdef EBI_DATA_4 - {ATPASTE2(EBI_DATA_4,_PIN),ATPASTE2(EBI_DATA_4,_FUNCTION)}, -#endif -#ifdef EBI_DATA_5 - {ATPASTE2(EBI_DATA_5,_PIN),ATPASTE2(EBI_DATA_5,_FUNCTION)}, -#endif -#ifdef EBI_DATA_6 - {ATPASTE2(EBI_DATA_6,_PIN),ATPASTE2(EBI_DATA_6,_FUNCTION)}, -#endif -#ifdef EBI_DATA_7 - {ATPASTE2(EBI_DATA_7,_PIN),ATPASTE2(EBI_DATA_7,_FUNCTION)}, -#endif -#ifdef EBI_DATA_8 - {ATPASTE2(EBI_DATA_8,_PIN),ATPASTE2(EBI_DATA_8,_FUNCTION)}, -#endif -#ifdef EBI_DATA_9 - {ATPASTE2(EBI_DATA_9,_PIN),ATPASTE2(EBI_DATA_9,_FUNCTION)}, -#endif -#ifdef EBI_DATA_10 - {ATPASTE2(EBI_DATA_10,_PIN),ATPASTE2(EBI_DATA_10,_FUNCTION)}, -#endif -#ifdef EBI_DATA_11 - {ATPASTE2(EBI_DATA_11,_PIN),ATPASTE2(EBI_DATA_11,_FUNCTION)}, -#endif -#ifdef EBI_DATA_12 - {ATPASTE2(EBI_DATA_12,_PIN),ATPASTE2(EBI_DATA_12,_FUNCTION)}, -#endif -#ifdef EBI_DATA_13 - {ATPASTE2(EBI_DATA_13,_PIN),ATPASTE2(EBI_DATA_13,_FUNCTION)}, -#endif -#ifdef EBI_DATA_14 - {ATPASTE2(EBI_DATA_14,_PIN),ATPASTE2(EBI_DATA_14,_FUNCTION)}, -#endif -#ifdef EBI_DATA_15 - {ATPASTE2(EBI_DATA_15,_PIN),ATPASTE2(EBI_DATA_15,_FUNCTION)}, -#endif -#ifdef EBI_DATA_16 - {ATPASTE2(EBI_DATA_16,_PIN),ATPASTE2(EBI_DATA_16,_FUNCTION)}, -#endif -#ifdef EBI_DATA_17 - {ATPASTE2(EBI_DATA_17,_PIN),ATPASTE2(EBI_DATA_17,_FUNCTION)}, -#endif -#ifdef EBI_DATA_18 - {ATPASTE2(EBI_DATA_18,_PIN),ATPASTE2(EBI_DATA_18,_FUNCTION)}, -#endif -#ifdef EBI_DATA_19 - {ATPASTE2(EBI_DATA_19,_PIN),ATPASTE2(EBI_DATA_19,_FUNCTION)}, -#endif -#ifdef EBI_DATA_20 - {ATPASTE2(EBI_DATA_20,_PIN),ATPASTE2(EBI_DATA_20,_FUNCTION)}, -#endif -#ifdef EBI_DATA_21 - {ATPASTE2(EBI_DATA_21,_PIN),ATPASTE2(EBI_DATA_21,_FUNCTION)}, -#endif -#ifdef EBI_DATA_22 - {ATPASTE2(EBI_DATA_22,_PIN),ATPASTE2(EBI_DATA_22,_FUNCTION)}, -#endif -#ifdef EBI_DATA_23 - {ATPASTE2(EBI_DATA_23,_PIN),ATPASTE2(EBI_DATA_23,_FUNCTION)}, -#endif -#ifdef EBI_DATA_24 - {ATPASTE2(EBI_DATA_24,_PIN),ATPASTE2(EBI_DATA_24,_FUNCTION)}, -#endif -#ifdef EBI_DATA_25 - {ATPASTE2(EBI_DATA_25,_PIN),ATPASTE2(EBI_DATA_25,_FUNCTION)}, -#endif -#ifdef EBI_DATA_26 - {ATPASTE2(EBI_DATA_26,_PIN),ATPASTE2(EBI_DATA_26,_FUNCTION)}, -#endif -#ifdef EBI_DATA_27 - {ATPASTE2(EBI_DATA_27,_PIN),ATPASTE2(EBI_DATA_27,_FUNCTION)}, -#endif -#ifdef EBI_DATA_28 - {ATPASTE2(EBI_DATA_28,_PIN),ATPASTE2(EBI_DATA_28,_FUNCTION)}, -#endif -#ifdef EBI_DATA_29 - {ATPASTE2(EBI_DATA_29,_PIN),ATPASTE2(EBI_DATA_29,_FUNCTION)}, -#endif -#ifdef EBI_DATA_30 - {ATPASTE2(EBI_DATA_30,_PIN),ATPASTE2(EBI_DATA_30,_FUNCTION)}, -#endif -#ifdef EBI_DATA_31 - {ATPASTE2(EBI_DATA_31,_PIN),ATPASTE2(EBI_DATA_31,_FUNCTION)}, -#endif - - // Enable address pins. -#if SMC_DBW_GLOBAL <= 8 -#ifdef EBI_ADDR_0 - {ATPASTE2(EBI_ADDR_0,_PIN),ATPASTE2(EBI_ADDR_0,_FUNCTION)}, -#endif -#endif -#if SMC_DBW_GLOBAL <= 16 -#ifdef EBI_ADDR_1 - {ATPASTE2(EBI_ADDR_1,_PIN),ATPASTE2(EBI_ADDR_1,_FUNCTION)}, -#endif -#endif - -#ifdef EBI_ADDR_2 - {ATPASTE2(EBI_ADDR_2,_PIN),ATPASTE2(EBI_ADDR_2,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_3 - {ATPASTE2(EBI_ADDR_3,_PIN),ATPASTE2(EBI_ADDR_3,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_4 - {ATPASTE2(EBI_ADDR_4,_PIN),ATPASTE2(EBI_ADDR_4,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_5 - {ATPASTE2(EBI_ADDR_5,_PIN),ATPASTE2(EBI_ADDR_5,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_6 - {ATPASTE2(EBI_ADDR_6,_PIN),ATPASTE2(EBI_ADDR_6,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_7 - {ATPASTE2(EBI_ADDR_7,_PIN),ATPASTE2(EBI_ADDR_7,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_8 - {ATPASTE2(EBI_ADDR_8,_PIN),ATPASTE2(EBI_ADDR_8,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_9 - {ATPASTE2(EBI_ADDR_9,_PIN),ATPASTE2(EBI_ADDR_9,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_10 - {ATPASTE2(EBI_ADDR_10,_PIN),ATPASTE2(EBI_ADDR_10,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_11 - {ATPASTE2(EBI_ADDR_11,_PIN),ATPASTE2(EBI_ADDR_11,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_12 - {ATPASTE2(EBI_ADDR_12,_PIN),ATPASTE2(EBI_ADDR_12,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_13 - {ATPASTE2(EBI_ADDR_13,_PIN),ATPASTE2(EBI_ADDR_13,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_14 - {ATPASTE2(EBI_ADDR_14,_PIN),ATPASTE2(EBI_ADDR_14,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_15 - {ATPASTE2(EBI_ADDR_15,_PIN),ATPASTE2(EBI_ADDR_15,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_16 - {ATPASTE2(EBI_ADDR_16,_PIN),ATPASTE2(EBI_ADDR_16,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_17 - {ATPASTE2(EBI_ADDR_17,_PIN),ATPASTE2(EBI_ADDR_17,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_18 - {ATPASTE2(EBI_ADDR_18,_PIN),ATPASTE2(EBI_ADDR_18,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_19 - {ATPASTE2(EBI_ADDR_19,_PIN),ATPASTE2(EBI_ADDR_19,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_20 - {ATPASTE2(EBI_ADDR_20,_PIN),ATPASTE2(EBI_ADDR_20,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_21 - {ATPASTE2(EBI_ADDR_21,_PIN),ATPASTE2(EBI_ADDR_21,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_22 - {ATPASTE2(EBI_ADDR_22,_PIN),ATPASTE2(EBI_ADDR_22,_FUNCTION)}, -#endif -#ifdef EBI_ADDR_23 - {ATPASTE2(EBI_ADDR_23,_PIN),ATPASTE2(EBI_ADDR_23,_FUNCTION)}, -#endif - -#if SMC_DBW_GLOBAL <= 8 - #undef SMC_8_BIT_CHIPS - #define SMC_8_BIT_CHIPS TRUE -#endif - - // Enable data mask pins. -#if !SMC_8_BIT_CHIPS_GLOBAL -#ifdef EBI_ADDR_0 - {ATPASTE2(EBI_ADDR_0,_PIN),ATPASTE2(EBI_ADDR_0,_FUNCTION)}, -#endif -#endif -#ifdef EBI_NWE0 - {ATPASTE2(EBI_NWE0,_PIN),ATPASTE2(EBI_NWE0,_FUNCTION)}, -#endif - -#if SMC_DBW_GLOBAL >= 16 - #ifdef EBI_NWE1 - {ATPASTE2(EBI_NWE1,_PIN),ATPASTE2(EBI_NWE1,_FUNCTION)}, - #endif - #if SMC_DBW_GLOBAL >= 32 - #ifdef EBI_ADDR_1 - {ATPASTE2(EBI_ADDR_1,_PIN),ATPASTE2(EBI_ADDR_1,_FUNCTION)}, - #endif - #ifdef EBI_NWE3 - {ATPASTE2(EBI_NWE3,_PIN),ATPASTE2(EBI_NWE3,_FUNCTION)}, - #endif - #endif -#endif - #ifdef EBI_NRD - {ATPASTE2(EBI_NRD,_PIN),ATPASTE2(EBI_NRD,_FUNCTION)}, - #endif - - // Enable control pins. -#if NWAIT_MODE_GLOBAL != AVR32_SMC_EXNW_MODE_DISABLED - #ifdef EBI_NWAIT - {ATPASTE2(EBI_NWAIT,_PIN),ATPASTE2(EBI_NWAIT,_FUNCTION)}, - #endif -#endif -#ifdef SMC_USE_NCS0 - #ifdef EBI_NCS_0 - {ATPASTE2(EBI_NCS_0,_PIN),ATPASTE2(EBI_NCS_0,_FUNCTION)}, - #endif -#endif -#ifdef SMC_USE_NCS1 - #ifdef EBI_NCS_1 - {ATPASTE2(EBI_NCS_1,_PIN),ATPASTE2(EBI_NCS_1,_FUNCTION)}, - #endif -#endif -#ifdef SMC_USE_NCS2 - #ifdef EBI_NCS_2 - {ATPASTE2(EBI_NCS_2,_PIN),ATPASTE2(EBI_NCS_2,_FUNCTION)}, - #endif -#endif -#ifdef SMC_USE_NCS3 - #ifdef EBI_NCS_3 - {ATPASTE2(EBI_NCS_3,_PIN),ATPASTE2(EBI_NCS_3,_FUNCTION)}, - #endif -#endif -#ifdef SMC_USE_NCS4 - #ifdef EBI_NCS_4 - {ATPASTE2(EBI_NCS_4,_PIN),ATPASTE2(EBI_NCS_4,_FUNCTION)}, - #endif -#endif -#ifdef SMC_USE_NCS5 - #ifdef EBI_NCS_5 - {ATPASTE2(EBI_NCS_5,_PIN),ATPASTE2(EBI_NCS_5,_FUNCTION)}, - #endif -#endif - }; - - gpio_enable_module(SMC_EBI_GPIO_MAP, sizeof(SMC_EBI_GPIO_MAP) / sizeof(SMC_EBI_GPIO_MAP[0])); -} - -unsigned char smc_get_cs_size(unsigned char cs) -{ - return smc_tab_cs_size[cs]; -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.h deleted file mode 100644 index c3bdf43c4ef..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC/smc.h +++ /dev/null @@ -1,68 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SMC on EBI driver for AVR32 UC3. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a SMC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _SMC_H_ -#define _SMC_H_ - -#include - -#include "compiler.h" -#include "conf_ebi.h" - -/*! \brief Initializes the AVR32 SMC module and the connected SRAM(s). - * \param hsb_hz HSB frequency in Hz (the HSB frequency is applied to the SMC). - * \note Each access to the SMC address space validates the mode of the SMC - * and generates an operation corresponding to this mode. - */ -extern void smc_init(unsigned long hsb_hz); - -/*! \brief Return the size of the peripheral connected . - * \param cs The chip select value - */ -extern unsigned char smc_get_cs_size(unsigned char cs); - -#endif // _SMC_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.c deleted file mode 100644 index 1008c94401b..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.c +++ /dev/null @@ -1,183 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief EIC driver for AVR32 UC3. - * - * AVR32 External Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an EIC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include -#include "compiler.h" -#include "preprocessor.h" -#include "eic.h" - - - -void eic_init(volatile avr32_eic_t *eic, const eic_options_t *opt, unsigned int nb_lines) -{ - int i; - for (i = 0; i < nb_lines; i++) - { - // Set up mode level - eic->mode = (opt[i].eic_mode == 1) ? (eic->mode | (1 << opt[i].eic_line)) : (eic->mode & ~(1 << opt[i].eic_line)); - // Set up edge type - eic->edge = (opt[i].eic_edge == 1) ? (eic->edge | (1 << opt[i].eic_line)) : (eic->edge & ~(1 << opt[i].eic_line)); - // Set up level - eic->level = (opt[i].eic_level == 1) ? (eic->level | (1 << opt[i].eic_line)) : (eic->level & ~(1 << opt[i].eic_line)); - // Set up if filter is used - eic->filter = (opt[i].eic_filter == 1) ? (eic->filter | (1 << opt[i].eic_line)) : (eic->filter & ~(1 << opt[i].eic_line)); - // Set up which mode is used : asynchronous mode/ synchronous mode - eic->async = (opt[i].eic_async == 1) ? (eic->async | (1 << opt[i].eic_line)) : (eic->async & ~(1 << opt[i].eic_line)); - } -} - -void eic_enable_lines(volatile avr32_eic_t *eic, unsigned int mask_lines) -{ - eic->en = mask_lines; -} - -void eic_enable_line(volatile avr32_eic_t *eic, unsigned int line_number) -{ - // Enable line line_number - eic->en = 1 << line_number; -} - -void eic_disable_lines(volatile avr32_eic_t *eic, unsigned int mask_lines) -{ - eic->dis = mask_lines; -} - -void eic_disable_line(volatile avr32_eic_t *eic, unsigned int line_number) -{ - // Disable line line_number - eic->dis = 1 << line_number; -} - -Bool eic_is_line_enabled(volatile avr32_eic_t *eic, unsigned int line_number) -{ - return (eic->ctrl & (1 << line_number)) != 0; -} - -void eic_enable_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines) -{ - eic->ier = mask_lines; -} - -void eic_enable_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number) -{ - // Enable line line_number - eic->ier = 1 << line_number; -} - -void eic_disable_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - eic->idr = mask_lines; - eic->imr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - -void eic_disable_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - // Disable line line_number - if (global_interrupt_enabled) Disable_global_interrupt(); - eic->idr = 1 << line_number; - eic->imr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - -Bool eic_is_interrupt_line_enabled(volatile avr32_eic_t *eic, unsigned int line_number) -{ - return (eic->imr & (1 << line_number)) != 0; -} - -void eic_clear_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - eic->icr = mask_lines; - eic->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - -void eic_clear_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - // Clear line line_number - if (global_interrupt_enabled) Disable_global_interrupt(); - eic->icr = 1 << line_number; - eic->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - -Bool eic_is_interrupt_line_pending(volatile avr32_eic_t *eic, unsigned int line_number) -{ - return (eic->isr & (1 << line_number)) != 0; -} - -#if !defined(AVR32_EIC_301_H_INCLUDED) -void eic_enable_interrupt_scan(volatile avr32_eic_t *eic,unsigned int presc) -{ - // Enable SCAN function with PRESC value - eic->scan |= (presc << AVR32_EIC_SCAN_PRESC_OFFSET) | (1 << AVR32_EIC_SCAN_EN_OFFSET); -} - -void eic_disable_interrupt_scan(volatile avr32_eic_t *eic) -{ - // Disable SCAN function - eic->scan = 0 << AVR32_EIC_SCAN_EN_OFFSET; -} - -unsigned long eic_get_interrupt_pad_scan(volatile avr32_eic_t *eic) -{ - // Return pad number that causes interrupt - return(eic->scan>>AVR32_EIC_SCAN_PIN_OFFSET); -} -#endif \ No newline at end of file diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.h deleted file mode 100644 index 32641b78eb9..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/EIC/eic.h +++ /dev/null @@ -1,275 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief EIC driver for AVR32 UC3. - * - * AVR32 External Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an EIC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _EIC_H_ -#define _EIC_H_ - -#include "compiler.h" - -/*! \name External Interrupt lines - */ -//! @{ -#if (UC3A || UC3B) -#define EXT_INT0 AVR32_EIC_INT0 //!< Line 0 -#define EXT_INT1 AVR32_EIC_INT1 //!< Line 1 -#define EXT_INT2 AVR32_EIC_INT2 //!< Line 2 -#define EXT_INT3 AVR32_EIC_INT3 //!< Line 3 -#define EXT_INT4 AVR32_EIC_INT4 //!< Line 4 -#define EXT_INT5 AVR32_EIC_INT5 //!< Line 5 -#define EXT_INT6 AVR32_EIC_INT6 //!< Line 6 -#define EXT_INT7 AVR32_EIC_INT7 //!< Line 7 -#define EXT_NMI AVR32_EIC_NMI //!< Line 8 -#else -#define EXT_INT0 AVR32_EIC_INT1 //!< Line 0 -#define EXT_INT1 AVR32_EIC_INT2 //!< Line 1 -#define EXT_INT2 AVR32_EIC_INT3 //!< Line 2 -#define EXT_INT3 AVR32_EIC_INT4 //!< Line 3 -#define EXT_INT4 AVR32_EIC_INT5 //!< Line 4 -#define EXT_INT5 AVR32_EIC_INT6 //!< Line 5 -#define EXT_INT6 AVR32_EIC_INT7 //!< Line 6 -#define EXT_INT7 AVR32_EIC_INT8 //!< Line 7 -#define EXT_NMI AVR32_EIC_NMI //!< Line 8 - -#endif - -//! @} - -/*! \name Mode Trigger Options - */ -//! @{ -#define EIC_MODE_EDGE_TRIGGERED AVR32_EIC_EDGE_IRQ //!< -#define EIC_MODE_LEVEL_TRIGGERED AVR32_EIC_LEVEL_IRQ //!< -//! @} - -/*! \name Edge level Options - */ -//! @{ -#define EIC_EDGE_FALLING_EDGE AVR32_EIC_FALLING_EDGE //!< -#define EIC_EDGE_RISING_EDGE AVR32_EIC_RISING_EDGE //!< -//! @} - -/*! \name Level Options - */ -//! @{ -#define EIC_LEVEL_LOW_LEVEL AVR32_EIC_LOW_LEVEL //!< -#define EIC_LEVEL_HIGH_LEVEL AVR32_EIC_HIGH_LEVEL //!< -//! @} - -/*! \name Filter Options - */ -//! @{ -#define EIC_FILTER_ENABLED AVR32_EIC_FILTER_ON //!< -#define EIC_FILTER_DISABLED AVR32_EIC_FILTER_OFF //!< -//! @} - -/*! \name Synch Mode Options - */ -//! @{ -#define EIC_SYNCH_MODE AVR32_EIC_SYNC //!< -#define EIC_ASYNCH_MODE AVR32_EIC_USE_ASYNC //!< -//! @} - -//! Configuration parameters of the EIC module. -typedef struct -{ - //!Line - unsigned char eic_line; - - //! Mode : EDGE_LEVEL or TRIGGER_LEVEL - unsigned char eic_mode; - - //! Edge : FALLING_EDGE or RISING_EDGE - unsigned char eic_edge; - - //! Level : LOW_LEVEL or HIGH_LEVEL - unsigned char eic_level; - - //! Filter: NOT_FILTERED or FILTERED - unsigned char eic_filter; - - //! Async: SYNC mode or ASYNC - unsigned char eic_async; - -} eic_options_t; - - -/*! \brief Init the EIC driver. - * - * \param eic Base address of the EIC module - * \param opt Configuration parameters of the EIC module (see \ref eic_options_t) - * \param nb_lines Number of lines to consider, equal to size of opt buffer - */ -extern void eic_init(volatile avr32_eic_t *eic, const eic_options_t *opt, unsigned int nb_lines); - -/*! \brief Enable the EIC driver. - * - * \param eic Base address of the EIC module - * \param mask_lines Mask for current selected lines - */ -extern void eic_enable_lines(volatile avr32_eic_t *eic, unsigned int mask_lines); - -/*! \brief Enable the EIC driver. - * - * \param eic Base address of the EIC module - * \param line_number Line number to enable - */ -extern void eic_enable_line(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Disable the EIC driver. - * - * \param eic Base address of the EIC module - * \param mask_lines Mask for current selected lines - */ -extern void eic_disable_lines(volatile avr32_eic_t *eic, unsigned int mask_lines); - -/*! \brief Disable the EIC driver. - * - * \param eic Base address of the EIC module - * \param line_number Line number to disable - */ -extern void eic_disable_line(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Tells whether an EIC line is enabled. - * - * \param eic Base address of the EIC module - * \param line_number Line number to test - * - * \return Whether an EIC line is enabled. - */ -extern Bool eic_is_line_enabled(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \name Interrupt Control Functions - */ -//! @{ - -/*! \brief Enable the interrupt feature of the EIC. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param mask_lines Mask for current selected lines - */ -extern void eic_enable_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines); - -/*! \brief Enable the interrupt feature of the EIC. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param line_number Line number to enable - */ -extern void eic_enable_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Disable the interrupt feature of the EIC. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param mask_lines Mask for current selected lines - */ -extern void eic_disable_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines); - -/*! \brief Disable the interrupt feature of the EIC. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param line_number Line number to disable - */ -extern void eic_disable_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Tells whether an EIC interrupt line is enabled. - * - * \param eic Base address of the EIC module - * \param line_number Line number to test - * - * \return Whether an EIC interrupt line is enabled. - */ -extern Bool eic_is_interrupt_line_enabled(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Clear the interrupt flag. - * Call this function once you've handled the interrupt. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param mask_lines Mask for current selected lines - */ -extern void eic_clear_interrupt_lines(volatile avr32_eic_t *eic, unsigned int mask_lines); - -/*! \brief Clear the interrupt flag. - * Call this function once you've handled the interrupt. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param line_number Line number to clear - */ -extern void eic_clear_interrupt_line(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Tells whether an EIC interrupt line is pending. - * - * \param eic Base address of the EIC module - * \param line_number Line number to test - * - * \return Whether an EIC interrupt line is pending. - */ -extern Bool eic_is_interrupt_line_pending(volatile avr32_eic_t *eic, unsigned int line_number); - -/*! \brief Enable the interrupt scan feature of the EIC. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - * \param presc Prescale select for the keypad scan rate in the range [0,31]. - */ -extern void eic_enable_interrupt_scan(volatile avr32_eic_t *eic, unsigned int presc); - -/*! \brief Disable the interrupt scan feature of the EIC. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - */ -extern void eic_disable_interrupt_scan(volatile avr32_eic_t *eic); - -/*! \brief Return scan pad number that causes interrupt. - * - * \param eic Base address of the EIC (i.e. &AVR32_EIC). - */ -extern unsigned long eic_get_interrupt_pad_scan(volatile avr32_eic_t *eic); - -//! @} - - -#endif // _EIC_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c deleted file mode 100644 index 2eee15c0a4e..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c +++ /dev/null @@ -1,1117 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief FLASHC driver for AVR32 UC3. - * - * AVR32 Flash Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a FLASHC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include -#include -#include "compiler.h" -#include "flashc.h" - - -/*! \name FLASHC Writable Bit-Field Registers - */ -//! @{ - -typedef union -{ - unsigned long fcr; - avr32_flashc_fcr_t FCR; -} u_avr32_flashc_fcr_t; - -typedef union -{ - unsigned long fcmd; - avr32_flashc_fcmd_t FCMD; -} u_avr32_flashc_fcmd_t; - -//! @} - - -/*! \name Flash Properties - */ -//! @{ - - -unsigned int flashc_get_flash_size(void) -{ -#if (defined AVR32_FLASHC_300_H_INCLUDED) - static const unsigned int FLASH_SIZE[1 << AVR32_FLASHC_PR_FSZ_SIZE] = - { - 32 << 10, - 64 << 10, - 128 << 10, - 256 << 10, - 384 << 10, - 512 << 10, - 768 << 10, - 1024 << 10 - }; - return FLASH_SIZE[(AVR32_FLASHC.pr & AVR32_FLASHC_PR_FSZ_MASK) >> AVR32_FLASHC_PR_FSZ_OFFSET]; -#else - static const unsigned int FLASH_SIZE[1 << AVR32_FLASHC_FSR_FSZ_SIZE] = - { - 32 << 10, - 64 << 10, - 128 << 10, - 256 << 10, - 384 << 10, - 512 << 10, - 768 << 10, - 1024 << 10 - }; - return FLASH_SIZE[(AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_FSZ_MASK) >> AVR32_FLASHC_FSR_FSZ_OFFSET]; -#endif -} - - -unsigned int flashc_get_page_count(void) -{ - return flashc_get_flash_size() / AVR32_FLASHC_PAGE_SIZE; -} - - -unsigned int flashc_get_page_count_per_region(void) -{ - return flashc_get_page_count() / AVR32_FLASHC_REGIONS; -} - - -unsigned int flashc_get_page_region(int page_number) -{ - return ((page_number >= 0) ? page_number : flashc_get_page_number()) / flashc_get_page_count_per_region(); -} - - -unsigned int flashc_get_region_first_page_number(unsigned int region) -{ - return region * flashc_get_page_count_per_region(); -} - - -//! @} - - -/*! \name FLASHC Control - */ -//! @{ - - -unsigned int flashc_get_wait_state(void) -{ - return (AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_FWS_MASK) >> AVR32_FLASHC_FCR_FWS_OFFSET; -} - - -void flashc_set_wait_state(unsigned int wait_state) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.fws = wait_state; - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -Bool flashc_is_ready_int_enabled(void) -{ - return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_FRDY_MASK) != 0); -} - - -void flashc_enable_ready_int(Bool enable) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.frdy = (enable != FALSE); - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -Bool flashc_is_lock_error_int_enabled(void) -{ - return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_LOCKE_MASK) != 0); -} - - -void flashc_enable_lock_error_int(Bool enable) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.locke = (enable != FALSE); - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -Bool flashc_is_prog_error_int_enabled(void) -{ - return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_PROGE_MASK) != 0); -} - - -void flashc_enable_prog_error_int(Bool enable) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.proge = (enable != FALSE); - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -//! @} - - -/*! \name FLASHC Status - */ -//! @{ - - -Bool flashc_is_ready(void) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_FRDY_MASK) != 0); -} - - -void flashc_default_wait_until_ready(void) -{ - while (!flashc_is_ready()); -} - - -void (*volatile flashc_wait_until_ready)(void) = flashc_default_wait_until_ready; - - -/*! \brief Gets the error status of the FLASHC. - * - * \return The error status of the FLASHC built up from - * \c AVR32_FLASHC_FSR_LOCKE_MASK and \c AVR32_FLASHC_FSR_PROGE_MASK. - * - * \warning This hardware error status is cleared by all functions reading the - * Flash Status Register (FSR). This function is therefore not part of - * the driver's API which instead presents \ref flashc_is_lock_error - * and \ref flashc_is_programming_error. - */ -static unsigned int flashc_get_error_status(void) -{ - return AVR32_FLASHC.fsr & (AVR32_FLASHC_FSR_LOCKE_MASK | - AVR32_FLASHC_FSR_PROGE_MASK); -} - - -//! Sticky error status of the FLASHC. -//! This variable is updated by functions that issue FLASHC commands. It -//! contains the cumulated FLASHC error status of all the FLASHC commands issued -//! by a function. -static unsigned int flashc_error_status = 0; - - -Bool flashc_is_lock_error(void) -{ - return ((flashc_error_status & AVR32_FLASHC_FSR_LOCKE_MASK) != 0); -} - - -Bool flashc_is_programming_error(void) -{ - return ((flashc_error_status & AVR32_FLASHC_FSR_PROGE_MASK) != 0); -} - - -//! @} - - -/*! \name FLASHC Command Control - */ -//! @{ - - -unsigned int flashc_get_command(void) -{ - return (AVR32_FLASHC.fcmd & AVR32_FLASHC_FCMD_CMD_MASK) >> AVR32_FLASHC_FCMD_CMD_OFFSET; -} - - -unsigned int flashc_get_page_number(void) -{ - return (AVR32_FLASHC.fcmd & AVR32_FLASHC_FCMD_PAGEN_MASK) >> AVR32_FLASHC_FCMD_PAGEN_OFFSET; -} - - -void flashc_issue_command(unsigned int command, int page_number) -{ - u_avr32_flashc_fcmd_t u_avr32_flashc_fcmd; - flashc_wait_until_ready(); - u_avr32_flashc_fcmd.fcmd = AVR32_FLASHC.fcmd; - u_avr32_flashc_fcmd.FCMD.cmd = command; - if (page_number >= 0) u_avr32_flashc_fcmd.FCMD.pagen = page_number; - u_avr32_flashc_fcmd.FCMD.key = AVR32_FLASHC_FCMD_KEY_KEY; - AVR32_FLASHC.fcmd = u_avr32_flashc_fcmd.fcmd; - flashc_error_status = flashc_get_error_status(); - flashc_wait_until_ready(); -} - - -//! @} - - -/*! \name FLASHC Global Commands - */ -//! @{ - - -void flashc_no_operation(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_NOP, -1); -} - - -void flashc_erase_all(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EA, -1); -} - - -//! @} - - -/*! \name FLASHC Protection Mechanisms - */ -//! @{ - - -Bool flashc_is_security_bit_active(void) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_SECURITY_MASK) != 0); -} - - -void flashc_activate_security_bit(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_SSB, -1); -} - - -unsigned int flashc_get_bootloader_protected_size(void) -{ - unsigned int bootprot = (1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1 - - flashc_read_gp_fuse_bitfield(AVR32_FLASHC_FGPFRLO_BOOTPROT_OFFSET, - AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE); - return (bootprot) ? AVR32_FLASHC_PAGE_SIZE << bootprot : 0; -} - - -unsigned int flashc_set_bootloader_protected_size(unsigned int bootprot_size) -{ - flashc_set_gp_fuse_bitfield(AVR32_FLASHC_FGPFRLO_BOOTPROT_OFFSET, - AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE, - (1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1 - - ((bootprot_size) ? - 32 - clz((((min(max(bootprot_size, AVR32_FLASHC_PAGE_SIZE << 1), - AVR32_FLASHC_PAGE_SIZE << - ((1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1)) + - AVR32_FLASHC_PAGE_SIZE - 1) / - AVR32_FLASHC_PAGE_SIZE) << 1) - 1) - 1 : - 0)); - return flashc_get_bootloader_protected_size(); -} - - -Bool flashc_is_external_privileged_fetch_locked(void) -{ - return (!flashc_read_gp_fuse_bit(AVR32_FLASHC_FGPFRLO_EPFL_OFFSET)); -} - - -void flashc_lock_external_privileged_fetch(Bool lock) -{ - flashc_set_gp_fuse_bit(AVR32_FLASHC_FGPFRLO_EPFL_OFFSET, !lock); -} - - -Bool flashc_is_page_region_locked(int page_number) -{ - return flashc_is_region_locked(flashc_get_page_region(page_number)); -} - - -Bool flashc_is_region_locked(unsigned int region) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_LOCK0_MASK << (region & (AVR32_FLASHC_REGIONS - 1))) != 0); -} - - -void flashc_lock_page_region(int page_number, Bool lock) -{ - flashc_issue_command((lock) ? AVR32_FLASHC_FCMD_CMD_LP : AVR32_FLASHC_FCMD_CMD_UP, page_number); -} - - -void flashc_lock_region(unsigned int region, Bool lock) -{ - flashc_lock_page_region(flashc_get_region_first_page_number(region), lock); -} - - -void flashc_lock_all_regions(Bool lock) -{ - unsigned int error_status = 0; - unsigned int region = AVR32_FLASHC_REGIONS; - while (region) - { - flashc_lock_region(--region, lock); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -//! @} - - -/*! \name Access to General-Purpose Fuses - */ -//! @{ - - -Bool flashc_read_gp_fuse_bit(unsigned int gp_fuse_bit) -{ - return ((flashc_read_all_gp_fuses() & 1ULL << (gp_fuse_bit & 0x3F)) != 0); -} - - -U64 flashc_read_gp_fuse_bitfield(unsigned int pos, unsigned int width) -{ - return flashc_read_all_gp_fuses() >> (pos & 0x3F) & ((1ULL << min(width, 64)) - 1); -} - - -U8 flashc_read_gp_fuse_byte(unsigned int gp_fuse_byte) -{ - return flashc_read_all_gp_fuses() >> ((gp_fuse_byte & 0x07) << 3); -} - - -U64 flashc_read_all_gp_fuses(void) -{ - return AVR32_FLASHC.fgpfrlo | (U64)AVR32_FLASHC.fgpfrhi << 32; -} - - -Bool flashc_erase_gp_fuse_bit(unsigned int gp_fuse_bit, Bool check) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EGPB, gp_fuse_bit & 0x3F); - return (check) ? flashc_read_gp_fuse_bit(gp_fuse_bit) : TRUE; -} - - -Bool flashc_erase_gp_fuse_bitfield(unsigned int pos, unsigned int width, Bool check) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_bit; - pos &= 0x3F; - width = min(width, 64); - for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++) - { - flashc_erase_gp_fuse_bit(gp_fuse_bit, FALSE); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; - return (check) ? (flashc_read_gp_fuse_bitfield(pos, width) == (1ULL << width) - 1) : TRUE; -} - - -Bool flashc_erase_gp_fuse_byte(unsigned int gp_fuse_byte, Bool check) -{ - unsigned int error_status; - unsigned int current_gp_fuse_byte; - U64 value = flashc_read_all_gp_fuses(); - flashc_erase_all_gp_fuses(FALSE); - error_status = flashc_error_status; - for (current_gp_fuse_byte = 0; current_gp_fuse_byte < 8; current_gp_fuse_byte++, value >>= 8) - { - if (current_gp_fuse_byte != gp_fuse_byte) - { - flashc_write_gp_fuse_byte(current_gp_fuse_byte, value); - error_status |= flashc_error_status; - } - } - flashc_error_status = error_status; - return (check) ? (flashc_read_gp_fuse_byte(gp_fuse_byte) == 0xFF) : TRUE; -} - - -Bool flashc_erase_all_gp_fuses(Bool check) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EAGPF, -1); - return (check) ? (flashc_read_all_gp_fuses() == 0xFFFFFFFFFFFFFFFFULL) : TRUE; -} - - -void flashc_write_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value) -{ - if (!value) - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WGPB, gp_fuse_bit & 0x3F); -} - - -void flashc_write_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_bit; - pos &= 0x3F; - width = min(width, 64); - for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++, value >>= 1) - { - flashc_write_gp_fuse_bit(gp_fuse_bit, value & 0x01); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -void flashc_write_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_PGPFB, (gp_fuse_byte & 0x07) | value << 3); -} - - -void flashc_write_all_gp_fuses(U64 value) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_byte; - for (gp_fuse_byte = 0; gp_fuse_byte < 8; gp_fuse_byte++, value >>= 8) - { - flashc_write_gp_fuse_byte(gp_fuse_byte, value); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -void flashc_set_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value) -{ - if (value) - flashc_erase_gp_fuse_bit(gp_fuse_bit, FALSE); - else - flashc_write_gp_fuse_bit(gp_fuse_bit, FALSE); -} - - -void flashc_set_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_bit; - pos &= 0x3F; - width = min(width, 64); - for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++, value >>= 1) - { - flashc_set_gp_fuse_bit(gp_fuse_bit, value & 0x01); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -void flashc_set_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value) -{ - unsigned int error_status; - switch (value) - { - case 0xFF: - flashc_erase_gp_fuse_byte(gp_fuse_byte, FALSE); - break; - case 0x00: - flashc_write_gp_fuse_byte(gp_fuse_byte, 0x00); - break; - default: - flashc_erase_gp_fuse_byte(gp_fuse_byte, FALSE); - error_status = flashc_error_status; - flashc_write_gp_fuse_byte(gp_fuse_byte, value); - flashc_error_status |= error_status; - } -} - - -void flashc_set_all_gp_fuses(U64 value) -{ - unsigned int error_status; - switch (value) - { - case 0xFFFFFFFFFFFFFFFFULL: - flashc_erase_all_gp_fuses(FALSE); - break; - case 0x0000000000000000ULL: - flashc_write_all_gp_fuses(0x0000000000000000ULL); - break; - default: - flashc_erase_all_gp_fuses(FALSE); - error_status = flashc_error_status; - flashc_write_all_gp_fuses(value); - flashc_error_status |= error_status; - } -} - - -//! @} - - -/*! \name Access to Flash Pages - */ -//! @{ - - -void flashc_clear_page_buffer(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_CPB, -1); -} - - -Bool flashc_is_page_erased(void) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_QPRR_MASK) != 0); -} - - -Bool flashc_quick_page_read(int page_number) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_QPR, page_number); - return flashc_is_page_erased(); -} - - -Bool flashc_erase_page(int page_number, Bool check) -{ - Bool page_erased = TRUE; - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EP, page_number); - if (check) - { - unsigned int error_status = flashc_error_status; - page_erased = flashc_quick_page_read(-1); - flashc_error_status |= error_status; - } - return page_erased; -} - - -Bool flashc_erase_all_pages(Bool check) -{ - Bool all_pages_erased = TRUE; - unsigned int error_status = 0; - unsigned int page_number = flashc_get_page_count(); - while (page_number) - { - all_pages_erased &= flashc_erase_page(--page_number, check); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; - return all_pages_erased; -} - - -void flashc_write_page(int page_number) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WP, page_number); -} - - -Bool flashc_quick_user_page_read(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_QPRUP, -1); - return flashc_is_page_erased(); -} - - -Bool flashc_erase_user_page(Bool check) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EUP, -1); - return (check) ? flashc_quick_user_page_read() : TRUE; -} - - -void flashc_write_user_page(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WUP, -1); -} - - -volatile void *flashc_memset8(volatile void *dst, U8 src, size_t nbytes, Bool erase) -{ - return flashc_memset16(dst, src | (U16)src << 8, nbytes, erase); -} - - -volatile void *flashc_memset16(volatile void *dst, U16 src, size_t nbytes, Bool erase) -{ - return flashc_memset32(dst, src | (U32)src << 16, nbytes, erase); -} - - -volatile void *flashc_memset32(volatile void *dst, U32 src, size_t nbytes, Bool erase) -{ - return flashc_memset64(dst, src | (U64)src << 32, nbytes, erase); -} - - -volatile void *flashc_memset64(volatile void *dst, U64 src, size_t nbytes, Bool erase) -{ - // Use aggregated pointers to have several alignments available for a same address. - UnionCVPtr flash_array_end; - UnionVPtr dest; - Union64 source = {0}; - StructCVPtr dest_end; - UnionCVPtr flash_page_source_end; - Bool incomplete_flash_page_end; - Union64 flash_dword; - UnionVPtr tmp; - unsigned int error_status = 0; - unsigned int i; - - // Reformat arguments. - flash_array_end.u8ptr = AVR32_FLASH + flashc_get_flash_size(); - dest.u8ptr = dst; - for (i = (Get_align((U32)dest.u8ptr, sizeof(U64)) - 1) & (sizeof(U64) - 1); - src; i = (i - 1) & (sizeof(U64) - 1)) - { - source.u8[i] = src; - src >>= 8; - } - dest_end.u8ptr = dest.u8ptr + nbytes; - - // If destination is outside flash, go to next flash page if any. - if (dest.u8ptr < AVR32_FLASH) - { - dest.u8ptr = AVR32_FLASH; - } - else if (flash_array_end.u8ptr <= dest.u8ptr && dest.u8ptr < AVR32_FLASHC_USER_PAGE) - { - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - - // If end of destination is outside flash, move it to the end of the previous flash page if any. - if (dest_end.u8ptr > AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE) - { - dest_end.u8ptr = AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE; - } - else if (AVR32_FLASHC_USER_PAGE >= dest_end.u8ptr && dest_end.u8ptr > flash_array_end.u8ptr) - { - dest_end.u8ptr = flash_array_end.u8ptr; - } - - // Align each end of destination pointer with its natural boundary. - dest_end.u16ptr = (U16 *)Align_down((U32)dest_end.u8ptr, sizeof(U16)); - dest_end.u32ptr = (U32 *)Align_down((U32)dest_end.u16ptr, sizeof(U32)); - dest_end.u64ptr = (U64 *)Align_down((U32)dest_end.u32ptr, sizeof(U64)); - - // While end of destination is not reached... - while (dest.u8ptr < dest_end.u8ptr) - { - // Clear the page buffer in order to prepare data for a flash page write. - flashc_clear_page_buffer(); - error_status |= flashc_error_status; - - // Determine where the source data will end in the current flash page. - flash_page_source_end.u64ptr = - (U64 *)min((U32)dest_end.u64ptr, - Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) + AVR32_FLASHC_PAGE_SIZE); - - // Determine if the current destination page has an incomplete end. - incomplete_flash_page_end = (Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) >= - Align_down((U32)dest_end.u8ptr, AVR32_FLASHC_PAGE_SIZE)); - - // Use a flash double-word buffer to manage unaligned accesses. - flash_dword.u64 = source.u64; - - // If destination does not point to the beginning of the current flash page... - if (!Test_align((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE)) - { - // Fill the beginning of the page buffer with the current flash page data. - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - for (tmp.u8ptr = (U8 *)Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE); - tmp.u64ptr < (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - - // If destination is not 64-bit aligned... - if (!Test_align((U32)dest.u8ptr, sizeof(U64))) - { - // Fill the beginning of the flash double-word buffer with the current - // flash page data. - // This is required by the hardware, even if page erase is not - // requested, in order to be able to write successfully to erased parts - // of flash pages that have already been written to. - for (i = 0; i < Get_align((U32)dest.u8ptr, sizeof(U64)); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Align the destination pointer with its 64-bit boundary. - dest.u64ptr = (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - - // If the current destination double-word is not the last one... - if (dest.u64ptr < dest_end.u64ptr) - { - // Write the flash double-word buffer to the page buffer and reinitialize it. - *dest.u64ptr++ = flash_dword.u64; - flash_dword.u64 = source.u64; - } - } - } - - // Write the source data to the page buffer with 64-bit alignment. - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - *dest.u64ptr++ = source.u64; - - // If the current destination page has an incomplete end... - if (incomplete_flash_page_end) - { - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - { - tmp.u8ptr = (volatile U8 *)dest_end.u8ptr; - - // If end of destination is not 64-bit aligned... - if (!Test_align((U32)dest_end.u8ptr, sizeof(U64))) - { - // Fill the end of the flash double-word buffer with the current flash page data. - for (i = Get_align((U32)dest_end.u8ptr, sizeof(U64)); i < sizeof(U64); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Write the flash double-word buffer to the page buffer. - *dest.u64ptr++ = flash_dword.u64; - } - - // Fill the end of the page buffer with the current flash page data. - for (; !Test_align((U32)tmp.u64ptr, AVR32_FLASHC_PAGE_SIZE); tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - } - } - - // If the current flash page is in the flash array... - if (dest.u8ptr <= AVR32_FLASHC_USER_PAGE) - { - // Erase the current page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_page(-1, FALSE); - error_status |= flashc_error_status; - } - flashc_write_page(-1); - error_status |= flashc_error_status; - - // If the end of the flash array is reached, go to the User page. - if (dest.u8ptr >= flash_array_end.u8ptr) - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - // If the current flash page is the User page... - else - { - // Erase the User page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_user_page(FALSE); - error_status |= flashc_error_status; - } - flashc_write_user_page(); - error_status |= flashc_error_status; - } - } - - // Update the FLASHC error status. - flashc_error_status = error_status; - - // Return the initial destination pointer as the standard memset function does. - return dst; -} - - -volatile void *flashc_memcpy(volatile void *dst, const void *src, size_t nbytes, Bool erase) -{ - // Use aggregated pointers to have several alignments available for a same address. - UnionCVPtr flash_array_end; - UnionVPtr dest; - UnionCPtr source; - StructCVPtr dest_end; - UnionCVPtr flash_page_source_end; - Bool incomplete_flash_page_end; - Union64 flash_dword; - Bool flash_dword_pending = FALSE; - UnionVPtr tmp; - unsigned int error_status = 0; - unsigned int i, j; - - // Reformat arguments. - flash_array_end.u8ptr = AVR32_FLASH + flashc_get_flash_size(); - dest.u8ptr = dst; - source.u8ptr = src; - dest_end.u8ptr = dest.u8ptr + nbytes; - - // If destination is outside flash, go to next flash page if any. - if (dest.u8ptr < AVR32_FLASH) - { - source.u8ptr += AVR32_FLASH - dest.u8ptr; - dest.u8ptr = AVR32_FLASH; - } - else if (flash_array_end.u8ptr <= dest.u8ptr && dest.u8ptr < AVR32_FLASHC_USER_PAGE) - { - source.u8ptr += AVR32_FLASHC_USER_PAGE - dest.u8ptr; - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - - // If end of destination is outside flash, move it to the end of the previous flash page if any. - if (dest_end.u8ptr > AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE) - { - dest_end.u8ptr = AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE; - } - else if (AVR32_FLASHC_USER_PAGE >= dest_end.u8ptr && dest_end.u8ptr > flash_array_end.u8ptr) - { - dest_end.u8ptr = flash_array_end.u8ptr; - } - - // Align each end of destination pointer with its natural boundary. - dest_end.u16ptr = (U16 *)Align_down((U32)dest_end.u8ptr, sizeof(U16)); - dest_end.u32ptr = (U32 *)Align_down((U32)dest_end.u16ptr, sizeof(U32)); - dest_end.u64ptr = (U64 *)Align_down((U32)dest_end.u32ptr, sizeof(U64)); - - // While end of destination is not reached... - while (dest.u8ptr < dest_end.u8ptr) - { - // Clear the page buffer in order to prepare data for a flash page write. - flashc_clear_page_buffer(); - error_status |= flashc_error_status; - - // Determine where the source data will end in the current flash page. - flash_page_source_end.u64ptr = - (U64 *)min((U32)dest_end.u64ptr, - Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) + AVR32_FLASHC_PAGE_SIZE); - - // Determine if the current destination page has an incomplete end. - incomplete_flash_page_end = (Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) >= - Align_down((U32)dest_end.u8ptr, AVR32_FLASHC_PAGE_SIZE)); - - // If destination does not point to the beginning of the current flash page... - if (!Test_align((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE)) - { - // Fill the beginning of the page buffer with the current flash page data. - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - for (tmp.u8ptr = (U8 *)Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE); - tmp.u64ptr < (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - - // If destination is not 64-bit aligned... - if (!Test_align((U32)dest.u8ptr, sizeof(U64))) - { - // Fill the beginning of the flash double-word buffer with the current - // flash page data. - // This is required by the hardware, even if page erase is not - // requested, in order to be able to write successfully to erased parts - // of flash pages that have already been written to. - for (i = 0; i < Get_align((U32)dest.u8ptr, sizeof(U64)); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Fill the end of the flash double-word buffer with the source data. - for (; i < sizeof(U64); i++) - flash_dword.u8[i] = *source.u8ptr++; - - // Align the destination pointer with its 64-bit boundary. - dest.u64ptr = (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - - // If the current destination double-word is not the last one... - if (dest.u64ptr < dest_end.u64ptr) - { - // Write the flash double-word buffer to the page buffer. - *dest.u64ptr++ = flash_dword.u64; - } - // If the current destination double-word is the last one, the flash - // double-word buffer must be kept for later. - else flash_dword_pending = TRUE; - } - } - - // Read the source data with the maximal possible alignment and write it to - // the page buffer with 64-bit alignment. - switch (Get_align((U32)source.u8ptr, sizeof(U32))) - { - case 0: - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - *dest.u64ptr++ = *source.u64ptr++; - break; - - case sizeof(U16): - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - { - for (j = 0; j < sizeof(U64) / sizeof(U16); j++) flash_dword.u16[j] = *source.u16ptr++; - *dest.u64ptr++ = flash_dword.u64; - } - break; - - default: - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - { - for (j = 0; j < sizeof(U64); j++) flash_dword.u8[j] = *source.u8ptr++; - *dest.u64ptr++ = flash_dword.u64; - } - } - - // If the current destination page has an incomplete end... - if (incomplete_flash_page_end) - { - // If the flash double-word buffer is in use, do not initialize it. - if (flash_dword_pending) i = Get_align((U32)dest_end.u8ptr, sizeof(U64)); - // If the flash double-word buffer is free... - else - { - // Fill the beginning of the flash double-word buffer with the source data. - for (i = 0; i < Get_align((U32)dest_end.u8ptr, sizeof(U64)); i++) - flash_dword.u8[i] = *source.u8ptr++; - } - - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - { - tmp.u8ptr = (volatile U8 *)dest_end.u8ptr; - - // If end of destination is not 64-bit aligned... - if (!Test_align((U32)dest_end.u8ptr, sizeof(U64))) - { - // Fill the end of the flash double-word buffer with the current flash page data. - for (; i < sizeof(U64); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Write the flash double-word buffer to the page buffer. - *dest.u64ptr++ = flash_dword.u64; - } - - // Fill the end of the page buffer with the current flash page data. - for (; !Test_align((U32)tmp.u64ptr, AVR32_FLASHC_PAGE_SIZE); tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - } - } - - // If the current flash page is in the flash array... - if (dest.u8ptr <= AVR32_FLASHC_USER_PAGE) - { - // Erase the current page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_page(-1, FALSE); - error_status |= flashc_error_status; - } - flashc_write_page(-1); - error_status |= flashc_error_status; - - // If the end of the flash array is reached, go to the User page. - if (dest.u8ptr >= flash_array_end.u8ptr) - { - source.u8ptr += AVR32_FLASHC_USER_PAGE - dest.u8ptr; - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - } - // If the current flash page is the User page... - else - { - // Erase the User page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_user_page(FALSE); - error_status |= flashc_error_status; - } - flashc_write_user_page(); - error_status |= flashc_error_status; - } - } - - // Update the FLASHC error status. - flashc_error_status = error_status; - - // Return the initial destination pointer as the standard memcpy function does. - return dst; -} - - -#if UC3C -void flashc_set_flash_waitstate_and_readmode(unsigned long cpu_f_hz) -{ - //! Device-specific data - #undef AVR32_FLASHC_FWS_0_MAX_FREQ - #undef AVR32_FLASHC_FWS_1_MAX_FREQ - #undef AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ - #undef AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ - #define AVR32_FLASHC_FWS_0_MAX_FREQ 33000000 - #define AVR32_FLASHC_FWS_1_MAX_FREQ 66000000 - #define AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ 33000000 - #define AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ 72000000 - // These defines are missing from or wrong in the toolchain header files uc3cxxx.h - // Put a Bugzilla - - if(cpu_f_hz > AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ) // > 33MHz - { - // Set a wait-state - flashc_set_wait_state(1); - if(cpu_f_hz <= AVR32_FLASHC_FWS_1_MAX_FREQ) // <= 66MHz and >33Mhz - { - // Disable the high-speed read mode. - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); - } - else // > 66Mhz - { - // Enable the high-speed read mode. - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1); - } - } - else // <= 33 MHz - { - // Disable wait-state - flashc_set_wait_state(0); - - // Disable the high-speed read mode. - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); - - } -} -#endif // UC3C device-specific implementation - -//! @} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h deleted file mode 100644 index 9f2547a6e5e..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h +++ /dev/null @@ -1,1002 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief FLASHC driver for AVR32 UC3. - * - * AVR32 Flash Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a FLASHC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _FLASHC_H_ -#define _FLASHC_H_ - -#include -#include -#include "compiler.h" - -//! Number of flash regions defined by the FLASHC. -#define AVR32_FLASHC_REGIONS (AVR32_FLASHC_FLASH_SIZE /\ - (AVR32_FLASHC_PAGES_PR_REGION * AVR32_FLASHC_PAGE_SIZE)) - - -/*! \name Flash Properties - */ -//! @{ - -/*! \brief Gets the size of the whole flash array. - * - * \return The size of the whole flash array in bytes. - */ -extern unsigned int flashc_get_flash_size(void); - -/*! \brief Gets the total number of pages in the flash array. - * - * \return The total number of pages in the flash array. - */ -extern unsigned int flashc_get_page_count(void); - -/*! \brief Gets the number of pages in each flash region. - * - * \return The number of pages in each flash region. - */ -extern unsigned int flashc_get_page_count_per_region(void); - -/*! \brief Gets the region number of a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \return The region number of the specified page. - */ -extern unsigned int flashc_get_page_region(int page_number); - -/*! \brief Gets the number of the first page of a region. - * - * \param region The region number: \c 0 to (AVR32_FLASHC_REGIONS - 1). - * - * \return The number of the first page of the specified region. - */ -extern unsigned int flashc_get_region_first_page_number(unsigned int region); - -//! @} - - -/*! \name FLASHC Control - */ -//! @{ - -/*! \brief Gets the number of wait states of flash read accesses. - * - * \return The number of wait states of flash read accesses. - */ -extern unsigned int flashc_get_wait_state(void); - -/*! \brief Sets the number of wait states of flash read accesses. - * - * \param wait_state The number of wait states of flash read accesses: \c 0 to - * \c 1. - */ -extern void flashc_set_wait_state(unsigned int wait_state); - -/*! \brief Tells whether the Flash Ready interrupt is enabled. - * - * \return Whether the Flash Ready interrupt is enabled. - */ -extern Bool flashc_is_ready_int_enabled(void); - -/*! \brief Enables or disables the Flash Ready interrupt. - * - * \param enable Whether to enable the Flash Ready interrupt: \c TRUE or - * \c FALSE. - */ -extern void flashc_enable_ready_int(Bool enable); - -/*! \brief Tells whether the Lock Error interrupt is enabled. - * - * \return Whether the Lock Error interrupt is enabled. - */ -extern Bool flashc_is_lock_error_int_enabled(void); - -/*! \brief Enables or disables the Lock Error interrupt. - * - * \param enable Whether to enable the Lock Error interrupt: \c TRUE or - * \c FALSE. - */ -extern void flashc_enable_lock_error_int(Bool enable); - -/*! \brief Tells whether the Programming Error interrupt is enabled. - * - * \return Whether the Programming Error interrupt is enabled. - */ -extern Bool flashc_is_prog_error_int_enabled(void); - -/*! \brief Enables or disables the Programming Error interrupt. - * - * \param enable Whether to enable the Programming Error interrupt: \c TRUE or - * \c FALSE. - */ -extern void flashc_enable_prog_error_int(Bool enable); - -//! @} - - -/*! \name FLASHC Status - */ -//! @{ - -/*! \brief Tells whether the FLASHC is ready to run a new command. - * - * \return Whether the FLASHC is ready to run a new command. - */ -extern Bool flashc_is_ready(void); - -/*! \brief Waits actively until the FLASHC is ready to run a new command. - * - * This is the default function assigned to \ref flashc_wait_until_ready. - */ -extern void flashc_default_wait_until_ready(void); - -//! Pointer to the function used by the driver when it needs to wait until the -//! FLASHC is ready to run a new command. -//! The default function is \ref flashc_default_wait_until_ready. -//! The user may change this pointer to use another implementation. -extern void (*volatile flashc_wait_until_ready)(void); - -/*! \brief Tells whether a Lock Error has occurred during the last function - * called that issued one or more FLASHC commands. - * - * \return Whether a Lock Error has occurred during the last function called - * that issued one or more FLASHC commands. - */ -extern Bool flashc_is_lock_error(void); - -/*! \brief Tells whether a Programming Error has occurred during the last - * function called that issued one or more FLASHC commands. - * - * \return Whether a Programming Error has occurred during the last function - * called that issued one or more FLASHC commands. - */ -extern Bool flashc_is_programming_error(void); - -//! @} - - -/*! \name FLASHC Command Control - */ -//! @{ - -/*! \brief Gets the last issued FLASHC command. - * - * \return The last issued FLASHC command. - */ -extern unsigned int flashc_get_command(void); - -/*! \brief Gets the current FLASHC page number. - * - * \return The current FLASHC page number. - */ -extern unsigned int flashc_get_page_number(void); - -/*! \brief Issues a FLASHC command. - * - * \param command The command: \c AVR32_FLASHC_FCMD_CMD_x. - * \param page_number The page number to apply the command to: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: use this to apply the command to the current page number - * or if the command does not apply to any page number; - * \arg this argument may have other meanings according to the command. See - * the FLASHC chapter of the MCU datasheet. - * - * \warning A Lock Error is issued if the command violates the protection - * mechanism. - * - * \warning A Programming Error is issued if the command is invalid. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_issue_command(unsigned int command, int page_number); - -//! @} - - -/*! \name FLASHC Global Commands - */ -//! @{ - -/*! \brief Issues a No Operation command to the FLASHC. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_no_operation(void); - -/*! \brief Issues an Erase All command to the FLASHC. - * - * This command erases all bits in the flash array, the general-purpose fuse - * bits and the Security bit. The User page is not erased. - * - * This command also ensures that all volatile memories, such as register file - * and RAMs, are erased before the Security bit is erased, i.e. deactivated. - * - * \warning A Lock Error is issued if at least one region is locked or the - * bootloader protection is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern void flashc_erase_all(void); - -//! @} - - -/*! \name FLASHC Protection Mechanisms - */ -//! @{ - -/*! \brief Tells whether the Security bit is active. - * - * \return Whether the Security bit is active. - */ -extern Bool flashc_is_security_bit_active(void); - -/*! \brief Activates the Security bit. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_activate_security_bit(void); - -/*! \brief Gets the bootloader protected size. - * - * \return The bootloader protected size in bytes. - */ -extern unsigned int flashc_get_bootloader_protected_size(void); - -/*! \brief Sets the bootloader protected size. - * - * \param bootprot_size The wanted bootloader protected size in bytes. If this - * size is not supported, the actual size will be the - * nearest greater available size or the maximal possible - * size if the requested size is too large. - * - * \return The actual bootloader protected size in bytes. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern unsigned int flashc_set_bootloader_protected_size(unsigned int bootprot_size); - -/*! \brief Tells whether external privileged fetch is locked. - * - * \return Whether external privileged fetch is locked. - */ -extern Bool flashc_is_external_privileged_fetch_locked(void); - -/*! \brief Locks or unlocks external privileged fetch. - * - * \param lock Whether to lock external privileged fetch: \c TRUE or \c FALSE. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_external_privileged_fetch(Bool lock); - -/*! \brief Tells whether the region of a page is locked. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \return Whether the region of the specified page is locked. - */ -extern Bool flashc_is_page_region_locked(int page_number); - -/*! \brief Tells whether a region is locked. - * - * \param region The region number: \c 0 to (AVR32_FLASHC_REGIONS - 1). - * - * \return Whether the specified region is locked. - */ -extern Bool flashc_is_region_locked(unsigned int region); - -/*! \brief Locks or unlocks the region of a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * \param lock Whether to lock the region of the specified page: \c TRUE or - * \c FALSE. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_page_region(int page_number, Bool lock); - -/*! \brief Locks or unlocks a region. - * - * \param region The region number: \c 0 to (AVR32_FLASHC_REGIONS - 1). - * \param lock Whether to lock the specified region: \c TRUE or \c FALSE. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_region(unsigned int region, Bool lock); - -/*! \brief Locks or unlocks all regions. - * - * \param lock Whether to lock the regions: \c TRUE or \c FALSE. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_all_regions(Bool lock); - -//! @} - - -/*! \name Access to General-Purpose Fuses - */ -//! @{ - -/*! \brief Reads a general-purpose fuse bit. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * - * \return The value of the specified general-purpose fuse bit. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_read_gp_fuse_bit(unsigned int gp_fuse_bit); - -/*! \brief Reads a general-purpose fuse bit-field. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * - * \return The value of the specified general-purpose fuse bit-field. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern U64 flashc_read_gp_fuse_bitfield(unsigned int pos, unsigned int width); - -/*! \brief Reads a general-purpose fuse byte. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * - * \return The value of the specified general-purpose fuse byte. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern U8 flashc_read_gp_fuse_byte(unsigned int gp_fuse_byte); - -/*! \brief Reads all general-purpose fuses. - * - * \return The value of all general-purpose fuses as a word. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern U64 flashc_read_all_gp_fuses(void); - -/*! \brief Erases a general-purpose fuse bit. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_gp_fuse_bit(unsigned int gp_fuse_bit, Bool check); - -/*! \brief Erases a general-purpose fuse bit-field. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_gp_fuse_bitfield(unsigned int pos, unsigned int width, Bool check); - -/*! \brief Erases a general-purpose fuse byte. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_gp_fuse_byte(unsigned int gp_fuse_byte, Bool check); - -/*! \brief Erases all general-purpose fuses. - * - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_all_gp_fuses(Bool check); - -/*! \brief Writes a general-purpose fuse bit. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * \param value The value of the specified general-purpose fuse bit. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value); - -/*! \brief Writes a general-purpose fuse bit-field. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * \param value The value of the specified general-purpose fuse bit-field. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value); - -/*! \brief Writes a general-purpose fuse byte. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * \param value The value of the specified general-purpose fuse byte. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value); - -/*! \brief Writes all general-purpose fuses. - * - * \param value The value of all general-purpose fuses as a word. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_all_gp_fuses(U64 value); - -/*! \brief Sets a general-purpose fuse bit with the appropriate erase and write - * operations. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * \param value The value of the specified general-purpose fuse bit. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value); - -/*! \brief Sets a general-purpose fuse bit-field with the appropriate erase and - * write operations. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * \param value The value of the specified general-purpose fuse bit-field. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value); - -/*! \brief Sets a general-purpose fuse byte with the appropriate erase and write - * operations. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * \param value The value of the specified general-purpose fuse byte. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value); - -/*! \brief Sets all general-purpose fuses with the appropriate erase and write - * operations. - * - * \param value The value of all general-purpose fuses as a word. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_all_gp_fuses(U64 value); - -//! @} - - -/*! \name Access to Flash Pages - */ -//! @{ - -/*! \brief Clears the page buffer. - * - * This command resets all bits in the page buffer to one. Write accesses to the - * page buffer can only change page buffer bits from one to zero. - * - * \warning The page buffer is not automatically reset after a page write. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_clear_page_buffer(void); - -/*! \brief Tells whether the page to which the last Quick Page Read or Quick - * Page Read User Page command was applied was erased. - * - * \return Whether the page to which the last Quick Page Read or Quick Page Read - * User Page command was applied was erased. - */ -extern Bool flashc_is_page_erased(void); - -/*! \brief Applies the Quick Page Read command to a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \return Whether the specified page is erased. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern Bool flashc_quick_page_read(int page_number); - -/*! \brief Erases a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the command is applied to a page belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern Bool flashc_erase_page(int page_number, Bool check); - -/*! \brief Erases all pages within the flash array. - * - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if at least one region is locked or the - * bootloader protection is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern Bool flashc_erase_all_pages(Bool check); - -/*! \brief Writes a page from the page buffer. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \warning A Lock Error is issued if the command is applied to a page belonging - * to a locked region or to the bootloader protected area. - * - * \warning The page buffer is not automatically reset after a page write. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - */ -extern void flashc_write_page(int page_number); - -/*! \brief Issues a Quick Page Read User Page command to the FLASHC. - * - * \return Whether the User page is erased. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern Bool flashc_quick_user_page_read(void); - -/*! \brief Erases the User page. - * - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern Bool flashc_erase_user_page(Bool check); - -/*! \brief Writes the User page from the page buffer. - * - * \warning The page buffer is not automatically reset after a page write. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - */ -extern void flashc_write_user_page(void); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src source byte. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source byte. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset8(volatile void *dst, U8 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source half-word. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source half-word. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset16(volatile void *dst, U16 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source word. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source word. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset32(volatile void *dst, U32 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source double-word. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source double-word. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset64(volatile void *dst, U64 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source pattern. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source double-word. - * \param src_width \a src width in bits: 8, 16, 32 or 64. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -#define flashc_memset(dst, src, src_width, nbytes, erase) \ - TPASTE2(flashc_memset, src_width)((dst), (src), (nbytes), (erase)) - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the source pointed to by \a src. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Pointer to source data. - * \param nbytes Number of bytes to copy. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning If copying takes place between areas that overlap, the behavior is - * undefined. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memcpy(volatile void *dst, const void *src, size_t nbytes, Bool erase); - -#if UC3C - -/*! \brief Depednding to the CPU frequency, set the wait states of flash read - * accesses and enable or disable the High speed read mode. - * - * \param cpu_f_hz The CPU frequency - */ -void flashc_set_flash_waitstate_and_readmode(unsigned long cpu_f_hz); -#endif // UC3C device-specific implementation - -//! @} - - -#endif // _FLASHC_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c deleted file mode 100644 index b6b83c73fcc..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c +++ /dev/null @@ -1,458 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief GPIO driver for AVR32 UC3. - * - * This file defines a useful set of functions for the GPIO. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a GPIO module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "gpio.h" - -//! GPIO module instance. -#define GPIO AVR32_GPIO - - -/*! \name Peripheral Bus Interface - */ -//! @{ - - -int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size) -{ - int status = GPIO_SUCCESS; - unsigned int i; - - for (i = 0; i < size; i++) - { - status |= gpio_enable_module_pin(gpiomap->pin, gpiomap->function); - gpiomap++; - } - - return status; -} - - -int gpio_enable_module_pin(unsigned int pin, unsigned int function) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Enable the correct function. - switch (function) - { - case 0: // A function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - - case 1: // B function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - - case 2: // C function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - - case 3: // D function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - case 4: // E function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; - - case 5: // F function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; - - case 6: // G function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; - - case 7: // H function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; -#endif - - default: - return GPIO_INVALID_ARGUMENT; - } - - // Disable GPIO control. - gpio_port->gperc = 1 << (pin & 0x1F); - - return GPIO_SUCCESS; -} - - -void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size) -{ - unsigned int i; - - for (i = 0; i < size; i++) - { - gpio_enable_gpio_pin(gpiomap->pin); - gpiomap++; - } -} - - -void gpio_enable_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->oderc = 1 << (pin & 0x1F); - gpio_port->gpers = 1 << (pin & 0x1F); -} - - -// The open-drain mode is not synthesized on the current AVR32 products. -// If one day some AVR32 products have this feature, the corresponding part -// numbers should be listed in the #if below. -// Note that other functions are available in this driver to use pins with open -// drain in GPIO mode. The advantage of the open-drain mode functions over these -// other functions is that they can be used not only in GPIO mode but also in -// module mode. -#if 0 - - -void gpio_enable_pin_open_drain(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->odmers = 1 << (pin & 0x1F); -} - - -void gpio_disable_pin_open_drain(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->odmerc = 1 << (pin & 0x1F); -} - - -#endif - - -void gpio_enable_pin_pull_up(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puers = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pderc = 1 << (pin & 0x1F); -#endif -} - - -void gpio_disable_pin_pull_up(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puerc = 1 << (pin & 0x1F); -} - -#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) -// Added support of Pull-up Resistor, Pull-down Resistor and Buskeeper Control. - -/*! \brief Enables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -void gpio_enable_pin_pull_down(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puerc = 1 << (pin & 0x1F); - gpio_port->pders = 1 << (pin & 0x1F); -} - -/*! \brief Disables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -void gpio_disable_pin_pull_down(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->pderc = 1 << (pin & 0x1F); -} - -/*! \brief Enables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -void gpio_enable_pin_buskeeper(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puers = 1 << (pin & 0x1F); - gpio_port->pders = 1 << (pin & 0x1F); -} - -/*! \brief Disables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -void gpio_disable_pin_buskeeper(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puerc = 1 << (pin & 0x1F); - gpio_port->pderc = 1 << (pin & 0x1F); -} - -#endif - -int gpio_get_pin_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->pvr >> (pin & 0x1F)) & 1; -} - - -int gpio_get_gpio_pin_output_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->ovr >> (pin & 0x1F)) & 1; -} - - -int gpio_get_gpio_open_drain_pin_output_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return ((gpio_port->oder >> (pin & 0x1F)) & 1) ^ 1; -} - - -void gpio_set_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrs = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 1. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_clr_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 0. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_tgl_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrt = 1 << (pin & 0x1F); // Toggle the I/O line. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_set_gpio_open_drain_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->oderc = 1 << (pin & 0x1F); // The GPIO output driver is disabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_clr_gpio_open_drain_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 0. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_tgl_gpio_open_drain_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line if the GPIO output driver is enabled: 0. - gpio_port->odert = 1 << (pin & 0x1F); // The GPIO output driver is toggled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_enable_pin_glitch_filter(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->gfers = 1 << (pin & 0x1F); -} - - -void gpio_disable_pin_glitch_filter(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->gferc = 1 << (pin & 0x1F); -} - -/*! \brief Configure the edge detector of an input pin - * - * \param pin The pin number. - * \param mode The edge detection mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE - * or \ref GPIO_FALLING_EDGE). - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -static int gpio_configure_edge_detector(unsigned int pin, unsigned int mode) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Configure the edge detector. - switch (mode) - { - case GPIO_PIN_CHANGE: - gpio_port->imr0c = 1 << (pin & 0x1F); - gpio_port->imr1c = 1 << (pin & 0x1F); - break; - - case GPIO_RISING_EDGE: - gpio_port->imr0s = 1 << (pin & 0x1F); - gpio_port->imr1c = 1 << (pin & 0x1F); - break; - - case GPIO_FALLING_EDGE: - gpio_port->imr0c = 1 << (pin & 0x1F); - gpio_port->imr1s = 1 << (pin & 0x1F); - break; - - default: - return GPIO_INVALID_ARGUMENT; - } - - return GPIO_SUCCESS; -} - - -int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Enable the glitch filter. - gpio_port->gfers = 1 << (pin & 0x1F); - - // Configure the edge detector. - if(GPIO_INVALID_ARGUMENT == gpio_configure_edge_detector(pin, mode)) - return(GPIO_INVALID_ARGUMENT); - - // Enable interrupt. - gpio_port->iers = 1 << (pin & 0x1F); - - return GPIO_SUCCESS; -} - - -void gpio_disable_pin_interrupt(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->ierc = 1 << (pin & 0x1F); -} - - -int gpio_get_pin_interrupt_flag(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->ifr >> (pin & 0x1F)) & 1; -} - - -void gpio_clear_pin_interrupt_flag(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->ifrc = 1 << (pin & 0x1F); -} - - -//# -//# Peripheral Event System Support. -//# -#if UC3L -int gpio_configure_pin_periph_event_mode(unsigned int pin, unsigned int mode, unsigned int use_igf) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - if(TRUE == use_igf) - { - // Enable the glitch filter. - gpio_port->gfers = 1 << (pin & 0x1F); - } - else - { - // Disable the glitch filter. - gpio_port->gferc = 1 << (pin & 0x1F); - } - - // Configure the edge detector. - return(gpio_configure_edge_detector(pin, mode)); -} - -#endif - -//! @} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h deleted file mode 100644 index f0b5fd884c0..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h +++ /dev/null @@ -1,583 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief GPIO header for AVR32 UC3. - * - * This file contains basic GPIO driver functions. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a GPIO module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _GPIO_H_ -#define _GPIO_H_ - -#include -#include "compiler.h" - -/*! \name Return Values of the GPIO API - */ -//! @{ -#define GPIO_SUCCESS 0 //!< Function successfully completed. -#define GPIO_INVALID_ARGUMENT 1 //!< Input parameters are out of range. -//! @} - - -/*! \name Interrupt Trigger Modes - */ -//! @{ -#define GPIO_PIN_CHANGE 0 //!< Interrupt triggered upon pin change. -#define GPIO_RISING_EDGE 1 //!< Interrupt triggered upon rising edge. -#define GPIO_FALLING_EDGE 2 //!< Interrupt triggered upon falling edge. -//! @} - - -//! A type definition of pins and modules connectivity. -typedef struct -{ - unsigned char pin; //!< Module pin. - unsigned char function; //!< Module function. -} gpio_map_t[]; - - -/*! \name Peripheral Bus Interface - * - * Low-speed interface with a non-deterministic number of clock cycles per - * access. - * - * This interface operates with lower clock frequencies (fPB <= fCPU), and its - * timing is not deterministic since it needs to access a shared bus which may - * be heavily loaded. - * - * \note This interface is immediately available without initialization. - */ -//! @{ - -/*! \brief Enables specific module modes for a set of pins. - * - * \param gpiomap The pin map. - * \param size The number of pins in \a gpiomap. - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size); - -/*! \brief Enables a specific module mode for a pin. - * - * \param pin The pin number.\n - * Refer to the product header file `uc3x.h' (where x is the part - * number; e.g. x = a0512) for module pins. E.g., to enable a PWM - * channel output, the pin number can be AVR32_PWM_3_PIN for PWM - * channel 3. - * \param function The pin function.\n - * Refer to the product header file `uc3x.h' (where x is the - * part number; e.g. x = a0512) for module pin functions. E.g., - * to enable a PWM channel output, the pin function can be - * AVR32_PWM_3_FUNCTION for PWM channel 3. - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_module_pin(unsigned int pin, unsigned int function); - -/*! \brief Enables the GPIO mode of a set of pins. - * - * \param gpiomap The pin map. - * \param size The number of pins in \a gpiomap. - */ -extern void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size); - -/*! \brief Enables the GPIO mode of a pin. - * - * \param pin The pin number.\n - * Refer to the product header file `uc3x.h' (where x is the part - * number; e.g. x = a0512) for pin definitions. E.g., to enable the - * GPIO mode of PX21, AVR32_PIN_PX21 can be used. Module pins such as - * AVR32_PWM_3_PIN for PWM channel 3 can also be used to release - * module pins for GPIO. - */ -extern void gpio_enable_gpio_pin(unsigned int pin); - -// The open-drain mode is not synthesized on the current AVR32 products. -// If one day some AVR32 products have this feature, the corresponding part -// numbers should be listed in the #if below. -// Note that other functions are available in this driver to use pins with open -// drain in GPIO mode. The advantage of the open-drain mode functions over these -// other functions is that they can be used not only in GPIO mode but also in -// module mode. -#if 0 - -/*! \brief Enables the open-drain mode of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_open_drain(unsigned int pin); - -/*! \brief Disables the open-drain mode of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_open_drain(unsigned int pin); - -#endif - -/*! \brief Enables the pull-up resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_pull_up(unsigned int pin); - -/*! \brief Disables the pull-up resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_pull_up(unsigned int pin); - -#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) -// Added support of Pull-up Resistor, Pull-down Resistor and Buskeeper Control. - -/*! \brief Enables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_pull_down(unsigned int pin); - -/*! \brief Disables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_pull_down(unsigned int pin); - -/*! \brief Enables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_buskeeper(unsigned int pin); - -/*! \brief Disables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_buskeeper(unsigned int pin); - -#endif - -/*! \brief Returns the value of a pin. - * - * \param pin The pin number. - * - * \return The pin value. - */ -extern int gpio_get_pin_value(unsigned int pin); - -/*! \brief Returns the output value set for a GPIO pin. - * - * \param pin The pin number. - * - * \return The pin output value. - * - * \note This function must be used in conjunction with \ref gpio_set_gpio_pin, - * \ref gpio_clr_gpio_pin and \ref gpio_tgl_gpio_pin. - */ -extern int gpio_get_gpio_pin_output_value(unsigned int pin); - -/*! \brief Returns the output value set for a GPIO pin using open drain. - * - * \param pin The pin number. - * - * \return The pin output value. - * - * \note This function must be used in conjunction with - * \ref gpio_set_gpio_open_drain_pin, \ref gpio_clr_gpio_open_drain_pin - * and \ref gpio_tgl_gpio_open_drain_pin. - */ -extern int gpio_get_gpio_open_drain_pin_output_value(unsigned int pin); - -/*! \brief Drives a GPIO pin to 1. - * - * \param pin The pin number. - */ -extern void gpio_set_gpio_pin(unsigned int pin); - -/*! \brief Drives a GPIO pin to 0. - * - * \param pin The pin number. - */ -extern void gpio_clr_gpio_pin(unsigned int pin); - -/*! \brief Toggles a GPIO pin. - * - * \param pin The pin number. - */ -extern void gpio_tgl_gpio_pin(unsigned int pin); - -/*! \brief Drives a GPIO pin to 1 using open drain. - * - * \param pin The pin number. - */ -extern void gpio_set_gpio_open_drain_pin(unsigned int pin); - -/*! \brief Drives a GPIO pin to 0 using open drain. - * - * \param pin The pin number. - */ -extern void gpio_clr_gpio_open_drain_pin(unsigned int pin); - -/*! \brief Toggles a GPIO pin using open drain. - * - * \param pin The pin number. - */ -extern void gpio_tgl_gpio_open_drain_pin(unsigned int pin); - -/*! \brief Enables the glitch filter of a pin. - * - * When the glitch filter is enabled, a glitch with duration of less than 1 - * clock cycle is automatically rejected, while a pulse with duration of 2 clock - * cycles or more is accepted. For pulse durations between 1 clock cycle and 2 - * clock cycles, the pulse may or may not be taken into account, depending on - * the precise timing of its occurrence. Thus for a pulse to be guaranteed - * visible it must exceed 2 clock cycles, whereas for a glitch to be reliably - * filtered out, its duration must not exceed 1 clock cycle. The filter - * introduces 2 clock cycles latency. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_glitch_filter(unsigned int pin); - -/*! \brief Disables the glitch filter of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_glitch_filter(unsigned int pin); - -/*! \brief Enables the interrupt of a pin with the specified settings. - * - * \param pin The pin number. - * \param mode The trigger mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE or - * \ref GPIO_FALLING_EDGE). - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode); - -/*! \brief Disables the interrupt of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_interrupt(unsigned int pin); - -/*! \brief Gets the interrupt flag of a pin. - * - * \param pin The pin number. - * - * \return The pin interrupt flag. - */ -extern int gpio_get_pin_interrupt_flag(unsigned int pin); - -/*! \brief Clears the interrupt flag of a pin. - * - * \param pin The pin number. - */ -extern void gpio_clear_pin_interrupt_flag(unsigned int pin); - -//! @} - - -#if (defined AVR32_GPIO_LOCAL_ADDRESS) -/*! \name Local Bus Interface - * - * High-speed interface with only one clock cycle per access. - * - * This interface operates with high clock frequency (fCPU), and its timing is - * deterministic since it does not need to access a shared bus which may be - * heavily loaded. - * - * \warning To use this interface, the clock frequency of the peripheral bus on - * which the GPIO peripheral is connected must be set to the CPU clock - * frequency (fPB = fCPU). - * - * \note This interface has to be initialized in order to be available. - */ -//! @{ - -/*! \brief Enables the local bus interface for GPIO. - * - * \note This function must have been called at least once before using other - * functions in this interface. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_init(void) -{ - Set_system_register(AVR32_CPUCR, - Get_system_register(AVR32_CPUCR) | AVR32_CPUCR_LOCEN_MASK); -} - -/*! \brief Enables the output driver of a pin. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_enable_pin_output_driver(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oders = 1 << (pin & 0x1F); -} - -/*! \brief Disables the output driver of a pin. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_disable_pin_output_driver(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oderc = 1 << (pin & 0x1F); -} - -/*! \brief Returns the value of a pin. - * - * \param pin The pin number. - * - * \return The pin value. - * - * \note \ref gpio_local_init must have been called beforehand. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int gpio_local_get_pin_value(unsigned int pin) -{ - return (AVR32_GPIO_LOCAL.port[pin >> 5].pvr >> (pin & 0x1F)) & 1; -} - -/*! \brief Drives a GPIO pin to 1. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin nor its output - * driver. \ref gpio_enable_gpio_pin and - * \ref gpio_local_enable_pin_output_driver can be called for this - * purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_set_gpio_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrs = 1 << (pin & 0x1F); -} - -/*! \brief Drives a GPIO pin to 0. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin nor its output - * driver. \ref gpio_enable_gpio_pin and - * \ref gpio_local_enable_pin_output_driver can be called for this - * purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_clr_gpio_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrc = 1 << (pin & 0x1F); -} - -/*! \brief Toggles a GPIO pin. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin nor its output - * driver. \ref gpio_enable_gpio_pin and - * \ref gpio_local_enable_pin_output_driver can be called for this - * purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_tgl_gpio_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrt = 1 << (pin & 0x1F); -} - -/*! \brief Initializes the configuration of a GPIO pin so that it can be used - * with GPIO open-drain functions. - * - * \note This function must have been called at least once before using - * \ref gpio_local_set_gpio_open_drain_pin, - * \ref gpio_local_clr_gpio_open_drain_pin or - * \ref gpio_local_tgl_gpio_open_drain_pin. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_init_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrc = 1 << (pin & 0x1F); -} - -/*! \brief Drives a GPIO pin to 1 using open drain. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must - * have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_set_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oderc = 1 << (pin & 0x1F); -} - -/*! \brief Drives a GPIO pin to 0 using open drain. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must - * have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_clr_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oders = 1 << (pin & 0x1F); -} - -/*! \brief Toggles a GPIO pin using open drain. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must - * have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_tgl_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].odert = 1 << (pin & 0x1F); -} - -//! @} -#endif // AVR32_GPIO_LOCAL_ADDRESS - -#if UC3L -//! @{ -/*! \name Peripheral Event System support - * - * The GPIO can be programmed to output peripheral events whenever an interrupt - * condition is detected, such as pin value change, or only when a rising or - * falling edge is detected. - * - */ - -/*! \brief Enables the peripheral event generation of a pin. - * - * \param pin The pin number. - * - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_enable_pin_periph_event(unsigned int pin) -{ - AVR32_GPIO.port[pin >> 5].oderc = 1 << (pin & 0x1F); // The GPIO output driver is disabled for that pin. - AVR32_GPIO.port[pin >> 5].evers = 1 << (pin & 0x1F); -} - -/*! \brief Disables the peripheral event generation of a pin. - * - * \param pin The pin number. - * - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_disable_pin_periph_event(unsigned int pin) -{ - AVR32_GPIO.port[pin >> 5].everc = 1 << (pin & 0x1F); -} - -/*! \brief Configure the peripheral event trigger mode of a pin - * - * \param pin The pin number. - * \param mode The trigger mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE or - * \ref GPIO_FALLING_EDGE). - * \param use_igf use the Input Glitch Filter (TRUE) or not (FALSE). - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_configure_pin_periph_event_mode(unsigned int pin, unsigned int mode, unsigned int use_igf); - -//! @} -#endif - - -#endif // _GPIO_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x deleted file mode 100644 index ec4109d4621..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x +++ /dev/null @@ -1,239 +0,0 @@ -/* This file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Exception and interrupt vectors. - * - * This file maps all events supported by an AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#if !__AVR32_UC__ && !__AVR32_AP__ - #error Implementation of the AVR32 architecture not supported by the INTC driver. -#endif - - -#include - - -//! @{ -//! \verbatim - - - .section .exception, "ax", @progbits - - -// Start of Exception Vector Table. - - // EVBA must be aligned with a power of two strictly greater than the EVBA- - // relative offset of the last vector. - .balign 0x200 - - // Export symbol. - .global _evba - .type _evba, @function -_evba: - - .org 0x000 - // Unrecoverable Exception. -_handle_Unrecoverable_Exception: - rjmp $ - - .org 0x004 - // TLB Multiple Hit. -_handle_TLB_Multiple_Hit: - rjmp $ - - .org 0x008 - // Bus Error Data Fetch. -_handle_Bus_Error_Data_Fetch: - rjmp $ - - .org 0x00C - // Bus Error Instruction Fetch. -_handle_Bus_Error_Instruction_Fetch: - rjmp $ - - .org 0x010 - // NMI. -_handle_NMI: - rjmp $ - - .org 0x014 - // Instruction Address. -_handle_Instruction_Address: - rjmp $ - - .org 0x018 - // ITLB Protection. -_handle_ITLB_Protection: - rjmp $ - - .org 0x01C - // Breakpoint. -_handle_Breakpoint: - rjmp $ - - .org 0x020 - // Illegal Opcode. -_handle_Illegal_Opcode: - rjmp $ - - .org 0x024 - // Unimplemented Instruction. -_handle_Unimplemented_Instruction: - rjmp $ - - .org 0x028 - // Privilege Violation. -_handle_Privilege_Violation: - rjmp $ - - .org 0x02C - // Floating-Point: UNUSED IN AVR32UC and AVR32AP. -_handle_Floating_Point: - rjmp $ - - .org 0x030 - // Coprocessor Absent: UNUSED IN AVR32UC. -_handle_Coprocessor_Absent: - rjmp $ - - .org 0x034 - // Data Address (Read). -_handle_Data_Address_Read: - rjmp $ - - .org 0x038 - // Data Address (Write). -_handle_Data_Address_Write: - rjmp $ - - .org 0x03C - // DTLB Protection (Read). -_handle_DTLB_Protection_Read: - rjmp $ - - .org 0x040 - // DTLB Protection (Write). -_handle_DTLB_Protection_Write: - rjmp $ - - .org 0x044 - // DTLB Modified: UNUSED IN AVR32UC. -_handle_DTLB_Modified: - rjmp $ - - .org 0x050 - // ITLB Miss. -_handle_ITLB_Miss: - rjmp $ - - .org 0x060 - // DTLB Miss (Read). -_handle_DTLB_Miss_Read: - rjmp $ - - .org 0x070 - // DTLB Miss (Write). -_handle_DTLB_Miss_Write: - rjmp $ - - .org 0x100 - // Supervisor Call. -_handle_Supervisor_Call: - rjmp $ - - -// Interrupt support. -// The interrupt controller must provide the offset address relative to EVBA. -// Important note: -// All interrupts call a C function named _get_interrupt_handler. -// This function will read group and interrupt line number to then return in -// R12 a pointer to a user-provided interrupt handler. - - .balign 4 - - .irp priority, 0, 1, 2, 3 -_int\priority: -#if __AVR32_UC__ - // R8-R12, LR, PC and SR are automatically pushed onto the system stack by the - // CPU upon interrupt entry. No other register is saved by hardware. -#elif __AVR32_AP__ - // PC and SR are automatically saved in respectively RAR_INTx and RSR_INTx by - // the CPU upon interrupt entry. No other register is saved by hardware. - pushm r8-r12, lr -#endif - mov r12, \priority // Pass the int_level parameter to the _get_interrupt_handler function. - call _get_interrupt_handler - cp.w r12, 0 // Get the pointer to the interrupt handler returned by the function. -#if __AVR32_UC__ - movne pc, r12 // If this was not a spurious interrupt (R12 != NULL), jump to the handler. -#elif __AVR32_AP__ - breq spint\priority // If this was a spurious interrupt (R12 == NULL), branch. - st.w --sp, r12 // Push the pointer to the interrupt handler onto the system stack since no register may be altered. - popm r8-r12, lr, pc // Restore registers and jump to the handler. -spint\priority: - popm r8-r12, lr -#endif - rete // If this was a spurious interrupt (R12 == NULL), return from event handler. - .endr - - -// Constant data area. - - .balign 4 - - // Values to store in the interrupt priority registers for the various interrupt priority levels. - // The interrupt priority registers contain the interrupt priority level and - // the EVBA-relative interrupt vector offset. - .global ipr_val - .type ipr_val, @object -ipr_val: - .word (AVR32_INTC_INT0 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int0 - _evba),\ - (AVR32_INTC_INT1 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int1 - _evba),\ - (AVR32_INTC_INT2 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int2 - _evba),\ - (AVR32_INTC_INT3 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int3 - _evba) - - -//! \endverbatim -//! @} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c deleted file mode 100644 index 84d498d1a59..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c +++ /dev/null @@ -1,214 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief INTC driver for AVR32 UC3. - * - * AVR32 Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include -#include "compiler.h" -#include "preprocessor.h" -#include "intc.h" - -// define _evba from exception.S -extern void _evba; - -//! Values to store in the interrupt priority registers for the various interrupt priority levels. -extern const unsigned int ipr_val[AVR32_INTC_NUM_INT_LEVELS]; - -//! Creates a table of interrupt line handlers per interrupt group in order to optimize RAM space. -//! Each line handler table contains a set of pointers to interrupt handlers. -#if (defined __GNUC__) -#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \ -static volatile __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)]; -#elif (defined __ICCAVR32__) -#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \ -static volatile __no_init __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)]; -#endif -MREPEAT(AVR32_INTC_NUM_INT_GRPS, DECL_INT_LINE_HANDLER_TABLE, ~); -#undef DECL_INT_LINE_HANDLER_TABLE - -//! Table containing for each interrupt group the number of interrupt request -//! lines and a pointer to the table of interrupt line handlers. -static const struct -{ - unsigned int num_irqs; - volatile __int_handler *_int_line_handler_table; -} _int_handler_table[AVR32_INTC_NUM_INT_GRPS] = -{ -#define INSERT_INT_LINE_HANDLER_TABLE(GRP, unused) \ - {AVR32_INTC_NUM_IRQS_PER_GRP##GRP, _int_line_handler_table_##GRP}, - MREPEAT(AVR32_INTC_NUM_INT_GRPS, INSERT_INT_LINE_HANDLER_TABLE, ~) -#undef INSERT_INT_LINE_HANDLER_TABLE -}; - - -/*! \brief Default interrupt handler. - * - * \note Taken and adapted from Newlib. - */ -#if (defined __GNUC__) -__attribute__((__interrupt__)) -#elif (defined __ICCAVR32__) -__interrupt -#endif -static void _unhandled_interrupt(void) -{ - // Catch unregistered interrupts. - while (TRUE); -} - - -/*! \brief Gets the interrupt handler of the current event at the \a int_level - * interrupt priority level (called from exception.S). - * - * \param int_level Interrupt priority level to handle. - * - * \return Interrupt handler to execute. - * - * \note Taken and adapted from Newlib. - */ -__int_handler _get_interrupt_handler(unsigned int int_level) -{ - // ICR3 is mapped first, ICR0 last. - // Code in exception.S puts int_level in R12 which is used by AVR32-GCC to - // pass a single argument to a function. - unsigned int int_grp = AVR32_INTC.icr[AVR32_INTC_INT3 - int_level]; - unsigned int int_req = AVR32_INTC.irr[int_grp]; - - // As an interrupt may disappear while it is being fetched by the CPU - // (spurious interrupt caused by a delayed response from an MCU peripheral to - // an interrupt flag clear or interrupt disable instruction), check if there - // are remaining interrupt lines to process. - // If a spurious interrupt occurs, the status register (SR) contains an - // execution mode and interrupt level masks corresponding to a level 0 - // interrupt, whatever the interrupt priority level causing the spurious - // event. This behavior has been chosen because a spurious interrupt has not - // to be a priority one and because it may not cause any trouble to other - // interrupts. - // However, these spurious interrupts place the hardware in an unstable state - // and could give problems in other/future versions of the CPU, so the - // software has to be written so that they never occur. The only safe way of - // achieving this is to always clear or disable peripheral interrupts with the - // following sequence: - // 1: Mask the interrupt in the CPU by setting GM (or IxM) in SR. - // 2: Perform the bus access to the peripheral register that clears or - // disables the interrupt. - // 3: Wait until the interrupt has actually been cleared or disabled by the - // peripheral. This is usually performed by reading from a register in the - // same peripheral (it DOES NOT have to be the same register that was - // accessed in step 2, but it MUST be in the same peripheral), what takes - // bus system latencies into account, but peripheral internal latencies - // (generally 0 cycle) also have to be considered. - // 4: Unmask the interrupt in the CPU by clearing GM (or IxM) in SR. - // Note that steps 1 and 4 are useless inside interrupt handlers as the - // corresponding interrupt level is automatically masked by IxM (unless IxM is - // explicitly cleared by the software). - // - // Get the right IRQ handler. - // - // If several interrupt lines are active in the group, the interrupt line with - // the highest number is selected. This is to be coherent with the - // prioritization of interrupt groups performed by the hardware interrupt - // controller. - // - // If no handler has been registered for the pending interrupt, - // _unhandled_interrupt will be selected thanks to the initialization of - // _int_line_handler_table_x by INTC_init_interrupts. - // - // exception.S will provide the interrupt handler with a clean interrupt stack - // frame, with nothing more pushed onto the stack. The interrupt handler must - // manage the `rete' instruction, what can be done thanks to pure assembly, - // inline assembly or the `__attribute__((__interrupt__))' C function - // attribute. - return (int_req) ? _int_handler_table[int_grp]._int_line_handler_table[32 - clz(int_req) - 1] : NULL; -} - -//! Init EVBA address. This sequence might also be done in the UTILS/STARTUP/GCC/crt0.S -static __inline__ void INTC_init_evba(void) -{ - Set_system_register(AVR32_EVBA, (int)&_evba ); -} - -void INTC_init_interrupts(void) -{ - unsigned int int_grp, int_req; - - INTC_init_evba(); - - // For all interrupt groups, - for (int_grp = 0; int_grp < AVR32_INTC_NUM_INT_GRPS; int_grp++) - { - // For all interrupt request lines of each group, - for (int_req = 0; int_req < _int_handler_table[int_grp].num_irqs; int_req++) - { - // Assign _unhandled_interrupt as default interrupt handler. - _int_handler_table[int_grp]._int_line_handler_table[int_req] = &_unhandled_interrupt; - } - - // Set the interrupt group priority register to its default value. - // By default, all interrupt groups are linked to the interrupt priority - // level 0 and to the interrupt vector _int0. - AVR32_INTC.ipr[int_grp] = ipr_val[AVR32_INTC_INT0]; - } -} - - -void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_level) -{ - // Determine the group of the IRQ. - unsigned int int_grp = irq / AVR32_INTC_MAX_NUM_IRQS_PER_GRP; - - // Store in _int_line_handler_table_x the pointer to the interrupt handler, so - // that _get_interrupt_handler can retrieve it when the interrupt is vectored. - _int_handler_table[int_grp]._int_line_handler_table[irq % AVR32_INTC_MAX_NUM_IRQS_PER_GRP] = handler; - - // Program the corresponding IPRX register to set the interrupt priority level - // and the interrupt vector offset that will be fetched by the core interrupt - // system. - // NOTE: The _intx functions are intermediate assembly functions between the - // core interrupt system and the user interrupt handler. - AVR32_INTC.ipr[int_grp] = ipr_val[int_level & (AVR32_INTC_IPR_INTLEVEL_MASK >> AVR32_INTC_IPR_INTLEVEL_OFFSET)]; -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h deleted file mode 100644 index 31a4fc16bcb..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h +++ /dev/null @@ -1,100 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief INTC driver for AVR32 UC3. - * - * AVR32 Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _INTC_H_ -#define _INTC_H_ - -#include "compiler.h" - - -//! Maximal number of interrupt request lines per group. -#define AVR32_INTC_MAX_NUM_IRQS_PER_GRP 32 - -//! Number of interrupt priority levels. -#define AVR32_INTC_NUM_INT_LEVELS (1 << AVR32_INTC_IPR_INTLEVEL_SIZE) - - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -//! Pointer to interrupt handler. -#if (defined __GNUC__) -typedef void (*__int_handler)(void); -#elif (defined __ICCAVR32__) -typedef void (__interrupt *__int_handler)(void); -#endif - - -/*! \brief Initializes the hardware interrupt controller driver. - * - * \note Taken and adapted from Newlib. - */ -extern void INTC_init_interrupts(void); - -/*! \brief Registers an interrupt handler. - * - * \param handler Interrupt handler to register. - * \param irq IRQ of the interrupt handler to register. - * \param int_level Interrupt priority level to assign to the group of this IRQ. - * - * \warning The interrupt handler must manage the `rete' instruction, what can - * be done thanks to pure assembly, inline assembly or the - * `__attribute__((__interrupt__))' C function attribute. - * - * \warning If several interrupt handlers of a same group are registered with - * different priority levels, only the latest priority level set will - * be effective. - * - * \note Taken and adapted from Newlib. - */ -extern void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_level); - -#endif // __AVR32_ABI_COMPILER__ - - -#endif // _INTC_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.c deleted file mode 100644 index 6c00f9e7966..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.c +++ /dev/null @@ -1,296 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief PDCA driver for AVR32 UC3. - * - * This file defines a useful set of functions for the PDCA interface on AVR32 - * devices. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a PDCA module. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "compiler.h" -#include "pdca.h" - - -volatile avr32_pdca_channel_t *pdca_get_handler(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = &AVR32_PDCA.channel[pdca_ch_number]; - - if (pdca_ch_number >= AVR32_PDCA_CHANNEL_LENGTH) - return (volatile avr32_pdca_channel_t *)PDCA_INVALID_ARGUMENT; - - return pdca_channel; -} - - -int pdca_init_channel(unsigned int pdca_ch_number, const pdca_channel_options_t *opt) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_disable_interrupt_transfer_complete(pdca_ch_number); // disable channel interrupt - pdca_disable_interrupt_reload_counter_zero(pdca_ch_number); // disable channel interrupt - - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pdca_channel->mar = (unsigned long)opt->addr; - pdca_channel->tcr = opt->size; - pdca_channel->psr = opt->pid; - pdca_channel->marr = (unsigned long)opt->r_addr; - pdca_channel->tcrr = opt->r_size; - pdca_channel->mr = -#if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED ) -opt->etrig << AVR32_PDCA_ETRIG_OFFSET | -#endif // #ifdef AVR32_PDCA_120_H_INCLUDED - opt->transfer_size << AVR32_PDCA_SIZE_OFFSET; - pdca_channel->cr = AVR32_PDCA_ECLR_MASK; - pdca_channel->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); - - return PDCA_SUCCESS; -} - - -unsigned int pdca_get_channel_status(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - return (pdca_channel->sr & AVR32_PDCA_TEN_MASK) != 0; -} - - -void pdca_disable(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - // Disable transfer - pdca_channel->cr = AVR32_PDCA_TDIS_MASK; - -} - - -void pdca_enable(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - // Enable transfer - pdca_channel->cr = AVR32_PDCA_TEN_MASK; -} - - -unsigned int pdca_get_load_size(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - return pdca_channel->tcr; -} - - -void pdca_load_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pdca_channel->mar = (unsigned long)addr; - pdca_channel->tcr = size; - pdca_channel->cr = AVR32_PDCA_ECLR_MASK; - pdca_channel->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -unsigned int pdca_get_reload_size(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - return pdca_channel->tcrr; -} - - -void pdca_reload_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - // set up next memory address - pdca_channel->marr = (unsigned long)addr; - // set up next memory size - pdca_channel->tcrr = size; - pdca_channel->cr = AVR32_PDCA_ECLR_MASK; - pdca_channel->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void pdca_set_peripheral_select(unsigned int pdca_ch_number, unsigned int pid) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->psr = pid; -} - - -void pdca_set_transfer_size(unsigned int pdca_ch_number, unsigned int transfer_size) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->mr = (pdca_channel->mr & ~AVR32_PDCA_SIZE_MASK) | - transfer_size << AVR32_PDCA_SIZE_OFFSET; -} - - -#if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED ) - - -void pdca_disable_event_trigger(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->mr &= ~AVR32_PDCA_ETRIG_MASK; -} - - -void pdca_enable_event_trigger(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->mr |= AVR32_PDCA_ETRIG_MASK; -} - - -#endif // #ifdef AVR32_PDCA_120_H_INCLUDED - - -void pdca_disable_interrupt_transfer_error(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pdca_channel->idr = AVR32_PDCA_TERR_MASK; - pdca_channel->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void pdca_enable_interrupt_transfer_error(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->ier = AVR32_PDCA_TERR_MASK; -} - - -void pdca_disable_interrupt_transfer_complete(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pdca_channel->idr = AVR32_PDCA_TRC_MASK; - pdca_channel->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void pdca_enable_interrupt_transfer_complete(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->ier = AVR32_PDCA_TRC_MASK; -} - - -void pdca_disable_interrupt_reload_counter_zero(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pdca_channel->idr = AVR32_PDCA_RCZ_MASK; - pdca_channel->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void pdca_enable_interrupt_reload_counter_zero(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - pdca_channel->ier = AVR32_PDCA_RCZ_MASK; -} - - -unsigned long pdca_get_transfer_status(unsigned int pdca_ch_number) -{ - // get the correct channel pointer - volatile avr32_pdca_channel_t *pdca_channel = pdca_get_handler(pdca_ch_number); - - return pdca_channel->isr; -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.h deleted file mode 100644 index 5668fe9975a..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA/pdca.h +++ /dev/null @@ -1,251 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief PDCA driver for AVR32 UC3. - * - * This file defines a useful set of functions for the PDCA interface on AVR32 - * devices. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a PDCA module. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _PDCA_H_ -#define _PDCA_H_ - -#include - - -//! Size of PDCA transfer: byte. -#define PDCA_TRANSFER_SIZE_BYTE AVR32_PDCA_BYTE - -//! Size of PDCA transfer: half-word. -#define PDCA_TRANSFER_SIZE_HALF_WORD AVR32_PDCA_HALF_WORD - -//! Size of PDCA transfer: word. -#define PDCA_TRANSFER_SIZE_WORD AVR32_PDCA_WORD - -/*! \name PDCA Driver Status Codes - */ -//! @{ -#define PDCA_SUCCESS 0 -#define PDCA_INVALID_ARGUMENT -1 -//! @} - -/*! \name PDCA Transfer Status Codes - */ -//! @{ -#define PDCA_TRANSFER_ERROR AVR32_PDCA_TERR_MASK -#define PDCA_TRANSFER_COMPLETE AVR32_PDCA_TRC_MASK -#define PDCA_TRANSFER_COUNTER_RELOAD_IS_ZERO AVR32_PDCA_RCZ_MASK -//! @} - - -//! PDCA channel options. -typedef struct -{ - //! Memory address. - volatile void *addr ; - //! Transfer counter. - unsigned int size ; - //! Next memory address. - volatile void *r_addr ; - //! Next transfer counter. - unsigned int r_size ; - //! Select peripheral ID. - unsigned int pid ; - //! Select the size of the transfer (byte, half-word or word). - unsigned int transfer_size ; -#if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED ) -// Note: the options in this preprocessor section are only available from the PDCA IP version 1.2.0 on. - //! Enable (\c 1) or disable (\c 0) the transfer upon event trigger. - unsigned char etrig ; -#endif // #ifdef AVR32_PDCA_120_H_INCLUDED -} pdca_channel_options_t; - - -/*! \brief Get PDCA channel handler - * - * \param pdca_ch_number PDCA channel - * - * \return channel handled or PDCA_INVALID_ARGUMENT - */ -extern volatile avr32_pdca_channel_t *pdca_get_handler(unsigned int pdca_ch_number); - -/*! \brief Set the channel configuration - * - * \param pdca_ch_number PDCA channel - * \param opt channel option - */ -extern int pdca_init_channel(unsigned int pdca_ch_number, const pdca_channel_options_t *opt); - -/*! \brief Get the PDCA channel transfer enable status - * - * \param pdca_ch_number PDCA channel - * - * \return \c 1 if channel transfer is enabled, else \c 0 - */ -extern unsigned int pdca_get_channel_status(unsigned int pdca_ch_number); - -/*! \brief Disable the PDCA for the given channel - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_disable(unsigned int pdca_ch_number); - -/*! \brief Enable the PDCA for the given channel - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_enable(unsigned int pdca_ch_number); - -/*! \brief Get PDCA channel load size (or remaining size if transfer started) - * - * \param pdca_ch_number PDCA channel - * - * \return size current size to transfer - */ -extern unsigned int pdca_get_load_size(unsigned int pdca_ch_number); - -/*! \brief Set PDCA channel load values - * - * \param pdca_ch_number PDCA channel - * \param addr address where data to load are stored - * \param size size of the data block to load - */ -extern void pdca_load_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size); - -/*! \brief Get PDCA channel reload size - * - * \param pdca_ch_number PDCA channel - * - * \return size current reload size - */ -extern unsigned int pdca_get_reload_size(unsigned int pdca_ch_number); - -/*! \brief Set PDCA channel reload values - * - * \param pdca_ch_number PDCA channel - * \param addr address where data to load are stored - * \param size size of the data block to load - */ -extern void pdca_reload_channel(unsigned int pdca_ch_number, volatile void *addr, unsigned int size); - -/*! \brief Set the peripheral function to use with the PDCA channel - * - * \param pdca_ch_number PDCA channel - * \param pid the peripheral ID - */ -extern void pdca_set_peripheral_select(unsigned int pdca_ch_number, unsigned int pid); - -/*! \brief Set the size of the transfer - * - * \param pdca_ch_number PDCA channel - * \param transfer_size size of the transfer (byte, half-word or word) - */ -extern void pdca_set_transfer_size(unsigned int pdca_ch_number, unsigned int transfer_size); - -#if (defined AVR32_PDCA_120_H_INCLUDED ) || (defined AVR32_PDCA_121_H_INCLUDED ) || (defined AVR32_PDCA_122_H_INCLUDED ) -// Note: the functions in this preprocessor section are only available from the PDCA IP version 1.2.0 on. - -/*! \brief Disable the event-triggered transfer feature - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_disable_event_trigger(unsigned int pdca_ch_number); - -/*! \brief Enable the event-triggered transfer feature - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_enable_event_trigger(unsigned int pdca_ch_number); - -#endif // #ifdef AVR32_PDCA_120_H_INCLUDED - -/*! \brief Disable PDCA transfer error interrupt - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_disable_interrupt_transfer_error(unsigned int pdca_ch_number); - -/*! \brief Enable PDCA transfer error interrupt - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_enable_interrupt_transfer_error(unsigned int pdca_ch_number); - -/*! \brief Disable PDCA transfer interrupt when completed (ie TCR and TCRR are both zero) - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_disable_interrupt_transfer_complete(unsigned int pdca_ch_number); - -/*! \brief Enable PDCA transfer interrupt when completed (ie TCR and TCRR are both zero) - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_enable_interrupt_transfer_complete(unsigned int pdca_ch_number); - -/*! \brief Disable PDCA transfer interrupt when TCRR reaches zero - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_disable_interrupt_reload_counter_zero(unsigned int pdca_ch_number); - -/*! \brief Enable PDCA transfer interrupt when TCRR reaches zero - * - * \param pdca_ch_number PDCA channel - */ -extern void pdca_enable_interrupt_reload_counter_zero(unsigned int pdca_ch_number); - -/*! \brief Get PDCA channel transfer status - * - * \param pdca_ch_number PDCA channel - * - * \return PDCA transfer status with the following bit-masks:\n - * - \c PDCA_TRANSFER_ERROR;\n - * - \c PDCA_TRANSFER_COMPLETE;\n - * - \c PDCA_TRANSFER_COUNTER_RELOAD_IS_ZERO. - */ -extern unsigned long pdca_get_transfer_status(unsigned int pdca_ch_number); - - -#endif // _PDCA_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c deleted file mode 100644 index 76d9268b4bc..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c +++ /dev/null @@ -1,546 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager driver. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "compiler.h" -#include "pm.h" - - -/*! \name PM Writable Bit-Field Registers - */ -//! @{ - -typedef union -{ - unsigned long mcctrl; - avr32_pm_mcctrl_t MCCTRL; -} u_avr32_pm_mcctrl_t; - -typedef union -{ - unsigned long cksel; - avr32_pm_cksel_t CKSEL; -} u_avr32_pm_cksel_t; - -typedef union -{ - unsigned long pll; - avr32_pm_pll_t PLL; -} u_avr32_pm_pll_t; - -typedef union -{ - unsigned long oscctrl0; - avr32_pm_oscctrl0_t OSCCTRL0; -} u_avr32_pm_oscctrl0_t; - -typedef union -{ - unsigned long oscctrl1; - avr32_pm_oscctrl1_t OSCCTRL1; -} u_avr32_pm_oscctrl1_t; - -typedef union -{ - unsigned long oscctrl32; - avr32_pm_oscctrl32_t OSCCTRL32; -} u_avr32_pm_oscctrl32_t; - -typedef union -{ - unsigned long ier; - avr32_pm_ier_t IER; -} u_avr32_pm_ier_t; - -typedef union -{ - unsigned long idr; - avr32_pm_idr_t IDR; -} u_avr32_pm_idr_t; - -typedef union -{ - unsigned long icr; - avr32_pm_icr_t ICR; -} u_avr32_pm_icr_t; - -typedef union -{ - unsigned long gcctrl; - avr32_pm_gcctrl_t GCCTRL; -} u_avr32_pm_gcctrl_t; - -typedef union -{ - unsigned long rccr; - avr32_pm_rccr_t RCCR; -} u_avr32_pm_rccr_t; - -typedef union -{ - unsigned long bgcr; - avr32_pm_bgcr_t BGCR; -} u_avr32_pm_bgcr_t; - -typedef union -{ - unsigned long vregcr; - avr32_pm_vregcr_t VREGCR; -} u_avr32_pm_vregcr_t; - -typedef union -{ - unsigned long bod; - avr32_pm_bod_t BOD; -} u_avr32_pm_bod_t; - -//! @} - - -/*! \brief Sets the mode of the oscillator 0. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode Oscillator 0 mode (i.e. AVR32_PM_OSCCTRL0_MODE_x). - */ -static void pm_set_osc0_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0}; - // Modify - u_avr32_pm_oscctrl0.OSCCTRL0.mode = mode; - // Write - pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0; -} - - -void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc0_mode(pm, AVR32_PM_OSCCTRL0_MODE_EXT_CLOCK); -} - - -void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0) -{ - pm_set_osc0_mode(pm, (fosc0 < 900000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G0 : - (fosc0 < 3000000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G1 : - (fosc0 < 8000000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G2 : - AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G3); -} - - -void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk0_no_wait(pm, startup); - pm_wait_for_clk0_ready(pm); -} - - -void pm_disable_clk0(volatile avr32_pm_t *pm) -{ - pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC0EN_MASK; -} - - -void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0}; - // Modify - u_avr32_pm_oscctrl0.OSCCTRL0.startup = startup; - // Write back - pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0; - - pm->mcctrl |= AVR32_PM_MCCTRL_OSC0EN_MASK; -} - - -void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC0RDY_MASK)); -} - - -/*! \brief Sets the mode of the oscillator 1. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode Oscillator 1 mode (i.e. AVR32_PM_OSCCTRL1_MODE_x). - */ -static void pm_set_osc1_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1}; - // Modify - u_avr32_pm_oscctrl1.OSCCTRL1.mode = mode; - // Write - pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1; -} - - -void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc1_mode(pm, AVR32_PM_OSCCTRL1_MODE_EXT_CLOCK); -} - - -void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1) -{ - pm_set_osc1_mode(pm, (fosc1 < 900000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G0 : - (fosc1 < 3000000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G1 : - (fosc1 < 8000000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G2 : - AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G3); -} - - -void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk1_no_wait(pm, startup); - pm_wait_for_clk1_ready(pm); -} - - -void pm_disable_clk1(volatile avr32_pm_t *pm) -{ - pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC1EN_MASK; -} - - -void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1}; - // Modify - u_avr32_pm_oscctrl1.OSCCTRL1.startup = startup; - // Write back - pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1; - - pm->mcctrl |= AVR32_PM_MCCTRL_OSC1EN_MASK; -} - - -void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC1RDY_MASK)); -} - - -/*! \brief Sets the mode of the 32-kHz oscillator. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode 32-kHz oscillator mode (i.e. AVR32_PM_OSCCTRL32_MODE_x). - */ -static void pm_set_osc32_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32}; - // Modify - u_avr32_pm_oscctrl32.OSCCTRL32.mode = mode; - // Write - pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32; -} - - -void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_EXT_CLOCK); -} - - -void pm_enable_osc32_crystal(volatile avr32_pm_t *pm) -{ - pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_CRYSTAL); -} - - -void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk32_no_wait(pm, startup); - pm_wait_for_clk32_ready(pm); -} - - -void pm_disable_clk32(volatile avr32_pm_t *pm) -{ - pm->oscctrl32 &= ~AVR32_PM_OSCCTRL32_OSC32EN_MASK; -} - - -void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32}; - // Modify - u_avr32_pm_oscctrl32.OSCCTRL32.osc32en = 1; - u_avr32_pm_oscctrl32.OSCCTRL32.startup = startup; - // Write back - pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32; -} - - -void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC32RDY_MASK)); -} - - -void pm_cksel(volatile avr32_pm_t *pm, - unsigned int pbadiv, - unsigned int pbasel, - unsigned int pbbdiv, - unsigned int pbbsel, - unsigned int hsbdiv, - unsigned int hsbsel) -{ - u_avr32_pm_cksel_t u_avr32_pm_cksel = {0}; - - u_avr32_pm_cksel.CKSEL.cpusel = hsbsel; - u_avr32_pm_cksel.CKSEL.cpudiv = hsbdiv; - u_avr32_pm_cksel.CKSEL.hsbsel = hsbsel; - u_avr32_pm_cksel.CKSEL.hsbdiv = hsbdiv; - u_avr32_pm_cksel.CKSEL.pbasel = pbasel; - u_avr32_pm_cksel.CKSEL.pbadiv = pbadiv; - u_avr32_pm_cksel.CKSEL.pbbsel = pbbsel; - u_avr32_pm_cksel.CKSEL.pbbdiv = pbbdiv; - - pm->cksel = u_avr32_pm_cksel.cksel; - - // Wait for ckrdy bit and then clear it - while (!(pm->poscsr & AVR32_PM_POSCSR_CKRDY_MASK)); -} - - -void pm_gc_setup(volatile avr32_pm_t *pm, - unsigned int gc, - unsigned int osc_or_pll, // Use Osc (=0) or PLL (=1) - unsigned int pll_osc, // Sel Osc0/PLL0 or Osc1/PLL1 - unsigned int diven, - unsigned int div) -{ - u_avr32_pm_gcctrl_t u_avr32_pm_gcctrl = {0}; - - u_avr32_pm_gcctrl.GCCTRL.oscsel = pll_osc; - u_avr32_pm_gcctrl.GCCTRL.pllsel = osc_or_pll; - u_avr32_pm_gcctrl.GCCTRL.diven = diven; - u_avr32_pm_gcctrl.GCCTRL.div = div; - - pm->gcctrl[gc] = u_avr32_pm_gcctrl.gcctrl; -} - - -void pm_gc_enable(volatile avr32_pm_t *pm, - unsigned int gc) -{ - pm->gcctrl[gc] |= AVR32_PM_GCCTRL_CEN_MASK; -} - - -void pm_gc_disable(volatile avr32_pm_t *pm, - unsigned int gc) -{ - pm->gcctrl[gc] &= ~AVR32_PM_GCCTRL_CEN_MASK; -} - - -void pm_pll_setup(volatile avr32_pm_t *pm, - unsigned int pll, - unsigned int mul, - unsigned int div, - unsigned int osc, - unsigned int lockcount) -{ - u_avr32_pm_pll_t u_avr32_pm_pll = {0}; - - u_avr32_pm_pll.PLL.pllosc = osc; - u_avr32_pm_pll.PLL.plldiv = div; - u_avr32_pm_pll.PLL.pllmul = mul; - u_avr32_pm_pll.PLL.pllcount = lockcount; - - pm->pll[pll] = u_avr32_pm_pll.pll; -} - - -void pm_pll_set_option(volatile avr32_pm_t *pm, - unsigned int pll, - unsigned int pll_freq, - unsigned int pll_div2, - unsigned int pll_wbwdisable) -{ - u_avr32_pm_pll_t u_avr32_pm_pll = {pm->pll[pll]}; - u_avr32_pm_pll.PLL.pllopt = pll_freq | (pll_div2 << 1) | (pll_wbwdisable << 2); - pm->pll[pll] = u_avr32_pm_pll.pll; -} - - -unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, - unsigned int pll) -{ - return (pm->pll[pll] & AVR32_PM_PLLOPT_MASK) >> AVR32_PM_PLLOPT_OFFSET; -} - - -void pm_pll_enable(volatile avr32_pm_t *pm, - unsigned int pll) -{ - pm->pll[pll] |= AVR32_PM_PLLEN_MASK; -} - - -void pm_pll_disable(volatile avr32_pm_t *pm, - unsigned int pll) -{ - pm->pll[pll] &= ~AVR32_PM_PLLEN_MASK; -} - - -void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK0_MASK)); -} - - -void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK1_MASK)); -} - - -void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock) -{ - // Read - u_avr32_pm_mcctrl_t u_avr32_pm_mcctrl = {pm->mcctrl}; - // Modify - u_avr32_pm_mcctrl.MCCTRL.mcsel = clock; - // Write back - pm->mcctrl = u_avr32_pm_mcctrl.mcctrl; -} - - -void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup) -{ - pm_enable_osc0_crystal(pm, fosc0); // Enable the Osc0 in crystal mode - pm_enable_clk0(pm, startup); // Crystal startup time - This parameter is critical and depends on the characteristics of the crystal - pm_switch_to_clock(pm, AVR32_PM_MCSEL_OSC0); // Then switch main clock to Osc0 -} - - -void pm_bod_enable_irq(volatile avr32_pm_t *pm) -{ - pm->ier = AVR32_PM_IER_BODDET_MASK; -} - - -void pm_bod_disable_irq(volatile avr32_pm_t *pm) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pm->idr = AVR32_PM_IDR_BODDET_MASK; - pm->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void pm_bod_clear_irq(volatile avr32_pm_t *pm) -{ - pm->icr = AVR32_PM_ICR_BODDET_MASK; -} - - -unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm) -{ - return ((pm->isr & AVR32_PM_ISR_BODDET_MASK) != 0); -} - - -unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm) -{ - return ((pm->imr & AVR32_PM_IMR_BODDET_MASK) != 0); -} - - -unsigned long pm_bod_get_level(volatile avr32_pm_t *pm) -{ - return (pm->bod & AVR32_PM_BOD_LEVEL_MASK) >> AVR32_PM_BOD_LEVEL_OFFSET; -} - - -unsigned long pm_read_gplp(volatile avr32_pm_t *pm, unsigned long gplp) -{ - return pm->gplp[gplp]; -} - - -void pm_write_gplp(volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value) -{ - pm->gplp[gplp] = value; -} - - -long pm_enable_module(volatile avr32_pm_t *pm, unsigned long module) -{ - unsigned long domain = module>>5; - unsigned long *regptr = (unsigned long*)(&(pm->cpumask) + domain); - - // Implementation-specific shortcut: the ckMASK registers are contiguous and - // memory-mapped in that order: CPUMASK, HSBMASK, PBAMASK, PBBMASK. - - *regptr |= (1<<(module%32)); - - return PASS; -} - -long pm_disable_module(volatile avr32_pm_t *pm, unsigned long module) -{ - unsigned long domain = module>>5; - unsigned long *regptr = (unsigned long*)(&(pm->cpumask) + domain); - - // Implementation-specific shortcut: the ckMASK registers are contiguous and - // memory-mapped in that order: CPUMASK, HSBMASK, PBAMASK, PBBMASK. - - *regptr &= ~(1<<(module%32)); - - return PASS; -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h deleted file mode 100644 index ca679f734ae..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h +++ /dev/null @@ -1,493 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager driver. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _PM_H_ -#define _PM_H_ - -#include -#include "compiler.h" -#include "preprocessor.h" - - -/*! \brief Sets the MCU in the specified sleep mode. - * - * \param mode Sleep mode: - * \arg \c AVR32_PM_SMODE_IDLE: Idle; - * \arg \c AVR32_PM_SMODE_FROZEN: Frozen; - * \arg \c AVR32_PM_SMODE_STANDBY: Standby; - * \arg \c AVR32_PM_SMODE_STOP: Stop; - * \arg \c AVR32_PM_SMODE_DEEP_STOP: DeepStop; - * \arg \c AVR32_PM_SMODE_STATIC: Static. - */ -#define SLEEP(mode) {__asm__ __volatile__ ("sleep "STRINGZ(mode));} - - -//! Input and output parameters when initializing PM clocks using pm_configure_clocks(). -typedef struct -{ - //! CPU frequency (input/output argument). - unsigned long cpu_f; - - //! PBA frequency (input/output argument). - unsigned long pba_f; - - //! Oscillator 0's external crystal(or external clock) frequency (board dependant) (input argument). - unsigned long osc0_f; - - //! Oscillator 0's external crystal(or external clock) startup time: AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC (input argument). - unsigned long osc0_startup; -} pm_freq_param_t; - -#define PM_FREQ_STATUS_FAIL (-1) -#define PM_FREQ_STATUS_OK (0) - - -/*! \brief Gets the MCU reset cause. - * - * \param pm Base address of the Power Manager instance (i.e. &AVR32_PM). - * - * \return The MCU reset cause which can be masked with the - * \c AVR32_PM_RCAUSE_x_MASK bit-masks to isolate specific causes. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned int pm_get_reset_cause(volatile avr32_pm_t *pm) -{ - return pm->rcause; -} - - -/*! - * \brief This function will enable the external clock mode of the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc0 Oscillator 0 crystal frequency (Hz) - */ -extern void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0); - - -/*! - * \brief This function will enable the oscillator 0 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk0(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 0 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 0 startup time, for which the function does not wait. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the Osc0 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the external clock mode of the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc1 Oscillator 1 crystal frequency (Hz) - */ -extern void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1); - - -/*! - * \brief This function will enable the oscillator 1 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 1 startup time. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk1(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 1 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 1 startup time, for which the function does not wait. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the Osc1 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the external clock mode of the 32-kHz oscillator. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the 32-kHz oscillator. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc32_crystal(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 32 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 32 kHz startup time. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 32. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk32(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 32 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 32 kHz startup time, for which the function does not wait. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the osc32 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will select all the power manager clocks. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pbadiv Peripheral Bus A clock divisor enable - * \param pbasel Peripheral Bus A select - * \param pbbdiv Peripheral Bus B clock divisor enable - * \param pbbsel Peripheral Bus B select - * \param hsbdiv High Speed Bus clock divisor enable (CPU clock = HSB clock) - * \param hsbsel High Speed Bus select (CPU clock = HSB clock ) - */ -extern void pm_cksel(volatile avr32_pm_t *pm, unsigned int pbadiv, unsigned int pbasel, unsigned int pbbdiv, unsigned int pbbsel, unsigned int hsbdiv, unsigned int hsbsel); - - -/*! - * \brief This function will setup a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - * \param osc_or_pll Use OSC (=0) or PLL (=1) - * \param pll_osc Select Osc0/PLL0 or Osc1/PLL1 - * \param diven Generic clock divisor enable - * \param div Generic clock divisor - */ -extern void pm_gc_setup(volatile avr32_pm_t *pm, unsigned int gc, unsigned int osc_or_pll, unsigned int pll_osc, unsigned int diven, unsigned int div); - - -/*! - * \brief This function will enable a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - */ -extern void pm_gc_enable(volatile avr32_pm_t *pm, unsigned int gc); - - -/*! - * \brief This function will disable a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - */ -extern void pm_gc_disable(volatile avr32_pm_t *pm, unsigned int gc); - - -/*! - * \brief This function will setup a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \param mul PLL MUL in the PLL formula - * \param div PLL DIV in the PLL formula - * \param osc OSC number (0 for osc0, 1 for osc1) - * \param lockcount PLL lockount - */ -extern void pm_pll_setup(volatile avr32_pm_t *pm, unsigned int pll, unsigned int mul, unsigned int div, unsigned int osc, unsigned int lockcount); - - -/*! - * \brief This function will set a PLL option. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \param pll_freq Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz. - * \param pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value) - * \param pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode. - */ -extern void pm_pll_set_option(volatile avr32_pm_t *pm, unsigned int pll, unsigned int pll_freq, unsigned int pll_div2, unsigned int pll_wbwdisable); - - -/*! - * \brief This function will get a PLL option. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \return Option - */ -extern unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will enable a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - */ -extern void pm_pll_enable(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will disable a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - */ -extern void pm_pll_disable(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will wait for PLL0 locked - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will wait for PLL1 locked - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will switch the power manager main clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param clock Clock to be switched on. AVR32_PM_MCSEL_SLOW for RCOsc, AVR32_PM_MCSEL_OSC0 for Osc0, AVR32_PM_MCSEL_PLL0 for PLL0. - */ -extern void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock); - - -/*! - * \brief Switch main clock to clock Osc0 (crystal mode) - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc0 Oscillator 0 crystal frequency (Hz) - * \param startup Crystal 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC. - */ -extern void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup); - - -/*! \brief Enables the Brown-Out Detector interrupt. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - */ -extern void pm_bod_enable_irq(volatile avr32_pm_t *pm); - - -/*! \brief Disables the Brown-Out Detector interrupt. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - */ -extern void pm_bod_disable_irq(volatile avr32_pm_t *pm); - - -/*! \brief Clears the Brown-Out Detector interrupt flag. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - */ -extern void pm_bod_clear_irq(volatile avr32_pm_t *pm); - - -/*! \brief Gets the Brown-Out Detector interrupt flag. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * - * \retval 0 No BOD interrupt. - * \retval 1 BOD interrupt pending. - */ -extern unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm); - - -/*! \brief Gets the Brown-Out Detector interrupt enable status. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * - * \retval 0 BOD interrupt disabled. - * \retval 1 BOD interrupt enabled. - */ -extern unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm); - - -/*! \brief Gets the triggering threshold of the Brown-Out Detector. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * - * \return Triggering threshold of the BOD. See the electrical characteristics - * in the part datasheet for actual voltage levels. - */ -extern unsigned long pm_bod_get_level(volatile avr32_pm_t *pm); - - -/*! - * \brief Read the content of the PM GPLP registers - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * - * \return The content of the chosen GPLP register. - */ -extern unsigned long pm_read_gplp(volatile avr32_pm_t *pm, unsigned long gplp); - - -/*! - * \brief Write into the PM GPLP registers - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * \param value Value to write - */ -extern void pm_write_gplp(volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value); - - -/*! \brief Enable the clock of a module. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param module The module to clock (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks") - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long pm_enable_module(volatile avr32_pm_t *pm, unsigned long module); - -/*! \brief Disable the clock of a module. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param module The module to shut down (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks") - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long pm_disable_module(volatile avr32_pm_t *pm, unsigned long module); - - - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks - * according to the user wishes. - * - * This function needs some parameters stored in a pm_freq_param_t structure: - * - cpu_f and pba_f are the wanted frequencies, - * - osc0_f is the oscillator 0 on-board frequency (e.g. FOSC0), - * - osc0_startup is the oscillator 0 startup time (e.g. OSC0_STARTUP). - * - * The function will then configure the clocks using the following rules: - * - It first try to find a valid PLL frequency (the highest possible value to avoid jitter) in order - * to satisfy the CPU frequency, - * - It optimizes the configuration depending the various divide stages, - * - Then, the PBA frequency is configured from the CPU freq. - * - Note that HSB and PBB are configured with the same frequency as CPU. - * - Note also that the number of wait states of the flash read accesses is automatically set-up depending - * the CPU frequency. As a consequence, the application needs the FLASHC driver to compile. - * - * The CPU, HSB and PBA frequencies programmed after configuration are stored back into cpu_f and pba_f. - * - * \param param pointer on the configuration structure. - * - * \retval PM_FREQ_STATUS_OK Mode successfully initialized. - * \retval PM_FREQ_STATUS_FAIL The configuration can not be done. - */ -extern int pm_configure_clocks(pm_freq_param_t *param); - - -/*! \brief Automatically configure the USB clock. - * - * USB clock is configured to 48MHz, using the PLL1 from the Oscillator0, assuming - * a 12 MHz crystal is connected to it. - */ -extern void pm_configure_usb_clock(void); - - -#endif // _PM_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c deleted file mode 100644 index 8beb83b207d..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c +++ /dev/null @@ -1,268 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager clocks configuration helper. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include -#include "compiler.h" -#include "pm.h" - -extern void flashc_set_wait_state(unsigned int wait_state); -#if (defined AVR32_FLASHC_210_H_INCLUDED) -extern void flashc_issue_command(unsigned int command, int page_number); -#endif - - -#define PM_MAX_MUL ((1 << AVR32_PM_PLL0_PLLMUL_SIZE) - 1) - - -int pm_configure_clocks(pm_freq_param_t *param) -{ - // Supported frequencies: - // Fosc0 mul div PLL div2_en cpu_f pba_f Comment - // 12 15 1 192 1 12 12 - // 12 9 3 40 1 20 20 PLL out of spec - // 12 15 1 192 1 24 12 - // 12 9 1 120 1 30 15 - // 12 9 3 40 0 40 20 PLL out of spec - // 12 15 1 192 1 48 12 - // 12 15 1 192 1 48 24 - // 12 8 1 108 1 54 27 - // 12 9 1 120 1 60 15 - // 12 9 1 120 1 60 30 - // 12 10 1 132 1 66 16.5 - // - unsigned long in_cpu_f = param->cpu_f; - unsigned long in_osc0_f = param->osc0_f; - unsigned long mul, div, div2_en = 0, div2_cpu = 0, div2_pba = 0; - unsigned long pll_freq, rest; - Bool b_div2_pba, b_div2_cpu; - - // Switch to external Oscillator 0 - pm_switch_to_osc0(&AVR32_PM, in_osc0_f, param->osc0_startup); - - // Start with CPU freq config - if (in_cpu_f == in_osc0_f) - { - param->cpu_f = in_osc0_f; - param->pba_f = in_osc0_f; - return PM_FREQ_STATUS_OK; - } - else if (in_cpu_f < in_osc0_f) - { - // TBD - } - - rest = in_cpu_f % in_osc0_f; - - for (div = 1; div < 32; div++) - { - if ((div * rest) % in_osc0_f == 0) - break; - } - if (div == 32) - return PM_FREQ_STATUS_FAIL; - - mul = (in_cpu_f * div) / in_osc0_f; - - if (mul > PM_MAX_MUL) - return PM_FREQ_STATUS_FAIL; - - // export 2power from PLL div to div2_cpu - while (!(div % 2)) - { - div /= 2; - div2_cpu++; - } - - // Here we know the mul and div parameter of the PLL config. - // . Check out if the PLL has a valid in_cpu_f. - // . Try to have for the PLL frequency (VCO output) the highest possible value - // to reduce jitter. - while (in_osc0_f * 2 * mul / div < AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ) - { - if (2 * mul > PM_MAX_MUL) - break; - mul *= 2; - div2_cpu++; - } - - if (div2_cpu != 0) - { - div2_cpu--; - div2_en = 1; - } - - pll_freq = in_osc0_f * mul / (div * (1 << div2_en)); - - // Update real CPU Frequency - param->cpu_f = pll_freq / (1 << div2_cpu); - mul--; - - pm_pll_setup(&AVR32_PM - , 0 // pll - , mul // mul - , div // div - , 0 // osc - , 16 // lockcount - ); - - pm_pll_set_option(&AVR32_PM - , 0 // pll - // PLL clock is lower than 160MHz: need to set pllopt. - , (pll_freq < AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ) ? 1 : 0 // pll_freq - , div2_en // pll_div2 - , 0 // pll_wbwdisable - ); - - rest = pll_freq; - while (rest > AVR32_PM_PBA_MAX_FREQ || - rest != param->pba_f) - { - div2_pba++; - rest = pll_freq / (1 << div2_pba); - if (rest < param->pba_f) - break; - } - - // Update real PBA Frequency - param->pba_f = pll_freq / (1 << div2_pba); - - // Enable PLL0 - pm_pll_enable(&AVR32_PM, 0); - - // Wait for PLL0 locked - pm_wait_for_pll0_locked(&AVR32_PM); - - if (div2_cpu) - { - b_div2_cpu = TRUE; - div2_cpu--; - } - else - b_div2_cpu = FALSE; - - if (div2_pba) - { - b_div2_pba = TRUE; - div2_pba--; - } - else - b_div2_pba = FALSE; - - pm_cksel(&AVR32_PM - , b_div2_pba, div2_pba // PBA - , b_div2_cpu, div2_cpu // PBB - , b_div2_cpu, div2_cpu // HSB - ); - - if (param->cpu_f > AVR32_FLASHC_FWS_0_MAX_FREQ) - { - flashc_set_wait_state(1); -#if (defined AVR32_FLASHC_210_H_INCLUDED) - if (param->cpu_f > AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ) - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1); - else - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); -#endif - } - else - { - flashc_set_wait_state(0); -#if (defined AVR32_FLASHC_210_H_INCLUDED) - if (param->cpu_f > AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ) - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1); - else - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); -#endif - } - - pm_switch_to_clock(&AVR32_PM, AVR32_PM_MCCTRL_MCSEL_PLL0); - - return PM_FREQ_STATUS_OK; -} - - -void pm_configure_usb_clock(void) -{ -#if UC3A3 - - // Setup USB GCLK. - pm_gc_setup(&AVR32_PM, AVR32_PM_GCLK_USBB, // gc - 0, // osc_or_pll: use Osc (if 0) or PLL (if 1) - 0, // pll_osc: select Osc0/PLL0 or Osc1/PLL1 - 0, // diven - 0); // div - - // Enable USB GCLK. - pm_gc_enable(&AVR32_PM, AVR32_PM_GCLK_USBB); -#else - // Use 12MHz from OSC0 and generate 96 MHz - pm_pll_setup(&AVR32_PM, 1, // pll. - 7, // mul. - 1, // div. - 0, // osc. - 16); // lockcount. - - pm_pll_set_option(&AVR32_PM, 1, // pll. - 1, // pll_freq: choose the range 80-180MHz. - 1, // pll_div2. - 0); // pll_wbwdisable. - - // start PLL1 and wait forl lock - pm_pll_enable(&AVR32_PM, 1); - - // Wait for PLL1 locked. - pm_wait_for_pll1_locked(&AVR32_PM); - - pm_gc_setup(&AVR32_PM, AVR32_PM_GCLK_USBB, // gc. - 1, // osc_or_pll: use Osc (if 0) or PLL (if 1). - 1, // pll_osc: select Osc0/PLL0 or Osc1/PLL1. - 0, // diven. - 0); // div. - pm_gc_enable(&AVR32_PM, AVR32_PM_GCLK_USBB); -#endif -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c deleted file mode 100644 index f5fc1553d7f..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c +++ /dev/null @@ -1,566 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief High-level library abstracting features such as oscillators/pll/dfll - * configuration, clock configuration, System-sensible parameters - * configuration, buses clocks configuration, sleep mode, reset. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ -#include "power_clocks_lib.h" - - -//! Device-specific data -#if UC3L -static long int pcl_configure_clocks_uc3l(pcl_freq_param_t *param); // FORWARD declaration -#endif - -#if UC3C -static long int pcl_configure_clocks_uc3c(pcl_freq_param_t *param); // FORWARD declaration -#endif - -long int pcl_configure_clocks(pcl_freq_param_t *param) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE - // Implementation for UC3A, UC3A3, UC3B parts. - return(pm_configure_clocks(param)); -#else - #ifdef AVR32_PM_410_H_INCLUDED - // Implementation for UC3C parts. - return(pcl_configure_clocks_uc3c(param)); - #else - // Implementation for UC3L parts. - return(pcl_configure_clocks_uc3l(param)); - #endif -#endif -} - - -//! Device-specific implementation -#if UC3L -// FORWARD declaration -static long int pcl_configure_synchronous_clocks( pm_clk_src_t main_clk_src, - unsigned long main_clock_freq_hz, - pcl_freq_param_t *param); - -long int pcl_configure_clocks_rcsys(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_RCSYS - - // Supported synchronous clocks frequencies if RCSYS is the main clock source: - // 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target frequencies are reachable. - if((param->cpu_f > SCIF_SLOWCLOCK_FREQ_HZ) || (param->pba_f > SCIF_SLOWCLOCK_FREQ_HZ) - || (param->pbb_f > SCIF_SLOWCLOCK_FREQ_HZ)) - return(-1); -#endif - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_SLOW, SCIF_SLOWCLOCK_FREQ_HZ, param)); -} - - -long int pcl_configure_clocks_rc120m(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_RC120M - - // Supported synchronous clocks frequencies if RC120M is the main clock source: - // 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target frequencies are reachable. - if((param->cpu_f > SCIF_RC120M_FREQ_HZ) || (param->pba_f > SCIF_RC120M_FREQ_HZ) - || (param->pbb_f > SCIF_RC120M_FREQ_HZ)) - return(-1); -#endif - - // Start the 120MHz internal RCosc (RC120M) clock - scif_start_rc120M(); - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_RC120M, SCIF_RC120M_FREQ_HZ, param)); -} - - -long int pcl_configure_clocks_osc0(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_OSC0 - - // Supported synchronous clocks frequencies if OSC0 is the main clock source: - // (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example) - // 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - - unsigned long main_clock_freq; - - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - - main_clock_freq = param->osc0_f; -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target frequencies are reachable. - if((param->cpu_f > main_clock_freq) || (param->pba_f > main_clock_freq) - || (param->pbb_f > main_clock_freq)) - return(-1); -#endif - // Configure OSC0 in crystal mode, external crystal with a fcrystal Hz frequency. - scif_configure_osc_crystalmode(SCIF_OSC0, main_clock_freq); - // Enable the OSC0 - scif_enable_osc(SCIF_OSC0, param->osc0_startup, true); - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_OSC0, main_clock_freq, param)); -} - - -long int pcl_configure_clocks_dfll0(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_DFLL - - // Supported synchronous clocks frequencies if DFLL is the main clock source: - // (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example) - // 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - - unsigned long main_clock_freq; - scif_gclk_opt_t *pgc_dfllif_ref_opt; - - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - - main_clock_freq = param->dfll_f; -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target DFLL output frequency is in the correct range. - if((main_clock_freq > SCIF_DFLL_MAXFREQ_HZ) || (main_clock_freq < SCIF_DFLL_MINFREQ_HZ)) - return(-1); - // Verify that the target frequencies are reachable. - if((param->cpu_f > main_clock_freq) || (param->pba_f > main_clock_freq) - || (param->pbb_f > main_clock_freq)) - return(-1); -#endif - pgc_dfllif_ref_opt = (scif_gclk_opt_t *)param->pextra_params; - // Implementation note: this implementation configures the DFLL in closed-loop - // mode (because it gives the best accuracy) which enables the generic clock CLK_DFLLIF_REF - // as a reference (RCSYS being used as the generic clock source, undivided). - scif_dfll0_closedloop_configure_and_start(pgc_dfllif_ref_opt, main_clock_freq, TRUE); - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_DFLL0, main_clock_freq, param)); -} - - -static long int pcl_configure_clocks_uc3l(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_RCSYS, PCL_MC_OSC0, PCL_MC_DFLL0, PCL_MC_RC120M - - // Supported synchronous clocks frequencies if RCSYS is the main clock source: - // 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz. - - // Supported synchronous clocks frequencies if RC120M is the main clock source: - // 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz. - - // Supported synchronous clocks frequencies if OSC0 is the main clock source: - // (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example) - // 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz. - - // Supported synchronous clocks frequencies if DFLL is the main clock source: - // (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example) - // 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - - if(PCL_MC_RCSYS == param->main_clk_src) - { - return(pcl_configure_clocks_rcsys(param)); - } - else if(PCL_MC_RC120M == param->main_clk_src) - { - return(pcl_configure_clocks_rc120m(param)); - } - else if(PCL_MC_OSC0 == param->main_clk_src) - { - return(pcl_configure_clocks_osc0(param)); - } - else // PCL_MC_DFLL0 == param->main_clk_src - { - return(pcl_configure_clocks_dfll0(param)); - } -} - -static long int pcl_configure_synchronous_clocks(pm_clk_src_t main_clk_src, unsigned long main_clock_freq_hz, pcl_freq_param_t *param) -{ - //# - //# Set the Synchronous clock division ratio for each clock domain - //# - pm_set_all_cksel(main_clock_freq_hz, param->cpu_f, param->pba_f, param->pbb_f); - - //# - //# Set the Flash wait state and the speed read mode (depending on the target CPU frequency). - //# -#if UC3L - flashcdw_set_flash_waitstate_and_readmode(param->cpu_f); -#elif UC3C - flashc_set_flash_waitstate_and_readmode(param->cpu_f); -#endif - - - //# - //# Switch the main clock source to the selected clock. - //# - pm_set_mclk_source(main_clk_src); - - return PASS; -} - -#endif // UC3L device-specific implementation - -//! UC3C Device-specific implementation -#if UC3C -static long int pcl_configure_clocks_uc3c(pcl_freq_param_t *param) -{ - #define PM_MAX_MUL ((1 << AVR32_SCIF_PLLMUL_SIZE) - 1) - #define AVR32_PM_PBA_MAX_FREQ 66000000 - #define AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ 240000000 - #define AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ 160000000 - - // Implementation for UC3C parts. - // Supported frequencies: - // Fosc0 mul div PLL div2_en cpu_f pba_f Comment - // 12 15 1 192 1 12 12 - // 12 9 3 40 1 20 20 PLL out of spec - // 12 15 1 192 1 24 12 - // 12 9 1 120 1 30 15 - // 12 9 3 40 0 40 20 PLL out of spec - // 12 15 1 192 1 48 12 - // 12 15 1 192 1 48 24 - // 12 8 1 108 1 54 27 - // 12 9 1 120 1 60 15 - // 12 9 1 120 1 60 30 - // 12 10 1 132 1 66 16.5 - // - unsigned long in_cpu_f = param->cpu_f; - unsigned long in_osc0_f = param->osc0_f; - unsigned long mul, div, div2_en = 0, div2_cpu = 0, div2_pba = 0; - unsigned long pll_freq, rest; - Bool b_div2_pba, b_div2_cpu; - - // Configure OSC0 in crystal mode, external crystal with a FOSC0 Hz frequency. - scif_configure_osc_crystalmode(SCIF_OSC0, in_osc0_f); - // Enable the OSC0 - scif_enable_osc(SCIF_OSC0, param->osc0_startup, true); - // Set the main clock source as being OSC0. - pm_set_mclk_source(PM_CLK_SRC_OSC0); - - // Start with CPU freq config - if (in_cpu_f == in_osc0_f) - { - param->cpu_f = in_osc0_f; - param->pba_f = in_osc0_f; - return PASS; - } - else if (in_cpu_f < in_osc0_f) - { - // TBD - } - - rest = in_cpu_f % in_osc0_f; - - for (div = 1; div < 32; div++) - { - if ((div * rest) % in_osc0_f == 0) - break; - } - if (div == 32) - return FAIL; - - mul = (in_cpu_f * div) / in_osc0_f; - - if (mul > PM_MAX_MUL) - return FAIL; - - // export 2power from PLL div to div2_cpu - while (!(div % 2)) - { - div /= 2; - div2_cpu++; - } - - // Here we know the mul and div parameter of the PLL config. - // . Check out if the PLL has a valid in_cpu_f. - // . Try to have for the PLL frequency (VCO output) the highest possible value - // to reduce jitter. - while (in_osc0_f * 2 * mul / div < AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ) - { - if (2 * mul > PM_MAX_MUL) - break; - mul *= 2; - div2_cpu++; - } - - if (div2_cpu != 0) - { - div2_cpu--; - div2_en = 1; - } - - pll_freq = in_osc0_f * mul / (div * (1 << div2_en)); - - // Update real CPU Frequency - param->cpu_f = pll_freq / (1 << div2_cpu); - mul--; - - scif_pll_opt_t opt; - - opt.osc = SCIF_OSC0, // Sel Osc0 or Osc1 - opt.lockcount = 16, // lockcount in main clock for the PLL wait lock - opt.div = div, // DIV=1 in the formula - opt.mul = mul, // MUL=7 in the formula - opt.pll_div2 = div2_en, // pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value) - opt.pll_wbwdisable = 0, //pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode. - opt.pll_freq = (pll_freq < AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ) ? 1 : 0, // Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz. - - - scif_pll_setup(SCIF_PLL0, opt); // lockcount in main clock for the PLL wait lock - - /* Enable PLL0 */ - scif_pll_enable(SCIF_PLL0); - - /* Wait for PLL0 locked */ - scif_wait_for_pll_locked(SCIF_PLL0) ; - - rest = pll_freq; - while (rest > AVR32_PM_PBA_MAX_FREQ || - rest != param->pba_f) - { - div2_pba++; - rest = pll_freq / (1 << div2_pba); - if (rest < param->pba_f) - break; - } - - // Update real PBA Frequency - param->pba_f = pll_freq / (1 << div2_pba); - - - if (div2_cpu) - { - b_div2_cpu = TRUE; - div2_cpu--; - } - else - b_div2_cpu = FALSE; - - if (div2_pba) - { - b_div2_pba = TRUE; - div2_pba--; - } - else - b_div2_pba = FALSE; - - if (b_div2_cpu == TRUE ) - { - pm_set_clk_domain_div(PM_CLK_DOMAIN_0, (pm_divratio_t) div2_cpu); // CPU - pm_set_clk_domain_div(PM_CLK_DOMAIN_1, (pm_divratio_t) div2_cpu); // HSB - pm_set_clk_domain_div(PM_CLK_DOMAIN_3, (pm_divratio_t) div2_cpu); // PBB - } - if (b_div2_pba == TRUE ) - { - pm_set_clk_domain_div(PM_CLK_DOMAIN_2, (pm_divratio_t) div2_pba); // PBA - pm_set_clk_domain_div(PM_CLK_DOMAIN_4, (pm_divratio_t) div2_pba); // PBC - } - - // Set Flashc Wait State - flashc_set_flash_waitstate_and_readmode(param->cpu_f); - - // Set the main clock source as being PLL0. - pm_set_mclk_source(PM_CLK_SRC_PLL0); - - return PASS; -} -#endif // UC3C device-specific implementation - -long int pcl_switch_to_osc(pcl_osc_t osc, unsigned int fcrystal, unsigned int startup) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - if(PCL_OSC0 == osc) - { - // Configure OSC0 in crystal mode, external crystal with a FOSC0 Hz frequency, - // enable the OSC0, set the main clock source as being OSC0. - pm_switch_to_osc0(&AVR32_PM, fcrystal, startup); - } - else - { - return PCL_NOT_SUPPORTED; - } -#else -// Implementation for UC3C, UC3L parts. - #if AVR32_PM_VERSION_RESETVALUE < 0x400 - return PCL_NOT_SUPPORTED; - #else - if(PCL_OSC0 == osc) - { - // Configure OSC0 in crystal mode, external crystal with a fcrystal Hz frequency. - scif_configure_osc_crystalmode(SCIF_OSC0, fcrystal); - // Enable the OSC0 - scif_enable_osc(SCIF_OSC0, startup, true); - // Set the Flash wait state and the speed read mode (depending on the target CPU frequency). -#if UC3L - flashcdw_set_flash_waitstate_and_readmode(fcrystal); -#elif UC3C - flashc_set_flash_waitstate_and_readmode(fcrystal); -#endif - // Set the main clock source as being OSC0. - pm_set_mclk_source(PM_CLK_SRC_OSC0); - } - else - { - return PCL_NOT_SUPPORTED; - } - #endif -#endif - return PASS; -} - -long int pcl_configure_usb_clock(void) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - pm_configure_usb_clock(); - return PASS; -#else - #ifdef AVR32_PM_410_H_INCLUDED - const scif_pll_opt_t opt = { - .osc = SCIF_OSC0, // Sel Osc0 or Osc1 - .lockcount = 16, // lockcount in main clock for the PLL wait lock - .div = 1, // DIV=1 in the formula - .mul = 5, // MUL=7 in the formula - .pll_div2 = 1, // pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value) - .pll_wbwdisable = 0, //pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode. - .pll_freq = 1, // Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz. - }; - - /* Setup PLL1 on Osc0, mul=7 ,no divisor, lockcount=16, ie. 16Mhzx6 = 96MHz output */ - scif_pll_setup(SCIF_PLL1, opt); // lockcount in main clock for the PLL wait lock - - /* Enable PLL1 */ - scif_pll_enable(SCIF_PLL1); - - /* Wait for PLL1 locked */ - scif_wait_for_pll_locked(SCIF_PLL1) ; - - // Implementation for UC3C parts. - // Setup the generic clock for USB - scif_gc_setup(AVR32_SCIF_GCLK_USB, - SCIF_GCCTRL_PLL1, - AVR32_SCIF_GC_NO_DIV_CLOCK, - 0); - // Now enable the generic clock - scif_gc_enable(AVR32_SCIF_GCLK_USB); - return PASS; - #else - return PCL_NOT_SUPPORTED; - #endif -#endif -} - - -#if UC3L -#else -void pcl_write_gplp(unsigned long gplp, unsigned long value) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - pm_write_gplp(&AVR32_PM,gplp,value); -#else - scif_write_gplp(gplp,value); -#endif -} - -unsigned long pcl_read_gplp(unsigned long gplp) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - return pm_read_gplp(&AVR32_PM,gplp); -#else - return scif_read_gplp(gplp); -#endif -} -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h deleted file mode 100644 index 28c5888da80..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h +++ /dev/null @@ -1,379 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief High-level library abstracting features such as oscillators/pll/dfll - * configuration, clock configuration, System-sensible parameters - * configuration, buses clocks configuration, sleep mode, reset. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _POWER_CLOCKS_LIB_H_ -#define _POWER_CLOCKS_LIB_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include "compiler.h" - -#ifndef AVR32_PM_VERSION_RESETVALUE -// Support for UC3A, UC3A3, UC3B parts. - #include "pm.h" -#else -//! Device-specific data -#if UC3L - #include "pm_uc3l.h" - #include "scif_uc3l.h" - #include "flashcdw.h" -#elif UC3C - #include "pm_uc3c.h" - #include "scif_uc3c.h" - #include "flashc.h" -#endif -#endif - -/*! \name Clocks Management - */ -//! @{ - -//! The different oscillators -typedef enum -{ - PCL_OSC0 = 0, - PCL_OSC1 = 1 -} pcl_osc_t; - -//! The different DFLLs -typedef enum -{ - PCL_DFLL0 = 0, - PCL_DFLL1 = 1 -} pcl_dfll_t; - -//! Possible Main Clock Sources -typedef enum -{ - PCL_MC_RCSYS, // Default main clock source, supported by all (aka Slow Clock) - PCL_MC_OSC0, // Supported by all - PCL_MC_OSC1, // Supported by UC3C only - PCL_MC_OSC0_PLL0, // Supported by UC3A, UC3B, UC3A3, UC3C (the main clock source is PLL0 with OSC0 as reference) - PCL_MC_OSC1_PLL0, // Supported by UC3A, UC3B, UC3A3, UC3C (the main clock source is PLL0 with OSC1 as reference) - PCL_MC_OSC0_PLL1, // Supported by UC3C (the main clock source is PLL1 with OSC0 as reference) - PCL_MC_OSC1_PLL1, // Supported by UC3C (the main clock source is PLL1 with OSC1 as reference) - PCL_MC_DFLL0, // Supported by UC3L - PCL_MC_DFLL1, // Not supported yet - PCL_MC_RC120M, // Supported by UC3L, UC3C - PCL_MC_RC8M, // Supported by UC3C - PCL_MC_CRIPOSC // Supported by UC3C -} pcl_mainclk_t; - -//! Input and output parameters to configure clocks with pcl_configure_clocks(). -// NOTE: regarding the frequency settings, always abide by the datasheet rules and min & max supported frequencies. -#ifndef AVR32_PM_VERSION_RESETVALUE -// Support for UC3A, UC3A3, UC3B parts. -#define pcl_freq_param_t pm_freq_param_t // See pm.h -#else -// Support for UC3C, UC3L parts. -typedef struct -{ - //! Main clock source selection (input argument). - pcl_mainclk_t main_clk_src; - - //! Target CPU frequency (input/output argument). - unsigned long cpu_f; - - //! Target PBA frequency (input/output argument). - unsigned long pba_f; - - //! Target PBB frequency (input/output argument). - unsigned long pbb_f; - - //! Target PBC frequency (input/output argument). - unsigned long pbc_f; - - //! Oscillator 0's external crystal(or external clock) frequency (board dependant) (input argument). - unsigned long osc0_f; - - //! Oscillator 0's external crystal(or external clock) startup time: AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC (input argument). - unsigned long osc0_startup; - - //! DFLL target frequency (input/output argument) (NOTE: the bigger, the most stable the frequency) - unsigned long dfll_f; - - //! Other parameters that might be necessary depending on the device (implementation-dependent). - // For the UC3L DFLL setup, this parameter should be pointing to a structure of - // type (scif_gclk_opt_t *). - void *pextra_params; -} pcl_freq_param_t; -#endif - -//! Define "not supported" for the lib. -#define PCL_NOT_SUPPORTED (-10000) - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - main_clk_src is the id of the main clock source to use, - * - cpu_f and pba_f and pbb_f are the wanted frequencies, - * - osc0_f is the oscillator 0's external crystal (or external clock) on-board frequency (e.g. FOSC0), - * - osc0_startup is the oscillator 0's external crystal (or external clock) startup time (e.g. OSC0_STARTUP). - * - dfll_f is the target DFLL frequency to set-up if main_clk_src is the dfll. - * - * The CPU, HSB and PBA frequencies programmed after configuration are stored back into cpu_f and pba_f. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks() and modify it to use - * preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the RCSYS osc as main source clock. - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies - * - * Supported main clock sources: PCL_MC_RCSYS - * - * Supported synchronous clocks frequencies: - * 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_rcsys() and modify it to use - * preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_rcsys(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the RC120M osc as main source clock. - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies - * - * Supported main clock sources: PCL_MC_RC120M - * - * Supported synchronous clocks frequencies: - * 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_rc120m() and modify it to - * use preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_rc120m(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the OSC0 osc as main source clock - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies, - * - osc0_f is the oscillator 0's external crystal (or external clock) on-board frequency (e.g. FOSC0), - * - osc0_startup is the oscillator 0's external crystal (or external clock) startup time (e.g. OSC0_STARTUP). - * - * Supported main clock sources: PCL_MC_OSC0 - * - * Supported synchronous clocks frequencies: - * (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example) - * 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_osc0() and modify it to use - * preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_osc0(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the DFLL0 as main source clock - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies, - * - dfll_f is the target DFLL frequency to set-up - * - * \note: when the DFLL0 is to be used as main source clock for the synchronous clocks, - * the target frequency of the DFLL should be chosen to be as high as possible - * within the specification range (for stability reasons); the target cpu and pbx - * frequencies will then be reached by appropriate division ratio. - * - * Supported main clock sources: PCL_MC_DFLL0 - * - * Supported synchronous clocks frequencies: - * (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example) - * 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_dfll0() and modify it to - * use preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_dfll0(pcl_freq_param_t *param); - -/*! \brief Switch the main clock source to Osc0 configured in crystal mode - * - * \param osc The oscillator to enable and switch to. - * \param fcrystal Oscillator external crystal frequency (Hz) - * \param startup Oscillator startup time. - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long int pcl_switch_to_osc(pcl_osc_t osc, unsigned int fcrystal, unsigned int startup); - -/*! \brief Enable the clock of a module. - * - * \param module The module to clock (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks" - * or look in the module section). - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. -#define pcl_enable_module(module) pm_enable_module(&AVR32_PM, module) -#else -// Implementation for UC3C, UC3L parts. -#define pcl_enable_module(module) pm_enable_module(module) -#endif - -/*! \brief Disable the clock of a module. - * - * \param module The module to shut down (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks" - * or look in the module section). - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. -#define pcl_disable_module(module) pm_disable_module(&AVR32_PM, module) -#else -// Implementation for UC3C, UC3L parts. -#define pcl_disable_module(module) pm_disable_module(module) -#endif - -/*! \brief Configure the USB Clock - * - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long int pcl_configure_usb_clock(void); - -//! @} - -/*! \name Power Management - */ -//! @{ -/*! - * \brief Read the content of the GPLP registers - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * - * \return The content of the chosen GPLP register. - */ -extern unsigned long pcl_read_gplp(unsigned long gplp); - - -/*! - * \brief Write into the GPLP registers - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * \param value Value to write - */ -extern void pcl_write_gplp(unsigned long gplp, unsigned long value); - -//! @} - -#ifdef __cplusplus -} -#endif - -#endif // _POWER_CLOCKS_LIB_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.c deleted file mode 100644 index 4cbae0f70de..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.c +++ /dev/null @@ -1,213 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief RTC driver for AVR32 UC3. - * - * AVR32 Real Time Counter driver module. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an RTC and a PM module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include -#include "compiler.h" -#include "pm.h" -#include "rtc.h" - - -int rtc_is_busy(volatile avr32_rtc_t *rtc) -{ - return (rtc->ctrl & AVR32_RTC_CTRL_BUSY_MASK) != 0; -} - - -int rtc_init(volatile avr32_rtc_t *rtc, unsigned char osc_type, unsigned char psel) -{ - // If exit, it means that the configuration has not been set correctly - if (osc_type > (1 << AVR32_RTC_CTRL_CLK32_SIZE) - 1 || - psel > (1 << AVR32_RTC_CTRL_PSEL_SIZE) - 1) - return 0; - - // If we use the 32-kHz oscillator, we have to enable it first - if (osc_type == RTC_OSC_32KHZ) - { - // Select the 32-kHz oscillator crystal - pm_enable_osc32_crystal(&AVR32_PM); - // Enable the 32-kHz clock - pm_enable_clk32_no_wait(&AVR32_PM, AVR32_PM_OSCCTRL32_STARTUP_0_RCOSC); - } - - // Wait until the rtc CTRL register is up-to-date - while (rtc_is_busy(rtc)); - - // Set the new RTC configuration - rtc->ctrl = osc_type << AVR32_RTC_CTRL_CLK32_OFFSET | - psel << AVR32_RTC_CTRL_PSEL_OFFSET | - AVR32_RTC_CTRL_CLKEN_MASK; - - // Wait until write is done - while (rtc_is_busy(rtc)); - - // Set the counter value to 0 - rtc_set_value(rtc, 0x00000000); - // Set the top value to 0xFFFFFFFF - rtc_set_top_value(rtc, 0xFFFFFFFF); - - return 1; -} - - -void rtc_set_value(volatile avr32_rtc_t *rtc, unsigned long val) -{ - // Wait until we can write into the VAL register - while (rtc_is_busy(rtc)); - // Set the new val value - rtc->val = val; - // Wait until write is done - while (rtc_is_busy(rtc)); -} - - -unsigned long rtc_get_value(volatile avr32_rtc_t *rtc) -{ - return rtc->val; -} - - -void rtc_enable_wake_up(volatile avr32_rtc_t *rtc) -{ - // Wait until the rtc CTRL register is up-to-date - while (rtc_is_busy(rtc)); - // Enable the wake up of the RTC - rtc->ctrl |= AVR32_RTC_CTRL_WAKE_EN_MASK; - // Wait until write is done - while (rtc_is_busy(rtc)); -} - - -void rtc_disable_wake_up(volatile avr32_rtc_t *rtc) -{ - // Wait until the rtc CTRL register is up-to-date - while (rtc_is_busy(rtc)); - // Disable the wake up of the RTC - rtc->ctrl &= ~AVR32_RTC_CTRL_WAKE_EN_MASK; - // Wait until write is done - while (rtc_is_busy(rtc)); -} - - -void rtc_enable(volatile avr32_rtc_t *rtc) -{ - // Wait until the rtc CTRL register is up-to-date - while (rtc_is_busy(rtc)); - // Enable the RTC - rtc->ctrl |= AVR32_RTC_CTRL_EN_MASK; - // Wait until write is done - while (rtc_is_busy(rtc)); -} - - -void rtc_disable(volatile avr32_rtc_t *rtc) -{ - // Wait until the rtc CTRL register is up-to-date - while (rtc_is_busy(rtc)); - // Disable the RTC - rtc->ctrl &= ~AVR32_RTC_CTRL_EN_MASK; - // Wait until write is done - while (rtc_is_busy(rtc)); -} - - -void rtc_enable_interrupt(volatile avr32_rtc_t *rtc) -{ - rtc->ier = AVR32_RTC_IER_TOPI_MASK; -} - - -void rtc_disable_interrupt(volatile avr32_rtc_t *rtc) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - rtc->idr = AVR32_RTC_IDR_TOPI_MASK; - rtc->imr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void rtc_clear_interrupt(volatile avr32_rtc_t *rtc) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - rtc->icr = AVR32_RTC_ICR_TOPI_MASK; - rtc->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void rtc_set_top_value(volatile avr32_rtc_t *rtc, unsigned long top) -{ - // Wait until we can write into the VAL register - while (rtc_is_busy(rtc)); - // Set the new val value - rtc->top = top; - // Wait until write is done - while (rtc_is_busy(rtc)); -} - - -unsigned long rtc_get_top_value(volatile avr32_rtc_t *rtc) -{ - return rtc->top; -} - - -int rtc_interrupt_enabled(volatile avr32_rtc_t *rtc) -{ - return (rtc->imr & AVR32_RTC_IMR_TOPI_MASK) != 0; -} - - -int rtc_is_interrupt(volatile avr32_rtc_t *rtc) -{ - return (rtc->isr & AVR32_RTC_ISR_TOPI_MASK) != 0; -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.h deleted file mode 100644 index 5702c295953..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/RTC/rtc.h +++ /dev/null @@ -1,191 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief RTC driver for AVR32 UC3. - * - * AVR32 Real Time Counter driver module. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an RTC and a PM module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _RTC_H_ -#define _RTC_H_ - -#include "compiler.h" -#include - - -/*! \name Oscillator Types - */ -//! @{ -#define RTC_OSC_32KHZ 1 -#define RTC_OSC_RC 0 -//! @} - -/*! \name Predefined PSEL Values - */ -//! @{ - -//! The PSEL value to set the RTC source clock (after the prescaler) to 1 Hz, -//! when using an external 32-kHz crystal. -#define RTC_PSEL_32KHZ_1HZ 14 - -//! The PSEL value to set the RTC source clock (after the prescaler) to 1.76 Hz, -//! when using the internal RC oscillator (~ 115 kHz). -#define RTC_PSEL_RC_1_76HZ 15 - -//! @} - - -/*! - * \brief This function will initialise the RTC module. - * If you use the 32 KHz oscillator, it will enable this module. - * This function also set the top value of the RTC to 0xFFFFFFFF - * and the value to 0. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \param osc_type The oscillator you want to use. If you need a better - * accuracy, use the 32 KHz oscillator (i.e. RTC_OSC_32KHZ). - * \param psel The preselector value for the corresponding oscillator (4-bits). - * To obtain this value, you can use this formula: - * psel = log(Fosc/Frtc)/log(2)-1, where Fosc is the frequency of the - * oscillator you are using (32 KHz or 115 KHz) and Frtc the frequency - * desired. - * \return 1 if the initialisation succeds otherwize it will return 0. - */ -extern int rtc_init(volatile avr32_rtc_t *rtc, unsigned char osc_type, unsigned char psel); - -/*! - * \brief Enable the RTC. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_enable(volatile avr32_rtc_t *rtc); - -/*! - * \brief Disable the RTC. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_disable(volatile avr32_rtc_t *rtc); - -/*! - * \brief Enable the wake up feature of the RTC. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_enable_wake_up(volatile avr32_rtc_t *rtc); - -/*! - * \brief Disable the wake up feature of the RTC. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_disable_wake_up(volatile avr32_rtc_t *rtc); - -/*! - * \brief Enable the interrupt feature of the RTC. - * An interrupt is raised when the value of the RTC - * is equal to its top value. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_enable_interrupt(volatile avr32_rtc_t *rtc); - -/*! - * \brief Disable the interrupt feature of the RTC. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_disable_interrupt(volatile avr32_rtc_t *rtc); - -/*! - * \brief Clear the interrupt flag. - * Call this function once you handled the interrupt. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - */ -extern void rtc_clear_interrupt(volatile avr32_rtc_t *rtc); - -/*! - * \brief Get the status of interrupts. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \return 1 if the interrupts are enabled otherwize it returns 0. - */ -extern int rtc_interrupt_enabled(volatile avr32_rtc_t *rtc); - -/*! - * \brief Check if an interrupt is raised. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \return 1 if an interrupt is currently raised otherwize it returns 0. - */ -extern int rtc_is_interrupt(volatile avr32_rtc_t *rtc); - -/*! - * \brief This function sets the RTC current top value. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \param top The top value you want to store. - */ -extern void rtc_set_top_value(volatile avr32_rtc_t *rtc, unsigned long top); - -/*! - * \brief This function returns the RTC current top value. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \return The RTC current top value. - */ -extern unsigned long rtc_get_top_value(volatile avr32_rtc_t *rtc); - -/*! - * \brief This function checks if the RTC is busy or not. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \return 1 if the RTC is busy otherwize it will return 0. - */ -extern int rtc_is_busy(volatile avr32_rtc_t *rtc); - -/*! - * \brief This function sets the RTC current value. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \param val The value you want to store. - */ -extern void rtc_set_value(volatile avr32_rtc_t *rtc, unsigned long val); - -/*! - * \brief This function returns the RTC current value. - * \param rtc Base address of the RTC (i.e. &AVR32_RTC). - * \return The RTC current value. - */ -extern unsigned long rtc_get_value(volatile avr32_rtc_t *rtc); - - -#endif // _RTC_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c deleted file mode 100644 index d2b7ccd9401..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c +++ /dev/null @@ -1,443 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SPI driver for AVR32 UC3. - * - * This file defines a useful set of functions for the SPI interface on AVR32 - * devices. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "spi.h" - -#ifdef FREERTOS_USED - -#include "FreeRTOS.h" -#include "semphr.h" - -#endif - - -/*! \name SPI Writable Bit-Field Registers - */ -//! @{ - -typedef union -{ - unsigned long cr; - avr32_spi_cr_t CR; -} u_avr32_spi_cr_t; - -typedef union -{ - unsigned long mr; - avr32_spi_mr_t MR; -} u_avr32_spi_mr_t; - -typedef union -{ - unsigned long tdr; - avr32_spi_tdr_t TDR; -} u_avr32_spi_tdr_t; - -typedef union -{ - unsigned long ier; - avr32_spi_ier_t IER; -} u_avr32_spi_ier_t; - -typedef union -{ - unsigned long idr; - avr32_spi_idr_t IDR; -} u_avr32_spi_idr_t; - -typedef union -{ - unsigned long csr; - avr32_spi_csr0_t CSR; -} u_avr32_spi_csr_t; - -//! @} - - -#ifdef FREERTOS_USED - -//! The SPI mutex. -static xSemaphoreHandle xSPIMutex; - -#endif - - -/*! \brief Calculates the baudrate divider. - * - * \param options Pointer to a structure containing initialization options for - * an SPI channel. - * \param pba_hz SPI module input clock frequency (PBA clock, Hz). - * - * \return Divider or error code. - * \retval >=0 Success. - * \retval <0 Error. - */ -static int getBaudDiv(const spi_options_t *options, unsigned int pba_hz) -{ - int baudDiv = (pba_hz + options->baudrate / 2) / options->baudrate; - - if (baudDiv <= 0 || baudDiv > 255) { - return -1; - } - - return baudDiv; -} - - -void spi_reset(volatile avr32_spi_t *spi) -{ - spi->cr = AVR32_SPI_CR_SWRST_MASK; -} - - -spi_status_t spi_initSlave(volatile avr32_spi_t *spi, - unsigned char bits, - unsigned char spi_mode) -{ - if (spi_mode > 3 || - bits < 8 || bits > 16) { - return SPI_ERROR_ARGUMENT; - } - - // Reset. - spi->cr = AVR32_SPI_CR_SWRST_MASK; - - // Will use CSR0 offsets; these are the same for CSR0 to CSR3. - spi->csr0 = ((spi_mode >> 1) << AVR32_SPI_CSR0_CPOL_OFFSET) | - (((spi_mode & 0x1) ^ 0x1) << AVR32_SPI_CSR0_NCPHA_OFFSET) | - ((bits - 8) << AVR32_SPI_CSR0_BITS_OFFSET); - - return SPI_OK; -} - - -spi_status_t spi_initTest(volatile avr32_spi_t *spi) -{ - // Reset. - spi->cr = AVR32_SPI_CR_SWRST_MASK; - spi->mr |= AVR32_SPI_MR_MSTR_MASK | // Master Mode. - AVR32_SPI_MR_LLB_MASK; // Local Loopback. - - return SPI_OK; -} - - -spi_status_t spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t *options) -{ - u_avr32_spi_mr_t u_avr32_spi_mr; - - if (options->modfdis > 1) { - return SPI_ERROR_ARGUMENT; - } - - // Reset. - spi->cr = AVR32_SPI_CR_SWRST_MASK; - - // Master Mode. - u_avr32_spi_mr.mr = spi->mr; - u_avr32_spi_mr.MR.mstr = 1; - u_avr32_spi_mr.MR.modfdis = options->modfdis; - u_avr32_spi_mr.MR.llb = 0; - u_avr32_spi_mr.MR.pcs = (1 << AVR32_SPI_MR_PCS_SIZE) - 1; - spi->mr = u_avr32_spi_mr.mr; - - return SPI_OK; -} - - -spi_status_t spi_selectionMode(volatile avr32_spi_t *spi, - unsigned char variable_ps, - unsigned char pcs_decode, - unsigned char delay) -{ - u_avr32_spi_mr_t u_avr32_spi_mr; - - if (variable_ps > 1 || - pcs_decode > 1) { - return SPI_ERROR_ARGUMENT; - } - - u_avr32_spi_mr.mr = spi->mr; - u_avr32_spi_mr.MR.ps = variable_ps; - u_avr32_spi_mr.MR.pcsdec = pcs_decode; - u_avr32_spi_mr.MR.dlybcs = delay; - spi->mr = u_avr32_spi_mr.mr; - - return SPI_OK; -} - - -spi_status_t spi_selectChip(volatile avr32_spi_t *spi, unsigned char chip) -{ -#ifdef FREERTOS_USED - while (pdFALSE == xSemaphoreTake(xSPIMutex, 20)); -#endif - - // Assert all lines; no peripheral is selected. - spi->mr |= AVR32_SPI_MR_PCS_MASK; - - if (spi->mr & AVR32_SPI_MR_PCSDEC_MASK) { - // The signal is decoded; allow up to 15 chips. - if (chip > 14) { - return SPI_ERROR_ARGUMENT; - } - - spi->mr &= ~AVR32_SPI_MR_PCS_MASK | (chip << AVR32_SPI_MR_PCS_OFFSET); - } else { - if (chip > 3) { - return SPI_ERROR_ARGUMENT; - } - - spi->mr &= ~(1 << (AVR32_SPI_MR_PCS_OFFSET + chip)); - } - - return SPI_OK; -} - - -spi_status_t spi_unselectChip(volatile avr32_spi_t *spi, unsigned char chip) -{ - unsigned int timeout = SPI_TIMEOUT; - - while (!(spi->sr & AVR32_SPI_SR_TXEMPTY_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - // Assert all lines; no peripheral is selected. - spi->mr |= AVR32_SPI_MR_PCS_MASK; - - // Last transfer, so deassert the current NPCS if CSAAT is set. - spi->cr = AVR32_SPI_CR_LASTXFER_MASK; - -#ifdef FREERTOS_USED - xSemaphoreGive(xSPIMutex); -#endif - - return SPI_OK; -} - - -spi_status_t spi_setupChipReg(volatile avr32_spi_t *spi, - const spi_options_t *options, - unsigned int pba_hz) -{ - u_avr32_spi_csr_t u_avr32_spi_csr; - - if (options->spi_mode > 3 || - options->stay_act > 1 || - options->bits < 8 || options->bits > 16) { - return SPI_ERROR_ARGUMENT; - } - - int baudDiv = getBaudDiv(options, pba_hz); - - if (baudDiv < 0) { - return SPI_ERROR_ARGUMENT; - } - - // Will use CSR0 offsets; these are the same for CSR0 to CSR3. - u_avr32_spi_csr.csr = 0; - u_avr32_spi_csr.CSR.cpol = options->spi_mode >> 1; - u_avr32_spi_csr.CSR.ncpha = (options->spi_mode & 0x1) ^ 0x1; - u_avr32_spi_csr.CSR.csaat = options->stay_act; - u_avr32_spi_csr.CSR.bits = options->bits - 8; - u_avr32_spi_csr.CSR.scbr = baudDiv; - u_avr32_spi_csr.CSR.dlybs = options->spck_delay; - u_avr32_spi_csr.CSR.dlybct = options->trans_delay; - - switch(options->reg) { - case 0: - spi->csr0 = u_avr32_spi_csr.csr; - break; - case 1: - spi->csr1 = u_avr32_spi_csr.csr; - break; - case 2: - spi->csr2 = u_avr32_spi_csr.csr; - break; - case 3: - spi->csr3 = u_avr32_spi_csr.csr; - break; - default: - return SPI_ERROR_ARGUMENT; - } - -#ifdef FREERTOS_USED - if (!xSPIMutex) - { - // Create the SPI mutex. - vSemaphoreCreateBinary(xSPIMutex); - if (!xSPIMutex) - { - while(1); - } - } -#endif - - return SPI_OK; -} - - -void spi_enable(volatile avr32_spi_t *spi) -{ - spi->cr = AVR32_SPI_CR_SPIEN_MASK; -} - - -void spi_disable(volatile avr32_spi_t *spi) -{ - spi->cr = AVR32_SPI_CR_SPIDIS_MASK; -} - - -int spi_is_enabled(volatile avr32_spi_t *spi) -{ - return (spi->sr & AVR32_SPI_SR_SPIENS_MASK) != 0; -} - - -inline unsigned char spi_writeRegisterEmptyCheck(volatile avr32_spi_t *spi) -{ - return ((spi->sr & AVR32_SPI_SR_TDRE_MASK) != 0); -} - - -inline spi_status_t spi_write(volatile avr32_spi_t *spi, unsigned short data) -{ - unsigned int timeout = SPI_TIMEOUT; - - while (!(spi->sr & AVR32_SPI_SR_TDRE_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - spi->tdr = data << AVR32_SPI_TDR_TD_OFFSET; - - return SPI_OK; -} - - -spi_status_t spi_variableSlaveWrite(volatile avr32_spi_t *spi, unsigned short data, - unsigned char pcs, unsigned char lastxfer) -{ - unsigned int timeout = SPI_TIMEOUT; - - if (pcs > 14 || lastxfer > 1) { - return SPI_ERROR_ARGUMENT; - } - - while (!(spi->sr & AVR32_SPI_SR_TDRE_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - spi->tdr = (data << AVR32_SPI_TDR_TD_OFFSET) | - (pcs << AVR32_SPI_TDR_PCS_OFFSET) | - (lastxfer << AVR32_SPI_TDR_LASTXFER_OFFSET); - - return SPI_OK; -} - - -inline unsigned char spi_writeEndCheck(volatile avr32_spi_t *spi) -{ - return ((spi->sr & AVR32_SPI_SR_TXEMPTY_MASK) != 0); -} - - -unsigned char spi_readRegisterFullCheck(volatile avr32_spi_t *spi) -{ - return ((spi->sr & AVR32_SPI_SR_RDRF_MASK) != 0); -} - - -inline spi_status_t spi_read(volatile avr32_spi_t *spi, unsigned short *data) -{ - unsigned int timeout = SPI_TIMEOUT; - - while ((spi->sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) != - (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - *data = spi->rdr >> AVR32_SPI_RDR_RD_OFFSET; - - return SPI_OK; -} - - -unsigned char spi_getStatus(volatile avr32_spi_t *spi) -{ - spi_status_t ret = SPI_OK; - unsigned long sr = spi->sr; - - if (sr & AVR32_SPI_SR_OVRES_MASK) { - ret = SPI_ERROR_OVERRUN; - } - - if (sr & AVR32_SPI_SR_MODF_MASK) { - ret += SPI_ERROR_MODE_FAULT; - } - - if (ret == (SPI_ERROR_OVERRUN + SPI_ERROR_MODE_FAULT)) { - return SPI_ERROR_OVERRUN_AND_MODE_FAULT; - } - else if (ret > 0) { - return ret; - } else { - return SPI_OK; - } -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h deleted file mode 100644 index 6dcc928484f..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h +++ /dev/null @@ -1,342 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SPI driver for AVR32 UC3. - * - * This file defines a useful set of functions for the SPI interface on AVR32 - * devices. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _SPI_H_ -#define _SPI_H_ - -#include - - -//! Time-out value (number of attempts). -#define SPI_TIMEOUT 10000 - - -//! Status codes used by the SPI driver. -typedef enum -{ - SPI_ERROR = -1, - SPI_OK = 0, - SPI_ERROR_TIMEOUT = 1, - SPI_ERROR_ARGUMENT, - SPI_ERROR_OVERRUN, - SPI_ERROR_MODE_FAULT, - SPI_ERROR_OVERRUN_AND_MODE_FAULT -} spi_status_t; - -//! Option structure for SPI channels. -typedef struct -{ - //! The SPI channel to set up. - unsigned char reg; - - //! Preferred baudrate for the SPI. - unsigned int baudrate; - - //! Number of bits in each character (8 to 16). - unsigned char bits; - - //! Delay before first clock pulse after selecting slave (in PBA clock periods). - unsigned char spck_delay; - - //! Delay between each transfer/character (in PBA clock periods). - unsigned char trans_delay; - - //! Sets this chip to stay active after last transfer to it. - unsigned char stay_act; - - //! Which SPI mode to use when transmitting. - unsigned char spi_mode; - - //! Disables the mode fault detection. - //! With this bit cleared, the SPI master mode will disable itself if another - //! master tries to address it. - unsigned char modfdis; -} spi_options_t; - - -/*! \brief Resets the SPI controller. - * - * \param spi Base address of the SPI instance. - */ -extern void spi_reset(volatile avr32_spi_t *spi); - -/*! \brief Initializes the SPI in slave mode. - * - * \param spi Base address of the SPI instance. - * \param bits Number of bits in each transmitted character (8 to 16). - * \param spi_mode Clock polarity and phase. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_initSlave(volatile avr32_spi_t *spi, - unsigned char bits, - unsigned char spi_mode); - -/*! \brief Sets up the SPI in a test mode where the transmitter is connected to - * the receiver (local loopback). - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval SPI_OK Success. - */ -extern spi_status_t spi_initTest(volatile avr32_spi_t *spi); - -/*! \brief Initializes the SPI in master mode. - * - * \param spi Base address of the SPI instance. - * \param options Pointer to a structure containing initialization options. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t *options); - -/*! \brief Sets up how and when the slave chips are selected (master mode only). - * - * \param spi Base address of the SPI instance. - * \param variable_ps Target slave is selected in transfer register for every - * character to transmit. - * \param pcs_decode The four chip select lines are decoded externally. Values - * 0 to 14 can be given to \ref spi_selectChip. - * \param delay Delay in PBA periods between chip selects. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_selectionMode(volatile avr32_spi_t *spi, - unsigned char variable_ps, - unsigned char pcs_decode, - unsigned char delay); - -/*! \brief Selects slave chip. - * - * \param spi Base address of the SPI instance. - * \param chip Slave chip number (normal: 0 to 3, extarnally decoded signal: 0 - * to 14). - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_selectChip(volatile avr32_spi_t *spi, unsigned char chip); - -/*! \brief Unselects slave chip. - * - * \param spi Base address of the SPI instance. - * \param chip Slave chip number (normal: 0 to 3, extarnally decoded signal: 0 - * to 14). - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * - * \note Will block program execution until time-out occurs if last transmission - * is not complete. Invoke \ref spi_writeEndCheck beforehand if needed. - */ -extern spi_status_t spi_unselectChip(volatile avr32_spi_t *spi, unsigned char chip); - -/*! \brief Sets options for a specific slave chip. - * - * The baudrate field has to be written before transfer in master mode. Four - * similar registers exist, one for each slave. When using encoded slave - * addressing, reg=0 sets options for slaves 0 to 3, reg=1 for slaves 4 to 7 and - * so on. - * - * \param spi Base address of the SPI instance. - * \param options Pointer to a structure containing initialization options for - * an SPI channel. - * \param pba_hz SPI module input clock frequency (PBA clock, Hz). - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_setupChipReg(volatile avr32_spi_t *spi, - const spi_options_t *options, - unsigned int pba_hz); - -/*! \brief Enables the SPI. - * - * \param spi Base address of the SPI instance. - */ -extern void spi_enable(volatile avr32_spi_t *spi); - -/*! \brief Disables the SPI. - * - * Ensures that nothing is transferred while setting up buffers. - * - * \param spi Base address of the SPI instance. - * - * \warning This may cause data loss if used on a slave SPI. - */ -extern void spi_disable(volatile avr32_spi_t *spi); - -/*! \brief Tests if the SPI is enabled. - * - * \param spi Base address of the SPI instance. - * - * \return \c 1 if the SPI is enabled, otherwise \c 0. - */ -extern int spi_is_enabled(volatile avr32_spi_t *spi); - -/*! \brief Checks if there is no data in the transmit register. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval 1 No data in TDR. - * \retval 0 Some data in TDR. - */ -extern unsigned char spi_writeRegisterEmptyCheck(volatile avr32_spi_t *spi); - -/*! \brief Writes one data word in master fixed peripheral select mode or in - * slave mode. - * - * \param spi Base address of the SPI instance. - * \param data The data word to write. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * - * \note Will block program execution until time-out occurs if transmitter is - * busy and transmit buffer is full. Invoke - * \ref spi_writeRegisterEmptyCheck beforehand if needed. - * - * \note Once the data has been written to the transmit buffer, the end of - * transmission is not waited for. Invoke \ref spi_writeEndCheck if - * needed. - */ -extern spi_status_t spi_write(volatile avr32_spi_t *spi, unsigned short data); - -/*! \brief Selects a slave in master variable peripheral select mode and writes - * one data word to it. - * - * \param spi Base address of the SPI instance. - * \param data The data word to write. - * \param pcs Slave selector (bit 0 -> nCS line 0, bit 1 -> nCS line 1, - * etc.). - * \param lastxfer Boolean indicating whether this is the last data word - * transfer. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - * - * \note Will block program execution until time-out occurs if transmitter is - * busy and transmit buffer is full. Invoke - * \ref spi_writeRegisterEmptyCheck beforehand if needed. - * - * \note Once the data has been written to the transmit buffer, the end of - * transmission is not waited for. Invoke \ref spi_writeEndCheck if - * needed. - */ -extern spi_status_t spi_variableSlaveWrite(volatile avr32_spi_t *spi, - unsigned short data, - unsigned char pcs, - unsigned char lastxfer); - -/*! \brief Checks if all transmissions are complete. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval 1 All transmissions complete. - * \retval 0 Transmissions not complete. - */ -extern unsigned char spi_writeEndCheck(volatile avr32_spi_t *spi); - -/*! \brief Checks if there is data in the receive register. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval 1 Some data in RDR. - * \retval 0 No data in RDR. - */ -extern unsigned char spi_readRegisterFullCheck(volatile avr32_spi_t *spi); - -/*! \brief Reads one data word in master mode or in slave mode. - * - * \param spi Base address of the SPI instance. - * \param data Pointer to the location where to store the received data word. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * - * \note Will block program execution until time-out occurs if no data is - * received or last transmission is not complete. Invoke - * \ref spi_writeEndCheck or \ref spi_readRegisterFullCheck beforehand if - * needed. - */ -extern spi_status_t spi_read(volatile avr32_spi_t *spi, unsigned short *data); - -/*! \brief Gets status information from the SPI. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_OVERRUN Overrun error. - * \retval SPI_ERROR_MODE_FAULT Mode fault (SPI addressed as slave - * while in master mode). - * \retval SPI_ERROR_OVERRUN_AND_MODE_FAULT Overrun error and mode fault. - */ -extern unsigned char spi_getStatus(volatile avr32_spi_t *spi); - - -#endif // _SPI_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c deleted file mode 100644 index 225642edef2..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.c +++ /dev/null @@ -1,314 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief TC driver for AVR32 UC3. - * - * AVR32 Timer/Counter driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a TC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include -#include "compiler.h" -#include "tc.h" - - -int tc_get_interrupt_settings(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return tc->channel[channel].imr; -} - - -int tc_configure_interrupts(volatile avr32_tc_t *tc, unsigned int channel, const tc_interrupt_t *bitfield) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // Enable the appropriate interrupts. - tc->channel[channel].ier = bitfield->etrgs << AVR32_TC_ETRGS_OFFSET | - bitfield->ldrbs << AVR32_TC_LDRBS_OFFSET | - bitfield->ldras << AVR32_TC_LDRAS_OFFSET | - bitfield->cpcs << AVR32_TC_CPCS_OFFSET | - bitfield->cpbs << AVR32_TC_CPBS_OFFSET | - bitfield->cpas << AVR32_TC_CPAS_OFFSET | - bitfield->lovrs << AVR32_TC_LOVRS_OFFSET | - bitfield->covfs << AVR32_TC_COVFS_OFFSET; - - // Disable the appropriate interrupts. - if (global_interrupt_enabled) Disable_global_interrupt(); - tc->channel[channel].idr = (~bitfield->etrgs & 1) << AVR32_TC_ETRGS_OFFSET | - (~bitfield->ldrbs & 1) << AVR32_TC_LDRBS_OFFSET | - (~bitfield->ldras & 1) << AVR32_TC_LDRAS_OFFSET | - (~bitfield->cpcs & 1) << AVR32_TC_CPCS_OFFSET | - (~bitfield->cpbs & 1) << AVR32_TC_CPBS_OFFSET | - (~bitfield->cpas & 1) << AVR32_TC_CPAS_OFFSET | - (~bitfield->lovrs & 1) << AVR32_TC_LOVRS_OFFSET | - (~bitfield->covfs & 1) << AVR32_TC_COVFS_OFFSET; - tc->channel[channel].sr; - if (global_interrupt_enabled) Enable_global_interrupt(); - - return 0; -} - - -int tc_select_external_clock(volatile avr32_tc_t *tc, unsigned int channel, unsigned int ext_clk_sig_src) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS || ext_clk_sig_src >= 1 << AVR32_TC_BMR_TC0XC0S_SIZE) - return TC_INVALID_ARGUMENT; - - // Clear bit-field and set the correct behavior. - tc->bmr = (tc->bmr & ~(AVR32_TC_BMR_TC0XC0S_MASK << (channel * AVR32_TC_BMR_TC0XC0S_SIZE))) | - (ext_clk_sig_src << (channel * AVR32_TC_BMR_TC0XC0S_SIZE)); - - return 0; -} - - -int tc_init_capture(volatile avr32_tc_t *tc, const tc_capture_opt_t *opt) -{ - // Check for valid input. - if (opt->channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // MEASURE SIGNALS: Capture operating mode. - tc->channel[opt->channel].cmr = opt->ldrb << AVR32_TC_LDRB_OFFSET | - opt->ldra << AVR32_TC_LDRA_OFFSET | - 0 << AVR32_TC_WAVE_OFFSET | - opt->cpctrg << AVR32_TC_CPCTRG_OFFSET | - opt->abetrg << AVR32_TC_ABETRG_OFFSET | - opt->etrgedg << AVR32_TC_ETRGEDG_OFFSET| - opt->ldbdis << AVR32_TC_LDBDIS_OFFSET | - opt->ldbstop << AVR32_TC_LDBSTOP_OFFSET | - opt->burst << AVR32_TC_BURST_OFFSET | - opt->clki << AVR32_TC_CLKI_OFFSET | - opt->tcclks << AVR32_TC_TCCLKS_OFFSET; - - return 0; -} - - -int tc_init_waveform(volatile avr32_tc_t *tc, const tc_waveform_opt_t *opt) -{ - // Check for valid input. - if (opt->channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // GENERATE SIGNALS: Waveform operating mode. - tc->channel[opt->channel].cmr = opt->bswtrg << AVR32_TC_BSWTRG_OFFSET | - opt->beevt << AVR32_TC_BEEVT_OFFSET | - opt->bcpc << AVR32_TC_BCPC_OFFSET | - opt->bcpb << AVR32_TC_BCPB_OFFSET | - opt->aswtrg << AVR32_TC_ASWTRG_OFFSET | - opt->aeevt << AVR32_TC_AEEVT_OFFSET | - opt->acpc << AVR32_TC_ACPC_OFFSET | - opt->acpa << AVR32_TC_ACPA_OFFSET | - 1 << AVR32_TC_WAVE_OFFSET | - opt->wavsel << AVR32_TC_WAVSEL_OFFSET | - opt->enetrg << AVR32_TC_ENETRG_OFFSET | - opt->eevt << AVR32_TC_EEVT_OFFSET | - opt->eevtedg << AVR32_TC_EEVTEDG_OFFSET | - opt->cpcdis << AVR32_TC_CPCDIS_OFFSET | - opt->cpcstop << AVR32_TC_CPCSTOP_OFFSET | - opt->burst << AVR32_TC_BURST_OFFSET | - opt->clki << AVR32_TC_CLKI_OFFSET | - opt->tcclks << AVR32_TC_TCCLKS_OFFSET; - - return 0; -} - - -int tc_start(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // Enable, reset and start the selected timer/counter channel. - tc->channel[channel].ccr = AVR32_TC_SWTRG_MASK | AVR32_TC_CLKEN_MASK; - - return 0; -} - - -int tc_stop(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // Disable the selected timer/counter channel. - tc->channel[channel].ccr = AVR32_TC_CLKDIS_MASK; - - return 0; -} - - -int tc_software_trigger(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // Reset the selected timer/counter channel. - tc->channel[channel].ccr = AVR32_TC_SWTRG_MASK; - - return 0; -} - - -void tc_sync_trigger(volatile avr32_tc_t *tc) -{ - // Reset all channels of the selected timer/counter. - tc->bcr = AVR32_TC_BCR_SYNC_MASK; -} - - -void tc_sync_start(volatile avr32_tc_t *tc) -{ - unsigned int i; - // Enable the clock for each channel. - for(i=0; ichannel[i].ccr = AVR32_TC_CLKEN_MASK; - - // Reset all channels of the selected timer/counter. - tc->bcr = AVR32_TC_BCR_SYNC_MASK; -} - - -int tc_read_sr(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return tc->channel[channel].sr; -} - - -int tc_read_tc(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return Rd_bitfield(tc->channel[channel].cv, AVR32_TC_CV_MASK); -} - - -int tc_read_ra(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return Rd_bitfield(tc->channel[channel].ra, AVR32_TC_RA_MASK); -} - - -int tc_read_rb(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return Rd_bitfield(tc->channel[channel].rb, AVR32_TC_RB_MASK); -} - - -int tc_read_rc(volatile avr32_tc_t *tc, unsigned int channel) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - return Rd_bitfield(tc->channel[channel].rc, AVR32_TC_RC_MASK); -} - - -int tc_write_ra(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // This function is only available in WAVEFORM mode. - if (Tst_bits(tc->channel[channel].cmr, AVR32_TC_WAVE_MASK)) - Wr_bitfield(tc->channel[channel].ra, AVR32_TC_RA_MASK, value); - - return value; -} - - -int tc_write_rb(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // This function is only available in WAVEFORM mode. - if (Tst_bits(tc->channel[channel].cmr, AVR32_TC_WAVE_MASK)) - Wr_bitfield(tc->channel[channel].rb, AVR32_TC_RB_MASK, value); - - return value; -} - - -int tc_write_rc(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value) -{ - // Check for valid input. - if (channel >= TC_NUMBER_OF_CHANNELS) - return TC_INVALID_ARGUMENT; - - // This function is only available in WAVEFORM mode. - if (Tst_bits(tc->channel[channel].cmr, AVR32_TC_WAVE_MASK)) - Wr_bitfield(tc->channel[channel].rc, AVR32_TC_RC_MASK, value); - - return value; -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.h deleted file mode 100644 index 45ef4f25a68..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/TC/tc.h +++ /dev/null @@ -1,591 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Timer/Counter driver for AVR32 UC3. - * - * AVR32 Timer/Counter driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a TC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _TC_H_ -#define _TC_H_ - -#include - - -//! TC driver functions return value in case of invalid argument(s). -#define TC_INVALID_ARGUMENT (-1) - -//! Number of timer/counter channels. -#define TC_NUMBER_OF_CHANNELS (sizeof(((avr32_tc_t *)0)->channel) / sizeof(avr32_tc_channel_t)) - -/*! \name External Clock Signal 0 Selection - */ -//! @{ -#define TC_CH0_EXT_CLK0_SRC_TCLK0 AVR32_TC_TC0XC0S_TCLK0 -#define TC_CH0_EXT_CLK0_SRC_NO_CLK AVR32_TC_TC0XC0S_NO_CLK -#define TC_CH0_EXT_CLK0_SRC_TIOA1 AVR32_TC_TC0XC0S_TIOA1 -#define TC_CH0_EXT_CLK0_SRC_TIOA2 AVR32_TC_TC0XC0S_TIOA2 -//! @} - -/*! \name External Clock Signal 1 Selection - */ -//! @{ -#define TC_CH1_EXT_CLK1_SRC_TCLK1 AVR32_TC_TC1XC1S_TCLK1 -#define TC_CH1_EXT_CLK1_SRC_NO_CLK AVR32_TC_TC1XC1S_NO_CLK -#define TC_CH1_EXT_CLK1_SRC_TIOA0 AVR32_TC_TC1XC1S_TIOA0 -#define TC_CH1_EXT_CLK1_SRC_TIOA2 AVR32_TC_TC1XC1S_TIOA2 -//! @} - -/*! \name External Clock Signal 2 Selection - */ -//! @{ -#define TC_CH2_EXT_CLK2_SRC_TCLK2 AVR32_TC_TC2XC2S_TCLK2 -#define TC_CH2_EXT_CLK2_SRC_NO_CLK AVR32_TC_TC2XC2S_NO_CLK -#define TC_CH2_EXT_CLK2_SRC_TIOA0 AVR32_TC_TC2XC2S_TIOA0 -#define TC_CH2_EXT_CLK2_SRC_TIOA1 AVR32_TC_TC2XC2S_TIOA1 -//! @} - -/*! \name Event/Trigger Actions on Output - */ -//! @{ -#define TC_EVT_EFFECT_NOOP AVR32_TC_NONE -#define TC_EVT_EFFECT_SET AVR32_TC_SET -#define TC_EVT_EFFECT_CLEAR AVR32_TC_CLEAR -#define TC_EVT_EFFECT_TOGGLE AVR32_TC_TOGGLE -//! @} - -/*! \name RC Compare Trigger Enable - */ -//! @{ -#define TC_NO_TRIGGER_COMPARE_RC 0 -#define TC_TRIGGER_COMPARE_RC 1 -//! @} - -/*! \name Waveform Selection - */ -//! @{ -#define TC_WAVEFORM_SEL_UP_MODE AVR32_TC_WAVSEL_UP_NO_AUTO -#define TC_WAVEFORM_SEL_UP_MODE_RC_TRIGGER AVR32_TC_WAVSEL_UP_AUTO -#define TC_WAVEFORM_SEL_UPDOWN_MODE AVR32_TC_WAVSEL_UPDOWN_NO_AUTO -#define TC_WAVEFORM_SEL_UPDOWN_MODE_RC_TRIGGER AVR32_TC_WAVSEL_UPDOWN_AUTO -//! @} - -/*! \name TIOA or TIOB External Trigger Selection - */ -//! @{ -#define TC_EXT_TRIG_SEL_TIOA 1 -#define TC_EXT_TRIG_SEL_TIOB 0 -//! @} - -/*! \name External Event Selection - */ -//! @{ -#define TC_EXT_EVENT_SEL_TIOB_INPUT AVR32_TC_EEVT_TIOB_INPUT -#define TC_EXT_EVENT_SEL_XC0_OUTPUT AVR32_TC_EEVT_XC0_OUTPUT -#define TC_EXT_EVENT_SEL_XC1_OUTPUT AVR32_TC_EEVT_XC1_OUTPUT -#define TC_EXT_EVENT_SEL_XC2_OUTPUT AVR32_TC_EEVT_XC2_OUTPUT -//! @} - -/*! \name Edge Selection - */ -//! @{ -#define TC_SEL_NO_EDGE AVR32_TC_EEVTEDG_NO_EDGE -#define TC_SEL_RISING_EDGE AVR32_TC_EEVTEDG_POS_EDGE -#define TC_SEL_FALLING_EDGE AVR32_TC_EEVTEDG_NEG_EDGE -#define TC_SEL_EACH_EDGE AVR32_TC_EEVTEDG_BOTH_EDGES -//! @} - -/*! \name Burst Signal Selection - */ -//! @{ -#define TC_BURST_NOT_GATED AVR32_TC_BURST_NOT_GATED -#define TC_BURST_CLK_AND_XC0 AVR32_TC_BURST_CLK_AND_XC0 -#define TC_BURST_CLK_AND_XC1 AVR32_TC_BURST_CLK_AND_XC1 -#define TC_BURST_CLK_AND_XC2 AVR32_TC_BURST_CLK_AND_XC2 -//! @} - -/*! \name Clock Invert - */ -//! @{ -#define TC_CLOCK_RISING_EDGE 0 -#define TC_CLOCK_FALLING_EDGE 1 -//! @} - -/*! \name Clock Selection - */ -//! @{ -#define TC_CLOCK_SOURCE_TC1 AVR32_TC_TCCLKS_TIMER_CLOCK1 -#define TC_CLOCK_SOURCE_TC2 AVR32_TC_TCCLKS_TIMER_CLOCK2 -#define TC_CLOCK_SOURCE_TC3 AVR32_TC_TCCLKS_TIMER_CLOCK3 -#define TC_CLOCK_SOURCE_TC4 AVR32_TC_TCCLKS_TIMER_CLOCK4 -#define TC_CLOCK_SOURCE_TC5 AVR32_TC_TCCLKS_TIMER_CLOCK5 -#define TC_CLOCK_SOURCE_XC0 AVR32_TC_TCCLKS_XC0 -#define TC_CLOCK_SOURCE_XC1 AVR32_TC_TCCLKS_XC1 -#define TC_CLOCK_SOURCE_XC2 AVR32_TC_TCCLKS_XC2 -//! @} - - -//! Timer/counter interrupts. -typedef struct -{ - unsigned int :24; - - //! External trigger interrupt. - unsigned int etrgs : 1; - - //! RB load interrupt. - unsigned int ldrbs : 1; - - //! RA load interrupt. - unsigned int ldras : 1; - - //! RC compare interrupt. - unsigned int cpcs : 1; - - //! RB compare interrupt. - unsigned int cpbs : 1; - - //! RA compare interrupt. - unsigned int cpas : 1; - - //! Load overrun interrupt. - unsigned int lovrs : 1; - - //! Counter overflow interrupt. - unsigned int covfs : 1; -} tc_interrupt_t; - -//! Parameters when initializing a timer/counter in capture mode. -typedef struct -{ - //! Channel to initialize. - unsigned int channel ; - - unsigned int :12; - - //! RB loading selection:\n - //! - \ref TC_SEL_NO_EDGE;\n - //! - \ref TC_SEL_RISING_EDGE;\n - //! - \ref TC_SEL_FALLING_EDGE;\n - //! - \ref TC_SEL_EACH_EDGE. - unsigned int ldrb : 2; - - //! RA loading selection:\n - //! - \ref TC_SEL_NO_EDGE;\n - //! - \ref TC_SEL_RISING_EDGE;\n - //! - \ref TC_SEL_FALLING_EDGE;\n - //! - \ref TC_SEL_EACH_EDGE. - unsigned int ldra : 2; - - unsigned int : 1; - - //! RC compare trigger enable:\n - //! - \ref TC_NO_TRIGGER_COMPARE_RC;\n - //! - \ref TC_TRIGGER_COMPARE_RC. - unsigned int cpctrg : 1; - - unsigned int : 3; - - //! TIOA or TIOB external trigger selection:\n - //! - \ref TC_EXT_TRIG_SEL_TIOA;\n - //! - \ref TC_EXT_TRIG_SEL_TIOB. - unsigned int abetrg : 1; - - //! External trigger edge selection:\n - //! - \ref TC_SEL_NO_EDGE;\n - //! - \ref TC_SEL_RISING_EDGE;\n - //! - \ref TC_SEL_FALLING_EDGE;\n - //! - \ref TC_SEL_EACH_EDGE. - unsigned int etrgedg : 2; - - //! Counter clock disable with RB loading:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int ldbdis : 1; - - //! Counter clock stopped with RB loading:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int ldbstop : 1; - - //! Burst signal selection:\n - //! - \ref TC_BURST_NOT_GATED;\n - //! - \ref TC_BURST_CLK_AND_XC0;\n - //! - \ref TC_BURST_CLK_AND_XC1;\n - //! - \ref TC_BURST_CLK_AND_XC2. - unsigned int burst : 2; - - //! Clock invert:\n - //! - \ref TC_CLOCK_RISING_EDGE;\n - //! - \ref TC_CLOCK_FALLING_EDGE. - unsigned int clki : 1; - - //! Clock selection:\n - //! - \ref TC_CLOCK_SOURCE_TC1;\n - //! - \ref TC_CLOCK_SOURCE_TC2;\n - //! - \ref TC_CLOCK_SOURCE_TC3;\n - //! - \ref TC_CLOCK_SOURCE_TC4;\n - //! - \ref TC_CLOCK_SOURCE_TC5;\n - //! - \ref TC_CLOCK_SOURCE_XC0;\n - //! - \ref TC_CLOCK_SOURCE_XC1;\n - //! - \ref TC_CLOCK_SOURCE_XC2. - unsigned int tcclks : 3; -} tc_capture_opt_t; - -//! Parameters when initializing a timer/counter in waveform mode. -typedef struct -{ - //! Channel to initialize. - unsigned int channel ; - - //! Software trigger effect on TIOB:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int bswtrg : 2; - - //! External event effect on TIOB:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int beevt : 2; - - //! RC compare effect on TIOB:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int bcpc : 2; - - //! RB compare effect on TIOB:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int bcpb : 2; - - //! Software trigger effect on TIOA:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int aswtrg : 2; - - //! External event effect on TIOA:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int aeevt : 2; - - //! RC compare effect on TIOA:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int acpc : 2; - - //! RA compare effect on TIOA:\n - //! - \ref TC_EVT_EFFECT_NOOP;\n - //! - \ref TC_EVT_EFFECT_SET;\n - //! - \ref TC_EVT_EFFECT_CLEAR;\n - //! - \ref TC_EVT_EFFECT_TOGGLE. - unsigned int acpa : 2; - - unsigned int : 1; - - //! Waveform selection:\n - //! - \ref TC_WAVEFORM_SEL_UP_MODE;\n - //! - \ref TC_WAVEFORM_SEL_UP_MODE_RC_TRIGGER;\n - //! - \ref TC_WAVEFORM_SEL_UPDOWN_MODE;\n - //! - \ref TC_WAVEFORM_SEL_UPDOWN_MODE_RC_TRIGGER. - unsigned int wavsel : 2; - - //! External event trigger enable:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int enetrg : 1; - - //! External event selection:\n - //! - \ref TC_EXT_EVENT_SEL_TIOB_INPUT;\n - //! - \ref TC_EXT_EVENT_SEL_XC0_OUTPUT;\n - //! - \ref TC_EXT_EVENT_SEL_XC1_OUTPUT;\n - //! - \ref TC_EXT_EVENT_SEL_XC2_OUTPUT. - unsigned int eevt : 2; - - //! External event edge selection:\n - //! - \ref TC_SEL_NO_EDGE;\n - //! - \ref TC_SEL_RISING_EDGE;\n - //! - \ref TC_SEL_FALLING_EDGE;\n - //! - \ref TC_SEL_EACH_EDGE. - unsigned int eevtedg : 2; - - //! Counter clock disable with RC compare:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int cpcdis : 1; - - //! Counter clock stopped with RC compare:\n - //! - \c FALSE;\n - //! - \c TRUE. - unsigned int cpcstop : 1; - - //! Burst signal selection:\n - //! - \ref TC_BURST_NOT_GATED;\n - //! - \ref TC_BURST_CLK_AND_XC0;\n - //! - \ref TC_BURST_CLK_AND_XC1;\n - //! - \ref TC_BURST_CLK_AND_XC2. - unsigned int burst : 2; - - //! Clock invert:\n - //! - \ref TC_CLOCK_RISING_EDGE;\n - //! - \ref TC_CLOCK_FALLING_EDGE. - unsigned int clki : 1; - - //! Clock selection:\n - //! - \ref TC_CLOCK_SOURCE_TC1;\n - //! - \ref TC_CLOCK_SOURCE_TC2;\n - //! - \ref TC_CLOCK_SOURCE_TC3;\n - //! - \ref TC_CLOCK_SOURCE_TC4;\n - //! - \ref TC_CLOCK_SOURCE_TC5;\n - //! - \ref TC_CLOCK_SOURCE_XC0;\n - //! - \ref TC_CLOCK_SOURCE_XC1;\n - //! - \ref TC_CLOCK_SOURCE_XC2. - unsigned int tcclks : 3; -} tc_waveform_opt_t; - - -/*! \brief Reads timer/counter interrupt settings. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 The interrupt enable configuration organized according to \ref tc_interrupt_t. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_get_interrupt_settings(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Enables various timer/counter interrupts. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param bitfield The interrupt enable configuration. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_configure_interrupts(volatile avr32_tc_t *tc, unsigned int channel, const tc_interrupt_t *bitfield); - -/*! \brief Selects which external clock to use and how to configure it. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param ext_clk_sig_src External clock signal selection: - * \arg \c TC_CH0_EXT_CLK0_SRC_TCLK0; - * \arg \c TC_CH0_EXT_CLK0_SRC_NO_CLK; - * \arg \c TC_CH0_EXT_CLK0_SRC_TIOA1; - * \arg \c TC_CH0_EXT_CLK0_SRC_TIOA2; - * \arg \c TC_CH1_EXT_CLK1_SRC_TCLK1; - * \arg \c TC_CH1_EXT_CLK1_SRC_NO_CLK; - * \arg \c TC_CH1_EXT_CLK1_SRC_TIOA0; - * \arg \c TC_CH1_EXT_CLK1_SRC_TIOA2; - * \arg \c TC_CH2_EXT_CLK2_SRC_TCLK2; - * \arg \c TC_CH2_EXT_CLK2_SRC_NO_CLK; - * \arg \c TC_CH2_EXT_CLK2_SRC_TIOA0; - * \arg \c TC_CH2_EXT_CLK2_SRC_TIOA1. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_select_external_clock(volatile avr32_tc_t *tc, unsigned int channel, unsigned int ext_clk_sig_src); - -/*! \brief Sets options for timer/counter capture initialization. - * - * \param tc Pointer to the TC instance to access. - * \param opt Options for capture mode. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_init_capture(volatile avr32_tc_t *tc, const tc_capture_opt_t *opt); - -/*! \brief Sets options for timer/counter waveform initialization. - * - * \param tc Pointer to the TC instance to access. - * \param opt Options for waveform generation. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_init_waveform(volatile avr32_tc_t *tc, const tc_waveform_opt_t *opt); - -/*! \brief Starts a timer/counter. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_start(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Stops a timer/counter. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_stop(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Performs a software trigger: the counter is reset and the clock is started. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval 0 Success. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_software_trigger(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Asserts a SYNC signal to generate a software trigger and reset all channels. - * - * \param tc Pointer to the TC instance to access. - */ -extern void tc_sync_trigger(volatile avr32_tc_t *tc); - -/*! \brief Start all TC channels simultaneously. - * - * \param tc Pointer to the TC instance to access. - */ -extern void tc_sync_start(volatile avr32_tc_t *tc); - -/*! \brief Reads the status register. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 Status register value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_sr(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Reads the channel's TC counter and returns the value. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 TC counter value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_tc(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Reads the channel's RA register and returns the value. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 RA register value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_ra(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Reads the channel's RB register and returns the value. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 RB register value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_rb(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Reads the channel's RC register and returns the value. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * - * \retval >=0 RC register value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_read_rc(volatile avr32_tc_t *tc, unsigned int channel); - -/*! \brief Writes a value to the channel's RA register. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param value Value to write to the RA register. - * - * \retval >=0 Written value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_write_ra(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value); - -/*! \brief Writes a value to the channel's RB register. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param value Value to write to the RB register. - * - * \retval >=0 Written value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_write_rb(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value); - -/*! \brief Writes a value to the channel's RC register. - * - * \param tc Pointer to the TC instance to access. - * \param channel The TC instance channel to access. - * \param value Value to write to the RC register. - * - * \retval >=0 Written value. - * \retval TC_INVALID_ARGUMENT Invalid argument(s). - */ -extern int tc_write_rc(volatile avr32_tc_t *tc, unsigned int channel, unsigned short value); - - -#endif // _TC_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c deleted file mode 100644 index b95882a7516..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c +++ /dev/null @@ -1,914 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief USART driver for AVR32 UC3. - * - * This file contains basic functions for the AVR32 USART, with support for all - * modes, settings and clock speeds. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "compiler.h" -#include "usart.h" - - -//------------------------------------------------------------------------------ -/*! \name Private Functions - */ -//! @{ - - -/*! \brief Checks if the USART is in multidrop mode. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART is in multidrop mode, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -static __inline__ int usart_mode_is_multidrop(volatile avr32_usart_t *usart) -{ - return ((usart->mr >> AVR32_USART_MR_PAR_OFFSET) & AVR32_USART_MR_PAR_MULTI) == AVR32_USART_MR_PAR_MULTI; -} - - -/*! \brief Calculates a clock divider (\e CD) and a fractional part (\e FP) for - * the USART asynchronous modes to generate a baud rate as close as - * possible to the baud rate set point. - * - * Baud rate calculation: - * \f$ Baudrate = \frac{SelectedClock}{Over \times (CD + \frac{FP}{8})} \f$, \e Over being 16 or 8. - * The maximal oversampling is selected if it allows to generate a baud rate close to the set point. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Baud rate successfully initialized. - * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency. - */ -static int usart_set_async_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz) -{ - unsigned int over = (pba_hz >= 16 * baudrate) ? 16 : 8; - unsigned int cd_fp = ((1 << AVR32_USART_BRGR_FP_SIZE) * pba_hz + (over * baudrate) / 2) / (over * baudrate); - unsigned int cd = cd_fp >> AVR32_USART_BRGR_FP_SIZE; - unsigned int fp = cd_fp & ((1 << AVR32_USART_BRGR_FP_SIZE) - 1); - - if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~(AVR32_USART_MR_USCLKS_MASK | - AVR32_USART_MR_SYNC_MASK | - AVR32_USART_MR_OVER_MASK)) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET | - ((over == 16) ? AVR32_USART_MR_OVER_X16 : AVR32_USART_MR_OVER_X8) << AVR32_USART_MR_OVER_OFFSET; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET | - fp << AVR32_USART_BRGR_FP_OFFSET; - - return USART_SUCCESS; -} - - -/*! \brief Calculates a clock divider (\e CD) for the USART synchronous master - * modes to generate a baud rate as close as possible to the baud rate - * set point. - * - * Baud rate calculation: - * \f$ Baudrate = \frac{SelectedClock}{CD} \f$. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Baud rate successfully initialized. - * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency. - */ -static int usart_set_sync_master_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz) -{ - unsigned int cd = (pba_hz + baudrate / 2) / baudrate; - - if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET | - AVR32_USART_MR_SYNC_MASK; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET; - - return USART_SUCCESS; -} - - -/*! \brief Selects the SCK pin as the source of baud rate for the USART - * synchronous slave modes. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Baud rate successfully initialized. - */ -static int usart_set_sync_slave_baudrate(volatile avr32_usart_t *usart) -{ - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_SCK << AVR32_USART_MR_USCLKS_OFFSET | - AVR32_USART_MR_SYNC_MASK; - - return USART_SUCCESS; -} - - -/*! \brief Calculates a clock divider (\e CD) for the USART ISO7816 mode to - * generate an ISO7816 clock as close as possible to the clock set point. - * - * ISO7816 clock calculation: - * \f$ Clock = \frac{SelectedClock}{CD} \f$. - * - * \param usart Base address of the USART instance. - * \param clock ISO7816 clock set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS ISO7816 clock successfully initialized. - * \retval USART_INVALID_INPUT ISO7816 clock set point is out of range for the given input clock frequency. - */ -static int usart_set_iso7816_clock(volatile avr32_usart_t *usart, unsigned int clock, unsigned long pba_hz) -{ - unsigned int cd = (pba_hz + clock / 2) / clock; - - if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~(AVR32_USART_MR_USCLKS_MASK | - AVR32_USART_MR_SYNC_MASK | - AVR32_USART_MR_OVER_MASK)) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET | - AVR32_USART_MR_OVER_X16 << AVR32_USART_MR_OVER_OFFSET; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET; - - return USART_SUCCESS; -} - - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - - -/*! \brief Calculates a clock divider (\e CD) for the USART SPI master mode to - * generate a baud rate as close as possible to the baud rate set point. - * - * Baud rate calculation: - * \f$ Baudrate = \frac{SelectedClock}{CD} \f$. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Baud rate successfully initialized. - * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency. - */ -static int usart_set_spi_master_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz) -{ - unsigned int cd = (pba_hz + baudrate / 2) / baudrate; - - if (cd < 4 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET; - - return USART_SUCCESS; -} - - -/*! \brief Selects the SCK pin as the source of baud rate for the USART SPI - * slave mode. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Baud rate successfully initialized. - */ -static int usart_set_spi_slave_baudrate(volatile avr32_usart_t *usart) -{ - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_SCK << AVR32_USART_MR_USCLKS_OFFSET; - - return USART_SUCCESS; -} - - -#endif // USART rev. >= 4.0.0 - - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name Initialization Functions - */ -//! @{ - - -void usart_reset(volatile avr32_usart_t *usart) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - // Disable all USART interrupts. - // Interrupts needed should be set explicitly on every reset. - if (global_interrupt_enabled) Disable_global_interrupt(); - usart->idr = 0xFFFFFFFF; - usart->csr; - if (global_interrupt_enabled) Enable_global_interrupt(); - - // Reset mode and other registers that could cause unpredictable behavior after reset. - usart->mr = 0; - usart->rtor = 0; - usart->ttgr = 0; - - // Shutdown TX and RX (will be re-enabled when setup has successfully completed), - // reset status bits and turn off DTR and RTS. - usart->cr = AVR32_USART_CR_RSTRX_MASK | - AVR32_USART_CR_RSTTX_MASK | - AVR32_USART_CR_RSTSTA_MASK | - AVR32_USART_CR_RSTIT_MASK | - AVR32_USART_CR_RSTNACK_MASK | -#ifndef AVR32_USART_440_H_INCLUDED -// Note: Modem Signal Management DTR-DSR-DCD-RI are not included in USART rev.440. - AVR32_USART_CR_DTRDIS_MASK | -#endif - AVR32_USART_CR_RTSDIS_MASK; -} - - -int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_async_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1, 1.5 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET; - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_rs232_tx_only(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits == 1 || opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_sync_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET; - - // Setup complete; enable communication. - // Enable only output as input is not possible in synchronous mode without - // transferring clock. - usart->cr = AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set hardware handshaking mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_HARDWARE << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set modem mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_MODEM << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_sync_master(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits == 1 || opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_sync_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_CLKO_MASK; - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_sync_slave(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits == 1 || opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_sync_slave_baudrate(usart) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET; - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set RS485 mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_RS485 << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt, - long pba_hz, unsigned char irda_filter) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set IrDA filter. - usart->ifr = irda_filter; - - // Set IrDA mode and activate filtering of input. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MODE_IRDA << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_FILTER_MASK; - - return USART_SUCCESS; -} - - -int usart_init_iso7816(volatile avr32_usart_t *usart, const usart_iso7816_options_t *opt, int t, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->paritytype > 1) - return USART_INVALID_INPUT; - - if (t == 0) - { - // Set USART mode to ISO7816, T=0. - // The T=0 protocol always uses 2 stop bits. - usart->mr = AVR32_USART_MR_MODE_ISO7816_T0 << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET | - opt->bit_order << AVR32_USART_MR_MSBF_OFFSET; // Allow MSBF in T=0. - } - else if (t == 1) - { - // Only LSB first in the T=1 protocol. - // max_iterations field is only used in T=0 mode. - if (opt->bit_order != 0 || - opt->max_iterations != 0) - return USART_INVALID_INPUT; - - // Set USART mode to ISO7816, T=1. - // The T=1 protocol always uses 1 stop bit. - usart->mr = AVR32_USART_MR_MODE_ISO7816_T1 << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_NBSTOP_1 << AVR32_USART_MR_NBSTOP_OFFSET; - } - else - return USART_INVALID_INPUT; - - if (usart_set_iso7816_clock(usart, opt->iso7816_hz, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set FIDI register: bit rate = selected clock/FI_DI_ratio/16. - usart->fidi = opt->fidi_ratio; - - // Set ISO7816 spesific options in the MODE register. - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - AVR32_USART_MR_CLKO_MASK | // Enable clock output. - opt->inhibit_nack << AVR32_USART_MR_INACK_OFFSET | - opt->dis_suc_nack << AVR32_USART_MR_DSNACK_OFFSET | - opt->max_iterations << AVR32_USART_MR_MAX_ITERATION_OFFSET; - - // Setup complete; enable the receiver by default. - usart_iso7816_enable_receiver(usart); - - return USART_SUCCESS; -} - - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - - -int usart_init_lin_master(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (usart_set_async_baudrate(usart, baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - usart->mr |= AVR32_USART_MR_MODE_LIN_MASTER << AVR32_USART_MR_MODE_OFFSET; // LIN master mode. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_lin_slave(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (usart_set_async_baudrate(usart, baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - usart->mr |= AVR32_USART_MR_MODE_LIN_SLAVE << AVR32_USART_MR_MODE_OFFSET; // LIN slave mode. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_spi_master(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->spimode > 3 || - opt->channelmode > 3 || - usart_set_spi_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= AVR32_USART_MR_MODE_SPI_MASTER << AVR32_USART_MR_MODE_OFFSET | // SPI master mode. - ((opt->spimode & 0x1) ^ 0x1) << AVR32_USART_MR_SYNC_OFFSET | // SPI clock phase. - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET | // Channel mode. - (opt->spimode >> 1) << AVR32_USART_MR_MSBF_OFFSET | // SPI clock polarity. - AVR32_USART_MR_CLKO_MASK; // Drive SCK pin. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_spi_slave(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->spimode > 3 || - opt->channelmode > 3 || - usart_set_spi_slave_baudrate(usart) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= AVR32_USART_MR_MODE_SPI_SLAVE << AVR32_USART_MR_MODE_OFFSET | // SPI slave mode. - ((opt->spimode & 0x1) ^ 0x1) << AVR32_USART_MR_SYNC_OFFSET | // SPI clock phase. - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET | // Channel mode. - (opt->spimode >> 1) << AVR32_USART_MR_MSBF_OFFSET; // SPI clock polarity. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -#endif // USART rev. >= 4.0.0 - - -//! @} - - -//------------------------------------------------------------------------------ -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - - -/*! \name SPI Control Functions - */ -//! @{ - - -int usart_spi_selectChip(volatile avr32_usart_t *usart) -{ - // Force the SPI chip select. - usart->cr = AVR32_USART_CR_RTSEN_MASK; - - return USART_SUCCESS; -} - - -int usart_spi_unselectChip(volatile avr32_usart_t *usart) -{ - int timeout = USART_DEFAULT_TIMEOUT; - - do - { - if (!timeout--) return USART_FAILURE; - } while (!usart_tx_empty(usart)); - - // Release the SPI chip select. - usart->cr = AVR32_USART_CR_RTSDIS_MASK; - - return USART_SUCCESS; -} - - -//! @} - - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -/*! \name Transmit/Receive Functions - */ -//! @{ - - -int usart_send_address(volatile avr32_usart_t *usart, int address) -{ - // Check if USART is in multidrop / RS485 mode. - if (!usart_mode_is_multidrop(usart)) return USART_MODE_FAULT; - - // Prepare to send an address. - usart->cr = AVR32_USART_CR_SENDA_MASK; - - // Write the address to TX. - usart_bw_write_char(usart, address); - - return USART_SUCCESS; -} - - -int usart_write_char(volatile avr32_usart_t *usart, int c) -{ - if (usart_tx_ready(usart)) - { - usart->thr = (c << AVR32_USART_THR_TXCHR_OFFSET) & AVR32_USART_THR_TXCHR_MASK; - return USART_SUCCESS; - } - else - return USART_TX_BUSY; -} - - -int usart_putchar(volatile avr32_usart_t *usart, int c) -{ - int timeout = USART_DEFAULT_TIMEOUT; - - if (c == '\n') - { - do - { - if (!timeout--) return USART_FAILURE; - } while (usart_write_char(usart, '\r') != USART_SUCCESS); - - timeout = USART_DEFAULT_TIMEOUT; - } - - do - { - if (!timeout--) return USART_FAILURE; - } while (usart_write_char(usart, c) != USART_SUCCESS); - - return USART_SUCCESS; -} - - -int usart_read_char(volatile avr32_usart_t *usart, int *c) -{ - // Check for errors: frame, parity and overrun. In RS485 mode, a parity error - // would mean that an address char has been received. - if (usart->csr & (AVR32_USART_CSR_OVRE_MASK | - AVR32_USART_CSR_FRAME_MASK | - AVR32_USART_CSR_PARE_MASK)) - return USART_RX_ERROR; - - // No error; if we really did receive a char, read it and return SUCCESS. - if (usart_test_hit(usart)) - { - *c = (usart->rhr & AVR32_USART_RHR_RXCHR_MASK) >> AVR32_USART_RHR_RXCHR_OFFSET; - return USART_SUCCESS; - } - else - return USART_RX_EMPTY; -} - - -int usart_getchar(volatile avr32_usart_t *usart) -{ - int c, ret; - - while ((ret = usart_read_char(usart, &c)) == USART_RX_EMPTY); - - if (ret == USART_RX_ERROR) - return USART_FAILURE; - - return c; -} - - -void usart_write_line(volatile avr32_usart_t *usart, const char *string) -{ - while (*string != '\0') - usart_putchar(usart, *string++); -} - - -int usart_get_echo_line(volatile avr32_usart_t *usart) -{ - int rx_char; - int retval = USART_SUCCESS; - - while (1) - { - rx_char = usart_getchar(usart); - if (rx_char == USART_FAILURE) - { - usart_write_line(usart, "Error!!!\n"); - retval = USART_FAILURE; - break; - } - if (rx_char == '\x03') - { - retval = USART_FAILURE; - break; - } - usart_putchar(usart, rx_char); - if (rx_char == '\r') - { - usart_putchar(usart, '\n'); - break; - } - } - - return retval; -} - - -//! @} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h deleted file mode 100644 index bc1c100f8ae..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h +++ /dev/null @@ -1,889 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief USART driver for AVR32 UC3. - * - * This file contains basic functions for the AVR32 USART, with support for all - * modes, settings and clock speeds. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _USART_H_ -#define _USART_H_ - -#include -#include "compiler.h" - - -/*! \name Return Values - */ -//! @{ -#define USART_SUCCESS 0 //!< Successful completion. -#define USART_FAILURE -1 //!< Failure because of some unspecified reason. -#define USART_INVALID_INPUT 1 //!< Input value out of range. -#define USART_INVALID_ARGUMENT -1 //!< Argument value out of range. -#define USART_TX_BUSY 2 //!< Transmitter was busy. -#define USART_RX_EMPTY 3 //!< Nothing was received. -#define USART_RX_ERROR 4 //!< Transmission error occurred. -#define USART_MODE_FAULT 5 //!< USART not in the appropriate mode. -//! @} - -//! Default time-out value (number of attempts). -#define USART_DEFAULT_TIMEOUT 10000 - -/*! \name Parity Settings - */ -//! @{ -#define USART_EVEN_PARITY AVR32_USART_MR_PAR_EVEN //!< Use even parity on character transmission. -#define USART_ODD_PARITY AVR32_USART_MR_PAR_ODD //!< Use odd parity on character transmission. -#define USART_SPACE_PARITY AVR32_USART_MR_PAR_SPACE //!< Use a space as parity bit. -#define USART_MARK_PARITY AVR32_USART_MR_PAR_MARK //!< Use a mark as parity bit. -#define USART_NO_PARITY AVR32_USART_MR_PAR_NONE //!< Don't use a parity bit. -#define USART_MULTIDROP_PARITY AVR32_USART_MR_PAR_MULTI //!< Parity bit is used to flag address characters. -//! @} - -/*! \name Stop Bits Settings - */ -//! @{ -#define USART_1_STOPBIT AVR32_USART_MR_NBSTOP_1 //!< Use 1 stop bit. -#define USART_1_5_STOPBITS AVR32_USART_MR_NBSTOP_1_5 //!< Use 1.5 stop bits. -#define USART_2_STOPBITS AVR32_USART_MR_NBSTOP_2 //!< Use 2 stop bits (for more, just give the number of bits). -//! @} - -/*! \name Channel Modes - */ -//! @{ -#define USART_NORMAL_CHMODE AVR32_USART_MR_CHMODE_NORMAL //!< Normal communication. -#define USART_AUTO_ECHO AVR32_USART_MR_CHMODE_ECHO //!< Echo data. -#define USART_LOCAL_LOOPBACK AVR32_USART_MR_CHMODE_LOCAL_LOOP //!< Local loopback. -#define USART_REMOTE_LOOPBACK AVR32_USART_MR_CHMODE_REMOTE_LOOP //!< Remote loopback. -//! @} - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \name LIN Node Actions - */ -//! @{ -#define USART_LIN_PUBLISH_ACTION AVR32_USART_LINMR_NACT_PUBLISH //!< The USART transmits the response. -#define USART_LIN_SUBSCRIBE_ACTION AVR32_USART_LINMR_NACT_SUBSCRIBE //!< The USART receives the response. -#define USART_LIN_IGNORE_ACTION AVR32_USART_LINMR_NACT_IGNORE //!< The USART does not transmit and does not receive the reponse. -//! @} - -/*! \name LIN Checksum Types - */ -//! @{ -#define USART_LIN_ENHANCED_CHECKSUM 0 //!< LIN 2.0 "enhanced" checksum. -#define USART_LIN_CLASSIC_CHECKSUM 1 //!< LIN 1.3 "classic" checksum. -//! @} - -#endif // USART rev. >= 4.0.0 - - -//! Input parameters when initializing RS232 and similar modes. -typedef struct -{ - //! Set baud rate of the USART (unused in slave modes). - unsigned long baudrate; - - //! Number of bits to transmit as a character (5 to 9). - unsigned char charlength; - - //! How to calculate the parity bit: \ref USART_EVEN_PARITY, \ref USART_ODD_PARITY, - //! \ref USART_SPACE_PARITY, \ref USART_MARK_PARITY, \ref USART_NO_PARITY or - //! \ref USART_MULTIDROP_PARITY. - unsigned char paritytype; - - //! Number of stop bits between two characters: \ref USART_1_STOPBIT, - //! \ref USART_1_5_STOPBITS, \ref USART_2_STOPBITS or any number from 3 to 257 - //! which will result in a time guard period of that length between characters. - //! \note \ref USART_1_5_STOPBITS is supported in asynchronous modes only. - unsigned short stopbits; - - //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO, - //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK. - unsigned char channelmode; -} usart_options_t; - -//! Input parameters when initializing ISO7816 mode. -typedef struct -{ - //! Set the frequency of the ISO7816 clock. - unsigned long iso7816_hz; - - //! The number of ISO7816 clock ticks in every bit period (1 to 2047, 0 = disable clock). - //! Bit rate = \ref iso7816_hz / \ref fidi_ratio. - unsigned short fidi_ratio; - - //! How to calculate the parity bit: \ref USART_EVEN_PARITY for normal mode or - //! \ref USART_ODD_PARITY for inverse mode. - unsigned char paritytype; - - //! Inhibit Non Acknowledge:\n - //! - 0: the NACK is generated;\n - //! - 1: the NACK is not generated. - //! - //! \note This bit will be used only in ISO7816 mode, protocol T = 0 receiver. - int inhibit_nack; - - //! Disable successive NACKs. - //! Successive parity errors are counted up to the value in the \ref max_iterations field. - //! These parity errors generate a NACK on the ISO line. As soon as this value is reached, - //! no addititional NACK is sent on the ISO line. The ITERATION flag is asserted. - int dis_suc_nack; - - //! Max number of repetitions (0 to 7). - unsigned char max_iterations; - - //! Bit order in transmitted characters:\n - //! - 0: LSB first;\n - //! - 1: MSB first. - int bit_order; -} usart_iso7816_options_t; - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -//! Input parameters when initializing SPI mode. -typedef struct -{ - //! Set the frequency of the SPI clock (unused in slave mode). - unsigned long baudrate; - - //! Number of bits to transmit as a character (5 to 9). - unsigned char charlength; - - //! Which SPI mode to use. - unsigned char spimode; - - //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO, - //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK. - unsigned char channelmode; -} usart_spi_options_t; - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -/*! \name Initialization Functions - */ -//! @{ - -/*! \brief Resets the USART and disables TX and RX. - * - * \param usart Base address of the USART instance. - */ -extern void usart_reset(volatile avr32_usart_t *usart); - -/*! \brief Sets up the USART to use the standard RS232 protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the standard RS232 protocol in TX-only mode. - * - * Compared to \ref usart_init_rs232, this function allows very high baud rates - * (up to \a pba_hz instead of \a pba_hz / \c 8) at the expense of full duplex. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - * - * \note The \c 1.5 stop bit is not supported in this mode. - */ -extern int usart_init_rs232_tx_only(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use hardware handshaking. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - * - * \note \ref usart_init_rs232 does not need to be invoked before this function. - */ -extern int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the modem protocol, activating dedicated inputs/outputs. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use a synchronous RS232-like protocol in master mode. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_sync_master(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use a synchronous RS232-like protocol in slave mode. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_sync_slave(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the RS485 protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the IrDA protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * \param irda_filter Counter used to distinguish received ones from zeros. - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt, - long pba_hz, unsigned char irda_filter); - -/*! \brief Sets up the USART to use the ISO7816 T=0 or T=1 smartcard protocols. - * - * The receiver is enabled by default. \ref usart_iso7816_enable_receiver and - * \ref usart_iso7816_enable_transmitter can be called to change the half-duplex - * communication direction. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up ISO7816 communication (see \ref usart_iso7816_options_t). - * \param t ISO7816 mode to use (T=0 or T=1). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_iso7816(volatile avr32_usart_t *usart, const usart_iso7816_options_t *opt, int t, long pba_hz); - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \brief Sets up the USART to use the LIN master mode. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - */ -extern int usart_init_lin_master(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz); - -/*! \brief Sets up the USART to use the LIN slave mode. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - */ -extern int usart_init_lin_slave(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz); - -/*! \brief Sets up the USART to use the SPI master mode. - * - * \ref usart_spi_selectChip and \ref usart_spi_unselectChip can be called to - * select or unselect the SPI slave chip. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_spi_master(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the SPI slave mode. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_spi_slave(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz); - -#endif // USART rev. >= 4.0.0 - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name Read and Reset Error Status Bits - */ -//! @{ - -/*! \brief Resets the error status. - * - * This function resets the status bits indicating that a parity error, - * framing error or overrun has occurred. The RXBRK bit, indicating - * a start/end of break condition on the RX line, is also reset. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_reset_status(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_CR_RSTSTA_MASK; -} - -/*! \brief Checks if a parity error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a parity error has been detected, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_parity_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_PARE_MASK) != 0; -} - -/*! \brief Checks if a framing error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a framing error has been detected, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_framing_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_FRAME_MASK) != 0; -} - -/*! \brief Checks if an overrun error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a overrun error has been detected, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_overrun_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_OVRE_MASK) != 0; -} - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \brief Get LIN Error Status - * - * \param usart Base address of the USART instance. - * - * \retval The binary value of the error field. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_lin_get_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & (AVR32_USART_CSR_LINSNRE_MASK | - AVR32_USART_CSR_LINCE_MASK | - AVR32_USART_CSR_LINIPE_MASK | - AVR32_USART_CSR_LINISFE_MASK | - AVR32_USART_CSR_LINBE_MASK)) >> AVR32_USART_CSR_LINBE_OFFSET; -} - -#endif // USART rev. >= 4.0.0 - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name ISO7816 Control Functions - */ -//! @{ - -/*! \brief Enables the ISO7816 receiver. - * - * The ISO7816 transmitter is disabled. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_iso7816_enable_receiver(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_CR_TXDIS_MASK | AVR32_USART_CR_RXEN_MASK; -} - -/*! \brief Enables the ISO7816 transmitter. - * - * The ISO7816 receiver is disabled. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_iso7816_enable_transmitter(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_CR_RXDIS_MASK | AVR32_USART_CR_TXEN_MASK; -} - -//! @} - - -//------------------------------------------------------------------------------ -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \name LIN Control Functions - */ -//! @{ - -/*! \brief Sets the node action. - * - * \param usart Base address of the USART instance. - * \param action The node action: \ref USART_LIN_PUBLISH_ACTION, - * \ref USART_LIN_SUBSCRIBE_ACTION or - * \ref USART_LIN_IGNORE_ACTION. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_node_action(volatile avr32_usart_t *usart, unsigned char action) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_NACT_MASK) | - action << AVR32_USART_LINMR_NACT_OFFSET; -} - -/*! \brief Enables or disables the Identifier parity. - * - * \param usart Base address of the USART instance. - * \param parity Whether to enable the Identifier parity: \c TRUE or \c FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_enable_parity(volatile avr32_usart_t *usart, unsigned char parity) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_PARDIS_MASK) | - !parity << AVR32_USART_LINMR_PARDIS_OFFSET; -} - -/*! \brief Enables or disables the checksum. - * - * \param usart Base address of the USART instance. - * \param parity Whether to enable the checksum: \c TRUE or \c FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_enable_checksum(volatile avr32_usart_t *usart, unsigned char checksum) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_CHKDIS_MASK) | - !checksum << AVR32_USART_LINMR_CHKDIS_OFFSET; -} - -/*! \brief Sets the checksum type. - * - * \param usart Base address of the USART instance. - * \param chktyp The checksum type: \ref USART_LIN_ENHANCED_CHEKSUM or - * \ref USART_LIN_CLASSIC_CHECKSUM. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_checksum(volatile avr32_usart_t *usart, unsigned char chktyp) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_CHKTYP_MASK) | - chktyp << AVR32_USART_LINMR_CHKTYP_OFFSET; -} - -/*! \brief Gets the response data length. - * - * \param usart Base address of the USART instance. - * - * \return The response data length. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned char usart_lin_get_data_length(volatile avr32_usart_t *usart) -{ - if (usart->linmr & AVR32_USART_LINMR_DLM_MASK) - { - unsigned char data_length = 1 << ((usart->linir >> (AVR32_USART_LINIR_IDCHR_OFFSET + 4)) & 0x03); - if (data_length == 1) - data_length = 2; - return data_length; - } - else - return ((usart->linmr & AVR32_USART_LINMR_DLC_MASK) >> AVR32_USART_LINMR_DLC_OFFSET) + 1; -} - -/*! \brief Sets the response data length for LIN 1.x. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_data_length_lin1x(volatile avr32_usart_t *usart) -{ - usart->linmr |= AVR32_USART_LINMR_DLM_MASK; -} - -/*! \brief Sets the response data length for LIN 2.x. - * - * \param usart Base address of the USART instance. - * \param data_length The response data length. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_data_length_lin2x(volatile avr32_usart_t *usart, unsigned char data_length) -{ - usart->linmr = (usart->linmr & ~(AVR32_USART_LINMR_DLC_MASK | - AVR32_USART_LINMR_DLM_MASK)) | - (data_length - 1) << AVR32_USART_LINMR_DLC_OFFSET; -} - -/*! \brief Enables or disables the frame slot mode. - * - * \param usart Base address of the USART instance. - * \param frameslot Whether to enable the frame slot mode: \c TRUE or - * \c FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_enable_frameslot(volatile avr32_usart_t *usart, unsigned char frameslot) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_FSDIS_MASK) | - !frameslot << AVR32_USART_LINMR_FSDIS_OFFSET; -} - -/*! \brief Gets the Identifier character. - * - * \param usart Base address of the USART instance. - * - * \return The Identifier character. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned char usart_lin_get_id_char(volatile avr32_usart_t *usart) -{ - return (usart->linir & AVR32_USART_LINIR_IDCHR_MASK) >> AVR32_USART_LINIR_IDCHR_OFFSET; -} - -/*! \brief Sets the Identifier character. - * - * \param usart Base address of the USART instance. - * \param id_char The Identifier character. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_id_char(volatile avr32_usart_t *usart, unsigned char id_char) -{ - usart->linir = (usart->linir & ~AVR32_USART_LINIR_IDCHR_MASK) | - id_char << AVR32_USART_LINIR_IDCHR_OFFSET; -} - -//! @} - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \name SPI Control Functions - */ -//! @{ - -/*! \brief Selects SPI slave chip. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Success. - */ -extern int usart_spi_selectChip(volatile avr32_usart_t *usart); - -/*! \brief Unselects SPI slave chip. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Success. - * \retval USART_FAILURE Time-out. - */ -extern int usart_spi_unselectChip(volatile avr32_usart_t *usart); - -//! @} - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -/*! \name Transmit/Receive Functions - */ -//! @{ - -/*! \brief Addresses a receiver. - * - * While in RS485 mode, receivers only accept data addressed to them. - * A packet/char with the address tag set has to precede any data. - * This function is used to address a receiver. This receiver should read - * all the following data, until an address packet addresses another receiver. - * - * \param usart Base address of the USART instance. - * \param address Address of the target device. - * - * \retval USART_SUCCESS Address successfully sent (if current mode is RS485). - * \retval USART_MODE_FAULT Wrong operating mode. - */ -extern int usart_send_address(volatile avr32_usart_t *usart, int address); - -/*! \brief Tests if the USART is ready to transmit a character. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART Transmit Holding Register is free, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_tx_ready(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_TXRDY_MASK) != 0; -} - -/*! \brief Writes the given character to the TX buffer if the transmitter is ready. - * - * \param usart Base address of the USART instance. - * \param c The character (up to 9 bits) to transmit. - * - * \retval USART_SUCCESS The transmitter was ready. - * \retval USART_TX_BUSY The transmitter was busy. - */ -extern int usart_write_char(volatile avr32_usart_t *usart, int c); - -/*! \brief An active wait writing a character to the USART. - * - * \param usart Base address of the USART instance. - * \param c The character (up to 9 bits) to transmit. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_bw_write_char(volatile avr32_usart_t *usart, int c) -{ - while (usart_write_char(usart, c) != USART_SUCCESS); -} - -/*! \brief Sends a character with the USART. - * - * \param usart Base address of the USART instance. - * \param c Character to write. - * - * \retval USART_SUCCESS The character was written. - * \retval USART_FAILURE The function timed out before the USART transmitter became ready to send. - */ -extern int usart_putchar(volatile avr32_usart_t *usart, int c); - -/*! \brief Tests if all requested USART transmissions are over. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART Transmit Shift Register and the USART Transmit - * Holding Register are free, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_tx_empty(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_TXEMPTY_MASK) != 0; -} - -/*! \brief Tests if the USART contains a received character. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART Receive Holding Register is full, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_test_hit(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_RXRDY_MASK) != 0; -} - -/*! \brief Checks the RX buffer for a received character, and stores it at the - * given memory location. - * - * \param usart Base address of the USART instance. - * \param c Pointer to the where the read character should be stored - * (must be at least short in order to accept 9-bit characters). - * - * \retval USART_SUCCESS The character was read successfully. - * \retval USART_RX_EMPTY The RX buffer was empty. - * \retval USART_RX_ERROR An error was deteceted. - */ -extern int usart_read_char(volatile avr32_usart_t *usart, int *c); - -/*! \brief Waits until a character is received, and returns it. - * - * \param usart Base address of the USART instance. - * - * \return The received character, or \ref USART_FAILURE upon error. - */ -extern int usart_getchar(volatile avr32_usart_t *usart); - -/*! \brief Writes one character string to the USART. - * - * \param usart Base address of the USART instance. - * \param string String to be written. - */ -extern void usart_write_line(volatile avr32_usart_t *usart, const char *string); - -/*! \brief Gets and echoes characters until end of line. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Success. - * \retval USART_FAILURE Low-level error detected or ETX character received. - */ -extern int usart_get_echo_line(volatile avr32_usart_t *usart); - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \brief Abort LIN transmission. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_abort(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_LINABT_MASK; -} - -/*! \brief Tests if a LIN transfer has been completed. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a LIN transfer has been completed, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_lin_transfer_completed(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_LINTC_MASK) != 0; -} - -#endif // USART rev. >= 4.0.0 - -//! @} - - -#endif // _USART_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.c deleted file mode 100644 index ad5ecca650e..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.c +++ /dev/null @@ -1,87 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ****************************************************************** - * - * \brief Management of the delays. - * - * This file manages the "delays", with or without an OS. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ***************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -//_____ I N C L U D E S ___________________________________________________ - -#include "delay.h" - - -//_____ M A C R O S ________________________________________________________ - - -//_____ D E F I N I T I O N S ______________________________________________ - -//! CPU frequency -#ifndef FREERTOS_USED -static unsigned long s_fcpu_hz; -#endif -#if (defined NUTOS_USED) -extern void NutSleep(unsigned long ms); -#endif - -//_____ D E C L A R A T I O N S ____________________________________________ - -void delay_init(unsigned long fcpu_hz) -{ -#ifndef FREERTOS_USED - s_fcpu_hz = fcpu_hz; -#endif -} - - -void delay_ms(unsigned long delay) -{ -#if (defined FREERTOS_USED) - vTaskDelay( (portTickType)TASK_DELAY_MS(delay) ); -#elif (defined NUTOS_USED) - NutSleep(delay); -#else - cpu_delay_ms(delay, s_fcpu_hz); -#endif -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.h deleted file mode 100644 index 28113267b74..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/DELAY/delay.h +++ /dev/null @@ -1,80 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3 delay management header file. - * - * This file contains definitions and services to handle "delays". - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _DELAY_H_ -#define _DELAY_H_ - -#include "compiler.h" -#ifdef FREERTOS_USED -# include "FreeRTOS.h" -# include "task.h" -#else -# include "cycle_counter.h" -#endif - - -/*! - * \brief Initialize the delay driver. - * - * \param fcpu_hz: CPU frequency in Hz. - */ -extern void delay_init(unsigned long fcpu_hz); - - -/*! - * \brief Waits during at least the specified delay (in millisecond) before returning. - * - * Note that in the case of FreeRTOS, the function will delay the current task for a given number of ms. - * - * \param delay: Number of millisecond to wait. - */ -extern void delay_ms(unsigned long delay); - - -#endif // _DELAY_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dhcp.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dhcp.c deleted file mode 100644 index 8ef6c8426bb..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dhcp.c +++ /dev/null @@ -1,1724 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Dynamic Host Configuration Protocol client - * - */ - -/* - * - * Copyright (c) 2001-2004 Leon Woestenberg - * Copyright (c) 2001-2004 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is a contribution to the lwIP TCP/IP stack. - * The Swedish Institute of Computer Science and Adam Dunkels - * are specifically granted permission to redistribute this - * source code. - * - * Author: Leon Woestenberg - * - * This is a DHCP client for the lwIP TCP/IP stack. It aims to conform - * with RFC 2131 and RFC 2132. - * - * TODO: - * - Proper parsing of DHCP messages exploiting file/sname field overloading. - * - Add JavaDoc style documentation (API, internals). - * - Support for interfaces other than Ethernet (SLIP, PPP, ...) - * - * Please coordinate changes and requests with Leon Woestenberg - * - * - * Integration with your code: - * - * In lwip/dhcp.h - * #define DHCP_COARSE_TIMER_SECS (recommended 60 which is a minute) - * #define DHCP_FINE_TIMER_MSECS (recommended 500 which equals TCP coarse timer) - * - * Then have your application call dhcp_coarse_tmr() and - * dhcp_fine_tmr() on the defined intervals. - * - * dhcp_start(struct netif *netif); - * starts a DHCP client instance which configures the interface by - * obtaining an IP address lease and maintaining it. - * - * Use dhcp_release(netif) to end the lease and use dhcp_stop(netif) - * to remove the DHCP client. - * - */ - -#include "lwip/opt.h" - -#if LWIP_DHCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/stats.h" -#include "lwip/mem.h" -#include "lwip/udp.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/inet.h" -#include "lwip/sys.h" -#include "lwip/dhcp.h" -#include "lwip/autoip.h" -#include "lwip/dns.h" -#include "netif/etharp.h" - -#include - -/** Default for DHCP_GLOBAL_XID is 0xABCD0000 - * This can be changed by defining DHCP_GLOBAL_XID and DHCP_GLOBAL_XID_HEADER, e.g. - * #define DHCP_GLOBAL_XID_HEADER "stdlib.h" - * #define DHCP_GLOBAL_XID rand() - */ -#ifdef DHCP_GLOBAL_XID_HEADER -#include DHCP_GLOBAL_XID_HEADER /* include optional starting XID generation prototypes */ -#endif - -/** DHCP_OPTION_MAX_MSG_SIZE is set to the MTU - * MTU is checked to be big enough in dhcp_start */ -#define DHCP_MAX_MSG_LEN(netif) (netif->mtu) -#define DHCP_MAX_MSG_LEN_MIN_REQUIRED 576 -/** Minimum length for reply before packet is parsed */ -#define DHCP_MIN_REPLY_LEN 44 - -#define REBOOT_TRIES 2 - -/* DHCP client state machine functions */ -static void dhcp_handle_ack(struct netif *netif); -static void dhcp_handle_nak(struct netif *netif); -static void dhcp_handle_offer(struct netif *netif); - -static err_t dhcp_discover(struct netif *netif); -static err_t dhcp_select(struct netif *netif); -static void dhcp_bind(struct netif *netif); -#if DHCP_DOES_ARP_CHECK -static void dhcp_check(struct netif *netif); -static err_t dhcp_decline(struct netif *netif); -#endif /* DHCP_DOES_ARP_CHECK */ -static err_t dhcp_rebind(struct netif *netif); -static err_t dhcp_reboot(struct netif *netif); -static void dhcp_set_state(struct dhcp *dhcp, u8_t new_state); - -/* receive, unfold, parse and free incoming messages */ -static void dhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port); -static err_t dhcp_unfold_reply(struct dhcp *dhcp, struct pbuf *p); -static u8_t *dhcp_get_option_ptr(struct dhcp *dhcp, u8_t option_type); -static u8_t dhcp_get_option_byte(u8_t *ptr); -#if 0 -static u16_t dhcp_get_option_short(u8_t *ptr); -#endif -static u32_t dhcp_get_option_long(u8_t *ptr); -static void dhcp_free_reply(struct dhcp *dhcp); - -/* set the DHCP timers */ -static void dhcp_timeout(struct netif *netif); -static void dhcp_t1_timeout(struct netif *netif); -static void dhcp_t2_timeout(struct netif *netif); - -/* build outgoing messages */ -/* create a DHCP request, fill in common headers */ -static err_t dhcp_create_request(struct netif *netif); -/* free a DHCP request */ -static void dhcp_delete_request(struct netif *netif); -/* add a DHCP option (type, then length in bytes) */ -static void dhcp_option(struct dhcp *dhcp, u8_t option_type, u8_t option_len); -/* add option values */ -static void dhcp_option_byte(struct dhcp *dhcp, u8_t value); -static void dhcp_option_short(struct dhcp *dhcp, u16_t value); -static void dhcp_option_long(struct dhcp *dhcp, u32_t value); -/* always add the DHCP options trailer to end and pad */ -static void dhcp_option_trailer(struct dhcp *dhcp); - -/** - * Back-off the DHCP client (because of a received NAK response). - * - * Back-off the DHCP client because of a received NAK. Receiving a - * NAK means the client asked for something non-sensible, for - * example when it tries to renew a lease obtained on another network. - * - * We clear any existing set IP address and restart DHCP negotiation - * afresh (as per RFC2131 3.2.3). - * - * @param netif the netif under DHCP control - */ -static void -dhcp_handle_nak(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_nak(netif=%p) %c%c%"U16_F"\n", - (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - /* Set the interface down since the address must no longer be used, as per RFC2131 */ - netif_set_down(netif); - /* remove IP address from interface */ - netif_set_ipaddr(netif, IP_ADDR_ANY); - netif_set_gw(netif, IP_ADDR_ANY); - netif_set_netmask(netif, IP_ADDR_ANY); - /* Change to a defined state */ - dhcp_set_state(dhcp, DHCP_BACKING_OFF); - /* We can immediately restart discovery */ - dhcp_discover(netif); -} - -#if DHCP_DOES_ARP_CHECK -/** - * Checks if the offered IP address is already in use. - * - * It does so by sending an ARP request for the offered address and - * entering CHECKING state. If no ARP reply is received within a small - * interval, the address is assumed to be free for use by us. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_check(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_check(netif=%p) %c%c\n", (void *)netif, (s16_t)netif->name[0], - (s16_t)netif->name[1])); - dhcp_set_state(dhcp, DHCP_CHECKING); - /* create an ARP query for the offered IP address, expecting that no host - responds, as the IP address should not be in use. */ - result = etharp_query(netif, &dhcp->offered_ip_addr, NULL); - if (result != ERR_OK) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("dhcp_check: could not perform ARP query\n")); - } - dhcp->tries++; - msecs = 500; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_check(): set request timeout %"U16_F" msecs\n", msecs)); -} -#endif /* DHCP_DOES_ARP_CHECK */ - -/** - * Remember the configuration offered by a DHCP server. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_handle_offer(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - /* obtain the server address */ - u8_t *option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_SERVER_ID); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_handle_offer(netif=%p) %c%c%"U16_F"\n", - (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - if (option_ptr != NULL) { - dhcp->server_ip_addr.addr = htonl(dhcp_get_option_long(&option_ptr[2])); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): server 0x%08"X32_F"\n", dhcp->server_ip_addr.addr)); - /* remember offered address */ - ip_addr_set(&dhcp->offered_ip_addr, (struct ip_addr *)&dhcp->msg_in->yiaddr); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_handle_offer(): offer for 0x%08"X32_F"\n", dhcp->offered_ip_addr.addr)); - - dhcp_select(netif); - } -} - -/** - * Select a DHCP server offer out of all offers. - * - * Simply select the first offer received. - * - * @param netif the netif under DHCP control - * @return lwIP specific error (see error.h) - */ -static err_t -dhcp_select(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; -#if LWIP_NETIF_HOSTNAME - const char *p; -#endif /* LWIP_NETIF_HOSTNAME */ - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_select(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - dhcp_set_state(dhcp, DHCP_REQUESTING); - - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_REQUEST); - - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - - /* MUST request the offered IP address */ - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr)); - - dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4); - dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr)); - - dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/); - dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK); - dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER); - dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST); - dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER); - -#if LWIP_NETIF_HOSTNAME - p = (const char*)netif->hostname; - if (p != NULL) { - dhcp_option(dhcp, DHCP_OPTION_HOSTNAME, strlen(p)); - while (*p) { - dhcp_option_byte(dhcp, *p++); - } - } -#endif /* LWIP_NETIF_HOSTNAME */ - - dhcp_option_trailer(dhcp); - /* shrink the pbuf to the actual content length */ - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - /* send broadcast to any DHCP server */ - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_select: REQUESTING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("dhcp_select: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_select(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - -/** - * The DHCP timer that checks for lease renewal/rebind timeouts. - * - */ -void -dhcp_coarse_tmr() -{ - struct netif *netif = netif_list; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_coarse_tmr()\n")); - /* iterate through all network interfaces */ - while (netif != NULL) { - /* only act on DHCP configured interfaces */ - if (netif->dhcp != NULL) { - /* timer is active (non zero), and triggers (zeroes) now? */ - if (netif->dhcp->t2_timeout-- == 1) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_coarse_tmr(): t2 timeout\n")); - /* this clients' rebind timeout triggered */ - dhcp_t2_timeout(netif); - /* timer is active (non zero), and triggers (zeroes) now */ - } else if (netif->dhcp->t1_timeout-- == 1) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_coarse_tmr(): t1 timeout\n")); - /* this clients' renewal timeout triggered */ - dhcp_t1_timeout(netif); - } - } - /* proceed to next netif */ - netif = netif->next; - } -} - -/** - * DHCP transaction timeout handling - * - * A DHCP server is expected to respond within a short period of time. - * This timer checks whether an outstanding DHCP request is timed out. - * - */ -void -dhcp_fine_tmr() -{ - struct netif *netif = netif_list; - /* loop through netif's */ - while (netif != NULL) { - /* only act on DHCP configured interfaces */ - if (netif->dhcp != NULL) { - /* timer is active (non zero), and is about to trigger now */ - if (netif->dhcp->request_timeout > 1) { - netif->dhcp->request_timeout--; - } - else if (netif->dhcp->request_timeout == 1) { - netif->dhcp->request_timeout--; - /* { netif->dhcp->request_timeout == 0 } */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_fine_tmr(): request timeout\n")); - /* this clients' request timeout triggered */ - dhcp_timeout(netif); - } - } - /* proceed to next network interface */ - netif = netif->next; - } -} - -/** - * A DHCP negotiation transaction, or ARP request, has timed out. - * - * The timer that was started with the DHCP or ARP request has - * timed out, indicating no response was received in time. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_timeout(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout()\n")); - /* back-off period has passed, or server selection timed out */ - if ((dhcp->state == DHCP_BACKING_OFF) || (dhcp->state == DHCP_SELECTING)) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_timeout(): restarting discovery\n")); - dhcp_discover(netif); - /* receiving the requested lease timed out */ - } else if (dhcp->state == DHCP_REQUESTING) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REQUESTING, DHCP request timed out\n")); - if (dhcp->tries <= 5) { - dhcp_select(netif); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REQUESTING, releasing, restarting\n")); - dhcp_release(netif); - dhcp_discover(netif); - } -#if DHCP_DOES_ARP_CHECK - /* received no ARP reply for the offered address (which is good) */ - } else if (dhcp->state == DHCP_CHECKING) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): CHECKING, ARP request timed out\n")); - if (dhcp->tries <= 1) { - dhcp_check(netif); - /* no ARP replies on the offered address, - looks like the IP address is indeed free */ - } else { - /* bind the interface to the offered address */ - dhcp_bind(netif); - } -#endif /* DHCP_DOES_ARP_CHECK */ - } - /* did not get response to renew request? */ - else if (dhcp->state == DHCP_RENEWING) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): RENEWING, DHCP request timed out\n")); - /* just retry renewal */ - /* note that the rebind timer will eventually time-out if renew does not work */ - dhcp_renew(netif); - /* did not get response to rebind request? */ - } else if (dhcp->state == DHCP_REBINDING) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): REBINDING, DHCP request timed out\n")); - if (dhcp->tries <= 8) { - dhcp_rebind(netif); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_timeout(): RELEASING, DISCOVERING\n")); - dhcp_release(netif); - dhcp_discover(netif); - } - } else if (dhcp->state == DHCP_REBOOTING) { - if (dhcp->tries < REBOOT_TRIES) { - dhcp_reboot(netif); - } else { - dhcp_discover(netif); - } - } -} - -/** - * The renewal period has timed out. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_t1_timeout(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_t1_timeout()\n")); - if ((dhcp->state == DHCP_REQUESTING) || (dhcp->state == DHCP_BOUND) || (dhcp->state == DHCP_RENEWING)) { - /* just retry to renew - note that the rebind timer (t2) will - * eventually time-out if renew tries fail. */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_t1_timeout(): must renew\n")); - dhcp_renew(netif); - } -} - -/** - * The rebind period has timed out. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_t2_timeout(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_t2_timeout()\n")); - if ((dhcp->state == DHCP_REQUESTING) || (dhcp->state == DHCP_BOUND) || (dhcp->state == DHCP_RENEWING)) { - /* just retry to rebind */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_t2_timeout(): must rebind\n")); - dhcp_rebind(netif); - } -} - -/** - * Handle a DHCP ACK packet - * - * @param netif the netif under DHCP control - */ -static void -dhcp_handle_ack(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - u8_t *option_ptr; - /* clear options we might not get from the ACK */ - dhcp->offered_sn_mask.addr = 0; - dhcp->offered_gw_addr.addr = 0; - dhcp->offered_bc_addr.addr = 0; - - /* lease time given? */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_LEASE_TIME); - if (option_ptr != NULL) { - /* remember offered lease time */ - dhcp->offered_t0_lease = dhcp_get_option_long(option_ptr + 2); - } - /* renewal period given? */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_T1); - if (option_ptr != NULL) { - /* remember given renewal period */ - dhcp->offered_t1_renew = dhcp_get_option_long(option_ptr + 2); - } else { - /* calculate safe periods for renewal */ - dhcp->offered_t1_renew = dhcp->offered_t0_lease / 2; - } - - /* renewal period given? */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_T2); - if (option_ptr != NULL) { - /* remember given rebind period */ - dhcp->offered_t2_rebind = dhcp_get_option_long(option_ptr + 2); - } else { - /* calculate safe periods for rebinding */ - dhcp->offered_t2_rebind = dhcp->offered_t0_lease; - } - - /* (y)our internet address */ - ip_addr_set(&dhcp->offered_ip_addr, &dhcp->msg_in->yiaddr); - -/** - * Patch #1308 - * TODO: we must check if the file field is not overloaded by DHCP options! - */ -#if 0 - /* boot server address */ - ip_addr_set(&dhcp->offered_si_addr, &dhcp->msg_in->siaddr); - /* boot file name */ - if (dhcp->msg_in->file[0]) { - dhcp->boot_file_name = mem_malloc(strlen(dhcp->msg_in->file) + 1); - strcpy(dhcp->boot_file_name, dhcp->msg_in->file); - } -#endif - - /* subnet mask */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_SUBNET_MASK); - /* subnet mask given? */ - if (option_ptr != NULL) { - dhcp->offered_sn_mask.addr = htonl(dhcp_get_option_long(&option_ptr[2])); - } - - /* gateway router */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_ROUTER); - if (option_ptr != NULL) { - dhcp->offered_gw_addr.addr = htonl(dhcp_get_option_long(&option_ptr[2])); - } - - /* broadcast address */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_BROADCAST); - if (option_ptr != NULL) { - dhcp->offered_bc_addr.addr = htonl(dhcp_get_option_long(&option_ptr[2])); - } - - /* DNS servers */ - option_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_DNS_SERVER); - if (option_ptr != NULL) { - u8_t n; - dhcp->dns_count = dhcp_get_option_byte(&option_ptr[1]) / (u32_t)sizeof(struct ip_addr); - /* limit to at most DHCP_MAX_DNS DNS servers */ - if (dhcp->dns_count > DHCP_MAX_DNS) - dhcp->dns_count = DHCP_MAX_DNS; - for (n = 0; n < dhcp->dns_count; n++) { - dhcp->offered_dns_addr[n].addr = htonl(dhcp_get_option_long(&option_ptr[2 + n * 4])); -#if LWIP_DNS - dns_setserver( n, (struct ip_addr *)(&(dhcp->offered_dns_addr[n].addr))); -#endif /* LWIP_DNS */ - } -#if LWIP_DNS - dns_setserver( n, (struct ip_addr *)(&ip_addr_any)); -#endif /* LWIP_DNS */ - } -} - -/** - * Start DHCP negotiation for a network interface. - * - * If no DHCP client instance was attached to this interface, - * a new client is created first. If a DHCP client instance - * was already present, it restarts negotiation. - * - * @param netif The lwIP network interface - * @return lwIP error code - * - ERR_OK - No error - * - ERR_MEM - Out of memory - */ -err_t -dhcp_start(struct netif *netif) -{ - struct dhcp *dhcp; - err_t result = ERR_OK; - - LWIP_ERROR("netif != NULL", (netif != NULL), return ERR_ARG;); - dhcp = netif->dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - /* Remove the flag that says this netif is handled by DHCP, - it is set when we succeeded starting. */ - netif->flags &= ~NETIF_FLAG_DHCP; - - /* check MTU of the netif */ - if (netif->mtu < DHCP_MAX_MSG_LEN_MIN_REQUIRED) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): Cannot use this netif with DHCP: MTU is too small\n")); - return ERR_MEM; - } - - /* no DHCP client attached yet? */ - if (dhcp == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): starting new DHCP client\n")); - dhcp = mem_malloc(sizeof(struct dhcp)); - if (dhcp == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): could not allocate dhcp\n")); - return ERR_MEM; - } - /* store this dhcp client in the netif */ - netif->dhcp = dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): allocated dhcp")); - /* already has DHCP client attached */ - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(): restarting DHCP configuration\n")); - if (dhcp->pcb != NULL) { - udp_remove(dhcp->pcb); - } - LWIP_ASSERT("pbuf p_out wasn't freed", dhcp->p_out == NULL); - LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL && - dhcp->options_in == NULL && dhcp->options_in_len == 0); - } - - /* clear data structure */ - memset(dhcp, 0, sizeof(struct dhcp)); - /* allocate UDP PCB */ - dhcp->pcb = udp_new(); - if (dhcp->pcb == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): could not obtain pcb\n")); - mem_free((void *)dhcp); - netif->dhcp = dhcp = NULL; - return ERR_MEM; - } -#if IP_SOF_BROADCAST - dhcp->pcb->so_options|=SOF_BROADCAST; -#endif /* IP_SOF_BROADCAST */ - /* set up local and remote port for the pcb */ - udp_bind(dhcp->pcb, IP_ADDR_ANY, DHCP_CLIENT_PORT); - udp_connect(dhcp->pcb, IP_ADDR_ANY, DHCP_SERVER_PORT); - /* set up the recv callback and argument */ - udp_recv(dhcp->pcb, dhcp_recv, netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_start(): starting DHCP configuration\n")); - /* (re)start the DHCP negotiation */ - result = dhcp_discover(netif); - if (result != ERR_OK) { - /* free resources allocated above */ - dhcp_stop(netif); - return ERR_MEM; - } - /* Set the flag that says this netif is handled by DHCP. */ - netif->flags |= NETIF_FLAG_DHCP; - return result; -} - -/** - * Inform a DHCP server of our manual configuration. - * - * This informs DHCP servers of our fixed IP address configuration - * by sending an INFORM message. It does not involve DHCP address - * configuration, it is just here to be nice to the network. - * - * @param netif The lwIP network interface - */ -void -dhcp_inform(struct netif *netif) -{ - struct dhcp *dhcp, *old_dhcp; - err_t result = ERR_OK; - dhcp = mem_malloc(sizeof(struct dhcp)); - if (dhcp == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_inform(): could not allocate dhcp\n")); - return; - } - memset(dhcp, 0, sizeof(struct dhcp)); - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_inform(): allocated dhcp\n")); - dhcp->pcb = udp_new(); - if (dhcp->pcb == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_inform(): could not obtain pcb")); - goto free_dhcp_and_return; - } - old_dhcp = netif->dhcp; - netif->dhcp = dhcp; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_inform(): created new udp pcb\n")); - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_INFORM); - - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - -#if IP_SOF_BROADCAST - dhcp->pcb->so_options|=SOF_BROADCAST; -#endif /* IP_SOF_BROADCAST */ - udp_bind(dhcp->pcb, IP_ADDR_ANY, DHCP_CLIENT_PORT); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_inform: INFORMING\n")); - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_inform: could not allocate DHCP request\n")); - } - - udp_remove(dhcp->pcb); - dhcp->pcb = NULL; - netif->dhcp = old_dhcp; -free_dhcp_and_return: - mem_free((void *)dhcp); -} - -/** Handle a possible change in the network configuration. - * - * This enters the REBOOTING state to verify that the currently bound - * address is still valid. - */ -void -dhcp_network_changed(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - if (!dhcp) - return; - switch (dhcp->state) { - case DHCP_REBINDING: - case DHCP_RENEWING: - case DHCP_BOUND: - case DHCP_REBOOTING: - netif_set_down(netif); - dhcp->tries = 0; - dhcp_reboot(netif); - break; - case DHCP_OFF: - /* stay off */ - break; - default: - dhcp->tries = 0; - dhcp_discover(netif); - break; - } -} - -#if DHCP_DOES_ARP_CHECK -/** - * Match an ARP reply with the offered IP address. - * - * @param netif the network interface on which the reply was received - * @param addr The IP address we received a reply from - */ -void dhcp_arp_reply(struct netif *netif, struct ip_addr *addr) -{ - LWIP_ERROR("netif != NULL", (netif != NULL), return;); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_arp_reply()\n")); - /* is a DHCP client doing an ARP check? */ - if ((netif->dhcp != NULL) && (netif->dhcp->state == DHCP_CHECKING)) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_arp_reply(): CHECKING, arp reply for 0x%08"X32_F"\n", addr->addr)); - /* did a host respond with the address we - were offered by the DHCP server? */ - if (ip_addr_cmp(addr, &netif->dhcp->offered_ip_addr)) { - /* we will not accept the offered address */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING, - ("dhcp_arp_reply(): arp reply matched with offered address, declining\n")); - dhcp_decline(netif); - } - } -} - -/** - * Decline an offered lease. - * - * Tell the DHCP server we do not accept the offered address. - * One reason to decline the lease is when we find out the address - * is already in use by another host (through ARP). - * - * @param netif the netif under DHCP control - */ -static err_t -dhcp_decline(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result = ERR_OK; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_decline()\n")); - dhcp_set_state(dhcp, DHCP_BACKING_OFF); - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_DECLINE); - - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr)); - - dhcp_option_trailer(dhcp); - /* resize pbuf to reflect true size of options */ - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - /* per section 4.4.4, broadcast DECLINE messages */ - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_decline: BACKING OFF\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_decline: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = 10*1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_decline(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} -#endif - - -/** - * Start the DHCP process, discover a DHCP server. - * - * @param netif the netif under DHCP control - */ -static err_t -dhcp_discover(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result = ERR_OK; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover()\n")); - ip_addr_set(&dhcp->offered_ip_addr, IP_ADDR_ANY); - dhcp_set_state(dhcp, DHCP_SELECTING); - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: making request\n")); - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_DISCOVER); - - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - - dhcp_option(dhcp, DHCP_OPTION_PARAMETER_REQUEST_LIST, 4/*num options*/); - dhcp_option_byte(dhcp, DHCP_OPTION_SUBNET_MASK); - dhcp_option_byte(dhcp, DHCP_OPTION_ROUTER); - dhcp_option_byte(dhcp, DHCP_OPTION_BROADCAST); - dhcp_option_byte(dhcp, DHCP_OPTION_DNS_SERVER); - - dhcp_option_trailer(dhcp); - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: realloc()ing\n")); - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: sendto(DISCOVER, IP_ADDR_BROADCAST, DHCP_SERVER_PORT)\n")); - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_discover: deleting()ing\n")); - dhcp_delete_request(netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover: SELECTING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_discover: could not allocate DHCP request\n")); - } - dhcp->tries++; -#if LWIP_DHCP_AUTOIP_COOP - if(dhcp->tries >= LWIP_DHCP_AUTOIP_COOP_TRIES && dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_OFF) { - dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_ON; - autoip_start(netif); - } -#endif /* LWIP_DHCP_AUTOIP_COOP */ - msecs = (dhcp->tries < 6 ? 1 << dhcp->tries : 60) * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_discover(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - - -/** - * Bind the interface to the offered IP address. - * - * @param netif network interface to bind to the offered address - */ -static void -dhcp_bind(struct netif *netif) -{ - u32_t timeout; - struct dhcp *dhcp; - struct ip_addr sn_mask, gw_addr; - LWIP_ERROR("dhcp_bind: netif != NULL", (netif != NULL), return;); - dhcp = netif->dhcp; - LWIP_ERROR("dhcp_bind: dhcp != NULL", (dhcp != NULL), return;); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num)); - - /* temporary DHCP lease? */ - if (dhcp->offered_t1_renew != 0xffffffffUL) { - /* set renewal period timer */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(): t1 renewal timer %"U32_F" secs\n", dhcp->offered_t1_renew)); - timeout = (dhcp->offered_t1_renew + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS; - if(timeout > 0xffff) { - timeout = 0xffff; - } - dhcp->t1_timeout = (u16_t)timeout; - if (dhcp->t1_timeout == 0) { - dhcp->t1_timeout = 1; - } - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t1_renew*1000)); - } - /* set renewal period timer */ - if (dhcp->offered_t2_rebind != 0xffffffffUL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_bind(): t2 rebind timer %"U32_F" secs\n", dhcp->offered_t2_rebind)); - timeout = (dhcp->offered_t2_rebind + DHCP_COARSE_TIMER_SECS / 2) / DHCP_COARSE_TIMER_SECS; - if(timeout > 0xffff) { - timeout = 0xffff; - } - dhcp->t2_timeout = (u16_t)timeout; - if (dhcp->t2_timeout == 0) { - dhcp->t2_timeout = 1; - } - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_bind(): set request timeout %"U32_F" msecs\n", dhcp->offered_t2_rebind*1000)); - } - /* copy offered network mask */ - ip_addr_set(&sn_mask, &dhcp->offered_sn_mask); - - /* subnet mask not given? */ - /* TODO: this is not a valid check. what if the network mask is 0? */ - if (sn_mask.addr == 0) { - /* choose a safe subnet mask given the network class */ - u8_t first_octet = ip4_addr1(&sn_mask); - if (first_octet <= 127) { - sn_mask.addr = htonl(0xff000000); - } else if (first_octet >= 192) { - sn_mask.addr = htonl(0xffffff00); - } else { - sn_mask.addr = htonl(0xffff0000); - } - } - - ip_addr_set(&gw_addr, &dhcp->offered_gw_addr); - /* gateway address not given? */ - if (gw_addr.addr == 0) { - /* copy network address */ - gw_addr.addr = (dhcp->offered_ip_addr.addr & sn_mask.addr); - /* use first host address on network as gateway */ - gw_addr.addr |= htonl(0x00000001); - } - -#if LWIP_DHCP_AUTOIP_COOP - if(dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_ON) { - autoip_stop(netif); - dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_OFF; - } -#endif /* LWIP_DHCP_AUTOIP_COOP */ - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): IP: 0x%08"X32_F"\n", dhcp->offered_ip_addr.addr)); - netif_set_ipaddr(netif, &dhcp->offered_ip_addr); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): SN: 0x%08"X32_F"\n", sn_mask.addr)); - netif_set_netmask(netif, &sn_mask); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_STATE, ("dhcp_bind(): GW: 0x%08"X32_F"\n", gw_addr.addr)); - netif_set_gw(netif, &gw_addr); - /* bring the interface up */ - netif_set_up(netif); - /* netif is now bound to DHCP leased address */ - dhcp_set_state(dhcp, DHCP_BOUND); -} - -/** - * Renew an existing DHCP lease at the involved DHCP server. - * - * @param netif network interface which must renew its lease - */ -err_t -dhcp_renew(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; -#if LWIP_NETIF_HOSTNAME - const char *p; -#endif /* LWIP_NETIF_HOSTNAME */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_renew()\n")); - dhcp_set_state(dhcp, DHCP_RENEWING); - - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_REQUEST); - - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - -#if LWIP_NETIF_HOSTNAME - p = (const char*)netif->hostname; - if (p != NULL) { - dhcp_option(dhcp, DHCP_OPTION_HOSTNAME, strlen(p)); - while (*p) { - dhcp_option_byte(dhcp, *p++); - } - } -#endif /* LWIP_NETIF_HOSTNAME */ - -#if 0 - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr)); -#endif - -#if 0 - dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4); - dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr)); -#endif - /* append DHCP message trailer */ - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - udp_sendto_if(dhcp->pcb, dhcp->p_out, &dhcp->server_ip_addr, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_renew: RENEWING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_renew: could not allocate DHCP request\n")); - } - dhcp->tries++; - /* back-off on retries, but to a maximum of 20 seconds */ - msecs = dhcp->tries < 10 ? dhcp->tries * 2000 : 20 * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_renew(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - -/** - * Rebind with a DHCP server for an existing DHCP lease. - * - * @param netif network interface which must rebind with a DHCP server - */ -static err_t -dhcp_rebind(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; -#if LWIP_NETIF_HOSTNAME - const char *p; -#endif /* LWIP_NETIF_HOSTNAME */ - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind()\n")); - dhcp_set_state(dhcp, DHCP_REBINDING); - - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_REQUEST); - - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, DHCP_MAX_MSG_LEN(netif)); - -#if LWIP_NETIF_HOSTNAME - p = (const char*)netif->hostname; - if (p != NULL) { - dhcp_option(dhcp, DHCP_OPTION_HOSTNAME, strlen(p)); - while (*p) { - dhcp_option_byte(dhcp, *p++); - } - } -#endif /* LWIP_NETIF_HOSTNAME */ - -#if 0 - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr)); - - dhcp_option(dhcp, DHCP_OPTION_SERVER_ID, 4); - dhcp_option_long(dhcp, ntohl(dhcp->server_ip_addr.addr)); -#endif - - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - /* broadcast to server */ - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind: REBINDING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_rebind: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_rebind(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - -/** - * Enter REBOOTING state to verify an existing lease - * - * @param netif network interface which must reboot - */ -static err_t -dhcp_reboot(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot()\n")); - dhcp_set_state(dhcp, DHCP_REBOOTING); - - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_REQUEST); - - dhcp_option(dhcp, DHCP_OPTION_MAX_MSG_SIZE, DHCP_OPTION_MAX_MSG_SIZE_LEN); - dhcp_option_short(dhcp, 576); - - dhcp_option(dhcp, DHCP_OPTION_REQUESTED_IP, 4); - dhcp_option_long(dhcp, ntohl(dhcp->offered_ip_addr.addr)); - - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - /* broadcast to server */ - udp_sendto_if(dhcp->pcb, dhcp->p_out, IP_ADDR_BROADCAST, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot: REBOOTING\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_reboot: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_reboot(): set request timeout %"U16_F" msecs\n", msecs)); - return result; -} - - -/** - * Release a DHCP lease. - * - * @param netif network interface which must release its lease - */ -err_t -dhcp_release(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - err_t result; - u16_t msecs; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_release()\n")); - - /* idle DHCP client */ - dhcp_set_state(dhcp, DHCP_OFF); - /* clean old DHCP offer */ - dhcp->server_ip_addr.addr = 0; - dhcp->offered_ip_addr.addr = dhcp->offered_sn_mask.addr = 0; - dhcp->offered_gw_addr.addr = dhcp->offered_bc_addr.addr = 0; - dhcp->offered_t0_lease = dhcp->offered_t1_renew = dhcp->offered_t2_rebind = 0; - dhcp->dns_count = 0; - - /* create and initialize the DHCP message header */ - result = dhcp_create_request(netif); - if (result == ERR_OK) { - dhcp_option(dhcp, DHCP_OPTION_MESSAGE_TYPE, DHCP_OPTION_MESSAGE_TYPE_LEN); - dhcp_option_byte(dhcp, DHCP_RELEASE); - - dhcp_option_trailer(dhcp); - - pbuf_realloc(dhcp->p_out, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN + dhcp->options_out_len); - - udp_sendto_if(dhcp->pcb, dhcp->p_out, &dhcp->server_ip_addr, DHCP_SERVER_PORT, netif); - dhcp_delete_request(netif); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_release: RELEASED, DHCP_OFF\n")); - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("dhcp_release: could not allocate DHCP request\n")); - } - dhcp->tries++; - msecs = dhcp->tries < 10 ? dhcp->tries * 1000 : 10 * 1000; - dhcp->request_timeout = (msecs + DHCP_FINE_TIMER_MSECS - 1) / DHCP_FINE_TIMER_MSECS; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_release(): set request timeout %"U16_F" msecs\n", msecs)); - /* bring the interface down */ - netif_set_down(netif); - /* remove IP address from interface */ - netif_set_ipaddr(netif, IP_ADDR_ANY); - netif_set_gw(netif, IP_ADDR_ANY); - netif_set_netmask(netif, IP_ADDR_ANY); - - /* TODO: netif_down(netif); */ - return result; -} - -/** - * Remove the DHCP client from the interface. - * - * @param netif The network interface to stop DHCP on - */ -void -dhcp_stop(struct netif *netif) -{ - struct dhcp *dhcp = netif->dhcp; - LWIP_ERROR("dhcp_stop: netif != NULL", (netif != NULL), return;); - /* Remove the flag that says this netif is handled by DHCP. */ - netif->flags &= ~NETIF_FLAG_DHCP; - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_stop()\n")); - /* netif is DHCP configured? */ - if (dhcp != NULL) { -#if LWIP_DHCP_AUTOIP_COOP - if(dhcp->autoip_coop_state == DHCP_AUTOIP_COOP_STATE_ON) { - autoip_stop(netif); - dhcp->autoip_coop_state = DHCP_AUTOIP_COOP_STATE_OFF; - } -#endif /* LWIP_DHCP_AUTOIP_COOP */ - - if (dhcp->pcb != NULL) { - udp_remove(dhcp->pcb); - dhcp->pcb = NULL; - } - LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL && - dhcp->options_in == NULL && dhcp->options_in_len == 0); - mem_free((void *)dhcp); - netif->dhcp = NULL; - } -} - -/* - * Set the DHCP state of a DHCP client. - * - * If the state changed, reset the number of tries. - * - * TODO: we might also want to reset the timeout here? - */ -static void -dhcp_set_state(struct dhcp *dhcp, u8_t new_state) -{ - if (new_state != dhcp->state) { - dhcp->state = new_state; - dhcp->tries = 0; - } -} - -/* - * Concatenate an option type and length field to the outgoing - * DHCP message. - * - */ -static void -dhcp_option(struct dhcp *dhcp, u8_t option_type, u8_t option_len) -{ - LWIP_ASSERT("dhcp_option: dhcp->options_out_len + 2 + option_len <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U + option_len <= DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = option_type; - dhcp->msg_out->options[dhcp->options_out_len++] = option_len; -} -/* - * Concatenate a single byte to the outgoing DHCP message. - * - */ -static void -dhcp_option_byte(struct dhcp *dhcp, u8_t value) -{ - LWIP_ASSERT("dhcp_option_byte: dhcp->options_out_len < DHCP_OPTIONS_LEN", dhcp->options_out_len < DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = value; -} - -static void -dhcp_option_short(struct dhcp *dhcp, u16_t value) -{ - LWIP_ASSERT("dhcp_option_short: dhcp->options_out_len + 2 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 2U <= DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff00U) >> 8); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t) (value & 0x00ffU); -} - -static void -dhcp_option_long(struct dhcp *dhcp, u32_t value) -{ - LWIP_ASSERT("dhcp_option_long: dhcp->options_out_len + 4 <= DHCP_OPTIONS_LEN", dhcp->options_out_len + 4U <= DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0xff000000UL) >> 24); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x00ff0000UL) >> 16); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x0000ff00UL) >> 8); - dhcp->msg_out->options[dhcp->options_out_len++] = (u8_t)((value & 0x000000ffUL)); -} - -/** - * Extract the DHCP message and the DHCP options. - * - * Extract the DHCP message and the DHCP options, each into a contiguous - * piece of memory. As a DHCP message is variable sized by its options, - * and also allows overriding some fields for options, the easy approach - * is to first unfold the options into a conitguous piece of memory, and - * use that further on. - * - */ -static err_t -dhcp_unfold_reply(struct dhcp *dhcp, struct pbuf *p) -{ - u16_t ret; - LWIP_ERROR("dhcp != NULL", (dhcp != NULL), return ERR_ARG;); - /* free any left-overs from previous unfolds */ - dhcp_free_reply(dhcp); - /* options present? */ - if (p->tot_len > (sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN)) { - dhcp->options_in_len = p->tot_len - (sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN); - dhcp->options_in = mem_malloc(dhcp->options_in_len); - if (dhcp->options_in == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_unfold_reply(): could not allocate dhcp->options\n")); - dhcp->options_in_len = 0; - return ERR_MEM; - } - } - dhcp->msg_in = mem_malloc(sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN); - if (dhcp->msg_in == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_unfold_reply(): could not allocate dhcp->msg_in\n")); - if (dhcp->options_in != NULL) { - mem_free(dhcp->options_in); - dhcp->options_in = NULL; - dhcp->options_in_len = 0; - } - return ERR_MEM; - } - - /** copy the DHCP message without options */ - ret = pbuf_copy_partial(p, dhcp->msg_in, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN, 0); - LWIP_ASSERT("ret == sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN", ret == sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_unfold_reply(): copied %"U16_F" bytes into dhcp->msg_in[]\n", - sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN)); - - if (dhcp->options_in != NULL) { - /** copy the DHCP options */ - ret = pbuf_copy_partial(p, dhcp->options_in, dhcp->options_in_len, sizeof(struct dhcp_msg) - DHCP_OPTIONS_LEN); - LWIP_ASSERT("ret == dhcp->options_in_len", ret == dhcp->options_in_len); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_unfold_reply(): copied %"U16_F" bytes to dhcp->options_in[]\n", - dhcp->options_in_len)); - } - LWIP_UNUSED_ARG(ret); - return ERR_OK; -} - -/** - * Free the incoming DHCP message including contiguous copy of - * its DHCP options. - */ -static void dhcp_free_reply(struct dhcp *dhcp) -{ - if (dhcp->msg_in != NULL) { - mem_free((void *)dhcp->msg_in); - dhcp->msg_in = NULL; - } - if (dhcp->options_in) { - mem_free(dhcp->options_in); - dhcp->options_in = NULL; - dhcp->options_in_len = 0; - } - LWIP_DEBUGF(DHCP_DEBUG, ("dhcp_free_reply(): free'd\n")); -} - -/** - * If an incoming DHCP message is in response to us, then trigger the state machine - */ -static void dhcp_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port) -{ - struct netif *netif = (struct netif *)arg; - struct dhcp *dhcp = netif->dhcp; - struct dhcp_msg *reply_msg = (struct dhcp_msg *)p->payload; - u8_t *options_ptr; - u8_t msg_type; - u8_t i; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("dhcp_recv(pbuf = %p) from DHCP server %"U16_F".%"U16_F".%"U16_F".%"U16_F" port %"U16_F"\n", (void*)p, - (u16_t)(ntohl(addr->addr) >> 24 & 0xff), (u16_t)(ntohl(addr->addr) >> 16 & 0xff), - (u16_t)(ntohl(addr->addr) >> 8 & 0xff), (u16_t)(ntohl(addr->addr) & 0xff), port)); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("pbuf->len = %"U16_F"\n", p->len)); - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("pbuf->tot_len = %"U16_F"\n", p->tot_len)); - /* prevent warnings about unused arguments */ - LWIP_UNUSED_ARG(pcb); - LWIP_UNUSED_ARG(addr); - LWIP_UNUSED_ARG(port); - - LWIP_ASSERT("reply wasn't freed", dhcp->msg_in == NULL && - dhcp->options_in == NULL && dhcp->options_in_len == 0); - - if (p->len < DHCP_MIN_REPLY_LEN) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("DHCP reply message too short\n")); - goto free_pbuf_and_return; - } - - if (reply_msg->op != DHCP_BOOTREPLY) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("not a DHCP reply message, but type %"U16_F"\n", (u16_t)reply_msg->op)); - goto free_pbuf_and_return; - } - /* iterate through hardware address and match against DHCP message */ - for (i = 0; i < netif->hwaddr_len; i++) { - if (netif->hwaddr[i] != reply_msg->chaddr[i]) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("netif->hwaddr[%"U16_F"]==%02"X16_F" != reply_msg->chaddr[%"U16_F"]==%02"X16_F"\n", - (u16_t)i, (u16_t)netif->hwaddr[i], (u16_t)i, (u16_t)reply_msg->chaddr[i])); - goto free_pbuf_and_return; - } - } - /* match transaction ID against what we expected */ - if (ntohl(reply_msg->xid) != dhcp->xid) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("transaction id mismatch reply_msg->xid(%"X32_F")!=dhcp->xid(%"X32_F")\n",ntohl(reply_msg->xid),dhcp->xid)); - goto free_pbuf_and_return; - } - /* option fields could be unfold? */ - if (dhcp_unfold_reply(dhcp, p) != ERR_OK) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("problem unfolding DHCP message - too short on memory?\n")); - goto free_pbuf_and_return; - } - - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("searching DHCP_OPTION_MESSAGE_TYPE\n")); - /* obtain pointer to DHCP message type */ - options_ptr = dhcp_get_option_ptr(dhcp, DHCP_OPTION_MESSAGE_TYPE); - if (options_ptr == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("DHCP_OPTION_MESSAGE_TYPE option not found\n")); - goto free_pbuf_and_return; - } - - /* read DHCP message type */ - msg_type = dhcp_get_option_byte(options_ptr + 2); - /* message type is DHCP ACK? */ - if (msg_type == DHCP_ACK) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_ACK received\n")); - /* in requesting state? */ - if (dhcp->state == DHCP_REQUESTING) { - dhcp_handle_ack(netif); - dhcp->request_timeout = 0; -#if DHCP_DOES_ARP_CHECK - /* check if the acknowledged lease address is already in use */ - dhcp_check(netif); -#else - /* bind interface to the acknowledged lease address */ - dhcp_bind(netif); -#endif - } - /* already bound to the given lease address? */ - else if ((dhcp->state == DHCP_REBOOTING) || (dhcp->state == DHCP_REBINDING) || (dhcp->state == DHCP_RENEWING)) { - dhcp->request_timeout = 0; - dhcp_bind(netif); - } - } - /* received a DHCP_NAK in appropriate state? */ - else if ((msg_type == DHCP_NAK) && - ((dhcp->state == DHCP_REBOOTING) || (dhcp->state == DHCP_REQUESTING) || - (dhcp->state == DHCP_REBINDING) || (dhcp->state == DHCP_RENEWING ))) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_NAK received\n")); - dhcp->request_timeout = 0; - dhcp_handle_nak(netif); - } - /* received a DHCP_OFFER in DHCP_SELECTING state? */ - else if ((msg_type == DHCP_OFFER) && (dhcp->state == DHCP_SELECTING)) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("DHCP_OFFER received in DHCP_SELECTING state\n")); - dhcp->request_timeout = 0; - /* remember offered lease */ - dhcp_handle_offer(netif); - } -free_pbuf_and_return: - dhcp_free_reply(dhcp); - pbuf_free(p); -} - -/** - * Create a DHCP request, fill in common headers - * - * @param netif the netif under DHCP control - */ -static err_t -dhcp_create_request(struct netif *netif) -{ - struct dhcp *dhcp; - u16_t i; -#ifndef DHCP_GLOBAL_XID - /** default global transaction identifier starting value (easy to match - * with a packet analyser). We simply increment for each new request. - * Predefine DHCP_GLOBAL_XID to a better value or a function call to generate one - * at runtime, any supporting function prototypes can be defined in DHCP_GLOBAL_XID_HEADER */ - static u32_t xid = 0xABCD0000; -#else - static u32_t xid; - static u8_t xid_initialised = 0; - if (!xid_initialised) { - xid = DHCP_GLOBAL_XID; - xid_initialised = !xid_initialised; - } -#endif - LWIP_ERROR("dhcp_create_request: netif != NULL", (netif != NULL), return ERR_ARG;); - dhcp = netif->dhcp; - LWIP_ERROR("dhcp_create_request: dhcp != NULL", (dhcp != NULL), return ERR_VAL;); - LWIP_ASSERT("dhcp_create_request: dhcp->p_out == NULL", dhcp->p_out == NULL); - LWIP_ASSERT("dhcp_create_request: dhcp->msg_out == NULL", dhcp->msg_out == NULL); - dhcp->p_out = pbuf_alloc(PBUF_TRANSPORT, sizeof(struct dhcp_msg), PBUF_RAM); - if (dhcp->p_out == NULL) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("dhcp_create_request(): could not allocate pbuf\n")); - return ERR_MEM; - } - LWIP_ASSERT("dhcp_create_request: check that first pbuf can hold struct dhcp_msg", - (dhcp->p_out->len >= sizeof(struct dhcp_msg))); - - /* reuse transaction identifier in retransmissions */ - if (dhcp->tries==0) - xid++; - dhcp->xid = xid; - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, - ("transaction id xid(%"X32_F")\n", xid)); - - dhcp->msg_out = (struct dhcp_msg *)dhcp->p_out->payload; - - dhcp->msg_out->op = DHCP_BOOTREQUEST; - /* TODO: make link layer independent */ - dhcp->msg_out->htype = DHCP_HTYPE_ETH; - /* TODO: make link layer independent */ - dhcp->msg_out->hlen = DHCP_HLEN_ETH; - dhcp->msg_out->hops = 0; - dhcp->msg_out->xid = htonl(dhcp->xid); - dhcp->msg_out->secs = 0; - dhcp->msg_out->flags = 0; - dhcp->msg_out->ciaddr.addr = 0; - if (dhcp->state==DHCP_BOUND || dhcp->state==DHCP_RENEWING || dhcp->state==DHCP_REBINDING) { - dhcp->msg_out->ciaddr.addr = netif->ip_addr.addr; - } - dhcp->msg_out->yiaddr.addr = 0; - dhcp->msg_out->siaddr.addr = 0; - dhcp->msg_out->giaddr.addr = 0; - for (i = 0; i < DHCP_CHADDR_LEN; i++) { - /* copy netif hardware address, pad with zeroes */ - dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/; - } - for (i = 0; i < DHCP_SNAME_LEN; i++) { - dhcp->msg_out->sname[i] = 0; - } - for (i = 0; i < DHCP_FILE_LEN; i++) { - dhcp->msg_out->file[i] = 0; - } - dhcp->msg_out->cookie = htonl(0x63825363UL); - dhcp->options_out_len = 0; - /* fill options field with an incrementing array (for debugging purposes) */ - for (i = 0; i < DHCP_OPTIONS_LEN; i++) { - dhcp->msg_out->options[i] = (u8_t)i; /* for debugging only, no matter if truncated */ - } - return ERR_OK; -} - -/** - * Free previously allocated memory used to send a DHCP request. - * - * @param netif the netif under DHCP control - */ -static void -dhcp_delete_request(struct netif *netif) -{ - struct dhcp *dhcp; - LWIP_ERROR("dhcp_delete_request: netif != NULL", (netif != NULL), return;); - dhcp = netif->dhcp; - LWIP_ERROR("dhcp_delete_request: dhcp != NULL", (dhcp != NULL), return;); - LWIP_ASSERT("dhcp_delete_request: dhcp->p_out != NULL", dhcp->p_out != NULL); - LWIP_ASSERT("dhcp_delete_request: dhcp->msg_out != NULL", dhcp->msg_out != NULL); - if (dhcp->p_out != NULL) { - pbuf_free(dhcp->p_out); - } - dhcp->p_out = NULL; - dhcp->msg_out = NULL; -} - -/** - * Add a DHCP message trailer - * - * Adds the END option to the DHCP message, and if - * necessary, up to three padding bytes. - * - * @param dhcp DHCP state structure - */ -static void -dhcp_option_trailer(struct dhcp *dhcp) -{ - LWIP_ERROR("dhcp_option_trailer: dhcp != NULL", (dhcp != NULL), return;); - LWIP_ASSERT("dhcp_option_trailer: dhcp->msg_out != NULL\n", dhcp->msg_out != NULL); - LWIP_ASSERT("dhcp_option_trailer: dhcp->options_out_len < DHCP_OPTIONS_LEN\n", dhcp->options_out_len < DHCP_OPTIONS_LEN); - dhcp->msg_out->options[dhcp->options_out_len++] = DHCP_OPTION_END; - /* packet is too small, or not 4 byte aligned? */ - while ((dhcp->options_out_len < DHCP_MIN_OPTIONS_LEN) || (dhcp->options_out_len & 3)) { - /* LWIP_DEBUGF(DHCP_DEBUG,("dhcp_option_trailer:dhcp->options_out_len=%"U16_F", DHCP_OPTIONS_LEN=%"U16_F, dhcp->options_out_len, DHCP_OPTIONS_LEN)); */ - LWIP_ASSERT("dhcp_option_trailer: dhcp->options_out_len < DHCP_OPTIONS_LEN\n", dhcp->options_out_len < DHCP_OPTIONS_LEN); - /* add a fill/padding byte */ - dhcp->msg_out->options[dhcp->options_out_len++] = 0; - } -} - -/** - * Find the offset of a DHCP option inside the DHCP message. - * - * @param dhcp DHCP client - * @param option_type - * - * @return a byte offset into the UDP message where the option was found, or - * zero if the given option was not found. - */ -static u8_t *dhcp_get_option_ptr(struct dhcp *dhcp, u8_t option_type) -{ - u8_t overload = DHCP_OVERLOAD_NONE; - - /* options available? */ - if ((dhcp->options_in != NULL) && (dhcp->options_in_len > 0)) { - /* start with options field */ - u8_t *options = (u8_t *)dhcp->options_in; - u16_t offset = 0; - /* at least 1 byte to read and no end marker, then at least 3 bytes to read? */ - while ((offset < dhcp->options_in_len) && (options[offset] != DHCP_OPTION_END)) { - /* LWIP_DEBUGF(DHCP_DEBUG, ("msg_offset=%"U16_F", q->len=%"U16_F, msg_offset, q->len)); */ - /* are the sname and/or file field overloaded with options? */ - if (options[offset] == DHCP_OPTION_OVERLOAD) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded message detected\n")); - /* skip option type and length */ - offset += 2; - overload = options[offset++]; - } - /* requested option found */ - else if (options[offset] == option_type) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("option found at offset %"U16_F" in options\n", offset)); - return &options[offset]; - /* skip option */ - } else { - LWIP_DEBUGF(DHCP_DEBUG, ("skipping option %"U16_F" in options\n", options[offset])); - /* skip option type */ - offset++; - /* skip option length, and then length bytes */ - offset += 1 + options[offset]; - } - } - /* is this an overloaded message? */ - if (overload != DHCP_OVERLOAD_NONE) { - u16_t field_len; - if (overload == DHCP_OVERLOAD_FILE) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded file field\n")); - options = (u8_t *)&dhcp->msg_in->file; - field_len = DHCP_FILE_LEN; - } else if (overload == DHCP_OVERLOAD_SNAME) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded sname field\n")); - options = (u8_t *)&dhcp->msg_in->sname; - field_len = DHCP_SNAME_LEN; - /* TODO: check if else if () is necessary */ - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("overloaded sname and file field\n")); - options = (u8_t *)&dhcp->msg_in->sname; - field_len = DHCP_FILE_LEN + DHCP_SNAME_LEN; - } - offset = 0; - - /* at least 1 byte to read and no end marker */ - while ((offset < field_len) && (options[offset] != DHCP_OPTION_END)) { - if (options[offset] == option_type) { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("option found at offset=%"U16_F"\n", offset)); - return &options[offset]; - /* skip option */ - } else { - LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE, ("skipping option %"U16_F"\n", options[offset])); - /* skip option type */ - offset++; - offset += 1 + options[offset]; - } - } - } - } - return NULL; -} - -/** - * Return the byte of DHCP option data. - * - * @param client DHCP client. - * @param ptr pointer obtained by dhcp_get_option_ptr(). - * - * @return byte value at the given address. - */ -static u8_t -dhcp_get_option_byte(u8_t *ptr) -{ - LWIP_DEBUGF(DHCP_DEBUG, ("option byte value=%"U16_F"\n", (u16_t)(*ptr))); - return *ptr; -} - -#if 0 /* currently unused */ -/** - * Return the 16-bit value of DHCP option data. - * - * @param client DHCP client. - * @param ptr pointer obtained by dhcp_get_option_ptr(). - * - * @return byte value at the given address. - */ -static u16_t -dhcp_get_option_short(u8_t *ptr) -{ - u16_t value; - value = *ptr++ << 8; - value |= *ptr; - LWIP_DEBUGF(DHCP_DEBUG, ("option short value=%"U16_F"\n", value)); - return value; -} -#endif - -/** - * Return the 32-bit value of DHCP option data. - * - * @param client DHCP client. - * @param ptr pointer obtained by dhcp_get_option_ptr(). - * - * @return byte value at the given address. - */ -static u32_t dhcp_get_option_long(u8_t *ptr) -{ - u32_t value; - value = (u32_t)(*ptr++) << 24; - value |= (u32_t)(*ptr++) << 16; - value |= (u32_t)(*ptr++) << 8; - value |= (u32_t)(*ptr++); - LWIP_DEBUGF(DHCP_DEBUG, ("option long value=%"U32_F"\n", value)); - return value; -} - -#endif /* LWIP_DHCP */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dns.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dns.c deleted file mode 100644 index 62ccf631452..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/dns.c +++ /dev/null @@ -1,982 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * DNS - host name to IP address resolver. - * - */ - -/** - - * This file implements a DNS host name to IP address resolver. - - * Port to lwIP from uIP - * by Jim Pettinato April 2007 - - * uIP version Copyright (c) 2002-2003, Adam Dunkels. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - * - * DNS.C - * - * The lwIP DNS resolver functions are used to lookup a host name and - * map it to a numerical IP address. It maintains a list of resolved - * hostnames that can be queried with the dns_lookup() function. - * New hostnames can be resolved using the dns_query() function. - * - * The lwIP version of the resolver also adds a non-blocking version of - * gethostbyname() that will work with a raw API application. This function - * checks for an IP address string first and converts it if it is valid. - * gethostbyname() then does a dns_lookup() to see if the name is - * already in the table. If so, the IP is returned. If not, a query is - * issued and the function returns with a ERR_INPROGRESS status. The app - * using the dns client must then go into a waiting state. - * - * Once a hostname has been resolved (or found to be non-existent), - * the resolver code calls a specified callback function (which - * must be implemented by the module that uses the resolver). - */ - -/*----------------------------------------------------------------------------- - * RFC 1035 - Domain names - implementation and specification - * RFC 2181 - Clarifications to the DNS Specification - *----------------------------------------------------------------------------*/ - -/** @todo: define good default values (rfc compliance) */ -/** @todo: improve answer parsing, more checkings... */ -/** @todo: check RFC1035 - 7.3. Processing responses */ - -/*----------------------------------------------------------------------------- - * Includes - *----------------------------------------------------------------------------*/ - -#include "lwip/opt.h" - -#if LWIP_DNS /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/udp.h" -#include "lwip/mem.h" -#include "lwip/dns.h" - -#include - -/** DNS server IP address */ -#ifndef DNS_SERVER_ADDRESS -#define DNS_SERVER_ADDRESS inet_addr("208.67.222.222") /* resolver1.opendns.com */ -#endif - -/** DNS server port address */ -#ifndef DNS_SERVER_PORT -#define DNS_SERVER_PORT 53 -#endif - -/** DNS maximum number of retries when asking for a name, before "timeout". */ -#ifndef DNS_MAX_RETRIES -#define DNS_MAX_RETRIES 4 -#endif - -/** DNS resource record max. TTL (one week as default) */ -#ifndef DNS_MAX_TTL -#define DNS_MAX_TTL 604800 -#endif - -/* DNS protocol flags */ -#define DNS_FLAG1_RESPONSE 0x80 -#define DNS_FLAG1_OPCODE_STATUS 0x10 -#define DNS_FLAG1_OPCODE_INVERSE 0x08 -#define DNS_FLAG1_OPCODE_STANDARD 0x00 -#define DNS_FLAG1_AUTHORATIVE 0x04 -#define DNS_FLAG1_TRUNC 0x02 -#define DNS_FLAG1_RD 0x01 -#define DNS_FLAG2_RA 0x80 -#define DNS_FLAG2_ERR_MASK 0x0f -#define DNS_FLAG2_ERR_NONE 0x00 -#define DNS_FLAG2_ERR_NAME 0x03 - -/* DNS protocol states */ -#define DNS_STATE_UNUSED 0 -#define DNS_STATE_NEW 1 -#define DNS_STATE_ASKING 2 -#define DNS_STATE_DONE 3 - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** DNS message header */ -struct dns_hdr { - PACK_STRUCT_FIELD(u16_t id); - PACK_STRUCT_FIELD(u8_t flags1); - PACK_STRUCT_FIELD(u8_t flags2); - PACK_STRUCT_FIELD(u16_t numquestions); - PACK_STRUCT_FIELD(u16_t numanswers); - PACK_STRUCT_FIELD(u16_t numauthrr); - PACK_STRUCT_FIELD(u16_t numextrarr); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif -#define SIZEOF_DNS_HDR 12 - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** DNS query message structure */ -struct dns_query { - /* DNS query record starts with either a domain name or a pointer - to a name already present somewhere in the packet. */ - PACK_STRUCT_FIELD(u16_t type); - PACK_STRUCT_FIELD(u16_t class); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif -#define SIZEOF_DNS_QUERY 4 - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** DNS answer message structure */ -struct dns_answer { - /* DNS answer record starts with either a domain name or a pointer - to a name already present somewhere in the packet. */ - PACK_STRUCT_FIELD(u16_t type); - PACK_STRUCT_FIELD(u16_t class); - PACK_STRUCT_FIELD(u32_t ttl); - PACK_STRUCT_FIELD(u16_t len); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif -#define SIZEOF_DNS_ANSWER 10 - -/** DNS table entry */ -struct dns_table_entry { - u8_t state; - u8_t numdns; - u8_t tmr; - u8_t retries; - u8_t seqno; - u8_t err; - u32_t ttl; - char name[DNS_MAX_NAME_LENGTH]; - struct ip_addr ipaddr; - /* pointer to callback on DNS query done */ - dns_found_callback found; - void *arg; -}; - -#if DNS_LOCAL_HOSTLIST -/** struct used for local host-list */ -struct local_hostlist_entry { - /** static hostname */ - const char *name; - /** static host address in network byteorder */ - u32_t addr; - struct local_hostlist_entry *next; -}; - -#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC -/** Local host-list. For hostnames in this list, no - * external name resolution is performed */ -static struct local_hostlist_entry *local_hostlist_dynamic; -#else /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - -/** Defining this allows the local_hostlist_static to be placed in a different - * linker section (e.g. FLASH) */ -#ifndef DNS_LOCAL_HOSTLIST_STORAGE_PRE -#define DNS_LOCAL_HOSTLIST_STORAGE_PRE static -#endif /* DNS_LOCAL_HOSTLIST_STORAGE_PRE */ -/** Defining this allows the local_hostlist_static to be placed in a different - * linker section (e.g. FLASH) */ -#ifndef DNS_LOCAL_HOSTLIST_STORAGE_POST -#define DNS_LOCAL_HOSTLIST_STORAGE_POST -#endif /* DNS_LOCAL_HOSTLIST_STORAGE_POST */ -DNS_LOCAL_HOSTLIST_STORAGE_PRE struct local_hostlist_entry local_hostlist_static[] - DNS_LOCAL_HOSTLIST_STORAGE_POST = DNS_LOCAL_HOSTLIST_INIT; - -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - -static void dns_init_local(); -#endif /* DNS_LOCAL_HOSTLIST */ - - -/* forward declarations */ -static void dns_recv(void *s, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port); -static void dns_check_entries(void); - -/*----------------------------------------------------------------------------- - * Globales - *----------------------------------------------------------------------------*/ - -/* DNS variables */ -static struct udp_pcb *dns_pcb; -static u8_t dns_seqno; -static struct dns_table_entry dns_table[DNS_TABLE_SIZE]; -static struct ip_addr dns_servers[DNS_MAX_SERVERS]; - -#if (DNS_USES_STATIC_BUF == 1) -static u8_t dns_payload[DNS_MSG_SIZE]; -#endif /* (DNS_USES_STATIC_BUF == 1) */ - -/** - * Initialize the resolver: set up the UDP pcb and configure the default server - * (DNS_SERVER_ADDRESS). - */ -void -dns_init() -{ - struct ip_addr dnsserver; - - /* initialize default DNS server address */ - dnsserver.addr = DNS_SERVER_ADDRESS; - - LWIP_DEBUGF(DNS_DEBUG, ("dns_init: initializing\n")); - - /* if dns client not yet initialized... */ - if (dns_pcb == NULL) { - dns_pcb = udp_new(); - - if (dns_pcb != NULL) { - /* initialize DNS table not needed (initialized to zero since it is a - * global variable) */ - LWIP_ASSERT("For implicit initialization to work, DNS_STATE_UNUSED needs to be 0", - DNS_STATE_UNUSED == 0); - - /* initialize DNS client */ - udp_bind(dns_pcb, IP_ADDR_ANY, 0); - udp_recv(dns_pcb, dns_recv, NULL); - - /* initialize default DNS primary server */ - dns_setserver(0, &dnsserver); - } - } -#if DNS_LOCAL_HOSTLIST - dns_init_local(); -#endif -} - -/** - * Initialize one of the DNS servers. - * - * @param numdns the index of the DNS server to set must be < DNS_MAX_SERVERS - * @param dnsserver IP address of the DNS server to set - */ -void -dns_setserver(u8_t numdns, struct ip_addr *dnsserver) -{ - if ((numdns < DNS_MAX_SERVERS) && (dns_pcb != NULL) && - (dnsserver != NULL) && (dnsserver->addr !=0 )) { - dns_servers[numdns] = (*dnsserver); - } -} - -/** - * Obtain one of the currently configured DNS server. - * - * @param numdns the index of the DNS server - * @return IP address of the indexed DNS server or "ip_addr_any" if the DNS - * server has not been configured. - */ -struct ip_addr -dns_getserver(u8_t numdns) -{ - if (numdns < DNS_MAX_SERVERS) { - return dns_servers[numdns]; - } else { - return *IP_ADDR_ANY; - } -} - -/** - * The DNS resolver client timer - handle retries and timeouts and should - * be called every DNS_TMR_INTERVAL milliseconds (every second by default). - */ -void -dns_tmr(void) -{ - if (dns_pcb != NULL) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_tmr: dns_check_entries\n")); - dns_check_entries(); - } -} - -#if DNS_LOCAL_HOSTLIST -static void -dns_init_local() -{ -#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC && defined(DNS_LOCAL_HOSTLIST_INIT) - int i; - struct local_hostlist_entry *entry; - /* Dynamic: copy entries from DNS_LOCAL_HOSTLIST_INIT to list */ - struct local_hostlist_entry local_hostlist_init[] = DNS_LOCAL_HOSTLIST_INIT; - for (i = 0; i < sizeof(local_hostlist_init) / sizeof(struct local_hostlist_entry); i++) { - entry = mem_malloc(sizeof(struct local_hostlist_entry)); - LWIP_ASSERT("mem-error in dns_init_local", entry != NULL); - if (entry != NULL) { - struct local_hostlist_entry *init_entry = &local_hostlist_init[i]; - entry->name = init_entry->name; - entry->addr = init_entry->addr; - entry->next = local_hostlist_dynamic; - local_hostlist_dynamic = entry; - } - } -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC && defined(DNS_LOCAL_HOSTLIST_INIT) */ -} - -/** - * Scans the local host-list for a hostname. - * - * @param hostname Hostname to look for in the local host-list - * @return The first IP address for the hostname in the local host-list or - * INADDR_NONE if not found. - */ -static u32_t -dns_lookup_local(const char *hostname) -{ -#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC - struct local_hostlist_entry *entry = local_hostlist_dynamic; - while(entry != NULL) { - if(strcmp(entry->name, hostname) == 0) { - return entry->addr; - } - entry = entry->next; - } -#else /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - int i; - for (i = 0; i < sizeof(local_hostlist_static) / sizeof(struct local_hostlist_entry); i++) { - if(strcmp(local_hostlist_static[i].name, hostname) == 0) { - return local_hostlist_static[i].addr; - } - } -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - return INADDR_NONE; -} - -#if DNS_LOCAL_HOSTLIST_IS_DYNAMIC -/** Remove all entries from the local host-list for a specific hostname - * and/or IP addess - * - * @param hostname hostname for which entries shall be removed from the local - * host-list - * @param addr address for which entries shall be removed from the local host-list - * @return the number of removed entries - */ -int -dns_local_removehost(const char *hostname, const struct ip_addr *addr) -{ - int removed = 0; - struct local_hostlist_entry *entry = local_hostlist_dynamic; - struct local_hostlist_entry *last_entry = NULL; - while (entry != NULL) { - if (((hostname == NULL) || !strcmp(entry->name, hostname)) && - ((addr == NULL) || (entry->addr == addr->addr))) { - struct local_hostlist_entry *free_entry; - if (last_entry != NULL) { - last_entry->next = entry->next; - } else { - local_hostlist_dynamic = entry->next; - } - free_entry = entry; - entry = entry->next; - mem_free(free_entry); - removed++; - } else { - last_entry = entry; - entry = entry->next; - } - } - return removed; -} - -/** - * Add a hostname/IP address pair to the local host-list. - * Duplicates are not checked. - * - * @param hostname hostname of the new entry - * @param addr IP address of the new entry - * @return ERR_OK if succeeded or ERR_MEM on memory error - */ -err_t -dns_local_addhost(const char *hostname, const struct ip_addr *addr) -{ - struct local_hostlist_entry *entry; - entry = mem_malloc(sizeof(struct local_hostlist_entry)); - if (entry == NULL) { - return ERR_MEM; - } - entry->name = hostname; - entry->addr = addr->addr; - entry->next = local_hostlist_dynamic; - local_hostlist_dynamic = entry; - return ERR_OK; -} -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC*/ -#endif /* DNS_LOCAL_HOSTLIST */ - -/** - * Look up a hostname in the array of known hostnames. - * - * @note This function only looks in the internal array of known - * hostnames, it does not send out a query for the hostname if none - * was found. The function dns_enqueue() can be used to send a query - * for a hostname. - * - * @param name the hostname to look up - * @return the hostname's IP address, as u32_t (instead of struct ip_addr to - * better check for failure: != INADDR_NONE) or INADDR_NONE if the hostname - * was not found in the cached dns_table. - */ -static u32_t -dns_lookup(const char *name) -{ - u8_t i; -#if DNS_LOCAL_HOSTLIST || defined(DNS_LOOKUP_LOCAL_EXTERN) - u32_t addr; -#endif /* DNS_LOCAL_HOSTLIST || defined(DNS_LOOKUP_LOCAL_EXTERN) */ -#if DNS_LOCAL_HOSTLIST - if ((addr = dns_lookup_local(name)) != INADDR_NONE) { - return addr; - } -#endif /* DNS_LOCAL_HOSTLIST */ -#ifdef DNS_LOOKUP_LOCAL_EXTERN - if((addr = DNS_LOOKUP_LOCAL_EXTERN(name)) != INADDR_NONE) { - return addr; - } -#endif /* DNS_LOOKUP_LOCAL_EXTERN */ - - /* Walk through name list, return entry if found. If not, return NULL. */ - for (i = 0; i < DNS_TABLE_SIZE; ++i) { - if ((dns_table[i].state == DNS_STATE_DONE) && - (strcmp(name, dns_table[i].name) == 0)) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_lookup: \"%s\": found = ", name)); - ip_addr_debug_print(DNS_DEBUG, &(dns_table[i].ipaddr)); - LWIP_DEBUGF(DNS_DEBUG, ("\n")); - return dns_table[i].ipaddr.addr; - } - } - - return INADDR_NONE; -} - -#if DNS_DOES_NAME_CHECK -/** - * Compare the "dotted" name "query" with the encoded name "response" - * to make sure an answer from the DNS server matches the current dns_table - * entry (otherwise, answers might arrive late for hostname not on the list - * any more). - * - * @param query hostname (not encoded) from the dns_table - * @param response encoded hostname in the DNS response - * @return 0: names equal; 1: names differ - */ -static u8_t -dns_compare_name(unsigned char *query, unsigned char *response) -{ - unsigned char n; - - do { - n = *response++; - /** @see RFC 1035 - 4.1.4. Message compression */ - if ((n & 0xc0) == 0xc0) { - /* Compressed name */ - break; - } else { - /* Not compressed name */ - while (n > 0) { - if ((*query) != (*response)) { - return 1; - } - ++response; - ++query; - --n; - }; - ++query; - } - } while (*response != 0); - - return 0; -} -#endif /* DNS_DOES_NAME_CHECK */ - -/** - * Walk through a compact encoded DNS name and return the end of the name. - * - * @param query encoded DNS name in the DNS server response - * @return end of the name - */ -static unsigned char * -dns_parse_name(unsigned char *query) -{ - unsigned char n; - - do { - n = *query++; - /** @see RFC 1035 - 4.1.4. Message compression */ - if ((n & 0xc0) == 0xc0) { - /* Compressed name */ - break; - } else { - /* Not compressed name */ - while (n > 0) { - ++query; - --n; - }; - } - } while (*query != 0); - - return query + 1; -} - -/** - * Send a DNS query packet. - * - * @param numdns index of the DNS server in the dns_servers table - * @param name hostname to query - * @param id index of the hostname in dns_table, used as transaction ID in the - * DNS query packet - * @return ERR_OK if packet is sent; an err_t indicating the problem otherwise - */ -static err_t -dns_send(u8_t numdns, const char* name, u8_t id) -{ - err_t err; - struct dns_hdr *hdr; - struct dns_query qry; - struct pbuf *p; - char *query, *nptr; - const char *pHostname; - u8_t n; - - LWIP_DEBUGF(DNS_DEBUG, ("dns_send: dns_servers[%"U16_F"] \"%s\": request\n", - (u16_t)(numdns), name)); - LWIP_ASSERT("dns server out of array", numdns < DNS_MAX_SERVERS); - LWIP_ASSERT("dns server has no IP address set", dns_servers[numdns].addr != 0); - - /* if here, we have either a new query or a retry on a previous query to process */ - p = pbuf_alloc(PBUF_TRANSPORT, SIZEOF_DNS_HDR + DNS_MAX_NAME_LENGTH + - SIZEOF_DNS_QUERY, PBUF_RAM); - if (p != NULL) { - LWIP_ASSERT("pbuf must be in one piece", p->next == NULL); - /* fill dns header */ - hdr = (struct dns_hdr*)p->payload; - memset(hdr, 0, SIZEOF_DNS_HDR); - hdr->id = htons(id); - hdr->flags1 = DNS_FLAG1_RD; - hdr->numquestions = htons(1); - query = (char*)hdr + SIZEOF_DNS_HDR; - pHostname = name; - --pHostname; - - /* convert hostname into suitable query format. */ - do { - ++pHostname; - nptr = query; - ++query; - for(n = 0; *pHostname != '.' && *pHostname != 0; ++pHostname) { - *query = *pHostname; - ++query; - ++n; - } - *nptr = n; - } while(*pHostname != 0); - *query++='\0'; - - /* fill dns query */ - qry.type = htons(DNS_RRTYPE_A); - qry.class = htons(DNS_RRCLASS_IN); - MEMCPY( query, &qry, SIZEOF_DNS_QUERY); - - /* resize pbuf to the exact dns query */ - pbuf_realloc(p, (query + SIZEOF_DNS_QUERY) - ((char*)(p->payload))); - - /* connect to the server for faster receiving */ - udp_connect(dns_pcb, &dns_servers[numdns], DNS_SERVER_PORT); - /* send dns packet */ - err = udp_sendto(dns_pcb, p, &dns_servers[numdns], DNS_SERVER_PORT); - - /* free pbuf */ - pbuf_free(p); - } else { - err = ERR_MEM; - } - - return err; -} - -/** - * dns_check_entry() - see if pEntry has not yet been queried and, if so, sends out a query. - * Check an entry in the dns_table: - * - send out query for new entries - * - retry old pending entries on timeout (also with different servers) - * - remove completed entries from the table if their TTL has expired - * - * @param i index of the dns_table entry to check - */ -static void -dns_check_entry(u8_t i) -{ - struct dns_table_entry *pEntry = &dns_table[i]; - - LWIP_ASSERT("array index out of bounds", i < DNS_TABLE_SIZE); - - switch(pEntry->state) { - - case DNS_STATE_NEW: { - /* initialize new entry */ - pEntry->state = DNS_STATE_ASKING; - pEntry->numdns = 0; - pEntry->tmr = 1; - pEntry->retries = 0; - - /* send DNS packet for this entry */ - dns_send(pEntry->numdns, pEntry->name, i); - break; - } - - case DNS_STATE_ASKING: { - if (--pEntry->tmr == 0) { - if (++pEntry->retries == DNS_MAX_RETRIES) { - if ((pEntry->numdns+1numdns+1].addr!=0)) { - /* change of server */ - pEntry->numdns++; - pEntry->tmr = 1; - pEntry->retries = 0; - break; - } else { - LWIP_DEBUGF(DNS_DEBUG, ("dns_check_entry: \"%s\": timeout\n", pEntry->name)); - /* call specified callback function if provided */ - if (pEntry->found) - (*pEntry->found)(pEntry->name, NULL, pEntry->arg); - /* flush this entry */ - pEntry->state = DNS_STATE_UNUSED; - pEntry->found = NULL; - break; - } - } - - /* wait longer for the next retry */ - pEntry->tmr = pEntry->retries; - - /* send DNS packet for this entry */ - dns_send(pEntry->numdns, pEntry->name, i); - } - break; - } - - case DNS_STATE_DONE: { - /* if the time to live is nul */ - if (--pEntry->ttl == 0) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_check_entry: \"%s\": flush\n", pEntry->name)); - /* flush this entry */ - pEntry->state = DNS_STATE_UNUSED; - pEntry->found = NULL; - } - break; - } - case DNS_STATE_UNUSED: - /* nothing to do */ - break; - default: - LWIP_ASSERT("unknown dns_table entry state:", 0); - break; - } -} - -/** - * Call dns_check_entry for each entry in dns_table - check all entries. - */ -static void -dns_check_entries(void) -{ - u8_t i; - - for (i = 0; i < DNS_TABLE_SIZE; ++i) { - dns_check_entry(i); - } -} - -/** - * Receive input function for DNS response packets arriving for the dns UDP pcb. - * - * @params see udp.h - */ -static void -dns_recv(void *arg, struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *addr, u16_t port) -{ - u8_t i; - char *pHostname; - struct dns_hdr *hdr; - struct dns_answer ans; - struct dns_table_entry *pEntry; - u8_t nquestions, nanswers; -#if (DNS_USES_STATIC_BUF == 0) - u8_t dns_payload[DNS_MSG_SIZE]; -#endif /* (DNS_USES_STATIC_BUF == 0) */ -#if (DNS_USES_STATIC_BUF == 2) - u8_t* dns_payload; -#endif /* (DNS_USES_STATIC_BUF == 2) */ - - LWIP_UNUSED_ARG(arg); - LWIP_UNUSED_ARG(pcb); - LWIP_UNUSED_ARG(addr); - LWIP_UNUSED_ARG(port); - - /* is the dns message too big ? */ - if (p->tot_len > DNS_MSG_SIZE) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: pbuf too big\n")); - /* free pbuf and return */ - goto memerr1; - } - - /* is the dns message big enough ? */ - if (p->tot_len < (SIZEOF_DNS_HDR + SIZEOF_DNS_QUERY + SIZEOF_DNS_ANSWER)) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: pbuf too small\n")); - /* free pbuf and return */ - goto memerr1; - } - -#if (DNS_USES_STATIC_BUF == 2) - dns_payload = mem_malloc(p->tot_len); - if (dns_payload == NULL) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: mem_malloc error\n")); - /* free pbuf and return */ - goto memerr1; - } -#endif /* (DNS_USES_STATIC_BUF == 2) */ - - /* copy dns payload inside static buffer for processing */ - if (pbuf_copy_partial(p, dns_payload, p->tot_len, 0) == p->tot_len) { - /* The ID in the DNS header should be our entry into the name table. */ - hdr = (struct dns_hdr*)dns_payload; - i = htons(hdr->id); - if (i < DNS_TABLE_SIZE) { - pEntry = &dns_table[i]; - if(pEntry->state == DNS_STATE_ASKING) { - /* This entry is now completed. */ - pEntry->state = DNS_STATE_DONE; - pEntry->err = hdr->flags2 & DNS_FLAG2_ERR_MASK; - - /* We only care about the question(s) and the answers. The authrr - and the extrarr are simply discarded. */ - nquestions = htons(hdr->numquestions); - nanswers = htons(hdr->numanswers); - - /* Check for error. If so, call callback to inform. */ - if (((hdr->flags1 & DNS_FLAG1_RESPONSE) == 0) || (pEntry->err != 0) || (nquestions != 1)) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": error in flags\n", pEntry->name)); - /* call callback to indicate error, clean up memory and return */ - goto responseerr; - } - -#if DNS_DOES_NAME_CHECK - /* Check if the name in the "question" part match with the name in the entry. */ - if (dns_compare_name((unsigned char *)(pEntry->name), (unsigned char *)dns_payload + SIZEOF_DNS_HDR) != 0) { - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": response not match to query\n", pEntry->name)); - /* call callback to indicate error, clean up memory and return */ - goto responseerr; - } -#endif /* DNS_DOES_NAME_CHECK */ - - /* Skip the name in the "question" part */ - pHostname = (char *) dns_parse_name((unsigned char *)dns_payload + SIZEOF_DNS_HDR) + SIZEOF_DNS_QUERY; - - while(nanswers > 0) { - /* skip answer resource record's host name */ - pHostname = (char *) dns_parse_name((unsigned char *)pHostname); - - /* Check for IP address type and Internet class. Others are discarded. */ - MEMCPY(&ans, pHostname, SIZEOF_DNS_ANSWER); - if((ntohs(ans.type) == DNS_RRTYPE_A) && (ntohs(ans.class) == DNS_RRCLASS_IN) && (ntohs(ans.len) == sizeof(struct ip_addr)) ) { - /* read the answer resource record's TTL, and maximize it if needed */ - pEntry->ttl = ntohl(ans.ttl); - if (pEntry->ttl > DNS_MAX_TTL) { - pEntry->ttl = DNS_MAX_TTL; - } - /* read the IP address after answer resource record's header */ - MEMCPY( &(pEntry->ipaddr), (pHostname+SIZEOF_DNS_ANSWER), sizeof(struct ip_addr)); - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": response = ", pEntry->name)); - ip_addr_debug_print(DNS_DEBUG, (&(pEntry->ipaddr))); - LWIP_DEBUGF(DNS_DEBUG, ("\n")); - /* call specified callback function if provided */ - if (pEntry->found) { - (*pEntry->found)(pEntry->name, &pEntry->ipaddr, pEntry->arg); - } - /* deallocate memory and return */ - goto memerr2; - } else { - pHostname = pHostname + SIZEOF_DNS_ANSWER + htons(ans.len); - } - --nanswers; - } - LWIP_DEBUGF(DNS_DEBUG, ("dns_recv: \"%s\": error in response\n", pEntry->name)); - /* call callback to indicate error, clean up memory and return */ - goto responseerr; - } - } - } - - /* deallocate memory and return */ - goto memerr2; - -responseerr: - /* ERROR: call specified callback function with NULL as name to indicate an error */ - if (pEntry->found) { - (*pEntry->found)(pEntry->name, NULL, pEntry->arg); - } - /* flush this entry */ - pEntry->state = DNS_STATE_UNUSED; - pEntry->found = NULL; - -memerr2: -#if (DNS_USES_STATIC_BUF == 2) - /* free dns buffer */ - mem_free(dns_payload); -#endif /* (DNS_USES_STATIC_BUF == 2) */ - -memerr1: - /* free pbuf */ - pbuf_free(p); - return; -} - -/** - * Queues a new hostname to resolve and sends out a DNS query for that hostname - * - * @param name the hostname that is to be queried - * @param found a callback founction to be called on success, failure or timeout - * @param callback_arg argument to pass to the callback function - * @return @return a err_t return code. - */ -static err_t -dns_enqueue(const char *name, dns_found_callback found, void *callback_arg) -{ - u8_t i; - u8_t lseq, lseqi; - struct dns_table_entry *pEntry = NULL; - - /* search an unused entry, or the oldest one */ - lseq = lseqi = 0; - for (i = 0; i < DNS_TABLE_SIZE; ++i) { - pEntry = &dns_table[i]; - /* is it an unused entry ? */ - if (pEntry->state == DNS_STATE_UNUSED) - break; - - /* check if this is the oldest completed entry */ - if (pEntry->state == DNS_STATE_DONE) { - if ((dns_seqno - pEntry->seqno) > lseq) { - lseq = dns_seqno - pEntry->seqno; - lseqi = i; - } - } - } - - /* if we don't have found an unused entry, use the oldest completed one */ - if (i == DNS_TABLE_SIZE) { - if ((lseqi >= DNS_TABLE_SIZE) || (dns_table[lseqi].state != DNS_STATE_DONE)) { - /* no entry can't be used now, table is full */ - LWIP_DEBUGF(DNS_DEBUG, ("dns_enqueue: \"%s\": DNS entries table is full\n", name)); - return ERR_MEM; - } else { - /* use the oldest completed one */ - i = lseqi; - pEntry = &dns_table[i]; - } - } - - /* use this entry */ - LWIP_DEBUGF(DNS_DEBUG, ("dns_enqueue: \"%s\": use DNS entry %"U16_F"\n", name, (u16_t)(i))); - - /* fill the entry */ - pEntry->state = DNS_STATE_NEW; - pEntry->seqno = dns_seqno++; - pEntry->found = found; - pEntry->arg = callback_arg; - strcpy(pEntry->name, name); - - /* force to send query without waiting timer */ - dns_check_entry(i); - - /* dns query is enqueued */ - return ERR_INPROGRESS; -} - -/** - * Resolve a hostname (string) into an IP address. - * NON-BLOCKING callback version for use with raw API!!! - * - * Returns immediately with one of err_t return codes: - * - ERR_OK if hostname is a valid IP address string or the host - * name is already in the local names table. - * - ERR_INPROGRESS enqueue a request to be sent to the DNS server - * for resolution if no errors are present. - * - * @param hostname the hostname that is to be queried - * @param addr pointer to a struct ip_addr where to store the address if it is already - * cached in the dns_table (only valid if ERR_OK is returned!) - * @param found a callback function to be called on success, failure or timeout (only if - * ERR_INPROGRESS is returned!) - * @param callback_arg argument to pass to the callback function - * @return a err_t return code. - */ -err_t -dns_gethostbyname(const char *hostname, struct ip_addr *addr, dns_found_callback found, - void *callback_arg) -{ - /* not initialized or no valid server yet, or invalid addr pointer - * or invalid hostname or invalid hostname length */ - if ((dns_pcb == NULL) || (addr == NULL) || - (!hostname) || (!hostname[0]) || - (strlen(hostname) >= DNS_MAX_NAME_LENGTH)) { - return ERR_VAL; - } - -#if LWIP_HAVE_LOOPIF - if (strcmp(hostname,"localhost")==0) { - addr->addr = htonl(INADDR_LOOPBACK); - return ERR_OK; - } -#endif /* LWIP_HAVE_LOOPIF */ - - /* host name already in octet notation? set ip addr and return ERR_OK - * already have this address cached? */ - if (((addr->addr = inet_addr(hostname)) != INADDR_NONE) || - ((addr->addr = dns_lookup(hostname)) != INADDR_NONE)) { - return ERR_OK; - } - - /* queue query with specified callback */ - return dns_enqueue(hostname, found, callback_arg); -} - -#endif /* LWIP_DNS */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/init.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/init.c deleted file mode 100644 index b7995276c07..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/init.c +++ /dev/null @@ -1,276 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Modules initialization - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/init.h" -#include "lwip/stats.h" -#include "lwip/sys.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/pbuf.h" -#include "lwip/netif.h" -#include "lwip/sockets.h" -#include "lwip/ip.h" -#include "lwip/raw.h" -#include "lwip/udp.h" -#include "lwip/tcp.h" -#include "lwip/snmp_msg.h" -#include "lwip/autoip.h" -#include "lwip/igmp.h" -#include "lwip/dns.h" -#include "netif/etharp.h" - -/* Compile-time sanity checks for configuration errors. - * These can be done independently of LWIP_DEBUG, without penalty. - */ -#ifndef BYTE_ORDER - #error "BYTE_ORDER is not defined, you have to define it in your cc.h" -#endif -#if (!IP_SOF_BROADCAST && IP_SOF_BROADCAST_RECV) - #error "If you want to use broadcast filter per pcb on recv operations, you have to define IP_SOF_BROADCAST=1 in your lwipopts.h" -#endif -#if (!LWIP_ARP && ARP_QUEUEING) - #error "If you want to use ARP Queueing, you have to define LWIP_ARP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_UDPLITE) - #error "If you want to use UDP Lite, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_SNMP) - #error "If you want to use SNMP, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_DHCP) - #error "If you want to use DHCP, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_IGMP) - #error "If you want to use IGMP, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (!LWIP_UDP && LWIP_DNS) - #error "If you want to use DNS, you have to define LWIP_UDP=1 in your lwipopts.h" -#endif -#if (LWIP_ARP && (ARP_TABLE_SIZE > 0x7f)) - #error "If you want to use ARP, ARP_TABLE_SIZE must fit in an s8_t, so, you have to reduce it in your lwipopts.h" -#endif -#if (LWIP_ARP && ARP_QUEUEING && (MEMP_NUM_ARP_QUEUE<=0)) - #error "If you want to use ARP Queueing, you have to define MEMP_NUM_ARP_QUEUE>=1 in your lwipopts.h" -#endif -#if (LWIP_RAW && (MEMP_NUM_RAW_PCB<=0)) - #error "If you want to use RAW, you have to define MEMP_NUM_RAW_PCB>=1 in your lwipopts.h" -#endif -#if (LWIP_UDP && (MEMP_NUM_UDP_PCB<=0)) - #error "If you want to use UDP, you have to define MEMP_NUM_UDP_PCB>=1 in your lwipopts.h" -#endif -#if (LWIP_TCP && (MEMP_NUM_TCP_PCB<=0)) - #error "If you want to use TCP, you have to define MEMP_NUM_TCP_PCB>=1 in your lwipopts.h" -#endif -#if (LWIP_TCP && (TCP_WND > 0xffff)) - #error "If you want to use TCP, TCP_WND must fit in an u16_t, so, you have to reduce it in your lwipopts.h" -#endif -#if (LWIP_TCP && (TCP_SND_QUEUELEN > 0xffff)) - #error "If you want to use TCP, TCP_SND_QUEUELEN must fit in an u16_t, so, you have to reduce it in your lwipopts.h" -#endif -#if (LWIP_TCP && ((TCP_MAXRTX > 12) || (TCP_SYNMAXRTX > 12))) - #error "If you want to use TCP, TCP_MAXRTX and TCP_SYNMAXRTX must less or equal to 12 (due to tcp_backoff table), so, you have to reduce them in your lwipopts.h" -#endif -#if (LWIP_TCP && TCP_LISTEN_BACKLOG && (TCP_DEFAULT_LISTEN_BACKLOG < 0) || (TCP_DEFAULT_LISTEN_BACKLOG > 0xff)) - #error "If you want to use TCP backlog, TCP_DEFAULT_LISTEN_BACKLOG must fit into an u8_t" -#endif -#if (LWIP_IGMP && (MEMP_NUM_IGMP_GROUP<=1)) - #error "If you want to use IGMP, you have to define MEMP_NUM_IGMP_GROUP>1 in your lwipopts.h" -#endif -#if (PPP_SUPPORT && (NO_SYS==1)) - #error "If you want to use PPP, you have to define NO_SYS=0 in your lwipopts.h" -#endif -#if (LWIP_NETIF_API && (NO_SYS==1)) - #error "If you want to use NETIF API, you have to define NO_SYS=0 in your lwipopts.h" -#endif -#if ((LWIP_SOCKET || LWIP_NETCONN) && (NO_SYS==1)) - #error "If you want to use Sequential API, you have to define NO_SYS=0 in your lwipopts.h" -#endif -#if ((LWIP_NETCONN || LWIP_SOCKET) && (MEMP_NUM_TCPIP_MSG_API<=0)) - #error "If you want to use Sequential API, you have to define MEMP_NUM_TCPIP_MSG_API>=1 in your lwipopts.h" -#endif -#if (!LWIP_NETCONN && LWIP_SOCKET) - #error "If you want to use Socket API, you have to define LWIP_NETCONN=1 in your lwipopts.h" -#endif -#if (((!LWIP_DHCP) || (!LWIP_AUTOIP)) && LWIP_DHCP_AUTOIP_COOP) - #error "If you want to use DHCP/AUTOIP cooperation mode, you have to define LWIP_DHCP=1 and LWIP_AUTOIP=1 in your lwipopts.h" -#endif -#if (((!LWIP_DHCP) || (!LWIP_ARP)) && DHCP_DOES_ARP_CHECK) - #error "If you want to use DHCP ARP checking, you have to define LWIP_DHCP=1 and LWIP_ARP=1 in your lwipopts.h" -#endif -#if (!LWIP_ARP && LWIP_AUTOIP) - #error "If you want to use AUTOIP, you have to define LWIP_ARP=1 in your lwipopts.h" -#endif -#if (LWIP_SNMP && (SNMP_CONCURRENT_REQUESTS<=0)) - #error "If you want to use SNMP, you have to define SNMP_CONCURRENT_REQUESTS>=1 in your lwipopts.h" -#endif -#if (LWIP_SNMP && (SNMP_TRAP_DESTINATIONS<=0)) - #error "If you want to use SNMP, you have to define SNMP_TRAP_DESTINATIONS>=1 in your lwipopts.h" -#endif -#if (LWIP_TCP && ((LWIP_EVENT_API && LWIP_CALLBACK_API) || (!LWIP_EVENT_API && !LWIP_CALLBACK_API))) - #error "One and exactly one of LWIP_EVENT_API and LWIP_CALLBACK_API has to be enabled in your lwipopts.h" -#endif -/* There must be sufficient timeouts, taking into account requirements of the subsystems. */ -#if ((NO_SYS==0) && (MEMP_NUM_SYS_TIMEOUT < (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + PPP_SUPPORT))) - #error "MEMP_NUM_SYS_TIMEOUT is too low to accomodate all required timeouts" -#endif -#if (IP_REASSEMBLY && (MEMP_NUM_REASSDATA > IP_REASS_MAX_PBUFS)) - #error "MEMP_NUM_REASSDATA > IP_REASS_MAX_PBUFS doesn't make sense since each struct ip_reassdata must hold 2 pbufs at least!" -#endif -#if (MEM_LIBC_MALLOC && MEM_USE_POOLS) - #error "MEM_LIBC_MALLOC and MEM_USE_POOLS may not both be simultaneously enabled in your lwipopts.h" -#endif -#if (MEM_USE_POOLS && !MEMP_USE_CUSTOM_POOLS) - #error "MEM_USE_POOLS requires custom pools (MEMP_USE_CUSTOM_POOLS) to be enabled in your lwipopts.h" -#endif -#if (PBUF_POOL_BUFSIZE <= MEM_ALIGNMENT) - #error "PBUF_POOL_BUFSIZE must be greater than MEM_ALIGNMENT or the offset may take the full first pbuf" -#endif -#if (TCP_QUEUE_OOSEQ && !LWIP_TCP) - #error "TCP_QUEUE_OOSEQ requires LWIP_TCP" -#endif -#if (DNS_LOCAL_HOSTLIST && !DNS_LOCAL_HOSTLIST_IS_DYNAMIC && !(defined(DNS_LOCAL_HOSTLIST_INIT))) - #error "you have to define define DNS_LOCAL_HOSTLIST_INIT {{'host1', 0x123}, {'host2', 0x234}} to initialize DNS_LOCAL_HOSTLIST" -#endif -#if PPP_SUPPORT && !PPPOS_SUPPORT & !PPPOE_SUPPORT - #error "PPP_SUPPORT needs either PPPOS_SUPPORT or PPPOE_SUPPORT turned on" -#endif - - -/* Compile-time checks for deprecated options. - */ -#ifdef MEMP_NUM_TCPIP_MSG - #error "MEMP_NUM_TCPIP_MSG option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef MEMP_NUM_API_MSG - #error "MEMP_NUM_API_MSG option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef TCP_REXMIT_DEBUG - #error "TCP_REXMIT_DEBUG option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef RAW_STATS - #error "RAW_STATS option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef ETHARP_QUEUE_FIRST - #error "ETHARP_QUEUE_FIRST option is deprecated. Remove it from your lwipopts.h." -#endif -#ifdef ETHARP_ALWAYS_INSERT - #error "ETHARP_ALWAYS_INSERT option is deprecated. Remove it from your lwipopts.h." -#endif -#if SO_REUSE -/* I removed the lot since this was an ugly hack. It broke the raw-API. - It also came with many ugly goto's, Christiaan Simons. */ - #error "SO_REUSE currently unavailable, this was a hack" -#endif - -#ifdef LWIP_DEBUG -static void -lwip_sanity_check(void) -{ - /* Warnings */ -#if LWIP_NETCONN - if (MEMP_NUM_NETCONN > (MEMP_NUM_TCP_PCB+MEMP_NUM_TCP_PCB_LISTEN+MEMP_NUM_UDP_PCB+MEMP_NUM_RAW_PCB)) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: MEMP_NUM_NETCONN should be less than the sum of MEMP_NUM_{TCP,RAW,UDP}_PCB+MEMP_NUM_TCP_PCB_LISTEN\n")); -#endif /* LWIP_NETCONN */ -#if LWIP_TCP - if (MEMP_NUM_TCP_SEG < TCP_SND_QUEUELEN) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: MEMP_NUM_TCP_SEG should be at least as big as TCP_SND_QUEUELEN\n")); - if (TCP_SND_BUF < 2 * TCP_MSS) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SND_BUF must be at least as much as (2 * TCP_MSS) for things to work smoothly\n")); - if (TCP_SND_QUEUELEN < (2 * (TCP_SND_BUF/TCP_MSS))) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SND_QUEUELEN must be at least as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work\n")); - if (TCP_SNDLOWAT > TCP_SND_BUF) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SNDLOWAT must be less than or equal to TCP_SND_BUF.\n")); - if (TCP_WND > (PBUF_POOL_SIZE*PBUF_POOL_BUFSIZE)) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_WND is larger than space provided by PBUF_POOL_SIZE*PBUF_POOL_BUFSIZE\n")); - if (TCP_WND < TCP_MSS) - LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_WND is smaller than MSS\n")); -#endif /* LWIP_TCP */ -} -#else /* LWIP_DEBUG */ -#define lwip_sanity_check() -#endif /* LWIP_DEBUG */ - -/** - * Perform Sanity check of user-configurable values, and initialize all modules. - */ -void -lwip_init(void) -{ - /* Sanity check user-configurable values */ - lwip_sanity_check(); - - /* Modules initialization */ - stats_init(); - sys_init(); - mem_init(); - memp_init(); - pbuf_init(); - netif_init(); -#if LWIP_SOCKET - lwip_socket_init(); -#endif /* LWIP_SOCKET */ - ip_init(); -#if LWIP_ARP - etharp_init(); -#endif /* LWIP_ARP */ -#if LWIP_RAW - raw_init(); -#endif /* LWIP_RAW */ -#if LWIP_UDP - udp_init(); -#endif /* LWIP_UDP */ -#if LWIP_TCP - tcp_init(); -#endif /* LWIP_TCP */ -#if LWIP_SNMP - snmp_init(); -#endif /* LWIP_SNMP */ -#if LWIP_AUTOIP - autoip_init(); -#endif /* LWIP_AUTOIP */ -#if LWIP_IGMP - igmp_init(); -#endif /* LWIP_IGMP */ -#if LWIP_DNS - dns_init(); -#endif /* LWIP_DNS */ -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/autoip.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/autoip.c deleted file mode 100644 index dde6b6d05e5..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/autoip.c +++ /dev/null @@ -1,499 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * AutoIP Automatic LinkLocal IP Configuration - * - */ - -/* - * - * Copyright (c) 2007 Dominik Spies - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * Author: Dominik Spies - * - * This is a AutoIP implementation for the lwIP TCP/IP stack. It aims to conform - * with RFC 3927. - * - * - * Please coordinate changes and requests with Dominik Spies - * - */ - -/******************************************************************************* - * USAGE: - * - * define LWIP_AUTOIP 1 in your lwipopts.h - * - * If you don't use tcpip.c (so, don't call, you don't call tcpip_init): - * - First, call autoip_init(). - * - call autoip_tmr() all AUTOIP_TMR_INTERVAL msces, - * that should be defined in autoip.h. - * I recommend a value of 100. The value must divide 1000 with a remainder almost 0. - * Possible values are 1000, 500, 333, 250, 200, 166, 142, 125, 111, 100 .... - * - * Without DHCP: - * - Call autoip_start() after netif_add(). - * - * With DHCP: - * - define LWIP_DHCP_AUTOIP_COOP 1 in your lwipopts.h. - * - Configure your DHCP Client. - * - */ - -#include "lwip/opt.h" - -#if LWIP_AUTOIP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/mem.h" -#include "lwip/udp.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/autoip.h" -#include "netif/etharp.h" - -#include -#include - -/* 169.254.0.0 */ -#define AUTOIP_NET 0xA9FE0000 -/* 169.254.1.0 */ -#define AUTOIP_RANGE_START (AUTOIP_NET | 0x0100) -/* 169.254.254.255 */ -#define AUTOIP_RANGE_END (AUTOIP_NET | 0xFEFF) - - -/** Pseudo random macro based on netif informations. - * You could use "rand()" from the C Library if you define LWIP_AUTOIP_RAND in lwipopts.h */ -#ifndef LWIP_AUTOIP_RAND -#define LWIP_AUTOIP_RAND(netif) ( (((u32_t)((netif->hwaddr[5]) & 0xff) << 24) | \ - ((u32_t)((netif->hwaddr[3]) & 0xff) << 16) | \ - ((u32_t)((netif->hwaddr[2]) & 0xff) << 8) | \ - ((u32_t)((netif->hwaddr[4]) & 0xff))) + \ - (netif->autoip?netif->autoip->tried_llipaddr:0)) -#endif /* LWIP_AUTOIP_RAND */ - -/** - * Macro that generates the initial IP address to be tried by AUTOIP. - * If you want to override this, define it to something else in lwipopts.h. - */ -#ifndef LWIP_AUTOIP_CREATE_SEED_ADDR -#define LWIP_AUTOIP_CREATE_SEED_ADDR(netif) \ - htonl(AUTOIP_RANGE_START + ((u32_t)(((u8_t)(netif->hwaddr[4])) | \ - ((u32_t)((u8_t)(netif->hwaddr[5]))) << 8))) -#endif /* LWIP_AUTOIP_CREATE_SEED_ADDR */ - -/* static functions */ -static void autoip_handle_arp_conflict(struct netif *netif); - -/* creates a pseudo random LL IP-Address for a network interface */ -static void autoip_create_addr(struct netif *netif, struct ip_addr *ipaddr); - -/* sends an ARP probe */ -static err_t autoip_arp_probe(struct netif *netif); - -/* sends an ARP announce */ -static err_t autoip_arp_announce(struct netif *netif); - -/* configure interface for use with current LL IP-Address */ -static err_t autoip_bind(struct netif *netif); - -/* start sending probes for llipaddr */ -static void autoip_start_probing(struct netif *netif); - -/** - * Initialize this module - */ -void -autoip_init(void) -{ - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, ("autoip_init()\n")); -} - -/** - * Handle a IP address conflict after an ARP conflict detection - */ -static void -autoip_handle_arp_conflict(struct netif *netif) -{ - /* Somehow detect if we are defending or retreating */ - unsigned char defend = 1; /* tbd */ - - if(defend) { - if(netif->autoip->lastconflict > 0) { - /* retreat, there was a conflicting ARP in the last - * DEFEND_INTERVAL seconds - */ - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_handle_arp_conflict(): we are defending, but in DEFEND_INTERVAL, retreating\n")); - - /* TODO: close all TCP sessions */ - autoip_start(netif); - } else { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_handle_arp_conflict(): we are defend, send ARP Announce\n")); - autoip_arp_announce(netif); - netif->autoip->lastconflict = DEFEND_INTERVAL * AUTOIP_TICKS_PER_SECOND; - } - } else { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_handle_arp_conflict(): we do not defend, retreating\n")); - /* TODO: close all TCP sessions */ - autoip_start(netif); - } -} - -/** - * Create an IP-Address out of range 169.254.1.0 to 169.254.254.255 - * - * @param netif network interface on which create the IP-Address - * @param ipaddr ip address to initialize - */ -static void -autoip_create_addr(struct netif *netif, struct ip_addr *ipaddr) -{ - /* Here we create an IP-Address out of range 169.254.1.0 to 169.254.254.255 - * compliant to RFC 3927 Section 2.1 - * We have 254 * 256 possibilities */ - - u32_t addr = ntohl(LWIP_AUTOIP_CREATE_SEED_ADDR(netif)); - addr += netif->autoip->tried_llipaddr; - addr = AUTOIP_NET | (addr & 0xffff); - /* Now, 169.254.0.0 <= addr <= 169.254.255.255 */ - - if (addr < AUTOIP_RANGE_START) { - addr += AUTOIP_RANGE_END - AUTOIP_RANGE_START + 1; - } - if (addr > AUTOIP_RANGE_END) { - addr -= AUTOIP_RANGE_END - AUTOIP_RANGE_START + 1; - } - LWIP_ASSERT("AUTOIP address not in range", (addr >= AUTOIP_RANGE_START) && - (addr <= AUTOIP_RANGE_END)); - ipaddr->addr = htonl(addr); - - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_create_addr(): tried_llipaddr=%"U16_F", 0x%08"X32_F"\n", - (u16_t)(netif->autoip->tried_llipaddr), (u32_t)(ipaddr->addr))); -} - -/** - * Sends an ARP probe from a network interface - * - * @param netif network interface used to send the probe - */ -static err_t -autoip_arp_probe(struct netif *netif) -{ - return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast, - (struct eth_addr *)netif->hwaddr, IP_ADDR_ANY, ðzero, - &netif->autoip->llipaddr, ARP_REQUEST); -} - -/** - * Sends an ARP announce from a network interface - * - * @param netif network interface used to send the announce - */ -static err_t -autoip_arp_announce(struct netif *netif) -{ - return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast, - (struct eth_addr *)netif->hwaddr, &netif->autoip->llipaddr, ðzero, - &netif->autoip->llipaddr, ARP_REQUEST); -} - -/** - * Configure interface for use with current LL IP-Address - * - * @param netif network interface to configure with current LL IP-Address - */ -static err_t -autoip_bind(struct netif *netif) -{ - struct autoip *autoip = netif->autoip; - struct ip_addr sn_mask, gw_addr; - - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_bind(netif=%p) %c%c%"U16_F" 0x%08"X32_F"\n", - (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num, autoip->llipaddr.addr)); - - IP4_ADDR(&sn_mask, 255, 255, 0, 0); - IP4_ADDR(&gw_addr, 0, 0, 0, 0); - - netif_set_ipaddr(netif, &autoip->llipaddr); - netif_set_netmask(netif, &sn_mask); - netif_set_gw(netif, &gw_addr); - - /* bring the interface up */ - netif_set_up(netif); - - return ERR_OK; -} - -/** - * Start AutoIP client - * - * @param netif network interface on which start the AutoIP client - */ -err_t -autoip_start(struct netif *netif) -{ - struct autoip *autoip = netif->autoip; - err_t result = ERR_OK; - - if(netif_is_up(netif)) { - netif_set_down(netif); - } - - /* Set IP-Address, Netmask and Gateway to 0 to make sure that - * ARP Packets are formed correctly - */ - netif->ip_addr.addr = 0; - netif->netmask.addr = 0; - netif->gw.addr = 0; - - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("autoip_start(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], - netif->name[1], (u16_t)netif->num)); - if(autoip == NULL) { - /* no AutoIP client attached yet? */ - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_start(): starting new AUTOIP client\n")); - autoip = mem_malloc(sizeof(struct autoip)); - if(autoip == NULL) { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_start(): could not allocate autoip\n")); - return ERR_MEM; - } - memset( autoip, 0, sizeof(struct autoip)); - /* store this AutoIP client in the netif */ - netif->autoip = autoip; - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, ("autoip_start(): allocated autoip")); - } else { - autoip->state = AUTOIP_STATE_OFF; - autoip->ttw = 0; - autoip->sent_num = 0; - memset(&autoip->llipaddr, 0, sizeof(struct ip_addr)); - autoip->lastconflict = 0; - } - - autoip_create_addr(netif, &(autoip->llipaddr)); - autoip->tried_llipaddr++; - autoip_start_probing(netif); - - return result; -} - -static void -autoip_start_probing(struct netif *netif) -{ - struct autoip *autoip = netif->autoip; - - autoip->state = AUTOIP_STATE_PROBING; - autoip->sent_num = 0; - - /* time to wait to first probe, this is randomly - * choosen out of 0 to PROBE_WAIT seconds. - * compliant to RFC 3927 Section 2.2.1 - */ - autoip->ttw = (u16_t)(LWIP_AUTOIP_RAND(netif) % (PROBE_WAIT * AUTOIP_TICKS_PER_SECOND)); - - /* - * if we tried more then MAX_CONFLICTS we must limit our rate for - * accquiring and probing address - * compliant to RFC 3927 Section 2.2.1 - */ - if(autoip->tried_llipaddr > MAX_CONFLICTS) { - autoip->ttw = RATE_LIMIT_INTERVAL * AUTOIP_TICKS_PER_SECOND; - } -} - -/** - * Handle a possible change in the network configuration. - * - * If there is an AutoIP address configured, take the interface down - * and begin probing with the same address. - */ -void -autoip_network_changed(struct netif *netif) -{ - if (netif->autoip && netif->autoip->state != AUTOIP_STATE_OFF) { - netif_set_down(netif); - autoip_start_probing(netif); - } -} - -/** - * Stop AutoIP client - * - * @param netif network interface on which stop the AutoIP client - */ -err_t -autoip_stop(struct netif *netif) -{ - netif->autoip->state = AUTOIP_STATE_OFF; - netif_set_down(netif); - return ERR_OK; -} - -/** - * Has to be called in loop every AUTOIP_TMR_INTERVAL milliseconds - */ -void -autoip_tmr() -{ - struct netif *netif = netif_list; - /* loop through netif's */ - while (netif != NULL) { - /* only act on AutoIP configured interfaces */ - if (netif->autoip != NULL) { - if(netif->autoip->lastconflict > 0) { - netif->autoip->lastconflict--; - } - - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_tmr() AutoIP-State: %"U16_F", ttw=%"U16_F"\n", - (u16_t)(netif->autoip->state), netif->autoip->ttw)); - - switch(netif->autoip->state) { - case AUTOIP_STATE_PROBING: - if(netif->autoip->ttw > 0) { - netif->autoip->ttw--; - } else { - if(netif->autoip->sent_num >= PROBE_NUM) { - netif->autoip->state = AUTOIP_STATE_ANNOUNCING; - netif->autoip->sent_num = 0; - netif->autoip->ttw = ANNOUNCE_WAIT * AUTOIP_TICKS_PER_SECOND; - } else { - autoip_arp_probe(netif); - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_tmr() PROBING Sent Probe\n")); - netif->autoip->sent_num++; - /* calculate time to wait to next probe */ - netif->autoip->ttw = (u16_t)((LWIP_AUTOIP_RAND(netif) % - ((PROBE_MAX - PROBE_MIN) * AUTOIP_TICKS_PER_SECOND) ) + - PROBE_MIN * AUTOIP_TICKS_PER_SECOND); - } - } - break; - - case AUTOIP_STATE_ANNOUNCING: - if(netif->autoip->ttw > 0) { - netif->autoip->ttw--; - } else { - if(netif->autoip->sent_num == 0) { - /* We are here the first time, so we waited ANNOUNCE_WAIT seconds - * Now we can bind to an IP address and use it. - * - * autoip_bind calls netif_set_up. This triggers a gratuitous ARP - * which counts as an announcement. - */ - autoip_bind(netif); - } else { - autoip_arp_announce(netif); - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, - ("autoip_tmr() ANNOUNCING Sent Announce\n")); - } - netif->autoip->ttw = ANNOUNCE_INTERVAL * AUTOIP_TICKS_PER_SECOND; - netif->autoip->sent_num++; - - if(netif->autoip->sent_num >= ANNOUNCE_NUM) { - netif->autoip->state = AUTOIP_STATE_BOUND; - netif->autoip->sent_num = 0; - netif->autoip->ttw = 0; - } - } - break; - } - } - /* proceed to next network interface */ - netif = netif->next; - } -} - -/** - * Handles every incoming ARP Packet, called by etharp_arp_input. - * - * @param netif network interface to use for autoip processing - * @param hdr Incoming ARP packet - */ -void -autoip_arp_reply(struct netif *netif, struct etharp_hdr *hdr) -{ - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE, ("autoip_arp_reply()\n")); - if ((netif->autoip != NULL) && (netif->autoip->state != AUTOIP_STATE_OFF)) { - /* when ip.src == llipaddr && hw.src != netif->hwaddr - * - * when probing ip.dst == llipaddr && hw.src != netif->hwaddr - * we have a conflict and must solve it - */ - struct ip_addr sipaddr, dipaddr; - struct eth_addr netifaddr; - netifaddr.addr[0] = netif->hwaddr[0]; - netifaddr.addr[1] = netif->hwaddr[1]; - netifaddr.addr[2] = netif->hwaddr[2]; - netifaddr.addr[3] = netif->hwaddr[3]; - netifaddr.addr[4] = netif->hwaddr[4]; - netifaddr.addr[5] = netif->hwaddr[5]; - - /* Copy struct ip_addr2 to aligned ip_addr, to support compilers without - * structure packing (not using structure copy which breaks strict-aliasing rules). - */ - SMEMCPY(&sipaddr, &hdr->sipaddr, sizeof(sipaddr)); - SMEMCPY(&dipaddr, &hdr->dipaddr, sizeof(dipaddr)); - - if ((netif->autoip->state == AUTOIP_STATE_PROBING) || - ((netif->autoip->state == AUTOIP_STATE_ANNOUNCING) && - (netif->autoip->sent_num == 0))) { - /* RFC 3927 Section 2.2.1: - * from beginning to after ANNOUNCE_WAIT - * seconds we have a conflict if - * ip.src == llipaddr OR - * ip.dst == llipaddr && hw.src != own hwaddr - */ - if ((ip_addr_cmp(&sipaddr, &netif->autoip->llipaddr)) || - (ip_addr_cmp(&dipaddr, &netif->autoip->llipaddr) && - !eth_addr_cmp(&netifaddr, &hdr->shwaddr))) { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING, - ("autoip_arp_reply(): Probe Conflict detected\n")); - autoip_start(netif); - } - } else { - /* RFC 3927 Section 2.5: - * in any state we have a conflict if - * ip.src == llipaddr && hw.src != own hwaddr - */ - if (ip_addr_cmp(&sipaddr, &netif->autoip->llipaddr) && - !eth_addr_cmp(&netifaddr, &hdr->shwaddr)) { - LWIP_DEBUGF(AUTOIP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE | LWIP_DBG_LEVEL_WARNING, - ("autoip_arp_reply(): Conflicting ARP-Packet detected\n")); - autoip_handle_arp_conflict(netif); - } - } - } -} - -#endif /* LWIP_AUTOIP */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/icmp.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/icmp.c deleted file mode 100644 index 3ee17ae576e..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/icmp.c +++ /dev/null @@ -1,333 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * ICMP - Internet Control Message Protocol - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -/* Some ICMP messages should be passed to the transport protocols. This - is not implemented. */ - -#include "lwip/opt.h" - -#if LWIP_ICMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/icmp.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/ip.h" -#include "lwip/def.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" - -#include - -/** Small optimization: set to 0 if incoming PBUF_POOL pbuf always can be - * used to modify and send a response packet (and to 1 if this is not the case, - * e.g. when link header is stripped of when receiving) */ -#ifndef LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN -#define LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN 1 -#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */ - -/* The amount of data from the original packet to return in a dest-unreachable */ -#define ICMP_DEST_UNREACH_DATASIZE 8 - -static void icmp_send_response(struct pbuf *p, u8_t type, u8_t code); - -/** - * Processes ICMP input packets, called from ip_input(). - * - * Currently only processes icmp echo requests and sends - * out the echo response. - * - * @param p the icmp echo request packet, p->payload pointing to the ip header - * @param inp the netif on which this packet was received - */ -void -icmp_input(struct pbuf *p, struct netif *inp) -{ - u8_t type; -#ifdef LWIP_DEBUG - u8_t code; -#endif /* LWIP_DEBUG */ - struct icmp_echo_hdr *iecho; - struct ip_hdr *iphdr; - struct ip_addr tmpaddr; - s16_t hlen; - - ICMP_STATS_INC(icmp.recv); - snmp_inc_icmpinmsgs(); - - - iphdr = p->payload; - hlen = IPH_HL(iphdr) * 4; - if (pbuf_header(p, -hlen) || (p->tot_len < sizeof(u16_t)*2)) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: short ICMP (%"U16_F" bytes) received\n", p->tot_len)); - goto lenerr; - } - - type = *((u8_t *)p->payload); -#ifdef LWIP_DEBUG - code = *(((u8_t *)p->payload)+1); -#endif /* LWIP_DEBUG */ - switch (type) { - case ICMP_ECHO: -#if !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING - { - int accepted = 1; -#if !LWIP_MULTICAST_PING - /* multicast destination address? */ - if (ip_addr_ismulticast(&iphdr->dest)) { - accepted = 0; - } -#endif /* LWIP_MULTICAST_PING */ -#if !LWIP_BROADCAST_PING - /* broadcast destination address? */ - if (ip_addr_isbroadcast(&iphdr->dest, inp)) { - accepted = 0; - } -#endif /* LWIP_BROADCAST_PING */ - /* broadcast or multicast destination address not acceptd? */ - if (!accepted) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: Not echoing to multicast or broadcast pings\n")); - ICMP_STATS_INC(icmp.err); - pbuf_free(p); - return; - } - } -#endif /* !LWIP_MULTICAST_PING || !LWIP_BROADCAST_PING */ - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ping\n")); - if (p->tot_len < sizeof(struct icmp_echo_hdr)) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: bad ICMP echo received\n")); - goto lenerr; - } - if (inet_chksum_pbuf(p) != 0) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: checksum failed for received ICMP echo\n")); - pbuf_free(p); - ICMP_STATS_INC(icmp.chkerr); - snmp_inc_icmpinerrors(); - return; - } -#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN - if (pbuf_header(p, (PBUF_IP_HLEN + PBUF_LINK_HLEN))) { - /* p is not big enough to contain link headers - * allocate a new one and copy p into it - */ - struct pbuf *r; - /* switch p->payload to ip header */ - if (pbuf_header(p, hlen)) { - LWIP_ASSERT("icmp_input: moving p->payload to ip header failed\n", 0); - goto memerr; - } - /* allocate new packet buffer with space for link headers */ - r = pbuf_alloc(PBUF_LINK, p->tot_len, PBUF_RAM); - if (r == NULL) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: allocating new pbuf failed\n")); - goto memerr; - } - LWIP_ASSERT("check that first pbuf can hold struct the ICMP header", - (r->len >= hlen + sizeof(struct icmp_echo_hdr))); - /* copy the whole packet including ip header */ - if (pbuf_copy(r, p) != ERR_OK) { - LWIP_ASSERT("icmp_input: copying to new pbuf failed\n", 0); - goto memerr; - } - iphdr = r->payload; - /* switch r->payload back to icmp header */ - if (pbuf_header(r, -hlen)) { - LWIP_ASSERT("icmp_input: restoring original p->payload failed\n", 0); - goto memerr; - } - /* free the original p */ - pbuf_free(p); - /* we now have an identical copy of p that has room for link headers */ - p = r; - } else { - /* restore p->payload to point to icmp header */ - if (pbuf_header(p, -(s16_t)(PBUF_IP_HLEN + PBUF_LINK_HLEN))) { - LWIP_ASSERT("icmp_input: restoring original p->payload failed\n", 0); - goto memerr; - } - } -#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */ - /* At this point, all checks are OK. */ - /* We generate an answer by switching the dest and src ip addresses, - * setting the icmp type to ECHO_RESPONSE and updating the checksum. */ - iecho = p->payload; - tmpaddr.addr = iphdr->src.addr; - iphdr->src.addr = iphdr->dest.addr; - iphdr->dest.addr = tmpaddr.addr; - ICMPH_TYPE_SET(iecho, ICMP_ER); - /* adjust the checksum */ - if (iecho->chksum >= htons(0xffff - (ICMP_ECHO << 8))) { - iecho->chksum += htons(ICMP_ECHO << 8) + 1; - } else { - iecho->chksum += htons(ICMP_ECHO << 8); - } - - /* Set the correct TTL and recalculate the header checksum. */ - IPH_TTL_SET(iphdr, ICMP_TTL); - IPH_CHKSUM_SET(iphdr, 0); -#if CHECKSUM_GEN_IP - IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, IP_HLEN)); -#endif /* CHECKSUM_GEN_IP */ - - ICMP_STATS_INC(icmp.xmit); - /* increase number of messages attempted to send */ - snmp_inc_icmpoutmsgs(); - /* increase number of echo replies attempted to send */ - snmp_inc_icmpoutechoreps(); - - if(pbuf_header(p, hlen)) { - LWIP_ASSERT("Can't move over header in packet", 0); - } else { - err_t ret; - ret = ip_output_if(p, &(iphdr->src), IP_HDRINCL, - ICMP_TTL, 0, IP_PROTO_ICMP, inp); - if (ret != ERR_OK) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ip_output_if returned an error: %c.\n", ret)); - } - } - break; - default: - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_input: ICMP type %"S16_F" code %"S16_F" not supported.\n", - (s16_t)type, (s16_t)code)); - ICMP_STATS_INC(icmp.proterr); - ICMP_STATS_INC(icmp.drop); - } - pbuf_free(p); - return; -lenerr: - pbuf_free(p); - ICMP_STATS_INC(icmp.lenerr); - snmp_inc_icmpinerrors(); - return; -#if LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN -memerr: - pbuf_free(p); - ICMP_STATS_INC(icmp.err); - snmp_inc_icmpinerrors(); - return; -#endif /* LWIP_ICMP_ECHO_CHECK_INPUT_PBUF_LEN */ -} - -/** - * Send an icmp 'destination unreachable' packet, called from ip_input() if - * the transport layer protocol is unknown and from udp_input() if the local - * port is not bound. - * - * @param p the input packet for which the 'unreachable' should be sent, - * p->payload pointing to the IP header - * @param t type of the 'unreachable' packet - */ -void -icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t) -{ - icmp_send_response(p, ICMP_DUR, t); -} - -#if IP_FORWARD || IP_REASSEMBLY -/** - * Send a 'time exceeded' packet, called from ip_forward() if TTL is 0. - * - * @param p the input packet for which the 'time exceeded' should be sent, - * p->payload pointing to the IP header - * @param t type of the 'time exceeded' packet - */ -void -icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t) -{ - icmp_send_response(p, ICMP_TE, t); -} - -#endif /* IP_FORWARD || IP_REASSEMBLY */ - -/** - * Send an icmp packet in response to an incoming packet. - * - * @param p the input packet for which the 'unreachable' should be sent, - * p->payload pointing to the IP header - * @param type Type of the ICMP header - * @param code Code of the ICMP header - */ -static void -icmp_send_response(struct pbuf *p, u8_t type, u8_t code) -{ - struct pbuf *q; - struct ip_hdr *iphdr; - /* we can use the echo header here */ - struct icmp_echo_hdr *icmphdr; - - /* ICMP header + IP header + 8 bytes of data */ - q = pbuf_alloc(PBUF_IP, sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE, - PBUF_RAM); - if (q == NULL) { - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded: failed to allocate pbuf for ICMP packet.\n")); - return; - } - LWIP_ASSERT("check that first pbuf can hold icmp message", - (q->len >= (sizeof(struct icmp_echo_hdr) + IP_HLEN + ICMP_DEST_UNREACH_DATASIZE))); - - iphdr = p->payload; - LWIP_DEBUGF(ICMP_DEBUG, ("icmp_time_exceeded from ")); - ip_addr_debug_print(ICMP_DEBUG, &(iphdr->src)); - LWIP_DEBUGF(ICMP_DEBUG, (" to ")); - ip_addr_debug_print(ICMP_DEBUG, &(iphdr->dest)); - LWIP_DEBUGF(ICMP_DEBUG, ("\n")); - - icmphdr = q->payload; - icmphdr->type = type; - icmphdr->code = code; - icmphdr->id = 0; - icmphdr->seqno = 0; - - /* copy fields from original packet */ - SMEMCPY((u8_t *)q->payload + sizeof(struct icmp_echo_hdr), (u8_t *)p->payload, - IP_HLEN + ICMP_DEST_UNREACH_DATASIZE); - - /* calculate checksum */ - icmphdr->chksum = 0; - icmphdr->chksum = inet_chksum(icmphdr, q->len); - ICMP_STATS_INC(icmp.xmit); - /* increase number of messages attempted to send */ - snmp_inc_icmpoutmsgs(); - /* increase number of destination unreachable messages attempted to send */ - snmp_inc_icmpouttimeexcds(); - ip_output(q, NULL, &(iphdr->src), ICMP_TTL, 0, IP_PROTO_ICMP); - pbuf_free(q); -} - -#endif /* LWIP_ICMP */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/igmp.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/igmp.c deleted file mode 100644 index b302ef48205..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/igmp.c +++ /dev/null @@ -1,759 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * IGMP - Internet Group Management Protocol - * - */ - -/* - * Copyright (c) 2002 CITEL Technologies Ltd. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of CITEL Technologies Ltd nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY CITEL TECHNOLOGIES AND CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL CITEL TECHNOLOGIES OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is a contribution to the lwIP TCP/IP stack. - * The Swedish Institute of Computer Science and Adam Dunkels - * are specifically granted permission to redistribute this - * source code. -*/ - -/*------------------------------------------------------------- -Note 1) -Although the rfc requires V1 AND V2 capability -we will only support v2 since now V1 is very old (August 1989) -V1 can be added if required - -a debug print and statistic have been implemented to -show this up. -------------------------------------------------------------- -------------------------------------------------------------- -Note 2) -A query for a specific group address (as opposed to ALLHOSTS) -has now been implemented as I am unsure if it is required - -a debug print and statistic have been implemented to -show this up. -------------------------------------------------------------- -------------------------------------------------------------- -Note 3) -The router alert rfc 2113 is implemented in outgoing packets -but not checked rigorously incoming -------------------------------------------------------------- -Steve Reynolds -------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------- - * RFC 988 - Host extensions for IP multicasting - V0 - * RFC 1054 - Host extensions for IP multicasting - - * RFC 1112 - Host extensions for IP multicasting - V1 - * RFC 2236 - Internet Group Management Protocol, Version 2 - V2 <- this code is based on this RFC (it's the "de facto" standard) - * RFC 3376 - Internet Group Management Protocol, Version 3 - V3 - * RFC 4604 - Using Internet Group Management Protocol Version 3... - V3+ - * RFC 2113 - IP Router Alert Option - - *----------------------------------------------------------------------------*/ - -/*----------------------------------------------------------------------------- - * Includes - *----------------------------------------------------------------------------*/ - -#include "lwip/opt.h" - -#if LWIP_IGMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/igmp.h" -#include "lwip/debug.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/ip.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/netif.h" -#include "lwip/icmp.h" -#include "lwip/udp.h" -#include "lwip/tcp.h" -#include "lwip/stats.h" - -#include "string.h" - -/*----------------------------------------------------------------------------- - * Globales - *----------------------------------------------------------------------------*/ - -static struct igmp_group* igmp_group_list; -static struct ip_addr allsystems; -static struct ip_addr allrouters; - -/** - * Initialize the IGMP module - */ -void -igmp_init(void) -{ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_init: initializing\n")); - - IP4_ADDR(&allsystems, 224, 0, 0, 1); - IP4_ADDR(&allrouters, 224, 0, 0, 2); -} - -#ifdef LWIP_DEBUG -/** - * Dump global IGMP groups list - */ -void -igmp_dump_group_list() -{ - struct igmp_group *group = igmp_group_list; - - while (group != NULL) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_dump_group_list: [%"U32_F"] ", (u32_t)(group->group_state))); - ip_addr_debug_print(IGMP_DEBUG, &group->group_address); - LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", group->interface)); - group = group->next; - } - LWIP_DEBUGF(IGMP_DEBUG, ("\n")); -} -#else -#define igmp_dump_group_list() -#endif /* LWIP_DEBUG */ - -/** - * Start IGMP processing on interface - * - * @param netif network interface on which start IGMP processing - */ -err_t -igmp_start(struct netif *netif) -{ - struct igmp_group* group; - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_start: starting IGMP processing on if %p\n", netif)); - - group = igmp_lookup_group(netif, &allsystems); - - if (group != NULL) { - group->group_state = IGMP_GROUP_IDLE_MEMBER; - group->use++; - - /* Allow the igmp messages at the MAC level */ - if (netif->igmp_mac_filter != NULL) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_start: igmp_mac_filter(ADD ")); - ip_addr_debug_print(IGMP_DEBUG, &allsystems); - LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif)); - netif->igmp_mac_filter( netif, &allsystems, IGMP_ADD_MAC_FILTER); - } - - return ERR_OK; - } - - return ERR_MEM; -} - -/** - * Stop IGMP processing on interface - * - * @param netif network interface on which stop IGMP processing - */ -err_t -igmp_stop(struct netif *netif) -{ - struct igmp_group *group = igmp_group_list; - struct igmp_group *prev = NULL; - struct igmp_group *next; - - /* look for groups joined on this interface further down the list */ - while (group != NULL) { - next = group->next; - /* is it a group joined on this interface? */ - if (group->interface == netif) { - /* is it the first group of the list? */ - if (group == igmp_group_list) { - igmp_group_list = next; - } - /* is there a "previous" group defined? */ - if (prev != NULL) { - prev->next = next; - } - /* disable the group at the MAC level */ - if (netif->igmp_mac_filter != NULL) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_stop: igmp_mac_filter(DEL ")); - ip_addr_debug_print(IGMP_DEBUG, &group->group_address); - LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif)); - netif->igmp_mac_filter(netif, &(group->group_address), IGMP_DEL_MAC_FILTER); - } - /* free group */ - memp_free(MEMP_IGMP_GROUP, group); - } else { - /* change the "previous" */ - prev = group; - } - /* move to "next" */ - group = next; - } - return ERR_OK; -} - -/** - * Report IGMP memberships for this interface - * - * @param netif network interface on which report IGMP memberships - */ -void -igmp_report_groups( struct netif *netif) -{ - struct igmp_group *group = igmp_group_list; - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_report_groups: sending IGMP reports on if %p\n", netif)); - - while (group != NULL) { - if (group->interface == netif) { - igmp_delaying_member( group, IGMP_JOIN_DELAYING_MEMBER_TMR); - } - group = group->next; - } -} - -/** - * Search for a group in the global igmp_group_list - * - * @param ifp the network interface for which to look - * @param addr the group ip address to search for - * @return a struct igmp_group* if the group has been found, - * NULL if the group wasn't found. - */ -struct igmp_group * -igmp_lookfor_group(struct netif *ifp, struct ip_addr *addr) -{ - struct igmp_group *group = igmp_group_list; - - while (group != NULL) { - if ((group->interface == ifp) && (ip_addr_cmp(&(group->group_address), addr))) { - return group; - } - group = group->next; - } - - /* to be clearer, we return NULL here instead of - * 'group' (which is also NULL at this point). - */ - return NULL; -} - -/** - * Search for a specific igmp group and create a new one if not found- - * - * @param ifp the network interface for which to look - * @param addr the group ip address to search - * @return a struct igmp_group*, - * NULL on memory error. - */ -struct igmp_group * -igmp_lookup_group(struct netif *ifp, struct ip_addr *addr) -{ - struct igmp_group *group = igmp_group_list; - - /* Search if the group already exists */ - group = igmp_lookfor_group(ifp, addr); - if (group != NULL) { - /* Group already exists. */ - return group; - } - - /* Group doesn't exist yet, create a new one */ - group = memp_malloc(MEMP_IGMP_GROUP); - if (group != NULL) { - group->interface = ifp; - ip_addr_set(&(group->group_address), addr); - group->timer = 0; /* Not running */ - group->group_state = IGMP_GROUP_NON_MEMBER; - group->last_reporter_flag = 0; - group->use = 0; - group->next = igmp_group_list; - - igmp_group_list = group; - } - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_lookup_group: %sallocated a new group with address ", (group?"":"impossible to "))); - ip_addr_debug_print(IGMP_DEBUG, addr); - LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", ifp)); - - return group; -} - -/** - * Remove a group in the global igmp_group_list - * - * @param group the group to remove from the global igmp_group_list - * @return ERR_OK if group was removed from the list, an err_t otherwise - */ -err_t -igmp_remove_group(struct igmp_group *group) -{ - err_t err = ERR_OK; - - /* Is it the first group? */ - if (igmp_group_list == group) { - igmp_group_list = group->next; - } else { - /* look for group further down the list */ - struct igmp_group *tmpGroup; - for (tmpGroup = igmp_group_list; tmpGroup != NULL; tmpGroup = tmpGroup->next) { - if (tmpGroup->next == group) { - tmpGroup->next = group->next; - break; - } - } - /* Group not found in the global igmp_group_list */ - if (tmpGroup == NULL) - err = ERR_ARG; - } - /* free group */ - memp_free(MEMP_IGMP_GROUP, group); - - return err; -} - -/** - * Called from ip_input() if a new IGMP packet is received. - * - * @param p received igmp packet, p->payload pointing to the ip header - * @param inp network interface on which the packet was received - * @param dest destination ip address of the igmp packet - */ -void -igmp_input(struct pbuf *p, struct netif *inp, struct ip_addr *dest) -{ - struct ip_hdr * iphdr; - struct igmp_msg* igmp; - struct igmp_group* group; - struct igmp_group* groupref; - - /* Note that the length CAN be greater than 8 but only 8 are used - All are included in the checksum */ - iphdr = p->payload; - if (pbuf_header(p, -(s16_t)(IPH_HL(iphdr) * 4)) || (p->len < IGMP_MINLEN)) { - pbuf_free(p); - IGMP_STATS_INC(igmp.lenerr); - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: length error\n")); - return; - } - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: message from ")); - ip_addr_debug_print(IGMP_DEBUG, &(iphdr->src)); - LWIP_DEBUGF(IGMP_DEBUG, (" to address ")); - ip_addr_debug_print(IGMP_DEBUG, &(iphdr->dest)); - LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", inp)); - - /* Now calculate and check the checksum */ - igmp = (struct igmp_msg *)p->payload; - if (inet_chksum(igmp, p->len)) { - pbuf_free(p); - IGMP_STATS_INC(igmp.chkerr); - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: checksum error\n")); - return; - } - - /* Packet is ok so find an existing group */ - group = igmp_lookfor_group(inp, dest); /* use the incoming IP address! */ - - /* If group can be found or create... */ - if (!group) { - pbuf_free(p); - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: IGMP frame not for us\n")); - return; - } - - /* NOW ACT ON THE INCOMING MESSAGE TYPE... */ - switch (igmp->igmp_msgtype) { - case IGMP_MEMB_QUERY: { - /* IGMP_MEMB_QUERY to the "all systems" address ? */ - if ((ip_addr_cmp(dest, &allsystems)) && (igmp->igmp_group_address.addr == 0)) { - /* THIS IS THE GENERAL QUERY */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: General IGMP_MEMB_QUERY on \"ALL SYSTEMS\" address (224.0.0.1) [igmp_maxresp=%i]\n", (int)(igmp->igmp_maxresp))); - - if (igmp->igmp_maxresp == 0) { - IGMP_STATS_INC(igmp.v1_rxed); - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: got an all hosts query with time== 0 - this is V1 and not implemented - treat as v2\n")); - igmp->igmp_maxresp = IGMP_V1_DELAYING_MEMBER_TMR; - } - - IGMP_STATS_INC(igmp.group_query_rxed); - groupref = igmp_group_list; - while (groupref) { - /* Do not send messages on the all systems group address! */ - if ((groupref->interface == inp) && (!(ip_addr_cmp(&(groupref->group_address), &allsystems)))) { - igmp_delaying_member( groupref, igmp->igmp_maxresp); - } - groupref = groupref->next; - } - } else { - /* IGMP_MEMB_QUERY to a specific group ? */ - if (group->group_address.addr != 0) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: IGMP_MEMB_QUERY to a specific group ")); - ip_addr_debug_print(IGMP_DEBUG, &group->group_address); - if (ip_addr_cmp (dest, &allsystems)) { - LWIP_DEBUGF(IGMP_DEBUG, (" using \"ALL SYSTEMS\" address (224.0.0.1) [igmp_maxresp=%i]\n", (int)(igmp->igmp_maxresp))); - /* we first need to re-lookfor the group since we used dest last time */ - group = igmp_lookfor_group(inp, &igmp->igmp_group_address); - } else { - LWIP_DEBUGF(IGMP_DEBUG, (" with the group address as destination [igmp_maxresp=%i]\n", (int)(igmp->igmp_maxresp))); - } - - if (group != NULL) { - IGMP_STATS_INC(igmp.unicast_query); - igmp_delaying_member( group, igmp->igmp_maxresp); - } - } - } - break; - } - case IGMP_V2_MEMB_REPORT: { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: IGMP_V2_MEMB_REPORT\n")); - - IGMP_STATS_INC(igmp.report_rxed); - if (group->group_state == IGMP_GROUP_DELAYING_MEMBER) { - /* This is on a specific group we have already looked up */ - group->timer = 0; /* stopped */ - group->group_state = IGMP_GROUP_IDLE_MEMBER; - group->last_reporter_flag = 0; - } - break; - } - default: { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_input: unexpected msg %d in state %d on group %p on if %p\n", - igmp->igmp_msgtype, group->group_state, &group, group->interface)); - break; - } - } - - pbuf_free(p); - return; -} - -/** - * Join a group on one network interface. - * - * @param ifaddr ip address of the network interface which should join a new group - * @param groupaddr the ip address of the group which to join - * @return ERR_OK if group was joined on the netif(s), an err_t otherwise - */ -err_t -igmp_joingroup(struct ip_addr *ifaddr, struct ip_addr *groupaddr) -{ - err_t err = ERR_VAL; /* no matching interface */ - struct igmp_group *group; - struct netif *netif; - - /* make sure it is multicast address */ - LWIP_ERROR("igmp_joingroup: attempt to join non-multicast address", ip_addr_ismulticast(groupaddr), return ERR_VAL;); - LWIP_ERROR("igmp_joingroup: attempt to join allsystems address", (!ip_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;); - - /* loop through netif's */ - netif = netif_list; - while (netif != NULL) { - /* Should we join this interface ? */ - if ((netif->flags & NETIF_FLAG_IGMP) && ((ip_addr_isany(ifaddr) || ip_addr_cmp(&(netif->ip_addr), ifaddr)))) { - /* find group or create a new one if not found */ - group = igmp_lookup_group(netif, groupaddr); - - if (group != NULL) { - /* This should create a new group, check the state to make sure */ - if (group->group_state != IGMP_GROUP_NON_MEMBER) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: join to group not in state IGMP_GROUP_NON_MEMBER\n")); - } else { - /* OK - it was new group */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: join to new group: ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, ("\n")); - - /* If first use of the group, allow the group at the MAC level */ - if ((group->use==0) && (netif->igmp_mac_filter != NULL)) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: igmp_mac_filter(ADD ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif)); - netif->igmp_mac_filter(netif, groupaddr, IGMP_ADD_MAC_FILTER); - } - - IGMP_STATS_INC(igmp.join_sent); - igmp_send(group, IGMP_V2_MEMB_REPORT); - - igmp_start_timer(group, IGMP_JOIN_DELAYING_MEMBER_TMR); - - /* Need to work out where this timer comes from */ - group->group_state = IGMP_GROUP_DELAYING_MEMBER; - } - /* Increment group use */ - group->use++; - /* Join on this interface */ - err = ERR_OK; - } else { - /* Return an error even if some network interfaces are joined */ - /** @todo undo any other netif already joined */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_joingroup: Not enought memory to join to group\n")); - return ERR_MEM; - } - } - /* proceed to next network interface */ - netif = netif->next; - } - - return err; -} - -/** - * Leave a group on one network interface. - * - * @param ifaddr ip address of the network interface which should leave a group - * @param groupaddr the ip address of the group which to leave - * @return ERR_OK if group was left on the netif(s), an err_t otherwise - */ -err_t -igmp_leavegroup(struct ip_addr *ifaddr, struct ip_addr *groupaddr) -{ - err_t err = ERR_VAL; /* no matching interface */ - struct igmp_group *group; - struct netif *netif; - - /* make sure it is multicast address */ - LWIP_ERROR("igmp_leavegroup: attempt to leave non-multicast address", ip_addr_ismulticast(groupaddr), return ERR_VAL;); - LWIP_ERROR("igmp_leavegroup: attempt to leave allsystems address", (!ip_addr_cmp(groupaddr, &allsystems)), return ERR_VAL;); - - /* loop through netif's */ - netif = netif_list; - while (netif != NULL) { - /* Should we leave this interface ? */ - if ((netif->flags & NETIF_FLAG_IGMP) && ((ip_addr_isany(ifaddr) || ip_addr_cmp(&(netif->ip_addr), ifaddr)))) { - /* find group */ - group = igmp_lookfor_group(netif, groupaddr); - - if (group != NULL) { - /* Only send a leave if the flag is set according to the state diagram */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: Leaving group: ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, ("\n")); - - /* If there is no other use of the group */ - if (group->use <= 1) { - /* If we are the last reporter for this group */ - if (group->last_reporter_flag) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: sending leaving group\n")); - IGMP_STATS_INC(igmp.leave_sent); - igmp_send(group, IGMP_LEAVE_GROUP); - } - - /* Disable the group at the MAC level */ - if (netif->igmp_mac_filter != NULL) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: igmp_mac_filter(DEL ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, (") on if %p\n", netif)); - netif->igmp_mac_filter(netif, groupaddr, IGMP_DEL_MAC_FILTER); - } - - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: remove group: ")); - ip_addr_debug_print(IGMP_DEBUG, groupaddr); - LWIP_DEBUGF(IGMP_DEBUG, ("\n")); - - /* Free the group */ - igmp_remove_group(group); - } else { - /* Decrement group use */ - group->use--; - } - /* Leave on this interface */ - err = ERR_OK; - } else { - /* It's not a fatal error on "leavegroup" */ - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_leavegroup: not member of group\n")); - } - } - /* proceed to next network interface */ - netif = netif->next; - } - - return err; -} - -/** - * The igmp timer function (both for NO_SYS=1 and =0) - * Should be called every IGMP_TMR_INTERVAL milliseconds (100 ms is default). - */ -void -igmp_tmr(void) -{ - struct igmp_group *group = igmp_group_list; - - while (group != NULL) { - if (group->timer != 0) { - group->timer -= 1; - if (group->timer == 0) { - igmp_timeout(group); - } - } - group = group->next; - } -} - -/** - * Called if a timeout for one group is reached. - * Sends a report for this group. - * - * @param group an igmp_group for which a timeout is reached - */ -void -igmp_timeout(struct igmp_group *group) -{ - /* If the state is IGMP_GROUP_DELAYING_MEMBER then we send a report for this group */ - if (group->group_state == IGMP_GROUP_DELAYING_MEMBER) { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_timeout: report membership for group with address ")); - ip_addr_debug_print(IGMP_DEBUG, &(group->group_address)); - LWIP_DEBUGF(IGMP_DEBUG, (" on if %p\n", group->interface)); - - igmp_send(group, IGMP_V2_MEMB_REPORT); - } -} - -/** - * Start a timer for an igmp group - * - * @param group the igmp_group for which to start a timer - * @param max_time the time in multiples of IGMP_TMR_INTERVAL (decrease with - * every call to igmp_tmr()) - */ -void -igmp_start_timer(struct igmp_group *group, u8_t max_time) -{ - /** - * @todo Important !! this should be random 0 -> max_time. Find out how to do this - */ - group->timer = max_time; -} - -/** - * Stop a timer for an igmp_group - * - * @param group the igmp_group for which to stop the timer - */ -void -igmp_stop_timer(struct igmp_group *group) -{ - group->timer = 0; -} - -/** - * Delaying membership report for a group if necessary - * - * @param group the igmp_group for which "delaying" membership report - * @param maxresp query delay - */ -void -igmp_delaying_member( struct igmp_group *group, u8_t maxresp) -{ - if ((group->group_state == IGMP_GROUP_IDLE_MEMBER) || - ((group->group_state == IGMP_GROUP_DELAYING_MEMBER) && (maxresp > group->timer))) { - igmp_start_timer(group, (maxresp)/2); - group->group_state = IGMP_GROUP_DELAYING_MEMBER; - } -} - - -/** - * Sends an IP packet on a network interface. This function constructs the IP header - * and calculates the IP header checksum. If the source IP address is NULL, - * the IP address of the outgoing network interface is filled in as source address. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an IP - header and p->payload points to that IP header) - * @param src the source IP address to send from (if src == IP_ADDR_ANY, the - * IP address of the netif used to send is used as source address) - * @param dest the destination IP address to send the packet to - * @param ttl the TTL value to be set in the IP header - * @param proto the PROTOCOL to be set in the IP header - * @param netif the netif on which to send this packet - * @return ERR_OK if the packet was sent OK - * ERR_BUF if p doesn't have enough space for IP/LINK headers - * returns errors returned by netif->output - */ -err_t -igmp_ip_output_if(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t proto, struct netif *netif) -{ - /* This is the "router alert" option */ - u16_t ra[2]; - ra[0] = htons (ROUTER_ALERT); - ra[1] = 0x0000; /* Router shall examine packet */ - return ip_output_if_opt(p, src, dest, ttl, 0, proto, netif, ra, ROUTER_ALERTLEN); -} - -/** - * Send an igmp packet to a specific group. - * - * @param group the group to which to send the packet - * @param type the type of igmp packet to send - */ -void -igmp_send(struct igmp_group *group, u8_t type) -{ - struct pbuf* p = NULL; - struct igmp_msg* igmp = NULL; - struct ip_addr src = {0}; - struct ip_addr* dest = NULL; - - /* IP header + "router alert" option + IGMP header */ - p = pbuf_alloc(PBUF_TRANSPORT, IGMP_MINLEN, PBUF_RAM); - - if (p) { - igmp = p->payload; - LWIP_ASSERT("igmp_send: check that first pbuf can hold struct igmp_msg", - (p->len >= sizeof(struct igmp_msg))); - ip_addr_set(&src, &((group->interface)->ip_addr)); - - if (type == IGMP_V2_MEMB_REPORT) { - dest = &(group->group_address); - IGMP_STATS_INC(igmp.report_sent); - ip_addr_set(&(igmp->igmp_group_address), &(group->group_address)); - group->last_reporter_flag = 1; /* Remember we were the last to report */ - } else { - if (type == IGMP_LEAVE_GROUP) { - dest = &allrouters; - ip_addr_set(&(igmp->igmp_group_address), &(group->group_address)); - } - } - - if ((type == IGMP_V2_MEMB_REPORT) || (type == IGMP_LEAVE_GROUP)) { - igmp->igmp_msgtype = type; - igmp->igmp_maxresp = 0; - igmp->igmp_checksum = 0; - igmp->igmp_checksum = inet_chksum( igmp, IGMP_MINLEN); - - igmp_ip_output_if(p, &src, dest, IGMP_TTL, IP_PROTO_IGMP, group->interface); - } - - pbuf_free(p); - } else { - LWIP_DEBUGF(IGMP_DEBUG, ("igmp_send: not enough memory for igmp_send\n")); - } -} - -#endif /* LWIP_IGMP */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet.c deleted file mode 100644 index 0d4f922fe47..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet.c +++ /dev/null @@ -1,280 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Functions common to all TCP/IPv4 modules, such as the byte order functions. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/inet.h" - -/* Here for now until needed in other places in lwIP */ -#ifndef isprint -#define in_range(c, lo, up) ((u8_t)c >= lo && (u8_t)c <= up) -#define isprint(c) in_range(c, 0x20, 0x7f) -#define isdigit(c) in_range(c, '0', '9') -#define isxdigit(c) (isdigit(c) || in_range(c, 'a', 'f') || in_range(c, 'A', 'F')) -#define islower(c) in_range(c, 'a', 'z') -#define isspace(c) (c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || c == '\v') -#endif - -/** - * Ascii internet address interpretation routine. - * The value returned is in network order. - * - * @param cp IP address in ascii represenation (e.g. "127.0.0.1") - * @return ip address in network order - */ -u32_t -inet_addr(const char *cp) -{ - struct in_addr val; - - if (inet_aton(cp, &val)) { - return (val.s_addr); - } - return (INADDR_NONE); -} - -/** - * Check whether "cp" is a valid ascii representation - * of an Internet address and convert to a binary address. - * Returns 1 if the address is valid, 0 if not. - * This replaces inet_addr, the return value from which - * cannot distinguish between failure and a local broadcast address. - * - * @param cp IP address in ascii represenation (e.g. "127.0.0.1") - * @param addr pointer to which to save the ip address in network order - * @return 1 if cp could be converted to addr, 0 on failure - */ -int -inet_aton(const char *cp, struct in_addr *addr) -{ - u32_t val; - u8_t base; - char c; - u32_t parts[4]; - u32_t *pp = parts; - - c = *cp; - for (;;) { - /* - * Collect number up to ``.''. - * Values are specified as for C: - * 0x=hex, 0=octal, 1-9=decimal. - */ - if (!isdigit(c)) - return (0); - val = 0; - base = 10; - if (c == '0') { - c = *++cp; - if (c == 'x' || c == 'X') { - base = 16; - c = *++cp; - } else - base = 8; - } - for (;;) { - if (isdigit(c)) { - val = (val * base) + (int)(c - '0'); - c = *++cp; - } else if (base == 16 && isxdigit(c)) { - val = (val << 4) | (int)(c + 10 - (islower(c) ? 'a' : 'A')); - c = *++cp; - } else - break; - } - if (c == '.') { - /* - * Internet format: - * a.b.c.d - * a.b.c (with c treated as 16 bits) - * a.b (with b treated as 24 bits) - */ - if (pp >= parts + 3) - return (0); - *pp++ = val; - c = *++cp; - } else - break; - } - /* - * Check for trailing characters. - */ - if (c != '\0' && !isspace(c)) - return (0); - /* - * Concoct the address according to - * the number of parts specified. - */ - switch (pp - parts + 1) { - - case 0: - return (0); /* initial nondigit */ - - case 1: /* a -- 32 bits */ - break; - - case 2: /* a.b -- 8.24 bits */ - if (val > 0xffffffUL) - return (0); - val |= parts[0] << 24; - break; - - case 3: /* a.b.c -- 8.8.16 bits */ - if (val > 0xffff) - return (0); - val |= (parts[0] << 24) | (parts[1] << 16); - break; - - case 4: /* a.b.c.d -- 8.8.8.8 bits */ - if (val > 0xff) - return (0); - val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8); - break; - } - if (addr) - addr->s_addr = htonl(val); - return (1); -} - -/** - * Convert numeric IP address into decimal dotted ASCII representation. - * returns ptr to static buffer; not reentrant! - * - * @param addr ip address in network order to convert - * @return pointer to a global static (!) buffer that holds the ASCII - * represenation of addr - */ -char * -inet_ntoa(struct in_addr addr) -{ - static char str[16]; - u32_t s_addr = addr.s_addr; - char inv[3]; - char *rp; - u8_t *ap; - u8_t rem; - u8_t n; - u8_t i; - - rp = str; - ap = (u8_t *)&s_addr; - for(n = 0; n < 4; n++) { - i = 0; - do { - rem = *ap % (u8_t)10; - *ap /= (u8_t)10; - inv[i++] = '0' + rem; - } while(*ap); - while(i--) - *rp++ = inv[i]; - *rp++ = '.'; - ap++; - } - *--rp = 0; - return str; -} - -/** - * These are reference implementations of the byte swapping functions. - * Again with the aim of being simple, correct and fully portable. - * Byte swapping is the second thing you would want to optimize. You will - * need to port it to your architecture and in your cc.h: - * - * #define LWIP_PLATFORM_BYTESWAP 1 - * #define LWIP_PLATFORM_HTONS(x) - * #define LWIP_PLATFORM_HTONL(x) - * - * Note ntohs() and ntohl() are merely references to the htonx counterparts. - */ - -#if (LWIP_PLATFORM_BYTESWAP == 0) && (BYTE_ORDER == LITTLE_ENDIAN) - -/** - * Convert an u16_t from host- to network byte order. - * - * @param n u16_t in host byte order - * @return n in network byte order - */ -u16_t -htons(u16_t n) -{ - return ((n & 0xff) << 8) | ((n & 0xff00) >> 8); -} - -/** - * Convert an u16_t from network- to host byte order. - * - * @param n u16_t in network byte order - * @return n in host byte order - */ -u16_t -ntohs(u16_t n) -{ - return htons(n); -} - -/** - * Convert an u32_t from host- to network byte order. - * - * @param n u32_t in host byte order - * @return n in network byte order - */ -u32_t -htonl(u32_t n) -{ - return ((n & 0xff) << 24) | - ((n & 0xff00) << 8) | - ((n & 0xff0000UL) >> 8) | - ((n & 0xff000000UL) >> 24); -} - -/** - * Convert an u32_t from network- to host byte order. - * - * @param n u32_t in network byte order - * @return n in host byte order - */ -u32_t -ntohl(u32_t n) -{ - return htonl(n); -} - -#endif /* (LWIP_PLATFORM_BYTESWAP == 0) && (BYTE_ORDER == LITTLE_ENDIAN) */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet_chksum.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet_chksum.c deleted file mode 100644 index 47a11d4eb8d..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/inet_chksum.c +++ /dev/null @@ -1,440 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Incluse internet checksum functions. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/inet_chksum.h" -#include "lwip/inet.h" - -#include - -/* These are some reference implementations of the checksum algorithm, with the - * aim of being simple, correct and fully portable. Checksumming is the - * first thing you would want to optimize for your platform. If you create - * your own version, link it in and in your cc.h put: - * - * #define LWIP_CHKSUM - * - * Or you can select from the implementations below by defining - * LWIP_CHKSUM_ALGORITHM to 1, 2 or 3. - */ - -#ifndef LWIP_CHKSUM -# define LWIP_CHKSUM lwip_standard_chksum -# ifndef LWIP_CHKSUM_ALGORITHM -# define LWIP_CHKSUM_ALGORITHM 1 -# endif -#endif -/* If none set: */ -#ifndef LWIP_CHKSUM_ALGORITHM -# define LWIP_CHKSUM_ALGORITHM 0 -#endif - -/** Like the name says... */ -#if LWIP_PLATFORM_BYTESWAP && (BYTE_ORDER == LITTLE_ENDIAN) -/* little endian and PLATFORM_BYTESWAP defined */ -#define SWAP_BYTES_IN_WORD(w) LWIP_PLATFORM_HTONS(w) -#else -/* can't use htons on big endian (or PLATFORM_BYTESWAP not defined)... */ -#define SWAP_BYTES_IN_WORD(w) ((w & 0xff) << 8) | ((w & 0xff00) >> 8) -#endif - -/** Split an u32_t in two u16_ts and add them up */ -#define FOLD_U32T(u) ((u >> 16) + (u & 0x0000ffffUL)) - -#if (LWIP_CHKSUM_ALGORITHM == 1) /* Version #1 */ -/** - * lwip checksum - * - * @param dataptr points to start of data to be summed at any boundary - * @param len length of data to be summed - * @return host order (!) lwip checksum (non-inverted Internet sum) - * - * @note accumulator size limits summable length to 64k - * @note host endianess is irrelevant (p3 RFC1071) - */ -static u16_t -lwip_standard_chksum(void *dataptr, u16_t len) -{ - u32_t acc; - u16_t src; - u8_t *octetptr; - - acc = 0; - /* dataptr may be at odd or even addresses */ - octetptr = (u8_t*)dataptr; - while (len > 1) { - /* declare first octet as most significant - thus assume network order, ignoring host order */ - src = (*octetptr) << 8; - octetptr++; - /* declare second octet as least significant */ - src |= (*octetptr); - octetptr++; - acc += src; - len -= 2; - } - if (len > 0) { - /* accumulate remaining octet */ - src = (*octetptr) << 8; - acc += src; - } - /* add deferred carry bits */ - acc = (acc >> 16) + (acc & 0x0000ffffUL); - if ((acc & 0xffff0000UL) != 0) { - acc = (acc >> 16) + (acc & 0x0000ffffUL); - } - /* This maybe a little confusing: reorder sum using htons() - instead of ntohs() since it has a little less call overhead. - The caller must invert bits for Internet sum ! */ - return htons((u16_t)acc); -} -#endif - -#if (LWIP_CHKSUM_ALGORITHM == 2) /* Alternative version #2 */ -/* - * Curt McDowell - * Broadcom Corp. - * csm@broadcom.com - * - * IP checksum two bytes at a time with support for - * unaligned buffer. - * Works for len up to and including 0x20000. - * by Curt McDowell, Broadcom Corp. 12/08/2005 - * - * @param dataptr points to start of data to be summed at any boundary - * @param len length of data to be summed - * @return host order (!) lwip checksum (non-inverted Internet sum) - */ - -static u16_t -lwip_standard_chksum(void *dataptr, int len) -{ - u8_t *pb = dataptr; - u16_t *ps, t = 0; - u32_t sum = 0; - int odd = ((u32_t)pb & 1); - - /* Get aligned to u16_t */ - if (odd && len > 0) { - ((u8_t *)&t)[1] = *pb++; - len--; - } - - /* Add the bulk of the data */ - ps = (u16_t *)pb; - while (len > 1) { - sum += *ps++; - len -= 2; - } - - /* Consume left-over byte, if any */ - if (len > 0) { - ((u8_t *)&t)[0] = *(u8_t *)ps;; - } - - /* Add end bytes */ - sum += t; - - /* Fold 32-bit sum to 16 bits - calling this twice is propably faster than if statements... */ - sum = FOLD_U32T(sum); - sum = FOLD_U32T(sum); - - /* Swap if alignment was odd */ - if (odd) { - sum = SWAP_BYTES_IN_WORD(sum); - } - - return sum; -} -#endif - -#if (LWIP_CHKSUM_ALGORITHM == 3) /* Alternative version #3 */ -/** - * An optimized checksum routine. Basically, it uses loop-unrolling on - * the checksum loop, treating the head and tail bytes specially, whereas - * the inner loop acts on 8 bytes at a time. - * - * @arg start of buffer to be checksummed. May be an odd byte address. - * @len number of bytes in the buffer to be checksummed. - * @return host order (!) lwip checksum (non-inverted Internet sum) - * - * by Curt McDowell, Broadcom Corp. December 8th, 2005 - */ - -static u16_t -lwip_standard_chksum(void *dataptr, int len) -{ - u8_t *pb = dataptr; - u16_t *ps, t = 0; - u32_t *pl; - u32_t sum = 0, tmp; - /* starts at odd byte address? */ - int odd = ((u32_t)pb & 1); - - if (odd && len > 0) { - ((u8_t *)&t)[1] = *pb++; - len--; - } - - ps = (u16_t *)pb; - - if (((u32_t)ps & 3) && len > 1) { - sum += *ps++; - len -= 2; - } - - pl = (u32_t *)ps; - - while (len > 7) { - tmp = sum + *pl++; /* ping */ - if (tmp < sum) { - tmp++; /* add back carry */ - } - - sum = tmp + *pl++; /* pong */ - if (sum < tmp) { - sum++; /* add back carry */ - } - - len -= 8; - } - - /* make room in upper bits */ - sum = FOLD_U32T(sum); - - ps = (u16_t *)pl; - - /* 16-bit aligned word remaining? */ - while (len > 1) { - sum += *ps++; - len -= 2; - } - - /* dangling tail byte remaining? */ - if (len > 0) { /* include odd byte */ - ((u8_t *)&t)[0] = *(u8_t *)ps; - } - - sum += t; /* add end bytes */ - - /* Fold 32-bit sum to 16 bits - calling this twice is propably faster than if statements... */ - sum = FOLD_U32T(sum); - sum = FOLD_U32T(sum); - - if (odd) { - sum = SWAP_BYTES_IN_WORD(sum); - } - - return sum; -} -#endif - -/* inet_chksum_pseudo: - * - * Calculates the pseudo Internet checksum used by TCP and UDP for a pbuf chain. - * IP addresses are expected to be in network byte order. - * - * @param p chain of pbufs over that a checksum should be calculated (ip data part) - * @param src source ip address (used for checksum of pseudo header) - * @param dst destination ip address (used for checksum of pseudo header) - * @param proto ip protocol (used for checksum of pseudo header) - * @param proto_len length of the ip data part (used for checksum of pseudo header) - * @return checksum (as u16_t) to be saved directly in the protocol header - */ -u16_t -inet_chksum_pseudo(struct pbuf *p, - struct ip_addr *src, struct ip_addr *dest, - u8_t proto, u16_t proto_len) -{ - u32_t acc; - struct pbuf *q; - u8_t swapped; - - acc = 0; - swapped = 0; - /* iterate through all pbuf in chain */ - for(q = p; q != NULL; q = q->next) { - LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): checksumming pbuf %p (has next %p) \n", - (void *)q, (void *)q->next)); - acc += LWIP_CHKSUM(q->payload, q->len); - /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%"X32_F" \n", acc));*/ - /* just executing this next line is probably faster that the if statement needed - to check whether we really need to execute it, and does no harm */ - acc = FOLD_U32T(acc); - if (q->len % 2 != 0) { - swapped = 1 - swapped; - acc = SWAP_BYTES_IN_WORD(acc); - } - /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%"X32_F" \n", acc));*/ - } - - if (swapped) { - acc = SWAP_BYTES_IN_WORD(acc); - } - acc += (src->addr & 0xffffUL); - acc += ((src->addr >> 16) & 0xffffUL); - acc += (dest->addr & 0xffffUL); - acc += ((dest->addr >> 16) & 0xffffUL); - acc += (u32_t)htons((u16_t)proto); - acc += (u32_t)htons(proto_len); - - /* Fold 32-bit sum to 16 bits - calling this twice is propably faster than if statements... */ - acc = FOLD_U32T(acc); - acc = FOLD_U32T(acc); - LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%"X32_F"\n", acc)); - return (u16_t)~(acc & 0xffffUL); -} - -/* inet_chksum_pseudo: - * - * Calculates the pseudo Internet checksum used by TCP and UDP for a pbuf chain. - * IP addresses are expected to be in network byte order. - * - * @param p chain of pbufs over that a checksum should be calculated (ip data part) - * @param src source ip address (used for checksum of pseudo header) - * @param dst destination ip address (used for checksum of pseudo header) - * @param proto ip protocol (used for checksum of pseudo header) - * @param proto_len length of the ip data part (used for checksum of pseudo header) - * @return checksum (as u16_t) to be saved directly in the protocol header - */ -/* Currently only used by UDPLITE, although this could change in the future. */ -#if LWIP_UDPLITE -u16_t -inet_chksum_pseudo_partial(struct pbuf *p, - struct ip_addr *src, struct ip_addr *dest, - u8_t proto, u16_t proto_len, u16_t chksum_len) -{ - u32_t acc; - struct pbuf *q; - u8_t swapped; - u16_t chklen; - - acc = 0; - swapped = 0; - /* iterate through all pbuf in chain */ - for(q = p; (q != NULL) && (chksum_len > 0); q = q->next) { - LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): checksumming pbuf %p (has next %p) \n", - (void *)q, (void *)q->next)); - chklen = q->len; - if (chklen > chksum_len) { - chklen = chksum_len; - } - acc += LWIP_CHKSUM(q->payload, chklen); - chksum_len -= chklen; - LWIP_ASSERT("delete me", chksum_len < 0x7fff); - /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%"X32_F" \n", acc));*/ - /* fold the upper bit down */ - acc = FOLD_U32T(acc); - if (q->len % 2 != 0) { - swapped = 1 - swapped; - acc = SWAP_BYTES_IN_WORD(acc); - } - /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%"X32_F" \n", acc));*/ - } - - if (swapped) { - acc = SWAP_BYTES_IN_WORD(acc); - } - acc += (src->addr & 0xffffUL); - acc += ((src->addr >> 16) & 0xffffUL); - acc += (dest->addr & 0xffffUL); - acc += ((dest->addr >> 16) & 0xffffUL); - acc += (u32_t)htons((u16_t)proto); - acc += (u32_t)htons(proto_len); - - /* Fold 32-bit sum to 16 bits - calling this twice is propably faster than if statements... */ - acc = FOLD_U32T(acc); - acc = FOLD_U32T(acc); - LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%"X32_F"\n", acc)); - return (u16_t)~(acc & 0xffffUL); -} -#endif /* LWIP_UDPLITE */ - -/* inet_chksum: - * - * Calculates the Internet checksum over a portion of memory. Used primarily for IP - * and ICMP. - * - * @param dataptr start of the buffer to calculate the checksum (no alignment needed) - * @param len length of the buffer to calculate the checksum - * @return checksum (as u16_t) to be saved directly in the protocol header - */ - -u16_t -inet_chksum(void *dataptr, u16_t len) -{ - return ~LWIP_CHKSUM(dataptr, len); -} - -/** - * Calculate a checksum over a chain of pbufs (without pseudo-header, much like - * inet_chksum only pbufs are used). - * - * @param p pbuf chain over that the checksum should be calculated - * @return checksum (as u16_t) to be saved directly in the protocol header - */ -u16_t -inet_chksum_pbuf(struct pbuf *p) -{ - u32_t acc; - struct pbuf *q; - u8_t swapped; - - acc = 0; - swapped = 0; - for(q = p; q != NULL; q = q->next) { - acc += LWIP_CHKSUM(q->payload, q->len); - acc = FOLD_U32T(acc); - if (q->len % 2 != 0) { - swapped = 1 - swapped; - acc = SWAP_BYTES_IN_WORD(acc); - } - } - - if (swapped) { - acc = SWAP_BYTES_IN_WORD(acc); - } - return (u16_t)~(acc & 0xffffUL); -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip.c deleted file mode 100644 index a958242a46b..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip.c +++ /dev/null @@ -1,725 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * This is the IPv4 layer implementation for incoming and outgoing IP traffic. - * - * @see ip_frag.c - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" -#include "lwip/ip.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/ip_frag.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/netif.h" -#include "lwip/icmp.h" -#include "lwip/igmp.h" -#include "lwip/raw.h" -#include "lwip/udp.h" -#include "lwip/tcp.h" -#include "lwip/snmp.h" -#include "lwip/dhcp.h" -#include "lwip/stats.h" -#include "arch/perf.h" - -#include - -/** - * The interface that provided the packet for the current callback - * invocation. - */ -struct netif *current_netif; - -/** - * Header of the input packet currently being processed. - */ -const struct ip_hdr *current_header; - -/** - * Finds the appropriate network interface for a given IP address. It - * searches the list of network interfaces linearly. A match is found - * if the masked IP address of the network interface equals the masked - * IP address given to the function. - * - * @param dest the destination IP address for which to find the route - * @return the netif on which to send to reach dest - */ -struct netif * -ip_route(struct ip_addr *dest) -{ - struct netif *netif; - - /* iterate through netifs */ - for(netif = netif_list; netif != NULL; netif = netif->next) { - /* network mask matches? */ - if (netif_is_up(netif)) { - if (ip_addr_netcmp(dest, &(netif->ip_addr), &(netif->netmask))) { - /* return netif on which to forward IP packet */ - return netif; - } - } - } - if ((netif_default == NULL) || (!netif_is_up(netif_default))) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_route: No route to 0x%"X32_F"\n", dest->addr)); - IP_STATS_INC(ip.rterr); - snmp_inc_ipoutnoroutes(); - return NULL; - } - /* no matching netif found, use default netif */ - return netif_default; -} - -#if IP_FORWARD -/** - * Forwards an IP packet. It finds an appropriate route for the - * packet, decrements the TTL value of the packet, adjusts the - * checksum and outputs the packet on the appropriate interface. - * - * @param p the packet to forward (p->payload points to IP header) - * @param iphdr the IP header of the input packet - * @param inp the netif on which this packet was received - * @return the netif on which the packet was sent (NULL if it wasn't sent) - */ -static struct netif * -ip_forward(struct pbuf *p, struct ip_hdr *iphdr, struct netif *inp) -{ - struct netif *netif; - - PERF_START; - /* Find network interface where to forward this IP packet to. */ - netif = ip_route((struct ip_addr *)&(iphdr->dest)); - if (netif == NULL) { - LWIP_DEBUGF(IP_DEBUG, ("ip_forward: no forwarding route for 0x%"X32_F" found\n", - iphdr->dest.addr)); - snmp_inc_ipoutnoroutes(); - return (struct netif *)NULL; - } - /* Do not forward packets onto the same network interface on which - * they arrived. */ - if (netif == inp) { - LWIP_DEBUGF(IP_DEBUG, ("ip_forward: not bouncing packets back on incoming interface.\n")); - snmp_inc_ipoutnoroutes(); - return (struct netif *)NULL; - } - - /* decrement TTL */ - IPH_TTL_SET(iphdr, IPH_TTL(iphdr) - 1); - /* send ICMP if TTL == 0 */ - if (IPH_TTL(iphdr) == 0) { - snmp_inc_ipinhdrerrors(); -#if LWIP_ICMP - /* Don't send ICMP messages in response to ICMP messages */ - if (IPH_PROTO(iphdr) != IP_PROTO_ICMP) { - icmp_time_exceeded(p, ICMP_TE_TTL); - } -#endif /* LWIP_ICMP */ - return (struct netif *)NULL; - } - - /* Incrementally update the IP checksum. */ - if (IPH_CHKSUM(iphdr) >= htons(0xffff - 0x100)) { - IPH_CHKSUM_SET(iphdr, IPH_CHKSUM(iphdr) + htons(0x100) + 1); - } else { - IPH_CHKSUM_SET(iphdr, IPH_CHKSUM(iphdr) + htons(0x100)); - } - - LWIP_DEBUGF(IP_DEBUG, ("ip_forward: forwarding packet to 0x%"X32_F"\n", - iphdr->dest.addr)); - - IP_STATS_INC(ip.fw); - IP_STATS_INC(ip.xmit); - snmp_inc_ipforwdatagrams(); - - PERF_STOP("ip_forward"); - /* transmit pbuf on chosen interface */ - netif->output(netif, p, (struct ip_addr *)&(iphdr->dest)); - return netif; -} -#endif /* IP_FORWARD */ - -/** - * This function is called by the network interface device driver when - * an IP packet is received. The function does the basic checks of the - * IP header such as packet size being at least larger than the header - * size etc. If the packet was not destined for us, the packet is - * forwarded (using ip_forward). The IP checksum is always checked. - * - * Finally, the packet is sent to the upper layer protocol input function. - * - * @param p the received IP packet (p->payload points to IP header) - * @param inp the netif on which this packet was received - * @return ERR_OK if the packet was processed (could return ERR_* if it wasn't - * processed, but currently always returns ERR_OK) - */ -err_t -ip_input(struct pbuf *p, struct netif *inp) -{ - struct ip_hdr *iphdr; - struct netif *netif; - u16_t iphdr_hlen; - u16_t iphdr_len; -#if LWIP_DHCP - int check_ip_src=1; -#endif /* LWIP_DHCP */ - - IP_STATS_INC(ip.recv); - snmp_inc_ipinreceives(); - - /* identify the IP header */ - iphdr = p->payload; - if (IPH_V(iphdr) != 4) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_WARNING, ("IP packet dropped due to bad version number %"U16_F"\n", IPH_V(iphdr))); - ip_debug_print(p); - pbuf_free(p); - IP_STATS_INC(ip.err); - IP_STATS_INC(ip.drop); - snmp_inc_ipinhdrerrors(); - return ERR_OK; - } - - /* obtain IP header length in number of 32-bit words */ - iphdr_hlen = IPH_HL(iphdr); - /* calculate IP header length in bytes */ - iphdr_hlen *= 4; - /* obtain ip length in bytes */ - iphdr_len = ntohs(IPH_LEN(iphdr)); - - /* header length exceeds first pbuf length, or ip length exceeds total pbuf length? */ - if ((iphdr_hlen > p->len) || (iphdr_len > p->tot_len)) { - if (iphdr_hlen > p->len) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("IP header (len %"U16_F") does not fit in first pbuf (len %"U16_F"), IP packet dropped.\n", - iphdr_hlen, p->len)); - } - if (iphdr_len > p->tot_len) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("IP (len %"U16_F") is longer than pbuf (len %"U16_F"), IP packet dropped.\n", - iphdr_len, p->tot_len)); - } - /* free (drop) packet pbufs */ - pbuf_free(p); - IP_STATS_INC(ip.lenerr); - IP_STATS_INC(ip.drop); - snmp_inc_ipindiscards(); - return ERR_OK; - } - - /* verify checksum */ -#if CHECKSUM_CHECK_IP - if (inet_chksum(iphdr, iphdr_hlen) != 0) { - - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("Checksum (0x%"X16_F") failed, IP packet dropped.\n", inet_chksum(iphdr, iphdr_hlen))); - ip_debug_print(p); - pbuf_free(p); - IP_STATS_INC(ip.chkerr); - IP_STATS_INC(ip.drop); - snmp_inc_ipinhdrerrors(); - return ERR_OK; - } -#endif - - /* Trim pbuf. This should have been done at the netif layer, - * but we'll do it anyway just to be sure that its done. */ - pbuf_realloc(p, iphdr_len); - - /* match packet against an interface, i.e. is this packet for us? */ -#if LWIP_IGMP - if (ip_addr_ismulticast(&(iphdr->dest))) { - if ((inp->flags & NETIF_FLAG_IGMP) && (igmp_lookfor_group(inp, &(iphdr->dest)))) { - netif = inp; - } else { - netif = NULL; - } - } else -#endif /* LWIP_IGMP */ - { - /* start trying with inp. if that's not acceptable, start walking the - list of configured netifs. - 'first' is used as a boolean to mark whether we started walking the list */ - int first = 1; - netif = inp; - do { - LWIP_DEBUGF(IP_DEBUG, ("ip_input: iphdr->dest 0x%"X32_F" netif->ip_addr 0x%"X32_F" (0x%"X32_F", 0x%"X32_F", 0x%"X32_F")\n", - iphdr->dest.addr, netif->ip_addr.addr, - iphdr->dest.addr & netif->netmask.addr, - netif->ip_addr.addr & netif->netmask.addr, - iphdr->dest.addr & ~(netif->netmask.addr))); - - /* interface is up and configured? */ - if ((netif_is_up(netif)) && (!ip_addr_isany(&(netif->ip_addr)))) { - /* unicast to this interface address? */ - if (ip_addr_cmp(&(iphdr->dest), &(netif->ip_addr)) || - /* or broadcast on this interface network address? */ - ip_addr_isbroadcast(&(iphdr->dest), netif)) { - LWIP_DEBUGF(IP_DEBUG, ("ip_input: packet accepted on interface %c%c\n", - netif->name[0], netif->name[1])); - /* break out of for loop */ - break; - } - } - if (first) { - first = 0; - netif = netif_list; - } else { - netif = netif->next; - } - if (netif == inp) { - netif = netif->next; - } - } while(netif != NULL); - } - -#if LWIP_DHCP - /* Pass DHCP messages regardless of destination address. DHCP traffic is addressed - * using link layer addressing (such as Ethernet MAC) so we must not filter on IP. - * According to RFC 1542 section 3.1.1, referred by RFC 2131). - */ - if (netif == NULL) { - /* remote port is DHCP server? */ - if (IPH_PROTO(iphdr) == IP_PROTO_UDP) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: UDP packet to DHCP client port %"U16_F"\n", - ntohs(((struct udp_hdr *)((u8_t *)iphdr + iphdr_hlen))->dest))); - if (ntohs(((struct udp_hdr *)((u8_t *)iphdr + iphdr_hlen))->dest) == DHCP_CLIENT_PORT) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: DHCP packet accepted.\n")); - netif = inp; - check_ip_src = 0; - } - } - } -#endif /* LWIP_DHCP */ - - /* broadcast or multicast packet source address? Compliant with RFC 1122: 3.2.1.3 */ -#if LWIP_DHCP - /* DHCP servers need 0.0.0.0 to be allowed as source address (RFC 1.1.2.2: 3.2.1.3/a) */ - if (check_ip_src && (iphdr->src.addr != 0)) -#endif /* LWIP_DHCP */ - { if ((ip_addr_isbroadcast(&(iphdr->src), inp)) || - (ip_addr_ismulticast(&(iphdr->src)))) { - /* packet source is not valid */ - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, ("ip_input: packet source is not valid.\n")); - /* free (drop) packet pbufs */ - pbuf_free(p); - IP_STATS_INC(ip.drop); - snmp_inc_ipinaddrerrors(); - snmp_inc_ipindiscards(); - return ERR_OK; - } - } - - /* packet not for us? */ - if (netif == NULL) { - /* packet not for us, route or discard */ - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_TRACE, ("ip_input: packet not for us.\n")); -#if IP_FORWARD - /* non-broadcast packet? */ - if (!ip_addr_isbroadcast(&(iphdr->dest), inp)) { - /* try to forward IP packet on (other) interfaces */ - ip_forward(p, iphdr, inp); - } else -#endif /* IP_FORWARD */ - { - snmp_inc_ipinaddrerrors(); - snmp_inc_ipindiscards(); - } - pbuf_free(p); - return ERR_OK; - } - /* packet consists of multiple fragments? */ - if ((IPH_OFFSET(iphdr) & htons(IP_OFFMASK | IP_MF)) != 0) { -#if IP_REASSEMBLY /* packet fragment reassembly code present? */ - LWIP_DEBUGF(IP_DEBUG, ("IP packet is a fragment (id=0x%04"X16_F" tot_len=%"U16_F" len=%"U16_F" MF=%"U16_F" offset=%"U16_F"), calling ip_reass()\n", - ntohs(IPH_ID(iphdr)), p->tot_len, ntohs(IPH_LEN(iphdr)), !!(IPH_OFFSET(iphdr) & htons(IP_MF)), (ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK)*8)); - /* reassemble the packet*/ - p = ip_reass(p); - /* packet not fully reassembled yet? */ - if (p == NULL) { - return ERR_OK; - } - iphdr = p->payload; -#else /* IP_REASSEMBLY == 0, no packet fragment reassembly code present */ - pbuf_free(p); - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("IP packet dropped since it was fragmented (0x%"X16_F") (while IP_REASSEMBLY == 0).\n", - ntohs(IPH_OFFSET(iphdr)))); - IP_STATS_INC(ip.opterr); - IP_STATS_INC(ip.drop); - /* unsupported protocol feature */ - snmp_inc_ipinunknownprotos(); - return ERR_OK; -#endif /* IP_REASSEMBLY */ - } - -#if IP_OPTIONS_ALLOWED == 0 /* no support for IP options in the IP header? */ - -#if LWIP_IGMP - /* there is an extra "router alert" option in IGMP messages which we allow for but do not police */ - if((iphdr_hlen > IP_HLEN && (IPH_PROTO(iphdr) != IP_PROTO_IGMP)) { -#else - if (iphdr_hlen > IP_HLEN) { -#endif /* LWIP_IGMP */ - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("IP packet dropped since there were IP options (while IP_OPTIONS_ALLOWED == 0).\n")); - pbuf_free(p); - IP_STATS_INC(ip.opterr); - IP_STATS_INC(ip.drop); - /* unsupported protocol feature */ - snmp_inc_ipinunknownprotos(); - return ERR_OK; - } -#endif /* IP_OPTIONS_ALLOWED == 0 */ - - /* send to upper layers */ - LWIP_DEBUGF(IP_DEBUG, ("ip_input: \n")); - ip_debug_print(p); - LWIP_DEBUGF(IP_DEBUG, ("ip_input: p->len %"U16_F" p->tot_len %"U16_F"\n", p->len, p->tot_len)); - - current_netif = inp; - current_header = iphdr; - -#if LWIP_RAW - /* raw input did not eat the packet? */ - if (raw_input(p, inp) == 0) -#endif /* LWIP_RAW */ - { - - switch (IPH_PROTO(iphdr)) { -#if LWIP_UDP - case IP_PROTO_UDP: -#if LWIP_UDPLITE - case IP_PROTO_UDPLITE: -#endif /* LWIP_UDPLITE */ - snmp_inc_ipindelivers(); - udp_input(p, inp); - break; -#endif /* LWIP_UDP */ -#if LWIP_TCP - case IP_PROTO_TCP: - snmp_inc_ipindelivers(); - tcp_input(p, inp); - break; -#endif /* LWIP_TCP */ -#if LWIP_ICMP - case IP_PROTO_ICMP: - snmp_inc_ipindelivers(); - icmp_input(p, inp); - break; -#endif /* LWIP_ICMP */ -#if LWIP_IGMP - case IP_PROTO_IGMP: - igmp_input(p,inp,&(iphdr->dest)); - break; -#endif /* LWIP_IGMP */ - default: -#if LWIP_ICMP - /* send ICMP destination protocol unreachable unless is was a broadcast */ - if (!ip_addr_isbroadcast(&(iphdr->dest), inp) && - !ip_addr_ismulticast(&(iphdr->dest))) { - p->payload = iphdr; - icmp_dest_unreach(p, ICMP_DUR_PROTO); - } -#endif /* LWIP_ICMP */ - pbuf_free(p); - - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("Unsupported transport protocol %"U16_F"\n", IPH_PROTO(iphdr))); - - IP_STATS_INC(ip.proterr); - IP_STATS_INC(ip.drop); - snmp_inc_ipinunknownprotos(); - } - } - - current_netif = NULL; - current_header = NULL; - - return ERR_OK; -} - -/** - * Sends an IP packet on a network interface. This function constructs - * the IP header and calculates the IP header checksum. If the source - * IP address is NULL, the IP address of the outgoing network - * interface is filled in as source address. - * If the destination IP address is IP_HDRINCL, p is assumed to already - * include an IP header and p->payload points to it instead of the data. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an IP - header and p->payload points to that IP header) - * @param src the source IP address to send from (if src == IP_ADDR_ANY, the - * IP address of the netif used to send is used as source address) - * @param dest the destination IP address to send the packet to - * @param ttl the TTL value to be set in the IP header - * @param tos the TOS value to be set in the IP header - * @param proto the PROTOCOL to be set in the IP header - * @param netif the netif on which to send this packet - * @return ERR_OK if the packet was sent OK - * ERR_BUF if p doesn't have enough space for IP/LINK headers - * returns errors returned by netif->output - * - * @note ip_id: RFC791 "some host may be able to simply use - * unique identifiers independent of destination" - */ -err_t -ip_output_if(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, - u8_t proto, struct netif *netif) -{ -#if IP_OPTIONS_SEND - return ip_output_if_opt(p, src, dest, ttl, tos, proto, netif, NULL, 0); -} - -/** - * Same as ip_output_if() but with the possibility to include IP options: - * - * @ param ip_options pointer to the IP options, copied into the IP header - * @ param optlen length of ip_options - */ -err_t ip_output_if_opt(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options, - u16_t optlen) -{ -#endif /* IP_OPTIONS_SEND */ - struct ip_hdr *iphdr; - static u16_t ip_id = 0; - - snmp_inc_ipoutrequests(); - - /* Should the IP header be generated or is it already included in p? */ - if (dest != IP_HDRINCL) { - u16_t ip_hlen = IP_HLEN; -#if IP_OPTIONS_SEND - u16_t optlen_aligned = 0; - if (optlen != 0) { - /* round up to a multiple of 4 */ - optlen_aligned = ((optlen + 3) & ~3); - ip_hlen += optlen_aligned; - /* First write in the IP options */ - if (pbuf_header(p, optlen_aligned)) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_output_if_opt: not enough room for IP options in pbuf\n")); - IP_STATS_INC(ip.err); - snmp_inc_ipoutdiscards(); - return ERR_BUF; - } - MEMCPY(p->payload, ip_options, optlen); - if (optlen < optlen_aligned) { - /* zero the remaining bytes */ - memset(((char*)p->payload) + optlen, 0, optlen_aligned - optlen); - } - } -#endif /* IP_OPTIONS_SEND */ - /* generate IP header */ - if (pbuf_header(p, IP_HLEN)) { - LWIP_DEBUGF(IP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("ip_output: not enough room for IP header in pbuf\n")); - - IP_STATS_INC(ip.err); - snmp_inc_ipoutdiscards(); - return ERR_BUF; - } - - iphdr = p->payload; - LWIP_ASSERT("check that first pbuf can hold struct ip_hdr", - (p->len >= sizeof(struct ip_hdr))); - - IPH_TTL_SET(iphdr, ttl); - IPH_PROTO_SET(iphdr, proto); - - ip_addr_set(&(iphdr->dest), dest); - - IPH_VHLTOS_SET(iphdr, 4, ip_hlen / 4, tos); - IPH_LEN_SET(iphdr, htons(p->tot_len)); - IPH_OFFSET_SET(iphdr, 0); - IPH_ID_SET(iphdr, htons(ip_id)); - ++ip_id; - - if (ip_addr_isany(src)) { - ip_addr_set(&(iphdr->src), &(netif->ip_addr)); - } else { - ip_addr_set(&(iphdr->src), src); - } - - IPH_CHKSUM_SET(iphdr, 0); -#if CHECKSUM_GEN_IP - IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, ip_hlen)); -#endif - } else { - /* IP header already included in p */ - iphdr = p->payload; - dest = &(iphdr->dest); - } - - IP_STATS_INC(ip.xmit); - - LWIP_DEBUGF(IP_DEBUG, ("ip_output_if: %c%c%"U16_F"\n", netif->name[0], netif->name[1], netif->num)); - ip_debug_print(p); - -#if ENABLE_LOOPBACK - if (ip_addr_cmp(dest, &netif->ip_addr)) { - /* Packet to self, enqueue it for loopback */ - LWIP_DEBUGF(IP_DEBUG, ("netif_loop_output()")); - return netif_loop_output(netif, p, dest); - } -#endif /* ENABLE_LOOPBACK */ -#if IP_FRAG - /* don't fragment if interface has mtu set to 0 [loopif] */ - if (netif->mtu && (p->tot_len > netif->mtu)) { - return ip_frag(p,netif,dest); - } -#endif - - LWIP_DEBUGF(IP_DEBUG, ("netif->output()")); - return netif->output(netif, p, dest); -} - -/** - * Simple interface to ip_output_if. It finds the outgoing network - * interface and calls upon ip_output_if to do the actual work. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an IP - header and p->payload points to that IP header) - * @param src the source IP address to send from (if src == IP_ADDR_ANY, the - * IP address of the netif used to send is used as source address) - * @param dest the destination IP address to send the packet to - * @param ttl the TTL value to be set in the IP header - * @param tos the TOS value to be set in the IP header - * @param proto the PROTOCOL to be set in the IP header - * - * @return ERR_RTE if no route is found - * see ip_output_if() for more return values - */ -err_t -ip_output(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto) -{ - struct netif *netif; - - if ((netif = ip_route(dest)) == NULL) { - LWIP_DEBUGF(IP_DEBUG, ("ip_output: No route to 0x%"X32_F"\n", dest->addr)); - IP_STATS_INC(ip.rterr); - return ERR_RTE; - } - - return ip_output_if(p, src, dest, ttl, tos, proto, netif); -} - -#if LWIP_NETIF_HWADDRHINT -/** Like ip_output, but takes and addr_hint pointer that is passed on to netif->addr_hint - * before calling ip_output_if. - * - * @param p the packet to send (p->payload points to the data, e.g. next - protocol header; if dest == IP_HDRINCL, p already includes an IP - header and p->payload points to that IP header) - * @param src the source IP address to send from (if src == IP_ADDR_ANY, the - * IP address of the netif used to send is used as source address) - * @param dest the destination IP address to send the packet to - * @param ttl the TTL value to be set in the IP header - * @param tos the TOS value to be set in the IP header - * @param proto the PROTOCOL to be set in the IP header - * @param addr_hint address hint pointer set to netif->addr_hint before - * calling ip_output_if() - * - * @return ERR_RTE if no route is found - * see ip_output_if() for more return values - */ -err_t -ip_output_hinted(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto, u8_t *addr_hint) -{ - struct netif *netif; - err_t err; - - if ((netif = ip_route(dest)) == NULL) { - LWIP_DEBUGF(IP_DEBUG, ("ip_output: No route to 0x%"X32_F"\n", dest->addr)); - IP_STATS_INC(ip.rterr); - return ERR_RTE; - } - - netif->addr_hint = addr_hint; - err = ip_output_if(p, src, dest, ttl, tos, proto, netif); - netif->addr_hint = NULL; - - return err; -} -#endif /* LWIP_NETIF_HWADDRHINT*/ - -#if IP_DEBUG -/* Print an IP header by using LWIP_DEBUGF - * @param p an IP packet, p->payload pointing to the IP header - */ -void -ip_debug_print(struct pbuf *p) -{ - struct ip_hdr *iphdr = p->payload; - u8_t *payload; - - payload = (u8_t *)iphdr + IP_HLEN; - - LWIP_DEBUGF(IP_DEBUG, ("IP header:\n")); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("|%2"S16_F" |%2"S16_F" | 0x%02"X16_F" | %5"U16_F" | (v, hl, tos, len)\n", - IPH_V(iphdr), - IPH_HL(iphdr), - IPH_TOS(iphdr), - ntohs(IPH_LEN(iphdr)))); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("| %5"U16_F" |%"U16_F"%"U16_F"%"U16_F"| %4"U16_F" | (id, flags, offset)\n", - ntohs(IPH_ID(iphdr)), - ntohs(IPH_OFFSET(iphdr)) >> 15 & 1, - ntohs(IPH_OFFSET(iphdr)) >> 14 & 1, - ntohs(IPH_OFFSET(iphdr)) >> 13 & 1, - ntohs(IPH_OFFSET(iphdr)) & IP_OFFMASK)); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("| %3"U16_F" | %3"U16_F" | 0x%04"X16_F" | (ttl, proto, chksum)\n", - IPH_TTL(iphdr), - IPH_PROTO(iphdr), - ntohs(IPH_CHKSUM(iphdr)))); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("| %3"U16_F" | %3"U16_F" | %3"U16_F" | %3"U16_F" | (src)\n", - ip4_addr1(&iphdr->src), - ip4_addr2(&iphdr->src), - ip4_addr3(&iphdr->src), - ip4_addr4(&iphdr->src))); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(IP_DEBUG, ("| %3"U16_F" | %3"U16_F" | %3"U16_F" | %3"U16_F" | (dest)\n", - ip4_addr1(&iphdr->dest), - ip4_addr2(&iphdr->dest), - ip4_addr3(&iphdr->dest), - ip4_addr4(&iphdr->dest))); - LWIP_DEBUGF(IP_DEBUG, ("+-------------------------------+\n")); -} -#endif /* IP_DEBUG */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_addr.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_addr.c deleted file mode 100644 index 33e0aaddd56..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_addr.c +++ /dev/null @@ -1,86 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * This is the IPv4 address tools implementation. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" -#include "lwip/ip_addr.h" -#include "lwip/inet.h" -#include "lwip/netif.h" - -#define IP_ADDR_ANY_VALUE 0x00000000UL -#define IP_ADDR_BROADCAST_VALUE 0xffffffffUL - -/* used by IP_ADDR_ANY and IP_ADDR_BROADCAST in ip_addr.h */ -const struct ip_addr ip_addr_any = { IP_ADDR_ANY_VALUE }; -const struct ip_addr ip_addr_broadcast = { IP_ADDR_BROADCAST_VALUE }; - -/** - * Determine if an address is a broadcast address on a network interface - * - * @param addr address to be checked - * @param netif the network interface against which the address is checked - * @return returns non-zero if the address is a broadcast address - */ -u8_t ip_addr_isbroadcast(struct ip_addr *addr, struct netif *netif) -{ - u32_t addr2test; - - addr2test = addr->addr; - /* all ones (broadcast) or all zeroes (old skool broadcast) */ - if ((~addr2test == IP_ADDR_ANY_VALUE) || - (addr2test == IP_ADDR_ANY_VALUE)) - return 1; - /* no broadcast support on this network interface? */ - else if ((netif->flags & NETIF_FLAG_BROADCAST) == 0) - /* the given address cannot be a broadcast address - * nor can we check against any broadcast addresses */ - return 0; - /* address matches network interface address exactly? => no broadcast */ - else if (addr2test == netif->ip_addr.addr) - return 0; - /* on the same (sub) network... */ - else if (ip_addr_netcmp(addr, &(netif->ip_addr), &(netif->netmask)) - /* ...and host identifier bits are all ones? =>... */ - && ((addr2test & ~netif->netmask.addr) == - (IP_ADDR_BROADCAST_VALUE & ~netif->netmask.addr))) - /* => network broadcast address */ - return 1; - else - return 0; -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_frag.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_frag.c deleted file mode 100644 index ab35572e444..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/ipv4/ip_frag.c +++ /dev/null @@ -1,794 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * This is the IPv4 packet segmentation and reassembly implementation. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Jani Monoses - * Simon Goldschmidt - * original reassembly code by Adam Dunkels - * - */ - -#include "lwip/opt.h" -#include "lwip/ip_frag.h" -#include "lwip/ip.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/netif.h" -#include "lwip/snmp.h" -#include "lwip/stats.h" -#include "lwip/icmp.h" - -#include - -#if IP_REASSEMBLY -/** - * The IP reassembly code currently has the following limitations: - * - IP header options are not supported - * - fragments must not overlap (e.g. due to different routes), - * currently, overlapping or duplicate fragments are thrown away - * if IP_REASS_CHECK_OVERLAP=1 (the default)! - * - * @todo: work with IP header options - */ - -/** Setting this to 0, you can turn off checking the fragments for overlapping - * regions. The code gets a little smaller. Only use this if you know that - * overlapping won't occur on your network! */ -#ifndef IP_REASS_CHECK_OVERLAP -#define IP_REASS_CHECK_OVERLAP 1 -#endif /* IP_REASS_CHECK_OVERLAP */ - -/** Set to 0 to prevent freeing the oldest datagram when the reassembly buffer is - * full (IP_REASS_MAX_PBUFS pbufs are enqueued). The code gets a little smaller. - * Datagrams will be freed by timeout only. Especially useful when MEMP_NUM_REASSDATA - * is set to 1, so one datagram can be reassembled at a time, only. */ -#ifndef IP_REASS_FREE_OLDEST -#define IP_REASS_FREE_OLDEST 1 -#endif /* IP_REASS_FREE_OLDEST */ - -#define IP_REASS_FLAG_LASTFRAG 0x01 - -/** This is a helper struct which holds the starting - * offset and the ending offset of this fragment to - * easily chain the fragments. - * It has to be packed since it has to fit inside the IP header. - */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip_reass_helper { - PACK_STRUCT_FIELD(struct pbuf *next_pbuf); - PACK_STRUCT_FIELD(u16_t start); - PACK_STRUCT_FIELD(u16_t end); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define IP_ADDRESSES_AND_ID_MATCH(iphdrA, iphdrB) \ - (ip_addr_cmp(&(iphdrA)->src, &(iphdrB)->src) && \ - ip_addr_cmp(&(iphdrA)->dest, &(iphdrB)->dest) && \ - IPH_ID(iphdrA) == IPH_ID(iphdrB)) ? 1 : 0 - -/* global variables */ -static struct ip_reassdata *reassdatagrams; -static u16_t ip_reass_pbufcount; - -/* function prototypes */ -static void ip_reass_dequeue_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev); -static int ip_reass_free_complete_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev); - -/** - * Reassembly timer base function - * for both NO_SYS == 0 and 1 (!). - * - * Should be called every 1000 msec (defined by IP_TMR_INTERVAL). - */ -void -ip_reass_tmr(void) -{ - struct ip_reassdata *r, *prev = NULL; - - r = reassdatagrams; - while (r != NULL) { - /* Decrement the timer. Once it reaches 0, - * clean up the incomplete fragment assembly */ - if (r->timer > 0) { - r->timer--; - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_tmr: timer dec %"U16_F"\n",(u16_t)r->timer)); - prev = r; - r = r->next; - } else { - /* reassembly timed out */ - struct ip_reassdata *tmp; - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass_tmr: timer timed out\n")); - tmp = r; - /* get the next pointer before freeing */ - r = r->next; - /* free the helper struct and all enqueued pbufs */ - ip_reass_free_complete_datagram(tmp, prev); - } - } -} - -/** - * Free a datagram (struct ip_reassdata) and all its pbufs. - * Updates the total count of enqueued pbufs (ip_reass_pbufcount), - * SNMP counters and sends an ICMP time exceeded packet. - * - * @param ipr datagram to free - * @param prev the previous datagram in the linked list - * @return the number of pbufs freed - */ -static int -ip_reass_free_complete_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev) -{ - int pbufs_freed = 0; - struct pbuf *p; - struct ip_reass_helper *iprh; - - LWIP_ASSERT("prev != ipr", prev != ipr); - if (prev != NULL) { - LWIP_ASSERT("prev->next == ipr", prev->next == ipr); - } - - snmp_inc_ipreasmfails(); -#if LWIP_ICMP - iprh = (struct ip_reass_helper *)ipr->p->payload; - if (iprh->start == 0) { - /* The first fragment was received, send ICMP time exceeded. */ - /* First, de-queue the first pbuf from r->p. */ - p = ipr->p; - ipr->p = iprh->next_pbuf; - /* Then, copy the original header into it. */ - SMEMCPY(p->payload, &ipr->iphdr, IP_HLEN); - icmp_time_exceeded(p, ICMP_TE_FRAG); - pbufs_freed += pbuf_clen(p); - pbuf_free(p); - } -#endif /* LWIP_ICMP */ - - /* First, free all received pbufs. The individual pbufs need to be released - separately as they have not yet been chained */ - p = ipr->p; - while (p != NULL) { - struct pbuf *pcur; - iprh = (struct ip_reass_helper *)p->payload; - pcur = p; - /* get the next pointer before freeing */ - p = iprh->next_pbuf; - pbufs_freed += pbuf_clen(pcur); - pbuf_free(pcur); - } - /* Then, unchain the struct ip_reassdata from the list and free it. */ - ip_reass_dequeue_datagram(ipr, prev); - LWIP_ASSERT("ip_reass_pbufcount >= clen", ip_reass_pbufcount >= pbufs_freed); - ip_reass_pbufcount -= pbufs_freed; - - return pbufs_freed; -} - -#if IP_REASS_FREE_OLDEST -/** - * Free the oldest datagram to make room for enqueueing new fragments. - * The datagram 'fraghdr' belongs to is not freed! - * - * @param fraghdr IP header of the current fragment - * @param pbufs_needed number of pbufs needed to enqueue - * (used for freeing other datagrams if not enough space) - * @return the number of pbufs freed - */ -static int -ip_reass_remove_oldest_datagram(struct ip_hdr *fraghdr, int pbufs_needed) -{ - /* @todo Can't we simply remove the last datagram in the - * linked list behind reassdatagrams? - */ - struct ip_reassdata *r, *oldest, *prev; - int pbufs_freed = 0, pbufs_freed_current; - int other_datagrams; - - /* Free datagrams until being allowed to enqueue 'pbufs_needed' pbufs, - * but don't free the datagram that 'fraghdr' belongs to! */ - do { - oldest = NULL; - prev = NULL; - other_datagrams = 0; - r = reassdatagrams; - while (r != NULL) { - if (!IP_ADDRESSES_AND_ID_MATCH(&r->iphdr, fraghdr)) { - /* Not the same datagram as fraghdr */ - other_datagrams++; - if (oldest == NULL) { - oldest = r; - } else if (r->timer <= oldest->timer) { - /* older than the previous oldest */ - oldest = r; - } - } - if (r->next != NULL) { - prev = r; - } - r = r->next; - } - if (oldest != NULL) { - pbufs_freed_current = ip_reass_free_complete_datagram(oldest, prev); - pbufs_freed += pbufs_freed_current; - } - } while ((pbufs_freed < pbufs_needed) && (other_datagrams > 1)); - return pbufs_freed; -} -#endif /* IP_REASS_FREE_OLDEST */ - -/** - * Enqueues a new fragment into the fragment queue - * @param fraghdr points to the new fragments IP hdr - * @param clen number of pbufs needed to enqueue (used for freeing other datagrams if not enough space) - * @return A pointer to the queue location into which the fragment was enqueued - */ -static struct ip_reassdata* -ip_reass_enqueue_new_datagram(struct ip_hdr *fraghdr, int clen) -{ - struct ip_reassdata* ipr; - /* No matching previous fragment found, allocate a new reassdata struct */ - ipr = memp_malloc(MEMP_REASSDATA); - if (ipr == NULL) { -#if IP_REASS_FREE_OLDEST - if (ip_reass_remove_oldest_datagram(fraghdr, clen) >= clen) { - ipr = memp_malloc(MEMP_REASSDATA); - } - if (ipr == NULL) -#endif /* IP_REASS_FREE_OLDEST */ - { - IPFRAG_STATS_INC(ip_frag.memerr); - LWIP_DEBUGF(IP_REASS_DEBUG,("Failed to alloc reassdata struct\n")); - return NULL; - } - } - memset(ipr, 0, sizeof(struct ip_reassdata)); - ipr->timer = IP_REASS_MAXAGE; - - /* enqueue the new structure to the front of the list */ - ipr->next = reassdatagrams; - reassdatagrams = ipr; - /* copy the ip header for later tests and input */ - /* @todo: no ip options supported? */ - SMEMCPY(&(ipr->iphdr), fraghdr, IP_HLEN); - return ipr; -} - -/** - * Dequeues a datagram from the datagram queue. Doesn't deallocate the pbufs. - * @param ipr points to the queue entry to dequeue - */ -static void -ip_reass_dequeue_datagram(struct ip_reassdata *ipr, struct ip_reassdata *prev) -{ - - /* dequeue the reass struct */ - if (reassdatagrams == ipr) { - /* it was the first in the list */ - reassdatagrams = ipr->next; - } else { - /* it wasn't the first, so it must have a valid 'prev' */ - LWIP_ASSERT("sanity check linked list", prev != NULL); - prev->next = ipr->next; - } - - /* now we can free the ip_reass struct */ - memp_free(MEMP_REASSDATA, ipr); -} - -/** - * Chain a new pbuf into the pbuf list that composes the datagram. The pbuf list - * will grow over time as new pbufs are rx. - * Also checks that the datagram passes basic continuity checks (if the last - * fragment was received at least once). - * @param root_p points to the 'root' pbuf for the current datagram being assembled. - * @param new_p points to the pbuf for the current fragment - * @return 0 if invalid, >0 otherwise - */ -static int -ip_reass_chain_frag_into_datagram_and_validate(struct ip_reassdata *ipr, struct pbuf *new_p) -{ - struct ip_reass_helper *iprh, *iprh_tmp, *iprh_prev=NULL; - struct pbuf *q; - u16_t offset,len; - struct ip_hdr *fraghdr; - int valid = 1; - - /* Extract length and fragment offset from current fragment */ - fraghdr = (struct ip_hdr*)new_p->payload; - len = ntohs(IPH_LEN(fraghdr)) - IPH_HL(fraghdr) * 4; - offset = (ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) * 8; - - /* overwrite the fragment's ip header from the pbuf with our helper struct, - * and setup the embedded helper structure. */ - /* make sure the struct ip_reass_helper fits into the IP header */ - LWIP_ASSERT("sizeof(struct ip_reass_helper) <= IP_HLEN", - sizeof(struct ip_reass_helper) <= IP_HLEN); - iprh = (struct ip_reass_helper*)new_p->payload; - iprh->next_pbuf = NULL; - iprh->start = offset; - iprh->end = offset + len; - - /* Iterate through until we either get to the end of the list (append), - * or we find on with a larger offset (insert). */ - for (q = ipr->p; q != NULL;) { - iprh_tmp = (struct ip_reass_helper*)q->payload; - if (iprh->start < iprh_tmp->start) { - /* the new pbuf should be inserted before this */ - iprh->next_pbuf = q; - if (iprh_prev != NULL) { - /* not the fragment with the lowest offset */ -#if IP_REASS_CHECK_OVERLAP - if ((iprh->start < iprh_prev->end) || (iprh->end > iprh_tmp->start)) { - /* fragment overlaps with previous or following, throw away */ - goto freepbuf; - } -#endif /* IP_REASS_CHECK_OVERLAP */ - iprh_prev->next_pbuf = new_p; - } else { - /* fragment with the lowest offset */ - ipr->p = new_p; - } - break; - } else if(iprh->start == iprh_tmp->start) { - /* received the same datagram twice: no need to keep the datagram */ - goto freepbuf; -#if IP_REASS_CHECK_OVERLAP - } else if(iprh->start < iprh_tmp->end) { - /* overlap: no need to keep the new datagram */ - goto freepbuf; -#endif /* IP_REASS_CHECK_OVERLAP */ - } else { - /* Check if the fragments received so far have no wholes. */ - if (iprh_prev != NULL) { - if (iprh_prev->end != iprh_tmp->start) { - /* There is a fragment missing between the current - * and the previous fragment */ - valid = 0; - } - } - } - q = iprh_tmp->next_pbuf; - iprh_prev = iprh_tmp; - } - - /* If q is NULL, then we made it to the end of the list. Determine what to do now */ - if (q == NULL) { - if (iprh_prev != NULL) { - /* this is (for now), the fragment with the highest offset: - * chain it to the last fragment */ -#if IP_REASS_CHECK_OVERLAP - LWIP_ASSERT("check fragments don't overlap", iprh_prev->end <= iprh->start); -#endif /* IP_REASS_CHECK_OVERLAP */ - iprh_prev->next_pbuf = new_p; - if (iprh_prev->end != iprh->start) { - valid = 0; - } - } else { -#if IP_REASS_CHECK_OVERLAP - LWIP_ASSERT("no previous fragment, this must be the first fragment!", - ipr->p == NULL); -#endif /* IP_REASS_CHECK_OVERLAP */ - /* this is the first fragment we ever received for this ip datagram */ - ipr->p = new_p; - } - } - - /* At this point, the validation part begins: */ - /* If we already received the last fragment */ - if ((ipr->flags & IP_REASS_FLAG_LASTFRAG) != 0) { - /* and had no wholes so far */ - if (valid) { - /* then check if the rest of the fragments is here */ - /* Check if the queue starts with the first datagram */ - if (((struct ip_reass_helper*)ipr->p->payload)->start != 0) { - valid = 0; - } else { - /* and check that there are no wholes after this datagram */ - iprh_prev = iprh; - q = iprh->next_pbuf; - while (q != NULL) { - iprh = (struct ip_reass_helper*)q->payload; - if (iprh_prev->end != iprh->start) { - valid = 0; - break; - } - iprh_prev = iprh; - q = iprh->next_pbuf; - } - /* if still valid, all fragments are received - * (because to the MF==0 already arrived */ - if (valid) { - LWIP_ASSERT("sanity check", ipr->p != NULL); - LWIP_ASSERT("sanity check", - ((struct ip_reass_helper*)ipr->p->payload) != iprh); - LWIP_ASSERT("validate_datagram:next_pbuf!=NULL", - iprh->next_pbuf == NULL); - LWIP_ASSERT("validate_datagram:datagram end!=datagram len", - iprh->end == ipr->datagram_len); - } - } - } - /* If valid is 0 here, there are some fragments missing in the middle - * (since MF == 0 has already arrived). Such datagrams simply time out if - * no more fragments are received... */ - return valid; - } - /* If we come here, not all fragments were received, yet! */ - return 0; /* not yet valid! */ -#if IP_REASS_CHECK_OVERLAP -freepbuf: - ip_reass_pbufcount -= pbuf_clen(new_p); - pbuf_free(new_p); - return 0; -#endif /* IP_REASS_CHECK_OVERLAP */ -} - -/** - * Reassembles incoming IP fragments into an IP datagram. - * - * @param p points to a pbuf chain of the fragment - * @return NULL if reassembly is incomplete, ? otherwise - */ -struct pbuf * -ip_reass(struct pbuf *p) -{ - struct pbuf *r; - struct ip_hdr *fraghdr; - struct ip_reassdata *ipr; - struct ip_reass_helper *iprh; - u16_t offset, len; - u8_t clen; - struct ip_reassdata *ipr_prev = NULL; - - IPFRAG_STATS_INC(ip_frag.recv); - snmp_inc_ipreasmreqds(); - - fraghdr = (struct ip_hdr*)p->payload; - - if ((IPH_HL(fraghdr) * 4) != IP_HLEN) { - LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass: IP options currently not supported!\n")); - IPFRAG_STATS_INC(ip_frag.err); - goto nullreturn; - } - - offset = (ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) * 8; - len = ntohs(IPH_LEN(fraghdr)) - IPH_HL(fraghdr) * 4; - - /* Check if we are allowed to enqueue more datagrams. */ - clen = pbuf_clen(p); - if ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS) { -#if IP_REASS_FREE_OLDEST - if (!ip_reass_remove_oldest_datagram(fraghdr, clen) || - ((ip_reass_pbufcount + clen) > IP_REASS_MAX_PBUFS)) -#endif /* IP_REASS_FREE_OLDEST */ - { - /* No datagram could be freed and still too many pbufs enqueued */ - LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass: Overflow condition: pbufct=%d, clen=%d, MAX=%d\n", - ip_reass_pbufcount, clen, IP_REASS_MAX_PBUFS)); - IPFRAG_STATS_INC(ip_frag.memerr); - /* @todo: send ICMP time exceeded here? */ - /* drop this pbuf */ - goto nullreturn; - } - } - - /* Look for the datagram the fragment belongs to in the current datagram queue, - * remembering the previous in the queue for later dequeueing. */ - for (ipr = reassdatagrams; ipr != NULL; ipr = ipr->next) { - /* Check if the incoming fragment matches the one currently present - in the reassembly buffer. If so, we proceed with copying the - fragment into the buffer. */ - if (IP_ADDRESSES_AND_ID_MATCH(&ipr->iphdr, fraghdr)) { - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_reass: matching previous fragment ID=%"X16_F"\n", - ntohs(IPH_ID(fraghdr)))); - IPFRAG_STATS_INC(ip_frag.cachehit); - break; - } - ipr_prev = ipr; - } - - if (ipr == NULL) { - /* Enqueue a new datagram into the datagram queue */ - ipr = ip_reass_enqueue_new_datagram(fraghdr, clen); - /* Bail if unable to enqueue */ - if(ipr == NULL) { - goto nullreturn; - } - } else { - if (((ntohs(IPH_OFFSET(fraghdr)) & IP_OFFMASK) == 0) && - ((ntohs(IPH_OFFSET(&ipr->iphdr)) & IP_OFFMASK) != 0)) { - /* ipr->iphdr is not the header from the first fragment, but fraghdr is - * -> copy fraghdr into ipr->iphdr since we want to have the header - * of the first fragment (for ICMP time exceeded and later, for copying - * all options, if supported)*/ - SMEMCPY(&ipr->iphdr, fraghdr, IP_HLEN); - } - } - /* Track the current number of pbufs current 'in-flight', in order to limit - the number of fragments that may be enqueued at any one time */ - ip_reass_pbufcount += clen; - - /* At this point, we have either created a new entry or pointing - * to an existing one */ - - /* check for 'no more fragments', and update queue entry*/ - if ((ntohs(IPH_OFFSET(fraghdr)) & IP_MF) == 0) { - ipr->flags |= IP_REASS_FLAG_LASTFRAG; - ipr->datagram_len = offset + len; - LWIP_DEBUGF(IP_REASS_DEBUG, - ("ip_reass: last fragment seen, total len %"S16_F"\n", - ipr->datagram_len)); - } - /* find the right place to insert this pbuf */ - /* @todo: trim pbufs if fragments are overlapping */ - if (ip_reass_chain_frag_into_datagram_and_validate(ipr, p)) { - /* the totally last fragment (flag more fragments = 0) was received at least - * once AND all fragments are received */ - ipr->datagram_len += IP_HLEN; - - /* save the second pbuf before copying the header over the pointer */ - r = ((struct ip_reass_helper*)ipr->p->payload)->next_pbuf; - - /* copy the original ip header back to the first pbuf */ - fraghdr = (struct ip_hdr*)(ipr->p->payload); - SMEMCPY(fraghdr, &ipr->iphdr, IP_HLEN); - IPH_LEN_SET(fraghdr, htons(ipr->datagram_len)); - IPH_OFFSET_SET(fraghdr, 0); - IPH_CHKSUM_SET(fraghdr, 0); - /* @todo: do we need to set calculate the correct checksum? */ - IPH_CHKSUM_SET(fraghdr, inet_chksum(fraghdr, IP_HLEN)); - - p = ipr->p; - - /* chain together the pbufs contained within the reass_data list. */ - while(r != NULL) { - iprh = (struct ip_reass_helper*)r->payload; - - /* hide the ip header for every succeding fragment */ - pbuf_header(r, -IP_HLEN); - pbuf_cat(p, r); - r = iprh->next_pbuf; - } - /* release the sources allocate for the fragment queue entry */ - ip_reass_dequeue_datagram(ipr, ipr_prev); - - /* and adjust the number of pbufs currently queued for reassembly. */ - ip_reass_pbufcount -= pbuf_clen(p); - - /* Return the pbuf chain */ - return p; - } - /* the datagram is not (yet?) reassembled completely */ - LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass_pbufcount: %d out\n", ip_reass_pbufcount)); - return NULL; - -nullreturn: - LWIP_DEBUGF(IP_REASS_DEBUG,("ip_reass: nullreturn\n")); - IPFRAG_STATS_INC(ip_frag.drop); - pbuf_free(p); - return NULL; -} -#endif /* IP_REASSEMBLY */ - -#if IP_FRAG -#if IP_FRAG_USES_STATIC_BUF -static u8_t buf[LWIP_MEM_ALIGN_SIZE(IP_FRAG_MAX_MTU + MEM_ALIGNMENT - 1)]; -#endif /* IP_FRAG_USES_STATIC_BUF */ - -/** - * Fragment an IP datagram if too large for the netif. - * - * Chop the datagram in MTU sized chunks and send them in order - * by using a fixed size static memory buffer (PBUF_REF) or - * point PBUF_REFs into p (depending on IP_FRAG_USES_STATIC_BUF). - * - * @param p ip packet to send - * @param netif the netif on which to send - * @param dest destination ip address to which to send - * - * @return ERR_OK if sent successfully, err_t otherwise - */ -err_t -ip_frag(struct pbuf *p, struct netif *netif, struct ip_addr *dest) -{ - struct pbuf *rambuf; -#if IP_FRAG_USES_STATIC_BUF - struct pbuf *header; -#else - struct pbuf *newpbuf; - struct ip_hdr *original_iphdr; -#endif - struct ip_hdr *iphdr; - u16_t nfb; - u16_t left, cop; - u16_t mtu = netif->mtu; - u16_t ofo, omf; - u16_t last; - u16_t poff = IP_HLEN; - u16_t tmp; -#if !IP_FRAG_USES_STATIC_BUF - u16_t newpbuflen = 0; - u16_t left_to_copy; -#endif - - /* Get a RAM based MTU sized pbuf */ -#if IP_FRAG_USES_STATIC_BUF - /* When using a static buffer, we use a PBUF_REF, which we will - * use to reference the packet (without link header). - * Layer and length is irrelevant. - */ - rambuf = pbuf_alloc(PBUF_LINK, 0, PBUF_REF); - if (rambuf == NULL) { - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_frag: pbuf_alloc(PBUF_LINK, 0, PBUF_REF) failed\n")); - return ERR_MEM; - } - rambuf->tot_len = rambuf->len = mtu; - rambuf->payload = LWIP_MEM_ALIGN((void *)buf); - - /* Copy the IP header in it */ - iphdr = rambuf->payload; - SMEMCPY(iphdr, p->payload, IP_HLEN); -#else /* IP_FRAG_USES_STATIC_BUF */ - original_iphdr = p->payload; - iphdr = original_iphdr; -#endif /* IP_FRAG_USES_STATIC_BUF */ - - /* Save original offset */ - tmp = ntohs(IPH_OFFSET(iphdr)); - ofo = tmp & IP_OFFMASK; - omf = tmp & IP_MF; - - left = p->tot_len - IP_HLEN; - - nfb = (mtu - IP_HLEN) / 8; - - while (left) { - last = (left <= mtu - IP_HLEN); - - /* Set new offset and MF flag */ - tmp = omf | (IP_OFFMASK & (ofo)); - if (!last) - tmp = tmp | IP_MF; - - /* Fill this fragment */ - cop = last ? left : nfb * 8; - -#if IP_FRAG_USES_STATIC_BUF - poff += pbuf_copy_partial(p, (u8_t*)iphdr + IP_HLEN, cop, poff); -#else /* IP_FRAG_USES_STATIC_BUF */ - /* When not using a static buffer, create a chain of pbufs. - * The first will be a PBUF_RAM holding the link and IP header. - * The rest will be PBUF_REFs mirroring the pbuf chain to be fragged, - * but limited to the size of an mtu. - */ - rambuf = pbuf_alloc(PBUF_LINK, IP_HLEN, PBUF_RAM); - if (rambuf == NULL) { - return ERR_MEM; - } - LWIP_ASSERT("this needs a pbuf in one piece!", - (p->len >= (IP_HLEN))); - SMEMCPY(rambuf->payload, original_iphdr, IP_HLEN); - iphdr = rambuf->payload; - - /* Can just adjust p directly for needed offset. */ - p->payload = (u8_t *)p->payload + poff; - p->len -= poff; - - left_to_copy = cop; - while (left_to_copy) { - newpbuflen = (left_to_copy < p->len) ? left_to_copy : p->len; - /* Is this pbuf already empty? */ - if (!newpbuflen) { - p = p->next; - continue; - } - newpbuf = pbuf_alloc(PBUF_RAW, 0, PBUF_REF); - if (newpbuf == NULL) { - pbuf_free(rambuf); - return ERR_MEM; - } - /* Mirror this pbuf, although we might not need all of it. */ - newpbuf->payload = p->payload; - newpbuf->len = newpbuf->tot_len = newpbuflen; - /* Add it to end of rambuf's chain, but using pbuf_cat, not pbuf_chain - * so that it is removed when pbuf_dechain is later called on rambuf. - */ - pbuf_cat(rambuf, newpbuf); - left_to_copy -= newpbuflen; - if (left_to_copy) - p = p->next; - } - poff = newpbuflen; -#endif /* IP_FRAG_USES_STATIC_BUF */ - - /* Correct header */ - IPH_OFFSET_SET(iphdr, htons(tmp)); - IPH_LEN_SET(iphdr, htons(cop + IP_HLEN)); - IPH_CHKSUM_SET(iphdr, 0); - IPH_CHKSUM_SET(iphdr, inet_chksum(iphdr, IP_HLEN)); - -#if IP_FRAG_USES_STATIC_BUF - if (last) - pbuf_realloc(rambuf, left + IP_HLEN); - - /* This part is ugly: we alloc a RAM based pbuf for - * the link level header for each chunk and then - * free it.A PBUF_ROM style pbuf for which pbuf_header - * worked would make things simpler. - */ - header = pbuf_alloc(PBUF_LINK, 0, PBUF_RAM); - if (header != NULL) { - pbuf_chain(header, rambuf); - netif->output(netif, header, dest); - IPFRAG_STATS_INC(ip_frag.xmit); - snmp_inc_ipfragcreates(); - pbuf_free(header); - } else { - LWIP_DEBUGF(IP_REASS_DEBUG, ("ip_frag: pbuf_alloc() for header failed\n")); - pbuf_free(rambuf); - return ERR_MEM; - } -#else /* IP_FRAG_USES_STATIC_BUF */ - /* No need for separate header pbuf - we allowed room for it in rambuf - * when allocated. - */ - netif->output(netif, rambuf, dest); - IPFRAG_STATS_INC(ip_frag.xmit); - - /* Unfortunately we can't reuse rambuf - the hardware may still be - * using the buffer. Instead we free it (and the ensuing chain) and - * recreate it next time round the loop. If we're lucky the hardware - * will have already sent the packet, the free will really free, and - * there will be zero memory penalty. - */ - - pbuf_free(rambuf); -#endif /* IP_FRAG_USES_STATIC_BUF */ - left -= cop; - ofo += nfb; - } -#if IP_FRAG_USES_STATIC_BUF - pbuf_free(rambuf); -#endif /* IP_FRAG_USES_STATIC_BUF */ - snmp_inc_ipfragoks(); - return ERR_OK; -} -#endif /* IP_FRAG */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/mem.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/mem.c deleted file mode 100644 index ea3f4a6cda2..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/mem.c +++ /dev/null @@ -1,635 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Dynamic memory manager - * - * This is a lightweight replacement for the standard C library malloc(). - * - * If you want to use the standard C library malloc() instead, define - * MEM_LIBC_MALLOC to 1 in your lwipopts.h - * - * To let mem_malloc() use pools (prevents fragmentation and is much faster than - * a heap but might waste some memory), define MEM_USE_POOLS to 1, define - * MEM_USE_CUSTOM_POOLS to 1 and create a file "lwippools.h" that includes a list - * of pools like this (more pools can be added between _START and _END): - * - * Define three pools with sizes 256, 512, and 1512 bytes - * LWIP_MALLOC_MEMPOOL_START - * LWIP_MALLOC_MEMPOOL(20, 256) - * LWIP_MALLOC_MEMPOOL(10, 512) - * LWIP_MALLOC_MEMPOOL(5, 1512) - * LWIP_MALLOC_MEMPOOL_END - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * Simon Goldschmidt - * - */ - -#include "lwip/opt.h" - -#if !MEM_LIBC_MALLOC /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/sys.h" -#include "lwip/stats.h" - -#include - -#if MEM_USE_POOLS -/* lwIP head implemented with different sized pools */ - -/** - * Allocate memory: determine the smallest pool that is big enough - * to contain an element of 'size' and get an element from that pool. - * - * @param size the size in bytes of the memory needed - * @return a pointer to the allocated memory or NULL if the pool is empty - */ -void * -mem_malloc(mem_size_t size) -{ - struct memp_malloc_helper *element; - memp_t poolnr; - mem_size_t required_size = size + sizeof(struct memp_malloc_helper); - - for (poolnr = MEMP_POOL_FIRST; poolnr <= MEMP_POOL_LAST; poolnr++) { -#if MEM_USE_POOLS_TRY_BIGGER_POOL -again: -#endif /* MEM_USE_POOLS_TRY_BIGGER_POOL */ - /* is this pool big enough to hold an element of the required size - plus a struct memp_malloc_helper that saves the pool this element came from? */ - if (required_size <= memp_sizes[poolnr]) { - break; - } - } - if (poolnr > MEMP_POOL_LAST) { - LWIP_ASSERT("mem_malloc(): no pool is that big!", 0); - return NULL; - } - element = (struct memp_malloc_helper*)memp_malloc(poolnr); - if (element == NULL) { - /* No need to DEBUGF or ASSERT: This error is already - taken care of in memp.c */ -#if MEM_USE_POOLS_TRY_BIGGER_POOL - /** Try a bigger pool if this one is empty! */ - if (poolnr < MEMP_POOL_LAST) { - poolnr++; - goto again; - } -#endif /* MEM_USE_POOLS_TRY_BIGGER_POOL */ - return NULL; - } - - /* save the pool number this element came from */ - element->poolnr = poolnr; - /* and return a pointer to the memory directly after the struct memp_malloc_helper */ - element++; - - return element; -} - -/** - * Free memory previously allocated by mem_malloc. Loads the pool number - * and calls memp_free with that pool number to put the element back into - * its pool - * - * @param rmem the memory element to free - */ -void -mem_free(void *rmem) -{ - struct memp_malloc_helper *hmem = (struct memp_malloc_helper*)rmem; - - LWIP_ASSERT("rmem != NULL", (rmem != NULL)); - LWIP_ASSERT("rmem == MEM_ALIGN(rmem)", (rmem == LWIP_MEM_ALIGN(rmem))); - - /* get the original struct memp_malloc_helper */ - hmem--; - - LWIP_ASSERT("hmem != NULL", (hmem != NULL)); - LWIP_ASSERT("hmem == MEM_ALIGN(hmem)", (hmem == LWIP_MEM_ALIGN(hmem))); - LWIP_ASSERT("hmem->poolnr < MEMP_MAX", (hmem->poolnr < MEMP_MAX)); - - /* and put it in the pool we saved earlier */ - memp_free(hmem->poolnr, hmem); -} - -#else /* MEM_USE_POOLS */ -/* lwIP replacement for your libc malloc() */ - -/** - * The heap is made up as a list of structs of this type. - * This does not have to be aligned since for getting its size, - * we only use the macro SIZEOF_STRUCT_MEM, which automatically alignes. - */ -struct mem { - /** index (-> ram[next]) of the next struct */ - mem_size_t next; - /** index (-> ram[next]) of the next struct */ - mem_size_t prev; - /** 1: this area is used; 0: this area is unused */ - u8_t used; -}; - -/** All allocated blocks will be MIN_SIZE bytes big, at least! - * MIN_SIZE can be overridden to suit your needs. Smaller values save space, - * larger values could prevent too small blocks to fragment the RAM too much. */ -#ifndef MIN_SIZE -#define MIN_SIZE 12 -#endif /* MIN_SIZE */ -/* some alignment macros: we define them here for better source code layout */ -#define MIN_SIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(MIN_SIZE) -#define SIZEOF_STRUCT_MEM LWIP_MEM_ALIGN_SIZE(sizeof(struct mem)) -#define MEM_SIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(MEM_SIZE) - -/** the heap. we need one struct mem at the end and some room for alignment */ -static u8_t ram_heap[MEM_SIZE_ALIGNED + (2*SIZEOF_STRUCT_MEM) + MEM_ALIGNMENT]; -/** pointer to the heap (ram_heap): for alignment, ram is now a pointer instead of an array */ -static u8_t *ram; -/** the last entry, always unused! */ -static struct mem *ram_end; -/** pointer to the lowest free block, this is used for faster search */ -static struct mem *lfree; - -/** concurrent access protection */ -static sys_sem_t mem_sem; - -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - -static volatile u8_t mem_free_count; - -/* Allow mem_free from other (e.g. interrupt) context */ -#define LWIP_MEM_FREE_DECL_PROTECT() SYS_ARCH_DECL_PROTECT(lev_free) -#define LWIP_MEM_FREE_PROTECT() SYS_ARCH_PROTECT(lev_free) -#define LWIP_MEM_FREE_UNPROTECT() SYS_ARCH_UNPROTECT(lev_free) -#define LWIP_MEM_ALLOC_DECL_PROTECT() SYS_ARCH_DECL_PROTECT(lev_alloc) -#define LWIP_MEM_ALLOC_PROTECT() SYS_ARCH_PROTECT(lev_alloc) -#define LWIP_MEM_ALLOC_UNPROTECT() SYS_ARCH_UNPROTECT(lev_alloc) - -#else /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - -/* Protect the heap only by using a semaphore */ -#define LWIP_MEM_FREE_DECL_PROTECT() -#define LWIP_MEM_FREE_PROTECT() sys_arch_sem_wait(mem_sem, 0) -#define LWIP_MEM_FREE_UNPROTECT() sys_sem_signal(mem_sem) -/* mem_malloc is protected using semaphore AND LWIP_MEM_ALLOC_PROTECT */ -#define LWIP_MEM_ALLOC_DECL_PROTECT() -#define LWIP_MEM_ALLOC_PROTECT() -#define LWIP_MEM_ALLOC_UNPROTECT() - -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - - -/** - * "Plug holes" by combining adjacent empty struct mems. - * After this function is through, there should not exist - * one empty struct mem pointing to another empty struct mem. - * - * @param mem this points to a struct mem which just has been freed - * @internal this function is only called by mem_free() and mem_realloc() - * - * This assumes access to the heap is protected by the calling function - * already. - */ -static void -plug_holes(struct mem *mem) -{ - struct mem *nmem; - struct mem *pmem; - - LWIP_ASSERT("plug_holes: mem >= ram", (u8_t *)mem >= ram); - LWIP_ASSERT("plug_holes: mem < ram_end", (u8_t *)mem < (u8_t *)ram_end); - LWIP_ASSERT("plug_holes: mem->used == 0", mem->used == 0); - - /* plug hole forward */ - LWIP_ASSERT("plug_holes: mem->next <= MEM_SIZE_ALIGNED", mem->next <= MEM_SIZE_ALIGNED); - - nmem = (struct mem *)&ram[mem->next]; - if (mem != nmem && nmem->used == 0 && (u8_t *)nmem != (u8_t *)ram_end) { - /* if mem->next is unused and not end of ram, combine mem and mem->next */ - if (lfree == nmem) { - lfree = mem; - } - mem->next = nmem->next; - ((struct mem *)&ram[nmem->next])->prev = (u8_t *)mem - ram; - } - - /* plug hole backward */ - pmem = (struct mem *)&ram[mem->prev]; - if (pmem != mem && pmem->used == 0) { - /* if mem->prev is unused, combine mem and mem->prev */ - if (lfree == mem) { - lfree = pmem; - } - pmem->next = mem->next; - ((struct mem *)&ram[mem->next])->prev = (u8_t *)pmem - ram; - } -} - -/** - * Zero the heap and initialize start, end and lowest-free - */ -void -mem_init(void) -{ - struct mem *mem; - - LWIP_ASSERT("Sanity check alignment", - (SIZEOF_STRUCT_MEM & (MEM_ALIGNMENT-1)) == 0); - - /* align the heap */ - ram = LWIP_MEM_ALIGN(ram_heap); - /* initialize the start of the heap */ - mem = (struct mem *)ram; - mem->next = MEM_SIZE_ALIGNED; - mem->prev = 0; - mem->used = 0; - /* initialize the end of the heap */ - ram_end = (struct mem *)&ram[MEM_SIZE_ALIGNED]; - ram_end->used = 1; - ram_end->next = MEM_SIZE_ALIGNED; - ram_end->prev = MEM_SIZE_ALIGNED; - - mem_sem = sys_sem_new(1); - - /* initialize the lowest-free pointer to the start of the heap */ - lfree = (struct mem *)ram; - - MEM_STATS_AVAIL(avail, MEM_SIZE_ALIGNED); -} - -/** - * Put a struct mem back on the heap - * - * @param rmem is the data portion of a struct mem as returned by a previous - * call to mem_malloc() - */ -void -mem_free(void *rmem) -{ - struct mem *mem; - LWIP_MEM_FREE_DECL_PROTECT(); - - if (rmem == NULL) { - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("mem_free(p == NULL) was called.\n")); - return; - } - LWIP_ASSERT("mem_free: sanity check alignment", (((mem_ptr_t)rmem) & (MEM_ALIGNMENT-1)) == 0); - - LWIP_ASSERT("mem_free: legal memory", (u8_t *)rmem >= (u8_t *)ram && - (u8_t *)rmem < (u8_t *)ram_end); - - if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) { - SYS_ARCH_DECL_PROTECT(lev); - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_free: illegal memory\n")); - /* protect mem stats from concurrent access */ - SYS_ARCH_PROTECT(lev); - MEM_STATS_INC(illegal); - SYS_ARCH_UNPROTECT(lev); - return; - } - /* protect the heap from concurrent access */ - LWIP_MEM_FREE_PROTECT(); - /* Get the corresponding struct mem ... */ - mem = (struct mem *)((u8_t *)rmem - SIZEOF_STRUCT_MEM); - /* ... which has to be in a used state ... */ - LWIP_ASSERT("mem_free: mem->used", mem->used); - /* ... and is now unused. */ - mem->used = 0; - - if (mem < lfree) { - /* the newly freed struct is now the lowest */ - lfree = mem; - } - - MEM_STATS_DEC_USED(used, mem->next - ((u8_t *)mem - ram)); - - /* finally, see if prev or next are free also */ - plug_holes(mem); -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - mem_free_count = 1; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_MEM_FREE_UNPROTECT(); -} - -/** - * In contrast to its name, mem_realloc can only shrink memory, not expand it. - * Since the only use (for now) is in pbuf_realloc (which also can only shrink), - * this shouldn't be a problem! - * - * @param rmem pointer to memory allocated by mem_malloc the is to be shrinked - * @param newsize required size after shrinking (needs to be smaller than or - * equal to the previous size) - * @return for compatibility reasons: is always == rmem, at the moment - * or NULL if newsize is > old size, in which case rmem is NOT touched - * or freed! - */ -void * -mem_realloc(void *rmem, mem_size_t newsize) -{ - mem_size_t size; - mem_size_t ptr, ptr2; - struct mem *mem, *mem2; - /* use the FREE_PROTECT here: it protects with sem OR SYS_ARCH_PROTECT */ - LWIP_MEM_FREE_DECL_PROTECT(); - - /* Expand the size of the allocated memory region so that we can - adjust for alignment. */ - newsize = LWIP_MEM_ALIGN_SIZE(newsize); - - if(newsize < MIN_SIZE_ALIGNED) { - /* every data block must be at least MIN_SIZE_ALIGNED long */ - newsize = MIN_SIZE_ALIGNED; - } - - if (newsize > MEM_SIZE_ALIGNED) { - return NULL; - } - - LWIP_ASSERT("mem_realloc: legal memory", (u8_t *)rmem >= (u8_t *)ram && - (u8_t *)rmem < (u8_t *)ram_end); - - if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) { - SYS_ARCH_DECL_PROTECT(lev); - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SEVERE, ("mem_realloc: illegal memory\n")); - /* protect mem stats from concurrent access */ - SYS_ARCH_PROTECT(lev); - MEM_STATS_INC(illegal); - SYS_ARCH_UNPROTECT(lev); - return rmem; - } - /* Get the corresponding struct mem ... */ - mem = (struct mem *)((u8_t *)rmem - SIZEOF_STRUCT_MEM); - /* ... and its offset pointer */ - ptr = (u8_t *)mem - ram; - - size = mem->next - ptr - SIZEOF_STRUCT_MEM; - LWIP_ASSERT("mem_realloc can only shrink memory", newsize <= size); - if (newsize > size) { - /* not supported */ - return NULL; - } - if (newsize == size) { - /* No change in size, simply return */ - return rmem; - } - - /* protect the heap from concurrent access */ - LWIP_MEM_FREE_PROTECT(); - - MEM_STATS_DEC_USED(used, (size - newsize)); - - mem2 = (struct mem *)&ram[mem->next]; - if(mem2->used == 0) { - /* The next struct is unused, we can simply move it at little */ - mem_size_t next; - /* remember the old next pointer */ - next = mem2->next; - /* create new struct mem which is moved directly after the shrinked mem */ - ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize; - if (lfree == mem2) { - lfree = (struct mem *)&ram[ptr2]; - } - mem2 = (struct mem *)&ram[ptr2]; - mem2->used = 0; - /* restore the next pointer */ - mem2->next = next; - /* link it back to mem */ - mem2->prev = ptr; - /* link mem to it */ - mem->next = ptr2; - /* last thing to restore linked list: as we have moved mem2, - * let 'mem2->next->prev' point to mem2 again. but only if mem2->next is not - * the end of the heap */ - if (mem2->next != MEM_SIZE_ALIGNED) { - ((struct mem *)&ram[mem2->next])->prev = ptr2; - } - /* no need to plug holes, we've already done that */ - } else if (newsize + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED <= size) { - /* Next struct is used but there's room for another struct mem with - * at least MIN_SIZE_ALIGNED of data. - * Old size ('size') must be big enough to contain at least 'newsize' plus a struct mem - * ('SIZEOF_STRUCT_MEM') with some data ('MIN_SIZE_ALIGNED'). - * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty - * region that couldn't hold data, but when mem->next gets freed, - * the 2 regions would be combined, resulting in more free memory */ - ptr2 = ptr + SIZEOF_STRUCT_MEM + newsize; - mem2 = (struct mem *)&ram[ptr2]; - if (mem2 < lfree) { - lfree = mem2; - } - mem2->used = 0; - mem2->next = mem->next; - mem2->prev = ptr; - mem->next = ptr2; - if (mem2->next != MEM_SIZE_ALIGNED) { - ((struct mem *)&ram[mem2->next])->prev = ptr2; - } - /* the original mem->next is used, so no need to plug holes! */ - } - /* else { - next struct mem is used but size between mem and mem2 is not big enough - to create another struct mem - -> don't do anyhting. - -> the remaining space stays unused since it is too small - } */ -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - mem_free_count = 1; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_MEM_FREE_UNPROTECT(); - return rmem; -} - -/** - * Adam's mem_malloc() plus solution for bug #17922 - * Allocate a block of memory with a minimum of 'size' bytes. - * - * @param size is the minimum size of the requested block in bytes. - * @return pointer to allocated memory or NULL if no free memory was found. - * - * Note that the returned value will always be aligned (as defined by MEM_ALIGNMENT). - */ -void * -mem_malloc(mem_size_t size) -{ - mem_size_t ptr, ptr2; - struct mem *mem, *mem2; -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - u8_t local_mem_free_count = 0; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_MEM_ALLOC_DECL_PROTECT(); - - if (size == 0) { - return NULL; - } - - /* Expand the size of the allocated memory region so that we can - adjust for alignment. */ - size = LWIP_MEM_ALIGN_SIZE(size); - - if(size < MIN_SIZE_ALIGNED) { - /* every data block must be at least MIN_SIZE_ALIGNED long */ - size = MIN_SIZE_ALIGNED; - } - - if (size > MEM_SIZE_ALIGNED) { - return NULL; - } - - /* protect the heap from concurrent access */ - sys_arch_sem_wait(mem_sem, 0); - LWIP_MEM_ALLOC_PROTECT(); -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - /* run as long as a mem_free disturbed mem_malloc */ - do { - local_mem_free_count = 0; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - - /* Scan through the heap searching for a free block that is big enough, - * beginning with the lowest free block. - */ - for (ptr = (u8_t *)lfree - ram; ptr < MEM_SIZE_ALIGNED - size; - ptr = ((struct mem *)&ram[ptr])->next) { - mem = (struct mem *)&ram[ptr]; -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - mem_free_count = 0; - LWIP_MEM_ALLOC_UNPROTECT(); - /* allow mem_free to run */ - LWIP_MEM_ALLOC_PROTECT(); - if (mem_free_count != 0) { - local_mem_free_count = mem_free_count; - } - mem_free_count = 0; -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - - if ((!mem->used) && - (mem->next - (ptr + SIZEOF_STRUCT_MEM)) >= size) { - /* mem is not used and at least perfect fit is possible: - * mem->next - (ptr + SIZEOF_STRUCT_MEM) gives us the 'user data size' of mem */ - - if (mem->next - (ptr + SIZEOF_STRUCT_MEM) >= (size + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED)) { - /* (in addition to the above, we test if another struct mem (SIZEOF_STRUCT_MEM) containing - * at least MIN_SIZE_ALIGNED of data also fits in the 'user data space' of 'mem') - * -> split large block, create empty remainder, - * remainder must be large enough to contain MIN_SIZE_ALIGNED data: if - * mem->next - (ptr + (2*SIZEOF_STRUCT_MEM)) == size, - * struct mem would fit in but no data between mem2 and mem2->next - * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty - * region that couldn't hold data, but when mem->next gets freed, - * the 2 regions would be combined, resulting in more free memory - */ - ptr2 = ptr + SIZEOF_STRUCT_MEM + size; - /* create mem2 struct */ - mem2 = (struct mem *)&ram[ptr2]; - mem2->used = 0; - mem2->next = mem->next; - mem2->prev = ptr; - /* and insert it between mem and mem->next */ - mem->next = ptr2; - mem->used = 1; - - if (mem2->next != MEM_SIZE_ALIGNED) { - ((struct mem *)&ram[mem2->next])->prev = ptr2; - } - MEM_STATS_INC_USED(used, (size + SIZEOF_STRUCT_MEM)); - } else { - /* (a mem2 struct does no fit into the user data space of mem and mem->next will always - * be used at this point: if not we have 2 unused structs in a row, plug_holes should have - * take care of this). - * -> near fit or excact fit: do not split, no mem2 creation - * also can't move mem->next directly behind mem, since mem->next - * will always be used at this point! - */ - mem->used = 1; - MEM_STATS_INC_USED(used, mem->next - ((u8_t *)mem - ram)); - } - - if (mem == lfree) { - /* Find next free block after mem and update lowest free pointer */ - while (lfree->used && lfree != ram_end) { - LWIP_MEM_ALLOC_UNPROTECT(); - /* prevent high interrupt latency... */ - LWIP_MEM_ALLOC_PROTECT(); - lfree = (struct mem *)&ram[lfree->next]; - } - LWIP_ASSERT("mem_malloc: !lfree->used", ((lfree == ram_end) || (!lfree->used))); - } - LWIP_MEM_ALLOC_UNPROTECT(); - sys_sem_signal(mem_sem); - LWIP_ASSERT("mem_malloc: allocated memory not above ram_end.", - (mem_ptr_t)mem + SIZEOF_STRUCT_MEM + size <= (mem_ptr_t)ram_end); - LWIP_ASSERT("mem_malloc: allocated memory properly aligned.", - ((mem_ptr_t)mem + SIZEOF_STRUCT_MEM) % MEM_ALIGNMENT == 0); - LWIP_ASSERT("mem_malloc: sanity check alignment", - (((mem_ptr_t)mem) & (MEM_ALIGNMENT-1)) == 0); - - return (u8_t *)mem + SIZEOF_STRUCT_MEM; - } - } -#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT - /* if we got interrupted by a mem_free, try again */ - } while(local_mem_free_count != 0); -#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */ - LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("mem_malloc: could not allocate %"S16_F" bytes\n", (s16_t)size)); - MEM_STATS_INC(err); - LWIP_MEM_ALLOC_UNPROTECT(); - sys_sem_signal(mem_sem); - return NULL; -} - -#endif /* MEM_USE_POOLS */ -/** - * Contiguously allocates enough space for count objects that are size bytes - * of memory each and returns a pointer to the allocated memory. - * - * The allocated memory is filled with bytes of value zero. - * - * @param count number of objects to allocate - * @param size size of the objects to allocate - * @return pointer to allocated memory / NULL pointer if there is an error - */ -void *mem_calloc(mem_size_t count, mem_size_t size) -{ - void *p; - - /* allocate 'count' objects of size 'size' */ - p = mem_malloc(count * size); - if (p) { - /* zero the memory */ - memset(p, 0, count * size); - } - return p; -} - -#endif /* !MEM_LIBC_MALLOC */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/memp.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/memp.c deleted file mode 100644 index bd2fd26a87a..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/memp.c +++ /dev/null @@ -1,388 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Dynamic pool memory manager - * - * lwIP has dedicated pools for many structures (netconn, protocol control blocks, - * packet buffers, ...). All these pools are managed here. - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/memp.h" -#include "lwip/pbuf.h" -#include "lwip/udp.h" -#include "lwip/raw.h" -#include "lwip/tcp.h" -#include "lwip/igmp.h" -#include "lwip/api.h" -#include "lwip/api_msg.h" -#include "lwip/tcpip.h" -#include "lwip/sys.h" -#include "lwip/stats.h" -#include "netif/etharp.h" -#include "lwip/ip_frag.h" - -#include - -#if !MEMP_MEM_MALLOC /* don't build if not configured for use in lwipopts.h */ - -struct memp { - struct memp *next; -#if MEMP_OVERFLOW_CHECK - const char *file; - int line; -#endif /* MEMP_OVERFLOW_CHECK */ -}; - -#if MEMP_OVERFLOW_CHECK -/* if MEMP_OVERFLOW_CHECK is turned on, we reserve some bytes at the beginning - * and at the end of each element, initialize them as 0xcd and check - * them later. */ -/* If MEMP_OVERFLOW_CHECK is >= 2, on every call to memp_malloc or memp_free, - * every single element in each pool is checked! - * This is VERY SLOW but also very helpful. */ -/* MEMP_SANITY_REGION_BEFORE and MEMP_SANITY_REGION_AFTER can be overridden in - * lwipopts.h to change the amount reserved for checking. */ -#ifndef MEMP_SANITY_REGION_BEFORE -#define MEMP_SANITY_REGION_BEFORE 16 -#endif /* MEMP_SANITY_REGION_BEFORE*/ -#if MEMP_SANITY_REGION_BEFORE > 0 -#define MEMP_SANITY_REGION_BEFORE_ALIGNED LWIP_MEM_ALIGN_SIZE(MEMP_SANITY_REGION_BEFORE) -#else -#define MEMP_SANITY_REGION_BEFORE_ALIGNED 0 -#endif /* MEMP_SANITY_REGION_BEFORE*/ -#ifndef MEMP_SANITY_REGION_AFTER -#define MEMP_SANITY_REGION_AFTER 16 -#endif /* MEMP_SANITY_REGION_AFTER*/ -#if MEMP_SANITY_REGION_AFTER > 0 -#define MEMP_SANITY_REGION_AFTER_ALIGNED LWIP_MEM_ALIGN_SIZE(MEMP_SANITY_REGION_AFTER) -#else -#define MEMP_SANITY_REGION_AFTER_ALIGNED 0 -#endif /* MEMP_SANITY_REGION_AFTER*/ - -/* MEMP_SIZE: save space for struct memp and for sanity check */ -#define MEMP_SIZE (LWIP_MEM_ALIGN_SIZE(sizeof(struct memp)) + MEMP_SANITY_REGION_BEFORE_ALIGNED) -#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x) + MEMP_SANITY_REGION_AFTER_ALIGNED) - -#else /* MEMP_OVERFLOW_CHECK */ - -/* No sanity checks - * We don't need to preserve the struct memp while not allocated, so we - * can save a little space and set MEMP_SIZE to 0. - */ -#define MEMP_SIZE 0 -#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x)) - -#endif /* MEMP_OVERFLOW_CHECK */ - -/** This array holds the first free element of each pool. - * Elements form a linked list. */ -static struct memp *memp_tab[MEMP_MAX]; - -#else /* MEMP_MEM_MALLOC */ - -#define MEMP_ALIGN_SIZE(x) (LWIP_MEM_ALIGN_SIZE(x)) - -#endif /* MEMP_MEM_MALLOC */ - -/** This array holds the element sizes of each pool. */ -#if !MEM_USE_POOLS && !MEMP_MEM_MALLOC -static -#endif -const u16_t memp_sizes[MEMP_MAX] = { -#define LWIP_MEMPOOL(name,num,size,desc) LWIP_MEM_ALIGN_SIZE(size), -#include "lwip/memp_std.h" -}; - -#if !MEMP_MEM_MALLOC /* don't build if not configured for use in lwipopts.h */ - -/** This array holds the number of elements in each pool. */ -static const u16_t memp_num[MEMP_MAX] = { -#define LWIP_MEMPOOL(name,num,size,desc) (num), -#include "lwip/memp_std.h" -}; - -/** This array holds a textual description of each pool. */ -#ifdef LWIP_DEBUG -static const char *memp_desc[MEMP_MAX] = { -#define LWIP_MEMPOOL(name,num,size,desc) (desc), -#include "lwip/memp_std.h" -}; -#endif /* LWIP_DEBUG */ - -/** This is the actual memory used by the pools. */ -static u8_t memp_memory[MEM_ALIGNMENT - 1 -#define LWIP_MEMPOOL(name,num,size,desc) + ( (num) * (MEMP_SIZE + MEMP_ALIGN_SIZE(size) ) ) -#include "lwip/memp_std.h" -]; - -#if MEMP_SANITY_CHECK -/** - * Check that memp-lists don't form a circle - */ -static int -memp_sanity(void) -{ - s16_t i, c; - struct memp *m, *n; - - for (i = 0; i < MEMP_MAX; i++) { - for (m = memp_tab[i]; m != NULL; m = m->next) { - c = 1; - for (n = memp_tab[i]; n != NULL; n = n->next) { - if (n == m && --c < 0) { - return 0; - } - } - } - } - return 1; -} -#endif /* MEMP_SANITY_CHECK*/ -#if MEMP_OVERFLOW_CHECK -/** - * Check if a memp element was victim of an overflow - * (e.g. the restricted area after it has been altered) - * - * @param p the memp element to check - * @param memp_size the element size of the pool p comes from - */ -static void -memp_overflow_check_element(struct memp *p, u16_t memp_size) -{ - u16_t k; - u8_t *m; -#if MEMP_SANITY_REGION_BEFORE_ALIGNED > 0 - m = (u8_t*)p + MEMP_SIZE - MEMP_SANITY_REGION_BEFORE_ALIGNED; - for (k = 0; k < MEMP_SANITY_REGION_BEFORE_ALIGNED; k++) { - if (m[k] != 0xcd) { - LWIP_ASSERT("detected memp underflow!", 0); - } - } -#endif -#if MEMP_SANITY_REGION_AFTER_ALIGNED > 0 - m = (u8_t*)p + MEMP_SIZE + memp_size; - for (k = 0; k < MEMP_SANITY_REGION_AFTER_ALIGNED; k++) { - if (m[k] != 0xcd) { - LWIP_ASSERT("detected memp overflow!", 0); - } - } -#endif -} - -/** - * Do an overflow check for all elements in every pool. - * - * @see memp_overflow_check_element for a description of the check - */ -static void -memp_overflow_check_all(void) -{ - u16_t i, j; - struct memp *p; - - p = LWIP_MEM_ALIGN(memp_memory); - for (i = 0; i < MEMP_MAX; ++i) { - p = p; - for (j = 0; j < memp_num[i]; ++j) { - memp_overflow_check_element(p, memp_sizes[i]); - p = (struct memp*)((u8_t*)p + MEMP_SIZE + memp_sizes[i] + MEMP_SANITY_REGION_AFTER_ALIGNED); - } - } -} - -/** - * Initialize the restricted areas of all memp elements in every pool. - */ -static void -memp_overflow_init(void) -{ - u16_t i, j; - struct memp *p; - u8_t *m; - - p = LWIP_MEM_ALIGN(memp_memory); - for (i = 0; i < MEMP_MAX; ++i) { - p = p; - for (j = 0; j < memp_num[i]; ++j) { -#if MEMP_SANITY_REGION_BEFORE_ALIGNED > 0 - m = (u8_t*)p + MEMP_SIZE - MEMP_SANITY_REGION_BEFORE_ALIGNED; - memset(m, 0xcd, MEMP_SANITY_REGION_BEFORE_ALIGNED); -#endif -#if MEMP_SANITY_REGION_AFTER_ALIGNED > 0 - m = (u8_t*)p + MEMP_SIZE + memp_sizes[i]; - memset(m, 0xcd, MEMP_SANITY_REGION_AFTER_ALIGNED); -#endif - p = (struct memp*)((u8_t*)p + MEMP_SIZE + memp_sizes[i] + MEMP_SANITY_REGION_AFTER_ALIGNED); - } - } -} -#endif /* MEMP_OVERFLOW_CHECK */ - -/** - * Initialize this module. - * - * Carves out memp_memory into linked lists for each pool-type. - */ -void -memp_init(void) -{ - struct memp *memp; - u16_t i, j; - - for (i = 0; i < MEMP_MAX; ++i) { - MEMP_STATS_AVAIL(used, i, 0); - MEMP_STATS_AVAIL(max, i, 0); - MEMP_STATS_AVAIL(err, i, 0); - MEMP_STATS_AVAIL(avail, i, memp_num[i]); - } - - memp = LWIP_MEM_ALIGN(memp_memory); - /* for every pool: */ - for (i = 0; i < MEMP_MAX; ++i) { - memp_tab[i] = NULL; - /* create a linked list of memp elements */ - for (j = 0; j < memp_num[i]; ++j) { - memp->next = memp_tab[i]; - memp_tab[i] = memp; - memp = (struct memp *)((u8_t *)memp + MEMP_SIZE + memp_sizes[i] -#if MEMP_OVERFLOW_CHECK - + MEMP_SANITY_REGION_AFTER_ALIGNED -#endif - ); - } - } -#if MEMP_OVERFLOW_CHECK - memp_overflow_init(); - /* check everything a first time to see if it worked */ - memp_overflow_check_all(); -#endif /* MEMP_OVERFLOW_CHECK */ -} - -/** - * Get an element from a specific pool. - * - * @param type the pool to get an element from - * - * the debug version has two more parameters: - * @param file file name calling this function - * @param line number of line where this function is called - * - * @return a pointer to the allocated memory or a NULL pointer on error - */ -void * -#if !MEMP_OVERFLOW_CHECK -memp_malloc(memp_t type) -#else -memp_malloc_fn(memp_t type, const char* file, const int line) -#endif -{ - struct memp *memp; - SYS_ARCH_DECL_PROTECT(old_level); - - LWIP_ERROR("memp_malloc: type < MEMP_MAX", (type < MEMP_MAX), return NULL;); - - SYS_ARCH_PROTECT(old_level); -#if MEMP_OVERFLOW_CHECK >= 2 - memp_overflow_check_all(); -#endif /* MEMP_OVERFLOW_CHECK >= 2 */ - - memp = memp_tab[type]; - - if (memp != NULL) { - memp_tab[type] = memp->next; -#if MEMP_OVERFLOW_CHECK - memp->next = NULL; - memp->file = file; - memp->line = line; -#endif /* MEMP_OVERFLOW_CHECK */ - MEMP_STATS_INC_USED(used, type); - LWIP_ASSERT("memp_malloc: memp properly aligned", - ((mem_ptr_t)memp % MEM_ALIGNMENT) == 0); - memp = (struct memp*)((u8_t*)memp + MEMP_SIZE); - } else { - LWIP_DEBUGF(MEMP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("memp_malloc: out of memory in pool %s\n", memp_desc[type])); - MEMP_STATS_INC(err, type); - } - - SYS_ARCH_UNPROTECT(old_level); - - return memp; -} - -/** - * Put an element back into its pool. - * - * @param type the pool where to put mem - * @param mem the memp element to free - */ -void -memp_free(memp_t type, void *mem) -{ - struct memp *memp; - SYS_ARCH_DECL_PROTECT(old_level); - - if (mem == NULL) { - return; - } - LWIP_ASSERT("memp_free: mem properly aligned", - ((mem_ptr_t)mem % MEM_ALIGNMENT) == 0); - - memp = (struct memp *)((u8_t*)mem - MEMP_SIZE); - - SYS_ARCH_PROTECT(old_level); -#if MEMP_OVERFLOW_CHECK -#if MEMP_OVERFLOW_CHECK >= 2 - memp_overflow_check_all(); -#else - memp_overflow_check_element(memp, memp_sizes[type]); -#endif /* MEMP_OVERFLOW_CHECK >= 2 */ -#endif /* MEMP_OVERFLOW_CHECK */ - - MEMP_STATS_DEC(used, type); - - memp->next = memp_tab[type]; - memp_tab[type] = memp; - -#if MEMP_SANITY_CHECK - LWIP_ASSERT("memp sanity", memp_sanity()); -#endif /* MEMP_SANITY_CHECK */ - - SYS_ARCH_UNPROTECT(old_level); -} - -#endif /* MEMP_MEM_MALLOC */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/netif.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/netif.c deleted file mode 100644 index cf3815c4966..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/netif.c +++ /dev/null @@ -1,683 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * lwIP network interface abstraction - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/def.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/tcp.h" -#include "lwip/snmp.h" -#include "lwip/igmp.h" -#include "netif/etharp.h" -#if ENABLE_LOOPBACK -#include "lwip/sys.h" -#if LWIP_NETIF_LOOPBACK_MULTITHREADING -#include "lwip/tcpip.h" -#endif /* LWIP_NETIF_LOOPBACK_MULTITHREADING */ -#endif /* ENABLE_LOOPBACK */ - -#if LWIP_AUTOIP -#include "lwip/autoip.h" -#endif /* LWIP_AUTOIP */ -#if LWIP_DHCP -#include "lwip/dhcp.h" -#endif /* LWIP_DHCP */ - -#if LWIP_NETIF_STATUS_CALLBACK -#define NETIF_STATUS_CALLBACK(n) { if (n->status_callback) (n->status_callback)(n); } -#else -#define NETIF_STATUS_CALLBACK(n) { /* NOP */ } -#endif /* LWIP_NETIF_STATUS_CALLBACK */ - -#if LWIP_NETIF_LINK_CALLBACK -#define NETIF_LINK_CALLBACK(n) { if (n->link_callback) (n->link_callback)(n); } -#else -#define NETIF_LINK_CALLBACK(n) { /* NOP */ } -#endif /* LWIP_NETIF_LINK_CALLBACK */ - -struct netif *netif_list; -struct netif *netif_default; - -/** - * Add a network interface to the list of lwIP netifs. - * - * @param netif a pre-allocated netif structure - * @param ipaddr IP address for the new netif - * @param netmask network mask for the new netif - * @param gw default gateway IP address for the new netif - * @param state opaque data passed to the new netif - * @param init callback function that initializes the interface - * @param input callback function that is called to pass - * ingress packets up in the protocol layer stack. - * - * @return netif, or NULL if failed. - */ -struct netif * -netif_add(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask, - struct ip_addr *gw, - void *state, - err_t (* init)(struct netif *netif), - err_t (* input)(struct pbuf *p, struct netif *netif)) -{ - static u8_t netifnum = 0; - - /* reset new interface configuration state */ - netif->ip_addr.addr = 0; - netif->netmask.addr = 0; - netif->gw.addr = 0; - netif->flags = 0; -#if LWIP_DHCP - /* netif not under DHCP control by default */ - netif->dhcp = NULL; -#endif /* LWIP_DHCP */ -#if LWIP_AUTOIP - /* netif not under AutoIP control by default */ - netif->autoip = NULL; -#endif /* LWIP_AUTOIP */ -#if LWIP_NETIF_STATUS_CALLBACK - netif->status_callback = NULL; -#endif /* LWIP_NETIF_STATUS_CALLBACK */ -#if LWIP_NETIF_LINK_CALLBACK - netif->link_callback = NULL; -#endif /* LWIP_NETIF_LINK_CALLBACK */ -#if LWIP_IGMP - netif->igmp_mac_filter = NULL; -#endif /* LWIP_IGMP */ -#if ENABLE_LOOPBACK - netif->loop_first = NULL; - netif->loop_last = NULL; -#endif /* ENABLE_LOOPBACK */ - - /* remember netif specific state information data */ - netif->state = state; - netif->num = netifnum++; - netif->input = input; -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = NULL; -#endif /* LWIP_NETIF_HWADDRHINT*/ -#if ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS - netif->loop_cnt_current = 0; -#endif /* ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS */ - - netif_set_addr(netif, ipaddr, netmask, gw); - - /* call user specified initialization function for netif */ - if (init(netif) != ERR_OK) { - return NULL; - } - - /* add this netif to the list */ - netif->next = netif_list; - netif_list = netif; - snmp_inc_iflist(); - -#if LWIP_IGMP - /* start IGMP processing */ - if (netif->flags & NETIF_FLAG_IGMP) { - igmp_start( netif); - } -#endif /* LWIP_IGMP */ - - LWIP_DEBUGF(NETIF_DEBUG, ("netif: added interface %c%c IP addr ", - netif->name[0], netif->name[1])); - ip_addr_debug_print(NETIF_DEBUG, ipaddr); - LWIP_DEBUGF(NETIF_DEBUG, (" netmask ")); - ip_addr_debug_print(NETIF_DEBUG, netmask); - LWIP_DEBUGF(NETIF_DEBUG, (" gw ")); - ip_addr_debug_print(NETIF_DEBUG, gw); - LWIP_DEBUGF(NETIF_DEBUG, ("\n")); - return netif; -} - -/** - * Change IP address configuration for a network interface (including netmask - * and default gateway). - * - * @param netif the network interface to change - * @param ipaddr the new IP address - * @param netmask the new netmask - * @param gw the new default gateway - */ -void -netif_set_addr(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask, - struct ip_addr *gw) -{ - netif_set_ipaddr(netif, ipaddr); - netif_set_netmask(netif, netmask); - netif_set_gw(netif, gw); -} - -/** - * Remove a network interface from the list of lwIP netifs. - * - * @param netif the network interface to remove - */ -void netif_remove(struct netif * netif) -{ - if ( netif == NULL ) return; - -#if LWIP_IGMP - /* stop IGMP processing */ - if (netif->flags & NETIF_FLAG_IGMP) { - igmp_stop( netif); - } -#endif /* LWIP_IGMP */ - - snmp_delete_ipaddridx_tree(netif); - - /* is it the first netif? */ - if (netif_list == netif) { - netif_list = netif->next; - snmp_dec_iflist(); - } - else { - /* look for netif further down the list */ - struct netif * tmpNetif; - for (tmpNetif = netif_list; tmpNetif != NULL; tmpNetif = tmpNetif->next) { - if (tmpNetif->next == netif) { - tmpNetif->next = netif->next; - snmp_dec_iflist(); - break; - } - } - if (tmpNetif == NULL) - return; /* we didn't find any netif today */ - } - /* this netif is default? */ - if (netif_default == netif) - /* reset default netif */ - netif_set_default(NULL); - LWIP_DEBUGF( NETIF_DEBUG, ("netif_remove: removed netif\n") ); -} - -/** - * Find a network interface by searching for its name - * - * @param name the name of the netif (like netif->name) plus concatenated number - * in ascii representation (e.g. 'en0') - */ -struct netif * -netif_find(char *name) -{ - struct netif *netif; - u8_t num; - - if (name == NULL) { - return NULL; - } - - num = name[2] - '0'; - - for(netif = netif_list; netif != NULL; netif = netif->next) { - if (num == netif->num && - name[0] == netif->name[0] && - name[1] == netif->name[1]) { - LWIP_DEBUGF(NETIF_DEBUG, ("netif_find: found %c%c\n", name[0], name[1])); - return netif; - } - } - LWIP_DEBUGF(NETIF_DEBUG, ("netif_find: didn't find %c%c\n", name[0], name[1])); - return NULL; -} - -/** - * Change the IP address of a network interface - * - * @param netif the network interface to change - * @param ipaddr the new IP address - * - * @note call netif_set_addr() if you also want to change netmask and - * default gateway - */ -void -netif_set_ipaddr(struct netif *netif, struct ip_addr *ipaddr) -{ - /* TODO: Handling of obsolete pcbs */ - /* See: http://mail.gnu.org/archive/html/lwip-users/2003-03/msg00118.html */ -#if LWIP_TCP - struct tcp_pcb *pcb; - struct tcp_pcb_listen *lpcb; - - /* address is actually being changed? */ - if ((ip_addr_cmp(ipaddr, &(netif->ip_addr))) == 0) - { - /* extern struct tcp_pcb *tcp_active_pcbs; defined by tcp.h */ - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: netif address being changed\n")); - pcb = tcp_active_pcbs; - while (pcb != NULL) { - /* PCB bound to current local interface address? */ - if (ip_addr_cmp(&(pcb->local_ip), &(netif->ip_addr))) { - /* this connection must be aborted */ - struct tcp_pcb *next = pcb->next; - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_STATE, ("netif_set_ipaddr: aborting TCP pcb %p\n", (void *)pcb)); - tcp_abort(pcb); - pcb = next; - } else { - pcb = pcb->next; - } - } - for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - /* PCB bound to current local interface address? */ - if ((!(ip_addr_isany(&(lpcb->local_ip)))) && - (ip_addr_cmp(&(lpcb->local_ip), &(netif->ip_addr)))) { - /* The PCB is listening to the old ipaddr and - * is set to listen to the new one instead */ - ip_addr_set(&(lpcb->local_ip), ipaddr); - } - } - } -#endif - snmp_delete_ipaddridx_tree(netif); - snmp_delete_iprteidx_tree(0,netif); - /* set new IP address to netif */ - ip_addr_set(&(netif->ip_addr), ipaddr); - snmp_insert_ipaddridx_tree(netif); - snmp_insert_iprteidx_tree(0,netif); - - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: IP address of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - netif->name[0], netif->name[1], - ip4_addr1(&netif->ip_addr), - ip4_addr2(&netif->ip_addr), - ip4_addr3(&netif->ip_addr), - ip4_addr4(&netif->ip_addr))); -} - -/** - * Change the default gateway for a network interface - * - * @param netif the network interface to change - * @param gw the new default gateway - * - * @note call netif_set_addr() if you also want to change ip address and netmask - */ -void -netif_set_gw(struct netif *netif, struct ip_addr *gw) -{ - ip_addr_set(&(netif->gw), gw); - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: GW address of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - netif->name[0], netif->name[1], - ip4_addr1(&netif->gw), - ip4_addr2(&netif->gw), - ip4_addr3(&netif->gw), - ip4_addr4(&netif->gw))); -} - -/** - * Change the netmask of a network interface - * - * @param netif the network interface to change - * @param netmask the new netmask - * - * @note call netif_set_addr() if you also want to change ip address and - * default gateway - */ -void -netif_set_netmask(struct netif *netif, struct ip_addr *netmask) -{ - snmp_delete_iprteidx_tree(0, netif); - /* set new netmask to netif */ - ip_addr_set(&(netif->netmask), netmask); - snmp_insert_iprteidx_tree(0, netif); - LWIP_DEBUGF(NETIF_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("netif: netmask of interface %c%c set to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - netif->name[0], netif->name[1], - ip4_addr1(&netif->netmask), - ip4_addr2(&netif->netmask), - ip4_addr3(&netif->netmask), - ip4_addr4(&netif->netmask))); -} - -/** - * Set a network interface as the default network interface - * (used to output all packets for which no specific route is found) - * - * @param netif the default network interface - */ -void -netif_set_default(struct netif *netif) -{ - if (netif == NULL) - { - /* remove default route */ - snmp_delete_iprteidx_tree(1, netif); - } - else - { - /* install default route */ - snmp_insert_iprteidx_tree(1, netif); - } - netif_default = netif; - LWIP_DEBUGF(NETIF_DEBUG, ("netif: setting default interface %c%c\n", - netif ? netif->name[0] : '\'', netif ? netif->name[1] : '\'')); -} - -/** - * Bring an interface up, available for processing - * traffic. - * - * @note: Enabling DHCP on a down interface will make it come - * up once configured. - * - * @see dhcp_start() - */ -void netif_set_up(struct netif *netif) -{ - if ( !(netif->flags & NETIF_FLAG_UP )) { - netif->flags |= NETIF_FLAG_UP; - -#if LWIP_SNMP - snmp_get_sysuptime(&netif->ts); -#endif /* LWIP_SNMP */ - - NETIF_LINK_CALLBACK(netif); - NETIF_STATUS_CALLBACK(netif); - -#if LWIP_ARP - /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */ - if (netif->flags & NETIF_FLAG_ETHARP) { - etharp_gratuitous(netif); - } -#endif /* LWIP_ARP */ - -#if LWIP_IGMP - /* resend IGMP memberships */ - if (netif->flags & NETIF_FLAG_IGMP) { - igmp_report_groups( netif); - } -#endif /* LWIP_IGMP */ - } -} - -/** - * Bring an interface down, disabling any traffic processing. - * - * @note: Enabling DHCP on a down interface will make it come - * up once configured. - * - * @see dhcp_start() - */ -void netif_set_down(struct netif *netif) -{ - if ( netif->flags & NETIF_FLAG_UP ) - { - netif->flags &= ~NETIF_FLAG_UP; -#if LWIP_SNMP - snmp_get_sysuptime(&netif->ts); -#endif - - NETIF_LINK_CALLBACK(netif); - NETIF_STATUS_CALLBACK(netif); - } -} - -/** - * Ask if an interface is up - */ -u8_t netif_is_up(struct netif *netif) -{ - return (netif->flags & NETIF_FLAG_UP)?1:0; -} - -#if LWIP_NETIF_STATUS_CALLBACK -/** - * Set callback to be called when interface is brought up/down - */ -void netif_set_status_callback(struct netif *netif, void (* status_callback)(struct netif *netif )) -{ - if ( netif ) - netif->status_callback = status_callback; -} -#endif /* LWIP_NETIF_STATUS_CALLBACK */ - -#if LWIP_NETIF_LINK_CALLBACK -/** - * Called by a driver when its link goes up - */ -void netif_set_link_up(struct netif *netif ) -{ - netif->flags |= NETIF_FLAG_LINK_UP; - -#if LWIP_DHCP - if (netif->dhcp) { - dhcp_network_changed(netif); - } -#endif /* LWIP_DHCP */ - -#if LWIP_AUTOIP - if (netif->autoip) { - autoip_network_changed(netif); - } -#endif /* LWIP_AUTOIP */ - - if (netif->flags & NETIF_FLAG_UP) { -#if LWIP_ARP - /* For Ethernet network interfaces, we would like to send a "gratuitous ARP" */ - if (netif->flags & NETIF_FLAG_ETHARP) { - etharp_gratuitous(netif); - } -#endif /* LWIP_ARP */ - -#if LWIP_IGMP - /* resend IGMP memberships */ - if (netif->flags & NETIF_FLAG_IGMP) { - igmp_report_groups( netif); - } -#endif /* LWIP_IGMP */ - } - NETIF_LINK_CALLBACK(netif); -} - -/** - * Called by a driver when its link goes down - */ -void netif_set_link_down(struct netif *netif ) -{ - netif->flags &= ~NETIF_FLAG_LINK_UP; - NETIF_LINK_CALLBACK(netif); -} - -/** - * Ask if a link is up - */ -u8_t netif_is_link_up(struct netif *netif) -{ - return (netif->flags & NETIF_FLAG_LINK_UP) ? 1 : 0; -} - -/** - * Set callback to be called when link is brought up/down - */ -void netif_set_link_callback(struct netif *netif, void (* link_callback)(struct netif *netif )) -{ - if (netif) { - netif->link_callback = link_callback; - } -} -#endif /* LWIP_NETIF_LINK_CALLBACK */ - -#if ENABLE_LOOPBACK -/** - * Send an IP packet to be received on the same netif (loopif-like). - * The pbuf is simply copied and handed back to netif->input. - * In multithreaded mode, this is done directly since netif->input must put - * the packet on a queue. - * In callback mode, the packet is put on an internal queue and is fed to - * netif->input by netif_poll(). - * - * @param netif the lwip network interface structure - * @param p the (IP) packet to 'send' - * @param ipaddr the ip address to send the packet to (not used) - * @return ERR_OK if the packet has been sent - * ERR_MEM if the pbuf used to copy the packet couldn't be allocated - */ -err_t -netif_loop_output(struct netif *netif, struct pbuf *p, - struct ip_addr *ipaddr) -{ - struct pbuf *r; - err_t err; - struct pbuf *last; -#if LWIP_LOOPBACK_MAX_PBUFS - u8_t clen = 0; -#endif /* LWIP_LOOPBACK_MAX_PBUFS */ - SYS_ARCH_DECL_PROTECT(lev); - LWIP_UNUSED_ARG(ipaddr); - - /* Allocate a new pbuf */ - r = pbuf_alloc(PBUF_LINK, p->tot_len, PBUF_RAM); - if (r == NULL) { - return ERR_MEM; - } -#if LWIP_LOOPBACK_MAX_PBUFS - clen = pbuf_clen(r); - /* check for overflow or too many pbuf on queue */ - if(((netif->loop_cnt_current + clen) < netif->loop_cnt_current) || - ((netif->loop_cnt_current + clen) > LWIP_LOOPBACK_MAX_PBUFS)) { - pbuf_free(r); - r = NULL; - return ERR_MEM; - } - netif->loop_cnt_current += clen; -#endif /* LWIP_LOOPBACK_MAX_PBUFS */ - - /* Copy the whole pbuf queue p into the single pbuf r */ - if ((err = pbuf_copy(r, p)) != ERR_OK) { - pbuf_free(r); - r = NULL; - return err; - } - - /* Put the packet on a linked list which gets emptied through calling - netif_poll(). */ - - /* let last point to the last pbuf in chain r */ - for (last = r; last->next != NULL; last = last->next); - - SYS_ARCH_PROTECT(lev); - if(netif->loop_first != NULL) { - LWIP_ASSERT("if first != NULL, last must also be != NULL", netif->loop_last != NULL); - netif->loop_last->next = r; - netif->loop_last = last; - } else { - netif->loop_first = r; - netif->loop_last = last; - } - SYS_ARCH_UNPROTECT(lev); - -#if LWIP_NETIF_LOOPBACK_MULTITHREADING - /* For multithreading environment, schedule a call to netif_poll */ - tcpip_callback((void (*)(void *))(netif_poll), netif); -#endif /* LWIP_NETIF_LOOPBACK_MULTITHREADING */ - - return ERR_OK; -} - -/** - * Call netif_poll() in the main loop of your application. This is to prevent - * reentering non-reentrant functions like tcp_input(). Packets passed to - * netif_loop_output() are put on a list that is passed to netif->input() by - * netif_poll(). - */ -void -netif_poll(struct netif *netif) -{ - struct pbuf *in; - SYS_ARCH_DECL_PROTECT(lev); - - do { - /* Get a packet from the list. With SYS_LIGHTWEIGHT_PROT=1, this is protected */ - SYS_ARCH_PROTECT(lev); - in = netif->loop_first; - if(in != NULL) { - struct pbuf *in_end = in; -#if LWIP_LOOPBACK_MAX_PBUFS - u8_t clen = pbuf_clen(in); - /* adjust the number of pbufs on queue */ - LWIP_ASSERT("netif->loop_cnt_current underflow", - ((netif->loop_cnt_current - clen) < netif->loop_cnt_current)); - netif->loop_cnt_current -= clen; -#endif /* LWIP_LOOPBACK_MAX_PBUFS */ - while(in_end->len != in_end->tot_len) { - LWIP_ASSERT("bogus pbuf: len != tot_len but next == NULL!", in_end->next != NULL); - in_end = in_end->next; - } - /* 'in_end' now points to the last pbuf from 'in' */ - if(in_end == netif->loop_last) { - /* this was the last pbuf in the list */ - netif->loop_first = netif->loop_last = NULL; - } else { - /* pop the pbuf off the list */ - netif->loop_first = in_end->next; - LWIP_ASSERT("should not be null since first != last!", netif->loop_first != NULL); - } - /* De-queue the pbuf from its successors on the 'loop_' list. */ - in_end->next = NULL; - } - SYS_ARCH_UNPROTECT(lev); - - if(in != NULL) { - /* loopback packets are always IP packets! */ - if(ip_input(in, netif) != ERR_OK) { - pbuf_free(in); - } - /* Don't reference the packet any more! */ - in = NULL; - } - /* go on while there is a packet on the list */ - } while(netif->loop_first != NULL); -} - -#if !LWIP_NETIF_LOOPBACK_MULTITHREADING -/** - * Calls netif_poll() for every netif on the netif_list. - */ -void -netif_poll_all(void) -{ - struct netif *netif = netif_list; - /* loop through netifs */ - while (netif != NULL) { - netif_poll(netif); - /* proceed to next network interface */ - netif = netif->next; - } -} -#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */ -#endif /* ENABLE_LOOPBACK */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/pbuf.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/pbuf.c deleted file mode 100644 index 6284b9a3a8e..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/pbuf.c +++ /dev/null @@ -1,931 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Packet buffer management - * - * Packets are built from the pbuf data structure. It supports dynamic - * memory allocation for packet contents or can reference externally - * managed packet contents both in RAM and ROM. Quick allocation for - * incoming packets is provided through pools with fixed sized pbufs. - * - * A packet may span over multiple pbufs, chained as a singly linked - * list. This is called a "pbuf chain". - * - * Multiple packets may be queued, also using this singly linked list. - * This is called a "packet queue". - * - * So, a packet queue consists of one or more pbuf chains, each of - * which consist of one or more pbufs. CURRENTLY, PACKET QUEUES ARE - * NOT SUPPORTED!!! Use helper structs to queue multiple packets. - * - * The differences between a pbuf chain and a packet queue are very - * precise but subtle. - * - * The last pbuf of a packet has a ->tot_len field that equals the - * ->len field. It can be found by traversing the list. If the last - * pbuf of a packet has a ->next field other than NULL, more packets - * are on the queue. - * - * Therefore, looping through a pbuf of a single packet, has an - * loop end condition (tot_len == p->len), NOT (next == NULL). - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#include "lwip/stats.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/pbuf.h" -#include "lwip/sys.h" -#include "arch/perf.h" -#if TCP_QUEUE_OOSEQ -#include "lwip/tcp.h" -#endif - -#include - -#define SIZEOF_STRUCT_PBUF LWIP_MEM_ALIGN_SIZE(sizeof(struct pbuf)) -/* Since the pool is created in memp, PBUF_POOL_BUFSIZE will be automatically - aligned there. Therefore, PBUF_POOL_BUFSIZE_ALIGNED can be used here. */ -#define PBUF_POOL_BUFSIZE_ALIGNED LWIP_MEM_ALIGN_SIZE(PBUF_POOL_BUFSIZE) - -#if !TCP_QUEUE_OOSEQ || NO_SYS -#define PBUF_POOL_IS_EMPTY() -#else /* !TCP_QUEUE_OOSEQ || NO_SYS */ -/** Define this to 0 to prevent freeing ooseq pbufs when the PBUF_POOL is empty */ -#ifndef PBUF_POOL_FREE_OOSEQ -#define PBUF_POOL_FREE_OOSEQ 1 -#endif /* PBUF_POOL_FREE_OOSEQ */ - -#if PBUF_POOL_FREE_OOSEQ -#include "lwip/tcpip.h" -#define PBUF_POOL_IS_EMPTY() pbuf_pool_is_empty() -static u8_t pbuf_free_ooseq_queued; -/** - * Attempt to reclaim some memory from queued out-of-sequence TCP segments - * if we run out of pool pbufs. It's better to give priority to new packets - * if we're running out. - * - * This must be done in the correct thread context therefore this function - * can only be used with NO_SYS=0 and through tcpip_callback. - */ -static void -pbuf_free_ooseq(void* arg) -{ - struct tcp_pcb* pcb; - SYS_ARCH_DECL_PROTECT(old_level); - LWIP_UNUSED_ARG(arg); - - SYS_ARCH_PROTECT(old_level); - pbuf_free_ooseq_queued = 0; - SYS_ARCH_UNPROTECT(old_level); - - for (pcb = tcp_active_pcbs; NULL != pcb; pcb = pcb->next) { - if (NULL != pcb->ooseq) { - /** Free the ooseq pbufs of one PCB only */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free_ooseq: freeing out-of-sequence pbufs\n")); - tcp_segs_free(pcb->ooseq); - pcb->ooseq = NULL; - return; - } - } -} - -/** Queue a call to pbuf_free_ooseq if not already queued. */ -static void -pbuf_pool_is_empty(void) -{ - u8_t queued; - SYS_ARCH_DECL_PROTECT(old_level); - - SYS_ARCH_PROTECT(old_level); - queued = pbuf_free_ooseq_queued; - pbuf_free_ooseq_queued = 1; - SYS_ARCH_UNPROTECT(old_level); - - if(!queued) { - /* queue a call to pbuf_free_ooseq if not already queued */ - if(tcpip_callback_with_block(pbuf_free_ooseq, NULL, 0) != ERR_OK) { - SYS_ARCH_PROTECT(old_level); - pbuf_free_ooseq_queued = 0; - SYS_ARCH_UNPROTECT(old_level); - } - } -} -#endif /* PBUF_POOL_FREE_OOSEQ */ -#endif /* !TCP_QUEUE_OOSEQ || NO_SYS */ - -/** - * Allocates a pbuf of the given type (possibly a chain for PBUF_POOL type). - * - * The actual memory allocated for the pbuf is determined by the - * layer at which the pbuf is allocated and the requested size - * (from the size parameter). - * - * @param layer flag to define header size - * @param length size of the pbuf's payload - * @param type this parameter decides how and where the pbuf - * should be allocated as follows: - * - * - PBUF_RAM: buffer memory for pbuf is allocated as one large - * chunk. This includes protocol headers as well. - * - PBUF_ROM: no buffer memory is allocated for the pbuf, even for - * protocol headers. Additional headers must be prepended - * by allocating another pbuf and chain in to the front of - * the ROM pbuf. It is assumed that the memory used is really - * similar to ROM in that it is immutable and will not be - * changed. Memory which is dynamic should generally not - * be attached to PBUF_ROM pbufs. Use PBUF_REF instead. - * - PBUF_REF: no buffer memory is allocated for the pbuf, even for - * protocol headers. It is assumed that the pbuf is only - * being used in a single thread. If the pbuf gets queued, - * then pbuf_take should be called to copy the buffer. - * - PBUF_POOL: the pbuf is allocated as a pbuf chain, with pbufs from - * the pbuf pool that is allocated during pbuf_init(). - * - * @return the allocated pbuf. If multiple pbufs where allocated, this - * is the first pbuf of a pbuf chain. - */ -struct pbuf * -pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type) -{ - struct pbuf *p, *q, *r; - u16_t offset; - s32_t rem_len; /* remaining length */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F")\n", length)); - - /* determine header offset */ - offset = 0; - switch (layer) { - case PBUF_TRANSPORT: - /* add room for transport (often TCP) layer header */ - offset += PBUF_TRANSPORT_HLEN; - /* FALLTHROUGH */ - case PBUF_IP: - /* add room for IP layer header */ - offset += PBUF_IP_HLEN; - /* FALLTHROUGH */ - case PBUF_LINK: - /* add room for link layer header */ - offset += PBUF_LINK_HLEN; - break; - case PBUF_RAW: - break; - default: - LWIP_ASSERT("pbuf_alloc: bad pbuf layer", 0); - return NULL; - } - - switch (type) { - case PBUF_POOL: - /* allocate head of pbuf chain into p */ - p = memp_malloc(MEMP_PBUF_POOL); - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc: allocated pbuf %p\n", (void *)p)); - if (p == NULL) { - PBUF_POOL_IS_EMPTY(); - return NULL; - } - p->type = type; - p->next = NULL; - - /* make the payload pointer point 'offset' bytes into pbuf data memory */ - p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + (SIZEOF_STRUCT_PBUF + offset))); - LWIP_ASSERT("pbuf_alloc: pbuf p->payload properly aligned", - ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0); - /* the total length of the pbuf chain is the requested size */ - p->tot_len = length; - /* set the length of the first pbuf in the chain */ - p->len = LWIP_MIN(length, PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)); - LWIP_ASSERT("check p->payload + p->len does not overflow pbuf", - ((u8_t*)p->payload + p->len <= - (u8_t*)p + SIZEOF_STRUCT_PBUF + PBUF_POOL_BUFSIZE_ALIGNED)); - LWIP_ASSERT("PBUF_POOL_BUFSIZE must be bigger than MEM_ALIGNMENT", - (PBUF_POOL_BUFSIZE_ALIGNED - LWIP_MEM_ALIGN_SIZE(offset)) > 0 ); - /* set reference count (needed here in case we fail) */ - p->ref = 1; - - /* now allocate the tail of the pbuf chain */ - - /* remember first pbuf for linkage in next iteration */ - r = p; - /* remaining length to be allocated */ - rem_len = length - p->len; - /* any remaining pbufs to be allocated? */ - while (rem_len > 0) { - q = memp_malloc(MEMP_PBUF_POOL); - if (q == NULL) { - PBUF_POOL_IS_EMPTY(); - /* free chain so far allocated */ - pbuf_free(p); - /* bail out unsuccesfully */ - return NULL; - } - q->type = type; - q->flags = 0; - q->next = NULL; - /* make previous pbuf point to this pbuf */ - r->next = q; - /* set total length of this pbuf and next in chain */ - LWIP_ASSERT("rem_len < max_u16_t", rem_len < 0xffff); - q->tot_len = (u16_t)rem_len; - /* this pbuf length is pool size, unless smaller sized tail */ - q->len = LWIP_MIN((u16_t)rem_len, PBUF_POOL_BUFSIZE_ALIGNED); - q->payload = (void *)((u8_t *)q + SIZEOF_STRUCT_PBUF); - LWIP_ASSERT("pbuf_alloc: pbuf q->payload properly aligned", - ((mem_ptr_t)q->payload % MEM_ALIGNMENT) == 0); - LWIP_ASSERT("check p->payload + p->len does not overflow pbuf", - ((u8_t*)p->payload + p->len <= - (u8_t*)p + SIZEOF_STRUCT_PBUF + PBUF_POOL_BUFSIZE_ALIGNED)); - q->ref = 1; - /* calculate remaining length to be allocated */ - rem_len -= q->len; - /* remember this pbuf for linkage in next iteration */ - r = q; - } - /* end of chain */ - /*r->next = NULL;*/ - - break; - case PBUF_RAM: - /* If pbuf is to be allocated in RAM, allocate memory for it. */ - p = (struct pbuf*)mem_malloc(LWIP_MEM_ALIGN_SIZE(SIZEOF_STRUCT_PBUF + offset) + LWIP_MEM_ALIGN_SIZE(length)); - if (p == NULL) { - return NULL; - } - /* Set up internal structure of the pbuf. */ - p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + SIZEOF_STRUCT_PBUF + offset)); - p->len = p->tot_len = length; - p->next = NULL; - p->type = type; - - LWIP_ASSERT("pbuf_alloc: pbuf->payload properly aligned", - ((mem_ptr_t)p->payload % MEM_ALIGNMENT) == 0); - break; - /* pbuf references existing (non-volatile static constant) ROM payload? */ - case PBUF_ROM: - /* pbuf references existing (externally allocated) RAM payload? */ - case PBUF_REF: - /* only allocate memory for the pbuf structure */ - p = memp_malloc(MEMP_PBUF); - if (p == NULL) { - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("pbuf_alloc: Could not allocate MEMP_PBUF for PBUF_%s.\n", - (type == PBUF_ROM) ? "ROM" : "REF")); - return NULL; - } - /* caller must set this field properly, afterwards */ - p->payload = NULL; - p->len = p->tot_len = length; - p->next = NULL; - p->type = type; - break; - default: - LWIP_ASSERT("pbuf_alloc: erroneous type", 0); - return NULL; - } - /* set reference count */ - p->ref = 1; - /* set flags */ - p->flags = 0; - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_alloc(length=%"U16_F") == %p\n", length, (void *)p)); - return p; -} - - -/** - * Shrink a pbuf chain to a desired length. - * - * @param p pbuf to shrink. - * @param new_len desired new length of pbuf chain - * - * Depending on the desired length, the first few pbufs in a chain might - * be skipped and left unchanged. The new last pbuf in the chain will be - * resized, and any remaining pbufs will be freed. - * - * @note If the pbuf is ROM/REF, only the ->tot_len and ->len fields are adjusted. - * @note May not be called on a packet queue. - * - * @note Despite its name, pbuf_realloc cannot grow the size of a pbuf (chain). - */ -void -pbuf_realloc(struct pbuf *p, u16_t new_len) -{ - struct pbuf *q; - u16_t rem_len; /* remaining length */ - s32_t grow; - - LWIP_ASSERT("pbuf_realloc: p != NULL", p != NULL); - LWIP_ASSERT("pbuf_realloc: sane p->type", p->type == PBUF_POOL || - p->type == PBUF_ROM || - p->type == PBUF_RAM || - p->type == PBUF_REF); - - /* desired length larger than current length? */ - if (new_len >= p->tot_len) { - /* enlarging not yet supported */ - return; - } - - /* the pbuf chain grows by (new_len - p->tot_len) bytes - * (which may be negative in case of shrinking) */ - grow = new_len - p->tot_len; - - /* first, step over any pbufs that should remain in the chain */ - rem_len = new_len; - q = p; - /* should this pbuf be kept? */ - while (rem_len > q->len) { - /* decrease remaining length by pbuf length */ - rem_len -= q->len; - /* decrease total length indicator */ - LWIP_ASSERT("grow < max_u16_t", grow < 0xffff); - q->tot_len += (u16_t)grow; - /* proceed to next pbuf in chain */ - q = q->next; - LWIP_ASSERT("pbuf_realloc: q != NULL", q != NULL); - } - /* we have now reached the new last pbuf (in q) */ - /* rem_len == desired length for pbuf q */ - - /* shrink allocated memory for PBUF_RAM */ - /* (other types merely adjust their length fields */ - if ((q->type == PBUF_RAM) && (rem_len != q->len)) { - /* reallocate and adjust the length of the pbuf that will be split */ - q = mem_realloc(q, (u8_t *)q->payload - (u8_t *)q + rem_len); - LWIP_ASSERT("mem_realloc give q == NULL", q != NULL); - } - /* adjust length fields for new last pbuf */ - q->len = rem_len; - q->tot_len = q->len; - - /* any remaining pbufs in chain? */ - if (q->next != NULL) { - /* free remaining pbufs in chain */ - pbuf_free(q->next); - } - /* q is last packet in chain */ - q->next = NULL; - -} - -/** - * Adjusts the payload pointer to hide or reveal headers in the payload. - * - * Adjusts the ->payload pointer so that space for a header - * (dis)appears in the pbuf payload. - * - * The ->payload, ->tot_len and ->len fields are adjusted. - * - * @param p pbuf to change the header size. - * @param header_size_increment Number of bytes to increment header size which - * increases the size of the pbuf. New space is on the front. - * (Using a negative value decreases the header size.) - * If hdr_size_inc is 0, this function does nothing and returns succesful. - * - * PBUF_ROM and PBUF_REF type buffers cannot have their sizes increased, so - * the call will fail. A check is made that the increase in header size does - * not move the payload pointer in front of the start of the buffer. - * @return non-zero on failure, zero on success. - * - */ -u8_t -pbuf_header(struct pbuf *p, s16_t header_size_increment) -{ - u16_t type; - void *payload; - u16_t increment_magnitude; - - LWIP_ASSERT("p != NULL", p != NULL); - if ((header_size_increment == 0) || (p == NULL)) - return 0; - - if (header_size_increment < 0){ - increment_magnitude = -header_size_increment; - /* Check that we aren't going to move off the end of the pbuf */ - LWIP_ERROR("increment_magnitude <= p->len", (increment_magnitude <= p->len), return 1;); - } else { - increment_magnitude = header_size_increment; -#if 0 - /* Can't assert these as some callers speculatively call - pbuf_header() to see if it's OK. Will return 1 below instead. */ - /* Check that we've got the correct type of pbuf to work with */ - LWIP_ASSERT("p->type == PBUF_RAM || p->type == PBUF_POOL", - p->type == PBUF_RAM || p->type == PBUF_POOL); - /* Check that we aren't going to move off the beginning of the pbuf */ - LWIP_ASSERT("p->payload - increment_magnitude >= p + SIZEOF_STRUCT_PBUF", - (u8_t *)p->payload - increment_magnitude >= (u8_t *)p + SIZEOF_STRUCT_PBUF); -#endif - } - - type = p->type; - /* remember current payload pointer */ - payload = p->payload; - - /* pbuf types containing payloads? */ - if (type == PBUF_RAM || type == PBUF_POOL) { - /* set new payload pointer */ - p->payload = (u8_t *)p->payload - header_size_increment; - /* boundary check fails? */ - if ((u8_t *)p->payload < (u8_t *)p + SIZEOF_STRUCT_PBUF) { - LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("pbuf_header: failed as %p < %p (not enough space for new header size)\n", - (void *)p->payload, (void *)(p + 1))); - /* restore old payload pointer */ - p->payload = payload; - /* bail out unsuccesfully */ - return 1; - } - /* pbuf types refering to external payloads? */ - } else if (type == PBUF_REF || type == PBUF_ROM) { - /* hide a header in the payload? */ - if ((header_size_increment < 0) && (increment_magnitude <= p->len)) { - /* increase payload pointer */ - p->payload = (u8_t *)p->payload - header_size_increment; - } else { - /* cannot expand payload to front (yet!) - * bail out unsuccesfully */ - return 1; - } - } - else { - /* Unknown type */ - LWIP_ASSERT("bad pbuf type", 0); - return 1; - } - /* modify pbuf length fields */ - p->len += header_size_increment; - p->tot_len += header_size_increment; - - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_header: old %p new %p (%"S16_F")\n", - (void *)payload, (void *)p->payload, header_size_increment)); - - return 0; -} - -/** - * Dereference a pbuf chain or queue and deallocate any no-longer-used - * pbufs at the head of this chain or queue. - * - * Decrements the pbuf reference count. If it reaches zero, the pbuf is - * deallocated. - * - * For a pbuf chain, this is repeated for each pbuf in the chain, - * up to the first pbuf which has a non-zero reference count after - * decrementing. So, when all reference counts are one, the whole - * chain is free'd. - * - * @param p The pbuf (chain) to be dereferenced. - * - * @return the number of pbufs that were de-allocated - * from the head of the chain. - * - * @note MUST NOT be called on a packet queue (Not verified to work yet). - * @note the reference counter of a pbuf equals the number of pointers - * that refer to the pbuf (or into the pbuf). - * - * @internal examples: - * - * Assuming existing chains a->b->c with the following reference - * counts, calling pbuf_free(a) results in: - * - * 1->2->3 becomes ...1->3 - * 3->3->3 becomes 2->3->3 - * 1->1->2 becomes ......1 - * 2->1->1 becomes 1->1->1 - * 1->1->1 becomes ....... - * - */ -u8_t -pbuf_free(struct pbuf *p) -{ - u16_t type; - struct pbuf *q; - u8_t count; - - if (p == NULL) { - LWIP_ASSERT("p != NULL", p != NULL); - /* if assertions are disabled, proceed with debug output */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("pbuf_free(p == NULL) was called.\n")); - return 0; - } - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free(%p)\n", (void *)p)); - - PERF_START; - - LWIP_ASSERT("pbuf_free: sane type", - p->type == PBUF_RAM || p->type == PBUF_ROM || - p->type == PBUF_REF || p->type == PBUF_POOL); - - count = 0; - /* de-allocate all consecutive pbufs from the head of the chain that - * obtain a zero reference count after decrementing*/ - while (p != NULL) { - u16_t ref; - SYS_ARCH_DECL_PROTECT(old_level); - /* Since decrementing ref cannot be guaranteed to be a single machine operation - * we must protect it. We put the new ref into a local variable to prevent - * further protection. */ - SYS_ARCH_PROTECT(old_level); - /* all pbufs in a chain are referenced at least once */ - LWIP_ASSERT("pbuf_free: p->ref > 0", p->ref > 0); - /* decrease reference count (number of pointers to pbuf) */ - ref = --(p->ref); - SYS_ARCH_UNPROTECT(old_level); - /* this pbuf is no longer referenced to? */ - if (ref == 0) { - /* remember next pbuf in chain for next iteration */ - q = p->next; - LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: deallocating %p\n", (void *)p)); - type = p->type; - /* is this a pbuf from the pool? */ - if (type == PBUF_POOL) { - memp_free(MEMP_PBUF_POOL, p); - /* is this a ROM or RAM referencing pbuf? */ - } else if (type == PBUF_ROM || type == PBUF_REF) { - memp_free(MEMP_PBUF, p); - /* type == PBUF_RAM */ - } else { - mem_free(p); - } - count++; - /* proceed to next pbuf */ - p = q; - /* p->ref > 0, this pbuf is still referenced to */ - /* (and so the remaining pbufs in chain as well) */ - } else { - LWIP_DEBUGF( PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_free: %p has ref %"U16_F", ending here.\n", (void *)p, ref)); - /* stop walking through the chain */ - p = NULL; - } - } - PERF_STOP("pbuf_free"); - /* return number of de-allocated pbufs */ - return count; -} - -/** - * Count number of pbufs in a chain - * - * @param p first pbuf of chain - * @return the number of pbufs in a chain - */ - -u8_t -pbuf_clen(struct pbuf *p) -{ - u8_t len; - - len = 0; - while (p != NULL) { - ++len; - p = p->next; - } - return len; -} - -/** - * Increment the reference count of the pbuf. - * - * @param p pbuf to increase reference counter of - * - */ -void -pbuf_ref(struct pbuf *p) -{ - SYS_ARCH_DECL_PROTECT(old_level); - /* pbuf given? */ - if (p != NULL) { - SYS_ARCH_PROTECT(old_level); - ++(p->ref); - SYS_ARCH_UNPROTECT(old_level); - } -} - -/** - * Concatenate two pbufs (each may be a pbuf chain) and take over - * the caller's reference of the tail pbuf. - * - * @note The caller MAY NOT reference the tail pbuf afterwards. - * Use pbuf_chain() for that purpose. - * - * @see pbuf_chain() - */ - -void -pbuf_cat(struct pbuf *h, struct pbuf *t) -{ - struct pbuf *p; - - LWIP_ERROR("(h != NULL) && (t != NULL) (programmer violates API)", - ((h != NULL) && (t != NULL)), return;); - - /* proceed to last pbuf of chain */ - for (p = h; p->next != NULL; p = p->next) { - /* add total length of second chain to all totals of first chain */ - p->tot_len += t->tot_len; - } - /* { p is last pbuf of first h chain, p->next == NULL } */ - LWIP_ASSERT("p->tot_len == p->len (of last pbuf in chain)", p->tot_len == p->len); - LWIP_ASSERT("p->next == NULL", p->next == NULL); - /* add total length of second chain to last pbuf total of first chain */ - p->tot_len += t->tot_len; - /* chain last pbuf of head (p) with first of tail (t) */ - p->next = t; - /* p->next now references t, but the caller will drop its reference to t, - * so netto there is no change to the reference count of t. - */ -} - -/** - * Chain two pbufs (or pbuf chains) together. - * - * The caller MUST call pbuf_free(t) once it has stopped - * using it. Use pbuf_cat() instead if you no longer use t. - * - * @param h head pbuf (chain) - * @param t tail pbuf (chain) - * @note The pbufs MUST belong to the same packet. - * @note MAY NOT be called on a packet queue. - * - * The ->tot_len fields of all pbufs of the head chain are adjusted. - * The ->next field of the last pbuf of the head chain is adjusted. - * The ->ref field of the first pbuf of the tail chain is adjusted. - * - */ -void -pbuf_chain(struct pbuf *h, struct pbuf *t) -{ - pbuf_cat(h, t); - /* t is now referenced by h */ - pbuf_ref(t); - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_chain: %p references %p\n", (void *)h, (void *)t)); -} - -/** - * Dechains the first pbuf from its succeeding pbufs in the chain. - * - * Makes p->tot_len field equal to p->len. - * @param p pbuf to dechain - * @return remainder of the pbuf chain, or NULL if it was de-allocated. - * @note May not be called on a packet queue. - */ -struct pbuf * -pbuf_dechain(struct pbuf *p) -{ - struct pbuf *q; - u8_t tail_gone = 1; - /* tail */ - q = p->next; - /* pbuf has successor in chain? */ - if (q != NULL) { - /* assert tot_len invariant: (p->tot_len == p->len + (p->next? p->next->tot_len: 0) */ - LWIP_ASSERT("p->tot_len == p->len + q->tot_len", q->tot_len == p->tot_len - p->len); - /* enforce invariant if assertion is disabled */ - q->tot_len = p->tot_len - p->len; - /* decouple pbuf from remainder */ - p->next = NULL; - /* total length of pbuf p is its own length only */ - p->tot_len = p->len; - /* q is no longer referenced by p, free it */ - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_dechain: unreferencing %p\n", (void *)q)); - tail_gone = pbuf_free(q); - if (tail_gone > 0) { - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, - ("pbuf_dechain: deallocated %p (as it is no longer referenced)\n", (void *)q)); - } - /* return remaining tail or NULL if deallocated */ - } - /* assert tot_len invariant: (p->tot_len == p->len + (p->next? p->next->tot_len: 0) */ - LWIP_ASSERT("p->tot_len == p->len", p->tot_len == p->len); - return ((tail_gone > 0) ? NULL : q); -} - -/** - * - * Create PBUF_RAM copies of pbufs. - * - * Used to queue packets on behalf of the lwIP stack, such as - * ARP based queueing. - * - * @note You MUST explicitly use p = pbuf_take(p); - * - * @note Only one packet is copied, no packet queue! - * - * @param p_to pbuf destination of the copy - * @param p_from pbuf source of the copy - * - * @return ERR_OK if pbuf was copied - * ERR_ARG if one of the pbufs is NULL or p_to is not big - * enough to hold p_from - */ -err_t -pbuf_copy(struct pbuf *p_to, struct pbuf *p_from) -{ - u16_t offset_to=0, offset_from=0, len; - - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy(%p, %p)\n", - (void*)p_to, (void*)p_from)); - - /* is the target big enough to hold the source? */ - LWIP_ERROR("pbuf_copy: target not big enough to hold source", ((p_to != NULL) && - (p_from != NULL) && (p_to->tot_len >= p_from->tot_len)), return ERR_ARG;); - - /* iterate through pbuf chain */ - do - { - LWIP_ASSERT("p_to != NULL", p_to != NULL); - /* copy one part of the original chain */ - if ((p_to->len - offset_to) >= (p_from->len - offset_from)) { - /* complete current p_from fits into current p_to */ - len = p_from->len - offset_from; - } else { - /* current p_from does not fit into current p_to */ - len = p_to->len - offset_to; - } - MEMCPY((u8_t*)p_to->payload + offset_to, (u8_t*)p_from->payload + offset_from, len); - offset_to += len; - offset_from += len; - LWIP_ASSERT("offset_to <= p_to->len", offset_to <= p_to->len); - if (offset_to == p_to->len) { - /* on to next p_to (if any) */ - offset_to = 0; - p_to = p_to->next; - } - LWIP_ASSERT("offset_from <= p_from->len", offset_from <= p_from->len); - if (offset_from >= p_from->len) { - /* on to next p_from (if any) */ - offset_from = 0; - p_from = p_from->next; - } - - if((p_from != NULL) && (p_from->len == p_from->tot_len)) { - /* don't copy more than one packet! */ - LWIP_ERROR("pbuf_copy() does not allow packet queues!\n", - (p_from->next == NULL), return ERR_VAL;); - } - if((p_to != NULL) && (p_to->len == p_to->tot_len)) { - /* don't copy more than one packet! */ - LWIP_ERROR("pbuf_copy() does not allow packet queues!\n", - (p_to->next == NULL), return ERR_VAL;); - } - } while (p_from); - LWIP_DEBUGF(PBUF_DEBUG | LWIP_DBG_TRACE, ("pbuf_copy: end of chain reached.\n")); - return ERR_OK; -} - -/** - * Copy (part of) the contents of a packet buffer - * to an application supplied buffer. - * - * @param buf the pbuf from which to copy data - * @param dataptr the application supplied buffer - * @param len length of data to copy (dataptr must be big enough). No more - * than buf->tot_len will be copied, irrespective of len - * @param offset offset into the packet buffer from where to begin copying len bytes - * @return the number of bytes copied, or 0 on failure - */ -u16_t -pbuf_copy_partial(struct pbuf *buf, void *dataptr, u16_t len, u16_t offset) -{ - struct pbuf *p; - u16_t left; - u16_t buf_copy_len; - u16_t copied_total = 0; - - LWIP_ERROR("pbuf_copy_partial: invalid buf", (buf != NULL), return 0;); - LWIP_ERROR("pbuf_copy_partial: invalid dataptr", (dataptr != NULL), return 0;); - - left = 0; - - if((buf == NULL) || (dataptr == NULL)) { - return 0; - } - - /* Note some systems use byte copy if dataptr or one of the pbuf payload pointers are unaligned. */ - for(p = buf; len != 0 && p != NULL; p = p->next) { - if ((offset != 0) && (offset >= p->len)) { - /* don't copy from this buffer -> on to the next */ - offset -= p->len; - } else { - /* copy from this buffer. maybe only partially. */ - buf_copy_len = p->len - offset; - if (buf_copy_len > len) - buf_copy_len = len; - /* copy the necessary parts of the buffer */ - MEMCPY(&((char*)dataptr)[left], &((char*)p->payload)[offset], buf_copy_len); - copied_total += buf_copy_len; - left += buf_copy_len; - len -= buf_copy_len; - offset = 0; - } - } - return copied_total; -} - -/** - * Copy application supplied data into a pbuf. - * This function can only be used to copy the equivalent of buf->tot_len data. - * - * @param buf pbuf to fill with data - * @param dataptr application supplied data buffer - * @param len length of the application supplied data buffer - * - * @return ERR_OK if successful, ERR_MEM if the pbuf is not big enough - */ -err_t -pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len) -{ - struct pbuf *p; - u16_t buf_copy_len; - u16_t total_copy_len = len; - u16_t copied_total = 0; - - LWIP_ERROR("pbuf_take: invalid buf", (buf != NULL), return 0;); - LWIP_ERROR("pbuf_take: invalid dataptr", (dataptr != NULL), return 0;); - - if ((buf == NULL) || (dataptr == NULL) || (buf->tot_len < len)) { - return ERR_ARG; - } - - /* Note some systems use byte copy if dataptr or one of the pbuf payload pointers are unaligned. */ - for(p = buf; total_copy_len != 0; p = p->next) { - LWIP_ASSERT("pbuf_take: invalid pbuf", p != NULL); - buf_copy_len = total_copy_len; - if (buf_copy_len > p->len) { - /* this pbuf cannot hold all remaining data */ - buf_copy_len = p->len; - } - /* copy the necessary parts of the buffer */ - MEMCPY(p->payload, &((char*)dataptr)[copied_total], buf_copy_len); - total_copy_len -= buf_copy_len; - copied_total += buf_copy_len; - } - LWIP_ASSERT("did not copy all data", total_copy_len == 0 && copied_total == len); - return ERR_OK; -} - -/** - * Creates a single pbuf out of a queue of pbufs. - * - * @remark: The source pbuf 'p' is not freed by this function because that can - * be illegal in some places! - * - * @param p the source pbuf - * @param layer pbuf_layer of the new pbuf - * - * @return a new, single pbuf (p->next is NULL) - * or the old pbuf if allocation fails - */ -struct pbuf* -pbuf_coalesce(struct pbuf *p, pbuf_layer layer) -{ - struct pbuf *q; - err_t err; - if (p->next == NULL) { - return p; - } - q = pbuf_alloc(layer, p->tot_len, PBUF_RAM); - if (q == NULL) { - /* @todo: what do we do now? */ - return p; - } - err = pbuf_copy(q, p); - LWIP_ASSERT("pbuf_copy failed", err == ERR_OK); - pbuf_free(p); - return q; -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/raw.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/raw.c deleted file mode 100644 index 6966bbc44e8..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/raw.c +++ /dev/null @@ -1,355 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Implementation of raw protocol PCBs for low-level handling of - * different types of protocols besides (or overriding) those - * already available in lwIP. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_RAW /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/memp.h" -#include "lwip/inet.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/raw.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "arch/perf.h" - -#include - -/** The list of RAW PCBs */ -static struct raw_pcb *raw_pcbs; - -/** - * Determine if in incoming IP packet is covered by a RAW PCB - * and if so, pass it to a user-provided receive callback function. - * - * Given an incoming IP datagram (as a chain of pbufs) this function - * finds a corresponding RAW PCB and calls the corresponding receive - * callback function. - * - * @param p pbuf to be demultiplexed to a RAW PCB. - * @param inp network interface on which the datagram was received. - * @return - 1 if the packet has been eaten by a RAW PCB receive - * callback function. The caller MAY NOT not reference the - * packet any longer, and MAY NOT call pbuf_free(). - * @return - 0 if packet is not eaten (pbuf is still referenced by the - * caller). - * - */ -u8_t -raw_input(struct pbuf *p, struct netif *inp) -{ - struct raw_pcb *pcb, *prev; - struct ip_hdr *iphdr; - s16_t proto; - u8_t eaten = 0; - - LWIP_UNUSED_ARG(inp); - - iphdr = p->payload; - proto = IPH_PROTO(iphdr); - - prev = NULL; - pcb = raw_pcbs; - /* loop through all raw pcbs until the packet is eaten by one */ - /* this allows multiple pcbs to match against the packet by design */ - while ((eaten == 0) && (pcb != NULL)) { - if (pcb->protocol == proto) { -#if IP_SOF_BROADCAST_RECV - /* broadcast filter? */ - if ((pcb->so_options & SOF_BROADCAST) || !ip_addr_isbroadcast(&(iphdr->dest), inp)) -#endif /* IP_SOF_BROADCAST_RECV */ - { - /* receive callback function available? */ - if (pcb->recv != NULL) { - /* the receive callback function did not eat the packet? */ - if (pcb->recv(pcb->recv_arg, pcb, p, &(iphdr->src)) != 0) { - /* receive function ate the packet */ - p = NULL; - eaten = 1; - if (prev != NULL) { - /* move the pcb to the front of raw_pcbs so that is - found faster next time */ - prev->next = pcb->next; - pcb->next = raw_pcbs; - raw_pcbs = pcb; - } - } - } - /* no receive callback function was set for this raw PCB */ - } - /* drop the packet */ - } - prev = pcb; - pcb = pcb->next; - } - return eaten; -} - -/** - * Bind a RAW PCB. - * - * @param pcb RAW PCB to be bound with a local address ipaddr. - * @param ipaddr local IP address to bind with. Use IP_ADDR_ANY to - * bind to all local interfaces. - * - * @return lwIP error code. - * - ERR_OK. Successful. No error occured. - * - ERR_USE. The specified IP address is already bound to by - * another RAW PCB. - * - * @see raw_disconnect() - */ -err_t -raw_bind(struct raw_pcb *pcb, struct ip_addr *ipaddr) -{ - ip_addr_set(&pcb->local_ip, ipaddr); - return ERR_OK; -} - -/** - * Connect an RAW PCB. This function is required by upper layers - * of lwip. Using the raw api you could use raw_sendto() instead - * - * This will associate the RAW PCB with the remote address. - * - * @param pcb RAW PCB to be connected with remote address ipaddr and port. - * @param ipaddr remote IP address to connect with. - * - * @return lwIP error code - * - * @see raw_disconnect() and raw_sendto() - */ -err_t -raw_connect(struct raw_pcb *pcb, struct ip_addr *ipaddr) -{ - ip_addr_set(&pcb->remote_ip, ipaddr); - return ERR_OK; -} - - -/** - * Set the callback function for received packets that match the - * raw PCB's protocol and binding. - * - * The callback function MUST either - * - eat the packet by calling pbuf_free() and returning non-zero. The - * packet will not be passed to other raw PCBs or other protocol layers. - * - not free the packet, and return zero. The packet will be matched - * against further PCBs and/or forwarded to another protocol layers. - * - * @return non-zero if the packet was free()d, zero if the packet remains - * available for others. - */ -void -raw_recv(struct raw_pcb *pcb, - u8_t (* recv)(void *arg, struct raw_pcb *upcb, struct pbuf *p, - struct ip_addr *addr), - void *recv_arg) -{ - /* remember recv() callback and user data */ - pcb->recv = recv; - pcb->recv_arg = recv_arg; -} - -/** - * Send the raw IP packet to the given address. Note that actually you cannot - * modify the IP headers (this is inconsistent with the receive callback where - * you actually get the IP headers), you can only specify the IP payload here. - * It requires some more changes in lwIP. (there will be a raw_send() function - * then.) - * - * @param pcb the raw pcb which to send - * @param p the IP payload to send - * @param ipaddr the destination address of the IP packet - * - */ -err_t -raw_sendto(struct raw_pcb *pcb, struct pbuf *p, struct ip_addr *ipaddr) -{ - err_t err; - struct netif *netif; - struct ip_addr *src_ip; - struct pbuf *q; /* q will be sent down the stack */ - - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE, ("raw_sendto\n")); - - /* not enough space to add an IP header to first pbuf in given p chain? */ - if (pbuf_header(p, IP_HLEN)) { - /* allocate header in new pbuf */ - q = pbuf_alloc(PBUF_IP, 0, PBUF_RAM); - /* new header pbuf could not be allocated? */ - if (q == NULL) { - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("raw_sendto: could not allocate header\n")); - return ERR_MEM; - } - /* chain header q in front of given pbuf p */ - pbuf_chain(q, p); - /* { first pbuf q points to header pbuf } */ - LWIP_DEBUGF(RAW_DEBUG, ("raw_sendto: added header pbuf %p before given pbuf %p\n", (void *)q, (void *)p)); - } else { - /* first pbuf q equals given pbuf */ - q = p; - if(pbuf_header(q, -IP_HLEN)) { - LWIP_ASSERT("Can't restore header we just removed!", 0); - return ERR_MEM; - } - } - - if ((netif = ip_route(ipaddr)) == NULL) { - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_LEVEL_WARNING, ("raw_sendto: No route to 0x%"X32_F"\n", ipaddr->addr)); - /* free any temporary header pbuf allocated by pbuf_header() */ - if (q != p) { - pbuf_free(q); - } - return ERR_RTE; - } - -#if IP_SOF_BROADCAST - /* broadcast filter? */ - if ( ((pcb->so_options & SOF_BROADCAST) == 0) && ip_addr_isbroadcast(ipaddr, netif) ) { - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_LEVEL_WARNING, ("raw_sendto: SOF_BROADCAST not enabled on pcb %p\n", (void *)pcb)); - /* free any temporary header pbuf allocated by pbuf_header() */ - if (q != p) { - pbuf_free(q); - } - return ERR_VAL; - } -#endif /* IP_SOF_BROADCAST */ - - if (ip_addr_isany(&pcb->local_ip)) { - /* use outgoing network interface IP address as source address */ - src_ip = &(netif->ip_addr); - } else { - /* use RAW PCB local IP address as source address */ - src_ip = &(pcb->local_ip); - } - -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = &(pcb->addr_hint); -#endif /* LWIP_NETIF_HWADDRHINT*/ - err = ip_output_if (q, src_ip, ipaddr, pcb->ttl, pcb->tos, pcb->protocol, netif); -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = NULL; -#endif /* LWIP_NETIF_HWADDRHINT*/ - - /* did we chain a header earlier? */ - if (q != p) { - /* free the header */ - pbuf_free(q); - } - return err; -} - -/** - * Send the raw IP packet to the address given by raw_connect() - * - * @param pcb the raw pcb which to send - * @param p the IP payload to send - * - */ -err_t -raw_send(struct raw_pcb *pcb, struct pbuf *p) -{ - return raw_sendto(pcb, p, &pcb->remote_ip); -} - -/** - * Remove an RAW PCB. - * - * @param pcb RAW PCB to be removed. The PCB is removed from the list of - * RAW PCB's and the data structure is freed from memory. - * - * @see raw_new() - */ -void -raw_remove(struct raw_pcb *pcb) -{ - struct raw_pcb *pcb2; - /* pcb to be removed is first in list? */ - if (raw_pcbs == pcb) { - /* make list start at 2nd pcb */ - raw_pcbs = raw_pcbs->next; - /* pcb not 1st in list */ - } else { - for(pcb2 = raw_pcbs; pcb2 != NULL; pcb2 = pcb2->next) { - /* find pcb in raw_pcbs list */ - if (pcb2->next != NULL && pcb2->next == pcb) { - /* remove pcb from list */ - pcb2->next = pcb->next; - } - } - } - memp_free(MEMP_RAW_PCB, pcb); -} - -/** - * Create a RAW PCB. - * - * @return The RAW PCB which was created. NULL if the PCB data structure - * could not be allocated. - * - * @param proto the protocol number of the IPs payload (e.g. IP_PROTO_ICMP) - * - * @see raw_remove() - */ -struct raw_pcb * -raw_new(u8_t proto) { - struct raw_pcb *pcb; - - LWIP_DEBUGF(RAW_DEBUG | LWIP_DBG_TRACE, ("raw_new\n")); - - pcb = memp_malloc(MEMP_RAW_PCB); - /* could allocate RAW PCB? */ - if (pcb != NULL) { - /* initialize PCB to all zeroes */ - memset(pcb, 0, sizeof(struct raw_pcb)); - pcb->protocol = proto; - pcb->ttl = RAW_TTL; - pcb->next = raw_pcbs; - raw_pcbs = pcb; - } - return pcb; -} - -#endif /* LWIP_RAW */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/stats.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/stats.c deleted file mode 100644 index 4299a9480be..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/stats.c +++ /dev/null @@ -1,151 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Statistics module - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_STATS /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/stats.h" -#include "lwip/mem.h" - -#include - -struct stats_ lwip_stats; - -#if LWIP_STATS_DISPLAY -void -stats_display_proto(struct stats_proto *proto, char *name) -{ - LWIP_PLATFORM_DIAG(("\n%s\n\t", name)); - LWIP_PLATFORM_DIAG(("xmit: %"STAT_COUNTER_F"\n\t", proto->xmit)); - LWIP_PLATFORM_DIAG(("recv: %"STAT_COUNTER_F"\n\t", proto->recv)); - LWIP_PLATFORM_DIAG(("fw: %"STAT_COUNTER_F"\n\t", proto->fw)); - LWIP_PLATFORM_DIAG(("drop: %"STAT_COUNTER_F"\n\t", proto->drop)); - LWIP_PLATFORM_DIAG(("chkerr: %"STAT_COUNTER_F"\n\t", proto->chkerr)); - LWIP_PLATFORM_DIAG(("lenerr: %"STAT_COUNTER_F"\n\t", proto->lenerr)); - LWIP_PLATFORM_DIAG(("memerr: %"STAT_COUNTER_F"\n\t", proto->memerr)); - LWIP_PLATFORM_DIAG(("rterr: %"STAT_COUNTER_F"\n\t", proto->rterr)); - LWIP_PLATFORM_DIAG(("proterr: %"STAT_COUNTER_F"\n\t", proto->proterr)); - LWIP_PLATFORM_DIAG(("opterr: %"STAT_COUNTER_F"\n\t", proto->opterr)); - LWIP_PLATFORM_DIAG(("err: %"STAT_COUNTER_F"\n\t", proto->err)); - LWIP_PLATFORM_DIAG(("cachehit: %"STAT_COUNTER_F"\n", proto->cachehit)); -} - -#if IGMP_STATS -void -stats_display_igmp(struct stats_igmp *igmp) -{ - LWIP_PLATFORM_DIAG(("\nIGMP\n\t")); - LWIP_PLATFORM_DIAG(("lenerr: %"STAT_COUNTER_F"\n\t", igmp->lenerr)); - LWIP_PLATFORM_DIAG(("chkerr: %"STAT_COUNTER_F"\n\t", igmp->chkerr)); - LWIP_PLATFORM_DIAG(("v1_rxed: %"STAT_COUNTER_F"\n\t", igmp->v1_rxed)); - LWIP_PLATFORM_DIAG(("join_sent: %"STAT_COUNTER_F"\n\t", igmp->join_sent)); - LWIP_PLATFORM_DIAG(("leave_sent: %"STAT_COUNTER_F"\n\t", igmp->leave_sent)); - LWIP_PLATFORM_DIAG(("unicast_query: %"STAT_COUNTER_F"\n\t", igmp->unicast_query)); - LWIP_PLATFORM_DIAG(("report_sent: %"STAT_COUNTER_F"\n\t", igmp->report_sent)); - LWIP_PLATFORM_DIAG(("report_rxed: %"STAT_COUNTER_F"\n\t", igmp->report_rxed)); - LWIP_PLATFORM_DIAG(("group_query_rxed: %"STAT_COUNTER_F"\n", igmp->group_query_rxed)); -} -#endif /* IGMP_STATS */ - -#if MEM_STATS || MEMP_STATS -void -stats_display_mem(struct stats_mem *mem, char *name) -{ - LWIP_PLATFORM_DIAG(("\nMEM %s\n\t", name)); - LWIP_PLATFORM_DIAG(("avail: %"U32_F"\n\t", (u32_t)mem->avail)); - LWIP_PLATFORM_DIAG(("used: %"U32_F"\n\t", (u32_t)mem->used)); - LWIP_PLATFORM_DIAG(("max: %"U32_F"\n\t", (u32_t)mem->max)); - LWIP_PLATFORM_DIAG(("err: %"U32_F"\n", (u32_t)mem->err)); -} - -#if MEMP_STATS -void -stats_display_memp(struct stats_mem *mem, int index) -{ - char * memp_names[] = { -#define LWIP_MEMPOOL(name,num,size,desc) desc, -#include "lwip/memp_std.h" - }; - if(index < MEMP_MAX) { - stats_display_mem(mem, memp_names[index]); - } -} -#endif /* MEMP_STATS */ -#endif /* MEM_STATS || MEMP_STATS */ - -#if SYS_STATS -void -stats_display_sys(struct stats_sys *sys) -{ - LWIP_PLATFORM_DIAG(("\nSYS\n\t")); - LWIP_PLATFORM_DIAG(("sem.used: %"U32_F"\n\t", (u32_t)sys->sem.used)); - LWIP_PLATFORM_DIAG(("sem.max: %"U32_F"\n\t", (u32_t)sys->sem.max)); - LWIP_PLATFORM_DIAG(("sem.err: %"U32_F"\n\t", (u32_t)sys->sem.err)); - LWIP_PLATFORM_DIAG(("mbox.used: %"U32_F"\n\t", (u32_t)sys->mbox.used)); - LWIP_PLATFORM_DIAG(("mbox.max: %"U32_F"\n\t", (u32_t)sys->mbox.max)); - LWIP_PLATFORM_DIAG(("mbox.err: %"U32_F"\n\t", (u32_t)sys->mbox.err)); -} -#endif /* SYS_STATS */ - -void -stats_display(void) -{ - s16_t i; - - LINK_STATS_DISPLAY(); - ETHARP_STATS_DISPLAY(); - IPFRAG_STATS_DISPLAY(); - IP_STATS_DISPLAY(); - IGMP_STATS_DISPLAY(); - ICMP_STATS_DISPLAY(); - UDP_STATS_DISPLAY(); - TCP_STATS_DISPLAY(); - MEM_STATS_DISPLAY(); - for (i = 0; i < MEMP_MAX; i++) { - MEMP_STATS_DISPLAY(i); - } - SYS_STATS_DISPLAY(); -} -#endif /* LWIP_STATS_DISPLAY */ - -#endif /* LWIP_STATS */ - diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp.c deleted file mode 100644 index c588d21dfec..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp.c +++ /dev/null @@ -1,1463 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Transmission Control Protocol for IP - * - * This file contains common functions for the TCP implementation, such as functinos - * for manipulating the data structures and the TCP timer functions. TCP functions - * related to input and output is found in tcp_in.c and tcp_out.c respectively. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/snmp.h" -#include "lwip/tcp.h" -#include "lwip/debug.h" -#include "lwip/stats.h" - -#include - -const char *tcp_state_str[] = { - "CLOSED", - "LISTEN", - "SYN_SENT", - "SYN_RCVD", - "ESTABLISHED", - "FIN_WAIT_1", - "FIN_WAIT_2", - "CLOSE_WAIT", - "CLOSING", - "LAST_ACK", - "TIME_WAIT" -}; - -/* Incremented every coarse grained timer shot (typically every 500 ms). */ -u32_t tcp_ticks; -const u8_t tcp_backoff[13] = - { 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7}; - /* Times per slowtmr hits */ -const u8_t tcp_persist_backoff[7] = { 3, 6, 12, 24, 48, 96, 120 }; - -/* The TCP PCB lists. */ - -/** List of all TCP PCBs bound but not yet (connected || listening) */ -struct tcp_pcb *tcp_bound_pcbs; -/** List of all TCP PCBs in LISTEN state */ -union tcp_listen_pcbs_t tcp_listen_pcbs; -/** List of all TCP PCBs that are in a state in which - * they accept or send data. */ -struct tcp_pcb *tcp_active_pcbs; -/** List of all TCP PCBs in TIME-WAIT state */ -struct tcp_pcb *tcp_tw_pcbs; - -struct tcp_pcb *tcp_tmp_pcb; - -static u8_t tcp_timer; -static u16_t tcp_new_port(void); - -/** - * Called periodically to dispatch TCP timers. - * - */ -void -tcp_tmr(void) -{ - /* Call tcp_fasttmr() every 250 ms */ - tcp_fasttmr(); - - if (++tcp_timer & 1) { - /* Call tcp_tmr() every 500 ms, i.e., every other timer - tcp_tmr() is called. */ - tcp_slowtmr(); - } -} - -/** - * Closes the connection held by the PCB. - * - * Listening pcbs are freed and may not be referenced any more. - * Connection pcbs are freed if not yet connected and may not be referenced - * any more. If a connection is established (at least SYN received or in - * a closing state), the connection is closed, and put in a closing state. - * The pcb is then automatically freed in tcp_slowtmr(). It is therefore - * unsafe to reference it. - * - * @param pcb the tcp_pcb to close - * @return ERR_OK if connection has been closed - * another err_t if closing failed and pcb is not freed - */ -err_t -tcp_close(struct tcp_pcb *pcb) -{ - err_t err; - -#if TCP_DEBUG - LWIP_DEBUGF(TCP_DEBUG, ("tcp_close: closing in ")); - tcp_debug_print_state(pcb->state); -#endif /* TCP_DEBUG */ - - switch (pcb->state) { - case CLOSED: - /* Closing a pcb in the CLOSED state might seem erroneous, - * however, it is in this state once allocated and as yet unused - * and the user needs some way to free it should the need arise. - * Calling tcp_close() with a pcb that has already been closed, (i.e. twice) - * or for a pcb that has been used and then entered the CLOSED state - * is erroneous, but this should never happen as the pcb has in those cases - * been freed, and so any remaining handles are bogus. */ - err = ERR_OK; - TCP_RMV(&tcp_bound_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - pcb = NULL; - break; - case LISTEN: - err = ERR_OK; - tcp_pcb_remove((struct tcp_pcb **)&tcp_listen_pcbs.pcbs, pcb); - memp_free(MEMP_TCP_PCB_LISTEN, pcb); - pcb = NULL; - break; - case SYN_SENT: - err = ERR_OK; - tcp_pcb_remove(&tcp_active_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - pcb = NULL; - snmp_inc_tcpattemptfails(); - break; - case SYN_RCVD: - err = tcp_send_ctrl(pcb, TCP_FIN); - if (err == ERR_OK) { - snmp_inc_tcpattemptfails(); - pcb->state = FIN_WAIT_1; - } - break; - case ESTABLISHED: - err = tcp_send_ctrl(pcb, TCP_FIN); - if (err == ERR_OK) { - snmp_inc_tcpestabresets(); - pcb->state = FIN_WAIT_1; - } - break; - case CLOSE_WAIT: - err = tcp_send_ctrl(pcb, TCP_FIN); - if (err == ERR_OK) { - snmp_inc_tcpestabresets(); - pcb->state = LAST_ACK; - } - break; - default: - /* Has already been closed, do nothing. */ - err = ERR_OK; - pcb = NULL; - break; - } - - if (pcb != NULL && err == ERR_OK) { - /* To ensure all data has been sent when tcp_close returns, we have - to make sure tcp_output doesn't fail. - Since we don't really have to ensure all data has been sent when tcp_close - returns (unsent data is sent from tcp timer functions, also), we don't care - for the return value of tcp_output for now. */ - /* @todo: When implementing SO_LINGER, this must be changed somehow: - If SOF_LINGER is set, the data should be sent when tcp_close returns. */ - tcp_output(pcb); - } - return err; -} - -/** - * Abandons a connection and optionally sends a RST to the remote - * host. Deletes the local protocol control block. This is done when - * a connection is killed because of shortage of memory. - * - * @param pcb the tcp_pcb to abort - * @param reset boolean to indicate whether a reset should be sent - */ -void -tcp_abandon(struct tcp_pcb *pcb, int reset) -{ - u32_t seqno, ackno; - u16_t remote_port, local_port; - struct ip_addr remote_ip, local_ip; -#if LWIP_CALLBACK_API - void (* errf)(void *arg, err_t err); -#endif /* LWIP_CALLBACK_API */ - void *errf_arg; - - - /* Figure out on which TCP PCB list we are, and remove us. If we - are in an active state, call the receive function associated with - the PCB with a NULL argument, and send an RST to the remote end. */ - if (pcb->state == TIME_WAIT) { - tcp_pcb_remove(&tcp_tw_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - } else { - seqno = pcb->snd_nxt; - ackno = pcb->rcv_nxt; - ip_addr_set(&local_ip, &(pcb->local_ip)); - ip_addr_set(&remote_ip, &(pcb->remote_ip)); - local_port = pcb->local_port; - remote_port = pcb->remote_port; -#if LWIP_CALLBACK_API - errf = pcb->errf; -#endif /* LWIP_CALLBACK_API */ - errf_arg = pcb->callback_arg; - tcp_pcb_remove(&tcp_active_pcbs, pcb); - if (pcb->unacked != NULL) { - tcp_segs_free(pcb->unacked); - } - if (pcb->unsent != NULL) { - tcp_segs_free(pcb->unsent); - } -#if TCP_QUEUE_OOSEQ - if (pcb->ooseq != NULL) { - tcp_segs_free(pcb->ooseq); - } -#endif /* TCP_QUEUE_OOSEQ */ - memp_free(MEMP_TCP_PCB, pcb); - TCP_EVENT_ERR(errf, errf_arg, ERR_ABRT); - if (reset) { - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_abandon: sending RST\n")); - tcp_rst(seqno, ackno, &local_ip, &remote_ip, local_port, remote_port); - } - } -} - -/** - * Binds the connection to a local portnumber and IP address. If the - * IP address is not given (i.e., ipaddr == NULL), the IP address of - * the outgoing network interface is used instead. - * - * @param pcb the tcp_pcb to bind (no check is done whether this pcb is - * already bound!) - * @param ipaddr the local ip address to bind to (use IP_ADDR_ANY to bind - * to any local address - * @param port the local port to bind to - * @return ERR_USE if the port is already in use - * ERR_OK if bound - */ -err_t -tcp_bind(struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port) -{ - struct tcp_pcb *cpcb; - - LWIP_ERROR("tcp_bind: can only bind in state CLOSED", pcb->state == CLOSED, return ERR_ISCONN); - - if (port == 0) { - port = tcp_new_port(); - } - /* Check if the address already is in use. */ - /* Check the listen pcbs. */ - for(cpcb = (struct tcp_pcb *)tcp_listen_pcbs.pcbs; - cpcb != NULL; cpcb = cpcb->next) { - if (cpcb->local_port == port) { - if (ip_addr_isany(&(cpcb->local_ip)) || - ip_addr_isany(ipaddr) || - ip_addr_cmp(&(cpcb->local_ip), ipaddr)) { - return ERR_USE; - } - } - } - /* Check the connected pcbs. */ - for(cpcb = tcp_active_pcbs; - cpcb != NULL; cpcb = cpcb->next) { - if (cpcb->local_port == port) { - if (ip_addr_isany(&(cpcb->local_ip)) || - ip_addr_isany(ipaddr) || - ip_addr_cmp(&(cpcb->local_ip), ipaddr)) { - return ERR_USE; - } - } - } - /* Check the bound, not yet connected pcbs. */ - for(cpcb = tcp_bound_pcbs; cpcb != NULL; cpcb = cpcb->next) { - if (cpcb->local_port == port) { - if (ip_addr_isany(&(cpcb->local_ip)) || - ip_addr_isany(ipaddr) || - ip_addr_cmp(&(cpcb->local_ip), ipaddr)) { - return ERR_USE; - } - } - } - /* @todo: until SO_REUSEADDR is implemented (see task #6995 on savannah), - * we have to check the pcbs in TIME-WAIT state, also: */ - for(cpcb = tcp_tw_pcbs; cpcb != NULL; cpcb = cpcb->next) { - if (cpcb->local_port == port) { - if (ip_addr_cmp(&(cpcb->local_ip), ipaddr)) { - return ERR_USE; - } - } - } - - if (!ip_addr_isany(ipaddr)) { - pcb->local_ip = *ipaddr; - } - pcb->local_port = port; - TCP_REG(&tcp_bound_pcbs, pcb); - LWIP_DEBUGF(TCP_DEBUG, ("tcp_bind: bind to port %"U16_F"\n", port)); - return ERR_OK; -} -#if LWIP_CALLBACK_API -/** - * Default accept callback if no accept callback is specified by the user. - */ -static err_t -tcp_accept_null(void *arg, struct tcp_pcb *pcb, err_t err) -{ - LWIP_UNUSED_ARG(arg); - LWIP_UNUSED_ARG(pcb); - LWIP_UNUSED_ARG(err); - - return ERR_ABRT; -} -#endif /* LWIP_CALLBACK_API */ - -/** - * Set the state of the connection to be LISTEN, which means that it - * is able to accept incoming connections. The protocol control block - * is reallocated in order to consume less memory. Setting the - * connection to LISTEN is an irreversible process. - * - * @param pcb the original tcp_pcb - * @param backlog the incoming connections queue limit - * @return tcp_pcb used for listening, consumes less memory. - * - * @note The original tcp_pcb is freed. This function therefore has to be - * called like this: - * tpcb = tcp_listen(tpcb); - */ -struct tcp_pcb * -tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog) -{ - struct tcp_pcb_listen *lpcb; - - LWIP_UNUSED_ARG(backlog); - LWIP_ERROR("tcp_listen: pcb already connected", pcb->state == CLOSED, return NULL); - - /* already listening? */ - if (pcb->state == LISTEN) { - return pcb; - } - lpcb = memp_malloc(MEMP_TCP_PCB_LISTEN); - if (lpcb == NULL) { - return NULL; - } - lpcb->callback_arg = pcb->callback_arg; - lpcb->local_port = pcb->local_port; - lpcb->state = LISTEN; - lpcb->so_options = pcb->so_options; - lpcb->so_options |= SOF_ACCEPTCONN; - lpcb->ttl = pcb->ttl; - lpcb->tos = pcb->tos; - ip_addr_set(&lpcb->local_ip, &pcb->local_ip); - TCP_RMV(&tcp_bound_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); -#if LWIP_CALLBACK_API - lpcb->accept = tcp_accept_null; -#endif /* LWIP_CALLBACK_API */ -#if TCP_LISTEN_BACKLOG - lpcb->accepts_pending = 0; - lpcb->backlog = (backlog ? backlog : 1); -#endif /* TCP_LISTEN_BACKLOG */ - TCP_REG(&tcp_listen_pcbs.listen_pcbs, lpcb); - return (struct tcp_pcb *)lpcb; -} - -/** - * Update the state that tracks the available window space to advertise. - * - * Returns how much extra window would be advertised if we sent an - * update now. - */ -u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb) -{ - u32_t new_right_edge = pcb->rcv_nxt + pcb->rcv_wnd; - - if (TCP_SEQ_GEQ(new_right_edge, pcb->rcv_ann_right_edge + LWIP_MIN((TCP_WND / 2), pcb->mss))) { - /* we can advertise more window */ - pcb->rcv_ann_wnd = pcb->rcv_wnd; - return new_right_edge - pcb->rcv_ann_right_edge; - } else { - if (TCP_SEQ_GT(pcb->rcv_nxt, pcb->rcv_ann_right_edge)) { - /* Can happen due to other end sending out of advertised window, - * but within actual available (but not yet advertised) window */ - pcb->rcv_ann_wnd = 0; - } else { - /* keep the right edge of window constant */ - pcb->rcv_ann_wnd = pcb->rcv_ann_right_edge - pcb->rcv_nxt; - } - return 0; - } -} - -/** - * This function should be called by the application when it has - * processed the data. The purpose is to advertise a larger window - * when the data has been processed. - * - * @param pcb the tcp_pcb for which data is read - * @param len the amount of bytes that have been read by the application - */ -void -tcp_recved(struct tcp_pcb *pcb, u16_t len) -{ - int wnd_inflation; - - LWIP_ASSERT("tcp_recved: len would wrap rcv_wnd\n", - len <= 0xffff - pcb->rcv_wnd ); - - pcb->rcv_wnd += len; - if (pcb->rcv_wnd > TCP_WND) - pcb->rcv_wnd = TCP_WND; - - wnd_inflation = tcp_update_rcv_ann_wnd(pcb); - - /* If the change in the right edge of window is significant (default - * watermark is TCP_WND/2), then send an explicit update now. - * Otherwise wait for a packet to be sent in the normal course of - * events (or more window to be available later) */ - if (wnd_inflation >= TCP_WND_UPDATE_THRESHOLD) - tcp_ack_now(pcb); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_recved: recveived %"U16_F" bytes, wnd %"U16_F" (%"U16_F").\n", - len, pcb->rcv_wnd, TCP_WND - pcb->rcv_wnd)); -} - -/** - * A nastly hack featuring 'goto' statements that allocates a - * new TCP local port. - * - * @return a new (free) local TCP port number - */ -static u16_t -tcp_new_port(void) -{ - struct tcp_pcb *pcb; -#ifndef TCP_LOCAL_PORT_RANGE_START -#define TCP_LOCAL_PORT_RANGE_START 4096 -#define TCP_LOCAL_PORT_RANGE_END 0x7fff -#endif - static u16_t port = TCP_LOCAL_PORT_RANGE_START; - - again: - if (++port > TCP_LOCAL_PORT_RANGE_END) { - port = TCP_LOCAL_PORT_RANGE_START; - } - - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - if (pcb->local_port == port) { - goto again; - } - } - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - if (pcb->local_port == port) { - goto again; - } - } - for(pcb = (struct tcp_pcb *)tcp_listen_pcbs.pcbs; pcb != NULL; pcb = pcb->next) { - if (pcb->local_port == port) { - goto again; - } - } - return port; -} - -/** - * Connects to another host. The function given as the "connected" - * argument will be called when the connection has been established. - * - * @param pcb the tcp_pcb used to establish the connection - * @param ipaddr the remote ip address to connect to - * @param port the remote tcp port to connect to - * @param connected callback function to call when connected (or on error) - * @return ERR_VAL if invalid arguments are given - * ERR_OK if connect request has been sent - * other err_t values if connect request couldn't be sent - */ -err_t -tcp_connect(struct tcp_pcb *pcb, struct ip_addr *ipaddr, u16_t port, - err_t (* connected)(void *arg, struct tcp_pcb *tpcb, err_t err)) -{ - err_t ret; - u32_t iss; - - LWIP_ERROR("tcp_connect: can only connected from state CLOSED", pcb->state == CLOSED, return ERR_ISCONN); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_connect to port %"U16_F"\n", port)); - if (ipaddr != NULL) { - pcb->remote_ip = *ipaddr; - } else { - return ERR_VAL; - } - pcb->remote_port = port; - if (pcb->local_port == 0) { - pcb->local_port = tcp_new_port(); - } - iss = tcp_next_iss(); - pcb->rcv_nxt = 0; - pcb->snd_nxt = iss; - pcb->lastack = iss - 1; - pcb->snd_lbb = iss - 1; - pcb->rcv_wnd = TCP_WND; - pcb->rcv_ann_wnd = TCP_WND; - pcb->rcv_ann_right_edge = pcb->rcv_nxt; - pcb->snd_wnd = TCP_WND; - /* As initial send MSS, we use TCP_MSS but limit it to 536. - The send MSS is updated when an MSS option is received. */ - pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS; -#if TCP_CALCULATE_EFF_SEND_MSS - pcb->mss = tcp_eff_send_mss(pcb->mss, ipaddr); -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - pcb->cwnd = 1; - pcb->ssthresh = pcb->mss * 10; - pcb->state = SYN_SENT; -#if LWIP_CALLBACK_API - pcb->connected = connected; -#endif /* LWIP_CALLBACK_API */ - TCP_RMV(&tcp_bound_pcbs, pcb); - TCP_REG(&tcp_active_pcbs, pcb); - - snmp_inc_tcpactiveopens(); - - ret = tcp_enqueue(pcb, NULL, 0, TCP_SYN, 0, TF_SEG_OPTS_MSS -#if LWIP_TCP_TIMESTAMPS - | TF_SEG_OPTS_TS -#endif - ); - if (ret == ERR_OK) { - tcp_output(pcb); - } - return ret; -} - -/** - * Called every 500 ms and implements the retransmission timer and the timer that - * removes PCBs that have been in TIME-WAIT for enough time. It also increments - * various timers such as the inactivity timer in each PCB. - * - * Automatically called from tcp_tmr(). - */ -void -tcp_slowtmr(void) -{ - struct tcp_pcb *pcb, *pcb2, *prev; - u16_t eff_wnd; - u8_t pcb_remove; /* flag if a PCB should be removed */ - u8_t pcb_reset; /* flag if a RST should be sent when removing */ - err_t err; - - err = ERR_OK; - - ++tcp_ticks; - - /* Steps through all of the active PCBs. */ - prev = NULL; - pcb = tcp_active_pcbs; - if (pcb == NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: no active pcbs\n")); - } - while (pcb != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: processing active pcb\n")); - LWIP_ASSERT("tcp_slowtmr: active pcb->state != CLOSED\n", pcb->state != CLOSED); - LWIP_ASSERT("tcp_slowtmr: active pcb->state != LISTEN\n", pcb->state != LISTEN); - LWIP_ASSERT("tcp_slowtmr: active pcb->state != TIME-WAIT\n", pcb->state != TIME_WAIT); - - pcb_remove = 0; - pcb_reset = 0; - - if (pcb->state == SYN_SENT && pcb->nrtx == TCP_SYNMAXRTX) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max SYN retries reached\n")); - } - else if (pcb->nrtx == TCP_MAXRTX) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: max DATA retries reached\n")); - } else { - if (pcb->persist_backoff > 0) { - /* If snd_wnd is zero, use persist timer to send 1 byte probes - * instead of using the standard retransmission mechanism. */ - pcb->persist_cnt++; - if (pcb->persist_cnt >= tcp_persist_backoff[pcb->persist_backoff-1]) { - pcb->persist_cnt = 0; - if (pcb->persist_backoff < sizeof(tcp_persist_backoff)) { - pcb->persist_backoff++; - } - tcp_zero_window_probe(pcb); - } - } else { - /* Increase the retransmission timer if it is running */ - if(pcb->rtime >= 0) - ++pcb->rtime; - - if (pcb->unacked != NULL && pcb->rtime >= pcb->rto) { - /* Time for a retransmission. */ - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_slowtmr: rtime %"S16_F - " pcb->rto %"S16_F"\n", - pcb->rtime, pcb->rto)); - - /* Double retransmission time-out unless we are trying to - * connect to somebody (i.e., we are in SYN_SENT). */ - if (pcb->state != SYN_SENT) { - pcb->rto = ((pcb->sa >> 3) + pcb->sv) << tcp_backoff[pcb->nrtx]; - } - - /* Reset the retransmission timer. */ - pcb->rtime = 0; - - /* Reduce congestion window and ssthresh. */ - eff_wnd = LWIP_MIN(pcb->cwnd, pcb->snd_wnd); - pcb->ssthresh = eff_wnd >> 1; - if (pcb->ssthresh < pcb->mss) { - pcb->ssthresh = pcb->mss * 2; - } - pcb->cwnd = pcb->mss; - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: cwnd %"U16_F - " ssthresh %"U16_F"\n", - pcb->cwnd, pcb->ssthresh)); - - /* The following needs to be called AFTER cwnd is set to one - mss - STJ */ - tcp_rexmit_rto(pcb); - } - } - } - /* Check if this PCB has stayed too long in FIN-WAIT-2 */ - if (pcb->state == FIN_WAIT_2) { - if ((u32_t)(tcp_ticks - pcb->tmr) > - TCP_FIN_WAIT_TIMEOUT / TCP_SLOW_INTERVAL) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in FIN-WAIT-2\n")); - } - } - - /* Check if KEEPALIVE should be sent */ - if((pcb->so_options & SOF_KEEPALIVE) && - ((pcb->state == ESTABLISHED) || - (pcb->state == CLOSE_WAIT))) { -#if LWIP_TCP_KEEPALIVE - if((u32_t)(tcp_ticks - pcb->tmr) > - (pcb->keep_idle + (pcb->keep_cnt*pcb->keep_intvl)) - / TCP_SLOW_INTERVAL) -#else - if((u32_t)(tcp_ticks - pcb->tmr) > - (pcb->keep_idle + TCP_MAXIDLE) / TCP_SLOW_INTERVAL) -#endif /* LWIP_TCP_KEEPALIVE */ - { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: KEEPALIVE timeout. Aborting connection to %"U16_F".%"U16_F".%"U16_F".%"U16_F".\n", - ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip), - ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip))); - - ++pcb_remove; - ++pcb_reset; - } -#if LWIP_TCP_KEEPALIVE - else if((u32_t)(tcp_ticks - pcb->tmr) > - (pcb->keep_idle + pcb->keep_cnt_sent * pcb->keep_intvl) - / TCP_SLOW_INTERVAL) -#else - else if((u32_t)(tcp_ticks - pcb->tmr) > - (pcb->keep_idle + pcb->keep_cnt_sent * TCP_KEEPINTVL_DEFAULT) - / TCP_SLOW_INTERVAL) -#endif /* LWIP_TCP_KEEPALIVE */ - { - tcp_keepalive(pcb); - pcb->keep_cnt_sent++; - } - } - - /* If this PCB has queued out of sequence data, but has been - inactive for too long, will drop the data (it will eventually - be retransmitted). */ -#if TCP_QUEUE_OOSEQ - if (pcb->ooseq != NULL && - (u32_t)tcp_ticks - pcb->tmr >= pcb->rto * TCP_OOSEQ_TIMEOUT) { - tcp_segs_free(pcb->ooseq); - pcb->ooseq = NULL; - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_slowtmr: dropping OOSEQ queued data\n")); - } -#endif /* TCP_QUEUE_OOSEQ */ - - /* Check if this PCB has stayed too long in SYN-RCVD */ - if (pcb->state == SYN_RCVD) { - if ((u32_t)(tcp_ticks - pcb->tmr) > - TCP_SYN_RCVD_TIMEOUT / TCP_SLOW_INTERVAL) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in SYN-RCVD\n")); - } - } - - /* Check if this PCB has stayed too long in LAST-ACK */ - if (pcb->state == LAST_ACK) { - if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) { - ++pcb_remove; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: removing pcb stuck in LAST-ACK\n")); - } - } - - /* If the PCB should be removed, do it. */ - if (pcb_remove) { - tcp_pcb_purge(pcb); - /* Remove PCB from tcp_active_pcbs list. */ - if (prev != NULL) { - LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_active_pcbs", pcb != tcp_active_pcbs); - prev->next = pcb->next; - } else { - /* This PCB was the first. */ - LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_active_pcbs", tcp_active_pcbs == pcb); - tcp_active_pcbs = pcb->next; - } - - TCP_EVENT_ERR(pcb->errf, pcb->callback_arg, ERR_ABRT); - if (pcb_reset) { - tcp_rst(pcb->snd_nxt, pcb->rcv_nxt, &pcb->local_ip, &pcb->remote_ip, - pcb->local_port, pcb->remote_port); - } - - pcb2 = pcb->next; - memp_free(MEMP_TCP_PCB, pcb); - pcb = pcb2; - } else { - - /* We check if we should poll the connection. */ - ++pcb->polltmr; - if (pcb->polltmr >= pcb->pollinterval) { - pcb->polltmr = 0; - LWIP_DEBUGF(TCP_DEBUG, ("tcp_slowtmr: polling application\n")); - TCP_EVENT_POLL(pcb, err); - if (err == ERR_OK) { - tcp_output(pcb); - } - } - - prev = pcb; - pcb = pcb->next; - } - } - - - /* Steps through all of the TIME-WAIT PCBs. */ - prev = NULL; - pcb = tcp_tw_pcbs; - while (pcb != NULL) { - LWIP_ASSERT("tcp_slowtmr: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT); - pcb_remove = 0; - - /* Check if this PCB has stayed long enough in TIME-WAIT */ - if ((u32_t)(tcp_ticks - pcb->tmr) > 2 * TCP_MSL / TCP_SLOW_INTERVAL) { - ++pcb_remove; - } - - - - /* If the PCB should be removed, do it. */ - if (pcb_remove) { - tcp_pcb_purge(pcb); - /* Remove PCB from tcp_tw_pcbs list. */ - if (prev != NULL) { - LWIP_ASSERT("tcp_slowtmr: middle tcp != tcp_tw_pcbs", pcb != tcp_tw_pcbs); - prev->next = pcb->next; - } else { - /* This PCB was the first. */ - LWIP_ASSERT("tcp_slowtmr: first pcb == tcp_tw_pcbs", tcp_tw_pcbs == pcb); - tcp_tw_pcbs = pcb->next; - } - pcb2 = pcb->next; - memp_free(MEMP_TCP_PCB, pcb); - pcb = pcb2; - } else { - prev = pcb; - pcb = pcb->next; - } - } -} - -/** - * Is called every TCP_FAST_INTERVAL (250 ms) and process data previously - * "refused" by upper layer (application) and sends delayed ACKs. - * - * Automatically called from tcp_tmr(). - */ -void -tcp_fasttmr(void) -{ - struct tcp_pcb *pcb; - - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - /* If there is data which was previously "refused" by upper layer */ - if (pcb->refused_data != NULL) { - /* Notify again application with data previously received. */ - err_t err; - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_fasttmr: notify kept packet\n")); - TCP_EVENT_RECV(pcb, pcb->refused_data, ERR_OK, err); - if (err == ERR_OK) { - pcb->refused_data = NULL; - } - } - - /* send delayed ACKs */ - if (pcb->flags & TF_ACK_DELAY) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_fasttmr: delayed ACK\n")); - tcp_ack_now(pcb); - pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); - } - } -} - -/** - * Deallocates a list of TCP segments (tcp_seg structures). - * - * @param seg tcp_seg list of TCP segments to free - * @return the number of pbufs that were deallocated - */ -u8_t -tcp_segs_free(struct tcp_seg *seg) -{ - u8_t count = 0; - struct tcp_seg *next; - while (seg != NULL) { - next = seg->next; - count += tcp_seg_free(seg); - seg = next; - } - return count; -} - -/** - * Frees a TCP segment (tcp_seg structure). - * - * @param seg single tcp_seg to free - * @return the number of pbufs that were deallocated - */ -u8_t -tcp_seg_free(struct tcp_seg *seg) -{ - u8_t count = 0; - - if (seg != NULL) { - if (seg->p != NULL) { - count = pbuf_free(seg->p); -#if TCP_DEBUG - seg->p = NULL; -#endif /* TCP_DEBUG */ - } - memp_free(MEMP_TCP_SEG, seg); - } - return count; -} - -/** - * Sets the priority of a connection. - * - * @param pcb the tcp_pcb to manipulate - * @param prio new priority - */ -void -tcp_setprio(struct tcp_pcb *pcb, u8_t prio) -{ - pcb->prio = prio; -} -#if TCP_QUEUE_OOSEQ - -/** - * Returns a copy of the given TCP segment. - * The pbuf and data are not copied, only the pointers - * - * @param seg the old tcp_seg - * @return a copy of seg - */ -struct tcp_seg * -tcp_seg_copy(struct tcp_seg *seg) -{ - struct tcp_seg *cseg; - - cseg = memp_malloc(MEMP_TCP_SEG); - if (cseg == NULL) { - return NULL; - } - SMEMCPY((u8_t *)cseg, (const u8_t *)seg, sizeof(struct tcp_seg)); - pbuf_ref(cseg->p); - return cseg; -} -#endif - -#if LWIP_CALLBACK_API -/** - * Default receive callback that is called if the user didn't register - * a recv callback for the pcb. - */ -err_t -tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) -{ - LWIP_UNUSED_ARG(arg); - if (p != NULL) { - tcp_recved(pcb, p->tot_len); - pbuf_free(p); - } else if (err == ERR_OK) { - return tcp_close(pcb); - } - return ERR_OK; -} -#endif /* LWIP_CALLBACK_API */ - -/** - * Kills the oldest active connection that has lower priority than prio. - * - * @param prio minimum priority - */ -static void -tcp_kill_prio(u8_t prio) -{ - struct tcp_pcb *pcb, *inactive; - u32_t inactivity; - u8_t mprio; - - - mprio = TCP_PRIO_MAX; - - /* We kill the oldest active connection that has lower priority than prio. */ - inactivity = 0; - inactive = NULL; - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - if (pcb->prio <= prio && - pcb->prio <= mprio && - (u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { - inactivity = tcp_ticks - pcb->tmr; - inactive = pcb; - mprio = pcb->prio; - } - } - if (inactive != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_prio: killing oldest PCB %p (%"S32_F")\n", - (void *)inactive, inactivity)); - tcp_abort(inactive); - } -} - -/** - * Kills the oldest connection that is in TIME_WAIT state. - * Called from tcp_alloc() if no more connections are available. - */ -static void -tcp_kill_timewait(void) -{ - struct tcp_pcb *pcb, *inactive; - u32_t inactivity; - - inactivity = 0; - inactive = NULL; - /* Go through the list of TIME_WAIT pcbs and get the oldest pcb. */ - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - if ((u32_t)(tcp_ticks - pcb->tmr) >= inactivity) { - inactivity = tcp_ticks - pcb->tmr; - inactive = pcb; - } - } - if (inactive != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_kill_timewait: killing oldest TIME-WAIT PCB %p (%"S32_F")\n", - (void *)inactive, inactivity)); - tcp_abort(inactive); - } -} - -/** - * Allocate a new tcp_pcb structure. - * - * @param prio priority for the new pcb - * @return a new tcp_pcb that initially is in state CLOSED - */ -struct tcp_pcb * -tcp_alloc(u8_t prio) -{ - struct tcp_pcb *pcb; - u32_t iss; - - pcb = memp_malloc(MEMP_TCP_PCB); - if (pcb == NULL) { - /* Try killing oldest connection in TIME-WAIT. */ - LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing off oldest TIME-WAIT connection\n")); - tcp_kill_timewait(); - /* Try to allocate a tcp_pcb again. */ - pcb = memp_malloc(MEMP_TCP_PCB); - if (pcb == NULL) { - /* Try killing active connections with lower priority than the new one. */ - LWIP_DEBUGF(TCP_DEBUG, ("tcp_alloc: killing connection with prio lower than %d\n", prio)); - tcp_kill_prio(prio); - /* Try to allocate a tcp_pcb again. */ - pcb = memp_malloc(MEMP_TCP_PCB); - if (pcb != NULL) { - /* adjust err stats: memp_malloc failed twice before */ - MEMP_STATS_DEC(err, MEMP_TCP_PCB); - } - } - if (pcb != NULL) { - /* adjust err stats: timewait PCB was freed above */ - MEMP_STATS_DEC(err, MEMP_TCP_PCB); - } - } - if (pcb != NULL) { - memset(pcb, 0, sizeof(struct tcp_pcb)); - pcb->prio = TCP_PRIO_NORMAL; - pcb->snd_buf = TCP_SND_BUF; - pcb->snd_queuelen = 0; - pcb->rcv_wnd = TCP_WND; - pcb->rcv_ann_wnd = TCP_WND; - pcb->tos = 0; - pcb->ttl = TCP_TTL; - /* As initial send MSS, we use TCP_MSS but limit it to 536. - The send MSS is updated when an MSS option is received. */ - pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS; - pcb->rto = 3000 / TCP_SLOW_INTERVAL; - pcb->sa = 0; - pcb->sv = 3000 / TCP_SLOW_INTERVAL; - pcb->rtime = -1; - pcb->cwnd = 1; - iss = tcp_next_iss(); - pcb->snd_wl2 = iss; - pcb->snd_nxt = iss; - pcb->lastack = iss; - pcb->snd_lbb = iss; - pcb->tmr = tcp_ticks; - - pcb->polltmr = 0; - -#if LWIP_CALLBACK_API - pcb->recv = tcp_recv_null; -#endif /* LWIP_CALLBACK_API */ - - /* Init KEEPALIVE timer */ - pcb->keep_idle = TCP_KEEPIDLE_DEFAULT; - -#if LWIP_TCP_KEEPALIVE - pcb->keep_intvl = TCP_KEEPINTVL_DEFAULT; - pcb->keep_cnt = TCP_KEEPCNT_DEFAULT; -#endif /* LWIP_TCP_KEEPALIVE */ - - pcb->keep_cnt_sent = 0; - } - return pcb; -} - -/** - * Creates a new TCP protocol control block but doesn't place it on - * any of the TCP PCB lists. - * The pcb is not put on any list until binding using tcp_bind(). - * - * @internal: Maybe there should be a idle TCP PCB list where these - * PCBs are put on. Port reservation using tcp_bind() is implemented but - * allocated pcbs that are not bound can't be killed automatically if wanting - * to allocate a pcb with higher prio (@see tcp_kill_prio()) - * - * @return a new tcp_pcb that initially is in state CLOSED - */ -struct tcp_pcb * -tcp_new(void) -{ - return tcp_alloc(TCP_PRIO_NORMAL); -} - -/** - * Used to specify the argument that should be passed callback - * functions. - * - * @param pcb tcp_pcb to set the callback argument - * @param arg void pointer argument to pass to callback functions - */ -void -tcp_arg(struct tcp_pcb *pcb, void *arg) -{ - pcb->callback_arg = arg; -} -#if LWIP_CALLBACK_API - -/** - * Used to specify the function that should be called when a TCP - * connection receives data. - * - * @param pcb tcp_pcb to set the recv callback - * @param recv callback function to call for this pcb when data is received - */ -void -tcp_recv(struct tcp_pcb *pcb, - err_t (* recv)(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err)) -{ - pcb->recv = recv; -} - -/** - * Used to specify the function that should be called when TCP data - * has been successfully delivered to the remote host. - * - * @param pcb tcp_pcb to set the sent callback - * @param sent callback function to call for this pcb when data is successfully sent - */ -void -tcp_sent(struct tcp_pcb *pcb, - err_t (* sent)(void *arg, struct tcp_pcb *tpcb, u16_t len)) -{ - pcb->sent = sent; -} - -/** - * Used to specify the function that should be called when a fatal error - * has occured on the connection. - * - * @param pcb tcp_pcb to set the err callback - * @param errf callback function to call for this pcb when a fatal error - * has occured on the connection - */ -void -tcp_err(struct tcp_pcb *pcb, - void (* errf)(void *arg, err_t err)) -{ - pcb->errf = errf; -} - -/** - * Used for specifying the function that should be called when a - * LISTENing connection has been connected to another host. - * - * @param pcb tcp_pcb to set the accept callback - * @param accept callback function to call for this pcb when LISTENing - * connection has been connected to another host - */ -void -tcp_accept(struct tcp_pcb *pcb, - err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err)) -{ - pcb->accept = accept; -} -#endif /* LWIP_CALLBACK_API */ - - -/** - * Used to specify the function that should be called periodically - * from TCP. The interval is specified in terms of the TCP coarse - * timer interval, which is called twice a second. - * - */ -void -tcp_poll(struct tcp_pcb *pcb, - err_t (* poll)(void *arg, struct tcp_pcb *tpcb), u8_t interval) -{ -#if LWIP_CALLBACK_API - pcb->poll = poll; -#endif /* LWIP_CALLBACK_API */ - pcb->pollinterval = interval; -} - -/** - * Purges a TCP PCB. Removes any buffered data and frees the buffer memory - * (pcb->ooseq, pcb->unsent and pcb->unacked are freed). - * - * @param pcb tcp_pcb to purge. The pcb itself is not deallocated! - */ -void -tcp_pcb_purge(struct tcp_pcb *pcb) -{ - if (pcb->state != CLOSED && - pcb->state != TIME_WAIT && - pcb->state != LISTEN) { - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge\n")); - -#if TCP_LISTEN_BACKLOG - if (pcb->state == SYN_RCVD) { - /* Need to find the corresponding listen_pcb and decrease its accepts_pending */ - struct tcp_pcb_listen *lpcb; - LWIP_ASSERT("tcp_pcb_purge: pcb->state == SYN_RCVD but tcp_listen_pcbs is NULL", - tcp_listen_pcbs.listen_pcbs != NULL); - for (lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - if ((lpcb->local_port == pcb->local_port) && - (ip_addr_isany(&lpcb->local_ip) || - ip_addr_cmp(&pcb->local_ip, &lpcb->local_ip))) { - /* port and address of the listen pcb match the timed-out pcb */ - LWIP_ASSERT("tcp_pcb_purge: listen pcb does not have accepts pending", - lpcb->accepts_pending > 0); - lpcb->accepts_pending--; - break; - } - } - } -#endif /* TCP_LISTEN_BACKLOG */ - - - if (pcb->refused_data != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->refused_data\n")); - pbuf_free(pcb->refused_data); - pcb->refused_data = NULL; - } - if (pcb->unsent != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: not all data sent\n")); - } - if (pcb->unacked != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->unacked\n")); - } -#if TCP_QUEUE_OOSEQ /* LW */ - if (pcb->ooseq != NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_pcb_purge: data left on ->ooseq\n")); - } - - /* Stop the retransmission timer as it will expect data on unacked - queue if it fires */ - pcb->rtime = -1; - - tcp_segs_free(pcb->ooseq); - pcb->ooseq = NULL; -#endif /* TCP_QUEUE_OOSEQ */ - tcp_segs_free(pcb->unsent); - tcp_segs_free(pcb->unacked); - pcb->unacked = pcb->unsent = NULL; - } -} - -/** - * Purges the PCB and removes it from a PCB list. Any delayed ACKs are sent first. - * - * @param pcblist PCB list to purge. - * @param pcb tcp_pcb to purge. The pcb itself is NOT deallocated! - */ -void -tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb) -{ - TCP_RMV(pcblist, pcb); - - tcp_pcb_purge(pcb); - - /* if there is an outstanding delayed ACKs, send it */ - if (pcb->state != TIME_WAIT && - pcb->state != LISTEN && - pcb->flags & TF_ACK_DELAY) { - pcb->flags |= TF_ACK_NOW; - tcp_output(pcb); - } - - if (pcb->state != LISTEN) { - LWIP_ASSERT("unsent segments leaking", pcb->unsent == NULL); - LWIP_ASSERT("unacked segments leaking", pcb->unacked == NULL); -#if TCP_QUEUE_OOSEQ - LWIP_ASSERT("ooseq segments leaking", pcb->ooseq == NULL); -#endif /* TCP_QUEUE_OOSEQ */ - } - - pcb->state = CLOSED; - - LWIP_ASSERT("tcp_pcb_remove: tcp_pcbs_sane()", tcp_pcbs_sane()); -} - -/** - * Calculates a new initial sequence number for new connections. - * - * @return u32_t pseudo random sequence number - */ -u32_t -tcp_next_iss(void) -{ - static u32_t iss = 6510; - - iss += tcp_ticks; /* XXX */ - return iss; -} - -#if TCP_CALCULATE_EFF_SEND_MSS -/** - * Calcluates the effective send mss that can be used for a specific IP address - * by using ip_route to determin the netif used to send to the address and - * calculating the minimum of TCP_MSS and that netif's mtu (if set). - */ -u16_t -tcp_eff_send_mss(u16_t sendmss, struct ip_addr *addr) -{ - u16_t mss_s; - struct netif *outif; - - outif = ip_route(addr); - if ((outif != NULL) && (outif->mtu != 0)) { - mss_s = outif->mtu - IP_HLEN - TCP_HLEN; - /* RFC 1122, chap 4.2.2.6: - * Eff.snd.MSS = min(SendMSS+20, MMS_S) - TCPhdrsize - IPoptionsize - * We correct for TCP options in tcp_enqueue(), and don't support - * IP options - */ - sendmss = LWIP_MIN(sendmss, mss_s); - } - return sendmss; -} -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - -const char* -tcp_debug_state_str(enum tcp_state s) -{ - return tcp_state_str[s]; -} - -#if TCP_DEBUG || TCP_INPUT_DEBUG || TCP_OUTPUT_DEBUG -/** - * Print a tcp header for debugging purposes. - * - * @param tcphdr pointer to a struct tcp_hdr - */ -void -tcp_debug_print(struct tcp_hdr *tcphdr) -{ - LWIP_DEBUGF(TCP_DEBUG, ("TCP header:\n")); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| %5"U16_F" | %5"U16_F" | (src port, dest port)\n", - ntohs(tcphdr->src), ntohs(tcphdr->dest))); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| %010"U32_F" | (seq no)\n", - ntohl(tcphdr->seqno))); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| %010"U32_F" | (ack no)\n", - ntohl(tcphdr->ackno))); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| %2"U16_F" | |%"U16_F"%"U16_F"%"U16_F"%"U16_F"%"U16_F"%"U16_F"| %5"U16_F" | (hdrlen, flags (", - TCPH_HDRLEN(tcphdr), - TCPH_FLAGS(tcphdr) >> 5 & 1, - TCPH_FLAGS(tcphdr) >> 4 & 1, - TCPH_FLAGS(tcphdr) >> 3 & 1, - TCPH_FLAGS(tcphdr) >> 2 & 1, - TCPH_FLAGS(tcphdr) >> 1 & 1, - TCPH_FLAGS(tcphdr) & 1, - ntohs(tcphdr->wnd))); - tcp_debug_print_flags(TCPH_FLAGS(tcphdr)); - LWIP_DEBUGF(TCP_DEBUG, ("), win)\n")); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(TCP_DEBUG, ("| 0x%04"X16_F" | %5"U16_F" | (chksum, urgp)\n", - ntohs(tcphdr->chksum), ntohs(tcphdr->urgp))); - LWIP_DEBUGF(TCP_DEBUG, ("+-------------------------------+\n")); -} - -/** - * Print a tcp state for debugging purposes. - * - * @param s enum tcp_state to print - */ -void -tcp_debug_print_state(enum tcp_state s) -{ - LWIP_DEBUGF(TCP_DEBUG, ("State: %s\n", tcp_state_str[s])); -} - -/** - * Print tcp flags for debugging purposes. - * - * @param flags tcp flags, all active flags are printed - */ -void -tcp_debug_print_flags(u8_t flags) -{ - if (flags & TCP_FIN) { - LWIP_DEBUGF(TCP_DEBUG, ("FIN ")); - } - if (flags & TCP_SYN) { - LWIP_DEBUGF(TCP_DEBUG, ("SYN ")); - } - if (flags & TCP_RST) { - LWIP_DEBUGF(TCP_DEBUG, ("RST ")); - } - if (flags & TCP_PSH) { - LWIP_DEBUGF(TCP_DEBUG, ("PSH ")); - } - if (flags & TCP_ACK) { - LWIP_DEBUGF(TCP_DEBUG, ("ACK ")); - } - if (flags & TCP_URG) { - LWIP_DEBUGF(TCP_DEBUG, ("URG ")); - } - if (flags & TCP_ECE) { - LWIP_DEBUGF(TCP_DEBUG, ("ECE ")); - } - if (flags & TCP_CWR) { - LWIP_DEBUGF(TCP_DEBUG, ("CWR ")); - } - LWIP_DEBUGF(TCP_DEBUG, ("\n")); -} - -/** - * Print all tcp_pcbs in every list for debugging purposes. - */ -void -tcp_debug_print_pcbs(void) -{ - struct tcp_pcb *pcb; - LWIP_DEBUGF(TCP_DEBUG, ("Active PCB states:\n")); - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_DEBUGF(TCP_DEBUG, ("[%p]Local port %"U16_F", foreign port %"U16_F" snd_nxt %"U32_F" rcv_nxt %"U32_F" ", - pcb, pcb->local_port, pcb->remote_port, - pcb->snd_nxt, pcb->rcv_nxt)); - tcp_debug_print_state(pcb->state); - } - LWIP_DEBUGF(TCP_DEBUG, ("Listen PCB states:\n")); - for(pcb = (struct tcp_pcb *)tcp_listen_pcbs.pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_DEBUGF(TCP_DEBUG, ("[%p]Local port %"U16_F", foreign port %"U16_F" snd_nxt %"U32_F" rcv_nxt %"U32_F" ", - pcb, pcb->local_port, pcb->remote_port, - pcb->snd_nxt, pcb->rcv_nxt)); - tcp_debug_print_state(pcb->state); - } - LWIP_DEBUGF(TCP_DEBUG, ("TIME-WAIT PCB states:\n")); - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_DEBUGF(TCP_DEBUG, ("[%p]Local port %"U16_F", foreign port %"U16_F" snd_nxt %"U32_F" rcv_nxt %"U32_F" ", - pcb, pcb->local_port, pcb->remote_port, - pcb->snd_nxt, pcb->rcv_nxt)); - tcp_debug_print_state(pcb->state); - } -} - -/** - * Check state consistency of the tcp_pcb lists. - */ -s16_t -tcp_pcbs_sane(void) -{ - struct tcp_pcb *pcb; - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_ASSERT("tcp_pcbs_sane: active pcb->state != CLOSED", pcb->state != CLOSED); - LWIP_ASSERT("tcp_pcbs_sane: active pcb->state != LISTEN", pcb->state != LISTEN); - LWIP_ASSERT("tcp_pcbs_sane: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT); - } - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_ASSERT("tcp_pcbs_sane: tw pcb->state == TIME-WAIT", pcb->state == TIME_WAIT); - } - return 1; -} -#endif /* TCP_DEBUG */ - -#endif /* LWIP_TCP */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_in.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_in.c deleted file mode 100644 index 3930b40f6d6..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_in.c +++ /dev/null @@ -1,1508 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Transmission Control Protocol, incoming traffic - * - * The input processing functions of the TCP layer. - * - * These functions are generally called in the order (ip_input() ->) - * tcp_input() -> * tcp_process() -> tcp_receive() (-> application). - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/tcp.h" -#include "lwip/def.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "arch/perf.h" - -/* These variables are global to all functions involved in the input - processing of TCP segments. They are set by the tcp_input() - function. */ -static struct tcp_seg inseg; -static struct tcp_hdr *tcphdr; -static struct ip_hdr *iphdr; -static u32_t seqno, ackno; -static u8_t flags; -static u16_t tcplen; - -static u8_t recv_flags; -static struct pbuf *recv_data; - -struct tcp_pcb *tcp_input_pcb; - -/* Forward declarations. */ -static err_t tcp_process(struct tcp_pcb *pcb); -static void tcp_receive(struct tcp_pcb *pcb); -static void tcp_parseopt(struct tcp_pcb *pcb); - -static err_t tcp_listen_input(struct tcp_pcb_listen *pcb); -static err_t tcp_timewait_input(struct tcp_pcb *pcb); - -/** - * The initial input processing of TCP. It verifies the TCP header, demultiplexes - * the segment between the PCBs and passes it on to tcp_process(), which implements - * the TCP finite state machine. This function is called by the IP layer (in - * ip_input()). - * - * @param p received TCP segment to process (p->payload pointing to the IP header) - * @param inp network interface on which this segment was received - */ -void -tcp_input(struct pbuf *p, struct netif *inp) -{ - struct tcp_pcb *pcb, *prev; - struct tcp_pcb_listen *lpcb; - u8_t hdrlen; - err_t err; - - PERF_START; - - TCP_STATS_INC(tcp.recv); - snmp_inc_tcpinsegs(); - - iphdr = p->payload; - tcphdr = (struct tcp_hdr *)((u8_t *)p->payload + IPH_HL(iphdr) * 4); - -#if TCP_INPUT_DEBUG - tcp_debug_print(tcphdr); -#endif - - /* remove header from payload */ - if (pbuf_header(p, -((s16_t)(IPH_HL(iphdr) * 4))) || (p->tot_len < sizeof(struct tcp_hdr))) { - /* drop short packets */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: short packet (%"U16_F" bytes) discarded\n", p->tot_len)); - TCP_STATS_INC(tcp.lenerr); - TCP_STATS_INC(tcp.drop); - snmp_inc_tcpinerrs(); - pbuf_free(p); - return; - } - - /* Don't even process incoming broadcasts/multicasts. */ - if (ip_addr_isbroadcast(&(iphdr->dest), inp) || - ip_addr_ismulticast(&(iphdr->dest))) { - TCP_STATS_INC(tcp.proterr); - TCP_STATS_INC(tcp.drop); - snmp_inc_tcpinerrs(); - pbuf_free(p); - return; - } - -#if CHECKSUM_CHECK_TCP - /* Verify TCP checksum. */ - if (inet_chksum_pseudo(p, (struct ip_addr *)&(iphdr->src), - (struct ip_addr *)&(iphdr->dest), - IP_PROTO_TCP, p->tot_len) != 0) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packet discarded due to failing checksum 0x%04"X16_F"\n", - inet_chksum_pseudo(p, (struct ip_addr *)&(iphdr->src), (struct ip_addr *)&(iphdr->dest), - IP_PROTO_TCP, p->tot_len))); -#if TCP_DEBUG - tcp_debug_print(tcphdr); -#endif /* TCP_DEBUG */ - TCP_STATS_INC(tcp.chkerr); - TCP_STATS_INC(tcp.drop); - snmp_inc_tcpinerrs(); - pbuf_free(p); - return; - } -#endif - - /* Move the payload pointer in the pbuf so that it points to the - TCP data instead of the TCP header. */ - hdrlen = TCPH_HDRLEN(tcphdr); - if(pbuf_header(p, -(hdrlen * 4))){ - /* drop short packets */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: short packet\n")); - TCP_STATS_INC(tcp.lenerr); - TCP_STATS_INC(tcp.drop); - snmp_inc_tcpinerrs(); - pbuf_free(p); - return; - } - - /* Convert fields in TCP header to host byte order. */ - tcphdr->src = ntohs(tcphdr->src); - tcphdr->dest = ntohs(tcphdr->dest); - seqno = tcphdr->seqno = ntohl(tcphdr->seqno); - ackno = tcphdr->ackno = ntohl(tcphdr->ackno); - tcphdr->wnd = ntohs(tcphdr->wnd); - - flags = TCPH_FLAGS(tcphdr); - tcplen = p->tot_len + ((flags & (TCP_FIN | TCP_SYN)) ? 1 : 0); - - /* Demultiplex an incoming segment. First, we check if it is destined - for an active connection. */ - prev = NULL; - - - for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_ASSERT("tcp_input: active pcb->state != CLOSED", pcb->state != CLOSED); - LWIP_ASSERT("tcp_input: active pcb->state != TIME-WAIT", pcb->state != TIME_WAIT); - LWIP_ASSERT("tcp_input: active pcb->state != LISTEN", pcb->state != LISTEN); - if (pcb->remote_port == tcphdr->src && - pcb->local_port == tcphdr->dest && - ip_addr_cmp(&(pcb->remote_ip), &(iphdr->src)) && - ip_addr_cmp(&(pcb->local_ip), &(iphdr->dest))) { - - /* Move this PCB to the front of the list so that subsequent - lookups will be faster (we exploit locality in TCP segment - arrivals). */ - LWIP_ASSERT("tcp_input: pcb->next != pcb (before cache)", pcb->next != pcb); - if (prev != NULL) { - prev->next = pcb->next; - pcb->next = tcp_active_pcbs; - tcp_active_pcbs = pcb; - } - LWIP_ASSERT("tcp_input: pcb->next != pcb (after cache)", pcb->next != pcb); - break; - } - prev = pcb; - } - - if (pcb == NULL) { - /* If it did not go to an active connection, we check the connections - in the TIME-WAIT state. */ - for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) { - LWIP_ASSERT("tcp_input: TIME-WAIT pcb->state == TIME-WAIT", pcb->state == TIME_WAIT); - if (pcb->remote_port == tcphdr->src && - pcb->local_port == tcphdr->dest && - ip_addr_cmp(&(pcb->remote_ip), &(iphdr->src)) && - ip_addr_cmp(&(pcb->local_ip), &(iphdr->dest))) { - /* We don't really care enough to move this PCB to the front - of the list since we are not very likely to receive that - many segments for connections in TIME-WAIT. */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packed for TIME_WAITing connection.\n")); - tcp_timewait_input(pcb); - pbuf_free(p); - return; - } - } - - /* Finally, if we still did not get a match, we check all PCBs that - are LISTENing for incoming connections. */ - prev = NULL; - for(lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) { - if ((ip_addr_isany(&(lpcb->local_ip)) || - ip_addr_cmp(&(lpcb->local_ip), &(iphdr->dest))) && - lpcb->local_port == tcphdr->dest) { - /* Move this PCB to the front of the list so that subsequent - lookups will be faster (we exploit locality in TCP segment - arrivals). */ - if (prev != NULL) { - ((struct tcp_pcb_listen *)prev)->next = lpcb->next; - /* our successor is the remainder of the listening list */ - lpcb->next = tcp_listen_pcbs.listen_pcbs; - /* put this listening pcb at the head of the listening list */ - tcp_listen_pcbs.listen_pcbs = lpcb; - } - - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packed for LISTENing connection.\n")); - tcp_listen_input(lpcb); - pbuf_free(p); - return; - } - prev = (struct tcp_pcb *)lpcb; - } - } - -#if TCP_INPUT_DEBUG - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags ")); - tcp_debug_print_flags(TCPH_FLAGS(tcphdr)); - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("-+-+-+-+-+-+-+-+-+-+-+-+-+-+\n")); -#endif /* TCP_INPUT_DEBUG */ - - - if (pcb != NULL) { - /* The incoming segment belongs to a connection. */ -#if TCP_INPUT_DEBUG -#if TCP_DEBUG - tcp_debug_print_state(pcb->state); -#endif /* TCP_DEBUG */ -#endif /* TCP_INPUT_DEBUG */ - - /* Set up a tcp_seg structure. */ - inseg.next = NULL; - inseg.len = p->tot_len; - inseg.dataptr = p->payload; - inseg.p = p; - inseg.tcphdr = tcphdr; - - recv_data = NULL; - recv_flags = 0; - - /* If there is data which was previously "refused" by upper layer */ - if (pcb->refused_data != NULL) { - /* Notify again application with data previously received. */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: notify kept packet\n")); - TCP_EVENT_RECV(pcb, pcb->refused_data, ERR_OK, err); - if (err == ERR_OK) { - pcb->refused_data = NULL; - } else { - /* drop incoming packets, because pcb is "full" */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: drop incoming packets, because pcb is \"full\"\n")); - TCP_STATS_INC(tcp.drop); - snmp_inc_tcpinerrs(); - pbuf_free(p); - return; - } - } - tcp_input_pcb = pcb; - err = tcp_process(pcb); - /* A return value of ERR_ABRT means that tcp_abort() was called - and that the pcb has been freed. If so, we don't do anything. */ - if (err != ERR_ABRT) { - if (recv_flags & TF_RESET) { - /* TF_RESET means that the connection was reset by the other - end. We then call the error callback to inform the - application that the connection is dead before we - deallocate the PCB. */ - TCP_EVENT_ERR(pcb->errf, pcb->callback_arg, ERR_RST); - tcp_pcb_remove(&tcp_active_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - } else if (recv_flags & TF_CLOSED) { - /* The connection has been closed and we will deallocate the - PCB. */ - tcp_pcb_remove(&tcp_active_pcbs, pcb); - memp_free(MEMP_TCP_PCB, pcb); - } else { - err = ERR_OK; - /* If the application has registered a "sent" function to be - called when new send buffer space is available, we call it - now. */ - if (pcb->acked > 0) { - TCP_EVENT_SENT(pcb, pcb->acked, err); - } - - if (recv_data != NULL) { - if(flags & TCP_PSH) { - recv_data->flags |= PBUF_FLAG_PUSH; - } - - /* Notify application that data has been received. */ - TCP_EVENT_RECV(pcb, recv_data, ERR_OK, err); - - /* If the upper layer can't receive this data, store it */ - if (err != ERR_OK) { - pcb->refused_data = recv_data; - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: keep incoming packet, because pcb is \"full\"\n")); - } - } - - /* If a FIN segment was received, we call the callback - function with a NULL buffer to indicate EOF. */ - if (recv_flags & TF_GOT_FIN) { - TCP_EVENT_RECV(pcb, NULL, ERR_OK, err); - } - - tcp_input_pcb = NULL; - /* Try to send something out. */ - tcp_output(pcb); -#if TCP_INPUT_DEBUG -#if TCP_DEBUG - tcp_debug_print_state(pcb->state); -#endif /* TCP_DEBUG */ -#endif /* TCP_INPUT_DEBUG */ - } - } - tcp_input_pcb = NULL; - - - /* give up our reference to inseg.p */ - if (inseg.p != NULL) - { - pbuf_free(inseg.p); - inseg.p = NULL; - } - } else { - - /* If no matching PCB was found, send a TCP RST (reset) to the - sender. */ - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_input: no PCB match found, resetting.\n")); - if (!(TCPH_FLAGS(tcphdr) & TCP_RST)) { - TCP_STATS_INC(tcp.proterr); - TCP_STATS_INC(tcp.drop); - tcp_rst(ackno, seqno + tcplen, - &(iphdr->dest), &(iphdr->src), - tcphdr->dest, tcphdr->src); - } - pbuf_free(p); - } - - LWIP_ASSERT("tcp_input: tcp_pcbs_sane()", tcp_pcbs_sane()); - PERF_STOP("tcp_input"); -} - -/** - * Called by tcp_input() when a segment arrives for a listening - * connection (from tcp_input()). - * - * @param pcb the tcp_pcb_listen for which a segment arrived - * @return ERR_OK if the segment was processed - * another err_t on error - * - * @note the return value is not (yet?) used in tcp_input() - * @note the segment which arrived is saved in global variables, therefore only the pcb - * involved is passed as a parameter to this function - */ -static err_t -tcp_listen_input(struct tcp_pcb_listen *pcb) -{ - struct tcp_pcb *npcb; - err_t rc; - - /* In the LISTEN state, we check for incoming SYN segments, - creates a new PCB, and responds with a SYN|ACK. */ - if (flags & TCP_ACK) { - /* For incoming segments with the ACK flag set, respond with a - RST. */ - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_listen_input: ACK in LISTEN, sending reset\n")); - tcp_rst(ackno + 1, seqno + tcplen, - &(iphdr->dest), &(iphdr->src), - tcphdr->dest, tcphdr->src); - } else if (flags & TCP_SYN) { - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection request %"U16_F" -> %"U16_F".\n", tcphdr->src, tcphdr->dest)); -#if TCP_LISTEN_BACKLOG - if (pcb->accepts_pending >= pcb->backlog) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_listen_input: listen backlog exceeded for port %"U16_F"\n", tcphdr->dest)); - return ERR_ABRT; - } -#endif /* TCP_LISTEN_BACKLOG */ - npcb = tcp_alloc(pcb->prio); - /* If a new PCB could not be created (probably due to lack of memory), - we don't do anything, but rely on the sender will retransmit the - SYN at a time when we have more memory available. */ - if (npcb == NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_listen_input: could not allocate PCB\n")); - TCP_STATS_INC(tcp.memerr); - return ERR_MEM; - } -#if TCP_LISTEN_BACKLOG - pcb->accepts_pending++; -#endif /* TCP_LISTEN_BACKLOG */ - /* Set up the new PCB. */ - ip_addr_set(&(npcb->local_ip), &(iphdr->dest)); - npcb->local_port = pcb->local_port; - ip_addr_set(&(npcb->remote_ip), &(iphdr->src)); - npcb->remote_port = tcphdr->src; - npcb->state = SYN_RCVD; - npcb->rcv_nxt = seqno + 1; - npcb->rcv_ann_right_edge = npcb->rcv_nxt; - npcb->snd_wnd = tcphdr->wnd; - npcb->ssthresh = npcb->snd_wnd; - npcb->snd_wl1 = seqno - 1;/* initialise to seqno-1 to force window update */ - npcb->callback_arg = pcb->callback_arg; -#if LWIP_CALLBACK_API - npcb->accept = pcb->accept; -#endif /* LWIP_CALLBACK_API */ - /* inherit socket options */ - npcb->so_options = pcb->so_options & (SOF_DEBUG|SOF_DONTROUTE|SOF_KEEPALIVE|SOF_OOBINLINE|SOF_LINGER); - /* Register the new PCB so that we can begin receiving segments - for it. */ - TCP_REG(&tcp_active_pcbs, npcb); - - /* Parse any options in the SYN. */ - tcp_parseopt(npcb); -#if TCP_CALCULATE_EFF_SEND_MSS - npcb->mss = tcp_eff_send_mss(npcb->mss, &(npcb->remote_ip)); -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - - snmp_inc_tcppassiveopens(); - - /* Send a SYN|ACK together with the MSS option. */ - rc = tcp_enqueue(npcb, NULL, 0, TCP_SYN | TCP_ACK, 0, TF_SEG_OPTS_MSS -#if LWIP_TCP_TIMESTAMPS - /* and maybe include the TIMESTAMP option */ - | (npcb->flags & TF_TIMESTAMP ? TF_SEG_OPTS_TS : 0) -#endif - ); - if (rc != ERR_OK) { - tcp_abandon(npcb, 0); - return rc; - } - return tcp_output(npcb); - } - return ERR_OK; -} - -/** - * Called by tcp_input() when a segment arrives for a connection in - * TIME_WAIT. - * - * @param pcb the tcp_pcb for which a segment arrived - * - * @note the segment which arrived is saved in global variables, therefore only the pcb - * involved is passed as a parameter to this function - */ -static err_t -tcp_timewait_input(struct tcp_pcb *pcb) -{ - /* RFC 1337: in TIME_WAIT, ignore RST and ACK FINs + any 'acceptable' segments */ - /* RFC 793 3.9 Event Processing - Segment Arrives: - * - first check sequence number - we skip that one in TIME_WAIT (always - * acceptable since we only send ACKs) - * - second check the RST bit (... return) */ - if (flags & TCP_RST) { - return ERR_OK; - } - /* - fourth, check the SYN bit, */ - if (flags & TCP_SYN) { - /* If an incoming segment is not acceptable, an acknowledgment - should be sent in reply */ - if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt+pcb->rcv_wnd)) { - /* If the SYN is in the window it is an error, send a reset */ - tcp_rst(ackno, seqno + tcplen, &(iphdr->dest), &(iphdr->src), - tcphdr->dest, tcphdr->src); - return ERR_OK; - } - } else if (flags & TCP_FIN) { - /* - eighth, check the FIN bit: Remain in the TIME-WAIT state. - Restart the 2 MSL time-wait timeout.*/ - pcb->tmr = tcp_ticks; - } - - if ((tcplen > 0)) { - /* Acknowledge data, FIN or out-of-window SYN */ - pcb->flags |= TF_ACK_NOW; - return tcp_output(pcb); - } - return ERR_OK; -} - -/** - * Implements the TCP state machine. Called by tcp_input. In some - * states tcp_receive() is called to receive data. The tcp_seg - * argument will be freed by the caller (tcp_input()) unless the - * recv_data pointer in the pcb is set. - * - * @param pcb the tcp_pcb for which a segment arrived - * - * @note the segment which arrived is saved in global variables, therefore only the pcb - * involved is passed as a parameter to this function - */ -static err_t -tcp_process(struct tcp_pcb *pcb) -{ - struct tcp_seg *rseg; - u8_t acceptable = 0; - err_t err; - - err = ERR_OK; - - /* Process incoming RST segments. */ - if (flags & TCP_RST) { - /* First, determine if the reset is acceptable. */ - if (pcb->state == SYN_SENT) { - if (ackno == pcb->snd_nxt) { - acceptable = 1; - } - } else { - if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, - pcb->rcv_nxt+pcb->rcv_wnd)) { - acceptable = 1; - } - } - - if (acceptable) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: Connection RESET\n")); - LWIP_ASSERT("tcp_input: pcb->state != CLOSED", pcb->state != CLOSED); - recv_flags |= TF_RESET; - pcb->flags &= ~TF_ACK_DELAY; - return ERR_RST; - } else { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_process: unacceptable reset seqno %"U32_F" rcv_nxt %"U32_F"\n", - seqno, pcb->rcv_nxt)); - LWIP_DEBUGF(TCP_DEBUG, ("tcp_process: unacceptable reset seqno %"U32_F" rcv_nxt %"U32_F"\n", - seqno, pcb->rcv_nxt)); - return ERR_OK; - } - } - - if ((flags & TCP_SYN) && (pcb->state != SYN_SENT && pcb->state != SYN_RCVD)) { - /* Cope with new connection attempt after remote end crashed */ - tcp_ack_now(pcb); - return ERR_OK; - } - - /* Update the PCB (in)activity timer. */ - pcb->tmr = tcp_ticks; - pcb->keep_cnt_sent = 0; - - tcp_parseopt(pcb); - - /* Do different things depending on the TCP state. */ - switch (pcb->state) { - case SYN_SENT: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("SYN-SENT: ackno %"U32_F" pcb->snd_nxt %"U32_F" unacked %"U32_F"\n", ackno, - pcb->snd_nxt, ntohl(pcb->unacked->tcphdr->seqno))); - /* received SYN ACK with expected sequence number? */ - if ((flags & TCP_ACK) && (flags & TCP_SYN) - && ackno == ntohl(pcb->unacked->tcphdr->seqno) + 1) { - pcb->snd_buf++; - pcb->rcv_nxt = seqno + 1; - pcb->rcv_ann_right_edge = pcb->rcv_nxt; - pcb->lastack = ackno; - pcb->snd_wnd = tcphdr->wnd; - pcb->snd_wl1 = seqno - 1; /* initialise to seqno - 1 to force window update */ - pcb->state = ESTABLISHED; - -#if TCP_CALCULATE_EFF_SEND_MSS - pcb->mss = tcp_eff_send_mss(pcb->mss, &(pcb->remote_ip)); -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - - /* Set ssthresh again after changing pcb->mss (already set in tcp_connect - * but for the default value of pcb->mss) */ - pcb->ssthresh = pcb->mss * 10; - - pcb->cwnd = ((pcb->cwnd == 1) ? (pcb->mss * 2) : pcb->mss); - LWIP_ASSERT("pcb->snd_queuelen > 0", (pcb->snd_queuelen > 0)); - --pcb->snd_queuelen; - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_process: SYN-SENT --queuelen %"U16_F"\n", (u16_t)pcb->snd_queuelen)); - rseg = pcb->unacked; - pcb->unacked = rseg->next; - - /* If there's nothing left to acknowledge, stop the retransmit - timer, otherwise reset it to start again */ - if(pcb->unacked == NULL) - pcb->rtime = -1; - else { - pcb->rtime = 0; - pcb->nrtx = 0; - } - - tcp_seg_free(rseg); - - /* Call the user specified function to call when sucessfully - * connected. */ - TCP_EVENT_CONNECTED(pcb, ERR_OK, err); - tcp_ack_now(pcb); - } - /* received ACK? possibly a half-open connection */ - else if (flags & TCP_ACK) { - /* send a RST to bring the other side in a non-synchronized state. */ - tcp_rst(ackno, seqno + tcplen, &(iphdr->dest), &(iphdr->src), - tcphdr->dest, tcphdr->src); - } - break; - case SYN_RCVD: - if (flags & TCP_ACK) { - /* expected ACK number? */ - if (TCP_SEQ_BETWEEN(ackno, pcb->lastack+1, pcb->snd_nxt)) { - u16_t old_cwnd; - pcb->state = ESTABLISHED; - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection established %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); -#if LWIP_CALLBACK_API - LWIP_ASSERT("pcb->accept != NULL", pcb->accept != NULL); -#endif - /* Call the accept function. */ - TCP_EVENT_ACCEPT(pcb, ERR_OK, err); - if (err != ERR_OK) { - /* If the accept function returns with an error, we abort - * the connection. */ - tcp_abort(pcb); - return ERR_ABRT; - } - old_cwnd = pcb->cwnd; - /* If there was any data contained within this ACK, - * we'd better pass it on to the application as well. */ - tcp_receive(pcb); - - /* Prevent ACK for SYN to generate a sent event */ - if (pcb->acked != 0) { - pcb->acked--; - } - - pcb->cwnd = ((old_cwnd == 1) ? (pcb->mss * 2) : pcb->mss); - - if (recv_flags & TF_GOT_FIN) { - tcp_ack_now(pcb); - pcb->state = CLOSE_WAIT; - } - } - /* incorrect ACK number */ - else { - /* send RST */ - tcp_rst(ackno, seqno + tcplen, &(iphdr->dest), &(iphdr->src), - tcphdr->dest, tcphdr->src); - } - } else if ((flags & TCP_SYN) && (seqno == pcb->rcv_nxt - 1)) { - /* Looks like another copy of the SYN - retransmit our SYN-ACK */ - tcp_rexmit(pcb); - } - break; - case CLOSE_WAIT: - /* FALLTHROUGH */ - case ESTABLISHED: - tcp_receive(pcb); - if (recv_flags & TF_GOT_FIN) { /* passive close */ - tcp_ack_now(pcb); - pcb->state = CLOSE_WAIT; - } - break; - case FIN_WAIT_1: - tcp_receive(pcb); - if (recv_flags & TF_GOT_FIN) { - if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) { - LWIP_DEBUGF(TCP_DEBUG, - ("TCP connection closed: FIN_WAIT_1 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - tcp_ack_now(pcb); - tcp_pcb_purge(pcb); - TCP_RMV(&tcp_active_pcbs, pcb); - pcb->state = TIME_WAIT; - TCP_REG(&tcp_tw_pcbs, pcb); - } else { - tcp_ack_now(pcb); - pcb->state = CLOSING; - } - } else if ((flags & TCP_ACK) && (ackno == pcb->snd_nxt)) { - pcb->state = FIN_WAIT_2; - } - break; - case FIN_WAIT_2: - tcp_receive(pcb); - if (recv_flags & TF_GOT_FIN) { - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: FIN_WAIT_2 %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - tcp_ack_now(pcb); - tcp_pcb_purge(pcb); - TCP_RMV(&tcp_active_pcbs, pcb); - pcb->state = TIME_WAIT; - TCP_REG(&tcp_tw_pcbs, pcb); - } - break; - case CLOSING: - tcp_receive(pcb); - if (flags & TCP_ACK && ackno == pcb->snd_nxt) { - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: CLOSING %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - tcp_pcb_purge(pcb); - TCP_RMV(&tcp_active_pcbs, pcb); - pcb->state = TIME_WAIT; - TCP_REG(&tcp_tw_pcbs, pcb); - } - break; - case LAST_ACK: - tcp_receive(pcb); - if (flags & TCP_ACK && ackno == pcb->snd_nxt) { - LWIP_DEBUGF(TCP_DEBUG, ("TCP connection closed: LAST_ACK %"U16_F" -> %"U16_F".\n", inseg.tcphdr->src, inseg.tcphdr->dest)); - /* bugfix #21699: don't set pcb->state to CLOSED here or we risk leaking segments */ - recv_flags |= TF_CLOSED; - } - break; - default: - break; - } - return ERR_OK; -} - -#if TCP_QUEUE_OOSEQ -/** - * Insert segment into the list (segments covered with new one will be deleted) - * - * Called from tcp_receive() - */ -static void -tcp_oos_insert_segment(struct tcp_seg *cseg, struct tcp_seg *next) -{ - struct tcp_seg *old_seg; - - if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) { - /* received segment overlaps all following segments */ - tcp_segs_free(next); - next = NULL; - } - else { - /* delete some following segments - oos queue may have segments with FIN flag */ - while (next && - TCP_SEQ_GEQ((seqno + cseg->len), - (next->tcphdr->seqno + next->len))) { - /* cseg with FIN already processed */ - if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) { - TCPH_FLAGS_SET(cseg->tcphdr, TCPH_FLAGS(cseg->tcphdr) | TCP_FIN); - } - old_seg = next; - next = next->next; - tcp_seg_free(old_seg); - } - if (next && - TCP_SEQ_GT(seqno + cseg->len, next->tcphdr->seqno)) { - /* We need to trim the incoming segment. */ - cseg->len = (u16_t)(next->tcphdr->seqno - seqno); - pbuf_realloc(cseg->p, cseg->len); - } - } - cseg->next = next; -} -#endif - -/** - * Called by tcp_process. Checks if the given segment is an ACK for outstanding - * data, and if so frees the memory of the buffered data. Next, is places the - * segment on any of the receive queues (pcb->recved or pcb->ooseq). If the segment - * is buffered, the pbuf is referenced by pbuf_ref so that it will not be freed until - * i it has been removed from the buffer. - * - * If the incoming segment constitutes an ACK for a segment that was used for RTT - * estimation, the RTT is estimated here as well. - * - * Called from tcp_process(). - */ -static void -tcp_receive(struct tcp_pcb *pcb) -{ - struct tcp_seg *next; -#if TCP_QUEUE_OOSEQ - struct tcp_seg *prev, *cseg; -#endif - struct pbuf *p; - s32_t off; - s16_t m; - u32_t right_wnd_edge; - u16_t new_tot_len; - int found_dupack = 0; - - if (flags & TCP_ACK) { - right_wnd_edge = pcb->snd_wnd + pcb->snd_wl2; - - /* Update window. */ - if (TCP_SEQ_LT(pcb->snd_wl1, seqno) || - (pcb->snd_wl1 == seqno && TCP_SEQ_LT(pcb->snd_wl2, ackno)) || - (pcb->snd_wl2 == ackno && tcphdr->wnd > pcb->snd_wnd)) { - pcb->snd_wnd = tcphdr->wnd; - pcb->snd_wl1 = seqno; - pcb->snd_wl2 = ackno; - if (pcb->snd_wnd > 0 && pcb->persist_backoff > 0) { - pcb->persist_backoff = 0; - } - LWIP_DEBUGF(TCP_WND_DEBUG, ("tcp_receive: window update %"U16_F"\n", pcb->snd_wnd)); -#if TCP_WND_DEBUG - } else { - if (pcb->snd_wnd != tcphdr->wnd) { - LWIP_DEBUGF(TCP_WND_DEBUG, - ("tcp_receive: no window update lastack %"U32_F" ackno %" - U32_F" wl1 %"U32_F" seqno %"U32_F" wl2 %"U32_F"\n", - pcb->lastack, ackno, pcb->snd_wl1, seqno, pcb->snd_wl2)); - } -#endif /* TCP_WND_DEBUG */ - } - - /* (From Stevens TCP/IP Illustrated Vol II, p970.) Its only a - * duplicate ack if: - * 1) It doesn't ACK new data - * 2) length of received packet is zero (i.e. no payload) - * 3) the advertised window hasn't changed - * 4) There is outstanding unacknowledged data (retransmission timer running) - * 5) The ACK is == biggest ACK sequence number so far seen (snd_una) - * - * If it passes all five, should process as a dupack: - * a) dupacks < 3: do nothing - * b) dupacks == 3: fast retransmit - * c) dupacks > 3: increase cwnd - * - * If it only passes 1-3, should reset dupack counter (and add to - * stats, which we don't do in lwIP) - * - * If it only passes 1, should reset dupack counter - * - */ - - /* Clause 1 */ - if (TCP_SEQ_LEQ(ackno, pcb->lastack)) { - pcb->acked = 0; - /* Clause 2 */ - if (tcplen == 0) { - /* Clause 3 */ - if (pcb->snd_wl2 + pcb->snd_wnd == right_wnd_edge){ - /* Clause 4 */ - if (pcb->rtime >= 0) { - /* Clause 5 */ - if (pcb->lastack == ackno) { - found_dupack = 1; - if (pcb->dupacks + 1 > pcb->dupacks) - ++pcb->dupacks; - if (pcb->dupacks > 3) { - /* Inflate the congestion window, but not if it means that - the value overflows. */ - if ((u16_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) { - pcb->cwnd += pcb->mss; - } - } else if (pcb->dupacks == 3) { - /* Do fast retransmit */ - tcp_rexmit_fast(pcb); - } - } - } - } - } - /* If Clause (1) or more is true, but not a duplicate ack, reset - * count of consecutive duplicate acks */ - if (!found_dupack) { - pcb->dupacks = 0; - } - } else if (TCP_SEQ_BETWEEN(ackno, pcb->lastack+1, pcb->snd_nxt)){ - /* We come here when the ACK acknowledges new data. */ - - /* Reset the "IN Fast Retransmit" flag, since we are no longer - in fast retransmit. Also reset the congestion window to the - slow start threshold. */ - if (pcb->flags & TF_INFR) { - pcb->flags &= ~TF_INFR; - pcb->cwnd = pcb->ssthresh; - } - - /* Reset the number of retransmissions. */ - pcb->nrtx = 0; - - /* Reset the retransmission time-out. */ - pcb->rto = (pcb->sa >> 3) + pcb->sv; - - /* Update the send buffer space. Diff between the two can never exceed 64K? */ - pcb->acked = (u16_t)(ackno - pcb->lastack); - - pcb->snd_buf += pcb->acked; - - /* Reset the fast retransmit variables. */ - pcb->dupacks = 0; - pcb->lastack = ackno; - - /* Update the congestion control variables (cwnd and - ssthresh). */ - if (pcb->state >= ESTABLISHED) { - if (pcb->cwnd < pcb->ssthresh) { - if ((u16_t)(pcb->cwnd + pcb->mss) > pcb->cwnd) { - pcb->cwnd += pcb->mss; - } - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_receive: slow start cwnd %"U16_F"\n", pcb->cwnd)); - } else { - u16_t new_cwnd = (pcb->cwnd + pcb->mss * pcb->mss / pcb->cwnd); - if (new_cwnd > pcb->cwnd) { - pcb->cwnd = new_cwnd; - } - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_receive: congestion avoidance cwnd %"U16_F"\n", pcb->cwnd)); - } - } - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: ACK for %"U32_F", unacked->seqno %"U32_F":%"U32_F"\n", - ackno, - pcb->unacked != NULL? - ntohl(pcb->unacked->tcphdr->seqno): 0, - pcb->unacked != NULL? - ntohl(pcb->unacked->tcphdr->seqno) + TCP_TCPLEN(pcb->unacked): 0)); - - /* Remove segment from the unacknowledged list if the incoming - ACK acknowlegdes them. */ - while (pcb->unacked != NULL && - TCP_SEQ_LEQ(ntohl(pcb->unacked->tcphdr->seqno) + - TCP_TCPLEN(pcb->unacked), ackno)) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: removing %"U32_F":%"U32_F" from pcb->unacked\n", - ntohl(pcb->unacked->tcphdr->seqno), - ntohl(pcb->unacked->tcphdr->seqno) + - TCP_TCPLEN(pcb->unacked))); - - next = pcb->unacked; - pcb->unacked = pcb->unacked->next; - - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_receive: queuelen %"U16_F" ... ", (u16_t)pcb->snd_queuelen)); - LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= pbuf_clen(next->p))); - /* Prevent ACK for FIN to generate a sent event */ - if ((pcb->acked != 0) && ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0)) { - pcb->acked--; - } - - pcb->snd_queuelen -= pbuf_clen(next->p); - tcp_seg_free(next); - - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("%"U16_F" (after freeing unacked)\n", (u16_t)pcb->snd_queuelen)); - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_receive: valid queue length", pcb->unacked != NULL || - pcb->unsent != NULL); - } - } - - /* If there's nothing left to acknowledge, stop the retransmit - timer, otherwise reset it to start again */ - if(pcb->unacked == NULL) - pcb->rtime = -1; - else - pcb->rtime = 0; - - pcb->polltmr = 0; - } else { - /* Fix bug bug #21582: out of sequence ACK, didn't really ack anything */ - pcb->acked = 0; - } - - /* We go through the ->unsent list to see if any of the segments - on the list are acknowledged by the ACK. This may seem - strange since an "unsent" segment shouldn't be acked. The - rationale is that lwIP puts all outstanding segments on the - ->unsent list after a retransmission, so these segments may - in fact have been sent once. */ - while (pcb->unsent != NULL && - TCP_SEQ_BETWEEN(ackno, ntohl(pcb->unsent->tcphdr->seqno) + - TCP_TCPLEN(pcb->unsent), pcb->snd_nxt)) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: removing %"U32_F":%"U32_F" from pcb->unsent\n", - ntohl(pcb->unsent->tcphdr->seqno), ntohl(pcb->unsent->tcphdr->seqno) + - TCP_TCPLEN(pcb->unsent))); - - next = pcb->unsent; - pcb->unsent = pcb->unsent->next; - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_receive: queuelen %"U16_F" ... ", (u16_t)pcb->snd_queuelen)); - LWIP_ASSERT("pcb->snd_queuelen >= pbuf_clen(next->p)", (pcb->snd_queuelen >= pbuf_clen(next->p))); - /* Prevent ACK for FIN to generate a sent event */ - if ((pcb->acked != 0) && ((TCPH_FLAGS(next->tcphdr) & TCP_FIN) != 0)) { - pcb->acked--; - } - pcb->snd_queuelen -= pbuf_clen(next->p); - tcp_seg_free(next); - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("%"U16_F" (after freeing unsent)\n", (u16_t)pcb->snd_queuelen)); - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_receive: valid queue length", - pcb->unacked != NULL || pcb->unsent != NULL); - } - } - /* End of ACK for new data processing. */ - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: pcb->rttest %"U32_F" rtseq %"U32_F" ackno %"U32_F"\n", - pcb->rttest, pcb->rtseq, ackno)); - - /* RTT estimation calculations. This is done by checking if the - incoming segment acknowledges the segment we use to take a - round-trip time measurement. */ - if (pcb->rttest && TCP_SEQ_LT(pcb->rtseq, ackno)) { - /* diff between this shouldn't exceed 32K since this are tcp timer ticks - and a round-trip shouldn't be that long... */ - m = (s16_t)(tcp_ticks - pcb->rttest); - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: experienced rtt %"U16_F" ticks (%"U16_F" msec).\n", - m, m * TCP_SLOW_INTERVAL)); - - /* This is taken directly from VJs original code in his paper */ - m = m - (pcb->sa >> 3); - pcb->sa += m; - if (m < 0) { - m = -m; - } - m = m - (pcb->sv >> 2); - pcb->sv += m; - pcb->rto = (pcb->sa >> 3) + pcb->sv; - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_receive: RTO %"U16_F" (%"U16_F" milliseconds)\n", - pcb->rto, pcb->rto * TCP_SLOW_INTERVAL)); - - pcb->rttest = 0; - } - } - - /* If the incoming segment contains data, we must process it - further. */ - if (tcplen > 0) { - /* This code basically does three things: - - +) If the incoming segment contains data that is the next - in-sequence data, this data is passed to the application. This - might involve trimming the first edge of the data. The rcv_nxt - variable and the advertised window are adjusted. - - +) If the incoming segment has data that is above the next - sequence number expected (->rcv_nxt), the segment is placed on - the ->ooseq queue. This is done by finding the appropriate - place in the ->ooseq queue (which is ordered by sequence - number) and trim the segment in both ends if needed. An - immediate ACK is sent to indicate that we received an - out-of-sequence segment. - - +) Finally, we check if the first segment on the ->ooseq queue - now is in sequence (i.e., if rcv_nxt >= ooseq->seqno). If - rcv_nxt > ooseq->seqno, we must trim the first edge of the - segment on ->ooseq before we adjust rcv_nxt. The data in the - segments that are now on sequence are chained onto the - incoming segment so that we only need to call the application - once. - */ - - /* First, we check if we must trim the first edge. We have to do - this if the sequence number of the incoming segment is less - than rcv_nxt, and the sequence number plus the length of the - segment is larger than rcv_nxt. */ - /* if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)){ - if (TCP_SEQ_LT(pcb->rcv_nxt, seqno + tcplen)) {*/ - if (TCP_SEQ_BETWEEN(pcb->rcv_nxt, seqno + 1, seqno + tcplen - 1)){ - /* Trimming the first edge is done by pushing the payload - pointer in the pbuf downwards. This is somewhat tricky since - we do not want to discard the full contents of the pbuf up to - the new starting point of the data since we have to keep the - TCP header which is present in the first pbuf in the chain. - - What is done is really quite a nasty hack: the first pbuf in - the pbuf chain is pointed to by inseg.p. Since we need to be - able to deallocate the whole pbuf, we cannot change this - inseg.p pointer to point to any of the later pbufs in the - chain. Instead, we point the ->payload pointer in the first - pbuf to data in one of the later pbufs. We also set the - inseg.data pointer to point to the right place. This way, the - ->p pointer will still point to the first pbuf, but the - ->p->payload pointer will point to data in another pbuf. - - After we are done with adjusting the pbuf pointers we must - adjust the ->data pointer in the seg and the segment - length.*/ - - off = pcb->rcv_nxt - seqno; - p = inseg.p; - LWIP_ASSERT("inseg.p != NULL", inseg.p); - LWIP_ASSERT("insane offset!", (off < 0x7fff)); - if (inseg.p->len < off) { - LWIP_ASSERT("pbuf too short!", (((s32_t)inseg.p->tot_len) >= off)); - new_tot_len = (u16_t)(inseg.p->tot_len - off); - while (p->len < off) { - off -= p->len; - /* KJM following line changed (with addition of new_tot_len var) - to fix bug #9076 - inseg.p->tot_len -= p->len; */ - p->tot_len = new_tot_len; - p->len = 0; - p = p->next; - } - if(pbuf_header(p, (s16_t)-off)) { - /* Do we need to cope with this failing? Assert for now */ - LWIP_ASSERT("pbuf_header failed", 0); - } - } else { - if(pbuf_header(inseg.p, (s16_t)-off)) { - /* Do we need to cope with this failing? Assert for now */ - LWIP_ASSERT("pbuf_header failed", 0); - } - } - /* KJM following line changed to use p->payload rather than inseg->p->payload - to fix bug #9076 */ - inseg.dataptr = p->payload; - inseg.len -= (u16_t)(pcb->rcv_nxt - seqno); - inseg.tcphdr->seqno = seqno = pcb->rcv_nxt; - } - else { - if (TCP_SEQ_LT(seqno, pcb->rcv_nxt)){ - /* the whole segment is < rcv_nxt */ - /* must be a duplicate of a packet that has already been correctly handled */ - - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: duplicate seqno %"U32_F"\n", seqno)); - tcp_ack_now(pcb); - } - } - - /* The sequence number must be within the window (above rcv_nxt - and below rcv_nxt + rcv_wnd) in order to be further - processed. */ - if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, - pcb->rcv_nxt + pcb->rcv_wnd - 1)){ - if (pcb->rcv_nxt == seqno) { - /* The incoming segment is the next in sequence. We check if - we have to trim the end of the segment and update rcv_nxt - and pass the data to the application. */ - tcplen = TCP_TCPLEN(&inseg); - - if (tcplen > pcb->rcv_wnd) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, - ("tcp_receive: other end overran receive window" - "seqno %"U32_F" len %"U32_F" right edge %"U32_F"\n", - seqno, tcplen, pcb->rcv_nxt + pcb->rcv_wnd)); - if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - /* Must remove the FIN from the header as we're trimming - * that byte of sequence-space from the packet */ - TCPH_FLAGS_SET(inseg.tcphdr, TCPH_FLAGS(inseg.tcphdr) &~ TCP_FIN); - } - /* Adjust length of segment to fit in the window. */ - inseg.len = pcb->rcv_wnd; - if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) { - inseg.len -= 1; - } - pbuf_realloc(inseg.p, inseg.len); - tcplen = TCP_TCPLEN(&inseg); - LWIP_ASSERT("tcp_receive: segment not trimmed correctly to rcv_wnd\n", - (seqno + tcplen) == (pcb->rcv_nxt + pcb->rcv_wnd)); - } -#if TCP_QUEUE_OOSEQ - if (pcb->ooseq != NULL) { - if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, - ("tcp_receive: received in-order FIN, binning ooseq queue\n")); - /* Received in-order FIN means anything that was received - * out of order must now have been received in-order, so - * bin the ooseq queue - * rcv_nxt - * . |--ooseq--| - * .==seg============|FIN - */ - while (pcb->ooseq != NULL) { - struct tcp_seg *old_ooseq = pcb->ooseq; - pcb->ooseq = pcb->ooseq->next; - tcp_seg_free(old_ooseq); - } - } - else { - struct tcp_seg* next = pcb->ooseq; - struct tcp_seg *old_seg; - /* rcv_nxt - * . |--ooseq--| - * .==seg============| - */ - while (next && - TCP_SEQ_GEQ(seqno + tcplen, - next->tcphdr->seqno + next->len)) { - /* inseg doesn't have FIN (already processed) */ - if (TCPH_FLAGS(next->tcphdr) & TCP_FIN && - (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) == 0) { - TCPH_FLAGS_SET(inseg.tcphdr, - TCPH_FLAGS(inseg.tcphdr) | TCP_FIN); - tcplen = TCP_TCPLEN(&inseg); - } - old_seg = next; - next = next->next; - tcp_seg_free(old_seg); - } - /* rcv_nxt - * . |--ooseq--| - * .==seg============| - */ - if (next && - TCP_SEQ_GT(seqno + tcplen, - next->tcphdr->seqno)) { - /* FIN in inseg already handled by dropping whole ooseq queue */ - inseg.len = (u16_t)(pcb->ooseq->tcphdr->seqno - seqno); - if (TCPH_FLAGS(inseg.tcphdr) & TCP_SYN) { - inseg.len -= 1; - } - pbuf_realloc(inseg.p, inseg.len); - tcplen = TCP_TCPLEN(&inseg); - LWIP_ASSERT("tcp_receive: segment not trimmed correctly to ooseq queue\n", - (seqno + tcplen) == pcb->ooseq->tcphdr->seqno); - } - pcb->ooseq = next; - } - } -#endif /* TCP_QUEUE_OOSEQ */ - - pcb->rcv_nxt = seqno + tcplen; - - /* Update the receiver's (our) window. */ - LWIP_ASSERT("tcp_receive: tcplen > rcv_wnd\n", pcb->rcv_wnd >= tcplen); - pcb->rcv_wnd -= tcplen; - - tcp_update_rcv_ann_wnd(pcb); - - /* If there is data in the segment, we make preparations to - pass this up to the application. The ->recv_data variable - is used for holding the pbuf that goes to the - application. The code for reassembling out-of-sequence data - chains its data on this pbuf as well. - - If the segment was a FIN, we set the TF_GOT_FIN flag that will - be used to indicate to the application that the remote side has - closed its end of the connection. */ - if (inseg.p->tot_len > 0) { - recv_data = inseg.p; - /* Since this pbuf now is the responsibility of the - application, we delete our reference to it so that we won't - (mistakingly) deallocate it. */ - inseg.p = NULL; - } - if (TCPH_FLAGS(inseg.tcphdr) & TCP_FIN) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: received FIN.\n")); - recv_flags |= TF_GOT_FIN; - } - -#if TCP_QUEUE_OOSEQ - /* We now check if we have segments on the ->ooseq queue that - is now in sequence. */ - while (pcb->ooseq != NULL && - pcb->ooseq->tcphdr->seqno == pcb->rcv_nxt) { - - cseg = pcb->ooseq; - seqno = pcb->ooseq->tcphdr->seqno; - - pcb->rcv_nxt += TCP_TCPLEN(cseg); - LWIP_ASSERT("tcp_receive: ooseq tcplen > rcv_wnd\n", - pcb->rcv_wnd >= TCP_TCPLEN(cseg)); - pcb->rcv_wnd -= TCP_TCPLEN(cseg); - - tcp_update_rcv_ann_wnd(pcb); - - if (cseg->p->tot_len > 0) { - /* Chain this pbuf onto the pbuf that we will pass to - the application. */ - if (recv_data) { - pbuf_cat(recv_data, cseg->p); - } else { - recv_data = cseg->p; - } - cseg->p = NULL; - } - if (TCPH_FLAGS(cseg->tcphdr) & TCP_FIN) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_receive: dequeued FIN.\n")); - recv_flags |= TF_GOT_FIN; - if (pcb->state == ESTABLISHED) { /* force passive close or we can move to active close */ - pcb->state = CLOSE_WAIT; - } - } - - pcb->ooseq = cseg->next; - tcp_seg_free(cseg); - } -#endif /* TCP_QUEUE_OOSEQ */ - - - /* Acknowledge the segment(s). */ - tcp_ack(pcb); - - } else { - /* We get here if the incoming segment is out-of-sequence. */ - tcp_send_empty_ack(pcb); -#if TCP_QUEUE_OOSEQ - /* We queue the segment on the ->ooseq queue. */ - if (pcb->ooseq == NULL) { - pcb->ooseq = tcp_seg_copy(&inseg); - } else { - /* If the queue is not empty, we walk through the queue and - try to find a place where the sequence number of the - incoming segment is between the sequence numbers of the - previous and the next segment on the ->ooseq queue. That is - the place where we put the incoming segment. If needed, we - trim the second edges of the previous and the incoming - segment so that it will fit into the sequence. - - If the incoming segment has the same sequence number as a - segment on the ->ooseq queue, we discard the segment that - contains less data. */ - - prev = NULL; - for(next = pcb->ooseq; next != NULL; next = next->next) { - if (seqno == next->tcphdr->seqno) { - /* The sequence number of the incoming segment is the - same as the sequence number of the segment on - ->ooseq. We check the lengths to see which one to - discard. */ - if (inseg.len > next->len) { - /* The incoming segment is larger than the old - segment. We replace some segments with the new - one. */ - cseg = tcp_seg_copy(&inseg); - if (cseg != NULL) { - if (prev != NULL) { - prev->next = cseg; - } else { - pcb->ooseq = cseg; - } - tcp_oos_insert_segment(cseg, next); - } - break; - } else { - /* Either the lenghts are the same or the incoming - segment was smaller than the old one; in either - case, we ditch the incoming segment. */ - break; - } - } else { - if (prev == NULL) { - if (TCP_SEQ_LT(seqno, next->tcphdr->seqno)) { - /* The sequence number of the incoming segment is lower - than the sequence number of the first segment on the - queue. We put the incoming segment first on the - queue. */ - cseg = tcp_seg_copy(&inseg); - if (cseg != NULL) { - pcb->ooseq = cseg; - tcp_oos_insert_segment(cseg, next); - } - break; - } - } else { - /*if (TCP_SEQ_LT(prev->tcphdr->seqno, seqno) && - TCP_SEQ_LT(seqno, next->tcphdr->seqno)) {*/ - if (TCP_SEQ_BETWEEN(seqno, prev->tcphdr->seqno+1, next->tcphdr->seqno-1)) { - /* The sequence number of the incoming segment is in - between the sequence numbers of the previous and - the next segment on ->ooseq. We trim trim the previous - segment, delete next segments that included in received segment - and trim received, if needed. */ - cseg = tcp_seg_copy(&inseg); - if (cseg != NULL) { - if (TCP_SEQ_GT(prev->tcphdr->seqno + prev->len, seqno)) { - /* We need to trim the prev segment. */ - prev->len = (u16_t)(seqno - prev->tcphdr->seqno); - pbuf_realloc(prev->p, prev->len); - } - prev->next = cseg; - tcp_oos_insert_segment(cseg, next); - } - break; - } - } - /* If the "next" segment is the last segment on the - ooseq queue, we add the incoming segment to the end - of the list. */ - if (next->next == NULL && - TCP_SEQ_GT(seqno, next->tcphdr->seqno)) { - if (TCPH_FLAGS(next->tcphdr) & TCP_FIN) { - /* segment "next" already contains all data */ - break; - } - next->next = tcp_seg_copy(&inseg); - if (next->next != NULL) { - if (TCP_SEQ_GT(next->tcphdr->seqno + next->len, seqno)) { - /* We need to trim the last segment. */ - next->len = (u16_t)(seqno - next->tcphdr->seqno); - pbuf_realloc(next->p, next->len); - } - } - break; - } - } - prev = next; - } - } -#endif /* TCP_QUEUE_OOSEQ */ - - } - } else { - /* The incoming segment is not withing the window. */ - tcp_send_empty_ack(pcb); - } - } else { - /* Segments with length 0 is taken care of here. Segments that - fall out of the window are ACKed. */ - /*if (TCP_SEQ_GT(pcb->rcv_nxt, seqno) || - TCP_SEQ_GEQ(seqno, pcb->rcv_nxt + pcb->rcv_wnd)) {*/ - if(!TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt, pcb->rcv_nxt + pcb->rcv_wnd-1)){ - tcp_ack_now(pcb); - } - } -} - -/** - * Parses the options contained in the incoming segment. - * - * Called from tcp_listen_input() and tcp_process(). - * Currently, only the MSS option is supported! - * - * @param pcb the tcp_pcb for which a segment arrived - */ -static void -tcp_parseopt(struct tcp_pcb *pcb) -{ - u16_t c, max_c; - u16_t mss; - u8_t *opts, opt; -#if LWIP_TCP_TIMESTAMPS - u32_t tsval; -#endif - - opts = (u8_t *)tcphdr + TCP_HLEN; - - /* Parse the TCP MSS option, if present. */ - if(TCPH_HDRLEN(tcphdr) > 0x5) { - max_c = (TCPH_HDRLEN(tcphdr) - 5) << 2; - for (c = 0; c < max_c; ) { - opt = opts[c]; - switch (opt) { - case 0x00: - /* End of options. */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: EOL\n")); - return; - case 0x01: - /* NOP option. */ - ++c; - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: NOP\n")); - break; - case 0x02: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: MSS\n")); - if (opts[c + 1] != 0x04 || c + 0x04 > max_c) { - /* Bad length */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n")); - return; - } - /* An MSS option with the right option length. */ - mss = (opts[c + 2] << 8) | opts[c + 3]; - /* Limit the mss to the configured TCP_MSS and prevent division by zero */ - pcb->mss = ((mss > TCP_MSS) || (mss == 0)) ? TCP_MSS : mss; - /* Advance to next option */ - c += 0x04; - break; -#if LWIP_TCP_TIMESTAMPS - case 0x08: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: TS\n")); - if (opts[c + 1] != 0x0A || c + 0x0A > max_c) { - /* Bad length */ - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n")); - return; - } - /* TCP timestamp option with valid length */ - tsval = (opts[c+2]) | (opts[c+3] << 8) | - (opts[c+4] << 16) | (opts[c+5] << 24); - if (flags & TCP_SYN) { - pcb->ts_recent = ntohl(tsval); - pcb->flags |= TF_TIMESTAMP; - } else if (TCP_SEQ_BETWEEN(pcb->ts_lastacksent, seqno, seqno+tcplen)) { - pcb->ts_recent = ntohl(tsval); - } - /* Advance to next option */ - c += 0x0A; - break; -#endif - default: - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: other\n")); - if (opts[c + 1] == 0) { - LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_parseopt: bad length\n")); - /* If the length field is zero, the options are malformed - and we don't process them further. */ - return; - } - /* All other options have a length field, so that we easily - can skip past them. */ - c += opts[c + 1]; - } - } - } -} - -#endif /* LWIP_TCP */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_out.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_out.c deleted file mode 100644 index 9605beb8e5a..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/tcp_out.c +++ /dev/null @@ -1,1071 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Transmission Control Protocol, outgoing traffic - * - * The output functions of TCP. - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#include "lwip/opt.h" - -#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/tcp.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/memp.h" -#include "lwip/sys.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" - -#include -#define _TEST_HD_ -/* Forward declarations.*/ -static void tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb); - -static struct tcp_hdr * -tcp_output_set_header(struct tcp_pcb *pcb, struct pbuf *p, int optlen, - u32_t seqno_be /* already in network byte order */) -{ - struct tcp_hdr *tcphdr = p->payload; - tcphdr->src = htons(pcb->local_port); - tcphdr->dest = htons(pcb->remote_port); - tcphdr->seqno = seqno_be; - tcphdr->ackno = htonl(pcb->rcv_nxt); - TCPH_FLAGS_SET(tcphdr, TCP_ACK); - tcphdr->wnd = htons(pcb->rcv_ann_wnd); - tcphdr->urgp = 0; - TCPH_HDRLEN_SET(tcphdr, (5 + optlen / 4)); - tcphdr->chksum = 0; - - /* If we're sending a packet, update the announced right window edge */ - pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd; - - return tcphdr; -} - -/** - * Called by tcp_close() to send a segment including flags but not data. - * - * @param pcb the tcp_pcb over which to send a segment - * @param flags the flags to set in the segment header - * @return ERR_OK if sent, another err_t otherwise - */ -err_t -tcp_send_ctrl(struct tcp_pcb *pcb, u8_t flags) -{ - /* no data, no length, flags, copy=1, no optdata */ - return tcp_enqueue(pcb, NULL, 0, flags, TCP_WRITE_FLAG_COPY, 0); -} - -/** - * Write data for sending (but does not send it immediately). - * - * It waits in the expectation of more data being sent soon (as - * it can send them more efficiently by combining them together). - * To prompt the system to send data now, call tcp_output() after - * calling tcp_write(). - * - * @param pcb Protocol control block of the TCP connection to enqueue data for. - * @param data pointer to the data to send - * @param len length (in bytes) of the data to send - * @param apiflags combination of following flags : - * - TCP_WRITE_FLAG_COPY (0x01) data will be copied into memory belonging to the stack - * - TCP_WRITE_FLAG_MORE (0x02) for TCP connection, PSH flag will be set on last segment sent, - * @return ERR_OK if enqueued, another err_t on error - * - * @see tcp_write() - */ -err_t -tcp_write(struct tcp_pcb *pcb, const void *data, u16_t len, u8_t apiflags) -{ - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_write(pcb=%p, data=%p, len=%"U16_F", apiflags=%"U16_F")\n", (void *)pcb, - data, len, (u16_t)apiflags)); - /* connection is in valid state for data transmission? */ - if (pcb->state == ESTABLISHED || - pcb->state == CLOSE_WAIT || - pcb->state == SYN_SENT || - pcb->state == SYN_RCVD) { - if (len > 0) { -#if LWIP_TCP_TIMESTAMPS - return tcp_enqueue(pcb, (void *)data, len, 0, apiflags, - pcb->flags & TF_TIMESTAMP ? TF_SEG_OPTS_TS : 0); -#else - return tcp_enqueue(pcb, (void *)data, len, 0, apiflags, 0); -#endif - } - return ERR_OK; - } else { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_STATE | LWIP_DBG_LEVEL_SEVERE, ("tcp_write() called in invalid state\n")); - return ERR_CONN; - } -} - -/** - * Enqueue data and/or TCP options for transmission - * - * Called by tcp_connect(), tcp_listen_input(), tcp_send_ctrl() and tcp_write(). - * - * @param pcb Protocol control block for the TCP connection to enqueue data for. - * @param arg Pointer to the data to be enqueued for sending. - * @param len Data length in bytes - * @param flags tcp header flags to set in the outgoing segment - * @param apiflags combination of following flags : - * - TCP_WRITE_FLAG_COPY (0x01) data will be copied into memory belonging to the stack - * - TCP_WRITE_FLAG_MORE (0x02) for TCP connection, PSH flag will be set on last segment sent, - * @param optflags options to include in segment later on (see definition of struct tcp_seg) - */ -err_t -tcp_enqueue(struct tcp_pcb *pcb, void *arg, u16_t len, - u8_t flags, u8_t apiflags, u8_t optflags) -{ - struct pbuf *p; - struct tcp_seg *seg, *useg, *queue; - u32_t seqno; - u16_t left, seglen; - void *ptr; - u16_t queuelen; - u8_t optlen; - - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, - ("tcp_enqueue(pcb=%p, arg=%p, len=%"U16_F", flags=%"X16_F", apiflags=%"U16_F")\n", - (void *)pcb, arg, len, (u16_t)flags, (u16_t)apiflags)); - LWIP_ERROR("tcp_enqueue: packet needs payload, options, or SYN/FIN (programmer violates API)", - ((len != 0) || (optflags != 0) || ((flags & (TCP_SYN | TCP_FIN)) != 0)), - return ERR_ARG;); - LWIP_ERROR("tcp_enqueue: len != 0 || arg == NULL (programmer violates API)", - ((len != 0) || (arg == NULL)), return ERR_ARG;); - - /* fail on too much data */ - if (len > pcb->snd_buf) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_WARNING, - ("tcp_enqueue: too much data (len=%"U16_F" > snd_buf=%"U16_F")\n", len, pcb->snd_buf)); - pcb->flags |= TF_NAGLEMEMERR; - return ERR_MEM; - } - left = len; - ptr = arg; - - optlen = LWIP_TCP_OPT_LENGTH(optflags); - - /* seqno will be the sequence number of the first segment enqueued - * by the call to this function. */ - seqno = pcb->snd_lbb; - - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue: queuelen: %"U16_F"\n", (u16_t)pcb->snd_queuelen)); - - /* If total number of pbufs on the unsent/unacked queues exceeds the - * configured maximum, return an error */ - queuelen = pcb->snd_queuelen; - /* check for configured max queuelen and possible overflow */ - if ((queuelen >= TCP_SND_QUEUELEN) || (queuelen > TCP_SNDQUEUELEN_OVERFLOW)) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_WARNING, - ("tcp_enqueue: too long queue %"U16_F" (max %"U16_F")\n", queuelen, TCP_SND_QUEUELEN)); - TCP_STATS_INC(tcp.memerr); - pcb->flags |= TF_NAGLEMEMERR; - return ERR_MEM; - } - if (queuelen != 0) { - LWIP_ASSERT("tcp_enqueue: pbufs on queue => at least one queue non-empty", - pcb->unacked != NULL || pcb->unsent != NULL); - } else { - LWIP_ASSERT("tcp_enqueue: no pbufs on queue => both queues empty", - pcb->unacked == NULL && pcb->unsent == NULL); - } - - /* First, break up the data into segments and tuck them together in - * the local "queue" variable. */ - useg = queue = seg = NULL; - seglen = 0; - while (queue == NULL || left > 0) { - /* The segment length (including options) should be at most the MSS */ - seglen = left > (pcb->mss - optlen) ? (pcb->mss - optlen) : left; - - /* Allocate memory for tcp_seg, and fill in fields. */ - seg = memp_malloc(MEMP_TCP_SEG); - if (seg == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("tcp_enqueue: could not allocate memory for tcp_seg\n")); - goto memerr; - } - seg->next = NULL; - seg->p = NULL; - - /* first segment of to-be-queued data? */ - if (queue == NULL) { - queue = seg; - } - /* subsequent segments of to-be-queued data */ - else { - /* Attach the segment to the end of the queued segments */ - LWIP_ASSERT("useg != NULL", useg != NULL); - useg->next = seg; - } - /* remember last segment of to-be-queued data for next iteration */ - useg = seg; - - /* If copy is set, memory should be allocated - * and data copied into pbuf, otherwise data comes from - * ROM or other static memory, and need not be copied. */ - if (apiflags & TCP_WRITE_FLAG_COPY) { - if ((seg->p = pbuf_alloc(PBUF_TRANSPORT, seglen + optlen, PBUF_RAM)) == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("tcp_enqueue : could not allocate memory for pbuf copy size %"U16_F"\n", seglen)); - goto memerr; - } - LWIP_ASSERT("check that first pbuf can hold the complete seglen", - (seg->p->len >= seglen + optlen)); - queuelen += pbuf_clen(seg->p); - if (arg != NULL) { - MEMCPY((char *)seg->p->payload + optlen, ptr, seglen); - } - seg->dataptr = seg->p->payload; - } - /* do not copy data */ - else { - /* First, allocate a pbuf for the headers. */ - if ((seg->p = pbuf_alloc(PBUF_TRANSPORT, optlen, PBUF_RAM)) == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("tcp_enqueue: could not allocate memory for header pbuf\n")); - goto memerr; - } - queuelen += pbuf_clen(seg->p); - - /* Second, allocate a pbuf for holding the data. - * since the referenced data is available at least until it is sent out on the - * link (as it has to be ACKed by the remote party) we can safely use PBUF_ROM - * instead of PBUF_REF here. - */ - if (left > 0) { - if ((p = pbuf_alloc(PBUF_RAW, seglen, PBUF_ROM)) == NULL) { - /* If allocation fails, we have to deallocate the header pbuf as well. */ - pbuf_free(seg->p); - seg->p = NULL; - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("tcp_enqueue: could not allocate memory for zero-copy pbuf\n")); - goto memerr; - } - ++queuelen; - /* reference the non-volatile payload data */ - p->payload = ptr; - seg->dataptr = ptr; - - /* Concatenate the headers and data pbufs together. */ - pbuf_cat(seg->p/*header*/, p/*data*/); - p = NULL; - } - } - - /* Now that there are more segments queued, we check again if the - length of the queue exceeds the configured maximum or overflows. */ - if ((queuelen > TCP_SND_QUEUELEN) || (queuelen > TCP_SNDQUEUELEN_OVERFLOW)) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("tcp_enqueue: queue too long %"U16_F" (%"U16_F")\n", queuelen, TCP_SND_QUEUELEN)); - goto memerr; - } - - seg->len = seglen; - - /* build TCP header */ - if (pbuf_header(seg->p, TCP_HLEN)) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("tcp_enqueue: no room for TCP header in pbuf.\n")); - TCP_STATS_INC(tcp.err); - goto memerr; - } - seg->tcphdr = seg->p->payload; - seg->tcphdr->src = htons(pcb->local_port); - seg->tcphdr->dest = htons(pcb->remote_port); - seg->tcphdr->seqno = htonl(seqno); - seg->tcphdr->urgp = 0; - TCPH_FLAGS_SET(seg->tcphdr, flags); - /* don't fill in tcphdr->ackno and tcphdr->wnd until later */ - - seg->flags = optflags; - - /* Set the length of the header */ - TCPH_HDRLEN_SET(seg->tcphdr, (5 + optlen / 4)); - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_TRACE, ("tcp_enqueue: queueing %"U32_F":%"U32_F" (0x%"X16_F")\n", - ntohl(seg->tcphdr->seqno), - ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg), - (u16_t)flags)); - - left -= seglen; - seqno += seglen; - ptr = (void *)((u8_t *)ptr + seglen); - } - - /* Now that the data to be enqueued has been broken up into TCP - segments in the queue variable, we add them to the end of the - pcb->unsent queue. */ - if (pcb->unsent == NULL) { - useg = NULL; - } - else { - for (useg = pcb->unsent; useg->next != NULL; useg = useg->next); - } - /* { useg is last segment on the unsent queue, NULL if list is empty } */ - - /* If there is room in the last pbuf on the unsent queue, - chain the first pbuf on the queue together with that. */ - if (useg != NULL && - TCP_TCPLEN(useg) != 0 && - !(TCPH_FLAGS(useg->tcphdr) & (TCP_SYN | TCP_FIN)) && - (!(flags & (TCP_SYN | TCP_FIN)) || (flags == TCP_FIN)) && - /* fit within max seg size */ - (useg->len + queue->len <= pcb->mss) && - /* only concatenate segments with the same options */ - (useg->flags == queue->flags) && - /* segments are consecutive */ - (ntohl(useg->tcphdr->seqno) + useg->len == ntohl(queue->tcphdr->seqno)) ) { - /* Remove TCP header from first segment of our to-be-queued list */ - if(pbuf_header(queue->p, -(TCP_HLEN + optlen))) { - /* Can we cope with this failing? Just assert for now */ - LWIP_ASSERT("pbuf_header failed\n", 0); - TCP_STATS_INC(tcp.err); - goto memerr; - } - if (queue->p->len == 0) { - /* free the first (header-only) pbuf if it is now empty (contained only headers) */ - struct pbuf *old_q = queue->p; - queue->p = queue->p->next; - old_q->next = NULL; - queuelen--; - pbuf_free(old_q); - } - if (flags & TCP_FIN) { - /* the new segment contains only FIN, no data -> put the FIN into the last segment */ - LWIP_ASSERT("FIN enqueued together with data", queue->p == NULL && queue->len == 0); - TCPH_SET_FLAG(useg->tcphdr, TCP_FIN); - } else { - LWIP_ASSERT("zero-length pbuf", (queue->p != NULL) && (queue->p->len > 0)); - pbuf_cat(useg->p, queue->p); - useg->len += queue->len; - useg->next = queue->next; - } - - LWIP_DEBUGF(TCP_OUTPUT_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("tcp_enqueue: chaining segments, new len %"U16_F"\n", useg->len)); - if (seg == queue) { - seg = useg; - seglen = useg->len; - } - memp_free(MEMP_TCP_SEG, queue); - } - else { - /* empty list */ - if (useg == NULL) { - /* initialize list with this segment */ - pcb->unsent = queue; - } - /* enqueue segment */ - else { - useg->next = queue; - } - } - if ((flags & TCP_SYN) || (flags & TCP_FIN)) { - ++len; - } - if (flags & TCP_FIN) { - pcb->flags |= TF_FIN; - } - pcb->snd_lbb += len; - - pcb->snd_buf -= len; - - /* update number of segments on the queues */ - pcb->snd_queuelen = queuelen; - LWIP_DEBUGF(TCP_QLEN_DEBUG, ("tcp_enqueue: %"S16_F" (after enqueued)\n", pcb->snd_queuelen)); - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_enqueue: valid queue length", - pcb->unacked != NULL || pcb->unsent != NULL); - } - - /* Set the PSH flag in the last segment that we enqueued, but only - if the segment has data (indicated by seglen > 0). */ - if (seg != NULL && seglen > 0 && seg->tcphdr != NULL && ((apiflags & TCP_WRITE_FLAG_MORE)==0)) { - TCPH_SET_FLAG(seg->tcphdr, TCP_PSH); - } - - return ERR_OK; -memerr: - pcb->flags |= TF_NAGLEMEMERR; - TCP_STATS_INC(tcp.memerr); - - if (queue != NULL) { - tcp_segs_free(queue); - } - if (pcb->snd_queuelen != 0) { - LWIP_ASSERT("tcp_enqueue: valid queue length", pcb->unacked != NULL || - pcb->unsent != NULL); - } - LWIP_DEBUGF(TCP_QLEN_DEBUG | LWIP_DBG_STATE, ("tcp_enqueue: %"S16_F" (with mem err)\n", pcb->snd_queuelen)); - return ERR_MEM; -} - - -#if LWIP_TCP_TIMESTAMPS -/* Build a timestamp option (12 bytes long) at the specified options pointer) - * - * @param pcb tcp_pcb - * @param opts option pointer where to store the timestamp option - */ -static void -tcp_build_timestamp_option(struct tcp_pcb *pcb, u32_t *opts) -{ - /* Pad with two NOP options to make everything nicely aligned */ - opts[0] = htonl(0x0101080A); - opts[1] = htonl(sys_now()); - opts[2] = htonl(pcb->ts_recent); -} -#endif - -/** Send an ACK without data. - * - * @param pcb Protocol control block for the TCP connection to send the ACK - */ -err_t -tcp_send_empty_ack(struct tcp_pcb *pcb) -{ - struct pbuf *p; - struct tcp_hdr *tcphdr; - u8_t optlen = 0; - -#if LWIP_TCP_TIMESTAMPS - if (pcb->flags & TF_TIMESTAMP) { - optlen = LWIP_TCP_OPT_LENGTH(TF_SEG_OPTS_TS); - } -#endif - p = pbuf_alloc(PBUF_IP, TCP_HLEN + optlen, PBUF_RAM); - if (p == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output: (ACK) could not allocate pbuf\n")); - return ERR_BUF; - } - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, - ("tcp_output: sending ACK for %"U32_F"\n", pcb->rcv_nxt)); - /* remove ACK flags from the PCB, as we send an empty ACK now */ - pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); - - tcphdr = tcp_output_set_header(pcb, p, optlen, htonl(pcb->snd_nxt)); - - /* NB. MSS option is only sent on SYNs, so ignore it here */ -#if LWIP_TCP_TIMESTAMPS - pcb->ts_lastacksent = pcb->rcv_nxt; - - if (pcb->flags & TF_TIMESTAMP) { - tcp_build_timestamp_option(pcb, (u32_t *)(tcphdr + 1)); - } -#endif - -#if CHECKSUM_GEN_TCP - tcphdr->chksum = inet_chksum_pseudo(p, &(pcb->local_ip), &(pcb->remote_ip), - IP_PROTO_TCP, p->tot_len); -#endif -#if LWIP_NETIF_HWADDRHINT - ip_output_hinted(p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos, - IP_PROTO_TCP, &(pcb->addr_hint)); -#else /* LWIP_NETIF_HWADDRHINT*/ - ip_output(p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos, - IP_PROTO_TCP); -#endif /* LWIP_NETIF_HWADDRHINT*/ - pbuf_free(p); - - return ERR_OK; -} - -/** - * Find out what we can send and send it - * - * @param pcb Protocol control block for the TCP connection to send data - * @return ERR_OK if data has been sent or nothing to send - * another err_t on error - */ -err_t -tcp_output(struct tcp_pcb *pcb) -{ - struct tcp_seg *seg, *useg; - u32_t wnd, snd_nxt; -#if TCP_CWND_DEBUG - s16_t i = 0; -#endif /* TCP_CWND_DEBUG */ - - /* First, check if we are invoked by the TCP input processing - code. If so, we do not output anything. Instead, we rely on the - input processing code to call us when input processing is done - with. */ - if (tcp_input_pcb == pcb) { - return ERR_OK; - } - - wnd = LWIP_MIN(pcb->snd_wnd, pcb->cwnd); - - seg = pcb->unsent; - - /* If the TF_ACK_NOW flag is set and no data will be sent (either - * because the ->unsent queue is empty or because the window does - * not allow it), construct an empty ACK segment and send it. - * - * If data is to be sent, we will just piggyback the ACK (see below). - */ - if (pcb->flags & TF_ACK_NOW && - (seg == NULL || - ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > wnd)) { - return tcp_send_empty_ack(pcb); - } - - /* useg should point to last segment on unacked queue */ - useg = pcb->unacked; - if (useg != NULL) { - for (; useg->next != NULL; useg = useg->next); - } - -#if TCP_OUTPUT_DEBUG - if (seg == NULL) { - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output: nothing to send (%p)\n", - (void*)pcb->unsent)); - } -#endif /* TCP_OUTPUT_DEBUG */ -#if TCP_CWND_DEBUG - if (seg == NULL) { - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_output: snd_wnd %"U16_F - ", cwnd %"U16_F", wnd %"U32_F - ", seg == NULL, ack %"U32_F"\n", - pcb->snd_wnd, pcb->cwnd, wnd, pcb->lastack)); - } else { - LWIP_DEBUGF(TCP_CWND_DEBUG, - ("tcp_output: snd_wnd %"U16_F", cwnd %"U16_F", wnd %"U32_F - ", effwnd %"U32_F", seq %"U32_F", ack %"U32_F"\n", - pcb->snd_wnd, pcb->cwnd, wnd, - ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len, - ntohl(seg->tcphdr->seqno), pcb->lastack)); - } -#endif /* TCP_CWND_DEBUG */ - /* data available and window allows it to be sent? */ - while (seg != NULL && - ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len <= wnd) { - LWIP_ASSERT("RST not expected here!", - (TCPH_FLAGS(seg->tcphdr) & TCP_RST) == 0); - /* Stop sending if the nagle algorithm would prevent it - * Don't stop: - * - if tcp_enqueue had a memory error before (prevent delayed ACK timeout) or - * - if FIN was already enqueued for this PCB (SYN is always alone in a segment - - * either seg->next != NULL or pcb->unacked == NULL; - * RST is no sent using tcp_enqueue/tcp_output. - */ - if((tcp_do_output_nagle(pcb) == 0) && - ((pcb->flags & (TF_NAGLEMEMERR | TF_FIN)) == 0)){ - break; - } -#if TCP_CWND_DEBUG - LWIP_DEBUGF(TCP_CWND_DEBUG, ("tcp_output: snd_wnd %"U16_F", cwnd %"U16_F", wnd %"U32_F", effwnd %"U32_F", seq %"U32_F", ack %"U32_F", i %"S16_F"\n", - pcb->snd_wnd, pcb->cwnd, wnd, - ntohl(seg->tcphdr->seqno) + seg->len - - pcb->lastack, - ntohl(seg->tcphdr->seqno), pcb->lastack, i)); - ++i; -#endif /* TCP_CWND_DEBUG */ - - pcb->unsent = seg->next; - - if (pcb->state != SYN_SENT) { - TCPH_SET_FLAG(seg->tcphdr, TCP_ACK); - pcb->flags &= ~(TF_ACK_DELAY | TF_ACK_NOW); - } - - tcp_output_segment(seg, pcb); - snd_nxt = ntohl(seg->tcphdr->seqno) + TCP_TCPLEN(seg); - if (TCP_SEQ_LT(pcb->snd_nxt, snd_nxt)) { - pcb->snd_nxt = snd_nxt; - } - /* put segment on unacknowledged list if length > 0 */ - if (TCP_TCPLEN(seg) > 0) { - seg->next = NULL; - /* unacked list is empty? */ - if (pcb->unacked == NULL) { - pcb->unacked = seg; - useg = seg; - /* unacked list is not empty? */ - } else { - /* In the case of fast retransmit, the packet should not go to the tail - * of the unacked queue, but rather somewhere before it. We need to check for - * this case. -STJ Jul 27, 2004 */ - if (TCP_SEQ_LT(ntohl(seg->tcphdr->seqno), ntohl(useg->tcphdr->seqno))){ - /* add segment to before tail of unacked list, keeping the list sorted */ - struct tcp_seg **cur_seg = &(pcb->unacked); - while (*cur_seg && - TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) { - cur_seg = &((*cur_seg)->next ); - } - seg->next = (*cur_seg); - (*cur_seg) = seg; - } else { - /* add segment to tail of unacked list */ - useg->next = seg; - useg = useg->next; - } - } - /* do not queue empty segments on the unacked list */ - } else { - tcp_seg_free(seg); - } - seg = pcb->unsent; - } - - if (seg != NULL && pcb->persist_backoff == 0 && - ntohl(seg->tcphdr->seqno) - pcb->lastack + seg->len > pcb->snd_wnd) { - /* prepare for persist timer */ - pcb->persist_cnt = 0; - pcb->persist_backoff = 1; - } - - pcb->flags &= ~TF_NAGLEMEMERR; - return ERR_OK; -} - -/** - * Called by tcp_output() to actually send a TCP segment over IP. - * - * @param seg the tcp_seg to send - * @param pcb the tcp_pcb for the TCP connection used to send the segment - */ -static void -tcp_output_segment(struct tcp_seg *seg, struct tcp_pcb *pcb) -{ - u16_t len; - struct netif *netif; - u32_t *opts; - - /** @bug Exclude retransmitted segments from this count. */ - snmp_inc_tcpoutsegs(); - - /* The TCP header has already been constructed, but the ackno and - wnd fields remain. */ - seg->tcphdr->ackno = htonl(pcb->rcv_nxt); - - /* advertise our receive window size in this TCP segment */ - seg->tcphdr->wnd = htons(pcb->rcv_ann_wnd); - - pcb->rcv_ann_right_edge = pcb->rcv_nxt + pcb->rcv_ann_wnd; - - /* Add any requested options. NB MSS option is only set on SYN - packets, so ignore it here */ - opts = (u32_t *)(seg->tcphdr + 1); - if (seg->flags & TF_SEG_OPTS_MSS) { - TCP_BUILD_MSS_OPTION(*opts); - opts += 1; - } -#if LWIP_TCP_TIMESTAMPS - pcb->ts_lastacksent = pcb->rcv_nxt; - - if (seg->flags & TF_SEG_OPTS_TS) { - tcp_build_timestamp_option(pcb, opts); - opts += 3; - } -#endif - -#ifdef _TEST_HD_ - /* ANGR: set rtime this _before_ checking ip_route(). Otherwise TCP_SYN will - * not be retransmitted in case the interface was down and tcp_connect() - * will not return any error. Since we still want the err_cb() (or maybe - * the wifi link comes up), make sure that we fulfill the retransmissions in - * tcp_slowtmr() - */ - - /* Set retransmission timer running if it is not currently enabled */ - if(pcb->rtime == -1) - pcb->rtime = 0; -#endif - - /* If we don't have a local IP address, we get one by - calling ip_route(). */ - if (ip_addr_isany(&(pcb->local_ip))) { - netif = ip_route(&(pcb->remote_ip)); - if (netif == NULL) { - return; - } - ip_addr_set(&(pcb->local_ip), &(netif->ip_addr)); - } - -#ifndef _TEST_HD_ - //Set retransmission timer running if it is not currently enabled - if(pcb->rtime == -1) - pcb->rtime = 0; -#endif - - if (pcb->rttest == 0) { - pcb->rttest = tcp_ticks; - pcb->rtseq = ntohl(seg->tcphdr->seqno); - - LWIP_DEBUGF(TCP_RTO_DEBUG, ("tcp_output_segment: rtseq %"U32_F"\n", pcb->rtseq)); - } - LWIP_DEBUGF(TCP_OUTPUT_DEBUG, ("tcp_output_segment: %"U32_F":%"U32_F"\n", - htonl(seg->tcphdr->seqno), htonl(seg->tcphdr->seqno) + - seg->len)); - - len = (u16_t)((u8_t *)seg->tcphdr - (u8_t *)seg->p->payload); - - seg->p->len -= len; - seg->p->tot_len -= len; - - seg->p->payload = seg->tcphdr; - - seg->tcphdr->chksum = 0; -#if CHECKSUM_GEN_TCP - seg->tcphdr->chksum = inet_chksum_pseudo(seg->p, - &(pcb->local_ip), - &(pcb->remote_ip), - IP_PROTO_TCP, seg->p->tot_len); -#endif - TCP_STATS_INC(tcp.xmit); - -#if LWIP_NETIF_HWADDRHINT - ip_output_hinted(seg->p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos, - IP_PROTO_TCP, &(pcb->addr_hint)); -#else /* LWIP_NETIF_HWADDRHINT*/ - ip_output(seg->p, &(pcb->local_ip), &(pcb->remote_ip), pcb->ttl, pcb->tos, - IP_PROTO_TCP); -#endif /* LWIP_NETIF_HWADDRHINT*/ -} - -/** - * Send a TCP RESET packet (empty segment with RST flag set) either to - * abort a connection or to show that there is no matching local connection - * for a received segment. - * - * Called by tcp_abort() (to abort a local connection), tcp_input() (if no - * matching local pcb was found), tcp_listen_input() (if incoming segment - * has ACK flag set) and tcp_process() (received segment in the wrong state) - * - * Since a RST segment is in most cases not sent for an active connection, - * tcp_rst() has a number of arguments that are taken from a tcp_pcb for - * most other segment output functions. - * - * @param seqno the sequence number to use for the outgoing segment - * @param ackno the acknowledge number to use for the outgoing segment - * @param local_ip the local IP address to send the segment from - * @param remote_ip the remote IP address to send the segment to - * @param local_port the local TCP port to send the segment from - * @param remote_port the remote TCP port to send the segment to - */ -void -tcp_rst(u32_t seqno, u32_t ackno, - struct ip_addr *local_ip, struct ip_addr *remote_ip, - u16_t local_port, u16_t remote_port) -{ - struct pbuf *p; - struct tcp_hdr *tcphdr; - p = pbuf_alloc(PBUF_IP, TCP_HLEN, PBUF_RAM); - if (p == NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_rst: could not allocate memory for pbuf\n")); - return; - } - LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr", - (p->len >= sizeof(struct tcp_hdr))); - - tcphdr = p->payload; - tcphdr->src = htons(local_port); - tcphdr->dest = htons(remote_port); - tcphdr->seqno = htonl(seqno); - tcphdr->ackno = htonl(ackno); - TCPH_FLAGS_SET(tcphdr, TCP_RST | TCP_ACK); - tcphdr->wnd = htons(TCP_WND); - tcphdr->urgp = 0; - TCPH_HDRLEN_SET(tcphdr, 5); - - tcphdr->chksum = 0; -#if CHECKSUM_GEN_TCP - tcphdr->chksum = inet_chksum_pseudo(p, local_ip, remote_ip, - IP_PROTO_TCP, p->tot_len); -#endif - TCP_STATS_INC(tcp.xmit); - snmp_inc_tcpoutrsts(); - /* Send output with hardcoded TTL since we have no access to the pcb */ - ip_output(p, local_ip, remote_ip, TCP_TTL, 0, IP_PROTO_TCP); - pbuf_free(p); - LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_rst: seqno %"U32_F" ackno %"U32_F".\n", seqno, ackno)); -} - -/** - * Requeue all unacked segments for retransmission - * - * Called by tcp_slowtmr() for slow retransmission. - * - * @param pcb the tcp_pcb for which to re-enqueue all unacked segments - */ -void -tcp_rexmit_rto(struct tcp_pcb *pcb) -{ - struct tcp_seg *seg; - - if (pcb->unacked == NULL) { - return; - } - - /* Move all unacked segments to the head of the unsent queue */ - for (seg = pcb->unacked; seg->next != NULL; seg = seg->next); - /* concatenate unsent queue after unacked queue */ - seg->next = pcb->unsent; - /* unsent queue is the concatenated queue (of unacked, unsent) */ - pcb->unsent = pcb->unacked; - /* unacked queue is now empty */ - pcb->unacked = NULL; - - /* increment number of retransmissions */ - ++pcb->nrtx; - - /* Don't take any RTT measurements after retransmitting. */ - pcb->rttest = 0; - - /* Do the actual retransmission */ - tcp_output(pcb); -} - -/** - * Requeue the first unacked segment for retransmission - * - * Called by tcp_receive() for fast retramsmit. - * - * @param pcb the tcp_pcb for which to retransmit the first unacked segment - */ -void -tcp_rexmit(struct tcp_pcb *pcb) -{ - struct tcp_seg *seg; - struct tcp_seg **cur_seg; - - if (pcb->unacked == NULL) { - return; - } - - /* Move the first unacked segment to the unsent queue */ - /* Keep the unsent queue sorted. */ - seg = pcb->unacked; - pcb->unacked = seg->next; - - cur_seg = &(pcb->unsent); - while (*cur_seg && - TCP_SEQ_LT(ntohl((*cur_seg)->tcphdr->seqno), ntohl(seg->tcphdr->seqno))) { - cur_seg = &((*cur_seg)->next ); - } - seg->next = *cur_seg; - *cur_seg = seg; - - ++pcb->nrtx; - - /* Don't take any rtt measurements after retransmitting. */ - pcb->rttest = 0; - - /* Do the actual retransmission. */ - snmp_inc_tcpretranssegs(); - /* No need to call tcp_output: we are always called from tcp_input() - and thus tcp_output directly returns. */ -} - - -/** - * Handle retransmission after three dupacks received - * - * @param pcb the tcp_pcb for which to retransmit the first unacked segment - */ -void -tcp_rexmit_fast(struct tcp_pcb *pcb) -{ - if (pcb->unacked != NULL && !(pcb->flags & TF_INFR)) { - /* This is fast retransmit. Retransmit the first unacked segment. */ - LWIP_DEBUGF(TCP_FR_DEBUG, - ("tcp_receive: dupacks %"U16_F" (%"U32_F - "), fast retransmit %"U32_F"\n", - (u16_t)pcb->dupacks, pcb->lastack, - ntohl(pcb->unacked->tcphdr->seqno))); - tcp_rexmit(pcb); - - /* Set ssthresh to half of the minimum of the current - * cwnd and the advertised window */ - if (pcb->cwnd > pcb->snd_wnd) - pcb->ssthresh = pcb->snd_wnd / 2; - else - pcb->ssthresh = pcb->cwnd / 2; - - /* The minimum value for ssthresh should be 2 MSS */ - if (pcb->ssthresh < 2*pcb->mss) { - LWIP_DEBUGF(TCP_FR_DEBUG, - ("tcp_receive: The minimum value for ssthresh %"U16_F - " should be min 2 mss %"U16_F"...\n", - pcb->ssthresh, 2*pcb->mss)); - pcb->ssthresh = 2*pcb->mss; - } - - pcb->cwnd = pcb->ssthresh + 3 * pcb->mss; - pcb->flags |= TF_INFR; - } -} - - -/** - * Send keepalive packets to keep a connection active although - * no data is sent over it. - * - * Called by tcp_slowtmr() - * - * @param pcb the tcp_pcb for which to send a keepalive packet - */ -void -tcp_keepalive(struct tcp_pcb *pcb) -{ - struct pbuf *p; - struct tcp_hdr *tcphdr; - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: sending KEEPALIVE probe to %"U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip), - ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip))); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: tcp_ticks %"U32_F" pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n", - tcp_ticks, pcb->tmr, pcb->keep_cnt_sent)); - - p = pbuf_alloc(PBUF_IP, TCP_HLEN, PBUF_RAM); - - if(p == NULL) { - LWIP_DEBUGF(TCP_DEBUG, - ("tcp_keepalive: could not allocate memory for pbuf\n")); - return; - } - LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr", - (p->len >= sizeof(struct tcp_hdr))); - - tcphdr = tcp_output_set_header(pcb, p, 0, htonl(pcb->snd_nxt - 1)); - -#if CHECKSUM_GEN_TCP - tcphdr->chksum = inet_chksum_pseudo(p, &pcb->local_ip, &pcb->remote_ip, - IP_PROTO_TCP, p->tot_len); -#endif - TCP_STATS_INC(tcp.xmit); - - /* Send output to IP */ -#if LWIP_NETIF_HWADDRHINT - ip_output_hinted(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP, - &(pcb->addr_hint)); -#else /* LWIP_NETIF_HWADDRHINT*/ - ip_output(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP); -#endif /* LWIP_NETIF_HWADDRHINT*/ - - pbuf_free(p); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_keepalive: seqno %"U32_F" ackno %"U32_F".\n", - pcb->snd_nxt - 1, pcb->rcv_nxt)); -} - - -/** - * Send persist timer zero-window probes to keep a connection active - * when a window update is lost. - * - * Called by tcp_slowtmr() - * - * @param pcb the tcp_pcb for which to send a zero-window probe packet - */ -void -tcp_zero_window_probe(struct tcp_pcb *pcb) -{ - struct pbuf *p; - struct tcp_hdr *tcphdr; - struct tcp_seg *seg; - u16_t len; - u8_t is_fin; - - LWIP_DEBUGF(TCP_DEBUG, - ("tcp_zero_window_probe: sending ZERO WINDOW probe to %" - U16_F".%"U16_F".%"U16_F".%"U16_F"\n", - ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip), - ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip))); - - LWIP_DEBUGF(TCP_DEBUG, - ("tcp_zero_window_probe: tcp_ticks %"U32_F - " pcb->tmr %"U32_F" pcb->keep_cnt_sent %"U16_F"\n", - tcp_ticks, pcb->tmr, pcb->keep_cnt_sent)); - - seg = pcb->unacked; - - if(seg == NULL) - seg = pcb->unsent; - - if(seg == NULL) - return; - - is_fin = ((TCPH_FLAGS(seg->tcphdr) & TCP_FIN) != 0) && (seg->len == 0); - len = is_fin ? TCP_HLEN : TCP_HLEN + 1; - - p = pbuf_alloc(PBUF_IP, len, PBUF_RAM); - if(p == NULL) { - LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: no memory for pbuf\n")); - return; - } - LWIP_ASSERT("check that first pbuf can hold struct tcp_hdr", - (p->len >= sizeof(struct tcp_hdr))); - - tcphdr = tcp_output_set_header(pcb, p, 0, seg->tcphdr->seqno); - - if (is_fin) { - /* FIN segment, no data */ - TCPH_FLAGS_SET(tcphdr, TCP_ACK | TCP_FIN); - } else { - /* Data segment, copy in one byte from the head of the unacked queue */ - *((char *)p->payload + sizeof(struct tcp_hdr)) = *(char *)seg->dataptr; - } - -#if CHECKSUM_GEN_TCP - tcphdr->chksum = inet_chksum_pseudo(p, &pcb->local_ip, &pcb->remote_ip, - IP_PROTO_TCP, p->tot_len); -#endif - TCP_STATS_INC(tcp.xmit); - - /* Send output to IP */ -#if LWIP_NETIF_HWADDRHINT - ip_output_hinted(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP, - &(pcb->addr_hint)); -#else /* LWIP_NETIF_HWADDRHINT*/ - ip_output(p, &pcb->local_ip, &pcb->remote_ip, pcb->ttl, 0, IP_PROTO_TCP); -#endif /* LWIP_NETIF_HWADDRHINT*/ - - pbuf_free(p); - - LWIP_DEBUGF(TCP_DEBUG, ("tcp_zero_window_probe: seqno %"U32_F - " ackno %"U32_F".\n", - pcb->snd_nxt - 1, pcb->rcv_nxt)); -} -#endif /* LWIP_TCP */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/udp.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/udp.c deleted file mode 100644 index 697ca7ce34d..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/core/udp.c +++ /dev/null @@ -1,843 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * User Datagram Protocol module - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - - -/* udp.c - * - * The code for the User Datagram Protocol UDP & UDPLite (RFC 3828). - * - */ - -/* @todo Check the use of '(struct udp_pcb).chksum_len_rx'! - */ - -#include "lwip/opt.h" - -#if LWIP_UDP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/udp.h" -#include "lwip/def.h" -#include "lwip/memp.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/icmp.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "arch/perf.h" -#include "lwip/dhcp.h" - -#include - -/* The list of UDP PCBs */ -/* exported in udp.h (was static) */ -struct udp_pcb *udp_pcbs; - -/** - * Process an incoming UDP datagram. - * - * Given an incoming UDP datagram (as a chain of pbufs) this function - * finds a corresponding UDP PCB and hands over the pbuf to the pcbs - * recv function. If no pcb is found or the datagram is incorrect, the - * pbuf is freed. - * - * @param p pbuf to be demultiplexed to a UDP PCB. - * @param inp network interface on which the datagram was received. - * - */ -void -udp_input(struct pbuf *p, struct netif *inp) -{ - struct udp_hdr *udphdr; - struct udp_pcb *pcb, *prev; - struct udp_pcb *uncon_pcb; - struct ip_hdr *iphdr; - u16_t src, dest; - u8_t local_match; - u8_t broadcast; - - PERF_START; - - UDP_STATS_INC(udp.recv); - - iphdr = p->payload; - - /* Check minimum length (IP header + UDP header) - * and move payload pointer to UDP header */ - if (p->tot_len < (IPH_HL(iphdr) * 4 + UDP_HLEN) || pbuf_header(p, -(s16_t)(IPH_HL(iphdr) * 4))) { - /* drop short packets */ - LWIP_DEBUGF(UDP_DEBUG, - ("udp_input: short UDP datagram (%"U16_F" bytes) discarded\n", p->tot_len)); - UDP_STATS_INC(udp.lenerr); - UDP_STATS_INC(udp.drop); - snmp_inc_udpinerrors(); - pbuf_free(p); - goto end; - } - - udphdr = (struct udp_hdr *)p->payload; - - /* is broadcast packet ? */ - broadcast = ip_addr_isbroadcast(&(iphdr->dest), inp); - - LWIP_DEBUGF(UDP_DEBUG, ("udp_input: received datagram of length %"U16_F"\n", p->tot_len)); - - /* convert src and dest ports to host byte order */ - src = ntohs(udphdr->src); - dest = ntohs(udphdr->dest); - - udp_debug_print(udphdr); - - /* print the UDP source and destination */ - LWIP_DEBUGF(UDP_DEBUG, - ("udp (%"U16_F".%"U16_F".%"U16_F".%"U16_F", %"U16_F") <-- " - "(%"U16_F".%"U16_F".%"U16_F".%"U16_F", %"U16_F")\n", - ip4_addr1(&iphdr->dest), ip4_addr2(&iphdr->dest), - ip4_addr3(&iphdr->dest), ip4_addr4(&iphdr->dest), ntohs(udphdr->dest), - ip4_addr1(&iphdr->src), ip4_addr2(&iphdr->src), - ip4_addr3(&iphdr->src), ip4_addr4(&iphdr->src), ntohs(udphdr->src))); - -#if LWIP_DHCP - pcb = NULL; - /* when LWIP_DHCP is active, packets to DHCP_CLIENT_PORT may only be processed by - the dhcp module, no other UDP pcb may use the local UDP port DHCP_CLIENT_PORT */ - if (dest == DHCP_CLIENT_PORT) { - /* all packets for DHCP_CLIENT_PORT not coming from DHCP_SERVER_PORT are dropped! */ - if (src == DHCP_SERVER_PORT) { - if ((inp->dhcp != NULL) && (inp->dhcp->pcb != NULL)) { - /* accept the packe if - (- broadcast or directed to us) -> DHCP is link-layer-addressed, local ip is always ANY! - - inp->dhcp->pcb->remote == ANY or iphdr->src */ - if ((ip_addr_isany(&inp->dhcp->pcb->remote_ip) || - ip_addr_cmp(&(inp->dhcp->pcb->remote_ip), &(iphdr->src)))) { - pcb = inp->dhcp->pcb; - } - } - } - } else -#endif /* LWIP_DHCP */ - { - prev = NULL; - local_match = 0; - uncon_pcb = NULL; - /* Iterate through the UDP pcb list for a matching pcb. - * 'Perfect match' pcbs (connected to the remote port & ip address) are - * preferred. If no perfect match is found, the first unconnected pcb that - * matches the local port and ip address gets the datagram. */ - for (pcb = udp_pcbs; pcb != NULL; pcb = pcb->next) { - local_match = 0; - /* print the PCB local and remote address */ - LWIP_DEBUGF(UDP_DEBUG, - ("pcb (%"U16_F".%"U16_F".%"U16_F".%"U16_F", %"U16_F") --- " - "(%"U16_F".%"U16_F".%"U16_F".%"U16_F", %"U16_F")\n", - ip4_addr1(&pcb->local_ip), ip4_addr2(&pcb->local_ip), - ip4_addr3(&pcb->local_ip), ip4_addr4(&pcb->local_ip), pcb->local_port, - ip4_addr1(&pcb->remote_ip), ip4_addr2(&pcb->remote_ip), - ip4_addr3(&pcb->remote_ip), ip4_addr4(&pcb->remote_ip), pcb->remote_port)); - - /* compare PCB local addr+port to UDP destination addr+port */ - if ((pcb->local_port == dest) && - ((!broadcast && ip_addr_isany(&pcb->local_ip)) || - ip_addr_cmp(&(pcb->local_ip), &(iphdr->dest)) || -#if LWIP_IGMP - ip_addr_ismulticast(&(iphdr->dest)) || -#endif /* LWIP_IGMP */ -#if IP_SOF_BROADCAST_RECV - (broadcast && (pcb->so_options & SOF_BROADCAST)))) { -#else /* IP_SOF_BROADCAST_RECV */ - (broadcast))) { -#endif /* IP_SOF_BROADCAST_RECV */ - local_match = 1; - if ((uncon_pcb == NULL) && - ((pcb->flags & UDP_FLAGS_CONNECTED) == 0)) { - /* the first unconnected matching PCB */ - uncon_pcb = pcb; - } - } - /* compare PCB remote addr+port to UDP source addr+port */ - if ((local_match != 0) && - (pcb->remote_port == src) && - (ip_addr_isany(&pcb->remote_ip) || - ip_addr_cmp(&(pcb->remote_ip), &(iphdr->src)))) { - /* the first fully matching PCB */ - if (prev != NULL) { - /* move the pcb to the front of udp_pcbs so that is - found faster next time */ - prev->next = pcb->next; - pcb->next = udp_pcbs; - udp_pcbs = pcb; - } else { - UDP_STATS_INC(udp.cachehit); - } - break; - } - prev = pcb; - } - /* no fully matching pcb found? then look for an unconnected pcb */ - if (pcb == NULL) { - pcb = uncon_pcb; - } - } - - /* Check checksum if this is a match or if it was directed at us. */ - if (pcb != NULL || ip_addr_cmp(&inp->ip_addr, &iphdr->dest)) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_input: calculating checksum\n")); -#if LWIP_UDPLITE - if (IPH_PROTO(iphdr) == IP_PROTO_UDPLITE) { - /* Do the UDP Lite checksum */ -#if CHECKSUM_CHECK_UDP - u16_t chklen = ntohs(udphdr->len); - if (chklen < sizeof(struct udp_hdr)) { - if (chklen == 0) { - /* For UDP-Lite, checksum length of 0 means checksum - over the complete packet (See RFC 3828 chap. 3.1) */ - chklen = p->tot_len; - } else { - /* At least the UDP-Lite header must be covered by the - checksum! (Again, see RFC 3828 chap. 3.1) */ - UDP_STATS_INC(udp.chkerr); - UDP_STATS_INC(udp.drop); - snmp_inc_udpinerrors(); - pbuf_free(p); - goto end; - } - } - if (inet_chksum_pseudo_partial(p, (struct ip_addr *)&(iphdr->src), - (struct ip_addr *)&(iphdr->dest), - IP_PROTO_UDPLITE, p->tot_len, chklen) != 0) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("udp_input: UDP Lite datagram discarded due to failing checksum\n")); - UDP_STATS_INC(udp.chkerr); - UDP_STATS_INC(udp.drop); - snmp_inc_udpinerrors(); - pbuf_free(p); - goto end; - } -#endif /* CHECKSUM_CHECK_UDP */ - } else -#endif /* LWIP_UDPLITE */ - { -#if CHECKSUM_CHECK_UDP - if (udphdr->chksum != 0) { - if (inet_chksum_pseudo(p, (struct ip_addr *)&(iphdr->src), - (struct ip_addr *)&(iphdr->dest), - IP_PROTO_UDP, p->tot_len) != 0) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("udp_input: UDP datagram discarded due to failing checksum\n")); - UDP_STATS_INC(udp.chkerr); - UDP_STATS_INC(udp.drop); - snmp_inc_udpinerrors(); - pbuf_free(p); - goto end; - } - } -#endif /* CHECKSUM_CHECK_UDP */ - } - if(pbuf_header(p, -UDP_HLEN)) { - /* Can we cope with this failing? Just assert for now */ - LWIP_ASSERT("pbuf_header failed\n", 0); - UDP_STATS_INC(udp.drop); - snmp_inc_udpinerrors(); - pbuf_free(p); - goto end; - } - if (pcb != NULL) { - snmp_inc_udpindatagrams(); - /* callback */ - if (pcb->recv != NULL) { - /* now the recv function is responsible for freeing p */ - pcb->recv(pcb->recv_arg, pcb, p, &iphdr->src, src); - } else { - /* no recv function registered? then we have to free the pbuf! */ - pbuf_free(p); - goto end; - } - } else { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_input: not for us.\n")); - -#if LWIP_ICMP - /* No match was found, send ICMP destination port unreachable unless - destination address was broadcast/multicast. */ - if (!broadcast && - !ip_addr_ismulticast(&iphdr->dest)) { - /* move payload pointer back to ip header */ - pbuf_header(p, (IPH_HL(iphdr) * 4) + UDP_HLEN); - LWIP_ASSERT("p->payload == iphdr", (p->payload == iphdr)); - icmp_dest_unreach(p, ICMP_DUR_PORT); - } -#endif /* LWIP_ICMP */ - UDP_STATS_INC(udp.proterr); - UDP_STATS_INC(udp.drop); - snmp_inc_udpnoports(); - pbuf_free(p); - } - } else { - pbuf_free(p); - } -end: - PERF_STOP("udp_input"); -} - -/** - * Send data using UDP. - * - * @param pcb UDP PCB used to send the data. - * @param p chain of pbuf's to be sent. - * - * The datagram will be sent to the current remote_ip & remote_port - * stored in pcb. If the pcb is not bound to a port, it will - * automatically be bound to a random port. - * - * @return lwIP error code. - * - ERR_OK. Successful. No error occured. - * - ERR_MEM. Out of memory. - * - ERR_RTE. Could not find route to destination address. - * - More errors could be returned by lower protocol layers. - * - * @see udp_disconnect() udp_sendto() - */ -err_t -udp_send(struct udp_pcb *pcb, struct pbuf *p) -{ - /* send to the packet using remote ip and port stored in the pcb */ - return udp_sendto(pcb, p, &pcb->remote_ip, pcb->remote_port); -} - -/** - * Send data to a specified address using UDP. - * - * @param pcb UDP PCB used to send the data. - * @param p chain of pbuf's to be sent. - * @param dst_ip Destination IP address. - * @param dst_port Destination UDP port. - * - * dst_ip & dst_port are expected to be in the same byte order as in the pcb. - * - * If the PCB already has a remote address association, it will - * be restored after the data is sent. - * - * @return lwIP error code (@see udp_send for possible error codes) - * - * @see udp_disconnect() udp_send() - */ -err_t -udp_sendto(struct udp_pcb *pcb, struct pbuf *p, - struct ip_addr *dst_ip, u16_t dst_port) -{ - struct netif *netif; - - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send\n")); - - /* find the outgoing network interface for this packet */ -#if LWIP_IGMP - netif = ip_route((ip_addr_ismulticast(dst_ip))?(&(pcb->multicast_ip)):(dst_ip)); -#else - netif = ip_route(dst_ip); -#endif /* LWIP_IGMP */ - - /* no outgoing network interface could be found? */ - if (netif == NULL) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: No route to 0x%"X32_F"\n", dst_ip->addr)); - UDP_STATS_INC(udp.rterr); - return ERR_RTE; - } - return udp_sendto_if(pcb, p, dst_ip, dst_port, netif); -} - -/** - * Send data to a specified address using UDP. - * The netif used for sending can be specified. - * - * This function exists mainly for DHCP, to be able to send UDP packets - * on a netif that is still down. - * - * @param pcb UDP PCB used to send the data. - * @param p chain of pbuf's to be sent. - * @param dst_ip Destination IP address. - * @param dst_port Destination UDP port. - * @param netif the netif used for sending. - * - * dst_ip & dst_port are expected to be in the same byte order as in the pcb. - * - * @return lwIP error code (@see udp_send for possible error codes) - * - * @see udp_disconnect() udp_send() - */ -err_t -udp_sendto_if(struct udp_pcb *pcb, struct pbuf *p, - struct ip_addr *dst_ip, u16_t dst_port, struct netif *netif) -{ - struct udp_hdr *udphdr; - struct ip_addr *src_ip; - err_t err; - struct pbuf *q; /* q will be sent down the stack */ - -#if IP_SOF_BROADCAST - /* broadcast filter? */ - if ( ((pcb->so_options & SOF_BROADCAST) == 0) && ip_addr_isbroadcast(dst_ip, netif) ) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS, - ("udp_sendto_if: SOF_BROADCAST not enabled on pcb %p\n", (void *)pcb)); - return ERR_VAL; - } -#endif /* IP_SOF_BROADCAST */ - - /* if the PCB is not yet bound to a port, bind it here */ - if (pcb->local_port == 0) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_send: not yet bound to a port, binding now\n")); - err = udp_bind(pcb, &pcb->local_ip, pcb->local_port); - if (err != ERR_OK) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: forced port bind failed\n")); - return err; - } - } - - /* not enough space to add an UDP header to first pbuf in given p chain? */ - if (pbuf_header(p, UDP_HLEN)) { - /* allocate header in a separate new pbuf */ - q = pbuf_alloc(PBUF_IP, UDP_HLEN, PBUF_RAM); - /* new header pbuf could not be allocated? */ - if (q == NULL) { - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, ("udp_send: could not allocate header\n")); - return ERR_MEM; - } - /* chain header q in front of given pbuf p */ - pbuf_chain(q, p); - /* first pbuf q points to header pbuf */ - LWIP_DEBUGF(UDP_DEBUG, - ("udp_send: added header pbuf %p before given pbuf %p\n", (void *)q, (void *)p)); - } else { - /* adding space for header within p succeeded */ - /* first pbuf q equals given pbuf */ - q = p; - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: added header in given pbuf %p\n", (void *)p)); - } - LWIP_ASSERT("check that first pbuf can hold struct udp_hdr", - (q->len >= sizeof(struct udp_hdr))); - /* q now represents the packet to be sent */ - udphdr = q->payload; - udphdr->src = htons(pcb->local_port); - udphdr->dest = htons(dst_port); - /* in UDP, 0 checksum means 'no checksum' */ - udphdr->chksum = 0x0000; - - /* PCB local address is IP_ANY_ADDR? */ - if (ip_addr_isany(&pcb->local_ip)) { - /* use outgoing network interface IP address as source address */ - src_ip = &(netif->ip_addr); - } else { - /* check if UDP PCB local IP address is correct - * this could be an old address if netif->ip_addr has changed */ - if (!ip_addr_cmp(&(pcb->local_ip), &(netif->ip_addr))) { - /* local_ip doesn't match, drop the packet */ - if (q != p) { - /* free the header pbuf */ - pbuf_free(q); - q = NULL; - /* p is still referenced by the caller, and will live on */ - } - return ERR_VAL; - } - /* use UDP PCB local IP address as source address */ - src_ip = &(pcb->local_ip); - } - - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: sending datagram of length %"U16_F"\n", q->tot_len)); - -#if LWIP_UDPLITE - /* UDP Lite protocol? */ - if (pcb->flags & UDP_FLAGS_UDPLITE) { - u16_t chklen, chklen_hdr; - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP LITE packet length %"U16_F"\n", q->tot_len)); - /* set UDP message length in UDP header */ - chklen_hdr = chklen = pcb->chksum_len_tx; - if ((chklen < sizeof(struct udp_hdr)) || (chklen > q->tot_len)) { - if (chklen != 0) { - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP LITE pcb->chksum_len is illegal: %"U16_F"\n", chklen)); - } - /* For UDP-Lite, checksum length of 0 means checksum - over the complete packet. (See RFC 3828 chap. 3.1) - At least the UDP-Lite header must be covered by the - checksum, therefore, if chksum_len has an illegal - value, we generate the checksum over the complete - packet to be safe. */ - chklen_hdr = 0; - chklen = q->tot_len; - } - udphdr->len = htons(chklen_hdr); - /* calculate checksum */ -#if CHECKSUM_GEN_UDP - udphdr->chksum = inet_chksum_pseudo_partial(q, src_ip, dst_ip, - IP_PROTO_UDPLITE, q->tot_len, chklen); - /* chksum zero must become 0xffff, as zero means 'no checksum' */ - if (udphdr->chksum == 0x0000) - udphdr->chksum = 0xffff; -#endif /* CHECKSUM_CHECK_UDP */ - /* output to IP */ - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: ip_output_if (,,,,IP_PROTO_UDPLITE,)\n")); -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = &(pcb->addr_hint); -#endif /* LWIP_NETIF_HWADDRHINT*/ - err = ip_output_if(q, src_ip, dst_ip, pcb->ttl, pcb->tos, IP_PROTO_UDPLITE, netif); -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = NULL; -#endif /* LWIP_NETIF_HWADDRHINT*/ - } else -#endif /* LWIP_UDPLITE */ - { /* UDP */ - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP packet length %"U16_F"\n", q->tot_len)); - udphdr->len = htons(q->tot_len); - /* calculate checksum */ -#if CHECKSUM_GEN_UDP - if ((pcb->flags & UDP_FLAGS_NOCHKSUM) == 0) { - udphdr->chksum = inet_chksum_pseudo(q, src_ip, dst_ip, IP_PROTO_UDP, q->tot_len); - /* chksum zero must become 0xffff, as zero means 'no checksum' */ - if (udphdr->chksum == 0x0000) udphdr->chksum = 0xffff; - } -#endif /* CHECKSUM_CHECK_UDP */ - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: UDP checksum 0x%04"X16_F"\n", udphdr->chksum)); - LWIP_DEBUGF(UDP_DEBUG, ("udp_send: ip_output_if (,,,,IP_PROTO_UDP,)\n")); - /* output to IP */ -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = &(pcb->addr_hint); -#endif /* LWIP_NETIF_HWADDRHINT*/ - err = ip_output_if(q, src_ip, dst_ip, pcb->ttl, pcb->tos, IP_PROTO_UDP, netif); -#if LWIP_NETIF_HWADDRHINT - netif->addr_hint = NULL; -#endif /* LWIP_NETIF_HWADDRHINT*/ - } - /* TODO: must this be increased even if error occured? */ - snmp_inc_udpoutdatagrams(); - - /* did we chain a separate header pbuf earlier? */ - if (q != p) { - /* free the header pbuf */ - pbuf_free(q); - q = NULL; - /* p is still referenced by the caller, and will live on */ - } - - UDP_STATS_INC(udp.xmit); - return err; -} - -/** - * Bind an UDP PCB. - * - * @param pcb UDP PCB to be bound with a local address ipaddr and port. - * @param ipaddr local IP address to bind with. Use IP_ADDR_ANY to - * bind to all local interfaces. - * @param port local UDP port to bind with. Use 0 to automatically bind - * to a random port between UDP_LOCAL_PORT_RANGE_START and - * UDP_LOCAL_PORT_RANGE_END. - * - * ipaddr & port are expected to be in the same byte order as in the pcb. - * - * @return lwIP error code. - * - ERR_OK. Successful. No error occured. - * - ERR_USE. The specified ipaddr and port are already bound to by - * another UDP PCB. - * - * @see udp_disconnect() - */ -err_t -udp_bind(struct udp_pcb *pcb, struct ip_addr *ipaddr, u16_t port) -{ - struct udp_pcb *ipcb; - u8_t rebind; - - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, ("udp_bind(ipaddr = ")); - ip_addr_debug_print(UDP_DEBUG, ipaddr); - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE, (", port = %"U16_F")\n", port)); - - rebind = 0; - /* Check for double bind and rebind of the same pcb */ - for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - /* is this UDP PCB already on active list? */ - if (pcb == ipcb) { - /* pcb may occur at most once in active list */ - LWIP_ASSERT("rebind == 0", rebind == 0); - /* pcb already in list, just rebind */ - rebind = 1; - } - - /* this code does not allow upper layer to share a UDP port for - listening to broadcast or multicast traffic (See SO_REUSE_ADDR and - SO_REUSE_PORT under *BSD). TODO: See where it fits instead, OR - combine with implementation of UDP PCB flags. Leon Woestenberg. */ -#ifdef LWIP_UDP_TODO - /* port matches that of PCB in list? */ - else - if ((ipcb->local_port == port) && - /* IP address matches, or one is IP_ADDR_ANY? */ - (ip_addr_isany(&(ipcb->local_ip)) || - ip_addr_isany(ipaddr) || - ip_addr_cmp(&(ipcb->local_ip), ipaddr))) { - /* other PCB already binds to this local IP and port */ - LWIP_DEBUGF(UDP_DEBUG, - ("udp_bind: local port %"U16_F" already bound by another pcb\n", port)); - return ERR_USE; - } -#endif - } - - ip_addr_set(&pcb->local_ip, ipaddr); - - /* no port specified? */ - if (port == 0) { -#ifndef UDP_LOCAL_PORT_RANGE_START -#define UDP_LOCAL_PORT_RANGE_START 4096 -#define UDP_LOCAL_PORT_RANGE_END 0x7fff -#endif - port = UDP_LOCAL_PORT_RANGE_START; - ipcb = udp_pcbs; - while ((ipcb != NULL) && (port != UDP_LOCAL_PORT_RANGE_END)) { - if (ipcb->local_port == port) { - /* port is already used by another udp_pcb */ - port++; - /* restart scanning all udp pcbs */ - ipcb = udp_pcbs; - } else - /* go on with next udp pcb */ - ipcb = ipcb->next; - } - if (ipcb != NULL) { - /* no more ports available in local range */ - LWIP_DEBUGF(UDP_DEBUG, ("udp_bind: out of free UDP ports\n")); - return ERR_USE; - } - } - pcb->local_port = port; - snmp_insert_udpidx_tree(pcb); - /* pcb not active yet? */ - if (rebind == 0) { - /* place the PCB on the active list if not already there */ - pcb->next = udp_pcbs; - udp_pcbs = pcb; - } - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("udp_bind: bound to %"U16_F".%"U16_F".%"U16_F".%"U16_F", port %"U16_F"\n", - (u16_t)((ntohl(pcb->local_ip.addr) >> 24) & 0xff), - (u16_t)((ntohl(pcb->local_ip.addr) >> 16) & 0xff), - (u16_t)((ntohl(pcb->local_ip.addr) >> 8) & 0xff), - (u16_t)(ntohl(pcb->local_ip.addr) & 0xff), pcb->local_port)); - return ERR_OK; -} -/** - * Connect an UDP PCB. - * - * This will associate the UDP PCB with the remote address. - * - * @param pcb UDP PCB to be connected with remote address ipaddr and port. - * @param ipaddr remote IP address to connect with. - * @param port remote UDP port to connect with. - * - * @return lwIP error code - * - * ipaddr & port are expected to be in the same byte order as in the pcb. - * - * The udp pcb is bound to a random local port if not already bound. - * - * @see udp_disconnect() - */ -err_t -udp_connect(struct udp_pcb *pcb, struct ip_addr *ipaddr, u16_t port) -{ - struct udp_pcb *ipcb; - - if (pcb->local_port == 0) { - err_t err = udp_bind(pcb, &pcb->local_ip, pcb->local_port); - if (err != ERR_OK) - return err; - } - - ip_addr_set(&pcb->remote_ip, ipaddr); - pcb->remote_port = port; - pcb->flags |= UDP_FLAGS_CONNECTED; -/** TODO: this functionality belongs in upper layers */ -#ifdef LWIP_UDP_TODO - /* Nail down local IP for netconn_addr()/getsockname() */ - if (ip_addr_isany(&pcb->local_ip) && !ip_addr_isany(&pcb->remote_ip)) { - struct netif *netif; - - if ((netif = ip_route(&(pcb->remote_ip))) == NULL) { - LWIP_DEBUGF(UDP_DEBUG, ("udp_connect: No route to 0x%lx\n", pcb->remote_ip.addr)); - UDP_STATS_INC(udp.rterr); - return ERR_RTE; - } - /** TODO: this will bind the udp pcb locally, to the interface which - is used to route output packets to the remote address. However, we - might want to accept incoming packets on any interface! */ - pcb->local_ip = netif->ip_addr; - } else if (ip_addr_isany(&pcb->remote_ip)) { - pcb->local_ip.addr = 0; - } -#endif - LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, - ("udp_connect: connected to %"U16_F".%"U16_F".%"U16_F".%"U16_F",port %"U16_F"\n", - (u16_t)((ntohl(pcb->remote_ip.addr) >> 24) & 0xff), - (u16_t)((ntohl(pcb->remote_ip.addr) >> 16) & 0xff), - (u16_t)((ntohl(pcb->remote_ip.addr) >> 8) & 0xff), - (u16_t)(ntohl(pcb->remote_ip.addr) & 0xff), pcb->remote_port)); - - /* Insert UDP PCB into the list of active UDP PCBs. */ - for (ipcb = udp_pcbs; ipcb != NULL; ipcb = ipcb->next) { - if (pcb == ipcb) { - /* already on the list, just return */ - return ERR_OK; - } - } - /* PCB not yet on the list, add PCB now */ - pcb->next = udp_pcbs; - udp_pcbs = pcb; - return ERR_OK; -} - -/** - * Disconnect a UDP PCB - * - * @param pcb the udp pcb to disconnect. - */ -void -udp_disconnect(struct udp_pcb *pcb) -{ - /* reset remote address association */ - ip_addr_set(&pcb->remote_ip, IP_ADDR_ANY); - pcb->remote_port = 0; - /* mark PCB as unconnected */ - pcb->flags &= ~UDP_FLAGS_CONNECTED; -} - -/** - * Set a receive callback for a UDP PCB - * - * This callback will be called when receiving a datagram for the pcb. - * - * @param pcb the pcb for wich to set the recv callback - * @param recv function pointer of the callback function - * @param recv_arg additional argument to pass to the callback function - */ -void -udp_recv(struct udp_pcb *pcb, - void (* recv)(void *arg, struct udp_pcb *upcb, struct pbuf *p, - struct ip_addr *addr, u16_t port), - void *recv_arg) -{ - /* remember recv() callback and user data */ - pcb->recv = recv; - pcb->recv_arg = recv_arg; -} - -/** - * Remove an UDP PCB. - * - * @param pcb UDP PCB to be removed. The PCB is removed from the list of - * UDP PCB's and the data structure is freed from memory. - * - * @see udp_new() - */ -void -udp_remove(struct udp_pcb *pcb) -{ - struct udp_pcb *pcb2; - - snmp_delete_udpidx_tree(pcb); - /* pcb to be removed is first in list? */ - if (udp_pcbs == pcb) { - /* make list start at 2nd pcb */ - udp_pcbs = udp_pcbs->next; - /* pcb not 1st in list */ - } else - for (pcb2 = udp_pcbs; pcb2 != NULL; pcb2 = pcb2->next) { - /* find pcb in udp_pcbs list */ - if (pcb2->next != NULL && pcb2->next == pcb) { - /* remove pcb from list */ - pcb2->next = pcb->next; - } - } - memp_free(MEMP_UDP_PCB, pcb); -} - -/** - * Create a UDP PCB. - * - * @return The UDP PCB which was created. NULL if the PCB data structure - * could not be allocated. - * - * @see udp_remove() - */ -struct udp_pcb * -udp_new(void) -{ - struct udp_pcb *pcb; - pcb = memp_malloc(MEMP_UDP_PCB); - /* could allocate UDP PCB? */ - if (pcb != NULL) { - /* UDP Lite: by initializing to all zeroes, chksum_len is set to 0 - * which means checksum is generated over the whole datagram per default - * (recommended as default by RFC 3828). */ - /* initialize PCB to all zeroes */ - memset(pcb, 0, sizeof(struct udp_pcb)); - pcb->ttl = UDP_TTL; - } - return pcb; -} - -#if UDP_DEBUG -/** - * Print UDP header information for debug purposes. - * - * @param udphdr pointer to the udp header in memory. - */ -void -udp_debug_print(struct udp_hdr *udphdr) -{ - LWIP_DEBUGF(UDP_DEBUG, ("UDP header:\n")); - LWIP_DEBUGF(UDP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(UDP_DEBUG, ("| %5"U16_F" | %5"U16_F" | (src port, dest port)\n", - ntohs(udphdr->src), ntohs(udphdr->dest))); - LWIP_DEBUGF(UDP_DEBUG, ("+-------------------------------+\n")); - LWIP_DEBUGF(UDP_DEBUG, ("| %5"U16_F" | 0x%04"X16_F" | (len, chksum)\n", - ntohs(udphdr->len), ntohs(udphdr->chksum))); - LWIP_DEBUGF(UDP_DEBUG, ("+-------------------------------+\n")); -} -#endif /* UDP_DEBUG */ - -#endif /* LWIP_UDP */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/autoip.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/autoip.h deleted file mode 100644 index d5464b70957..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/autoip.h +++ /dev/null @@ -1,118 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * - * AutoIP Automatic LinkLocal IP Configuration - */ - -/* - * - * Copyright (c) 2007 Dominik Spies - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * Author: Dominik Spies - * - * This is a AutoIP implementation for the lwIP TCP/IP stack. It aims to conform - * with RFC 3927. - * - * - * Please coordinate changes and requests with Dominik Spies - * - */ - -#ifndef __LWIP_AUTOIP_H__ -#define __LWIP_AUTOIP_H__ - -#include "lwip/opt.h" - -#if LWIP_AUTOIP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/netif.h" -#include "lwip/udp.h" -#include "netif/etharp.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* AutoIP Timing */ -#define AUTOIP_TMR_INTERVAL 100 -#define AUTOIP_TICKS_PER_SECOND (1000 / AUTOIP_TMR_INTERVAL) - -/* RFC 3927 Constants */ -#define PROBE_WAIT 1 /* second (initial random delay) */ -#define PROBE_MIN 1 /* second (minimum delay till repeated probe) */ -#define PROBE_MAX 2 /* seconds (maximum delay till repeated probe) */ -#define PROBE_NUM 3 /* (number of probe packets) */ -#define ANNOUNCE_NUM 2 /* (number of announcement packets) */ -#define ANNOUNCE_INTERVAL 2 /* seconds (time between announcement packets) */ -#define ANNOUNCE_WAIT 2 /* seconds (delay before announcing) */ -#define MAX_CONFLICTS 10 /* (max conflicts before rate limiting) */ -#define RATE_LIMIT_INTERVAL 60 /* seconds (delay between successive attempts) */ -#define DEFEND_INTERVAL 10 /* seconds (min. wait between defensive ARPs) */ - -/* AutoIP client states */ -#define AUTOIP_STATE_OFF 0 -#define AUTOIP_STATE_PROBING 1 -#define AUTOIP_STATE_ANNOUNCING 2 -#define AUTOIP_STATE_BOUND 3 - -struct autoip -{ - struct ip_addr llipaddr; /* the currently selected, probed, announced or used LL IP-Address */ - u8_t state; /* current AutoIP state machine state */ - u8_t sent_num; /* sent number of probes or announces, dependent on state */ - u16_t ttw; /* ticks to wait, tick is AUTOIP_TMR_INTERVAL long */ - u8_t lastconflict; /* ticks until a conflict can be solved by defending */ - u8_t tried_llipaddr; /* total number of probed/used Link Local IP-Addresses */ -}; - - -/** Init srand, has to be called before entering mainloop */ -void autoip_init(void); - -/** Start AutoIP client */ -err_t autoip_start(struct netif *netif); - -/** Stop AutoIP client */ -err_t autoip_stop(struct netif *netif); - -/** Handles every incoming ARP Packet, called by etharp_arp_input */ -void autoip_arp_reply(struct netif *netif, struct etharp_hdr *hdr); - -/** Has to be called in loop every AUTOIP_TMR_INTERVAL milliseconds */ -void autoip_tmr(void); - -/** Handle a possible change in the network configuration */ -void autoip_network_changed(struct netif *netif); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_AUTOIP */ - -#endif /* __LWIP_AUTOIP_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/icmp.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/icmp.h deleted file mode 100644 index 3f917ba0409..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/icmp.h +++ /dev/null @@ -1,113 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_ICMP_H__ -#define __LWIP_ICMP_H__ - -#include "lwip/opt.h" -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define ICMP_ER 0 /* echo reply */ -#define ICMP_DUR 3 /* destination unreachable */ -#define ICMP_SQ 4 /* source quench */ -#define ICMP_RD 5 /* redirect */ -#define ICMP_ECHO 8 /* echo */ -#define ICMP_TE 11 /* time exceeded */ -#define ICMP_PP 12 /* parameter problem */ -#define ICMP_TS 13 /* timestamp */ -#define ICMP_TSR 14 /* timestamp reply */ -#define ICMP_IRQ 15 /* information request */ -#define ICMP_IR 16 /* information reply */ - -enum icmp_dur_type { - ICMP_DUR_NET = 0, /* net unreachable */ - ICMP_DUR_HOST = 1, /* host unreachable */ - ICMP_DUR_PROTO = 2, /* protocol unreachable */ - ICMP_DUR_PORT = 3, /* port unreachable */ - ICMP_DUR_FRAG = 4, /* fragmentation needed and DF set */ - ICMP_DUR_SR = 5 /* source route failed */ -}; - -enum icmp_te_type { - ICMP_TE_TTL = 0, /* time to live exceeded in transit */ - ICMP_TE_FRAG = 1 /* fragment reassembly time exceeded */ -}; - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -/** This is the standard ICMP header only that the u32_t data - * is splitted to two u16_t like ICMP echo needs it. - * This header is also used for other ICMP types that do not - * use the data part. - */ -PACK_STRUCT_BEGIN -struct icmp_echo_hdr { - PACK_STRUCT_FIELD(u8_t type); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u16_t id); - PACK_STRUCT_FIELD(u16_t seqno); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define ICMPH_TYPE(hdr) ((hdr)->type) -#define ICMPH_CODE(hdr) ((hdr)->code) - -/** Combines type and code to an u16_t */ -#define ICMPH_TYPE_SET(hdr, t) ((hdr)->type = (t)) -#define ICMPH_CODE_SET(hdr, c) ((hdr)->code = (c)) - - -#if LWIP_ICMP /* don't build if not configured for use in lwipopts.h */ - -void icmp_input(struct pbuf *p, struct netif *inp); -void icmp_dest_unreach(struct pbuf *p, enum icmp_dur_type t); -void icmp_time_exceeded(struct pbuf *p, enum icmp_te_type t); - -#endif /* LWIP_ICMP */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_ICMP_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/igmp.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/igmp.h deleted file mode 100644 index da67e7508a2..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/igmp.h +++ /dev/null @@ -1,164 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2002 CITEL Technologies Ltd. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of CITEL Technologies Ltd nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY CITEL TECHNOLOGIES AND CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL CITEL TECHNOLOGIES OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is a contribution to the lwIP TCP/IP stack. - * The Swedish Institute of Computer Science and Adam Dunkels - * are specifically granted permission to redistribute this - * source code. -*/ - -#ifndef __LWIP_IGMP_H__ -#define __LWIP_IGMP_H__ - -#include "lwip/opt.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/pbuf.h" - -#if LWIP_IGMP /* don't build if not configured for use in lwipopts.h */ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * IGMP constants - */ -#define IP_PROTO_IGMP 2 -#define IGMP_TTL 1 -#define IGMP_MINLEN 8 -#define ROUTER_ALERT 0x9404 -#define ROUTER_ALERTLEN 4 - -/* - * IGMP message types, including version number. - */ -#define IGMP_MEMB_QUERY 0x11 /* Membership query */ -#define IGMP_V1_MEMB_REPORT 0x12 /* Ver. 1 membership report */ -#define IGMP_V2_MEMB_REPORT 0x16 /* Ver. 2 membership report */ -#define IGMP_LEAVE_GROUP 0x17 /* Leave-group message */ - -/* IGMP timer */ -#define IGMP_TMR_INTERVAL 100 /* Milliseconds */ -#define IGMP_V1_DELAYING_MEMBER_TMR (1000/IGMP_TMR_INTERVAL) -#define IGMP_JOIN_DELAYING_MEMBER_TMR (500 /IGMP_TMR_INTERVAL) - -/* MAC Filter Actions */ -#define IGMP_DEL_MAC_FILTER 0 -#define IGMP_ADD_MAC_FILTER 1 - -/* Group membership states */ -#define IGMP_GROUP_NON_MEMBER 0 -#define IGMP_GROUP_DELAYING_MEMBER 1 -#define IGMP_GROUP_IDLE_MEMBER 2 - -/* - * IGMP packet format. - */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct igmp_msg { - PACK_STRUCT_FIELD(u8_t igmp_msgtype); - PACK_STRUCT_FIELD(u8_t igmp_maxresp); - PACK_STRUCT_FIELD(u16_t igmp_checksum); - PACK_STRUCT_FIELD(struct ip_addr igmp_group_address); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/* - * now a group structure - there is - * a list of groups for each interface - * these should really be linked from the interface, but - * if we keep them separate we will not affect the lwip original code - * too much - * - * There will be a group for the all systems group address but this - * will not run the state machine as it is used to kick off reports - * from all the other groups - */ - -struct igmp_group { - struct igmp_group *next; - struct netif *interface; - struct ip_addr group_address; - u8_t last_reporter_flag; /* signifies we were the last person to report */ - u8_t group_state; - u16_t timer; - u8_t use; /* counter of simultaneous uses */ -}; - - -/* Prototypes */ -void igmp_init(void); - -err_t igmp_start( struct netif *netif); - -err_t igmp_stop( struct netif *netif); - -void igmp_report_groups( struct netif *netif); - -struct igmp_group *igmp_lookfor_group( struct netif *ifp, struct ip_addr *addr); - -struct igmp_group *igmp_lookup_group( struct netif *ifp, struct ip_addr *addr); - -err_t igmp_remove_group( struct igmp_group *group); - -void igmp_input( struct pbuf *p, struct netif *inp, struct ip_addr *dest); - -err_t igmp_joingroup( struct ip_addr *ifaddr, struct ip_addr *groupaddr); - -err_t igmp_leavegroup( struct ip_addr *ifaddr, struct ip_addr *groupaddr); - -void igmp_tmr(void); - -void igmp_timeout( struct igmp_group *group); - -void igmp_start_timer( struct igmp_group *group, u8_t max_time); - -void igmp_stop_timer( struct igmp_group *group); - -void igmp_delaying_member( struct igmp_group *group, u8_t maxresp); - -err_t igmp_ip_output_if( struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, u8_t ttl, u8_t proto, struct netif *netif); - -void igmp_send( struct igmp_group *group, u8_t type); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_IGMP */ - -#endif /* __LWIP_IGMP_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet.h deleted file mode 100644 index 903afdf0f01..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet.h +++ /dev/null @@ -1,105 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_INET_H__ -#define __LWIP_INET_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* For compatibility with BSD code */ -struct in_addr { - u32_t s_addr; -}; - -#define INADDR_NONE ((u32_t)0xffffffffUL) /* 255.255.255.255 */ -#define INADDR_LOOPBACK ((u32_t)0x7f000001UL) /* 127.0.0.1 */ -#define INADDR_ANY ((u32_t)0x00000000UL) /* 0.0.0.0 */ -#define INADDR_BROADCAST ((u32_t)0xffffffffUL) /* 255.255.255.255 */ - -u32_t inet_addr(const char *cp); -int inet_aton(const char *cp, struct in_addr *addr); -char *inet_ntoa(struct in_addr addr); /* returns ptr to static buffer; not reentrant! */ - -#ifdef htons -#undef htons -#endif /* htons */ -#ifdef htonl -#undef htonl -#endif /* htonl */ -#ifdef ntohs -#undef ntohs -#endif /* ntohs */ -#ifdef ntohl -#undef ntohl -#endif /* ntohl */ - -#ifndef LWIP_PLATFORM_BYTESWAP -#define LWIP_PLATFORM_BYTESWAP 0 -#endif - -#if BYTE_ORDER == BIG_ENDIAN -#define htons(x) (x) -#define ntohs(x) (x) -#define htonl(x) (x) -#define ntohl(x) (x) -#else /* BYTE_ORDER != BIG_ENDIAN */ -#ifdef LWIP_PREFIX_BYTEORDER_FUNCS -/* workaround for naming collisions on some platforms */ -#define htons lwip_htons -#define ntohs lwip_ntohs -#define htonl lwip_htonl -#define ntohl lwip_ntohl -#endif /* LWIP_PREFIX_BYTEORDER_FUNCS */ -#if LWIP_PLATFORM_BYTESWAP -#define htons(x) LWIP_PLATFORM_HTONS(x) -#define ntohs(x) LWIP_PLATFORM_HTONS(x) -#define htonl(x) LWIP_PLATFORM_HTONL(x) -#define ntohl(x) LWIP_PLATFORM_HTONL(x) -#else /* LWIP_PLATFORM_BYTESWAP */ -u16_t htons(u16_t x); -u16_t ntohs(u16_t x); -u32_t htonl(u32_t x); -u32_t ntohl(u32_t x); -#endif /* LWIP_PLATFORM_BYTESWAP */ - -#endif /* BYTE_ORDER == BIG_ENDIAN */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_INET_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet_chksum.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet_chksum.h deleted file mode 100644 index 6f5b1b63ab3..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/inet_chksum.h +++ /dev/null @@ -1,62 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_INET_CHKSUM_H__ -#define __LWIP_INET_CHKSUM_H__ - -#include "lwip/opt.h" - -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -u16_t inet_chksum(void *dataptr, u16_t len); -u16_t inet_chksum_pbuf(struct pbuf *p); -u16_t inet_chksum_pseudo(struct pbuf *p, - struct ip_addr *src, struct ip_addr *dest, - u8_t proto, u16_t proto_len); -#if LWIP_UDPLITE -u16_t inet_chksum_pseudo_partial(struct pbuf *p, - struct ip_addr *src, struct ip_addr *dest, - u8_t proto, u16_t proto_len, u16_t chksum_len); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_INET_H__ */ - diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip.h deleted file mode 100644 index 6b2cdee177b..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip.h +++ /dev/null @@ -1,200 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_IP_H__ -#define __LWIP_IP_H__ - -#include "lwip/opt.h" - -#include "lwip/def.h" -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" -#include "lwip/err.h" -#include "lwip/netif.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** Currently, the function ip_output_if_opt() is only used with IGMP */ -#define IP_OPTIONS_SEND LWIP_IGMP - -#define IP_HLEN 20 - -#define IP_PROTO_ICMP 1 -#define IP_PROTO_UDP 17 -#define IP_PROTO_UDPLITE 136 -#define IP_PROTO_TCP 6 - -/* This is passed as the destination address to ip_output_if (not - to ip_output), meaning that an IP header already is constructed - in the pbuf. This is used when TCP retransmits. */ -#ifdef IP_HDRINCL -#undef IP_HDRINCL -#endif /* IP_HDRINCL */ -#define IP_HDRINCL NULL - -#if LWIP_NETIF_HWADDRHINT -#define IP_PCB_ADDRHINT ;u8_t addr_hint -#else -#define IP_PCB_ADDRHINT -#endif /* LWIP_NETIF_HWADDRHINT */ - -/* This is the common part of all PCB types. It needs to be at the - beginning of a PCB type definition. It is located here so that - changes to this common part are made in one location instead of - having to change all PCB structs. */ -#define IP_PCB \ - /* ip addresses in network byte order */ \ - struct ip_addr local_ip; \ - struct ip_addr remote_ip; \ - /* Socket options */ \ - u16_t so_options; \ - /* Type Of Service */ \ - u8_t tos; \ - /* Time To Live */ \ - u8_t ttl \ - /* link layer address resolution hint */ \ - IP_PCB_ADDRHINT - -struct ip_pcb { -/* Common members of all PCB types */ - IP_PCB; -}; - -/* - * Option flags per-socket. These are the same like SO_XXX. - */ -#define SOF_DEBUG (u16_t)0x0001U /* turn on debugging info recording */ -#define SOF_ACCEPTCONN (u16_t)0x0002U /* socket has had listen() */ -#define SOF_REUSEADDR (u16_t)0x0004U /* allow local address reuse */ -#define SOF_KEEPALIVE (u16_t)0x0008U /* keep connections alive */ -#define SOF_DONTROUTE (u16_t)0x0010U /* just use interface addresses */ -#define SOF_BROADCAST (u16_t)0x0020U /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */ -#define SOF_USELOOPBACK (u16_t)0x0040U /* bypass hardware when possible */ -#define SOF_LINGER (u16_t)0x0080U /* linger on close if data present */ -#define SOF_OOBINLINE (u16_t)0x0100U /* leave received OOB data in line */ -#define SOF_REUSEPORT (u16_t)0x0200U /* allow local address & port reuse */ - - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip_hdr { - /* version / header length / type of service */ - PACK_STRUCT_FIELD(u16_t _v_hl_tos); - /* total length */ - PACK_STRUCT_FIELD(u16_t _len); - /* identification */ - PACK_STRUCT_FIELD(u16_t _id); - /* fragment offset field */ - PACK_STRUCT_FIELD(u16_t _offset); -#define IP_RF 0x8000 /* reserved fragment flag */ -#define IP_DF 0x4000 /* dont fragment flag */ -#define IP_MF 0x2000 /* more fragments flag */ -#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ - /* time to live / protocol*/ - PACK_STRUCT_FIELD(u16_t _ttl_proto); - /* checksum */ - PACK_STRUCT_FIELD(u16_t _chksum); - /* source and destination IP addresses */ - PACK_STRUCT_FIELD(struct ip_addr src); - PACK_STRUCT_FIELD(struct ip_addr dest); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define IPH_V(hdr) (ntohs((hdr)->_v_hl_tos) >> 12) -#define IPH_HL(hdr) ((ntohs((hdr)->_v_hl_tos) >> 8) & 0x0f) -#define IPH_TOS(hdr) (ntohs((hdr)->_v_hl_tos) & 0xff) -#define IPH_LEN(hdr) ((hdr)->_len) -#define IPH_ID(hdr) ((hdr)->_id) -#define IPH_OFFSET(hdr) ((hdr)->_offset) -#define IPH_TTL(hdr) (ntohs((hdr)->_ttl_proto) >> 8) -#define IPH_PROTO(hdr) (ntohs((hdr)->_ttl_proto) & 0xff) -#define IPH_CHKSUM(hdr) ((hdr)->_chksum) - -#define IPH_VHLTOS_SET(hdr, v, hl, tos) (hdr)->_v_hl_tos = (htons(((v) << 12) | ((hl) << 8) | (tos))) -#define IPH_LEN_SET(hdr, len) (hdr)->_len = (len) -#define IPH_ID_SET(hdr, id) (hdr)->_id = (id) -#define IPH_OFFSET_SET(hdr, off) (hdr)->_offset = (off) -#define IPH_TTL_SET(hdr, ttl) (hdr)->_ttl_proto = (htons(IPH_PROTO(hdr) | ((u16_t)(ttl) << 8))) -#define IPH_PROTO_SET(hdr, proto) (hdr)->_ttl_proto = (htons((proto) | (IPH_TTL(hdr) << 8))) -#define IPH_CHKSUM_SET(hdr, chksum) (hdr)->_chksum = (chksum) - -/** The interface that provided the packet for the current callback invocation. */ -extern struct netif *current_netif; -/** Header of the input packet currently being processed. */ -extern const struct ip_hdr *current_header; - -#define ip_init() /* Compatibility define, not init needed. */ -struct netif *ip_route(struct ip_addr *dest); -err_t ip_input(struct pbuf *p, struct netif *inp); -err_t ip_output(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto); -err_t ip_output_if(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto, - struct netif *netif); -#if LWIP_NETIF_HWADDRHINT -err_t ip_output_hinted(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto, u8_t *addr_hint); -#endif /* LWIP_NETIF_HWADDRHINT */ -#if IP_OPTIONS_SEND -err_t ip_output_if_opt(struct pbuf *p, struct ip_addr *src, struct ip_addr *dest, - u8_t ttl, u8_t tos, u8_t proto, struct netif *netif, void *ip_options, - u16_t optlen); -#endif /* IP_OPTIONS_SEND */ -/** Get the interface that received the current packet. - * This function must only be called from a receive callback (udp_recv, - * raw_recv, tcp_accept). It will return NULL otherwise. */ -#define ip_current_netif() (current_netif) -/** Get the IP header of the current packet. - * This function must only be called from a receive callback (udp_recv, - * raw_recv, tcp_accept). It will return NULL otherwise. */ -#define ip_current_header() (current_header) -#if IP_DEBUG -void ip_debug_print(struct pbuf *p); -#else -#define ip_debug_print(p) -#endif /* IP_DEBUG */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_IP_H__ */ - - diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_addr.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_addr.h deleted file mode 100644 index 5fbc44d14a5..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_addr.h +++ /dev/null @@ -1,175 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_IP_ADDR_H__ -#define __LWIP_IP_ADDR_H__ - -#include "lwip/opt.h" - -#include "lwip/inet.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip_addr { - PACK_STRUCT_FIELD(u32_t addr); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/* - * struct ipaddr2 is used in the definition of the ARP packet format in - * order to support compilers that don't have structure packing. - */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct ip_addr2 { - PACK_STRUCT_FIELD(u16_t addrw[2]); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -struct netif; - -extern const struct ip_addr ip_addr_any; -extern const struct ip_addr ip_addr_broadcast; - -/** IP_ADDR_ can be used as a fixed IP address - * for the wildcard and the broadcast address - */ -#define IP_ADDR_ANY ((struct ip_addr *)&ip_addr_any) -#define IP_ADDR_BROADCAST ((struct ip_addr *)&ip_addr_broadcast) - -/* Definitions of the bits in an Internet address integer. - - On subnets, host and network parts are found according to - the subnet mask, not these masks. */ - -#define IN_CLASSA(a) ((((u32_t)(a)) & 0x80000000UL) == 0) -#define IN_CLASSA_NET 0xff000000 -#define IN_CLASSA_NSHIFT 24 -#define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET) -#define IN_CLASSA_MAX 128 - -#define IN_CLASSB(a) ((((u32_t)(a)) & 0xc0000000UL) == 0x80000000UL) -#define IN_CLASSB_NET 0xffff0000 -#define IN_CLASSB_NSHIFT 16 -#define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET) -#define IN_CLASSB_MAX 65536 - -#define IN_CLASSC(a) ((((u32_t)(a)) & 0xe0000000UL) == 0xc0000000UL) -#define IN_CLASSC_NET 0xffffff00 -#define IN_CLASSC_NSHIFT 8 -#define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET) - -#define IN_CLASSD(a) (((u32_t)(a) & 0xf0000000UL) == 0xe0000000UL) -#define IN_CLASSD_NET 0xf0000000 /* These ones aren't really */ -#define IN_CLASSD_NSHIFT 28 /* net and host fields, but */ -#define IN_CLASSD_HOST 0x0fffffff /* routing needn't know. */ -#define IN_MULTICAST(a) IN_CLASSD(a) - -#define IN_EXPERIMENTAL(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL) -#define IN_BADCLASS(a) (((u32_t)(a) & 0xf0000000UL) == 0xf0000000UL) - -#define IN_LOOPBACKNET 127 /* official! */ - -#define IP4_ADDR(ipaddr, a,b,c,d) \ - (ipaddr)->addr = htonl(((u32_t)((a) & 0xff) << 24) | \ - ((u32_t)((b) & 0xff) << 16) | \ - ((u32_t)((c) & 0xff) << 8) | \ - (u32_t)((d) & 0xff)) - -#define ip_addr_set(dest, src) (dest)->addr = \ - ((src) == NULL? 0:\ - (src)->addr) -/** - * Determine if two address are on the same network. - * - * @arg addr1 IP address 1 - * @arg addr2 IP address 2 - * @arg mask network identifier mask - * @return !0 if the network identifiers of both address match - */ -#define ip_addr_netcmp(addr1, addr2, mask) (((addr1)->addr & \ - (mask)->addr) == \ - ((addr2)->addr & \ - (mask)->addr)) -#define ip_addr_cmp(addr1, addr2) ((addr1)->addr == (addr2)->addr) - -#define ip_addr_isany(addr1) ((addr1) == NULL || (addr1)->addr == 0) - -u8_t ip_addr_isbroadcast(struct ip_addr *, struct netif *); - -#define ip_addr_ismulticast(addr1) (((addr1)->addr & ntohl(0xf0000000UL)) == ntohl(0xe0000000UL)) - -#define ip_addr_islinklocal(addr1) (((addr1)->addr & ntohl(0xffff0000UL)) == ntohl(0xa9fe0000UL)) - -#define ip_addr_debug_print(debug, ipaddr) \ - LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F, \ - ipaddr != NULL ? \ - (u16_t)(ntohl((ipaddr)->addr) >> 24) & 0xff : 0, \ - ipaddr != NULL ? \ - (u16_t)(ntohl((ipaddr)->addr) >> 16) & 0xff : 0, \ - ipaddr != NULL ? \ - (u16_t)(ntohl((ipaddr)->addr) >> 8) & 0xff : 0, \ - ipaddr != NULL ? \ - (u16_t)ntohl((ipaddr)->addr) & 0xff : 0)) - -/* These are cast to u16_t, with the intent that they are often arguments - * to printf using the U16_F format from cc.h. */ -#define ip4_addr1(ipaddr) ((u16_t)(ntohl((ipaddr)->addr) >> 24) & 0xff) -#define ip4_addr2(ipaddr) ((u16_t)(ntohl((ipaddr)->addr) >> 16) & 0xff) -#define ip4_addr3(ipaddr) ((u16_t)(ntohl((ipaddr)->addr) >> 8) & 0xff) -#define ip4_addr4(ipaddr) ((u16_t)(ntohl((ipaddr)->addr)) & 0xff) - -/** - * Same as inet_ntoa() but takes a struct ip_addr* - */ -#define ip_ntoa(addr) ((addr != NULL) ? inet_ntoa(*((struct in_addr*)(addr))) : "NULL") - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_IP_ADDR_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_frag.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_frag.h deleted file mode 100644 index adc6e919558..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4/lwip/ip_frag.h +++ /dev/null @@ -1,78 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Jani Monoses - * - */ - -#ifndef __LWIP_IP_FRAG_H__ -#define __LWIP_IP_FRAG_H__ - -#include "lwip/opt.h" -#include "lwip/err.h" -#include "lwip/pbuf.h" -#include "lwip/netif.h" -#include "lwip/ip_addr.h" -#include "lwip/ip.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if IP_REASSEMBLY -/* The IP reassembly timer interval in milliseconds. */ -#define IP_TMR_INTERVAL 1000 - -/* IP reassembly helper struct. - * This is exported because memp needs to know the size. - */ -struct ip_reassdata { - struct ip_reassdata *next; - struct pbuf *p; - struct ip_hdr iphdr; - u16_t datagram_len; - u8_t flags; - u8_t timer; -}; - -void ip_reass_init(void); -void ip_reass_tmr(void); -struct pbuf * ip_reass(struct pbuf *p); -#endif /* IP_REASSEMBLY */ - -#if IP_FRAG -err_t ip_frag(struct pbuf *p, struct netif *netif, struct ip_addr *dest); -#endif /* IP_FRAG */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_IP_FRAG_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api.h deleted file mode 100644 index 7d2c9e6ecea..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api.h +++ /dev/null @@ -1,224 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_API_H__ -#define __LWIP_API_H__ - -#include "lwip/opt.h" - -#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */ - -#include /* for size_t */ - -#include "lwip/netbuf.h" -#include "lwip/sys.h" -#include "lwip/ip_addr.h" -#include "lwip/err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Throughout this file, IP addresses and port numbers are expected to be in - * the same byte order as in the corresponding pcb. - */ - -/* Flags for netconn_write */ -#define NETCONN_NOFLAG 0x00 -#define NETCONN_NOCOPY 0x00 /* Only for source code compatibility */ -#define NETCONN_COPY 0x01 -#define NETCONN_MORE 0x02 - -/* Helpers to process several netconn_types by the same code */ -#define NETCONNTYPE_GROUP(t) (t&0xF0) -#define NETCONNTYPE_DATAGRAM(t) (t&0xE0) - -enum netconn_type { - NETCONN_INVALID = 0, - /* NETCONN_TCP Group */ - NETCONN_TCP = 0x10, - /* NETCONN_UDP Group */ - NETCONN_UDP = 0x20, - NETCONN_UDPLITE = 0x21, - NETCONN_UDPNOCHKSUM= 0x22, - /* NETCONN_RAW Group */ - NETCONN_RAW = 0x40 -}; - -enum netconn_state { - NETCONN_NONE, - NETCONN_WRITE, - NETCONN_LISTEN, - NETCONN_CONNECT, - NETCONN_CLOSE -}; - -enum netconn_evt { - NETCONN_EVT_RCVPLUS, - NETCONN_EVT_RCVMINUS, - NETCONN_EVT_SENDPLUS, - NETCONN_EVT_SENDMINUS -}; - -#if LWIP_IGMP -enum netconn_igmp { - NETCONN_JOIN, - NETCONN_LEAVE -}; -#endif /* LWIP_IGMP */ - -/* forward-declare some structs to avoid to include their headers */ -struct ip_pcb; -struct tcp_pcb; -struct udp_pcb; -struct raw_pcb; -struct netconn; - -/** A callback prototype to inform about events for a netconn */ -typedef void (* netconn_callback)(struct netconn *, enum netconn_evt, u16_t len); - -/** A netconn descriptor */ -struct netconn { - /** type of the netconn (TCP, UDP or RAW) */ - enum netconn_type type; - /** current state of the netconn */ - enum netconn_state state; - /** the lwIP internal protocol control block */ - union { - struct ip_pcb *ip; - struct tcp_pcb *tcp; - struct udp_pcb *udp; - struct raw_pcb *raw; - } pcb; - /** the last error this netconn had */ - err_t err; - /** sem that is used to synchroneously execute functions in the core context */ - sys_sem_t op_completed; - /** mbox where received packets are stored until they are fetched - by the netconn application thread (can grow quite big) */ - sys_mbox_t recvmbox; - /** mbox where new connections are stored until processed - by the application thread */ - sys_mbox_t acceptmbox; - /** only used for socket layer */ - int socket; -#if LWIP_SO_RCVTIMEO - /** timeout to wait for new data to be received - (or connections to arrive for listening netconns) */ - int recv_timeout; -#endif /* LWIP_SO_RCVTIMEO */ -#if LWIP_SO_RCVBUF - /** maximum amount of bytes queued in recvmbox */ - int recv_bufsize; -#endif /* LWIP_SO_RCVBUF */ - s16_t recv_avail; -#if LWIP_TCP - /** TCP: when data passed to netconn_write doesn't fit into the send buffer, - this temporarily stores the message. */ - struct api_msg_msg *write_msg; - /** TCP: when data passed to netconn_write doesn't fit into the send buffer, - this temporarily stores how much is already sent. */ - size_t write_offset; -#if LWIP_TCPIP_CORE_LOCKING - /** TCP: when data passed to netconn_write doesn't fit into the send buffer, - this temporarily stores whether to wake up the original application task - if data couldn't be sent in the first try. */ - u8_t write_delayed; -#endif /* LWIP_TCPIP_CORE_LOCKING */ -#endif /* LWIP_TCP */ - /** A callback function that is informed about events for this netconn */ - netconn_callback callback; -}; - -/* Register an Network connection event */ -#define API_EVENT(c,e,l) if (c->callback) { \ - (*c->callback)(c, e, l); \ - } - -/* Network connection functions: */ -#define netconn_new(t) netconn_new_with_proto_and_callback(t, 0, NULL) -#define netconn_new_with_callback(t, c) netconn_new_with_proto_and_callback(t, 0, c) -struct -netconn *netconn_new_with_proto_and_callback(enum netconn_type t, u8_t proto, - netconn_callback callback); -err_t netconn_delete (struct netconn *conn); -/** Get the type of a netconn (as enum netconn_type). */ -#define netconn_type(conn) (conn->type) - -err_t netconn_getaddr (struct netconn *conn, - struct ip_addr *addr, - u16_t *port, - u8_t local); -#define netconn_peer(c,i,p) netconn_getaddr(c,i,p,0) -#define netconn_addr(c,i,p) netconn_getaddr(c,i,p,1) - -err_t netconn_bind (struct netconn *conn, - struct ip_addr *addr, - u16_t port); -err_t netconn_connect (struct netconn *conn, - struct ip_addr *addr, - u16_t port); -err_t netconn_disconnect (struct netconn *conn); -err_t netconn_listen_with_backlog(struct netconn *conn, u8_t backlog); -#define netconn_listen(conn) netconn_listen_with_backlog(conn, TCP_DEFAULT_LISTEN_BACKLOG) -struct netconn * netconn_accept (struct netconn *conn); -struct netbuf * netconn_recv (struct netconn *conn); -err_t netconn_sendto (struct netconn *conn, - struct netbuf *buf, struct ip_addr *addr, u16_t port); -err_t netconn_send (struct netconn *conn, - struct netbuf *buf); -err_t netconn_write (struct netconn *conn, - const void *dataptr, size_t size, - u8_t apiflags); -err_t netconn_close (struct netconn *conn); - -#if LWIP_IGMP -err_t netconn_join_leave_group (struct netconn *conn, - struct ip_addr *multiaddr, - struct ip_addr *interface, - enum netconn_igmp join_or_leave); -#endif /* LWIP_IGMP */ -#if LWIP_DNS -err_t netconn_gethostbyname(const char *name, struct ip_addr *addr); -#endif /* LWIP_DNS */ - -#define netconn_err(conn) ((conn)->err) -#define netconn_recv_bufsize(conn) ((conn)->recv_bufsize) - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_NETCONN */ - -#endif /* __LWIP_API_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api_msg.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api_msg.h deleted file mode 100644 index 7718d909b29..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/api_msg.h +++ /dev/null @@ -1,164 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_API_MSG_H__ -#define __LWIP_API_MSG_H__ - -#include "lwip/opt.h" - -#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */ - -#include /* for size_t */ - -#include "lwip/ip_addr.h" -#include "lwip/err.h" -#include "lwip/sys.h" -#include "lwip/igmp.h" -#include "lwip/api.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* IP addresses and port numbers are expected to be in - * the same byte order as in the corresponding pcb. - */ -/** This struct includes everything that is necessary to execute a function - for a netconn in another thread context (mainly used to process netconns - in the tcpip_thread context to be thread safe). */ -struct api_msg_msg { - /** The netconn which to process - always needed: it includes the semaphore - which is used to block the application thread until the function finished. */ - struct netconn *conn; - /** Depending on the executed function, one of these union members is used */ - union { - /** used for do_send */ - struct netbuf *b; - /** used for do_newconn */ - struct { - u8_t proto; - } n; - /** used for do_bind and do_connect */ - struct { - struct ip_addr *ipaddr; - u16_t port; - } bc; - /** used for do_getaddr */ - struct { - struct ip_addr *ipaddr; - u16_t *port; - u8_t local; - } ad; - /** used for do_write */ - struct { - const void *dataptr; - size_t len; - u8_t apiflags; - } w; - /** used for do_recv */ - struct { - u16_t len; - } r; -#if LWIP_IGMP - /** used for do_join_leave_group */ - struct { - struct ip_addr *multiaddr; - struct ip_addr *interface; - enum netconn_igmp join_or_leave; - } jl; -#endif /* LWIP_IGMP */ -#if TCP_LISTEN_BACKLOG - struct { - u8_t backlog; - } lb; -#endif /* TCP_LISTEN_BACKLOG */ - } msg; -}; - -/** This struct contains a function to execute in another thread context and - a struct api_msg_msg that serves as an argument for this function. - This is passed to tcpip_apimsg to execute functions in tcpip_thread context. */ -struct api_msg { - /** function to execute in tcpip_thread context */ - void (* function)(struct api_msg_msg *msg); - /** arguments for this function */ - struct api_msg_msg msg; -}; - -#if LWIP_DNS -/** As do_gethostbyname requires more arguments but doesn't require a netconn, - it has its own struct (to avoid struct api_msg getting bigger than necessary). - do_gethostbyname must be called using tcpip_callback instead of tcpip_apimsg - (see netconn_gethostbyname). */ -struct dns_api_msg { - /** Hostname to query or dotted IP address string */ - const char *name; - /** Rhe resolved address is stored here */ - struct ip_addr *addr; - /** This semaphore is posted when the name is resolved, the application thread - should wait on it. */ - sys_sem_t sem; - /** Errors are given back here */ - err_t *err; -}; -#endif /* LWIP_DNS */ - -void do_newconn ( struct api_msg_msg *msg); -void do_delconn ( struct api_msg_msg *msg); -void do_bind ( struct api_msg_msg *msg); -void do_connect ( struct api_msg_msg *msg); -void do_disconnect ( struct api_msg_msg *msg); -void do_listen ( struct api_msg_msg *msg); -void do_send ( struct api_msg_msg *msg); -void do_recv ( struct api_msg_msg *msg); -void do_write ( struct api_msg_msg *msg); -void do_getaddr ( struct api_msg_msg *msg); -void do_close ( struct api_msg_msg *msg); -#if LWIP_IGMP -void do_join_leave_group( struct api_msg_msg *msg); -#endif /* LWIP_IGMP */ - -#if LWIP_DNS -void do_gethostbyname(void *arg); -#endif /* LWIP_DNS */ - -struct netconn* netconn_alloc(enum netconn_type t, netconn_callback callback); -void netconn_free(struct netconn *conn); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_NETCONN */ - -#endif /* __LWIP_API_MSG_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/arch.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/arch.h deleted file mode 100644 index 5ab190a732d..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/arch.h +++ /dev/null @@ -1,235 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_ARCH_H__ -#define __LWIP_ARCH_H__ - -#ifndef LITTLE_ENDIAN -#define LITTLE_ENDIAN 1234 -#endif - -#ifndef BIG_ENDIAN -#define BIG_ENDIAN 4321 -#endif - -#include "arch/cc.h" - -/** Temporary: define format string for size_t if not defined in cc.h */ -#ifndef SZT_F -#define SZT_F U32_F -#endif /* SZT_F */ - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef PACK_STRUCT_BEGIN -#define PACK_STRUCT_BEGIN -#endif /* PACK_STRUCT_BEGIN */ - -#ifndef PACK_STRUCT_END -#define PACK_STRUCT_END -#endif /* PACK_STRUCT_END */ - -#ifndef PACK_STRUCT_FIELD -#define PACK_STRUCT_FIELD(x) x -#endif /* PACK_STRUCT_FIELD */ - - -#ifndef LWIP_UNUSED_ARG -#define LWIP_UNUSED_ARG(x) (void)x -#endif /* LWIP_UNUSED_ARG */ - - -#ifdef LWIP_PROVIDE_ERRNO - -#define EPERM 1 /* Operation not permitted */ -#define ENOENT 2 /* No such file or directory */ -#define ESRCH 3 /* No such process */ -#define EINTR 4 /* Interrupted system call */ -#define EIO 5 /* I/O error */ -#define ENXIO 6 /* No such device or address */ -#define E2BIG 7 /* Arg list too long */ -#define ENOEXEC 8 /* Exec format error */ -#define EBADF 9 /* Bad file number */ -#define ECHILD 10 /* No child processes */ -#define EAGAIN 11 /* Try again */ -#define ENOMEM 12 /* Out of memory */ -#define EACCES 13 /* Permission denied */ -#define EFAULT 14 /* Bad address */ -#define ENOTBLK 15 /* Block device required */ -#define EBUSY 16 /* Device or resource busy */ -#define EEXIST 17 /* File exists */ -#define EXDEV 18 /* Cross-device link */ -#define ENODEV 19 /* No such device */ -#define ENOTDIR 20 /* Not a directory */ -#define EISDIR 21 /* Is a directory */ -#define EINVAL 22 /* Invalid argument */ -#define ENFILE 23 /* File table overflow */ -#define EMFILE 24 /* Too many open files */ -#define ENOTTY 25 /* Not a typewriter */ -#define ETXTBSY 26 /* Text file busy */ -#define EFBIG 27 /* File too large */ -#define ENOSPC 28 /* No space left on device */ -#define ESPIPE 29 /* Illegal seek */ -#define EROFS 30 /* Read-only file system */ -#define EMLINK 31 /* Too many links */ -#define EPIPE 32 /* Broken pipe */ -#define EDOM 33 /* Math argument out of domain of func */ -#define ERANGE 34 /* Math result not representable */ -#define EDEADLK 35 /* Resource deadlock would occur */ -#define ENAMETOOLONG 36 /* File name too long */ -#define ENOLCK 37 /* No record locks available */ -#define ENOSYS 38 /* Function not implemented */ -#define ENOTEMPTY 39 /* Directory not empty */ -#define ELOOP 40 /* Too many symbolic links encountered */ -#define EWOULDBLOCK EAGAIN /* Operation would block */ -#define ENOMSG 42 /* No message of desired type */ -#define EIDRM 43 /* Identifier removed */ -#define ECHRNG 44 /* Channel number out of range */ -#define EL2NSYNC 45 /* Level 2 not synchronized */ -#define EL3HLT 46 /* Level 3 halted */ -#define EL3RST 47 /* Level 3 reset */ -#define ELNRNG 48 /* Link number out of range */ -#define EUNATCH 49 /* Protocol driver not attached */ -#define ENOCSI 50 /* No CSI structure available */ -#define EL2HLT 51 /* Level 2 halted */ -#define EBADE 52 /* Invalid exchange */ -#define EBADR 53 /* Invalid request descriptor */ -#define EXFULL 54 /* Exchange full */ -#define ENOANO 55 /* No anode */ -#define EBADRQC 56 /* Invalid request code */ -#define EBADSLT 57 /* Invalid slot */ - -#define EDEADLOCK EDEADLK - -#define EBFONT 59 /* Bad font file format */ -#define ENOSTR 60 /* Device not a stream */ -#define ENODATA 61 /* No data available */ -#define ETIME 62 /* Timer expired */ -#define ENOSR 63 /* Out of streams resources */ -#define ENONET 64 /* Machine is not on the network */ -#define ENOPKG 65 /* Package not installed */ -#define EREMOTE 66 /* Object is remote */ -#define ENOLINK 67 /* Link has been severed */ -#define EADV 68 /* Advertise error */ -#define ESRMNT 69 /* Srmount error */ -#define ECOMM 70 /* Communication error on send */ -#define EPROTO 71 /* Protocol error */ -#define EMULTIHOP 72 /* Multihop attempted */ -#define EDOTDOT 73 /* RFS specific error */ -#define EBADMSG 74 /* Not a data message */ -#define EOVERFLOW 75 /* Value too large for defined data type */ -#define ENOTUNIQ 76 /* Name not unique on network */ -#define EBADFD 77 /* File descriptor in bad state */ -#define EREMCHG 78 /* Remote address changed */ -#define ELIBACC 79 /* Can not access a needed shared library */ -#define ELIBBAD 80 /* Accessing a corrupted shared library */ -#define ELIBSCN 81 /* .lib section in a.out corrupted */ -#define ELIBMAX 82 /* Attempting to link in too many shared libraries */ -#define ELIBEXEC 83 /* Cannot exec a shared library directly */ -#define EILSEQ 84 /* Illegal byte sequence */ -#define ERESTART 85 /* Interrupted system call should be restarted */ -#define ESTRPIPE 86 /* Streams pipe error */ -#define EUSERS 87 /* Too many users */ -#define ENOTSOCK 88 /* Socket operation on non-socket */ -#define EDESTADDRREQ 89 /* Destination address required */ -#define EMSGSIZE 90 /* Message too long */ -#define EPROTOTYPE 91 /* Protocol wrong type for socket */ -#define ENOPROTOOPT 92 /* Protocol not available */ -#define EPROTONOSUPPORT 93 /* Protocol not supported */ -#define ESOCKTNOSUPPORT 94 /* Socket type not supported */ -#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */ -#define EPFNOSUPPORT 96 /* Protocol family not supported */ -#define EAFNOSUPPORT 97 /* Address family not supported by protocol */ -#define EADDRINUSE 98 /* Address already in use */ -#define EADDRNOTAVAIL 99 /* Cannot assign requested address */ -#define ENETDOWN 100 /* Network is down */ -#define ENETUNREACH 101 /* Network is unreachable */ -#define ENETRESET 102 /* Network dropped connection because of reset */ -#define ECONNABORTED 103 /* Software caused connection abort */ -#define ECONNRESET 104 /* Connection reset by peer */ -#define ENOBUFS 105 /* No buffer space available */ -#define EISCONN 106 /* Transport endpoint is already connected */ -#define ENOTCONN 107 /* Transport endpoint is not connected */ -#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */ -#define ETOOMANYREFS 109 /* Too many references: cannot splice */ -#define ETIMEDOUT 110 /* Connection timed out */ -#define ECONNREFUSED 111 /* Connection refused */ -#define EHOSTDOWN 112 /* Host is down */ -#define EHOSTUNREACH 113 /* No route to host */ -#define EALREADY 114 /* Operation already in progress */ -#define EINPROGRESS 115 /* Operation now in progress */ -#define ESTALE 116 /* Stale NFS file handle */ -#define EUCLEAN 117 /* Structure needs cleaning */ -#define ENOTNAM 118 /* Not a XENIX named type file */ -#define ENAVAIL 119 /* No XENIX semaphores available */ -#define EISNAM 120 /* Is a named type file */ -#define EREMOTEIO 121 /* Remote I/O error */ -#define EDQUOT 122 /* Quota exceeded */ - -#define ENOMEDIUM 123 /* No medium found */ -#define EMEDIUMTYPE 124 /* Wrong medium type */ - - -#define ENSROK 0 /* DNS server returned answer with no data */ -#define ENSRNODATA 160 /* DNS server returned answer with no data */ -#define ENSRFORMERR 161 /* DNS server claims query was misformatted */ -#define ENSRSERVFAIL 162 /* DNS server returned general failure */ -#define ENSRNOTFOUND 163 /* Domain name not found */ -#define ENSRNOTIMP 164 /* DNS server does not implement requested operation */ -#define ENSRREFUSED 165 /* DNS server refused query */ -#define ENSRBADQUERY 166 /* Misformatted DNS query */ -#define ENSRBADNAME 167 /* Misformatted domain name */ -#define ENSRBADFAMILY 168 /* Unsupported address family */ -#define ENSRBADRESP 169 /* Misformatted DNS reply */ -#define ENSRCONNREFUSED 170 /* Could not contact DNS servers */ -#define ENSRTIMEOUT 171 /* Timeout while contacting DNS servers */ -#define ENSROF 172 /* End of file */ -#define ENSRFILE 173 /* Error reading file */ -#define ENSRNOMEM 174 /* Out of memory */ -#define ENSRDESTRUCTION 175 /* Application terminated lookup */ -#define ENSRQUERYDOMAINTOOLONG 176 /* Domain name is too long */ -#define ENSRCNAMELOOP 177 /* Domain name is too long */ - -#ifndef errno -extern int errno; -#endif - -#endif /* LWIP_PROVIDE_ERRNO */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_ARCH_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/debug.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/debug.h deleted file mode 100644 index fb0760790f5..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/debug.h +++ /dev/null @@ -1,100 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_DEBUG_H__ -#define __LWIP_DEBUG_H__ - -#include "lwip/arch.h" - -/** lower two bits indicate debug level - * - 0 all - * - 1 warning - * - 2 serious - * - 3 severe - */ -#define LWIP_DBG_LEVEL_ALL 0x00 -#define LWIP_DBG_LEVEL_OFF LWIP_DBG_LEVEL_ALL /* compatibility define only */ -#define LWIP_DBG_LEVEL_WARNING 0x01 /* bad checksums, dropped packets, ... */ -#define LWIP_DBG_LEVEL_SERIOUS 0x02 /* memory allocation failures, ... */ -#define LWIP_DBG_LEVEL_SEVERE 0x03 -#define LWIP_DBG_MASK_LEVEL 0x03 - -/** flag for LWIP_DEBUGF to enable that debug message */ -#define LWIP_DBG_ON 0x80U -/** flag for LWIP_DEBUGF to disable that debug message */ -#define LWIP_DBG_OFF 0x00U - -/** flag for LWIP_DEBUGF indicating a tracing message (to follow program flow) */ -#define LWIP_DBG_TRACE 0x40U -/** flag for LWIP_DEBUGF indicating a state debug message (to follow module states) */ -#define LWIP_DBG_STATE 0x20U -/** flag for LWIP_DEBUGF indicating newly added code, not thoroughly tested yet */ -#define LWIP_DBG_FRESH 0x10U -/** flag for LWIP_DEBUGF to halt after printing this debug message */ -#define LWIP_DBG_HALT 0x08U - -#ifndef LWIP_NOASSERT -#define LWIP_ASSERT(message, assertion) do { if(!(assertion)) \ - LWIP_PLATFORM_ASSERT(message); } while(0) -#else /* LWIP_NOASSERT */ -#define LWIP_ASSERT(message, assertion) -#endif /* LWIP_NOASSERT */ - -/** if "expression" isn't true, then print "message" and execute "handler" expression */ -#ifndef LWIP_ERROR -#define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \ - LWIP_PLATFORM_ASSERT(message); handler;}} while(0) -#endif /* LWIP_ERROR */ - -#ifdef LWIP_DEBUG -/** print debug message only if debug message type is enabled... - * AND is of correct type AND is at least LWIP_DBG_LEVEL - */ -#define LWIP_DEBUGF(debug, message) do { \ - if ( \ - ((debug) & LWIP_DBG_ON) && \ - ((debug) & LWIP_DBG_TYPES_ON) && \ - ((s16_t)((debug) & LWIP_DBG_MASK_LEVEL) >= LWIP_DBG_MIN_LEVEL)) { \ - LWIP_PLATFORM_DIAG(message); \ - if ((debug) & LWIP_DBG_HALT) { \ - while(1); \ - } \ - } \ - } while(0) - -#else /* LWIP_DEBUG */ -#define LWIP_DEBUGF(debug, message) -#endif /* LWIP_DEBUG */ - -#endif /* __LWIP_DEBUG_H__ */ - diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/def.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/def.h deleted file mode 100644 index c3681ac1fdf..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/def.h +++ /dev/null @@ -1,49 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_DEF_H__ -#define __LWIP_DEF_H__ - -/* this might define NULL already */ -#include "lwip/arch.h" - -#define LWIP_MAX(x , y) (((x) > (y)) ? (x) : (y)) -#define LWIP_MIN(x , y) (((x) < (y)) ? (x) : (y)) - -#ifndef NULL -#define NULL ((void *)0) -#endif - - -#endif /* __LWIP_DEF_H__ */ - diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dhcp.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dhcp.h deleted file mode 100644 index 27a0adeb87c..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dhcp.h +++ /dev/null @@ -1,248 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** @file - */ - -#ifndef __LWIP_DHCP_H__ -#define __LWIP_DHCP_H__ - -#include "lwip/opt.h" - -#if LWIP_DHCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/netif.h" -#include "lwip/udp.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** period (in seconds) of the application calling dhcp_coarse_tmr() */ -#define DHCP_COARSE_TIMER_SECS 60 -/** period (in milliseconds) of the application calling dhcp_coarse_tmr() */ -#define DHCP_COARSE_TIMER_MSECS (DHCP_COARSE_TIMER_SECS * 1000UL) -/** period (in milliseconds) of the application calling dhcp_fine_tmr() */ -#define DHCP_FINE_TIMER_MSECS 500 - -struct dhcp -{ - /** transaction identifier of last sent request */ - u32_t xid; - /** our connection to the DHCP server */ - struct udp_pcb *pcb; - /** incoming msg */ - struct dhcp_msg *msg_in; - /** incoming msg options */ - void *options_in; - /** ingoing msg options length */ - u16_t options_in_len; - /** current DHCP state machine state */ - u8_t state; - /** retries of current request */ - u8_t tries; - - struct pbuf *p_out; /* pbuf of outcoming msg */ - struct dhcp_msg *msg_out; /* outgoing msg */ - u16_t options_out_len; /* outgoing msg options length */ - u16_t request_timeout; /* #ticks with period DHCP_FINE_TIMER_SECS for request timeout */ - u16_t t1_timeout; /* #ticks with period DHCP_COARSE_TIMER_SECS for renewal time */ - u16_t t2_timeout; /* #ticks with period DHCP_COARSE_TIMER_SECS for rebind time */ - struct ip_addr server_ip_addr; /* dhcp server address that offered this lease */ - struct ip_addr offered_ip_addr; - struct ip_addr offered_sn_mask; - struct ip_addr offered_gw_addr; - struct ip_addr offered_bc_addr; -#define DHCP_MAX_DNS 2 - u32_t dns_count; /* actual number of DNS servers obtained */ - struct ip_addr offered_dns_addr[DHCP_MAX_DNS]; /* DNS server addresses */ - - u32_t offered_t0_lease; /* lease period (in seconds) */ - u32_t offered_t1_renew; /* recommended renew time (usually 50% of lease period) */ - u32_t offered_t2_rebind; /* recommended rebind time (usually 66% of lease period) */ -#if LWIP_DHCP_AUTOIP_COOP - u8_t autoip_coop_state; -#endif -/** Patch #1308 - * TODO: See dhcp.c "TODO"s - */ -#if 0 - struct ip_addr offered_si_addr; - u8_t *boot_file_name; -#endif -}; - -/* MUST be compiled with "pack structs" or equivalent! */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** minimum set of fields of any DHCP message */ -struct dhcp_msg -{ - PACK_STRUCT_FIELD(u8_t op); - PACK_STRUCT_FIELD(u8_t htype); - PACK_STRUCT_FIELD(u8_t hlen); - PACK_STRUCT_FIELD(u8_t hops); - PACK_STRUCT_FIELD(u32_t xid); - PACK_STRUCT_FIELD(u16_t secs); - PACK_STRUCT_FIELD(u16_t flags); - PACK_STRUCT_FIELD(struct ip_addr ciaddr); - PACK_STRUCT_FIELD(struct ip_addr yiaddr); - PACK_STRUCT_FIELD(struct ip_addr siaddr); - PACK_STRUCT_FIELD(struct ip_addr giaddr); -#define DHCP_CHADDR_LEN 16U - PACK_STRUCT_FIELD(u8_t chaddr[DHCP_CHADDR_LEN]); -#define DHCP_SNAME_LEN 64U - PACK_STRUCT_FIELD(u8_t sname[DHCP_SNAME_LEN]); -#define DHCP_FILE_LEN 128U - PACK_STRUCT_FIELD(u8_t file[DHCP_FILE_LEN]); - PACK_STRUCT_FIELD(u32_t cookie); -#define DHCP_MIN_OPTIONS_LEN 68U -/** make sure user does not configure this too small */ -#if ((defined(DHCP_OPTIONS_LEN)) && (DHCP_OPTIONS_LEN < DHCP_MIN_OPTIONS_LEN)) -# undef DHCP_OPTIONS_LEN -#endif -/** allow this to be configured in lwipopts.h, but not too small */ -#if (!defined(DHCP_OPTIONS_LEN)) -/** set this to be sufficient for your options in outgoing DHCP msgs */ -# define DHCP_OPTIONS_LEN DHCP_MIN_OPTIONS_LEN -#endif - PACK_STRUCT_FIELD(u8_t options[DHCP_OPTIONS_LEN]); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -/** start DHCP configuration */ -err_t dhcp_start(struct netif *netif); -/** enforce early lease renewal (not needed normally)*/ -err_t dhcp_renew(struct netif *netif); -/** release the DHCP lease, usually called before dhcp_stop()*/ -err_t dhcp_release(struct netif *netif); -/** stop DHCP configuration */ -void dhcp_stop(struct netif *netif); -/** inform server of our manual IP address */ -void dhcp_inform(struct netif *netif); -/** Handle a possible change in the network configuration */ -void dhcp_network_changed(struct netif *netif); - -/** if enabled, check whether the offered IP address is not in use, using ARP */ -#if DHCP_DOES_ARP_CHECK -void dhcp_arp_reply(struct netif *netif, struct ip_addr *addr); -#endif - -/** to be called every minute */ -void dhcp_coarse_tmr(void); -/** to be called every half second */ -void dhcp_fine_tmr(void); - -/** DHCP message item offsets and length */ -#define DHCP_MSG_OFS (UDP_DATA_OFS) - #define DHCP_OP_OFS (DHCP_MSG_OFS + 0) - #define DHCP_HTYPE_OFS (DHCP_MSG_OFS + 1) - #define DHCP_HLEN_OFS (DHCP_MSG_OFS + 2) - #define DHCP_HOPS_OFS (DHCP_MSG_OFS + 3) - #define DHCP_XID_OFS (DHCP_MSG_OFS + 4) - #define DHCP_SECS_OFS (DHCP_MSG_OFS + 8) - #define DHCP_FLAGS_OFS (DHCP_MSG_OFS + 10) - #define DHCP_CIADDR_OFS (DHCP_MSG_OFS + 12) - #define DHCP_YIADDR_OFS (DHCP_MSG_OFS + 16) - #define DHCP_SIADDR_OFS (DHCP_MSG_OFS + 20) - #define DHCP_GIADDR_OFS (DHCP_MSG_OFS + 24) - #define DHCP_CHADDR_OFS (DHCP_MSG_OFS + 28) - #define DHCP_SNAME_OFS (DHCP_MSG_OFS + 44) - #define DHCP_FILE_OFS (DHCP_MSG_OFS + 108) -#define DHCP_MSG_LEN 236 - -#define DHCP_COOKIE_OFS (DHCP_MSG_OFS + DHCP_MSG_LEN) -#define DHCP_OPTIONS_OFS (DHCP_MSG_OFS + DHCP_MSG_LEN + 4) - -#define DHCP_CLIENT_PORT 68 -#define DHCP_SERVER_PORT 67 - -/** DHCP client states */ -#define DHCP_REQUESTING 1 -#define DHCP_INIT 2 -#define DHCP_REBOOTING 3 -#define DHCP_REBINDING 4 -#define DHCP_RENEWING 5 -#define DHCP_SELECTING 6 -#define DHCP_INFORMING 7 -#define DHCP_CHECKING 8 -#define DHCP_PERMANENT 9 -#define DHCP_BOUND 10 -/** not yet implemented #define DHCP_RELEASING 11 */ -#define DHCP_BACKING_OFF 12 -#define DHCP_OFF 13 - -/** AUTOIP cooperatation flags */ -#define DHCP_AUTOIP_COOP_STATE_OFF 0 -#define DHCP_AUTOIP_COOP_STATE_ON 1 - -#define DHCP_BOOTREQUEST 1 -#define DHCP_BOOTREPLY 2 - -#define DHCP_DISCOVER 1 -#define DHCP_OFFER 2 -#define DHCP_REQUEST 3 -#define DHCP_DECLINE 4 -#define DHCP_ACK 5 -#define DHCP_NAK 6 -#define DHCP_RELEASE 7 -#define DHCP_INFORM 8 - -#define DHCP_HTYPE_ETH 1 - -#define DHCP_HLEN_ETH 6 - -#define DHCP_BROADCAST_FLAG 15 -#define DHCP_BROADCAST_MASK (1 << DHCP_FLAG_BROADCAST) - -/** BootP options */ -#define DHCP_OPTION_PAD 0 -#define DHCP_OPTION_SUBNET_MASK 1 /* RFC 2132 3.3 */ -#define DHCP_OPTION_ROUTER 3 -#define DHCP_OPTION_DNS_SERVER 6 -#define DHCP_OPTION_HOSTNAME 12 -#define DHCP_OPTION_IP_TTL 23 -#define DHCP_OPTION_MTU 26 -#define DHCP_OPTION_BROADCAST 28 -#define DHCP_OPTION_TCP_TTL 37 -#define DHCP_OPTION_END 255 - -/** DHCP options */ -#define DHCP_OPTION_REQUESTED_IP 50 /* RFC 2132 9.1, requested IP address */ -#define DHCP_OPTION_LEASE_TIME 51 /* RFC 2132 9.2, time in seconds, in 4 bytes */ -#define DHCP_OPTION_OVERLOAD 52 /* RFC2132 9.3, use file and/or sname field for options */ - -#define DHCP_OPTION_MESSAGE_TYPE 53 /* RFC 2132 9.6, important for DHCP */ -#define DHCP_OPTION_MESSAGE_TYPE_LEN 1 - - -#define DHCP_OPTION_SERVER_ID 54 /* RFC 2132 9.7, server IP address */ -#define DHCP_OPTION_PARAMETER_REQUEST_LIST 55 /* RFC 2132 9.8, requested option types */ - -#define DHCP_OPTION_MAX_MSG_SIZE 57 /* RFC 2132 9.10, message size accepted >= 576 */ -#define DHCP_OPTION_MAX_MSG_SIZE_LEN 2 - -#define DHCP_OPTION_T1 58 /* T1 renewal time */ -#define DHCP_OPTION_T2 59 /* T2 rebinding time */ -#define DHCP_OPTION_US 60 -#define DHCP_OPTION_CLIENT_ID 61 -#define DHCP_OPTION_TFTP_SERVERNAME 66 -#define DHCP_OPTION_BOOTFILE 67 - -/** possible combinations of overloading the file and sname fields with options */ -#define DHCP_OVERLOAD_NONE 0 -#define DHCP_OVERLOAD_FILE 1 -#define DHCP_OVERLOAD_SNAME 2 -#define DHCP_OVERLOAD_SNAME_FILE 3 - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_DHCP */ - -#endif /*__LWIP_DHCP_H__*/ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dns.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dns.h deleted file mode 100644 index c1b8ae0318e..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/dns.h +++ /dev/null @@ -1,99 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * lwip DNS resolver header file. - - * Author: Jim Pettinato - * April 2007 - - * ported from uIP resolv.c Copyright (c) 2002-2003, Adam Dunkels. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE - * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, - * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING - * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef __LWIP_DNS_H__ -#define __LWIP_DNS_H__ - -#include "lwip/opt.h" - -#if LWIP_DNS /* don't build if not configured for use in lwipopts.h */ - -/** DNS timer period */ -#define DNS_TMR_INTERVAL 1000 - -/** DNS field TYPE used for "Resource Records" */ -#define DNS_RRTYPE_A 1 /* a host address */ -#define DNS_RRTYPE_NS 2 /* an authoritative name server */ -#define DNS_RRTYPE_MD 3 /* a mail destination (Obsolete - use MX) */ -#define DNS_RRTYPE_MF 4 /* a mail forwarder (Obsolete - use MX) */ -#define DNS_RRTYPE_CNAME 5 /* the canonical name for an alias */ -#define DNS_RRTYPE_SOA 6 /* marks the start of a zone of authority */ -#define DNS_RRTYPE_MB 7 /* a mailbox domain name (EXPERIMENTAL) */ -#define DNS_RRTYPE_MG 8 /* a mail group member (EXPERIMENTAL) */ -#define DNS_RRTYPE_MR 9 /* a mail rename domain name (EXPERIMENTAL) */ -#define DNS_RRTYPE_NULL 10 /* a null RR (EXPERIMENTAL) */ -#define DNS_RRTYPE_WKS 11 /* a well known service description */ -#define DNS_RRTYPE_PTR 12 /* a domain name pointer */ -#define DNS_RRTYPE_HINFO 13 /* host information */ -#define DNS_RRTYPE_MINFO 14 /* mailbox or mail list information */ -#define DNS_RRTYPE_MX 15 /* mail exchange */ -#define DNS_RRTYPE_TXT 16 /* text strings */ - -/** DNS field CLASS used for "Resource Records" */ -#define DNS_RRCLASS_IN 1 /* the Internet */ -#define DNS_RRCLASS_CS 2 /* the CSNET class (Obsolete - used only for examples in some obsolete RFCs) */ -#define DNS_RRCLASS_CH 3 /* the CHAOS class */ -#define DNS_RRCLASS_HS 4 /* Hesiod [Dyer 87] */ -#define DNS_RRCLASS_FLUSH 0x800 /* Flush bit */ - -/** Callback which is invoked when a hostname is found. - * A function of this type must be implemented by the application using the DNS resolver. - * @param name pointer to the name that was looked up. - * @param ipaddr pointer to a struct ip_addr containing the IP address of the hostname, - * or NULL if the name could not be found (or on any other error). - * @param callback_arg a user-specified callback argument passed to dns_gethostbyname -*/ -typedef void (*dns_found_callback)(const char *name, struct ip_addr *ipaddr, void *callback_arg); - - -void dns_init(void); - -void dns_tmr(void); - -void dns_setserver(u8_t numdns, struct ip_addr *dnsserver); - -struct ip_addr dns_getserver(u8_t numdns); - -err_t dns_gethostbyname(const char *hostname, struct ip_addr *addr, - dns_found_callback found, void *callback_arg); - -#if DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC -int dns_local_removehost(const char *hostname, const struct ip_addr *addr); -err_t dns_local_addhost(const char *hostname, const struct ip_addr *addr); -#endif /* DNS_LOCAL_HOSTLIST && DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - -#endif /* LWIP_DNS */ - -#endif /* __LWIP_DNS_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/err.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/err.h deleted file mode 100644 index 792f276065b..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/err.h +++ /dev/null @@ -1,89 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_ERR_H__ -#define __LWIP_ERR_H__ - -#include "lwip/opt.h" -#include "lwip/arch.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** Define LWIP_ERR_T in cc.h if you want to use - * a different type for your platform (must be signed). */ -#ifdef LWIP_ERR_T -typedef LWIP_ERR_T err_t; -#else /* LWIP_ERR_T */ - typedef s8_t err_t; -#endif /* LWIP_ERR_T*/ - -/* Definitions for error constants. */ - -#define ERR_OK 0 /* No error, everything OK. */ -#define ERR_MEM -1 /* Out of memory error. */ -#define ERR_BUF -2 /* Buffer error. */ -#define ERR_TIMEOUT -3 /* Timeout. */ -#define ERR_RTE -4 /* Routing problem. */ - -#define ERR_IS_FATAL(e) ((e) < ERR_RTE) - -#define ERR_ABRT -5 /* Connection aborted. */ -#define ERR_RST -6 /* Connection reset. */ -#define ERR_CLSD -7 /* Connection closed. */ -#define ERR_CONN -8 /* Not connected. */ - -#define ERR_VAL -9 /* Illegal value. */ - -#define ERR_ARG -10 /* Illegal argument. */ - -#define ERR_USE -11 /* Address in use. */ - -#define ERR_IF -12 /* Low-level netif error */ -#define ERR_ISCONN -13 /* Already connected. */ - -#define ERR_INPROGRESS -14 /* Operation in progress */ - - -#ifdef LWIP_DEBUG -extern const char *lwip_strerr(err_t err); -#else -#define lwip_strerr(x) "" -#endif /* LWIP_DEBUG */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_ERR_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/init.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/init.h deleted file mode 100644 index a86e0d9c8e1..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/init.h +++ /dev/null @@ -1,74 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_INIT_H__ -#define __LWIP_INIT_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** X.x.x: Major version of the stack */ -#define LWIP_VERSION_MAJOR 1U -/** x.X.x: Minor version of the stack */ -#define LWIP_VERSION_MINOR 3U -/** x.x.X: Revision of the stack */ -#define LWIP_VERSION_REVISION 2U -/** For release candidates, this is set to 1..254 - * For official releases, this is set to 255 (LWIP_RC_RELEASE) - * For development versions (CVS), this is set to 0 (LWIP_RC_DEVELOPMENT) */ -#define LWIP_VERSION_RC 255U - -/** LWIP_VERSION_RC is set to LWIP_RC_RELEASE for official releases */ -#define LWIP_RC_RELEASE 255U -/** LWIP_VERSION_RC is set to LWIP_RC_DEVELOPMENT for CVS versions */ -#define LWIP_RC_DEVELOPMENT 0U - -#define LWIP_VERSION_IS_RELEASE (LWIP_VERSION_RC == LWIP_RC_RELEASE) -#define LWIP_VERSION_IS_DEVELOPMENT (LWIP_VERSION_RC == LWIP_RC_DEVELOPMENT) -#define LWIP_VERSION_IS_RC ((LWIP_VERSION_RC != LWIP_RC_RELEASE) && (LWIP_VERSION_RC != LWIP_RC_DEVELOPMENT)) - -/** Provides the version of the stack */ -#define LWIP_VERSION (LWIP_VERSION_MAJOR << 24 | LWIP_VERSION_MINOR << 16 | \ - LWIP_VERSION_REVISION << 8 | LWIP_VERSION_RC) - -/* Modules initialization */ -void lwip_init(void); - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_INIT_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/mem.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/mem.h deleted file mode 100644 index 327229e5879..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/mem.h +++ /dev/null @@ -1,109 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_MEM_H__ -#define __LWIP_MEM_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if MEM_LIBC_MALLOC - -#include /* for size_t */ - -typedef size_t mem_size_t; - -/* aliases for C library malloc() */ -#define mem_init() -/* in case C library malloc() needs extra protection, - * allow these defines to be overridden. - */ -#ifndef mem_free -#define mem_free free -#endif -#ifndef mem_malloc -#define mem_malloc malloc -#endif -#ifndef mem_calloc -#define mem_calloc calloc -#endif -#ifndef mem_realloc -static void *mem_realloc(void *mem, mem_size_t size) -{ - LWIP_UNUSED_ARG(size); - return mem; -} -#endif -#else /* MEM_LIBC_MALLOC */ - -/* MEM_SIZE would have to be aligned, but using 64000 here instead of - * 65535 leaves some room for alignment... - */ -#if MEM_SIZE > 64000l -typedef u32_t mem_size_t; -#else -typedef u16_t mem_size_t; -#endif /* MEM_SIZE > 64000 */ - -#if MEM_USE_POOLS -/** mem_init is not used when using pools instead of a heap */ -#define mem_init() -/** mem_realloc is not used when using pools instead of a heap: - we can't free part of a pool element and don't want to copy the rest */ -#define mem_realloc(mem, size) (mem) -#else /* MEM_USE_POOLS */ -/* lwIP alternative malloc */ -void mem_init(void); -void *mem_realloc(void *mem, mem_size_t size); -#endif /* MEM_USE_POOLS */ -void *mem_malloc(mem_size_t size); -void *mem_calloc(mem_size_t count, mem_size_t size); -void mem_free(void *mem); -#endif /* MEM_LIBC_MALLOC */ - -#ifndef LWIP_MEM_ALIGN_SIZE -#define LWIP_MEM_ALIGN_SIZE(size) (((size) + MEM_ALIGNMENT - 1) & ~(MEM_ALIGNMENT-1)) -#endif - -#ifndef LWIP_MEM_ALIGN -#define LWIP_MEM_ALIGN(addr) ((void *)(((mem_ptr_t)(addr) + MEM_ALIGNMENT - 1) & ~(mem_ptr_t)(MEM_ALIGNMENT-1))) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_MEM_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp.h deleted file mode 100644 index 3de7bf9a042..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp.h +++ /dev/null @@ -1,118 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#ifndef __LWIP_MEMP_H__ -#define __LWIP_MEMP_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* Create the list of all memory pools managed by memp. MEMP_MAX represents a NULL pool at the end */ -typedef enum { -#define LWIP_MEMPOOL(name,num,size,desc) MEMP_##name, -#include "lwip/memp_std.h" - MEMP_MAX -} memp_t; - -#if MEM_USE_POOLS -/* Use a helper type to get the start and end of the user "memory pools" for mem_malloc */ -typedef enum { - /* Get the first (via: - MEMP_POOL_HELPER_START = ((u8_t) 1*MEMP_POOL_A + 0*MEMP_POOL_B + 0*MEMP_POOL_C + 0)*/ - MEMP_POOL_HELPER_FIRST = ((u8_t) -#define LWIP_MEMPOOL(name,num,size,desc) -#define LWIP_MALLOC_MEMPOOL_START 1 -#define LWIP_MALLOC_MEMPOOL(num, size) * MEMP_POOL_##size + 0 -#define LWIP_MALLOC_MEMPOOL_END -#include "lwip/memp_std.h" - ) , - /* Get the last (via: - MEMP_POOL_HELPER_END = ((u8_t) 0 + MEMP_POOL_A*0 + MEMP_POOL_B*0 + MEMP_POOL_C*1) */ - MEMP_POOL_HELPER_LAST = ((u8_t) -#define LWIP_MEMPOOL(name,num,size,desc) -#define LWIP_MALLOC_MEMPOOL_START -#define LWIP_MALLOC_MEMPOOL(num, size) 0 + MEMP_POOL_##size * -#define LWIP_MALLOC_MEMPOOL_END 1 -#include "lwip/memp_std.h" - ) -} memp_pool_helper_t; - -/* The actual start and stop values are here (cast them over) - We use this helper type and these defines so we can avoid using const memp_t values */ -#define MEMP_POOL_FIRST ((memp_t) MEMP_POOL_HELPER_FIRST) -#define MEMP_POOL_LAST ((memp_t) MEMP_POOL_HELPER_LAST) -#endif /* MEM_USE_POOLS */ - -#if MEMP_MEM_MALLOC || MEM_USE_POOLS -extern const u16_t memp_sizes[MEMP_MAX]; -#endif /* MEMP_MEM_MALLOC || MEM_USE_POOLS */ - -#if MEMP_MEM_MALLOC - -#include "mem.h" - -#define memp_init() -#define memp_malloc(type) mem_malloc(memp_sizes[type]) -#define memp_free(type, mem) mem_free(mem) - -#else /* MEMP_MEM_MALLOC */ - -#if MEM_USE_POOLS -/** This structure is used to save the pool one element came from. */ -struct memp_malloc_helper -{ - memp_t poolnr; -}; -#endif /* MEM_USE_POOLS */ - -void memp_init(void); - -#if MEMP_OVERFLOW_CHECK -void *memp_malloc_fn(memp_t type, const char* file, const int line); -#define memp_malloc(t) memp_malloc_fn((t), __FILE__, __LINE__) -#else -void *memp_malloc(memp_t type); -#endif -void memp_free(memp_t type, void *mem); - -#endif /* MEMP_MEM_MALLOC */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_MEMP_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp_std.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp_std.h deleted file mode 100644 index d8d4945ddb8..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/memp_std.h +++ /dev/null @@ -1,104 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * SETUP: Make sure we define everything we will need. - * - * We have create three types of pools: - * 1) MEMPOOL - standard pools - * 2) MALLOC_MEMPOOL - to be used by mem_malloc in mem.c - * 3) PBUF_MEMPOOL - a mempool of pbuf's, so include space for the pbuf struct - * - * If the include'r doesn't require any special treatment of each of the types - * above, then will declare #2 & #3 to be just standard mempools. - */ -#ifndef LWIP_MALLOC_MEMPOOL -/* This treats "malloc pools" just like any other pool. - The pools are a little bigger to provide 'size' as the amount of user data. */ -#define LWIP_MALLOC_MEMPOOL(num, size) LWIP_MEMPOOL(POOL_##size, num, (size + sizeof(struct memp_malloc_helper)), "MALLOC_"#size) -#define LWIP_MALLOC_MEMPOOL_START -#define LWIP_MALLOC_MEMPOOL_END -#endif /* LWIP_MALLOC_MEMPOOL */ - -#ifndef LWIP_PBUF_MEMPOOL -/* This treats "pbuf pools" just like any other pool. - * Allocates buffers for a pbuf struct AND a payload size */ -#define LWIP_PBUF_MEMPOOL(name, num, payload, desc) LWIP_MEMPOOL(name, num, (MEMP_ALIGN_SIZE(sizeof(struct pbuf)) + MEMP_ALIGN_SIZE(payload)), desc) -#endif /* LWIP_PBUF_MEMPOOL */ - - -/* - * A list of internal pools used by LWIP. - * - * LWIP_MEMPOOL(pool_name, number_elements, element_size, pool_description) - * creates a pool name MEMP_pool_name. description is used in stats.c - */ -#if LWIP_RAW -LWIP_MEMPOOL(RAW_PCB, MEMP_NUM_RAW_PCB, sizeof(struct raw_pcb), "RAW_PCB") -#endif /* LWIP_RAW */ - -#if LWIP_UDP -LWIP_MEMPOOL(UDP_PCB, MEMP_NUM_UDP_PCB, sizeof(struct udp_pcb), "UDP_PCB") -#endif /* LWIP_UDP */ - -#if LWIP_TCP -LWIP_MEMPOOL(TCP_PCB, MEMP_NUM_TCP_PCB, sizeof(struct tcp_pcb), "TCP_PCB") -LWIP_MEMPOOL(TCP_PCB_LISTEN, MEMP_NUM_TCP_PCB_LISTEN, sizeof(struct tcp_pcb_listen), "TCP_PCB_LISTEN") -LWIP_MEMPOOL(TCP_SEG, MEMP_NUM_TCP_SEG, sizeof(struct tcp_seg), "TCP_SEG") -#endif /* LWIP_TCP */ - -#if IP_REASSEMBLY -LWIP_MEMPOOL(REASSDATA, MEMP_NUM_REASSDATA, sizeof(struct ip_reassdata), "REASSDATA") -#endif /* IP_REASSEMBLY */ - -#if LWIP_NETCONN -LWIP_MEMPOOL(NETBUF, MEMP_NUM_NETBUF, sizeof(struct netbuf), "NETBUF") -LWIP_MEMPOOL(NETCONN, MEMP_NUM_NETCONN, sizeof(struct netconn), "NETCONN") -#endif /* LWIP_NETCONN */ - -#if NO_SYS==0 -LWIP_MEMPOOL(TCPIP_MSG_API, MEMP_NUM_TCPIP_MSG_API, sizeof(struct tcpip_msg), "TCPIP_MSG_API") -LWIP_MEMPOOL(TCPIP_MSG_INPKT,MEMP_NUM_TCPIP_MSG_INPKT, sizeof(struct tcpip_msg), "TCPIP_MSG_INPKT") -#endif /* NO_SYS==0 */ - -#if ARP_QUEUEING -LWIP_MEMPOOL(ARP_QUEUE, MEMP_NUM_ARP_QUEUE, sizeof(struct etharp_q_entry), "ARP_QUEUE") -#endif /* ARP_QUEUEING */ - -#if LWIP_IGMP -LWIP_MEMPOOL(IGMP_GROUP, MEMP_NUM_IGMP_GROUP, sizeof(struct igmp_group), "IGMP_GROUP") -#endif /* LWIP_IGMP */ - -#if NO_SYS==0 -LWIP_MEMPOOL(SYS_TIMEOUT, MEMP_NUM_SYS_TIMEOUT, sizeof(struct sys_timeo), "SYS_TIMEOUT") -#endif /* NO_SYS==0 */ - - -/* - * A list of pools of pbuf's used by LWIP. - * - * LWIP_PBUF_MEMPOOL(pool_name, number_elements, pbuf_payload_size, pool_description) - * creates a pool name MEMP_pool_name. description is used in stats.c - * This allocates enough space for the pbuf struct and a payload. - * (Example: pbuf_payload_size=0 allocates only size for the struct) - */ -LWIP_PBUF_MEMPOOL(PBUF, MEMP_NUM_PBUF, 0, "PBUF_REF/ROM") -LWIP_PBUF_MEMPOOL(PBUF_POOL, PBUF_POOL_SIZE, PBUF_POOL_BUFSIZE, "PBUF_POOL") - - -/* - * Allow for user-defined pools; this must be explicitly set in lwipopts.h - * since the default is to NOT look for lwippools.h - */ -#if MEMP_USE_CUSTOM_POOLS -#include "lwippools.h" -#endif /* MEMP_USE_CUSTOM_POOLS */ - -/* - * REQUIRED CLEANUP: Clear up so we don't get "multiply defined" error later - * (#undef is ignored for something that is not defined) - */ -#undef LWIP_MEMPOOL -#undef LWIP_MALLOC_MEMPOOL -#undef LWIP_MALLOC_MEMPOOL_START -#undef LWIP_MALLOC_MEMPOOL_END -#undef LWIP_PBUF_MEMPOOL diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netbuf.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netbuf.h deleted file mode 100644 index ab9ea33d1ae..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netbuf.h +++ /dev/null @@ -1,88 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_NETBUF_H__ -#define __LWIP_NETBUF_H__ - -#include "lwip/opt.h" -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct netbuf { - struct pbuf *p, *ptr; - struct ip_addr *addr; - u16_t port; -#if LWIP_NETBUF_RECVINFO - struct ip_addr *toaddr; - u16_t toport; -#endif /* LWIP_NETBUF_RECVINFO */ -}; - -/* Network buffer functions: */ -struct netbuf * netbuf_new (void); -void netbuf_delete (struct netbuf *buf); -void * netbuf_alloc (struct netbuf *buf, u16_t size); -void netbuf_free (struct netbuf *buf); -err_t netbuf_ref (struct netbuf *buf, - const void *dataptr, u16_t size); -void netbuf_chain (struct netbuf *head, - struct netbuf *tail); - -u16_t netbuf_len (struct netbuf *buf); -err_t netbuf_data (struct netbuf *buf, - void **dataptr, u16_t *len); -s8_t netbuf_next (struct netbuf *buf); -void netbuf_first (struct netbuf *buf); - - -#define netbuf_copy_partial(buf, dataptr, len, offset) \ - pbuf_copy_partial((buf)->p, (dataptr), (len), (offset)) -#define netbuf_copy(buf,dataptr,len) netbuf_copy_partial(buf, dataptr, len, 0) -#define netbuf_take(buf, dataptr, len) pbuf_take((buf)->p, dataptr, len) -#define netbuf_len(buf) ((buf)->p->tot_len) -#define netbuf_fromaddr(buf) ((buf)->addr) -#define netbuf_fromport(buf) ((buf)->port) -#if LWIP_NETBUF_RECVINFO -#define netbuf_destaddr(buf) ((buf)->toaddr) -#define netbuf_destport(buf) ((buf)->toport) -#endif /* LWIP_NETBUF_RECVINFO */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_NETBUF_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netdb.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netdb.h deleted file mode 100644 index c59c3a442cc..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netdb.h +++ /dev/null @@ -1,113 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Simon Goldschmidt - * - */ - -#include "lwip/opt.h" - -#if LWIP_DNS && LWIP_SOCKET - -#include /* for size_t */ - -#include "lwip/sockets.h" - -/* some rarely used options */ -#ifndef LWIP_DNS_API_DECLARE_H_ERRNO -#define LWIP_DNS_API_DECLARE_H_ERRNO 1 -#endif - -#ifndef LWIP_DNS_API_DEFINE_ERRORS -#define LWIP_DNS_API_DEFINE_ERRORS 1 -#endif - -#ifndef LWIP_DNS_API_DECLARE_STRUCTS -#define LWIP_DNS_API_DECLARE_STRUCTS 1 -#endif - -#if LWIP_DNS_API_DEFINE_ERRORS -/** Errors used by the DNS API functions, h_errno can be one of them */ -#define EAI_NONAME 200 -#define EAI_SERVICE 201 -#define EAI_FAIL 202 -#define EAI_MEMORY 203 - -#define HOST_NOT_FOUND 210 -#define NO_DATA 211 -#define NO_RECOVERY 212 -#define TRY_AGAIN 213 -#endif /* LWIP_DNS_API_DEFINE_ERRORS */ - -#if LWIP_DNS_API_DECLARE_STRUCTS -struct hostent { - char *h_name; /* Official name of the host. */ - char **h_aliases; /* A pointer to an array of pointers to alternative host names, - terminated by a null pointer. */ - int h_addrtype; /* Address type. */ - int h_length; /* The length, in bytes, of the address. */ - char **h_addr_list; /* A pointer to an array of pointers to network addresses (in - network byte order) for the host, terminated by a null pointer. */ -#define h_addr h_addr_list[0] /* for backward compatibility */ -}; - -struct addrinfo { - int ai_flags; /* Input flags. */ - int ai_family; /* Address family of socket. */ - int ai_socktype; /* Socket type. */ - int ai_protocol; /* Protocol of socket. */ - socklen_t ai_addrlen; /* Length of socket address. */ - struct sockaddr *ai_addr; /* Socket address of socket. */ - char *ai_canonname; /* Canonical name of service location. */ - struct addrinfo *ai_next; /* Pointer to next in list. */ -}; -#endif /* LWIP_DNS_API_DECLARE_STRUCTS */ - -#if LWIP_DNS_API_DECLARE_H_ERRNO -/* application accessable error code set by the DNS API functions */ -extern int h_errno; -#endif /* LWIP_DNS_API_DECLARE_H_ERRNO*/ - -struct hostent *lwip_gethostbyname(const char *name); -int lwip_gethostbyname_r(const char *name, struct hostent *ret, char *buf, - size_t buflen, struct hostent **result, int *h_errnop); -void lwip_freeaddrinfo(struct addrinfo *ai); -int lwip_getaddrinfo(const char *nodename, - const char *servname, - const struct addrinfo *hints, - struct addrinfo **res); - -#if LWIP_COMPAT_SOCKETS -#define gethostbyname(name) lwip_gethostbyname(name) -#define gethostbyname_r(name, ret, buf, buflen, result, h_errnop) \ - lwip_gethostbyname_r(name, ret, buf, buflen, result, h_errnop) -#define freeaddrinfo(addrinfo) lwip_freeaddrinfo(addrinfo) -#define getaddrinfo(nodname, servname, hints, res) \ - lwip_getaddrinfo(nodname, servname, hints, res) -#endif /* LWIP_COMPAT_SOCKETS */ - -#endif /* LWIP_DNS && LWIP_SOCKET */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netif.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netif.h deleted file mode 100644 index 8e650d74d61..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netif.h +++ /dev/null @@ -1,265 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_NETIF_H__ -#define __LWIP_NETIF_H__ - -#include "lwip/opt.h" - -#define ENABLE_LOOPBACK (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF) - -#include "lwip/err.h" - -#include "lwip/ip_addr.h" - -#include "lwip/inet.h" -#include "lwip/pbuf.h" -#if LWIP_DHCP -struct dhcp; -#endif -#if LWIP_AUTOIP -struct autoip; -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* Throughout this file, IP addresses are expected to be in - * the same byte order as in IP_PCB. */ - -/** must be the maximum of all used hardware address lengths - across all types of interfaces in use */ -#define NETIF_MAX_HWADDR_LEN 6U - -/** TODO: define the use (where, when, whom) of netif flags */ - -/** whether the network interface is 'up'. this is - * a software flag used to control whether this network - * interface is enabled and processes traffic. - */ -#define NETIF_FLAG_UP 0x01U -/** if set, the netif has broadcast capability */ -#define NETIF_FLAG_BROADCAST 0x02U -/** if set, the netif is one end of a point-to-point connection */ -#define NETIF_FLAG_POINTTOPOINT 0x04U -/** if set, the interface is configured using DHCP */ -#define NETIF_FLAG_DHCP 0x08U -/** if set, the interface has an active link - * (set by the network interface driver) */ -#define NETIF_FLAG_LINK_UP 0x10U -/** if set, the netif is an device using ARP */ -#define NETIF_FLAG_ETHARP 0x20U -/** if set, the netif has IGMP capability */ -#define NETIF_FLAG_IGMP 0x40U - -/** Generic data structure used for all lwIP network interfaces. - * The following fields should be filled in by the initialization - * function for the device driver: hwaddr_len, hwaddr[], mtu, flags */ - -struct netif { - /** pointer to next in linked list */ - struct netif *next; - - /** IP address configuration in network byte order */ - struct ip_addr ip_addr; - struct ip_addr netmask; - struct ip_addr gw; - - /** This function is called by the network device driver - * to pass a packet up the TCP/IP stack. */ - err_t (* input)(struct pbuf *p, struct netif *inp); - /** This function is called by the IP module when it wants - * to send a packet on the interface. This function typically - * first resolves the hardware address, then sends the packet. */ - err_t (* output)(struct netif *netif, struct pbuf *p, - struct ip_addr *ipaddr); - /** This function is called by the ARP module when it wants - * to send a packet on the interface. This function outputs - * the pbuf as-is on the link medium. */ - err_t (* linkoutput)(struct netif *netif, struct pbuf *p); -#if LWIP_NETIF_STATUS_CALLBACK - /** This function is called when the netif state is set to up or down - */ - void (* status_callback)(struct netif *netif); -#endif /* LWIP_NETIF_STATUS_CALLBACK */ -#if LWIP_NETIF_LINK_CALLBACK - /** This function is called when the netif link is set to up or down - */ - void (* link_callback)(struct netif *netif); -#endif /* LWIP_NETIF_LINK_CALLBACK */ - /** This field can be set by the device driver and could point - * to state information for the device. */ - void *state; -#if LWIP_DHCP - /** the DHCP client state information for this netif */ - struct dhcp *dhcp; -#endif /* LWIP_DHCP */ -#if LWIP_AUTOIP - /** the AutoIP client state information for this netif */ - struct autoip *autoip; -#endif -#if LWIP_NETIF_HOSTNAME - /* the hostname for this netif, NULL is a valid value */ - char* hostname; -#endif /* LWIP_NETIF_HOSTNAME */ - /** maximum transfer unit (in bytes) */ - u16_t mtu; - /** number of bytes used in hwaddr */ - u8_t hwaddr_len; - /** link level hardware address of this interface */ - u8_t hwaddr[NETIF_MAX_HWADDR_LEN]; - /** flags (see NETIF_FLAG_ above) */ - u8_t flags; - /** descriptive abbreviation */ - char name[2]; - /** number of this interface */ - u8_t num; -#if LWIP_SNMP - /** link type (from "snmp_ifType" enum from snmp.h) */ - u8_t link_type; - /** (estimate) link speed */ - u32_t link_speed; - /** timestamp at last change made (up/down) */ - u32_t ts; - /** counters */ - u32_t ifinoctets; - u32_t ifinucastpkts; - u32_t ifinnucastpkts; - u32_t ifindiscards; - u32_t ifoutoctets; - u32_t ifoutucastpkts; - u32_t ifoutnucastpkts; - u32_t ifoutdiscards; -#endif /* LWIP_SNMP */ -#if LWIP_IGMP - /* This function could be called to add or delete a entry in the multicast filter table of the ethernet MAC.*/ - err_t (*igmp_mac_filter)( struct netif *netif, struct ip_addr *group, u8_t action); -#endif /* LWIP_IGMP */ -#if LWIP_NETIF_HWADDRHINT - u8_t *addr_hint; -#endif /* LWIP_NETIF_HWADDRHINT */ -#if ENABLE_LOOPBACK - /* List of packets to be queued for ourselves. */ - struct pbuf *loop_first; - struct pbuf *loop_last; -#if LWIP_LOOPBACK_MAX_PBUFS - u16_t loop_cnt_current; -#endif /* LWIP_LOOPBACK_MAX_PBUFS */ -#endif /* ENABLE_LOOPBACK */ -}; - -#if LWIP_SNMP -#define NETIF_INIT_SNMP(netif, type, speed) \ - /* use "snmp_ifType" enum from snmp.h for "type", snmp_ifType_ethernet_csmacd by example */ \ - netif->link_type = type; \ - /* your link speed here (units: bits per second) */ \ - netif->link_speed = speed; \ - netif->ts = 0; \ - netif->ifinoctets = 0; \ - netif->ifinucastpkts = 0; \ - netif->ifinnucastpkts = 0; \ - netif->ifindiscards = 0; \ - netif->ifoutoctets = 0; \ - netif->ifoutucastpkts = 0; \ - netif->ifoutnucastpkts = 0; \ - netif->ifoutdiscards = 0 -#else /* LWIP_SNMP */ -#define NETIF_INIT_SNMP(netif, type, speed) -#endif /* LWIP_SNMP */ - - -/** The list of network interfaces. */ -extern struct netif *netif_list; -/** The default network interface. */ -extern struct netif *netif_default; - -#define netif_init() /* Compatibility define, not init needed. */ - -struct netif *netif_add(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask, - struct ip_addr *gw, - void *state, - err_t (* init)(struct netif *netif), - err_t (* input)(struct pbuf *p, struct netif *netif)); - -void -netif_set_addr(struct netif *netif,struct ip_addr *ipaddr, struct ip_addr *netmask, - struct ip_addr *gw); -void netif_remove(struct netif * netif); - -/* Returns a network interface given its name. The name is of the form - "et0", where the first two letters are the "name" field in the - netif structure, and the digit is in the num field in the same - structure. */ -struct netif *netif_find(char *name); - -void netif_set_default(struct netif *netif); - -void netif_set_ipaddr(struct netif *netif, struct ip_addr *ipaddr); -void netif_set_netmask(struct netif *netif, struct ip_addr *netmask); -void netif_set_gw(struct netif *netif, struct ip_addr *gw); - -void netif_set_up(struct netif *netif); -void netif_set_down(struct netif *netif); -u8_t netif_is_up(struct netif *netif); - -#if LWIP_NETIF_STATUS_CALLBACK -/* - * Set callback to be called when interface is brought up/down - */ -void netif_set_status_callback(struct netif *netif, void (* status_callback)(struct netif *netif)); -#endif /* LWIP_NETIF_STATUS_CALLBACK */ - -#if LWIP_NETIF_LINK_CALLBACK -void netif_set_link_up(struct netif *netif); -void netif_set_link_down(struct netif *netif); -u8_t netif_is_link_up(struct netif *netif); -/* - * Set callback to be called when link is brought up/down - */ -void netif_set_link_callback(struct netif *netif, void (* link_callback)(struct netif *netif)); -#endif /* LWIP_NETIF_LINK_CALLBACK */ - -#ifdef __cplusplus -} -#endif - -#if ENABLE_LOOPBACK -err_t netif_loop_output(struct netif *netif, struct pbuf *p, struct ip_addr *dest_ip); -void netif_poll(struct netif *netif); -#if !LWIP_NETIF_LOOPBACK_MULTITHREADING -void netif_poll_all(void); -#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */ -#endif /* ENABLE_LOOPBACK */ - -#endif /* __LWIP_NETIF_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netifapi.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netifapi.h deleted file mode 100644 index 22d8690ea00..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/netifapi.h +++ /dev/null @@ -1,107 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - */ - -#ifndef __LWIP_NETIFAPI_H__ -#define __LWIP_NETIFAPI_H__ - -#include "lwip/opt.h" - -#if LWIP_NETIF_API /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/sys.h" -#include "lwip/netif.h" -#include "lwip/dhcp.h" -#include "lwip/autoip.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct netifapi_msg_msg { -#if !LWIP_TCPIP_CORE_LOCKING - sys_sem_t sem; -#endif /* !LWIP_TCPIP_CORE_LOCKING */ - err_t err; - struct netif *netif; - union { - struct { - struct ip_addr *ipaddr; - struct ip_addr *netmask; - struct ip_addr *gw; - void *state; - err_t (* init) (struct netif *netif); - err_t (* input)(struct pbuf *p, struct netif *netif); - } add; - struct { - void (* voidfunc)(struct netif *netif); - err_t (* errtfunc)(struct netif *netif); - } common; - } msg; -}; - -struct netifapi_msg { - void (* function)(struct netifapi_msg_msg *msg); - struct netifapi_msg_msg msg; -}; - - -/* API for application */ -err_t netifapi_netif_add ( struct netif *netif, - struct ip_addr *ipaddr, - struct ip_addr *netmask, - struct ip_addr *gw, - void *state, - err_t (* init)(struct netif *netif), - err_t (* input)(struct pbuf *p, struct netif *netif) ); - -err_t netifapi_netif_set_addr ( struct netif *netif, - struct ip_addr *ipaddr, - struct ip_addr *netmask, - struct ip_addr *gw ); - -err_t netifapi_netif_common ( struct netif *netif, - void (* voidfunc)(struct netif *netif), - err_t (* errtfunc)(struct netif *netif) ); - -#define netifapi_netif_remove(n) netifapi_netif_common(n, netif_remove, NULL) -#define netifapi_netif_set_up(n) netifapi_netif_common(n, netif_set_up, NULL) -#define netifapi_netif_set_down(n) netifapi_netif_common(n, netif_set_down, NULL) -#define netifapi_netif_set_default(n) netifapi_netif_common(n, netif_set_default, NULL) -#define netifapi_dhcp_start(n) netifapi_netif_common(n, NULL, dhcp_start) -#define netifapi_dhcp_stop(n) netifapi_netif_common(n, dhcp_stop, NULL) -#define netifapi_autoip_start(n) netifapi_netif_common(n, NULL, autoip_start) -#define netifapi_autoip_stop(n) netifapi_netif_common(n, NULL, autoip_stop) - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_NETIF_API */ - -#endif /* __LWIP_NETIFAPI_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/opt.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/opt.h deleted file mode 100644 index a7cdbd8e7c4..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/opt.h +++ /dev/null @@ -1,1842 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * - * lwIP Options Configuration - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_OPT_H__ -#define __LWIP_OPT_H__ - -/* - * Include user defined options first. Anything not defined in these files - * will be set to standard values. Override anything you dont like! - */ -#include "lwipopts.h" -#include "lwip/debug.h" - -/* - ----------------------------------------------- - ---------- Platform specific locking ---------- - ----------------------------------------------- -*/ - -/** - * SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain - * critical regions during buffer allocation, deallocation and memory - * allocation and deallocation. - */ -#ifndef SYS_LIGHTWEIGHT_PROT -#define SYS_LIGHTWEIGHT_PROT 0 -#endif - -/** - * NO_SYS==1: Provides VERY minimal functionality. Otherwise, - * use lwIP facilities. - */ -#ifndef NO_SYS -#define NO_SYS 0 -#endif - -/** - * MEMCPY: override this if you have a faster implementation at hand than the - * one included in your C library - */ -#ifndef MEMCPY -#define MEMCPY(dst,src,len) memcpy(dst,src,len) -#endif - -/** - * SMEMCPY: override this with care! Some compilers (e.g. gcc) can inline a - * call to memcpy() if the length is known at compile time and is small. - */ -#ifndef SMEMCPY -#define SMEMCPY(dst,src,len) memcpy(dst,src,len) -#endif - -/* - ------------------------------------ - ---------- Memory options ---------- - ------------------------------------ -*/ -/** - * MEM_LIBC_MALLOC==1: Use malloc/free/realloc provided by your C-library - * instead of the lwip internal allocator. Can save code size if you - * already use it. - */ -#ifndef MEM_LIBC_MALLOC -#define MEM_LIBC_MALLOC 0 -#endif - -/** -* MEMP_MEM_MALLOC==1: Use mem_malloc/mem_free instead of the lwip pool allocator. -* Especially useful with MEM_LIBC_MALLOC but handle with care regarding execution -* speed and usage from interrupts! -*/ -#ifndef MEMP_MEM_MALLOC -#define MEMP_MEM_MALLOC 0 -#endif - -/** - * MEM_ALIGNMENT: should be set to the alignment of the CPU - * 4 byte alignment -> #define MEM_ALIGNMENT 4 - * 2 byte alignment -> #define MEM_ALIGNMENT 2 - */ -#ifndef MEM_ALIGNMENT -#define MEM_ALIGNMENT 1 -#endif - -/** - * MEM_SIZE: the size of the heap memory. If the application will send - * a lot of data that needs to be copied, this should be set high. - */ -#ifndef MEM_SIZE -#define MEM_SIZE 1600 -#endif - -/** - * MEMP_OVERFLOW_CHECK: memp overflow protection reserves a configurable - * amount of bytes before and after each memp element in every pool and fills - * it with a prominent default value. - * MEMP_OVERFLOW_CHECK == 0 no checking - * MEMP_OVERFLOW_CHECK == 1 checks each element when it is freed - * MEMP_OVERFLOW_CHECK >= 2 checks each element in every pool every time - * memp_malloc() or memp_free() is called (useful but slow!) - */ -#ifndef MEMP_OVERFLOW_CHECK -#define MEMP_OVERFLOW_CHECK 0 -#endif - -/** - * MEMP_SANITY_CHECK==1: run a sanity check after each memp_free() to make - * sure that there are no cycles in the linked lists. - */ -#ifndef MEMP_SANITY_CHECK -#define MEMP_SANITY_CHECK 0 -#endif - -/** - * MEM_USE_POOLS==1: Use an alternative to malloc() by allocating from a set - * of memory pools of various sizes. When mem_malloc is called, an element of - * the smallest pool that can provide the length needed is returned. - * To use this, MEMP_USE_CUSTOM_POOLS also has to be enabled. - */ -#ifndef MEM_USE_POOLS -#define MEM_USE_POOLS 0 -#endif - -/** - * MEM_USE_POOLS_TRY_BIGGER_POOL==1: if one malloc-pool is empty, try the next - * bigger pool - WARNING: THIS MIGHT WASTE MEMORY but it can make a system more - * reliable. */ -#ifndef MEM_USE_POOLS_TRY_BIGGER_POOL -#define MEM_USE_POOLS_TRY_BIGGER_POOL 0 -#endif - -/** - * MEMP_USE_CUSTOM_POOLS==1: whether to include a user file lwippools.h - * that defines additional pools beyond the "standard" ones required - * by lwIP. If you set this to 1, you must have lwippools.h in your - * inlude path somewhere. - */ -#ifndef MEMP_USE_CUSTOM_POOLS -#define MEMP_USE_CUSTOM_POOLS 0 -#endif - -/** - * Set this to 1 if you want to free PBUF_RAM pbufs (or call mem_free()) from - * interrupt context (or another context that doesn't allow waiting for a - * semaphore). - * If set to 1, mem_malloc will be protected by a semaphore and SYS_ARCH_PROTECT, - * while mem_free will only use SYS_ARCH_PROTECT. mem_malloc SYS_ARCH_UNPROTECTs - * with each loop so that mem_free can run. - * - * ATTENTION: As you can see from the above description, this leads to dis-/ - * enabling interrupts often, which can be slow! Also, on low memory, mem_malloc - * can need longer. - * - * If you don't want that, at least for NO_SYS=0, you can still use the following - * functions to enqueue a deallocation call which then runs in the tcpip_thread - * context: - * - pbuf_free_callback(p); - * - mem_free_callback(m); - */ -#ifndef LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT -#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 0 -#endif - -/* - ------------------------------------------------ - ---------- Internal Memory Pool Sizes ---------- - ------------------------------------------------ -*/ -/** - * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF). - * If the application sends a lot of data out of ROM (or other static memory), - * this should be set high. - */ -#ifndef MEMP_NUM_PBUF -#define MEMP_NUM_PBUF 16 -#endif - -/** - * MEMP_NUM_RAW_PCB: Number of raw connection PCBs - * (requires the LWIP_RAW option) - */ -#ifndef MEMP_NUM_RAW_PCB -#define MEMP_NUM_RAW_PCB 4 -#endif - -/** - * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One - * per active UDP "connection". - * (requires the LWIP_UDP option) - */ -#ifndef MEMP_NUM_UDP_PCB -#define MEMP_NUM_UDP_PCB 4 -#endif - -/** - * MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections. - * (requires the LWIP_TCP option) - */ -#ifndef MEMP_NUM_TCP_PCB -#define MEMP_NUM_TCP_PCB 5 -#endif - -/** - * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections. - * (requires the LWIP_TCP option) - */ -#ifndef MEMP_NUM_TCP_PCB_LISTEN -#define MEMP_NUM_TCP_PCB_LISTEN 8 -#endif - -/** - * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments. - * (requires the LWIP_TCP option) - */ -#ifndef MEMP_NUM_TCP_SEG -#define MEMP_NUM_TCP_SEG 16 -#endif - -/** - * MEMP_NUM_REASSDATA: the number of simultaneously IP packets queued for - * reassembly (whole packets, not fragments!) - */ -#ifndef MEMP_NUM_REASSDATA -#define MEMP_NUM_REASSDATA 5 -#endif - -/** - * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing - * packets (pbufs) that are waiting for an ARP request (to resolve - * their destination address) to finish. - * (requires the ARP_QUEUEING option) - */ -#ifndef MEMP_NUM_ARP_QUEUE -#define MEMP_NUM_ARP_QUEUE 30 -#endif - -/** - * MEMP_NUM_IGMP_GROUP: The number of multicast groups whose network interfaces - * can be members et the same time (one per netif - allsystems group -, plus one - * per netif membership). - * (requires the LWIP_IGMP option) - */ -#ifndef MEMP_NUM_IGMP_GROUP -#define MEMP_NUM_IGMP_GROUP 8 -#endif - -/** - * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts. - * (requires NO_SYS==0) - */ -#ifndef MEMP_NUM_SYS_TIMEOUT -#define MEMP_NUM_SYS_TIMEOUT 3 -#endif - -/** - * MEMP_NUM_NETBUF: the number of struct netbufs. - * (only needed if you use the sequential API, like api_lib.c) - */ -#ifndef MEMP_NUM_NETBUF -#define MEMP_NUM_NETBUF 2 -#endif - -/** - * MEMP_NUM_NETCONN: the number of struct netconns. - * (only needed if you use the sequential API, like api_lib.c) - */ -#ifndef MEMP_NUM_NETCONN -#define MEMP_NUM_NETCONN 4 -#endif - -/** - * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used - * for callback/timeout API communication. - * (only needed if you use tcpip.c) - */ -#ifndef MEMP_NUM_TCPIP_MSG_API -#define MEMP_NUM_TCPIP_MSG_API 8 -#endif - -/** - * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used - * for incoming packets. - * (only needed if you use tcpip.c) - */ -#ifndef MEMP_NUM_TCPIP_MSG_INPKT -#define MEMP_NUM_TCPIP_MSG_INPKT 8 -#endif - -/** - * PBUF_POOL_SIZE: the number of buffers in the pbuf pool. - */ -#ifndef PBUF_POOL_SIZE -#define PBUF_POOL_SIZE 16 -#endif - -/* - --------------------------------- - ---------- ARP options ---------- - --------------------------------- -*/ -/** - * LWIP_ARP==1: Enable ARP functionality. - */ -#ifndef LWIP_ARP -#define LWIP_ARP 1 -#endif - -/** - * ARP_TABLE_SIZE: Number of active MAC-IP address pairs cached. - */ -#ifndef ARP_TABLE_SIZE -#define ARP_TABLE_SIZE 10 -#endif - -/** - * ARP_QUEUEING==1: Outgoing packets are queued during hardware address - * resolution. - */ -#ifndef ARP_QUEUEING -#define ARP_QUEUEING 1 -#endif - -/** - * ETHARP_TRUST_IP_MAC==1: Incoming IP packets cause the ARP table to be - * updated with the source MAC and IP addresses supplied in the packet. - * You may want to disable this if you do not trust LAN peers to have the - * correct addresses, or as a limited approach to attempt to handle - * spoofing. If disabled, lwIP will need to make a new ARP request if - * the peer is not already in the ARP table, adding a little latency. - */ -#ifndef ETHARP_TRUST_IP_MAC -#define ETHARP_TRUST_IP_MAC 1 -#endif - -/** - * ETHARP_SUPPORT_VLAN==1: support receiving ethernet packets with VLAN header. - * Additionally, you can define ETHARP_VLAN_CHECK to an u16_t VLAN ID to check. - * If ETHARP_VLAN_CHECK is defined, only VLAN-traffic for this VLAN is accepted. - * If ETHARP_VLAN_CHECK is not defined, all traffic is accepted. - */ -#ifndef ETHARP_SUPPORT_VLAN -#define ETHARP_SUPPORT_VLAN 0 -#endif - -/* - -------------------------------- - ---------- IP options ---------- - -------------------------------- -*/ -/** - * IP_FORWARD==1: Enables the ability to forward IP packets across network - * interfaces. If you are going to run lwIP on a device with only one network - * interface, define this to 0. - */ -#ifndef IP_FORWARD -#define IP_FORWARD 0 -#endif - -/** - * IP_OPTIONS_ALLOWED: Defines the behavior for IP options. - * IP_OPTIONS_ALLOWED==0: All packets with IP options are dropped. - * IP_OPTIONS_ALLOWED==1: IP options are allowed (but not parsed). - */ -#ifndef IP_OPTIONS_ALLOWED -#define IP_OPTIONS_ALLOWED 1 -#endif - -/** - * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that - * this option does not affect outgoing packet sizes, which can be controlled - * via IP_FRAG. - */ -#ifndef IP_REASSEMBLY -#define IP_REASSEMBLY 1 -#endif - -/** - * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note - * that this option does not affect incoming packet sizes, which can be - * controlled via IP_REASSEMBLY. - */ -#ifndef IP_FRAG -#define IP_FRAG 1 -#endif - -/** - * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally) - * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived - * in this time, the whole packet is discarded. - */ -#ifndef IP_REASS_MAXAGE -#define IP_REASS_MAXAGE 3 -#endif - -/** - * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled. - * Since the received pbufs are enqueued, be sure to configure - * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive - * packets even if the maximum amount of fragments is enqueued for reassembly! - */ -#ifndef IP_REASS_MAX_PBUFS -#define IP_REASS_MAX_PBUFS 10 -#endif - -/** - * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP - * fragmentation. Otherwise pbufs are allocated and reference the original - * packet data to be fragmented. - */ -#ifndef IP_FRAG_USES_STATIC_BUF -#define IP_FRAG_USES_STATIC_BUF 1 -#endif - -/** - * IP_FRAG_MAX_MTU: Assumed max MTU on any interface for IP frag buffer - * (requires IP_FRAG_USES_STATIC_BUF==1) - */ -#if IP_FRAG_USES_STATIC_BUF && !defined(IP_FRAG_MAX_MTU) -#define IP_FRAG_MAX_MTU 1500 -#endif - -/** - * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers. - */ -#ifndef IP_DEFAULT_TTL -#define IP_DEFAULT_TTL 255 -#endif - -/** - * IP_SOF_BROADCAST=1: Use the SOF_BROADCAST field to enable broadcast - * filter per pcb on udp and raw send operations. To enable broadcast filter - * on recv operations, you also have to set IP_SOF_BROADCAST_RECV=1. - */ -#ifndef IP_SOF_BROADCAST -#define IP_SOF_BROADCAST 0 -#endif - -/** - * IP_SOF_BROADCAST_RECV (requires IP_SOF_BROADCAST=1) enable the broadcast - * filter on recv operations. - */ -#ifndef IP_SOF_BROADCAST_RECV -#define IP_SOF_BROADCAST_RECV 0 -#endif - -/* - ---------------------------------- - ---------- ICMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_ICMP==1: Enable ICMP module inside the IP stack. - * Be careful, disable that make your product non-compliant to RFC1122 - */ -#ifndef LWIP_ICMP -#define LWIP_ICMP 1 -#endif - -/** - * ICMP_TTL: Default value for Time-To-Live used by ICMP packets. - */ -#ifndef ICMP_TTL -#define ICMP_TTL (IP_DEFAULT_TTL) -#endif - -/** - * LWIP_BROADCAST_PING==1: respond to broadcast pings (default is unicast only) - */ -#ifndef LWIP_BROADCAST_PING -#define LWIP_BROADCAST_PING 0 -#endif - -/** - * LWIP_MULTICAST_PING==1: respond to multicast pings (default is unicast only) - */ -#ifndef LWIP_MULTICAST_PING -#define LWIP_MULTICAST_PING 0 -#endif - -/* - --------------------------------- - ---------- RAW options ---------- - --------------------------------- -*/ -/** - * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. - */ -#ifndef LWIP_RAW -#define LWIP_RAW 1 -#endif - -/** - * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. - */ -#ifndef RAW_TTL -#define RAW_TTL (IP_DEFAULT_TTL) -#endif - -/* - ---------------------------------- - ---------- DHCP options ---------- - ---------------------------------- -*/ -/** - * LWIP_DHCP==1: Enable DHCP module. - */ -#ifndef LWIP_DHCP -#define LWIP_DHCP 0 -#endif - -/** - * DHCP_DOES_ARP_CHECK==1: Do an ARP check on the offered address. - */ -#ifndef DHCP_DOES_ARP_CHECK -#define DHCP_DOES_ARP_CHECK ((LWIP_DHCP) && (LWIP_ARP)) -#endif - -/* - ------------------------------------ - ---------- AUTOIP options ---------- - ------------------------------------ -*/ -/** - * LWIP_AUTOIP==1: Enable AUTOIP module. - */ -#ifndef LWIP_AUTOIP -#define LWIP_AUTOIP 0 -#endif - -/** - * LWIP_DHCP_AUTOIP_COOP==1: Allow DHCP and AUTOIP to be both enabled on - * the same interface at the same time. - */ -#ifndef LWIP_DHCP_AUTOIP_COOP -#define LWIP_DHCP_AUTOIP_COOP 0 -#endif - -/** - * LWIP_DHCP_AUTOIP_COOP_TRIES: Set to the number of DHCP DISCOVER probes - * that should be sent before falling back on AUTOIP. This can be set - * as low as 1 to get an AutoIP address very quickly, but you should - * be prepared to handle a changing IP address when DHCP overrides - * AutoIP. - */ -#ifndef LWIP_DHCP_AUTOIP_COOP_TRIES -#define LWIP_DHCP_AUTOIP_COOP_TRIES 9 -#endif - -/* - ---------------------------------- - ---------- SNMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP - * transport. - */ -#ifndef LWIP_SNMP -#define LWIP_SNMP 0 -#endif - -/** - * SNMP_CONCURRENT_REQUESTS: Number of concurrent requests the module will - * allow. At least one request buffer is required. - */ -#ifndef SNMP_CONCURRENT_REQUESTS -#define SNMP_CONCURRENT_REQUESTS 1 -#endif - -/** - * SNMP_TRAP_DESTINATIONS: Number of trap destinations. At least one trap - * destination is required - */ -#ifndef SNMP_TRAP_DESTINATIONS -#define SNMP_TRAP_DESTINATIONS 1 -#endif - -/** - * SNMP_PRIVATE_MIB: - */ -#ifndef SNMP_PRIVATE_MIB -#define SNMP_PRIVATE_MIB 0 -#endif - -/** - * Only allow SNMP write actions that are 'safe' (e.g. disabeling netifs is not - * a safe action and disabled when SNMP_SAFE_REQUESTS = 1). - * Unsafe requests are disabled by default! - */ -#ifndef SNMP_SAFE_REQUESTS -#define SNMP_SAFE_REQUESTS 1 -#endif - -/* - ---------------------------------- - ---------- IGMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_IGMP==1: Turn on IGMP module. - */ -#ifndef LWIP_IGMP -#define LWIP_IGMP 0 -#endif - -/* - ---------------------------------- - ---------- DNS options ----------- - ---------------------------------- -*/ -/** - * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS - * transport. - */ -#ifndef LWIP_DNS -#define LWIP_DNS 0 -#endif - -/** DNS maximum number of entries to maintain locally. */ -#ifndef DNS_TABLE_SIZE -#define DNS_TABLE_SIZE 4 -#endif - -/** DNS maximum host name length supported in the name table. */ -#ifndef DNS_MAX_NAME_LENGTH -#define DNS_MAX_NAME_LENGTH 256 -#endif - -/** The maximum of DNS servers */ -#ifndef DNS_MAX_SERVERS -#define DNS_MAX_SERVERS 2 -#endif - -/** DNS do a name checking between the query and the response. */ -#ifndef DNS_DOES_NAME_CHECK -#define DNS_DOES_NAME_CHECK 1 -#endif - -/** DNS use a local buffer if DNS_USES_STATIC_BUF=0, a static one if - DNS_USES_STATIC_BUF=1, or a dynamic one if DNS_USES_STATIC_BUF=2. - The buffer will be of size DNS_MSG_SIZE */ -#ifndef DNS_USES_STATIC_BUF -#define DNS_USES_STATIC_BUF 1 -#endif - -/** DNS message max. size. Default value is RFC compliant. */ -#ifndef DNS_MSG_SIZE -#define DNS_MSG_SIZE 512 -#endif - -/** DNS_LOCAL_HOSTLIST: Implements a local host-to-address list. If enabled, - * you have to define - * #define DNS_LOCAL_HOSTLIST_INIT {{"host1", 0x123}, {"host2", 0x234}} - * (an array of structs name/address, where address is an u32_t in network - * byte order). - * - * Instead, you can also use an external function: - * #define DNS_LOOKUP_LOCAL_EXTERN(x) extern u32_t my_lookup_function(const char *name) - * that returns the IP address or INADDR_NONE if not found. - */ -#ifndef DNS_LOCAL_HOSTLIST -#define DNS_LOCAL_HOSTLIST 0 -#endif /* DNS_LOCAL_HOSTLIST */ - -/** If this is turned on, the local host-list can be dynamically changed - * at runtime. */ -#ifndef DNS_LOCAL_HOSTLIST_IS_DYNAMIC -#define DNS_LOCAL_HOSTLIST_IS_DYNAMIC 0 -#endif /* DNS_LOCAL_HOSTLIST_IS_DYNAMIC */ - -/* - --------------------------------- - ---------- UDP options ---------- - --------------------------------- -*/ -/** - * LWIP_UDP==1: Turn on UDP. - */ -#ifndef LWIP_UDP -#define LWIP_UDP 1 -#endif - -/** - * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP) - */ -#ifndef LWIP_UDPLITE -#define LWIP_UDPLITE 0 -#endif - -/** - * UDP_TTL: Default Time-To-Live value. - */ -#ifndef UDP_TTL -#define UDP_TTL (IP_DEFAULT_TTL) -#endif - -/** - * LWIP_NETBUF_RECVINFO==1: append destination addr and port to every netbuf. - */ -#ifndef LWIP_NETBUF_RECVINFO -#define LWIP_NETBUF_RECVINFO 0 -#endif - -/* - --------------------------------- - ---------- TCP options ---------- - --------------------------------- -*/ -/** - * LWIP_TCP==1: Turn on TCP. - */ -#ifndef LWIP_TCP -#define LWIP_TCP 1 -#endif - -/** - * TCP_TTL: Default Time-To-Live value. - */ -#ifndef TCP_TTL -#define TCP_TTL (IP_DEFAULT_TTL) -#endif - -/** - * TCP_WND: The size of a TCP window. This must be at least - * (2 * TCP_MSS) for things to work well - */ -#ifndef TCP_WND -#define TCP_WND (4 * TCP_MSS) -#endif - -/** - * TCP_MAXRTX: Maximum number of retransmissions of data segments. - */ -#ifndef TCP_MAXRTX -#define TCP_MAXRTX 12 -#endif - -/** - * TCP_SYNMAXRTX: Maximum number of retransmissions of SYN segments. - */ -#ifndef TCP_SYNMAXRTX -#define TCP_SYNMAXRTX 6 -#endif - -/** - * TCP_QUEUE_OOSEQ==1: TCP will queue segments that arrive out of order. - * Define to 0 if your device is low on memory. - */ -#ifndef TCP_QUEUE_OOSEQ -#define TCP_QUEUE_OOSEQ (LWIP_TCP) -#endif - -/** - * TCP_MSS: TCP Maximum segment size. (default is 536, a conservative default, - * you might want to increase this.) - * For the receive side, this MSS is advertised to the remote side - * when opening a connection. For the transmit size, this MSS sets - * an upper limit on the MSS advertised by the remote host. - */ -#ifndef TCP_MSS -#define TCP_MSS 536 -#endif - -/** - * TCP_CALCULATE_EFF_SEND_MSS: "The maximum size of a segment that TCP really - * sends, the 'effective send MSS,' MUST be the smaller of the send MSS (which - * reflects the available reassembly buffer size at the remote host) and the - * largest size permitted by the IP layer" (RFC 1122) - * Setting this to 1 enables code that checks TCP_MSS against the MTU of the - * netif used for a connection and limits the MSS if it would be too big otherwise. - */ -#ifndef TCP_CALCULATE_EFF_SEND_MSS -#define TCP_CALCULATE_EFF_SEND_MSS 1 -#endif - - -/** - * TCP_SND_BUF: TCP sender buffer space (bytes). - */ -#ifndef TCP_SND_BUF -#define TCP_SND_BUF 256 -#endif - -/** - * TCP_SND_QUEUELEN: TCP sender buffer space (pbufs). This must be at least - * as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work. - */ -#ifndef TCP_SND_QUEUELEN -#define TCP_SND_QUEUELEN (4 * (TCP_SND_BUF)/(TCP_MSS)) -#endif - -/** - * TCP_SNDLOWAT: TCP writable space (bytes). This must be less than or equal - * to TCP_SND_BUF. It is the amount of space which must be available in the - * TCP snd_buf for select to return writable. - */ -#ifndef TCP_SNDLOWAT -#define TCP_SNDLOWAT ((TCP_SND_BUF)/2) -#endif - -/** - * TCP_LISTEN_BACKLOG: Enable the backlog option for tcp listen pcb. - */ -#ifndef TCP_LISTEN_BACKLOG -#define TCP_LISTEN_BACKLOG 0 -#endif - -/** - * The maximum allowed backlog for TCP listen netconns. - * This backlog is used unless another is explicitly specified. - * 0xff is the maximum (u8_t). - */ -#ifndef TCP_DEFAULT_LISTEN_BACKLOG -#define TCP_DEFAULT_LISTEN_BACKLOG 0xff -#endif - -/** - * LWIP_TCP_TIMESTAMPS==1: support the TCP timestamp option. - */ -#ifndef LWIP_TCP_TIMESTAMPS -#define LWIP_TCP_TIMESTAMPS 0 -#endif - -/** - * TCP_WND_UPDATE_THRESHOLD: difference in window to trigger an - * explicit window update - */ -#ifndef TCP_WND_UPDATE_THRESHOLD -#define TCP_WND_UPDATE_THRESHOLD (TCP_WND / 4) -#endif - -/** - * LWIP_EVENT_API and LWIP_CALLBACK_API: Only one of these should be set to 1. - * LWIP_EVENT_API==1: The user defines lwip_tcp_event() to receive all - * events (accept, sent, etc) that happen in the system. - * LWIP_CALLBACK_API==1: The PCB callback function is called directly - * for the event. - */ -#ifndef LWIP_EVENT_API -#define LWIP_EVENT_API 0 -#define LWIP_CALLBACK_API 1 -#else -#define LWIP_EVENT_API 1 -#define LWIP_CALLBACK_API 0 -#endif - - -/* - ---------------------------------- - ---------- Pbuf options ---------- - ---------------------------------- -*/ -/** - * PBUF_LINK_HLEN: the number of bytes that should be allocated for a - * link level header. The default is 14, the standard value for - * Ethernet. - */ -#ifndef PBUF_LINK_HLEN -#define PBUF_LINK_HLEN 14 -#endif - -/** - * PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. The default is - * designed to accomodate single full size TCP frame in one pbuf, including - * TCP_MSS, IP header, and link header. - */ -#ifndef PBUF_POOL_BUFSIZE -#define PBUF_POOL_BUFSIZE LWIP_MEM_ALIGN_SIZE(TCP_MSS+40+PBUF_LINK_HLEN) -#endif - -/* - ------------------------------------------------ - ---------- Network Interfaces options ---------- - ------------------------------------------------ -*/ -/** - * LWIP_NETIF_HOSTNAME==1: use DHCP_OPTION_HOSTNAME with netif's hostname - * field. - */ -#ifndef LWIP_NETIF_HOSTNAME -#define LWIP_NETIF_HOSTNAME 0 -#endif - -/** - * LWIP_NETIF_API==1: Support netif api (in netifapi.c) - */ -#ifndef LWIP_NETIF_API -#define LWIP_NETIF_API 0 -#endif - -/** - * LWIP_NETIF_STATUS_CALLBACK==1: Support a callback function whenever an interface - * changes its up/down status (i.e., due to DHCP IP acquistion) - */ -#ifndef LWIP_NETIF_STATUS_CALLBACK -#define LWIP_NETIF_STATUS_CALLBACK 0 -#endif - -/** - * LWIP_NETIF_LINK_CALLBACK==1: Support a callback function from an interface - * whenever the link changes (i.e., link down) - */ -#ifndef LWIP_NETIF_LINK_CALLBACK -#define LWIP_NETIF_LINK_CALLBACK 0 -#endif - -/** - * LWIP_NETIF_HWADDRHINT==1: Cache link-layer-address hints (e.g. table - * indices) in struct netif. TCP and UDP can make use of this to prevent - * scanning the ARP table for every sent packet. While this is faster for big - * ARP tables or many concurrent connections, it might be counterproductive - * if you have a tiny ARP table or if there never are concurrent connections. - */ -#ifndef LWIP_NETIF_HWADDRHINT -#define LWIP_NETIF_HWADDRHINT 0 -#endif - -/** - * LWIP_NETIF_LOOPBACK==1: Support sending packets with a destination IP - * address equal to the netif IP address, looping them back up the stack. - */ -#ifndef LWIP_NETIF_LOOPBACK -#define LWIP_NETIF_LOOPBACK 0 -#endif - -/** - * LWIP_LOOPBACK_MAX_PBUFS: Maximum number of pbufs on queue for loopback - * sending for each netif (0 = disabled) - */ -#ifndef LWIP_LOOPBACK_MAX_PBUFS -#define LWIP_LOOPBACK_MAX_PBUFS 0 -#endif - -/** - * LWIP_NETIF_LOOPBACK_MULTITHREADING: Indicates whether threading is enabled in - * the system, as netifs must change how they behave depending on this setting - * for the LWIP_NETIF_LOOPBACK option to work. - * Setting this is needed to avoid reentering non-reentrant functions like - * tcp_input(). - * LWIP_NETIF_LOOPBACK_MULTITHREADING==1: Indicates that the user is using a - * multithreaded environment like tcpip.c. In this case, netif->input() - * is called directly. - * LWIP_NETIF_LOOPBACK_MULTITHREADING==0: Indicates a polling (or NO_SYS) setup. - * The packets are put on a list and netif_poll() must be called in - * the main application loop. - */ -#ifndef LWIP_NETIF_LOOPBACK_MULTITHREADING -#define LWIP_NETIF_LOOPBACK_MULTITHREADING (!NO_SYS) -#endif - -/** - * LWIP_NETIF_TX_SINGLE_PBUF: if this is set to 1, lwIP tries to put all data - * to be sent into one single pbuf. This is for compatibility with DMA-enabled - * MACs that do not support scatter-gather. - * Beware that this might involve CPU-memcpy before transmitting that would not - * be needed without this flag! Use this only if you need to! - * - * @todo: TCP and IP-frag do not work with this, yet: - */ -#ifndef LWIP_NETIF_TX_SINGLE_PBUF -#define LWIP_NETIF_TX_SINGLE_PBUF 0 -#endif /* LWIP_NETIF_TX_SINGLE_PBUF */ - -/* - ------------------------------------ - ---------- LOOPIF options ---------- - ------------------------------------ -*/ -/** - * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c - */ -#ifndef LWIP_HAVE_LOOPIF -#define LWIP_HAVE_LOOPIF 0 -#endif - -/* - ------------------------------------ - ---------- SLIPIF options ---------- - ------------------------------------ -*/ -/** - * LWIP_HAVE_SLIPIF==1: Support slip interface and slipif.c - */ -#ifndef LWIP_HAVE_SLIPIF -#define LWIP_HAVE_SLIPIF 0 -#endif - -/* - ------------------------------------ - ---------- Thread options ---------- - ------------------------------------ -*/ -/** - * TCPIP_THREAD_NAME: The name assigned to the main tcpip thread. - */ -#ifndef TCPIP_THREAD_NAME -#define TCPIP_THREAD_NAME "tcpip_thread" -#endif - -/** - * TCPIP_THREAD_STACKSIZE: The stack size used by the main tcpip thread. - * The stack size value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef TCPIP_THREAD_STACKSIZE -#define TCPIP_THREAD_STACKSIZE 0 -#endif - -/** - * TCPIP_THREAD_PRIO: The priority assigned to the main tcpip thread. - * The priority value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef TCPIP_THREAD_PRIO -#define TCPIP_THREAD_PRIO 1 -#endif - -/** - * TCPIP_MBOX_SIZE: The mailbox size for the tcpip thread messages - * The queue size value itself is platform-dependent, but is passed to - * sys_mbox_new() when tcpip_init is called. - */ -#ifndef TCPIP_MBOX_SIZE -#define TCPIP_MBOX_SIZE 0 -#endif - -/** - * SLIPIF_THREAD_NAME: The name assigned to the slipif_loop thread. - */ -#ifndef SLIPIF_THREAD_NAME -#define SLIPIF_THREAD_NAME "slipif_loop" -#endif - -/** - * SLIP_THREAD_STACKSIZE: The stack size used by the slipif_loop thread. - * The stack size value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef SLIPIF_THREAD_STACKSIZE -#define SLIPIF_THREAD_STACKSIZE 0 -#endif - -/** - * SLIPIF_THREAD_PRIO: The priority assigned to the slipif_loop thread. - * The priority value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef SLIPIF_THREAD_PRIO -#define SLIPIF_THREAD_PRIO 1 -#endif - -/** - * PPP_THREAD_NAME: The name assigned to the pppMain thread. - */ -#ifndef PPP_THREAD_NAME -#define PPP_THREAD_NAME "pppMain" -#endif - -/** - * PPP_THREAD_STACKSIZE: The stack size used by the pppMain thread. - * The stack size value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef PPP_THREAD_STACKSIZE -#define PPP_THREAD_STACKSIZE 0 -#endif - -/** - * PPP_THREAD_PRIO: The priority assigned to the pppMain thread. - * The priority value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef PPP_THREAD_PRIO -#define PPP_THREAD_PRIO 1 -#endif - -/** - * DEFAULT_THREAD_NAME: The name assigned to any other lwIP thread. - */ -#ifndef DEFAULT_THREAD_NAME -#define DEFAULT_THREAD_NAME "lwIP" -#endif - -/** - * DEFAULT_THREAD_STACKSIZE: The stack size used by any other lwIP thread. - * The stack size value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef DEFAULT_THREAD_STACKSIZE -#define DEFAULT_THREAD_STACKSIZE 0 -#endif - -/** - * DEFAULT_THREAD_PRIO: The priority assigned to any other lwIP thread. - * The priority value itself is platform-dependent, but is passed to - * sys_thread_new() when the thread is created. - */ -#ifndef DEFAULT_THREAD_PRIO -#define DEFAULT_THREAD_PRIO 1 -#endif - -/** - * DEFAULT_RAW_RECVMBOX_SIZE: The mailbox size for the incoming packets on a - * NETCONN_RAW. The queue size value itself is platform-dependent, but is passed - * to sys_mbox_new() when the recvmbox is created. - */ -#ifndef DEFAULT_RAW_RECVMBOX_SIZE -#define DEFAULT_RAW_RECVMBOX_SIZE 0 -#endif - -/** - * DEFAULT_UDP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a - * NETCONN_UDP. The queue size value itself is platform-dependent, but is passed - * to sys_mbox_new() when the recvmbox is created. - */ -#ifndef DEFAULT_UDP_RECVMBOX_SIZE -#define DEFAULT_UDP_RECVMBOX_SIZE 0 -#endif - -/** - * DEFAULT_TCP_RECVMBOX_SIZE: The mailbox size for the incoming packets on a - * NETCONN_TCP. The queue size value itself is platform-dependent, but is passed - * to sys_mbox_new() when the recvmbox is created. - */ -#ifndef DEFAULT_TCP_RECVMBOX_SIZE -#define DEFAULT_TCP_RECVMBOX_SIZE 0 -#endif - -/** - * DEFAULT_ACCEPTMBOX_SIZE: The mailbox size for the incoming connections. - * The queue size value itself is platform-dependent, but is passed to - * sys_mbox_new() when the acceptmbox is created. - */ -#ifndef DEFAULT_ACCEPTMBOX_SIZE -#define DEFAULT_ACCEPTMBOX_SIZE 0 -#endif - -/* - ---------------------------------------------- - ---------- Sequential layer options ---------- - ---------------------------------------------- -*/ -/** - * LWIP_TCPIP_CORE_LOCKING: (EXPERIMENTAL!) - * Don't use it if you're not an active lwIP project member - */ -#ifndef LWIP_TCPIP_CORE_LOCKING -#define LWIP_TCPIP_CORE_LOCKING 0 -#endif - -/** - * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c) - */ -#ifndef LWIP_NETCONN -#define LWIP_NETCONN 1 -#endif - -/* - ------------------------------------ - ---------- Socket options ---------- - ------------------------------------ -*/ -/** - * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c) - */ -#ifndef LWIP_SOCKET -#define LWIP_SOCKET 1 -#endif - -/** - * LWIP_COMPAT_SOCKETS==1: Enable BSD-style sockets functions names. - * (only used if you use sockets.c) - */ -#ifndef LWIP_COMPAT_SOCKETS -#define LWIP_COMPAT_SOCKETS 1 -#endif - -/** - * LWIP_POSIX_SOCKETS_IO_NAMES==1: Enable POSIX-style sockets functions names. - * Disable this option if you use a POSIX operating system that uses the same - * names (read, write & close). (only used if you use sockets.c) - */ -#ifndef LWIP_POSIX_SOCKETS_IO_NAMES -#define LWIP_POSIX_SOCKETS_IO_NAMES 1 -#endif - -/** - * LWIP_TCP_KEEPALIVE==1: Enable TCP_KEEPIDLE, TCP_KEEPINTVL and TCP_KEEPCNT - * options processing. Note that TCP_KEEPIDLE and TCP_KEEPINTVL have to be set - * in seconds. (does not require sockets.c, and will affect tcp.c) - */ -#ifndef LWIP_TCP_KEEPALIVE -#define LWIP_TCP_KEEPALIVE 1 -#endif - -/** - * LWIP_SO_RCVTIMEO==1: Enable SO_RCVTIMEO processing. - */ -#ifndef LWIP_SO_RCVTIMEO -#define LWIP_SO_RCVTIMEO 0 -#endif - -/** - * LWIP_SO_RCVBUF==1: Enable SO_RCVBUF processing. - */ -#ifndef LWIP_SO_RCVBUF -#define LWIP_SO_RCVBUF 0 -#endif - -/** - * If LWIP_SO_RCVBUF is used, this is the default value for recv_bufsize. - */ -#ifndef RECV_BUFSIZE_DEFAULT -#define RECV_BUFSIZE_DEFAULT INT_MAX -#endif - -/** - * SO_REUSE==1: Enable SO_REUSEADDR and SO_REUSEPORT options. DO NOT USE! - */ -#ifndef SO_REUSE -#define SO_REUSE 0 -#endif - -/* - ---------------------------------------- - ---------- Statistics options ---------- - ---------------------------------------- -*/ -/** - * LWIP_STATS==1: Enable statistics collection in lwip_stats. - */ -#ifndef LWIP_STATS -#define LWIP_STATS 1 -#endif - -#if LWIP_STATS - -/** - * LWIP_STATS_DISPLAY==1: Compile in the statistics output functions. - */ -#ifndef LWIP_STATS_DISPLAY -#define LWIP_STATS_DISPLAY 0 -#endif - -/** - * LINK_STATS==1: Enable link stats. - */ -#ifndef LINK_STATS -#define LINK_STATS 1 -#endif - -/** - * ETHARP_STATS==1: Enable etharp stats. - */ -#ifndef ETHARP_STATS -#define ETHARP_STATS (LWIP_ARP) -#endif - -/** - * IP_STATS==1: Enable IP stats. - */ -#ifndef IP_STATS -#define IP_STATS 1 -#endif - -/** - * IPFRAG_STATS==1: Enable IP fragmentation stats. Default is - * on if using either frag or reass. - */ -#ifndef IPFRAG_STATS -#define IPFRAG_STATS (IP_REASSEMBLY || IP_FRAG) -#endif - -/** - * ICMP_STATS==1: Enable ICMP stats. - */ -#ifndef ICMP_STATS -#define ICMP_STATS 1 -#endif - -/** - * IGMP_STATS==1: Enable IGMP stats. - */ -#ifndef IGMP_STATS -#define IGMP_STATS (LWIP_IGMP) -#endif - -/** - * UDP_STATS==1: Enable UDP stats. Default is on if - * UDP enabled, otherwise off. - */ -#ifndef UDP_STATS -#define UDP_STATS (LWIP_UDP) -#endif - -/** - * TCP_STATS==1: Enable TCP stats. Default is on if TCP - * enabled, otherwise off. - */ -#ifndef TCP_STATS -#define TCP_STATS (LWIP_TCP) -#endif - -/** - * MEM_STATS==1: Enable mem.c stats. - */ -#ifndef MEM_STATS -#define MEM_STATS ((MEM_LIBC_MALLOC == 0) && (MEM_USE_POOLS == 0)) -#endif - -/** - * MEMP_STATS==1: Enable memp.c pool stats. - */ -#ifndef MEMP_STATS -#define MEMP_STATS (MEMP_MEM_MALLOC == 0) -#endif - -/** - * SYS_STATS==1: Enable system stats (sem and mbox counts, etc). - */ -#ifndef SYS_STATS -#define SYS_STATS (NO_SYS == 0) -#endif - -#else - -#define LINK_STATS 0 -#define IP_STATS 0 -#define IPFRAG_STATS 0 -#define ICMP_STATS 0 -#define IGMP_STATS 0 -#define UDP_STATS 0 -#define TCP_STATS 0 -#define MEM_STATS 0 -#define MEMP_STATS 0 -#define SYS_STATS 0 -#define LWIP_STATS_DISPLAY 0 - -#endif /* LWIP_STATS */ - -/* - --------------------------------- - ---------- PPP options ---------- - --------------------------------- -*/ -/** - * PPP_SUPPORT==1: Enable PPP. - */ -#ifndef PPP_SUPPORT -#define PPP_SUPPORT 0 -#endif - -/** - * PPPOE_SUPPORT==1: Enable PPP Over Ethernet - */ -#ifndef PPPOE_SUPPORT -#define PPPOE_SUPPORT 0 -#endif - -/** - * PPPOS_SUPPORT==1: Enable PPP Over Serial - */ -#ifndef PPPOS_SUPPORT -#define PPPOS_SUPPORT PPP_SUPPORT -#endif - -#if PPP_SUPPORT - -/** - * NUM_PPP: Max PPP sessions. - */ -#ifndef NUM_PPP -#define NUM_PPP 1 -#endif - -/** - * PAP_SUPPORT==1: Support PAP. - */ -#ifndef PAP_SUPPORT -#define PAP_SUPPORT 0 -#endif - -/** - * CHAP_SUPPORT==1: Support CHAP. - */ -#ifndef CHAP_SUPPORT -#define CHAP_SUPPORT 0 -#endif - -/** - * MSCHAP_SUPPORT==1: Support MSCHAP. CURRENTLY NOT SUPPORTED! DO NOT SET! - */ -#ifndef MSCHAP_SUPPORT -#define MSCHAP_SUPPORT 0 -#endif - -/** - * CBCP_SUPPORT==1: Support CBCP. CURRENTLY NOT SUPPORTED! DO NOT SET! - */ -#ifndef CBCP_SUPPORT -#define CBCP_SUPPORT 0 -#endif - -/** - * CCP_SUPPORT==1: Support CCP. CURRENTLY NOT SUPPORTED! DO NOT SET! - */ -#ifndef CCP_SUPPORT -#define CCP_SUPPORT 0 -#endif - -/** - * VJ_SUPPORT==1: Support VJ header compression. - */ -#ifndef VJ_SUPPORT -#define VJ_SUPPORT 0 -#endif - -/** - * MD5_SUPPORT==1: Support MD5 (see also CHAP). - */ -#ifndef MD5_SUPPORT -#define MD5_SUPPORT 0 -#endif - -/* - * Timeouts - */ -#ifndef FSM_DEFTIMEOUT -#define FSM_DEFTIMEOUT 6 /* Timeout time in seconds */ -#endif - -#ifndef FSM_DEFMAXTERMREQS -#define FSM_DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */ -#endif - -#ifndef FSM_DEFMAXCONFREQS -#define FSM_DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */ -#endif - -#ifndef FSM_DEFMAXNAKLOOPS -#define FSM_DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */ -#endif - -#ifndef UPAP_DEFTIMEOUT -#define UPAP_DEFTIMEOUT 6 /* Timeout (seconds) for retransmitting req */ -#endif - -#ifndef UPAP_DEFREQTIME -#define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */ -#endif - -#ifndef CHAP_DEFTIMEOUT -#define CHAP_DEFTIMEOUT 6 /* Timeout time in seconds */ -#endif - -#ifndef CHAP_DEFTRANSMITS -#define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */ -#endif - -/* Interval in seconds between keepalive echo requests, 0 to disable. */ -#ifndef LCP_ECHOINTERVAL -#define LCP_ECHOINTERVAL 0 -#endif - -/* Number of unanswered echo requests before failure. */ -#ifndef LCP_MAXECHOFAILS -#define LCP_MAXECHOFAILS 3 -#endif - -/* Max Xmit idle time (in jiffies) before resend flag char. */ -#ifndef PPP_MAXIDLEFLAG -#define PPP_MAXIDLEFLAG 100 -#endif - -/* - * Packet sizes - * - * Note - lcp shouldn't be allowed to negotiate stuff outside these - * limits. See lcp.h in the pppd directory. - * (XXX - these constants should simply be shared by lcp.c instead - * of living in lcp.h) - */ -#define PPP_MTU 1500 /* Default MTU (size of Info field) */ -#ifndef PPP_MAXMTU -/* #define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN) */ -#define PPP_MAXMTU 1500 /* Largest MTU we allow */ -#endif -#define PPP_MINMTU 64 -#define PPP_MRU 1500 /* default MRU = max length of info field */ -#define PPP_MAXMRU 1500 /* Largest MRU we allow */ -#ifndef PPP_DEFMRU -#define PPP_DEFMRU 296 /* Try for this */ -#endif -#define PPP_MINMRU 128 /* No MRUs below this */ - -#ifndef MAXNAMELEN -#define MAXNAMELEN 256 /* max length of hostname or name for auth */ -#endif -#ifndef MAXSECRETLEN -#define MAXSECRETLEN 256 /* max length of password or secret */ -#endif - -#endif /* PPP_SUPPORT */ - -/* - -------------------------------------- - ---------- Checksum options ---------- - -------------------------------------- -*/ -/** - * CHECKSUM_GEN_IP==1: Generate checksums in software for outgoing IP packets. - */ -#ifndef CHECKSUM_GEN_IP -#define CHECKSUM_GEN_IP 1 -#endif - -/** - * CHECKSUM_GEN_UDP==1: Generate checksums in software for outgoing UDP packets. - */ -#ifndef CHECKSUM_GEN_UDP -#define CHECKSUM_GEN_UDP 1 -#endif - -/** - * CHECKSUM_GEN_TCP==1: Generate checksums in software for outgoing TCP packets. - */ -#ifndef CHECKSUM_GEN_TCP -#define CHECKSUM_GEN_TCP 1 -#endif - -/** - * CHECKSUM_CHECK_IP==1: Check checksums in software for incoming IP packets. - */ -#ifndef CHECKSUM_CHECK_IP -#define CHECKSUM_CHECK_IP 1 -#endif - -/** - * CHECKSUM_CHECK_UDP==1: Check checksums in software for incoming UDP packets. - */ -#ifndef CHECKSUM_CHECK_UDP -#define CHECKSUM_CHECK_UDP 1 -#endif - -/** - * CHECKSUM_CHECK_TCP==1: Check checksums in software for incoming TCP packets. - */ -#ifndef CHECKSUM_CHECK_TCP -#define CHECKSUM_CHECK_TCP 1 -#endif - -/* - --------------------------------------- - ---------- Debugging options ---------- - --------------------------------------- -*/ -/** - * LWIP_DBG_MIN_LEVEL: After masking, the value of the debug is - * compared against this value. If it is smaller, then debugging - * messages are written. - */ -#ifndef LWIP_DBG_MIN_LEVEL -#define LWIP_DBG_MIN_LEVEL LWIP_DBG_LEVEL_ALL -#endif - -/** - * LWIP_DBG_TYPES_ON: A mask that can be used to globally enable/disable - * debug messages of certain types. - */ -#ifndef LWIP_DBG_TYPES_ON -#define LWIP_DBG_TYPES_ON LWIP_DBG_ON -#endif - -/** - * ETHARP_DEBUG: Enable debugging in etharp.c. - */ -#ifndef ETHARP_DEBUG -#define ETHARP_DEBUG LWIP_DBG_OFF -#endif - -/** - * NETIF_DEBUG: Enable debugging in netif.c. - */ -#ifndef NETIF_DEBUG -#define NETIF_DEBUG LWIP_DBG_OFF -#endif - -/** - * PBUF_DEBUG: Enable debugging in pbuf.c. - */ -#ifndef PBUF_DEBUG -#define PBUF_DEBUG LWIP_DBG_OFF -#endif - -/** - * API_LIB_DEBUG: Enable debugging in api_lib.c. - */ -#ifndef API_LIB_DEBUG -#define API_LIB_DEBUG LWIP_DBG_OFF -#endif - -/** - * API_MSG_DEBUG: Enable debugging in api_msg.c. - */ -#ifndef API_MSG_DEBUG -#define API_MSG_DEBUG LWIP_DBG_OFF -#endif - -/** - * SOCKETS_DEBUG: Enable debugging in sockets.c. - */ -#ifndef SOCKETS_DEBUG -#define SOCKETS_DEBUG LWIP_DBG_OFF -#endif - -/** - * ICMP_DEBUG: Enable debugging in icmp.c. - */ -#ifndef ICMP_DEBUG -#define ICMP_DEBUG LWIP_DBG_OFF -#endif - -/** - * IGMP_DEBUG: Enable debugging in igmp.c. - */ -#ifndef IGMP_DEBUG -#define IGMP_DEBUG LWIP_DBG_OFF -#endif - -/** - * INET_DEBUG: Enable debugging in inet.c. - */ -#ifndef INET_DEBUG -#define INET_DEBUG LWIP_DBG_OFF -#endif - -/** - * IP_DEBUG: Enable debugging for IP. - */ -#ifndef IP_DEBUG -#define IP_DEBUG LWIP_DBG_OFF -#endif - -/** - * IP_REASS_DEBUG: Enable debugging in ip_frag.c for both frag & reass. - */ -#ifndef IP_REASS_DEBUG -#define IP_REASS_DEBUG LWIP_DBG_OFF -#endif - -/** - * RAW_DEBUG: Enable debugging in raw.c. - */ -#ifndef RAW_DEBUG -#define RAW_DEBUG LWIP_DBG_OFF -#endif - -/** - * MEM_DEBUG: Enable debugging in mem.c. - */ -#ifndef MEM_DEBUG -#define MEM_DEBUG LWIP_DBG_OFF -#endif - -/** - * MEMP_DEBUG: Enable debugging in memp.c. - */ -#ifndef MEMP_DEBUG -#define MEMP_DEBUG LWIP_DBG_OFF -#endif - -/** - * SYS_DEBUG: Enable debugging in sys.c. - */ -#ifndef SYS_DEBUG -#define SYS_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_DEBUG: Enable debugging for TCP. - */ -#ifndef TCP_DEBUG -#define TCP_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_INPUT_DEBUG: Enable debugging in tcp_in.c for incoming debug. - */ -#ifndef TCP_INPUT_DEBUG -#define TCP_INPUT_DEBUG LWIP_DBG_ON -#endif - -/** - * TCP_FR_DEBUG: Enable debugging in tcp_in.c for fast retransmit. - */ -#ifndef TCP_FR_DEBUG -#define TCP_FR_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_RTO_DEBUG: Enable debugging in TCP for retransmit - * timeout. - */ -#ifndef TCP_RTO_DEBUG -#define TCP_RTO_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_CWND_DEBUG: Enable debugging for TCP congestion window. - */ -#ifndef TCP_CWND_DEBUG -#define TCP_CWND_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_WND_DEBUG: Enable debugging in tcp_in.c for window updating. - */ -#ifndef TCP_WND_DEBUG -#define TCP_WND_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_OUTPUT_DEBUG: Enable debugging in tcp_out.c output functions. - */ -#ifndef TCP_OUTPUT_DEBUG -#define TCP_OUTPUT_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_RST_DEBUG: Enable debugging for TCP with the RST message. - */ -#ifndef TCP_RST_DEBUG -#define TCP_RST_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCP_QLEN_DEBUG: Enable debugging for TCP queue lengths. - */ -#ifndef TCP_QLEN_DEBUG -#define TCP_QLEN_DEBUG LWIP_DBG_OFF -#endif - -/** - * UDP_DEBUG: Enable debugging in UDP. - */ -#ifndef UDP_DEBUG -#define UDP_DEBUG LWIP_DBG_OFF -#endif - -/** - * TCPIP_DEBUG: Enable debugging in tcpip.c. - */ -#ifndef TCPIP_DEBUG -#define TCPIP_DEBUG LWIP_DBG_OFF -#endif - -/** - * PPP_DEBUG: Enable debugging for PPP. - */ -#ifndef PPP_DEBUG -#define PPP_DEBUG LWIP_DBG_OFF -#endif - -/** - * SLIP_DEBUG: Enable debugging in slipif.c. - */ -#ifndef SLIP_DEBUG -#define SLIP_DEBUG LWIP_DBG_OFF -#endif - -/** - * DHCP_DEBUG: Enable debugging in dhcp.c. - */ -#ifndef DHCP_DEBUG -#define DHCP_DEBUG LWIP_DBG_OFF -#endif - -/** - * AUTOIP_DEBUG: Enable debugging in autoip.c. - */ -#ifndef AUTOIP_DEBUG -#define AUTOIP_DEBUG LWIP_DBG_OFF -#endif - -/** - * SNMP_MSG_DEBUG: Enable debugging for SNMP messages. - */ -#ifndef SNMP_MSG_DEBUG -#define SNMP_MSG_DEBUG LWIP_DBG_OFF -#endif - -/** - * SNMP_MIB_DEBUG: Enable debugging for SNMP MIBs. - */ -#ifndef SNMP_MIB_DEBUG -#define SNMP_MIB_DEBUG LWIP_DBG_OFF -#endif - -/** - * DNS_DEBUG: Enable debugging for DNS. - */ -#ifndef DNS_DEBUG -#define DNS_DEBUG LWIP_DBG_OFF -#endif - -#endif /* __LWIP_OPT_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/pbuf.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/pbuf.h deleted file mode 100644 index 8ca61b176ff..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/pbuf.h +++ /dev/null @@ -1,122 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#ifndef __LWIP_PBUF_H__ -#define __LWIP_PBUF_H__ - -#include "lwip/opt.h" -#include "lwip/err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define PBUF_TRANSPORT_HLEN 20 -#define PBUF_IP_HLEN 20 - -typedef enum { - PBUF_TRANSPORT, - PBUF_IP, - PBUF_LINK, - PBUF_RAW -} pbuf_layer; - -typedef enum { - PBUF_RAM, /* pbuf data is stored in RAM */ - PBUF_ROM, /* pbuf data is stored in ROM */ - PBUF_REF, /* pbuf comes from the pbuf pool */ - PBUF_POOL /* pbuf payload refers to RAM */ -} pbuf_type; - - -/** indicates this packet's data should be immediately passed to the application */ -#define PBUF_FLAG_PUSH 0x01U - -struct pbuf { - /** next pbuf in singly linked pbuf chain */ - struct pbuf *next; - - /** pointer to the actual data in the buffer */ - void *payload; - - /** - * total length of this buffer and all next buffers in chain - * belonging to the same packet. - * - * For non-queue packet chains this is the invariant: - * p->tot_len == p->len + (p->next? p->next->tot_len: 0) - */ - u16_t tot_len; - - /** length of this buffer */ - u16_t len; - - /** pbuf_type as u8_t instead of enum to save space */ - u8_t /*pbuf_type*/ type; - - /** misc flags */ - u8_t flags; - - /** - * the reference count always equals the number of pointers - * that refer to this pbuf. This can be pointers from an application, - * the stack itself, or pbuf->next pointers from a chain. - */ - u16_t ref; - -}; - -/* Initializes the pbuf module. This call is empty for now, but may not be in future. */ -#define pbuf_init() - -struct pbuf *pbuf_alloc(pbuf_layer l, u16_t size, pbuf_type type); -void pbuf_realloc(struct pbuf *p, u16_t size); -u8_t pbuf_header(struct pbuf *p, s16_t header_size); -void pbuf_ref(struct pbuf *p); -void pbuf_ref_chain(struct pbuf *p); -u8_t pbuf_free(struct pbuf *p); -u8_t pbuf_clen(struct pbuf *p); -void pbuf_cat(struct pbuf *head, struct pbuf *tail); -void pbuf_chain(struct pbuf *head, struct pbuf *tail); -struct pbuf *pbuf_dechain(struct pbuf *p); -err_t pbuf_copy(struct pbuf *p_to, struct pbuf *p_from); -u16_t pbuf_copy_partial(struct pbuf *p, void *dataptr, u16_t len, u16_t offset); -err_t pbuf_take(struct pbuf *buf, const void *dataptr, u16_t len); -struct pbuf *pbuf_coalesce(struct pbuf *p, pbuf_layer layer); - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_PBUF_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/raw.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/raw.h deleted file mode 100644 index 545c43367a6..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/raw.h +++ /dev/null @@ -1,99 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_RAW_H__ -#define __LWIP_RAW_H__ - -#include "lwip/opt.h" - -#if LWIP_RAW /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/pbuf.h" -#include "lwip/inet.h" -#include "lwip/ip.h" -#include "lwip/ip_addr.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct raw_pcb { -/* Common members of all PCB types */ - IP_PCB; - - struct raw_pcb *next; - - u8_t protocol; - - /* receive callback function - * @param arg user supplied argument (raw_pcb.recv_arg) - * @param pcb the raw_pcb which received data - * @param p the packet buffer that was received - * @param addr the remote IP address from which the packet was received - * @return 1 if the packet was 'eaten' (aka. deleted), - * 0 if the packet lives on - * If returning 1, the callback is responsible for freeing the pbuf - * if it's not used any more. - */ - u8_t (* recv)(void *arg, struct raw_pcb *pcb, struct pbuf *p, - struct ip_addr *addr); - /* user-supplied argument for the recv callback */ - void *recv_arg; -}; - -/* The following functions is the application layer interface to the - RAW code. */ -struct raw_pcb * raw_new (u8_t proto); -void raw_remove (struct raw_pcb *pcb); -err_t raw_bind (struct raw_pcb *pcb, struct ip_addr *ipaddr); -err_t raw_connect (struct raw_pcb *pcb, struct ip_addr *ipaddr); - -void raw_recv (struct raw_pcb *pcb, - u8_t (* recv)(void *arg, struct raw_pcb *pcb, - struct pbuf *p, - struct ip_addr *addr), - void *recv_arg); -err_t raw_sendto (struct raw_pcb *pcb, struct pbuf *p, struct ip_addr *ipaddr); -err_t raw_send (struct raw_pcb *pcb, struct pbuf *p); - -/* The following functions are the lower layer interface to RAW. */ -u8_t raw_input (struct pbuf *p, struct netif *inp); -#define raw_init() /* Compatibility define, not init needed. */ - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_RAW */ - -#endif /* __LWIP_RAW_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sio.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sio.h deleted file mode 100644 index 10eabcf165d..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sio.h +++ /dev/null @@ -1,143 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - */ - -/* - * This is the interface to the platform specific serial IO module - * It needs to be implemented by those platforms which need SLIP or PPP - */ - -#ifndef __SIO_H__ -#define __SIO_H__ - -#include "lwip/arch.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* If you want to define sio_fd_t elsewhere or differently, - define this in your cc.h file. */ -#ifndef __sio_fd_t_defined -typedef void * sio_fd_t; -#endif - -/* The following functions can be defined to something else in your cc.h file - or be implemented in your custom sio.c file. */ - -#ifndef sio_open -/** - * Opens a serial device for communication. - * - * @param devnum device number - * @return handle to serial device if successful, NULL otherwise - */ -sio_fd_t sio_open(u8_t devnum); -#endif - -#ifndef sio_send -/** - * Sends a single character to the serial device. - * - * @param c character to send - * @param fd serial device handle - * - * @note This function will block until the character can be sent. - */ -void sio_send(u8_t c, sio_fd_t fd); -#endif - -#ifndef sio_recv -/** - * Receives a single character from the serial device. - * - * @param fd serial device handle - * - * @note This function will block until a character is received. - */ -u8_t sio_recv(sio_fd_t fd); -#endif - -#ifndef sio_read -/** - * Reads from the serial device. - * - * @param fd serial device handle - * @param data pointer to data buffer for receiving - * @param len maximum length (in bytes) of data to receive - * @return number of bytes actually received - may be 0 if aborted by sio_read_abort - * - * @note This function will block until data can be received. The blocking - * can be cancelled by calling sio_read_abort(). - */ -u32_t sio_read(sio_fd_t fd, u8_t *data, u32_t len); -#endif - -#ifndef sio_tryread -/** - * Tries to read from the serial device. Same as sio_read but returns - * immediately if no data is available and never blocks. - * - * @param fd serial device handle - * @param data pointer to data buffer for receiving - * @param len maximum length (in bytes) of data to receive - * @return number of bytes actually received - */ -u32_t sio_tryread(sio_fd_t fd, u8_t *data, u32_t len); -#endif - -#ifndef sio_write -/** - * Writes to the serial device. - * - * @param fd serial device handle - * @param data pointer to data to send - * @param len length (in bytes) of data to send - * @return number of bytes actually sent - * - * @note This function will block until all data can be sent. - */ -u32_t sio_write(sio_fd_t fd, u8_t *data, u32_t len); -#endif - -#ifndef sio_read_abort -/** - * Aborts a blocking sio_read() call. - * - * @param fd serial device handle - */ -void sio_read_abort(sio_fd_t fd); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* __SIO_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp.h deleted file mode 100644 index b87717f9a06..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp.h +++ /dev/null @@ -1,366 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001, 2002 Leon Woestenberg - * Copyright (c) 2001, 2002 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Leon Woestenberg - * - */ -#ifndef __LWIP_SNMP_H__ -#define __LWIP_SNMP_H__ - -#include "lwip/opt.h" -#include "lwip/netif.h" -#include "lwip/udp.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @see RFC1213, "MIB-II, 6. Definitions" - */ -enum snmp_ifType { - snmp_ifType_other=1, /* none of the following */ - snmp_ifType_regular1822, - snmp_ifType_hdh1822, - snmp_ifType_ddn_x25, - snmp_ifType_rfc877_x25, - snmp_ifType_ethernet_csmacd, - snmp_ifType_iso88023_csmacd, - snmp_ifType_iso88024_tokenBus, - snmp_ifType_iso88025_tokenRing, - snmp_ifType_iso88026_man, - snmp_ifType_starLan, - snmp_ifType_proteon_10Mbit, - snmp_ifType_proteon_80Mbit, - snmp_ifType_hyperchannel, - snmp_ifType_fddi, - snmp_ifType_lapb, - snmp_ifType_sdlc, - snmp_ifType_ds1, /* T-1 */ - snmp_ifType_e1, /* european equiv. of T-1 */ - snmp_ifType_basicISDN, - snmp_ifType_primaryISDN, /* proprietary serial */ - snmp_ifType_propPointToPointSerial, - snmp_ifType_ppp, - snmp_ifType_softwareLoopback, - snmp_ifType_eon, /* CLNP over IP [11] */ - snmp_ifType_ethernet_3Mbit, - snmp_ifType_nsip, /* XNS over IP */ - snmp_ifType_slip, /* generic SLIP */ - snmp_ifType_ultra, /* ULTRA technologies */ - snmp_ifType_ds3, /* T-3 */ - snmp_ifType_sip, /* SMDS */ - snmp_ifType_frame_relay -}; - -#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ - -/** SNMP "sysuptime" Interval */ -#define SNMP_SYSUPTIME_INTERVAL 10 - -/** fixed maximum length for object identifier type */ -#define LWIP_SNMP_OBJ_ID_LEN 32 - -/** internal object identifier representation */ -struct snmp_obj_id -{ - u8_t len; - s32_t id[LWIP_SNMP_OBJ_ID_LEN]; -}; - -/* system */ -void snmp_set_sysdesr(u8_t* str, u8_t* len); -void snmp_set_sysobjid(struct snmp_obj_id *oid); -void snmp_get_sysobjid_ptr(struct snmp_obj_id **oid); -void snmp_inc_sysuptime(void); -void snmp_add_sysuptime(u32_t value); -void snmp_get_sysuptime(u32_t *value); -void snmp_set_syscontact(u8_t *ocstr, u8_t *ocstrlen); -void snmp_set_sysname(u8_t *ocstr, u8_t *ocstrlen); -void snmp_set_syslocation(u8_t *ocstr, u8_t *ocstrlen); - -/* network interface */ -void snmp_add_ifinoctets(struct netif *ni, u32_t value); -void snmp_inc_ifinucastpkts(struct netif *ni); -void snmp_inc_ifinnucastpkts(struct netif *ni); -void snmp_inc_ifindiscards(struct netif *ni); -void snmp_add_ifoutoctets(struct netif *ni, u32_t value); -void snmp_inc_ifoutucastpkts(struct netif *ni); -void snmp_inc_ifoutnucastpkts(struct netif *ni); -void snmp_inc_ifoutdiscards(struct netif *ni); -void snmp_inc_iflist(void); -void snmp_dec_iflist(void); - -/* ARP (for atTable and ipNetToMediaTable) */ -void snmp_insert_arpidx_tree(struct netif *ni, struct ip_addr *ip); -void snmp_delete_arpidx_tree(struct netif *ni, struct ip_addr *ip); - -/* IP */ -void snmp_inc_ipinreceives(void); -void snmp_inc_ipinhdrerrors(void); -void snmp_inc_ipinaddrerrors(void); -void snmp_inc_ipforwdatagrams(void); -void snmp_inc_ipinunknownprotos(void); -void snmp_inc_ipindiscards(void); -void snmp_inc_ipindelivers(void); -void snmp_inc_ipoutrequests(void); -void snmp_inc_ipoutdiscards(void); -void snmp_inc_ipoutnoroutes(void); -void snmp_inc_ipreasmreqds(void); -void snmp_inc_ipreasmoks(void); -void snmp_inc_ipreasmfails(void); -void snmp_inc_ipfragoks(void); -void snmp_inc_ipfragfails(void); -void snmp_inc_ipfragcreates(void); -void snmp_inc_iproutingdiscards(void); -void snmp_insert_ipaddridx_tree(struct netif *ni); -void snmp_delete_ipaddridx_tree(struct netif *ni); -void snmp_insert_iprteidx_tree(u8_t dflt, struct netif *ni); -void snmp_delete_iprteidx_tree(u8_t dflt, struct netif *ni); - -/* ICMP */ -void snmp_inc_icmpinmsgs(void); -void snmp_inc_icmpinerrors(void); -void snmp_inc_icmpindestunreachs(void); -void snmp_inc_icmpintimeexcds(void); -void snmp_inc_icmpinparmprobs(void); -void snmp_inc_icmpinsrcquenchs(void); -void snmp_inc_icmpinredirects(void); -void snmp_inc_icmpinechos(void); -void snmp_inc_icmpinechoreps(void); -void snmp_inc_icmpintimestamps(void); -void snmp_inc_icmpintimestampreps(void); -void snmp_inc_icmpinaddrmasks(void); -void snmp_inc_icmpinaddrmaskreps(void); -void snmp_inc_icmpoutmsgs(void); -void snmp_inc_icmpouterrors(void); -void snmp_inc_icmpoutdestunreachs(void); -void snmp_inc_icmpouttimeexcds(void); -void snmp_inc_icmpoutparmprobs(void); -void snmp_inc_icmpoutsrcquenchs(void); -void snmp_inc_icmpoutredirects(void); -void snmp_inc_icmpoutechos(void); -void snmp_inc_icmpoutechoreps(void); -void snmp_inc_icmpouttimestamps(void); -void snmp_inc_icmpouttimestampreps(void); -void snmp_inc_icmpoutaddrmasks(void); -void snmp_inc_icmpoutaddrmaskreps(void); - -/* TCP */ -void snmp_inc_tcpactiveopens(void); -void snmp_inc_tcppassiveopens(void); -void snmp_inc_tcpattemptfails(void); -void snmp_inc_tcpestabresets(void); -void snmp_inc_tcpinsegs(void); -void snmp_inc_tcpoutsegs(void); -void snmp_inc_tcpretranssegs(void); -void snmp_inc_tcpinerrs(void); -void snmp_inc_tcpoutrsts(void); - -/* UDP */ -void snmp_inc_udpindatagrams(void); -void snmp_inc_udpnoports(void); -void snmp_inc_udpinerrors(void); -void snmp_inc_udpoutdatagrams(void); -void snmp_insert_udpidx_tree(struct udp_pcb *pcb); -void snmp_delete_udpidx_tree(struct udp_pcb *pcb); - -/* SNMP */ -void snmp_inc_snmpinpkts(void); -void snmp_inc_snmpoutpkts(void); -void snmp_inc_snmpinbadversions(void); -void snmp_inc_snmpinbadcommunitynames(void); -void snmp_inc_snmpinbadcommunityuses(void); -void snmp_inc_snmpinasnparseerrs(void); -void snmp_inc_snmpintoobigs(void); -void snmp_inc_snmpinnosuchnames(void); -void snmp_inc_snmpinbadvalues(void); -void snmp_inc_snmpinreadonlys(void); -void snmp_inc_snmpingenerrs(void); -void snmp_add_snmpintotalreqvars(u8_t value); -void snmp_add_snmpintotalsetvars(u8_t value); -void snmp_inc_snmpingetrequests(void); -void snmp_inc_snmpingetnexts(void); -void snmp_inc_snmpinsetrequests(void); -void snmp_inc_snmpingetresponses(void); -void snmp_inc_snmpintraps(void); -void snmp_inc_snmpouttoobigs(void); -void snmp_inc_snmpoutnosuchnames(void); -void snmp_inc_snmpoutbadvalues(void); -void snmp_inc_snmpoutgenerrs(void); -void snmp_inc_snmpoutgetrequests(void); -void snmp_inc_snmpoutgetnexts(void); -void snmp_inc_snmpoutsetrequests(void); -void snmp_inc_snmpoutgetresponses(void); -void snmp_inc_snmpouttraps(void); -void snmp_get_snmpgrpid_ptr(struct snmp_obj_id **oid); -void snmp_set_snmpenableauthentraps(u8_t *value); -void snmp_get_snmpenableauthentraps(u8_t *value); - -/* LWIP_SNMP support not available */ -/* define everything to be empty */ -#else - -/* system */ -#define snmp_set_sysdesr(str, len) -#define snmp_set_sysobjid(oid); -#define snmp_get_sysobjid_ptr(oid) -#define snmp_inc_sysuptime() -#define snmp_add_sysuptime(value) -#define snmp_get_sysuptime(value) -#define snmp_set_syscontact(ocstr, ocstrlen); -#define snmp_set_sysname(ocstr, ocstrlen); -#define snmp_set_syslocation(ocstr, ocstrlen); - -/* network interface */ -#define snmp_add_ifinoctets(ni,value) -#define snmp_inc_ifinucastpkts(ni) -#define snmp_inc_ifinnucastpkts(ni) -#define snmp_inc_ifindiscards(ni) -#define snmp_add_ifoutoctets(ni,value) -#define snmp_inc_ifoutucastpkts(ni) -#define snmp_inc_ifoutnucastpkts(ni) -#define snmp_inc_ifoutdiscards(ni) -#define snmp_inc_iflist() -#define snmp_dec_iflist() - -/* ARP */ -#define snmp_insert_arpidx_tree(ni,ip) -#define snmp_delete_arpidx_tree(ni,ip) - -/* IP */ -#define snmp_inc_ipinreceives() -#define snmp_inc_ipinhdrerrors() -#define snmp_inc_ipinaddrerrors() -#define snmp_inc_ipforwdatagrams() -#define snmp_inc_ipinunknownprotos() -#define snmp_inc_ipindiscards() -#define snmp_inc_ipindelivers() -#define snmp_inc_ipoutrequests() -#define snmp_inc_ipoutdiscards() -#define snmp_inc_ipoutnoroutes() -#define snmp_inc_ipreasmreqds() -#define snmp_inc_ipreasmoks() -#define snmp_inc_ipreasmfails() -#define snmp_inc_ipfragoks() -#define snmp_inc_ipfragfails() -#define snmp_inc_ipfragcreates() -#define snmp_inc_iproutingdiscards() -#define snmp_insert_ipaddridx_tree(ni) -#define snmp_delete_ipaddridx_tree(ni) -#define snmp_insert_iprteidx_tree(dflt, ni) -#define snmp_delete_iprteidx_tree(dflt, ni) - -/* ICMP */ -#define snmp_inc_icmpinmsgs() -#define snmp_inc_icmpinerrors() -#define snmp_inc_icmpindestunreachs() -#define snmp_inc_icmpintimeexcds() -#define snmp_inc_icmpinparmprobs() -#define snmp_inc_icmpinsrcquenchs() -#define snmp_inc_icmpinredirects() -#define snmp_inc_icmpinechos() -#define snmp_inc_icmpinechoreps() -#define snmp_inc_icmpintimestamps() -#define snmp_inc_icmpintimestampreps() -#define snmp_inc_icmpinaddrmasks() -#define snmp_inc_icmpinaddrmaskreps() -#define snmp_inc_icmpoutmsgs() -#define snmp_inc_icmpouterrors() -#define snmp_inc_icmpoutdestunreachs() -#define snmp_inc_icmpouttimeexcds() -#define snmp_inc_icmpoutparmprobs() -#define snmp_inc_icmpoutsrcquenchs() -#define snmp_inc_icmpoutredirects() -#define snmp_inc_icmpoutechos() -#define snmp_inc_icmpoutechoreps() -#define snmp_inc_icmpouttimestamps() -#define snmp_inc_icmpouttimestampreps() -#define snmp_inc_icmpoutaddrmasks() -#define snmp_inc_icmpoutaddrmaskreps() -/* TCP */ -#define snmp_inc_tcpactiveopens() -#define snmp_inc_tcppassiveopens() -#define snmp_inc_tcpattemptfails() -#define snmp_inc_tcpestabresets() -#define snmp_inc_tcpinsegs() -#define snmp_inc_tcpoutsegs() -#define snmp_inc_tcpretranssegs() -#define snmp_inc_tcpinerrs() -#define snmp_inc_tcpoutrsts() - -/* UDP */ -#define snmp_inc_udpindatagrams() -#define snmp_inc_udpnoports() -#define snmp_inc_udpinerrors() -#define snmp_inc_udpoutdatagrams() -#define snmp_insert_udpidx_tree(pcb) -#define snmp_delete_udpidx_tree(pcb) - -/* SNMP */ -#define snmp_inc_snmpinpkts() -#define snmp_inc_snmpoutpkts() -#define snmp_inc_snmpinbadversions() -#define snmp_inc_snmpinbadcommunitynames() -#define snmp_inc_snmpinbadcommunityuses() -#define snmp_inc_snmpinasnparseerrs() -#define snmp_inc_snmpintoobigs() -#define snmp_inc_snmpinnosuchnames() -#define snmp_inc_snmpinbadvalues() -#define snmp_inc_snmpinreadonlys() -#define snmp_inc_snmpingenerrs() -#define snmp_add_snmpintotalreqvars(value) -#define snmp_add_snmpintotalsetvars(value) -#define snmp_inc_snmpingetrequests() -#define snmp_inc_snmpingetnexts() -#define snmp_inc_snmpinsetrequests() -#define snmp_inc_snmpingetresponses() -#define snmp_inc_snmpintraps() -#define snmp_inc_snmpouttoobigs() -#define snmp_inc_snmpoutnosuchnames() -#define snmp_inc_snmpoutbadvalues() -#define snmp_inc_snmpoutgenerrs() -#define snmp_inc_snmpoutgetrequests() -#define snmp_inc_snmpoutgetnexts() -#define snmp_inc_snmpoutsetrequests() -#define snmp_inc_snmpoutgetresponses() -#define snmp_inc_snmpouttraps() -#define snmp_get_snmpgrpid_ptr(oid) -#define snmp_set_snmpenableauthentraps(value) -#define snmp_get_snmpenableauthentraps(value) - -#endif /* LWIP_SNMP */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_SNMP_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_asn1.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_asn1.h deleted file mode 100644 index a40d5ef8d80..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_asn1.h +++ /dev/null @@ -1,103 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Abstract Syntax Notation One (ISO 8824, 8825) codec. - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * Author: Christiaan Simons - */ - -#ifndef __LWIP_SNMP_ASN1_H__ -#define __LWIP_SNMP_ASN1_H__ - -#include "lwip/opt.h" -#include "lwip/err.h" -#include "lwip/pbuf.h" -#include "lwip/snmp.h" - -#if LWIP_SNMP - -#ifdef __cplusplus -extern "C" { -#endif - -#define SNMP_ASN1_UNIV (!0x80 | !0x40) -#define SNMP_ASN1_APPLIC (!0x80 | 0x40) -#define SNMP_ASN1_CONTXT ( 0x80 | !0x40) - -#define SNMP_ASN1_CONSTR (0x20) -#define SNMP_ASN1_PRIMIT (!0x20) - -/* universal tags */ -#define SNMP_ASN1_INTEG 2 -#define SNMP_ASN1_OC_STR 4 -#define SNMP_ASN1_NUL 5 -#define SNMP_ASN1_OBJ_ID 6 -#define SNMP_ASN1_SEQ 16 - -/* application specific (SNMP) tags */ -#define SNMP_ASN1_IPADDR 0 /* octet string size(4) */ -#define SNMP_ASN1_COUNTER 1 /* u32_t */ -#define SNMP_ASN1_GAUGE 2 /* u32_t */ -#define SNMP_ASN1_TIMETICKS 3 /* u32_t */ -#define SNMP_ASN1_OPAQUE 4 /* octet string */ - -/* context specific (SNMP) tags */ -#define SNMP_ASN1_PDU_GET_REQ 0 -#define SNMP_ASN1_PDU_GET_NEXT_REQ 1 -#define SNMP_ASN1_PDU_GET_RESP 2 -#define SNMP_ASN1_PDU_SET_REQ 3 -#define SNMP_ASN1_PDU_TRAP 4 - -err_t snmp_asn1_dec_type(struct pbuf *p, u16_t ofs, u8_t *type); -err_t snmp_asn1_dec_length(struct pbuf *p, u16_t ofs, u8_t *octets_used, u16_t *length); -err_t snmp_asn1_dec_u32t(struct pbuf *p, u16_t ofs, u16_t len, u32_t *value); -err_t snmp_asn1_dec_s32t(struct pbuf *p, u16_t ofs, u16_t len, s32_t *value); -err_t snmp_asn1_dec_oid(struct pbuf *p, u16_t ofs, u16_t len, struct snmp_obj_id *oid); -err_t snmp_asn1_dec_raw(struct pbuf *p, u16_t ofs, u16_t len, u16_t raw_len, u8_t *raw); - -void snmp_asn1_enc_length_cnt(u16_t length, u8_t *octets_needed); -void snmp_asn1_enc_u32t_cnt(u32_t value, u16_t *octets_needed); -void snmp_asn1_enc_s32t_cnt(s32_t value, u16_t *octets_needed); -void snmp_asn1_enc_oid_cnt(u8_t ident_len, s32_t *ident, u16_t *octets_needed); -err_t snmp_asn1_enc_type(struct pbuf *p, u16_t ofs, u8_t type); -err_t snmp_asn1_enc_length(struct pbuf *p, u16_t ofs, u16_t length); -err_t snmp_asn1_enc_u32t(struct pbuf *p, u16_t ofs, u8_t octets_needed, u32_t value); -err_t snmp_asn1_enc_s32t(struct pbuf *p, u16_t ofs, u8_t octets_needed, s32_t value); -err_t snmp_asn1_enc_oid(struct pbuf *p, u16_t ofs, u8_t ident_len, s32_t *ident); -err_t snmp_asn1_enc_raw(struct pbuf *p, u16_t ofs, u8_t raw_len, u8_t *raw); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_SNMP */ - -#endif /* __LWIP_SNMP_ASN1_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_msg.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_msg.h deleted file mode 100644 index 6e50a61867d..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_msg.h +++ /dev/null @@ -1,313 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * SNMP Agent message handling structures. - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * Author: Christiaan Simons - */ - -#ifndef __LWIP_SNMP_MSG_H__ -#define __LWIP_SNMP_MSG_H__ - -#include "lwip/opt.h" -#include "lwip/snmp.h" -#include "lwip/snmp_structs.h" - -#if LWIP_SNMP - -#if SNMP_PRIVATE_MIB -#include "private_mib.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* The listen port of the SNMP agent. Clients have to make their requests to - this port. Most standard clients won't work if you change this! */ -#ifndef SNMP_IN_PORT -#define SNMP_IN_PORT 161 -#endif -/* The remote port the SNMP agent sends traps to. Most standard trap sinks won't - work if you change this! */ -#ifndef SNMP_TRAP_PORT -#define SNMP_TRAP_PORT 162 -#endif - -#define SNMP_ES_NOERROR 0 -#define SNMP_ES_TOOBIG 1 -#define SNMP_ES_NOSUCHNAME 2 -#define SNMP_ES_BADVALUE 3 -#define SNMP_ES_READONLY 4 -#define SNMP_ES_GENERROR 5 - -#define SNMP_GENTRAP_COLDSTART 0 -#define SNMP_GENTRAP_WARMSTART 1 -#define SNMP_GENTRAP_AUTHFAIL 4 -#define SNMP_GENTRAP_ENTERPRISESPC 6 - -struct snmp_varbind -{ - /* next pointer, NULL for last in list */ - struct snmp_varbind *next; - /* previous pointer, NULL for first in list */ - struct snmp_varbind *prev; - - /* object identifier length (in s32_t) */ - u8_t ident_len; - /* object identifier array */ - s32_t *ident; - - /* object value ASN1 type */ - u8_t value_type; - /* object value length (in u8_t) */ - u8_t value_len; - /* object value */ - void *value; - - /* encoding varbind seq length length */ - u8_t seqlenlen; - /* encoding object identifier length length */ - u8_t olenlen; - /* encoding object value length length */ - u8_t vlenlen; - /* encoding varbind seq length */ - u16_t seqlen; - /* encoding object identifier length */ - u16_t olen; - /* encoding object value length */ - u16_t vlen; -}; - -struct snmp_varbind_root -{ - struct snmp_varbind *head; - struct snmp_varbind *tail; - /* number of variable bindings in list */ - u8_t count; - /* encoding varbind-list seq length length */ - u8_t seqlenlen; - /* encoding varbind-list seq length */ - u16_t seqlen; -}; - -/** output response message header length fields */ -struct snmp_resp_header_lengths -{ - /* encoding error-index length length */ - u8_t erridxlenlen; - /* encoding error-status length length */ - u8_t errstatlenlen; - /* encoding request id length length */ - u8_t ridlenlen; - /* encoding pdu length length */ - u8_t pdulenlen; - /* encoding community length length */ - u8_t comlenlen; - /* encoding version length length */ - u8_t verlenlen; - /* encoding sequence length length */ - u8_t seqlenlen; - - /* encoding error-index length */ - u16_t erridxlen; - /* encoding error-status length */ - u16_t errstatlen; - /* encoding request id length */ - u16_t ridlen; - /* encoding pdu length */ - u16_t pdulen; - /* encoding community length */ - u16_t comlen; - /* encoding version length */ - u16_t verlen; - /* encoding sequence length */ - u16_t seqlen; -}; - -/** output response message header length fields */ -struct snmp_trap_header_lengths -{ - /* encoding timestamp length length */ - u8_t tslenlen; - /* encoding specific-trap length length */ - u8_t strplenlen; - /* encoding generic-trap length length */ - u8_t gtrplenlen; - /* encoding agent-addr length length */ - u8_t aaddrlenlen; - /* encoding enterprise-id length length */ - u8_t eidlenlen; - /* encoding pdu length length */ - u8_t pdulenlen; - /* encoding community length length */ - u8_t comlenlen; - /* encoding version length length */ - u8_t verlenlen; - /* encoding sequence length length */ - u8_t seqlenlen; - - /* encoding timestamp length */ - u16_t tslen; - /* encoding specific-trap length */ - u16_t strplen; - /* encoding generic-trap length */ - u16_t gtrplen; - /* encoding agent-addr length */ - u16_t aaddrlen; - /* encoding enterprise-id length */ - u16_t eidlen; - /* encoding pdu length */ - u16_t pdulen; - /* encoding community length */ - u16_t comlen; - /* encoding version length */ - u16_t verlen; - /* encoding sequence length */ - u16_t seqlen; -}; - -/* Accepting new SNMP messages. */ -#define SNMP_MSG_EMPTY 0 -/* Search for matching object for variable binding. */ -#define SNMP_MSG_SEARCH_OBJ 1 -/* Perform SNMP operation on in-memory object. - Pass-through states, for symmetry only. */ -#define SNMP_MSG_INTERNAL_GET_OBJDEF 2 -#define SNMP_MSG_INTERNAL_GET_VALUE 3 -#define SNMP_MSG_INTERNAL_SET_TEST 4 -#define SNMP_MSG_INTERNAL_GET_OBJDEF_S 5 -#define SNMP_MSG_INTERNAL_SET_VALUE 6 -/* Perform SNMP operation on object located externally. - In theory this could be used for building a proxy agent. - Practical use is for an enterprise spc. app. gateway. */ -#define SNMP_MSG_EXTERNAL_GET_OBJDEF 7 -#define SNMP_MSG_EXTERNAL_GET_VALUE 8 -#define SNMP_MSG_EXTERNAL_SET_TEST 9 -#define SNMP_MSG_EXTERNAL_GET_OBJDEF_S 10 -#define SNMP_MSG_EXTERNAL_SET_VALUE 11 - -#define SNMP_COMMUNITY_STR_LEN 64 -struct snmp_msg_pstat -{ - /* lwIP local port (161) binding */ - struct udp_pcb *pcb; - /* source IP address */ - struct ip_addr sip; - /* source UDP port */ - u16_t sp; - /* request type */ - u8_t rt; - /* request ID */ - s32_t rid; - /* error status */ - s32_t error_status; - /* error index */ - s32_t error_index; - /* community name (zero terminated) */ - u8_t community[SNMP_COMMUNITY_STR_LEN + 1]; - /* community string length (exclusive zero term) */ - u8_t com_strlen; - /* one out of MSG_EMPTY, MSG_DEMUX, MSG_INTERNAL, MSG_EXTERNAL_x */ - u8_t state; - /* saved arguments for MSG_EXTERNAL_x */ - struct mib_external_node *ext_mib_node; - struct snmp_name_ptr ext_name_ptr; - struct obj_def ext_object_def; - struct snmp_obj_id ext_oid; - /* index into input variable binding list */ - u8_t vb_idx; - /* ptr into input variable binding list */ - struct snmp_varbind *vb_ptr; - /* list of variable bindings from input */ - struct snmp_varbind_root invb; - /* list of variable bindings to output */ - struct snmp_varbind_root outvb; - /* output response lengths used in ASN encoding */ - struct snmp_resp_header_lengths rhl; -}; - -struct snmp_msg_trap -{ - /* lwIP local port (161) binding */ - struct udp_pcb *pcb; - /* destination IP address in network order */ - struct ip_addr dip; - - /* source enterprise ID (sysObjectID) */ - struct snmp_obj_id *enterprise; - /* source IP address, raw network order format */ - u8_t sip_raw[4]; - /* generic trap code */ - u32_t gen_trap; - /* specific trap code */ - u32_t spc_trap; - /* timestamp */ - u32_t ts; - /* list of variable bindings to output */ - struct snmp_varbind_root outvb; - /* output trap lengths used in ASN encoding */ - struct snmp_trap_header_lengths thl; -}; - -/** Agent Version constant, 0 = v1 oddity */ -extern const s32_t snmp_version; -/** Agent default "public" community string */ -extern const char snmp_publiccommunity[7]; - -extern struct snmp_msg_trap trap_msg; - -/** Agent setup, start listening to port 161. */ -void snmp_init(void); -void snmp_trap_dst_enable(u8_t dst_idx, u8_t enable); -void snmp_trap_dst_ip_set(u8_t dst_idx, struct ip_addr *dst); - -/** Varbind-list functions. */ -struct snmp_varbind* snmp_varbind_alloc(struct snmp_obj_id *oid, u8_t type, u8_t len); -void snmp_varbind_free(struct snmp_varbind *vb); -void snmp_varbind_list_free(struct snmp_varbind_root *root); -void snmp_varbind_tail_add(struct snmp_varbind_root *root, struct snmp_varbind *vb); -struct snmp_varbind* snmp_varbind_tail_remove(struct snmp_varbind_root *root); - -/** Handle an internal (recv) or external (private response) event. */ -void snmp_msg_event(u8_t request_id); -err_t snmp_send_response(struct snmp_msg_pstat *m_stat); -err_t snmp_send_trap(s8_t generic_trap, struct snmp_obj_id *eoid, s32_t specific_trap); -void snmp_coldstart_trap(void); -void snmp_authfail_trap(void); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_SNMP */ - -#endif /* __LWIP_SNMP_MSG_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_structs.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_structs.h deleted file mode 100644 index 93f4ea3c118..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/snmp_structs.h +++ /dev/null @@ -1,264 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Generic MIB tree structures. - * - * @todo namespace prefixes - */ - -/* - * Copyright (c) 2006 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * Author: Christiaan Simons - */ - -#ifndef __LWIP_SNMP_STRUCTS_H__ -#define __LWIP_SNMP_STRUCTS_H__ - -#include "lwip/opt.h" - -#if LWIP_SNMP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/snmp.h" - -#if SNMP_PRIVATE_MIB -#include "private_mib.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* MIB object instance */ -#define MIB_OBJECT_NONE 0 -#define MIB_OBJECT_SCALAR 1 -#define MIB_OBJECT_TAB 2 - -/* MIB object access */ -#define MIB_OBJECT_READ_ONLY 0 -#define MIB_OBJECT_READ_WRITE 1 -#define MIB_OBJECT_WRITE_ONLY 2 -#define MIB_OBJECT_NOT_ACCESSIBLE 3 - -/** object definition returned by (get_object_def)() */ -struct obj_def -{ - /* MIB_OBJECT_NONE (0), MIB_OBJECT_SCALAR (1), MIB_OBJECT_TAB (2) */ - u8_t instance; - /* 0 read-only, 1 read-write, 2 write-only, 3 not-accessible */ - u8_t access; - /* ASN type for this object */ - u8_t asn_type; - /* value length (host length) */ - u16_t v_len; - /* length of instance part of supplied object identifier */ - u8_t id_inst_len; - /* instance part of supplied object identifier */ - s32_t *id_inst_ptr; -}; - -struct snmp_name_ptr -{ - u8_t ident_len; - s32_t *ident; -}; - -/** MIB const scalar (.0) node */ -#define MIB_NODE_SC 0x01 -/** MIB const array node */ -#define MIB_NODE_AR 0x02 -/** MIB array node (mem_malloced from RAM) */ -#define MIB_NODE_RA 0x03 -/** MIB list root node (mem_malloced from RAM) */ -#define MIB_NODE_LR 0x04 -/** MIB node for external objects */ -#define MIB_NODE_EX 0x05 - -/** node "base class" layout, the mandatory fields for a node */ -struct mib_node -{ - /** returns struct obj_def for the given object identifier */ - void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - /** returns object value for the given object identifier, - @note the caller must allocate at least len bytes for the value */ - void (*get_value)(struct obj_def *od, u16_t len, void *value); - /** tests length and/or range BEFORE setting */ - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - /** sets object value, only to be called when set_test() */ - void (*set_value)(struct obj_def *od, u16_t len, void *value); - /** One out of MIB_NODE_AR, MIB_NODE_LR or MIB_NODE_EX */ - const u8_t node_type; - /* array or max list length */ - const u16_t maxlength; -}; - -/** derived node for scalars .0 index */ -typedef struct mib_node mib_scalar_node; - -/** derived node, points to a fixed size const array - of sub-identifiers plus a 'child' pointer */ -struct mib_array_node -{ - /* inherited "base class" members */ - void (* const get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - void (* const get_value)(struct obj_def *od, u16_t len, void *value); - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - void (*set_value)(struct obj_def *od, u16_t len, void *value); - - const u8_t node_type; - const u16_t maxlength; - - /* aditional struct members */ - const s32_t *objid; - struct mib_node* const *nptr; -}; - -/** derived node, points to a fixed size mem_malloced array - of sub-identifiers plus a 'child' pointer */ -struct mib_ram_array_node -{ - /* inherited "base class" members */ - void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - void (*get_value)(struct obj_def *od, u16_t len, void *value); - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - void (*set_value)(struct obj_def *od, u16_t len, void *value); - - u8_t node_type; - u16_t maxlength; - - /* aditional struct members */ - s32_t *objid; - struct mib_node **nptr; -}; - -struct mib_list_node -{ - struct mib_list_node *prev; - struct mib_list_node *next; - s32_t objid; - struct mib_node *nptr; -}; - -/** derived node, points to a doubly linked list - of sub-identifiers plus a 'child' pointer */ -struct mib_list_rootnode -{ - /* inherited "base class" members */ - void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - void (*get_value)(struct obj_def *od, u16_t len, void *value); - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - void (*set_value)(struct obj_def *od, u16_t len, void *value); - - u8_t node_type; - u16_t maxlength; - - /* aditional struct members */ - struct mib_list_node *head; - struct mib_list_node *tail; - /* counts list nodes in list */ - u16_t count; -}; - -/** derived node, has access functions for mib object in external memory or device - using 'tree_level' and 'idx', with a range 0 .. (level_length() - 1) */ -struct mib_external_node -{ - /* inherited "base class" members */ - void (*get_object_def)(u8_t ident_len, s32_t *ident, struct obj_def *od); - void (*get_value)(struct obj_def *od, u16_t len, void *value); - u8_t (*set_test)(struct obj_def *od, u16_t len, void *value); - void (*set_value)(struct obj_def *od, u16_t len, void *value); - - u8_t node_type; - u16_t maxlength; - - /* aditional struct members */ - /** points to an extenal (in memory) record of some sort of addressing - information, passed to and interpreted by the funtions below */ - void* addr_inf; - /** tree levels under this node */ - u8_t tree_levels; - /** number of objects at this level */ - u16_t (*level_length)(void* addr_inf, u8_t level); - /** compares object sub identifier with external id - return zero when equal, nonzero when unequal */ - s32_t (*ident_cmp)(void* addr_inf, u8_t level, u16_t idx, s32_t sub_id); - void (*get_objid)(void* addr_inf, u8_t level, u16_t idx, s32_t *sub_id); - - /** async Questions */ - void (*get_object_def_q)(void* addr_inf, u8_t rid, u8_t ident_len, s32_t *ident); - void (*get_value_q)(u8_t rid, struct obj_def *od); - void (*set_test_q)(u8_t rid, struct obj_def *od); - void (*set_value_q)(u8_t rid, struct obj_def *od, u16_t len, void *value); - /** async Answers */ - void (*get_object_def_a)(u8_t rid, u8_t ident_len, s32_t *ident, struct obj_def *od); - void (*get_value_a)(u8_t rid, struct obj_def *od, u16_t len, void *value); - u8_t (*set_test_a)(u8_t rid, struct obj_def *od, u16_t len, void *value); - void (*set_value_a)(u8_t rid, struct obj_def *od, u16_t len, void *value); - /** async Panic Close (agent returns error reply, - e.g. used for external transaction cleanup) */ - void (*get_object_def_pc)(u8_t rid, u8_t ident_len, s32_t *ident); - void (*get_value_pc)(u8_t rid, struct obj_def *od); - void (*set_test_pc)(u8_t rid, struct obj_def *od); - void (*set_value_pc)(u8_t rid, struct obj_def *od); -}; - -/** export MIB tree from mib2.c */ -extern const struct mib_array_node internet; - -/** dummy function pointers for non-leaf MIB nodes from mib2.c */ -void noleafs_get_object_def(u8_t ident_len, s32_t *ident, struct obj_def *od); -void noleafs_get_value(struct obj_def *od, u16_t len, void *value); -u8_t noleafs_set_test(struct obj_def *od, u16_t len, void *value); -void noleafs_set_value(struct obj_def *od, u16_t len, void *value); - -void snmp_oidtoip(s32_t *ident, struct ip_addr *ip); -void snmp_iptooid(struct ip_addr *ip, s32_t *ident); -void snmp_ifindextonetif(s32_t ifindex, struct netif **netif); -void snmp_netiftoifindex(struct netif *netif, s32_t *ifidx); - -struct mib_list_node* snmp_mib_ln_alloc(s32_t id); -void snmp_mib_ln_free(struct mib_list_node *ln); -struct mib_list_rootnode* snmp_mib_lrn_alloc(void); -void snmp_mib_lrn_free(struct mib_list_rootnode *lrn); - -s8_t snmp_mib_node_insert(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **insn); -s8_t snmp_mib_node_find(struct mib_list_rootnode *rn, s32_t objid, struct mib_list_node **fn); -struct mib_list_rootnode *snmp_mib_node_delete(struct mib_list_rootnode *rn, struct mib_list_node *n); - -struct mib_node* snmp_search_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_name_ptr *np); -struct mib_node* snmp_expand_tree(struct mib_node *node, u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret); -u8_t snmp_iso_prefix_tst(u8_t ident_len, s32_t *ident); -u8_t snmp_iso_prefix_expand(u8_t ident_len, s32_t *ident, struct snmp_obj_id *oidret); - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_SNMP */ - -#endif /* __LWIP_SNMP_STRUCTS_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sockets.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sockets.h deleted file mode 100644 index 675c1f7400c..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sockets.h +++ /dev/null @@ -1,359 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - - -#ifndef __LWIP_SOCKETS_H__ -#define __LWIP_SOCKETS_H__ - -#include "lwip/opt.h" - -#if LWIP_SOCKET /* don't build if not configured for use in lwipopts.h */ - -#include /* for size_t */ - -#include "lwip/ip_addr.h" -#include "lwip/inet.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* members are in network byte order */ -struct sockaddr_in { - u8_t sin_len; - u8_t sin_family; - u16_t sin_port; - struct in_addr sin_addr; - char sin_zero[8]; -}; - -struct sockaddr { - u8_t sa_len; - u8_t sa_family; - char sa_data[14]; -}; - -#ifndef socklen_t -# define socklen_t u32_t -#endif - -/* Socket protocol types (TCP/UDP/RAW) */ -#define SOCK_STREAM 1 -#define SOCK_DGRAM 2 -#define SOCK_RAW 3 - -/* - * Option flags per-socket. These must match the SOF_ flags in ip.h! - */ -#define SO_DEBUG 0x0001 /* Unimplemented: turn on debugging info recording */ -#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */ -#define SO_REUSEADDR 0x0004 /* Unimplemented: allow local address reuse */ -#define SO_KEEPALIVE 0x0008 /* keep connections alive */ -#define SO_DONTROUTE 0x0010 /* Unimplemented: just use interface addresses */ -#define SO_BROADCAST 0x0020 /* permit to send and to receive broadcast messages (see IP_SOF_BROADCAST option) */ -#define SO_USELOOPBACK 0x0040 /* Unimplemented: bypass hardware when possible */ -#define SO_LINGER 0x0080 /* linger on close if data present */ -#define SO_OOBINLINE 0x0100 /* Unimplemented: leave received OOB data in line */ -#define SO_REUSEPORT 0x0200 /* Unimplemented: allow local address & port reuse */ - -#define SO_DONTLINGER ((int)(~SO_LINGER)) - -/* - * Additional options, not kept in so_options. - */ -#define SO_SNDBUF 0x1001 /* Unimplemented: send buffer size */ -#define SO_RCVBUF 0x1002 /* receive buffer size */ -#define SO_SNDLOWAT 0x1003 /* Unimplemented: send low-water mark */ -#define SO_RCVLOWAT 0x1004 /* Unimplemented: receive low-water mark */ -#define SO_SNDTIMEO 0x1005 /* Unimplemented: send timeout */ -#define SO_RCVTIMEO 0x1006 /* receive timeout */ -#define SO_ERROR 0x1007 /* get error status and clear */ -#define SO_TYPE 0x1008 /* get socket type */ -#define SO_CONTIMEO 0x1009 /* Unimplemented: connect timeout */ -#define SO_NO_CHECK 0x100a /* don't create UDP checksum */ - - -/* - * Structure used for manipulating linger option. - */ -struct linger { - int l_onoff; /* option on/off */ - int l_linger; /* linger time */ -}; - -/* - * Level number for (get/set)sockopt() to apply to socket itself. - */ -#define SOL_SOCKET 0xfff /* options for socket level */ - - -#define AF_UNSPEC 0 -#define AF_INET 2 -#define PF_INET AF_INET -#define PF_UNSPEC AF_UNSPEC - -#define IPPROTO_IP 0 -#define IPPROTO_TCP 6 -#define IPPROTO_UDP 17 -#define IPPROTO_UDPLITE 136 - -/* Flags we can use with send and recv. */ -#define MSG_PEEK 0x01 /* Peeks at an incoming message */ -#define MSG_WAITALL 0x02 /* Unimplemented: Requests that the function block until the full amount of data requested can be returned */ -#define MSG_OOB 0x04 /* Unimplemented: Requests out-of-band data. The significance and semantics of out-of-band data are protocol-specific */ -#define MSG_DONTWAIT 0x08 /* Nonblocking i/o for this operation only */ -#define MSG_MORE 0x10 /* Sender will send more */ - - -/* - * Options for level IPPROTO_IP - */ -#define IP_TOS 1 -#define IP_TTL 2 - -#if LWIP_TCP -/* - * Options for level IPPROTO_TCP - */ -#define TCP_NODELAY 0x01 /* don't delay send to coalesce packets */ -#define TCP_KEEPALIVE 0x02 /* send KEEPALIVE probes when idle for pcb->keep_idle milliseconds */ -#define TCP_KEEPIDLE 0x03 /* set pcb->keep_idle - Same as TCP_KEEPALIVE, but use seconds for get/setsockopt */ -#define TCP_KEEPINTVL 0x04 /* set pcb->keep_intvl - Use seconds for get/setsockopt */ -#define TCP_KEEPCNT 0x05 /* set pcb->keep_cnt - Use number of probes sent for get/setsockopt */ -#endif /* LWIP_TCP */ - -#if LWIP_UDP && LWIP_UDPLITE -/* - * Options for level IPPROTO_UDPLITE - */ -#define UDPLITE_SEND_CSCOV 0x01 /* sender checksum coverage */ -#define UDPLITE_RECV_CSCOV 0x02 /* minimal receiver checksum coverage */ -#endif /* LWIP_UDP && LWIP_UDPLITE*/ - - -#if LWIP_IGMP -/* - * Options and types for UDP multicast traffic handling - */ -#define IP_ADD_MEMBERSHIP 3 -#define IP_DROP_MEMBERSHIP 4 -#define IP_MULTICAST_TTL 5 -#define IP_MULTICAST_IF 6 -#define IP_MULTICAST_LOOP 7 - -typedef struct ip_mreq { - struct in_addr imr_multiaddr; /* IP multicast address of group */ - struct in_addr imr_interface; /* local IP address of interface */ -} ip_mreq; -#endif /* LWIP_IGMP */ - -/* - * The Type of Service provides an indication of the abstract - * parameters of the quality of service desired. These parameters are - * to be used to guide the selection of the actual service parameters - * when transmitting a datagram through a particular network. Several - * networks offer service precedence, which somehow treats high - * precedence traffic as more important than other traffic (generally - * by accepting only traffic above a certain precedence at time of high - * load). The major choice is a three way tradeoff between low-delay, - * high-reliability, and high-throughput. - * The use of the Delay, Throughput, and Reliability indications may - * increase the cost (in some sense) of the service. In many networks - * better performance for one of these parameters is coupled with worse - * performance on another. Except for very unusual cases at most two - * of these three indications should be set. - */ -#define IPTOS_TOS_MASK 0x1E -#define IPTOS_TOS(tos) ((tos) & IPTOS_TOS_MASK) -#define IPTOS_LOWDELAY 0x10 -#define IPTOS_THROUGHPUT 0x08 -#define IPTOS_RELIABILITY 0x04 -#define IPTOS_LOWCOST 0x02 -#define IPTOS_MINCOST IPTOS_LOWCOST - -/* - * The Network Control precedence designation is intended to be used - * within a network only. The actual use and control of that - * designation is up to each network. The Internetwork Control - * designation is intended for use by gateway control originators only. - * If the actual use of these precedence designations is of concern to - * a particular network, it is the responsibility of that network to - * control the access to, and use of, those precedence designations. - */ -#define IPTOS_PREC_MASK 0xe0 -#define IPTOS_PREC(tos) ((tos) & IPTOS_PREC_MASK) -#define IPTOS_PREC_NETCONTROL 0xe0 -#define IPTOS_PREC_INTERNETCONTROL 0xc0 -#define IPTOS_PREC_CRITIC_ECP 0xa0 -#define IPTOS_PREC_FLASHOVERRIDE 0x80 -#define IPTOS_PREC_FLASH 0x60 -#define IPTOS_PREC_IMMEDIATE 0x40 -#define IPTOS_PREC_PRIORITY 0x20 -#define IPTOS_PREC_ROUTINE 0x00 - - -/* - * Commands for ioctlsocket(), taken from the BSD file fcntl.h. - * lwip_ioctl only supports FIONREAD and FIONBIO, for now - * - * Ioctl's have the command encoded in the lower word, - * and the size of any in or out parameters in the upper - * word. The high 2 bits of the upper word are used - * to encode the in/out status of the parameter; for now - * we restrict parameters to at most 128 bytes. - */ -#if !defined(FIONREAD) || !defined(FIONBIO) -#define IOCPARM_MASK 0x7fU /* parameters must be < 128 bytes */ -#define IOC_VOID 0x20000000UL /* no parameters */ -#define IOC_OUT 0x40000000UL /* copy out parameters */ -#define IOC_IN 0x80000000UL /* copy in parameters */ -#define IOC_INOUT (IOC_IN|IOC_OUT) - /* 0x20000000 distinguishes new & - old ioctl's */ -#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) - -#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) - -#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) -#endif /* !defined(FIONREAD) || !defined(FIONBIO) */ - -#ifndef FIONREAD -#define FIONREAD _IOR('f', 127, unsigned long) /* get # bytes to read */ -#endif -#ifndef FIONBIO -#define FIONBIO _IOW('f', 126, unsigned long) /* set/clear non-blocking i/o */ -#endif - -/* Socket I/O Controls: unimplemented */ -#ifndef SIOCSHIWAT -#define SIOCSHIWAT _IOW('s', 0, unsigned long) /* set high watermark */ -#define SIOCGHIWAT _IOR('s', 1, unsigned long) /* get high watermark */ -#define SIOCSLOWAT _IOW('s', 2, unsigned long) /* set low watermark */ -#define SIOCGLOWAT _IOR('s', 3, unsigned long) /* get low watermark */ -#define SIOCATMARK _IOR('s', 7, unsigned long) /* at oob mark? */ -#endif - -/* Socket flags: */ -#ifndef O_NONBLOCK -#define O_NONBLOCK 04000U -#endif - -/* FD_SET used for lwip_select */ -#ifndef FD_SET - #undef FD_SETSIZE - /* Make FD_SETSIZE match NUM_SOCKETS in socket.c */ - #define FD_SETSIZE MEMP_NUM_NETCONN - #define FD_SET(n, p) ((p)->fd_bits[(n)/8] |= (1 << ((n) & 7))) - #define FD_CLR(n, p) ((p)->fd_bits[(n)/8] &= ~(1 << ((n) & 7))) - #define FD_ISSET(n,p) ((p)->fd_bits[(n)/8] & (1 << ((n) & 7))) - #define FD_ZERO(p) memset((void*)(p),0,sizeof(*(p))) - - typedef struct fd_set { - unsigned char fd_bits [(FD_SETSIZE+7)/8]; - } fd_set; - -#endif /* FD_SET */ - -/** LWIP_TIMEVAL_PRIVATE: if you want to use the struct timeval provided - * by your system, set this to 0 and include in cc.h */ -#ifndef LWIP_TIMEVAL_PRIVATE -#define LWIP_TIMEVAL_PRIVATE 1 -#endif - -#if LWIP_TIMEVAL_PRIVATE -struct timeval { - long tv_sec; /* seconds */ - long tv_usec; /* and microseconds */ -}; -#endif /* LWIP_TIMEVAL_PRIVATE */ - -void lwip_socket_init(void); - -int lwip_accept(int s, struct sockaddr *addr, socklen_t *addrlen); -int lwip_bind(int s, const struct sockaddr *name, socklen_t namelen); -int lwip_shutdown(int s, int how); -int lwip_getpeername (int s, struct sockaddr *name, socklen_t *namelen); -int lwip_getsockname (int s, struct sockaddr *name, socklen_t *namelen); -int lwip_getsockopt (int s, int level, int optname, void *optval, socklen_t *optlen); -int lwip_setsockopt (int s, int level, int optname, const void *optval, socklen_t optlen); -int lwip_close(int s); -int lwip_connect(int s, const struct sockaddr *name, socklen_t namelen); -int lwip_listen(int s, int backlog); -int lwip_recv(int s, void *mem, size_t len, int flags); -int lwip_read(int s, void *mem, size_t len); -int lwip_recvfrom(int s, void *mem, size_t len, int flags, - struct sockaddr *from, socklen_t *fromlen); -int lwip_send(int s, const void *dataptr, size_t size, int flags); -int lwip_sendto(int s, const void *dataptr, size_t size, int flags, - const struct sockaddr *to, socklen_t tolen); -int lwip_socket(int domain, int type, int protocol); -int lwip_write(int s, const void *dataptr, size_t size); -int lwip_select(int maxfdp1, fd_set *readset, fd_set *writeset, fd_set *exceptset, - struct timeval *timeout); -int lwip_ioctl(int s, long cmd, void *argp); - -#if LWIP_COMPAT_SOCKETS -#define accept(a,b,c) lwip_accept(a,b,c) -#define bind(a,b,c) lwip_bind(a,b,c) -#define shutdown(a,b) lwip_shutdown(a,b) -#define closesocket(s) lwip_close(s) -#define connect(a,b,c) lwip_connect(a,b,c) -#define getsockname(a,b,c) lwip_getsockname(a,b,c) -#define getpeername(a,b,c) lwip_getpeername(a,b,c) -#define setsockopt(a,b,c,d,e) lwip_setsockopt(a,b,c,d,e) -#define getsockopt(a,b,c,d,e) lwip_getsockopt(a,b,c,d,e) -#define listen(a,b) lwip_listen(a,b) -#define recv(a,b,c,d) lwip_recv(a,b,c,d) -#define recvfrom(a,b,c,d,e,f) lwip_recvfrom(a,b,c,d,e,f) -#define send(a,b,c,d) lwip_send(a,b,c,d) -#define sendto(a,b,c,d,e,f) lwip_sendto(a,b,c,d,e,f) -#define socket(a,b,c) lwip_socket(a,b,c) -#define select(a,b,c,d,e) lwip_select(a,b,c,d,e) -#define ioctlsocket(a,b,c) lwip_ioctl(a,b,c) - -#if LWIP_POSIX_SOCKETS_IO_NAMES -#define read(a,b,c) lwip_read(a,b,c) -#define write(a,b,c) lwip_write(a,b,c) -#define close(s) lwip_close(s) -#endif /* LWIP_POSIX_SOCKETS_IO_NAMES */ - -#endif /* LWIP_COMPAT_SOCKETS */ - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_SOCKET */ - -#endif /* __LWIP_SOCKETS_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/stats.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/stats.h deleted file mode 100644 index 4aec5e54485..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/stats.h +++ /dev/null @@ -1,285 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_STATS_H__ -#define __LWIP_STATS_H__ - -#include "lwip/opt.h" - -#include "lwip/mem.h" -#include "lwip/memp.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if LWIP_STATS - -#ifndef LWIP_STATS_LARGE -#define LWIP_STATS_LARGE 0 -#endif - -#if LWIP_STATS_LARGE -#define STAT_COUNTER u32_t -#define STAT_COUNTER_F U32_F -#else -#define STAT_COUNTER u16_t -#define STAT_COUNTER_F U16_F -#endif - -struct stats_proto { - STAT_COUNTER xmit; /* Transmitted packets. */ - STAT_COUNTER recv; /* Received packets. */ - STAT_COUNTER fw; /* Forwarded packets. */ - STAT_COUNTER drop; /* Dropped packets. */ - STAT_COUNTER chkerr; /* Checksum error. */ - STAT_COUNTER lenerr; /* Invalid length error. */ - STAT_COUNTER memerr; /* Out of memory error. */ - STAT_COUNTER rterr; /* Routing error. */ - STAT_COUNTER proterr; /* Protocol error. */ - STAT_COUNTER opterr; /* Error in options. */ - STAT_COUNTER err; /* Misc error. */ - STAT_COUNTER cachehit; -}; - -struct stats_igmp { - STAT_COUNTER lenerr; /* Invalid length error. */ - STAT_COUNTER chkerr; /* Checksum error. */ - STAT_COUNTER v1_rxed; /* */ - STAT_COUNTER join_sent; /* */ - STAT_COUNTER leave_sent; /* */ - STAT_COUNTER unicast_query; /* */ - STAT_COUNTER report_sent; /* */ - STAT_COUNTER report_rxed; /* */ - STAT_COUNTER group_query_rxed; /* */ -}; - -struct stats_mem { - mem_size_t avail; - mem_size_t used; - mem_size_t max; - STAT_COUNTER err; - STAT_COUNTER illegal; -}; - -struct stats_syselem { - STAT_COUNTER used; - STAT_COUNTER max; - STAT_COUNTER err; -}; - -struct stats_sys { - struct stats_syselem sem; - struct stats_syselem mbox; -}; - -struct stats_ { -#if LINK_STATS - struct stats_proto link; -#endif -#if ETHARP_STATS - struct stats_proto etharp; -#endif -#if IPFRAG_STATS - struct stats_proto ip_frag; -#endif -#if IP_STATS - struct stats_proto ip; -#endif -#if ICMP_STATS - struct stats_proto icmp; -#endif -#if IGMP_STATS - struct stats_igmp igmp; -#endif -#if UDP_STATS - struct stats_proto udp; -#endif -#if TCP_STATS - struct stats_proto tcp; -#endif -#if MEM_STATS - struct stats_mem mem; -#endif -#if MEMP_STATS - struct stats_mem memp[MEMP_MAX]; -#endif -#if SYS_STATS - struct stats_sys sys; -#endif -}; - -extern struct stats_ lwip_stats; - -#define stats_init() /* Compatibility define, not init needed. */ - -#define STATS_INC(x) ++lwip_stats.x -#define STATS_DEC(x) --lwip_stats.x -#else -#define stats_init() -#define STATS_INC(x) -#define STATS_DEC(x) -#endif /* LWIP_STATS */ - -#if TCP_STATS -#define TCP_STATS_INC(x) STATS_INC(x) -#define TCP_STATS_DISPLAY() stats_display_proto(&lwip_stats.tcp, "TCP") -#else -#define TCP_STATS_INC(x) -#define TCP_STATS_DISPLAY() -#endif - -#if UDP_STATS -#define UDP_STATS_INC(x) STATS_INC(x) -#define UDP_STATS_DISPLAY() stats_display_proto(&lwip_stats.udp, "UDP") -#else -#define UDP_STATS_INC(x) -#define UDP_STATS_DISPLAY() -#endif - -#if ICMP_STATS -#define ICMP_STATS_INC(x) STATS_INC(x) -#define ICMP_STATS_DISPLAY() stats_display_proto(&lwip_stats.icmp, "ICMP") -#else -#define ICMP_STATS_INC(x) -#define ICMP_STATS_DISPLAY() -#endif - -#if IGMP_STATS -#define IGMP_STATS_INC(x) STATS_INC(x) -#define IGMP_STATS_DISPLAY() stats_display_igmp(&lwip_stats.igmp) -#else -#define IGMP_STATS_INC(x) -#define IGMP_STATS_DISPLAY() -#endif - -#if IP_STATS -#define IP_STATS_INC(x) STATS_INC(x) -#define IP_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip, "IP") -#else -#define IP_STATS_INC(x) -#define IP_STATS_DISPLAY() -#endif - -#if IPFRAG_STATS -#define IPFRAG_STATS_INC(x) STATS_INC(x) -#define IPFRAG_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip_frag, "IP_FRAG") -#else -#define IPFRAG_STATS_INC(x) -#define IPFRAG_STATS_DISPLAY() -#endif - -#if ETHARP_STATS -#define ETHARP_STATS_INC(x) STATS_INC(x) -#define ETHARP_STATS_DISPLAY() stats_display_proto(&lwip_stats.etharp, "ETHARP") -#else -#define ETHARP_STATS_INC(x) -#define ETHARP_STATS_DISPLAY() -#endif - -#if LINK_STATS -#define LINK_STATS_INC(x) STATS_INC(x) -#define LINK_STATS_DISPLAY() stats_display_proto(&lwip_stats.link, "LINK") -#else -#define LINK_STATS_INC(x) -#define LINK_STATS_DISPLAY() -#endif - -#if MEM_STATS -#define MEM_STATS_AVAIL(x, y) lwip_stats.mem.x = y -#define MEM_STATS_INC(x) STATS_INC(mem.x) -#define MEM_STATS_INC_USED(x, y) do { lwip_stats.mem.used += y; \ - if (lwip_stats.mem.max < lwip_stats.mem.used) { \ - lwip_stats.mem.max = lwip_stats.mem.used; \ - } \ - } while(0) -#define MEM_STATS_DEC_USED(x, y) lwip_stats.mem.x -= y -#define MEM_STATS_DISPLAY() stats_display_mem(&lwip_stats.mem, "HEAP") -#else -#define MEM_STATS_AVAIL(x, y) -#define MEM_STATS_INC(x) -#define MEM_STATS_INC_USED(x, y) -#define MEM_STATS_DEC_USED(x, y) -#define MEM_STATS_DISPLAY() -#endif - -#if MEMP_STATS -#define MEMP_STATS_AVAIL(x, i, y) lwip_stats.memp[i].x = y -#define MEMP_STATS_INC(x, i) STATS_INC(memp[i].x) -#define MEMP_STATS_DEC(x, i) STATS_DEC(memp[i].x) -#define MEMP_STATS_INC_USED(x, i) do { ++lwip_stats.memp[i].used; \ - if (lwip_stats.memp[i].max < lwip_stats.memp[i].used) { \ - lwip_stats.memp[i].max = lwip_stats.memp[i].used; \ - } \ - } while(0) -#define MEMP_STATS_DISPLAY(i) stats_display_memp(&lwip_stats.memp[i], i) -#else -#define MEMP_STATS_AVAIL(x, i, y) -#define MEMP_STATS_INC(x, i) -#define MEMP_STATS_DEC(x, i) -#define MEMP_STATS_INC_USED(x, i) -#define MEMP_STATS_DISPLAY(i) -#endif - -#if SYS_STATS -#define SYS_STATS_INC(x) STATS_INC(sys.x) -#define SYS_STATS_DEC(x) STATS_DEC(sys.x) -#define SYS_STATS_DISPLAY() stats_display_sys(&lwip_stats.sys) -#else -#define SYS_STATS_INC(x) -#define SYS_STATS_DEC(x) -#define SYS_STATS_DISPLAY() -#endif - -/* Display of statistics */ -#if LWIP_STATS_DISPLAY -void stats_display(void); -void stats_display_proto(struct stats_proto *proto, char *name); -void stats_display_igmp(struct stats_igmp *igmp); -void stats_display_mem(struct stats_mem *mem, char *name); -void stats_display_memp(struct stats_mem *mem, int index); -void stats_display_sys(struct stats_sys *sys); -#else -#define stats_display() -#define stats_display_proto(proto, name) -#define stats_display_igmp(igmp) -#define stats_display_mem(mem, name) -#define stats_display_memp(mem, index) -#define stats_display_sys(sys) -#endif /* LWIP_STATS_DISPLAY */ - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_STATS_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sys.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sys.h deleted file mode 100644 index 9a4f02abc7b..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/sys.h +++ /dev/null @@ -1,245 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_SYS_H__ -#define __LWIP_SYS_H__ - -#include "lwip/opt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if NO_SYS - -/* For a totally minimal and standalone system, we provide null - definitions of the sys_ functions. */ -typedef u8_t sys_sem_t; -typedef u8_t sys_mbox_t; -struct sys_timeo {u8_t dummy;}; - -#define sys_init() -#define sys_timeout(m,h,a) -#define sys_untimeout(m,a) -#define sys_sem_new(c) c -#define sys_sem_signal(s) -#define sys_sem_wait(s) -#define sys_sem_wait_timeout(s,t) -#define sys_arch_sem_wait(s,t) -#define sys_sem_free(s) -#define sys_mbox_new(s) 0 -#define sys_mbox_fetch(m,d) -#define sys_mbox_tryfetch(m,d) -#define sys_mbox_post(m,d) -#define sys_mbox_trypost(m,d) -#define sys_mbox_free(m) - -#define sys_thread_new(n,t,a,s,p) - -#else /* NO_SYS */ - -/** Return code for timeouts from sys_arch_mbox_fetch and sys_arch_sem_wait */ -#define SYS_ARCH_TIMEOUT 0xffffffffUL - -/* sys_mbox_tryfetch returns SYS_MBOX_EMPTY if appropriate. - * For now we use the same magic value, but we allow this to change in future. - */ -#define SYS_MBOX_EMPTY SYS_ARCH_TIMEOUT - -#include "lwip/err.h" -#include "arch/sys_arch.h" - -typedef void (* sys_timeout_handler)(void *arg); - -struct sys_timeo { - struct sys_timeo *next; - u32_t time; - sys_timeout_handler h; - void *arg; -}; - -struct sys_timeouts { - struct sys_timeo *next; -}; - -/* sys_init() must be called before anthing else. */ -void sys_init(void); - -/* - * sys_timeout(): - * - * Schedule a timeout a specified amount of milliseconds in the - * future. When the timeout occurs, the specified timeout handler will - * be called. The handler will be passed the "arg" argument when - * called. - * - */ -void sys_timeout(u32_t msecs, sys_timeout_handler h, void *arg); -void sys_untimeout(sys_timeout_handler h, void *arg); -struct sys_timeouts *sys_arch_timeouts(void); - -/* Semaphore functions. */ -sys_sem_t sys_sem_new(u8_t count); -void sys_sem_signal(sys_sem_t sem); -u32_t sys_arch_sem_wait(sys_sem_t sem, u32_t timeout); -void sys_sem_free(sys_sem_t sem); -void sys_sem_wait(sys_sem_t sem); -int sys_sem_wait_timeout(sys_sem_t sem, u32_t timeout); - -/* Time functions. */ -#ifndef sys_msleep -void sys_msleep(u32_t ms); /* only has a (close to) 1 jiffy resolution. */ -#endif -#ifndef sys_jiffies -u32_t sys_jiffies(void); /* since power up. */ -#endif - -/* Mailbox functions. */ -sys_mbox_t sys_mbox_new(int size); -void sys_mbox_post(sys_mbox_t mbox, void *msg); -err_t sys_mbox_trypost(sys_mbox_t mbox, void *msg); -u32_t sys_arch_mbox_fetch(sys_mbox_t mbox, void **msg, u32_t timeout); -#ifndef sys_arch_mbox_tryfetch /* Allow port to override with a macro */ -u32_t sys_arch_mbox_tryfetch(sys_mbox_t mbox, void **msg); -#endif -/* For now, we map straight to sys_arch implementation. */ -#define sys_mbox_tryfetch(mbox, msg) sys_arch_mbox_tryfetch(mbox, msg) -void sys_mbox_free(sys_mbox_t mbox); -void sys_mbox_fetch(sys_mbox_t mbox, void **msg); - -/* Thread functions. */ -sys_thread_t sys_thread_new(char *name, void (* thread)(void *arg), void *arg, int stacksize, int prio); - -#endif /* NO_SYS */ - -/** Returns the current time in milliseconds. */ -u32_t sys_now(void); - -/* Critical Region Protection */ -/* These functions must be implemented in the sys_arch.c file. - In some implementations they can provide a more light-weight protection - mechanism than using semaphores. Otherwise semaphores can be used for - implementation */ -#ifndef SYS_ARCH_PROTECT -/** SYS_LIGHTWEIGHT_PROT - * define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection - * for certain critical regions during buffer allocation, deallocation and memory - * allocation and deallocation. - */ -#if SYS_LIGHTWEIGHT_PROT - -/** SYS_ARCH_DECL_PROTECT - * declare a protection variable. This macro will default to defining a variable of - * type sys_prot_t. If a particular port needs a different implementation, then - * this macro may be defined in sys_arch.h. - */ -#define SYS_ARCH_DECL_PROTECT(lev) sys_prot_t lev -/** SYS_ARCH_PROTECT - * Perform a "fast" protect. This could be implemented by - * disabling interrupts for an embedded system or by using a semaphore or - * mutex. The implementation should allow calling SYS_ARCH_PROTECT when - * already protected. The old protection level is returned in the variable - * "lev". This macro will default to calling the sys_arch_protect() function - * which should be implemented in sys_arch.c. If a particular port needs a - * different implementation, then this macro may be defined in sys_arch.h - */ -#define SYS_ARCH_PROTECT(lev) lev = sys_arch_protect() -/** SYS_ARCH_UNPROTECT - * Perform a "fast" set of the protection level to "lev". This could be - * implemented by setting the interrupt level to "lev" within the MACRO or by - * using a semaphore or mutex. This macro will default to calling the - * sys_arch_unprotect() function which should be implemented in - * sys_arch.c. If a particular port needs a different implementation, then - * this macro may be defined in sys_arch.h - */ -#define SYS_ARCH_UNPROTECT(lev) sys_arch_unprotect(lev) -sys_prot_t sys_arch_protect(void); -void sys_arch_unprotect(sys_prot_t pval); - -#else - -#define SYS_ARCH_DECL_PROTECT(lev) -#define SYS_ARCH_PROTECT(lev) -#define SYS_ARCH_UNPROTECT(lev) - -#endif /* SYS_LIGHTWEIGHT_PROT */ - -#endif /* SYS_ARCH_PROTECT */ - -/* - * Macros to set/get and increase/decrease variables in a thread-safe way. - * Use these for accessing variable that are used from more than one thread. - */ - -#ifndef SYS_ARCH_INC -#define SYS_ARCH_INC(var, val) do { \ - SYS_ARCH_DECL_PROTECT(old_level); \ - SYS_ARCH_PROTECT(old_level); \ - var += val; \ - SYS_ARCH_UNPROTECT(old_level); \ - } while(0) -#endif /* SYS_ARCH_INC */ - -#ifndef SYS_ARCH_DEC -#define SYS_ARCH_DEC(var, val) do { \ - SYS_ARCH_DECL_PROTECT(old_level); \ - SYS_ARCH_PROTECT(old_level); \ - var -= val; \ - SYS_ARCH_UNPROTECT(old_level); \ - } while(0) -#endif /* SYS_ARCH_DEC */ - -#ifndef SYS_ARCH_GET -#define SYS_ARCH_GET(var, ret) do { \ - SYS_ARCH_DECL_PROTECT(old_level); \ - SYS_ARCH_PROTECT(old_level); \ - ret = var; \ - SYS_ARCH_UNPROTECT(old_level); \ - } while(0) -#endif /* SYS_ARCH_GET */ - -#ifndef SYS_ARCH_SET -#define SYS_ARCH_SET(var, val) do { \ - SYS_ARCH_DECL_PROTECT(old_level); \ - SYS_ARCH_PROTECT(old_level); \ - var = val; \ - SYS_ARCH_UNPROTECT(old_level); \ - } while(0) -#endif /* SYS_ARCH_SET */ - - -#ifdef __cplusplus -} -#endif - -#endif /* __LWIP_SYS_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcp.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcp.h deleted file mode 100644 index c1515744d47..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcp.h +++ /dev/null @@ -1,709 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_TCP_H__ -#define __LWIP_TCP_H__ - -#include "lwip/opt.h" - -#if LWIP_TCP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/sys.h" -#include "lwip/mem.h" -#include "lwip/pbuf.h" -#include "lwip/ip.h" -#include "lwip/icmp.h" -#include "lwip/err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct tcp_pcb; - -/* Functions for interfacing with TCP: */ - -/* Lower layer interface to TCP: */ -#define tcp_init() /* Compatibility define, not init needed. */ -void tcp_tmr (void); /* Must be called every - TCP_TMR_INTERVAL - ms. (Typically 250 ms). */ -/* Application program's interface: */ -struct tcp_pcb * tcp_new (void); -struct tcp_pcb * tcp_alloc (u8_t prio); - -void tcp_arg (struct tcp_pcb *pcb, void *arg); -void tcp_accept (struct tcp_pcb *pcb, - err_t (* accept)(void *arg, struct tcp_pcb *newpcb, - err_t err)); -void tcp_recv (struct tcp_pcb *pcb, - err_t (* recv)(void *arg, struct tcp_pcb *tpcb, - struct pbuf *p, err_t err)); -void tcp_sent (struct tcp_pcb *pcb, - err_t (* sent)(void *arg, struct tcp_pcb *tpcb, - u16_t len)); -void tcp_poll (struct tcp_pcb *pcb, - err_t (* poll)(void *arg, struct tcp_pcb *tpcb), - u8_t interval); -void tcp_err (struct tcp_pcb *pcb, - void (* err)(void *arg, err_t err)); - -#define tcp_mss(pcb) ((pcb)->mss) -#define tcp_sndbuf(pcb) ((pcb)->snd_buf) -#define tcp_nagle_disable(pcb) ((pcb)->flags |= TF_NODELAY) -#define tcp_nagle_enable(pcb) ((pcb)->flags &= ~TF_NODELAY) -#define tcp_nagle_disabled(pcb) (((pcb)->flags & TF_NODELAY) != 0) - -#if TCP_LISTEN_BACKLOG -#define tcp_accepted(pcb) (((struct tcp_pcb_listen *)(pcb))->accepts_pending--) -#else /* TCP_LISTEN_BACKLOG */ -#define tcp_accepted(pcb) -#endif /* TCP_LISTEN_BACKLOG */ - -void tcp_recved (struct tcp_pcb *pcb, u16_t len); -err_t tcp_bind (struct tcp_pcb *pcb, struct ip_addr *ipaddr, - u16_t port); -err_t tcp_connect (struct tcp_pcb *pcb, struct ip_addr *ipaddr, - u16_t port, err_t (* connected)(void *arg, - struct tcp_pcb *tpcb, - err_t err)); - -struct tcp_pcb * tcp_listen_with_backlog(struct tcp_pcb *pcb, u8_t backlog); -#define tcp_listen(pcb) tcp_listen_with_backlog(pcb, TCP_DEFAULT_LISTEN_BACKLOG) - -void tcp_abandon (struct tcp_pcb *pcb, int reset); -#define tcp_abort(pcb) tcp_abandon((pcb), 1) -err_t tcp_close (struct tcp_pcb *pcb); - -/* Flags for "apiflags" parameter in tcp_write and tcp_enqueue */ -#define TCP_WRITE_FLAG_COPY 0x01 -#define TCP_WRITE_FLAG_MORE 0x02 - -err_t tcp_write (struct tcp_pcb *pcb, const void *dataptr, u16_t len, - u8_t apiflags); - -void tcp_setprio (struct tcp_pcb *pcb, u8_t prio); - -#define TCP_PRIO_MIN 1 -#define TCP_PRIO_NORMAL 64 -#define TCP_PRIO_MAX 127 - -/* It is also possible to call these two functions at the right - intervals (instead of calling tcp_tmr()). */ -void tcp_slowtmr (void); -void tcp_fasttmr (void); - - -/* Only used by IP to pass a TCP segment to TCP: */ -void tcp_input (struct pbuf *p, struct netif *inp); -/* Used within the TCP code only: */ -err_t tcp_send_empty_ack(struct tcp_pcb *pcb); -err_t tcp_output (struct tcp_pcb *pcb); -void tcp_rexmit (struct tcp_pcb *pcb); -void tcp_rexmit_rto (struct tcp_pcb *pcb); -void tcp_rexmit_fast (struct tcp_pcb *pcb); -u32_t tcp_update_rcv_ann_wnd(struct tcp_pcb *pcb); - -/** - * This is the Nagle algorithm: try to combine user data to send as few TCP - * segments as possible. Only send if - * - no previously transmitted data on the connection remains unacknowledged or - * - the TF_NODELAY flag is set (nagle algorithm turned off for this pcb) or - * - the only unsent segment is at least pcb->mss bytes long (or there is more - * than one unsent segment - with lwIP, this can happen although unsent->len < mss) - * - or if we are in fast-retransmit (TF_INFR) - */ -#define tcp_do_output_nagle(tpcb) ((((tpcb)->unacked == NULL) || \ - ((tpcb)->flags & (TF_NODELAY | TF_INFR)) || \ - (((tpcb)->unsent != NULL) && (((tpcb)->unsent->next != NULL) || \ - ((tpcb)->unsent->len >= (tpcb)->mss))) \ - ) ? 1 : 0) -#define tcp_output_nagle(tpcb) (tcp_do_output_nagle(tpcb) ? tcp_output(tpcb) : ERR_OK) - - -#define TCP_SEQ_LT(a,b) ((s32_t)((a)-(b)) < 0) -#define TCP_SEQ_LEQ(a,b) ((s32_t)((a)-(b)) <= 0) -#define TCP_SEQ_GT(a,b) ((s32_t)((a)-(b)) > 0) -#define TCP_SEQ_GEQ(a,b) ((s32_t)((a)-(b)) >= 0) -/* is b<=a<=c? */ -#if 0 /* see bug #10548 */ -#define TCP_SEQ_BETWEEN(a,b,c) ((c)-(b) >= (a)-(b)) -#endif -#define TCP_SEQ_BETWEEN(a,b,c) (TCP_SEQ_GEQ(a,b) && TCP_SEQ_LEQ(a,c)) -#define TCP_FIN 0x01U -#define TCP_SYN 0x02U -#define TCP_RST 0x04U -#define TCP_PSH 0x08U -#define TCP_ACK 0x10U -#define TCP_URG 0x20U -#define TCP_ECE 0x40U -#define TCP_CWR 0x80U - -#define TCP_FLAGS 0x3fU - -/* Length of the TCP header, excluding options. */ -#define TCP_HLEN 20 - -#ifndef TCP_TMR_INTERVAL -#define TCP_TMR_INTERVAL 250 /* The TCP timer interval in milliseconds. */ -#endif /* TCP_TMR_INTERVAL */ - -#ifndef TCP_FAST_INTERVAL -#define TCP_FAST_INTERVAL TCP_TMR_INTERVAL /* the fine grained timeout in milliseconds */ -#endif /* TCP_FAST_INTERVAL */ - -#ifndef TCP_SLOW_INTERVAL -#define TCP_SLOW_INTERVAL (2*TCP_TMR_INTERVAL) /* the coarse grained timeout in milliseconds */ -#endif /* TCP_SLOW_INTERVAL */ - -#define TCP_FIN_WAIT_TIMEOUT 20000 /* milliseconds */ -#define TCP_SYN_RCVD_TIMEOUT 20000 /* milliseconds */ - -#define TCP_OOSEQ_TIMEOUT 6U /* x RTO */ - -#ifndef TCP_MSL -#define TCP_MSL 60000UL /* The maximum segment lifetime in milliseconds */ -#endif - -/* Keepalive values, compliant with RFC 1122. Don't change this unless you know what you're doing */ -#ifndef TCP_KEEPIDLE_DEFAULT -#define TCP_KEEPIDLE_DEFAULT 7200000UL /* Default KEEPALIVE timer in milliseconds */ -#endif - -#ifndef TCP_KEEPINTVL_DEFAULT -#define TCP_KEEPINTVL_DEFAULT 75000UL /* Default Time between KEEPALIVE probes in milliseconds */ -#endif - -#ifndef TCP_KEEPCNT_DEFAULT -#define TCP_KEEPCNT_DEFAULT 9U /* Default Counter for KEEPALIVE probes */ -#endif - -#define TCP_MAXIDLE TCP_KEEPCNT_DEFAULT * TCP_KEEPINTVL_DEFAULT /* Maximum KEEPALIVE probe time */ - -/* Fields are (of course) in network byte order. - * Some fields are converted to host byte order in tcp_input(). - */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct tcp_hdr { - PACK_STRUCT_FIELD(u16_t src); - PACK_STRUCT_FIELD(u16_t dest); - PACK_STRUCT_FIELD(u32_t seqno); - PACK_STRUCT_FIELD(u32_t ackno); - PACK_STRUCT_FIELD(u16_t _hdrlen_rsvd_flags); - PACK_STRUCT_FIELD(u16_t wnd); - PACK_STRUCT_FIELD(u16_t chksum); - PACK_STRUCT_FIELD(u16_t urgp); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define TCPH_OFFSET(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) >> 8) -#define TCPH_HDRLEN(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) >> 12) -#define TCPH_FLAGS(phdr) (ntohs((phdr)->_hdrlen_rsvd_flags) & TCP_FLAGS) - -#define TCPH_OFFSET_SET(phdr, offset) (phdr)->_hdrlen_rsvd_flags = htons(((offset) << 8) | TCPH_FLAGS(phdr)) -#define TCPH_HDRLEN_SET(phdr, len) (phdr)->_hdrlen_rsvd_flags = htons(((len) << 12) | TCPH_FLAGS(phdr)) -#define TCPH_FLAGS_SET(phdr, flags) (phdr)->_hdrlen_rsvd_flags = (((phdr)->_hdrlen_rsvd_flags & htons((u16_t)(~(u16_t)(TCP_FLAGS)))) | htons(flags)) -#define TCPH_SET_FLAG(phdr, flags ) (phdr)->_hdrlen_rsvd_flags = ((phdr)->_hdrlen_rsvd_flags | htons(flags)) -#define TCPH_UNSET_FLAG(phdr, flags) (phdr)->_hdrlen_rsvd_flags = htons(ntohs((phdr)->_hdrlen_rsvd_flags) | (TCPH_FLAGS(phdr) & ~(flags)) ) - -#define TCP_TCPLEN(seg) ((seg)->len + ((TCPH_FLAGS((seg)->tcphdr) & (TCP_FIN | TCP_SYN)) != 0)) - -enum tcp_state { - CLOSED = 0, - LISTEN = 1, - SYN_SENT = 2, - SYN_RCVD = 3, - ESTABLISHED = 4, - FIN_WAIT_1 = 5, - FIN_WAIT_2 = 6, - CLOSE_WAIT = 7, - CLOSING = 8, - LAST_ACK = 9, - TIME_WAIT = 10 -}; - -/** Flags used on input processing, not on pcb->flags -*/ -#define TF_RESET (u8_t)0x08U /* Connection was reset. */ -#define TF_CLOSED (u8_t)0x10U /* Connection was sucessfully closed. */ -#define TF_GOT_FIN (u8_t)0x20U /* Connection was closed by the remote end. */ - - -#if LWIP_CALLBACK_API - /* Function to call when a listener has been connected. - * @param arg user-supplied argument (tcp_pcb.callback_arg) - * @param pcb a new tcp_pcb that now is connected - * @param err an error argument (TODO: that is current always ERR_OK?) - * @return ERR_OK: accept the new connection, - * any other err_t abortsthe new connection - */ -#define DEF_ACCEPT_CALLBACK err_t (* accept)(void *arg, struct tcp_pcb *newpcb, err_t err) -#else /* LWIP_CALLBACK_API */ -#define DEF_ACCEPT_CALLBACK -#endif /* LWIP_CALLBACK_API */ - -/** - * members common to struct tcp_pcb and struct tcp_listen_pcb - */ -#define TCP_PCB_COMMON(type) \ - type *next; /* for the linked list */ \ - enum tcp_state state; /* TCP state */ \ - u8_t prio; \ - void *callback_arg; \ - /* ports are in host byte order */ \ - u16_t local_port; \ - /* the accept callback for listen- and normal pcbs, if LWIP_CALLBACK_API */ \ - DEF_ACCEPT_CALLBACK - - -/* the TCP protocol control block */ -struct tcp_pcb { -/** common PCB members */ - IP_PCB; -/** protocol specific PCB members */ - TCP_PCB_COMMON(struct tcp_pcb); - - /* ports are in host byte order */ - u16_t remote_port; - - u8_t flags; -#define TF_ACK_DELAY ((u8_t)0x01U) /* Delayed ACK. */ -#define TF_ACK_NOW ((u8_t)0x02U) /* Immediate ACK. */ -#define TF_INFR ((u8_t)0x04U) /* In fast recovery. */ -#define TF_TIMESTAMP ((u8_t)0x08U) /* Timestamp option enabled */ -#define TF_FIN ((u8_t)0x20U) /* Connection was closed locally (FIN segment enqueued). */ -#define TF_NODELAY ((u8_t)0x40U) /* Disable Nagle algorithm */ -#define TF_NAGLEMEMERR ((u8_t)0x80U) /* nagle enabled, memerr, try to output to prevent delayed ACK to happen */ - - /* the rest of the fields are in host byte order - as we have to do some math with them */ - /* receiver variables */ - u32_t rcv_nxt; /* next seqno expected */ - u16_t rcv_wnd; /* receiver window available */ - u16_t rcv_ann_wnd; /* receiver window to announce */ - u32_t rcv_ann_right_edge; /* announced right edge of window */ - - /* Timers */ - u32_t tmr; - u8_t polltmr, pollinterval; - - /* Retransmission timer. */ - s16_t rtime; - - u16_t mss; /* maximum segment size */ - - /* RTT (round trip time) estimation variables */ - u32_t rttest; /* RTT estimate in 500ms ticks */ - u32_t rtseq; /* sequence number being timed */ - s16_t sa, sv; /* @todo document this */ - - s16_t rto; /* retransmission time-out */ - u8_t nrtx; /* number of retransmissions */ - - /* fast retransmit/recovery */ - u32_t lastack; /* Highest acknowledged seqno. */ - u8_t dupacks; - - /* congestion avoidance/control variables */ - u16_t cwnd; - u16_t ssthresh; - - /* sender variables */ - u32_t snd_nxt; /* next new seqno to be sent */ - u16_t snd_wnd; /* sender window */ - u32_t snd_wl1, snd_wl2; /* Sequence and acknowledgement numbers of last - window update. */ - u32_t snd_lbb; /* Sequence number of next byte to be buffered. */ - - u16_t acked; - - u16_t snd_buf; /* Available buffer space for sending (in bytes). */ -#define TCP_SNDQUEUELEN_OVERFLOW (0xffff-3) - u16_t snd_queuelen; /* Available buffer space for sending (in tcp_segs). */ - - - /* These are ordered by sequence number: */ - struct tcp_seg *unsent; /* Unsent (queued) segments. */ - struct tcp_seg *unacked; /* Sent but unacknowledged segments. */ -#if TCP_QUEUE_OOSEQ - struct tcp_seg *ooseq; /* Received out of sequence segments. */ -#endif /* TCP_QUEUE_OOSEQ */ - - struct pbuf *refused_data; /* Data previously received but not yet taken by upper layer */ - -#if LWIP_CALLBACK_API - /* Function to be called when more send buffer space is available. - * @param arg user-supplied argument (tcp_pcb.callback_arg) - * @param pcb the tcp_pcb which has send buffer space available - * @param space the amount of bytes available - * @return ERR_OK: try to send some data by calling tcp_output - */ - err_t (* sent)(void *arg, struct tcp_pcb *pcb, u16_t space); - - /* Function to be called when (in-sequence) data has arrived. - * @param arg user-supplied argument (tcp_pcb.callback_arg) - * @param pcb the tcp_pcb for which data has arrived - * @param p the packet buffer which arrived - * @param err an error argument (TODO: that is current always ERR_OK?) - * @return ERR_OK: try to send some data by calling tcp_output - */ - err_t (* recv)(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err); - - /* Function to be called when a connection has been set up. - * @param arg user-supplied argument (tcp_pcb.callback_arg) - * @param pcb the tcp_pcb that now is connected - * @param err an error argument (TODO: that is current always ERR_OK?) - * @return value is currently ignored - */ - err_t (* connected)(void *arg, struct tcp_pcb *pcb, err_t err); - - /* Function which is called periodically. - * The period can be adjusted in multiples of the TCP slow timer interval - * by changing tcp_pcb.polltmr. - * @param arg user-supplied argument (tcp_pcb.callback_arg) - * @param pcb the tcp_pcb to poll for - * @return ERR_OK: try to send some data by calling tcp_output - */ - err_t (* poll)(void *arg, struct tcp_pcb *pcb); - - /* Function to be called whenever a fatal error occurs. - * There is no pcb parameter since most of the times, the pcb is - * already deallocated (or there is no pcb) when this function is called. - * @param arg user-supplied argument (tcp_pcb.callback_arg) - * @param err an indication why the error callback is called: - * ERR_ABRT: aborted through tcp_abort or by a TCP timer - * ERR_RST: the connection was reset by the remote host - */ - void (* errf)(void *arg, err_t err); -#endif /* LWIP_CALLBACK_API */ - -#if LWIP_TCP_TIMESTAMPS - u32_t ts_lastacksent; - u32_t ts_recent; -#endif /* LWIP_TCP_TIMESTAMPS */ - - /* idle time before KEEPALIVE is sent */ - u32_t keep_idle; -#if LWIP_TCP_KEEPALIVE - u32_t keep_intvl; - u32_t keep_cnt; -#endif /* LWIP_TCP_KEEPALIVE */ - - /* Persist timer counter */ - u32_t persist_cnt; - /* Persist timer back-off */ - u8_t persist_backoff; - - /* KEEPALIVE counter */ - u8_t keep_cnt_sent; -}; - -struct tcp_pcb_listen { -/* Common members of all PCB types */ - IP_PCB; -/* Protocol specific PCB members */ - TCP_PCB_COMMON(struct tcp_pcb_listen); - -#if TCP_LISTEN_BACKLOG - u8_t backlog; - u8_t accepts_pending; -#endif /* TCP_LISTEN_BACKLOG */ -}; - -#if LWIP_EVENT_API - -enum lwip_event { - LWIP_EVENT_ACCEPT, - LWIP_EVENT_SENT, - LWIP_EVENT_RECV, - LWIP_EVENT_CONNECTED, - LWIP_EVENT_POLL, - LWIP_EVENT_ERR -}; - -err_t lwip_tcp_event(void *arg, struct tcp_pcb *pcb, - enum lwip_event, - struct pbuf *p, - u16_t size, - err_t err); - -#define TCP_EVENT_ACCEPT(pcb,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_ACCEPT, NULL, 0, err) -#define TCP_EVENT_SENT(pcb,space,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_SENT, NULL, space, ERR_OK) -#define TCP_EVENT_RECV(pcb,p,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_RECV, (p), 0, (err)) -#define TCP_EVENT_CONNECTED(pcb,err,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_CONNECTED, NULL, 0, (err)) -#define TCP_EVENT_POLL(pcb,ret) ret = lwip_tcp_event((pcb)->callback_arg, (pcb),\ - LWIP_EVENT_POLL, NULL, 0, ERR_OK) -#define TCP_EVENT_ERR(errf,arg,err) lwip_tcp_event((arg), NULL, \ - LWIP_EVENT_ERR, NULL, 0, (err)) -#else /* LWIP_EVENT_API */ - -#define TCP_EVENT_ACCEPT(pcb,err,ret) \ - do { \ - if((pcb)->accept != NULL) \ - (ret) = (pcb)->accept((pcb)->callback_arg,(pcb),(err)); \ - else (ret) = ERR_OK; \ - } while (0) - -#define TCP_EVENT_SENT(pcb,space,ret) \ - do { \ - if((pcb)->sent != NULL) \ - (ret) = (pcb)->sent((pcb)->callback_arg,(pcb),(space)); \ - else (ret) = ERR_OK; \ - } while (0) - -#define TCP_EVENT_RECV(pcb,p,err,ret) \ - do { \ - if((pcb)->recv != NULL) { \ - (ret) = (pcb)->recv((pcb)->callback_arg,(pcb),(p),(err)); \ - } else { \ - (ret) = tcp_recv_null(NULL, (pcb), (p), (err)); \ - } \ - } while (0) - -#define TCP_EVENT_CONNECTED(pcb,err,ret) \ - do { \ - if((pcb)->connected != NULL) \ - (ret) = (pcb)->connected((pcb)->callback_arg,(pcb),(err)); \ - else (ret) = ERR_OK; \ - } while (0) - -#define TCP_EVENT_POLL(pcb,ret) \ - do { \ - if((pcb)->poll != NULL) \ - (ret) = (pcb)->poll((pcb)->callback_arg,(pcb)); \ - else (ret) = ERR_OK; \ - } while (0) - -#define TCP_EVENT_ERR(errf,arg,err) \ - do { \ - if((errf) != NULL) \ - (errf)((arg),(err)); \ - } while (0) - -#endif /* LWIP_EVENT_API */ - -/* This structure represents a TCP segment on the unsent and unacked queues */ -struct tcp_seg { - struct tcp_seg *next; /* used when putting segements on a queue */ - struct pbuf *p; /* buffer containing data + TCP header */ - void *dataptr; /* pointer to the TCP data in the pbuf */ - u16_t len; /* the TCP length of this segment */ - u8_t flags; -#define TF_SEG_OPTS_MSS (u8_t)0x01U /* Include MSS option. */ -#define TF_SEG_OPTS_TS (u8_t)0x02U /* Include timestamp option. */ - struct tcp_hdr *tcphdr; /* the TCP header */ -}; - -#define LWIP_TCP_OPT_LENGTH(flags) \ - (flags & TF_SEG_OPTS_MSS ? 4 : 0) + \ - (flags & TF_SEG_OPTS_TS ? 12 : 0) - -/** This returns a TCP header option for MSS in an u32_t */ -#define TCP_BUILD_MSS_OPTION(x) (x) = htonl(((u32_t)2 << 24) | \ - ((u32_t)4 << 16) | \ - (((u32_t)TCP_MSS / 256) << 8) | \ - (TCP_MSS & 255)) - -/* Internal functions and global variables: */ -struct tcp_pcb *tcp_pcb_copy(struct tcp_pcb *pcb); -void tcp_pcb_purge(struct tcp_pcb *pcb); -void tcp_pcb_remove(struct tcp_pcb **pcblist, struct tcp_pcb *pcb); - -u8_t tcp_segs_free(struct tcp_seg *seg); -u8_t tcp_seg_free(struct tcp_seg *seg); -struct tcp_seg *tcp_seg_copy(struct tcp_seg *seg); - -#define tcp_ack(pcb) \ - do { \ - if((pcb)->flags & TF_ACK_DELAY) { \ - (pcb)->flags &= ~TF_ACK_DELAY; \ - (pcb)->flags |= TF_ACK_NOW; \ - tcp_output(pcb); \ - } \ - else { \ - (pcb)->flags |= TF_ACK_DELAY; \ - } \ - } while (0) - -#define tcp_ack_now(pcb) \ - do { \ - (pcb)->flags |= TF_ACK_NOW; \ - tcp_output(pcb); \ - } while (0) - -err_t tcp_send_ctrl(struct tcp_pcb *pcb, u8_t flags); -err_t tcp_enqueue(struct tcp_pcb *pcb, void *dataptr, u16_t len, - u8_t flags, u8_t apiflags, u8_t optflags); - -void tcp_rexmit_seg(struct tcp_pcb *pcb, struct tcp_seg *seg); - -void tcp_rst(u32_t seqno, u32_t ackno, - struct ip_addr *local_ip, struct ip_addr *remote_ip, - u16_t local_port, u16_t remote_port); - -u32_t tcp_next_iss(void); - -void tcp_keepalive(struct tcp_pcb *pcb); -void tcp_zero_window_probe(struct tcp_pcb *pcb); - -#if TCP_CALCULATE_EFF_SEND_MSS -u16_t tcp_eff_send_mss(u16_t sendmss, struct ip_addr *addr); -#endif /* TCP_CALCULATE_EFF_SEND_MSS */ - -#if LWIP_CALLBACK_API -err_t tcp_recv_null(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err); -#endif /* LWIP_CALLBACK_API */ - -extern struct tcp_pcb *tcp_input_pcb; -extern u32_t tcp_ticks; - -const char* tcp_debug_state_str(enum tcp_state s); -#if TCP_DEBUG || TCP_INPUT_DEBUG || TCP_OUTPUT_DEBUG -void tcp_debug_print(struct tcp_hdr *tcphdr); -void tcp_debug_print_flags(u8_t flags); -void tcp_debug_print_state(enum tcp_state s); -void tcp_debug_print_pcbs(void); -s16_t tcp_pcbs_sane(void); -#else -# define tcp_debug_print(tcphdr) -# define tcp_debug_print_flags(flags) -# define tcp_debug_print_state(s) -# define tcp_debug_print_pcbs() -# define tcp_pcbs_sane() 1 -#endif /* TCP_DEBUG */ - -#if NO_SYS -#define tcp_timer_needed() -#else -void tcp_timer_needed(void); -#endif - -/* The TCP PCB lists. */ -union tcp_listen_pcbs_t { /* List of all TCP PCBs in LISTEN state. */ - struct tcp_pcb_listen *listen_pcbs; - struct tcp_pcb *pcbs; -}; -extern union tcp_listen_pcbs_t tcp_listen_pcbs; -extern struct tcp_pcb *tcp_active_pcbs; /* List of all TCP PCBs that are in a - state in which they accept or send - data. */ -extern struct tcp_pcb *tcp_tw_pcbs; /* List of all TCP PCBs in TIME-WAIT. */ - -extern struct tcp_pcb *tcp_tmp_pcb; /* Only used for temporary storage. */ - -/* Axioms about the above lists: - 1) Every TCP PCB that is not CLOSED is in one of the lists. - 2) A PCB is only in one of the lists. - 3) All PCBs in the tcp_listen_pcbs list is in LISTEN state. - 4) All PCBs in the tcp_tw_pcbs list is in TIME-WAIT state. -*/ - -/* Define two macros, TCP_REG and TCP_RMV that registers a TCP PCB - with a PCB list or removes a PCB from a list, respectively. */ -#if 0 -#define TCP_REG(pcbs, npcb) do {\ - LWIP_DEBUGF(TCP_DEBUG, ("TCP_REG %p local port %d\n", npcb, npcb->local_port)); \ - for(tcp_tmp_pcb = *pcbs; \ - tcp_tmp_pcb != NULL; \ - tcp_tmp_pcb = tcp_tmp_pcb->next) { \ - LWIP_ASSERT("TCP_REG: already registered\n", tcp_tmp_pcb != npcb); \ - } \ - LWIP_ASSERT("TCP_REG: pcb->state != CLOSED", npcb->state != CLOSED); \ - npcb->next = *pcbs; \ - LWIP_ASSERT("TCP_REG: npcb->next != npcb", npcb->next != npcb); \ - *(pcbs) = npcb; \ - LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \ - tcp_timer_needed(); \ - } while(0) -#define TCP_RMV(pcbs, npcb) do { \ - LWIP_ASSERT("TCP_RMV: pcbs != NULL", *pcbs != NULL); \ - LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removing %p from %p\n", npcb, *pcbs)); \ - if(*pcbs == npcb) { \ - *pcbs = (*pcbs)->next; \ - } else for(tcp_tmp_pcb = *pcbs; tcp_tmp_pcb != NULL; tcp_tmp_pcb = tcp_tmp_pcb->next) { \ - if(tcp_tmp_pcb->next == npcb) { \ - tcp_tmp_pcb->next = npcb->next; \ - break; \ - } \ - } \ - npcb->next = NULL; \ - LWIP_ASSERT("TCP_RMV: tcp_pcbs sane", tcp_pcbs_sane()); \ - LWIP_DEBUGF(TCP_DEBUG, ("TCP_RMV: removed %p from %p\n", npcb, *pcbs)); \ - } while(0) - -#else /* LWIP_DEBUG */ - -#define TCP_REG(pcbs, npcb) \ - do { \ - npcb->next = *pcbs; \ - *(pcbs) = npcb; \ - tcp_timer_needed(); \ - } while (0) - -#define TCP_RMV(pcbs, npcb) \ - do { \ - if(*(pcbs) == npcb) { \ - (*(pcbs)) = (*pcbs)->next; \ - } \ - else { \ - for(tcp_tmp_pcb = *pcbs; \ - tcp_tmp_pcb != NULL; \ - tcp_tmp_pcb = tcp_tmp_pcb->next) { \ - if(tcp_tmp_pcb->next == npcb) { \ - tcp_tmp_pcb->next = npcb->next; \ - break; \ - } \ - } \ - } \ - npcb->next = NULL; \ - } while(0) - -#endif /* LWIP_DEBUG */ - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_TCP */ - -#endif /* __LWIP_TCP_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcpip.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcpip.h deleted file mode 100644 index 00a3ec5dc2e..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/tcpip.h +++ /dev/null @@ -1,143 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_TCPIP_H__ -#define __LWIP_TCPIP_H__ - -#include "lwip/opt.h" - -#if !NO_SYS /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/api_msg.h" -#include "lwip/netifapi.h" -#include "lwip/pbuf.h" -#include "lwip/api.h" -#include "lwip/sys.h" -#include "lwip/netif.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if LWIP_TCPIP_CORE_LOCKING -/** The global semaphore to lock the stack. */ -extern sys_sem_t lock_tcpip_core; -#define LOCK_TCPIP_CORE() sys_sem_wait(lock_tcpip_core) -#define UNLOCK_TCPIP_CORE() sys_sem_signal(lock_tcpip_core) -#define TCPIP_APIMSG(m) tcpip_apimsg_lock(m) -#define TCPIP_APIMSG_ACK(m) -#define TCPIP_NETIFAPI(m) tcpip_netifapi_lock(m) -#define TCPIP_NETIFAPI_ACK(m) -#else -#define LOCK_TCPIP_CORE() -#define UNLOCK_TCPIP_CORE() -#define TCPIP_APIMSG(m) tcpip_apimsg(m) -#define TCPIP_APIMSG_ACK(m) sys_sem_signal(m->conn->op_completed) -#define TCPIP_NETIFAPI(m) tcpip_netifapi(m) -#define TCPIP_NETIFAPI_ACK(m) sys_sem_signal(m->sem) -#endif /* LWIP_TCPIP_CORE_LOCKING */ - -void tcpip_init(void (* tcpip_init_done)(void *), void *arg); - -#if LWIP_NETCONN -err_t tcpip_apimsg(struct api_msg *apimsg); -#if LWIP_TCPIP_CORE_LOCKING -err_t tcpip_apimsg_lock(struct api_msg *apimsg); -#endif /* LWIP_TCPIP_CORE_LOCKING */ -#endif /* LWIP_NETCONN */ - -err_t tcpip_input(struct pbuf *p, struct netif *inp); - -#if LWIP_NETIF_API -err_t tcpip_netifapi(struct netifapi_msg *netifapimsg); -#if LWIP_TCPIP_CORE_LOCKING -err_t tcpip_netifapi_lock(struct netifapi_msg *netifapimsg); -#endif /* LWIP_TCPIP_CORE_LOCKING */ -#endif /* LWIP_NETIF_API */ - -err_t tcpip_callback_with_block(void (*f)(void *ctx), void *ctx, u8_t block); -#define tcpip_callback(f, ctx) tcpip_callback_with_block(f, ctx, 1) - -/* free pbufs or heap memory from another context without blocking */ -err_t pbuf_free_callback(struct pbuf *p); -err_t mem_free_callback(void *m); - -err_t tcpip_timeout(u32_t msecs, sys_timeout_handler h, void *arg); -err_t tcpip_untimeout(sys_timeout_handler h, void *arg); - -enum tcpip_msg_type { -#if LWIP_NETCONN - TCPIP_MSG_API, -#endif /* LWIP_NETCONN */ - TCPIP_MSG_INPKT, -#if LWIP_NETIF_API - TCPIP_MSG_NETIFAPI, -#endif /* LWIP_NETIF_API */ - TCPIP_MSG_CALLBACK, - TCPIP_MSG_TIMEOUT, - TCPIP_MSG_UNTIMEOUT -}; - -struct tcpip_msg { - enum tcpip_msg_type type; - sys_sem_t *sem; - union { -#if LWIP_NETCONN - struct api_msg *apimsg; -#endif /* LWIP_NETCONN */ -#if LWIP_NETIF_API - struct netifapi_msg *netifapimsg; -#endif /* LWIP_NETIF_API */ - struct { - struct pbuf *p; - struct netif *netif; - } inp; - struct { - void (*f)(void *ctx); - void *ctx; - } cb; - struct { - u32_t msecs; - sys_timeout_handler h; - void *arg; - } tmo; - } msg; -}; - -#ifdef __cplusplus -} -#endif - -#endif /* !NO_SYS */ - -#endif /* __LWIP_TCPIP_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/udp.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/udp.h deleted file mode 100644 index 1269ee19cfc..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/lwip/udp.h +++ /dev/null @@ -1,155 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIP_UDP_H__ -#define __LWIP_UDP_H__ - -#include "lwip/opt.h" - -#if LWIP_UDP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/pbuf.h" -#include "lwip/netif.h" -#include "lwip/ip_addr.h" -#include "lwip/ip.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define UDP_HLEN 8 - -/* Fields are (of course) in network byte order. */ -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct udp_hdr { - PACK_STRUCT_FIELD(u16_t src); - PACK_STRUCT_FIELD(u16_t dest); /* src/dest UDP ports */ - PACK_STRUCT_FIELD(u16_t len); - PACK_STRUCT_FIELD(u16_t chksum); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define UDP_FLAGS_NOCHKSUM 0x01U -#define UDP_FLAGS_UDPLITE 0x02U -#define UDP_FLAGS_CONNECTED 0x04U - -struct udp_pcb { -/* Common members of all PCB types */ - IP_PCB; - -/* Protocol specific PCB members */ - - struct udp_pcb *next; - - u8_t flags; - /* ports are in host byte order */ - u16_t local_port, remote_port; - -#if LWIP_IGMP - /* outgoing network interface for multicast packets */ - struct ip_addr multicast_ip; -#endif /* LWIP_IGMP */ - -#if LWIP_UDPLITE - /* used for UDP_LITE only */ - u16_t chksum_len_rx, chksum_len_tx; -#endif /* LWIP_UDPLITE */ - - /* receive callback function - * addr and port are in same byte order as in the pcb - * The callback is responsible for freeing the pbuf - * if it's not used any more. - * - * ATTENTION: Be aware that 'addr' points into the pbuf 'p' so freeing this pbuf - * makes 'addr' invalid, too. - * - * @param arg user supplied argument (udp_pcb.recv_arg) - * @param pcb the udp_pcb which received data - * @param p the packet buffer that was received - * @param addr the remote IP address from which the packet was received - * @param port the remote port from which the packet was received - */ - void (* recv)(void *arg, struct udp_pcb *pcb, struct pbuf *p, - struct ip_addr *addr, u16_t port); - /* user-supplied argument for the recv callback */ - void *recv_arg; -}; -/* udp_pcbs export for exernal reference (e.g. SNMP agent) */ -extern struct udp_pcb *udp_pcbs; - -/* The following functions is the application layer interface to the - UDP code. */ -struct udp_pcb * udp_new (void); -void udp_remove (struct udp_pcb *pcb); -err_t udp_bind (struct udp_pcb *pcb, struct ip_addr *ipaddr, - u16_t port); -err_t udp_connect (struct udp_pcb *pcb, struct ip_addr *ipaddr, - u16_t port); -void udp_disconnect (struct udp_pcb *pcb); -void udp_recv (struct udp_pcb *pcb, - void (* recv)(void *arg, struct udp_pcb *upcb, - struct pbuf *p, - struct ip_addr *addr, - u16_t port), - void *recv_arg); -err_t udp_sendto_if (struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *dst_ip, u16_t dst_port, struct netif *netif); -err_t udp_sendto (struct udp_pcb *pcb, struct pbuf *p, struct ip_addr *dst_ip, u16_t dst_port); -err_t udp_send (struct udp_pcb *pcb, struct pbuf *p); - -#define udp_flags(pcb) ((pcb)->flags) -#define udp_setflags(pcb, f) ((pcb)->flags = (f)) - -/* The following functions are the lower layer interface to UDP. */ -void udp_input (struct pbuf *p, struct netif *inp); - -#define udp_init() /* Compatibility define, not init needed. */ - -#if UDP_DEBUG -void udp_debug_print(struct udp_hdr *udphdr); -#else -#define udp_debug_print(udphdr) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_UDP */ - -#endif /* __LWIP_UDP_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/etharp.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/etharp.h deleted file mode 100644 index fb1542a77d7..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/etharp.h +++ /dev/null @@ -1,194 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * Copyright (c) 2003-2004 Leon Woestenberg - * Copyright (c) 2003-2004 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ - -#ifndef __NETIF_ETHARP_H__ -#define __NETIF_ETHARP_H__ - -#include "lwip/opt.h" - -#if LWIP_ARP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/pbuf.h" -#include "lwip/ip_addr.h" -#include "lwip/netif.h" -#include "lwip/ip.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef ETH_PAD_SIZE -#define ETH_PAD_SIZE 0 -#endif - -#ifndef ETHARP_HWADDR_LEN -#define ETHARP_HWADDR_LEN 6 -#endif - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct eth_addr { - PACK_STRUCT_FIELD(u8_t addr[ETHARP_HWADDR_LEN]); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct eth_hdr { -#if ETH_PAD_SIZE - PACK_STRUCT_FIELD(u8_t padding[ETH_PAD_SIZE]); -#endif - PACK_STRUCT_FIELD(struct eth_addr dest); - PACK_STRUCT_FIELD(struct eth_addr src); - PACK_STRUCT_FIELD(u16_t type); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define SIZEOF_ETH_HDR (14 + ETH_PAD_SIZE) - -#if ETHARP_SUPPORT_VLAN - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct eth_vlan_hdr { - PACK_STRUCT_FIELD(u16_t tpid); - PACK_STRUCT_FIELD(u16_t prio_vid); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define SIZEOF_VLAN_HDR 4 -#define VLAN_ID(vlan_hdr) (htons((vlan_hdr)->prio_vid) & 0xFFF) - -#endif /* ETHARP_SUPPORT_VLAN */ - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -/** the ARP message */ -struct etharp_hdr { - PACK_STRUCT_FIELD(u16_t hwtype); - PACK_STRUCT_FIELD(u16_t proto); - PACK_STRUCT_FIELD(u16_t _hwlen_protolen); - PACK_STRUCT_FIELD(u16_t opcode); - PACK_STRUCT_FIELD(struct eth_addr shwaddr); - PACK_STRUCT_FIELD(struct ip_addr2 sipaddr); - PACK_STRUCT_FIELD(struct eth_addr dhwaddr); - PACK_STRUCT_FIELD(struct ip_addr2 dipaddr); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#define SIZEOF_ETHARP_HDR 28 -#define SIZEOF_ETHARP_PACKET (SIZEOF_ETH_HDR + SIZEOF_ETHARP_HDR) - -/** 5 seconds period */ -#define ARP_TMR_INTERVAL 5000 - -#define ETHTYPE_ARP 0x0806 -#define ETHTYPE_IP 0x0800 -#define ETHTYPE_VLAN 0x8100 -#define ETHTYPE_PPPOEDISC 0x8863 /* PPP Over Ethernet Discovery Stage */ -#define ETHTYPE_PPPOE 0x8864 /* PPP Over Ethernet Session Stage */ - -/** ARP message types (opcodes) */ -#define ARP_REQUEST 1 -#define ARP_REPLY 2 - -#if ARP_QUEUEING -/** struct for queueing outgoing packets for unknown address - * defined here to be accessed by memp.h - */ -struct etharp_q_entry { - struct etharp_q_entry *next; - struct pbuf *p; -}; -#endif /* ARP_QUEUEING */ - -#define etharp_init() /* Compatibility define, not init needed. */ -void etharp_tmr(void); -s8_t etharp_find_addr(struct netif *netif, struct ip_addr *ipaddr, - struct eth_addr **eth_ret, struct ip_addr **ip_ret); -void etharp_ip_input(struct netif *netif, struct pbuf *p); -void etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr, - struct pbuf *p); -err_t etharp_output(struct netif *netif, struct pbuf *q, struct ip_addr *ipaddr); -err_t etharp_query(struct netif *netif, struct ip_addr *ipaddr, struct pbuf *q); -err_t etharp_request(struct netif *netif, struct ip_addr *ipaddr); -/** For Ethernet network interfaces, we might want to send "gratuitous ARP"; - * this is an ARP packet sent by a node in order to spontaneously cause other - * nodes to update an entry in their ARP cache. - * From RFC 3220 "IP Mobility Support for IPv4" section 4.6. */ -#define etharp_gratuitous(netif) etharp_request((netif), &(netif)->ip_addr) - -err_t ethernet_input(struct pbuf *p, struct netif *netif); - -#if LWIP_AUTOIP -err_t etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr, - const struct eth_addr *ethdst_addr, - const struct eth_addr *hwsrc_addr, const struct ip_addr *ipsrc_addr, - const struct eth_addr *hwdst_addr, const struct ip_addr *ipdst_addr, - const u16_t opcode); -#endif /* LWIP_AUTOIP */ - -#define eth_addr_cmp(addr1, addr2) (memcmp((addr1)->addr, (addr2)->addr, ETHARP_HWADDR_LEN) == 0) - -extern const struct eth_addr ethbroadcast, ethzero; - -#ifdef __cplusplus -} -#endif - -#endif /* LWIP_ARP */ - -#endif /* __NETIF_ARP_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/loopif.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/loopif.h deleted file mode 100644 index 3f4fa62cb7e..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/loopif.h +++ /dev/null @@ -1,55 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __NETIF_LOOPIF_H__ -#define __NETIF_LOOPIF_H__ - -#include "lwip/opt.h" -#include "lwip/netif.h" -#include "lwip/err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#if !LWIP_NETIF_LOOPBACK_MULTITHREADING -#define loopif_poll netif_poll -#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */ - -err_t loopif_init(struct netif *netif); - -#ifdef __cplusplus -} -#endif - -#endif /* __NETIF_LOOPIF_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/ppp_oe.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/ppp_oe.h deleted file mode 100644 index fac0a78d066..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/ppp_oe.h +++ /dev/null @@ -1,163 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/***************************************************************************** -* ppp_oe.h - PPP Over Ethernet implementation for lwIP. -* -* Copyright (c) 2006 by Marc Boucher, Services Informatiques (MBSI) inc. -* -* The authors hereby grant permission to use, copy, modify, distribute, -* and license this software and its documentation for any purpose, provided -* that existing copyright notices are retained in all copies and that this -* notice and the following disclaimer are included verbatim in any -* distributions. No written agreement, license, or royalty fee is required -* for any of the authorized uses. -* -* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS *AS IS* AND ANY EXPRESS OR -* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -* IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -****************************************************************************** -* REVISION HISTORY -* -* 06-01-01 Marc Boucher -* Ported to lwIP. -*****************************************************************************/ - - - -/* based on NetBSD: if_pppoe.c,v 1.64 2006/01/31 23:50:15 martin Exp */ - -/*- - * Copyright (c) 2002 The NetBSD Foundation, Inc. - * All rights reserved. - * - * This code is derived from software contributed to The NetBSD Foundation - * by Martin Husemann . - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef PPP_OE_H -#define PPP_OE_H - -#include "lwip/opt.h" - -#if PPPOE_SUPPORT > 0 - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct pppoehdr { - PACK_STRUCT_FIELD(u8_t vertype); - PACK_STRUCT_FIELD(u8_t code); - PACK_STRUCT_FIELD(u16_t session); - PACK_STRUCT_FIELD(u16_t plen); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/bpstruct.h" -#endif -PACK_STRUCT_BEGIN -struct pppoetag { - PACK_STRUCT_FIELD(u16_t tag); - PACK_STRUCT_FIELD(u16_t len); -} PACK_STRUCT_STRUCT; -PACK_STRUCT_END -#ifdef PACK_STRUCT_USE_INCLUDES -# include "arch/epstruct.h" -#endif - - -#define PPPOE_STATE_INITIAL 0 -#define PPPOE_STATE_PADI_SENT 1 -#define PPPOE_STATE_PADR_SENT 2 -#define PPPOE_STATE_SESSION 3 -#define PPPOE_STATE_CLOSING 4 -/* passive */ -#define PPPOE_STATE_PADO_SENT 1 - -#define PPPOE_HEADERLEN sizeof(struct pppoehdr) -#define PPPOE_VERTYPE 0x11 /* VER=1, TYPE = 1 */ - -#define PPPOE_TAG_EOL 0x0000 /* end of list */ -#define PPPOE_TAG_SNAME 0x0101 /* service name */ -#define PPPOE_TAG_ACNAME 0x0102 /* access concentrator name */ -#define PPPOE_TAG_HUNIQUE 0x0103 /* host unique */ -#define PPPOE_TAG_ACCOOKIE 0x0104 /* AC cookie */ -#define PPPOE_TAG_VENDOR 0x0105 /* vendor specific */ -#define PPPOE_TAG_RELAYSID 0x0110 /* relay session id */ -#define PPPOE_TAG_SNAME_ERR 0x0201 /* service name error */ -#define PPPOE_TAG_ACSYS_ERR 0x0202 /* AC system error */ -#define PPPOE_TAG_GENERIC_ERR 0x0203 /* gerneric error */ - -#define PPPOE_CODE_PADI 0x09 /* Active Discovery Initiation */ -#define PPPOE_CODE_PADO 0x07 /* Active Discovery Offer */ -#define PPPOE_CODE_PADR 0x19 /* Active Discovery Request */ -#define PPPOE_CODE_PADS 0x65 /* Active Discovery Session confirmation */ -#define PPPOE_CODE_PADT 0xA7 /* Active Discovery Terminate */ - -#ifndef ETHERMTU -#define ETHERMTU 1500 -#endif - -/* two byte PPP protocol discriminator, then IP data */ -#define PPPOE_MAXMTU (ETHERMTU-PPPOE_HEADERLEN-2) - -struct pppoe_softc; - - -void pppoe_init(void); - -err_t pppoe_create(struct netif *ethif, int pd, void (*linkStatusCB)(int pd, int up), struct pppoe_softc **scptr); -err_t pppoe_destroy(struct netif *ifp); - -int pppoe_connect(struct pppoe_softc *sc); -void pppoe_disconnect(struct pppoe_softc *sc); - -void pppoe_disc_input(struct netif *netif, struct pbuf *p); -void pppoe_data_input(struct netif *netif, struct pbuf *p); - -err_t pppoe_xmit(struct pppoe_softc *sc, struct pbuf *pb); - -extern int pppoe_hdrlen; - -#endif /* PPPOE_SUPPORT */ - -#endif /* PPP_OE_H */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/slipif.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/slipif.h deleted file mode 100644 index ddc2dfa5678..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/netif/slipif.h +++ /dev/null @@ -1,53 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001, Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Institute nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __NETIF_SLIPIF_H__ -#define __NETIF_SLIPIF_H__ - -#include "lwip/netif.h" - -#ifdef __cplusplus -extern "C" { -#endif - -err_t slipif_init(struct netif * netif); -void slipif_poll(struct netif *netif); - -#ifdef __cplusplus -} -#endif - -#endif - diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/etharp.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/etharp.c deleted file mode 100644 index 1a5d134041e..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/etharp.c +++ /dev/null @@ -1,1224 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Address Resolution Protocol module for IP over Ethernet - * - * Functionally, ARP is divided into two parts. The first maps an IP address - * to a physical address when sending a packet, and the second part answers - * requests from other machines for our physical address. - * - * This implementation complies with RFC 826 (Ethernet ARP). It supports - * Gratuitious ARP from RFC3220 (IP Mobility Support for IPv4) section 4.6 - * if an interface calls etharp_gratuitous(our_netif) upon address change. - */ - -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * Copyright (c) 2003-2004 Leon Woestenberg - * Copyright (c) 2003-2004 Axon Digital Design B.V., The Netherlands. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - */ - -#include "lwip/opt.h" - -#if LWIP_ARP /* don't build if not configured for use in lwipopts.h */ - -#include "lwip/inet.h" -#include "lwip/ip.h" -#include "lwip/stats.h" -#include "lwip/snmp.h" -#include "lwip/dhcp.h" -#include "lwip/autoip.h" -#include "netif/etharp.h" - -#if PPPOE_SUPPORT -#include "netif/ppp_oe.h" -#endif /* PPPOE_SUPPORT */ - -#include - -/** the time an ARP entry stays valid after its last update, - * for ARP_TMR_INTERVAL = 5000, this is - * (240 * 5) seconds = 20 minutes. - */ -#define ARP_MAXAGE 240 -/** the time an ARP entry stays pending after first request, - * for ARP_TMR_INTERVAL = 5000, this is - * (2 * 5) seconds = 10 seconds. - * - * @internal Keep this number at least 2, otherwise it might - * run out instantly if the timeout occurs directly after a request. - */ -#define ARP_MAXPENDING 2 - -#define HWTYPE_ETHERNET 1 - -#define ARPH_HWLEN(hdr) (ntohs((hdr)->_hwlen_protolen) >> 8) -#define ARPH_PROTOLEN(hdr) (ntohs((hdr)->_hwlen_protolen) & 0xff) - -#define ARPH_HWLEN_SET(hdr, len) (hdr)->_hwlen_protolen = htons(ARPH_PROTOLEN(hdr) | ((len) << 8)) -#define ARPH_PROTOLEN_SET(hdr, len) (hdr)->_hwlen_protolen = htons((len) | (ARPH_HWLEN(hdr) << 8)) - -enum etharp_state { - ETHARP_STATE_EMPTY = 0, - ETHARP_STATE_PENDING, - ETHARP_STATE_STABLE -}; - -struct etharp_entry { -#if ARP_QUEUEING - /** - * Pointer to queue of pending outgoing packets on this ARP entry. - */ - struct etharp_q_entry *q; -#endif - struct ip_addr ipaddr; - struct eth_addr ethaddr; - enum etharp_state state; - u8_t ctime; - struct netif *netif; -}; - -const struct eth_addr ethbroadcast = {{0xff,0xff,0xff,0xff,0xff,0xff}}; -const struct eth_addr ethzero = {{0,0,0,0,0,0}}; -static struct etharp_entry arp_table[ARP_TABLE_SIZE]; -#if !LWIP_NETIF_HWADDRHINT -static u8_t etharp_cached_entry; -#endif - -/** - * Try hard to create a new entry - we want the IP address to appear in - * the cache (even if this means removing an active entry or so). */ -#define ETHARP_TRY_HARD 1 -#define ETHARP_FIND_ONLY 2 - -#if LWIP_NETIF_HWADDRHINT -#define NETIF_SET_HINT(netif, hint) if (((netif) != NULL) && ((netif)->addr_hint != NULL)) \ - *((netif)->addr_hint) = (hint); -static s8_t find_entry(struct ip_addr *ipaddr, u8_t flags, struct netif *netif); -#else /* LWIP_NETIF_HWADDRHINT */ -static s8_t find_entry(struct ip_addr *ipaddr, u8_t flags); -#endif /* LWIP_NETIF_HWADDRHINT */ - -static err_t update_arp_entry(struct netif *netif, struct ip_addr *ipaddr, struct eth_addr *ethaddr, u8_t flags); - - -/* Some checks, instead of etharp_init(): */ -#if (LWIP_ARP && (ARP_TABLE_SIZE > 0x7f)) - #error "If you want to use ARP, ARP_TABLE_SIZE must fit in an s8_t, so, you have to reduce it in your lwipopts.h" -#endif - - -#if ARP_QUEUEING -/** - * Free a complete queue of etharp entries - * - * @param q a qeueue of etharp_q_entry's to free - */ -static void -free_etharp_q(struct etharp_q_entry *q) -{ - struct etharp_q_entry *r; - LWIP_ASSERT("q != NULL", q != NULL); - LWIP_ASSERT("q->p != NULL", q->p != NULL); - while (q) { - r = q; - q = q->next; - LWIP_ASSERT("r->p != NULL", (r->p != NULL)); - pbuf_free(r->p); - memp_free(MEMP_ARP_QUEUE, r); - } -} -#endif - -/** - * Clears expired entries in the ARP table. - * - * This function should be called every ETHARP_TMR_INTERVAL microseconds (5 seconds), - * in order to expire entries in the ARP table. - */ -void -etharp_tmr(void) -{ - u8_t i; - - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer\n")); - /* remove expired entries from the ARP table */ - for (i = 0; i < ARP_TABLE_SIZE; ++i) { - arp_table[i].ctime++; - if (((arp_table[i].state == ETHARP_STATE_STABLE) && - (arp_table[i].ctime >= ARP_MAXAGE)) || - ((arp_table[i].state == ETHARP_STATE_PENDING) && - (arp_table[i].ctime >= ARP_MAXPENDING))) { - /* pending or stable entry has become old! */ - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: expired %s entry %"U16_F".\n", - arp_table[i].state == ETHARP_STATE_STABLE ? "stable" : "pending", (u16_t)i)); - /* clean up entries that have just been expired */ - /* remove from SNMP ARP index tree */ - snmp_delete_arpidx_tree(arp_table[i].netif, &arp_table[i].ipaddr); -#if ARP_QUEUEING - /* and empty packet queue */ - if (arp_table[i].q != NULL) { - /* remove all queued packets */ - LWIP_DEBUGF(ETHARP_DEBUG, ("etharp_timer: freeing entry %"U16_F", packet queue %p.\n", (u16_t)i, (void *)(arp_table[i].q))); - free_etharp_q(arp_table[i].q); - arp_table[i].q = NULL; - } -#endif - /* recycle entry for re-use */ - arp_table[i].state = ETHARP_STATE_EMPTY; - } -#if ARP_QUEUEING - /* still pending entry? (not expired) */ - if (arp_table[i].state == ETHARP_STATE_PENDING) { - /* resend an ARP query here? */ - } -#endif - } -} - -/** - * Search the ARP table for a matching or new entry. - * - * If an IP address is given, return a pending or stable ARP entry that matches - * the address. If no match is found, create a new entry with this address set, - * but in state ETHARP_EMPTY. The caller must check and possibly change the - * state of the returned entry. - * - * If ipaddr is NULL, return a initialized new entry in state ETHARP_EMPTY. - * - * In all cases, attempt to create new entries from an empty entry. If no - * empty entries are available and ETHARP_TRY_HARD flag is set, recycle - * old entries. Heuristic choose the least important entry for recycling. - * - * @param ipaddr IP address to find in ARP cache, or to add if not found. - * @param flags - * - ETHARP_TRY_HARD: Try hard to create a entry by allowing recycling of - * active (stable or pending) entries. - * - * @return The ARP entry index that matched or is created, ERR_MEM if no - * entry is found or could be recycled. - */ -static s8_t -#if LWIP_NETIF_HWADDRHINT -find_entry(struct ip_addr *ipaddr, u8_t flags, struct netif *netif) -#else /* LWIP_NETIF_HWADDRHINT */ -find_entry(struct ip_addr *ipaddr, u8_t flags) -#endif /* LWIP_NETIF_HWADDRHINT */ -{ - s8_t old_pending = ARP_TABLE_SIZE, old_stable = ARP_TABLE_SIZE; - s8_t empty = ARP_TABLE_SIZE; - u8_t i = 0, age_pending = 0, age_stable = 0; -#if ARP_QUEUEING - /* oldest entry with packets on queue */ - s8_t old_queue = ARP_TABLE_SIZE; - /* its age */ - u8_t age_queue = 0; -#endif - - /* First, test if the last call to this function asked for the - * same address. If so, we're really fast! */ - if (ipaddr) { - /* ipaddr to search for was given */ -#if LWIP_NETIF_HWADDRHINT - if ((netif != NULL) && (netif->addr_hint != NULL)) { - /* per-pcb cached entry was given */ - u8_t per_pcb_cache = *(netif->addr_hint); - if ((per_pcb_cache < ARP_TABLE_SIZE) && arp_table[per_pcb_cache].state == ETHARP_STATE_STABLE) { - /* the per-pcb-cached entry is stable */ - if (ip_addr_cmp(ipaddr, &arp_table[per_pcb_cache].ipaddr)) { - /* per-pcb cached entry was the right one! */ - ETHARP_STATS_INC(etharp.cachehit); - return per_pcb_cache; - } - } - } -#else /* #if LWIP_NETIF_HWADDRHINT */ - if (arp_table[etharp_cached_entry].state == ETHARP_STATE_STABLE) { - /* the cached entry is stable */ - if (ip_addr_cmp(ipaddr, &arp_table[etharp_cached_entry].ipaddr)) { - /* cached entry was the right one! */ - ETHARP_STATS_INC(etharp.cachehit); - return etharp_cached_entry; - } - } -#endif /* #if LWIP_NETIF_HWADDRHINT */ - } - - /** - * a) do a search through the cache, remember candidates - * b) select candidate entry - * c) create new entry - */ - - /* a) in a single search sweep, do all of this - * 1) remember the first empty entry (if any) - * 2) remember the oldest stable entry (if any) - * 3) remember the oldest pending entry without queued packets (if any) - * 4) remember the oldest pending entry with queued packets (if any) - * 5) search for a matching IP entry, either pending or stable - * until 5 matches, or all entries are searched for. - */ - - for (i = 0; i < ARP_TABLE_SIZE; ++i) { - /* no empty entry found yet and now we do find one? */ - if ((empty == ARP_TABLE_SIZE) && (arp_table[i].state == ETHARP_STATE_EMPTY)) { - LWIP_DEBUGF(ETHARP_DEBUG, ("find_entry: found empty entry %"U16_F"\n", (u16_t)i)); - /* remember first empty entry */ - empty = i; - } - /* pending entry? */ - else if (arp_table[i].state == ETHARP_STATE_PENDING) { - /* if given, does IP address match IP address in ARP entry? */ - if (ipaddr && ip_addr_cmp(ipaddr, &arp_table[i].ipaddr)) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: found matching pending entry %"U16_F"\n", (u16_t)i)); - /* found exact IP address match, simply bail out */ -#if LWIP_NETIF_HWADDRHINT - NETIF_SET_HINT(netif, i); -#else /* #if LWIP_NETIF_HWADDRHINT */ - etharp_cached_entry = i; -#endif /* #if LWIP_NETIF_HWADDRHINT */ - return i; -#if ARP_QUEUEING - /* pending with queued packets? */ - } else if (arp_table[i].q != NULL) { - if (arp_table[i].ctime >= age_queue) { - old_queue = i; - age_queue = arp_table[i].ctime; - } -#endif - /* pending without queued packets? */ - } else { - if (arp_table[i].ctime >= age_pending) { - old_pending = i; - age_pending = arp_table[i].ctime; - } - } - } - /* stable entry? */ - else if (arp_table[i].state == ETHARP_STATE_STABLE) { - /* if given, does IP address match IP address in ARP entry? */ - if (ipaddr && ip_addr_cmp(ipaddr, &arp_table[i].ipaddr)) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: found matching stable entry %"U16_F"\n", (u16_t)i)); - /* found exact IP address match, simply bail out */ -#if LWIP_NETIF_HWADDRHINT - NETIF_SET_HINT(netif, i); -#else /* #if LWIP_NETIF_HWADDRHINT */ - etharp_cached_entry = i; -#endif /* #if LWIP_NETIF_HWADDRHINT */ - return i; - /* remember entry with oldest stable entry in oldest, its age in maxtime */ - } else if (arp_table[i].ctime >= age_stable) { - old_stable = i; - age_stable = arp_table[i].ctime; - } - } - } - /* { we have no match } => try to create a new entry */ - - /* no empty entry found and not allowed to recycle? */ - if (((empty == ARP_TABLE_SIZE) && ((flags & ETHARP_TRY_HARD) == 0)) - /* or don't create new entry, only search? */ - || ((flags & ETHARP_FIND_ONLY) != 0)) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: no empty entry found and not allowed to recycle\n")); - return (s8_t)ERR_MEM; - } - - /* b) choose the least destructive entry to recycle: - * 1) empty entry - * 2) oldest stable entry - * 3) oldest pending entry without queued packets - * 4) oldest pending entry with queued packets - * - * { ETHARP_TRY_HARD is set at this point } - */ - - /* 1) empty entry available? */ - if (empty < ARP_TABLE_SIZE) { - i = empty; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: selecting empty entry %"U16_F"\n", (u16_t)i)); - } - /* 2) found recyclable stable entry? */ - else if (old_stable < ARP_TABLE_SIZE) { - /* recycle oldest stable*/ - i = old_stable; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: selecting oldest stable entry %"U16_F"\n", (u16_t)i)); -#if ARP_QUEUEING - /* no queued packets should exist on stable entries */ - LWIP_ASSERT("arp_table[i].q == NULL", arp_table[i].q == NULL); -#endif - /* 3) found recyclable pending entry without queued packets? */ - } else if (old_pending < ARP_TABLE_SIZE) { - /* recycle oldest pending */ - i = old_pending; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: selecting oldest pending entry %"U16_F" (without queue)\n", (u16_t)i)); -#if ARP_QUEUEING - /* 4) found recyclable pending entry with queued packets? */ - } else if (old_queue < ARP_TABLE_SIZE) { - /* recycle oldest pending */ - i = old_queue; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("find_entry: selecting oldest pending entry %"U16_F", freeing packet queue %p\n", (u16_t)i, (void *)(arp_table[i].q))); - free_etharp_q(arp_table[i].q); - arp_table[i].q = NULL; -#endif - /* no empty or recyclable entries found */ - } else { - return (s8_t)ERR_MEM; - } - - /* { empty or recyclable entry found } */ - LWIP_ASSERT("i < ARP_TABLE_SIZE", i < ARP_TABLE_SIZE); - - if (arp_table[i].state != ETHARP_STATE_EMPTY) - { - snmp_delete_arpidx_tree(arp_table[i].netif, &arp_table[i].ipaddr); - } - /* recycle entry (no-op for an already empty entry) */ - arp_table[i].state = ETHARP_STATE_EMPTY; - - /* IP address given? */ - if (ipaddr != NULL) { - /* set IP address */ - ip_addr_set(&arp_table[i].ipaddr, ipaddr); - } - arp_table[i].ctime = 0; -#if LWIP_NETIF_HWADDRHINT - NETIF_SET_HINT(netif, i); -#else /* #if LWIP_NETIF_HWADDRHINT */ - etharp_cached_entry = i; -#endif /* #if LWIP_NETIF_HWADDRHINT */ - return (err_t)i; -} - -/** - * Send an IP packet on the network using netif->linkoutput - * The ethernet header is filled in before sending. - * - * @params netif the lwIP network interface on which to send the packet - * @params p the packet to send, p->payload pointing to the (uninitialized) ethernet header - * @params src the source MAC address to be copied into the ethernet header - * @params dst the destination MAC address to be copied into the ethernet header - * @return ERR_OK if the packet was sent, any other err_t on failure - */ -static err_t -etharp_send_ip(struct netif *netif, struct pbuf *p, struct eth_addr *src, struct eth_addr *dst) -{ - struct eth_hdr *ethhdr = p->payload; - u8_t k; - - LWIP_ASSERT("netif->hwaddr_len must be the same as ETHARP_HWADDR_LEN for etharp!", - (netif->hwaddr_len == ETHARP_HWADDR_LEN)); - k = ETHARP_HWADDR_LEN; - while(k > 0) { - k--; - ethhdr->dest.addr[k] = dst->addr[k]; - ethhdr->src.addr[k] = src->addr[k]; - } - ethhdr->type = htons(ETHTYPE_IP); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_send_ip: sending packet %p\n", (void *)p)); - /* send the packet */ - return netif->linkoutput(netif, p); -} - -/** - * Update (or insert) a IP/MAC address pair in the ARP cache. - * - * If a pending entry is resolved, any queued packets will be sent - * at this point. - * - * @param ipaddr IP address of the inserted ARP entry. - * @param ethaddr Ethernet address of the inserted ARP entry. - * @param flags Defines behaviour: - * - ETHARP_TRY_HARD Allows ARP to insert this as a new item. If not specified, - * only existing ARP entries will be updated. - * - * @return - * - ERR_OK Succesfully updated ARP cache. - * - ERR_MEM If we could not add a new ARP entry when ETHARP_TRY_HARD was set. - * - ERR_ARG Non-unicast address given, those will not appear in ARP cache. - * - * @see pbuf_free() - */ -static err_t -update_arp_entry(struct netif *netif, struct ip_addr *ipaddr, struct eth_addr *ethaddr, u8_t flags) -{ - s8_t i; - u8_t k; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("update_arp_entry()\n")); - LWIP_ASSERT("netif->hwaddr_len == ETHARP_HWADDR_LEN", netif->hwaddr_len == ETHARP_HWADDR_LEN); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("update_arp_entry: %"U16_F".%"U16_F".%"U16_F".%"U16_F" - %02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F":%02"X16_F"\n", - ip4_addr1(ipaddr), ip4_addr2(ipaddr), ip4_addr3(ipaddr), ip4_addr4(ipaddr), - ethaddr->addr[0], ethaddr->addr[1], ethaddr->addr[2], - ethaddr->addr[3], ethaddr->addr[4], ethaddr->addr[5])); - /* non-unicast address? */ - if (ip_addr_isany(ipaddr) || - ip_addr_isbroadcast(ipaddr, netif) || - ip_addr_ismulticast(ipaddr)) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("update_arp_entry: will not add non-unicast IP address to ARP cache\n")); - return ERR_ARG; - } - /* find or create ARP entry */ -#if LWIP_NETIF_HWADDRHINT - i = find_entry(ipaddr, flags, netif); -#else /* LWIP_NETIF_HWADDRHINT */ - i = find_entry(ipaddr, flags); -#endif /* LWIP_NETIF_HWADDRHINT */ - /* bail out if no entry could be found */ - if (i < 0) - return (err_t)i; - - /* mark it stable */ - arp_table[i].state = ETHARP_STATE_STABLE; - /* record network interface */ - arp_table[i].netif = netif; - - /* insert in SNMP ARP index tree */ - snmp_insert_arpidx_tree(netif, &arp_table[i].ipaddr); - - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("update_arp_entry: updating stable entry %"S16_F"\n", (s16_t)i)); - /* update address */ - k = ETHARP_HWADDR_LEN; - while (k > 0) { - k--; - arp_table[i].ethaddr.addr[k] = ethaddr->addr[k]; - } - /* reset time stamp */ - arp_table[i].ctime = 0; -#if ARP_QUEUEING - /* this is where we will send out queued packets! */ - while (arp_table[i].q != NULL) { - struct pbuf *p; - /* remember remainder of queue */ - struct etharp_q_entry *q = arp_table[i].q; - /* pop first item off the queue */ - arp_table[i].q = q->next; - /* get the packet pointer */ - p = q->p; - /* now queue entry can be freed */ - memp_free(MEMP_ARP_QUEUE, q); - /* send the queued IP packet */ - etharp_send_ip(netif, p, (struct eth_addr*)(netif->hwaddr), ethaddr); - /* free the queued IP packet */ - pbuf_free(p); - } -#endif - return ERR_OK; -} - -/** - * Finds (stable) ethernet/IP address pair from ARP table - * using interface and IP address index. - * @note the addresses in the ARP table are in network order! - * - * @param netif points to interface index - * @param ipaddr points to the (network order) IP address index - * @param eth_ret points to return pointer - * @param ip_ret points to return pointer - * @return table index if found, -1 otherwise - */ -s8_t -etharp_find_addr(struct netif *netif, struct ip_addr *ipaddr, - struct eth_addr **eth_ret, struct ip_addr **ip_ret) -{ - s8_t i; - - LWIP_UNUSED_ARG(netif); - -#if LWIP_NETIF_HWADDRHINT - i = find_entry(ipaddr, ETHARP_FIND_ONLY, NULL); -#else /* LWIP_NETIF_HWADDRHINT */ - i = find_entry(ipaddr, ETHARP_FIND_ONLY); -#endif /* LWIP_NETIF_HWADDRHINT */ - if((i >= 0) && arp_table[i].state == ETHARP_STATE_STABLE) { - *eth_ret = &arp_table[i].ethaddr; - *ip_ret = &arp_table[i].ipaddr; - return i; - } - return -1; -} - -/** - * Updates the ARP table using the given IP packet. - * - * Uses the incoming IP packet's source address to update the - * ARP cache for the local network. The function does not alter - * or free the packet. This function must be called before the - * packet p is passed to the IP layer. - * - * @param netif The lwIP network interface on which the IP packet pbuf arrived. - * @param p The IP packet that arrived on netif. - * - * @return NULL - * - * @see pbuf_free() - */ -void -etharp_ip_input(struct netif *netif, struct pbuf *p) -{ - struct eth_hdr *ethhdr; - struct ip_hdr *iphdr; - LWIP_ERROR("netif != NULL", (netif != NULL), return;); - /* Only insert an entry if the source IP address of the - incoming IP packet comes from a host on the local network. */ - ethhdr = p->payload; - iphdr = (struct ip_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR); -#if ETHARP_SUPPORT_VLAN - if (ethhdr->type == ETHTYPE_VLAN) { - iphdr = (struct ip_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR + SIZEOF_VLAN_HDR); - } -#endif /* ETHARP_SUPPORT_VLAN */ - - /* source is not on the local network? */ - if (!ip_addr_netcmp(&(iphdr->src), &(netif->ip_addr), &(netif->netmask))) { - /* do nothing */ - return; - } - - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_ip_input: updating ETHARP table.\n")); - /* update ARP table */ - /* @todo We could use ETHARP_TRY_HARD if we think we are going to talk - * back soon (for example, if the destination IP address is ours. */ - update_arp_entry(netif, &(iphdr->src), &(ethhdr->src), 0); -} - - -/** - * Responds to ARP requests to us. Upon ARP replies to us, add entry to cache - * send out queued IP packets. Updates cache with snooped address pairs. - * - * Should be called for incoming ARP packets. The pbuf in the argument - * is freed by this function. - * - * @param netif The lwIP network interface on which the ARP packet pbuf arrived. - * @param ethaddr Ethernet address of netif. - * @param p The ARP packet that arrived on netif. Is freed by this function. - * - * @return NULL - * - * @see pbuf_free() - */ -void -etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr, struct pbuf *p) -{ - struct etharp_hdr *hdr; - struct eth_hdr *ethhdr; - /* these are aligned properly, whereas the ARP header fields might not be */ - struct ip_addr sipaddr, dipaddr; - u8_t i; - u8_t for_us; -#if LWIP_AUTOIP - const u8_t * ethdst_hwaddr; -#endif /* LWIP_AUTOIP */ - - LWIP_ERROR("netif != NULL", (netif != NULL), return;); - - /* drop short ARP packets: we have to check for p->len instead of p->tot_len here - since a struct etharp_hdr is pointed to p->payload, so it musn't be chained! */ - if (p->len < SIZEOF_ETHARP_PACKET) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("etharp_arp_input: packet dropped, too short (%"S16_F"/%"S16_F")\n", p->tot_len, - (s16_t)SIZEOF_ETHARP_PACKET)); - ETHARP_STATS_INC(etharp.lenerr); - ETHARP_STATS_INC(etharp.drop); - pbuf_free(p); - return; - } - - ethhdr = p->payload; - hdr = (struct etharp_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR); -#if ETHARP_SUPPORT_VLAN - if (ethhdr->type == ETHTYPE_VLAN) { - hdr = (struct etharp_hdr *)(((u8_t*)ethhdr) + SIZEOF_ETH_HDR + SIZEOF_VLAN_HDR); - } -#endif /* ETHARP_SUPPORT_VLAN */ - - /* RFC 826 "Packet Reception": */ - if ((hdr->hwtype != htons(HWTYPE_ETHERNET)) || - (hdr->_hwlen_protolen != htons((ETHARP_HWADDR_LEN << 8) | sizeof(struct ip_addr))) || - (hdr->proto != htons(ETHTYPE_IP)) || - (ethhdr->type != htons(ETHTYPE_ARP))) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_WARNING, - ("etharp_arp_input: packet dropped, wrong hw type, hwlen, proto, protolen or ethernet type (%"U16_F"/%"U16_F"/%"U16_F"/%"U16_F"/%"U16_F")\n", - hdr->hwtype, ARPH_HWLEN(hdr), hdr->proto, ARPH_PROTOLEN(hdr), ethhdr->type)); - ETHARP_STATS_INC(etharp.proterr); - ETHARP_STATS_INC(etharp.drop); - pbuf_free(p); - return; - } - ETHARP_STATS_INC(etharp.recv); - -#if LWIP_AUTOIP - /* We have to check if a host already has configured our random - * created link local address and continously check if there is - * a host with this IP-address so we can detect collisions */ - autoip_arp_reply(netif, hdr); -#endif /* LWIP_AUTOIP */ - - /* Copy struct ip_addr2 to aligned ip_addr, to support compilers without - * structure packing (not using structure copy which breaks strict-aliasing rules). */ - SMEMCPY(&sipaddr, &hdr->sipaddr, sizeof(sipaddr)); - SMEMCPY(&dipaddr, &hdr->dipaddr, sizeof(dipaddr)); - - /* this interface is not configured? */ - if (netif->ip_addr.addr == 0) { - for_us = 0; - } else { - /* ARP packet directed to us? */ - for_us = ip_addr_cmp(&dipaddr, &(netif->ip_addr)); - } - - /* ARP message directed to us? */ - if (for_us) { - /* add IP address in ARP cache; assume requester wants to talk to us. - * can result in directly sending the queued packets for this host. */ - update_arp_entry(netif, &sipaddr, &(hdr->shwaddr), ETHARP_TRY_HARD); - /* ARP message not directed to us? */ - } else { - /* update the source IP address in the cache, if present */ - update_arp_entry(netif, &sipaddr, &(hdr->shwaddr), 0); - } - - /* now act on the message itself */ - switch (htons(hdr->opcode)) { - /* ARP request? */ - case ARP_REQUEST: - /* ARP request. If it asked for our address, we send out a - * reply. In any case, we time-stamp any existing ARP entry, - * and possiby send out an IP packet that was queued on it. */ - - LWIP_DEBUGF (ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: incoming ARP request\n")); - /* ARP request for our address? */ - if (for_us) { - - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: replying to ARP request for our IP address\n")); - /* Re-use pbuf to send ARP reply. - Since we are re-using an existing pbuf, we can't call etharp_raw since - that would allocate a new pbuf. */ - hdr->opcode = htons(ARP_REPLY); - - hdr->dipaddr = hdr->sipaddr; - SMEMCPY(&hdr->sipaddr, &netif->ip_addr, sizeof(hdr->sipaddr)); - - LWIP_ASSERT("netif->hwaddr_len must be the same as ETHARP_HWADDR_LEN for etharp!", - (netif->hwaddr_len == ETHARP_HWADDR_LEN)); - i = ETHARP_HWADDR_LEN; -#if LWIP_AUTOIP - /* If we are using Link-Local, ARP packets must be broadcast on the - * link layer. (See RFC3927 Section 2.5) */ - ethdst_hwaddr = ((netif->autoip != NULL) && (netif->autoip->state != AUTOIP_STATE_OFF)) ? (u8_t*)(ethbroadcast.addr) : hdr->shwaddr.addr; -#endif /* LWIP_AUTOIP */ - - while(i > 0) { - i--; - hdr->dhwaddr.addr[i] = hdr->shwaddr.addr[i]; -#if LWIP_AUTOIP - ethhdr->dest.addr[i] = ethdst_hwaddr[i]; -#else /* LWIP_AUTOIP */ - ethhdr->dest.addr[i] = hdr->shwaddr.addr[i]; -#endif /* LWIP_AUTOIP */ - hdr->shwaddr.addr[i] = ethaddr->addr[i]; - ethhdr->src.addr[i] = ethaddr->addr[i]; - } - - /* hwtype, hwaddr_len, proto, protolen and the type in the ethernet header - are already correct, we tested that before */ - - /* return ARP reply */ - netif->linkoutput(netif, p); - /* we are not configured? */ - } else if (netif->ip_addr.addr == 0) { - /* { for_us == 0 and netif->ip_addr.addr == 0 } */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: we are unconfigured, ARP request ignored.\n")); - /* request was not directed to us */ - } else { - /* { for_us == 0 and netif->ip_addr.addr != 0 } */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: ARP request was not for us.\n")); - } - break; - case ARP_REPLY: - /* ARP reply. We already updated the ARP cache earlier. */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: incoming ARP reply\n")); -#if (LWIP_DHCP && DHCP_DOES_ARP_CHECK) - /* DHCP wants to know about ARP replies from any host with an - * IP address also offered to us by the DHCP server. We do not - * want to take a duplicate IP address on a single network. - * @todo How should we handle redundant (fail-over) interfaces? */ - dhcp_arp_reply(netif, &sipaddr); -#endif - break; - default: - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_arp_input: ARP unknown opcode type %"S16_F"\n", htons(hdr->opcode))); - ETHARP_STATS_INC(etharp.err); - break; - } - /* free ARP packet */ - pbuf_free(p); -} - -/** - * Resolve and fill-in Ethernet address header for outgoing IP packet. - * - * For IP multicast and broadcast, corresponding Ethernet addresses - * are selected and the packet is transmitted on the link. - * - * For unicast addresses, the packet is submitted to etharp_query(). In - * case the IP address is outside the local network, the IP address of - * the gateway is used. - * - * @param netif The lwIP network interface which the IP packet will be sent on. - * @param q The pbuf(s) containing the IP packet to be sent. - * @param ipaddr The IP address of the packet destination. - * - * @return - * - ERR_RTE No route to destination (no gateway to external networks), - * or the return type of either etharp_query() or etharp_send_ip(). - */ -err_t -etharp_output(struct netif *netif, struct pbuf *q, struct ip_addr *ipaddr) -{ - struct eth_addr *dest, mcastaddr; - - /* make room for Ethernet header - should not fail */ - if (pbuf_header(q, sizeof(struct eth_hdr)) != 0) { - /* bail out */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("etharp_output: could not allocate room for header.\n")); - LINK_STATS_INC(link.lenerr); - return ERR_BUF; - } - - /* assume unresolved Ethernet address */ - dest = NULL; - /* Determine on destination hardware address. Broadcasts and multicasts - * are special, other IP addresses are looked up in the ARP table. */ - - /* broadcast destination IP address? */ - if (ip_addr_isbroadcast(ipaddr, netif)) { - /* broadcast on Ethernet also */ - dest = (struct eth_addr *)ðbroadcast; - /* multicast destination IP address? */ - } else if (ip_addr_ismulticast(ipaddr)) { - /* Hash IP multicast address to MAC address.*/ - mcastaddr.addr[0] = 0x01; - mcastaddr.addr[1] = 0x00; - mcastaddr.addr[2] = 0x5e; - mcastaddr.addr[3] = ip4_addr2(ipaddr) & 0x7f; - mcastaddr.addr[4] = ip4_addr3(ipaddr); - mcastaddr.addr[5] = ip4_addr4(ipaddr); - /* destination Ethernet address is multicast */ - dest = &mcastaddr; - /* unicast destination IP address? */ - } else { - /* outside local network? */ - if (!ip_addr_netcmp(ipaddr, &(netif->ip_addr), &(netif->netmask))) { - /* interface has default gateway? */ - if (netif->gw.addr != 0) { - /* send to hardware address of default gateway IP address */ - ipaddr = &(netif->gw); - /* no default gateway available */ - } else { - /* no route to destination error (default gateway missing) */ - return ERR_RTE; - } - } - /* queue on destination Ethernet address belonging to ipaddr */ - return etharp_query(netif, ipaddr, q); - } - - /* continuation for multicast/broadcast destinations */ - /* obtain source Ethernet address of the given interface */ - /* send packet directly on the link */ - return etharp_send_ip(netif, q, (struct eth_addr*)(netif->hwaddr), dest); -} - -/** - * Send an ARP request for the given IP address and/or queue a packet. - * - * If the IP address was not yet in the cache, a pending ARP cache entry - * is added and an ARP request is sent for the given address. The packet - * is queued on this entry. - * - * If the IP address was already pending in the cache, a new ARP request - * is sent for the given address. The packet is queued on this entry. - * - * If the IP address was already stable in the cache, and a packet is - * given, it is directly sent and no ARP request is sent out. - * - * If the IP address was already stable in the cache, and no packet is - * given, an ARP request is sent out. - * - * @param netif The lwIP network interface on which ipaddr - * must be queried for. - * @param ipaddr The IP address to be resolved. - * @param q If non-NULL, a pbuf that must be delivered to the IP address. - * q is not freed by this function. - * - * @note q must only be ONE packet, not a packet queue! - * - * @return - * - ERR_BUF Could not make room for Ethernet header. - * - ERR_MEM Hardware address unknown, and no more ARP entries available - * to query for address or queue the packet. - * - ERR_MEM Could not queue packet due to memory shortage. - * - ERR_RTE No route to destination (no gateway to external networks). - * - ERR_ARG Non-unicast address given, those will not appear in ARP cache. - * - */ -err_t -etharp_query(struct netif *netif, struct ip_addr *ipaddr, struct pbuf *q) -{ - struct eth_addr * srcaddr = (struct eth_addr *)netif->hwaddr; - err_t result = ERR_MEM; - s8_t i; /* ARP entry index */ - - /* non-unicast address? */ - if (ip_addr_isbroadcast(ipaddr, netif) || - ip_addr_ismulticast(ipaddr) || - ip_addr_isany(ipaddr)) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: will not add non-unicast IP address to ARP cache\n")); - return ERR_ARG; - } - - /* find entry in ARP cache, ask to create entry if queueing packet */ -#if LWIP_NETIF_HWADDRHINT - i = find_entry(ipaddr, ETHARP_TRY_HARD, netif); -#else /* LWIP_NETIF_HWADDRHINT */ - i = find_entry(ipaddr, ETHARP_TRY_HARD); -#endif /* LWIP_NETIF_HWADDRHINT */ - - /* could not find or create entry? */ - if (i < 0) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not create ARP entry\n")); - if (q) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: packet dropped\n")); - ETHARP_STATS_INC(etharp.memerr); - } - return (err_t)i; - } - - /* mark a fresh entry as pending (we just sent a request) */ - if (arp_table[i].state == ETHARP_STATE_EMPTY) { - arp_table[i].state = ETHARP_STATE_PENDING; - } - - /* { i is either a STABLE or (new or existing) PENDING entry } */ - LWIP_ASSERT("arp_table[i].state == PENDING or STABLE", - ((arp_table[i].state == ETHARP_STATE_PENDING) || - (arp_table[i].state == ETHARP_STATE_STABLE))); - - /* do we have a pending entry? or an implicit query request? */ - if ((arp_table[i].state == ETHARP_STATE_PENDING) || (q == NULL)) { - /* try to resolve it; send out ARP request */ - result = etharp_request(netif, ipaddr); - if (result != ERR_OK) { - /* ARP request couldn't be sent */ - /* We don't re-send arp request in etharp_tmr, but we still queue packets, - since this failure could be temporary, and the next packet calling - etharp_query again could lead to sending the queued packets. */ - } - } - - /* packet given? */ - if (q != NULL) { - /* stable entry? */ - if (arp_table[i].state == ETHARP_STATE_STABLE) { - /* we have a valid IP->Ethernet address mapping */ - /* send the packet */ - result = etharp_send_ip(netif, q, srcaddr, &(arp_table[i].ethaddr)); - /* pending entry? (either just created or already pending */ - } else if (arp_table[i].state == ETHARP_STATE_PENDING) { -#if ARP_QUEUEING /* queue the given q packet */ - struct pbuf *p; - int copy_needed = 0; - /* IF q includes a PBUF_REF, PBUF_POOL or PBUF_RAM, we have no choice but - * to copy the whole queue into a new PBUF_RAM (see bug #11400) - * PBUF_ROMs can be left as they are, since ROM must not get changed. */ - p = q; - while (p) { - LWIP_ASSERT("no packet queues allowed!", (p->len != p->tot_len) || (p->next == 0)); - if(p->type != PBUF_ROM) { - copy_needed = 1; - break; - } - p = p->next; - } - if(copy_needed) { - /* copy the whole packet into new pbufs */ - p = pbuf_alloc(PBUF_RAW, p->tot_len, PBUF_RAM); - if(p != NULL) { - if (pbuf_copy(p, q) != ERR_OK) { - pbuf_free(p); - p = NULL; - } - } - } else { - /* referencing the old pbuf is enough */ - p = q; - pbuf_ref(p); - } - /* packet could be taken over? */ - if (p != NULL) { - /* queue packet ... */ - struct etharp_q_entry *new_entry; - /* allocate a new arp queue entry */ - new_entry = memp_malloc(MEMP_ARP_QUEUE); - if (new_entry != NULL) { - new_entry->next = 0; - new_entry->p = p; - if(arp_table[i].q != NULL) { - /* queue was already existent, append the new entry to the end */ - struct etharp_q_entry *r; - r = arp_table[i].q; - while (r->next != NULL) { - r = r->next; - } - r->next = new_entry; - } else { - /* queue did not exist, first item in queue */ - arp_table[i].q = new_entry; - } - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: queued packet %p on ARP entry %"S16_F"\n", (void *)q, (s16_t)i)); - result = ERR_OK; - } else { - /* the pool MEMP_ARP_QUEUE is empty */ - pbuf_free(p); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q)); - /* { result == ERR_MEM } through initialization */ - } - } else { - ETHARP_STATS_INC(etharp.memerr); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: could not queue a copy of PBUF_REF packet %p (out of memory)\n", (void *)q)); - /* { result == ERR_MEM } through initialization */ - } -#else /* ARP_QUEUEING == 0 */ - /* q && state == PENDING && ARP_QUEUEING == 0 => result = ERR_MEM */ - /* { result == ERR_MEM } through initialization */ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_query: Ethernet destination address unknown, queueing disabled, packet %p dropped\n", (void *)q)); -#endif - } - } - return result; -} - -/** - * Send a raw ARP packet (opcode and all addresses can be modified) - * - * @param netif the lwip network interface on which to send the ARP packet - * @param ethsrc_addr the source MAC address for the ethernet header - * @param ethdst_addr the destination MAC address for the ethernet header - * @param hwsrc_addr the source MAC address for the ARP protocol header - * @param ipsrc_addr the source IP address for the ARP protocol header - * @param hwdst_addr the destination MAC address for the ARP protocol header - * @param ipdst_addr the destination IP address for the ARP protocol header - * @param opcode the type of the ARP packet - * @return ERR_OK if the ARP packet has been sent - * ERR_MEM if the ARP packet couldn't be allocated - * any other err_t on failure - */ -#if !LWIP_AUTOIP -static -#endif /* LWIP_AUTOIP */ -err_t -etharp_raw(struct netif *netif, const struct eth_addr *ethsrc_addr, - const struct eth_addr *ethdst_addr, - const struct eth_addr *hwsrc_addr, const struct ip_addr *ipsrc_addr, - const struct eth_addr *hwdst_addr, const struct ip_addr *ipdst_addr, - const u16_t opcode) -{ - struct pbuf *p; - err_t result = ERR_OK; - u8_t k; /* ARP entry index */ - struct eth_hdr *ethhdr; - struct etharp_hdr *hdr; -#if LWIP_AUTOIP - const u8_t * ethdst_hwaddr; -#endif /* LWIP_AUTOIP */ - - /* allocate a pbuf for the outgoing ARP request packet */ - p = pbuf_alloc(PBUF_RAW, SIZEOF_ETHARP_PACKET, PBUF_RAM); - /* could allocate a pbuf for an ARP request? */ - if (p == NULL) { - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_LEVEL_SERIOUS, - ("etharp_raw: could not allocate pbuf for ARP request.\n")); - ETHARP_STATS_INC(etharp.memerr); - return ERR_MEM; - } - LWIP_ASSERT("check that first pbuf can hold struct etharp_hdr", - (p->len >= SIZEOF_ETHARP_PACKET)); - - ethhdr = p->payload; - hdr = (struct etharp_hdr *)((u8_t*)ethhdr + SIZEOF_ETH_HDR); - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_raw: sending raw ARP packet.\n")); - hdr->opcode = htons(opcode); - - LWIP_ASSERT("netif->hwaddr_len must be the same as ETHARP_HWADDR_LEN for etharp!", - (netif->hwaddr_len == ETHARP_HWADDR_LEN)); - k = ETHARP_HWADDR_LEN; -#if LWIP_AUTOIP - /* If we are using Link-Local, ARP packets must be broadcast on the - * link layer. (See RFC3927 Section 2.5) */ - ethdst_hwaddr = ((netif->autoip != NULL) && (netif->autoip->state != AUTOIP_STATE_OFF)) ? (u8_t*)(ethbroadcast.addr) : ethdst_addr->addr; -#endif /* LWIP_AUTOIP */ - /* Write MAC-Addresses (combined loop for both headers) */ - while(k > 0) { - k--; - /* Write the ARP MAC-Addresses */ - hdr->shwaddr.addr[k] = hwsrc_addr->addr[k]; - hdr->dhwaddr.addr[k] = hwdst_addr->addr[k]; - /* Write the Ethernet MAC-Addresses */ -#if LWIP_AUTOIP - ethhdr->dest.addr[k] = ethdst_hwaddr[k]; -#else /* LWIP_AUTOIP */ - ethhdr->dest.addr[k] = ethdst_addr->addr[k]; -#endif /* LWIP_AUTOIP */ - ethhdr->src.addr[k] = ethsrc_addr->addr[k]; - } - hdr->sipaddr = *(struct ip_addr2 *)ipsrc_addr; - hdr->dipaddr = *(struct ip_addr2 *)ipdst_addr; - - hdr->hwtype = htons(HWTYPE_ETHERNET); - hdr->proto = htons(ETHTYPE_IP); - /* set hwlen and protolen together */ - hdr->_hwlen_protolen = htons((ETHARP_HWADDR_LEN << 8) | sizeof(struct ip_addr)); - - ethhdr->type = htons(ETHTYPE_ARP); - /* send ARP query */ - result = netif->linkoutput(netif, p); - ETHARP_STATS_INC(etharp.xmit); - /* free ARP query packet */ - pbuf_free(p); - p = NULL; - /* could not allocate pbuf for ARP request */ - - return result; -} - -/** - * Send an ARP request packet asking for ipaddr. - * - * @param netif the lwip network interface on which to send the request - * @param ipaddr the IP address for which to ask - * @return ERR_OK if the request has been sent - * ERR_MEM if the ARP packet couldn't be allocated - * any other err_t on failure - */ -err_t -etharp_request(struct netif *netif, struct ip_addr *ipaddr) -{ - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, ("etharp_request: sending ARP request.\n")); - return etharp_raw(netif, (struct eth_addr *)netif->hwaddr, ðbroadcast, - (struct eth_addr *)netif->hwaddr, &netif->ip_addr, ðzero, - ipaddr, ARP_REQUEST); -} - -/** - * Process received ethernet frames. Using this function instead of directly - * calling ip_input and passing ARP frames through etharp in ethernetif_input, - * the ARP cache is protected from concurrent access. - * - * @param p the recevied packet, p->payload pointing to the ethernet header - * @param netif the network interface on which the packet was received - */ -err_t -ethernet_input(struct pbuf *p, struct netif *netif) -{ - struct eth_hdr* ethhdr; - u16_t type; - - /* points to packet payload, which starts with an Ethernet header */ - ethhdr = p->payload; - LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE, - ("ethernet_input: dest:%02x:%02x:%02x:%02x:%02x:%02x, src:%02x:%02x:%02x:%02x:%02x:%02x, type:%2hx\n", - (unsigned)ethhdr->dest.addr[0], (unsigned)ethhdr->dest.addr[1], (unsigned)ethhdr->dest.addr[2], - (unsigned)ethhdr->dest.addr[3], (unsigned)ethhdr->dest.addr[4], (unsigned)ethhdr->dest.addr[5], - (unsigned)ethhdr->src.addr[0], (unsigned)ethhdr->src.addr[1], (unsigned)ethhdr->src.addr[2], - (unsigned)ethhdr->src.addr[3], (unsigned)ethhdr->src.addr[4], (unsigned)ethhdr->src.addr[5], - (unsigned)htons(ethhdr->type))); - - type = htons(ethhdr->type); -#if ETHARP_SUPPORT_VLAN - if (type == ETHTYPE_VLAN) { - struct eth_vlan_hdr *vlan = (struct eth_vlan_hdr*)(((char*)ethhdr) + SIZEOF_ETH_HDR); -#ifdef ETHARP_VLAN_CHECK /* if not, allow all VLANs */ - if (VLAN_ID(vlan) != ETHARP_VLAN_CHECK) { - /* silently ignore this packet: not for our VLAN */ - pbuf_free(p); - return ERR_OK; - } -#endif /* ETHARP_VLAN_CHECK */ - type = htons(vlan->tpid); - } -#endif /* ETHARP_SUPPORT_VLAN */ - - switch (type) { - /* IP packet? */ - case ETHTYPE_IP: -#if ETHARP_TRUST_IP_MAC - /* update ARP table */ - etharp_ip_input(netif, p); -#endif /* ETHARP_TRUST_IP_MAC */ - /* skip Ethernet header */ - if(pbuf_header(p, -(s16_t)SIZEOF_ETH_HDR)) { - LWIP_ASSERT("Can't move over header in packet", 0); - pbuf_free(p); - p = NULL; - } else { - /* pass to IP layer */ - ip_input(p, netif); - } - break; - - case ETHTYPE_ARP: - /* pass p to ARP module */ - etharp_arp_input(netif, (struct eth_addr*)(netif->hwaddr), p); - break; - -#if PPPOE_SUPPORT - case ETHTYPE_PPPOEDISC: /* PPP Over Ethernet Discovery Stage */ - pppoe_disc_input(netif, p); - break; - - case ETHTYPE_PPPOE: /* PPP Over Ethernet Session Stage */ - pppoe_data_input(netif, p); - break; -#endif /* PPPOE_SUPPORT */ - - default: - ETHARP_STATS_INC(etharp.proterr); - ETHARP_STATS_INC(etharp.drop); - pbuf_free(p); - p = NULL; - break; - } - - /* This means the pbuf is freed or consumed, - so the caller doesn't have to free it again */ - return ERR_OK; -} -#endif /* LWIP_ARP */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/loopif.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/loopif.c deleted file mode 100644 index b7d66329495..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/netif/loopif.c +++ /dev/null @@ -1,68 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * Loop Interface - * - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#include "lwip/opt.h" - -#if LWIP_HAVE_LOOPIF - -#include "netif/loopif.h" -#include "lwip/snmp.h" - -/** - * Initialize a lwip network interface structure for a loopback interface - * - * @param netif the lwip network interface structure for this loopif - * @return ERR_OK if the loopif is initialized - * ERR_MEM if private data couldn't be allocated - */ -err_t -loopif_init(struct netif *netif) -{ - /* initialize the snmp variables and counters inside the struct netif - * ifSpeed: no assumption can be made! - */ - NETIF_INIT_SNMP(netif, snmp_ifType_softwareLoopback, 0); - - netif->name[0] = 'l'; - netif->name[1] = 'o'; - netif->output = netif_loop_output; - return ERR_OK; -} - -#endif /* LWIP_HAVE_LOOPIF */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/cc.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/cc.h deleted file mode 100644 index fc9c07df3f6..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/cc.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __ARCH_CC_H__ -#define __ARCH_CC_H__ - -/* Define platform endianness */ -#ifndef BYTE_ORDER -#define BYTE_ORDER BIG_ENDIAN -#endif /* BYTE_ORDER */ - -/* Define generic types used in lwIP */ -typedef unsigned char u8_t; -typedef signed char s8_t; -typedef unsigned short u16_t; -typedef signed short s16_t; -typedef unsigned long u32_t; -typedef signed long s32_t; - -typedef u32_t mem_ptr_t; - -/* Define (sn)printf formatters for these lwIP types */ -#define U16_F "u" -#define S16_F "d" -#define X16_F "x" -#define U32_F "u" -#define S32_F "d" -#define X32_F "x" - -/* Compiler hints for packing structures */ -#define PACK_STRUCT_FIELD(x) x -#define PACK_STRUCT_STRUCT __attribute__((packed)) -#define PACK_STRUCT_BEGIN -#define PACK_STRUCT_END - -/* Plaform specific diagnostic output */ -#ifdef CONFIG_OWL -# include -# define LWIP_PLATFORM_DIAG(x) owl_printf x -# define LWIP_PLATFORM_ASSERT(x) owl_assert(x) -#else -# include -# define LWIP_PLATFORM_DIAG(x) do { printk x; } while(0) -# define LWIP_PLATFORM_ASSERT(x) do { \ - printk("Assertion \"%s\" failed at line " \ - "%d in %s\n", \ - x, __LINE__, __FILE__); while(1); \ - } while(0) -#endif - -#endif /* __ARCH_CC_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/perf.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/perf.h deleted file mode 100644 index 49917871ed2..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/arch/perf.h +++ /dev/null @@ -1,7 +0,0 @@ -#ifndef __PERF_H__ -#define __PERF_H__ - -#define PERF_START /* null definition */ -#define PERF_STOP(x) /* null definition */ - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/lwipopts.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/lwipopts.h deleted file mode 100644 index ae4df230f54..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/lwipopts.h +++ /dev/null @@ -1,426 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * - * lwIP Options Configuration - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIPOPTS_H__ -#define __LWIPOPTS_H__ - -#include "wl_api.h" - -/* - ----------------------------------------------- - ---------- Platform specific locking ---------- - ----------------------------------------------- -*/ - -/** - * NO_SYS==1: Provides VERY minimal functionality. Otherwise, - * use lwIP facilities. - */ -#define NO_SYS 1 - - -/* - ------------------------------------ - ---------- Memory options ---------- - ------------------------------------ -*/ -/** - * MEM_ALIGNMENT: should be set to the alignment of the CPU - * 4 byte alignment -> #define MEM_ALIGNMENT 4 - * 2 byte alignment -> #define MEM_ALIGNMENT 2 - */ -#define MEM_ALIGNMENT 4 - -/** - * MEM_SIZE: the size of the heap memory. If the application will send - * a lot of data that needs to be copied, this should be set high. - */ -#define MEM_SIZE 16000 - - -/* - ------------------------------------------------ - ---------- Internal Memory Pool Sizes ---------- - ------------------------------------------------ -*/ -/** - * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF). - * If the application sends a lot of data out of ROM (or other static memory), - * this should be set high. - */ -#define MEMP_NUM_PBUF 30 - -/** - * MEMP_NUM_RAW_PCB: Number of raw connection PCBs - * (requires the LWIP_RAW option) - */ -#define MEMP_NUM_RAW_PCB 4 - -/** - * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One - * per active UDP "connection". - * (requires the LWIP_UDP option) - */ -#define MEMP_NUM_UDP_PCB 4 - -/** - * MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections. - * (requires the LWIP_TCP option) - */ -#define MEMP_NUM_TCP_PCB 2 - -/** - * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections. - * (requires the LWIP_TCP option) - */ -#define MEMP_NUM_TCP_PCB_LISTEN 2 - -/** - * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments. - * (requires the LWIP_TCP option) - */ -#define MEMP_NUM_TCP_SEG 32 - -/** - * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing - * packets (pbufs) that are waiting for an ARP request (to resolve - * their destination address) to finish. - * (requires the ARP_QUEUEING option) - */ -#define MEMP_NUM_ARP_QUEUE 2 - -/** - * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts. - * (requires NO_SYS==0) - */ -#define MEMP_NUM_SYS_TIMEOUT 0 - -/** - * MEMP_NUM_NETBUF: the number of struct netbufs. - * (only needed if you use the sequential API, like api_lib.c) - */ -#define MEMP_NUM_NETBUF 0 - -/** - * MEMP_NUM_NETCONN: the number of struct netconns. - * (only needed if you use the sequential API, like api_lib.c) - */ -#define MEMP_NUM_NETCONN 0 - -/** - * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used - * for callback/timeout API communication. - * (only needed if you use tcpip.c) - */ -#define MEMP_NUM_TCPIP_MSG_API 0 - -/** - * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used - * for incoming packets. - * (only needed if you use tcpip.c) - */ -#define MEMP_NUM_TCPIP_MSG_INPKT 0 - -/** - * PBUF_POOL_SIZE: the number of buffers in the pbuf pool. - */ -#define PBUF_POOL_SIZE 32 - -/* - --------------------------------- - ---------- ARP options ---------- - --------------------------------- -*/ -/** - * LWIP_ARP==1: Enable ARP functionality. - */ -#define LWIP_ARP 1 - -/* - -------------------------------- - ---------- IP options ---------- - -------------------------------- -*/ -/** - * IP_FORWARD==1: Enables the ability to forward IP packets across network - * interfaces. If you are going to run lwIP on a device with only one network - * interface, define this to 0. - */ -#define IP_FORWARD 0 - -/** - * IP_OPTIONS: Defines the behavior for IP options. - * IP_OPTIONS==0_ALLOWED: All packets with IP options are dropped. - * IP_OPTIONS==1_ALLOWED: IP options are allowed (but not parsed). - */ -#define IP_OPTIONS_ALLOWED 1 - -/** - * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that - * this option does not affect outgoing packet sizes, which can be controlled - * via IP_FRAG. - */ -#define IP_REASSEMBLY 1 - -/** - * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note - * that this option does not affect incoming packet sizes, which can be - * controlled via IP_REASSEMBLY. - */ -#define IP_FRAG 1 - -/** - * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally) - * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived - * in this time, the whole packet is discarded. - */ -#define IP_REASS_MAXAGE 3 - -/** - * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled. - * Since the received pbufs are enqueued, be sure to configure - * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive - * packets even if the maximum amount of fragments is enqueued for reassembly! - */ -#define IP_REASS_MAX_PBUFS 10 - -/** - * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP - * fragmentation. Otherwise pbufs are allocated and reference the original - * packet data to be fragmented. - */ -#define IP_FRAG_USES_STATIC_BUF 0 - -/** - * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers. - */ -#define IP_DEFAULT_TTL 255 - -/* - ---------------------------------- - ---------- ICMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_ICMP==1: Enable ICMP module inside the IP stack. - * Be careful, disable that make your product non-compliant to RFC1122 - */ -#define LWIP_ICMP 1 - -/** - * ICMP_TTL: Default value for Time-To-Live used by ICMP packets. - */ -#define ICMP_TTL (IP_DEFAULT_TTL) - -/* - --------------------------------- - ---------- RAW options ---------- - --------------------------------- -*/ -/** - * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. - */ -#define LWIP_RAW 1 - -/* - ---------------------------------- - ---------- DHCP options ---------- - ---------------------------------- -*/ -/** - * LWIP_DHCP==1: Enable DHCP module. - */ -#define LWIP_DHCP 1 - -/* - ------------------------------------ - ---------- AUTOIP options ---------- - ------------------------------------ -*/ -/** - * LWIP_AUTOIP==1: Enable AUTOIP module. - */ -#define LWIP_AUTOIP 0 - -/* - ---------------------------------- - ---------- SNMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP - * transport. - */ -#define LWIP_SNMP 0 -#define SNMP_PRIVATE_MIB 0 - -/* - ---------------------------------- - ---------- IGMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_IGMP==1: Turn on IGMP module. - */ -#define LWIP_IGMP 1 - -/* - ---------------------------------- - ---------- DNS options ----------- - ---------------------------------- -*/ -/** - * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS - * transport. - */ -#define LWIP_DNS 1 - -/* - --------------------------------- - ---------- UDP options ---------- - --------------------------------- -*/ -/** - * LWIP_UDP==1: Turn on UDP. - */ -#define LWIP_UDP 1 - -/** - * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP) - */ -#define LWIP_UDPLITE 0 - -/** - * UDP_TTL: Default Time-To-Live value. - */ -#define UDP_TTL (IP_DEFAULT_TTL) - -/* - --------------------------------- - ---------- TCP options ---------- - --------------------------------- -*/ -/** - * LWIP_TCP==1: Turn on TCP. - */ -#define LWIP_TCP 1 - -/* - ---------------------------------- - ---------- Pbuf options ---------- - ---------------------------------- -*/ -/** - * PBUF_LINK_HLEN: the number of bytes that should be allocated for a - * link level header. The default is 14, the standard value for - * Ethernet. - */ -#define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE) - -/* - ------------------------------------ - ---------- LOOPIF options ---------- - ------------------------------------ -*/ -/** - * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c - */ -#define LWIP_HAVE_LOOPIF 1 -#define LWIP_LOOPIF_MULTITHREADING 0 - -/* - ---------------------------------------------- - ---------- Sequential layer options ---------- - ---------------------------------------------- -*/ - -/** - * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c) - */ -#define LWIP_NETCONN 0 - -/* - ------------------------------------ - ---------- Socket options ---------- - ------------------------------------ -*/ -/** - * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c) - */ -#define LWIP_SOCKET 0 - -/* - ---------------------------------------- - ---------- Statistics options ---------- - ---------------------------------------- -*/ -/** - * LWIP_STATS==1: Enable statistics collection in lwip_stats. - */ -#define LWIP_STATS 1 -#define LINK_STATS 1 - -/* Misc */ -#define LWIP_NETIF_LINK_CALLBACK 1 -#define LWIP_NETIF_STATUS_CALLBACK 1 -#define LWIP_TIMEVAL_PRIVATE 0 - -#undef DHCP_DOES_ARP_CHECK - -#if 0 -#define LWIP_DEBUG 1 -//#define NETIF_DEBUG LWIP_DBG_ON -#define DHCP_DEBUG LWIP_DBG_ON -//#define ICMP_DEBUG LWIP_DBG_ON -//#define TCP_DEBUG LWIP_DBG_ON -//#define TCP_RTO_DEBUG LWIP_DBG_ON -//#define IP_DEBUG LWIP_DBG_ON -//#define TCP_CWND_DEBUG LWIP_DBG_ON -//#define ETHARP_DEBUG LWIP_DBG_ON -//#define PBUF_DEBUG LWIP_DBG_ON -#define TCP_INPUT_DEBUG LWIP_DBG_ON -#define TCP_OUTPUT_DEBUG LWIP_DBG_ON -#endif - -#define ETH_PAD_SIZE WL_HEADER_SIZE /* size of wifiengine header */ -#define MEM_LIBC_MALLOC 1 - -#define TCP_MSS 512 -#define TCP_SND_BUF 4096 -#endif /* __LWIPOPTS_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/netif/wlif.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/netif/wlif.h deleted file mode 100644 index 6354e1c91ba..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include/netif/wlif.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef __NETIF_NRWLANIF_H__ -#define __NETIF_NRWLANIF_H__ - -#include "lwip/netif.h" -#include "lwip/err.h" - -err_t wlif_init(struct netif *netif); -void wlif_poll(struct netif *netif); - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/netif/wlif.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/netif/wlif.c deleted file mode 100644 index 55d5b6abd83..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/netif/wlif.c +++ /dev/null @@ -1,386 +0,0 @@ -#include "lwip/opt.h" -#include "lwip/def.h" -#include "lwip/mem.h" -#include "lwip/pbuf.h" -#include "lwip/stats.h" -#include "lwip/sys.h" -#include "netif/etharp.h" -#include "netif/wlif.h" -#include -#include - -#define IFNAME0 'w' -#define IFNAME1 'l' - -/* the queue size will affect the tx performance when using power save. - * A small queue will quickly become filled up if we have to wake the device - * before the actual transmission can occur. When the queue is filled up, the - * packets will be discarded and retransmission will be handled by the upper - * layers. In case of TCP, the retransmission time might be quite long. - * - * If the packets can be put in the pqueue instead, all the packets - * (if possible) will be transmitted when the device wakes up, so we don't have - * to wait for retransmission from upper layers. - */ -#define PQUEUE_SIZE 8 - -struct wlif_t { - volatile uint8_t rx_pending; - - struct { - struct pbuf* buf[PQUEUE_SIZE]; - uint8_t first; - uint8_t last; - } pqueue; -}; - -#define PQUEUE_EMPTY(q) (q.last == q.first) -#define PQUEUE_FULL(q) ((q.last + 1) % PQUEUE_SIZE == q.first) -#define PQUEUE_FIRST(q) (q.buf[q.first]) -#define PQUEUE_DEQUEUE(q) \ - ({ \ - struct pbuf* __p = PQUEUE_FIRST(q); \ - q.first = (q.first + 1) % PQUEUE_SIZE; \ - __p; \ - }) -#define PQUEUE_ENQUEUE(q, p) \ - ({ \ - q.buf[q.last] = p; \ - q.last = (q.last + 1) % PQUEUE_SIZE; \ - }) - - -static err_t process_pqueue(struct netif* netif) -{ - struct pbuf *p; - struct pbuf *q; - int status; - struct wlif_t *priv = (struct wlif_t*) netif->state; - - /* queue empty? finished */ - if (PQUEUE_EMPTY(priv->pqueue)) - return ERR_OK; - - /* get first packet in queue */ - p = PQUEUE_FIRST(priv->pqueue); - - status = wl_process_tx( - p->payload + WL_HEADER_SIZE, /* ptr to eth hdr */ - p->len - WL_HEADER_SIZE, /* input buffer len */ - p->tot_len - WL_HEADER_SIZE, /* pkt len */ - p->payload, /* ptr to WE hdr */ - 0, /* prio */ - p); /* pkt handle */ - - /* if we fail due to power save mode, leave packet in queue and - * try again when target is awake again (upon WL_RX_EVENT_WAKEUP). - */ - if (status == WL_RESOURCES) - return ERR_IF; - - /* if we fail for another reason, just discard the packet */ - if (status != WL_SUCCESS) { - PQUEUE_DEQUEUE(priv->pqueue); - pbuf_free(p); - return ERR_IF; - } - - /* Send the data from the pbuf to the interface, one pbuf at a - * time. The size of the data in each pbuf is kept in the ->len - * variable. - */ - for (q = p; q != NULL; q = q->next) - wl_tx(q->payload, q->len); - - /* remove packet from queue and dec refcnt */ - PQUEUE_DEQUEUE(priv->pqueue); - pbuf_free(p); - - LINK_STATS_INC(link.xmit); - - /* tell caller to process next packet */ - return ERR_INPROGRESS; -} - - -/** - * Called in interrupt context when we can read more data from the mac. - * - */ -static void -rx_isr(void* ctx) -{ - struct netif *netif = ctx; - struct wlif_t *priv = (struct wlif_t*) netif->state; - priv->rx_pending = 1; -} - - -/** - * In this function, the hardware should be initialized. - * Called from wlif_init(). - * - * @param netif the already initialized lwip network interface structure - * for this ethernetif - */ -static err_t -low_level_init(struct netif *netif) -{ - /* device capabilities */ - netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | - NETIF_FLAG_IGMP; - - /* NETIF_FLAG_LINK_UP must be set only when we have an wlan assoc */ - - /* set MAC hardware address length */ - netif->hwaddr_len = ETHARP_HWADDR_LEN; - - if (wl_get_mac_addr(netif->hwaddr) != WL_SUCCESS) - return ERR_IF; - - /* maximum transfer unit */ - netif->mtu = 1500; - - return ERR_OK; -} - - -/** - * This function should do the actual transmission of the packet. The packet is - * contained in the pbuf that is passed to the function. This pbuf - * might be chained. - * - * @param netif the lwip network interface structure for this ethernetif - * @param p the MAC packet to send (e.g. IP packet including MAC addresses and - * type) - * @return ERR_OK if the packet could be sent - * an err_t value if the packet couldn't be sent - * - * @note Returning ERR_MEM here if a DMA queue of your MAC is full can lead to - * strange results. You might consider waiting for space in the DMA queue - * to become availale since the stack doesn't retry to send a packet - * dropped because of memory failure (except for the TCP timers). - */ -static err_t -low_level_output(struct netif *netif, struct pbuf *p) -{ - struct wlif_t* priv = (struct wlif_t*) netif->state; - - /* must have a linear buffer containing up to and including - * the ethernet header - */ - if (p->len < sizeof(struct eth_hdr)) - return ERR_IF; - - /* queue full? drop packet */ - if (PQUEUE_FULL(priv->pqueue)) - return ERR_INPROGRESS; /* no one seems to check this anyway */ - - /* queue packet */ - PQUEUE_ENQUEUE(priv->pqueue, p); - pbuf_ref(p); - while (process_pqueue(netif) == ERR_INPROGRESS); - return ERR_OK; /* no one seems to check this anyway */ -} - -/** - * Should allocate a pbuf and transfer the bytes of the incoming - * packet from the interface into the pbuf. - * - * @param netif the lwip network interface structure for this ethernetif - * @return a pbuf filled with the received packet (including MAC header) - * NULL on memory error - */ -static struct pbuf * -low_level_input(struct netif *netif) -{ - struct pbuf *p; - struct wlif_t *priv = (struct wlif_t*) netif->state; - - char *stripped_pkt; - size_t stripped_pkt_len; - u16_t vlan; - u8_t rx_hdr_size; - int status; - u16_t len; - - /* maximum packet length from wl_rx() */ - len = WL_MAX_PKT_LEN; - - /* We allocate a continous pbuf */ - p = pbuf_alloc(PBUF_RAW, len, PBUF_RAM); - if (p == NULL) { - LWIP_DEBUGF(NETIF_DEBUG, ("low_level_input: fail to alloc " - "pbuf of len:%"S32_F"\n", len)); - return NULL; - } - - /* Read the entire msg */ - priv->rx_pending = 0; - wl_rx(p->payload, &len); - if (len == 0) { - LWIP_DEBUGF(NETIF_DEBUG, ("low_level_input: len was 0")); - return NULL; - } - - status = wl_process_rx( - p->payload, /* input buf */ - len, /* input buf length */ - &stripped_pkt, - &stripped_pkt_len, - &vlan); - - if (status == WL_ABSORBED) { - LWIP_DEBUGF(NETIF_DEBUG, ("low_level_input: absorbed")); - pbuf_free(p); - return NULL; - } - - /* Data packet, remove padding */ - rx_hdr_size = stripped_pkt - (char*) p->payload; - pbuf_realloc(p, stripped_pkt_len + rx_hdr_size); - - LINK_STATS_INC(link.recv); - return p; -} - - -/** - * This function will be called by wlif_poll() when a packet has been received - * from the mac. Then the type of the received packet is determined and - * the appropriate input function is called. - * - * @param netif the lwip network interface structure for this ethernetif - */ -static void -wlif_input(struct netif *netif) -{ - struct eth_hdr *ethhdr; - struct pbuf *p; - - /* move received packet into a new pbuf */ - p = low_level_input(netif); - - /* no packet could be read, silently ignore this */ - if (p == NULL) - return; - - /* points to packet payload, which starts with an Ethernet header */ - ethhdr = p->payload; - switch (htons(ethhdr->type)) { - /* IP or ARP packet? */ - case ETHTYPE_IP: - case ETHTYPE_ARP: -#if PPPOE_SUPPORT - /* PPPoE packet? */ - case ETHTYPE_PPPOEDISC: - case ETHTYPE_PPPOE: -#endif /* PPPOE_SUPPORT */ - /* full packet send to tcpip_thread to process */ - if (netif->input(p, netif) != ERR_OK) { - LWIP_DEBUGF(NETIF_DEBUG, - ("wlif_input: IP input error\n")); - pbuf_free(p); - p = NULL; - } - break; - - default: - pbuf_free(p); - p = NULL; - break; - } -} - -static ssize_t pkt_read_cb(char *dst, - void *src_handle, - size_t read_len, - int offset) { - ssize_t rc; - - rc = pbuf_copy_partial((struct pbuf *)src_handle, - dst, - read_len, - offset + WL_HEADER_SIZE); - if ( 0 == rc ) { - return -1; - } - - return rc; -} - -/** - * Should be called at the beginning of the program to set up the - * network interface. It calls the function low_level_init() to do the - * actual setup of the hardware. - * - * This function should be passed as a parameter to netif_add(). - * - * @param netif the lwip network interface structure for this ethernetif - * @return ERR_OK if the loopif is initialized - * ERR_MEM if private data couldn't be allocated - * any other err_t on error - */ -err_t -wlif_init(struct netif *netif) -{ - static struct wlif_t wlif; - - LWIP_ASSERT("netif != NULL", (netif != NULL)); - -#if LWIP_NETIF_HOSTNAME - /* Initialize interface hostname */ - if ( NULL == netif->hostname ) { - netif->hostname = "wlif"; - } -#endif /* LWIP_NETIF_HOSTNAME */ - - netif->state = &wlif; - netif->name[0] = IFNAME0; - netif->name[1] = IFNAME1; - - /* We directly use etharp_output() here to save a function call. - * You can instead declare your own function an call etharp_output() - * from it if you have to do some checks before sending (e.g. if link - * is available...) */ - netif->output = etharp_output; - netif->linkoutput = low_level_output; - - wl_register_rx_isr(rx_isr, netif); - wl_register_pkt_read_cb(pkt_read_cb); - - /* initialize the hardware */ - return low_level_init(netif); -} - - -/** - * - */ -void -wlif_poll(struct netif* netif) -{ - struct wlif_t* priv = NULL; - - /* wl api forward progress */ - wl_poll(); - - if (netif) - priv = (struct wlif_t*) netif->state; - - /* wlif_init() not called yet? */ - if (priv == NULL) - return; - - /* no packets pending? */ - if (!priv->rx_pending) - return; - - /* read the pending packet */ - wlif_input(netif); - - /* send any packets that was queued due to filled up target queue - * or power save mode. - */ - process_pqueue(netif); -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/readme.txt b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/readme.txt deleted file mode 100644 index c95f30e7222..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/readme.txt +++ /dev/null @@ -1 +0,0 @@ -This directory is specific to the WIFI H&D SPB104 components (\COMPONENTS\WIFI\HD_SPB104). diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c deleted file mode 100644 index 09790c259c9..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c +++ /dev/null @@ -1,571 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Abstraction layer for memory interfaces. - * - * This module contains the interfaces: - * - MEM <-> USB; - * - MEM <-> RAM; - * - MEM <-> MEM. - * - * This module may be configured and expanded to support the following features: - * - write-protected globals; - * - password-protected data; - * - specific features; - * - etc. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -//_____ I N C L U D E S ____________________________________________________ - -#include "compiler.h" -#include "preprocessor.h" -#ifdef FREERTOS_USED -#include "FreeRTOS.h" -#include "semphr.h" -#endif -#include "ctrl_access.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -#ifdef FREERTOS_USED - -/*! \name LUN Access Protection Macros - */ -//! @{ - -/*! \brief Locks accesses to LUNs. - * - * \return \c TRUE if the access was successfully locked, else \c FALSE. - */ -#define Ctrl_access_lock() ctrl_access_lock() - -/*! \brief Unlocks accesses to LUNs. - */ -#define Ctrl_access_unlock() xSemaphoreGive(ctrl_access_semphr) - -//! @} - -//! Handle to the semaphore protecting accesses to LUNs. -static xSemaphoreHandle ctrl_access_semphr = NULL; - -#else - -/*! \name LUN Access Protection Macros - */ -//! @{ - -/*! \brief Locks accesses to LUNs. - * - * \return \c TRUE if the access was successfully locked, else \c FALSE. - */ -#define Ctrl_access_lock() TRUE - -/*! \brief Unlocks accesses to LUNs. - */ -#define Ctrl_access_unlock() - -//! @} - -#endif // FREERTOS_USED - - -#if MAX_LUN - -/*! \brief Initializes an entry of the LUN descriptor table. - * - * \param lun Logical Unit Number. - * - * \return LUN descriptor table entry initializer. - */ -#if ACCESS_USB == ENABLED && ACCESS_MEM_TO_RAM == ENABLED -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(Lun_, lun, _usb_read_10),\ - TPASTE3(Lun_, lun, _usb_write_10),\ - TPASTE3(Lun_, lun, _mem_2_ram),\ - TPASTE3(Lun_, lun, _ram_2_mem),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#elif ACCESS_USB == ENABLED -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(Lun_, lun, _usb_read_10),\ - TPASTE3(Lun_, lun, _usb_write_10),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#elif ACCESS_MEM_TO_RAM == ENABLED -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(Lun_, lun, _mem_2_ram),\ - TPASTE3(Lun_, lun, _ram_2_mem),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#else -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#endif - -//! LUN descriptor table. -static const struct -{ - Ctrl_status (*test_unit_ready)(void); - Ctrl_status (*read_capacity)(U32 *); - Bool (*wr_protect)(void); - Bool (*removal)(void); -#if ACCESS_USB == ENABLED - Ctrl_status (*usb_read_10)(U32, U16); - Ctrl_status (*usb_write_10)(U32, U16); -#endif -#if ACCESS_MEM_TO_RAM == ENABLED - Ctrl_status (*mem_2_ram)(U32, void *); - Ctrl_status (*ram_2_mem)(U32, const void *); -#endif - const char *name; -} lun_desc[MAX_LUN] = -{ -#if LUN_0 == ENABLE - Lun_desc_entry(0), -#endif -#if LUN_1 == ENABLE - Lun_desc_entry(1), -#endif -#if LUN_2 == ENABLE - Lun_desc_entry(2), -#endif -#if LUN_3 == ENABLE - Lun_desc_entry(3), -#endif -#if LUN_4 == ENABLE - Lun_desc_entry(4), -#endif -#if LUN_5 == ENABLE - Lun_desc_entry(5), -#endif -#if LUN_6 == ENABLE - Lun_desc_entry(6), -#endif -#if LUN_7 == ENABLE - Lun_desc_entry(7) -#endif -}; - -#endif - - -#if GLOBAL_WR_PROTECT == ENABLED -Bool g_wr_protect; -#endif - - -/*! \name Control Interface - */ -//! @{ - - -#ifdef FREERTOS_USED - -Bool ctrl_access_init(void) -{ - // If the handle to the protecting semaphore is not valid, - if (!ctrl_access_semphr) - { - // try to create the semaphore. - vSemaphoreCreateBinary(ctrl_access_semphr); - - // If the semaphore could not be created, there is no backup solution. - if (!ctrl_access_semphr) return FALSE; - } - - return TRUE; -} - - -/*! \brief Locks accesses to LUNs. - * - * \return \c TRUE if the access was successfully locked, else \c FALSE. - */ -static Bool ctrl_access_lock(void) -{ - // If the semaphore could not be created, there is no backup solution. - if (!ctrl_access_semphr) return FALSE; - - // Wait for the semaphore. - while (!xSemaphoreTake(ctrl_access_semphr, portMAX_DELAY)); - - return TRUE; -} - -#endif // FREERTOS_USED - - -U8 get_nb_lun(void) -{ -#if MEM_USB == ENABLE - U8 nb_lun; - - if (!Ctrl_access_lock()) return MAX_LUN; - - nb_lun = MAX_LUN + host_get_lun(); - - Ctrl_access_unlock(); - - return nb_lun; -#else - return MAX_LUN; -#endif -} - - -U8 get_cur_lun(void) -{ - return LUN_ID_0; -} - - -Ctrl_status mem_test_unit_ready(U8 lun) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].test_unit_ready() : -#endif -#if LUN_USB == ENABLE - Lun_usb_test_unit_ready(lun - LUN_ID_USB); -#else - CTRL_FAIL; -#endif - - Ctrl_access_unlock(); - - return status; -} - - -Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].read_capacity(u32_nb_sector) : -#endif -#if LUN_USB == ENABLE - Lun_usb_read_capacity(lun - LUN_ID_USB, u32_nb_sector); -#else - CTRL_FAIL; -#endif - - Ctrl_access_unlock(); - - return status; -} - - -U8 mem_sector_size(U8 lun) -{ - U8 sector_size; - - if (!Ctrl_access_lock()) return 0; - - sector_size = -#if MAX_LUN - (lun < MAX_LUN) ? 1 : -#endif -#if LUN_USB == ENABLE - Lun_usb_read_sector_size(lun - LUN_ID_USB); -#else - 0; -#endif - - Ctrl_access_unlock(); - - return sector_size; -} - - -Bool mem_wr_protect(U8 lun) -{ - Bool wr_protect; - - if (!Ctrl_access_lock()) return TRUE; - - wr_protect = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].wr_protect() : -#endif -#if LUN_USB == ENABLE - Lun_usb_wr_protect(lun - LUN_ID_USB); -#else - TRUE; -#endif - - Ctrl_access_unlock(); - - return wr_protect; -} - - -Bool mem_removal(U8 lun) -{ - Bool removal; - - if (!Ctrl_access_lock()) return TRUE; - - removal = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].removal() : -#endif -#if LUN_USB == ENABLE - Lun_usb_removal(); -#else - TRUE; -#endif - - Ctrl_access_unlock(); - - return removal; -} - - -const char *mem_name(U8 lun) -{ - return -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].name : -#endif -#if LUN_USB == ENABLE - LUN_USB_NAME; -#else - NULL; -#endif -} - - -//! @} - - -#if ACCESS_USB == ENABLED - -/*! \name MEM <-> USB Interface - */ -//! @{ - - -Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_read_action(nb_sector); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].usb_read_10(addr, nb_sector) : -#endif - CTRL_FAIL; - memory_stop_read_action(); - - Ctrl_access_unlock(); - - return status; -} - - -Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_write_action(nb_sector); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].usb_write_10(addr, nb_sector) : -#endif - CTRL_FAIL; - memory_stop_write_action(); - - Ctrl_access_unlock(); - - return status; -} - - -//! @} - -#endif // ACCESS_USB == ENABLED - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - - -Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_read_action(1); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].mem_2_ram(addr, ram) : -#endif -#if LUN_USB == ENABLE - Lun_usb_mem_2_ram(addr, ram); -#else - CTRL_FAIL; -#endif - memory_stop_read_action(); - - Ctrl_access_unlock(); - - return status; -} - - -Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_write_action(1); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].ram_2_mem(addr, ram) : -#endif -#if LUN_USB == ENABLE - Lun_usb_ram_2_mem(addr, ram); -#else - CTRL_FAIL; -#endif - memory_stop_write_action(); - - Ctrl_access_unlock(); - - return status; -} - - -//! @} - -#endif // ACCESS_MEM_TO_RAM == ENABLED - - -#if ACCESS_STREAM == ENABLED - -/*! \name Streaming MEM <-> MEM Interface - */ -//! @{ - - - #if ACCESS_MEM_TO_MEM == ENABLED - -#include "fat.h" - -Ctrl_status stream_mem_to_mem(U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_addr, U16 nb_sector) -{ -#if (defined __GNUC__) && (defined __AVR32__) - __attribute__((__aligned__(4))) -#elif (defined __ICCAVR32__) - #pragma data_alignment = 4 -#endif - static U8 sector_buf[FS_512B]; - Ctrl_status status = CTRL_GOOD; - - while (nb_sector--) - { - if ((status = memory_2_ram(src_lun, src_addr++, sector_buf)) != CTRL_GOOD) break; - if ((status = ram_2_memory(dest_lun, dest_addr++, sector_buf)) != CTRL_GOOD) break; - } - - return status; -} - - #endif // ACCESS_MEM_TO_MEM == ENABLED - - -Ctrl_status stream_state(U8 id) -{ - return CTRL_GOOD; -} - - -U16 stream_stop(U8 id) -{ - return 0; -} - - -//! @} - -#endif // ACCESS_STREAM == ENABLED diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h deleted file mode 100644 index 358bf65897c..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h +++ /dev/null @@ -1,369 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Abstraction layer for memory interfaces. - * - * This module contains the interfaces: - * - MEM <-> USB; - * - MEM <-> RAM; - * - MEM <-> MEM. - * - * This module may be configured and expanded to support the following features: - * - write-protected globals; - * - password-protected data; - * - specific features; - * - etc. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _CTRL_ACCESS_H_ -#define _CTRL_ACCESS_H_ - -#include "compiler.h" -#include "conf_access.h" - - -//! Status returned by CTRL_ACCESS interfaces. -typedef enum -{ - CTRL_GOOD = PASS, //!< Success, memory ready. - CTRL_FAIL = FAIL, //!< An error occurred. - CTRL_NO_PRESENT = FAIL + 1, //!< Memory unplugged. - CTRL_BUSY = FAIL + 2 //!< Memory not initialized or changed. -} Ctrl_status; - - -// FYI: Each Logical Unit Number (LUN) corresponds to a memory. - -// Check LUN defines. -#ifndef LUN_0 - #error LUN_0 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_1 - #error LUN_1 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_2 - #error LUN_2 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_3 - #error LUN_3 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_4 - #error LUN_4 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_5 - #error LUN_5 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_6 - #error LUN_6 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_7 - #error LUN_7 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_USB - #error LUN_USB must be defined as ENABLE or DISABLE in conf_access.h -#endif - -/*! \name LUN IDs - */ -//! @{ -#define LUN_ID_0 (0) //!< First static LUN. -#define LUN_ID_1 (LUN_ID_0 + LUN_0) -#define LUN_ID_2 (LUN_ID_1 + LUN_1) -#define LUN_ID_3 (LUN_ID_2 + LUN_2) -#define LUN_ID_4 (LUN_ID_3 + LUN_3) -#define LUN_ID_5 (LUN_ID_4 + LUN_4) -#define LUN_ID_6 (LUN_ID_5 + LUN_5) -#define LUN_ID_7 (LUN_ID_6 + LUN_6) -#define MAX_LUN (LUN_ID_7 + LUN_7) //!< Number of static LUNs. -#define LUN_ID_USB (MAX_LUN) //!< First dynamic LUN (USB host mass storage). -//! @} - - -// Include LUN header files. -#if LUN_0 == ENABLE - #include LUN_0_INCLUDE -#endif -#if LUN_1 == ENABLE - #include LUN_1_INCLUDE -#endif -#if LUN_2 == ENABLE - #include LUN_2_INCLUDE -#endif -#if LUN_3 == ENABLE - #include LUN_3_INCLUDE -#endif -#if LUN_4 == ENABLE - #include LUN_4_INCLUDE -#endif -#if LUN_5 == ENABLE - #include LUN_5_INCLUDE -#endif -#if LUN_6 == ENABLE - #include LUN_6_INCLUDE -#endif -#if LUN_7 == ENABLE - #include LUN_7_INCLUDE -#endif -#if LUN_USB == ENABLE - #include LUN_USB_INCLUDE -#endif - - -// Check the configuration of write protection in conf_access.h. -#ifndef GLOBAL_WR_PROTECT - #error GLOBAL_WR_PROTECT must be defined as ENABLED or DISABLED in conf_access.h -#endif - - -#if GLOBAL_WR_PROTECT == ENABLED - -//! Write protect. -extern Bool g_wr_protect; - -#endif - - -/*! \name Control Interface - */ -//! @{ - -#ifdef FREERTOS_USED - -/*! \brief Initializes the LUN access locker. - * - * \return \c TRUE if the locker was successfully initialized, else \c FALSE. - */ -extern Bool ctrl_access_init(void); - -#endif // FREERTOS_USED - -/*! \brief Returns the number of LUNs. - * - * \return Number of LUNs in the system. - */ -extern U8 get_nb_lun(void); - -/*! \brief Returns the current LUN. - * - * \return Current LUN. - * - * \todo Implement. - */ -extern U8 get_cur_lun(void); - -/*! \brief Tests the memory state and initializes the memory if required. - * - * The TEST UNIT READY SCSI primary command allows an application client to poll - * a LUN until it is ready without having to allocate memory for returned data. - * - * This command may be used to check the media status of LUNs with removable - * media. - * - * \param lun Logical Unit Number. - * - * \return Status. - */ -extern Ctrl_status mem_test_unit_ready(U8 lun); - -/*! \brief Returns the address of the last valid sector (512 bytes) in the - * memory. - * - * \param lun Logical Unit Number. - * \param u32_nb_sector Pointer to the address of the last valid sector. - * - * \return Status. - */ -extern Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector); - -/*! \brief Returns the size of the physical sector. - * - * \param lun Logical Unit Number. - * - * \return Sector size (unit: 512 bytes). - */ -extern U8 mem_sector_size(U8 lun); - -/*! \brief Returns the write-protection state of the memory. - * - * \param lun Logical Unit Number. - * - * \return \c TRUE if the memory is write-protected, else \c FALSE. - * - * \note Only used by removable memories with hardware-specific write - * protection. - */ -extern Bool mem_wr_protect(U8 lun); - -/*! \brief Tells whether the memory is removable. - * - * \param lun Logical Unit Number. - * - * \return \c TRUE if the memory is removable, else \c FALSE. - */ -extern Bool mem_removal(U8 lun); - -/*! \brief Returns a pointer to the LUN name. - * - * \param lun Logical Unit Number. - * - * \return Pointer to the LUN name string. - */ -extern const char *mem_name(U8 lun); - -//! @} - - -#if ACCESS_USB == ENABLED - -/*! \name MEM <-> USB Interface - */ -//! @{ - -/*! \brief Tranfers data from the memory to USB. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to read. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector); - -/*! \brief Tranfers data from USB to the memory. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to write. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector); - -//! @} - -#endif // ACCESS_USB == ENABLED - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - -/*! \brief Copies 1 data sector from the memory to RAM. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to read. - * \param ram Pointer to RAM buffer to write. - * - * \return Status. - */ -extern Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram); - -/*! \brief Copies 1 data sector from RAM to the memory. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to write. - * \param ram Pointer to RAM buffer to read. - * - * \return Status. - */ -extern Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram); - -//! @} - -#endif // ACCESS_MEM_TO_RAM == ENABLED - - -#if ACCESS_STREAM == ENABLED - -/*! \name Streaming MEM <-> MEM Interface - */ -//! @{ - -//! Erroneous streaming data transfer ID. -#define ID_STREAM_ERR 0xFF - - #if ACCESS_MEM_TO_MEM == ENABLED - -/*! \brief Copies data from one memory to another. - * - * \param src_lun Source Logical Unit Number. - * \param src_addr Source address of first memory sector to read. - * \param dest_lun Destination Logical Unit Number. - * \param dest_addr Destination address of first memory sector to write. - * \param nb_sector Number of sectors to copy. - * - * \return Status. - */ -extern Ctrl_status stream_mem_to_mem(U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_addr, U16 nb_sector); - - #endif // ACCESS_MEM_TO_MEM == ENABLED - -/*! \brief Returns the state of a streaming data transfer. - * - * \param id Transfer ID. - * - * \return Status. - * - * \todo Implement. - */ -extern Ctrl_status stream_state(U8 id); - -/*! \brief Stops a streaming data transfer. - * - * \param id Transfer ID. - * - * \return Number of remaining sectors. - * - * \todo Implement. - */ -extern U16 stream_stop(U8 id); - -//! @} - -#endif // ACCESS_STREAM == ENABLED - - -#endif // _CTRL_ACCESS_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c deleted file mode 100644 index fe8a2a0d8bc..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c +++ /dev/null @@ -1,133 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Macros and functions dedicated to debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "compiler.h" -#include "debug.h" -#include "util.h" - - -#if (defined __GNUC__) -# include "malloc.h" - -U32 get_heap_curr_used_size( void ) -{ - struct mallinfo my_info=mallinfo(); - return my_info.uordblks; -} - -U32 get_heap_total_used_size( void ) -{ - struct mallinfo my_info=mallinfo(); - return my_info.arena; -} -#endif - -U32 get_heap_free_size( void ) -{ - U32 high_mark= AVR32_SRAM_SIZE; - U32 low_mark = 0; - U32 size ; - void* p_mem; - - size = (high_mark + low_mark)/2; - - do - { - p_mem = malloc(size); - if( p_mem != NULL) - { // Can allocate memory - free(p_mem); - low_mark = size; - } - else - { // Can not allocate memory - high_mark = size; - } - - size = (high_mark + low_mark)/2; - } - while( (high_mark-low_mark) >1 ); - - return size; -} - -static void* round_trace_pbuf; -static U32 round_trace_size; - -void uc3_round_trace_init(void* buf, U32 size) -{ - round_trace_pbuf = buf; - (*(U32*)round_trace_pbuf)=(U32)buf+4; - round_trace_size = size; -} - -void uc3_round_trace(U32 val) -{ - //Disable_global_interrupt(); - - U32* p_wr = (U32*)(*(U32*)round_trace_pbuf); - *p_wr = val; - p_wr++; - if( ((U32)p_wr % round_trace_size) ==0 ) - p_wr= (U32*)round_trace_pbuf+1; - *p_wr = 0xdeadbeef; - *(U32*)round_trace_pbuf = (U32)p_wr; - - //Enable_global_interrupt(); -} - -void dump(char* _buf, uint16_t _count) { - - int i; - for (i = 0; i < _count; ++i) - { - printk("0x%x ", _buf[i]); - if ((i!=0)&&(i % 10 == 0)) - printk("\n\t"); - } - printk("\n"); -} - diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h deleted file mode 100644 index a832d7c9c0a..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h +++ /dev/null @@ -1,116 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Macros and functions dedicated to debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _DEBUG_H_ -#define _DEBUG_H_ - -#include "stringz.h" - -/*! \brief These macros are used to add traces memory. - * - * First, initialise the trace with Uc3_trace_init(pointer), giving the start address - * of the memory location where will be stored the trace. - * Use Uc3_trace(something) to store "something" into the memory. The end of the trace - * is signaled by the "0xdeadbeef" pattern. - */ -#define Uc3_trace_init(debug_addr) \ - *(U32*)(debug_addr)=debug_addr+4 - -#define Uc3_trace(debug_addr, x) \ - *(U32*)(*(U32*)(debug_addr) ) = (U32)(x) ;\ - *(U32*)(*(U32*)(debug_addr)+4) = 0xdeadbeef ;\ - *(U32*)(debug_addr ) = *(U32*)(debug_addr)+4 - -/*! \brief This macro is used to insert labels into assembly output. - * - */ -#define Insert_label(name) \ - __asm__ __volatile__ (STRINGZ(name)":"); - -#if (defined __GNUC__) -/*! \brief Returns the number of total of used bytes allocated from the HEAP. - * - * \retval total number of used bytes. - */ -U32 get_heap_total_used_size( void ); - -/*! \brief Returns the number of bytes currently used from the HEAP. - * - * \retval total number of used bytes. - */ -U32 get_heap_curr_used_size( void ); -#endif - -/*! \brief Returns the number of free bytes in the HEAP. - * - * This funtion tries to allocate the maximum number of bytes by dichotomical method. - * - * \retval number of free bytes. - */ -extern U32 get_heap_free_size( void ); - -/*! \name Traces function using a round buffer - */ -//! @{ - -/*! \brief Initialize the trace using a round buffer. - * - * \param buf Base address of the buffer used for the trace. - * \param size Size of the round buffer. Must be a power of 2. - */ -void uc3_round_trace_init(void* buf, U32 size); - -/*! \brief Trace a data in the round buffer. - * - * The end of the trace is signaled by the "0xdeadbeef" pattern. - * \param val Data to trace; - */ -void uc3_round_trace(U32 val); - -//! @} - - -#endif // _DEBUG_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c deleted file mode 100644 index 99e9274662f..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c +++ /dev/null @@ -1,215 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Strings and integers print module for debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "compiler.h" -#include "gpio.h" -#include "usart.h" -#include "print_funcs.h" - - -//! ASCII representation of hexadecimal digits. -static const char HEX_DIGITS[16] = "0123456789ABCDEF"; - - -void init_dbg_rs232(long pba_hz) -{ - init_dbg_rs232_ex(DBG_USART_BAUDRATE, pba_hz); -} - - -void init_dbg_rs232_ex(unsigned long baudrate, long pba_hz) -{ - static const gpio_map_t DBG_USART_GPIO_MAP = - { - {DBG_USART_RX_PIN, DBG_USART_RX_FUNCTION}, - {DBG_USART_TX_PIN, DBG_USART_TX_FUNCTION} - }; - - // Options for debug USART. - usart_options_t dbg_usart_options = - { - .baudrate = baudrate, - .charlength = 8, - .paritytype = USART_NO_PARITY, - .stopbits = USART_1_STOPBIT, - .channelmode = USART_NORMAL_CHMODE - }; - - // Setup GPIO for debug USART. - gpio_enable_module(DBG_USART_GPIO_MAP, - sizeof(DBG_USART_GPIO_MAP) / sizeof(DBG_USART_GPIO_MAP[0])); - - // Initialize it in RS232 mode. - usart_init_rs232(DBG_USART, &dbg_usart_options, pba_hz); -} - - -void print_dbg(const char *str) -{ - // Redirection to the debug USART. - print(DBG_USART, str); -} - - -void print_dbg_char(int c) -{ - // Redirection to the debug USART. - print_char(DBG_USART, c); -} - - -void print_dbg_ulong(unsigned long n) -{ - // Redirection to the debug USART. - print_ulong(DBG_USART, n); -} - - -void print_dbg_char_hex(unsigned char n) -{ - // Redirection to the debug USART. - print_char_hex(DBG_USART, n); -} - - -void print_dbg_short_hex(unsigned short n) -{ - // Redirection to the debug USART. - print_short_hex(DBG_USART, n); -} - - -void print_dbg_hex(unsigned long n) -{ - // Redirection to the debug USART. - print_hex(DBG_USART, n); -} - - -void print(volatile avr32_usart_t *usart, const char *str) -{ - // Invoke the USART driver to transmit the input string with the given USART. - usart_write_line(usart, str); -} - - -void print_char(volatile avr32_usart_t *usart, int c) -{ - // Invoke the USART driver to transmit the input character with the given USART. - usart_putchar(usart, c); -} - - -void print_ulong(volatile avr32_usart_t *usart, unsigned long n) -{ - char tmp[11]; - int i = sizeof(tmp) - 1; - - // Convert the given number to an ASCII decimal representation. - tmp[i] = '\0'; - do - { - tmp[--i] = '0' + n % 10; - n /= 10; - } while (n); - - // Transmit the resulting string with the given USART. - print(usart, tmp + i); -} - - -void print_char_hex(volatile avr32_usart_t *usart, unsigned char n) -{ - char tmp[3]; - int i; - - // Convert the given number to an ASCII hexadecimal representation. - tmp[2] = '\0'; - for (i = 1; i >= 0; i--) - { - tmp[i] = HEX_DIGITS[n & 0xF]; - n >>= 4; - } - - // Transmit the resulting string with the given USART. - print(usart, tmp); -} - - -void print_short_hex(volatile avr32_usart_t *usart, unsigned short n) -{ - char tmp[5]; - int i; - - // Convert the given number to an ASCII hexadecimal representation. - tmp[4] = '\0'; - for (i = 3; i >= 0; i--) - { - tmp[i] = HEX_DIGITS[n & 0xF]; - n >>= 4; - } - - // Transmit the resulting string with the given USART. - print(usart, tmp); -} - - -void print_hex(volatile avr32_usart_t *usart, unsigned long n) -{ - char tmp[9]; - int i; - - // Convert the given number to an ASCII hexadecimal representation. - tmp[8] = '\0'; - for (i = 7; i >= 0; i--) - { - tmp[i] = HEX_DIGITS[n & 0xF]; - n >>= 4; - } - - // Transmit the resulting string with the given USART. - print(usart, tmp); -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h deleted file mode 100644 index 38f931dc245..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h +++ /dev/null @@ -1,294 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Strings and integers print module for debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _PRINT_FUNCS_H_ -#define _PRINT_FUNCS_H_ - -#include -#include "board.h" - - -/*! \name USART Settings for the Debug Module - */ -//! @{ -#if BOARD == EVK1100 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == EVK1101 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == UC3C_EK -# define DBG_USART (&AVR32_USART2) -# define DBG_USART_RX_PIN AVR32_USART2_RXD_0_1_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART2_RXD_0_1_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART2_TXD_0_1_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART2_TXD_0_1_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == EVK1104 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == EVK1105 -# define DBG_USART (&AVR32_USART0) -# define DBG_USART_RX_PIN AVR32_USART0_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART0_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == STK1000 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_FUNCTION -# define DBG_USART_BAUDRATE 115200 -#elif BOARD == NGW100 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_FUNCTION -# define DBG_USART_BAUDRATE 115200 -#elif BOARD == STK600_RCUC3L0 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_1_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_1_FUNCTION -// For the RX pin, connect STK600.PORTE.PE3 to STK600.RS232 SPARE.RXD -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_1_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_1_FUNCTION -// For the TX pin, connect STK600.PORTE.PE2 to STK600.RS232 SPARE.TXD -# define DBG_USART_BAUDRATE 57600 -# define DBG_USART_CLOCK_MASK AVR32_USART1_CLK_PBA -#elif BOARD == UC3L_EK -# define DBG_USART (&AVR32_USART3) -# define DBG_USART_RX_PIN AVR32_USART3_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART3_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART3_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART3_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -# define DBG_USART_CLOCK_MASK AVR32_USART3_CLK_PBA -#elif BOARD == ARDUINO -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -# define DBG_USART_CLOCK_MASK AVR32_USART1_CLK_PBA -#endif - -#if !defined(DBG_USART) || \ - !defined(DBG_USART_RX_PIN) || \ - !defined(DBG_USART_RX_FUNCTION) || \ - !defined(DBG_USART_TX_PIN) || \ - !defined(DBG_USART_TX_FUNCTION) || \ - !defined(DBG_USART_BAUDRATE) -# error The USART configuration to use for debug on your board is missing -#endif -//! @} - -/*! \name VT100 Common Commands - */ -//! @{ -#define CLEARSCR "\x1B[2J\x1B[;H" //!< Clear screen. -#define CLEAREOL "\x1B[K" //!< Clear end of line. -#define CLEAREOS "\x1B[J" //!< Clear end of screen. -#define CLEARLCR "\x1B[0K" //!< Clear line cursor right. -#define CLEARLCL "\x1B[1K" //!< Clear line cursor left. -#define CLEARELN "\x1B[2K" //!< Clear entire line. -#define CLEARCDW "\x1B[0J" //!< Clear cursor down. -#define CLEARCUP "\x1B[1J" //!< Clear cursor up. -#define GOTOYX "\x1B[%.2d;%.2dH" //!< Set cursor to (y, x). -#define INSERTMOD "\x1B[4h" //!< Insert mode. -#define OVERWRITEMOD "\x1B[4l" //!< Overwrite mode. -#define DELAFCURSOR "\x1B[K" //!< Erase from cursor to end of line. -#define CRLF "\r\n" //!< Carriage Return + Line Feed. -//! @} - -/*! \name VT100 Cursor Commands - */ -//! @{ -#define CURSON "\x1B[?25h" //!< Show cursor. -#define CURSOFF "\x1B[?25l" //!< Hide cursor. -//! @} - -/*! \name VT100 Character Commands - */ -//! @{ -#define NORMAL "\x1B[0m" //!< Normal. -#define BOLD "\x1B[1m" //!< Bold. -#define UNDERLINE "\x1B[4m" //!< Underline. -#define BLINKING "\x1B[5m" //!< Blink. -#define INVVIDEO "\x1B[7m" //!< Inverse video. -//! @} - -/*! \name VT100 Color Commands - */ -//! @{ -#define CL_BLACK "\033[22;30m" //!< Black. -#define CL_RED "\033[22;31m" //!< Red. -#define CL_GREEN "\033[22;32m" //!< Green. -#define CL_BROWN "\033[22;33m" //!< Brown. -#define CL_BLUE "\033[22;34m" //!< Blue. -#define CL_MAGENTA "\033[22;35m" //!< Magenta. -#define CL_CYAN "\033[22;36m" //!< Cyan. -#define CL_GRAY "\033[22;37m" //!< Gray. -#define CL_DARKGRAY "\033[01;30m" //!< Dark gray. -#define CL_LIGHTRED "\033[01;31m" //!< Light red. -#define CL_LIGHTGREEN "\033[01;32m" //!< Light green. -#define CL_YELLOW "\033[01;33m" //!< Yellow. -#define CL_LIGHTBLUE "\033[01;34m" //!< Light blue. -#define CL_LIGHTMAGENTA "\033[01;35m" //!< Light magenta. -#define CL_LIGHTCYAN "\033[01;36m" //!< Light cyan. -#define CL_WHITE "\033[01;37m" //!< White. -//! @} - - -/*! \brief Sets up DBG_USART with 8N1 at DBG_USART_BAUDRATE. - * - * \param pba_hz PBA clock frequency (Hz). - */ -extern void init_dbg_rs232(long pba_hz); - -/*! \brief Sets up DBG_USART with 8N1 at a given baud rate. - * - * \param baudrate Baud rate to set DBG_USART to. - * \param pba_hz PBA clock frequency (Hz). - */ -extern void init_dbg_rs232_ex(unsigned long baudrate, long pba_hz); - -/*! \brief Prints a string of characters to DBG_USART. - * - * \param str The string of characters to print. - */ -extern void print_dbg(const char *str); - -/*! \brief Prints a character to DBG_USART. - * - * \param c The character to print. - */ -extern void print_dbg_char(int c); - -/*! \brief Prints an integer to DBG_USART in a decimal representation. - * - * \param n The integer to print. - */ -extern void print_dbg_ulong(unsigned long n); - -/*! \brief Prints a char to DBG_USART in an hexadecimal representation. - * - * \param n The char to print. - */ -extern void print_dbg_char_hex(unsigned char n); - -/*! \brief Prints a short integer to DBG_USART in an hexadecimal representation. - * - * \param n The short integer to print. - */ -extern void print_dbg_short_hex(unsigned short n); - -/*! \brief Prints an integer to DBG_USART in an hexadecimal representation. - * - * \param n The integer to print. - */ -extern void print_dbg_hex(unsigned long n); - -/*! \brief Prints a string of characters to a given USART. - * - * \param usart Base address of the USART instance to print to. - * \param str The string of characters to print. - */ -extern void print(volatile avr32_usart_t *usart, const char *str); - -/*! \brief Prints a character to a given USART. - * - * \param usart Base address of the USART instance to print to. - * \param c The character to print. - */ -extern void print_char(volatile avr32_usart_t *usart, int c); - -/*! \brief Prints an integer to a given USART in a decimal representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The integer to print. - */ -extern void print_ulong(volatile avr32_usart_t *usart, unsigned long n); - -/*! \brief Prints a char to a given USART in an hexadecimal representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The char to print. - */ -extern void print_char_hex(volatile avr32_usart_t *usart, unsigned char n); - -/*! \brief Prints a short integer to a given USART in an hexadecimal - * representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The short integer to print. - */ -extern void print_short_hex(volatile avr32_usart_t *usart, unsigned short n); - -/*! \brief Prints an integer to a given USART in an hexadecimal representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The integer to print. - */ -extern void print_hex(volatile avr32_usart_t *usart, unsigned long n); - - -#endif // _PRINT_FUNCS_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h deleted file mode 100644 index e3ebea7a1a4..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h +++ /dev/null @@ -1,63 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS CPU include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_CPU_H__ -#define __AVR32_NEWLIB_ADDONS_CPU_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -#define CPU_HZ get_cpu_hz() - -void udelay(unsigned long usec); -void set_cpu_hz(unsigned int clk_hz); -unsigned int get_cpu_hz(); - -_END_STD_C - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h deleted file mode 100644 index 31caf13044c..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h +++ /dev/null @@ -1,120 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS exceptions include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_EXCEPTIONS_H__ -#define __AVR32_NEWLIB_ADDONS_EXCEPTIONS_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -/* - Exception vector offsets -*/ -#define EVBA_UNRECOVERABLE 0x000 -#define EVBA_TLB_MULTIPLE 0x004 -#define EVBA_BUS_ERROR_DATA 0x008 -#define EVBA_BUS_ERROR_INSTR 0x00C -#define EVBA_NMI 0x010 -#define EVBA_INSTR_ADDR 0x014 -#define EVBA_ITLB_MISS 0x050 -#define EVBA_ITLB_PROT 0x018 -#define EVBA_BREAKPOINT 0x01C -#define EVBA_ILLEGAL_OPCODE 0x020 -#define EVBA_UNIMPLEMENTED 0x024 -#define EVBA_PRIVILEGE_VIOL 0x028 -#define EVBA_FLOATING_POINT 0x02C -#define EVBA_COP_ABSENT 0x030 -#define EVBA_SCALL 0x100 -#define EVBA_DATA_ADDR_R 0x034 -#define EVBA_DATA_ADDR_W 0x038 -#define EVBA_DTLB_MISS_R 0x060 -#define EVBA_DTLB_MISS_W 0x070 -#define EVBA_DTLB_PROT_R 0x03C -#define EVBA_DTLB_PROT_W 0x040 -#define EVBA_DTLB_MODIFIED 0x044 - - -/* - Define the form of the function used when registering exceptions. - The function should return the address which the exception should - return to after the exception processing. -*/ - -typedef unsigned int (*__exception_handler)(int /*evba_offset*/, int /*return address*/); - -/* - Define the form of the function used when registering a scall handler. -*/ - -typedef void (*__scall_handler)(int /*code*/, int /*p1*/, int /*p2*/ - , int /*p3*/, int /*p4*/); - -/* - Function for registering an exception handler for the exception with - offset given by evba_offset. -*/ -void _register_exception_handler(__exception_handler handler, int evba_offset); - -/* - Function for registering a scall handler which can be a arbirary - function which uses r8-r12 for parameters. -*/ -void _register_scall_handler(__scall_handler handler); - -/* - Initialize exceptions. Must be called before registering exception handlers - and needed to enable exceptions. 'evba' is the pointer to the exception - vector. 'handler_table' is a pointer to an array where the pointers to - the exception handlers are stored. This array must be at least 0x104 bytes - and word aligned. -*/ -void init_exceptions(void *evba, void *handler_table); - -_END_STD_C - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h deleted file mode 100644 index 76d81f7371b..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h +++ /dev/null @@ -1,82 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS interrupts include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_INTERRUPTS_H__ -#define __AVR32_NEWLIB_ADDONS_INTERRUPTS_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -#define INT_GRPS 64 -#define INT_LINES 32 -#define INTPR_BASE (__intc_base__ + 0x0000) -#define INTREQ_BASE (__intc_base__ + 64*4) -#define INTCAUSE_BASE (__intc_base__ + 2*64*4) - -//Register offsets -#define INTLEVEL 30 -#define AUTOVECTOR 0 -#define AUTOVECTOR_BITS 14 - -//Priorities -#define INT0 0 -#define INT1 1 -#define INT2 2 -#define INT3 3 - - -typedef void (*__newlib_int_handler)(int /* int_grp*/, void */*user_handle*/); - -__newlib_int_handler register_interrupt(__newlib_int_handler handler, int int_grp, int line, int priority, - .../* void *user_handle*/); -void init_interrupts(); -void set_interrupts_base(void *base); - -_END_STD_C - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h deleted file mode 100644 index a725769fa80..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h +++ /dev/null @@ -1,174 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS miscellaneous macros include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_IO_H__ -#define __AVR32_NEWLIB_ADDONS_IO_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -typedef char u8; -typedef unsigned int u32; - -#define __raw_writeb(v,a) (*(volatile unsigned char *)(a) = (v)) -#define __raw_writew(v,a) (*(volatile unsigned short *)(a) = (v)) -#define __raw_writel(v,a) (*(volatile unsigned int *)(a) = (v)) - -#define __raw_readb(a) (*(volatile unsigned char *)(a)) -#define __raw_readw(a) (*(volatile unsigned short *)(a)) -#define __raw_readl(a) (*(volatile unsigned int *)(a)) - -/* As long as I/O is only performed in P4 (or possibly P3), we're safe */ -#define writeb(v,a) __raw_writeb(v,a) -#define writew(v,a) __raw_writew(v,a) -#define writel(v,a) __raw_writel(v,a) - -#define readb(a) __raw_readb(a) -#define readw(a) __raw_readw(a) -#define readl(a) __raw_readl(a) - -/* Memory segments when segmentation is enabled */ -#define P0SEG 0x00000000 -#define P1SEG 0x80000000 -#define P2SEG 0xa0000000 -#define P3SEG 0xc0000000 -#define P4SEG 0xe0000000 - -/* Returns the privileged segment base of a given address */ -#define PXSEG(a) (((unsigned long)(a)) & 0xe0000000) - -/* Returns the physical address of a PnSEG (n=1,2) address */ -#define PHYSADDR(a) (((unsigned long)(a)) & 0x1fffffff) - -/* - * Map an address to a certain privileged segment - */ -#define P1SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P1SEG)) -#define P2SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P2SEG)) -#define P3SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P3SEG)) -#define P4SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P4SEG)) - - -#define cached(addr) P1SEGADDR(addr) -#define uncached(addr) P2SEGADDR(addr) -#define physaddr(addr) PHYSADDR(addr) - -#define BF(field, value) \ - ({ union { \ - struct { \ - unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long __val: field ## _SIZE ; \ - }; \ - unsigned long __ul; \ - } __tmp; \ - __tmp.__ul = 0; \ - __tmp.__val = value; \ - __tmp.__ul;}) - -#define BF_D(field, value) \ - ({ union { \ - struct { \ - unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long long __val: field ## _SIZE ; \ - }; \ - unsigned long long __ul; \ - } __tmp; \ - __tmp.__ul = 0; \ - __tmp.__val = value; \ - __tmp.__ul;}) - -#define BFINS(var, field, value) \ - { union {\ - struct { \ - unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long __val: field ## _SIZE ; \ - }; \ - unsigned long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val = value; \ - var = __tmp.__ul;} - -#define BFEXT(var, field) \ - ({ union {\ - struct { \ - unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long __val: field ## _SIZE ; \ - }; \ - unsigned long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val; }) - -#define BFINS_D(var, field, value) \ - { union {\ - struct { \ - unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long long __val: field ## _SIZE ; \ - }; \ - unsigned long long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val = value; \ - var = __tmp.__ul;} - -#define BFEXT_D(var, field) \ - ({ union {\ - struct { \ - unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long long __val: field ## _SIZE ; \ - }; \ - unsigned long long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val; }) - - -_END_STD_C - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h deleted file mode 100644 index 6c4697d783e..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h +++ /dev/null @@ -1,208 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS USART include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_USART_H__ -#define __AVR32_NEWLIB_ADDONS_USART_H__ - -#include <_ansi.h> - -#include "nlao_io.h" - -_BEGIN_STD_C - -struct usart3 { - volatile u32 us_cr; - volatile u32 us_mr; - volatile u32 us_ier; - volatile u32 us_idr; - volatile u32 us_imr; - volatile u32 us_csr; - volatile u32 us_rhr; - volatile u32 us_thr; - volatile u32 us_brgr; - volatile u32 us_rtor; - volatile u32 us_ttgr; - volatile u32 us_reserved[5]; - volatile u32 us_fidi; - volatile u32 us_ner; - volatile u32 us_xxr; - volatile u32 us_if; -}; - -/* Register offsets */ -#define US_CR 0x0000 -#define US_MR 0x0004 -#define US_IER 0x0008 -#define US_IDR 0x000c -#define US_IMR 0x0010 -#define US_CSR 0x0014 -#define US_RHR 0x0018 -#define US_THR 0x001c -#define US_BRGR 0x0020 -#define US_RTOR 0x0024 -#define US_TTGR 0x0028 - -#define US_FIDI 0x0040 -#define US_NER 0x0044 -#define US_XXR 0x0048 -#define US_IF 0x004c - -#define US_RPR 0x0100 -#define US_RCR 0x0104 -#define US_TPR 0x0108 -#define US_TCR 0x010c -#define US_RNPR 0x0110 -#define US_RNCR 0x0114 -#define US_TNPR 0x0118 -#define US_TNCR 0x011c -#define US_PTCR 0x0120 -#define US_PTSR 0x0124 - - - - -/* USART3 Control Register */ -#define US_CR_RSTRX (1 << 2) -#define US_CR_RSTTX (1 << 3) -#define US_CR_RXEN (1 << 4) -#define US_CR_RXDIS (1 << 5) -#define US_CR_TXEN (1 << 6) -#define US_CR_TXDIS (1 << 7) -#define US_CR_RSTSTA (1 << 8) -#define US_CR_STTBRK (1 << 9) -#define US_CR_STPBRK (1 << 10) - -#define US_CR_DTREN (1 << 16) -#define US_CR_DTRDIS (1 << 17) -#define US_CR_RTSEN (1 << 18) -#define US_CR_RTSDIS (1 << 19) - -/* USART3 Mode Register */ -#define US_MR_MODE (15 << 0) -#define US_MR_MODE_NORMAL ( 0 << 0) -#define US_MR_MODE_HWFLOW ( 2 << 0) -#define US_MR_CLKS ( 3 << 4) -#define US_MR_CLKS_CLOCK ( 0 << 4) -#define US_MR_CLKS_FDIV1 ( 1 << 4) -#define US_MR_CLKS_SLOW ( 2 << 4) -#define US_MR_CLKS_EXT ( 3 << 4) -#define US_MR_CHRL_5BITS ( 0 << 6) -#define US_MR_CHRL_6BITS ( 1 << 6) -#define US_MR_CHRL_7BITS ( 2 << 6) -#define US_MR_CHRL_8BITS ( 3 << 6) -#define US_MR_SYNC ( 1 << 8) -#define US_MR_PAR_EVEN ( 0 << 9) -#define US_MR_PAR_ODD ( 1 << 9) -#define US_MR_PAR_SPACE ( 2 << 9) -#define US_MR_PAR_MARK ( 3 << 9) -#define US_MR_PAR_NONE ( 4 << 9) -#define US_MR_PAR_MDROP ( 6 << 9) -#define US_MR_NBSTOP_1BIT ( 0 << 12) -#define US_MR_NBSTOP_1_5BIT ( 1 << 12) -#define US_MR_NBSTOP_2BITS ( 2 << 12) -#define US_MR_OVER ( 1 << 19) -#define US_MR_OVER_X16 ( 0 << 19) -#define US_MR_OVER_X8 ( 1 << 19) - -/* USART3 Channel Status Register */ -#define US_CSR_RXRDY (1 << 0) -#define US_CSR_TXRDY (1 << 1) -#define US_CSR_RXBRK (1 << 2) -#define US_CSR_ENDRX (1 << 3) -#define US_CSR_ENDTX (1 << 4) - - -#define US_CSR_OVRE (1 << 5) -#define US_CSR_FRAME (1 << 6) -#define US_CSR_PARE (1 << 7) - -#define US_CSR_TXEMPTY (1 << 9) - -#define US_CSR_TXBUFE (1 << 11) -#define US_CSR_RXBUFF (1 << 12) -#define US_CSR_RIIC (1 << 16) -#define US_CSR_DSRIC (1 << 17) -#define US_CSR_DCDIC (1 << 18) -#define US_CSR_CTSIC (1 << 19) -#define US_CSR_RI (1 << 20) -#define US_CSR_DSR (1 << 21) -#define US_CSR_DCD (1 << 22) -#define US_CSR_CTS (1 << 23) - -/* USART3 Baud Rate Generator Register */ -#define US_BRGR_CD_OFFSET 0 -#define US_BRGR_FP_OFFSET 16 - -#define US_BRGR_CD_SIZE 16 -#define US_BRGR_FP_SIZE 3 - -#define US_BRGR_CD (0xFFFF << 0) -#define US_BRGR_FP ( 7 << 16) - -/*USART3 PDC Transfer Control Register */ -#define US_PTCR_RXTEN (1 << 0) -#define US_PTCR_RXTDIS (1 << 1) -#define US_PTCR_TXTEN (1 << 8) -#define US_PTCR_TXTDIS (1 << 9) - -/*USART3 PDC Transfer Status Register */ -#define US_PTSR_RXTEN (1 << 0) -#define US_PTSR_TXTEN (1 << 8) - - -int usart_init(int baudrate); -void usart_putc(char c); -void usart_puts(const char *s); -int usart_getc(void); -int usart_tstc(void); -void usart_setbrg(int baudrate, int cpu_clock); -void set_usart_base(void *usart_base); - - -_END_STD_C - -#endif /* MERLIN_USART3_H */ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a deleted file mode 100644 index aa673eccdd4..00000000000 Binary files a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a and /dev/null differ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds deleted file mode 100644 index 59152ac0b97..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds +++ /dev/null @@ -1,266 +0,0 @@ -/****************************************************************************** - * AVR32 AT32UC3A0512 GNU LD script file. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: AVR32 AT32UC3A0512 - * - * - author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32") - -OUTPUT_ARCH(avr32:uc) - -ENTRY(_start) - -MEMORY -{ - FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x00080000 - INTRAM (wxa!ri) : ORIGIN = 0x00000004, LENGTH = 0x0000FFFC - USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x00000200 -} - -PHDRS -{ - FLASH PT_LOAD; - INTRAM_ALIGN PT_NULL; - INTRAM_AT_FLASH PT_LOAD; - INTRAM PT_NULL; - USERPAGE PT_LOAD; -} - -SECTIONS -{ - /* If this heap size is selected, all the INTRAM space from the end of the - data area to the beginning of the stack will be allocated for the heap. */ - __max_heap_size__ = -1; - - /* Use a default heap size if heap size was not defined. */ - __heap_size__ = DEFINED(__heap_size__) ? __heap_size__ : __max_heap_size__; - - /* Use a default stack size if stack size was not defined. */ - __stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 4K; - - /* Read-only sections, merged into text segment: */ - PROVIDE (__executable_start = 0x80000000); . = 0x80000000; - .interp : { *(.interp) } >FLASH AT>FLASH :FLASH - .reset : { *(.reset) } >FLASH AT>FLASH :FLASH - .hash : { *(.hash) } >FLASH AT>FLASH :FLASH - .dynsym : { *(.dynsym) } >FLASH AT>FLASH :FLASH - .dynstr : { *(.dynstr) } >FLASH AT>FLASH :FLASH - .gnu.version : { *(.gnu.version) } >FLASH AT>FLASH :FLASH - .gnu.version_d : { *(.gnu.version_d) } >FLASH AT>FLASH :FLASH - .gnu.version_r : { *(.gnu.version_r) } >FLASH AT>FLASH :FLASH - .rel.init : { *(.rel.init) } >FLASH AT>FLASH :FLASH - .rela.init : { *(.rela.init) } >FLASH AT>FLASH :FLASH - .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rel.fini : { *(.rel.fini) } >FLASH AT>FLASH :FLASH - .rela.fini : { *(.rela.fini) } >FLASH AT>FLASH :FLASH - .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rel.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rela.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rel.ctors : { *(.rel.ctors) } >FLASH AT>FLASH :FLASH - .rela.ctors : { *(.rela.ctors) } >FLASH AT>FLASH :FLASH - .rel.dtors : { *(.rel.dtors) } >FLASH AT>FLASH :FLASH - .rela.dtors : { *(.rela.dtors) } >FLASH AT>FLASH :FLASH - .rel.got : { *(.rel.got) } >FLASH AT>FLASH :FLASH - .rela.got : { *(.rela.got) } >FLASH AT>FLASH :FLASH - .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rel.plt : { *(.rel.plt) } >FLASH AT>FLASH :FLASH - .rela.plt : { *(.rela.plt) } >FLASH AT>FLASH :FLASH - .init : - { - KEEP (*(.init)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .plt : { *(.plt) } >FLASH AT>FLASH :FLASH - .text : - { - *(.text .stub .text.* .gnu.linkonce.t.*) - KEEP (*(.text.*personality*)) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .fini : - { - KEEP (*(.fini)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rodata1 : { *(.rodata1) } >FLASH AT>FLASH :FLASH - .eh_frame_hdr : { *(.eh_frame_hdr) } >FLASH AT>FLASH :FLASH - .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } >FLASH AT>FLASH :FLASH - .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >FLASH AT>FLASH :FLASH - .lalign : { . = ALIGN(8); PROVIDE(_data_lma = .); } >FLASH AT>FLASH :FLASH - . = ORIGIN(INTRAM); - .dalign : { . = ALIGN(8); PROVIDE(_data = .); } >INTRAM AT>INTRAM :INTRAM_ALIGN - /* Exception handling */ - .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - PROVIDE (__preinit_array_start = ALIGN(32 / 8)); - .preinit_array : { KEEP (*(.preinit_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array : { KEEP (*(.init_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array : { KEEP (*(.fini_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__fini_array_end = .); - .ctors : - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin*.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dtors : - { - KEEP (*crtbegin*.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .jcr : { KEEP (*(.jcr)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dynamic : { *(.dynamic) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .got : { *(.got.plt) *(.got) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ramtext : { *(.ramtext .ramtext.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ddalign : { . = ALIGN(8); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data : - { - *(.data .data.* .gnu.linkonce.d.*) - KEEP (*(.gnu.linkonce.d.*personality*)) - SORT(CONSTRUCTORS) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data1 : { *(.data1) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .balign : { . = ALIGN(8); PROVIDE(_edata = .); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (edata = .); - __bss_start = .; - .bss : - { - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(8); - } >INTRAM AT>INTRAM :INTRAM - . = ALIGN(8); - _end = .; - PROVIDE (end = .); - __heap_start__ = ALIGN(8); - .heap : - { - *(.heap) - . = (__heap_size__ == __max_heap_size__) ? - ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ - ABSOLUTE(.) : - __heap_size__; - } >INTRAM AT>INTRAM :INTRAM - __heap_end__ = .; - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .stack ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ : - { - _stack = .; - *(.stack) - . = __stack_size__; - _estack = .; - } >INTRAM AT>INTRAM :INTRAM - .userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE :USERPAGE - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds deleted file mode 100644 index a5926d8bee4..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds +++ /dev/null @@ -1,266 +0,0 @@ -/****************************************************************************** - * AVR32 AT32UC3A1256 GNU LD script file. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: AVR32 AT32UC3A1256 - * - * - author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32") - -OUTPUT_ARCH(avr32:uc) - -ENTRY(_start) - -MEMORY -{ - FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x00040000 - INTRAM (wxa!ri) : ORIGIN = 0x00000004, LENGTH = 0x0000FFFC - USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x00000200 -} - -PHDRS -{ - FLASH PT_LOAD; - INTRAM_ALIGN PT_NULL; - INTRAM_AT_FLASH PT_LOAD; - INTRAM PT_NULL; - USERPAGE PT_LOAD; -} - -SECTIONS -{ - /* If this heap size is selected, all the INTRAM space from the end of the - data area to the beginning of the stack will be allocated for the heap. */ - __max_heap_size__ = -1; - - /* Use a default heap size if heap size was not defined. */ - __heap_size__ = DEFINED(__heap_size__) ? __heap_size__ : __max_heap_size__; - - /* Use a default stack size if stack size was not defined. */ - __stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 4K; - - /* Read-only sections, merged into text segment: */ - PROVIDE (__executable_start = 0x80000000); . = 0x80000000; - .interp : { *(.interp) } >FLASH AT>FLASH :FLASH - .reset : { *(.reset) } >FLASH AT>FLASH :FLASH - .hash : { *(.hash) } >FLASH AT>FLASH :FLASH - .dynsym : { *(.dynsym) } >FLASH AT>FLASH :FLASH - .dynstr : { *(.dynstr) } >FLASH AT>FLASH :FLASH - .gnu.version : { *(.gnu.version) } >FLASH AT>FLASH :FLASH - .gnu.version_d : { *(.gnu.version_d) } >FLASH AT>FLASH :FLASH - .gnu.version_r : { *(.gnu.version_r) } >FLASH AT>FLASH :FLASH - .rel.init : { *(.rel.init) } >FLASH AT>FLASH :FLASH - .rela.init : { *(.rela.init) } >FLASH AT>FLASH :FLASH - .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rel.fini : { *(.rel.fini) } >FLASH AT>FLASH :FLASH - .rela.fini : { *(.rela.fini) } >FLASH AT>FLASH :FLASH - .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rel.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rela.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rel.ctors : { *(.rel.ctors) } >FLASH AT>FLASH :FLASH - .rela.ctors : { *(.rela.ctors) } >FLASH AT>FLASH :FLASH - .rel.dtors : { *(.rel.dtors) } >FLASH AT>FLASH :FLASH - .rela.dtors : { *(.rela.dtors) } >FLASH AT>FLASH :FLASH - .rel.got : { *(.rel.got) } >FLASH AT>FLASH :FLASH - .rela.got : { *(.rela.got) } >FLASH AT>FLASH :FLASH - .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rel.plt : { *(.rel.plt) } >FLASH AT>FLASH :FLASH - .rela.plt : { *(.rela.plt) } >FLASH AT>FLASH :FLASH - .init : - { - KEEP (*(.init)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .plt : { *(.plt) } >FLASH AT>FLASH :FLASH - .text : - { - *(.text .stub .text.* .gnu.linkonce.t.*) - KEEP (*(.text.*personality*)) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .fini : - { - KEEP (*(.fini)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rodata1 : { *(.rodata1) } >FLASH AT>FLASH :FLASH - .eh_frame_hdr : { *(.eh_frame_hdr) } >FLASH AT>FLASH :FLASH - .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } >FLASH AT>FLASH :FLASH - .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >FLASH AT>FLASH :FLASH - .lalign : { . = ALIGN(8); PROVIDE(_data_lma = .); } >FLASH AT>FLASH :FLASH - . = ORIGIN(INTRAM); - .dalign : { . = ALIGN(8); PROVIDE(_data = .); } >INTRAM AT>INTRAM :INTRAM_ALIGN - /* Exception handling */ - .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - PROVIDE (__preinit_array_start = ALIGN(32 / 8)); - .preinit_array : { KEEP (*(.preinit_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array : { KEEP (*(.init_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array : { KEEP (*(.fini_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__fini_array_end = .); - .ctors : - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin*.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dtors : - { - KEEP (*crtbegin*.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .jcr : { KEEP (*(.jcr)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dynamic : { *(.dynamic) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .got : { *(.got.plt) *(.got) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ramtext : { *(.ramtext .ramtext.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ddalign : { . = ALIGN(8); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data : - { - *(.data .data.* .gnu.linkonce.d.*) - KEEP (*(.gnu.linkonce.d.*personality*)) - SORT(CONSTRUCTORS) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data1 : { *(.data1) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .balign : { . = ALIGN(8); PROVIDE(_edata = .); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (edata = .); - __bss_start = .; - .bss : - { - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(8); - } >INTRAM AT>INTRAM :INTRAM - . = ALIGN(8); - _end = .; - PROVIDE (end = .); - __heap_start__ = ALIGN(8); - .heap : - { - *(.heap) - . = (__heap_size__ == __max_heap_size__) ? - ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ - ABSOLUTE(.) : - __heap_size__; - } >INTRAM AT>INTRAM :INTRAM - __heap_end__ = .; - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .stack ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ : - { - _stack = .; - *(.stack) - . = __stack_size__; - _estack = .; - } >INTRAM AT>INTRAM :INTRAM - .userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE :USERPAGE - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h deleted file mode 100644 index 41163b6d916..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h +++ /dev/null @@ -1,328 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor macro repeating utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _MREPEAT_H_ -#define _MREPEAT_H_ - -#include "preprocessor.h" - - -//! Maximal number of repetitions supported by MREPEAT. -#define MREPEAT_LIMIT 256 - -/*! \brief Macro repeat. - * - * This macro represents a horizontal repetition construct. - * - * \param count The number of repetitious calls to macro. Valid values range from 0 to MREPEAT_LIMIT. - * \param macro A binary operation of the form macro(n, data). This macro is expanded by MREPEAT with - * the current repetition number and the auxiliary data argument. - * \param data Auxiliary data passed to macro. - * - * \return macro(0, data) macro(1, data) ... macro(count - 1, data) - */ -#define MREPEAT(count, macro, data) TPASTE2(MREPEAT, count)(macro, data) - -#define MREPEAT0( macro, data) -#define MREPEAT1( macro, data) MREPEAT0( macro, data) macro( 0, data) -#define MREPEAT2( macro, data) MREPEAT1( macro, data) macro( 1, data) -#define MREPEAT3( macro, data) MREPEAT2( macro, data) macro( 2, data) -#define MREPEAT4( macro, data) MREPEAT3( macro, data) macro( 3, data) -#define MREPEAT5( macro, data) MREPEAT4( macro, data) macro( 4, data) -#define MREPEAT6( macro, data) MREPEAT5( macro, data) macro( 5, data) -#define MREPEAT7( macro, data) MREPEAT6( macro, data) macro( 6, data) -#define MREPEAT8( macro, data) MREPEAT7( macro, data) macro( 7, data) -#define MREPEAT9( macro, data) MREPEAT8( macro, data) macro( 8, data) -#define MREPEAT10( macro, data) MREPEAT9( macro, data) macro( 9, data) -#define MREPEAT11( macro, data) MREPEAT10( macro, data) macro( 10, data) -#define MREPEAT12( macro, data) MREPEAT11( macro, data) macro( 11, data) -#define MREPEAT13( macro, data) MREPEAT12( macro, data) macro( 12, data) -#define MREPEAT14( macro, data) MREPEAT13( macro, data) macro( 13, data) -#define MREPEAT15( macro, data) MREPEAT14( macro, data) macro( 14, data) -#define MREPEAT16( macro, data) MREPEAT15( macro, data) macro( 15, data) -#define MREPEAT17( macro, data) MREPEAT16( macro, data) macro( 16, data) -#define MREPEAT18( macro, data) MREPEAT17( macro, data) macro( 17, data) -#define MREPEAT19( macro, data) MREPEAT18( macro, data) macro( 18, data) -#define MREPEAT20( macro, data) MREPEAT19( macro, data) macro( 19, data) -#define MREPEAT21( macro, data) MREPEAT20( macro, data) macro( 20, data) -#define MREPEAT22( macro, data) MREPEAT21( macro, data) macro( 21, data) -#define MREPEAT23( macro, data) MREPEAT22( macro, data) macro( 22, data) -#define MREPEAT24( macro, data) MREPEAT23( macro, data) macro( 23, data) -#define MREPEAT25( macro, data) MREPEAT24( macro, data) macro( 24, data) -#define MREPEAT26( macro, data) MREPEAT25( macro, data) macro( 25, data) -#define MREPEAT27( macro, data) MREPEAT26( macro, data) macro( 26, data) -#define MREPEAT28( macro, data) MREPEAT27( macro, data) macro( 27, data) -#define MREPEAT29( macro, data) MREPEAT28( macro, data) macro( 28, data) -#define MREPEAT30( macro, data) MREPEAT29( macro, data) macro( 29, data) -#define MREPEAT31( macro, data) MREPEAT30( macro, data) macro( 30, data) -#define MREPEAT32( macro, data) MREPEAT31( macro, data) macro( 31, data) -#define MREPEAT33( macro, data) MREPEAT32( macro, data) macro( 32, data) -#define MREPEAT34( macro, data) MREPEAT33( macro, data) macro( 33, data) -#define MREPEAT35( macro, data) MREPEAT34( macro, data) macro( 34, data) -#define MREPEAT36( macro, data) MREPEAT35( macro, data) macro( 35, data) -#define MREPEAT37( macro, data) MREPEAT36( macro, data) macro( 36, data) -#define MREPEAT38( macro, data) MREPEAT37( macro, data) macro( 37, data) -#define MREPEAT39( macro, data) MREPEAT38( macro, data) macro( 38, data) -#define MREPEAT40( macro, data) MREPEAT39( macro, data) macro( 39, data) -#define MREPEAT41( macro, data) MREPEAT40( macro, data) macro( 40, data) -#define MREPEAT42( macro, data) MREPEAT41( macro, data) macro( 41, data) -#define MREPEAT43( macro, data) MREPEAT42( macro, data) macro( 42, data) -#define MREPEAT44( macro, data) MREPEAT43( macro, data) macro( 43, data) -#define MREPEAT45( macro, data) MREPEAT44( macro, data) macro( 44, data) -#define MREPEAT46( macro, data) MREPEAT45( macro, data) macro( 45, data) -#define MREPEAT47( macro, data) MREPEAT46( macro, data) macro( 46, data) -#define MREPEAT48( macro, data) MREPEAT47( macro, data) macro( 47, data) -#define MREPEAT49( macro, data) MREPEAT48( macro, data) macro( 48, data) -#define MREPEAT50( macro, data) MREPEAT49( macro, data) macro( 49, data) -#define MREPEAT51( macro, data) MREPEAT50( macro, data) macro( 50, data) -#define MREPEAT52( macro, data) MREPEAT51( macro, data) macro( 51, data) -#define MREPEAT53( macro, data) MREPEAT52( macro, data) macro( 52, data) -#define MREPEAT54( macro, data) MREPEAT53( macro, data) macro( 53, data) -#define MREPEAT55( macro, data) MREPEAT54( macro, data) macro( 54, data) -#define MREPEAT56( macro, data) MREPEAT55( macro, data) macro( 55, data) -#define MREPEAT57( macro, data) MREPEAT56( macro, data) macro( 56, data) -#define MREPEAT58( macro, data) MREPEAT57( macro, data) macro( 57, data) -#define MREPEAT59( macro, data) MREPEAT58( macro, data) macro( 58, data) -#define MREPEAT60( macro, data) MREPEAT59( macro, data) macro( 59, data) -#define MREPEAT61( macro, data) MREPEAT60( macro, data) macro( 60, data) -#define MREPEAT62( macro, data) MREPEAT61( macro, data) macro( 61, data) -#define MREPEAT63( macro, data) MREPEAT62( macro, data) macro( 62, data) -#define MREPEAT64( macro, data) MREPEAT63( macro, data) macro( 63, data) -#define MREPEAT65( macro, data) MREPEAT64( macro, data) macro( 64, data) -#define MREPEAT66( macro, data) MREPEAT65( macro, data) macro( 65, data) -#define MREPEAT67( macro, data) MREPEAT66( macro, data) macro( 66, data) -#define MREPEAT68( macro, data) MREPEAT67( macro, data) macro( 67, data) -#define MREPEAT69( macro, data) MREPEAT68( macro, data) macro( 68, data) -#define MREPEAT70( macro, data) MREPEAT69( macro, data) macro( 69, data) -#define MREPEAT71( macro, data) MREPEAT70( macro, data) macro( 70, data) -#define MREPEAT72( macro, data) MREPEAT71( macro, data) macro( 71, data) -#define MREPEAT73( macro, data) MREPEAT72( macro, data) macro( 72, data) -#define MREPEAT74( macro, data) MREPEAT73( macro, data) macro( 73, data) -#define MREPEAT75( macro, data) MREPEAT74( macro, data) macro( 74, data) -#define MREPEAT76( macro, data) MREPEAT75( macro, data) macro( 75, data) -#define MREPEAT77( macro, data) MREPEAT76( macro, data) macro( 76, data) -#define MREPEAT78( macro, data) MREPEAT77( macro, data) macro( 77, data) -#define MREPEAT79( macro, data) MREPEAT78( macro, data) macro( 78, data) -#define MREPEAT80( macro, data) MREPEAT79( macro, data) macro( 79, data) -#define MREPEAT81( macro, data) MREPEAT80( macro, data) macro( 80, data) -#define MREPEAT82( macro, data) MREPEAT81( macro, data) macro( 81, data) -#define MREPEAT83( macro, data) MREPEAT82( macro, data) macro( 82, data) -#define MREPEAT84( macro, data) MREPEAT83( macro, data) macro( 83, data) -#define MREPEAT85( macro, data) MREPEAT84( macro, data) macro( 84, data) -#define MREPEAT86( macro, data) MREPEAT85( macro, data) macro( 85, data) -#define MREPEAT87( macro, data) MREPEAT86( macro, data) macro( 86, data) -#define MREPEAT88( macro, data) MREPEAT87( macro, data) macro( 87, data) -#define MREPEAT89( macro, data) MREPEAT88( macro, data) macro( 88, data) -#define MREPEAT90( macro, data) MREPEAT89( macro, data) macro( 89, data) -#define MREPEAT91( macro, data) MREPEAT90( macro, data) macro( 90, data) -#define MREPEAT92( macro, data) MREPEAT91( macro, data) macro( 91, data) -#define MREPEAT93( macro, data) MREPEAT92( macro, data) macro( 92, data) -#define MREPEAT94( macro, data) MREPEAT93( macro, data) macro( 93, data) -#define MREPEAT95( macro, data) MREPEAT94( macro, data) macro( 94, data) -#define MREPEAT96( macro, data) MREPEAT95( macro, data) macro( 95, data) -#define MREPEAT97( macro, data) MREPEAT96( macro, data) macro( 96, data) -#define MREPEAT98( macro, data) MREPEAT97( macro, data) macro( 97, data) -#define MREPEAT99( macro, data) MREPEAT98( macro, data) macro( 98, data) -#define MREPEAT100(macro, data) MREPEAT99( macro, data) macro( 99, data) -#define MREPEAT101(macro, data) MREPEAT100(macro, data) macro(100, data) -#define MREPEAT102(macro, data) MREPEAT101(macro, data) macro(101, data) -#define MREPEAT103(macro, data) MREPEAT102(macro, data) macro(102, data) -#define MREPEAT104(macro, data) MREPEAT103(macro, data) macro(103, data) -#define MREPEAT105(macro, data) MREPEAT104(macro, data) macro(104, data) -#define MREPEAT106(macro, data) MREPEAT105(macro, data) macro(105, data) -#define MREPEAT107(macro, data) MREPEAT106(macro, data) macro(106, data) -#define MREPEAT108(macro, data) MREPEAT107(macro, data) macro(107, data) -#define MREPEAT109(macro, data) MREPEAT108(macro, data) macro(108, data) -#define MREPEAT110(macro, data) MREPEAT109(macro, data) macro(109, data) -#define MREPEAT111(macro, data) MREPEAT110(macro, data) macro(110, data) -#define MREPEAT112(macro, data) MREPEAT111(macro, data) macro(111, data) -#define MREPEAT113(macro, data) MREPEAT112(macro, data) macro(112, data) -#define MREPEAT114(macro, data) MREPEAT113(macro, data) macro(113, data) -#define MREPEAT115(macro, data) MREPEAT114(macro, data) macro(114, data) -#define MREPEAT116(macro, data) MREPEAT115(macro, data) macro(115, data) -#define MREPEAT117(macro, data) MREPEAT116(macro, data) macro(116, data) -#define MREPEAT118(macro, data) MREPEAT117(macro, data) macro(117, data) -#define MREPEAT119(macro, data) MREPEAT118(macro, data) macro(118, data) -#define MREPEAT120(macro, data) MREPEAT119(macro, data) macro(119, data) -#define MREPEAT121(macro, data) MREPEAT120(macro, data) macro(120, data) -#define MREPEAT122(macro, data) MREPEAT121(macro, data) macro(121, data) -#define MREPEAT123(macro, data) MREPEAT122(macro, data) macro(122, data) -#define MREPEAT124(macro, data) MREPEAT123(macro, data) macro(123, data) -#define MREPEAT125(macro, data) MREPEAT124(macro, data) macro(124, data) -#define MREPEAT126(macro, data) MREPEAT125(macro, data) macro(125, data) -#define MREPEAT127(macro, data) MREPEAT126(macro, data) macro(126, data) -#define MREPEAT128(macro, data) MREPEAT127(macro, data) macro(127, data) -#define MREPEAT129(macro, data) MREPEAT128(macro, data) macro(128, data) -#define MREPEAT130(macro, data) MREPEAT129(macro, data) macro(129, data) -#define MREPEAT131(macro, data) MREPEAT130(macro, data) macro(130, data) -#define MREPEAT132(macro, data) MREPEAT131(macro, data) macro(131, data) -#define MREPEAT133(macro, data) MREPEAT132(macro, data) macro(132, data) -#define MREPEAT134(macro, data) MREPEAT133(macro, data) macro(133, data) -#define MREPEAT135(macro, data) MREPEAT134(macro, data) macro(134, data) -#define MREPEAT136(macro, data) MREPEAT135(macro, data) macro(135, data) -#define MREPEAT137(macro, data) MREPEAT136(macro, data) macro(136, data) -#define MREPEAT138(macro, data) MREPEAT137(macro, data) macro(137, data) -#define MREPEAT139(macro, data) MREPEAT138(macro, data) macro(138, data) -#define MREPEAT140(macro, data) MREPEAT139(macro, data) macro(139, data) -#define MREPEAT141(macro, data) MREPEAT140(macro, data) macro(140, data) -#define MREPEAT142(macro, data) MREPEAT141(macro, data) macro(141, data) -#define MREPEAT143(macro, data) MREPEAT142(macro, data) macro(142, data) -#define MREPEAT144(macro, data) MREPEAT143(macro, data) macro(143, data) -#define MREPEAT145(macro, data) MREPEAT144(macro, data) macro(144, data) -#define MREPEAT146(macro, data) MREPEAT145(macro, data) macro(145, data) -#define MREPEAT147(macro, data) MREPEAT146(macro, data) macro(146, data) -#define MREPEAT148(macro, data) MREPEAT147(macro, data) macro(147, data) -#define MREPEAT149(macro, data) MREPEAT148(macro, data) macro(148, data) -#define MREPEAT150(macro, data) MREPEAT149(macro, data) macro(149, data) -#define MREPEAT151(macro, data) MREPEAT150(macro, data) macro(150, data) -#define MREPEAT152(macro, data) MREPEAT151(macro, data) macro(151, data) -#define MREPEAT153(macro, data) MREPEAT152(macro, data) macro(152, data) -#define MREPEAT154(macro, data) MREPEAT153(macro, data) macro(153, data) -#define MREPEAT155(macro, data) MREPEAT154(macro, data) macro(154, data) -#define MREPEAT156(macro, data) MREPEAT155(macro, data) macro(155, data) -#define MREPEAT157(macro, data) MREPEAT156(macro, data) macro(156, data) -#define MREPEAT158(macro, data) MREPEAT157(macro, data) macro(157, data) -#define MREPEAT159(macro, data) MREPEAT158(macro, data) macro(158, data) -#define MREPEAT160(macro, data) MREPEAT159(macro, data) macro(159, data) -#define MREPEAT161(macro, data) MREPEAT160(macro, data) macro(160, data) -#define MREPEAT162(macro, data) MREPEAT161(macro, data) macro(161, data) -#define MREPEAT163(macro, data) MREPEAT162(macro, data) macro(162, data) -#define MREPEAT164(macro, data) MREPEAT163(macro, data) macro(163, data) -#define MREPEAT165(macro, data) MREPEAT164(macro, data) macro(164, data) -#define MREPEAT166(macro, data) MREPEAT165(macro, data) macro(165, data) -#define MREPEAT167(macro, data) MREPEAT166(macro, data) macro(166, data) -#define MREPEAT168(macro, data) MREPEAT167(macro, data) macro(167, data) -#define MREPEAT169(macro, data) MREPEAT168(macro, data) macro(168, data) -#define MREPEAT170(macro, data) MREPEAT169(macro, data) macro(169, data) -#define MREPEAT171(macro, data) MREPEAT170(macro, data) macro(170, data) -#define MREPEAT172(macro, data) MREPEAT171(macro, data) macro(171, data) -#define MREPEAT173(macro, data) MREPEAT172(macro, data) macro(172, data) -#define MREPEAT174(macro, data) MREPEAT173(macro, data) macro(173, data) -#define MREPEAT175(macro, data) MREPEAT174(macro, data) macro(174, data) -#define MREPEAT176(macro, data) MREPEAT175(macro, data) macro(175, data) -#define MREPEAT177(macro, data) MREPEAT176(macro, data) macro(176, data) -#define MREPEAT178(macro, data) MREPEAT177(macro, data) macro(177, data) -#define MREPEAT179(macro, data) MREPEAT178(macro, data) macro(178, data) -#define MREPEAT180(macro, data) MREPEAT179(macro, data) macro(179, data) -#define MREPEAT181(macro, data) MREPEAT180(macro, data) macro(180, data) -#define MREPEAT182(macro, data) MREPEAT181(macro, data) macro(181, data) -#define MREPEAT183(macro, data) MREPEAT182(macro, data) macro(182, data) -#define MREPEAT184(macro, data) MREPEAT183(macro, data) macro(183, data) -#define MREPEAT185(macro, data) MREPEAT184(macro, data) macro(184, data) -#define MREPEAT186(macro, data) MREPEAT185(macro, data) macro(185, data) -#define MREPEAT187(macro, data) MREPEAT186(macro, data) macro(186, data) -#define MREPEAT188(macro, data) MREPEAT187(macro, data) macro(187, data) -#define MREPEAT189(macro, data) MREPEAT188(macro, data) macro(188, data) -#define MREPEAT190(macro, data) MREPEAT189(macro, data) macro(189, data) -#define MREPEAT191(macro, data) MREPEAT190(macro, data) macro(190, data) -#define MREPEAT192(macro, data) MREPEAT191(macro, data) macro(191, data) -#define MREPEAT193(macro, data) MREPEAT192(macro, data) macro(192, data) -#define MREPEAT194(macro, data) MREPEAT193(macro, data) macro(193, data) -#define MREPEAT195(macro, data) MREPEAT194(macro, data) macro(194, data) -#define MREPEAT196(macro, data) MREPEAT195(macro, data) macro(195, data) -#define MREPEAT197(macro, data) MREPEAT196(macro, data) macro(196, data) -#define MREPEAT198(macro, data) MREPEAT197(macro, data) macro(197, data) -#define MREPEAT199(macro, data) MREPEAT198(macro, data) macro(198, data) -#define MREPEAT200(macro, data) MREPEAT199(macro, data) macro(199, data) -#define MREPEAT201(macro, data) MREPEAT200(macro, data) macro(200, data) -#define MREPEAT202(macro, data) MREPEAT201(macro, data) macro(201, data) -#define MREPEAT203(macro, data) MREPEAT202(macro, data) macro(202, data) -#define MREPEAT204(macro, data) MREPEAT203(macro, data) macro(203, data) -#define MREPEAT205(macro, data) MREPEAT204(macro, data) macro(204, data) -#define MREPEAT206(macro, data) MREPEAT205(macro, data) macro(205, data) -#define MREPEAT207(macro, data) MREPEAT206(macro, data) macro(206, data) -#define MREPEAT208(macro, data) MREPEAT207(macro, data) macro(207, data) -#define MREPEAT209(macro, data) MREPEAT208(macro, data) macro(208, data) -#define MREPEAT210(macro, data) MREPEAT209(macro, data) macro(209, data) -#define MREPEAT211(macro, data) MREPEAT210(macro, data) macro(210, data) -#define MREPEAT212(macro, data) MREPEAT211(macro, data) macro(211, data) -#define MREPEAT213(macro, data) MREPEAT212(macro, data) macro(212, data) -#define MREPEAT214(macro, data) MREPEAT213(macro, data) macro(213, data) -#define MREPEAT215(macro, data) MREPEAT214(macro, data) macro(214, data) -#define MREPEAT216(macro, data) MREPEAT215(macro, data) macro(215, data) -#define MREPEAT217(macro, data) MREPEAT216(macro, data) macro(216, data) -#define MREPEAT218(macro, data) MREPEAT217(macro, data) macro(217, data) -#define MREPEAT219(macro, data) MREPEAT218(macro, data) macro(218, data) -#define MREPEAT220(macro, data) MREPEAT219(macro, data) macro(219, data) -#define MREPEAT221(macro, data) MREPEAT220(macro, data) macro(220, data) -#define MREPEAT222(macro, data) MREPEAT221(macro, data) macro(221, data) -#define MREPEAT223(macro, data) MREPEAT222(macro, data) macro(222, data) -#define MREPEAT224(macro, data) MREPEAT223(macro, data) macro(223, data) -#define MREPEAT225(macro, data) MREPEAT224(macro, data) macro(224, data) -#define MREPEAT226(macro, data) MREPEAT225(macro, data) macro(225, data) -#define MREPEAT227(macro, data) MREPEAT226(macro, data) macro(226, data) -#define MREPEAT228(macro, data) MREPEAT227(macro, data) macro(227, data) -#define MREPEAT229(macro, data) MREPEAT228(macro, data) macro(228, data) -#define MREPEAT230(macro, data) MREPEAT229(macro, data) macro(229, data) -#define MREPEAT231(macro, data) MREPEAT230(macro, data) macro(230, data) -#define MREPEAT232(macro, data) MREPEAT231(macro, data) macro(231, data) -#define MREPEAT233(macro, data) MREPEAT232(macro, data) macro(232, data) -#define MREPEAT234(macro, data) MREPEAT233(macro, data) macro(233, data) -#define MREPEAT235(macro, data) MREPEAT234(macro, data) macro(234, data) -#define MREPEAT236(macro, data) MREPEAT235(macro, data) macro(235, data) -#define MREPEAT237(macro, data) MREPEAT236(macro, data) macro(236, data) -#define MREPEAT238(macro, data) MREPEAT237(macro, data) macro(237, data) -#define MREPEAT239(macro, data) MREPEAT238(macro, data) macro(238, data) -#define MREPEAT240(macro, data) MREPEAT239(macro, data) macro(239, data) -#define MREPEAT241(macro, data) MREPEAT240(macro, data) macro(240, data) -#define MREPEAT242(macro, data) MREPEAT241(macro, data) macro(241, data) -#define MREPEAT243(macro, data) MREPEAT242(macro, data) macro(242, data) -#define MREPEAT244(macro, data) MREPEAT243(macro, data) macro(243, data) -#define MREPEAT245(macro, data) MREPEAT244(macro, data) macro(244, data) -#define MREPEAT246(macro, data) MREPEAT245(macro, data) macro(245, data) -#define MREPEAT247(macro, data) MREPEAT246(macro, data) macro(246, data) -#define MREPEAT248(macro, data) MREPEAT247(macro, data) macro(247, data) -#define MREPEAT249(macro, data) MREPEAT248(macro, data) macro(248, data) -#define MREPEAT250(macro, data) MREPEAT249(macro, data) macro(249, data) -#define MREPEAT251(macro, data) MREPEAT250(macro, data) macro(250, data) -#define MREPEAT252(macro, data) MREPEAT251(macro, data) macro(251, data) -#define MREPEAT253(macro, data) MREPEAT252(macro, data) macro(252, data) -#define MREPEAT254(macro, data) MREPEAT253(macro, data) macro(253, data) -#define MREPEAT255(macro, data) MREPEAT254(macro, data) macro(254, data) -#define MREPEAT256(macro, data) MREPEAT255(macro, data) macro(255, data) - - -#endif // _MREPEAT_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h deleted file mode 100644 index 5b996ba11f2..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h +++ /dev/null @@ -1,55 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _PREPROCESSOR_H_ -#define _PREPROCESSOR_H_ - -#include "tpaste.h" -#include "stringz.h" -#include "mrepeat.h" - - -#endif // _PREPROCESSOR_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h deleted file mode 100644 index 3528ea0dabb..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h +++ /dev/null @@ -1,75 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor stringizing utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _STRINGZ_H_ -#define _STRINGZ_H_ - - -/*! \brief Stringize. - * - * Stringize a preprocessing token, this token being allowed to be \#defined. - * - * May be used only within macros with the token passed as an argument if the token is \#defined. - * - * For example, writing STRINGZ(PIN) within a macro \#defined by PIN_NAME(PIN) - * and invoked as PIN_NAME(PIN0) with PIN0 \#defined as A0 is equivalent to - * writing "A0". - */ -#define STRINGZ(x) #x - -/*! \brief Absolute stringize. - * - * Stringize a preprocessing token, this token being allowed to be \#defined. - * - * No restriction of use if the token is \#defined. - * - * For example, writing ASTRINGZ(PIN0) anywhere with PIN0 \#defined as A0 is - * equivalent to writing "A0". - */ -#define ASTRINGZ(x) STRINGZ(x) - - -#endif // _STRINGZ_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h deleted file mode 100644 index a5d7beeaa80..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h +++ /dev/null @@ -1,95 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor token pasting utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _TPASTE_H_ -#define _TPASTE_H_ - - -/*! \name Token Paste - * - * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. - * - * May be used only within macros with the tokens passed as arguments if the tokens are \#defined. - * - * For example, writing TPASTE2(U, WIDTH) within a macro \#defined by - * UTYPE(WIDTH) and invoked as UTYPE(UL_WIDTH) with UL_WIDTH \#defined as 32 is - * equivalent to writing U32. - */ -//! @{ -#define TPASTE2( a, b) a##b -#define TPASTE3( a, b, c) a##b##c -#define TPASTE4( a, b, c, d) a##b##c##d -#define TPASTE5( a, b, c, d, e) a##b##c##d##e -#define TPASTE6( a, b, c, d, e, f) a##b##c##d##e##f -#define TPASTE7( a, b, c, d, e, f, g) a##b##c##d##e##f##g -#define TPASTE8( a, b, c, d, e, f, g, h) a##b##c##d##e##f##g##h -#define TPASTE9( a, b, c, d, e, f, g, h, i) a##b##c##d##e##f##g##h##i -#define TPASTE10(a, b, c, d, e, f, g, h, i, j) a##b##c##d##e##f##g##h##i##j -//! @} - -/*! \name Absolute Token Paste - * - * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. - * - * No restriction of use if the tokens are \#defined. - * - * For example, writing ATPASTE2(U, UL_WIDTH) anywhere with UL_WIDTH \#defined - * as 32 is equivalent to writing U32. - */ -//! @{ -#define ATPASTE2( a, b) TPASTE2( a, b) -#define ATPASTE3( a, b, c) TPASTE3( a, b, c) -#define ATPASTE4( a, b, c, d) TPASTE4( a, b, c, d) -#define ATPASTE5( a, b, c, d, e) TPASTE5( a, b, c, d, e) -#define ATPASTE6( a, b, c, d, e, f) TPASTE6( a, b, c, d, e, f) -#define ATPASTE7( a, b, c, d, e, f, g) TPASTE7( a, b, c, d, e, f, g) -#define ATPASTE8( a, b, c, d, e, f, g, h) TPASTE8( a, b, c, d, e, f, g, h) -#define ATPASTE9( a, b, c, d, e, f, g, h, i) TPASTE9( a, b, c, d, e, f, g, h, i) -#define ATPASTE10(a, b, c, d, e, f, g, h, i, j) TPASTE10(a, b, c, d, e, f, g, h, i, j) -//! @} - - -#endif // _TPASTE_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x deleted file mode 100644 index 23b658b9846..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x +++ /dev/null @@ -1,121 +0,0 @@ -/* This file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AVR32UC C runtime startup file. - * - * This file has been built from the Newlib crt0.S. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32UC devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include - - -//! @{ -//! \verbatim - - - // This must be linked @ 0x80000000 if it is to be run upon reset. - .section .reset, "ax", @progbits - - - .global _start - .type _start, @function -_start: - // Jump to the C runtime startup routine. - lda.w pc, _stext - - - // _stext is placed outside the .reset section so that the program entry point - // can be changed without affecting the C runtime startup. - .section .text._stext, "ax", @progbits - - - .global _stext - .type _stext, @function -_stext: - // Set initial stack pointer. - lda.w sp, _estack - - // Set up EVBA so interrupts can be enabled. - lda.w r0, _evba - mtsr AVR32_EVBA, r0 - - // Enable the exception processing. - csrf AVR32_SR_EM_OFFSET - - // Load initialized data having a global lifetime from the data LMA. - lda.w r0, _data - lda.w r1, _edata - cp r0, r1 - brhs idata_load_loop_end - lda.w r2, _data_lma -idata_load_loop: - ld.d r4, r2++ - st.d r0++, r4 - cp r0, r1 - brlo idata_load_loop -idata_load_loop_end: - - // Clear uninitialized data having a global lifetime in the blank static storage section. - lda.w r0, __bss_start - lda.w r1, _end - cp r0, r1 - brhs udata_clear_loop_end - mov r2, 0 - mov r3, 0 -udata_clear_loop: - st.d r0++, r2 - cp r0, r1 - brlo udata_clear_loop -udata_clear_loop_end: - -#ifdef CONFIG_FRAME_POINTER - // Safety: Set the default "return" @ to the exit routine address. - lda.w lr, exit -#endif - - // Start the show. - lda.w pc, main - - -//! \endverbatim -//! @} diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h deleted file mode 100644 index 885be7fb98a..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h +++ /dev/null @@ -1,1145 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Compiler file for AVR32. - * - * This file defines commonly used types and macros. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _COMPILER_H_ -#define _COMPILER_H_ - -#if ((defined __GNUC__) && (defined __AVR32__)) || (defined __ICCAVR32__ || defined __AAVR32__) -# include -#endif -#if (defined __ICCAVR32__) -# include -#endif -#include "preprocessor.h" - -#include "parts.h" - - -//_____ D E C L A R A T I O N S ____________________________________________ - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -#include -#include - - -#if (defined __ICCAVR32__) - -/*! \name Compiler Keywords - * - * Port of some keywords from GNU GCC for AVR32 to IAR Embedded Workbench for Atmel AVR32. - */ -//! @{ -#define __asm__ asm -#define __inline__ inline -#define __volatile__ -//! @} - -#endif - - -/*! \name Usual Types - */ -//! @{ -typedef unsigned char Bool; //!< Boolean. -#ifndef __cplusplus -#if !defined(__bool_true_false_are_defined) -typedef unsigned char bool; //!< Boolean. -#endif -#endif -typedef signed char S8 ; //!< 8-bit signed integer. -typedef unsigned char U8 ; //!< 8-bit unsigned integer. -typedef signed short int S16; //!< 16-bit signed integer. -typedef unsigned short int U16; //!< 16-bit unsigned integer. -typedef signed long int S32; //!< 32-bit signed integer. -typedef unsigned long int U32; //!< 32-bit unsigned integer. -typedef signed long long int S64; //!< 64-bit signed integer. -typedef unsigned long long int U64; //!< 64-bit unsigned integer. -typedef float F32; //!< 32-bit floating-point number. -typedef double F64; //!< 64-bit floating-point number. -//! @} - - -/*! \name Status Types - */ -//! @{ -typedef Bool Status_bool_t; //!< Boolean status. -typedef U8 Status_t; //!< 8-bit-coded status. -//! @} - - -/*! \name Aliasing Aggregate Types - */ -//! @{ - -//! 16-bit union. -typedef union -{ - S16 s16 ; - U16 u16 ; - S8 s8 [2]; - U8 u8 [2]; -} Union16; - -//! 32-bit union. -typedef union -{ - S32 s32 ; - U32 u32 ; - S16 s16[2]; - U16 u16[2]; - S8 s8 [4]; - U8 u8 [4]; -} Union32; - -//! 64-bit union. -typedef union -{ - S64 s64 ; - U64 u64 ; - S32 s32[2]; - U32 u32[2]; - S16 s16[4]; - U16 u16[4]; - S8 s8 [8]; - U8 u8 [8]; -} Union64; - -//! Union of pointers to 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - S64 *s64ptr; - U64 *u64ptr; - S32 *s32ptr; - U32 *u32ptr; - S16 *s16ptr; - U16 *u16ptr; - S8 *s8ptr ; - U8 *u8ptr ; -} UnionPtr; - -//! Union of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - volatile S64 *s64ptr; - volatile U64 *u64ptr; - volatile S32 *s32ptr; - volatile U32 *u32ptr; - volatile S16 *s16ptr; - volatile U16 *u16ptr; - volatile S8 *s8ptr ; - volatile U8 *u8ptr ; -} UnionVPtr; - -//! Union of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - const S64 *s64ptr; - const U64 *u64ptr; - const S32 *s32ptr; - const U32 *u32ptr; - const S16 *s16ptr; - const U16 *u16ptr; - const S8 *s8ptr ; - const U8 *u8ptr ; -} UnionCPtr; - -//! Union of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - const volatile S64 *s64ptr; - const volatile U64 *u64ptr; - const volatile S32 *s32ptr; - const volatile U32 *u32ptr; - const volatile S16 *s16ptr; - const volatile U16 *u16ptr; - const volatile S8 *s8ptr ; - const volatile U8 *u8ptr ; -} UnionCVPtr; - -//! Structure of pointers to 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - S64 *s64ptr; - U64 *u64ptr; - S32 *s32ptr; - U32 *u32ptr; - S16 *s16ptr; - U16 *u16ptr; - S8 *s8ptr ; - U8 *u8ptr ; -} StructPtr; - -//! Structure of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - volatile S64 *s64ptr; - volatile U64 *u64ptr; - volatile S32 *s32ptr; - volatile U32 *u32ptr; - volatile S16 *s16ptr; - volatile U16 *u16ptr; - volatile S8 *s8ptr ; - volatile U8 *u8ptr ; -} StructVPtr; - -//! Structure of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - const S64 *s64ptr; - const U64 *u64ptr; - const S32 *s32ptr; - const U32 *u32ptr; - const S16 *s16ptr; - const U16 *u16ptr; - const S8 *s8ptr ; - const U8 *u8ptr ; -} StructCPtr; - -//! Structure of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - const volatile S64 *s64ptr; - const volatile U64 *u64ptr; - const volatile S32 *s32ptr; - const volatile U32 *u32ptr; - const volatile S16 *s16ptr; - const volatile U16 *u16ptr; - const volatile S8 *s8ptr ; - const volatile U8 *u8ptr ; -} StructCVPtr; - -//! @} - -#endif // __AVR32_ABI_COMPILER__ - - -//_____ M A C R O S ________________________________________________________ - -/*! \name Usual Constants - */ -//! @{ -#define DISABLE 0 -#define ENABLE 1 -#define DISABLED 0 -#define ENABLED 1 -#define OFF 0 -#define ON 1 -#define FALSE 0 -#define TRUE 1 -#ifndef __cplusplus -#if !defined(__bool_true_false_are_defined) -#define false FALSE -#define true TRUE -#endif -#endif -#define KO 0 -#define OK 1 -#define PASS 0 -#define FAIL 1 -#define LOW 0 -#define HIGH 1 -#define CLR 0 -#define SET 1 -//! @} - - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -/*! \name Bit-Field Handling - */ -//! @{ - -/*! \brief Reads the bits of a value specified by a given bit-mask. - * - * \param value Value to read bits from. - * \param mask Bit-mask indicating bits to read. - * - * \return Read bits. - */ -#define Rd_bits( value, mask) ((value) & (mask)) - -/*! \brief Writes the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue to write bits to. - * \param mask Bit-mask indicating bits to write. - * \param bits Bits to write. - * - * \return Resulting value with written bits. - */ -#define Wr_bits(lvalue, mask, bits) ((lvalue) = ((lvalue) & ~(mask)) |\ - ((bits ) & (mask))) - -/*! \brief Tests the bits of a value specified by a given bit-mask. - * - * \param value Value of which to test bits. - * \param mask Bit-mask indicating bits to test. - * - * \return \c 1 if at least one of the tested bits is set, else \c 0. - */ -#define Tst_bits( value, mask) (Rd_bits(value, mask) != 0) - -/*! \brief Clears the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to clear bits. - * \param mask Bit-mask indicating bits to clear. - * - * \return Resulting value with cleared bits. - */ -#define Clr_bits(lvalue, mask) ((lvalue) &= ~(mask)) - -/*! \brief Sets the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to set bits. - * \param mask Bit-mask indicating bits to set. - * - * \return Resulting value with set bits. - */ -#define Set_bits(lvalue, mask) ((lvalue) |= (mask)) - -/*! \brief Toggles the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to toggle bits. - * \param mask Bit-mask indicating bits to toggle. - * - * \return Resulting value with toggled bits. - */ -#define Tgl_bits(lvalue, mask) ((lvalue) ^= (mask)) - -/*! \brief Reads the bit-field of a value specified by a given bit-mask. - * - * \param value Value to read a bit-field from. - * \param mask Bit-mask indicating the bit-field to read. - * - * \return Read bit-field. - */ -#define Rd_bitfield( value, mask) (Rd_bits( value, mask) >> ctz(mask)) - -/*! \brief Writes the bit-field of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue to write a bit-field to. - * \param mask Bit-mask indicating the bit-field to write. - * \param bitfield Bit-field to write. - * - * \return Resulting value with written bit-field. - */ -#define Wr_bitfield(lvalue, mask, bitfield) (Wr_bits(lvalue, mask, (U32)(bitfield) << ctz(mask))) - -//! @} - - -/*! \brief This macro is used to test fatal errors. - * - * The macro tests if the expression is FALSE. If it is, a fatal error is - * detected and the application hangs up. - * - * \param expr Expression to evaluate and supposed to be nonzero. - */ -#ifdef _ASSERT_ENABLE_ - #define Assert(expr) \ - {\ - if (!(expr)) while (TRUE);\ - } -#else - #define Assert(expr) -#endif - - -/*! \name Zero-Bit Counting - * - * Under AVR32-GCC, __builtin_clz and __builtin_ctz behave like macros when - * applied to constant expressions (values known at compile time), so they are - * more optimized than the use of the corresponding assembly instructions and - * they can be used as constant expressions e.g. to initialize objects having - * static storage duration, and like the corresponding assembly instructions - * when applied to non-constant expressions (values unknown at compile time), so - * they are more optimized than an assembly periphrasis. Hence, clz and ctz - * ensure a possible and optimized behavior for both constant and non-constant - * expressions. - */ -//! @{ - -/*! \brief Counts the leading zero bits of the given value considered as a 32-bit integer. - * - * \param u Value of which to count the leading zero bits. - * - * \return The count of leading zero bits in \a u. - */ -#if (defined __GNUC__) - #define clz(u) __builtin_clz(u) -#elif (defined __ICCAVR32__) - #define clz(u) __count_leading_zeros(u) -#endif - -/*! \brief Counts the trailing zero bits of the given value considered as a 32-bit integer. - * - * \param u Value of which to count the trailing zero bits. - * - * \return The count of trailing zero bits in \a u. - */ -#if (defined __GNUC__) - #define ctz(u) __builtin_ctz(u) -#elif (defined __ICCAVR32__) - #define ctz(u) __count_trailing_zeros(u) -#endif - -//! @} - - -/*! \name Bit Reversing - */ -//! @{ - -/*! \brief Reverses the bits of \a u8. - * - * \param u8 U8 of which to reverse the bits. - * - * \return Value resulting from \a u8 with reversed bits. - */ -#define bit_reverse8(u8) ((U8)(bit_reverse32((U8)(u8)) >> 24)) - -/*! \brief Reverses the bits of \a u16. - * - * \param u16 U16 of which to reverse the bits. - * - * \return Value resulting from \a u16 with reversed bits. - */ -#define bit_reverse16(u16) ((U16)(bit_reverse32((U16)(u16)) >> 16)) - -/*! \brief Reverses the bits of \a u32. - * - * \param u32 U32 of which to reverse the bits. - * - * \return Value resulting from \a u32 with reversed bits. - */ -#if (defined __GNUC__) - #define bit_reverse32(u32) \ - (\ - {\ - unsigned int __value = (U32)(u32);\ - __asm__ ("brev\t%0" : "+r" (__value) : : "cc");\ - (U32)__value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define bit_reverse32(u32) ((U32)__bit_reverse((U32)(u32))) -#endif - -/*! \brief Reverses the bits of \a u64. - * - * \param u64 U64 of which to reverse the bits. - * - * \return Value resulting from \a u64 with reversed bits. - */ -#define bit_reverse64(u64) ((U64)(((U64)bit_reverse32((U64)(u64) >> 32)) |\ - ((U64)bit_reverse32((U64)(u64)) << 32))) - -//! @} - - -/*! \name Alignment - */ -//! @{ - -/*! \brief Tests alignment of the number \a val with the \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return \c 1 if the number \a val is aligned with the \a n boundary, else \c 0. - */ -#define Test_align(val, n ) (!Tst_bits( val, (n) - 1 ) ) - -/*! \brief Gets alignment of the number \a val with respect to the \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Alignment of the number \a val with respect to the \a n boundary. - */ -#define Get_align( val, n ) ( Rd_bits( val, (n) - 1 ) ) - -/*! \brief Sets alignment of the lvalue number \a lval to \a alg with respect to the \a n boundary. - * - * \param lval Input/output lvalue. - * \param n Boundary. - * \param alg Alignment. - * - * \return New value of \a lval resulting from its alignment set to \a alg with respect to the \a n boundary. - */ -#define Set_align(lval, n, alg) ( Wr_bits(lval, (n) - 1, alg) ) - -/*! \brief Aligns the number \a val with the upper \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Value resulting from the number \a val aligned with the upper \a n boundary. - */ -#define Align_up( val, n ) (((val) + ((n) - 1)) & ~((n) - 1)) - -/*! \brief Aligns the number \a val with the lower \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Value resulting from the number \a val aligned with the lower \a n boundary. - */ -#define Align_down(val, n ) ( (val) & ~((n) - 1)) - -//! @} - - -/*! \name Mathematics - * - * The same considerations as for clz and ctz apply here but AVR32-GCC does not - * provide built-in functions to access the assembly instructions abs, min and - * max and it does not produce them by itself in most cases, so two sets of - * macros are defined here: - * - Abs, Min and Max to apply to constant expressions (values known at - * compile time); - * - abs, min and max to apply to non-constant expressions (values unknown at - * compile time). - */ -//! @{ - -/*! \brief Takes the absolute value of \a a. - * - * \param a Input value. - * - * \return Absolute value of \a a. - * - * \note More optimized if only used with values known at compile time. - */ -#define Abs(a) (((a) < 0 ) ? -(a) : (a)) - -/*! \brief Takes the minimal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Minimal value of \a a and \a b. - * - * \note More optimized if only used with values known at compile time. - */ -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -/*! \brief Takes the maximal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Maximal value of \a a and \a b. - * - * \note More optimized if only used with values known at compile time. - */ -#define Max(a, b) (((a) > (b)) ? (a) : (b)) - -/*! \brief Takes the absolute value of \a a. - * - * \param a Input value. - * - * \return Absolute value of \a a. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define abs(a) \ - (\ - {\ - int __value = (a);\ - __asm__ ("abs\t%0" : "+r" (__value) : : "cc");\ - __value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define abs(a) Abs(a) -#endif - -/*! \brief Takes the minimal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Minimal value of \a a and \a b. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define min(a, b) \ - (\ - {\ - int __value, __arg_a = (a), __arg_b = (b);\ - __asm__ ("min\t%0, %1, %2" : "=r" (__value) : "r" (__arg_a), "r" (__arg_b));\ - __value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define min(a, b) __min(a, b) -#endif - -/*! \brief Takes the maximal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Maximal value of \a a and \a b. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define max(a, b) \ - (\ - {\ - int __value, __arg_a = (a), __arg_b = (b);\ - __asm__ ("max\t%0, %1, %2" : "=r" (__value) : "r" (__arg_a), "r" (__arg_b));\ - __value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define max(a, b) __max(a, b) -#endif - -//! @} - - -/*! \brief Calls the routine at address \a addr. - * - * It generates a long call opcode. - * - * For example, `Long_call(0x80000000)' generates a software reset on a UC3 if - * it is invoked from the CPU supervisor mode. - * - * \param addr Address of the routine to call. - * - * \note It may be used as a long jump opcode in some special cases. - */ -#define Long_call(addr) ((*(void (*)(void))(addr))()) - -/*! \brief Resets the CPU by software. - * - * \warning It shall not be called from the CPU application mode. - */ -#if (defined __GNUC__) - #define Reset_CPU() \ - (\ - {\ - __asm__ __volatile__ (\ - "lddpc r9, 3f\n\t"\ - "mfsr r8, %[SR]\n\t"\ - "bfextu r8, r8, %[SR_M_OFFSET], %[SR_M_SIZE]\n\t"\ - "cp.w r8, 0b001\n\t"\ - "breq 0f\n\t"\ - "sub r8, pc, $ - 1f\n\t"\ - "pushm r8-r9\n\t"\ - "rete\n"\ - "0:\n\t"\ - "mtsr %[SR], r9\n"\ - "1:\n\t"\ - "mov r0, 0\n\t"\ - "mov r1, 0\n\t"\ - "mov r2, 0\n\t"\ - "mov r3, 0\n\t"\ - "mov r4, 0\n\t"\ - "mov r5, 0\n\t"\ - "mov r6, 0\n\t"\ - "mov r7, 0\n\t"\ - "mov r8, 0\n\t"\ - "mov r9, 0\n\t"\ - "mov r10, 0\n\t"\ - "mov r11, 0\n\t"\ - "mov r12, 0\n\t"\ - "mov sp, 0\n\t"\ - "stdsp sp[0], sp\n\t"\ - "ldmts sp, sp\n\t"\ - "mov lr, 0\n\t"\ - "lddpc pc, 2f\n\t"\ - ".balign 4\n"\ - "2:\n\t"\ - ".word _start\n"\ - "3:\n\t"\ - ".word %[RESET_SR]"\ - :\ - : [SR] "i" (AVR32_SR),\ - [SR_M_OFFSET] "i" (AVR32_SR_M_OFFSET),\ - [SR_M_SIZE] "i" (AVR32_SR_M_SIZE),\ - [RESET_SR] "i" (AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))\ - );\ - }\ - ) -#elif (defined __ICCAVR32__) - #define Reset_CPU() \ - {\ - extern void *volatile __program_start;\ - __asm__ __volatile__ (\ - "mov r7, LWRD(__program_start)\n\t"\ - "orh r7, HWRD(__program_start)\n\t"\ - "mov r9, LWRD("ASTRINGZ(AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))")\n\t"\ - "orh r9, HWRD("ASTRINGZ(AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))")\n\t"\ - "mfsr r8, "ASTRINGZ(AVR32_SR)"\n\t"\ - "bfextu r8, r8, "ASTRINGZ(AVR32_SR_M_OFFSET)", "ASTRINGZ(AVR32_SR_M_SIZE)"\n\t"\ - "cp.w r8, 001b\n\t"\ - "breq $ + 10\n\t"\ - "sub r8, pc, -12\n\t"\ - "pushm r8-r9\n\t"\ - "rete\n\t"\ - "mtsr "ASTRINGZ(AVR32_SR)", r9\n\t"\ - "mov r0, 0\n\t"\ - "mov r1, 0\n\t"\ - "mov r2, 0\n\t"\ - "mov r3, 0\n\t"\ - "mov r4, 0\n\t"\ - "mov r5, 0\n\t"\ - "mov r6, 0\n\t"\ - "st.w r0[4], r7\n\t"\ - "mov r7, 0\n\t"\ - "mov r8, 0\n\t"\ - "mov r9, 0\n\t"\ - "mov r10, 0\n\t"\ - "mov r11, 0\n\t"\ - "mov r12, 0\n\t"\ - "mov sp, 0\n\t"\ - "stdsp sp[0], sp\n\t"\ - "ldmts sp, sp\n\t"\ - "mov lr, 0\n\t"\ - "ld.w pc, lr[4]"\ - );\ - __program_start;\ - } -#endif - - -/*! \name System Register Access - */ -//! @{ - -/*! \brief Gets the value of the \a sysreg system register. - * - * \param sysreg Address of the system register of which to get the value. - * - * \return Value of the \a sysreg system register. - */ -#if (defined __GNUC__) - #define Get_system_register(sysreg) __builtin_mfsr(sysreg) -#elif (defined __ICCAVR32__) - #define Get_system_register(sysreg) __get_system_register(sysreg) -#endif - -/*! \brief Sets the value of the \a sysreg system register to \a value. - * - * \param sysreg Address of the system register of which to set the value. - * \param value Value to set the \a sysreg system register to. - */ -#if (defined __GNUC__) - #define Set_system_register(sysreg, value) __builtin_mtsr(sysreg, value) -#elif (defined __ICCAVR32__) - #define Set_system_register(sysreg, value) __set_system_register(sysreg, value) -#endif - -//! @} - - -/*! \name CPU Status Register Access - */ -//! @{ - -/*! \brief Tells whether exceptions are globally enabled. - * - * \return \c 1 if exceptions are globally enabled, else \c 0. - */ -#define Is_global_exception_enabled() (!Tst_bits(Get_system_register(AVR32_SR), AVR32_SR_EM_MASK)) - -/*! \brief Disables exceptions globally. - */ -#if (defined __GNUC__) - #define Disable_global_exception() ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (AVR32_SR_EM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Disable_global_exception() (__set_status_flag(AVR32_SR_EM_OFFSET)) -#endif - -/*! \brief Enables exceptions globally. - */ -#if (defined __GNUC__) - #define Enable_global_exception() ({__asm__ __volatile__ ("csrf\t%0" : : "i" (AVR32_SR_EM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Enable_global_exception() (__clear_status_flag(AVR32_SR_EM_OFFSET)) -#endif - -/*! \brief Tells whether interrupts are globally enabled. - * - * \return \c 1 if interrupts are globally enabled, else \c 0. - */ -#define Is_global_interrupt_enabled() (!Tst_bits(Get_system_register(AVR32_SR), AVR32_SR_GM_MASK)) - -/*! \brief Disables interrupts globally. - */ -#if (defined __GNUC__) - #define Disable_global_interrupt() ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (AVR32_SR_GM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Disable_global_interrupt() (__disable_interrupt()) -#endif - -/*! \brief Enables interrupts globally. - */ -#if (defined __GNUC__) - #define Enable_global_interrupt() ({__asm__ __volatile__ ("csrf\t%0" : : "i" (AVR32_SR_GM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Enable_global_interrupt() (__enable_interrupt()) -#endif - -/*! \brief Tells whether interrupt level \a int_level is enabled. - * - * \param int_level Interrupt level (0 to 3). - * - * \return \c 1 if interrupt level \a int_level is enabled, else \c 0. - */ -#define Is_interrupt_level_enabled(int_level) (!Tst_bits(Get_system_register(AVR32_SR), TPASTE3(AVR32_SR_I, int_level, M_MASK))) - -/*! \brief Disables interrupt level \a int_level. - * - * \param int_level Interrupt level to disable (0 to 3). - */ -#if (defined __GNUC__) - #define Disable_interrupt_level(int_level) ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (TPASTE3(AVR32_SR_I, int_level, M_OFFSET)));}) -#elif (defined __ICCAVR32__) - #define Disable_interrupt_level(int_level) (__set_status_flag(TPASTE3(AVR32_SR_I, int_level, M_OFFSET))) -#endif - -/*! \brief Enables interrupt level \a int_level. - * - * \param int_level Interrupt level to enable (0 to 3). - */ -#if (defined __GNUC__) - #define Enable_interrupt_level(int_level) ({__asm__ __volatile__ ("csrf\t%0" : : "i" (TPASTE3(AVR32_SR_I, int_level, M_OFFSET)));}) -#elif (defined __ICCAVR32__) - #define Enable_interrupt_level(int_level) (__clear_status_flag(TPASTE3(AVR32_SR_I, int_level, M_OFFSET))) -#endif - -/*! \brief Protects subsequent code from interrupts. - */ -#define AVR32_ENTER_CRITICAL_REGION( ) \ - { \ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); \ - Disable_global_interrupt(); // Disable the appropriate interrupts. - -/*! \brief This macro must always be used in conjunction with AVR32_ENTER_CRITICAL_REGION - * so that interrupts are enabled again. - */ -#define AVR32_LEAVE_CRITICAL_REGION( ) \ - if (global_interrupt_enabled) Enable_global_interrupt(); \ - } - -//! @} - - -/*! \name Debug Register Access - */ -//! @{ - -/*! \brief Gets the value of the \a dbgreg debug register. - * - * \param dbgreg Address of the debug register of which to get the value. - * - * \return Value of the \a dbgreg debug register. - */ -#if (defined __GNUC__) - #define Get_debug_register(dbgreg) __builtin_mfdr(dbgreg) -#elif (defined __ICCAVR32__) - #define Get_debug_register(dbgreg) __get_debug_register(dbgreg) -#endif - -/*! \brief Sets the value of the \a dbgreg debug register to \a value. - * - * \param dbgreg Address of the debug register of which to set the value. - * \param value Value to set the \a dbgreg debug register to. - */ -#if (defined __GNUC__) - #define Set_debug_register(dbgreg, value) __builtin_mtdr(dbgreg, value) -#elif (defined __ICCAVR32__) - #define Set_debug_register(dbgreg, value) __set_debug_register(dbgreg, value) -#endif - -//! @} - -#endif // __AVR32_ABI_COMPILER__ - - -//! Boolean evaluating MCU little endianism. -#if ((defined __GNUC__) && (defined __AVR32__)) || ((defined __ICCAVR32__) || (defined __AAVR32__)) - #define LITTLE_ENDIAN_MCU FALSE -#else - #error If you are here, you should check what is exactly the processor you are using... - #define LITTLE_ENDIAN_MCU FALSE -#endif - -// Check that MCU endianism is correctly defined. -#ifndef LITTLE_ENDIAN_MCU - #error YOU MUST define the MCU endianism with LITTLE_ENDIAN_MCU: either FALSE or TRUE -#endif - -//! Boolean evaluating MCU big endianism. -#define BIG_ENDIAN_MCU (!LITTLE_ENDIAN_MCU) - - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -/*! \name MCU Endianism Handling - */ -//! @{ - -#if (LITTLE_ENDIAN_MCU==TRUE) - #define LSB(u16) (((U8 *)&(u16))[0]) //!< Least significant byte of \a u16. - #define MSB(u16) (((U8 *)&(u16))[1]) //!< Most significant byte of \a u16. - - #define LSH(u32) (((U16 *)&(u32))[0]) //!< Least significant half-word of \a u32. - #define MSH(u32) (((U16 *)&(u32))[1]) //!< Most significant half-word of \a u32. - #define LSB0W(u32) (((U8 *)&(u32))[0]) //!< Least significant byte of 1st rank of \a u32. - #define LSB1W(u32) (((U8 *)&(u32))[1]) //!< Least significant byte of 2nd rank of \a u32. - #define LSB2W(u32) (((U8 *)&(u32))[2]) //!< Least significant byte of 3rd rank of \a u32. - #define LSB3W(u32) (((U8 *)&(u32))[3]) //!< Least significant byte of 4th rank of \a u32. - #define MSB3W(u32) LSB0W(u32) //!< Most significant byte of 4th rank of \a u32. - #define MSB2W(u32) LSB1W(u32) //!< Most significant byte of 3rd rank of \a u32. - #define MSB1W(u32) LSB2W(u32) //!< Most significant byte of 2nd rank of \a u32. - #define MSB0W(u32) LSB3W(u32) //!< Most significant byte of 1st rank of \a u32. - - #define LSW(u64) (((U32 *)&(u64))[0]) //!< Least significant word of \a u64. - #define MSW(u64) (((U32 *)&(u64))[1]) //!< Most significant word of \a u64. - #define LSH0(u64) (((U16 *)&(u64))[0]) //!< Least significant half-word of 1st rank of \a u64. - #define LSH1(u64) (((U16 *)&(u64))[1]) //!< Least significant half-word of 2nd rank of \a u64. - #define LSH2(u64) (((U16 *)&(u64))[2]) //!< Least significant half-word of 3rd rank of \a u64. - #define LSH3(u64) (((U16 *)&(u64))[3]) //!< Least significant half-word of 4th rank of \a u64. - #define MSH3(u64) LSH0(u64) //!< Most significant half-word of 4th rank of \a u64. - #define MSH2(u64) LSH1(u64) //!< Most significant half-word of 3rd rank of \a u64. - #define MSH1(u64) LSH2(u64) //!< Most significant half-word of 2nd rank of \a u64. - #define MSH0(u64) LSH3(u64) //!< Most significant half-word of 1st rank of \a u64. - #define LSB0D(u64) (((U8 *)&(u64))[0]) //!< Least significant byte of 1st rank of \a u64. - #define LSB1D(u64) (((U8 *)&(u64))[1]) //!< Least significant byte of 2nd rank of \a u64. - #define LSB2D(u64) (((U8 *)&(u64))[2]) //!< Least significant byte of 3rd rank of \a u64. - #define LSB3D(u64) (((U8 *)&(u64))[3]) //!< Least significant byte of 4th rank of \a u64. - #define LSB4D(u64) (((U8 *)&(u64))[4]) //!< Least significant byte of 5th rank of \a u64. - #define LSB5D(u64) (((U8 *)&(u64))[5]) //!< Least significant byte of 6th rank of \a u64. - #define LSB6D(u64) (((U8 *)&(u64))[6]) //!< Least significant byte of 7th rank of \a u64. - #define LSB7D(u64) (((U8 *)&(u64))[7]) //!< Least significant byte of 8th rank of \a u64. - #define MSB7D(u64) LSB0D(u64) //!< Most significant byte of 8th rank of \a u64. - #define MSB6D(u64) LSB1D(u64) //!< Most significant byte of 7th rank of \a u64. - #define MSB5D(u64) LSB2D(u64) //!< Most significant byte of 6th rank of \a u64. - #define MSB4D(u64) LSB3D(u64) //!< Most significant byte of 5th rank of \a u64. - #define MSB3D(u64) LSB4D(u64) //!< Most significant byte of 4th rank of \a u64. - #define MSB2D(u64) LSB5D(u64) //!< Most significant byte of 3rd rank of \a u64. - #define MSB1D(u64) LSB6D(u64) //!< Most significant byte of 2nd rank of \a u64. - #define MSB0D(u64) LSB7D(u64) //!< Most significant byte of 1st rank of \a u64. - -#elif (BIG_ENDIAN_MCU==TRUE) - #define MSB(u16) (((U8 *)&(u16))[0]) //!< Most significant byte of \a u16. - #define LSB(u16) (((U8 *)&(u16))[1]) //!< Least significant byte of \a u16. - - #define MSH(u32) (((U16 *)&(u32))[0]) //!< Most significant half-word of \a u32. - #define LSH(u32) (((U16 *)&(u32))[1]) //!< Least significant half-word of \a u32. - #define MSB0W(u32) (((U8 *)&(u32))[0]) //!< Most significant byte of 1st rank of \a u32. - #define MSB1W(u32) (((U8 *)&(u32))[1]) //!< Most significant byte of 2nd rank of \a u32. - #define MSB2W(u32) (((U8 *)&(u32))[2]) //!< Most significant byte of 3rd rank of \a u32. - #define MSB3W(u32) (((U8 *)&(u32))[3]) //!< Most significant byte of 4th rank of \a u32. - #define LSB3W(u32) MSB0W(u32) //!< Least significant byte of 4th rank of \a u32. - #define LSB2W(u32) MSB1W(u32) //!< Least significant byte of 3rd rank of \a u32. - #define LSB1W(u32) MSB2W(u32) //!< Least significant byte of 2nd rank of \a u32. - #define LSB0W(u32) MSB3W(u32) //!< Least significant byte of 1st rank of \a u32. - - #define MSW(u64) (((U32 *)&(u64))[0]) //!< Most significant word of \a u64. - #define LSW(u64) (((U32 *)&(u64))[1]) //!< Least significant word of \a u64. - #define MSH0(u64) (((U16 *)&(u64))[0]) //!< Most significant half-word of 1st rank of \a u64. - #define MSH1(u64) (((U16 *)&(u64))[1]) //!< Most significant half-word of 2nd rank of \a u64. - #define MSH2(u64) (((U16 *)&(u64))[2]) //!< Most significant half-word of 3rd rank of \a u64. - #define MSH3(u64) (((U16 *)&(u64))[3]) //!< Most significant half-word of 4th rank of \a u64. - #define LSH3(u64) MSH0(u64) //!< Least significant half-word of 4th rank of \a u64. - #define LSH2(u64) MSH1(u64) //!< Least significant half-word of 3rd rank of \a u64. - #define LSH1(u64) MSH2(u64) //!< Least significant half-word of 2nd rank of \a u64. - #define LSH0(u64) MSH3(u64) //!< Least significant half-word of 1st rank of \a u64. - #define MSB0D(u64) (((U8 *)&(u64))[0]) //!< Most significant byte of 1st rank of \a u64. - #define MSB1D(u64) (((U8 *)&(u64))[1]) //!< Most significant byte of 2nd rank of \a u64. - #define MSB2D(u64) (((U8 *)&(u64))[2]) //!< Most significant byte of 3rd rank of \a u64. - #define MSB3D(u64) (((U8 *)&(u64))[3]) //!< Most significant byte of 4th rank of \a u64. - #define MSB4D(u64) (((U8 *)&(u64))[4]) //!< Most significant byte of 5th rank of \a u64. - #define MSB5D(u64) (((U8 *)&(u64))[5]) //!< Most significant byte of 6th rank of \a u64. - #define MSB6D(u64) (((U8 *)&(u64))[6]) //!< Most significant byte of 7th rank of \a u64. - #define MSB7D(u64) (((U8 *)&(u64))[7]) //!< Most significant byte of 8th rank of \a u64. - #define LSB7D(u64) MSB0D(u64) //!< Least significant byte of 8th rank of \a u64. - #define LSB6D(u64) MSB1D(u64) //!< Least significant byte of 7th rank of \a u64. - #define LSB5D(u64) MSB2D(u64) //!< Least significant byte of 6th rank of \a u64. - #define LSB4D(u64) MSB3D(u64) //!< Least significant byte of 5th rank of \a u64. - #define LSB3D(u64) MSB4D(u64) //!< Least significant byte of 4th rank of \a u64. - #define LSB2D(u64) MSB5D(u64) //!< Least significant byte of 3rd rank of \a u64. - #define LSB1D(u64) MSB6D(u64) //!< Least significant byte of 2nd rank of \a u64. - #define LSB0D(u64) MSB7D(u64) //!< Least significant byte of 1st rank of \a u64. - -#else - #error Unknown endianism. -#endif - -//! @} - - -/*! \name Endianism Conversion - * - * The same considerations as for clz and ctz apply here but AVR32-GCC's - * __builtin_bswap_16 and __builtin_bswap_32 do not behave like macros when - * applied to constant expressions, so two sets of macros are defined here: - * - Swap16, Swap32 and Swap64 to apply to constant expressions (values known - * at compile time); - * - swap16, swap32 and swap64 to apply to non-constant expressions (values - * unknown at compile time). - */ -//! @{ - -/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). - * - * \param u16 U16 of which to toggle the endianism. - * - * \return Value resulting from \a u16 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap16(u16) ((U16)(((U16)(u16) >> 8) |\ - ((U16)(u16) << 8))) - -/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). - * - * \param u32 U32 of which to toggle the endianism. - * - * \return Value resulting from \a u32 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap32(u32) ((U32)(((U32)Swap16((U32)(u32) >> 16)) |\ - ((U32)Swap16((U32)(u32)) << 16))) - -/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). - * - * \param u64 U64 of which to toggle the endianism. - * - * \return Value resulting from \a u64 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap64(u64) ((U64)(((U64)Swap32((U64)(u64) >> 32)) |\ - ((U64)Swap32((U64)(u64)) << 32))) - -/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). - * - * \param u16 U16 of which to toggle the endianism. - * - * \return Value resulting from \a u16 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define swap16(u16) ((U16)__builtin_bswap_16((U16)(u16))) -#elif (defined __ICCAVR32__) - #define swap16(u16) ((U16)__swap_bytes_in_halfwords((U16)(u16))) -#endif - -/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). - * - * \param u32 U32 of which to toggle the endianism. - * - * \return Value resulting from \a u32 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define swap32(u32) ((U32)__builtin_bswap_32((U32)(u32))) -#elif (defined __ICCAVR32__) - #define swap32(u32) ((U32)__swap_bytes((U32)(u32))) -#endif - -/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). - * - * \param u64 U64 of which to toggle the endianism. - * - * \return Value resulting from \a u64 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#define swap64(u64) ((U64)(((U64)swap32((U64)(u64) >> 32)) |\ - ((U64)swap32((U64)(u64)) << 32))) - -//! @} - - -/*! \name Target Abstraction - */ -//! @{ - -#define _GLOBEXT_ extern //!< extern storage-class specifier. -#define _CONST_TYPE_ const //!< const type qualifier. -#define _MEM_TYPE_SLOW_ //!< Slow memory type. -#define _MEM_TYPE_MEDFAST_ //!< Fairly fast memory type. -#define _MEM_TYPE_FAST_ //!< Fast memory type. - -typedef U8 Byte; //!< 8-bit unsigned integer. - -#define memcmp_ram2ram memcmp //!< Target-specific memcmp of RAM to RAM. -#define memcmp_code2ram memcmp //!< Target-specific memcmp of RAM to NVRAM. -#define memcpy_ram2ram memcpy //!< Target-specific memcpy from RAM to RAM. -#define memcpy_code2ram memcpy //!< Target-specific memcpy from NVRAM to RAM. - -#define LSB0(u32) LSB0W(u32) //!< Least significant byte of 1st rank of \a u32. -#define LSB1(u32) LSB1W(u32) //!< Least significant byte of 2nd rank of \a u32. -#define LSB2(u32) LSB2W(u32) //!< Least significant byte of 3rd rank of \a u32. -#define LSB3(u32) LSB3W(u32) //!< Least significant byte of 4th rank of \a u32. -#define MSB3(u32) MSB3W(u32) //!< Most significant byte of 4th rank of \a u32. -#define MSB2(u32) MSB2W(u32) //!< Most significant byte of 3rd rank of \a u32. -#define MSB1(u32) MSB1W(u32) //!< Most significant byte of 2nd rank of \a u32. -#define MSB0(u32) MSB0W(u32) //!< Most significant byte of 1st rank of \a u32. - -//! @} - -#endif // __AVR32_ABI_COMPILER__ - - -#endif // _COMPILER_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h deleted file mode 100644 index ca516ee0020..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h +++ /dev/null @@ -1,136 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ****************************************************************** - * - * \brief ISP configuration file. - * - * This file contains the possible external configuration of the ISP. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USB module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ***************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _CONF_ISP_H_ -#define _CONF_ISP_H_ - -#include -#include "compiler.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -#define PRODUCT_MANUFACTURER_ID 0x58 -#define PRODUCT_FAMILY_ID 0x20 - -#define ISP_VERSION 0x10 -#define ISP_ID0 0x00 -#define ISP_ID1 0x00 - -#define ISP_CFG1 (*(volatile U32 *)ISP_CFG1_ADDRESS) -#define ISP_CFG1_ADDRESS (AVR32_FLASHC_USER_PAGE_ADDRESS + ISP_CFG1_OFFSET) -#define ISP_CFG1_OFFSET 0x000001FC -#define ISP_CFG1_SIZE 4 - -#define ISP_CFG1_BOOT_KEY1 16 -#define ISP_CFG1_BOOT_KEY1_MASK 0xFFFF0000 -#define ISP_CFG1_BOOT_KEY1_OFFSET 16 -#define ISP_CFG1_BOOT_KEY1_SIZE 16 -#define ISP_CFG1_BOOT_KEY1_VALUE 0xE11E - -#define ISP_CFG1_FORCE 9 -#define ISP_CFG1_FORCE_MASK 0x00000200 -#define ISP_CFG1_FORCE_OFFSET 9 -#define ISP_CFG1_FORCE_SIZE 1 - -#define ISP_CFG1_IO_COND_EN 8 -#define ISP_CFG1_IO_COND_EN_MASK 0x00000100 -#define ISP_CFG1_IO_COND_EN_OFFSET 8 -#define ISP_CFG1_IO_COND_EN_SIZE 1 - -#define ISP_CFG1_CRC8 0 -#define ISP_CFG1_CRC8_MASK 0x000000FF -#define ISP_CFG1_CRC8_OFFSET 0 -#define ISP_CFG1_CRC8_SIZE 8 -#define ISP_CFG1_CRC8_POLYNOMIAL 0x107 - -#define ISP_CFG2 (*(volatile U32 *)ISP_CFG2_ADDRESS) -#define ISP_CFG2_ADDRESS (AVR32_FLASHC_USER_PAGE_ADDRESS + ISP_CFG2_OFFSET) -#define ISP_CFG2_OFFSET 0x000001F8 -#define ISP_CFG2_SIZE 4 - -#define ISP_CFG2_BOOT_KEY 17 -#define ISP_CFG2_BOOT_KEY_MASK 0xFFFE0000 -#define ISP_CFG2_BOOT_KEY_OFFSET 17 -#define ISP_CFG2_BOOT_KEY_SIZE 15 -#define ISP_CFG2_BOOT_KEY_VALUE 0x494F - -#define ISP_CFG2_IO_COND_LEVEL 16 -#define ISP_CFG2_IO_COND_LEVEL_MASK 0x00010000 -#define ISP_CFG2_IO_COND_LEVEL_OFFSET 16 -#define ISP_CFG2_IO_COND_LEVEL_SIZE 1 - -#define ISP_CFG2_IO_COND_PIN 8 -#define ISP_CFG2_IO_COND_PIN_MASK 0x0000FF00 -#define ISP_CFG2_IO_COND_PIN_OFFSET 8 -#define ISP_CFG2_IO_COND_PIN_SIZE 8 - -#define ISP_CFG2_CRC8 0 -#define ISP_CFG2_CRC8_MASK 0x000000FF -#define ISP_CFG2_CRC8_OFFSET 0 -#define ISP_CFG2_CRC8_SIZE 8 -#define ISP_CFG2_CRC8_POLYNOMIAL 0x107 - -#define ISP_KEY (*(volatile U32 *)ISP_KEY_ADDRESS) -#define ISP_KEY_ADDRESS (AVR32_SRAM_ADDRESS + ISP_KEY_OFFSET) -#define ISP_KEY_OFFSET 0x00000000 -#define ISP_KEY_SIZE 4 -#define ISP_KEY_VALUE ('I' << 24 | 'S' << 16 | 'P' << 8 | 'K') - -#ifndef ISP_OSC - #define ISP_OSC 0 -#endif - -#define DFU_FRAME_LENGTH 2048 - -#define PROGRAM_START_ADDRESS (AVR32_FLASH_ADDRESS + PROGRAM_START_OFFSET) -#define PROGRAM_START_OFFSET 0x00002000 - - -#endif // _CONF_ISP_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/parts.h b/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/parts.h deleted file mode 100644 index 6637b2f76e8..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/SOFTWARE_FRAMEWORK/UTILS/parts.h +++ /dev/null @@ -1,203 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Arch file for AVR32. - * - * This file defines common AVR32 UC3 series. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _ARCH_H_ -#define _ARCH_H_ - -// UC3 A Series -#define UC3A0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3A0128__) || \ - defined (__AVR32_UC3A0256__) || \ - defined (__AVR32_UC3A0512__) || \ - defined (__AVR32_UC3A0512ES__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3A0128__) || \ - defined (__AT32UC3A0256__) || \ - defined (__AT32UC3A0512__) || \ - defined (__AT32UC3A0512ES__))) - -#define UC3A1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3A1128__) || \ - defined (__AVR32_UC3A1256__) || \ - defined (__AVR32_UC3A1512__) || \ - defined (__AVR32_UC3A1512ES__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3A1128__) || \ - defined (__AT32UC3A1256__) || \ - defined (__AT32UC3A1512__) || \ - defined (__AT32UC3A1512ES__))) - -#define UC3A3 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3A364__) || \ - defined (__AVR32_UC3A364S__) || \ - defined (__AVR32_UC3A3128__) || \ - defined (__AVR32_UC3A3128S__) || \ - defined (__AVR32_UC3A3256__) || \ - defined (__AVR32_UC3A3256S__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3A364__) || \ - defined (__AT32UC3A364S__) || \ - defined (__AT32UC3A3128__) || \ - defined (__AT32UC3A3128S__) || \ - defined (__AT32UC3A3256__) || \ - defined (__AT32UC3A3256S__))) - -#define UC3A (UC3A0 || UC3A1 || UC3A3) - -// UC3 B Series -#define UC3B0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3B064__) || \ - defined (__AVR32_UC3B0128__) || \ - defined (__AVR32_UC3B0256__) || \ - defined (__AVR32_UC3B0256ES__) || \ - defined (__AVR32_UC3B0512__) || \ - defined (__AVR32_UC3B0512REVC_))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3B064__) || \ - defined (__AT32UC3B0128__) || \ - defined (__AT32UC3B0256__) || \ - defined (__AT32UC3B0256ES__) || \ - defined (__AT32UC3B0512__) || \ - defined (__AT32UC3B0512REVC__))) - -#define UC3B1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3B164__) || \ - defined (__AVR32_UC3B1128__) || \ - defined (__AVR32_UC3B1256__) || \ - defined (__AVR32_UC3B1256ES__) || \ - defined (__AVR32_UC3B1512__) || \ - defined (__AVR32_UC3B1512ES__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3B164__) || \ - defined (__AT32UC3B1128__) || \ - defined (__AT32UC3B1256__) || \ - defined (__AT32UC3B1256ES__) || \ - defined (__AT32UC3B1512__) || \ - defined (__AT32UC3B1512REVC__))) - -#define UC3B (UC3B0 || UC3B1 ) - -// UC3 C Series -#define UC3C0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3C064C__) || \ - defined (__AVR32_UC3C0128C__) || \ - defined (__AVR32_UC3C0256C__) || \ - defined (__AVR32_UC3C0512CREVC__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3C064C__) || \ - defined (__AT32UC3C0128C__) || \ - defined (__AT32UC3C0256C__) || \ - defined (__AT32UC3C0512C__))) - -#define UC3C1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3C164C__) || \ - defined (__AVR32_UC3C1128C__) || \ - defined (__AVR32_UC3C1256C__) || \ - defined (__AVR32_UC3C1512CREVC__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3C164C__) || \ - defined (__AT32UC3C1128C__) || \ - defined (__AT32UC3C1256C__) || \ - defined (__AT32UC3C1512C__))) - -#define UC3C2 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3C264C__) || \ - defined (__AVR32_UC3C2128C__) || \ - defined (__AVR32_UC3C2256C__) || \ - defined (__AVR32_UC3C2512CREVC__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3C264C__) || \ - defined (__AT32UC3C2128C__) || \ - defined (__AT32UC3C2256C__) || \ - defined (__AT32UC3C2512C__))) - -#define UC3C (UC3C0 || UC3C1 || UC3C2) - -// UC3 L Device series -#define UC3L0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L016__) || \ - defined (__AVR32_UC3L032__) || \ - defined (__AVR32_UC3L064__) || \ - defined (__AVR32_UC3L064REVB__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L016__) || \ - defined (__AT32UC3L032__) || \ - defined (__AT32UC3L064__) || \ - defined (__AT32UC3L064REVB__))) - -#define UC3L1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L116__) || \ - defined (__AVR32_UC3L132__) || \ - defined (__AVR32_UC3L164__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L116__) || \ - defined (__AT32UC3L132__) || \ - defined (__AT32UC3L164__))) - -#define UC3L2 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L216__) || \ - defined (__AVR32_UC3L232__) || \ - defined (__AVR32_UC3L264__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L216__) || \ - defined (__AT32UC3L232__) || \ - defined (__AT32UC3L264__))) - -#define UC3L3 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L316__) || \ - defined (__AVR32_UC3L332__) || \ - defined (__AVR32_UC3L364__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L316__) || \ - defined (__AT32UC3L332__) || \ - defined (__AT32UC3L364__))) - -#define UC3L (UC3L0 || UC3L1 || UC3L2 || UC3L3) - -#endif // _ARCH_H_ diff --git a/libraries/WiFi/extras/wifiHD/src/ard_spi.c b/libraries/WiFi/extras/wifiHD/src/ard_spi.c deleted file mode 100644 index 8bd288ba17d..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/ard_spi.c +++ /dev/null @@ -1,1969 +0,0 @@ -/* - * ard_spi.c - * - * Created on: May 27, 2010 - * Author: mlf by Metodo2 srl - */ - -//#define _APP_DEBUG_ - -#include -#include "board.h" -#include "gpio.h" -#include "usart.h" -#include "ard_spi.h" -#include "ard_tcp.h" -#include "wifi_spi.h" -#include "wl_cm.h" -#include "ard_utils.h" -#include "intc.h" -#include "spi.h" -#include "debug.h" -#include "delay.h" -#include "eic.h" -#include "timer.h" -#include "lwip/dns.h" -#include -#include "util.h" -#include "lwip/udp.h" -#include "lwip_setup.h" - -extern const char* fwVersion; - -/*! \name USART Settings - */ -//! @{ -#if BOARD == EVK1105 -# define ARD_USART_SPI (&AVR32_USART1) -# define ARD_USART_SPI_SCK_PIN AVR32_USART1_CLK_0_PIN -# define ARD_USART_SPI_SCK_FUNCTION AVR32_USART1_CLK_0_FUNCTION -# define ARD_USART_SPI_MISO_PIN AVR32_USART1_TXD_0_0_PIN -# define ARD_USART_SPI_MISO_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define ARD_USART_SPI_MOSI_PIN AVR32_USART1_RXD_0_0_PIN -# define ARD_USART_SPI_MOSI_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define ARD_USART_SPI_NSS_PIN AVR32_USART1_CTS_0_0_PIN -# define ARD_USART_SPI_NSS_FUNCTION AVR32_USART1_CTS_0_0_FUNCTION -# define ARD_USART_SPI_IRQ AVR32_USART1_IRQ -#endif -#if BOARD == ARDUINO -# define ARD_SPI (&AVR32_SPI0) -#define EXT_INT_PIN_LINE1 AVR32_EIC_EXTINT_5_PIN -#define EXT_INT_FUNCTION_LINE1 AVR32_EIC_EXTINT_5_FUNCTION -#define EXT_INT_LINE1 EXT_INT5 -#define EXT_INT_IRQ_LINE1 AVR32_EIC_IRQ_5 -#define EXT_INT_NB_LINES 1 -#endif - -/* These defines should be adjusted to match the application */ -/*! \brief CPU core speed in Hz */ -#define CPUHZ 60000000 -/*! \brief Number of bytes in the receive buffer when operating in slave mode */ -#define BUFFERSIZE 64 -/*! \brief A adjustable delay avoiding multiple requests on the switches */ -//#define TIMEOUT 150000 -#define TIMEOUT CPUHZ/200 -/*! \brief Number of bits in each SPI package*/ -#define SPI_BITS 8 -/*! \brief SPI slave speed in Hz */ -#define SPI_SLAVE_SPEED 1000000 - - -#ifndef CMD_MAX_LEN -#define CMD_MAX_LEN 1024 -#endif -#ifndef REPLY_MAX_LEN -#define REPLY_MAX_LEN 1024 -#endif - -#define _BUFFERSIZE 100 - -extern void tcp_debug_print_pcbs(void); -extern bool ifStatus; -extern bool scanNetCompleted; - -static char buf[CMD_MAX_LEN]; -static char reply[REPLY_MAX_LEN]; -static uint16_t cmdCorr = 0; -static uint16_t count = 0; -static uint16_t replyCount = 0; -static cmd_spi_state_t state = SPI_CMD_IDLE; -int receivedChars = 0; -static uint8_t _receiveBuffer[_BUFFERSIZE]; -bool startReply = false; -bool end_write = false; //TODO only for debug - -// Signal indicating a new command is coming from SPI interface -static volatile Bool startRecvCmdSignal = FALSE; - -#define MAX_CMD_NUM 36 -typedef struct sCmd_spi_list{ - cmd_spi_cb_t cb; - char cmd_id; - cmd_spi_rcb_t reply_cb; - void* ctx; - char flags; -}tCmd_spi_list; - -static tCmd_spi_list cmd_spi_list[MAX_CMD_NUM] = { {0} }; - -#ifdef _SPI_STATS_ -typedef struct sStatSpi -{ - int timeoutIntErr; - int timeoutErr; - int txErr; - int rxErr; - int wrongFrame; - int frameDisalign; - int overrideFrame; - int lastCmd; - int lastError; - unsigned long status; -}tStatSpi; - -tStatSpi statSpi = {0}; - -void initStatSpi() -{ - statSpi.lastCmd = 0; - statSpi.lastError = 0; - statSpi.status= 0; - statSpi.txErr = 0; - statSpi.rxErr = 0; - statSpi.timeoutErr= 0; - statSpi.timeoutIntErr= 0; - statSpi.wrongFrame = 0; - statSpi.frameDisalign = 0; - statSpi.overrideFrame = 0; -} - -void printStatSpi() -{ - printk("totSpiCmds\t: 0x%x\n", cmdCorr); - printk("lastCmd \t: 0x%x\n", statSpi.lastCmd); - printk("lastErr \t: 0x%x\n", statSpi.lastError); - printk("spiStatus\t: 0x%X\n", statSpi.status); - printk("spiTxErr \t: 0x%x\n", statSpi.txErr); - printk("spiRxErr \t: 0x%x\n", statSpi.rxErr); - printk("spiTmoErr\t: 0x%x\n", statSpi.timeoutErr); - printk("spiTmoIntErr\t: 0x%x\n", statSpi.timeoutIntErr); - printk("wrongFrame\t: 0x%x\n", statSpi.wrongFrame); - printk("disalFrame\t: 0x%x\n", statSpi.frameDisalign); - printk("overrideFrame\t: 0x%x\n", statSpi.overrideFrame); -} - -cmd_state_t -cmd_statSpi(int argc, char* argv[], void* ctx) -{ - printStatSpi(); - return CMD_DONE; -} - -cmd_state_t -cmd_resetStatSpi(int argc, char* argv[], void* ctx) -{ - initStatSpi(); - return CMD_DONE; -} -#endif - -#define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0]) -#define RETURN_ERR(e) return (e==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR; -#define RESET_USART_CSR(usart) usart->cr = AVR32_USART_CR_RSTSTA_MASK; - -int result = WL_CONNECT_FAILED; //Store the result of the last operation - -void* mapSockTCP[MAX_SOCK_NUM][MAX_MODE_NUM]; - -//Udp RemoteIp and remote Port -static tRemoteClient remoteClients[MAX_SOCK_NUM] = {{0,0}}; - -void setRemoteClient(uint16_t sock, uint32_t _ipaddr, uint16_t _port) -{ - if (sock < MAX_SOCK_NUM) - { - remoteClients[sock].ipaddr = _ipaddr; - remoteClients[sock].port = _port; - } -} - -tRemoteClient* getRemoteClient(uint16_t sock) -{ - if (sock < MAX_SOCK_NUM) - { - return &remoteClients[sock]; - } - return NULL; -} - -struct netif* ard_netif = NULL; - -// Network list retrived in the last scanNetwork -static struct wl_network_list_t network_list = { 0 }; - -struct ip_addr _hostIpAddr; - -static bool hostIpAddrFound = false; - -void* getTTCP(uint8_t sock, uint8_t mode) -{ - if (sock < MAX_SOCK_NUM) - return mapSockTCP[sock][mode]; - return NULL; -} - -int getSock(void * _ttcp) -{ - if (_ttcp != NULL) - { - int i = 0; - for (; istart_time; - uint32_t bytes = ttcp->mode == TTCP_MODE_TRANSMIT ? ttcp->nbuf - * ttcp->buflen : ttcp->recved; - - if (ttcp->verbose) - printk("\n"); - - printk("TTCP [%p]: %d bytes processed, %d.%d KB/s (%s/%s)\n", ttcp, bytes, - bytes / ms, bytes % ms, ProtMode2Str(ttcp->udp), - Mode2Str(ttcp->mode)); -} -#endif - -void showTTCPstatus() -{ - printk("IF status: %s\n", (ifStatus) ? "UP":"DOWN"); - printk("CONN status: %s\n", (_connected) ? "UP":"DOWN"); - - int i = 0; - for (; iudp), Mode2Str(_ttcp->mode), ip2str(_ttcp->addr), _ttcp->port); - if (_ttcp->udp == TCP_MODE) - { - int j = 0; - for (; jtpcb[j]){ - printk("[%d tpcp-%p]-Status:%d\n", j, _ttcp->tpcb[j], _ttcp->tpcb[j]->state); - } - } - - if (_ttcp->lpcb){ - printk("[tlcp-%p]-Status:%d\n", _ttcp->lpcb, _ttcp->lpcb->state); - } - }else{ - if (_ttcp->upcb){ - struct ip_addr loc = _ttcp->upcb->local_ip; - printk("[upcp-%p] flags:0x%x local:%s[0x%x]-%d\n", - _ttcp->upcb, _ttcp->upcb->flags, - ip2str(loc), loc, _ttcp->upcb->local_port); - tRemoteClient remote = {0,0};; - getRemoteData(i, ii, &remote); - struct ip_addr ipaddr = { remote.ipaddr }; - printk("remote:%s(0x%x)-%d\n", ip2str(ipaddr), remote.ipaddr, remote.port); - } - } - //ard_tcp_print_stats(_ttcp); - printk("Data avail:%s\n", isAvailTcpDataByte(i)?"YES":"NO"); - printk("------------------------------\n"); - } - } - } - - tcp_debug_print_pcbs(); -} - -int write_stream(volatile avr32_spi_t *spi, const char *stream, uint16_t len) -{ - uint16_t _len = 0; - unsigned short dummy=0; - - do { - //SIGN1_DN(); - if (spi_write(spi, *stream) == SPI_ERROR_TIMEOUT) - { -#ifdef _SPI_STATS_ - statSpi.timeoutErr++; - statSpi.txErr++; - statSpi.lastError = SPI_ERROR_TIMEOUT; - statSpi.status = spi_getStatus(spi); -#endif - return SPI_ERROR_TIMEOUT; - } - else - { - stream++; - _len++; - spi_read(spi,&dummy); - } - //SIGN1_UP(); - }while (_len < len); - return SPI_OK; -} - -void sendError() -{ - AVAIL_FOR_SPI(); - if (spi_write(&AVR32_SPI, ERR_CMD) != SPI_ERROR_TIMEOUT) - { - //Wait to empty the buffer - while(!spi_writeRegisterEmptyCheck(&AVR32_SPI)); - } - BUSY_FOR_SPI(); - WARN("Send SPI error!\n"); -} - -#define ENABLE_SPI_INT() do { \ - volatile avr32_spi_t *spi = ARD_SPI; \ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); \ - if (global_interrupt_enabled) Disable_global_interrupt(); \ - spi->IER.rdrf = 1; spi->IER.rxbuff = 1; spi->IER.endrx = 1; \ - if (global_interrupt_enabled) Enable_global_interrupt(); \ -}while(0); - -#define DISABLE_SPI_INT() do { \ - volatile avr32_spi_t *spi = ARD_SPI; \ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); \ - if (global_interrupt_enabled) Disable_global_interrupt(); \ - spi->IDR.rdrf = 1; spi->IDR.rxbuff = 1; spi->IDR.endrx = 1; \ - if (global_interrupt_enabled) Enable_global_interrupt(); \ -}while(0); - -#define CLEAR_SPI_INT() do { \ - eic_clear_interrupt_line(&AVR32_EIC, AVR32_SPI0_IRQ); \ - }while(0); - -int spi_add_cmd(char _cmd_id, cmd_spi_cb_t cb, cmd_spi_rcb_t rcb, void* ctx, - char flag) { - U32 i; - for (i = 0; i < ARRAY_SIZE(cmd_spi_list); i++) - if (!cmd_spi_list[i].cb) - break; - - if (i == ARRAY_SIZE(cmd_spi_list)) - { - printk("List Commands full!\n"); - return -1; - } - cmd_spi_list[i].cmd_id = _cmd_id; - cmd_spi_list[i].cb = cb; - cmd_spi_list[i].reply_cb = rcb; - cmd_spi_list[i].ctx = ctx; - cmd_spi_list[i].flags = flag; - return 0; -} - -int set_net_cmd_cb(int numParam, char* buf, void* ctx) { - struct wl_ssid_t ssid; - wl_err_t err = WL_FAILURE; - tParam* param = (tParam*) buf; - - if (param->paramLen < WL_SSID_MAX_LENGTH) { - memcpy(ssid.ssid, ¶m->param, param->paramLen); - ssid.len = param->paramLen; - ssid.ssid[ssid.len] = 0; - INFO_SPI("SSID:%s\n", ssid.ssid); - //dump(ssid.ssid, ssid.len); - err = wl_cm_set_network(&ssid, NULL); - if (err != 1) - WARN("err=%d\n", err); - } else { - WARN("SSID len out of range"); - } - return err; -} - -extern uint8_t ascii_to_key(char *outp, const char *inp); - -int set_key_cmd_cb(int numParam, char* buf, void* ctx) { - struct wl_ssid_t ssid; - struct wl_mac_addr_t bssid; - uint8_t idx=0, len=0; - char key[13], key_hex[27]; - char keyIdx[2]; - wl_err_t err = WL_SUCCESS; - tParam* params = (tParam*) buf; - - INFO_SPI("%s params=%d\n", __FUNCTION__, numParam); - - // SSID - memset(&ssid, 0, sizeof ssid); - - if (params->paramLen < WL_SSID_MAX_LENGTH) { - memcpy(ssid.ssid, ¶ms->param, params->paramLen); - ssid.len = params->paramLen; - INFO_SPI("%s\n", ssid.ssid); - } else { - //printk("SSID len out of range"); - RETURN_ERR(WL_FAILURE) - } - - params = (tParam*)((char*)buf+PARAM_LEN_SIZE+params->paramLen); - strncpy(keyIdx, (const char*)¶ms->param, params->paramLen); - keyIdx[(uint8_t)params->paramLen]='\0'; - - idx = (uint8_t)atoi(keyIdx); - // KEY IDX - if ((params->paramLen != 1)||(idx < 0)||(idx > 3)){ - //printk("KEY IDX out of range %d\n", idx); - RETURN_ERR(WL_FAILURE) - } - - params = (tParam*)((char*)params+PARAM_LEN_SIZE+params->paramLen); - strncpy(key_hex, (const char*)¶ms->param, params->paramLen); - key_hex[(uint8_t)params->paramLen]='\0'; - len = ascii_to_key(key, key_hex); - // KEY - if (( len != 5)&&(len != 13)) - { - //printk("KEY len out of range %d", len); - RETURN_ERR(WL_FAILURE) - } -#if 0 - printk("KEY IDX = %d\n", idx); - dump(key, len); - printk("KEY len %d\n", len); -#endif - memset(&bssid.octet, 0xff, sizeof bssid.octet); - - wl_add_wep_key(idx, len, key, &bssid); - //wl_set_auth_mode(AUTH_MODE_SHARED_KEY); - wl_set_default_wep_key(idx); - - //Connect - err = wl_cm_set_network(&ssid, NULL); - if (err != 1) - WARN("err=%d\n", err); - RETURN_ERR(err) -} - -int set_passphrase_cmd_cb(int numParam, char* buf, void* ctx) { - struct wl_network_t net; - char pass[64]; - wl_err_t err = WL_SUCCESS; - tParam* params = (tParam*) buf; - - INFO_SPI("%s params=%d\n", __FUNCTION__, numParam); - - memset(&net, 0, sizeof net); - memset(net.bssid.octet, 0xFF, sizeof net.bssid.octet); - - net.enc_type = ENC_TYPE_AUTO; - - // SSID - if (params->paramLen < WL_SSID_MAX_LENGTH) { - memcpy(net.ssid.ssid, ¶ms->param, params->paramLen); - net.ssid.len = params->paramLen; - INFO_SPI("%s %d\n", net.ssid.ssid, net.ssid.len); - } else { - //printk("SSID len out of range"); - RETURN_ERR(WL_FAILURE) - } - params = (tParam*)((char*)buf+PARAM_LEN_SIZE+params->paramLen); - // PASSPHRASE - - strncpy(pass, (const char*)¶ms->param, params->paramLen); - pass[(uint8_t)params->paramLen]='\0'; - INFO_SPI("Pass: %s %d\n", pass, params->paramLen); - - if (wl_set_passphrase(&net, - pass, - params->paramLen, - ENC_TYPE_AUTO, - AUTH_MODE_AUTO) - != WL_SUCCESS) { - WARN("%s : Failed to add passphrase\n", __func__); - - RETURN_ERR(WL_FAILURE) - } - printk("Connect to network..."); - //Connect - err = wl_cm_set_network(&net.ssid, NULL); - if (err != 1) - printk("err=%d\n", err); - else - printk("OK\n"); - RETURN_ERR(err) -} - -int set_ip_config_cmd_cb(int numParam, char* buf, void* ctx) { - struct ip_addr lwip_addr; - struct ctx_server *hs = ctx; - struct net_cfg *ncfg = &(hs->net_cfg); - struct netif *nif = ncfg->netif; - uint8_t parmsToChange=0; - const uint8_t MAX_IP_CONFIG_PARAMS = 3; - - wl_err_t err = WL_SUCCESS; - tParam* params = (tParam*) buf; - - if (params->paramLen == 1) - { - GET_PARAM_NEXT(BYTE, params, _parmsToChange); - parmsToChange = _parmsToChange; - } - else - RETURN_ERR(WL_FAILURE) - - INFO_SPI("%p numParam=%d parmsToChange=%d\n", ctx, numParam, parmsToChange); - - if (parmsToChange <= MAX_IP_CONFIG_PARAMS) - { - int i=0; - for (; iparamLen == 4) - { - GET_PARAM_NEXT(LONG, params, _ip_addr); - lwip_addr.addr = _ip_addr; - INFO_SPI("%d] nif:%p lwip_addr=0x%x\n", i, nif, lwip_addr.addr); - switch (i) - { - case 0: // local_ip - { - netif_set_ipaddr(nif, &lwip_addr); - break; - } - case 1: // gateway - { - netif_set_gw(nif, &lwip_addr); - break; - } - case 2: // subnet - { - netif_set_netmask(nif, &lwip_addr); - break; - } - } - }else{ - RETURN_ERR(WL_FAILURE) - } - - } - /* Disable DHCP */ - ncfg->dhcp_enabled = STATIC_IP_CONFIG; - }else - RETURN_ERR(WL_FAILURE) - - RETURN_ERR(err) -} - -int set_dns_config_cmd_cb(int numParam, char* buf, void* ctx) { - struct ip_addr lwip_addr; - struct ctx_server *hs = ctx; - struct net_cfg *ncfg = &(hs->net_cfg); - struct netif *nif = ncfg->netif; - uint8_t parmsToChange=0; - const uint8_t MAX_DNS_CONFIG_PARAMS = 2; - - wl_err_t err = WL_SUCCESS; - tParam* params = (tParam*) buf; - - if (params->paramLen == 1) - { - GET_PARAM_NEXT(BYTE, params, _parmsToChange); - parmsToChange = _parmsToChange; - } - else - RETURN_ERR(WL_FAILURE) - - INFO_SPI("%p numParam=%d parmsToChange=%d\n", ctx, numParam, parmsToChange); - - if (parmsToChange <= MAX_DNS_CONFIG_PARAMS) - { - int i=0; - for (; iparamLen == 4) - { - GET_PARAM_NEXT(LONG, params, _ip_addr); - lwip_addr.addr = _ip_addr; - INFO_SPI("%d] nif:%p lwip_addr=0x%x\n", i, nif, lwip_addr.addr); - dns_setserver(i, &lwip_addr); - }else{ - RETURN_ERR(WL_FAILURE) - } - } - /* Disable DHCP */ - ncfg->dhcp_enabled = STATIC_IP_CONFIG; - }else - RETURN_ERR(WL_FAILURE) - - RETURN_ERR(err) -} - - - -void set_result(wl_status_t _status) -{ - result = _status; -} - - -void set_result_cmd(int err) -{ - wl_err_t _err = (wl_err_t)err; - switch (_err) - { - case WL_SUCCESS: - set_result(WL_CONNECTED); - ERROR_LED_OFF(); - break; - default: - case WL_OOM: - case WL_INVALID_LENGTH: - case WL_NOT_SUPPORTED: - case WL_ABSORBED: - case WL_RESOURCES: - case WL_BUSY: - case WL_RETRY: - case WL_FAILURE: - set_result(WL_CONNECT_FAILED); - ERROR_LED_ON(); - break; - } - INFO_SPI("%s %d\n", __FUNCTION__, result); -} - - - -extern int ttcp_start(struct ip_addr addr, uint16_t port, void *opaque, - void *done_cb, int mode, uint16_t nbuf, uint16_t buflen, int udp, int verbose); - - -int start_server_tcp(uint16_t port, uint8_t sock, uint8_t protMode) -{ - struct ip_addr addr = { 0 }; - uint16_t buflen = 1024; - uint16_t nbuf = 1024; - wl_err_t err = WL_FAILURE; - -#ifdef _APP_DEBUG_ - int verbose = 1; -#else - int verbose = 0; -#endif - int udp = protMode; - int mode = 1; //RECEIVE - void* _ttcp = NULL; - - if (sock >= MAX_SOCK_NUM) - return WIFI_SPI_ERR; - - if (_connected) - { - WARN("Still connected...wait\n"); - return WIFI_SPI_ERR; - } - - if (!ifStatus) - { - WARN_VER("IF down...wait\n"); - return WIFI_SPI_ERR; - } - - - if (ard_tcp_start(addr, port, NULL, NULL, mode, nbuf, buflen, udp, verbose, sock, &_ttcp) == 0) - { - INFO_SPI("Start Server %s [%d, %d] OK!\n", ProtMode2Str(protMode), port, sock); - setMapSock(sock, _ttcp); - err = WL_SUCCESS; - }else{ - - WARN("Start Server %s [%d, %d] FAILED!\n", ProtMode2Str(protMode), port, sock); - clearMapSockTcp(sock, TTCP_MODE_RECEIVE); - } - return err; -} - - -int start_server_tcp_cmd_cb(int numParam, char* buf, void* ctx) { - wl_err_t err = WL_FAILURE; - tParam* params = (tParam*) buf; - if (numParam == 3) - { - GET_PARAM_NEXT(INT, params, port); - GET_PARAM_NEXT(BYTE, params, sock); - GET_PARAM_NEXT(BYTE, params, protMode); - err = start_server_tcp(port, sock, protMode); - } - return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR; -} - -int start_client_tcp(uint32_t _addr, uint16_t port, uint8_t sock, uint8_t protMode) -{ - uint16_t buflen = 1024; - uint16_t nbuf = 1024; - wl_err_t err = WL_FAILURE; - struct ip_addr addr = { .addr = _addr}; - - INFO_SPI("Addr:0x%x, port:%d, sock:%d, prot:%s\n", _addr, port, sock, ProtMode2Str(protMode)); - - #ifdef _APP_DEBUG_ - int verbose = 1; - #else - int verbose = 0; - #endif - - int udp = protMode; - int mode = 0; //TRANSMIT - void* _ttcp = NULL; - - if (sock >= MAX_SOCK_NUM) - return WIFI_SPI_ERR; - - // Check previous connection - _ttcp = getTTCP(sock, TTCP_MODE_TRANSMIT); - if (_ttcp != NULL) - { - WARN("Previous client %p not stopped !\n", _ttcp); - ard_tcp_stop(_ttcp); - clearMapSockTcp(sock, TTCP_MODE_TRANSMIT); - } - - if (ard_tcp_start(addr, port, NULL, NULL, mode, nbuf, buflen, udp, verbose, sock, &_ttcp) == 0) - { - INFO_SPI("Start Client %s %p [0x%x, %d, %d] OK!\n", ProtMode2Str(protMode), - _ttcp, addr, port, sock); - setMapSock(sock, _ttcp); - err = WL_SUCCESS; - }else{ - INFO_SPI("Start Client %s %p [0x%x, %d, %d] FAILED!\n", ProtMode2Str(protMode), - _ttcp, addr, port, sock); - clearMapSockTcp(sock, TTCP_MODE_TRANSMIT); - } - return err; -} - - -int start_client_tcp_cmd_cb(int numParam, char* buf, void* ctx) { - wl_err_t err = WL_FAILURE; - tParam* params = (tParam*) buf; - if (numParam == 4) - { - GET_PARAM_NEXT(LONG, params, _addr); - GET_PARAM_NEXT(INT, params, port); - GET_PARAM_NEXT(BYTE, params, sock); - GET_PARAM_NEXT(BYTE, params, protMode); - err = start_client_tcp(_addr, port, sock, protMode); - } - return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR; -} - -int stop_client_tcp_cmd_cb(int numParam, char* buf, void* ctx) { - wl_err_t err = WL_FAILURE; - tParam* params = (tParam*) buf; - void* _ttcp = NULL; - - if (numParam == 1) - { - GET_PARAM_NEXT(BYTE, params, sock); - - INFO_SPI("Stop client sock:%d\n", sock); - - if (sock < MAX_SOCK_NUM) - { - _ttcp = getTTCP(sock, TTCP_MODE_TRANSMIT); - ard_tcp_stop(_ttcp); - err = WL_SUCCESS; - } - } - return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR; -} - -int insert_data_cmd_cb(int numParam, char* buf, void* ctx) { - - tDataParam* msg = (tDataParam*) buf; - if ((numParam == 2)&&(msg->dataLen == 1)) - { - GET_DATA_BYTE(sock, buf+2); - GET_DATA_INT(len, buf+3); - //printk("tcp:%p buf:%p len:%d\n", getTTCP(sock), (uint8_t*)(buf+5), len); - insertBuf(sock, (uint8_t*)(buf+5), len); - } - return WIFI_SPI_ACK; -} - -int send_data_udp_cmd_cb(int numParam, char* buf, void* ctx) { - wl_err_t err = WL_FAILURE; - - tParam* params = (tParam*) buf; - if ((numParam == 1)&&(params->paramLen == 1)) - { - GET_PARAM_NEXT(BYTE, params, sock); - uint16_t len = 0; - uint8_t* p = mergeBuf(sock, NULL, &len); - err = sendUdpData(getTTCP(sock, TTCP_MODE_TRANSMIT), p, len); - clearBuf(sock); - free(p); - } - - return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR; -} - - -int send_data_tcp_cmd_cb(int numParam, char* buf, void* ctx) { - wl_err_t err = WL_FAILURE; - DATA_LED_ON(); - tDataParam* msg = (tDataParam*) buf; - if ((numParam == 2)&&(msg->dataLen == 1)) - { - GET_DATA_BYTE(sock, buf+2); - GET_DATA_INT(len, buf+3); - //printk("tcp:%p buf:%p len:%d\n", getTTCP(sock), (uint8_t*)(buf+5), len); - err = sendTcpData(getTTCP(sock, TTCP_MODE_TRANSMIT), (uint8_t*)(buf+5), len); - } - DATA_LED_OFF(); - return (err==WL_SUCCESS) ? WIFI_SPI_ACK : WIFI_SPI_ERR; -} - -int ack_cmd_cb(int numParam, char* buf, void* ctx) { - return WIFI_SPI_ACK; -} - -int get_result_cmd_cb(int numParam, char* buf, void* ctx) { - INFO_SPI("ifStatus:%d result:%d\n", ifStatus, result); - return WIFI_SPI_ACK; -} - -int disconnect_cmd_cb(int numParam, char* buf, void* ctx) -{ - return ((wl_disconnect()==WL_SUCCESS)? WIFI_SPI_ACK : WIFI_SPI_ERR); -} - - -cmd_spi_state_t get_reply_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - CREATE_HEADER_REPLY(reply, recv, 1); - - reply[3] = 1; // paramLen - if (ctx != NULL) { - reply[4] = (*(uint8_t*)ctx); //param - } else { - reply[4] = (ifStatus)?WL_CONNECTED:result; //param - } - - END_HEADER_REPLY(reply, 5, *count); - - //INFO_SPI("result:%d\n", result); - return SPI_CMD_DONE; -} - -cmd_spi_state_t ack_reply_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - CREATE_HEADER_REPLY(reply, recv, 1); - - reply[3] = 1; // paramLen - if (ctx != NULL) { - reply[4] = (*(uint8_t*) ctx != 1) ? WIFI_SPI_ERR : WIFI_SPI_ACK; //param - } else { - reply[4] = WIFI_SPI_ACK; //param - } - - END_HEADER_REPLY(reply, 5, *count); - - return SPI_CMD_DONE; -} - -cmd_spi_state_t get_reply_ipaddr_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - CHECK_ARD_NETIF(recv, reply, count); - - CREATE_HEADER_REPLY(reply, recv, 3); - - PUT_LONG_IN_BYTE_NO(ard_netif->ip_addr.addr, reply, 3); - PUT_LONG_IN_BYTE_NO(ard_netif->netmask.addr, reply, 8); - PUT_LONG_IN_BYTE_NO(ard_netif->gw.addr, reply, 13); - - END_HEADER_REPLY(reply, 18, *count); - - return SPI_CMD_DONE; -} - -void getRemoteData(uint8_t sock, uint8_t mode, tRemoteClient* remoteData) -{ - if ((sock>=0) && (sockudp == UDP_MODE)) - { - if (_ttcp->mode == TTCP_MODE_RECEIVE) - { - remoteData->ipaddr = getRemoteClient(sock)->ipaddr; - remoteData->port = getRemoteClient(sock)->port; - }else{ - remoteData->ipaddr = (_ttcp->upcb) ? _ttcp->upcb->remote_ip.addr : 0; - remoteData->port = (_ttcp->upcb) ? _ttcp->upcb->remote_port : 0; - } - } - } - } -} - - -cmd_spi_state_t get_reply_remote_data_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - CHECK_ARD_NETIF(recv, reply, count); - DUMP_SPI_CMD(recv); - - GET_DATA_BYTE(sock, recv+4); - - CREATE_HEADER_REPLY(reply, recv, 2); - tRemoteClient remoteData = {0,0}; - //TODO pass the mode - getRemoteData(sock, TTCP_MODE_RECEIVE, &remoteData); - - PUT_LONG_IN_BYTE_NO(remoteData.ipaddr, reply, 3); - PUT_DATA_INT(remoteData.port, reply, 8); - - END_HEADER_REPLY(reply, 11, *count); - - return SPI_CMD_DONE; -} - - -void foundHostByName(const char *name, struct ip_addr *ipaddr, void *callback_arg) -{ - _hostIpAddr.addr = (ipaddr)?ipaddr->addr:0xffffffff; - INFO_SPI("foundHostByName: Found Host: name=%s ip=0x%x\n", name, _hostIpAddr.addr); - hostIpAddrFound = true; -} - -int req_reply_host_by_name_cb(int numParam, char* buf, void* ctx) { - - char hostName[DNS_MAX_NAME_LENGTH]; - tParam* params = (tParam*) buf; - - // HostName - if (params->paramLen < DNS_MAX_NAME_LENGTH) { - memcpy(hostName, ¶ms->param, params->paramLen); - hostName[params->paramLen]='\0'; - } else { - RETURN_ERR(WL_FAILURE) - } - - INFO_SPI("Looking for Host: name=%s\n", hostName); - _hostIpAddr.addr = 0; - hostIpAddrFound = false; - err_t err = dns_gethostbyname(hostName, &_hostIpAddr, foundHostByName, NULL); - if (err == ERR_OK) - { - INFO_SPI("Found Host: name=%s ip=0x%x\n", hostName, _hostIpAddr.addr); - hostIpAddrFound = true; - RETURN_ERR(WL_SUCCESS) - } - RETURN_ERR(WL_FAILURE) -} - -cmd_spi_state_t get_reply_host_by_name_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - u32_t addr = (hostIpAddrFound)?_hostIpAddr.addr : 0xffffffff; - INFO_SPI("Searching for Host: ip=0x%x found=%d\n", addr, hostIpAddrFound); - - CHECK_ARD_NETIF(recv, reply, count); - - CREATE_HEADER_REPLY(reply, recv, 1); - - PUT_LONG_IN_BYTE_NO(addr, reply, 3); - - END_HEADER_REPLY(reply, 8, *count); - - return SPI_CMD_DONE; -} - -cmd_spi_state_t get_reply_mac_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - CHECK_ARD_NETIF(recv, reply, count); - - CREATE_HEADER_REPLY(reply, recv, 1); - - reply[3] = WL_MAC_ADDR_LENGTH; - uint8_t mac[WL_MAC_ADDR_LENGTH]; - if (wl_get_mac_addr(mac) != WL_SUCCESS) { - RETURN_ERR_REPLY(recv, reply, count); - } - //rotate the byte order - reply[4]=mac[5]; - reply[5]=mac[4]; - reply[6]=mac[3]; - reply[7]=mac[2]; - reply[8]=mac[1]; - reply[9]=mac[0]; - END_HEADER_REPLY(reply, 10, *count); - - return SPI_CMD_DONE; -} - -cmd_spi_state_t get_reply_curr_net_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - uint32_t type = (uint32_t)ctx; - CHECK_ARD_NETIF(recv, reply, count); - - CREATE_HEADER_REPLY(reply, recv, 1); - - struct wl_network_t* net = wl_get_current_network(); - uint8_t len = 0; - if (net != NULL) - { - switch (type) - { - default: - case GET_CURR_SSID_CMD: - { - len = net->ssid.len; - PUT_BUFDATA_BYTE(net->ssid.ssid, len, reply, 3); - break; - } - case GET_CURR_BSSID_CMD: - { - len = WL_MAC_ADDR_LENGTH; ; - PUT_BUFDATA_BYTE_REV(net->bssid.octet, len, reply, 3); - break; - } - case GET_CURR_RSSI_CMD: - { - len=sizeof(net->rssi); - PUT_LONG_IN_BYTE_HO(net->rssi, reply, 3); - //printk("RSSI:%d", net->rssi); - break; - } - case GET_CURR_ENCT_CMD: - { - len = sizeof(net->enc_type); - PUT_DATA_BYTE(net->enc_type, reply, 3); - //printk("ENCT:%d", net->enc_type); - break; - } - } - }else{ - PUT_DATA_BYTE(0, reply, 3); - } - - END_HEADER_REPLY(reply, 3+len+1, *count); - - //dump(reply, *count); - - return SPI_CMD_DONE; -} - -cmd_spi_state_t get_reply_idx_net_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - uint32_t type = (uint32_t)ctx; - CHECK_ARD_NETIF(recv, reply, count); - - CREATE_HEADER_REPLY(reply, recv, 1); - - DUMP_SPI_CMD(recv); - - GET_DATA_BYTE(idx, recv+4); - - if (idx >= WL_NETWORKS_LIST_MAXNUM) - { - WARN("Index out of range: %d\n", idx); - return SPI_CMD_DONE; - } - uint8_t len = 0; - switch (type) - { - default: - case GET_IDX_SSID_CMD: - { - len = network_list.net[idx]->ssid.len; - PUT_BUFDATA_BYTE(network_list.net[idx]->ssid.ssid, len, reply, 3); - INFO_UTIL("SSID:%s\n", network_list.net[idx]->ssid.ssid); - break; - } - case GET_IDX_RSSI_CMD: - { - len = 4; - PUT_LONG_IN_BYTE_HO(network_list.net[idx]->rssi, reply, 3); - INFO_UTIL("RSSI:%d\n", network_list.net[idx]->rssi); - break; - } - case GET_IDX_ENCT_CMD: - { - len = 1; - PUT_DATA_BYTE(network_list.net[idx]->enc_type, reply, 3); - INFO_UTIL("ENCT:%d\n", network_list.net[idx]->enc_type); - break; - } - } - - - END_HEADER_REPLY(reply, 3+len+1, *count); - - DUMP(reply, *count); - - return SPI_CMD_DONE; -} - -static void copy_network_list(struct wl_network_list_t *dst, - struct wl_network_list_t *src) -{ - int i; - for (i = 0; i < dst->cnt; i++) - free(dst->net[i]); - free(dst->net); - - dst->cnt = 0; - - if (src->cnt == 0) - return; - dst->net = calloc(1, src->cnt * sizeof(struct wl_network_t *)); - if (dst->net == NULL) { - printk("could not allocate all gui net array\n"); - return; - } - - for (i = 0; i < src->cnt; i++) { - struct wl_network_t *net = src->net[i]; - dst->net[i] = malloc(sizeof(*net)); - if (dst->net[i] == NULL) { - printk("could not allocate all gui nets\n"); - return; - } - - memcpy(dst->net[i], net, sizeof(*net)); - dst->cnt++; - } -} - -int start_scan_net_cmd_cb(int numParam, char* buf, void* ctx) { - wl_err_t err = WL_FAILURE; - - INFO_SPI("Start Network Scan %d\n", numParam); - if (scanNetCompleted){ - scanNetCompleted = false; - err = wl_scan(); - if (err != WL_SUCCESS) - { - // May be busy scanning already, no fatal error - WARN("err=%d\n", err); - err = WL_SUCCESS; - } - } - return err; -} - -cmd_spi_state_t get_reply_scan_networks_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - const int8_t SCAN_NOT_YET_COMPLETED = 0; - - if (!scanNetCompleted) - { - //return empty list with an error to retry - CREATE_HEADER_REPLY(reply, recv, SCAN_NOT_YET_COMPLETED); - END_HEADER_REPLY(reply, 3, *count); - INFO_SPI("Scan not completed!\n"); - return SPI_CMD_DONE; - } - - int network_cnt = 0; - struct wl_network_list_t* wl_network_list; - - wl_get_network_list(&wl_network_list); - if (wl_network_list->cnt == 0) - { - CREATE_HEADER_REPLY(reply, recv, 0); - END_HEADER_REPLY(reply, 3, *count); - INFO_SPI("Networks not found!\n"); - return SPI_CMD_DONE; - } - - if (wl_network_list->cnt > WL_NETWORKS_LIST_MAXNUM) - { - network_cnt = WL_NETWORKS_LIST_MAXNUM ; - } - else{ - network_cnt = wl_network_list->cnt ; - } - - copy_network_list(&network_list, wl_network_list); - CREATE_HEADER_REPLY(reply, recv, network_cnt); - - uint8_t start = 3; - int ii = 0; - for (; ii < network_cnt; ii++) - { - uint8_t len = network_list.net[ii]->ssid.len+1; - network_list.net[ii]->ssid.ssid[network_list.net[ii]->ssid.len]=0; - PUT_BUFDATA_BYTE(network_list.net[ii]->ssid.ssid, len, reply, start); - start += len+1; - INFO_SPI("%d - %s [%d]- %d - %d - 0x%x\n",ii, network_list.net[ii]->ssid.ssid, - len, network_list.net[ii]->enc_type, - network_list.net[ii]->rssi, network_list.net[ii]->bssid); - } - - END_HEADER_REPLY(reply, start, *count); - //DUMP(reply, *count); - - return SPI_CMD_DONE; -} - -cmd_spi_state_t get_state_tcp_cmd_cb(char* recv, char* reply, void* ctx, uint16_t* count) { - - CHECK_ARD_NETIF(recv, reply, count); - - CREATE_HEADER_REPLY(reply, recv, PARAM_NUMS_1); - - uint8_t _state = CLOSED; - if ((recv[3]==1)&&(recv[4]>=0)&&(recv[4]=0)&&(_sock=0)&&(recv[4]=0)&&(recv[4]=0)&&(recv[4]=0)&&(sock=0)&&(recv[4]<0xFF)) - { - len = recv[4]; - int i= 0; - for (; i")); - DUMP_SPI(recv, count); - IF_SPI_DUMP(printk("<==")); - DUMP_SPI(reply, _count); - replyCount = _count; - return _result; -} - -unsigned char* getStartCmdSeq(unsigned char* _recv, int len, int *offset) -{ - int i = 0; - *offset = 0; - //DEB_PIN_UP(); - for (; inParam, - (char*) &(spiMsg->params[0]), cmd_spi_list[i].ctx); - }else - { - tSpiMsgData* spiMsg = (tSpiMsgData*) recv; - _result = cmd_spi_list[i].cb(spiMsg->nParam, - (char*) &(spiMsg->params[0]), cmd_spi_list[i].ctx); - } - - if (_result != WIFI_SPI_ACK) - return REPLY_ERR_CMD; - else - return REPLY_NO_ERR; - }else{ - if (spiMsg8(cmdId)) - { - tSpiMsg* spiMsg = (tSpiMsg*) recv; - _result = cmd_spi_list[i].cb(spiMsg->nParam, - (char*) &(spiMsg->params[0]), NULL); - }else{ - tSpiMsgData* spiMsg = (tSpiMsgData*) recv; - _result = cmd_spi_list[i].cb(spiMsg->nParam, - (char*) &(spiMsg->params[0]), NULL); - } - //Send Reply for GET commands or Immediate SET apply - if (cmd_spi_list[i].flags == CMD_GET_FLAG) { - if (sendReply(i, recv, reply, cmd_spi_list[i].ctx) != SPI_OK) - return REPLY_ERR_GET; - else - return REPLY_NO_ERR; - }else if (cmd_spi_list[i].flags == CMD_IMM_SET_FLAG) - { - if (sendReply(i, recv, reply, &_result) != SPI_OK) - return REPLY_ERR_GET; - else - return REPLY_NO_ERR; - - } - } - } - } - // Command not found - if (i==ARRAY_SIZE(cmd_spi_list)) - { - WARN("Unknown cmd 0x%x\n", cmdId); - DUMP(recv, count); - return REPLY_ERR_CMD; - } - return REPLY_NO_ERR; -} - -void init_spi_cmds(void* ctx) { - spi_add_cmd(SET_NET_CMD, set_net_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(SET_PASSPHRASE_CMD, set_passphrase_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(SET_KEY_CMD, set_key_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(SET_IP_CONFIG_CMD, set_ip_config_cmd_cb, ack_reply_cb, ctx, CMD_SET_FLAG); - spi_add_cmd(SET_DNS_CONFIG_CMD, set_dns_config_cmd_cb, ack_reply_cb, ctx, CMD_SET_FLAG); - spi_add_cmd(GET_CONN_STATUS_CMD, get_result_cmd_cb, get_reply_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_IPADDR_CMD, ack_cmd_cb, get_reply_ipaddr_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_MACADDR_CMD, ack_cmd_cb, get_reply_mac_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_CURR_SSID_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_SSID_CMD, CMD_GET_FLAG); - spi_add_cmd(GET_CURR_BSSID_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_BSSID_CMD, CMD_GET_FLAG); - spi_add_cmd(GET_CURR_RSSI_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_RSSI_CMD, CMD_GET_FLAG); - spi_add_cmd(GET_CURR_ENCT_CMD, ack_cmd_cb, get_reply_curr_net_cb, (void*)GET_CURR_ENCT_CMD, CMD_GET_FLAG); - spi_add_cmd(START_SCAN_NETWORKS, start_scan_net_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(SCAN_NETWORKS, ack_cmd_cb, get_reply_scan_networks_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(DISCONNECT_CMD, disconnect_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(GET_IDX_ENCT_CMD, ack_cmd_cb, get_reply_idx_net_cb, (void*)GET_IDX_ENCT_CMD, CMD_GET_FLAG); - spi_add_cmd(GET_IDX_SSID_CMD, ack_cmd_cb, get_reply_idx_net_cb, (void*)GET_IDX_SSID_CMD, CMD_GET_FLAG); - spi_add_cmd(GET_IDX_RSSI_CMD, ack_cmd_cb, get_reply_idx_net_cb, (void*)GET_IDX_RSSI_CMD, CMD_GET_FLAG); - spi_add_cmd(REQ_HOST_BY_NAME_CMD, req_reply_host_by_name_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(GET_HOST_BY_NAME_CMD, ack_cmd_cb, get_reply_host_by_name_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(START_SERVER_TCP_CMD, start_server_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(START_CLIENT_TCP_CMD, start_client_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(STOP_CLIENT_TCP_CMD, stop_client_tcp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(GET_STATE_TCP_CMD, ack_cmd_cb, get_state_tcp_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_DATA_TCP_CMD, ack_cmd_cb, get_data_tcp_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(AVAIL_DATA_TCP_CMD, ack_cmd_cb, avail_data_tcp_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(SEND_DATA_TCP_CMD, send_data_tcp_cmd_cb, ack_reply_cb, NULL, CMD_IMM_SET_FLAG); - spi_add_cmd(DATA_SENT_TCP_CMD, ack_cmd_cb, data_sent_tcp_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_DATABUF_TCP_CMD, ack_cmd_cb, get_databuf_tcp_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_CLIENT_STATE_TCP_CMD, ack_cmd_cb, get_client_state_tcp_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_FW_VERSION_CMD, ack_cmd_cb, get_firmware_version_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(GET_TEST_CMD, ack_cmd_cb, get_test_cmd_cb, NULL, CMD_GET_FLAG); - spi_add_cmd(INSERT_DATABUF_CMD, insert_data_cmd_cb, ack_reply_cb, NULL, CMD_IMM_SET_FLAG); - spi_add_cmd(SEND_DATA_UDP_CMD, send_data_udp_cmd_cb, ack_reply_cb, NULL, CMD_SET_FLAG); - spi_add_cmd(GET_REMOTE_DATA_CMD, ack_cmd_cb, get_reply_remote_data_cb, NULL, CMD_GET_FLAG); -} - - -int checkMsgParam8(unsigned char* buf) -{ - int paramLenTot=0; - tSpiMsg* spiMsg = (tSpiMsg*)buf; - tParam *param = spiMsg->params; - int i=0; - for (; inParam; ++i) - { - uint8_t _len = param->paramLen; - paramLenTot+= _len+1; - //printk("%d) len:0x%x\n", i, _len); - param = (tParam*)((char*)(param)+_len+1); - } - return paramLenTot; -} - -int checkMsgParam16(unsigned char* buf) -{ - int paramLenTot=0; - tSpiMsgData* spiMsg = (tSpiMsgData*)buf; - tDataParam* param = (tDataParam*)spiMsg->params; - int i=0; - for (; inParam; ++i) - { - uint16_t _len = param->dataLen; - paramLenTot+= _len+sizeof(param->dataLen); - //printk("%d) len:0x%x\n", i, _len); - param = (tDataParam*)((char*)(param)+_len+sizeof(param->dataLen)); - } - return paramLenTot; -} - -bool checkMsgFormat(uint8_t* _recv, int len, int* offset) -{ - - unsigned char* recv = getStartCmdSeq(_recv, len, offset); - if ((recv == NULL)||(recv!=_recv)) - { - DEB_PIN_TRIGGER(); - - IF_WARN_VER(DUMP((char*)_recv, len)); - - STATSPI_DISALIGN_ERROR(); - - if (recv == NULL) - return false; - } - tSpiMsg* spiMsg = (tSpiMsg*) recv; - if ((spiMsg->cmd == START_CMD)&&((spiMsg->tcmd & REPLY_FLAG) == 0)) - { - int paramLenTot = 0; - if (spiMsg8(spiMsg->tcmd)) - paramLenTot = checkMsgParam8(recv); - else - { - DUMP_SPI(_recv, len); - paramLenTot = checkMsgParam16(recv); - } - - //INFO_SPI("cmd:0x%x TotLen:%d\n", spiMsg->tcmd, paramLenTot); - char* p = (char*)recv + paramLenTot + sizeof(tSpiHdr); - if (*p == END_CMD) - { - return true; - }else{ - WARN("%d] Not found end cmd: 0x%x\n", cmdCorr, *p); - } - } - return false; -} - -//#define AVR32_USART_CSR_ITERATION_MASK (UNDERRUN) 0x00000400 -//#define AVR32_USART_CSR_OVRE_MASK 0x00000020 -//#define AVR32_USART_CSR_RXRDY_MASK 0x00000001 - - -void spi_poll(struct netif* netif) { - - ard_netif = netif; - - if (startReply) - { - startReply = false; - int offset = 0; - DISABLE_SPI_INT(); - if (checkMsgFormat(_receiveBuffer, receivedChars, &offset)) - { - state = SPI_CMD_INPROGRESS; - count = receivedChars-offset; - if (count >= CMD_MAX_LEN) - count = CMD_MAX_LEN; - memcpy(buf, &_receiveBuffer[offset], count); - - //mark as buffer used - _receiveBuffer[0] = 0; - - int err = call_reply_cb(buf, &reply[0]); - if (err != REPLY_NO_ERR) - { - DUMP_SPI(buf, count); - DUMP_SPI(reply, replyCount); - } - receivedChars = 0; - count = 0; - state = SPI_CMD_IDLE; - } - else - { - sendError(); - WARN("%d] Check format msg failed!\n", cmdCorr); - IF_WARN_VER(dump((char*)_receiveBuffer, receivedChars)); - state = SPI_CMD_IDLE; - count=0; - //mark as buffer used - _receiveBuffer[0] = 0; - } - CLEAR_SPI_INT(); - //Enable Spi int to receive a new command - ENABLE_SPI_INT(); - //Available for receiving a new spi data - AVAIL_FOR_SPI(); - } - -#ifdef _SPI_STATS_ - if (statSpi.lastError != 0) - { - WARN("%d] Errot=0x%x spiStatus:0x%x\n", cmdCorr, statSpi.lastError, statSpi.status); - statSpi.lastError = 0; - } -#endif -} - -inline int spi_slaveReceiveInt(volatile avr32_spi_t *spi) -{ - receivedChars=0; - int index = 0; - int err = SPI_OK; - state = SPI_CMD_INPUT; - bool endOfFrame = false; - - do { - unsigned int timeout = SPI_TIMEOUT; - err = SPI_OK; - - while ((spi->sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) != - (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) { - if ((timeout--)==0) { - err=SPI_ERROR_TIMEOUT; - break; - } - } - //DEB_PIN_TG(); - #if 0 -#ifdef _SPI_STATS_ - if (spi->sr & AVR32_SPI_SR_OVRES_MASK) - { - STATSPI_OVERRIDE_ERROR(); - } -#endif -#endif - if (err == SPI_OK) { - _receiveBuffer[index] = (spi->rdr >> AVR32_SPI_RDR_RD_OFFSET) & 0x00ff; - DEB_PIN_UP(2); - if ((index==0) && (_receiveBuffer[index] != START_CMD)) - DEB_PIN_TRIGGER(); - ++index; - ++receivedChars; - }else{ -#ifdef _SPI_STATS_ - STATSPI_TIMEOUT_ERROR(); -#endif - break; - } - - /* break on buffer overflow */ - if (receivedChars >= _BUFFERSIZE) { - err = SPI_ERROR_OVERRUN_AND_MODE_FAULT; - break; - } - - if (_receiveBuffer[index - 1] == END_CMD) - { - int8_t numParams = 0; - int idx = PARAM_LEN_POS+1; - bool islen16bit = ((_receiveBuffer[CMD_POS] & DATA_FLAG) == DATA_FLAG); - if (index >= idx) - { - numParams = _receiveBuffer[PARAM_LEN_POS]; - while (((index-1) > idx)&&(numParams>0)) - { - if (islen16bit) - idx += (_receiveBuffer[idx]<<8) + _receiveBuffer[idx+1]+2; - else - idx += _receiveBuffer[idx]+1; - --numParams; - } - if (((index-1) == idx) && (numParams == 0)) - endOfFrame = true; - } - if (!endOfFrame){ - WARN("Wrong termination index:%d nParam:%d idx:%d 16bit:%d\n", index, numParams, idx, islen16bit); - #ifdef _DEBUG_ - dump((char*)_receiveBuffer, receivedChars); - while(0); - #endif - } - } - } while (!endOfFrame); - return err; -} - -#if defined (__GNUC__) -__attribute__((__interrupt__)) -#elif defined (__ICCAVR32__) -__interrupt -#endif -static void spi_int_handler(void) -{ - volatile avr32_spi_t *spi = ARD_SPI; - DEB_PIN_DN(2); - DISABLE_SPI_INT(); - - if ((spi->sr & AVR32_SPI_SR_RDRF_MASK) != 0) - { - int err = spi_slaveReceiveInt(ARD_SPI); - if (err == SPI_OK) - { - BUSY_FOR_SPI(); - startReply=true; - ++cmdCorr; - //maintain disable interrupt to send the reply command - return; - } - } - ENABLE_SPI_INT(); -} - -inline spi_status_t spi_read8(volatile avr32_spi_t *spi, unsigned char *data) -{ - unsigned int timeout = SPI_TIMEOUT; - - while ((spi->sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) != - (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - *data = (spi->rdr >> AVR32_SPI_RDR_RD_OFFSET) & 0x00ff; - - return SPI_OK; -} - - -/*! - * \brief Interrupt handler of the External interrupt line "1". - */ -#if __GNUC__ -__attribute__((__interrupt__)) -#elif __ICCAVR32__ -__interrupt -#endif -static void eic_int_handler1(void) -{ - eic_clear_interrupt_line(&AVR32_EIC, EXT_INT_LINE1); - startRecvCmdSignal = TRUE; -} - -//! Structure holding the configuration parameters of the EIC module. -eic_options_t eic_options[EXT_INT_NB_LINES]; - -void initExtInt() -{ - // Enable edge-triggered interrupt. - eic_options[0].eic_mode = EIC_MODE_EDGE_TRIGGERED; - // Interrupt will trigger on falling edge. - eic_options[0].eic_edge = EIC_EDGE_FALLING_EDGE; - // Initialize in synchronous mode : interrupt is synchronized to the clock - eic_options[0].eic_async = EIC_SYNCH_MODE; - // Set the interrupt line number. - eic_options[0].eic_line = EXT_INT_LINE1; - - // Disable all interrupts. - Disable_global_interrupt(); - - INTC_register_interrupt(&eic_int_handler1, EXT_INT_IRQ_LINE1, AVR32_INTC_INT0); - - // Map the interrupt lines to the GPIO pins with the right peripheral functions. - gpio_enable_module_pin(EXT_INT_PIN_LINE1,EXT_INT_FUNCTION_LINE1); - - // Init the EIC controller with the options - eic_init(&AVR32_EIC, eic_options, EXT_INT_NB_LINES); - - // Enable the chosen lines and their corresponding interrupt feature. - eic_enable_line(&AVR32_EIC, eic_options[0].eic_line); - eic_enable_interrupt_line(&AVR32_EIC, eic_options[0].eic_line); - - // Enable all interrupts. - Enable_global_interrupt(); -} - -int initSpi(void* ctx) -{ - volatile avr32_spi_t *spi = &AVR32_SPI0; - gpio_map_t spi_piomap = { \ - {AVR32_SPI0_SCK_0_0_PIN, AVR32_SPI0_SCK_0_0_FUNCTION}, \ - {AVR32_SPI0_MISO_0_0_PIN, AVR32_SPI0_MISO_0_0_FUNCTION}, \ - {AVR32_SPI0_MOSI_0_0_PIN, AVR32_SPI0_MOSI_0_0_FUNCTION}, \ - {AVR32_SPI0_NPCS_0_0_PIN, AVR32_SPI0_NPCS_0_0_FUNCTION}, \ - }; - - INFO_INIT("SPI init...\n"); - - /* Init PIO */ - gpio_enable_module(spi_piomap, ARRAY_SIZE(spi_piomap)); - - spi_options_t spiOptions; - - spiOptions.reg = 0; - spiOptions.baudrate = SPI_SLAVE_SPEED; - spiOptions.bits = SPI_BITS; - spiOptions.spck_delay = 0; - spiOptions.trans_delay = 4; - spiOptions.stay_act = 0; - spiOptions.spi_mode = 0; - spiOptions.modfdis = 0; - - /* Initialize as slave; bits, spi_mode */ - if (spi_initSlave(spi, spiOptions.bits, spiOptions.spi_mode) != SPI_OK) - { - INFO_SPI("SPI initialization failed!"); - return 1; - } - - spi_status_t status = spi_setupChipReg(spi, &spiOptions, FPBA_HZ); - if (status == SPI_ERROR_ARGUMENT) - WARN("Error configuring SPI\n"); - - // Disable all interrupts. - Disable_global_interrupt(); - - // Register the SPI interrupt handler to the interrupt controller. - INTC_register_interrupt((__int_handler)(&spi_int_handler), AVR32_SPI0_IRQ, AVR32_INTC_INT0); - - // Enable all interrupts. - Enable_global_interrupt(); - - ENABLE_SPI_INT(); - - spi_enable(spi); -#ifdef _SPI_STATS_ - initStatSpi(); -#endif - init_spi_cmds(ctx); - - memset(_receiveBuffer, 0, sizeof(_receiveBuffer)); - memset(buf, 0, sizeof(buf)); - memset(reply, 0, sizeof(reply)); - - initMapSockTcp(); - set_result(WL_IDLE_STATUS); - - init_pBuf(); - - return 0; -} - diff --git a/libraries/WiFi/extras/wifiHD/src/ard_spi.h b/libraries/WiFi/extras/wifiHD/src/ard_spi.h deleted file mode 100644 index 27ec33e8173..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/ard_spi.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * ard_spi.h - * - * Created on: May 27, 2010 - * Author: mlf by Metodo2 srl - */ - -#ifndef ARD_SPI_H_ -#define ARD_SPI_H_ - -#include "lwip/netif.h" -#include "console.h" -#include "wl_definitions.h" - - -typedef enum { - SPI_CMD_IDLE, - SPI_CMD_INPUT, - SPI_CMD_DONE, - SPI_CMD_INPROGRESS, - SPI_CMD_REPLING, - SPI_CMD_FAIL, -} cmd_spi_state_t; - -typedef enum { - REPLY_ERR_GET, - REPLY_ERR_SET, - REPLY_ERR_CMD, - REPLY_ERR_MSG, - REPLY_NO_ERR, -} reply_err_t; - - -typedef enum { - CMD_GET_FLAG = 0x01, - CMD_SET_FLAG = 0x02, - CMD_IMM_SET_FLAG = 0x04, -}cmd_flags; - -typedef enum eProtMode {TCP_MODE, UDP_MODE}tProtMode; - -#define TIMEOUT_SPI 200 -#define SPI_ALIGN_ERROR 0xF0 -#define SPI_OVERRIDE_ERROR 0xF1 -#define SPI_TIMEOUT_ERROR 0xF2 -#define DUMMY_DATA 0xFF - -typedef int (*cmd_spi_cb_t)(int numParam, char* buf, void* ctx); -typedef cmd_spi_state_t (*cmd_spi_rcb_t)(char* recv, char* reply, void* ctx, uint16_t* _count); - -typedef struct eRemoteClient{ - uint32_t ipaddr; - uint16_t port; -}tRemoteClient; - -void set_result_cmd(int err) ; - -void set_result(wl_status_t _status); - -int initSpi(void* ctx); - -void initExtInt(); - -void spi_poll(struct netif* netif); - -int spi_slaveReceive(volatile avr32_spi_t *spi); - -void showTTCPstatus(); - -int getSock(void * _ttcp); - -void* getTTCP(uint8_t sock, uint8_t mode); - -void setMapSockMode(uint8_t sock, void* _ttcp, uint8_t _tcp_mode); - -void clearMapSockTcp(uint8_t sock, uint8_t mode); - -int start_server_tcp(uint16_t port, uint8_t sock, uint8_t protMode); - -int start_client_tcp(uint32_t _addr, uint16_t port, uint8_t sock, uint8_t protMode); - -void setRemoteClient(uint16_t sock, uint32_t _ipaddr, uint16_t _port); - -tRemoteClient* getRemoteClient(uint16_t sock); - -void getRemoteData(uint8_t sock, uint8_t mode, tRemoteClient* remoteData); - -#endif /* ARD_SPI_H_ */ diff --git a/libraries/WiFi/extras/wifiHD/src/ard_tcp.c b/libraries/WiFi/extras/wifiHD/src/ard_tcp.c deleted file mode 100644 index 0a73b200d08..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/ard_tcp.c +++ /dev/null @@ -1,987 +0,0 @@ -/* - * ard_tcp.c - * - * Created on: May 27, 2010 - * Author: mlf by Metodo2 srl - */ - -//#define _APP_DEBUG_ -#include "lwip/opt.h" - -#include "lwip/mem.h" -#include "lwip/raw.h" -#include "lwip/icmp.h" -#include "lwip/netif.h" -#include "lwip/sys.h" -#include "lwip/sockets.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" -#include "lwip/tcp.h" -#include "lwip/udp.h" - -#include "ard_tcp.h" -#include "ard_spi.h" -#include "timer.h" -#include "util.h" - -#include "getopt.h" -#include "ard_utils.h" -#include "debug.h" -#include "trace.h" - -unsigned int startTime = 0; -extern bool ifStatus; - -static err_t tcp_data_sent(void *arg, struct tcp_pcb *pcb, u16_t len); - -static void atcp_init_pend_flags(struct ttcp* _ttcp) -{ - int i = 0; - for (; ipending_close[i] = false; - } -} - -/** - * Clean up and free the ttcp structure - */ -static void ard_tcp_destroy(struct ttcp* ttcp) { - err_t err = ERR_OK; - DUMP_TCP_STATE(ttcp); - - uint8_t sock = getSock(ttcp); - if (sock == -1) - WARN("ttcp already deallocated!\n"); - - freeAllTcpData(sock); - int i = 0; - for (; itpcb[i]) { - tcp_arg(ttcp->tpcb[i], NULL); - tcp_sent(ttcp->tpcb[i], NULL); - tcp_recv(ttcp->tpcb[i], NULL); - tcp_err(ttcp->tpcb[i], NULL); - //TEMPORAQARY - //err = tcp_close(ttcp->tpcb); - INFO_TCP("Closing tpcb: state:0x%x err:%d\n", ttcp->tpcb[i]->state, err); - } - } - - if (ttcp->lpcb) { - tcp_arg(ttcp->lpcb, NULL); - tcp_accept(ttcp->lpcb, NULL); - err = tcp_close(ttcp->lpcb); - INFO_TCP("Closing lpcb: state:0x%x err:%d\n", ttcp->lpcb->state, err); - } - - if (ttcp->upcb) { - udp_disconnect(ttcp->upcb); - udp_remove(ttcp->upcb); - } - - FREE_PAYLOAD(ttcp); - free(ttcp); -} - -/** - * Invoked when transfer is done or aborted (non-zero result). - */ -static void ard_tcp_done(struct ttcp* ttcp, int result) { -// if (result == 0) -// ard_tcp_print_stats(ttcp); - - if (ttcp->done_cb) - ttcp->done_cb(ttcp->opaque, result); - - ard_tcp_destroy(ttcp); - clearMapSockTcp(getSock(ttcp), GET_TCP_MODE(ttcp)); -} - -/** - * Only used in TCP mode. - * Will transmit a maximum of pbuf->tot_len bytes. - * Called upon connect and when there's space available in the TCP send window - * - */ -static err_t tcp_send_data_pcb(struct ttcp *ttcp, struct tcp_pcb *pcb) { - err_t err = ERR_OK; - uint32_t len; - - GET_CLIENT_ID(ttcp, pcb); - - len = ttcp->left[id]; - ttcp->buff_sent[id] = 0; - - if (len == 0) return ERR_MEM; - - INFO_TCP_VER("left=%d len:%d\n", ttcp->left[id], len); - - /* don't send more than we have in the payload */ - if (len > ttcp->buflen) - len = ttcp->buflen; - - /* We cannot send more data than space available in the send - buffer. */ - if (len > tcp_sndbuf(pcb)) - len = tcp_sndbuf(pcb); - - IF_TCP(startTime = timer_get_ms()); - err = tcp_write(pcb, ttcp->payload[id], len, TCP_WRITE_FLAG_COPY); - if (err != ERR_OK) - { - INFO_TCP("tcp_write failed %p state:%d len:%d err:%d\n", - pcb, pcb->state, len, err); - ttcp->buff_sent[id] = 0; - }else{ - ttcp->buff_sent[id] = 1; - ttcp->left[id] -= len; - } - - return err; -} - - -/** - * Only used in TCP mode. - */ -static err_t tcp_connect_cb(void *arg, struct tcp_pcb *tpcb, err_t err) { - struct ttcp* _ttcp = arg; - - if (_ttcp == NULL) return ERR_ARG; - - GET_CLIENT_ID(_ttcp, tpcb); - INFO_TCP("TTCP [%p-%p]: connect %d %d\n", _ttcp, tpcb, err, tpcb->state); - - _connected = ( tpcb->state == ESTABLISHED) ? 1 : 0; - _ttcp->tcp_poll_retries[id] = 0; - - _ttcp->start_time = timer_get_ms(); - - return ERR_OK; -} - -static void cleanSockState_cb(void *ctx) { - struct ttcp* _ttcp = ctx; - - if (_ttcp == NULL) return; - - int sock = getSock(_ttcp); - if (sock != -1) - clearMapSockTcp(sock, GET_TCP_MODE(_ttcp)); - INFO_TCP("TTCP [%p]: cleanSockState_cb %d\n", _ttcp, sock); - _connected = false; -} - -/** - * Only used in TCP mode. - */ - -static err_t close_conn_pcb(struct tcp_pcb* tpcb) { - - err_t err = tcp_close(tpcb); - if (err== ERR_OK) - { - tcp_arg(tpcb, NULL); - tcp_sent(tpcb, NULL); - tcp_recv(tpcb, NULL); - } - - INFO_TCP("Closing tpcb[%p]: state:0x%x err:%d\n", tpcb, tpcb->state, err); - return err; -} - -static void atcp_conn_err_cb(void *arg, err_t err) { - struct ttcp* _ttcp = arg; - - WARN("TTCP [%p]: connection error: %d currId:%d\n", - _ttcp, err, getCurrClientConnId()); - - if (ifStatus == false) - printk("Abort connection\n"); - - if (err == ERR_ABRT) - { - removeNewClientConn(_ttcp, GET_CURR_PCB(_ttcp)); - FREE_PAYLOAD_ID(_ttcp, getCurrClientConnId()); - } -} - -static void atcp_conn_cli_err_cb(void *arg, err_t err) { - struct ttcp* _ttcp = arg; - - if (_ttcp == NULL) return; - - WARN("TTCP [%p]: connection error: %d arg:%p\n", - _ttcp, err, arg); - - if (ifStatus == false) - printk("Abort connection\n"); - - if ((_ttcp)&&(err == ERR_ABRT)) - { - WARN("TTCP [%p]: free memory\n", _ttcp); - cleanSockState_cb(_ttcp); - // TODO - FREE_PAYLOAD(_ttcp); - } - - //atcp_init_pend_flags(_ttcp); -} - -static err_t close_conn(struct ttcp *_ttcp, struct tcp_pcb* tpcb) { - - if (_ttcp == NULL) return ERR_MEM; - - GET_CLIENT_ID(_ttcp, tpcb); - - err_t err = close_conn_pcb(_ttcp->tpcb[id]); - - if (err == ERR_MEM) - { - WARN("Cannot close id:%d-%p put pending\n", id, _ttcp->tpcb[id]); - _ttcp->pending_close[id] = true; - } - else{ - _ttcp->pending_close[id] = false; - removeNewClientConn(_ttcp, _ttcp->tpcb[id]); - FREE_PAYLOAD_ID(_ttcp, id); - INFO_TCP("----------------------\n"); - } - return err; -} - -void closeConnections() -{ - int ii=0; - for (; iiudp == TCP_MODE) - { - ard_tcp_destroy(_ttcp); - clearMapSockTcp(getSock(_ttcp), GET_TCP_MODE(_ttcp)); - } - } - } - } -} - -/** - * Only used in TCP mode. - */ -static err_t atcp_recv_cb(void *arg, struct tcp_pcb *pcb, struct pbuf *p, - err_t err) { - struct ttcp* ttcp = arg; - - if (err == ERR_OK && p != NULL) { - DATA_LED_ON(); - /* for print_stats() */ - ttcp->recved += p->tot_len; - - if ((ttcp->verbose)||(verboseDebug & INFO_TCP_FLAG)) { - INFO_TCP("len:%d\n",p->tot_len); - DUMP_TCP(p->payload, p->tot_len); - ttcp->print_cnt++; - } - - uint8_t* pBufferStore = insert_pBuf(p, ttcp->sock, (void*) pcb); - INFO_TCP("sock:%d pcb:%p pbuf:%p err:%d bufStore:%p len:%d\n", - ttcp->sock, pcb, p, err, pBufferStore, p->tot_len); - pbuf_free(p); - DATA_LED_OFF(); - } - - /* p will be NULL when remote end is done */ - if (err == ERR_OK && p == NULL) { - INFO_TCP("atcp_recv_cb p=NULL on sock:%d pcb:%p\n", ttcp->sock, pcb); - close_conn(ttcp, pcb); - } - - if (err!=ERR_OK) - WARN("err=%d p=%p\n", err, p); - return ERR_OK; -} - -void ack_recved(void* pcb, int len) { - // Comment the call because it is activated on atcp_recv_cb - INFO_TCP("Received %p len:%d\n", pcb, len); - tcp_recved(pcb, len); -} - -static err_t atcp_poll(void *arg, struct tcp_pcb *pcb) { - struct ttcp* _ttcp = arg; - - if (_ttcp == NULL) return ERR_ARG; - - GET_CLIENT_ID(_ttcp, pcb); - - if (_ttcp->left[id]>0) - ++_ttcp->tcp_poll_retries[id]; - - if (_ttcp->tcp_poll_retries[id] > 4) { - WARN("ARD TCP [%p] arg=%p retries=%d abort\n", - pcb, arg, _ttcp->tcp_poll_retries[id]); - _ttcp->tcp_poll_retries[id] = 0; - tcp_abort(pcb); - _ttcp->pending_close[id] = false; - return ERR_ABRT; - } - - if (pcb) - INFO_TCP_POLL("keepAliveCnt:%d keep_idle:%d persist_cnt:%d\n", - pcb->keep_cnt_sent, pcb->keep_idle, pcb->persist_cnt); - - if (_ttcp->left[id] > 0) - INFO_TCP("ARD TCP [%p-%p] arg=%p retries=%d pend.close:%d len:%d\n", - (_ttcp)?GET_FIRST_CLIENT_TCP(_ttcp):0, pcb, arg, - _ttcp->tcp_poll_retries[id], _ttcp->pending_close[id], (_ttcp)?_ttcp->left[id]:0); - tcp_send_data_pcb(_ttcp, pcb); - - if (_ttcp->pending_close[id]) - { - err_t err = ERR_OK; - if (id >=0){ - err = tcp_close(pcb); - if (err == ERR_MEM) - { - _ttcp->pending_close[id] = true; - } - else - { - _ttcp->pending_close[id] = false; - removeNewClientConn(_ttcp, _ttcp->tpcb[id]); - FREE_PAYLOAD_ID(_ttcp, id); - INFO_TCP("----------------------\n"); - } - } - INFO_TCP("ARD TCP [%p-%p] try to close pending:%d err:%d id:%d\n", pcb, - (_ttcp)?GET_FIRST_CLIENT_TCP(_ttcp):0, _ttcp->pending_close[id], err, id); - } - return ERR_OK; -} - -static err_t atcp_poll_conn(void *arg, struct tcp_pcb *pcb) { - struct ttcp* _ttcp = arg; - - if (_ttcp == NULL) return ERR_ARG; - - GET_CLIENT_ID(_ttcp, pcb) - - INFO_TCP_POLL("ARD TCP [%p-%p] arg=%p retries=%d pend.close:%d conn:%d\n", - (_ttcp)?GET_FIRST_CLIENT_TCP(_ttcp):0, pcb, arg, - _ttcp->tcp_poll_retries[id], _ttcp->pending_close[id], _connected); - - if (id != NO_VALID_ID) - { - if (_ttcp->pending_close[id]) - ++(_ttcp->tcp_poll_retries[id]); - } - - if (_ttcp->tcp_poll_retries[id] > 8) { - WARN("ARD TCP [%p-%p] arg=%p retries=%d\n", - pcb, GET_FIRST_CLIENT_TCP(_ttcp), arg, _ttcp->tcp_poll_retries[id]); - _ttcp->tcp_poll_retries[id] = 0; - tcp_abort(pcb); - return ERR_ABRT; - } - - if ((_ttcp)&&(_connected)) tcp_send_data_pcb(_ttcp, pcb); - - if ((id != NO_VALID_ID) && (_ttcp->pending_close[id])) - { - err_t err = tcp_close(pcb); - if (err == ERR_MEM) - { - _ttcp->pending_close[id] = true; - } - else - { - cleanSockState_cb(_ttcp); - FREE_PAYLOAD_ID(_ttcp, id); - _ttcp->pending_close[id] = false; - } - - INFO_TCP("ARD TCP [%p-%p] try to close pending:%d\n", pcb, (_ttcp)?GET_FIRST_CLIENT_TCP(_ttcp):0, _ttcp->pending_close[id]); - } - return ERR_OK; -} - -int8_t currConnId = 0; - -int8_t getCurrClientConnId() { return currConnId;} - -int8_t getNewClientConnId(struct ttcp* _ttcp, struct tcp_pcb *newpcb) -{ - if (_ttcp != NULL){ - int i = 0; - for (; itpcb[idx] == newpcb) - { - INFO_TCP_VER("ttcp:%p id=%d, tpcb=%p\n", _ttcp, idx, newpcb); - return idx; - } - } - } - WARN("No Valid Id for ttcp:%p pcb:%p\n", _ttcp, newpcb); - return NO_VALID_ID; -} - -struct tcp_pcb * getFirstClient(struct ttcp* _ttcp, bool verbose) -{ - if (_ttcp != NULL){ - int i = 0; - for (; itpcb[idx] != NULL) - { - if (verbose) INFO_TCP("ttcp:%p id=%d, tpcb=%p\n", _ttcp, idx, _ttcp->tpcb[idx]); - currConnId = idx; - return _ttcp->tpcb[idx]; - } - } - } - if (verbose) WARN("No Valid client for ttcp:%p\n", _ttcp); - return NULL; -} - - -int8_t setNewClientConn(struct ttcp* _ttcp, struct tcp_pcb *newpcb, uint8_t id) -{ - if ((_ttcp != NULL)&&(id>=0)&&(idtpcb[id] = newpcb; - return id; - } - return NO_VALID_ID; -} - -int8_t insertNewClientConn(struct ttcp* _ttcp, struct tcp_pcb *newpcb) -{ - if (_ttcp != NULL){ - int i = 0; - for (; itpcb[idx] == NULL)||(_ttcp->tpcb[idx] == newpcb)) - { - INFO_TCP("ttcp:%p id=%d, tpcb=%p\n", _ttcp, idx, newpcb); - _ttcp->tpcb[idx] = newpcb; - return idx; - } - } - } - return NO_VALID_ID; -} - -int8_t removeNewClientConn(struct ttcp* _ttcp, struct tcp_pcb *newpcb) -{ - if (_ttcp != NULL){ - int i = 0; - for (; itpcb[idx] == newpcb) - { - INFO_TCP("ttcp:%p id=%d, tpcb=%p\n", _ttcp, idx, newpcb); - _ttcp->tpcb[idx] = NULL; - return idx; - } - } - } - return NO_VALID_ID; -} - -bool cleanNewClientConn(struct ttcp* _ttcp) -{ - if (_ttcp != NULL){ - int i = 0; - for (; itpcb[i] = NULL; - return true; - } - return false; -} - - -/** - * Only used in TCP mode. - */ -static err_t atcp_accept_cb(void *arg, struct tcp_pcb *newpcb, err_t err) { - struct ttcp* _ttcp = arg; - - if (_ttcp == NULL) return ERR_ARG; - - INFO_TCP("ARD TCP [%p]: accept new [%p]\n", _ttcp, newpcb); - INFO_TCP("local:%d remote:%d state:%d\n", newpcb->local_port, newpcb->remote_port, newpcb->state); - - int8_t id = insertNewClientConn(_ttcp, newpcb); - - ASSERT((_ttcp->payload[id]==NULL), "payload not freed!"); - _ttcp->payload[id] = malloc(_ttcp->buflen); - INFO_TCP("Alloc payload %d-%p\n", id, _ttcp->payload[id]); - if (_ttcp->payload[id] == NULL) { - WARN("TTCP [%p]: could not allocate payload\n", _ttcp); - return -1; - } - tcp_arg(_ttcp->tpcb[id], _ttcp); - tcp_recv(_ttcp->tpcb[id], atcp_recv_cb); - tcp_err(_ttcp->tpcb[id], atcp_conn_err_cb); - tcp_poll(_ttcp->tpcb[id], atcp_poll, 4); - // Copy the pointer to ttcp also to TRANSMIT mode for the clients connected to the server - int _sock = getSock(_ttcp); - if ((_sock != -1)&&(IS_VALID_SOCK(_sock))) - setMapSockMode(_sock, _ttcp, TTCP_MODE_TRANSMIT); - _ttcp->start_time = timer_get_ms(); - return ERR_OK; -} - -/** - * Start TCP transfer. - */ -static int atcp_start(struct ttcp* ttcp) { - err_t err = ERR_OK; - - struct tcp_pcb * p = tcp_new(); - - if (p == NULL) { - WARN("TTCP [%p]: could not allocate pcb\n", ttcp); - return -1; - } - - currConnId = 0; - tcp_arg(p, ttcp); - atcp_init_pend_flags(ttcp); - - if (ttcp->mode == TTCP_MODE_TRANSMIT) { - int8_t id = insertNewClientConn(ttcp, p); - ttcp->payload[id] = malloc(ttcp->buflen); - INFO_TCP("Alloc payload %d-%p\n", id, ttcp->payload[id]); - if (ttcp->payload[id] == NULL) { - WARN("TTCP [%p]: could not allocate payload\n", ttcp); - return -1; - } - - struct tcp_pcb * pcb = p; - tcp_err(pcb, atcp_conn_cli_err_cb); - tcp_recv(pcb, atcp_recv_cb); - tcp_sent(pcb, tcp_data_sent); - tcp_poll(pcb, atcp_poll_conn, 4); - _connected = false; - INFO_TCP("[tpcb]-%p payload:%p\n", pcb, ttcp->payload[id]); - DUMP_TCP_STATE(ttcp); - if (tcp_connect(pcb, &ttcp->addr, ttcp->port, tcp_connect_cb) - != ERR_OK) { - WARN("TTCP [%p]: tcp connect failed\n", ttcp); - return -1; - } - - } else { - INFO_TCP("BEFORE BIND ttcp:%p lpcb:%p pcb:%p\n", ttcp, ttcp->lpcb, GET_FIRST_CLIENT_TCP(ttcp)); - - err = tcp_bind(p, IP_ADDR_ANY, ttcp->port); - if (err != ERR_OK){ - WARN("TTCP [%p]: bind failed err=%d Port already used\n", ttcp, err); - return -1; - } - - ttcp->lpcb = tcp_listen(p); - if (ttcp->lpcb == NULL) { - WARN("TTCP [%p]: listen failed\n", ttcp); - return -1; - } - - DUMP_TCP_STATE(ttcp); - tcp_accept(ttcp->lpcb, atcp_accept_cb); - } - - return 0; -} - -/** - * Only used in UDP mode. Will finalize the ttcp process when an end marker - * is seen. - */ -static void audp_recv_cb(void *arg, struct udp_pcb *upcb, struct pbuf *p, - struct ip_addr *addr, u16_t port) { - struct ttcp* ttcp = arg; - - /* for print_stats() */ - ttcp->recved += p->tot_len; - DUMP(p->payload,p->tot_len); - if (ttcp->verbose) { - printk("."); - if (ttcp->print_cnt % 80 == 0) - printk("\n"); - ttcp->print_cnt++; - } - INFO_TCP("UDP Insert %p sock:%d addr:%s port:%d\n", p, ttcp->sock, - ip2str(*addr), port); - insert_pBuf(p, ttcp->sock, (void*) upcb); - setRemoteClient(ttcp->sock, addr->addr, port); - - pbuf_free(p); -} - -/** - * Start UDP transfer. - */ -static int udp_start(struct ttcp* ttcp) { - err_t err = ERR_OK; - ttcp->udp_end_marker_left = 5; - ttcp->upcb = udp_new(); - if (ttcp->upcb == NULL) { - WARN("TTCP [%p]: could not allocate pcb\n", ttcp); - return -1; - } - - INFO_TCP("%s, upcb:%p %s:%d\n", __FUNCTION__, ttcp->upcb, ip2str(ttcp->addr), ttcp->port); - if (ttcp->mode == TTCP_MODE_TRANSMIT) { - if (udp_connect(ttcp->upcb, &(ttcp->addr), ttcp->port) != ERR_OK) { - WARN("TTCP [%p]: udp connect failed\n", ttcp); - return -1; - } - udp_recv(ttcp->upcb, audp_recv_cb, ttcp); - } else { - /* bind to any IP address on port specified */ - err = udp_bind(ttcp->upcb, IP_ADDR_ANY, ttcp->port); - if (err!= ERR_OK) { - WARN("TTCP [%p]: bind failed err=%d Port already used\n", ttcp, err); - return -1; - } - // clear remote client data - setRemoteClient(ttcp->sock, 0, 0); - udp_recv(ttcp->upcb, audp_recv_cb, ttcp); - } - INFO_TCP("%s, loc:0x%x-%d rem:0x%x-%d\n", __FUNCTION__, - ttcp->upcb->local_ip.addr, ttcp->upcb->local_port, - ttcp->upcb->remote_ip.addr, ttcp->upcb->remote_port); - return 0; -} - -/** - * Start a new ttcp transfer. It should be possible to call this function - * multiple times in order to get multiple ttcp streams. done_cb() will be - * invoked upon completion. - * - */ -int ard_tcp_start(struct ip_addr addr, uint16_t port, void *opaque, - ard_tcp_done_cb_t *done_cb, int mode, uint16_t nbuf, uint16_t buflen, - int udp, int verbose, uint8_t sock, void** _ttcp) { - struct ttcp* ttcp; - int status; - - if (mode != TTCP_MODE_TRANSMIT && mode != TTCP_MODE_RECEIVE) { - WARN("TTCP [-]: invalid mode\n"); - return -1; - } - - if (nbuf == 0) { - WARN("TTCP [-]: invalid nbuf\n"); - return -1; - } - - if (buflen == 0) { - WARN("TTCP [-]: invalid buflen\n"); - return -1; - } - - ttcp = calloc(1, sizeof(struct ttcp)); - if (ttcp == NULL) { - WARN("TTCP [-]: could not allocate memory for ttcp\n"); - return -1; - } - - ttcp->addr = addr; - ttcp->port = port; - ttcp->nbuf = nbuf; - ttcp->mode = mode; - ttcp->done_cb = done_cb; - ttcp->opaque = opaque; - ttcp->udp = udp; - ttcp->verbose = verbose; - ttcp->buflen = buflen; - cleanNewClientConn(ttcp); - - if (ttcp->udp) - status = udp_start(ttcp); - else - status = atcp_start(ttcp); - - if (status) { - WARN("Start server FAILED!\n"); - goto fail; - } - INFO_TCP("TTCP [%p-%p]: nbuf=%d, buflen=%d, port=%d (%s/%s)\n", ttcp, - ((ttcp->udp==1)?(void*)ttcp->upcb:GET_FIRST_CLIENT_TCP(ttcp)), ttcp->nbuf, ttcp->buflen, - ttcp->port, ProtMode2Str(ttcp->udp), Mode2Str(ttcp->mode)); - - *_ttcp = (void*) ttcp; - ttcp->sock = sock; - - return 0; - - fail: ard_tcp_destroy(ttcp); - return -1; -} - -void ard_tcp_stop(void* ttcp) { - struct ttcp* _ttcp = (struct ttcp*) ttcp; - if (_ttcp == NULL) - { - WARN("ttcp = NULL!\n"); - return; - } - if (_ttcp->mode == TTCP_MODE_TRANSMIT) { - int i = getCurrClientConnId(); - ard_tcp_destroy(_ttcp); - clearMapSockTcp(getSock(_ttcp), GET_TCP_MODE(_ttcp)); - _ttcp->tcp_poll_retries[i] = 0; - }else{ - DUMP_TCP_STATE(_ttcp); - - int i = getCurrClientConnId(); - if ((_ttcp)&&(_ttcp->tpcb[i])&&(_ttcp->tpcb[i]->state!=LAST_ACK)&&(_ttcp->tpcb[i]->state!=CLOSED)) - { - // Flush all the data - err_t err=tcp_output(_ttcp->tpcb[i]); - INFO_TCP("flush data: tpcb:%p err:%d\n", _ttcp->tpcb[i], err); - // if any socket cannot be close stop the close connection - close_conn(_ttcp, _ttcp->tpcb[i]); - } - } -} - -uint8_t getStateTcp(void* p, bool client) { - struct ttcp* _ttcp = (struct ttcp*) p; - - if (ifStatus == false) - return CLOSED; - struct tcp_pcb * pcb = GET_FIRST_CLIENT_TCP_NV(_ttcp); - if ((_ttcp != NULL) && ((pcb != NULL) || (client==0))) { - IF_SPI_POLL(DUMP_TCP_STATE(_ttcp)); - if (client) - { - if ((pcb->state != ESTABLISHED)&&(pcb->state != CLOSED)) - DUMP_TCP_STATE(_ttcp); - return pcb->state; - } - else - { - return _ttcp->lpcb->state; - } - } else { - WARN_POLL("TCP not initialized ttcp:%p tpcb:%p lpcb:%p\n", - _ttcp, ((_ttcp)?pcb:0), ((_ttcp)?_ttcp->lpcb:0)); - } - return CLOSED; -} - -uint8_t getModeTcp(void* p) { - struct ttcp* _ttcp = (struct ttcp*) p; - - if (_ttcp != NULL) - return _ttcp->mode; - return 0; -} - -uint8_t isDataSent(void* p) { - struct ttcp *_ttcp = (struct ttcp *)p; - - int8_t id = getCurrClientConnId(); - if ((_ttcp)&&(!_ttcp->buff_sent[id])) - { - return 0; - } - - return 1; -} - -static err_t tcp_data_sent(void *arg, struct tcp_pcb *pcb, u16_t len) { - struct ttcp *_ttcp; - - LWIP_UNUSED_ARG(len); - - _ttcp = arg; - - if (_ttcp == NULL) return ERR_ARG; - - GET_CLIENT_ID(_ttcp, pcb); - _ttcp->tcp_poll_retries[id] = 0; - _ttcp->buff_sent[id] = 1; - - INFO_TCP("Packet sent pcb:%p len:%d dur:%d left:%d\n", pcb, len, timer_get_ms() - startTime, - (_ttcp)?(_ttcp->left[id]):0); - - if ((_ttcp)&&(_ttcp->left[id] > 0)) { - tcp_send_data_pcb(_ttcp, pcb); - } - - return ERR_OK; -} - -int sendTcpData(void* p, uint8_t* buf, uint16_t len) -{ - struct ttcp* _ttcp = (struct ttcp*) p; - - if (_ttcp==NULL) - { - WARN("ttcp == NULL!\n"); - return WL_FAILURE; - } - - struct tcp_pcb * pcb = GET_FIRST_CLIENT_TCP_NV(_ttcp); - GET_CLIENT_ID(_ttcp, pcb); - - INFO_TCP_VER("ttcp:%p pcb:%p buf:%p len:%d\n", _ttcp, pcb, buf, len); - DUMP_TCP(buf,len); - IF_TCP_VER(DUMP_TCP_STATE(_ttcp)); - - if ((_ttcp != NULL) && (pcb != NULL) && - (buf != NULL) && (len != 0) && (_ttcp->payload[id] != NULL)) { - if (pcb->state == ESTABLISHED || pcb->state == CLOSE_WAIT || - pcb->state == SYN_SENT || pcb->state == SYN_RCVD) { - - memcpy(_ttcp->payload[id], buf, len); - _ttcp->payload[id][len]='\0'; - INFO_TCP_VER("'%s'\n", _ttcp->payload[id]); - _ttcp->left[id] = len; - tcp_sent(pcb, tcp_data_sent); - tcp_send_data_pcb(_ttcp, pcb); - - return WL_SUCCESS; - } - } - //printk("Write failure _ttcp=%p _ttcp->tpcb=%p buf=%p len=%d\n", _ttcp, _ttcp->tpcb, buf, len); - return WL_FAILURE; -} - -int sendUdpData(void* ttcp, uint8_t* buf, uint16_t len) { - struct ttcp* _ttcp = (struct ttcp*) ttcp; - if ((_ttcp != NULL) && (buf != NULL) && (len != 0)) - { - INFO_TCP("buf:%p len:%d\n", buf, len); - DUMP_TCP(buf,len); - }else{ - return WL_FAILURE; - } - - struct pbuf* p = pbuf_alloc(PBUF_TRANSPORT, len, PBUF_RAM); - if (p == NULL) { - WARN("TTCP [%p]: could not allocate pbuf\n", ttcp); - return WL_FAILURE; - } - memcpy(p->payload, buf, len); - if (udp_send(_ttcp->upcb, p) != ERR_OK) { - WARN("TTCP [%p]: udp_send() failed\n", _ttcp); - pbuf_free(p); - return WL_FAILURE; - } - - pbuf_free(p); - return WL_SUCCESS; -} - - - -char - usage[] = - "Usage: ttcp -t/-r [-options] host\n\ - -l length of bufs written to network (default 1024)\n\ - -n number of bufs written to network (default 1024)\n\ - -p port number to send to (default 2000)\n\ - -u udp\n\ - -v verbose\n"; - -/** - * - */ -cmd_state_t cmd_ttcp(int argc, char* argv[], void* ctx) { - - int c; - int mode = TTCP_MODE_TRANSMIT; - int verbose = 0; - uint16_t buflen = 1024; - uint16_t nbuf = 1024; - uint16_t port = 2000; - int udp = 0; - struct ip_addr addr = { 0 }; - - optind = 1; - while ((c = getopt(argc, argv, "utrl:n:p:v")) != -1) { - switch (c) { - case 't': - mode = TTCP_MODE_TRANSMIT; - break; - case 'r': - mode = TTCP_MODE_RECEIVE; - break; - case 'l': - buflen = atoi(optarg); - break; - case 'v': - verbose = 1; - break; - case 'n': - nbuf = atoi(optarg); - break; - case 'u': - udp = 1; - break; - case 'p': - port = atoi(optarg); - break; - } - } - - if (mode == TTCP_MODE_TRANSMIT) { - if (optind >= argc) { - printk("%s", usage); - return CMD_DONE; - } - - addr = str2ip(argv[optind]); - if (!addr.addr) { - printk("%s", usage); - return CMD_DONE; - } - } - void* _ttcp = NULL; - if (ard_tcp_start(addr, port, NULL, NULL, mode, nbuf, buflen, udp, verbose, - 0, &_ttcp)) - return CMD_DONE; - - return CMD_DONE; -} - - -#if 0 -#include "lwip/sockets.h" - -void testlwip() -{ - int Sock; - fd_set fdsetR; - FD_ZERO(&fdsetR); - FD_SET(Sock, &fdsetR); - fd_set fdsetE = fdsetR; - - int rc; - const int cMillies = 10000; - struct timeval timeout; - timeout.tv_sec = cMillies / 1000; - timeout.tv_usec = (cMillies % 1000) * 1000; - //rc = lwip_select(Sock + 1, &fdsetR, NULL, &fdsetE, &timeout); -} -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/ard_tcp.h b/libraries/WiFi/extras/wifiHD/src/ard_tcp.h deleted file mode 100644 index 078e0b0c560..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/ard_tcp.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * ard_tcp.h - * - * Created on: May 27, 2010 - * Author: mlf by Metodo2 srl - */ - -#ifndef ARD_TCP_H -#define ARD_TCP_H - -#include "console.h" -#include "lwip/tcp.h" - -typedef void (ard_tcp_done_cb_t)(void *opaque, int result); - -#define TTCP_MODE_TRANSMIT 0 -#define TTCP_MODE_RECEIVE 1 -#define MAX_MODE_NUM 2 - -#define GET_TCP_MODE(X) ((X!=NULL)?((struct ttcp*)(X))->mode:0) -#define IS_VALID_SOCK(SOCK) ((SOCK>=0)&&(SOCKudp:0) - -// Maximum number of client connection accepted by server -#define MAX_CLIENT_ACCEPTED 4 -#define NO_VALID_ID 0xff - -#define GET_FIRST_CLIENT_TCP(TTCP) getFirstClient(TTCP, 1) -#define GET_FIRST_CLIENT_TCP_NV(TTCP) getFirstClient(TTCP, 0) -#define GET_CLIENT_TCP(TTCP,ID) (((TTCP!=NULL)&&(ID>=0)&&(IDtpcb[ID] : NULL) -#define GET_CLIENT_ID(TTCP, PCB) uint8_t id = NO_VALID_ID; do { \ - id = getNewClientConnId(TTCP, PCB); \ - if (id == NO_VALID_ID) return ERR_MEM; \ - }while(0); -#define GET_IDX_CONN(I) ((I+currConnId)payload[id]); \ - if (TTCP->payload[id]) { \ - free(TTCP->payload[id]); \ - TTCP->payload[id] = NULL; } \ -}while(0); - -#define FREE_PAYLOAD_ID(TTCP,ID) do { \ - INFO_TCP("Freeing payload %d-%p\n", ID, TTCP->payload[ID]); \ - if (TTCP->payload[ID]) { \ - free(TTCP->payload[ID]); \ - TTCP->payload[ID] = NULL; } \ -}while(0); - - -typedef struct ttcp { - - /* options */ - struct ip_addr addr; /* host */ - uint16_t port; /* -p */ - uint16_t nbuf; /* -n */ - int mode; /* -t */ - int verbose; /* -v */ - int udp; /* -u */ - uint8_t sock; - uint8_t buff_sent[MAX_CLIENT_ACCEPTED]; - - /* common */ - uint16_t print_cnt; - uint32_t start_time; - uint32_t left[MAX_CLIENT_ACCEPTED]; - uint32_t recved; - ard_tcp_done_cb_t* done_cb; - void* opaque; - uint32_t buflen; /* -l */ - uint32_t tid; - - /* TCP specific */ - struct tcp_pcb* tpcb[MAX_CLIENT_ACCEPTED]; - struct tcp_pcb* lpcb; - char* payload[MAX_CLIENT_ACCEPTED]; - uint8_t tcp_poll_retries[MAX_CLIENT_ACCEPTED]; - bool pending_close[MAX_CLIENT_ACCEPTED]; - - /* UDP specific */ - int udp_started; - uint16_t udp_end_marker_left; - struct udp_pcb* upcb; -}ttcp_t; - -bool _connected; - -int ard_tcp_start(struct ip_addr addr, uint16_t port, void *opaque, - ard_tcp_done_cb_t *done_cb, int mode, uint16_t nbuf, uint16_t buflen, int udp, int verbose, uint8_t sock, void** _ttcp); - -void ard_tcp_stop(void* ttcp); - -uint8_t getStateTcp(void* p, bool client ); - -uint8_t getModeTcp(void* p); - -int sendTcpData(void* p, uint8_t* buf, uint16_t len); - -int sendUdpData(void* p, uint8_t* buf, uint16_t len); - -uint8_t isDataSent(void* p ); - -cmd_state_t cmd_ttcp(int argc, char* argv[], void* ctx); - -int8_t setNewClientConn(struct ttcp* _ttcp, struct tcp_pcb *newpcb, uint8_t id); - -int8_t insertNewClientConn(struct ttcp* _ttcp, struct tcp_pcb *newpcb); - -int8_t removeNewClientConn(struct ttcp* _ttcp, struct tcp_pcb *newpcb); - -bool cleanNewClientConn(struct ttcp* _ttcp); - -int8_t getNewClientConnId(struct ttcp* _ttcp, struct tcp_pcb *newpcb); - -int8_t getCurrClientConnId(); - -struct tcp_pcb * getFirstClient(struct ttcp* _ttcp, bool verbose); - -void closeConnections(); - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/ard_utils.c b/libraries/WiFi/extras/wifiHD/src/ard_utils.c deleted file mode 100644 index c2937d8977a..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/ard_utils.c +++ /dev/null @@ -1,347 +0,0 @@ -/* - * ard_utils.c - * - * Created on: Jul 4, 2010 - * Author: mlf by Metodo2 srl - */ -//#define _APP_DEBUG_ - -#include "lwip/pbuf.h" -#include "wifi_spi.h" -#include "ard_utils.h" -#include "debug.h" -#include "ard_spi.h" -#include "ard_tcp.h" - -#define MAX_PBUF_STORED 30 - -tData pBufStore[MAX_PBUF_STORED][MAX_SOCK_NUM]; - -unsigned char headBuf[MAX_SOCK_NUM] = {0}; -unsigned char tailBuf[MAX_SOCK_NUM] = {0}; - -#define IS_BUF_AVAIL(x) (tailBuf[x] != headBuf[x]) -#define IS_BUF_EMPTY(x) ((tailBuf[x] == 0) && (headBuf[x] == 0)) - -void init_pBuf() -{ - memset(pBufStore, 0, sizeof(pBufStore)); -} - -uint8_t* insertBuf(uint8_t sock, uint8_t* buf, uint16_t len) -{ - DUMP(buf,len); - if (sock>= MAX_SOCK_NUM) - { - WARN("Sock out of range: sock=%d", sock); - return NULL; - } - if (pBufStore[headBuf[sock]][sock].data != NULL) - { - WARN("Overwriting buffer %p idx:%d!\n", pBufStore[headBuf[sock]][sock].data, headBuf[sock]); - // to avoid memory leak free the oldest buffer - freetDataIdx(headBuf[sock], sock); - } - - u8_t* p = (u8_t*)calloc(len,sizeof(u8_t)); - if(p != NULL) { - memcpy(p, buf, len); - - pBufStore[headBuf[sock]][sock].data = p; - pBufStore[headBuf[sock]][sock].len = len; - pBufStore[headBuf[sock]][sock].idx = 0; - pBufStore[headBuf[sock]][sock].pcb = getTTCP(sock, TTCP_MODE_TRANSMIT); - headBuf[sock]++; - - if (headBuf[sock] == MAX_PBUF_STORED) - headBuf[sock] = 0; - if (headBuf[sock] == tailBuf[sock]) - { - WARN("Avoid to Overwrite data [%d-%d]!\n", headBuf[sock], tailBuf[sock]); - if (headBuf[sock] != 0) - --headBuf[sock]; - else - headBuf[sock] = MAX_PBUF_STORED-1; - } - INFO_UTIL("Insert[%d]: %p:%d-%d [%d,%d]\n", sock, p, len, p[0], headBuf[sock], tailBuf[sock]); - } - return p; -} - - -uint16_t calcMergeLen(uint8_t sock) -{ - uint16_t len = 0; - - unsigned char index = tailBuf[sock]; - do { - if (pBufStore[index][sock].data != NULL) - { - len += pBufStore[index][sock].len; - len -= pBufStore[index][sock].idx; - INFO_UTIL_VER(" [%d]: len:%d idx:%d tot:%d\n", sock, pBufStore[index][sock].len, pBufStore[index][sock].idx, len); - } - ++index; - if (index == MAX_PBUF_STORED) - index = 0; - }while (index!=headBuf[sock]); - return len; -} - -uint16_t clearBuf(uint8_t sock) -{ - uint16_t len = 0; - - unsigned char index = tailBuf[sock]; - do { - if (pBufStore[index][sock].data != NULL) - { - freetDataIdx(index,sock); - } - ++index; - if (index == MAX_PBUF_STORED) - index = 0; - }while (index!=headBuf[sock]); - tailBuf[sock]=index; - return len; -} - -uint8_t* mergeBuf(uint8_t sock, uint8_t** buf, uint16_t* _len) -{ - uint16_t len = calcMergeLen(sock); - uint8_t* p = (u8_t*)calloc(len,sizeof(u8_t)); - uint8_t* _p = p; - if(p != NULL) { - unsigned char index = tailBuf[sock]; - do { - if (pBufStore[index][sock].data != NULL) - { - memcpy(p, pBufStore[index][sock].data, pBufStore[index][sock].len); - p += pBufStore[index][sock].len; - } - ++index; - if (index == MAX_PBUF_STORED) - index = 0; - }while (index!=headBuf[sock]); - } - DUMP(_p,len); - if (buf != NULL) - *buf = _p; - if (_len != NULL) - *_len = len; - return _p; -} - -uint8_t* insert_pBuf(struct pbuf* q, uint8_t sock, void* _pcb) -{ - if (q == NULL) - return NULL; - - if (pBufStore[headBuf[sock]][sock].data != NULL) - { - WARN("Overwriting buffer %p idx:%d!\n", pBufStore[headBuf[sock]][sock].data, headBuf[sock]); - // to avoid memory leak free the oldest buffer - freetDataIdx(headBuf[sock], sock); - } - - u8_t* p = (u8_t*)calloc(q->tot_len,sizeof(u8_t)); - if(p != NULL) { - if (pbuf_copy_partial(q, p, q->tot_len,0) != q->tot_len) { - WARN("pbuf_copy_partial failed: src:%p, dst:%p, len:%d\n", q, p, q->tot_len); - free(p); - p = NULL; - return p; - } - - pBufStore[headBuf[sock]][sock].data = p; - pBufStore[headBuf[sock]][sock].len = q->tot_len; - pBufStore[headBuf[sock]][sock].idx = 0; - pBufStore[headBuf[sock]][sock].pcb = _pcb; - headBuf[sock]++; - - if (headBuf[sock] == MAX_PBUF_STORED) - headBuf[sock] = 0; - if (headBuf[sock] == tailBuf[sock]) - { - WARN("Avoid to Overwrite data [%d-%d]!\n", headBuf[sock], tailBuf[sock]); - if (headBuf[sock] != 0) - --headBuf[sock]; - else - headBuf[sock] = MAX_PBUF_STORED-1; - } - INFO_UTIL("Insert[%d]: %p:%d-%d [%d,%d]\n", sock, p, q->tot_len, p[0], headBuf[sock], tailBuf[sock]); - } - return p; -} - -void dumpPbuf(uint8_t sock) -{ - unsigned char index = tailBuf[sock]; - printk("headBuf=%d tailBuf=%d\n", headBuf[sock], tailBuf[sock]); - do { - if (pBufStore[index][sock].data != NULL) - { - printk("%d] pcb:%p Buf: %p Len:%d\n", pBufStore[index][sock].idx, pBufStore[index][sock].pcb, - pBufStore[index][sock].data, pBufStore[index][sock].len); - } - ++index; - if (index == MAX_PBUF_STORED) - index = 0; - }while (index!=headBuf[sock]); -} - -tData* get_pBuf(uint8_t sock) -{ - if (IS_BUF_EMPTY(sock)) - return NULL; - - if (IS_BUF_AVAIL(sock)) - { - tData* p = &(pBufStore[tailBuf[sock]][sock]); - INFO_UTIL_VER("%p [%d,%d]\n", p, headBuf[sock], tailBuf[sock]); - return p; - } - return NULL; -} - -void freetData(void * buf, uint8_t sock) -{ - if (buf==NULL) - { - WARN("Buf == NULL!"); - return; - } - - pBufStore[tailBuf[sock]][sock].data = NULL; - pBufStore[tailBuf[sock]][sock].len = 0; - pBufStore[tailBuf[sock]][sock].idx = 0; - pBufStore[tailBuf[sock]][sock].pcb = 0; - - if (++tailBuf[sock] == MAX_PBUF_STORED) - tailBuf[sock] = 0; - INFO_UTIL("%p [%d,%d]\n", buf, headBuf[sock], tailBuf[sock]); - free(buf); -} - -void freetDataIdx(uint8_t idxBuf, uint8_t sock) -{ - if (idxBuf >=MAX_PBUF_STORED) - { - WARN("idxBuf out of range: %d\n", idxBuf); - return; - } - - void * buf = pBufStore[idxBuf][sock].data; - - INFO_UTIL("%p idx:%d\n", buf, idxBuf); - - free(buf); - - pBufStore[idxBuf][sock].data = 0; - pBufStore[idxBuf][sock].len = 0; - pBufStore[idxBuf][sock].idx = 0; - pBufStore[idxBuf][sock].pcb = 0; -} - - -void ack_recved(void* pcb, int len); - -void ackAndFreeData(void* pcb, int len, uint8_t sock, uint8_t* data) -{ - INFO_TCP("Ack pcb:%p len:%d sock:%d data:%p\n", pcb, len, sock, data); - if (!IS_UDP_SOCK(sock)) - ack_recved(pcb, len); - if (data != NULL) - freetData(data, sock); -} - - -bool isAvailTcpDataByte(uint8_t sock) -{ - tData* p = get_pBuf(sock); - - if (p != NULL) - { - INFO_UTIL_VER("check:%d %d %p\n",p->idx, p->len, p->data); - if (p->idx == p->len) - { - INFO_UTIL("Free %p other buf %d tail:%d head:%d\n", - p->data, IS_BUF_AVAIL(sock), tailBuf[sock], headBuf[sock]); - ackAndFreeData(p->pcb, p->len, sock, p->data); - return (IS_BUF_AVAIL(sock)); - }else{ - return true; - } - } - return false; -} - -uint16_t getAvailTcpDataByte(uint8_t sock) -{ - uint16_t len = calcMergeLen(sock); - INFO_UTIL_VER("Availabled data: %d\n", len); - return len; -} - - -bool getTcpDataByte(uint8_t sock, uint8_t* payload, uint8_t peek) -{ - // ref field in struct pbuf has been used as index pointer for byte data - tData* p = get_pBuf(sock); - - if (p != NULL) - { - if (p->idx < p->len) - { - uint8_t* buf = (uint8_t*)p->data; - if (peek) - *payload = buf[p->idx]; - else - *payload = buf[p->idx++]; - INFO_UTIL_VER("get:%d %p %d\n",p->idx, p->data, *payload); - if (p->idx == p->len) - ackAndFreeData(p->pcb, p->len, sock, p->data); - return true; - }else{ - ackAndFreeData(p->pcb, p->len, sock, p->data); - } - } - return false; -} - -bool getTcpData(uint8_t sock, void** payload, uint16_t* len) -{ - tData* p = NULL; - p = get_pBuf(sock); - if (p != NULL) - { - *payload = p->data; - *len = p->len; - return true; - } - return false; -} - -bool freeTcpData(uint8_t sock) -{ - tData* p = NULL; - p = get_pBuf(sock); - if (p != NULL) - { - ackAndFreeData(p->pcb, p->len, sock, p->data); - return true; - } - return false; -} - -void freeAllTcpData(uint8_t sock) -{ - tData* p = NULL; - do{ - p = get_pBuf(sock); - if (p != NULL) - freetData(p->data, sock); - }while(p!=NULL); -} - - diff --git a/libraries/WiFi/extras/wifiHD/src/ard_utils.h b/libraries/WiFi/extras/wifiHD/src/ard_utils.h deleted file mode 100644 index 323b3283373..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/ard_utils.h +++ /dev/null @@ -1,295 +0,0 @@ -/* - * ard_utils.h - * - * Created on: Jul 4, 2010 - * Author: mlf by Metodo2 srl - */ - -#ifndef ARD_UTILS_H_ -#define ARD_UTILS_H_ - -#include "gpio.h" -#include "debug.h" -#include "ARDUINO/arduino.h" -#define INIT_SIGNAL_FOR_SPI() gpio_disable_pin_pull_up(ARDUINO_HANDSHAKE_PIN); -#define BUSY_FOR_SPI() gpio_set_gpio_pin(ARDUINO_HANDSHAKE_PIN) -#define AVAIL_FOR_SPI() gpio_clr_gpio_pin(ARDUINO_HANDSHAKE_PIN) - -#define LED0_UP() gpio_set_gpio_pin(LED0_GPIO) -#define LED0_DN() gpio_clr_gpio_pin(LED0_GPIO) -#define LED0_TL() gpio_tgl_gpio_pin(LED0_GPIO) -#define LED1_UP() gpio_set_gpio_pin(LED1_GPIO) -#define LED1_DN() gpio_clr_gpio_pin(LED1_GPIO) -#define LED1_TL() gpio_tgl_gpio_pin(LED1_GPIO) -#define LED2_UP() gpio_set_gpio_pin(LED2_GPIO) -#define LED2_DN() gpio_clr_gpio_pin(LED2_GPIO) -#define LED2_TL() gpio_tgl_gpio_pin(LED2_GPIO) - -#ifdef _DEBUG_ -#define SIGN0_UP LED0_UP -#define SIGN0_DN LED0_DN -#define SIGN0_TL LED0_TL -#define SIGN1_UP LED1_UP -#define SIGN1_DN LED1_DN -#define SIGN1_TL LED1_TL -#define SIGN2_UP LED2_UP -#define SIGN2_DN LED2_DN -#define SIGN2_TL LED2_TL - -#define DEB_PIN_UP(X) gpio_set_gpio_pin(DEB##X##_PIN_GPIO) -#define DEB_PIN_DN(X) gpio_clr_gpio_pin(DEB##X##_PIN_GPIO) -#define DEB_PIN_ENA(X) gpio_enable_gpio_pin(DEB##X##_PIN_GPIO) -#define DEB_PIN_TOGGLE(X) gpio_tgl_gpio_pin(DEB##X##_PIN_GPIO) -#define DEB_PIN_TRIGGER(X) DEB_PIN_DN(X); DEB_PIN_UP(X); - - -#else -#define SIGN0_UP() -#define SIGN0_DN() -#define SIGN0_TL() -#define SIGN1_UP() -#define SIGN1_DN() -#define SIGN1_TL() -#define SIGN2_UP() -#define SIGN2_DN() -#define SIGN2_TL() - -#define DEB_PIN_UP(X) -#define DEB_PIN_DN(X) -#define DEB_PIN_ENA(X) -#define DEB_PIN_TOGGLE(X) -#define DEB_PIN_TRIGGER(X) - -//#define TOGGLE_SIG0 -#endif - -#define DELAY_450NS asm volatile("nop") -#define DELAY_1uS DELAY_450NS; DELAY_450NS; -#define TOGGLE_SIG0() SIGN0_UP(); DELAY_450NS;SIGN0_DN(); - - -#define LINK_LED_OFF LED0_UP -#define ERROR_LED_OFF LED1_UP -#define DATA_LED_OFF LED2_UP - -#define LINK_LED_ON LED0_DN -#define ERROR_LED_ON LED1_DN -#define DATA_LED_ON LED2_DN - -#define LINK_LED_BL LED0_TL -#define ERROR_LED_BL LED1_TL -#define DATA_LED_BL LED2_TL - - -#define CREATE_HEADER_REPLY(REPLY, RECV, NUM_PARAMS)\ - REPLY[0] = RECV[0]; \ - REPLY[1] = RECV[1] | REPLY_FLAG; \ - REPLY[2] = NUM_PARAMS; - -#define CREATE_HEADER_REPLY_WAIT(REPLY, RECV, NUM_PARAMS)\ - REPLY[0] = RECV[0]; \ - REPLY[1] = RECV[1] | WAIT_FLAG; \ - REPLY[2] = NUM_PARAMS; - - -#define END_HEADER_REPLY(REPLY, TOT_LEN, COUNT)\ - REPLY[TOT_LEN] = END_CMD; \ - REPLY[TOT_LEN+1] = 0; \ - COUNT=TOT_LEN+1; - -#define RETURN_ERR_REPLY(RECV,REPLY,COUNT) \ - {uint8_t err = 0; return ack_reply_cb(RECV,REPLY,&err,COUNT);} - -#define CHECK_ARD_NETIF(RECV,REPLY,COUNT) \ - if (ard_netif == NULL) \ - { uint8_t err = 0; return ack_reply_cb(RECV,REPLY,&err,COUNT); } - -#define PUT_LONG_IN_BYTE_HO(LONG, BYTE, IDX) { \ - uint32_t _long = LONG; \ - BYTE[IDX] = 4; \ - BYTE[IDX+1] = (uint8_t)(_long & 0xff); \ - BYTE[IDX+2] = (uint8_t)((_long & 0xff00)>>8); \ - BYTE[IDX+3] = (uint8_t)((_long & 0xff0000)>>16); \ - BYTE[IDX+4] = (uint8_t)((_long & 0xff000000)>>24); \ -} - -#define PUT_LONG_IN_BYTE_NO(LONG, BYTE, IDX) { \ - uint32_t _long = LONG; \ - BYTE[IDX] = 4; \ - BYTE[IDX+4] = (uint8_t)(_long & 0xff); \ - BYTE[IDX+3] = (uint8_t)((_long & 0xff00)>>8); \ - BYTE[IDX+2] = (uint8_t)((_long & 0xff0000)>>16); \ - BYTE[IDX+1] = (uint8_t)((_long & 0xff000000)>>24); \ -} - - -#define PUT_DATA_INT(INT, BYTE, IDX) { \ - uint16_t _int = INT; \ - BYTE[IDX] = 2; \ - BYTE[IDX+1] = (uint8_t)((_int & 0xff00)>>8); \ - BYTE[IDX+2] = (uint8_t)(_int & 0xff); \ -} - -#define PUT_DATA_INT_NO(INT, BYTE, IDX) { \ - uint16_t _int = INT; \ - BYTE[IDX] = 2; \ - BYTE[IDX+2] = (uint8_t)((_int & 0xff00)>>8); \ - BYTE[IDX+1] = (uint8_t)(_int & 0xff); \ -} - -#define PUT_DATA_BYTE(DATA, BYTE, IDX) { \ - BYTE[IDX] = 1; \ - BYTE[IDX+1] = (uint8_t)DATA; \ -} - -#define PUT_BUFDATA_BYTE(BUF, BUFLEN, BYTE, IDX) { \ - BYTE[IDX] = (uint8_t)(BUFLEN & 0xff); \ - uint16_t i = 0; \ - for (; i>8); \ - BYTE[IDX+1] = (uint8_t)(BUFLEN & 0xff); \ - uint16_t i = 0; \ - for (; iparamLen == LEN)) - -#define NEXT_PARAM(PARAM) \ - do { \ - if (PARAM!=NULL){ \ - PARAM=(tParam*)((uint8_t*)PARAM+PARAM->paramLen+1); \ - GET_PARAM_BYTE(PARAM, end) \ - if (end == END_CMD) WARN("End of cmd params", PARAM); \ - } \ - }while(0); - -#define GET_PARAM_LONG(PARAM, LONG) \ - uint32_t LONG = 0; \ - if CHECK_PARAM_LEN(PARAM, 4) { \ - tLongParam* s = (tLongParam*)PARAM; \ - LONG = s->param; \ - } - -#define GET_PARAM_INT(PARAM, INT) \ - uint16_t INT = 0; \ - if CHECK_PARAM_LEN(PARAM, 2) { \ - tIntParam* s = (tIntParam*)PARAM; \ - INT = s->param; \ - } - -#define GET_PARAM_BYTE(PARAM, BYTE) \ - uint8_t BYTE = 0; \ - if CHECK_PARAM_LEN(PARAM, 1) { \ - tByteParam* s = (tByteParam*)PARAM; \ - BYTE = s->param; \ - } - -#define GET_PARAM_NEXT(TYPE, PARAM, DATA) \ - GET_PARAM_##TYPE(PARAM, DATA) \ - NEXT_PARAM(PARAM) - -#ifdef _SPI_STATS_ -#define STATSPI_TIMEOUT_ERROR() \ - statSpi.timeoutIntErr++; \ - statSpi.rxErr++; \ - statSpi.lastError = SPI_TIMEOUT_ERROR; \ - statSpi.status = spi_getStatus(ARD_SPI); - -#define STATSPI_DISALIGN_ERROR() \ - statSpi.frameDisalign++; \ - statSpi.rxErr++; \ - statSpi.lastError = SPI_ALIGN_ERROR; \ - statSpi.status = spi_getStatus(ARD_SPI); - -#define STATSPI_OVERRIDE_ERROR() \ - statSpi.overrideFrame++; \ - statSpi.rxErr++; \ - statSpi.lastError = SPI_OVERRIDE_ERROR; \ - statSpi.status = spi_getStatus(ARD_SPI); - -#define STATSPI_TX_TIMEOUT_ERROR() \ - statSpi.timeoutErr++; \ - statSpi.txErr++; \ - statSpi.lastError = SPI_ERROR_TIMEOUT; \ - statSpi.status = spi_getStatus(ARD_SPI); -#else -#define STATSPI_TIMEOUT_ERROR() -#define STATSPI_TX_TIMEOUT_ERROR() -#define STATSPI_DISALIGN_ERROR() -#define STATSPI_OVERRIDE_ERROR() -#endif - -#define DUMP_TCP_STATE(TTCP) do {\ - int i = getCurrClientConnId(); \ - INFO_TCP("%d] ttcp:%p tpcb:%p state:%d lpcb:%p state:%d left:%d sent:%d\n", \ - i, TTCP, TTCP->tpcb[i], (TTCP->tpcb[i])?TTCP->tpcb[i]->state:0, \ - TTCP->lpcb, (TTCP->lpcb)?TTCP->lpcb->state:0, \ - (TTCP->tpcb[i])?TTCP->left[i]:0, (TTCP->tpcb[i])?TTCP->buff_sent[i]:0); \ - } while(0); - -#define Mode2Str(_Mode) ((_Mode==0)?"TRANSMIT":"RECEIVE") -#define ProtMode2Str(_protMode) ((_protMode==0)?"TCP":"UDP") - -typedef struct sData -{ - uint8_t* data; - uint16_t len; - uint16_t idx; - void* pcb; -}tData; - -struct pbuf; - -void init_pBuf(); - -uint8_t* insert_pBuf(struct pbuf* q, uint8_t sock, void* _pcb); - -uint8_t* insertBuf(uint8_t sock, uint8_t* buf, uint16_t len); - -uint8_t* mergeBuf(uint8_t sock, uint8_t** buf, uint16_t* _len); - -uint16_t clearBuf(uint8_t sock); - -tData* get_pBuf(uint8_t sock); - -void freetData(void * buf, uint8_t sock); - -void freetDataIdx(uint8_t idxBuf, uint8_t sock); - -bool isBufAvail(); - -bool getTcpData(uint8_t sock, void** payload, uint16_t* len); - -bool getTcpDataByte(uint8_t sock, uint8_t* payload, uint8_t peek); - -uint16_t getAvailTcpDataByte(uint8_t sock); - -bool isAvailTcpDataByte(uint8_t sock); - -uint8_t freeTcpData(uint8_t sock); - -void freeAllTcpData(uint8_t sock); - -#endif /* ARD_UTILS_H_ */ diff --git a/libraries/WiFi/extras/wifiHD/src/avr32_spi.c b/libraries/WiFi/extras/wifiHD/src/avr32_spi.c deleted file mode 100644 index 739fb284c53..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/avr32_spi.c +++ /dev/null @@ -1,394 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include -#include -#include -#include -#include -#include -#include -#include - -#define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0]) - -__attribute__((__interrupt__)) void avr32_irq_handler(void); -void owl_spi_mdelay(uint32_t ms); - -int owl_spi_init(U8 *flags) -{ -#ifdef _ASSERT_ENABLE_ /* To silence warning if Assert() macro is empty */ - volatile avr32_pm_t *pm = &AVR32_PM; -#endif - - volatile avr32_spi_t *spi = &WL_SPI; -#if WL_SPI_CS == 1 - volatile avr32_spi_csr1_t* CSR = &spi->CSR1; -#elif WL_SPI_CS == 2 - volatile avr32_spi_csr2_t* CSR = &spi->CSR2; -#elif WL_SPI_CS == 3 - volatile avr32_spi_csr3_t* CSR = &spi->CSR3; -#elif SPI_CS == 0 - volatile avr32_spi_csr0_t* CSR = &spi->CSR0; -#endif - -#ifndef WITH_NO_DMA - volatile avr32_pdca_channel_t *pdca_tx = &AVR32_PDCA.channel[0]; - volatile avr32_pdca_channel_t *pdca_rx = &AVR32_PDCA.channel[1]; -#endif - -#ifndef WL_IRQ_PIN - *flags = SPI_FLAG_POLL; -#else - *flags = 0; -#endif - - -#ifdef WL_IRQ_PIN - /* input, irq */ - gpio_enable_gpio_pin(WL_IRQ_PIN); - gpio_enable_pin_pull_up(WL_IRQ_PIN); -#endif - -//#ifdef WL_RESET_PIN -// /* reset pin */ -// gpio_enable_gpio_pin(WL_RESET_PIN); -// gpio_set_gpio_pin(WL_RESET_PIN); -//#endif - - -#ifdef WL_POWER_PIN - /* power off the device */ - gpio_enable_gpio_pin(WL_POWER_PIN); - gpio_set_gpio_pin(WL_POWER_PIN); -#endif - -#ifdef WL_SHUTDOWN_PIN - gpio_enable_gpio_pin(WL_SHUTDOWN_PIN); - -#ifdef WL_NO_INTERNAL_RESET /* never defined for SPB104/SPB105 */ - gpio_clr_gpio_pin(WL_SHUTDOWN_PIN); -#endif - -#ifdef WL_EXTERNAL_RESET - gpio_enable_gpio_pin(WL_RESET_PIN); -#endif - -#endif /* WL_SHUTDOWN_PIN */ - -#ifdef WL_POWER_PIN - /* power on the device */ - gpio_clr_gpio_pin(WL_POWER_PIN); -#endif - -#ifdef WL_SHUTDOWN_PIN - -#ifdef WL_NO_INTERNAL_RESET /* never defined for SPB104/SPB105 */ - owl_spi_mdelay(5); - gpio_set_gpio_pin(WL_SHUTDOWN_PIN); - -#elif WL_EXTERNAL_RESET - owl_spi_mdelay(5); - gpio_set_gpio_pin(WL_SHUTDOWN_PIN); - - owl_spi_mdelay(20); - //delay_ms(10); //2ms - - /* reset pin */ - gpio_set_gpio_pin(WL_RESET_PIN); - -#else - - /* The shutdown pin will go high once the device is powered */ - { -#define SHUTDOWN_TIMEOUT 350 - uint32_t shutdown_timer = 0; - while (gpio_get_pin_value(WL_SHUTDOWN_PIN) == 0) { - if (shutdown_timer > SHUTDOWN_TIMEOUT) - { - printk("Timeout WL Shutdown\n"); - return -1; - } - owl_spi_mdelay(5); - shutdown_timer += 5; - } - } -#endif /* WL_NO_INTERNAL_RESET */ - -#else - /* We need to make a guess about the time needed to power the device, - * this will depend on the hardware design. - */ - owl_spi_mdelay(5); -#endif /* WL_SHUTDOWN_PIN */ - - /* Note: SPI0 clock enabled at reset in pm->pbamask (see 13.6.3) */ - Assert(pm->pbamask & (1 << 5)); - - /* Note: GPIO clock enabled at reset in pm->pbamask (see 13.6.3) */ - Assert(pm->pbamask & (1 << 1)); -#ifdef WL_IRQ_PIN - /* 22.4.7: "In every port there are four interrupt lines - * connected to the interrupt controller. Every eigth - * interrupts in the port are ored together to form an - * interrupt line." - * - * WL_IRQ_# = (WL_IRQ_PIN / 32) * 4 + (WL_IRQ_PIN / 8) % 4 - * 62 => 1 * 4 + 3 = 7 - */ - INTC_register_interrupt(&avr32_irq_handler, WL_IRQ, AVR32_INTC_INT0); -#endif - -#ifndef WITH_NO_DMA - INTC_register_interrupt(&avr32_irq_handler, AVR32_PDCA_IRQ_0, - AVR32_INTC_INT0); - INTC_register_interrupt(&avr32_irq_handler, AVR32_PDCA_IRQ_1, - AVR32_INTC_INT0); - pdca_tx->IER.terr = 1; - pdca_rx->IER.terr = 1; -#endif - -#ifdef WL_SPI_CLOCK_DIVIDER - CSR->scbr = WL_SPI_CLOCK_DIVIDER; -#else - CSR->scbr = 2; -#endif - - /* Use max width of TDR register, 16 bit transfers */ - CSR->bits = 0x8; - - /* Make sure that we can hold CS low until transfer is completed, e.g - * LASTXFER is set in TDR. - */ - CSR->csaat = 1; - - /* NRG component requires clock polarity high */ - CSR->cpol = 1; - - -#ifdef WL_IRQ_PIN - /* make sure to clear any pending bits in ifr here. */ - gpio_clear_pin_interrupt_flag(WL_IRQ_PIN); -#endif - - return 0; -} - -#ifndef WITH_NO_DMA -static void dma_txrx(const U8* in, U8* out, U16 len) -{ - volatile avr32_pdca_channel_t *pdca_tx = &AVR32_PDCA.channel[0]; - volatile avr32_pdca_channel_t *pdca_rx = &AVR32_PDCA.channel[1]; - - /* setup tx */ - pdca_tx->mar = (U32) in; - pdca_tx->PSR.pid = WL_PDCA_PID_TX; - pdca_tx->tcr = len / 2; - pdca_tx->MR.size = 1; /* 2-byte */ - pdca_tx->IER.trc = 1; - - /* setup rx */ - pdca_rx->mar = (U32) out; - pdca_rx->PSR.pid = WL_PDCA_PID_RX; - pdca_rx->tcr = len / 2; - pdca_rx->MR.size = 1; /* 2-byte */ - pdca_rx->IER.trc = 1; - - /* start dma's. for some reason rx must be started prior to tx */ - pdca_rx->CR.ten = 1; - pdca_tx->CR.ten = 1; - - /* blocking wait until transfer is completed */ - while (!(pdca_tx->ISR.trc && pdca_rx->ISR.trc)); -} -#endif - -/* access data using byte pointers since we might get unaligned - * data from lwip. The cpu will issue a data abort if we try - * to access data which is not properly aligned. See data sheet. - * - * Note that fifo_txrx() doesn't handle the case where len is not a - * multiple of two bytes properly. - * - * However, there is no actual case where len is odd at the same time - * as the "out" pointer is non-NULL; therefore I think that in practice, - * we'll not write beyond the end of the "out" array. - * - * The extra unknown byte fetched from the in pointer will be discarded - * by the device since a length field included in the packet header will inform - * the device of the actual number of valid bytes (this implementation is - * kind of hidden inside the library). - */ -static void fifo_txrx(const U8 *in, U8* out, U16 len) -{ - volatile avr32_spi_t *spi = &WL_SPI; - UnionCPtr in_ptr; - UnionPtr out_ptr; - U32 sr; - - Assert(len); - - in_ptr.u8ptr = in; - out_ptr.u8ptr = out; - - while (len) { - U16 rdr; - union { - avr32_spi_tdr_t TDR; - U32 tdr; - } reg = { { 0 } }; - - while (!spi->SR.tdre); - while (!spi->SR.txempty); - - /* prepare tx data register contents */ - if (in_ptr.u8ptr) { - reg.TDR.td |= (in_ptr.u8ptr[0] << 8) | in_ptr.u8ptr[1]; - in_ptr.u16ptr++; - } - else - reg.TDR.td |= 0xffff; - - /* perform tx */ - spi->tdr = reg.tdr; - - /* wait until rx is ready */ - while (!spi->SR.rdrf); - - /* fetch rx data */ - rdr = spi->RDR.rd; - if (out_ptr.u8ptr) { - out_ptr.u8ptr[0] = (rdr >> 8) & 0xff; - out_ptr.u8ptr[1] = rdr & 0xff; - out_ptr.u16ptr++; - } - - if (len >= 2) - len -= 2; - else - len = 0; - } - - sr = spi->sr; - Assert(!(sr & AVR32_SPI_SR_OVRES_MASK)); - Assert(!(sr & AVR32_SPI_SR_MODF_MASK)); -} - -void owl_spi_txrx(const U8 *in, U8* out, U16 len) -{ -#ifndef WITH_NO_DMA - static uint8_t buf[MAX_BLOCK_LEN]; - - /* unaligned data or odd number of bytes, then skip dma */ - if ((U32) in % 4 || (U32) out % 4 || len % 2) { - fifo_txrx(in, out, len); - } else { - if (in == NULL) { - memset(buf, 0xff, len); - in = buf; - } else if (out == NULL) { - out = buf; - } - dma_txrx(in, out, len); - } -#else - fifo_txrx(in, out, len); -#endif -} - -void owl_spi_irq(U8 enable) -{ -#ifdef WL_IRQ_PIN - - if (enable) - gpio_enable_pin_interrupt(WL_IRQ_PIN, GPIO_PIN_CHANGE); - else - gpio_disable_pin_interrupt(WL_IRQ_PIN); -#endif -} - -void owl_spi_cs(U8 enable) -{ - volatile avr32_spi_t *spi = &WL_SPI; - - /* - * PCS = xxx0 => NPCS[3:0] = 1110 - * PCS = xx01 => NPCS[3:0] = 1101 - * PCS = x011 => NPCS[3:0] = 1011 - * PCS = 0111 => NPCS[3:0] = 0111 - * PCS = 1111 => forbidden (no peripheral is selected) - */ - - if (enable) -#if WL_SPI_CS == 2 - spi->MR.pcs = 0x3; /* cs2 */ -#elif WL_SPI_CS == 1 - spi->MR.pcs = 0x1; /* cs1 */ -#elif WL_SPI_CS == 3 - spi->MR.pcs = 0x7; /* cs3 */ -#elif WL_SPI_CS == 0 - spi->MR.pcs = 0x0; /* cs0 */ -#endif - else - spi->MR.pcs = 0xf; -} - -void owl_spi_mdelay(uint32_t ms) -{ - volatile int a = 0; - int i; - for (i = 0; i < ms * 5000; i++) - a++; -} - -__attribute__((__interrupt__)) void avr32_irq_handler(void) -{ -#ifndef WITH_NO_DMA - volatile avr32_pdca_channel_t *pdca_tx = &AVR32_PDCA.channel[0]; - volatile avr32_pdca_channel_t *pdca_rx = &AVR32_PDCA.channel[1]; - - /* tx xfer complete */ - if (pdca_tx->IMR.trc && pdca_tx->ISR.trc) { - pdca_tx->IDR.trc = 1; - pdca_tx->CR.tdis = 1; /* disable tx xfer */ - } - - /* rx xfer complete */ - if (pdca_rx->IMR.trc && pdca_rx->ISR.trc) { - pdca_rx->IDR.trc = 1; - pdca_rx->CR.tdis = 1; /* disable rx xfer */ - } -#endif - -#ifdef WL_IRQ_PIN - if (gpio_get_pin_interrupt_flag(WL_IRQ_PIN)) { - gpio_clear_pin_interrupt_flag(WL_IRQ_PIN); - wl_spi_irq(); - } -#endif - -} diff --git a/libraries/WiFi/extras/wifiHD/src/board_init.c b/libraries/WiFi/extras/wifiHD/src/board_init.c deleted file mode 100644 index a2a191ea926..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/board_init.c +++ /dev/null @@ -1,297 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#ifdef WITH_SDRAM - #include -#endif -#include -#include - -#ifndef NO_SERIAL /* The bootloader does not want serial port - * code */ -#include - -int board_putchar(char c) -{ - int timeout = USART_DEFAULT_TIMEOUT; - if (c == '\n') { - do { - if (!timeout--) - return USART_FAILURE; - } while (usart_write_char(&CONFIG_CONSOLE_PORT, '\r') != - USART_SUCCESS); - - timeout = USART_DEFAULT_TIMEOUT; - } - - do { - if (!timeout--) - return USART_FAILURE; - } while (usart_write_char(&CONFIG_CONSOLE_PORT, c) != USART_SUCCESS); - - return USART_SUCCESS; -} -#endif /* NO_SERIAL */ -/** - * Initializes the MCU system clocks. - */ -static void -init_sys_clocks(void) -{ - - /* if we don't run on OSC0 don't switch to it since we don't know - * what kind of oscillator we have here - */ - -#if OSC == 0 - /* switch to OSC0 to speed up the booting */ - pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP); -#endif - - -#ifndef USE_PLL - return; -#endif - - /* For audio, ee have to use OSC1 on to generate the correct clockrate - * for the SSC - */ -#if OSC == 1 - /* start oscillator1 */ - pm_enable_osc1_crystal(&AVR32_PM, FOSC1); - pm_enable_clk1(&AVR32_PM, OSC1_STARTUP); -#endif - - /* configure pll multipliers */ - pm_pll_setup(&AVR32_PM, - 0, /* pll */ - PLL_MUL, /* mul */ - 1, /* div */ - OSC, /* osc */ - 16); /* lockcount */ - - /* set PLL operating range and divider (fpll = fvco/2) - * this gives PLL output = 66 MHz (62.0928 MHz for EVK1105/OSC1) - */ - pm_pll_set_option(&AVR32_PM, - 0, /* pll */ - 1, /* pll_freq */ - 1, /* pll_div2 */ - 0); /* pll_wbwdisable. */ - - - /* start PLL0 and wait for the lock */ - pm_pll_enable(&AVR32_PM, 0); - pm_wait_for_pll0_locked(&AVR32_PM); - - /* Set all peripheral clocks torun at master clock rate */ - pm_cksel(&AVR32_PM, - 0, /* pbadiv */ - 0, /* pbasel */ - 0, /* pbbdiv */ - 0, /* pbbsel */ - 0, /* hsbdiv */ - 0); /* hsbsel */ - - /* Set one waitstate for the flash */ - flashc_set_wait_state(1); - - /* Switch to PLL0 as the master clock */ - pm_switch_to_clock(&AVR32_PM, AVR32_PM_MCCTRL_MCSEL_PLL0); -} - -static void init_exceptions(void) -{ - extern void _evba; - Set_system_register(AVR32_EVBA, (int)&_evba); - Enable_global_exception(); -} - -static void init_hmatrix(void) -{ - union { - unsigned long scfg; - avr32_hmatrix_scfg_t SCFG; - } u_avr32_hmatrix_scfg = { - AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH] - }; - u_avr32_hmatrix_scfg.SCFG.defmstr_type = - AVR32_HMATRIX_DEFMSTR_TYPE_LAST_DEFAULT; - AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH] = - u_avr32_hmatrix_scfg.scfg; -} - -static void init_interrupts(void) -{ - INTC_init_interrupts(); - Enable_global_interrupt(); -} - -static void init_spi(void) -{ -#if defined(WL_SPI) - int i; -#endif - - -#if defined(AT45DBX_SPI) - static const gpio_map_t AT45DBX_SPI_GPIO_MAP = { - { AT45DBX_SPI_SCK_PIN, AT45DBX_SPI_SCK_FUNCTION }, - { AT45DBX_SPI_MISO_PIN, AT45DBX_SPI_MISO_FUNCTION }, - { AT45DBX_SPI_MOSI_PIN, AT45DBX_SPI_MOSI_FUNCTION }, - { AT45DBX_SPI_NPCS2_PIN, AT45DBX_SPI_NPCS2_FUNCTION }, - }; -#endif - - -#if defined(WL_SPI) - const gpio_map_t WL_SPI_GPIO_MAP = { -#if defined(WL_SPI_NPCS0) - WL_SPI_NPCS0, -#endif - WL_SPI_NPCS, WL_SPI_MISO, WL_SPI_MOSI, WL_SPI_SCK - }; -#endif - -#if defined(WL_SPI) || defined(AT45DBX_SPI) - spi_options_t spiOptions = { - .modfdis = 1 /* only param used by spi_initMaster() */ - }; -#endif - -#if defined(AT45DBX_SPI) - gpio_enable_module(AT45DBX_SPI_GPIO_MAP, - sizeof(AT45DBX_SPI_GPIO_MAP) / - sizeof(AT45DBX_SPI_GPIO_MAP[0])); - spi_initMaster(AT45DBX_SPI, &spiOptions); - spi_selectionMode(AT45DBX_SPI, 0, 0, 0); -#endif - -#if defined(WL_SPI) - /* same pins might be initialized twice here */ - gpio_enable_module(WL_SPI_GPIO_MAP, - sizeof(WL_SPI_GPIO_MAP) / - sizeof(WL_SPI_GPIO_MAP[0])); - for (i = 0; i < sizeof(WL_SPI_GPIO_MAP)/sizeof(WL_SPI_GPIO_MAP[0]); i++) - gpio_enable_pin_pull_up(WL_SPI_GPIO_MAP[i].pin); - - /* same SPI controller might be initialized again */ - spi_initMaster(&WL_SPI, &spiOptions); - spi_selectionMode(&WL_SPI, 0, 0, 0); -#endif - -#if defined(AT45DBX_SPI) - spi_enable(AT45DBX_SPI); - - /* put up flash reset pin */ - gpio_set_gpio_pin(AT45DBX_CHIP_RESET); -#endif - -#if defined(WL_SPI) - spi_enable(&WL_SPI); -#endif -} - - -static void init_rs232(void) -{ -#ifndef NO_SERIAL -#if defined(BOARD_RS232_0) - const gpio_map_t BOARD_RS232_0_GPIO_MAP = { - BOARD_RS232_0_TX, - BOARD_RS232_0_RX, -#if defined(BOARD_RS232_0_RTS) && defined (BOARD_RS232_0_CTS) - BOARD_RS232_0_RTS, - BOARD_RS232_0_CTS -#endif - - }; -#endif - -#if defined(BOARD_RS232_1) - const gpio_map_t BOARD_RS232_1_GPIO_MAP = { - BOARD_RS232_1_TX, - BOARD_RS232_1_RX -#if defined(BOARD_RS232_1_RTS) && defined (BOARD_RS232_1_CTS) - BOARD_RS232_1_RTS, - BOARD_RS232_1_CTS -#endif - }; -#endif - -#if defined(BOARD_RS232_0) - gpio_enable_module(BOARD_RS232_0_GPIO_MAP, - sizeof(BOARD_RS232_0_GPIO_MAP) / - sizeof(BOARD_RS232_0_GPIO_MAP[0])); -#endif - -#if defined(BOARD_RS232_1) - gpio_enable_module(BOARD_RS232_1_GPIO_MAP, - sizeof(BOARD_RS232_1_GPIO_MAP) / - sizeof(BOARD_RS232_1_GPIO_MAP[0])); -#endif -#endif /* NO_SERIAL */ -} - -static void init_printk(void) -{ -#ifndef NO_SERIAL -#if defined(CONFIG_CONSOLE_PORT) - const usart_options_t usart_options = { - .baudrate = 57600, - .charlength = 8, - .paritytype = USART_NO_PARITY, - .stopbits = USART_1_STOPBIT, - .channelmode = USART_NORMAL_CHMODE - }; - usart_init_rs232(&CONFIG_CONSOLE_PORT, &usart_options, FPBA_HZ); -#endif -#endif /* NO_SERIAL */ -} - -void board_init(void) -{ - - init_exceptions(); - init_hmatrix(); - init_sys_clocks(); - init_interrupts(); - - init_rs232(); - init_printk(); - -#ifdef WITH_SDRAM - sdramc_init(FHSB_HZ); -#endif - init_spi(); -} diff --git a/libraries/WiFi/extras/wifiHD/src/board_init.h b/libraries/WiFi/extras/wifiHD/src/board_init.h deleted file mode 100644 index 05a660998ef..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/board_init.h +++ /dev/null @@ -1,313 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef STARTUP_H -#define STARTUP_H - -#include -#include /* defines SPB104, SPB105 */ - -void board_init(void); - - - -/* - * - * EVK1100 - * --------------------------------------------------------------------------- - * - */ -#if BOARD == EVK1100 - -/* USART0 physical assignment */ -#define BOARD_RS232_0 AVR32_USART1 -#define BOARD_RS232_0_TX \ - { AVR32_USART1_TXD_0_0_PIN, AVR32_USART1_TXD_0_0_FUNCTION } -#define BOARD_RS232_0_RX \ - { AVR32_USART1_RXD_0_0_PIN, AVR32_USART1_RXD_0_0_FUNCTION } - -/* USART1 physical assignment */ -#define BOARD_RS232_1 AVR32_USART0 -#define BOARD_RS232_1_TX \ - { AVR32_USART0_TXD_0_0_PIN, AVR32_USART0_TXD_0_0_FUNCTION } -#define BOARD_RS232_1_RX \ - { AVR32_USART0_RXD_0_0_PIN, AVR32_USART0_RXD_0_0_FUNCTION }, - -/* Clocks */ -#define USE_PLL -#define OSC 0 -#define PLL_MUL 10 - -/* Wifi (SPB104 only) */ -#if defined(EXT_BOARD) -#if EXT_BOARD == SPB104 -#define WL_SPI AVR32_SPI1 /* Pin 8 NC, so no irq support if using SD-slot */ -#define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */ -#define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI1_TX -#define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI1_RX -#define WL_SPI_CS 1 -#define WL_SPI_NPCS0 { AVR32_SPI1_NPCS_0_0_PIN, AVR32_SPI1_NPCS_0_0_FUNCTION } -#define WL_SPI_NPCS { AVR32_SPI1_NPCS_1_0_PIN, AVR32_SPI1_NPCS_1_0_FUNCTION } -#define WL_SPI_MISO { AVR32_SPI1_MISO_0_0_PIN, AVR32_SPI1_MISO_0_0_FUNCTION } -#define WL_SPI_MOSI { AVR32_SPI1_MOSI_0_0_PIN, AVR32_SPI1_MOSI_0_0_FUNCTION } -#define WL_SPI_SCK { AVR32_SPI1_SCK_0_0_PIN, AVR32_SPI1_SCK_0_0_FUNCTION } -#endif -#endif /* EXT_BOARD */ - - - - - - -/* - * - * EVK1101 - * --------------------------------------------------------------------------- - * - */ -#elif BOARD == EVK1101 - -/* USART0 physical assignment */ -#define BOARD_RS232_0 AVR32_USART1 -#define BOARD_RS232_0_TX \ - { AVR32_USART1_TXD_0_0_PIN, AVR32_USART1_TXD_0_0_FUNCTION } -#define BOARD_RS232_0_RX \ - { AVR32_USART1_RXD_0_0_PIN, AVR32_USART1_RXD_0_0_FUNCTION } - -/* Clocks */ -#define USE_PLL -#define OSC 0 -#define PLL_MUL 9 - -/* Wifi (SPB104 only) */ -#if defined(EXT_BOARD) -#if EXT_BOARD == SPB104 /* Pin 8 NC, so no irq support if using SD-slot */ -#define WL_SPI AVR32_SPI -#define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */ -#define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI_TX -#define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI_RX -#define WL_SPI_CS 1 -#if EXT_BOARD == SPB105 - #define WL_SHUTDOWN_PIN AVR32_PIN_PA06 - #define WL_POWER_PIN AVR32_PIN_PA30 -#endif -#define WL_SPI_NPCS0 { AVR32_SPI_NPCS_0_0_PIN, AVR32_SPI_NPCS_0_0_FUNCTION } -#define WL_SPI_NPCS { AVR32_SPI_NPCS_1_0_PIN, AVR32_SPI_NPCS_1_0_FUNCTION } -#define WL_SPI_MISO { AVR32_SPI_MISO_0_0_PIN, AVR32_SPI_MISO_0_0_FUNCTION } -#define WL_SPI_MOSI { AVR32_SPI_MOSI_0_0_PIN, AVR32_SPI_MOSI_0_0_FUNCTION } -#define WL_SPI_SCK { AVR32_SPI_SCK_0_0_PIN, AVR32_SPI_SCK_0_0_FUNCTION } -#endif -#endif /* EXT_BOARD */ - - - - - - - -/* - * - * EVK1104 - * --------------------------------------------------------------------------- - * - */ -#elif BOARD == EVK1104 /* EVK1104 */ - -/* USART0 physical assignment */ -#define BOARD_RS232_0 AVR32_USART1 -#define BOARD_RS232_0_TX \ - { AVR32_USART1_TXD_0_0_PIN, AVR32_USART1_TXD_0_0_FUNCTION } -#define BOARD_RS232_0_RX \ - { AVR32_USART1_RXD_0_0_PIN, AVR32_USART1_RXD_0_0_FUNCTION } - -/* Clocks */ -#define USE_PLL -#define OSC 0 -#define PLL_MUL 9 /* for some reason we cant use 66 MHz */ - -/* Wifi (SDIO: SPB104 only; SPI: SPB105 only) */ -#if defined(EXT_BOARD) -#if EXT_BOARD == SPB105 - #define WL_SPI AVR32_SPI0 - #define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI0_TX - #define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI0_RX - #define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */ - #define WL_SHUTDOWN_PIN AVR32_PIN_PA17 /* Pin 8 on RF-head -> Pin 4 on wifi */ - #define WL_IRQ_PIN AVR32_PIN_PA18 /* Pin 6 on RF-head -> Pin 3 on wifi */ - #define WL_IRQ AVR32_GPIO_IRQ_2 - #define WL_SPI_CS 3 - #define WL_SPI_NPCS { AVR32_SPI0_NPCS_3_1_PIN, AVR32_SPI0_NPCS_3_1_FUNCTION } - #define WL_SPI_MISO { AVR32_SPI0_MISO_0_0_PIN, AVR32_SPI0_MISO_0_0_FUNCTION } - #define WL_SPI_MOSI { AVR32_SPI0_MOSI_0_0_PIN, AVR32_SPI0_MOSI_0_0_FUNCTION } - #define WL_SPI_SCK { AVR32_SPI0_SCK_0_0_PIN, AVR32_SPI0_SCK_0_0_FUNCTION } -#elif EXT_BOARD == SPB104 - #ifdef SDIO_SLOT_A - #define WL_SDIO_CLK { AVR32_MCI_CLK_0_PIN, AVR32_MCI_CLK_0_FUNCTION } - #define WL_SDIO_CMD { AVR32_MCI_CMD_0_PIN, AVR32_MCI_CMD_0_FUNCTION } - #define WL_SDIO_DAT0 { AVR32_MCI_DATA_0_PIN, AVR32_MCI_DATA_0_FUNCTION } - #define WL_SDIO_DAT1 { AVR32_MCI_DATA_1_PIN, AVR32_MCI_DATA_1_FUNCTION } - #define WL_SDIO_DAT2 { AVR32_MCI_DATA_2_PIN, AVR32_MCI_DATA_2_FUNCTION } - #define WL_SDIO_DAT3 { AVR32_MCI_DATA_3_PIN, AVR32_MCI_DATA_3_FUNCTION } - #else - #define WL_SDIO_CLK { AVR32_MCI_CLK_0_PIN, AVR32_MCI_CLK_0_FUNCTION } - #define WL_SDIO_CMD { AVR32_MCI_CMD_1_0_PIN, AVR32_MCI_CMD_1_0_FUNCTION } - #define WL_SDIO_DAT0 { AVR32_MCI_DATA_8_0_PIN, AVR32_MCI_DATA_8_0_FUNCTION } - #define WL_SDIO_DAT1 { AVR32_MCI_DATA_9_0_PIN, AVR32_MCI_DATA_9_0_FUNCTION } - #define WL_SDIO_DAT2 { AVR32_MCI_DATA_10_0_PIN, AVR32_MCI_DATA_10_0_FUNCTION } - #define WL_SDIO_DAT3 { AVR32_MCI_DATA_11_0_PIN, AVR32_MCI_DATA_11_0_FUNCTION } - #endif -#endif -#endif /* EXT_BOARD */ - - - - - - - -/* - * - * EVK1105 - * --------------------------------------------------------------------------- - * - */ -#elif BOARD == EVK1105 /* EVK1105 */ - - -/* USART0 physical assignment */ -#define BOARD_RS232_0 AVR32_USART0 -#define BOARD_RS232_0_TX \ - { AVR32_USART0_TXD_0_0_PIN, AVR32_USART0_TXD_0_0_FUNCTION } -#define BOARD_RS232_0_RX \ - { AVR32_USART0_RXD_0_0_PIN, AVR32_USART0_RXD_0_0_FUNCTION } - -/* Clocks */ -#define USE_PLL -#define OSC 1 -#define PLL_MUL 10 - -/* Wifi SPB104/SPB105 */ -#if defined(EXT_BOARD) - #define WL_SPI AVR32_SPI0 - #define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI0_TX - #define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI0_RX - #if EXT_BOARD == SPB105 - #define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */ - #define WL_SHUTDOWN_PIN AVR32_PIN_PB31 /* Pin 8 on RF-head -> Pin 4 on wifi */ - #define WL_IRQ_PIN AVR32_PIN_PB30 /* Pin 6 on RF-head -> Pin 3 on wifi */ - #define WL_IRQ AVR32_GPIO_IRQ_7 - #define WL_SPI_CS 2 - #elif EXT_BOARD == SPB104 - #define WL_SPI_CLOCK_DIVIDER 3 /* due to adapter */ - #define WL_SPI_CS 1 - #endif - #define WL_SPI_NPCS0 { AVR32_SPI0_NPCS_0_0_PIN, AVR32_SPI0_NPCS_0_0_FUNCTION } - #if WL_SPI_CS == 1 - #define WL_SPI_NPCS { AVR32_SPI0_NPCS_1_0_PIN, AVR32_SPI0_NPCS_1_0_FUNCTION } - #elif WL_SPI_CS == 2 - #define WL_SPI_NPCS { AVR32_SPI0_NPCS_2_0_PIN, AVR32_SPI0_NPCS_2_0_FUNCTION } - #endif - #define WL_SPI_MISO { AVR32_SPI0_MISO_0_0_PIN, AVR32_SPI0_MISO_0_0_FUNCTION } - #define WL_SPI_MOSI { AVR32_SPI0_MOSI_0_0_PIN, AVR32_SPI0_MOSI_0_0_FUNCTION } - #define WL_SPI_SCK { AVR32_SPI0_SCK_0_0_PIN, AVR32_SPI0_SCK_0_0_FUNCTION } -#endif /* EXT_BOARD */ - -/* - * - * ARDUINO - * --------------------------------------------------------------------------- - * - */ -#elif BOARD == ARDUINO /* ARDUINO */ - - -/* USART0 physical assignment */ -#define BOARD_RS232_1 AVR32_USART1 -#define BOARD_RS232_1_TX \ - { AVR32_USART1_TXD_0_0_PIN, AVR32_USART1_TXD_0_0_FUNCTION } -#define BOARD_RS232_1_RX \ - { AVR32_USART1_RXD_0_0_PIN, AVR32_USART1_RXD_0_0_FUNCTION } - -/* Clocks */ -#define USE_PLL -#define OSC 0 -#define PLL_MUL 8 - -#define WL_SPI AVR32_SPI1 -#define WL_PDCA_PID_TX AVR32_PDCA_PID_SPI1_TX -#define WL_PDCA_PID_RX AVR32_PDCA_PID_SPI1_RX - -#define WL_SHUTDOWN_PIN AVR32_PIN_PA09 -#define WL_IRQ_PIN AVR32_PIN_PA03 -/* -* WL_IRQ_# = (WL_IRQ_PIN / 32) * 4 + (WL_IRQ_PIN / 8) % 4 - * 3 => 0 * 4 + 0 = 0 -*/ -#define WL_IRQ AVR32_GPIO_IRQ_0 -#define WL_SPI_CS 0 -#define WL_RESET_PIN AVR32_PIN_PA07 -#define WL_EXTERNAL_RESET 1 - - -#define WL_SPI_NPCS { AVR32_SPI1_NPCS_0_0_PIN, AVR32_SPI1_NPCS_0_0_FUNCTION } -#define WL_SPI_MISO { AVR32_SPI1_MISO_0_0_PIN, AVR32_SPI1_MISO_0_0_FUNCTION } -#define WL_SPI_MOSI { AVR32_SPI1_MOSI_0_0_PIN, AVR32_SPI1_MOSI_0_0_FUNCTION } -#define WL_SPI_SCK { AVR32_SPI1_SCK_0_0_PIN, AVR32_SPI1_SCK_0_0_FUNCTION } - -#endif /* EVKxxxx */ - - - - - - - - - -#if OSC == 0 -# define FOSC FOSC0 /* 12 MHz */ -#else -# define FOSC FOSC1 /* 11.2896 MHz */ -#endif - -#ifdef USE_PLL -# define FMCK_HZ ((FOSC * (PLL_MUL + 1)) / 2) -#else -# define FMCK_HZ FOSC -#endif - -#define FCPU_HZ FMCK_HZ -#define FHSB_HZ FCPU_HZ -#define FPBB_HZ FMCK_HZ -#define FPBA_HZ FMCK_HZ - - -#ifndef CONFIG_CONSOLE_PORT -#define CONFIG_CONSOLE_PORT BOARD_RS232_1 -#endif - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/cmd_wl.c b/libraries/WiFi/extras/wifiHD/src/cmd_wl.c deleted file mode 100644 index a210dec375f..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/cmd_wl.c +++ /dev/null @@ -1,731 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include "lwip/netif.h" -#include "lwip/dns.h" -#include "debug.h" -#include "ard_spi.h" -#include "ard_tcp.h" -#include "ard_utils.h" - -extern void showTTCPstatus(); - -#define _DNS_CMD_ - -/** - * - */ -cmd_state_t -cmd_scan(int argc, char* argv[], void* ctx) -{ - /* Note that the scan results presented will - * be from the last scan, not this one. - */ - wl_scan(); - print_network_list(); - return CMD_DONE; -} - -cmd_state_t -cmd_debug_toggle(int argc, char* argv[], void* ctx) -{ - extern uint8_t tr_data_trace; - if ( argc != 2 ) { - printk("usage: dt <1|0>\n"); - return CMD_DONE; - } - if ( '0' == argv[1][0] ) { - tr_data_trace = 0; - } - if ( '1' == argv[1][0] ) { - tr_data_trace = 1; - } - return CMD_DONE; -} - -/** - * - */ -cmd_state_t -cmd_connect(int argc, char* argv[], void* ctx) -{ - struct wl_ssid_t ssid; - char desired_ssid[WL_SSID_MAX_LENGTH]; - int len = 0; - - if (argc < 2) { - printk("usage: connect \n"); - return CMD_DONE; - } - - len = join_argv(desired_ssid, sizeof desired_ssid, argc - 1, argv + 1); - if (0 == len) { - return CMD_DONE; - } - - memcpy(ssid.ssid, desired_ssid, len); - ssid.len = len; - /* Start connection manager */ - wl_cm_set_network(&ssid, NULL); - wl_cm_start(); - return CMD_DONE; -} - -#ifdef WFE_6_12 -cmd_state_t -cmd_ibss(int argc, char* argv[], void* ctx) -{ - struct wl_ssid_t ssid; - char desired_ssid[WL_SSID_MAX_LENGTH]; - uint8_t channel; - enum wl_auth_mode amode; - int len = 0; - wl_err_t ret; - - if ( 2 == argc && ! strncmp(argv[1], "none", 4) ) { - printk("Disconnecting\n"); - wl_disconnect(); - wl_cm_stop(); - return CMD_DONE; - } - if (argc < 4) { - printk("usage: ibss \n"); - printk(" ibss none\n"); - return CMD_DONE; - } - - channel = atoi(argv[argc - 2]); - if ( *argv[argc - 1] == '0' ) { - amode = AUTH_MODE_OPEN_SYSTEM; - } else { - amode = AUTH_MODE_SHARED_KEY; - } - len = join_argv(desired_ssid, sizeof desired_ssid, argc - 3, argv + 1); - if (0 == len) { - return CMD_DONE; - } - if ( channel > 14 ) { - printk("Invalid channel %d\n", (int)channel); - return CMD_DONE; - } - printk("%s : Start with ssid \"%s\", channel %d\n", __func__, - desired_ssid, channel); - memcpy(ssid.ssid, desired_ssid, len); - ssid.len = len; - /* Stop the connection manager */ - wl_cm_stop(); - - ret = wl_start_adhoc_net(ssid, channel, amode); - switch (ret) { - case WL_BUSY: - printk("Driver is busy. Already connected?\n"); - break; - case WL_RETRY: - printk("Driver is busy. Retry operation\n"); - break; - case WL_OOM: - printk("Out of memory\n"); - break; - case WL_INVALID_ARGS: - printk("Invalid argument\n"); - break; - case WL_SUCCESS: - break; - default: - printk("Unknown error %d\n", ret); - break; - } - return CMD_DONE; -} -#endif -/** - * - */ -cmd_state_t -cmd_set_ip(int argc, char* argv[], void* ctx) -{ - struct ctx_server *hs = ctx; - struct net_cfg *ncfg = &(hs->net_cfg); - struct ip_addr lwip_addr; - struct netif *nif = ncfg->netif; - - if (argc == 2 && - (strncmp(argv[1], "none", 4) == 0)) { - ncfg->dhcp_enabled = DYNAMIC_IP_CONFIG; - - return CMD_DONE; - } - else if (argc != 4 ) { - printk("usage: ipconfig \n"); - printk(" or : ipconfig none (to enable DHCP)\n"); - return CMD_DONE; - } - - /* IP address */ - lwip_addr = str2ip(argv[1]); - INFO_SPI("nif:%p lwip_addr=0x%x\n", nif, lwip_addr.addr); - netif_set_ipaddr(nif, &lwip_addr); - /* Netmask */ - lwip_addr = str2ip(argv[2]); - netif_set_netmask(nif, &lwip_addr); - /* Default Gateway address */ - lwip_addr = str2ip(argv[3]); - netif_set_gw(nif, &lwip_addr); - /* Disable DHCP */ - ncfg->dhcp_enabled = STATIC_IP_CONFIG; - - return CMD_DONE; -} - -#ifdef WITH_WPA - -/** - * - */ -cmd_state_t -cmd_delpass(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: dpass \n"; - struct wl_network_t net; - char desired_ssid[WL_SSID_MAX_LENGTH]; - int len = 0; - - if (argc != 2) { - printk(usage); - return CMD_DONE; - } - - memset(&net, 0, sizeof net); - memset(net.bssid.octet, 0xFF, sizeof net.bssid.octet); - - len = join_argv(desired_ssid, sizeof desired_ssid, argc - 1, argv + 1); - if (0 == len) { - return CMD_DONE; - } - memcpy(net.ssid.ssid, desired_ssid, len); - net.ssid.len = len; - net.enc_type = ENC_TYPE_AUTO; - if (wl_clear_passphrase(&net) != WL_SUCCESS) { - printk("%s : Failed to delete passphrase\n", __func__); - } - - return CMD_DONE; -} - - -/** - * - */ -cmd_state_t -cmd_setpass(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: wpass \n"; - struct wl_network_t net; - char desired_ssid[WL_SSID_MAX_LENGTH]; - int len = 0; - - if (argc < 3) { - printk(usage); - return CMD_DONE; - } - /* Not really kosher, an ssid may legally contain 0-bytes but - * the console interface does not deal with that. - */ - memset(&net, 0, sizeof net); - memset(net.bssid.octet, 0xFF, sizeof net.bssid.octet); - - len = join_argv(desired_ssid, sizeof desired_ssid, argc - 2, argv + 1); - if (0 == len) { - return CMD_DONE; - } - - memcpy(net.ssid.ssid, desired_ssid, len); - net.ssid.len = len; - net.enc_type = ENC_TYPE_AUTO; - if (wl_set_passphrase(&net, - argv[argc - 1], - strlen(argv[argc - 1]), - ENC_TYPE_AUTO, - AUTH_MODE_AUTO) - != WL_SUCCESS) { - printk("%s : Failed to add passphrase\n", __func__); - } - - return CMD_DONE; -} -#endif - -#ifdef _DNS_CMD_ -void foundHost(const char *name, struct ip_addr *ipaddr, void *callback_arg) -{ - printk("Found Host: name=%s ip=0x%x\n", name, ipaddr->addr); -} - -/** - * - */ -cmd_state_t -cmd_gethostbyname(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: getHost \n"; - char hostname[DNS_MAX_NAME_LENGTH]; - struct ip_addr _addr; - int len = 0; - - if (argc < 2) { - printk(usage); - return CMD_DONE; - } - - len = join_argv(hostname, sizeof hostname, argc - 1, argv + 1); - if (0 == len) { - return CMD_DONE; - } - err_t err = dns_gethostbyname(hostname, &_addr, foundHost, NULL); - if (err == ERR_OK) - { - printk("Found Host: name=%s ip=0x%x\n", hostname, _addr.addr); - } - - return CMD_DONE; -} - -/** - * - */ -cmd_state_t -cmd_setDnsServer(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: setdns [1-2] aaa.bbb.ccc.ddd\n"; - struct ip_addr dnsIp; - int dnsIdx = 0; - - if (argc < 3) { - printk(usage); - return CMD_DONE; - } - - /* DNS IDX */ - dnsIdx = atoi(argv[1])-1; - /* IP address */ - dnsIp = str2ip(argv[2]); - - printk("Set DNS server %d to %s\n", dnsIdx, ip2str(dnsIp)); - dns_setserver(dnsIdx, &dnsIp); - struct ip_addr addr1 = dns_getserver(0); - struct ip_addr addr2 = dns_getserver(1); - - printk("==> DNS1: %s\n", ip2str(addr1), addr1); - printk("==> DNS2: %s\n", ip2str(addr2), addr2); - - return CMD_DONE; -} - -/** - * - */ -cmd_state_t -cmd_startSrv(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: startSrv \n"; - - int port = 0; - int sock = 0; - int protMode = 0; - - if (argc < 4) { - printk(usage); - return CMD_DONE; - } - - /* TCP port */ - port = atoi(argv[1]); - /* socket index */ - sock = atoi(argv[2]); - /* Protocol Mode */ - protMode = atoi(argv[3]); - - printk("Start %s server on port %d sock %d\n", ProtMode2Str(protMode), port, sock); - if (start_server_tcp(port, sock, protMode) == -1) - { - WARN("Start %s server on port %d sock %d FAILED\n", ProtMode2Str(protMode), port, sock); - } - return CMD_DONE; -} - -/** - * - */ -cmd_state_t -cmd_startCli(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: startCli \n"; - struct ip_addr addr = {0}; - int port = 0; - int sock = 0; - int protMode = 0; - - if (argc < 5) { - printk(usage); - return CMD_DONE; - } - - /* IP address */ - addr = str2ip(argv[1]); - /* TCP port */ - port = atoi(argv[2]); - /* socket index */ - sock = atoi(argv[3]); - /* Protocol Mode */ - protMode = atoi(argv[4]); - - printk("Start client on addr 0x%x, port %d sock %d mode %d\n", addr, port, sock, protMode); - if (start_client_tcp(addr.addr, port, sock, protMode) == -1) - { - WARN("Start client on port %d sock %d prot %d mode %d FAILED\n", port, sock, protMode); - } - return CMD_DONE; -} - -#endif - - -/** - * - */ -cmd_state_t -cmd_status(int argc, char* argv[], void* ctx) -{ - struct net_cfg *ncfg = ctx; - struct wl_network_t* net; - uint8_t mac[WL_MAC_ADDR_LENGTH]; - - printk("wl_api version " WL_API_RELEASE_NAME "\n"); - /* print mac address */ - if (wl_get_mac_addr(mac) != WL_SUCCESS) { - printk("failed to get mac address\n"); - }else{ - printk("hw addr: %s\n", mac2str(mac)); - } - - /* print network info */ - net = wl_get_current_network(); - printk("link status: "); - if (!net) { - printk("down\n"); - - }else{ - print_network(net); - } - - /* print ip address */ - if (netif_is_up(netif_default)) - { - printk("ip addr: %s - ", ip2str(netif_default->ip_addr)); - printk("netmask: %s - ", ip2str(netif_default->netmask)); - printk("gateway: %s\n", ip2str(netif_default->gw)); - } - else - printk("ip interface is down\n"); - printk("dhcp : "); - if (ncfg->dhcp_enabled == DYNAMIC_IP_CONFIG) { - printk("enabled\n"); - } - else { - printk("disabled\n"); - } - struct ip_addr addr1 = dns_getserver(0); - struct ip_addr addr2 = dns_getserver(1); - - printk("DNS: %s - ", ip2str(addr1)); - printk("%s\n", ip2str(addr2)); - - showTTCPstatus(); - return CMD_DONE; -} - -#ifdef ADD_CMDS -/** - * - */ -cmd_state_t -cmd_power(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: powersave \n"; - - if (argc < 2) { - printk(usage); - return CMD_DONE; - } - - if (!strcmp(argv[1], "on")) { - if (wl_enable_ps() != WL_SUCCESS) { - printk("could not enable power save\n"); - return CMD_DONE; - } - return CMD_DONE; - } - else if(!strcmp(argv[1], "off")) { - if (wl_disable_ps() != WL_SUCCESS) { - printk("could not disable power save\n"); - return CMD_DONE; - } - return CMD_DONE; - } - - printk(usage); - return CMD_DONE; -} -#endif - -#ifdef ADD_CMDS -/** - * - */ -cmd_state_t -cmd_psconf(int argc, char* argv[], void* ctx) -{ - const char *usage = - "usage: psconf (0/1 default 0)\n" \ - " ([ms] default 10)\n" \ - " ([ms] default 5000)\n"\ - " (0/1 default 1)\n"\ - " ([beacons] default 20)\n"; - - uint8_t use_ps_poll; - uint32_t traffic_timeout; - uint32_t ps_delay; - uint8_t rx_all_dtim; - uint16_t listen_interval; - - if (argc < 6) { - printk(usage); - return CMD_DONE; - } - - use_ps_poll = atoi(argv[1]); - traffic_timeout = atoi(argv[2]); - ps_delay = atoi(argv[3]); - rx_all_dtim = atoi(argv[4]); - listen_interval = atoi(argv[5]); - - if (use_ps_poll > 1) { - printk(usage); - return CMD_DONE; - } - - if (rx_all_dtim > 1) { - printk(usage); - return CMD_DONE; - } - - if (wl_conf_ps(use_ps_poll, traffic_timeout, ps_delay, - rx_all_dtim, listen_interval) != WL_SUCCESS) - printk("configuration failed\n"); - - return CMD_DONE; -} -#endif - -/** - * - */ -cmd_state_t -cmd_setkey(int argc, char* argv[], void* ctx) -{ - int idx, len; - char key[13]; - struct wl_mac_addr_t bssid; - const char *usage = "usage: setkey \n\t "\ - "or: setkey none\n"; - - memset(&bssid.octet, 0xff, sizeof bssid.octet); - if (argc == 2 && strcmp(argv[1], "none") == 0) { - printk("Deleting WEP keys\n"); - wl_delete_wep_key(0, &bssid); - wl_delete_wep_key(1, &bssid); - wl_delete_wep_key(2, &bssid); - wl_delete_wep_key(3, &bssid); - return CMD_DONE; - } - if (argc < 3) { - printk(usage); - return CMD_DONE; - } - idx = atoi(argv[1]); - len = strlen(argv[2]); - /* Pass phrase? */ - if ( 5 == len || 13 == len ) { - strncpy(key, argv[2], len); - } - /* Otherwise it's a hex string */ - else { - len = ascii_to_key(key, argv[2]); - if (0 == len || idx > 3 || idx < 0 || (idx == 0 && *argv[1] != '0')) { - printk(usage); - return CMD_DONE; - } - if (len != 5 && len != 13) { - printk(" WEP key must be 10 (WEP-40) or 26 (WEP-104) digits\n"); - return CMD_DONE; - } - } - wl_add_wep_key(idx, len, key, &bssid); - wl_set_default_wep_key(idx); - - return CMD_DONE; -} - -cmd_state_t -cmd_debug(int argc, char* argv[], void* ctx) -{ - int level; - const char *usage = "usage: debug
    \n\t"\ - "section: init, cm, spi, tcp , util, warn\n\t" - "level : 0 (off), 1 (on), 2 (verbose)\n\t" - "or: debug print/on/off\n"; - - if (argc == 2 && strcmp(argv[1], "off") == 0) { - printk("Debug OFF\n"); - INIT_DEBUG_VARIABLES() - return CMD_DONE; - }else if (argc == 2 && strcmp(argv[1], "print") == 0) { - PRINT_DEBUG_VARIABLES() - return CMD_DONE; - }else if (argc == 2 && strcmp(argv[1], "on") == 0) { - printk("Debug ON\n"); - TURNON_DEBUG_VARIABLES(); - return CMD_DONE; - } - if (argc < 3) { - printk(usage); - return CMD_DONE; - } - level = atoi(argv[2]); - if (argc == 3 && strcmp(argv[1], "init") == 0) { - CHECK_DEBUG_LEVEL(level, INFO_INIT_FLAG); - }else if (argc == 3 && strcmp(argv[1], "spi") == 0) { - CHECK_DEBUG_LEVEL(level, INFO_SPI_FLAG); - }else if (argc == 3 && strcmp(argv[1], "tcp") == 0) { - CHECK_DEBUG_LEVEL(level, INFO_TCP_FLAG); - }else if (argc == 3 && strcmp(argv[1], "cm") == 0) { - CHECK_DEBUG_LEVEL(level, INFO_CM_FLAG); - }else if (argc == 3 && strcmp(argv[1], "util") == 0) { - CHECK_DEBUG_LEVEL(level, INFO_UTIL_FLAG); - }else if (argc == 3 && strcmp(argv[1], "warn") == 0) { - CHECK_DEBUG_LEVEL(level, INFO_WARN_FLAG); - } - return CMD_DONE; -} - -extern void dumpPbuf(uint8_t sock); - -/** - * - */ -cmd_state_t -cmd_dumpBuf(int argc, char* argv[], void* ctx) -{ - const char *usage = "usage: dumpPbuf [sock]\n\t"\ - "sock: socket Number\n"; - - if (argc == 2 && strcmp(argv[1], "all") == 0) { - printk("Dump All Buffers\n"); - int i = 0; - for (; i= 2) { - - uint8_t sock = atoi(argv[1]); - printk("Socket: %d\n", sock); - - if (argc >= 3) { - uint8_t patternType = atoi(argv[2]); - printk("PatternType: %d\n", patternType); - if (patternType == 1) - { - insertBuf(sock, (uint8_t*)pattern2[0], strlen(pattern2[0])); - insertBuf(sock, (uint8_t*)pattern2[1], strlen(pattern2[1])); - insertBuf(sock, (uint8_t*)pattern2[2], strlen(pattern2[2])); - } - if (patternType == 2) - { - mergeBuf(sock, NULL, NULL); - } - }else{ - if (sock < MAX_SOCK_NUM) - { - sendUdpData(getTTCP(sock, TTCP_MODE_TRANSMIT), (uint8_t*)pattern, sizeof(pattern)/sizeof(char)); - } - } - - } - return CMD_DONE; -} diff --git a/libraries/WiFi/extras/wifiHD/src/cmd_wl.h b/libraries/WiFi/extras/wifiHD/src/cmd_wl.h deleted file mode 100644 index a1d1a0f379f..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/cmd_wl.h +++ /dev/null @@ -1,66 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef CMD_CM_H -#define CMD_CM_H - -#include -#include "netif/wlif.h" - -/*! A pointer to a struct of type "struct net_cfg" should be passed as - * the ctx pointer in the callbacks below. The struct must have a - * single instance per netif. - */ -#define _DNS_CMD_ - -cmd_state_t cmd_scan(int argc, char* argv[], void* ctx); -cmd_state_t cmd_connect(int argc, char* argv[], void* ctx); -cmd_state_t cmd_set_ip(int argc, char* argv[], void* ctx); -cmd_state_t cmd_setkey(int argc, char* argv[], void* ctx); -cmd_state_t cmd_status(int argc, char* argv[], void* ctx); -cmd_state_t cmd_power(int argc, char* argv[], void* ctx); -cmd_state_t cmd_psconf(int argc, char* argv[], void* ctx); -cmd_state_t cmd_setpass(int argc, char* argv[], void* ctx); -cmd_state_t cmd_delpass(int argc, char* argv[], void* ctx); -cmd_state_t cmd_debug(int argc, char* argv[], void* ctx); -cmd_state_t cmd_debug_toggle(int argc, char* argv[], void* ctx); -cmd_state_t cmd_statSpi(int argc, char* argv[], void* ctx); -cmd_state_t cmd_resetStatSpi(int argc, char* argv[], void* ctx); -cmd_state_t cmd_gethostbyname(int argc, char* argv[], void* ctx); -cmd_state_t cmd_setDnsServer(int argc, char* argv[], void* ctx); -cmd_state_t cmd_startSrv(int argc, char* argv[], void* ctx); -cmd_state_t cmd_startCli(int argc, char* argv[], void* ctx); -cmd_state_t cmd_dumpBuf(int argc, char* argv[], void* ctx); -cmd_state_t cmd_sendUdpData(int argc, char* argv[], void* ctx); -#ifdef WFE_6_12 -cmd_state_t cmd_ibss(int argc, char* argv[], void* ctx); -#endif - - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/console.c b/libraries/WiFi/extras/wifiHD/src/console.c deleted file mode 100644 index e54943f09e5..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/console.c +++ /dev/null @@ -1,212 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#define MAX_CMD_CONSOLE_NUM 15 -struct { - cmd_cb_t cb; - const char* str; - void* ctx; -} cmd_list[MAX_CMD_CONSOLE_NUM] = { { 0 } }; - -#ifndef CMD_MAX_LEN -#define CMD_MAX_LEN 80 -#endif -extern int board_putchar(char c); -int io_getc(char *c) -{ - int ci; - int status; - status = usart_read_char(&CONFIG_CONSOLE_PORT, &ci); - if (status == USART_RX_EMPTY) - return 1; - - if (status == USART_RX_ERROR) { - CONFIG_CONSOLE_PORT.cr = AVR32_USART_CR_RSTSTA_MASK; - return 1; - } - - if (ci == '\r') { - board_putchar('\n'); - /* Echo char. */ - } else if (ci == '\b') { - board_putchar(ci); - board_putchar(' '); - board_putchar(ci); - } else - board_putchar(ci); - - - *c = ci; - return 0; -} - -static uint8_t is_initialized = 0; - -char* console_gets() -{ - static char buf[CMD_MAX_LEN]; - static int pos = 0; - char c; - - for (;;) { - if (io_getc(&c)) - return NULL; - - if (c == '\r' || c == '\n') { - buf[pos] = 0; - pos = 0; - return buf; - } - if (c == '\b') { - pos -= 1; - if (pos < 0) pos = 0; - buf[pos] = 0; - } - else - buf[pos++] = c; - if (pos == sizeof(buf)) - pos = 0; - } - return NULL; -} - -int console_add_cmd(const char* str, cmd_cb_t cb, void* ctx) -{ - uint32_t i; - for (i = 0; i < ARRAY_SIZE(cmd_list); i++) - if (!cmd_list[i].cb) - break; - - if (i == ARRAY_SIZE(cmd_list)) - return -1; - - cmd_list[i].str = str; - cmd_list[i].cb = cb; - cmd_list[i].ctx = ctx; - return 0; -} - -void console_init(void) -{ - printk("\n$ "); - is_initialized = 1; -} - -void console_init_silent(void) { - is_initialized = 1; -} - -int console_schedule_cmd(char *cmd, int interactive) { -#define MAX_ARGS 16 - static int argc, i; - static char* argv[MAX_ARGS]; - static char *buf; - static enum { INPUT, RUN } state = INPUT; - - switch (state) { - case INPUT: { - char* token; - if (NULL == cmd) { - return 0; - } - buf = strdup(cmd); - if (!buf) - return 0; - if (!strlen(buf)) { - interactive ? printk("$ ") : 0; - free(buf); - return 0; - } -#ifdef WIFI_DEBUG_ON - printk("%s : Scheduling command \"%s\"\n", - __func__, - buf); -#endif - for (i = 0; i < ARRAY_SIZE(cmd_list); i++) - if(cmd_list[i].str && !strncmp(cmd_list[i].str, buf, min(strlen(cmd_list[i].str), strlen(buf)))) - break; - - if (ARRAY_SIZE(cmd_list) == 0) { - printk("No commands available. Is the WiFi card responding?\n"); - } - if (i == ARRAY_SIZE(cmd_list)) { - if (interactive) { - printk("available commands:\n"); - for (i = 0; i < ARRAY_SIZE(cmd_list); i++) - if (cmd_list[i].cb) - printk(" %s\n", cmd_list[i].str); - printk("$ "); - } - free(buf); - return 0; - } - - for (token = strtok(buf, " "); token != NULL; - token = strtok(NULL, " ")) { - argv[argc] = token; - argc++; - if (argc == MAX_ARGS) - break; - } - - state = RUN; - } /* fall through */ - - case RUN: { - cmd_state_t s = cmd_list[i].cb(argc, argv, cmd_list[i].ctx); - if (s == CMD_INPROGRESS) - return 1; - - interactive ? printk("$ ") : 0; - - argc = 0; - memset(argv, 0, sizeof argv); - free(buf); - state = INPUT; - } - } - - return 1; -} - - -void console_poll(void) -{ - char *buf; - buf = console_gets(); - console_schedule_cmd(buf, 1); -} diff --git a/libraries/WiFi/extras/wifiHD/src/console.h b/libraries/WiFi/extras/wifiHD/src/console.h deleted file mode 100644 index 79bfedb884b..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/console.h +++ /dev/null @@ -1,46 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef CONSOLE_H -#define CONSOLE_H - - -typedef enum { - CMD_DONE, - CMD_INPROGRESS -} cmd_state_t; - -typedef cmd_state_t (*cmd_cb_t)(int argc, char* argv[], void* ctx); - -void console_init(void); -void console_init_silent(void); -char* console_gets(void); -int console_add_cmd(const char* str, cmd_cb_t cb, void* ctx); -int console_schedule_cmd(char *cmd, int interactive); -void console_poll(void); - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/debug.h b/libraries/WiFi/extras/wifiHD/src/debug.h deleted file mode 100644 index 154b79984f1..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/debug.h +++ /dev/null @@ -1,191 +0,0 @@ -//*********************************************/ -// -// File: debug.h -// -// Author: Domenico La Fauci -// -//********************************************/ - - -#ifndef Debug_H -#define Debug_H - -#include -#include - -#define INFO_INIT_FLAG 1 -#define INFO_TCP_FLAG 2 -#define INFO_SPI_FLAG 4 -#define INFO_CM_FLAG 8 -#define INFO_UTIL_FLAG 16 - -#define INFO_D (1<<0xD) // Debug -#define INFO_E (1<<0xE) // Error -#define INFO_WARN_FLAG (1<<0xF) // Warning -#define DEFAULT_INFO_FLAG 0 //INFO_WARN_FLAG - -#ifdef _DEBUG_ -#define DEFINE_DEBUG_VARIABLES() \ -uint16_t enableDebug = DEFAULT_INFO_FLAG | INFO_WARN_FLAG; \ -uint16_t verboseDebug = 0; \ -uint16_t dumpDebug = 0; \ -uint16_t pollDebug = 0; -#else -#define DEFINE_DEBUG_VARIABLES() \ -uint16_t enableDebug = DEFAULT_INFO_FLAG; \ -uint16_t verboseDebug = 0; \ -uint16_t dumpDebug = 0; \ -uint16_t pollDebug = 0; -#endif - -#define INIT_DEBUG_VARIABLES() \ - enableDebug = DEFAULT_INFO_FLAG | INFO_WARN_FLAG; \ - verboseDebug = 0; \ - dumpDebug = 0; pollDebug = 0; - - -#define PRINT_DEBUG_VARIABLES() \ - printk("Debug enabled: 0x%x\n", enableDebug); \ - printk("Verbose enabled: 0x%x\n", verboseDebug); \ - printk("Dump enabled: 0x%x\n", dumpDebug); \ - printk("POoll enabled: 0x%x\n", pollDebug); - -#define TURNON_DEBUG_VARIABLES() \ - enableDebug = 0xff; - -extern uint16_t enableDebug; -extern uint16_t verboseDebug; -extern uint16_t dumpDebug; -extern uint16_t pollDebug; - -#define ENABLE_DEBUG_LEVEL 1 -#define VERBOSE_DEBUG_LEVEL 2 -#define DUMP_DEBUG_LEVEL 3 -#define POLL_DEBUG_LEVEL 4 - -#define CHECK_DEBUG(VAR, LEVEL, LEVEL_LIMIT, FLAG) \ - do{ \ - if (LEVEL >= LEVEL_LIMIT) VAR |= FLAG; \ - else VAR &= ~FLAG; \ - }while(0); - -#define CHECK_ENA_DEBUG(LEVEL, FLAG) \ - CHECK_DEBUG(enableDebug, LEVEL, ENABLE_DEBUG_LEVEL, FLAG) -#define CHECK_VERB_DEBUG(LEVEL, FLAG) \ - CHECK_DEBUG(verboseDebug, LEVEL, VERBOSE_DEBUG_LEVEL, FLAG) -#define CHECK_DUMP_DEBUG(LEVEL, FLAG) \ - CHECK_DEBUG(dumpDebug, LEVEL, DUMP_DEBUG_LEVEL, FLAG) -#define CHECK_POLL_DEBUG(LEVEL, FLAG) \ - CHECK_DEBUG(pollDebug, LEVEL, POLL_DEBUG_LEVEL, FLAG) - - -#define CHECK_DEBUG_LEVEL(LEVEL, INFO_FLAG) \ - CHECK_ENA_DEBUG(LEVEL, INFO_FLAG) \ - CHECK_VERB_DEBUG(LEVEL, INFO_FLAG) \ - CHECK_DUMP_DEBUG(LEVEL, INFO_FLAG) \ - CHECK_POLL_DEBUG(LEVEL, INFO_FLAG) - -#ifdef _INFO_DEBUG_ -#define PRINT_DEBUG(msg, args...) do { \ - printk("[%s] " msg , __func__ , ##args ); \ -} while (0) - -#define INFO_DEBUG(msg, args...) do { \ - printk("I-[%s] " msg , __func__ , ##args ); \ -} while (0) - -#define WARN_DEBUG(msg, args...) do { \ - printk("W-[%s] " msg , __func__ , ##args ); \ -} while (0) - -#else -do { }while(0); -#endif - -#define IF_DEBUG(X,Y) do { \ -if (enableDebug & INFO_##X##_FLAG) \ -Y; \ -} while (0) - -#define IF_DEBUG_VER(X,Y) do { \ -if (verboseDebug & INFO_##X##_FLAG) \ -Y; \ -} while (0) - -#define IF_DEBUG_DUMP(X,Y) do { \ -if (dumpDebug & INFO_##X##_FLAG) \ -Y; \ -} while (0) - -#define IF_DEBUG_POLL(X,Y) do { \ -if (pollDebug & INFO_##X##_FLAG) {\ -Y; \ -}} while (0) - - - -#define IF_WARN(Y) IF_DEBUG(WARN,Y) -#define IF_WARN_VER(Y) IF_DEBUG_VER(WARN,Y) -#define IF_TCP(Y) IF_DEBUG(TCP,Y) -#define IF_TCP_VER(Y) IF_DEBUG_VER(TCP,Y) -#define IF_TCP_POLL(Y) IF_DEBUG_POLL(TCP,Y) -#define IF_TCP_DUMP(Y) IF_DEBUG_DUMP(TCP,Y) -#define IF_SPI(Y) IF_DEBUG(SPI,Y) -#define IF_SPI_VER(Y) IF_DEBUG_VER(SPI,Y) -#define IF_SPI_DUMP(Y) IF_DEBUG_DUMP(SPI,Y) -#define IF_SPI_POLL(Y) IF_DEBUG_POLL(SPI,Y) -#define IF_UTIL(Y) IF_DEBUG(UTIL,Y) -#define IF_UTIL_VER(Y) IF_DEBUG_VER(UTIL,Y) - -#define WARN(msg, args...) IF_DEBUG(WARN,WARN_DEBUG(msg, ##args)) -#define WARN_VER(msg, args...) IF_DEBUG_VER(WARN,WARN_DEBUG(msg, ##args)) -#define WARN_POLL(msg, args...) IF_DEBUG_POLL(WARN,WARN_DEBUG(msg, ##args)) -#if 0 // disable to reduce the size of binary -#define INFO_INIT(msg, args...) IF_DEBUG(INIT,PRINT_DEBUG(msg, ##args)) -#define INFO_INIT_VER(msg, args...) IF_DEBUG_VER(INIT,PRINT_DEBUG(msg, ##args)) -#else -#define INFO_INIT(msg, args...) -#define INFO_INIT_VER(msg, args...) -#endif -#define INFO_TCP(msg, args...) IF_DEBUG(TCP,PRINT_DEBUG(msg, ##args)) -#define INFO_TCP_VER(msg, args...) IF_DEBUG_VER(TCP,PRINT_DEBUG(msg, ##args)) -#define INFO_TCP_DUMP(msg, args...) IF_DEBUG_DUMP(TCP,PRINT_DEBUG(msg, ##args)) -#define INFO_TCP_POLL(msg, args...) IF_DEBUG_POLL(TCP,PRINT_DEBUG(msg, ##args)) -#define INFO_SPI(msg, args...) IF_DEBUG(SPI,PRINT_DEBUG(msg, ##args)) -#define INFO_SPI_VER(msg, args...) IF_DEBUG_VER(SPI,PRINT_DEBUG(msg, ##args)) -#define INFO_SPI_DUMP(msg, args...) IF_DEBUG_DUMP(SPI,PRINT_DEBUG(msg, ##args)) -#define INFO_SPI_POLL(msg, args...) IF_DEBUG_POLL(SPI,PRINT_DEBUG(msg, ##args)) -#define INFO_UTIL(msg, args...) IF_DEBUG(UTIL,PRINT_DEBUG(msg, ##args)) -#define INFO_UTIL_VER(msg, args...) IF_DEBUG_VER(UTIL,PRINT_DEBUG(msg, ##args)) -#define CM_DPRINTF(msg, args...) IF_DEBUG(CM,PRINT_DEBUG(msg, ##args)) - -extern void dump(char* _buf, uint16_t _count); - -#define _DUMP(BUF, COUNT) do { \ - printk("[%s]: ", __func__); \ - dump((char*)BUF, COUNT); \ - } while (0) - -#ifdef _APP_DEBUG_ -#define DUMP(BUF, COUNT) _DUMP(BUF, COUNT) -#else -#define DUMP(BUF, COUNT) do {} while (0) -#endif -#endif - -#define DUMP_TCP(BUF, COUNT) IF_TCP_DUMP(_DUMP(BUF, COUNT)) -#define DUMP_SPI(BUF, COUNT) IF_SPI_DUMP(_DUMP(BUF, COUNT)) - -#define DUMP_SPI_CMD(BUF) do { \ - if (dumpDebug & INFO_SPI_FLAG) { \ - int i = 0; \ - for (; i < CMD_MAX_LEN; ++i) \ - { \ - printk("0x%x ", BUF[i]); \ - if (BUF[i] == END_CMD) \ - break; \ - } \ - printk("\n"); \ - } \ -}while(0); - diff --git a/libraries/WiFi/extras/wifiHD/src/fw_download.h b/libraries/WiFi/extras/wifiHD/src/fw_download.h deleted file mode 100644 index e36214f768c..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/fw_download.h +++ /dev/null @@ -1,38 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef FW_DOWNLOAD_H -#define FW_DOWNLOAD_H - -#include -#include - -int fw_download_init(void); -size_t fw_read_cb(void *ctx, const uint8_t** buf, size_t offset, size_t len); -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/fw_download_extflash.c b/libraries/WiFi/extras/wifiHD/src/fw_download_extflash.c deleted file mode 100644 index d679271f208..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/fw_download_extflash.c +++ /dev/null @@ -1,82 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include -#include -#include -#include -#include - -int fw_download_init(void) -{ - nvram_init(); - return 0; -} - -#define BUF_SIZE 512 - - -size_t fw_read_cb(void* ctx, - const uint8_t** buf, - size_t offset, - size_t len) -{ - static uint8_t* fw_buf = NULL; - size_t rlen; - /* when firmware download is completed, this function will be - * invoked one additional time with buf set to NULL. we can - * free the firmware buffer at this time since it's no longer - * needed. - */ - if (NULL == buf) { - if (fw_buf) { - free(fw_buf); - fw_buf = NULL; - } - return 0; - } - - /* first call? then initialize flash and allocate a buffer to hold - * firmware data. - */ - if (fw_buf == NULL) { - fw_buf = malloc(BUF_SIZE); - - if (fw_buf == NULL) { - printk("could not allocate firmware buffer\n"); - return 0; - } - } - /* read at most a full buffer */ - rlen = len > BUF_SIZE ? BUF_SIZE : len; - - /* read data and update output parameters */ - nvram_read(offset, fw_buf, rlen); - *buf = fw_buf; - - return rlen; -} diff --git a/libraries/WiFi/extras/wifiHD/src/license.txt b/libraries/WiFi/extras/wifiHD/src/license.txt deleted file mode 100644 index e57439f3731..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/license.txt +++ /dev/null @@ -1,42 +0,0 @@ - Copyright (C) 2009, H&D Wireless AB All rights reserved. - - The license to use this software in whole and in part and to - redistribute it in any form follows with the WiFi HW module from H&D - Wireless and is granted under the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of H&D Wireless AB may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - 4. The software may only be used together with hardware from H&D - Wireless all other use is prohibited. - - 5. The license to use and redistribute the software is granted - together with the purchase of a hardware platform on a one to one - basis - - 6. The binary code may not be reversed engineered or by other means - copied to circumvent this license. - - THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT - SHALL HD WIRELESS AB BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - OF THE POSSIBILITY OF SUCH DAMAGE. - - For more information regarding this software license Contact H&D - Wireless AB (support@hd-wireless.se). diff --git a/libraries/WiFi/extras/wifiHD/src/lwip_setup.c b/libraries/WiFi/extras/wifiHD/src/lwip_setup.c deleted file mode 100644 index bfa8c090ac1..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/lwip_setup.c +++ /dev/null @@ -1,145 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/*! - * \file lwIP setup code - * - * \brief Collects the lwIP setup code that an application has to - * execute in a standalone environment. - * - * \author H&D Wireless AB \n - * - */ - -#include -#include -#include -#include -#include -#include -#include - -#include "lwip_setup.h" -#include "lwip/dns.h" - - -/** - * - */ -static void -tcp_tmr_cb(void *ctx) -{ - tcp_tmr(); -} - -/** - * - */ -static void -ip_tmr_cb(void *ctx) -{ - ip_reass_tmr(); -} - -/** - * - */ -static void -dns_tmr_cb(void *ctx) -{ - dns_tmr(); -} - -/** - * - */ -static void -etharp_tmr_cb(void *ctx) -{ - etharp_tmr(); -} - - -/** - * - */ -static void -dhcp_fine_tmr_cb(void *ctx) -{ - dhcp_fine_tmr(); -} - -/** - * - */ -static void -dhcp_coarse_tmr_cb(void *ctx) -{ - dhcp_coarse_tmr(); -} - -int start_ip_stack(struct net_cfg *cfg, - struct ip_addr ipaddr, - struct ip_addr netmask, - struct ip_addr gw) { - - if (cfg->dhcp_enabled) { - IP4_ADDR(&gw, 0,0,0,0); - IP4_ADDR(&ipaddr, 0,0,0,0); - IP4_ADDR(&netmask, 0,0,0,0); - } - - /* add wl to lwip interface list and set as default */ - cfg->netif = netif_add(cfg->netif, - &ipaddr, - &netmask, - &gw, - NULL, - wlif_init, /* init */ - ethernet_input /* handles ARP and IP packets */); - - if (cfg->netif == NULL) - return -1; - netif_set_default(cfg->netif); - - /* register lwip timer callbacks for tcp, arp and dhcp protocols */ - timer_sched_timeout_cb(5000, TIMEOUT_PERIODIC, - etharp_tmr_cb, NULL); - timer_sched_timeout_cb(TCP_TMR_INTERVAL, TIMEOUT_PERIODIC, - tcp_tmr_cb, NULL); - timer_sched_timeout_cb(DHCP_FINE_TIMER_MSECS, TIMEOUT_PERIODIC, - dhcp_fine_tmr_cb, NULL); - timer_sched_timeout_cb(DHCP_COARSE_TIMER_MSECS, TIMEOUT_PERIODIC, - dhcp_coarse_tmr_cb, NULL); - timer_sched_timeout_cb(IP_TMR_INTERVAL, TIMEOUT_PERIODIC, - ip_tmr_cb, NULL); - timer_sched_timeout_cb(DNS_TMR_INTERVAL, TIMEOUT_PERIODIC, - dns_tmr_cb, NULL); - - return 1; -} diff --git a/libraries/WiFi/extras/wifiHD/src/lwip_setup.h b/libraries/WiFi/extras/wifiHD/src/lwip_setup.h deleted file mode 100644 index 7edf2b579ba..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/lwip_setup.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef _LWIP_SETUP_H -#define _LWIP_SETUP_H - -#define INIT_IP_CONFIG 0xff -#define STATIC_IP_CONFIG 0 -#define DYNAMIC_IP_CONFIG 1 - -struct net_cfg { - struct netif *netif; /* lwip network interface */ - uint8_t dhcp_enabled; - uint8_t dhcp_running; -}; - -struct ctx_server { - struct net_cfg net_cfg; - uint8_t wl_init_complete; -}; - -/*! Start the IP stack. - * If cfg->netif must have been allocated and lwip_init() - * must have been called before this function is called - * (since the IP stack may have to be polled before this - * function can be called). - */ -int start_ip_stack(struct net_cfg *cfg, - struct ip_addr ipaddr, - struct ip_addr netmask, - struct ip_addr gw); - -#endif /* _LWIP_SETUP_H */ diff --git a/libraries/WiFi/extras/wifiHD/src/lwipopts.h b/libraries/WiFi/extras/wifiHD/src/lwipopts.h deleted file mode 100644 index 7b08b84899a..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/lwipopts.h +++ /dev/null @@ -1,450 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/** - * @file - * - * lwIP Options Configuration - */ - -/* - * Copyright (c) 2001-2004 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is part of the lwIP TCP/IP stack. - * - * Author: Adam Dunkels - * - */ -#ifndef __LWIPOPTS_H__ -#define __LWIPOPTS_H__ - -#include "wl_api.h" -#include - -#ifndef BOARD -#error "BOARD must be defined" -#endif - -/* - ----------------------------------------------- - ---------- Platform specific locking ---------- - ----------------------------------------------- -*/ - -/** - * NO_SYS==1: Provides VERY minimal functionality. Otherwise, - * use lwIP facilities. - */ -#define NO_SYS 1 - - -/* - ------------------------------------ - ---------- Memory options ---------- - ------------------------------------ -*/ -/** - * MEM_ALIGNMENT: should be set to the alignment of the CPU - * 4 byte alignment -> #define MEM_ALIGNMENT 4 - * 2 byte alignment -> #define MEM_ALIGNMENT 2 - */ -#define MEM_ALIGNMENT 4 - -/** - * MEM_SIZE: the size of the heap memory. If the application will send - * a lot of data that needs to be copied, this should be set high. - */ -#define MEM_SIZE 16000 - - -/* - ------------------------------------------------ - ---------- Internal Memory Pool Sizes ---------- - ------------------------------------------------ -*/ -/** - * MEMP_NUM_PBUF: the number of memp struct pbufs (used for PBUF_ROM and PBUF_REF). - * If the application sends a lot of data out of ROM (or other static memory), - * this should be set high. - */ -#if BOARD == EVK1101 /* Reduced RAM */ - #define MEMP_NUM_PBUF 4 -#else - #define MEMP_NUM_PBUF 30 -#endif -/** - * MEMP_NUM_RAW_PCB: Number of raw connection PCBs - * (requires the LWIP_RAW option) - */ -#define MEMP_NUM_RAW_PCB 4 - -/** - * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One - * per active UDP "connection". - * (requires the LWIP_UDP option) - */ -#define MEMP_NUM_UDP_PCB 4 - -/** - * MEMP_NUM_TCP_PCB: the number of simulatenously active TCP connections. - * (requires the LWIP_TCP option) - */ -#define MEMP_NUM_TCP_PCB 4 - -/** - * MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP connections. - * (requires the LWIP_TCP option) - */ -#define MEMP_NUM_TCP_PCB_LISTEN 2 - -/** - * MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP segments. - * (requires the LWIP_TCP option) - */ -#if BOARD == EVK1101 /* Reduced RAM */ - #define MEMP_NUM_TCP_SEG 2 -#else - #define MEMP_NUM_TCP_SEG 32 -#endif - -/** - * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing - * packets (pbufs) that are waiting for an ARP request (to resolve - * their destination address) to finish. - * (requires the ARP_QUEUEING option) - */ -#define MEMP_NUM_ARP_QUEUE 2 - -/** - * MEMP_NUM_SYS_TIMEOUT: the number of simulateously active timeouts. - * (requires NO_SYS==0) - */ -#define MEMP_NUM_SYS_TIMEOUT 0 - -/** - * MEMP_NUM_NETBUF: the number of struct netbufs. - * (only needed if you use the sequential API, like api_lib.c) - */ -#define MEMP_NUM_NETBUF 0 - -/** - * MEMP_NUM_NETCONN: the number of struct netconns. - * (only needed if you use the sequential API, like api_lib.c) - */ -#define MEMP_NUM_NETCONN 0 - -/** - * MEMP_NUM_TCPIP_MSG_API: the number of struct tcpip_msg, which are used - * for callback/timeout API communication. - * (only needed if you use tcpip.c) - */ -#define MEMP_NUM_TCPIP_MSG_API 0 - -/** - * MEMP_NUM_TCPIP_MSG_INPKT: the number of struct tcpip_msg, which are used - * for incoming packets. - * (only needed if you use tcpip.c) - */ -#define MEMP_NUM_TCPIP_MSG_INPKT 0 - -/** - * PBUF_POOL_SIZE: the number of buffers in the pbuf pool. - */ -#if BOARD == EVK1101 /* Reduced RAM */ - #define PBUF_POOL_SIZE 2 -#else - #define PBUF_POOL_SIZE 32 -#endif -/* - --------------------------------- - ---------- ARP options ---------- - --------------------------------- -*/ -/** - * LWIP_ARP==1: Enable ARP functionality. - */ -#define LWIP_ARP 1 - -/* - -------------------------------- - ---------- IP options ---------- - -------------------------------- -*/ -/** - * IP_FORWARD==1: Enables the ability to forward IP packets across network - * interfaces. If you are going to run lwIP on a device with only one network - * interface, define this to 0. - */ -#define IP_FORWARD 0 - -/** - * IP_OPTIONS: Defines the behavior for IP options. - * IP_OPTIONS==0_ALLOWED: All packets with IP options are dropped. - * IP_OPTIONS==1_ALLOWED: IP options are allowed (but not parsed). - */ -#define IP_OPTIONS_ALLOWED 1 - -/** - * IP_REASSEMBLY==1: Reassemble incoming fragmented IP packets. Note that - * this option does not affect outgoing packet sizes, which can be controlled - * via IP_FRAG. - */ -#define IP_REASSEMBLY 1 - -/** - * IP_FRAG==1: Fragment outgoing IP packets if their size exceeds MTU. Note - * that this option does not affect incoming packet sizes, which can be - * controlled via IP_REASSEMBLY. - */ -#define IP_FRAG 1 - -/** - * IP_REASS_MAXAGE: Maximum time (in multiples of IP_TMR_INTERVAL - so seconds, normally) - * a fragmented IP packet waits for all fragments to arrive. If not all fragments arrived - * in this time, the whole packet is discarded. - */ -#define IP_REASS_MAXAGE 3 - -/** - * IP_REASS_MAX_PBUFS: Total maximum amount of pbufs waiting to be reassembled. - * Since the received pbufs are enqueued, be sure to configure - * PBUF_POOL_SIZE > IP_REASS_MAX_PBUFS so that the stack is still able to receive - * packets even if the maximum amount of fragments is enqueued for reassembly! - */ -#if BOARD == EVK1101 /* Reduced RAM */ - #define IP_REASS_MAX_PBUFS PBUF_POOL_SIZE - #define MEMP_NUM_REASSDATA PBUF_POOL_SIZE-1 -#else - #define IP_REASS_MAX_PBUFS 10 -#endif - -/** - * IP_FRAG_USES_STATIC_BUF==1: Use a static MTU-sized buffer for IP - * fragmentation. Otherwise pbufs are allocated and reference the original - * packet data to be fragmented. - */ -#define IP_FRAG_USES_STATIC_BUF 0 - -/** - * IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers. - */ -#define IP_DEFAULT_TTL 255 - -/* - ---------------------------------- - ---------- ICMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_ICMP==1: Enable ICMP module inside the IP stack. - * Be careful, disable that make your product non-compliant to RFC1122 - */ -#define LWIP_ICMP 1 - -/** - * ICMP_TTL: Default value for Time-To-Live used by ICMP packets. - */ -#define ICMP_TTL (IP_DEFAULT_TTL) - -/* - --------------------------------- - ---------- RAW options ---------- - --------------------------------- -*/ -/** - * LWIP_RAW==1: Enable application layer to hook into the IP layer itself. - */ -#define LWIP_RAW 1 - -/* - ---------------------------------- - ---------- DHCP options ---------- - ---------------------------------- -*/ -/** - * LWIP_DHCP==1: Enable DHCP module. - */ -#define LWIP_DHCP 1 - -/* - ------------------------------------ - ---------- AUTOIP options ---------- - ------------------------------------ -*/ -/** - * LWIP_AUTOIP==1: Enable AUTOIP module. - */ -#define LWIP_AUTOIP 0 - -/* - ---------------------------------- - ---------- SNMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_SNMP==1: Turn on SNMP module. UDP must be available for SNMP - * transport. - */ -#define LWIP_SNMP 0 -#define SNMP_PRIVATE_MIB 0 - -/* - ---------------------------------- - ---------- IGMP options ---------- - ---------------------------------- -*/ -/** - * LWIP_IGMP==1: Turn on IGMP module. - */ -#define LWIP_IGMP 0 - -/* - ---------------------------------- - ---------- DNS options ----------- - ---------------------------------- -*/ -/** - * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS - * transport. - */ -#define LWIP_DNS 1 - -/* - --------------------------------- - ---------- UDP options ---------- - --------------------------------- -*/ -/** - * LWIP_UDP==1: Turn on UDP. - */ -#define LWIP_UDP 1 - -/** - * LWIP_UDPLITE==1: Turn on UDP-Lite. (Requires LWIP_UDP) - */ -#define LWIP_UDPLITE 0 - -/** - * UDP_TTL: Default Time-To-Live value. - */ -#define UDP_TTL (IP_DEFAULT_TTL) - -/* - --------------------------------- - ---------- TCP options ---------- - --------------------------------- -*/ -/** - * LWIP_TCP==1: Turn on TCP. - */ -#define LWIP_TCP 1 - -/* - ---------------------------------- - ---------- Pbuf options ---------- - ---------------------------------- -*/ -/** - * PBUF_LINK_HLEN: the number of bytes that should be allocated for a - * link level header. The default is 14, the standard value for - * Ethernet. - */ -#define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE) - -/* - ------------------------------------ - ---------- LOOPIF options ---------- - ------------------------------------ -*/ -/** - * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c - */ -#define LWIP_HAVE_LOOPIF 1 -#define LWIP_LOOPIF_MULTITHREADING 0 - -/* - ---------------------------------------------- - ---------- Sequential layer options ---------- - ---------------------------------------------- -*/ - -/** - * LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c) - */ -#define LWIP_NETCONN 0 - -/* - ------------------------------------ - ---------- Socket options ---------- - ------------------------------------ -*/ -/** - * LWIP_SOCKET==1: Enable Socket API (require to use sockets.c) - */ -#define LWIP_SOCKET 0 - -/* - ---------------------------------------- - ---------- Statistics options ---------- - ---------------------------------------- -*/ -/** - * LWIP_STATS==1: Enable statistics collection in lwip_stats. - */ -#define LWIP_STATS 1 -#define LINK_STATS 1 - -/* Misc */ -#define LWIP_NETIF_LINK_CALLBACK 1 -#define LWIP_NETIF_STATUS_CALLBACK 1 -#define LWIP_TIMEVAL_PRIVATE 0 - -#undef DHCP_DOES_ARP_CHECK - -#if 0 -#define LWIP_DEBUG 1 -//#define NETIF_DEBUG LWIP_DBG_ON -//#define DHCP_DEBUG LWIP_DBG_ON -//#define ICMP_DEBUG LWIP_DBG_ON -//#define TCP_DEBUG LWIP_DBG_ON -//#define TCP_RTO_DEBUG LWIP_DBG_ON -//#define IP_DEBUG LWIP_DBG_ON -//#define TCP_CWND_DEBUG LWIP_DBG_ON -//#define ETHARP_DEBUG LWIP_DBG_ON -#define PBUF_DEBUG LWIP_DBG_ON -//#define TCP_INPUT_DEBUG LWIP_DBG_ON -//#define TCP_OUTPUT_DEBUG LWIP_DBG_ON -#endif - -#define ETH_PAD_SIZE WL_HEADER_SIZE /* size of wifiengine header */ -#define MEM_LIBC_MALLOC 1 - -#define TCP_MSS 512 -#if BOARD == EVK1101 /* Reduced RAM */ - #define TCP_SND_BUF (1460*1) /* MTU (1500) - IP - TCP hdrs == 1460 */ -#else - #define TCP_SND_BUF 4096 -#endif -#endif /* __LWIPOPTS_H__ */ diff --git a/libraries/WiFi/extras/wifiHD/src/main.c b/libraries/WiFi/extras/wifiHD/src/main.c deleted file mode 100644 index fffb34e48b0..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/main.c +++ /dev/null @@ -1,454 +0,0 @@ -/* - * main.c - * - * Created on: May 27, 2010 - * Author: mlf by Metodo2 srl - */ - -//#define _TEST_SPI_ - -#include -#include "board.h" -#include "gpio.h" - -#include -#include "wl_api.h" -#include "wl_cm.h" - -#include "lwip/init.h" -#include "lwip/dhcp.h" -#include "lwip/dns.h" -#include "lwip/tcp.h" -#include "netif/etharp.h" -#include "netif/wlif.h" - -#include "board_init.h" -#include "trace.h" - -#include "timer.h" -#include "util.h" -#include "cmd_wl.h" -#include "ping.h" -#include "ard_tcp.h" -#include "spi.h" -#include "ard_spi.h" -#include "delay.h" -#include "tc.h" -#include "debug.h" -#include "ard_utils.h" -#include - -/* FIRMWARE version */ -const char* fwVersion = "1.1.0"; - -#if BOARD == ARDUINO -#if !defined(DATAFLASH) -#include "wl_fw.h" - -int fw_download_init(void) { return 0;} -void fw_download_cb(void* ctx, uint8_t** buf, uint32_t* len) -{ - //printk("Fw download not available!\n"); - /* remember accross different calls */ - static uint8_t* _fw_buf = (uint8_t*)&fw_buf[0]; - static uint32_t offset = 0; - - /* when firmware download is completed, this function will be invoked - * on additional time with the input value of len set to 0. we can free - * the firmware buffer at this time since it's no longer needed. - */ - if (*len == 0) { - return; - } - - /* decide how much to read. we know *len bytes remains, but we only have - * room for SECTOR_SIEZ bytes in our buffer (fw_buf) - */ - uint32_t fw_len = *len; - - *buf = (_fw_buf+offset); - *len = fw_len; - - /* we need to know where to start reading upon next call */ - offset += fw_len; - -} -#else -#include "fw_download.h" -#endif -#endif - -bool ifStatus = false; -bool scanNetCompleted = false; - -static bool initSpiComplete = false; - -// variable used as enable flag for debug prints -DEFINE_DEBUG_VARIABLES(); - -/** - * - */ -static void -wl_cm_scan_cb(void* ctx) -{ - INFO_INIT("Scan Completed!\n"); - scanNetCompleted=true; -} - -/** - * - */ -static void -wl_cm_conn_cb(struct wl_network_t* net, void* ctx) -{ - struct ctx_server* hs = ctx; - - LINK_LED_ON(); - - INFO_INIT("Connection cb...\n"); - - printk("link up, connected to \"%s\"\n", ssid2str(&net->ssid)); - if ( hs->net_cfg.dhcp_enabled == DYNAMIC_IP_CONFIG ) { - INFO_INIT("Start DHCP...\n"); - printk("requesting dhcp ... "); - int8_t result = dhcp_start(hs->net_cfg.netif); - printk((result==ERR_OK)?"OK\n":"FAILED\n"); - hs->net_cfg.dhcp_running = 1; - } - else { - netif_set_up(hs->net_cfg.netif); - } - - INFO_INIT("Start DNS...\n"); - dns_init(); -} - - -/** - * - */ -static void -wl_cm_disconn_cb(void* ctx) -{ - struct ctx_server* hs = ctx; - - LINK_LED_OFF(); - INFO_INIT("Disconnection cb...\n"); - - if (hs->net_cfg.dhcp_running) { - printk("link down, release dhcp\n"); - dhcp_release(hs->net_cfg.netif); - dhcp_stop(hs->net_cfg.netif); - hs->net_cfg.dhcp_running = 0; - } else { - printk("link down\n"); - netif_set_down(hs->net_cfg.netif); - } - - set_result_cmd(WL_FAILURE); -} - -#if 0 -static void wl_cm_err_cb(void* ctx) -{ - int err = *(int*)ctx; - WARN("Error: %d\n", err); - set_result_cmd(err); -} -#endif - -/** - * - */ -static void -ip_status_cb(struct netif* netif) -{ - INFO_INIT("IP status cb...\n"); - if (netif_is_up(netif)) { - set_result_cmd(WL_SUCCESS); - printk("bound to %s\n", ip2str(netif->ip_addr)); - ifStatus = true; - }else{ - ifStatus = false; - closeConnections(); - WARN("Interface not up!\n"); - } -} - - -/** - * - */ -void -led_init(void) -{ - gpio_enable_gpio_pin(LED0_GPIO); - gpio_enable_gpio_pin(LED1_GPIO); - gpio_enable_gpio_pin(LED2_GPIO); - LINK_LED_OFF(); - ERROR_LED_OFF(); - DATA_LED_OFF(); -} - - -void tc_init(void) -{ - // The timer/counter instance and channel number are used in several functions. - // It's defined as local variable for ease-of-use causes and readability. - volatile avr32_tc_t *tc = WIFI_TC; - - // Options for waveform genration. - tc_waveform_opt_t waveform_opt = - { - .channel = WIFI_TC_CHANNEL_ID, // Channel selection. - - .bswtrg = TC_EVT_EFFECT_NOOP, // Software trigger effect on TIOB. - .beevt = TC_EVT_EFFECT_NOOP, // External event effect on TIOB. - .bcpc = TC_EVT_EFFECT_NOOP, // RC compare effect on TIOB. - .bcpb = TC_EVT_EFFECT_NOOP, // RB compare effect on TIOB. - - .aswtrg = TC_EVT_EFFECT_NOOP, // Software trigger effect on TIOA. - .aeevt = TC_EVT_EFFECT_NOOP, // External event effect on TIOA. - .acpc = TC_EVT_EFFECT_TOGGLE, // RC compare effect on TIOA: toggle. - .acpa = TC_EVT_EFFECT_TOGGLE, // RA compare effect on TIOA: toggle (other possibilities are none, set and clear). - - .wavsel = TC_WAVEFORM_SEL_UP_MODE_RC_TRIGGER,// Waveform selection: Up mode with automatic trigger(reset) on RC compare. - .enetrg = FALSE, // External event trigger enable. - .eevt = TC_EXT_EVENT_SEL_TIOB_INPUT, // External event selection. - .eevtedg = TC_SEL_NO_EDGE, // External event edge selection. - .cpcdis = FALSE, // Counter disable when RC compare. - .cpcstop = FALSE, // Counter clock stopped with RC compare. - - .burst = TC_BURST_NOT_GATED, // Burst signal selection. - .clki = TC_CLOCK_RISING_EDGE, // Clock inversion. - .tcclks = TC_CLOCK_SOURCE_TC2 // Internal source clock 3, connected to fPBA / 2. - }; - - // Assign I/O to timer/counter channel pin & function. - gpio_enable_module_pin(WIFI_TC_CHANNEL_PIN, WIFI_TC_CHANNEL_FUNCTION); - - // Initialize the timer/counter. - tc_init_waveform(tc, &waveform_opt); // Initialize the timer/counter waveform. - - // Set the compare triggers. - tc_write_ra(tc, WIFI_TC_CHANNEL_ID, 0x01A4); // Set RA value. - tc_write_rc(tc, WIFI_TC_CHANNEL_ID, 0x0348); // Set RC value. - - // Start the timer/counter. - tc_start(tc, WIFI_TC_CHANNEL_ID); - -} - -/** - * - */ -void -poll(struct ctx_server* hs) -{ - /* this will trigger any scheduled timer callbacks */ - timer_poll(); - - /* handle console input */ - console_poll(); - - /* wl api 'tick' */ - wl_tick(timer_get_ms()); - - /* lwip driver poll */ - wlif_poll(hs->net_cfg.netif); - - if (initSpiComplete) spi_poll(hs->net_cfg.netif); - -#ifdef WITH_GUI - gui_exec(timer_get_ms()); -#endif -} - -void initShell(void* ctx) -{ - /* initialize shell */ - INFO_INIT("Shell init...\n"); - console_init(); - console_add_cmd("scan", cmd_scan, NULL); - console_add_cmd("connect", cmd_connect, NULL); - console_add_cmd("setkey", cmd_setkey, NULL); - console_add_cmd("status", cmd_status, ctx); - console_add_cmd("debug", cmd_debug, NULL); - console_add_cmd("dumpBuf", cmd_dumpBuf, NULL); - console_add_cmd("ipconfig", cmd_set_ip, ctx); -#ifdef ADD_CMDS - console_add_cmd("powersave", cmd_power, NULL); - console_add_cmd("psconf", cmd_psconf, NULL); -#endif -#ifdef PING_CMD - console_add_cmd("ping", cmd_ping, NULL); -#endif - console_add_cmd("ttcp", cmd_ttcp, NULL); -#ifdef WITH_WPA - console_add_cmd("wpass", cmd_setpass, NULL); - console_add_cmd("dpass", cmd_delpass, NULL); -#endif -#ifdef _SPI_STATS_ - console_add_cmd("spiStat", cmd_statSpi, NULL); - console_add_cmd("resetSpiStat", cmd_resetStatSpi, NULL); -#endif -#ifdef _DNS_CMD_ - console_add_cmd("getHost", cmd_gethostbyname, NULL); - console_add_cmd("setDNS", cmd_setDnsServer, NULL); -#endif - console_add_cmd("startSrv", cmd_startSrv, NULL); - console_add_cmd("startCli", cmd_startCli, NULL); - console_add_cmd("sendUdp", cmd_sendUdpData, NULL); - -} - -/** - * - */ -void -wl_init_complete_cb(void* ctx) -{ - struct ctx_server *hs = ctx; - struct ip_addr ipaddr, netmask, gw; - wl_err_t wl_status; - - if (hs->net_cfg.dhcp_enabled == INIT_IP_CONFIG) - { - IP4_ADDR(&gw, 0,0,0,0); - IP4_ADDR(&ipaddr, 0,0,0,0); - IP4_ADDR(&netmask, 0,0,0,0); - - /* default is dhcp enabled */ - hs->net_cfg.dhcp_enabled = DYNAMIC_IP_CONFIG; - } - - start_ip_stack(&hs->net_cfg, - ipaddr, - netmask, - gw); - netif_set_status_callback(hs->net_cfg.netif, ip_status_cb); - - INFO_INIT("Starting CM...\n"); - /* start connection manager */ - wl_status = wl_cm_init(wl_cm_scan_cb, wl_cm_conn_cb, wl_cm_disconn_cb, hs); - ASSERT(wl_status == WL_SUCCESS, "failed to init wl conn mgr"); - wl_cm_start(); - - wl_scan(); - - if (initSpi(hs)){ - WARN("Spi not initialized\n"); - }else - { - initSpiComplete = true; - AVAIL_FOR_SPI(); - } - - hs->wl_init_complete = 1; -} - -void startup_init(void) -{ - INIT_SIGNAL_FOR_SPI(); - BUSY_FOR_SPI(); - - // if DEBUG enabled use DEB_PIN_GPIO for debug purposes - DEB_PIN_ENA(); - DEB_PIN_ENA(2); - DEB_PIN_UP(); - DEB_PIN_UP(2); -} - -const char timestamp[] = __TIMESTAMP__; - -/** - * - */ -int -main(void) -{ - wl_err_t wl_status; - int status; - struct ctx_server *hs; - enum wl_host_attention_mode mode; - - startup_init(); - - board_init(); - - led_init(); - - tc_init(); - - delay_init(FOSC0); - -#ifdef _TEST_SPI_ - for (;;) - { - /* handle console input */ - - console_poll(); - - spi_poll(NULL); - - } -#else - printk("Arduino Wifi Startup... [%s]\n", timestamp); - - size_t size_ctx_server = sizeof(struct ctx_server); - hs = calloc(1, size_ctx_server); - ASSERT(hs, "out of memory"); - - size_t size_netif = sizeof(struct netif); - hs->net_cfg.netif = calloc(1, size_netif); - ASSERT(hs->net_cfg.netif, "out of memory"); - hs->net_cfg.dhcp_enabled = INIT_IP_CONFIG; - - INFO_INIT("hs:%p size:0x%x netif:%p size:0x%x\n", hs, size_ctx_server, - hs->net_cfg.netif, size_netif); - initShell(hs); - timer_init(NULL, NULL); - lwip_init(); - - status = fw_download_init(); - ASSERT(status == 0, "failed to prepare for firmware download\n"); - - wl_status = wl_transport_init(fw_read_cb, hs, &mode); - if (wl_status != WL_SUCCESS) - goto err; - INFO_INIT("Mode: 0x%x\n", mode); - wl_status = wl_init(hs, wl_init_complete_cb, mode); - if (wl_status != WL_SUCCESS) - goto err; - - /* start main loop */ - for (;;) - poll(hs); - - -err: - /* show error message on console and display if wlan initialization fails */ - -#define WL_CARD_FAILURE_STR "Could not detect wl device, aborting\n" -#define WL_FIRMWARE_INVALID_STR "Invalid firmware data, aborting\n" -#define WL_OTHER_FAILURE_STR "Failed to start wl initialization\n" - - switch (wl_status) { - case WL_CARD_FAILURE: - printk(WL_CARD_FAILURE_STR); - break; - - case WL_FIRMWARE_INVALID: - printk(WL_FIRMWARE_INVALID_STR); - break; - - default: - printk(WL_OTHER_FAILURE_STR); - break; - } - for (;;) { - timer_poll(); - } -#endif -} diff --git a/libraries/WiFi/extras/wifiHD/src/nvram.c b/libraries/WiFi/extras/wifiHD/src/nvram.c deleted file mode 100644 index 2c61c5f1f25..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/nvram.c +++ /dev/null @@ -1,153 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include - -#include "compiler.h" -#include "preprocessor.h" -#include "board.h" -#include "power_clocks_lib.h" -#include "gpio.h" -#include "spi.h" -#include "conf_at45dbx.h" -#include "at45dbx.h" -#include -#include - - -static struct nvram { - uint8_t read; - void *data; - uint32_t len; - uint16_t off; -} PRIV; - -int nvram_init(void) -{ - spi_options_t spiOptions = { - .reg = AT45DBX_SPI_FIRST_NPCS, - .baudrate = AT45DBX_SPI_MASTER_SPEED, - .bits = AT45DBX_SPI_BITS, - .spck_delay = 0, - .trans_delay = 0, - .stay_act = 1, - .spi_mode = 0, - .modfdis = 1 - }; - - at45dbx_init(spiOptions, FPBA_HZ); - return 0; -} - - -/** - * Invoked by at45dbx driver - * - */ -void at45dbx_read_multiple_sector_callback(const void *psector) -{ - struct nvram *priv = &PRIV; - const uint8_t *buf = psector; - - if (!priv->read) - return; - - memcpy(priv->data, buf + priv->off, priv->len); -} - - -/** - * Invoked by at45dbx driver - * - */ -void at45dbx_write_multiple_sector_callback(void *psector) -{ - struct nvram *priv = &PRIV; - uint8_t *buf = psector; - memcpy(buf + priv->off, priv->data, priv->len); -} - - -/** - * Write/read any number bytes into any offset of nor flash by taking care - * of cases where the length is not aligned to the sector size or where - * the addr is not aligned to the sector offsets. - * - */ -static int nvram_rw(uint32_t addr, void *data, uint16_t len, int write) -{ - struct nvram *priv = &PRIV; - priv->read = write ? 0 : 1; - - while (len) { - uint32_t sector = addr / AT45DBX_SECTOR_SIZE; - priv->data = data; - priv->off = addr % AT45DBX_SECTOR_SIZE; - priv->len = AT45DBX_SECTOR_SIZE; - - if (len < AT45DBX_SECTOR_SIZE) - priv->len = len; - - if (priv->len > AT45DBX_SECTOR_SIZE - priv->off) - priv->len = AT45DBX_SECTOR_SIZE - priv->off; - - at45dbx_read_open(sector); - at45dbx_read_multiple_sector(1); - at45dbx_read_close(); - - if (write) { - at45dbx_write_open(sector); - at45dbx_write_multiple_sector(1); - at45dbx_write_close(); - } - - data += priv->len; - len -= priv->len; - addr += priv->len; - } - - return 0; -} - -/** - * Write any number bytes into any offset of nor flash. - * - */ -int nvram_write(uint32_t addr, const void *data, uint32_t len) -{ - return nvram_rw(addr, (void *) data, len, 1); -} - - -/** - * Read any number bytes into any offset of nor flash. - * - */ -int nvram_read(uint32_t addr, void *data, uint32_t len) -{ - return nvram_rw(addr, data, len, 0); -} diff --git a/libraries/WiFi/extras/wifiHD/src/nvram.h b/libraries/WiFi/extras/wifiHD/src/nvram.h deleted file mode 100644 index 88827498769..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/nvram.h +++ /dev/null @@ -1,10 +0,0 @@ -#ifndef NVRAM_H -#define NVRAM_H - -#include - -int nvram_init(void); -int nvram_read(uint32_t addr, void *data, uint32_t len); -int nvram_write(uint32_t addr, const void *data, uint32_t len); - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/owl_os.c b/libraries/WiFi/extras/wifiHD/src/owl_os.c deleted file mode 100644 index d17d8cec7c6..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/owl_os.c +++ /dev/null @@ -1,140 +0,0 @@ -#include -#include -#include -#include - -#include - -void *owl_os_alloc(size_t size) -{ - return malloc(size); -} - -void *owl_os_realloc(void *ptr, size_t size) -{ - return realloc(ptr, size); -} - -void owl_os_free(void *p) -{ - free(p); -} - -void *owl_os_memcpy(void *dst, const void *src, size_t n) -{ - return memcpy(dst, src, n); -} - -void *owl_os_memset(void *s, int c, size_t n) -{ - return memset(s, c, n); -} - -void *owl_os_memmove(void *dst, const void *src, size_t n) -{ - return memmove(dst, src, n); -} - -size_t owl_os_strlen(char *s) -{ - return strlen(s); -} - -char *owl_os_strncpy(char *dst, const char *src, size_t n) -{ - return strncpy(dst, src, n); -} - -int owl_os_strncmp(const char *s1, const char *s2, size_t n) -{ - return strncmp(s1, s2, n); -} - -int owl_os_strcmp(const char *s1, const char *s2) -{ - return strcmp(s1, s2); -} - -char *owl_os_strcpy(char *dst, const char *src) -{ - return strcpy(dst, src); -} - -char *owl_os_strdup(const char *s) -{ - return strdup(s); -} - -char *owl_os_strndup(const char *s, size_t n) -{ - return strndup(s, n); -} - -int owl_os_memcmp(const void *s1, const void *s2, size_t n) -{ - return memcmp(s1, s2, n); -} - -long int owl_os_strtol(const char *nptr, char **endptr, int base) -{ - return strtol(nptr, endptr, base); -} - -char *owl_os_strchr(const char *s, int c) -{ - return strchr(s, c); -} - -char *owl_os_strrchr(const char *s, int c) -{ - return strrchr(s, c); -} - -int owl_os_strcasecmp(const char *s1, const char *s2) -{ - return strcasecmp(s1, s2); -} - -char *owl_os_strstr(const char *haystack, const char *needle) -{ - return strstr(haystack, needle); -} - -int owl_os_snprintf(char *str, size_t size, const char *format, ...) -{ - int ret; - va_list ap; - va_start(ap, format); - ret = vsniprintf(str, size, format, ap); - va_end(ap); - return ret; -} - -/* for debugging only, never called if wl_api was built without debug */ -#ifdef CONFIG_OWL -#include "owl_env.h" -int owl_os_printf(const char *fmt, ...) -{ - char *str = NULL; - va_list args; - int len; - char *iter; - - va_start(args, fmt); - - if ((str = malloc(160)) == NULL) - return -1; - - if ((len = vsniprintf(str, 160, fmt, args)) < 0) { - free(str); - return -1; - } - - iter = str; - while (*iter) - owl_putc(*iter++); - - free(str); - return len; -} -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/ping.c b/libraries/WiFi/extras/wifiHD/src/ping.c deleted file mode 100644 index aba97db0422..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/ping.c +++ /dev/null @@ -1,340 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is derived from a part of the lwIP TCP/IP stack. - * - */ -#ifdef PING_CMD -#include "lwip/opt.h" - -#include "lwip/mem.h" -#include "lwip/raw.h" -#include "lwip/icmp.h" -#include "lwip/netif.h" -#include "lwip/sys.h" -#include "lwip/sockets.h" -#include "lwip/inet.h" -#include "lwip/inet_chksum.h" - -#include "ping.h" -#include "timer.h" -#include "util.h" - -#include "getopt.h" - -#define PING_ID 0xAFAF - -struct ping_info_t { - struct ip_addr destination; - uint32_t deadline; /* -w (in seconds) */ - uint32_t interval; /* -i (in ms) */ - uint32_t timeout; /* ms */ - uint32_t data_size; /* -s */ - uint32_t count; /* -c, 0 means continous ping */ - uint32_t size; - uint32_t first_tx_tm; - uint32_t last_tx_tm; - uint32_t last_rx_tm; - uint32_t num_tx; - uint32_t num_rx; - uint32_t flags; - uint16_t seq_num; - Bool quiet; /* -q */ - ping_complete_cb_t complete_cb; - void *ctx; -#define PING_REPLY (1 << 0) -}; - -static struct ping_info_t INFO; - -/** Prepare a echo ICMP request */ -static void ping_prepare_echo(struct icmp_echo_hdr *iecho, - struct ping_info_t* ping_info) -{ - int i; - - ICMPH_TYPE_SET(iecho,ICMP_ECHO); - ICMPH_CODE_SET(iecho, 0); - iecho->chksum = 0; - iecho->id = PING_ID; - iecho->seqno = htons(++ping_info->seq_num); - iecho->chksum = 0; - - /* fill the additional data buffer with some data */ - for(i = 0; i < ping_info->data_size; i++) { - ((char*)iecho)[sizeof(struct icmp_echo_hdr) + i] = i; - } - - iecho->chksum = inet_chksum(iecho, ping_info->size); -} - -/* Ping using the raw ip */ -static u8_t ping_recv(void *arg, struct raw_pcb *pcb, struct pbuf *p, - struct ip_addr *addr) -{ - struct icmp_echo_hdr *iecho; - struct ip_hdr *ip = p->payload; - struct ping_info_t* ping_info = (struct ping_info_t*) arg; - uint32_t us; - - if (pbuf_header( p, -PBUF_IP_HLEN)==0) { - iecho = p->payload; - - if ((iecho->id == PING_ID) && - (iecho->seqno == htons(ping_info->seq_num))) { - ping_info->last_rx_tm = timer_get_ms(); - ping_info->num_rx++; - us = 1000 * - (ping_info->last_rx_tm - ping_info->last_tx_tm); - - if (!ping_info->quiet) - printk("%d bytes from %s: icmp_seq=%d ttl=%d " \ - "time=%d.%03d ms\n", - p->tot_len, ip2str(ip->src), - iecho->seqno, - IPH_TTL(ip), - us / 1000, us % 1000); - - /* do some ping result processing */ - ping_info->flags |= PING_REPLY; - } - } - - pbuf_free(p); - return 1; /* eat the event */ -} - -static void ping_send(struct raw_pcb *raw, struct ping_info_t* ping_info) -{ - struct pbuf *p; - struct icmp_echo_hdr *iecho; - - if (!(p = pbuf_alloc(PBUF_IP, ping_info->size, PBUF_RAM))) { - return; - } - if ((p->len == p->tot_len) && (p->next == NULL)) { - iecho = p->payload; - - ping_prepare_echo(iecho, ping_info); - raw_sendto(raw, p, &ping_info->destination); - - if (!ping_info->first_tx_tm) - ping_info->first_tx_tm = timer_get_ms(); - ping_info->last_tx_tm = timer_get_ms(); - ping_info->num_tx++; - } - pbuf_free(p); -} - -void ping_set_callback(ping_complete_cb_t cb, void *ctx) { - INFO.complete_cb = cb; - INFO.ctx = ctx; -} - -void ping_stop(uint32_t *tx_cnt, uint32_t *rx_cnt) { - struct ping_info_t *ping_info = &INFO; - - *tx_cnt = ping_info->num_tx; - *rx_cnt = ping_info->num_rx; - ping_info->count = ping_info->num_tx; - if ( 0 == ping_info->count ) { - ping_info->count = 1; - } -} - -static int init_ping_info(int argc, char* argv[], struct ping_info_t* ping_info) -{ - int c; - ping_complete_cb_t cb; - void *ctx; - - cb = ping_info->complete_cb; - ctx = ping_info->ctx; - memset(ping_info, 0, sizeof(struct ping_info_t)); - ping_info->complete_cb = cb; - ping_info->ctx = ctx; - - ping_info->deadline = 0; - ping_info->interval = 1000; - ping_info->timeout = 3000; - ping_info->data_size = 32; - ping_info->count = 3; - ping_info->destination = - netif_default ? netif_default->gw : ip_addr_any; - - optind = 1; - while ((c = getopt(argc, argv, "c:i:s:w:q")) != -1) { - switch (c) { - case 'c': - ping_info->count = atoi(optarg); - break; - - case 'i': - ping_info->interval = atoi(optarg); - break; - - case 's': - ping_info->data_size = atoi(optarg); - break; - - case 'q': - ping_info->quiet = TRUE; - break; - - case 'w': - ping_info->deadline = atoi(optarg); - break; - } - } - - ping_info->size = sizeof(struct icmp_echo_hdr) + ping_info->data_size; - - if (optind >= argc) - return -1; - - ping_info->destination = str2ip(argv[optind]); - if (!ping_info->destination.addr) - return -1; - - - ping_info->last_rx_tm = timer_get_ms(); - - return 0; -} - -static void print_stats(struct ping_info_t* ping_info) -{ - printk("\n--- %s ping statistics ---\n", - ip2str(ping_info->destination)); - printk("%d packets transmitted, %d received, %d%% packet loss, "\ - "time %dms\n\n", - ping_info->num_tx, ping_info->num_rx, - 100 * (ping_info->num_tx - ping_info->num_rx) / - ping_info->num_tx, - timer_get_ms() - ping_info->first_tx_tm); -} - -static void ping_finalize(struct ping_info_t* ping_info) { - print_stats(ping_info); - if (ping_info->complete_cb) { - ping_info->complete_cb(ping_info->num_tx, ping_info->num_rx, ping_info->ctx); - } -} - -cmd_state_t cmd_ping(int argc, char* argv[], void* ctx) -{ - static enum { - INIT, - PING, - WAIT_REPLY - } state = INIT; - - struct ping_info_t *ping_info = &INFO; - static struct raw_pcb *pcb; - - switch (state) { - case INIT: - if (init_ping_info(argc, argv, ping_info) != 0) { - printk("Usage: ping [-c count] [-i interval] " \ - "[-s packetsize]\n " \ - "[-w deadline] [-q] destination\n"); - return CMD_DONE; - } - - if (!(pcb = raw_new(IP_PROTO_ICMP))) { - printk("could not allocate pcb\n"); - state = INIT; - return CMD_DONE; - } - raw_recv(pcb, ping_recv, ping_info); - raw_bind(pcb, IP_ADDR_ANY); - - printk("PING %s %d(%d) bytes of data\n", - ip2str(ping_info->destination), - ping_info->data_size, - ping_info->size); - state = PING; - /* fall through */ - - case PING: - if (!netif_is_up(netif_default)) { - printk("netif is down\n"); - raw_remove(pcb); - state = INIT; - return CMD_DONE; - } - - if (ping_info->count && ping_info->num_tx == ping_info->count) { - ping_finalize(ping_info); - raw_remove(pcb); - state = INIT; - return CMD_DONE; - } - - - if (timer_get_ms() < ping_info->last_rx_tm + ping_info->interval) { - return CMD_INPROGRESS; - } - ping_send(pcb, ping_info); - - state = WAIT_REPLY; - return CMD_INPROGRESS; - - case WAIT_REPLY: - if (ping_info->flags & PING_REPLY) { - ping_info->flags &= (~PING_REPLY); - state = PING; - return CMD_INPROGRESS; - } - - if (timer_get_ms() > - ping_info->last_tx_tm + ping_info->timeout) { - if (!ping_info->quiet) - printk("timeout from %s\n", - ip2str(ping_info->destination)); - state = PING; - return CMD_INPROGRESS; - } - - if (ping_info->deadline && - timer_get_ms() > - ping_info->first_tx_tm + ping_info->deadline * 1000) { - ping_finalize(ping_info); - raw_remove(pcb); - state = INIT; - return CMD_DONE; - } - - return CMD_INPROGRESS; - } - - /* unreachable */ - Assert(0); - return CMD_DONE; -} -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/ping.h b/libraries/WiFi/extras/wifiHD/src/ping.h deleted file mode 100644 index 47d409d7402..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/ping.h +++ /dev/null @@ -1,45 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* - * Copyright (c) 2001-2003 Swedish Institute of Computer Science. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT - * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING - * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY - * OF SUCH DAMAGE. - * - * This file is derived from a part of the lwIP TCP/IP stack. - * - */ -#ifndef PING_H -#define PING_H - -#include "console.h" - -typedef void (*ping_complete_cb_t)(uint32_t tx_pkt_cnt, uint32_t rx_pkt_cnt, void *ctx); - -void ping_set_callback(ping_complete_cb_t cb, void *ctx); - -void ping_stop(uint32_t *tx_cnt, uint32_t *rx_cnt); - -cmd_state_t cmd_ping(int argc, char* argv[], void* ctx); - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/printf-stdarg.c b/libraries/WiFi/extras/wifiHD/src/printf-stdarg.c deleted file mode 100644 index 92eb21721a8..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/printf-stdarg.c +++ /dev/null @@ -1,323 +0,0 @@ -/* This source file is part of the ATMEL AVR32-SoftwareFramework-AT32UC3A-1.4.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief sprintf functions to replace newlib for AVR32 UC3. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (C) 2006-2008, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, 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 Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - - -#include - -static void printchar(char **str, int c) -{ - extern int board_putchar(char c); - - if (str) { - **str = c; - ++(*str); - } - else (void) board_putchar(c); -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = -i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = t + '0'; - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -#if 0 -int fprintf(__FILE *stream, const char *format, ...) -{ -return 0; -} -#endif - -int printk_va(char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'p' ) { - pad = 8; - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printk(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return printk_va( 0, format, args ); -} - -#ifndef __ARM__ -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return printk_va( &out, format, args ); -} -#endif - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/printf-stdarg.h b/libraries/WiFi/extras/wifiHD/src/printf-stdarg.h deleted file mode 100644 index bce38b6f208..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/printf-stdarg.h +++ /dev/null @@ -1,34 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef PRINTF_STDARG_H -#define PRINTF_STDARG_H -#include - -int printk(const char *format, ...); -int printk_va(char **out, const char *format, va_list args ); -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/timer.c b/libraries/WiFi/extras/wifiHD/src/timer.c deleted file mode 100644 index 6ffba634a90..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/timer.c +++ /dev/null @@ -1,232 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#include -#include -#include -#include -#ifdef FREERTOS_USED -#include "FreeRTOS.h" -#include "task.h" -#endif - -#define TIMER_HZ 4 - - -struct timeout_t { - U32 tick; - U32 expire_at_tick; - Bool expired; - U8 type; - void (*cb)(void* ctx); - void* ctx; -}; - -struct timer_t { - volatile U32 tick; - struct timeout_t timeout[10]; - void (*tick_isr) (void* ctx); - const U32 MS_PER_TICK; - void *ctx; -}; - -#define ARRAY_SIZE(a) sizeof(a) / sizeof(a[0]) - - -static struct timer_t TIMER = { - .tick = 0, -#ifdef FREERTOS_USED - .MS_PER_TICK = 1 / portTICK_RATE_MS, -#else - .MS_PER_TICK = TIMER_HZ, -#endif - .timeout = { { 0 } }, -}; - -#ifdef FREERTOS_USED /* Use TICK-hook */ - -void vApplicationTickHook( void ) { - struct timer_t* priv = &TIMER; - priv->tick++; - if(priv->tick_isr) { - priv->tick_isr(priv->ctx); - } -} - -#else /* Use interrupt directly */ - -static __attribute__((__interrupt__)) void irq_handler(void) -{ - volatile avr32_rtc_t *rtc = &AVR32_RTC; - struct timer_t* priv = &TIMER; - priv->tick++; - - if(priv->tick_isr) - priv->tick_isr(priv->ctx); - - rtc->icr = AVR32_RTC_ICR_TOPI_MASK; - rtc->isr; -} - -#endif - -void timer_init(void (*tick_isr) (void* ctx), void* ctx) -{ - struct timer_t* priv = &TIMER; - uint8_t id; - -#ifndef FREERTOS_USED - INTC_register_interrupt(&irq_handler, AVR32_RTC_IRQ, AVR32_INTC_INT0); - if (!rtc_init(&AVR32_RTC, RTC_OSC_RC, 0)) - Assert(0); - - rtc_set_top_value(&AVR32_RTC, 115 * priv->MS_PER_TICK / 2); - rtc_enable_interrupt(&AVR32_RTC); - rtc_enable(&AVR32_RTC); -#else - /* With FreeRTOS we use the OS tick instead */ -#endif - priv->tick_isr = tick_isr; - priv->ctx = ctx; - - for (id = 0; id < ARRAY_SIZE(priv->timeout); id++) - priv->timeout[id].expired = TRUE; -} - - -U32 timer_get_ms(void) -{ - struct timer_t* priv = &TIMER; - return priv->tick * priv->MS_PER_TICK; -} - -void timer_delay(U32 ms) -{ - struct timer_t* priv = &TIMER; - U32 expire_at_tick = priv->tick + ms / priv->MS_PER_TICK; - while (priv->tick < expire_at_tick); -} - -/** - * Called from application main loop to invoke any scheduled timeout cbs. - * This function might be called as often as possible rather than at each tick - * to support the timeout value '0', e.g a timeout within less than one tick. - * - */ -void timer_poll(void) -{ - struct timer_t* priv = &TIMER; - U8 i; - - for (i = 0; i < ARRAY_SIZE(priv->timeout); i++) { - struct timeout_t* tmo = &priv->timeout[i]; - if (tmo->expired) - continue; - - if (tmo->expire_at_tick > priv->tick) - continue; - - if (tmo->cb) - tmo->cb(tmo->ctx); - - if (tmo->type == TIMEOUT_PERIODIC) - tmo->expire_at_tick = priv->tick + tmo->tick; - else - tmo->expired = TRUE; - } -} - -static U32 timer_sched_timeout(U32 ms, U8 type) -{ - struct timer_t* priv = &TIMER; - struct timeout_t* tmo; - U8 id; - - Assert(type == TIMEOUT_ONESHOT || type == TIMEOUT_PERIODIC); - - for (id = 0; id < ARRAY_SIZE(priv->timeout); id++) { - tmo = &priv->timeout[id]; - if (tmo->expired) - break; - } - - Assert(id != ARRAY_SIZE(priv->timeout)); - - tmo->tick = ms / priv->MS_PER_TICK; - tmo->expire_at_tick = priv->tick + tmo->tick; - tmo->type = type; - tmo->expired = FALSE; - return id; -} - -U32 timer_sched_timeout_cb(U32 ms, U8 type, void (*cb)(void *ctx), void* ctx) -{ - struct timer_t* priv = &TIMER; - struct timeout_t* tmo; - U8 id; - - Assert(cb); - id = timer_sched_timeout(ms, type); - tmo = &priv->timeout[id]; - - tmo->cb = cb; - tmo->ctx = ctx; - return id; -} - - -U32 timer_mod(U32 id, U32 ms, U8 type, void (*cb)(void *ctx), void* ctx) -{ - struct timer_t* priv = &TIMER; - - if (id != INVALID_TIMER_ID && !priv->timeout[id].expired) - timer_cancel_timeout(id); - - return timer_sched_timeout_cb(ms, type, cb, ctx); -} - -void timer_cancel_timeout(U32 id) -{ - struct timer_t* priv = &TIMER; - struct timeout_t* tmo; - - tmo = &priv->timeout[id]; - tmo->expired = TRUE; -} - -int timer_interval_passed(U32 old, U32 new, U32 diff) { - /* New did not wrap */ - if (new > old && new - old > diff) { - return 1; - } - /* New did wrap */ - else if (new < old && ( ( (U32)(-1) - old ) + new ) > diff ) { - return 1; - } - return 0; -} diff --git a/libraries/WiFi/extras/wifiHD/src/timer.h b/libraries/WiFi/extras/wifiHD/src/timer.h deleted file mode 100644 index 6614fbc4486..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/timer.h +++ /dev/null @@ -1,51 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef TIMER_H -#define TIMER_H -#include - -enum { - TIMEOUT_ONESHOT, - TIMEOUT_PERIODIC -}; - -#define INVALID_TIMER_ID 0xFFFFFFFF - -/* Handle timer overflows. Return 1 if the interval has passed. */ -int timer_interval_passed(uint32_t old, uint32_t new, uint32_t diff); - -void timer_tick(); -void timer_init(void (*tick_isr) (void* ctx), void* ctx); -void timer_poll(void); -void timer_delay(uint32_t ms); -uint32_t timer_sched_timeout_cb(uint32_t ms, uint8_t type, void (*cb)(void *ctx), void* ctx); -uint32_t timer_mod(uint32_t id, uint32_t ms, uint8_t type, void (*cb)(void *ctx), void* ctx); -void timer_cancel_timeout(uint32_t id); -uint32_t timer_get_ms(void); - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/top_defs.h b/libraries/WiFi/extras/wifiHD/src/top_defs.h deleted file mode 100644 index 09f7c3ef89e..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/top_defs.h +++ /dev/null @@ -1,120 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef _TOP_DEFS_H -#define _TOP_DEFS_H - -#include -#include - -#define ARRAY_SIZE(a) sizeof(a) / sizeof((a)[0]) - -#ifndef UNREF -#define UNREF(x) x = x -#endif - -#if __GNUC__ -#ifdef __KERNEL__ -#define WEAK_DECL -#else -#define WEAK_DECL __attribute__ ((__weak__)) -#endif -#define PACKED __attribute__ ((__packed__)) -#define USED __attribute__ ((__used__)) -#else - #error "Unsupported compiler" -#endif - -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif - - -#if 0 -#include -/* - * These functions should _NOT_ be used, call iprintf, sniprintf, iscanf, siscanf etc - * instead. Those functions do not have support for floating point formats. - * Not using these functions saves 27kB of code. - */ -extern int printf(const char *format, ...) __attribute__ ((deprecated)); -extern int sprintf(char *str, const char *format, ...) __attribute__ ((deprecated)); -extern int snprintf(char *str, size_t size, const char *format, ...) __attribute__ ((deprecated)); - -int vprintf(const char *format, va_list ap) __attribute__ ((deprecated)); -int vfprintf(FILE *stream, const char *format, va_list ap) __attribute__ ((deprecated)); -int vsprintf(char *str, const char *format, va_list ap) __attribute__ ((deprecated)); -int vsnprintf(char *str, size_t size, const char *format, va_list ap) __attribute__ ((deprecated)); - -int scanf(const char *format, ...) __attribute__ ((deprecated)); -int fscanf(FILE *stream, const char *format, ...) __attribute__ ((deprecated)); -int sscanf(const char *str, const char *format, ...) __attribute__ ((deprecated)); - -int vscanf(const char *format, va_list ap) __attribute__ ((deprecated)); -int vsscanf(const char *str, const char *format, va_list ap) __attribute__ ((deprecated)); -int vfscanf(FILE *stream, const char *format, va_list ap) __attribute__ ((deprecated)); -#endif - -#endif - - - -#if defined(__linux__) || defined(__APPLE__) - #include - #include - #define sniprintf snprintf - #define asiprintf asprintf - #define printk printf - #define siscanf sscanf - - #define WL_ASSERT(x) assert(x) - #define WL_DEBUG(args...) printf(args) - - #ifdef NO_LWIP - /* IP address representation from lwIP */ - struct ip_addr { - uint32_t addr; - } PACKED; - #endif - - #define FEAT_SOCKETS - -#else - #define WL_ASSERT(cond) do { \ - if (!(cond)) { \ - printk("%s:%d\n", __FILE__, __LINE__); \ - for(;;); \ - } \ - } while(0) - #define WL_DEBUG(args...) printk(args) - - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/trace.h b/libraries/WiFi/extras/wifiHD/src/trace.h deleted file mode 100644 index 984262a81b8..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/trace.h +++ /dev/null @@ -1,44 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef TRACE_H -#define TRACE_H - -#include -#include "printf-stdarg.h" - -#define ASSERT(cond, str) do { \ - if (!(cond)) { \ - printk("%s\n", str); \ - Assert(0); \ - } \ - } while(0) - - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/util.c b/libraries/WiFi/extras/wifiHD/src/util.c deleted file mode 100644 index c01edebf46d..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/util.c +++ /dev/null @@ -1,260 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -const char* ip2str(struct ip_addr addr) -{ - static char buf[16]; - -#if BYTE_ORDER == LITTLE_ENDIAN - sniprintf(buf, sizeof(buf), "%lu.%lu.%lu.%lu", - addr.addr & 0xff, - (addr.addr >> 8) & 0xff, - (addr.addr >> 16) & 0xff, - (addr.addr >> 24) & 0xff); - return buf; -#else - sniprintf(buf, sizeof(buf), "%lu.%lu.%lu.%lu", - (addr.addr >> 24) & 0xff, - (addr.addr >> 16) & 0xff, - (addr.addr >> 8) & 0xff, - (addr.addr) & 0xff); - return buf; -#endif -} - -struct ip_addr str2ip(const char* str) -{ - int a,b,c,d; - uint32_t ip = 0; - struct ip_addr addr; - - if (siscanf(str,"%d.%d.%d.%d",&a,&b,&c,&d) != 4) - goto out; - - if (a < 0 || a > 255 || b < 0 || b > 255 || - c < 0 || c > 255 || d < 0 || d > 255) { - goto out; - } - -#if BYTE_ORDER == LITTLE_ENDIAN - ip = (d << 24) | (c << 16) | (b << 8) | a; -#else - ip = (a << 24) | (b << 16) | (c << 8) | d; -#endif - - out: - addr.addr = ip; - return addr; -} - -uint8_t ascii_to_key(char *outp, const char *inp) { - char buf[3]; - int len; - buf[2] = '\0'; - len = strlen(inp); - if (len % 2) { - printk("Invalid length\n"); - } - len = 0; - while (*inp) { - if (! isxdigit(*inp) || ! isxdigit(*(inp+1)) || - len > WL_MAX_PASS_LEN) { - return 0; - } - buf[0] = *inp++; - buf[1] = *inp++; - *outp++ = strtol(buf, NULL, 16); - len++; - } - return len; -} - - - -void printbuf(const char *prefix, const void *data, size_t len) -{ - const unsigned char *s = data; - int i, j; - - for (i = 0; i < len; i += 16) - { - printk("%s ", prefix); - for(j = 0; j < 16; j++) { - if(i + j >= len) - printk(" "); - else - printk("%02X ", (uint16_t)s[i + j]); - } - printk(": "); - for(j = 0; j < 16; j++) { - if(i + j >= len) - break; - if(s[i+j] >= 32 && s[i+j] < 127) - printk("%c", s[i + j]); - else - printk("."); - } - printk("\n"); - } -} - - -void print_network(struct wl_network_t* wl_network) -{ - printk("%s ", mac2str(wl_network->bssid.octet)); - printk("\"%s\"", ssid2str(&wl_network->ssid)); - printk(" RSSI %d dBm ", wl_network->rssi); - switch(wl_network->net_type) { - case WL_CONN_TYPE_ADHOC: - printk(" Ad-Hoc "); - break; - default : - break; - } - switch (wl_network->enc_type) { - case ENC_TYPE_WEP : - printk(" (WEP encryption)"); - break; - case ENC_TYPE_TKIP : - printk(" (TKIP encryption)"); - break; - case ENC_TYPE_CCMP : - printk(" (CCMP encryption)"); - break; - case ENC_TYPE_NONE : - break; - } - printk("\n"); - -} - -void print_network_list(void) -{ - struct wl_network_list_t* wl_network_list; - uint8_t i; - - wl_get_network_list(&wl_network_list); - - if (wl_network_list->cnt == 0) - printk("no nets found\n"); - - for (i = 0; i < wl_network_list->cnt; i++) - print_network(wl_network_list->net[i]); -} - -int join_argv(char *dst, size_t dst_len, int argc, char* argv[]) { - char *p = dst; - int i; - int len = 0; - - /* Not really kosher, an ssid may legally contain 0-bytes but - * the console interface does not deal with that. - */ - for (i = 0; i < argc; i++) { - len += strlen(argv[i]); - if (len > dst_len) { - printk("ssid too long (max %d)\n", (int) dst_len); - return 0; - } - p += sniprintf(p, - dst_len - (p - dst), - "%s ", - argv[i]); - } - if (p == dst) { - return 0; - } - p--; - *p = '\0'; /* Delete last space */ - - return p - dst; -} - -const char* ssid2str(struct wl_ssid_t *ssid) { - static char buf[WL_SSID_MAX_LENGTH + 1]; - - memset(buf, 0, sizeof buf); - memcpy(buf, ssid->ssid, ssid->len); - - return buf; -} - - -const char* mac2str(uint8_t* mac) -{ - static char buf[18]; - sniprintf(buf, sizeof(buf), "%02x-%02x-%02x-%02x-%02x-%02x", - mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); - return buf; -} - - -char* enc_type2str(enum wl_enc_type enc_type) -{ - switch(enc_type) { - case ENC_TYPE_WEP: - return "WEP"; - case ENC_TYPE_CCMP: - return "CCMP"; - case ENC_TYPE_TKIP: - return "TKIP"; - default: - return ""; - }; -} - -int equal_ssid(const struct wl_ssid_t* ssid1, - const struct wl_ssid_t* ssid2) { - if (ssid1->len == ssid2->len && - (memcmp(ssid1->ssid, ssid2->ssid, ssid1->len) == 0)) { - return 1; - } - return 0; -} - -int equal_bssid(const struct wl_mac_addr_t* bssid1, - const struct wl_mac_addr_t* bssid2) { - if (memcmp(bssid1, bssid2, sizeof *bssid1) == 0) { - return 1; - } - return 0; -} - - diff --git a/libraries/WiFi/extras/wifiHD/src/util.h b/libraries/WiFi/extras/wifiHD/src/util.h deleted file mode 100644 index 2b3f74f8339..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/util.h +++ /dev/null @@ -1,71 +0,0 @@ -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef _UTIL_H -#define _UTIL_H -#include -#include -#include -#include "lwip/ip.h" -#include - -const char* ip2str(struct ip_addr addr); - -struct ip_addr str2ip(const char* str); - -uint8_t ascii_to_key(char *outp, const char *inp); - -void print_network(struct wl_network_t* wl_network); - -void print_network_list(void); - -int join_argv(char *dst, size_t dst_len, int argc, char* argv[]); - -void printbuf(const char *prefix, const void *data, size_t len); - -const char* ssid2str(struct wl_ssid_t *ssid); - -const char* mac2str(uint8_t mac[6]); - -char* enc_type2str(enum wl_enc_type enc_type); - -int equal_ssid(const struct wl_ssid_t* ssid1, - const struct wl_ssid_t* ssid2); - -int equal_bssid(const struct wl_mac_addr_t* bssid1, - const struct wl_mac_addr_t* bssid2); - -#define NET_SET_SSID(net, xssid, ssid_len) do { \ - DE_MEMCPY((net)->ssid.ssid, (xssid), (ssid_len)); \ - (net)->ssid.len = (ssid_len); \ - } while (0) - -#define NET_SET_BSSID(net, xbssid) do { \ - DE_MEMCPY(&(net)->bssid, &(xbssid), sizeof (xbssid)); \ - } while (0) - -#endif /* _UTIL_H */ diff --git a/libraries/WiFi/extras/wifiHD/src/wifi_spi.h b/libraries/WiFi/extras/wifiHD/src/wifi_spi.h deleted file mode 100644 index e2e262c2ff4..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/wifi_spi.h +++ /dev/null @@ -1,160 +0,0 @@ -/* - * wifi_spi.h - * - * Created on: Jul 4, 2010 - * Author: mlf by Metodo2 srl - */ -#ifndef WiFi_Spi_h -#define WiFi_Spi_h - -#include "wl_definitions.h" - -#define CMD_FLAG 0 -#define REPLY_FLAG 1<<7 -#define DATA_FLAG 0x40 - -#define WIFI_SPI_ACK 1 -#define WIFI_SPI_ERR 0xFF - -#define TIMEOUT_CHAR 1000 - -//#define MAX_SOCK_NUM 4 /**< Maxmium number of socket */ -#define NO_SOCKET_AVAIL 255 - -#define START_CMD 0xE0 -#define END_CMD 0xEE -#define ERR_CMD 0xEF -#define CMD_POS 1 // Position of Command OpCode on SPI stream -#define PARAM_LEN_POS 2 // Position of Param len on SPI stream - -enum { - SET_NET_CMD = 0x10, - SET_PASSPHRASE_CMD = 0x11, - SET_KEY_CMD = 0x12, - TEST_CMD = 0x13, - SET_IP_CONFIG_CMD = 0x14, - SET_DNS_CONFIG_CMD = 0x15, - - GET_CONN_STATUS_CMD = 0x20, - GET_IPADDR_CMD = 0x21, - GET_MACADDR_CMD = 0x22, - GET_CURR_SSID_CMD = 0x23, - GET_CURR_BSSID_CMD = 0x24, - GET_CURR_RSSI_CMD = 0x25, - GET_CURR_ENCT_CMD = 0x26, - SCAN_NETWORKS = 0x27, - START_SERVER_TCP_CMD= 0x28, - GET_STATE_TCP_CMD = 0x29, - DATA_SENT_TCP_CMD = 0x2A, - AVAIL_DATA_TCP_CMD = 0x2B, - GET_DATA_TCP_CMD = 0x2C, - START_CLIENT_TCP_CMD= 0x2D, - STOP_CLIENT_TCP_CMD = 0x2E, - GET_CLIENT_STATE_TCP_CMD = 0x2F, - DISCONNECT_CMD = 0x30, - GET_IDX_SSID_CMD = 0x31, - GET_IDX_RSSI_CMD = 0x32, - GET_IDX_ENCT_CMD = 0x33, - REQ_HOST_BY_NAME_CMD= 0x34, - GET_HOST_BY_NAME_CMD= 0x35, - START_SCAN_NETWORKS = 0x36, - GET_FW_VERSION_CMD = 0x37, - GET_TEST_CMD = 0x38, - SEND_DATA_UDP_CMD = 0x39, - GET_REMOTE_DATA_CMD = 0x3A, - - // All command with DATA_FLAG 0x40 send a 16bit Len - - SEND_DATA_TCP_CMD = 0x44, - GET_DATABUF_TCP_CMD = 0x45, - INSERT_DATABUF_CMD = 0x46, - -}; - -#if 0 -enum wl_tcp_state { - CLOSED = 0, - LISTEN = 1, - SYN_SENT = 2, - SYN_RCVD = 3, - ESTABLISHED = 4, - FIN_WAIT_1 = 5, - FIN_WAIT_2 = 6, - CLOSE_WAIT = 7, - CLOSING = 8, - LAST_ACK = 9, - TIME_WAIT = 10 -}; -#endif - -enum numParams{ - PARAM_NUMS_0, - PARAM_NUMS_1, - PARAM_NUMS_2, - PARAM_NUMS_3, - PARAM_NUMS_4, - PARAM_NUMS_5, - MAX_PARAM_NUMS -}; - -#define MAX_PARAMS MAX_PARAM_NUMS-1 -#define PARAM_LEN_SIZE 1 - -typedef struct __attribute__((__packed__)) -{ - uint8_t paramLen; - char* param; -}tParam; - -typedef struct __attribute__((__packed__)) -{ - uint16_t dataLen; - char* data; -}tDataParam; - - -typedef struct __attribute__((__packed__)) -{ - unsigned char cmd; - unsigned char tcmd; - unsigned char nParam; - tParam params[MAX_PARAMS]; -}tSpiMsg; - -typedef struct __attribute__((__packed__)) -{ - unsigned char cmd; - unsigned char tcmd; - unsigned char nParam; - tDataParam params[MAX_PARAMS]; -}tSpiMsgData; - - -typedef struct __attribute__((__packed__)) -{ - unsigned char cmd; - unsigned char tcmd; - //unsigned char totLen; - unsigned char nParam; -}tSpiHdr; - -typedef struct __attribute__((__packed__)) -{ - uint8_t paramLen; - uint32_t param; -}tLongParam; - -typedef struct __attribute__((__packed__)) -{ - uint8_t paramLen; - uint16_t param; -}tIntParam; - -typedef struct __attribute__((__packed__)) -{ - uint8_t paramLen; - uint8_t param; -}tByteParam; - -#endif -uint8_t param; \ No newline at end of file diff --git a/libraries/WiFi/extras/wifiHD/src/wl_cm.c b/libraries/WiFi/extras/wifiHD/src/wl_cm.c deleted file mode 100644 index ebc0e45dd85..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/wl_cm.c +++ /dev/null @@ -1,431 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include "wl_cm.h" -#include "util.h" -#include -#include "debug.h" - -/** Roaming configuration parameters **/ - -/*! The ROAMING_RSSI_THRESHOLD setting defines how bad the current - * signal strength should be before we'll consider roaming to an AP - * with better signal strength. The objective is to stay on the - * current AP as long as the RSSI is decent, even if there are other - * APs in the same BSS with better RSSI available. - * If ROAMING_RSSI_THRESHOLD is too high we might roam unecessarily. - * If ROAMING_RSSI_THRESHOLD is too low we might not roam in time to - * avoid packet loss. This also impacts power consumption, staying - * too long with an AP with poor RSSI will consume more power. - * Unit is dBm. - */ -#define ROAMING_RSSI_THRESHOLD -65 - -/*! The ROAMING_RSSI_DIFF setting defines how much better - * than the currently associated AP a new AP must be before - * we'll attempt to roam over to the new AP. - * If ROAMING_RSSI_DIFF is too high it might be too hard - * to roam (important if the STA is expected to move - * quickly through different AP coverage areas). - * If ROAMING_RSSI_DIFF is too low we might bounce between - * two APs with similar signal strengths. - * Unit is dBm. - */ -#define ROAMING_RSSI_DIFF 10 - -# include "printf-stdarg.h" -#include "ard_utils.h" -#include "debug.h" - -/** \defgroup wl_cm Connection Manager - * - * These functions are used to configure and control the WiFi connetion - * manager. - * - * - * @{ - */ - -struct cm_candidate { - struct wl_ssid_t ssid; - struct wl_mac_addr_t bssid; -}; - -struct cm { - cm_scan_cb_t *scan_cb; - cm_conn_cb_t *conn_cb; - cm_disconn_cb_t *disconn_cb; - void* ctx; - uint8_t enabled; - struct cm_candidate candidate; -}; - - -/** - * This function can be modified to pick a network based on - * application specific criteria. - * - * If the SSID can not be found in the scan list it will be - * assumed to be a hidden SSID and the wl_connect() command - * will be called to attempt to probe for the network and - * connect to it. - */ -static struct wl_network_t* -find_best_candidate(struct cm* cm) -{ - struct wl_network_list_t* netlist; - struct wl_network_t *best_net = NULL; - uint8_t i; - - if (wl_get_network_list(&netlist) != WL_SUCCESS) - return NULL; - - if (netlist->cnt == 0) - return NULL; - - for (i = 0; i < netlist->cnt; i++) { - /* match on ssid */ - if (cm->candidate.ssid.len) - if (!equal_ssid(&cm->candidate.ssid, - &netlist->net[i]->ssid)) - continue; - - /* match bssid */ - if (strncmp((char*) cm->candidate.bssid.octet, - "\xff\xff\xff\xff\xff\xff", 6)) - if (!equal_bssid(&cm->candidate.bssid, - &netlist->net[i]->bssid)) - continue; - /* check for best rssi. */ - if ( best_net && - ( best_net->rssi > netlist->net[i]->rssi) ) { - continue; - } - best_net = netlist->net[i]; - } - - return best_net; -} - - -/** - * - */ -static void -select_net(struct cm* cm) -{ - struct wl_network_t *candidate_net; - struct wl_network_t *current_net; - struct wl_ssid_t *ssid_p; - - int ret; - - /* Nothing to do */ - if (0 == cm->candidate.ssid.len) { - return; - } - - current_net = wl_get_current_network(); - candidate_net = find_best_candidate(cm); - - /* Connected to the candidate? ... */ - if ( current_net == candidate_net ) { - if ( current_net ) { - /* ...yes, dont change. */ - - return; - } - } - - /* Roaming checks */ - if (current_net && candidate_net) { - /* Are we changing BSSs? */ - if ( equal_ssid(&candidate_net->ssid, - ¤t_net->ssid)) { - - /* ...no. Does the currently connected - * net have a decent RSSI?...*/ - if ( current_net->rssi > ROAMING_RSSI_THRESHOLD ) { - /* ...yes, stay with it. */ - return; - } - /* ...no. Does the candidate have - * sufficiently better RSSI to - * motivate a switch to it? */ - if ( candidate_net->rssi < current_net->rssi + - ROAMING_RSSI_DIFF) { - return; - } - /* ...yes, try to roam to candidate_net */ - CM_DPRINTF("CM: Roaming from rssi %d to %d\n", - current_net->rssi, - candidate_net->rssi); - } - } - /* a candidate is found */ - if (candidate_net) { - /* We connect to a specific bssid here because - * find_best_candidate() might have picked a - * particulare AP among many with the same SSID. - * wl_connect() would pick one of them at random. - */ - ret = wl_connect_bssid(candidate_net->bssid); - } - /* no candidate found */ - else { - CM_DPRINTF("CM: No candidate found for ssid \"%s\"\n", - ssid2str(&cm->candidate.ssid)); - /* Might be a hidden SSID so we try to connect to it. - * wl_connect() will trigger a directed scan - * for the SSID in this case. - */ - ssid_p = &cm->candidate.ssid; - ret = wl_connect(ssid_p->ssid, ssid_p->len); - } - switch (ret) { - case WL_SUCCESS : - return; - case WL_BUSY: - wl_disconnect(); - return; - case WL_RETRY: - break; - default : - CM_DPRINTF("CM: failed to connect\n"); - break; - } - - /* some operation failed or no candidate found */ - if (wl_scan() != WL_SUCCESS) - CM_DPRINTF("CM: failed to scan\n"); -} - - -/** - * - */ -static void -wl_scan_complete_cb(void* ctx) -{ - struct cm *cm = ctx; - - CM_DPRINTF("CM: scan completed\n"); - - if (cm->scan_cb) - cm->scan_cb(cm->ctx); - - if ( 0 == cm->enabled ) { - return; - } - select_net(cm); -} - -/** - * - */ -static void -wl_media_connected_cb(void* ctx) -{ - struct cm *cm = ctx; - struct wl_network_t *net = wl_get_current_network(); - CM_DPRINTF("CM: connected to %s\n", ssid2str(&net->ssid)); - LINK_LED_ON(); - ERROR_LED_OFF(); - if (cm->conn_cb) - cm->conn_cb(net, cm->ctx); -} - - -/** - * - */ -static void -wl_conn_failure_cb(void* ctx) -{ - struct cm *cm = ctx; - CM_DPRINTF("CM: connect failed, scanning\n"); - ERROR_LED_ON(); - LINK_LED_OFF(); - - if ( 0 == cm->enabled ) { - return; - } - if (wl_scan() != WL_SUCCESS) - /* should never happen */ - CM_DPRINTF("CM: could not start scan after connect fail!\n"); -} - - -/** - * - */ -static void -wl_conn_lost_cb(void* ctx) -{ - struct cm *cm = ctx; - CM_DPRINTF("CM: connection lost, scanning\n"); - LINK_LED_OFF(); - if (cm->disconn_cb) - cm->disconn_cb(cm->ctx); - - if ( 0 == cm->enabled ) { - return; - } - if (wl_scan() != WL_SUCCESS) - /* should never happen */ - CM_DPRINTF("CM: could not start scan after connect lost!\n"); -} - - -/** - * - */ -static void -wl_event_cb(struct wl_event_t event, void* ctx) -{ - struct cm *cm = ctx; - - switch (event.id) { - case WL_EVENT_MEDIA_CONNECTED: - wl_media_connected_cb(cm); - break; - - case WL_EVENT_CONN_FAILURE: - wl_conn_failure_cb(cm); - break; - - case WL_EVENT_MEDIA_DISCONNECTED: - CM_DPRINTF("CM: disconnected\n"); - wl_conn_lost_cb(cm); - break; - - case WL_EVENT_SCAN_COMPLETE: - wl_scan_complete_cb(cm); - break; - - default: - CM_DPRINTF("CM: unhandled event\n"); - }; -} - -static struct cm *cm = NULL; - - -/** - * Doesn't actually start the CM, just initializing. CM will run whenever - * an valid ssid is set through wl_cm_set_network() and wl_cm_start() - * has been called. - */ -wl_err_t -wl_cm_init(cm_scan_cb_t scan_cb, - cm_conn_cb_t conn_cb, - cm_disconn_cb_t disconn_cb, - void* ctx) -{ - if (cm != NULL) - return WL_FAILURE; - - cm = calloc(1, sizeof(struct cm)); - if (cm == NULL) { - CM_DPRINTF("CM: out of memory\n"); - return WL_FAILURE; - } - - if (wl_register_event_cb(wl_event_cb, cm) != WL_SUCCESS) { - CM_DPRINTF("CM: could not register event cb\n"); - return WL_FAILURE; - } - - cm->scan_cb = scan_cb; - cm->conn_cb = conn_cb; - cm->disconn_cb = disconn_cb; - cm->enabled = 0; - cm->ctx = ctx; - - CM_DPRINTF("CM: initialized\n"); - return WL_SUCCESS; -} - -wl_err_t -wl_cm_start(void) { - if (NULL == cm) - return WL_FAILURE; - - cm->enabled = 1; - return WL_SUCCESS; -} - -wl_err_t -wl_cm_stop(void) { - if (NULL == cm) - return WL_FAILURE; - - cm->enabled = 0; - return WL_SUCCESS; -} - - -/** - * Set the desired network which the connection manager should try to - * connect to. - * - * The ssid and bssid of the desired network should be specified. The ssid and - * bssid will be matched against the networks found during scan. If any - * parameter is null, it will always match. If both parameters are null, - * the first found network will be chosen. - * - * @param ssid The ssid of the desired network. If null, any ssid will match. - * @param bssid The bssid of the desired network. If null, any bssid will match. - * - */ -wl_err_t -wl_cm_set_network(struct wl_ssid_t *ssid, struct wl_mac_addr_t *bssid) -{ - if (cm == NULL) - return WL_FAILURE; - - if (ssid) - memcpy(&cm->candidate.ssid, ssid, sizeof(cm->candidate.ssid)); - else - cm->candidate.ssid.len = 0; - - if (bssid) - memcpy(&cm->candidate.bssid, bssid, - sizeof(cm->candidate.bssid)); - else - memset(&cm->candidate.bssid, 0xff, sizeof(cm->candidate.bssid)); - - if (cm->candidate.ssid.len) - wl_scan(); - - return WL_SUCCESS; -} -/* - * @} - */ diff --git a/libraries/WiFi/extras/wifiHD/src/wl_cm.h b/libraries/WiFi/extras/wifiHD/src/wl_cm.h deleted file mode 100644 index bbb65d97965..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/wl_cm.h +++ /dev/null @@ -1,51 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef WL_CM_H -#define WL_CM_H - -#include -#include -#include - -typedef void (cm_scan_cb_t)(void* ctx); -typedef void (cm_conn_cb_t)(struct wl_network_t *net, void* ctx); -typedef void (cm_disconn_cb_t)(void* ctx); - -wl_err_t wl_cm_set_network(struct wl_ssid_t *ssid, struct wl_mac_addr_t *bssid); - -wl_err_t wl_cm_init(cm_scan_cb_t scan_cb, - cm_conn_cb_t conn_cb, - cm_disconn_cb_t disconn_cb, - void* ctx); - -wl_err_t wl_cm_start(void); -wl_err_t wl_cm_stop(void); - -#endif diff --git a/libraries/WiFi/extras/wifiHD/src/wl_definitions.h b/libraries/WiFi/extras/wifiHD/src/wl_definitions.h deleted file mode 100644 index b07c203fc97..00000000000 --- a/libraries/WiFi/extras/wifiHD/src/wl_definitions.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * wl_definitions.h - * - * Created on: Mar 6, 2011 - * Author: mlf by Metodo2 srl - */ - -#ifndef WL_DEFINITIONS_H_ -#define WL_DEFINITIONS_H_ - -// Maximum size of a SSID -#define WL_SSID_MAX_LENGTH 32 -// Length of passphrase. Valid lengths are 8-63. -#define WL_WPA_KEY_MAX_LENGTH 63 -// Length of key in bytes. Valid values are 5 and 13. -#define WL_WEP_KEY_MAX_LENGTH 13 -// Size of a MAC-address or BSSID -#define WL_MAC_ADDR_LENGTH 6 -// Size of a MAC-address or BSSID -#define WL_IPV4_LENGTH 4 -// Maximum size of a SSID list -#define WL_NETWORKS_LIST_MAXNUM 10 -// Maxmium number of socket -#define MAX_SOCK_NUM 4 -//Maximum number of attempts to establish wifi connection -#define WL_MAX_ATTEMPT_CONNECTION 10 - -typedef enum { - WL_IDLE_STATUS, - WL_NO_SSID_AVAIL, - WL_SCAN_COMPLETED, - WL_CONNECTED, - WL_CONNECT_FAILED, - WL_CONNECTION_LOST, - WL_DISCONNECTED -} wl_status_t; - - -#endif /* WL_DEFINITIONS_H_ */ diff --git a/libraries/WiFi/extras/wifiHD/wifiHD.cproj b/libraries/WiFi/extras/wifiHD/wifiHD.cproj deleted file mode 100644 index 3d15941fd78..00000000000 --- a/libraries/WiFi/extras/wifiHD/wifiHD.cproj +++ /dev/null @@ -1,1291 +0,0 @@ - - - - 2.0 - 6.0 - com.Atmel.AVRGCC32 - 417e15db-488a-4b56-8d4e-fbe832b2b649 - wifiHD - AT32uc3a1256 - none - Importer - Executable - C - wifiHD - .elf - $(MSBuildProjectDirectory)\$(Configuration) - Native - com.atmel.avrdbg.tool.jtagicemk3 - true - - - - - - - - - - - - - - JTAG - - com.atmel.avrdbg.tool.jtagicemk3 - JTAGICE3 - J30200003078 - true - false - - - - 127.0.0.1 - 51999 - False - - - JTAG - - 250000 - 1000000 - 150000 - false - false - 0 - 0 - 0 - 0 - - - - 3.5.0 - false - - 0 - - - - - True - True - True - True - - - BOARD=ARDUINO - WITH_KEY - WITH_WPA - WITH_NO_DMA - DATAFLASH=1 - _INFO_DEBUG_=1 - - - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4 - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD - - - Optimize for size (-Os) - -fdata-sections -ffunction-sections - True - True - True - True - -c -fmessage-length=0 - True - - - newlib_addons-at32ucr2-speed_opt - _ucr2_hd_spi_v2.7.0 - _ucr2_hd_wl_sta_intwpa_v2.7.0 - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC - - - True - True - True - -Wl,--gc-sections -Wl,-e,_trampoline -T../src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - -Wa,-g - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - - - - - - - True - True - True - True - false - false - - - BOARD=ARDUINO - NO_SYS - _DEBUG_ - _ASSERT_ENABLE_ - WITH_KEY - WITH_WPA - WITH_NO_DMA - DATAFLASH=1 - _INFO_DEBUG_=1 - - - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4 - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD - - - Optimize (-O1) - -fdata-sections -ffunction-sections - true - false - false - false - false - true - true - false - false - false - Maximum (-g3) - false - false - true - false - false - false - false - -c -fmessage-length=0 - false - true - false - false - false - false - - - newlib_addons-at32ucr2-speed_opt - _ucr2_hd_spi_v2.7.0 - _ucr2_hd_wl_sta_intwpa_v2.7.0 - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.7.0/UCR2/GCC - - - true - false - false - false - false - true - true - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - Default (-g) - -Wa,-g - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - false - Default (-Wa,-g) - - - - - bin\Debug_512\ - - - True - True - True - True - false - false - - - BOARD=ARDUINO - _APP_DEBUG_ - _DEBUG_ - _ASSERT_ENABLE_ - EXT_BOARD=SPB104 - WITH_KEY - WITH_WPA - WITH_NO_DMA - LWIP_DEBUG - _INFO_DEBUG_=1 - - - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4 - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD - - - Optimize (-O1) - -fdata-sections - true - false - false - false - false - true - false - false - false - false - Maximum (-g3) - false - false - true - false - false - false - false - -c -fmessage-length=0 - false - true - false - false - false - false - - - newlib_addons-at32ucr2-speed_opt - _ucr2_hd_spi_standalone_v2.1.1 - _ucr2_hd_wl_standalone_v2.1.1 - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.1.1/UCR2/GCC - - - true - false - false - false - false - true - true - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - Default (-g) - -Wa,-g - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - false - Default (-Wa,-g) - - - - - bin\Release_512\ - - - True - True - True - True - false - false - - - BOARD=ARDUINO - _ASSERT_ENABLE_ - EXT_BOARD=SPB104 - WITH_KEY - WITH_WPA - WITH_NO_DMA - LWIP_DEBUG - _INFO_DEBUG_=1 - - - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-1.3.2/src/include/ipv4 - ../src/SOFTWARE_FRAMEWORK/SERVICES/LWIP/lwip-port-1.3.2/HD/if/include - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD - - - -fdata-sections - true - false - false - false - false - true - false - false - false - false - false - false - true - false - false - false - false - -c -fmessage-length=0 - false - true - false - false - false - false - - - newlib_addons-at32ucr2-speed_opt - _ucr2_hd_spi_standalone_v2.1.1 - _ucr2_hd_wl_standalone_v2.1.1 - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/WIFI/HD/v2.1.1/UCR2/GCC - - - true - false - false - false - false - true - true - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - -Wa,-g - - - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PDCA - ../src/SOFTWARE_FRAMEWORK/DRIVERS/TC - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EBI/SMC - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/DELAY - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/RTC - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/EIC - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/DRIVERS/CPU/CYCLE_COUNTER - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - false - - - - - - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - - - - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - - compile - - - compile - - - compile - - - - - compile - - - compile - - - compile - - - - - - compile - - - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - - - compile - - - compile - - - - - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - - - compile - - - - - compile - - - - compile - - - compile - - - - compile - - - - compile - - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - - - compile - - - - compile - - - compile - - - compile - - - compile - - - compile - - - - - - - compile - - - - - compile - - - - compile - - - compile - - - compile - - - compile - - - - - compile - - - \ No newline at end of file diff --git a/libraries/WiFi/extras/wifi_dnld/.cproject b/libraries/WiFi/extras/wifi_dnld/.cproject deleted file mode 100644 index 286dad7b9de..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/.cproject +++ /dev/null @@ -1,1281 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libraries/WiFi/extras/wifi_dnld/.project b/libraries/WiFi/extras/wifi_dnld/.project deleted file mode 100644 index aa3047b518b..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/.project +++ /dev/null @@ -1,70 +0,0 @@ - - - wifi_dnld - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - ?name? - - - - org.eclipse.cdt.make.core.append_environment - true - - - org.eclipse.cdt.make.core.buildArguments - - - - org.eclipse.cdt.make.core.buildCommand - make - - - org.eclipse.cdt.make.core.buildLocation - ${workspace_loc:/wifi_dnld/Debug} - - - org.eclipse.cdt.make.core.contents - org.eclipse.cdt.make.core.activeConfigSettings - - - org.eclipse.cdt.make.core.enableAutoBuild - false - - - org.eclipse.cdt.make.core.enableCleanBuild - true - - - org.eclipse.cdt.make.core.enableFullBuild - true - - - org.eclipse.cdt.make.core.stopOnError - true - - - org.eclipse.cdt.make.core.useDefaultBuildCmd - true - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - - - - - - com.atmel.avr32.core.nature - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - diff --git a/libraries/WiFi/extras/wifi_dnld/Release/wifi_dnld.elf b/libraries/WiFi/extras/wifi_dnld/Release/wifi_dnld.elf deleted file mode 100644 index 11ec3ddc730..00000000000 Binary files a/libraries/WiFi/extras/wifi_dnld/Release/wifi_dnld.elf and /dev/null differ diff --git a/libraries/WiFi/extras/wifi_dnld/src/CONFIG/conf_access.h b/libraries/WiFi/extras/wifi_dnld/src/CONFIG/conf_access.h deleted file mode 100644 index 23e9b345007..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/CONFIG/conf_access.h +++ /dev/null @@ -1,170 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Memory access control configuration file. - * - * This file contains the possible external configuration of the memory access - * control. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _CONF_ACCESS_H_ -#define _CONF_ACCESS_H_ - -#include "compiler.h" -#include "board.h" - - -/*! \name Activation of Logical Unit Numbers - */ -//! @{ -#define LUN_0 DISABLE //!< On-Chip Virtual Memory. -#define LUN_1 ENABLE //!< AT45DBX Data Flash. -#define LUN_2 DISABLE //!< SD/MMC Card over SPI. -#define LUN_3 DISABLE -#define LUN_4 DISABLE -#define LUN_5 DISABLE -#define LUN_6 DISABLE -#define LUN_7 DISABLE -#define LUN_USB DISABLE //!< Host Mass-Storage Memory. -//! @} - -/*! \name LUN 0 Definitions - */ -//! @{ -#define VIRTUAL_MEM LUN_0 -#define LUN_ID_VIRTUAL_MEM LUN_ID_0 -#define LUN_0_INCLUDE "virtual_mem.h" -#define Lun_0_test_unit_ready virtual_test_unit_ready -#define Lun_0_read_capacity virtual_read_capacity -#define Lun_0_wr_protect virtual_wr_protect -#define Lun_0_removal virtual_removal -#define Lun_0_usb_read_10 virtual_usb_read_10 -#define Lun_0_usb_write_10 virtual_usb_write_10 -#define Lun_0_mem_2_ram virtual_mem_2_ram -#define Lun_0_ram_2_mem virtual_ram_2_mem -#define LUN_0_NAME "\"On-Chip Virtual Memory\"" -//! @} - -/*! \name LUN 1 Definitions - */ -//! @{ -#define AT45DBX_MEM LUN_1 -#define LUN_ID_AT45DBX_MEM LUN_ID_1 -#define LUN_1_INCLUDE "at45dbx_mem.h" -#define Lun_1_test_unit_ready at45dbx_test_unit_ready -#define Lun_1_read_capacity at45dbx_read_capacity -#define Lun_1_wr_protect at45dbx_wr_protect -#define Lun_1_removal at45dbx_removal -#define Lun_1_usb_read_10 at45dbx_usb_read_10 -#define Lun_1_usb_write_10 at45dbx_usb_write_10 -#define Lun_1_mem_2_ram at45dbx_df_2_ram -#define Lun_1_ram_2_mem at45dbx_ram_2_df -#define LUN_1_NAME "\"AT45DBX Data Flash\"" -//! @} - -/*! \name LUN 2 Definitions - */ -//! @{ -#define SD_MMC_SPI_MEM LUN_2 -#define LUN_ID_SD_MMC_SPI_MEM LUN_ID_2 -#define LUN_2_INCLUDE "sd_mmc_spi_mem.h" -#define Lun_2_test_unit_ready sd_mmc_spi_test_unit_ready -#define Lun_2_read_capacity sd_mmc_spi_read_capacity -#define Lun_2_wr_protect sd_mmc_spi_wr_protect -#define Lun_2_removal sd_mmc_spi_removal -#define Lun_2_usb_read_10 sd_mmc_spi_usb_read_10 -#define Lun_2_usb_write_10 sd_mmc_spi_usb_write_10 -#define Lun_2_mem_2_ram sd_mmc_spi_mem_2_ram -#define Lun_2_ram_2_mem sd_mmc_spi_ram_2_mem -#define LUN_2_NAME "\"SD/MMC Card over SPI\"" -//! @} - -/*! \name USB LUNs Definitions - */ -//! @{ -#define MEM_USB LUN_USB -#define LUN_ID_MEM_USB LUN_ID_USB -#define LUN_USB_INCLUDE "host_mem.h" -#define Lun_usb_test_unit_ready(lun) host_test_unit_ready(lun) -#define Lun_usb_read_capacity(lun, nb_sect) host_read_capacity(lun, nb_sect) -#define Lun_usb_read_sector_size(lun) host_read_sector_size(lun) -#define Lun_usb_wr_protect(lun) host_wr_protect(lun) -#define Lun_usb_removal() host_removal() -#define Lun_usb_mem_2_ram(addr, ram) host_read_10_ram(addr, ram) -#define Lun_usb_ram_2_mem(addr, ram) host_write_10_ram(addr, ram) -#define LUN_USB_NAME "\"Host Mass-Storage Memory\"" -//! @} - -/*! \name Actions Associated with Memory Accesses - * - * Write here the action to associate with each memory access. - * - * \warning Be careful not to waste time in order not to disturb the functions. - */ -//! @{ -#define memory_start_read_action(nb_sectors) -#define memory_stop_read_action() -#define memory_start_write_action(nb_sectors) -#define memory_stop_write_action() -//! @} - -/*! \name Activation of Interface Features - */ -//! @{ -#define ACCESS_USB DISABLED //!< MEM <-> USB interface. -#define ACCESS_MEM_TO_RAM ENABLED //!< MEM <-> RAM interface. -#define ACCESS_STREAM DISABLED //!< Streaming MEM <-> MEM interface. -#define ACCESS_STREAM_RECORD DISABLED //!< Streaming MEM <-> MEM interface in record mode. -#define ACCESS_MEM_TO_MEM DISABLED //!< MEM <-> MEM interface. -#define ACCESS_CODEC DISABLED //!< Codec interface. -//! @} - -/*! \name Specific Options for Access Control - */ -//! @{ -#define GLOBAL_WR_PROTECT DISABLED //!< Management of a global write protection. -//! @} - - -#endif // _CONF_ACCESS_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/CONFIG/conf_at45dbx.h b/libraries/WiFi/extras/wifi_dnld/src/CONFIG/conf_at45dbx.h deleted file mode 100644 index 3280e4fc1ce..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/CONFIG/conf_at45dbx.h +++ /dev/null @@ -1,83 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT45DBX configuration file. - * - * This file contains the possible external configuration of the AT45DBX. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _CONF_AT45DBX_H_ -#define _CONF_AT45DBX_H_ - - -#include "conf_access.h" - -#if AT45DBX_MEM == DISABLE - #error conf_at45dbx.h is #included although AT45DBX_MEM is disabled -#endif - - -#include "at45dbx.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -//! Size of AT45DBX data flash memories to manage. -#define AT45DBX_MEM_SIZE AT45DBX_1MB - -//! Number of AT45DBX components to manage. -#define AT45DBX_MEM_CNT 1 - -//! First chip select used by AT45DBX components on the SPI module instance. -//! AT45DBX_SPI_NPCS0_PIN always corresponds to this first NPCS, whatever it is. -#define AT45DBX_SPI_FIRST_NPCS AT45DBX_SPI_NPCS - -//! SPI master speed in Hz. -#define AT45DBX_SPI_MASTER_SPEED 12000000 - -//! Number of bits in each SPI transfer. -#define AT45DBX_SPI_BITS 8 - - -#endif // _CONF_AT45DBX_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/Doc/SPB104 product brief.pdf b/libraries/WiFi/extras/wifi_dnld/src/Doc/SPB104 product brief.pdf deleted file mode 100644 index 8705cb148e2..00000000000 Binary files a/libraries/WiFi/extras/wifi_dnld/src/Doc/SPB104 product brief.pdf and /dev/null differ diff --git a/libraries/WiFi/extras/wifi_dnld/src/Doc/gettingstarted.pdf b/libraries/WiFi/extras/wifi_dnld/src/Doc/gettingstarted.pdf deleted file mode 100644 index 7c37693b514..00000000000 Binary files a/libraries/WiFi/extras/wifi_dnld/src/Doc/gettingstarted.pdf and /dev/null differ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x deleted file mode 100644 index c12712150e3..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/ASM/trampoline.x +++ /dev/null @@ -1,74 +0,0 @@ -/* This file is part of the ATMEL AVR32-SoftwareFramework-AT32UC3A-1.4.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AVR32 UC3 ISP trampoline. - * - * In order to be able to program a project with both BatchISP and JTAGICE mkII - * without having to take the general-purpose fuses into consideration, add this - * file to the project and change the program entry point to _trampoline. - * - * The pre-programmed ISP will be erased if JTAGICE mkII is used. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32UC devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (C) 2006-2008, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#include "conf_isp.h" - - -//! @{ -//! \verbatim - - - // This must be linked @ 0x80000000 if it is to be run upon reset. - .section .reset, "ax", @progbits - - - .global _trampoline - .type _trampoline, @function -_trampoline: - // Jump to program start. - rjmp program_start - - .org PROGRAM_START_OFFSET -program_start: - // Jump to the C runtime startup routine. - lda.w pc, _stext - - -//! \endverbatim -//! @} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h deleted file mode 100644 index fbdd466eff1..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/arduino.h +++ /dev/null @@ -1,234 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1100 board header file. - * - * This file contains definitions and services related to the features of the - * EVK1100 board rev. B and C. - * - * To use this board, define BOARD=EVK1100. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _ARDUINO_H_ -#define _ARDUINO_H_ - -#include "compiler.h" - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. -# include "led.h" -#endif // __AVR32_ABI_COMPILER__ - - -/*! \name Oscillator Definitions - */ -//! @{ - -// RCOsc has no custom calibration by default. Set the following definition to -// the appropriate value if a custom RCOsc calibration has been applied to your -// part. -//#define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< RCOsc frequency: Hz. - -#define FOSC32 32768 //!< Osc32 frequency: Hz. -#define OSC32_STARTUP AVR32_PM_OSCCTRL32_STARTUP_8192_RCOSC //!< Osc32 startup time: RCOsc periods. - -#define FOSC0 12000000 //!< Osc0 frequency: Hz. -#define OSC0_STARTUP AVR32_PM_OSCCTRL0_STARTUP_2048_RCOSC //!< Osc0 startup time: RCOsc periods. - -// Osc1 crystal is not mounted by default. Set the following definitions to the -// appropriate values if a custom Osc1 crystal is mounted on your board. -//#define FOSC1 12000000 //!< Osc1 frequency: Hz. -//#define OSC1_STARTUP AVR32_PM_OSCCTRL1_STARTUP_2048_RCOSC //!< Osc1 startup time: RCOsc periods. - -//! @} - - -//! Number of LEDs. -#define LED_COUNT 3 - -/*! \name GPIO Connections of LEDs - */ -//! @{ -#define LED0_GPIO AVR32_PIN_PB19 -#define LED1_GPIO AVR32_PIN_PB20 -#define LED2_GPIO AVR32_PIN_PB21 -//! @} - -/*! \name PWM Channels of LEDs - */ -//! @{ -#define LED0_PWM 0 -#define LED1_PWM 1 -#define LED2_PWM 2 -//! @} - -/*! \name PWM Functions of LEDs - */ -//! @{ -#define LED0_PWM_FUNCTION AVR32_PWM_0_FUNCTION -#define LED1_PWM_FUNCTION AVR32_PWM_1_FUNCTION -#define LED2_PWM_FUNCTION AVR32_PWM_2_FUNCTION -//! @} - -/*! \name Color Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED_MONO0_GREEN LED0 -#define LED_MONO1_GREEN LED1 -#define LED_MONO2_GREEN LED2 -//! @} - -#if 0 -/*! \name SPI Connections of the DIP204 LCD - */ -//! @{ -#define DIP204_SPI (&AVR32_SPI1) -#define DIP204_SPI_NPCS 2 -#define DIP204_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN -#define DIP204_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION -#define DIP204_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN -#define DIP204_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION -#define DIP204_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN -#define DIP204_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION -#define DIP204_SPI_NPCS_PIN AVR32_SPI1_NPCS_2_0_PIN -#define DIP204_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_2_0_FUNCTION -//! @} - -/*! \name GPIO and PWM Connections of the DIP204 LCD Backlight - */ -//! @{ -#define DIP204_BACKLIGHT_PIN AVR32_PIN_PB18 -#define DIP204_PWM_CHANNEL 6 -#define DIP204_PWM_PIN AVR32_PWM_6_PIN -#define DIP204_PWM_FUNCTION AVR32_PWM_6_FUNCTION -//! @} -#endif - -/*! \name SPI Connections of the AT45DBX Data Flash Memory - */ -//! @{ -#define AT45DBX_SPI (&AVR32_SPI1) -#define AT45DBX_SPI_NPCS 2 -#define AT45DBX_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN -#define AT45DBX_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION -#define AT45DBX_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN -#define AT45DBX_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION -#define AT45DBX_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN -#define AT45DBX_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION -#define AT45DBX_SPI_NPCS2_PIN AVR32_SPI1_NPCS_2_0_PIN -#define AT45DBX_SPI_NPCS2_FUNCTION AVR32_SPI1_NPCS_2_0_FUNCTION -#define AT45DBX_CHIP_RESET AVR32_PIN_PA02 -//! @} - - -/*! \name GPIO and SPI Connections of the SD/MMC Connector - */ -//! @{ -//#define SD_MMC_CARD_DETECT_PIN AVR32_PIN_PA02 -//#define SD_MMC_WRITE_PROTECT_PIN AVR32_PIN_PA07 -#define SD_MMC_SPI (&AVR32_SPI1) -#define SD_MMC_SPI_NPCS 1 -#define SD_MMC_SPI_SCK_PIN AVR32_SPI1_SCK_0_0_PIN -#define SD_MMC_SPI_SCK_FUNCTION AVR32_SPI1_SCK_0_0_FUNCTION -#define SD_MMC_SPI_MISO_PIN AVR32_SPI1_MISO_0_0_PIN -#define SD_MMC_SPI_MISO_FUNCTION AVR32_SPI1_MISO_0_0_FUNCTION -#define SD_MMC_SPI_MOSI_PIN AVR32_SPI1_MOSI_0_0_PIN -#define SD_MMC_SPI_MOSI_FUNCTION AVR32_SPI1_MOSI_0_0_FUNCTION -#define SD_MMC_SPI_NPCS_PIN AVR32_SPI1_NPCS_1_0_PIN -#define SD_MMC_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_1_0_FUNCTION -//! @} - -/* Timer Counter to generate clock for WiFi chip*/ -# define WIFI_TC (&AVR32_TC) -# define WIFI_TC_CHANNEL_ID 0 -# define WIFI_TC_CHANNEL_PIN AVR32_TC_A0_0_0_PIN -# define WIFI_TC_CHANNEL_FUNCTION AVR32_TC_A0_0_0_FUNCTION -// Note that TC_A0_0_0 pin is pin 6 (PB23) on AT32UC3A1512 QFP100. - -/* Pin related to WiFi chip communication */ -#ifndef USE_POLL - #define USE_POLL -#endif - #define SPI_CS 0 - #define AVR32_SPI AVR32_SPI1 - #define GPIO_IRQ_PIN AVR32_PIN_PA03 - #define GPIO_IRQ AVR32_GPIO_IRQ_7 - #define GPIO_W_RESET_PIN AVR32_PIN_PA07 - #define GPIO_W_SHUTDOWN_PIN AVR32_PIN_PA09 - -/* Pin related to shield communication */ - #define ARDUINO_HANDSHAKE_PIN AVR32_PIN_PA25 - - #define AVR32_PDCA_PID_TX AVR32_PDCA_PID_SPI1_TX - #define AVR32_PDCA_PID_RX AVR32_PDCA_PID_SPI1_RX - - -#if 0 -/*! \name TWI Connections of the Spare TWI Connector - */ -//! @{ -#define SPARE_TWI (&AVR32_TWI) -#define SPARE_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define SPARE_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define SPARE_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define SPARE_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION -//! @} - - -/*! \name SPI Connections of the Spare SPI Connector - */ -//! @{ -#define SPARE_SPI (&AVR32_SPI0) -#define SPARE_SPI_NPCS 0 -#define SPARE_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define SPARE_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define SPARE_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define SPARE_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define SPARE_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define SPARE_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define SPARE_SPI_NPCS_PIN AVR32_SPI0_NPCS_0_0_PIN -#define SPARE_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_0_0_FUNCTION -//! @} -#endif - -#endif // _ARDUINO_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c deleted file mode 100644 index d7cd439dbb6..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.c +++ /dev/null @@ -1,346 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1100 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1100 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include -#include "preprocessor.h" -#include "compiler.h" -#include "arduino.h" -#include "led.h" - - -//! Structure describing LED hardware connections. -typedef const struct -{ - struct - { - U32 PORT; //!< LED GPIO port. - U32 PIN_MASK; //!< Bit-mask of LED pin in GPIO port. - } GPIO; //!< LED GPIO descriptor. - struct - { - S32 CHANNEL; //!< LED PWM channel (< 0 if N/A). - S32 FUNCTION; //!< LED pin PWM function (< 0 if N/A). - } PWM; //!< LED PWM descriptor. -} tLED_DESCRIPTOR; - - -//! Hardware descriptors of all LEDs. -static tLED_DESCRIPTOR LED_DESCRIPTOR[LED_COUNT] = -{ -#define INSERT_LED_DESCRIPTOR(LED_NO, unused) \ - { \ - {LED##LED_NO##_GPIO / 32, 1 << (LED##LED_NO##_GPIO % 32)},\ - {LED##LED_NO##_PWM, LED##LED_NO##_PWM_FUNCTION } \ - }, - MREPEAT(LED_COUNT, INSERT_LED_DESCRIPTOR, ~) -#undef INSERT_LED_DESCRIPTOR -}; - - -//! Saved state of all LEDs. -static volatile U32 LED_State = (1 << LED_COUNT) - 1; - - -U32 LED_Read_Display(void) -{ - return LED_State; -} - - -void LED_Display(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor; - volatile avr32_gpio_port_t *led_gpio_port; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - LED_State = leds; - - // For all LEDs... - for (led_descriptor = &LED_DESCRIPTOR[0]; - led_descriptor < LED_DESCRIPTOR + LED_COUNT; - led_descriptor++) - { - // Set the LED to the requested state. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - } -} - - -U32 LED_Read_Display_Mask(U32 mask) -{ - return Rd_bits(LED_State, mask); -} - - -void LED_Display_Mask(U32 mask, U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - mask &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Wr_bits(LED_State, mask, leds); - - // While there are specified LEDs left to manage... - while (mask) - { - // Select the next specified LED and set it to the requested state. - led_shift = 1 + ctz(mask); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - leds >>= led_shift - 1; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - mask >>= led_shift; - } -} - - -Bool LED_Test(U32 leds) -{ - return Tst_bits(LED_State, leds); -} - - -void LED_Off(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Clr_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it off. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_On(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Set_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it on. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_Toggle(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Tgl_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and toggle it. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrt = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -U32 LED_Read_Display_Field(U32 field) -{ - return Rd_bitfield(LED_State, field); -} - - -void LED_Display_Field(U32 field, U32 leds) -{ - // Move the bit-field to the appropriate position for the bit-mask. - LED_Display_Mask(field, leds << ctz(field)); -} - - -U8 LED_Get_Intensity(U32 led) -{ - tLED_DESCRIPTOR *led_descriptor; - - // Check that the argument value is valid. - led = ctz(led); - led_descriptor = &LED_DESCRIPTOR[led]; - if (led >= LED_COUNT || led_descriptor->PWM.CHANNEL < 0) return 0; - - // Return the duty cycle value if the LED PWM channel is enabled, else 0. - return (AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)) ? - AVR32_PWM.channel[led_descriptor->PWM.CHANNEL].cdty : 0; -} - - -void LED_Set_Intensity(U32 leds, U8 intensity) -{ - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_pwm_channel_t *led_pwm_channel; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // For each specified LED... - for (leds &= (1 << LED_COUNT) - 1; leds; leds >>= led_shift) - { - // Select the next specified LED and check that it has a PWM channel. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - if (led_descriptor->PWM.CHANNEL < 0) continue; - - // Initialize or update the LED PWM channel. - led_pwm_channel = &AVR32_PWM.channel[led_descriptor->PWM.CHANNEL]; - if (!(AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL))) - { - led_pwm_channel->cmr = (AVR32_PWM_CPRE_MCK << AVR32_PWM_CPRE_OFFSET) & - ~(AVR32_PWM_CALG_MASK | - AVR32_PWM_CPOL_MASK | - AVR32_PWM_CPD_MASK); - led_pwm_channel->cprd = 0x000000FF; - led_pwm_channel->cdty = intensity; - AVR32_PWM.ena = 1 << led_descriptor->PWM.CHANNEL; - } - else - { - AVR32_PWM.isr; - while (!(AVR32_PWM.isr & (1 << led_descriptor->PWM.CHANNEL))); - led_pwm_channel->cupd = intensity; - } - - // Switch the LED pin to its PWM function. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (led_descriptor->PWM.FUNCTION & 0x1) - { - led_gpio_port->pmr0s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr0c = led_descriptor->GPIO.PIN_MASK; - } - if (led_descriptor->PWM.FUNCTION & 0x2) - { - led_gpio_port->pmr1s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr1c = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->gperc = led_descriptor->GPIO.PIN_MASK; - } -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h deleted file mode 100644 index a577124ff6f..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/ARDUINO/led.h +++ /dev/null @@ -1,191 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1100 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1100 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _LED_H_ -#define _LED_H_ - -#include "compiler.h" - - -/*! \name Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED0 0x01 -#define LED1 0x02 -#define LED2 0x04 -#define LED3 0x08 -#define LED4 0x10 -#define LED5 0x20 -#define LED6 0x40 -#define LED7 0x80 -//! @} - - -/*! \brief Gets the last state of all LEDs set through the LED API. - * - * \return State of all LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display(void); - -/*! \brief Sets the state of all LEDs. - * - * \param leds New state of all LEDs (1 bit per LED). - * - * \note The pins of all LEDs are set to GPIO output mode. - */ -extern void LED_Display(U32 leds); - -/*! \brief Gets the last state of the specified LEDs set through the LED API. - * - * \param mask LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Mask(U32 mask); - -/*! \brief Sets the state of the specified LEDs. - * - * \param mask LEDs of which to set the state (1 bit per LED). - * - * \param leds New state of the specified LEDs (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Mask(U32 mask, U32 leds); - -/*! \brief Tests the last state of the specified LEDs set through the LED API. - * - * \param leds LEDs of which to test the state (1 bit per LED). - * - * \return \c TRUE if at least one of the specified LEDs has a state on, else - * \c FALSE. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern Bool LED_Test(U32 leds); - -/*! \brief Turns off the specified LEDs. - * - * \param leds LEDs to turn off (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Off(U32 leds); - -/*! \brief Turns on the specified LEDs. - * - * \param leds LEDs to turn on (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_On(U32 leds); - -/*! \brief Toggles the specified LEDs. - * - * \param leds LEDs to toggle (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Toggle(U32 leds); - -/*! \brief Gets as a bit-field the last state of the specified LEDs set through - * the LED API. - * - * \param field LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED, beginning with the first - * specified LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Field(U32 field); - -/*! \brief Sets as a bit-field the state of the specified LEDs. - * - * \param field LEDs of which to set the state (1 bit per LED). - * \param leds New state of the specified LEDs (1 bit per LED, beginning with - * the first specified LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Field(U32 field, U32 leds); - -/*! \brief Gets the intensity of the specified LED. - * - * \param led LED of which to get the intensity (1 bit per LED; only the least - * significant set bit is used). - * - * \return Intensity of the specified LED (0x00 to 0xFF). - * - * \warning The PWM channel of the specified LED is supposed to be used only by - * this module. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U8 LED_Get_Intensity(U32 led); - -/*! \brief Sets the intensity of the specified LEDs. - * - * \param leds LEDs of which to set the intensity (1 bit per LED). - * \param intensity New intensity of the specified LEDs (0x00 to 0xFF). - * - * \warning The PWM channels of the specified LEDs are supposed to be used only - * by this module. - * - * \note The pins of the specified LEDs are set to PWM output mode. - */ -extern void LED_Set_Intensity(U32 leds, U8 intensity); - - -#endif // _LED_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h deleted file mode 100644 index edda44cb3cc..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/evk1105.h +++ /dev/null @@ -1,433 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1105 board header file. - * - * This file contains definitions and services related to the features of the - * EVK1105 board rev. B. - * - * To use this board, define BOARD=EVK1105. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _EVK1105_H_ -#define _EVK1105_H_ - -#ifdef EVK1105_REV3 -# include "evk1105_rev3.h" -#else - -#include "compiler.h" - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. -# include "led.h" -#endif // __AVR32_ABI_COMPILER__ - - -/*! \name Oscillator Definitions - */ -//! @{ - -// RCOsc has no custom calibration by default. Set the following definition to -// the appropriate value if a custom RCOsc calibration has been applied to your -// part. -//#define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< RCOsc frequency: Hz. - -#define FOSC32 32768 //!< Osc32 frequency: Hz. -#define OSC32_STARTUP AVR32_PM_OSCCTRL32_STARTUP_8192_RCOSC //!< Osc32 startup time: RCOsc periods. - -#define FOSC0 12000000 //!< Osc0 frequency: Hz. -#define OSC0_STARTUP AVR32_PM_OSCCTRL0_STARTUP_2048_RCOSC //!< Osc0 startup time: RCOsc periods. - -#define FOSC1 11289600 //!< Osc1 frequency: Hz -#define OSC1_STARTUP AVR32_PM_OSCCTRL1_STARTUP_2048_RCOSC //!< Osc1 startup time: RCOsc periods. - - -//! @} - - -/*! \name SDRAM Definitions - */ -//! @{ - -//! Part header file of used SDRAM(s). -#define SDRAM_PART_HDR "MT48LC16M16A2TG7E/mt48lc16m16a2tg7e.h" - -//! Data bus width to use the SDRAM(s) with (16 or 32 bits; always 16 bits on -//! UC3). -#define SDRAM_DBW 16 -//! @} - - -/*! \name USB Definitions - */ -//! @{ -//! Multiplexed pin used for USB_ID: AVR32_USBB_USB_ID_x_x. -//! To be selected according to the AVR32_USBB_USB_ID_x_x_PIN and -//! AVR32_USBB_USB_ID_x_x_FUNCTION definitions from . -#define AVR32_USBB_USB_ID_0_2_PIN 21 -#define AVR32_USBB_USB_ID_0_2_FUNCTION 2 -#define USB_ID AVR32_USBB_USB_ID_0_2 - -//! Multiplexed pin used for USB_VBOF: AVR32_USBB_USB_VBOF_x_x. -//! To be selected according to the AVR32_USBB_USB_VBOF_x_x_PIN and -//! AVR32_USBB_USB_VBOF_x_x_FUNCTION definitions from . -# define USB_VBOF AVR32_USBB_USB_VBOF_0_1 - - -//! Active level of the USB_VBOF output pin. -# define USB_VBOF_ACTIVE_LEVEL LOW - -//! USB overcurrent detection pin. -# define USB_OVERCURRENT_DETECT_PIN AVR32_PIN_PX15 - -//! @} - - -//! GPIO connection of the MAC PHY PWR_DOWN/INT signal. -# define MACB_INTERRUPT_PIN AVR32_PIN_PA26 - - - -//! Number of LEDs. -#define LED_COUNT 4 - -/*! \name GPIO Connections of LEDs - */ -//! @{ -# define LED0_GPIO AVR32_PIN_PB27 -# define LED1_GPIO AVR32_PIN_PB28 -# define LED2_GPIO AVR32_PIN_PA05 -# define LED3_GPIO AVR32_PIN_PA06 -//! @} - -/*! \name Color Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED_MONO0_GREEN LED0 -#define LED_MONO1_GREEN LED1 -#define LED_MONO2_GREEN LED2 -#define LED_MONO3_GREEN LED3 -//! @} - -/*! \name PWM Channels of LEDs - */ -//! @{ -#define LED0_PWM 4 -#define LED1_PWM 5 -#define LED2_PWM (-1) -#define LED3_PWM (-1) -//! @} - -/*! \name PWM Functions of LEDs - */ -//! @{ -/* TODO: Implement PWM functionality */ -#define LED0_PWM_FUNCTION (-1)//AVR32_PWM_0_FUNCTION -#define LED1_PWM_FUNCTION (-1)//AVR32_PWM_1_FUNCTION -#define LED2_PWM_FUNCTION (-1) -#define LED3_PWM_FUNCTION (-1) -//! @} - -//! External interrupt connection of touch sensor. -#define QT1081_EIC_EXTINT_PIN AVR32_EIC_EXTINT_1_PIN -#define QT1081_EIC_EXTINT_FUNCTION AVR32_EIC_EXTINT_1_FUNCTION -#define QT1081_EIC_EXTINT_IRQ AVR32_EIC_IRQ_1 -#define QT1081_EIC_EXTINT_INT AVR32_EIC_INT1 -/*! \name Touch sensor low power mode select - */ -#define QT1081_LP_MODE AVR32_PIN_PB29 - -/*! \name GPIO Connections of touch buttons - */ -//! @{ -#define QT1081_TOUCH_SENSOR_0 AVR32_PIN_PB22 -#define QT1081_TOUCH_SENSOR_0_PRESSED 1 -#define QT1081_TOUCH_SENSOR_1 AVR32_PIN_PB23 -#define QT1081_TOUCH_SENSOR_1_PRESSED 1 -#define QT1081_TOUCH_SENSOR_2 AVR32_PIN_PB24 -#define QT1081_TOUCH_SENSOR_2_PRESSED 1 -#define QT1081_TOUCH_SENSOR_3 AVR32_PIN_PB25 -#define QT1081_TOUCH_SENSOR_3_PRESSED 1 -#define QT1081_TOUCH_SENSOR_4 AVR32_PIN_PB26 -#define QT1081_TOUCH_SENSOR_4_PRESSED 1 - -#define QT1081_TOUCH_SENSOR_ENTER QT1081_TOUCH_SENSOR_4 -#define QT1081_TOUCH_SENSOR_ENTER_PRESSED QT1081_TOUCH_SENSOR_4_PRESSED -#define QT1081_TOUCH_SENSOR_LEFT QT1081_TOUCH_SENSOR_3 -#define QT1081_TOUCH_SENSOR_LEFT_PRESSED QT1081_TOUCH_SENSOR_3_PRESSED -#define QT1081_TOUCH_SENSOR_RIGHT QT1081_TOUCH_SENSOR_2 -#define QT1081_TOUCH_SENSOR_RIGHT_PRESSED QT1081_TOUCH_SENSOR_2_PRESSED -#define QT1081_TOUCH_SENSOR_UP QT1081_TOUCH_SENSOR_0 -#define QT1081_TOUCH_SENSOR_UP_PRESSED QT1081_TOUCH_SENSOR_0_PRESSED -#define QT1081_TOUCH_SENSOR_DOWN QT1081_TOUCH_SENSOR_1 -#define QT1081_TOUCH_SENSOR_DOWN_PRESSED QT1081_TOUCH_SENSOR_1_PRESSED -//! @} - -/*! \name SPI Connections of the AT45DBX Data Flash Memory - */ -//! @{ -#define AT45DBX_SPI (&AVR32_SPI0) -#define AT45DBX_SPI_NPCS 0 -#define AT45DBX_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define AT45DBX_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define AT45DBX_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define AT45DBX_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define AT45DBX_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define AT45DBX_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define AT45DBX_SPI_NPCS0_PIN AVR32_SPI0_NPCS_0_0_PIN -#define AT45DBX_SPI_NPCS0_FUNCTION AVR32_SPI0_NPCS_0_0_FUNCTION -//! @} - -/*! \name GPIO and SPI Connections of the SD/MMC Connector - */ -//! @{ -#define SD_MMC_CARD_DETECT_PIN AVR32_PIN_PA02 -#define SD_MMC_WRITE_PROTECT_PIN AVR32_PIN_PA18 -#define SD_MMC_SPI (&AVR32_SPI0) -#define SD_MMC_SPI_NPCS 1 -#define SD_MMC_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define SD_MMC_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define SD_MMC_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define SD_MMC_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define SD_MMC_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define SD_MMC_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define SD_MMC_SPI_NPCS_PIN AVR32_SPI0_NPCS_1_0_PIN -#define SD_MMC_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_1_0_FUNCTION -//! @} - - -/*! \name TWI expansion - */ -//! @{ -#define EXPANSION_TWI (&AVR32_TWI) -#define EXPANSION_RESET AVR32_PIN_PX16 -#define EXPANSION_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define EXPANSION_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define EXPANSION_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define EXPANSION_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION -//! @} - -/*! \name Wireless expansion - */ - -#define WEXPANSION_EXTINT_PIN AVR32_EIC_EXTINT_8_PIN -#define WEXPANSION_EXTINT_FUNCTION AVR32_EIC_EXTINT_8_FUNCTION -#define WEXPANSION_GPIO1 AVR32_PIN_PB30 -#define WEXPANSION_GPIO2 AVR32_PIN_PB31 - -#define WEXPANSION_SPI (&AVR32_SPI0) -#define WEXPANSION_SPI_NPCS 2 -#define WEXPANSION_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define WEXPANSION_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define WEXPANSION_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define WEXPANSION_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define WEXPANSION_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define WEXPANSION_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define WEXPANSION_SPI_NPCS_PIN AVR32_SPI0_NPCS_2_0_PIN -#define WEXPANSION_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_2_0_FUNCTION - -//! @} - -/*! \name ET024006DHU TFT display - */ -//! @{ - -#define ET024006DHU_TE_PIN AVR32_PIN_PX19 -#define ET024006DHU_RESET_PIN AVR32_PIN_PX22 -#define ET024006DHU_BL_PIN AVR32_PWM_6_PIN -#define ET024006DHU_BL_FUNCTION AVR32_PWM_6_FUNCTION -#define ET024006DHU_DNC_PIN AVR32_EBI_ADDR_21_1_PIN -#define ET024006DHU_DNC_FUNCTION AVR32_EBI_ADDR_21_1_FUNCTION -#define ET024006DHU_EBI_NCS_PIN AVR32_EBI_NCS_0_1_PIN -#define ET024006DHU_EBI_NCS_FUNCTION AVR32_EBI_NCS_0_1_FUNCTION - -//! @} -/*! \name Optional SPI connection to the TFT - */ -//! @{ - -#define ET024006DHU_SPI (&AVR32_SPI0) -#define ET024006DHU_SPI_NPCS 3 -#define ET024006DHU_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define ET024006DHU_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define ET024006DHU_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define ET024006DHU_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define ET024006DHU_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define ET024006DHU_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define ET024006DHU_SPI_NPCS_PIN AVR32_SPI1_NPCS_3_0_PIN -#define ET024006DHU_SPI_NPCS_FUNCTION AVR32_SPI1_NPCS_3_0_FUNCTION - -//! @} - - -/*! \name Audio amplifier connection to the DAC - */ -//! @{ - -#define TPA6130_ABDAC (&AVR32_ABDAC) - -#define TPA6130_DATA0_PIN AVR32_ABDAC_DATA_0_1_PIN -#define TPA6130_DATA0_FUNCTION AVR32_ABDAC_DATA_0_1_FUNCTION -#define TPA6130_DATAN0_PIN AVR32_ABDAC_DATAN_0_1_PIN -#define TPA6130_DATAN0_FUNCTION AVR32_ABDAC_DATAN_0_1_FUNCTION -#define TPA6130_DATA1_PIN AVR32_ABDAC_DATA_1_1_PIN -#define TPA6130_DATA1_FUNCTION AVR32_ABDAC_DATA_1_1_FUNCTION -#define TPA6130_DATAN1_PIN AVR32_ABDAC_DATAN_1_1_PIN -#define TPA6130_DATAN1_FUNCTION AVR32_ABDAC_DATAN_1_1_FUNCTION - -#define TPA6130_ABDAC_PDCA_PID AVR32_PDCA_PID_ABDAC_TX -#define TPA6130_ABDAC_PDCA_CHANNEL 0 -#define TPA6130_ABDAC_PDCA_IRQ AVR32_PDCA_IRQ_0 -#define TPA6130_ABDAC_PDCA_INT_LEVEL AVR32_INTC_INT3 - -#define TPA6130_TWI (&AVR32_TWI) -#define TPA6130_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define TPA6130_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define TPA6130_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define TPA6130_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION - -//! }@ -/*! \name TI TLV320AIC23B sound chip - */ -//! @{ -#define TLV320_SSC (&AVR32_SSC) -#define TLV320_SSC_TX_CLOCK_PIN AVR32_SSC_TX_CLOCK_0_PIN -#define TLV320_SSC_TX_CLOCK_FUNCTION AVR32_SSC_TX_CLOCK_0_FUNCTION -#define TLV320_SSC_TX_DATA_PIN AVR32_SSC_TX_DATA_0_PIN -#define TLV320_SSC_TX_DATA_FUNCTION AVR32_SSC_TX_DATA_0_FUNCTION -#define TLV320_SSC_TX_FRAME_SYNC_PIN AVR32_SSC_TX_FRAME_SYNC_0_PIN -#define TLV320_SSC_TX_FRAME_SYNC_FUNCTION AVR32_SSC_TX_FRAME_SYNC_0_FUNCTION - -#define TLV320_TWI (&AVR32_TWI) -#define TLV320_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define TLV320_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define TLV320_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define TLV320_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION - -#define TLV320_PM_GCLK_PIN AVR32_PM_GCLK_0_0_PIN -#define TLV320_PM_GCLK_FUNCTION AVR32_PM_GCLK_0_0_FUNCTION -//! @} - -////! \name SPI: Apple Authentication Chip Hardware Connections -////! @{ -#define IPOD_AUTH_CHIP_SPI (&AVR32_SPI0) -#define IPOD_AUTH_CHIP_SPI_IRQ AVR32_SPI0_IRQ -#define IPOD_AUTH_CHIP_SPI_NPCS 2 -#define IPOD_AUTH_CHIP_SPI_SCK_PIN AVR32_SPI0_SCK_0_0_PIN -#define IPOD_AUTH_CHIP_SPI_SCK_FUNCTION AVR32_SPI0_SCK_0_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_MISO_PIN AVR32_SPI0_MISO_0_0_PIN -#define IPOD_AUTH_CHIP_SPI_MISO_FUNCTION AVR32_SPI0_MISO_0_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_MOSI_PIN AVR32_SPI0_MOSI_0_0_PIN -#define IPOD_AUTH_CHIP_SPI_MOSI_FUNCTION AVR32_SPI0_MOSI_0_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_NPCS_PIN AVR32_SPI0_NPCS_2_0_PIN -#define IPOD_AUTH_CHIP_SPI_NPCS_FUNCTION AVR32_SPI0_NPCS_2_0_FUNCTION -#define IPOD_AUTH_CHIP_SPI_N_RESET_PIN AVR32_PIN_PB30 -#define IPOD_AUTH_CHIP_SPI_CP_READY_PIN AVR32_PIN_PB31 -//! }@ - -/*! \name Connections of the iPOD Authentication Coprocessor - */ -//! @{ - -#define IPOD_AUTH_CHIP_TWI (&AVR32_TWI) -#define IPOD_AUTH_CHIP_TWI_SCL_PIN AVR32_TWI_SCL_0_0_PIN -#define IPOD_AUTH_CHIP_TWI_SCL_FUNCTION AVR32_TWI_SCL_0_0_FUNCTION -#define IPOD_AUTH_CHIP_TWI_SDA_PIN AVR32_TWI_SDA_0_0_PIN -#define IPOD_AUTH_CHIP_TWI_SDA_FUNCTION AVR32_TWI_SDA_0_0_FUNCTION -#define IPOD_AUTH_CHIP_TWI_N_RESET_PIN AVR32_PIN_PX16 - -//! @} - -/*! \name USART connection to the UC3B board controller - */ -//! @{ - -#define USART0_RXD_PIN AVR32_USART0_RXD_0_0_PIN -#define USART0_RXD_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION -#define USART0_TXD_PIN AVR32_USART0_TXD_0_0_PIN -#define USART0_TXD_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION -#define USART0_RTS_PIN AVR32_USART0_RTS_0_0_PIN -#define USART0_RTS_FUNCTION AVR32_USART0_RTS_0_0_FUNCTION -#define USART0_CTS_PIN AVR32_USART0_CTS_0_0_PIN -#define USART0_CTS_FUNCTION AVR32_USART0_CTS_0_0_FUNCTION - -//! @} - -#define ADC_VEXT_PIN AVR32_ADC_AD_7_PIN -#define ADC_VEXT_FUNCTION AVR32_ADC_AD_7_FUNCTION - -/*! \name LCD Connections of the ET024006DHU display - */ -//! @{ -#define ET024006DHU_SMC_USE_NCS 0 -#define ET024006DHU_SMC_COMPONENT_CS "smc_et024006dhu.h" - -#define ET024006DHU_EBI_DATA_0 AVR32_EBI_DATA_0 -#define ET024006DHU_EBI_DATA_1 AVR32_EBI_DATA_1 -#define ET024006DHU_EBI_DATA_2 AVR32_EBI_DATA_2 -#define ET024006DHU_EBI_DATA_3 AVR32_EBI_DATA_3 -#define ET024006DHU_EBI_DATA_4 AVR32_EBI_DATA_4 -#define ET024006DHU_EBI_DATA_5 AVR32_EBI_DATA_5 -#define ET024006DHU_EBI_DATA_6 AVR32_EBI_DATA_6 -#define ET024006DHU_EBI_DATA_7 AVR32_EBI_DATA_7 -#define ET024006DHU_EBI_DATA_8 AVR32_EBI_DATA_8 -#define ET024006DHU_EBI_DATA_9 AVR32_EBI_DATA_9 -#define ET024006DHU_EBI_DATA_10 AVR32_EBI_DATA_10 -#define ET024006DHU_EBI_DATA_11 AVR32_EBI_DATA_11 -#define ET024006DHU_EBI_DATA_12 AVR32_EBI_DATA_12 -#define ET024006DHU_EBI_DATA_13 AVR32_EBI_DATA_13 -#define ET024006DHU_EBI_DATA_14 AVR32_EBI_DATA_14 -#define ET024006DHU_EBI_DATA_15 AVR32_EBI_DATA_15 - -#define ET024006DHU_EBI_ADDR_21 AVR32_EBI_ADDR_21_1 - -#define ET024006DHU_EBI_NWE AVR32_EBI_NWE0_0 -#define ET024006DHU_EBI_NRD AVR32_EBI_NRD_0 -#define ET024006DHU_EBI_NCS AVR32_EBI_NCS_0_1 -//! @} - - -#endif // !EVK1105_REVA - -#endif // _EVK1105_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c deleted file mode 100644 index 561652aebc3..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.c +++ /dev/null @@ -1,346 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1105 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1105 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include -#include "preprocessor.h" -#include "compiler.h" -#include "evk1105.h" -#include "led.h" - - -//! Structure describing LED hardware connections. -typedef const struct -{ - struct - { - U32 PORT; //!< LED GPIO port. - U32 PIN_MASK; //!< Bit-mask of LED pin in GPIO port. - } GPIO; //!< LED GPIO descriptor. - struct - { - S32 CHANNEL; //!< LED PWM channel (< 0 if N/A). - S32 FUNCTION; //!< LED pin PWM function (< 0 if N/A). - } PWM; //!< LED PWM descriptor. -} tLED_DESCRIPTOR; - - -//! Hardware descriptors of all LEDs. -static tLED_DESCRIPTOR LED_DESCRIPTOR[LED_COUNT] = -{ -#define INSERT_LED_DESCRIPTOR(LED_NO, unused) \ - { \ - {LED##LED_NO##_GPIO / 32, 1 << (LED##LED_NO##_GPIO % 32)},\ - {LED##LED_NO##_PWM, LED##LED_NO##_PWM_FUNCTION } \ - }, - MREPEAT(LED_COUNT, INSERT_LED_DESCRIPTOR, ~) -#undef INSERT_LED_DESCRIPTOR -}; - - -//! Saved state of all LEDs. -static volatile U32 LED_State = (1 << LED_COUNT) - 1; - - -U32 LED_Read_Display(void) -{ - return LED_State; -} - - -void LED_Display(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor; - volatile avr32_gpio_port_t *led_gpio_port; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - LED_State = leds; - - // For all LEDs... - for (led_descriptor = &LED_DESCRIPTOR[0]; - led_descriptor < LED_DESCRIPTOR + LED_COUNT; - led_descriptor++) - { - // Set the LED to the requested state. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - } -} - - -U32 LED_Read_Display_Mask(U32 mask) -{ - return Rd_bits(LED_State, mask); -} - - -void LED_Display_Mask(U32 mask, U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - mask &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Wr_bits(LED_State, mask, leds); - - // While there are specified LEDs left to manage... - while (mask) - { - // Select the next specified LED and set it to the requested state. - led_shift = 1 + ctz(mask); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - leds >>= led_shift - 1; - if (leds & 1) - { - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= 1; - mask >>= led_shift; - } -} - - -Bool LED_Test(U32 leds) -{ - return Tst_bits(LED_State, leds); -} - - -void LED_Off(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Clr_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it off. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrs = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_On(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Set_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and turn it on. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrc = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -void LED_Toggle(U32 leds) -{ - // Use the LED descriptors to get the connections of a given LED to the MCU. - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // Make sure only existing LEDs are specified. - leds &= (1 << LED_COUNT) - 1; - - // Update the saved state of all LEDs with the requested changes. - Tgl_bits(LED_State, leds); - - // While there are specified LEDs left to manage... - while (leds) - { - // Select the next specified LED and toggle it. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - led_gpio_port->ovrt = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->oders = led_descriptor->GPIO.PIN_MASK; - led_gpio_port->gpers = led_descriptor->GPIO.PIN_MASK; - leds >>= led_shift; - } -} - - -U32 LED_Read_Display_Field(U32 field) -{ - return Rd_bitfield(LED_State, field); -} - - -void LED_Display_Field(U32 field, U32 leds) -{ - // Move the bit-field to the appropriate position for the bit-mask. - LED_Display_Mask(field, leds << ctz(field)); -} - - -U8 LED_Get_Intensity(U32 led) -{ - tLED_DESCRIPTOR *led_descriptor; - - // Check that the argument value is valid. - led = ctz(led); - led_descriptor = &LED_DESCRIPTOR[led]; - if (led >= LED_COUNT || led_descriptor->PWM.CHANNEL < 0) return 0; - - // Return the duty cycle value if the LED PWM channel is enabled, else 0. - return (AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL)) ? - AVR32_PWM.channel[led_descriptor->PWM.CHANNEL].cdty : 0; -} - - -void LED_Set_Intensity(U32 leds, U8 intensity) -{ - tLED_DESCRIPTOR *led_descriptor = &LED_DESCRIPTOR[0] - 1; - volatile avr32_pwm_channel_t *led_pwm_channel; - volatile avr32_gpio_port_t *led_gpio_port; - U8 led_shift; - - // For each specified LED... - for (leds &= (1 << LED_COUNT) - 1; leds; leds >>= led_shift) - { - // Select the next specified LED and check that it has a PWM channel. - led_shift = 1 + ctz(leds); - led_descriptor += led_shift; - if (led_descriptor->PWM.CHANNEL < 0) continue; - - // Initialize or update the LED PWM channel. - led_pwm_channel = &AVR32_PWM.channel[led_descriptor->PWM.CHANNEL]; - if (!(AVR32_PWM.sr & (1 << led_descriptor->PWM.CHANNEL))) - { - led_pwm_channel->cmr = (AVR32_PWM_CPRE_MCK << AVR32_PWM_CPRE_OFFSET) & - ~(AVR32_PWM_CALG_MASK | - AVR32_PWM_CPOL_MASK | - AVR32_PWM_CPD_MASK); - led_pwm_channel->cprd = 0x000000FF; - led_pwm_channel->cdty = intensity; - AVR32_PWM.ena = 1 << led_descriptor->PWM.CHANNEL; - } - else - { - AVR32_PWM.isr; - while (!(AVR32_PWM.isr & (1 << led_descriptor->PWM.CHANNEL))); - led_pwm_channel->cupd = intensity; - } - - // Switch the LED pin to its PWM function. - led_gpio_port = &AVR32_GPIO.port[led_descriptor->GPIO.PORT]; - if (led_descriptor->PWM.FUNCTION & 0x1) - { - led_gpio_port->pmr0s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr0c = led_descriptor->GPIO.PIN_MASK; - } - if (led_descriptor->PWM.FUNCTION & 0x2) - { - led_gpio_port->pmr1s = led_descriptor->GPIO.PIN_MASK; - } - else - { - led_gpio_port->pmr1c = led_descriptor->GPIO.PIN_MASK; - } - led_gpio_port->gperc = led_descriptor->GPIO.PIN_MASK; - } -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h deleted file mode 100644 index 7766b6a766b..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/EVK1105/led.h +++ /dev/null @@ -1,187 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AT32UC3A EVK1105 board LEDs support package. - * - * This file contains definitions and services related to the LED features of - * the EVK1105 board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 AT32UC3A devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _LED_H_ -#define _LED_H_ - -#include "compiler.h" - - -/*! \name Identifiers of LEDs to Use with LED Functions - */ -//! @{ -#define LED0 0x01 -#define LED1 0x02 -#define LED2 0x04 -#define LED3 0x08 -//! @} - - -/*! \brief Gets the last state of all LEDs set through the LED API. - * - * \return State of all LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display(void); - -/*! \brief Sets the state of all LEDs. - * - * \param leds New state of all LEDs (1 bit per LED). - * - * \note The pins of all LEDs are set to GPIO output mode. - */ -extern void LED_Display(U32 leds); - -/*! \brief Gets the last state of the specified LEDs set through the LED API. - * - * \param mask LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Mask(U32 mask); - -/*! \brief Sets the state of the specified LEDs. - * - * \param mask LEDs of which to set the state (1 bit per LED). - * - * \param leds New state of the specified LEDs (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Mask(U32 mask, U32 leds); - -/*! \brief Tests the last state of the specified LEDs set through the LED API. - * - * \param leds LEDs of which to test the state (1 bit per LED). - * - * \return \c TRUE if at least one of the specified LEDs has a state on, else - * \c FALSE. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern Bool LED_Test(U32 leds); - -/*! \brief Turns off the specified LEDs. - * - * \param leds LEDs to turn off (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Off(U32 leds); - -/*! \brief Turns on the specified LEDs. - * - * \param leds LEDs to turn on (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_On(U32 leds); - -/*! \brief Toggles the specified LEDs. - * - * \param leds LEDs to toggle (1 bit per LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Toggle(U32 leds); - -/*! \brief Gets as a bit-field the last state of the specified LEDs set through - * the LED API. - * - * \param field LEDs of which to get the state (1 bit per LED). - * - * \return State of the specified LEDs (1 bit per LED, beginning with the first - * specified LED). - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U32 LED_Read_Display_Field(U32 field); - -/*! \brief Sets as a bit-field the state of the specified LEDs. - * - * \param field LEDs of which to set the state (1 bit per LED). - * \param leds New state of the specified LEDs (1 bit per LED, beginning with - * the first specified LED). - * - * \note The pins of the specified LEDs are set to GPIO output mode. - */ -extern void LED_Display_Field(U32 field, U32 leds); - -/*! \brief Gets the intensity of the specified LED. - * - * \param led LED of which to get the intensity (1 bit per LED; only the least - * significant set bit is used). - * - * \return Intensity of the specified LED (0x00 to 0xFF). - * - * \warning The PWM channel of the specified LED is supposed to be used only by - * this module. - * - * \note The GPIO pin configuration of all LEDs is left unchanged. - */ -extern U8 LED_Get_Intensity(U32 led); - -/*! \brief Sets the intensity of the specified LEDs. - * - * \param leds LEDs of which to set the intensity (1 bit per LED). - * \param intensity New intensity of the specified LEDs (0x00 to 0xFF). - * - * \warning The PWM channels of the specified LEDs are supposed to be used only - * by this module. - * - * \note The pins of the specified LEDs are set to PWM output mode. - */ -extern void LED_Set_Intensity(U32 leds, U8 intensity); - - -#endif // _LED_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h deleted file mode 100644 index 78ee91e75aa..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h +++ /dev/null @@ -1,120 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Standard board header file. - * - * This file includes the appropriate board header file according to the - * defined board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _BOARD_H_ -#define _BOARD_H_ - -#include - -/*! \name Base Boards - */ -//! @{ -#define EVK1100 1 //!< AT32UC3A EVK1100 board. -#define EVK1101 2 //!< AT32UC3B EVK1101 board. -#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board. -#define EVK1104 4 //!< AT32UC3A3 EVK1104 board. -#define EVK1105 5 //!< AT32UC3A EVK1105 board. -#define STK1000 6 //!< AT32AP7000 STK1000 board. -#define NGW100 7 //!< AT32AP7000 NGW100 board. -#define STK600_RCUC3L0 8 //!< STK600 RCUC3L0 board. -#define UC3L_EK 9 //!< AT32UC3L-EK board. -#define USER_BOARD 99 //!< User-reserved board (if any). -//! @} - -/*! \name Extension Boards - */ -//! @{ -#define EXT1102 1 //!< AT32UC3B EXT1102 board. -#define MC300 2 //!< AT32UC3 MC300 board. -#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any). -//! @} - -#if BOARD == EVK1100 - #include "EVK1100/evk1100.h" -#elif BOARD == EVK1101 - #include "EVK1101/evk1101.h" -#elif BOARD == UC3C_EK - #include "UC3C_EK/uc3c_ek.h" -#elif BOARD == EVK1104 - #include "EVK1104/evk1104.h" -#elif BOARD == EVK1105 - #include "EVK1105/evk1105.h" -#elif BOARD == STK1000 - #include "STK1000/stk1000.h" -#elif BOARD == NGW100 - #include "NGW100/ngw100.h" -#elif BOARD == STK600_RCUC3L0 - #include "STK600/RCUC3L0/stk600_rcuc3l0.h" -#elif BOARD == UC3L_EK - #include "UC3L_EK/uc3l_ek.h" -#elif BOARD == ARDUINO - #include "ARDUINO/arduino.h" -#else - #error No known AVR32 board defined -#endif - -#if (defined EXT_BOARD) - #if EXT_BOARD == EXT1102 - #include "EXT1102/ext1102.h" - #elif EXT_BOARD == MC300 - #include "MC300/mc300.h" - #elif EXT_BOARD == USER_EXT_BOARD - // User-reserved area: #include the header file of your extension board here - // (if any). - #endif -#endif - - -#ifndef FRCOSC - #define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< Default RCOsc frequency. -#endif - - -#endif // _BOARD_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.ori b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.ori deleted file mode 100644 index 30052c8ab94..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/BOARDS/board.h.ori +++ /dev/null @@ -1,121 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Standard board header file. - * - * This file includes the appropriate board header file according to the - * defined board. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _BOARD_H_ -#define _BOARD_H_ - -#include - -/*! \name Base Boards - */ -//! @{ -#define EVK1100 1 //!< AT32UC3A EVK1100 board. -#define EVK1101 2 //!< AT32UC3B EVK1101 board. -#define UC3C_EK 3 //!< AT32UC3C UC3C_EK board. -#define EVK1104 4 //!< AT32UC3A3 EVK1104 board. -#define EVK1105 5 //!< AT32UC3A EVK1105 board. -#define STK1000 6 //!< AT32AP7000 STK1000 board. -#define NGW100 7 //!< AT32AP7000 NGW100 board. -#define STK600_RCUC3L0 8 //!< STK600 RCUC3L0 board. -#define UC3L_EK 9 //!< AT32UC3L-EK board. -#define USER_BOARD 99 //!< User-reserved board (if any). -//! @} - -/*! \name Extension Boards - */ -//! @{ -#define EXT1102 1 //!< AT32UC3B EXT1102 board. -#define MC300 2 //!< AT32UC3 MC300 board. -#define USER_EXT_BOARD 99 //!< User-reserved extension board (if any). -//! @} - -#if BOARD == EVK1100 - #include "EVK1100/evk1100.h" -#elif BOARD == EVK1101 - #include "EVK1101/evk1101.h" -#elif BOARD == UC3C_EK - #include "UC3C_EK/uc3c_ek.h" -#elif BOARD == EVK1104 - #include "EVK1104/evk1104.h" -#elif BOARD == EVK1105 - #include "EVK1105/evk1105.h" -#elif BOARD == STK1000 - #include "STK1000/stk1000.h" -#elif BOARD == NGW100 - #include "NGW100/ngw100.h" -#elif BOARD == STK600_RCUC3L0 - #include "STK600/RCUC3L0/stk600_rcuc3l0.h" -#elif BOARD == UC3L_EK - #include "UC3L_EK/uc3l_ek.h" -#elif BOARD == USER_BOARD - // User-reserved area: #include the header file of your board here (if any). - #include "user_board.h" -#else - #error No known AVR32 board defined -#endif - -#if (defined EXT_BOARD) - #if EXT_BOARD == EXT1102 - #include "EXT1102/ext1102.h" - #elif EXT_BOARD == MC300 - #include "MC300/mc300.h" - #elif EXT_BOARD == USER_EXT_BOARD - // User-reserved area: #include the header file of your extension board here - // (if any). - #endif -#endif - - -#ifndef FRCOSC - #define FRCOSC AVR32_PM_RCOSC_FREQUENCY //!< Default RCOsc frequency. -#endif - - -#endif // _BOARD_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c deleted file mode 100644 index d4b1b730fef..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.c +++ /dev/null @@ -1,672 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Management of the AT45DBX data flash controller through SPI. - * - * This file manages the accesses to the AT45DBX data flash components. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -//_____ I N C L U D E S ___________________________________________________ - -#include "conf_access.h" - - -#if AT45DBX_MEM == ENABLE - -#include "compiler.h" -#include "board.h" -#include "gpio.h" -#include "spi.h" -#include "conf_at45dbx.h" -#include "at45dbx.h" -#include "printf-stdarg.h" - -#if AT45DBX_MEM_CNT > 4 - #error AT45DBX_MEM_CNT must not exceed 4 -#endif - - -//_____ D E F I N I T I O N S ______________________________________________ - -/*! \name AT45DBX Group A Commands - */ -//! @{ -#define AT45DBX_CMDA_RD_PAGE 0xD2 //!< Main Memory Page Read (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_ARRAY_LEG 0xE8 //!< Continuous Array Read, Legacy Command (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_ARRAY_LF_SM 0x03 //!< Continuous Array Read, Low-Frequency Mode (Serial Mode). -#define AT45DBX_CMDA_RD_ARRAY_AF_SM 0x0B //!< Continuous Array Read, Any-Frequency Mode (Serial Mode). -#define AT45DBX_CMDA_RD_SECTOR_PROT_REG 0x32 //!< Read Sector Protection Register (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_SECTOR_LKDN_REG 0x35 //!< Read Sector Lockdown Register (Serial/8-bit Mode). -#define AT45DBX_CMDA_RD_SECURITY_REG 0x77 //!< Read Security Register (Serial/8-bit Mode). -//! @} - -/*! \name AT45DBX Group B Commands - */ -//! @{ -#define AT45DBX_CMDB_ER_PAGE 0x81 //!< Page Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_ER_BLOCK 0x50 //!< Block Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_ER_SECTOR 0x7C //!< Sector Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_ER_CHIP 0xC794809A //!< Chip Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_XFR_PAGE_TO_BUF1 0x53 //!< Main Memory Page to Buffer 1 Transfer (Serial/8-bit Mode). -#define AT45DBX_CMDB_XFR_PAGE_TO_BUF2 0x55 //!< Main Memory Page to Buffer 2 Transfer (Serial/8-bit Mode). -#define AT45DBX_CMDB_CMP_PAGE_TO_BUF1 0x60 //!< Main Memory Page to Buffer 1 Compare (Serial/8-bit Mode). -#define AT45DBX_CMDB_CMP_PAGE_TO_BUF2 0x61 //!< Main Memory Page to Buffer 2 Compare (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF1_TO_PAGE_ER 0x83 //!< Buffer 1 to Main Memory Page Program with Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF2_TO_PAGE_ER 0x86 //!< Buffer 2 to Main Memory Page Program with Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF1_TO_PAGE 0x88 //!< Buffer 1 to Main Memory Page Program without Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_BUF2_TO_PAGE 0x89 //!< Buffer 2 to Main Memory Page Program without Built-in Erase (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_PAGE_TH_BUF1 0x82 //!< Main Memory Page Program through Buffer 1 (Serial/8-bit Mode). -#define AT45DBX_CMDB_PR_PAGE_TH_BUF2 0x85 //!< Main Memory Page Program through Buffer 2 (Serial/8-bit Mode). -#define AT45DBX_CMDB_RWR_PAGE_TH_BUF1 0x58 //!< Auto Page Rewrite through Buffer 1 (Serial/8-bit Mode). -#define AT45DBX_CMDB_RWR_PAGE_TH_BUF2 0x59 //!< Auto Page Rewrite through Buffer 2 (Serial/8-bit Mode). -//! @} - -/*! \name AT45DBX Group C Commands - */ -//! @{ -#define AT45DBX_CMDC_RD_BUF1_LF_SM 0xD1 //!< Buffer 1 Read, Low-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF2_LF_SM 0xD3 //!< Buffer 2 Read, Low-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF1_AF_SM 0xD4 //!< Buffer 1 Read, Any-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF2_AF_SM 0xD6 //!< Buffer 2 Read, Any-Frequency Mode (Serial Mode). -#define AT45DBX_CMDC_RD_BUF1_AF_8M 0x54 //!< Buffer 1 Read, Any-Frequency Mode (8-bit Mode). -#define AT45DBX_CMDC_RD_BUF2_AF_8M 0x56 //!< Buffer 2 Read, Any-Frequency Mode (8-bit Mode). -#define AT45DBX_CMDC_WR_BUF1 0x84 //!< Buffer 1 Write (Serial/8-bit Mode). -#define AT45DBX_CMDC_WR_BUF2 0x87 //!< Buffer 2 Write (Serial/8-bit Mode). -#define AT45DBX_CMDC_RD_STATUS_REG 0xD7 //!< Status Register Read (Serial/8-bit Mode). -#define AT45DBX_CMDC_RD_MNFCT_DEV_ID_SM 0x9F //!< Manufacturer and Device ID Read (Serial Mode). -//! @} - -/*! \name AT45DBX Group D Commands - */ -//! @{ -#define AT45DBX_CMDD_EN_SECTOR_PROT 0x3D2A7FA9 //!< Enable Sector Protection (Serial/8-bit Mode). -#define AT45DBX_CMDD_DIS_SECTOR_PROT 0x3D2A7F9A //!< Disable Sector Protection (Serial/8-bit Mode). -#define AT45DBX_CMDD_ER_SECTOR_PROT_REG 0x3D2A7FCF //!< Erase Sector Protection Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_PR_SECTOR_PROT_REG 0x3D2A7FFC //!< Program Sector Protection Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_LKDN_SECTOR 0x3D2A7F30 //!< Sector Lockdown (Serial/8-bit Mode). -#define AT45DBX_CMDD_PR_SECURITY_REG 0x9B000000 //!< Program Security Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_PR_CONF_REG 0x3D2A80A6 //!< Program Configuration Register (Serial/8-bit Mode). -#define AT45DBX_CMDD_DEEP_PWR_DN 0xB9 //!< Deep Power-down (Serial/8-bit Mode). -#define AT45DBX_CMDD_RSM_DEEP_PWR_DN 0xAB //!< Resume from Deep Power-down (Serial/8-bit Mode). -//! @} - - -/*! \name Bit-Masks and Values for the Status Register - */ -//! @{ -#define AT45DBX_MSK_BUSY 0x80 //!< Busy status bit-mask. -#define AT45DBX_BUSY 0x00 //!< Busy status value (0x00 when busy, 0x80 when ready). -#define AT45DBX_MSK_DENSITY 0x3C //!< Device density bit-mask. -//! @} -#if AT45DBX_MEM_SIZE == AT45DBX_1MB - -/*! \name AT45DB081 Memories - */ -//! @{ -#define AT45DB021D_DENSITY 0x14 //!< Device density value. -#define AT45DBX_DENSITY 0x24 //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 9 //!< Address bits for byte position within buffer. - -//! @} -#elif AT45DBX_MEM_SIZE == AT45DBX_2MB -/*! \name AT45DB021D Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x21 //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer. - -//! @} -#if 0 -/*! \name AT45DB161 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x2C //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer. - -//! @} -#endif - -#elif AT45DBX_MEM_SIZE == AT45DBX_4MB - -/*! \name AT45DB321 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x34 //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 10 //!< Address bits for byte position within buffer. - -//! @} - -#elif AT45DBX_MEM_SIZE == AT45DBX_8MB - -/*! \name AT45DB642 Memories - */ -//! @{ -#define AT45DBX_DENSITY 0x3C //!< Device density value. -#define AT45DBX_BYTE_ADDR_BITS 11 //!< Address bits for byte position within buffer. - - -//! @} - -#else - #error AT45DBX_MEM_SIZE is not defined to a supported value -#endif - - - -//! Address bits for page selection. -#define AT45DBX_PAGE_ADDR_BITS (AT45DBX_MEM_SIZE - AT45DBX_PAGE_BITS) - -//! Number of bits for addresses within pages. -#define AT45DBX_PAGE_BITS (AT45DBX_BYTE_ADDR_BITS - 1) - -//! Page size in bytes. -#define AT45DBX_PAGE_SIZE (1 << AT45DBX_PAGE_BITS) - -//! Bit-mask for byte position within buffer in \ref gl_ptr_mem. -#define AT45DBX_MSK_PTR_BYTE ((1 << AT45DBX_PAGE_BITS) - 1) - -//! Bit-mask for page selection in \ref gl_ptr_mem. -#define AT45DBX_MSK_PTR_PAGE (((1 << AT45DBX_PAGE_ADDR_BITS) - 1) << AT45DBX_PAGE_BITS) - -//! Bit-mask for byte position within sector in \ref gl_ptr_mem. -#define AT45DBX_MSK_PTR_SECTOR ((1 << AT45DBX_SECTOR_BITS) - 1) - - -/*! \brief Sends a dummy byte through SPI. - */ -#define spi_write_dummy() spi_write(AT45DBX_SPI, 0xFF) - - -//! Boolean indicating whether memory is in busy state. -static Bool at45dbx_busy; - -//! Memory data pointer. -static U32 gl_ptr_mem; - -//! Sector buffer. -static U8 sector_buf[AT45DBX_SECTOR_SIZE]; - - -/*! \name Control Functions - */ -//! @{ - - -Bool at45dbx_init(spi_options_t spiOptions, unsigned int pba_hz) -{ - // Setup SPI registers according to spiOptions. - for (spiOptions.reg = AT45DBX_SPI_FIRST_NPCS; - spiOptions.reg < AT45DBX_SPI_FIRST_NPCS + AT45DBX_MEM_CNT; - spiOptions.reg++) - { - if (spi_setupChipReg(AT45DBX_SPI, &spiOptions, pba_hz) != SPI_OK) return KO; - } - - // Memory ready. - at45dbx_busy = FALSE; - - return OK; -} - - -/*! \brief Selects or unselects a DF memory. - * - * \param memidx Memory ID of DF to select or unselect. - * \param bSelect Boolean indicating whether the DF memory has to be selected. - */ -static void at45dbx_chipselect_df(U8 memidx, Bool bSelect) -{ - if (bSelect) - { - // Select SPI chip. - spi_selectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx); - } - else - { - // Unselect SPI chip. - spi_unselectChip(AT45DBX_SPI, AT45DBX_SPI_FIRST_NPCS + memidx); - } -} - - -Bool at45dbx_mem_check(void) -{ - U8 df; - U16 status = 0; - - // DF memory check. - for (df = 0; df < AT45DBX_MEM_CNT; df++) - { - // Select the DF memory to check. - at45dbx_chipselect_df(df, TRUE); - - // Send the Status Register Read command. - spi_write(AT45DBX_SPI, AT45DBX_CMDC_RD_STATUS_REG); - - // Send a dummy byte to read the status register. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &status); - - // Unselect the checked DF memory. - at45dbx_chipselect_df(df, FALSE); - - // Unexpected device density value. - if ((status & AT45DBX_MSK_DENSITY) < AT45DB021D_DENSITY) - { - printk("Unexpected device density value: %d (0x%x)\n", (status & AT45DBX_MSK_DENSITY), status); - return KO; - } - } - - return OK; -} - - -/*! \brief Waits until the DF is ready. - */ -static void at45dbx_wait_ready(void) -{ - U16 status; - - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Send the Status Register Read command. - spi_write(AT45DBX_SPI, AT45DBX_CMDC_RD_STATUS_REG); - - // Read the status register until the DF is ready. - do - { - // Send a dummy byte to read the status register. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &status); - } while ((status & AT45DBX_MSK_BUSY) == AT45DBX_BUSY); - - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); -} - - -Bool at45dbx_read_open(U32 sector) -{ - U32 addr; - - // Set the global memory pointer to a byte address. - gl_ptr_mem = sector << AT45DBX_SECTOR_BITS; // gl_ptr_mem = sector * AT45DBX_SECTOR_SIZE. - - // If the DF memory is busy, wait until it's ready. - if (at45dbx_busy) at45dbx_wait_ready(); - at45dbx_busy = FALSE; - - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Initiate a page read at a given sector. - - // Send the Main Memory Page Read command. - spi_write(AT45DBX_SPI, AT45DBX_CMDA_RD_PAGE); - - // Send the three address bytes, which comprise: - // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits; - // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be read; - // - then AT45DBX_BYTE_ADDR_BITS bits specifying the starting byte address within that page. - // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local - // DF addressing. They are used for DF discrimination when there are several DFs. - addr = (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS) | - Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE); - spi_write(AT45DBX_SPI, LSB2W(addr)); - spi_write(AT45DBX_SPI, LSB1W(addr)); - spi_write(AT45DBX_SPI, LSB0W(addr)); - - // Send 32 don't care clock cycles to initialize the read operation. - spi_write_dummy(); - spi_write_dummy(); - spi_write_dummy(); - spi_write_dummy(); - - return OK; -} - - -void at45dbx_read_close(void) -{ - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory ready. - at45dbx_busy = FALSE; -} - - -Bool at45dbx_write_open(U32 sector) -{ - U32 addr; - - // Set the global memory pointer to a byte address. - gl_ptr_mem = sector << AT45DBX_SECTOR_BITS; // gl_ptr_mem = sector * AT45DBX_SECTOR_SIZE. - - // If the DF memory is busy, wait until it's ready. - if (at45dbx_busy) at45dbx_wait_ready(); - at45dbx_busy = FALSE; - -#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Transfer the content of the current page to buffer 1. - - // Send the Main Memory Page to Buffer 1 Transfer command. - spi_write(AT45DBX_SPI, AT45DBX_CMDB_XFR_PAGE_TO_BUF1); - - // Send the three address bytes, which comprise: - // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits; - // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be read; - // - then AT45DBX_BYTE_ADDR_BITS don't care bits. - // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local - // DF addressing. They are used for DF discrimination when there are several DFs. - addr = Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS; - spi_write(AT45DBX_SPI, LSB2W(addr)); - spi_write(AT45DBX_SPI, LSB1W(addr)); - spi_write(AT45DBX_SPI, LSB0W(addr)); - - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Wait for end of page transfer. - at45dbx_wait_ready(); -#endif - - // Select the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, TRUE); - - // Initiate a page write at a given sector. - - // Send the Main Memory Page Program through Buffer 1 command. - spi_write(AT45DBX_SPI, AT45DBX_CMDB_PR_PAGE_TH_BUF1); - - // Send the three address bytes, which comprise: - // - (24 - (AT45DBX_PAGE_ADDR_BITS + AT45DBX_BYTE_ADDR_BITS)) reserved bits; - // - then AT45DBX_PAGE_ADDR_BITS bits specifying the page in main memory to be written; - // - then AT45DBX_BYTE_ADDR_BITS bits specifying the starting byte address within that page. - // NOTE: The bits of gl_ptr_mem above the AT45DBX_MEM_SIZE bits are useless for the local - // DF addressing. They are used for DF discrimination when there are several DFs. - addr = (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_PAGE) << AT45DBX_BYTE_ADDR_BITS) | - Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE); - spi_write(AT45DBX_SPI, LSB2W(addr)); - spi_write(AT45DBX_SPI, LSB1W(addr)); - spi_write(AT45DBX_SPI, LSB0W(addr)); - - return OK; -} - - -void at45dbx_write_close(void) -{ - // While end of logical sector not reached, zero-fill remaining memory bytes. - while (Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_SECTOR)) - { - spi_write(AT45DBX_SPI, 0x00); - gl_ptr_mem++; - } - - // Unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; -} - - -//! @} - - -/*! \name Single-Byte Access Functions - */ -//! @{ - - -U8 at45dbx_read_byte(void) -{ - U16 data; - - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously finished a page read. - // => We have to access the next page. - - // Memory ready. - at45dbx_busy = FALSE; - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_read_open input parameter is a sector. - at45dbx_read_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Send a dummy byte to read the next data byte. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &data); - gl_ptr_mem++; - - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) - { - // unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return data; -} - - -Bool at45dbx_write_byte(U8 b) -{ - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously launched a page programming. - // => We have to access the next page. - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_write_open input parameter is a sector. - at45dbx_write_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Write the next data byte. - spi_write(AT45DBX_SPI, b); - gl_ptr_mem++; - - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) - { - // unselect the DF memory gl_ptr_mem points to in order to program the page. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return OK; -} - - -//! @} - - -/*! \name Multiple-Sector Access Functions - */ -//! @{ - - -Bool at45dbx_read_multiple_sector(U16 nb_sector) -{ - while (nb_sector--) - { - // Read the next sector. - at45dbx_read_sector_2_ram(sector_buf); - at45dbx_read_multiple_sector_callback(sector_buf); - } - - return OK; -} - - -Bool at45dbx_write_multiple_sector(U16 nb_sector) -{ - while (nb_sector--) - { - // Write the next sector. - at45dbx_write_multiple_sector_callback(sector_buf); - at45dbx_write_sector_from_ram(sector_buf); - } - - return OK; -} - - -//! @} - - -/*! \name Single-Sector Access Functions - */ -//! @{ - - -Bool at45dbx_read_sector_2_ram(void *ram) -{ - U8 *_ram = ram; - U16 i; - U16 data; - - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously finished a page read. - // => We have to access the next page. - - // Memory ready. - at45dbx_busy = FALSE; - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_read_open input parameter is a sector. - at45dbx_read_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Read the next sector. - for (i = AT45DBX_SECTOR_SIZE; i; i--) - { - // Send a dummy byte to read the next data byte. - spi_write_dummy(); - spi_read(AT45DBX_SPI, &data); - *_ram++ = data; - } - - // Update the memory pointer. - gl_ptr_mem += AT45DBX_SECTOR_SIZE; - -#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) -#endif - { - // unselect the DF memory gl_ptr_mem points to. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return OK; -} - - -Bool at45dbx_write_sector_from_ram(const void *ram) -{ - const U8 *_ram = ram; - U16 i; - - // Memory busy. - if (at45dbx_busy) - { - // Being here, we know that we previously launched a page programming. - // => We have to access the next page. - - // Eventually select the next DF and open the next page. - // NOTE: at45dbx_write_open input parameter is a sector. - at45dbx_write_open(gl_ptr_mem >> AT45DBX_SECTOR_BITS); // gl_ptr_mem / AT45DBX_SECTOR_SIZE. - } - - // Write the next sector. - for (i = AT45DBX_SECTOR_SIZE; i; i--) - { - // Write the next data byte. - spi_write(AT45DBX_SPI, *_ram++); - } - - // Update the memory pointer. - gl_ptr_mem += AT45DBX_SECTOR_SIZE; - -#if AT45DBX_PAGE_SIZE > AT45DBX_SECTOR_SIZE - // If end of page reached, - if (!Rd_bitfield(gl_ptr_mem, AT45DBX_MSK_PTR_BYTE)) -#endif - { - // unselect the DF memory gl_ptr_mem points to in order to program the page. - at45dbx_chipselect_df(gl_ptr_mem >> AT45DBX_MEM_SIZE, FALSE); - - // Memory busy. - at45dbx_busy = TRUE; - } - - return OK; -} - - -//! @} - - -#endif // AT45DBX_MEM == ENABLE diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h deleted file mode 100644 index 5816b618b97..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx.h +++ /dev/null @@ -1,269 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Management of the AT45DBX data flash controller through SPI. - * - * This file manages the accesses to the AT45DBX data flash components. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _AT45DBX_H_ -#define _AT45DBX_H_ - - -#include "conf_access.h" - -#if AT45DBX_MEM == DISABLE - #error at45dbx.h is #included although AT45DBX_MEM is disabled -#endif - - -#include "spi.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -/*! \name Available AT45DBX Sizes - * - * Number of address bits of available AT45DBX data flash memories. - * - * \note Only memories with page sizes of at least 512 bytes (sector size) are - * supported. - */ -//! @{ -#define AT45DBX_1MB 20 -#define AT45DBX_2MB 21 -#define AT45DBX_4MB 22 -#define AT45DBX_8MB 23 -//! @} - -// AT45DBX_1MB -#define AT45DBX_SECTOR_BITS 8 //! Number of bits for addresses within sectors. -// AT45DBX_2MB AT45DBX_4MB AT45DBX_8MB -//#define AT45DBX_SECTOR_BITS 9 //! Number of bits for addresses within sectors. - -//! Sector size in bytes. -#define AT45DBX_SECTOR_SIZE (1 << AT45DBX_SECTOR_BITS) - -//_____ D E C L A R A T I O N S ____________________________________________ - -/*! \name Control Functions - */ -//! @{ - -/*! \brief Initializes the data flash controller and the SPI channel by which - * the DF is controlled. - * - * \param spiOptions Initialization options of the DF SPI channel. - * \param pba_hz SPI module input clock frequency (PBA clock, Hz). - * - * \retval OK Success. - * \retval KO Failure. - */ -extern Bool at45dbx_init(spi_options_t spiOptions, unsigned int pba_hz); - -/*! \brief Performs a memory check on all DFs. - * - * \retval OK Success. - * \retval KO Failure. - */ -extern Bool at45dbx_mem_check(void); - -/*! \brief Opens a DF memory in read mode at a given sector. - * - * \param sector Start sector. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note Sector may be page-unaligned (depending on the DF page size). - */ -extern Bool at45dbx_read_open(U32 sector); - -/*! \brief Unselects the current DF memory. - */ -extern void at45dbx_read_close(void); - -/*! \brief This function opens a DF memory in write mode at a given sector. - * - * \param sector Start sector. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note Sector may be page-unaligned (depending on the DF page size). - * - * \note If \ref AT45DBX_PAGE_SIZE > \ref AT45DBX_SECTOR_SIZE, page content is - * first loaded in buffer to then be partially updated by write byte or - * write sector functions. - */ -extern Bool at45dbx_write_open(U32 sector); - -/*! \brief Fills the end of the current logical sector and launches page programming. - */ -extern void at45dbx_write_close(void); - -//! @} - - -/*! \name Single-Byte Access Functions - */ -//! @{ - -/*! \brief Performs a single byte read from DF memory. - * - * \return The read byte. - * - * \note First call must be preceded by a call to the \ref at45dbx_read_open - * function. - */ -extern U8 at45dbx_read_byte(void); - -/*! \brief Performs a single byte write to DF memory. - * - * \param b The byte to write. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_write_open - * function. - */ -extern Bool at45dbx_write_byte(U8 b); - -//! @} - - -/*! \name Multiple-Sector Access Functions - */ -//! @{ - -/*! \brief Reads \a nb_sector sectors from DF memory. - * - * Data flow is: DF -> callback. - * - * \param nb_sector Number of contiguous sectors to read. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_read_open - * function. - * - * \note As \ref AT45DBX_PAGE_SIZE is always a multiple of - * \ref AT45DBX_SECTOR_SIZE, there is no need to check page end for each - * byte. - */ -extern Bool at45dbx_read_multiple_sector(U16 nb_sector); - -/*! \brief Callback function invoked after each sector read during - * \ref at45dbx_read_multiple_sector. - * - * \param psector Pointer to read sector. - */ -extern void at45dbx_read_multiple_sector_callback(const void *psector); - -/*! \brief Writes \a nb_sector sectors to DF memory. - * - * Data flow is: callback -> DF. - * - * \param nb_sector Number of contiguous sectors to write. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_write_open - * function. - * - * \note As \ref AT45DBX_PAGE_SIZE is always a multiple of - * \ref AT45DBX_SECTOR_SIZE, there is no need to check page end for each - * byte. - */ -extern Bool at45dbx_write_multiple_sector(U16 nb_sector); - -/*! \brief Callback function invoked before each sector write during - * \ref at45dbx_write_multiple_sector. - * - * \param psector Pointer to sector to write. - */ -extern void at45dbx_write_multiple_sector_callback(void *psector); - -//! @} - - -/*! \name Single-Sector Access Functions - */ -//! @{ - -/*! \brief Reads 1 DF sector to a RAM buffer. - * - * Data flow is: DF -> RAM. - * - * \param ram Pointer to RAM buffer. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_read_open - * function. - */ -extern Bool at45dbx_read_sector_2_ram(void *ram); - -/*! \brief Writes 1 DF sector from a RAM buffer. - * - * Data flow is: RAM -> DF. - * - * \param ram Pointer to RAM buffer. - * - * \retval OK Success. - * \retval KO Failure. - * - * \note First call must be preceded by a call to the \ref at45dbx_write_open - * function. - */ -extern Bool at45dbx_write_sector_from_ram(const void *ram); - -//! @} - - -#endif // _AT45DBX_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c deleted file mode 100644 index 4c0ace2f5db..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.c +++ /dev/null @@ -1,234 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief CTRL_ACCESS interface for the AT45DBX data flash controller. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -//_____ I N C L U D E S ___________________________________________________ - -#include "conf_access.h" - - -#if AT45DBX_MEM == ENABLE - -#include "conf_at45dbx.h" -#include "at45dbx.h" -#include "at45dbx_mem.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -//! Whether to detect write accesses to the memory. -#define AT45DBX_MEM_TEST_CHANGE_STATE ENABLED - - -#if (ACCESS_USB == ENABLED || ACCESS_MEM_TO_RAM == ENABLED) && AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED - -//! Memory data modified flag. -static volatile Bool s_b_data_modify = FALSE; - -#endif - - -/*! \name Control Interface - */ -//! @{ - - -Ctrl_status at45dbx_test_unit_ready(void) -{ - return (at45dbx_mem_check() == OK) ? CTRL_GOOD : CTRL_NO_PRESENT; -} - - -Ctrl_status at45dbx_read_capacity(U32 *u32_nb_sector) -{ - *u32_nb_sector = (AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) - 1; - - return CTRL_GOOD; -} - - -Bool at45dbx_wr_protect(void) -{ - return FALSE; -} - - -Bool at45dbx_removal(void) -{ - return FALSE; -} - - -//! @} - - -#if ACCESS_USB == ENABLED - -#include "usb_drv.h" -#include "scsi_decoder.h" - - -/*! \name MEM <-> USB Interface - */ -//! @{ - - -Ctrl_status at45dbx_usb_read_10(U32 addr, U16 nb_sector) -{ - if (addr + nb_sector > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - - at45dbx_read_open(addr); - at45dbx_read_multiple_sector(nb_sector); - at45dbx_read_close(); - - return CTRL_GOOD; -} - - -void at45dbx_read_multiple_sector_callback(const void *psector) -{ - U16 data_to_transfer = AT45DBX_SECTOR_SIZE; - - // Transfer read sector to the USB interface. - while (data_to_transfer) - { - while (!Is_usb_in_ready(g_scsi_ep_ms_in)) - { - if(!Is_usb_endpoint_enabled(g_scsi_ep_ms_in)) - return; // USB Reset - } - - Usb_reset_endpoint_fifo_access(g_scsi_ep_ms_in); - data_to_transfer = usb_write_ep_txpacket(g_scsi_ep_ms_in, psector, - data_to_transfer, &psector); - Usb_ack_in_ready_send(g_scsi_ep_ms_in); - } -} - - -Ctrl_status at45dbx_usb_write_10(U32 addr, U16 nb_sector) -{ - if (addr + nb_sector > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - -#if AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED - if (nb_sector) s_b_data_modify = TRUE; -#endif - - at45dbx_write_open(addr); - at45dbx_write_multiple_sector(nb_sector); - at45dbx_write_close(); - - return CTRL_GOOD; -} - - -void at45dbx_write_multiple_sector_callback(void *psector) -{ - U16 data_to_transfer = AT45DBX_SECTOR_SIZE; - - // Transfer sector to write from the USB interface. - while (data_to_transfer) - { - while (!Is_usb_out_received(g_scsi_ep_ms_out)) - { - if(!Is_usb_endpoint_enabled(g_scsi_ep_ms_out)) - return; // USB Reset - } - - Usb_reset_endpoint_fifo_access(g_scsi_ep_ms_out); - data_to_transfer = usb_read_ep_rxpacket(g_scsi_ep_ms_out, psector, - data_to_transfer, &psector); - Usb_ack_out_received_free(g_scsi_ep_ms_out); - } -} - - -//! @} - -#endif // ACCESS_USB == ENABLED - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - - -Ctrl_status at45dbx_df_2_ram(U32 addr, void *ram) -{ - if (addr + 1 > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - - at45dbx_read_open(addr); - at45dbx_read_sector_2_ram(ram); - at45dbx_read_close(); - - return CTRL_GOOD; -} - - -Ctrl_status at45dbx_ram_2_df(U32 addr, const void *ram) -{ - if (addr + 1 > AT45DBX_MEM_CNT << (AT45DBX_MEM_SIZE - AT45DBX_SECTOR_BITS)) return CTRL_FAIL; - -#if AT45DBX_MEM_TEST_CHANGE_STATE == ENABLED - s_b_data_modify = TRUE; -#endif - - at45dbx_write_open(addr); - at45dbx_write_sector_from_ram(ram); - at45dbx_write_close(); - - return CTRL_GOOD; -} - - -//! @} - -#endif // ACCESS_MEM_TO_RAM == ENABLED - - -#endif // AT45DBX_MEM == ENABLE diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h deleted file mode 100644 index de24fa3718a..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX/at45dbx_mem.h +++ /dev/null @@ -1,164 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief CTRL_ACCESS interface for the AT45DBX data flash controller. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _AT45DBX_MEM_H_ -#define _AT45DBX_MEM_H_ - - -#include "conf_access.h" - -#if AT45DBX_MEM == DISABLE - #error at45dbx_mem.h is #included although AT45DBX_MEM is disabled -#endif - - -#include "ctrl_access.h" - - -//_____ D E C L A R A T I O N S ____________________________________________ - -/*! \name Control Interface - */ -//! @{ - -/*! \brief Tests the memory state and initializes the memory if required. - * - * The TEST UNIT READY SCSI primary command allows an application client to poll - * a LUN until it is ready without having to allocate memory for returned data. - * - * This command may be used to check the media status of LUNs with removable - * media. - * - * \return Status. - */ -extern Ctrl_status at45dbx_test_unit_ready(void); - -/*! \brief Returns the address of the last valid sector in the memory. - * - * \param u32_nb_sector Pointer to the address of the last valid sector. - * - * \return Status. - */ -extern Ctrl_status at45dbx_read_capacity(U32 *u32_nb_sector); - -/*! \brief Returns the write-protection state of the memory. - * - * \return \c TRUE if the memory is write-protected, else \c FALSE. - * - * \note Only used by removable memories with hardware-specific write - * protection. - */ -extern Bool at45dbx_wr_protect(void); - -/*! \brief Tells whether the memory is removable. - * - * \return \c TRUE if the memory is removable, else \c FALSE. - */ -extern Bool at45dbx_removal(void); - -//! @} - - -#if ACCESS_USB == ENABLED - -/*! \name MEM <-> USB Interface - */ -//! @{ - -/*! \brief Tranfers data from the memory to USB. - * - * \param addr Address of first memory sector to read. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status at45dbx_usb_read_10(U32 addr, U16 nb_sector); - -/*! \brief Tranfers data from USB to the memory. - * - * \param addr Address of first memory sector to write. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status at45dbx_usb_write_10(U32 addr, U16 nb_sector); - -//! @} - -#endif - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - -/*! \brief Copies 1 data sector from the memory to RAM. - * - * \param addr Address of first memory sector to read. - * \param ram Pointer to RAM buffer to write. - * - * \return Status. - */ -extern Ctrl_status at45dbx_df_2_ram(U32 addr, void *ram); - -/*! \brief Copies 1 data sector from RAM to the memory. - * - * \param addr Address of first memory sector to write. - * \param ram Pointer to RAM buffer to read. - * - * \return Status. - */ -extern Ctrl_status at45dbx_ram_2_df(U32 addr, const void *ram); - -//! @} - -#endif - - -#endif // _AT45DBX_MEM_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c deleted file mode 100644 index 2eee15c0a4e..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.c +++ /dev/null @@ -1,1117 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief FLASHC driver for AVR32 UC3. - * - * AVR32 Flash Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a FLASHC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include -#include -#include "compiler.h" -#include "flashc.h" - - -/*! \name FLASHC Writable Bit-Field Registers - */ -//! @{ - -typedef union -{ - unsigned long fcr; - avr32_flashc_fcr_t FCR; -} u_avr32_flashc_fcr_t; - -typedef union -{ - unsigned long fcmd; - avr32_flashc_fcmd_t FCMD; -} u_avr32_flashc_fcmd_t; - -//! @} - - -/*! \name Flash Properties - */ -//! @{ - - -unsigned int flashc_get_flash_size(void) -{ -#if (defined AVR32_FLASHC_300_H_INCLUDED) - static const unsigned int FLASH_SIZE[1 << AVR32_FLASHC_PR_FSZ_SIZE] = - { - 32 << 10, - 64 << 10, - 128 << 10, - 256 << 10, - 384 << 10, - 512 << 10, - 768 << 10, - 1024 << 10 - }; - return FLASH_SIZE[(AVR32_FLASHC.pr & AVR32_FLASHC_PR_FSZ_MASK) >> AVR32_FLASHC_PR_FSZ_OFFSET]; -#else - static const unsigned int FLASH_SIZE[1 << AVR32_FLASHC_FSR_FSZ_SIZE] = - { - 32 << 10, - 64 << 10, - 128 << 10, - 256 << 10, - 384 << 10, - 512 << 10, - 768 << 10, - 1024 << 10 - }; - return FLASH_SIZE[(AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_FSZ_MASK) >> AVR32_FLASHC_FSR_FSZ_OFFSET]; -#endif -} - - -unsigned int flashc_get_page_count(void) -{ - return flashc_get_flash_size() / AVR32_FLASHC_PAGE_SIZE; -} - - -unsigned int flashc_get_page_count_per_region(void) -{ - return flashc_get_page_count() / AVR32_FLASHC_REGIONS; -} - - -unsigned int flashc_get_page_region(int page_number) -{ - return ((page_number >= 0) ? page_number : flashc_get_page_number()) / flashc_get_page_count_per_region(); -} - - -unsigned int flashc_get_region_first_page_number(unsigned int region) -{ - return region * flashc_get_page_count_per_region(); -} - - -//! @} - - -/*! \name FLASHC Control - */ -//! @{ - - -unsigned int flashc_get_wait_state(void) -{ - return (AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_FWS_MASK) >> AVR32_FLASHC_FCR_FWS_OFFSET; -} - - -void flashc_set_wait_state(unsigned int wait_state) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.fws = wait_state; - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -Bool flashc_is_ready_int_enabled(void) -{ - return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_FRDY_MASK) != 0); -} - - -void flashc_enable_ready_int(Bool enable) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.frdy = (enable != FALSE); - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -Bool flashc_is_lock_error_int_enabled(void) -{ - return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_LOCKE_MASK) != 0); -} - - -void flashc_enable_lock_error_int(Bool enable) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.locke = (enable != FALSE); - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -Bool flashc_is_prog_error_int_enabled(void) -{ - return ((AVR32_FLASHC.fcr & AVR32_FLASHC_FCR_PROGE_MASK) != 0); -} - - -void flashc_enable_prog_error_int(Bool enable) -{ - u_avr32_flashc_fcr_t u_avr32_flashc_fcr = {AVR32_FLASHC.fcr}; - u_avr32_flashc_fcr.FCR.proge = (enable != FALSE); - AVR32_FLASHC.fcr = u_avr32_flashc_fcr.fcr; -} - - -//! @} - - -/*! \name FLASHC Status - */ -//! @{ - - -Bool flashc_is_ready(void) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_FRDY_MASK) != 0); -} - - -void flashc_default_wait_until_ready(void) -{ - while (!flashc_is_ready()); -} - - -void (*volatile flashc_wait_until_ready)(void) = flashc_default_wait_until_ready; - - -/*! \brief Gets the error status of the FLASHC. - * - * \return The error status of the FLASHC built up from - * \c AVR32_FLASHC_FSR_LOCKE_MASK and \c AVR32_FLASHC_FSR_PROGE_MASK. - * - * \warning This hardware error status is cleared by all functions reading the - * Flash Status Register (FSR). This function is therefore not part of - * the driver's API which instead presents \ref flashc_is_lock_error - * and \ref flashc_is_programming_error. - */ -static unsigned int flashc_get_error_status(void) -{ - return AVR32_FLASHC.fsr & (AVR32_FLASHC_FSR_LOCKE_MASK | - AVR32_FLASHC_FSR_PROGE_MASK); -} - - -//! Sticky error status of the FLASHC. -//! This variable is updated by functions that issue FLASHC commands. It -//! contains the cumulated FLASHC error status of all the FLASHC commands issued -//! by a function. -static unsigned int flashc_error_status = 0; - - -Bool flashc_is_lock_error(void) -{ - return ((flashc_error_status & AVR32_FLASHC_FSR_LOCKE_MASK) != 0); -} - - -Bool flashc_is_programming_error(void) -{ - return ((flashc_error_status & AVR32_FLASHC_FSR_PROGE_MASK) != 0); -} - - -//! @} - - -/*! \name FLASHC Command Control - */ -//! @{ - - -unsigned int flashc_get_command(void) -{ - return (AVR32_FLASHC.fcmd & AVR32_FLASHC_FCMD_CMD_MASK) >> AVR32_FLASHC_FCMD_CMD_OFFSET; -} - - -unsigned int flashc_get_page_number(void) -{ - return (AVR32_FLASHC.fcmd & AVR32_FLASHC_FCMD_PAGEN_MASK) >> AVR32_FLASHC_FCMD_PAGEN_OFFSET; -} - - -void flashc_issue_command(unsigned int command, int page_number) -{ - u_avr32_flashc_fcmd_t u_avr32_flashc_fcmd; - flashc_wait_until_ready(); - u_avr32_flashc_fcmd.fcmd = AVR32_FLASHC.fcmd; - u_avr32_flashc_fcmd.FCMD.cmd = command; - if (page_number >= 0) u_avr32_flashc_fcmd.FCMD.pagen = page_number; - u_avr32_flashc_fcmd.FCMD.key = AVR32_FLASHC_FCMD_KEY_KEY; - AVR32_FLASHC.fcmd = u_avr32_flashc_fcmd.fcmd; - flashc_error_status = flashc_get_error_status(); - flashc_wait_until_ready(); -} - - -//! @} - - -/*! \name FLASHC Global Commands - */ -//! @{ - - -void flashc_no_operation(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_NOP, -1); -} - - -void flashc_erase_all(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EA, -1); -} - - -//! @} - - -/*! \name FLASHC Protection Mechanisms - */ -//! @{ - - -Bool flashc_is_security_bit_active(void) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_SECURITY_MASK) != 0); -} - - -void flashc_activate_security_bit(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_SSB, -1); -} - - -unsigned int flashc_get_bootloader_protected_size(void) -{ - unsigned int bootprot = (1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1 - - flashc_read_gp_fuse_bitfield(AVR32_FLASHC_FGPFRLO_BOOTPROT_OFFSET, - AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE); - return (bootprot) ? AVR32_FLASHC_PAGE_SIZE << bootprot : 0; -} - - -unsigned int flashc_set_bootloader_protected_size(unsigned int bootprot_size) -{ - flashc_set_gp_fuse_bitfield(AVR32_FLASHC_FGPFRLO_BOOTPROT_OFFSET, - AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE, - (1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1 - - ((bootprot_size) ? - 32 - clz((((min(max(bootprot_size, AVR32_FLASHC_PAGE_SIZE << 1), - AVR32_FLASHC_PAGE_SIZE << - ((1 << AVR32_FLASHC_FGPFRLO_BOOTPROT_SIZE) - 1)) + - AVR32_FLASHC_PAGE_SIZE - 1) / - AVR32_FLASHC_PAGE_SIZE) << 1) - 1) - 1 : - 0)); - return flashc_get_bootloader_protected_size(); -} - - -Bool flashc_is_external_privileged_fetch_locked(void) -{ - return (!flashc_read_gp_fuse_bit(AVR32_FLASHC_FGPFRLO_EPFL_OFFSET)); -} - - -void flashc_lock_external_privileged_fetch(Bool lock) -{ - flashc_set_gp_fuse_bit(AVR32_FLASHC_FGPFRLO_EPFL_OFFSET, !lock); -} - - -Bool flashc_is_page_region_locked(int page_number) -{ - return flashc_is_region_locked(flashc_get_page_region(page_number)); -} - - -Bool flashc_is_region_locked(unsigned int region) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_LOCK0_MASK << (region & (AVR32_FLASHC_REGIONS - 1))) != 0); -} - - -void flashc_lock_page_region(int page_number, Bool lock) -{ - flashc_issue_command((lock) ? AVR32_FLASHC_FCMD_CMD_LP : AVR32_FLASHC_FCMD_CMD_UP, page_number); -} - - -void flashc_lock_region(unsigned int region, Bool lock) -{ - flashc_lock_page_region(flashc_get_region_first_page_number(region), lock); -} - - -void flashc_lock_all_regions(Bool lock) -{ - unsigned int error_status = 0; - unsigned int region = AVR32_FLASHC_REGIONS; - while (region) - { - flashc_lock_region(--region, lock); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -//! @} - - -/*! \name Access to General-Purpose Fuses - */ -//! @{ - - -Bool flashc_read_gp_fuse_bit(unsigned int gp_fuse_bit) -{ - return ((flashc_read_all_gp_fuses() & 1ULL << (gp_fuse_bit & 0x3F)) != 0); -} - - -U64 flashc_read_gp_fuse_bitfield(unsigned int pos, unsigned int width) -{ - return flashc_read_all_gp_fuses() >> (pos & 0x3F) & ((1ULL << min(width, 64)) - 1); -} - - -U8 flashc_read_gp_fuse_byte(unsigned int gp_fuse_byte) -{ - return flashc_read_all_gp_fuses() >> ((gp_fuse_byte & 0x07) << 3); -} - - -U64 flashc_read_all_gp_fuses(void) -{ - return AVR32_FLASHC.fgpfrlo | (U64)AVR32_FLASHC.fgpfrhi << 32; -} - - -Bool flashc_erase_gp_fuse_bit(unsigned int gp_fuse_bit, Bool check) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EGPB, gp_fuse_bit & 0x3F); - return (check) ? flashc_read_gp_fuse_bit(gp_fuse_bit) : TRUE; -} - - -Bool flashc_erase_gp_fuse_bitfield(unsigned int pos, unsigned int width, Bool check) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_bit; - pos &= 0x3F; - width = min(width, 64); - for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++) - { - flashc_erase_gp_fuse_bit(gp_fuse_bit, FALSE); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; - return (check) ? (flashc_read_gp_fuse_bitfield(pos, width) == (1ULL << width) - 1) : TRUE; -} - - -Bool flashc_erase_gp_fuse_byte(unsigned int gp_fuse_byte, Bool check) -{ - unsigned int error_status; - unsigned int current_gp_fuse_byte; - U64 value = flashc_read_all_gp_fuses(); - flashc_erase_all_gp_fuses(FALSE); - error_status = flashc_error_status; - for (current_gp_fuse_byte = 0; current_gp_fuse_byte < 8; current_gp_fuse_byte++, value >>= 8) - { - if (current_gp_fuse_byte != gp_fuse_byte) - { - flashc_write_gp_fuse_byte(current_gp_fuse_byte, value); - error_status |= flashc_error_status; - } - } - flashc_error_status = error_status; - return (check) ? (flashc_read_gp_fuse_byte(gp_fuse_byte) == 0xFF) : TRUE; -} - - -Bool flashc_erase_all_gp_fuses(Bool check) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EAGPF, -1); - return (check) ? (flashc_read_all_gp_fuses() == 0xFFFFFFFFFFFFFFFFULL) : TRUE; -} - - -void flashc_write_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value) -{ - if (!value) - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WGPB, gp_fuse_bit & 0x3F); -} - - -void flashc_write_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_bit; - pos &= 0x3F; - width = min(width, 64); - for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++, value >>= 1) - { - flashc_write_gp_fuse_bit(gp_fuse_bit, value & 0x01); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -void flashc_write_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_PGPFB, (gp_fuse_byte & 0x07) | value << 3); -} - - -void flashc_write_all_gp_fuses(U64 value) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_byte; - for (gp_fuse_byte = 0; gp_fuse_byte < 8; gp_fuse_byte++, value >>= 8) - { - flashc_write_gp_fuse_byte(gp_fuse_byte, value); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -void flashc_set_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value) -{ - if (value) - flashc_erase_gp_fuse_bit(gp_fuse_bit, FALSE); - else - flashc_write_gp_fuse_bit(gp_fuse_bit, FALSE); -} - - -void flashc_set_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value) -{ - unsigned int error_status = 0; - unsigned int gp_fuse_bit; - pos &= 0x3F; - width = min(width, 64); - for (gp_fuse_bit = pos; gp_fuse_bit < pos + width; gp_fuse_bit++, value >>= 1) - { - flashc_set_gp_fuse_bit(gp_fuse_bit, value & 0x01); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; -} - - -void flashc_set_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value) -{ - unsigned int error_status; - switch (value) - { - case 0xFF: - flashc_erase_gp_fuse_byte(gp_fuse_byte, FALSE); - break; - case 0x00: - flashc_write_gp_fuse_byte(gp_fuse_byte, 0x00); - break; - default: - flashc_erase_gp_fuse_byte(gp_fuse_byte, FALSE); - error_status = flashc_error_status; - flashc_write_gp_fuse_byte(gp_fuse_byte, value); - flashc_error_status |= error_status; - } -} - - -void flashc_set_all_gp_fuses(U64 value) -{ - unsigned int error_status; - switch (value) - { - case 0xFFFFFFFFFFFFFFFFULL: - flashc_erase_all_gp_fuses(FALSE); - break; - case 0x0000000000000000ULL: - flashc_write_all_gp_fuses(0x0000000000000000ULL); - break; - default: - flashc_erase_all_gp_fuses(FALSE); - error_status = flashc_error_status; - flashc_write_all_gp_fuses(value); - flashc_error_status |= error_status; - } -} - - -//! @} - - -/*! \name Access to Flash Pages - */ -//! @{ - - -void flashc_clear_page_buffer(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_CPB, -1); -} - - -Bool flashc_is_page_erased(void) -{ - return ((AVR32_FLASHC.fsr & AVR32_FLASHC_FSR_QPRR_MASK) != 0); -} - - -Bool flashc_quick_page_read(int page_number) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_QPR, page_number); - return flashc_is_page_erased(); -} - - -Bool flashc_erase_page(int page_number, Bool check) -{ - Bool page_erased = TRUE; - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EP, page_number); - if (check) - { - unsigned int error_status = flashc_error_status; - page_erased = flashc_quick_page_read(-1); - flashc_error_status |= error_status; - } - return page_erased; -} - - -Bool flashc_erase_all_pages(Bool check) -{ - Bool all_pages_erased = TRUE; - unsigned int error_status = 0; - unsigned int page_number = flashc_get_page_count(); - while (page_number) - { - all_pages_erased &= flashc_erase_page(--page_number, check); - error_status |= flashc_error_status; - } - flashc_error_status = error_status; - return all_pages_erased; -} - - -void flashc_write_page(int page_number) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WP, page_number); -} - - -Bool flashc_quick_user_page_read(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_QPRUP, -1); - return flashc_is_page_erased(); -} - - -Bool flashc_erase_user_page(Bool check) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_EUP, -1); - return (check) ? flashc_quick_user_page_read() : TRUE; -} - - -void flashc_write_user_page(void) -{ - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_WUP, -1); -} - - -volatile void *flashc_memset8(volatile void *dst, U8 src, size_t nbytes, Bool erase) -{ - return flashc_memset16(dst, src | (U16)src << 8, nbytes, erase); -} - - -volatile void *flashc_memset16(volatile void *dst, U16 src, size_t nbytes, Bool erase) -{ - return flashc_memset32(dst, src | (U32)src << 16, nbytes, erase); -} - - -volatile void *flashc_memset32(volatile void *dst, U32 src, size_t nbytes, Bool erase) -{ - return flashc_memset64(dst, src | (U64)src << 32, nbytes, erase); -} - - -volatile void *flashc_memset64(volatile void *dst, U64 src, size_t nbytes, Bool erase) -{ - // Use aggregated pointers to have several alignments available for a same address. - UnionCVPtr flash_array_end; - UnionVPtr dest; - Union64 source = {0}; - StructCVPtr dest_end; - UnionCVPtr flash_page_source_end; - Bool incomplete_flash_page_end; - Union64 flash_dword; - UnionVPtr tmp; - unsigned int error_status = 0; - unsigned int i; - - // Reformat arguments. - flash_array_end.u8ptr = AVR32_FLASH + flashc_get_flash_size(); - dest.u8ptr = dst; - for (i = (Get_align((U32)dest.u8ptr, sizeof(U64)) - 1) & (sizeof(U64) - 1); - src; i = (i - 1) & (sizeof(U64) - 1)) - { - source.u8[i] = src; - src >>= 8; - } - dest_end.u8ptr = dest.u8ptr + nbytes; - - // If destination is outside flash, go to next flash page if any. - if (dest.u8ptr < AVR32_FLASH) - { - dest.u8ptr = AVR32_FLASH; - } - else if (flash_array_end.u8ptr <= dest.u8ptr && dest.u8ptr < AVR32_FLASHC_USER_PAGE) - { - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - - // If end of destination is outside flash, move it to the end of the previous flash page if any. - if (dest_end.u8ptr > AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE) - { - dest_end.u8ptr = AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE; - } - else if (AVR32_FLASHC_USER_PAGE >= dest_end.u8ptr && dest_end.u8ptr > flash_array_end.u8ptr) - { - dest_end.u8ptr = flash_array_end.u8ptr; - } - - // Align each end of destination pointer with its natural boundary. - dest_end.u16ptr = (U16 *)Align_down((U32)dest_end.u8ptr, sizeof(U16)); - dest_end.u32ptr = (U32 *)Align_down((U32)dest_end.u16ptr, sizeof(U32)); - dest_end.u64ptr = (U64 *)Align_down((U32)dest_end.u32ptr, sizeof(U64)); - - // While end of destination is not reached... - while (dest.u8ptr < dest_end.u8ptr) - { - // Clear the page buffer in order to prepare data for a flash page write. - flashc_clear_page_buffer(); - error_status |= flashc_error_status; - - // Determine where the source data will end in the current flash page. - flash_page_source_end.u64ptr = - (U64 *)min((U32)dest_end.u64ptr, - Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) + AVR32_FLASHC_PAGE_SIZE); - - // Determine if the current destination page has an incomplete end. - incomplete_flash_page_end = (Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) >= - Align_down((U32)dest_end.u8ptr, AVR32_FLASHC_PAGE_SIZE)); - - // Use a flash double-word buffer to manage unaligned accesses. - flash_dword.u64 = source.u64; - - // If destination does not point to the beginning of the current flash page... - if (!Test_align((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE)) - { - // Fill the beginning of the page buffer with the current flash page data. - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - for (tmp.u8ptr = (U8 *)Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE); - tmp.u64ptr < (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - - // If destination is not 64-bit aligned... - if (!Test_align((U32)dest.u8ptr, sizeof(U64))) - { - // Fill the beginning of the flash double-word buffer with the current - // flash page data. - // This is required by the hardware, even if page erase is not - // requested, in order to be able to write successfully to erased parts - // of flash pages that have already been written to. - for (i = 0; i < Get_align((U32)dest.u8ptr, sizeof(U64)); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Align the destination pointer with its 64-bit boundary. - dest.u64ptr = (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - - // If the current destination double-word is not the last one... - if (dest.u64ptr < dest_end.u64ptr) - { - // Write the flash double-word buffer to the page buffer and reinitialize it. - *dest.u64ptr++ = flash_dword.u64; - flash_dword.u64 = source.u64; - } - } - } - - // Write the source data to the page buffer with 64-bit alignment. - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - *dest.u64ptr++ = source.u64; - - // If the current destination page has an incomplete end... - if (incomplete_flash_page_end) - { - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - { - tmp.u8ptr = (volatile U8 *)dest_end.u8ptr; - - // If end of destination is not 64-bit aligned... - if (!Test_align((U32)dest_end.u8ptr, sizeof(U64))) - { - // Fill the end of the flash double-word buffer with the current flash page data. - for (i = Get_align((U32)dest_end.u8ptr, sizeof(U64)); i < sizeof(U64); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Write the flash double-word buffer to the page buffer. - *dest.u64ptr++ = flash_dword.u64; - } - - // Fill the end of the page buffer with the current flash page data. - for (; !Test_align((U32)tmp.u64ptr, AVR32_FLASHC_PAGE_SIZE); tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - } - } - - // If the current flash page is in the flash array... - if (dest.u8ptr <= AVR32_FLASHC_USER_PAGE) - { - // Erase the current page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_page(-1, FALSE); - error_status |= flashc_error_status; - } - flashc_write_page(-1); - error_status |= flashc_error_status; - - // If the end of the flash array is reached, go to the User page. - if (dest.u8ptr >= flash_array_end.u8ptr) - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - // If the current flash page is the User page... - else - { - // Erase the User page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_user_page(FALSE); - error_status |= flashc_error_status; - } - flashc_write_user_page(); - error_status |= flashc_error_status; - } - } - - // Update the FLASHC error status. - flashc_error_status = error_status; - - // Return the initial destination pointer as the standard memset function does. - return dst; -} - - -volatile void *flashc_memcpy(volatile void *dst, const void *src, size_t nbytes, Bool erase) -{ - // Use aggregated pointers to have several alignments available for a same address. - UnionCVPtr flash_array_end; - UnionVPtr dest; - UnionCPtr source; - StructCVPtr dest_end; - UnionCVPtr flash_page_source_end; - Bool incomplete_flash_page_end; - Union64 flash_dword; - Bool flash_dword_pending = FALSE; - UnionVPtr tmp; - unsigned int error_status = 0; - unsigned int i, j; - - // Reformat arguments. - flash_array_end.u8ptr = AVR32_FLASH + flashc_get_flash_size(); - dest.u8ptr = dst; - source.u8ptr = src; - dest_end.u8ptr = dest.u8ptr + nbytes; - - // If destination is outside flash, go to next flash page if any. - if (dest.u8ptr < AVR32_FLASH) - { - source.u8ptr += AVR32_FLASH - dest.u8ptr; - dest.u8ptr = AVR32_FLASH; - } - else if (flash_array_end.u8ptr <= dest.u8ptr && dest.u8ptr < AVR32_FLASHC_USER_PAGE) - { - source.u8ptr += AVR32_FLASHC_USER_PAGE - dest.u8ptr; - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - - // If end of destination is outside flash, move it to the end of the previous flash page if any. - if (dest_end.u8ptr > AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE) - { - dest_end.u8ptr = AVR32_FLASHC_USER_PAGE + AVR32_FLASHC_USER_PAGE_SIZE; - } - else if (AVR32_FLASHC_USER_PAGE >= dest_end.u8ptr && dest_end.u8ptr > flash_array_end.u8ptr) - { - dest_end.u8ptr = flash_array_end.u8ptr; - } - - // Align each end of destination pointer with its natural boundary. - dest_end.u16ptr = (U16 *)Align_down((U32)dest_end.u8ptr, sizeof(U16)); - dest_end.u32ptr = (U32 *)Align_down((U32)dest_end.u16ptr, sizeof(U32)); - dest_end.u64ptr = (U64 *)Align_down((U32)dest_end.u32ptr, sizeof(U64)); - - // While end of destination is not reached... - while (dest.u8ptr < dest_end.u8ptr) - { - // Clear the page buffer in order to prepare data for a flash page write. - flashc_clear_page_buffer(); - error_status |= flashc_error_status; - - // Determine where the source data will end in the current flash page. - flash_page_source_end.u64ptr = - (U64 *)min((U32)dest_end.u64ptr, - Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) + AVR32_FLASHC_PAGE_SIZE); - - // Determine if the current destination page has an incomplete end. - incomplete_flash_page_end = (Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE) >= - Align_down((U32)dest_end.u8ptr, AVR32_FLASHC_PAGE_SIZE)); - - // If destination does not point to the beginning of the current flash page... - if (!Test_align((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE)) - { - // Fill the beginning of the page buffer with the current flash page data. - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - for (tmp.u8ptr = (U8 *)Align_down((U32)dest.u8ptr, AVR32_FLASHC_PAGE_SIZE); - tmp.u64ptr < (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - - // If destination is not 64-bit aligned... - if (!Test_align((U32)dest.u8ptr, sizeof(U64))) - { - // Fill the beginning of the flash double-word buffer with the current - // flash page data. - // This is required by the hardware, even if page erase is not - // requested, in order to be able to write successfully to erased parts - // of flash pages that have already been written to. - for (i = 0; i < Get_align((U32)dest.u8ptr, sizeof(U64)); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Fill the end of the flash double-word buffer with the source data. - for (; i < sizeof(U64); i++) - flash_dword.u8[i] = *source.u8ptr++; - - // Align the destination pointer with its 64-bit boundary. - dest.u64ptr = (U64 *)Align_down((U32)dest.u8ptr, sizeof(U64)); - - // If the current destination double-word is not the last one... - if (dest.u64ptr < dest_end.u64ptr) - { - // Write the flash double-word buffer to the page buffer. - *dest.u64ptr++ = flash_dword.u64; - } - // If the current destination double-word is the last one, the flash - // double-word buffer must be kept for later. - else flash_dword_pending = TRUE; - } - } - - // Read the source data with the maximal possible alignment and write it to - // the page buffer with 64-bit alignment. - switch (Get_align((U32)source.u8ptr, sizeof(U32))) - { - case 0: - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - *dest.u64ptr++ = *source.u64ptr++; - break; - - case sizeof(U16): - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - { - for (j = 0; j < sizeof(U64) / sizeof(U16); j++) flash_dword.u16[j] = *source.u16ptr++; - *dest.u64ptr++ = flash_dword.u64; - } - break; - - default: - for (i = flash_page_source_end.u64ptr - dest.u64ptr; i; i--) - { - for (j = 0; j < sizeof(U64); j++) flash_dword.u8[j] = *source.u8ptr++; - *dest.u64ptr++ = flash_dword.u64; - } - } - - // If the current destination page has an incomplete end... - if (incomplete_flash_page_end) - { - // If the flash double-word buffer is in use, do not initialize it. - if (flash_dword_pending) i = Get_align((U32)dest_end.u8ptr, sizeof(U64)); - // If the flash double-word buffer is free... - else - { - // Fill the beginning of the flash double-word buffer with the source data. - for (i = 0; i < Get_align((U32)dest_end.u8ptr, sizeof(U64)); i++) - flash_dword.u8[i] = *source.u8ptr++; - } - - // This is required by the hardware, even if page erase is not requested, - // in order to be able to write successfully to erased parts of flash - // pages that have already been written to. - { - tmp.u8ptr = (volatile U8 *)dest_end.u8ptr; - - // If end of destination is not 64-bit aligned... - if (!Test_align((U32)dest_end.u8ptr, sizeof(U64))) - { - // Fill the end of the flash double-word buffer with the current flash page data. - for (; i < sizeof(U64); i++) - flash_dword.u8[i] = *tmp.u8ptr++; - - // Write the flash double-word buffer to the page buffer. - *dest.u64ptr++ = flash_dword.u64; - } - - // Fill the end of the page buffer with the current flash page data. - for (; !Test_align((U32)tmp.u64ptr, AVR32_FLASHC_PAGE_SIZE); tmp.u64ptr++) - *tmp.u64ptr = *tmp.u64ptr; - } - } - - // If the current flash page is in the flash array... - if (dest.u8ptr <= AVR32_FLASHC_USER_PAGE) - { - // Erase the current page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_page(-1, FALSE); - error_status |= flashc_error_status; - } - flashc_write_page(-1); - error_status |= flashc_error_status; - - // If the end of the flash array is reached, go to the User page. - if (dest.u8ptr >= flash_array_end.u8ptr) - { - source.u8ptr += AVR32_FLASHC_USER_PAGE - dest.u8ptr; - dest.u8ptr = AVR32_FLASHC_USER_PAGE; - } - } - // If the current flash page is the User page... - else - { - // Erase the User page if requested and write it from the page buffer. - if (erase) - { - flashc_erase_user_page(FALSE); - error_status |= flashc_error_status; - } - flashc_write_user_page(); - error_status |= flashc_error_status; - } - } - - // Update the FLASHC error status. - flashc_error_status = error_status; - - // Return the initial destination pointer as the standard memcpy function does. - return dst; -} - - -#if UC3C -void flashc_set_flash_waitstate_and_readmode(unsigned long cpu_f_hz) -{ - //! Device-specific data - #undef AVR32_FLASHC_FWS_0_MAX_FREQ - #undef AVR32_FLASHC_FWS_1_MAX_FREQ - #undef AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ - #undef AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ - #define AVR32_FLASHC_FWS_0_MAX_FREQ 33000000 - #define AVR32_FLASHC_FWS_1_MAX_FREQ 66000000 - #define AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ 33000000 - #define AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ 72000000 - // These defines are missing from or wrong in the toolchain header files uc3cxxx.h - // Put a Bugzilla - - if(cpu_f_hz > AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ) // > 33MHz - { - // Set a wait-state - flashc_set_wait_state(1); - if(cpu_f_hz <= AVR32_FLASHC_FWS_1_MAX_FREQ) // <= 66MHz and >33Mhz - { - // Disable the high-speed read mode. - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); - } - else // > 66Mhz - { - // Enable the high-speed read mode. - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1); - } - } - else // <= 33 MHz - { - // Disable wait-state - flashc_set_wait_state(0); - - // Disable the high-speed read mode. - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); - - } -} -#endif // UC3C device-specific implementation - -//! @} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h deleted file mode 100644 index 9f2547a6e5e..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC/flashc.h +++ /dev/null @@ -1,1002 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief FLASHC driver for AVR32 UC3. - * - * AVR32 Flash Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a FLASHC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _FLASHC_H_ -#define _FLASHC_H_ - -#include -#include -#include "compiler.h" - -//! Number of flash regions defined by the FLASHC. -#define AVR32_FLASHC_REGIONS (AVR32_FLASHC_FLASH_SIZE /\ - (AVR32_FLASHC_PAGES_PR_REGION * AVR32_FLASHC_PAGE_SIZE)) - - -/*! \name Flash Properties - */ -//! @{ - -/*! \brief Gets the size of the whole flash array. - * - * \return The size of the whole flash array in bytes. - */ -extern unsigned int flashc_get_flash_size(void); - -/*! \brief Gets the total number of pages in the flash array. - * - * \return The total number of pages in the flash array. - */ -extern unsigned int flashc_get_page_count(void); - -/*! \brief Gets the number of pages in each flash region. - * - * \return The number of pages in each flash region. - */ -extern unsigned int flashc_get_page_count_per_region(void); - -/*! \brief Gets the region number of a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \return The region number of the specified page. - */ -extern unsigned int flashc_get_page_region(int page_number); - -/*! \brief Gets the number of the first page of a region. - * - * \param region The region number: \c 0 to (AVR32_FLASHC_REGIONS - 1). - * - * \return The number of the first page of the specified region. - */ -extern unsigned int flashc_get_region_first_page_number(unsigned int region); - -//! @} - - -/*! \name FLASHC Control - */ -//! @{ - -/*! \brief Gets the number of wait states of flash read accesses. - * - * \return The number of wait states of flash read accesses. - */ -extern unsigned int flashc_get_wait_state(void); - -/*! \brief Sets the number of wait states of flash read accesses. - * - * \param wait_state The number of wait states of flash read accesses: \c 0 to - * \c 1. - */ -extern void flashc_set_wait_state(unsigned int wait_state); - -/*! \brief Tells whether the Flash Ready interrupt is enabled. - * - * \return Whether the Flash Ready interrupt is enabled. - */ -extern Bool flashc_is_ready_int_enabled(void); - -/*! \brief Enables or disables the Flash Ready interrupt. - * - * \param enable Whether to enable the Flash Ready interrupt: \c TRUE or - * \c FALSE. - */ -extern void flashc_enable_ready_int(Bool enable); - -/*! \brief Tells whether the Lock Error interrupt is enabled. - * - * \return Whether the Lock Error interrupt is enabled. - */ -extern Bool flashc_is_lock_error_int_enabled(void); - -/*! \brief Enables or disables the Lock Error interrupt. - * - * \param enable Whether to enable the Lock Error interrupt: \c TRUE or - * \c FALSE. - */ -extern void flashc_enable_lock_error_int(Bool enable); - -/*! \brief Tells whether the Programming Error interrupt is enabled. - * - * \return Whether the Programming Error interrupt is enabled. - */ -extern Bool flashc_is_prog_error_int_enabled(void); - -/*! \brief Enables or disables the Programming Error interrupt. - * - * \param enable Whether to enable the Programming Error interrupt: \c TRUE or - * \c FALSE. - */ -extern void flashc_enable_prog_error_int(Bool enable); - -//! @} - - -/*! \name FLASHC Status - */ -//! @{ - -/*! \brief Tells whether the FLASHC is ready to run a new command. - * - * \return Whether the FLASHC is ready to run a new command. - */ -extern Bool flashc_is_ready(void); - -/*! \brief Waits actively until the FLASHC is ready to run a new command. - * - * This is the default function assigned to \ref flashc_wait_until_ready. - */ -extern void flashc_default_wait_until_ready(void); - -//! Pointer to the function used by the driver when it needs to wait until the -//! FLASHC is ready to run a new command. -//! The default function is \ref flashc_default_wait_until_ready. -//! The user may change this pointer to use another implementation. -extern void (*volatile flashc_wait_until_ready)(void); - -/*! \brief Tells whether a Lock Error has occurred during the last function - * called that issued one or more FLASHC commands. - * - * \return Whether a Lock Error has occurred during the last function called - * that issued one or more FLASHC commands. - */ -extern Bool flashc_is_lock_error(void); - -/*! \brief Tells whether a Programming Error has occurred during the last - * function called that issued one or more FLASHC commands. - * - * \return Whether a Programming Error has occurred during the last function - * called that issued one or more FLASHC commands. - */ -extern Bool flashc_is_programming_error(void); - -//! @} - - -/*! \name FLASHC Command Control - */ -//! @{ - -/*! \brief Gets the last issued FLASHC command. - * - * \return The last issued FLASHC command. - */ -extern unsigned int flashc_get_command(void); - -/*! \brief Gets the current FLASHC page number. - * - * \return The current FLASHC page number. - */ -extern unsigned int flashc_get_page_number(void); - -/*! \brief Issues a FLASHC command. - * - * \param command The command: \c AVR32_FLASHC_FCMD_CMD_x. - * \param page_number The page number to apply the command to: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: use this to apply the command to the current page number - * or if the command does not apply to any page number; - * \arg this argument may have other meanings according to the command. See - * the FLASHC chapter of the MCU datasheet. - * - * \warning A Lock Error is issued if the command violates the protection - * mechanism. - * - * \warning A Programming Error is issued if the command is invalid. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_issue_command(unsigned int command, int page_number); - -//! @} - - -/*! \name FLASHC Global Commands - */ -//! @{ - -/*! \brief Issues a No Operation command to the FLASHC. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_no_operation(void); - -/*! \brief Issues an Erase All command to the FLASHC. - * - * This command erases all bits in the flash array, the general-purpose fuse - * bits and the Security bit. The User page is not erased. - * - * This command also ensures that all volatile memories, such as register file - * and RAMs, are erased before the Security bit is erased, i.e. deactivated. - * - * \warning A Lock Error is issued if at least one region is locked or the - * bootloader protection is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern void flashc_erase_all(void); - -//! @} - - -/*! \name FLASHC Protection Mechanisms - */ -//! @{ - -/*! \brief Tells whether the Security bit is active. - * - * \return Whether the Security bit is active. - */ -extern Bool flashc_is_security_bit_active(void); - -/*! \brief Activates the Security bit. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_activate_security_bit(void); - -/*! \brief Gets the bootloader protected size. - * - * \return The bootloader protected size in bytes. - */ -extern unsigned int flashc_get_bootloader_protected_size(void); - -/*! \brief Sets the bootloader protected size. - * - * \param bootprot_size The wanted bootloader protected size in bytes. If this - * size is not supported, the actual size will be the - * nearest greater available size or the maximal possible - * size if the requested size is too large. - * - * \return The actual bootloader protected size in bytes. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern unsigned int flashc_set_bootloader_protected_size(unsigned int bootprot_size); - -/*! \brief Tells whether external privileged fetch is locked. - * - * \return Whether external privileged fetch is locked. - */ -extern Bool flashc_is_external_privileged_fetch_locked(void); - -/*! \brief Locks or unlocks external privileged fetch. - * - * \param lock Whether to lock external privileged fetch: \c TRUE or \c FALSE. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_external_privileged_fetch(Bool lock); - -/*! \brief Tells whether the region of a page is locked. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \return Whether the region of the specified page is locked. - */ -extern Bool flashc_is_page_region_locked(int page_number); - -/*! \brief Tells whether a region is locked. - * - * \param region The region number: \c 0 to (AVR32_FLASHC_REGIONS - 1). - * - * \return Whether the specified region is locked. - */ -extern Bool flashc_is_region_locked(unsigned int region); - -/*! \brief Locks or unlocks the region of a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * \param lock Whether to lock the region of the specified page: \c TRUE or - * \c FALSE. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_page_region(int page_number, Bool lock); - -/*! \brief Locks or unlocks a region. - * - * \param region The region number: \c 0 to (AVR32_FLASHC_REGIONS - 1). - * \param lock Whether to lock the specified region: \c TRUE or \c FALSE. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_region(unsigned int region, Bool lock); - -/*! \brief Locks or unlocks all regions. - * - * \param lock Whether to lock the regions: \c TRUE or \c FALSE. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_lock_all_regions(Bool lock); - -//! @} - - -/*! \name Access to General-Purpose Fuses - */ -//! @{ - -/*! \brief Reads a general-purpose fuse bit. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * - * \return The value of the specified general-purpose fuse bit. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_read_gp_fuse_bit(unsigned int gp_fuse_bit); - -/*! \brief Reads a general-purpose fuse bit-field. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * - * \return The value of the specified general-purpose fuse bit-field. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern U64 flashc_read_gp_fuse_bitfield(unsigned int pos, unsigned int width); - -/*! \brief Reads a general-purpose fuse byte. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * - * \return The value of the specified general-purpose fuse byte. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern U8 flashc_read_gp_fuse_byte(unsigned int gp_fuse_byte); - -/*! \brief Reads all general-purpose fuses. - * - * \return The value of all general-purpose fuses as a word. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern U64 flashc_read_all_gp_fuses(void); - -/*! \brief Erases a general-purpose fuse bit. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_gp_fuse_bit(unsigned int gp_fuse_bit, Bool check); - -/*! \brief Erases a general-purpose fuse bit-field. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_gp_fuse_bitfield(unsigned int pos, unsigned int width, Bool check); - -/*! \brief Erases a general-purpose fuse byte. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_gp_fuse_byte(unsigned int gp_fuse_byte, Bool check); - -/*! \brief Erases all general-purpose fuses. - * - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern Bool flashc_erase_all_gp_fuses(Bool check); - -/*! \brief Writes a general-purpose fuse bit. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * \param value The value of the specified general-purpose fuse bit. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value); - -/*! \brief Writes a general-purpose fuse bit-field. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * \param value The value of the specified general-purpose fuse bit-field. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value); - -/*! \brief Writes a general-purpose fuse byte. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * \param value The value of the specified general-purpose fuse byte. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value); - -/*! \brief Writes all general-purpose fuses. - * - * \param value The value of all general-purpose fuses as a word. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_write_all_gp_fuses(U64 value); - -/*! \brief Sets a general-purpose fuse bit with the appropriate erase and write - * operations. - * - * \param gp_fuse_bit The general-purpose fuse bit: \c 0 to \c 63. - * \param value The value of the specified general-purpose fuse bit. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_gp_fuse_bit(unsigned int gp_fuse_bit, Bool value); - -/*! \brief Sets a general-purpose fuse bit-field with the appropriate erase and - * write operations. - * - * \param pos The bit-position of the general-purpose fuse bit-field: \c 0 to - * \c 63. - * \param width The bit-width of the general-purpose fuse bit-field: \c 0 to - * \c 64. - * \param value The value of the specified general-purpose fuse bit-field. - * - * \warning A Lock Error is issued if the Security bit is active and the command - * is applied to BOOTPROT or EPFL fuses. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_gp_fuse_bitfield(unsigned int pos, unsigned int width, U64 value); - -/*! \brief Sets a general-purpose fuse byte with the appropriate erase and write - * operations. - * - * \param gp_fuse_byte The general-purpose fuse byte: \c 0 to \c 7. - * \param value The value of the specified general-purpose fuse byte. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_gp_fuse_byte(unsigned int gp_fuse_byte, U8 value); - -/*! \brief Sets all general-purpose fuses with the appropriate erase and write - * operations. - * - * \param value The value of all general-purpose fuses as a word. - * - * \warning A Lock Error is issued if the Security bit is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note The actual number of general-purpose fuse bits implemented by hardware - * is given by \c AVR32_FLASHC_GPF_NUM. The other bits among the 64 are - * fixed at 1 by hardware. - */ -extern void flashc_set_all_gp_fuses(U64 value); - -//! @} - - -/*! \name Access to Flash Pages - */ -//! @{ - -/*! \brief Clears the page buffer. - * - * This command resets all bits in the page buffer to one. Write accesses to the - * page buffer can only change page buffer bits from one to zero. - * - * \warning The page buffer is not automatically reset after a page write. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern void flashc_clear_page_buffer(void); - -/*! \brief Tells whether the page to which the last Quick Page Read or Quick - * Page Read User Page command was applied was erased. - * - * \return Whether the page to which the last Quick Page Read or Quick Page Read - * User Page command was applied was erased. - */ -extern Bool flashc_is_page_erased(void); - -/*! \brief Applies the Quick Page Read command to a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \return Whether the specified page is erased. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern Bool flashc_quick_page_read(int page_number); - -/*! \brief Erases a page. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if the command is applied to a page belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern Bool flashc_erase_page(int page_number, Bool check); - -/*! \brief Erases all pages within the flash array. - * - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \warning A Lock Error is issued if at least one region is locked or the - * bootloader protection is active. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern Bool flashc_erase_all_pages(Bool check); - -/*! \brief Writes a page from the page buffer. - * - * \param page_number The page number: - * \arg \c 0 to (flashc_get_page_count() - 1): a page number within - * the flash array; - * \arg < 0: the current page number. - * - * \warning A Lock Error is issued if the command is applied to a page belonging - * to a locked region or to the bootloader protected area. - * - * \warning The page buffer is not automatically reset after a page write. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - */ -extern void flashc_write_page(int page_number); - -/*! \brief Issues a Quick Page Read User Page command to the FLASHC. - * - * \return Whether the User page is erased. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern Bool flashc_quick_user_page_read(void); - -/*! \brief Erases the User page. - * - * \param check Whether to check erase: \c TRUE or \c FALSE. - * - * \return Whether the erase succeeded or always \c TRUE if erase check was not - * requested. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note An erase operation can only set bits. - */ -extern Bool flashc_erase_user_page(Bool check); - -/*! \brief Writes the User page from the page buffer. - * - * \warning The page buffer is not automatically reset after a page write. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - * - * \note A write operation can only clear bits. - */ -extern void flashc_write_user_page(void); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src source byte. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source byte. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset8(volatile void *dst, U8 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source half-word. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source half-word. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset16(volatile void *dst, U16 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source word. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source word. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset32(volatile void *dst, U32 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source double-word. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source double-word. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memset64(volatile void *dst, U64 src, size_t nbytes, Bool erase); - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the repeated \a src big-endian source pattern. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Source double-word. - * \param src_width \a src width in bits: 8, 16, 32 or 64. - * \param nbytes Number of bytes to set. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -#define flashc_memset(dst, src, src_width, nbytes, erase) \ - TPASTE2(flashc_memset, src_width)((dst), (src), (nbytes), (erase)) - -/*! \brief Copies \a nbytes bytes to the flash destination pointed to by \a dst - * from the source pointed to by \a src. - * - * The destination areas that are not within the flash array or the User page - * are ignored. - * - * All pointer and size alignments are supported. - * - * \param dst Pointer to flash destination. - * \param src Pointer to source data. - * \param nbytes Number of bytes to copy. - * \param erase Whether to erase before writing: \c TRUE or \c FALSE. - * - * \return The value of \a dst. - * - * \warning If copying takes place between areas that overlap, the behavior is - * undefined. - * - * \warning This function may be called with \a erase set to \c FALSE only if - * the destination consists only of erased words, i.e. this function - * can not be used to write only one bit of a previously written word. - * E.g., if \c 0x00000001 then \c 0xFFFFFFFE are written to a word, the - * resulting value in flash may be different from \c 0x00000000. - * - * \warning A Lock Error is issued if the command is applied to pages belonging - * to a locked region or to the bootloader protected area. - * - * \note The FLASHC error status returned by \ref flashc_is_lock_error and - * \ref flashc_is_programming_error is updated. - */ -extern volatile void *flashc_memcpy(volatile void *dst, const void *src, size_t nbytes, Bool erase); - -#if UC3C - -/*! \brief Depednding to the CPU frequency, set the wait states of flash read - * accesses and enable or disable the High speed read mode. - * - * \param cpu_f_hz The CPU frequency - */ -void flashc_set_flash_waitstate_and_readmode(unsigned long cpu_f_hz); -#endif // UC3C device-specific implementation - -//! @} - - -#endif // _FLASHC_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c deleted file mode 100644 index b6b83c73fcc..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.c +++ /dev/null @@ -1,458 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief GPIO driver for AVR32 UC3. - * - * This file defines a useful set of functions for the GPIO. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a GPIO module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "gpio.h" - -//! GPIO module instance. -#define GPIO AVR32_GPIO - - -/*! \name Peripheral Bus Interface - */ -//! @{ - - -int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size) -{ - int status = GPIO_SUCCESS; - unsigned int i; - - for (i = 0; i < size; i++) - { - status |= gpio_enable_module_pin(gpiomap->pin, gpiomap->function); - gpiomap++; - } - - return status; -} - - -int gpio_enable_module_pin(unsigned int pin, unsigned int function) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Enable the correct function. - switch (function) - { - case 0: // A function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - - case 1: // B function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - - case 2: // C function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - - case 3: // D function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pmr2c = 1 << (pin & 0x1F); -#endif - break; - -#if defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - case 4: // E function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; - - case 5: // F function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1c = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; - - case 6: // G function. - gpio_port->pmr0c = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; - - case 7: // H function. - gpio_port->pmr0s = 1 << (pin & 0x1F); - gpio_port->pmr1s = 1 << (pin & 0x1F); - gpio_port->pmr2s = 1 << (pin & 0x1F); - break; -#endif - - default: - return GPIO_INVALID_ARGUMENT; - } - - // Disable GPIO control. - gpio_port->gperc = 1 << (pin & 0x1F); - - return GPIO_SUCCESS; -} - - -void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size) -{ - unsigned int i; - - for (i = 0; i < size; i++) - { - gpio_enable_gpio_pin(gpiomap->pin); - gpiomap++; - } -} - - -void gpio_enable_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->oderc = 1 << (pin & 0x1F); - gpio_port->gpers = 1 << (pin & 0x1F); -} - - -// The open-drain mode is not synthesized on the current AVR32 products. -// If one day some AVR32 products have this feature, the corresponding part -// numbers should be listed in the #if below. -// Note that other functions are available in this driver to use pins with open -// drain in GPIO mode. The advantage of the open-drain mode functions over these -// other functions is that they can be used not only in GPIO mode but also in -// module mode. -#if 0 - - -void gpio_enable_pin_open_drain(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->odmers = 1 << (pin & 0x1F); -} - - -void gpio_disable_pin_open_drain(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->odmerc = 1 << (pin & 0x1F); -} - - -#endif - - -void gpio_enable_pin_pull_up(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puers = 1 << (pin & 0x1F); -#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) - gpio_port->pderc = 1 << (pin & 0x1F); -#endif -} - - -void gpio_disable_pin_pull_up(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puerc = 1 << (pin & 0x1F); -} - -#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) -// Added support of Pull-up Resistor, Pull-down Resistor and Buskeeper Control. - -/*! \brief Enables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -void gpio_enable_pin_pull_down(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puerc = 1 << (pin & 0x1F); - gpio_port->pders = 1 << (pin & 0x1F); -} - -/*! \brief Disables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -void gpio_disable_pin_pull_down(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->pderc = 1 << (pin & 0x1F); -} - -/*! \brief Enables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -void gpio_enable_pin_buskeeper(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puers = 1 << (pin & 0x1F); - gpio_port->pders = 1 << (pin & 0x1F); -} - -/*! \brief Disables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -void gpio_disable_pin_buskeeper(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->puerc = 1 << (pin & 0x1F); - gpio_port->pderc = 1 << (pin & 0x1F); -} - -#endif - -int gpio_get_pin_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->pvr >> (pin & 0x1F)) & 1; -} - - -int gpio_get_gpio_pin_output_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->ovr >> (pin & 0x1F)) & 1; -} - - -int gpio_get_gpio_open_drain_pin_output_value(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return ((gpio_port->oder >> (pin & 0x1F)) & 1) ^ 1; -} - - -void gpio_set_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrs = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 1. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_clr_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 0. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_tgl_gpio_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrt = 1 << (pin & 0x1F); // Toggle the I/O line. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_set_gpio_open_drain_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->oderc = 1 << (pin & 0x1F); // The GPIO output driver is disabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_clr_gpio_open_drain_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line: 0. - gpio_port->oders = 1 << (pin & 0x1F); // The GPIO output driver is enabled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_tgl_gpio_open_drain_pin(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - gpio_port->ovrc = 1 << (pin & 0x1F); // Value to be driven on the I/O line if the GPIO output driver is enabled: 0. - gpio_port->odert = 1 << (pin & 0x1F); // The GPIO output driver is toggled for that pin. - gpio_port->gpers = 1 << (pin & 0x1F); // The GPIO module controls that pin. -} - - -void gpio_enable_pin_glitch_filter(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->gfers = 1 << (pin & 0x1F); -} - - -void gpio_disable_pin_glitch_filter(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->gferc = 1 << (pin & 0x1F); -} - -/*! \brief Configure the edge detector of an input pin - * - * \param pin The pin number. - * \param mode The edge detection mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE - * or \ref GPIO_FALLING_EDGE). - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -static int gpio_configure_edge_detector(unsigned int pin, unsigned int mode) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Configure the edge detector. - switch (mode) - { - case GPIO_PIN_CHANGE: - gpio_port->imr0c = 1 << (pin & 0x1F); - gpio_port->imr1c = 1 << (pin & 0x1F); - break; - - case GPIO_RISING_EDGE: - gpio_port->imr0s = 1 << (pin & 0x1F); - gpio_port->imr1c = 1 << (pin & 0x1F); - break; - - case GPIO_FALLING_EDGE: - gpio_port->imr0c = 1 << (pin & 0x1F); - gpio_port->imr1s = 1 << (pin & 0x1F); - break; - - default: - return GPIO_INVALID_ARGUMENT; - } - - return GPIO_SUCCESS; -} - - -int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - // Enable the glitch filter. - gpio_port->gfers = 1 << (pin & 0x1F); - - // Configure the edge detector. - if(GPIO_INVALID_ARGUMENT == gpio_configure_edge_detector(pin, mode)) - return(GPIO_INVALID_ARGUMENT); - - // Enable interrupt. - gpio_port->iers = 1 << (pin & 0x1F); - - return GPIO_SUCCESS; -} - - -void gpio_disable_pin_interrupt(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->ierc = 1 << (pin & 0x1F); -} - - -int gpio_get_pin_interrupt_flag(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - return (gpio_port->ifr >> (pin & 0x1F)) & 1; -} - - -void gpio_clear_pin_interrupt_flag(unsigned int pin) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - gpio_port->ifrc = 1 << (pin & 0x1F); -} - - -//# -//# Peripheral Event System Support. -//# -#if UC3L -int gpio_configure_pin_periph_event_mode(unsigned int pin, unsigned int mode, unsigned int use_igf) -{ - volatile avr32_gpio_port_t *gpio_port = &GPIO.port[pin >> 5]; - - if(TRUE == use_igf) - { - // Enable the glitch filter. - gpio_port->gfers = 1 << (pin & 0x1F); - } - else - { - // Disable the glitch filter. - gpio_port->gferc = 1 << (pin & 0x1F); - } - - // Configure the edge detector. - return(gpio_configure_edge_detector(pin, mode)); -} - -#endif - -//! @} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h deleted file mode 100644 index f0b5fd884c0..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO/gpio.h +++ /dev/null @@ -1,583 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief GPIO header for AVR32 UC3. - * - * This file contains basic GPIO driver functions. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a GPIO module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _GPIO_H_ -#define _GPIO_H_ - -#include -#include "compiler.h" - -/*! \name Return Values of the GPIO API - */ -//! @{ -#define GPIO_SUCCESS 0 //!< Function successfully completed. -#define GPIO_INVALID_ARGUMENT 1 //!< Input parameters are out of range. -//! @} - - -/*! \name Interrupt Trigger Modes - */ -//! @{ -#define GPIO_PIN_CHANGE 0 //!< Interrupt triggered upon pin change. -#define GPIO_RISING_EDGE 1 //!< Interrupt triggered upon rising edge. -#define GPIO_FALLING_EDGE 2 //!< Interrupt triggered upon falling edge. -//! @} - - -//! A type definition of pins and modules connectivity. -typedef struct -{ - unsigned char pin; //!< Module pin. - unsigned char function; //!< Module function. -} gpio_map_t[]; - - -/*! \name Peripheral Bus Interface - * - * Low-speed interface with a non-deterministic number of clock cycles per - * access. - * - * This interface operates with lower clock frequencies (fPB <= fCPU), and its - * timing is not deterministic since it needs to access a shared bus which may - * be heavily loaded. - * - * \note This interface is immediately available without initialization. - */ -//! @{ - -/*! \brief Enables specific module modes for a set of pins. - * - * \param gpiomap The pin map. - * \param size The number of pins in \a gpiomap. - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_module(const gpio_map_t gpiomap, unsigned int size); - -/*! \brief Enables a specific module mode for a pin. - * - * \param pin The pin number.\n - * Refer to the product header file `uc3x.h' (where x is the part - * number; e.g. x = a0512) for module pins. E.g., to enable a PWM - * channel output, the pin number can be AVR32_PWM_3_PIN for PWM - * channel 3. - * \param function The pin function.\n - * Refer to the product header file `uc3x.h' (where x is the - * part number; e.g. x = a0512) for module pin functions. E.g., - * to enable a PWM channel output, the pin function can be - * AVR32_PWM_3_FUNCTION for PWM channel 3. - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_module_pin(unsigned int pin, unsigned int function); - -/*! \brief Enables the GPIO mode of a set of pins. - * - * \param gpiomap The pin map. - * \param size The number of pins in \a gpiomap. - */ -extern void gpio_enable_gpio(const gpio_map_t gpiomap, unsigned int size); - -/*! \brief Enables the GPIO mode of a pin. - * - * \param pin The pin number.\n - * Refer to the product header file `uc3x.h' (where x is the part - * number; e.g. x = a0512) for pin definitions. E.g., to enable the - * GPIO mode of PX21, AVR32_PIN_PX21 can be used. Module pins such as - * AVR32_PWM_3_PIN for PWM channel 3 can also be used to release - * module pins for GPIO. - */ -extern void gpio_enable_gpio_pin(unsigned int pin); - -// The open-drain mode is not synthesized on the current AVR32 products. -// If one day some AVR32 products have this feature, the corresponding part -// numbers should be listed in the #if below. -// Note that other functions are available in this driver to use pins with open -// drain in GPIO mode. The advantage of the open-drain mode functions over these -// other functions is that they can be used not only in GPIO mode but also in -// module mode. -#if 0 - -/*! \brief Enables the open-drain mode of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_open_drain(unsigned int pin); - -/*! \brief Disables the open-drain mode of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_open_drain(unsigned int pin); - -#endif - -/*! \brief Enables the pull-up resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_pull_up(unsigned int pin); - -/*! \brief Disables the pull-up resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_pull_up(unsigned int pin); - -#if defined(AVR32_GPIO_200_H_INCLUDED) || defined(AVR32_GPIO_210_H_INCLUDED) || defined(AVR32_GPIO_211_H_INCLUDED) -// Added support of Pull-up Resistor, Pull-down Resistor and Buskeeper Control. - -/*! \brief Enables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_pull_down(unsigned int pin); - -/*! \brief Disables the pull-down resistor of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_pull_down(unsigned int pin); - -/*! \brief Enables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_buskeeper(unsigned int pin); - -/*! \brief Disables the buskeeper functionality on a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_buskeeper(unsigned int pin); - -#endif - -/*! \brief Returns the value of a pin. - * - * \param pin The pin number. - * - * \return The pin value. - */ -extern int gpio_get_pin_value(unsigned int pin); - -/*! \brief Returns the output value set for a GPIO pin. - * - * \param pin The pin number. - * - * \return The pin output value. - * - * \note This function must be used in conjunction with \ref gpio_set_gpio_pin, - * \ref gpio_clr_gpio_pin and \ref gpio_tgl_gpio_pin. - */ -extern int gpio_get_gpio_pin_output_value(unsigned int pin); - -/*! \brief Returns the output value set for a GPIO pin using open drain. - * - * \param pin The pin number. - * - * \return The pin output value. - * - * \note This function must be used in conjunction with - * \ref gpio_set_gpio_open_drain_pin, \ref gpio_clr_gpio_open_drain_pin - * and \ref gpio_tgl_gpio_open_drain_pin. - */ -extern int gpio_get_gpio_open_drain_pin_output_value(unsigned int pin); - -/*! \brief Drives a GPIO pin to 1. - * - * \param pin The pin number. - */ -extern void gpio_set_gpio_pin(unsigned int pin); - -/*! \brief Drives a GPIO pin to 0. - * - * \param pin The pin number. - */ -extern void gpio_clr_gpio_pin(unsigned int pin); - -/*! \brief Toggles a GPIO pin. - * - * \param pin The pin number. - */ -extern void gpio_tgl_gpio_pin(unsigned int pin); - -/*! \brief Drives a GPIO pin to 1 using open drain. - * - * \param pin The pin number. - */ -extern void gpio_set_gpio_open_drain_pin(unsigned int pin); - -/*! \brief Drives a GPIO pin to 0 using open drain. - * - * \param pin The pin number. - */ -extern void gpio_clr_gpio_open_drain_pin(unsigned int pin); - -/*! \brief Toggles a GPIO pin using open drain. - * - * \param pin The pin number. - */ -extern void gpio_tgl_gpio_open_drain_pin(unsigned int pin); - -/*! \brief Enables the glitch filter of a pin. - * - * When the glitch filter is enabled, a glitch with duration of less than 1 - * clock cycle is automatically rejected, while a pulse with duration of 2 clock - * cycles or more is accepted. For pulse durations between 1 clock cycle and 2 - * clock cycles, the pulse may or may not be taken into account, depending on - * the precise timing of its occurrence. Thus for a pulse to be guaranteed - * visible it must exceed 2 clock cycles, whereas for a glitch to be reliably - * filtered out, its duration must not exceed 1 clock cycle. The filter - * introduces 2 clock cycles latency. - * - * \param pin The pin number. - */ -extern void gpio_enable_pin_glitch_filter(unsigned int pin); - -/*! \brief Disables the glitch filter of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_glitch_filter(unsigned int pin); - -/*! \brief Enables the interrupt of a pin with the specified settings. - * - * \param pin The pin number. - * \param mode The trigger mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE or - * \ref GPIO_FALLING_EDGE). - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_enable_pin_interrupt(unsigned int pin, unsigned int mode); - -/*! \brief Disables the interrupt of a pin. - * - * \param pin The pin number. - */ -extern void gpio_disable_pin_interrupt(unsigned int pin); - -/*! \brief Gets the interrupt flag of a pin. - * - * \param pin The pin number. - * - * \return The pin interrupt flag. - */ -extern int gpio_get_pin_interrupt_flag(unsigned int pin); - -/*! \brief Clears the interrupt flag of a pin. - * - * \param pin The pin number. - */ -extern void gpio_clear_pin_interrupt_flag(unsigned int pin); - -//! @} - - -#if (defined AVR32_GPIO_LOCAL_ADDRESS) -/*! \name Local Bus Interface - * - * High-speed interface with only one clock cycle per access. - * - * This interface operates with high clock frequency (fCPU), and its timing is - * deterministic since it does not need to access a shared bus which may be - * heavily loaded. - * - * \warning To use this interface, the clock frequency of the peripheral bus on - * which the GPIO peripheral is connected must be set to the CPU clock - * frequency (fPB = fCPU). - * - * \note This interface has to be initialized in order to be available. - */ -//! @{ - -/*! \brief Enables the local bus interface for GPIO. - * - * \note This function must have been called at least once before using other - * functions in this interface. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_init(void) -{ - Set_system_register(AVR32_CPUCR, - Get_system_register(AVR32_CPUCR) | AVR32_CPUCR_LOCEN_MASK); -} - -/*! \brief Enables the output driver of a pin. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_enable_pin_output_driver(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oders = 1 << (pin & 0x1F); -} - -/*! \brief Disables the output driver of a pin. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_disable_pin_output_driver(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oderc = 1 << (pin & 0x1F); -} - -/*! \brief Returns the value of a pin. - * - * \param pin The pin number. - * - * \return The pin value. - * - * \note \ref gpio_local_init must have been called beforehand. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int gpio_local_get_pin_value(unsigned int pin) -{ - return (AVR32_GPIO_LOCAL.port[pin >> 5].pvr >> (pin & 0x1F)) & 1; -} - -/*! \brief Drives a GPIO pin to 1. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin nor its output - * driver. \ref gpio_enable_gpio_pin and - * \ref gpio_local_enable_pin_output_driver can be called for this - * purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_set_gpio_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrs = 1 << (pin & 0x1F); -} - -/*! \brief Drives a GPIO pin to 0. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin nor its output - * driver. \ref gpio_enable_gpio_pin and - * \ref gpio_local_enable_pin_output_driver can be called for this - * purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_clr_gpio_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrc = 1 << (pin & 0x1F); -} - -/*! \brief Toggles a GPIO pin. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init must have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin nor its output - * driver. \ref gpio_enable_gpio_pin and - * \ref gpio_local_enable_pin_output_driver can be called for this - * purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_tgl_gpio_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrt = 1 << (pin & 0x1F); -} - -/*! \brief Initializes the configuration of a GPIO pin so that it can be used - * with GPIO open-drain functions. - * - * \note This function must have been called at least once before using - * \ref gpio_local_set_gpio_open_drain_pin, - * \ref gpio_local_clr_gpio_open_drain_pin or - * \ref gpio_local_tgl_gpio_open_drain_pin. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_init_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].ovrc = 1 << (pin & 0x1F); -} - -/*! \brief Drives a GPIO pin to 1 using open drain. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must - * have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_set_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oderc = 1 << (pin & 0x1F); -} - -/*! \brief Drives a GPIO pin to 0 using open drain. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must - * have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_clr_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].oders = 1 << (pin & 0x1F); -} - -/*! \brief Toggles a GPIO pin using open drain. - * - * \param pin The pin number. - * - * \note \ref gpio_local_init and \ref gpio_local_init_gpio_open_drain_pin must - * have been called beforehand. - * - * \note This function does not enable the GPIO mode of the pin. - * \ref gpio_enable_gpio_pin can be called for this purpose. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_local_tgl_gpio_open_drain_pin(unsigned int pin) -{ - AVR32_GPIO_LOCAL.port[pin >> 5].odert = 1 << (pin & 0x1F); -} - -//! @} -#endif // AVR32_GPIO_LOCAL_ADDRESS - -#if UC3L -//! @{ -/*! \name Peripheral Event System support - * - * The GPIO can be programmed to output peripheral events whenever an interrupt - * condition is detected, such as pin value change, or only when a rising or - * falling edge is detected. - * - */ - -/*! \brief Enables the peripheral event generation of a pin. - * - * \param pin The pin number. - * - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_enable_pin_periph_event(unsigned int pin) -{ - AVR32_GPIO.port[pin >> 5].oderc = 1 << (pin & 0x1F); // The GPIO output driver is disabled for that pin. - AVR32_GPIO.port[pin >> 5].evers = 1 << (pin & 0x1F); -} - -/*! \brief Disables the peripheral event generation of a pin. - * - * \param pin The pin number. - * - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void gpio_disable_pin_periph_event(unsigned int pin) -{ - AVR32_GPIO.port[pin >> 5].everc = 1 << (pin & 0x1F); -} - -/*! \brief Configure the peripheral event trigger mode of a pin - * - * \param pin The pin number. - * \param mode The trigger mode (\ref GPIO_PIN_CHANGE, \ref GPIO_RISING_EDGE or - * \ref GPIO_FALLING_EDGE). - * \param use_igf use the Input Glitch Filter (TRUE) or not (FALSE). - * - * \return \ref GPIO_SUCCESS or \ref GPIO_INVALID_ARGUMENT. - */ -extern int gpio_configure_pin_periph_event_mode(unsigned int pin, unsigned int mode, unsigned int use_igf); - -//! @} -#endif - - -#endif // _GPIO_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x deleted file mode 100644 index ec4109d4621..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/exception.x +++ /dev/null @@ -1,239 +0,0 @@ -/* This file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Exception and interrupt vectors. - * - * This file maps all events supported by an AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#if !__AVR32_UC__ && !__AVR32_AP__ - #error Implementation of the AVR32 architecture not supported by the INTC driver. -#endif - - -#include - - -//! @{ -//! \verbatim - - - .section .exception, "ax", @progbits - - -// Start of Exception Vector Table. - - // EVBA must be aligned with a power of two strictly greater than the EVBA- - // relative offset of the last vector. - .balign 0x200 - - // Export symbol. - .global _evba - .type _evba, @function -_evba: - - .org 0x000 - // Unrecoverable Exception. -_handle_Unrecoverable_Exception: - rjmp $ - - .org 0x004 - // TLB Multiple Hit. -_handle_TLB_Multiple_Hit: - rjmp $ - - .org 0x008 - // Bus Error Data Fetch. -_handle_Bus_Error_Data_Fetch: - rjmp $ - - .org 0x00C - // Bus Error Instruction Fetch. -_handle_Bus_Error_Instruction_Fetch: - rjmp $ - - .org 0x010 - // NMI. -_handle_NMI: - rjmp $ - - .org 0x014 - // Instruction Address. -_handle_Instruction_Address: - rjmp $ - - .org 0x018 - // ITLB Protection. -_handle_ITLB_Protection: - rjmp $ - - .org 0x01C - // Breakpoint. -_handle_Breakpoint: - rjmp $ - - .org 0x020 - // Illegal Opcode. -_handle_Illegal_Opcode: - rjmp $ - - .org 0x024 - // Unimplemented Instruction. -_handle_Unimplemented_Instruction: - rjmp $ - - .org 0x028 - // Privilege Violation. -_handle_Privilege_Violation: - rjmp $ - - .org 0x02C - // Floating-Point: UNUSED IN AVR32UC and AVR32AP. -_handle_Floating_Point: - rjmp $ - - .org 0x030 - // Coprocessor Absent: UNUSED IN AVR32UC. -_handle_Coprocessor_Absent: - rjmp $ - - .org 0x034 - // Data Address (Read). -_handle_Data_Address_Read: - rjmp $ - - .org 0x038 - // Data Address (Write). -_handle_Data_Address_Write: - rjmp $ - - .org 0x03C - // DTLB Protection (Read). -_handle_DTLB_Protection_Read: - rjmp $ - - .org 0x040 - // DTLB Protection (Write). -_handle_DTLB_Protection_Write: - rjmp $ - - .org 0x044 - // DTLB Modified: UNUSED IN AVR32UC. -_handle_DTLB_Modified: - rjmp $ - - .org 0x050 - // ITLB Miss. -_handle_ITLB_Miss: - rjmp $ - - .org 0x060 - // DTLB Miss (Read). -_handle_DTLB_Miss_Read: - rjmp $ - - .org 0x070 - // DTLB Miss (Write). -_handle_DTLB_Miss_Write: - rjmp $ - - .org 0x100 - // Supervisor Call. -_handle_Supervisor_Call: - rjmp $ - - -// Interrupt support. -// The interrupt controller must provide the offset address relative to EVBA. -// Important note: -// All interrupts call a C function named _get_interrupt_handler. -// This function will read group and interrupt line number to then return in -// R12 a pointer to a user-provided interrupt handler. - - .balign 4 - - .irp priority, 0, 1, 2, 3 -_int\priority: -#if __AVR32_UC__ - // R8-R12, LR, PC and SR are automatically pushed onto the system stack by the - // CPU upon interrupt entry. No other register is saved by hardware. -#elif __AVR32_AP__ - // PC and SR are automatically saved in respectively RAR_INTx and RSR_INTx by - // the CPU upon interrupt entry. No other register is saved by hardware. - pushm r8-r12, lr -#endif - mov r12, \priority // Pass the int_level parameter to the _get_interrupt_handler function. - call _get_interrupt_handler - cp.w r12, 0 // Get the pointer to the interrupt handler returned by the function. -#if __AVR32_UC__ - movne pc, r12 // If this was not a spurious interrupt (R12 != NULL), jump to the handler. -#elif __AVR32_AP__ - breq spint\priority // If this was a spurious interrupt (R12 == NULL), branch. - st.w --sp, r12 // Push the pointer to the interrupt handler onto the system stack since no register may be altered. - popm r8-r12, lr, pc // Restore registers and jump to the handler. -spint\priority: - popm r8-r12, lr -#endif - rete // If this was a spurious interrupt (R12 == NULL), return from event handler. - .endr - - -// Constant data area. - - .balign 4 - - // Values to store in the interrupt priority registers for the various interrupt priority levels. - // The interrupt priority registers contain the interrupt priority level and - // the EVBA-relative interrupt vector offset. - .global ipr_val - .type ipr_val, @object -ipr_val: - .word (AVR32_INTC_INT0 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int0 - _evba),\ - (AVR32_INTC_INT1 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int1 - _evba),\ - (AVR32_INTC_INT2 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int2 - _evba),\ - (AVR32_INTC_INT3 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (_int3 - _evba) - - -//! \endverbatim -//! @} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c deleted file mode 100644 index 84d498d1a59..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.c +++ /dev/null @@ -1,214 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief INTC driver for AVR32 UC3. - * - * AVR32 Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include -#include "compiler.h" -#include "preprocessor.h" -#include "intc.h" - -// define _evba from exception.S -extern void _evba; - -//! Values to store in the interrupt priority registers for the various interrupt priority levels. -extern const unsigned int ipr_val[AVR32_INTC_NUM_INT_LEVELS]; - -//! Creates a table of interrupt line handlers per interrupt group in order to optimize RAM space. -//! Each line handler table contains a set of pointers to interrupt handlers. -#if (defined __GNUC__) -#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \ -static volatile __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)]; -#elif (defined __ICCAVR32__) -#define DECL_INT_LINE_HANDLER_TABLE(GRP, unused) \ -static volatile __no_init __int_handler _int_line_handler_table_##GRP[Max(AVR32_INTC_NUM_IRQS_PER_GRP##GRP, 1)]; -#endif -MREPEAT(AVR32_INTC_NUM_INT_GRPS, DECL_INT_LINE_HANDLER_TABLE, ~); -#undef DECL_INT_LINE_HANDLER_TABLE - -//! Table containing for each interrupt group the number of interrupt request -//! lines and a pointer to the table of interrupt line handlers. -static const struct -{ - unsigned int num_irqs; - volatile __int_handler *_int_line_handler_table; -} _int_handler_table[AVR32_INTC_NUM_INT_GRPS] = -{ -#define INSERT_INT_LINE_HANDLER_TABLE(GRP, unused) \ - {AVR32_INTC_NUM_IRQS_PER_GRP##GRP, _int_line_handler_table_##GRP}, - MREPEAT(AVR32_INTC_NUM_INT_GRPS, INSERT_INT_LINE_HANDLER_TABLE, ~) -#undef INSERT_INT_LINE_HANDLER_TABLE -}; - - -/*! \brief Default interrupt handler. - * - * \note Taken and adapted from Newlib. - */ -#if (defined __GNUC__) -__attribute__((__interrupt__)) -#elif (defined __ICCAVR32__) -__interrupt -#endif -static void _unhandled_interrupt(void) -{ - // Catch unregistered interrupts. - while (TRUE); -} - - -/*! \brief Gets the interrupt handler of the current event at the \a int_level - * interrupt priority level (called from exception.S). - * - * \param int_level Interrupt priority level to handle. - * - * \return Interrupt handler to execute. - * - * \note Taken and adapted from Newlib. - */ -__int_handler _get_interrupt_handler(unsigned int int_level) -{ - // ICR3 is mapped first, ICR0 last. - // Code in exception.S puts int_level in R12 which is used by AVR32-GCC to - // pass a single argument to a function. - unsigned int int_grp = AVR32_INTC.icr[AVR32_INTC_INT3 - int_level]; - unsigned int int_req = AVR32_INTC.irr[int_grp]; - - // As an interrupt may disappear while it is being fetched by the CPU - // (spurious interrupt caused by a delayed response from an MCU peripheral to - // an interrupt flag clear or interrupt disable instruction), check if there - // are remaining interrupt lines to process. - // If a spurious interrupt occurs, the status register (SR) contains an - // execution mode and interrupt level masks corresponding to a level 0 - // interrupt, whatever the interrupt priority level causing the spurious - // event. This behavior has been chosen because a spurious interrupt has not - // to be a priority one and because it may not cause any trouble to other - // interrupts. - // However, these spurious interrupts place the hardware in an unstable state - // and could give problems in other/future versions of the CPU, so the - // software has to be written so that they never occur. The only safe way of - // achieving this is to always clear or disable peripheral interrupts with the - // following sequence: - // 1: Mask the interrupt in the CPU by setting GM (or IxM) in SR. - // 2: Perform the bus access to the peripheral register that clears or - // disables the interrupt. - // 3: Wait until the interrupt has actually been cleared or disabled by the - // peripheral. This is usually performed by reading from a register in the - // same peripheral (it DOES NOT have to be the same register that was - // accessed in step 2, but it MUST be in the same peripheral), what takes - // bus system latencies into account, but peripheral internal latencies - // (generally 0 cycle) also have to be considered. - // 4: Unmask the interrupt in the CPU by clearing GM (or IxM) in SR. - // Note that steps 1 and 4 are useless inside interrupt handlers as the - // corresponding interrupt level is automatically masked by IxM (unless IxM is - // explicitly cleared by the software). - // - // Get the right IRQ handler. - // - // If several interrupt lines are active in the group, the interrupt line with - // the highest number is selected. This is to be coherent with the - // prioritization of interrupt groups performed by the hardware interrupt - // controller. - // - // If no handler has been registered for the pending interrupt, - // _unhandled_interrupt will be selected thanks to the initialization of - // _int_line_handler_table_x by INTC_init_interrupts. - // - // exception.S will provide the interrupt handler with a clean interrupt stack - // frame, with nothing more pushed onto the stack. The interrupt handler must - // manage the `rete' instruction, what can be done thanks to pure assembly, - // inline assembly or the `__attribute__((__interrupt__))' C function - // attribute. - return (int_req) ? _int_handler_table[int_grp]._int_line_handler_table[32 - clz(int_req) - 1] : NULL; -} - -//! Init EVBA address. This sequence might also be done in the UTILS/STARTUP/GCC/crt0.S -static __inline__ void INTC_init_evba(void) -{ - Set_system_register(AVR32_EVBA, (int)&_evba ); -} - -void INTC_init_interrupts(void) -{ - unsigned int int_grp, int_req; - - INTC_init_evba(); - - // For all interrupt groups, - for (int_grp = 0; int_grp < AVR32_INTC_NUM_INT_GRPS; int_grp++) - { - // For all interrupt request lines of each group, - for (int_req = 0; int_req < _int_handler_table[int_grp].num_irqs; int_req++) - { - // Assign _unhandled_interrupt as default interrupt handler. - _int_handler_table[int_grp]._int_line_handler_table[int_req] = &_unhandled_interrupt; - } - - // Set the interrupt group priority register to its default value. - // By default, all interrupt groups are linked to the interrupt priority - // level 0 and to the interrupt vector _int0. - AVR32_INTC.ipr[int_grp] = ipr_val[AVR32_INTC_INT0]; - } -} - - -void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_level) -{ - // Determine the group of the IRQ. - unsigned int int_grp = irq / AVR32_INTC_MAX_NUM_IRQS_PER_GRP; - - // Store in _int_line_handler_table_x the pointer to the interrupt handler, so - // that _get_interrupt_handler can retrieve it when the interrupt is vectored. - _int_handler_table[int_grp]._int_line_handler_table[irq % AVR32_INTC_MAX_NUM_IRQS_PER_GRP] = handler; - - // Program the corresponding IPRX register to set the interrupt priority level - // and the interrupt vector offset that will be fetched by the core interrupt - // system. - // NOTE: The _intx functions are intermediate assembly functions between the - // core interrupt system and the user interrupt handler. - AVR32_INTC.ipr[int_grp] = ipr_val[int_level & (AVR32_INTC_IPR_INTLEVEL_MASK >> AVR32_INTC_IPR_INTLEVEL_OFFSET)]; -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h deleted file mode 100644 index 31a4fc16bcb..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/INTC/intc.h +++ /dev/null @@ -1,100 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief INTC driver for AVR32 UC3. - * - * AVR32 Interrupt Controller driver module. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an INTC module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _INTC_H_ -#define _INTC_H_ - -#include "compiler.h" - - -//! Maximal number of interrupt request lines per group. -#define AVR32_INTC_MAX_NUM_IRQS_PER_GRP 32 - -//! Number of interrupt priority levels. -#define AVR32_INTC_NUM_INT_LEVELS (1 << AVR32_INTC_IPR_INTLEVEL_SIZE) - - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -//! Pointer to interrupt handler. -#if (defined __GNUC__) -typedef void (*__int_handler)(void); -#elif (defined __ICCAVR32__) -typedef void (__interrupt *__int_handler)(void); -#endif - - -/*! \brief Initializes the hardware interrupt controller driver. - * - * \note Taken and adapted from Newlib. - */ -extern void INTC_init_interrupts(void); - -/*! \brief Registers an interrupt handler. - * - * \param handler Interrupt handler to register. - * \param irq IRQ of the interrupt handler to register. - * \param int_level Interrupt priority level to assign to the group of this IRQ. - * - * \warning The interrupt handler must manage the `rete' instruction, what can - * be done thanks to pure assembly, inline assembly or the - * `__attribute__((__interrupt__))' C function attribute. - * - * \warning If several interrupt handlers of a same group are registered with - * different priority levels, only the latest priority level set will - * be effective. - * - * \note Taken and adapted from Newlib. - */ -extern void INTC_register_interrupt(__int_handler handler, unsigned int irq, unsigned int int_level); - -#endif // __AVR32_ABI_COMPILER__ - - -#endif // _INTC_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c deleted file mode 100644 index 76d9268b4bc..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.c +++ /dev/null @@ -1,546 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager driver. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "compiler.h" -#include "pm.h" - - -/*! \name PM Writable Bit-Field Registers - */ -//! @{ - -typedef union -{ - unsigned long mcctrl; - avr32_pm_mcctrl_t MCCTRL; -} u_avr32_pm_mcctrl_t; - -typedef union -{ - unsigned long cksel; - avr32_pm_cksel_t CKSEL; -} u_avr32_pm_cksel_t; - -typedef union -{ - unsigned long pll; - avr32_pm_pll_t PLL; -} u_avr32_pm_pll_t; - -typedef union -{ - unsigned long oscctrl0; - avr32_pm_oscctrl0_t OSCCTRL0; -} u_avr32_pm_oscctrl0_t; - -typedef union -{ - unsigned long oscctrl1; - avr32_pm_oscctrl1_t OSCCTRL1; -} u_avr32_pm_oscctrl1_t; - -typedef union -{ - unsigned long oscctrl32; - avr32_pm_oscctrl32_t OSCCTRL32; -} u_avr32_pm_oscctrl32_t; - -typedef union -{ - unsigned long ier; - avr32_pm_ier_t IER; -} u_avr32_pm_ier_t; - -typedef union -{ - unsigned long idr; - avr32_pm_idr_t IDR; -} u_avr32_pm_idr_t; - -typedef union -{ - unsigned long icr; - avr32_pm_icr_t ICR; -} u_avr32_pm_icr_t; - -typedef union -{ - unsigned long gcctrl; - avr32_pm_gcctrl_t GCCTRL; -} u_avr32_pm_gcctrl_t; - -typedef union -{ - unsigned long rccr; - avr32_pm_rccr_t RCCR; -} u_avr32_pm_rccr_t; - -typedef union -{ - unsigned long bgcr; - avr32_pm_bgcr_t BGCR; -} u_avr32_pm_bgcr_t; - -typedef union -{ - unsigned long vregcr; - avr32_pm_vregcr_t VREGCR; -} u_avr32_pm_vregcr_t; - -typedef union -{ - unsigned long bod; - avr32_pm_bod_t BOD; -} u_avr32_pm_bod_t; - -//! @} - - -/*! \brief Sets the mode of the oscillator 0. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode Oscillator 0 mode (i.e. AVR32_PM_OSCCTRL0_MODE_x). - */ -static void pm_set_osc0_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0}; - // Modify - u_avr32_pm_oscctrl0.OSCCTRL0.mode = mode; - // Write - pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0; -} - - -void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc0_mode(pm, AVR32_PM_OSCCTRL0_MODE_EXT_CLOCK); -} - - -void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0) -{ - pm_set_osc0_mode(pm, (fosc0 < 900000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G0 : - (fosc0 < 3000000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G1 : - (fosc0 < 8000000) ? AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G2 : - AVR32_PM_OSCCTRL0_MODE_CRYSTAL_G3); -} - - -void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk0_no_wait(pm, startup); - pm_wait_for_clk0_ready(pm); -} - - -void pm_disable_clk0(volatile avr32_pm_t *pm) -{ - pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC0EN_MASK; -} - - -void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl0_t u_avr32_pm_oscctrl0 = {pm->oscctrl0}; - // Modify - u_avr32_pm_oscctrl0.OSCCTRL0.startup = startup; - // Write back - pm->oscctrl0 = u_avr32_pm_oscctrl0.oscctrl0; - - pm->mcctrl |= AVR32_PM_MCCTRL_OSC0EN_MASK; -} - - -void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC0RDY_MASK)); -} - - -/*! \brief Sets the mode of the oscillator 1. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode Oscillator 1 mode (i.e. AVR32_PM_OSCCTRL1_MODE_x). - */ -static void pm_set_osc1_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1}; - // Modify - u_avr32_pm_oscctrl1.OSCCTRL1.mode = mode; - // Write - pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1; -} - - -void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc1_mode(pm, AVR32_PM_OSCCTRL1_MODE_EXT_CLOCK); -} - - -void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1) -{ - pm_set_osc1_mode(pm, (fosc1 < 900000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G0 : - (fosc1 < 3000000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G1 : - (fosc1 < 8000000) ? AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G2 : - AVR32_PM_OSCCTRL1_MODE_CRYSTAL_G3); -} - - -void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk1_no_wait(pm, startup); - pm_wait_for_clk1_ready(pm); -} - - -void pm_disable_clk1(volatile avr32_pm_t *pm) -{ - pm->mcctrl &= ~AVR32_PM_MCCTRL_OSC1EN_MASK; -} - - -void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl1_t u_avr32_pm_oscctrl1 = {pm->oscctrl1}; - // Modify - u_avr32_pm_oscctrl1.OSCCTRL1.startup = startup; - // Write back - pm->oscctrl1 = u_avr32_pm_oscctrl1.oscctrl1; - - pm->mcctrl |= AVR32_PM_MCCTRL_OSC1EN_MASK; -} - - -void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC1RDY_MASK)); -} - - -/*! \brief Sets the mode of the 32-kHz oscillator. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * \param mode 32-kHz oscillator mode (i.e. AVR32_PM_OSCCTRL32_MODE_x). - */ -static void pm_set_osc32_mode(volatile avr32_pm_t *pm, unsigned int mode) -{ - // Read - u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32}; - // Modify - u_avr32_pm_oscctrl32.OSCCTRL32.mode = mode; - // Write - pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32; -} - - -void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm) -{ - pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_EXT_CLOCK); -} - - -void pm_enable_osc32_crystal(volatile avr32_pm_t *pm) -{ - pm_set_osc32_mode(pm, AVR32_PM_OSCCTRL32_MODE_CRYSTAL); -} - - -void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup) -{ - pm_enable_clk32_no_wait(pm, startup); - pm_wait_for_clk32_ready(pm); -} - - -void pm_disable_clk32(volatile avr32_pm_t *pm) -{ - pm->oscctrl32 &= ~AVR32_PM_OSCCTRL32_OSC32EN_MASK; -} - - -void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup) -{ - // Read register - u_avr32_pm_oscctrl32_t u_avr32_pm_oscctrl32 = {pm->oscctrl32}; - // Modify - u_avr32_pm_oscctrl32.OSCCTRL32.osc32en = 1; - u_avr32_pm_oscctrl32.OSCCTRL32.startup = startup; - // Write back - pm->oscctrl32 = u_avr32_pm_oscctrl32.oscctrl32; -} - - -void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_OSC32RDY_MASK)); -} - - -void pm_cksel(volatile avr32_pm_t *pm, - unsigned int pbadiv, - unsigned int pbasel, - unsigned int pbbdiv, - unsigned int pbbsel, - unsigned int hsbdiv, - unsigned int hsbsel) -{ - u_avr32_pm_cksel_t u_avr32_pm_cksel = {0}; - - u_avr32_pm_cksel.CKSEL.cpusel = hsbsel; - u_avr32_pm_cksel.CKSEL.cpudiv = hsbdiv; - u_avr32_pm_cksel.CKSEL.hsbsel = hsbsel; - u_avr32_pm_cksel.CKSEL.hsbdiv = hsbdiv; - u_avr32_pm_cksel.CKSEL.pbasel = pbasel; - u_avr32_pm_cksel.CKSEL.pbadiv = pbadiv; - u_avr32_pm_cksel.CKSEL.pbbsel = pbbsel; - u_avr32_pm_cksel.CKSEL.pbbdiv = pbbdiv; - - pm->cksel = u_avr32_pm_cksel.cksel; - - // Wait for ckrdy bit and then clear it - while (!(pm->poscsr & AVR32_PM_POSCSR_CKRDY_MASK)); -} - - -void pm_gc_setup(volatile avr32_pm_t *pm, - unsigned int gc, - unsigned int osc_or_pll, // Use Osc (=0) or PLL (=1) - unsigned int pll_osc, // Sel Osc0/PLL0 or Osc1/PLL1 - unsigned int diven, - unsigned int div) -{ - u_avr32_pm_gcctrl_t u_avr32_pm_gcctrl = {0}; - - u_avr32_pm_gcctrl.GCCTRL.oscsel = pll_osc; - u_avr32_pm_gcctrl.GCCTRL.pllsel = osc_or_pll; - u_avr32_pm_gcctrl.GCCTRL.diven = diven; - u_avr32_pm_gcctrl.GCCTRL.div = div; - - pm->gcctrl[gc] = u_avr32_pm_gcctrl.gcctrl; -} - - -void pm_gc_enable(volatile avr32_pm_t *pm, - unsigned int gc) -{ - pm->gcctrl[gc] |= AVR32_PM_GCCTRL_CEN_MASK; -} - - -void pm_gc_disable(volatile avr32_pm_t *pm, - unsigned int gc) -{ - pm->gcctrl[gc] &= ~AVR32_PM_GCCTRL_CEN_MASK; -} - - -void pm_pll_setup(volatile avr32_pm_t *pm, - unsigned int pll, - unsigned int mul, - unsigned int div, - unsigned int osc, - unsigned int lockcount) -{ - u_avr32_pm_pll_t u_avr32_pm_pll = {0}; - - u_avr32_pm_pll.PLL.pllosc = osc; - u_avr32_pm_pll.PLL.plldiv = div; - u_avr32_pm_pll.PLL.pllmul = mul; - u_avr32_pm_pll.PLL.pllcount = lockcount; - - pm->pll[pll] = u_avr32_pm_pll.pll; -} - - -void pm_pll_set_option(volatile avr32_pm_t *pm, - unsigned int pll, - unsigned int pll_freq, - unsigned int pll_div2, - unsigned int pll_wbwdisable) -{ - u_avr32_pm_pll_t u_avr32_pm_pll = {pm->pll[pll]}; - u_avr32_pm_pll.PLL.pllopt = pll_freq | (pll_div2 << 1) | (pll_wbwdisable << 2); - pm->pll[pll] = u_avr32_pm_pll.pll; -} - - -unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, - unsigned int pll) -{ - return (pm->pll[pll] & AVR32_PM_PLLOPT_MASK) >> AVR32_PM_PLLOPT_OFFSET; -} - - -void pm_pll_enable(volatile avr32_pm_t *pm, - unsigned int pll) -{ - pm->pll[pll] |= AVR32_PM_PLLEN_MASK; -} - - -void pm_pll_disable(volatile avr32_pm_t *pm, - unsigned int pll) -{ - pm->pll[pll] &= ~AVR32_PM_PLLEN_MASK; -} - - -void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK0_MASK)); -} - - -void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm) -{ - while (!(pm->poscsr & AVR32_PM_POSCSR_LOCK1_MASK)); -} - - -void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock) -{ - // Read - u_avr32_pm_mcctrl_t u_avr32_pm_mcctrl = {pm->mcctrl}; - // Modify - u_avr32_pm_mcctrl.MCCTRL.mcsel = clock; - // Write back - pm->mcctrl = u_avr32_pm_mcctrl.mcctrl; -} - - -void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup) -{ - pm_enable_osc0_crystal(pm, fosc0); // Enable the Osc0 in crystal mode - pm_enable_clk0(pm, startup); // Crystal startup time - This parameter is critical and depends on the characteristics of the crystal - pm_switch_to_clock(pm, AVR32_PM_MCSEL_OSC0); // Then switch main clock to Osc0 -} - - -void pm_bod_enable_irq(volatile avr32_pm_t *pm) -{ - pm->ier = AVR32_PM_IER_BODDET_MASK; -} - - -void pm_bod_disable_irq(volatile avr32_pm_t *pm) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - if (global_interrupt_enabled) Disable_global_interrupt(); - pm->idr = AVR32_PM_IDR_BODDET_MASK; - pm->isr; - if (global_interrupt_enabled) Enable_global_interrupt(); -} - - -void pm_bod_clear_irq(volatile avr32_pm_t *pm) -{ - pm->icr = AVR32_PM_ICR_BODDET_MASK; -} - - -unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm) -{ - return ((pm->isr & AVR32_PM_ISR_BODDET_MASK) != 0); -} - - -unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm) -{ - return ((pm->imr & AVR32_PM_IMR_BODDET_MASK) != 0); -} - - -unsigned long pm_bod_get_level(volatile avr32_pm_t *pm) -{ - return (pm->bod & AVR32_PM_BOD_LEVEL_MASK) >> AVR32_PM_BOD_LEVEL_OFFSET; -} - - -unsigned long pm_read_gplp(volatile avr32_pm_t *pm, unsigned long gplp) -{ - return pm->gplp[gplp]; -} - - -void pm_write_gplp(volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value) -{ - pm->gplp[gplp] = value; -} - - -long pm_enable_module(volatile avr32_pm_t *pm, unsigned long module) -{ - unsigned long domain = module>>5; - unsigned long *regptr = (unsigned long*)(&(pm->cpumask) + domain); - - // Implementation-specific shortcut: the ckMASK registers are contiguous and - // memory-mapped in that order: CPUMASK, HSBMASK, PBAMASK, PBBMASK. - - *regptr |= (1<<(module%32)); - - return PASS; -} - -long pm_disable_module(volatile avr32_pm_t *pm, unsigned long module) -{ - unsigned long domain = module>>5; - unsigned long *regptr = (unsigned long*)(&(pm->cpumask) + domain); - - // Implementation-specific shortcut: the ckMASK registers are contiguous and - // memory-mapped in that order: CPUMASK, HSBMASK, PBAMASK, PBBMASK. - - *regptr &= ~(1<<(module%32)); - - return PASS; -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h deleted file mode 100644 index ca679f734ae..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm.h +++ /dev/null @@ -1,493 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager driver. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _PM_H_ -#define _PM_H_ - -#include -#include "compiler.h" -#include "preprocessor.h" - - -/*! \brief Sets the MCU in the specified sleep mode. - * - * \param mode Sleep mode: - * \arg \c AVR32_PM_SMODE_IDLE: Idle; - * \arg \c AVR32_PM_SMODE_FROZEN: Frozen; - * \arg \c AVR32_PM_SMODE_STANDBY: Standby; - * \arg \c AVR32_PM_SMODE_STOP: Stop; - * \arg \c AVR32_PM_SMODE_DEEP_STOP: DeepStop; - * \arg \c AVR32_PM_SMODE_STATIC: Static. - */ -#define SLEEP(mode) {__asm__ __volatile__ ("sleep "STRINGZ(mode));} - - -//! Input and output parameters when initializing PM clocks using pm_configure_clocks(). -typedef struct -{ - //! CPU frequency (input/output argument). - unsigned long cpu_f; - - //! PBA frequency (input/output argument). - unsigned long pba_f; - - //! Oscillator 0's external crystal(or external clock) frequency (board dependant) (input argument). - unsigned long osc0_f; - - //! Oscillator 0's external crystal(or external clock) startup time: AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC (input argument). - unsigned long osc0_startup; -} pm_freq_param_t; - -#define PM_FREQ_STATUS_FAIL (-1) -#define PM_FREQ_STATUS_OK (0) - - -/*! \brief Gets the MCU reset cause. - * - * \param pm Base address of the Power Manager instance (i.e. &AVR32_PM). - * - * \return The MCU reset cause which can be masked with the - * \c AVR32_PM_RCAUSE_x_MASK bit-masks to isolate specific causes. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned int pm_get_reset_cause(volatile avr32_pm_t *pm) -{ - return pm->rcause; -} - - -/*! - * \brief This function will enable the external clock mode of the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc0_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc0 Oscillator 0 crystal frequency (Hz) - */ -extern void pm_enable_osc0_crystal(volatile avr32_pm_t *pm, unsigned int fosc0); - - -/*! - * \brief This function will enable the oscillator 0 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk0(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 0. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk0(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 0 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 0 startup time, for which the function does not wait. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk0_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the Osc0 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk0_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the external clock mode of the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc1_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc1 Oscillator 1 crystal frequency (Hz) - */ -extern void pm_enable_osc1_crystal(volatile avr32_pm_t *pm, unsigned int fosc1); - - -/*! - * \brief This function will enable the oscillator 1 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 1 startup time. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk1(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 1. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk1(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 1 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 1 startup time, for which the function does not wait. AVR32_PM_OSCCTRL1_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk1_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the Osc1 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk1_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the external clock mode of the 32-kHz oscillator. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc32_ext_clock(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the crystal mode of the 32-kHz oscillator. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_enable_osc32_crystal(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 32 to be used with a startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 32 kHz startup time. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk32(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will disable the oscillator 32. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_disable_clk32(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will enable the oscillator 32 to be used with no startup time. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param startup Clock 32 kHz startup time, for which the function does not wait. AVR32_PM_OSCCTRL32_STARTUP_x_RCOSC. - */ -extern void pm_enable_clk32_no_wait(volatile avr32_pm_t *pm, unsigned int startup); - - -/*! - * \brief This function will wait until the osc32 clock is ready. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_clk32_ready(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will select all the power manager clocks. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pbadiv Peripheral Bus A clock divisor enable - * \param pbasel Peripheral Bus A select - * \param pbbdiv Peripheral Bus B clock divisor enable - * \param pbbsel Peripheral Bus B select - * \param hsbdiv High Speed Bus clock divisor enable (CPU clock = HSB clock) - * \param hsbsel High Speed Bus select (CPU clock = HSB clock ) - */ -extern void pm_cksel(volatile avr32_pm_t *pm, unsigned int pbadiv, unsigned int pbasel, unsigned int pbbdiv, unsigned int pbbsel, unsigned int hsbdiv, unsigned int hsbsel); - - -/*! - * \brief This function will setup a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - * \param osc_or_pll Use OSC (=0) or PLL (=1) - * \param pll_osc Select Osc0/PLL0 or Osc1/PLL1 - * \param diven Generic clock divisor enable - * \param div Generic clock divisor - */ -extern void pm_gc_setup(volatile avr32_pm_t *pm, unsigned int gc, unsigned int osc_or_pll, unsigned int pll_osc, unsigned int diven, unsigned int div); - - -/*! - * \brief This function will enable a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - */ -extern void pm_gc_enable(volatile avr32_pm_t *pm, unsigned int gc); - - -/*! - * \brief This function will disable a generic clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gc generic clock number (0 for gc0...) - */ -extern void pm_gc_disable(volatile avr32_pm_t *pm, unsigned int gc); - - -/*! - * \brief This function will setup a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \param mul PLL MUL in the PLL formula - * \param div PLL DIV in the PLL formula - * \param osc OSC number (0 for osc0, 1 for osc1) - * \param lockcount PLL lockount - */ -extern void pm_pll_setup(volatile avr32_pm_t *pm, unsigned int pll, unsigned int mul, unsigned int div, unsigned int osc, unsigned int lockcount); - - -/*! - * \brief This function will set a PLL option. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \param pll_freq Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz. - * \param pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value) - * \param pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode. - */ -extern void pm_pll_set_option(volatile avr32_pm_t *pm, unsigned int pll, unsigned int pll_freq, unsigned int pll_div2, unsigned int pll_wbwdisable); - - -/*! - * \brief This function will get a PLL option. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - * \return Option - */ -extern unsigned int pm_pll_get_option(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will enable a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - */ -extern void pm_pll_enable(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will disable a PLL. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param pll PLL number(0 for PLL0, 1 for PLL1) - */ -extern void pm_pll_disable(volatile avr32_pm_t *pm, unsigned int pll); - - -/*! - * \brief This function will wait for PLL0 locked - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_pll0_locked(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will wait for PLL1 locked - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - */ -extern void pm_wait_for_pll1_locked(volatile avr32_pm_t *pm); - - -/*! - * \brief This function will switch the power manager main clock. - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param clock Clock to be switched on. AVR32_PM_MCSEL_SLOW for RCOsc, AVR32_PM_MCSEL_OSC0 for Osc0, AVR32_PM_MCSEL_PLL0 for PLL0. - */ -extern void pm_switch_to_clock(volatile avr32_pm_t *pm, unsigned long clock); - - -/*! - * \brief Switch main clock to clock Osc0 (crystal mode) - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param fosc0 Oscillator 0 crystal frequency (Hz) - * \param startup Crystal 0 startup time. AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC. - */ -extern void pm_switch_to_osc0(volatile avr32_pm_t *pm, unsigned int fosc0, unsigned int startup); - - -/*! \brief Enables the Brown-Out Detector interrupt. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - */ -extern void pm_bod_enable_irq(volatile avr32_pm_t *pm); - - -/*! \brief Disables the Brown-Out Detector interrupt. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - */ -extern void pm_bod_disable_irq(volatile avr32_pm_t *pm); - - -/*! \brief Clears the Brown-Out Detector interrupt flag. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - */ -extern void pm_bod_clear_irq(volatile avr32_pm_t *pm); - - -/*! \brief Gets the Brown-Out Detector interrupt flag. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * - * \retval 0 No BOD interrupt. - * \retval 1 BOD interrupt pending. - */ -extern unsigned long pm_bod_get_irq_status(volatile avr32_pm_t *pm); - - -/*! \brief Gets the Brown-Out Detector interrupt enable status. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * - * \retval 0 BOD interrupt disabled. - * \retval 1 BOD interrupt enabled. - */ -extern unsigned long pm_bod_get_irq_enable_bit(volatile avr32_pm_t *pm); - - -/*! \brief Gets the triggering threshold of the Brown-Out Detector. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM). - * - * \return Triggering threshold of the BOD. See the electrical characteristics - * in the part datasheet for actual voltage levels. - */ -extern unsigned long pm_bod_get_level(volatile avr32_pm_t *pm); - - -/*! - * \brief Read the content of the PM GPLP registers - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * - * \return The content of the chosen GPLP register. - */ -extern unsigned long pm_read_gplp(volatile avr32_pm_t *pm, unsigned long gplp); - - -/*! - * \brief Write into the PM GPLP registers - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * \param value Value to write - */ -extern void pm_write_gplp(volatile avr32_pm_t *pm, unsigned long gplp, unsigned long value); - - -/*! \brief Enable the clock of a module. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param module The module to clock (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks") - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long pm_enable_module(volatile avr32_pm_t *pm, unsigned long module); - -/*! \brief Disable the clock of a module. - * - * \param pm Base address of the Power Manager (i.e. &AVR32_PM) - * \param module The module to shut down (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks") - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long pm_disable_module(volatile avr32_pm_t *pm, unsigned long module); - - - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks - * according to the user wishes. - * - * This function needs some parameters stored in a pm_freq_param_t structure: - * - cpu_f and pba_f are the wanted frequencies, - * - osc0_f is the oscillator 0 on-board frequency (e.g. FOSC0), - * - osc0_startup is the oscillator 0 startup time (e.g. OSC0_STARTUP). - * - * The function will then configure the clocks using the following rules: - * - It first try to find a valid PLL frequency (the highest possible value to avoid jitter) in order - * to satisfy the CPU frequency, - * - It optimizes the configuration depending the various divide stages, - * - Then, the PBA frequency is configured from the CPU freq. - * - Note that HSB and PBB are configured with the same frequency as CPU. - * - Note also that the number of wait states of the flash read accesses is automatically set-up depending - * the CPU frequency. As a consequence, the application needs the FLASHC driver to compile. - * - * The CPU, HSB and PBA frequencies programmed after configuration are stored back into cpu_f and pba_f. - * - * \param param pointer on the configuration structure. - * - * \retval PM_FREQ_STATUS_OK Mode successfully initialized. - * \retval PM_FREQ_STATUS_FAIL The configuration can not be done. - */ -extern int pm_configure_clocks(pm_freq_param_t *param); - - -/*! \brief Automatically configure the USB clock. - * - * USB clock is configured to 48MHz, using the PLL1 from the Oscillator0, assuming - * a 12 MHz crystal is connected to it. - */ -extern void pm_configure_usb_clock(void); - - -#endif // _PM_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c deleted file mode 100644 index 8beb83b207d..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/pm_conf_clocks.c +++ /dev/null @@ -1,268 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Power Manager clocks configuration helper. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include -#include "compiler.h" -#include "pm.h" - -extern void flashc_set_wait_state(unsigned int wait_state); -#if (defined AVR32_FLASHC_210_H_INCLUDED) -extern void flashc_issue_command(unsigned int command, int page_number); -#endif - - -#define PM_MAX_MUL ((1 << AVR32_PM_PLL0_PLLMUL_SIZE) - 1) - - -int pm_configure_clocks(pm_freq_param_t *param) -{ - // Supported frequencies: - // Fosc0 mul div PLL div2_en cpu_f pba_f Comment - // 12 15 1 192 1 12 12 - // 12 9 3 40 1 20 20 PLL out of spec - // 12 15 1 192 1 24 12 - // 12 9 1 120 1 30 15 - // 12 9 3 40 0 40 20 PLL out of spec - // 12 15 1 192 1 48 12 - // 12 15 1 192 1 48 24 - // 12 8 1 108 1 54 27 - // 12 9 1 120 1 60 15 - // 12 9 1 120 1 60 30 - // 12 10 1 132 1 66 16.5 - // - unsigned long in_cpu_f = param->cpu_f; - unsigned long in_osc0_f = param->osc0_f; - unsigned long mul, div, div2_en = 0, div2_cpu = 0, div2_pba = 0; - unsigned long pll_freq, rest; - Bool b_div2_pba, b_div2_cpu; - - // Switch to external Oscillator 0 - pm_switch_to_osc0(&AVR32_PM, in_osc0_f, param->osc0_startup); - - // Start with CPU freq config - if (in_cpu_f == in_osc0_f) - { - param->cpu_f = in_osc0_f; - param->pba_f = in_osc0_f; - return PM_FREQ_STATUS_OK; - } - else if (in_cpu_f < in_osc0_f) - { - // TBD - } - - rest = in_cpu_f % in_osc0_f; - - for (div = 1; div < 32; div++) - { - if ((div * rest) % in_osc0_f == 0) - break; - } - if (div == 32) - return PM_FREQ_STATUS_FAIL; - - mul = (in_cpu_f * div) / in_osc0_f; - - if (mul > PM_MAX_MUL) - return PM_FREQ_STATUS_FAIL; - - // export 2power from PLL div to div2_cpu - while (!(div % 2)) - { - div /= 2; - div2_cpu++; - } - - // Here we know the mul and div parameter of the PLL config. - // . Check out if the PLL has a valid in_cpu_f. - // . Try to have for the PLL frequency (VCO output) the highest possible value - // to reduce jitter. - while (in_osc0_f * 2 * mul / div < AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ) - { - if (2 * mul > PM_MAX_MUL) - break; - mul *= 2; - div2_cpu++; - } - - if (div2_cpu != 0) - { - div2_cpu--; - div2_en = 1; - } - - pll_freq = in_osc0_f * mul / (div * (1 << div2_en)); - - // Update real CPU Frequency - param->cpu_f = pll_freq / (1 << div2_cpu); - mul--; - - pm_pll_setup(&AVR32_PM - , 0 // pll - , mul // mul - , div // div - , 0 // osc - , 16 // lockcount - ); - - pm_pll_set_option(&AVR32_PM - , 0 // pll - // PLL clock is lower than 160MHz: need to set pllopt. - , (pll_freq < AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ) ? 1 : 0 // pll_freq - , div2_en // pll_div2 - , 0 // pll_wbwdisable - ); - - rest = pll_freq; - while (rest > AVR32_PM_PBA_MAX_FREQ || - rest != param->pba_f) - { - div2_pba++; - rest = pll_freq / (1 << div2_pba); - if (rest < param->pba_f) - break; - } - - // Update real PBA Frequency - param->pba_f = pll_freq / (1 << div2_pba); - - // Enable PLL0 - pm_pll_enable(&AVR32_PM, 0); - - // Wait for PLL0 locked - pm_wait_for_pll0_locked(&AVR32_PM); - - if (div2_cpu) - { - b_div2_cpu = TRUE; - div2_cpu--; - } - else - b_div2_cpu = FALSE; - - if (div2_pba) - { - b_div2_pba = TRUE; - div2_pba--; - } - else - b_div2_pba = FALSE; - - pm_cksel(&AVR32_PM - , b_div2_pba, div2_pba // PBA - , b_div2_cpu, div2_cpu // PBB - , b_div2_cpu, div2_cpu // HSB - ); - - if (param->cpu_f > AVR32_FLASHC_FWS_0_MAX_FREQ) - { - flashc_set_wait_state(1); -#if (defined AVR32_FLASHC_210_H_INCLUDED) - if (param->cpu_f > AVR32_FLASHC_HSEN_FWS_1_MAX_FREQ) - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1); - else - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); -#endif - } - else - { - flashc_set_wait_state(0); -#if (defined AVR32_FLASHC_210_H_INCLUDED) - if (param->cpu_f > AVR32_FLASHC_HSEN_FWS_0_MAX_FREQ) - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSEN, -1); - else - flashc_issue_command(AVR32_FLASHC_FCMD_CMD_HSDIS, -1); -#endif - } - - pm_switch_to_clock(&AVR32_PM, AVR32_PM_MCCTRL_MCSEL_PLL0); - - return PM_FREQ_STATUS_OK; -} - - -void pm_configure_usb_clock(void) -{ -#if UC3A3 - - // Setup USB GCLK. - pm_gc_setup(&AVR32_PM, AVR32_PM_GCLK_USBB, // gc - 0, // osc_or_pll: use Osc (if 0) or PLL (if 1) - 0, // pll_osc: select Osc0/PLL0 or Osc1/PLL1 - 0, // diven - 0); // div - - // Enable USB GCLK. - pm_gc_enable(&AVR32_PM, AVR32_PM_GCLK_USBB); -#else - // Use 12MHz from OSC0 and generate 96 MHz - pm_pll_setup(&AVR32_PM, 1, // pll. - 7, // mul. - 1, // div. - 0, // osc. - 16); // lockcount. - - pm_pll_set_option(&AVR32_PM, 1, // pll. - 1, // pll_freq: choose the range 80-180MHz. - 1, // pll_div2. - 0); // pll_wbwdisable. - - // start PLL1 and wait forl lock - pm_pll_enable(&AVR32_PM, 1); - - // Wait for PLL1 locked. - pm_wait_for_pll1_locked(&AVR32_PM); - - pm_gc_setup(&AVR32_PM, AVR32_PM_GCLK_USBB, // gc. - 1, // osc_or_pll: use Osc (if 0) or PLL (if 1). - 1, // pll_osc: select Osc0/PLL0 or Osc1/PLL1. - 0, // diven. - 0); // div. - pm_gc_enable(&AVR32_PM, AVR32_PM_GCLK_USBB); -#endif -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c deleted file mode 100644 index f5fc1553d7f..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.c +++ /dev/null @@ -1,566 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief High-level library abstracting features such as oscillators/pll/dfll - * configuration, clock configuration, System-sensible parameters - * configuration, buses clocks configuration, sleep mode, reset. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ -#include "power_clocks_lib.h" - - -//! Device-specific data -#if UC3L -static long int pcl_configure_clocks_uc3l(pcl_freq_param_t *param); // FORWARD declaration -#endif - -#if UC3C -static long int pcl_configure_clocks_uc3c(pcl_freq_param_t *param); // FORWARD declaration -#endif - -long int pcl_configure_clocks(pcl_freq_param_t *param) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE - // Implementation for UC3A, UC3A3, UC3B parts. - return(pm_configure_clocks(param)); -#else - #ifdef AVR32_PM_410_H_INCLUDED - // Implementation for UC3C parts. - return(pcl_configure_clocks_uc3c(param)); - #else - // Implementation for UC3L parts. - return(pcl_configure_clocks_uc3l(param)); - #endif -#endif -} - - -//! Device-specific implementation -#if UC3L -// FORWARD declaration -static long int pcl_configure_synchronous_clocks( pm_clk_src_t main_clk_src, - unsigned long main_clock_freq_hz, - pcl_freq_param_t *param); - -long int pcl_configure_clocks_rcsys(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_RCSYS - - // Supported synchronous clocks frequencies if RCSYS is the main clock source: - // 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target frequencies are reachable. - if((param->cpu_f > SCIF_SLOWCLOCK_FREQ_HZ) || (param->pba_f > SCIF_SLOWCLOCK_FREQ_HZ) - || (param->pbb_f > SCIF_SLOWCLOCK_FREQ_HZ)) - return(-1); -#endif - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_SLOW, SCIF_SLOWCLOCK_FREQ_HZ, param)); -} - - -long int pcl_configure_clocks_rc120m(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_RC120M - - // Supported synchronous clocks frequencies if RC120M is the main clock source: - // 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target frequencies are reachable. - if((param->cpu_f > SCIF_RC120M_FREQ_HZ) || (param->pba_f > SCIF_RC120M_FREQ_HZ) - || (param->pbb_f > SCIF_RC120M_FREQ_HZ)) - return(-1); -#endif - - // Start the 120MHz internal RCosc (RC120M) clock - scif_start_rc120M(); - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_RC120M, SCIF_RC120M_FREQ_HZ, param)); -} - - -long int pcl_configure_clocks_osc0(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_OSC0 - - // Supported synchronous clocks frequencies if OSC0 is the main clock source: - // (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example) - // 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - - unsigned long main_clock_freq; - - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - - main_clock_freq = param->osc0_f; -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target frequencies are reachable. - if((param->cpu_f > main_clock_freq) || (param->pba_f > main_clock_freq) - || (param->pbb_f > main_clock_freq)) - return(-1); -#endif - // Configure OSC0 in crystal mode, external crystal with a fcrystal Hz frequency. - scif_configure_osc_crystalmode(SCIF_OSC0, main_clock_freq); - // Enable the OSC0 - scif_enable_osc(SCIF_OSC0, param->osc0_startup, true); - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_OSC0, main_clock_freq, param)); -} - - -long int pcl_configure_clocks_dfll0(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_DFLL - - // Supported synchronous clocks frequencies if DFLL is the main clock source: - // (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example) - // 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - - unsigned long main_clock_freq; - scif_gclk_opt_t *pgc_dfllif_ref_opt; - - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - - main_clock_freq = param->dfll_f; -#ifdef AVR32SFW_INPUT_CHECK - // Verify that the target DFLL output frequency is in the correct range. - if((main_clock_freq > SCIF_DFLL_MAXFREQ_HZ) || (main_clock_freq < SCIF_DFLL_MINFREQ_HZ)) - return(-1); - // Verify that the target frequencies are reachable. - if((param->cpu_f > main_clock_freq) || (param->pba_f > main_clock_freq) - || (param->pbb_f > main_clock_freq)) - return(-1); -#endif - pgc_dfllif_ref_opt = (scif_gclk_opt_t *)param->pextra_params; - // Implementation note: this implementation configures the DFLL in closed-loop - // mode (because it gives the best accuracy) which enables the generic clock CLK_DFLLIF_REF - // as a reference (RCSYS being used as the generic clock source, undivided). - scif_dfll0_closedloop_configure_and_start(pgc_dfllif_ref_opt, main_clock_freq, TRUE); - - return(pcl_configure_synchronous_clocks(PM_CLK_SRC_DFLL0, main_clock_freq, param)); -} - - -static long int pcl_configure_clocks_uc3l(pcl_freq_param_t *param) -{ - // Supported main clock sources: PCL_MC_RCSYS, PCL_MC_OSC0, PCL_MC_DFLL0, PCL_MC_RC120M - - // Supported synchronous clocks frequencies if RCSYS is the main clock source: - // 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz. - - // Supported synchronous clocks frequencies if RC120M is the main clock source: - // 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz. - - // Supported synchronous clocks frequencies if OSC0 is the main clock source: - // (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example) - // 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz. - - // Supported synchronous clocks frequencies if DFLL is the main clock source: - // (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example) - // 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz. - - // NOTE: by default, this implementation doesn't perform thorough checks on the - // input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - - -#ifdef AVR32SFW_INPUT_CHECK - // Verify that fCPU >= fPBx - if((param->cpu_f < param->pba_f) || (param->cpu_f < param->pbb_f)) - return(-1); -#endif - - if(PCL_MC_RCSYS == param->main_clk_src) - { - return(pcl_configure_clocks_rcsys(param)); - } - else if(PCL_MC_RC120M == param->main_clk_src) - { - return(pcl_configure_clocks_rc120m(param)); - } - else if(PCL_MC_OSC0 == param->main_clk_src) - { - return(pcl_configure_clocks_osc0(param)); - } - else // PCL_MC_DFLL0 == param->main_clk_src - { - return(pcl_configure_clocks_dfll0(param)); - } -} - -static long int pcl_configure_synchronous_clocks(pm_clk_src_t main_clk_src, unsigned long main_clock_freq_hz, pcl_freq_param_t *param) -{ - //# - //# Set the Synchronous clock division ratio for each clock domain - //# - pm_set_all_cksel(main_clock_freq_hz, param->cpu_f, param->pba_f, param->pbb_f); - - //# - //# Set the Flash wait state and the speed read mode (depending on the target CPU frequency). - //# -#if UC3L - flashcdw_set_flash_waitstate_and_readmode(param->cpu_f); -#elif UC3C - flashc_set_flash_waitstate_and_readmode(param->cpu_f); -#endif - - - //# - //# Switch the main clock source to the selected clock. - //# - pm_set_mclk_source(main_clk_src); - - return PASS; -} - -#endif // UC3L device-specific implementation - -//! UC3C Device-specific implementation -#if UC3C -static long int pcl_configure_clocks_uc3c(pcl_freq_param_t *param) -{ - #define PM_MAX_MUL ((1 << AVR32_SCIF_PLLMUL_SIZE) - 1) - #define AVR32_PM_PBA_MAX_FREQ 66000000 - #define AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ 240000000 - #define AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ 160000000 - - // Implementation for UC3C parts. - // Supported frequencies: - // Fosc0 mul div PLL div2_en cpu_f pba_f Comment - // 12 15 1 192 1 12 12 - // 12 9 3 40 1 20 20 PLL out of spec - // 12 15 1 192 1 24 12 - // 12 9 1 120 1 30 15 - // 12 9 3 40 0 40 20 PLL out of spec - // 12 15 1 192 1 48 12 - // 12 15 1 192 1 48 24 - // 12 8 1 108 1 54 27 - // 12 9 1 120 1 60 15 - // 12 9 1 120 1 60 30 - // 12 10 1 132 1 66 16.5 - // - unsigned long in_cpu_f = param->cpu_f; - unsigned long in_osc0_f = param->osc0_f; - unsigned long mul, div, div2_en = 0, div2_cpu = 0, div2_pba = 0; - unsigned long pll_freq, rest; - Bool b_div2_pba, b_div2_cpu; - - // Configure OSC0 in crystal mode, external crystal with a FOSC0 Hz frequency. - scif_configure_osc_crystalmode(SCIF_OSC0, in_osc0_f); - // Enable the OSC0 - scif_enable_osc(SCIF_OSC0, param->osc0_startup, true); - // Set the main clock source as being OSC0. - pm_set_mclk_source(PM_CLK_SRC_OSC0); - - // Start with CPU freq config - if (in_cpu_f == in_osc0_f) - { - param->cpu_f = in_osc0_f; - param->pba_f = in_osc0_f; - return PASS; - } - else if (in_cpu_f < in_osc0_f) - { - // TBD - } - - rest = in_cpu_f % in_osc0_f; - - for (div = 1; div < 32; div++) - { - if ((div * rest) % in_osc0_f == 0) - break; - } - if (div == 32) - return FAIL; - - mul = (in_cpu_f * div) / in_osc0_f; - - if (mul > PM_MAX_MUL) - return FAIL; - - // export 2power from PLL div to div2_cpu - while (!(div % 2)) - { - div /= 2; - div2_cpu++; - } - - // Here we know the mul and div parameter of the PLL config. - // . Check out if the PLL has a valid in_cpu_f. - // . Try to have for the PLL frequency (VCO output) the highest possible value - // to reduce jitter. - while (in_osc0_f * 2 * mul / div < AVR32_PM_PLL_VCO_RANGE0_MAX_FREQ) - { - if (2 * mul > PM_MAX_MUL) - break; - mul *= 2; - div2_cpu++; - } - - if (div2_cpu != 0) - { - div2_cpu--; - div2_en = 1; - } - - pll_freq = in_osc0_f * mul / (div * (1 << div2_en)); - - // Update real CPU Frequency - param->cpu_f = pll_freq / (1 << div2_cpu); - mul--; - - scif_pll_opt_t opt; - - opt.osc = SCIF_OSC0, // Sel Osc0 or Osc1 - opt.lockcount = 16, // lockcount in main clock for the PLL wait lock - opt.div = div, // DIV=1 in the formula - opt.mul = mul, // MUL=7 in the formula - opt.pll_div2 = div2_en, // pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value) - opt.pll_wbwdisable = 0, //pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode. - opt.pll_freq = (pll_freq < AVR32_PM_PLL_VCO_RANGE0_MIN_FREQ) ? 1 : 0, // Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz. - - - scif_pll_setup(SCIF_PLL0, opt); // lockcount in main clock for the PLL wait lock - - /* Enable PLL0 */ - scif_pll_enable(SCIF_PLL0); - - /* Wait for PLL0 locked */ - scif_wait_for_pll_locked(SCIF_PLL0) ; - - rest = pll_freq; - while (rest > AVR32_PM_PBA_MAX_FREQ || - rest != param->pba_f) - { - div2_pba++; - rest = pll_freq / (1 << div2_pba); - if (rest < param->pba_f) - break; - } - - // Update real PBA Frequency - param->pba_f = pll_freq / (1 << div2_pba); - - - if (div2_cpu) - { - b_div2_cpu = TRUE; - div2_cpu--; - } - else - b_div2_cpu = FALSE; - - if (div2_pba) - { - b_div2_pba = TRUE; - div2_pba--; - } - else - b_div2_pba = FALSE; - - if (b_div2_cpu == TRUE ) - { - pm_set_clk_domain_div(PM_CLK_DOMAIN_0, (pm_divratio_t) div2_cpu); // CPU - pm_set_clk_domain_div(PM_CLK_DOMAIN_1, (pm_divratio_t) div2_cpu); // HSB - pm_set_clk_domain_div(PM_CLK_DOMAIN_3, (pm_divratio_t) div2_cpu); // PBB - } - if (b_div2_pba == TRUE ) - { - pm_set_clk_domain_div(PM_CLK_DOMAIN_2, (pm_divratio_t) div2_pba); // PBA - pm_set_clk_domain_div(PM_CLK_DOMAIN_4, (pm_divratio_t) div2_pba); // PBC - } - - // Set Flashc Wait State - flashc_set_flash_waitstate_and_readmode(param->cpu_f); - - // Set the main clock source as being PLL0. - pm_set_mclk_source(PM_CLK_SRC_PLL0); - - return PASS; -} -#endif // UC3C device-specific implementation - -long int pcl_switch_to_osc(pcl_osc_t osc, unsigned int fcrystal, unsigned int startup) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - if(PCL_OSC0 == osc) - { - // Configure OSC0 in crystal mode, external crystal with a FOSC0 Hz frequency, - // enable the OSC0, set the main clock source as being OSC0. - pm_switch_to_osc0(&AVR32_PM, fcrystal, startup); - } - else - { - return PCL_NOT_SUPPORTED; - } -#else -// Implementation for UC3C, UC3L parts. - #if AVR32_PM_VERSION_RESETVALUE < 0x400 - return PCL_NOT_SUPPORTED; - #else - if(PCL_OSC0 == osc) - { - // Configure OSC0 in crystal mode, external crystal with a fcrystal Hz frequency. - scif_configure_osc_crystalmode(SCIF_OSC0, fcrystal); - // Enable the OSC0 - scif_enable_osc(SCIF_OSC0, startup, true); - // Set the Flash wait state and the speed read mode (depending on the target CPU frequency). -#if UC3L - flashcdw_set_flash_waitstate_and_readmode(fcrystal); -#elif UC3C - flashc_set_flash_waitstate_and_readmode(fcrystal); -#endif - // Set the main clock source as being OSC0. - pm_set_mclk_source(PM_CLK_SRC_OSC0); - } - else - { - return PCL_NOT_SUPPORTED; - } - #endif -#endif - return PASS; -} - -long int pcl_configure_usb_clock(void) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - pm_configure_usb_clock(); - return PASS; -#else - #ifdef AVR32_PM_410_H_INCLUDED - const scif_pll_opt_t opt = { - .osc = SCIF_OSC0, // Sel Osc0 or Osc1 - .lockcount = 16, // lockcount in main clock for the PLL wait lock - .div = 1, // DIV=1 in the formula - .mul = 5, // MUL=7 in the formula - .pll_div2 = 1, // pll_div2 Divide the PLL output frequency by 2 (this settings does not change the FVCO value) - .pll_wbwdisable = 0, //pll_wbwdisable 1 Disable the Wide-Bandith Mode (Wide-Bandwith mode allow a faster startup time and out-of-lock time). 0 to enable the Wide-Bandith Mode. - .pll_freq = 1, // Set to 1 for VCO frequency range 80-180MHz, set to 0 for VCO frequency range 160-240Mhz. - }; - - /* Setup PLL1 on Osc0, mul=7 ,no divisor, lockcount=16, ie. 16Mhzx6 = 96MHz output */ - scif_pll_setup(SCIF_PLL1, opt); // lockcount in main clock for the PLL wait lock - - /* Enable PLL1 */ - scif_pll_enable(SCIF_PLL1); - - /* Wait for PLL1 locked */ - scif_wait_for_pll_locked(SCIF_PLL1) ; - - // Implementation for UC3C parts. - // Setup the generic clock for USB - scif_gc_setup(AVR32_SCIF_GCLK_USB, - SCIF_GCCTRL_PLL1, - AVR32_SCIF_GC_NO_DIV_CLOCK, - 0); - // Now enable the generic clock - scif_gc_enable(AVR32_SCIF_GCLK_USB); - return PASS; - #else - return PCL_NOT_SUPPORTED; - #endif -#endif -} - - -#if UC3L -#else -void pcl_write_gplp(unsigned long gplp, unsigned long value) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - pm_write_gplp(&AVR32_PM,gplp,value); -#else - scif_write_gplp(gplp,value); -#endif -} - -unsigned long pcl_read_gplp(unsigned long gplp) -{ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. - return pm_read_gplp(&AVR32_PM,gplp); -#else - return scif_read_gplp(gplp); -#endif -} -#endif diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h deleted file mode 100644 index 28c5888da80..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/PM/power_clocks_lib.h +++ /dev/null @@ -1,379 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief High-level library abstracting features such as oscillators/pll/dfll - * configuration, clock configuration, System-sensible parameters - * configuration, buses clocks configuration, sleep mode, reset. - * - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _POWER_CLOCKS_LIB_H_ -#define _POWER_CLOCKS_LIB_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include "compiler.h" - -#ifndef AVR32_PM_VERSION_RESETVALUE -// Support for UC3A, UC3A3, UC3B parts. - #include "pm.h" -#else -//! Device-specific data -#if UC3L - #include "pm_uc3l.h" - #include "scif_uc3l.h" - #include "flashcdw.h" -#elif UC3C - #include "pm_uc3c.h" - #include "scif_uc3c.h" - #include "flashc.h" -#endif -#endif - -/*! \name Clocks Management - */ -//! @{ - -//! The different oscillators -typedef enum -{ - PCL_OSC0 = 0, - PCL_OSC1 = 1 -} pcl_osc_t; - -//! The different DFLLs -typedef enum -{ - PCL_DFLL0 = 0, - PCL_DFLL1 = 1 -} pcl_dfll_t; - -//! Possible Main Clock Sources -typedef enum -{ - PCL_MC_RCSYS, // Default main clock source, supported by all (aka Slow Clock) - PCL_MC_OSC0, // Supported by all - PCL_MC_OSC1, // Supported by UC3C only - PCL_MC_OSC0_PLL0, // Supported by UC3A, UC3B, UC3A3, UC3C (the main clock source is PLL0 with OSC0 as reference) - PCL_MC_OSC1_PLL0, // Supported by UC3A, UC3B, UC3A3, UC3C (the main clock source is PLL0 with OSC1 as reference) - PCL_MC_OSC0_PLL1, // Supported by UC3C (the main clock source is PLL1 with OSC0 as reference) - PCL_MC_OSC1_PLL1, // Supported by UC3C (the main clock source is PLL1 with OSC1 as reference) - PCL_MC_DFLL0, // Supported by UC3L - PCL_MC_DFLL1, // Not supported yet - PCL_MC_RC120M, // Supported by UC3L, UC3C - PCL_MC_RC8M, // Supported by UC3C - PCL_MC_CRIPOSC // Supported by UC3C -} pcl_mainclk_t; - -//! Input and output parameters to configure clocks with pcl_configure_clocks(). -// NOTE: regarding the frequency settings, always abide by the datasheet rules and min & max supported frequencies. -#ifndef AVR32_PM_VERSION_RESETVALUE -// Support for UC3A, UC3A3, UC3B parts. -#define pcl_freq_param_t pm_freq_param_t // See pm.h -#else -// Support for UC3C, UC3L parts. -typedef struct -{ - //! Main clock source selection (input argument). - pcl_mainclk_t main_clk_src; - - //! Target CPU frequency (input/output argument). - unsigned long cpu_f; - - //! Target PBA frequency (input/output argument). - unsigned long pba_f; - - //! Target PBB frequency (input/output argument). - unsigned long pbb_f; - - //! Target PBC frequency (input/output argument). - unsigned long pbc_f; - - //! Oscillator 0's external crystal(or external clock) frequency (board dependant) (input argument). - unsigned long osc0_f; - - //! Oscillator 0's external crystal(or external clock) startup time: AVR32_PM_OSCCTRL0_STARTUP_x_RCOSC (input argument). - unsigned long osc0_startup; - - //! DFLL target frequency (input/output argument) (NOTE: the bigger, the most stable the frequency) - unsigned long dfll_f; - - //! Other parameters that might be necessary depending on the device (implementation-dependent). - // For the UC3L DFLL setup, this parameter should be pointing to a structure of - // type (scif_gclk_opt_t *). - void *pextra_params; -} pcl_freq_param_t; -#endif - -//! Define "not supported" for the lib. -#define PCL_NOT_SUPPORTED (-10000) - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - main_clk_src is the id of the main clock source to use, - * - cpu_f and pba_f and pbb_f are the wanted frequencies, - * - osc0_f is the oscillator 0's external crystal (or external clock) on-board frequency (e.g. FOSC0), - * - osc0_startup is the oscillator 0's external crystal (or external clock) startup time (e.g. OSC0_STARTUP). - * - dfll_f is the target DFLL frequency to set-up if main_clk_src is the dfll. - * - * The CPU, HSB and PBA frequencies programmed after configuration are stored back into cpu_f and pba_f. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks() and modify it to use - * preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the RCSYS osc as main source clock. - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies - * - * Supported main clock sources: PCL_MC_RCSYS - * - * Supported synchronous clocks frequencies: - * 115200Hz, 57600Hz, 28800Hz, 14400Hz, 7200Hz, 3600Hz, 1800Hz, 900Hz, 450Hz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_rcsys() and modify it to use - * preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_rcsys(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the RC120M osc as main source clock. - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies - * - * Supported main clock sources: PCL_MC_RC120M - * - * Supported synchronous clocks frequencies: - * 30MHz, 15MHz, 7.5MHz, 3.75MHz, 1.875MHz, 937.5kHz, 468.75kHz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_rc120m() and modify it to - * use preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_rc120m(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the OSC0 osc as main source clock - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies, - * - osc0_f is the oscillator 0's external crystal (or external clock) on-board frequency (e.g. FOSC0), - * - osc0_startup is the oscillator 0's external crystal (or external clock) startup time (e.g. OSC0_STARTUP). - * - * Supported main clock sources: PCL_MC_OSC0 - * - * Supported synchronous clocks frequencies: - * (these obviously depend on the OSC0 frequency; we'll take 16MHz as an example) - * 16MHz, 8MHz, 4MHz, 2MHz, 1MHz, 500kHz, 250kHz, 125kHz, 62.5kHz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_osc0() and modify it to use - * preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_osc0(pcl_freq_param_t *param); - -/*! \brief Automatically configure the CPU, PBA, PBB, and HSB clocks using the DFLL0 as main source clock - * - * This function needs some parameters stored in a pcl_freq_param_t structure: - * - cpu_f and pba_f and pbb_f are the wanted frequencies, - * - dfll_f is the target DFLL frequency to set-up - * - * \note: when the DFLL0 is to be used as main source clock for the synchronous clocks, - * the target frequency of the DFLL should be chosen to be as high as possible - * within the specification range (for stability reasons); the target cpu and pbx - * frequencies will then be reached by appropriate division ratio. - * - * Supported main clock sources: PCL_MC_DFLL0 - * - * Supported synchronous clocks frequencies: - * (these obviously depend on the DFLL target frequency; we'll take 100MHz as an example) - * 50MHz, 25MHz, 12.5MHz, 6.25MHz, 3.125MHz, 1562.5kHz, 781.25kHz, 390.625kHz. - * - * \note: by default, this implementation doesn't perform thorough checks on the - * input parameters. To enable the checks, define AVR32SFW_INPUT_CHECK. - * - * \note: since it is dynamically computing the appropriate field values of the - * configuration registers from the parameters structure, this function is not - * optimal in terms of code size. For a code size optimal solution, it is better - * to create a new function from pcl_configure_clocks_dfll0() and modify it to - * use preprocessor computation from pre-defined target frequencies. - * - * \param param pointer on the configuration structure. - * - * \retval 0 Success. - * \retval <0 The configuration cannot be performed. - */ -extern long int pcl_configure_clocks_dfll0(pcl_freq_param_t *param); - -/*! \brief Switch the main clock source to Osc0 configured in crystal mode - * - * \param osc The oscillator to enable and switch to. - * \param fcrystal Oscillator external crystal frequency (Hz) - * \param startup Oscillator startup time. - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long int pcl_switch_to_osc(pcl_osc_t osc, unsigned int fcrystal, unsigned int startup); - -/*! \brief Enable the clock of a module. - * - * \param module The module to clock (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks" - * or look in the module section). - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. -#define pcl_enable_module(module) pm_enable_module(&AVR32_PM, module) -#else -// Implementation for UC3C, UC3L parts. -#define pcl_enable_module(module) pm_enable_module(module) -#endif - -/*! \brief Disable the clock of a module. - * - * \param module The module to shut down (use one of the defines in the part-specific - * header file under "toolchain folder"/avr32/inc(lude)/avr32/; depending on the - * clock domain, look for the sections "CPU clocks", "HSB clocks", "PBx clocks" - * or look in the module section). - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -#ifndef AVR32_PM_VERSION_RESETVALUE -// Implementation for UC3A, UC3A3, UC3B parts. -#define pcl_disable_module(module) pm_disable_module(&AVR32_PM, module) -#else -// Implementation for UC3C, UC3L parts. -#define pcl_disable_module(module) pm_disable_module(module) -#endif - -/*! \brief Configure the USB Clock - * - * - * \return Status. - * \retval 0 Success. - * \retval <0 An error occured. - */ -extern long int pcl_configure_usb_clock(void); - -//! @} - -/*! \name Power Management - */ -//! @{ -/*! - * \brief Read the content of the GPLP registers - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * - * \return The content of the chosen GPLP register. - */ -extern unsigned long pcl_read_gplp(unsigned long gplp); - - -/*! - * \brief Write into the GPLP registers - * \param gplp GPLP register index (0,1,... depending on the number of GPLP registers for a given part) - * \param value Value to write - */ -extern void pcl_write_gplp(unsigned long gplp, unsigned long value); - -//! @} - -#ifdef __cplusplus -} -#endif - -#endif // _POWER_CLOCKS_LIB_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c deleted file mode 100644 index cadb8b15eec..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.c +++ /dev/null @@ -1,443 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SPI driver for AVR32 UC3. - * - * This file defines a useful set of functions for the SPI interface on AVR32 - * devices. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "spi.h" - -#ifdef FREERTOS_USED - -#include "FreeRTOS.h" -#include "semphr.h" - -#endif - - -/*! \name SPI Writable Bit-Field Registers - */ -//! @{ - -typedef union -{ - unsigned long cr; - avr32_spi_cr_t CR; -} u_avr32_spi_cr_t; - -typedef union -{ - unsigned long mr; - avr32_spi_mr_t MR; -} u_avr32_spi_mr_t; - -typedef union -{ - unsigned long tdr; - avr32_spi_tdr_t TDR; -} u_avr32_spi_tdr_t; - -typedef union -{ - unsigned long ier; - avr32_spi_ier_t IER; -} u_avr32_spi_ier_t; - -typedef union -{ - unsigned long idr; - avr32_spi_idr_t IDR; -} u_avr32_spi_idr_t; - -typedef union -{ - unsigned long csr; - avr32_spi_csr0_t CSR; -} u_avr32_spi_csr_t; - -//! @} - - -#ifdef FREERTOS_USED - -//! The SPI mutex. -static xSemaphoreHandle xSPIMutex; - -#endif - - -/*! \brief Calculates the baudrate divider. - * - * \param options Pointer to a structure containing initialization options for - * an SPI channel. - * \param pba_hz SPI module input clock frequency (PBA clock, Hz). - * - * \return Divider or error code. - * \retval >=0 Success. - * \retval <0 Error. - */ -static int getBaudDiv(const spi_options_t *options, unsigned int pba_hz) -{ - int baudDiv = (pba_hz + options->baudrate / 2) / options->baudrate; - - if (baudDiv <= 0 || baudDiv > 255) { - return -1; - } - - return baudDiv; -} - - -void spi_reset(volatile avr32_spi_t *spi) -{ - spi->cr = AVR32_SPI_CR_SWRST_MASK; -} - - -spi_status_t spi_initSlave(volatile avr32_spi_t *spi, - unsigned char bits, - unsigned char spi_mode) -{ - if (spi_mode > 3 || - bits < 8 || bits > 16) { - return SPI_ERROR_ARGUMENT; - } - - // Reset. - spi->cr = AVR32_SPI_CR_SWRST_MASK; - - // Will use CSR0 offsets; these are the same for CSR0 to CSR3. - spi->csr0 = ((spi_mode >> 1) << AVR32_SPI_CSR0_CPOL_OFFSET) | - (((spi_mode & 0x1) ^ 0x1) << AVR32_SPI_CSR0_NCPHA_OFFSET) | - ((bits - 8) << AVR32_SPI_CSR0_BITS_OFFSET); - - return SPI_OK; -} - - -spi_status_t spi_initTest(volatile avr32_spi_t *spi) -{ - // Reset. - spi->cr = AVR32_SPI_CR_SWRST_MASK; - spi->mr |= AVR32_SPI_MR_MSTR_MASK | // Master Mode. - AVR32_SPI_MR_LLB_MASK; // Local Loopback. - - return SPI_OK; -} - - -spi_status_t spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t *options) -{ - u_avr32_spi_mr_t u_avr32_spi_mr; - - if (options->modfdis > 1) { - return SPI_ERROR_ARGUMENT; - } - - // Reset. - spi->cr = AVR32_SPI_CR_SWRST_MASK; - - // Master Mode. - u_avr32_spi_mr.mr = spi->mr; - u_avr32_spi_mr.MR.mstr = 1; - u_avr32_spi_mr.MR.modfdis = options->modfdis; - u_avr32_spi_mr.MR.llb = 0; - u_avr32_spi_mr.MR.pcs = (1 << AVR32_SPI_MR_PCS_SIZE) - 1; - spi->mr = u_avr32_spi_mr.mr; - - return SPI_OK; -} - - -spi_status_t spi_selectionMode(volatile avr32_spi_t *spi, - unsigned char variable_ps, - unsigned char pcs_decode, - unsigned char delay) -{ - u_avr32_spi_mr_t u_avr32_spi_mr; - - if (variable_ps > 1 || - pcs_decode > 1) { - return SPI_ERROR_ARGUMENT; - } - - u_avr32_spi_mr.mr = spi->mr; - u_avr32_spi_mr.MR.ps = variable_ps; - u_avr32_spi_mr.MR.pcsdec = pcs_decode; - u_avr32_spi_mr.MR.dlybcs = delay; - spi->mr = u_avr32_spi_mr.mr; - - return SPI_OK; -} - - -spi_status_t spi_selectChip(volatile avr32_spi_t *spi, unsigned char chip) -{ -#ifdef FREERTOS_USED - while (pdFALSE == xSemaphoreTake(xSPIMutex, 20)); -#endif - - // Assert all lines; no peripheral is selected. - spi->mr |= AVR32_SPI_MR_PCS_MASK; - - if (spi->mr & AVR32_SPI_MR_PCSDEC_MASK) { - // The signal is decoded; allow up to 15 chips. - if (chip > 14) { - return SPI_ERROR_ARGUMENT; - } - - spi->mr &= ~AVR32_SPI_MR_PCS_MASK | (chip << AVR32_SPI_MR_PCS_OFFSET); - } else { - if (chip > 3) { - return SPI_ERROR_ARGUMENT; - } - - spi->mr &= ~(1 << (AVR32_SPI_MR_PCS_OFFSET + chip)); - } - - return SPI_OK; -} - - -spi_status_t spi_unselectChip(volatile avr32_spi_t *spi, unsigned char chip) -{ - unsigned int timeout = SPI_TIMEOUT; - - while (!(spi->sr & AVR32_SPI_SR_TXEMPTY_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - // Assert all lines; no peripheral is selected. - spi->mr |= AVR32_SPI_MR_PCS_MASK; - - // Last transfer, so deassert the current NPCS if CSAAT is set. - spi->cr = AVR32_SPI_CR_LASTXFER_MASK; - -#ifdef FREERTOS_USED - xSemaphoreGive(xSPIMutex); -#endif - - return SPI_OK; -} - - -spi_status_t spi_setupChipReg(volatile avr32_spi_t *spi, - const spi_options_t *options, - unsigned int pba_hz) -{ - u_avr32_spi_csr_t u_avr32_spi_csr; - - if (options->spi_mode > 3 || - options->stay_act > 1 || - options->bits < 8 || options->bits > 16) { - return SPI_ERROR_ARGUMENT; - } - - int baudDiv = getBaudDiv(options, pba_hz); - - if (baudDiv < 0) { - return SPI_ERROR_ARGUMENT; - } - - // Will use CSR0 offsets; these are the same for CSR0 to CSR3. - u_avr32_spi_csr.csr = 0; - u_avr32_spi_csr.CSR.cpol = options->spi_mode >> 1; - u_avr32_spi_csr.CSR.ncpha = (options->spi_mode & 0x1) ^ 0x1; - u_avr32_spi_csr.CSR.csaat = options->stay_act; - u_avr32_spi_csr.CSR.bits = options->bits - 8; - u_avr32_spi_csr.CSR.scbr = baudDiv; - u_avr32_spi_csr.CSR.dlybs = options->spck_delay; - u_avr32_spi_csr.CSR.dlybct = options->trans_delay; - - switch(options->reg) { - case 0: - spi->csr0 = u_avr32_spi_csr.csr; - break; - case 1: - spi->csr1 = u_avr32_spi_csr.csr; - break; - case 2: - spi->csr2 = u_avr32_spi_csr.csr; - break; - case 3: - spi->csr3 = u_avr32_spi_csr.csr; - break; - default: - return SPI_ERROR_ARGUMENT; - } - -#ifdef FREERTOS_USED - if (!xSPIMutex) - { - // Create the SPI mutex. - vSemaphoreCreateBinary(xSPIMutex); - if (!xSPIMutex) - { - while(1); - } - } -#endif - - return SPI_OK; -} - - -void spi_enable(volatile avr32_spi_t *spi) -{ - spi->cr = AVR32_SPI_CR_SPIEN_MASK; -} - - -void spi_disable(volatile avr32_spi_t *spi) -{ - spi->cr = AVR32_SPI_CR_SPIDIS_MASK; -} - - -int spi_is_enabled(volatile avr32_spi_t *spi) -{ - return (spi->sr & AVR32_SPI_SR_SPIENS_MASK) != 0; -} - - -unsigned char spi_writeRegisterEmptyCheck(volatile avr32_spi_t *spi) -{ - return ((spi->sr & AVR32_SPI_SR_TDRE_MASK) != 0); -} - - -spi_status_t spi_write(volatile avr32_spi_t *spi, unsigned short data) -{ - unsigned int timeout = SPI_TIMEOUT; - - while (!(spi->sr & AVR32_SPI_SR_TDRE_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - spi->tdr = data << AVR32_SPI_TDR_TD_OFFSET; - - return SPI_OK; -} - - -spi_status_t spi_variableSlaveWrite(volatile avr32_spi_t *spi, unsigned short data, - unsigned char pcs, unsigned char lastxfer) -{ - unsigned int timeout = SPI_TIMEOUT; - - if (pcs > 14 || lastxfer > 1) { - return SPI_ERROR_ARGUMENT; - } - - while (!(spi->sr & AVR32_SPI_SR_TDRE_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - spi->tdr = (data << AVR32_SPI_TDR_TD_OFFSET) | - (pcs << AVR32_SPI_TDR_PCS_OFFSET) | - (lastxfer << AVR32_SPI_TDR_LASTXFER_OFFSET); - - return SPI_OK; -} - - -unsigned char spi_writeEndCheck(volatile avr32_spi_t *spi) -{ - return ((spi->sr & AVR32_SPI_SR_TXEMPTY_MASK) != 0); -} - - -unsigned char spi_readRegisterFullCheck(volatile avr32_spi_t *spi) -{ - return ((spi->sr & AVR32_SPI_SR_RDRF_MASK) != 0); -} - - -spi_status_t spi_read(volatile avr32_spi_t *spi, unsigned short *data) -{ - unsigned int timeout = SPI_TIMEOUT; - - while ((spi->sr & (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) != - (AVR32_SPI_SR_RDRF_MASK | AVR32_SPI_SR_TXEMPTY_MASK)) { - if (!timeout--) { - return SPI_ERROR_TIMEOUT; - } - } - - *data = spi->rdr >> AVR32_SPI_RDR_RD_OFFSET; - - return SPI_OK; -} - - -unsigned char spi_getStatus(volatile avr32_spi_t *spi) -{ - spi_status_t ret = SPI_OK; - unsigned long sr = spi->sr; - - if (sr & AVR32_SPI_SR_OVRES_MASK) { - ret = SPI_ERROR_OVERRUN; - } - - if (sr & AVR32_SPI_SR_MODF_MASK) { - ret += SPI_ERROR_MODE_FAULT; - } - - if (ret == (SPI_ERROR_OVERRUN + SPI_ERROR_MODE_FAULT)) { - return SPI_ERROR_OVERRUN_AND_MODE_FAULT; - } - else if (ret > 0) { - return ret; - } else { - return SPI_OK; - } -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h deleted file mode 100644 index 6dcc928484f..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/SPI/spi.h +++ /dev/null @@ -1,342 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief SPI driver for AVR32 UC3. - * - * This file defines a useful set of functions for the SPI interface on AVR32 - * devices. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with an SPI module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _SPI_H_ -#define _SPI_H_ - -#include - - -//! Time-out value (number of attempts). -#define SPI_TIMEOUT 10000 - - -//! Status codes used by the SPI driver. -typedef enum -{ - SPI_ERROR = -1, - SPI_OK = 0, - SPI_ERROR_TIMEOUT = 1, - SPI_ERROR_ARGUMENT, - SPI_ERROR_OVERRUN, - SPI_ERROR_MODE_FAULT, - SPI_ERROR_OVERRUN_AND_MODE_FAULT -} spi_status_t; - -//! Option structure for SPI channels. -typedef struct -{ - //! The SPI channel to set up. - unsigned char reg; - - //! Preferred baudrate for the SPI. - unsigned int baudrate; - - //! Number of bits in each character (8 to 16). - unsigned char bits; - - //! Delay before first clock pulse after selecting slave (in PBA clock periods). - unsigned char spck_delay; - - //! Delay between each transfer/character (in PBA clock periods). - unsigned char trans_delay; - - //! Sets this chip to stay active after last transfer to it. - unsigned char stay_act; - - //! Which SPI mode to use when transmitting. - unsigned char spi_mode; - - //! Disables the mode fault detection. - //! With this bit cleared, the SPI master mode will disable itself if another - //! master tries to address it. - unsigned char modfdis; -} spi_options_t; - - -/*! \brief Resets the SPI controller. - * - * \param spi Base address of the SPI instance. - */ -extern void spi_reset(volatile avr32_spi_t *spi); - -/*! \brief Initializes the SPI in slave mode. - * - * \param spi Base address of the SPI instance. - * \param bits Number of bits in each transmitted character (8 to 16). - * \param spi_mode Clock polarity and phase. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_initSlave(volatile avr32_spi_t *spi, - unsigned char bits, - unsigned char spi_mode); - -/*! \brief Sets up the SPI in a test mode where the transmitter is connected to - * the receiver (local loopback). - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval SPI_OK Success. - */ -extern spi_status_t spi_initTest(volatile avr32_spi_t *spi); - -/*! \brief Initializes the SPI in master mode. - * - * \param spi Base address of the SPI instance. - * \param options Pointer to a structure containing initialization options. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_initMaster(volatile avr32_spi_t *spi, const spi_options_t *options); - -/*! \brief Sets up how and when the slave chips are selected (master mode only). - * - * \param spi Base address of the SPI instance. - * \param variable_ps Target slave is selected in transfer register for every - * character to transmit. - * \param pcs_decode The four chip select lines are decoded externally. Values - * 0 to 14 can be given to \ref spi_selectChip. - * \param delay Delay in PBA periods between chip selects. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_selectionMode(volatile avr32_spi_t *spi, - unsigned char variable_ps, - unsigned char pcs_decode, - unsigned char delay); - -/*! \brief Selects slave chip. - * - * \param spi Base address of the SPI instance. - * \param chip Slave chip number (normal: 0 to 3, extarnally decoded signal: 0 - * to 14). - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_selectChip(volatile avr32_spi_t *spi, unsigned char chip); - -/*! \brief Unselects slave chip. - * - * \param spi Base address of the SPI instance. - * \param chip Slave chip number (normal: 0 to 3, extarnally decoded signal: 0 - * to 14). - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * - * \note Will block program execution until time-out occurs if last transmission - * is not complete. Invoke \ref spi_writeEndCheck beforehand if needed. - */ -extern spi_status_t spi_unselectChip(volatile avr32_spi_t *spi, unsigned char chip); - -/*! \brief Sets options for a specific slave chip. - * - * The baudrate field has to be written before transfer in master mode. Four - * similar registers exist, one for each slave. When using encoded slave - * addressing, reg=0 sets options for slaves 0 to 3, reg=1 for slaves 4 to 7 and - * so on. - * - * \param spi Base address of the SPI instance. - * \param options Pointer to a structure containing initialization options for - * an SPI channel. - * \param pba_hz SPI module input clock frequency (PBA clock, Hz). - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - */ -extern spi_status_t spi_setupChipReg(volatile avr32_spi_t *spi, - const spi_options_t *options, - unsigned int pba_hz); - -/*! \brief Enables the SPI. - * - * \param spi Base address of the SPI instance. - */ -extern void spi_enable(volatile avr32_spi_t *spi); - -/*! \brief Disables the SPI. - * - * Ensures that nothing is transferred while setting up buffers. - * - * \param spi Base address of the SPI instance. - * - * \warning This may cause data loss if used on a slave SPI. - */ -extern void spi_disable(volatile avr32_spi_t *spi); - -/*! \brief Tests if the SPI is enabled. - * - * \param spi Base address of the SPI instance. - * - * \return \c 1 if the SPI is enabled, otherwise \c 0. - */ -extern int spi_is_enabled(volatile avr32_spi_t *spi); - -/*! \brief Checks if there is no data in the transmit register. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval 1 No data in TDR. - * \retval 0 Some data in TDR. - */ -extern unsigned char spi_writeRegisterEmptyCheck(volatile avr32_spi_t *spi); - -/*! \brief Writes one data word in master fixed peripheral select mode or in - * slave mode. - * - * \param spi Base address of the SPI instance. - * \param data The data word to write. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * - * \note Will block program execution until time-out occurs if transmitter is - * busy and transmit buffer is full. Invoke - * \ref spi_writeRegisterEmptyCheck beforehand if needed. - * - * \note Once the data has been written to the transmit buffer, the end of - * transmission is not waited for. Invoke \ref spi_writeEndCheck if - * needed. - */ -extern spi_status_t spi_write(volatile avr32_spi_t *spi, unsigned short data); - -/*! \brief Selects a slave in master variable peripheral select mode and writes - * one data word to it. - * - * \param spi Base address of the SPI instance. - * \param data The data word to write. - * \param pcs Slave selector (bit 0 -> nCS line 0, bit 1 -> nCS line 1, - * etc.). - * \param lastxfer Boolean indicating whether this is the last data word - * transfer. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * \retval SPI_ERROR_ARGUMENT Invalid argument(s) passed. - * - * \note Will block program execution until time-out occurs if transmitter is - * busy and transmit buffer is full. Invoke - * \ref spi_writeRegisterEmptyCheck beforehand if needed. - * - * \note Once the data has been written to the transmit buffer, the end of - * transmission is not waited for. Invoke \ref spi_writeEndCheck if - * needed. - */ -extern spi_status_t spi_variableSlaveWrite(volatile avr32_spi_t *spi, - unsigned short data, - unsigned char pcs, - unsigned char lastxfer); - -/*! \brief Checks if all transmissions are complete. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval 1 All transmissions complete. - * \retval 0 Transmissions not complete. - */ -extern unsigned char spi_writeEndCheck(volatile avr32_spi_t *spi); - -/*! \brief Checks if there is data in the receive register. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval 1 Some data in RDR. - * \retval 0 No data in RDR. - */ -extern unsigned char spi_readRegisterFullCheck(volatile avr32_spi_t *spi); - -/*! \brief Reads one data word in master mode or in slave mode. - * - * \param spi Base address of the SPI instance. - * \param data Pointer to the location where to store the received data word. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_TIMEOUT Time-out. - * - * \note Will block program execution until time-out occurs if no data is - * received or last transmission is not complete. Invoke - * \ref spi_writeEndCheck or \ref spi_readRegisterFullCheck beforehand if - * needed. - */ -extern spi_status_t spi_read(volatile avr32_spi_t *spi, unsigned short *data); - -/*! \brief Gets status information from the SPI. - * - * \param spi Base address of the SPI instance. - * - * \return Status. - * \retval SPI_OK Success. - * \retval SPI_ERROR_OVERRUN Overrun error. - * \retval SPI_ERROR_MODE_FAULT Mode fault (SPI addressed as slave - * while in master mode). - * \retval SPI_ERROR_OVERRUN_AND_MODE_FAULT Overrun error and mode fault. - */ -extern unsigned char spi_getStatus(volatile avr32_spi_t *spi); - - -#endif // _SPI_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c deleted file mode 100644 index b95882a7516..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.c +++ /dev/null @@ -1,914 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief USART driver for AVR32 UC3. - * - * This file contains basic functions for the AVR32 USART, with support for all - * modes, settings and clock speeds. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "compiler.h" -#include "usart.h" - - -//------------------------------------------------------------------------------ -/*! \name Private Functions - */ -//! @{ - - -/*! \brief Checks if the USART is in multidrop mode. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART is in multidrop mode, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -static __inline__ int usart_mode_is_multidrop(volatile avr32_usart_t *usart) -{ - return ((usart->mr >> AVR32_USART_MR_PAR_OFFSET) & AVR32_USART_MR_PAR_MULTI) == AVR32_USART_MR_PAR_MULTI; -} - - -/*! \brief Calculates a clock divider (\e CD) and a fractional part (\e FP) for - * the USART asynchronous modes to generate a baud rate as close as - * possible to the baud rate set point. - * - * Baud rate calculation: - * \f$ Baudrate = \frac{SelectedClock}{Over \times (CD + \frac{FP}{8})} \f$, \e Over being 16 or 8. - * The maximal oversampling is selected if it allows to generate a baud rate close to the set point. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Baud rate successfully initialized. - * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency. - */ -static int usart_set_async_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz) -{ - unsigned int over = (pba_hz >= 16 * baudrate) ? 16 : 8; - unsigned int cd_fp = ((1 << AVR32_USART_BRGR_FP_SIZE) * pba_hz + (over * baudrate) / 2) / (over * baudrate); - unsigned int cd = cd_fp >> AVR32_USART_BRGR_FP_SIZE; - unsigned int fp = cd_fp & ((1 << AVR32_USART_BRGR_FP_SIZE) - 1); - - if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~(AVR32_USART_MR_USCLKS_MASK | - AVR32_USART_MR_SYNC_MASK | - AVR32_USART_MR_OVER_MASK)) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET | - ((over == 16) ? AVR32_USART_MR_OVER_X16 : AVR32_USART_MR_OVER_X8) << AVR32_USART_MR_OVER_OFFSET; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET | - fp << AVR32_USART_BRGR_FP_OFFSET; - - return USART_SUCCESS; -} - - -/*! \brief Calculates a clock divider (\e CD) for the USART synchronous master - * modes to generate a baud rate as close as possible to the baud rate - * set point. - * - * Baud rate calculation: - * \f$ Baudrate = \frac{SelectedClock}{CD} \f$. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Baud rate successfully initialized. - * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency. - */ -static int usart_set_sync_master_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz) -{ - unsigned int cd = (pba_hz + baudrate / 2) / baudrate; - - if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET | - AVR32_USART_MR_SYNC_MASK; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET; - - return USART_SUCCESS; -} - - -/*! \brief Selects the SCK pin as the source of baud rate for the USART - * synchronous slave modes. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Baud rate successfully initialized. - */ -static int usart_set_sync_slave_baudrate(volatile avr32_usart_t *usart) -{ - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_SCK << AVR32_USART_MR_USCLKS_OFFSET | - AVR32_USART_MR_SYNC_MASK; - - return USART_SUCCESS; -} - - -/*! \brief Calculates a clock divider (\e CD) for the USART ISO7816 mode to - * generate an ISO7816 clock as close as possible to the clock set point. - * - * ISO7816 clock calculation: - * \f$ Clock = \frac{SelectedClock}{CD} \f$. - * - * \param usart Base address of the USART instance. - * \param clock ISO7816 clock set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS ISO7816 clock successfully initialized. - * \retval USART_INVALID_INPUT ISO7816 clock set point is out of range for the given input clock frequency. - */ -static int usart_set_iso7816_clock(volatile avr32_usart_t *usart, unsigned int clock, unsigned long pba_hz) -{ - unsigned int cd = (pba_hz + clock / 2) / clock; - - if (cd < 1 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~(AVR32_USART_MR_USCLKS_MASK | - AVR32_USART_MR_SYNC_MASK | - AVR32_USART_MR_OVER_MASK)) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET | - AVR32_USART_MR_OVER_X16 << AVR32_USART_MR_OVER_OFFSET; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET; - - return USART_SUCCESS; -} - - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - - -/*! \brief Calculates a clock divider (\e CD) for the USART SPI master mode to - * generate a baud rate as close as possible to the baud rate set point. - * - * Baud rate calculation: - * \f$ Baudrate = \frac{SelectedClock}{CD} \f$. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate set point. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Baud rate successfully initialized. - * \retval USART_INVALID_INPUT Baud rate set point is out of range for the given input clock frequency. - */ -static int usart_set_spi_master_baudrate(volatile avr32_usart_t *usart, unsigned int baudrate, unsigned long pba_hz) -{ - unsigned int cd = (pba_hz + baudrate / 2) / baudrate; - - if (cd < 4 || cd > (1 << AVR32_USART_BRGR_CD_SIZE) - 1) - return USART_INVALID_INPUT; - - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_MCK << AVR32_USART_MR_USCLKS_OFFSET; - - usart->brgr = cd << AVR32_USART_BRGR_CD_OFFSET; - - return USART_SUCCESS; -} - - -/*! \brief Selects the SCK pin as the source of baud rate for the USART SPI - * slave mode. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Baud rate successfully initialized. - */ -static int usart_set_spi_slave_baudrate(volatile avr32_usart_t *usart) -{ - usart->mr = (usart->mr & ~AVR32_USART_MR_USCLKS_MASK) | - AVR32_USART_MR_USCLKS_SCK << AVR32_USART_MR_USCLKS_OFFSET; - - return USART_SUCCESS; -} - - -#endif // USART rev. >= 4.0.0 - - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name Initialization Functions - */ -//! @{ - - -void usart_reset(volatile avr32_usart_t *usart) -{ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); - - // Disable all USART interrupts. - // Interrupts needed should be set explicitly on every reset. - if (global_interrupt_enabled) Disable_global_interrupt(); - usart->idr = 0xFFFFFFFF; - usart->csr; - if (global_interrupt_enabled) Enable_global_interrupt(); - - // Reset mode and other registers that could cause unpredictable behavior after reset. - usart->mr = 0; - usart->rtor = 0; - usart->ttgr = 0; - - // Shutdown TX and RX (will be re-enabled when setup has successfully completed), - // reset status bits and turn off DTR and RTS. - usart->cr = AVR32_USART_CR_RSTRX_MASK | - AVR32_USART_CR_RSTTX_MASK | - AVR32_USART_CR_RSTSTA_MASK | - AVR32_USART_CR_RSTIT_MASK | - AVR32_USART_CR_RSTNACK_MASK | -#ifndef AVR32_USART_440_H_INCLUDED -// Note: Modem Signal Management DTR-DSR-DCD-RI are not included in USART rev.440. - AVR32_USART_CR_DTRDIS_MASK | -#endif - AVR32_USART_CR_RTSDIS_MASK; -} - - -int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_async_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1, 1.5 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET; - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_rs232_tx_only(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits == 1 || opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_sync_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET; - - // Setup complete; enable communication. - // Enable only output as input is not possible in synchronous mode without - // transferring clock. - usart->cr = AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set hardware handshaking mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_HARDWARE << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set modem mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_MODEM << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_sync_master(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits == 1 || opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_sync_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_CLKO_MASK; - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_sync_slave(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->paritytype > 7 || - opt->stopbits == 1 || opt->stopbits > 2 + 255 || - opt->channelmode > 3 || - usart_set_sync_slave_baudrate(usart) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET; - - if (opt->stopbits > USART_2_STOPBITS) - { - // Set two stop bits - usart->mr |= AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET; - // and a timeguard period gives the rest. - usart->ttgr = opt->stopbits - USART_2_STOPBITS; - } - else - // Insert 1 or 2 stop bits. - usart->mr |= opt->stopbits << AVR32_USART_MR_NBSTOP_OFFSET; - - // Set normal mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_NORMAL << AVR32_USART_MR_MODE_OFFSET; - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set RS485 mode. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MR_MODE_RS485 << AVR32_USART_MR_MODE_OFFSET; - - return USART_SUCCESS; -} - - -int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt, - long pba_hz, unsigned char irda_filter) -{ - // First: Setup standard RS232. - if (usart_init_rs232(usart, opt, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set IrDA filter. - usart->ifr = irda_filter; - - // Set IrDA mode and activate filtering of input. - usart->mr = (usart->mr & ~AVR32_USART_MR_MODE_MASK) | - AVR32_USART_MODE_IRDA << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_FILTER_MASK; - - return USART_SUCCESS; -} - - -int usart_init_iso7816(volatile avr32_usart_t *usart, const usart_iso7816_options_t *opt, int t, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->paritytype > 1) - return USART_INVALID_INPUT; - - if (t == 0) - { - // Set USART mode to ISO7816, T=0. - // The T=0 protocol always uses 2 stop bits. - usart->mr = AVR32_USART_MR_MODE_ISO7816_T0 << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_NBSTOP_2 << AVR32_USART_MR_NBSTOP_OFFSET | - opt->bit_order << AVR32_USART_MR_MSBF_OFFSET; // Allow MSBF in T=0. - } - else if (t == 1) - { - // Only LSB first in the T=1 protocol. - // max_iterations field is only used in T=0 mode. - if (opt->bit_order != 0 || - opt->max_iterations != 0) - return USART_INVALID_INPUT; - - // Set USART mode to ISO7816, T=1. - // The T=1 protocol always uses 1 stop bit. - usart->mr = AVR32_USART_MR_MODE_ISO7816_T1 << AVR32_USART_MR_MODE_OFFSET | - AVR32_USART_MR_NBSTOP_1 << AVR32_USART_MR_NBSTOP_OFFSET; - } - else - return USART_INVALID_INPUT; - - if (usart_set_iso7816_clock(usart, opt->iso7816_hz, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - // Set FIDI register: bit rate = selected clock/FI_DI_ratio/16. - usart->fidi = opt->fidi_ratio; - - // Set ISO7816 spesific options in the MODE register. - usart->mr |= opt->paritytype << AVR32_USART_MR_PAR_OFFSET | - AVR32_USART_MR_CLKO_MASK | // Enable clock output. - opt->inhibit_nack << AVR32_USART_MR_INACK_OFFSET | - opt->dis_suc_nack << AVR32_USART_MR_DSNACK_OFFSET | - opt->max_iterations << AVR32_USART_MR_MAX_ITERATION_OFFSET; - - // Setup complete; enable the receiver by default. - usart_iso7816_enable_receiver(usart); - - return USART_SUCCESS; -} - - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - - -int usart_init_lin_master(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (usart_set_async_baudrate(usart, baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - usart->mr |= AVR32_USART_MR_MODE_LIN_MASTER << AVR32_USART_MR_MODE_OFFSET; // LIN master mode. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_lin_slave(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (usart_set_async_baudrate(usart, baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - usart->mr |= AVR32_USART_MR_MODE_LIN_SLAVE << AVR32_USART_MR_MODE_OFFSET; // LIN slave mode. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_spi_master(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->spimode > 3 || - opt->channelmode > 3 || - usart_set_spi_master_baudrate(usart, opt->baudrate, pba_hz) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= AVR32_USART_MR_MODE_SPI_MASTER << AVR32_USART_MR_MODE_OFFSET | // SPI master mode. - ((opt->spimode & 0x1) ^ 0x1) << AVR32_USART_MR_SYNC_OFFSET | // SPI clock phase. - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET | // Channel mode. - (opt->spimode >> 1) << AVR32_USART_MR_MSBF_OFFSET | // SPI clock polarity. - AVR32_USART_MR_CLKO_MASK; // Drive SCK pin. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -int usart_init_spi_slave(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz) -{ - // Reset the USART and shutdown TX and RX. - usart_reset(usart); - - // Check input values. - if (!opt || // Null pointer. - opt->charlength < 5 || opt->charlength > 9 || - opt->spimode > 3 || - opt->channelmode > 3 || - usart_set_spi_slave_baudrate(usart) == USART_INVALID_INPUT) - return USART_INVALID_INPUT; - - if (opt->charlength == 9) - { - // Character length set to 9 bits. MODE9 dominates CHRL. - usart->mr |= AVR32_USART_MR_MODE9_MASK; - } - else - { - // CHRL gives the character length (- 5) when MODE9 = 0. - usart->mr |= (opt->charlength - 5) << AVR32_USART_MR_CHRL_OFFSET; - } - - usart->mr |= AVR32_USART_MR_MODE_SPI_SLAVE << AVR32_USART_MR_MODE_OFFSET | // SPI slave mode. - ((opt->spimode & 0x1) ^ 0x1) << AVR32_USART_MR_SYNC_OFFSET | // SPI clock phase. - opt->channelmode << AVR32_USART_MR_CHMODE_OFFSET | // Channel mode. - (opt->spimode >> 1) << AVR32_USART_MR_MSBF_OFFSET; // SPI clock polarity. - - // Setup complete; enable communication. - // Enable input and output. - usart->cr = AVR32_USART_CR_RXEN_MASK | - AVR32_USART_CR_TXEN_MASK; - - return USART_SUCCESS; -} - - -#endif // USART rev. >= 4.0.0 - - -//! @} - - -//------------------------------------------------------------------------------ -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - - -/*! \name SPI Control Functions - */ -//! @{ - - -int usart_spi_selectChip(volatile avr32_usart_t *usart) -{ - // Force the SPI chip select. - usart->cr = AVR32_USART_CR_RTSEN_MASK; - - return USART_SUCCESS; -} - - -int usart_spi_unselectChip(volatile avr32_usart_t *usart) -{ - int timeout = USART_DEFAULT_TIMEOUT; - - do - { - if (!timeout--) return USART_FAILURE; - } while (!usart_tx_empty(usart)); - - // Release the SPI chip select. - usart->cr = AVR32_USART_CR_RTSDIS_MASK; - - return USART_SUCCESS; -} - - -//! @} - - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -/*! \name Transmit/Receive Functions - */ -//! @{ - - -int usart_send_address(volatile avr32_usart_t *usart, int address) -{ - // Check if USART is in multidrop / RS485 mode. - if (!usart_mode_is_multidrop(usart)) return USART_MODE_FAULT; - - // Prepare to send an address. - usart->cr = AVR32_USART_CR_SENDA_MASK; - - // Write the address to TX. - usart_bw_write_char(usart, address); - - return USART_SUCCESS; -} - - -int usart_write_char(volatile avr32_usart_t *usart, int c) -{ - if (usart_tx_ready(usart)) - { - usart->thr = (c << AVR32_USART_THR_TXCHR_OFFSET) & AVR32_USART_THR_TXCHR_MASK; - return USART_SUCCESS; - } - else - return USART_TX_BUSY; -} - - -int usart_putchar(volatile avr32_usart_t *usart, int c) -{ - int timeout = USART_DEFAULT_TIMEOUT; - - if (c == '\n') - { - do - { - if (!timeout--) return USART_FAILURE; - } while (usart_write_char(usart, '\r') != USART_SUCCESS); - - timeout = USART_DEFAULT_TIMEOUT; - } - - do - { - if (!timeout--) return USART_FAILURE; - } while (usart_write_char(usart, c) != USART_SUCCESS); - - return USART_SUCCESS; -} - - -int usart_read_char(volatile avr32_usart_t *usart, int *c) -{ - // Check for errors: frame, parity and overrun. In RS485 mode, a parity error - // would mean that an address char has been received. - if (usart->csr & (AVR32_USART_CSR_OVRE_MASK | - AVR32_USART_CSR_FRAME_MASK | - AVR32_USART_CSR_PARE_MASK)) - return USART_RX_ERROR; - - // No error; if we really did receive a char, read it and return SUCCESS. - if (usart_test_hit(usart)) - { - *c = (usart->rhr & AVR32_USART_RHR_RXCHR_MASK) >> AVR32_USART_RHR_RXCHR_OFFSET; - return USART_SUCCESS; - } - else - return USART_RX_EMPTY; -} - - -int usart_getchar(volatile avr32_usart_t *usart) -{ - int c, ret; - - while ((ret = usart_read_char(usart, &c)) == USART_RX_EMPTY); - - if (ret == USART_RX_ERROR) - return USART_FAILURE; - - return c; -} - - -void usart_write_line(volatile avr32_usart_t *usart, const char *string) -{ - while (*string != '\0') - usart_putchar(usart, *string++); -} - - -int usart_get_echo_line(volatile avr32_usart_t *usart) -{ - int rx_char; - int retval = USART_SUCCESS; - - while (1) - { - rx_char = usart_getchar(usart); - if (rx_char == USART_FAILURE) - { - usart_write_line(usart, "Error!!!\n"); - retval = USART_FAILURE; - break; - } - if (rx_char == '\x03') - { - retval = USART_FAILURE; - break; - } - usart_putchar(usart, rx_char); - if (rx_char == '\r') - { - usart_putchar(usart, '\n'); - break; - } - } - - return retval; -} - - -//! @} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h deleted file mode 100644 index bc1c100f8ae..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/DRIVERS/USART/usart.h +++ /dev/null @@ -1,889 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief USART driver for AVR32 UC3. - * - * This file contains basic functions for the AVR32 USART, with support for all - * modes, settings and clock speeds. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _USART_H_ -#define _USART_H_ - -#include -#include "compiler.h" - - -/*! \name Return Values - */ -//! @{ -#define USART_SUCCESS 0 //!< Successful completion. -#define USART_FAILURE -1 //!< Failure because of some unspecified reason. -#define USART_INVALID_INPUT 1 //!< Input value out of range. -#define USART_INVALID_ARGUMENT -1 //!< Argument value out of range. -#define USART_TX_BUSY 2 //!< Transmitter was busy. -#define USART_RX_EMPTY 3 //!< Nothing was received. -#define USART_RX_ERROR 4 //!< Transmission error occurred. -#define USART_MODE_FAULT 5 //!< USART not in the appropriate mode. -//! @} - -//! Default time-out value (number of attempts). -#define USART_DEFAULT_TIMEOUT 10000 - -/*! \name Parity Settings - */ -//! @{ -#define USART_EVEN_PARITY AVR32_USART_MR_PAR_EVEN //!< Use even parity on character transmission. -#define USART_ODD_PARITY AVR32_USART_MR_PAR_ODD //!< Use odd parity on character transmission. -#define USART_SPACE_PARITY AVR32_USART_MR_PAR_SPACE //!< Use a space as parity bit. -#define USART_MARK_PARITY AVR32_USART_MR_PAR_MARK //!< Use a mark as parity bit. -#define USART_NO_PARITY AVR32_USART_MR_PAR_NONE //!< Don't use a parity bit. -#define USART_MULTIDROP_PARITY AVR32_USART_MR_PAR_MULTI //!< Parity bit is used to flag address characters. -//! @} - -/*! \name Stop Bits Settings - */ -//! @{ -#define USART_1_STOPBIT AVR32_USART_MR_NBSTOP_1 //!< Use 1 stop bit. -#define USART_1_5_STOPBITS AVR32_USART_MR_NBSTOP_1_5 //!< Use 1.5 stop bits. -#define USART_2_STOPBITS AVR32_USART_MR_NBSTOP_2 //!< Use 2 stop bits (for more, just give the number of bits). -//! @} - -/*! \name Channel Modes - */ -//! @{ -#define USART_NORMAL_CHMODE AVR32_USART_MR_CHMODE_NORMAL //!< Normal communication. -#define USART_AUTO_ECHO AVR32_USART_MR_CHMODE_ECHO //!< Echo data. -#define USART_LOCAL_LOOPBACK AVR32_USART_MR_CHMODE_LOCAL_LOOP //!< Local loopback. -#define USART_REMOTE_LOOPBACK AVR32_USART_MR_CHMODE_REMOTE_LOOP //!< Remote loopback. -//! @} - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \name LIN Node Actions - */ -//! @{ -#define USART_LIN_PUBLISH_ACTION AVR32_USART_LINMR_NACT_PUBLISH //!< The USART transmits the response. -#define USART_LIN_SUBSCRIBE_ACTION AVR32_USART_LINMR_NACT_SUBSCRIBE //!< The USART receives the response. -#define USART_LIN_IGNORE_ACTION AVR32_USART_LINMR_NACT_IGNORE //!< The USART does not transmit and does not receive the reponse. -//! @} - -/*! \name LIN Checksum Types - */ -//! @{ -#define USART_LIN_ENHANCED_CHECKSUM 0 //!< LIN 2.0 "enhanced" checksum. -#define USART_LIN_CLASSIC_CHECKSUM 1 //!< LIN 1.3 "classic" checksum. -//! @} - -#endif // USART rev. >= 4.0.0 - - -//! Input parameters when initializing RS232 and similar modes. -typedef struct -{ - //! Set baud rate of the USART (unused in slave modes). - unsigned long baudrate; - - //! Number of bits to transmit as a character (5 to 9). - unsigned char charlength; - - //! How to calculate the parity bit: \ref USART_EVEN_PARITY, \ref USART_ODD_PARITY, - //! \ref USART_SPACE_PARITY, \ref USART_MARK_PARITY, \ref USART_NO_PARITY or - //! \ref USART_MULTIDROP_PARITY. - unsigned char paritytype; - - //! Number of stop bits between two characters: \ref USART_1_STOPBIT, - //! \ref USART_1_5_STOPBITS, \ref USART_2_STOPBITS or any number from 3 to 257 - //! which will result in a time guard period of that length between characters. - //! \note \ref USART_1_5_STOPBITS is supported in asynchronous modes only. - unsigned short stopbits; - - //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO, - //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK. - unsigned char channelmode; -} usart_options_t; - -//! Input parameters when initializing ISO7816 mode. -typedef struct -{ - //! Set the frequency of the ISO7816 clock. - unsigned long iso7816_hz; - - //! The number of ISO7816 clock ticks in every bit period (1 to 2047, 0 = disable clock). - //! Bit rate = \ref iso7816_hz / \ref fidi_ratio. - unsigned short fidi_ratio; - - //! How to calculate the parity bit: \ref USART_EVEN_PARITY for normal mode or - //! \ref USART_ODD_PARITY for inverse mode. - unsigned char paritytype; - - //! Inhibit Non Acknowledge:\n - //! - 0: the NACK is generated;\n - //! - 1: the NACK is not generated. - //! - //! \note This bit will be used only in ISO7816 mode, protocol T = 0 receiver. - int inhibit_nack; - - //! Disable successive NACKs. - //! Successive parity errors are counted up to the value in the \ref max_iterations field. - //! These parity errors generate a NACK on the ISO line. As soon as this value is reached, - //! no addititional NACK is sent on the ISO line. The ITERATION flag is asserted. - int dis_suc_nack; - - //! Max number of repetitions (0 to 7). - unsigned char max_iterations; - - //! Bit order in transmitted characters:\n - //! - 0: LSB first;\n - //! - 1: MSB first. - int bit_order; -} usart_iso7816_options_t; - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -//! Input parameters when initializing SPI mode. -typedef struct -{ - //! Set the frequency of the SPI clock (unused in slave mode). - unsigned long baudrate; - - //! Number of bits to transmit as a character (5 to 9). - unsigned char charlength; - - //! Which SPI mode to use. - unsigned char spimode; - - //! Run the channel in testmode: \ref USART_NORMAL_CHMODE, \ref USART_AUTO_ECHO, - //! \ref USART_LOCAL_LOOPBACK or \ref USART_REMOTE_LOOPBACK. - unsigned char channelmode; -} usart_spi_options_t; - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -/*! \name Initialization Functions - */ -//! @{ - -/*! \brief Resets the USART and disables TX and RX. - * - * \param usart Base address of the USART instance. - */ -extern void usart_reset(volatile avr32_usart_t *usart); - -/*! \brief Sets up the USART to use the standard RS232 protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_rs232(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the standard RS232 protocol in TX-only mode. - * - * Compared to \ref usart_init_rs232, this function allows very high baud rates - * (up to \a pba_hz instead of \a pba_hz / \c 8) at the expense of full duplex. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - * - * \note The \c 1.5 stop bit is not supported in this mode. - */ -extern int usart_init_rs232_tx_only(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use hardware handshaking. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - * - * \note \ref usart_init_rs232 does not need to be invoked before this function. - */ -extern int usart_init_hw_handshaking(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the modem protocol, activating dedicated inputs/outputs. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_modem(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use a synchronous RS232-like protocol in master mode. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_sync_master(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use a synchronous RS232-like protocol in slave mode. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_sync_slave(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the RS485 protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_rs485(volatile avr32_usart_t *usart, const usart_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the IrDA protocol. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up RS232 communication (see \ref usart_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * \param irda_filter Counter used to distinguish received ones from zeros. - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_IrDA(volatile avr32_usart_t *usart, const usart_options_t *opt, - long pba_hz, unsigned char irda_filter); - -/*! \brief Sets up the USART to use the ISO7816 T=0 or T=1 smartcard protocols. - * - * The receiver is enabled by default. \ref usart_iso7816_enable_receiver and - * \ref usart_iso7816_enable_transmitter can be called to change the half-duplex - * communication direction. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up ISO7816 communication (see \ref usart_iso7816_options_t). - * \param t ISO7816 mode to use (T=0 or T=1). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_iso7816(volatile avr32_usart_t *usart, const usart_iso7816_options_t *opt, int t, long pba_hz); - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \brief Sets up the USART to use the LIN master mode. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - */ -extern int usart_init_lin_master(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz); - -/*! \brief Sets up the USART to use the LIN slave mode. - * - * \param usart Base address of the USART instance. - * \param baudrate Baud rate. - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - */ -extern int usart_init_lin_slave(volatile avr32_usart_t *usart, unsigned long baudrate, long pba_hz); - -/*! \brief Sets up the USART to use the SPI master mode. - * - * \ref usart_spi_selectChip and \ref usart_spi_unselectChip can be called to - * select or unselect the SPI slave chip. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_spi_master(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz); - -/*! \brief Sets up the USART to use the SPI slave mode. - * - * \param usart Base address of the USART instance. - * \param opt Options needed to set up SPI mode (see \ref usart_spi_options_t). - * \param pba_hz USART module input clock frequency (PBA clock, Hz). - * - * \retval USART_SUCCESS Mode successfully initialized. - * \retval USART_INVALID_INPUT One or more of the arguments is out of valid range. - */ -extern int usart_init_spi_slave(volatile avr32_usart_t *usart, const usart_spi_options_t *opt, long pba_hz); - -#endif // USART rev. >= 4.0.0 - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name Read and Reset Error Status Bits - */ -//! @{ - -/*! \brief Resets the error status. - * - * This function resets the status bits indicating that a parity error, - * framing error or overrun has occurred. The RXBRK bit, indicating - * a start/end of break condition on the RX line, is also reset. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_reset_status(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_CR_RSTSTA_MASK; -} - -/*! \brief Checks if a parity error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a parity error has been detected, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_parity_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_PARE_MASK) != 0; -} - -/*! \brief Checks if a framing error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a framing error has been detected, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_framing_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_FRAME_MASK) != 0; -} - -/*! \brief Checks if an overrun error has occurred since last status reset. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a overrun error has been detected, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_overrun_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_OVRE_MASK) != 0; -} - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \brief Get LIN Error Status - * - * \param usart Base address of the USART instance. - * - * \retval The binary value of the error field. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_lin_get_error(volatile avr32_usart_t *usart) -{ - return (usart->csr & (AVR32_USART_CSR_LINSNRE_MASK | - AVR32_USART_CSR_LINCE_MASK | - AVR32_USART_CSR_LINIPE_MASK | - AVR32_USART_CSR_LINISFE_MASK | - AVR32_USART_CSR_LINBE_MASK)) >> AVR32_USART_CSR_LINBE_OFFSET; -} - -#endif // USART rev. >= 4.0.0 - -//! @} - - -//------------------------------------------------------------------------------ -/*! \name ISO7816 Control Functions - */ -//! @{ - -/*! \brief Enables the ISO7816 receiver. - * - * The ISO7816 transmitter is disabled. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_iso7816_enable_receiver(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_CR_TXDIS_MASK | AVR32_USART_CR_RXEN_MASK; -} - -/*! \brief Enables the ISO7816 transmitter. - * - * The ISO7816 receiver is disabled. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_iso7816_enable_transmitter(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_CR_RXDIS_MASK | AVR32_USART_CR_TXEN_MASK; -} - -//! @} - - -//------------------------------------------------------------------------------ -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \name LIN Control Functions - */ -//! @{ - -/*! \brief Sets the node action. - * - * \param usart Base address of the USART instance. - * \param action The node action: \ref USART_LIN_PUBLISH_ACTION, - * \ref USART_LIN_SUBSCRIBE_ACTION or - * \ref USART_LIN_IGNORE_ACTION. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_node_action(volatile avr32_usart_t *usart, unsigned char action) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_NACT_MASK) | - action << AVR32_USART_LINMR_NACT_OFFSET; -} - -/*! \brief Enables or disables the Identifier parity. - * - * \param usart Base address of the USART instance. - * \param parity Whether to enable the Identifier parity: \c TRUE or \c FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_enable_parity(volatile avr32_usart_t *usart, unsigned char parity) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_PARDIS_MASK) | - !parity << AVR32_USART_LINMR_PARDIS_OFFSET; -} - -/*! \brief Enables or disables the checksum. - * - * \param usart Base address of the USART instance. - * \param parity Whether to enable the checksum: \c TRUE or \c FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_enable_checksum(volatile avr32_usart_t *usart, unsigned char checksum) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_CHKDIS_MASK) | - !checksum << AVR32_USART_LINMR_CHKDIS_OFFSET; -} - -/*! \brief Sets the checksum type. - * - * \param usart Base address of the USART instance. - * \param chktyp The checksum type: \ref USART_LIN_ENHANCED_CHEKSUM or - * \ref USART_LIN_CLASSIC_CHECKSUM. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_checksum(volatile avr32_usart_t *usart, unsigned char chktyp) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_CHKTYP_MASK) | - chktyp << AVR32_USART_LINMR_CHKTYP_OFFSET; -} - -/*! \brief Gets the response data length. - * - * \param usart Base address of the USART instance. - * - * \return The response data length. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned char usart_lin_get_data_length(volatile avr32_usart_t *usart) -{ - if (usart->linmr & AVR32_USART_LINMR_DLM_MASK) - { - unsigned char data_length = 1 << ((usart->linir >> (AVR32_USART_LINIR_IDCHR_OFFSET + 4)) & 0x03); - if (data_length == 1) - data_length = 2; - return data_length; - } - else - return ((usart->linmr & AVR32_USART_LINMR_DLC_MASK) >> AVR32_USART_LINMR_DLC_OFFSET) + 1; -} - -/*! \brief Sets the response data length for LIN 1.x. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_data_length_lin1x(volatile avr32_usart_t *usart) -{ - usart->linmr |= AVR32_USART_LINMR_DLM_MASK; -} - -/*! \brief Sets the response data length for LIN 2.x. - * - * \param usart Base address of the USART instance. - * \param data_length The response data length. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_data_length_lin2x(volatile avr32_usart_t *usart, unsigned char data_length) -{ - usart->linmr = (usart->linmr & ~(AVR32_USART_LINMR_DLC_MASK | - AVR32_USART_LINMR_DLM_MASK)) | - (data_length - 1) << AVR32_USART_LINMR_DLC_OFFSET; -} - -/*! \brief Enables or disables the frame slot mode. - * - * \param usart Base address of the USART instance. - * \param frameslot Whether to enable the frame slot mode: \c TRUE or - * \c FALSE. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_enable_frameslot(volatile avr32_usart_t *usart, unsigned char frameslot) -{ - usart->linmr = (usart->linmr & ~AVR32_USART_LINMR_FSDIS_MASK) | - !frameslot << AVR32_USART_LINMR_FSDIS_OFFSET; -} - -/*! \brief Gets the Identifier character. - * - * \param usart Base address of the USART instance. - * - * \return The Identifier character. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ unsigned char usart_lin_get_id_char(volatile avr32_usart_t *usart) -{ - return (usart->linir & AVR32_USART_LINIR_IDCHR_MASK) >> AVR32_USART_LINIR_IDCHR_OFFSET; -} - -/*! \brief Sets the Identifier character. - * - * \param usart Base address of the USART instance. - * \param id_char The Identifier character. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_set_id_char(volatile avr32_usart_t *usart, unsigned char id_char) -{ - usart->linir = (usart->linir & ~AVR32_USART_LINIR_IDCHR_MASK) | - id_char << AVR32_USART_LINIR_IDCHR_OFFSET; -} - -//! @} - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \name SPI Control Functions - */ -//! @{ - -/*! \brief Selects SPI slave chip. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Success. - */ -extern int usart_spi_selectChip(volatile avr32_usart_t *usart); - -/*! \brief Unselects SPI slave chip. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Success. - * \retval USART_FAILURE Time-out. - */ -extern int usart_spi_unselectChip(volatile avr32_usart_t *usart); - -//! @} - -#endif // USART rev. >= 4.0.0 - - -//------------------------------------------------------------------------------ -/*! \name Transmit/Receive Functions - */ -//! @{ - -/*! \brief Addresses a receiver. - * - * While in RS485 mode, receivers only accept data addressed to them. - * A packet/char with the address tag set has to precede any data. - * This function is used to address a receiver. This receiver should read - * all the following data, until an address packet addresses another receiver. - * - * \param usart Base address of the USART instance. - * \param address Address of the target device. - * - * \retval USART_SUCCESS Address successfully sent (if current mode is RS485). - * \retval USART_MODE_FAULT Wrong operating mode. - */ -extern int usart_send_address(volatile avr32_usart_t *usart, int address); - -/*! \brief Tests if the USART is ready to transmit a character. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART Transmit Holding Register is free, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_tx_ready(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_TXRDY_MASK) != 0; -} - -/*! \brief Writes the given character to the TX buffer if the transmitter is ready. - * - * \param usart Base address of the USART instance. - * \param c The character (up to 9 bits) to transmit. - * - * \retval USART_SUCCESS The transmitter was ready. - * \retval USART_TX_BUSY The transmitter was busy. - */ -extern int usart_write_char(volatile avr32_usart_t *usart, int c); - -/*! \brief An active wait writing a character to the USART. - * - * \param usart Base address of the USART instance. - * \param c The character (up to 9 bits) to transmit. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_bw_write_char(volatile avr32_usart_t *usart, int c) -{ - while (usart_write_char(usart, c) != USART_SUCCESS); -} - -/*! \brief Sends a character with the USART. - * - * \param usart Base address of the USART instance. - * \param c Character to write. - * - * \retval USART_SUCCESS The character was written. - * \retval USART_FAILURE The function timed out before the USART transmitter became ready to send. - */ -extern int usart_putchar(volatile avr32_usart_t *usart, int c); - -/*! \brief Tests if all requested USART transmissions are over. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART Transmit Shift Register and the USART Transmit - * Holding Register are free, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_tx_empty(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_TXEMPTY_MASK) != 0; -} - -/*! \brief Tests if the USART contains a received character. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if the USART Receive Holding Register is full, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_test_hit(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_RXRDY_MASK) != 0; -} - -/*! \brief Checks the RX buffer for a received character, and stores it at the - * given memory location. - * - * \param usart Base address of the USART instance. - * \param c Pointer to the where the read character should be stored - * (must be at least short in order to accept 9-bit characters). - * - * \retval USART_SUCCESS The character was read successfully. - * \retval USART_RX_EMPTY The RX buffer was empty. - * \retval USART_RX_ERROR An error was deteceted. - */ -extern int usart_read_char(volatile avr32_usart_t *usart, int *c); - -/*! \brief Waits until a character is received, and returns it. - * - * \param usart Base address of the USART instance. - * - * \return The received character, or \ref USART_FAILURE upon error. - */ -extern int usart_getchar(volatile avr32_usart_t *usart); - -/*! \brief Writes one character string to the USART. - * - * \param usart Base address of the USART instance. - * \param string String to be written. - */ -extern void usart_write_line(volatile avr32_usart_t *usart, const char *string); - -/*! \brief Gets and echoes characters until end of line. - * - * \param usart Base address of the USART instance. - * - * \retval USART_SUCCESS Success. - * \retval USART_FAILURE Low-level error detected or ETX character received. - */ -extern int usart_get_echo_line(volatile avr32_usart_t *usart); - -#if defined(AVR32_USART_400_H_INCLUDED) || \ - defined(AVR32_USART_410_H_INCLUDED) || \ - defined(AVR32_USART_420_H_INCLUDED) || \ - defined(AVR32_USART_440_H_INCLUDED) || \ - defined(AVR32_USART_602_H_INCLUDED) - -/*! \brief Abort LIN transmission. - * - * \param usart Base address of the USART instance. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ void usart_lin_abort(volatile avr32_usart_t *usart) -{ - usart->cr = AVR32_USART_LINABT_MASK; -} - -/*! \brief Tests if a LIN transfer has been completed. - * - * \param usart Base address of the USART instance. - * - * \return \c 1 if a LIN transfer has been completed, otherwise \c 0. - */ -#if (defined __GNUC__) -__attribute__((__always_inline__)) -#endif -extern __inline__ int usart_lin_transfer_completed(volatile avr32_usart_t *usart) -{ - return (usart->csr & AVR32_USART_CSR_LINTC_MASK) != 0; -} - -#endif // USART rev. >= 4.0.0 - -//! @} - - -#endif // _USART_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c deleted file mode 100644 index 09790c259c9..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.c +++ /dev/null @@ -1,571 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Abstraction layer for memory interfaces. - * - * This module contains the interfaces: - * - MEM <-> USB; - * - MEM <-> RAM; - * - MEM <-> MEM. - * - * This module may be configured and expanded to support the following features: - * - write-protected globals; - * - password-protected data; - * - specific features; - * - etc. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -//_____ I N C L U D E S ____________________________________________________ - -#include "compiler.h" -#include "preprocessor.h" -#ifdef FREERTOS_USED -#include "FreeRTOS.h" -#include "semphr.h" -#endif -#include "ctrl_access.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -#ifdef FREERTOS_USED - -/*! \name LUN Access Protection Macros - */ -//! @{ - -/*! \brief Locks accesses to LUNs. - * - * \return \c TRUE if the access was successfully locked, else \c FALSE. - */ -#define Ctrl_access_lock() ctrl_access_lock() - -/*! \brief Unlocks accesses to LUNs. - */ -#define Ctrl_access_unlock() xSemaphoreGive(ctrl_access_semphr) - -//! @} - -//! Handle to the semaphore protecting accesses to LUNs. -static xSemaphoreHandle ctrl_access_semphr = NULL; - -#else - -/*! \name LUN Access Protection Macros - */ -//! @{ - -/*! \brief Locks accesses to LUNs. - * - * \return \c TRUE if the access was successfully locked, else \c FALSE. - */ -#define Ctrl_access_lock() TRUE - -/*! \brief Unlocks accesses to LUNs. - */ -#define Ctrl_access_unlock() - -//! @} - -#endif // FREERTOS_USED - - -#if MAX_LUN - -/*! \brief Initializes an entry of the LUN descriptor table. - * - * \param lun Logical Unit Number. - * - * \return LUN descriptor table entry initializer. - */ -#if ACCESS_USB == ENABLED && ACCESS_MEM_TO_RAM == ENABLED -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(Lun_, lun, _usb_read_10),\ - TPASTE3(Lun_, lun, _usb_write_10),\ - TPASTE3(Lun_, lun, _mem_2_ram),\ - TPASTE3(Lun_, lun, _ram_2_mem),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#elif ACCESS_USB == ENABLED -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(Lun_, lun, _usb_read_10),\ - TPASTE3(Lun_, lun, _usb_write_10),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#elif ACCESS_MEM_TO_RAM == ENABLED -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(Lun_, lun, _mem_2_ram),\ - TPASTE3(Lun_, lun, _ram_2_mem),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#else -#define Lun_desc_entry(lun) \ - {\ - TPASTE3(Lun_, lun, _test_unit_ready),\ - TPASTE3(Lun_, lun, _read_capacity),\ - TPASTE3(Lun_, lun, _wr_protect),\ - TPASTE3(Lun_, lun, _removal),\ - TPASTE3(LUN_, lun, _NAME)\ - } -#endif - -//! LUN descriptor table. -static const struct -{ - Ctrl_status (*test_unit_ready)(void); - Ctrl_status (*read_capacity)(U32 *); - Bool (*wr_protect)(void); - Bool (*removal)(void); -#if ACCESS_USB == ENABLED - Ctrl_status (*usb_read_10)(U32, U16); - Ctrl_status (*usb_write_10)(U32, U16); -#endif -#if ACCESS_MEM_TO_RAM == ENABLED - Ctrl_status (*mem_2_ram)(U32, void *); - Ctrl_status (*ram_2_mem)(U32, const void *); -#endif - const char *name; -} lun_desc[MAX_LUN] = -{ -#if LUN_0 == ENABLE - Lun_desc_entry(0), -#endif -#if LUN_1 == ENABLE - Lun_desc_entry(1), -#endif -#if LUN_2 == ENABLE - Lun_desc_entry(2), -#endif -#if LUN_3 == ENABLE - Lun_desc_entry(3), -#endif -#if LUN_4 == ENABLE - Lun_desc_entry(4), -#endif -#if LUN_5 == ENABLE - Lun_desc_entry(5), -#endif -#if LUN_6 == ENABLE - Lun_desc_entry(6), -#endif -#if LUN_7 == ENABLE - Lun_desc_entry(7) -#endif -}; - -#endif - - -#if GLOBAL_WR_PROTECT == ENABLED -Bool g_wr_protect; -#endif - - -/*! \name Control Interface - */ -//! @{ - - -#ifdef FREERTOS_USED - -Bool ctrl_access_init(void) -{ - // If the handle to the protecting semaphore is not valid, - if (!ctrl_access_semphr) - { - // try to create the semaphore. - vSemaphoreCreateBinary(ctrl_access_semphr); - - // If the semaphore could not be created, there is no backup solution. - if (!ctrl_access_semphr) return FALSE; - } - - return TRUE; -} - - -/*! \brief Locks accesses to LUNs. - * - * \return \c TRUE if the access was successfully locked, else \c FALSE. - */ -static Bool ctrl_access_lock(void) -{ - // If the semaphore could not be created, there is no backup solution. - if (!ctrl_access_semphr) return FALSE; - - // Wait for the semaphore. - while (!xSemaphoreTake(ctrl_access_semphr, portMAX_DELAY)); - - return TRUE; -} - -#endif // FREERTOS_USED - - -U8 get_nb_lun(void) -{ -#if MEM_USB == ENABLE - U8 nb_lun; - - if (!Ctrl_access_lock()) return MAX_LUN; - - nb_lun = MAX_LUN + host_get_lun(); - - Ctrl_access_unlock(); - - return nb_lun; -#else - return MAX_LUN; -#endif -} - - -U8 get_cur_lun(void) -{ - return LUN_ID_0; -} - - -Ctrl_status mem_test_unit_ready(U8 lun) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].test_unit_ready() : -#endif -#if LUN_USB == ENABLE - Lun_usb_test_unit_ready(lun - LUN_ID_USB); -#else - CTRL_FAIL; -#endif - - Ctrl_access_unlock(); - - return status; -} - - -Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].read_capacity(u32_nb_sector) : -#endif -#if LUN_USB == ENABLE - Lun_usb_read_capacity(lun - LUN_ID_USB, u32_nb_sector); -#else - CTRL_FAIL; -#endif - - Ctrl_access_unlock(); - - return status; -} - - -U8 mem_sector_size(U8 lun) -{ - U8 sector_size; - - if (!Ctrl_access_lock()) return 0; - - sector_size = -#if MAX_LUN - (lun < MAX_LUN) ? 1 : -#endif -#if LUN_USB == ENABLE - Lun_usb_read_sector_size(lun - LUN_ID_USB); -#else - 0; -#endif - - Ctrl_access_unlock(); - - return sector_size; -} - - -Bool mem_wr_protect(U8 lun) -{ - Bool wr_protect; - - if (!Ctrl_access_lock()) return TRUE; - - wr_protect = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].wr_protect() : -#endif -#if LUN_USB == ENABLE - Lun_usb_wr_protect(lun - LUN_ID_USB); -#else - TRUE; -#endif - - Ctrl_access_unlock(); - - return wr_protect; -} - - -Bool mem_removal(U8 lun) -{ - Bool removal; - - if (!Ctrl_access_lock()) return TRUE; - - removal = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].removal() : -#endif -#if LUN_USB == ENABLE - Lun_usb_removal(); -#else - TRUE; -#endif - - Ctrl_access_unlock(); - - return removal; -} - - -const char *mem_name(U8 lun) -{ - return -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].name : -#endif -#if LUN_USB == ENABLE - LUN_USB_NAME; -#else - NULL; -#endif -} - - -//! @} - - -#if ACCESS_USB == ENABLED - -/*! \name MEM <-> USB Interface - */ -//! @{ - - -Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_read_action(nb_sector); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].usb_read_10(addr, nb_sector) : -#endif - CTRL_FAIL; - memory_stop_read_action(); - - Ctrl_access_unlock(); - - return status; -} - - -Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_write_action(nb_sector); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].usb_write_10(addr, nb_sector) : -#endif - CTRL_FAIL; - memory_stop_write_action(); - - Ctrl_access_unlock(); - - return status; -} - - -//! @} - -#endif // ACCESS_USB == ENABLED - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - - -Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_read_action(1); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].mem_2_ram(addr, ram) : -#endif -#if LUN_USB == ENABLE - Lun_usb_mem_2_ram(addr, ram); -#else - CTRL_FAIL; -#endif - memory_stop_read_action(); - - Ctrl_access_unlock(); - - return status; -} - - -Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram) -{ - Ctrl_status status; - - if (!Ctrl_access_lock()) return CTRL_FAIL; - - memory_start_write_action(1); - status = -#if MAX_LUN - (lun < MAX_LUN) ? lun_desc[lun].ram_2_mem(addr, ram) : -#endif -#if LUN_USB == ENABLE - Lun_usb_ram_2_mem(addr, ram); -#else - CTRL_FAIL; -#endif - memory_stop_write_action(); - - Ctrl_access_unlock(); - - return status; -} - - -//! @} - -#endif // ACCESS_MEM_TO_RAM == ENABLED - - -#if ACCESS_STREAM == ENABLED - -/*! \name Streaming MEM <-> MEM Interface - */ -//! @{ - - - #if ACCESS_MEM_TO_MEM == ENABLED - -#include "fat.h" - -Ctrl_status stream_mem_to_mem(U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_addr, U16 nb_sector) -{ -#if (defined __GNUC__) && (defined __AVR32__) - __attribute__((__aligned__(4))) -#elif (defined __ICCAVR32__) - #pragma data_alignment = 4 -#endif - static U8 sector_buf[FS_512B]; - Ctrl_status status = CTRL_GOOD; - - while (nb_sector--) - { - if ((status = memory_2_ram(src_lun, src_addr++, sector_buf)) != CTRL_GOOD) break; - if ((status = ram_2_memory(dest_lun, dest_addr++, sector_buf)) != CTRL_GOOD) break; - } - - return status; -} - - #endif // ACCESS_MEM_TO_MEM == ENABLED - - -Ctrl_status stream_state(U8 id) -{ - return CTRL_GOOD; -} - - -U16 stream_stop(U8 id) -{ - return 0; -} - - -//! @} - -#endif // ACCESS_STREAM == ENABLED diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h deleted file mode 100644 index 358bf65897c..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS/ctrl_access.h +++ /dev/null @@ -1,369 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Abstraction layer for memory interfaces. - * - * This module contains the interfaces: - * - MEM <-> USB; - * - MEM <-> RAM; - * - MEM <-> MEM. - * - * This module may be configured and expanded to support the following features: - * - write-protected globals; - * - password-protected data; - * - specific features; - * - etc. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _CTRL_ACCESS_H_ -#define _CTRL_ACCESS_H_ - -#include "compiler.h" -#include "conf_access.h" - - -//! Status returned by CTRL_ACCESS interfaces. -typedef enum -{ - CTRL_GOOD = PASS, //!< Success, memory ready. - CTRL_FAIL = FAIL, //!< An error occurred. - CTRL_NO_PRESENT = FAIL + 1, //!< Memory unplugged. - CTRL_BUSY = FAIL + 2 //!< Memory not initialized or changed. -} Ctrl_status; - - -// FYI: Each Logical Unit Number (LUN) corresponds to a memory. - -// Check LUN defines. -#ifndef LUN_0 - #error LUN_0 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_1 - #error LUN_1 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_2 - #error LUN_2 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_3 - #error LUN_3 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_4 - #error LUN_4 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_5 - #error LUN_5 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_6 - #error LUN_6 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_7 - #error LUN_7 must be defined as ENABLE or DISABLE in conf_access.h -#endif -#ifndef LUN_USB - #error LUN_USB must be defined as ENABLE or DISABLE in conf_access.h -#endif - -/*! \name LUN IDs - */ -//! @{ -#define LUN_ID_0 (0) //!< First static LUN. -#define LUN_ID_1 (LUN_ID_0 + LUN_0) -#define LUN_ID_2 (LUN_ID_1 + LUN_1) -#define LUN_ID_3 (LUN_ID_2 + LUN_2) -#define LUN_ID_4 (LUN_ID_3 + LUN_3) -#define LUN_ID_5 (LUN_ID_4 + LUN_4) -#define LUN_ID_6 (LUN_ID_5 + LUN_5) -#define LUN_ID_7 (LUN_ID_6 + LUN_6) -#define MAX_LUN (LUN_ID_7 + LUN_7) //!< Number of static LUNs. -#define LUN_ID_USB (MAX_LUN) //!< First dynamic LUN (USB host mass storage). -//! @} - - -// Include LUN header files. -#if LUN_0 == ENABLE - #include LUN_0_INCLUDE -#endif -#if LUN_1 == ENABLE - #include LUN_1_INCLUDE -#endif -#if LUN_2 == ENABLE - #include LUN_2_INCLUDE -#endif -#if LUN_3 == ENABLE - #include LUN_3_INCLUDE -#endif -#if LUN_4 == ENABLE - #include LUN_4_INCLUDE -#endif -#if LUN_5 == ENABLE - #include LUN_5_INCLUDE -#endif -#if LUN_6 == ENABLE - #include LUN_6_INCLUDE -#endif -#if LUN_7 == ENABLE - #include LUN_7_INCLUDE -#endif -#if LUN_USB == ENABLE - #include LUN_USB_INCLUDE -#endif - - -// Check the configuration of write protection in conf_access.h. -#ifndef GLOBAL_WR_PROTECT - #error GLOBAL_WR_PROTECT must be defined as ENABLED or DISABLED in conf_access.h -#endif - - -#if GLOBAL_WR_PROTECT == ENABLED - -//! Write protect. -extern Bool g_wr_protect; - -#endif - - -/*! \name Control Interface - */ -//! @{ - -#ifdef FREERTOS_USED - -/*! \brief Initializes the LUN access locker. - * - * \return \c TRUE if the locker was successfully initialized, else \c FALSE. - */ -extern Bool ctrl_access_init(void); - -#endif // FREERTOS_USED - -/*! \brief Returns the number of LUNs. - * - * \return Number of LUNs in the system. - */ -extern U8 get_nb_lun(void); - -/*! \brief Returns the current LUN. - * - * \return Current LUN. - * - * \todo Implement. - */ -extern U8 get_cur_lun(void); - -/*! \brief Tests the memory state and initializes the memory if required. - * - * The TEST UNIT READY SCSI primary command allows an application client to poll - * a LUN until it is ready without having to allocate memory for returned data. - * - * This command may be used to check the media status of LUNs with removable - * media. - * - * \param lun Logical Unit Number. - * - * \return Status. - */ -extern Ctrl_status mem_test_unit_ready(U8 lun); - -/*! \brief Returns the address of the last valid sector (512 bytes) in the - * memory. - * - * \param lun Logical Unit Number. - * \param u32_nb_sector Pointer to the address of the last valid sector. - * - * \return Status. - */ -extern Ctrl_status mem_read_capacity(U8 lun, U32 *u32_nb_sector); - -/*! \brief Returns the size of the physical sector. - * - * \param lun Logical Unit Number. - * - * \return Sector size (unit: 512 bytes). - */ -extern U8 mem_sector_size(U8 lun); - -/*! \brief Returns the write-protection state of the memory. - * - * \param lun Logical Unit Number. - * - * \return \c TRUE if the memory is write-protected, else \c FALSE. - * - * \note Only used by removable memories with hardware-specific write - * protection. - */ -extern Bool mem_wr_protect(U8 lun); - -/*! \brief Tells whether the memory is removable. - * - * \param lun Logical Unit Number. - * - * \return \c TRUE if the memory is removable, else \c FALSE. - */ -extern Bool mem_removal(U8 lun); - -/*! \brief Returns a pointer to the LUN name. - * - * \param lun Logical Unit Number. - * - * \return Pointer to the LUN name string. - */ -extern const char *mem_name(U8 lun); - -//! @} - - -#if ACCESS_USB == ENABLED - -/*! \name MEM <-> USB Interface - */ -//! @{ - -/*! \brief Tranfers data from the memory to USB. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to read. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status memory_2_usb(U8 lun, U32 addr, U16 nb_sector); - -/*! \brief Tranfers data from USB to the memory. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to write. - * \param nb_sector Number of sectors to transfer. - * - * \return Status. - */ -extern Ctrl_status usb_2_memory(U8 lun, U32 addr, U16 nb_sector); - -//! @} - -#endif // ACCESS_USB == ENABLED - - -#if ACCESS_MEM_TO_RAM == ENABLED - -/*! \name MEM <-> RAM Interface - */ -//! @{ - -/*! \brief Copies 1 data sector from the memory to RAM. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to read. - * \param ram Pointer to RAM buffer to write. - * - * \return Status. - */ -extern Ctrl_status memory_2_ram(U8 lun, U32 addr, void *ram); - -/*! \brief Copies 1 data sector from RAM to the memory. - * - * \param lun Logical Unit Number. - * \param addr Address of first memory sector to write. - * \param ram Pointer to RAM buffer to read. - * - * \return Status. - */ -extern Ctrl_status ram_2_memory(U8 lun, U32 addr, const void *ram); - -//! @} - -#endif // ACCESS_MEM_TO_RAM == ENABLED - - -#if ACCESS_STREAM == ENABLED - -/*! \name Streaming MEM <-> MEM Interface - */ -//! @{ - -//! Erroneous streaming data transfer ID. -#define ID_STREAM_ERR 0xFF - - #if ACCESS_MEM_TO_MEM == ENABLED - -/*! \brief Copies data from one memory to another. - * - * \param src_lun Source Logical Unit Number. - * \param src_addr Source address of first memory sector to read. - * \param dest_lun Destination Logical Unit Number. - * \param dest_addr Destination address of first memory sector to write. - * \param nb_sector Number of sectors to copy. - * - * \return Status. - */ -extern Ctrl_status stream_mem_to_mem(U8 src_lun, U32 src_addr, U8 dest_lun, U32 dest_addr, U16 nb_sector); - - #endif // ACCESS_MEM_TO_MEM == ENABLED - -/*! \brief Returns the state of a streaming data transfer. - * - * \param id Transfer ID. - * - * \return Status. - * - * \todo Implement. - */ -extern Ctrl_status stream_state(U8 id); - -/*! \brief Stops a streaming data transfer. - * - * \param id Transfer ID. - * - * \return Number of remaining sectors. - * - * \todo Implement. - */ -extern U16 stream_stop(U8 id); - -//! @} - -#endif // ACCESS_STREAM == ENABLED - - -#endif // _CTRL_ACCESS_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c deleted file mode 100644 index c7c0a03e597..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.c +++ /dev/null @@ -1,119 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Macros and functions dedicated to debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "compiler.h" -#include "debug.h" - - -#if (defined __GNUC__) -# include "malloc.h" - -U32 get_heap_curr_used_size( void ) -{ - struct mallinfo my_info=mallinfo(); - return my_info.uordblks; -} - -U32 get_heap_total_used_size( void ) -{ - struct mallinfo my_info=mallinfo(); - return my_info.arena; -} -#endif - -U32 get_heap_free_size( void ) -{ - U32 high_mark= AVR32_SRAM_SIZE; - U32 low_mark = 0; - U32 size ; - void* p_mem; - - size = (high_mark + low_mark)/2; - - do - { - p_mem = malloc(size); - if( p_mem != NULL) - { // Can allocate memory - free(p_mem); - low_mark = size; - } - else - { // Can not allocate memory - high_mark = size; - } - - size = (high_mark + low_mark)/2; - } - while( (high_mark-low_mark) >1 ); - - return size; -} - -static void* round_trace_pbuf; -static U32 round_trace_size; - -void uc3_round_trace_init(void* buf, U32 size) -{ - round_trace_pbuf = buf; - (*(U32*)round_trace_pbuf)=(U32)buf+4; - round_trace_size = size; -} - -void uc3_round_trace(U32 val) -{ - //Disable_global_interrupt(); - - U32* p_wr = (U32*)(*(U32*)round_trace_pbuf); - *p_wr = val; - p_wr++; - if( ((U32)p_wr % round_trace_size) ==0 ) - p_wr= (U32*)round_trace_pbuf+1; - *p_wr = 0xdeadbeef; - *(U32*)round_trace_pbuf = (U32)p_wr; - - //Enable_global_interrupt(); -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h deleted file mode 100644 index a832d7c9c0a..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/debug.h +++ /dev/null @@ -1,116 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Macros and functions dedicated to debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _DEBUG_H_ -#define _DEBUG_H_ - -#include "stringz.h" - -/*! \brief These macros are used to add traces memory. - * - * First, initialise the trace with Uc3_trace_init(pointer), giving the start address - * of the memory location where will be stored the trace. - * Use Uc3_trace(something) to store "something" into the memory. The end of the trace - * is signaled by the "0xdeadbeef" pattern. - */ -#define Uc3_trace_init(debug_addr) \ - *(U32*)(debug_addr)=debug_addr+4 - -#define Uc3_trace(debug_addr, x) \ - *(U32*)(*(U32*)(debug_addr) ) = (U32)(x) ;\ - *(U32*)(*(U32*)(debug_addr)+4) = 0xdeadbeef ;\ - *(U32*)(debug_addr ) = *(U32*)(debug_addr)+4 - -/*! \brief This macro is used to insert labels into assembly output. - * - */ -#define Insert_label(name) \ - __asm__ __volatile__ (STRINGZ(name)":"); - -#if (defined __GNUC__) -/*! \brief Returns the number of total of used bytes allocated from the HEAP. - * - * \retval total number of used bytes. - */ -U32 get_heap_total_used_size( void ); - -/*! \brief Returns the number of bytes currently used from the HEAP. - * - * \retval total number of used bytes. - */ -U32 get_heap_curr_used_size( void ); -#endif - -/*! \brief Returns the number of free bytes in the HEAP. - * - * This funtion tries to allocate the maximum number of bytes by dichotomical method. - * - * \retval number of free bytes. - */ -extern U32 get_heap_free_size( void ); - -/*! \name Traces function using a round buffer - */ -//! @{ - -/*! \brief Initialize the trace using a round buffer. - * - * \param buf Base address of the buffer used for the trace. - * \param size Size of the round buffer. Must be a power of 2. - */ -void uc3_round_trace_init(void* buf, U32 size); - -/*! \brief Trace a data in the round buffer. - * - * The end of the trace is signaled by the "0xdeadbeef" pattern. - * \param val Data to trace; - */ -void uc3_round_trace(U32 val); - -//! @} - - -#endif // _DEBUG_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c deleted file mode 100644 index 99e9274662f..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.c +++ /dev/null @@ -1,215 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Strings and integers print module for debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include "compiler.h" -#include "gpio.h" -#include "usart.h" -#include "print_funcs.h" - - -//! ASCII representation of hexadecimal digits. -static const char HEX_DIGITS[16] = "0123456789ABCDEF"; - - -void init_dbg_rs232(long pba_hz) -{ - init_dbg_rs232_ex(DBG_USART_BAUDRATE, pba_hz); -} - - -void init_dbg_rs232_ex(unsigned long baudrate, long pba_hz) -{ - static const gpio_map_t DBG_USART_GPIO_MAP = - { - {DBG_USART_RX_PIN, DBG_USART_RX_FUNCTION}, - {DBG_USART_TX_PIN, DBG_USART_TX_FUNCTION} - }; - - // Options for debug USART. - usart_options_t dbg_usart_options = - { - .baudrate = baudrate, - .charlength = 8, - .paritytype = USART_NO_PARITY, - .stopbits = USART_1_STOPBIT, - .channelmode = USART_NORMAL_CHMODE - }; - - // Setup GPIO for debug USART. - gpio_enable_module(DBG_USART_GPIO_MAP, - sizeof(DBG_USART_GPIO_MAP) / sizeof(DBG_USART_GPIO_MAP[0])); - - // Initialize it in RS232 mode. - usart_init_rs232(DBG_USART, &dbg_usart_options, pba_hz); -} - - -void print_dbg(const char *str) -{ - // Redirection to the debug USART. - print(DBG_USART, str); -} - - -void print_dbg_char(int c) -{ - // Redirection to the debug USART. - print_char(DBG_USART, c); -} - - -void print_dbg_ulong(unsigned long n) -{ - // Redirection to the debug USART. - print_ulong(DBG_USART, n); -} - - -void print_dbg_char_hex(unsigned char n) -{ - // Redirection to the debug USART. - print_char_hex(DBG_USART, n); -} - - -void print_dbg_short_hex(unsigned short n) -{ - // Redirection to the debug USART. - print_short_hex(DBG_USART, n); -} - - -void print_dbg_hex(unsigned long n) -{ - // Redirection to the debug USART. - print_hex(DBG_USART, n); -} - - -void print(volatile avr32_usart_t *usart, const char *str) -{ - // Invoke the USART driver to transmit the input string with the given USART. - usart_write_line(usart, str); -} - - -void print_char(volatile avr32_usart_t *usart, int c) -{ - // Invoke the USART driver to transmit the input character with the given USART. - usart_putchar(usart, c); -} - - -void print_ulong(volatile avr32_usart_t *usart, unsigned long n) -{ - char tmp[11]; - int i = sizeof(tmp) - 1; - - // Convert the given number to an ASCII decimal representation. - tmp[i] = '\0'; - do - { - tmp[--i] = '0' + n % 10; - n /= 10; - } while (n); - - // Transmit the resulting string with the given USART. - print(usart, tmp + i); -} - - -void print_char_hex(volatile avr32_usart_t *usart, unsigned char n) -{ - char tmp[3]; - int i; - - // Convert the given number to an ASCII hexadecimal representation. - tmp[2] = '\0'; - for (i = 1; i >= 0; i--) - { - tmp[i] = HEX_DIGITS[n & 0xF]; - n >>= 4; - } - - // Transmit the resulting string with the given USART. - print(usart, tmp); -} - - -void print_short_hex(volatile avr32_usart_t *usart, unsigned short n) -{ - char tmp[5]; - int i; - - // Convert the given number to an ASCII hexadecimal representation. - tmp[4] = '\0'; - for (i = 3; i >= 0; i--) - { - tmp[i] = HEX_DIGITS[n & 0xF]; - n >>= 4; - } - - // Transmit the resulting string with the given USART. - print(usart, tmp); -} - - -void print_hex(volatile avr32_usart_t *usart, unsigned long n) -{ - char tmp[9]; - int i; - - // Convert the given number to an ASCII hexadecimal representation. - tmp[8] = '\0'; - for (i = 7; i >= 0; i--) - { - tmp[i] = HEX_DIGITS[n & 0xF]; - n >>= 4; - } - - // Transmit the resulting string with the given USART. - print(usart, tmp); -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h deleted file mode 100644 index 38f931dc245..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/DEBUG/print_funcs.h +++ /dev/null @@ -1,294 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Strings and integers print module for debug purposes. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USART module can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _PRINT_FUNCS_H_ -#define _PRINT_FUNCS_H_ - -#include -#include "board.h" - - -/*! \name USART Settings for the Debug Module - */ -//! @{ -#if BOARD == EVK1100 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == EVK1101 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == UC3C_EK -# define DBG_USART (&AVR32_USART2) -# define DBG_USART_RX_PIN AVR32_USART2_RXD_0_1_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART2_RXD_0_1_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART2_TXD_0_1_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART2_TXD_0_1_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == EVK1104 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == EVK1105 -# define DBG_USART (&AVR32_USART0) -# define DBG_USART_RX_PIN AVR32_USART0_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART0_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART0_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART0_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -#elif BOARD == STK1000 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_FUNCTION -# define DBG_USART_BAUDRATE 115200 -#elif BOARD == NGW100 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_FUNCTION -# define DBG_USART_BAUDRATE 115200 -#elif BOARD == STK600_RCUC3L0 -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_1_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_1_FUNCTION -// For the RX pin, connect STK600.PORTE.PE3 to STK600.RS232 SPARE.RXD -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_1_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_1_FUNCTION -// For the TX pin, connect STK600.PORTE.PE2 to STK600.RS232 SPARE.TXD -# define DBG_USART_BAUDRATE 57600 -# define DBG_USART_CLOCK_MASK AVR32_USART1_CLK_PBA -#elif BOARD == UC3L_EK -# define DBG_USART (&AVR32_USART3) -# define DBG_USART_RX_PIN AVR32_USART3_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART3_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART3_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART3_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -# define DBG_USART_CLOCK_MASK AVR32_USART3_CLK_PBA -#elif BOARD == ARDUINO -# define DBG_USART (&AVR32_USART1) -# define DBG_USART_RX_PIN AVR32_USART1_RXD_0_0_PIN -# define DBG_USART_RX_FUNCTION AVR32_USART1_RXD_0_0_FUNCTION -# define DBG_USART_TX_PIN AVR32_USART1_TXD_0_0_PIN -# define DBG_USART_TX_FUNCTION AVR32_USART1_TXD_0_0_FUNCTION -# define DBG_USART_BAUDRATE 57600 -# define DBG_USART_CLOCK_MASK AVR32_USART1_CLK_PBA -#endif - -#if !defined(DBG_USART) || \ - !defined(DBG_USART_RX_PIN) || \ - !defined(DBG_USART_RX_FUNCTION) || \ - !defined(DBG_USART_TX_PIN) || \ - !defined(DBG_USART_TX_FUNCTION) || \ - !defined(DBG_USART_BAUDRATE) -# error The USART configuration to use for debug on your board is missing -#endif -//! @} - -/*! \name VT100 Common Commands - */ -//! @{ -#define CLEARSCR "\x1B[2J\x1B[;H" //!< Clear screen. -#define CLEAREOL "\x1B[K" //!< Clear end of line. -#define CLEAREOS "\x1B[J" //!< Clear end of screen. -#define CLEARLCR "\x1B[0K" //!< Clear line cursor right. -#define CLEARLCL "\x1B[1K" //!< Clear line cursor left. -#define CLEARELN "\x1B[2K" //!< Clear entire line. -#define CLEARCDW "\x1B[0J" //!< Clear cursor down. -#define CLEARCUP "\x1B[1J" //!< Clear cursor up. -#define GOTOYX "\x1B[%.2d;%.2dH" //!< Set cursor to (y, x). -#define INSERTMOD "\x1B[4h" //!< Insert mode. -#define OVERWRITEMOD "\x1B[4l" //!< Overwrite mode. -#define DELAFCURSOR "\x1B[K" //!< Erase from cursor to end of line. -#define CRLF "\r\n" //!< Carriage Return + Line Feed. -//! @} - -/*! \name VT100 Cursor Commands - */ -//! @{ -#define CURSON "\x1B[?25h" //!< Show cursor. -#define CURSOFF "\x1B[?25l" //!< Hide cursor. -//! @} - -/*! \name VT100 Character Commands - */ -//! @{ -#define NORMAL "\x1B[0m" //!< Normal. -#define BOLD "\x1B[1m" //!< Bold. -#define UNDERLINE "\x1B[4m" //!< Underline. -#define BLINKING "\x1B[5m" //!< Blink. -#define INVVIDEO "\x1B[7m" //!< Inverse video. -//! @} - -/*! \name VT100 Color Commands - */ -//! @{ -#define CL_BLACK "\033[22;30m" //!< Black. -#define CL_RED "\033[22;31m" //!< Red. -#define CL_GREEN "\033[22;32m" //!< Green. -#define CL_BROWN "\033[22;33m" //!< Brown. -#define CL_BLUE "\033[22;34m" //!< Blue. -#define CL_MAGENTA "\033[22;35m" //!< Magenta. -#define CL_CYAN "\033[22;36m" //!< Cyan. -#define CL_GRAY "\033[22;37m" //!< Gray. -#define CL_DARKGRAY "\033[01;30m" //!< Dark gray. -#define CL_LIGHTRED "\033[01;31m" //!< Light red. -#define CL_LIGHTGREEN "\033[01;32m" //!< Light green. -#define CL_YELLOW "\033[01;33m" //!< Yellow. -#define CL_LIGHTBLUE "\033[01;34m" //!< Light blue. -#define CL_LIGHTMAGENTA "\033[01;35m" //!< Light magenta. -#define CL_LIGHTCYAN "\033[01;36m" //!< Light cyan. -#define CL_WHITE "\033[01;37m" //!< White. -//! @} - - -/*! \brief Sets up DBG_USART with 8N1 at DBG_USART_BAUDRATE. - * - * \param pba_hz PBA clock frequency (Hz). - */ -extern void init_dbg_rs232(long pba_hz); - -/*! \brief Sets up DBG_USART with 8N1 at a given baud rate. - * - * \param baudrate Baud rate to set DBG_USART to. - * \param pba_hz PBA clock frequency (Hz). - */ -extern void init_dbg_rs232_ex(unsigned long baudrate, long pba_hz); - -/*! \brief Prints a string of characters to DBG_USART. - * - * \param str The string of characters to print. - */ -extern void print_dbg(const char *str); - -/*! \brief Prints a character to DBG_USART. - * - * \param c The character to print. - */ -extern void print_dbg_char(int c); - -/*! \brief Prints an integer to DBG_USART in a decimal representation. - * - * \param n The integer to print. - */ -extern void print_dbg_ulong(unsigned long n); - -/*! \brief Prints a char to DBG_USART in an hexadecimal representation. - * - * \param n The char to print. - */ -extern void print_dbg_char_hex(unsigned char n); - -/*! \brief Prints a short integer to DBG_USART in an hexadecimal representation. - * - * \param n The short integer to print. - */ -extern void print_dbg_short_hex(unsigned short n); - -/*! \brief Prints an integer to DBG_USART in an hexadecimal representation. - * - * \param n The integer to print. - */ -extern void print_dbg_hex(unsigned long n); - -/*! \brief Prints a string of characters to a given USART. - * - * \param usart Base address of the USART instance to print to. - * \param str The string of characters to print. - */ -extern void print(volatile avr32_usart_t *usart, const char *str); - -/*! \brief Prints a character to a given USART. - * - * \param usart Base address of the USART instance to print to. - * \param c The character to print. - */ -extern void print_char(volatile avr32_usart_t *usart, int c); - -/*! \brief Prints an integer to a given USART in a decimal representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The integer to print. - */ -extern void print_ulong(volatile avr32_usart_t *usart, unsigned long n); - -/*! \brief Prints a char to a given USART in an hexadecimal representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The char to print. - */ -extern void print_char_hex(volatile avr32_usart_t *usart, unsigned char n); - -/*! \brief Prints a short integer to a given USART in an hexadecimal - * representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The short integer to print. - */ -extern void print_short_hex(volatile avr32_usart_t *usart, unsigned short n); - -/*! \brief Prints an integer to a given USART in an hexadecimal representation. - * - * \param usart Base address of the USART instance to print to. - * \param n The integer to print. - */ -extern void print_hex(volatile avr32_usart_t *usart, unsigned long n); - - -#endif // _PRINT_FUNCS_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h deleted file mode 100644 index e3ebea7a1a4..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_cpu.h +++ /dev/null @@ -1,63 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS CPU include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_CPU_H__ -#define __AVR32_NEWLIB_ADDONS_CPU_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -#define CPU_HZ get_cpu_hz() - -void udelay(unsigned long usec); -void set_cpu_hz(unsigned int clk_hz); -unsigned int get_cpu_hz(); - -_END_STD_C - -#endif diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h deleted file mode 100644 index 31caf13044c..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_exceptions.h +++ /dev/null @@ -1,120 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS exceptions include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_EXCEPTIONS_H__ -#define __AVR32_NEWLIB_ADDONS_EXCEPTIONS_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -/* - Exception vector offsets -*/ -#define EVBA_UNRECOVERABLE 0x000 -#define EVBA_TLB_MULTIPLE 0x004 -#define EVBA_BUS_ERROR_DATA 0x008 -#define EVBA_BUS_ERROR_INSTR 0x00C -#define EVBA_NMI 0x010 -#define EVBA_INSTR_ADDR 0x014 -#define EVBA_ITLB_MISS 0x050 -#define EVBA_ITLB_PROT 0x018 -#define EVBA_BREAKPOINT 0x01C -#define EVBA_ILLEGAL_OPCODE 0x020 -#define EVBA_UNIMPLEMENTED 0x024 -#define EVBA_PRIVILEGE_VIOL 0x028 -#define EVBA_FLOATING_POINT 0x02C -#define EVBA_COP_ABSENT 0x030 -#define EVBA_SCALL 0x100 -#define EVBA_DATA_ADDR_R 0x034 -#define EVBA_DATA_ADDR_W 0x038 -#define EVBA_DTLB_MISS_R 0x060 -#define EVBA_DTLB_MISS_W 0x070 -#define EVBA_DTLB_PROT_R 0x03C -#define EVBA_DTLB_PROT_W 0x040 -#define EVBA_DTLB_MODIFIED 0x044 - - -/* - Define the form of the function used when registering exceptions. - The function should return the address which the exception should - return to after the exception processing. -*/ - -typedef unsigned int (*__exception_handler)(int /*evba_offset*/, int /*return address*/); - -/* - Define the form of the function used when registering a scall handler. -*/ - -typedef void (*__scall_handler)(int /*code*/, int /*p1*/, int /*p2*/ - , int /*p3*/, int /*p4*/); - -/* - Function for registering an exception handler for the exception with - offset given by evba_offset. -*/ -void _register_exception_handler(__exception_handler handler, int evba_offset); - -/* - Function for registering a scall handler which can be a arbirary - function which uses r8-r12 for parameters. -*/ -void _register_scall_handler(__scall_handler handler); - -/* - Initialize exceptions. Must be called before registering exception handlers - and needed to enable exceptions. 'evba' is the pointer to the exception - vector. 'handler_table' is a pointer to an array where the pointers to - the exception handlers are stored. This array must be at least 0x104 bytes - and word aligned. -*/ -void init_exceptions(void *evba, void *handler_table); - -_END_STD_C - -#endif diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h deleted file mode 100644 index 76d81f7371b..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_interrupts.h +++ /dev/null @@ -1,82 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS interrupts include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_INTERRUPTS_H__ -#define __AVR32_NEWLIB_ADDONS_INTERRUPTS_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -#define INT_GRPS 64 -#define INT_LINES 32 -#define INTPR_BASE (__intc_base__ + 0x0000) -#define INTREQ_BASE (__intc_base__ + 64*4) -#define INTCAUSE_BASE (__intc_base__ + 2*64*4) - -//Register offsets -#define INTLEVEL 30 -#define AUTOVECTOR 0 -#define AUTOVECTOR_BITS 14 - -//Priorities -#define INT0 0 -#define INT1 1 -#define INT2 2 -#define INT3 3 - - -typedef void (*__newlib_int_handler)(int /* int_grp*/, void */*user_handle*/); - -__newlib_int_handler register_interrupt(__newlib_int_handler handler, int int_grp, int line, int priority, - .../* void *user_handle*/); -void init_interrupts(); -void set_interrupts_base(void *base); - -_END_STD_C - -#endif diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h deleted file mode 100644 index a725769fa80..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_io.h +++ /dev/null @@ -1,174 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS miscellaneous macros include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_IO_H__ -#define __AVR32_NEWLIB_ADDONS_IO_H__ - -#include <_ansi.h> - -_BEGIN_STD_C - -typedef char u8; -typedef unsigned int u32; - -#define __raw_writeb(v,a) (*(volatile unsigned char *)(a) = (v)) -#define __raw_writew(v,a) (*(volatile unsigned short *)(a) = (v)) -#define __raw_writel(v,a) (*(volatile unsigned int *)(a) = (v)) - -#define __raw_readb(a) (*(volatile unsigned char *)(a)) -#define __raw_readw(a) (*(volatile unsigned short *)(a)) -#define __raw_readl(a) (*(volatile unsigned int *)(a)) - -/* As long as I/O is only performed in P4 (or possibly P3), we're safe */ -#define writeb(v,a) __raw_writeb(v,a) -#define writew(v,a) __raw_writew(v,a) -#define writel(v,a) __raw_writel(v,a) - -#define readb(a) __raw_readb(a) -#define readw(a) __raw_readw(a) -#define readl(a) __raw_readl(a) - -/* Memory segments when segmentation is enabled */ -#define P0SEG 0x00000000 -#define P1SEG 0x80000000 -#define P2SEG 0xa0000000 -#define P3SEG 0xc0000000 -#define P4SEG 0xe0000000 - -/* Returns the privileged segment base of a given address */ -#define PXSEG(a) (((unsigned long)(a)) & 0xe0000000) - -/* Returns the physical address of a PnSEG (n=1,2) address */ -#define PHYSADDR(a) (((unsigned long)(a)) & 0x1fffffff) - -/* - * Map an address to a certain privileged segment - */ -#define P1SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P1SEG)) -#define P2SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P2SEG)) -#define P3SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P3SEG)) -#define P4SEGADDR(a) ((__typeof__(a))(((unsigned long)(a) & 0x1fffffff) | P4SEG)) - - -#define cached(addr) P1SEGADDR(addr) -#define uncached(addr) P2SEGADDR(addr) -#define physaddr(addr) PHYSADDR(addr) - -#define BF(field, value) \ - ({ union { \ - struct { \ - unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long __val: field ## _SIZE ; \ - }; \ - unsigned long __ul; \ - } __tmp; \ - __tmp.__ul = 0; \ - __tmp.__val = value; \ - __tmp.__ul;}) - -#define BF_D(field, value) \ - ({ union { \ - struct { \ - unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long long __val: field ## _SIZE ; \ - }; \ - unsigned long long __ul; \ - } __tmp; \ - __tmp.__ul = 0; \ - __tmp.__val = value; \ - __tmp.__ul;}) - -#define BFINS(var, field, value) \ - { union {\ - struct { \ - unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long __val: field ## _SIZE ; \ - }; \ - unsigned long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val = value; \ - var = __tmp.__ul;} - -#define BFEXT(var, field) \ - ({ union {\ - struct { \ - unsigned : 32 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long __val: field ## _SIZE ; \ - }; \ - unsigned long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val; }) - -#define BFINS_D(var, field, value) \ - { union {\ - struct { \ - unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long long __val: field ## _SIZE ; \ - }; \ - unsigned long long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val = value; \ - var = __tmp.__ul;} - -#define BFEXT_D(var, field) \ - ({ union {\ - struct { \ - unsigned long long : 64 - field ## _OFFSET - field ## _SIZE ; \ - unsigned long long __val: field ## _SIZE ; \ - }; \ - unsigned long long __ul; \ - } __tmp; \ - __tmp.__ul = var; \ - __tmp.__val; }) - - -_END_STD_C - -#endif diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h deleted file mode 100644 index 6c4697d783e..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE/nlao_usart.h +++ /dev/null @@ -1,208 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief NEWLIB_ADDONS USART include file for AVR32. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef __AVR32_NEWLIB_ADDONS_USART_H__ -#define __AVR32_NEWLIB_ADDONS_USART_H__ - -#include <_ansi.h> - -#include "nlao_io.h" - -_BEGIN_STD_C - -struct usart3 { - volatile u32 us_cr; - volatile u32 us_mr; - volatile u32 us_ier; - volatile u32 us_idr; - volatile u32 us_imr; - volatile u32 us_csr; - volatile u32 us_rhr; - volatile u32 us_thr; - volatile u32 us_brgr; - volatile u32 us_rtor; - volatile u32 us_ttgr; - volatile u32 us_reserved[5]; - volatile u32 us_fidi; - volatile u32 us_ner; - volatile u32 us_xxr; - volatile u32 us_if; -}; - -/* Register offsets */ -#define US_CR 0x0000 -#define US_MR 0x0004 -#define US_IER 0x0008 -#define US_IDR 0x000c -#define US_IMR 0x0010 -#define US_CSR 0x0014 -#define US_RHR 0x0018 -#define US_THR 0x001c -#define US_BRGR 0x0020 -#define US_RTOR 0x0024 -#define US_TTGR 0x0028 - -#define US_FIDI 0x0040 -#define US_NER 0x0044 -#define US_XXR 0x0048 -#define US_IF 0x004c - -#define US_RPR 0x0100 -#define US_RCR 0x0104 -#define US_TPR 0x0108 -#define US_TCR 0x010c -#define US_RNPR 0x0110 -#define US_RNCR 0x0114 -#define US_TNPR 0x0118 -#define US_TNCR 0x011c -#define US_PTCR 0x0120 -#define US_PTSR 0x0124 - - - - -/* USART3 Control Register */ -#define US_CR_RSTRX (1 << 2) -#define US_CR_RSTTX (1 << 3) -#define US_CR_RXEN (1 << 4) -#define US_CR_RXDIS (1 << 5) -#define US_CR_TXEN (1 << 6) -#define US_CR_TXDIS (1 << 7) -#define US_CR_RSTSTA (1 << 8) -#define US_CR_STTBRK (1 << 9) -#define US_CR_STPBRK (1 << 10) - -#define US_CR_DTREN (1 << 16) -#define US_CR_DTRDIS (1 << 17) -#define US_CR_RTSEN (1 << 18) -#define US_CR_RTSDIS (1 << 19) - -/* USART3 Mode Register */ -#define US_MR_MODE (15 << 0) -#define US_MR_MODE_NORMAL ( 0 << 0) -#define US_MR_MODE_HWFLOW ( 2 << 0) -#define US_MR_CLKS ( 3 << 4) -#define US_MR_CLKS_CLOCK ( 0 << 4) -#define US_MR_CLKS_FDIV1 ( 1 << 4) -#define US_MR_CLKS_SLOW ( 2 << 4) -#define US_MR_CLKS_EXT ( 3 << 4) -#define US_MR_CHRL_5BITS ( 0 << 6) -#define US_MR_CHRL_6BITS ( 1 << 6) -#define US_MR_CHRL_7BITS ( 2 << 6) -#define US_MR_CHRL_8BITS ( 3 << 6) -#define US_MR_SYNC ( 1 << 8) -#define US_MR_PAR_EVEN ( 0 << 9) -#define US_MR_PAR_ODD ( 1 << 9) -#define US_MR_PAR_SPACE ( 2 << 9) -#define US_MR_PAR_MARK ( 3 << 9) -#define US_MR_PAR_NONE ( 4 << 9) -#define US_MR_PAR_MDROP ( 6 << 9) -#define US_MR_NBSTOP_1BIT ( 0 << 12) -#define US_MR_NBSTOP_1_5BIT ( 1 << 12) -#define US_MR_NBSTOP_2BITS ( 2 << 12) -#define US_MR_OVER ( 1 << 19) -#define US_MR_OVER_X16 ( 0 << 19) -#define US_MR_OVER_X8 ( 1 << 19) - -/* USART3 Channel Status Register */ -#define US_CSR_RXRDY (1 << 0) -#define US_CSR_TXRDY (1 << 1) -#define US_CSR_RXBRK (1 << 2) -#define US_CSR_ENDRX (1 << 3) -#define US_CSR_ENDTX (1 << 4) - - -#define US_CSR_OVRE (1 << 5) -#define US_CSR_FRAME (1 << 6) -#define US_CSR_PARE (1 << 7) - -#define US_CSR_TXEMPTY (1 << 9) - -#define US_CSR_TXBUFE (1 << 11) -#define US_CSR_RXBUFF (1 << 12) -#define US_CSR_RIIC (1 << 16) -#define US_CSR_DSRIC (1 << 17) -#define US_CSR_DCDIC (1 << 18) -#define US_CSR_CTSIC (1 << 19) -#define US_CSR_RI (1 << 20) -#define US_CSR_DSR (1 << 21) -#define US_CSR_DCD (1 << 22) -#define US_CSR_CTS (1 << 23) - -/* USART3 Baud Rate Generator Register */ -#define US_BRGR_CD_OFFSET 0 -#define US_BRGR_FP_OFFSET 16 - -#define US_BRGR_CD_SIZE 16 -#define US_BRGR_FP_SIZE 3 - -#define US_BRGR_CD (0xFFFF << 0) -#define US_BRGR_FP ( 7 << 16) - -/*USART3 PDC Transfer Control Register */ -#define US_PTCR_RXTEN (1 << 0) -#define US_PTCR_RXTDIS (1 << 1) -#define US_PTCR_TXTEN (1 << 8) -#define US_PTCR_TXTDIS (1 << 9) - -/*USART3 PDC Transfer Status Register */ -#define US_PTSR_RXTEN (1 << 0) -#define US_PTSR_TXTEN (1 << 8) - - -int usart_init(int baudrate); -void usart_putc(char c); -void usart_puts(const char *s); -int usart_getc(void); -int usart_tstc(void); -void usart_setbrg(int baudrate, int cpu_clock); -void set_usart_base(void *usart_base); - - -_END_STD_C - -#endif /* MERLIN_USART3_H */ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a deleted file mode 100644 index aa673eccdd4..00000000000 Binary files a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/libnewlib_addons-at32ucr2-speed_opt.a and /dev/null differ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds deleted file mode 100644 index 59152ac0b97..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/0512/GCC/link_uc3a0512.lds +++ /dev/null @@ -1,266 +0,0 @@ -/****************************************************************************** - * AVR32 AT32UC3A0512 GNU LD script file. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: AVR32 AT32UC3A0512 - * - * - author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32") - -OUTPUT_ARCH(avr32:uc) - -ENTRY(_start) - -MEMORY -{ - FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x00080000 - INTRAM (wxa!ri) : ORIGIN = 0x00000004, LENGTH = 0x0000FFFC - USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x00000200 -} - -PHDRS -{ - FLASH PT_LOAD; - INTRAM_ALIGN PT_NULL; - INTRAM_AT_FLASH PT_LOAD; - INTRAM PT_NULL; - USERPAGE PT_LOAD; -} - -SECTIONS -{ - /* If this heap size is selected, all the INTRAM space from the end of the - data area to the beginning of the stack will be allocated for the heap. */ - __max_heap_size__ = -1; - - /* Use a default heap size if heap size was not defined. */ - __heap_size__ = DEFINED(__heap_size__) ? __heap_size__ : __max_heap_size__; - - /* Use a default stack size if stack size was not defined. */ - __stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 4K; - - /* Read-only sections, merged into text segment: */ - PROVIDE (__executable_start = 0x80000000); . = 0x80000000; - .interp : { *(.interp) } >FLASH AT>FLASH :FLASH - .reset : { *(.reset) } >FLASH AT>FLASH :FLASH - .hash : { *(.hash) } >FLASH AT>FLASH :FLASH - .dynsym : { *(.dynsym) } >FLASH AT>FLASH :FLASH - .dynstr : { *(.dynstr) } >FLASH AT>FLASH :FLASH - .gnu.version : { *(.gnu.version) } >FLASH AT>FLASH :FLASH - .gnu.version_d : { *(.gnu.version_d) } >FLASH AT>FLASH :FLASH - .gnu.version_r : { *(.gnu.version_r) } >FLASH AT>FLASH :FLASH - .rel.init : { *(.rel.init) } >FLASH AT>FLASH :FLASH - .rela.init : { *(.rela.init) } >FLASH AT>FLASH :FLASH - .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rel.fini : { *(.rel.fini) } >FLASH AT>FLASH :FLASH - .rela.fini : { *(.rela.fini) } >FLASH AT>FLASH :FLASH - .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rel.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rela.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rel.ctors : { *(.rel.ctors) } >FLASH AT>FLASH :FLASH - .rela.ctors : { *(.rela.ctors) } >FLASH AT>FLASH :FLASH - .rel.dtors : { *(.rel.dtors) } >FLASH AT>FLASH :FLASH - .rela.dtors : { *(.rela.dtors) } >FLASH AT>FLASH :FLASH - .rel.got : { *(.rel.got) } >FLASH AT>FLASH :FLASH - .rela.got : { *(.rela.got) } >FLASH AT>FLASH :FLASH - .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rel.plt : { *(.rel.plt) } >FLASH AT>FLASH :FLASH - .rela.plt : { *(.rela.plt) } >FLASH AT>FLASH :FLASH - .init : - { - KEEP (*(.init)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .plt : { *(.plt) } >FLASH AT>FLASH :FLASH - .text : - { - *(.text .stub .text.* .gnu.linkonce.t.*) - KEEP (*(.text.*personality*)) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .fini : - { - KEEP (*(.fini)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rodata1 : { *(.rodata1) } >FLASH AT>FLASH :FLASH - .eh_frame_hdr : { *(.eh_frame_hdr) } >FLASH AT>FLASH :FLASH - .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } >FLASH AT>FLASH :FLASH - .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >FLASH AT>FLASH :FLASH - .lalign : { . = ALIGN(8); PROVIDE(_data_lma = .); } >FLASH AT>FLASH :FLASH - . = ORIGIN(INTRAM); - .dalign : { . = ALIGN(8); PROVIDE(_data = .); } >INTRAM AT>INTRAM :INTRAM_ALIGN - /* Exception handling */ - .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - PROVIDE (__preinit_array_start = ALIGN(32 / 8)); - .preinit_array : { KEEP (*(.preinit_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array : { KEEP (*(.init_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array : { KEEP (*(.fini_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__fini_array_end = .); - .ctors : - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin*.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dtors : - { - KEEP (*crtbegin*.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .jcr : { KEEP (*(.jcr)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dynamic : { *(.dynamic) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .got : { *(.got.plt) *(.got) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ramtext : { *(.ramtext .ramtext.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ddalign : { . = ALIGN(8); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data : - { - *(.data .data.* .gnu.linkonce.d.*) - KEEP (*(.gnu.linkonce.d.*personality*)) - SORT(CONSTRUCTORS) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data1 : { *(.data1) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .balign : { . = ALIGN(8); PROVIDE(_edata = .); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (edata = .); - __bss_start = .; - .bss : - { - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(8); - } >INTRAM AT>INTRAM :INTRAM - . = ALIGN(8); - _end = .; - PROVIDE (end = .); - __heap_start__ = ALIGN(8); - .heap : - { - *(.heap) - . = (__heap_size__ == __max_heap_size__) ? - ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ - ABSOLUTE(.) : - __heap_size__; - } >INTRAM AT>INTRAM :INTRAM - __heap_end__ = .; - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .stack ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ : - { - _stack = .; - *(.stack) - . = __stack_size__; - _estack = .; - } >INTRAM AT>INTRAM :INTRAM - .userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE :USERPAGE - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds deleted file mode 100644 index a5926d8bee4..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/LINKER_SCRIPTS/AT32UC3A/1256/GCC/link_uc3a1256.lds +++ /dev/null @@ -1,266 +0,0 @@ -/****************************************************************************** - * AVR32 AT32UC3A1256 GNU LD script file. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: AVR32 AT32UC3A1256 - * - * - author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32") - -OUTPUT_ARCH(avr32:uc) - -ENTRY(_start) - -MEMORY -{ - FLASH (rxai!w) : ORIGIN = 0x80000000, LENGTH = 0x00040000 - INTRAM (wxa!ri) : ORIGIN = 0x00000004, LENGTH = 0x0000FFFC - USERPAGE : ORIGIN = 0x80800000, LENGTH = 0x00000200 -} - -PHDRS -{ - FLASH PT_LOAD; - INTRAM_ALIGN PT_NULL; - INTRAM_AT_FLASH PT_LOAD; - INTRAM PT_NULL; - USERPAGE PT_LOAD; -} - -SECTIONS -{ - /* If this heap size is selected, all the INTRAM space from the end of the - data area to the beginning of the stack will be allocated for the heap. */ - __max_heap_size__ = -1; - - /* Use a default heap size if heap size was not defined. */ - __heap_size__ = DEFINED(__heap_size__) ? __heap_size__ : __max_heap_size__; - - /* Use a default stack size if stack size was not defined. */ - __stack_size__ = DEFINED(__stack_size__) ? __stack_size__ : 4K; - - /* Read-only sections, merged into text segment: */ - PROVIDE (__executable_start = 0x80000000); . = 0x80000000; - .interp : { *(.interp) } >FLASH AT>FLASH :FLASH - .reset : { *(.reset) } >FLASH AT>FLASH :FLASH - .hash : { *(.hash) } >FLASH AT>FLASH :FLASH - .dynsym : { *(.dynsym) } >FLASH AT>FLASH :FLASH - .dynstr : { *(.dynstr) } >FLASH AT>FLASH :FLASH - .gnu.version : { *(.gnu.version) } >FLASH AT>FLASH :FLASH - .gnu.version_d : { *(.gnu.version_d) } >FLASH AT>FLASH :FLASH - .gnu.version_r : { *(.gnu.version_r) } >FLASH AT>FLASH :FLASH - .rel.init : { *(.rel.init) } >FLASH AT>FLASH :FLASH - .rela.init : { *(.rela.init) } >FLASH AT>FLASH :FLASH - .rel.text : { *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rela.text : { *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*) } >FLASH AT>FLASH :FLASH - .rel.fini : { *(.rel.fini) } >FLASH AT>FLASH :FLASH - .rela.fini : { *(.rela.fini) } >FLASH AT>FLASH :FLASH - .rel.rodata : { *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rela.rodata : { *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rel.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rela.data.rel.ro : { *(.rel.data.rel.ro*) } >FLASH AT>FLASH :FLASH - .rel.data : { *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rela.data : { *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*) } >FLASH AT>FLASH :FLASH - .rel.tdata : { *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rela.tdata : { *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*) } >FLASH AT>FLASH :FLASH - .rel.tbss : { *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rela.tbss : { *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*) } >FLASH AT>FLASH :FLASH - .rel.ctors : { *(.rel.ctors) } >FLASH AT>FLASH :FLASH - .rela.ctors : { *(.rela.ctors) } >FLASH AT>FLASH :FLASH - .rel.dtors : { *(.rel.dtors) } >FLASH AT>FLASH :FLASH - .rela.dtors : { *(.rela.dtors) } >FLASH AT>FLASH :FLASH - .rel.got : { *(.rel.got) } >FLASH AT>FLASH :FLASH - .rela.got : { *(.rela.got) } >FLASH AT>FLASH :FLASH - .rel.bss : { *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rela.bss : { *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*) } >FLASH AT>FLASH :FLASH - .rel.plt : { *(.rel.plt) } >FLASH AT>FLASH :FLASH - .rela.plt : { *(.rela.plt) } >FLASH AT>FLASH :FLASH - .init : - { - KEEP (*(.init)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .plt : { *(.plt) } >FLASH AT>FLASH :FLASH - .text : - { - *(.text .stub .text.* .gnu.linkonce.t.*) - KEEP (*(.text.*personality*)) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } >FLASH AT>FLASH :FLASH =0xd703d703 - .fini : - { - KEEP (*(.fini)) - } >FLASH AT>FLASH :FLASH =0xd703d703 - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } >FLASH AT>FLASH :FLASH - .rodata1 : { *(.rodata1) } >FLASH AT>FLASH :FLASH - .eh_frame_hdr : { *(.eh_frame_hdr) } >FLASH AT>FLASH :FLASH - .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } >FLASH AT>FLASH :FLASH - .gcc_except_table : ONLY_IF_RO { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >FLASH AT>FLASH :FLASH - .lalign : { . = ALIGN(8); PROVIDE(_data_lma = .); } >FLASH AT>FLASH :FLASH - . = ORIGIN(INTRAM); - .dalign : { . = ALIGN(8); PROVIDE(_data = .); } >INTRAM AT>INTRAM :INTRAM_ALIGN - /* Exception handling */ - .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .gcc_except_table : ONLY_IF_RW { KEEP (*(.gcc_except_table)) *(.gcc_except_table.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - /* Ensure the __preinit_array_start label is properly aligned. We - could instead move the label definition inside the section, but - the linker would then create the section even if it turns out to - be empty, which isn't pretty. */ - PROVIDE (__preinit_array_start = ALIGN(32 / 8)); - .preinit_array : { KEEP (*(.preinit_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__preinit_array_end = .); - PROVIDE (__init_array_start = .); - .init_array : { KEEP (*(.init_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__init_array_end = .); - PROVIDE (__fini_array_start = .); - .fini_array : { KEEP (*(.fini_array)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (__fini_array_end = .); - .ctors : - { - /* gcc uses crtbegin.o to find the start of - the constructors, so we make sure it is - first. Because this is a wildcard, it - doesn't matter if the user does not - actually link against crtbegin.o; the - linker won't look for a file to match a - wildcard. The wildcard also means that it - doesn't matter which directory crtbegin.o - is in. */ - KEEP (*crtbegin*.o(.ctors)) - /* We don't want to include the .ctor section from - from the crtend.o file until after the sorted ctors. - The .ctor section from the crtend file contains the - end of ctors marker and it must be last */ - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*(.ctors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dtors : - { - KEEP (*crtbegin*.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*(.dtors)) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .jcr : { KEEP (*(.jcr)) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data.rel.ro : { *(.data.rel.ro.local) *(.data.rel.ro*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .dynamic : { *(.dynamic) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .got : { *(.got.plt) *(.got) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ramtext : { *(.ramtext .ramtext.*) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .ddalign : { . = ALIGN(8); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data : - { - *(.data .data.* .gnu.linkonce.d.*) - KEEP (*(.gnu.linkonce.d.*personality*)) - SORT(CONSTRUCTORS) - } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .data1 : { *(.data1) } >INTRAM AT>FLASH :INTRAM_AT_FLASH - .balign : { . = ALIGN(8); PROVIDE(_edata = .); } >INTRAM AT>FLASH :INTRAM_AT_FLASH - PROVIDE (edata = .); - __bss_start = .; - .bss : - { - *(.dynbss) - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. */ - . = ALIGN(8); - } >INTRAM AT>INTRAM :INTRAM - . = ALIGN(8); - _end = .; - PROVIDE (end = .); - __heap_start__ = ALIGN(8); - .heap : - { - *(.heap) - . = (__heap_size__ == __max_heap_size__) ? - ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ - ABSOLUTE(.) : - __heap_size__; - } >INTRAM AT>INTRAM :INTRAM - __heap_end__ = .; - /* Stabs debugging sections. */ - .stab 0 : { *(.stab) } - .stabstr 0 : { *(.stabstr) } - .stab.excl 0 : { *(.stab.excl) } - .stab.exclstr 0 : { *(.stab.exclstr) } - .stab.index 0 : { *(.stab.index) } - .stab.indexstr 0 : { *(.stab.indexstr) } - .comment 0 : { *(.comment) } - /* DWARF debug sections. - Symbols in the DWARF debugging sections are relative to the beginning - of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - .stack ORIGIN(INTRAM) + LENGTH(INTRAM) - __stack_size__ : - { - _stack = .; - *(.stack) - . = __stack_size__; - _estack = .; - } >INTRAM AT>INTRAM :INTRAM - .userpage : { *(.userpage .userpage.*) } >USERPAGE AT>USERPAGE :USERPAGE - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h deleted file mode 100644 index 41163b6d916..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/mrepeat.h +++ /dev/null @@ -1,328 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor macro repeating utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _MREPEAT_H_ -#define _MREPEAT_H_ - -#include "preprocessor.h" - - -//! Maximal number of repetitions supported by MREPEAT. -#define MREPEAT_LIMIT 256 - -/*! \brief Macro repeat. - * - * This macro represents a horizontal repetition construct. - * - * \param count The number of repetitious calls to macro. Valid values range from 0 to MREPEAT_LIMIT. - * \param macro A binary operation of the form macro(n, data). This macro is expanded by MREPEAT with - * the current repetition number and the auxiliary data argument. - * \param data Auxiliary data passed to macro. - * - * \return macro(0, data) macro(1, data) ... macro(count - 1, data) - */ -#define MREPEAT(count, macro, data) TPASTE2(MREPEAT, count)(macro, data) - -#define MREPEAT0( macro, data) -#define MREPEAT1( macro, data) MREPEAT0( macro, data) macro( 0, data) -#define MREPEAT2( macro, data) MREPEAT1( macro, data) macro( 1, data) -#define MREPEAT3( macro, data) MREPEAT2( macro, data) macro( 2, data) -#define MREPEAT4( macro, data) MREPEAT3( macro, data) macro( 3, data) -#define MREPEAT5( macro, data) MREPEAT4( macro, data) macro( 4, data) -#define MREPEAT6( macro, data) MREPEAT5( macro, data) macro( 5, data) -#define MREPEAT7( macro, data) MREPEAT6( macro, data) macro( 6, data) -#define MREPEAT8( macro, data) MREPEAT7( macro, data) macro( 7, data) -#define MREPEAT9( macro, data) MREPEAT8( macro, data) macro( 8, data) -#define MREPEAT10( macro, data) MREPEAT9( macro, data) macro( 9, data) -#define MREPEAT11( macro, data) MREPEAT10( macro, data) macro( 10, data) -#define MREPEAT12( macro, data) MREPEAT11( macro, data) macro( 11, data) -#define MREPEAT13( macro, data) MREPEAT12( macro, data) macro( 12, data) -#define MREPEAT14( macro, data) MREPEAT13( macro, data) macro( 13, data) -#define MREPEAT15( macro, data) MREPEAT14( macro, data) macro( 14, data) -#define MREPEAT16( macro, data) MREPEAT15( macro, data) macro( 15, data) -#define MREPEAT17( macro, data) MREPEAT16( macro, data) macro( 16, data) -#define MREPEAT18( macro, data) MREPEAT17( macro, data) macro( 17, data) -#define MREPEAT19( macro, data) MREPEAT18( macro, data) macro( 18, data) -#define MREPEAT20( macro, data) MREPEAT19( macro, data) macro( 19, data) -#define MREPEAT21( macro, data) MREPEAT20( macro, data) macro( 20, data) -#define MREPEAT22( macro, data) MREPEAT21( macro, data) macro( 21, data) -#define MREPEAT23( macro, data) MREPEAT22( macro, data) macro( 22, data) -#define MREPEAT24( macro, data) MREPEAT23( macro, data) macro( 23, data) -#define MREPEAT25( macro, data) MREPEAT24( macro, data) macro( 24, data) -#define MREPEAT26( macro, data) MREPEAT25( macro, data) macro( 25, data) -#define MREPEAT27( macro, data) MREPEAT26( macro, data) macro( 26, data) -#define MREPEAT28( macro, data) MREPEAT27( macro, data) macro( 27, data) -#define MREPEAT29( macro, data) MREPEAT28( macro, data) macro( 28, data) -#define MREPEAT30( macro, data) MREPEAT29( macro, data) macro( 29, data) -#define MREPEAT31( macro, data) MREPEAT30( macro, data) macro( 30, data) -#define MREPEAT32( macro, data) MREPEAT31( macro, data) macro( 31, data) -#define MREPEAT33( macro, data) MREPEAT32( macro, data) macro( 32, data) -#define MREPEAT34( macro, data) MREPEAT33( macro, data) macro( 33, data) -#define MREPEAT35( macro, data) MREPEAT34( macro, data) macro( 34, data) -#define MREPEAT36( macro, data) MREPEAT35( macro, data) macro( 35, data) -#define MREPEAT37( macro, data) MREPEAT36( macro, data) macro( 36, data) -#define MREPEAT38( macro, data) MREPEAT37( macro, data) macro( 37, data) -#define MREPEAT39( macro, data) MREPEAT38( macro, data) macro( 38, data) -#define MREPEAT40( macro, data) MREPEAT39( macro, data) macro( 39, data) -#define MREPEAT41( macro, data) MREPEAT40( macro, data) macro( 40, data) -#define MREPEAT42( macro, data) MREPEAT41( macro, data) macro( 41, data) -#define MREPEAT43( macro, data) MREPEAT42( macro, data) macro( 42, data) -#define MREPEAT44( macro, data) MREPEAT43( macro, data) macro( 43, data) -#define MREPEAT45( macro, data) MREPEAT44( macro, data) macro( 44, data) -#define MREPEAT46( macro, data) MREPEAT45( macro, data) macro( 45, data) -#define MREPEAT47( macro, data) MREPEAT46( macro, data) macro( 46, data) -#define MREPEAT48( macro, data) MREPEAT47( macro, data) macro( 47, data) -#define MREPEAT49( macro, data) MREPEAT48( macro, data) macro( 48, data) -#define MREPEAT50( macro, data) MREPEAT49( macro, data) macro( 49, data) -#define MREPEAT51( macro, data) MREPEAT50( macro, data) macro( 50, data) -#define MREPEAT52( macro, data) MREPEAT51( macro, data) macro( 51, data) -#define MREPEAT53( macro, data) MREPEAT52( macro, data) macro( 52, data) -#define MREPEAT54( macro, data) MREPEAT53( macro, data) macro( 53, data) -#define MREPEAT55( macro, data) MREPEAT54( macro, data) macro( 54, data) -#define MREPEAT56( macro, data) MREPEAT55( macro, data) macro( 55, data) -#define MREPEAT57( macro, data) MREPEAT56( macro, data) macro( 56, data) -#define MREPEAT58( macro, data) MREPEAT57( macro, data) macro( 57, data) -#define MREPEAT59( macro, data) MREPEAT58( macro, data) macro( 58, data) -#define MREPEAT60( macro, data) MREPEAT59( macro, data) macro( 59, data) -#define MREPEAT61( macro, data) MREPEAT60( macro, data) macro( 60, data) -#define MREPEAT62( macro, data) MREPEAT61( macro, data) macro( 61, data) -#define MREPEAT63( macro, data) MREPEAT62( macro, data) macro( 62, data) -#define MREPEAT64( macro, data) MREPEAT63( macro, data) macro( 63, data) -#define MREPEAT65( macro, data) MREPEAT64( macro, data) macro( 64, data) -#define MREPEAT66( macro, data) MREPEAT65( macro, data) macro( 65, data) -#define MREPEAT67( macro, data) MREPEAT66( macro, data) macro( 66, data) -#define MREPEAT68( macro, data) MREPEAT67( macro, data) macro( 67, data) -#define MREPEAT69( macro, data) MREPEAT68( macro, data) macro( 68, data) -#define MREPEAT70( macro, data) MREPEAT69( macro, data) macro( 69, data) -#define MREPEAT71( macro, data) MREPEAT70( macro, data) macro( 70, data) -#define MREPEAT72( macro, data) MREPEAT71( macro, data) macro( 71, data) -#define MREPEAT73( macro, data) MREPEAT72( macro, data) macro( 72, data) -#define MREPEAT74( macro, data) MREPEAT73( macro, data) macro( 73, data) -#define MREPEAT75( macro, data) MREPEAT74( macro, data) macro( 74, data) -#define MREPEAT76( macro, data) MREPEAT75( macro, data) macro( 75, data) -#define MREPEAT77( macro, data) MREPEAT76( macro, data) macro( 76, data) -#define MREPEAT78( macro, data) MREPEAT77( macro, data) macro( 77, data) -#define MREPEAT79( macro, data) MREPEAT78( macro, data) macro( 78, data) -#define MREPEAT80( macro, data) MREPEAT79( macro, data) macro( 79, data) -#define MREPEAT81( macro, data) MREPEAT80( macro, data) macro( 80, data) -#define MREPEAT82( macro, data) MREPEAT81( macro, data) macro( 81, data) -#define MREPEAT83( macro, data) MREPEAT82( macro, data) macro( 82, data) -#define MREPEAT84( macro, data) MREPEAT83( macro, data) macro( 83, data) -#define MREPEAT85( macro, data) MREPEAT84( macro, data) macro( 84, data) -#define MREPEAT86( macro, data) MREPEAT85( macro, data) macro( 85, data) -#define MREPEAT87( macro, data) MREPEAT86( macro, data) macro( 86, data) -#define MREPEAT88( macro, data) MREPEAT87( macro, data) macro( 87, data) -#define MREPEAT89( macro, data) MREPEAT88( macro, data) macro( 88, data) -#define MREPEAT90( macro, data) MREPEAT89( macro, data) macro( 89, data) -#define MREPEAT91( macro, data) MREPEAT90( macro, data) macro( 90, data) -#define MREPEAT92( macro, data) MREPEAT91( macro, data) macro( 91, data) -#define MREPEAT93( macro, data) MREPEAT92( macro, data) macro( 92, data) -#define MREPEAT94( macro, data) MREPEAT93( macro, data) macro( 93, data) -#define MREPEAT95( macro, data) MREPEAT94( macro, data) macro( 94, data) -#define MREPEAT96( macro, data) MREPEAT95( macro, data) macro( 95, data) -#define MREPEAT97( macro, data) MREPEAT96( macro, data) macro( 96, data) -#define MREPEAT98( macro, data) MREPEAT97( macro, data) macro( 97, data) -#define MREPEAT99( macro, data) MREPEAT98( macro, data) macro( 98, data) -#define MREPEAT100(macro, data) MREPEAT99( macro, data) macro( 99, data) -#define MREPEAT101(macro, data) MREPEAT100(macro, data) macro(100, data) -#define MREPEAT102(macro, data) MREPEAT101(macro, data) macro(101, data) -#define MREPEAT103(macro, data) MREPEAT102(macro, data) macro(102, data) -#define MREPEAT104(macro, data) MREPEAT103(macro, data) macro(103, data) -#define MREPEAT105(macro, data) MREPEAT104(macro, data) macro(104, data) -#define MREPEAT106(macro, data) MREPEAT105(macro, data) macro(105, data) -#define MREPEAT107(macro, data) MREPEAT106(macro, data) macro(106, data) -#define MREPEAT108(macro, data) MREPEAT107(macro, data) macro(107, data) -#define MREPEAT109(macro, data) MREPEAT108(macro, data) macro(108, data) -#define MREPEAT110(macro, data) MREPEAT109(macro, data) macro(109, data) -#define MREPEAT111(macro, data) MREPEAT110(macro, data) macro(110, data) -#define MREPEAT112(macro, data) MREPEAT111(macro, data) macro(111, data) -#define MREPEAT113(macro, data) MREPEAT112(macro, data) macro(112, data) -#define MREPEAT114(macro, data) MREPEAT113(macro, data) macro(113, data) -#define MREPEAT115(macro, data) MREPEAT114(macro, data) macro(114, data) -#define MREPEAT116(macro, data) MREPEAT115(macro, data) macro(115, data) -#define MREPEAT117(macro, data) MREPEAT116(macro, data) macro(116, data) -#define MREPEAT118(macro, data) MREPEAT117(macro, data) macro(117, data) -#define MREPEAT119(macro, data) MREPEAT118(macro, data) macro(118, data) -#define MREPEAT120(macro, data) MREPEAT119(macro, data) macro(119, data) -#define MREPEAT121(macro, data) MREPEAT120(macro, data) macro(120, data) -#define MREPEAT122(macro, data) MREPEAT121(macro, data) macro(121, data) -#define MREPEAT123(macro, data) MREPEAT122(macro, data) macro(122, data) -#define MREPEAT124(macro, data) MREPEAT123(macro, data) macro(123, data) -#define MREPEAT125(macro, data) MREPEAT124(macro, data) macro(124, data) -#define MREPEAT126(macro, data) MREPEAT125(macro, data) macro(125, data) -#define MREPEAT127(macro, data) MREPEAT126(macro, data) macro(126, data) -#define MREPEAT128(macro, data) MREPEAT127(macro, data) macro(127, data) -#define MREPEAT129(macro, data) MREPEAT128(macro, data) macro(128, data) -#define MREPEAT130(macro, data) MREPEAT129(macro, data) macro(129, data) -#define MREPEAT131(macro, data) MREPEAT130(macro, data) macro(130, data) -#define MREPEAT132(macro, data) MREPEAT131(macro, data) macro(131, data) -#define MREPEAT133(macro, data) MREPEAT132(macro, data) macro(132, data) -#define MREPEAT134(macro, data) MREPEAT133(macro, data) macro(133, data) -#define MREPEAT135(macro, data) MREPEAT134(macro, data) macro(134, data) -#define MREPEAT136(macro, data) MREPEAT135(macro, data) macro(135, data) -#define MREPEAT137(macro, data) MREPEAT136(macro, data) macro(136, data) -#define MREPEAT138(macro, data) MREPEAT137(macro, data) macro(137, data) -#define MREPEAT139(macro, data) MREPEAT138(macro, data) macro(138, data) -#define MREPEAT140(macro, data) MREPEAT139(macro, data) macro(139, data) -#define MREPEAT141(macro, data) MREPEAT140(macro, data) macro(140, data) -#define MREPEAT142(macro, data) MREPEAT141(macro, data) macro(141, data) -#define MREPEAT143(macro, data) MREPEAT142(macro, data) macro(142, data) -#define MREPEAT144(macro, data) MREPEAT143(macro, data) macro(143, data) -#define MREPEAT145(macro, data) MREPEAT144(macro, data) macro(144, data) -#define MREPEAT146(macro, data) MREPEAT145(macro, data) macro(145, data) -#define MREPEAT147(macro, data) MREPEAT146(macro, data) macro(146, data) -#define MREPEAT148(macro, data) MREPEAT147(macro, data) macro(147, data) -#define MREPEAT149(macro, data) MREPEAT148(macro, data) macro(148, data) -#define MREPEAT150(macro, data) MREPEAT149(macro, data) macro(149, data) -#define MREPEAT151(macro, data) MREPEAT150(macro, data) macro(150, data) -#define MREPEAT152(macro, data) MREPEAT151(macro, data) macro(151, data) -#define MREPEAT153(macro, data) MREPEAT152(macro, data) macro(152, data) -#define MREPEAT154(macro, data) MREPEAT153(macro, data) macro(153, data) -#define MREPEAT155(macro, data) MREPEAT154(macro, data) macro(154, data) -#define MREPEAT156(macro, data) MREPEAT155(macro, data) macro(155, data) -#define MREPEAT157(macro, data) MREPEAT156(macro, data) macro(156, data) -#define MREPEAT158(macro, data) MREPEAT157(macro, data) macro(157, data) -#define MREPEAT159(macro, data) MREPEAT158(macro, data) macro(158, data) -#define MREPEAT160(macro, data) MREPEAT159(macro, data) macro(159, data) -#define MREPEAT161(macro, data) MREPEAT160(macro, data) macro(160, data) -#define MREPEAT162(macro, data) MREPEAT161(macro, data) macro(161, data) -#define MREPEAT163(macro, data) MREPEAT162(macro, data) macro(162, data) -#define MREPEAT164(macro, data) MREPEAT163(macro, data) macro(163, data) -#define MREPEAT165(macro, data) MREPEAT164(macro, data) macro(164, data) -#define MREPEAT166(macro, data) MREPEAT165(macro, data) macro(165, data) -#define MREPEAT167(macro, data) MREPEAT166(macro, data) macro(166, data) -#define MREPEAT168(macro, data) MREPEAT167(macro, data) macro(167, data) -#define MREPEAT169(macro, data) MREPEAT168(macro, data) macro(168, data) -#define MREPEAT170(macro, data) MREPEAT169(macro, data) macro(169, data) -#define MREPEAT171(macro, data) MREPEAT170(macro, data) macro(170, data) -#define MREPEAT172(macro, data) MREPEAT171(macro, data) macro(171, data) -#define MREPEAT173(macro, data) MREPEAT172(macro, data) macro(172, data) -#define MREPEAT174(macro, data) MREPEAT173(macro, data) macro(173, data) -#define MREPEAT175(macro, data) MREPEAT174(macro, data) macro(174, data) -#define MREPEAT176(macro, data) MREPEAT175(macro, data) macro(175, data) -#define MREPEAT177(macro, data) MREPEAT176(macro, data) macro(176, data) -#define MREPEAT178(macro, data) MREPEAT177(macro, data) macro(177, data) -#define MREPEAT179(macro, data) MREPEAT178(macro, data) macro(178, data) -#define MREPEAT180(macro, data) MREPEAT179(macro, data) macro(179, data) -#define MREPEAT181(macro, data) MREPEAT180(macro, data) macro(180, data) -#define MREPEAT182(macro, data) MREPEAT181(macro, data) macro(181, data) -#define MREPEAT183(macro, data) MREPEAT182(macro, data) macro(182, data) -#define MREPEAT184(macro, data) MREPEAT183(macro, data) macro(183, data) -#define MREPEAT185(macro, data) MREPEAT184(macro, data) macro(184, data) -#define MREPEAT186(macro, data) MREPEAT185(macro, data) macro(185, data) -#define MREPEAT187(macro, data) MREPEAT186(macro, data) macro(186, data) -#define MREPEAT188(macro, data) MREPEAT187(macro, data) macro(187, data) -#define MREPEAT189(macro, data) MREPEAT188(macro, data) macro(188, data) -#define MREPEAT190(macro, data) MREPEAT189(macro, data) macro(189, data) -#define MREPEAT191(macro, data) MREPEAT190(macro, data) macro(190, data) -#define MREPEAT192(macro, data) MREPEAT191(macro, data) macro(191, data) -#define MREPEAT193(macro, data) MREPEAT192(macro, data) macro(192, data) -#define MREPEAT194(macro, data) MREPEAT193(macro, data) macro(193, data) -#define MREPEAT195(macro, data) MREPEAT194(macro, data) macro(194, data) -#define MREPEAT196(macro, data) MREPEAT195(macro, data) macro(195, data) -#define MREPEAT197(macro, data) MREPEAT196(macro, data) macro(196, data) -#define MREPEAT198(macro, data) MREPEAT197(macro, data) macro(197, data) -#define MREPEAT199(macro, data) MREPEAT198(macro, data) macro(198, data) -#define MREPEAT200(macro, data) MREPEAT199(macro, data) macro(199, data) -#define MREPEAT201(macro, data) MREPEAT200(macro, data) macro(200, data) -#define MREPEAT202(macro, data) MREPEAT201(macro, data) macro(201, data) -#define MREPEAT203(macro, data) MREPEAT202(macro, data) macro(202, data) -#define MREPEAT204(macro, data) MREPEAT203(macro, data) macro(203, data) -#define MREPEAT205(macro, data) MREPEAT204(macro, data) macro(204, data) -#define MREPEAT206(macro, data) MREPEAT205(macro, data) macro(205, data) -#define MREPEAT207(macro, data) MREPEAT206(macro, data) macro(206, data) -#define MREPEAT208(macro, data) MREPEAT207(macro, data) macro(207, data) -#define MREPEAT209(macro, data) MREPEAT208(macro, data) macro(208, data) -#define MREPEAT210(macro, data) MREPEAT209(macro, data) macro(209, data) -#define MREPEAT211(macro, data) MREPEAT210(macro, data) macro(210, data) -#define MREPEAT212(macro, data) MREPEAT211(macro, data) macro(211, data) -#define MREPEAT213(macro, data) MREPEAT212(macro, data) macro(212, data) -#define MREPEAT214(macro, data) MREPEAT213(macro, data) macro(213, data) -#define MREPEAT215(macro, data) MREPEAT214(macro, data) macro(214, data) -#define MREPEAT216(macro, data) MREPEAT215(macro, data) macro(215, data) -#define MREPEAT217(macro, data) MREPEAT216(macro, data) macro(216, data) -#define MREPEAT218(macro, data) MREPEAT217(macro, data) macro(217, data) -#define MREPEAT219(macro, data) MREPEAT218(macro, data) macro(218, data) -#define MREPEAT220(macro, data) MREPEAT219(macro, data) macro(219, data) -#define MREPEAT221(macro, data) MREPEAT220(macro, data) macro(220, data) -#define MREPEAT222(macro, data) MREPEAT221(macro, data) macro(221, data) -#define MREPEAT223(macro, data) MREPEAT222(macro, data) macro(222, data) -#define MREPEAT224(macro, data) MREPEAT223(macro, data) macro(223, data) -#define MREPEAT225(macro, data) MREPEAT224(macro, data) macro(224, data) -#define MREPEAT226(macro, data) MREPEAT225(macro, data) macro(225, data) -#define MREPEAT227(macro, data) MREPEAT226(macro, data) macro(226, data) -#define MREPEAT228(macro, data) MREPEAT227(macro, data) macro(227, data) -#define MREPEAT229(macro, data) MREPEAT228(macro, data) macro(228, data) -#define MREPEAT230(macro, data) MREPEAT229(macro, data) macro(229, data) -#define MREPEAT231(macro, data) MREPEAT230(macro, data) macro(230, data) -#define MREPEAT232(macro, data) MREPEAT231(macro, data) macro(231, data) -#define MREPEAT233(macro, data) MREPEAT232(macro, data) macro(232, data) -#define MREPEAT234(macro, data) MREPEAT233(macro, data) macro(233, data) -#define MREPEAT235(macro, data) MREPEAT234(macro, data) macro(234, data) -#define MREPEAT236(macro, data) MREPEAT235(macro, data) macro(235, data) -#define MREPEAT237(macro, data) MREPEAT236(macro, data) macro(236, data) -#define MREPEAT238(macro, data) MREPEAT237(macro, data) macro(237, data) -#define MREPEAT239(macro, data) MREPEAT238(macro, data) macro(238, data) -#define MREPEAT240(macro, data) MREPEAT239(macro, data) macro(239, data) -#define MREPEAT241(macro, data) MREPEAT240(macro, data) macro(240, data) -#define MREPEAT242(macro, data) MREPEAT241(macro, data) macro(241, data) -#define MREPEAT243(macro, data) MREPEAT242(macro, data) macro(242, data) -#define MREPEAT244(macro, data) MREPEAT243(macro, data) macro(243, data) -#define MREPEAT245(macro, data) MREPEAT244(macro, data) macro(244, data) -#define MREPEAT246(macro, data) MREPEAT245(macro, data) macro(245, data) -#define MREPEAT247(macro, data) MREPEAT246(macro, data) macro(246, data) -#define MREPEAT248(macro, data) MREPEAT247(macro, data) macro(247, data) -#define MREPEAT249(macro, data) MREPEAT248(macro, data) macro(248, data) -#define MREPEAT250(macro, data) MREPEAT249(macro, data) macro(249, data) -#define MREPEAT251(macro, data) MREPEAT250(macro, data) macro(250, data) -#define MREPEAT252(macro, data) MREPEAT251(macro, data) macro(251, data) -#define MREPEAT253(macro, data) MREPEAT252(macro, data) macro(252, data) -#define MREPEAT254(macro, data) MREPEAT253(macro, data) macro(253, data) -#define MREPEAT255(macro, data) MREPEAT254(macro, data) macro(254, data) -#define MREPEAT256(macro, data) MREPEAT255(macro, data) macro(255, data) - - -#endif // _MREPEAT_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h deleted file mode 100644 index 5b996ba11f2..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/preprocessor.h +++ /dev/null @@ -1,55 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _PREPROCESSOR_H_ -#define _PREPROCESSOR_H_ - -#include "tpaste.h" -#include "stringz.h" -#include "mrepeat.h" - - -#endif // _PREPROCESSOR_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h deleted file mode 100644 index 3528ea0dabb..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/stringz.h +++ /dev/null @@ -1,75 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor stringizing utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _STRINGZ_H_ -#define _STRINGZ_H_ - - -/*! \brief Stringize. - * - * Stringize a preprocessing token, this token being allowed to be \#defined. - * - * May be used only within macros with the token passed as an argument if the token is \#defined. - * - * For example, writing STRINGZ(PIN) within a macro \#defined by PIN_NAME(PIN) - * and invoked as PIN_NAME(PIN0) with PIN0 \#defined as A0 is equivalent to - * writing "A0". - */ -#define STRINGZ(x) #x - -/*! \brief Absolute stringize. - * - * Stringize a preprocessing token, this token being allowed to be \#defined. - * - * No restriction of use if the token is \#defined. - * - * For example, writing ASTRINGZ(PIN0) anywhere with PIN0 \#defined as A0 is - * equivalent to writing "A0". - */ -#define ASTRINGZ(x) STRINGZ(x) - - -#endif // _STRINGZ_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h deleted file mode 100644 index a5d7beeaa80..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR/tpaste.h +++ /dev/null @@ -1,95 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Preprocessor token pasting utils. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _TPASTE_H_ -#define _TPASTE_H_ - - -/*! \name Token Paste - * - * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. - * - * May be used only within macros with the tokens passed as arguments if the tokens are \#defined. - * - * For example, writing TPASTE2(U, WIDTH) within a macro \#defined by - * UTYPE(WIDTH) and invoked as UTYPE(UL_WIDTH) with UL_WIDTH \#defined as 32 is - * equivalent to writing U32. - */ -//! @{ -#define TPASTE2( a, b) a##b -#define TPASTE3( a, b, c) a##b##c -#define TPASTE4( a, b, c, d) a##b##c##d -#define TPASTE5( a, b, c, d, e) a##b##c##d##e -#define TPASTE6( a, b, c, d, e, f) a##b##c##d##e##f -#define TPASTE7( a, b, c, d, e, f, g) a##b##c##d##e##f##g -#define TPASTE8( a, b, c, d, e, f, g, h) a##b##c##d##e##f##g##h -#define TPASTE9( a, b, c, d, e, f, g, h, i) a##b##c##d##e##f##g##h##i -#define TPASTE10(a, b, c, d, e, f, g, h, i, j) a##b##c##d##e##f##g##h##i##j -//! @} - -/*! \name Absolute Token Paste - * - * Paste N preprocessing tokens together, these tokens being allowed to be \#defined. - * - * No restriction of use if the tokens are \#defined. - * - * For example, writing ATPASTE2(U, UL_WIDTH) anywhere with UL_WIDTH \#defined - * as 32 is equivalent to writing U32. - */ -//! @{ -#define ATPASTE2( a, b) TPASTE2( a, b) -#define ATPASTE3( a, b, c) TPASTE3( a, b, c) -#define ATPASTE4( a, b, c, d) TPASTE4( a, b, c, d) -#define ATPASTE5( a, b, c, d, e) TPASTE5( a, b, c, d, e) -#define ATPASTE6( a, b, c, d, e, f) TPASTE6( a, b, c, d, e, f) -#define ATPASTE7( a, b, c, d, e, f, g) TPASTE7( a, b, c, d, e, f, g) -#define ATPASTE8( a, b, c, d, e, f, g, h) TPASTE8( a, b, c, d, e, f, g, h) -#define ATPASTE9( a, b, c, d, e, f, g, h, i) TPASTE9( a, b, c, d, e, f, g, h, i) -#define ATPASTE10(a, b, c, d, e, f, g, h, i, j) TPASTE10(a, b, c, d, e, f, g, h, i, j) -//! @} - - -#endif // _TPASTE_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x deleted file mode 100644 index 23b658b9846..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/STARTUP_FILES/GCC/crt0.x +++ /dev/null @@ -1,121 +0,0 @@ -/* This file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief AVR32UC C runtime startup file. - * - * This file has been built from the Newlib crt0.S. - * - * - Compiler: GNU GCC for AVR32 - * - Supported devices: All AVR32UC devices can be used. - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#include - - -//! @{ -//! \verbatim - - - // This must be linked @ 0x80000000 if it is to be run upon reset. - .section .reset, "ax", @progbits - - - .global _start - .type _start, @function -_start: - // Jump to the C runtime startup routine. - lda.w pc, _stext - - - // _stext is placed outside the .reset section so that the program entry point - // can be changed without affecting the C runtime startup. - .section .text._stext, "ax", @progbits - - - .global _stext - .type _stext, @function -_stext: - // Set initial stack pointer. - lda.w sp, _estack - - // Set up EVBA so interrupts can be enabled. - lda.w r0, _evba - mtsr AVR32_EVBA, r0 - - // Enable the exception processing. - csrf AVR32_SR_EM_OFFSET - - // Load initialized data having a global lifetime from the data LMA. - lda.w r0, _data - lda.w r1, _edata - cp r0, r1 - brhs idata_load_loop_end - lda.w r2, _data_lma -idata_load_loop: - ld.d r4, r2++ - st.d r0++, r4 - cp r0, r1 - brlo idata_load_loop -idata_load_loop_end: - - // Clear uninitialized data having a global lifetime in the blank static storage section. - lda.w r0, __bss_start - lda.w r1, _end - cp r0, r1 - brhs udata_clear_loop_end - mov r2, 0 - mov r3, 0 -udata_clear_loop: - st.d r0++, r2 - cp r0, r1 - brlo udata_clear_loop -udata_clear_loop_end: - -#ifdef CONFIG_FRAME_POINTER - // Safety: Set the default "return" @ to the exit routine address. - lda.w lr, exit -#endif - - // Start the show. - lda.w pc, main - - -//! \endverbatim -//! @} diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h deleted file mode 100644 index 885be7fb98a..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/compiler.h +++ /dev/null @@ -1,1145 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Compiler file for AVR32. - * - * This file defines commonly used types and macros. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _COMPILER_H_ -#define _COMPILER_H_ - -#if ((defined __GNUC__) && (defined __AVR32__)) || (defined __ICCAVR32__ || defined __AAVR32__) -# include -#endif -#if (defined __ICCAVR32__) -# include -#endif -#include "preprocessor.h" - -#include "parts.h" - - -//_____ D E C L A R A T I O N S ____________________________________________ - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -#include -#include - - -#if (defined __ICCAVR32__) - -/*! \name Compiler Keywords - * - * Port of some keywords from GNU GCC for AVR32 to IAR Embedded Workbench for Atmel AVR32. - */ -//! @{ -#define __asm__ asm -#define __inline__ inline -#define __volatile__ -//! @} - -#endif - - -/*! \name Usual Types - */ -//! @{ -typedef unsigned char Bool; //!< Boolean. -#ifndef __cplusplus -#if !defined(__bool_true_false_are_defined) -typedef unsigned char bool; //!< Boolean. -#endif -#endif -typedef signed char S8 ; //!< 8-bit signed integer. -typedef unsigned char U8 ; //!< 8-bit unsigned integer. -typedef signed short int S16; //!< 16-bit signed integer. -typedef unsigned short int U16; //!< 16-bit unsigned integer. -typedef signed long int S32; //!< 32-bit signed integer. -typedef unsigned long int U32; //!< 32-bit unsigned integer. -typedef signed long long int S64; //!< 64-bit signed integer. -typedef unsigned long long int U64; //!< 64-bit unsigned integer. -typedef float F32; //!< 32-bit floating-point number. -typedef double F64; //!< 64-bit floating-point number. -//! @} - - -/*! \name Status Types - */ -//! @{ -typedef Bool Status_bool_t; //!< Boolean status. -typedef U8 Status_t; //!< 8-bit-coded status. -//! @} - - -/*! \name Aliasing Aggregate Types - */ -//! @{ - -//! 16-bit union. -typedef union -{ - S16 s16 ; - U16 u16 ; - S8 s8 [2]; - U8 u8 [2]; -} Union16; - -//! 32-bit union. -typedef union -{ - S32 s32 ; - U32 u32 ; - S16 s16[2]; - U16 u16[2]; - S8 s8 [4]; - U8 u8 [4]; -} Union32; - -//! 64-bit union. -typedef union -{ - S64 s64 ; - U64 u64 ; - S32 s32[2]; - U32 u32[2]; - S16 s16[4]; - U16 u16[4]; - S8 s8 [8]; - U8 u8 [8]; -} Union64; - -//! Union of pointers to 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - S64 *s64ptr; - U64 *u64ptr; - S32 *s32ptr; - U32 *u32ptr; - S16 *s16ptr; - U16 *u16ptr; - S8 *s8ptr ; - U8 *u8ptr ; -} UnionPtr; - -//! Union of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - volatile S64 *s64ptr; - volatile U64 *u64ptr; - volatile S32 *s32ptr; - volatile U32 *u32ptr; - volatile S16 *s16ptr; - volatile U16 *u16ptr; - volatile S8 *s8ptr ; - volatile U8 *u8ptr ; -} UnionVPtr; - -//! Union of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - const S64 *s64ptr; - const U64 *u64ptr; - const S32 *s32ptr; - const U32 *u32ptr; - const S16 *s16ptr; - const U16 *u16ptr; - const S8 *s8ptr ; - const U8 *u8ptr ; -} UnionCPtr; - -//! Union of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef union -{ - const volatile S64 *s64ptr; - const volatile U64 *u64ptr; - const volatile S32 *s32ptr; - const volatile U32 *u32ptr; - const volatile S16 *s16ptr; - const volatile U16 *u16ptr; - const volatile S8 *s8ptr ; - const volatile U8 *u8ptr ; -} UnionCVPtr; - -//! Structure of pointers to 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - S64 *s64ptr; - U64 *u64ptr; - S32 *s32ptr; - U32 *u32ptr; - S16 *s16ptr; - U16 *u16ptr; - S8 *s8ptr ; - U8 *u8ptr ; -} StructPtr; - -//! Structure of pointers to volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - volatile S64 *s64ptr; - volatile U64 *u64ptr; - volatile S32 *s32ptr; - volatile U32 *u32ptr; - volatile S16 *s16ptr; - volatile U16 *u16ptr; - volatile S8 *s8ptr ; - volatile U8 *u8ptr ; -} StructVPtr; - -//! Structure of pointers to constant 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - const S64 *s64ptr; - const U64 *u64ptr; - const S32 *s32ptr; - const U32 *u32ptr; - const S16 *s16ptr; - const U16 *u16ptr; - const S8 *s8ptr ; - const U8 *u8ptr ; -} StructCPtr; - -//! Structure of pointers to constant volatile 64-, 32-, 16- and 8-bit unsigned integers. -typedef struct -{ - const volatile S64 *s64ptr; - const volatile U64 *u64ptr; - const volatile S32 *s32ptr; - const volatile U32 *u32ptr; - const volatile S16 *s16ptr; - const volatile U16 *u16ptr; - const volatile S8 *s8ptr ; - const volatile U8 *u8ptr ; -} StructCVPtr; - -//! @} - -#endif // __AVR32_ABI_COMPILER__ - - -//_____ M A C R O S ________________________________________________________ - -/*! \name Usual Constants - */ -//! @{ -#define DISABLE 0 -#define ENABLE 1 -#define DISABLED 0 -#define ENABLED 1 -#define OFF 0 -#define ON 1 -#define FALSE 0 -#define TRUE 1 -#ifndef __cplusplus -#if !defined(__bool_true_false_are_defined) -#define false FALSE -#define true TRUE -#endif -#endif -#define KO 0 -#define OK 1 -#define PASS 0 -#define FAIL 1 -#define LOW 0 -#define HIGH 1 -#define CLR 0 -#define SET 1 -//! @} - - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -/*! \name Bit-Field Handling - */ -//! @{ - -/*! \brief Reads the bits of a value specified by a given bit-mask. - * - * \param value Value to read bits from. - * \param mask Bit-mask indicating bits to read. - * - * \return Read bits. - */ -#define Rd_bits( value, mask) ((value) & (mask)) - -/*! \brief Writes the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue to write bits to. - * \param mask Bit-mask indicating bits to write. - * \param bits Bits to write. - * - * \return Resulting value with written bits. - */ -#define Wr_bits(lvalue, mask, bits) ((lvalue) = ((lvalue) & ~(mask)) |\ - ((bits ) & (mask))) - -/*! \brief Tests the bits of a value specified by a given bit-mask. - * - * \param value Value of which to test bits. - * \param mask Bit-mask indicating bits to test. - * - * \return \c 1 if at least one of the tested bits is set, else \c 0. - */ -#define Tst_bits( value, mask) (Rd_bits(value, mask) != 0) - -/*! \brief Clears the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to clear bits. - * \param mask Bit-mask indicating bits to clear. - * - * \return Resulting value with cleared bits. - */ -#define Clr_bits(lvalue, mask) ((lvalue) &= ~(mask)) - -/*! \brief Sets the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to set bits. - * \param mask Bit-mask indicating bits to set. - * - * \return Resulting value with set bits. - */ -#define Set_bits(lvalue, mask) ((lvalue) |= (mask)) - -/*! \brief Toggles the bits of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue of which to toggle bits. - * \param mask Bit-mask indicating bits to toggle. - * - * \return Resulting value with toggled bits. - */ -#define Tgl_bits(lvalue, mask) ((lvalue) ^= (mask)) - -/*! \brief Reads the bit-field of a value specified by a given bit-mask. - * - * \param value Value to read a bit-field from. - * \param mask Bit-mask indicating the bit-field to read. - * - * \return Read bit-field. - */ -#define Rd_bitfield( value, mask) (Rd_bits( value, mask) >> ctz(mask)) - -/*! \brief Writes the bit-field of a C lvalue specified by a given bit-mask. - * - * \param lvalue C lvalue to write a bit-field to. - * \param mask Bit-mask indicating the bit-field to write. - * \param bitfield Bit-field to write. - * - * \return Resulting value with written bit-field. - */ -#define Wr_bitfield(lvalue, mask, bitfield) (Wr_bits(lvalue, mask, (U32)(bitfield) << ctz(mask))) - -//! @} - - -/*! \brief This macro is used to test fatal errors. - * - * The macro tests if the expression is FALSE. If it is, a fatal error is - * detected and the application hangs up. - * - * \param expr Expression to evaluate and supposed to be nonzero. - */ -#ifdef _ASSERT_ENABLE_ - #define Assert(expr) \ - {\ - if (!(expr)) while (TRUE);\ - } -#else - #define Assert(expr) -#endif - - -/*! \name Zero-Bit Counting - * - * Under AVR32-GCC, __builtin_clz and __builtin_ctz behave like macros when - * applied to constant expressions (values known at compile time), so they are - * more optimized than the use of the corresponding assembly instructions and - * they can be used as constant expressions e.g. to initialize objects having - * static storage duration, and like the corresponding assembly instructions - * when applied to non-constant expressions (values unknown at compile time), so - * they are more optimized than an assembly periphrasis. Hence, clz and ctz - * ensure a possible and optimized behavior for both constant and non-constant - * expressions. - */ -//! @{ - -/*! \brief Counts the leading zero bits of the given value considered as a 32-bit integer. - * - * \param u Value of which to count the leading zero bits. - * - * \return The count of leading zero bits in \a u. - */ -#if (defined __GNUC__) - #define clz(u) __builtin_clz(u) -#elif (defined __ICCAVR32__) - #define clz(u) __count_leading_zeros(u) -#endif - -/*! \brief Counts the trailing zero bits of the given value considered as a 32-bit integer. - * - * \param u Value of which to count the trailing zero bits. - * - * \return The count of trailing zero bits in \a u. - */ -#if (defined __GNUC__) - #define ctz(u) __builtin_ctz(u) -#elif (defined __ICCAVR32__) - #define ctz(u) __count_trailing_zeros(u) -#endif - -//! @} - - -/*! \name Bit Reversing - */ -//! @{ - -/*! \brief Reverses the bits of \a u8. - * - * \param u8 U8 of which to reverse the bits. - * - * \return Value resulting from \a u8 with reversed bits. - */ -#define bit_reverse8(u8) ((U8)(bit_reverse32((U8)(u8)) >> 24)) - -/*! \brief Reverses the bits of \a u16. - * - * \param u16 U16 of which to reverse the bits. - * - * \return Value resulting from \a u16 with reversed bits. - */ -#define bit_reverse16(u16) ((U16)(bit_reverse32((U16)(u16)) >> 16)) - -/*! \brief Reverses the bits of \a u32. - * - * \param u32 U32 of which to reverse the bits. - * - * \return Value resulting from \a u32 with reversed bits. - */ -#if (defined __GNUC__) - #define bit_reverse32(u32) \ - (\ - {\ - unsigned int __value = (U32)(u32);\ - __asm__ ("brev\t%0" : "+r" (__value) : : "cc");\ - (U32)__value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define bit_reverse32(u32) ((U32)__bit_reverse((U32)(u32))) -#endif - -/*! \brief Reverses the bits of \a u64. - * - * \param u64 U64 of which to reverse the bits. - * - * \return Value resulting from \a u64 with reversed bits. - */ -#define bit_reverse64(u64) ((U64)(((U64)bit_reverse32((U64)(u64) >> 32)) |\ - ((U64)bit_reverse32((U64)(u64)) << 32))) - -//! @} - - -/*! \name Alignment - */ -//! @{ - -/*! \brief Tests alignment of the number \a val with the \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return \c 1 if the number \a val is aligned with the \a n boundary, else \c 0. - */ -#define Test_align(val, n ) (!Tst_bits( val, (n) - 1 ) ) - -/*! \brief Gets alignment of the number \a val with respect to the \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Alignment of the number \a val with respect to the \a n boundary. - */ -#define Get_align( val, n ) ( Rd_bits( val, (n) - 1 ) ) - -/*! \brief Sets alignment of the lvalue number \a lval to \a alg with respect to the \a n boundary. - * - * \param lval Input/output lvalue. - * \param n Boundary. - * \param alg Alignment. - * - * \return New value of \a lval resulting from its alignment set to \a alg with respect to the \a n boundary. - */ -#define Set_align(lval, n, alg) ( Wr_bits(lval, (n) - 1, alg) ) - -/*! \brief Aligns the number \a val with the upper \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Value resulting from the number \a val aligned with the upper \a n boundary. - */ -#define Align_up( val, n ) (((val) + ((n) - 1)) & ~((n) - 1)) - -/*! \brief Aligns the number \a val with the lower \a n boundary. - * - * \param val Input value. - * \param n Boundary. - * - * \return Value resulting from the number \a val aligned with the lower \a n boundary. - */ -#define Align_down(val, n ) ( (val) & ~((n) - 1)) - -//! @} - - -/*! \name Mathematics - * - * The same considerations as for clz and ctz apply here but AVR32-GCC does not - * provide built-in functions to access the assembly instructions abs, min and - * max and it does not produce them by itself in most cases, so two sets of - * macros are defined here: - * - Abs, Min and Max to apply to constant expressions (values known at - * compile time); - * - abs, min and max to apply to non-constant expressions (values unknown at - * compile time). - */ -//! @{ - -/*! \brief Takes the absolute value of \a a. - * - * \param a Input value. - * - * \return Absolute value of \a a. - * - * \note More optimized if only used with values known at compile time. - */ -#define Abs(a) (((a) < 0 ) ? -(a) : (a)) - -/*! \brief Takes the minimal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Minimal value of \a a and \a b. - * - * \note More optimized if only used with values known at compile time. - */ -#define Min(a, b) (((a) < (b)) ? (a) : (b)) - -/*! \brief Takes the maximal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Maximal value of \a a and \a b. - * - * \note More optimized if only used with values known at compile time. - */ -#define Max(a, b) (((a) > (b)) ? (a) : (b)) - -/*! \brief Takes the absolute value of \a a. - * - * \param a Input value. - * - * \return Absolute value of \a a. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define abs(a) \ - (\ - {\ - int __value = (a);\ - __asm__ ("abs\t%0" : "+r" (__value) : : "cc");\ - __value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define abs(a) Abs(a) -#endif - -/*! \brief Takes the minimal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Minimal value of \a a and \a b. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define min(a, b) \ - (\ - {\ - int __value, __arg_a = (a), __arg_b = (b);\ - __asm__ ("min\t%0, %1, %2" : "=r" (__value) : "r" (__arg_a), "r" (__arg_b));\ - __value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define min(a, b) __min(a, b) -#endif - -/*! \brief Takes the maximal value of \a a and \a b. - * - * \param a Input value. - * \param b Input value. - * - * \return Maximal value of \a a and \a b. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define max(a, b) \ - (\ - {\ - int __value, __arg_a = (a), __arg_b = (b);\ - __asm__ ("max\t%0, %1, %2" : "=r" (__value) : "r" (__arg_a), "r" (__arg_b));\ - __value;\ - }\ - ) -#elif (defined __ICCAVR32__) - #define max(a, b) __max(a, b) -#endif - -//! @} - - -/*! \brief Calls the routine at address \a addr. - * - * It generates a long call opcode. - * - * For example, `Long_call(0x80000000)' generates a software reset on a UC3 if - * it is invoked from the CPU supervisor mode. - * - * \param addr Address of the routine to call. - * - * \note It may be used as a long jump opcode in some special cases. - */ -#define Long_call(addr) ((*(void (*)(void))(addr))()) - -/*! \brief Resets the CPU by software. - * - * \warning It shall not be called from the CPU application mode. - */ -#if (defined __GNUC__) - #define Reset_CPU() \ - (\ - {\ - __asm__ __volatile__ (\ - "lddpc r9, 3f\n\t"\ - "mfsr r8, %[SR]\n\t"\ - "bfextu r8, r8, %[SR_M_OFFSET], %[SR_M_SIZE]\n\t"\ - "cp.w r8, 0b001\n\t"\ - "breq 0f\n\t"\ - "sub r8, pc, $ - 1f\n\t"\ - "pushm r8-r9\n\t"\ - "rete\n"\ - "0:\n\t"\ - "mtsr %[SR], r9\n"\ - "1:\n\t"\ - "mov r0, 0\n\t"\ - "mov r1, 0\n\t"\ - "mov r2, 0\n\t"\ - "mov r3, 0\n\t"\ - "mov r4, 0\n\t"\ - "mov r5, 0\n\t"\ - "mov r6, 0\n\t"\ - "mov r7, 0\n\t"\ - "mov r8, 0\n\t"\ - "mov r9, 0\n\t"\ - "mov r10, 0\n\t"\ - "mov r11, 0\n\t"\ - "mov r12, 0\n\t"\ - "mov sp, 0\n\t"\ - "stdsp sp[0], sp\n\t"\ - "ldmts sp, sp\n\t"\ - "mov lr, 0\n\t"\ - "lddpc pc, 2f\n\t"\ - ".balign 4\n"\ - "2:\n\t"\ - ".word _start\n"\ - "3:\n\t"\ - ".word %[RESET_SR]"\ - :\ - : [SR] "i" (AVR32_SR),\ - [SR_M_OFFSET] "i" (AVR32_SR_M_OFFSET),\ - [SR_M_SIZE] "i" (AVR32_SR_M_SIZE),\ - [RESET_SR] "i" (AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))\ - );\ - }\ - ) -#elif (defined __ICCAVR32__) - #define Reset_CPU() \ - {\ - extern void *volatile __program_start;\ - __asm__ __volatile__ (\ - "mov r7, LWRD(__program_start)\n\t"\ - "orh r7, HWRD(__program_start)\n\t"\ - "mov r9, LWRD("ASTRINGZ(AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))")\n\t"\ - "orh r9, HWRD("ASTRINGZ(AVR32_SR_GM_MASK | AVR32_SR_EM_MASK | (AVR32_SR_M_SUP << AVR32_SR_M_OFFSET))")\n\t"\ - "mfsr r8, "ASTRINGZ(AVR32_SR)"\n\t"\ - "bfextu r8, r8, "ASTRINGZ(AVR32_SR_M_OFFSET)", "ASTRINGZ(AVR32_SR_M_SIZE)"\n\t"\ - "cp.w r8, 001b\n\t"\ - "breq $ + 10\n\t"\ - "sub r8, pc, -12\n\t"\ - "pushm r8-r9\n\t"\ - "rete\n\t"\ - "mtsr "ASTRINGZ(AVR32_SR)", r9\n\t"\ - "mov r0, 0\n\t"\ - "mov r1, 0\n\t"\ - "mov r2, 0\n\t"\ - "mov r3, 0\n\t"\ - "mov r4, 0\n\t"\ - "mov r5, 0\n\t"\ - "mov r6, 0\n\t"\ - "st.w r0[4], r7\n\t"\ - "mov r7, 0\n\t"\ - "mov r8, 0\n\t"\ - "mov r9, 0\n\t"\ - "mov r10, 0\n\t"\ - "mov r11, 0\n\t"\ - "mov r12, 0\n\t"\ - "mov sp, 0\n\t"\ - "stdsp sp[0], sp\n\t"\ - "ldmts sp, sp\n\t"\ - "mov lr, 0\n\t"\ - "ld.w pc, lr[4]"\ - );\ - __program_start;\ - } -#endif - - -/*! \name System Register Access - */ -//! @{ - -/*! \brief Gets the value of the \a sysreg system register. - * - * \param sysreg Address of the system register of which to get the value. - * - * \return Value of the \a sysreg system register. - */ -#if (defined __GNUC__) - #define Get_system_register(sysreg) __builtin_mfsr(sysreg) -#elif (defined __ICCAVR32__) - #define Get_system_register(sysreg) __get_system_register(sysreg) -#endif - -/*! \brief Sets the value of the \a sysreg system register to \a value. - * - * \param sysreg Address of the system register of which to set the value. - * \param value Value to set the \a sysreg system register to. - */ -#if (defined __GNUC__) - #define Set_system_register(sysreg, value) __builtin_mtsr(sysreg, value) -#elif (defined __ICCAVR32__) - #define Set_system_register(sysreg, value) __set_system_register(sysreg, value) -#endif - -//! @} - - -/*! \name CPU Status Register Access - */ -//! @{ - -/*! \brief Tells whether exceptions are globally enabled. - * - * \return \c 1 if exceptions are globally enabled, else \c 0. - */ -#define Is_global_exception_enabled() (!Tst_bits(Get_system_register(AVR32_SR), AVR32_SR_EM_MASK)) - -/*! \brief Disables exceptions globally. - */ -#if (defined __GNUC__) - #define Disable_global_exception() ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (AVR32_SR_EM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Disable_global_exception() (__set_status_flag(AVR32_SR_EM_OFFSET)) -#endif - -/*! \brief Enables exceptions globally. - */ -#if (defined __GNUC__) - #define Enable_global_exception() ({__asm__ __volatile__ ("csrf\t%0" : : "i" (AVR32_SR_EM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Enable_global_exception() (__clear_status_flag(AVR32_SR_EM_OFFSET)) -#endif - -/*! \brief Tells whether interrupts are globally enabled. - * - * \return \c 1 if interrupts are globally enabled, else \c 0. - */ -#define Is_global_interrupt_enabled() (!Tst_bits(Get_system_register(AVR32_SR), AVR32_SR_GM_MASK)) - -/*! \brief Disables interrupts globally. - */ -#if (defined __GNUC__) - #define Disable_global_interrupt() ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (AVR32_SR_GM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Disable_global_interrupt() (__disable_interrupt()) -#endif - -/*! \brief Enables interrupts globally. - */ -#if (defined __GNUC__) - #define Enable_global_interrupt() ({__asm__ __volatile__ ("csrf\t%0" : : "i" (AVR32_SR_GM_OFFSET));}) -#elif (defined __ICCAVR32__) - #define Enable_global_interrupt() (__enable_interrupt()) -#endif - -/*! \brief Tells whether interrupt level \a int_level is enabled. - * - * \param int_level Interrupt level (0 to 3). - * - * \return \c 1 if interrupt level \a int_level is enabled, else \c 0. - */ -#define Is_interrupt_level_enabled(int_level) (!Tst_bits(Get_system_register(AVR32_SR), TPASTE3(AVR32_SR_I, int_level, M_MASK))) - -/*! \brief Disables interrupt level \a int_level. - * - * \param int_level Interrupt level to disable (0 to 3). - */ -#if (defined __GNUC__) - #define Disable_interrupt_level(int_level) ({__asm__ __volatile__ ("ssrf\t%0" : : "i" (TPASTE3(AVR32_SR_I, int_level, M_OFFSET)));}) -#elif (defined __ICCAVR32__) - #define Disable_interrupt_level(int_level) (__set_status_flag(TPASTE3(AVR32_SR_I, int_level, M_OFFSET))) -#endif - -/*! \brief Enables interrupt level \a int_level. - * - * \param int_level Interrupt level to enable (0 to 3). - */ -#if (defined __GNUC__) - #define Enable_interrupt_level(int_level) ({__asm__ __volatile__ ("csrf\t%0" : : "i" (TPASTE3(AVR32_SR_I, int_level, M_OFFSET)));}) -#elif (defined __ICCAVR32__) - #define Enable_interrupt_level(int_level) (__clear_status_flag(TPASTE3(AVR32_SR_I, int_level, M_OFFSET))) -#endif - -/*! \brief Protects subsequent code from interrupts. - */ -#define AVR32_ENTER_CRITICAL_REGION( ) \ - { \ - Bool global_interrupt_enabled = Is_global_interrupt_enabled(); \ - Disable_global_interrupt(); // Disable the appropriate interrupts. - -/*! \brief This macro must always be used in conjunction with AVR32_ENTER_CRITICAL_REGION - * so that interrupts are enabled again. - */ -#define AVR32_LEAVE_CRITICAL_REGION( ) \ - if (global_interrupt_enabled) Enable_global_interrupt(); \ - } - -//! @} - - -/*! \name Debug Register Access - */ -//! @{ - -/*! \brief Gets the value of the \a dbgreg debug register. - * - * \param dbgreg Address of the debug register of which to get the value. - * - * \return Value of the \a dbgreg debug register. - */ -#if (defined __GNUC__) - #define Get_debug_register(dbgreg) __builtin_mfdr(dbgreg) -#elif (defined __ICCAVR32__) - #define Get_debug_register(dbgreg) __get_debug_register(dbgreg) -#endif - -/*! \brief Sets the value of the \a dbgreg debug register to \a value. - * - * \param dbgreg Address of the debug register of which to set the value. - * \param value Value to set the \a dbgreg debug register to. - */ -#if (defined __GNUC__) - #define Set_debug_register(dbgreg, value) __builtin_mtdr(dbgreg, value) -#elif (defined __ICCAVR32__) - #define Set_debug_register(dbgreg, value) __set_debug_register(dbgreg, value) -#endif - -//! @} - -#endif // __AVR32_ABI_COMPILER__ - - -//! Boolean evaluating MCU little endianism. -#if ((defined __GNUC__) && (defined __AVR32__)) || ((defined __ICCAVR32__) || (defined __AAVR32__)) - #define LITTLE_ENDIAN_MCU FALSE -#else - #error If you are here, you should check what is exactly the processor you are using... - #define LITTLE_ENDIAN_MCU FALSE -#endif - -// Check that MCU endianism is correctly defined. -#ifndef LITTLE_ENDIAN_MCU - #error YOU MUST define the MCU endianism with LITTLE_ENDIAN_MCU: either FALSE or TRUE -#endif - -//! Boolean evaluating MCU big endianism. -#define BIG_ENDIAN_MCU (!LITTLE_ENDIAN_MCU) - - -#ifdef __AVR32_ABI_COMPILER__ // Automatically defined when compiling for AVR32, not when assembling. - -/*! \name MCU Endianism Handling - */ -//! @{ - -#if (LITTLE_ENDIAN_MCU==TRUE) - #define LSB(u16) (((U8 *)&(u16))[0]) //!< Least significant byte of \a u16. - #define MSB(u16) (((U8 *)&(u16))[1]) //!< Most significant byte of \a u16. - - #define LSH(u32) (((U16 *)&(u32))[0]) //!< Least significant half-word of \a u32. - #define MSH(u32) (((U16 *)&(u32))[1]) //!< Most significant half-word of \a u32. - #define LSB0W(u32) (((U8 *)&(u32))[0]) //!< Least significant byte of 1st rank of \a u32. - #define LSB1W(u32) (((U8 *)&(u32))[1]) //!< Least significant byte of 2nd rank of \a u32. - #define LSB2W(u32) (((U8 *)&(u32))[2]) //!< Least significant byte of 3rd rank of \a u32. - #define LSB3W(u32) (((U8 *)&(u32))[3]) //!< Least significant byte of 4th rank of \a u32. - #define MSB3W(u32) LSB0W(u32) //!< Most significant byte of 4th rank of \a u32. - #define MSB2W(u32) LSB1W(u32) //!< Most significant byte of 3rd rank of \a u32. - #define MSB1W(u32) LSB2W(u32) //!< Most significant byte of 2nd rank of \a u32. - #define MSB0W(u32) LSB3W(u32) //!< Most significant byte of 1st rank of \a u32. - - #define LSW(u64) (((U32 *)&(u64))[0]) //!< Least significant word of \a u64. - #define MSW(u64) (((U32 *)&(u64))[1]) //!< Most significant word of \a u64. - #define LSH0(u64) (((U16 *)&(u64))[0]) //!< Least significant half-word of 1st rank of \a u64. - #define LSH1(u64) (((U16 *)&(u64))[1]) //!< Least significant half-word of 2nd rank of \a u64. - #define LSH2(u64) (((U16 *)&(u64))[2]) //!< Least significant half-word of 3rd rank of \a u64. - #define LSH3(u64) (((U16 *)&(u64))[3]) //!< Least significant half-word of 4th rank of \a u64. - #define MSH3(u64) LSH0(u64) //!< Most significant half-word of 4th rank of \a u64. - #define MSH2(u64) LSH1(u64) //!< Most significant half-word of 3rd rank of \a u64. - #define MSH1(u64) LSH2(u64) //!< Most significant half-word of 2nd rank of \a u64. - #define MSH0(u64) LSH3(u64) //!< Most significant half-word of 1st rank of \a u64. - #define LSB0D(u64) (((U8 *)&(u64))[0]) //!< Least significant byte of 1st rank of \a u64. - #define LSB1D(u64) (((U8 *)&(u64))[1]) //!< Least significant byte of 2nd rank of \a u64. - #define LSB2D(u64) (((U8 *)&(u64))[2]) //!< Least significant byte of 3rd rank of \a u64. - #define LSB3D(u64) (((U8 *)&(u64))[3]) //!< Least significant byte of 4th rank of \a u64. - #define LSB4D(u64) (((U8 *)&(u64))[4]) //!< Least significant byte of 5th rank of \a u64. - #define LSB5D(u64) (((U8 *)&(u64))[5]) //!< Least significant byte of 6th rank of \a u64. - #define LSB6D(u64) (((U8 *)&(u64))[6]) //!< Least significant byte of 7th rank of \a u64. - #define LSB7D(u64) (((U8 *)&(u64))[7]) //!< Least significant byte of 8th rank of \a u64. - #define MSB7D(u64) LSB0D(u64) //!< Most significant byte of 8th rank of \a u64. - #define MSB6D(u64) LSB1D(u64) //!< Most significant byte of 7th rank of \a u64. - #define MSB5D(u64) LSB2D(u64) //!< Most significant byte of 6th rank of \a u64. - #define MSB4D(u64) LSB3D(u64) //!< Most significant byte of 5th rank of \a u64. - #define MSB3D(u64) LSB4D(u64) //!< Most significant byte of 4th rank of \a u64. - #define MSB2D(u64) LSB5D(u64) //!< Most significant byte of 3rd rank of \a u64. - #define MSB1D(u64) LSB6D(u64) //!< Most significant byte of 2nd rank of \a u64. - #define MSB0D(u64) LSB7D(u64) //!< Most significant byte of 1st rank of \a u64. - -#elif (BIG_ENDIAN_MCU==TRUE) - #define MSB(u16) (((U8 *)&(u16))[0]) //!< Most significant byte of \a u16. - #define LSB(u16) (((U8 *)&(u16))[1]) //!< Least significant byte of \a u16. - - #define MSH(u32) (((U16 *)&(u32))[0]) //!< Most significant half-word of \a u32. - #define LSH(u32) (((U16 *)&(u32))[1]) //!< Least significant half-word of \a u32. - #define MSB0W(u32) (((U8 *)&(u32))[0]) //!< Most significant byte of 1st rank of \a u32. - #define MSB1W(u32) (((U8 *)&(u32))[1]) //!< Most significant byte of 2nd rank of \a u32. - #define MSB2W(u32) (((U8 *)&(u32))[2]) //!< Most significant byte of 3rd rank of \a u32. - #define MSB3W(u32) (((U8 *)&(u32))[3]) //!< Most significant byte of 4th rank of \a u32. - #define LSB3W(u32) MSB0W(u32) //!< Least significant byte of 4th rank of \a u32. - #define LSB2W(u32) MSB1W(u32) //!< Least significant byte of 3rd rank of \a u32. - #define LSB1W(u32) MSB2W(u32) //!< Least significant byte of 2nd rank of \a u32. - #define LSB0W(u32) MSB3W(u32) //!< Least significant byte of 1st rank of \a u32. - - #define MSW(u64) (((U32 *)&(u64))[0]) //!< Most significant word of \a u64. - #define LSW(u64) (((U32 *)&(u64))[1]) //!< Least significant word of \a u64. - #define MSH0(u64) (((U16 *)&(u64))[0]) //!< Most significant half-word of 1st rank of \a u64. - #define MSH1(u64) (((U16 *)&(u64))[1]) //!< Most significant half-word of 2nd rank of \a u64. - #define MSH2(u64) (((U16 *)&(u64))[2]) //!< Most significant half-word of 3rd rank of \a u64. - #define MSH3(u64) (((U16 *)&(u64))[3]) //!< Most significant half-word of 4th rank of \a u64. - #define LSH3(u64) MSH0(u64) //!< Least significant half-word of 4th rank of \a u64. - #define LSH2(u64) MSH1(u64) //!< Least significant half-word of 3rd rank of \a u64. - #define LSH1(u64) MSH2(u64) //!< Least significant half-word of 2nd rank of \a u64. - #define LSH0(u64) MSH3(u64) //!< Least significant half-word of 1st rank of \a u64. - #define MSB0D(u64) (((U8 *)&(u64))[0]) //!< Most significant byte of 1st rank of \a u64. - #define MSB1D(u64) (((U8 *)&(u64))[1]) //!< Most significant byte of 2nd rank of \a u64. - #define MSB2D(u64) (((U8 *)&(u64))[2]) //!< Most significant byte of 3rd rank of \a u64. - #define MSB3D(u64) (((U8 *)&(u64))[3]) //!< Most significant byte of 4th rank of \a u64. - #define MSB4D(u64) (((U8 *)&(u64))[4]) //!< Most significant byte of 5th rank of \a u64. - #define MSB5D(u64) (((U8 *)&(u64))[5]) //!< Most significant byte of 6th rank of \a u64. - #define MSB6D(u64) (((U8 *)&(u64))[6]) //!< Most significant byte of 7th rank of \a u64. - #define MSB7D(u64) (((U8 *)&(u64))[7]) //!< Most significant byte of 8th rank of \a u64. - #define LSB7D(u64) MSB0D(u64) //!< Least significant byte of 8th rank of \a u64. - #define LSB6D(u64) MSB1D(u64) //!< Least significant byte of 7th rank of \a u64. - #define LSB5D(u64) MSB2D(u64) //!< Least significant byte of 6th rank of \a u64. - #define LSB4D(u64) MSB3D(u64) //!< Least significant byte of 5th rank of \a u64. - #define LSB3D(u64) MSB4D(u64) //!< Least significant byte of 4th rank of \a u64. - #define LSB2D(u64) MSB5D(u64) //!< Least significant byte of 3rd rank of \a u64. - #define LSB1D(u64) MSB6D(u64) //!< Least significant byte of 2nd rank of \a u64. - #define LSB0D(u64) MSB7D(u64) //!< Least significant byte of 1st rank of \a u64. - -#else - #error Unknown endianism. -#endif - -//! @} - - -/*! \name Endianism Conversion - * - * The same considerations as for clz and ctz apply here but AVR32-GCC's - * __builtin_bswap_16 and __builtin_bswap_32 do not behave like macros when - * applied to constant expressions, so two sets of macros are defined here: - * - Swap16, Swap32 and Swap64 to apply to constant expressions (values known - * at compile time); - * - swap16, swap32 and swap64 to apply to non-constant expressions (values - * unknown at compile time). - */ -//! @{ - -/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). - * - * \param u16 U16 of which to toggle the endianism. - * - * \return Value resulting from \a u16 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap16(u16) ((U16)(((U16)(u16) >> 8) |\ - ((U16)(u16) << 8))) - -/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). - * - * \param u32 U32 of which to toggle the endianism. - * - * \return Value resulting from \a u32 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap32(u32) ((U32)(((U32)Swap16((U32)(u32) >> 16)) |\ - ((U32)Swap16((U32)(u32)) << 16))) - -/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). - * - * \param u64 U64 of which to toggle the endianism. - * - * \return Value resulting from \a u64 with toggled endianism. - * - * \note More optimized if only used with values known at compile time. - */ -#define Swap64(u64) ((U64)(((U64)Swap32((U64)(u64) >> 32)) |\ - ((U64)Swap32((U64)(u64)) << 32))) - -/*! \brief Toggles the endianism of \a u16 (by swapping its bytes). - * - * \param u16 U16 of which to toggle the endianism. - * - * \return Value resulting from \a u16 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define swap16(u16) ((U16)__builtin_bswap_16((U16)(u16))) -#elif (defined __ICCAVR32__) - #define swap16(u16) ((U16)__swap_bytes_in_halfwords((U16)(u16))) -#endif - -/*! \brief Toggles the endianism of \a u32 (by swapping its bytes). - * - * \param u32 U32 of which to toggle the endianism. - * - * \return Value resulting from \a u32 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#if (defined __GNUC__) - #define swap32(u32) ((U32)__builtin_bswap_32((U32)(u32))) -#elif (defined __ICCAVR32__) - #define swap32(u32) ((U32)__swap_bytes((U32)(u32))) -#endif - -/*! \brief Toggles the endianism of \a u64 (by swapping its bytes). - * - * \param u64 U64 of which to toggle the endianism. - * - * \return Value resulting from \a u64 with toggled endianism. - * - * \note More optimized if only used with values unknown at compile time. - */ -#define swap64(u64) ((U64)(((U64)swap32((U64)(u64) >> 32)) |\ - ((U64)swap32((U64)(u64)) << 32))) - -//! @} - - -/*! \name Target Abstraction - */ -//! @{ - -#define _GLOBEXT_ extern //!< extern storage-class specifier. -#define _CONST_TYPE_ const //!< const type qualifier. -#define _MEM_TYPE_SLOW_ //!< Slow memory type. -#define _MEM_TYPE_MEDFAST_ //!< Fairly fast memory type. -#define _MEM_TYPE_FAST_ //!< Fast memory type. - -typedef U8 Byte; //!< 8-bit unsigned integer. - -#define memcmp_ram2ram memcmp //!< Target-specific memcmp of RAM to RAM. -#define memcmp_code2ram memcmp //!< Target-specific memcmp of RAM to NVRAM. -#define memcpy_ram2ram memcpy //!< Target-specific memcpy from RAM to RAM. -#define memcpy_code2ram memcpy //!< Target-specific memcpy from NVRAM to RAM. - -#define LSB0(u32) LSB0W(u32) //!< Least significant byte of 1st rank of \a u32. -#define LSB1(u32) LSB1W(u32) //!< Least significant byte of 2nd rank of \a u32. -#define LSB2(u32) LSB2W(u32) //!< Least significant byte of 3rd rank of \a u32. -#define LSB3(u32) LSB3W(u32) //!< Least significant byte of 4th rank of \a u32. -#define MSB3(u32) MSB3W(u32) //!< Most significant byte of 4th rank of \a u32. -#define MSB2(u32) MSB2W(u32) //!< Most significant byte of 3rd rank of \a u32. -#define MSB1(u32) MSB1W(u32) //!< Most significant byte of 2nd rank of \a u32. -#define MSB0(u32) MSB0W(u32) //!< Most significant byte of 1st rank of \a u32. - -//! @} - -#endif // __AVR32_ABI_COMPILER__ - - -#endif // _COMPILER_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h deleted file mode 100644 index ca516ee0020..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/conf_isp.h +++ /dev/null @@ -1,136 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ****************************************************************** - * - * \brief ISP configuration file. - * - * This file contains the possible external configuration of the ISP. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices with a USB module can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ***************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _CONF_ISP_H_ -#define _CONF_ISP_H_ - -#include -#include "compiler.h" - - -//_____ D E F I N I T I O N S ______________________________________________ - -#define PRODUCT_MANUFACTURER_ID 0x58 -#define PRODUCT_FAMILY_ID 0x20 - -#define ISP_VERSION 0x10 -#define ISP_ID0 0x00 -#define ISP_ID1 0x00 - -#define ISP_CFG1 (*(volatile U32 *)ISP_CFG1_ADDRESS) -#define ISP_CFG1_ADDRESS (AVR32_FLASHC_USER_PAGE_ADDRESS + ISP_CFG1_OFFSET) -#define ISP_CFG1_OFFSET 0x000001FC -#define ISP_CFG1_SIZE 4 - -#define ISP_CFG1_BOOT_KEY1 16 -#define ISP_CFG1_BOOT_KEY1_MASK 0xFFFF0000 -#define ISP_CFG1_BOOT_KEY1_OFFSET 16 -#define ISP_CFG1_BOOT_KEY1_SIZE 16 -#define ISP_CFG1_BOOT_KEY1_VALUE 0xE11E - -#define ISP_CFG1_FORCE 9 -#define ISP_CFG1_FORCE_MASK 0x00000200 -#define ISP_CFG1_FORCE_OFFSET 9 -#define ISP_CFG1_FORCE_SIZE 1 - -#define ISP_CFG1_IO_COND_EN 8 -#define ISP_CFG1_IO_COND_EN_MASK 0x00000100 -#define ISP_CFG1_IO_COND_EN_OFFSET 8 -#define ISP_CFG1_IO_COND_EN_SIZE 1 - -#define ISP_CFG1_CRC8 0 -#define ISP_CFG1_CRC8_MASK 0x000000FF -#define ISP_CFG1_CRC8_OFFSET 0 -#define ISP_CFG1_CRC8_SIZE 8 -#define ISP_CFG1_CRC8_POLYNOMIAL 0x107 - -#define ISP_CFG2 (*(volatile U32 *)ISP_CFG2_ADDRESS) -#define ISP_CFG2_ADDRESS (AVR32_FLASHC_USER_PAGE_ADDRESS + ISP_CFG2_OFFSET) -#define ISP_CFG2_OFFSET 0x000001F8 -#define ISP_CFG2_SIZE 4 - -#define ISP_CFG2_BOOT_KEY 17 -#define ISP_CFG2_BOOT_KEY_MASK 0xFFFE0000 -#define ISP_CFG2_BOOT_KEY_OFFSET 17 -#define ISP_CFG2_BOOT_KEY_SIZE 15 -#define ISP_CFG2_BOOT_KEY_VALUE 0x494F - -#define ISP_CFG2_IO_COND_LEVEL 16 -#define ISP_CFG2_IO_COND_LEVEL_MASK 0x00010000 -#define ISP_CFG2_IO_COND_LEVEL_OFFSET 16 -#define ISP_CFG2_IO_COND_LEVEL_SIZE 1 - -#define ISP_CFG2_IO_COND_PIN 8 -#define ISP_CFG2_IO_COND_PIN_MASK 0x0000FF00 -#define ISP_CFG2_IO_COND_PIN_OFFSET 8 -#define ISP_CFG2_IO_COND_PIN_SIZE 8 - -#define ISP_CFG2_CRC8 0 -#define ISP_CFG2_CRC8_MASK 0x000000FF -#define ISP_CFG2_CRC8_OFFSET 0 -#define ISP_CFG2_CRC8_SIZE 8 -#define ISP_CFG2_CRC8_POLYNOMIAL 0x107 - -#define ISP_KEY (*(volatile U32 *)ISP_KEY_ADDRESS) -#define ISP_KEY_ADDRESS (AVR32_SRAM_ADDRESS + ISP_KEY_OFFSET) -#define ISP_KEY_OFFSET 0x00000000 -#define ISP_KEY_SIZE 4 -#define ISP_KEY_VALUE ('I' << 24 | 'S' << 16 | 'P' << 8 | 'K') - -#ifndef ISP_OSC - #define ISP_OSC 0 -#endif - -#define DFU_FRAME_LENGTH 2048 - -#define PROGRAM_START_ADDRESS (AVR32_FLASH_ADDRESS + PROGRAM_START_OFFSET) -#define PROGRAM_START_OFFSET 0x00002000 - - -#endif // _CONF_ISP_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/parts.h b/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/parts.h deleted file mode 100644 index 6637b2f76e8..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/SOFTWARE_FRAMEWORK/UTILS/parts.h +++ /dev/null @@ -1,203 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*This file is prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief Arch file for AVR32. - * - * This file defines common AVR32 UC3 series. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - ******************************************************************************/ - -/* Copyright (c) 2009 Atmel Corporation. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of Atmel may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * 4. This software may only be redistributed and used in connection with an Atmel - * AVR product. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE - * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE - * - */ - -#ifndef _ARCH_H_ -#define _ARCH_H_ - -// UC3 A Series -#define UC3A0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3A0128__) || \ - defined (__AVR32_UC3A0256__) || \ - defined (__AVR32_UC3A0512__) || \ - defined (__AVR32_UC3A0512ES__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3A0128__) || \ - defined (__AT32UC3A0256__) || \ - defined (__AT32UC3A0512__) || \ - defined (__AT32UC3A0512ES__))) - -#define UC3A1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3A1128__) || \ - defined (__AVR32_UC3A1256__) || \ - defined (__AVR32_UC3A1512__) || \ - defined (__AVR32_UC3A1512ES__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3A1128__) || \ - defined (__AT32UC3A1256__) || \ - defined (__AT32UC3A1512__) || \ - defined (__AT32UC3A1512ES__))) - -#define UC3A3 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3A364__) || \ - defined (__AVR32_UC3A364S__) || \ - defined (__AVR32_UC3A3128__) || \ - defined (__AVR32_UC3A3128S__) || \ - defined (__AVR32_UC3A3256__) || \ - defined (__AVR32_UC3A3256S__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3A364__) || \ - defined (__AT32UC3A364S__) || \ - defined (__AT32UC3A3128__) || \ - defined (__AT32UC3A3128S__) || \ - defined (__AT32UC3A3256__) || \ - defined (__AT32UC3A3256S__))) - -#define UC3A (UC3A0 || UC3A1 || UC3A3) - -// UC3 B Series -#define UC3B0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3B064__) || \ - defined (__AVR32_UC3B0128__) || \ - defined (__AVR32_UC3B0256__) || \ - defined (__AVR32_UC3B0256ES__) || \ - defined (__AVR32_UC3B0512__) || \ - defined (__AVR32_UC3B0512REVC_))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3B064__) || \ - defined (__AT32UC3B0128__) || \ - defined (__AT32UC3B0256__) || \ - defined (__AT32UC3B0256ES__) || \ - defined (__AT32UC3B0512__) || \ - defined (__AT32UC3B0512REVC__))) - -#define UC3B1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3B164__) || \ - defined (__AVR32_UC3B1128__) || \ - defined (__AVR32_UC3B1256__) || \ - defined (__AVR32_UC3B1256ES__) || \ - defined (__AVR32_UC3B1512__) || \ - defined (__AVR32_UC3B1512ES__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3B164__) || \ - defined (__AT32UC3B1128__) || \ - defined (__AT32UC3B1256__) || \ - defined (__AT32UC3B1256ES__) || \ - defined (__AT32UC3B1512__) || \ - defined (__AT32UC3B1512REVC__))) - -#define UC3B (UC3B0 || UC3B1 ) - -// UC3 C Series -#define UC3C0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3C064C__) || \ - defined (__AVR32_UC3C0128C__) || \ - defined (__AVR32_UC3C0256C__) || \ - defined (__AVR32_UC3C0512CREVC__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3C064C__) || \ - defined (__AT32UC3C0128C__) || \ - defined (__AT32UC3C0256C__) || \ - defined (__AT32UC3C0512C__))) - -#define UC3C1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3C164C__) || \ - defined (__AVR32_UC3C1128C__) || \ - defined (__AVR32_UC3C1256C__) || \ - defined (__AVR32_UC3C1512CREVC__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3C164C__) || \ - defined (__AT32UC3C1128C__) || \ - defined (__AT32UC3C1256C__) || \ - defined (__AT32UC3C1512C__))) - -#define UC3C2 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3C264C__) || \ - defined (__AVR32_UC3C2128C__) || \ - defined (__AVR32_UC3C2256C__) || \ - defined (__AVR32_UC3C2512CREVC__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3C264C__) || \ - defined (__AT32UC3C2128C__) || \ - defined (__AT32UC3C2256C__) || \ - defined (__AT32UC3C2512C__))) - -#define UC3C (UC3C0 || UC3C1 || UC3C2) - -// UC3 L Device series -#define UC3L0 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L016__) || \ - defined (__AVR32_UC3L032__) || \ - defined (__AVR32_UC3L064__) || \ - defined (__AVR32_UC3L064REVB__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L016__) || \ - defined (__AT32UC3L032__) || \ - defined (__AT32UC3L064__) || \ - defined (__AT32UC3L064REVB__))) - -#define UC3L1 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L116__) || \ - defined (__AVR32_UC3L132__) || \ - defined (__AVR32_UC3L164__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L116__) || \ - defined (__AT32UC3L132__) || \ - defined (__AT32UC3L164__))) - -#define UC3L2 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L216__) || \ - defined (__AVR32_UC3L232__) || \ - defined (__AVR32_UC3L264__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L216__) || \ - defined (__AT32UC3L232__) || \ - defined (__AT32UC3L264__))) - -#define UC3L3 ( defined (__GNUC__) && \ - ( defined (__AVR32_UC3L316__) || \ - defined (__AVR32_UC3L332__) || \ - defined (__AVR32_UC3L364__))) \ - ||((defined(__ICCAVR32__) || defined(__AAVR32__)) && \ - ( defined (__AT32UC3L316__) || \ - defined (__AT32UC3L332__) || \ - defined (__AT32UC3L364__))) - -#define UC3L (UC3L0 || UC3L1 || UC3L2 || UC3L3) - -#endif // _ARCH_H_ diff --git a/libraries/WiFi/extras/wifi_dnld/src/clocks.c b/libraries/WiFi/extras/wifi_dnld/src/clocks.c deleted file mode 100644 index cdd07fabe16..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/clocks.c +++ /dev/null @@ -1,101 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - - -#include -#include "board.h" -#include "clocks.h" -#include "pm.h" -#include "flashc.h" -#include "gpio.h" - -/** - * Initializes the MCU system clocks. - */ -void -init_sys_clocks(void) -{ - /* switch to OSC0 to speed up the booting */ - pm_switch_to_osc0(&AVR32_PM, FOSC0, OSC0_STARTUP); - -#ifndef USE_PLL - return; -#endif - - /* For audio, ee have to use OSC1 on to generate the correct clockrate - * for the SSC - */ -#if OSC == 1 - /* start oscillator1 */ - pm_enable_osc1_crystal(&AVR32_PM, FOSC1); - pm_enable_clk1(&AVR32_PM, OSC1_STARTUP); -#endif - - /* configure pll multipliers */ - pm_pll_setup(&AVR32_PM, - 0, /* pll */ - PLL_MUL, /* mul */ - 1, /* div */ - OSC, /* osc */ - 16); /* lockcount */ - - /* set PLL operating range and divider (fpll = fvco/2) - * this gives PLL output = 66 MHz (62.0928 MHz for EVK1105/OSC1) - */ - pm_pll_set_option(&AVR32_PM, - 0, /* pll */ - 1, /* pll_freq */ - 1, /* pll_div2 */ - 0); /* pll_wbwdisable. */ - - - /* start PLL0 and wait for the lock */ - pm_pll_enable(&AVR32_PM, 0); - pm_wait_for_pll0_locked(&AVR32_PM); - - /* Set all peripheral clocks torun at master clock rate */ - pm_cksel(&AVR32_PM, - 0, /* pbadiv */ - 0, /* pbasel */ - 0, /* pbbdiv */ - 0, /* pbbsel */ - 0, /* hsbdiv */ - 0); /* hsbsel */ - - /* Set one waitstate for the flash */ - flashc_set_wait_state(1); - - /* Switch to PLL0 as the master clock */ - pm_switch_to_clock(&AVR32_PM, AVR32_PM_MCCTRL_MCSEL_PLL0); - -#if OSC == 1 - pm_configure_usb_clock(); -#endif -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/clocks.h b/libraries/WiFi/extras/wifi_dnld/src/clocks.h deleted file mode 100644 index cceda290349..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/clocks.h +++ /dev/null @@ -1,78 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -#ifndef CLOCKS_H -#define CLOCKS_H - -#include "board.h" - - -#if BOARD == EVK1100 -# define USE_PLL -# define OSC 0 -# define PLL_MUL 10 -#elif BOARD == EVK1101 -# define USE_PLL -# define OSC 0 -# define PLL_MUL 9 -#elif BOARD == EVK1104 -# define USE_PLL -# define OSC 0 -# define PLL_MUL 9 /* for some reason we cant use 66 MHz */ -#elif BOARD == EVK1105 -# define USE_PLL -# define OSC 1 -# define PLL_MUL 10 -#elif BOARD == ARDUINO -# define USE_PLL -# define OSC 0 -# define PLL_MUL 8 -#endif - -#if OSC == 0 -# define FOSC FOSC0 /* 12 MHz */ -#else -# define FOSC FOSC1 /* 11.2896 MHz */ -#endif - -#ifdef USE_PLL -# define FMCK_HZ ((FOSC * (PLL_MUL + 1)) / 2) -#else -# define FMCK_HZ FOSC -#endif - -#define FCPU_HZ FMCK_HZ -#define FHSB_HZ FCPU_HZ -#define FPBB_HZ FMCK_HZ -#define FPBA_HZ FMCK_HZ - -void init_sys_clocks(void); - -#endif diff --git a/libraries/WiFi/extras/wifi_dnld/src/flash_fw.c b/libraries/WiFi/extras/wifi_dnld/src/flash_fw.c deleted file mode 100644 index 75d35f6bf42..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/flash_fw.c +++ /dev/null @@ -1,125 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include - -#include "printf-stdarg.h" -#include "wl_fw.h" -#include "startup.h" -#include "nor_flash.h" -#include "gpio.h" - -#define GREEN_OFF() gpio_set_gpio_pin(LED0_GPIO) -#define GREEN_ON() gpio_clr_gpio_pin(LED0_GPIO) -#define GREEN_BLINK() gpio_tgl_gpio_pin(LED0_GPIO) -#define RED_OFF() gpio_set_gpio_pin(LED1_GPIO) -#define RED_ON() gpio_clr_gpio_pin(LED1_GPIO) -#define RED_BLINK() gpio_tgl_gpio_pin(LED1_GPIO) -#define BLUE_OFF() gpio_set_gpio_pin(LED2_GPIO) -#define BLUE_ON() gpio_clr_gpio_pin(LED2_GPIO) -#define BLUE_BLINK() gpio_tgl_gpio_pin(LED2_GPIO) - - -/** - * - */ -void -led_init(void) -{ - gpio_enable_gpio_pin(LED0_GPIO); - gpio_enable_gpio_pin(LED1_GPIO); - gpio_enable_gpio_pin(LED2_GPIO); - GREEN_OFF(); - RED_OFF(); - BLUE_OFF(); -} - - -int main(void) -{ - U32 pos, len; - - startup_init(); - printk("*** HD chip firmware upgrade ver 2.7 ***\n"); - led_init(); - flash_init(); - GREEN_ON(); - if (at45dbx_mem_check() == OK) - { - printk("Memory check... [ OK ]\n"); - } - else - { - RED_ON(); - GREEN_OFF(); - printk("Memory check... [FAIL]\n"); - return 0; - } - printk("Writing firmware data to flash\n"); - pos = 0; - while (pos < fw_len) { - if (fw_len - pos > SECTOR_SIZE) - len = SECTOR_SIZE; - else - len = fw_len - pos; - - flash_write(pos, fw_buf + pos, len); - pos += len; - } - - printk("Verifying firmware data\n"); - pos = 0; - while (pos < fw_len) { - static U8 page_buf[SECTOR_SIZE]; - U32 i; - - if (fw_len - pos > SECTOR_SIZE) - len = SECTOR_SIZE; - else - len = fw_len - pos; - - flash_read(pos, page_buf, len); - - for (i = 0; i < len; i++) - if (*(page_buf + i) != *(fw_buf + pos + i)) { - RED_ON(); - GREEN_OFF(); - printk("Verify failed at byte %d, 0x%02x != 0x%02x\n", - pos + i, *(page_buf + i), *(fw_buf + pos + i)); - return 0; - } - - - pos += len; - } - GREEN_OFF(); - BLUE_ON(); - printk("Firmware successfully stored in flash!\n"); - return 0; -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/license.txt b/libraries/WiFi/extras/wifi_dnld/src/license.txt deleted file mode 100644 index e57439f3731..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/license.txt +++ /dev/null @@ -1,42 +0,0 @@ - Copyright (C) 2009, H&D Wireless AB All rights reserved. - - The license to use this software in whole and in part and to - redistribute it in any form follows with the WiFi HW module from H&D - Wireless and is granted under the following restrictions: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. The name of H&D Wireless AB may not be used to endorse or promote - products derived from this software without specific prior written - permission. - - 4. The software may only be used together with hardware from H&D - Wireless all other use is prohibited. - - 5. The license to use and redistribute the software is granted - together with the purchase of a hardware platform on a one to one - basis - - 6. The binary code may not be reversed engineered or by other means - copied to circumvent this license. - - THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT - SHALL HD WIRELESS AB BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - OF THE POSSIBILITY OF SUCH DAMAGE. - - For more information regarding this software license Contact H&D - Wireless AB (support@hd-wireless.se). diff --git a/libraries/WiFi/extras/wifi_dnld/src/nor_flash.c b/libraries/WiFi/extras/wifi_dnld/src/nor_flash.c deleted file mode 100644 index 011594923e8..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/nor_flash.c +++ /dev/null @@ -1,99 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include -#include "compiler.h" -#include "preprocessor.h" -#include "board.h" -#include "power_clocks_lib.h" -#include "gpio.h" -#include "spi.h" -#include "conf_at45dbx.h" -#include "at45dbx.h" -#include "clocks.h" - - -void flash_init(void) -{ - static const gpio_map_t AT45DBX_SPI_GPIO_MAP = { - { AT45DBX_SPI_SCK_PIN, AT45DBX_SPI_SCK_FUNCTION }, - { AT45DBX_SPI_MISO_PIN, AT45DBX_SPI_MISO_FUNCTION }, - { AT45DBX_SPI_MOSI_PIN, AT45DBX_SPI_MOSI_FUNCTION }, - { AT45DBX_SPI_NPCS2_PIN, AT45DBX_SPI_NPCS2_FUNCTION }, - }; - - spi_options_t spiOptions = { - .reg = AT45DBX_SPI_FIRST_NPCS, - .baudrate = AT45DBX_SPI_MASTER_SPEED, - .bits = AT45DBX_SPI_BITS, - .spck_delay = 0, - .trans_delay = 0, - .stay_act = 1, - .spi_mode = 0, - .modfdis = 1 - }; - - gpio_enable_module(AT45DBX_SPI_GPIO_MAP, - sizeof(AT45DBX_SPI_GPIO_MAP) / - sizeof(AT45DBX_SPI_GPIO_MAP[0])); - - spi_initMaster(AT45DBX_SPI, &spiOptions); - - spi_selectionMode(AT45DBX_SPI, 0, 0, 0); - spi_enable(AT45DBX_SPI); - - /* put up flash reset pin */ - gpio_set_gpio_pin(AT45DBX_CHIP_RESET); - - at45dbx_init(spiOptions, FPBA_HZ); -} - -void flash_write(U32 addr, const U8* buf, U32 len) -{ - U32 sector = addr / AT45DBX_SECTOR_SIZE; - U32 i; - Assert(addr % AT45DBX_SECTOR_SIZE == 0); - - at45dbx_write_open(sector); - for (i = 0; i < len; i++) - at45dbx_write_byte(buf[i]); - at45dbx_write_close(); -} - -void flash_read(U32 addr, U8* buf, U32 len) -{ - U32 sector = addr / AT45DBX_SECTOR_SIZE; - U32 i; - Assert(addr % AT45DBX_SECTOR_SIZE == 0); - - at45dbx_read_open(sector); - for (i = 0; i < len; i++) - buf[i] = at45dbx_read_byte(); - at45dbx_read_close(); -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/nor_flash.h b/libraries/WiFi/extras/wifi_dnld/src/nor_flash.h deleted file mode 100644 index 52a4a200a9f..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/nor_flash.h +++ /dev/null @@ -1,41 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef NOR_FLASH_H -#define NOR_FLASH_H - -#include "at45dbx.h" - -#define SECTOR_SIZE AT45DBX_SECTOR_SIZE - -void flash_init(void); -void flash_write(U32 addr, const U8* buf, U32 len); -void flash_read(U32 addr, U8* buf, U32 len); - -#endif diff --git a/libraries/WiFi/extras/wifi_dnld/src/printf-stdarg.c b/libraries/WiFi/extras/wifi_dnld/src/printf-stdarg.c deleted file mode 100644 index 86ab88e095c..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/printf-stdarg.c +++ /dev/null @@ -1,323 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/* This source file is part of the ATMEL AVR32-SoftwareFramework-AT32UC3A-1.4.0 Release */ - -/*This file has been prepared for Doxygen automatic documentation generation.*/ -/*! \file ********************************************************************* - * - * \brief sprintf functions to replace newlib for AVR32 UC3. - * - * - Compiler: IAR EWAVR32 and GNU GCC for AVR32 - * - Supported devices: All AVR32 devices can be used. - * - AppNote: - * - * \author Atmel Corporation: http://www.atmel.com \n - * Support and FAQ: http://support.atmel.no/ - * - *****************************************************************************/ - -/* Copyright (C) 2006-2008, Atmel Corporation All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of ATMEL may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY ATMEL ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - Copyright 2001, 2002 Georges Menie (www.menie.org) - stdarg version contributed by Christian Ettinger - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2 of the License, 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 Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* - putchar is the only external dependency for this file, - if you have a working putchar, leave it commented out. - If not, uncomment the define below and - replace outbyte(c) by your own function call. - -*/ - - -#include -#include - -#define putchar(c) print_dbg_char(c) - -static void printchar(char **str, int c) -{ - extern int putchar(int c); - - if (str) { - **str = c; - ++(*str); - } - else (void)putchar(c); -} - -#define PAD_RIGHT 1 -#define PAD_ZERO 2 - -static int prints(char **out, const char *string, int width, int pad) -{ - register int pc = 0, padchar = ' '; - - if (width > 0) { - register int len = 0; - register const char *ptr; - for (ptr = string; *ptr; ++ptr) ++len; - if (len >= width) width = 0; - else width -= len; - if (pad & PAD_ZERO) padchar = '0'; - } - if (!(pad & PAD_RIGHT)) { - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - } - for ( ; *string ; ++string) { - printchar (out, *string); - ++pc; - } - for ( ; width > 0; --width) { - printchar (out, padchar); - ++pc; - } - - return pc; -} - -/* the following should be enough for 32 bit int */ -#define PRINT_BUF_LEN 12 - -static int printi(char **out, int i, int b, int sg, int width, int pad, int letbase) -{ - char print_buf[PRINT_BUF_LEN]; - register char *s; - register int t, neg = 0, pc = 0; - register unsigned int u = i; - - if (i == 0) { - print_buf[0] = '0'; - print_buf[1] = '\0'; - return prints (out, print_buf, width, pad); - } - - if (sg && b == 10 && i < 0) { - neg = 1; - u = -i; - } - - s = print_buf + PRINT_BUF_LEN-1; - *s = '\0'; - - while (u) { - t = u % b; - if( t >= 10 ) - t += letbase - '0' - 10; - *--s = t + '0'; - u /= b; - } - - if (neg) { - if( width && (pad & PAD_ZERO) ) { - printchar (out, '-'); - ++pc; - --width; - } - else { - *--s = '-'; - } - } - - return pc + prints (out, s, width, pad); -} - -int fprintf(__FILE *stream, const char *format, ...) -{ -return 0; -} -int printk_va(char **out, const char *format, va_list args ) -{ - register int width, pad; - register int pc = 0; - char scr[2]; - - for (; *format != 0; ++format) { - if (*format == '%') { - ++format; - width = pad = 0; - if (*format == '\0') break; - if (*format == '%') goto out; - if (*format == '-') { - ++format; - pad = PAD_RIGHT; - } - while (*format == '0') { - ++format; - pad |= PAD_ZERO; - } - for ( ; *format >= '0' && *format <= '9'; ++format) { - width *= 10; - width += *format - '0'; - } - if( *format == 's' ) { - register char *s = (char *)va_arg( args, int ); - pc += prints (out, s?s:"(null)", width, pad); - continue; - } - if( *format == 'd' ) { - pc += printi (out, va_arg( args, int ), 10, 1, width, pad, 'a'); - continue; - } - if( *format == 'p' ) { - pad = 8; - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'x' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'a'); - continue; - } - if( *format == 'X' ) { - pc += printi (out, va_arg( args, int ), 16, 0, width, pad, 'A'); - continue; - } - if( *format == 'u' ) { - pc += printi (out, va_arg( args, int ), 10, 0, width, pad, 'a'); - continue; - } - if( *format == 'c' ) { - /* char are converted to int then pushed on the stack */ - scr[0] = (char)va_arg( args, int ); - scr[1] = '\0'; - pc += prints (out, scr, width, pad); - continue; - } - } - else { - out: - printchar (out, *format); - ++pc; - } - } - if (out) **out = '\0'; - va_end( args ); - return pc; -} - -int printk(const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return printk_va( 0, format, args ); -} - -int sprintf(char *out, const char *format, ...) -{ - va_list args; - - va_start( args, format ); - return printk_va( &out, format, args ); -} - -#ifdef TEST_PRINTF -int main(void) -{ - char *ptr = "Hello world!"; - char *np = 0; - int i = 5; - unsigned int bs = sizeof(int)*8; - int mi; - char buf[80]; - - mi = (1 << (bs-1)) + 1; - printf("%s\n", ptr); - printf("printf test\n"); - printf("%s is null pointer\n", np); - printf("%d = 5\n", i); - printf("%d = - max int\n", mi); - printf("char %c = 'a'\n", 'a'); - printf("hex %x = ff\n", 0xff); - printf("hex %02x = 00\n", 0); - printf("signed %d = unsigned %u = hex %x\n", -3, -3, -3); - printf("%d %s(s)%", 0, "message"); - printf("\n"); - printf("%d %s(s) with %%\n", 0, "message"); - sprintf(buf, "justif: \"%-10s\"\n", "left"); printf("%s", buf); - sprintf(buf, "justif: \"%10s\"\n", "right"); printf("%s", buf); - sprintf(buf, " 3: %04d zero padded\n", 3); printf("%s", buf); - sprintf(buf, " 3: %-4d left justif.\n", 3); printf("%s", buf); - sprintf(buf, " 3: %4d right justif.\n", 3); printf("%s", buf); - sprintf(buf, "-3: %04d zero padded\n", -3); printf("%s", buf); - sprintf(buf, "-3: %-4d left justif.\n", -3); printf("%s", buf); - sprintf(buf, "-3: %4d right justif.\n", -3); printf("%s", buf); - - return 0; -} - -/* - * if you compile this file with - * gcc -Wall $(YOUR_C_OPTIONS) -DTEST_PRINTF -c printf.c - * you will get a normal warning: - * printf.c:214: warning: spurious trailing `%' in format - * this line is testing an invalid % at the end of the format string. - * - * this should display (on 32bit int machine) : - * - * Hello world! - * printf test - * (null) is null pointer - * 5 = 5 - * -2147483647 = - max int - * char a = 'a' - * hex ff = ff - * hex 00 = 00 - * signed -3 = unsigned 4294967293 = hex fffffffd - * 0 message(s) - * 0 message(s) with % - * justif: "left " - * justif: " right" - * 3: 0003 zero padded - * 3: 3 left justif. - * 3: 3 right justif. - * -3: -003 zero padded - * -3: -3 left justif. - * -3: -3 right justif. - */ - -#endif diff --git a/libraries/WiFi/extras/wifi_dnld/src/printf-stdarg.h b/libraries/WiFi/extras/wifi_dnld/src/printf-stdarg.h deleted file mode 100644 index f6bd66476aa..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/printf-stdarg.h +++ /dev/null @@ -1,36 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef PRINTF_STDARG_H -#define PRINTF_STDARG_H -#include - -int printk(const char *format, ...); -int printk_va(char **out, const char *format, va_list args ); -#endif diff --git a/libraries/WiFi/extras/wifi_dnld/src/startup.c b/libraries/WiFi/extras/wifi_dnld/src/startup.c deleted file mode 100644 index fa2a8c01e4b..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/startup.c +++ /dev/null @@ -1,75 +0,0 @@ -/* This source file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#include "startup.h" -#include "pm.h" -#include "intc.h" -#include "board.h" -#include "print_funcs.h" -#include "clocks.h" - - -static void init_exceptions(void) -{ - extern void _evba; - Set_system_register(AVR32_EVBA, (int)&_evba); - Enable_global_exception(); -} - -static void init_hmatrix(void) -{ - union { - unsigned long scfg; - avr32_hmatrix_scfg_t SCFG; - } u_avr32_hmatrix_scfg = { - AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH] - }; - u_avr32_hmatrix_scfg.SCFG.defmstr_type = - AVR32_HMATRIX_DEFMSTR_TYPE_LAST_DEFAULT; - AVR32_HMATRIX.scfg[AVR32_HMATRIX_SLAVE_FLASH] = - u_avr32_hmatrix_scfg.scfg; -} - -static void init_interrupts(void) -{ - INTC_init_interrupts(); - - //initExtInt(); - - Enable_global_interrupt(); -} - -void startup_init(void) -{ - init_exceptions(); - init_hmatrix(); - init_sys_clocks(); - init_interrupts(); - init_dbg_rs232(FPBA_HZ); -} diff --git a/libraries/WiFi/extras/wifi_dnld/src/startup.h b/libraries/WiFi/extras/wifi_dnld/src/startup.h deleted file mode 100644 index a9adc60baf6..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/startup.h +++ /dev/null @@ -1,35 +0,0 @@ -/* This header file is part of the ATMEL AVR-UC3-SoftwareFramework-1.7.0 Release */ - -/*! \page License - * Copyright (C) 2009, H&D Wireless AB All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. The name of H&D Wireless AB may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY H&D WIRELESS AB ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY AND - * SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -#ifndef STARTUP_H -#define STARTUP_H - -void startup_init(void); - -#endif diff --git a/libraries/WiFi/extras/wifi_dnld/src/wl_fw.h b/libraries/WiFi/extras/wifi_dnld/src/wl_fw.h deleted file mode 100644 index 5be5f376263..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/src/wl_fw.h +++ /dev/null @@ -1,19287 +0,0 @@ -/* - * Programming interface for wl_api. - * Copyright (C) 2010 HD Wireless AB - * - * You should have received a copy of the license along with this library. - */ - -#ifndef WITHOUT_STDINT -#include -#endif -const uint8_t fw_buf[154188] = { - 0x10, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0x10, 0x61, 0x04, 0x00, - 0x38, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x20, 0x61, 0x04, 0x00, - 0x30, 0x61, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x30, 0x61, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x10, 0x61, 0x04, 0x00, - 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0xee, - 0xee, 0xee, 0x18, 0xf0, 0x9f, 0xe5, 0x18, 0xf0, - 0x9f, 0xe5, 0x18, 0xf0, 0x9f, 0xe5, 0x18, 0xf0, - 0x9f, 0xe5, 0x00, 0x00, 0xa0, 0xe1, 0x18, 0xf0, - 0x9f, 0xe5, 0x18, 0xf0, 0x9f, 0xe5, 0x44, 0x00, - 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0xb4, 0x08, - 0x00, 0x00, 0xb4, 0x08, 0x00, 0x00, 0xb4, 0x08, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe4, 0x08, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0f, 0xe1, 0x1f, 0x00, 0xc0, 0xe3, - 0x13, 0x00, 0x80, 0xe3, 0xc0, 0x00, 0x80, 0xe3, - 0x00, 0xf0, 0x2f, 0xe1, 0x1c, 0xf0, 0x9f, 0xe5, - 0x3d, 0x02, 0x00, 0xeb, 0x5a, 0x02, 0x00, 0xeb, - 0x8d, 0x02, 0x00, 0xeb, 0x01, 0x00, 0x8f, 0xe2, - 0x10, 0xff, 0x2f, 0xe1, 0x41, 0xf0, 0xde, 0xfb, - 0x01, 0xf0, 0xdc, 0xfd, 0x3c, 0x00, 0x78, 0x00, - 0x00, 0x00, 0xfe, 0xe7, 0x00, 0x00, 0x5c, 0x00, - 0x00, 0x00, 0x78, 0x47, 0xc0, 0x46, 0x01, 0x00, - 0x00, 0xea, 0x78, 0x47, 0xc0, 0x46, 0x17, 0x00, - 0x00, 0xea, 0x8c, 0x11, 0x9f, 0xe5, 0x00, 0x20, - 0x91, 0xe5, 0x00, 0x30, 0x0f, 0xe1, 0x84, 0x11, - 0x9f, 0xe5, 0xfd, 0x20, 0xa1, 0xe8, 0x80, 0x01, - 0x9f, 0xe5, 0x80, 0x21, 0x9f, 0xe5, 0x01, 0x20, - 0x42, 0xe0, 0x0d, 0x00, 0x40, 0xe0, 0x3c, 0x00, - 0xb4, 0x00, 0x00, 0x00, 0x02, 0x00, 0x50, 0xe1, - 0x28, 0x00, 0x00, 0xaa, 0x68, 0x01, 0x9f, 0xe5, - 0x0d, 0x00, 0x50, 0xe1, 0x02, 0x00, 0x00, 0xba, - 0x04, 0x20, 0x10, 0xe4, 0x04, 0x20, 0x81, 0xe4, - 0xfa, 0xff, 0xff, 0xea, 0x58, 0x11, 0x9f, 0xe5, - 0x58, 0x01, 0x9f, 0xe5, 0x00, 0x00, 0x81, 0xe5, - 0x3c, 0x11, 0x9f, 0xe5, 0x50, 0x01, 0x9f, 0xe5, - 0x00, 0x00, 0x81, 0xe5, 0x1e, 0xff, 0x2f, 0xe1, - 0x3c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x48, 0x11, - 0x9f, 0xe5, 0x00, 0x00, 0x91, 0xe5, 0x24, 0x11, - 0x9f, 0xe5, 0x00, 0x00, 0x81, 0xe5, 0x2c, 0x11, - 0x9f, 0xe5, 0x38, 0x01, 0x9f, 0xe5, 0x00, 0x00, - 0x81, 0xe5, 0x1e, 0xff, 0x2f, 0xe1, 0x74, 0x02, - 0x00, 0xeb, 0x10, 0x01, 0x9f, 0xe5, 0x28, 0x11, - 0x9f, 0xe5, 0x04, 0x20, 0x91, 0xe4, 0x04, 0x20, - 0x00, 0xe4, 0x04, 0x21, 0x9f, 0xe5, 0x02, 0x00, - 0x51, 0xe1, 0x3c, 0x00, 0x2c, 0x01, 0x00, 0x00, - 0xfa, 0xff, 0xff, 0x1a, 0xf0, 0x10, 0x9f, 0xe5, - 0xfd, 0x20, 0xb1, 0xe8, 0x03, 0xf0, 0x2f, 0xe1, - 0xe0, 0x10, 0x9f, 0xe5, 0x00, 0x20, 0x81, 0xe5, - 0xe8, 0x10, 0x9f, 0xe5, 0xf4, 0x20, 0x9f, 0xe5, - 0x00, 0x20, 0x81, 0xe5, 0x02, 0x10, 0x80, 0xe2, - 0x00, 0x00, 0x20, 0xe0, 0x01, 0x00, 0x40, 0xe2, - 0x11, 0xff, 0x2f, 0xe1, 0x01, 0x00, 0x8f, 0xe2, - 0x10, 0xff, 0x2f, 0xe1, 0x3c, 0x00, 0x68, 0x01, - 0x00, 0x00, 0x01, 0xf0, 0x9c, 0xf8, 0x78, 0x47, - 0x00, 0x00, 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, - 0x2f, 0xe1, 0x01, 0xf0, 0x94, 0xf8, 0x78, 0x47, - 0x00, 0x00, 0x03, 0x00, 0x2d, 0xe9, 0x00, 0x10, - 0x0f, 0xe1, 0x00, 0x10, 0x80, 0xe5, 0xb8, 0x10, - 0x9f, 0xe5, 0x04, 0x10, 0x80, 0xe5, 0x00, 0x10, - 0xa0, 0xe1, 0x10, 0x00, 0x80, 0xe2, 0xfc, 0x1f, - 0xa0, 0xe8, 0x00, 0x20, 0xa0, 0xe1, 0x3c, 0x00, - 0xa4, 0x01, 0x00, 0x00, 0x01, 0x30, 0xa0, 0xe1, - 0x03, 0x00, 0xbd, 0xe8, 0x08, 0x00, 0x83, 0xe5, - 0x0c, 0x10, 0x83, 0xe5, 0xd3, 0x00, 0xa0, 0xe3, - 0x00, 0xf0, 0x21, 0xe1, 0x00, 0x60, 0xa2, 0xe8, - 0x00, 0x10, 0x4f, 0xe1, 0x04, 0x10, 0x82, 0xe4, - 0xd2, 0x00, 0xa0, 0xe3, 0x00, 0xf0, 0x21, 0xe1, - 0x00, 0x60, 0xa2, 0xe8, 0x00, 0x10, 0x4f, 0xe1, - 0x04, 0x10, 0x82, 0xe4, 0xd1, 0x00, 0xa0, 0xe3, - 0x3c, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, - 0x21, 0xe1, 0x00, 0x7f, 0xa2, 0xe8, 0x00, 0x10, - 0x4f, 0xe1, 0x04, 0x10, 0x82, 0xe4, 0xd7, 0x00, - 0xa0, 0xe3, 0x00, 0xf0, 0x21, 0xe1, 0x00, 0x60, - 0xa2, 0xe8, 0x00, 0x10, 0x4f, 0xe1, 0x04, 0x10, - 0x82, 0xe4, 0xdb, 0x00, 0xa0, 0xe3, 0x00, 0xf0, - 0x21, 0xe1, 0x00, 0x60, 0xa2, 0xe8, 0x00, 0x10, - 0x4f, 0xe1, 0x00, 0x10, 0x82, 0xe5, 0x00, 0x00, - 0x93, 0xe5, 0x3c, 0x00, 0x1c, 0x02, 0x00, 0x00, - 0x00, 0xf0, 0x2f, 0xe1, 0x1e, 0xff, 0x2f, 0xe1, - 0x20, 0x00, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, - 0x20, 0xee, 0x01, 0x00, 0xd8, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x18, 0xf0, 0x9f, 0xe5, - 0x10, 0x01, 0x00, 0x00, 0x08, 0x03, 0x00, 0x00, - 0xee, 0xee, 0xee, 0xee, 0x24, 0x03, 0x00, 0x00, - 0x20, 0x02, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x63, 0x1c, 0x0b, 0x4d, 0x3c, 0x00, 0x58, 0x02, - 0x00, 0x00, 0x01, 0xd1, 0x6c, 0x69, 0x10, 0xe0, - 0x00, 0xf0, 0x6c, 0xfb, 0x09, 0x48, 0xff, 0xf7, - 0x0c, 0xff, 0xec, 0x60, 0x08, 0x4a, 0x51, 0x68, - 0x50, 0x68, 0x88, 0x42, 0xfc, 0xd0, 0x02, 0x20, - 0x28, 0x70, 0x01, 0x21, 0x8a, 0x20, 0x01, 0xf0, - 0x12, 0xf8, 0x20, 0x1c, 0xb0, 0xbd, 0x30, 0x00, - 0x07, 0x00, 0x51, 0x02, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x00, 0xb0, 0xb5, 0x05, 0x1c, 0x3c, 0x00, - 0x94, 0x02, 0x00, 0x00, 0x00, 0x24, 0x00, 0xf0, - 0x50, 0xfb, 0x14, 0x48, 0xff, 0xf7, 0xf0, 0xfe, - 0x13, 0x49, 0x14, 0x48, 0xc1, 0x60, 0x01, 0x21, - 0x13, 0x4a, 0x49, 0x03, 0x91, 0x60, 0x13, 0x49, - 0xca, 0x78, 0x08, 0x23, 0x9a, 0x43, 0xca, 0x70, - 0xca, 0x78, 0x04, 0x23, 0x1a, 0x43, 0xca, 0x70, - 0x6b, 0x1c, 0x0d, 0xd0, 0x0e, 0x4b, 0x5a, 0x68, - 0x59, 0x68, 0x91, 0x42, 0xfc, 0xd0, 0xbe, 0x21, - 0x3c, 0x00, 0xd0, 0x02, 0x00, 0x00, 0x19, 0x73, - 0x19, 0x7a, 0x11, 0x22, 0x91, 0x43, 0x19, 0x72, - 0x19, 0x7a, 0xc9, 0x07, 0xfc, 0xd4, 0x02, 0x21, - 0x01, 0x70, 0xff, 0xf7, 0xd0, 0xfe, 0x20, 0x1c, - 0xb0, 0xbd, 0x91, 0x02, 0x00, 0x00, 0xff, 0xff, - 0xff, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x03, 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, 0x47, - 0x08, 0x47, 0x10, 0x47, 0x18, 0x47, 0x20, 0x47, - 0x28, 0x47, 0x30, 0x47, 0x38, 0x47, 0x10, 0xb5, - 0x04, 0x1c, 0x10, 0x1c, 0x00, 0xf0, 0x23, 0xf9, - 0x03, 0xc4, 0x10, 0xbc, 0x08, 0xbc, 0x18, 0x47, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x03, 0x00, 0x00, - 0x10, 0xb4, 0x04, 0x2a, 0x0e, 0xd3, 0x03, 0x1c, - 0x0b, 0x43, 0x9b, 0x07, 0x0a, 0xd1, 0x08, 0xc8, - 0x10, 0xc9, 0xa3, 0x42, 0x02, 0xd1, 0x04, 0x3a, - 0x04, 0x2a, 0xf8, 0xd2, 0xa3, 0x42, 0x01, 0xd0, - 0x04, 0x38, 0x04, 0x39, 0x00, 0x2a, 0x02, 0xd1, - 0x00, 0x20, 0x10, 0xbc, 0x70, 0x47, 0xd3, 0x07, - 0x01, 0xd5, 0x01, 0x32, 0x05, 0xe0, 0x03, 0x78, - 0x0c, 0x78, 0x01, 0x31, 0x3c, 0x00, 0x38, 0x04, - 0x00, 0x00, 0x01, 0x30, 0xa3, 0x42, 0x07, 0xd1, - 0x03, 0x78, 0x0c, 0x78, 0x01, 0x31, 0x01, 0x30, - 0xa3, 0x42, 0x01, 0xd1, 0x02, 0x3a, 0xf1, 0xd1, - 0x18, 0x1b, 0xe9, 0xe7, 0x00, 0x00, 0x78, 0x47, - 0x00, 0x00, 0x00, 0x20, 0xa0, 0xe3, 0x04, 0x00, - 0x51, 0xe3, 0x08, 0x00, 0x00, 0x3a, 0x03, 0xc0, - 0x10, 0xe2, 0x0d, 0x00, 0x00, 0x0a, 0x04, 0xc0, - 0x6c, 0xe2, 0x02, 0x00, 0x5c, 0xe3, 0x3c, 0x00, - 0x74, 0x04, 0x00, 0x00, 0x01, 0x20, 0xc0, 0xe4, - 0x01, 0x20, 0xc0, 0xa4, 0x01, 0x20, 0xc0, 0xc4, - 0x0c, 0x10, 0x41, 0xe0, 0x06, 0x00, 0x00, 0xea, - 0x81, 0xcf, 0xb0, 0xe1, 0x01, 0x20, 0xc0, 0x24, - 0x01, 0x20, 0xc0, 0x24, 0x01, 0x20, 0xc0, 0x44, - 0x1e, 0xff, 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, - 0x00, 0x20, 0xa0, 0xe3, 0x00, 0x40, 0x2d, 0xe9, - 0x02, 0x30, 0xa0, 0xe1, 0x02, 0xc0, 0xa0, 0xe1, - 0x3c, 0x00, 0xb0, 0x04, 0x00, 0x00, 0x02, 0xe0, - 0xa0, 0xe1, 0x20, 0x10, 0x51, 0xe2, 0x0c, 0x50, - 0xa0, 0x28, 0x0c, 0x50, 0xa0, 0x28, 0x20, 0x10, - 0x51, 0x22, 0xfb, 0xff, 0xff, 0x2a, 0x01, 0x1e, - 0xb0, 0xe1, 0x0c, 0x50, 0xa0, 0x28, 0x0c, 0x00, - 0xa0, 0x48, 0x00, 0x40, 0xbd, 0xe8, 0x01, 0x11, - 0xb0, 0xe1, 0x04, 0x20, 0x80, 0x24, 0x1e, 0xff, - 0x2f, 0x01, 0x01, 0x20, 0xc0, 0x44, 0x01, 0x20, - 0xc0, 0x44, 0x3c, 0x00, 0xec, 0x04, 0x00, 0x00, - 0x40, 0x04, 0x11, 0xe3, 0x01, 0x20, 0xc0, 0x14, - 0x1e, 0xff, 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, - 0x03, 0x00, 0x52, 0xe3, 0x3e, 0x00, 0x00, 0x9a, - 0x03, 0xc0, 0x10, 0xe2, 0x08, 0x00, 0x00, 0x0a, - 0x01, 0x30, 0xd1, 0xe4, 0x02, 0x00, 0x5c, 0xe3, - 0x0c, 0x20, 0x82, 0xe0, 0x01, 0xc0, 0xd1, 0x94, - 0x01, 0x30, 0xc0, 0xe4, 0x01, 0x30, 0xd1, 0x34, - 0x04, 0x20, 0x42, 0xe2, 0x3c, 0x00, 0x28, 0x05, - 0x00, 0x00, 0x01, 0xc0, 0xc0, 0x94, 0x01, 0x30, - 0xc0, 0x34, 0x03, 0x30, 0x11, 0xe2, 0x1e, 0x00, - 0x00, 0x0a, 0x04, 0x20, 0x52, 0xe2, 0x2f, 0x00, - 0x00, 0x3a, 0x03, 0xc0, 0x31, 0xe7, 0x02, 0x00, - 0x53, 0xe3, 0x08, 0x00, 0x00, 0x0a, 0x0f, 0x00, - 0x00, 0x8a, 0x2c, 0x34, 0xa0, 0xe1, 0x04, 0xc0, - 0xb1, 0xe5, 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x3c, - 0x83, 0xe1, 0x04, 0x30, 0x80, 0xe4, 0x3c, 0x00, - 0x64, 0x05, 0x00, 0x00, 0xf9, 0xff, 0xff, 0x2a, - 0x01, 0x10, 0x81, 0xe2, 0x23, 0x00, 0x00, 0xea, - 0x2c, 0x38, 0xa0, 0xe1, 0x04, 0xc0, 0xb1, 0xe5, - 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x38, 0x83, 0xe1, - 0x04, 0x30, 0x80, 0xe4, 0xf9, 0xff, 0xff, 0x2a, - 0x02, 0x10, 0x81, 0xe2, 0x1b, 0x00, 0x00, 0xea, - 0x2c, 0x3c, 0xa0, 0xe1, 0x04, 0xc0, 0xb1, 0xe5, - 0x04, 0x20, 0x52, 0xe2, 0x0c, 0x34, 0x83, 0xe1, - 0x3c, 0x00, 0xa0, 0x05, 0x00, 0x00, 0x04, 0x30, - 0x80, 0xe4, 0xf9, 0xff, 0xff, 0x2a, 0x03, 0x10, - 0x81, 0xe2, 0x13, 0x00, 0x00, 0xea, 0x78, 0x47, - 0x00, 0x00, 0x10, 0x40, 0x2d, 0xe9, 0x20, 0x20, - 0x52, 0xe2, 0x05, 0x00, 0x00, 0x3a, 0x18, 0x50, - 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, 0x18, 0x50, - 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, 0x20, 0x20, - 0x52, 0x22, 0xf9, 0xff, 0xff, 0x2a, 0x02, 0xce, - 0xb0, 0xe1, 0x3c, 0x00, 0xdc, 0x05, 0x00, 0x00, - 0x18, 0x50, 0xb1, 0x28, 0x18, 0x50, 0xa0, 0x28, - 0x18, 0x00, 0xb1, 0x48, 0x18, 0x00, 0xa0, 0x48, - 0x10, 0x40, 0xbd, 0xe8, 0x02, 0xcf, 0xb0, 0xe1, - 0x04, 0x30, 0x91, 0x24, 0x04, 0x30, 0x80, 0x24, - 0x1e, 0xff, 0x2f, 0x01, 0x82, 0x2f, 0xb0, 0xe1, - 0x01, 0x20, 0xd1, 0x44, 0x01, 0x30, 0xd1, 0x24, - 0x01, 0xc0, 0xd1, 0x24, 0x01, 0x20, 0xc0, 0x44, - 0x01, 0x30, 0xc0, 0x24, 0x3c, 0x00, 0x18, 0x06, - 0x00, 0x00, 0x01, 0xc0, 0xc0, 0x24, 0x1e, 0xff, - 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, 0xff, 0x30, - 0x01, 0xe2, 0x02, 0x10, 0xa0, 0xe1, 0x03, 0x24, - 0x83, 0xe1, 0x02, 0x28, 0x82, 0xe1, 0x88, 0xff, - 0xff, 0xea, 0x78, 0x47, 0x00, 0x00, 0x80, 0x24, - 0x10, 0xe2, 0x00, 0x00, 0x60, 0x42, 0x41, 0x30, - 0x32, 0xe0, 0x00, 0x10, 0x61, 0x22, 0xa1, 0xc1, - 0x70, 0xe0, 0x20, 0x00, 0x00, 0x3a, 0x3c, 0x00, - 0x54, 0x06, 0x00, 0x00, 0x21, 0xc4, 0x70, 0xe0, - 0x0f, 0x00, 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, - 0xff, 0x24, 0x82, 0xe3, 0x21, 0xc2, 0x70, 0xe0, - 0x17, 0x00, 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, - 0x09, 0x00, 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, - 0xff, 0x28, 0x82, 0xe3, 0x21, 0xc4, 0x70, 0xe0, - 0x00, 0x04, 0xa0, 0x21, 0xff, 0x2c, 0x82, 0x23, - 0x21, 0xc2, 0x70, 0xe0, 0x0e, 0x00, 0x00, 0x3a, - 0x3c, 0x00, 0x90, 0x06, 0x00, 0x00, 0x00, 0xc0, - 0x70, 0xe2, 0x83, 0x00, 0x00, 0x2a, 0x20, 0x04, - 0xa0, 0x21, 0xa1, 0xc3, 0x70, 0xe0, 0x80, 0x13, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc3, - 0x70, 0xe0, 0x00, 0x13, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0xa1, 0xc2, 0x70, 0xe0, 0x80, 0x12, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc2, - 0x70, 0xe0, 0x00, 0x12, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x3c, 0x00, 0xcc, 0x06, 0x00, 0x00, - 0xa1, 0xc1, 0x70, 0xe0, 0x80, 0x11, 0x41, 0x20, - 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc1, 0x70, 0xe0, - 0x00, 0x11, 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, - 0xa1, 0xc0, 0x70, 0xe0, 0x80, 0x10, 0x41, 0x20, - 0x02, 0x20, 0xa2, 0xe0, 0x01, 0xc0, 0x70, 0xe0, - 0x00, 0x10, 0x41, 0x20, 0x02, 0x20, 0xb2, 0xe0, - 0xe5, 0xff, 0xff, 0x2a, 0xc3, 0x0f, 0x32, 0xe0, - 0xa3, 0x0f, 0x80, 0xe0, 0x3c, 0x00, 0x08, 0x07, - 0x00, 0x00, 0x00, 0x10, 0x61, 0x22, 0x1e, 0xff, - 0x2f, 0xe1, 0x78, 0x47, 0x00, 0x00, 0x00, 0x20, - 0xa0, 0xe3, 0xa1, 0xc1, 0x70, 0xe0, 0x20, 0x00, - 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, 0x0f, 0x00, - 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, 0xff, 0x24, - 0x82, 0xe3, 0x21, 0xc2, 0x70, 0xe0, 0x17, 0x00, - 0x00, 0x3a, 0x21, 0xc4, 0x70, 0xe0, 0x09, 0x00, - 0x00, 0x3a, 0x00, 0x04, 0xa0, 0xe1, 0x3c, 0x00, - 0x44, 0x07, 0x00, 0x00, 0xff, 0x28, 0x82, 0xe3, - 0x21, 0xc4, 0x70, 0xe0, 0x00, 0x04, 0xa0, 0x21, - 0xff, 0x2c, 0x82, 0x23, 0x21, 0xc2, 0x70, 0xe0, - 0x0e, 0x00, 0x00, 0x3a, 0x00, 0xc0, 0x70, 0xe2, - 0x50, 0x00, 0x00, 0x2a, 0x20, 0x04, 0xa0, 0x21, - 0xa1, 0xc3, 0x70, 0xe0, 0x80, 0x13, 0x41, 0x20, - 0x02, 0x20, 0xa2, 0xe0, 0x21, 0xc3, 0x70, 0xe0, - 0x00, 0x13, 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, - 0x3c, 0x00, 0x80, 0x07, 0x00, 0x00, 0xa1, 0xc2, - 0x70, 0xe0, 0x80, 0x12, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x21, 0xc2, 0x70, 0xe0, 0x00, 0x12, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0xa1, 0xc1, - 0x70, 0xe0, 0x80, 0x11, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x21, 0xc1, 0x70, 0xe0, 0x00, 0x11, - 0x41, 0x20, 0x02, 0x20, 0xa2, 0xe0, 0xa1, 0xc0, - 0x70, 0xe0, 0x80, 0x10, 0x41, 0x20, 0x02, 0x20, - 0xa2, 0xe0, 0x3c, 0x00, 0xbc, 0x07, 0x00, 0x00, - 0x01, 0xc0, 0x70, 0xe0, 0x00, 0x10, 0x41, 0x20, - 0x02, 0x20, 0xb2, 0xe0, 0xe5, 0xff, 0xff, 0x2a, - 0x02, 0x00, 0xa0, 0xe1, 0x1e, 0xff, 0x2f, 0xe1, - 0x78, 0x47, 0x00, 0x00, 0x0a, 0x10, 0x40, 0xe2, - 0x20, 0x01, 0x40, 0xe0, 0x20, 0x02, 0x80, 0xe0, - 0x20, 0x04, 0x80, 0xe0, 0x20, 0x08, 0x80, 0xe0, - 0xa0, 0x01, 0xa0, 0xe1, 0x00, 0x21, 0x80, 0xe0, - 0x82, 0x10, 0x51, 0xe0, 0x3c, 0x00, 0xf8, 0x07, - 0x00, 0x00, 0x01, 0x00, 0x80, 0x52, 0x0a, 0x10, - 0x81, 0x42, 0x1e, 0xff, 0x2f, 0xe1, 0x30, 0xb4, - 0x44, 0x1c, 0x81, 0x07, 0x08, 0xd0, 0x01, 0x78, - 0x01, 0x30, 0x00, 0x29, 0x02, 0xd1, 0x00, 0x1b, - 0x30, 0xbc, 0x70, 0x47, 0x81, 0x07, 0xf6, 0xd1, - 0x0b, 0x4a, 0xd5, 0x01, 0x02, 0xc8, 0x8b, 0x1a, - 0x8b, 0x43, 0x2b, 0x40, 0xfa, 0xd0, 0x00, 0x1b, - 0x0a, 0x06, 0x01, 0xd1, 0x03, 0x38, 0x3c, 0x00, - 0x34, 0x08, 0x00, 0x00, 0xef, 0xe7, 0x0a, 0x04, - 0x12, 0x0e, 0x01, 0xd1, 0x02, 0x38, 0xea, 0xe7, - 0x09, 0x02, 0x09, 0x0e, 0xe7, 0xd1, 0x01, 0x38, - 0xe5, 0xe7, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, - 0xf0, 0xb4, 0x03, 0x1c, 0x04, 0x1c, 0x0c, 0x43, - 0xa4, 0x07, 0x0c, 0xd1, 0x10, 0x4d, 0xef, 0x01, - 0x02, 0xe0, 0x04, 0x31, 0x04, 0x3a, 0x10, 0xc3, - 0x04, 0x2a, 0x04, 0xd3, 0x0c, 0x68, 0x66, 0x1b, - 0x3c, 0x00, 0x70, 0x08, 0x00, 0x00, 0xa6, 0x43, - 0x3e, 0x40, 0xf5, 0xd0, 0x00, 0x2a, 0x07, 0xd0, - 0x0c, 0x78, 0x01, 0x31, 0x1c, 0x70, 0x01, 0x33, - 0x00, 0x2c, 0x03, 0xd0, 0x01, 0x3a, 0xf7, 0xd1, - 0xf0, 0xbc, 0x70, 0x47, 0x01, 0x2a, 0xfb, 0xd9, - 0x51, 0x1e, 0x00, 0x22, 0x1a, 0x70, 0x01, 0x33, - 0x01, 0x39, 0xfb, 0xd1, 0xf4, 0xe7, 0x01, 0x01, - 0x01, 0x01, 0x78, 0x47, 0x00, 0x00, 0x02, 0x00, - 0xa0, 0xe3, 0x3c, 0x00, 0xac, 0x08, 0x00, 0x00, - 0x02, 0x10, 0xa0, 0xe3, 0x2e, 0xfe, 0xff, 0xea, - 0x1f, 0x40, 0x2d, 0xe9, 0x00, 0x00, 0x0f, 0xe1, - 0xc0, 0x00, 0x80, 0xe3, 0x00, 0xf0, 0x2f, 0xe1, - 0x81, 0x00, 0xa0, 0xe3, 0x02, 0x10, 0xa0, 0xe3, - 0x01, 0x20, 0x8f, 0xe2, 0x12, 0xff, 0x2f, 0xe1, - 0x00, 0xf0, 0xe6, 0xfc, 0x78, 0x47, 0x00, 0x00, - 0x1f, 0x40, 0xbd, 0xe8, 0xfe, 0xff, 0xff, 0xea, - 0x1f, 0x50, 0x2d, 0xe9, 0x3c, 0x00, 0xe8, 0x08, - 0x00, 0x00, 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, - 0x2f, 0xe1, 0x00, 0xf0, 0x40, 0xfb, 0x78, 0x47, - 0x00, 0x00, 0x1f, 0x50, 0xbd, 0xe8, 0x04, 0xf0, - 0x5e, 0xe2, 0x1f, 0x50, 0x2d, 0xe9, 0x01, 0x00, - 0x8f, 0xe2, 0x10, 0xff, 0x2f, 0xe1, 0x00, 0xf0, - 0x18, 0xfb, 0x78, 0x47, 0x00, 0x00, 0x1f, 0x50, - 0xbd, 0xe8, 0x04, 0xf0, 0x5e, 0xe2, 0x00, 0xbd, - 0x01, 0xb5, 0x00, 0xa0, 0x00, 0x47, 0x3c, 0x00, - 0x24, 0x09, 0x00, 0x00, 0x00, 0x30, 0x0f, 0xe1, - 0xc0, 0x30, 0xc3, 0xe3, 0x03, 0xf0, 0x21, 0xe1, - 0x01, 0x00, 0x8f, 0xe2, 0x10, 0xff, 0x2f, 0xe1, - 0x01, 0xbd, 0x01, 0xb5, 0x00, 0xa0, 0x00, 0x47, - 0x00, 0x30, 0x0f, 0xe1, 0xc0, 0x30, 0x83, 0xe3, - 0x03, 0xf0, 0x21, 0xe1, 0x01, 0x00, 0x8f, 0xe2, - 0x10, 0xff, 0x2f, 0xe1, 0x01, 0xbd, 0x00, 0x00, - 0x18, 0x00, 0x9f, 0xe5, 0x04, 0x10, 0x90, 0xe4, - 0x3c, 0x00, 0x60, 0x09, 0x00, 0x00, 0x00, 0x00, - 0x51, 0xe3, 0x02, 0x00, 0x00, 0x0a, 0x04, 0x20, - 0x90, 0xe4, 0x00, 0x20, 0x81, 0xe5, 0xf9, 0xff, - 0xff, 0xea, 0x0e, 0xf0, 0xa0, 0xe1, 0x7c, 0x09, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, - 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0xd8, 0x03, - 0x00, 0x00, 0xd8, 0x03, 0x00, 0x00, 0xd8, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x09, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, - 0x44, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, - 0x00, 0x80, 0x01, 0x00, 0x10, 0x8e, 0x01, 0x00, - 0x10, 0x8e, 0x01, 0x00, 0x88, 0xf8, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, - 0xc4, 0x33, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0e, 0x50, 0xa0, 0xe1, - 0x58, 0x40, 0x9f, 0xe5, 0x3c, 0x00, 0xd8, 0x09, - 0x00, 0x00, 0x04, 0x00, 0x94, 0xe4, 0x01, 0x00, - 0x50, 0xe3, 0x05, 0xf0, 0xa0, 0x01, 0x04, 0x10, - 0x94, 0xe4, 0x04, 0x20, 0x94, 0xe4, 0x03, 0x00, - 0x00, 0xeb, 0x04, 0x00, 0x94, 0xe4, 0x04, 0x10, - 0x94, 0xe4, 0x07, 0x00, 0x00, 0xeb, 0xf5, 0xff, - 0xff, 0xea, 0x01, 0x00, 0x50, 0xe1, 0x0e, 0xf0, - 0xa0, 0x01, 0x02, 0x00, 0x51, 0xe1, 0x04, 0x30, - 0x90, 0x14, 0x04, 0x30, 0x81, 0x14, 0x3c, 0x00, - 0x14, 0x0a, 0x00, 0x00, 0xfb, 0xff, 0xff, 0x1a, - 0x0e, 0xf0, 0xa0, 0xe1, 0x14, 0x20, 0x9f, 0xe5, - 0x00, 0x20, 0x92, 0xe5, 0x01, 0x00, 0x50, 0xe1, - 0x04, 0x20, 0x80, 0x14, 0xfc, 0xff, 0xff, 0x1a, - 0x0e, 0xf0, 0xa0, 0xe1, 0x80, 0x09, 0x00, 0x00, - 0xcc, 0x09, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x20, 0xe6, 0x01, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x53, 0x56, 0x43, 0x5f, 0x00, 0x04, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x0a, 0x00, 0x00, 0x20, 0xee, - 0x01, 0x00, 0x12, 0x00, 0x00, 0x00, 0x49, 0x52, - 0x51, 0x5f, 0x00, 0x02, 0x00, 0x00, 0x20, 0xf2, - 0x01, 0x00, 0x11, 0x00, 0x00, 0x00, 0x46, 0x49, - 0x51, 0x5f, 0x80, 0x00, 0x00, 0x00, 0x20, 0xf4, - 0x01, 0x00, 0x17, 0x00, 0x00, 0x00, 0x41, 0x42, - 0x54, 0x5f, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf4, - 0x01, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x55, 0x4e, - 0x44, 0x5f, 0x3c, 0x00, 0x8c, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xa0, 0xf4, 0x01, 0x00, - 0x1f, 0x00, 0x00, 0x00, 0x55, 0x53, 0x52, 0x5f, - 0x01, 0x00, 0x00, 0x00, 0x0e, 0x50, 0xa0, 0xe1, - 0x00, 0x60, 0x0f, 0xe1, 0x8c, 0x40, 0x9f, 0xe5, - 0x04, 0x10, 0x94, 0xe4, 0x01, 0x00, 0x51, 0xe3, - 0x09, 0x00, 0x00, 0x0a, 0x04, 0x00, 0x94, 0xe4, - 0x01, 0x10, 0x80, 0xe0, 0x03, 0x10, 0xc1, 0xe3, - 0x04, 0x20, 0x94, 0xe4, 0x3c, 0x00, 0xc8, 0x0a, - 0x00, 0x00, 0xc0, 0x20, 0x82, 0xe3, 0x02, 0xf0, - 0x2f, 0xe1, 0x04, 0xd0, 0x41, 0xe2, 0x04, 0x20, - 0x94, 0xe4, 0x13, 0x00, 0x00, 0xeb, 0xf2, 0xff, - 0xff, 0xea, 0x06, 0xf0, 0x2f, 0xe1, 0x05, 0xf0, - 0xa0, 0xe1, 0x0e, 0x50, 0xa0, 0xe1, 0x00, 0x60, - 0x0f, 0xe1, 0x44, 0x40, 0x9f, 0xe5, 0x04, 0x10, - 0x94, 0xe4, 0x01, 0x00, 0x51, 0xe3, 0x08, 0x00, - 0x00, 0x0a, 0x04, 0x00, 0x94, 0xe4, 0x3c, 0x00, - 0x04, 0x0b, 0x00, 0x00, 0x01, 0x10, 0x80, 0xe0, - 0x03, 0x10, 0xc1, 0xe3, 0x04, 0x20, 0x94, 0xe4, - 0xc0, 0x20, 0x82, 0xe3, 0x02, 0xf0, 0x2f, 0xe1, - 0x04, 0xd0, 0x41, 0xe2, 0x04, 0x20, 0x94, 0xe4, - 0xf3, 0xff, 0xff, 0xea, 0x06, 0xf0, 0x2f, 0xe1, - 0x05, 0xf0, 0xa0, 0xe1, 0x01, 0x00, 0x50, 0xe1, - 0x04, 0x20, 0x80, 0x14, 0xfc, 0xff, 0xff, 0x1a, - 0x0e, 0xf0, 0xa0, 0xe1, 0x3c, 0x0a, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x01, 0x60, - 0xc0, 0x46, 0xc0, 0x46, 0xc0, 0x46, 0x70, 0x47, - 0x00, 0x00, 0x10, 0x1e, 0x10, 0xee, 0x02, 0x00, - 0x11, 0xe3, 0xfc, 0xff, 0xff, 0x1a, 0x10, 0x0e, - 0x01, 0xee, 0x10, 0x1e, 0x10, 0xee, 0x02, 0x00, - 0x11, 0xe3, 0xfc, 0xff, 0xff, 0x1a, 0x1e, 0xff, - 0x2f, 0xe1, 0x10, 0x1e, 0x10, 0xee, 0x01, 0x00, - 0x11, 0xe3, 0x03, 0x00, 0x00, 0x0a, 0x10, 0x1e, - 0x11, 0xee, 0x3c, 0x00, 0x7c, 0x0b, 0x00, 0x00, - 0x00, 0x10, 0x80, 0xe5, 0x01, 0x00, 0xa0, 0xe3, - 0x1e, 0xff, 0x2f, 0xe1, 0x00, 0x00, 0x20, 0xe0, - 0x1e, 0xff, 0x2f, 0xe1, 0x8d, 0x46, 0x97, 0x46, - 0x78, 0x47, 0xc0, 0x46, 0x78, 0xfd, 0xff, 0xea, - 0x10, 0xb5, 0x04, 0x1c, 0x03, 0x28, 0x01, 0xd9, - 0x00, 0xf0, 0xac, 0xfb, 0x0c, 0x48, 0x40, 0x68, - 0x00, 0x28, 0x00, 0xd0, 0x03, 0x24, 0x0b, 0x48, - 0x01, 0x68, 0x09, 0x48, 0x3c, 0x00, 0xb8, 0x0b, - 0x00, 0x00, 0x12, 0x30, 0x00, 0x29, 0x05, 0xd0, - 0x06, 0x21, 0x61, 0x43, 0x40, 0x5c, 0xc3, 0x00, - 0x18, 0x18, 0x04, 0xe0, 0x06, 0x21, 0x61, 0x43, - 0x40, 0x5c, 0x14, 0x23, 0x58, 0x43, 0x0a, 0x30, - 0x00, 0x06, 0x00, 0x0e, 0x10, 0xbd, 0xd4, 0x7a, - 0x01, 0x00, 0xa8, 0x69, 0x01, 0x00, 0x80, 0xb5, - 0x09, 0x4a, 0x09, 0x49, 0x03, 0x20, 0x00, 0xf0, - 0xf2, 0xf9, 0x08, 0x49, 0x08, 0x20, 0x3c, 0x00, - 0xf4, 0x0b, 0x00, 0x00, 0x08, 0x60, 0x48, 0x60, - 0x07, 0x49, 0x1d, 0x20, 0x01, 0xf0, 0xb2, 0xfc, - 0x06, 0x49, 0x1e, 0x20, 0x01, 0xf0, 0xae, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x00, 0x6c, 0x01, 0x00, - 0x31, 0x27, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x29, 0x25, 0x00, 0x00, 0x31, 0x25, 0x00, 0x00, - 0x05, 0x49, 0x80, 0xb5, 0x08, 0x20, 0x88, 0x60, - 0x1d, 0x20, 0x01, 0xf0, 0xbf, 0xfc, 0x1e, 0x20, - 0x3c, 0x00, 0x30, 0x0c, 0x00, 0x00, 0x01, 0xf0, - 0xbc, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0xd1, 0x2a, - 0x80, 0xb5, 0x01, 0xd1, 0x05, 0xf0, 0x19, 0xfc, - 0x80, 0xbd, 0x03, 0x49, 0x80, 0xb5, 0x00, 0x20, - 0x08, 0x80, 0x05, 0x20, 0x05, 0xf0, 0xd5, 0xfb, - 0x80, 0xbd, 0xb0, 0x74, 0x01, 0x00, 0x80, 0xb5, - 0x54, 0x28, 0x01, 0xd1, 0x06, 0xf0, 0xcd, 0xf8, - 0x80, 0xbd, 0x3c, 0x00, 0x6c, 0x0c, 0x00, 0x00, - 0xb0, 0xb5, 0x10, 0x4d, 0x02, 0x1c, 0x01, 0x24, - 0x01, 0x2a, 0x0d, 0x48, 0x29, 0x68, 0x06, 0xd0, - 0xc4, 0x2a, 0x03, 0xd1, 0x6a, 0x68, 0x00, 0x2a, - 0x05, 0xd0, 0xac, 0x60, 0xb0, 0xbd, 0x0e, 0xf0, - 0x89, 0xfb, 0x6c, 0x60, 0x08, 0xe0, 0x00, 0x22, - 0xaa, 0x60, 0x6c, 0x60, 0x0e, 0xf0, 0x82, 0xfb, - 0x00, 0x21, 0x04, 0x20, 0x12, 0xf0, 0xc8, 0xfc, - 0x06, 0xf0, 0xd8, 0xf8, 0x3c, 0x00, 0xa8, 0x0c, - 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, 0xc4, 0x60, - 0x01, 0x00, 0xbc, 0x74, 0x01, 0x00, 0x05, 0x4a, - 0x51, 0x69, 0x08, 0x1a, 0x11, 0x69, 0x09, 0x68, - 0x10, 0x31, 0x81, 0x42, 0x01, 0xd8, 0x50, 0x61, - 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x8c, 0x6e, - 0x01, 0x00, 0x01, 0x49, 0x49, 0x68, 0x40, 0x1a, - 0x70, 0x47, 0x8c, 0x6e, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x69, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x0c, 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, - 0x02, 0x4a, 0x51, 0x69, 0x08, 0x18, 0x50, 0x61, - 0x70, 0x47, 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, - 0x0e, 0x49, 0x0f, 0x48, 0x10, 0xb5, 0x19, 0x22, - 0x92, 0x01, 0x41, 0x60, 0x89, 0x18, 0xc1, 0x60, - 0x0b, 0x49, 0x00, 0x22, 0x0c, 0x31, 0x01, 0x60, - 0x0a, 0x49, 0x82, 0x60, 0x09, 0x68, 0x01, 0x23, - 0xdb, 0x03, 0xc9, 0x18, 0x08, 0x4c, 0x41, 0x61, - 0x3c, 0x00, 0x20, 0x0d, 0x00, 0x00, 0x21, 0x68, - 0x00, 0x29, 0x02, 0xd0, 0x07, 0x49, 0x01, 0x61, - 0x01, 0xe0, 0x00, 0xf0, 0x0c, 0xf8, 0x22, 0x60, - 0x10, 0xbd, 0x44, 0xdc, 0x01, 0x00, 0x8c, 0x6e, - 0x01, 0x00, 0xc8, 0x09, 0x00, 0x00, 0x34, 0x58, - 0x01, 0x00, 0xc4, 0x09, 0x00, 0x00, 0x01, 0x48, - 0x02, 0x49, 0x08, 0x61, 0x70, 0x47, 0xc8, 0x09, - 0x00, 0x00, 0x8c, 0x6e, 0x01, 0x00, 0x08, 0x28, - 0x05, 0xd2, 0x3c, 0x00, 0x5c, 0x0d, 0x00, 0x00, - 0x03, 0x4b, 0x80, 0x00, 0x19, 0x50, 0x02, 0x49, - 0x20, 0x31, 0x0a, 0x50, 0x70, 0x47, 0x00, 0x00, - 0x64, 0x6d, 0x01, 0x00, 0x70, 0xb5, 0x06, 0x1c, - 0x0d, 0x48, 0x0d, 0x1c, 0x00, 0x68, 0x14, 0x1c, - 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x00, 0xf0, - 0x09, 0xfc, 0x70, 0xbd, 0x28, 0x06, 0x01, 0xd5, - 0x00, 0xf0, 0x22, 0xfe, 0x22, 0x1c, 0x29, 0x1c, - 0x30, 0x1c, 0x08, 0xf0, 0x3c, 0x00, 0x98, 0x0d, - 0x00, 0x00, 0xdd, 0xfd, 0x01, 0x1c, 0x03, 0x48, - 0x54, 0x30, 0x43, 0x69, 0x32, 0x1c, 0xff, 0xf7, - 0x1b, 0xfb, 0x70, 0xbd, 0x00, 0x00, 0x50, 0x6d, - 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0d, 0x48, - 0x1f, 0x1c, 0x00, 0x68, 0x15, 0x1c, 0x0c, 0x1c, - 0x00, 0x28, 0x02, 0xd1, 0x28, 0x1c, 0x00, 0xf0, - 0xe8, 0xfb, 0x20, 0x06, 0x01, 0xd5, 0x00, 0xf0, - 0x02, 0xfe, 0x2a, 0x1c, 0x21, 0x1c, 0x3c, 0x00, - 0xd4, 0x0d, 0x00, 0x00, 0x30, 0x1c, 0x08, 0xf0, - 0xbd, 0xfd, 0x01, 0x1c, 0x03, 0x48, 0x54, 0x30, - 0x43, 0x69, 0x3a, 0x1c, 0xff, 0xf7, 0xfb, 0xfa, - 0xf8, 0xbd, 0x00, 0x00, 0x50, 0x6d, 0x01, 0x00, - 0xf8, 0xb5, 0xf1, 0x28, 0x4e, 0xd1, 0x2a, 0x48, - 0x69, 0x46, 0x82, 0x69, 0xff, 0xf7, 0xee, 0xfa, - 0x27, 0x49, 0x00, 0x26, 0x54, 0x39, 0xc8, 0x68, - 0x8b, 0x68, 0xc2, 0x00, 0x01, 0x30, 0xd5, 0x18, - 0x3c, 0x00, 0x10, 0x0e, 0x00, 0x00, 0x07, 0x28, - 0xc8, 0x60, 0x00, 0xd1, 0xce, 0x60, 0x22, 0x48, - 0x6c, 0x68, 0x00, 0x68, 0x00, 0x28, 0x03, 0xd0, - 0x00, 0x21, 0x20, 0x1c, 0x08, 0xf0, 0x3b, 0xfb, - 0x6e, 0x60, 0x25, 0x68, 0x20, 0x89, 0xa9, 0x78, - 0x02, 0x39, 0x40, 0x1a, 0xe9, 0x78, 0x40, 0x1a, - 0x20, 0x81, 0xa8, 0x78, 0x28, 0x18, 0x02, 0x38, - 0x20, 0x60, 0x6e, 0x78, 0x28, 0x78, 0x08, 0x28, - 0x17, 0xd2, 0x3c, 0x00, 0x4c, 0x0e, 0x00, 0x00, - 0x30, 0x06, 0x07, 0xd5, 0x27, 0x1c, 0x20, 0x1c, - 0x00, 0xf0, 0x7a, 0xfc, 0x04, 0x1c, 0x38, 0x1c, - 0x00, 0xf0, 0x9c, 0xfb, 0x28, 0x78, 0x0f, 0x49, - 0x40, 0x39, 0x80, 0x00, 0x0a, 0x58, 0x00, 0x2a, - 0x04, 0xd0, 0x31, 0x1c, 0x20, 0x1c, 0xff, 0xf7, - 0xb3, 0xfa, 0x08, 0xe0, 0x05, 0x21, 0x00, 0xe0, - 0x04, 0x21, 0x06, 0x20, 0x00, 0xf0, 0x10, 0xfa, - 0x20, 0x1c, 0x00, 0xf0, 0x3c, 0x00, 0x88, 0x0e, - 0x00, 0x00, 0x87, 0xfb, 0x30, 0x06, 0x01, 0xd5, - 0x00, 0xf0, 0xa1, 0xfd, 0xf8, 0xbd, 0x01, 0x21, - 0x06, 0x20, 0x00, 0xf0, 0x04, 0xfa, 0xf9, 0xe7, - 0x00, 0x00, 0xa4, 0x6d, 0x01, 0x00, 0xcc, 0x5c, - 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4d, 0x19, 0x4f, - 0x01, 0x24, 0x54, 0x35, 0x29, 0x1c, 0x03, 0x20, - 0x7c, 0x60, 0x17, 0x4b, 0x18, 0x4a, 0x05, 0xf0, - 0xf4, 0xfb, 0x00, 0x28, 0x02, 0xd0, 0x3c, 0x00, - 0xc4, 0x0e, 0x00, 0x00, 0x00, 0x20, 0x38, 0x60, - 0x1f, 0xe0, 0x3c, 0x60, 0x07, 0x21, 0x28, 0x1c, - 0xea, 0x69, 0xff, 0xf7, 0x83, 0xfa, 0x38, 0x20, - 0x00, 0xf0, 0x80, 0xfc, 0x00, 0x24, 0xb8, 0x60, - 0xb8, 0x68, 0xe6, 0x00, 0x35, 0x18, 0x68, 0x46, - 0x02, 0x21, 0x00, 0xf0, 0x75, 0xfb, 0x28, 0x60, - 0x28, 0x1c, 0x00, 0xf0, 0xa5, 0xfd, 0xb8, 0x68, - 0x81, 0x59, 0x06, 0x48, 0x54, 0x30, 0x02, 0x6a, - 0x3c, 0x00, 0x00, 0x0f, 0x00, 0x00, 0xff, 0xf7, - 0x6c, 0xfa, 0x01, 0x34, 0x07, 0x2c, 0xea, 0xdb, - 0x00, 0x20, 0xf8, 0x60, 0x38, 0x61, 0xf8, 0xbd, - 0x00, 0x00, 0x50, 0x6d, 0x01, 0x00, 0x81, 0x9a, - 0x00, 0x00, 0x61, 0x9a, 0x00, 0x00, 0x05, 0x48, - 0x80, 0xb5, 0x00, 0x68, 0x00, 0x28, 0x05, 0xd0, - 0x03, 0x48, 0x54, 0x30, 0x42, 0x6a, 0x00, 0x21, - 0xff, 0xf7, 0x53, 0xfa, 0x80, 0xbd, 0x50, 0x6d, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x0f, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0xb5, 0x0a, 0x4e, - 0x09, 0x4d, 0x08, 0x4c, 0x08, 0x3e, 0xa1, 0x69, - 0x00, 0x29, 0x07, 0xd0, 0x30, 0x68, 0x41, 0x60, - 0x00, 0x7b, 0x81, 0x00, 0x69, 0x58, 0xff, 0xf7, - 0x3e, 0xfa, 0xf4, 0xe7, 0x03, 0x49, 0x02, 0x20, - 0x08, 0x70, 0x70, 0xbd, 0x00, 0x10, 0x07, 0x00, - 0xe0, 0x7e, 0x01, 0x00, 0x00, 0x02, 0x07, 0x00, - 0x70, 0xb5, 0x0a, 0x4e, 0x3c, 0x00, 0x78, 0x0f, - 0x00, 0x00, 0x09, 0x4d, 0x08, 0x4c, 0x08, 0x3e, - 0xe1, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x70, 0x68, - 0x41, 0x60, 0x00, 0x7b, 0x81, 0x00, 0x69, 0x58, - 0xff, 0xf7, 0x24, 0xfa, 0xf4, 0xe7, 0x03, 0x49, - 0x02, 0x20, 0x08, 0x70, 0x70, 0xbd, 0x00, 0x10, - 0x07, 0x00, 0xe0, 0x7e, 0x01, 0x00, 0x00, 0x02, - 0x07, 0x00, 0xb0, 0xb5, 0x09, 0x4d, 0x04, 0x1c, - 0x28, 0x1c, 0x20, 0x22, 0x40, 0x30, 0x3c, 0x00, - 0xb4, 0x0f, 0x00, 0x00, 0x05, 0x49, 0xff, 0xf7, - 0x9f, 0xfa, 0xe0, 0x68, 0xe8, 0x60, 0x20, 0x69, - 0x28, 0x61, 0xa0, 0x6a, 0xa8, 0x62, 0x60, 0x68, - 0x68, 0x60, 0xb0, 0xbd, 0x70, 0x52, 0x01, 0x00, - 0x00, 0x10, 0x07, 0x00, 0xf8, 0xb5, 0x00, 0x24, - 0x00, 0x23, 0x20, 0x28, 0x01, 0xdb, 0x01, 0x24, - 0x07, 0xe0, 0x08, 0x4e, 0x80, 0x00, 0x35, 0x58, - 0x07, 0x4f, 0xbd, 0x42, 0x00, 0xd0, 0x2b, 0x1c, - 0x3c, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0x31, 0x50, - 0x13, 0x60, 0x00, 0x2c, 0x03, 0xd0, 0x21, 0x1c, - 0x82, 0x20, 0x00, 0xf0, 0x52, 0xf9, 0x20, 0x1c, - 0xf8, 0xbd, 0xe0, 0x7e, 0x01, 0x00, 0x75, 0x75, - 0x00, 0x00, 0xb0, 0xb5, 0x0b, 0x4d, 0x04, 0x1c, - 0x28, 0x68, 0x00, 0x28, 0x0f, 0xd0, 0x20, 0x1c, - 0x12, 0xf0, 0xb7, 0xfd, 0x00, 0x28, 0x0a, 0xd0, - 0x21, 0x7a, 0x28, 0x7a, 0x0a, 0x07, 0x00, 0x07, - 0x00, 0x0f, 0x3c, 0x00, 0x2c, 0x10, 0x00, 0x00, - 0x12, 0x0f, 0x90, 0x42, 0x29, 0x72, 0x01, 0xd0, - 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, - 0x70, 0x78, 0x01, 0x00, 0xf0, 0xb5, 0x42, 0x4e, - 0x05, 0x1c, 0x30, 0x68, 0x85, 0xb0, 0x00, 0x28, - 0x63, 0xd0, 0x00, 0x24, 0x00, 0x20, 0x00, 0x2d, - 0x06, 0xd0, 0x69, 0x78, 0x18, 0x29, 0x03, 0xd1, - 0xe9, 0x79, 0x01, 0x29, 0x00, 0xd1, 0x01, 0x20, - 0x00, 0x28, 0x45, 0xd0, 0x3c, 0x00, 0x68, 0x10, - 0x00, 0x00, 0x00, 0x20, 0xb0, 0x72, 0x81, 0x00, - 0x4a, 0x19, 0x93, 0x7a, 0x59, 0x06, 0x89, 0x0f, - 0xdb, 0x06, 0x04, 0xd5, 0xb3, 0x7a, 0x01, 0x27, - 0x8f, 0x40, 0x3b, 0x43, 0xb3, 0x72, 0xd2, 0x7a, - 0x13, 0x09, 0x12, 0x07, 0x12, 0x0f, 0x93, 0x42, - 0x05, 0xd3, 0x01, 0x22, 0x8a, 0x40, 0x14, 0x43, - 0x01, 0xaa, 0x89, 0x00, 0x50, 0x50, 0x01, 0x30, - 0x04, 0x28, 0xe4, 0xdb, 0xb0, 0x7a, 0x3c, 0x00, - 0xa4, 0x10, 0x00, 0x00, 0x20, 0x40, 0x01, 0x07, - 0x0d, 0xd5, 0x41, 0x07, 0x09, 0xd5, 0xc1, 0x07, - 0x05, 0xd5, 0x81, 0x07, 0x01, 0xd5, 0x00, 0x24, - 0x05, 0xe0, 0x02, 0x99, 0x02, 0xe0, 0x01, 0x99, - 0x00, 0xe0, 0x03, 0x99, 0x04, 0x91, 0x41, 0x07, - 0x09, 0xd5, 0xc1, 0x07, 0x05, 0xd5, 0x81, 0x07, - 0x01, 0xd5, 0x00, 0x24, 0x03, 0xe0, 0x02, 0x99, - 0x00, 0xe0, 0x01, 0x99, 0x03, 0x91, 0xc1, 0x07, - 0x3c, 0x00, 0xe0, 0x10, 0x00, 0x00, 0x05, 0xd5, - 0x81, 0x07, 0x01, 0xd5, 0x00, 0x24, 0x01, 0xe0, - 0x02, 0x99, 0x01, 0x91, 0x80, 0x07, 0x01, 0xd5, - 0x00, 0x24, 0x22, 0xe0, 0x0f, 0x2c, 0x20, 0xd1, - 0x70, 0x68, 0x00, 0x28, 0x0b, 0xd0, 0x04, 0x9a, - 0x02, 0xab, 0x00, 0x92, 0x0a, 0xcb, 0x01, 0x9a, - 0x28, 0x1c, 0x0b, 0xf0, 0x8a, 0xfb, 0x00, 0x20, - 0x70, 0x60, 0x10, 0xe0, 0x17, 0xe0, 0x30, 0x7a, - 0x29, 0x7a, 0x3c, 0x00, 0x1c, 0x11, 0x00, 0x00, - 0x00, 0x07, 0x09, 0x07, 0x09, 0x0f, 0x00, 0x0f, - 0x88, 0x42, 0x07, 0xd0, 0x04, 0x9a, 0x02, 0xab, - 0x00, 0x92, 0x0a, 0xcb, 0x01, 0x9a, 0x28, 0x1c, - 0x0b, 0xf0, 0x76, 0xfb, 0x28, 0x7a, 0x30, 0x72, - 0x01, 0x20, 0x0f, 0x2c, 0x00, 0xd0, 0x00, 0x20, - 0x05, 0xb0, 0xf0, 0xbd, 0x01, 0x20, 0xfb, 0xe7, - 0x70, 0x78, 0x01, 0x00, 0x0d, 0x4a, 0x70, 0xb5, - 0x11, 0x68, 0x00, 0x20, 0x3c, 0x00, 0x58, 0x11, - 0x00, 0x00, 0x00, 0x29, 0x0e, 0xd0, 0x11, 0x7a, - 0x09, 0x06, 0x0b, 0xd5, 0x53, 0x7a, 0x94, 0x7a, - 0x03, 0x21, 0x01, 0x25, 0x2a, 0x1c, 0x8a, 0x40, - 0x1e, 0x1c, 0x16, 0x40, 0x03, 0xd0, 0x22, 0x40, - 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, 0xff, 0x31, - 0x09, 0x06, 0x09, 0x16, 0xf2, 0xd5, 0x70, 0xbd, - 0x00, 0x00, 0x70, 0x78, 0x01, 0x00, 0x10, 0xb5, - 0x08, 0x4c, 0x20, 0x68, 0x00, 0x28, 0x3c, 0x00, - 0x94, 0x11, 0x00, 0x00, 0x04, 0xd0, 0x60, 0x68, - 0x00, 0x28, 0x01, 0xd1, 0x0b, 0xf0, 0xc0, 0xfb, - 0x00, 0x20, 0x00, 0x21, 0x00, 0x22, 0x07, 0xc4, - 0x0c, 0x3c, 0x01, 0x20, 0x60, 0x60, 0x10, 0xbd, - 0x70, 0x78, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0x08, 0x60, 0x70, 0x47, 0x70, 0x78, 0x01, 0x00, - 0xf8, 0xb5, 0x0e, 0x4d, 0x04, 0x1c, 0x00, 0x20, - 0x68, 0x72, 0x20, 0x1c, 0x12, 0xf0, 0xde, 0xfc, - 0x3c, 0x00, 0xd0, 0x11, 0x00, 0x00, 0x00, 0x28, - 0x12, 0xd0, 0x00, 0x20, 0x03, 0x21, 0x01, 0x22, - 0x0f, 0x1a, 0x16, 0x1c, 0x23, 0x7a, 0xbe, 0x40, - 0x33, 0x40, 0x04, 0xd0, 0x6b, 0x7a, 0x16, 0x1c, - 0x86, 0x40, 0x33, 0x43, 0x6b, 0x72, 0x01, 0x30, - 0x00, 0x06, 0x00, 0x0e, 0x03, 0x28, 0xef, 0xd9, - 0xf8, 0xbd, 0x70, 0x78, 0x01, 0x00, 0x92, 0x00, - 0x51, 0x18, 0x8a, 0x7a, 0x12, 0x07, 0x12, 0x0f, - 0x02, 0x70, 0x3c, 0x00, 0x0c, 0x12, 0x00, 0x00, - 0xca, 0x7a, 0x12, 0x07, 0x12, 0x0f, 0x42, 0x70, - 0xca, 0x7a, 0x12, 0x09, 0x82, 0x70, 0x09, 0x7b, - 0x81, 0x80, 0x70, 0x47, 0x03, 0x4a, 0x0f, 0x21, - 0x52, 0x7a, 0x01, 0x20, 0x91, 0x43, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x70, 0x78, 0x01, 0x00, - 0x40, 0x07, 0x05, 0x49, 0x40, 0x0f, 0x05, 0x4a, - 0x09, 0x56, 0x52, 0x7a, 0x01, 0x20, 0x0a, 0x40, - 0x00, 0xd1, 0x00, 0x20, 0x3c, 0x00, 0x48, 0x12, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x5e, 0x46, - 0x01, 0x00, 0x70, 0x78, 0x01, 0x00, 0x12, 0x4a, - 0x70, 0xb5, 0x53, 0x7a, 0x94, 0x7a, 0xff, 0x20, - 0x03, 0x21, 0x01, 0x25, 0x2a, 0x1c, 0x8a, 0x40, - 0x1e, 0x1c, 0x16, 0x40, 0x14, 0xd0, 0x22, 0x40, - 0x12, 0xd1, 0x08, 0x06, 0x00, 0x0e, 0x07, 0xd0, - 0x01, 0x28, 0x07, 0xd0, 0x02, 0x28, 0x07, 0xd0, - 0x03, 0x28, 0x07, 0xd1, 0x07, 0x20, 0x3c, 0x00, - 0x84, 0x12, 0x00, 0x00, 0x70, 0xbd, 0x03, 0x20, - 0x70, 0xbd, 0x01, 0x20, 0x70, 0xbd, 0x05, 0x20, - 0x70, 0xbd, 0xff, 0x20, 0x70, 0xbd, 0xff, 0x31, - 0x09, 0x06, 0x09, 0x16, 0xe1, 0xd5, 0x70, 0xbd, - 0x70, 0x78, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x13, 0x48, 0x0d, 0x1c, 0x81, 0x68, 0x00, 0x29, - 0x05, 0xd0, 0x01, 0x7b, 0x00, 0x29, 0x01, 0xd1, - 0x04, 0x73, 0x45, 0x73, 0xf8, 0xbd, 0x0f, 0x4e, - 0x3c, 0x00, 0xc0, 0x12, 0x00, 0x00, 0x31, 0x1c, - 0x20, 0x31, 0x8a, 0x79, 0x00, 0xab, 0x1a, 0x70, - 0xc9, 0x79, 0x59, 0x70, 0x42, 0x68, 0x00, 0x2a, - 0x07, 0xd0, 0x20, 0x02, 0x28, 0x43, 0x01, 0x1c, - 0x00, 0x20, 0xff, 0xf7, 0x7e, 0xf8, 0x00, 0x28, - 0x04, 0xd1, 0x2a, 0x1c, 0x21, 0x1c, 0x00, 0x20, - 0x11, 0xf0, 0x0f, 0xf8, 0x00, 0xab, 0x18, 0x88, - 0xf0, 0x84, 0xe2, 0xe7, 0x00, 0x00, 0x88, 0x5a, - 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x12, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x81, 0x20, 0xff, 0xf7, 0xcd, 0xff, 0x80, 0xbd, - 0x01, 0x49, 0x01, 0x20, 0x88, 0x60, 0x70, 0x47, - 0x88, 0x5a, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0x88, 0x60, 0x08, 0x7b, 0x00, 0x28, - 0x02, 0xd0, 0x49, 0x7b, 0xff, 0xf7, 0xbc, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, - 0x02, 0x4a, 0x01, 0x1c, 0x3c, 0x00, 0x38, 0x13, - 0x00, 0x00, 0x50, 0x68, 0x51, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, 0x10, 0xb5, - 0x0c, 0x1c, 0x07, 0xf0, 0x64, 0xfa, 0x04, 0x61, - 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, 0xff, 0xb5, - 0x0e, 0x1c, 0x1f, 0x1c, 0x38, 0x20, 0x81, 0xb0, - 0x00, 0xf0, 0x3d, 0xfa, 0x1d, 0x49, 0x04, 0x1c, - 0x48, 0x69, 0x00, 0x28, 0x01, 0xd1, 0x4c, 0x61, - 0x00, 0xe0, 0x04, 0x60, 0x30, 0x01, 0x3c, 0x00, - 0x74, 0x13, 0x00, 0x00, 0x00, 0x90, 0x00, 0x04, - 0x00, 0x0c, 0x00, 0xf0, 0x15, 0xfa, 0x05, 0x1c, - 0x00, 0x99, 0xff, 0xf7, 0x8b, 0xf8, 0x00, 0x20, - 0x73, 0x1e, 0x04, 0xe0, 0x01, 0x01, 0x4a, 0x19, - 0x10, 0x32, 0x6a, 0x50, 0x01, 0x30, 0x98, 0x42, - 0xf8, 0xd3, 0x00, 0x01, 0x2d, 0x50, 0x38, 0x21, - 0x20, 0x1c, 0xff, 0xf7, 0x7b, 0xf8, 0xa5, 0x60, - 0x65, 0x60, 0xe6, 0x85, 0x0c, 0x20, 0x60, 0x86, - 0x3c, 0x00, 0xb0, 0x13, 0x00, 0x00, 0xaf, 0x20, - 0x80, 0x01, 0xe0, 0x61, 0x0e, 0x20, 0xe0, 0x86, - 0x00, 0x20, 0x20, 0x60, 0x01, 0x98, 0xe0, 0x60, - 0x38, 0x68, 0x60, 0x61, 0x03, 0x99, 0x04, 0x48, - 0x08, 0x60, 0x04, 0x48, 0x38, 0x60, 0x05, 0xb0, - 0x00, 0x20, 0xf0, 0xbd, 0x00, 0x00, 0xfc, 0x5a, - 0x01, 0x00, 0xdd, 0x15, 0x01, 0x00, 0xfd, 0x16, - 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0xf0, 0x2a, - 0x80, 0xb5, 0x3c, 0x00, 0xec, 0x13, 0x00, 0x00, - 0x04, 0xd0, 0xf1, 0x2a, 0x07, 0xd1, 0x06, 0xf0, - 0x09, 0xfb, 0x80, 0xbd, 0x07, 0xf0, 0x0c, 0xfa, - 0x0d, 0xf0, 0xa8, 0xfa, 0x80, 0xbd, 0x01, 0x21, - 0x02, 0x20, 0xff, 0xf7, 0x4d, 0xff, 0x80, 0xbd, - 0x01, 0x49, 0x00, 0x20, 0x48, 0x61, 0x70, 0x47, - 0xfc, 0x5a, 0x01, 0x00, 0x00, 0x28, 0x02, 0xd0, - 0x00, 0x29, 0x00, 0xd0, 0xc1, 0x60, 0x70, 0x47, - 0xf8, 0xb5, 0x17, 0x1c, 0x3c, 0x00, 0x28, 0x14, - 0x00, 0x00, 0x0e, 0x1c, 0x05, 0x1c, 0x1c, 0x1c, - 0x1c, 0x30, 0x07, 0xf0, 0xc8, 0xf8, 0x01, 0x69, - 0x42, 0x69, 0x80, 0x68, 0x89, 0x19, 0x89, 0x1a, - 0x81, 0x42, 0x06, 0xd2, 0x23, 0x1c, 0x3a, 0x1c, - 0x31, 0x1c, 0x28, 0x1c, 0x00, 0xf0, 0x05, 0xf8, - 0xf8, 0xbd, 0x00, 0x20, 0x38, 0x60, 0x20, 0x60, - 0xfa, 0xe7, 0xff, 0xb5, 0x85, 0xb0, 0x05, 0x98, - 0x01, 0x27, 0x0e, 0x1c, 0x1c, 0x30, 0x3c, 0x00, - 0x64, 0x14, 0x00, 0x00, 0x07, 0xf0, 0xae, 0xf8, - 0x04, 0x1c, 0x80, 0x88, 0x04, 0x30, 0x03, 0x90, - 0x2c, 0x48, 0x04, 0x90, 0x80, 0x79, 0x02, 0x90, - 0xa0, 0x69, 0xb0, 0x42, 0x17, 0xd2, 0x35, 0x1a, - 0x11, 0xe0, 0x03, 0x98, 0xff, 0xf7, 0x16, 0xfc, - 0x00, 0x28, 0x06, 0xd1, 0x01, 0x21, 0x8e, 0x20, - 0xff, 0xf7, 0x08, 0xff, 0x00, 0x25, 0x00, 0x27, - 0x05, 0xe0, 0x21, 0x68, 0x01, 0x60, 0x20, 0x60, - 0x3c, 0x00, 0xa0, 0x14, 0x00, 0x00, 0xa0, 0x69, - 0x01, 0x30, 0xa0, 0x61, 0x01, 0x3d, 0xeb, 0xd2, - 0x00, 0x2f, 0x35, 0xd0, 0xa0, 0x69, 0x80, 0x1b, - 0xa0, 0x61, 0x20, 0x69, 0x80, 0x19, 0x20, 0x61, - 0x61, 0x69, 0x40, 0x1a, 0xe1, 0x68, 0x88, 0x42, - 0x03, 0xd9, 0x07, 0x21, 0x8e, 0x20, 0xff, 0xf7, - 0xec, 0xfe, 0x25, 0x68, 0x2f, 0x1c, 0x70, 0x1e, - 0x01, 0x95, 0x00, 0xe0, 0x3f, 0x68, 0x01, 0x38, - 0xfc, 0xd2, 0x3c, 0x00, 0xdc, 0x14, 0x00, 0x00, - 0x38, 0x68, 0x20, 0x60, 0x02, 0x98, 0x04, 0x99, - 0x88, 0x71, 0x2e, 0x68, 0x2c, 0x60, 0x32, 0x1d, - 0x00, 0x92, 0x29, 0x1c, 0x20, 0x31, 0x01, 0x22, - 0x28, 0x1d, 0x05, 0x9b, 0x08, 0xf0, 0x7a, 0xfc, - 0xbd, 0x42, 0x01, 0xd0, 0x35, 0x1c, 0xf0, 0xe7, - 0x00, 0x20, 0x38, 0x61, 0x01, 0x98, 0x07, 0x99, - 0x04, 0x30, 0x08, 0x60, 0x08, 0x98, 0x04, 0x37, - 0x07, 0x60, 0x09, 0xb0, 0x3c, 0x00, 0x18, 0x15, - 0x00, 0x00, 0xf0, 0xbd, 0x02, 0x98, 0x04, 0x99, - 0x88, 0x71, 0xf9, 0xe7, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0x38, 0xb5, 0x04, 0x1c, 0x15, 0x1c, - 0x00, 0x20, 0x0c, 0x60, 0x09, 0xe0, 0xe2, 0x68, - 0x20, 0x1c, 0x00, 0x92, 0xa3, 0x8a, 0x21, 0x68, - 0xa2, 0x69, 0x08, 0xf0, 0x56, 0xfc, 0x20, 0x1c, - 0xe4, 0x68, 0x00, 0x2c, 0xf3, 0xd1, 0x28, 0x60, - 0x38, 0xbd, 0x80, 0xb5, 0x0c, 0xe0, 0x3c, 0x00, - 0x54, 0x15, 0x00, 0x00, 0xc2, 0x68, 0x8a, 0x42, - 0x08, 0xd1, 0x00, 0x21, 0xc1, 0x60, 0x00, 0x28, - 0x03, 0xd1, 0x06, 0x21, 0x8e, 0x20, 0xff, 0xf7, - 0x9d, 0xfe, 0x80, 0xbd, 0x10, 0x1c, 0x00, 0x28, - 0xf7, 0xd0, 0xef, 0xe7, 0x10, 0xb5, 0x04, 0x1c, - 0x0c, 0xd0, 0xa0, 0x69, 0x00, 0x28, 0x06, 0xd1, - 0x20, 0x69, 0x00, 0x28, 0x03, 0xd0, 0x06, 0xf0, - 0xf7, 0xfd, 0x00, 0x20, 0x20, 0x61, 0x20, 0x1c, - 0x3c, 0x00, 0x90, 0x15, 0x00, 0x00, 0x06, 0xf0, - 0xf2, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x10, 0xb5, - 0x00, 0x28, 0x09, 0xd0, 0xc4, 0x68, 0x03, 0xe0, - 0xff, 0xf7, 0xe7, 0xff, 0x20, 0x1c, 0xf9, 0xe7, - 0x00, 0x2c, 0xf9, 0xd1, 0xff, 0xf7, 0xe1, 0xff, - 0x10, 0xbd, 0x01, 0x1c, 0x00, 0x20, 0x04, 0xe0, - 0x0a, 0x89, 0xc9, 0x68, 0x10, 0x18, 0x00, 0x04, - 0x00, 0x0c, 0x00, 0x29, 0xf8, 0xd1, 0x70, 0x47, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x15, 0x00, 0x00, - 0x00, 0xe0, 0x08, 0x1c, 0xc1, 0x68, 0x00, 0x29, - 0xfb, 0xd1, 0x70, 0x47, 0xf8, 0xb5, 0x06, 0x1c, - 0x0c, 0x1c, 0x1c, 0x20, 0x00, 0xf0, 0x68, 0xfa, - 0x05, 0x1c, 0x00, 0x2e, 0x01, 0xd1, 0x00, 0x2c, - 0x02, 0xd1, 0x30, 0x1c, 0x01, 0x21, 0x03, 0xe0, - 0x20, 0x1c, 0x00, 0xf0, 0x5d, 0xfa, 0x00, 0x21, - 0x00, 0x22, 0x00, 0x92, 0x0a, 0x1c, 0x01, 0x1c, - 0x23, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0x08, 0x16, - 0x00, 0x00, 0x08, 0xf0, 0xf2, 0xfb, 0x28, 0x1c, - 0xf8, 0xbd, 0xb0, 0xb5, 0x03, 0x32, 0x92, 0x08, - 0x92, 0x00, 0x14, 0x04, 0x24, 0x0c, 0x09, 0x19, - 0x1d, 0x1c, 0xc9, 0x18, 0x09, 0x04, 0x09, 0x0c, - 0xff, 0xf7, 0xd7, 0xff, 0x01, 0x89, 0x02, 0x68, - 0x12, 0x19, 0x09, 0x1b, 0x49, 0x1b, 0x02, 0x60, - 0x01, 0x81, 0xb0, 0xbd, 0x00, 0x00, 0xf8, 0xb5, - 0x0a, 0x4c, 0xa0, 0x21, 0x20, 0x1c, 0x3c, 0x00, - 0x44, 0x16, 0x00, 0x00, 0xfe, 0xf7, 0x2a, 0xff, - 0x00, 0x20, 0x26, 0x1c, 0xa0, 0x36, 0x07, 0x4d, - 0x07, 0xe0, 0x0c, 0x21, 0x41, 0x43, 0x49, 0x19, - 0x0e, 0xc9, 0x27, 0x1d, 0x0e, 0xc7, 0x20, 0x34, - 0x01, 0x30, 0xa6, 0x42, 0xf5, 0xd1, 0xf8, 0xbd, - 0xd0, 0x5c, 0x01, 0x00, 0xc8, 0x3f, 0x01, 0x00, - 0xf7, 0xb5, 0xc4, 0x68, 0x06, 0x1c, 0x00, 0x25, - 0x00, 0x2c, 0x82, 0xb0, 0x23, 0xd0, 0x20, 0x89, - 0x3c, 0x00, 0x80, 0x16, 0x00, 0x00, 0x90, 0x42, - 0x20, 0xd3, 0xe1, 0x68, 0x87, 0x1a, 0x01, 0x91, - 0x00, 0x21, 0xe1, 0x60, 0x03, 0x99, 0x00, 0x20, - 0xff, 0xf7, 0xa1, 0xff, 0x05, 0x1c, 0x20, 0x89, - 0xc0, 0x1b, 0x20, 0x81, 0x2a, 0x68, 0x03, 0x99, - 0x30, 0x1c, 0x00, 0xf0, 0x16, 0xf8, 0x20, 0x89, - 0xc0, 0x19, 0x20, 0x81, 0x01, 0x99, 0x20, 0x1c, - 0xff, 0xf7, 0xb1, 0xfe, 0x21, 0x1c, 0x28, 0x1c, - 0xff, 0xf7, 0x3c, 0x00, 0xbc, 0x16, 0x00, 0x00, - 0xad, 0xfe, 0x29, 0x1c, 0x30, 0x1c, 0xff, 0xf7, - 0xa9, 0xfe, 0x01, 0x20, 0x00, 0x2d, 0x00, 0xd1, - 0x00, 0x20, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xf7, 0xb5, 0x04, 0x1c, 0x0e, 0x1c, 0x00, 0x20, - 0x01, 0xe0, 0x20, 0x1c, 0x0c, 0x1c, 0xe1, 0x68, - 0x00, 0x29, 0xfa, 0xd1, 0x27, 0x89, 0xb7, 0x42, - 0x0a, 0xd3, 0xb8, 0x1b, 0x00, 0x04, 0x00, 0x0c, - 0x20, 0x81, 0x21, 0x68, 0x3c, 0x00, 0xf8, 0x16, - 0x00, 0x00, 0x09, 0x18, 0x02, 0x98, 0x32, 0x1c, - 0xfe, 0xf7, 0xfb, 0xfe, 0xfe, 0xbd, 0xf1, 0x1b, - 0x0d, 0x04, 0x2d, 0x0c, 0x00, 0x28, 0x19, 0xd0, - 0x01, 0x89, 0xa9, 0x42, 0x16, 0xd3, 0x49, 0x1b, - 0x09, 0x04, 0x09, 0x0c, 0x01, 0x81, 0x00, 0x68, - 0x41, 0x18, 0x02, 0x98, 0x2a, 0x1c, 0xfe, 0xf7, - 0xe8, 0xfe, 0x21, 0x68, 0x02, 0x98, 0x72, 0x1b, - 0x40, 0x19, 0xfe, 0xf7, 0xe2, 0xfe, 0x3c, 0x00, - 0x34, 0x17, 0x00, 0x00, 0x20, 0x89, 0xc0, 0x1b, - 0x20, 0x81, 0x20, 0x68, 0xc0, 0x19, 0x20, 0x60, - 0xdf, 0xe7, 0x03, 0x21, 0x8e, 0x20, 0xff, 0xf7, - 0xad, 0xfd, 0xda, 0xe7, 0xf8, 0xb5, 0x04, 0x1c, - 0x00, 0x26, 0x13, 0xe0, 0x21, 0x89, 0x00, 0x20, - 0xff, 0xf7, 0x3e, 0xff, 0x05, 0x1c, 0x22, 0x89, - 0x21, 0x68, 0x00, 0x68, 0xfe, 0xf7, 0xc8, 0xfe, - 0x00, 0x2e, 0x01, 0xd1, 0x2e, 0x1c, 0x03, 0xe0, - 0x3c, 0x00, 0x70, 0x17, 0x00, 0x00, 0x29, 0x1c, - 0x38, 0x1c, 0xff, 0xf7, 0x50, 0xfe, 0xe4, 0x68, - 0x2f, 0x1c, 0x00, 0x2c, 0xe9, 0xd1, 0x30, 0x1c, - 0xf8, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x89, - 0x40, 0x1a, 0x05, 0x04, 0x20, 0x68, 0x2d, 0x0c, - 0x40, 0x18, 0x29, 0x1c, 0xff, 0xf7, 0x1f, 0xff, - 0x21, 0x89, 0x49, 0x1b, 0x21, 0x81, 0xe1, 0x68, - 0xc1, 0x60, 0xe0, 0x60, 0xb0, 0xbd, 0x10, 0xb5, - 0x03, 0x30, 0x3c, 0x00, 0xac, 0x17, 0x00, 0x00, - 0x09, 0x4a, 0x81, 0x08, 0x10, 0x68, 0x3d, 0x24, - 0x08, 0x4b, 0x64, 0x01, 0x89, 0x00, 0x09, 0x18, - 0x1b, 0x19, 0x99, 0x42, 0x01, 0xd8, 0x11, 0x60, - 0x10, 0xbd, 0x0f, 0x21, 0x80, 0x20, 0xff, 0xf7, - 0x6b, 0xfd, 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0xb4, 0xcf, 0x01, 0x00, 0x14, 0xc8, 0x01, 0x00, - 0x10, 0xb5, 0x11, 0xf0, 0x61, 0xff, 0x04, 0x1c, - 0x03, 0xd1, 0x0d, 0x21, 0x3c, 0x00, 0xe8, 0x17, - 0x00, 0x00, 0x80, 0x20, 0xff, 0xf7, 0x5b, 0xfd, - 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x01, 0x1f, 0x0b, 0x68, 0x0d, 0x48, 0x00, 0x22, - 0x83, 0x42, 0x04, 0xd0, 0x01, 0x32, 0x10, 0x30, - 0x03, 0x2a, 0xf9, 0xd3, 0x01, 0xe0, 0x03, 0x2a, - 0x06, 0xd3, 0x09, 0x24, 0x21, 0x1c, 0x80, 0x20, - 0xff, 0xf7, 0x45, 0xfd, 0x20, 0x1c, 0xb0, 0xbd, - 0x05, 0x4b, 0x00, 0x24, 0x9a, 0x79, 0x3c, 0x00, - 0x24, 0x18, 0x00, 0x00, 0x85, 0x68, 0x0d, 0x60, - 0x81, 0x60, 0x9a, 0x71, 0xf5, 0xe7, 0x00, 0x00, - 0x20, 0x57, 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, - 0xb0, 0xb5, 0x00, 0x21, 0x10, 0x4a, 0x00, 0x23, - 0xd4, 0x68, 0x84, 0x42, 0x04, 0xd2, 0x01, 0x33, - 0x10, 0x32, 0x03, 0x2b, 0xf8, 0xd3, 0x01, 0xe0, - 0x03, 0x2b, 0x01, 0xd3, 0x04, 0x21, 0x0e, 0xe0, - 0x0a, 0x4c, 0xa3, 0x79, 0x90, 0x68, 0x00, 0x28, - 0x3c, 0x00, 0x60, 0x18, 0x00, 0x00, 0x02, 0xd1, - 0xa3, 0x71, 0x03, 0x21, 0x06, 0xe0, 0x05, 0x68, - 0x95, 0x60, 0xa3, 0x71, 0x00, 0x29, 0x01, 0xd1, - 0x04, 0xc0, 0xb0, 0xbd, 0x80, 0x20, 0xff, 0xf7, - 0x14, 0xfd, 0x00, 0x20, 0xb0, 0xbd, 0x20, 0x57, - 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, 0xa0, 0x30, - 0x00, 0x8a, 0x40, 0x07, 0x40, 0x0f, 0x08, 0x28, - 0x0f, 0xd2, 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x3c, 0x00, 0x9c, 0x18, 0x00, 0x00, - 0x05, 0x03, 0x03, 0x05, 0x07, 0x07, 0x09, 0x09, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x02, 0x20, 0x70, 0x47, 0x03, 0x20, 0x70, 0x47, - 0x04, 0x20, 0x70, 0x47, 0xb0, 0xb5, 0x10, 0x4d, - 0x68, 0x69, 0x00, 0x28, 0x07, 0xd0, 0x0e, 0x49, - 0x00, 0x22, 0x2c, 0x31, 0x03, 0xc9, 0x01, 0x43, - 0x03, 0x20, 0x06, 0xf0, 0xcf, 0xff, 0x0b, 0x4c, - 0x00, 0x22, 0x03, 0xcc, 0x3c, 0x00, 0xd8, 0x18, - 0x00, 0x00, 0x08, 0x3c, 0x01, 0x43, 0x03, 0x20, - 0x06, 0xf0, 0xaf, 0xff, 0x03, 0xcc, 0x08, 0x43, - 0x07, 0x49, 0x4a, 0x68, 0x02, 0x43, 0x4a, 0x60, - 0x8a, 0x68, 0x10, 0x43, 0x88, 0x60, 0x01, 0x20, - 0x68, 0x61, 0xb0, 0xbd, 0x00, 0x00, 0x64, 0x73, - 0x01, 0x00, 0xb0, 0x58, 0x01, 0x00, 0x10, 0x00, - 0x07, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x0f, 0xf0, - 0xa8, 0xfa, 0x05, 0x4d, 0xe8, 0x6a, 0x3c, 0x00, - 0x14, 0x19, 0x00, 0x00, 0x00, 0x28, 0x06, 0xd1, - 0x00, 0x2c, 0x04, 0xd0, 0x20, 0x1c, 0x0f, 0xf0, - 0xb7, 0xfd, 0x01, 0x20, 0x28, 0x70, 0xb0, 0xbd, - 0xf4, 0x6e, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5, - 0x88, 0x6a, 0x00, 0x28, 0x04, 0xda, 0x00, 0x20, - 0x88, 0x62, 0x01, 0x21, 0x0d, 0xf0, 0x42, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7e, 0x01, 0x00, - 0xf8, 0xb5, 0x1e, 0x4d, 0x04, 0x1c, 0x00, 0x20, - 0x3c, 0x00, 0x50, 0x19, 0x00, 0x00, 0x68, 0x62, - 0xa8, 0x70, 0x1c, 0x48, 0x00, 0x78, 0xc0, 0x07, - 0x22, 0xd5, 0xb8, 0x20, 0x03, 0x59, 0x1a, 0x48, - 0x00, 0x78, 0x0e, 0x28, 0x09, 0xd1, 0x0a, 0x1c, - 0x80, 0x32, 0x06, 0xd0, 0x18, 0x4e, 0x0d, 0x20, - 0x32, 0x5c, 0x8a, 0x42, 0x01, 0xdd, 0x01, 0x38, - 0xfa, 0xd1, 0x59, 0x1e, 0x0b, 0x06, 0x1b, 0x0e, - 0xab, 0x70, 0xab, 0x62, 0x0e, 0x28, 0x0b, 0xd2, - 0x08, 0xe0, 0x3c, 0x00, 0x8c, 0x19, 0x00, 0x00, - 0x62, 0x18, 0xb0, 0x32, 0x12, 0x7b, 0x82, 0x42, - 0x02, 0xd8, 0x58, 0x1a, 0xa8, 0x62, 0x02, 0xe0, - 0x01, 0x39, 0x00, 0x29, 0xf4, 0xda, 0x0e, 0xf0, - 0x35, 0xf9, 0x00, 0x90, 0x00, 0xab, 0x18, 0x78, - 0x59, 0x78, 0x81, 0x42, 0x00, 0xd9, 0x58, 0x78, - 0xed, 0x30, 0xe8, 0x70, 0x01, 0x21, 0x20, 0x1c, - 0x0d, 0xf0, 0x02, 0xfd, 0xf8, 0xbd, 0x00, 0x00, - 0xac, 0x7e, 0x01, 0x00, 0x3c, 0x00, 0xc8, 0x19, - 0x00, 0x00, 0x1d, 0x75, 0x01, 0x00, 0x11, 0x67, - 0x01, 0x00, 0xc7, 0x52, 0x01, 0x00, 0x0e, 0x49, - 0x10, 0xb5, 0x08, 0x69, 0x8b, 0x68, 0xc2, 0x00, - 0xd4, 0x18, 0x62, 0x68, 0x00, 0x2a, 0x0f, 0xd1, - 0x01, 0x30, 0x08, 0x61, 0x07, 0x28, 0x01, 0xd1, - 0x00, 0x20, 0x08, 0x61, 0x20, 0x1c, 0x00, 0xf0, - 0x24, 0xf8, 0x05, 0x48, 0x21, 0x68, 0x54, 0x30, - 0x02, 0x6a, 0xfe, 0xf7, 0xec, 0xfc, 0x3c, 0x00, - 0x04, 0x1a, 0x00, 0x00, 0x10, 0xbd, 0x06, 0x21, - 0x06, 0x20, 0xff, 0xf7, 0x4b, 0xfc, 0x10, 0xbd, - 0x50, 0x6d, 0x01, 0x00, 0x08, 0x49, 0x09, 0x79, - 0xc9, 0x07, 0x08, 0x4a, 0x08, 0xd4, 0x00, 0xe0, - 0x08, 0x1c, 0xc1, 0x68, 0x00, 0x29, 0xfb, 0xd1, - 0x01, 0x89, 0x04, 0x31, 0x01, 0x81, 0x00, 0xe0, - 0x00, 0x20, 0xd0, 0x62, 0x70, 0x47, 0x00, 0x00, - 0x60, 0x80, 0x07, 0x00, 0x04, 0x6c, 0x01, 0x00, - 0x3c, 0x00, 0x40, 0x1a, 0x00, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x19, 0x21, 0x89, 0x01, 0x00, 0x20, - 0xff, 0xf7, 0xc5, 0xfd, 0x01, 0x1c, 0x60, 0x60, - 0x20, 0x68, 0xff, 0xf7, 0xe0, 0xfc, 0x60, 0x68, - 0x21, 0x68, 0x08, 0x30, 0x08, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x0a, 0x28, 0x01, 0xda, 0x04, 0x20, - 0x04, 0xe0, 0x50, 0x28, 0x01, 0xda, 0x05, 0x20, - 0x00, 0xe0, 0x07, 0x20, 0x04, 0x4a, 0x11, 0x78, - 0x38, 0x23, 0x3c, 0x00, 0x7c, 0x1a, 0x00, 0x00, - 0xc0, 0x00, 0x18, 0x40, 0x99, 0x43, 0x08, 0x43, - 0x10, 0x70, 0x70, 0x47, 0x88, 0x00, 0x07, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x07, 0x48, 0x40, 0x68, - 0x08, 0xe0, 0x01, 0x69, 0xa9, 0x42, 0x04, 0xd1, - 0x44, 0x68, 0x05, 0xf0, 0xc7, 0xfd, 0x20, 0x1c, - 0x00, 0xe0, 0x40, 0x68, 0x00, 0x28, 0xf4, 0xd1, - 0xb0, 0xbd, 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, - 0xf8, 0xb5, 0x00, 0x25, 0x3c, 0x00, 0xb8, 0x1a, - 0x00, 0x00, 0x06, 0xf0, 0x84, 0xfd, 0x11, 0x4f, - 0x04, 0x1c, 0xbe, 0x79, 0x20, 0x68, 0x00, 0x28, - 0x07, 0xd1, 0xa0, 0x88, 0x04, 0x30, 0xff, 0xf7, - 0xf2, 0xf8, 0x00, 0x28, 0x06, 0xd1, 0x01, 0x21, - 0x0f, 0xe0, 0x01, 0x68, 0x21, 0x60, 0xa1, 0x69, - 0x01, 0x39, 0xa1, 0x61, 0x10, 0xc0, 0x05, 0x1c, - 0x20, 0x69, 0x01, 0x30, 0x20, 0x61, 0x61, 0x69, - 0x40, 0x1a, 0xe1, 0x68, 0x88, 0x42, 0x3c, 0x00, - 0xf4, 0x1a, 0x00, 0x00, 0x03, 0xd9, 0x07, 0x21, - 0x8e, 0x20, 0xff, 0xf7, 0xd3, 0xfb, 0xbe, 0x71, - 0x28, 0x1c, 0xf8, 0xbd, 0x20, 0x10, 0x07, 0x00, - 0xb0, 0xb5, 0x09, 0xf0, 0xbb, 0xff, 0x2f, 0x4c, - 0x00, 0x28, 0x20, 0x74, 0x03, 0xd0, 0x01, 0x21, - 0x01, 0x20, 0x0a, 0xf0, 0x71, 0xfc, 0x2b, 0x4d, - 0x14, 0x35, 0x28, 0x68, 0x00, 0x28, 0x4d, 0xd0, - 0x01, 0x21, 0x0f, 0x20, 0x11, 0xf0, 0x82, 0xfd, - 0x3c, 0x00, 0x30, 0x1b, 0x00, 0x00, 0x28, 0x89, - 0x08, 0xf0, 0xfb, 0xff, 0x01, 0x1c, 0x01, 0x22, - 0x0f, 0x20, 0x11, 0xf0, 0x40, 0xfd, 0xe0, 0x78, - 0x01, 0x25, 0x02, 0x28, 0x36, 0xd1, 0x0a, 0xf0, - 0xc6, 0xf8, 0x00, 0x28, 0x0a, 0xd0, 0x0b, 0xf0, - 0x92, 0xfb, 0x1e, 0x49, 0x09, 0x68, 0x40, 0x18, - 0x11, 0xf0, 0x5f, 0xf8, 0x00, 0x28, 0x01, 0xd1, - 0x02, 0x20, 0x2f, 0xe0, 0xe0, 0x78, 0x02, 0x28, - 0x24, 0xd1, 0x3c, 0x00, 0x6c, 0x1b, 0x00, 0x00, - 0x60, 0x70, 0x25, 0x70, 0x60, 0x68, 0x01, 0x28, - 0x1c, 0xd0, 0x15, 0x48, 0x10, 0x38, 0x81, 0x7b, - 0x00, 0x29, 0x04, 0xd1, 0x85, 0x73, 0x0f, 0x20, - 0x13, 0x49, 0x10, 0xf0, 0x01, 0xfc, 0x08, 0xf0, - 0x4f, 0xfe, 0x00, 0x28, 0x07, 0xd0, 0x0e, 0x48, - 0x01, 0x21, 0x98, 0x38, 0x00, 0x69, 0x01, 0xf0, - 0xb7, 0xfd, 0x00, 0x28, 0x05, 0xd0, 0x01, 0x20, - 0x0e, 0xf0, 0x0c, 0xfd, 0x3c, 0x00, 0xa8, 0x1b, - 0x00, 0x00, 0x01, 0x20, 0x0e, 0xf0, 0x1d, 0xfc, - 0xb0, 0xbd, 0x05, 0xf0, 0xdc, 0xfe, 0xb0, 0xbd, - 0xe0, 0x78, 0x00, 0x28, 0x01, 0xd1, 0x25, 0x70, - 0xf7, 0xe7, 0x03, 0x20, 0x00, 0xe0, 0x04, 0x20, - 0x0d, 0xf0, 0x8d, 0xfa, 0xb0, 0xbd, 0x84, 0x66, - 0x01, 0x00, 0x6c, 0x57, 0x01, 0x00, 0xe9, 0x03, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x00, 0x21, - 0x00, 0x20, 0x0a, 0x4d, 0x00, 0xe0, 0x3c, 0x00, - 0xe4, 0x1b, 0x00, 0x00, 0x01, 0x31, 0xcb, 0x00, - 0x5a, 0x19, 0x16, 0x79, 0x01, 0x2e, 0x02, 0xd0, - 0x52, 0x79, 0xa2, 0x42, 0x02, 0xd0, 0x0b, 0x29, - 0xf4, 0xd3, 0x70, 0xbd, 0x0b, 0x29, 0xfc, 0xd2, - 0xc8, 0x00, 0x01, 0x21, 0x5a, 0x19, 0x28, 0x58, - 0x11, 0x71, 0x70, 0xbd, 0x38, 0x58, 0x01, 0x00, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x7f, 0x24, 0x23, - 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x6a, - 0x3c, 0x00, 0x20, 0x1c, 0x00, 0x00, 0xfe, 0xf7, - 0xda, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x94, 0x46, 0x01, 0x00, 0x80, 0xb5, - 0x04, 0xf0, 0x37, 0xff, 0x00, 0x20, 0x11, 0xf0, - 0x84, 0xfc, 0x00, 0x20, 0x80, 0xbd, 0xb0, 0xb5, - 0x05, 0x4c, 0x05, 0x1c, 0x20, 0x6b, 0xe1, 0x6a, - 0x02, 0xf0, 0xe3, 0xfd, 0x29, 0x1c, 0xa0, 0x6a, - 0x02, 0xf0, 0x11, 0xfb, 0xb0, 0xbd, 0xa4, 0x6c, - 0x01, 0x00, 0x3c, 0x00, 0x5c, 0x1c, 0x00, 0x00, - 0xb0, 0xb5, 0x03, 0x1c, 0x08, 0x1c, 0x14, 0x1c, - 0x00, 0x2b, 0x0c, 0x4d, 0x09, 0xd0, 0x69, 0x69, - 0x89, 0x00, 0x01, 0x31, 0x0a, 0x04, 0x12, 0x0c, - 0x22, 0x80, 0x29, 0x1c, 0xfe, 0xf7, 0x3e, 0xfc, - 0x0a, 0xe0, 0x01, 0x1c, 0x28, 0x1c, 0x22, 0x88, - 0xfe, 0xf7, 0x38, 0xfc, 0x20, 0x88, 0x01, 0x28, - 0x02, 0xd9, 0x80, 0x08, 0x01, 0x38, 0x68, 0x61, - 0x01, 0x20, 0xb0, 0xbd, 0x3c, 0x00, 0x98, 0x1c, - 0x00, 0x00, 0x20, 0x6e, 0x01, 0x00, 0xf1, 0xb5, - 0x00, 0x98, 0x00, 0x26, 0xc1, 0x68, 0x08, 0x68, - 0x09, 0x89, 0x1c, 0x29, 0x34, 0xd3, 0xc1, 0x88, - 0xff, 0x23, 0x01, 0x33, 0x99, 0x42, 0x2f, 0xd1, - 0x01, 0x88, 0xc9, 0x1a, 0x2c, 0xd1, 0x41, 0x88, - 0x08, 0x29, 0x29, 0xd1, 0x01, 0x79, 0x06, 0x29, - 0x26, 0xd1, 0x41, 0x79, 0x04, 0x29, 0x23, 0xd1, - 0x00, 0x25, 0x00, 0x24, 0x07, 0x1c, 0x3c, 0x00, - 0xd4, 0x1c, 0x00, 0x00, 0x18, 0x37, 0x0b, 0xe0, - 0xa0, 0x00, 0x41, 0x18, 0x04, 0x31, 0x04, 0x22, - 0x38, 0x1c, 0xfe, 0xf7, 0x8b, 0xfb, 0x00, 0x28, - 0x01, 0xd1, 0x01, 0x25, 0x04, 0xe0, 0x01, 0x34, - 0x0a, 0x49, 0x48, 0x69, 0xa0, 0x42, 0xef, 0xd8, - 0x08, 0x49, 0x08, 0x78, 0x00, 0x28, 0x0a, 0xd0, - 0x01, 0x28, 0x01, 0xd0, 0x02, 0x28, 0x06, 0xd1, - 0x00, 0x2d, 0x04, 0xd1, 0x00, 0x98, 0xc0, 0x68, - 0x3c, 0x00, 0x10, 0x1d, 0x00, 0x00, 0xff, 0xf7, - 0x42, 0xfc, 0x01, 0x26, 0x30, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x20, 0x6e, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, 0x20, 0x6e, - 0x01, 0x00, 0x02, 0x49, 0x48, 0x60, 0x01, 0x20, - 0x48, 0x61, 0x70, 0x47, 0x00, 0x00, 0x20, 0x6e, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x01, 0x26, - 0x03, 0xf0, 0xef, 0xfa, 0x25, 0x1c, 0x10, 0x35, - 0x00, 0x28, 0x3c, 0x00, 0x4c, 0x1d, 0x00, 0x00, - 0x04, 0xd0, 0x00, 0x20, 0x20, 0x77, 0x03, 0xf0, - 0xf1, 0xfb, 0x07, 0xe0, 0x03, 0xf0, 0x38, 0xfd, - 0x00, 0x28, 0x09, 0xd0, 0x01, 0x20, 0x20, 0x77, - 0x03, 0xf0, 0xce, 0xfc, 0x01, 0x1c, 0x06, 0x22, - 0x28, 0x1c, 0xfe, 0xf7, 0xc3, 0xfb, 0x02, 0xe0, - 0x02, 0x20, 0x20, 0x77, 0x00, 0x26, 0x30, 0x1c, - 0x70, 0xbd, 0x00, 0x00, 0x03, 0x48, 0x80, 0x7a, - 0xc0, 0x07, 0x03, 0x49, 0x3c, 0x00, 0x88, 0x1d, - 0x00, 0x00, 0xc0, 0x0f, 0x88, 0x62, 0x70, 0x47, - 0x00, 0x00, 0x40, 0x90, 0x07, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, 0x88, 0x62, - 0x70, 0x47, 0xa4, 0x6c, 0x01, 0x00, 0x06, 0x48, - 0x80, 0x7a, 0xc1, 0x07, 0x06, 0x4a, 0xc9, 0x0f, - 0x91, 0x62, 0x20, 0x21, 0x80, 0x07, 0x00, 0xd4, - 0x00, 0x21, 0xa0, 0x32, 0x11, 0x70, 0x70, 0x47, - 0x00, 0x00, 0x40, 0x90, 0x07, 0x00, 0x3c, 0x00, - 0xc4, 0x1d, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x07, 0x4a, 0x12, 0x68, 0x07, 0x4b, 0x9b, 0x69, - 0x1a, 0x40, 0x01, 0xd0, 0x01, 0x22, 0x00, 0xe0, - 0x00, 0x22, 0x0a, 0x60, 0x01, 0x21, 0x00, 0x2a, - 0x00, 0xd0, 0x00, 0x21, 0x01, 0x60, 0x70, 0x47, - 0x10, 0x00, 0x07, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x01, 0x22, 0x02, 0x60, 0x0a, 0x60, 0x70, 0x47, - 0xb0, 0xb5, 0x0d, 0x1c, 0x01, 0x1c, 0x58, 0x31, - 0x3c, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x04, 0x1c, - 0x06, 0x22, 0x28, 0x1d, 0xfe, 0xf7, 0x77, 0xfb, - 0x21, 0x1c, 0x5e, 0x31, 0x06, 0x22, 0x28, 0x1c, - 0x0a, 0x30, 0xfe, 0xf7, 0x70, 0xfb, 0x21, 0x1c, - 0x64, 0x31, 0x06, 0x22, 0x28, 0x1c, 0x10, 0x30, - 0xfe, 0xf7, 0x69, 0xfb, 0xb0, 0xbd, 0xfe, 0xb5, - 0x00, 0x25, 0x1d, 0x72, 0x17, 0x1c, 0x0e, 0x1c, - 0xb2, 0x6d, 0x00, 0x21, 0x92, 0x19, 0x50, 0x32, - 0xd2, 0x7a, 0x3c, 0x00, 0x3c, 0x1e, 0x00, 0x00, - 0x1c, 0x1c, 0x5a, 0x72, 0x00, 0x78, 0x32, 0x1c, - 0x80, 0x32, 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, - 0x01, 0x90, 0x08, 0x98, 0x02, 0x92, 0x00, 0x28, - 0x01, 0xd1, 0x30, 0x7f, 0x2b, 0xe0, 0x37, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x00, 0xdd, 0x01, 0x1c, - 0x01, 0x98, 0x00, 0x28, 0x02, 0xd0, 0x08, 0x98, - 0x01, 0x28, 0x10, 0xd1, 0x02, 0x9a, 0x90, 0x6b, - 0x00, 0x28, 0x06, 0xd0, 0x3c, 0x00, 0x78, 0x1e, - 0x00, 0x00, 0x88, 0x42, 0x01, 0xd9, 0x45, 0x1a, - 0x01, 0x3d, 0x70, 0x19, 0xb0, 0x30, 0x03, 0xe0, - 0xb5, 0x6d, 0x01, 0x3d, 0x70, 0x19, 0x50, 0x30, - 0x00, 0x7b, 0x0f, 0xe0, 0x02, 0x9a, 0x10, 0x6a, - 0x00, 0x28, 0x07, 0xd0, 0x88, 0x42, 0x01, 0xd9, - 0x45, 0x1a, 0x01, 0x3d, 0x70, 0x19, 0xa0, 0x30, - 0x00, 0x79, 0x03, 0xe0, 0xbd, 0x69, 0x01, 0x3d, - 0x78, 0x19, 0x00, 0x7f, 0xa0, 0x72, 0x3c, 0x00, - 0xb4, 0x1e, 0x00, 0x00, 0x0e, 0xf0, 0x0c, 0xf8, - 0x0e, 0x28, 0x11, 0xd1, 0xa0, 0x7a, 0x08, 0xf0, - 0x67, 0xff, 0x00, 0x28, 0x0c, 0xd0, 0x78, 0x68, - 0x00, 0x28, 0x05, 0xd1, 0x1b, 0x48, 0x00, 0x25, - 0x00, 0x78, 0x08, 0xf0, 0x4b, 0xff, 0x02, 0xe0, - 0x45, 0x1e, 0x78, 0x19, 0x00, 0x7a, 0xa0, 0x72, - 0x02, 0x9a, 0x50, 0x69, 0x00, 0x28, 0x17, 0xd0, - 0x08, 0x98, 0x01, 0x28, 0x14, 0xd0, 0xa0, 0x7a, - 0x3c, 0x00, 0xf0, 0x1e, 0x00, 0x00, 0x08, 0xf0, - 0x4e, 0xff, 0x00, 0x28, 0x0f, 0xd0, 0x01, 0x98, - 0x00, 0x28, 0x07, 0xd0, 0x02, 0x20, 0x20, 0x72, - 0x70, 0x6c, 0x80, 0x19, 0x40, 0x30, 0xc0, 0x79, - 0x60, 0x72, 0x04, 0xe0, 0x7d, 0x68, 0x01, 0x3d, - 0x78, 0x19, 0x00, 0x7a, 0xa0, 0x72, 0x02, 0x9a, - 0xa0, 0x7a, 0x91, 0x69, 0x08, 0xf0, 0x51, 0xff, - 0x20, 0x60, 0x02, 0x9a, 0x60, 0x7a, 0x91, 0x69, - 0x08, 0xf0, 0x3c, 0x00, 0x2c, 0x1f, 0x00, 0x00, - 0x4b, 0xff, 0x60, 0x60, 0xa0, 0x7a, 0xe0, 0x72, - 0x25, 0x73, 0xfe, 0xbd, 0xd4, 0x7e, 0x01, 0x00, - 0x90, 0x57, 0x01, 0x00, 0x00, 0x06, 0x00, 0x0e, - 0x00, 0x2a, 0x8c, 0xb5, 0x01, 0xd0, 0x8a, 0x22, - 0x00, 0xe0, 0x88, 0x22, 0x00, 0xab, 0x1a, 0x80, - 0x0c, 0xf0, 0xc2, 0xf8, 0x01, 0x90, 0x68, 0x46, - 0x0b, 0xf0, 0xbc, 0xfa, 0x8c, 0xbd, 0x00, 0x00, - 0x01, 0x1c, 0x08, 0x48, 0x3c, 0x00, 0x68, 0x1f, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x68, 0x00, 0x28, - 0x09, 0xd0, 0x49, 0x68, 0x02, 0x20, 0x00, 0x29, - 0x00, 0xd1, 0x01, 0x20, 0x01, 0x06, 0x09, 0x0e, - 0x00, 0x20, 0x06, 0xf0, 0xd8, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0x1c, 0xb5, - 0x01, 0x90, 0x04, 0x1c, 0x44, 0x30, 0x01, 0xaa, - 0x69, 0x46, 0x11, 0xf0, 0xb8, 0xfd, 0x00, 0x28, - 0x0b, 0xd0, 0xa0, 0x69, 0x00, 0x21, 0x3c, 0x00, - 0xa4, 0x1f, 0x00, 0x00, 0xc2, 0x07, 0xd2, 0x0f, - 0x02, 0x20, 0xff, 0xf7, 0xc9, 0xff, 0x00, 0x21, - 0x20, 0x1c, 0x0f, 0xf0, 0xd9, 0xfe, 0x1c, 0xbd, - 0x04, 0x21, 0x98, 0x20, 0xff, 0xf7, 0x72, 0xf9, - 0xf9, 0xe7, 0x00, 0x00, 0x8c, 0xb5, 0x00, 0xab, - 0x84, 0x21, 0x19, 0x80, 0x05, 0x4b, 0x02, 0x1c, - 0x18, 0x1c, 0x99, 0x8a, 0x0c, 0xf0, 0x8e, 0xf8, - 0x01, 0x90, 0x68, 0x46, 0x0b, 0xf0, 0x7c, 0xfa, - 0x3c, 0x00, 0xe0, 0x1f, 0x00, 0x00, 0x8c, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x06, 0x49, 0x80, 0xb5, 0xc9, 0x68, - 0x14, 0x23, 0x40, 0x31, 0x89, 0x7a, 0x04, 0x4a, - 0x59, 0x43, 0x89, 0x18, 0x80, 0x00, 0x08, 0x58, - 0xfe, 0xf7, 0xe9, 0xf9, 0x80, 0xbd, 0x70, 0x7c, - 0x01, 0x00, 0x54, 0x47, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x20, 0xff, 0xf7, 0xd6, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x20, 0x00, 0x00, - 0x80, 0xb5, 0x12, 0x48, 0x11, 0x49, 0x80, 0x8a, - 0x0a, 0x8b, 0x00, 0x21, 0x00, 0x28, 0xc2, 0xb0, - 0x0c, 0xd1, 0x01, 0x2a, 0x05, 0xd0, 0x02, 0x2a, - 0x15, 0xd0, 0x00, 0xab, 0x5a, 0x80, 0x0e, 0x22, - 0x07, 0xe0, 0x02, 0x22, 0x00, 0xab, 0x5a, 0x80, - 0x99, 0x80, 0x04, 0xe0, 0x00, 0xab, 0x5a, 0x80, - 0x0d, 0x22, 0x00, 0xab, 0x9a, 0x80, 0x00, 0xab, - 0x18, 0x80, 0xff, 0x20, 0x3c, 0x00, 0x58, 0x20, - 0x00, 0x00, 0x98, 0x71, 0xd9, 0x71, 0x68, 0x46, - 0x00, 0xf0, 0xd1, 0xf9, 0x42, 0xb0, 0x80, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x09, 0xf0, 0x5f, 0xfc, 0x00, 0x20, 0x05, 0xf0, - 0x2a, 0xf9, 0x03, 0x4c, 0xe0, 0x8a, 0x05, 0xf0, - 0x36, 0xf9, 0x20, 0x1c, 0x0f, 0xf0, 0xb3, 0xfe, - 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x1c, 0xb5, - 0x09, 0xf0, 0x4f, 0xfc, 0x07, 0x20, 0x3c, 0x00, - 0x94, 0x20, 0x00, 0x00, 0x00, 0xab, 0x07, 0x4c, - 0x18, 0x80, 0xe1, 0x8a, 0x20, 0x1c, 0x0c, 0xf0, - 0x0b, 0xf8, 0x01, 0x90, 0x68, 0x46, 0x0b, 0xf0, - 0x17, 0xfa, 0x20, 0x1c, 0x0f, 0xf0, 0x9e, 0xfe, - 0x1c, 0xbd, 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x98, 0x20, 0xff, 0xf7, - 0xf1, 0xf8, 0x80, 0xbd, 0x10, 0xb5, 0x15, 0x4c, - 0xc2, 0xb0, 0xa0, 0x8a, 0x00, 0x28, 0x03, 0xd0, - 0x3c, 0x00, 0xd0, 0x20, 0x00, 0x00, 0x01, 0x28, - 0x1e, 0xd1, 0x02, 0x20, 0x00, 0xe0, 0x01, 0x20, - 0xe1, 0x68, 0x40, 0x31, 0x88, 0x72, 0x20, 0x69, - 0x08, 0xf0, 0x23, 0xfd, 0x02, 0x1c, 0x0c, 0x48, - 0x18, 0x38, 0x80, 0x88, 0xe1, 0x68, 0x0f, 0xf0, - 0xa4, 0xfe, 0xa0, 0x8a, 0x00, 0xab, 0x18, 0x80, - 0x01, 0x20, 0x58, 0x80, 0x00, 0x20, 0x98, 0x80, - 0xff, 0x21, 0x99, 0x71, 0xd8, 0x71, 0x68, 0x46, - 0x00, 0xf0, 0x3c, 0x00, 0x0c, 0x21, 0x00, 0x00, - 0x7b, 0xf9, 0x42, 0xb0, 0x10, 0xbd, 0x03, 0x21, - 0x98, 0x20, 0xff, 0xf7, 0xc5, 0xf8, 0xf8, 0xe7, - 0x70, 0x7c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0x03, 0x48, 0x0f, 0xf0, 0x60, 0xfe, - 0x00, 0x20, 0x05, 0xf0, 0xcd, 0xf8, 0x80, 0xbd, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x48, - 0x0f, 0xf0, 0x56, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0x70, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x48, 0x21, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x98, 0x20, - 0xff, 0xf7, 0xa9, 0xf8, 0x80, 0xbd, 0x80, 0xb5, - 0x03, 0x20, 0xff, 0xf7, 0x34, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0xf0, 0xb5, 0x21, 0x4e, 0x00, 0x27, - 0xb1, 0x8a, 0x30, 0x1c, 0x00, 0x25, 0x04, 0x24, - 0x00, 0x29, 0x00, 0x8b, 0xc3, 0xb0, 0x1e, 0xd1, - 0x01, 0x28, 0x07, 0xd0, 0x31, 0x1c, 0x49, 0x8b, - 0x02, 0x28, 0x12, 0xd1, 0x00, 0x29, 0x3c, 0x00, - 0x84, 0x21, 0x00, 0x00, 0x07, 0xd1, 0x00, 0x24, - 0x05, 0xe0, 0x00, 0x24, 0x01, 0x25, 0x02, 0x20, - 0x00, 0xab, 0xd8, 0x80, 0x1f, 0x81, 0x0f, 0xf0, - 0x7f, 0xff, 0x00, 0x2c, 0x10, 0xd1, 0xf1, 0x68, - 0x05, 0x20, 0x40, 0x31, 0x88, 0x72, 0x0e, 0xe0, - 0x00, 0x29, 0x1a, 0xd1, 0x00, 0xab, 0xd8, 0x80, - 0x0e, 0x20, 0x02, 0xe0, 0x00, 0xab, 0xd8, 0x80, - 0x0d, 0x20, 0x00, 0xab, 0x18, 0x81, 0x07, 0xe0, - 0x3c, 0x00, 0xc0, 0x21, 0x00, 0x00, 0x30, 0x1c, - 0x0f, 0xf0, 0x13, 0xfe, 0x20, 0x1c, 0xff, 0xf7, - 0xfc, 0xfe, 0x00, 0x2d, 0x08, 0xd0, 0xb0, 0x8a, - 0x00, 0xab, 0x98, 0x80, 0xff, 0x20, 0x98, 0x72, - 0xdf, 0x72, 0x01, 0xa8, 0x00, 0xf0, 0x11, 0xf9, - 0x43, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0x10, 0xb5, 0x00, 0x20, 0x05, 0xf0, - 0x6c, 0xf8, 0x04, 0x4c, 0xe0, 0x8a, 0x05, 0xf0, - 0x78, 0xf8, 0x3c, 0x00, 0xfc, 0x21, 0x00, 0x00, - 0x0f, 0xf0, 0x4c, 0xff, 0x20, 0x1c, 0x0f, 0xf0, - 0xf3, 0xfd, 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x80, 0xb5, 0x04, 0x20, 0xff, 0xf7, 0xd8, 0xfe, - 0x01, 0x48, 0x0f, 0xf0, 0xe9, 0xfd, 0x80, 0xbd, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x20, - 0xff, 0xf7, 0xce, 0xfe, 0x01, 0x20, 0x05, 0xf0, - 0x5f, 0xf8, 0x02, 0x48, 0x0f, 0xf0, 0xdc, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x22, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, - 0x03, 0x20, 0xff, 0xf7, 0xc0, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x1d, 0x4d, 0xc2, 0xb0, - 0x28, 0x8b, 0x00, 0xab, 0xff, 0x21, 0x58, 0x80, - 0x99, 0x71, 0x00, 0x21, 0xd9, 0x71, 0xaa, 0x8a, - 0x00, 0x24, 0x01, 0x2a, 0x18, 0xd1, 0x2a, 0x1c, - 0x52, 0x8b, 0x02, 0x28, 0x0f, 0xd1, 0x00, 0x2a, - 0x16, 0xd1, 0x03, 0x20, 0x58, 0x80, 0x3c, 0x00, - 0x74, 0x22, 0x00, 0x00, 0x99, 0x80, 0x2c, 0x1c, - 0xff, 0x22, 0x98, 0x1d, 0xe9, 0x69, 0xfe, 0xf7, - 0x3b, 0xf9, 0xe1, 0x68, 0x04, 0x20, 0x40, 0x31, - 0x88, 0x72, 0x10, 0xe0, 0x00, 0x2a, 0x06, 0xd1, - 0x01, 0x24, 0x0e, 0x20, 0x01, 0xe0, 0x01, 0x24, - 0x0d, 0x20, 0x00, 0xab, 0x98, 0x80, 0x28, 0x1c, - 0x0f, 0xf0, 0xa4, 0xfd, 0x04, 0x20, 0xff, 0xf7, - 0x8d, 0xfe, 0x00, 0x2c, 0x05, 0xd0, 0xa8, 0x8a, - 0x3c, 0x00, 0xb0, 0x22, 0x00, 0x00, 0x00, 0xab, - 0x18, 0x80, 0x68, 0x46, 0x00, 0xf0, 0xa5, 0xf8, - 0x42, 0xb0, 0xb0, 0xbd, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0x10, 0xb5, 0x00, 0x20, 0x05, 0xf0, - 0x00, 0xf8, 0x03, 0x4c, 0xe0, 0x8a, 0x05, 0xf0, - 0x0c, 0xf8, 0x20, 0x1c, 0x0f, 0xf0, 0x89, 0xfd, - 0x10, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, - 0x04, 0x20, 0xff, 0xf7, 0x6e, 0xfe, 0x01, 0x48, - 0x0f, 0xf0, 0x3c, 0x00, 0xec, 0x22, 0x00, 0x00, - 0x7f, 0xfd, 0x80, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x20, 0xff, 0xf7, 0x64, 0xfe, - 0x01, 0x20, 0x04, 0xf0, 0xf5, 0xff, 0x02, 0x48, - 0x0f, 0xf0, 0x72, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x20, - 0xff, 0xf7, 0x56, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x19, 0x4d, 0x04, 0x24, 0xa9, 0x8a, - 0x28, 0x1c, 0x02, 0x8b, 0x3c, 0x00, 0x28, 0x23, - 0x00, 0x00, 0xc2, 0xb0, 0x01, 0x29, 0x14, 0xd1, - 0x40, 0x8b, 0x04, 0x2a, 0x0b, 0xd1, 0x00, 0x28, - 0x00, 0xd1, 0x00, 0x24, 0x0f, 0xf0, 0xad, 0xfe, - 0x00, 0x2c, 0x19, 0xd1, 0xe9, 0x68, 0x05, 0x20, - 0x40, 0x31, 0x88, 0x72, 0x17, 0xe0, 0x00, 0x28, - 0x10, 0xd1, 0x00, 0xab, 0x5a, 0x80, 0x0e, 0x20, - 0x02, 0xe0, 0x00, 0xab, 0x5a, 0x80, 0x0d, 0x20, - 0x00, 0xab, 0x98, 0x80, 0x19, 0x80, 0x3c, 0x00, - 0x64, 0x23, 0x00, 0x00, 0xff, 0x20, 0x98, 0x71, - 0x00, 0x20, 0xd8, 0x71, 0x68, 0x46, 0x00, 0xf0, - 0x49, 0xf8, 0x42, 0xb0, 0xb0, 0xbd, 0x28, 0x1c, - 0x0f, 0xf0, 0x38, 0xfd, 0x20, 0x1c, 0xff, 0xf7, - 0x21, 0xfe, 0xf6, 0xe7, 0x70, 0x7c, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x20, 0x04, 0xf0, 0x9e, 0xff, - 0x03, 0x4c, 0xe0, 0x8a, 0x04, 0xf0, 0xaa, 0xff, - 0x20, 0x1c, 0x0f, 0xf0, 0x27, 0xfd, 0x10, 0xbd, - 0x3c, 0x00, 0xa0, 0x23, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0x80, 0xb5, 0x04, 0x20, 0xff, 0xf7, - 0x0c, 0xfe, 0x01, 0x48, 0x0f, 0xf0, 0x1d, 0xfd, - 0x80, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x20, 0xff, 0xf7, 0x02, 0xfe, 0x01, 0x20, - 0x04, 0xf0, 0x93, 0xff, 0x02, 0x48, 0x0f, 0xf0, - 0x10, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0x70, 0x7c, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x01, 0x1c, - 0x44, 0x31, 0x3c, 0x00, 0xdc, 0x23, 0x00, 0x00, - 0x04, 0x1c, 0x06, 0x22, 0x28, 0x1c, 0xfe, 0xf7, - 0x89, 0xf8, 0xec, 0x60, 0x20, 0x69, 0x03, 0xf0, - 0x97, 0xf8, 0x01, 0x1c, 0x06, 0x22, 0xa8, 0x18, - 0xfe, 0xf7, 0x80, 0xf8, 0x04, 0x20, 0xff, 0xf7, - 0xf7, 0xfd, 0xb0, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x90, 0xb5, 0x04, 0x1c, 0x80, 0x88, 0x93, 0xb0, - 0x00, 0x28, 0x06, 0xd0, 0x15, 0x49, 0x06, 0x22, - 0x48, 0x80, 0x18, 0x31, 0x3c, 0x00, 0x18, 0x24, - 0x00, 0x00, 0x88, 0x1f, 0xfe, 0xf7, 0x6d, 0xf8, - 0x68, 0x46, 0x0c, 0xf0, 0x14, 0xf8, 0x20, 0x88, - 0x01, 0x28, 0x08, 0xd1, 0x60, 0x88, 0x03, 0x28, - 0x05, 0xd1, 0xa0, 0x88, 0x00, 0x28, 0x02, 0xd1, - 0x06, 0x20, 0x0c, 0xa9, 0x08, 0x70, 0xa0, 0x79, - 0x06, 0x21, 0xff, 0x28, 0x04, 0xd0, 0xe0, 0x79, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x1c, 0x08, 0x31, - 0x0b, 0x20, 0x08, 0xaa, 0x50, 0x72, 0x3c, 0x00, - 0x54, 0x24, 0x00, 0x00, 0x20, 0x1c, 0x08, 0xf0, - 0x3b, 0xff, 0x03, 0x90, 0x68, 0x46, 0x0b, 0xf0, - 0x31, 0xf8, 0x13, 0xb0, 0x90, 0xbd, 0x00, 0x00, - 0x58, 0x7c, 0x01, 0x00, 0x07, 0x4b, 0x1a, 0x78, - 0x82, 0x42, 0x01, 0xd0, 0x00, 0x29, 0x07, 0xd0, - 0xff, 0x20, 0x18, 0x70, 0x04, 0x48, 0x01, 0x88, - 0x01, 0x22, 0x52, 0x03, 0x91, 0x43, 0x01, 0x80, - 0x70, 0x47, 0x00, 0x00, 0x4c, 0x7b, 0x01, 0x00, - 0x3c, 0x00, 0x90, 0x24, 0x00, 0x00, 0x32, 0x80, - 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x0c, 0x23, - 0x07, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x79, - 0x0a, 0xf0, 0x4f, 0xf9, 0x01, 0x20, 0x03, 0x49, - 0xa0, 0x40, 0x08, 0x39, 0x0a, 0x78, 0x10, 0x43, - 0x08, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x74, 0x7a, - 0x01, 0x00, 0x03, 0x4a, 0x00, 0x21, 0x11, 0x54, - 0x80, 0x00, 0x30, 0x32, 0x10, 0x58, 0x01, 0x70, - 0x70, 0x47, 0x3c, 0x00, 0xcc, 0x24, 0x00, 0x00, - 0xe0, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xfe, 0xf7, 0x12, 0xff, - 0x20, 0x1c, 0xff, 0xf7, 0xed, 0xff, 0x00, 0x21, - 0x20, 0x1c, 0x0e, 0xf0, 0x89, 0xfb, 0x10, 0xbd, - 0x05, 0x49, 0x80, 0xb5, 0x88, 0x60, 0x08, 0x7f, - 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, 0x08, 0x58, - 0xfd, 0xf7, 0x6c, 0xff, 0x80, 0xbd, 0x00, 0x00, - 0xd4, 0x79, 0x01, 0x00, 0x3c, 0x00, 0x08, 0x25, - 0x00, 0x00, 0x94, 0x46, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x21, 0x91, 0x20, 0xfe, 0xf7, 0xc7, 0xfe, - 0x80, 0xbd, 0x02, 0x4a, 0x11, 0x68, 0x81, 0x43, - 0x11, 0x60, 0x70, 0x47, 0x00, 0x00, 0x78, 0x6e, - 0x01, 0x00, 0x80, 0xb5, 0xfe, 0xf7, 0xe9, 0xfe, - 0x80, 0xbd, 0x80, 0xb5, 0xfe, 0xf7, 0xe5, 0xfe, - 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, 0x31, 0xfa, - 0x80, 0xbd, 0x03, 0x49, 0x80, 0xb5, 0x3c, 0x00, - 0x44, 0x25, 0x00, 0x00, 0x04, 0x20, 0x88, 0x60, - 0x00, 0xf0, 0xd0, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x99, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, - 0x99, 0xfb, 0x80, 0xbd, 0x38, 0xb5, 0x20, 0x28, - 0x15, 0xd2, 0x0d, 0x4c, 0x22, 0x1c, 0x20, 0x32, - 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0xd2, 0x79, - 0x5a, 0x70, 0x0a, 0x4b, 0x82, 0x00, 0x99, 0x50, - 0x3c, 0x00, 0x80, 0x25, 0x00, 0x00, 0x01, 0x21, - 0x81, 0x40, 0x08, 0x48, 0x01, 0x60, 0x42, 0x68, - 0x11, 0x43, 0x41, 0x60, 0x00, 0xab, 0x18, 0x88, - 0xe0, 0x84, 0x38, 0xbd, 0x01, 0x21, 0xff, 0x20, - 0xfe, 0xf7, 0x83, 0xfe, 0xf9, 0xe7, 0x00, 0x10, - 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0x00, 0x40, - 0x07, 0x00, 0x20, 0x28, 0x09, 0xd2, 0x05, 0x49, - 0x06, 0x4b, 0x82, 0x00, 0x99, 0x50, 0x05, 0x4a, - 0x51, 0x68, 0x3c, 0x00, 0xbc, 0x25, 0x00, 0x00, - 0x01, 0x23, 0x83, 0x40, 0x99, 0x43, 0x51, 0x60, - 0x70, 0x47, 0x00, 0x00, 0xa9, 0x75, 0x00, 0x00, - 0x30, 0x74, 0x01, 0x00, 0x00, 0x40, 0x07, 0x00, - 0x02, 0x4a, 0x11, 0x68, 0x08, 0x43, 0x10, 0x60, - 0x70, 0x47, 0x00, 0x00, 0x78, 0x6e, 0x01, 0x00, - 0x0b, 0x48, 0x01, 0x68, 0x03, 0x22, 0x12, 0x04, - 0x11, 0x43, 0x01, 0x60, 0x01, 0x68, 0x07, 0x22, - 0x12, 0x06, 0x91, 0x43, 0x3c, 0x00, 0xf8, 0x25, - 0x00, 0x00, 0x01, 0x22, 0x52, 0x06, 0x89, 0x18, - 0x01, 0x60, 0x01, 0x68, 0x12, 0x0c, 0x11, 0x43, - 0x01, 0x60, 0x01, 0x68, 0x52, 0x08, 0x11, 0x43, - 0x01, 0x60, 0x70, 0x47, 0x00, 0x00, 0x80, 0x00, - 0x07, 0x00, 0xfe, 0xb5, 0x1c, 0x4e, 0x05, 0x1c, - 0xb0, 0x8a, 0xf2, 0x68, 0x12, 0xd0, 0x01, 0x24, - 0x00, 0x29, 0x09, 0xd1, 0x11, 0x6d, 0x02, 0xaa, - 0x01, 0xab, 0xfe, 0xf7, 0xf8, 0xfe, 0x3c, 0x00, - 0x34, 0x26, 0x00, 0x00, 0x02, 0x98, 0x00, 0x28, - 0x01, 0xd0, 0x00, 0x24, 0x0b, 0xe0, 0x01, 0xaa, - 0x02, 0xa9, 0x28, 0x1c, 0xfe, 0xf7, 0x70, 0xff, - 0x05, 0xe0, 0x11, 0x6d, 0x02, 0xaa, 0x00, 0x24, - 0x01, 0xab, 0xfe, 0xf7, 0x01, 0xff, 0x0e, 0x49, - 0x08, 0x1c, 0x20, 0x30, 0x82, 0x79, 0x00, 0xab, - 0x1a, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x30, 0x68, - 0x00, 0x28, 0x02, 0xd1, 0x02, 0x98, 0x30, 0x60, - 0x3c, 0x00, 0x70, 0x26, 0x00, 0x00, 0x02, 0xe0, - 0x02, 0x98, 0x72, 0x68, 0xd0, 0x60, 0x01, 0x98, - 0x00, 0xab, 0x70, 0x60, 0x18, 0x88, 0xc8, 0x84, - 0xf0, 0x68, 0xc0, 0x6c, 0xf0, 0x60, 0x20, 0x1c, - 0xfe, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x00, 0x10, - 0x07, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0x54, 0x27, - 0x1d, 0x4e, 0x00, 0x20, 0x30, 0x60, 0x70, 0x60, - 0x67, 0x43, 0x38, 0x04, 0x15, 0x1c, 0x00, 0x0c, - 0xb1, 0x82, 0x3c, 0x00, 0xac, 0x26, 0x00, 0x00, - 0xff, 0xf7, 0x96, 0xf8, 0x08, 0x21, 0x30, 0x61, - 0x00, 0x26, 0x17, 0x4a, 0x14, 0xe0, 0x03, 0x1c, - 0x24, 0x33, 0x42, 0x61, 0x03, 0x61, 0xc6, 0x61, - 0x01, 0x83, 0x08, 0x33, 0x03, 0x60, 0xb1, 0x23, - 0x43, 0x60, 0x03, 0x1c, 0x64, 0x33, 0xc3, 0x60, - 0x0c, 0x23, 0x03, 0x81, 0x03, 0x1c, 0x54, 0x33, - 0x4c, 0x30, 0x28, 0xc0, 0x01, 0x3c, 0x18, 0x1c, - 0x00, 0x2c, 0xe8, 0xd1, 0x3c, 0x00, 0xe8, 0x26, - 0x00, 0x00, 0x09, 0x4e, 0x07, 0x22, 0x30, 0x69, - 0xd2, 0x43, 0xc1, 0x19, 0x50, 0x50, 0x02, 0x1c, - 0x10, 0x32, 0x80, 0x39, 0x8a, 0x63, 0xf0, 0x60, - 0xb0, 0x60, 0x00, 0x21, 0x00, 0x20, 0xff, 0xf7, - 0x88, 0xff, 0x30, 0x69, 0xf0, 0x60, 0xb0, 0x60, - 0xf8, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x91, 0x00, - 0x05, 0x00, 0x01, 0x48, 0x40, 0x6a, 0x70, 0x47, - 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, 0x3c, 0x00, - 0x24, 0x27, 0x00, 0x00, 0x01, 0x48, 0x00, 0x88, - 0x70, 0x47, 0x00, 0x00, 0xfc, 0x6b, 0x01, 0x00, - 0x06, 0x49, 0x80, 0xb5, 0x08, 0x88, 0x01, 0x30, - 0x08, 0x80, 0x05, 0x49, 0x08, 0x20, 0x08, 0x60, - 0x04, 0x49, 0x88, 0x69, 0x88, 0x61, 0x00, 0xf0, - 0x21, 0xf8, 0x80, 0xbd, 0xfc, 0x6b, 0x01, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x03, 0x4a, 0x01, 0x20, 0x12, 0x1d, 0x06, 0xca, - 0x3c, 0x00, 0x60, 0x27, 0x00, 0x00, 0x91, 0x42, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0xe8, 0x7d, - 0x01, 0x00, 0x06, 0x48, 0x00, 0xb5, 0xc0, 0x7c, - 0x00, 0x28, 0x03, 0xd1, 0xff, 0xf7, 0xef, 0xff, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, 0x00, 0xbd, - 0x00, 0x20, 0x00, 0xbd, 0x00, 0x00, 0xa0, 0x80, - 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x80, 0x07, - 0x02, 0xd5, 0x06, 0xf0, 0x3e, 0xfd, 0x03, 0xe0, - 0xe0, 0x07, 0x3c, 0x00, 0x9c, 0x27, 0x00, 0x00, - 0x01, 0xd5, 0x06, 0xf0, 0xe3, 0xfd, 0x60, 0x07, - 0x01, 0xd5, 0xfe, 0xf7, 0xab, 0xfd, 0x10, 0xbd, - 0x02, 0x4a, 0x01, 0x1c, 0x10, 0x68, 0x11, 0x60, - 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, - 0x38, 0xb5, 0x20, 0x4d, 0x2c, 0x1c, 0x20, 0x34, - 0xa0, 0x79, 0x00, 0xab, 0x18, 0x70, 0xe0, 0x79, - 0x58, 0x70, 0xfe, 0xf7, 0x27, 0xfa, 0x00, 0xab, - 0x18, 0x88, 0xe8, 0x84, 0x3c, 0x00, 0xd8, 0x27, - 0x00, 0x00, 0x1a, 0x48, 0x81, 0x78, 0x08, 0x22, - 0x91, 0x43, 0x81, 0x70, 0x81, 0x78, 0x11, 0x43, - 0x81, 0x70, 0x17, 0x48, 0x41, 0x68, 0x80, 0x22, - 0x91, 0x43, 0x41, 0x60, 0x01, 0x68, 0x11, 0x43, - 0x01, 0x60, 0x00, 0x20, 0x01, 0x30, 0x64, 0x28, - 0xfc, 0xd3, 0xa0, 0x79, 0x0f, 0x4d, 0x00, 0xab, - 0x18, 0x70, 0xe0, 0x79, 0x10, 0x4c, 0x58, 0x70, - 0x20, 0x1c, 0x10, 0x30, 0x00, 0xf0, 0x3c, 0x00, - 0x14, 0x28, 0x00, 0x00, 0xdf, 0xfb, 0x00, 0x20, - 0xc0, 0x43, 0xa0, 0x61, 0xff, 0xf7, 0x9c, 0xff, - 0x00, 0x28, 0x09, 0xd0, 0x0a, 0x49, 0x08, 0x69, - 0x01, 0x30, 0x08, 0x61, 0x00, 0x20, 0x3c, 0x31, - 0x89, 0x68, 0x48, 0x63, 0x06, 0xf0, 0xee, 0xfc, - 0x00, 0xab, 0x18, 0x88, 0xe8, 0x84, 0x38, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, - 0xf4, 0x00, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x3c, 0x00, 0x50, 0x28, 0x00, 0x00, 0xe8, 0x7d, - 0x01, 0x00, 0x0a, 0x48, 0x80, 0xb5, 0x00, 0x6a, - 0x00, 0x28, 0x01, 0xd0, 0xfe, 0xf7, 0xc1, 0xf9, - 0x07, 0x48, 0x07, 0x49, 0x3c, 0x30, 0x80, 0x68, - 0x10, 0x30, 0x48, 0x61, 0x01, 0x20, 0x08, 0x61, - 0x05, 0x49, 0x08, 0x68, 0x80, 0x22, 0x90, 0x43, - 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0xe8, 0x7d, - 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, 0xf4, 0x00, - 0x07, 0x00, 0x3c, 0x00, 0x8c, 0x28, 0x00, 0x00, - 0x80, 0xb5, 0x0c, 0xf0, 0xcb, 0xfe, 0x06, 0xf0, - 0xbf, 0xfc, 0x80, 0xbd, 0x01, 0x49, 0xc8, 0x62, - 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, - 0x02, 0x4a, 0x91, 0x6a, 0x08, 0x43, 0x90, 0x62, - 0x70, 0x47, 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, - 0x18, 0x23, 0x06, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x00, 0x21, 0x02, 0x79, 0x03, 0x68, 0x1a, 0x70, - 0x01, 0x31, 0x08, 0x30, 0x3c, 0x00, 0xc8, 0x28, - 0x00, 0x00, 0x03, 0x29, 0xf8, 0xd3, 0x70, 0x47, - 0x00, 0x00, 0x28, 0x52, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, - 0x81, 0x62, 0x70, 0x47, 0x00, 0x00, 0x85, 0x75, - 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0xf8, 0xb5, - 0xff, 0xf7, 0x33, 0xff, 0x28, 0x4f, 0x00, 0x28, - 0x04, 0xd0, 0xff, 0xf7, 0xc8, 0xff, 0x38, 0x6a, - 0x01, 0x30, 0x38, 0x62, 0xf8, 0x6a, 0x3c, 0x00, - 0x04, 0x29, 0x00, 0x00, 0x00, 0x28, 0x02, 0xd0, - 0x01, 0x89, 0x04, 0x39, 0x01, 0x81, 0x38, 0x6b, - 0x00, 0x25, 0x00, 0x28, 0x08, 0xd0, 0x0b, 0x20, - 0x3d, 0x63, 0x10, 0xf0, 0xe5, 0xfa, 0x1e, 0x49, - 0x08, 0x68, 0x21, 0x22, 0x90, 0x43, 0x08, 0x60, - 0x38, 0x78, 0x3c, 0x21, 0x1b, 0x4a, 0x41, 0x43, - 0x8c, 0x18, 0xff, 0x22, 0x79, 0x6a, 0x3a, 0x70, - 0x00, 0x29, 0x0c, 0xd0, 0xb9, 0x69, 0x01, 0x31, - 0x3c, 0x00, 0x40, 0x29, 0x00, 0x00, 0xb9, 0x61, - 0x7d, 0x62, 0xbd, 0x68, 0x00, 0x2d, 0x04, 0xd0, - 0x63, 0x6b, 0x7a, 0x6b, 0x00, 0x21, 0xfd, 0xf7, - 0x47, 0xfd, 0xf8, 0xbd, 0x04, 0x28, 0x03, 0xd3, - 0x01, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0xa1, 0xfc, - 0x38, 0x69, 0x26, 0x1c, 0x01, 0x30, 0x38, 0x61, - 0x20, 0x36, 0x30, 0x78, 0x02, 0x28, 0x03, 0xd0, - 0x0c, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x95, 0xfc, - 0x35, 0x70, 0x3c, 0x00, 0x7c, 0x29, 0x00, 0x00, - 0xa1, 0x69, 0x00, 0x29, 0xe8, 0xd0, 0x63, 0x6b, - 0x30, 0x34, 0x20, 0x78, 0x0c, 0x1c, 0x00, 0x21, - 0x7a, 0x6b, 0xfd, 0xf7, 0x27, 0xfd, 0xdf, 0xe7, - 0x04, 0x6c, 0x01, 0x00, 0xf4, 0x00, 0x07, 0x00, - 0x18, 0xdb, 0x01, 0x00, 0x10, 0xb5, 0x0b, 0x4c, - 0x60, 0x6a, 0x00, 0x28, 0x0e, 0xd0, 0x0a, 0x48, - 0x00, 0xf0, 0x12, 0xfb, 0x00, 0x20, 0x60, 0x62, - 0xa4, 0x68, 0x00, 0x2c, 0x3c, 0x00, 0xb8, 0x29, - 0x00, 0x00, 0x05, 0xd0, 0x7e, 0x23, 0xdb, 0x43, - 0x00, 0x22, 0x01, 0x21, 0xfd, 0xf7, 0x0d, 0xfd, - 0x10, 0xbd, 0xe0, 0x69, 0x01, 0x30, 0xe0, 0x61, - 0x10, 0xbd, 0x04, 0x6c, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x09, 0x48, 0x41, 0x68, 0x3f, 0x22, - 0x12, 0x04, 0x91, 0x43, 0x0d, 0x22, 0x12, 0x04, - 0x89, 0x18, 0x41, 0x60, 0x41, 0x68, 0x01, 0x22, - 0x52, 0x02, 0x91, 0x43, 0x41, 0x60, 0x3c, 0x00, - 0xf4, 0x29, 0x00, 0x00, 0x03, 0x48, 0x81, 0x78, - 0x81, 0x70, 0x81, 0x78, 0x81, 0x70, 0x70, 0x47, - 0x80, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, - 0xf0, 0xb5, 0x01, 0x25, 0x08, 0x24, 0x00, 0x20, - 0x0e, 0x4a, 0x0f, 0x49, 0x00, 0x26, 0x3c, 0x23, - 0x43, 0x43, 0xd1, 0x52, 0x9b, 0x18, 0x5d, 0x71, - 0x9b, 0x60, 0x5e, 0x61, 0x1c, 0x82, 0xc0, 0x27, - 0xdf, 0x60, 0x20, 0x27, 0xfe, 0x54, 0x9e, 0x61, - 0x3c, 0x00, 0x30, 0x2a, 0x00, 0x00, 0x30, 0x27, - 0xfe, 0x54, 0x07, 0x4f, 0x3f, 0x18, 0x20, 0x37, - 0x01, 0x30, 0x05, 0x28, 0x9f, 0x63, 0xe9, 0xd3, - 0x05, 0x48, 0xff, 0x32, 0x01, 0x32, 0x90, 0x62, - 0xf0, 0xbd, 0x18, 0xdb, 0x01, 0x00, 0xbe, 0xba, - 0x00, 0x00, 0x30, 0x80, 0x07, 0x00, 0x06, 0x6c, - 0x01, 0x00, 0x01, 0x49, 0x48, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x05, 0x49, - 0x08, 0x5c, 0x3c, 0x00, 0x6c, 0x2a, 0x00, 0x00, - 0x05, 0x49, 0x49, 0x68, 0x40, 0x18, 0xc0, 0x06, - 0xc0, 0x0e, 0x04, 0x49, 0x20, 0x30, 0x48, 0x72, - 0x70, 0x47, 0x00, 0x00, 0xa0, 0x57, 0x01, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x80, 0xb5, 0x15, 0x21, 0x84, 0x20, 0xfe, 0xf7, - 0x07, 0xfc, 0x80, 0xbd, 0xf8, 0xb5, 0x43, 0x48, - 0x84, 0x68, 0x03, 0x34, 0x42, 0x4d, 0x04, 0xe0, - 0x20, 0x1c, 0x10, 0xf0, 0x3c, 0x00, 0xa8, 0x2a, - 0x00, 0x00, 0xb9, 0xf8, 0x00, 0x28, 0x71, 0xd1, - 0x28, 0x69, 0xc0, 0x07, 0xf7, 0xd5, 0x3e, 0x48, - 0x28, 0x60, 0x3e, 0x4a, 0x14, 0x1c, 0x20, 0x34, - 0x20, 0x79, 0x00, 0x90, 0x3c, 0x23, 0x3c, 0x49, - 0x58, 0x43, 0x45, 0x18, 0x28, 0x79, 0xff, 0xf7, - 0xcc, 0xff, 0x28, 0x1c, 0x3a, 0x49, 0x08, 0x30, - 0x48, 0x60, 0x01, 0x26, 0x08, 0x1c, 0x06, 0x60, - 0x68, 0x6a, 0x00, 0x28, 0x0d, 0xd0, 0x3c, 0x00, - 0xe4, 0x2a, 0x00, 0x00, 0xa9, 0x6a, 0x92, 0x6a, - 0x35, 0x4b, 0x9f, 0x68, 0xd7, 0x1b, 0x1a, 0x68, - 0x51, 0x18, 0x79, 0x18, 0x8a, 0x42, 0x5a, 0x68, - 0x00, 0xd8, 0x00, 0xe0, 0x01, 0x32, 0x06, 0xc0, - 0xe8, 0x6a, 0xfe, 0xf7, 0x87, 0xff, 0x2d, 0x49, - 0xe8, 0x6a, 0x48, 0x60, 0x30, 0x1c, 0x0e, 0x60, - 0x66, 0x79, 0x1f, 0xe0, 0x2b, 0x48, 0x46, 0x61, - 0x04, 0x7f, 0x29, 0x49, 0x20, 0x1c, 0x50, 0x39, - 0x3c, 0x00, 0x20, 0x2b, 0x00, 0x00, 0x89, 0x6a, - 0xfd, 0xf7, 0x5a, 0xfc, 0x00, 0x98, 0x84, 0x42, - 0x10, 0xd0, 0x3c, 0x20, 0x22, 0x49, 0x60, 0x43, - 0x40, 0x18, 0x87, 0x69, 0x00, 0x2f, 0x09, 0xd0, - 0x00, 0x21, 0x20, 0x30, 0x01, 0x70, 0x7e, 0x23, - 0xdb, 0x43, 0x02, 0x21, 0x00, 0x22, 0x20, 0x1c, - 0xfd, 0xf7, 0x4c, 0xfc, 0x01, 0x20, 0xa0, 0x40, - 0x86, 0x43, 0x00, 0x2e, 0xdd, 0xd1, 0xe9, 0x69, - 0x00, 0x29, 0x3c, 0x00, 0x5c, 0x2b, 0x00, 0x00, - 0x03, 0xd0, 0x30, 0x20, 0x40, 0x5d, 0xfd, 0xf7, - 0x3a, 0xfc, 0x16, 0x4c, 0x50, 0x3c, 0x60, 0x6a, - 0x00, 0x28, 0x03, 0xd0, 0x0a, 0x21, 0x84, 0x20, - 0xfe, 0xf7, 0x96, 0xfb, 0x20, 0x35, 0x28, 0x78, - 0x01, 0x28, 0x03, 0xd0, 0x0b, 0x21, 0x84, 0x20, - 0xfe, 0xf7, 0x8e, 0xfb, 0x02, 0x20, 0x28, 0x70, - 0xe0, 0x68, 0x01, 0x30, 0x00, 0xe0, 0x07, 0xe0, - 0xe0, 0x60, 0x00, 0x98, 0x3c, 0x00, 0x98, 0x2b, - 0x00, 0x00, 0x20, 0x70, 0x00, 0x98, 0x60, 0x70, - 0x0a, 0x48, 0x00, 0x68, 0x60, 0x63, 0xf8, 0xbd, - 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x40, - 0x07, 0x00, 0x01, 0x00, 0x00, 0x01, 0x30, 0x80, - 0x07, 0x00, 0x18, 0xdb, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x54, 0x6c, 0x01, 0x00, 0x00, 0xa0, - 0x07, 0x00, 0x78, 0x6e, 0x01, 0x00, 0x3c, 0x22, - 0x3c, 0x23, 0x4a, 0x43, 0x09, 0x49, 0x3c, 0x00, - 0xd4, 0x2b, 0x00, 0x00, 0xb0, 0xb5, 0x54, 0x18, - 0x58, 0x43, 0x45, 0x18, 0x21, 0x1c, 0x38, 0x22, - 0x28, 0x1c, 0xfd, 0xf7, 0xe5, 0xfc, 0xa0, 0x6b, - 0x00, 0x78, 0xa9, 0x6b, 0x08, 0x70, 0x00, 0x20, - 0x20, 0x34, 0x20, 0x70, 0xb0, 0xbd, 0x00, 0x00, - 0x18, 0xdb, 0x01, 0x00, 0x3c, 0x23, 0x07, 0x49, - 0x58, 0x43, 0x10, 0xb5, 0x44, 0x18, 0x20, 0x34, - 0x20, 0x78, 0x02, 0x28, 0x03, 0xd1, 0x0d, 0x21, - 0x3c, 0x00, 0x10, 0x2c, 0x00, 0x00, 0x84, 0x20, - 0xfe, 0xf7, 0x47, 0xfb, 0x00, 0x20, 0x20, 0x70, - 0x10, 0xbd, 0x18, 0xdb, 0x01, 0x00, 0xff, 0xb5, - 0x3c, 0x20, 0x48, 0x43, 0x1a, 0x49, 0x81, 0xb0, - 0x44, 0x18, 0x26, 0x1c, 0x20, 0x36, 0x30, 0x78, - 0x15, 0x1c, 0x0f, 0x9f, 0x02, 0x28, 0x03, 0xd1, - 0x04, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x31, 0xfb, - 0x01, 0x20, 0x30, 0x70, 0x25, 0x71, 0x0b, 0x99, - 0x30, 0x22, 0x3c, 0x00, 0x4c, 0x2c, 0x00, 0x00, - 0x61, 0x80, 0x0a, 0x99, 0xe1, 0x62, 0x0d, 0x99, - 0xa1, 0x61, 0x0c, 0x99, 0xe1, 0x61, 0x0e, 0x99, - 0x61, 0x62, 0xa7, 0x62, 0x01, 0x99, 0x11, 0x55, - 0x7e, 0x21, 0xc9, 0x43, 0x61, 0x63, 0x04, 0x99, - 0x00, 0x29, 0x00, 0xd1, 0x00, 0x20, 0x06, 0x1c, - 0x28, 0x1c, 0x08, 0xf0, 0x8b, 0xf8, 0x00, 0x28, - 0x01, 0xd0, 0x02, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0xa1, 0x6b, 0x30, 0x43, 0x3c, 0x00, 0x88, 0x2c, - 0x00, 0x00, 0x08, 0x70, 0x05, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0x18, 0xdb, 0x01, 0x00, 0x80, 0xb5, - 0x14, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x03, 0xfb, - 0x80, 0xbd, 0x01, 0x48, 0x40, 0x78, 0x70, 0x47, - 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x02, 0x48, - 0x00, 0x69, 0xc0, 0x07, 0xc0, 0x0f, 0x70, 0x47, - 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x01, 0x1c, - 0x3c, 0x23, 0x04, 0x4a, 0x59, 0x43, 0x3c, 0x00, - 0xc4, 0x2c, 0x00, 0x00, 0x89, 0x18, 0x20, 0x31, - 0x09, 0x78, 0x01, 0x20, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x18, 0xdb, 0x01, 0x00, - 0x08, 0x48, 0x40, 0x6a, 0x00, 0x28, 0x0a, 0xd1, - 0x07, 0x4a, 0x00, 0x21, 0x20, 0x23, 0x9b, 0x5c, - 0x02, 0x2b, 0x04, 0xd0, 0x01, 0x31, 0x3c, 0x32, - 0x05, 0x29, 0xf7, 0xd3, 0x70, 0x47, 0x01, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x04, 0x6c, 0x01, 0x00, - 0x3c, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x18, 0xdb, - 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, 0x04, 0x1c, - 0x17, 0x1c, 0xfe, 0xf7, 0x82, 0xfe, 0x20, 0x1c, - 0x11, 0x4c, 0x60, 0x60, 0x01, 0x20, 0x20, 0x60, - 0x10, 0x4d, 0x68, 0x69, 0x01, 0x30, 0x68, 0x61, - 0x68, 0x6a, 0x00, 0x28, 0x03, 0xd0, 0x07, 0x21, - 0x84, 0x20, 0xfe, 0xf7, 0xba, 0xfa, 0xa0, 0x68, - 0x40, 0x07, 0x03, 0xd5, 0x06, 0x21, 0x84, 0x20, - 0xfe, 0xf7, 0x3c, 0x00, 0x3c, 0x2d, 0x00, 0x00, - 0xb3, 0xfa, 0x08, 0x48, 0x00, 0x69, 0x00, 0x28, - 0x03, 0xda, 0xaa, 0x21, 0x84, 0x20, 0xfe, 0xf7, - 0xab, 0xfa, 0x02, 0x20, 0x68, 0x62, 0xae, 0x60, - 0x2f, 0x70, 0xf8, 0xbd, 0x00, 0x30, 0x07, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0x00, 0x40, 0x07, 0x00, - 0x04, 0x4a, 0x51, 0x80, 0x10, 0x71, 0x03, 0x48, - 0x03, 0x49, 0x08, 0x30, 0x48, 0x60, 0x01, 0x20, - 0x08, 0x60, 0x70, 0x47, 0x3c, 0x00, 0x78, 0x2d, - 0x00, 0x00, 0x3c, 0x6c, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x00, 0x21, 0x00, 0x23, 0x05, 0xe0, - 0x02, 0x89, 0x43, 0x60, 0xc0, 0x68, 0x51, 0x18, - 0x09, 0x04, 0x09, 0x0c, 0x00, 0x28, 0xf7, 0xd1, - 0x04, 0x31, 0x08, 0x04, 0x00, 0x0c, 0x70, 0x47, - 0x00, 0x00, 0x02, 0x4a, 0x51, 0x6b, 0x08, 0x43, - 0x50, 0x63, 0x70, 0x47, 0x00, 0x00, 0x04, 0x6c, - 0x01, 0x00, 0x38, 0xb5, 0x0a, 0x4c, 0x3c, 0x00, - 0xb4, 0x2d, 0x00, 0x00, 0x22, 0x1c, 0x20, 0x32, - 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0xd2, 0x79, - 0x5a, 0x70, 0x03, 0x68, 0x40, 0x68, 0x06, 0x4a, - 0x50, 0x65, 0x05, 0x48, 0x13, 0x65, 0x50, 0x30, - 0x81, 0x60, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x84, - 0x38, 0xbd, 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0x98, 0xb5, 0x0d, 0x4c, - 0x20, 0x1c, 0x20, 0x30, 0x81, 0x79, 0x00, 0xab, - 0x3c, 0x00, 0xf0, 0x2d, 0x00, 0x00, 0x19, 0x70, - 0xc0, 0x79, 0x58, 0x70, 0x0a, 0x48, 0x00, 0xf0, - 0xec, 0xf8, 0x09, 0x49, 0x00, 0x20, 0x48, 0x62, - 0xff, 0xf7, 0x69, 0xff, 0x00, 0x28, 0x03, 0xd0, - 0x12, 0x21, 0x84, 0x20, 0xfe, 0xf7, 0x49, 0xfa, - 0x00, 0xab, 0x18, 0x88, 0xe0, 0x84, 0x98, 0xbd, - 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x04, 0x6c, 0x01, 0x00, 0x03, 0x48, - 0x01, 0x7a, 0x3c, 0x00, 0x2c, 0x2e, 0x00, 0x00, - 0xfe, 0x22, 0x91, 0x43, 0x0a, 0x31, 0x01, 0x72, - 0x70, 0x47, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x90, 0xb5, 0x0e, 0x4c, 0x85, 0xb0, 0xa0, 0x78, - 0x02, 0x28, 0x14, 0xd1, 0x03, 0x20, 0xa0, 0x70, - 0x0b, 0x49, 0x00, 0x20, 0x00, 0x22, 0x04, 0x92, - 0x02, 0x90, 0x03, 0x91, 0xe1, 0x88, 0x01, 0x22, - 0x01, 0x92, 0x00, 0x91, 0x61, 0x78, 0x20, 0x78, - 0x22, 0x69, 0xe3, 0x68, 0x3c, 0x00, 0x68, 0x2e, - 0x00, 0x00, 0x08, 0xf0, 0x94, 0xfd, 0x04, 0x48, - 0x09, 0xf0, 0x7f, 0xf9, 0x05, 0xb0, 0x90, 0xbd, - 0x00, 0x00, 0xb4, 0x79, 0x01, 0x00, 0xad, 0xb6, - 0x00, 0x00, 0x71, 0xb6, 0x00, 0x00, 0xb0, 0xb5, - 0x0c, 0x4d, 0xac, 0x79, 0x0c, 0x49, 0x09, 0x78, - 0x00, 0x29, 0x03, 0xd0, 0x01, 0x29, 0x0e, 0xd0, - 0x02, 0x29, 0x08, 0xd1, 0xc2, 0x88, 0x00, 0x2a, - 0x09, 0xd0, 0x01, 0x23, 0x81, 0x68, 0x3c, 0x00, - 0xa4, 0x2e, 0x00, 0x00, 0x02, 0x20, 0x0f, 0xf0, - 0xc1, 0xf8, 0x03, 0xe0, 0x02, 0x21, 0x86, 0x20, - 0xfe, 0xf7, 0xf8, 0xf9, 0xac, 0x71, 0xb0, 0xbd, - 0x20, 0x10, 0x07, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x68, 0x07, 0x49, 0x4a, 0x60, - 0x03, 0x79, 0xca, 0x78, 0xcb, 0x70, 0x00, 0x79, - 0x90, 0x42, 0x06, 0xd0, 0x03, 0x48, 0x14, 0x30, - 0x00, 0x89, 0x07, 0xf0, 0x27, 0xfe, 0x06, 0xf0, - 0x3c, 0x00, 0xe0, 0x2e, 0x00, 0x00, 0xab, 0xfa, - 0x80, 0xbd, 0x84, 0x66, 0x01, 0x00, 0x70, 0xb5, - 0x16, 0x4c, 0x15, 0x4d, 0xa0, 0x78, 0x00, 0x26, - 0x98, 0x3d, 0x01, 0x28, 0x03, 0xd1, 0x28, 0x69, - 0x08, 0xf0, 0xfb, 0xfc, 0xa6, 0x70, 0x60, 0x68, - 0x01, 0x28, 0x03, 0xd0, 0x00, 0x21, 0x28, 0x69, - 0x00, 0xf0, 0xff, 0xfb, 0x0e, 0x48, 0x29, 0x69, - 0x0c, 0xf0, 0x31, 0xfa, 0x01, 0x20, 0x0c, 0xf0, - 0xe4, 0xf8, 0x3c, 0x00, 0x1c, 0x2f, 0x00, 0x00, - 0xe0, 0x78, 0x01, 0x28, 0x02, 0xd0, 0x01, 0x20, - 0x60, 0x70, 0x00, 0xe0, 0x66, 0x70, 0x06, 0x48, - 0x14, 0x30, 0x41, 0x68, 0x01, 0x29, 0x06, 0xd1, - 0x06, 0x60, 0x41, 0x6f, 0x00, 0x29, 0x02, 0xd0, - 0x00, 0x20, 0xfd, 0xf7, 0x4c, 0xfa, 0x70, 0xbd, - 0x84, 0x66, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x30, 0xb5, 0x00, 0x22, 0x00, 0x23, 0x01, 0x25, - 0x2c, 0x1c, 0x94, 0x40, 0x3c, 0x00, 0x58, 0x2f, - 0x00, 0x00, 0x04, 0x40, 0x01, 0xd0, 0xca, 0x54, - 0x01, 0x33, 0x01, 0x32, 0x0e, 0x2a, 0xf6, 0xdb, - 0x18, 0x1c, 0x30, 0xbd, 0x00, 0x00, 0xff, 0xb5, - 0x01, 0x27, 0x00, 0x26, 0x05, 0x1c, 0x02, 0x20, - 0x81, 0xb0, 0x00, 0x90, 0x00, 0x2d, 0x18, 0xd0, - 0x28, 0x78, 0xff, 0x28, 0x15, 0xd0, 0x00, 0x24, - 0x10, 0xe0, 0x28, 0x19, 0x80, 0x78, 0x0a, 0x99, - 0x00, 0x29, 0x01, 0xd0, 0x01, 0x06, 0x3c, 0x00, - 0x94, 0x2f, 0x00, 0x00, 0x08, 0xd5, 0x07, 0xf0, - 0xe9, 0xfe, 0x0e, 0x28, 0x03, 0xd0, 0x01, 0x21, - 0x81, 0x40, 0x0e, 0x43, 0x00, 0xe0, 0x00, 0x27, - 0x01, 0x34, 0x68, 0x78, 0xa0, 0x42, 0xeb, 0xdc, - 0x00, 0x98, 0x02, 0x9d, 0x01, 0x38, 0x00, 0x90, - 0xdf, 0xd1, 0x03, 0x98, 0x31, 0x1c, 0x81, 0x43, - 0x02, 0xd0, 0x03, 0x98, 0x06, 0x40, 0x00, 0x27, - 0x04, 0x98, 0x06, 0x60, 0x05, 0xb0, 0x38, 0x1c, - 0x3c, 0x00, 0xd0, 0x2f, 0x00, 0x00, 0xf0, 0xbd, - 0x00, 0x00, 0x02, 0x21, 0x01, 0x60, 0x64, 0x21, - 0x01, 0xe0, 0x01, 0x39, 0x02, 0xd0, 0x02, 0x68, - 0x92, 0x07, 0xfa, 0xd4, 0x01, 0x20, 0x00, 0x29, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x10, 0xb5, - 0x00, 0x20, 0xc4, 0x43, 0x05, 0x4b, 0x02, 0x22, - 0x01, 0x01, 0x5a, 0x50, 0xc9, 0x18, 0x8c, 0x60, - 0x01, 0x30, 0x08, 0x28, 0xf8, 0xdb, 0x10, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x30, 0x00, 0x00, - 0x00, 0x30, 0x07, 0x00, 0xf0, 0xb5, 0x05, 0x1c, - 0x60, 0x35, 0xc7, 0x6a, 0x04, 0x1c, 0x28, 0x7b, - 0x00, 0x2f, 0x8b, 0xb0, 0x15, 0xd0, 0x08, 0x28, - 0x15, 0xd2, 0x02, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x00, 0x00, 0x07, 0x04, 0x04, 0x07, - 0x09, 0x09, 0x0c, 0x0c, 0x01, 0x26, 0x00, 0x21, - 0x09, 0xe0, 0x00, 0x26, 0x06, 0xe0, 0x02, 0x26, - 0x02, 0x21, 0x04, 0xe0, 0x3c, 0x00, 0x48, 0x30, - 0x00, 0x00, 0x03, 0x26, 0x03, 0x21, 0x01, 0xe0, - 0x04, 0x26, 0x01, 0x21, 0x8c, 0x22, 0x12, 0x59, - 0x07, 0x91, 0x26, 0x49, 0x06, 0x90, 0x04, 0x91, - 0x00, 0x20, 0x03, 0x90, 0x05, 0x97, 0x08, 0x92, - 0xe0, 0x69, 0x22, 0x69, 0x21, 0x1c, 0x70, 0x31, - 0x01, 0x91, 0x21, 0x49, 0x00, 0x90, 0x70, 0x00, - 0x40, 0x18, 0x60, 0x30, 0x02, 0x92, 0x03, 0x88, - 0x59, 0x1c, 0x01, 0x80, 0x1e, 0x48, 0x3c, 0x00, - 0x84, 0x30, 0x00, 0x00, 0x02, 0x88, 0xa1, 0x68, - 0x0a, 0xa8, 0x09, 0xf0, 0xe1, 0xff, 0x60, 0x60, - 0xe8, 0x7a, 0xa1, 0x6a, 0xc9, 0x07, 0x00, 0x07, - 0x00, 0x0e, 0xc9, 0x0d, 0x08, 0x43, 0x61, 0x6a, - 0x22, 0x69, 0xc9, 0x07, 0x89, 0x0d, 0x01, 0x43, - 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x80, 0x03, 0x08, 0x43, 0x21, 0x6a, 0xc9, 0x03, - 0x08, 0x43, 0x08, 0x21, 0x08, 0x43, 0x0a, 0x99, - 0x3c, 0x00, 0xc0, 0x30, 0x00, 0x00, 0x08, 0x80, - 0x20, 0x1c, 0xfe, 0xf7, 0x98, 0xfe, 0x20, 0x69, - 0x00, 0x28, 0x04, 0xd1, 0x20, 0x1c, 0x0a, 0xf0, - 0x82, 0xf9, 0x0b, 0xb0, 0xf0, 0xbd, 0x80, 0x79, - 0x06, 0x28, 0x01, 0xd9, 0xfe, 0xf7, 0x0f, 0xf9, - 0x20, 0x69, 0x06, 0x49, 0x80, 0x79, 0x80, 0x00, - 0x09, 0x58, 0x20, 0x1c, 0xfd, 0xf7, 0x74, 0xf9, - 0xef, 0xe7, 0x79, 0x2f, 0x01, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x30, 0x00, 0x00, - 0x08, 0x61, 0x01, 0x00, 0x74, 0x57, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x58, 0x30, 0x8a, 0xb0, - 0x0e, 0xf0, 0x7c, 0xfe, 0x22, 0x1c, 0x80, 0x32, - 0x51, 0x68, 0x00, 0x29, 0x01, 0xd0, 0x11, 0x7a, - 0x07, 0xe0, 0x00, 0x28, 0x04, 0xd0, 0x80, 0x69, - 0x80, 0x07, 0x01, 0xd5, 0x03, 0x21, 0x00, 0xe0, - 0x01, 0x21, 0xd2, 0x68, 0x07, 0x91, 0x22, 0x49, - 0x00, 0x20, 0x08, 0x92, 0x3c, 0x00, 0x38, 0x31, - 0x00, 0x00, 0x04, 0x91, 0x00, 0x22, 0x05, 0x92, - 0x06, 0x90, 0x03, 0x90, 0xe0, 0x69, 0x22, 0x69, - 0x00, 0x90, 0x21, 0x1c, 0x70, 0x31, 0x1c, 0x48, - 0x01, 0x91, 0x02, 0x92, 0x03, 0x89, 0x59, 0x1c, - 0x01, 0x81, 0x1a, 0x48, 0x02, 0x88, 0xa1, 0x68, - 0x09, 0xa8, 0x09, 0xf0, 0x76, 0xff, 0x60, 0x60, - 0x6b, 0x20, 0x00, 0x5d, 0xa1, 0x6a, 0x22, 0x69, - 0xc9, 0x07, 0x00, 0x07, 0x00, 0x0e, 0x3c, 0x00, - 0x74, 0x31, 0x00, 0x00, 0xc9, 0x0d, 0x01, 0x43, - 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x80, 0x03, 0x08, 0x43, 0x09, 0x99, 0x08, 0x80, - 0x20, 0x1c, 0xfe, 0xf7, 0x35, 0xfe, 0x20, 0x69, - 0x00, 0x28, 0x04, 0xd1, 0x20, 0x1c, 0x0a, 0xf0, - 0x1f, 0xf9, 0x0a, 0xb0, 0x10, 0xbd, 0x80, 0x79, - 0x06, 0x28, 0x01, 0xd9, 0xfe, 0xf7, 0xac, 0xf8, - 0x20, 0x69, 0x07, 0x49, 0x80, 0x79, 0x80, 0x00, - 0x3c, 0x00, 0xb0, 0x31, 0x00, 0x00, 0x09, 0x58, - 0x20, 0x1c, 0xfd, 0xf7, 0x11, 0xf9, 0xef, 0xe7, - 0x00, 0x00, 0xbd, 0x2f, 0x01, 0x00, 0x24, 0x6a, - 0x01, 0x00, 0x08, 0x61, 0x01, 0x00, 0x74, 0x57, - 0x01, 0x00, 0x3e, 0xb5, 0x05, 0x1c, 0x00, 0x69, - 0x04, 0x21, 0x07, 0xf0, 0xd2, 0xfa, 0x00, 0x28, - 0x09, 0xd0, 0x42, 0x78, 0x02, 0x32, 0x01, 0x1c, - 0x68, 0x46, 0xfd, 0xf7, 0x88, 0xf9, 0xe8, 0x6a, - 0x6c, 0x46, 0x3c, 0x00, 0xec, 0x31, 0x00, 0x00, - 0x02, 0x90, 0x00, 0xe0, 0x00, 0x24, 0x28, 0x1c, - 0x14, 0x30, 0x02, 0xf0, 0x03, 0xfb, 0x00, 0x28, - 0x04, 0xd0, 0x21, 0x1c, 0x28, 0x1c, 0x05, 0xf0, - 0xa5, 0xfe, 0x3e, 0xbd, 0x00, 0x2c, 0xfc, 0xd0, - 0x02, 0x49, 0x20, 0x1c, 0x49, 0x69, 0xfd, 0xf7, - 0xe2, 0xf8, 0xf6, 0xe7, 0x44, 0x7d, 0x01, 0x00, - 0x70, 0xb5, 0x1e, 0x1c, 0x18, 0x23, 0x58, 0x43, - 0x06, 0x4b, 0x04, 0x9d, 0x3c, 0x00, 0x28, 0x32, - 0x00, 0x00, 0x19, 0x50, 0xc4, 0x18, 0x00, 0x20, - 0x60, 0x61, 0x62, 0x60, 0xa6, 0x60, 0xe5, 0x60, - 0x0f, 0xf0, 0xb9, 0xfd, 0x20, 0x61, 0x70, 0xbd, - 0x00, 0x00, 0xb8, 0x7d, 0x01, 0x00, 0x02, 0x4a, - 0x01, 0x1c, 0x90, 0x69, 0x91, 0x61, 0x70, 0x47, - 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x6b, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x04, 0x49, 0x04, 0x4b, 0x3c, 0x00, - 0x64, 0x32, 0x00, 0x00, 0xca, 0x68, 0x09, 0x69, - 0x5c, 0x3b, 0x5b, 0x68, 0xc9, 0x1a, 0x41, 0x43, - 0x50, 0x18, 0x70, 0x47, 0xa0, 0x7d, 0x01, 0x00, - 0x01, 0x48, 0x00, 0x78, 0x70, 0x47, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0x80, 0xb5, 0x06, 0x22, - 0x01, 0x49, 0xfd, 0xf7, 0x35, 0xf9, 0x80, 0xbd, - 0xfe, 0x67, 0x01, 0x00, 0xf0, 0xb5, 0x89, 0xb0, - 0x00, 0x93, 0x16, 0x4f, 0x13, 0x1c, 0x0e, 0x1c, - 0x3c, 0x00, 0xa0, 0x32, 0x00, 0x00, 0x04, 0x1c, - 0x3a, 0x1c, 0x01, 0xf0, 0x62, 0xff, 0x01, 0xa9, - 0x06, 0xa8, 0xa2, 0x68, 0x02, 0xf0, 0x0b, 0xf9, - 0x01, 0xaa, 0x06, 0xa9, 0x38, 0x1c, 0x63, 0x6a, - 0x02, 0xf0, 0x81, 0xfc, 0x05, 0x1c, 0x01, 0x28, - 0x14, 0xd1, 0x0c, 0x48, 0xfc, 0x21, 0xc8, 0x51, - 0x38, 0x1c, 0x02, 0xf0, 0x0c, 0xf8, 0x03, 0x21, - 0x30, 0x1c, 0x07, 0xf0, 0x52, 0xfa, 0x00, 0x28, - 0x07, 0xd0, 0x3c, 0x00, 0xdc, 0x32, 0x00, 0x00, - 0x80, 0x78, 0x00, 0xf0, 0x33, 0xfc, 0x20, 0x1c, - 0x10, 0x30, 0x0e, 0xf0, 0x47, 0xfd, 0x00, 0xe0, - 0x00, 0x25, 0x28, 0x1c, 0x09, 0xb0, 0xf0, 0xbd, - 0xf4, 0x67, 0x01, 0x00, 0xc1, 0x38, 0x00, 0x00, - 0x10, 0xb5, 0x07, 0x4c, 0x06, 0x48, 0x06, 0x22, - 0x21, 0x1d, 0x08, 0x38, 0xfd, 0xf7, 0xf6, 0xf8, - 0x01, 0xf0, 0xfc, 0xff, 0x00, 0xf0, 0x42, 0xfc, - 0x20, 0x1c, 0x02, 0xf0, 0x3c, 0x00, 0x18, 0x33, - 0x00, 0x00, 0x27, 0xfc, 0x10, 0xbd, 0xf4, 0x67, - 0x01, 0x00, 0x08, 0x49, 0xc9, 0x68, 0x00, 0x29, - 0x0a, 0xd0, 0x06, 0x4a, 0x01, 0x32, 0x51, 0x78, - 0x12, 0x78, 0x48, 0x43, 0x00, 0x2a, 0x01, 0xd1, - 0x08, 0x18, 0x70, 0x47, 0x10, 0x18, 0x70, 0x47, - 0x01, 0x30, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, 0x00, 0x28, - 0x5a, 0x69, 0x00, 0xd0, 0x01, 0x1c, 0x3c, 0x00, - 0x54, 0x33, 0x00, 0x00, 0x10, 0x1c, 0x59, 0x61, - 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0xb9, 0x75, 0x00, 0x00, 0x07, 0x49, 0x00, 0x20, - 0x0a, 0x78, 0x02, 0x2a, 0x09, 0xd1, 0x0a, 0x7c, - 0x00, 0x2a, 0x05, 0xd1, 0xca, 0x68, 0x00, 0x2a, - 0x03, 0xd0, 0x49, 0x69, 0x00, 0x29, 0x00, 0xd0, - 0x01, 0x20, 0x70, 0x47, 0x78, 0x69, 0x01, 0x00, - 0x0c, 0x4a, 0x80, 0xb5, 0x01, 0x21, 0x51, 0x60, - 0x3c, 0x00, 0x90, 0x33, 0x00, 0x00, 0x09, 0xf0, - 0x6a, 0xf8, 0x09, 0x48, 0x1c, 0x30, 0x81, 0x69, - 0x00, 0x29, 0x07, 0xd0, 0x00, 0x23, 0x83, 0x61, - 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, 0xf0, - 0xd2, 0xf8, 0x80, 0xbd, 0x00, 0x22, 0x00, 0x21, - 0x03, 0x48, 0x00, 0xf0, 0x5c, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0x51, 0x35, - 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x01, 0x28, - 0x16, 0xd1, 0x3c, 0x00, 0xcc, 0x33, 0x00, 0x00, - 0x0e, 0x4d, 0x02, 0x2c, 0x09, 0xd1, 0x00, 0xf0, - 0x2b, 0xfa, 0x00, 0x28, 0x0e, 0xd0, 0x68, 0x69, - 0x00, 0x28, 0x0b, 0xd1, 0x21, 0x1c, 0x13, 0x20, - 0x0c, 0xe0, 0x03, 0x2c, 0xfa, 0xd1, 0x00, 0xf0, - 0xf9, 0xf9, 0x00, 0x28, 0x02, 0xd0, 0x28, 0x7c, - 0x00, 0x28, 0xf3, 0xd0, 0xb0, 0xbd, 0x21, 0x1c, - 0x00, 0x06, 0x00, 0x0e, 0x04, 0xf0, 0x62, 0xfc, - 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x34, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x0c, 0x4c, 0x00, 0x25, 0x25, 0x74, 0x65, 0x61, - 0xe5, 0x60, 0x00, 0xf0, 0x3c, 0xfa, 0x00, 0xf0, - 0x34, 0xfa, 0x07, 0x48, 0x1c, 0x38, 0x05, 0x61, - 0x09, 0xf0, 0x33, 0xff, 0x20, 0x78, 0x00, 0x28, - 0x02, 0xd1, 0x04, 0xf0, 0x6e, 0xfa, 0xb0, 0xbd, - 0x02, 0x28, 0xfc, 0xd1, 0x04, 0xf0, 0xa5, 0xfb, - 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, 0x3c, 0x00, - 0x44, 0x34, 0x00, 0x00, 0x0c, 0x48, 0x80, 0xb5, - 0x01, 0x78, 0x00, 0x29, 0x12, 0xd0, 0xc0, 0x68, - 0x00, 0x28, 0x0f, 0xd1, 0x08, 0x48, 0x1c, 0x38, - 0x40, 0x69, 0x00, 0x28, 0x0a, 0xd1, 0x07, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x06, 0xd0, 0x00, 0x22, - 0x07, 0x21, 0x10, 0x20, 0x10, 0xf0, 0xa0, 0xf9, - 0x02, 0xf0, 0x2c, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0xd4, 0x67, 0x01, 0x00, - 0x3c, 0x00, 0x80, 0x34, 0x00, 0x00, 0xf8, 0xb5, - 0x1d, 0x4e, 0x1c, 0x4d, 0x04, 0x1c, 0xf0, 0x68, - 0x02, 0x27, 0x1c, 0x3d, 0x00, 0x28, 0x07, 0xd0, - 0xe8, 0x68, 0x00, 0x28, 0x04, 0xd0, 0xfd, 0xf7, - 0xc2, 0xfe, 0x00, 0x28, 0x00, 0xd0, 0xbc, 0x43, - 0x00, 0x2c, 0x14, 0xd0, 0x37, 0x70, 0xf0, 0x68, - 0x14, 0x4f, 0x00, 0x28, 0x10, 0xd0, 0xe0, 0x07, - 0x17, 0xd4, 0xfd, 0xf7, 0xb4, 0xfe, 0x00, 0x28, - 0x13, 0xd0, 0x3c, 0x00, 0xbc, 0x34, 0x00, 0x00, - 0x70, 0x69, 0x00, 0x28, 0x06, 0xd1, 0xe8, 0x68, - 0x00, 0x28, 0x01, 0xd0, 0xfd, 0xf7, 0x1a, 0xff, - 0x0d, 0xf0, 0x0a, 0xfa, 0xf8, 0xbd, 0x68, 0x69, - 0x00, 0x28, 0x05, 0xd1, 0x09, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x2c, 0x04, 0xd1, - 0x39, 0x1c, 0x20, 0x1c, 0x0e, 0xf0, 0x52, 0xfd, - 0xf0, 0xe7, 0x04, 0xf0, 0x1d, 0xfb, 0x02, 0xf0, - 0xeb, 0xfb, 0xeb, 0xe7, 0x3c, 0x00, 0xf8, 0x34, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0x50, 0xc3, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x05, 0x48, - 0x41, 0x69, 0x00, 0x29, 0x04, 0xd0, 0x40, 0x6a, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x49, - 0x00, 0x20, 0x48, 0x60, 0x08, 0x60, 0x88, 0x60, - 0x08, 0xf0, 0x9b, 0xff, 0x07, 0x21, 0x3c, 0x00, - 0x34, 0x35, 0x00, 0x00, 0x12, 0x20, 0x22, 0x79, - 0x10, 0xf0, 0x3a, 0xf9, 0x10, 0xbd, 0x00, 0x00, - 0x5c, 0x69, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0x08, 0x60, 0x70, 0x47, 0xe8, 0x67, 0x01, 0x00, - 0xf8, 0xb5, 0x07, 0x1c, 0x0e, 0x1c, 0x08, 0xf0, - 0xa3, 0xfa, 0x13, 0x4d, 0x04, 0x1c, 0x68, 0x68, - 0x00, 0x28, 0x17, 0xd0, 0x00, 0x2f, 0x02, 0xd0, - 0xa8, 0x68, 0x03, 0x28, 0x13, 0xd3, 0x00, 0x20, - 0x3c, 0x00, 0x70, 0x35, 0x00, 0x00, 0xa8, 0x60, - 0x68, 0x60, 0x21, 0x1c, 0x0f, 0x20, 0x0e, 0xf0, - 0xf0, 0xfe, 0x28, 0x68, 0x00, 0x28, 0x03, 0xd0, - 0x00, 0x2c, 0x06, 0xd1, 0x01, 0x20, 0x02, 0xe0, - 0x01, 0x2c, 0x02, 0xd1, 0x00, 0x20, 0xff, 0xf7, - 0xfa, 0xfe, 0xf8, 0xbd, 0x72, 0x1c, 0x00, 0x21, - 0x04, 0x48, 0x00, 0xf0, 0x68, 0xf8, 0xa8, 0x68, - 0x01, 0x30, 0xa8, 0x60, 0xf5, 0xe7, 0x5c, 0x69, - 0x01, 0x00, 0x3c, 0x00, 0xac, 0x35, 0x00, 0x00, - 0x51, 0x35, 0x00, 0x00, 0x0a, 0x49, 0x80, 0xb5, - 0xca, 0x68, 0x00, 0x2a, 0x0b, 0xd0, 0x42, 0x68, - 0x00, 0x2a, 0x09, 0xd0, 0x00, 0x22, 0x4a, 0x62, - 0x02, 0x68, 0x0a, 0x62, 0x02, 0x68, 0x07, 0x21, - 0x17, 0x20, 0x10, 0xf0, 0xef, 0xf8, 0x80, 0xbd, - 0x01, 0x20, 0x48, 0x62, 0x80, 0xbd, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0x70, 0xb5, 0x14, 0x4d, - 0x84, 0x6c, 0xe9, 0x68, 0x3c, 0x00, 0xe8, 0x35, - 0x00, 0x00, 0x00, 0x29, 0x17, 0xd0, 0x40, 0x30, - 0xec, 0x61, 0x40, 0x78, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x68, 0x62, 0x28, 0x6a, 0x0e, 0x4e, - 0x00, 0x1b, 0xb0, 0x42, 0x0c, 0xd2, 0x08, 0xf0, - 0x3a, 0xfe, 0x29, 0x6a, 0x40, 0x1a, 0xb0, 0x42, - 0x03, 0xd2, 0x02, 0x22, 0x07, 0x21, 0x13, 0x20, - 0x09, 0xe0, 0x04, 0xf0, 0xb6, 0xfa, 0x70, 0xbd, - 0x07, 0x48, 0xa9, 0x68, 0x0b, 0xf0, 0x3c, 0x00, - 0x24, 0x36, 0x00, 0x00, 0xbd, 0xfe, 0x22, 0x1c, - 0x07, 0x21, 0x16, 0x20, 0x10, 0xf0, 0xc0, 0xf8, - 0x70, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0xa0, 0x86, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x0a, 0x49, 0x80, 0xb5, 0x00, 0x20, 0x88, 0x61, - 0x08, 0x69, 0x00, 0x28, 0x0c, 0xd0, 0x07, 0x48, - 0x1c, 0x30, 0x00, 0x78, 0x00, 0x28, 0x07, 0xd0, - 0x01, 0xf0, 0xd2, 0xff, 0x02, 0x28, 0x03, 0xd1, - 0x3c, 0x00, 0x60, 0x36, 0x00, 0x00, 0x00, 0xf0, - 0x12, 0xf9, 0x00, 0xf0, 0xbc, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0xf0, 0xb5, - 0x06, 0x1c, 0x0c, 0x1c, 0x15, 0x1c, 0x91, 0xb0, - 0x01, 0xa8, 0x40, 0x21, 0xfc, 0xf7, 0x0d, 0xff, - 0x00, 0x21, 0x68, 0x46, 0xfd, 0xf7, 0xa7, 0xff, - 0x04, 0x90, 0x01, 0xa8, 0x06, 0x22, 0x08, 0x49, - 0xfc, 0xf7, 0x31, 0xff, 0x06, 0x22, 0x02, 0xa8, - 0x02, 0x30, 0x3c, 0x00, 0x9c, 0x36, 0x00, 0x00, - 0x06, 0x49, 0xfc, 0xf7, 0x2b, 0xff, 0x00, 0xab, - 0xdc, 0x76, 0x0c, 0x95, 0x31, 0x1c, 0x01, 0xa8, - 0x07, 0xf0, 0x4e, 0xf8, 0x11, 0xb0, 0xf0, 0xbd, - 0x12, 0x61, 0x01, 0x00, 0xf8, 0x67, 0x01, 0x00, - 0x03, 0x1c, 0x08, 0x1c, 0x19, 0x1c, 0x11, 0x4b, - 0x80, 0xb5, 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, - 0x04, 0x22, 0x19, 0x1c, 0xfc, 0xf7, 0x12, 0xff, - 0x16, 0xe0, 0x04, 0x22, 0x3c, 0x00, 0xd8, 0x36, - 0x00, 0x00, 0x01, 0x1c, 0x18, 0x1c, 0xfc, 0xf7, - 0x0c, 0xff, 0x09, 0x48, 0x10, 0x38, 0x00, 0x69, - 0x00, 0x28, 0x0c, 0xd0, 0x07, 0x48, 0x0c, 0x30, - 0x00, 0x78, 0x00, 0x28, 0x07, 0xd0, 0x01, 0xf0, - 0x84, 0xff, 0x02, 0x28, 0x03, 0xd1, 0x00, 0xf0, - 0xc4, 0xf8, 0x00, 0xf0, 0x6e, 0xf8, 0x01, 0x20, - 0x80, 0xbd, 0x6c, 0x69, 0x01, 0x00, 0xf8, 0xb5, - 0x04, 0x1c, 0x0f, 0x1c, 0x00, 0x25, 0x3c, 0x00, - 0x14, 0x37, 0x00, 0x00, 0x00, 0x26, 0x01, 0xf0, - 0x73, 0xff, 0x02, 0x28, 0x2f, 0xd1, 0x19, 0x49, - 0x01, 0x2f, 0x08, 0x68, 0x07, 0xd1, 0x02, 0x1c, - 0x22, 0x40, 0x0a, 0xd1, 0x20, 0x43, 0x08, 0x60, - 0xa0, 0x42, 0x06, 0xd1, 0x04, 0xe0, 0x00, 0x28, - 0x03, 0xd0, 0xa0, 0x43, 0x08, 0x60, 0x00, 0xd1, - 0x01, 0x25, 0x48, 0x68, 0x00, 0x28, 0x1a, 0xd1, - 0x00, 0x2d, 0x17, 0xd0, 0x01, 0x20, 0x48, 0x60, - 0x3c, 0x00, 0x50, 0x37, 0x00, 0x00, 0x38, 0x1c, - 0x08, 0xf0, 0x89, 0xfe, 0x0b, 0x48, 0x1c, 0x30, - 0x81, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x00, 0x23, - 0x83, 0x61, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, - 0xff, 0xf7, 0xf1, 0xfe, 0x06, 0xe0, 0x00, 0x22, - 0x00, 0x21, 0x04, 0x48, 0xff, 0xf7, 0x7b, 0xff, - 0x00, 0xe0, 0x01, 0x26, 0x30, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, 0x51, 0x35, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x37, 0x00, 0x00, - 0x03, 0x1c, 0x08, 0x1c, 0x19, 0x1c, 0x12, 0x4b, - 0x80, 0xb5, 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, - 0x04, 0x22, 0x19, 0x1c, 0xfc, 0xf7, 0xaa, 0xfe, - 0x18, 0xe0, 0x04, 0x22, 0x01, 0x1c, 0x18, 0x1c, - 0xfc, 0xf7, 0xa4, 0xfe, 0x0a, 0x48, 0x10, 0x30, - 0xc1, 0x68, 0x00, 0x29, 0x0e, 0xd0, 0x00, 0x78, - 0x00, 0x28, 0x0b, 0xd0, 0x01, 0xf0, 0x1e, 0xff, - 0x02, 0x28, 0x07, 0xd1, 0x3c, 0x00, 0xc8, 0x37, - 0x00, 0x00, 0x00, 0xf0, 0x64, 0xf8, 0x00, 0xf0, - 0x2e, 0xf8, 0x00, 0x28, 0x01, 0xd1, 0x09, 0xf0, - 0x7a, 0xfd, 0x01, 0x20, 0x80, 0xbd, 0x68, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x0a, 0x4c, 0x20, 0x69, - 0x00, 0x28, 0x09, 0xd0, 0xa1, 0x69, 0x00, 0x29, - 0x06, 0xd1, 0x7d, 0x21, 0xc9, 0x00, 0x41, 0x43, - 0x03, 0x22, 0x07, 0x20, 0x0f, 0xf0, 0xe1, 0xfe, - 0x21, 0x69, 0x01, 0x20, 0x00, 0x29, 0x3c, 0x00, - 0x04, 0x38, 0x00, 0x00, 0x00, 0xd1, 0x00, 0x20, - 0x10, 0xbd, 0x00, 0x00, 0x5c, 0x69, 0x01, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0x00, 0x28, 0x03, 0xd0, - 0xfd, 0xf7, 0x9a, 0xfc, 0xe0, 0x60, 0x10, 0xbd, - 0x01, 0x20, 0x00, 0x21, 0xe1, 0x60, 0x10, 0xbd, - 0x78, 0x69, 0x01, 0x00, 0x0a, 0x48, 0x0a, 0x49, - 0x10, 0xb5, 0xc0, 0x68, 0x1c, 0x39, 0xc9, 0x68, - 0x00, 0x28, 0x03, 0xd0, 0x00, 0x29, 0x01, 0xd0, - 0x3c, 0x00, 0x40, 0x38, 0x00, 0x00, 0x01, 0x24, - 0x00, 0xe0, 0x00, 0x24, 0x00, 0x2c, 0x03, 0xd0, - 0x02, 0x22, 0x07, 0x20, 0x0f, 0xf0, 0xb7, 0xfe, - 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4c, 0x00, 0x20, - 0x21, 0x69, 0x00, 0x29, 0x0c, 0xd0, 0x06, 0x49, - 0x1c, 0x31, 0x09, 0x78, 0x00, 0x29, 0x07, 0xd0, - 0x00, 0xf0, 0x09, 0xf8, 0x01, 0x20, 0xa0, 0x61, - 0x20, 0x69, 0x3c, 0x00, 0x7c, 0x38, 0x00, 0x00, - 0x7d, 0x23, 0xdb, 0x00, 0x58, 0x43, 0x10, 0xbd, - 0x5c, 0x69, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x21, - 0x07, 0x20, 0x0f, 0xf0, 0xd1, 0xfe, 0x80, 0xbd, - 0x80, 0xb5, 0x02, 0x21, 0x07, 0x20, 0x0f, 0xf0, - 0xcb, 0xfe, 0x80, 0xbd, 0x06, 0x48, 0x80, 0xb5, - 0x00, 0x78, 0x00, 0x28, 0x01, 0xd0, 0xfd, 0xf7, - 0x29, 0xfd, 0x00, 0x22, 0x07, 0x21, 0x11, 0x20, - 0x0f, 0xf0, 0x7c, 0xff, 0x3c, 0x00, 0xb8, 0x38, - 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x10, 0x1c, - 0x06, 0x4a, 0x51, 0x61, 0x00, 0xf0, 0xa3, 0xf8, - 0x10, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x11, 0x20, - 0x00, 0x22, 0x07, 0x21, 0x0f, 0xf0, 0x69, 0xff, - 0x10, 0xbd, 0x5c, 0x69, 0x01, 0x00, 0x01, 0x49, - 0x48, 0x62, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4c, 0x3c, 0x00, - 0xf4, 0x38, 0x00, 0x00, 0xe0, 0x69, 0x00, 0x28, - 0x0c, 0xd1, 0xe0, 0x62, 0x01, 0x20, 0xe0, 0x61, - 0x0b, 0xf0, 0x08, 0xfd, 0x0b, 0xf0, 0x74, 0xfe, - 0x01, 0x20, 0x00, 0xf0, 0xb5, 0xf8, 0x0f, 0xf0, - 0x4d, 0xfa, 0x60, 0x63, 0x10, 0xbd, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x05, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0xc8, 0x61, 0x88, 0x63, 0x00, 0xf0, - 0x89, 0xf8, 0x00, 0xf0, 0x01, 0xf9, 0x02, 0xf0, - 0x3c, 0x00, 0x30, 0x39, 0x00, 0x00, 0x91, 0xfb, - 0x80, 0xbd, 0x44, 0x7d, 0x01, 0x00, 0x10, 0xb5, - 0x01, 0x28, 0x38, 0xd1, 0x08, 0x06, 0x00, 0x0e, - 0x05, 0x28, 0x32, 0xd1, 0x1d, 0x4c, 0x20, 0x78, - 0x01, 0x28, 0x09, 0xd0, 0x02, 0x28, 0x1b, 0xd0, - 0x03, 0x28, 0x2a, 0xd1, 0x02, 0xf0, 0x7d, 0xfb, - 0x00, 0xf0, 0x6f, 0xf8, 0x01, 0x20, 0x10, 0xe0, - 0x17, 0x48, 0x21, 0x6b, 0x0b, 0xf0, 0x1b, 0xfd, - 0x0b, 0xf0, 0x3c, 0x00, 0x6c, 0x39, 0x00, 0x00, - 0x41, 0xfe, 0x15, 0x48, 0x00, 0x69, 0x03, 0x28, - 0x01, 0xd3, 0xc0, 0x07, 0x03, 0xd5, 0x01, 0x21, - 0x20, 0x6b, 0x07, 0xf0, 0x19, 0xff, 0x02, 0x20, - 0x00, 0xf0, 0x78, 0xf8, 0x10, 0xbd, 0x0f, 0x48, - 0x00, 0x68, 0x20, 0x64, 0x0a, 0x48, 0x5c, 0x30, - 0xc1, 0x68, 0x02, 0x69, 0x89, 0x18, 0xc1, 0x60, - 0x03, 0xf0, 0xcc, 0xfc, 0x03, 0x20, 0x00, 0xf0, - 0x69, 0xf8, 0x01, 0x20, 0x3c, 0x00, 0xa8, 0x39, - 0x00, 0x00, 0xe0, 0x62, 0x10, 0xbd, 0x09, 0x21, - 0x00, 0xe0, 0x08, 0x21, 0x09, 0x20, 0xfd, 0xf7, - 0x76, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0xf4, 0x68, - 0x01, 0x00, 0x78, 0x6e, 0x01, 0x00, 0xb0, 0xb5, - 0x0f, 0x4c, 0x20, 0x78, 0x65, 0x1e, 0x01, 0x28, - 0x0f, 0xd1, 0x00, 0x20, 0xff, 0xf7, 0xa1, 0xfc, - 0x0c, 0x49, 0x09, 0x88, 0x49, 0x08, 0x3c, 0x00, - 0xe4, 0x39, 0x00, 0x00, 0x40, 0x1a, 0x0f, 0xf0, - 0x19, 0xf9, 0x00, 0x28, 0x04, 0xd0, 0x28, 0x78, - 0x01, 0x28, 0x07, 0xd0, 0x02, 0x28, 0x05, 0xd0, - 0x20, 0x78, 0x00, 0x28, 0x04, 0xd1, 0x28, 0x78, - 0x03, 0x28, 0x01, 0xd1, 0x01, 0x20, 0xb0, 0xbd, - 0x00, 0x20, 0xb0, 0xbd, 0x45, 0x7d, 0x01, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x01, 0x49, 0xc8, 0x64, - 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0x3c, 0x00, 0x20, 0x3a, 0x00, 0x00, 0x04, 0x49, - 0x05, 0x4a, 0x89, 0x68, 0x12, 0x6d, 0x01, 0x20, - 0x91, 0x42, 0x00, 0xd3, 0x00, 0x20, 0x70, 0x47, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, 0x20, 0x6b, - 0x07, 0xf0, 0xf9, 0xfe, 0xa0, 0x6b, 0x00, 0x28, - 0x03, 0xd1, 0x03, 0x48, 0x21, 0x6b, 0x0b, 0xf0, - 0x92, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x3c, 0x00, 0x5c, 0x3a, 0x00, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x04, 0x48, 0x00, 0x78, - 0x02, 0x28, 0x01, 0xd0, 0x03, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x44, 0x7d, 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, - 0xff, 0xf7, 0xd0, 0xff, 0x06, 0x1c, 0x01, 0x2f, - 0x26, 0x4d, 0x1f, 0xd0, 0x02, 0x2f, 0x45, 0xd0, - 0x03, 0x2f, 0x12, 0xd1, 0x24, 0x48, 0x25, 0x4b, - 0x00, 0x69, 0x6a, 0x69, 0x3c, 0x00, 0x98, 0x3a, - 0x00, 0x00, 0x41, 0x08, 0x5a, 0x43, 0x23, 0x4b, - 0xd4, 0x18, 0x8c, 0x42, 0x00, 0xd9, 0x0c, 0x1c, - 0x00, 0x2e, 0x05, 0xd0, 0x1e, 0x49, 0x5b, 0x39, - 0x09, 0x78, 0x00, 0x29, 0x00, 0xd1, 0x04, 0x1c, - 0x05, 0x22, 0x21, 0x1c, 0x09, 0x20, 0x0f, 0xf0, - 0x80, 0xfd, 0x18, 0x4a, 0x5c, 0x3a, 0x17, 0x70, - 0xf8, 0xbd, 0xff, 0xf7, 0xd6, 0xfb, 0x00, 0x28, - 0x02, 0xd0, 0x28, 0x69, 0x00, 0x28, 0x3c, 0x00, - 0xd4, 0x3a, 0x00, 0x00, 0x0e, 0xd0, 0x04, 0xf0, - 0xcf, 0xfb, 0x13, 0x4b, 0x69, 0x69, 0x11, 0x4a, - 0x59, 0x43, 0x5c, 0x3a, 0xd2, 0x6b, 0x89, 0x18, - 0x88, 0x42, 0x01, 0xd9, 0x44, 0x1a, 0x04, 0xe0, - 0x00, 0x24, 0x02, 0xe0, 0x04, 0xf0, 0xae, 0xfd, - 0x04, 0x1c, 0x00, 0x2e, 0xdb, 0xd0, 0x09, 0x48, - 0x5b, 0x38, 0x00, 0x78, 0x01, 0x28, 0xd6, 0xd1, - 0x08, 0x4b, 0x9c, 0x42, 0x02, 0xd9, 0x58, 0x42, - 0x3c, 0x00, 0x10, 0x3b, 0x00, 0x00, 0x24, 0x18, - 0xd0, 0xe7, 0x00, 0x24, 0xce, 0xe7, 0x04, 0xf0, - 0xae, 0xfb, 0xca, 0xe7, 0x00, 0x00, 0xf4, 0x68, - 0x01, 0x00, 0xa0, 0x7d, 0x01, 0x00, 0x98, 0x3a, - 0x00, 0x00, 0x88, 0x13, 0x00, 0x00, 0x80, 0xb5, - 0x05, 0x21, 0x09, 0x20, 0x0f, 0xf0, 0x7d, 0xfd, - 0x02, 0x49, 0x00, 0x20, 0x08, 0x70, 0x80, 0xbd, - 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0x70, 0xb5, - 0x06, 0x1c, 0x3c, 0x00, 0x4c, 0x3b, 0x00, 0x00, - 0x0d, 0xf0, 0xbc, 0xfa, 0xff, 0xf7, 0xce, 0xfe, - 0x09, 0x4c, 0x0a, 0x48, 0x21, 0x6b, 0x0b, 0xf0, - 0x21, 0xfc, 0x01, 0x25, 0x01, 0x21, 0x30, 0x06, - 0x00, 0x0e, 0xa5, 0x63, 0x07, 0xf0, 0x3a, 0xfe, - 0x05, 0x48, 0x29, 0x02, 0x09, 0x58, 0x00, 0x29, - 0x00, 0xd1, 0x05, 0x61, 0x70, 0xbd, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x3b, - 0x00, 0x00, 0x02, 0x4a, 0x11, 0x6c, 0x08, 0x43, - 0x10, 0x64, 0x70, 0x47, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xbf, 0xfe, - 0x0b, 0xf0, 0xa1, 0xfb, 0x80, 0xbd, 0x02, 0x4a, - 0x01, 0x1c, 0x10, 0x69, 0x11, 0x61, 0x70, 0x47, - 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, 0xf3, 0xb5, - 0x06, 0x1c, 0x00, 0x20, 0x89, 0xb0, 0xf8, 0x4c, - 0x08, 0x90, 0xe2, 0x69, 0x08, 0x25, 0x3c, 0x00, - 0xc4, 0x3b, 0x00, 0x00, 0x00, 0x2a, 0x03, 0xd0, - 0x06, 0xa9, 0x07, 0xa8, 0xfc, 0xf7, 0x06, 0xfc, - 0x30, 0x1c, 0xf3, 0x4e, 0x00, 0x27, 0x20, 0x36, - 0x82, 0x28, 0x6f, 0xd0, 0x15, 0xdc, 0x01, 0x28, - 0x18, 0xd0, 0x80, 0x28, 0x6b, 0xd1, 0xee, 0x4d, - 0x80, 0x3d, 0xa8, 0x68, 0x01, 0x28, 0x67, 0xd1, - 0x68, 0x68, 0x0f, 0xf0, 0x1b, 0xf8, 0x00, 0x28, - 0x63, 0xd1, 0x01, 0x21, 0x01, 0x20, 0x0d, 0xf0, - 0x3c, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x9d, 0xf8, - 0x08, 0xf0, 0xdb, 0xfd, 0x0b, 0xb0, 0xf0, 0xbd, - 0x83, 0x28, 0x6d, 0xd0, 0x84, 0x28, 0x55, 0xd1, - 0xe7, 0xe0, 0x0a, 0x98, 0x0a, 0x28, 0x04, 0xd2, - 0x03, 0xa3, 0x1b, 0x18, 0x1b, 0x5a, 0x5b, 0x00, - 0x9f, 0x44, 0xf6, 0xe0, 0x00, 0x00, 0xee, 0x00, - 0x0b, 0x00, 0xf7, 0x00, 0xf7, 0x00, 0xf7, 0x00, - 0xf7, 0x00, 0x2f, 0x00, 0x88, 0x00, 0x8b, 0x00, - 0xad, 0x00, 0x3c, 0x00, 0x3c, 0x3c, 0x00, 0x00, - 0x00, 0xf0, 0x56, 0xfe, 0x00, 0x28, 0x17, 0xd0, - 0xd6, 0x4a, 0x80, 0x3a, 0xd1, 0x6a, 0x06, 0x98, - 0x81, 0x42, 0x16, 0xd0, 0x06, 0x21, 0x00, 0x28, - 0x00, 0xd1, 0x07, 0x21, 0x0d, 0x06, 0x2d, 0x0e, - 0x00, 0x28, 0x0e, 0xd0, 0xcf, 0x4a, 0x01, 0x20, - 0x80, 0x3a, 0x50, 0x65, 0x0f, 0xf0, 0xa0, 0xf8, - 0xcc, 0x4a, 0x80, 0x3a, 0x50, 0x66, 0x04, 0xe0, - 0x00, 0x21, 0x16, 0x20, 0x3c, 0x00, 0x78, 0x3c, - 0x00, 0x00, 0x0f, 0xf0, 0xdc, 0xfc, 0x01, 0x25, - 0x02, 0x20, 0x05, 0x90, 0x2e, 0xe2, 0xc6, 0x48, - 0x80, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x2e, 0xd0, - 0xc6, 0x49, 0x20, 0x69, 0xc4, 0x4d, 0x40, 0x18, - 0x0e, 0xf0, 0xc1, 0xff, 0x00, 0x28, 0x12, 0xd0, - 0x0f, 0xf0, 0x85, 0xf8, 0xc1, 0x49, 0x49, 0x42, - 0x40, 0x18, 0xbd, 0x49, 0x20, 0x61, 0x80, 0x39, - 0x48, 0x6e, 0x40, 0x19, 0x0e, 0xf0, 0x3c, 0x00, - 0xb4, 0x3c, 0x00, 0x00, 0xbb, 0xff, 0x00, 0x28, - 0x11, 0xd0, 0x0a, 0xe0, 0xf7, 0xe0, 0x17, 0xe2, - 0xb2, 0xe0, 0xb0, 0xe0, 0xb6, 0x49, 0x20, 0x69, - 0x80, 0x39, 0x49, 0x6e, 0x40, 0x1a, 0xa8, 0x42, - 0x05, 0xdb, 0xb3, 0x49, 0xb5, 0x4d, 0x80, 0x39, - 0x4f, 0x65, 0x03, 0xf0, 0x27, 0xfb, 0x06, 0x22, - 0x29, 0x1c, 0x16, 0x20, 0x0f, 0xf0, 0x72, 0xfc, - 0x47, 0xe0, 0x95, 0xe0, 0x00, 0xf0, 0xfe, 0xfd, - 0x3c, 0x00, 0xf0, 0x3c, 0x00, 0x00, 0x00, 0x28, - 0x42, 0xd1, 0xaa, 0x4d, 0xc4, 0x3d, 0xef, 0x60, - 0x08, 0xf0, 0x19, 0xfd, 0x03, 0xf0, 0x15, 0xfb, - 0xa8, 0x6a, 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, - 0x4c, 0xff, 0xaf, 0x62, 0xa4, 0x48, 0x80, 0x38, - 0x00, 0x68, 0x00, 0x21, 0xff, 0xf7, 0xf9, 0xfc, - 0x08, 0xf0, 0x3f, 0xf9, 0x09, 0x21, 0x16, 0x20, - 0x0f, 0xf0, 0x87, 0xfc, 0x00, 0x22, 0x16, 0x21, - 0x83, 0x20, 0x3c, 0x00, 0x2c, 0x3d, 0x00, 0x00, - 0x0f, 0xf0, 0x40, 0xfd, 0xff, 0xf7, 0x86, 0xfc, - 0x21, 0xe0, 0x00, 0xf0, 0x1b, 0xfe, 0x1e, 0xe0, - 0x06, 0xf0, 0x54, 0xfa, 0x97, 0x4d, 0x80, 0x3d, - 0xa9, 0x6f, 0x40, 0x1a, 0x04, 0x90, 0x06, 0x98, - 0x00, 0x28, 0x01, 0xd0, 0xaf, 0x65, 0x02, 0xe0, - 0xa8, 0x6d, 0x00, 0x28, 0x08, 0xd1, 0x91, 0x48, - 0xc4, 0x38, 0x00, 0x78, 0x80, 0x07, 0x03, 0xd5, - 0x92, 0x48, 0x47, 0x60, 0x3c, 0x00, 0x68, 0x3d, - 0x00, 0x00, 0x00, 0xf0, 0x02, 0xfe, 0x04, 0x98, - 0xff, 0x38, 0x23, 0x38, 0x14, 0x28, 0x02, 0xd2, - 0x01, 0x20, 0xe8, 0x63, 0x53, 0xe0, 0xef, 0x63, - 0x51, 0xe0, 0x87, 0x4a, 0xb5, 0x7a, 0x80, 0x3a, - 0x00, 0x2d, 0x4c, 0xd0, 0x0d, 0xf0, 0x71, 0xff, - 0x00, 0xf0, 0xad, 0xfd, 0x07, 0x1c, 0x82, 0x48, - 0x80, 0x38, 0x40, 0x6f, 0xff, 0x30, 0x5f, 0x30, - 0x0e, 0xf0, 0x3d, 0xff, 0x02, 0x1c, 0x3c, 0x00, - 0xa4, 0x3d, 0x00, 0x00, 0x7e, 0x48, 0x80, 0x38, - 0x40, 0x6d, 0x00, 0x28, 0x1a, 0xd1, 0x00, 0xf0, - 0xf1, 0xfd, 0x00, 0x28, 0x16, 0xd1, 0x04, 0x2d, - 0x02, 0xd1, 0x00, 0x2f, 0x12, 0xd1, 0x1b, 0xe0, - 0x00, 0x2f, 0x06, 0xd0, 0x02, 0x2d, 0x14, 0xd0, - 0x79, 0x48, 0x40, 0x68, 0x00, 0x28, 0x09, 0xd0, - 0x12, 0xe0, 0x00, 0x2a, 0x10, 0xd1, 0x4b, 0x21, - 0xc9, 0x00, 0x01, 0x23, 0x09, 0x22, 0x16, 0x20, - 0x3c, 0x00, 0xe0, 0x3d, 0x00, 0x00, 0x0f, 0xf0, - 0xd6, 0xfc, 0x6e, 0x4a, 0x73, 0x48, 0x80, 0x3a, - 0x11, 0x68, 0x0b, 0xf0, 0xd8, 0xfa, 0x18, 0xe0, - 0x01, 0x21, 0x00, 0x20, 0x01, 0xe0, 0x01, 0x21, - 0x01, 0x20, 0x00, 0xf0, 0x2a, 0xfe, 0x10, 0xe0, - 0x67, 0x4a, 0x6c, 0x49, 0x80, 0x3a, 0x90, 0x6e, - 0x40, 0x18, 0x90, 0x66, 0x01, 0x25, 0x08, 0x95, - 0x8b, 0xe1, 0x04, 0x21, 0x6c, 0xe1, 0x61, 0x4a, - 0x66, 0x48, 0x3c, 0x00, 0x1c, 0x3e, 0x00, 0x00, - 0x80, 0x3a, 0x11, 0x68, 0x0b, 0xf0, 0xaa, 0xfa, - 0x88, 0xe1, 0xaf, 0x60, 0xa8, 0x6f, 0xe8, 0x67, - 0x63, 0x48, 0x01, 0x6d, 0xa9, 0x67, 0x07, 0x9a, - 0x14, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x08, 0x18, 0x12, 0x30, 0xa8, 0x66, 0x70, 0x78, - 0xb0, 0x70, 0x30, 0x78, 0x70, 0x70, 0x02, 0x20, - 0x30, 0x70, 0xa0, 0x69, 0xfc, 0xf7, 0xc2, 0xfa, - 0xef, 0x64, 0xa8, 0x6f, 0x3c, 0x00, 0x58, 0x3e, - 0x00, 0x00, 0xe9, 0x6f, 0x59, 0x4b, 0x40, 0x1a, - 0x98, 0x42, 0x12, 0xd2, 0x68, 0x6d, 0x06, 0x99, - 0x88, 0x42, 0x0e, 0xd0, 0x30, 0x78, 0x02, 0x28, - 0x0b, 0xd8, 0x0e, 0xf0, 0x9c, 0xff, 0xa9, 0x6f, - 0x08, 0x22, 0x40, 0x1a, 0x52, 0x49, 0x09, 0x1a, - 0x3b, 0x1c, 0x16, 0x20, 0x0f, 0xf0, 0x85, 0xfc, - 0x00, 0xe0, 0xaf, 0x65, 0x01, 0x20, 0x05, 0x90, - 0x08, 0x90, 0x43, 0x48, 0x02, 0x25, 0x3c, 0x00, - 0x94, 0x3e, 0x00, 0x00, 0xc4, 0x38, 0xc1, 0x68, - 0x00, 0x29, 0x72, 0xd1, 0x01, 0x21, 0xc1, 0x60, - 0x49, 0x48, 0x00, 0x6b, 0x00, 0x28, 0x6c, 0xd0, - 0x08, 0xf0, 0x66, 0xfc, 0x69, 0xe0, 0x3c, 0x48, - 0x00, 0x22, 0x01, 0x92, 0x80, 0x38, 0x80, 0x68, - 0x01, 0x28, 0x04, 0xd1, 0x38, 0x48, 0x80, 0x38, - 0x87, 0x60, 0x01, 0x20, 0x48, 0xe1, 0x3a, 0x48, - 0x01, 0x23, 0x43, 0x60, 0x34, 0x48, 0xc4, 0x38, - 0x3c, 0x00, 0xd0, 0x3e, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x28, 0x0a, 0xd1, 0x00, 0xf0, 0x25, 0xfe, - 0x00, 0x28, 0x06, 0xd0, 0xff, 0x21, 0x91, 0x31, - 0x01, 0x23, 0x09, 0x22, 0x16, 0x20, 0x0f, 0xf0, - 0x52, 0xfc, 0x2c, 0x49, 0x80, 0x39, 0x48, 0x6f, - 0x89, 0x6f, 0x42, 0x1a, 0x03, 0x92, 0x06, 0xf0, - 0x76, 0xf9, 0x28, 0x49, 0x80, 0x39, 0x89, 0x6f, - 0x03, 0x9a, 0x40, 0x1a, 0x02, 0x90, 0x37, 0x20, - 0x00, 0x01, 0x3c, 0x00, 0x0c, 0x3f, 0x00, 0x00, - 0x10, 0x1a, 0x50, 0x28, 0x0d, 0xd2, 0x23, 0x48, - 0x80, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x04, 0xd1, - 0x02, 0x98, 0xff, 0x38, 0x55, 0x38, 0x14, 0x28, - 0x01, 0xd2, 0x01, 0x22, 0x00, 0xe0, 0x00, 0x22, - 0x01, 0x92, 0x03, 0x9a, 0x01, 0x20, 0xff, 0x3a, - 0x0b, 0x3a, 0x50, 0x2a, 0x00, 0xd3, 0x00, 0x20, - 0x04, 0x90, 0x00, 0x28, 0x0a, 0xd0, 0x17, 0x48, - 0x80, 0x38, 0xc0, 0x6f, 0x3c, 0x00, 0x48, 0x3f, - 0x00, 0x00, 0x08, 0x1a, 0x9b, 0x21, 0xc9, 0x00, - 0x40, 0x1a, 0x14, 0x28, 0x01, 0xd2, 0x01, 0x22, - 0x00, 0xe0, 0x00, 0x22, 0x00, 0x92, 0x00, 0x2a, - 0x11, 0xd0, 0x0f, 0x4d, 0x01, 0x20, 0x80, 0x3d, - 0x68, 0x65, 0x0e, 0xf0, 0x20, 0xff, 0x68, 0x66, - 0x01, 0x25, 0x01, 0x21, 0x16, 0x20, 0x0f, 0xf0, - 0x5e, 0xfb, 0x00, 0x21, 0x16, 0x20, 0x0f, 0xf0, - 0x5a, 0xfb, 0x00, 0xe0, 0xba, 0xe0, 0x3c, 0x00, - 0x84, 0x3f, 0x00, 0x00, 0xf0, 0x79, 0x02, 0x28, - 0x3c, 0xd8, 0x05, 0x4a, 0x80, 0x3a, 0x51, 0x6c, - 0x00, 0x29, 0x37, 0xd1, 0x13, 0x6c, 0x11, 0x1c, - 0x00, 0x2b, 0x33, 0xd1, 0x16, 0xe0, 0x00, 0x00, - 0x24, 0x6d, 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, - 0xc0, 0x5c, 0x15, 0x00, 0x70, 0x99, 0x14, 0x00, - 0xb0, 0x57, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xe2, 0x04, 0x00, 0x00, 0x00, 0x90, 0x07, 0x00, - 0x3c, 0x00, 0xc0, 0x3f, 0x00, 0x00, 0x53, 0x07, - 0x00, 0x00, 0x1e, 0x02, 0x00, 0x00, 0xc8, 0x57, - 0x01, 0x00, 0x4a, 0x6d, 0x00, 0x2a, 0x02, 0xd0, - 0xb2, 0x7a, 0x02, 0x2a, 0x15, 0xd1, 0x00, 0x9a, - 0x00, 0x2a, 0x03, 0xd0, 0xca, 0x6d, 0x01, 0x32, - 0xca, 0x65, 0x00, 0xe0, 0xcf, 0x65, 0x01, 0x9a, - 0x00, 0x2a, 0x0b, 0xd0, 0x8a, 0x6f, 0xcb, 0x6f, - 0xd2, 0x1a, 0x5a, 0x4b, 0x9a, 0x42, 0x02, 0xd2, - 0x8a, 0x6d, 0x3c, 0x00, 0xfc, 0x3f, 0x00, 0x00, - 0x01, 0x32, 0x00, 0xe0, 0x01, 0x22, 0x8a, 0x65, - 0x00, 0xe0, 0x8f, 0x65, 0x04, 0x99, 0x00, 0x29, - 0x01, 0xd1, 0x02, 0x28, 0x0b, 0xd9, 0x54, 0x4a, - 0x02, 0x28, 0x1e, 0xd9, 0xd0, 0x6f, 0x61, 0x68, - 0x88, 0x42, 0x1a, 0xd1, 0x91, 0x6f, 0x08, 0x1a, - 0x50, 0x49, 0x88, 0x42, 0x15, 0xdd, 0x4e, 0x4b, - 0x98, 0x6f, 0xe1, 0x68, 0x40, 0x1a, 0x7d, 0x21, - 0xc9, 0x00, 0x88, 0x42, 0x3c, 0x00, 0x38, 0x40, - 0x00, 0x00, 0x0b, 0xdd, 0x61, 0x69, 0x40, 0x1a, - 0x00, 0x28, 0x04, 0xdd, 0x02, 0x11, 0x40, 0x11, - 0x10, 0x18, 0x40, 0x18, 0x01, 0xe0, 0x80, 0x10, - 0x08, 0x18, 0x60, 0x61, 0x58, 0x6f, 0xe0, 0x60, - 0x03, 0x98, 0xff, 0x38, 0x23, 0x38, 0x14, 0x28, - 0x09, 0xd2, 0x02, 0x98, 0xff, 0x38, 0x23, 0x38, - 0x14, 0x28, 0x04, 0xd2, 0x3e, 0x4a, 0x90, 0x6f, - 0x50, 0x64, 0x90, 0x6a, 0x90, 0x64, 0x3c, 0x00, - 0x74, 0x40, 0x00, 0x00, 0x0e, 0xf0, 0x9a, 0xfe, - 0x3a, 0x49, 0x49, 0x6c, 0x40, 0x1a, 0x3b, 0x49, - 0x88, 0x42, 0x01, 0xd9, 0x37, 0x49, 0x4f, 0x64, - 0x39, 0x49, 0x03, 0x98, 0x40, 0x18, 0x14, 0x28, - 0x07, 0xd2, 0x34, 0x49, 0xc8, 0x6b, 0x00, 0x28, - 0x03, 0xd0, 0x88, 0x6f, 0x08, 0x64, 0x88, 0x6a, - 0x88, 0x64, 0x0e, 0xf0, 0x83, 0xfe, 0x2f, 0x49, - 0x09, 0x6c, 0x40, 0x1a, 0x31, 0x49, 0x88, 0x42, - 0x3c, 0x00, 0xb0, 0x40, 0x00, 0x00, 0x01, 0xd9, - 0x2c, 0x48, 0x07, 0x64, 0x04, 0x20, 0x05, 0x90, - 0x08, 0x21, 0x16, 0x20, 0x0f, 0xf0, 0xb9, 0xfa, - 0x28, 0x48, 0x40, 0x6d, 0x00, 0x28, 0x02, 0xd0, - 0x04, 0x99, 0x00, 0x29, 0x08, 0xd0, 0x29, 0x49, - 0x00, 0x28, 0x00, 0xd1, 0x29, 0x49, 0x3b, 0x1c, - 0x06, 0x22, 0x16, 0x20, 0x0f, 0xf0, 0x57, 0xfb, - 0x02, 0x2d, 0x09, 0xd0, 0x06, 0x2d, 0x0a, 0xd0, - 0x07, 0x2d, 0x3c, 0x00, 0xec, 0x40, 0x00, 0x00, - 0x13, 0xd1, 0x07, 0xe0, 0x01, 0x21, 0x16, 0x20, - 0xfd, 0xf7, 0xd6, 0xf8, 0x1e, 0xe0, 0x1a, 0x4a, - 0x57, 0x63, 0x97, 0x63, 0x18, 0x4a, 0x06, 0x98, - 0xd0, 0x62, 0x07, 0x99, 0x11, 0x63, 0x53, 0x6b, - 0x18, 0x43, 0x50, 0x63, 0x90, 0x6b, 0x08, 0x43, - 0x90, 0x63, 0x05, 0x98, 0x00, 0x28, 0x05, 0xd0, - 0x05, 0x98, 0x0c, 0xf0, 0x5f, 0xfa, 0x05, 0x98, - 0x0c, 0xf0, 0xd2, 0xf9, 0x3c, 0x00, 0x28, 0x41, - 0x00, 0x00, 0x08, 0x2d, 0x05, 0xd0, 0x0d, 0x48, - 0x44, 0x38, 0x85, 0x70, 0x28, 0x1c, 0x03, 0xf0, - 0xdc, 0xfd, 0x11, 0x49, 0xe0, 0x69, 0x88, 0x42, - 0x00, 0xd1, 0x61, 0xe5, 0x08, 0x98, 0x00, 0x28, - 0xfb, 0xd0, 0xb0, 0x7a, 0x02, 0x28, 0xf8, 0xd1, - 0x01, 0x21, 0x16, 0x20, 0x0f, 0xf0, 0x6f, 0xfa, - 0x02, 0x20, 0x0d, 0xf0, 0xe8, 0xfe, 0x53, 0xe5, - 0x00, 0x00, 0x53, 0x07, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x41, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x20, 0xa1, 0x07, 0x00, 0x20, 0x4e, 0x00, 0x00, - 0x3f, 0xfb, 0xff, 0xff, 0xa0, 0x86, 0x01, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0xc0, 0x5c, 0x15, 0x00, - 0xf1, 0x1d, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xf8, 0xb5, 0x21, 0x48, - 0x00, 0x68, 0x21, 0x4d, 0x69, 0x69, 0x08, 0x40, - 0x01, 0xd1, 0x01, 0x27, 0x00, 0xe0, 0x00, 0x27, - 0x3c, 0x00, 0xa0, 0x41, 0x00, 0x00, 0x1d, 0x4d, - 0x01, 0x26, 0x69, 0x6a, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x26, 0x1b, 0x4d, 0x1a, 0x48, 0x2c, 0x1c, - 0xa0, 0x30, 0x02, 0x7a, 0x28, 0x1c, 0x40, 0x30, - 0x80, 0x34, 0x10, 0x23, 0xb7, 0x42, 0x10, 0xd1, - 0x01, 0x25, 0xc5, 0x80, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x23, 0x1a, 0x43, 0x11, 0x1c, 0x01, 0x73, - 0x01, 0x20, 0x0e, 0xf0, 0x88, 0xfe, 0x08, 0x20, - 0x20, 0x70, 0x3c, 0x00, 0xdc, 0x41, 0x00, 0x00, - 0x00, 0x22, 0x16, 0x21, 0x80, 0x20, 0x13, 0xe0, - 0x11, 0x27, 0xc7, 0x80, 0x2e, 0x1c, 0x0b, 0x4d, - 0x00, 0x29, 0x00, 0xd1, 0x00, 0x23, 0x1a, 0x43, - 0x11, 0x1c, 0x01, 0x73, 0x01, 0x20, 0x0e, 0xf0, - 0x75, 0xfe, 0x08, 0x20, 0x20, 0x70, 0x30, 0x6d, - 0x00, 0x22, 0x16, 0x21, 0x68, 0x67, 0x82, 0x20, - 0x0f, 0xf0, 0xd0, 0xfa, 0xf8, 0xbd, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0x3c, 0x00, 0x18, 0x42, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x00, 0x90, - 0x07, 0x00, 0xb0, 0xb5, 0x0f, 0x4d, 0x04, 0x1c, - 0xaa, 0x7a, 0x01, 0x21, 0x08, 0x1c, 0x00, 0x2a, - 0x00, 0xd0, 0x00, 0x20, 0x00, 0x2c, 0x00, 0xd0, - 0x00, 0x21, 0x88, 0x42, 0x0a, 0xd0, 0x00, 0x2c, - 0x04, 0xd1, 0x00, 0xf0, 0x42, 0xfb, 0x00, 0xf0, - 0xd6, 0xfa, 0x03, 0xe0, 0x00, 0xf0, 0xd9, 0xfa, - 0x00, 0xf0, 0x09, 0xf8, 0xa8, 0x7a, 0x3c, 0x00, - 0x54, 0x42, 0x00, 0x00, 0x02, 0x49, 0xe4, 0x39, - 0x48, 0x71, 0xac, 0x72, 0xb0, 0xbd, 0x00, 0x00, - 0x44, 0x6d, 0x01, 0x00, 0x80, 0xb5, 0x3e, 0xf0, - 0x55, 0xf8, 0x02, 0x49, 0x01, 0x20, 0x08, 0x70, - 0x80, 0xbd, 0x00, 0x00, 0x68, 0x7e, 0x01, 0x00, - 0xf3, 0xb5, 0x01, 0x20, 0x8d, 0xb0, 0x0f, 0x1c, - 0x01, 0x24, 0x08, 0x90, 0x0e, 0xf0, 0x92, 0xfd, - 0x06, 0x1c, 0x00, 0xf0, 0xb5, 0xfa, 0x09, 0x90, - 0x3c, 0x00, 0x90, 0x42, 0x00, 0x00, 0x00, 0xf0, - 0x80, 0xfb, 0x07, 0x90, 0xfe, 0xf7, 0x3f, 0xfa, - 0x05, 0x1c, 0x00, 0x21, 0x0c, 0x91, 0x08, 0xf0, - 0xf0, 0xfb, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x0a, 0x90, 0xfe, 0xf7, - 0x12, 0xfd, 0x05, 0xf0, 0xe0, 0xfe, 0x0b, 0x90, - 0x00, 0x2d, 0x23, 0xd0, 0x28, 0x88, 0x41, 0x07, - 0x20, 0xd4, 0x29, 0x1d, 0x04, 0x91, 0x0a, 0x35, - 0x00, 0x06, 0x3c, 0x00, 0xcc, 0x42, 0x00, 0x00, - 0x80, 0x0e, 0x01, 0x21, 0x20, 0x28, 0x03, 0x95, - 0x00, 0xd0, 0x00, 0x21, 0x0d, 0x1c, 0x04, 0x98, - 0x06, 0xf0, 0x38, 0xfd, 0x0c, 0x90, 0x04, 0x98, - 0x06, 0xf0, 0x10, 0xfd, 0x00, 0x28, 0x08, 0xd0, - 0x03, 0x98, 0x01, 0xf0, 0x87, 0xfa, 0x00, 0x28, - 0x03, 0xd0, 0x00, 0x2d, 0x01, 0xd1, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x0c, 0x99, 0x01, 0x43, - 0x0c, 0x91, 0xfc, 0xf7, 0x3c, 0x00, 0x08, 0x43, - 0x00, 0x00, 0x23, 0xff, 0x00, 0x28, 0x2f, 0xd0, - 0x07, 0xf0, 0x99, 0xff, 0x05, 0x1c, 0x07, 0xf0, - 0xb2, 0xff, 0x04, 0x90, 0xff, 0xf7, 0xf3, 0xf8, - 0x0c, 0x99, 0x01, 0x43, 0x00, 0x2d, 0x06, 0xd0, - 0x04, 0x98, 0xf0, 0x4a, 0x30, 0x1a, 0x90, 0x42, - 0x01, 0xd2, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0x08, 0x43, 0x0c, 0x90, 0x0b, 0x98, 0x0a, 0x9b, - 0x18, 0x43, 0x01, 0x1c, 0x0b, 0x91, 0x3c, 0x00, - 0x44, 0x43, 0x00, 0x00, 0x05, 0xf0, 0xce, 0xfe, - 0x00, 0x28, 0x1a, 0xd1, 0x00, 0x2d, 0x06, 0xd0, - 0x04, 0x98, 0xe7, 0x49, 0x30, 0x1a, 0x88, 0x42, - 0x01, 0xd2, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0x0c, 0x99, 0x08, 0x43, 0x05, 0x1c, 0x00, 0xf0, - 0x1f, 0xfb, 0x28, 0x43, 0x03, 0xe0, 0x00, 0xf0, - 0x1b, 0xfb, 0x0c, 0x99, 0x08, 0x43, 0x0c, 0x90, - 0x00, 0xf0, 0xd4, 0xfb, 0x0b, 0x99, 0x01, 0x43, - 0x3c, 0x00, 0x80, 0x43, 0x00, 0x00, 0x0b, 0x91, - 0xdc, 0x49, 0xc8, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0x01, 0x38, 0xc8, 0x60, 0x08, 0xf0, 0xe7, 0xfb, - 0x06, 0x90, 0x08, 0xf0, 0x90, 0xfd, 0x31, 0x1a, - 0x05, 0x91, 0x06, 0x99, 0xd6, 0x48, 0x81, 0x42, - 0x08, 0xd8, 0x00, 0x2f, 0x08, 0xd1, 0x05, 0x99, - 0x40, 0x08, 0x81, 0x42, 0x04, 0xd9, 0x06, 0x99, - 0x81, 0x42, 0x01, 0xd9, 0x00, 0x24, 0x8b, 0xe0, - 0xd0, 0x48, 0x3c, 0x00, 0xbc, 0x43, 0x00, 0x00, - 0x05, 0x99, 0xd0, 0x4d, 0x81, 0x42, 0x26, 0xd2, - 0xe8, 0x79, 0x10, 0x28, 0x06, 0xd2, 0x00, 0x2f, - 0x21, 0xd1, 0xcc, 0x48, 0xa0, 0x38, 0x80, 0x6a, - 0x00, 0x28, 0x1c, 0xd1, 0x09, 0xf0, 0x62, 0xff, - 0x04, 0x90, 0x00, 0x28, 0x02, 0xd1, 0x00, 0x20, - 0xc3, 0x49, 0x13, 0xe0, 0x09, 0xf0, 0x10, 0xfe, - 0x00, 0x28, 0x03, 0xd0, 0xc4, 0x48, 0xc0, 0x69, - 0x00, 0x28, 0xf4, 0xd0, 0x3c, 0x00, 0xf8, 0x43, - 0x00, 0x00, 0x04, 0x98, 0x05, 0x28, 0x03, 0xd0, - 0xc1, 0x48, 0x00, 0x6a, 0x00, 0x28, 0x65, 0xd1, - 0xbb, 0x49, 0x48, 0x6a, 0x00, 0x28, 0x23, 0xd0, - 0x01, 0x38, 0x48, 0x62, 0x00, 0xf0, 0x87, 0xff, - 0x00, 0x28, 0x11, 0xd0, 0xbb, 0x48, 0x05, 0x99, - 0x81, 0x42, 0x0d, 0xd2, 0x01, 0xf0, 0x9b, 0xf8, - 0x04, 0x30, 0x0d, 0xf0, 0xee, 0xfc, 0x40, 0x30, - 0xc1, 0x7a, 0x01, 0x29, 0x4e, 0xd0, 0x3c, 0x00, - 0x34, 0x44, 0x00, 0x00, 0x80, 0x7a, 0x00, 0x28, - 0x01, 0xd0, 0x05, 0x28, 0x49, 0xd3, 0x01, 0xf0, - 0xdf, 0xf8, 0x02, 0x28, 0x10, 0xd0, 0x00, 0x2f, - 0x02, 0xd1, 0x06, 0x98, 0x00, 0x28, 0x40, 0xd1, - 0x00, 0x20, 0x08, 0x90, 0x82, 0xe1, 0xaa, 0x48, - 0xa0, 0x38, 0xc0, 0x68, 0x00, 0x28, 0x38, 0xd0, - 0xa8, 0x48, 0x80, 0x69, 0x48, 0x62, 0x34, 0xe0, - 0x0a, 0xa9, 0x03, 0xc9, 0x08, 0x43, 0x45, 0xd0, - 0x3c, 0x00, 0x70, 0x44, 0x00, 0x00, 0xa3, 0x48, - 0x29, 0x78, 0xa0, 0x38, 0x02, 0x29, 0x40, 0xd8, - 0x40, 0x6d, 0x00, 0x28, 0x0a, 0xd0, 0x9f, 0x48, - 0xa2, 0x49, 0x20, 0x38, 0xc0, 0x68, 0x40, 0x18, - 0x0e, 0xf0, 0xc7, 0xfb, 0x00, 0x28, 0x01, 0xd0, - 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0x96, 0x4a, - 0x90, 0x6a, 0x00, 0x28, 0x02, 0xda, 0x64, 0x08, - 0x64, 0x00, 0x2a, 0xe0, 0x00, 0x29, 0x09, 0xd1, - 0x95, 0x4b, 0x3c, 0x00, 0xac, 0x44, 0x00, 0x00, - 0xa0, 0x3b, 0x5b, 0x6d, 0x00, 0x2b, 0x02, 0xd0, - 0x05, 0x28, 0x0d, 0xdb, 0x01, 0xe0, 0x07, 0x28, - 0x0a, 0xdb, 0x01, 0x20, 0xc0, 0x43, 0x90, 0x62, - 0x64, 0x08, 0x8e, 0x49, 0x64, 0x00, 0x00, 0x20, - 0xa0, 0x39, 0x88, 0x65, 0x14, 0xe0, 0xd1, 0xe0, - 0x39, 0x43, 0x11, 0xd1, 0x89, 0x49, 0xa0, 0x39, - 0xcb, 0x6d, 0x00, 0x2b, 0x02, 0xd1, 0x89, 0x6d, - 0x01, 0x29, 0x09, 0xd9, 0x3c, 0x00, 0xe8, 0x44, - 0x00, 0x00, 0x07, 0x9b, 0x00, 0x2b, 0x01, 0xd1, - 0x07, 0x28, 0x01, 0xdb, 0x64, 0x08, 0x64, 0x00, - 0x01, 0x30, 0x90, 0x62, 0xbd, 0xe0, 0x7d, 0x49, - 0x88, 0x69, 0x04, 0x90, 0x00, 0x20, 0x88, 0x61, - 0x0c, 0x98, 0x00, 0x28, 0x2c, 0xd0, 0x07, 0xf0, - 0x66, 0xfc, 0x00, 0x28, 0x02, 0xd0, 0x02, 0x20, - 0x04, 0x43, 0x25, 0xe0, 0x7a, 0x48, 0xc0, 0x6a, - 0x00, 0x28, 0x04, 0xd1, 0x77, 0x48, 0x3c, 0x00, - 0x24, 0x45, 0x00, 0x00, 0xa0, 0x38, 0xc0, 0x68, - 0x00, 0x28, 0x1c, 0xd1, 0x04, 0x98, 0x00, 0x28, - 0x0d, 0xd1, 0x28, 0x78, 0x10, 0x28, 0x02, 0xd3, - 0xe8, 0x78, 0x02, 0x28, 0x02, 0xd9, 0x28, 0x79, - 0x10, 0x28, 0x04, 0xd3, 0x04, 0x24, 0x6b, 0x49, - 0x01, 0x22, 0x8a, 0x61, 0x94, 0xe0, 0x6c, 0x48, - 0xa0, 0x38, 0x40, 0x6d, 0x00, 0x28, 0x71, 0xd0, - 0x05, 0xf0, 0xa2, 0xfd, 0x00, 0x28, 0x6d, 0xd0, - 0x3c, 0x00, 0x60, 0x45, 0x00, 0x00, 0x64, 0x08, - 0x64, 0x00, 0x88, 0xe0, 0xff, 0xf7, 0x5b, 0xfa, - 0x00, 0x28, 0x1a, 0xd0, 0x68, 0x48, 0x00, 0x78, - 0x02, 0x28, 0x01, 0xd1, 0x00, 0x2f, 0x14, 0xd1, - 0x00, 0x20, 0xfe, 0xf7, 0x70, 0xfe, 0x30, 0x1a, - 0x04, 0x90, 0xff, 0xf7, 0x6c, 0xfa, 0x00, 0x28, - 0x07, 0xd0, 0xff, 0xf7, 0x1e, 0xfa, 0x00, 0x28, - 0x03, 0xd0, 0x5d, 0x49, 0x04, 0x98, 0x88, 0x42, - 0x4f, 0xd3, 0x3c, 0x00, 0x9c, 0x45, 0x00, 0x00, - 0x05, 0xf0, 0x6c, 0xfd, 0x00, 0x28, 0x4b, 0xd1, - 0x53, 0x49, 0x08, 0x78, 0x03, 0x28, 0x08, 0xd1, - 0x88, 0x68, 0x01, 0x22, 0xd2, 0x07, 0x30, 0x1a, - 0x90, 0x42, 0x41, 0xd2, 0x01, 0x22, 0x0a, 0x70, - 0x57, 0xe0, 0x54, 0x48, 0x00, 0x78, 0x02, 0x28, - 0x01, 0xd1, 0x00, 0x2f, 0x51, 0xd1, 0x4a, 0x49, - 0x88, 0x68, 0x51, 0x49, 0x80, 0x1b, 0x88, 0x42, - 0x07, 0xd9, 0x01, 0x20, 0x3c, 0x00, 0xd8, 0x45, - 0x00, 0x00, 0xfe, 0xf7, 0x42, 0xfe, 0x7d, 0x21, - 0x09, 0x01, 0x40, 0x18, 0x44, 0x49, 0x88, 0x60, - 0x4a, 0x48, 0x00, 0x78, 0x02, 0x28, 0x04, 0xd1, - 0x07, 0x9b, 0x00, 0x2b, 0x01, 0xd1, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x47, 0x4b, 0x47, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x3c, 0x49, 0x89, 0x68, - 0x89, 0x1b, 0x88, 0x42, 0x30, 0xd9, 0x07, 0x9b, - 0x00, 0x20, 0x03, 0x93, 0x00, 0xf0, 0x3c, 0x00, - 0x14, 0x46, 0x00, 0x00, 0x79, 0xff, 0x02, 0x90, - 0xff, 0xf7, 0xd8, 0xf9, 0x04, 0x90, 0x01, 0xf0, - 0x57, 0xf8, 0x04, 0x99, 0x02, 0x9a, 0x51, 0x43, - 0x48, 0x43, 0x01, 0x90, 0x00, 0xf0, 0xdc, 0xff, - 0x41, 0x1c, 0x01, 0x98, 0x01, 0x22, 0x48, 0x43, - 0x11, 0x1c, 0x00, 0xe0, 0x1b, 0xe0, 0x31, 0x4b, - 0x5b, 0x6a, 0x83, 0x42, 0x00, 0xd3, 0x00, 0x21, - 0x03, 0x9b, 0x01, 0x22, 0x00, 0x2b, 0x00, 0xd0, - 0x3c, 0x00, 0x50, 0x46, 0x00, 0x00, 0x00, 0x22, - 0x2c, 0x4b, 0x51, 0x43, 0x9b, 0x6a, 0x01, 0x22, - 0x83, 0x42, 0x00, 0xd3, 0x00, 0x22, 0x50, 0x00, - 0x08, 0x18, 0x03, 0xd0, 0x23, 0x49, 0x03, 0x20, - 0x08, 0x70, 0x03, 0xe0, 0x09, 0x98, 0xc0, 0x68, - 0x06, 0x28, 0x08, 0xd9, 0x02, 0x24, 0x08, 0x98, - 0x00, 0x28, 0x6e, 0xd0, 0x1d, 0x49, 0x00, 0x20, - 0xc8, 0x61, 0x48, 0x61, 0xa5, 0xe0, 0x1a, 0x49, - 0x48, 0x69, 0x3c, 0x00, 0x8c, 0x46, 0x00, 0x00, - 0x00, 0x28, 0x0a, 0xd1, 0x00, 0x2f, 0x05, 0xd0, - 0x01, 0x22, 0x4a, 0x61, 0xc8, 0x69, 0x80, 0x18, - 0xc8, 0x61, 0x0a, 0xe0, 0x00, 0x20, 0xc8, 0x61, - 0x03, 0xe0, 0x00, 0x2f, 0x05, 0xd1, 0x00, 0x20, - 0x48, 0x61, 0x0d, 0x98, 0x00, 0x28, 0x00, 0xd1, - 0xc8, 0x68, 0x00, 0x20, 0x08, 0x90, 0x08, 0x78, - 0x01, 0x28, 0x2f, 0xd0, 0x02, 0x28, 0x4b, 0xd1, - 0x00, 0x2f, 0x08, 0xd1, 0x3c, 0x00, 0xc8, 0x46, - 0x00, 0x00, 0xe8, 0x78, 0x00, 0x28, 0x02, 0xd1, - 0x28, 0x78, 0x10, 0x28, 0x43, 0xd2, 0x28, 0x79, - 0x10, 0x28, 0x40, 0xd2, 0x48, 0x68, 0x0a, 0x69, - 0x30, 0x1a, 0x90, 0x42, 0x67, 0xd3, 0x01, 0x22, - 0x0a, 0x70, 0x38, 0xe0, 0x00, 0x00, 0xe2, 0x04, - 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, 0x68, 0x7e, - 0x01, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x88, 0x13, - 0x00, 0x00, 0x44, 0x6d, 0x01, 0x00, 0x3c, 0x00, - 0x04, 0x47, 0x00, 0x00, 0xc8, 0x57, 0x01, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0x98, 0x3a, 0x00, 0x00, - 0xc0, 0x57, 0x01, 0x00, 0x40, 0x0d, 0x03, 0x00, - 0xc4, 0x09, 0x00, 0x00, 0xb2, 0x0c, 0x00, 0x00, - 0x00, 0x20, 0x0b, 0x9a, 0x0a, 0x9b, 0xc0, 0x43, - 0x1a, 0x43, 0x37, 0xd0, 0x00, 0x2f, 0x35, 0xd1, - 0x07, 0x9b, 0x00, 0x2b, 0x08, 0xd0, 0x6a, 0x78, - 0x02, 0x2a, 0x2f, 0xd9, 0x2a, 0x78, 0x10, 0x2a, - 0x3c, 0x00, 0x40, 0x47, 0x00, 0x00, 0x2c, 0xd2, - 0x2a, 0x79, 0x10, 0x2a, 0x29, 0xd2, 0x25, 0x4b, - 0x1a, 0x6c, 0x00, 0x2a, 0x06, 0xd0, 0x9a, 0x6a, - 0x9f, 0x6c, 0xba, 0x42, 0x02, 0xd1, 0x1f, 0x20, - 0x1f, 0xe0, 0x2e, 0xe0, 0x20, 0x4b, 0x5a, 0x6c, - 0x00, 0x2a, 0x03, 0xd0, 0x1f, 0x4f, 0xb3, 0x1a, - 0xbb, 0x42, 0x16, 0xd3, 0x1c, 0x4b, 0x00, 0x2a, - 0x05, 0xd0, 0x9a, 0x6a, 0x9f, 0x6c, 0xba, 0x42, - 0x01, 0xd1, 0x3c, 0x00, 0x7c, 0x47, 0x00, 0x00, - 0x0f, 0x20, 0x0d, 0xe0, 0x07, 0x9a, 0x00, 0x2a, - 0x04, 0xd0, 0xea, 0x79, 0x20, 0x2a, 0x01, 0xd1, - 0x00, 0x20, 0x05, 0xe0, 0xea, 0x79, 0x10, 0x2a, - 0x01, 0xd3, 0x03, 0x20, 0x00, 0xe0, 0x9a, 0x6a, - 0x12, 0x4a, 0x12, 0x68, 0x02, 0x40, 0x0b, 0xd1, - 0x01, 0x20, 0x08, 0x90, 0x02, 0x20, 0x08, 0x70, - 0x0f, 0x48, 0x08, 0x61, 0x4e, 0x60, 0x64, 0xe7, - 0xff, 0xe7, 0x01, 0x20, 0x3c, 0x00, 0xb8, 0x47, - 0x00, 0x00, 0x08, 0x90, 0x60, 0xe7, 0x0c, 0x49, - 0x88, 0x6a, 0x00, 0x28, 0x01, 0xda, 0x01, 0x30, - 0x02, 0xe0, 0x00, 0x28, 0x01, 0xdd, 0x00, 0x20, - 0x88, 0x62, 0x00, 0x20, 0x08, 0x62, 0x08, 0x99, - 0x20, 0x04, 0x08, 0x43, 0x0f, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x71, 0x02, - 0x00, 0x00, 0x08, 0x20, 0x07, 0x00, 0x53, 0x07, - 0x00, 0x00, 0x68, 0x7e, 0x01, 0x00, 0x3c, 0x00, - 0xf4, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x00, 0x48, 0x70, 0x47, 0x50, 0x7e, 0x01, 0x00, - 0x80, 0xb5, 0x3d, 0xf0, 0x7f, 0xfd, 0x02, 0x49, - 0x01, 0x20, 0x08, 0x70, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x7e, 0x01, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, - 0x0e, 0xf0, 0xc8, 0xfa, 0x26, 0x49, 0x04, 0x1c, - 0x88, 0x6a, 0x26, 0x4e, 0x00, 0x28, 0x01, 0xd0, - 0x04, 0x20, 0x03, 0xe0, 0x70, 0x6a, 0x00, 0x28, - 0x3c, 0x00, 0x30, 0x48, 0x00, 0x00, 0x01, 0xd0, - 0x01, 0x38, 0x70, 0x62, 0x00, 0x27, 0x00, 0x2d, - 0x02, 0xd0, 0xb7, 0x61, 0xf7, 0x61, 0x0a, 0xe0, - 0xb0, 0x69, 0x1c, 0x49, 0x01, 0x30, 0xb0, 0x61, - 0x49, 0x6d, 0x00, 0x29, 0x03, 0xd0, 0x03, 0x28, - 0x01, 0xd9, 0x01, 0x20, 0xf0, 0x61, 0xb4, 0x60, - 0xf1, 0x68, 0x00, 0x91, 0x08, 0xf0, 0xf7, 0xfc, - 0xf0, 0x60, 0x00, 0x99, 0x88, 0x42, 0x02, 0xd0, - 0x30, 0x62, 0x3c, 0x00, 0x6c, 0x48, 0x00, 0x00, - 0x34, 0x61, 0x0b, 0xe0, 0x00, 0xf0, 0x90, 0xf8, - 0x00, 0x28, 0x01, 0xd0, 0x11, 0x48, 0x00, 0xe0, - 0x11, 0x48, 0x31, 0x69, 0x61, 0x1a, 0x81, 0x42, - 0x00, 0xd9, 0x37, 0x62, 0x0b, 0x4a, 0x0c, 0x48, - 0xd1, 0x6c, 0x20, 0x30, 0x00, 0x29, 0x01, 0xd0, - 0x0a, 0x21, 0x03, 0xe0, 0x01, 0x7a, 0x00, 0x29, - 0x01, 0xd0, 0xff, 0x31, 0x01, 0x72, 0x00, 0x2d, - 0x03, 0xd1, 0x01, 0x7a, 0x3c, 0x00, 0xa8, 0x48, - 0x00, 0x00, 0x00, 0x29, 0x00, 0xd0, 0x91, 0x6a, - 0x00, 0x7a, 0x00, 0x28, 0x00, 0xd1, 0x17, 0x65, - 0xf8, 0xbd, 0xa4, 0x6c, 0x01, 0x00, 0x3c, 0x7e, - 0x01, 0x00, 0xa6, 0x0e, 0x00, 0x00, 0xa8, 0x61, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x06, 0x49, - 0x80, 0xb5, 0x89, 0x68, 0x00, 0x29, 0x07, 0xd0, - 0x05, 0x21, 0x00, 0x28, 0x00, 0xd1, 0x04, 0x21, - 0x08, 0x06, 0x00, 0x0e, 0x03, 0xf0, 0x3c, 0x00, - 0xe4, 0x48, 0x00, 0x00, 0x05, 0xfa, 0x80, 0xbd, - 0x60, 0x6c, 0x01, 0x00, 0x07, 0x48, 0x00, 0x68, - 0x07, 0x49, 0x4a, 0x69, 0x10, 0x40, 0x01, 0xd0, - 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x49, 0x6a, - 0x88, 0x42, 0x01, 0xd1, 0x01, 0x20, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x10, 0x00, 0x07, 0x00, - 0xa4, 0x6c, 0x01, 0x00, 0x70, 0xb5, 0x0e, 0xf0, - 0x49, 0xfa, 0x02, 0x1c, 0x00, 0xf0, 0x3a, 0xf8, - 0x3c, 0x00, 0x20, 0x49, 0x00, 0x00, 0x10, 0x49, - 0x00, 0x28, 0x0e, 0xd0, 0x08, 0x1c, 0xa0, 0x31, - 0x0e, 0x78, 0x0e, 0x4b, 0x10, 0x2e, 0x01, 0xd3, - 0x80, 0x6f, 0x03, 0xe0, 0x49, 0x78, 0x10, 0x29, - 0x0e, 0xd3, 0xc0, 0x6f, 0xc0, 0x18, 0x84, 0x1a, - 0x0a, 0xe0, 0x08, 0x1c, 0x80, 0x30, 0x45, 0x69, - 0x08, 0x49, 0x8d, 0x42, 0x01, 0xd9, 0x0c, 0x1c, - 0x05, 0xe0, 0xc0, 0x68, 0x10, 0x1a, 0x2c, 0x1a, - 0x00, 0x2c, 0x3c, 0x00, 0x5c, 0x49, 0x00, 0x00, - 0x00, 0xda, 0x64, 0x19, 0x20, 0x1c, 0x70, 0xbd, - 0xa4, 0x6c, 0x01, 0x00, 0xa6, 0x0e, 0x00, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0x80, 0xb5, 0x05, 0xf0, - 0xb7, 0xfb, 0x00, 0x28, 0x02, 0xd0, 0x07, 0xf0, - 0x1f, 0xff, 0x80, 0xbd, 0x03, 0x48, 0x00, 0x78, - 0x00, 0x28, 0xfa, 0xd0, 0x07, 0xf0, 0x70, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, - 0x03, 0x49, 0x01, 0x20, 0x3c, 0x00, 0x98, 0x49, - 0x00, 0x00, 0x49, 0x69, 0x03, 0x29, 0x00, 0xd8, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x60, 0x6c, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x00, 0x24, - 0x28, 0x78, 0x01, 0x28, 0x03, 0xd0, 0x05, 0xf0, - 0x6a, 0xfb, 0x04, 0x06, 0x24, 0x0e, 0xfe, 0xf7, - 0xd2, 0xfc, 0x00, 0x02, 0x20, 0x43, 0x02, 0xd1, - 0x68, 0x6a, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, - 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, 0x3c, 0x00, - 0xd4, 0x49, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, - 0x01, 0x21, 0x01, 0x28, 0x00, 0xd0, 0x00, 0x21, - 0x01, 0x48, 0x41, 0x62, 0x70, 0x47, 0x00, 0x00, - 0x60, 0x6c, 0x01, 0x00, 0x15, 0x48, 0x10, 0xb5, - 0x04, 0x68, 0x15, 0x48, 0x00, 0x6a, 0x00, 0x28, - 0x14, 0xd0, 0xff, 0xf7, 0xcb, 0xff, 0x00, 0x28, - 0x0e, 0xd1, 0x11, 0x48, 0x11, 0x49, 0xc4, 0x30, - 0x40, 0x69, 0x88, 0x42, 0x08, 0xd2, 0xcc, 0x08, - 0x3c, 0x00, 0x10, 0x4a, 0x00, 0x00, 0xa0, 0x42, - 0x05, 0xd3, 0xff, 0xf7, 0x7e, 0xff, 0xa0, 0x42, - 0x01, 0xda, 0x0c, 0x4c, 0x01, 0xe0, 0xff, 0x24, - 0x91, 0x34, 0x7d, 0x20, 0x00, 0x01, 0x84, 0x42, - 0x04, 0xd9, 0x00, 0x22, 0x16, 0x21, 0x83, 0x20, - 0x0e, 0xf0, 0xbd, 0xfe, 0x01, 0x23, 0x09, 0x22, - 0x21, 0x1c, 0x16, 0x20, 0x0e, 0xf0, 0xa7, 0xfe, - 0x10, 0xbd, 0xb0, 0x57, 0x01, 0x00, 0x60, 0x6c, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x4a, 0x00, 0x00, - 0xc0, 0x5d, 0x00, 0x00, 0x10, 0x27, 0x00, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x0e, 0x1c, 0x00, 0xf0, - 0x43, 0xf8, 0x00, 0x28, 0x0f, 0xd0, 0x08, 0x4c, - 0x20, 0x78, 0xc0, 0x07, 0x03, 0xd4, 0x05, 0xf0, - 0xab, 0xf9, 0x09, 0xf0, 0x31, 0xfe, 0x00, 0x2d, - 0x05, 0xd0, 0x20, 0x78, 0x80, 0x07, 0x02, 0xd4, - 0x30, 0x1c, 0x02, 0xf0, 0xfd, 0xfe, 0x70, 0xbd, - 0x60, 0x6c, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x4a, - 0x00, 0x00, 0xb0, 0xb5, 0x00, 0x28, 0x18, 0xd0, - 0x11, 0x48, 0x81, 0x42, 0x15, 0xd2, 0x10, 0x48, - 0x0c, 0x1c, 0x0d, 0x18, 0x07, 0xf0, 0xdf, 0xfa, - 0x81, 0x00, 0x09, 0x18, 0xa1, 0x42, 0x01, 0xd2, - 0x40, 0x00, 0x03, 0xe0, 0x41, 0x00, 0x09, 0x18, - 0xa1, 0x42, 0x01, 0xd2, 0x24, 0x1a, 0x06, 0xe0, - 0x41, 0x00, 0xa1, 0x42, 0x03, 0xd2, 0x40, 0x08, - 0xf8, 0xe7, 0x06, 0x4d, 0x07, 0x4c, 0x3c, 0x00, - 0xc4, 0x4a, 0x00, 0x00, 0x0e, 0xf0, 0x72, 0xf9, - 0x00, 0x19, 0x29, 0x1c, 0x07, 0xf0, 0xdc, 0xfa, - 0xb0, 0xbd, 0x00, 0x00, 0x80, 0xb9, 0x2a, 0x00, - 0x53, 0x07, 0x00, 0x00, 0x4c, 0x1d, 0x00, 0x00, - 0x88, 0x13, 0x00, 0x00, 0xb0, 0xb5, 0x05, 0xf0, - 0xfd, 0xfa, 0x00, 0x28, 0x13, 0xd1, 0xfe, 0xf7, - 0xb5, 0xfe, 0x0a, 0x4c, 0x0a, 0x4d, 0x00, 0x28, - 0x60, 0x63, 0x00, 0xd0, 0x28, 0x60, 0x0e, 0xf0, - 0x3c, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x55, 0xf9, - 0x21, 0x6a, 0x00, 0x29, 0x04, 0xd1, 0xe1, 0x69, - 0x40, 0x1a, 0x29, 0x68, 0x88, 0x42, 0x01, 0xd9, - 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, - 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, 0xb0, 0x57, - 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xdd, 0xff, - 0x00, 0x28, 0x05, 0xd0, 0x05, 0xf0, 0xb7, 0xfa, - 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, 0x80, 0xbd, - 0x00, 0x20, 0x3c, 0x00, 0x3c, 0x4b, 0x00, 0x00, - 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x4c, - 0x00, 0x21, 0xa2, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0xa1, 0x60, 0x02, 0xf0, 0x83, 0xf9, 0x10, 0xbd, - 0x61, 0x60, 0x01, 0x1c, 0x00, 0x22, 0x04, 0x20, - 0x0e, 0xf0, 0x36, 0xfd, 0x03, 0x48, 0x21, 0x68, - 0x0a, 0xf0, 0x08, 0xfc, 0x10, 0xbd, 0x00, 0x00, - 0xbc, 0x74, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x3c, 0x00, 0x78, 0x4b, - 0x00, 0x00, 0x01, 0xd1, 0xfc, 0xf7, 0xc1, 0xfb, - 0x20, 0x4c, 0xe0, 0x6a, 0x00, 0x28, 0x15, 0xd0, - 0x1f, 0x4b, 0xa0, 0x69, 0x58, 0x43, 0xc6, 0x0b, - 0x20, 0x88, 0x46, 0x43, 0xf0, 0x00, 0x80, 0x19, - 0xe6, 0x60, 0xfb, 0xf7, 0x1c, 0xfe, 0xa8, 0x42, - 0x05, 0xd8, 0x30, 0x1c, 0xfb, 0xf7, 0x17, 0xfe, - 0x80, 0x19, 0xa8, 0x42, 0x02, 0xd2, 0x00, 0x20, - 0xe0, 0x60, 0x20, 0xe0, 0xe5, 0x60, 0x3c, 0x00, - 0xb4, 0x4b, 0x00, 0x00, 0x00, 0x2d, 0x1d, 0xd0, - 0x26, 0x88, 0xa0, 0x69, 0x70, 0x43, 0xc1, 0x03, - 0x28, 0x1c, 0xfb, 0xf7, 0xa5, 0xfd, 0x60, 0x61, - 0x0d, 0x48, 0x32, 0x1c, 0x29, 0x1c, 0x30, 0x30, - 0xfb, 0xf7, 0x0a, 0xfc, 0x0c, 0x4b, 0x60, 0x69, - 0x58, 0x43, 0xc0, 0x0b, 0x60, 0x62, 0x01, 0xf0, - 0xb7, 0xfd, 0xa0, 0x62, 0xe0, 0x68, 0x00, 0x28, - 0x04, 0xd0, 0x20, 0x69, 0xa1, 0x68, 0xfb, 0xf7, - 0x3c, 0x00, 0xf0, 0x4b, 0x00, 0x00, 0xf4, 0xfb, - 0x70, 0xbd, 0x05, 0x48, 0xa1, 0x68, 0xfb, 0xf7, - 0xef, 0xfb, 0x70, 0xbd, 0x00, 0x00, 0xc8, 0x74, - 0x01, 0x00, 0x40, 0x42, 0x0f, 0x00, 0xc0, 0xc6, - 0x2d, 0x00, 0x88, 0x13, 0x00, 0x00, 0xf1, 0xb5, - 0x3e, 0x48, 0x00, 0xab, 0x81, 0x78, 0xc0, 0x78, - 0x3e, 0x4f, 0x0a, 0x07, 0x04, 0x07, 0x58, 0x78, - 0x3b, 0x49, 0x12, 0x0f, 0x08, 0x5c, 0x14, 0x39, - 0x24, 0x0f, 0x3c, 0x00, 0x2c, 0x4c, 0x00, 0x00, - 0x80, 0x18, 0x78, 0x60, 0x01, 0x30, 0xb8, 0x60, - 0x18, 0x78, 0x35, 0x4d, 0x08, 0x5c, 0x00, 0x19, - 0xb8, 0x61, 0x01, 0x30, 0xf8, 0x61, 0xeb, 0x78, - 0x33, 0x48, 0x1e, 0x09, 0x33, 0x4b, 0x18, 0x38, - 0x81, 0x78, 0x5e, 0x43, 0xab, 0x78, 0x1d, 0x09, - 0xc8, 0x23, 0x6b, 0x43, 0x00, 0x29, 0x08, 0xd1, - 0x2b, 0x4d, 0x2d, 0x78, 0x3d, 0x60, 0xc5, 0x60, - 0x7d, 0x25, 0xed, 0x00, 0x3c, 0x00, 0x68, 0x4c, - 0x00, 0x00, 0x5d, 0x1b, 0x2c, 0x4b, 0x07, 0xe0, - 0x27, 0x4d, 0x6d, 0x78, 0x3d, 0x60, 0xc5, 0x60, - 0x4b, 0x25, 0x2d, 0x01, 0x5d, 0x1b, 0x28, 0x4b, - 0xf6, 0x18, 0x02, 0x20, 0x00, 0xf0, 0x57, 0xf8, - 0x28, 0x1a, 0xf8, 0x60, 0x22, 0x48, 0x22, 0x1c, - 0x18, 0x38, 0x81, 0x78, 0x03, 0x20, 0x00, 0xf0, - 0x4e, 0xf8, 0x30, 0x1a, 0x38, 0x62, 0x39, 0x68, - 0x00, 0xab, 0x79, 0x61, 0x5a, 0x78, 0x3c, 0x00, - 0xa4, 0x4c, 0x00, 0x00, 0x56, 0x23, 0xf9, 0x68, - 0x5a, 0x43, 0x89, 0x1a, 0xf9, 0x60, 0xc8, 0x31, - 0x39, 0x61, 0x18, 0x49, 0x18, 0x39, 0x89, 0x78, - 0x00, 0x29, 0xb9, 0x69, 0x11, 0xd1, 0x00, 0xab, - 0x1a, 0x78, 0x13, 0x4b, 0x14, 0x3b, 0x9a, 0x5c, - 0x53, 0x1c, 0x59, 0x43, 0x0a, 0x23, 0x59, 0x43, - 0x14, 0x4b, 0x59, 0x1a, 0x51, 0x43, 0x0a, 0x23, - 0x59, 0x43, 0x40, 0x1a, 0x38, 0x62, 0x12, 0x49, - 0x3c, 0x00, 0xe0, 0x4c, 0x00, 0x00, 0x10, 0xe0, - 0x00, 0xab, 0x1a, 0x78, 0x0a, 0x4b, 0x14, 0x3b, - 0x9a, 0x5c, 0x53, 0x1c, 0x59, 0x43, 0x0a, 0x23, - 0x59, 0x43, 0x0d, 0x4b, 0x59, 0x1a, 0x51, 0x43, - 0x0a, 0x23, 0x59, 0x43, 0x40, 0x1a, 0x0b, 0x49, - 0x38, 0x62, 0x40, 0x18, 0x78, 0x62, 0xf8, 0xbd, - 0x00, 0x00, 0x0c, 0x5a, 0x01, 0x00, 0x66, 0x5a, - 0x01, 0x00, 0x94, 0x78, 0x01, 0x00, 0xa0, 0x86, - 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x4d, 0x00, 0x00, - 0x00, 0x48, 0x71, 0x00, 0xb0, 0xd6, 0x8c, 0x00, - 0x88, 0x10, 0x00, 0x00, 0x80, 0x38, 0x01, 0x00, - 0x58, 0x12, 0x00, 0x00, 0x70, 0x11, 0x01, 0x00, - 0x30, 0xb5, 0x19, 0x4b, 0x02, 0x28, 0xdd, 0x68, - 0x06, 0xd1, 0x00, 0x29, 0x04, 0xd1, 0x2b, 0x1c, - 0x0c, 0x33, 0x9c, 0x1a, 0x64, 0x23, 0x5c, 0x43, - 0x02, 0x28, 0x09, 0xd1, 0x01, 0x29, 0x07, 0xd1, - 0x64, 0x23, 0x7d, 0x24, 0x3c, 0x00, 0x58, 0x4d, - 0x00, 0x00, 0xe4, 0x00, 0x6b, 0x43, 0x1c, 0x19, - 0xa0, 0x23, 0x53, 0x43, 0xe4, 0x1a, 0x0a, 0x23, - 0x5a, 0x43, 0x03, 0x28, 0x09, 0xd1, 0x00, 0x29, - 0x07, 0xd1, 0x13, 0x23, 0xff, 0x24, 0xe4, 0x00, - 0x6b, 0x43, 0x1b, 0x19, 0x9b, 0x1a, 0x1c, 0x1c, - 0x5c, 0x43, 0x03, 0x28, 0x08, 0xd1, 0x01, 0x29, - 0x06, 0xd1, 0x0e, 0x20, 0x05, 0x49, 0x68, 0x43, - 0x40, 0x18, 0x80, 0x1a, 0x04, 0x1c, 0x3c, 0x00, - 0x94, 0x4d, 0x00, 0x00, 0x44, 0x43, 0x20, 0x1c, - 0x30, 0xbd, 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, - 0x84, 0x08, 0x00, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0x0c, 0x23, 0x60, 0x78, 0x05, 0x49, 0x14, 0x31, - 0x58, 0x43, 0x40, 0x18, 0x40, 0x68, 0x01, 0xf0, - 0x4f, 0xfc, 0x00, 0x21, 0x60, 0x78, 0x02, 0xf0, - 0x4b, 0xff, 0x10, 0xbd, 0x4c, 0x7b, 0x01, 0x00, - 0x0c, 0x48, 0xf8, 0xb5, 0x40, 0x78, 0x0c, 0x23, - 0x3c, 0x00, 0xd0, 0x4d, 0x00, 0x00, 0x0a, 0x49, - 0x58, 0x43, 0x14, 0x31, 0x44, 0x18, 0x26, 0x1d, - 0x60, 0xce, 0x30, 0x1c, 0x0b, 0xf0, 0x0b, 0xfd, - 0x00, 0x27, 0x41, 0x20, 0x47, 0x55, 0x05, 0x48, - 0x29, 0x1c, 0x02, 0xf0, 0xf0, 0xfe, 0x28, 0x1c, - 0x01, 0xf0, 0x31, 0xfc, 0x04, 0x34, 0xc0, 0xc4, - 0xf8, 0xbd, 0x4c, 0x7b, 0x01, 0x00, 0x55, 0x80, - 0x00, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x4c, 0x21, - 0x28, 0x78, 0x3c, 0x00, 0x0c, 0x4e, 0x00, 0x00, - 0x09, 0x4a, 0x41, 0x43, 0x8c, 0x18, 0x22, 0x68, - 0x01, 0x21, 0xfb, 0xf7, 0xe1, 0xfa, 0x28, 0x78, - 0x01, 0xf0, 0xfa, 0xfb, 0x3c, 0x23, 0xe0, 0x56, - 0x41, 0x1e, 0x01, 0x20, 0x07, 0xf0, 0x34, 0xfb, - 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x7c, 0x01, 0x00, - 0x58, 0xe3, 0x01, 0x00, 0x0c, 0x23, 0x07, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x80, 0xb5, 0x40, 0x68, - 0x41, 0x6b, 0x00, 0x29, 0x3c, 0x00, 0x48, 0x4e, - 0x00, 0x00, 0x02, 0xd0, 0x0b, 0xf0, 0xfb, 0xfd, - 0x80, 0xbd, 0x0b, 0xf0, 0x2c, 0xfd, 0x80, 0xbd, - 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0x38, 0x22, - 0x0a, 0x4b, 0x42, 0x43, 0xd2, 0x18, 0x00, 0x29, - 0x80, 0xb5, 0x04, 0xd0, 0x02, 0x29, 0x07, 0xd1, - 0x0b, 0xf0, 0xfb, 0xfc, 0x80, 0xbd, 0xd2, 0x6a, - 0x01, 0x21, 0xfb, 0xf7, 0xb0, 0xfa, 0x80, 0xbd, - 0x03, 0x21, 0x86, 0x20, 0xfc, 0xf7, 0x3c, 0x00, - 0x84, 0x4e, 0x00, 0x00, 0x0f, 0xfa, 0x80, 0xbd, - 0xd4, 0xe4, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x06, - 0x24, 0x0e, 0x0c, 0x20, 0x0e, 0x49, 0x60, 0x43, - 0x40, 0x18, 0x45, 0x68, 0xa8, 0x6b, 0x00, 0x28, - 0x03, 0xd1, 0x00, 0x21, 0x20, 0x1c, 0xfd, 0xf7, - 0xe1, 0xfa, 0x20, 0x1c, 0x07, 0xf0, 0xf2, 0xff, - 0x00, 0x28, 0x08, 0xd0, 0x28, 0x1c, 0x60, 0x30, - 0xc1, 0x79, 0x01, 0x29, 0x03, 0xd9, 0xff, 0x31, - 0x3c, 0x00, 0xc0, 0x4e, 0x00, 0x00, 0xc1, 0x71, - 0xff, 0x31, 0x81, 0x71, 0x01, 0x21, 0x20, 0x1c, - 0x02, 0xf0, 0xc5, 0xfe, 0xb0, 0xbd, 0x60, 0x7b, - 0x01, 0x00, 0x70, 0xb5, 0x00, 0x06, 0x00, 0x0e, - 0x05, 0x1c, 0x4c, 0x23, 0x0a, 0x49, 0x58, 0x43, - 0x44, 0x18, 0x3c, 0x20, 0x00, 0x5d, 0xff, 0x30, - 0x06, 0x06, 0x36, 0x16, 0x28, 0x1c, 0x01, 0xf0, - 0x90, 0xfb, 0x00, 0x21, 0x28, 0x1c, 0x22, 0x68, - 0xfb, 0xf7, 0x3c, 0x00, 0xfc, 0x4e, 0x00, 0x00, - 0x6f, 0xfa, 0x31, 0x1c, 0x00, 0x20, 0x07, 0xf0, - 0xc7, 0xfa, 0x70, 0xbd, 0x58, 0xe3, 0x01, 0x00, - 0x0c, 0x22, 0x0f, 0x4b, 0x42, 0x43, 0xd2, 0x18, - 0x10, 0xb5, 0x54, 0x68, 0x00, 0x29, 0x0d, 0xd0, - 0x02, 0x29, 0x0f, 0xd1, 0x2c, 0x20, 0x00, 0x5d, - 0x00, 0x28, 0x03, 0xd0, 0x07, 0x21, 0x0c, 0x20, - 0xfc, 0xf7, 0xba, 0xf9, 0x20, 0x1c, 0x0b, 0xf0, - 0xbb, 0xfc, 0x10, 0xbd, 0x3c, 0x00, 0x38, 0x4f, - 0x00, 0x00, 0x00, 0x21, 0x02, 0xf0, 0x8d, 0xfe, - 0x10, 0xbd, 0x04, 0x21, 0x0c, 0x20, 0xfc, 0xf7, - 0xae, 0xf9, 0x10, 0xbd, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x29, 0x07, 0xd0, - 0x0c, 0x23, 0x05, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x40, 0x68, 0x0b, 0xf0, 0x4a, 0xfc, 0x80, 0xbd, - 0x01, 0x21, 0x02, 0xf0, 0x76, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0x3c, 0x00, - 0x74, 0x4f, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x00, 0x29, 0x05, 0xd0, 0x02, 0x29, 0x1a, 0xd1, - 0x20, 0x1c, 0x0b, 0xf0, 0xeb, 0xfc, 0x10, 0xbd, - 0x0d, 0x48, 0x04, 0x70, 0x0d, 0x48, 0x07, 0xf0, - 0x07, 0xf9, 0x0d, 0x48, 0x01, 0x88, 0x01, 0x22, - 0x12, 0x03, 0x11, 0x43, 0x01, 0x80, 0x4c, 0x20, - 0x0a, 0x49, 0x60, 0x43, 0x40, 0x18, 0x40, 0x30, - 0x00, 0x78, 0xfd, 0xf7, 0x5d, 0xfd, 0x20, 0x1c, - 0x3c, 0x00, 0xb0, 0x4f, 0x00, 0x00, 0x0a, 0xf0, - 0xd4, 0xf8, 0x10, 0xbd, 0x03, 0x21, 0x86, 0x20, - 0xfc, 0xf7, 0x73, 0xf9, 0x10, 0xbd, 0x3c, 0x7c, - 0x01, 0x00, 0x05, 0x4e, 0x00, 0x00, 0x32, 0x80, - 0x07, 0x00, 0x58, 0xe3, 0x01, 0x00, 0xff, 0xb5, - 0x05, 0x1c, 0x01, 0x20, 0x83, 0xb0, 0x01, 0x90, - 0x0c, 0x20, 0x5d, 0x4a, 0x68, 0x43, 0x86, 0x18, - 0x01, 0x27, 0x00, 0x29, 0x74, 0x68, 0x0e, 0xd0, - 0x02, 0x29, 0x3c, 0x00, 0xec, 0x4f, 0x00, 0x00, - 0x6a, 0xd1, 0x2c, 0x20, 0x00, 0x5d, 0x00, 0x28, - 0x03, 0xd0, 0x06, 0x21, 0x0c, 0x20, 0xfc, 0xf7, - 0x53, 0xf9, 0x20, 0x1c, 0x0b, 0xf0, 0x20, 0xfd, - 0x07, 0xb0, 0xf0, 0xbd, 0x52, 0x48, 0x14, 0x38, - 0x45, 0x70, 0xa0, 0x6b, 0x00, 0x28, 0x07, 0xd0, - 0x50, 0x48, 0x07, 0xf0, 0x7f, 0xf8, 0x01, 0x21, - 0x28, 0x1c, 0xfd, 0xf7, 0x25, 0xfa, 0x1c, 0xe0, - 0x4d, 0x48, 0x07, 0xf0, 0x3c, 0x00, 0x28, 0x50, - 0x00, 0x00, 0x77, 0xf8, 0x4a, 0x48, 0x14, 0x38, - 0x05, 0x70, 0x4b, 0x48, 0x01, 0x88, 0x01, 0x22, - 0x52, 0x03, 0x11, 0x43, 0x01, 0x80, 0x40, 0x20, - 0x00, 0x5d, 0xfd, 0xf7, 0x12, 0xfd, 0xb0, 0x68, - 0x00, 0x28, 0x09, 0xd1, 0x28, 0x1c, 0x07, 0xf0, - 0x64, 0xff, 0xb0, 0x60, 0x00, 0x28, 0x03, 0xd1, - 0x09, 0x21, 0x0c, 0x20, 0xfc, 0xf7, 0x23, 0xf9, - 0x05, 0x98, 0x00, 0x28, 0x03, 0xd0, 0x3c, 0x00, - 0x64, 0x50, 0x00, 0x00, 0xe0, 0x6c, 0x01, 0x30, - 0xe0, 0x64, 0x0e, 0xe0, 0x67, 0x20, 0x00, 0x5d, - 0x00, 0x28, 0x07, 0xd1, 0xe0, 0x6c, 0x00, 0x28, - 0x04, 0xd1, 0x39, 0x48, 0x02, 0x38, 0xc0, 0x6a, - 0xa0, 0x64, 0x09, 0xe0, 0x20, 0x6d, 0x00, 0x28, - 0x01, 0xd0, 0x00, 0x27, 0x04, 0xe0, 0x28, 0x1c, - 0x07, 0xf0, 0x00, 0xff, 0x00, 0x28, 0xe5, 0xd1, - 0x05, 0x98, 0x20, 0x65, 0x20, 0x1c, 0x20, 0x30, - 0x3c, 0x00, 0xa0, 0x50, 0x00, 0x00, 0x62, 0x6a, - 0x02, 0x90, 0x81, 0x7b, 0x28, 0x1c, 0x07, 0xf0, - 0x78, 0xff, 0x00, 0x2f, 0x19, 0xd0, 0x20, 0x1c, - 0x60, 0x30, 0xc1, 0x79, 0x4a, 0x1c, 0xc2, 0x71, - 0x80, 0x79, 0x81, 0x42, 0x02, 0xd2, 0x01, 0x20, - 0x01, 0xe0, 0x40, 0xe0, 0x00, 0x20, 0x01, 0x90, - 0x00, 0x28, 0x0a, 0xd0, 0x25, 0x48, 0x00, 0x78, - 0x80, 0x07, 0x06, 0xd5, 0x00, 0xf0, 0x0d, 0xfb, - 0x01, 0x1c, 0x3c, 0x00, 0xdc, 0x50, 0x00, 0x00, - 0x20, 0x1c, 0x0b, 0xf0, 0x15, 0xfd, 0x01, 0x90, - 0x01, 0x98, 0x00, 0x28, 0x0f, 0xd0, 0x02, 0x98, - 0x00, 0x7b, 0x02, 0x28, 0x03, 0xd1, 0x20, 0x1c, - 0x04, 0xf0, 0xd0, 0xfe, 0x84, 0xe7, 0x01, 0x28, - 0x00, 0xd0, 0x7e, 0xe7, 0x21, 0x1c, 0x30, 0x1c, - 0x04, 0xf0, 0xe2, 0xfe, 0x7c, 0xe7, 0x25, 0x1c, - 0x60, 0x35, 0xe8, 0x79, 0xff, 0x30, 0xa8, 0x71, - 0x68, 0x7a, 0x06, 0xf0, 0x3c, 0x00, 0x18, 0x51, - 0x00, 0x00, 0x9d, 0xfc, 0x0d, 0xf0, 0x47, 0xfe, - 0x07, 0x1c, 0x05, 0xf0, 0x12, 0xff, 0x3f, 0x18, - 0x02, 0x98, 0x81, 0x7b, 0x20, 0x69, 0x04, 0x30, - 0x00, 0xf0, 0x35, 0xfa, 0x61, 0x6a, 0x05, 0xf0, - 0xea, 0xfe, 0x39, 0x18, 0x6b, 0x7a, 0x30, 0x88, - 0x80, 0x31, 0x09, 0x4a, 0x0d, 0xf0, 0x91, 0xfe, - 0x5d, 0xe7, 0x03, 0x21, 0x0c, 0x20, 0xfc, 0xf7, - 0xaa, 0xf8, 0x58, 0xe7, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x51, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, - 0xa5, 0x4d, 0x00, 0x00, 0xc9, 0x4d, 0x00, 0x00, - 0x32, 0x80, 0x07, 0x00, 0x1d, 0x75, 0x01, 0x00, - 0x8d, 0x4e, 0x00, 0x00, 0xff, 0xb5, 0x81, 0xb0, - 0x1f, 0x1c, 0x05, 0x1c, 0x14, 0x1c, 0x10, 0x1c, - 0x0a, 0x9e, 0x00, 0xf0, 0xf5, 0xfc, 0x29, 0x1c, - 0x10, 0x31, 0x20, 0x1d, 0x06, 0x22, 0xfb, 0xf7, - 0xb7, 0xf9, 0xa8, 0x8e, 0x20, 0x80, 0xe8, 0x8e, - 0x3c, 0x00, 0x90, 0x51, 0x00, 0x00, 0x60, 0x80, - 0x02, 0x99, 0x20, 0x1c, 0x00, 0xf0, 0x07, 0xf9, - 0xff, 0x34, 0x01, 0x34, 0x66, 0x60, 0x27, 0x60, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xf8, 0xb5, - 0x0f, 0x1c, 0x1e, 0x1c, 0x05, 0x1c, 0x14, 0x1c, - 0x10, 0x1c, 0x00, 0xf0, 0xd8, 0xfc, 0xa8, 0x88, - 0x39, 0x1c, 0x20, 0x80, 0x28, 0x89, 0x60, 0x80, - 0x20, 0x1c, 0x00, 0xf0, 0xf0, 0xf8, 0xff, 0x34, - 0x01, 0x34, 0x3c, 0x00, 0xcc, 0x51, 0x00, 0x00, - 0x66, 0x60, 0xf8, 0xbd, 0x70, 0xb5, 0x04, 0x1c, - 0xc0, 0x68, 0x05, 0x68, 0x20, 0x1c, 0x14, 0x30, - 0x06, 0x1c, 0x00, 0xf0, 0x0f, 0xfb, 0x00, 0x28, - 0x16, 0xd0, 0x01, 0x22, 0x02, 0x21, 0x20, 0x69, - 0x05, 0xf0, 0xf8, 0xfa, 0x00, 0x28, 0x01, 0xd0, - 0xfb, 0xf7, 0x24, 0xff, 0x00, 0x22, 0x02, 0x21, - 0x20, 0x69, 0x05, 0xf0, 0xef, 0xfa, 0x00, 0x28, - 0x06, 0xd0, 0xfb, 0xf7, 0x3c, 0x00, 0x08, 0x52, - 0x00, 0x00, 0x01, 0xff, 0x00, 0x28, 0x02, 0xd0, - 0x30, 0x1c, 0x0b, 0xf0, 0x7c, 0xfb, 0x68, 0x89, - 0x80, 0x07, 0xc0, 0x0f, 0x03, 0xf0, 0xa7, 0xf8, - 0x18, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0xc1, 0x68, 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, - 0xfb, 0xf7, 0xd4, 0xf8, 0x70, 0xbd, 0x94, 0x67, - 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0x10, 0x1c, - 0x0d, 0x1c, 0x19, 0x1c, 0xff, 0x22, 0x3c, 0x00, - 0x44, 0x52, 0x00, 0x00, 0x00, 0x27, 0xff, 0x2d, - 0x25, 0xd0, 0x00, 0x29, 0x05, 0xd0, 0x4b, 0x88, - 0x00, 0x2b, 0x02, 0xd0, 0x00, 0xf0, 0x50, 0xfc, - 0x15, 0xe0, 0x00, 0x21, 0x10, 0x4e, 0x4b, 0x00, - 0x9e, 0x19, 0x02, 0x23, 0xf6, 0x5e, 0x86, 0x42, - 0x01, 0xdd, 0x0a, 0x1c, 0x04, 0xe0, 0x01, 0x31, - 0x09, 0x06, 0x09, 0x0e, 0x26, 0x29, 0xf1, 0xd3, - 0x09, 0x4e, 0x50, 0x00, 0x80, 0x19, 0x4e, 0x23, - 0x3c, 0x00, 0x80, 0x52, 0x00, 0x00, 0xc0, 0x5e, - 0x27, 0x2a, 0x07, 0xd2, 0x06, 0x49, 0x20, 0x39, - 0x49, 0x57, 0x47, 0x31, 0x40, 0x1a, 0x20, 0x60, - 0x01, 0x27, 0x02, 0xe0, 0x7e, 0x20, 0xc0, 0x43, - 0x20, 0x60, 0x38, 0x1c, 0xf8, 0xbd, 0xfa, 0x47, - 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x7e, 0x21, - 0x05, 0x1c, 0x00, 0x20, 0xc9, 0x43, 0x00, 0x2c, - 0x0f, 0xd0, 0x10, 0x1c, 0x05, 0xf0, 0x6b, 0xfd, - 0x00, 0x28, 0x3c, 0x00, 0xbc, 0x52, 0x00, 0x00, - 0x02, 0xd0, 0x21, 0x1c, 0xc9, 0x39, 0x01, 0xe0, - 0x21, 0x1c, 0x86, 0x39, 0x02, 0x20, 0xc0, 0x43, - 0xfb, 0xf7, 0xb4, 0xf9, 0x01, 0x1c, 0x01, 0x20, - 0x29, 0x60, 0xb0, 0xbd, 0x98, 0xb5, 0x14, 0x1c, - 0x00, 0x22, 0x00, 0x92, 0x22, 0x1c, 0xfd, 0xf7, - 0x43, 0xfe, 0x98, 0xbd, 0x05, 0x49, 0x80, 0xb5, - 0x08, 0x60, 0x05, 0x49, 0x01, 0x20, 0xc8, 0x61, - 0x01, 0x21, 0x00, 0x20, 0x3c, 0x00, 0xf8, 0x52, - 0x00, 0x00, 0x03, 0xf0, 0x1c, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x00, 0x20, - 0x03, 0xf0, 0x11, 0xfe, 0x06, 0xf0, 0x0d, 0xfb, - 0x02, 0x49, 0x00, 0x20, 0x08, 0x60, 0x80, 0xbd, - 0x00, 0x00, 0x20, 0x67, 0x01, 0x00, 0x03, 0x49, - 0x01, 0x20, 0x09, 0x69, 0x00, 0x29, 0x00, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x53, 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, - 0x03, 0x48, 0x00, 0x69, 0x00, 0x28, 0x01, 0xd0, - 0x40, 0x69, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x1c, - 0x0d, 0x1c, 0x04, 0x1c, 0x00, 0x28, 0x01, 0xd0, - 0x01, 0x2c, 0x07, 0xd1, 0x00, 0xf0, 0x36, 0xfa, - 0x00, 0x28, 0x05, 0xd0, 0x13, 0xf0, 0xca, 0xf9, - 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, - 0x3c, 0x00, 0x70, 0x53, 0x00, 0x00, 0x01, 0x20, - 0x00, 0x2c, 0x00, 0xd0, 0x00, 0x20, 0x0a, 0x4c, - 0x04, 0x34, 0x61, 0xc4, 0x10, 0x3c, 0x00, 0xf0, - 0x24, 0xfa, 0x00, 0x28, 0x02, 0xd0, 0x00, 0xf0, - 0xc6, 0xf9, 0x01, 0xe0, 0x00, 0xf0, 0xe5, 0xf8, - 0xc0, 0x30, 0xc3, 0x6b, 0x22, 0x1d, 0x07, 0xca, - 0xfb, 0xf7, 0x20, 0xf8, 0x00, 0x20, 0x70, 0xbd, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0xf8, 0xb5, - 0x0d, 0x1c, 0x3c, 0x00, 0xac, 0x53, 0x00, 0x00, - 0x00, 0x21, 0x04, 0x1c, 0x28, 0x1c, 0x05, 0xf0, - 0xe3, 0xf9, 0x23, 0x1c, 0xff, 0x33, 0x21, 0x33, - 0xff, 0x27, 0x00, 0x28, 0x05, 0xd0, 0x22, 0x22, - 0x01, 0x1c, 0x18, 0x1c, 0xfb, 0xf7, 0x96, 0xf8, - 0x00, 0xe0, 0x1f, 0x70, 0x03, 0x21, 0x28, 0x1c, - 0x05, 0xf0, 0xd2, 0xf9, 0x26, 0x1c, 0xff, 0x36, - 0x41, 0x36, 0x00, 0x28, 0x05, 0xd0, 0x03, 0x22, - 0x01, 0x1c, 0xb0, 0x1c, 0x3c, 0x00, 0xe8, 0x53, - 0x00, 0x00, 0xfb, 0xf7, 0x86, 0xf8, 0x00, 0xe0, - 0xb7, 0x70, 0x01, 0x21, 0x28, 0x1c, 0x05, 0xf0, - 0xc2, 0xf9, 0x00, 0x28, 0x07, 0xd0, 0x01, 0x1c, - 0x20, 0x1c, 0xff, 0x30, 0x0a, 0x22, 0x46, 0x30, - 0xfb, 0xf7, 0x77, 0xf8, 0x00, 0xe0, 0x77, 0x71, - 0x32, 0x21, 0x28, 0x1c, 0x05, 0xf0, 0xb3, 0xf9, - 0x00, 0x28, 0x07, 0xd0, 0x01, 0x1c, 0x20, 0x1c, - 0xff, 0x30, 0x12, 0x22, 0x50, 0x30, 0x3c, 0x00, - 0x24, 0x54, 0x00, 0x00, 0xfb, 0xf7, 0x68, 0xf8, - 0x00, 0xe0, 0xf7, 0x73, 0x06, 0x21, 0x28, 0x1c, - 0x05, 0xf0, 0xa4, 0xf9, 0x00, 0x28, 0x07, 0xd0, - 0x01, 0x1c, 0x20, 0x1c, 0xff, 0x30, 0x04, 0x22, - 0x63, 0x30, 0xfb, 0xf7, 0x59, 0xf8, 0xf8, 0xbd, - 0xff, 0x34, 0x61, 0x34, 0xa7, 0x70, 0xfa, 0xe7, - 0x08, 0x49, 0x80, 0xb5, 0x09, 0x68, 0x00, 0x28, - 0x01, 0xd1, 0x07, 0x48, 0x01, 0x68, 0x08, 0x1c, - 0x3c, 0x00, 0x60, 0x54, 0x00, 0x00, 0x05, 0xd1, - 0x03, 0x21, 0x90, 0x20, 0xfb, 0xf7, 0x1d, 0xff, - 0x00, 0x20, 0x80, 0xbd, 0x01, 0xf0, 0xd7, 0xfb, - 0x80, 0xbd, 0x1c, 0x67, 0x01, 0x00, 0x20, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0xff, 0xf7, 0xe7, 0xff, - 0x80, 0xbd, 0xf0, 0xb5, 0x00, 0x24, 0x84, 0x46, - 0x00, 0x20, 0x0b, 0xe0, 0x87, 0x40, 0x17, 0x40, - 0x07, 0xd0, 0x14, 0x23, 0x0b, 0x4d, 0x43, 0x43, - 0x5b, 0x19, 0x3c, 0x00, 0x9c, 0x54, 0x00, 0x00, - 0x1b, 0x7c, 0x65, 0x46, 0x2b, 0x55, 0x01, 0x34, - 0x01, 0x30, 0x01, 0x27, 0x3b, 0x1c, 0x0e, 0x28, - 0x00, 0xd3, 0x00, 0x23, 0x0e, 0x88, 0x3d, 0x1c, - 0xa6, 0x42, 0x00, 0xdc, 0x00, 0x25, 0x2b, 0x40, - 0xe7, 0xd1, 0x0c, 0x80, 0xf0, 0xbd, 0x00, 0x00, - 0x74, 0x40, 0x01, 0x00, 0x78, 0xb5, 0x04, 0x1c, - 0x01, 0x20, 0x20, 0x70, 0x08, 0x20, 0x00, 0xab, - 0x0d, 0x1c, 0x18, 0x80, 0x3c, 0x00, 0xd8, 0x54, - 0x00, 0x00, 0x16, 0x1c, 0xa0, 0x1c, 0x69, 0x46, - 0xff, 0xf7, 0xd1, 0xff, 0x00, 0xab, 0x00, 0x22, - 0xd2, 0x43, 0x19, 0x88, 0x82, 0x40, 0x61, 0x70, - 0x32, 0x20, 0x28, 0x70, 0x10, 0x20, 0x18, 0x80, - 0x32, 0x40, 0xa8, 0x1c, 0x69, 0x46, 0xff, 0xf7, - 0xc2, 0xff, 0x00, 0xab, 0x18, 0x88, 0x68, 0x70, - 0x78, 0xbd, 0x80, 0xb5, 0x02, 0xf0, 0x35, 0xff, - 0x00, 0x21, 0x00, 0x28, 0x00, 0xd0, 0x3c, 0x00, - 0x14, 0x55, 0x00, 0x00, 0x01, 0x69, 0x08, 0x1c, - 0x80, 0xbd, 0x00, 0x00, 0x05, 0x49, 0x00, 0x28, - 0x01, 0xd0, 0xc8, 0x68, 0x00, 0xe0, 0x08, 0x69, - 0x00, 0x28, 0x01, 0xd0, 0x04, 0x30, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x10, 0x67, 0x01, 0x00, - 0x03, 0x48, 0x00, 0x69, 0x00, 0x28, 0x01, 0xd0, - 0x04, 0x30, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x02, 0x48, 0x00, 0x69, - 0x3c, 0x00, 0x50, 0x55, 0x00, 0x00, 0x00, 0x28, - 0xff, 0xd1, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, 0x20, 0x69, - 0x00, 0x28, 0x03, 0xd1, 0x04, 0x21, 0x90, 0x20, - 0xfb, 0xf7, 0x9b, 0xfe, 0x20, 0x69, 0x10, 0xbd, - 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x00, 0xf0, 0x40, 0xf9, 0x00, 0x28, - 0x01, 0xd0, 0x00, 0x20, 0x10, 0xbd, 0x20, 0x1c, - 0x00, 0xf0, 0x3c, 0x00, 0x8c, 0x55, 0x00, 0x00, - 0x57, 0xf9, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, - 0x10, 0xbd, 0x02, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0x70, 0xb5, 0x0f, 0x4e, 0x04, 0x1c, 0x30, 0x68, - 0x0d, 0x1c, 0x00, 0x28, 0x07, 0xd0, 0x21, 0x1c, - 0x04, 0x30, 0x05, 0xf0, 0xc1, 0xfb, 0x00, 0x28, - 0x01, 0xd0, 0x30, 0x68, 0x0b, 0xe0, 0x09, 0x4a, - 0x10, 0x68, 0x00, 0x28, 0x09, 0xd0, 0x21, 0x1c, - 0x14, 0x1c, 0x04, 0x30, 0x3c, 0x00, 0xc8, 0x55, - 0x00, 0x00, 0x05, 0xf0, 0xb4, 0xfb, 0x00, 0x28, - 0x02, 0xd0, 0x20, 0x68, 0x9c, 0x30, 0x00, 0xe0, - 0x03, 0x48, 0x40, 0x5d, 0x70, 0xbd, 0x20, 0x67, - 0x01, 0x00, 0x1c, 0x67, 0x01, 0x00, 0xcc, 0x47, - 0x01, 0x00, 0x04, 0x49, 0x00, 0x20, 0x09, 0x69, - 0x00, 0x29, 0x02, 0xd0, 0xff, 0x31, 0x01, 0x31, - 0x88, 0x69, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0x01, 0x48, 0x00, 0x7a, 0x3c, 0x00, - 0x04, 0x56, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0xac, 0x7c, 0x01, 0x00, 0xfe, 0xb5, 0x06, 0x1c, - 0x00, 0x20, 0x1f, 0x1c, 0x14, 0x1c, 0x00, 0x29, - 0x02, 0x90, 0x19, 0xd0, 0x01, 0x29, 0x26, 0xd0, - 0x02, 0x29, 0x47, 0xd1, 0x26, 0x48, 0x00, 0x78, - 0x05, 0xf0, 0xa0, 0xfb, 0xa0, 0x72, 0x0a, 0xf0, - 0x4f, 0xfc, 0x0e, 0x28, 0x09, 0xd1, 0xa0, 0x7a, - 0x05, 0xf0, 0xaa, 0xfb, 0x00, 0x28, 0x04, 0xd0, - 0x3c, 0x00, 0x40, 0x56, 0x00, 0x00, 0x20, 0x48, - 0x00, 0x78, 0x05, 0xf0, 0x92, 0xfb, 0xa0, 0x72, - 0x00, 0x20, 0x20, 0x72, 0x2f, 0xe0, 0x1d, 0x4d, - 0x28, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xfb, 0xf7, - 0x52, 0xfe, 0x00, 0x97, 0x2a, 0x68, 0x23, 0x1c, - 0x18, 0x32, 0x11, 0x1c, 0x30, 0x1c, 0xfc, 0xf7, - 0xde, 0xfb, 0x26, 0xe0, 0x30, 0x1c, 0x0c, 0xf0, - 0xca, 0xfb, 0x05, 0x1c, 0x02, 0xd0, 0xa8, 0x68, - 0x00, 0x28, 0x3c, 0x00, 0x7c, 0x56, 0x00, 0x00, - 0x08, 0xd1, 0x13, 0x48, 0x00, 0x68, 0x00, 0x28, - 0x01, 0xd1, 0xfb, 0xf7, 0x3b, 0xfe, 0x10, 0x48, - 0x00, 0x68, 0x18, 0x30, 0x02, 0x1c, 0x0e, 0x48, - 0x00, 0x97, 0x01, 0x68, 0x23, 0x1c, 0x18, 0x31, - 0x30, 0x1c, 0xfc, 0xf7, 0xc3, 0xfb, 0x00, 0x2d, - 0x0a, 0xd0, 0x40, 0x35, 0x28, 0x88, 0x80, 0x06, - 0x06, 0xd4, 0x00, 0x20, 0x20, 0x60, 0x03, 0xe0, - 0x01, 0x21, 0x90, 0x20, 0x3c, 0x00, 0xb8, 0x56, - 0x00, 0x00, 0xfb, 0xf7, 0xf4, 0xfd, 0x02, 0x98, - 0xfe, 0xbd, 0xb0, 0x69, 0x01, 0x00, 0x90, 0x57, - 0x01, 0x00, 0x20, 0x67, 0x01, 0x00, 0x1c, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x20, 0x02, 0xf0, - 0x4a, 0xfe, 0x18, 0x23, 0x05, 0x4a, 0x58, 0x43, - 0x80, 0x18, 0x40, 0x69, 0x01, 0x21, 0x00, 0x28, - 0x00, 0xd0, 0x41, 0x78, 0x08, 0x1c, 0x80, 0xbd, - 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, 0x3c, 0x00, - 0xf4, 0x56, 0x00, 0x00, 0x02, 0x49, 0x08, 0x69, - 0x00, 0x28, 0x00, 0xd1, 0xc8, 0x68, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x03, 0x48, 0xc0, 0x68, - 0x00, 0x28, 0x01, 0xd0, 0x04, 0x30, 0x70, 0x47, - 0x00, 0x20, 0x70, 0x47, 0x10, 0x67, 0x01, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0xe0, 0x68, 0x00, 0x28, - 0x03, 0xd1, 0x05, 0x21, 0x90, 0x20, 0xfb, 0xf7, - 0xbd, 0xfd, 0xe0, 0x68, 0x10, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x57, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, 0x00, 0x2a, - 0x03, 0xd0, 0x11, 0x49, 0x12, 0x4f, 0x0e, 0x78, - 0x01, 0xe0, 0x11, 0x4f, 0x0c, 0x26, 0x08, 0x2e, - 0x01, 0xd2, 0x34, 0x1c, 0x00, 0xe0, 0x08, 0x24, - 0x01, 0x21, 0x01, 0x70, 0x44, 0x70, 0x39, 0x1c, - 0x22, 0x1c, 0x02, 0x30, 0xfa, 0xf7, 0xcb, 0xfe, - 0x32, 0x1b, 0x00, 0x2a, 0x07, 0xdd, 0x32, 0x20, - 0x28, 0x70, 0x3c, 0x00, 0x6c, 0x57, 0x00, 0x00, - 0x39, 0x19, 0xa8, 0x1c, 0x6a, 0x70, 0xfa, 0xf7, - 0xc1, 0xfe, 0xf8, 0xbd, 0xff, 0x20, 0x28, 0x70, - 0x00, 0x20, 0x68, 0x70, 0xf9, 0xe7, 0x00, 0x00, - 0xa4, 0x69, 0x01, 0x00, 0xb0, 0x69, 0x01, 0x00, - 0x90, 0x57, 0x01, 0x00, 0x01, 0x49, 0x48, 0x62, - 0x70, 0x47, 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, - 0x03, 0x49, 0x80, 0xb5, 0x08, 0x60, 0x01, 0x21, - 0x01, 0x20, 0x03, 0xf0, 0x3c, 0x00, 0xa8, 0x57, - 0x00, 0x00, 0xc5, 0xfb, 0x80, 0xbd, 0x1c, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x01, 0x20, - 0x03, 0xf0, 0xbd, 0xfb, 0x06, 0xf0, 0xb9, 0xf8, - 0x02, 0x49, 0x00, 0x20, 0x08, 0x60, 0x80, 0xbd, - 0x00, 0x00, 0x1c, 0x67, 0x01, 0x00, 0x03, 0x49, - 0x01, 0x20, 0xc9, 0x68, 0x00, 0x29, 0x00, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x10, 0x67, - 0x01, 0x00, 0x03, 0x48, 0xc0, 0x68, 0x3c, 0x00, - 0xe4, 0x57, 0x00, 0x00, 0x00, 0x28, 0x01, 0xd0, - 0x40, 0x69, 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, - 0x10, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x01, 0x20, 0x03, 0xf0, 0x9b, 0xfb, 0x80, 0xbd, - 0x05, 0x4a, 0x80, 0xb5, 0x12, 0x69, 0x00, 0x21, - 0x00, 0x2a, 0x03, 0xd0, 0x11, 0x1d, 0x05, 0xf0, - 0x91, 0xfa, 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, - 0x10, 0x67, 0x01, 0x00, 0x06, 0x4a, 0x80, 0xb5, - 0x3c, 0x00, 0x20, 0x58, 0x00, 0x00, 0x12, 0x69, - 0x00, 0x21, 0x00, 0x2a, 0x05, 0xd0, 0x11, 0x1c, - 0xff, 0x31, 0x21, 0x31, 0x05, 0xf0, 0x8b, 0xfa, - 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, 0x10, 0x67, - 0x01, 0x00, 0x05, 0x4a, 0x80, 0xb5, 0xd2, 0x68, - 0x00, 0x21, 0x00, 0x2a, 0x03, 0xd0, 0x11, 0x1d, - 0x05, 0xf0, 0x73, 0xfa, 0x01, 0x1c, 0x08, 0x1c, - 0x80, 0xbd, 0x10, 0x67, 0x01, 0x00, 0x06, 0x4a, - 0x80, 0xb5, 0x3c, 0x00, 0x5c, 0x58, 0x00, 0x00, - 0xd2, 0x68, 0x00, 0x21, 0x00, 0x2a, 0x05, 0xd0, - 0x11, 0x1c, 0xff, 0x31, 0x21, 0x31, 0x05, 0xf0, - 0x6d, 0xfa, 0x01, 0x1c, 0x08, 0x1c, 0x80, 0xbd, - 0x10, 0x67, 0x01, 0x00, 0xff, 0xb5, 0x0d, 0x1c, - 0x1f, 0x1c, 0x87, 0xb0, 0x10, 0x9e, 0x00, 0x24, - 0x02, 0xf0, 0x72, 0xfd, 0x18, 0x23, 0x13, 0x49, - 0x58, 0x43, 0x08, 0x58, 0x00, 0x28, 0x19, 0xd0, - 0x04, 0x1c, 0x33, 0x1c, 0x3c, 0x00, 0x98, 0x58, - 0x00, 0x00, 0x3a, 0x1c, 0x28, 0x1c, 0x09, 0x99, - 0xfa, 0xf7, 0x9f, 0xfd, 0x04, 0x1c, 0x14, 0xd0, - 0x18, 0x20, 0x00, 0xab, 0x18, 0x80, 0xaa, 0x68, - 0x01, 0xa8, 0x69, 0x46, 0xff, 0xf7, 0xe7, 0xfd, - 0x6a, 0x46, 0x01, 0xa9, 0x00, 0x20, 0x07, 0xf0, - 0x44, 0xfe, 0x00, 0x28, 0x05, 0xd1, 0x0a, 0x21, - 0x00, 0xe0, 0x0f, 0x21, 0x90, 0x20, 0xfb, 0xf7, - 0xea, 0xfc, 0x20, 0x1c, 0x0b, 0xb0, 0x3c, 0x00, - 0xd4, 0x58, 0x00, 0x00, 0xf0, 0xbd, 0x00, 0x00, - 0x94, 0x67, 0x01, 0x00, 0x10, 0xb5, 0x00, 0x24, - 0x02, 0xf0, 0x44, 0xfd, 0x18, 0x23, 0x05, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x80, 0x68, 0x00, 0x28, - 0x02, 0xd0, 0xfa, 0xf7, 0x71, 0xfd, 0x01, 0x24, - 0x20, 0x1c, 0x10, 0xbd, 0x94, 0x67, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x4b, 0x00, 0xf0, 0x4e, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x10, 0x67, 0x01, 0x00, - 0x3c, 0x00, 0x10, 0x59, 0x00, 0x00, 0x80, 0xb5, - 0x02, 0x4b, 0x00, 0xf0, 0x46, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x11, 0x67, 0x01, 0x00, 0xf8, 0xb5, - 0x0e, 0x1c, 0x15, 0x1c, 0x00, 0x28, 0x1c, 0x49, - 0x10, 0xd0, 0x48, 0x68, 0x1c, 0x4a, 0x28, 0x80, - 0x00, 0x20, 0x07, 0xe0, 0x0b, 0x18, 0x1c, 0x7a, - 0x14, 0x23, 0x63, 0x43, 0x9b, 0x18, 0x1b, 0x7c, - 0x33, 0x54, 0x01, 0x30, 0x2b, 0x88, 0x83, 0x42, - 0xf4, 0xdc, 0x3c, 0x00, 0x4c, 0x59, 0x00, 0x00, - 0x24, 0xe0, 0x00, 0x20, 0x0f, 0x1c, 0x00, 0x24, - 0x08, 0x60, 0x0f, 0xe0, 0x30, 0x5d, 0x05, 0xf0, - 0x07, 0xfa, 0x0e, 0x28, 0x01, 0xd1, 0x00, 0x20, - 0xf8, 0xbd, 0x39, 0x19, 0x08, 0x72, 0x01, 0x22, - 0x39, 0x68, 0x82, 0x40, 0x11, 0x43, 0x08, 0x1c, - 0x38, 0x60, 0x01, 0x34, 0x28, 0x88, 0xa0, 0x42, - 0xec, 0xdc, 0x28, 0x88, 0x78, 0x60, 0xff, 0xf7, - 0xb7, 0xfe, 0x00, 0x28, 0x3c, 0x00, 0x88, 0x59, - 0x00, 0x00, 0x06, 0xd0, 0x01, 0x69, 0x00, 0x29, - 0x03, 0xd0, 0x7f, 0x21, 0xc9, 0x43, 0x0b, 0xf0, - 0x52, 0xfb, 0x01, 0x20, 0xe3, 0xe7, 0x2c, 0x7d, - 0x01, 0x00, 0x74, 0x40, 0x01, 0x00, 0x10, 0xb5, - 0x1c, 0x1c, 0x00, 0x28, 0x0b, 0xd0, 0x20, 0x78, - 0x0e, 0x28, 0x05, 0xd2, 0x14, 0x23, 0x0c, 0x4a, - 0x58, 0x43, 0x80, 0x18, 0x00, 0x7c, 0x00, 0xe0, - 0x00, 0x20, 0x08, 0x70, 0x0e, 0xe0, 0x3c, 0x00, - 0xc4, 0x59, 0x00, 0x00, 0x08, 0x78, 0x05, 0xf0, - 0xd1, 0xf9, 0x20, 0x70, 0xff, 0xf7, 0x92, 0xfe, - 0x00, 0x28, 0x06, 0xd0, 0x01, 0x69, 0x00, 0x29, - 0x03, 0xd0, 0x7f, 0x21, 0xc9, 0x43, 0x0b, 0xf0, - 0x2d, 0xfb, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0x74, 0x40, 0x01, 0x00, 0x80, 0xb5, 0x27, 0x20, - 0xc0, 0x43, 0x09, 0xf0, 0x31, 0xfc, 0x80, 0xbd, - 0x80, 0xb5, 0x27, 0x20, 0xc0, 0x43, 0x09, 0xf0, - 0x3c, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x39, 0xfc, - 0x80, 0xbd, 0x80, 0xb5, 0x28, 0x20, 0x09, 0xf0, - 0x42, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x28, 0x20, 0x09, 0xf0, 0x4a, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x01, 0x28, 0x28, 0xd1, - 0x01, 0x29, 0x01, 0xd0, 0xfb, 0xf7, 0x6b, 0xfc, - 0xff, 0xf7, 0xe9, 0xfd, 0x02, 0x28, 0x1a, 0xd1, - 0x07, 0xf0, 0x13, 0xfc, 0x12, 0x4c, 0x21, 0x69, - 0x88, 0x42, 0x3c, 0x00, 0x3c, 0x5a, 0x00, 0x00, - 0x15, 0xd0, 0x07, 0xf0, 0x0d, 0xfc, 0x20, 0x61, - 0x20, 0x68, 0x7d, 0x24, 0xe4, 0x00, 0x44, 0x43, - 0x0d, 0xf0, 0xae, 0xf9, 0x05, 0x1c, 0x07, 0xf0, - 0x0b, 0xfc, 0x28, 0x1a, 0x84, 0x42, 0x00, 0xd9, - 0x24, 0x1a, 0x01, 0x22, 0x21, 0x1c, 0x0a, 0x20, - 0x0d, 0xf0, 0xb2, 0xfd, 0xb0, 0xbd, 0x00, 0x21, - 0x09, 0x20, 0x0c, 0xf0, 0x75, 0xfc, 0xb0, 0xbd, - 0x07, 0x21, 0x0a, 0x20, 0x3c, 0x00, 0x78, 0x5a, - 0x00, 0x00, 0xfb, 0xf7, 0x14, 0xfc, 0xb0, 0xbd, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x7d, 0x20, - 0x02, 0x49, 0x00, 0x01, 0x08, 0x60, 0x70, 0x47, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x10, 0xb5, - 0x81, 0x6d, 0x04, 0x1c, 0xff, 0x30, 0x46, 0x30, - 0x0c, 0xf0, 0xd1, 0xfc, 0x20, 0x1c, 0xff, 0x30, - 0x50, 0x30, 0xa1, 0x6d, 0x0c, 0xf0, 0xcb, 0xfc, - 0x10, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0x3c, 0x00, - 0xb4, 0x5a, 0x00, 0x00, 0x0d, 0x1c, 0x02, 0xf0, - 0x59, 0xfc, 0x20, 0x1c, 0x02, 0xf0, 0x56, 0xfc, - 0x18, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x18, 0x22, 0x29, 0x1c, 0xfa, 0xf7, 0x70, 0xfd, - 0xb0, 0xbd, 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x09, 0xf0, 0xbc, 0xfb, - 0x20, 0x1c, 0x09, 0xf0, 0xc7, 0xfb, 0x10, 0xbd, - 0x10, 0xb5, 0x04, 0x1c, 0x09, 0xf0, 0xd0, 0xfb, - 0x3c, 0x00, 0xf0, 0x5a, 0x00, 0x00, 0x20, 0x1c, - 0x09, 0xf0, 0xdb, 0xfb, 0x10, 0xbd, 0x70, 0xb5, - 0x0c, 0x78, 0x06, 0x1c, 0x48, 0x88, 0x4d, 0x78, - 0xe2, 0x00, 0x80, 0x1a, 0xe9, 0x00, 0x40, 0x1a, - 0x01, 0x1c, 0x41, 0x43, 0x12, 0x31, 0x24, 0x20, - 0xfa, 0xf7, 0x91, 0xfd, 0x21, 0x1c, 0x61, 0x43, - 0xc9, 0x00, 0x40, 0x18, 0x29, 0x1c, 0x69, 0x43, - 0xc9, 0x00, 0x42, 0x18, 0x0c, 0x49, 0x88, 0x79, - 0x0c, 0x4b, 0x3c, 0x00, 0x2c, 0x5b, 0x00, 0x00, - 0x53, 0x43, 0x0c, 0x4a, 0x13, 0x60, 0x53, 0x7b, - 0x34, 0x02, 0x14, 0x60, 0x52, 0x7b, 0x88, 0x71, - 0x01, 0x33, 0x58, 0x10, 0x08, 0x4b, 0x80, 0x1a, - 0x01, 0x21, 0x49, 0x02, 0x58, 0x43, 0x00, 0x28, - 0x00, 0xda, 0x49, 0x42, 0x08, 0x18, 0x80, 0x12, - 0x21, 0x38, 0x70, 0xbd, 0x20, 0x10, 0x07, 0x00, - 0xec, 0x04, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00, - 0x03, 0x03, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x5b, - 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x21, - 0x04, 0x30, 0xfa, 0xf7, 0x70, 0xfc, 0xff, 0x20, - 0x21, 0x30, 0xff, 0x21, 0x01, 0x55, 0x20, 0x1c, - 0xff, 0x30, 0x41, 0x30, 0x81, 0x70, 0x41, 0x71, - 0xc1, 0x73, 0xff, 0x20, 0x63, 0x30, 0x01, 0x55, - 0x00, 0x20, 0x20, 0x61, 0x60, 0x61, 0xff, 0x34, - 0x01, 0x34, 0xa0, 0x60, 0xe0, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0x3c, 0x00, - 0xa4, 0x5b, 0x00, 0x00, 0x08, 0x1c, 0x58, 0x60, - 0x9a, 0x60, 0x1c, 0x1c, 0x1e, 0x60, 0x15, 0x1c, - 0x9b, 0x8a, 0xe2, 0x8a, 0x31, 0x1c, 0x02, 0xf0, - 0xa1, 0xfc, 0x28, 0x1a, 0xe0, 0x60, 0x70, 0xbd, - 0x70, 0xb5, 0x04, 0x1c, 0x08, 0x1c, 0x11, 0x1c, - 0x1e, 0x1c, 0x00, 0x25, 0xeb, 0x43, 0x22, 0x1c, - 0x18, 0x32, 0x0b, 0xf0, 0xf7, 0xfb, 0x22, 0x1c, - 0xff, 0x32, 0x50, 0x32, 0x11, 0x1c, 0x0a, 0x39, - 0x3c, 0x00, 0xe0, 0x5b, 0x00, 0x00, 0x01, 0x23, - 0x20, 0x1c, 0x00, 0xf0, 0xc6, 0xf8, 0x0c, 0x28, - 0x10, 0xd0, 0x01, 0x25, 0x20, 0x1c, 0x0b, 0xf0, - 0xac, 0xfa, 0x20, 0x1c, 0x00, 0xf0, 0x19, 0xf8, - 0x20, 0x1c, 0x00, 0xf0, 0x0a, 0xf8, 0x20, 0x1c, - 0x00, 0xf0, 0x29, 0xf8, 0x31, 0x1c, 0x20, 0x1c, - 0x0b, 0xf0, 0x17, 0xfa, 0x28, 0x1c, 0x70, 0xbd, - 0x00, 0x00, 0xff, 0x21, 0x1d, 0x31, 0x09, 0x58, - 0x80, 0x30, 0x3c, 0x00, 0x1c, 0x5c, 0x00, 0x00, - 0x89, 0x07, 0x00, 0x29, 0x01, 0xda, 0x01, 0x21, - 0x00, 0xe0, 0x00, 0x21, 0xc1, 0x62, 0x70, 0x47, - 0x01, 0x1c, 0x80, 0x31, 0x00, 0x22, 0x0a, 0x63, - 0x07, 0x4a, 0x12, 0x68, 0x00, 0x2a, 0x09, 0xd0, - 0x42, 0x88, 0x92, 0x06, 0x06, 0xd5, 0xff, 0x30, - 0x01, 0x30, 0xc0, 0x69, 0x40, 0x07, 0x01, 0xd4, - 0x01, 0x20, 0x08, 0x63, 0x70, 0x47, 0x00, 0x00, - 0xac, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x58, 0x5c, - 0x00, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x4a, 0x88, - 0x00, 0x20, 0x52, 0x05, 0x05, 0xd5, 0xff, 0x31, - 0x01, 0x31, 0xc9, 0x69, 0x49, 0x07, 0x00, 0xd4, - 0x01, 0x20, 0x06, 0xf0, 0xec, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xf8, 0xb5, 0x05, 0x1c, 0x98, 0x68, - 0x17, 0x1c, 0x0e, 0x1c, 0x1c, 0x1c, 0x00, 0x28, - 0x02, 0xd1, 0x20, 0x1c, 0x0c, 0xf0, 0x31, 0xf8, - 0xab, 0x69, 0x39, 0x1c, 0x30, 0x1c, 0x3c, 0x00, - 0x94, 0x5c, 0x00, 0x00, 0xa2, 0x68, 0x0b, 0xf0, - 0x95, 0xfb, 0xf8, 0xbd, 0xf8, 0xb5, 0x16, 0x1c, - 0x0d, 0x1c, 0x1f, 0x1c, 0x00, 0x24, 0x02, 0xf0, - 0x61, 0xfb, 0x18, 0x23, 0x06, 0x49, 0x58, 0x43, - 0x40, 0x18, 0x43, 0x68, 0x00, 0x2b, 0x05, 0xd0, - 0x3a, 0x1c, 0x31, 0x1c, 0x28, 0x1c, 0xfa, 0xf7, - 0x8e, 0xfb, 0x01, 0x24, 0x20, 0x1c, 0xf8, 0xbd, - 0x94, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x07, 0xf0, - 0x3c, 0x00, 0xd0, 0x5c, 0x00, 0x00, 0xc5, 0xfa, - 0x09, 0x49, 0x08, 0x61, 0x08, 0x68, 0x00, 0x28, - 0x02, 0xd1, 0x7d, 0x20, 0x00, 0x01, 0x08, 0x60, - 0x08, 0x68, 0x7d, 0x21, 0xc9, 0x00, 0x41, 0x43, - 0x00, 0x23, 0x01, 0x22, 0x0a, 0x20, 0x0d, 0xf0, - 0x4e, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x67, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, 0x0a, 0x20, - 0x0d, 0xf0, 0x97, 0xfc, 0x80, 0xbd, 0xf8, 0xb5, - 0x0e, 0x1c, 0x3c, 0x00, 0x0c, 0x5d, 0x00, 0x00, - 0x51, 0x68, 0x14, 0x1c, 0x12, 0x68, 0xa5, 0x68, - 0x0b, 0x1c, 0x75, 0x1b, 0x57, 0x19, 0x97, 0x42, - 0x00, 0xd2, 0x01, 0x31, 0x42, 0x68, 0x00, 0x25, - 0x8a, 0x42, 0x02, 0xdd, 0x01, 0x25, 0x62, 0x60, - 0x05, 0xe0, 0x9a, 0x42, 0x03, 0xd1, 0x01, 0x68, - 0xb9, 0x42, 0x00, 0xd9, 0x01, 0x25, 0x00, 0x2d, - 0x09, 0xd0, 0x01, 0x68, 0x21, 0x60, 0xa6, 0x60, - 0xa3, 0x8a, 0xe2, 0x8a, 0x3c, 0x00, 0x48, 0x5d, - 0x00, 0x00, 0x60, 0x68, 0x02, 0xf0, 0xd7, 0xfb, - 0x30, 0x1a, 0xe0, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0xf0, 0x07, 0xfb, - 0x18, 0x23, 0x03, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x18, 0x21, 0xfa, 0xf7, 0x98, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x94, 0x67, 0x01, 0x00, 0xfe, 0xb5, - 0x04, 0x1c, 0x08, 0x1c, 0x11, 0x1c, 0x1e, 0x1c, - 0x0c, 0x25, 0x01, 0x22, 0x00, 0x92, 0x3c, 0x00, - 0x84, 0x5d, 0x00, 0x00, 0xa2, 0x69, 0x02, 0xab, - 0xfd, 0xf7, 0xf0, 0xf8, 0x00, 0x28, 0x45, 0xd0, - 0x02, 0x98, 0x27, 0x21, 0x02, 0x1c, 0x0a, 0x40, - 0x01, 0xd1, 0x08, 0x43, 0x02, 0x90, 0x21, 0x49, - 0xa0, 0x69, 0x08, 0x40, 0x06, 0xd0, 0x02, 0x98, - 0x01, 0x40, 0x03, 0xd1, 0x49, 0x21, 0xc9, 0x00, - 0x08, 0x43, 0x02, 0x90, 0xa0, 0x6d, 0x02, 0x99, - 0x88, 0x42, 0x30, 0xd0, 0x00, 0x2e, 0x2d, 0xd0, - 0x3c, 0x00, 0xc0, 0x5d, 0x00, 0x00, 0x40, 0x21, - 0x20, 0x1c, 0x58, 0x30, 0xfa, 0xf7, 0x69, 0xfb, - 0x02, 0x98, 0x00, 0x25, 0x00, 0x26, 0x37, 0x1c, - 0xa0, 0x65, 0x19, 0xe0, 0xc0, 0x07, 0x11, 0xd5, - 0xf0, 0x19, 0x00, 0x19, 0x70, 0x30, 0x05, 0x71, - 0x28, 0x1c, 0x04, 0xf0, 0xd4, 0xff, 0x00, 0x28, - 0x04, 0xd0, 0xa0, 0x19, 0x80, 0x30, 0x05, 0x72, - 0x01, 0x36, 0x03, 0xe0, 0xe0, 0x19, 0x60, 0x30, - 0x05, 0x70, 0x3c, 0x00, 0xfc, 0x5d, 0x00, 0x00, - 0x01, 0x37, 0x01, 0x35, 0x2d, 0x06, 0x02, 0x98, - 0x2d, 0x0e, 0x40, 0x08, 0x02, 0x90, 0x02, 0x98, - 0x00, 0x28, 0xe2, 0xd1, 0x84, 0x20, 0x06, 0x51, - 0xf0, 0x19, 0x20, 0x67, 0xe7, 0x65, 0x00, 0x25, - 0x00, 0xe0, 0x0b, 0x25, 0x28, 0x1c, 0xfe, 0xbd, - 0xd8, 0x3a, 0x00, 0x00, 0x38, 0xb5, 0x05, 0x1c, - 0x08, 0x1c, 0x11, 0x1c, 0x00, 0x24, 0xe2, 0x43, - 0x6b, 0x46, 0xff, 0xf7, 0x3c, 0x00, 0x38, 0x5e, - 0x00, 0x00, 0x4f, 0xfa, 0x00, 0x28, 0x05, 0xd0, - 0xa8, 0x69, 0x00, 0x99, 0x01, 0x40, 0x81, 0x42, - 0x00, 0xd1, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd, - 0x00, 0x00, 0x7c, 0xb5, 0x05, 0x6a, 0x86, 0x69, - 0x04, 0x1c, 0xc0, 0x68, 0xfb, 0xf7, 0xb7, 0xfb, - 0xe1, 0x69, 0xfb, 0xf7, 0xda, 0xfa, 0x20, 0x1c, - 0xe2, 0x69, 0x40, 0x30, 0xc1, 0x8b, 0x12, 0x89, - 0x89, 0x18, 0xc1, 0x83, 0x06, 0x49, 0x3c, 0x00, - 0x74, 0x5e, 0x00, 0x00, 0x01, 0x94, 0x00, 0x91, - 0x28, 0x69, 0x33, 0x1c, 0x82, 0x88, 0x01, 0x68, - 0xe0, 0x68, 0xc0, 0x68, 0x00, 0xf0, 0xf2, 0xf9, - 0x7c, 0xbd, 0x00, 0x00, 0x91, 0x5e, 0x00, 0x00, - 0xb0, 0xb5, 0xd1, 0x68, 0x55, 0x69, 0xc8, 0x68, - 0x14, 0x1c, 0x14, 0x4b, 0x0c, 0xe0, 0x02, 0x68, - 0x9a, 0x42, 0x07, 0xd1, 0xc2, 0x68, 0xca, 0x60, - 0x00, 0x21, 0xc1, 0x60, 0x01, 0x60, 0xfb, 0xf7, - 0x3c, 0x00, 0xb0, 0x5e, 0x00, 0x00, 0x73, 0xfb, - 0x03, 0xe0, 0x01, 0x1c, 0xc0, 0x68, 0x00, 0x28, - 0xf0, 0xd1, 0xe0, 0x68, 0xc0, 0x68, 0xe8, 0x60, - 0xe0, 0x68, 0xc5, 0x60, 0x20, 0x1c, 0x40, 0x30, - 0xc1, 0x8b, 0x2a, 0x89, 0x89, 0x18, 0xc1, 0x83, - 0x20, 0x68, 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, - 0xba, 0xff, 0xb0, 0xbd, 0x04, 0x48, 0x04, 0xf0, - 0x4e, 0xf9, 0x00, 0x6a, 0x07, 0xf0, 0x77, 0xfa, - 0xb0, 0xbd, 0x3c, 0x00, 0xec, 0x5e, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0xa0, 0x6a, 0x01, 0x00, - 0xf1, 0xb5, 0x82, 0xb0, 0x02, 0x98, 0x06, 0x69, - 0x01, 0x1c, 0x08, 0x36, 0x60, 0x31, 0x45, 0x68, - 0x01, 0x91, 0x82, 0xe0, 0x10, 0x21, 0x00, 0x20, - 0x2f, 0x69, 0xfb, 0xf7, 0x63, 0xfb, 0x68, 0x61, - 0x01, 0x89, 0x08, 0x39, 0x09, 0x04, 0x09, 0x0c, - 0x01, 0x81, 0x68, 0x69, 0x00, 0x68, 0x40, 0x18, - 0x08, 0x21, 0xfb, 0xf7, 0x3c, 0x00, 0x28, 0x5f, - 0x00, 0x00, 0x57, 0xfb, 0xe8, 0x61, 0x68, 0x69, - 0x71, 0x88, 0x00, 0x68, 0x20, 0x22, 0x01, 0x80, - 0x71, 0x68, 0x41, 0x60, 0x01, 0x99, 0x49, 0x7b, - 0x89, 0x01, 0x11, 0x43, 0xc1, 0x70, 0x00, 0x21, - 0x81, 0x70, 0x28, 0x20, 0xfb, 0xf7, 0x75, 0xfc, - 0x39, 0x88, 0x04, 0x1c, 0xc1, 0x81, 0xa8, 0x6b, - 0x00, 0x28, 0x03, 0xd1, 0x01, 0x20, 0x80, 0x02, - 0x08, 0x43, 0xe0, 0x81, 0x06, 0x22, 0x3c, 0x00, - 0x64, 0x5f, 0x00, 0x00, 0x39, 0x1d, 0x20, 0x1c, - 0x10, 0x30, 0xfa, 0xf7, 0xc5, 0xfa, 0x39, 0x1c, - 0x0a, 0x31, 0x06, 0x22, 0x20, 0x1c, 0x16, 0x30, - 0x00, 0x90, 0xfa, 0xf7, 0xbd, 0xfa, 0x39, 0x1c, - 0x10, 0x31, 0x06, 0x22, 0x20, 0x1c, 0x1c, 0x30, - 0xfa, 0xf7, 0xb6, 0xfa, 0xe1, 0x89, 0x25, 0x4a, - 0x5c, 0x20, 0x11, 0x40, 0x01, 0x22, 0x92, 0x03, - 0x11, 0x43, 0x40, 0x5b, 0xe1, 0x81, 0x0f, 0x21, - 0x3c, 0x00, 0xa0, 0x5f, 0x00, 0x00, 0x08, 0x40, - 0x60, 0x84, 0x20, 0x1c, 0x20, 0x30, 0x16, 0x21, - 0x81, 0x71, 0x00, 0x21, 0x21, 0x70, 0xe9, 0x6b, - 0x00, 0x29, 0x07, 0xd0, 0x29, 0x69, 0x09, 0x8b, - 0x09, 0x07, 0x09, 0x0f, 0x21, 0x70, 0xa1, 0x84, - 0x18, 0x21, 0x81, 0x71, 0x06, 0x22, 0x60, 0x1c, - 0x00, 0x99, 0xfa, 0xf7, 0x94, 0xfa, 0x70, 0x68, - 0x00, 0x0e, 0xe0, 0x71, 0x70, 0x68, 0x00, 0x02, - 0x00, 0x0e, 0x3c, 0x00, 0xdc, 0x5f, 0x00, 0x00, - 0x20, 0x72, 0x70, 0x68, 0x00, 0x04, 0x00, 0x0e, - 0x60, 0x72, 0x70, 0x68, 0xa0, 0x72, 0x70, 0x88, - 0x00, 0x0a, 0xe0, 0x72, 0x70, 0x88, 0x20, 0x73, - 0x70, 0x88, 0x01, 0x30, 0x00, 0x04, 0x00, 0x0c, - 0x70, 0x80, 0x02, 0xd1, 0x70, 0x68, 0x01, 0x30, - 0x70, 0x60, 0xac, 0x61, 0x02, 0x98, 0x28, 0x62, - 0x2d, 0x68, 0x00, 0x2d, 0x00, 0xd0, 0x79, 0xe7, - 0x02, 0x98, 0x04, 0x49, 0x3c, 0x00, 0x18, 0x60, - 0x00, 0x00, 0x42, 0x68, 0x04, 0x48, 0x04, 0xf0, - 0x74, 0xf8, 0xfe, 0xbd, 0x00, 0x00, 0x8f, 0xc7, - 0xff, 0xff, 0x3d, 0xda, 0x00, 0x00, 0xa0, 0x6a, - 0x01, 0x00, 0xb0, 0xb5, 0x07, 0x4d, 0x28, 0x78, - 0x03, 0x28, 0x08, 0xd0, 0x00, 0x24, 0x2c, 0x70, - 0x69, 0x68, 0x00, 0x29, 0x03, 0xd0, 0x01, 0x20, - 0xfa, 0xf7, 0xc8, 0xf9, 0x6c, 0x60, 0xb0, 0xbd, - 0x00, 0x00, 0x9c, 0x73, 0x01, 0x00, 0x3c, 0x00, - 0x54, 0x60, 0x00, 0x00, 0xf8, 0xb5, 0x2b, 0x4b, - 0xd8, 0x6a, 0x00, 0x28, 0x50, 0xd0, 0x2a, 0x48, - 0x01, 0x1c, 0xff, 0x31, 0x01, 0x31, 0xca, 0x68, - 0x01, 0x32, 0xca, 0x60, 0x1a, 0x6c, 0x00, 0x2a, - 0x02, 0xd1, 0x4a, 0x69, 0x01, 0x32, 0x4a, 0x61, - 0x0a, 0x69, 0x01, 0x32, 0x0a, 0x61, 0xda, 0x68, - 0x00, 0x2a, 0x04, 0xd0, 0x1f, 0x4a, 0x01, 0x32, - 0x12, 0x78, 0x00, 0x2a, 0x02, 0xd1, 0x8a, 0x69, - 0x3c, 0x00, 0x90, 0x60, 0x00, 0x00, 0x01, 0x32, - 0x8a, 0x61, 0x00, 0x25, 0x07, 0x1d, 0x18, 0x26, - 0x1a, 0x4a, 0x6e, 0x43, 0x74, 0x32, 0x90, 0x59, - 0x00, 0x28, 0x29, 0xd0, 0xb4, 0x18, 0x60, 0x69, - 0x00, 0x28, 0x25, 0xd1, 0x60, 0x68, 0x00, 0x28, - 0x02, 0xd0, 0x01, 0x68, 0x00, 0x29, 0x05, 0xd1, - 0xa1, 0x68, 0x00, 0x29, 0x1c, 0xd0, 0x09, 0x68, - 0x00, 0x29, 0x19, 0xd0, 0x00, 0x28, 0x05, 0xd0, - 0xe1, 0x68, 0x3c, 0x00, 0xcc, 0x60, 0x00, 0x00, - 0x01, 0x31, 0xe1, 0x60, 0x00, 0x68, 0x81, 0x42, - 0x11, 0xd3, 0xa0, 0x68, 0x00, 0x28, 0x06, 0xd0, - 0x21, 0x69, 0x00, 0x68, 0x08, 0x18, 0x0c, 0xf0, - 0xa3, 0xfd, 0x00, 0x28, 0x07, 0xd0, 0x06, 0x4a, - 0x01, 0x20, 0x60, 0x61, 0x74, 0x32, 0x91, 0x59, - 0x38, 0x1c, 0xfa, 0xf7, 0x70, 0xf9, 0x01, 0x35, - 0x02, 0x2d, 0xcb, 0xdb, 0xf8, 0xbd, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x3c, 0x00, 0x08, 0x61, - 0x00, 0x00, 0xf4, 0x67, 0x01, 0x00, 0xf8, 0xb5, - 0x0f, 0x1c, 0x00, 0x25, 0x04, 0x1c, 0x00, 0x28, - 0x25, 0xd0, 0x20, 0x1c, 0x04, 0xf0, 0x03, 0xfe, - 0x00, 0x28, 0x06, 0xd0, 0xff, 0xf7, 0xff, 0xf8, - 0x04, 0x1c, 0xff, 0xf7, 0x50, 0xfb, 0x06, 0x1c, - 0x07, 0xe0, 0x20, 0x1c, 0xff, 0xf7, 0x91, 0xfb, - 0x06, 0x1c, 0x20, 0x1c, 0xff, 0xf7, 0x6f, 0xfb, - 0x04, 0x1c, 0x00, 0x2e, 0x06, 0xd0, 0x3c, 0x00, - 0x44, 0x61, 0x00, 0x00, 0xff, 0xf7, 0x4c, 0xfb, - 0x00, 0x28, 0x02, 0xd0, 0x01, 0x25, 0x01, 0x20, - 0x07, 0xe0, 0x00, 0x2c, 0x06, 0xd0, 0xff, 0xf7, - 0xef, 0xf8, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x25, - 0x00, 0x20, 0x38, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0xb0, 0xb5, 0xc5, 0x68, 0x04, 0x1c, 0x0d, 0xf0, - 0x8f, 0xfc, 0x20, 0x7e, 0xc1, 0x07, 0x08, 0xd5, - 0xe1, 0x68, 0xa9, 0x42, 0x05, 0xd9, 0x22, 0x69, - 0x3c, 0x00, 0x80, 0x61, 0x00, 0x00, 0x91, 0x42, - 0x02, 0xd3, 0xe1, 0x8a, 0x01, 0x31, 0xe1, 0x82, - 0x81, 0x07, 0x08, 0xd5, 0xe1, 0x68, 0xa9, 0x42, - 0x05, 0xd2, 0x22, 0x69, 0x91, 0x42, 0x02, 0xd8, - 0xe1, 0x8a, 0x01, 0x31, 0xe1, 0x82, 0x40, 0x07, - 0x06, 0xd5, 0xe0, 0x68, 0x21, 0x69, 0x88, 0x42, - 0x02, 0xd1, 0xe0, 0x8a, 0x01, 0x30, 0xe0, 0x82, - 0xe0, 0x8a, 0xa1, 0x8a, 0x88, 0x42, 0x0d, 0xd3, - 0x60, 0x7e, 0x3c, 0x00, 0xbc, 0x61, 0x00, 0x00, - 0x02, 0x28, 0x0b, 0xd0, 0x20, 0x68, 0xe1, 0x68, - 0x04, 0x22, 0x07, 0xf0, 0x65, 0xfb, 0x60, 0x7e, - 0x00, 0x28, 0x03, 0xd1, 0x20, 0x68, 0x08, 0xf0, - 0xab, 0xff, 0xb0, 0xbd, 0x00, 0x20, 0xe0, 0x82, - 0xb0, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, - 0x0c, 0x23, 0x20, 0x49, 0x58, 0x43, 0x45, 0x18, - 0x00, 0x20, 0xa8, 0x60, 0x30, 0x1c, 0x06, 0xf0, - 0x91, 0xfe, 0x04, 0x1c, 0x3c, 0x00, 0xf8, 0x61, - 0x00, 0x00, 0x68, 0x60, 0x33, 0xd0, 0x01, 0x20, - 0xa8, 0x70, 0x2c, 0x20, 0x00, 0x5d, 0x02, 0x28, - 0x03, 0xd1, 0x20, 0x1c, 0x03, 0xf0, 0x45, 0xfe, - 0x10, 0xe0, 0x61, 0x6b, 0x00, 0x29, 0x0a, 0xd0, - 0x01, 0x28, 0x04, 0xd1, 0x21, 0x1c, 0x28, 0x1c, - 0x03, 0xf0, 0x55, 0xfe, 0x06, 0xe0, 0x20, 0x1c, - 0x0a, 0xf0, 0x0d, 0xfc, 0x02, 0xe0, 0x20, 0x1c, - 0x0a, 0xf0, 0x3d, 0xfb, 0x0d, 0x48, 0x3c, 0x00, - 0x34, 0x62, 0x00, 0x00, 0x14, 0x38, 0x41, 0x68, - 0x00, 0x29, 0x10, 0xd0, 0x20, 0x1c, 0x40, 0x30, - 0x02, 0x8b, 0x12, 0x07, 0x92, 0x0f, 0x01, 0x2a, - 0x09, 0xd0, 0x80, 0x8b, 0x32, 0x02, 0x00, 0x09, - 0x00, 0x04, 0x10, 0x43, 0x81, 0x22, 0x02, 0x43, - 0x0c, 0x20, 0x0d, 0xf0, 0xb7, 0xf9, 0x0c, 0xf0, - 0xa5, 0xfd, 0x60, 0x64, 0x70, 0xbd, 0x00, 0x00, - 0x60, 0x7b, 0x01, 0x00, 0xff, 0xb5, 0x08, 0x1c, - 0x3c, 0x00, 0x70, 0x62, 0x00, 0x00, 0x11, 0x1c, - 0x0c, 0x32, 0x20, 0x24, 0x14, 0x43, 0x0c, 0x4a, - 0x83, 0xb0, 0x0c, 0xae, 0x52, 0x68, 0x60, 0xce, - 0x94, 0x70, 0x00, 0x24, 0xd4, 0x70, 0x93, 0x63, - 0x0d, 0x23, 0x40, 0x27, 0xbb, 0x52, 0x94, 0x61, - 0x14, 0x84, 0x01, 0x22, 0x02, 0x92, 0x32, 0x1c, - 0x00, 0x90, 0x01, 0x91, 0x23, 0x1c, 0x29, 0x1c, - 0x03, 0x98, 0x00, 0xf0, 0x66, 0xf9, 0x07, 0xb0, - 0xf0, 0xbd, 0x3c, 0x00, 0xac, 0x62, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x00, 0x27, 0x11, 0x4e, 0x1d, 0xe0, 0xe0, 0x68, - 0x00, 0x28, 0x70, 0x68, 0x0c, 0xd1, 0x80, 0x88, - 0x00, 0x07, 0x0d, 0xd1, 0x01, 0x21, 0x0c, 0x48, - 0xfb, 0xf7, 0x84, 0xf9, 0xc4, 0x60, 0xe8, 0x60, - 0x70, 0x68, 0x81, 0x88, 0x01, 0x31, 0x02, 0xe0, - 0x81, 0x88, 0x22, 0x89, 0x89, 0x18, 0x81, 0x80, - 0xe0, 0x68, 0x39, 0x1c, 0x3c, 0x00, 0xe8, 0x62, - 0x00, 0x00, 0x00, 0x28, 0x01, 0xd1, 0x71, 0x68, - 0xc9, 0x6d, 0x25, 0x1c, 0x61, 0x60, 0x04, 0x1c, - 0x00, 0x2c, 0xdf, 0xd1, 0xf8, 0xbd, 0xa0, 0x7e, - 0x01, 0x00, 0x06, 0x49, 0x10, 0xb5, 0x49, 0x68, - 0x00, 0x23, 0x05, 0xe0, 0x8a, 0x88, 0x04, 0x89, - 0x12, 0x19, 0x8a, 0x80, 0x43, 0x60, 0xc0, 0x68, - 0x00, 0x28, 0xf7, 0xd1, 0x10, 0xbd, 0xa0, 0x7e, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x49, 0x3c, 0x00, - 0x24, 0x63, 0x00, 0x00, 0x00, 0x24, 0x49, 0x68, - 0x0a, 0xe0, 0x8a, 0x88, 0x03, 0x89, 0xd2, 0x18, - 0x8a, 0x80, 0xc3, 0x68, 0x22, 0x1c, 0x00, 0x2b, - 0x00, 0xd1, 0xca, 0x6d, 0x42, 0x60, 0x18, 0x1c, - 0x00, 0x28, 0xf2, 0xd1, 0x10, 0xbd, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x01, 0x1c, 0x13, 0x48, - 0x10, 0xb5, 0x40, 0x68, 0x00, 0x23, 0x09, 0xe0, - 0x82, 0x88, 0x0c, 0x89, 0x12, 0x19, 0x82, 0x80, - 0x3c, 0x00, 0x60, 0x63, 0x00, 0x00, 0x4b, 0x60, - 0xca, 0x68, 0x00, 0x2a, 0x00, 0xd1, 0x41, 0x66, - 0xc9, 0x68, 0x00, 0x29, 0xf3, 0xd1, 0x01, 0x1c, - 0x68, 0x31, 0x81, 0x64, 0xc3, 0x64, 0x43, 0x65, - 0x82, 0x88, 0x08, 0x23, 0x11, 0x1c, 0x08, 0x31, - 0x89, 0x07, 0x89, 0x0f, 0x59, 0x1a, 0x50, 0x23, - 0x19, 0x52, 0x51, 0x18, 0x81, 0x80, 0x01, 0x1c, - 0x40, 0x6e, 0x48, 0x31, 0xc1, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x63, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x49, - 0x00, 0x24, 0x4b, 0x68, 0x06, 0xe0, 0xc2, 0x68, - 0x21, 0x1c, 0x00, 0x2a, 0x00, 0xd1, 0xd9, 0x6d, - 0x41, 0x60, 0x10, 0x1c, 0x00, 0x28, 0xf6, 0xd1, - 0x10, 0xbd, 0x00, 0x00, 0xa0, 0x7e, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xfe, 0xb5, 0x06, 0x1c, - 0x0c, 0x48, 0x0c, 0x1c, 0x40, 0x68, 0x80, 0x21, - 0x81, 0x70, 0x00, 0x21, 0x3c, 0x00, 0xd8, 0x63, - 0x00, 0x00, 0xc1, 0x70, 0x15, 0x1c, 0x40, 0x22, - 0x81, 0x63, 0x11, 0x52, 0x81, 0x61, 0x01, 0x84, - 0x00, 0x20, 0x04, 0x22, 0x02, 0x92, 0x00, 0x90, - 0x01, 0x91, 0x29, 0x1c, 0x20, 0x1c, 0x1a, 0x1c, - 0x33, 0x1c, 0x00, 0xf0, 0xbc, 0xf8, 0xfe, 0xbd, - 0x00, 0x00, 0xa0, 0x7e, 0x01, 0x00, 0x70, 0xb5, - 0x06, 0x1c, 0x17, 0x48, 0x80, 0x78, 0x02, 0x21, - 0x16, 0x4a, 0x88, 0x43, 0x90, 0x70, 0x3c, 0x00, - 0x14, 0x64, 0x00, 0x00, 0x10, 0x1c, 0x80, 0x78, - 0x08, 0x43, 0x11, 0x1c, 0x88, 0x70, 0x13, 0x48, - 0x00, 0x24, 0xc4, 0x70, 0x70, 0x20, 0xfb, 0xf7, - 0xd9, 0xf9, 0x11, 0x4d, 0x70, 0x21, 0x68, 0x60, - 0xfa, 0xf7, 0x34, 0xf8, 0x30, 0x07, 0x00, 0x0f, - 0x69, 0x68, 0x90, 0x30, 0xc8, 0x65, 0x0d, 0x48, - 0x68, 0x22, 0x08, 0x80, 0x08, 0x1c, 0x28, 0x30, - 0x89, 0x60, 0x48, 0x61, 0x08, 0x20, 0x08, 0x82, - 0x3c, 0x00, 0x50, 0x64, 0x00, 0x00, 0x08, 0x1c, - 0x38, 0x30, 0x48, 0x63, 0x20, 0x38, 0x48, 0x64, - 0x5a, 0x20, 0x50, 0x54, 0x06, 0x48, 0x08, 0x31, - 0x41, 0x64, 0x44, 0x65, 0x70, 0xbd, 0x00, 0x00, - 0x07, 0x00, 0x58, 0x00, 0x07, 0x00, 0xa0, 0x7e, - 0x01, 0x00, 0xde, 0xc0, 0x00, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x0a, 0x4b, 0x10, 0xb5, 0x58, 0x6d, - 0x0a, 0x49, 0x00, 0x22, 0x49, 0x68, 0x00, 0x24, - 0x4a, 0x62, 0x3c, 0x00, 0x8c, 0x64, 0x00, 0x00, - 0x5c, 0x65, 0x4b, 0x6e, 0x00, 0x2b, 0x01, 0xd0, - 0xda, 0x60, 0x4a, 0x66, 0x8b, 0x6d, 0x00, 0x2b, - 0x03, 0xd0, 0x0a, 0x6e, 0x00, 0x21, 0xf9, 0xf7, - 0x9c, 0xff, 0x10, 0xbd, 0x00, 0x30, 0x07, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x09, 0x49, 0x10, 0xb5, - 0x08, 0x88, 0x01, 0x30, 0x08, 0x80, 0x01, 0x20, - 0x07, 0x49, 0x80, 0x02, 0x08, 0x60, 0x07, 0x4c, - 0xa2, 0x6d, 0x00, 0x2a, 0x3c, 0x00, 0xc8, 0x64, - 0x00, 0x00, 0x05, 0xd0, 0x05, 0x21, 0xd1, 0x20, - 0x0d, 0xf0, 0x6f, 0xf9, 0x01, 0x20, 0xa0, 0x65, - 0x10, 0xbd, 0xb0, 0x74, 0x01, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, 0xff, 0xb5, - 0x83, 0xb0, 0x0c, 0xae, 0x86, 0x46, 0x8c, 0x46, - 0x0e, 0x4a, 0x43, 0xce, 0x0f, 0xad, 0x0f, 0x1c, - 0x52, 0x68, 0x0c, 0x37, 0x30, 0xcd, 0x97, 0x70, - 0xd3, 0x70, 0x96, 0x63, 0x0d, 0x26, 0x3c, 0x00, - 0x04, 0x65, 0x00, 0x00, 0x40, 0x27, 0xbe, 0x52, - 0x05, 0x9e, 0x96, 0x61, 0x13, 0x84, 0x00, 0x22, - 0x02, 0x92, 0x2a, 0x1c, 0x00, 0x90, 0x01, 0x91, - 0x21, 0x1c, 0x60, 0x46, 0x73, 0x46, 0x00, 0xf0, - 0x29, 0xf8, 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0xff, 0xb5, 0x10, 0x1c, - 0x1a, 0x1c, 0x0c, 0x1c, 0x19, 0x1c, 0x60, 0x23, - 0xff, 0x32, 0x13, 0x43, 0x0c, 0x4a, 0x83, 0xb0, - 0x3c, 0x00, 0x40, 0x65, 0x00, 0x00, 0x0c, 0xae, - 0x52, 0x68, 0x60, 0xce, 0x93, 0x70, 0x00, 0x23, - 0xd3, 0x70, 0x93, 0x63, 0x40, 0x27, 0xbb, 0x52, - 0x93, 0x61, 0x13, 0x84, 0x03, 0x22, 0x02, 0x92, - 0x01, 0x91, 0x29, 0x1c, 0x32, 0x1c, 0x00, 0x90, - 0x20, 0x1c, 0x03, 0x9b, 0x00, 0xf0, 0x05, 0xf8, - 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xa0, 0x7e, - 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, 0x11, 0x48, - 0x1c, 0x1c, 0x3c, 0x00, 0x7c, 0x65, 0x00, 0x00, - 0x08, 0x9b, 0x07, 0x9f, 0x40, 0x68, 0xde, 0x00, - 0x81, 0x65, 0x02, 0x66, 0x00, 0x21, 0x81, 0x80, - 0x0d, 0x48, 0x81, 0x59, 0x20, 0x1c, 0xf9, 0xf7, - 0x22, 0xff, 0x0b, 0x48, 0x30, 0x18, 0x41, 0x68, - 0x28, 0x1c, 0xf9, 0xf7, 0x1c, 0xff, 0x07, 0x49, - 0x06, 0x98, 0x49, 0x68, 0x00, 0x2c, 0x88, 0x62, - 0x0f, 0x86, 0x00, 0xd1, 0x2c, 0x1c, 0x05, 0x48, - 0x4c, 0x62, 0x45, 0x65, 0x3c, 0x00, 0xb8, 0x65, - 0x00, 0x00, 0x01, 0x21, 0x01, 0x65, 0x01, 0x64, - 0xf8, 0xbd, 0xa0, 0x7e, 0x01, 0x00, 0x90, 0x52, - 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, 0xff, 0xb5, - 0x83, 0xb0, 0x0d, 0xae, 0x60, 0xce, 0x0c, 0x9f, - 0x08, 0x1c, 0x11, 0x1c, 0xd2, 0x19, 0xff, 0x32, - 0x40, 0x24, 0x14, 0x43, 0x0b, 0x4a, 0x52, 0x68, - 0x94, 0x70, 0x00, 0x24, 0xd4, 0x70, 0x93, 0x63, - 0x40, 0x23, 0x9f, 0x52, 0x94, 0x61, 0x3c, 0x00, - 0xf4, 0x65, 0x00, 0x00, 0x14, 0x84, 0x02, 0x22, - 0x02, 0x92, 0x32, 0x1c, 0x00, 0x90, 0x01, 0x91, - 0x23, 0x1c, 0x29, 0x1c, 0x03, 0x98, 0xff, 0xf7, - 0xb5, 0xff, 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xa0, 0x7e, 0x01, 0x00, 0x4c, 0x21, 0x0d, 0x4a, - 0x41, 0x43, 0x10, 0xb5, 0x8c, 0x18, 0x0c, 0x49, - 0x09, 0x78, 0x88, 0x42, 0x07, 0xd1, 0x05, 0xf0, - 0xc7, 0xfd, 0x0a, 0x48, 0x01, 0x88, 0x01, 0x22, - 0x3c, 0x00, 0x30, 0x66, 0x00, 0x00, 0x12, 0x03, - 0x91, 0x43, 0x01, 0x80, 0x20, 0x1c, 0x30, 0x30, - 0x0c, 0x23, 0xc1, 0x56, 0x40, 0x7b, 0x81, 0x42, - 0x02, 0xdd, 0x20, 0x8d, 0x0c, 0xf0, 0xe5, 0xfb, - 0x10, 0xbd, 0x58, 0xe3, 0x01, 0x00, 0x3c, 0x7c, - 0x01, 0x00, 0x32, 0x80, 0x07, 0x00, 0x01, 0x1c, - 0x60, 0x31, 0x80, 0xb5, 0xca, 0x79, 0x8b, 0x79, - 0x9a, 0x42, 0x07, 0xd9, 0x48, 0x7a, 0x0c, 0x23, - 0x07, 0x49, 0x3c, 0x00, 0x6c, 0x66, 0x00, 0x00, - 0x58, 0x43, 0x08, 0x5a, 0x0c, 0xf0, 0xd0, 0xfb, - 0x80, 0xbd, 0x20, 0x30, 0x00, 0x7b, 0x01, 0x28, - 0xfa, 0xd1, 0x48, 0x7a, 0x05, 0xf0, 0x40, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x1c, 0x21, 0xf9, 0xf7, - 0x03, 0xff, 0x03, 0x48, 0xa0, 0x80, 0xe0, 0x80, - 0x20, 0x81, 0x60, 0x81, 0xa0, 0x81, 0x10, 0xbd, - 0xff, 0xff, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x66, - 0x00, 0x00, 0xff, 0xb5, 0x04, 0x1c, 0x00, 0x20, - 0x83, 0xb0, 0x0d, 0x1c, 0x06, 0x2c, 0x02, 0x90, - 0x38, 0xd2, 0x1f, 0x4a, 0xff, 0x26, 0xc1, 0x00, - 0x89, 0x18, 0x89, 0x78, 0xa1, 0x42, 0x03, 0xd1, - 0xc0, 0x00, 0x80, 0x18, 0x46, 0x78, 0x04, 0xe0, - 0x01, 0x30, 0x00, 0x06, 0x00, 0x16, 0x06, 0x28, - 0xf1, 0xdb, 0xff, 0x2e, 0x24, 0xd0, 0x01, 0x93, - 0x20, 0x1c, 0x0d, 0xf0, 0xe8, 0xf9, 0x3c, 0x00, - 0xe4, 0x66, 0x00, 0x00, 0x00, 0x28, 0x05, 0xd0, - 0x24, 0x21, 0x28, 0x1c, 0x01, 0xab, 0x02, 0xaa, - 0xfa, 0xf7, 0x30, 0xfe, 0x10, 0x49, 0xf0, 0x00, - 0x30, 0x39, 0x0f, 0x58, 0x31, 0x06, 0x09, 0x16, - 0x28, 0x1c, 0x05, 0x9a, 0x01, 0x9b, 0xf9, 0xf7, - 0x6e, 0xfe, 0x06, 0x1c, 0x10, 0xd1, 0x20, 0x1c, - 0x0d, 0xf0, 0xd0, 0xf9, 0x00, 0x28, 0x0b, 0xd0, - 0x28, 0x1c, 0x69, 0x69, 0xfa, 0xf7, 0x12, 0xfe, - 0x3c, 0x00, 0x20, 0x67, 0x00, 0x00, 0x02, 0x98, - 0x68, 0x61, 0x04, 0xe0, 0x06, 0x2c, 0x01, 0xd3, - 0x07, 0x26, 0x00, 0xe0, 0x08, 0x26, 0x30, 0x1c, - 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xcc, 0x5a, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x09, 0xf0, - 0x86, 0xf8, 0x00, 0x28, 0x02, 0xd0, 0x20, 0x1c, - 0x09, 0xf0, 0xb5, 0xf8, 0x10, 0xbd, 0xfe, 0xb5, - 0x13, 0x4d, 0x04, 0x1c, 0xae, 0x69, 0x00, 0x2e, - 0x1c, 0xd0, 0x3c, 0x00, 0x5c, 0x67, 0x00, 0x00, - 0x10, 0x4f, 0x30, 0x37, 0x78, 0x68, 0x60, 0x43, - 0x01, 0x1c, 0x28, 0x88, 0xf9, 0xf7, 0xd2, 0xff, - 0x39, 0x68, 0x61, 0x43, 0x41, 0x18, 0x01, 0xa8, - 0x32, 0x1c, 0xf9, 0xf7, 0x37, 0xfe, 0x02, 0x98, - 0x29, 0x6a, 0x40, 0x18, 0x28, 0x62, 0x0b, 0xd4, - 0xe9, 0x69, 0x88, 0x42, 0x08, 0xd9, 0xa9, 0x69, - 0x40, 0x1a, 0x28, 0x62, 0x01, 0x98, 0x01, 0x30, - 0x01, 0xe0, 0x00, 0x20, 0x3c, 0x00, 0x98, 0x67, - 0x00, 0x00, 0x02, 0x90, 0x01, 0x90, 0x01, 0x98, - 0xfe, 0xbd, 0xc8, 0x74, 0x01, 0x00, 0xf8, 0xb5, - 0x00, 0x28, 0x28, 0xd0, 0x00, 0x24, 0x14, 0x4d, - 0x00, 0xe0, 0x01, 0x34, 0x61, 0x00, 0x09, 0x19, - 0x49, 0x19, 0x49, 0x78, 0x00, 0x29, 0xf8, 0xd1, - 0x63, 0x00, 0x1b, 0x19, 0x03, 0x33, 0x07, 0x22, - 0x69, 0x46, 0x03, 0xf0, 0xd4, 0xfb, 0x00, 0x2c, - 0x0f, 0xd0, 0x00, 0x20, 0x00, 0x99, 0x3c, 0x00, - 0xd4, 0x67, 0x00, 0x00, 0x0a, 0xe0, 0x42, 0x00, - 0x12, 0x18, 0xae, 0x5c, 0x53, 0x18, 0x52, 0x19, - 0x5e, 0x71, 0x56, 0x78, 0x01, 0x30, 0x9e, 0x71, - 0x92, 0x78, 0xda, 0x71, 0xa0, 0x42, 0xf2, 0xdb, - 0x00, 0x98, 0x03, 0x22, 0x02, 0x30, 0x03, 0x49, - 0xf9, 0xf7, 0x7e, 0xfe, 0xf8, 0xbd, 0x00, 0x00, - 0xeb, 0x62, 0x01, 0x00, 0xe8, 0x62, 0x01, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x08, 0x1c, 0xfa, 0xf7, - 0x3c, 0x00, 0x10, 0x68, 0x00, 0x00, 0x9d, 0xff, - 0x04, 0x1c, 0x28, 0x1c, 0xfa, 0xf7, 0xd9, 0xfe, - 0x21, 0x1c, 0xfa, 0xf7, 0xfc, 0xfd, 0x20, 0x1c, - 0xb0, 0xbd, 0xf3, 0xb5, 0x44, 0x48, 0x0c, 0x1c, - 0x00, 0x78, 0x81, 0xb0, 0x01, 0x28, 0x72, 0xd1, - 0xfa, 0xf7, 0x82, 0xf8, 0x41, 0x4d, 0xe8, 0x6a, - 0x41, 0x49, 0x08, 0x60, 0xe8, 0x6b, 0x48, 0x60, - 0x40, 0x48, 0xfa, 0xf7, 0xa6, 0xf9, 0xe8, 0x6a, - 0x00, 0x28, 0x3c, 0x00, 0x4c, 0x68, 0x00, 0x00, - 0xfc, 0xda, 0x22, 0x1c, 0x0f, 0x20, 0x01, 0x99, - 0x0a, 0xf0, 0xa4, 0xf8, 0x38, 0x4d, 0x02, 0x27, - 0x2f, 0x63, 0x38, 0x4a, 0x64, 0x26, 0x00, 0x20, - 0xaa, 0x21, 0x08, 0x32, 0x13, 0x18, 0x01, 0x30, - 0x00, 0x04, 0x00, 0x0c, 0x64, 0x28, 0x19, 0x74, - 0xf8, 0xd3, 0x16, 0x81, 0x00, 0x20, 0x50, 0x60, - 0x10, 0x1c, 0x10, 0x30, 0x10, 0x60, 0x00, 0x25, - 0x17, 0x1c, 0xd2, 0x60, 0x3c, 0x00, 0x88, 0x68, - 0x00, 0x00, 0x08, 0xe0, 0x28, 0x1c, 0xf9, 0xf7, - 0xa2, 0xff, 0x41, 0x31, 0x78, 0x19, 0x01, 0x35, - 0x2d, 0x04, 0x2d, 0x0c, 0x01, 0x74, 0xb5, 0x42, - 0xf4, 0xd3, 0x26, 0x4d, 0x6f, 0x63, 0x01, 0x20, - 0x28, 0x63, 0x24, 0x4d, 0xe8, 0x6a, 0x00, 0x28, - 0xfb, 0xda, 0x0b, 0x22, 0x3b, 0x1c, 0x24, 0x4e, - 0x03, 0xe0, 0x01, 0x32, 0x64, 0x2a, 0x00, 0xd1, - 0x00, 0x22, 0x10, 0x1c, 0x0c, 0x21, 0x3c, 0x00, - 0xc4, 0x68, 0x00, 0x00, 0x01, 0x39, 0x75, 0x5c, - 0x1f, 0x18, 0x3f, 0x7c, 0xbd, 0x42, 0xf3, 0xd1, - 0x01, 0x38, 0x00, 0xd5, 0x63, 0x20, 0x00, 0x29, - 0xf4, 0xd1, 0x18, 0x4e, 0x50, 0x1c, 0xf1, 0x6b, - 0x1a, 0x4a, 0x10, 0x1c, 0x01, 0x38, 0xfd, 0xd1, - 0xf0, 0x6b, 0x88, 0x42, 0x01, 0xd0, 0x01, 0x1c, - 0xf7, 0xe7, 0x02, 0x27, 0x37, 0x63, 0x16, 0x4d, - 0x90, 0x21, 0x28, 0x1c, 0xf9, 0xf7, 0xce, 0xfd, - 0x3c, 0x00, 0x00, 0x69, 0x00, 0x00, 0x28, 0x1c, - 0x28, 0x30, 0x28, 0x60, 0x28, 0x1c, 0x10, 0x30, - 0x2f, 0x81, 0xe8, 0x60, 0x28, 0x1c, 0x20, 0x30, - 0x28, 0x61, 0x04, 0x21, 0x00, 0xe0, 0x0c, 0xe0, - 0x29, 0x83, 0xe8, 0x61, 0xed, 0x62, 0x75, 0x63, - 0x01, 0x20, 0x30, 0x63, 0x22, 0x1c, 0x89, 0x20, - 0x01, 0x99, 0x0a, 0xf0, 0x38, 0xf8, 0x00, 0x20, - 0x28, 0x63, 0xfe, 0xbd, 0x00, 0x00, 0x08, 0x57, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x69, 0x00, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x10, 0x8e, 0x01, 0x00, - 0x74, 0xff, 0x01, 0x00, 0x09, 0x57, 0x01, 0x00, - 0x20, 0x4e, 0x00, 0x00, 0xe4, 0xfe, 0x01, 0x00, - 0x80, 0xb5, 0x13, 0x28, 0x1e, 0xd0, 0xf0, 0x28, - 0x16, 0xd1, 0x09, 0xf0, 0xb5, 0xf9, 0x00, 0x28, - 0x13, 0xd1, 0x0d, 0xf0, 0xbf, 0xfa, 0x11, 0xf0, - 0x0d, 0xfc, 0x00, 0x22, 0x04, 0x21, 0xc4, 0x20, - 0x0c, 0xf0, 0x1c, 0xff, 0x3c, 0x00, 0x78, 0x69, - 0x00, 0x00, 0x09, 0x48, 0x00, 0x21, 0x00, 0x78, - 0x05, 0xf0, 0x3f, 0xfd, 0x05, 0xf0, 0x93, 0xf8, - 0x07, 0x49, 0x01, 0x20, 0x08, 0x60, 0x80, 0xbd, - 0x01, 0x1c, 0x01, 0x20, 0xfa, 0xf7, 0x87, 0xfc, - 0x80, 0xbd, 0x00, 0xf0, 0x32, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x6a, 0x57, 0x01, 0x00, 0x3c, 0xd9, - 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0xf0, 0xff, 0xf9, - 0x0b, 0x49, 0x02, 0x24, 0x48, 0x60, 0x3c, 0x00, - 0xb4, 0x69, 0x00, 0x00, 0x0a, 0x48, 0x04, 0x61, - 0x01, 0x20, 0x77, 0x21, 0x09, 0x03, 0x08, 0x61, - 0x08, 0x4d, 0x68, 0x68, 0x80, 0x07, 0x02, 0xd4, - 0x68, 0x68, 0x20, 0x43, 0x68, 0x60, 0x09, 0xf0, - 0xc7, 0xf9, 0x68, 0x68, 0xa0, 0x43, 0x68, 0x60, - 0x00, 0x20, 0xb0, 0xbd, 0xe0, 0x60, 0x01, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x00, 0x01, 0x07, 0x00, - 0x80, 0xb5, 0x01, 0x23, 0x03, 0x22, 0x00, 0x21, - 0x3c, 0x00, 0xf0, 0x69, 0x00, 0x00, 0x02, 0x20, - 0x3c, 0xf0, 0xf1, 0xfa, 0x00, 0x28, 0x01, 0xd0, - 0xfa, 0xf7, 0x81, 0xfc, 0x80, 0xbd, 0x1c, 0xb5, - 0xfc, 0xf7, 0xf5, 0xfa, 0xfa, 0xf7, 0x19, 0xfe, - 0x01, 0xf0, 0x03, 0xf9, 0x00, 0x24, 0x21, 0x1c, - 0x68, 0x46, 0x01, 0xf0, 0xe2, 0xfb, 0x00, 0xab, - 0x18, 0x78, 0x01, 0x28, 0x03, 0xd0, 0x02, 0x28, - 0x01, 0xd0, 0x03, 0x28, 0x01, 0xd1, 0x0c, 0xf0, - 0xb2, 0xfc, 0x3c, 0x00, 0x2c, 0x6a, 0x00, 0x00, - 0x01, 0x34, 0x24, 0x06, 0x24, 0x16, 0x06, 0x2c, - 0xec, 0xdb, 0xfa, 0xf7, 0x09, 0xf9, 0xfa, 0xf7, - 0xe7, 0xfc, 0xfa, 0xf7, 0x33, 0xfa, 0xfa, 0xf7, - 0x6d, 0xfa, 0xfb, 0xf7, 0xdf, 0xff, 0x05, 0xf0, - 0x4d, 0xfb, 0x06, 0xf0, 0x81, 0xfc, 0x0b, 0xf0, - 0x7d, 0xf9, 0x07, 0xf0, 0x29, 0xfc, 0x11, 0x48, - 0x10, 0x21, 0x01, 0x60, 0x09, 0x01, 0x01, 0x60, - 0xc9, 0x02, 0x01, 0x60, 0x3c, 0x00, 0x68, 0x6a, - 0x00, 0x00, 0x89, 0x00, 0x01, 0x60, 0x20, 0x21, - 0x01, 0x60, 0x04, 0x21, 0x01, 0x60, 0x08, 0x21, - 0x01, 0x60, 0x40, 0x21, 0x01, 0x60, 0x80, 0x21, - 0x01, 0x60, 0x89, 0x00, 0x01, 0x60, 0x49, 0x00, - 0x01, 0x60, 0x49, 0x00, 0x01, 0x60, 0x49, 0x00, - 0x01, 0x60, 0xc9, 0x03, 0x01, 0x60, 0x89, 0x0b, - 0x01, 0x60, 0xf9, 0xf7, 0x41, 0xff, 0x1c, 0xbd, - 0x00, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00, - 0xa4, 0x6a, 0x00, 0x00, 0x80, 0xb5, 0x3b, 0xf0, - 0x4f, 0xf8, 0x3b, 0xf0, 0x7d, 0xf9, 0xfa, 0xf7, - 0x4b, 0xf9, 0x80, 0xbd, 0xf8, 0xb5, 0x00, 0x25, - 0x00, 0x24, 0x00, 0x22, 0x00, 0x28, 0x71, 0xd0, - 0x43, 0x4f, 0xb9, 0x68, 0x0b, 0x1a, 0xbb, 0x60, - 0xf8, 0x68, 0x39, 0x1c, 0x01, 0x30, 0xf8, 0x60, - 0x89, 0x6a, 0x00, 0x2b, 0x1e, 0xdc, 0x02, 0x24, - 0x00, 0x29, 0x06, 0xda, 0xfb, 0x69, 0x98, 0x42, - 0x3c, 0x00, 0xe0, 0x6a, 0x00, 0x00, 0x06, 0xdd, - 0x3b, 0x69, 0x98, 0x42, 0x09, 0xdd, 0x07, 0xe0, - 0xbb, 0x69, 0x98, 0x42, 0x01, 0xdc, 0x01, 0x24, - 0x03, 0xe0, 0x7b, 0x69, 0x98, 0x42, 0x00, 0xdd, - 0x03, 0x24, 0x78, 0x6a, 0x00, 0x28, 0x08, 0xd0, - 0x00, 0x20, 0x78, 0x62, 0x03, 0x2c, 0x01, 0xd1, - 0x02, 0x24, 0x02, 0xe0, 0x02, 0x2c, 0x00, 0xd1, - 0x01, 0x24, 0x2e, 0x48, 0x01, 0x2c, 0x00, 0x79, - 0x18, 0xd1, 0x3c, 0x00, 0x1c, 0x6b, 0x00, 0x00, - 0xbb, 0x78, 0x99, 0x42, 0x15, 0xda, 0x3b, 0x78, - 0x7b, 0x70, 0x39, 0x70, 0x01, 0x31, 0xb9, 0x62, - 0x01, 0xd5, 0x01, 0x31, 0xb9, 0x62, 0xb9, 0x6a, - 0x01, 0x25, 0x99, 0x42, 0x03, 0xd1, 0x04, 0x28, - 0x04, 0xd2, 0x01, 0x30, 0x00, 0xe0, 0x00, 0x20, - 0x38, 0x71, 0x01, 0x22, 0x00, 0x29, 0x33, 0xda, - 0x27, 0xe0, 0x03, 0x2c, 0x35, 0xd1, 0x00, 0x26, - 0x00, 0x28, 0x07, 0xd0, 0x3c, 0x00, 0x58, 0x6b, - 0x00, 0x00, 0x1e, 0x49, 0x81, 0x40, 0x38, 0x6a, - 0x08, 0x18, 0x0c, 0xf0, 0x5c, 0xf8, 0x00, 0x28, - 0x2c, 0xd0, 0x1b, 0x48, 0x00, 0x78, 0x40, 0x07, - 0x05, 0xd5, 0xf8, 0x68, 0x39, 0x69, 0x88, 0x42, - 0x01, 0xdb, 0x03, 0x23, 0xfe, 0x56, 0xb8, 0x6a, - 0xb0, 0x42, 0x12, 0xdd, 0x01, 0x21, 0x79, 0x62, - 0x39, 0x78, 0x01, 0x25, 0x79, 0x70, 0x38, 0x70, - 0x01, 0x38, 0xb8, 0x62, 0x88, 0x42, 0x3c, 0x00, - 0x94, 0x6b, 0x00, 0x00, 0x01, 0xd0, 0x00, 0x21, - 0x39, 0x71, 0x00, 0x28, 0x0c, 0xda, 0x07, 0x20, - 0x38, 0x71, 0x00, 0xe0, 0x12, 0xe0, 0x07, 0xe0, - 0x38, 0x79, 0x00, 0x28, 0x09, 0xd0, 0xff, 0x30, - 0x38, 0x71, 0x06, 0xe0, 0x00, 0x2a, 0x02, 0xd0, - 0x0c, 0xf0, 0xf8, 0xf8, 0x38, 0x62, 0x00, 0x2c, - 0x04, 0xd0, 0xfe, 0xf7, 0x97, 0xfd, 0x29, 0x1c, - 0x08, 0xf0, 0xfc, 0xfb, 0xf8, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x6b, 0x00, 0x00, 0xac, 0x7e, - 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x1d, 0x75, - 0x01, 0x00, 0x80, 0xb5, 0x10, 0x68, 0x00, 0x28, - 0x02, 0xd0, 0x00, 0xf0, 0x0a, 0xf8, 0x80, 0xbd, - 0x03, 0x48, 0xc0, 0x69, 0x80, 0x68, 0x08, 0xf0, - 0xb2, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x84, 0x6a, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x68, - 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xfa, 0xf7, - 0x7a, 0xfb, 0x3c, 0x00, 0x0c, 0x6c, 0x00, 0x00, - 0xe0, 0x68, 0xe1, 0x69, 0xc0, 0x68, 0x23, 0x1c, - 0x01, 0x4a, 0xff, 0xf7, 0xd7, 0xfb, 0x10, 0xbd, - 0xdd, 0x6b, 0x00, 0x00, 0xb0, 0xb5, 0x05, 0x1c, - 0x0c, 0x21, 0x00, 0x20, 0xfa, 0xf7, 0xd6, 0xfc, - 0x04, 0x1c, 0x00, 0x68, 0x00, 0x21, 0x41, 0x60, - 0x01, 0x60, 0x29, 0x88, 0x01, 0x81, 0x69, 0x88, - 0x41, 0x81, 0x29, 0x1c, 0xff, 0x31, 0x21, 0x31, - 0x20, 0x1c, 0x03, 0xf0, 0x3c, 0x00, 0x48, 0x6c, - 0x00, 0x00, 0x77, 0xf9, 0x29, 0x1c, 0xff, 0x31, - 0x46, 0x31, 0x20, 0x1c, 0x03, 0xf0, 0x71, 0xf9, - 0x29, 0x1c, 0xff, 0x31, 0x50, 0x31, 0x20, 0x1c, - 0x03, 0xf0, 0x6b, 0xf9, 0x29, 0x1c, 0xff, 0x31, - 0x43, 0x31, 0x20, 0x1c, 0x03, 0xf0, 0x65, 0xf9, - 0x29, 0x1c, 0xff, 0x31, 0x63, 0x31, 0x20, 0x1c, - 0x03, 0xf0, 0x5f, 0xf9, 0x04, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x20, 0x1c, 0x3c, 0x00, - 0x84, 0x6c, 0x00, 0x00, 0xff, 0xf7, 0x8e, 0xfd, - 0x20, 0x1c, 0xb0, 0xbd, 0xe4, 0x62, 0x01, 0x00, - 0xf8, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, 0x04, 0xd1, - 0x05, 0x21, 0x18, 0x20, 0xfa, 0xf7, 0x02, 0xfb, - 0x4d, 0xe0, 0x29, 0x1c, 0x12, 0x31, 0x06, 0x22, - 0x60, 0x1c, 0xf9, 0xf7, 0x25, 0xfc, 0x22, 0x1c, - 0x30, 0x32, 0x00, 0x26, 0x00, 0x21, 0x00, 0x20, - 0x16, 0x70, 0x34, 0x4b, 0x1b, 0x5c, 0x2f, 0x8a, - 0x3c, 0x00, 0xc0, 0x6c, 0x00, 0x00, 0xdf, 0x40, - 0xff, 0x07, 0x07, 0xd5, 0x17, 0x78, 0x01, 0x33, - 0x01, 0x37, 0x17, 0x70, 0x67, 0x18, 0x30, 0x37, - 0x7b, 0x70, 0x01, 0x31, 0x01, 0x30, 0x0e, 0x28, - 0xee, 0xdb, 0xa8, 0x7b, 0x60, 0x72, 0x10, 0x78, - 0x00, 0x28, 0x2b, 0xd0, 0x2a, 0x48, 0x1e, 0x21, - 0x09, 0x5c, 0x27, 0x1c, 0x10, 0x37, 0x21, 0x72, - 0x01, 0x68, 0x61, 0x81, 0xc1, 0x89, 0x21, 0x77, - 0x81, 0x89, 0x3c, 0x00, 0xfc, 0x6c, 0x00, 0x00, - 0x79, 0x73, 0xc1, 0x8a, 0xa1, 0x81, 0x01, 0x8b, - 0xe1, 0x81, 0x42, 0x8a, 0x21, 0x1c, 0x60, 0x31, - 0x4a, 0x80, 0x82, 0x8a, 0x8a, 0x80, 0x1f, 0x49, - 0x2c, 0x31, 0x09, 0x7a, 0x00, 0x29, 0x09, 0xd0, - 0x02, 0x29, 0x0a, 0xd1, 0x01, 0x22, 0x62, 0x62, - 0x62, 0x72, 0x42, 0x8b, 0xa2, 0x81, 0x80, 0x8b, - 0xe0, 0x81, 0x03, 0xe0, 0x01, 0x21, 0x66, 0x62, - 0x00, 0xe0, 0x00, 0x21, 0x3c, 0x00, 0x38, 0x6d, - 0x00, 0x00, 0xe8, 0x7b, 0x08, 0x40, 0x01, 0xd1, - 0x00, 0x20, 0xf8, 0xbd, 0xa8, 0x68, 0x43, 0x1c, - 0x09, 0xd0, 0x22, 0x1c, 0x12, 0x32, 0x00, 0x92, - 0x93, 0x1d, 0x02, 0x32, 0x21, 0x1c, 0x01, 0xf0, - 0x9c, 0xfa, 0xa0, 0x62, 0x00, 0xe0, 0xa6, 0x62, - 0x68, 0x7b, 0x29, 0x1c, 0x1d, 0x31, 0x20, 0x74, - 0x0b, 0x48, 0x20, 0x22, 0x20, 0x62, 0x20, 0x1c, - 0x42, 0x30, 0xbe, 0x73, 0xf9, 0xf7, 0x3c, 0x00, - 0x74, 0x6d, 0x00, 0x00, 0xc1, 0xfb, 0x40, 0x34, - 0x26, 0x70, 0x68, 0x7e, 0x04, 0x49, 0x60, 0x70, - 0x68, 0x68, 0x2c, 0x31, 0x48, 0x60, 0x01, 0x20, - 0xda, 0xe7, 0x00, 0x00, 0x90, 0x58, 0x01, 0x00, - 0xc8, 0x6e, 0x01, 0x00, 0x91, 0x02, 0x01, 0x00, - 0x70, 0xb5, 0x16, 0x1c, 0x0d, 0x1c, 0x04, 0x1c, - 0x00, 0x28, 0x06, 0xd0, 0x0c, 0x20, 0xfa, 0xf7, - 0x47, 0xfd, 0x30, 0xc0, 0x08, 0x38, 0x06, 0x72, - 0x3c, 0x00, 0xb0, 0x6d, 0x00, 0x00, 0x70, 0xbd, - 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x01, 0x1c, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x01, 0xd0, - 0x01, 0x21, 0x00, 0xe0, 0x00, 0x21, 0xfc, 0xf7, - 0xa0, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x0c, 0x79, - 0x01, 0x00, 0x70, 0xb5, 0x0e, 0x1c, 0x04, 0x1c, - 0x00, 0x28, 0x01, 0xd1, 0xfa, 0xf7, 0x8f, 0xfa, - 0x06, 0x4d, 0x28, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0xfa, 0xf7, 0x3c, 0x00, 0xec, 0x6d, 0x00, 0x00, - 0x89, 0xfa, 0x04, 0x48, 0x2e, 0x60, 0xc4, 0x60, - 0x01, 0x21, 0x01, 0x70, 0x70, 0xbd, 0x00, 0x00, - 0xa8, 0x7e, 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, - 0x10, 0xb5, 0x07, 0x4c, 0x20, 0x68, 0x00, 0x28, - 0x01, 0xd1, 0xfa, 0xf7, 0x77, 0xfa, 0x05, 0x48, - 0x00, 0x69, 0x21, 0x68, 0xf9, 0xf7, 0xdf, 0xfa, - 0x00, 0x20, 0x20, 0x60, 0x10, 0xbd, 0x00, 0x00, - 0xa8, 0x7e, 0x01, 0x00, 0x3c, 0x00, 0x28, 0x6e, - 0x00, 0x00, 0x30, 0x00, 0x07, 0x00, 0x01, 0x20, - 0x05, 0x49, 0xc0, 0x06, 0x80, 0xb5, 0x08, 0x60, - 0x00, 0x22, 0x03, 0x21, 0x54, 0x20, 0x0c, 0xf0, - 0xb8, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x04, 0x21, - 0xc4, 0x20, 0x0c, 0xf0, 0xae, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x04, 0x48, 0x80, 0xb5, 0x00, 0x88, - 0x02, 0x49, 0xff, 0xf7, 0xb8, 0xff, 0x3c, 0x00, - 0x64, 0x6e, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0x75, 0x4b, 0x00, 0x00, 0xc8, 0x74, 0x01, 0x00, - 0xf8, 0xb5, 0x06, 0x1c, 0x31, 0x48, 0x00, 0x25, - 0xc0, 0x68, 0x0c, 0x1c, 0x00, 0x28, 0x30, 0xd0, - 0x2e, 0x48, 0x2f, 0x4f, 0x04, 0x30, 0x00, 0x78, - 0x38, 0x76, 0x2c, 0x48, 0x04, 0x30, 0x40, 0x78, - 0x38, 0x81, 0x00, 0x2a, 0x0b, 0xd0, 0xf9, 0xf7, - 0xa5, 0xfa, 0x1f, 0x20, 0xb8, 0x76, 0x20, 0x1c, - 0x3c, 0x00, 0xa0, 0x6e, 0x00, 0x00, 0xf9, 0xf7, - 0xf6, 0xf9, 0x25, 0x48, 0x04, 0x30, 0x80, 0x78, - 0xb8, 0x76, 0x43, 0xe0, 0x25, 0x48, 0x22, 0x49, - 0x84, 0x42, 0x4d, 0x69, 0x02, 0xd2, 0x6c, 0x43, - 0xe4, 0x0b, 0x0f, 0xe0, 0x1f, 0x48, 0x21, 0x1c, - 0x80, 0x6a, 0x00, 0x90, 0xf9, 0xf7, 0x23, 0xfc, - 0x00, 0x99, 0x02, 0x1c, 0x4a, 0x43, 0xa1, 0x1a, - 0x1a, 0x4a, 0x69, 0x43, 0x52, 0x6a, 0xc9, 0x0b, - 0x50, 0x43, 0x3c, 0x00, 0xdc, 0x6e, 0x00, 0x00, - 0x44, 0x18, 0x02, 0x2c, 0x01, 0xd8, 0x00, 0x20, - 0xf8, 0xbd, 0xf9, 0xf7, 0x7d, 0xfa, 0x1f, 0x20, - 0xb8, 0x76, 0x20, 0x1c, 0xf9, 0xf7, 0xae, 0xf9, - 0x04, 0x1c, 0x11, 0x48, 0x04, 0x30, 0x80, 0x78, - 0xb8, 0x76, 0x0f, 0x4f, 0x7d, 0x6a, 0xac, 0x42, - 0x04, 0xd2, 0x20, 0x1c, 0xff, 0xf7, 0x22, 0xfc, - 0x05, 0x1c, 0x12, 0xe0, 0x21, 0x1c, 0x28, 0x1c, - 0xf9, 0xf7, 0xfc, 0xfb, 0x3c, 0x00, 0x18, 0x6f, - 0x00, 0x00, 0x06, 0x1c, 0x68, 0x43, 0x20, 0x1a, - 0xff, 0xf7, 0x17, 0xfc, 0x05, 0x1c, 0x00, 0x24, - 0x04, 0xe0, 0x78, 0x6a, 0xff, 0xf7, 0x11, 0xfc, - 0x45, 0x19, 0x01, 0x34, 0xb4, 0x42, 0xf8, 0xd3, - 0x28, 0x1c, 0xd4, 0xe7, 0x00, 0x00, 0xc8, 0x74, - 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0xc0, 0xc6, - 0x2d, 0x00, 0x01, 0x1c, 0x7d, 0x20, 0x80, 0xb5, - 0xc0, 0x00, 0xf9, 0xf7, 0x72, 0xfb, 0x3c, 0x00, - 0x54, 0x6f, 0x00, 0x00, 0x02, 0x49, 0x88, 0x61, - 0x40, 0x08, 0xc8, 0x61, 0x80, 0xbd, 0x00, 0x00, - 0xc8, 0x74, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, - 0x21, 0x1c, 0x00, 0x20, 0x0b, 0xf0, 0x42, 0xfa, - 0x21, 0x1c, 0x00, 0x20, 0x0b, 0xf0, 0x0a, 0xfa, - 0x00, 0xf0, 0x68, 0xfe, 0x10, 0xbd, 0x00, 0x00, - 0x85, 0x6f, 0x00, 0x00, 0x30, 0xb5, 0x0f, 0x4d, - 0x2a, 0x78, 0x04, 0x2a, 0x19, 0xd8, 0x00, 0x2a, - 0x3c, 0x00, 0x90, 0x6f, 0x00, 0x00, 0x17, 0xd0, - 0x00, 0x21, 0x07, 0xe0, 0x4b, 0x00, 0x5b, 0x18, - 0x5c, 0x19, 0x01, 0x23, 0xe4, 0x56, 0x84, 0x42, - 0x02, 0xda, 0x01, 0x31, 0x8a, 0x42, 0xf5, 0xdc, - 0x8a, 0x42, 0x00, 0xd1, 0x01, 0x39, 0x48, 0x00, - 0x40, 0x18, 0x40, 0x19, 0x81, 0x78, 0x02, 0x4a, - 0x34, 0x3a, 0x11, 0x70, 0xc0, 0x78, 0x50, 0x70, - 0x30, 0xbd, 0x00, 0x75, 0x01, 0x00, 0x30, 0xb5, - 0x11, 0x1c, 0x3c, 0x00, 0xcc, 0x6f, 0x00, 0x00, - 0x38, 0x31, 0x85, 0xb0, 0x91, 0x62, 0x08, 0x21, - 0x11, 0x86, 0x00, 0x23, 0x14, 0x1c, 0x01, 0x1c, - 0x53, 0x63, 0xc0, 0x68, 0x15, 0x4d, 0x0b, 0xe0, - 0x02, 0x68, 0xaa, 0x42, 0x06, 0xd1, 0xc2, 0x68, - 0xca, 0x60, 0xc3, 0x60, 0x03, 0x60, 0xfa, 0xf7, - 0xd1, 0xfa, 0x03, 0xe0, 0x01, 0x1c, 0xc0, 0x68, - 0x00, 0x28, 0xf1, 0xd1, 0x22, 0x1c, 0x40, 0x32, - 0x08, 0x21, 0x20, 0x68, 0x3c, 0x00, 0x08, 0x70, - 0x00, 0x00, 0xfa, 0xf7, 0x64, 0xfb, 0x0b, 0x49, - 0x20, 0x1c, 0x48, 0x30, 0x02, 0x90, 0x04, 0x94, - 0x03, 0x91, 0xe0, 0x69, 0x82, 0x88, 0x01, 0x68, - 0x6e, 0x20, 0x01, 0x92, 0x00, 0x91, 0x22, 0x1c, - 0x56, 0x32, 0x03, 0x5d, 0x21, 0x1c, 0x28, 0x31, - 0x20, 0x68, 0xff, 0xf7, 0x58, 0xfa, 0x05, 0xb0, - 0x30, 0xbd, 0xa0, 0x7e, 0x01, 0x00, 0xd5, 0x70, - 0x00, 0x00, 0x1c, 0xb5, 0x07, 0x49, 0x3c, 0x00, - 0x44, 0x70, 0x00, 0x00, 0x02, 0x1c, 0x01, 0x90, - 0x00, 0x91, 0xc0, 0x69, 0x13, 0x1c, 0x84, 0x88, - 0x01, 0x68, 0x10, 0x68, 0x48, 0x33, 0x22, 0x1c, - 0xff, 0xf7, 0x08, 0xf9, 0x1c, 0xbd, 0x00, 0x00, - 0xc9, 0x6f, 0x00, 0x00, 0x10, 0xb5, 0x14, 0x1c, - 0x18, 0x48, 0x03, 0xf0, 0x89, 0xf8, 0xa0, 0x42, - 0x01, 0xd0, 0xfa, 0xf7, 0x45, 0xf9, 0x04, 0x22, - 0x20, 0x1c, 0x40, 0x30, 0xa1, 0x6a, 0xf9, 0xf7, - 0x3c, 0x00, 0x80, 0x70, 0x00, 0x00, 0xbd, 0xf9, - 0x00, 0x28, 0x02, 0xd1, 0x01, 0x20, 0x20, 0x62, - 0x05, 0xe0, 0x00, 0x20, 0x20, 0x62, 0x84, 0x20, - 0x00, 0x5d, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, - 0x09, 0xf0, 0x23, 0xfb, 0x05, 0xe0, 0x20, 0x68, - 0xfa, 0xf7, 0x79, 0xfa, 0x20, 0x1c, 0xfa, 0xf7, - 0xa4, 0xfb, 0xe0, 0x69, 0x80, 0x79, 0x06, 0x28, - 0x06, 0xd1, 0x20, 0x6a, 0x06, 0x49, 0x00, 0x28, - 0x03, 0xd0, 0x3c, 0x00, 0xbc, 0x70, 0x00, 0x00, - 0x08, 0x69, 0x01, 0x30, 0x08, 0x61, 0x10, 0xbd, - 0x48, 0x69, 0x01, 0x30, 0x48, 0x61, 0x10, 0xbd, - 0xa0, 0x6a, 0x01, 0x00, 0x28, 0x61, 0x01, 0x00, - 0x1c, 0xb5, 0x14, 0x1c, 0x15, 0x48, 0x03, 0xf0, - 0x51, 0xf8, 0xa0, 0x42, 0x01, 0xd0, 0xfa, 0xf7, - 0x0d, 0xf9, 0x20, 0x1c, 0x4f, 0x30, 0x02, 0x79, - 0x41, 0x79, 0x00, 0xab, 0x12, 0x02, 0x11, 0x43, - 0xc2, 0x78, 0x12, 0x04, 0x3c, 0x00, 0xf8, 0x70, - 0x00, 0x00, 0x11, 0x43, 0x82, 0x78, 0x12, 0x06, - 0x11, 0x43, 0x00, 0x91, 0x01, 0x78, 0x40, 0x78, - 0x09, 0x02, 0x08, 0x43, 0x98, 0x80, 0x20, 0x1c, - 0x69, 0x46, 0x06, 0xf0, 0x3c, 0xf9, 0x00, 0x28, - 0x03, 0xd1, 0x20, 0x1c, 0x09, 0xf0, 0xe3, 0xfa, - 0x1c, 0xbd, 0x20, 0x68, 0xfa, 0xf7, 0x39, 0xfa, - 0x20, 0x1c, 0xfa, 0xf7, 0x64, 0xfb, 0xf7, 0xe7, - 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x3c, 0x00, - 0x34, 0x71, 0x00, 0x00, 0xbc, 0xb5, 0x1f, 0x4d, - 0x14, 0x1c, 0x28, 0x1c, 0xdc, 0x30, 0x03, 0xf0, - 0x1f, 0xf8, 0xa0, 0x42, 0x01, 0xd0, 0xfa, 0xf7, - 0xdb, 0xf8, 0xa0, 0x6c, 0x00, 0xab, 0x02, 0x78, - 0x81, 0x78, 0x12, 0x02, 0x11, 0x43, 0x02, 0x79, - 0x12, 0x04, 0x11, 0x43, 0x42, 0x79, 0x12, 0x06, - 0x11, 0x43, 0x00, 0x91, 0x81, 0x79, 0xc0, 0x79, - 0x00, 0x02, 0x08, 0x43, 0x98, 0x80, 0x20, 0x1c, - 0x3c, 0x00, 0x70, 0x71, 0x00, 0x00, 0x69, 0x46, - 0x06, 0xf0, 0x0b, 0xf9, 0x00, 0x28, 0x17, 0xd0, - 0x01, 0x28, 0x0e, 0xd1, 0xed, 0x6c, 0x00, 0x2d, - 0x0b, 0xd0, 0x80, 0x20, 0x02, 0x5d, 0xe0, 0x6c, - 0x01, 0x21, 0x00, 0x28, 0x00, 0xd1, 0x00, 0x21, - 0x60, 0x68, 0x6b, 0x46, 0x0a, 0x30, 0xf9, 0xf7, - 0x23, 0xf9, 0x20, 0x68, 0xfa, 0xf7, 0xfb, 0xf9, - 0x20, 0x1c, 0xfa, 0xf7, 0x26, 0xfb, 0xbc, 0xbd, - 0x20, 0x1c, 0x3c, 0x00, 0xac, 0x71, 0x00, 0x00, - 0x00, 0xf0, 0x8e, 0xfe, 0xfa, 0xe7, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0xbc, 0xb5, 0x04, 0x1c, - 0x40, 0x6a, 0x00, 0x25, 0x00, 0x28, 0x03, 0xd0, - 0x60, 0x68, 0x00, 0x8b, 0x05, 0x07, 0x2d, 0x0f, - 0x22, 0x1c, 0x40, 0x32, 0x08, 0x21, 0x20, 0x68, - 0xfa, 0xf7, 0x7e, 0xfa, 0xa1, 0x68, 0x01, 0x95, - 0x00, 0x91, 0x21, 0x1c, 0x22, 0x1c, 0x60, 0x32, - 0x20, 0x68, 0x50, 0x31, 0x3c, 0x00, 0xe8, 0x71, - 0x00, 0x00, 0x0d, 0x1c, 0xe3, 0x68, 0x09, 0xf0, - 0xe2, 0xff, 0xe0, 0x69, 0x80, 0x6b, 0x00, 0x28, - 0x03, 0xd1, 0xfe, 0xf7, 0xe8, 0xfa, 0x00, 0x28, - 0x01, 0xd0, 0x18, 0x20, 0x00, 0xe0, 0x10, 0x20, - 0x06, 0x49, 0x01, 0x94, 0x00, 0x91, 0xe1, 0x69, - 0x08, 0x23, 0x09, 0x68, 0x0a, 0x18, 0x21, 0x1c, - 0x28, 0x31, 0x28, 0x1c, 0xff, 0xf7, 0x87, 0xf9, - 0xbc, 0xbd, 0x35, 0x71, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x72, 0x00, 0x00, 0x10, 0xb5, 0x10, 0x1c, - 0x38, 0x30, 0x90, 0x62, 0x04, 0x20, 0x10, 0x86, - 0x00, 0x20, 0x50, 0x63, 0x10, 0x68, 0x14, 0x1c, - 0x40, 0x32, 0x04, 0x21, 0xfa, 0xf7, 0x4a, 0xfa, - 0x23, 0x1c, 0x21, 0x1c, 0x28, 0x31, 0x02, 0x4a, - 0x20, 0x68, 0xff, 0xf7, 0xbd, 0xf8, 0x10, 0xbd, - 0x65, 0x70, 0x00, 0x00, 0x0e, 0xb5, 0xc3, 0x69, - 0x02, 0x1c, 0x98, 0x88, 0x05, 0x49, 0x02, 0x92, - 0x3c, 0x00, 0x60, 0x72, 0x00, 0x00, 0x01, 0x91, - 0x00, 0x90, 0x1b, 0x68, 0x10, 0x68, 0x91, 0x69, - 0x03, 0x22, 0xff, 0xf7, 0xae, 0xf9, 0x0e, 0xbd, - 0x00, 0x00, 0x25, 0x72, 0x00, 0x00, 0x0e, 0xb5, - 0x02, 0x1c, 0x06, 0x49, 0x10, 0x20, 0x00, 0x90, - 0x02, 0x92, 0x13, 0x1c, 0x01, 0x91, 0x10, 0x68, - 0x00, 0x22, 0x70, 0x33, 0x00, 0x21, 0xff, 0xf7, - 0x9c, 0xf9, 0x0e, 0xbd, 0x00, 0x00, 0x25, 0x72, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x72, 0x00, 0x00, - 0x10, 0xb5, 0x03, 0x1c, 0x00, 0x21, 0x00, 0x20, - 0x08, 0x4c, 0x00, 0xe0, 0x01, 0x31, 0xca, 0x00, - 0xa2, 0x58, 0x9a, 0x42, 0x02, 0xd0, 0x0b, 0x29, - 0xf8, 0xd3, 0x10, 0xbd, 0x0b, 0x29, 0xfc, 0xd2, - 0xc9, 0x00, 0x09, 0x19, 0x00, 0x20, 0x08, 0x71, - 0x01, 0x20, 0x10, 0xbd, 0x38, 0x58, 0x01, 0x00, - 0x8c, 0xb5, 0x00, 0xab, 0x86, 0x21, 0x19, 0x80, - 0x01, 0x1c, 0x04, 0x48, 0x3c, 0x00, 0xd8, 0x72, - 0x00, 0x00, 0x06, 0xf0, 0xee, 0xfe, 0x01, 0x90, - 0x68, 0x46, 0x06, 0xf0, 0xfa, 0xf8, 0x8c, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x0d, 0x48, 0x0d, 0x49, 0x94, 0xb0, - 0x04, 0x80, 0x06, 0x22, 0x18, 0x31, 0x0c, 0x30, - 0xf9, 0xf7, 0xfb, 0xf8, 0x01, 0xa8, 0x07, 0xf0, - 0xa2, 0xf8, 0x0c, 0x20, 0x09, 0xa9, 0x48, 0x72, - 0x00, 0xab, 0x1c, 0x80, 0x02, 0x21, 0x3c, 0x00, - 0x14, 0x73, 0x00, 0x00, 0x68, 0x46, 0x03, 0xf0, - 0xdb, 0xff, 0x04, 0x90, 0x01, 0xa8, 0x06, 0xf0, - 0xd1, 0xf8, 0x14, 0xb0, 0x10, 0xbd, 0x00, 0x00, - 0x58, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x04, 0xf0, - 0x45, 0xfe, 0x05, 0xf0, 0x53, 0xfa, 0x80, 0xbd, - 0x10, 0xb5, 0x19, 0x4c, 0xe0, 0x68, 0x00, 0x28, - 0x06, 0xd0, 0x61, 0x1c, 0x08, 0x78, 0x00, 0x28, - 0x03, 0xd1, 0x48, 0x78, 0xff, 0x30, 0x08, 0x70, - 0x3c, 0x00, 0x50, 0x73, 0x00, 0x00, 0x10, 0xbd, - 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x08, 0x70, - 0xa1, 0x68, 0x00, 0x29, 0xf7, 0xd0, 0x00, 0x28, - 0xf5, 0xd1, 0x0e, 0x48, 0x54, 0x30, 0x81, 0x78, - 0x00, 0x29, 0x03, 0xd1, 0xc1, 0x78, 0xff, 0x31, - 0x81, 0x70, 0x10, 0xbd, 0xff, 0x31, 0x09, 0x06, - 0x09, 0x0e, 0x81, 0x70, 0xf9, 0xd1, 0xa1, 0x69, - 0x00, 0x29, 0xf6, 0xd0, 0x80, 0x88, 0x03, 0xf0, - 0xd0, 0xfb, 0x3c, 0x00, 0x8c, 0x73, 0x00, 0x00, - 0x04, 0x4a, 0x01, 0x1c, 0x5c, 0x32, 0x0c, 0x32, - 0x05, 0xca, 0x80, 0x1a, 0xa2, 0x69, 0xf9, 0xf7, - 0x1f, 0xf8, 0x10, 0xbd, 0x44, 0x7d, 0x01, 0x00, - 0xf0, 0xb5, 0x04, 0x1c, 0x40, 0x68, 0x00, 0x25, - 0x01, 0x79, 0x00, 0x22, 0x85, 0xb0, 0xc9, 0x07, - 0xcb, 0x17, 0x69, 0x49, 0x01, 0x33, 0x89, 0x6a, - 0x10, 0x29, 0x05, 0xd3, 0x66, 0x49, 0xc0, 0x39, - 0x08, 0x6b, 0x01, 0x30, 0x3c, 0x00, 0xc8, 0x73, - 0x00, 0x00, 0x08, 0x63, 0x8e, 0xe0, 0x21, 0x68, - 0x0e, 0x68, 0xf6, 0x78, 0xb7, 0x06, 0xff, 0x0f, - 0xb6, 0x09, 0x00, 0x2b, 0x04, 0x97, 0x06, 0xd0, - 0x63, 0x69, 0x1f, 0x1c, 0x1b, 0x6a, 0x50, 0x37, - 0x9f, 0x42, 0x00, 0xd1, 0x01, 0x25, 0x00, 0x2d, - 0x02, 0xd0, 0x63, 0x69, 0x1b, 0x6a, 0x04, 0xe0, - 0x3c, 0x23, 0x59, 0x4f, 0x73, 0x43, 0xdb, 0x19, - 0x04, 0x33, 0xe3, 0x61, 0x9f, 0x88, 0x3c, 0x00, - 0x04, 0x74, 0x00, 0x00, 0x00, 0x2f, 0x70, 0xd0, - 0x9b, 0x79, 0x02, 0x2b, 0x6e, 0xd0, 0x04, 0x2b, - 0x17, 0xd0, 0x06, 0x2b, 0x69, 0xd1, 0x08, 0x68, - 0xa0, 0x61, 0x08, 0x89, 0x04, 0x38, 0x08, 0x81, - 0x20, 0x68, 0x01, 0x68, 0x04, 0x31, 0x01, 0x60, - 0x4e, 0x49, 0x00, 0x29, 0x5d, 0xd0, 0x04, 0x9f, - 0xba, 0x42, 0x5a, 0xd1, 0x49, 0x48, 0x22, 0x1c, - 0x1c, 0x30, 0x02, 0xf0, 0x65, 0xfe, 0x05, 0xb0, - 0x3c, 0x00, 0x40, 0x74, 0x00, 0x00, 0xf0, 0xbd, - 0x09, 0x68, 0x25, 0x1c, 0xca, 0x79, 0x40, 0x35, - 0x26, 0x1c, 0xea, 0x73, 0x8b, 0x79, 0x22, 0x1c, - 0x50, 0x32, 0x13, 0x70, 0x4b, 0x79, 0x60, 0x36, - 0x53, 0x70, 0x0b, 0x79, 0x93, 0x70, 0x4b, 0x78, - 0xd3, 0x70, 0x09, 0x78, 0x11, 0x71, 0x00, 0x21, - 0x29, 0x72, 0x16, 0x21, 0xb1, 0x73, 0x61, 0x6a, - 0x00, 0x29, 0x06, 0xd0, 0x01, 0x8b, 0x09, 0x07, - 0x09, 0x0f, 0x3c, 0x00, 0x7c, 0x74, 0x00, 0x00, - 0x29, 0x72, 0xb1, 0x81, 0x18, 0x21, 0xb1, 0x73, - 0x01, 0x1c, 0x0a, 0x31, 0x20, 0x1c, 0x06, 0x22, - 0x49, 0x30, 0xf9, 0xf7, 0x33, 0xf8, 0x60, 0x68, - 0x14, 0x22, 0x01, 0x88, 0xe9, 0x82, 0x01, 0x1d, - 0x20, 0x1c, 0x58, 0x30, 0xf9, 0xf7, 0x2a, 0xf8, - 0xe8, 0x8a, 0x30, 0x49, 0x08, 0x40, 0x01, 0x21, - 0x89, 0x03, 0x08, 0x43, 0xe8, 0x82, 0x70, 0x89, - 0x0f, 0x21, 0x08, 0x40, 0x3c, 0x00, 0xb8, 0x74, - 0x00, 0x00, 0x70, 0x81, 0x20, 0x68, 0x01, 0x89, - 0x08, 0x39, 0x01, 0x81, 0x20, 0x68, 0x01, 0x68, - 0x08, 0x31, 0x01, 0x60, 0x08, 0x21, 0x00, 0x20, - 0xfa, 0xf7, 0x83, 0xf8, 0x05, 0x1c, 0x02, 0x68, - 0x20, 0x68, 0x08, 0x21, 0xfa, 0xf7, 0xfb, 0xf8, - 0x20, 0x68, 0xfa, 0xf7, 0x74, 0xf8, 0x21, 0x49, - 0xc5, 0x60, 0x2f, 0xe0, 0x30, 0xe0, 0xff, 0xe7, - 0x21, 0x68, 0x60, 0x68, 0x0a, 0x68, 0x3c, 0x00, - 0xf4, 0x74, 0x00, 0x00, 0x80, 0x23, 0xa2, 0x64, - 0x1e, 0x55, 0xe5, 0x64, 0x55, 0x79, 0x13, 0x79, - 0x2d, 0x02, 0x5b, 0x19, 0x95, 0x79, 0x2d, 0x04, - 0x5b, 0x19, 0xd5, 0x79, 0x2d, 0x06, 0x5b, 0x19, - 0x95, 0x78, 0x12, 0x78, 0x12, 0x02, 0xaa, 0x18, - 0x15, 0x04, 0x0a, 0x89, 0x2d, 0x0c, 0x08, 0x3a, - 0x0a, 0x81, 0x21, 0x68, 0x0a, 0x68, 0x08, 0x32, - 0x0a, 0x60, 0xe1, 0x69, 0x02, 0x1c, 0x0a, 0x32, - 0x3c, 0x00, 0x30, 0x75, 0x00, 0x00, 0x01, 0xa8, - 0x09, 0x68, 0x0b, 0xf0, 0x3e, 0xf9, 0xe0, 0x69, - 0x2b, 0x1c, 0x01, 0x68, 0x20, 0x1c, 0x70, 0x30, - 0x01, 0xaa, 0x0b, 0xf0, 0x86, 0xf9, 0x09, 0x49, - 0x01, 0x22, 0x6d, 0xe7, 0x20, 0x68, 0xfa, 0xf7, - 0x22, 0xf8, 0x20, 0x1c, 0xfa, 0xf7, 0x4d, 0xf9, - 0x70, 0xe7, 0x84, 0x6a, 0x01, 0x00, 0x68, 0x61, - 0x01, 0x00, 0x55, 0x72, 0x00, 0x00, 0x8f, 0xc7, - 0xff, 0xff, 0x3c, 0x00, 0x6c, 0x75, 0x00, 0x00, - 0x41, 0x70, 0x00, 0x00, 0x79, 0x72, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x82, 0x20, 0xf9, 0xf7, - 0x93, 0xfe, 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0xc0, 0x68, 0xf9, 0xf7, 0xfa, 0xff, - 0x01, 0x20, 0x80, 0xbd, 0x3c, 0x00, 0xa8, 0x75, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, 0xff, 0x20, - 0xf9, 0xf7, 0x79, 0xfe, 0x80, 0xbd, 0x70, 0x47, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x01, 0x20, - 0x70, 0x47, 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x06, 0x21, 0x99, 0x20, - 0xf9, 0xf7, 0x65, 0xfe, 0x80, 0xbd, 0xb0, 0xb5, - 0x00, 0x25, 0x01, 0x29, 0x12, 0x4c, 0x3c, 0x00, - 0xe4, 0x75, 0x00, 0x00, 0x0f, 0xd1, 0x0a, 0xf0, - 0x0f, 0xfc, 0x00, 0x28, 0x1d, 0xd0, 0x61, 0x78, - 0x3c, 0x23, 0x59, 0x43, 0x09, 0x19, 0x04, 0x31, - 0x01, 0x62, 0x61, 0x1c, 0x41, 0x62, 0x84, 0x62, - 0x04, 0x1c, 0x50, 0x34, 0x06, 0xe0, 0x00, 0x29, - 0x0f, 0xd1, 0x3c, 0x20, 0x50, 0x43, 0x25, 0x70, - 0x04, 0x19, 0x04, 0x34, 0x00, 0x2c, 0x08, 0xd0, - 0x20, 0x68, 0x00, 0x28, 0x02, 0xd0, 0x20, 0x21, - 0x3c, 0x00, 0x20, 0x76, 0x00, 0x00, 0xf8, 0xf7, - 0x18, 0xff, 0xa5, 0x80, 0x07, 0x20, 0xa0, 0x71, - 0xb0, 0xbd, 0x68, 0x61, 0x01, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x00, 0x21, 0x01, 0xf0, 0x41, 0xfc, - 0x60, 0x68, 0x00, 0x28, 0x01, 0xd0, 0x21, 0x68, - 0x01, 0x60, 0x20, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0x61, 0x68, 0x41, 0x60, 0x12, 0x4e, 0x70, 0x68, - 0xa0, 0x42, 0x01, 0xd1, 0x60, 0x68, 0x70, 0x60, - 0xe0, 0x68, 0x3c, 0x00, 0x5c, 0x76, 0x00, 0x00, - 0x00, 0x28, 0x0b, 0xd0, 0x00, 0x25, 0x06, 0xe0, - 0xe0, 0x68, 0xe9, 0x00, 0x41, 0x18, 0x14, 0x20, - 0x0b, 0xf0, 0xe2, 0xff, 0x01, 0x35, 0x30, 0x88, - 0x85, 0x42, 0xf5, 0xdb, 0x06, 0x21, 0x20, 0x1c, - 0x44, 0x30, 0xf8, 0xf7, 0xe9, 0xfe, 0x20, 0x6b, - 0x00, 0x28, 0x01, 0xd0, 0xf9, 0xf7, 0x86, 0xff, - 0xe0, 0x69, 0x00, 0x28, 0x01, 0xd0, 0xfa, 0xf7, - 0xaf, 0xf8, 0x70, 0xbd, 0x3c, 0x00, 0x98, 0x76, - 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0xf0, 0xb5, - 0x1d, 0x4f, 0x05, 0x9d, 0x3f, 0x68, 0x01, 0x26, - 0x1c, 0x1c, 0x33, 0x1c, 0x00, 0x2f, 0x00, 0xd0, - 0x2b, 0x1c, 0x1d, 0x06, 0x2d, 0x0e, 0x00, 0x29, - 0x06, 0xd0, 0x11, 0x78, 0x0e, 0x23, 0x16, 0x4f, - 0x09, 0x18, 0x09, 0x7a, 0x6b, 0x43, 0x10, 0xe0, - 0x21, 0x78, 0x00, 0x29, 0x13, 0xd0, 0xff, 0x31, - 0x0d, 0xe0, 0x01, 0x29, 0x01, 0xd9, 0x3c, 0x00, - 0xd4, 0x76, 0x00, 0x00, 0x01, 0x31, 0x11, 0x70, - 0x11, 0x78, 0x0e, 0x23, 0x0f, 0x4f, 0x49, 0x08, - 0x11, 0x70, 0x09, 0x18, 0x09, 0x7a, 0x6b, 0x43, - 0xdb, 0x19, 0x59, 0x5c, 0x21, 0x70, 0x21, 0x78, - 0x00, 0x29, 0x02, 0xd1, 0x11, 0x78, 0x00, 0x29, - 0xea, 0xd1, 0x09, 0x48, 0xc0, 0x68, 0x00, 0x28, - 0x05, 0xd0, 0x21, 0x78, 0x30, 0x1c, 0x00, 0x29, - 0x00, 0xd1, 0x00, 0x20, 0xf0, 0xbd, 0x01, 0x20, - 0x3c, 0x00, 0x10, 0x77, 0x00, 0x00, 0xf0, 0xbd, - 0x00, 0x00, 0x18, 0x67, 0x01, 0x00, 0x24, 0x67, - 0x01, 0x00, 0x5c, 0x67, 0x01, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x84, 0x46, 0x00, 0x20, 0xf0, 0xb5, - 0x00, 0x29, 0x09, 0xd0, 0x11, 0x78, 0x1a, 0x4e, - 0xb1, 0x70, 0x19, 0x4e, 0xb1, 0x78, 0x71, 0x70, - 0x31, 0x70, 0x01, 0x21, 0x31, 0x61, 0x27, 0xe0, - 0x16, 0x4e, 0x01, 0x23, 0xf1, 0x56, 0x63, 0x46, - 0x5f, 0x68, 0x3c, 0x00, 0x4c, 0x77, 0x00, 0x00, - 0x00, 0x23, 0xf6, 0x56, 0x01, 0x25, 0xcc, 0x0f, - 0xb7, 0x42, 0x00, 0xd9, 0x00, 0x25, 0x00, 0x2c, - 0x01, 0xd0, 0x00, 0x2d, 0xe8, 0xd1, 0x0e, 0x4f, - 0x3b, 0x69, 0x00, 0x2b, 0x03, 0xd0, 0x00, 0x2d, - 0x01, 0xd1, 0x16, 0x70, 0x02, 0xe0, 0x1c, 0x43, - 0x01, 0xd1, 0x11, 0x70, 0x01, 0x20, 0x01, 0x24, - 0x00, 0x2b, 0x00, 0xd0, 0x00, 0x24, 0x3c, 0x61, - 0x00, 0x2c, 0x02, 0xd0, 0x3c, 0x00, 0x88, 0x77, - 0x00, 0x00, 0x71, 0x1c, 0x39, 0x70, 0x01, 0xe0, - 0xff, 0x31, 0x79, 0x70, 0x00, 0x28, 0xd5, 0xd0, - 0x01, 0x20, 0xf0, 0xbd, 0x00, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x90, 0xb5, 0x0a, 0x4c, 0x00, 0x20, - 0x93, 0xb0, 0x20, 0x61, 0x03, 0x90, 0x68, 0x46, - 0x00, 0x21, 0x08, 0xf0, 0x84, 0xfd, 0x20, 0x7a, - 0x02, 0x28, 0x01, 0xd1, 0xe0, 0x6b, 0x00, 0xe0, - 0x20, 0x6c, 0xe0, 0x61, 0x01, 0x20, 0x3c, 0x00, - 0xc4, 0x77, 0x00, 0x00, 0x08, 0xf0, 0x8a, 0xfd, - 0x13, 0xb0, 0x90, 0xbd, 0xf4, 0x6e, 0x01, 0x00, - 0xf7, 0xb5, 0x05, 0x1c, 0x88, 0x88, 0x0c, 0x1c, - 0x82, 0xb0, 0x1f, 0x4f, 0x00, 0x28, 0x00, 0xd1, - 0x00, 0x27, 0x04, 0x98, 0x00, 0x28, 0x01, 0xd1, - 0xf9, 0xf7, 0x8a, 0xfd, 0x1b, 0x48, 0x3b, 0x1c, - 0x00, 0x68, 0x21, 0x1c, 0x02, 0x68, 0x28, 0x1c, - 0x00, 0x92, 0x04, 0x9a, 0xfe, 0xf7, 0x3c, 0xf8, - 0x3c, 0x00, 0x00, 0x78, 0x00, 0x00, 0x06, 0x1c, - 0x22, 0xd0, 0x03, 0x21, 0x04, 0x98, 0x02, 0xf0, - 0xb8, 0xff, 0x00, 0x28, 0x1b, 0xd0, 0x80, 0x78, - 0x01, 0x21, 0x03, 0xf0, 0xe4, 0xff, 0xa0, 0x88, - 0xa1, 0x8e, 0x48, 0x43, 0x00, 0x04, 0x0f, 0x49, - 0x00, 0x0c, 0x08, 0x80, 0x03, 0xf0, 0x81, 0xf9, - 0x01, 0x22, 0x00, 0x2d, 0x00, 0xd1, 0x00, 0x22, - 0x01, 0x1c, 0x0e, 0x20, 0x0b, 0xf0, 0xc9, 0xfe, - 0x00, 0x2f, 0x3c, 0x00, 0x3c, 0x78, 0x00, 0x00, - 0x08, 0xd1, 0x00, 0x21, 0x28, 0x1c, 0x02, 0xf0, - 0xbd, 0xfc, 0x03, 0xe0, 0x00, 0x26, 0x28, 0x1c, - 0x00, 0xf0, 0x0a, 0xf8, 0x30, 0x1c, 0x05, 0xb0, - 0xf0, 0xbd, 0x00, 0x00, 0xc1, 0xa1, 0x00, 0x00, - 0xe4, 0x65, 0x01, 0x00, 0xa8, 0x7c, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0xfe, 0xf7, 0x38, 0xf8, - 0x01, 0x21, 0x00, 0x2c, 0x00, 0xd1, 0x00, 0x21, - 0x0e, 0x20, 0x0b, 0xf0, 0x3c, 0x00, 0x78, 0x78, - 0x00, 0x00, 0xdd, 0xfe, 0x10, 0xbd, 0xf8, 0xb5, - 0x07, 0x1c, 0x0b, 0xf0, 0x94, 0xfa, 0xfd, 0xf7, - 0xbc, 0xfe, 0x00, 0x26, 0x02, 0x28, 0x1e, 0x4d, - 0x01, 0xd0, 0x2e, 0x70, 0xf8, 0xbd, 0xfd, 0xf7, - 0x3e, 0xf8, 0x04, 0x1c, 0xf9, 0xf7, 0x59, 0xfc, - 0x00, 0x28, 0x14, 0xd0, 0xfd, 0xf7, 0x77, 0xf8, - 0x00, 0x28, 0x10, 0xd0, 0x02, 0xf0, 0xf9, 0xfb, - 0x00, 0x28, 0x01, 0xd0, 0x00, 0x24, 0x3c, 0x00, - 0xb4, 0x78, 0x00, 0x00, 0x00, 0xe0, 0x15, 0x4c, - 0x33, 0x1c, 0x21, 0x1c, 0x07, 0x22, 0x16, 0x20, - 0x0b, 0xf0, 0x66, 0xff, 0x68, 0x78, 0x80, 0x21, - 0x08, 0x43, 0x68, 0x70, 0x02, 0xf0, 0x0a, 0xfc, - 0x00, 0x28, 0xde, 0xd1, 0x28, 0x78, 0x80, 0x07, - 0xdb, 0xd4, 0xfd, 0xf7, 0x23, 0xf9, 0x00, 0x28, - 0x05, 0xd1, 0x28, 0x78, 0xc0, 0x07, 0x02, 0xd5, - 0xfd, 0xf7, 0x42, 0xf8, 0xd1, 0xe7, 0x02, 0xf0, - 0x3c, 0x00, 0xf0, 0x78, 0x00, 0x00, 0xcd, 0xfb, - 0x00, 0x28, 0xcd, 0xd0, 0x28, 0x78, 0x02, 0x21, - 0x08, 0x43, 0x28, 0x70, 0x21, 0x1c, 0x38, 0x1c, - 0xfd, 0xf7, 0xc1, 0xf8, 0xc4, 0xe7, 0x60, 0x6c, - 0x01, 0x00, 0x71, 0x02, 0x00, 0x00, 0x10, 0xb5, - 0x12, 0x4c, 0x01, 0x20, 0x20, 0x70, 0xfe, 0xf7, - 0xf0, 0xf9, 0x01, 0x21, 0xa0, 0x68, 0xfb, 0xf7, - 0xf4, 0xfe, 0xa0, 0x68, 0x03, 0xf0, 0x87, 0xff, - 0x0d, 0x48, 0x3c, 0x00, 0x2c, 0x79, 0x00, 0x00, - 0xa1, 0x68, 0x07, 0xf0, 0x23, 0xfd, 0xfb, 0xf7, - 0x55, 0xff, 0xe0, 0x68, 0x00, 0x28, 0x0d, 0xd0, - 0x09, 0x49, 0x06, 0x20, 0x0a, 0xf0, 0x24, 0xfd, - 0x08, 0x49, 0x05, 0x20, 0x0a, 0xf0, 0x20, 0xfd, - 0xfb, 0xf7, 0x6e, 0xff, 0x00, 0x28, 0x01, 0xd0, - 0x05, 0xf0, 0xf8, 0xfc, 0x10, 0xbd, 0x00, 0x00, - 0x78, 0x69, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xe1, 0x35, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x79, - 0x00, 0x00, 0xb1, 0x35, 0x00, 0x00, 0xf0, 0xb5, - 0x24, 0x4d, 0x23, 0x4c, 0x68, 0x7c, 0x20, 0x3c, - 0x9b, 0xb0, 0x00, 0x28, 0x08, 0xd0, 0x02, 0x28, - 0x03, 0xd8, 0x20, 0x89, 0x01, 0x38, 0x20, 0x81, - 0x37, 0xe0, 0x00, 0x27, 0x6f, 0x74, 0x34, 0xe0, - 0x1c, 0x4e, 0x68, 0x22, 0x14, 0x36, 0x31, 0x1c, - 0x0c, 0x31, 0x01, 0xa8, 0xf8, 0xf7, 0x09, 0xfe, - 0x18, 0x48, 0x33, 0x89, 0x01, 0x21, 0x3c, 0x00, - 0xa4, 0x79, 0x00, 0x00, 0x44, 0x30, 0x0a, 0x1c, - 0x00, 0x2b, 0x00, 0x7b, 0x00, 0xd1, 0x02, 0x1c, - 0x12, 0x06, 0x12, 0x0e, 0x0d, 0xaf, 0x3a, 0x70, - 0x94, 0x46, 0xaa, 0x7b, 0x93, 0x19, 0x30, 0x33, - 0x5b, 0x7b, 0x7b, 0x70, 0xea, 0x73, 0x01, 0x32, - 0x12, 0x06, 0x12, 0x0e, 0x00, 0x27, 0x82, 0x42, - 0xaa, 0x73, 0x01, 0xd3, 0xaf, 0x73, 0x04, 0xe0, - 0x62, 0x46, 0x01, 0x2a, 0x01, 0xd1, 0x77, 0x60, - 0x3c, 0x00, 0xe0, 0x79, 0x00, 0x00, 0x00, 0xe0, - 0x71, 0x60, 0x06, 0x48, 0x07, 0x4a, 0x80, 0x38, - 0x81, 0x67, 0x42, 0x67, 0x68, 0x22, 0x01, 0xa9, - 0xf8, 0xf7, 0xdd, 0xfd, 0x27, 0x81, 0x08, 0xf0, - 0x12, 0xfd, 0x1b, 0xb0, 0xf0, 0xbd, 0x84, 0x66, - 0x01, 0x00, 0xe9, 0x2e, 0x00, 0x00, 0xf1, 0xb5, - 0x86, 0xb0, 0x06, 0x99, 0x00, 0x20, 0x88, 0x61, - 0x06, 0x98, 0x84, 0x68, 0x80, 0x8d, 0x65, 0x68, - 0x01, 0x28, 0x3c, 0x00, 0x1c, 0x7a, 0x00, 0x00, - 0x4c, 0xd9, 0x35, 0x49, 0x49, 0x68, 0x05, 0x91, - 0x00, 0x29, 0x47, 0xd0, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x23, 0x03, 0x90, 0x28, 0x1c, 0x96, 0x46, - 0x94, 0x46, 0x06, 0x68, 0x04, 0x96, 0xf2, 0x78, - 0x80, 0x26, 0xb2, 0x43, 0x3f, 0x2a, 0x2e, 0xd8, - 0xd7, 0x06, 0xff, 0x0e, 0x01, 0x26, 0xbe, 0x40, - 0x37, 0x1c, 0x04, 0x9e, 0x52, 0x09, 0xb6, 0x78, - 0x76, 0x00, 0xb2, 0x18, 0x3c, 0x00, 0x58, 0x7a, - 0x00, 0x00, 0x26, 0x4e, 0x92, 0x00, 0x1c, 0x36, - 0xb2, 0x58, 0x3a, 0x40, 0x1e, 0xd0, 0x03, 0xe0, - 0x02, 0x90, 0x02, 0x89, 0xc0, 0x68, 0x51, 0x18, - 0x00, 0x28, 0xf9, 0xd1, 0x05, 0x98, 0x81, 0x42, - 0x14, 0xd8, 0x70, 0x46, 0x01, 0x30, 0x86, 0x46, - 0x00, 0x2b, 0x04, 0xd0, 0x60, 0x46, 0xd8, 0x60, - 0x01, 0x98, 0x62, 0x46, 0xd0, 0x60, 0x03, 0x98, - 0x01, 0x38, 0x03, 0x90, 0x06, 0xd0, 0x3c, 0x00, - 0x94, 0x7a, 0x00, 0x00, 0x23, 0x1c, 0x24, 0x68, - 0x60, 0x68, 0x02, 0x9a, 0x01, 0x90, 0x94, 0x46, - 0xc9, 0xe7, 0x70, 0x46, 0x01, 0x28, 0x07, 0xd9, - 0x2a, 0x1c, 0x00, 0x21, 0x3f, 0x20, 0x01, 0xf0, - 0x51, 0xff, 0x05, 0x1c, 0x06, 0x98, 0x85, 0x61, - 0x28, 0x1c, 0x01, 0xf0, 0xb3, 0xff, 0x0e, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x07, 0xd0, 0x28, 0x68, - 0x01, 0x88, 0x40, 0x79, 0x02, 0x31, 0x09, 0x1a, - 0x3c, 0x00, 0xd0, 0x7a, 0x00, 0x00, 0x28, 0x1c, - 0x01, 0xf0, 0xe5, 0xfc, 0xa2, 0x68, 0x06, 0x98, - 0xc0, 0x68, 0x06, 0x99, 0x0b, 0x69, 0x29, 0x1c, - 0xf8, 0xf7, 0x7c, 0xfc, 0x03, 0x49, 0x08, 0x69, - 0x01, 0x30, 0x08, 0x61, 0x07, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xfc, 0x5a, 0x01, 0x00, 0xcc, 0x5c, - 0x01, 0x00, 0x10, 0xb5, 0x09, 0x4a, 0x80, 0x00, - 0x12, 0x58, 0xd0, 0x06, 0xc0, 0x0e, 0x01, 0x30, - 0x07, 0x4b, 0x3c, 0x00, 0x0c, 0x7b, 0x00, 0x00, - 0x1c, 0x68, 0x00, 0x2c, 0xfc, 0xdb, 0x5a, 0x60, - 0x20, 0x22, 0x12, 0x1a, 0x91, 0x40, 0x19, 0x60, - 0x19, 0x68, 0x00, 0x29, 0xfc, 0xdb, 0x10, 0xbd, - 0xe8, 0x60, 0x01, 0x00, 0x30, 0x20, 0x07, 0x00, - 0xb0, 0xb5, 0x12, 0x4c, 0x00, 0x25, 0x25, 0x70, - 0xa1, 0x68, 0x11, 0x48, 0x07, 0xf0, 0x32, 0xfc, - 0x65, 0x61, 0xfb, 0xf7, 0xa3, 0xfe, 0xe0, 0x68, - 0x00, 0x28, 0x0d, 0xd0, 0x3c, 0x00, 0x48, 0x7b, - 0x00, 0x00, 0xfb, 0xf7, 0xa4, 0xfe, 0x01, 0x21, - 0x07, 0x20, 0x0b, 0xf0, 0x70, 0xfd, 0x0a, 0x49, - 0x06, 0x20, 0x0a, 0xf0, 0x4c, 0xfc, 0x09, 0x49, - 0x05, 0x20, 0x0a, 0xf0, 0x48, 0xfc, 0xa0, 0x68, - 0x03, 0xf0, 0x67, 0xfe, 0x00, 0x21, 0xa0, 0x68, - 0xfb, 0xf7, 0xcd, 0xfd, 0x05, 0xf0, 0xab, 0xfb, - 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0xe1, 0x35, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x7b, 0x00, 0x00, 0xb1, 0x35, 0x00, 0x00, - 0x10, 0xb5, 0x0f, 0x4c, 0x20, 0x7c, 0x00, 0x28, - 0x19, 0xd1, 0x60, 0x69, 0x00, 0x28, 0x16, 0xd1, - 0xe0, 0x68, 0x00, 0x28, 0x06, 0xd0, 0x0a, 0x48, - 0x1c, 0x38, 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0x05, 0xf0, 0xce, 0xfb, 0x01, 0x21, 0x07, 0x20, - 0x0b, 0xf0, 0x40, 0xfd, 0xa0, 0x68, 0x03, 0xf0, - 0x3f, 0xfe, 0x04, 0x48, 0xa1, 0x68, 0x07, 0xf0, - 0x3c, 0x00, 0xc0, 0x7b, 0x00, 0x00, 0xdb, 0xfb, - 0x01, 0x20, 0x20, 0x70, 0x10, 0xbd, 0x78, 0x69, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x70, 0xb5, - 0x0e, 0x4c, 0x01, 0x22, 0xa3, 0x68, 0xe5, 0x68, - 0x26, 0x8a, 0x5d, 0x1b, 0xb5, 0x42, 0x01, 0xd1, - 0x00, 0x22, 0x06, 0xe0, 0x25, 0x68, 0x01, 0x33, - 0x2e, 0x68, 0xa3, 0x60, 0x26, 0x60, 0x04, 0x35, - 0x03, 0xc5, 0x00, 0x2a, 0x04, 0xd1, 0x01, 0x21, - 0x9d, 0x20, 0x3c, 0x00, 0xfc, 0x7b, 0x00, 0x00, - 0xf9, 0xf7, 0x52, 0xfb, 0x70, 0xbd, 0x03, 0x49, - 0x02, 0x20, 0x08, 0x60, 0x70, 0xbd, 0x00, 0x00, - 0x44, 0xe3, 0x01, 0x00, 0x40, 0x20, 0x07, 0x00, - 0x80, 0xb5, 0x02, 0xf0, 0xb9, 0xf8, 0x80, 0xbd, - 0x80, 0xb5, 0x02, 0x21, 0x2d, 0x20, 0xf9, 0xf7, - 0x3f, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x2a, 0x20, 0xf9, 0xf7, - 0x37, 0xfb, 0x00, 0x20, 0x3c, 0x00, 0x38, 0x7c, - 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x01, 0x21, 0x2b, 0x20, 0xf9, 0xf7, 0x2f, 0xfb, - 0x02, 0x20, 0x80, 0xbd, 0x00, 0x00, 0x01, 0x49, - 0x01, 0x20, 0x08, 0x61, 0x70, 0x47, 0x7c, 0x78, - 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0c, 0x23, - 0x0f, 0x1c, 0x17, 0x49, 0x58, 0x43, 0x45, 0x18, - 0x6c, 0x68, 0x30, 0x1c, 0x0b, 0xf0, 0x3f, 0xfe, - 0x00, 0x2f, 0x09, 0xd1, 0x30, 0x1c, 0x3c, 0x00, - 0x74, 0x7c, 0x00, 0x00, 0x03, 0xf0, 0xee, 0xfe, - 0x41, 0x20, 0x07, 0x55, 0x11, 0x48, 0x21, 0x1c, - 0xff, 0xf7, 0xa6, 0xff, 0xf8, 0xbd, 0x41, 0x20, - 0x07, 0x55, 0xa0, 0x6b, 0x00, 0x28, 0x03, 0xd0, - 0x20, 0x1c, 0x00, 0xf0, 0xdf, 0xf9, 0xf5, 0xe7, - 0x20, 0x1c, 0x00, 0xf0, 0xdb, 0xf9, 0xac, 0x68, - 0x00, 0x2c, 0x02, 0xd0, 0x00, 0x20, 0xa8, 0x60, - 0xed, 0xe7, 0x30, 0x1c, 0x05, 0xf0, 0x34, 0xf9, - 0x3c, 0x00, 0xb0, 0x7c, 0x00, 0x00, 0x04, 0x1c, - 0xe8, 0xd1, 0x08, 0x21, 0x0c, 0x20, 0xf9, 0xf7, - 0xf4, 0xfa, 0xe3, 0xe7, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x55, 0x80, 0x00, 0x00, 0x07, 0x4a, - 0x80, 0xb5, 0x50, 0x70, 0x51, 0x60, 0x12, 0x78, - 0x06, 0x4b, 0x80, 0x00, 0x52, 0x01, 0xd2, 0x18, - 0x10, 0x18, 0x40, 0x38, 0x02, 0x68, 0x08, 0x1c, - 0xf8, 0xf7, 0x7b, 0xfb, 0x80, 0xbd, 0x78, 0x69, - 0x01, 0x00, 0x3c, 0x00, 0xec, 0x7c, 0x00, 0x00, - 0xfc, 0x42, 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x49, - 0x04, 0x1c, 0xc8, 0x70, 0x08, 0x4d, 0xe4, 0x35, - 0xa8, 0x7a, 0x08, 0x71, 0x08, 0x2c, 0x01, 0xd3, - 0xf9, 0xf7, 0xfc, 0xfa, 0xa8, 0x7a, 0x05, 0x49, - 0x40, 0x01, 0x40, 0x18, 0xa1, 0x00, 0x40, 0x58, - 0xf8, 0xf7, 0x60, 0xfb, 0xb0, 0xbd, 0x00, 0x00, - 0x60, 0x6c, 0x01, 0x00, 0x80, 0x43, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x28, 0x3c, 0x00, 0x28, 0x7d, - 0x00, 0x00, 0x01, 0xd0, 0x09, 0xf0, 0x1d, 0xf9, - 0x80, 0xbd, 0xb0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, - 0x00, 0x20, 0x08, 0x60, 0x68, 0x68, 0x09, 0xf0, - 0x36, 0xfb, 0x6c, 0x60, 0xb0, 0xbd, 0x10, 0xb5, - 0x04, 0x1c, 0x09, 0xf0, 0x34, 0xfb, 0x21, 0x68, - 0x00, 0x29, 0x00, 0xd1, 0x64, 0x60, 0x10, 0xbd, - 0x00, 0x00, 0x00, 0x21, 0x01, 0x60, 0x40, 0x60, - 0x70, 0x47, 0xf8, 0xb5, 0x46, 0x68, 0x3c, 0x00, - 0x64, 0x7d, 0x00, 0x00, 0x04, 0x1c, 0x40, 0x6a, - 0x35, 0x1c, 0x0a, 0x35, 0x00, 0x28, 0x04, 0xd0, - 0x20, 0x1c, 0xf9, 0xf7, 0x89, 0xfd, 0x07, 0x1c, - 0x00, 0xe0, 0x04, 0x27, 0x29, 0x1c, 0x60, 0x69, - 0x00, 0xf0, 0xf6, 0xfc, 0x79, 0x00, 0x0f, 0x18, - 0xba, 0x88, 0xf1, 0x8a, 0x05, 0x1c, 0x8a, 0x42, - 0x05, 0xd1, 0x30, 0x88, 0x00, 0x05, 0x02, 0xd5, - 0x04, 0xf0, 0xbe, 0xfb, 0x3c, 0xe0, 0x28, 0x68, - 0x3c, 0x00, 0xa0, 0x7d, 0x00, 0x00, 0x00, 0x28, - 0x0f, 0xd0, 0x01, 0x32, 0x8a, 0x42, 0x04, 0xd1, - 0xf9, 0xf7, 0x0f, 0xfc, 0x21, 0x68, 0xc1, 0x60, - 0x0b, 0xe0, 0xf9, 0xf7, 0xf0, 0xfb, 0xf0, 0x8a, - 0x00, 0x07, 0x04, 0xd0, 0x00, 0x21, 0x29, 0x60, - 0x29, 0xe0, 0x08, 0x07, 0x27, 0xd1, 0x20, 0x68, - 0x28, 0x60, 0xf0, 0x8a, 0xb8, 0x80, 0x13, 0x48, - 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x31, 0x88, - 0x49, 0x05, 0x3c, 0x00, 0xdc, 0x7d, 0x00, 0x00, - 0x18, 0xd4, 0x29, 0x68, 0x21, 0x60, 0x00, 0x21, - 0x29, 0x60, 0xe1, 0x69, 0x00, 0x29, 0x0d, 0xd0, - 0x89, 0x79, 0x02, 0x29, 0x0a, 0xd1, 0x08, 0x21, - 0x21, 0x86, 0x21, 0x1c, 0x38, 0x31, 0xa1, 0x62, - 0x22, 0x1c, 0xdc, 0x30, 0x08, 0x49, 0x02, 0xf0, - 0x81, 0xf9, 0xf8, 0xbd, 0x20, 0x1c, 0x00, 0xf0, - 0x5f, 0xf8, 0xfa, 0xe7, 0x20, 0x1c, 0xf9, 0xf7, - 0xef, 0xfc, 0xf6, 0xe7, 0x3c, 0x00, 0x18, 0x7e, - 0x00, 0x00, 0x20, 0x68, 0xf9, 0xf7, 0xbd, 0xfb, - 0xf7, 0xe7, 0xc4, 0x69, 0x01, 0x00, 0xb9, 0x71, - 0x00, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, 0x09, 0x78, - 0x01, 0x24, 0xc9, 0x07, 0x21, 0xd5, 0x02, 0xf0, - 0x8c, 0xff, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x24, - 0x1b, 0xe0, 0x0e, 0x4e, 0x75, 0x6e, 0x00, 0x2d, - 0x17, 0xd0, 0x34, 0x6e, 0x06, 0x22, 0x31, 0x1c, - 0x38, 0x1c, 0xf8, 0xf7, 0xd4, 0xfa, 0x3c, 0x00, - 0x54, 0x7e, 0x00, 0x00, 0x00, 0x28, 0x05, 0xd1, - 0x01, 0x20, 0x00, 0x2c, 0x00, 0xd0, 0x00, 0x20, - 0x04, 0x1c, 0x03, 0xe0, 0x01, 0x3d, 0x06, 0x36, - 0x00, 0x2d, 0xee, 0xd1, 0x00, 0x2c, 0x03, 0xd1, - 0x02, 0x4e, 0xb0, 0x6e, 0x01, 0x30, 0xb0, 0x66, - 0x20, 0x1c, 0xf8, 0xbd, 0x10, 0x79, 0x01, 0x00, - 0x30, 0xb5, 0x05, 0x1c, 0x00, 0x20, 0x06, 0x49, - 0x00, 0x22, 0x1c, 0x23, 0xcc, 0x56, 0xac, 0x42, - 0x3c, 0x00, 0x90, 0x7e, 0x00, 0x00, 0x01, 0xd1, - 0x08, 0x1c, 0x30, 0xbd, 0x01, 0x32, 0x48, 0x31, - 0x01, 0x2a, 0xf5, 0xd3, 0x30, 0xbd, 0xcc, 0x6d, - 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, 0x00, 0x22, - 0x1c, 0x23, 0x53, 0x43, 0xe3, 0x58, 0x83, 0x42, - 0x04, 0xd1, 0x1c, 0x20, 0x50, 0x43, 0x00, 0x19, - 0x0a, 0x60, 0x10, 0xbd, 0x01, 0x32, 0x0e, 0x2a, - 0xf2, 0xd3, 0x00, 0x20, 0x10, 0xbd, 0xdc, 0x71, - 0x01, 0x00, 0x3c, 0x00, 0xcc, 0x7e, 0x00, 0x00, - 0xf0, 0xb5, 0x41, 0x68, 0x95, 0xb0, 0x07, 0x1c, - 0x90, 0x37, 0x13, 0x91, 0x04, 0x1c, 0xf8, 0x78, - 0x25, 0x1c, 0x80, 0x35, 0xc6, 0x07, 0x28, 0x79, - 0xf6, 0x0f, 0x4a, 0x49, 0x02, 0x28, 0x4d, 0xd1, - 0x0a, 0x6d, 0x00, 0x2a, 0x4a, 0xd0, 0x48, 0x68, - 0x01, 0x30, 0x48, 0x60, 0x0a, 0xf0, 0x58, 0xff, - 0x44, 0x49, 0x08, 0x61, 0x48, 0x61, 0x13, 0x99, - 0x09, 0x79, 0xc9, 0x07, 0x3c, 0x00, 0x08, 0x7f, - 0x00, 0x00, 0x01, 0xd4, 0x41, 0x49, 0x88, 0x61, - 0x20, 0x68, 0x06, 0x22, 0x06, 0x90, 0xa1, 0x68, - 0x03, 0xa8, 0xf8, 0xf7, 0xee, 0xfa, 0x06, 0x22, - 0x04, 0xa8, 0x02, 0x30, 0xe1, 0x68, 0xf8, 0xf7, - 0xe8, 0xfa, 0x07, 0xa8, 0x06, 0x22, 0x21, 0x69, - 0xf8, 0xf7, 0xe3, 0xfa, 0xb8, 0x78, 0x08, 0xab, - 0x00, 0x21, 0x98, 0x70, 0x0c, 0x96, 0x63, 0x6a, - 0x20, 0x1c, 0xa0, 0x30, 0x0a, 0x1c, 0x3c, 0x00, - 0x44, 0x7f, 0x00, 0x00, 0x00, 0x2b, 0x02, 0xd0, - 0x02, 0x8a, 0x52, 0x07, 0x52, 0x0f, 0x08, 0xab, - 0xda, 0x70, 0x00, 0xab, 0x99, 0x84, 0x13, 0x99, - 0x09, 0x88, 0xc9, 0x0b, 0xd9, 0x84, 0x69, 0x6b, - 0x10, 0xab, 0x10, 0x91, 0xa9, 0x6b, 0x11, 0x91, - 0x80, 0x8b, 0x29, 0x49, 0x18, 0x81, 0x09, 0x6d, - 0x03, 0xa8, 0xf8, 0xf7, 0x32, 0xfa, 0x29, 0x79, - 0x68, 0x6b, 0x0b, 0xf0, 0x4d, 0xfd, 0x29, 0x79, - 0x3c, 0x00, 0x80, 0x7f, 0x00, 0x00, 0xa8, 0x6b, - 0x0b, 0xf0, 0x67, 0xfd, 0x3d, 0xe0, 0x00, 0x28, - 0x38, 0xd1, 0x48, 0x6d, 0x14, 0x90, 0x00, 0x28, - 0x34, 0xd0, 0x20, 0x68, 0x06, 0x22, 0x03, 0x90, - 0xa1, 0x68, 0x68, 0x46, 0xf8, 0xf7, 0xab, 0xfa, - 0x06, 0x22, 0x68, 0x46, 0x80, 0x18, 0xe1, 0x68, - 0xf8, 0xf7, 0xa5, 0xfa, 0x05, 0xa8, 0x06, 0x22, - 0x21, 0x69, 0xf8, 0xf7, 0xa0, 0xfa, 0x00, 0x21, - 0x04, 0x91, 0x3c, 0x00, 0xbc, 0x7f, 0x00, 0x00, - 0xb9, 0x78, 0x08, 0xa8, 0x10, 0xab, 0x01, 0x72, - 0x08, 0x96, 0xe9, 0x68, 0x0b, 0x91, 0x69, 0x79, - 0x41, 0x72, 0x68, 0x6b, 0x0e, 0x90, 0xa8, 0x6b, - 0x10, 0x90, 0x28, 0x8d, 0xd8, 0x80, 0x68, 0x8d, - 0x18, 0x81, 0xe1, 0x69, 0x0c, 0xa8, 0x00, 0x29, - 0x04, 0xd0, 0x89, 0x79, 0x01, 0x70, 0x20, 0x6a, - 0x0d, 0x90, 0x01, 0xe0, 0x07, 0x21, 0x01, 0x70, - 0x68, 0x46, 0x14, 0x99, 0x3c, 0x00, 0xf8, 0x7f, - 0x00, 0x00, 0xf8, 0xf7, 0xef, 0xf9, 0x02, 0xe0, - 0x20, 0x68, 0xf9, 0xf7, 0xca, 0xfa, 0x20, 0x1c, - 0xf9, 0xf7, 0xf5, 0xfb, 0x15, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0xc0, 0x68, 0x06, 0x22, 0x01, 0x89, - 0x0c, 0x31, 0x01, 0x81, 0x05, 0x68, 0x21, 0x1c, - 0x0c, 0x3d, 0x05, 0x60, 0xa8, 0x18, 0xf8, 0xf7, - 0x64, 0xfa, 0x06, 0x22, 0xa1, 0x18, 0x3c, 0x00, - 0x34, 0x80, 0x00, 0x00, 0x28, 0x1c, 0xf8, 0xf7, - 0x5f, 0xfa, 0xa0, 0x8f, 0x00, 0x09, 0xe0, 0x62, - 0x20, 0x63, 0x03, 0x48, 0x01, 0x69, 0x20, 0x1c, - 0xf8, 0xf7, 0xc7, 0xf9, 0xb0, 0xbd, 0x00, 0x00, - 0x7c, 0x79, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x60, 0x36, 0x05, 0x1c, 0x70, 0x7a, 0x0c, 0x23, - 0x25, 0x49, 0x58, 0x43, 0x44, 0x18, 0xa8, 0x6b, - 0x00, 0x27, 0x00, 0x28, 0x06, 0xd0, 0xa0, 0x78, - 0x3c, 0x00, 0x70, 0x80, 0x00, 0x00, 0x01, 0x28, - 0x03, 0xd1, 0xa7, 0x70, 0x70, 0x7a, 0x0a, 0xf0, - 0xb6, 0xfd, 0x2a, 0x1c, 0x0c, 0x21, 0x80, 0x20, - 0x0b, 0xf0, 0x95, 0xfb, 0xa8, 0x6b, 0x00, 0x28, - 0x33, 0xd0, 0xa0, 0x78, 0x02, 0x28, 0x0b, 0xd0, - 0x04, 0x28, 0x22, 0xd1, 0xa7, 0x70, 0x2f, 0x1c, - 0x40, 0x37, 0x78, 0x78, 0x02, 0x28, 0x0c, 0xd1, - 0x70, 0x7a, 0x0a, 0xf0, 0xa0, 0xfd, 0x18, 0xe0, - 0x03, 0x20, 0x3c, 0x00, 0xac, 0x80, 0x00, 0x00, - 0xa0, 0x70, 0x12, 0x49, 0x00, 0x20, 0x14, 0x39, - 0x09, 0x69, 0xf8, 0xf7, 0x90, 0xf9, 0x0f, 0xe0, - 0x2c, 0x1c, 0x07, 0xe0, 0x78, 0x78, 0x41, 0x21, - 0x22, 0x1c, 0x08, 0x55, 0x0c, 0x21, 0x80, 0x20, - 0x0b, 0xf0, 0x70, 0xfb, 0x60, 0x34, 0x60, 0x7a, - 0x04, 0xf0, 0x20, 0xff, 0x04, 0x1c, 0xf1, 0xd1, - 0x70, 0x7a, 0x40, 0x35, 0xa9, 0x8b, 0x00, 0x02, - 0x09, 0x09, 0x09, 0x04, 0x3c, 0x00, 0xe8, 0x80, - 0x00, 0x00, 0x08, 0x43, 0x81, 0x21, 0x01, 0x43, - 0x0c, 0x20, 0x0b, 0xf0, 0xa0, 0xfa, 0xf8, 0xbd, - 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, 0xf8, 0xb5, - 0x1c, 0x49, 0x05, 0x1c, 0x88, 0x6a, 0x01, 0x30, - 0x88, 0x62, 0x28, 0x1c, 0x0b, 0xf0, 0x7d, 0xfd, - 0x04, 0x1c, 0x11, 0xd0, 0x2b, 0x1c, 0x20, 0x33, - 0x1e, 0x1c, 0x5a, 0x79, 0x20, 0x1c, 0xb4, 0x30, - 0x19, 0x79, 0x14, 0x4f, 0xfd, 0xf7, 0x3c, 0x00, - 0x24, 0x81, 0x00, 0x00, 0x89, 0xf8, 0xaa, 0x7a, - 0x20, 0x1c, 0xb8, 0x30, 0xb1, 0x79, 0xfd, 0xf7, - 0xb9, 0xf8, 0x00, 0x2f, 0x04, 0xd1, 0x01, 0x21, - 0x28, 0x68, 0xfa, 0xf7, 0x6d, 0xfa, 0xf8, 0xbd, - 0x60, 0x68, 0xbc, 0x21, 0xc0, 0x8a, 0x08, 0x53, - 0x28, 0x68, 0x00, 0x21, 0xfa, 0xf7, 0x64, 0xfa, - 0x00, 0x28, 0x09, 0xd0, 0x06, 0x49, 0xc8, 0x6a, - 0x01, 0x30, 0xc8, 0x62, 0x00, 0x2c, 0xee, 0xd0, - 0x3c, 0x00, 0x60, 0x81, 0x00, 0x00, 0x20, 0x1c, - 0xf9, 0xf7, 0x47, 0xfb, 0xea, 0xe7, 0x20, 0x1c, - 0xf8, 0xf7, 0x3c, 0xf9, 0xe6, 0xe7, 0xc4, 0x69, - 0x01, 0x00, 0xa1, 0xff, 0x00, 0x00, 0xf8, 0xb5, - 0x16, 0x4c, 0x05, 0x1f, 0x00, 0x22, 0x21, 0x1c, - 0xa0, 0x31, 0x03, 0xe0, 0x28, 0x68, 0xa0, 0x42, - 0x09, 0xd0, 0x20, 0x34, 0xa1, 0x42, 0xf9, 0xd1, - 0x00, 0x2a, 0x04, 0xd1, 0x02, 0x21, 0x8e, 0x20, - 0xf9, 0xf7, 0x3c, 0x00, 0x9c, 0x81, 0x00, 0x00, - 0x83, 0xf8, 0xf8, 0xbd, 0x0d, 0x4f, 0xbe, 0x79, - 0x60, 0x69, 0x01, 0x30, 0x60, 0x61, 0xf8, 0xf7, - 0x97, 0xfd, 0xa8, 0x42, 0x07, 0xd1, 0xa0, 0x88, - 0x04, 0x30, 0xf8, 0xf7, 0x97, 0xfd, 0xe0, 0x69, - 0x01, 0x30, 0xe0, 0x61, 0x05, 0xe0, 0x20, 0x68, - 0x28, 0x60, 0x25, 0x60, 0xa0, 0x69, 0x01, 0x30, - 0xa0, 0x61, 0xbe, 0x71, 0xe5, 0xe7, 0x00, 0x00, - 0xd0, 0x5c, 0x01, 0x00, 0x3c, 0x00, 0xd8, 0x81, - 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, 0x00, 0x29, - 0x01, 0xdb, 0x06, 0x29, 0x01, 0xdb, 0x02, 0x20, - 0x70, 0x47, 0x06, 0x4b, 0xc9, 0x00, 0x5a, 0x5c, - 0xc9, 0x18, 0x02, 0x70, 0x4a, 0x78, 0x42, 0x70, - 0x8a, 0x78, 0x82, 0x70, 0x49, 0x68, 0x41, 0x60, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0xcc, 0x5a, - 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xf9, 0xf7, 0x3c, 0x00, - 0x14, 0x82, 0x00, 0x00, 0x75, 0xf8, 0x10, 0x48, - 0x40, 0x68, 0x00, 0x28, 0x00, 0xd0, 0x03, 0x24, - 0x10, 0x2d, 0x00, 0xd3, 0x0f, 0x25, 0x06, 0x20, - 0x0b, 0x49, 0x60, 0x43, 0x12, 0x31, 0x40, 0x18, - 0x41, 0x78, 0x80, 0x78, 0x49, 0x19, 0x09, 0x06, - 0x09, 0x0e, 0x88, 0x42, 0x00, 0xd2, 0x01, 0x1c, - 0x01, 0x20, 0x88, 0x40, 0x05, 0x49, 0x01, 0x38, - 0x09, 0x68, 0x08, 0x40, 0x00, 0x04, 0x00, 0x0c, - 0x3c, 0x00, 0x50, 0x82, 0x00, 0x00, 0x02, 0xf0, - 0x44, 0xfe, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x7a, - 0x01, 0x00, 0x08, 0x20, 0x07, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0d, 0x1c, 0x09, 0xf0, 0xcf, 0xfd, - 0x00, 0x28, 0x03, 0xd1, 0x20, 0x1c, 0x09, 0xf0, - 0x82, 0xfd, 0x05, 0x61, 0xb0, 0xbd, 0x80, 0xb5, - 0x0a, 0xf0, 0x97, 0xfd, 0x03, 0x4a, 0x0c, 0x32, - 0x06, 0xca, 0x89, 0x18, 0x08, 0x1a, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x82, 0x00, 0x00, - 0xa0, 0x7d, 0x01, 0x00, 0x70, 0xb5, 0x0b, 0x4c, - 0x04, 0x9e, 0x64, 0x68, 0x0d, 0xe0, 0x65, 0x68, - 0x85, 0x42, 0x09, 0xd1, 0x20, 0x7a, 0x08, 0x70, - 0xe0, 0x68, 0x10, 0x60, 0x20, 0x69, 0x18, 0x60, - 0x20, 0x7d, 0x30, 0x80, 0x01, 0x20, 0x70, 0xbd, - 0x24, 0x68, 0x00, 0x2c, 0xef, 0xd1, 0x00, 0x20, - 0x70, 0xbd, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0xc8, 0x82, - 0x00, 0x00, 0x20, 0x30, 0x81, 0x7b, 0x20, 0x69, - 0x04, 0x30, 0xfd, 0xf7, 0x64, 0xf9, 0x01, 0x1c, - 0x62, 0x20, 0x02, 0x5b, 0x63, 0x6a, 0x40, 0x34, - 0x20, 0x78, 0x02, 0xf0, 0xce, 0xfd, 0x10, 0xbd, - 0x00, 0x00, 0x0b, 0x49, 0x10, 0xb5, 0x08, 0x88, - 0x8a, 0x69, 0x0a, 0x23, 0x50, 0x43, 0x58, 0x43, - 0x0e, 0xd0, 0x08, 0x4a, 0x53, 0x89, 0x94, 0x88, - 0xd2, 0x88, 0x1b, 0x19, 0x52, 0x04, 0x3c, 0x00, - 0x04, 0x83, 0x00, 0x00, 0x52, 0x0c, 0x9a, 0x18, - 0xc9, 0x68, 0x06, 0x32, 0x4a, 0x43, 0x0a, 0x21, - 0x51, 0x43, 0xf8, 0xf7, 0xfd, 0xf9, 0x10, 0xbd, - 0xc8, 0x74, 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, - 0x10, 0xb5, 0x43, 0x1c, 0x01, 0xd1, 0x10, 0x48, - 0x10, 0xbd, 0x0f, 0x4a, 0x0e, 0x4b, 0x94, 0x3a, - 0x12, 0x68, 0x44, 0x3b, 0x1b, 0x7a, 0x10, 0xe0, - 0x54, 0x68, 0x84, 0x42, 0x0c, 0xd1, 0x00, 0x29, - 0x3c, 0x00, 0x40, 0x83, 0x00, 0x00, 0x0f, 0xd1, - 0x02, 0x2b, 0x03, 0xd1, 0xd4, 0x7b, 0x02, 0x2c, - 0x0a, 0xd2, 0x04, 0xe0, 0x00, 0x2b, 0x05, 0xd1, - 0xd4, 0x7b, 0xe4, 0x07, 0x04, 0xd4, 0x12, 0x68, - 0x00, 0x2a, 0xec, 0xd1, 0x00, 0x20, 0x10, 0xbd, - 0x10, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x38, 0x6f, - 0x01, 0x00, 0x01, 0x1c, 0x01, 0x20, 0x01, 0x29, - 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, 0x00, 0xb5, - 0x02, 0x1c, 0x3c, 0x00, 0x7c, 0x83, 0x00, 0x00, - 0xfd, 0xf7, 0xce, 0xf8, 0x00, 0x28, 0x08, 0xd0, - 0x10, 0x1c, 0xff, 0xf7, 0xf1, 0xff, 0x18, 0x23, - 0x03, 0x49, 0x58, 0x43, 0x40, 0x18, 0x00, 0x69, - 0x00, 0xbd, 0x00, 0x20, 0x00, 0xbd, 0x00, 0x00, - 0x94, 0x67, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x28, - 0x00, 0xd1, 0x08, 0x48, 0x07, 0x49, 0x00, 0x68, - 0x50, 0x31, 0x09, 0x7a, 0x00, 0x29, 0x02, 0xd0, - 0x02, 0x29, 0x04, 0xd1, 0x3c, 0x00, 0xb8, 0x83, - 0x00, 0x00, 0x00, 0xe0, 0x01, 0x21, 0x00, 0xf0, - 0x06, 0xf8, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, 0x12, 0x4a, - 0x12, 0x4b, 0x12, 0x7a, 0x2c, 0x3b, 0x00, 0x2a, - 0x03, 0xd1, 0x5a, 0x68, 0x00, 0x2a, 0x18, 0xd1, - 0x04, 0xe0, 0x02, 0x2a, 0x02, 0xd1, 0x9a, 0x68, - 0x00, 0x2a, 0x12, 0xd1, 0x00, 0x20, 0x70, 0x47, - 0xc2, 0x7b, 0x8a, 0x42, 0x01, 0xd0, 0x3c, 0x00, - 0xf4, 0x83, 0x00, 0x00, 0x03, 0x2a, 0x0a, 0xd1, - 0x82, 0x7e, 0x01, 0x2a, 0x07, 0xd1, 0x02, 0x7f, - 0x01, 0x32, 0x12, 0x06, 0x12, 0x0e, 0x02, 0x77, - 0xc3, 0x7e, 0x9a, 0x42, 0xee, 0xd2, 0x00, 0x68, - 0x00, 0x28, 0xec, 0xd1, 0x70, 0x47, 0x00, 0x00, - 0xf4, 0x6e, 0x01, 0x00, 0xf7, 0xb5, 0x84, 0x46, - 0x00, 0x20, 0x01, 0x27, 0x00, 0x24, 0x00, 0x25, - 0x88, 0xb0, 0x07, 0xe0, 0x62, 0x46, 0x52, 0x5d, - 0x3c, 0x00, 0x30, 0x84, 0x00, 0x00, 0x00, 0x2a, - 0x05, 0xd0, 0xab, 0x00, 0x6e, 0x46, 0xf2, 0x50, - 0x01, 0x35, 0x8d, 0x42, 0xf5, 0xd3, 0x00, 0x2d, - 0x00, 0xd0, 0x01, 0x20, 0x00, 0x28, 0x28, 0xd0, - 0x00, 0x27, 0x16, 0x4c, 0x6e, 0x46, 0x22, 0xe0, - 0x20, 0x1c, 0x00, 0xf0, 0x30, 0xf8, 0x01, 0x28, - 0x01, 0xd0, 0x07, 0x28, 0x06, 0xd1, 0x00, 0x21, - 0x20, 0x1c, 0x00, 0xf0, 0x34, 0xf8, 0x31, 0x68, - 0x88, 0x42, 0x3c, 0x00, 0x6c, 0x84, 0x00, 0x00, - 0x01, 0xd2, 0x02, 0x27, 0x14, 0xe0, 0x20, 0x68, - 0xc9, 0x00, 0x0c, 0x18, 0x08, 0x3c, 0x20, 0x1c, - 0x00, 0xf0, 0x1c, 0xf8, 0x07, 0x28, 0x07, 0xd1, - 0x01, 0x20, 0x01, 0x2d, 0x00, 0xd0, 0x00, 0x20, - 0x24, 0x68, 0x00, 0x28, 0x00, 0xd1, 0x08, 0x34, - 0x01, 0x3d, 0x04, 0x36, 0x00, 0x2d, 0xda, 0xd1, - 0x0a, 0x98, 0x04, 0x60, 0x0b, 0xb0, 0x38, 0x1c, - 0xf0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x84, - 0x00, 0x00, 0x20, 0x52, 0x01, 0x00, 0x00, 0x68, - 0x00, 0x29, 0x01, 0xd0, 0x80, 0x02, 0x80, 0x0a, - 0x70, 0x47, 0x10, 0xb5, 0x40, 0x68, 0x80, 0x00, - 0x44, 0x0f, 0x08, 0x2c, 0x03, 0xd3, 0x02, 0x21, - 0x87, 0x20, 0xf8, 0xf7, 0xec, 0xfe, 0x20, 0x1c, - 0x10, 0xbd, 0x00, 0x29, 0x02, 0xd0, 0x00, 0x68, - 0x80, 0x0d, 0x70, 0x47, 0x40, 0x68, 0x80, 0x05, - 0x80, 0x0d, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x84, 0x00, 0x00, 0x10, 0xb5, 0x40, 0x68, - 0x40, 0x01, 0x44, 0x0f, 0x05, 0x2c, 0x03, 0xd3, - 0x05, 0x21, 0x87, 0x20, 0xf8, 0xf7, 0xd6, 0xfe, - 0x20, 0x1c, 0x10, 0xbd, 0xf8, 0xb5, 0x05, 0x1c, - 0x88, 0x0a, 0x00, 0x90, 0x1c, 0x48, 0x8e, 0x05, - 0xc0, 0x69, 0xb6, 0x0d, 0x17, 0x1c, 0x1c, 0x1c, - 0x00, 0x28, 0x05, 0xd1, 0x18, 0x48, 0x81, 0x69, - 0x8d, 0x42, 0x1d, 0xd0, 0x85, 0x61, 0x11, 0xe0, - 0x3c, 0x00, 0x20, 0x85, 0x00, 0x00, 0xfd, 0xf7, - 0xe8, 0xf8, 0x15, 0x49, 0x09, 0x78, 0x0e, 0x29, - 0x07, 0xd1, 0x00, 0x28, 0x05, 0xd0, 0x11, 0x49, - 0x50, 0x31, 0x06, 0x23, 0xc9, 0x56, 0xf9, 0xf7, - 0x06, 0xfa, 0x0e, 0x49, 0x00, 0x20, 0xc8, 0x61, - 0x8d, 0x61, 0x29, 0x1c, 0x20, 0x1c, 0xf8, 0xf7, - 0xe2, 0xf8, 0x79, 0x43, 0x20, 0x1c, 0xf8, 0xf7, - 0xde, 0xf8, 0x08, 0x48, 0x41, 0x61, 0x20, 0x1c, - 0x00, 0x99, 0x3c, 0x00, 0x5c, 0x85, 0x00, 0x00, - 0xf8, 0xf7, 0xd8, 0xf8, 0x05, 0x48, 0x40, 0x69, - 0x0a, 0x18, 0xa2, 0x42, 0x01, 0xd2, 0x40, 0x18, - 0x01, 0xe0, 0x40, 0x18, 0x00, 0x1b, 0x80, 0x02, - 0x80, 0x19, 0xf8, 0xbd, 0xac, 0x7c, 0x01, 0x00, - 0x11, 0x67, 0x01, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, - 0x06, 0x1c, 0x14, 0x1c, 0x1d, 0x1c, 0x07, 0xf0, - 0xa1, 0xfc, 0x0e, 0x28, 0x09, 0xd1, 0x20, 0x1c, - 0x02, 0xf0, 0xfc, 0xfb, 0x3c, 0x00, 0x98, 0x85, - 0x00, 0x00, 0x00, 0x28, 0x04, 0xd0, 0x08, 0x48, - 0x00, 0x78, 0x02, 0xf0, 0xe4, 0xfb, 0x04, 0x1c, - 0x01, 0x21, 0x00, 0x2e, 0xac, 0x72, 0x00, 0xd0, - 0x39, 0x1c, 0x20, 0x1c, 0x02, 0xf0, 0x07, 0xfc, - 0x28, 0x60, 0x00, 0x20, 0x28, 0x72, 0x6c, 0x72, - 0xf8, 0xbd, 0x90, 0x57, 0x01, 0x00, 0x03, 0x1c, - 0x0a, 0x48, 0x10, 0xb5, 0x00, 0x24, 0x02, 0x1c, - 0xa0, 0x32, 0x03, 0xe0, 0x81, 0x88, 0x3c, 0x00, - 0xd4, 0x85, 0x00, 0x00, 0x99, 0x42, 0x09, 0xd2, - 0x20, 0x30, 0x82, 0x42, 0xf9, 0xd1, 0x00, 0x2c, - 0x04, 0xd1, 0x02, 0x21, 0x8e, 0x20, 0xf8, 0xf7, - 0x5d, 0xfe, 0x00, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0xd0, 0x5c, 0x01, 0x00, 0xff, 0xb5, 0x06, 0x1c, - 0x00, 0x20, 0x81, 0xb0, 0x10, 0x60, 0x1f, 0x1c, - 0x01, 0x25, 0x14, 0x1c, 0x30, 0x1c, 0xff, 0xf7, - 0x6d, 0xff, 0x05, 0x28, 0x12, 0xd2, 0x02, 0xa3, - 0x3c, 0x00, 0x10, 0x86, 0x00, 0x00, 0x1b, 0x5c, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x03, 0x03, - 0x03, 0x03, 0x08, 0x00, 0x39, 0x1c, 0x30, 0x1c, - 0xff, 0xf7, 0x55, 0xff, 0x03, 0xe0, 0x02, 0x98, - 0xf8, 0xf7, 0xeb, 0xf8, 0x01, 0x30, 0x20, 0x60, - 0x04, 0xe0, 0x05, 0x21, 0x87, 0x20, 0xf8, 0xf7, - 0x34, 0xfe, 0x00, 0x25, 0x20, 0x68, 0x80, 0x28, - 0x04, 0xd9, 0x06, 0x21, 0x87, 0x20, 0xf8, 0xf7, - 0x2c, 0xfe, 0x3c, 0x00, 0x4c, 0x86, 0x00, 0x00, - 0x00, 0x25, 0x28, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, - 0x70, 0xb5, 0x17, 0x4c, 0x60, 0x6c, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x1d, 0xe0, 0x16, 0x4e, - 0x14, 0x4d, 0x31, 0x88, 0xa0, 0x6c, 0x00, 0x28, - 0x08, 0xd0, 0x28, 0x78, 0x81, 0x42, 0x05, 0xd9, - 0xf8, 0xf7, 0x4c, 0xf8, 0x01, 0x38, 0xfa, 0xf7, - 0x51, 0xfe, 0x0e, 0xe0, 0xe0, 0x6c, 0x00, 0x28, - 0x0a, 0xd0, 0x00, 0x20, 0x3c, 0x00, 0x88, 0x86, - 0x00, 0x00, 0xfa, 0xf7, 0x4a, 0xfe, 0x29, 0x78, - 0x32, 0x88, 0x91, 0x42, 0x04, 0xd9, 0x90, 0x42, - 0x02, 0xd9, 0x10, 0x1c, 0x00, 0xe0, 0x08, 0x1c, - 0xfa, 0xf7, 0xdf, 0xfd, 0xe1, 0x6b, 0x44, 0x1a, - 0x0a, 0xf0, 0x81, 0xfb, 0x20, 0x1a, 0x00, 0xd5, - 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x44, 0x7d, - 0x01, 0x00, 0xf8, 0x60, 0x01, 0x00, 0xfc, 0x60, - 0x01, 0x00, 0xff, 0xb5, 0x27, 0x4e, 0x3c, 0x00, - 0xc4, 0x86, 0x00, 0x00, 0x04, 0x1c, 0xb0, 0x79, - 0x0f, 0x1c, 0x15, 0x1c, 0x81, 0xb0, 0x00, 0x90, - 0x0a, 0xf0, 0x6c, 0xfb, 0xc1, 0x19, 0x23, 0x48, - 0x07, 0x68, 0x00, 0x2f, 0x05, 0xd1, 0x0a, 0x21, - 0x80, 0x20, 0xf8, 0xf7, 0xdf, 0xfd, 0x05, 0xb0, - 0xf0, 0xbd, 0x1e, 0x48, 0x40, 0x68, 0x84, 0x46, - 0x00, 0x28, 0x01, 0xd1, 0x00, 0x22, 0x0e, 0xe0, - 0x82, 0x68, 0x03, 0x68, 0xab, 0x42, 0x07, 0xd1, - 0x3c, 0x00, 0x00, 0x87, 0x00, 0x00, 0x03, 0x79, - 0xa3, 0x42, 0x04, 0xd1, 0x0b, 0x21, 0x80, 0x20, - 0xf8, 0xf7, 0xcb, 0xfd, 0x23, 0xe0, 0xc0, 0x68, - 0x00, 0x28, 0xf1, 0xd1, 0x13, 0x4b, 0xf8, 0x68, - 0x18, 0x60, 0x3d, 0x60, 0x3c, 0x71, 0xb9, 0x60, - 0x04, 0x98, 0x8d, 0x1a, 0x38, 0x61, 0x60, 0x46, - 0x00, 0x23, 0x05, 0xe0, 0x84, 0x68, 0xa4, 0x1a, - 0xac, 0x42, 0x03, 0xda, 0x03, 0x1c, 0xc0, 0x68, - 0x00, 0x28, 0x3c, 0x00, 0x3c, 0x87, 0x00, 0x00, - 0xf7, 0xd1, 0xf8, 0x60, 0x00, 0x2b, 0x08, 0xd1, - 0x07, 0x48, 0x3b, 0x1c, 0x47, 0x60, 0x08, 0x48, - 0x06, 0x4a, 0x00, 0x88, 0x0a, 0xf0, 0x8a, 0xfb, - 0x00, 0xe0, 0xdf, 0x60, 0x00, 0x98, 0xb0, 0x71, - 0xc3, 0xe7, 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, - 0x7c, 0x5d, 0x01, 0x00, 0x21, 0x38, 0x01, 0x00, - 0x2c, 0x74, 0x01, 0x00, 0xf3, 0xb5, 0x83, 0xb0, - 0x04, 0x1c, 0x09, 0xd0, 0x3c, 0x00, 0x78, 0x87, - 0x00, 0x00, 0x20, 0x1c, 0x04, 0x99, 0x09, 0xf0, - 0x8e, 0xfb, 0x00, 0x28, 0x03, 0xd0, 0x20, 0x1c, - 0x30, 0x30, 0x05, 0xb0, 0xf0, 0xbd, 0x0a, 0xf0, - 0x0e, 0xfb, 0x1e, 0x4a, 0x00, 0x26, 0x04, 0x9f, - 0x01, 0x96, 0x00, 0x90, 0x02, 0x92, 0x02, 0x9c, - 0x00, 0x25, 0x39, 0x1c, 0x20, 0x1c, 0x14, 0x30, - 0x02, 0xf0, 0xc5, 0xfa, 0x00, 0x28, 0x01, 0xd0, - 0x26, 0x1c, 0x03, 0xe0, 0x01, 0x35, 0x3c, 0x00, - 0xb4, 0x87, 0x00, 0x00, 0x1c, 0x34, 0x04, 0x2d, - 0xf2, 0xd3, 0x00, 0x2e, 0x22, 0xd1, 0x01, 0x98, - 0x13, 0x4f, 0x01, 0x30, 0x01, 0x90, 0x02, 0x28, - 0xe8, 0xd3, 0x01, 0x21, 0xc9, 0x06, 0x02, 0x9a, - 0x00, 0x20, 0x13, 0x69, 0x00, 0x9c, 0xe3, 0x1a, - 0x8b, 0x42, 0x01, 0xdd, 0x19, 0x1c, 0x16, 0x1c, - 0x01, 0x30, 0x1c, 0x32, 0x04, 0x28, 0xf4, 0xd3, - 0x30, 0x68, 0x00, 0x28, 0x01, 0xd0, 0xf8, 0xf7, - 0x3c, 0x00, 0xf0, 0x87, 0x00, 0x00, 0xd3, 0xfe, - 0x30, 0x1c, 0xfd, 0xf7, 0x4a, 0xff, 0x30, 0x1c, - 0x14, 0x30, 0x06, 0x22, 0x04, 0x99, 0xf7, 0xf7, - 0x7a, 0xfe, 0x00, 0x9c, 0x30, 0x1c, 0x34, 0x61, - 0xbd, 0xe7, 0x30, 0x6a, 0x01, 0x00, 0x34, 0x42, - 0x01, 0x00, 0x09, 0x49, 0x10, 0xb5, 0x4c, 0x69, - 0x03, 0xe0, 0xe1, 0x68, 0x81, 0x42, 0x03, 0xd0, - 0x24, 0x68, 0x00, 0x2c, 0xf9, 0xd1, 0x01, 0xe0, - 0x00, 0x2c, 0x3c, 0x00, 0x2c, 0x88, 0x00, 0x00, - 0x03, 0xd1, 0x02, 0x21, 0x02, 0x20, 0xf8, 0xf7, - 0x37, 0xfd, 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, - 0xfc, 0x5a, 0x01, 0x00, 0x10, 0xb5, 0xc3, 0x07, - 0x06, 0xd5, 0x08, 0x4b, 0x5c, 0x69, 0x0c, 0x43, - 0x5c, 0x61, 0x1c, 0x7e, 0x14, 0x43, 0x1c, 0x76, - 0x80, 0x07, 0x06, 0xd5, 0x04, 0x48, 0x43, 0x69, - 0x19, 0x43, 0x41, 0x61, 0x01, 0x7e, 0x11, 0x43, - 0x01, 0x76, 0x10, 0xbd, 0x3c, 0x00, 0x68, 0x88, - 0x00, 0x00, 0xfc, 0x57, 0x01, 0x00, 0x18, 0x58, - 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x16, 0x1c, 0x00, 0xf0, 0x08, 0xf8, 0xa0, 0x07, - 0xc0, 0x17, 0x01, 0x30, 0x32, 0x1c, 0x29, 0x1c, - 0x00, 0xf0, 0x21, 0xf8, 0x70, 0xbd, 0x10, 0xb5, - 0xc3, 0x07, 0x06, 0xd5, 0x08, 0x4b, 0x5c, 0x69, - 0x8c, 0x43, 0x5c, 0x61, 0x1c, 0x7e, 0x94, 0x43, - 0x1c, 0x76, 0x80, 0x07, 0x06, 0xd5, 0x3c, 0x00, - 0xa4, 0x88, 0x00, 0x00, 0x04, 0x48, 0x43, 0x69, - 0x8b, 0x43, 0x43, 0x61, 0x01, 0x7e, 0x91, 0x43, - 0x01, 0x76, 0x10, 0xbd, 0xfc, 0x57, 0x01, 0x00, - 0x18, 0x58, 0x01, 0x00, 0x03, 0x22, 0x11, 0x1f, - 0x80, 0xb5, 0x01, 0x20, 0x00, 0xf0, 0x02, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x30, 0xb5, 0x15, 0x1c, - 0x0c, 0x1c, 0x00, 0x28, 0x87, 0xb0, 0x02, 0xd0, - 0x1c, 0x22, 0x22, 0x49, 0x01, 0xe0, 0x22, 0x49, - 0x3c, 0x00, 0xe0, 0x88, 0x00, 0x00, 0x1c, 0x22, - 0x68, 0x46, 0xf7, 0xf7, 0x64, 0xfe, 0x05, 0x99, - 0x00, 0xab, 0x1a, 0x7e, 0x8c, 0x43, 0x20, 0x1c, - 0x95, 0x43, 0x02, 0x9a, 0x29, 0x1c, 0x02, 0x40, - 0x02, 0x92, 0x01, 0x9a, 0x02, 0x40, 0x01, 0x92, - 0x00, 0x9a, 0x02, 0x40, 0x00, 0x92, 0x03, 0x9a, - 0x02, 0x40, 0x03, 0x92, 0x98, 0x7c, 0x08, 0x40, - 0x98, 0x74, 0x58, 0x7c, 0x08, 0x40, 0x58, 0x74, - 0x18, 0x7c, 0x3c, 0x00, 0x1c, 0x89, 0x00, 0x00, - 0x08, 0x40, 0x18, 0x74, 0xd8, 0x7c, 0x08, 0x40, - 0xd8, 0x74, 0x02, 0x99, 0x10, 0x48, 0x41, 0x61, - 0x01, 0xaa, 0x06, 0xca, 0x91, 0x43, 0x81, 0x61, - 0x81, 0x68, 0x01, 0x9a, 0x11, 0x43, 0x81, 0x60, - 0x81, 0x68, 0x00, 0x9a, 0x91, 0x43, 0x81, 0x60, - 0x00, 0xaa, 0x06, 0xca, 0x11, 0x43, 0x42, 0x68, - 0x11, 0x43, 0x41, 0x60, 0x41, 0x68, 0x03, 0x9a, - 0x91, 0x43, 0x41, 0x60, 0x3c, 0x00, 0x58, 0x89, - 0x00, 0x00, 0x04, 0xa8, 0x0b, 0xf0, 0x01, 0xf8, - 0x07, 0xb0, 0x30, 0xbd, 0x00, 0x00, 0xfc, 0x57, - 0x01, 0x00, 0x18, 0x58, 0x01, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x01, 0x1c, - 0x01, 0x20, 0x08, 0xf0, 0xe0, 0xf9, 0x00, 0x2c, - 0x02, 0xd0, 0x03, 0xf0, 0x1c, 0xff, 0x10, 0xbd, - 0xfe, 0xf7, 0xd1, 0xfc, 0x10, 0xbd, 0xf0, 0xb5, - 0x0c, 0x1c, 0x01, 0x0e, 0x01, 0x23, 0x3c, 0x00, - 0x94, 0x89, 0x00, 0x00, 0x1b, 0x06, 0x09, 0x06, - 0x99, 0x42, 0x9f, 0xb0, 0x28, 0xd1, 0x17, 0x49, - 0x08, 0x40, 0x00, 0x21, 0x1a, 0x28, 0x00, 0xd3, - 0x02, 0x21, 0x00, 0x29, 0x19, 0xd1, 0xc5, 0x00, - 0x13, 0x4f, 0x10, 0xa8, 0xee, 0x19, 0xb2, 0x88, - 0x21, 0x68, 0xf7, 0xf7, 0x9d, 0xfd, 0x20, 0x1c, - 0xf8, 0xf7, 0xea, 0xfd, 0x7a, 0x59, 0x01, 0xa9, - 0x10, 0xa8, 0xf7, 0xf7, 0x07, 0xfd, 0x00, 0x28, - 0x3c, 0x00, 0xd0, 0x89, 0x00, 0x00, 0x05, 0xd0, - 0x10, 0x98, 0x01, 0xa9, 0x01, 0x90, 0xb0, 0x79, - 0x00, 0xf0, 0x9d, 0xf8, 0x1f, 0xb0, 0xf0, 0xbd, - 0x2a, 0x20, 0xf8, 0xf7, 0x5e, 0xfc, 0x20, 0x1c, - 0xf8, 0xf7, 0xd5, 0xfd, 0xf6, 0xe7, 0x03, 0x21, - 0x2a, 0x20, 0xf8, 0xf7, 0x56, 0xfc, 0xf1, 0xe7, - 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00, 0x24, 0x45, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x80, 0x28, - 0x02, 0xd0, 0x3c, 0x00, 0x0c, 0x8a, 0x00, 0x00, - 0x81, 0x28, 0x08, 0xd1, 0x03, 0xe0, 0x20, 0x1c, - 0x00, 0xf0, 0x06, 0xf9, 0x10, 0xbd, 0x20, 0x1c, - 0xf8, 0xf7, 0xbc, 0xfd, 0x10, 0xbd, 0x03, 0x21, - 0x2c, 0x20, 0xf8, 0xf7, 0x3d, 0xfc, 0xf6, 0xe7, - 0xf0, 0xb5, 0x0c, 0x1c, 0x00, 0x21, 0x8b, 0xb0, - 0x0a, 0x91, 0x01, 0x0e, 0x01, 0x23, 0x1b, 0x06, - 0x09, 0x06, 0x99, 0x42, 0x2a, 0xd1, 0x18, 0x49, - 0x08, 0x40, 0x06, 0x1c, 0x3c, 0x00, 0x48, 0x8a, - 0x00, 0x00, 0x06, 0x2e, 0x01, 0xd3, 0x07, 0x21, - 0x24, 0xe0, 0x20, 0x89, 0xf8, 0xf7, 0xf1, 0xfe, - 0x22, 0x89, 0x21, 0x68, 0x05, 0x1c, 0xf7, 0xf7, - 0x4c, 0xfd, 0x20, 0x1c, 0xf8, 0xf7, 0x99, 0xfd, - 0xf4, 0x00, 0x0f, 0x4e, 0x28, 0x1c, 0x0a, 0xaa, - 0x69, 0x46, 0x33, 0x59, 0xf7, 0xf7, 0xb4, 0xfc, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, 0x07, 0xd1, - 0x28, 0x68, 0x69, 0x46, 0x00, 0x90, 0x3c, 0x00, - 0x84, 0x8a, 0x00, 0x00, 0xa0, 0x19, 0x00, 0x79, - 0x0a, 0x9a, 0x00, 0xf0, 0x09, 0xf9, 0x28, 0x1c, - 0xf8, 0xf7, 0xb0, 0xfe, 0x0b, 0xb0, 0xf0, 0xbd, - 0x01, 0x21, 0x2b, 0x20, 0xf8, 0xf7, 0x02, 0xfc, - 0xf8, 0xe7, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x00, - 0x28, 0x46, 0x01, 0x00, 0x0a, 0x1c, 0x01, 0x0e, - 0x01, 0x23, 0x1b, 0x06, 0x09, 0x06, 0x99, 0x42, - 0x80, 0xb5, 0x08, 0xd0, 0x5b, 0x00, 0x99, 0x42, - 0x3c, 0x00, 0xc0, 0x8a, 0x00, 0x00, 0x0b, 0xd1, - 0x00, 0x06, 0x00, 0x0e, 0x11, 0x1c, 0x00, 0xf0, - 0x0e, 0xf9, 0x80, 0xbd, 0x05, 0x49, 0x01, 0x40, - 0x10, 0x1c, 0x05, 0xf0, 0xa2, 0xf9, 0x80, 0xbd, - 0x01, 0x21, 0x2d, 0x20, 0xf8, 0xf7, 0xe1, 0xfb, - 0x80, 0xbd, 0x7f, 0xff, 0xff, 0x00, 0x80, 0xb5, - 0x01, 0x1c, 0x0f, 0x20, 0x00, 0xf0, 0x13, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x01, 0x1c, 0x04, 0x20, - 0x00, 0xf0, 0x3c, 0x00, 0xfc, 0x8a, 0x00, 0x00, - 0x0d, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x01, 0x1c, - 0x17, 0x20, 0x00, 0xf0, 0x07, 0xf8, 0x80, 0xbd, - 0x80, 0xb5, 0x01, 0x1c, 0x01, 0x20, 0x00, 0xf0, - 0x01, 0xf8, 0x80, 0xbd, 0xf8, 0xb5, 0x04, 0x1c, - 0x06, 0x1c, 0x80, 0x20, 0x84, 0x43, 0x0f, 0x1c, - 0x19, 0x2c, 0x01, 0xd3, 0xf8, 0xf7, 0xea, 0xfb, - 0x08, 0x48, 0x04, 0x5d, 0x21, 0x1c, 0x00, 0x20, - 0xf8, 0xf7, 0x50, 0xfd, 0x3c, 0x00, 0x38, 0x8b, - 0x00, 0x00, 0x05, 0x1c, 0x22, 0x1c, 0x39, 0x1c, - 0x00, 0x68, 0xf7, 0xf7, 0xda, 0xfc, 0x2a, 0x1c, - 0x31, 0x1c, 0x07, 0x20, 0xf8, 0xf7, 0x11, 0xf9, - 0xf8, 0xbd, 0xf4, 0x45, 0x01, 0x00, 0xf8, 0xb5, - 0x0d, 0x1c, 0x16, 0x1c, 0x04, 0x1c, 0x1f, 0x1c, - 0x08, 0x21, 0x00, 0x20, 0xf8, 0xf7, 0x39, 0xfd, - 0x14, 0x22, 0x01, 0x68, 0x0e, 0x4b, 0x72, 0x43, - 0xd2, 0x18, 0x0c, 0x71, 0x12, 0x7c, 0x3c, 0x00, - 0x74, 0x8b, 0x00, 0x00, 0x4a, 0x71, 0x0d, 0x60, - 0x0b, 0x4a, 0x8f, 0x71, 0x12, 0x68, 0x7f, 0x2a, - 0x03, 0xd9, 0x52, 0x05, 0x52, 0x0e, 0x80, 0x23, - 0x1a, 0x43, 0xca, 0x71, 0x07, 0x4a, 0x00, 0x23, - 0x51, 0x68, 0x01, 0x31, 0x51, 0x60, 0x02, 0x1c, - 0x81, 0x21, 0x00, 0x20, 0xf8, 0xf7, 0x08, 0xf9, - 0xf8, 0xbd, 0x00, 0x00, 0x74, 0x40, 0x01, 0x00, - 0xfc, 0x5a, 0x01, 0x00, 0x80, 0x6e, 0x01, 0x00, - 0x3c, 0x00, 0xb0, 0x8b, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x08, 0x21, 0x00, 0x20, 0xf8, 0xf7, - 0x0e, 0xfd, 0x21, 0x8b, 0xe2, 0x7d, 0x05, 0x1c, - 0x09, 0x05, 0x52, 0x07, 0x52, 0x0f, 0x49, 0x0c, - 0x00, 0x68, 0x11, 0x43, 0x81, 0x80, 0xa1, 0x7d, - 0x14, 0x23, 0x0e, 0x4a, 0x59, 0x43, 0x89, 0x18, - 0x09, 0x7c, 0xc1, 0x71, 0xe1, 0x6a, 0x01, 0x60, - 0xe1, 0x68, 0x28, 0x1c, 0xf8, 0xf7, 0x17, 0xfc, - 0x0a, 0x48, 0x3c, 0x00, 0xec, 0x8b, 0x00, 0x00, - 0x00, 0x68, 0x00, 0x28, 0x01, 0xd0, 0xf7, 0xf7, - 0xf1, 0xfb, 0x07, 0x49, 0x04, 0x31, 0x88, 0x68, - 0x01, 0x30, 0x88, 0x60, 0x00, 0x21, 0x2a, 0x1c, - 0x00, 0x20, 0x23, 0x6b, 0xf8, 0xf7, 0xd2, 0xf8, - 0x01, 0x20, 0xb0, 0xbd, 0x74, 0x40, 0x01, 0x00, - 0x7c, 0x6e, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68, - 0x70, 0x47, 0x00, 0x00, 0x80, 0x6e, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0x28, 0x8c, - 0x00, 0x00, 0x92, 0xb0, 0x01, 0x68, 0x68, 0x46, - 0x08, 0x22, 0xf7, 0xf7, 0x62, 0xfc, 0x00, 0xab, - 0x98, 0x88, 0x40, 0x07, 0x40, 0x0f, 0xd8, 0x77, - 0x98, 0x88, 0x40, 0x04, 0x00, 0x0d, 0x18, 0x84, - 0xd8, 0x88, 0x58, 0x84, 0x00, 0x98, 0x0d, 0x90, - 0x05, 0x94, 0x20, 0x89, 0x08, 0x38, 0x20, 0x81, - 0x05, 0x98, 0x01, 0x68, 0x08, 0x31, 0x01, 0x60, - 0x00, 0x20, 0x0a, 0x90, 0x0c, 0x90, 0x3c, 0x00, - 0x64, 0x8c, 0x00, 0x00, 0x00, 0x21, 0x11, 0x20, - 0x09, 0xf0, 0x78, 0xfb, 0x05, 0x49, 0x06, 0x4a, - 0x08, 0x68, 0x01, 0x30, 0x08, 0x60, 0x02, 0x21, - 0x02, 0xa8, 0x01, 0xf0, 0xcd, 0xfc, 0x12, 0xb0, - 0x10, 0xbd, 0x00, 0x00, 0x80, 0x6e, 0x01, 0x00, - 0x55, 0x8b, 0x00, 0x00, 0x02, 0x1c, 0x01, 0x20, - 0x00, 0x06, 0x08, 0x43, 0x80, 0xb5, 0x2b, 0x21, - 0x0a, 0xf0, 0x8a, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x8c, 0x00, 0x00, 0xf7, 0xb5, - 0x04, 0x1c, 0x06, 0x1c, 0x80, 0x20, 0x84, 0x43, - 0x17, 0x1c, 0x06, 0x2c, 0x01, 0xd3, 0xf8, 0xf7, - 0x26, 0xfb, 0x0b, 0x48, 0x05, 0x5d, 0x29, 0x1c, - 0x00, 0x20, 0xf8, 0xf7, 0x8c, 0xfc, 0x04, 0x1c, - 0x00, 0x68, 0x01, 0x99, 0x2a, 0x1c, 0xf7, 0xf7, - 0x16, 0xfc, 0x39, 0x1c, 0x20, 0x1c, 0xf8, 0xf7, - 0xa2, 0xfb, 0x22, 0x1c, 0x31, 0x1c, 0x00, 0x23, - 0x02, 0x20, 0x3c, 0x00, 0xdc, 0x8c, 0x00, 0x00, - 0xf8, 0xf7, 0x68, 0xf8, 0xfe, 0xbd, 0x00, 0x00, - 0x20, 0x46, 0x01, 0x00, 0x0a, 0x1c, 0x01, 0x1c, - 0x80, 0xb5, 0x00, 0x23, 0x01, 0x20, 0xf8, 0xf7, - 0x5d, 0xf8, 0x80, 0xbd, 0xff, 0xb5, 0x9f, 0xb0, - 0x1f, 0x1c, 0x05, 0x1c, 0x0a, 0x30, 0x1e, 0x90, - 0x1c, 0xaa, 0x1d, 0xa9, 0x0a, 0xf0, 0x00, 0xff, - 0x00, 0x28, 0x71, 0xd0, 0x00, 0x2f, 0x09, 0xd0, - 0x0a, 0x21, 0x00, 0x20, 0x3c, 0x00, 0x18, 0x8d, - 0x00, 0x00, 0xf8, 0xf7, 0x5e, 0xfc, 0x06, 0x68, - 0x04, 0x1c, 0x30, 0x1d, 0xfa, 0xf7, 0xaf, 0xfa, - 0x05, 0xe0, 0x04, 0x21, 0x00, 0x20, 0xf8, 0xf7, - 0x54, 0xfc, 0x06, 0x68, 0x04, 0x1c, 0x28, 0x89, - 0x36, 0x49, 0x01, 0x22, 0x08, 0x80, 0x70, 0x80, - 0xe8, 0x88, 0x14, 0xa9, 0x30, 0x80, 0x19, 0xa8, - 0xfc, 0xf7, 0xf5, 0xfc, 0xfc, 0xf7, 0xff, 0xfb, - 0x01, 0x1c, 0xff, 0x31, 0x21, 0x31, 0x3c, 0x00, - 0x54, 0x8d, 0x00, 0x00, 0x20, 0x1c, 0x01, 0xf0, - 0xef, 0xf8, 0x19, 0xa9, 0x20, 0x1c, 0x01, 0xf0, - 0xeb, 0xf8, 0x14, 0xa9, 0x20, 0x1c, 0x01, 0xf0, - 0xe7, 0xf8, 0x20, 0x1c, 0x20, 0x99, 0xfd, 0xf7, - 0x4b, 0xfd, 0x00, 0x22, 0x02, 0x21, 0x01, 0xf0, - 0x33, 0xfd, 0x06, 0x1c, 0x1c, 0x99, 0x00, 0x20, - 0x88, 0x61, 0x30, 0x1c, 0xf8, 0xf7, 0x1c, 0xfa, - 0x00, 0x2e, 0x0b, 0xd0, 0x30, 0x7a, 0x00, 0x28, - 0x3c, 0x00, 0x90, 0x8d, 0x00, 0x00, 0x02, 0xd0, - 0x40, 0x21, 0x08, 0x43, 0x30, 0x72, 0x1c, 0x98, - 0x02, 0x22, 0x81, 0x69, 0x11, 0x43, 0x81, 0x61, - 0x04, 0xe0, 0x1c, 0x99, 0x02, 0x22, 0x88, 0x69, - 0x90, 0x43, 0x88, 0x61, 0x1d, 0xaa, 0x06, 0xca, - 0x01, 0xa8, 0x05, 0xf0, 0x58, 0xfb, 0x09, 0xa8, - 0x00, 0x2f, 0x02, 0xd0, 0x02, 0x22, 0x42, 0x72, - 0x01, 0xe0, 0x00, 0x21, 0x41, 0x72, 0x04, 0x94, - 0x01, 0xa8, 0x3c, 0x00, 0xcc, 0x8d, 0x00, 0x00, - 0x04, 0xf0, 0x7a, 0xfb, 0x01, 0x21, 0x1c, 0x98, - 0x08, 0xf0, 0xc8, 0xff, 0x00, 0x2f, 0x04, 0xd0, - 0x1c, 0x98, 0x01, 0x22, 0x81, 0x69, 0x11, 0x43, - 0x81, 0x61, 0xa8, 0x88, 0x1c, 0x9c, 0x01, 0xf0, - 0x9f, 0xfe, 0x02, 0x1c, 0x21, 0x1c, 0x00, 0xe0, - 0x04, 0xe0, 0x07, 0x48, 0x40, 0x88, 0x09, 0xf0, - 0x1f, 0xf8, 0x04, 0xe0, 0x3a, 0x1c, 0x00, 0x21, - 0x05, 0x20, 0xf9, 0xf7, 0x3c, 0x00, 0x08, 0x8e, - 0x00, 0x00, 0x9b, 0xf8, 0x00, 0x20, 0x23, 0xb0, - 0xf0, 0xbd, 0xfc, 0x60, 0x01, 0x00, 0x98, 0x7c, - 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, 0xc0, 0x68, - 0x05, 0x68, 0xa0, 0x1d, 0x01, 0xf0, 0x95, 0xff, - 0x00, 0x28, 0x45, 0xd0, 0x21, 0x1c, 0x14, 0x31, - 0x20, 0x1c, 0x6a, 0x46, 0x0a, 0xf0, 0x55, 0xfe, - 0x00, 0x28, 0x3d, 0xd0, 0xfc, 0xf7, 0x7d, 0xfa, - 0x00, 0x28, 0x39, 0xd1, 0x00, 0x98, 0x3c, 0x00, - 0x44, 0x8e, 0x00, 0x00, 0x4b, 0x21, 0x09, 0x5c, - 0x01, 0x29, 0x34, 0xd1, 0x04, 0x26, 0x09, 0xf0, - 0x19, 0xf9, 0x68, 0x88, 0x00, 0x28, 0x1b, 0xd1, - 0xa8, 0x88, 0x03, 0x21, 0x89, 0x03, 0x88, 0x43, - 0x15, 0x49, 0x00, 0x26, 0x08, 0x80, 0x01, 0x22, - 0x02, 0x21, 0x20, 0x69, 0x01, 0xf0, 0xb8, 0xfc, - 0x04, 0x1c, 0x14, 0xd0, 0x00, 0x98, 0x80, 0x69, - 0x80, 0x07, 0x10, 0xd5, 0xf8, 0xf7, 0x9a, 0xf9, - 0x3c, 0x00, 0x80, 0x8e, 0x00, 0x00, 0x20, 0x1c, - 0xf8, 0xf7, 0xdd, 0xf8, 0x00, 0x28, 0x09, 0xd1, - 0xf8, 0xf7, 0x7f, 0xf9, 0x01, 0x26, 0x00, 0x98, - 0x02, 0x22, 0x81, 0x69, 0x91, 0x43, 0x81, 0x61, - 0x00, 0x21, 0x01, 0xe0, 0x00, 0x98, 0x02, 0x21, - 0x08, 0xf0, 0x61, 0xff, 0x00, 0x98, 0x80, 0x69, - 0xa9, 0x88, 0xc2, 0x07, 0xd2, 0x0f, 0x30, 0x1c, - 0xf9, 0xf7, 0x45, 0xf8, 0xf8, 0xbd, 0xfa, 0x60, - 0x01, 0x00, 0x3c, 0x00, 0xbc, 0x8e, 0x00, 0x00, - 0x1c, 0xb5, 0x04, 0x69, 0x00, 0x23, 0x00, 0x22, - 0x00, 0x2c, 0x13, 0xd1, 0x4b, 0x24, 0x24, 0x5c, - 0x02, 0x2c, 0x03, 0xd1, 0x02, 0x29, 0x05, 0xd0, - 0x01, 0x22, 0x03, 0xe0, 0x02, 0x29, 0x01, 0xd1, - 0x01, 0x22, 0x01, 0x23, 0x00, 0x2a, 0x05, 0xd0, - 0x00, 0x90, 0x04, 0x20, 0x01, 0x93, 0x69, 0x46, - 0x09, 0xf0, 0x36, 0xfa, 0x1c, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x3c, 0x00, 0xf8, 0x8e, - 0x00, 0x00, 0xf2, 0x21, 0x0f, 0x20, 0x0c, 0x4d, - 0x0a, 0xf0, 0x99, 0xfb, 0x28, 0x78, 0x08, 0x28, - 0x0b, 0xd2, 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x07, 0x03, 0x03, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x00, 0x2c, 0x01, 0xd1, 0x05, 0xf0, - 0xbc, 0xfb, 0xb0, 0xbd, 0x01, 0x2c, 0xfc, 0xd1, - 0xff, 0x20, 0x07, 0xf0, 0x38, 0xfa, 0xb0, 0xbd, - 0x00, 0x00, 0x74, 0x66, 0x01, 0x00, 0x3c, 0x00, - 0x34, 0x8f, 0x00, 0x00, 0x8c, 0xb5, 0x05, 0x4a, - 0x00, 0xab, 0x11, 0x72, 0x00, 0x90, 0x19, 0x71, - 0x69, 0x46, 0x08, 0x20, 0x09, 0xf0, 0x0a, 0xfa, - 0x8c, 0xbd, 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, - 0xf3, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0x06, 0x27, - 0x85, 0xb0, 0x06, 0x68, 0x09, 0xf0, 0x26, 0xff, - 0x98, 0x49, 0x48, 0x63, 0x20, 0x69, 0x03, 0x21, - 0x01, 0xf0, 0x08, 0xfc, 0x96, 0x4d, 0x00, 0x28, - 0x3c, 0x00, 0x70, 0x8f, 0x00, 0x00, 0x4d, 0xd0, - 0x95, 0x49, 0x40, 0x31, 0x09, 0x79, 0x80, 0x78, - 0x81, 0x42, 0x47, 0xd1, 0x01, 0x21, 0x20, 0x69, - 0x01, 0xf0, 0xfb, 0xfb, 0x02, 0x90, 0x20, 0x69, - 0x32, 0x21, 0x01, 0xf0, 0xf6, 0xfb, 0x01, 0x90, - 0x02, 0x1c, 0x8d, 0x48, 0x02, 0x99, 0xfc, 0xf7, - 0x46, 0xff, 0x00, 0x28, 0x36, 0xd0, 0x00, 0x23, - 0x8a, 0x48, 0x02, 0x99, 0x01, 0x9a, 0xfc, 0xf7, - 0xe4, 0xfe, 0x3c, 0x00, 0xac, 0x8f, 0x00, 0x00, - 0x0b, 0x28, 0x2e, 0xd1, 0x86, 0x4a, 0x51, 0x88, - 0x70, 0x89, 0x41, 0x40, 0x03, 0x91, 0x0b, 0x1c, - 0x84, 0x49, 0x0b, 0x40, 0x25, 0xd1, 0x50, 0x80, - 0x03, 0x99, 0x17, 0x1c, 0x00, 0x29, 0x0b, 0xd0, - 0x03, 0x99, 0x48, 0x05, 0x02, 0xd5, 0x38, 0x1c, - 0xfc, 0xf7, 0x40, 0xfe, 0x03, 0x99, 0x88, 0x06, - 0x02, 0xd5, 0x38, 0x1c, 0xfc, 0xf7, 0x24, 0xfe, - 0x2a, 0x21, 0x20, 0x69, 0x3c, 0x00, 0xe8, 0x8f, - 0x00, 0x00, 0x01, 0xf0, 0xc8, 0xfb, 0x00, 0x28, - 0x0d, 0xd0, 0x80, 0x78, 0xe9, 0x69, 0x81, 0x42, - 0x09, 0xd0, 0xe8, 0x61, 0x38, 0x1c, 0xfc, 0xf7, - 0x16, 0xfe, 0x38, 0x1c, 0xfc, 0xf7, 0x07, 0xfe, - 0x38, 0x1c, 0xfc, 0xf7, 0x26, 0xfe, 0x00, 0x27, - 0x20, 0x1c, 0x20, 0x30, 0x04, 0x90, 0x40, 0x7a, - 0x08, 0x28, 0x71, 0xd1, 0x0a, 0xf0, 0xd1, 0xfc, - 0x00, 0x20, 0x68, 0x61, 0x00, 0x23, 0x3c, 0x00, - 0x24, 0x90, 0x00, 0x00, 0x2b, 0x61, 0xa8, 0x68, - 0x66, 0x49, 0x01, 0x30, 0xa8, 0x60, 0x30, 0x89, - 0x5c, 0x31, 0x88, 0x82, 0x01, 0xf0, 0x7a, 0xfd, - 0x62, 0x49, 0x5c, 0x31, 0x08, 0x61, 0x22, 0x6a, - 0x04, 0x98, 0x18, 0x21, 0x00, 0x7a, 0x01, 0xf0, - 0x33, 0xfe, 0xe1, 0x6a, 0x40, 0x18, 0x03, 0x90, - 0x5c, 0x48, 0x00, 0x6a, 0x00, 0x28, 0x0d, 0xd0, - 0x00, 0x2f, 0x0b, 0xd1, 0x59, 0x48, 0x01, 0x23, - 0x3c, 0x00, 0x60, 0x90, 0x00, 0x00, 0x5c, 0x30, - 0x01, 0x68, 0x1b, 0x07, 0x00, 0x22, 0x30, 0x68, - 0x09, 0xf0, 0x49, 0xff, 0x00, 0x28, 0x00, 0xd1, - 0x05, 0x27, 0x00, 0x21, 0xa0, 0x6b, 0x0a, 0xf0, - 0xce, 0xfc, 0x00, 0x21, 0x20, 0x6c, 0x0a, 0xf0, - 0xe8, 0xfc, 0x4f, 0x4b, 0x03, 0xce, 0x03, 0x9a, - 0x5c, 0x33, 0xfc, 0xf7, 0x88, 0xfd, 0x00, 0x20, - 0x4c, 0x4e, 0x05, 0x21, 0xb0, 0x63, 0x20, 0x69, - 0x01, 0xf0, 0x3c, 0x00, 0x9c, 0x90, 0x00, 0x00, - 0x6f, 0xfb, 0x01, 0x1c, 0x01, 0xd1, 0xf0, 0x60, - 0x1c, 0xe0, 0x01, 0x20, 0xf0, 0x60, 0x88, 0x78, - 0x45, 0x4a, 0x01, 0x32, 0x10, 0x70, 0xc8, 0x78, - 0x50, 0x70, 0x47, 0x4a, 0x10, 0x70, 0x30, 0x69, - 0x00, 0x28, 0x0a, 0xd0, 0x4a, 0x78, 0x08, 0x79, - 0x05, 0x31, 0x09, 0xf0, 0xdd, 0xfa, 0x31, 0x69, - 0xf7, 0xf7, 0x85, 0xf9, 0xf0, 0x68, 0x00, 0x28, - 0x04, 0xd0, 0x3b, 0x4a, 0x3c, 0x00, 0xd8, 0x90, - 0x00, 0x00, 0x01, 0x32, 0x10, 0x78, 0x00, 0x28, - 0x08, 0xd1, 0x00, 0x20, 0xa8, 0x61, 0x71, 0x6a, - 0x00, 0x29, 0x03, 0xd0, 0x20, 0x1c, 0x14, 0x30, - 0xf7, 0xf7, 0x74, 0xf9, 0x34, 0x4a, 0x5c, 0x32, - 0x10, 0x69, 0x31, 0x6a, 0x41, 0x18, 0x00, 0xe0, - 0x20, 0xe0, 0x0a, 0x23, 0xd0, 0x68, 0x0a, 0x22, - 0x09, 0xf0, 0xfb, 0xfe, 0x00, 0x28, 0x07, 0xd0, - 0x2d, 0x4a, 0x31, 0x6a, 0x5c, 0x32, 0x3c, 0x00, - 0x14, 0x91, 0x00, 0x00, 0xd0, 0x68, 0x40, 0x1a, - 0x11, 0x69, 0x40, 0x1a, 0x70, 0x60, 0x29, 0x4a, - 0x5c, 0x32, 0xd0, 0x68, 0x30, 0x62, 0xf0, 0x69, - 0x00, 0x28, 0x04, 0xd0, 0xfa, 0xf7, 0x00, 0xfd, - 0x01, 0x20, 0xfa, 0xf7, 0xa1, 0xfc, 0xfa, 0xf7, - 0x81, 0xfc, 0x27, 0x48, 0x00, 0x68, 0x03, 0xf0, - 0x07, 0xf9, 0x06, 0x98, 0x00, 0x28, 0x03, 0xd1, - 0x1e, 0x4e, 0x00, 0x23, 0xb3, 0x60, 0x16, 0xe0, - 0x3c, 0x00, 0x50, 0x91, 0x00, 0x00, 0x1c, 0x4e, - 0x01, 0x20, 0xb0, 0x60, 0x06, 0x98, 0x01, 0x68, - 0x40, 0x68, 0xb0, 0x65, 0x19, 0x48, 0x71, 0x65, - 0x54, 0x30, 0xc0, 0x88, 0x00, 0x28, 0x09, 0xd0, - 0xb1, 0x69, 0x00, 0x29, 0x06, 0xd0, 0x01, 0xf0, - 0xdc, 0xfc, 0x01, 0x1c, 0xe0, 0x6a, 0xb2, 0x69, - 0xf7, 0xf7, 0x2f, 0xf9, 0x00, 0x2f, 0x15, 0xd1, - 0x12, 0x48, 0x01, 0x69, 0x00, 0x29, 0x08, 0xd1, - 0x01, 0x21, 0x3c, 0x00, 0x8c, 0x91, 0x00, 0x00, - 0x01, 0x61, 0x2a, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0x00, 0x21, 0x00, 0x20, 0xf7, 0xf7, 0x20, 0xf9, - 0x09, 0x49, 0x00, 0x23, 0xcb, 0x62, 0x2b, 0x61, - 0x6b, 0x61, 0x06, 0xf0, 0xb5, 0xf8, 0x07, 0xb0, - 0xf0, 0xbd, 0x6b, 0x68, 0x06, 0x48, 0x00, 0x2b, - 0xf9, 0xd0, 0x02, 0x1d, 0x11, 0x1c, 0x38, 0x1c, - 0xf7, 0xf7, 0x0f, 0xf9, 0xf3, 0xe7, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x3c, 0x00, 0xc8, 0x91, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xf4, 0x67, - 0x01, 0x00, 0x03, 0x08, 0x00, 0x00, 0xf8, 0x60, - 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, 0x08, 0xb5, - 0xf8, 0xf7, 0x2f, 0xfd, 0x00, 0x90, 0x00, 0xab, - 0x18, 0x88, 0x00, 0x28, 0x0c, 0xd0, 0x05, 0xf0, - 0x50, 0xff, 0x00, 0xab, 0x59, 0x88, 0x18, 0x88, - 0x05, 0xf0, 0x6d, 0xf9, 0xfe, 0xf7, 0x97, 0xf8, - 0x03, 0x20, 0xfb, 0xf7, 0x0e, 0xf8, 0x3c, 0x00, - 0x04, 0x92, 0x00, 0x00, 0x08, 0xbd, 0x01, 0x20, - 0xff, 0xf7, 0xb2, 0xfb, 0x00, 0x20, 0x08, 0xf0, - 0x8d, 0xfe, 0xf7, 0xe7, 0xf8, 0xb5, 0x4f, 0x49, - 0x8c, 0x68, 0x20, 0x6a, 0x00, 0x68, 0x05, 0x78, - 0xfc, 0xf7, 0x68, 0xfa, 0x00, 0x28, 0x12, 0xd0, - 0x2a, 0x07, 0x92, 0x0f, 0x01, 0x21, 0x01, 0x2a, - 0x00, 0xd0, 0x00, 0x21, 0x00, 0x29, 0x03, 0xd0, - 0x29, 0x06, 0x09, 0x0f, 0x0b, 0x29, 0x06, 0xd1, - 0x3c, 0x00, 0x40, 0x92, 0x00, 0x00, 0x2a, 0x21, - 0x09, 0x5d, 0x08, 0x18, 0x90, 0x30, 0x00, 0x7b, - 0xf9, 0xf7, 0x0d, 0xfc, 0x41, 0x4f, 0x3c, 0x3f, - 0xb8, 0x6b, 0x79, 0x6b, 0xf7, 0xf7, 0xc0, 0xf8, - 0xa0, 0x6c, 0x00, 0x26, 0xc6, 0x60, 0x60, 0x6b, - 0x80, 0x08, 0x04, 0xd0, 0xb8, 0x69, 0x01, 0x30, - 0xb8, 0x61, 0x06, 0xf0, 0xdc, 0xf9, 0x39, 0x4d, - 0x28, 0x69, 0x80, 0x05, 0x80, 0x0f, 0x08, 0xd1, - 0x78, 0x69, 0x3c, 0x00, 0x7c, 0x92, 0x00, 0x00, - 0x04, 0x21, 0x01, 0x30, 0x78, 0x61, 0x60, 0x6b, - 0x40, 0x08, 0x40, 0x00, 0x08, 0x43, 0x60, 0x63, - 0xb8, 0x6a, 0x00, 0x28, 0x03, 0xd0, 0x60, 0x6b, - 0x08, 0x21, 0x08, 0x43, 0x60, 0x63, 0x20, 0x1c, - 0x20, 0x30, 0x00, 0x90, 0x39, 0x68, 0xf7, 0xf7, - 0x9a, 0xf8, 0x03, 0x20, 0x00, 0x02, 0x28, 0x60, - 0x2b, 0x49, 0x88, 0x68, 0xa0, 0x63, 0xc8, 0x68, - 0xe0, 0x63, 0x08, 0x79, 0x3c, 0x00, 0xb8, 0x92, - 0x00, 0x00, 0xc0, 0x06, 0xc0, 0x0e, 0x25, 0x1c, - 0x40, 0x35, 0x28, 0x71, 0x48, 0x79, 0x68, 0x71, - 0x23, 0x48, 0x3c, 0x38, 0x46, 0x62, 0x00, 0x98, - 0x80, 0x7a, 0x01, 0xf0, 0x5e, 0xfd, 0x00, 0x21, - 0x00, 0x28, 0x21, 0x4a, 0x01, 0xd0, 0x11, 0x78, - 0x03, 0xe0, 0x93, 0x78, 0xdb, 0x07, 0x00, 0xd5, - 0x51, 0x78, 0xa9, 0x71, 0x00, 0x28, 0x04, 0xd0, - 0x1b, 0x49, 0x14, 0x31, 0x08, 0x68, 0x3c, 0x00, - 0xf4, 0x92, 0x00, 0x00, 0x20, 0x64, 0x00, 0xe0, - 0x6e, 0x80, 0xb8, 0x6a, 0xc0, 0x07, 0x02, 0xd5, - 0xff, 0x20, 0x28, 0x71, 0xae, 0x71, 0xe6, 0x61, - 0xb8, 0x68, 0x01, 0x30, 0xb8, 0x60, 0x79, 0x68, - 0x88, 0x42, 0x03, 0xd0, 0x0b, 0x21, 0x85, 0x20, - 0xf7, 0xf7, 0xc4, 0xff, 0x0d, 0x49, 0x88, 0x68, - 0xc0, 0x6c, 0x88, 0x60, 0xfb, 0x6a, 0x00, 0x2b, - 0x0c, 0xd0, 0x0e, 0x4a, 0xd4, 0x7b, 0x00, 0x2b, - 0x3c, 0x00, 0x30, 0x93, 0x00, 0x00, 0x02, 0xdd, - 0x7f, 0x2c, 0x05, 0xd2, 0x01, 0xe0, 0x00, 0x2c, - 0x02, 0xd0, 0xd4, 0x7b, 0xe3, 0x18, 0xd3, 0x73, - 0xfe, 0x62, 0xc9, 0x68, 0x88, 0x42, 0x03, 0xd1, - 0x05, 0x21, 0x85, 0x20, 0xf7, 0xf7, 0xa9, 0xff, - 0xf8, 0xbd, 0x24, 0x7e, 0x01, 0x00, 0x00, 0x40, - 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0xe8, 0x80, - 0x07, 0x00, 0x40, 0x00, 0x07, 0x00, 0xfe, 0xb5, - 0x30, 0x4c, 0x3c, 0x00, 0x6c, 0x93, 0x00, 0x00, - 0xa0, 0x6b, 0x21, 0x6b, 0xf7, 0xf7, 0x33, 0xf8, - 0x2d, 0x49, 0x3c, 0x31, 0x8e, 0x68, 0x70, 0x8b, - 0x06, 0x28, 0x04, 0xd2, 0xe0, 0x69, 0x01, 0x30, - 0xe0, 0x61, 0x0e, 0x20, 0x30, 0x85, 0x28, 0x49, - 0x3c, 0x31, 0x0d, 0x68, 0x00, 0x2d, 0x03, 0xd1, - 0x03, 0x21, 0x85, 0x20, 0xf7, 0xf7, 0x84, 0xff, - 0x24, 0x48, 0x45, 0x61, 0x35, 0x62, 0x31, 0x8d, - 0xef, 0x68, 0x04, 0x39, 0x3c, 0x00, 0xa8, 0x93, - 0x00, 0x00, 0x0c, 0x04, 0x01, 0x21, 0x02, 0x91, - 0x24, 0x0c, 0x00, 0x21, 0x01, 0x91, 0x1d, 0x48, - 0x3c, 0x30, 0x80, 0x8a, 0xa0, 0x42, 0x03, 0xd3, - 0x2c, 0x81, 0xee, 0x60, 0x00, 0x24, 0x0b, 0xe0, - 0x00, 0x2f, 0x04, 0xd1, 0x03, 0x21, 0x85, 0x20, - 0xf7, 0xf7, 0x69, 0xff, 0x04, 0xe0, 0x3d, 0x1c, - 0x20, 0x1a, 0x04, 0x04, 0xff, 0x68, 0x24, 0x0c, - 0x02, 0x98, 0x00, 0x28, 0x04, 0xd0, 0x3c, 0x00, - 0xe4, 0x93, 0x00, 0x00, 0x12, 0x49, 0x01, 0x20, - 0x08, 0x61, 0x00, 0x20, 0x02, 0x90, 0x01, 0x98, - 0x01, 0x30, 0x01, 0x90, 0x00, 0x2c, 0xdd, 0xd1, - 0x0c, 0x48, 0x0c, 0x4c, 0x3c, 0x30, 0x07, 0x60, - 0x01, 0x98, 0x30, 0x65, 0xb5, 0x64, 0x30, 0x6a, - 0x00, 0x68, 0x60, 0x62, 0x60, 0x68, 0x01, 0x30, - 0x60, 0x60, 0xa1, 0x68, 0x01, 0x31, 0x88, 0x42, - 0x03, 0xd0, 0x0a, 0x21, 0x85, 0x20, 0xf7, 0xf7, - 0x3c, 0x00, 0x20, 0x94, 0x00, 0x00, 0x41, 0xff, - 0x04, 0x48, 0x00, 0x68, 0xa0, 0x62, 0xfe, 0xbd, - 0x00, 0x00, 0xe8, 0x7d, 0x01, 0x00, 0x00, 0x30, - 0x07, 0x00, 0x78, 0x6e, 0x01, 0x00, 0xb0, 0xb5, - 0x05, 0x1c, 0x01, 0x21, 0x0f, 0x20, 0x0a, 0xf0, - 0xf8, 0xf8, 0xf2, 0x21, 0x0f, 0x20, 0x0a, 0xf0, - 0xf4, 0xf8, 0x0c, 0x48, 0x0c, 0x4c, 0x00, 0x68, - 0x14, 0x3c, 0x00, 0x28, 0x0c, 0xd0, 0xe0, 0x78, - 0x01, 0x28, 0x3c, 0x00, 0x5c, 0x94, 0x00, 0x00, - 0x09, 0xd0, 0x01, 0x22, 0x29, 0x1c, 0x0f, 0x20, - 0x0a, 0xf0, 0xac, 0xf8, 0x60, 0x78, 0x02, 0x28, - 0x06, 0xd0, 0x01, 0x20, 0x03, 0xe0, 0x60, 0x78, - 0x02, 0x28, 0x01, 0xd0, 0x00, 0x20, 0x60, 0x70, - 0xb0, 0xbd, 0x00, 0x00, 0x98, 0x66, 0x01, 0x00, - 0x02, 0x22, 0x00, 0x28, 0x80, 0xb5, 0x00, 0xd1, - 0x03, 0x22, 0x03, 0x49, 0x0e, 0x20, 0x0a, 0xf0, - 0x9b, 0xf8, 0x00, 0x20, 0x3c, 0x00, 0x98, 0x94, - 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x50, 0xc3, - 0x00, 0x00, 0xf8, 0xb5, 0x00, 0x23, 0x00, 0x22, - 0x00, 0x28, 0x2e, 0xd0, 0x06, 0x89, 0x04, 0x68, - 0x75, 0x1e, 0x2d, 0x04, 0xb6, 0x1a, 0xf6, 0x07, - 0x2d, 0x0c, 0xf6, 0x0f, 0xb4, 0x46, 0x0e, 0xe0, - 0xa7, 0x5c, 0xa6, 0x18, 0x02, 0x33, 0x00, 0x97, - 0x77, 0x78, 0xa7, 0x54, 0x02, 0x32, 0x12, 0x04, - 0x00, 0x9f, 0x12, 0x0c, 0x00, 0x29, 0x3c, 0x00, - 0xd4, 0x94, 0x00, 0x00, 0x77, 0x70, 0x01, 0xdd, - 0x8b, 0x42, 0x15, 0xda, 0xaa, 0x42, 0xee, 0xd3, - 0xc0, 0x68, 0x00, 0x28, 0x10, 0xd0, 0x02, 0x89, - 0x00, 0x2a, 0xf9, 0xd0, 0x62, 0x46, 0x00, 0x2a, - 0x0b, 0xd0, 0x02, 0x68, 0x66, 0x5d, 0x17, 0x78, - 0x02, 0x33, 0x67, 0x55, 0x16, 0x70, 0x01, 0x22, - 0x00, 0x29, 0xd2, 0xdd, 0x8b, 0x42, 0xd0, 0xdb, - 0xf8, 0xbd, 0x00, 0x22, 0xcd, 0xe7, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x95, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0d, 0x1c, 0x01, 0x20, 0xf8, 0xf7, - 0x5e, 0xfb, 0x0d, 0x49, 0x00, 0x28, 0xc8, 0x61, - 0x14, 0xd0, 0x62, 0x68, 0x42, 0x60, 0xa2, 0x7c, - 0x02, 0x72, 0xa2, 0x68, 0xc2, 0x60, 0xe2, 0x68, - 0x02, 0x61, 0x22, 0x8a, 0x02, 0x75, 0x0a, 0x1d, - 0x0a, 0x62, 0x12, 0x68, 0x00, 0x2a, 0xff, 0xd1, - 0x02, 0x60, 0x48, 0x60, 0x00, 0x20, 0xa8, 0x60, - 0x01, 0x20, 0x3c, 0x00, 0x4c, 0x95, 0x00, 0x00, - 0xb0, 0xbd, 0x01, 0x20, 0xfa, 0xe7, 0x00, 0x00, - 0xa4, 0x6e, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x40, 0x68, 0x0d, 0x1c, 0x43, 0x1c, 0x02, 0xd1, - 0x21, 0x1c, 0x09, 0x48, 0x08, 0xe0, 0x00, 0x20, - 0xf8, 0xf7, 0x34, 0xfb, 0x06, 0x49, 0x94, 0x39, - 0x08, 0x61, 0x00, 0x28, 0x03, 0xd0, 0x21, 0x1c, - 0x00, 0xf0, 0x48, 0xfe, 0x00, 0xe0, 0x01, 0x20, - 0xa8, 0x60, 0x01, 0x20, 0x3c, 0x00, 0x88, 0x95, - 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, 0x38, 0x6f, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, 0x97, 0x20, - 0xf7, 0xf7, 0x85, 0xfe, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x38, 0xb5, 0x0a, 0x1c, 0x14, 0x32, - 0x00, 0x92, 0x13, 0x1f, 0x05, 0x1c, 0x08, 0x3a, - 0x0c, 0x1c, 0x16, 0x31, 0x40, 0x68, 0xfe, 0xf7, - 0x6c, 0xfe, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x20, - 0x00, 0xe0, 0x01, 0x20, 0x69, 0x68, 0x3c, 0x00, - 0xc4, 0x95, 0x00, 0x00, 0xa0, 0x60, 0x61, 0x60, - 0x01, 0x20, 0x38, 0xbd, 0x10, 0xb5, 0x0c, 0x1c, - 0x01, 0x7a, 0x00, 0x29, 0x0f, 0xd0, 0x01, 0x29, - 0x09, 0xd0, 0x02, 0x29, 0x03, 0xd1, 0x00, 0x21, - 0x00, 0x20, 0x0a, 0xf0, 0x73, 0xfc, 0x00, 0x20, - 0x20, 0x71, 0x01, 0x20, 0x10, 0xbd, 0x41, 0x68, - 0x01, 0x20, 0x0a, 0xf0, 0x6b, 0xfc, 0x00, 0xf0, - 0x0d, 0xf9, 0xf4, 0xe7, 0x80, 0xb5, 0x04, 0x49, - 0x3c, 0x00, 0x00, 0x96, 0x00, 0x00, 0x48, 0x68, - 0x01, 0x38, 0x48, 0x60, 0x01, 0xd1, 0x07, 0xf0, - 0x6e, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0xac, 0x79, - 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, - 0x00, 0xf0, 0x4f, 0xfe, 0xa0, 0x60, 0x68, 0x68, - 0x60, 0x60, 0x01, 0x20, 0xb0, 0xbd, 0xb0, 0xb5, - 0x05, 0x1c, 0x0c, 0x1c, 0x00, 0xf0, 0x6f, 0xfe, - 0xa0, 0x60, 0x68, 0x68, 0x60, 0x60, 0x01, 0x20, - 0xb0, 0xbd, 0x3c, 0x00, 0x3c, 0x96, 0x00, 0x00, - 0x08, 0x1c, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x08, 0xc0, 0x01, 0x20, 0x70, 0x47, - 0xf8, 0xb5, 0x0f, 0x1c, 0x04, 0x1c, 0x20, 0x79, - 0x20, 0x28, 0x01, 0xd2, 0x20, 0x20, 0x20, 0x71, - 0x66, 0x79, 0x00, 0x2e, 0x02, 0xd1, 0x25, 0x79, - 0x00, 0x22, 0x0d, 0xe0, 0x25, 0x79, 0x29, 0x1c, - 0x30, 0x1c, 0xf7, 0xf7, 0x4f, 0xf8, 0x00, 0x29, - 0x01, 0xd1, 0x32, 0x1c, 0x3c, 0x00, 0x78, 0x96, - 0x00, 0x00, 0x04, 0xe0, 0x70, 0x43, 0x80, 0x19, - 0x05, 0x06, 0x2d, 0x0e, 0x32, 0x1c, 0xe0, 0x79, - 0x29, 0x1c, 0x00, 0xf0, 0xf2, 0xf9, 0x20, 0x7a, - 0x2f, 0x49, 0xc0, 0x07, 0xc0, 0x0f, 0x08, 0x60, - 0x2e, 0x48, 0x00, 0x78, 0xc0, 0x07, 0x43, 0xd5, - 0xa1, 0x79, 0x2c, 0x4a, 0xc8, 0x07, 0x48, 0xd4, - 0x2c, 0x4e, 0x16, 0x60, 0x8b, 0x07, 0x2b, 0x48, - 0x08, 0xd5, 0xcc, 0x08, 0x01, 0x23, 0x3c, 0x00, - 0xb4, 0x96, 0x00, 0x00, 0xa3, 0x40, 0x03, 0x60, - 0x49, 0x07, 0x04, 0xd5, 0x28, 0x49, 0x11, 0x60, - 0x01, 0xe0, 0x40, 0x21, 0x01, 0x60, 0x13, 0x68, - 0x26, 0x4a, 0xb3, 0x42, 0x10, 0xd1, 0x54, 0x68, - 0x01, 0x68, 0x0c, 0x43, 0x54, 0x60, 0x14, 0x68, - 0x0c, 0x40, 0x01, 0xd0, 0x51, 0x61, 0x00, 0xe0, - 0x91, 0x61, 0x54, 0x68, 0x0c, 0x43, 0x54, 0x60, - 0x94, 0x68, 0x21, 0x43, 0x91, 0x60, 0x13, 0xe0, - 0x3c, 0x00, 0xf0, 0x96, 0x00, 0x00, 0x54, 0x7c, - 0x01, 0x68, 0x0c, 0x43, 0x54, 0x74, 0x14, 0x7c, - 0x0c, 0x40, 0x03, 0xd0, 0x14, 0x7c, 0x0c, 0x43, - 0x14, 0x74, 0x02, 0xe0, 0x14, 0x7c, 0x8c, 0x43, - 0x14, 0x74, 0x54, 0x7c, 0x0c, 0x43, 0x54, 0x74, - 0x94, 0x7c, 0x21, 0x43, 0x91, 0x74, 0xb3, 0x42, - 0x05, 0xd1, 0x00, 0x22, 0x01, 0x68, 0x03, 0x20, - 0xff, 0xf7, 0x8d, 0xf8, 0x09, 0xe0, 0x00, 0x68, - 0x00, 0x21, 0x3c, 0x00, 0x2c, 0x97, 0x00, 0x00, - 0x02, 0x06, 0x12, 0x0e, 0x03, 0x20, 0xff, 0xf7, - 0x85, 0xf8, 0x01, 0xe0, 0x0b, 0x48, 0x10, 0x60, - 0x00, 0x20, 0x38, 0x71, 0x7d, 0x71, 0xf7, 0xf7, - 0xe9, 0xfd, 0x01, 0x20, 0xf8, 0xbd, 0x00, 0x00, - 0xcc, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00, - 0x5c, 0x5b, 0x01, 0x00, 0xb9, 0x9b, 0x00, 0x00, - 0x58, 0x5b, 0x01, 0x00, 0x95, 0x9b, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0x3c, 0x00, 0x68, 0x97, - 0x00, 0x00, 0x55, 0x9b, 0x00, 0x00, 0xb0, 0xb5, - 0x0d, 0x1c, 0x04, 0x30, 0x00, 0x24, 0xfe, 0xf7, - 0xd6, 0xfa, 0x01, 0x20, 0x6c, 0x60, 0xb0, 0xbd, - 0x00, 0x00, 0xf0, 0xb5, 0x07, 0x7a, 0x43, 0x68, - 0x04, 0x1c, 0x0e, 0x48, 0x0e, 0x1c, 0x00, 0x68, - 0x01, 0x25, 0x01, 0x1c, 0x9b, 0xb0, 0x06, 0xe0, - 0x4a, 0x68, 0x9a, 0x42, 0x02, 0xd1, 0x8f, 0x76, - 0x00, 0x25, 0x02, 0xe0, 0x09, 0x68, 0x3c, 0x00, - 0xa4, 0x97, 0x00, 0x00, 0x00, 0x29, 0xf6, 0xd1, - 0x00, 0x2d, 0x05, 0xd1, 0x21, 0x7a, 0x01, 0x29, - 0x02, 0xd1, 0x01, 0xa9, 0xf8, 0xf7, 0xa8, 0xf8, - 0x60, 0x68, 0x04, 0x36, 0x21, 0xc6, 0x1b, 0xb0, - 0x01, 0x20, 0xf0, 0xbd, 0xa4, 0x6e, 0x01, 0x00, - 0x10, 0xb5, 0x0c, 0x1c, 0x08, 0xf0, 0xae, 0xfc, - 0x60, 0x60, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0x10, 0xb5, 0x0c, 0x1c, 0x07, 0xf0, 0x84, 0xfa, - 0x3c, 0x00, 0xe0, 0x97, 0x00, 0x00, 0x04, 0xf0, - 0x54, 0xff, 0x00, 0x20, 0x60, 0x60, 0x01, 0x20, - 0x10, 0xbd, 0x00, 0x20, 0xc0, 0x43, 0x48, 0x60, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, - 0x0c, 0x1c, 0x00, 0x79, 0xfa, 0xf7, 0x07, 0xf8, - 0x00, 0x28, 0x01, 0xd0, 0x00, 0x20, 0x00, 0xe0, - 0x02, 0x20, 0x60, 0x60, 0x01, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0x1c, 0xb5, 0x06, 0x4c, 0x20, 0x68, - 0x00, 0x28, 0x3c, 0x00, 0x1c, 0x98, 0x00, 0x00, - 0x07, 0xd0, 0x09, 0xf0, 0xc5, 0xfa, 0x01, 0x90, - 0x20, 0x68, 0x41, 0x68, 0x68, 0x46, 0xf6, 0xf7, - 0xd6, 0xfd, 0x1c, 0xbd, 0xac, 0x79, 0x01, 0x00, - 0x01, 0x49, 0x08, 0x60, 0x70, 0x47, 0x00, 0x00, - 0xac, 0x79, 0x01, 0x00, 0x0e, 0xb5, 0x06, 0x4b, - 0x1b, 0x68, 0x00, 0x2b, 0x06, 0xd0, 0x02, 0x90, - 0x00, 0x91, 0x01, 0x92, 0x68, 0x46, 0xd9, 0x68, - 0xf6, 0xf7, 0xc1, 0xfd, 0x3c, 0x00, 0x58, 0x98, - 0x00, 0x00, 0x0e, 0xbd, 0x00, 0x00, 0xac, 0x79, - 0x01, 0x00, 0x1c, 0xb5, 0x04, 0x1c, 0x07, 0xf0, - 0x4c, 0xfa, 0x06, 0x48, 0x41, 0x68, 0x01, 0x31, - 0x41, 0x60, 0x00, 0x94, 0x00, 0x21, 0x01, 0x91, - 0x00, 0x68, 0x01, 0x68, 0x68, 0x46, 0xf6, 0xf7, - 0xad, 0xfd, 0x1c, 0xbd, 0x00, 0x00, 0xac, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0xf8, 0xf7, 0xa3, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x02, 0x1c, 0x3c, 0x00, - 0x94, 0x98, 0x00, 0x00, 0x80, 0x21, 0x03, 0x20, - 0x00, 0xf0, 0x5c, 0xf8, 0x01, 0x1c, 0x03, 0x48, - 0x00, 0x22, 0x43, 0x69, 0xf6, 0xf7, 0x9b, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xa4, 0x6d, 0x01, 0x00, - 0xf8, 0xb5, 0x0c, 0x1c, 0x13, 0x49, 0x05, 0x1c, - 0x08, 0x68, 0x16, 0x1c, 0x01, 0x30, 0x08, 0x60, - 0x00, 0x20, 0x20, 0x61, 0x22, 0x1c, 0x10, 0x32, - 0x28, 0x1d, 0x00, 0x21, 0x07, 0x1c, 0x00, 0x92, - 0x3c, 0x00, 0xd0, 0x98, 0x00, 0x00, 0x03, 0xf0, - 0xde, 0xfe, 0x20, 0x71, 0x20, 0x69, 0x00, 0x28, - 0x10, 0xd0, 0x01, 0x04, 0x09, 0x0c, 0x00, 0x20, - 0xf7, 0xf7, 0x79, 0xfe, 0x30, 0x60, 0x29, 0x1d, - 0x03, 0xc9, 0xa0, 0x60, 0xe1, 0x60, 0x30, 0x68, - 0x01, 0x68, 0x00, 0x9a, 0x38, 0x1c, 0x03, 0xf0, - 0xca, 0xfe, 0x20, 0x71, 0x01, 0x20, 0xf8, 0xbd, - 0x00, 0x00, 0x10, 0x75, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x1c, 0x3c, 0x00, 0x0c, 0x99, 0x00, 0x00, - 0x08, 0x21, 0x04, 0x20, 0x09, 0xf0, 0x4e, 0xff, - 0x03, 0x20, 0x80, 0xbd, 0x10, 0xb5, 0x07, 0x4a, - 0x0c, 0x1c, 0x51, 0x68, 0x01, 0x31, 0x51, 0x60, - 0x01, 0x1c, 0x10, 0x31, 0xc2, 0x68, 0x04, 0x30, - 0x03, 0xf0, 0xf0, 0xfe, 0x20, 0x71, 0x00, 0x20, - 0x10, 0xbd, 0x00, 0x00, 0x10, 0x75, 0x01, 0x00, - 0x04, 0x49, 0x80, 0xb5, 0x81, 0x61, 0x08, 0x21, - 0x02, 0x1c, 0x03, 0x20, 0x3c, 0x00, 0x48, 0x99, - 0x00, 0x00, 0x09, 0xf0, 0x32, 0xff, 0x03, 0x20, - 0x80, 0xbd, 0x95, 0xd8, 0x00, 0x00, 0xf7, 0xb5, - 0x07, 0x1c, 0x16, 0x1c, 0x06, 0x21, 0x00, 0x20, - 0x82, 0xb0, 0xf7, 0xf7, 0x3a, 0xfe, 0x05, 0x1c, - 0x20, 0x48, 0x00, 0x78, 0x06, 0x28, 0x00, 0xd9, - 0x28, 0x81, 0x2c, 0x68, 0x00, 0x20, 0xa7, 0x70, - 0x03, 0x99, 0xe1, 0x70, 0x31, 0x1c, 0x03, 0xe0, - 0x0a, 0x89, 0x10, 0x18, 0x0f, 0x1c, 0x3c, 0x00, - 0x84, 0x99, 0x00, 0x00, 0xc9, 0x68, 0x00, 0x29, - 0xf9, 0xd1, 0x6b, 0x46, 0x01, 0xaa, 0x21, 0x1d, - 0x00, 0xf0, 0x34, 0xf8, 0x00, 0xab, 0x18, 0x78, - 0x60, 0x71, 0x18, 0x78, 0x00, 0x28, 0x17, 0xd0, - 0x11, 0x48, 0x40, 0x68, 0x00, 0x28, 0x08, 0xd0, - 0x19, 0x78, 0x00, 0x20, 0xf7, 0xf7, 0x14, 0xfe, - 0x01, 0x1c, 0x38, 0x1c, 0xf7, 0xf7, 0x30, 0xfd, - 0x0a, 0xe0, 0x38, 0x68, 0x00, 0x28, 0x02, 0xd1, - 0x3c, 0x00, 0xc0, 0x99, 0x00, 0x00, 0x3f, 0x60, - 0x01, 0x20, 0xb8, 0x61, 0x00, 0xab, 0x19, 0x78, - 0x38, 0x89, 0x40, 0x18, 0x38, 0x81, 0x00, 0xab, - 0x98, 0x88, 0x31, 0x1c, 0x02, 0x38, 0x20, 0x80, - 0x28, 0x1c, 0xf7, 0xf7, 0x1c, 0xfd, 0x28, 0x1c, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xc8, 0x5c, - 0x01, 0x00, 0x01, 0x79, 0x42, 0x79, 0x00, 0x88, - 0x89, 0x18, 0x02, 0x39, 0x40, 0x1a, 0x70, 0x47, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x99, 0x00, 0x00, - 0x70, 0xb5, 0x08, 0x4d, 0x2c, 0x78, 0xad, 0x78, - 0x20, 0x18, 0x06, 0x1c, 0x00, 0x2d, 0x03, 0xd0, - 0x70, 0x19, 0x01, 0x38, 0x01, 0x3d, 0xa8, 0x43, - 0x10, 0x80, 0x80, 0x1b, 0x18, 0x70, 0x0c, 0x70, - 0x70, 0xbd, 0x00, 0x00, 0xc8, 0x5c, 0x01, 0x00, - 0xb0, 0xb5, 0x04, 0x68, 0x0c, 0x4a, 0x21, 0x88, - 0x52, 0x78, 0x02, 0x31, 0x91, 0x42, 0x11, 0xd2, - 0x55, 0x1a, 0xf7, 0xf7, 0x3c, 0x00, 0x38, 0x9a, - 0x00, 0x00, 0xc9, 0xfd, 0x01, 0x68, 0x00, 0x29, - 0x02, 0xd1, 0x00, 0x60, 0x01, 0x21, 0x81, 0x61, - 0x01, 0x89, 0x49, 0x19, 0x01, 0x81, 0x20, 0x88, - 0x40, 0x19, 0x20, 0x80, 0x60, 0x79, 0x40, 0x19, - 0x60, 0x71, 0xb0, 0xbd, 0x00, 0x00, 0xc8, 0x5c, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x06, 0x21, - 0xf1, 0x20, 0x09, 0xf0, 0xa2, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x1c, 0x02, 0x48, 0x3c, 0x00, - 0x74, 0x9a, 0x00, 0x00, 0x03, 0x70, 0x41, 0x70, - 0x82, 0x70, 0x70, 0x47, 0xc8, 0x5c, 0x01, 0x00, - 0xb0, 0xb5, 0x08, 0x1c, 0x09, 0x68, 0x15, 0x1c, - 0x8c, 0x78, 0xf7, 0xf7, 0x85, 0xfd, 0x04, 0x49, - 0xa0, 0x00, 0x09, 0x58, 0x00, 0x29, 0x02, 0xd0, - 0x28, 0x1c, 0xf6, 0xf7, 0x9e, 0xfc, 0xb0, 0xbd, - 0x84, 0x6d, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0xc0, 0x7a, 0xa1, 0x7a, 0xc6, 0x07, 0xf6, 0x0f, - 0x3c, 0x00, 0xb0, 0x9a, 0x00, 0x00, 0x32, 0x1c, - 0x20, 0x1d, 0x01, 0xf0, 0x3c, 0xf8, 0x60, 0x69, - 0x25, 0x4f, 0xc1, 0x07, 0x37, 0xd5, 0xb8, 0x69, - 0x00, 0x28, 0x01, 0xd0, 0xf6, 0xf7, 0x87, 0xfc, - 0x20, 0x68, 0x05, 0x68, 0x28, 0x88, 0x80, 0x07, - 0x34, 0xd1, 0x01, 0xaa, 0x02, 0xa9, 0x28, 0x1c, - 0x01, 0xf0, 0x0b, 0xfc, 0x28, 0x1c, 0x01, 0xf0, - 0x12, 0xfc, 0x00, 0x78, 0xc0, 0x07, 0x0a, 0xd4, - 0x60, 0x69, 0x3c, 0x00, 0xec, 0x9a, 0x00, 0x00, - 0x80, 0x07, 0x26, 0xd4, 0x33, 0x1c, 0x29, 0x1c, - 0xa2, 0x7a, 0x20, 0x69, 0x7d, 0x69, 0xf6, 0xf7, - 0x72, 0xfc, 0x1e, 0xe0, 0x00, 0xab, 0x18, 0x7a, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x28, 0x06, 0xd0, - 0x02, 0x28, 0x16, 0xd1, 0x28, 0x1c, 0x79, 0x6a, - 0xf6, 0xf7, 0x61, 0xfc, 0x11, 0xe0, 0x00, 0xab, - 0x18, 0x79, 0x0e, 0x28, 0x01, 0xd0, 0x0f, 0x28, - 0x0b, 0xd1, 0x28, 0x1c, 0x3c, 0x00, 0x28, 0x9b, - 0x00, 0x00, 0x39, 0x6a, 0xf6, 0xf7, 0x56, 0xfc, - 0x06, 0xe0, 0x00, 0x07, 0x80, 0x0f, 0x03, 0xd1, - 0x20, 0x69, 0xf9, 0x69, 0xf6, 0xf7, 0x4e, 0xfc, - 0x78, 0x6b, 0x21, 0x21, 0x01, 0x30, 0x78, 0x63, - 0x22, 0x1c, 0x80, 0x20, 0x09, 0xf0, 0x31, 0xfe, - 0xfe, 0xbd, 0x28, 0x7a, 0x01, 0x00, 0x0b, 0x49, - 0x18, 0xb5, 0x08, 0x78, 0xc0, 0x07, 0x11, 0xd5, - 0x0a, 0x4a, 0x10, 0x1c, 0x20, 0x30, 0x3c, 0x00, - 0x64, 0x9b, 0x00, 0x00, 0x84, 0x79, 0x00, 0xab, - 0x1c, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x08, 0x78, - 0x40, 0x23, 0x18, 0x43, 0x08, 0x70, 0x05, 0x48, - 0x00, 0x78, 0x08, 0x70, 0x00, 0xab, 0x18, 0x88, - 0xd0, 0x84, 0x18, 0xbd, 0x04, 0x00, 0x07, 0x00, - 0x00, 0x10, 0x07, 0x00, 0xe0, 0x60, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x05, 0x49, 0x10, 0xb5, - 0x88, 0x79, 0x05, 0x4b, 0x1a, 0x7c, 0x05, 0x4c, - 0x3c, 0x00, 0xa0, 0x9b, 0x00, 0x00, 0x24, 0x68, - 0x62, 0x40, 0x1a, 0x74, 0x88, 0x71, 0x10, 0xbd, - 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x58, 0x5b, 0x01, 0x00, 0x04, 0x49, - 0x0a, 0x68, 0x04, 0x48, 0x00, 0x68, 0x02, 0x40, - 0x01, 0xd0, 0x88, 0x61, 0x70, 0x47, 0x48, 0x61, - 0x70, 0x47, 0x10, 0x00, 0x07, 0x00, 0x58, 0x5b, - 0x01, 0x00, 0x02, 0x1c, 0x01, 0x20, 0x00, 0x06, - 0x08, 0x43, 0x3c, 0x00, 0xdc, 0x9b, 0x00, 0x00, - 0x80, 0xb5, 0x2a, 0x21, 0x09, 0xf0, 0xe6, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x00, 0x29, 0x03, 0xd0, 0x81, 0x29, 0x07, 0xd1, - 0x81, 0x20, 0x00, 0xe0, 0x80, 0x20, 0x22, 0x1c, - 0x2c, 0x21, 0x09, 0xf0, 0xd7, 0xfd, 0x10, 0xbd, - 0x02, 0x21, 0x2c, 0x20, 0xf7, 0xf7, 0x4c, 0xfb, - 0x20, 0x1c, 0xf7, 0xf7, 0xc3, 0xfc, 0x10, 0xbd, - 0x80, 0xb5, 0xb4, 0xb0, 0x3c, 0x00, 0x18, 0x9c, - 0x00, 0x00, 0x01, 0x28, 0x06, 0xd0, 0x82, 0x28, - 0x1c, 0xd1, 0x1a, 0xa8, 0x07, 0xf0, 0x35, 0xfc, - 0x34, 0xb0, 0x80, 0xbd, 0x81, 0x29, 0x13, 0xd1, - 0x0d, 0x48, 0x0c, 0x4a, 0x81, 0x69, 0x00, 0x68, - 0x50, 0x32, 0x81, 0x42, 0x02, 0xd0, 0xd1, 0x6a, - 0x01, 0x29, 0x02, 0xd0, 0x11, 0x78, 0x02, 0x29, - 0x02, 0xd1, 0x07, 0xf0, 0x0a, 0xf9, 0xeb, 0xe7, - 0x69, 0x46, 0xf7, 0xf7, 0x5a, 0xfe, 0x3c, 0x00, - 0x54, 0x9c, 0x00, 0x00, 0xe7, 0xe7, 0x01, 0x21, - 0x00, 0xe0, 0x02, 0x21, 0x18, 0x20, 0xf7, 0xf7, - 0x21, 0xfb, 0xe0, 0xe7, 0xa4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x68, 0x17, 0x4d, - 0x9a, 0xb0, 0x68, 0x63, 0x08, 0xf0, 0x3e, 0xfa, - 0x20, 0x79, 0x14, 0x49, 0x13, 0x4a, 0x50, 0x39, - 0x2c, 0x3a, 0x02, 0x28, 0x0a, 0xd1, 0x90, 0x68, - 0x80, 0x02, 0xa8, 0x61, 0xc8, 0x68, 0xe8, 0x61, - 0x3c, 0x00, 0x90, 0x9c, 0x00, 0x00, 0x02, 0x20, - 0x28, 0x72, 0x07, 0xf0, 0xe4, 0xf8, 0x1a, 0xb0, - 0xb0, 0xbd, 0x03, 0x1c, 0x00, 0x20, 0x00, 0x2b, - 0x0b, 0xd1, 0x52, 0x68, 0x92, 0x02, 0xaa, 0x61, - 0x0a, 0x1c, 0x89, 0x68, 0xe9, 0x61, 0x28, 0x72, - 0x10, 0x68, 0x69, 0x46, 0xf7, 0xf7, 0x27, 0xfe, - 0xed, 0xe7, 0xa8, 0x61, 0x01, 0x20, 0x28, 0x72, - 0x28, 0x70, 0x00, 0x20, 0x06, 0xf0, 0x7d, 0xfa, - 0xe5, 0xe7, 0x3c, 0x00, 0xcc, 0x9c, 0x00, 0x00, - 0xf4, 0x6e, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x07, 0x20, 0xf7, 0xf7, 0xe1, 0xfa, 0x80, 0xbd, - 0x70, 0x47, 0x00, 0x00, 0xf8, 0xb5, 0x00, 0x24, - 0x19, 0x4a, 0x00, 0x26, 0xd5, 0x68, 0x11, 0x68, - 0x04, 0x35, 0x08, 0x1c, 0x91, 0x60, 0x02, 0xe0, - 0x01, 0x1c, 0x40, 0x19, 0x08, 0x60, 0x53, 0x68, - 0x83, 0x42, 0xf9, 0xd8, 0x3c, 0x00, 0x08, 0x9d, - 0x00, 0x00, 0x01, 0x34, 0x10, 0x32, 0x03, 0x2c, - 0x0e, 0x60, 0xee, 0xd3, 0xf6, 0xf7, 0xf1, 0xff, - 0x10, 0x48, 0x10, 0x49, 0x12, 0x4c, 0x08, 0x60, - 0x10, 0x49, 0x00, 0x20, 0x01, 0x22, 0x19, 0x23, - 0x5b, 0x01, 0x0c, 0x25, 0x43, 0x43, 0x1b, 0x19, - 0x45, 0x43, 0x4a, 0x51, 0x1f, 0x1c, 0x6d, 0x18, - 0xab, 0x60, 0x6b, 0x60, 0x00, 0x25, 0x1e, 0x1c, - 0x14, 0x36, 0x9e, 0x60, 0x33, 0x1c, 0x3c, 0x00, - 0x44, 0x9d, 0x00, 0x00, 0x01, 0x35, 0x27, 0x2d, - 0xf8, 0xdb, 0x01, 0x30, 0x03, 0x28, 0x9f, 0x60, - 0xe8, 0xdb, 0xf8, 0xbd, 0x20, 0x57, 0x01, 0x00, - 0x14, 0xc8, 0x01, 0x00, 0xb4, 0xcf, 0x01, 0x00, - 0x18, 0xd9, 0x01, 0x00, 0xb8, 0xcf, 0x01, 0x00, - 0xb0, 0xb5, 0x07, 0x4c, 0x25, 0x1c, 0xc0, 0x35, - 0x28, 0x6b, 0x1e, 0x21, 0x00, 0xf0, 0xf2, 0xf9, - 0xa2, 0x6b, 0x20, 0x1c, 0xdc, 0x30, 0x29, 0x6b, - 0x3c, 0x00, 0x80, 0x9d, 0x00, 0x00, 0x00, 0xf0, - 0xb6, 0xf9, 0xb0, 0xbd, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x00, 0x20, 0x10, 0x22, 0x10, 0xb5, - 0x0a, 0x49, 0x05, 0xe0, 0x0c, 0x23, 0x43, 0x43, - 0x5c, 0x18, 0x0c, 0x34, 0xcc, 0x50, 0x01, 0x30, - 0x0f, 0x28, 0xf7, 0xd3, 0x0c, 0x23, 0x58, 0x43, - 0x09, 0x50, 0x04, 0x48, 0x41, 0x60, 0x01, 0x60, - 0x02, 0x82, 0x00, 0x21, 0x81, 0x60, 0xc1, 0x60, - 0x10, 0xbd, 0x3c, 0x00, 0xbc, 0x9d, 0x00, 0x00, - 0x84, 0xe2, 0x01, 0x00, 0x44, 0xe3, 0x01, 0x00, - 0x10, 0xb5, 0x08, 0x4c, 0xa0, 0x6a, 0x00, 0x28, - 0x03, 0xd1, 0x07, 0x48, 0xf9, 0xf7, 0xe8, 0xfe, - 0xa0, 0x62, 0x04, 0x48, 0x44, 0x30, 0x00, 0x68, - 0x01, 0x21, 0xf9, 0xf7, 0x95, 0xfc, 0x60, 0x62, - 0x10, 0xbd, 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, - 0xcd, 0x26, 0x01, 0x00, 0xff, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x1e, 0x1c, 0x3c, 0x00, 0xf8, 0x9d, - 0x00, 0x00, 0x81, 0xb0, 0x0a, 0x9f, 0x1c, 0x21, - 0xf6, 0xf7, 0x4d, 0xfb, 0x03, 0x98, 0xa0, 0x61, - 0x25, 0x60, 0x25, 0x61, 0x26, 0x81, 0xa6, 0x82, - 0xe7, 0x60, 0x05, 0xb0, 0xf0, 0xbd, 0x70, 0xb5, - 0x0d, 0x1c, 0xa4, 0x21, 0x04, 0x1c, 0x08, 0x30, - 0xf6, 0xf7, 0x3d, 0xfb, 0x20, 0x1c, 0x44, 0x30, - 0x06, 0x22, 0x29, 0x1c, 0xf6, 0xf7, 0x65, 0xfb, - 0x18, 0x48, 0x3c, 0x23, 0x41, 0x1c, 0x3c, 0x00, - 0x34, 0x9e, 0x00, 0x00, 0x61, 0x62, 0x41, 0x78, - 0x59, 0x43, 0x09, 0x18, 0x89, 0x7a, 0x06, 0x29, - 0x01, 0xd1, 0xa0, 0x62, 0x02, 0xe0, 0x21, 0x1c, - 0x4d, 0x31, 0xa1, 0x62, 0x41, 0x78, 0x3c, 0x23, - 0x59, 0x43, 0x08, 0x18, 0x04, 0x30, 0x0f, 0x49, - 0x20, 0x62, 0x0b, 0x88, 0x00, 0x2b, 0x15, 0xd0, - 0xac, 0x20, 0x00, 0x5d, 0x0b, 0x4a, 0x18, 0x32, - 0x00, 0x02, 0x80, 0x18, 0xb0, 0x30, 0xe0, 0x60, - 0x3c, 0x00, 0x70, 0x9e, 0x00, 0x00, 0x8d, 0x68, - 0x00, 0x20, 0x08, 0xe0, 0xe2, 0x68, 0xc1, 0x00, - 0x54, 0x50, 0xe6, 0x68, 0x82, 0x00, 0x52, 0x19, - 0x71, 0x18, 0x4a, 0x60, 0x01, 0x30, 0x98, 0x42, - 0xf4, 0xdb, 0x70, 0xbd, 0x00, 0x00, 0x68, 0x61, - 0x01, 0x00, 0x58, 0x75, 0x01, 0x00, 0x1f, 0xb5, - 0x04, 0x1c, 0x60, 0x34, 0x61, 0x7a, 0x03, 0x1c, - 0x80, 0x6a, 0x08, 0x4a, 0x02, 0x91, 0x01, 0x90, - 0x03, 0x92, 0x3c, 0x00, 0xac, 0x9e, 0x00, 0x00, - 0xe2, 0x79, 0x18, 0x1c, 0x20, 0x30, 0x00, 0x92, - 0x44, 0x7b, 0x82, 0x7b, 0x5e, 0x20, 0xc1, 0x5a, - 0x18, 0x69, 0x04, 0x30, 0x23, 0x1c, 0x02, 0xf0, - 0x7f, 0xfe, 0x1f, 0xbd, 0x39, 0x4e, 0x00, 0x00, - 0xb0, 0xb5, 0x0b, 0x1c, 0x01, 0x88, 0x69, 0x20, - 0xc0, 0x5c, 0x86, 0xb0, 0x0e, 0x4a, 0x04, 0x91, - 0x03, 0x90, 0x05, 0x92, 0x0d, 0x4d, 0x59, 0x6a, - 0x9a, 0x6a, 0x2d, 0x68, 0x3c, 0x00, 0xe8, 0x9e, - 0x00, 0x00, 0x01, 0x24, 0x00, 0x2d, 0x00, 0xd0, - 0x04, 0x1c, 0x0a, 0x48, 0x00, 0x5d, 0x01, 0x91, - 0x02, 0x92, 0x00, 0x90, 0x18, 0x1c, 0x20, 0x30, - 0x44, 0x7b, 0x82, 0x7b, 0x5e, 0x20, 0xc1, 0x5a, - 0x18, 0x69, 0x04, 0x30, 0x23, 0x1c, 0x02, 0xf0, - 0xa4, 0xfe, 0x06, 0xb0, 0xb0, 0xbd, 0x51, 0x4f, - 0x00, 0x00, 0x18, 0x67, 0x01, 0x00, 0x0a, 0x61, - 0x01, 0x00, 0x01, 0x89, 0x8a, 0x1c, 0x3c, 0x00, - 0x24, 0x9f, 0x00, 0x00, 0x02, 0x81, 0x02, 0x68, - 0x02, 0x3a, 0x02, 0x60, 0x08, 0x0a, 0x09, 0x02, - 0x08, 0x43, 0x10, 0x80, 0x70, 0x47, 0x00, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x08, 0x78, 0x0e, 0x1c, - 0xff, 0x28, 0x14, 0xd0, 0x71, 0x78, 0x02, 0x31, - 0x00, 0x20, 0xf7, 0xf7, 0x45, 0xfb, 0x04, 0x1c, - 0x02, 0x89, 0x00, 0x68, 0x31, 0x1c, 0xf6, 0xf7, - 0xcf, 0xfa, 0x00, 0x2d, 0x06, 0xd0, 0x28, 0x1c, - 0x3c, 0x00, 0x60, 0x9f, 0x00, 0x00, 0xf7, 0xf7, - 0x34, 0xfb, 0x21, 0x1c, 0xf7, 0xf7, 0x57, 0xfa, - 0x00, 0xe0, 0x25, 0x1c, 0x28, 0x1c, 0x70, 0xbd, - 0x00, 0x00, 0xff, 0xb5, 0x0f, 0x1c, 0x1e, 0x1c, - 0x04, 0x1c, 0x98, 0x1c, 0x01, 0x04, 0x09, 0x0c, - 0x00, 0x20, 0x81, 0xb0, 0xf7, 0xf7, 0x27, 0xfb, - 0x05, 0x1c, 0x00, 0x68, 0x00, 0x2c, 0x38, 0x60, - 0x03, 0x99, 0x01, 0x70, 0x38, 0x68, 0x46, 0x70, - 0x06, 0xd0, 0x3c, 0x00, 0x9c, 0x9f, 0x00, 0x00, - 0x20, 0x1c, 0xf7, 0xf7, 0x15, 0xfb, 0x29, 0x1c, - 0xf7, 0xf7, 0x38, 0xfa, 0x00, 0xe0, 0x2c, 0x1c, - 0x20, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0x70, 0xb5, 0x10, 0x48, 0x04, 0x68, 0x04, 0x60, - 0x0f, 0x49, 0x20, 0x20, 0x08, 0x60, 0xa0, 0x05, - 0x0e, 0x4e, 0x02, 0xd5, 0x70, 0x6a, 0xf6, 0xf7, - 0x05, 0xfa, 0xe0, 0x01, 0x02, 0xd5, 0x30, 0x6e, - 0xf6, 0xf7, 0x00, 0xfa, 0x3c, 0x00, 0xd8, 0x9f, - 0x00, 0x00, 0x0a, 0x48, 0x04, 0x40, 0x00, 0x25, - 0x07, 0xe0, 0xe0, 0x07, 0x03, 0xd5, 0xa8, 0x00, - 0x30, 0x58, 0xf6, 0xf7, 0xf6, 0xf9, 0x01, 0x35, - 0x64, 0x08, 0x00, 0x2c, 0xf5, 0xd1, 0x70, 0xbd, - 0x00, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0xff, 0xfd, - 0xff, 0xfe, 0x80, 0xb5, 0x07, 0x21, 0x80, 0x20, - 0xf7, 0xf7, 0x49, 0xf9, 0x80, 0xbd, 0x3c, 0x00, - 0x14, 0xa0, 0x00, 0x00, 0xf8, 0xb5, 0x14, 0x4b, - 0x82, 0x00, 0x9c, 0x58, 0xca, 0x06, 0x01, 0x27, - 0x39, 0x1c, 0xd2, 0x0e, 0x91, 0x40, 0x11, 0x4a, - 0x11, 0x60, 0x11, 0x4e, 0x40, 0x00, 0x85, 0x19, - 0x15, 0xe0, 0x60, 0x60, 0x20, 0x7b, 0xc1, 0x00, - 0x89, 0x19, 0x10, 0x31, 0x0a, 0x78, 0x0d, 0x23, - 0x9a, 0x43, 0x0a, 0x70, 0x39, 0x1c, 0x81, 0x40, - 0x31, 0x73, 0x07, 0x49, 0x00, 0x01, 0x08, 0x31, - 0x3c, 0x00, 0x50, 0xa0, 0x00, 0x00, 0x40, 0x18, - 0x08, 0x4a, 0x41, 0x68, 0x42, 0x60, 0x80, 0x68, - 0xf6, 0xf7, 0xbe, 0xf9, 0x28, 0x7b, 0x00, 0x28, - 0xe6, 0xd1, 0xf8, 0xbd, 0x00, 0x00, 0xa4, 0x73, - 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, 0x00, 0x60, - 0x07, 0x00, 0xd1, 0x75, 0x00, 0x00, 0x03, 0x49, - 0x01, 0x20, 0x09, 0x7a, 0x00, 0x29, 0x00, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x04, 0x7a, - 0x01, 0x00, 0x3c, 0x00, 0x8c, 0xa0, 0x00, 0x00, - 0x03, 0x49, 0x01, 0x20, 0x89, 0x7a, 0x00, 0x29, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0xb0, 0xb5, 0x00, 0x24, - 0xfa, 0xf7, 0x76, 0xfc, 0x00, 0x28, 0x14, 0xd0, - 0x01, 0x24, 0x08, 0xf0, 0x7d, 0xfe, 0x0a, 0x4d, - 0x0a, 0x4b, 0x00, 0x21, 0x5a, 0x18, 0xa0, 0x32, - 0x12, 0x78, 0x10, 0x2a, 0x06, 0xd3, 0x8a, 0x00, - 0xd2, 0x18, 0x92, 0x6f, 0x3c, 0x00, 0xc8, 0xa0, - 0x00, 0x00, 0x82, 0x1a, 0xaa, 0x42, 0x00, 0xd2, - 0x00, 0x24, 0x01, 0x31, 0x03, 0x29, 0xf0, 0xd3, - 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, 0x8b, 0x08, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x01, 0x48, - 0xc0, 0x68, 0x70, 0x47, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x16, 0x1c, 0xfd, 0xf7, 0x2e, 0xfe, 0x00, 0x20, - 0xe0, 0x60, 0x26, 0x61, 0xa5, 0x60, 0x3c, 0x00, - 0x04, 0xa1, 0x00, 0x00, 0x70, 0xbd, 0x00, 0x00, - 0xf8, 0xb5, 0x17, 0x1c, 0x0e, 0x1c, 0x04, 0x1c, - 0x00, 0x28, 0x01, 0xd0, 0x00, 0x2e, 0x01, 0xd1, - 0xf7, 0xf7, 0xf2, 0xf8, 0xa0, 0x68, 0x07, 0xf0, - 0x49, 0xf9, 0x05, 0x1c, 0x01, 0xd1, 0xf7, 0xf7, - 0xeb, 0xf8, 0x29, 0x1c, 0x6e, 0x60, 0xaf, 0x60, - 0x20, 0x1c, 0xfd, 0xf7, 0xfd, 0xfd, 0xe0, 0x68, - 0x41, 0x1c, 0xe1, 0x60, 0x00, 0x28, 0x03, 0xd1, - 0x3c, 0x00, 0x40, 0xa1, 0x00, 0x00, 0x05, 0x48, - 0x21, 0x69, 0x05, 0xf0, 0x2c, 0xf9, 0x20, 0x68, - 0xa8, 0x42, 0x02, 0xd1, 0x38, 0x1c, 0xf6, 0xf7, - 0x48, 0xf9, 0xf8, 0xbd, 0x00, 0x00, 0xc4, 0x60, - 0x01, 0x00, 0x00, 0x22, 0x01, 0x39, 0x10, 0xb5, - 0x05, 0xe0, 0x0c, 0x23, 0x53, 0x43, 0x1c, 0x18, - 0x0c, 0x34, 0xc4, 0x50, 0x01, 0x32, 0x8a, 0x42, - 0xf7, 0xd3, 0x00, 0x21, 0x0c, 0x23, 0x5a, 0x43, - 0x81, 0x50, 0x3c, 0x00, 0x7c, 0xa1, 0x00, 0x00, - 0x10, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x01, 0xd1, 0xf7, 0xf7, 0xbb, 0xf8, 0x20, 0x1c, - 0xfd, 0xf7, 0xda, 0xfd, 0x01, 0x1c, 0x85, 0x68, - 0xa0, 0x68, 0x07, 0xf0, 0x09, 0xf9, 0xe0, 0x68, - 0x01, 0x38, 0xe0, 0x60, 0x03, 0xd1, 0x06, 0x48, - 0x21, 0x69, 0x05, 0xf0, 0xe7, 0xf8, 0x21, 0x68, - 0x00, 0x29, 0x03, 0xd0, 0x88, 0x68, 0x49, 0x68, - 0xf6, 0xf7, 0x11, 0xf9, 0x3c, 0x00, 0xb8, 0xa1, - 0x00, 0x00, 0x28, 0x1c, 0xb0, 0xbd, 0xc4, 0x60, - 0x01, 0x00, 0x01, 0x21, 0x00, 0x28, 0x8c, 0xb5, - 0x00, 0xd1, 0x00, 0x21, 0x0e, 0x20, 0x09, 0xf0, - 0x32, 0xfa, 0x83, 0x20, 0x00, 0xab, 0x18, 0x80, - 0x00, 0x20, 0x04, 0xf0, 0x0c, 0xf8, 0x01, 0x90, - 0x68, 0x46, 0x03, 0xf0, 0x7a, 0xf9, 0x8c, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x08, 0xf0, 0xdf, 0xfd, - 0x06, 0x49, 0x0a, 0x89, 0x06, 0x49, 0x3c, 0x00, - 0xf4, 0xa1, 0x00, 0x00, 0x09, 0x6e, 0x41, 0x1a, - 0x0b, 0x0c, 0x59, 0x18, 0x89, 0x1a, 0x09, 0x04, - 0x09, 0x0c, 0x40, 0x1a, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x90, 0x07, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x70, 0xb5, 0x04, 0x1c, 0x88, 0x7e, 0x0d, 0x1c, - 0x20, 0x28, 0x03, 0xd9, 0x03, 0x21, 0x18, 0x20, - 0xf7, 0xf7, 0x40, 0xf8, 0x00, 0x26, 0x26, 0x76, - 0xa8, 0x7e, 0x29, 0x1c, 0x1b, 0x31, 0x60, 0x76, - 0x3c, 0x00, 0x30, 0xa2, 0x00, 0x00, 0x20, 0x1c, - 0x1d, 0x30, 0xaa, 0x7e, 0xf6, 0xf7, 0x5f, 0xf9, - 0x68, 0x68, 0x29, 0x1c, 0x60, 0x60, 0xa8, 0x68, - 0x13, 0x31, 0xa0, 0x60, 0xa8, 0x7b, 0x06, 0x22, - 0x20, 0x73, 0xe8, 0x7b, 0x60, 0x73, 0x28, 0x7c, - 0xa0, 0x73, 0x68, 0x7c, 0xe0, 0x73, 0xa8, 0x89, - 0x20, 0x82, 0xa8, 0x7c, 0xe0, 0x76, 0x26, 0x77, - 0x20, 0x1c, 0x12, 0x30, 0xa6, 0x76, 0xf6, 0xf7, - 0x46, 0xf9, 0x3c, 0x00, 0x6c, 0xa2, 0x00, 0x00, - 0x60, 0x68, 0x43, 0x1c, 0x1d, 0xd0, 0x11, 0x4d, - 0x6d, 0x61, 0x28, 0x68, 0x00, 0x28, 0x1a, 0xd0, - 0x22, 0x7b, 0x01, 0x1c, 0x0b, 0x7b, 0x9a, 0x42, - 0x01, 0xd3, 0x20, 0x60, 0x14, 0xe0, 0x0b, 0x1c, - 0x09, 0x68, 0x00, 0x29, 0x0b, 0xd0, 0x0e, 0x7b, - 0xb2, 0x42, 0x08, 0xd2, 0x0b, 0x68, 0x00, 0x2b, - 0xf0, 0xd0, 0x1e, 0x7b, 0xb2, 0x42, 0xed, 0xd3, - 0x23, 0x60, 0x0c, 0x60, 0x3c, 0x00, 0xa8, 0xa2, - 0x00, 0x00, 0x01, 0xe0, 0x21, 0x60, 0x1c, 0x60, - 0x00, 0x20, 0x70, 0xbd, 0x26, 0x60, 0x2c, 0x60, - 0xfa, 0xe7, 0xa4, 0x6e, 0x01, 0x00, 0x13, 0x4a, - 0xb0, 0xb5, 0x51, 0x68, 0x01, 0x24, 0x00, 0x29, - 0x1e, 0xd0, 0x13, 0x1d, 0xd1, 0x61, 0x13, 0x62, - 0x43, 0x68, 0x04, 0xe0, 0x10, 0x62, 0x00, 0x68, - 0xd0, 0x61, 0x00, 0x28, 0x14, 0xd0, 0xd0, 0x69, - 0x45, 0x68, 0x9d, 0x42, 0xf6, 0xd1, 0x3c, 0x00, - 0xe4, 0xa2, 0x00, 0x00, 0x10, 0x6a, 0x81, 0x42, - 0x04, 0xd1, 0x51, 0x60, 0xd0, 0x69, 0x00, 0x68, - 0x08, 0x60, 0x02, 0xe0, 0xd1, 0x69, 0x09, 0x68, - 0x01, 0x60, 0xd0, 0x69, 0xfc, 0xf7, 0xce, 0xff, - 0x00, 0x28, 0x00, 0xd0, 0x00, 0x24, 0x20, 0x1c, - 0xb0, 0xbd, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x17, 0x4d, 0x01, 0x24, 0x29, 0x68, - 0x00, 0x29, 0x27, 0xd0, 0x6d, 0x61, 0x29, 0x61, - 0x3c, 0x00, 0x20, 0xa3, 0x00, 0x00, 0x43, 0x68, - 0x04, 0xe0, 0x68, 0x61, 0x00, 0x68, 0x28, 0x61, - 0x00, 0x28, 0x1d, 0xd0, 0x28, 0x69, 0x42, 0x68, - 0x9a, 0x42, 0xf6, 0xd1, 0xaa, 0x69, 0x2b, 0x69, - 0x9a, 0x42, 0x00, 0xd1, 0xa9, 0x61, 0x6a, 0x69, - 0x91, 0x42, 0x03, 0xd1, 0x29, 0x60, 0x00, 0x68, - 0x08, 0x60, 0x06, 0xe0, 0x00, 0x68, 0x10, 0x60, - 0x28, 0x68, 0x00, 0x28, 0x01, 0xd1, 0x07, 0xf0, - 0xcc, 0xfe, 0x3c, 0x00, 0x5c, 0xa3, 0x00, 0x00, - 0x28, 0x69, 0xfc, 0xf7, 0x9d, 0xff, 0x00, 0x28, - 0x02, 0xd0, 0x00, 0x24, 0x00, 0xe0, 0x01, 0x24, - 0x20, 0x1c, 0xb0, 0xbd, 0xa4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x07, 0x48, 0x44, 0x68, - 0x07, 0xe0, 0x21, 0x1c, 0x44, 0x31, 0x28, 0x1c, - 0x00, 0xf0, 0xd6, 0xfc, 0x00, 0x28, 0x02, 0xd1, - 0x64, 0x68, 0x00, 0x2c, 0xf5, 0xd1, 0x20, 0x1c, - 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xa3, - 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0x70, 0xb5, - 0x0d, 0x1c, 0x14, 0x1c, 0x00, 0x28, 0x0b, 0x4e, - 0x08, 0xd0, 0x70, 0x6e, 0x06, 0x23, 0x58, 0x43, - 0x02, 0x04, 0x12, 0x0c, 0x31, 0x1c, 0x28, 0x1c, - 0x22, 0x80, 0x07, 0xe0, 0x21, 0x88, 0x06, 0x20, - 0xf6, 0xf7, 0xa7, 0xf9, 0x70, 0x66, 0x22, 0x88, - 0x29, 0x1c, 0x30, 0x1c, 0xf6, 0xf7, 0x95, 0xf8, - 0x01, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xa3, 0x00, 0x00, 0x10, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x03, 0x28, 0x03, 0xd8, 0x04, 0x4a, - 0xc0, 0x00, 0x11, 0x50, 0x80, 0xbd, 0x01, 0x21, - 0x26, 0x20, 0xf6, 0xf7, 0x5b, 0xff, 0x80, 0xbd, - 0x7c, 0x79, 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x1c, - 0xc0, 0x68, 0x01, 0x89, 0x39, 0x29, 0x39, 0xd3, - 0x04, 0x68, 0xa0, 0x79, 0x88, 0x28, 0x35, 0xd1, - 0xe0, 0x79, 0x8e, 0x28, 0x32, 0xd1, 0x20, 0x7a, - 0x3c, 0x00, 0x10, 0xa4, 0x00, 0x00, 0x01, 0x28, - 0x2f, 0xd1, 0x60, 0x7a, 0x03, 0x28, 0x2c, 0xd1, - 0x20, 0x7b, 0x02, 0x28, 0x01, 0xd0, 0xfe, 0x28, - 0x27, 0xd1, 0x60, 0x7b, 0x1d, 0x21, 0x08, 0x40, - 0x01, 0x28, 0x22, 0xd1, 0xa0, 0x7b, 0xc8, 0x21, - 0x08, 0x40, 0x08, 0x28, 0x1d, 0xd1, 0xa8, 0x1d, - 0xfb, 0xf7, 0xe1, 0xf9, 0x00, 0x28, 0x18, 0xd0, - 0x19, 0x20, 0x21, 0x5c, 0x00, 0x29, 0x14, 0xd1, - 0x01, 0x30, 0x3c, 0x00, 0x4c, 0xa4, 0x00, 0x00, - 0x39, 0x28, 0xf9, 0xdb, 0x68, 0x8b, 0x04, 0x21, - 0x08, 0x43, 0x68, 0x83, 0x03, 0xf0, 0xd6, 0xfe, - 0x00, 0x28, 0x09, 0xd1, 0x00, 0x23, 0x00, 0x22, - 0x26, 0x20, 0x04, 0x49, 0x09, 0xf0, 0x92, 0xf9, - 0x03, 0x48, 0x00, 0x68, 0x01, 0xf0, 0x84, 0xf9, - 0xb0, 0xbd, 0x00, 0x00, 0x50, 0xc3, 0x00, 0x00, - 0x0c, 0x79, 0x01, 0x00, 0xb0, 0xb5, 0x08, 0x4c, - 0xa3, 0x68, 0x01, 0x33, 0x3c, 0x00, 0x88, 0xa4, - 0x00, 0x00, 0xa3, 0x60, 0x0c, 0x1c, 0x09, 0xd0, - 0x25, 0x68, 0x00, 0x2d, 0x03, 0xd0, 0x23, 0x7a, - 0x61, 0x68, 0xf5, 0xf7, 0xa3, 0xff, 0x20, 0x1c, - 0xf7, 0xf7, 0xa9, 0xf9, 0xb0, 0xbd, 0x94, 0x79, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0xc0, 0x68, - 0x01, 0x89, 0x05, 0x68, 0x08, 0x29, 0x53, 0xd3, - 0x06, 0x22, 0x28, 0x1c, 0x55, 0x49, 0xf5, 0xf7, - 0x9e, 0xff, 0x00, 0x28, 0x37, 0xd1, 0x3c, 0x00, - 0xc4, 0xa4, 0x00, 0x00, 0xe9, 0x88, 0x52, 0x4e, - 0x04, 0x3e, 0x81, 0x29, 0x24, 0xd1, 0xe5, 0x68, - 0x29, 0x68, 0x08, 0x7a, 0x4a, 0x7a, 0x00, 0x02, - 0x80, 0x18, 0x00, 0x04, 0x00, 0x0c, 0x42, 0x0b, - 0x00, 0x05, 0x00, 0x0d, 0xe2, 0x75, 0x20, 0x83, - 0x4b, 0x89, 0x00, 0x20, 0x42, 0x00, 0xb2, 0x5a, - 0x9a, 0x42, 0x06, 0xd1, 0x28, 0x89, 0x0c, 0x38, - 0x02, 0x0a, 0x00, 0x02, 0x10, 0x43, 0x48, 0x81, - 0x3c, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x02, 0xe0, - 0x01, 0x30, 0x02, 0x28, 0xf1, 0xd3, 0xe0, 0x68, - 0x01, 0x89, 0x0a, 0x39, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x0a, 0x31, 0x1c, 0xe0, 0x00, 0x22, - 0x00, 0x20, 0x43, 0x00, 0xf3, 0x5a, 0x8b, 0x42, - 0x01, 0xd1, 0x01, 0x22, 0x02, 0xe0, 0x01, 0x30, - 0x02, 0x28, 0xf6, 0xd3, 0x00, 0x2a, 0x11, 0xd1, - 0x07, 0xe0, 0x36, 0x49, 0x06, 0x22, 0x06, 0x31, - 0x28, 0x1c, 0x3c, 0x00, 0x3c, 0xa5, 0x00, 0x00, - 0xf5, 0xf7, 0x5e, 0xff, 0x00, 0x28, 0x08, 0xd1, - 0xe0, 0x68, 0x01, 0x89, 0x06, 0x39, 0x01, 0x81, - 0xe0, 0x68, 0x01, 0x68, 0x06, 0x31, 0x01, 0x60, - 0x10, 0xe0, 0xe0, 0x68, 0xff, 0xf7, 0xe2, 0xfc, - 0x0c, 0xe0, 0x02, 0x31, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x02, 0x39, 0x01, 0x60, 0xe0, 0x68, - 0x00, 0x89, 0x02, 0x38, 0x02, 0x0a, 0x00, 0x02, - 0x10, 0x43, 0x08, 0x80, 0x3c, 0x00, 0x78, 0xa5, - 0x00, 0x00, 0xe0, 0x68, 0x03, 0x25, 0x02, 0x89, - 0x01, 0x68, 0x24, 0x4e, 0x02, 0x2a, 0x10, 0xd9, - 0x09, 0x88, 0x08, 0x29, 0x05, 0xd0, 0xc1, 0x23, - 0xdb, 0x00, 0x99, 0x42, 0x03, 0xd1, 0x01, 0x25, - 0x02, 0xe0, 0x00, 0x25, 0x00, 0xe0, 0x02, 0x25, - 0xe9, 0x00, 0x71, 0x58, 0x00, 0x29, 0x00, 0xd1, - 0x02, 0x25, 0xf7, 0xf7, 0x04, 0xf8, 0xe9, 0x00, - 0x89, 0x19, 0x89, 0x88, 0x88, 0x42, 0x3c, 0x00, - 0xb4, 0xa5, 0x00, 0x00, 0x00, 0xd9, 0x03, 0x25, - 0xa1, 0x1d, 0x20, 0x1c, 0xfd, 0xf7, 0x34, 0xfc, - 0x00, 0x28, 0x00, 0xd1, 0x03, 0x25, 0x02, 0x2d, - 0x05, 0xd0, 0x03, 0x2d, 0x07, 0xd1, 0xe0, 0x68, - 0xf6, 0xf7, 0xe2, 0xff, 0x70, 0xbd, 0x20, 0x1c, - 0xfd, 0xf7, 0x1c, 0xfd, 0x70, 0xbd, 0xe0, 0x68, - 0x01, 0x89, 0x02, 0x39, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x02, 0x31, 0x01, 0x60, 0xe8, 0x00, - 0x3c, 0x00, 0xf0, 0xa5, 0x00, 0x00, 0x31, 0x58, - 0x20, 0x1c, 0xf5, 0xf7, 0xf1, 0xfe, 0x00, 0x28, - 0xef, 0xd1, 0xe0, 0x68, 0x01, 0x89, 0x02, 0x31, - 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, 0x02, 0x39, - 0x01, 0x60, 0xe3, 0xe7, 0x00, 0x00, 0x6a, 0x46, - 0x01, 0x00, 0x7c, 0x79, 0x01, 0x00, 0x70, 0xb5, - 0x0e, 0x1c, 0x04, 0x1c, 0x15, 0x1c, 0xf7, 0xf7, - 0x8c, 0xfb, 0x00, 0x28, 0x2a, 0xd0, 0x1b, 0x49, - 0x08, 0x68, 0x3c, 0x00, 0x2c, 0xa6, 0x00, 0x00, - 0x01, 0x30, 0x08, 0x60, 0x00, 0x2e, 0x0a, 0xd0, - 0x01, 0x2e, 0x0b, 0xd0, 0x02, 0x2e, 0x0f, 0xd1, - 0x20, 0x1c, 0x04, 0xf0, 0xcd, 0xf8, 0x20, 0x1c, - 0xff, 0xf7, 0xd6, 0xfe, 0x0c, 0xe0, 0x08, 0x21, - 0xe0, 0x68, 0x02, 0xe0, 0xc1, 0x21, 0xe0, 0x68, - 0xc9, 0x00, 0x04, 0xf0, 0x35, 0xf9, 0x03, 0xe0, - 0x02, 0x21, 0x26, 0x20, 0xf6, 0xf7, 0x20, 0xfe, - 0xe2, 0x7d, 0xe1, 0x6a, 0x3c, 0x00, 0x68, 0xa6, - 0x00, 0x00, 0x28, 0x1c, 0xfc, 0xf7, 0x95, 0xfb, - 0x20, 0x63, 0x00, 0x20, 0x20, 0x62, 0xa0, 0x62, - 0x20, 0x1c, 0x00, 0xf0, 0x6c, 0xfe, 0x70, 0xbd, - 0xe0, 0x68, 0xf6, 0xf7, 0x8a, 0xff, 0x00, 0x2d, - 0xf9, 0xd0, 0xe3, 0x7d, 0x00, 0x22, 0x01, 0x20, - 0xe1, 0x6a, 0xf5, 0xf7, 0xa7, 0xfe, 0x70, 0xbd, - 0x00, 0x00, 0x94, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x28, 0x04, 0xd1, 0x05, 0x48, 0x3c, 0x00, - 0xa4, 0xa6, 0x00, 0x00, 0x00, 0x68, 0x01, 0xf0, - 0x09, 0xf9, 0x80, 0xbd, 0x03, 0x21, 0x26, 0x20, - 0xf6, 0xf7, 0xf8, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x0c, 0x79, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x80, 0x79, 0x00, 0x24, 0xc0, 0x07, 0x2d, 0xd5, - 0xf0, 0x68, 0x00, 0x68, 0x41, 0x7a, 0x11, 0x29, - 0x28, 0xd1, 0xc1, 0x88, 0x0a, 0x0a, 0x09, 0x02, - 0x11, 0x43, 0xc9, 0x04, 0x22, 0xd1, 0x01, 0x78, - 0x3c, 0x00, 0xe0, 0xa6, 0x00, 0x00, 0x11, 0x4f, - 0x09, 0x07, 0x89, 0x0e, 0x08, 0x18, 0x41, 0x88, - 0x0a, 0x0a, 0x09, 0x02, 0x11, 0x43, 0x0d, 0x04, - 0x2d, 0x0c, 0x43, 0x2d, 0x39, 0x68, 0x01, 0xd1, - 0xca, 0x07, 0x0e, 0xd4, 0x44, 0x2d, 0x06, 0xd1, - 0xc9, 0x07, 0x04, 0xd5, 0x24, 0x30, 0x00, 0xf0, - 0x22, 0xfb, 0x00, 0x28, 0x05, 0xd0, 0x06, 0x48, - 0x85, 0x42, 0x06, 0xd1, 0x38, 0x68, 0x80, 0x07, - 0x03, 0xd5, 0x3c, 0x00, 0x1c, 0xa7, 0x00, 0x00, - 0x01, 0x24, 0xf0, 0x68, 0xf6, 0xf7, 0x3a, 0xff, - 0x20, 0x1c, 0xf8, 0xbd, 0x7c, 0x5a, 0x01, 0x00, - 0x6c, 0x07, 0x00, 0x00, 0x80, 0xb5, 0x00, 0x28, - 0x07, 0xd0, 0x00, 0x21, 0x26, 0x20, 0x08, 0xf0, - 0x7b, 0xff, 0x02, 0x48, 0x00, 0x68, 0x01, 0xf0, - 0xbb, 0xf8, 0x80, 0xbd, 0x0c, 0x79, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x09, 0x4a, 0x08, 0x1c, - 0x51, 0x68, 0x01, 0x31, 0x3c, 0x00, 0x58, 0xa7, - 0x00, 0x00, 0x51, 0x60, 0x00, 0x21, 0x21, 0x62, - 0xa1, 0x62, 0xe2, 0x7d, 0xe1, 0x6a, 0xfc, 0xf7, - 0x18, 0xfb, 0x20, 0x63, 0x20, 0x1c, 0xf7, 0xf7, - 0xe6, 0xfa, 0x20, 0x1c, 0x00, 0xf0, 0xef, 0xfd, - 0x10, 0xbd, 0x94, 0x79, 0x01, 0x00, 0x0c, 0xb5, - 0x02, 0x1c, 0x08, 0x1c, 0x00, 0x21, 0x01, 0x91, - 0x00, 0x92, 0x6a, 0x46, 0x01, 0xa9, 0x00, 0xf0, - 0x02, 0xf8, 0x0c, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xa7, 0x00, 0x00, 0x70, 0xb5, 0x13, 0x68, - 0x00, 0x2b, 0x1e, 0xd0, 0x00, 0x26, 0x0b, 0x68, - 0x00, 0x2b, 0x02, 0xd1, 0x13, 0x68, 0x1b, 0x68, - 0x0b, 0x60, 0x13, 0x68, 0x1c, 0x68, 0x1b, 0x89, - 0xe5, 0x18, 0x08, 0xe0, 0x5c, 0x78, 0x1c, 0x19, - 0x02, 0x34, 0x0c, 0x60, 0x1c, 0x78, 0x84, 0x42, - 0x01, 0xd1, 0x18, 0x1c, 0x70, 0xbd, 0x0b, 0x68, - 0xab, 0x42, 0xf3, 0xd3, 0x13, 0x68, 0xdb, 0x68, - 0x3c, 0x00, 0xd0, 0xa7, 0x00, 0x00, 0x13, 0x60, - 0x0e, 0x60, 0x13, 0x68, 0x00, 0x2b, 0xe1, 0xd1, - 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, 0x70, 0xb5, - 0x03, 0x1c, 0x20, 0xd0, 0x18, 0x68, 0x1e, 0x89, - 0x05, 0x1c, 0x16, 0xe0, 0x04, 0x78, 0xdd, 0x2c, - 0x10, 0xd1, 0x84, 0x78, 0x00, 0x2c, 0x0d, 0xd1, - 0xc4, 0x78, 0x50, 0x2c, 0x0a, 0xd1, 0x04, 0x79, - 0xf2, 0x2c, 0x07, 0xd1, 0x44, 0x79, 0x8c, 0x42, - 0x04, 0xd1, 0x3c, 0x00, 0x0c, 0xa8, 0x00, 0x00, - 0x02, 0x29, 0x0c, 0xd1, 0x84, 0x79, 0x94, 0x42, - 0x09, 0xd0, 0x44, 0x78, 0x20, 0x18, 0x02, 0x30, - 0x44, 0x1b, 0xb4, 0x42, 0xe5, 0xdb, 0xdb, 0x68, - 0x00, 0x2b, 0xde, 0xd1, 0x00, 0x20, 0x70, 0xbd, - 0x04, 0x49, 0x80, 0xb5, 0x0a, 0x78, 0x0a, 0x20, - 0x00, 0x2a, 0x00, 0xd0, 0x48, 0x6a, 0x00, 0xf0, - 0xd1, 0xf8, 0x80, 0xbd, 0x1c, 0x75, 0x01, 0x00, - 0xb0, 0xb5, 0x17, 0x4c, 0x3c, 0x00, 0x48, 0xa8, - 0x00, 0x00, 0x20, 0x68, 0x00, 0x28, 0x29, 0xd0, - 0x16, 0x4d, 0xe8, 0x69, 0x00, 0x28, 0x25, 0xd1, - 0x01, 0xf0, 0x3f, 0xfa, 0x00, 0x28, 0x21, 0xd1, - 0xff, 0xf7, 0x41, 0xfc, 0x00, 0x28, 0x1d, 0xd1, - 0x20, 0x68, 0xa9, 0x69, 0x40, 0x18, 0x08, 0xf0, - 0xd6, 0xf9, 0x00, 0x28, 0x16, 0xd0, 0x02, 0xf0, - 0x06, 0xfd, 0x21, 0x68, 0x40, 0x18, 0x08, 0xf0, - 0xce, 0xf9, 0x00, 0x28, 0x0e, 0xd0, 0x3c, 0x00, - 0x84, 0xa8, 0x00, 0x00, 0x01, 0x20, 0xe8, 0x61, - 0x00, 0x22, 0x25, 0x21, 0x80, 0x20, 0x08, 0xf0, - 0x8f, 0xff, 0x06, 0x48, 0x29, 0x6a, 0x04, 0xf0, - 0x83, 0xfd, 0x01, 0x21, 0x28, 0x6a, 0x00, 0xf0, - 0x89, 0xff, 0xb0, 0xbd, 0xe8, 0x59, 0x01, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x00, 0x24, 0xfa, 0xf7, - 0x0b, 0xff, 0x18, 0x4e, 0x71, 0x6a, 0x40, 0x18, - 0x3c, 0x00, 0xc0, 0xa8, 0x00, 0x00, 0x00, 0xf0, - 0x8e, 0xf8, 0x00, 0x28, 0x0b, 0xd1, 0x04, 0xf0, - 0xfe, 0xfb, 0x00, 0x21, 0x25, 0x20, 0x08, 0xf0, - 0xb0, 0xfe, 0x03, 0x22, 0x29, 0x1c, 0x28, 0x1c, - 0x00, 0xf0, 0xaf, 0xf8, 0x18, 0xe0, 0x70, 0x6a, - 0x44, 0x1e, 0x00, 0xf0, 0x7c, 0xf8, 0x00, 0x28, - 0x12, 0xd1, 0x0c, 0x48, 0x31, 0x6a, 0x04, 0xf0, - 0x56, 0xfd, 0x01, 0x21, 0x30, 0x6a, 0x00, 0xf0, - 0x5c, 0xff, 0x3c, 0x00, 0xfc, 0xa8, 0x00, 0x00, - 0x00, 0x20, 0xfa, 0xf7, 0x0d, 0xfe, 0x06, 0xf0, - 0x03, 0xf8, 0x00, 0x23, 0x00, 0x22, 0x25, 0x20, - 0x05, 0x49, 0x08, 0xf0, 0x3f, 0xff, 0x20, 0x1c, - 0x07, 0xf0, 0xfc, 0xfa, 0x70, 0xbd, 0x00, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x10, 0x27, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x28, - 0x07, 0xd0, 0x80, 0x28, 0x0d, 0xd1, 0x00, 0x22, - 0x00, 0x21, 0x08, 0x48, 0x3c, 0x00, 0x38, 0xa9, - 0x00, 0x00, 0xf8, 0xf7, 0x9a, 0xfe, 0x80, 0xbd, - 0x01, 0x29, 0x02, 0xd1, 0x06, 0x49, 0x00, 0x20, - 0xc8, 0x61, 0x04, 0xf0, 0xbe, 0xfb, 0x80, 0xbd, - 0x05, 0x21, 0x25, 0x20, 0xf6, 0xf7, 0xa7, 0xfc, - 0x80, 0xbd, 0x61, 0xa9, 0x00, 0x00, 0x1c, 0x75, - 0x01, 0x00, 0x00, 0x21, 0x00, 0x28, 0x80, 0xb5, - 0x01, 0xd1, 0x03, 0x48, 0x41, 0x68, 0x01, 0x22, - 0x25, 0x20, 0x08, 0xf0, 0x2c, 0xfe, 0x3c, 0x00, - 0x74, 0xa9, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0xe8, 0x59, 0x01, 0x00, 0x02, 0x49, 0xc8, 0x68, - 0x01, 0x38, 0x48, 0x62, 0x70, 0x47, 0x00, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, - 0x08, 0x1c, 0x19, 0x1c, 0x11, 0x4b, 0x06, 0xd0, - 0x01, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x19, 0x1c, - 0xf5, 0xf7, 0xaa, 0xfd, 0x17, 0xe0, 0x0d, 0x4d, - 0x01, 0x1c, 0x2c, 0x78, 0x12, 0x88, 0x18, 0x1c, - 0x3c, 0x00, 0xb0, 0xa9, 0x00, 0x00, 0xf5, 0xf7, - 0xa2, 0xfd, 0x28, 0x78, 0x84, 0x42, 0x0d, 0xd0, - 0x00, 0x23, 0x6b, 0x61, 0x00, 0x28, 0x03, 0xd0, - 0x00, 0x20, 0x07, 0xf0, 0xa4, 0xfa, 0x05, 0xe0, - 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, 0x00, 0x92, - 0xf8, 0xf7, 0x23, 0xfc, 0x01, 0x20, 0x38, 0xbd, - 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x01, 0x26, 0x08, 0xf0, 0xe1, 0xf9, - 0x05, 0x1c, 0x3c, 0x00, 0xec, 0xa9, 0x00, 0x00, - 0x00, 0x20, 0xfa, 0xf7, 0x8b, 0xfd, 0x44, 0x43, - 0x02, 0xf0, 0x40, 0xfc, 0x02, 0xf0, 0x3e, 0xfc, - 0x01, 0x1c, 0x23, 0x1c, 0x00, 0x22, 0x28, 0x1c, - 0x08, 0xf0, 0x7c, 0xfa, 0x00, 0x28, 0x13, 0xd1, - 0x0a, 0x48, 0x23, 0x1c, 0x00, 0x22, 0x81, 0x69, - 0x28, 0x1c, 0x08, 0xf0, 0x73, 0xfa, 0x00, 0x28, - 0x0a, 0xd1, 0xf8, 0xf7, 0x19, 0xfc, 0x01, 0x1c, - 0x23, 0x1c, 0x00, 0x22, 0x3c, 0x00, 0x28, 0xaa, - 0x00, 0x00, 0x28, 0x1c, 0x08, 0xf0, 0x69, 0xfa, - 0x00, 0x28, 0x00, 0xd1, 0x00, 0x26, 0x30, 0x1c, - 0x70, 0xbd, 0x1c, 0x75, 0x01, 0x00, 0x70, 0xb5, - 0x0d, 0x1c, 0x04, 0x1c, 0x16, 0x1c, 0x07, 0xf0, - 0x76, 0xf9, 0x00, 0x28, 0x0d, 0xd0, 0xfa, 0xf7, - 0x52, 0xfe, 0x00, 0x28, 0x09, 0xd0, 0xff, 0x30, - 0x01, 0x30, 0x43, 0x68, 0x00, 0x2b, 0x04, 0xd0, - 0x22, 0x1c, 0x29, 0x1c, 0x30, 0x1c, 0x3c, 0x00, - 0x64, 0xaa, 0x00, 0x00, 0xf5, 0xf7, 0xbb, 0xfc, - 0x70, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x1d, 0x20, 0x08, 0xf0, 0xdf, 0xfd, 0x07, 0x4a, - 0x07, 0x48, 0x11, 0x69, 0x01, 0x60, 0x51, 0x69, - 0x41, 0x60, 0x06, 0x49, 0x49, 0x68, 0x81, 0x60, - 0x00, 0x21, 0xc1, 0x60, 0x03, 0xf0, 0x74, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x28, 0x61, 0x01, 0x00, - 0x48, 0x75, 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, - 0x3c, 0x00, 0xa0, 0xaa, 0x00, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x40, 0x6b, 0x00, 0x28, 0x35, 0xd0, - 0x1d, 0x4d, 0x00, 0x26, 0x28, 0x78, 0x00, 0x28, - 0x24, 0xd0, 0x41, 0x20, 0x00, 0x5d, 0x00, 0x28, - 0x03, 0xd1, 0x08, 0xf0, 0x76, 0xf9, 0xa8, 0x61, - 0x1b, 0xe0, 0x69, 0x69, 0x01, 0x31, 0x69, 0x61, - 0xa8, 0x68, 0x00, 0x28, 0x08, 0xd0, 0x81, 0x42, - 0x06, 0xd1, 0x20, 0x69, 0x01, 0x1c, 0x10, 0x31, - 0x04, 0x30, 0x3c, 0x00, 0xdc, 0xaa, 0x00, 0x00, - 0x82, 0x22, 0xff, 0xf7, 0xad, 0xff, 0x68, 0x68, - 0x00, 0x28, 0x0a, 0xd0, 0x69, 0x69, 0x81, 0x42, - 0x07, 0xd1, 0x20, 0x69, 0x01, 0x1c, 0x10, 0x31, - 0x04, 0x30, 0x02, 0x22, 0xff, 0xf7, 0xa0, 0xff, - 0x6e, 0x61, 0x68, 0x78, 0x05, 0x21, 0x08, 0x40, - 0x08, 0xd0, 0x07, 0x48, 0x00, 0x78, 0x0e, 0x28, - 0x03, 0xd3, 0x60, 0x34, 0xe0, 0x79, 0xfb, 0xf7, - 0xcf, 0xff, 0x70, 0xbd, 0x3c, 0x00, 0x18, 0xab, - 0x00, 0x00, 0x03, 0x48, 0x06, 0x60, 0x70, 0xbd, - 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, 0x10, 0x67, - 0x01, 0x00, 0xd4, 0x7e, 0x01, 0x00, 0x80, 0x02, - 0x70, 0x47, 0x14, 0x23, 0x30, 0xb5, 0x09, 0x4d, - 0x4b, 0x43, 0x5b, 0x19, 0x5b, 0x68, 0x08, 0x24, - 0x00, 0x2b, 0x00, 0xd1, 0x02, 0x24, 0x38, 0x23, - 0x5a, 0x43, 0x05, 0x4b, 0x89, 0x00, 0xd2, 0x18, - 0x51, 0x5a, 0x02, 0x68, 0x09, 0x19, 0x3c, 0x00, - 0x54, 0xab, 0x00, 0x00, 0x51, 0x1a, 0x01, 0x60, - 0x30, 0xbd, 0x00, 0x00, 0x74, 0x40, 0x01, 0x00, - 0x8c, 0x41, 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, - 0x2c, 0x48, 0x14, 0x1c, 0x2c, 0x4a, 0x48, 0x43, - 0x86, 0x46, 0x80, 0x18, 0x80, 0x0d, 0x84, 0x46, - 0x2b, 0x48, 0x2a, 0x4a, 0x06, 0x26, 0x1d, 0x1c, - 0x48, 0x43, 0x4a, 0x43, 0x0e, 0x2f, 0x40, 0xd2, - 0x01, 0xa3, 0xdb, 0x5d, 0x5b, 0x00, 0x9f, 0x44, - 0x3c, 0x00, 0x90, 0xab, 0x00, 0x00, 0x06, 0x08, - 0x0a, 0x0f, 0x14, 0x18, 0x1d, 0x20, 0x27, 0x24, - 0x27, 0x2b, 0x2f, 0x31, 0xc8, 0x00, 0x1f, 0xe0, - 0x88, 0x00, 0x1d, 0xe0, 0x21, 0x49, 0x70, 0x46, - 0x40, 0x18, 0x00, 0x0d, 0x18, 0xe0, 0x1f, 0x4a, - 0x80, 0x18, 0x80, 0x0d, 0x40, 0x18, 0x21, 0xe0, - 0x1e, 0x48, 0x10, 0x18, 0x00, 0x0d, 0x1d, 0xe0, - 0x1d, 0x49, 0x70, 0x46, 0x40, 0x18, 0x40, 0x0d, - 0x0a, 0xe0, 0x3c, 0x00, 0xcc, 0xab, 0x00, 0x00, - 0x1b, 0x49, 0x40, 0x18, 0x01, 0xe0, 0x1b, 0x48, - 0x10, 0x18, 0x40, 0x0d, 0x11, 0xe0, 0x1a, 0x49, - 0x40, 0x18, 0x05, 0xe0, 0x60, 0x46, 0x20, 0x80, - 0x00, 0x20, 0x16, 0xe0, 0x17, 0x48, 0x10, 0x18, - 0x80, 0x0d, 0x06, 0xe0, 0x16, 0x49, 0x02, 0xe0, - 0x16, 0x48, 0x48, 0x43, 0x16, 0x49, 0x40, 0x18, - 0xc0, 0x0d, 0x03, 0x30, 0x80, 0x08, 0x80, 0x00, - 0x20, 0x80, 0x2e, 0x80, 0x3c, 0x00, 0x08, 0xac, - 0x00, 0x00, 0xf8, 0xbd, 0xff, 0x21, 0xff, 0x20, - 0xf6, 0xf7, 0x49, 0xfb, 0x00, 0x20, 0x20, 0x80, - 0x28, 0x80, 0xf6, 0xe7, 0x00, 0x00, 0xd1, 0x45, - 0x17, 0x00, 0xff, 0xff, 0x3f, 0x00, 0xe3, 0x38, - 0x0e, 0x00, 0x55, 0x55, 0x15, 0x00, 0xff, 0xff, - 0x0f, 0x00, 0xa9, 0xaa, 0x2a, 0x01, 0x70, 0x1c, - 0x37, 0x00, 0xff, 0xff, 0x1f, 0x00, 0xcb, 0xcc, - 0x4c, 0x00, 0x70, 0x1c, 0x47, 0x00, 0x3c, 0x00, - 0x44, 0xac, 0x00, 0x00, 0xa9, 0xaa, 0x7a, 0x00, - 0x70, 0x1c, 0x67, 0x00, 0xa9, 0xaa, 0xba, 0x00, - 0x84, 0xf6, 0x12, 0x00, 0xec, 0x25, 0xb4, 0x00, - 0x04, 0x49, 0x00, 0x28, 0x01, 0xd0, 0x09, 0x22, - 0x00, 0xe0, 0x14, 0x22, 0x4a, 0x80, 0x48, 0x60, - 0x70, 0x47, 0x00, 0x00, 0xa4, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0x06, 0x22, 0xf5, 0xf7, 0x40, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0xbc, 0xb5, 0x15, 0x1c, - 0x3c, 0x00, 0x80, 0xac, 0x00, 0x00, 0x04, 0x1c, - 0x04, 0x31, 0x09, 0x04, 0x09, 0x0c, 0x01, 0xaa, - 0x6b, 0x46, 0xff, 0xf7, 0x6a, 0xff, 0x38, 0x20, - 0x06, 0x49, 0x68, 0x43, 0x40, 0x18, 0xa1, 0x00, - 0x40, 0x5a, 0x00, 0xab, 0x99, 0x88, 0x40, 0x18, - 0x19, 0x88, 0x40, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0xbc, 0xbd, 0x8c, 0x41, 0x01, 0x00, 0xbc, 0xb5, - 0x04, 0x1c, 0x15, 0x1c, 0x01, 0xaa, 0x6b, 0x46, - 0xff, 0xf7, 0x3c, 0x00, 0xbc, 0xac, 0x00, 0x00, - 0x53, 0xff, 0x38, 0x20, 0x05, 0x49, 0x68, 0x43, - 0x40, 0x18, 0xa1, 0x00, 0x40, 0x5a, 0x00, 0xab, - 0x99, 0x88, 0x40, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0xbc, 0xbd, 0x00, 0x00, 0x8c, 0x41, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x28, 0x0f, 0xd0, 0x00, 0x29, - 0x0d, 0xd0, 0x02, 0x78, 0x0b, 0x78, 0x9a, 0x42, - 0x09, 0xd1, 0xff, 0x2a, 0x05, 0xd0, 0x42, 0x78, - 0x02, 0x32, 0xf5, 0xf7, 0x3c, 0x00, 0xf8, 0xac, - 0x00, 0x00, 0x81, 0xfb, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x06, 0x22, 0x04, 0x49, - 0xf5, 0xf7, 0x75, 0xfb, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x5e, 0x40, 0x01, 0x00, 0x01, 0x1c, - 0x49, 0x78, 0x01, 0x20, 0x00, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xad, 0x00, 0x00, 0x80, 0xb5, 0x06, 0x22, - 0xf5, 0xf7, 0x60, 0xfb, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, - 0x80, 0xb5, 0xff, 0xf7, 0xc7, 0xff, 0x80, 0xbd, - 0x80, 0xb5, 0x06, 0x22, 0x04, 0x49, 0xf5, 0xf7, - 0x51, 0xfb, 0x00, 0x28, 0x01, 0xd1, 0x01, 0x20, - 0x80, 0xbd, 0x00, 0x20, 0x80, 0xbd, 0x00, 0x00, - 0x12, 0x61, 0x01, 0x00, 0x01, 0x1c, 0x80, 0x20, - 0x3c, 0x00, 0x70, 0xad, 0x00, 0x00, 0x81, 0x43, - 0x8a, 0x08, 0x0e, 0x20, 0x1c, 0x2a, 0x10, 0xb5, - 0x06, 0xd2, 0x03, 0x4c, 0x52, 0x00, 0xa3, 0x5c, - 0x8b, 0x42, 0x01, 0xd1, 0x10, 0x19, 0x40, 0x78, - 0x10, 0xbd, 0xfc, 0x41, 0x01, 0x00, 0x14, 0x23, - 0x02, 0x49, 0x58, 0x43, 0x40, 0x18, 0x40, 0x68, - 0x70, 0x47, 0x74, 0x40, 0x01, 0x00, 0x20, 0x22, - 0x01, 0x1c, 0x80, 0xb5, 0x02, 0x48, 0xf5, 0xf7, - 0x52, 0xfd, 0x3c, 0x00, 0xac, 0xad, 0x00, 0x00, - 0x80, 0xbd, 0x00, 0x00, 0x48, 0x61, 0x01, 0x00, - 0x08, 0x06, 0x00, 0x0e, 0x02, 0x28, 0x01, 0xd1, - 0x00, 0x20, 0x70, 0x47, 0x01, 0x20, 0x70, 0x47, - 0x00, 0x29, 0x0c, 0xd0, 0x07, 0x49, 0x09, 0x68, - 0x00, 0x29, 0x08, 0xd0, 0x14, 0x23, 0x06, 0x49, - 0x58, 0x43, 0x40, 0x18, 0xc0, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xad, - 0x00, 0x00, 0xac, 0x69, 0x01, 0x00, 0x74, 0x40, - 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x06, 0x22, - 0x01, 0x1c, 0x04, 0x48, 0xf5, 0xf7, 0x7d, 0xfb, - 0x06, 0x22, 0x21, 0x1c, 0x03, 0x48, 0xf5, 0xf7, - 0x78, 0xfb, 0x10, 0xbd, 0x00, 0x00, 0x12, 0x61, - 0x01, 0x00, 0x40, 0x80, 0x07, 0x00, 0x00, 0x29, - 0x01, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x38, 0x23, - 0x5a, 0x43, 0x07, 0x4b, 0xd2, 0x18, 0x3c, 0x00, - 0x24, 0xae, 0x00, 0x00, 0x83, 0x00, 0xd2, 0x5a, - 0x14, 0x23, 0x58, 0x43, 0x05, 0x4b, 0xc0, 0x18, - 0x40, 0x88, 0x10, 0x18, 0x08, 0x1a, 0x0a, 0x38, - 0x00, 0x04, 0x00, 0x0c, 0x70, 0x47, 0x00, 0x00, - 0x8c, 0x41, 0x01, 0x00, 0x74, 0x40, 0x01, 0x00, - 0xf8, 0xb5, 0x07, 0x1c, 0x08, 0x1c, 0x16, 0x1c, - 0x1c, 0x1c, 0x19, 0x1c, 0x00, 0xf0, 0x5a, 0xf8, - 0x05, 0x1c, 0x14, 0x35, 0x22, 0x1c, 0x31, 0x1c, - 0x3c, 0x00, 0x60, 0xae, 0x00, 0x00, 0x38, 0x1c, - 0xff, 0xf7, 0x0b, 0xff, 0x28, 0x18, 0x00, 0x04, - 0x00, 0x0c, 0xf8, 0xbd, 0x00, 0x00, 0x00, 0xb5, - 0x00, 0xf0, 0x4b, 0xf8, 0x0a, 0x30, 0x00, 0x04, - 0x00, 0x0c, 0x00, 0xbd, 0x00, 0x00, 0xf8, 0xb5, - 0x07, 0x1c, 0x08, 0x1c, 0x16, 0x1c, 0x1c, 0x1c, - 0x19, 0x1c, 0x00, 0xf0, 0x3e, 0xf8, 0x45, 0x00, - 0x1e, 0x35, 0x22, 0x1c, 0x31, 0x1c, 0x38, 0x1c, - 0xff, 0xf7, 0x3c, 0x00, 0x9c, 0xae, 0x00, 0x00, - 0xef, 0xfe, 0x28, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0xf8, 0xbd, 0x00, 0x00, 0xff, 0xb5, 0x0f, 0x1c, - 0x81, 0xb0, 0x0a, 0xa9, 0x14, 0x1c, 0x1e, 0x1c, - 0x03, 0xc9, 0x00, 0xf0, 0x29, 0xf8, 0x05, 0x1c, - 0x1e, 0x35, 0x21, 0x1c, 0x30, 0x1c, 0x00, 0xf0, - 0x23, 0xf8, 0x2d, 0x18, 0x22, 0x1c, 0x39, 0x1c, - 0x01, 0x98, 0xff, 0xf7, 0xd5, 0xfe, 0x28, 0x18, - 0x00, 0x04, 0x00, 0x0c, 0x3c, 0x00, 0xd8, 0xae, - 0x00, 0x00, 0x05, 0xb0, 0xf0, 0xbd, 0x0a, 0x49, - 0x80, 0xb5, 0x09, 0x88, 0x09, 0x29, 0x04, 0xd0, - 0x14, 0x29, 0x07, 0xd1, 0x01, 0x01, 0x80, 0x00, - 0x00, 0xe0, 0xc1, 0x00, 0x08, 0x18, 0x00, 0x04, - 0x00, 0x0c, 0x80, 0xbd, 0xff, 0x21, 0xff, 0x20, - 0xf6, 0xf7, 0xd1, 0xf9, 0x00, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0xa6, 0x69, 0x01, 0x00, 0x38, 0x23, - 0x59, 0x43, 0x06, 0x4a, 0x14, 0x23, 0x3c, 0x00, - 0x14, 0xaf, 0x00, 0x00, 0x89, 0x18, 0x82, 0x00, - 0x89, 0x5a, 0x05, 0x4a, 0x58, 0x43, 0x80, 0x18, - 0x40, 0x88, 0x08, 0x18, 0x00, 0x04, 0x00, 0x0c, - 0x70, 0x47, 0x00, 0x00, 0x8c, 0x41, 0x01, 0x00, - 0x74, 0x40, 0x01, 0x00, 0x02, 0x48, 0x03, 0x49, - 0x00, 0x68, 0x40, 0x00, 0x08, 0x5a, 0x70, 0x47, - 0xa8, 0x69, 0x01, 0x00, 0x54, 0x40, 0x01, 0x00, - 0x0a, 0x20, 0x70, 0x47, 0x10, 0xb5, 0x04, 0x1c, - 0x3c, 0x00, 0x50, 0xaf, 0x00, 0x00, 0xfd, 0xf7, - 0x62, 0xff, 0x20, 0x1c, 0x10, 0xbd, 0xb0, 0xb5, - 0x04, 0x1c, 0xc0, 0x68, 0x05, 0x68, 0xa0, 0x1d, - 0xff, 0xf7, 0xf5, 0xfe, 0x00, 0x28, 0x18, 0xd0, - 0x21, 0x1c, 0x14, 0x31, 0x20, 0x1c, 0x08, 0xf0, - 0xe2, 0xfd, 0x00, 0x28, 0x11, 0xd0, 0x29, 0x88, - 0x09, 0x48, 0x20, 0x22, 0x81, 0x82, 0x69, 0x88, - 0x01, 0x83, 0xa9, 0x88, 0x06, 0x35, 0x41, 0x83, - 0xc5, 0x61, 0x3c, 0x00, 0x8c, 0xaf, 0x00, 0x00, - 0x30, 0x21, 0x09, 0x5d, 0x11, 0x54, 0x61, 0x6b, - 0x41, 0x62, 0x01, 0x20, 0xf7, 0xf7, 0x28, 0xf8, - 0x20, 0x1c, 0xb0, 0xbd, 0x70, 0x7c, 0x01, 0x00, - 0x70, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0x21, 0x1c, - 0x14, 0x31, 0x05, 0x68, 0x20, 0x1c, 0x08, 0xf0, - 0xc1, 0xfd, 0x00, 0x28, 0x08, 0xd0, 0x05, 0x4e, - 0xf0, 0x68, 0x02, 0xf0, 0xcf, 0xfd, 0x28, 0x88, - 0xf0, 0x82, 0x03, 0x20, 0x3c, 0x00, 0xc8, 0xaf, - 0x00, 0x00, 0xf7, 0xf7, 0x10, 0xf8, 0x20, 0x1c, - 0x70, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x3e, 0xb5, - 0x04, 0x1c, 0xc0, 0x68, 0x05, 0x68, 0xa0, 0x1d, - 0xff, 0xf7, 0xb7, 0xfe, 0x00, 0x28, 0x21, 0xd0, - 0x21, 0x1c, 0x14, 0x31, 0x20, 0x1c, 0x02, 0xaa, - 0x08, 0xf0, 0x77, 0xfd, 0x00, 0x28, 0x19, 0xd0, - 0x02, 0x98, 0x4b, 0x21, 0x09, 0x5c, 0x00, 0x29, - 0x10, 0xd0, 0x01, 0x29, 0x14, 0xd0, 0x3c, 0x00, - 0x04, 0xb0, 0x00, 0x00, 0x02, 0x29, 0x0c, 0xd1, - 0x29, 0x88, 0x0d, 0x20, 0x00, 0xab, 0x18, 0x80, - 0x20, 0x1c, 0x03, 0xf0, 0x51, 0xf8, 0x01, 0x90, - 0x68, 0x46, 0x02, 0xf0, 0x5d, 0xfa, 0xf6, 0xf7, - 0xb5, 0xf8, 0x00, 0x21, 0x02, 0x98, 0x06, 0xf0, - 0x9f, 0xfe, 0x20, 0x1c, 0x3e, 0xbd, 0x07, 0xf0, - 0x29, 0xf8, 0x02, 0x98, 0x00, 0x21, 0x80, 0x69, - 0xc2, 0x07, 0xd2, 0x0f, 0x04, 0x20, 0xf6, 0xf7, - 0x3c, 0x00, 0x40, 0xb0, 0x00, 0x00, 0x7f, 0xff, - 0xee, 0xe7, 0x10, 0xb5, 0x04, 0x1c, 0xfd, 0xf7, - 0xe6, 0xfe, 0x20, 0x1c, 0x10, 0xbd, 0x3e, 0xb5, - 0x05, 0x1c, 0x00, 0xf0, 0x40, 0xfe, 0x00, 0x28, - 0x15, 0xd1, 0x28, 0x1c, 0x14, 0x30, 0xfa, 0xf7, - 0xce, 0xfb, 0x00, 0x28, 0x0f, 0xd0, 0x05, 0x21, - 0x28, 0x69, 0xff, 0xf7, 0x86, 0xfb, 0x04, 0x1c, - 0x09, 0xd0, 0x05, 0x22, 0x21, 0x1c, 0x68, 0x46, - 0xf5, 0xf7, 0x3c, 0x00, 0x7c, 0xb0, 0x00, 0x00, - 0x3d, 0xfa, 0x05, 0x34, 0x02, 0x94, 0x68, 0x46, - 0x03, 0xf0, 0x1a, 0xfb, 0x2a, 0x1c, 0x0d, 0x21, - 0x8f, 0x20, 0x08, 0xf0, 0x8f, 0xfb, 0x00, 0x20, - 0x3e, 0xbd, 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0xfa, 0xf7, 0x98, 0xf8, 0x20, 0x1c, 0x05, 0xf0, - 0xe5, 0xf8, 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x00, 0x69, 0x00, 0x21, - 0x94, 0xb0, 0xff, 0xf7, 0x3c, 0x00, 0xb8, 0xb0, - 0x00, 0x00, 0x61, 0xfb, 0x69, 0x46, 0xfb, 0xf7, - 0x26, 0xf8, 0x00, 0x28, 0x1e, 0xd0, 0x00, 0x98, - 0xfa, 0xf7, 0x29, 0xfa, 0x01, 0x1c, 0x01, 0xa8, - 0x02, 0xf0, 0xd7, 0xf9, 0x00, 0x98, 0xfa, 0xf7, - 0xd2, 0xf9, 0x04, 0x90, 0x05, 0x20, 0x09, 0xad, - 0x68, 0x72, 0x02, 0xa8, 0x21, 0x1c, 0x06, 0x22, - 0x02, 0x30, 0xf5, 0xf7, 0x06, 0xfa, 0x01, 0x20, - 0x08, 0x90, 0x21, 0x6a, 0x0a, 0x90, 0x3c, 0x00, - 0xf4, 0xb0, 0x00, 0x00, 0x28, 0x20, 0x09, 0x91, - 0x00, 0x5d, 0x28, 0x72, 0x01, 0xa8, 0x00, 0xf0, - 0x69, 0xf8, 0x20, 0x1c, 0x14, 0xb0, 0xb0, 0xbd, - 0xff, 0xb5, 0x16, 0x1c, 0x1f, 0x1c, 0x81, 0xb0, - 0x0a, 0x9d, 0x4c, 0x20, 0xf6, 0xf7, 0x90, 0xfb, - 0x04, 0x1c, 0x14, 0x30, 0x06, 0x22, 0x02, 0x99, - 0xf5, 0xf7, 0xea, 0xf9, 0x20, 0x1c, 0x06, 0x22, - 0x01, 0x99, 0xf5, 0xf7, 0xe5, 0xf9, 0x28, 0x20, - 0x3c, 0x00, 0x30, 0xb1, 0x00, 0x00, 0x00, 0x21, - 0x06, 0x55, 0xe1, 0x60, 0x27, 0x62, 0x00, 0x2d, - 0x01, 0xd0, 0x8e, 0x20, 0x00, 0xe0, 0x8d, 0x20, - 0x22, 0x1c, 0x0d, 0x21, 0x08, 0xf0, 0x33, 0xfb, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x05, 0x1c, 0x4c, 0x20, 0xf6, 0xf7, 0x6f, 0xfb, - 0x04, 0x1c, 0x4c, 0x22, 0x29, 0x1c, 0xf5, 0xf7, - 0x26, 0xfa, 0x29, 0x20, 0x40, 0x5d, 0x0d, 0x28, - 0x2c, 0xd2, 0x3c, 0x00, 0x6c, 0xb1, 0x00, 0x00, - 0x01, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, - 0x28, 0x1a, 0x28, 0x1e, 0x06, 0x0a, 0x28, 0x28, - 0x0e, 0x28, 0x22, 0x12, 0x16, 0x00, 0x22, 0x1c, - 0x0d, 0x21, 0x8c, 0x20, 0x1a, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x83, 0x20, 0x16, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x84, 0x20, 0x12, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x85, 0x20, 0x0e, 0xe0, 0x22, 0x1c, - 0x0d, 0x21, 0x86, 0x20, 0x3c, 0x00, 0xa8, 0xb1, - 0x00, 0x00, 0x0a, 0xe0, 0x22, 0x1c, 0x0d, 0x21, - 0x87, 0x20, 0x06, 0xe0, 0x22, 0x1c, 0x0d, 0x21, - 0x89, 0x20, 0x02, 0xe0, 0x22, 0x1c, 0x0d, 0x21, - 0x8b, 0x20, 0x08, 0xf0, 0xf6, 0xfa, 0xb0, 0xbd, - 0xe8, 0x68, 0xf6, 0xf7, 0xe6, 0xf9, 0x20, 0x1c, - 0xf6, 0xf7, 0x11, 0xfb, 0xb0, 0xbd, 0xfe, 0xb5, - 0x05, 0x1c, 0x90, 0x20, 0xf6, 0xf7, 0x2d, 0xfb, - 0x04, 0x1c, 0x90, 0x21, 0xf5, 0xf7, 0x3c, 0x00, - 0xe4, 0xb1, 0x00, 0x00, 0x5b, 0xf9, 0x37, 0x4e, - 0x01, 0x27, 0xf0, 0x69, 0x04, 0x28, 0x03, 0xd9, - 0x70, 0x6b, 0x01, 0x30, 0x70, 0x63, 0x4d, 0xe0, - 0x33, 0x48, 0xb1, 0x6b, 0x04, 0xf0, 0xd0, 0xf8, - 0x01, 0x20, 0x20, 0x62, 0xa8, 0x7e, 0x21, 0x1c, - 0x80, 0x31, 0x02, 0x91, 0x08, 0x70, 0x22, 0x1c, - 0x60, 0x32, 0x01, 0x92, 0x00, 0x20, 0x2f, 0x1c, - 0x20, 0x37, 0x90, 0x72, 0x78, 0x7a, 0x2b, 0x1c, - 0x3c, 0x00, 0x20, 0xb2, 0x00, 0x00, 0x14, 0x33, - 0xd0, 0x72, 0xe8, 0x68, 0xaa, 0x1d, 0xa0, 0x60, - 0xe8, 0x6b, 0x48, 0x60, 0x44, 0x20, 0x40, 0x5d, - 0x08, 0x72, 0x29, 0x1c, 0x20, 0x1c, 0x05, 0xf0, - 0xaa, 0xfc, 0x68, 0x6a, 0x00, 0x28, 0x0a, 0xd1, - 0x01, 0x9a, 0x20, 0x1c, 0x93, 0x7a, 0x02, 0x99, - 0x22, 0x1c, 0x70, 0x32, 0x58, 0x30, 0x09, 0x78, - 0xfa, 0xf7, 0xdb, 0xf9, 0x06, 0xe0, 0x3a, 0x7a, - 0x23, 0x1c, 0x3c, 0x00, 0x5c, 0xb2, 0x00, 0x00, - 0xe8, 0x69, 0x29, 0x6a, 0x70, 0x33, 0xfd, 0xf7, - 0x8d, 0xf9, 0x30, 0x20, 0x40, 0x5d, 0x18, 0x49, - 0x07, 0x28, 0x0b, 0xd1, 0x58, 0x20, 0x00, 0x5d, - 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, 0xe0, 0x61, - 0x00, 0x20, 0x20, 0x61, 0x20, 0x1c, 0xf7, 0xf7, - 0x3f, 0xff, 0x18, 0xe0, 0x01, 0x22, 0x20, 0x1c, - 0x05, 0xf0, 0xac, 0xff, 0x07, 0x1c, 0x12, 0xd0, - 0x03, 0xf0, 0x06, 0xff, 0x3c, 0x00, 0x98, 0xb2, - 0x00, 0x00, 0xf3, 0x6d, 0x00, 0x2b, 0x06, 0xd0, - 0x60, 0x68, 0x20, 0x30, 0x82, 0x7b, 0x61, 0x6b, - 0x38, 0x1c, 0xf5, 0xf7, 0x99, 0xf8, 0xe8, 0x68, - 0xf6, 0xf7, 0x73, 0xf9, 0x20, 0x1c, 0xf6, 0xf7, - 0x9e, 0xfa, 0xfe, 0xbd, 0xf0, 0x69, 0x01, 0x30, - 0xf0, 0x61, 0xfa, 0xe7, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x05, 0x31, - 0x00, 0x00, 0x70, 0xb5, 0x06, 0x1c, 0x3c, 0x00, - 0xd4, 0xb2, 0x00, 0x00, 0x0d, 0x1c, 0x09, 0x04, - 0x09, 0x0c, 0x00, 0x20, 0xf6, 0xf7, 0x7c, 0xf9, - 0x04, 0x1c, 0x2a, 0x1c, 0x31, 0x1c, 0x00, 0x68, - 0xf5, 0xf7, 0x06, 0xf9, 0x20, 0x1c, 0x70, 0xbd, - 0x40, 0x88, 0x70, 0x47, 0x03, 0x78, 0x1b, 0x07, - 0x9b, 0x0f, 0x0b, 0x70, 0x00, 0x78, 0x00, 0x09, - 0x10, 0x70, 0x70, 0x47, 0x04, 0x30, 0x70, 0x47, - 0x04, 0x30, 0x70, 0x47, 0xd4, 0x21, 0x01, 0x70, - 0x3c, 0x00, 0x10, 0xb3, 0x00, 0x00, 0x00, 0x21, - 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x21, - 0x01, 0x70, 0x00, 0x21, 0x41, 0x70, 0x70, 0x47, - 0x00, 0x00, 0xb4, 0x21, 0x01, 0x70, 0x00, 0x21, - 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, - 0x48, 0x65, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x01, 0x49, 0x08, 0x65, 0x70, 0x47, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x49, - 0x88, 0x65, 0x3c, 0x00, 0x4c, 0xb3, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, - 0xf8, 0xb5, 0x5f, 0x4f, 0x05, 0x1c, 0xb8, 0x68, - 0x01, 0x30, 0xb8, 0x60, 0x07, 0xf0, 0x24, 0xfd, - 0x38, 0x61, 0x90, 0x20, 0xf6, 0xf7, 0x66, 0xfa, - 0x04, 0x1c, 0x90, 0x21, 0xf5, 0xf7, 0x94, 0xf8, - 0x28, 0x6b, 0x27, 0x1c, 0x60, 0x63, 0x68, 0x8b, - 0x80, 0x37, 0x26, 0x1c, 0xc0, 0x07, 0xc0, 0x0f, - 0x20, 0x62, 0x68, 0x8b, 0x3c, 0x00, 0x88, 0xb3, - 0x00, 0x00, 0x60, 0x36, 0x02, 0x21, 0x40, 0x07, - 0xc0, 0x0f, 0x20, 0x63, 0x68, 0x8b, 0x80, 0x07, - 0xc0, 0x0f, 0xf8, 0x60, 0x28, 0x7f, 0x38, 0x70, - 0xb1, 0x72, 0x00, 0x28, 0x08, 0xd1, 0xf9, 0xf7, - 0xc8, 0xff, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x20, - 0x60, 0x62, 0x01, 0xe0, 0x01, 0x20, 0xa0, 0x62, - 0xf8, 0x68, 0x00, 0x28, 0x03, 0xd0, 0x00, 0x21, - 0x02, 0x20, 0x06, 0xf0, 0xcc, 0xff, 0x3c, 0x00, - 0xc4, 0xb3, 0x00, 0x00, 0x2b, 0x1c, 0x10, 0x33, - 0xaa, 0x1d, 0x29, 0x1c, 0x20, 0x1c, 0x05, 0xf0, - 0xdf, 0xfb, 0xa8, 0x6a, 0x00, 0x28, 0x0c, 0xd1, - 0x39, 0x78, 0x02, 0x29, 0x07, 0xd0, 0x22, 0x1c, - 0x70, 0x32, 0x20, 0x1c, 0x58, 0x30, 0xb3, 0x7a, - 0xfa, 0xf7, 0x10, 0xf9, 0x08, 0xe0, 0x01, 0x26, - 0x5e, 0xe0, 0xaa, 0x7d, 0x23, 0x1c, 0x28, 0x6a, - 0x69, 0x6a, 0x70, 0x33, 0xfd, 0xf7, 0xc0, 0xf8, - 0x3c, 0x00, 0x00, 0xb4, 0x00, 0x00, 0xe9, 0x68, - 0x00, 0x20, 0x09, 0x89, 0x00, 0x29, 0x00, 0xd1, - 0x04, 0x20, 0xf0, 0x72, 0x38, 0x78, 0x01, 0x28, - 0x14, 0xd1, 0x00, 0x27, 0x00, 0x90, 0x00, 0x20, - 0x06, 0xe0, 0x29, 0x69, 0x01, 0x29, 0x03, 0xd1, - 0xa9, 0x69, 0x01, 0x27, 0x89, 0x07, 0x1a, 0xd5, - 0x06, 0xf0, 0x79, 0xfc, 0x00, 0x28, 0xf4, 0xd1, - 0x01, 0x2f, 0x14, 0xd1, 0x00, 0x98, 0x01, 0x28, - 0x11, 0xd1, 0x3c, 0x00, 0x3c, 0xb4, 0x00, 0x00, - 0x08, 0xe0, 0x20, 0x1c, 0x58, 0x30, 0x06, 0xf0, - 0xe1, 0xfc, 0x00, 0x28, 0x0a, 0xd0, 0x80, 0x69, - 0x80, 0x07, 0x07, 0xd5, 0xf0, 0x7a, 0x08, 0x21, - 0x08, 0x43, 0xf0, 0x72, 0x01, 0x20, 0xe0, 0x62, - 0xe8, 0x7d, 0x30, 0x73, 0xe8, 0x68, 0xa0, 0x60, - 0xe0, 0x6a, 0x00, 0x28, 0x12, 0xd0, 0x1a, 0x4f, - 0xf8, 0x6b, 0x00, 0x28, 0x0e, 0xd0, 0x30, 0x7b, - 0xf5, 0xf7, 0xde, 0xfe, 0x3c, 0x00, 0x78, 0xb4, - 0x00, 0x00, 0x00, 0x28, 0x09, 0xd0, 0x21, 0x1c, - 0x38, 0x1c, 0x40, 0x30, 0xfc, 0xf7, 0x55, 0xfc, - 0x14, 0x48, 0xb9, 0x6b, 0x03, 0xf0, 0x89, 0xff, - 0xf8, 0xbd, 0x10, 0x4f, 0x12, 0x48, 0xb9, 0x6b, - 0x03, 0xf0, 0x83, 0xff, 0x00, 0x22, 0x20, 0x1c, - 0x10, 0x49, 0x05, 0xf0, 0xa2, 0xfe, 0x06, 0x1c, - 0x03, 0xd1, 0x38, 0x6a, 0x01, 0x30, 0x38, 0x62, - 0xee, 0xe7, 0x20, 0x1c, 0xf6, 0xf7, 0x3c, 0x00, - 0xb4, 0xb4, 0x00, 0x00, 0x9f, 0xf9, 0xe8, 0x68, - 0xf6, 0xf7, 0x6e, 0xf8, 0x03, 0xf0, 0xf2, 0xfd, - 0x04, 0x48, 0x83, 0x6d, 0x00, 0x2b, 0xe2, 0xd0, - 0x00, 0x22, 0x30, 0x1c, 0x29, 0x6b, 0xf4, 0xf7, - 0x86, 0xff, 0xdc, 0xe7, 0xc4, 0x69, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x11, 0x30, 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x20, - 0x07, 0xf0, 0xfe, 0xfc, 0x07, 0xf0, 0x5e, 0xfc, - 0x3c, 0x00, 0xf0, 0xb4, 0x00, 0x00, 0x0b, 0x49, - 0x44, 0x18, 0x0c, 0xe0, 0x20, 0x1c, 0x07, 0xf0, - 0x90, 0xfb, 0x00, 0x28, 0x07, 0xd0, 0xf7, 0xf7, - 0x34, 0xf9, 0x00, 0x28, 0x03, 0xd0, 0x12, 0x21, - 0x86, 0x20, 0xf5, 0xf7, 0xca, 0xfe, 0xf7, 0xf7, - 0x2c, 0xf9, 0x00, 0x28, 0xee, 0xd1, 0x01, 0xf0, - 0x80, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x40, 0x9c, - 0x00, 0x00, 0x10, 0xb5, 0x0c, 0x1c, 0x01, 0x1c, - 0x17, 0x4a, 0x3c, 0x00, 0x2c, 0xb5, 0x00, 0x00, - 0x01, 0x29, 0x50, 0x69, 0x04, 0xd0, 0x80, 0x29, - 0x1d, 0xd0, 0x81, 0x29, 0x21, 0xd1, 0x1c, 0xe0, - 0x91, 0x78, 0x01, 0x29, 0x15, 0xd1, 0x02, 0x21, - 0x91, 0x70, 0x14, 0x1c, 0x01, 0x1c, 0x10, 0x48, - 0x03, 0xf0, 0x28, 0xff, 0x01, 0x21, 0x60, 0x69, - 0x00, 0xf0, 0x2e, 0xf9, 0x60, 0x69, 0x01, 0xf0, - 0x5f, 0xfc, 0x20, 0x70, 0xa0, 0x88, 0xa1, 0x69, - 0x00, 0x23, 0x0a, 0x4a, 0x3c, 0x00, 0x68, 0xb5, - 0x00, 0x00, 0x07, 0xf0, 0x7e, 0xfc, 0x10, 0xbd, - 0x22, 0x21, 0x06, 0xe0, 0x01, 0xf0, 0x1d, 0xfc, - 0x20, 0x1c, 0x00, 0xf0, 0x4a, 0xf8, 0x10, 0xbd, - 0x1c, 0x21, 0x20, 0x20, 0xf5, 0xf7, 0x8f, 0xfe, - 0x10, 0xbd, 0xb4, 0x79, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0x3d, 0x2e, 0x00, 0x00, 0x70, 0xb5, - 0x1c, 0x4c, 0xa0, 0x78, 0x00, 0x28, 0x32, 0xd0, - 0x05, 0x28, 0x30, 0xd0, 0x60, 0x69, 0x3c, 0x00, - 0xa4, 0xb5, 0x00, 0x00, 0x00, 0xf0, 0xea, 0xf8, - 0x18, 0x4e, 0xb5, 0x79, 0xa0, 0x78, 0x01, 0x28, - 0x0b, 0xd0, 0x02, 0x28, 0x0e, 0xd0, 0x03, 0x28, - 0x10, 0xd0, 0x04, 0x28, 0x17, 0xd1, 0x42, 0x1f, - 0x80, 0x21, 0x20, 0x20, 0x08, 0xf0, 0x08, 0xf8, - 0x0e, 0xe0, 0x00, 0x21, 0x20, 0x20, 0x08, 0xf0, - 0x31, 0xf8, 0x0c, 0xe0, 0xa0, 0x88, 0x07, 0xf0, - 0x1d, 0xfc, 0x05, 0xe0, 0x20, 0x78, 0x00, 0xf0, - 0x3c, 0x00, 0xe0, 0xb5, 0x00, 0x00, 0x39, 0xfa, - 0x00, 0x20, 0x00, 0xf0, 0xc4, 0xfd, 0x60, 0x69, - 0x01, 0xf0, 0xe1, 0xfb, 0x05, 0x20, 0xa0, 0x70, - 0xb5, 0x71, 0x60, 0x69, 0x00, 0xf0, 0x61, 0xf9, - 0x00, 0x22, 0x20, 0x21, 0x81, 0x20, 0x08, 0xf0, - 0xd6, 0xf8, 0x70, 0xbd, 0x00, 0x00, 0xb4, 0x79, - 0x01, 0x00, 0x20, 0x10, 0x07, 0x00, 0xb0, 0xb5, - 0x0d, 0x4d, 0x04, 0x1c, 0xa8, 0x78, 0x00, 0x28, - 0x14, 0xd0, 0x3c, 0x00, 0x1c, 0xb6, 0x00, 0x00, - 0x68, 0x69, 0x00, 0xf0, 0x0b, 0xf9, 0x0a, 0x48, - 0x69, 0x69, 0x03, 0xf0, 0xa7, 0xfe, 0xa8, 0x88, - 0x07, 0xf0, 0x9e, 0xfb, 0x00, 0x2c, 0x02, 0xd0, - 0x68, 0x78, 0x00, 0xf0, 0x79, 0xff, 0x00, 0x20, - 0xa8, 0x70, 0xa9, 0x68, 0x20, 0x1c, 0xf4, 0xf7, - 0xca, 0xfe, 0xb0, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x06, 0x4b, 0x80, 0xb5, - 0x99, 0x78, 0x03, 0x29, 0x3c, 0x00, 0x58, 0xb6, - 0x00, 0x00, 0x06, 0xd1, 0x04, 0x21, 0x99, 0x70, - 0x20, 0x21, 0x02, 0x1c, 0x80, 0x20, 0x08, 0xf0, - 0xa4, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0xb4, 0x79, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x4c, 0xa1, 0x78, - 0x03, 0x29, 0x0f, 0xd1, 0x10, 0x30, 0xfa, 0xf7, - 0xde, 0xf8, 0x00, 0x28, 0x09, 0xd0, 0x20, 0x78, - 0x00, 0xf0, 0xe5, 0xf9, 0x00, 0x20, 0x00, 0xf0, - 0x70, 0xfd, 0x00, 0x21, 0x05, 0x48, 0x3c, 0x00, - 0x94, 0xb6, 0x00, 0x00, 0xfc, 0xf7, 0x9c, 0xfa, - 0x10, 0xbd, 0x1b, 0x21, 0x20, 0x20, 0xf5, 0xf7, - 0x01, 0xfe, 0x10, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0x51, 0xb6, 0x00, 0x00, 0x09, 0x49, 0x80, 0xb5, - 0x89, 0x78, 0x03, 0x29, 0x09, 0xd1, 0x00, 0xf0, - 0xcd, 0xf9, 0x00, 0x20, 0x00, 0xf0, 0x58, 0xfd, - 0x01, 0x21, 0x05, 0x48, 0xfc, 0xf7, 0x84, 0xfa, - 0x80, 0xbd, 0x17, 0x21, 0x20, 0x20, 0xf5, 0xf7, - 0x3c, 0x00, 0xd0, 0xb6, 0x00, 0x00, 0xe9, 0xfd, - 0x80, 0xbd, 0xb4, 0x79, 0x01, 0x00, 0x51, 0xb6, - 0x00, 0x00, 0x70, 0xb5, 0x10, 0x4c, 0x1d, 0x1c, - 0xa3, 0x78, 0x06, 0x1c, 0x04, 0x98, 0x00, 0x2b, - 0x18, 0xd1, 0x01, 0x23, 0xa3, 0x70, 0x22, 0x61, - 0xe6, 0x60, 0x61, 0x70, 0xa0, 0x60, 0xa5, 0x61, - 0x00, 0x20, 0x07, 0xf0, 0xac, 0xfa, 0xa0, 0x80, - 0x30, 0x1c, 0xf7, 0xf7, 0x3c, 0xfb, 0xe0, 0x80, - 0x07, 0xf0, 0x3c, 0x00, 0x0c, 0xb7, 0x00, 0x00, - 0x4f, 0xfb, 0xc7, 0x21, 0xc9, 0x00, 0x28, 0x1a, - 0x41, 0x1a, 0x00, 0x22, 0x20, 0x20, 0x07, 0xf0, - 0x57, 0xff, 0x70, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, 0x00, 0xf0, - 0x09, 0xf8, 0x20, 0x1c, 0x00, 0xf0, 0x24, 0xf8, - 0x00, 0x2d, 0x01, 0xd0, 0xff, 0xf7, 0xd4, 0xfe, - 0xb0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x4c, - 0x05, 0x1c, 0xa0, 0x68, 0x3c, 0x00, 0x48, 0xb7, - 0x00, 0x00, 0x00, 0x28, 0x0f, 0xd1, 0x0a, 0x48, - 0x01, 0x7e, 0x02, 0x22, 0x11, 0x40, 0x61, 0x60, - 0x01, 0x7e, 0x11, 0x43, 0x01, 0x76, 0x07, 0x20, - 0x03, 0xf0, 0x49, 0xfc, 0x20, 0x60, 0x03, 0xf0, - 0x98, 0xff, 0x03, 0xf0, 0xee, 0xff, 0xa0, 0x68, - 0x28, 0x43, 0xa0, 0x60, 0xb0, 0xbd, 0x40, 0x7c, - 0x01, 0x00, 0x0c, 0x80, 0x07, 0x00, 0x0a, 0x49, - 0x38, 0xb5, 0x0a, 0x1c, 0x20, 0x32, 0x3c, 0x00, - 0x84, 0xb7, 0x00, 0x00, 0x94, 0x79, 0x00, 0xab, - 0x1c, 0x70, 0xd2, 0x79, 0x07, 0x4c, 0x5a, 0x70, - 0xe2, 0x68, 0x00, 0x2a, 0x02, 0xd1, 0x06, 0x4d, - 0x01, 0x23, 0x6b, 0x70, 0x10, 0x43, 0xe0, 0x60, - 0x00, 0xab, 0x18, 0x88, 0xc8, 0x84, 0x38, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0x40, 0x7c, 0x01, 0x00, - 0x00, 0x50, 0x07, 0x00, 0xb0, 0xb5, 0x05, 0x1c, - 0x00, 0x29, 0x01, 0xd0, 0x00, 0xf0, 0x28, 0xf8, - 0x3c, 0x00, 0xc0, 0xb7, 0x00, 0x00, 0x06, 0x4c, - 0x60, 0x78, 0x21, 0x69, 0x08, 0x43, 0x03, 0xd1, - 0x01, 0x21, 0x0e, 0x20, 0x06, 0xf0, 0xc5, 0xfd, - 0x20, 0x69, 0x28, 0x43, 0x20, 0x61, 0xb0, 0xbd, - 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, 0xb0, 0xb5, - 0x0a, 0x4c, 0x05, 0x1c, 0x22, 0x69, 0x00, 0x20, - 0x00, 0x2a, 0x0c, 0xd1, 0x00, 0x29, 0x00, 0xd0, - 0x04, 0xe0, 0x60, 0x78, 0x00, 0x28, 0x02, 0xd1, - 0x04, 0xf0, 0x3c, 0x00, 0xfc, 0xb7, 0x00, 0x00, - 0x69, 0xfb, 0x60, 0x70, 0x28, 0x1c, 0x06, 0xf0, - 0xef, 0xfc, 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x00, - 0x18, 0x63, 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, - 0x60, 0x78, 0x00, 0x28, 0x0a, 0xd0, 0x06, 0xf0, - 0xe3, 0xfc, 0x00, 0x20, 0x60, 0x70, 0x20, 0x69, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x21, 0x0e, 0x20, - 0x06, 0xf0, 0x96, 0xfd, 0x10, 0xbd, 0x00, 0x00, - 0x18, 0x63, 0x01, 0x00, 0x3c, 0x00, 0x38, 0xb8, - 0x00, 0x00, 0x09, 0x49, 0x80, 0xb5, 0x0b, 0x69, - 0x83, 0x42, 0x04, 0xd1, 0x4a, 0x78, 0x00, 0x2a, - 0x01, 0xd1, 0x01, 0x22, 0x00, 0xe0, 0x00, 0x22, - 0x83, 0x43, 0x0b, 0x61, 0x00, 0x2a, 0x03, 0xd0, - 0x00, 0x21, 0x0e, 0x20, 0x06, 0xf0, 0x7f, 0xfd, - 0x80, 0xbd, 0x18, 0x63, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x20, 0xf6, 0xf7, 0x56, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x10, 0xb5, 0x04, 0x1c, 0x3c, 0x00, - 0x74, 0xb8, 0x00, 0x00, 0x00, 0xf0, 0x04, 0xf8, - 0x20, 0x1c, 0x00, 0xf0, 0x1f, 0xf8, 0x10, 0xbd, - 0xb0, 0xb5, 0x0c, 0x4d, 0x04, 0x1c, 0xa8, 0x68, - 0xa0, 0x42, 0x0f, 0xd1, 0x07, 0x20, 0x29, 0x68, - 0x08, 0xf0, 0x8c, 0xfb, 0x68, 0x68, 0x02, 0x22, - 0x07, 0x49, 0x00, 0x28, 0x08, 0x7e, 0x01, 0xd0, - 0x10, 0x43, 0x00, 0xe0, 0x90, 0x43, 0x08, 0x76, - 0x04, 0xf0, 0xc4, 0xf8, 0xa8, 0x68, 0xa0, 0x43, - 0x3c, 0x00, 0xb0, 0xb8, 0x00, 0x00, 0xa8, 0x60, - 0xb0, 0xbd, 0x40, 0x7c, 0x01, 0x00, 0x0c, 0x80, - 0x07, 0x00, 0x0a, 0x49, 0x38, 0xb5, 0x0a, 0x1c, - 0x20, 0x32, 0x94, 0x79, 0x00, 0xab, 0x1c, 0x70, - 0xd2, 0x79, 0x07, 0x4c, 0x5a, 0x70, 0xe2, 0x68, - 0x82, 0x42, 0x02, 0xd1, 0x06, 0x4d, 0x00, 0x23, - 0x6b, 0x70, 0x82, 0x43, 0xe2, 0x60, 0x00, 0xab, - 0x18, 0x88, 0xc8, 0x84, 0x38, 0xbd, 0x00, 0x10, - 0x07, 0x00, 0x3c, 0x00, 0xec, 0xb8, 0x00, 0x00, - 0x40, 0x7c, 0x01, 0x00, 0x00, 0x50, 0x07, 0x00, - 0xb0, 0xb5, 0x05, 0x1c, 0x0a, 0x4c, 0x00, 0x21, - 0x60, 0x69, 0xff, 0xf7, 0x11, 0xff, 0x04, 0x20, - 0x01, 0xf0, 0x46, 0xf9, 0x01, 0xf0, 0x88, 0xfb, - 0x00, 0x22, 0x04, 0x21, 0x04, 0x20, 0x01, 0xf0, - 0x8b, 0xf8, 0x28, 0x1c, 0x01, 0xf0, 0x4a, 0xfa, - 0x60, 0x69, 0xff, 0xf7, 0xa7, 0xff, 0xb0, 0xbd, - 0x40, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x28, 0xb9, - 0x00, 0x00, 0x80, 0xb5, 0x01, 0xf0, 0x77, 0xfa, - 0x80, 0xbd, 0xb0, 0xb5, 0x0d, 0x4d, 0x01, 0x21, - 0x28, 0x69, 0xff, 0xf7, 0xf4, 0xfe, 0xff, 0xf7, - 0x2a, 0xfe, 0x00, 0xf0, 0x2c, 0xfb, 0x00, 0xf0, - 0x84, 0xfa, 0x00, 0x24, 0x00, 0x22, 0x04, 0x21, - 0x20, 0x1c, 0x01, 0xf0, 0x6c, 0xf8, 0x01, 0x34, - 0x24, 0x06, 0x24, 0x0e, 0x04, 0x2c, 0xf5, 0xd3, - 0x28, 0x69, 0xff, 0xf7, 0x86, 0xff, 0x3c, 0x00, - 0x64, 0xb9, 0x00, 0x00, 0xb0, 0xbd, 0x00, 0x00, - 0x40, 0x7c, 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, - 0x0e, 0x1c, 0x07, 0x4c, 0x17, 0x1c, 0x01, 0x21, - 0x20, 0x69, 0xff, 0xf7, 0xd3, 0xfe, 0x3a, 0x1c, - 0x31, 0x1c, 0x28, 0x1c, 0x01, 0xf0, 0x52, 0xf8, - 0x20, 0x69, 0xff, 0xf7, 0x71, 0xff, 0xf8, 0xbd, - 0x40, 0x7c, 0x01, 0x00, 0xff, 0xb5, 0x89, 0xb0, - 0x06, 0x1c, 0x16, 0x98, 0x1d, 0x1c, 0x00, 0x28, - 0x3c, 0x00, 0xa0, 0xb9, 0x00, 0x00, 0x01, 0xd0, - 0x29, 0x48, 0x14, 0x90, 0x28, 0x68, 0x00, 0x88, - 0x00, 0x06, 0x80, 0x0e, 0x20, 0x28, 0x01, 0xd0, - 0x14, 0x28, 0x17, 0xd1, 0x0a, 0xaa, 0x18, 0x24, - 0x18, 0x21, 0x05, 0xca, 0xff, 0xf7, 0x77, 0xf9, - 0x07, 0x1c, 0x28, 0x1c, 0x01, 0x89, 0xa1, 0x42, - 0x02, 0xdd, 0x00, 0x68, 0x01, 0x19, 0x0b, 0xe0, - 0xc0, 0x68, 0x64, 0x1a, 0x00, 0x28, 0xf5, 0xd1, - 0x0f, 0x21, 0x3c, 0x00, 0xdc, 0xb9, 0x00, 0x00, - 0x86, 0x20, 0xf5, 0xf7, 0x61, 0xfc, 0x00, 0x21, - 0x01, 0xe0, 0x00, 0x21, 0x00, 0x27, 0x18, 0x48, - 0x08, 0x90, 0x80, 0x79, 0x07, 0x90, 0x0c, 0x20, - 0x16, 0x4a, 0x70, 0x43, 0x80, 0x18, 0x04, 0x79, - 0x04, 0x91, 0x12, 0x99, 0x15, 0x98, 0x14, 0x9a, - 0x01, 0x91, 0x03, 0x90, 0x05, 0x97, 0x00, 0x95, - 0x0a, 0xab, 0x02, 0x92, 0x21, 0x1c, 0x30, 0x1c, - 0x0c, 0xcb, 0xf7, 0xf7, 0x3c, 0x00, 0x18, 0xba, - 0x00, 0x00, 0x03, 0xf9, 0x01, 0x25, 0xb5, 0x40, - 0x0c, 0x4e, 0x08, 0x3e, 0x30, 0x78, 0x28, 0x40, - 0x06, 0xd0, 0x20, 0x1c, 0x00, 0xf0, 0xc9, 0xfd, - 0x30, 0x78, 0xa8, 0x43, 0x30, 0x70, 0x03, 0xe0, - 0x20, 0x1c, 0x13, 0x99, 0x00, 0xf0, 0x43, 0xff, - 0x07, 0xa9, 0x03, 0xc9, 0x88, 0x71, 0x0d, 0xb0, - 0xf0, 0xbd, 0x95, 0x24, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0x74, 0x7a, 0x01, 0x00, 0x3c, 0x00, - 0x54, 0xba, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0c, 0x23, 0x09, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x00, 0x79, 0x05, 0x1c, 0x00, 0xf0, 0x92, 0xfe, - 0x28, 0x1c, 0xf7, 0xf7, 0xc7, 0xf8, 0x01, 0x20, - 0x03, 0x4a, 0xa0, 0x40, 0x08, 0x3a, 0x11, 0x78, - 0x81, 0x43, 0x11, 0x70, 0xb0, 0xbd, 0x00, 0x00, - 0x74, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, - 0x20, 0x78, 0x00, 0x28, 0x03, 0xd1, 0x1a, 0x21, - 0x3c, 0x00, 0x90, 0xba, 0x00, 0x00, 0x86, 0x20, - 0xf5, 0xf7, 0x07, 0xfc, 0x20, 0x78, 0x10, 0xbd, - 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, 0x01, 0x48, - 0x40, 0x78, 0x70, 0x47, 0x00, 0x00, 0x2c, 0x63, - 0x01, 0x00, 0x80, 0xb5, 0xf6, 0xf7, 0xd1, 0xfe, - 0x00, 0xf0, 0x1b, 0xf9, 0x80, 0xbd, 0xfe, 0xb5, - 0x01, 0x68, 0x05, 0x1c, 0x0c, 0x68, 0x0e, 0x1c, - 0x21, 0x78, 0x88, 0x07, 0x71, 0xd1, 0x68, 0x69, - 0xc2, 0x07, 0x3c, 0x00, 0xcc, 0xba, 0x00, 0x00, - 0x6e, 0xd5, 0x80, 0x07, 0x6d, 0xd5, 0xe8, 0x7a, - 0xc2, 0x07, 0x08, 0x07, 0x09, 0x09, 0x02, 0x91, - 0x45, 0x49, 0x80, 0x0f, 0xd2, 0x0f, 0x00, 0x28, - 0x4f, 0x68, 0x05, 0xd0, 0x01, 0x28, 0x09, 0xd0, - 0x02, 0x28, 0x21, 0xd0, 0x03, 0x28, 0x5b, 0xd1, - 0xff, 0x23, 0x20, 0x1c, 0xa9, 0x7a, 0xf4, 0xf7, - 0x74, 0xfc, 0x55, 0xe0, 0x02, 0x98, 0x0b, 0x28, - 0x0a, 0xd0, 0x0c, 0x28, 0x3c, 0x00, 0x08, 0xbb, - 0x00, 0x00, 0x0f, 0xd0, 0x0d, 0x28, 0x4e, 0xd1, - 0x39, 0x4f, 0xf8, 0x68, 0xf4, 0xf7, 0x61, 0xfc, - 0x00, 0x20, 0xc0, 0x43, 0x5a, 0xe0, 0x35, 0x4f, - 0xa9, 0x7a, 0xbb, 0x68, 0x20, 0x1c, 0xf4, 0xf7, - 0x5b, 0xfc, 0x40, 0xe0, 0x32, 0x4f, 0x38, 0x69, - 0xf4, 0xf7, 0x53, 0xfc, 0x3b, 0xe0, 0x00, 0x21, - 0x01, 0x91, 0x02, 0x99, 0x00, 0x20, 0xff, 0x23, - 0x09, 0x07, 0x01, 0xd4, 0x01, 0x20, 0x3c, 0x00, - 0x44, 0xbb, 0x00, 0x00, 0x13, 0xe0, 0x31, 0x89, - 0x19, 0x29, 0x01, 0xd3, 0x26, 0x7e, 0x07, 0xe0, - 0x15, 0x29, 0x04, 0xd3, 0x18, 0x26, 0x71, 0x1a, - 0x49, 0x19, 0x0e, 0x7b, 0x00, 0xe0, 0x00, 0x26, - 0xb1, 0x06, 0x02, 0xd4, 0x01, 0x20, 0x73, 0x07, - 0x5b, 0x0f, 0x01, 0x21, 0x01, 0x91, 0x00, 0x28, - 0x03, 0xd0, 0xa9, 0x7a, 0x20, 0x1c, 0xf4, 0xf7, - 0x36, 0xfc, 0x01, 0x99, 0x01, 0x29, 0x15, 0xd1, - 0x3c, 0x00, 0x80, 0xbb, 0x00, 0x00, 0xf0, 0x06, - 0xc6, 0x0f, 0x20, 0x88, 0x1b, 0x4f, 0xe4, 0x8a, - 0xf9, 0x6b, 0x00, 0x05, 0xc0, 0x0f, 0x00, 0x29, - 0x1a, 0xd0, 0x4b, 0x1c, 0x18, 0xd0, 0x00, 0x2e, - 0x0a, 0xd0, 0x00, 0x28, 0x08, 0xd0, 0x38, 0x88, - 0x84, 0x42, 0x13, 0xd0, 0x02, 0x98, 0x0c, 0x28, - 0x01, 0xe0, 0x1d, 0xe0, 0x12, 0xe0, 0x0d, 0xd0, - 0x08, 0x1c, 0x01, 0xf0, 0x76, 0xf9, 0x00, 0x28, - 0x03, 0xd1, 0x3c, 0x00, 0xbc, 0xbb, 0x00, 0x00, - 0x00, 0xf0, 0xa6, 0xfa, 0xf4, 0xf7, 0x0a, 0xfc, - 0x00, 0x20, 0xc0, 0x43, 0xf8, 0x63, 0x00, 0x2e, - 0x0d, 0xd0, 0x3c, 0x80, 0x00, 0x20, 0xf8, 0x63, - 0x09, 0xe0, 0x20, 0x88, 0x00, 0x06, 0x80, 0x0e, - 0x20, 0x28, 0x04, 0xd1, 0x04, 0x4f, 0x20, 0x1c, - 0xb9, 0x6a, 0xf4, 0xf7, 0xf8, 0xfb, 0x29, 0x1c, - 0x02, 0x48, 0xfb, 0xf7, 0xef, 0xff, 0xfe, 0xbd, - 0x28, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0xf8, 0xbb, - 0x00, 0x00, 0xa5, 0x9a, 0x00, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x00, 0x78, 0x00, 0x21, 0x00, 0xf0, - 0xfc, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x18, 0x63, - 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, 0x00, 0x28, - 0x1a, 0x68, 0x00, 0xd0, 0x01, 0x1c, 0x10, 0x1c, - 0x19, 0x60, 0x70, 0x47, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x95, 0x75, 0x00, 0x00, 0x05, 0x48, - 0x80, 0xb5, 0x00, 0x7f, 0x24, 0x23, 0x3c, 0x00, - 0x34, 0xbc, 0x00, 0x00, 0x04, 0x49, 0x58, 0x43, - 0x40, 0x18, 0xc0, 0x69, 0xf4, 0xf7, 0xcc, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, - 0x94, 0x46, 0x01, 0x00, 0x02, 0x1c, 0x06, 0x48, - 0x80, 0xb5, 0x81, 0x62, 0x82, 0x60, 0x00, 0x7f, - 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x80, 0x69, 0xf4, 0xf7, 0xb9, 0xfb, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, 0x01, 0x00, - 0x3c, 0x00, 0x70, 0xbc, 0x00, 0x00, 0x80, 0xb5, - 0x00, 0x20, 0x00, 0xf0, 0x3c, 0xfb, 0x00, 0x20, - 0x00, 0xf0, 0x6d, 0xfa, 0x00, 0xf0, 0x65, 0xfa, - 0x04, 0x49, 0xc8, 0x6a, 0x01, 0x30, 0xc8, 0x62, - 0x08, 0x1f, 0x00, 0x88, 0x07, 0xf0, 0xc1, 0xf8, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x06, 0x48, - 0x80, 0xb5, 0x00, 0x21, 0x01, 0x77, 0xc1, 0x6a, - 0x01, 0x31, 0xc1, 0x62, 0x04, 0x38, 0x00, 0x88, - 0x07, 0xf0, 0x3c, 0x00, 0xac, 0xbc, 0x00, 0x00, - 0xb3, 0xf8, 0x03, 0xf0, 0xd1, 0xf9, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, 0x05, 0xf0, - 0xe9, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x28, - 0x03, 0xd1, 0x01, 0x20, 0x04, 0xf0, 0x22, 0xfa, - 0x80, 0xbd, 0x01, 0x20, 0x03, 0xf0, 0xe6, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x03, 0x49, 0x01, 0x20, - 0x49, 0x78, 0x00, 0x29, 0x00, 0xd0, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xbc, - 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x70, 0xb5, - 0x13, 0x4d, 0x28, 0x78, 0x00, 0x28, 0x20, 0xd1, - 0x01, 0x21, 0x2e, 0x1c, 0x70, 0x68, 0xff, 0xf7, - 0x12, 0xfd, 0x00, 0x21, 0x07, 0x20, 0x06, 0xf0, - 0x2a, 0xfb, 0x0d, 0x48, 0x00, 0x24, 0x04, 0x71, - 0x04, 0xf0, 0xed, 0xf8, 0x06, 0xf0, 0xd5, 0xf9, - 0x01, 0x20, 0x28, 0x70, 0x0a, 0x48, 0x04, 0x60, - 0x44, 0x60, 0xf6, 0xf7, 0x4c, 0xfd, 0x3c, 0x00, - 0x24, 0xbd, 0x00, 0x00, 0xf7, 0xf7, 0x5e, 0xf8, - 0xff, 0xf7, 0xa2, 0xff, 0x00, 0xf0, 0xa8, 0xfd, - 0x05, 0x48, 0x71, 0x68, 0x03, 0xf0, 0x20, 0xfb, - 0x01, 0x20, 0x70, 0xbd, 0x2c, 0x63, 0x01, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x80, 0x00, 0x07, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0xb0, 0xb5, 0x1e, 0x4c, - 0x20, 0x78, 0x01, 0x28, 0x35, 0xd1, 0x25, 0x1c, - 0x69, 0x68, 0x1c, 0x48, 0x03, 0xf0, 0x20, 0xfb, - 0x3c, 0x00, 0x60, 0xbd, 0x00, 0x00, 0x04, 0xf0, - 0xf0, 0xf8, 0x1a, 0x48, 0x01, 0x68, 0x49, 0x08, - 0x49, 0x00, 0x01, 0x60, 0x01, 0x68, 0x01, 0x22, - 0x11, 0x43, 0x01, 0x60, 0x00, 0xf0, 0x2b, 0xfe, - 0x00, 0xf0, 0x1b, 0xfc, 0x06, 0xf0, 0x99, 0xf8, - 0xf6, 0xf7, 0x29, 0xfe, 0xf6, 0xf7, 0x2d, 0xfc, - 0x00, 0x20, 0x20, 0x70, 0xff, 0xf7, 0x83, 0xff, - 0x00, 0xf0, 0x8b, 0xfd, 0x0f, 0x48, 0x81, 0x78, - 0x08, 0x22, 0x3c, 0x00, 0x9c, 0xbd, 0x00, 0x00, - 0x91, 0x43, 0x81, 0x70, 0x81, 0x78, 0x11, 0x43, - 0x81, 0x70, 0x0c, 0x49, 0x10, 0x20, 0x08, 0x71, - 0x68, 0x68, 0xff, 0xf7, 0x5f, 0xfd, 0xf7, 0xf7, - 0x39, 0xf8, 0xf6, 0xf7, 0x4d, 0xfd, 0x01, 0x21, - 0x07, 0x20, 0x06, 0xf0, 0xcd, 0xfa, 0x01, 0x20, - 0xb0, 0xbd, 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0xf0, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x3c, 0x00, 0xd8, 0xbd, - 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x03, 0x49, - 0x01, 0x20, 0x89, 0x7a, 0x01, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0xb0, 0xb5, 0x15, 0x4d, 0x04, 0x1c, - 0x28, 0x7a, 0x00, 0x28, 0x20, 0xd1, 0xf9, 0xf7, - 0x00, 0xfc, 0x02, 0x28, 0x1c, 0xd1, 0x01, 0x20, - 0x28, 0x72, 0xe8, 0x68, 0x00, 0x28, 0x10, 0xd0, - 0x20, 0x68, 0x29, 0x68, 0x08, 0x60, 0x3c, 0x00, - 0x14, 0xbe, 0x00, 0x00, 0x69, 0x68, 0x0d, 0x48, - 0x03, 0xf0, 0xc2, 0xfa, 0x01, 0x21, 0x68, 0x68, - 0xff, 0xf7, 0xc8, 0xfc, 0x00, 0x22, 0x24, 0x20, - 0x61, 0x68, 0x07, 0xf0, 0xcf, 0xfb, 0xb0, 0xbd, - 0x00, 0x20, 0x28, 0x72, 0x21, 0x68, 0x01, 0x20, - 0xf4, 0xf7, 0xcf, 0xfa, 0xb0, 0xbd, 0x00, 0x20, - 0x21, 0x68, 0xf4, 0xf7, 0xca, 0xfa, 0xb0, 0xbd, - 0x04, 0x7a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x3c, 0x00, 0x50, 0xbe, 0x00, 0x00, 0x04, 0x48, - 0x80, 0xb5, 0x00, 0x7a, 0x01, 0x28, 0x02, 0xd1, - 0x00, 0x20, 0x02, 0xf0, 0xf0, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x04, 0x7a, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x28, 0x07, 0xd0, 0x80, 0x28, 0x09, 0xd1, - 0x07, 0x48, 0x00, 0x7a, 0x00, 0x28, 0x04, 0xd0, - 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, 0x02, 0xf0, - 0xde, 0xfe, 0x80, 0xbd, 0x0e, 0x21, 0x24, 0x20, - 0xf5, 0xf7, 0x3c, 0x00, 0x8c, 0xbe, 0x00, 0x00, - 0x0b, 0xfa, 0x80, 0xbd, 0x04, 0x7a, 0x01, 0x00, - 0xf8, 0xb5, 0x3a, 0x4e, 0x05, 0x1c, 0xb0, 0x7a, - 0x00, 0x28, 0x69, 0xd1, 0xf9, 0xf7, 0xae, 0xfb, - 0x02, 0x28, 0x65, 0xd1, 0x36, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x61, 0xd0, 0x35, 0x48, 0x71, 0x68, - 0x03, 0xf0, 0x74, 0xfa, 0x01, 0x21, 0x70, 0x68, - 0xff, 0xf7, 0x7a, 0xfc, 0x6c, 0x20, 0xf5, 0xf7, - 0xb9, 0xfc, 0x04, 0x1c, 0x3c, 0x00, 0xc8, 0xbe, - 0x00, 0x00, 0x6c, 0x21, 0xf4, 0xf7, 0xe7, 0xfa, - 0x30, 0x68, 0x2c, 0x22, 0x04, 0x60, 0x29, 0x68, - 0x81, 0x60, 0x69, 0x68, 0xc1, 0x60, 0x00, 0x21, - 0x11, 0x54, 0x81, 0x62, 0xa9, 0x68, 0x00, 0x29, - 0x02, 0xd0, 0xe9, 0x68, 0x01, 0x61, 0x05, 0xe0, - 0x06, 0xf0, 0x5d, 0xff, 0x69, 0x68, 0x40, 0x18, - 0x31, 0x68, 0x08, 0x61, 0x70, 0x68, 0xff, 0xf7, - 0x14, 0xfd, 0x69, 0x21, 0x08, 0x55, 0x3c, 0x00, - 0x04, 0xbf, 0x00, 0x00, 0x00, 0x20, 0xf9, 0xf7, - 0x09, 0xfb, 0x01, 0x27, 0x3b, 0x1c, 0x06, 0x1c, - 0x22, 0x1c, 0x24, 0x32, 0x00, 0x21, 0xf9, 0xf7, - 0x79, 0xfb, 0x1c, 0x48, 0x03, 0x21, 0x00, 0x88, - 0x89, 0x03, 0x08, 0x43, 0x21, 0x1c, 0x40, 0x31, - 0x00, 0x91, 0x48, 0x83, 0x18, 0x48, 0x10, 0x21, - 0x60, 0x60, 0x18, 0x48, 0xa0, 0x60, 0xa7, 0x63, - 0x67, 0x63, 0x00, 0x20, 0xf5, 0xf7, 0x4c, 0xfb, - 0x3c, 0x00, 0x40, 0xbf, 0x00, 0x00, 0xe0, 0x60, - 0x02, 0x89, 0x00, 0x99, 0xca, 0x83, 0x07, 0x68, - 0x31, 0x1c, 0x38, 0x1d, 0x27, 0x61, 0xfe, 0xf7, - 0x8e, 0xfe, 0x38, 0x1c, 0x0a, 0x30, 0x0f, 0x49, - 0xfe, 0xf7, 0x89, 0xfe, 0xa4, 0x20, 0x38, 0x80, - 0x00, 0x20, 0x04, 0xf0, 0xde, 0xfb, 0x00, 0x22, - 0x1f, 0x20, 0x69, 0x68, 0x07, 0xf0, 0x2d, 0xfb, - 0xf8, 0xbd, 0xff, 0xe7, 0x00, 0x20, 0x29, 0x68, - 0xf4, 0xf7, 0x3c, 0x00, 0x7c, 0xbf, 0x00, 0x00, - 0x2e, 0xfa, 0xf8, 0xe7, 0x14, 0x7a, 0x01, 0x00, - 0x80, 0x5a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0xfa, 0x60, 0x01, 0x00, 0x99, 0xec, 0x00, 0x00, - 0x15, 0xed, 0x00, 0x00, 0x12, 0x61, 0x01, 0x00, - 0x06, 0x48, 0x80, 0xb5, 0x81, 0x7a, 0x00, 0x29, - 0x07, 0xd0, 0x00, 0x68, 0x04, 0x22, 0x20, 0x30, - 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, 0x02, 0xf0, - 0x6b, 0xfd, 0x80, 0xbd, 0x3c, 0x00, 0xb8, 0xbf, - 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x4c, 0xa0, 0x7a, 0x01, 0x28, 0x03, 0xd1, - 0x06, 0xf0, 0xf1, 0xfe, 0x21, 0x68, 0x88, 0x61, - 0x10, 0xbd, 0x14, 0x7a, 0x01, 0x00, 0x03, 0x1c, - 0x08, 0x1c, 0x1f, 0x49, 0x70, 0xb5, 0x0a, 0x68, - 0x01, 0x2b, 0x1c, 0xd0, 0x80, 0x2b, 0x05, 0xd0, - 0x83, 0x2b, 0x30, 0xd1, 0x88, 0x7a, 0x00, 0x28, - 0x14, 0xd0, 0x29, 0xe0, 0x53, 0x69, 0x3c, 0x00, - 0xf4, 0xbf, 0x00, 0x00, 0x00, 0x2b, 0x0e, 0xd0, - 0x94, 0x69, 0xd5, 0x69, 0x2e, 0x1b, 0x0c, 0x69, - 0x5d, 0x1b, 0x36, 0x1b, 0xb6, 0x10, 0xa4, 0x19, - 0x0c, 0x61, 0xcc, 0x68, 0x2d, 0x1b, 0xad, 0x10, - 0x64, 0x19, 0xcc, 0x60, 0x93, 0x61, 0x02, 0xf0, - 0x81, 0xfd, 0x70, 0xbd, 0x02, 0x28, 0x12, 0xd1, - 0x90, 0x6a, 0x0c, 0x1c, 0x00, 0x28, 0xf8, 0xd0, - 0x07, 0xf0, 0x0e, 0xfa, 0xa0, 0x7a, 0x01, 0x28, - 0x3c, 0x00, 0x30, 0xc0, 0x00, 0x00, 0xf3, 0xd1, - 0x20, 0x68, 0x81, 0x6a, 0x00, 0x29, 0xef, 0xd1, - 0x20, 0x30, 0x01, 0x7b, 0x08, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x70, 0xbd, 0x02, 0xf0, 0x21, 0xfd, - 0x70, 0xbd, 0x0e, 0x21, 0x1f, 0x20, 0xf5, 0xf7, - 0x28, 0xf9, 0x70, 0xbd, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0x02, 0x49, 0x0c, 0x31, 0x03, 0xc9, - 0x40, 0x18, 0x70, 0x47, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0x3c, 0x00, 0x6c, 0xc0, 0x00, 0x00, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x04, 0x22, - 0x20, 0x30, 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, - 0x07, 0xf0, 0xe4, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x4c, - 0x0e, 0x1c, 0xa1, 0x7a, 0x00, 0x29, 0x1c, 0xd0, - 0x21, 0x68, 0x08, 0x61, 0x07, 0xf0, 0x32, 0xfa, - 0x00, 0x28, 0x17, 0xd0, 0x20, 0x68, 0x00, 0x25, - 0x05, 0x62, 0x00, 0x22, 0x3c, 0x00, 0xa8, 0xc0, - 0x00, 0x00, 0x83, 0x21, 0x1f, 0x20, 0x07, 0xf0, - 0x94, 0xfa, 0x60, 0x68, 0xff, 0xf7, 0x03, 0xfc, - 0x21, 0x68, 0x04, 0x22, 0x20, 0x31, 0x08, 0x7b, - 0x2b, 0x1c, 0x90, 0x43, 0x08, 0x73, 0x31, 0x1c, - 0x00, 0x22, 0x1f, 0x20, 0x07, 0xf0, 0x61, 0xfb, - 0x70, 0xbd, 0x20, 0x68, 0x08, 0x22, 0x20, 0x30, - 0x01, 0x7b, 0x11, 0x43, 0x01, 0x73, 0x02, 0xf0, - 0xd6, 0xfc, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xc0, 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0x77, 0xfc, 0x00, 0xf0, - 0x6f, 0xfc, 0x00, 0xf0, 0x29, 0xff, 0x00, 0xf0, - 0x5d, 0xfa, 0x00, 0xf0, 0xc5, 0xf8, 0x00, 0xf0, - 0x85, 0xff, 0x80, 0xbd, 0x80, 0xb5, 0xfa, 0xf7, - 0x85, 0xfa, 0x80, 0xbd, 0x01, 0x48, 0xc0, 0x68, - 0x70, 0x47, 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, - 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, - 0x3c, 0x00, 0x20, 0xc1, 0x00, 0x00, 0x02, 0x48, - 0xc1, 0x60, 0x70, 0x47, 0x00, 0x00, 0x81, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x01, 0x48, - 0x02, 0x49, 0xc8, 0x60, 0x70, 0x47, 0x81, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x01, 0x49, - 0x88, 0x61, 0x70, 0x47, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, 0x88, 0x61, - 0x70, 0x47, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x3c, 0x00, 0x5c, 0xc1, 0x00, 0x00, - 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0xc1, 0x61, - 0x70, 0x47, 0x00, 0x00, 0x89, 0x75, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, - 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0x81, 0x62, - 0x70, 0x47, 0x00, 0x00, 0x8d, 0x75, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, - 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, 0x01, 0x62, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xc1, - 0x00, 0x00, 0x91, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, - 0x01, 0x1c, 0x02, 0x48, 0x01, 0x61, 0x70, 0x47, - 0x00, 0x00, 0x99, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x01, 0x48, 0x02, 0x49, 0x08, 0x61, - 0x70, 0x47, 0x81, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, 0x80, 0x2a, - 0x80, 0xb5, 0x02, 0xd1, 0x00, 0xf0, 0x3c, 0x00, - 0xd4, 0xc1, 0x00, 0x00, 0x07, 0xf8, 0x80, 0xbd, - 0x1e, 0x21, 0x21, 0x20, 0xf5, 0xf7, 0x62, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x10, 0x4d, - 0x04, 0x1c, 0xa8, 0x6b, 0x01, 0x30, 0xa8, 0x63, - 0x69, 0x6b, 0x09, 0x1a, 0x28, 0x1c, 0x00, 0x6b, - 0x0c, 0x29, 0x03, 0xd9, 0x00, 0x21, 0xff, 0xf7, - 0x91, 0xfa, 0x03, 0xe0, 0x08, 0x29, 0x01, 0xd1, - 0xff, 0xf7, 0x32, 0xfb, 0x20, 0x1c, 0x00, 0xf0, - 0x3c, 0x00, 0x10, 0xc2, 0x00, 0x00, 0x4d, 0xf9, - 0x60, 0x69, 0x40, 0x07, 0x01, 0xd5, 0x03, 0xf0, - 0x0c, 0xfc, 0x20, 0x1c, 0xe9, 0x6a, 0xf4, 0xf7, - 0xdb, 0xf8, 0xb0, 0xbd, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, - 0x01, 0x1c, 0x02, 0x48, 0x41, 0x62, 0x70, 0x47, - 0x00, 0x00, 0xb5, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0x03, 0x49, 0x01, 0x20, 0x09, 0x6c, - 0x00, 0x29, 0x3c, 0x00, 0x4c, 0xc2, 0x00, 0x00, - 0x00, 0xd1, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0xe1, 0x6b, 0x00, 0x29, 0x01, 0xd1, 0xe0, 0x63, - 0x04, 0xe0, 0x81, 0x42, 0x02, 0xd0, 0x00, 0x20, - 0xc0, 0x43, 0xf8, 0xe7, 0x06, 0xf0, 0x9c, 0xfd, - 0x20, 0x64, 0x10, 0xbd, 0x28, 0x7a, 0x01, 0x00, - 0x01, 0x48, 0x00, 0x6c, 0x70, 0x47, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0x88, 0xc2, - 0x00, 0x00, 0x05, 0x49, 0x80, 0xb5, 0x00, 0x20, - 0x48, 0x63, 0x88, 0x63, 0xff, 0x21, 0x09, 0x31, - 0x15, 0x22, 0x10, 0x20, 0xf6, 0xf7, 0xfb, 0xf9, - 0x80, 0xbd, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x02, 0x48, - 0x81, 0x60, 0x70, 0x47, 0x00, 0x00, 0xc1, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x03, 0x49, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x3c, 0x00, - 0xc4, 0xc2, 0x00, 0x00, 0x02, 0x48, 0xc1, 0x62, - 0x70, 0x47, 0x00, 0x00, 0xc5, 0x75, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0x04, 0x4b, 0x05, 0x49, - 0x00, 0x28, 0x5a, 0x68, 0x00, 0xd0, 0x01, 0x1c, - 0x10, 0x1c, 0x59, 0x60, 0x70, 0x47, 0x00, 0x00, - 0x28, 0x7a, 0x01, 0x00, 0xc9, 0x75, 0x00, 0x00, - 0x03, 0x49, 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, - 0x02, 0x48, 0x41, 0x61, 0x70, 0x47, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xc3, 0x00, 0x00, 0xcd, 0x75, - 0x00, 0x00, 0x28, 0x7a, 0x01, 0x00, 0x0f, 0x4b, - 0x10, 0xb5, 0xd9, 0x68, 0x00, 0x29, 0x19, 0xd0, - 0x0e, 0x4c, 0x00, 0x21, 0xca, 0x00, 0x12, 0x19, - 0x40, 0x3a, 0xd2, 0x6b, 0x82, 0x42, 0x02, 0xda, - 0x01, 0x31, 0x03, 0x29, 0xf6, 0xd3, 0x48, 0x1c, - 0x1a, 0x78, 0x00, 0x06, 0x00, 0x0e, 0x90, 0x42, - 0x08, 0xd0, 0x18, 0x70, 0x08, 0x06, 0x00, 0x0e, - 0x04, 0x1c, 0x3c, 0x00, 0x3c, 0xc3, 0x00, 0x00, - 0xf6, 0xf7, 0xba, 0xfa, 0x20, 0x1c, 0x03, 0xf0, - 0x1b, 0xfd, 0x10, 0xbd, 0x18, 0x63, 0x01, 0x00, - 0x3c, 0x42, 0x01, 0x00, 0x10, 0xb5, 0x14, 0x4c, - 0xe1, 0x68, 0x00, 0x29, 0x22, 0xd0, 0x21, 0x78, - 0x12, 0x4b, 0xca, 0x00, 0xd2, 0x18, 0x40, 0x3a, - 0xd3, 0x6b, 0x83, 0x42, 0x02, 0xda, 0x48, 0x1c, - 0x20, 0x70, 0x0b, 0xe0, 0x92, 0x6b, 0x82, 0x42, - 0x14, 0xdd, 0xff, 0x31, 0x3c, 0x00, 0x78, 0xc3, - 0x00, 0x00, 0x08, 0x06, 0x00, 0x0e, 0x20, 0x70, - 0x03, 0xd1, 0x19, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x8e, 0xff, 0x20, 0x78, 0xff, 0x30, 0x00, 0x06, - 0x00, 0x0e, 0xf6, 0xf7, 0x90, 0xfa, 0x20, 0x78, - 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x03, 0xf0, - 0xee, 0xfc, 0x10, 0xbd, 0x00, 0x00, 0x18, 0x63, - 0x01, 0x00, 0x3c, 0x42, 0x01, 0x00, 0x09, 0x48, - 0x00, 0x21, 0x01, 0x81, 0x41, 0x81, 0x3c, 0x00, - 0xb4, 0xc3, 0x00, 0x00, 0x81, 0x81, 0xc1, 0x81, - 0x07, 0x4a, 0x02, 0x80, 0x01, 0x23, 0xdb, 0x02, - 0x43, 0x80, 0x82, 0x80, 0xc2, 0x80, 0x41, 0x76, - 0x31, 0x21, 0x81, 0x76, 0x01, 0x21, 0x01, 0x76, - 0x70, 0x47, 0x00, 0x00, 0x30, 0x80, 0x07, 0x00, - 0xff, 0xff, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, - 0xf6, 0xf7, 0xf8, 0xf8, 0x01, 0x20, 0xf6, 0xf7, - 0xdb, 0xfc, 0x01, 0x20, 0xf6, 0xf7, 0x5a, 0xfa, - 0x3c, 0x00, 0xf0, 0xc3, 0x00, 0x00, 0x01, 0x20, - 0x00, 0xf0, 0xf1, 0xfd, 0x01, 0x20, 0xf7, 0xf7, - 0xc6, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, - 0x11, 0x4c, 0x00, 0x29, 0x07, 0xd1, 0x00, 0x28, - 0x02, 0xd1, 0x01, 0x20, 0xe0, 0x60, 0x06, 0xe0, - 0x00, 0x21, 0xe1, 0x60, 0x03, 0xe0, 0x01, 0x29, - 0x07, 0xd1, 0x00, 0x28, 0x01, 0xd0, 0x20, 0x70, - 0x03, 0xe0, 0x18, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x3c, 0xff, 0x3c, 0x00, 0x2c, 0xc4, 0x00, 0x00, - 0x20, 0x78, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, - 0xf6, 0xf7, 0x3e, 0xfa, 0x20, 0x78, 0xff, 0x30, - 0x00, 0x06, 0x00, 0x0e, 0x03, 0xf0, 0x9c, 0xfc, - 0x10, 0xbd, 0x00, 0x00, 0x18, 0x63, 0x01, 0x00, - 0x05, 0x49, 0x80, 0xb5, 0x09, 0x68, 0x88, 0x42, - 0x05, 0xd0, 0xfe, 0xf7, 0xff, 0xfb, 0x00, 0xf0, - 0x87, 0xfa, 0xff, 0xf7, 0x2b, 0xfc, 0x80, 0xbd, - 0xa8, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x68, 0xc4, - 0x00, 0x00, 0x01, 0x49, 0x48, 0x70, 0x70, 0x47, - 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x01, 0x49, - 0xc8, 0x60, 0x70, 0x47, 0x00, 0x00, 0x4c, 0x7b, - 0x01, 0x00, 0x03, 0x49, 0x01, 0x20, 0x09, 0x78, - 0x00, 0x29, 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, - 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, 0x04, 0x4a, - 0x00, 0x28, 0x02, 0xd0, 0x90, 0x69, 0x01, 0x30, - 0x90, 0x61, 0xd0, 0x69, 0x40, 0x18, 0x3c, 0x00, - 0xa4, 0xc4, 0x00, 0x00, 0xd0, 0x61, 0x70, 0x47, - 0x90, 0x5c, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0x00, 0x68, 0x05, 0x68, 0x28, 0x1c, 0xfe, 0xf7, - 0x27, 0xff, 0x07, 0x1c, 0x60, 0x69, 0x15, 0x4e, - 0xc0, 0x07, 0xc0, 0x0f, 0x21, 0xd0, 0x01, 0xaa, - 0x02, 0xa9, 0x28, 0x1c, 0xfe, 0xf7, 0x12, 0xff, - 0x38, 0x78, 0xc0, 0x07, 0x0c, 0xd4, 0x60, 0x69, - 0x80, 0x07, 0x08, 0xd5, 0x00, 0xab, 0x18, 0x7a, - 0x3c, 0x00, 0xe0, 0xc4, 0x00, 0x00, 0x00, 0x28, - 0x01, 0xd0, 0x02, 0x28, 0x02, 0xd1, 0x70, 0x6a, - 0x01, 0x30, 0x70, 0x62, 0xfe, 0xbd, 0x00, 0xab, - 0x18, 0x7a, 0x00, 0x28, 0x01, 0xd0, 0x02, 0x28, - 0xf8, 0xd1, 0x70, 0x6a, 0x01, 0x30, 0x70, 0x62, - 0xb0, 0x6a, 0x01, 0x30, 0xb0, 0x62, 0xf1, 0xe7, - 0xf0, 0x6a, 0x01, 0x30, 0xf0, 0x62, 0xed, 0xe7, - 0x00, 0x00, 0x90, 0x5c, 0x01, 0x00, 0x02, 0x49, - 0x48, 0x69, 0x3c, 0x00, 0x1c, 0xc5, 0x00, 0x00, - 0x01, 0x30, 0x48, 0x61, 0x70, 0x47, 0x00, 0x00, - 0x90, 0x5c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x01, 0x1c, 0x40, 0x31, - 0x10, 0xb5, 0x0a, 0x8b, 0x12, 0x07, 0x92, 0x0f, - 0x01, 0x2a, 0x33, 0xd0, 0x4a, 0x78, 0x1a, 0x49, - 0x04, 0x1c, 0x60, 0x34, 0x00, 0x2a, 0x0b, 0x6a, - 0x22, 0xd1, 0xe2, 0x79, 0x01, 0x2a, 0x02, 0xd9, - 0xcc, 0x68, 0x01, 0x34, 0x3c, 0x00, 0x58, 0xc5, - 0x00, 0x00, 0xcc, 0x60, 0x02, 0x2a, 0x02, 0xd9, - 0x0c, 0x69, 0x01, 0x34, 0x0c, 0x61, 0x0c, 0x68, - 0x01, 0x34, 0x0c, 0x60, 0x44, 0x6b, 0x00, 0x2c, - 0x03, 0xd0, 0x04, 0x69, 0x24, 0x7c, 0xe4, 0x07, - 0x02, 0xd5, 0x4c, 0x68, 0x01, 0x34, 0x4c, 0x60, - 0x80, 0x6b, 0x00, 0x28, 0x02, 0xd0, 0x08, 0x6b, - 0x01, 0x30, 0x08, 0x63, 0x00, 0x2a, 0x0c, 0xd0, - 0x98, 0x18, 0x01, 0x38, 0x08, 0xe0, 0x3c, 0x00, - 0x94, 0xc5, 0x00, 0x00, 0x01, 0x2a, 0x01, 0xd0, - 0x02, 0x2a, 0x02, 0xd1, 0x88, 0x68, 0x01, 0x30, - 0x88, 0x60, 0xe0, 0x79, 0x18, 0x18, 0x08, 0x62, - 0x10, 0xbd, 0x00, 0x00, 0x90, 0x5c, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, 0x0a, 0x20, - 0x08, 0x81, 0x70, 0x47, 0xc4, 0x7a, 0x01, 0x00, - 0xf0, 0xb5, 0x32, 0x4f, 0x04, 0x1c, 0x78, 0x78, - 0x85, 0xb0, 0xc0, 0x07, 0xc0, 0x0f, 0x03, 0x90, - 0x3c, 0x00, 0xd0, 0xc5, 0x00, 0x00, 0xb8, 0x78, - 0x02, 0x90, 0x01, 0x20, 0xa0, 0x40, 0x04, 0x90, - 0x39, 0x1c, 0x88, 0x70, 0x2c, 0x48, 0x00, 0x88, - 0x06, 0xf0, 0x0b, 0xfc, 0x01, 0x90, 0xfe, 0xf7, - 0xae, 0xfc, 0x04, 0x30, 0x29, 0x4e, 0xa5, 0x00, - 0x71, 0x59, 0x09, 0x79, 0x88, 0x42, 0x06, 0xd0, - 0xfe, 0xf7, 0xa5, 0xfc, 0x71, 0x59, 0x04, 0x30, - 0x08, 0x71, 0x01, 0x20, 0x78, 0x70, 0x00, 0x20, - 0x78, 0x70, 0x3c, 0x00, 0x0c, 0xc6, 0x00, 0x00, - 0x21, 0x48, 0x01, 0x21, 0x20, 0x4e, 0x30, 0x38, - 0x01, 0x55, 0x71, 0x59, 0x03, 0x20, 0x08, 0x70, - 0x06, 0xf0, 0xc6, 0xfb, 0x06, 0x1c, 0xfe, 0xf7, - 0x91, 0xfc, 0x36, 0x18, 0x0e, 0x36, 0x09, 0xe0, - 0x30, 0x1c, 0x06, 0xf0, 0xf5, 0xfa, 0x00, 0x28, - 0x04, 0xd0, 0x23, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x33, 0xfe, 0x03, 0xe0, 0xf6, 0xf7, 0x34, 0xfb, - 0x00, 0x28, 0xf1, 0xd0, 0x3c, 0x00, 0x48, 0xc6, - 0x00, 0x00, 0x12, 0x48, 0x13, 0x49, 0x3c, 0x38, - 0x00, 0x78, 0x08, 0x72, 0x20, 0x1c, 0xf4, 0xf7, - 0xa2, 0xfa, 0x0e, 0x4e, 0x71, 0x59, 0x08, 0x71, - 0x03, 0x98, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x21, - 0x79, 0x70, 0x09, 0x48, 0x00, 0x88, 0x01, 0x99, - 0x06, 0xf0, 0xbd, 0xfb, 0x02, 0x98, 0xb8, 0x70, - 0x09, 0x49, 0x49, 0x79, 0x04, 0x98, 0x88, 0x42, - 0x03, 0xd0, 0x24, 0x21, 0x86, 0x20, 0x3c, 0x00, - 0x84, 0xc6, 0x00, 0x00, 0xf4, 0xf7, 0x0e, 0xfe, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x50, 0x07, 0x00, - 0xd0, 0x79, 0x01, 0x00, 0x10, 0x7b, 0x01, 0x00, - 0x80, 0x80, 0x07, 0x00, 0x50, 0x80, 0x07, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, 0x05, 0x28, - 0x01, 0xd3, 0xf4, 0xf7, 0x29, 0xfe, 0x05, 0x2d, - 0x01, 0xd3, 0xf4, 0xf7, 0x25, 0xfe, 0x0b, 0x4a, - 0xa8, 0x00, 0x11, 0x58, 0xa0, 0x00, 0x10, 0x58, - 0x3c, 0x00, 0xc0, 0xc6, 0x00, 0x00, 0x0e, 0xc9, - 0x0e, 0xc0, 0x06, 0x21, 0x06, 0x22, 0x06, 0x48, - 0x69, 0x43, 0x2a, 0x38, 0x09, 0x18, 0x62, 0x43, - 0x10, 0x18, 0x06, 0x22, 0xf3, 0xf7, 0x0f, 0xff, - 0x02, 0x48, 0x30, 0x38, 0x41, 0x5d, 0x01, 0x55, - 0xb0, 0xbd, 0x10, 0x7b, 0x01, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0e, 0x48, 0x0d, 0x1c, 0x80, 0x78, - 0x01, 0x21, 0xa1, 0x40, 0x08, 0x40, 0x03, 0xd0, - 0x01, 0x21, 0x3c, 0x00, 0xfc, 0xc6, 0x00, 0x00, - 0x86, 0x20, 0xf4, 0xf7, 0xd1, 0xfd, 0x06, 0x21, - 0x06, 0x22, 0x09, 0x48, 0x69, 0x43, 0x09, 0x18, - 0x62, 0x43, 0x10, 0x18, 0x06, 0x22, 0xf3, 0xf7, - 0xf1, 0xfe, 0x20, 0x1c, 0xf4, 0xf7, 0x40, 0xfa, - 0x03, 0x4a, 0xa1, 0x00, 0x2a, 0x32, 0x51, 0x58, - 0x08, 0x71, 0xb0, 0xbd, 0x00, 0x50, 0x07, 0x00, - 0xe6, 0x7a, 0x01, 0x00, 0x03, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0x48, 0x60, 0x3c, 0x00, 0x38, 0xc7, - 0x00, 0x00, 0x07, 0xf0, 0x32, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0xd4, 0x7a, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, - 0xd8, 0xfd, 0x07, 0x49, 0x08, 0x7a, 0x07, 0x4a, - 0x10, 0x70, 0x01, 0x20, 0x08, 0x72, 0xfe, 0xf7, - 0xf4, 0xfb, 0x04, 0x4a, 0x04, 0x30, 0xa1, 0x00, - 0x3c, 0x32, 0x51, 0x58, 0x08, 0x71, 0x10, 0xbd, - 0x00, 0x00, 0x80, 0x80, 0x07, 0x00, 0x3c, 0x00, - 0x74, 0xc7, 0x00, 0x00, 0xd4, 0x7a, 0x01, 0x00, - 0x03, 0x49, 0x80, 0xb5, 0x01, 0x20, 0x48, 0x60, - 0x07, 0xf0, 0x0e, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0xd4, 0x7a, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, 0xb4, 0xfd, - 0x20, 0x1c, 0xf5, 0xf7, 0x8f, 0xfe, 0x00, 0x21, - 0x20, 0x1c, 0xfb, 0xf7, 0x31, 0xfd, 0x01, 0x21, - 0x00, 0x28, 0x00, 0xd0, 0x01, 0x1c, 0x09, 0x04, - 0x3c, 0x00, 0xb0, 0xc7, 0x00, 0x00, 0x09, 0x0c, - 0x20, 0x1c, 0x04, 0xf0, 0x22, 0xfa, 0x10, 0xbd, - 0x00, 0x00, 0x06, 0x49, 0x01, 0x20, 0x05, 0x4b, - 0x88, 0x60, 0x00, 0x20, 0x3c, 0x33, 0x00, 0x21, - 0x82, 0x00, 0x9a, 0x58, 0x11, 0x70, 0x01, 0x30, - 0x05, 0x28, 0xf9, 0xdb, 0x70, 0x47, 0xd4, 0x7a, - 0x01, 0x00, 0x0f, 0x49, 0x38, 0xb5, 0x00, 0x20, - 0x88, 0x60, 0x0e, 0x48, 0x01, 0x1c, 0x20, 0x31, - 0x8a, 0x79, 0x3c, 0x00, 0xec, 0xc7, 0x00, 0x00, - 0x00, 0xab, 0x1a, 0x70, 0xc9, 0x79, 0x0a, 0x4c, - 0x09, 0x4d, 0x59, 0x70, 0x0c, 0x34, 0x3c, 0x35, - 0x00, 0x21, 0x03, 0x22, 0x63, 0x5c, 0x00, 0x2b, - 0x02, 0xd0, 0x8b, 0x00, 0xeb, 0x58, 0x1a, 0x70, - 0x01, 0x31, 0x05, 0x29, 0xf6, 0xdb, 0x00, 0xab, - 0x19, 0x88, 0xc1, 0x84, 0x38, 0xbd, 0x00, 0x00, - 0xd4, 0x7a, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0xff, 0xb5, 0x14, 0x4f, 0x3c, 0x00, 0x28, 0xc8, - 0x00, 0x00, 0x04, 0x1c, 0xbe, 0x79, 0x0d, 0x1c, - 0x81, 0xb0, 0x0f, 0x20, 0x00, 0xf0, 0xb9, 0xf8, - 0x2a, 0x1c, 0x10, 0x4d, 0x00, 0x90, 0x21, 0x1c, - 0x28, 0x1c, 0xf4, 0xf7, 0xde, 0xfc, 0x21, 0x1c, - 0xa8, 0x1d, 0x03, 0x9a, 0xf4, 0xf7, 0xd9, 0xfc, - 0x21, 0x1c, 0x28, 0x1c, 0x0c, 0x30, 0x04, 0x9a, - 0xf4, 0xf7, 0xd3, 0xfc, 0x21, 0x1c, 0x28, 0x1c, - 0x12, 0x30, 0x0a, 0x9a, 0xf4, 0xf7, 0x3c, 0x00, - 0x64, 0xc8, 0x00, 0x00, 0xcd, 0xfc, 0x07, 0xf0, - 0x9b, 0xf8, 0x00, 0x98, 0x00, 0xf0, 0x76, 0xf8, - 0xbe, 0x71, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0x20, 0x10, 0x07, 0x00, 0xe6, 0x7a, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x20, 0xf6, 0xf7, 0x26, 0xf8, - 0x07, 0x49, 0x88, 0x78, 0x00, 0x09, 0x00, 0x01, - 0x88, 0x70, 0x00, 0x24, 0x20, 0x1c, 0xf5, 0xf7, - 0x11, 0xfe, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, - 0x3c, 0x00, 0xa0, 0xc8, 0x00, 0x00, 0x04, 0x2c, - 0xf7, 0xd3, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x50, - 0x07, 0x00, 0x80, 0xb5, 0x02, 0xf0, 0xe3, 0xfb, - 0x03, 0x48, 0x81, 0x78, 0x0f, 0x22, 0x11, 0x43, - 0x81, 0x70, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x50, - 0x07, 0x00, 0xf8, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x05, 0x28, 0x01, 0xd3, 0xf4, 0xf7, 0x17, 0xfd, - 0xa6, 0x00, 0x00, 0x2d, 0x11, 0x4f, 0x07, 0xd1, - 0xb8, 0x59, 0x3c, 0x00, 0xdc, 0xc8, 0x00, 0x00, - 0x81, 0x68, 0x00, 0x29, 0x0e, 0xd1, 0x40, 0x78, - 0x00, 0x28, 0x0b, 0xd0, 0x02, 0xe0, 0xff, 0x35, - 0x2d, 0x06, 0x2d, 0x0e, 0x29, 0x1c, 0x20, 0x1c, - 0xfb, 0xf7, 0x88, 0xfc, 0x01, 0x1c, 0x20, 0x1c, - 0x04, 0xf0, 0x7e, 0xf9, 0x06, 0x49, 0x01, 0x20, - 0x30, 0x39, 0x08, 0x55, 0x04, 0x48, 0x3c, 0x38, - 0x80, 0x68, 0x00, 0x28, 0x02, 0xd1, 0xb9, 0x59, - 0x03, 0x20, 0x08, 0x70, 0x3c, 0x00, 0x18, 0xc9, - 0x00, 0x00, 0xf8, 0xbd, 0x00, 0x00, 0x10, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0x04, 0xf0, 0xcd, 0xf9, - 0x80, 0xbd, 0x10, 0xb5, 0x04, 0x1c, 0x05, 0x28, - 0x01, 0xd3, 0xf4, 0xf7, 0xe6, 0xfc, 0x20, 0x1c, - 0xf5, 0xf7, 0xc1, 0xfd, 0x00, 0x20, 0x05, 0x4a, - 0xa1, 0x00, 0x51, 0x58, 0x88, 0x60, 0x04, 0x49, - 0x88, 0x78, 0x01, 0x22, 0xa2, 0x40, 0x10, 0x43, - 0x88, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xc9, 0x00, 0x00, 0x10, 0x7b, 0x01, 0x00, - 0x00, 0x50, 0x07, 0x00, 0x02, 0x4a, 0x91, 0x78, - 0x08, 0x43, 0x90, 0x70, 0x70, 0x47, 0x00, 0x00, - 0x00, 0x50, 0x07, 0x00, 0xf8, 0xb5, 0x0c, 0x4f, - 0xbe, 0x79, 0x0f, 0x20, 0x00, 0xf0, 0x18, 0xf8, - 0x05, 0x1c, 0x00, 0x24, 0x20, 0x1c, 0xf4, 0xf7, - 0x0d, 0xf9, 0x08, 0x4a, 0xa1, 0x00, 0x51, 0x58, - 0x08, 0x71, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, - 0x3c, 0x00, 0x90, 0xc9, 0x00, 0x00, 0x04, 0x2c, - 0xf3, 0xd3, 0x28, 0x1c, 0xff, 0xf7, 0xe1, 0xff, - 0xbe, 0x71, 0xf8, 0xbd, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0x10, 0x7b, 0x01, 0x00, 0xb0, 0xb5, - 0x08, 0x49, 0x8d, 0x78, 0x8a, 0x78, 0x05, 0x40, - 0x82, 0x43, 0x8a, 0x70, 0x06, 0xf0, 0xf9, 0xf9, - 0x04, 0x1c, 0x0a, 0x34, 0x20, 0x1c, 0x06, 0xf0, - 0x34, 0xf9, 0x00, 0x28, 0xfa, 0xd0, 0x28, 0x1c, - 0xb0, 0xbd, 0x3c, 0x00, 0xcc, 0xc9, 0x00, 0x00, - 0x00, 0x50, 0x07, 0x00, 0x01, 0x49, 0x0a, 0x20, - 0x08, 0x81, 0x70, 0x47, 0x38, 0x7b, 0x01, 0x00, - 0xf8, 0xb5, 0x10, 0x48, 0x04, 0x26, 0x04, 0x1c, - 0xe0, 0x34, 0x05, 0x1c, 0x38, 0x3d, 0x00, 0x27, - 0x20, 0x1c, 0x1c, 0x30, 0xe4, 0x60, 0xa0, 0x61, - 0x27, 0x61, 0x0b, 0x48, 0xa6, 0x82, 0xe0, 0x61, - 0x27, 0x62, 0xa7, 0x62, 0x06, 0x20, 0xa0, 0x84, - 0x20, 0x1c, 0xfe, 0xf7, 0x3c, 0x00, 0x08, 0xca, - 0x00, 0x00, 0x87, 0xfc, 0x20, 0x1c, 0x0c, 0x30, - 0xf6, 0xf7, 0xb7, 0xf9, 0x05, 0x49, 0x38, 0x3c, - 0xac, 0x42, 0x08, 0x80, 0xe7, 0xd1, 0xf8, 0xbd, - 0x00, 0x00, 0xd4, 0xe4, 0x01, 0x00, 0x12, 0x61, - 0x01, 0x00, 0x48, 0x7b, 0x01, 0x00, 0xf7, 0xb5, - 0x05, 0x1c, 0x0c, 0x23, 0x0f, 0x1c, 0x12, 0x49, - 0x58, 0x43, 0x44, 0x18, 0x20, 0x88, 0x06, 0xf0, - 0xea, 0xf9, 0xa0, 0x78, 0x01, 0x28, 0x3c, 0x00, - 0x44, 0xca, 0x00, 0x00, 0x1a, 0xd1, 0x66, 0x68, - 0x02, 0x2f, 0x05, 0xd1, 0x5c, 0x20, 0x80, 0x5b, - 0x02, 0x99, 0x00, 0x09, 0x88, 0x42, 0x11, 0xd1, - 0x28, 0x1c, 0xfe, 0xf7, 0xfb, 0xff, 0x30, 0x1c, - 0xf9, 0xf7, 0xfa, 0xfd, 0x04, 0x20, 0xa0, 0x70, - 0x39, 0x1c, 0x28, 0x1c, 0xfb, 0xf7, 0xf4, 0xf8, - 0x03, 0x4a, 0xe8, 0x00, 0x3c, 0x32, 0x11, 0x58, - 0x01, 0x31, 0x11, 0x50, 0xfe, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xca, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x01, 0x20, 0x06, 0x4a, 0x00, 0x21, - 0x0c, 0x23, 0x4b, 0x43, 0x9b, 0x18, 0x9b, 0x78, - 0x00, 0x2b, 0x00, 0xd0, 0x00, 0x20, 0x01, 0x31, - 0x04, 0x29, 0xf5, 0xdb, 0x70, 0x47, 0x60, 0x7b, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0xff, 0xf7, - 0xea, 0xfc, 0x00, 0x28, 0x03, 0xd1, 0x20, 0x21, - 0x0c, 0x20, 0xf4, 0xf7, 0xf6, 0xfb, 0x26, 0x1c, - 0x60, 0x36, 0x3c, 0x00, 0xbc, 0xca, 0x00, 0x00, - 0x00, 0x21, 0xf1, 0x71, 0xe1, 0x64, 0x60, 0x6b, - 0x25, 0x1c, 0x40, 0x35, 0x00, 0x28, 0x31, 0xd0, - 0xff, 0xf7, 0x04, 0xf9, 0x01, 0x22, 0x12, 0x03, - 0x00, 0x28, 0x20, 0x69, 0x01, 0x88, 0x01, 0xd0, - 0x91, 0x43, 0x00, 0xe0, 0x11, 0x43, 0x01, 0x80, - 0x20, 0x69, 0x01, 0x22, 0x00, 0x88, 0xd2, 0x02, - 0x28, 0x83, 0x20, 0x1c, 0x58, 0x30, 0x01, 0x88, - 0x91, 0x43, 0x01, 0x80, 0x3c, 0x00, 0xf8, 0xca, - 0x00, 0x00, 0xa3, 0x6b, 0x52, 0x08, 0x00, 0x2b, - 0x10, 0xd0, 0x91, 0x43, 0x01, 0x80, 0x28, 0x8b, - 0x00, 0x07, 0x80, 0x0f, 0x01, 0x28, 0x15, 0xd0, - 0x2e, 0x20, 0x01, 0x5d, 0x20, 0x69, 0x04, 0x30, - 0xf8, 0xf7, 0x41, 0xfd, 0x61, 0x6a, 0xfe, 0xf7, - 0xa8, 0xf9, 0x04, 0xe0, 0x11, 0x43, 0x01, 0x80, - 0x20, 0x1c, 0xfb, 0xf7, 0xcc, 0xfb, 0x68, 0x83, - 0x04, 0xe0, 0x20, 0x69, 0x41, 0x80, 0x3c, 0x00, - 0x34, 0xcb, 0x00, 0x00, 0xa8, 0x8b, 0x21, 0x69, - 0xc8, 0x82, 0xe0, 0x68, 0xf6, 0xf7, 0x20, 0xf9, - 0x30, 0x80, 0x60, 0x6d, 0x00, 0x28, 0x04, 0xd0, - 0x00, 0x22, 0x03, 0x21, 0x70, 0x7a, 0xfe, 0xf7, - 0x0d, 0xff, 0x20, 0x1c, 0x00, 0xf0, 0xb6, 0xf9, - 0x70, 0x7a, 0x06, 0xf0, 0x45, 0xf8, 0x70, 0xbd, - 0xb0, 0xb5, 0x00, 0x24, 0x06, 0xf0, 0x22, 0xf9, - 0x09, 0x4a, 0x00, 0x21, 0x0c, 0x23, 0x4b, 0x43, - 0x3c, 0x00, 0x70, 0xcb, 0x00, 0x00, 0x9d, 0x18, - 0x6b, 0x68, 0x5b, 0x6c, 0xad, 0x78, 0xc3, 0x1a, - 0x01, 0x2d, 0x02, 0xd1, 0xa3, 0x42, 0x00, 0xdd, - 0x1c, 0x1c, 0x01, 0x31, 0x05, 0x29, 0xf0, 0xd3, - 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x06, 0xf0, - 0xa8, 0xfe, 0x0c, 0x20, 0x08, 0x49, 0x60, 0x43, - 0x45, 0x18, 0x28, 0x88, 0x06, 0xf0, 0x35, 0xf9, - 0x68, 0x68, 0x3c, 0x00, 0xac, 0xcb, 0x00, 0x00, - 0x00, 0x28, 0x06, 0xd0, 0x20, 0x30, 0x00, 0x7b, - 0x01, 0x28, 0x02, 0xd1, 0x20, 0x1c, 0xff, 0xf7, - 0xa3, 0xfa, 0xb0, 0xbd, 0x60, 0x7b, 0x01, 0x00, - 0xff, 0xb5, 0x85, 0xb0, 0x0f, 0xae, 0x60, 0xce, - 0x38, 0x20, 0x1e, 0x49, 0x70, 0x43, 0x17, 0x1c, - 0x44, 0x18, 0xff, 0xf7, 0x7f, 0xf8, 0x01, 0x22, - 0x12, 0x03, 0x00, 0x28, 0x03, 0xd0, 0x20, 0x88, - 0x90, 0x43, 0x20, 0x80, 0x3c, 0x00, 0xe8, 0xcb, - 0x00, 0x00, 0x02, 0xe0, 0x21, 0x88, 0x11, 0x43, - 0x21, 0x80, 0x11, 0x98, 0x39, 0x1c, 0xe0, 0x62, - 0x05, 0x98, 0xf8, 0xf7, 0xd0, 0xfc, 0x01, 0x1c, - 0x2b, 0x1c, 0x38, 0x1c, 0x06, 0x9a, 0xfe, 0xf7, - 0x20, 0xf9, 0x60, 0x80, 0x06, 0x22, 0x20, 0x1d, - 0x0f, 0x49, 0xf3, 0xf7, 0x72, 0xfc, 0x23, 0x1c, - 0x08, 0x98, 0x30, 0x33, 0x18, 0x70, 0x0e, 0x98, - 0x0c, 0x49, 0x58, 0x70, 0x65, 0x63, 0x3c, 0x00, - 0x24, 0xcc, 0x00, 0x00, 0x00, 0x20, 0x02, 0x90, - 0x01, 0x22, 0x04, 0x92, 0x09, 0x48, 0x03, 0x91, - 0x5a, 0x78, 0x01, 0x88, 0x01, 0x92, 0x00, 0x91, - 0x19, 0x78, 0x24, 0x3b, 0x30, 0x1c, 0x62, 0x6b, - 0xfe, 0xf7, 0xa8, 0xfe, 0x09, 0xb0, 0xf0, 0xbd, - 0xd4, 0xe4, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00, - 0x5d, 0x4e, 0x00, 0x00, 0x48, 0x7b, 0x01, 0x00, - 0xff, 0xb5, 0x87, 0xb0, 0x10, 0x98, 0x12, 0xaf, - 0x3c, 0x00, 0x60, 0xcc, 0x00, 0x00, 0x8c, 0x46, - 0xa2, 0xcf, 0x4c, 0x23, 0x30, 0x4c, 0x6b, 0x43, - 0x1c, 0x19, 0x16, 0x1c, 0x15, 0x9a, 0x27, 0x85, - 0x27, 0x1c, 0x30, 0x37, 0x06, 0x97, 0x05, 0x97, - 0x00, 0x23, 0x3b, 0x73, 0x05, 0x9f, 0x78, 0x73, - 0x11, 0x98, 0x27, 0x1c, 0x60, 0x64, 0x61, 0x60, - 0x22, 0x60, 0x40, 0x37, 0x3e, 0x70, 0x61, 0x46, - 0x61, 0x87, 0x07, 0x98, 0x31, 0x1c, 0xf8, 0xf7, - 0x80, 0xfc, 0x3c, 0x00, 0x9c, 0xcc, 0x00, 0x00, - 0x05, 0x99, 0xc8, 0x73, 0x0a, 0x98, 0x78, 0x70, - 0x30, 0x1c, 0xfe, 0xf7, 0x73, 0xf8, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x00, 0xe0, 0x00, 0x20, - 0x41, 0x00, 0x02, 0x20, 0x01, 0x40, 0x11, 0x9a, - 0x01, 0x20, 0x00, 0x2a, 0x00, 0xd1, 0x00, 0x20, - 0x08, 0x43, 0x38, 0x72, 0x20, 0x1c, 0x2e, 0x30, - 0x07, 0x99, 0xfd, 0xf7, 0xcf, 0xff, 0x28, 0x1c, - 0x04, 0xf0, 0xae, 0xf8, 0x3c, 0x00, 0xd8, 0xcc, - 0x00, 0x00, 0xfe, 0xf7, 0xfe, 0xff, 0x4c, 0x22, - 0x12, 0x4b, 0x6a, 0x43, 0xd2, 0x18, 0x01, 0x21, - 0x09, 0x03, 0x2a, 0x32, 0x00, 0x28, 0x04, 0xd0, - 0x10, 0x1c, 0x12, 0x88, 0x8a, 0x43, 0x02, 0x80, - 0x02, 0xe0, 0x10, 0x88, 0x08, 0x43, 0x10, 0x80, - 0x0b, 0x49, 0x00, 0x20, 0x03, 0x91, 0x06, 0x99, - 0x02, 0x90, 0x00, 0x22, 0x04, 0x92, 0x08, 0x48, - 0x0a, 0x7b, 0x41, 0x88, 0x23, 0x1c, 0x3c, 0x00, - 0x14, 0xcd, 0x00, 0x00, 0x01, 0x92, 0x00, 0x91, - 0x79, 0x78, 0x08, 0x33, 0x28, 0x1c, 0x62, 0x68, - 0xfe, 0xf7, 0x38, 0xfe, 0x0b, 0xb0, 0xf0, 0xbd, - 0x58, 0xe3, 0x01, 0x00, 0x75, 0x4f, 0x00, 0x00, - 0x3c, 0x7c, 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, - 0x01, 0x28, 0x27, 0xd0, 0x80, 0x28, 0x30, 0xd1, - 0xe0, 0x6c, 0x00, 0x28, 0x08, 0xd0, 0x69, 0x20, - 0x00, 0x5d, 0x18, 0x49, 0xc0, 0x00, 0x40, 0x18, - 0x3c, 0x00, 0x50, 0xcd, 0x00, 0x00, 0x04, 0x30, - 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x20, 0x1c, - 0xff, 0xf7, 0xe9, 0xfb, 0x13, 0x4d, 0x50, 0x3d, - 0xe8, 0x68, 0x00, 0x28, 0x05, 0xd0, 0x2e, 0x20, - 0x00, 0x5d, 0xfe, 0xf7, 0x10, 0xf8, 0x02, 0xf0, - 0x42, 0xfe, 0x20, 0x1c, 0x61, 0x68, 0xf3, 0xf7, - 0x2f, 0xfb, 0x40, 0x34, 0x60, 0x78, 0x00, 0x28, - 0x02, 0xd1, 0x06, 0xf0, 0x12, 0xf8, 0xa8, 0x60, - 0xb0, 0xbd, 0x3c, 0x00, 0x8c, 0xcd, 0x00, 0x00, - 0x20, 0x06, 0x00, 0x0e, 0x81, 0x28, 0xfa, 0xd1, - 0x22, 0x0c, 0x20, 0x04, 0x00, 0x0e, 0x02, 0x21, - 0xfe, 0xf7, 0xe6, 0xfd, 0xb0, 0xbd, 0x0a, 0x21, - 0x0c, 0x20, 0xf4, 0xf7, 0x7d, 0xfa, 0xb0, 0xbd, - 0x9c, 0x7b, 0x01, 0x00, 0xf8, 0xb5, 0x18, 0x4e, - 0x18, 0x4f, 0x05, 0x1c, 0x34, 0x79, 0xb8, 0x79, - 0x00, 0x90, 0x20, 0x1c, 0xf5, 0xf7, 0x7c, 0xff, - 0x00, 0x28, 0x06, 0xd0, 0x3c, 0x00, 0xc8, 0xcd, - 0x00, 0x00, 0x12, 0x48, 0x38, 0x38, 0x40, 0x68, - 0x85, 0x42, 0x01, 0xd1, 0x00, 0x2d, 0x03, 0xd1, - 0x10, 0x21, 0x86, 0x20, 0xf4, 0xf7, 0x63, 0xfa, - 0x0d, 0x49, 0x00, 0x20, 0x38, 0x39, 0x48, 0x60, - 0x04, 0x21, 0x20, 0x1c, 0xff, 0xf7, 0x59, 0xfc, - 0x04, 0x21, 0x20, 0x1c, 0xf5, 0xf7, 0xeb, 0xfe, - 0x0c, 0x21, 0x06, 0x4a, 0x61, 0x43, 0x30, 0x3a, - 0x89, 0x18, 0x0c, 0x71, 0x04, 0x20, 0x3c, 0x00, - 0x04, 0xce, 0x00, 0x00, 0x30, 0x71, 0x00, 0x98, - 0xb8, 0x71, 0x0f, 0x20, 0xff, 0xf7, 0xa6, 0xfd, - 0xf8, 0xbd, 0x00, 0x00, 0xa4, 0x7a, 0x01, 0x00, - 0x20, 0x10, 0x07, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x0f, 0x20, 0xff, 0xf7, 0xc1, 0xfd, 0xf5, 0xf7, - 0x3b, 0xff, 0x01, 0x25, 0x00, 0x28, 0x00, 0xd0, - 0x00, 0x25, 0x16, 0x4e, 0xb0, 0x79, 0x16, 0x4f, - 0x00, 0x90, 0x38, 0x79, 0x04, 0x28, 0x01, 0xd1, - 0x3c, 0x00, 0x40, 0xce, 0x00, 0x00, 0x00, 0x2c, - 0x03, 0xd1, 0x11, 0x21, 0x86, 0x20, 0xf4, 0xf7, - 0x2c, 0xfa, 0x10, 0x48, 0x29, 0x06, 0x38, 0x38, - 0x44, 0x60, 0x09, 0x0e, 0x0c, 0x1c, 0x04, 0x20, - 0xff, 0xf7, 0x21, 0xfc, 0x03, 0x21, 0x20, 0x1c, - 0xff, 0xf7, 0x41, 0xfc, 0x21, 0x1c, 0x04, 0x20, - 0xf5, 0xf7, 0xaf, 0xfe, 0x0c, 0x21, 0x07, 0x4a, - 0x69, 0x43, 0x04, 0x20, 0x30, 0x3a, 0x89, 0x18, - 0x08, 0x71, 0x3c, 0x00, 0x7c, 0xce, 0x00, 0x00, - 0x3c, 0x71, 0x00, 0x98, 0xb0, 0x71, 0x20, 0x1c, - 0xff, 0xf7, 0x50, 0xfd, 0x04, 0x20, 0xf8, 0xbd, - 0x20, 0x10, 0x07, 0x00, 0xa4, 0x7a, 0x01, 0x00, - 0x0c, 0x23, 0x02, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x80, 0x68, 0x70, 0x47, 0x74, 0x7a, 0x01, 0x00, - 0x60, 0x30, 0xc1, 0x79, 0x80, 0x79, 0x81, 0x42, - 0x01, 0xd9, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xce, - 0x00, 0x00, 0x01, 0x48, 0x80, 0x68, 0x70, 0x47, - 0x00, 0x00, 0x4c, 0x7b, 0x01, 0x00, 0x38, 0xb5, - 0x69, 0x21, 0x09, 0x5c, 0x18, 0x23, 0x10, 0x4a, - 0x59, 0x43, 0x89, 0x18, 0x8a, 0x68, 0x01, 0x32, - 0x8a, 0x60, 0x4b, 0x69, 0xd2, 0x1a, 0xcb, 0x68, - 0x93, 0x42, 0x00, 0xd2, 0xca, 0x60, 0x00, 0x22, - 0x0b, 0x4c, 0x02, 0x60, 0x22, 0x1c, 0x20, 0x32, - 0x95, 0x79, 0x00, 0xab, 0x1d, 0x70, 0x3c, 0x00, - 0xf4, 0xce, 0x00, 0x00, 0xd2, 0x79, 0x5a, 0x70, - 0x0a, 0x68, 0x00, 0x2a, 0x01, 0xd1, 0x48, 0x60, - 0x00, 0xe0, 0x10, 0x60, 0x00, 0xab, 0x08, 0x60, - 0x18, 0x88, 0xe0, 0x84, 0x38, 0xbd, 0x00, 0x00, - 0xc4, 0x7b, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x18, 0x23, 0x0a, 0x49, 0x58, 0x43, 0x41, 0x18, - 0x08, 0x69, 0x01, 0x30, 0x08, 0x61, 0x48, 0x68, - 0x00, 0x28, 0x09, 0xd0, 0x48, 0x69, 0x01, 0x30, - 0x3c, 0x00, 0x30, 0xcf, 0x00, 0x00, 0x48, 0x61, - 0x48, 0x68, 0x02, 0x68, 0x4a, 0x60, 0x00, 0x2a, - 0x00, 0xd1, 0x0a, 0x60, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0xc4, 0x7b, 0x01, 0x00, 0xf8, 0xb5, - 0x12, 0x4e, 0x10, 0x4d, 0x0f, 0x4c, 0x0a, 0x27, - 0x21, 0x1c, 0x00, 0x20, 0xe0, 0x60, 0x2a, 0x31, - 0x22, 0x1c, 0x18, 0x32, 0xa1, 0x60, 0x62, 0x61, - 0x27, 0x82, 0x0c, 0x4a, 0xe0, 0x61, 0xa2, 0x61, - 0x60, 0x62, 0x3c, 0x00, 0x6c, 0xcf, 0x00, 0x00, - 0x06, 0x20, 0x20, 0x84, 0x08, 0x1c, 0xfe, 0xf7, - 0xd7, 0xf9, 0x20, 0x1c, 0x08, 0x30, 0xf5, 0xf7, - 0x01, 0xff, 0x4c, 0x3c, 0xac, 0x42, 0x70, 0x80, - 0xe5, 0xd1, 0xff, 0x20, 0x30, 0x70, 0xf8, 0xbd, - 0x88, 0xe4, 0x01, 0x00, 0x0c, 0xe3, 0x01, 0x00, - 0x3c, 0x7c, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00, - 0xf8, 0xb5, 0x04, 0x1c, 0x0b, 0x48, 0x0e, 0x1c, - 0x17, 0x1c, 0x44, 0x70, 0x3c, 0x00, 0xa8, 0xcf, - 0x00, 0x00, 0x05, 0xf0, 0x00, 0xff, 0x05, 0x1c, - 0x39, 0x1c, 0x30, 0x1c, 0xfd, 0xf7, 0xab, 0xff, - 0x0c, 0x21, 0x05, 0x4a, 0x28, 0x18, 0x0a, 0x30, - 0x61, 0x43, 0x08, 0x32, 0x50, 0x50, 0x03, 0x48, - 0x89, 0x18, 0x00, 0x68, 0x88, 0x60, 0xf8, 0xbd, - 0x00, 0x00, 0x6c, 0x7a, 0x01, 0x00, 0x78, 0x6e, - 0x01, 0x00, 0x70, 0xb5, 0x0b, 0x4e, 0x05, 0x1c, - 0x70, 0x78, 0xff, 0x28, 0x0f, 0xd0, 0x3c, 0x00, - 0xe4, 0xcf, 0x00, 0x00, 0x0c, 0x23, 0x08, 0x4c, - 0x58, 0x43, 0x08, 0x34, 0x20, 0x58, 0x05, 0xf0, - 0x1d, 0xfe, 0x00, 0x28, 0x06, 0xd1, 0x70, 0x78, - 0x0c, 0x23, 0x58, 0x43, 0x00, 0x19, 0x81, 0x68, - 0x29, 0x43, 0x81, 0x60, 0x70, 0xbd, 0x00, 0x00, - 0x6c, 0x7a, 0x01, 0x00, 0x80, 0xb5, 0x30, 0x21, - 0x01, 0x48, 0xf3, 0xf7, 0x43, 0xfa, 0x80, 0xbd, - 0xec, 0xe5, 0x01, 0x00, 0x10, 0xb5, 0x05, 0xf0, - 0x3c, 0x00, 0x20, 0xd0, 0x00, 0x00, 0xc5, 0xfe, - 0x0a, 0x49, 0x44, 0x18, 0x0c, 0xe0, 0x20, 0x1c, - 0x05, 0xf0, 0xf7, 0xfd, 0x00, 0x28, 0x07, 0xd0, - 0xf5, 0xf7, 0x51, 0xfe, 0x00, 0x28, 0x03, 0xd0, - 0x13, 0x21, 0x86, 0x20, 0xf4, 0xf7, 0x31, 0xf9, - 0xf5, 0xf7, 0x49, 0xfe, 0x00, 0x28, 0xee, 0xd1, - 0x10, 0xbd, 0xb0, 0x36, 0x00, 0x00, 0xff, 0xb5, - 0x8b, 0xb0, 0x19, 0x9b, 0x0d, 0x1c, 0x04, 0x1c, - 0x1a, 0x20, 0x3c, 0x00, 0x5c, 0xd0, 0x00, 0x00, - 0x00, 0x2b, 0x16, 0x99, 0x00, 0xd1, 0x18, 0x20, - 0x01, 0x90, 0x14, 0x98, 0x00, 0x28, 0x27, 0xd0, - 0xff, 0x20, 0x19, 0x9b, 0x01, 0x30, 0x00, 0x2b, - 0x01, 0xd1, 0x18, 0x23, 0x00, 0xe0, 0x1a, 0x23, - 0x04, 0x33, 0x82, 0x42, 0x04, 0xd3, 0xd0, 0x1a, - 0x40, 0x08, 0x40, 0x00, 0x00, 0x04, 0x00, 0x0c, - 0x0d, 0x90, 0x6a, 0x48, 0x00, 0x88, 0xc2, 0x1a, - 0x12, 0x04, 0x12, 0x0c, 0x3c, 0x00, 0x98, 0xd0, - 0x00, 0x00, 0x04, 0x92, 0x00, 0x29, 0x08, 0xd0, - 0x89, 0x79, 0x66, 0x4a, 0x49, 0x00, 0x51, 0x5a, - 0x04, 0x9a, 0x51, 0x1a, 0x0a, 0x04, 0x12, 0x0c, - 0x04, 0x92, 0x04, 0x9a, 0x82, 0x42, 0x05, 0xd9, - 0x00, 0x20, 0x04, 0x90, 0x02, 0xe0, 0x60, 0x48, - 0x04, 0x90, 0x0d, 0x90, 0x01, 0x98, 0x01, 0x04, - 0x09, 0x0c, 0x0a, 0x91, 0x00, 0x20, 0xf4, 0xf7, - 0x84, 0xfa, 0x00, 0x90, 0x00, 0x68, 0x3c, 0x00, - 0xd4, 0xd0, 0x00, 0x00, 0x00, 0x26, 0x06, 0x90, - 0x20, 0x60, 0x00, 0x20, 0x05, 0x90, 0x0e, 0x98, - 0x00, 0x24, 0x00, 0x05, 0x00, 0x0c, 0x09, 0x90, - 0x1a, 0x98, 0x0d, 0x9f, 0x40, 0x07, 0x40, 0x0f, - 0x08, 0x90, 0x07, 0x94, 0x03, 0x95, 0x00, 0x2d, - 0x0d, 0xd0, 0x28, 0x89, 0xb8, 0x42, 0x04, 0xd8, - 0x36, 0x18, 0x3f, 0x1a, 0x07, 0xd0, 0xed, 0x68, - 0xf5, 0xe7, 0x39, 0x04, 0x09, 0x0c, 0x28, 0x1c, - 0x3c, 0x00, 0x10, 0xd1, 0x00, 0x00, 0xf4, 0xf7, - 0x38, 0xfb, 0xef, 0xe7, 0x00, 0x2e, 0x02, 0xd1, - 0x07, 0x99, 0x00, 0x29, 0x71, 0xd1, 0x27, 0x1c, - 0x6c, 0x20, 0xf4, 0xf7, 0x88, 0xfb, 0x07, 0x99, - 0x04, 0x1c, 0x00, 0x29, 0x20, 0xd1, 0x07, 0x94, - 0x00, 0x20, 0xa0, 0x61, 0x18, 0x98, 0x27, 0x1c, - 0x60, 0x60, 0x17, 0x98, 0x24, 0x37, 0xa0, 0x60, - 0x06, 0x98, 0x20, 0x61, 0x15, 0x98, 0x0f, 0xc8, - 0x0f, 0xc7, 0x3c, 0x00, 0x4c, 0xd1, 0x00, 0x00, - 0x14, 0x98, 0x5c, 0x21, 0x60, 0x63, 0x09, 0x98, - 0x08, 0x53, 0x19, 0x98, 0x69, 0x21, 0xe0, 0x63, - 0x1b, 0x98, 0x08, 0x55, 0x1c, 0x98, 0x60, 0x65, - 0x19, 0x98, 0x00, 0x28, 0x23, 0xd0, 0x08, 0x98, - 0x06, 0x99, 0x08, 0x83, 0x1f, 0xe0, 0x6c, 0x22, - 0x20, 0x1c, 0x07, 0x99, 0xf3, 0xf7, 0x1a, 0xfa, - 0x3c, 0x60, 0x01, 0x98, 0x62, 0x21, 0x30, 0x18, - 0xc8, 0x53, 0x15, 0x98, 0x3c, 0x00, 0x88, 0xd1, - 0x00, 0x00, 0x40, 0x21, 0x80, 0x7a, 0xc8, 0x55, - 0x00, 0x20, 0xb8, 0x63, 0x06, 0x98, 0x0a, 0x99, - 0xf4, 0xf7, 0x1f, 0xfa, 0xf8, 0x60, 0x02, 0x99, - 0xf4, 0xf7, 0x3b, 0xf9, 0x20, 0x1c, 0x40, 0x30, - 0x81, 0x8b, 0x05, 0x9a, 0x12, 0x07, 0x12, 0x0f, - 0x11, 0x43, 0x81, 0x83, 0x03, 0x98, 0x5e, 0x21, - 0x02, 0x90, 0x01, 0x98, 0x22, 0x4a, 0x30, 0x18, - 0x08, 0x53, 0x12, 0x68, 0x01, 0x21, 0x3c, 0x00, - 0xc4, 0xd1, 0x00, 0x00, 0x08, 0x1c, 0x00, 0x2a, - 0x00, 0xd0, 0x1b, 0x98, 0x00, 0x06, 0x04, 0x9a, - 0x00, 0x0e, 0x96, 0x42, 0x03, 0xd9, 0x2c, 0x22, - 0x11, 0x55, 0x1b, 0x49, 0x04, 0xe0, 0x15, 0x99, - 0x2c, 0x22, 0x09, 0x7a, 0x11, 0x55, 0x19, 0x49, - 0x08, 0x5c, 0x66, 0x21, 0x08, 0x55, 0x1c, 0x98, - 0x00, 0x28, 0x01, 0xd0, 0x1f, 0x20, 0x08, 0x55, - 0x00, 0x2d, 0x03, 0xd0, 0xe8, 0x68, 0x03, 0x90, - 0x3c, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0x20, - 0x00, 0xe0, 0x09, 0xe0, 0xe8, 0x60, 0x05, 0x98, - 0x00, 0x26, 0x01, 0x30, 0x00, 0x04, 0x00, 0x0c, - 0x0d, 0x9f, 0x05, 0x90, 0x03, 0x9d, 0x6d, 0xe7, - 0x00, 0x98, 0xe0, 0x60, 0x02, 0x99, 0xf4, 0xf7, - 0xfa, 0xf8, 0x00, 0x20, 0x20, 0x60, 0x01, 0x21, - 0xa1, 0x63, 0x60, 0x34, 0x60, 0x80, 0x07, 0x98, - 0x0f, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x06, 0x61, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0xd2, 0x00, 0x00, - 0x5c, 0x43, 0x01, 0x00, 0x38, 0x09, 0x00, 0x00, - 0x18, 0x67, 0x01, 0x00, 0x0e, 0x61, 0x01, 0x00, - 0x0a, 0x61, 0x01, 0x00, 0x01, 0x48, 0x00, 0x68, - 0x70, 0x47, 0x00, 0x00, 0xc4, 0x6a, 0x01, 0x00, - 0x02, 0x49, 0x09, 0x1d, 0x03, 0xc9, 0x40, 0x18, - 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, - 0x01, 0x48, 0x00, 0x69, 0x70, 0x47, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0x3c, 0x00, 0x78, 0xd2, - 0x00, 0x00, 0x01, 0x48, 0x40, 0x69, 0x70, 0x47, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x48, - 0x80, 0x69, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x4e, 0x00, 0x20, - 0x35, 0x1c, 0x40, 0x35, 0xf0, 0x63, 0x0d, 0xe0, - 0xa0, 0x68, 0xf4, 0xf7, 0x7a, 0xf9, 0xb3, 0x6d, - 0x00, 0x2b, 0x04, 0xd0, 0x00, 0x22, 0x01, 0x20, - 0x61, 0x6b, 0xf3, 0xf7, 0x95, 0xf8, 0x3c, 0x00, - 0xb4, 0xd2, 0x00, 0x00, 0x20, 0x1c, 0xf4, 0xf7, - 0x9d, 0xfa, 0x28, 0x1c, 0xfa, 0xf7, 0x42, 0xfd, - 0x04, 0x1c, 0xec, 0xd1, 0x70, 0xbd, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4f, - 0x00, 0x26, 0xf8, 0x6b, 0x00, 0x28, 0x2c, 0xd0, - 0x38, 0x1c, 0x40, 0x30, 0x00, 0x90, 0x1d, 0xe0, - 0x16, 0x48, 0xb9, 0x6b, 0x02, 0xf0, 0x5c, 0xf8, - 0x00, 0x22, 0x20, 0x1c, 0x14, 0x49, 0x03, 0xf0, - 0x3c, 0x00, 0xf0, 0xd2, 0x00, 0x00, 0x7b, 0xff, - 0x05, 0x1c, 0x04, 0xd1, 0x38, 0x6a, 0x01, 0x30, - 0x38, 0x62, 0x01, 0x36, 0x0d, 0xe0, 0xa0, 0x68, - 0xf4, 0xf7, 0x49, 0xf9, 0xbb, 0x6d, 0x00, 0x2b, - 0x04, 0xd0, 0x00, 0x22, 0x28, 0x1c, 0x61, 0x6b, - 0xf3, 0xf7, 0x64, 0xf8, 0x20, 0x1c, 0xf4, 0xf7, - 0x6c, 0xfa, 0x00, 0x98, 0xfa, 0xf7, 0x11, 0xfd, - 0x04, 0x1c, 0xdc, 0xd1, 0x07, 0x48, 0xb9, 0x6b, - 0x02, 0xf0, 0x3c, 0x00, 0x2c, 0xd3, 0x00, 0x00, - 0x25, 0xf8, 0x00, 0x20, 0xf8, 0x63, 0x30, 0x1c, - 0xf8, 0xbd, 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x11, 0x30, 0x00, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0xc8, 0x63, 0x70, 0x47, 0xc4, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0x05, 0x4a, 0x00, 0x21, - 0x1c, 0x23, 0x43, 0x43, 0x9b, 0x18, 0x01, 0x30, - 0x04, 0x28, 0xd9, 0x66, 0x3c, 0x00, 0x68, 0xd3, - 0x00, 0x00, 0xf8, 0xdb, 0xfc, 0xf7, 0xfd, 0xfc, - 0x80, 0xbd, 0xc4, 0x69, 0x01, 0x00, 0x01, 0x49, - 0xc8, 0x64, 0x70, 0x47, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x01, 0x49, 0x88, 0x64, 0x70, 0x47, - 0x00, 0x00, 0xc4, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0d, 0x1c, 0x21, 0x1c, 0x02, 0x8e, - 0x80, 0x6a, 0x40, 0x31, 0xf3, 0xf7, 0x2f, 0xf8, - 0x00, 0x28, 0x16, 0xd1, 0x02, 0x21, 0x3c, 0x00, - 0xa4, 0xd3, 0x00, 0x00, 0x20, 0x1c, 0xf4, 0xf7, - 0x6f, 0xfa, 0xe2, 0x69, 0xc0, 0x00, 0x10, 0x18, - 0x82, 0x8b, 0xab, 0x88, 0x9a, 0x42, 0x04, 0xd1, - 0x82, 0x69, 0x2b, 0x68, 0x9a, 0x42, 0x08, 0xd2, - 0x01, 0xe0, 0x9a, 0x42, 0x05, 0xd2, 0x00, 0x21, - 0x18, 0x30, 0x0c, 0xcd, 0x0c, 0xc0, 0x00, 0xe0, - 0x01, 0x21, 0x08, 0x1c, 0xb0, 0xbd, 0x00, 0x00, - 0xf8, 0xb5, 0x06, 0x1c, 0x00, 0x27, 0x44, 0x68, - 0x3c, 0x00, 0xe0, 0xd3, 0x00, 0x00, 0x0f, 0xe0, - 0x09, 0x49, 0x48, 0x6a, 0x01, 0x30, 0x48, 0x62, - 0xa0, 0x69, 0x00, 0x28, 0x02, 0xd0, 0xf4, 0xf7, - 0x00, 0xfa, 0xa7, 0x61, 0x26, 0x62, 0x25, 0x68, - 0x20, 0x1c, 0xff, 0xf7, 0x52, 0xfb, 0x2c, 0x1c, - 0x00, 0x2c, 0xed, 0xd1, 0xf8, 0xbd, 0xc4, 0x69, - 0x01, 0x00, 0x03, 0x30, 0x07, 0x4a, 0x81, 0x08, - 0x13, 0x68, 0x50, 0x68, 0x1b, 0x68, 0x89, 0x00, - 0x09, 0x18, 0x3c, 0x00, 0x1c, 0xd4, 0x00, 0x00, - 0x8b, 0x42, 0x01, 0xd3, 0x51, 0x60, 0x00, 0xe0, - 0x00, 0x20, 0x90, 0x60, 0x70, 0x47, 0x00, 0x00, - 0x8c, 0x6e, 0x01, 0x00, 0x70, 0xb5, 0x12, 0x4e, - 0x80, 0x38, 0xc5, 0x00, 0x70, 0x59, 0x0c, 0x1c, - 0x00, 0x28, 0x04, 0xd1, 0x01, 0x21, 0x0d, 0x20, - 0xf3, 0xf7, 0x2e, 0xff, 0x0d, 0xe0, 0x20, 0x69, - 0x00, 0x28, 0x05, 0xd1, 0xa8, 0x19, 0x81, 0x88, - 0xe0, 0x68, 0x01, 0xf0, 0x3c, 0x00, 0x58, 0xd4, - 0x00, 0x00, 0x47, 0xfa, 0x20, 0x61, 0x71, 0x59, - 0x20, 0x1c, 0xf2, 0xf7, 0xbb, 0xff, 0x04, 0x1c, - 0x00, 0x2c, 0x07, 0xd0, 0xe0, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0xf4, 0xf7, 0x92, 0xf8, 0x20, 0x1c, - 0xf4, 0xf7, 0xbd, 0xf9, 0x70, 0xbd, 0x54, 0x42, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, - 0x0e, 0x49, 0x06, 0x22, 0xf3, 0xf7, 0x35, 0xf8, - 0x00, 0x26, 0xe6, 0x61, 0x66, 0x62, 0x3c, 0x00, - 0x94, 0xd4, 0x00, 0x00, 0x07, 0x20, 0x30, 0x21, - 0x08, 0x55, 0xe6, 0x63, 0x28, 0x1c, 0xf8, 0xf7, - 0x6b, 0xf8, 0xa0, 0x76, 0x20, 0x1c, 0x14, 0x30, - 0x06, 0x22, 0x29, 0x1c, 0xf3, 0xf7, 0x24, 0xf8, - 0x06, 0x22, 0x29, 0x1c, 0xa0, 0x18, 0xf3, 0xf7, - 0x1f, 0xf8, 0x26, 0x61, 0x70, 0xbd, 0x00, 0x00, - 0x12, 0x61, 0x01, 0x00, 0x80, 0xb5, 0xfd, 0xf7, - 0x85, 0xfe, 0x80, 0xbd, 0x01, 0x49, 0x48, 0x60, - 0x3c, 0x00, 0xd0, 0xd4, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x02, 0x49, - 0x80, 0xb5, 0x49, 0x68, 0xf2, 0xf7, 0x7c, 0xff, - 0x80, 0xbd, 0xe4, 0x65, 0x01, 0x00, 0x80, 0xb5, - 0xf4, 0xf7, 0xe5, 0xf9, 0x07, 0x49, 0x07, 0x48, - 0x0e, 0xc9, 0x0e, 0xc0, 0x18, 0x38, 0x00, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x02, 0xf0, 0xb7, 0xfa, - 0x80, 0xbd, 0x02, 0xf0, 0x9e, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xd5, 0x00, 0x00, - 0xb0, 0x58, 0x01, 0x00, 0x90, 0x73, 0x01, 0x00, - 0x05, 0x49, 0x80, 0xb5, 0x89, 0x68, 0x00, 0x20, - 0x00, 0x29, 0x00, 0xd1, 0x03, 0x20, 0x00, 0x06, - 0x00, 0x0e, 0xfa, 0xf7, 0xe3, 0xfb, 0x80, 0xbd, - 0x60, 0x6c, 0x01, 0x00, 0x80, 0xb5, 0x03, 0x48, - 0x06, 0x22, 0x03, 0x49, 0xf2, 0xf7, 0xde, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x40, 0x80, 0x07, 0x00, - 0x12, 0x61, 0x01, 0x00, 0x3c, 0x00, 0x48, 0xd5, - 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0c, 0x4d, - 0x0b, 0x1c, 0x21, 0x1c, 0x00, 0x20, 0x0c, 0x3d, - 0x00, 0x29, 0x09, 0x4c, 0x05, 0xd0, 0x28, 0x78, - 0x21, 0x1c, 0x10, 0x80, 0x02, 0x1c, 0x18, 0x1c, - 0x07, 0xe0, 0x11, 0x88, 0x0e, 0x29, 0x07, 0xd8, - 0x0a, 0x06, 0x12, 0x0e, 0x19, 0x1c, 0x20, 0x1c, - 0x2a, 0x70, 0xf2, 0xf7, 0xbe, 0xff, 0x01, 0x20, - 0xb0, 0xbd, 0xb0, 0x69, 0x01, 0x00, 0x3c, 0x00, - 0x84, 0xd5, 0x00, 0x00, 0x10, 0xb5, 0x00, 0x20, - 0x0a, 0x4a, 0x01, 0x21, 0x11, 0x60, 0x0a, 0x4c, - 0x0a, 0xe0, 0x02, 0x1c, 0x01, 0x6a, 0x50, 0x32, - 0x91, 0x42, 0x05, 0xd0, 0x61, 0x78, 0x3c, 0x23, - 0x59, 0x43, 0x09, 0x19, 0x04, 0x31, 0x01, 0x62, - 0x04, 0xf0, 0xba, 0xfb, 0x00, 0x28, 0xf0, 0xd1, - 0x10, 0xbd, 0x00, 0x00, 0xdc, 0x62, 0x01, 0x00, - 0x68, 0x61, 0x01, 0x00, 0x04, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0xc0, 0xd5, 0x00, 0x00, 0x00, 0x68, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x1c, 0x10, 0x20, - 0x04, 0xf0, 0xc7, 0xfe, 0x80, 0xbd, 0x28, 0x61, - 0x01, 0x00, 0x03, 0x22, 0x11, 0x1f, 0x80, 0xb5, - 0x00, 0x20, 0xfb, 0xf7, 0x76, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x0b, 0xf0, 0xb9, 0xfa, - 0x80, 0xbd, 0xff, 0xb5, 0x83, 0xb0, 0x16, 0x1c, - 0x00, 0x21, 0x01, 0x91, 0x1f, 0x1c, 0x08, 0x21, - 0x02, 0xaa, 0x3c, 0x00, 0xfc, 0xd5, 0x00, 0x00, - 0xfa, 0xf7, 0x0e, 0xff, 0x04, 0x1c, 0x2a, 0xd1, - 0x02, 0x98, 0x41, 0x68, 0x49, 0x00, 0x01, 0xd4, - 0x09, 0x24, 0x24, 0xe0, 0xfa, 0xf7, 0x52, 0xff, - 0x38, 0x60, 0x02, 0x98, 0x41, 0x68, 0x49, 0x02, - 0xcd, 0x0f, 0x29, 0x1c, 0xfa, 0xf7, 0x44, 0xff, - 0x01, 0x1c, 0x30, 0x60, 0x38, 0x68, 0x00, 0x06, - 0x00, 0x0e, 0x00, 0xf0, 0x1b, 0xf8, 0x00, 0x28, - 0x01, 0xd1, 0x0a, 0x24, 0x3c, 0x00, 0x38, 0xd6, - 0x00, 0x00, 0x0f, 0xe0, 0x31, 0x68, 0x02, 0x98, - 0x2b, 0x1c, 0x01, 0xaa, 0xfa, 0xf7, 0xd7, 0xff, - 0x00, 0x28, 0x06, 0xd0, 0x01, 0x98, 0x00, 0x28, - 0x04, 0xd0, 0x04, 0x99, 0x09, 0x68, 0x81, 0x42, - 0x00, 0xd2, 0x03, 0x24, 0x01, 0x98, 0x04, 0x99, - 0x08, 0x60, 0x07, 0xb0, 0x20, 0x1c, 0xf0, 0xbd, - 0x00, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x0e, 0x1c, - 0x01, 0x24, 0x00, 0xf0, 0x84, 0xff, 0x3c, 0x00, - 0x74, 0xd6, 0x00, 0x00, 0x00, 0x28, 0x08, 0xd0, - 0x03, 0x2d, 0x01, 0xd0, 0x04, 0x2d, 0x04, 0xd1, - 0x03, 0x20, 0xc0, 0x03, 0x86, 0x42, 0x00, 0xd3, - 0x00, 0x24, 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x00, - 0x7c, 0xb5, 0x15, 0x1c, 0x06, 0x1c, 0x0c, 0x1c, - 0x29, 0x1c, 0x6a, 0x46, 0x01, 0xab, 0xff, 0xf7, - 0xa5, 0xff, 0x00, 0x28, 0x02, 0xd1, 0x00, 0x2c, - 0x01, 0xd1, 0x03, 0x20, 0x7c, 0xbd, 0x17, 0x48, - 0x3c, 0x00, 0xb0, 0xd6, 0x00, 0x00, 0x00, 0xab, - 0x06, 0x60, 0x18, 0x79, 0x07, 0x28, 0x21, 0xd2, - 0x02, 0xa3, 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, - 0x00, 0x00, 0x1d, 0x04, 0x04, 0x06, 0x10, 0x17, - 0x13, 0x00, 0x04, 0x20, 0xed, 0xe7, 0x2a, 0x1c, - 0x21, 0x1c, 0x01, 0x20, 0x00, 0x9b, 0xf2, 0xf7, - 0x81, 0xfe, 0x00, 0x28, 0x12, 0xd1, 0x06, 0x20, - 0xe3, 0xe7, 0x2a, 0x68, 0x00, 0x99, 0x05, 0xe0, - 0x00, 0x98, 0x3c, 0x00, 0xec, 0xd6, 0x00, 0x00, - 0x42, 0x78, 0x81, 0x1c, 0x01, 0xe0, 0x2a, 0x68, - 0x69, 0x46, 0x20, 0x1c, 0xf2, 0xf7, 0xfe, 0xfe, - 0x03, 0xe0, 0x04, 0x21, 0x87, 0x20, 0xf3, 0xf7, - 0xcf, 0xfd, 0x00, 0x20, 0xd0, 0xe7, 0x00, 0x00, - 0xf8, 0x6b, 0x01, 0x00, 0xf7, 0xb5, 0x86, 0xb0, - 0x0e, 0x1c, 0x08, 0x21, 0x05, 0xaa, 0x06, 0x98, - 0xfa, 0xf7, 0x7e, 0xfe, 0x04, 0x1c, 0x45, 0xd1, - 0x05, 0x98, 0x41, 0x68, 0x3c, 0x00, 0x28, 0xd7, - 0x00, 0x00, 0x02, 0x90, 0x49, 0x02, 0xc9, 0x0f, - 0x00, 0x25, 0x04, 0x95, 0x03, 0x91, 0x08, 0x9f, - 0xfa, 0xf7, 0xd5, 0xfe, 0x01, 0x90, 0x02, 0xa9, - 0x03, 0xc9, 0xfa, 0xf7, 0xc6, 0xfe, 0x01, 0x99, - 0x05, 0x29, 0x14, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x0e, 0x03, - 0x06, 0x0c, 0x03, 0x00, 0x87, 0x42, 0x0e, 0xd8, - 0x07, 0xe0, 0x87, 0x42, 0x0b, 0xd8, 0x3c, 0x00, - 0x64, 0xd7, 0x00, 0x00, 0x01, 0x25, 0xc0, 0x1b, - 0x04, 0x90, 0x07, 0xe0, 0x87, 0x42, 0x05, 0xd1, - 0x01, 0x25, 0x03, 0xe0, 0x05, 0x21, 0x87, 0x20, - 0xf3, 0xf7, 0x94, 0xfd, 0x00, 0x2d, 0x01, 0xd1, - 0x03, 0x24, 0x15, 0xe0, 0x05, 0x98, 0x41, 0x68, - 0x00, 0x29, 0x69, 0xda, 0x3a, 0x4a, 0x06, 0x99, - 0x11, 0x60, 0xfa, 0xf7, 0x91, 0xfe, 0x07, 0x1c, - 0x05, 0x98, 0x03, 0x99, 0xfa, 0xf7, 0x86, 0xfe, - 0x3c, 0x00, 0xa0, 0xd7, 0x00, 0x00, 0x05, 0x1c, - 0x01, 0x1c, 0x38, 0x1c, 0xff, 0xf7, 0x5f, 0xff, - 0x00, 0x28, 0x01, 0xd1, 0x0a, 0x24, 0x5e, 0xe0, - 0x07, 0x2f, 0x57, 0xd2, 0x02, 0xa3, 0xdb, 0x5d, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x53, 0x04, - 0x04, 0x06, 0x2e, 0x50, 0x48, 0x00, 0x04, 0x24, - 0x51, 0xe0, 0x04, 0x98, 0x00, 0x28, 0x01, 0xd1, - 0x00, 0x27, 0x14, 0xe0, 0x08, 0x99, 0x08, 0x18, - 0x00, 0x04, 0x3c, 0x00, 0xdc, 0xd7, 0x00, 0x00, - 0x00, 0x0c, 0xf4, 0xf7, 0x2b, 0xf8, 0x07, 0x1c, - 0x31, 0x1c, 0x08, 0x9a, 0xf2, 0xf7, 0x86, 0xfe, - 0x08, 0x98, 0x04, 0x99, 0x38, 0x18, 0xf2, 0xf7, - 0x2f, 0xfe, 0x08, 0x98, 0x04, 0x99, 0x3e, 0x1c, - 0x40, 0x18, 0x08, 0x90, 0x31, 0x1c, 0x00, 0x20, - 0x08, 0xaa, 0xf2, 0xf7, 0xec, 0xfd, 0x00, 0x28, - 0x00, 0xd1, 0x05, 0x24, 0x00, 0x2f, 0x2d, 0xd0, - 0x38, 0x1c, 0xf3, 0xf7, 0x3c, 0x00, 0x18, 0xd8, - 0x00, 0x00, 0xed, 0xff, 0x29, 0xe0, 0x03, 0x99, - 0x00, 0x29, 0x04, 0xd0, 0x05, 0x98, 0x40, 0x68, - 0x87, 0x02, 0xbf, 0x0a, 0x00, 0xe0, 0x00, 0x27, - 0x31, 0x1c, 0x28, 0x1c, 0x08, 0x9a, 0xf2, 0xf7, - 0x60, 0xfe, 0x04, 0x99, 0x00, 0x29, 0x03, 0xd0, - 0x08, 0x98, 0x28, 0x18, 0xf2, 0xf7, 0x07, 0xfe, - 0x00, 0x2f, 0x12, 0xd0, 0xf2, 0xf7, 0xcc, 0xfd, - 0x0f, 0xe0, 0x31, 0x1c, 0xa8, 0x1c, 0x3c, 0x00, - 0x54, 0xd8, 0x00, 0x00, 0x08, 0x9a, 0xf2, 0xf7, - 0x4f, 0xfe, 0x08, 0x98, 0x68, 0x70, 0x07, 0xe0, - 0xff, 0xe7, 0x07, 0x24, 0x04, 0xe0, 0x08, 0x24, - 0x03, 0x21, 0x87, 0x20, 0xf3, 0xf7, 0x1a, 0xfd, - 0x20, 0x1c, 0x09, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0xf8, 0x6b, 0x01, 0x00, 0x9e, 0xb5, 0x1c, 0x1c, - 0x00, 0xab, 0x19, 0x72, 0x00, 0x92, 0x00, 0x22, - 0x01, 0x94, 0x69, 0x46, 0xfb, 0xf7, 0x08, 0xfa, - 0x3c, 0x00, 0x90, 0xd8, 0x00, 0x00, 0x9e, 0xbd, - 0x00, 0x00, 0x8f, 0xb5, 0x02, 0x92, 0x00, 0x22, - 0x00, 0x90, 0x01, 0x90, 0x03, 0x91, 0x69, 0x46, - 0x04, 0x20, 0xfb, 0xf7, 0xfc, 0xf9, 0x8f, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x0c, 0x1c, 0x01, 0x28, - 0x0a, 0xd0, 0x03, 0x28, 0x19, 0xd0, 0x04, 0x28, - 0x2c, 0xd1, 0x60, 0x68, 0x01, 0xf0, 0x35, 0xfc, - 0x01, 0x1c, 0x83, 0x20, 0x0c, 0xcc, 0x22, 0xe0, - 0x1c, 0x20, 0x3c, 0x00, 0xcc, 0xd8, 0x00, 0x00, - 0x14, 0x49, 0x60, 0x43, 0x40, 0x18, 0x14, 0x49, - 0x45, 0x18, 0x28, 0x1c, 0xf8, 0xf7, 0x46, 0xfc, - 0xa9, 0x68, 0x00, 0x29, 0x03, 0xd0, 0x22, 0x1c, - 0x08, 0x20, 0x05, 0xf0, 0x71, 0xfe, 0xb0, 0xbd, - 0x20, 0x8c, 0xc8, 0x28, 0x01, 0xd3, 0x04, 0x20, - 0x04, 0xe0, 0x65, 0x28, 0x01, 0xd3, 0x02, 0x20, - 0x00, 0xe0, 0x01, 0x20, 0x20, 0x84, 0x20, 0x1c, - 0x03, 0xf0, 0xdc, 0xfa, 0x3c, 0x00, 0x08, 0xd9, - 0x00, 0x00, 0x22, 0x68, 0xe3, 0x68, 0x01, 0x1c, - 0x82, 0x20, 0xff, 0xf7, 0xb4, 0xff, 0xb0, 0xbd, - 0xa0, 0x21, 0x08, 0x20, 0xf3, 0xf7, 0xc3, 0xfc, - 0xb0, 0xbd, 0xdc, 0x71, 0x01, 0x00, 0x64, 0xee, - 0xff, 0xff, 0x03, 0x48, 0x04, 0x4a, 0x81, 0x68, - 0x51, 0x61, 0xc0, 0x68, 0x90, 0x61, 0x70, 0x47, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xc0, 0x71, - 0x01, 0x00, 0x03, 0x49, 0x04, 0x4a, 0x3c, 0x00, - 0x44, 0xd9, 0x00, 0x00, 0x08, 0x6b, 0x90, 0x60, - 0x88, 0x68, 0xd0, 0x60, 0x70, 0x47, 0x00, 0x00, - 0x90, 0x5c, 0x01, 0x00, 0xc0, 0x71, 0x01, 0x00, - 0x00, 0xb5, 0xff, 0xf7, 0xf1, 0xff, 0xff, 0xf7, - 0xe3, 0xff, 0x00, 0xbd, 0xb0, 0xb5, 0x0d, 0x1c, - 0x00, 0x28, 0x14, 0xd0, 0x0b, 0x49, 0x0c, 0x4c, - 0x88, 0x68, 0x62, 0x69, 0xc9, 0x68, 0x80, 0x1a, - 0xa2, 0x69, 0x89, 0x1a, 0x40, 0x18, 0x04, 0xd0, - 0x3c, 0x00, 0x80, 0xd9, 0x00, 0x00, 0x64, 0x23, - 0x59, 0x43, 0xf2, 0xf7, 0xc4, 0xfe, 0x20, 0x61, - 0xff, 0xf7, 0xcd, 0xff, 0x20, 0x69, 0x28, 0x60, - 0x01, 0x20, 0xb0, 0xbd, 0x00, 0x20, 0xb0, 0xbd, - 0x00, 0x00, 0xf4, 0x68, 0x01, 0x00, 0xc0, 0x71, - 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x00, 0x28, - 0x17, 0xd0, 0x0c, 0x49, 0x0d, 0x4c, 0x08, 0x6b, - 0xa2, 0x68, 0x89, 0x68, 0x80, 0x1a, 0xe2, 0x68, - 0x89, 0x1a, 0x3c, 0x00, 0xbc, 0xd9, 0x00, 0x00, - 0x40, 0x18, 0x07, 0xd0, 0x22, 0x88, 0x90, 0x42, - 0x04, 0xd9, 0x64, 0x23, 0x59, 0x43, 0xf2, 0xf7, - 0xa1, 0xfe, 0x60, 0x60, 0xff, 0xf7, 0xb6, 0xff, - 0x60, 0x68, 0x28, 0x60, 0x01, 0x20, 0xb0, 0xbd, - 0x00, 0x20, 0xb0, 0xbd, 0x90, 0x5c, 0x01, 0x00, - 0xc0, 0x71, 0x01, 0x00, 0x7c, 0xb5, 0x10, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x00, 0xf0, 0x24, 0xf8, - 0x7c, 0xbd, 0x0f, 0x48, 0x3c, 0x00, 0xf8, 0xd9, - 0x00, 0x00, 0xc0, 0x69, 0x84, 0x68, 0xe0, 0x68, - 0x25, 0x6a, 0xa6, 0x69, 0xf3, 0xf7, 0xe3, 0xfd, - 0xe1, 0x69, 0xf3, 0xf7, 0x06, 0xfd, 0x20, 0x1c, - 0xe2, 0x69, 0x40, 0x30, 0xc1, 0x8b, 0x12, 0x89, - 0x89, 0x18, 0xc1, 0x83, 0x07, 0x49, 0x01, 0x94, - 0x00, 0x91, 0x28, 0x69, 0x33, 0x1c, 0x82, 0x88, - 0x01, 0x68, 0xe0, 0x68, 0xc0, 0x68, 0xf8, 0xf7, - 0x1e, 0xfc, 0xe0, 0xe7, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xda, 0x00, 0x00, 0x84, 0x6a, 0x01, 0x00, - 0x91, 0x5e, 0x00, 0x00, 0xf0, 0xb5, 0x85, 0x69, - 0x06, 0x6a, 0x04, 0x1c, 0xc0, 0x68, 0x85, 0xb0, - 0xc0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xf3, 0xf7, - 0x57, 0xfc, 0x0a, 0x49, 0x02, 0x95, 0x04, 0x94, - 0x03, 0x91, 0x30, 0x69, 0x82, 0x88, 0x01, 0x68, - 0x26, 0x20, 0x01, 0x92, 0x00, 0x91, 0x43, 0x5d, - 0xe0, 0x68, 0xe1, 0x69, 0x2a, 0x1c, 0x0e, 0x32, - 0x3c, 0x00, 0x70, 0xda, 0x00, 0x00, 0xc0, 0x68, - 0xf8, 0xf7, 0x37, 0xfd, 0x05, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xe9, 0xd9, 0x00, 0x00, 0x10, 0xb5, - 0x14, 0x1c, 0x05, 0x48, 0xfc, 0xf7, 0x7b, 0xfb, - 0xa0, 0x68, 0xf3, 0xf7, 0x9e, 0xfd, 0xe1, 0x68, - 0xc1, 0x60, 0x20, 0x1c, 0xf5, 0xf7, 0xbb, 0xfa, - 0x10, 0xbd, 0xa0, 0x6a, 0x01, 0x00, 0x7c, 0xb5, - 0x04, 0x1c, 0x60, 0x30, 0x02, 0x7b, 0xa1, 0x69, - 0x00, 0x91, 0x3c, 0x00, 0xac, 0xda, 0x00, 0x00, - 0x01, 0x92, 0x22, 0x1c, 0x21, 0x1c, 0x38, 0x31, - 0xa0, 0x68, 0x48, 0x32, 0x0d, 0x1c, 0x63, 0x69, - 0x03, 0xf0, 0x7a, 0xfb, 0x08, 0x21, 0x00, 0x20, - 0xf3, 0xf7, 0x88, 0xfd, 0xe0, 0x60, 0x26, 0x69, - 0xb1, 0x6b, 0x00, 0x29, 0x01, 0xd0, 0x10, 0x23, - 0x00, 0xe0, 0x18, 0x23, 0x05, 0x49, 0x01, 0x94, - 0x00, 0x91, 0x31, 0x68, 0xca, 0x18, 0x08, 0x23, - 0x01, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0xe8, 0xda, - 0x00, 0x00, 0xf8, 0xf7, 0x20, 0xfd, 0x7c, 0xbd, - 0x00, 0x00, 0x81, 0xda, 0x00, 0x00, 0xf0, 0xb5, - 0x46, 0x68, 0x17, 0x1c, 0x04, 0x1c, 0x01, 0x21, - 0x30, 0x1c, 0x9b, 0xb0, 0xfa, 0xf7, 0x0d, 0xfc, - 0x00, 0x25, 0x00, 0x28, 0x03, 0xd0, 0x13, 0x49, - 0x0a, 0x7a, 0x01, 0x2a, 0x01, 0xd1, 0x01, 0x25, - 0x1c, 0xe0, 0x88, 0x62, 0x4e, 0x61, 0x20, 0x89, - 0xc8, 0x61, 0x60, 0x89, 0x00, 0x28, 0x3c, 0x00, - 0x24, 0xdb, 0x00, 0x00, 0x03, 0xd0, 0x00, 0x20, - 0x08, 0x84, 0x48, 0x84, 0x04, 0xe0, 0xe0, 0x68, - 0x08, 0x84, 0x20, 0x8a, 0x48, 0x84, 0x60, 0x8a, - 0x88, 0x84, 0x08, 0x6b, 0x00, 0x28, 0x03, 0xd1, - 0x01, 0xa8, 0x03, 0xf0, 0x77, 0xfc, 0x04, 0xe0, - 0x01, 0x20, 0x08, 0x61, 0x00, 0x20, 0x02, 0xf0, - 0x39, 0xfb, 0x3d, 0x71, 0x1b, 0xb0, 0x01, 0x20, - 0xf0, 0xbd, 0x00, 0x00, 0xf4, 0x6e, 0x01, 0x00, - 0x3c, 0x00, 0x60, 0xdb, 0x00, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0xf7, 0xf7, 0xe8, 0xfb, 0x00, 0x28, - 0x11, 0xd1, 0x4b, 0x20, 0x00, 0x5d, 0x01, 0x28, - 0x0d, 0xd1, 0x20, 0x1c, 0x04, 0xf0, 0x85, 0xfa, - 0x00, 0x21, 0x20, 0x1c, 0x04, 0xf0, 0xf3, 0xf8, - 0xa0, 0x69, 0x00, 0x21, 0xc2, 0x07, 0xd2, 0x0f, - 0x04, 0x20, 0xf4, 0xf7, 0xd8, 0xf9, 0x10, 0xbd, - 0x00, 0x00, 0x38, 0xb5, 0x04, 0x1c, 0x04, 0xf0, - 0x36, 0xf9, 0x3c, 0x00, 0x9c, 0xdb, 0x00, 0x00, - 0x00, 0x28, 0x03, 0xd0, 0x40, 0x30, 0x80, 0x7a, - 0x00, 0x28, 0x25, 0xd1, 0x0c, 0x20, 0x29, 0x21, - 0x08, 0x55, 0x21, 0x1c, 0x06, 0x22, 0xa0, 0x18, - 0xf2, 0xf7, 0xa0, 0xfc, 0x20, 0x1c, 0x06, 0x22, - 0x0e, 0x49, 0xf2, 0xf7, 0x9b, 0xfc, 0x01, 0x20, - 0xe0, 0x61, 0x60, 0x62, 0x07, 0x20, 0x30, 0x21, - 0x08, 0x55, 0x00, 0x25, 0xe5, 0x63, 0x06, 0x20, - 0x00, 0xab, 0x18, 0x80, 0x3c, 0x00, 0xd8, 0xdb, - 0x00, 0x00, 0xe0, 0x68, 0x00, 0x28, 0x01, 0xd0, - 0xf3, 0xf7, 0xdb, 0xfc, 0x02, 0x21, 0x68, 0x46, - 0xfd, 0xf7, 0x73, 0xfb, 0xe0, 0x60, 0x20, 0x1c, - 0xff, 0xf7, 0x69, 0xfc, 0xe5, 0x60, 0x20, 0x1c, - 0x38, 0xbd, 0x12, 0x61, 0x01, 0x00, 0xfe, 0xb5, - 0x05, 0x1c, 0x0e, 0x1c, 0x15, 0x20, 0x00, 0xab, - 0x98, 0x80, 0x14, 0x21, 0x17, 0x1c, 0x00, 0x20, - 0xf3, 0xf7, 0xe3, 0xfc, 0x02, 0x90, 0x3c, 0x00, - 0x14, 0xdc, 0x00, 0x00, 0x04, 0x68, 0x06, 0x22, - 0x31, 0x1c, 0x60, 0x1d, 0x25, 0x71, 0xf2, 0xf7, - 0x6b, 0xfc, 0x06, 0x22, 0x39, 0x1c, 0x20, 0x1c, - 0x0b, 0x30, 0xf2, 0xf7, 0x65, 0xfc, 0x01, 0xa8, - 0xff, 0xf7, 0x52, 0xfc, 0xfe, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x23, 0xfb, 0xf7, 0x5c, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x05, 0x1c, - 0x08, 0x35, 0x0f, 0x4e, 0x29, 0x1c, 0x04, 0x1c, - 0x3c, 0x00, 0x50, 0xdc, 0x00, 0x00, 0x06, 0x22, - 0x30, 0x1c, 0xf2, 0xf7, 0x50, 0xfc, 0xa0, 0x88, - 0xb0, 0x82, 0x28, 0x1c, 0x05, 0xf0, 0xa1, 0xff, - 0x00, 0x28, 0x0b, 0xd0, 0xe0, 0x88, 0x30, 0x61, - 0x28, 0x1c, 0x04, 0xf0, 0xcc, 0xf8, 0xa1, 0x88, - 0x40, 0x30, 0x41, 0x80, 0x00, 0x20, 0xf4, 0xf7, - 0xb8, 0xf9, 0x02, 0xe0, 0x04, 0x20, 0xf4, 0xf7, - 0xa0, 0xf9, 0x00, 0x20, 0x70, 0xbd, 0x70, 0x7c, - 0x01, 0x00, 0x3c, 0x00, 0x8c, 0xdc, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0xfb, 0xf7, 0xf8, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x04, 0x1c, - 0x04, 0x30, 0x05, 0x1c, 0xfd, 0xf7, 0x32, 0xf8, - 0x00, 0x28, 0x09, 0xd0, 0x00, 0x20, 0xf7, 0xf7, - 0x37, 0xfc, 0x00, 0x28, 0x04, 0xd0, 0x06, 0x22, - 0x01, 0x1c, 0x28, 0x1c, 0xf2, 0xf7, 0x1e, 0xfc, - 0x0a, 0x4e, 0x06, 0x22, 0x29, 0x1c, 0x30, 0x1c, - 0xf2, 0xf7, 0x18, 0xfc, 0x3c, 0x00, 0xc8, 0xdc, - 0x00, 0x00, 0x60, 0x89, 0xf0, 0x82, 0x28, 0x1c, - 0x05, 0xf0, 0x69, 0xff, 0x00, 0x28, 0x03, 0xd0, - 0x02, 0x20, 0xf4, 0xf7, 0x88, 0xf9, 0x02, 0xe0, - 0x05, 0x20, 0xf9, 0xf7, 0xf4, 0xfa, 0x00, 0x20, - 0x70, 0xbd, 0x70, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x00, 0x79, 0x04, 0x28, 0x1c, 0xd2, - 0x60, 0x79, 0x01, 0x28, 0x01, 0xd0, 0x03, 0x28, - 0x04, 0xd1, 0x00, 0x22, 0x01, 0x21, 0x3c, 0x00, - 0x04, 0xdd, 0x00, 0x00, 0xa0, 0x1d, 0xf9, 0xf7, - 0x69, 0xfc, 0x60, 0x79, 0x00, 0x28, 0x04, 0xd1, - 0x22, 0x79, 0x00, 0x21, 0xf9, 0xf7, 0x62, 0xfc, - 0x0a, 0xe0, 0x03, 0x28, 0x08, 0xd1, 0x00, 0x24, - 0x22, 0x1c, 0x00, 0x21, 0x00, 0x20, 0xf9, 0xf7, - 0x59, 0xfc, 0x01, 0x34, 0x04, 0x2c, 0xf7, 0xdb, - 0x01, 0x20, 0x10, 0xbd, 0xf0, 0xb5, 0x97, 0xb0, - 0x17, 0x1c, 0x05, 0x1c, 0x04, 0x30, 0x04, 0x1c, - 0x3c, 0x00, 0x40, 0xdd, 0x00, 0x00, 0x15, 0xaa, - 0x16, 0xa9, 0x05, 0xf0, 0xe2, 0xfe, 0x00, 0x28, - 0x2e, 0xd0, 0x15, 0x98, 0x4b, 0x21, 0x09, 0x5c, - 0x00, 0x29, 0x23, 0xd0, 0x01, 0x29, 0x02, 0xd0, - 0x02, 0x29, 0x1f, 0xd1, 0x01, 0xe0, 0x04, 0xf0, - 0x90, 0xf9, 0xad, 0x7a, 0x13, 0x48, 0x16, 0x9e, - 0x05, 0x80, 0x06, 0x22, 0x21, 0x1c, 0x08, 0x30, - 0xf2, 0xf7, 0xc1, 0xfb, 0x22, 0x1c, 0x31, 0x1c, - 0x02, 0xa8, 0x3c, 0x00, 0x7c, 0xdd, 0x00, 0x00, - 0x00, 0xf0, 0x74, 0xfb, 0x0a, 0x20, 0x0a, 0xa9, - 0x48, 0x72, 0x00, 0xab, 0x9d, 0x80, 0x02, 0x21, - 0x01, 0xa8, 0xfd, 0xf7, 0x9f, 0xfa, 0x05, 0x90, - 0x02, 0xa8, 0xff, 0xf7, 0x95, 0xfb, 0xf3, 0xf7, - 0xf7, 0xf9, 0x00, 0x21, 0x15, 0x98, 0x03, 0xf0, - 0xe1, 0xff, 0x00, 0x20, 0x00, 0xe0, 0x01, 0x20, - 0x38, 0x71, 0x17, 0xb0, 0x01, 0x20, 0xf0, 0xbd, - 0x98, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0xb8, 0xdd, - 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, 0xfb, 0xf7, - 0x62, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x80, 0x7d, 0x15, 0x1c, 0x0a, 0x1c, - 0xc0, 0x07, 0xc0, 0x17, 0x01, 0x30, 0x21, 0x1c, - 0xf9, 0xf7, 0xfb, 0xfc, 0x00, 0x28, 0x03, 0xd1, - 0x04, 0x20, 0x28, 0x71, 0x01, 0x20, 0xb0, 0xbd, - 0x20, 0x6a, 0xf7, 0xf7, 0x76, 0xfe, 0x60, 0x6a, - 0xf7, 0xf7, 0x7b, 0xfe, 0x20, 0x6a, 0x3c, 0x00, - 0xf4, 0xdd, 0x00, 0x00, 0xfe, 0xf7, 0x88, 0xfa, - 0x00, 0x20, 0xb0, 0xbd, 0x10, 0xb5, 0x14, 0x1c, - 0xc2, 0x79, 0x81, 0x79, 0x80, 0x88, 0xf7, 0xf7, - 0xa1, 0xfa, 0x20, 0x71, 0x01, 0x20, 0x10, 0xbd, - 0x80, 0xb5, 0x01, 0x23, 0xfa, 0xf7, 0x70, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0xf0, 0xb5, 0x04, 0x1c, - 0x08, 0x1c, 0x00, 0x21, 0x0f, 0x28, 0x91, 0xb0, - 0x00, 0xd3, 0x02, 0x21, 0x00, 0x29, 0x41, 0xd1, - 0x3c, 0x00, 0x30, 0xde, 0x00, 0x00, 0xc0, 0x00, - 0x24, 0x4f, 0x10, 0x90, 0xc6, 0x19, 0xb2, 0x88, - 0x21, 0x68, 0x02, 0xa8, 0xf2, 0xf7, 0x5b, 0xfb, - 0x21, 0x89, 0xb0, 0x88, 0x09, 0x1a, 0x00, 0x29, - 0x07, 0xdd, 0x09, 0x04, 0x22, 0x68, 0x09, 0x0c, - 0x10, 0x18, 0xf3, 0xf7, 0xc0, 0xfb, 0x05, 0x1c, - 0x00, 0xe0, 0x00, 0x25, 0xb0, 0x79, 0x80, 0x21, - 0x88, 0x43, 0x17, 0x49, 0x78, 0x31, 0x09, 0x5c, - 0x00, 0x20, 0x3c, 0x00, 0x6c, 0xde, 0x00, 0x00, - 0xf3, 0xf7, 0xb4, 0xfb, 0x07, 0x1c, 0x00, 0x68, - 0x13, 0x49, 0x01, 0x90, 0x10, 0x98, 0x0b, 0x58, - 0x01, 0x9a, 0x29, 0x1c, 0x02, 0xa8, 0xf2, 0xf7, - 0xac, 0xfa, 0x00, 0x90, 0x28, 0x1c, 0xf3, 0xf7, - 0x73, 0xfb, 0x20, 0x1c, 0xf3, 0xf7, 0x82, 0xfb, - 0x00, 0x98, 0x00, 0x28, 0x08, 0xd0, 0x02, 0x98, - 0x01, 0x99, 0x08, 0x60, 0xb0, 0x79, 0x39, 0x1c, - 0xfa, 0xf7, 0x20, 0xff, 0x3c, 0x00, 0xa8, 0xde, - 0x00, 0x00, 0x11, 0xb0, 0xf0, 0xbd, 0x38, 0x1c, - 0xf3, 0xf7, 0x61, 0xfb, 0xf9, 0xe7, 0x2d, 0x20, - 0xf3, 0xf7, 0xf5, 0xf9, 0x20, 0x1c, 0xf3, 0xf7, - 0x6c, 0xfb, 0xf2, 0xe7, 0x00, 0x00, 0x24, 0x44, - 0x01, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x20, 0x35, - 0x06, 0x1c, 0xa8, 0x79, 0x04, 0x28, 0x48, 0xd2, - 0xe9, 0x79, 0x01, 0x29, 0x13, 0xd1, 0x30, 0x1c, - 0x28, 0x30, 0x03, 0xf0, 0x92, 0xff, 0x3c, 0x00, - 0xe4, 0xde, 0x00, 0x00, 0x00, 0x28, 0x3f, 0xd0, - 0x01, 0x1c, 0x8c, 0x31, 0x01, 0x65, 0xa9, 0x79, - 0x4c, 0x22, 0x04, 0x1c, 0x11, 0x54, 0x81, 0x18, - 0x41, 0x62, 0x50, 0x34, 0x04, 0x62, 0xe1, 0x1e, - 0x81, 0x62, 0x0b, 0xe0, 0x00, 0x29, 0x2f, 0xd1, - 0x3c, 0x22, 0x18, 0x49, 0x42, 0x43, 0x54, 0x18, - 0x17, 0x4a, 0x04, 0x34, 0x12, 0x68, 0x00, 0x2a, - 0x00, 0xd1, 0x48, 0x70, 0x00, 0x2c, 0x23, 0xd0, - 0x3c, 0x00, 0x20, 0xdf, 0x00, 0x00, 0x35, 0x1c, - 0x30, 0x35, 0xe8, 0x79, 0x01, 0x28, 0x01, 0xd0, - 0x05, 0x28, 0x01, 0xd1, 0x06, 0x20, 0xe8, 0x71, - 0x20, 0x22, 0x31, 0x1d, 0x20, 0x68, 0xf2, 0xf7, - 0xde, 0xfa, 0xb0, 0x8c, 0xa0, 0x80, 0xe8, 0x79, - 0xa0, 0x71, 0xa8, 0x79, 0x00, 0x25, 0xa0, 0x63, - 0x01, 0x20, 0x60, 0x81, 0x00, 0x20, 0xe0, 0x60, - 0x2e, 0x36, 0xe8, 0x00, 0x00, 0x19, 0x18, 0x30, - 0x08, 0x22, 0x3c, 0x00, 0x5c, 0xdf, 0x00, 0x00, - 0x31, 0x1c, 0xf2, 0xf7, 0xcb, 0xfa, 0x01, 0x35, - 0x04, 0x2d, 0xf5, 0xd3, 0x01, 0x20, 0x70, 0xbd, - 0x68, 0x61, 0x01, 0x00, 0xdc, 0x62, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x7a, 0x01, 0x28, - 0x01, 0xd0, 0x03, 0x28, 0x07, 0xd1, 0x20, 0x1d, - 0x03, 0xf0, 0x40, 0xff, 0x00, 0x28, 0x02, 0xd0, - 0xa1, 0x7a, 0x40, 0x30, 0x41, 0x73, 0xe0, 0x7a, - 0x00, 0x28, 0x01, 0xd0, 0x3c, 0x00, 0x98, 0xdf, - 0x00, 0x00, 0x03, 0x28, 0x02, 0xd1, 0xa0, 0x7a, - 0x02, 0x49, 0x08, 0x70, 0x01, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0x68, 0x61, 0x01, 0x00, 0x70, 0xb5, - 0x0e, 0x1c, 0x03, 0x21, 0x04, 0x1c, 0x30, 0x1c, - 0xfc, 0xf7, 0xe1, 0xfb, 0x00, 0x28, 0x01, 0xd0, - 0x85, 0x78, 0x00, 0xe0, 0x00, 0x25, 0x0b, 0x48, - 0x32, 0x1c, 0x00, 0x68, 0x03, 0x68, 0x20, 0x7c, - 0x80, 0x07, 0xc0, 0x0f, 0x21, 0x1c, 0x3c, 0x00, - 0xd4, 0xdf, 0x00, 0x00, 0xf7, 0xf7, 0x62, 0xfe, - 0x00, 0x28, 0x05, 0xd0, 0x01, 0x21, 0x28, 0x1c, - 0xfd, 0xf7, 0xfe, 0xfb, 0x00, 0x20, 0x00, 0xe0, - 0x08, 0x20, 0x03, 0xf0, 0xc5, 0xff, 0x00, 0x20, - 0x70, 0xbd, 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, - 0x80, 0xb5, 0x42, 0x68, 0x00, 0x88, 0x01, 0x21, - 0x49, 0x06, 0x08, 0x43, 0x2d, 0x21, 0x05, 0xf0, - 0xd3, 0xfb, 0x80, 0xbd, 0x03, 0x49, 0x01, 0x20, - 0x3c, 0x00, 0x10, 0xe0, 0x00, 0x00, 0x49, 0x78, - 0x02, 0x29, 0x00, 0xd0, 0x00, 0x20, 0x70, 0x47, - 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0x8c, 0xb5, - 0x01, 0x28, 0x1f, 0xd1, 0x00, 0x29, 0x0d, 0xd0, - 0x01, 0x29, 0x0b, 0xd0, 0x02, 0x29, 0x01, 0xd0, - 0x03, 0x29, 0x16, 0xd1, 0x00, 0x20, 0xf9, 0xf7, - 0x14, 0xfc, 0x93, 0x20, 0x00, 0xab, 0x18, 0x80, - 0x00, 0x20, 0x08, 0xe0, 0x01, 0x29, 0x00, 0xd0, - 0x00, 0x20, 0x3c, 0x00, 0x4c, 0xe0, 0x00, 0x00, - 0xf9, 0xf7, 0x0a, 0xfc, 0x83, 0x20, 0x00, 0xab, - 0x18, 0x80, 0x02, 0x20, 0x00, 0xf0, 0xcc, 0xf8, - 0x01, 0x90, 0x68, 0x46, 0xff, 0xf7, 0x3a, 0xfa, - 0x8c, 0xbd, 0x01, 0x21, 0x0e, 0x20, 0xf3, 0xf7, - 0x1b, 0xf9, 0xf9, 0xe7, 0xff, 0xb5, 0x17, 0x1c, - 0x1e, 0x1c, 0x14, 0x21, 0x00, 0x20, 0x83, 0xb0, - 0xf3, 0xf7, 0xac, 0xfa, 0x05, 0x1c, 0x04, 0x68, - 0x12, 0x20, 0x00, 0xab, 0x3c, 0x00, 0x88, 0xe0, - 0x00, 0x00, 0x98, 0x80, 0x06, 0x22, 0x60, 0x1d, - 0x03, 0x99, 0xf2, 0xf7, 0x32, 0xfa, 0x00, 0x20, - 0x20, 0x71, 0x27, 0x73, 0x04, 0x99, 0x20, 0x1c, - 0xe1, 0x72, 0x31, 0x1c, 0x06, 0x22, 0x0d, 0x30, - 0xf2, 0xf7, 0x27, 0xfa, 0x02, 0x95, 0x01, 0xa8, - 0xff, 0xf7, 0x13, 0xfa, 0x07, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0f, 0x1c, - 0x0c, 0x21, 0x00, 0x20, 0xf3, 0xf7, 0x3c, 0x00, - 0xc4, 0xe0, 0x00, 0x00, 0x89, 0xfa, 0x05, 0x68, - 0x04, 0x1c, 0x28, 0x1d, 0x06, 0x22, 0x31, 0x1c, - 0xf2, 0xf7, 0x12, 0xfa, 0x6f, 0x81, 0x20, 0x1c, - 0xf8, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0d, 0x1c, 0x08, 0x21, 0x00, 0x20, 0xf3, 0xf7, - 0x77, 0xfa, 0x01, 0x68, 0x8c, 0x71, 0x8d, 0x80, - 0xb0, 0xbd, 0x00, 0x00, 0xf7, 0xb5, 0x0e, 0x1c, - 0x10, 0x21, 0x17, 0x1c, 0x00, 0x20, 0xf3, 0xf7, - 0x3c, 0x00, 0x00, 0xe1, 0x00, 0x00, 0x6b, 0xfa, - 0x04, 0x68, 0x05, 0x1c, 0x20, 0x1d, 0x06, 0x22, - 0x00, 0x99, 0xf2, 0xf7, 0xf4, 0xf9, 0x66, 0x81, - 0xa7, 0x81, 0x28, 0x1c, 0xfe, 0xbd, 0xf3, 0xb5, - 0x0c, 0x1c, 0x08, 0x21, 0x00, 0x20, 0x85, 0xb0, - 0xf3, 0xf7, 0x59, 0xfa, 0x06, 0x1c, 0x07, 0x68, - 0xe0, 0x68, 0x00, 0x28, 0x02, 0xd0, 0x05, 0x99, - 0x01, 0x29, 0x04, 0xd1, 0x05, 0x98, 0x38, 0x71, - 0x00, 0x20, 0x3c, 0x00, 0x3c, 0xe1, 0x00, 0x00, - 0x78, 0x71, 0x56, 0xe0, 0x03, 0x68, 0x01, 0x21, - 0x03, 0x93, 0x20, 0x69, 0x02, 0x90, 0xfc, 0xf7, - 0x17, 0xfb, 0x05, 0x1c, 0x02, 0x98, 0x32, 0x21, - 0xfc, 0xf7, 0x12, 0xfb, 0x00, 0x22, 0xd2, 0x43, - 0x01, 0x1c, 0x28, 0x1c, 0x04, 0xab, 0xf7, 0xf7, - 0xb9, 0xf8, 0x00, 0x28, 0x04, 0xd1, 0x30, 0x1c, - 0xf3, 0xf7, 0x02, 0xfa, 0x00, 0x26, 0x3c, 0xe0, - 0x00, 0x2d, 0x05, 0xd0, 0x3c, 0x00, 0x78, 0xe1, - 0x00, 0x00, 0x68, 0x78, 0x09, 0x38, 0x07, 0x28, - 0x01, 0xd8, 0x32, 0x20, 0x28, 0x70, 0x1c, 0x21, - 0x00, 0x20, 0xf3, 0xf7, 0x26, 0xfa, 0x01, 0x90, - 0x05, 0x68, 0x01, 0x1c, 0x30, 0x1c, 0xf3, 0xf7, - 0x40, 0xf9, 0xe0, 0x68, 0xf3, 0xf7, 0x0b, 0xfa, - 0xa8, 0x61, 0xe1, 0x68, 0x01, 0x98, 0xf3, 0xf7, - 0x38, 0xf9, 0x00, 0x20, 0xe0, 0x60, 0x05, 0x98, - 0x80, 0x21, 0x08, 0x43, 0x38, 0x71, 0x3c, 0x00, - 0xb4, 0xe1, 0x00, 0x00, 0x01, 0x20, 0x21, 0x1c, - 0x14, 0x31, 0x78, 0x71, 0x28, 0x1c, 0x06, 0x22, - 0xf2, 0xf7, 0x9a, 0xf9, 0x02, 0x9a, 0x29, 0x20, - 0x00, 0x92, 0x00, 0x5d, 0x01, 0x21, 0xe2, 0x6a, - 0x08, 0x28, 0x00, 0xd0, 0x00, 0x21, 0x28, 0x1c, - 0x03, 0x9b, 0x02, 0xf0, 0x9d, 0xff, 0xa0, 0x6b, - 0x28, 0x61, 0x20, 0x6c, 0x68, 0x61, 0x7f, 0x30, - 0x01, 0xd1, 0x0f, 0x20, 0x68, 0x61, 0x30, 0x1c, - 0x3c, 0x00, 0xf0, 0xe1, 0x00, 0x00, 0x07, 0xb0, - 0xf0, 0xbd, 0x10, 0xb5, 0x04, 0x1c, 0x08, 0x21, - 0x00, 0x20, 0xf3, 0xf7, 0xec, 0xf9, 0x01, 0x68, - 0x0c, 0x71, 0x10, 0xbd, 0x00, 0x00, 0x01, 0x48, - 0x00, 0x68, 0x70, 0x47, 0x00, 0x00, 0x28, 0x61, - 0x01, 0x00, 0x01, 0x49, 0x08, 0x60, 0x70, 0x47, - 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x02, 0x1c, - 0x01, 0x20, 0x00, 0x06, 0x08, 0x43, 0x80, 0xb5, - 0x2d, 0x21, 0x3c, 0x00, 0x2c, 0xe2, 0x00, 0x00, - 0x05, 0xf0, 0xc0, 0xfa, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x01, 0x28, 0x07, 0xd0, 0xf1, 0x28, - 0x25, 0xd0, 0xf3, 0x28, 0x27, 0xd1, 0x02, 0x20, - 0x02, 0xf0, 0xbc, 0xf9, 0x80, 0xbd, 0x00, 0x29, - 0x1a, 0xd0, 0x01, 0x29, 0x03, 0xd0, 0xf2, 0x29, - 0xf8, 0xd1, 0x88, 0x21, 0x1c, 0xe0, 0x10, 0x48, - 0x01, 0x78, 0x00, 0x29, 0x05, 0xd1, 0x40, 0x78, - 0x01, 0x28, 0xef, 0xd1, 0x3c, 0x00, 0x68, 0xe2, - 0x00, 0x00, 0x00, 0xf0, 0x16, 0xfa, 0x80, 0xbd, - 0x0b, 0x48, 0x14, 0x30, 0x00, 0x89, 0xfc, 0xf7, - 0x5a, 0xfc, 0x01, 0x1c, 0x01, 0x22, 0x0f, 0x20, - 0x05, 0xf0, 0x9f, 0xf9, 0x80, 0xbd, 0x04, 0xf0, - 0x52, 0xfa, 0x80, 0xbd, 0x00, 0x20, 0xfa, 0xf7, - 0x32, 0xfe, 0x80, 0xbd, 0x02, 0x21, 0x0f, 0x20, - 0xf3, 0xf7, 0x05, 0xf8, 0x80, 0xbd, 0x84, 0x66, - 0x01, 0x00, 0x01, 0x48, 0x00, 0x78, 0x3c, 0x00, - 0xa4, 0xe2, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x74, 0x66, 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, - 0x48, 0x60, 0x70, 0x47, 0xec, 0x65, 0x01, 0x00, - 0xf8, 0xb5, 0x0e, 0x1c, 0x13, 0x4d, 0x01, 0x1c, - 0x14, 0x1c, 0x68, 0x22, 0x28, 0x1c, 0x1f, 0x1c, - 0x0c, 0x30, 0xf2, 0xf7, 0x71, 0xf9, 0x0f, 0x49, - 0x00, 0x20, 0xac, 0x39, 0x48, 0x60, 0x01, 0x21, - 0x29, 0x60, 0x19, 0x21, 0x19, 0x2c, 0x6e, 0x67, - 0x3c, 0x00, 0xe0, 0xe2, 0x00, 0x00, 0x00, 0xd3, - 0x21, 0x1c, 0x29, 0x81, 0x09, 0x49, 0x14, 0x39, - 0x88, 0x73, 0x8f, 0x74, 0xc8, 0x78, 0x01, 0x28, - 0x08, 0xd0, 0x01, 0x21, 0x0f, 0x20, 0x05, 0xf0, - 0x9c, 0xf9, 0x19, 0x20, 0xfc, 0xf7, 0x15, 0xfc, - 0xfb, 0xf7, 0x99, 0xf8, 0x01, 0x20, 0xf8, 0xbd, - 0x00, 0x00, 0x98, 0x66, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x28, 0x02, 0xd1, 0x00, 0xf0, 0x2f, 0xf8, - 0x80, 0xbd, 0x3c, 0x00, 0x1c, 0xe3, 0x00, 0x00, - 0x01, 0x21, 0x1d, 0x20, 0xf2, 0xf7, 0xc0, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x01, 0x20, 0x07, 0x49, 0x00, 0x05, 0x80, 0xb5, - 0x88, 0x60, 0x00, 0x22, 0x80, 0x21, 0x16, 0x20, - 0x05, 0xf0, 0x4c, 0xf9, 0x04, 0xf0, 0x34, 0xfd, - 0x02, 0x49, 0x08, 0x61, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x24, 0x6d, 0x01, 0x00, - 0x06, 0x4a, 0x80, 0xb5, 0x3c, 0x00, 0x58, 0xe3, - 0x00, 0x00, 0xd1, 0x6a, 0x81, 0x42, 0x07, 0xd1, - 0x10, 0x7f, 0x24, 0x23, 0x04, 0x49, 0x58, 0x43, - 0x40, 0x18, 0xc0, 0x68, 0xf2, 0xf7, 0x35, 0xf8, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, - 0x01, 0x00, 0x1d, 0x48, 0x1c, 0xb5, 0x00, 0x78, - 0x00, 0x28, 0x2d, 0xd0, 0x1c, 0x48, 0x00, 0x68, - 0x00, 0x28, 0x29, 0xd0, 0x1a, 0x4a, 0x1a, 0x4b, - 0x04, 0x32, 0x11, 0x68, 0x1c, 0x69, 0x3c, 0x00, - 0x94, 0xe3, 0x00, 0x00, 0xa1, 0x42, 0x22, 0xd1, - 0x51, 0x68, 0x5b, 0x69, 0x99, 0x42, 0x1f, 0xd1, - 0x16, 0x49, 0x49, 0x68, 0x93, 0x68, 0xc9, 0x1a, - 0x81, 0x42, 0x19, 0xd2, 0xd0, 0x68, 0x14, 0x49, - 0x01, 0x30, 0xd0, 0x60, 0x09, 0x68, 0x88, 0x42, - 0x0c, 0xd9, 0x06, 0x22, 0xff, 0x21, 0x68, 0x46, - 0xf2, 0xf7, 0x2e, 0xf9, 0xf3, 0xf7, 0xac, 0xfc, - 0x01, 0x1c, 0x00, 0x23, 0x00, 0x22, 0x68, 0x46, - 0x3c, 0x00, 0xd0, 0xe3, 0x00, 0x00, 0x02, 0xf0, - 0xce, 0xf9, 0x01, 0x22, 0x1d, 0x20, 0x0a, 0x49, - 0x05, 0xf0, 0xf7, 0xf8, 0x1c, 0xbd, 0xf7, 0xf7, - 0x88, 0xf9, 0x04, 0x22, 0x81, 0x18, 0x08, 0x1c, - 0xfc, 0xf7, 0x27, 0xfb, 0xf6, 0xe7, 0x1c, 0x75, - 0x01, 0x00, 0x44, 0x75, 0x01, 0x00, 0x28, 0x61, - 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, 0xf0, 0x59, - 0x01, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x80, 0xb5, - 0x01, 0x68, 0x3c, 0x00, 0x0c, 0xe4, 0x00, 0x00, - 0x00, 0x29, 0x15, 0xd1, 0x00, 0x79, 0x02, 0x28, - 0x12, 0xd1, 0x08, 0x1c, 0xf7, 0xf7, 0x80, 0xf8, - 0x00, 0x28, 0x0d, 0xd0, 0x03, 0xf0, 0xf2, 0xfc, - 0x08, 0x30, 0x41, 0x8f, 0x00, 0x29, 0x07, 0xd1, - 0x80, 0x69, 0x00, 0x28, 0x04, 0xd0, 0x80, 0x79, - 0x06, 0x28, 0x01, 0xd1, 0xfc, 0xf7, 0x18, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x01, 0x49, 0x00, 0x20, - 0x88, 0x62, 0x70, 0x47, 0x3c, 0x00, 0x48, 0xe4, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0xb0, 0xb5, - 0x05, 0x4d, 0x04, 0x1c, 0xa9, 0x1d, 0xff, 0xf7, - 0x14, 0xf8, 0x06, 0x22, 0x29, 0x1c, 0xa0, 0x18, - 0xf2, 0xf7, 0x4b, 0xf8, 0xb0, 0xbd, 0x70, 0x7c, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x15, 0x1c, - 0xff, 0xf7, 0x07, 0xf8, 0x06, 0x22, 0x29, 0x1c, - 0xa0, 0x18, 0xf2, 0xf7, 0x3e, 0xf8, 0xb0, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x0a, 0x30, 0x3c, 0x00, - 0x84, 0xe4, 0x00, 0x00, 0xf7, 0xf7, 0xbc, 0xf9, - 0x01, 0x23, 0x00, 0x28, 0x03, 0xd0, 0x05, 0x48, - 0x00, 0x78, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x22, - 0x00, 0x21, 0x00, 0x20, 0x03, 0xf0, 0xc6, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x23, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x03, 0xf0, 0xbb, 0xfd, 0x80, 0xbd, - 0xb0, 0xb5, 0x05, 0x4d, 0xac, 0x79, 0x0a, 0x1c, - 0x3c, 0x00, 0xc0, 0xe4, 0x00, 0x00, 0x01, 0x1c, - 0x01, 0x23, 0x01, 0x20, 0x03, 0xf0, 0xb1, 0xfd, - 0xac, 0x71, 0xb0, 0xbd, 0x00, 0x00, 0x20, 0x10, - 0x07, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x0c, 0x1c, - 0x88, 0x07, 0x02, 0xd5, 0xf6, 0xf7, 0x47, 0xfa, - 0x10, 0xe0, 0x60, 0x07, 0x0e, 0xd5, 0x17, 0x4f, - 0xa3, 0x20, 0xc0, 0x5d, 0x15, 0x4d, 0x10, 0x28, - 0x00, 0xd3, 0x15, 0x4d, 0x04, 0xf0, 0x59, 0xfc, - 0xb9, 0x6f, 0x3c, 0x00, 0xfc, 0xe4, 0x00, 0x00, - 0x40, 0x1a, 0x29, 0x1a, 0x01, 0x20, 0xf6, 0xf7, - 0xc1, 0xfa, 0xe0, 0x07, 0x11, 0x49, 0xc0, 0x0f, - 0x48, 0x60, 0x0c, 0xd0, 0x0d, 0x4c, 0x44, 0x3c, - 0x20, 0x78, 0x03, 0x28, 0x0f, 0xd1, 0x00, 0x2e, - 0x06, 0xd0, 0xf6, 0xf7, 0xf9, 0xf9, 0x01, 0x1c, - 0x01, 0x20, 0xf6, 0xf7, 0xaf, 0xfa, 0xf8, 0xbd, - 0x09, 0x49, 0x01, 0x20, 0xf6, 0xf7, 0xaa, 0xfa, - 0x01, 0x20, 0x20, 0x70, 0x3c, 0x00, 0x38, 0xe5, - 0x00, 0x00, 0xf7, 0xe7, 0x01, 0x21, 0x30, 0x1c, - 0xf6, 0xf7, 0x89, 0xfa, 0xf2, 0xe7, 0xa6, 0x0e, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0xc4, 0x09, - 0x00, 0x00, 0xb0, 0x57, 0x01, 0x00, 0x40, 0x42, - 0x0f, 0x00, 0x80, 0xb5, 0x06, 0x28, 0x04, 0xdb, - 0x05, 0x21, 0xff, 0x20, 0xf2, 0xf7, 0x9f, 0xfe, - 0x80, 0xbd, 0x03, 0x4a, 0xc0, 0x00, 0x11, 0x50, - 0x01, 0x21, 0x80, 0x18, 0x01, 0x71, 0x3c, 0x00, - 0x74, 0xe5, 0x00, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0x9c, 0x5a, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68, - 0x70, 0x47, 0x00, 0x00, 0xd0, 0x60, 0x01, 0x00, - 0xb0, 0xb5, 0x08, 0x4c, 0x25, 0x1d, 0x28, 0x1c, - 0x21, 0x68, 0x00, 0xf0, 0xf1, 0xfe, 0x00, 0x28, - 0x03, 0xd1, 0x01, 0x21, 0x04, 0x48, 0xf2, 0xf7, - 0xcf, 0xfa, 0x28, 0x1c, 0x21, 0x68, 0x00, 0xf0, - 0xfb, 0xfe, 0xb0, 0xbd, 0xc0, 0x60, 0x01, 0x00, - 0x3c, 0x00, 0xb0, 0xe5, 0x00, 0x00, 0x2c, 0x10, - 0x07, 0x00, 0xb0, 0xb5, 0x10, 0x4d, 0x0c, 0x1c, - 0xa8, 0x68, 0x00, 0x28, 0x02, 0xd1, 0x04, 0xf0, - 0xf4, 0xfb, 0x28, 0x60, 0x20, 0x1c, 0x04, 0xf0, - 0x38, 0xfb, 0x01, 0x21, 0x03, 0x20, 0x03, 0xf0, - 0xc4, 0xfe, 0x04, 0xf0, 0xf0, 0xfb, 0xa8, 0x68, - 0x00, 0x28, 0x0b, 0xd1, 0x04, 0xf0, 0xe5, 0xfb, - 0x29, 0x68, 0x00, 0x1b, 0x40, 0x1a, 0x69, 0x68, - 0x40, 0x18, 0x3c, 0x00, 0xec, 0xe5, 0x00, 0x00, - 0x41, 0x08, 0x40, 0x18, 0x28, 0x60, 0x01, 0x20, - 0xa8, 0x60, 0xb0, 0xbd, 0xd0, 0x60, 0x01, 0x00, - 0xf8, 0xb5, 0x1f, 0x4e, 0x00, 0x24, 0xb0, 0x68, - 0x00, 0x28, 0x02, 0xd1, 0x04, 0xf0, 0xd0, 0xfb, - 0x70, 0x60, 0x05, 0xf0, 0x61, 0xf8, 0x04, 0xf0, - 0x8f, 0xfb, 0x05, 0x1c, 0xf9, 0xf7, 0x66, 0xfe, - 0x31, 0x68, 0x18, 0x4a, 0x41, 0x18, 0x12, 0x68, - 0xe8, 0x0b, 0x00, 0x2a, 0x3c, 0x00, 0x28, 0xe6, - 0x00, 0x00, 0x00, 0xd1, 0xa8, 0x0a, 0x40, 0x18, - 0x85, 0x42, 0x1f, 0xd9, 0x14, 0x4f, 0x2d, 0x1a, - 0x38, 0x1c, 0x20, 0x30, 0x81, 0x79, 0x00, 0xab, - 0x19, 0x70, 0xc0, 0x79, 0x58, 0x70, 0x05, 0xf0, - 0x6e, 0xf8, 0x00, 0x28, 0x03, 0xd1, 0x02, 0x21, - 0x8f, 0x20, 0xf2, 0xf7, 0x28, 0xfe, 0x29, 0x1c, - 0x0c, 0x48, 0xf2, 0x68, 0xf8, 0xf7, 0x09, 0xfc, - 0x00, 0x28, 0x04, 0xd0, 0x01, 0x1c, 0x3c, 0x00, - 0x64, 0xe6, 0x00, 0x00, 0x28, 0x1c, 0xff, 0xf7, - 0xa5, 0xff, 0x01, 0x24, 0x00, 0xab, 0x18, 0x88, - 0xf8, 0x84, 0x05, 0xf0, 0x47, 0xf8, 0x20, 0x1c, - 0xf8, 0xbd, 0x00, 0x00, 0xd0, 0x60, 0x01, 0x00, - 0xf4, 0x74, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x89, 0x13, 0x01, 0x00, 0x01, 0x49, 0x01, 0x20, - 0xc8, 0x60, 0x70, 0x47, 0xd0, 0x60, 0x01, 0x00, - 0x06, 0x48, 0x80, 0xb5, 0x00, 0x68, 0x01, 0x28, - 0x3c, 0x00, 0xa0, 0xe6, 0x00, 0x00, 0x07, 0xd1, - 0x04, 0x48, 0xac, 0x38, 0x01, 0x69, 0x03, 0x48, - 0x00, 0xf0, 0x79, 0xfe, 0xf3, 0xf7, 0x2b, 0xfa, - 0x80, 0xbd, 0x98, 0x66, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0x80, 0xb5, 0x42, 0x78, 0x81, 0x68, - 0x00, 0x79, 0x03, 0xf0, 0xde, 0xff, 0x00, 0x28, - 0x01, 0xd1, 0xf5, 0xf7, 0xb6, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x1f, 0xb5, 0x04, 0xf0, 0x69, 0xfb, - 0xf6, 0xf7, 0x3c, 0x00, 0xdc, 0xe6, 0x00, 0x00, - 0x91, 0xff, 0x16, 0x4c, 0x02, 0x28, 0x03, 0xd1, - 0xff, 0xf7, 0xdc, 0xfd, 0x04, 0x28, 0x02, 0xd3, - 0x00, 0x20, 0x20, 0x70, 0x1f, 0xbd, 0xfb, 0xf7, - 0xf7, 0xfc, 0x00, 0x28, 0xfa, 0xd1, 0x60, 0x6a, - 0x00, 0x28, 0xf7, 0xd0, 0x20, 0x78, 0x80, 0x07, - 0xf4, 0xd4, 0x09, 0x21, 0x16, 0x20, 0x04, 0xf0, - 0x93, 0xff, 0x01, 0x20, 0x20, 0x70, 0x0b, 0x4c, - 0x09, 0x49, 0x02, 0x90, 0x3c, 0x00, 0x18, 0xe7, - 0x00, 0x00, 0x01, 0x94, 0x00, 0x91, 0x04, 0xf0, - 0x46, 0xfb, 0x00, 0x19, 0x03, 0x90, 0x68, 0x46, - 0xfd, 0xf7, 0xb5, 0xfb, 0x00, 0x22, 0x16, 0x21, - 0x84, 0x20, 0x05, 0xf0, 0x3e, 0xf8, 0xdc, 0xe7, - 0x00, 0x00, 0x60, 0x6c, 0x01, 0x00, 0x61, 0xed, - 0x00, 0x00, 0x40, 0x42, 0x0f, 0x00, 0x23, 0x48, - 0x70, 0xb5, 0x80, 0x78, 0x9c, 0xb0, 0x01, 0x28, - 0x3e, 0xd1, 0x20, 0x4c, 0x09, 0xa8, 0x3c, 0x00, - 0x54, 0xe7, 0x00, 0x00, 0x80, 0x3c, 0x61, 0x1c, - 0xfe, 0xf7, 0x92, 0xfe, 0x04, 0x20, 0x11, 0xad, - 0x68, 0x72, 0xa0, 0x6f, 0x19, 0xa9, 0x18, 0x90, - 0x7c, 0x20, 0x00, 0x5d, 0x01, 0x26, 0x08, 0x71, - 0x1d, 0x20, 0x00, 0x5d, 0x00, 0x28, 0x06, 0xd0, - 0x10, 0x96, 0x12, 0x96, 0xfc, 0xf7, 0xf6, 0xfa, - 0x28, 0x72, 0x20, 0x7a, 0x11, 0x90, 0xf3, 0xf7, - 0xcd, 0xff, 0x6a, 0x21, 0x08, 0x53, 0x40, 0x34, - 0x3c, 0x00, 0x90, 0xe7, 0x00, 0x00, 0x00, 0x22, - 0x01, 0xa9, 0x06, 0xa8, 0xf6, 0xf7, 0xcd, 0xff, - 0x21, 0x1c, 0x00, 0x20, 0xfb, 0xf7, 0xcb, 0xfb, - 0x06, 0xa9, 0xfb, 0xf7, 0xc8, 0xfb, 0x01, 0xa9, - 0xfb, 0xf7, 0xc5, 0xfb, 0x0a, 0x49, 0x09, 0x68, - 0x00, 0x29, 0x07, 0xd0, 0x33, 0x1c, 0x0a, 0x22, - 0x69, 0x46, 0xfb, 0xf7, 0xda, 0xfb, 0x00, 0x9a, - 0x07, 0x21, 0x91, 0x70, 0x0c, 0x90, 0x09, 0xa8, - 0xfe, 0xf7, 0x3c, 0x00, 0xcc, 0xe7, 0x00, 0x00, - 0x7b, 0xfe, 0x1c, 0xb0, 0x70, 0xbd, 0x00, 0x00, - 0x84, 0x66, 0x01, 0x00, 0xe4, 0x62, 0x01, 0x00, - 0xf8, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0xff, 0x22, - 0x01, 0x68, 0x12, 0x02, 0x0e, 0x1c, 0x08, 0x7b, - 0x49, 0x7b, 0x09, 0x02, 0x11, 0x40, 0x08, 0x43, - 0x05, 0x1c, 0x31, 0x1c, 0x06, 0x22, 0xa0, 0x18, - 0xf1, 0xf7, 0x7c, 0xfe, 0x06, 0x22, 0xb1, 0x18, - 0x20, 0x1c, 0xf1, 0xf7, 0x3c, 0x00, 0x08, 0xe8, - 0x00, 0x00, 0x77, 0xfe, 0x28, 0x0a, 0x29, 0x02, - 0x08, 0x43, 0x00, 0x04, 0x03, 0x21, 0x49, 0x02, - 0x00, 0x0c, 0x88, 0x42, 0x08, 0xd2, 0xe0, 0x68, - 0x01, 0x89, 0x0e, 0x39, 0x01, 0x81, 0xe0, 0x68, - 0x01, 0x68, 0x0e, 0x31, 0x01, 0x60, 0xf8, 0xbd, - 0x00, 0x26, 0x20, 0x1c, 0x10, 0x30, 0x03, 0xf0, - 0xe8, 0xfa, 0x21, 0x8b, 0x00, 0x29, 0x05, 0xd1, - 0xe1, 0x7d, 0x00, 0x29, 0x0b, 0xd0, 0x3c, 0x00, - 0x44, 0xe8, 0x00, 0x00, 0x80, 0x69, 0x80, 0x07, - 0x08, 0xd4, 0xe0, 0x68, 0x01, 0x26, 0x01, 0x89, - 0x02, 0x39, 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, - 0x02, 0x31, 0x06, 0xe0, 0xe0, 0x68, 0x01, 0x89, - 0x06, 0x39, 0x01, 0x81, 0xe0, 0x68, 0x01, 0x68, - 0x06, 0x31, 0x01, 0x60, 0x14, 0x49, 0x00, 0x20, - 0x0b, 0x1f, 0x42, 0x00, 0x9a, 0x5a, 0xaa, 0x42, - 0x02, 0xd1, 0x11, 0x49, 0x06, 0x31, 0x02, 0xe0, - 0x3c, 0x00, 0x80, 0xe8, 0x00, 0x00, 0x01, 0x30, - 0x02, 0x28, 0xf5, 0xd3, 0xe0, 0x68, 0x06, 0x22, - 0x00, 0x68, 0xf1, 0xf7, 0x34, 0xfe, 0x01, 0x2e, - 0xcb, 0xd1, 0x81, 0x20, 0x00, 0xab, 0x18, 0x80, - 0xe1, 0x7d, 0x20, 0x8b, 0x49, 0x03, 0x08, 0x43, - 0x31, 0x03, 0x08, 0x43, 0x00, 0x04, 0x00, 0x0c, - 0x01, 0x0a, 0x00, 0x02, 0x08, 0x43, 0x58, 0x80, - 0xe0, 0x68, 0x19, 0x88, 0x00, 0x68, 0xc1, 0x80, - 0x59, 0x88, 0x3c, 0x00, 0xbc, 0xe8, 0x00, 0x00, - 0x01, 0x81, 0xb5, 0xe7, 0x6a, 0x46, 0x01, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x01, 0x89, 0x06, 0x22, - 0x08, 0x31, 0x01, 0x81, 0x04, 0x68, 0x04, 0x49, - 0x08, 0x3c, 0x04, 0x60, 0x20, 0x1c, 0xf1, 0xf7, - 0x0d, 0xfe, 0xe5, 0x80, 0xb0, 0xbd, 0x00, 0x00, - 0x6a, 0x46, 0x01, 0x00, 0xf8, 0xb5, 0x00, 0x29, - 0x01, 0xd0, 0x00, 0x28, 0x01, 0xd1, 0x00, 0x20, - 0xf8, 0xbd, 0x09, 0x04, 0x3c, 0x00, 0xf8, 0xe8, - 0x00, 0x00, 0x09, 0x0c, 0xf2, 0xf7, 0x43, 0xff, - 0x06, 0x1c, 0x05, 0x1c, 0x00, 0x27, 0x20, 0xe0, - 0x2c, 0x89, 0x29, 0x68, 0x02, 0x2c, 0x01, 0xd2, - 0x02, 0x20, 0x01, 0xe0, 0x48, 0x78, 0x02, 0x30, - 0x84, 0x42, 0x02, 0xdd, 0x24, 0x1a, 0x09, 0x18, - 0xf4, 0xe7, 0x84, 0x42, 0x10, 0xd0, 0x01, 0x1b, - 0x0a, 0x04, 0x01, 0x04, 0x09, 0x0c, 0x12, 0x0c, - 0x28, 0x1c, 0xf2, 0xf7, 0x9e, 0xfe, 0x3c, 0x00, - 0x34, 0xe9, 0x00, 0x00, 0x00, 0x28, 0x06, 0xd1, - 0xe8, 0x68, 0xf2, 0xf7, 0x2d, 0xfe, 0xef, 0x60, - 0x28, 0x89, 0x00, 0x1b, 0x28, 0x81, 0xed, 0x68, - 0x00, 0x2d, 0xdc, 0xd1, 0x30, 0x1c, 0xd1, 0xe7, - 0xf8, 0xb5, 0x85, 0x68, 0x04, 0x1c, 0x80, 0x69, - 0x2e, 0x1c, 0x00, 0x28, 0x0d, 0xd0, 0x71, 0x68, - 0xf2, 0xf7, 0xf6, 0xfd, 0xa0, 0x69, 0xf2, 0xf7, - 0x17, 0xfe, 0x06, 0xe0, 0x00, 0x21, 0xc1, 0x60, - 0x3c, 0x00, 0x70, 0xe9, 0x00, 0x00, 0xf1, 0x60, - 0xa0, 0x8d, 0x36, 0x68, 0x01, 0x38, 0xa0, 0x85, - 0xf0, 0x68, 0x00, 0x28, 0xf5, 0xd1, 0x30, 0x68, - 0xa0, 0x60, 0xa0, 0x8d, 0x01, 0x38, 0x00, 0x04, - 0x00, 0x0c, 0xa0, 0x85, 0x02, 0xd0, 0x20, 0x1c, - 0xf9, 0xf7, 0x39, 0xf8, 0x2a, 0x4f, 0x2a, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x03, 0xd0, 0x06, 0x21, - 0x68, 0x68, 0xfa, 0xf7, 0x7c, 0xfd, 0x68, 0x68, - 0x00, 0x68, 0x3c, 0x00, 0xac, 0xe9, 0x00, 0x00, - 0x81, 0x78, 0x00, 0x29, 0x2b, 0xd1, 0xc1, 0x78, - 0x00, 0x29, 0x30, 0xd1, 0x21, 0x8e, 0x01, 0x39, - 0x21, 0x86, 0xfb, 0xf7, 0x15, 0xf8, 0xa1, 0x6a, - 0x08, 0x1a, 0xa0, 0x62, 0xe1, 0x69, 0x88, 0x42, - 0x03, 0xd9, 0x04, 0x21, 0x02, 0x20, 0xf2, 0xf7, - 0x67, 0xfc, 0xb8, 0x68, 0x00, 0x28, 0x1e, 0xd0, - 0x1a, 0x49, 0x20, 0x8e, 0x49, 0x68, 0x0c, 0x22, - 0x52, 0x1a, 0x90, 0x42, 0x3c, 0x00, 0xe8, 0xe9, - 0x00, 0x00, 0x08, 0xd3, 0x19, 0x23, 0x9b, 0x01, - 0xaf, 0x22, 0x92, 0x01, 0x59, 0x43, 0xa0, 0x6a, - 0x51, 0x1a, 0x88, 0x42, 0x0e, 0xd2, 0x00, 0x21, - 0x0c, 0x20, 0x03, 0xf0, 0xac, 0xfc, 0x00, 0x20, - 0xb8, 0x60, 0x07, 0xe0, 0x01, 0x29, 0x05, 0xd1, - 0xc0, 0x78, 0x17, 0x28, 0x02, 0xd1, 0xa0, 0x8e, - 0x01, 0x38, 0xa0, 0x86, 0x2a, 0x1d, 0x06, 0xca, - 0xe0, 0x68, 0x63, 0x69, 0xf1, 0xf7, 0x3c, 0x00, - 0x24, 0xea, 0x00, 0x00, 0xdc, 0xfc, 0xb5, 0x42, - 0x01, 0xd0, 0x2d, 0x68, 0xb4, 0xe7, 0xa0, 0x8d, - 0x00, 0x28, 0x03, 0xd1, 0x05, 0x48, 0xb9, 0x69, - 0x00, 0xf0, 0x9e, 0xfc, 0xf8, 0xbd, 0x00, 0x00, - 0xfc, 0x5a, 0x01, 0x00, 0xcc, 0x5c, 0x01, 0x00, - 0x18, 0x57, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, - 0x89, 0x07, 0x07, 0x4b, 0xca, 0x0f, 0x80, 0xb5, - 0x19, 0x7c, 0x00, 0x29, 0x06, 0xd0, 0x81, 0x43, - 0x3c, 0x00, 0x60, 0xea, 0x00, 0x00, 0x19, 0x74, - 0x03, 0xd1, 0x07, 0x21, 0x15, 0x20, 0x04, 0xf0, - 0xa2, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x01, 0x20, - 0xff, 0xf7, 0xe9, 0xff, 0x80, 0xbd, 0x80, 0xb5, - 0x01, 0x1c, 0x02, 0x20, 0xff, 0xf7, 0xe3, 0xff, - 0x80, 0xbd, 0xb0, 0xb5, 0x1b, 0x4c, 0x60, 0x68, - 0xfc, 0xf7, 0x2f, 0xff, 0x20, 0x68, 0x00, 0x25, - 0x40, 0x68, 0x3c, 0x00, 0x9c, 0xea, 0x00, 0x00, - 0x00, 0x28, 0x03, 0xd0, 0xfd, 0xf7, 0x18, 0xfc, - 0x20, 0x68, 0x45, 0x60, 0x60, 0x68, 0xfc, 0xf7, - 0xc5, 0xfe, 0x14, 0x48, 0x61, 0x68, 0x00, 0xf0, - 0x61, 0xfc, 0xa0, 0x7a, 0x01, 0x28, 0x05, 0xd0, - 0x02, 0x28, 0x03, 0xd0, 0x20, 0x68, 0x00, 0x68, - 0x00, 0xf0, 0xde, 0xf8, 0x01, 0x21, 0x1f, 0x20, - 0x04, 0xf0, 0xb2, 0xfd, 0x00, 0x21, 0x1f, 0x20, - 0x04, 0xf0, 0xae, 0xfd, 0x3c, 0x00, 0xd8, 0xea, - 0x00, 0x00, 0x02, 0x21, 0x1f, 0x20, 0x04, 0xf0, - 0xaa, 0xfd, 0xa5, 0x72, 0x21, 0x68, 0x2c, 0x20, - 0x40, 0x5c, 0x89, 0x68, 0xf1, 0xf7, 0x76, 0xfc, - 0x60, 0x68, 0xfc, 0xf7, 0xe4, 0xfe, 0x20, 0x68, - 0x05, 0x62, 0xb0, 0xbd, 0x00, 0x00, 0x14, 0x7a, - 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, 0x04, 0x49, - 0x0a, 0x68, 0xc8, 0x68, 0x92, 0x6a, 0x00, 0x2a, - 0x01, 0xd0, 0x09, 0x69, 0x08, 0x18, 0x3c, 0x00, - 0x14, 0xeb, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0xb0, 0xb5, 0x13, 0x4c, - 0x05, 0x1c, 0xa0, 0x7a, 0x01, 0x38, 0x02, 0x28, - 0x19, 0xd8, 0x01, 0x21, 0x1f, 0x20, 0x04, 0xf0, - 0x81, 0xfd, 0x20, 0x68, 0xfc, 0x23, 0x01, 0x1c, - 0x20, 0x30, 0x02, 0x7b, 0x1a, 0x40, 0x02, 0x73, - 0x00, 0x2d, 0x0f, 0xd0, 0x01, 0x23, 0x1a, 0x43, - 0x02, 0x73, 0xa0, 0x7a, 0x03, 0x28, 0x07, 0xd1, - 0x3c, 0x00, 0x50, 0xeb, 0x00, 0x00, 0x01, 0x20, - 0x01, 0xf0, 0xe7, 0xfd, 0x00, 0x28, 0x01, 0xd1, - 0xff, 0xf7, 0x97, 0xff, 0xb0, 0xbd, 0x4b, 0x62, - 0xb0, 0xbd, 0x02, 0x21, 0x11, 0x43, 0x01, 0x73, - 0xf6, 0xe7, 0x14, 0x7a, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x0a, 0x30, 0xf6, 0xf7, 0x43, 0xfe, - 0x00, 0x28, 0x0c, 0xd0, 0x22, 0x88, 0x0a, 0x49, - 0x0b, 0x7a, 0x90, 0x04, 0xc0, 0x0f, 0x00, 0x2b, - 0x06, 0xd1, 0x3c, 0x00, 0x8c, 0xeb, 0x00, 0x00, - 0x12, 0x06, 0x92, 0x0e, 0x20, 0x2a, 0x00, 0xd1, - 0x01, 0x20, 0xc8, 0x60, 0x10, 0xbd, 0x00, 0x28, - 0xfc, 0xd1, 0x00, 0x22, 0x24, 0x21, 0x80, 0x20, - 0x04, 0xf0, 0x04, 0xfe, 0x10, 0xbd, 0x00, 0x00, - 0x04, 0x7a, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x1c, - 0x1f, 0x21, 0x80, 0x20, 0x04, 0xf0, 0xfa, 0xfd, - 0x80, 0xbd, 0x00, 0x00, 0xf8, 0xb5, 0x1d, 0x4e, - 0x04, 0x1c, 0x30, 0x68, 0x3c, 0x00, 0xc8, 0xeb, - 0x00, 0x00, 0x1d, 0x1c, 0x47, 0x68, 0x20, 0x1c, - 0xf1, 0xf7, 0x0a, 0xfc, 0xfb, 0xf7, 0x87, 0xfa, - 0x00, 0x28, 0x04, 0xd0, 0x28, 0x1c, 0xf2, 0xf7, - 0x2a, 0xfb, 0x00, 0x28, 0x28, 0xd1, 0x20, 0x88, - 0x40, 0x05, 0x25, 0xd4, 0x30, 0x68, 0x00, 0x68, - 0xfe, 0xf7, 0x59, 0xf9, 0x00, 0x28, 0x03, 0xd1, - 0xfd, 0xf7, 0x89, 0xfa, 0xf1, 0xf7, 0xed, 0xfb, - 0x30, 0x68, 0x00, 0x25, 0x40, 0x68, 0x3c, 0x00, - 0x04, 0xec, 0x00, 0x00, 0x00, 0x28, 0x03, 0xd0, - 0xfd, 0xf7, 0x64, 0xfb, 0x30, 0x68, 0x45, 0x60, - 0x20, 0x88, 0x00, 0x09, 0x00, 0x07, 0x03, 0xd1, - 0x04, 0xf0, 0xc8, 0xf8, 0x61, 0x88, 0x45, 0x18, - 0x30, 0x68, 0x45, 0x61, 0x81, 0x6a, 0x01, 0x31, - 0x81, 0x62, 0x20, 0x88, 0x80, 0x04, 0xc1, 0x0f, - 0x02, 0x48, 0xf8, 0xf7, 0xcd, 0xff, 0xf8, 0xbd, - 0x14, 0x7a, 0x01, 0x00, 0xb1, 0xeb, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xec, 0x00, 0x00, 0xb0, 0xb5, - 0x0e, 0x4c, 0x05, 0x1c, 0x60, 0x68, 0xfc, 0xf7, - 0xf6, 0xfd, 0x0c, 0x48, 0x61, 0x68, 0x00, 0xf0, - 0x92, 0xfb, 0x00, 0x21, 0x24, 0x20, 0x04, 0xf0, - 0xec, 0xfc, 0x00, 0x22, 0xd2, 0x43, 0x80, 0x21, - 0x24, 0x20, 0x04, 0xf0, 0xb8, 0xfc, 0x00, 0x20, - 0xe0, 0x60, 0x20, 0x72, 0x20, 0x68, 0x01, 0x68, - 0x28, 0x06, 0x00, 0x0e, 0xf1, 0xf7, 0xb0, 0xfb, - 0xb0, 0xbd, 0x3c, 0x00, 0x7c, 0xec, 0x00, 0x00, - 0x04, 0x7a, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0xc0, 0x68, 0xf2, 0xf7, - 0x85, 0xfc, 0x20, 0x1c, 0xf2, 0xf7, 0xb0, 0xfd, - 0x10, 0xbd, 0x00, 0x00, 0x70, 0xb5, 0x1c, 0x4e, - 0x05, 0x1c, 0xb0, 0x7a, 0x2c, 0x1c, 0x40, 0x34, - 0x02, 0x28, 0x26, 0xd1, 0xa0, 0x8b, 0x31, 0x89, - 0x88, 0x42, 0x22, 0xd1, 0x30, 0x68, 0x41, 0x6a, - 0x00, 0x29, 0x08, 0xd0, 0x3c, 0x00, 0xb8, 0xec, - 0x00, 0x00, 0x20, 0x30, 0x00, 0x7b, 0xc0, 0x07, - 0x04, 0xd5, 0x01, 0x20, 0x01, 0xf0, 0x2f, 0xfd, - 0x00, 0x28, 0x18, 0xd1, 0x60, 0x78, 0x00, 0x28, - 0x09, 0xd1, 0x30, 0x68, 0x02, 0x23, 0x20, 0x30, - 0x02, 0x7b, 0x0d, 0x49, 0x52, 0x08, 0x52, 0x00, - 0x1a, 0x43, 0x02, 0x73, 0x01, 0xe0, 0xff, 0x21, - 0xf5, 0x31, 0x01, 0x22, 0x1f, 0x20, 0x04, 0xf0, - 0x6e, 0xfc, 0x03, 0x20, 0xb0, 0x72, 0x3c, 0x00, - 0xf4, 0xec, 0x00, 0x00, 0x02, 0xe0, 0x28, 0x1c, - 0xff, 0xf7, 0xc4, 0xff, 0x60, 0x78, 0x00, 0x28, - 0x03, 0xd1, 0x29, 0x1c, 0x01, 0x20, 0x03, 0xf0, - 0x29, 0xfb, 0x70, 0xbd, 0x14, 0x7a, 0x01, 0x00, - 0x50, 0xc3, 0x00, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x60, 0x34, 0xe0, 0x79, 0x0e, 0x4d, 0x00, 0x28, - 0x0a, 0xd1, 0x02, 0x20, 0xa8, 0x72, 0x28, 0x68, - 0x40, 0x68, 0x00, 0x28, 0x04, 0xd1, 0x0b, 0x48, - 0x3c, 0x00, 0x30, 0xed, 0x00, 0x00, 0xfd, 0xf7, - 0xd0, 0xfa, 0x29, 0x68, 0x48, 0x60, 0x04, 0xf0, - 0x38, 0xf8, 0x29, 0x68, 0xc8, 0x61, 0xff, 0xf7, - 0xe0, 0xfe, 0x29, 0x68, 0x09, 0x69, 0x08, 0x1a, - 0x03, 0xf0, 0x6f, 0xff, 0x00, 0x28, 0x01, 0xd0, - 0xe0, 0x79, 0xa0, 0x71, 0xb0, 0xbd, 0x14, 0x7a, - 0x01, 0x00, 0xc1, 0xeb, 0x00, 0x00, 0xf8, 0xb5, - 0x04, 0x1c, 0x00, 0x26, 0x04, 0xf0, 0x21, 0xf8, - 0x05, 0x1c, 0x3c, 0x00, 0x6c, 0xed, 0x00, 0x00, - 0x22, 0x48, 0x00, 0x27, 0x07, 0x70, 0xa1, 0x07, - 0x04, 0xd0, 0xe1, 0x07, 0xc9, 0x0f, 0x01, 0x62, - 0xc5, 0x61, 0x01, 0x26, 0x41, 0x6b, 0x00, 0x29, - 0x34, 0xd1, 0x00, 0x2e, 0x32, 0xd0, 0x06, 0x1c, - 0xf9, 0xf7, 0x44, 0xff, 0x31, 0x6b, 0x1a, 0x4b, - 0x41, 0x1a, 0xa2, 0x07, 0x12, 0xd5, 0xda, 0x68, - 0x00, 0x2a, 0x08, 0xdd, 0x91, 0x42, 0x1a, 0x68, - 0x02, 0xda, 0x14, 0x09, 0x3c, 0x00, 0xa8, 0xed, - 0x00, 0x00, 0xa2, 0x18, 0x06, 0xe0, 0x14, 0x09, - 0x12, 0x1b, 0x03, 0xe0, 0x0a, 0x43, 0x02, 0xd1, - 0x1a, 0x68, 0x52, 0x00, 0x1a, 0x60, 0xb7, 0x63, - 0x0a, 0xe0, 0xb2, 0x6b, 0x01, 0x32, 0xb2, 0x63, - 0x02, 0x2a, 0x1a, 0x68, 0x01, 0xdd, 0x94, 0x08, - 0x00, 0xe0, 0x14, 0x09, 0x12, 0x1b, 0x1a, 0x60, - 0xd9, 0x60, 0x30, 0x63, 0xf5, 0x62, 0x18, 0x68, - 0x08, 0x49, 0x88, 0x42, 0x01, 0xd9, 0x3c, 0x00, - 0xe4, 0xed, 0x00, 0x00, 0x19, 0x60, 0x03, 0xe0, - 0x64, 0x28, 0x01, 0xd2, 0x64, 0x20, 0x18, 0x60, - 0xf5, 0xf7, 0xfc, 0xfd, 0xf8, 0xbd, 0x00, 0x00, - 0x60, 0x6c, 0x01, 0x00, 0xb0, 0x57, 0x01, 0x00, - 0x20, 0xa1, 0x07, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0x00, 0x20, 0x50, 0x4d, 0x00, 0x21, 0x68, 0x61, - 0x20, 0x69, 0xfb, 0xf7, 0xb3, 0xfc, 0x07, 0x1c, - 0x20, 0x69, 0x03, 0x21, 0xfb, 0xf7, 0xae, 0xfc, - 0x3c, 0x00, 0x20, 0xee, 0x00, 0x00, 0x00, 0x28, - 0x03, 0xd0, 0x80, 0x78, 0x29, 0x78, 0x88, 0x42, - 0x63, 0xd1, 0x47, 0x4d, 0x20, 0x1c, 0x14, 0x30, - 0x39, 0x1c, 0x06, 0x1c, 0x2a, 0x78, 0x02, 0xf0, - 0x5a, 0xfa, 0x00, 0x28, 0x59, 0xd1, 0xe0, 0x68, - 0x05, 0x68, 0x41, 0x48, 0x01, 0x95, 0x58, 0x30, - 0x02, 0x90, 0xfb, 0xf7, 0x6a, 0xff, 0x3e, 0x4d, - 0x19, 0x35, 0x00, 0x28, 0x0b, 0xd0, 0x28, 0x1c, - 0xfb, 0xf7, 0x3c, 0x00, 0x5c, 0xee, 0x00, 0x00, - 0x55, 0xff, 0x00, 0x28, 0x1e, 0xd1, 0x31, 0x1c, - 0x28, 0x1c, 0xfb, 0xf7, 0x65, 0xff, 0x00, 0x28, - 0x42, 0xd0, 0x17, 0xe0, 0x28, 0x1c, 0xfb, 0xf7, - 0x49, 0xff, 0x00, 0x28, 0x06, 0xd0, 0x39, 0x1c, - 0x02, 0x98, 0xfb, 0xf7, 0x63, 0xff, 0x00, 0x28, - 0x36, 0xd0, 0x0b, 0xe0, 0x39, 0x1c, 0x02, 0x98, - 0xfb, 0xf7, 0x5c, 0xff, 0x00, 0x28, 0x2f, 0xd0, - 0x31, 0x1c, 0x28, 0x1c, 0x3c, 0x00, 0x98, 0xee, - 0x00, 0x00, 0xfb, 0xf7, 0x4c, 0xff, 0x00, 0x28, - 0x29, 0xd0, 0x30, 0x1c, 0xf6, 0xf7, 0xad, 0xfc, - 0x29, 0x4a, 0x18, 0x32, 0x11, 0x7c, 0x00, 0x29, - 0x04, 0xd0, 0x51, 0x6a, 0x00, 0x29, 0x01, 0xd0, - 0x00, 0x28, 0x1c, 0xd1, 0x90, 0x6a, 0x00, 0x28, - 0x3b, 0xd0, 0x13, 0x78, 0x01, 0x9d, 0x01, 0x21, - 0x6d, 0x89, 0x01, 0x20, 0x2b, 0x40, 0x9b, 0x07, - 0x11, 0xd0, 0xa3, 0x6b, 0x1e, 0x4e, 0x3c, 0x00, - 0xd4, 0xee, 0x00, 0x00, 0x1d, 0x1c, 0x7f, 0x35, - 0x98, 0x36, 0x00, 0x2d, 0x14, 0xd0, 0x55, 0x8a, - 0x00, 0x2d, 0x08, 0xd1, 0x55, 0x69, 0xab, 0x42, - 0x0f, 0xda, 0x00, 0x20, 0x17, 0x4d, 0x01, 0x23, - 0x6b, 0x61, 0x0a, 0xe0, 0x29, 0xe0, 0xf5, 0x78, - 0x02, 0x2d, 0x06, 0xd1, 0x14, 0x4f, 0x55, 0x69, - 0x3f, 0x68, 0xed, 0x19, 0xab, 0x42, 0x00, 0xda, - 0x00, 0x20, 0x23, 0x6c, 0x1d, 0x1c, 0x7f, 0x35, - 0x3c, 0x00, 0x10, 0xef, 0x00, 0x00, 0x10, 0xd0, - 0x55, 0x8a, 0x00, 0x2d, 0x03, 0xd1, 0x95, 0x69, - 0xab, 0x42, 0x0a, 0xd2, 0x08, 0xe0, 0xf5, 0x78, - 0x02, 0x2d, 0x06, 0xd1, 0x0b, 0x4e, 0x95, 0x69, - 0x36, 0x68, 0xad, 0x19, 0xab, 0x42, 0x00, 0xd2, - 0x00, 0x21, 0x08, 0x43, 0x08, 0xd0, 0x10, 0x6a, - 0x00, 0x28, 0x01, 0xd0, 0xf1, 0xf7, 0x4b, 0xfa, - 0x00, 0x21, 0x20, 0x1c, 0x01, 0xf0, 0xb9, 0xf9, - 0xfe, 0xbd, 0x3c, 0x00, 0x4c, 0xef, 0x00, 0x00, - 0xec, 0x65, 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, - 0xcc, 0x67, 0x01, 0x00, 0x3e, 0xb5, 0x05, 0x6a, - 0x04, 0x1c, 0xc0, 0x68, 0xf2, 0xf7, 0x34, 0xfb, - 0xe1, 0x69, 0xf2, 0xf7, 0x57, 0xfa, 0x20, 0x1c, - 0x40, 0x30, 0xc1, 0x8b, 0x04, 0x31, 0xc1, 0x83, - 0x2b, 0x69, 0x10, 0x49, 0x98, 0x79, 0x06, 0x28, - 0x0a, 0xd1, 0x98, 0x88, 0x01, 0x91, 0x02, 0x94, - 0x00, 0x90, 0x60, 0x69, 0x3c, 0x00, 0x88, 0xef, - 0x00, 0x00, 0x1b, 0x68, 0x01, 0x68, 0xe0, 0x68, - 0x03, 0x22, 0xc0, 0x68, 0x0a, 0xe0, 0x02, 0x28, - 0x0b, 0xd1, 0x10, 0x20, 0x00, 0x90, 0x01, 0x91, - 0x02, 0x94, 0xe0, 0x68, 0xa3, 0x69, 0xc0, 0x68, - 0x00, 0x22, 0x00, 0x21, 0xf7, 0xf7, 0x0f, 0xfb, - 0x3e, 0xbd, 0xf2, 0xf7, 0xa6, 0xf9, 0xfb, 0xe7, - 0x00, 0x00, 0xbd, 0xef, 0x00, 0x00, 0x80, 0xb5, - 0xd1, 0x68, 0x50, 0x69, 0xc9, 0x68, 0x3c, 0x00, - 0xc4, 0xef, 0x00, 0x00, 0xc1, 0x60, 0xd1, 0x68, - 0xc8, 0x60, 0x11, 0x1c, 0x40, 0x31, 0xcb, 0x8b, - 0x00, 0x89, 0x18, 0x18, 0xc8, 0x83, 0x10, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0xff, 0xf7, 0xbc, 0xff, - 0x80, 0xbd, 0x03, 0x48, 0xfb, 0xf7, 0xcc, 0xf8, - 0x00, 0x6a, 0xfe, 0xf7, 0xf5, 0xf9, 0x80, 0xbd, - 0xa0, 0x6a, 0x01, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x0a, 0x24, 0x30, 0x07, 0x01, 0x09, 0xa0, 0x07, - 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x01, 0x43, - 0x0f, 0x1c, 0x0a, 0x4d, 0x2f, 0x60, 0x04, 0xf0, - 0xfa, 0xfe, 0xad, 0x68, 0x28, 0x01, 0x00, 0x0f, - 0xb0, 0x42, 0x05, 0xd0, 0x01, 0x3c, 0xf4, 0xd2, - 0x01, 0x21, 0x9b, 0x20, 0xf2, 0xf7, 0x41, 0xf9, - 0x28, 0x02, 0x00, 0x0a, 0x08, 0x2e, 0x01, 0xd1, - 0x31, 0x05, 0x08, 0x43, 0xf8, 0xbd, 0x60, 0x00, - 0x07, 0x00, 0x01, 0x22, 0xd2, 0x05, 0x80, 0xb5, - 0x00, 0x21, 0x3c, 0x00, 0x3c, 0xf0, 0x00, 0x00, - 0x04, 0x20, 0x04, 0xf0, 0xdd, 0xfc, 0x0f, 0x20, - 0xff, 0xf7, 0xd6, 0xff, 0x0f, 0x21, 0x09, 0x04, - 0x08, 0x40, 0x00, 0x0c, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x05, 0x48, 0xfd, 0xf7, 0x4a, 0xf9, - 0x04, 0x48, 0xfd, 0xf7, 0x7b, 0xf8, 0x04, 0x48, - 0xfd, 0xf7, 0x6c, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0x89, 0x34, 0x01, 0x00, 0xed, 0x24, 0x00, 0x00, - 0x11, 0x1c, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xf0, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0x48, 0xf3, 0xf7, - 0x2a, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0xd1, 0x24, - 0x00, 0x00, 0x80, 0xb5, 0xf2, 0xf7, 0x53, 0xf9, - 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x21, 0x00, 0x20, - 0x01, 0xf0, 0x51, 0xfe, 0x03, 0x20, 0x02, 0xf0, - 0x46, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x06, 0x48, - 0x80, 0xb5, 0xc1, 0x69, 0x00, 0x29, 0x06, 0xd1, - 0x01, 0x6a, 0x00, 0x29, 0x03, 0xd1, 0x3c, 0x00, - 0xb4, 0xf0, 0x00, 0x00, 0x81, 0x6b, 0x03, 0x48, - 0x00, 0xf0, 0x5e, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0x34, 0x63, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x4c, 0x20, 0x6a, 0xfc, 0xf7, - 0xb3, 0xfb, 0x03, 0x48, 0x21, 0x6a, 0x00, 0xf0, - 0x4f, 0xf9, 0x10, 0xbd, 0x1c, 0x75, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x4c, - 0x20, 0x7c, 0x00, 0x28, 0x02, 0xd0, 0x01, 0x21, - 0x3c, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0xfd, 0xf7, - 0x86, 0xf9, 0x00, 0x25, 0x25, 0x70, 0xa0, 0x68, - 0x01, 0x28, 0x03, 0xd1, 0x00, 0x20, 0xa5, 0x60, - 0x01, 0xf0, 0x8f, 0xf8, 0xa0, 0x78, 0x01, 0x28, - 0x05, 0xd1, 0x03, 0x48, 0x98, 0x38, 0x00, 0x69, - 0xfc, 0xf7, 0xef, 0xfb, 0xa5, 0x70, 0xb0, 0xbd, - 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x21, 0x01, 0x20, 0x01, 0xf0, 0x09, 0xfe, - 0x80, 0xbd, 0x3c, 0x00, 0x2c, 0xf1, 0x00, 0x00, - 0x38, 0xb5, 0x69, 0x46, 0x00, 0x25, 0xf8, 0xf7, - 0xb7, 0xfe, 0x04, 0x1c, 0x01, 0xd1, 0x01, 0x20, - 0x38, 0xbd, 0xa0, 0x68, 0x00, 0x28, 0x04, 0xd0, - 0x00, 0x99, 0xa1, 0x31, 0x08, 0x20, 0x04, 0xf0, - 0x73, 0xfa, 0x1c, 0x21, 0x20, 0x1c, 0xf1, 0xf7, - 0xa3, 0xf9, 0x28, 0x1c, 0xf0, 0xe7, 0x00, 0x00, - 0xfe, 0xb5, 0x07, 0x1c, 0x4c, 0x23, 0x39, 0x49, - 0x58, 0x43, 0x44, 0x18, 0x3c, 0x00, 0x68, 0xf1, - 0x00, 0x00, 0x25, 0x1c, 0x40, 0x35, 0x28, 0x7a, - 0x37, 0x49, 0x48, 0x76, 0x21, 0x1c, 0x30, 0x31, - 0x02, 0x91, 0x0c, 0x23, 0xc8, 0x56, 0x42, 0x1c, - 0x0a, 0x73, 0x49, 0x7b, 0x88, 0x42, 0x46, 0xda, - 0x32, 0x48, 0x00, 0x78, 0x80, 0x07, 0x3e, 0xd5, - 0x00, 0x20, 0x01, 0x90, 0xf6, 0xf7, 0xaf, 0xfa, - 0x00, 0x28, 0x2e, 0xd0, 0xac, 0x21, 0x09, 0x58, - 0x00, 0x29, 0x01, 0xd0, 0xe4, 0x30, 0x3c, 0x00, - 0xa4, 0xf1, 0x00, 0x00, 0x00, 0xe0, 0xcc, 0x30, - 0x06, 0x1c, 0x40, 0x68, 0x00, 0x28, 0x25, 0xd0, - 0x02, 0x99, 0x08, 0x7b, 0x01, 0x28, 0x11, 0xd1, - 0x20, 0x1c, 0x2e, 0x30, 0x29, 0x78, 0xf6, 0xf7, - 0xed, 0xf9, 0x71, 0x68, 0x03, 0xe0, 0x72, 0x18, - 0x12, 0x7a, 0x82, 0x42, 0x03, 0xd9, 0xff, 0x31, - 0x09, 0x06, 0x09, 0x0e, 0xf7, 0xd1, 0xa9, 0x70, - 0x01, 0x20, 0x01, 0x90, 0x23, 0x1c, 0x3e, 0x33, - 0x3c, 0x00, 0xe0, 0xf1, 0x00, 0x00, 0x1a, 0x1d, - 0x30, 0x1c, 0x00, 0x97, 0x01, 0x99, 0xf8, 0xf7, - 0x58, 0xfa, 0x00, 0x28, 0x11, 0xd0, 0xa8, 0x78, - 0x80, 0x19, 0x00, 0x7a, 0x00, 0xe0, 0x00, 0x20, - 0x68, 0x70, 0x68, 0x78, 0x01, 0x21, 0xfb, 0xf7, - 0xe0, 0xfd, 0x60, 0x60, 0x38, 0x1c, 0x01, 0xf0, - 0x14, 0xfe, 0x38, 0x1c, 0x01, 0xf0, 0xa5, 0xfb, - 0xfe, 0xbd, 0x02, 0x99, 0x08, 0x7b, 0xff, 0x30, - 0x48, 0x73, 0x3c, 0x00, 0x1c, 0xf2, 0x00, 0x00, - 0x38, 0x1c, 0xfc, 0xf7, 0x19, 0xfc, 0x03, 0xf0, - 0xc3, 0xfd, 0x06, 0x1c, 0xfb, 0xf7, 0x8e, 0xfe, - 0x41, 0x00, 0x76, 0x18, 0x68, 0x78, 0x61, 0x68, - 0xfb, 0xf7, 0x6a, 0xfe, 0x31, 0x18, 0x20, 0x8d, - 0x3b, 0x1c, 0x05, 0x4a, 0x03, 0xf0, 0x12, 0xfe, - 0xe5, 0xe7, 0x00, 0x00, 0x58, 0xe3, 0x01, 0x00, - 0x30, 0x80, 0x07, 0x00, 0x1d, 0x75, 0x01, 0x00, - 0xd5, 0x4e, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xf2, - 0x00, 0x00, 0x03, 0x1c, 0x04, 0x48, 0x80, 0xb5, - 0x02, 0x79, 0x20, 0x30, 0x03, 0x49, 0x00, 0xf0, - 0x30, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, 0x03, 0x1c, - 0x04, 0x48, 0x80, 0xb5, 0xc2, 0x78, 0x38, 0x30, - 0x03, 0x49, 0x00, 0xf0, 0x22, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, 0xc8, 0x67, - 0x01, 0x00, 0x03, 0x1c, 0x04, 0x48, 0x3c, 0x00, - 0x94, 0xf2, 0x00, 0x00, 0x80, 0xb5, 0x82, 0x79, - 0x50, 0x30, 0x03, 0x49, 0x00, 0xf0, 0x14, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, 0x01, 0x00, - 0xcc, 0x67, 0x01, 0x00, 0x03, 0x1c, 0x04, 0x48, - 0x80, 0xb5, 0x42, 0x79, 0x68, 0x30, 0x03, 0x49, - 0x00, 0xf0, 0x06, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0xac, 0x7c, 0x01, 0x00, 0xd0, 0x67, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x24, 0x84, 0x80, 0x0b, 0x60, - 0x3c, 0x00, 0xd0, 0xf2, 0x00, 0x00, 0x19, 0x1c, - 0x51, 0x43, 0x01, 0x60, 0x19, 0x06, 0x09, 0x16, - 0x10, 0x22, 0x06, 0x30, 0xf1, 0xf7, 0x9f, 0xf9, - 0x10, 0xbd, 0xb0, 0xb5, 0x06, 0x4d, 0x00, 0x24, - 0xac, 0x60, 0xec, 0x60, 0xec, 0x61, 0x2c, 0x62, - 0x02, 0xf0, 0xf1, 0xfc, 0x00, 0xf0, 0x0d, 0xf8, - 0xec, 0x62, 0x2c, 0x70, 0xb0, 0xbd, 0x44, 0x7d, - 0x01, 0x00, 0x80, 0xb5, 0x80, 0x21, 0x01, 0x48, - 0xf1, 0xf7, 0x3c, 0x00, 0x0c, 0xf3, 0x00, 0x00, - 0xc7, 0xf8, 0x80, 0xbd, 0x04, 0x66, 0x01, 0x00, - 0xf8, 0xb5, 0x07, 0x4f, 0x00, 0x24, 0x00, 0x26, - 0x18, 0x20, 0x60, 0x43, 0xc5, 0x19, 0xee, 0x60, - 0x03, 0xf0, 0x42, 0xfd, 0x10, 0x35, 0x01, 0x34, - 0x02, 0x2c, 0x41, 0xc5, 0xf4, 0xdb, 0xf8, 0xbd, - 0xb8, 0x7d, 0x01, 0x00, 0x00, 0x23, 0x03, 0x60, - 0x04, 0x4b, 0x00, 0x29, 0x00, 0xd1, 0x19, 0x1c, - 0x41, 0x60, 0x00, 0x2a, 0x3c, 0x00, 0x48, 0xf3, - 0x00, 0x00, 0x00, 0xd1, 0x1a, 0x1c, 0x82, 0x60, - 0x70, 0x47, 0xbd, 0x75, 0x00, 0x00, 0x10, 0xb5, - 0x07, 0x4c, 0x20, 0x68, 0x01, 0x30, 0x20, 0x60, - 0x20, 0x28, 0x03, 0xd9, 0x58, 0x21, 0x58, 0x20, - 0xf1, 0xf7, 0x9d, 0xff, 0x21, 0x68, 0x01, 0x20, - 0x01, 0x39, 0x88, 0x40, 0x10, 0xbd, 0x60, 0x5b, - 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, - 0x21, 0x68, 0x00, 0x20, 0x00, 0x29, 0x3c, 0x00, - 0x84, 0xf3, 0x00, 0x00, 0x0a, 0xd0, 0xa9, 0x43, - 0x21, 0x60, 0x07, 0xd1, 0xa0, 0x68, 0xf1, 0xf7, - 0x23, 0xf8, 0x00, 0x28, 0x02, 0xd1, 0x21, 0x68, - 0x29, 0x43, 0x21, 0x60, 0xb0, 0xbd, 0x00, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x04, 0x1c, 0x21, 0x68, - 0x00, 0x20, 0x29, 0x43, 0x21, 0x60, 0xa9, 0x42, - 0x07, 0xd1, 0x60, 0x68, 0xf1, 0xf7, 0x10, 0xf8, - 0x00, 0x28, 0x02, 0xd1, 0x21, 0x68, 0xa9, 0x43, - 0x3c, 0x00, 0xc0, 0xf3, 0x00, 0x00, 0x21, 0x60, - 0xb0, 0xbd, 0x1a, 0x4b, 0xb0, 0xb5, 0x9a, 0x6a, - 0x00, 0x28, 0x0b, 0xd0, 0x00, 0x2a, 0x07, 0xdb, - 0xb8, 0x24, 0x24, 0x58, 0x01, 0x3c, 0xa4, 0x1a, - 0x00, 0x19, 0xb0, 0x30, 0x00, 0x7b, 0x02, 0xe0, - 0x0e, 0x20, 0x00, 0xe0, 0x0d, 0x20, 0x5d, 0x6a, - 0x12, 0x4c, 0x00, 0x2d, 0x01, 0xd0, 0x20, 0x78, - 0x00, 0xe0, 0x20, 0x5c, 0xff, 0x24, 0xa8, 0x34, - 0xc4, 0x40, 0x3c, 0x00, 0xfc, 0xf3, 0x00, 0x00, - 0x9c, 0x60, 0xf5, 0x24, 0xc4, 0x40, 0x9c, 0x61, - 0xfd, 0x24, 0xc4, 0x40, 0xdc, 0x61, 0xff, 0x24, - 0x29, 0x34, 0xc4, 0x40, 0x5c, 0x61, 0xff, 0x24, - 0x53, 0x34, 0xc4, 0x40, 0x00, 0x20, 0x0c, 0x33, - 0x11, 0xc3, 0x00, 0x29, 0x05, 0xd0, 0x00, 0x2a, - 0x03, 0xdc, 0x02, 0x21, 0x50, 0x42, 0x00, 0xf0, - 0x65, 0xfb, 0xb0, 0xbd, 0xac, 0x7e, 0x01, 0x00, - 0xb8, 0x52, 0x01, 0x00, 0x3c, 0x00, 0x38, 0xf4, - 0x00, 0x00, 0x10, 0xb5, 0x13, 0x4c, 0x13, 0x48, - 0x21, 0x1c, 0xff, 0x31, 0x69, 0x31, 0x0e, 0xc9, - 0x0e, 0xc0, 0x21, 0x1c, 0xff, 0x31, 0x24, 0x22, - 0x75, 0x31, 0x0f, 0x48, 0xf1, 0xf7, 0x51, 0xf8, - 0x21, 0x1c, 0xff, 0x31, 0x3c, 0x22, 0x99, 0x31, - 0x0d, 0x48, 0xf1, 0xf7, 0xa6, 0xf8, 0xfc, 0xf7, - 0xa2, 0xff, 0x21, 0x1c, 0xff, 0x31, 0x10, 0x22, - 0xd5, 0x31, 0x09, 0x48, 0xf1, 0xf7, 0x3c, 0x00, - 0x74, 0xf4, 0x00, 0x00, 0x41, 0xf8, 0x21, 0x1c, - 0xff, 0x31, 0x28, 0x22, 0xe5, 0x31, 0x07, 0x48, - 0xf1, 0xf7, 0x96, 0xf8, 0x10, 0xbd, 0x00, 0x00, - 0x40, 0x63, 0x01, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x0c, 0x80, 0x07, 0x00, 0x30, 0x80, 0x07, 0x00, - 0x80, 0x80, 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, - 0xf8, 0xb5, 0x00, 0x28, 0x59, 0xd0, 0x04, 0xf0, - 0x4b, 0xf9, 0xf8, 0xf7, 0xb3, 0xfb, 0x00, 0x22, - 0x3c, 0x00, 0xb0, 0xf4, 0x00, 0x00, 0x01, 0x21, - 0x13, 0x20, 0x04, 0xf0, 0x7c, 0xf9, 0x2a, 0x49, - 0x29, 0x48, 0x49, 0x6c, 0x01, 0x60, 0x00, 0x21, - 0x29, 0x48, 0xc9, 0x43, 0x41, 0x60, 0x26, 0x4c, - 0x14, 0x34, 0x61, 0x6c, 0x81, 0x60, 0xa1, 0x6c, - 0xc1, 0x60, 0x00, 0x20, 0x25, 0x4d, 0x02, 0x26, - 0x01, 0x01, 0x6e, 0x50, 0x0a, 0x19, 0x4f, 0x19, - 0x50, 0x32, 0x04, 0x37, 0x0e, 0xca, 0x01, 0x30, - 0x08, 0x28, 0x3c, 0x00, 0xec, 0xf4, 0x00, 0x00, - 0x0e, 0xc7, 0xf4, 0xdb, 0x14, 0x22, 0x21, 0x1c, - 0xcc, 0x31, 0x1e, 0x48, 0xf1, 0xf7, 0x5a, 0xf8, - 0x1d, 0x48, 0x81, 0x78, 0x09, 0x09, 0x09, 0x01, - 0x81, 0x70, 0x00, 0x21, 0xc1, 0x70, 0x41, 0x70, - 0x21, 0x1c, 0xe0, 0x31, 0x0a, 0x78, 0x02, 0x70, - 0x49, 0x78, 0x41, 0x70, 0x21, 0x1c, 0xe8, 0x31, - 0x30, 0x22, 0x08, 0x30, 0xf1, 0xf7, 0x46, 0xf8, - 0x21, 0x1c, 0xff, 0x31, 0x3c, 0x00, 0x28, 0xf5, - 0x00, 0x00, 0x50, 0x22, 0x19, 0x31, 0x12, 0x48, - 0xf1, 0xf7, 0x3f, 0xf8, 0x83, 0x20, 0x80, 0x00, - 0x14, 0x22, 0x21, 0x18, 0x10, 0x48, 0xf1, 0xf7, - 0x38, 0xf8, 0x11, 0x20, 0x40, 0x01, 0x84, 0x22, - 0x21, 0x18, 0x0d, 0x48, 0xf1, 0xf7, 0x31, 0xf8, - 0xff, 0xf7, 0x73, 0xff, 0x20, 0x1c, 0xf1, 0xf7, - 0x28, 0xfd, 0xf8, 0xbd, 0xff, 0xf7, 0x6d, 0xff, - 0xfb, 0xe7, 0x08, 0x20, 0x07, 0x00, 0x3c, 0x00, - 0x64, 0xf5, 0x00, 0x00, 0x2c, 0x63, 0x01, 0x00, - 0x40, 0x20, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x00, 0x40, 0x07, 0x00, 0x00, 0x50, 0x07, 0x00, - 0x00, 0x60, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x00, 0x90, 0x07, 0x00, 0xf8, 0xb5, 0x05, 0x1c, - 0x18, 0x48, 0xc0, 0x68, 0x00, 0x28, 0x25, 0xd0, - 0x16, 0x4e, 0x01, 0x36, 0x74, 0x78, 0x30, 0x78, - 0x27, 0x1a, 0x79, 0x19, 0x20, 0x1c, 0xf1, 0xf7, - 0x3c, 0x00, 0xa0, 0xf5, 0x00, 0x00, 0x4b, 0xf8, - 0x00, 0x90, 0x29, 0x1c, 0x20, 0x1c, 0xf1, 0xf7, - 0xb2, 0xf8, 0xc1, 0x19, 0x20, 0x1c, 0xf1, 0xf7, - 0x42, 0xf8, 0x60, 0x1a, 0x30, 0x70, 0x70, 0x1e, - 0x80, 0x68, 0x00, 0x28, 0x0d, 0xd0, 0x53, 0x36, - 0xf4, 0x78, 0x00, 0x99, 0x20, 0x1c, 0xf1, 0xf7, - 0xa2, 0xf8, 0xb1, 0x78, 0x61, 0x1a, 0x41, 0x18, - 0x20, 0x1c, 0xf1, 0xf7, 0x9c, 0xf8, 0x60, 0x1a, - 0xb0, 0x70, 0x3c, 0x00, 0xdc, 0xf5, 0x00, 0x00, - 0x03, 0x48, 0x5c, 0x30, 0x01, 0x69, 0xc2, 0x68, - 0x69, 0x43, 0x51, 0x18, 0xc1, 0x60, 0xf8, 0xbd, - 0x44, 0x7d, 0x01, 0x00, 0xb0, 0xb5, 0x0c, 0x4d, - 0xe8, 0x68, 0x29, 0x69, 0x40, 0x18, 0x7d, 0x21, - 0x09, 0x01, 0x44, 0x18, 0x20, 0x1c, 0x03, 0xf0, - 0x0b, 0xfb, 0x00, 0x28, 0x0a, 0xd0, 0x03, 0xf0, - 0xcf, 0xfb, 0x01, 0x1b, 0x28, 0x69, 0xf1, 0xf7, - 0x7d, 0xf8, 0x01, 0x30, 0x3c, 0x00, 0x18, 0xf6, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x0c, 0xff, 0xf7, - 0xb2, 0xff, 0xb0, 0xbd, 0x00, 0x00, 0xa0, 0x7d, - 0x01, 0x00, 0x70, 0xb5, 0x10, 0x4c, 0x60, 0x68, - 0x80, 0x25, 0xa8, 0x43, 0x60, 0x60, 0x20, 0x68, - 0x28, 0x43, 0x20, 0x60, 0x0d, 0x4e, 0x30, 0x1c, - 0x10, 0x30, 0xf3, 0xf7, 0xc8, 0xfc, 0x00, 0x28, - 0x03, 0xd1, 0x07, 0x21, 0x85, 0x20, 0xf1, 0xf7, - 0x2a, 0xfe, 0x08, 0x48, 0x00, 0x21, 0x3c, 0x00, - 0x54, 0xf6, 0x00, 0x00, 0x80, 0x68, 0x41, 0x63, - 0xc0, 0x6c, 0x10, 0x30, 0x70, 0x61, 0x01, 0x20, - 0x30, 0x61, 0x20, 0x68, 0xa8, 0x43, 0x20, 0x60, - 0x70, 0xbd, 0x00, 0x00, 0xf4, 0x00, 0x07, 0x00, - 0x00, 0x30, 0x07, 0x00, 0x24, 0x7e, 0x01, 0x00, - 0x01, 0x1c, 0x00, 0x20, 0x05, 0x29, 0x80, 0xb5, - 0x09, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, 0x5b, 0x00, - 0x9f, 0x44, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, - 0x3c, 0x00, 0x90, 0xf6, 0x00, 0x00, 0x03, 0x00, - 0xff, 0xf7, 0xcf, 0xfc, 0x80, 0xbd, 0x01, 0x22, - 0x92, 0x02, 0x80, 0xb5, 0x00, 0x21, 0x07, 0x20, - 0x04, 0xf0, 0xab, 0xf9, 0x80, 0xbd, 0x80, 0xb5, - 0x40, 0x22, 0x00, 0x21, 0x00, 0x20, 0x04, 0xf0, - 0xa4, 0xf9, 0x03, 0x22, 0x00, 0x21, 0x00, 0x20, - 0x04, 0xf0, 0x9f, 0xf9, 0x80, 0xbd, 0x70, 0xb5, - 0x0e, 0x1c, 0x05, 0x1c, 0x14, 0x1c, 0x08, 0x28, - 0x0e, 0xd1, 0x3c, 0x00, 0xcc, 0xf6, 0x00, 0x00, - 0x00, 0xf0, 0x00, 0xfc, 0x0e, 0x28, 0x01, 0xd1, - 0x14, 0x20, 0x00, 0xe0, 0x10, 0x20, 0xe1, 0x03, - 0x00, 0xd5, 0x01, 0x38, 0xc0, 0x06, 0x0a, 0x49, - 0xc0, 0x0e, 0x88, 0x71, 0x08, 0xe0, 0x09, 0x2d, - 0x06, 0xd1, 0xa0, 0x04, 0x01, 0xd5, 0x00, 0x20, - 0x00, 0xe0, 0x01, 0x20, 0xf3, 0xf7, 0xb0, 0xf9, - 0x34, 0x40, 0x21, 0x1c, 0x32, 0x1c, 0x28, 0x1c, - 0x04, 0xf0, 0x7a, 0xf9, 0x3c, 0x00, 0x08, 0xf7, - 0x00, 0x00, 0x70, 0xbd, 0x00, 0x00, 0x00, 0x80, - 0x07, 0x00, 0x70, 0xb5, 0x00, 0x24, 0x13, 0x29, - 0x11, 0xd8, 0x00, 0x28, 0x01, 0xd1, 0x08, 0x4e, - 0x08, 0x25, 0x01, 0x28, 0x01, 0xd1, 0x07, 0x4e, - 0x09, 0x25, 0x00, 0xf0, 0x78, 0xfa, 0x00, 0x28, - 0x05, 0xd0, 0x02, 0x1c, 0x31, 0x1c, 0x28, 0x1c, - 0xff, 0xf7, 0xc3, 0xff, 0x01, 0x24, 0x20, 0x1c, - 0x70, 0xbd, 0xf8, 0xff, 0x07, 0x00, 0x3c, 0x00, - 0x44, 0xf7, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0x01, 0x22, 0xd2, 0x02, 0x80, 0xb5, 0x00, 0x21, - 0x07, 0x20, 0x04, 0xf0, 0x53, 0xf9, 0x80, 0xbd, - 0x0f, 0x22, 0x12, 0x04, 0x07, 0x21, 0x49, 0x04, - 0x80, 0xb5, 0x09, 0x20, 0x04, 0xf0, 0x4a, 0xf9, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, - 0x04, 0x20, 0x04, 0xf0, 0x1b, 0xfc, 0x40, 0x21, - 0x00, 0x20, 0x04, 0xf0, 0x17, 0xfc, 0x04, 0x49, - 0x3c, 0x00, 0x80, 0xf7, 0x00, 0x00, 0x00, 0x20, - 0x88, 0x60, 0x02, 0x48, 0x09, 0x69, 0x20, 0x30, - 0xff, 0xf7, 0x09, 0xfe, 0x80, 0xbd, 0x64, 0x73, - 0x01, 0x00, 0xb0, 0xb5, 0x60, 0x21, 0x00, 0x20, - 0x04, 0xf0, 0x07, 0xfc, 0x11, 0x4d, 0x00, 0x24, - 0x00, 0x22, 0x04, 0x20, 0x29, 0x5d, 0x04, 0xf0, - 0x28, 0xf9, 0x0c, 0x20, 0x03, 0xf0, 0x9b, 0xfb, - 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, 0x05, 0x2c, - 0xf2, 0xd3, 0x3c, 0x00, 0xbc, 0xf7, 0x00, 0x00, - 0x0f, 0x22, 0x00, 0x21, 0x0a, 0x20, 0x04, 0xf0, - 0x1b, 0xf9, 0x61, 0x21, 0x00, 0x20, 0x04, 0xf0, - 0xef, 0xfb, 0x06, 0x49, 0x01, 0x20, 0x88, 0x60, - 0x04, 0x48, 0x09, 0x69, 0x20, 0x30, 0xff, 0xf7, - 0xcd, 0xfd, 0xff, 0x20, 0x2d, 0x30, 0xb0, 0xbd, - 0xa8, 0x58, 0x01, 0x00, 0x64, 0x73, 0x01, 0x00, - 0xf8, 0xb5, 0x06, 0x1c, 0x12, 0x48, 0xc6, 0x70, - 0x01, 0x20, 0xff, 0xf7, 0x3c, 0x00, 0xf8, 0xf7, - 0x00, 0x00, 0xfd, 0xfb, 0x01, 0x27, 0xbf, 0x02, - 0x04, 0x1c, 0xb8, 0x43, 0x01, 0x1c, 0x01, 0x20, - 0x04, 0xf0, 0xd1, 0xfb, 0x03, 0x20, 0xff, 0xf7, - 0xf2, 0xfb, 0x05, 0x1c, 0xb8, 0x43, 0x01, 0x1c, - 0x03, 0x20, 0x04, 0xf0, 0xc8, 0xfb, 0x30, 0x1c, - 0x00, 0xf0, 0x9f, 0xf9, 0x00, 0xf0, 0x57, 0xf8, - 0x21, 0x1c, 0x01, 0x20, 0x04, 0xf0, 0xbf, 0xfb, - 0x29, 0x1c, 0x03, 0x20, 0x04, 0xf0, 0x3c, 0x00, - 0x34, 0xf8, 0x00, 0x00, 0xbb, 0xfb, 0x00, 0x20, - 0xf8, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x22, 0x40, 0x21, 0x00, 0x20, - 0x04, 0xf0, 0xd8, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x01, 0x24, 0x09, 0x20, - 0xff, 0xf7, 0xcc, 0xfb, 0x0f, 0x21, 0x09, 0x04, - 0x88, 0x43, 0x03, 0x21, 0x89, 0x04, 0xe2, 0x04, - 0x05, 0x2d, 0x12, 0x4e, 0x20, 0xd2, 0x02, 0xa3, - 0x3c, 0x00, 0x70, 0xf8, 0x00, 0x00, 0x5b, 0x5d, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x06, 0x09, - 0x0c, 0x10, 0x03, 0x00, 0x03, 0x21, 0x09, 0x04, - 0x0c, 0xe0, 0x01, 0x21, 0x09, 0x04, 0x09, 0xe0, - 0x01, 0x21, 0x49, 0x04, 0x06, 0xe0, 0xf3, 0x68, - 0x04, 0x2b, 0x05, 0xd9, 0x02, 0xe0, 0xf3, 0x68, - 0x04, 0x2b, 0x01, 0xd8, 0x01, 0x43, 0x01, 0xe0, - 0x10, 0x43, 0x01, 0x1c, 0x09, 0x20, 0x04, 0xf0, - 0x80, 0xfb, 0x3c, 0x00, 0xac, 0xf8, 0x00, 0x00, - 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x24, 0xfb, 0xe7, - 0x64, 0x73, 0x01, 0x00, 0x01, 0x21, 0xc9, 0x05, - 0x00, 0x28, 0x80, 0xb5, 0x02, 0xd0, 0x0a, 0x1c, - 0x00, 0x21, 0x00, 0xe0, 0x00, 0x22, 0x04, 0x20, - 0x04, 0xf0, 0x96, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0xf0, 0xb5, 0x91, 0xb0, 0x00, 0x26, 0x40, 0x21, - 0x01, 0xa8, 0xf0, 0xf7, 0xdd, 0xfd, 0x2a, 0x4f, - 0xb8, 0x79, 0x01, 0x22, 0x3c, 0x00, 0xe8, 0xf8, - 0x00, 0x00, 0x52, 0x03, 0x00, 0x90, 0x00, 0x21, - 0x06, 0x20, 0x04, 0xf0, 0x84, 0xf8, 0x60, 0x21, - 0x00, 0x20, 0x04, 0xf0, 0x58, 0xfb, 0x61, 0x21, - 0x00, 0x20, 0x04, 0xf0, 0x54, 0xfb, 0x08, 0x20, - 0x03, 0xf0, 0xef, 0xfa, 0x00, 0x24, 0x0f, 0x20, - 0xff, 0xf7, 0x71, 0xfb, 0x40, 0x05, 0x05, 0x0f, - 0xa8, 0x00, 0x01, 0xa9, 0x09, 0x58, 0x01, 0xaa, - 0x01, 0x31, 0x01, 0x34, 0x0c, 0x2c, 0x3c, 0x00, - 0x24, 0xf9, 0x00, 0x00, 0x11, 0x50, 0xf1, 0xd3, - 0x00, 0x20, 0x81, 0x00, 0x01, 0xaa, 0x51, 0x58, - 0xb1, 0x42, 0x01, 0xd9, 0x0e, 0x1c, 0x05, 0x1c, - 0x01, 0x30, 0x10, 0x28, 0xf5, 0xd3, 0x06, 0x20, - 0xff, 0xf7, 0x58, 0xfb, 0x0f, 0x21, 0x49, 0x02, - 0x88, 0x43, 0x69, 0x02, 0x08, 0x43, 0x01, 0x21, - 0x49, 0x03, 0x01, 0x43, 0x06, 0x20, 0x04, 0xf0, - 0x29, 0xfb, 0x0d, 0x48, 0x84, 0x68, 0x64, 0x34, - 0x3c, 0x00, 0x60, 0xf9, 0x00, 0x00, 0x08, 0xe0, - 0x20, 0x1c, 0x03, 0xf0, 0x5a, 0xf9, 0x00, 0x28, - 0x03, 0xd0, 0x01, 0x21, 0x95, 0x20, 0xf1, 0xf7, - 0x98, 0xfc, 0x0f, 0x20, 0xff, 0xf7, 0x3d, 0xfb, - 0x00, 0x04, 0xf1, 0xd5, 0x87, 0x20, 0x03, 0xf0, - 0xb2, 0xfa, 0x00, 0x98, 0xb8, 0x71, 0x11, 0xb0, - 0xf0, 0xbd, 0x20, 0x10, 0x07, 0x00, 0x00, 0x01, - 0x07, 0x00, 0x10, 0xb5, 0x17, 0x4c, 0x61, 0x69, - 0x00, 0x29, 0x3c, 0x00, 0x9c, 0xf9, 0x00, 0x00, - 0x04, 0xd0, 0x0a, 0x21, 0x13, 0x20, 0x03, 0xf0, - 0x47, 0xfe, 0x10, 0xbd, 0x01, 0x1c, 0x12, 0x48, - 0x01, 0x29, 0x00, 0x78, 0x0c, 0xd0, 0x11, 0x29, - 0xf7, 0xd1, 0x05, 0x28, 0x03, 0xd1, 0x01, 0x21, - 0x13, 0x20, 0xf1, 0xf7, 0x71, 0xfc, 0x20, 0x78, - 0x07, 0x28, 0xee, 0xd1, 0x02, 0x21, 0x0a, 0xe0, - 0x05, 0x28, 0x07, 0xd0, 0x06, 0x28, 0x0a, 0xd0, - 0x07, 0x28, 0xf7, 0xd0, 0x3c, 0x00, 0xd8, 0xf9, - 0x00, 0x00, 0x08, 0x28, 0xe4, 0xd1, 0x00, 0x20, - 0x05, 0xe0, 0x01, 0x21, 0x13, 0x20, 0xf1, 0xf7, - 0x5e, 0xfc, 0x10, 0xbd, 0x01, 0x20, 0x02, 0xf0, - 0x6c, 0xfd, 0x10, 0xbd, 0x00, 0x00, 0x7c, 0x78, - 0x01, 0x00, 0x0d, 0x49, 0x80, 0xb5, 0x09, 0x78, - 0x03, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x0b, 0xd0, - 0x07, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x07, 0xd0, - 0x02, 0x29, 0x01, 0xd1, 0x00, 0x28, 0x3c, 0x00, - 0x14, 0xfa, 0x00, 0x00, 0x03, 0xd1, 0x05, 0x29, - 0x09, 0xd1, 0x00, 0x28, 0x07, 0xd0, 0x00, 0x20, - 0xfc, 0xf7, 0x28, 0xfd, 0x00, 0x22, 0x13, 0x21, - 0x11, 0x20, 0x03, 0xf0, 0xc1, 0xfe, 0x80, 0xbd, - 0x7c, 0x78, 0x01, 0x00, 0x80, 0xb5, 0x06, 0x22, - 0x08, 0x21, 0x00, 0x20, 0x03, 0xf0, 0xde, 0xff, - 0x80, 0xbd, 0x00, 0x00, 0x07, 0x48, 0x80, 0xb5, - 0x40, 0x69, 0x00, 0x28, 0x01, 0xd1, 0xf1, 0xf7, - 0x3c, 0x00, 0x50, 0xfa, 0x00, 0x00, 0x33, 0xff, - 0x05, 0x49, 0x05, 0x4a, 0x08, 0x68, 0x50, 0x61, - 0x48, 0x68, 0x90, 0x61, 0x01, 0x20, 0x80, 0xbd, - 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xb0, 0x58, - 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, 0x07, 0x48, - 0x80, 0xb5, 0x40, 0x69, 0x00, 0x28, 0x01, 0xd1, - 0xf1, 0xf7, 0x1d, 0xff, 0x05, 0x49, 0x05, 0x4a, - 0x08, 0x68, 0x90, 0x61, 0x48, 0x68, 0x50, 0x61, - 0x01, 0x20, 0x3c, 0x00, 0x8c, 0xfa, 0x00, 0x00, - 0x80, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, - 0xb0, 0x58, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x11, 0xb5, 0x00, 0xab, 0x59, 0x78, 0x14, 0x48, - 0x01, 0x23, 0xc0, 0x56, 0x00, 0x22, 0x09, 0x18, - 0x0b, 0x06, 0x1b, 0x16, 0x13, 0x21, 0x13, 0x2b, - 0x02, 0xdd, 0x00, 0xab, 0x59, 0x70, 0x07, 0xe0, - 0x00, 0x2b, 0x02, 0xda, 0x00, 0xab, 0x5a, 0x70, - 0x02, 0xe0, 0x1c, 0x1c, 0x3c, 0x00, 0xc8, 0xfa, - 0x00, 0x00, 0x00, 0xab, 0x5c, 0x70, 0x00, 0xab, - 0x1b, 0x78, 0x18, 0x18, 0x00, 0x06, 0x00, 0x16, - 0x13, 0x28, 0x02, 0xdd, 0x00, 0xab, 0x19, 0x70, - 0x06, 0xe0, 0x00, 0x28, 0x02, 0xda, 0x00, 0xab, - 0x1a, 0x70, 0x01, 0xe0, 0x00, 0xab, 0x18, 0x70, - 0x00, 0x98, 0x18, 0xbd, 0x00, 0x00, 0x64, 0x73, - 0x01, 0x00, 0x38, 0xb5, 0x0c, 0x1c, 0x15, 0x49, - 0x00, 0xab, 0x49, 0x68, 0x13, 0x25, 0x3c, 0x00, - 0x04, 0xfb, 0x00, 0x00, 0x00, 0x91, 0x59, 0x78, - 0x09, 0x18, 0x59, 0x70, 0x19, 0x78, 0x08, 0x18, - 0x18, 0x70, 0x19, 0x88, 0x10, 0x48, 0x02, 0x2c, - 0xc1, 0x80, 0x01, 0xd0, 0x00, 0x2c, 0x0b, 0xd1, - 0x00, 0xab, 0x18, 0x78, 0x13, 0x28, 0x00, 0xd9, - 0x1d, 0x70, 0x00, 0xab, 0x19, 0x78, 0x00, 0x20, - 0xff, 0xf7, 0xee, 0xfd, 0x02, 0x2c, 0x01, 0xd0, - 0x01, 0x2c, 0x09, 0xd1, 0x00, 0xab, 0x58, 0x78, - 0x3c, 0x00, 0x40, 0xfb, 0x00, 0x00, 0x13, 0x28, - 0x00, 0xd9, 0x5d, 0x70, 0x00, 0xab, 0x59, 0x78, - 0x01, 0x20, 0xff, 0xf7, 0xe0, 0xfd, 0x38, 0xbd, - 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xa0, 0x58, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0xb0, 0xb5, - 0x04, 0x1c, 0x0e, 0x28, 0x13, 0x4d, 0x04, 0xd0, - 0x12, 0x49, 0xa0, 0x00, 0x00, 0x19, 0x4d, 0x39, - 0x45, 0x18, 0x06, 0x20, 0xff, 0xf7, 0x3d, 0xfa, - 0x0f, 0x49, 0x3c, 0x00, 0x7c, 0xfb, 0x00, 0x00, - 0xe0, 0x22, 0x09, 0x19, 0x10, 0x39, 0xc9, 0x7b, - 0x90, 0x43, 0x49, 0x01, 0x11, 0x40, 0x01, 0x43, - 0x06, 0x20, 0x04, 0xf0, 0x0d, 0xfa, 0x29, 0x1c, - 0x05, 0x20, 0x09, 0x4a, 0x03, 0xf0, 0x30, 0xff, - 0x08, 0x48, 0x1f, 0x22, 0x00, 0x19, 0x10, 0x38, - 0xc0, 0x7b, 0xc1, 0x04, 0xd2, 0x04, 0x08, 0x20, - 0x03, 0xf0, 0x26, 0xff, 0xb0, 0xbd, 0x00, 0x00, - 0xb4, 0x09, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xfb, - 0x00, 0x00, 0x14, 0x45, 0x01, 0x00, 0xff, 0x0f, - 0x00, 0x00, 0xc0, 0x58, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x06, 0x49, 0x00, 0x28, - 0x01, 0xd1, 0x08, 0x68, 0x80, 0xbd, 0x01, 0x28, - 0x01, 0xd1, 0x48, 0x68, 0x80, 0xbd, 0xf1, 0xf7, - 0x90, 0xfb, 0x00, 0x20, 0x80, 0xbd, 0x7c, 0x73, - 0x01, 0x00, 0x01, 0x48, 0x40, 0x68, 0x70, 0x47, - 0x00, 0x00, 0xa0, 0x58, 0x01, 0x00, 0x3c, 0x00, - 0xf4, 0xfb, 0x00, 0x00, 0x04, 0x48, 0x01, 0x23, - 0x04, 0x49, 0xc0, 0x56, 0xc9, 0x56, 0x40, 0x18, - 0x00, 0x04, 0x00, 0x0c, 0x70, 0x47, 0x00, 0x00, - 0xa0, 0x58, 0x01, 0x00, 0xa2, 0x58, 0x01, 0x00, - 0x01, 0x48, 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, - 0x64, 0x73, 0x01, 0x00, 0xf8, 0xb5, 0x05, 0x1c, - 0x0e, 0x1c, 0x00, 0xf0, 0x55, 0xf9, 0x04, 0x1c, - 0x00, 0xf0, 0x58, 0xf9, 0x00, 0x28, 0x2c, 0xd0, - 0x3c, 0x00, 0x30, 0xfc, 0x00, 0x00, 0xb3, 0x00, - 0x60, 0x1e, 0x00, 0x2d, 0x1c, 0x4e, 0x19, 0x49, - 0x1a, 0x4a, 0x06, 0xd1, 0x0b, 0x25, 0x0e, 0x2c, - 0x00, 0xd1, 0x19, 0x4a, 0xd2, 0x58, 0x08, 0x56, - 0x08, 0xe0, 0x01, 0x2d, 0x1c, 0xd1, 0x9a, 0x18, - 0x04, 0x36, 0x08, 0x18, 0x08, 0x25, 0x0e, 0x23, - 0x12, 0x6d, 0xc0, 0x56, 0x07, 0x1c, 0x47, 0x43, - 0xfb, 0x00, 0xdf, 0x19, 0x12, 0x4b, 0x3f, 0x21, - 0x58, 0x43, 0x3c, 0x00, 0x6c, 0xfc, 0x00, 0x00, - 0x11, 0x4b, 0xa9, 0x40, 0x0c, 0x1c, 0x38, 0x18, - 0xc0, 0x18, 0x14, 0x40, 0xec, 0x40, 0xc0, 0x11, - 0x60, 0x43, 0x1b, 0x0a, 0xc0, 0x18, 0x80, 0x12, - 0x03, 0xd1, 0x01, 0x20, 0x04, 0xe0, 0x00, 0x20, - 0xf8, 0xbd, 0x3f, 0x28, 0x00, 0xdd, 0x3f, 0x20, - 0x30, 0x60, 0xa8, 0x40, 0x08, 0x40, 0x8a, 0x43, - 0x10, 0x43, 0xf5, 0xe7, 0xcc, 0x59, 0x01, 0x00, - 0xdc, 0x58, 0x01, 0x00, 0x3c, 0x00, 0xa8, 0xfc, - 0x00, 0x00, 0x7c, 0x73, 0x01, 0x00, 0x7c, 0x59, - 0x01, 0x00, 0x06, 0x06, 0x00, 0x00, 0x26, 0x00, - 0x02, 0x00, 0x03, 0x48, 0x08, 0xb5, 0xc0, 0x88, - 0x00, 0xab, 0x18, 0x80, 0x00, 0x98, 0x08, 0xbd, - 0x00, 0x00, 0xa0, 0x58, 0x01, 0x00, 0xb0, 0xb5, - 0x0b, 0x4d, 0x09, 0x4c, 0x0e, 0x20, 0x6c, 0x60, - 0xff, 0xf7, 0x8d, 0xf9, 0x09, 0x49, 0x02, 0x1c, - 0xc8, 0x60, 0x01, 0x06, 0x09, 0x0e, 0x3c, 0x00, - 0xe4, 0xfc, 0x00, 0x00, 0x13, 0x3a, 0x02, 0x2a, - 0x02, 0xd9, 0x17, 0x38, 0x04, 0x28, 0x00, 0xd8, - 0x00, 0x21, 0x08, 0x1c, 0x6c, 0x60, 0xb0, 0xbd, - 0x04, 0x18, 0x02, 0x00, 0x60, 0x00, 0x07, 0x00, - 0x64, 0x73, 0x01, 0x00, 0x0a, 0x48, 0x98, 0xb5, - 0x02, 0x78, 0x13, 0x21, 0x14, 0x2a, 0x00, 0xd3, - 0x01, 0x70, 0x42, 0x78, 0x14, 0x2a, 0x00, 0xd3, - 0x41, 0x70, 0x06, 0x4c, 0x60, 0x68, 0xff, 0xf7, - 0x3c, 0x00, 0x20, 0xfd, 0x00, 0x00, 0xbd, 0xfe, - 0x00, 0x90, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x80, - 0x00, 0xf0, 0x75, 0xff, 0x98, 0xbd, 0xa4, 0x58, - 0x01, 0x00, 0xa0, 0x58, 0x01, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x41, 0x78, 0x01, 0x20, 0xff, 0xf7, - 0xe6, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0xa6, 0x58, - 0x01, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x01, 0x78, - 0x00, 0x20, 0xff, 0xf7, 0xdc, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xfd, 0x00, 0x00, - 0xa6, 0x58, 0x01, 0x00, 0xb0, 0xb5, 0x05, 0x4d, - 0x00, 0x24, 0x20, 0x1c, 0xff, 0xf7, 0x44, 0xf9, - 0x01, 0x34, 0x10, 0x2c, 0x01, 0xc5, 0xf8, 0xd3, - 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x44, 0x01, 0x00, - 0x04, 0x49, 0x80, 0xb5, 0x88, 0x70, 0x04, 0x49, - 0x80, 0x00, 0x09, 0x58, 0x07, 0x20, 0x04, 0xf0, - 0x0f, 0xf9, 0x80, 0xbd, 0x64, 0x73, 0x01, 0x00, - 0xd0, 0x58, 0x01, 0x00, 0x3c, 0x00, 0x98, 0xfd, - 0x00, 0x00, 0xb0, 0xb5, 0x3f, 0x24, 0x02, 0x1c, - 0x00, 0x2a, 0x01, 0xd1, 0x08, 0x20, 0x0b, 0x23, - 0x01, 0x2a, 0x01, 0xd1, 0x09, 0x20, 0x08, 0x23, - 0x25, 0x1c, 0x9d, 0x40, 0x00, 0x29, 0x00, 0xd1, - 0x01, 0x21, 0x3f, 0x29, 0x00, 0xd9, 0x21, 0x1c, - 0x99, 0x40, 0x0a, 0x1c, 0x29, 0x1c, 0xff, 0xf7, - 0x7c, 0xfc, 0xb0, 0xbd, 0x00, 0x00, 0x91, 0xb5, - 0x12, 0x49, 0x00, 0xab, 0x1a, 0x78, 0x3c, 0x00, - 0xd4, 0xfd, 0x00, 0x00, 0x08, 0x78, 0x11, 0x4c, - 0x80, 0x18, 0x00, 0x06, 0x00, 0x0e, 0x20, 0x70, - 0x49, 0x78, 0x5a, 0x78, 0x89, 0x18, 0x09, 0x06, - 0x09, 0x0e, 0x13, 0x22, 0x13, 0x28, 0x61, 0x70, - 0x00, 0xd9, 0x22, 0x70, 0x13, 0x29, 0x00, 0xd9, - 0x62, 0x70, 0x08, 0x49, 0x08, 0x48, 0x06, 0x39, - 0xc9, 0x88, 0x81, 0x80, 0x21, 0x78, 0x00, 0x20, - 0xff, 0xf7, 0x82, 0xfc, 0x61, 0x78, 0x01, 0x20, - 0x3c, 0x00, 0x10, 0xfe, 0x00, 0x00, 0xff, 0xf7, - 0x7e, 0xfc, 0x98, 0xbd, 0x00, 0x00, 0xa4, 0x58, - 0x01, 0x00, 0xa6, 0x58, 0x01, 0x00, 0x64, 0x73, - 0x01, 0x00, 0x70, 0xb5, 0x1d, 0x4d, 0x04, 0x1c, - 0x28, 0x78, 0x0e, 0x1c, 0x03, 0x28, 0x03, 0xd1, - 0x02, 0x21, 0x11, 0x20, 0xf1, 0xf7, 0x35, 0xfa, - 0x20, 0x1c, 0x00, 0xf0, 0x4e, 0xf8, 0x00, 0x28, - 0x25, 0xd0, 0x28, 0x78, 0x01, 0x28, 0x0a, 0xd1, - 0x68, 0x68, 0x3c, 0x00, 0x4c, 0xfe, 0x00, 0x00, - 0x00, 0x28, 0x07, 0xd0, 0x01, 0x21, 0x11, 0x20, - 0x03, 0xf0, 0xee, 0xfb, 0x01, 0x20, 0x69, 0x68, - 0xf0, 0xf7, 0xbd, 0xfa, 0x6c, 0x70, 0x6e, 0x60, - 0x20, 0x1c, 0xff, 0xf7, 0xc1, 0xfc, 0x04, 0x1c, - 0x00, 0xf0, 0xd4, 0xfe, 0x00, 0x2c, 0x02, 0xd0, - 0x68, 0x68, 0x00, 0x28, 0x02, 0xd1, 0xf6, 0xf7, - 0xd9, 0xf8, 0x70, 0xbd, 0x01, 0x20, 0x28, 0x70, - 0x01, 0x22, 0x21, 0x1c, 0x3c, 0x00, 0x88, 0xfe, - 0x00, 0x00, 0x11, 0x20, 0x03, 0xf0, 0x9f, 0xfb, - 0x70, 0xbd, 0x02, 0x21, 0x11, 0x20, 0xf1, 0xf7, - 0x06, 0xfa, 0x70, 0xbd, 0x00, 0x00, 0x9c, 0x73, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x28, 0x05, 0xd1, - 0x00, 0x29, 0x04, 0xd0, 0x01, 0x29, 0x01, 0xd1, - 0xf6, 0xf7, 0xbf, 0xf8, 0x80, 0xbd, 0x05, 0x49, - 0x08, 0x78, 0x03, 0x28, 0x02, 0xd0, 0x00, 0x20, - 0x08, 0x70, 0x80, 0xbd, 0x03, 0x21, 0x3c, 0x00, - 0xc4, 0xfe, 0x00, 0x00, 0x11, 0x20, 0xf1, 0xf7, - 0xed, 0xf9, 0x80, 0xbd, 0x9c, 0x73, 0x01, 0x00, - 0x01, 0x48, 0x40, 0x78, 0x70, 0x47, 0x00, 0x00, - 0x9c, 0x73, 0x01, 0x00, 0x01, 0x1c, 0x01, 0x39, - 0x01, 0x20, 0x0e, 0x29, 0x00, 0xd3, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, 0x13, 0x4c, - 0x20, 0x78, 0x01, 0x28, 0x0e, 0xd1, 0x60, 0x68, - 0x00, 0x28, 0x0d, 0xd0, 0x01, 0x21, 0x11, 0x20, - 0x3c, 0x00, 0x00, 0xff, 0x00, 0x00, 0x03, 0xf0, - 0x98, 0xfb, 0x01, 0x20, 0x61, 0x68, 0xf0, 0xf7, - 0x67, 0xfa, 0x00, 0x20, 0x60, 0x60, 0x20, 0x70, - 0x01, 0xe0, 0x03, 0x28, 0x0e, 0xd0, 0x00, 0x21, - 0x11, 0x20, 0x03, 0xf0, 0x8a, 0xfb, 0xff, 0xf7, - 0x24, 0xfc, 0xff, 0xf7, 0xc0, 0xfb, 0x05, 0x49, - 0x08, 0x7b, 0x40, 0x08, 0x40, 0x00, 0x08, 0x73, - 0x03, 0x20, 0x20, 0x70, 0x01, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xff, 0x00, 0x00, - 0x9c, 0x73, 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, - 0x10, 0xb5, 0x0d, 0x4c, 0x20, 0x78, 0x03, 0x28, - 0x13, 0xd1, 0x00, 0x20, 0x20, 0x70, 0x0b, 0x48, - 0x01, 0x7b, 0x01, 0x22, 0x11, 0x43, 0x01, 0x73, - 0xff, 0xf7, 0x70, 0xfc, 0xff, 0xf7, 0x18, 0xfc, - 0x00, 0x28, 0x06, 0xd0, 0x02, 0x21, 0x21, 0x70, - 0x01, 0x1c, 0x00, 0x22, 0x11, 0x20, 0x03, 0xf0, - 0x2b, 0xfb, 0x01, 0x20, 0x3c, 0x00, 0x78, 0xff, - 0x00, 0x00, 0x10, 0xbd, 0x00, 0x00, 0x9c, 0x73, - 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, 0x80, 0xb5, - 0x05, 0x49, 0x00, 0x28, 0x04, 0xd0, 0x00, 0x20, - 0x08, 0x60, 0x03, 0xf0, 0x5a, 0xfa, 0x80, 0xbd, - 0x01, 0x20, 0x08, 0x60, 0x80, 0xbd, 0x80, 0x5a, - 0x01, 0x00, 0xfe, 0xb5, 0x05, 0x1c, 0x80, 0x35, - 0x04, 0x1c, 0xa8, 0x68, 0x29, 0x79, 0x06, 0x68, - 0x20, 0x1c, 0xa0, 0x30, 0x02, 0x29, 0x3c, 0x00, - 0xb4, 0xff, 0x00, 0x00, 0x1c, 0xd1, 0x69, 0x79, - 0x08, 0x29, 0x01, 0xd0, 0x0c, 0x29, 0x17, 0xd1, - 0x01, 0x21, 0x61, 0x62, 0xa9, 0x68, 0x09, 0x68, - 0x09, 0x8b, 0x01, 0x82, 0xa9, 0x69, 0x01, 0x91, - 0x00, 0x8a, 0xc0, 0x06, 0x05, 0xd5, 0x60, 0x68, - 0x00, 0x88, 0x40, 0x05, 0x01, 0xd4, 0x01, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x02, 0x90, 0x05, 0x20, - 0x01, 0xa9, 0x02, 0xf0, 0xb7, 0xf9, 0x02, 0xe0, - 0x3c, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x21, - 0x61, 0x62, 0x01, 0x82, 0xa9, 0x68, 0x1a, 0x23, - 0x0a, 0x89, 0x67, 0x6a, 0x18, 0x1c, 0x00, 0x2f, - 0x00, 0xd1, 0x18, 0x20, 0x10, 0x1a, 0x08, 0x81, - 0xa8, 0x68, 0x01, 0x68, 0x62, 0x6a, 0x00, 0x2a, - 0x00, 0xd1, 0x18, 0x23, 0xc9, 0x18, 0x01, 0x60, - 0xa8, 0x68, 0x41, 0xc4, 0x30, 0x88, 0x08, 0x3c, - 0x40, 0x04, 0x03, 0xd5, 0x20, 0x1c, 0xf7, 0xf7, - 0xbc, 0xf9, 0x3c, 0x00, 0x2c, 0x00, 0x01, 0x00, - 0xfe, 0xbd, 0x00, 0x21, 0xe1, 0x61, 0x30, 0x79, - 0xc0, 0x07, 0x03, 0xd4, 0x20, 0x1c, 0xf7, 0xf7, - 0x91, 0xfe, 0xf5, 0xe7, 0x20, 0x1c, 0xf7, 0xf7, - 0x43, 0xff, 0xf1, 0xe7, 0xf7, 0xb5, 0x05, 0x1c, - 0x0a, 0x30, 0x06, 0x1c, 0xf5, 0xf7, 0xa4, 0xfa, - 0x14, 0x4f, 0x04, 0x1c, 0x39, 0x88, 0xf2, 0xf7, - 0x83, 0xfe, 0x32, 0x88, 0x78, 0x68, 0x02, 0x80, - 0x72, 0x88, 0x02, 0x30, 0x3c, 0x00, 0x68, 0x00, - 0x01, 0x00, 0x02, 0x80, 0xb1, 0x88, 0x41, 0x80, - 0x69, 0x88, 0x02, 0x9a, 0x20, 0x1c, 0xfa, 0xf7, - 0xce, 0xfe, 0x0b, 0x4d, 0x08, 0x35, 0x68, 0x80, - 0xfb, 0xf7, 0x2b, 0xfe, 0x01, 0x21, 0x09, 0x03, - 0x00, 0x28, 0x28, 0x88, 0x01, 0xd0, 0x88, 0x43, - 0x00, 0xe0, 0x08, 0x43, 0x28, 0x80, 0x04, 0x48, - 0x00, 0x22, 0x00, 0x21, 0x14, 0x30, 0xf2, 0xf7, - 0x32, 0xfe, 0x20, 0x1c, 0xfc, 0xf7, 0x3c, 0x00, - 0xa4, 0x00, 0x01, 0x00, 0x85, 0xfa, 0xfe, 0xbd, - 0x24, 0x7b, 0x01, 0x00, 0x10, 0xb5, 0x13, 0x4c, - 0x11, 0x49, 0x20, 0x1c, 0xff, 0x30, 0x69, 0x30, - 0x0e, 0xc9, 0x0e, 0xc0, 0x20, 0x1c, 0xff, 0x30, - 0x24, 0x22, 0x75, 0x30, 0x0e, 0x49, 0xf0, 0xf7, - 0x17, 0xfa, 0x20, 0x1c, 0xff, 0x30, 0x3c, 0x22, - 0x99, 0x30, 0x0c, 0x49, 0xf0, 0xf7, 0x6c, 0xfa, - 0x20, 0x1c, 0xff, 0x30, 0x10, 0x22, 0xd5, 0x30, - 0x3c, 0x00, 0xe0, 0x00, 0x01, 0x00, 0x09, 0x49, - 0xf0, 0xf7, 0x09, 0xfa, 0x20, 0x1c, 0xff, 0x30, - 0x28, 0x22, 0xe5, 0x30, 0x07, 0x49, 0xf0, 0xf7, - 0x5e, 0xfa, 0x10, 0xbd, 0x00, 0x00, 0x00, 0x80, - 0x07, 0x00, 0x40, 0x63, 0x01, 0x00, 0x0c, 0x80, - 0x07, 0x00, 0x30, 0x80, 0x07, 0x00, 0x80, 0x80, - 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0xb0, 0xb5, - 0x00, 0x28, 0x3f, 0xd0, 0x21, 0x48, 0x41, 0x68, - 0x21, 0x4c, 0x3c, 0x00, 0x1c, 0x01, 0x01, 0x00, - 0x61, 0x60, 0xc1, 0x68, 0xe1, 0x60, 0x01, 0x69, - 0x21, 0x61, 0x80, 0x6a, 0xa0, 0x62, 0x1e, 0x49, - 0x1c, 0x48, 0x09, 0x68, 0x14, 0x38, 0x41, 0x64, - 0x1c, 0x48, 0x25, 0x1c, 0x3c, 0x35, 0x0f, 0xc8, - 0x0f, 0xc5, 0x20, 0x1c, 0x80, 0x22, 0x4c, 0x30, - 0x19, 0x49, 0xf0, 0xf7, 0x33, 0xfa, 0x14, 0x22, - 0x20, 0x1c, 0xcc, 0x30, 0x17, 0x49, 0xf0, 0xf7, - 0x2d, 0xfa, 0x38, 0x22, 0x3c, 0x00, 0x58, 0x01, - 0x01, 0x00, 0x20, 0x1c, 0xe0, 0x30, 0x15, 0x49, - 0xf0, 0xf7, 0x27, 0xfa, 0x20, 0x1c, 0xff, 0x30, - 0x50, 0x22, 0x19, 0x30, 0x13, 0x49, 0xf0, 0xf7, - 0x20, 0xfa, 0x83, 0x20, 0x80, 0x00, 0x14, 0x22, - 0x20, 0x18, 0x10, 0x49, 0xf0, 0xf7, 0x19, 0xfa, - 0x11, 0x20, 0x40, 0x01, 0x84, 0x22, 0x20, 0x18, - 0x0e, 0x49, 0xf0, 0xf7, 0x12, 0xfa, 0xff, 0xf7, - 0x8e, 0xff, 0xf8, 0xf7, 0x94, 0xfb, 0x3c, 0x00, - 0x94, 0x01, 0x01, 0x00, 0xb0, 0xbd, 0xff, 0xf7, - 0x89, 0xff, 0xb0, 0xbd, 0x00, 0x10, 0x07, 0x00, - 0x40, 0x63, 0x01, 0x00, 0x08, 0x20, 0x07, 0x00, - 0x40, 0x20, 0x07, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x00, 0x40, 0x07, 0x00, 0x00, 0x50, 0x07, 0x00, - 0x00, 0x60, 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x00, 0x90, 0x07, 0x00, 0x0c, 0x49, 0x80, 0xb5, - 0x01, 0x20, 0x48, 0x60, 0x0a, 0x48, 0x14, 0x38, - 0x3c, 0x00, 0xd0, 0x01, 0x01, 0x00, 0x00, 0x78, - 0x01, 0x28, 0x04, 0xd0, 0x08, 0x48, 0x94, 0x38, - 0x40, 0x6f, 0x00, 0x28, 0x03, 0xd0, 0x00, 0x20, - 0x00, 0xf0, 0x1f, 0xf8, 0x80, 0xbd, 0x08, 0x68, - 0x00, 0x28, 0xfb, 0xd0, 0x03, 0x48, 0xf2, 0xf7, - 0x7a, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x98, 0x66, - 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x80, 0xb5, - 0x00, 0x28, 0x09, 0xd1, 0xf2, 0x21, 0x0f, 0x20, - 0x03, 0xf0, 0x3c, 0x00, 0x0c, 0x02, 0x01, 0x00, - 0x13, 0xfa, 0x00, 0x22, 0x0f, 0x21, 0xf1, 0x20, - 0x03, 0xf0, 0xcc, 0xfa, 0x80, 0xbd, 0x01, 0x20, - 0xf8, 0xf7, 0x6a, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x03, 0x20, 0x00, 0xf0, - 0xc9, 0xf9, 0x00, 0x21, 0x0f, 0x20, 0x03, 0xf0, - 0xff, 0xf9, 0xff, 0xf7, 0x65, 0xf8, 0x0b, 0x49, - 0x00, 0x20, 0x48, 0x74, 0xfb, 0xf7, 0xe6, 0xfa, - 0x09, 0x48, 0x00, 0x68, 0x3c, 0x00, 0x48, 0x02, - 0x01, 0x00, 0x00, 0x28, 0x03, 0xdc, 0x02, 0x21, - 0x40, 0x42, 0xff, 0xf7, 0x52, 0xfc, 0x04, 0x48, - 0x14, 0x30, 0x00, 0x68, 0x00, 0x28, 0x02, 0xd0, - 0x20, 0x1c, 0xf2, 0xf7, 0x42, 0xfe, 0x10, 0xbd, - 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, 0xd4, 0x7e, - 0x01, 0x00, 0x06, 0x49, 0x80, 0xb5, 0x09, 0x78, - 0x04, 0x29, 0x05, 0xd0, 0x05, 0x29, 0x03, 0xd0, - 0x06, 0x29, 0x01, 0xd0, 0x07, 0x29, 0x3c, 0x00, - 0x84, 0x02, 0x01, 0x00, 0x01, 0xd1, 0xfe, 0xf7, - 0xbd, 0xfd, 0x80, 0xbd, 0x74, 0x66, 0x01, 0x00, - 0x10, 0xb5, 0x09, 0x4c, 0xe0, 0x68, 0x00, 0x28, - 0x0b, 0xd1, 0x07, 0x48, 0x2c, 0x38, 0x00, 0x8a, - 0xc0, 0x07, 0x04, 0xd5, 0x00, 0x21, 0x01, 0x20, - 0x62, 0x68, 0xf9, 0xf7, 0xc9, 0xfa, 0x01, 0x20, - 0xe0, 0x60, 0x01, 0x20, 0x10, 0xbd, 0x00, 0x00, - 0xf4, 0x6e, 0x01, 0x00, 0x8c, 0xb5, 0x02, 0x1c, - 0x3c, 0x00, 0xc0, 0x02, 0x01, 0x00, 0x08, 0x1c, - 0x11, 0x1c, 0xfd, 0xf7, 0x28, 0xff, 0x01, 0x90, - 0x00, 0x28, 0x05, 0xd0, 0x17, 0x20, 0x00, 0xab, - 0x18, 0x80, 0x68, 0x46, 0xfd, 0xf7, 0xff, 0xf8, - 0x8c, 0xbd, 0xf1, 0xb5, 0x2e, 0x4c, 0xae, 0xb0, - 0x00, 0x25, 0x25, 0x63, 0x20, 0x69, 0x01, 0x28, - 0x03, 0xd1, 0x01, 0xa8, 0x01, 0xf0, 0xa1, 0xf8, - 0x4e, 0xe0, 0x01, 0x26, 0x28, 0x4f, 0x26, 0x70, - 0x50, 0x3f, 0x3c, 0x00, 0xfc, 0x02, 0x01, 0x00, - 0xb8, 0x69, 0xf8, 0xf7, 0x4f, 0xf8, 0x25, 0x49, - 0x2c, 0x39, 0x00, 0x28, 0x1d, 0xd0, 0xe0, 0x6a, - 0x01, 0x28, 0x1a, 0xd1, 0x08, 0x8a, 0x0f, 0x1c, - 0x80, 0x07, 0x04, 0xd5, 0x00, 0x21, 0x02, 0x20, - 0x62, 0x68, 0xf9, 0xf7, 0x8f, 0xfa, 0x38, 0x8a, - 0x00, 0x07, 0x07, 0xd5, 0xe0, 0x68, 0x01, 0x28, - 0x04, 0xd1, 0x00, 0x21, 0x08, 0x20, 0x62, 0x68, - 0xf9, 0xf7, 0x84, 0xfa, 0x3c, 0x00, 0x38, 0x03, - 0x01, 0x00, 0x00, 0x22, 0x18, 0x21, 0x82, 0x20, - 0x26, 0x63, 0x03, 0xf0, 0x36, 0xfa, 0x25, 0xe0, - 0x08, 0x8a, 0x0e, 0x1c, 0x80, 0x07, 0x04, 0xd5, - 0x00, 0x21, 0x02, 0x20, 0x62, 0x68, 0xf9, 0xf7, - 0x74, 0xfa, 0x30, 0x8a, 0x00, 0x07, 0x07, 0xd5, - 0xe0, 0x68, 0x01, 0x28, 0x04, 0xd1, 0x00, 0x21, - 0x08, 0x20, 0x62, 0x68, 0xf9, 0xf7, 0x69, 0xfa, - 0x30, 0x8a, 0x40, 0x07, 0x04, 0xd5, 0x3c, 0x00, - 0x74, 0x03, 0x01, 0x00, 0x00, 0x22, 0x00, 0x21, - 0x04, 0x20, 0xf9, 0xf7, 0x61, 0xfa, 0x2e, 0x98, - 0x01, 0x28, 0x04, 0xd0, 0x1e, 0x95, 0x09, 0x21, - 0x1b, 0xa8, 0xff, 0xf7, 0x97, 0xff, 0xe5, 0x62, - 0xbd, 0x61, 0xe5, 0x60, 0x2f, 0xb0, 0xf0, 0xbd, - 0xf4, 0x6e, 0x01, 0x00, 0x80, 0xb5, 0x07, 0x20, - 0xfe, 0xf7, 0xa0, 0xfe, 0x00, 0x21, 0x0f, 0x20, - 0x03, 0xf0, 0x44, 0xf9, 0x0c, 0x48, 0x01, 0x78, - 0x3c, 0x00, 0xb0, 0x03, 0x01, 0x00, 0x00, 0x29, - 0x0f, 0xd0, 0x02, 0x21, 0x01, 0x70, 0x88, 0x38, - 0x00, 0x78, 0x00, 0x28, 0x04, 0xd0, 0x07, 0x49, - 0x10, 0x31, 0x48, 0x7c, 0x01, 0x30, 0x48, 0x74, - 0xf2, 0x22, 0x0f, 0x20, 0x05, 0x49, 0x03, 0xf0, - 0xfc, 0xf8, 0x00, 0x22, 0x0f, 0x21, 0xf3, 0x20, - 0x03, 0xf0, 0xe9, 0xf9, 0x80, 0xbd, 0x74, 0x66, - 0x01, 0x00, 0x80, 0x84, 0x1e, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x3c, 0x00, 0xec, 0x03, 0x01, 0x00, - 0xf2, 0x21, 0x0f, 0x20, 0x03, 0xf0, 0x20, 0xf9, - 0x01, 0x2c, 0x0a, 0xd1, 0x08, 0x48, 0x08, 0x49, - 0x00, 0x68, 0x14, 0x39, 0x00, 0x28, 0x05, 0xd0, - 0xc8, 0x78, 0x02, 0x28, 0x02, 0xd1, 0xf7, 0xf7, - 0xaf, 0xfa, 0x10, 0xbd, 0x00, 0x20, 0x48, 0x70, - 0x05, 0x20, 0xfe, 0xf7, 0x65, 0xfe, 0x10, 0xbd, - 0x98, 0x66, 0x01, 0x00, 0xf8, 0xb5, 0x28, 0x4e, - 0x30, 0x21, 0x35, 0x1c, 0x3c, 0x00, 0x28, 0x04, - 0x01, 0x00, 0x60, 0x35, 0x28, 0x89, 0x89, 0x5d, - 0x88, 0x42, 0x03, 0xd1, 0x00, 0x20, 0xff, 0xf7, - 0xf6, 0xfe, 0xf8, 0xbd, 0x34, 0x1c, 0x70, 0x34, - 0x01, 0x21, 0x21, 0x70, 0x41, 0x18, 0x80, 0x19, - 0x30, 0x30, 0x29, 0x81, 0x40, 0x78, 0x1d, 0x4f, - 0x18, 0x3f, 0x38, 0x70, 0x00, 0x28, 0x08, 0xd0, - 0x00, 0x21, 0xfb, 0xf7, 0xc2, 0xf9, 0x00, 0x28, - 0x07, 0xd1, 0x20, 0x78, 0xff, 0xf7, 0x3c, 0x00, - 0x64, 0x04, 0x01, 0x00, 0x9b, 0xff, 0xe7, 0xe7, - 0x01, 0x21, 0x0f, 0x20, 0xf0, 0xf7, 0x1a, 0xff, - 0x14, 0x48, 0x01, 0x21, 0x80, 0x30, 0x81, 0x70, - 0x38, 0x69, 0xfb, 0xf7, 0x55, 0xfa, 0x20, 0x73, - 0x00, 0x21, 0x0f, 0x20, 0x03, 0xf0, 0xd6, 0xf8, - 0x70, 0x7a, 0x01, 0x28, 0x0e, 0xd1, 0x0e, 0x48, - 0x00, 0x68, 0x00, 0x28, 0x04, 0xd0, 0x38, 0x78, - 0x02, 0xf0, 0xda, 0xfa, 0x00, 0x28, 0x05, 0xd0, - 0x3c, 0x00, 0xa0, 0x04, 0x01, 0x00, 0x30, 0x7f, - 0x60, 0x73, 0x03, 0x20, 0x20, 0x70, 0x71, 0x89, - 0x05, 0xe0, 0x05, 0x20, 0x20, 0x70, 0xa8, 0x88, - 0xfa, 0xf7, 0x3b, 0xfb, 0x01, 0x1c, 0x00, 0x22, - 0x0f, 0x20, 0x03, 0xf0, 0x86, 0xf8, 0xba, 0xe7, - 0x00, 0x00, 0x04, 0x66, 0x01, 0x00, 0xe4, 0x62, - 0x01, 0x00, 0x70, 0xb5, 0x04, 0x1c, 0x02, 0xf0, - 0x6c, 0xfc, 0x36, 0x4b, 0x19, 0x1c, 0xa0, 0x31, - 0x0a, 0x78, 0x3c, 0x00, 0xdc, 0x04, 0x01, 0x00, - 0x10, 0x2a, 0x02, 0xd2, 0x0a, 0x79, 0x10, 0x2a, - 0x01, 0xd3, 0x01, 0x25, 0x00, 0xe0, 0x00, 0x25, - 0x30, 0x4e, 0xca, 0x79, 0x80, 0x36, 0x01, 0x2c, - 0x12, 0xd0, 0x00, 0x25, 0x02, 0x2c, 0x2e, 0xd0, - 0x04, 0x2c, 0x3c, 0xd1, 0x5c, 0x6b, 0x00, 0x2c, - 0x39, 0xd1, 0x9c, 0x6f, 0x00, 0x1b, 0x2a, 0x4c, - 0xa0, 0x42, 0x34, 0xd9, 0xb2, 0x68, 0x98, 0x6a, - 0x82, 0x42, 0x31, 0xd0, 0x3c, 0x00, 0x18, 0x05, - 0x01, 0x00, 0x4d, 0x72, 0x34, 0xe0, 0xb0, 0x68, - 0x9c, 0x6a, 0x02, 0x22, 0xa0, 0x42, 0x21, 0xd1, - 0x58, 0x6b, 0x00, 0x28, 0x1e, 0xd1, 0x00, 0x2d, - 0x1c, 0xd1, 0x48, 0x7a, 0x19, 0x28, 0x20, 0xd0, - 0x34, 0x68, 0x98, 0x6f, 0x64, 0x00, 0x00, 0x1b, - 0x74, 0x68, 0x00, 0x19, 0xff, 0x30, 0x1c, 0x4c, - 0x39, 0x30, 0xa0, 0x42, 0x16, 0xd2, 0x48, 0x79, - 0x8c, 0x79, 0x00, 0x19, 0x30, 0x28, 0x3c, 0x00, - 0x54, 0x05, 0x01, 0x00, 0x11, 0xd3, 0x10, 0x22, - 0x0f, 0xe0, 0x5c, 0x6b, 0x01, 0x2c, 0x06, 0xd1, - 0xb0, 0x68, 0x9a, 0x6a, 0x90, 0x42, 0x00, 0xd1, - 0x4d, 0x72, 0x00, 0x22, 0x05, 0xe0, 0x9c, 0x6f, - 0x00, 0x1b, 0x12, 0x4c, 0xa0, 0x42, 0x00, 0xd3, - 0x20, 0x22, 0x06, 0xe0, 0x4a, 0x7a, 0x19, 0x2a, - 0x01, 0xd2, 0x01, 0x32, 0x4a, 0x72, 0x20, 0x22, - 0xb0, 0x60, 0x30, 0x68, 0x9b, 0x6f, 0x98, 0x42, - 0x3c, 0x00, 0x90, 0x05, 0x01, 0x00, 0x04, 0xd1, - 0x00, 0x2a, 0x00, 0xd1, 0x48, 0x79, 0x4a, 0x71, - 0x06, 0xe0, 0x10, 0x2a, 0x04, 0xd3, 0x70, 0x60, - 0x33, 0x60, 0x48, 0x79, 0x88, 0x71, 0xf6, 0xe7, - 0xca, 0x71, 0x70, 0xbd, 0x00, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0xa3, 0x04, 0x00, 0x00, 0x71, 0x02, - 0x00, 0x00, 0x35, 0x0c, 0x00, 0x00, 0x05, 0x48, - 0x80, 0xb5, 0x81, 0x7b, 0x00, 0x29, 0x05, 0xd0, - 0x00, 0x21, 0x3c, 0x00, 0xcc, 0x05, 0x01, 0x00, - 0x81, 0x73, 0x03, 0x49, 0x0f, 0x20, 0x01, 0xf0, - 0x0f, 0xff, 0x80, 0xbd, 0x74, 0x66, 0x01, 0x00, - 0xe9, 0x03, 0x01, 0x00, 0xf8, 0xb5, 0x04, 0x1c, - 0x02, 0xf0, 0xe2, 0xfb, 0x05, 0x1c, 0x38, 0x4e, - 0x20, 0x1c, 0x37, 0x49, 0x34, 0x1c, 0xa0, 0x34, - 0x10, 0x22, 0x44, 0x39, 0x01, 0x28, 0x2c, 0xd0, - 0x04, 0x28, 0x4e, 0xd1, 0x37, 0x1c, 0x74, 0x36, - 0x09, 0xce, 0x26, 0x78, 0x3c, 0x00, 0x08, 0x06, - 0x01, 0x00, 0xc0, 0x1a, 0x20, 0x2e, 0x04, 0xd1, - 0x30, 0x4e, 0xb0, 0x42, 0x01, 0xd9, 0x00, 0x26, - 0x4e, 0x61, 0x3e, 0x1c, 0x3f, 0x6c, 0x00, 0x2f, - 0x48, 0xd1, 0x77, 0x6c, 0x00, 0x2f, 0x45, 0xd1, - 0xb7, 0x6a, 0x00, 0x2f, 0x3d, 0xd0, 0x77, 0x6b, - 0x00, 0x2f, 0x3a, 0xd0, 0x27, 0x4f, 0xb8, 0x42, - 0x37, 0xd2, 0x60, 0x78, 0x10, 0x28, 0x06, 0xd3, - 0xf0, 0x6f, 0x18, 0x1a, 0x24, 0x4b, 0x3c, 0x00, - 0x44, 0x06, 0x01, 0x00, 0x98, 0x42, 0x01, 0xd2, - 0xe2, 0x70, 0xf5, 0x66, 0x48, 0x69, 0x06, 0x28, - 0x2f, 0xd2, 0x01, 0x30, 0x2c, 0xe0, 0x20, 0x78, - 0x20, 0x28, 0x01, 0xd1, 0x06, 0x23, 0x4b, 0x61, - 0x02, 0x23, 0x23, 0x71, 0xb3, 0x6a, 0x00, 0x2b, - 0x19, 0xd0, 0x49, 0x69, 0x03, 0x29, 0x16, 0xd9, - 0x71, 0x6b, 0x73, 0x6d, 0x59, 0x40, 0x12, 0xd0, - 0xe1, 0x78, 0x10, 0x29, 0x10, 0xd3, 0x61, 0x78, - 0x3c, 0x00, 0x80, 0x06, 0x01, 0x00, 0x33, 0x1c, - 0x10, 0x29, 0x0c, 0xd3, 0xd9, 0x6f, 0x69, 0x1a, - 0x13, 0x4d, 0xa9, 0x42, 0x07, 0xd2, 0x58, 0x6c, - 0x00, 0x28, 0x02, 0xd0, 0x98, 0x6c, 0x00, 0x28, - 0x00, 0xd1, 0x22, 0x71, 0xf8, 0xbd, 0x02, 0x28, - 0xfc, 0xd1, 0x22, 0x70, 0xfa, 0xe7, 0x48, 0x69, - 0x00, 0x28, 0x01, 0xd0, 0x01, 0x38, 0x48, 0x61, - 0x0a, 0x49, 0xf0, 0x6e, 0x40, 0x18, 0x02, 0xf0, - 0xb0, 0xfa, 0x3c, 0x00, 0xbc, 0x06, 0x01, 0x00, - 0x00, 0x28, 0xee, 0xd0, 0x01, 0x20, 0xe0, 0x70, - 0x06, 0x48, 0x28, 0x18, 0xf0, 0x66, 0xe8, 0xe7, - 0xa4, 0x6c, 0x01, 0x00, 0xe2, 0x04, 0x00, 0x00, - 0x1a, 0x06, 0x00, 0x00, 0x53, 0x07, 0x00, 0x00, - 0x00, 0x2d, 0x31, 0x01, 0x00, 0x5a, 0x62, 0x02, - 0x80, 0xb5, 0x41, 0x68, 0x09, 0x79, 0xc9, 0x07, - 0x13, 0xd5, 0xc1, 0x69, 0x00, 0x29, 0x0d, 0xd0, - 0x89, 0x79, 0x02, 0x29, 0x3c, 0x00, 0xf8, 0x06, - 0x01, 0x00, 0x0a, 0xd1, 0x08, 0x21, 0x01, 0x86, - 0x01, 0x1c, 0x38, 0x31, 0x81, 0x62, 0x02, 0x1c, - 0x06, 0x48, 0x04, 0x49, 0xf9, 0xf7, 0xfd, 0xfc, - 0x80, 0xbd, 0xf7, 0xf7, 0xdc, 0xfb, 0x80, 0xbd, - 0xf7, 0xf7, 0x23, 0xfb, 0x80, 0xbd, 0xb9, 0x71, - 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x10, 0xb5, - 0x00, 0x24, 0x00, 0x28, 0x03, 0xd0, 0x02, 0xf0, - 0xe8, 0xfe, 0x00, 0x28, 0x17, 0xd0, 0x3c, 0x00, - 0x34, 0x07, 0x01, 0x00, 0x0c, 0x4c, 0x01, 0x20, - 0xa0, 0x72, 0x20, 0x68, 0x00, 0x21, 0x41, 0x62, - 0x0a, 0x49, 0x02, 0x68, 0xc9, 0x78, 0x60, 0x32, - 0x91, 0x71, 0x21, 0x89, 0x01, 0x31, 0x21, 0x81, - 0x00, 0x68, 0x40, 0x30, 0x81, 0x83, 0xfb, 0xf7, - 0x31, 0xfc, 0x20, 0x68, 0x00, 0x68, 0xfc, 0xf7, - 0xa1, 0xf9, 0x01, 0x24, 0x20, 0x1c, 0x10, 0xbd, - 0x14, 0x7a, 0x01, 0x00, 0x0e, 0x61, 0x01, 0x00, - 0x3c, 0x00, 0x70, 0x07, 0x01, 0x00, 0x7f, 0xb5, - 0x06, 0x1c, 0x1e, 0x48, 0x1d, 0x1c, 0x43, 0x88, - 0x02, 0x88, 0x1c, 0x21, 0x00, 0x20, 0x90, 0xb0, - 0xf0, 0xf7, 0x45, 0xff, 0x03, 0x90, 0x04, 0x68, - 0xff, 0x21, 0x01, 0x31, 0x21, 0x80, 0x08, 0x20, - 0x60, 0x80, 0x06, 0x20, 0x20, 0x71, 0x04, 0x20, - 0x60, 0x71, 0xc0, 0x01, 0x00, 0x2d, 0x00, 0xd1, - 0x08, 0x1c, 0xe0, 0x80, 0x01, 0xa8, 0x02, 0x30, - 0x31, 0x1c, 0x3c, 0x00, 0xac, 0x07, 0x01, 0x00, - 0x05, 0x1c, 0xfa, 0xf7, 0x5f, 0xfa, 0x10, 0x49, - 0x68, 0x46, 0xfa, 0xf7, 0x5b, 0xfa, 0x20, 0x1c, - 0x08, 0x30, 0x69, 0x46, 0xfa, 0xf7, 0x56, 0xfa, - 0x29, 0x1c, 0x20, 0x1c, 0x12, 0x30, 0xfa, 0xf7, - 0x51, 0xfa, 0x10, 0xab, 0x98, 0x88, 0x00, 0x22, - 0x01, 0x21, 0x20, 0x83, 0xd8, 0x88, 0x60, 0x83, - 0x18, 0x89, 0xe0, 0x81, 0x58, 0x89, 0x20, 0x82, - 0x68, 0x46, 0xf9, 0xf7, 0x3c, 0x00, 0xe8, 0x07, - 0x01, 0x00, 0x17, 0xff, 0x14, 0xb0, 0x70, 0xbd, - 0x00, 0x00, 0x14, 0x6e, 0x01, 0x00, 0x12, 0x61, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x18, 0x48, - 0x25, 0x1c, 0x00, 0x78, 0x60, 0x35, 0x80, 0x07, - 0x00, 0x28, 0x08, 0xda, 0xe8, 0x79, 0x00, 0x28, - 0x05, 0xd0, 0xf4, 0xf7, 0x70, 0xff, 0x01, 0x1c, - 0x20, 0x1c, 0x00, 0xf0, 0x78, 0xf9, 0x29, 0x88, - 0x2e, 0x20, 0x00, 0x5d, 0xf2, 0xf7, 0x3c, 0x00, - 0x24, 0x08, 0x01, 0x00, 0x9f, 0xfa, 0xe8, 0x79, - 0x00, 0x28, 0x0b, 0xd1, 0x20, 0x1c, 0x40, 0x30, - 0x01, 0x8b, 0x22, 0x69, 0x11, 0x80, 0x41, 0x8b, - 0x22, 0x69, 0x51, 0x80, 0x80, 0x8b, 0x21, 0x69, - 0xc8, 0x82, 0x07, 0xe0, 0x01, 0x28, 0x05, 0xd1, - 0x20, 0x69, 0x01, 0x22, 0x01, 0x88, 0xd2, 0x02, - 0x11, 0x43, 0x01, 0x80, 0x6a, 0x7a, 0xe0, 0x68, - 0x02, 0x49, 0xf2, 0xf7, 0x53, 0xfa, 0xb0, 0xbd, - 0x3c, 0x00, 0x60, 0x08, 0x01, 0x00, 0x1d, 0x75, - 0x01, 0x00, 0xd1, 0x4f, 0x00, 0x00, 0x90, 0xb5, - 0x04, 0x1c, 0x38, 0x23, 0x0c, 0x49, 0x58, 0x43, - 0x43, 0x18, 0x85, 0xb0, 0x00, 0x20, 0x0a, 0x49, - 0x02, 0x90, 0x18, 0x1c, 0x01, 0x22, 0x03, 0x91, - 0x09, 0x49, 0x04, 0x92, 0x30, 0x30, 0x42, 0x78, - 0x09, 0x88, 0x01, 0x92, 0x00, 0x91, 0x01, 0x78, - 0x5a, 0x6b, 0x0c, 0x33, 0x20, 0x1c, 0xfb, 0xf7, - 0x7c, 0xf8, 0x3c, 0x00, 0x9c, 0x08, 0x01, 0x00, - 0x05, 0xb0, 0x90, 0xbd, 0xd4, 0xe4, 0x01, 0x00, - 0x5d, 0x4e, 0x00, 0x00, 0x48, 0x7b, 0x01, 0x00, - 0x90, 0xb5, 0x85, 0xb0, 0x03, 0x1c, 0x00, 0x20, - 0x02, 0x90, 0x0a, 0x49, 0x18, 0x1c, 0x00, 0x22, - 0x04, 0x92, 0x60, 0x30, 0x03, 0x91, 0xc2, 0x79, - 0x01, 0x88, 0x01, 0x92, 0x00, 0x91, 0x5a, 0x6a, - 0xdc, 0x68, 0x20, 0x33, 0x99, 0x7b, 0x40, 0x7a, - 0x23, 0x1c, 0xfb, 0xf7, 0x3c, 0x00, 0xd8, 0x08, - 0x01, 0x00, 0x5d, 0xf8, 0x05, 0xb0, 0x90, 0xbd, - 0x00, 0x00, 0x0d, 0x4f, 0x00, 0x00, 0x07, 0x49, - 0x80, 0xb5, 0x88, 0x6a, 0x00, 0x28, 0x08, 0xd1, - 0x01, 0x20, 0x88, 0x62, 0xf0, 0xf7, 0xaf, 0xfc, - 0x01, 0x1c, 0x03, 0x48, 0x00, 0x22, 0xf2, 0xf7, - 0xb8, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x41, 0xe4, 0x00, 0x00, 0xf0, 0xb5, - 0x9b, 0xb0, 0x00, 0x28, 0x20, 0xd0, 0x3c, 0x00, - 0x14, 0x09, 0x01, 0x00, 0x01, 0x1c, 0x08, 0xa8, - 0xfc, 0xf7, 0xb2, 0xfd, 0x01, 0x20, 0x11, 0x90, - 0x03, 0x20, 0x10, 0xad, 0x28, 0x72, 0x04, 0x20, - 0x68, 0x72, 0x05, 0xa8, 0x00, 0x22, 0x69, 0x46, - 0xf4, 0xf7, 0x00, 0xff, 0x00, 0x24, 0x00, 0x26, - 0x05, 0xa9, 0x00, 0x20, 0xf9, 0xf7, 0xfc, 0xfa, - 0x69, 0x46, 0xf9, 0xf7, 0xf9, 0xfa, 0x0b, 0x90, - 0x08, 0xa8, 0xfc, 0xf7, 0xbb, 0xfd, 0x01, 0x34, - 0x3c, 0x00, 0x50, 0x09, 0x01, 0x00, 0x02, 0x2c, - 0x2e, 0x72, 0xf0, 0xdb, 0x1b, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0x90, 0xb5, 0x04, 0x1c, 0x4c, 0x23, - 0x0c, 0x49, 0x58, 0x43, 0x43, 0x18, 0x85, 0xb0, - 0x00, 0x20, 0x0a, 0x49, 0x02, 0x90, 0x00, 0x22, - 0x04, 0x92, 0x3c, 0x20, 0x03, 0x91, 0xc2, 0x5c, - 0x08, 0x48, 0x41, 0x88, 0x01, 0x92, 0x41, 0x20, - 0x00, 0x91, 0xc1, 0x5c, 0x5a, 0x68, 0x08, 0x33, - 0x20, 0x1c, 0x3c, 0x00, 0x8c, 0x09, 0x01, 0x00, - 0xfb, 0xf7, 0x02, 0xf8, 0x05, 0xb0, 0x90, 0xbd, - 0x58, 0xe3, 0x01, 0x00, 0x75, 0x4f, 0x00, 0x00, - 0x3c, 0x7c, 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, - 0x22, 0x4c, 0x38, 0x21, 0x17, 0x1c, 0x05, 0x1c, - 0x20, 0x1c, 0xef, 0xf7, 0x75, 0xfd, 0x23, 0x1c, - 0x25, 0x33, 0x21, 0x1c, 0x24, 0x31, 0x10, 0x20, - 0x6a, 0x46, 0xf9, 0xf7, 0x1d, 0xf8, 0x00, 0xab, - 0x18, 0x88, 0x07, 0x21, 0x3c, 0x00, 0xc8, 0x09, - 0x01, 0x00, 0x1a, 0x4a, 0x02, 0x38, 0x20, 0x84, - 0x20, 0x1c, 0x20, 0x30, 0x81, 0x70, 0xc5, 0x70, - 0x11, 0x1c, 0x06, 0x73, 0x47, 0x73, 0x34, 0x31, - 0x21, 0x63, 0x30, 0x32, 0x62, 0x63, 0x01, 0x79, - 0x25, 0x1c, 0x10, 0x35, 0x21, 0x81, 0x20, 0x60, - 0xe5, 0x60, 0x18, 0x88, 0x40, 0x1a, 0x20, 0x83, - 0x20, 0x1c, 0x28, 0x30, 0x20, 0x61, 0x20, 0x1c, - 0xf9, 0xf7, 0x11, 0xf8, 0x0d, 0x48, 0x3c, 0x00, - 0x04, 0x0a, 0x01, 0x00, 0x00, 0x68, 0x00, 0x28, - 0x07, 0xd0, 0x06, 0x21, 0x20, 0x1c, 0xf8, 0xf7, - 0x47, 0xfd, 0x10, 0x21, 0x28, 0x1c, 0xf8, 0xf7, - 0x43, 0xfd, 0x08, 0x48, 0x02, 0x21, 0x01, 0x62, - 0x44, 0x62, 0x01, 0x21, 0x01, 0x62, 0x06, 0x48, - 0x00, 0x68, 0xef, 0xf7, 0xd5, 0xfc, 0xf8, 0xbd, - 0x8c, 0x8e, 0x01, 0x00, 0xe4, 0xfe, 0x01, 0x00, - 0xcc, 0x5c, 0x01, 0x00, 0x00, 0x30, 0x07, 0x00, - 0x3c, 0x00, 0x40, 0x0a, 0x01, 0x00, 0x5c, 0x5b, - 0x01, 0x00, 0xf0, 0xb5, 0x06, 0x1c, 0x40, 0x36, - 0x31, 0x8b, 0x04, 0x1c, 0x25, 0x1c, 0x08, 0x07, - 0x80, 0x0f, 0x60, 0x35, 0x01, 0x28, 0x85, 0xb0, - 0x3b, 0xd0, 0xe8, 0x79, 0x00, 0x28, 0x05, 0xd1, - 0x20, 0x69, 0x01, 0x80, 0xb0, 0x8b, 0x21, 0x69, - 0xc8, 0x82, 0x07, 0xe0, 0x01, 0x28, 0x05, 0xd1, - 0x20, 0x69, 0x01, 0x22, 0x01, 0x88, 0xd2, 0x02, - 0x11, 0x43, 0x3c, 0x00, 0x7c, 0x0a, 0x01, 0x00, - 0x01, 0x80, 0x20, 0x48, 0x00, 0x78, 0x80, 0x07, - 0x26, 0xd5, 0xe8, 0x79, 0x00, 0x28, 0x23, 0xd0, - 0xa0, 0x6b, 0x00, 0x28, 0x1c, 0xd0, 0xf4, 0xf7, - 0x2f, 0xfe, 0x00, 0x28, 0x09, 0xd0, 0xb8, 0x21, - 0x09, 0x58, 0x00, 0x29, 0x05, 0xd0, 0x30, 0x21, - 0x09, 0x5d, 0xb4, 0x30, 0x08, 0x18, 0x07, 0x7a, - 0x00, 0xe0, 0x00, 0x27, 0x01, 0x21, 0x38, 0x1c, - 0xfa, 0xf7, 0x86, 0xf9, 0x3c, 0x00, 0xb8, 0x0a, - 0x01, 0x00, 0x04, 0x90, 0x20, 0x69, 0x04, 0x30, - 0x39, 0x1c, 0xf4, 0xf7, 0x6c, 0xfd, 0x04, 0x99, - 0xfa, 0xf7, 0xd3, 0xf9, 0x02, 0xe0, 0x20, 0x1c, - 0xf7, 0xf7, 0xf9, 0xfb, 0x70, 0x83, 0x70, 0x8b, - 0x21, 0x69, 0x00, 0x22, 0x48, 0x80, 0x09, 0x49, - 0x0a, 0x48, 0x04, 0x92, 0x03, 0x91, 0x02, 0x90, - 0xea, 0x79, 0x29, 0x88, 0x01, 0x92, 0x00, 0x91, - 0x62, 0x6a, 0xe3, 0x68, 0x20, 0x34, 0x3c, 0x00, - 0xf4, 0x0a, 0x01, 0x00, 0xa1, 0x7b, 0x68, 0x7a, - 0xfa, 0xf7, 0x4c, 0xff, 0x05, 0xb0, 0xf0, 0xbd, - 0x1d, 0x75, 0x01, 0x00, 0xd1, 0x4f, 0x00, 0x00, - 0xdd, 0x2f, 0x01, 0x00, 0xfe, 0xb5, 0x04, 0x1c, - 0x26, 0x1c, 0x01, 0x20, 0x20, 0x36, 0x00, 0x29, - 0x02, 0x90, 0x2e, 0xd0, 0x58, 0x20, 0x00, 0x5b, - 0x00, 0x07, 0x80, 0x0f, 0x01, 0x28, 0x01, 0xd1, - 0xcc, 0x31, 0x00, 0xe0, 0xb4, 0x31, 0x48, 0x68, - 0x3c, 0x00, 0x30, 0x0b, 0x01, 0x00, 0x0d, 0x1c, - 0x00, 0x28, 0x24, 0xd0, 0x20, 0x1c, 0x60, 0x30, - 0xc2, 0x79, 0x01, 0x21, 0x01, 0x2a, 0x00, 0xd0, - 0x00, 0x21, 0x27, 0x1c, 0x62, 0x6d, 0x30, 0x37, - 0x00, 0x2a, 0x04, 0xd0, 0x3a, 0x1c, 0x28, 0x1c, - 0xf6, 0xf7, 0xe7, 0xfd, 0x07, 0xe0, 0x42, 0x7a, - 0x23, 0x1c, 0x68, 0x33, 0x00, 0x92, 0x3a, 0x1c, - 0x28, 0x1c, 0xf6, 0xf7, 0x9a, 0xfd, 0x02, 0x90, - 0x38, 0x78, 0x3c, 0x00, 0x6c, 0x0b, 0x01, 0x00, - 0x40, 0x19, 0x00, 0x7a, 0x01, 0x21, 0xb0, 0x73, - 0xfa, 0xf7, 0x26, 0xf9, 0x01, 0xe0, 0x00, 0x20, - 0xb0, 0x73, 0x60, 0x62, 0xb0, 0x7b, 0x0d, 0x28, - 0x01, 0xd9, 0xf0, 0xf7, 0xbb, 0xfb, 0x02, 0x98, - 0xfe, 0xbd, 0x00, 0x00, 0xff, 0xb5, 0x04, 0x1c, - 0x80, 0x30, 0x25, 0x1c, 0x5e, 0x35, 0x00, 0x78, - 0xae, 0x1d, 0xaf, 0x1f, 0x00, 0x28, 0x83, 0xb0, - 0x12, 0xd1, 0xf4, 0xf7, 0x3c, 0x00, 0xa8, 0x0b, - 0x01, 0x00, 0xc7, 0xfb, 0x00, 0x28, 0x07, 0xd0, - 0x06, 0x98, 0x05, 0x99, 0x02, 0x90, 0x04, 0x98, - 0x01, 0x90, 0xa6, 0x61, 0x67, 0x61, 0x0d, 0xe0, - 0x04, 0x98, 0x06, 0x99, 0x02, 0x90, 0x05, 0x98, - 0x01, 0x90, 0x66, 0x61, 0x05, 0xe0, 0x04, 0xa9, - 0x03, 0xc9, 0x02, 0x90, 0x06, 0x98, 0x01, 0x90, - 0x67, 0x61, 0xa5, 0x61, 0x06, 0x22, 0x38, 0x1c, - 0xef, 0xf7, 0x8b, 0xfc, 0x06, 0x22, 0x3c, 0x00, - 0xe4, 0x0b, 0x01, 0x00, 0x28, 0x1c, 0x02, 0x99, - 0xef, 0xf7, 0x86, 0xfc, 0x06, 0x22, 0x30, 0x1c, - 0x01, 0x99, 0xef, 0xf7, 0x81, 0xfc, 0x07, 0xb0, - 0xf0, 0xbd, 0x00, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x05, 0x28, 0x01, 0xd3, 0xf0, 0xf7, - 0x7b, 0xfb, 0x02, 0x49, 0xa0, 0x00, 0x08, 0x58, - 0x85, 0x60, 0xb0, 0xbd, 0x10, 0x7b, 0x01, 0x00, - 0xf8, 0xb5, 0xff, 0xf7, 0x59, 0xf9, 0x05, 0x1c, - 0x3c, 0x00, 0x20, 0x0c, 0x01, 0x00, 0xfe, 0xf7, - 0xe8, 0xff, 0x04, 0x1c, 0x28, 0x1c, 0xff, 0xf7, - 0x58, 0xf9, 0x00, 0x28, 0x42, 0xd0, 0x69, 0x1e, - 0x21, 0x4d, 0x4a, 0x00, 0x20, 0x4b, 0x1c, 0x3d, - 0xae, 0x5c, 0x98, 0x5c, 0x30, 0x40, 0xd6, 0x18, - 0x01, 0x23, 0xf6, 0x56, 0x52, 0x19, 0xd2, 0x56, - 0x96, 0x42, 0x01, 0xdd, 0x15, 0x1c, 0x00, 0xe0, - 0x35, 0x1c, 0x18, 0x4b, 0x2a, 0x3b, 0x59, 0x56, - 0x51, 0x18, 0x3c, 0x00, 0x5c, 0x0c, 0x01, 0x00, - 0xb1, 0x42, 0x00, 0xdb, 0x31, 0x1c, 0x0e, 0x1c, - 0x00, 0x28, 0x26, 0xd0, 0xfe, 0xf7, 0xbe, 0xff, - 0x00, 0x90, 0x00, 0xab, 0x18, 0x78, 0x12, 0x49, - 0x00, 0x23, 0xc9, 0x56, 0x00, 0xab, 0x15, 0x22, - 0x10, 0x1a, 0x5b, 0x78, 0x00, 0x1b, 0x40, 0x18, - 0xd2, 0x1a, 0x12, 0x1b, 0x51, 0x18, 0x00, 0x22, - 0x85, 0x42, 0x02, 0xdb, 0x00, 0xab, 0x1a, 0x70, - 0x02, 0xe0, 0x40, 0x1b, 0x3c, 0x00, 0x98, 0x0c, - 0x01, 0x00, 0x00, 0xab, 0x18, 0x70, 0x8e, 0x42, - 0x02, 0xdb, 0x00, 0xab, 0x5a, 0x70, 0x02, 0xe0, - 0x88, 0x1b, 0x00, 0xab, 0x58, 0x70, 0x00, 0x98, - 0xff, 0xf7, 0x8d, 0xf8, 0x01, 0xf0, 0xff, 0xf8, - 0xf8, 0xbd, 0xe6, 0x78, 0x01, 0x00, 0x65, 0x73, - 0x01, 0x00, 0x70, 0xb5, 0x08, 0x4e, 0x06, 0x4d, - 0x00, 0x24, 0x06, 0x20, 0x60, 0x43, 0x80, 0x19, - 0x06, 0x22, 0x29, 0x1c, 0xef, 0xf7, 0x3c, 0x00, - 0xd4, 0x0c, 0x01, 0x00, 0x11, 0xfc, 0x01, 0x34, - 0x05, 0x2c, 0xf5, 0xdb, 0x70, 0xbd, 0x00, 0x00, - 0x4e, 0x47, 0x01, 0x00, 0xe6, 0x7a, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x01, 0x68, 0x03, 0x48, - 0xfe, 0xf7, 0x42, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0xa8, 0x79, 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x01, 0x68, 0x03, 0x48, - 0xfe, 0xf7, 0x4a, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x0d, 0x01, 0x00, 0xa8, 0x79, - 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, 0x10, 0xb5, - 0x00, 0x28, 0x0a, 0xd0, 0x06, 0x4c, 0xa1, 0x69, - 0x00, 0x29, 0x01, 0xd1, 0x00, 0x20, 0x00, 0xe0, - 0x09, 0x68, 0xf7, 0xf7, 0x38, 0xfb, 0xa0, 0x61, - 0x10, 0xbd, 0x00, 0x20, 0x10, 0xbd, 0xa4, 0x6e, - 0x01, 0x00, 0xf3, 0xb5, 0x37, 0x48, 0x83, 0xb0, - 0x02, 0x90, 0x80, 0x79, 0x0e, 0x1c, 0x00, 0x27, - 0x01, 0x90, 0x3c, 0x00, 0x4c, 0x0d, 0x01, 0x00, - 0x34, 0x48, 0x35, 0x4a, 0x01, 0x6a, 0x03, 0x9c, - 0x03, 0x1c, 0x1b, 0x69, 0xa1, 0x42, 0x01, 0xd0, - 0x93, 0x61, 0x00, 0xe0, 0x53, 0x61, 0x31, 0x49, - 0x8a, 0x68, 0x96, 0x42, 0x3f, 0xd0, 0x2d, 0x48, - 0x8e, 0x60, 0xc1, 0x68, 0x00, 0x24, 0x25, 0x1c, - 0x00, 0x29, 0x2d, 0x48, 0x09, 0xd0, 0x00, 0x2e, - 0x0b, 0xd0, 0x28, 0x48, 0x01, 0x24, 0xc0, 0x6a, - 0x24, 0x03, 0x00, 0x28, 0x3c, 0x00, 0x88, 0x0d, - 0x01, 0x00, 0x06, 0xd0, 0x01, 0x27, 0x04, 0xe0, - 0x00, 0x2e, 0x01, 0xd0, 0x05, 0x1c, 0xf9, 0xe7, - 0x04, 0x1c, 0x00, 0x2f, 0x06, 0xd0, 0xfb, 0xf7, - 0x1e, 0xfb, 0x1f, 0x48, 0x01, 0x68, 0x22, 0x48, - 0xfe, 0xf7, 0xfb, 0xfa, 0x20, 0x1c, 0x28, 0x43, - 0x0e, 0xd0, 0x2a, 0x1c, 0x21, 0x1c, 0x01, 0x20, - 0x02, 0xf0, 0x21, 0xfe, 0x2a, 0x1c, 0x21, 0x1c, - 0x02, 0x20, 0x02, 0xf0, 0x1c, 0xfe, 0x3c, 0x00, - 0xc4, 0x0d, 0x01, 0x00, 0x2a, 0x1c, 0x21, 0x1c, - 0x03, 0x20, 0x02, 0xf0, 0x17, 0xfe, 0x00, 0x2f, - 0x06, 0xd1, 0x13, 0x48, 0x01, 0x68, 0x16, 0x48, - 0xfe, 0xf7, 0xce, 0xfa, 0xfa, 0xf7, 0x42, 0xfd, - 0x03, 0x9c, 0x00, 0x2c, 0x01, 0xd1, 0x01, 0xf0, - 0xe1, 0xff, 0x01, 0xa9, 0x03, 0xc9, 0x88, 0x71, - 0x01, 0xf0, 0xdc, 0xff, 0x0a, 0x4c, 0x0a, 0x4b, - 0x44, 0x3c, 0xa1, 0x69, 0x22, 0x69, 0x08, 0x3b, - 0x3c, 0x00, 0x00, 0x0e, 0x01, 0x00, 0x41, 0x1a, - 0x00, 0x2a, 0x03, 0xd0, 0x1a, 0x68, 0x51, 0x18, - 0x19, 0x60, 0x02, 0xe0, 0x5a, 0x68, 0x51, 0x18, - 0x59, 0x60, 0xa0, 0x61, 0x26, 0x61, 0x05, 0xb0, - 0xf0, 0xbd, 0x20, 0x10, 0x07, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, 0xb0, 0x57, - 0x01, 0x00, 0x00, 0x10, 0x60, 0x00, 0x84, 0x73, - 0x01, 0x00, 0x1c, 0xb5, 0x4c, 0x23, 0x08, 0x49, - 0x58, 0x43, 0x3c, 0x00, 0x3c, 0x0e, 0x01, 0x00, - 0x44, 0x18, 0x20, 0x1c, 0x40, 0x30, 0x41, 0x78, - 0x62, 0x68, 0x00, 0x91, 0x01, 0x92, 0x3f, 0x21, - 0x0b, 0x5d, 0x61, 0x8f, 0x00, 0x78, 0x62, 0x6c, - 0xfa, 0xf7, 0x28, 0xf8, 0xa0, 0x85, 0x1c, 0xbd, - 0x58, 0xe3, 0x01, 0x00, 0xb0, 0xb5, 0x16, 0x4d, - 0xa9, 0x69, 0x00, 0x29, 0x25, 0xd0, 0x2c, 0x1c, - 0x30, 0x34, 0x20, 0x7a, 0x00, 0x28, 0x20, 0xd0, - 0x00, 0x23, 0x81, 0x22, 0x3c, 0x00, 0x78, 0x0e, - 0x01, 0x00, 0x18, 0x20, 0x02, 0xf0, 0x89, 0xfc, - 0x20, 0x7a, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, - 0x20, 0x72, 0x12, 0xd1, 0x0c, 0x48, 0x28, 0x21, - 0x2c, 0x38, 0x09, 0x5c, 0x21, 0x72, 0x29, 0x7a, - 0x00, 0x29, 0x01, 0xd1, 0x00, 0x6a, 0x00, 0xe0, - 0x40, 0x6a, 0xa9, 0x69, 0x80, 0x02, 0x81, 0x42, - 0x03, 0xd2, 0x49, 0x00, 0x81, 0x42, 0x01, 0xd2, - 0xa9, 0x61, 0xb0, 0xbd, 0xa8, 0x61, 0x3c, 0x00, - 0xb4, 0x0e, 0x01, 0x00, 0xb0, 0xbd, 0x01, 0xf0, - 0x1d, 0xf9, 0xb0, 0xbd, 0xf4, 0x6e, 0x01, 0x00, - 0x7f, 0xb5, 0x05, 0x1c, 0x04, 0x20, 0x6b, 0x46, - 0x1b, 0x18, 0x02, 0x90, 0x00, 0x26, 0x28, 0x18, - 0x6a, 0x46, 0x02, 0xa9, 0xfc, 0xf7, 0x8a, 0xfb, - 0x00, 0x28, 0x06, 0xd1, 0x00, 0xab, 0x18, 0x79, - 0x04, 0x28, 0x08, 0xd0, 0x18, 0x79, 0x03, 0x28, - 0x05, 0xd0, 0x00, 0xab, 0x18, 0x79, 0x10, 0x21, - 0x3c, 0x00, 0xf0, 0x0e, 0x01, 0x00, 0x08, 0x43, - 0x04, 0xb0, 0x70, 0xbd, 0x03, 0xa9, 0xe8, 0x68, - 0xf6, 0xf7, 0xd3, 0xff, 0x00, 0x28, 0x05, 0xd0, - 0x03, 0x98, 0x20, 0x21, 0x08, 0x43, 0x00, 0x06, - 0x00, 0x0e, 0xf1, 0xe7, 0x03, 0xa9, 0x00, 0x20, - 0xf6, 0xf7, 0xc7, 0xff, 0x04, 0x1c, 0x01, 0xd1, - 0x02, 0x20, 0xe9, 0xe7, 0xe8, 0x68, 0x00, 0xab, - 0x20, 0x60, 0x00, 0x98, 0x60, 0x60, 0x18, 0x79, - 0xa0, 0x76, 0x3c, 0x00, 0x2c, 0x0f, 0x01, 0x00, - 0xa8, 0x8c, 0x60, 0x76, 0xe8, 0x69, 0x20, 0x61, - 0x68, 0x8c, 0xa0, 0x82, 0x28, 0x8c, 0x20, 0x76, - 0x69, 0x69, 0x09, 0x48, 0x81, 0x42, 0x00, 0xd9, - 0x08, 0x1c, 0xa0, 0x60, 0x20, 0x1c, 0x02, 0xf0, - 0xa1, 0xfd, 0xa1, 0x68, 0x00, 0x29, 0x04, 0xd0, - 0x03, 0x9a, 0xa1, 0x32, 0x08, 0x20, 0x02, 0xf0, - 0x37, 0xfb, 0x30, 0x1c, 0xc7, 0xe7, 0x00, 0x00, - 0xa0, 0x86, 0x01, 0x00, 0x3c, 0x00, 0x68, 0x0f, - 0x01, 0x00, 0xfe, 0xb5, 0x06, 0x1c, 0x40, 0x78, - 0x01, 0x24, 0x06, 0x28, 0x50, 0xd3, 0xc1, 0x1e, - 0x03, 0x20, 0xef, 0xf7, 0x5e, 0xfb, 0x00, 0x90, - 0x0e, 0x28, 0x49, 0xd8, 0x00, 0x20, 0x0a, 0xe0, - 0x41, 0x00, 0x09, 0x18, 0x89, 0x19, 0x4a, 0x79, - 0x89, 0x79, 0x51, 0x18, 0x01, 0x39, 0x0e, 0x29, - 0x00, 0xd9, 0x00, 0x24, 0x01, 0x30, 0x00, 0x99, - 0x88, 0x42, 0xf1, 0xdb, 0x00, 0x2c, 0x3c, 0x00, - 0xa4, 0x0f, 0x01, 0x00, 0x37, 0xd0, 0x03, 0x22, - 0xb1, 0x1c, 0x1b, 0x48, 0xef, 0xf7, 0xa4, 0xfa, - 0x1a, 0x4c, 0x1c, 0x21, 0x20, 0x1c, 0xef, 0xf7, - 0x4d, 0xfa, 0x00, 0x25, 0x28, 0xe0, 0x69, 0x00, - 0x49, 0x19, 0x02, 0x91, 0x8a, 0x19, 0x53, 0x79, - 0x15, 0x48, 0x43, 0x54, 0x93, 0x79, 0x0f, 0x18, - 0x7b, 0x70, 0xd3, 0x79, 0xbb, 0x70, 0x07, 0x23, - 0xd2, 0x56, 0x01, 0x92, 0x44, 0x5c, 0x0f, 0xe0, - 0x3c, 0x00, 0xe0, 0x0f, 0x01, 0x00, 0x20, 0x1c, - 0xfe, 0xf7, 0x7b, 0xff, 0x00, 0x28, 0x07, 0xd0, - 0x0c, 0x4a, 0x60, 0x00, 0x80, 0x18, 0x01, 0x21, - 0x10, 0x38, 0x81, 0x73, 0x01, 0x99, 0xc1, 0x73, - 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, 0x07, 0x48, - 0x02, 0x99, 0x40, 0x5c, 0x79, 0x78, 0x40, 0x18, - 0xa0, 0x42, 0xe8, 0xd8, 0x01, 0x35, 0x00, 0x98, - 0x85, 0x42, 0xd3, 0xdb, 0xfe, 0xbd, 0xe8, 0x62, - 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x10, 0x01, 0x00, - 0xe6, 0x78, 0x01, 0x00, 0xeb, 0x62, 0x01, 0x00, - 0x01, 0x68, 0x0f, 0x29, 0x01, 0xdd, 0x0f, 0x21, - 0x01, 0x60, 0x01, 0x68, 0x00, 0x29, 0x01, 0xda, - 0x00, 0x21, 0x01, 0x60, 0x70, 0x47, 0x00, 0x00, - 0xf8, 0xb5, 0x04, 0x1c, 0x1e, 0x48, 0x22, 0x1d, - 0x05, 0x68, 0x00, 0x92, 0x16, 0x1c, 0x23, 0x1c, - 0x0f, 0x1c, 0xcc, 0x33, 0x2a, 0x1c, 0x20, 0x1c, - 0x70, 0x30, 0xa1, 0x6d, 0x3c, 0x00, 0x58, 0x10, - 0x01, 0x00, 0x00, 0xf0, 0x3e, 0xf9, 0x00, 0x96, - 0xa1, 0x6d, 0x27, 0x20, 0x01, 0x40, 0x23, 0x1c, - 0xe4, 0x33, 0x20, 0x1c, 0x2a, 0x1c, 0x5c, 0x30, - 0x00, 0xf0, 0x33, 0xf9, 0x13, 0x48, 0x00, 0x78, - 0x0e, 0x28, 0x01, 0xd2, 0x01, 0x25, 0x85, 0x40, - 0x11, 0x48, 0xa1, 0x69, 0x00, 0x78, 0x29, 0x40, - 0x00, 0x07, 0x0b, 0xd4, 0x48, 0x07, 0x03, 0xd5, - 0x08, 0x07, 0x01, 0xd5, 0x04, 0x20, 0x3c, 0x00, - 0x94, 0x10, 0x01, 0x00, 0x81, 0x43, 0x88, 0x06, - 0x03, 0xd5, 0x48, 0x06, 0x01, 0xd5, 0x20, 0x20, - 0x81, 0x43, 0x23, 0x1c, 0xb4, 0x33, 0x2a, 0x1c, - 0x20, 0x1c, 0x30, 0x30, 0x00, 0x96, 0x00, 0xf0, - 0x13, 0xf9, 0x39, 0x1c, 0x20, 0x1c, 0xf0, 0xf7, - 0x47, 0xfc, 0xf8, 0xbd, 0x2c, 0x7d, 0x01, 0x00, - 0x10, 0x67, 0x01, 0x00, 0x1d, 0x75, 0x01, 0x00, - 0xb0, 0xb5, 0xf2, 0xf7, 0x27, 0xfc, 0xfe, 0xf7, - 0x3c, 0x00, 0xd0, 0x10, 0x01, 0x00, 0x09, 0xf9, - 0x0f, 0x48, 0x00, 0x25, 0x45, 0x70, 0x0e, 0x48, - 0x0d, 0x4c, 0x00, 0x88, 0x5b, 0x34, 0xa0, 0x82, - 0xf9, 0xf7, 0x23, 0xfd, 0x20, 0x61, 0xa0, 0x8a, - 0x00, 0x28, 0x04, 0xd0, 0x01, 0x21, 0x89, 0x05, - 0xef, 0xf7, 0x0d, 0xfb, 0xe1, 0x82, 0x05, 0x48, - 0x01, 0x38, 0x45, 0x60, 0x01, 0xf0, 0x55, 0xfe, - 0x02, 0x1c, 0x23, 0x1c, 0x00, 0x21, 0x00, 0x20, - 0xf4, 0xf7, 0x3c, 0x00, 0x0c, 0x11, 0x01, 0x00, - 0x49, 0xfd, 0xb0, 0xbd, 0x45, 0x7d, 0x01, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x70, 0xb5, 0x16, 0x1c, - 0x5a, 0x89, 0x04, 0x1c, 0x04, 0x98, 0x92, 0x07, - 0x92, 0x0f, 0x00, 0x25, 0x00, 0x29, 0xa2, 0x71, - 0x09, 0xd0, 0x05, 0x21, 0xf9, 0xf7, 0x24, 0xfb, - 0x00, 0x28, 0x01, 0xd0, 0xc0, 0x78, 0x00, 0xe0, - 0x01, 0x20, 0xe0, 0x71, 0x00, 0xe0, 0xe5, 0x71, - 0xe5, 0x60, 0xa6, 0x60, 0x3c, 0x00, 0x48, 0x11, - 0x01, 0x00, 0x70, 0xbd, 0x00, 0x00, 0xfe, 0xb5, - 0x05, 0x1c, 0x0e, 0x22, 0x9c, 0x30, 0x16, 0x49, - 0xef, 0xf7, 0xcf, 0xf9, 0x29, 0x1c, 0x28, 0x1c, - 0x80, 0x30, 0x88, 0x31, 0x00, 0x24, 0x2f, 0x1c, - 0x60, 0x37, 0x02, 0x91, 0x01, 0x90, 0x20, 0x06, - 0x00, 0x0e, 0x06, 0x1c, 0xf9, 0xf7, 0x0d, 0xfe, - 0x00, 0x28, 0x03, 0xd0, 0x01, 0x98, 0x42, 0x68, - 0x02, 0x99, 0x01, 0xe0, 0xea, 0x6d, 0x3c, 0x00, - 0x84, 0x11, 0x01, 0x00, 0x39, 0x1c, 0x00, 0x2a, - 0x0d, 0xd0, 0x00, 0x20, 0x03, 0xe0, 0x0b, 0x5c, - 0xb3, 0x42, 0x02, 0xd8, 0x01, 0x30, 0x90, 0x42, - 0xf9, 0xdb, 0x08, 0x18, 0x10, 0x38, 0xc0, 0x7b, - 0x29, 0x19, 0x90, 0x31, 0x08, 0x73, 0x01, 0x34, - 0x0e, 0x2c, 0xdf, 0xd3, 0xfe, 0xbd, 0x00, 0x00, - 0xcc, 0x47, 0x01, 0x00, 0xff, 0xb5, 0x81, 0xb0, - 0x14, 0x1c, 0x10, 0x1c, 0x06, 0x22, 0x0d, 0x1c, - 0x3c, 0x00, 0xc0, 0x11, 0x01, 0x00, 0x19, 0x1c, - 0x0b, 0x9e, 0x0a, 0x9f, 0xef, 0xf7, 0x97, 0xf9, - 0x06, 0x22, 0x39, 0x1c, 0xa0, 0x18, 0xef, 0xf7, - 0x92, 0xf9, 0xe6, 0x60, 0x2c, 0x60, 0x10, 0x20, - 0x28, 0x81, 0x6e, 0x60, 0x01, 0x98, 0xe8, 0x60, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x70, 0xb5, - 0x04, 0x1c, 0x00, 0x20, 0x20, 0x61, 0x58, 0x20, - 0x00, 0x5d, 0x0e, 0x1c, 0x15, 0x1c, 0xc0, 0x07, - 0xc0, 0x17, 0x3c, 0x00, 0xfc, 0x11, 0x01, 0x00, - 0x01, 0x30, 0xe0, 0x61, 0x21, 0x6b, 0x00, 0x29, - 0x36, 0xd1, 0x1e, 0x49, 0x09, 0x68, 0x29, 0x43, - 0x32, 0xd0, 0xa1, 0x68, 0x89, 0x8a, 0x00, 0x29, - 0x2e, 0xd0, 0x00, 0x28, 0x0b, 0xd0, 0x20, 0x1c, - 0x58, 0x30, 0x00, 0xf0, 0xf3, 0xfd, 0x00, 0x28, - 0x1b, 0xd0, 0x81, 0x6a, 0x02, 0x6a, 0x40, 0x6a, - 0x09, 0x78, 0x00, 0x78, 0x06, 0xe0, 0x14, 0x4a, - 0x3c, 0x23, 0x11, 0x78, 0x3c, 0x00, 0x38, 0x12, - 0x01, 0x00, 0x50, 0x78, 0x43, 0x43, 0x9a, 0x18, - 0x04, 0x32, 0x00, 0x2d, 0x03, 0xd1, 0x02, 0x29, - 0x01, 0xd0, 0x03, 0x29, 0x02, 0xd1, 0x6d, 0x21, - 0x22, 0x61, 0x08, 0x55, 0x20, 0x69, 0x00, 0x28, - 0x0d, 0xd0, 0x81, 0x88, 0x00, 0x29, 0x01, 0xd1, - 0x01, 0x20, 0x70, 0xbd, 0x80, 0x79, 0x02, 0x28, - 0x05, 0xd1, 0x22, 0x1c, 0x07, 0x49, 0x07, 0x48, - 0xf8, 0xf7, 0x4b, 0xff, 0x02, 0xe0, 0x3c, 0x00, - 0x74, 0x12, 0x01, 0x00, 0x20, 0x1c, 0xef, 0xf7, - 0xb5, 0xf8, 0x00, 0x20, 0x70, 0xbd, 0x00, 0x00, - 0x28, 0x61, 0x01, 0x00, 0x68, 0x61, 0x01, 0x00, - 0xa1, 0xda, 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x21, 0x00, 0x20, 0xf9, 0xf7, - 0x39, 0xfe, 0xc4, 0x00, 0xf9, 0xf7, 0x54, 0xfe, - 0x24, 0x18, 0xf9, 0xf7, 0x47, 0xfe, 0x08, 0x49, - 0x20, 0x18, 0x09, 0x88, 0x08, 0x4c, 0x40, 0x18, - 0x3c, 0x00, 0xb0, 0x12, 0x01, 0x00, 0x06, 0x49, - 0x09, 0x88, 0x40, 0x18, 0x60, 0x61, 0xf9, 0xf7, - 0x46, 0xfe, 0x05, 0x49, 0x09, 0x88, 0x40, 0x18, - 0x40, 0x00, 0xa0, 0x61, 0x10, 0xbd, 0x02, 0x61, - 0x01, 0x00, 0x04, 0x61, 0x01, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0xa6, 0x69, 0x01, 0x00, 0x11, 0x40, - 0x08, 0x1c, 0x10, 0xb5, 0x1c, 0x1c, 0x19, 0x1c, - 0x08, 0x31, 0x18, 0x60, 0xf1, 0xf7, 0x31, 0xfe, - 0x60, 0x60, 0x3c, 0x00, 0xec, 0x12, 0x01, 0x00, - 0x10, 0xbd, 0x00, 0x00, 0xf8, 0xb5, 0x06, 0x1c, - 0x22, 0x48, 0x0f, 0x1c, 0x41, 0x68, 0x91, 0x42, - 0x03, 0xd0, 0x00, 0x21, 0x81, 0x60, 0xc1, 0x60, - 0x42, 0x60, 0xc4, 0x68, 0x15, 0xe0, 0x28, 0x20, - 0x1d, 0x49, 0x60, 0x43, 0x40, 0x18, 0x05, 0x1c, - 0x06, 0x22, 0x31, 0x1c, 0xef, 0xf7, 0x70, 0xf8, - 0x00, 0x28, 0x07, 0xd1, 0xa8, 0x1d, 0x39, 0x1c, - 0xf9, 0xf7, 0x10, 0xfd, 0x3c, 0x00, 0x28, 0x13, - 0x01, 0x00, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x20, - 0xf8, 0xbd, 0x01, 0x34, 0x24, 0x07, 0x24, 0x0f, - 0x12, 0x48, 0x80, 0x68, 0x84, 0x42, 0xe5, 0xd1, - 0x10, 0x4c, 0x28, 0x23, 0xa0, 0x68, 0x0f, 0x4d, - 0x58, 0x43, 0x40, 0x19, 0x06, 0x22, 0x31, 0x1c, - 0xef, 0xf7, 0xd3, 0xf8, 0xa0, 0x68, 0x28, 0x23, - 0x58, 0x43, 0x40, 0x19, 0x06, 0x30, 0x22, 0x22, - 0x39, 0x1c, 0xef, 0xf7, 0xca, 0xf8, 0x3c, 0x00, - 0x64, 0x13, 0x01, 0x00, 0xa0, 0x68, 0x01, 0x30, - 0x00, 0x07, 0x00, 0x0f, 0xa0, 0x60, 0xe1, 0x68, - 0x81, 0x42, 0x03, 0xd1, 0x01, 0x31, 0x08, 0x07, - 0x00, 0x0f, 0xe0, 0x60, 0x00, 0x20, 0xd6, 0xe7, - 0xec, 0x65, 0x01, 0x00, 0xa0, 0xf4, 0x01, 0x00, - 0x10, 0xb5, 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, - 0xe5, 0xff, 0x05, 0x4c, 0xa0, 0x68, 0x00, 0x28, - 0x04, 0xd1, 0x01, 0xf0, 0x07, 0xfd, 0x61, 0x68, - 0x3c, 0x00, 0xa0, 0x13, 0x01, 0x00, 0x40, 0x1a, - 0x60, 0x60, 0x10, 0xbd, 0x00, 0x00, 0xd0, 0x60, - 0x01, 0x00, 0x02, 0x68, 0x0a, 0x60, 0x01, 0x60, - 0x70, 0x47, 0x01, 0x1c, 0x00, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0x02, 0x68, 0x0a, 0x60, 0x70, 0x47, - 0x00, 0x00, 0xfe, 0xb5, 0x14, 0x1c, 0x1d, 0x1c, - 0x00, 0x22, 0xd2, 0x43, 0x01, 0xab, 0xf3, 0xf7, - 0x82, 0xff, 0x01, 0x98, 0x00, 0x26, 0x28, 0x40, - 0x01, 0x90, 0x3c, 0x00, 0xdc, 0x13, 0x01, 0x00, - 0x00, 0x25, 0x00, 0x27, 0x20, 0x60, 0x1e, 0xe0, - 0x01, 0x21, 0xb9, 0x40, 0x0a, 0x1c, 0x02, 0x40, - 0x18, 0xd0, 0x88, 0x43, 0x01, 0x90, 0x39, 0x06, - 0x09, 0x0e, 0x70, 0x19, 0x00, 0x19, 0x02, 0x91, - 0x01, 0x77, 0x08, 0x1c, 0xf9, 0xf7, 0xc6, 0xfc, - 0x00, 0x28, 0x06, 0xd0, 0x30, 0x1c, 0x00, 0x19, - 0x01, 0x36, 0x02, 0x99, 0x30, 0x30, 0x01, 0x70, - 0x04, 0xe0, 0x28, 0x1c, 0x3c, 0x00, 0x18, 0x14, - 0x01, 0x00, 0x01, 0x35, 0x02, 0x99, 0x00, 0x19, - 0x01, 0x72, 0x01, 0x37, 0x01, 0x98, 0x00, 0x28, - 0xdd, 0xd1, 0x70, 0x19, 0xa0, 0x61, 0x65, 0x60, - 0xe6, 0x62, 0xfe, 0xbd, 0x00, 0x00, 0xb0, 0xb5, - 0x14, 0x4d, 0x04, 0x1c, 0x28, 0x7a, 0x01, 0x28, - 0x02, 0xd1, 0x04, 0x20, 0xf6, 0xf7, 0xad, 0xf9, - 0x21, 0x1c, 0xa8, 0x6a, 0xf5, 0xf7, 0x21, 0xfc, - 0x00, 0x28, 0x03, 0xd1, 0x04, 0x20, 0x3c, 0x00, - 0x54, 0x14, 0x01, 0x00, 0xf6, 0xf7, 0xa4, 0xf9, - 0xb0, 0xbd, 0x02, 0x20, 0x28, 0x70, 0x28, 0x8c, - 0x00, 0x28, 0x00, 0xd0, 0x60, 0x81, 0x68, 0x8c, - 0x00, 0x28, 0x00, 0xd0, 0xa0, 0x81, 0xa8, 0x8c, - 0x00, 0x28, 0x00, 0xd0, 0xe0, 0x81, 0xe8, 0x69, - 0x01, 0x23, 0x02, 0x04, 0x12, 0x0c, 0x20, 0x1c, - 0x02, 0x49, 0xfc, 0xf7, 0x19, 0xff, 0xb0, 0xbd, - 0xf4, 0x6e, 0x01, 0x00, 0xa1, 0x77, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x14, 0x01, 0x00, 0xf8, 0xb5, - 0x19, 0x4e, 0x05, 0x1c, 0xb0, 0x69, 0x00, 0x28, - 0x00, 0xd1, 0x30, 0x68, 0xff, 0xf7, 0x3b, 0xfc, - 0x15, 0x4f, 0x04, 0x1c, 0x50, 0x37, 0x00, 0x28, - 0x0b, 0xd0, 0x60, 0x68, 0x29, 0x1c, 0x78, 0x60, - 0x01, 0x20, 0x38, 0x63, 0x20, 0x1c, 0xf5, 0xf7, - 0xea, 0xfb, 0x00, 0x28, 0x04, 0xd1, 0x00, 0x20, - 0xf8, 0xbd, 0x00, 0x23, 0xfb, 0x62, 0xfa, 0xe7, - 0x00, 0x23, 0x3c, 0x00, 0xcc, 0x14, 0x01, 0x00, - 0x23, 0x77, 0xf8, 0x6a, 0x00, 0x28, 0x01, 0xd1, - 0x01, 0x20, 0xf8, 0x62, 0x38, 0x7a, 0x01, 0x28, - 0x07, 0xd0, 0xf8, 0x69, 0x06, 0x49, 0x02, 0x04, - 0x12, 0x0c, 0x28, 0x1c, 0xfc, 0xf7, 0xe6, 0xfe, - 0x01, 0xe0, 0xfb, 0x62, 0xb3, 0x61, 0x01, 0x20, - 0xe5, 0xe7, 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, - 0xdd, 0x02, 0x01, 0x00, 0x70, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x16, 0x1c, 0x3c, 0x00, 0x08, 0x15, - 0x01, 0x00, 0x04, 0x2c, 0x1b, 0xd2, 0x10, 0x48, - 0x83, 0x42, 0x07, 0xd2, 0x58, 0x00, 0x0f, 0x49, - 0xef, 0xf7, 0xfb, 0xf8, 0xff, 0x30, 0x00, 0x0a, - 0x01, 0x38, 0x00, 0xe0, 0x00, 0x20, 0x1f, 0x35, - 0xea, 0x06, 0x61, 0x07, 0x09, 0x0e, 0xd2, 0x0e, - 0x11, 0x43, 0x72, 0x07, 0x52, 0x0d, 0x11, 0x43, - 0x00, 0x06, 0x00, 0x0a, 0x08, 0x43, 0x06, 0x4a, - 0xa1, 0x00, 0x50, 0x50, 0x70, 0xbd, 0x3c, 0x00, - 0x44, 0x15, 0x01, 0x00, 0x01, 0x21, 0x8d, 0x20, - 0xef, 0xf7, 0xac, 0xfe, 0x70, 0xbd, 0x00, 0x00, - 0x40, 0x9c, 0x00, 0x00, 0x00, 0x80, 0x38, 0x01, - 0xe8, 0x60, 0x01, 0x00, 0x09, 0x4a, 0x80, 0x00, - 0x10, 0x58, 0x40, 0x09, 0x40, 0x01, 0x07, 0x22, - 0x02, 0x43, 0x07, 0x48, 0x03, 0x68, 0x00, 0x2b, - 0xfc, 0xdb, 0x42, 0x60, 0x09, 0x06, 0x01, 0x60, - 0x01, 0x68, 0x00, 0x29, 0xfc, 0xdb, 0x08, 0x20, - 0x3c, 0x00, 0x80, 0x15, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0xe8, 0x60, 0x01, 0x00, 0x30, 0x20, - 0x07, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, - 0x07, 0x49, 0xa0, 0x00, 0x08, 0x58, 0x00, 0x28, - 0x03, 0xd1, 0x02, 0x21, 0x8d, 0x20, 0xef, 0xf7, - 0x80, 0xfe, 0x29, 0x1c, 0x20, 0x1c, 0xf6, 0xf7, - 0xa8, 0xfa, 0xb0, 0xbd, 0x00, 0x00, 0xe8, 0x60, - 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, 0x0d, 0x1c, - 0x07, 0x49, 0x3c, 0x00, 0xbc, 0x15, 0x01, 0x00, - 0xa0, 0x00, 0x08, 0x58, 0x00, 0x28, 0x03, 0xd1, - 0x02, 0x21, 0x8d, 0x20, 0xef, 0xf7, 0x6c, 0xfe, - 0x29, 0x1c, 0x20, 0x1c, 0xff, 0xf7, 0xc4, 0xff, - 0xb0, 0xbd, 0x00, 0x00, 0xe8, 0x60, 0x01, 0x00, - 0xf8, 0xb5, 0x0d, 0x1c, 0x16, 0x1c, 0xf7, 0xf7, - 0x17, 0xf9, 0x04, 0x1c, 0x28, 0x68, 0x40, 0x4f, - 0x81, 0x78, 0x00, 0x29, 0x3b, 0xd1, 0xc1, 0x78, - 0x00, 0x29, 0x58, 0xd1, 0x3c, 0x00, 0xf8, 0x15, - 0x01, 0x00, 0xf8, 0xf7, 0xf8, 0xf9, 0x22, 0x8e, - 0x61, 0x8e, 0x8a, 0x42, 0x04, 0xd0, 0xa1, 0x6a, - 0x09, 0x18, 0xe0, 0x69, 0x81, 0x42, 0x10, 0xd9, - 0x38, 0x49, 0x32, 0x1c, 0x48, 0x6b, 0x01, 0x30, - 0x48, 0x63, 0x20, 0x6a, 0x01, 0x30, 0x20, 0x62, - 0x38, 0x68, 0x01, 0x30, 0x38, 0x60, 0xe0, 0x68, - 0x63, 0x69, 0x29, 0x1c, 0xee, 0xf7, 0xd8, 0xfe, - 0xf8, 0xbd, 0x01, 0x32, 0x12, 0x04, 0x3c, 0x00, - 0x34, 0x16, 0x01, 0x00, 0x12, 0x0c, 0x22, 0x86, - 0xa1, 0x62, 0xb8, 0x68, 0x00, 0x28, 0x34, 0xd1, - 0x2c, 0x48, 0x0c, 0x23, 0x00, 0x68, 0x1b, 0x1a, - 0x9a, 0x42, 0x07, 0xd2, 0x19, 0x23, 0x9b, 0x01, - 0xaf, 0x22, 0x92, 0x01, 0x58, 0x43, 0x10, 0x1a, - 0x81, 0x42, 0x26, 0xd3, 0x01, 0x20, 0xb8, 0x60, - 0x01, 0x21, 0x0c, 0x20, 0x00, 0xf0, 0x7a, 0xfe, - 0x1f, 0xe0, 0x01, 0x29, 0x1d, 0xd1, 0xc0, 0x78, - 0x3c, 0x00, 0x70, 0x16, 0x01, 0x00, 0x17, 0x28, - 0x1a, 0xd1, 0xa0, 0x8e, 0xe1, 0x8e, 0x88, 0x42, - 0x14, 0xd3, 0xe9, 0x68, 0x09, 0x68, 0x09, 0x79, - 0x09, 0x06, 0x0f, 0xd5, 0x60, 0x6a, 0x32, 0x1c, - 0x01, 0x30, 0x60, 0x62, 0xe0, 0x68, 0x63, 0x69, - 0x29, 0x1c, 0xee, 0xf7, 0xa3, 0xfe, 0xe8, 0x68, - 0x01, 0x68, 0x08, 0x31, 0x0b, 0x20, 0x00, 0xf0, - 0x5c, 0xfe, 0xc3, 0xe7, 0x01, 0x30, 0xa0, 0x86, - 0xa0, 0x8d, 0x3c, 0x00, 0xac, 0x16, 0x01, 0x00, - 0xe1, 0x8d, 0x88, 0x42, 0x04, 0xd1, 0x03, 0x21, - 0x02, 0x20, 0xef, 0xf7, 0xf5, 0xfd, 0xb8, 0xe7, - 0x60, 0x68, 0x45, 0x60, 0x86, 0x60, 0x00, 0x68, - 0x60, 0x60, 0xf8, 0x68, 0x01, 0x30, 0xf8, 0x60, - 0xa0, 0x8d, 0x41, 0x1c, 0xa1, 0x85, 0x00, 0x28, - 0xab, 0xd1, 0x08, 0x48, 0xb9, 0x69, 0xfd, 0xf7, - 0x61, 0xfe, 0x22, 0x1c, 0x02, 0x21, 0xf1, 0x20, - 0x02, 0xf0, 0x64, 0xf8, 0x3c, 0x00, 0xe8, 0x16, - 0x01, 0x00, 0xa1, 0xe7, 0x00, 0x00, 0xfc, 0x5a, - 0x01, 0x00, 0x90, 0x5c, 0x01, 0x00, 0x18, 0x57, - 0x01, 0x00, 0xc4, 0x60, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x1c, 0x02, 0x21, 0xf0, 0x20, 0x02, 0xf0, - 0x54, 0xf8, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x28, - 0x03, 0xd1, 0x02, 0x48, 0x41, 0x78, 0xc9, 0x07, - 0xfc, 0xd5, 0x70, 0x47, 0x00, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x80, 0xb5, 0x00, 0x06, 0x3c, 0x00, - 0x24, 0x17, 0x01, 0x00, 0x01, 0xd1, 0xf1, 0xf7, - 0x71, 0xfe, 0x80, 0xbd, 0x80, 0xb5, 0xf4, 0xf7, - 0xe5, 0xfa, 0x80, 0xbd, 0x80, 0xb5, 0xf6, 0xf7, - 0xeb, 0xf8, 0x80, 0xbd, 0x01, 0x49, 0x00, 0x20, - 0x08, 0x74, 0x70, 0x47, 0x78, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0xc0, 0x07, 0x03, 0xd5, 0x02, 0x49, - 0x01, 0x20, 0x00, 0xf0, 0x1d, 0xfc, 0x80, 0xbd, - 0x50, 0xc3, 0x00, 0x00, 0x00, 0x06, 0x00, 0x0e, - 0x3c, 0x00, 0x60, 0x17, 0x01, 0x00, 0x01, 0x28, - 0x80, 0xb5, 0x02, 0xd1, 0xf6, 0xf7, 0xe1, 0xf9, - 0x80, 0xbd, 0x00, 0x28, 0xfc, 0xd1, 0xf1, 0xf7, - 0x4c, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0xf6, 0xf7, 0xd7, 0xf9, 0x80, 0xbd, 0x03, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x08, 0x74, 0xf6, 0xf7, - 0xfe, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x06, 0x00, 0x0e, - 0xf1, 0xf7, 0x3c, 0x00, 0x9c, 0x17, 0x01, 0x00, - 0x71, 0xfe, 0x80, 0xbd, 0x10, 0xb5, 0x01, 0x28, - 0x08, 0xd0, 0x02, 0x28, 0x03, 0xd0, 0x03, 0x28, - 0x01, 0xd0, 0xef, 0xf7, 0xa7, 0xfd, 0xf6, 0xf7, - 0xe9, 0xf9, 0x10, 0xbd, 0x01, 0xf0, 0xf8, 0xfa, - 0x04, 0x1c, 0xfa, 0xf7, 0x5d, 0xfd, 0x24, 0x1a, - 0xfa, 0xf7, 0x3e, 0xfd, 0x08, 0x49, 0x00, 0x28, - 0x0b, 0xd0, 0x48, 0x6a, 0x00, 0x28, 0x08, 0xd0, - 0x06, 0x48, 0x84, 0x42, 0x3c, 0x00, 0xd8, 0x17, - 0x01, 0x00, 0x05, 0xd2, 0x01, 0x1b, 0x01, 0x22, - 0x07, 0x20, 0x01, 0xf0, 0xf4, 0xfe, 0xe5, 0xe7, - 0x00, 0x20, 0x48, 0x61, 0xe2, 0xe7, 0x78, 0x69, - 0x01, 0x00, 0x50, 0xc3, 0x00, 0x00, 0x09, 0x49, - 0x80, 0xb5, 0x48, 0x69, 0x00, 0x28, 0x0c, 0xd0, - 0x08, 0x6a, 0xca, 0x69, 0x80, 0x1a, 0x00, 0x28, - 0x07, 0xdd, 0x00, 0x20, 0x48, 0x61, 0x01, 0x21, - 0x07, 0x20, 0x01, 0xf0, 0x10, 0xff, 0x3c, 0x00, - 0x14, 0x18, 0x01, 0x00, 0xf6, 0xf7, 0xb8, 0xf9, - 0x80, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0xe7, 0xfb, 0x80, 0xbd, - 0x80, 0xb5, 0x00, 0xf0, 0x3f, 0xfc, 0x00, 0x20, - 0xf7, 0xf7, 0xd4, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0x37, 0xfc, 0xfd, 0xf7, - 0x6f, 0xfc, 0xf5, 0xf7, 0x73, 0xfd, 0x30, 0xf0, - 0x47, 0xfb, 0x80, 0xbd, 0x04, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0x50, 0x18, 0x01, 0x00, 0xc1, 0x6a, - 0x00, 0x6b, 0xf2, 0xf7, 0xde, 0xff, 0x01, 0x20, - 0xf7, 0xf7, 0x89, 0xf8, 0x80, 0xbd, 0xa4, 0x6c, - 0x01, 0x00, 0x10, 0xb5, 0xf3, 0xf7, 0x41, 0xf8, - 0x0d, 0x4c, 0x00, 0x28, 0x04, 0xd0, 0x01, 0x20, - 0xe0, 0x64, 0xf7, 0xf7, 0xb2, 0xfc, 0x10, 0xbd, - 0x01, 0x21, 0x01, 0x20, 0xf3, 0xf7, 0xe9, 0xf8, - 0xfd, 0xf7, 0x4d, 0xfc, 0x60, 0x6d, 0x00, 0x28, - 0x03, 0xd0, 0x3c, 0x00, 0x8c, 0x18, 0x01, 0x00, - 0xf3, 0xf7, 0x82, 0xf8, 0x00, 0x28, 0x01, 0xd0, - 0xf5, 0xf7, 0x4a, 0xfd, 0x01, 0x20, 0xf2, 0xf7, - 0xc1, 0xfc, 0x10, 0xbd, 0xa4, 0x6c, 0x01, 0x00, - 0x04, 0x48, 0x80, 0xb5, 0xc1, 0x6a, 0x00, 0x6b, - 0xf2, 0xf7, 0xb2, 0xff, 0x01, 0x20, 0xf7, 0xf7, - 0x5d, 0xf8, 0x80, 0xbd, 0xa4, 0x6c, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0xf5, 0xfb, 0xf5, 0xf7, - 0x33, 0xfd, 0xfc, 0xf7, 0x3c, 0x00, 0xc8, 0x18, - 0x01, 0x00, 0x31, 0xfd, 0xf9, 0xf7, 0xcb, 0xff, - 0x04, 0x20, 0xf2, 0xf7, 0xa6, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0xc1, 0x6a, - 0x00, 0x6b, 0xf2, 0xf7, 0x98, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0xf0, 0xdd, 0xfb, 0x00, 0x20, 0xf7, 0xf7, - 0x3c, 0xf8, 0x30, 0xf0, 0xee, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x21, 0x3c, 0x00, - 0x04, 0x19, 0x01, 0x00, 0x01, 0x20, 0xff, 0xf7, - 0x19, 0xfa, 0x01, 0x20, 0xf2, 0xf7, 0x88, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0xc9, 0xfb, 0xfc, 0xf7, 0x07, 0xfd, 0x01, 0x21, - 0x01, 0x20, 0xff, 0xf7, 0x0b, 0xfa, 0x04, 0x20, - 0xf2, 0xf7, 0x7a, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, 0x00, 0x20, - 0x00, 0xf0, 0x8a, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x19, 0x01, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x82, 0x6a, 0x01, 0x21, 0x04, 0x20, - 0x00, 0xf0, 0x81, 0xfb, 0x80, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x03, 0x20, 0x00, 0xf0, 0x78, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x82, 0x6a, - 0x01, 0x21, 0x04, 0x20, 0x00, 0xf0, 0x6f, 0xfb, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x22, 0x3c, 0x00, 0x7c, 0x19, 0x01, 0x00, - 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, 0x66, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x06, 0x48, 0x80, 0xb5, - 0x81, 0x68, 0x42, 0x69, 0x00, 0x69, 0x51, 0x18, - 0x81, 0x42, 0x03, 0xd9, 0x01, 0x21, 0x01, 0x20, - 0x00, 0xf0, 0x58, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0xd4, 0x79, 0x01, 0x00, 0x06, 0x48, 0x80, 0xb5, - 0x82, 0x88, 0x81, 0x68, 0x00, 0x69, 0x51, 0x18, - 0x81, 0x42, 0x03, 0xd9, 0x3c, 0x00, 0xb8, 0x19, - 0x01, 0x00, 0x01, 0x21, 0x02, 0x20, 0x00, 0xf0, - 0x48, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x10, 0xb5, 0x08, 0x4c, 0x20, 0x7b, - 0x21, 0x6a, 0xf9, 0xf7, 0x9c, 0xfa, 0xa1, 0x69, - 0x42, 0x18, 0xa0, 0x68, 0x21, 0x69, 0x80, 0x18, - 0x88, 0x42, 0x03, 0xd9, 0x01, 0x21, 0x02, 0x20, - 0x00, 0xf0, 0x33, 0xfb, 0x10, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x3c, 0x00, - 0xf4, 0x19, 0x01, 0x00, 0x00, 0x21, 0x00, 0x20, - 0x00, 0xf0, 0x2a, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x0e, 0x01, 0x28, 0x80, 0xb5, - 0x02, 0xd1, 0xf6, 0xf7, 0x8f, 0xf8, 0x80, 0xbd, - 0x00, 0x28, 0xfc, 0xd1, 0xf1, 0xf7, 0xfa, 0xfc, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0xf6, 0xf7, - 0x85, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x00, 0x06, - 0x00, 0x0e, 0xf1, 0xf7, 0x29, 0xfd, 0x80, 0xbd, - 0x3c, 0x00, 0x30, 0x1a, 0x01, 0x00, 0xb0, 0xb5, - 0x02, 0x25, 0x02, 0x28, 0x10, 0x4c, 0x0b, 0xd1, - 0xfb, 0xf7, 0x47, 0xfc, 0x00, 0x28, 0x01, 0xd1, - 0xfe, 0xf7, 0x4f, 0xff, 0x25, 0x70, 0xa1, 0x68, - 0x0c, 0x48, 0xfd, 0xf7, 0xa8, 0xfc, 0xb0, 0xbd, - 0x03, 0x28, 0x0d, 0xd1, 0x08, 0x48, 0x7d, 0x23, - 0x1c, 0x38, 0x00, 0x69, 0xdb, 0x00, 0x58, 0x43, - 0x19, 0x1c, 0x40, 0x18, 0x41, 0x08, 0x02, 0x20, - 0x00, 0xf0, 0x3c, 0x00, 0x6c, 0x1a, 0x01, 0x00, - 0x91, 0xfa, 0x25, 0x70, 0xb0, 0xbd, 0xf8, 0xf7, - 0x31, 0xf9, 0xb0, 0xbd, 0x78, 0x69, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, - 0xe0, 0x68, 0x00, 0x28, 0x01, 0xd1, 0xef, 0xf7, - 0x39, 0xfc, 0x02, 0x20, 0x20, 0x70, 0x00, 0xf0, - 0xaf, 0xfa, 0x10, 0xbd, 0x78, 0x69, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x82, 0x6a, 0x01, 0x21, - 0x04, 0x20, 0x00, 0xf0, 0x3c, 0x00, 0xa8, 0x1a, - 0x01, 0x00, 0xd3, 0xfa, 0x80, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x03, 0x20, 0x00, 0xf0, 0xca, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x00, 0xf0, 0xc2, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, 0x42, 0x69, - 0x01, 0x21, 0x01, 0x20, 0x00, 0xf0, 0xb9, 0xfa, - 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, 0x3c, 0x00, - 0xe4, 0x1a, 0x01, 0x00, 0x06, 0x48, 0x80, 0xb5, - 0x82, 0x88, 0x00, 0x2a, 0x02, 0xd0, 0x01, 0x21, - 0x02, 0x20, 0x02, 0xe0, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x00, 0xf0, 0xa9, 0xfa, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, - 0x20, 0x7b, 0x21, 0x6a, 0xf9, 0xf7, 0xfe, 0xf9, - 0xa1, 0x69, 0x42, 0x18, 0x01, 0x21, 0x02, 0x20, - 0x00, 0xf0, 0x9a, 0xfa, 0x10, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x1b, 0x01, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x80, 0xb5, 0x00, 0x22, 0x00, 0x21, - 0x00, 0x20, 0x00, 0xf0, 0x90, 0xfa, 0x80, 0xbd, - 0x00, 0x00, 0x38, 0xb5, 0xfa, 0xf7, 0x41, 0xfe, - 0x00, 0x20, 0xf0, 0xf7, 0x80, 0xf8, 0x00, 0x90, - 0x00, 0xab, 0x1c, 0x88, 0x5d, 0x88, 0xf8, 0xf7, - 0x3c, 0xf9, 0x00, 0x2c, 0x02, 0xd0, 0xfd, 0xf7, - 0x9e, 0xfa, 0x02, 0xe0, 0x01, 0x20, 0xf6, 0xf7, - 0x0a, 0xff, 0x3c, 0x00, 0x5c, 0x1b, 0x01, 0x00, - 0x29, 0x1c, 0x20, 0x1c, 0xfc, 0xf7, 0xb8, 0xfc, - 0x00, 0x2c, 0x02, 0xd0, 0xf5, 0xf7, 0xe0, 0xfb, - 0x02, 0xe0, 0x00, 0x20, 0x00, 0xf0, 0xdc, 0xf9, - 0x03, 0x20, 0x00, 0x2c, 0x00, 0xd1, 0x02, 0x20, - 0x00, 0x06, 0x00, 0x0e, 0xf2, 0xf7, 0x4e, 0xfb, - 0x38, 0xbd, 0x00, 0x00, 0x03, 0x48, 0x80, 0xb5, - 0x82, 0x6a, 0x01, 0x21, 0x04, 0x20, 0x00, 0xf0, - 0x5d, 0xfa, 0x80, 0xbd, 0x3c, 0x00, 0x98, 0x1b, - 0x01, 0x00, 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x30, 0xf0, 0x9b, 0xf9, 0x80, 0xbd, 0x80, 0xb5, - 0x00, 0x22, 0x00, 0x21, 0x03, 0x20, 0x00, 0xf0, - 0x50, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x03, 0x48, - 0x80, 0xb5, 0x42, 0x69, 0x01, 0x21, 0x01, 0x20, - 0x00, 0xf0, 0x47, 0xfa, 0x80, 0xbd, 0xd4, 0x79, - 0x01, 0x00, 0x04, 0x48, 0x80, 0xb5, 0x82, 0x88, - 0x00, 0x2a, 0x03, 0xd0, 0x01, 0x21, 0x3c, 0x00, - 0xd4, 0x1b, 0x01, 0x00, 0x02, 0x20, 0x00, 0xf0, - 0x3b, 0xfa, 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, - 0x10, 0xb5, 0x06, 0x4c, 0x20, 0x7b, 0x21, 0x6a, - 0xf9, 0xf7, 0x90, 0xf9, 0xa1, 0x69, 0x42, 0x18, - 0x01, 0x21, 0x02, 0x20, 0x00, 0xf0, 0x2c, 0xfa, - 0x10, 0xbd, 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0xfc, 0xf7, 0x93, 0xfb, 0x01, 0x21, - 0x01, 0x20, 0xff, 0xf7, 0x97, 0xf8, 0x04, 0x20, - 0x3c, 0x00, 0x10, 0x1c, 0x01, 0x00, 0xf2, 0xf7, - 0x06, 0xfb, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x2f, 0xf0, 0x6b, 0xfb, 0x00, 0x28, 0x0a, 0xd0, - 0x01, 0x20, 0xf2, 0xf7, 0xfc, 0xfa, 0xfa, 0xf7, - 0x2a, 0xfc, 0x00, 0x28, 0x02, 0xd1, 0x04, 0x20, - 0xf6, 0xf7, 0x5d, 0xf8, 0x80, 0xbd, 0x03, 0x21, - 0x16, 0x20, 0xef, 0xf7, 0x32, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x02, 0x48, 0x80, 0xb5, 0x00, 0x68, - 0xee, 0xf7, 0x3c, 0x00, 0x4c, 0x1c, 0x01, 0x00, - 0xc5, 0xfb, 0x80, 0xbd, 0xd4, 0x79, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0x42, 0x69, 0x01, 0x21, - 0x01, 0x20, 0x00, 0xf0, 0xf7, 0xf9, 0x80, 0xbd, - 0xd4, 0x79, 0x01, 0x00, 0x80, 0xb5, 0x30, 0xf0, - 0x35, 0xf9, 0x80, 0xbd, 0xb0, 0xb5, 0x18, 0x4c, - 0xaa, 0x20, 0x00, 0x5d, 0x04, 0x28, 0x19, 0xd1, - 0x01, 0x25, 0xe5, 0x62, 0x25, 0x63, 0x01, 0xf0, - 0x93, 0xf8, 0xa0, 0x66, 0x3c, 0x00, 0x88, 0x1c, - 0x01, 0x00, 0x01, 0xf0, 0xfc, 0xfd, 0xf2, 0xf7, - 0x2e, 0xfe, 0x00, 0x28, 0x0e, 0xd0, 0x02, 0x20, - 0xf2, 0xf7, 0xc3, 0xfa, 0xa5, 0x60, 0x01, 0xf0, - 0x86, 0xf8, 0x64, 0x30, 0x60, 0x60, 0xfa, 0xf7, - 0x8a, 0xfd, 0x01, 0x21, 0x01, 0x20, 0xff, 0xf7, - 0x46, 0xf8, 0xb0, 0xbd, 0x01, 0x20, 0xf2, 0xf7, - 0xb4, 0xfa, 0x00, 0x20, 0xa0, 0x60, 0x00, 0x21, - 0x01, 0x20, 0xff, 0xf7, 0x3c, 0xf8, 0x3c, 0x00, - 0xc4, 0x1c, 0x01, 0x00, 0xf2, 0xf7, 0x66, 0xfe, - 0x00, 0x28, 0xf1, 0xd0, 0xfa, 0xf7, 0x76, 0xfd, - 0xb0, 0xbd, 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0xef, 0xf7, 0xd6, 0xfe, - 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, 0x01, 0x20, - 0xef, 0xf7, 0xd0, 0xfe, 0x80, 0xbd, 0x00, 0x00, - 0xac, 0x21, 0x09, 0x5c, 0x02, 0x4a, 0x09, 0x02, - 0x89, 0x18, 0xc0, 0x31, 0x81, 0x60, 0x70, 0x47, - 0x3c, 0x00, 0x00, 0x1d, 0x01, 0x00, 0x70, 0x75, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x28, 0x04, 0xd1, - 0x03, 0xc9, 0x09, 0x68, 0xee, 0xf7, 0x64, 0xfb, - 0x80, 0xbd, 0x01, 0x21, 0x14, 0x20, 0xef, 0xf7, - 0xc4, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x28, - 0x02, 0xd1, 0x02, 0x48, 0x40, 0x68, 0x70, 0x47, - 0x40, 0x68, 0x70, 0x47, 0x00, 0x00, 0x58, 0x75, - 0x01, 0x00, 0x10, 0xb5, 0x00, 0x24, 0xf8, 0xf7, - 0x1c, 0xfb, 0x3c, 0x00, 0x3c, 0x1d, 0x01, 0x00, - 0x00, 0x28, 0x04, 0xd0, 0x40, 0x30, 0x80, 0x7a, - 0x05, 0x28, 0x00, 0xd1, 0x01, 0x24, 0x20, 0x1c, - 0x10, 0xbd, 0x00, 0x00, 0x04, 0x48, 0x00, 0x21, - 0x40, 0x68, 0x01, 0xe0, 0x01, 0x63, 0x40, 0x68, - 0x00, 0x28, 0xfb, 0xd1, 0x70, 0x47, 0x00, 0x00, - 0x58, 0x75, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0d, 0x1c, 0xf7, 0xf7, 0xa5, 0xf8, 0x40, 0x34, - 0xe5, 0x72, 0xb0, 0xbd, 0x3c, 0x00, 0x78, 0x1d, - 0x01, 0x00, 0xf8, 0xb5, 0x07, 0x1c, 0xf8, 0xf7, - 0xfa, 0xfa, 0x04, 0x1c, 0x04, 0xd0, 0x05, 0x21, - 0x14, 0x20, 0xef, 0xf7, 0x8c, 0xfa, 0x28, 0xe0, - 0x00, 0x25, 0x14, 0x49, 0x28, 0x02, 0x46, 0x18, - 0x30, 0x1c, 0x44, 0x30, 0x06, 0x22, 0x12, 0x49, - 0xee, 0xf7, 0x2d, 0xfb, 0x00, 0x28, 0x02, 0xd1, - 0xac, 0x20, 0x85, 0x55, 0x34, 0x1c, 0x01, 0x35, - 0x03, 0x2d, 0xee, 0xd3, 0x00, 0x2c, 0x3c, 0x00, - 0xb4, 0x1d, 0x01, 0x00, 0x14, 0xd0, 0x39, 0x1c, - 0x20, 0x1c, 0xf8, 0xf7, 0x2b, 0xf8, 0x09, 0x49, - 0x00, 0x20, 0x20, 0x60, 0x18, 0x39, 0x48, 0x68, - 0x60, 0x60, 0x00, 0x28, 0x00, 0xd0, 0x04, 0x60, - 0x4c, 0x60, 0xca, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0x01, 0x21, 0x20, 0x1c, 0xee, 0xf7, 0xfe, 0xfa, - 0x20, 0x1c, 0xf8, 0xbd, 0x70, 0x75, 0x01, 0x00, - 0x58, 0x46, 0x01, 0x00, 0x80, 0xb5, 0xf8, 0xf7, - 0x3c, 0x00, 0xf0, 0x1d, 0x01, 0x00, 0xc1, 0xfa, - 0x00, 0x28, 0x04, 0xd1, 0x06, 0x21, 0x14, 0x20, - 0xef, 0xf7, 0x53, 0xfa, 0x80, 0xbd, 0xf5, 0xf7, - 0x16, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0xf8, 0xf7, 0xb3, 0xfa, 0x80, 0xbd, 0x10, 0xb5, - 0x09, 0x4c, 0x21, 0x88, 0x02, 0x29, 0x03, 0xd1, - 0x14, 0x20, 0xef, 0xf7, 0x42, 0xfa, 0x04, 0xe0, - 0xa3, 0x68, 0x8a, 0x00, 0x98, 0x50, 0x48, 0x1c, - 0x20, 0x80, 0x3c, 0x00, 0x2c, 0x1e, 0x01, 0x00, - 0x20, 0x88, 0x01, 0x38, 0x00, 0x04, 0x00, 0x0c, - 0x10, 0xbd, 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, - 0x0b, 0x1c, 0x11, 0x1c, 0x08, 0x4a, 0x80, 0xb5, - 0x12, 0x88, 0x90, 0x42, 0x06, 0xd2, 0xda, 0x68, - 0xc0, 0x00, 0x12, 0x18, 0x14, 0x20, 0x01, 0xf0, - 0xbb, 0xfb, 0x80, 0xbd, 0x03, 0x21, 0x14, 0x20, - 0xef, 0xf7, 0x22, 0xfa, 0x80, 0xbd, 0x00, 0x00, - 0x58, 0x75, 0x01, 0x00, 0x3c, 0x00, 0x68, 0x1e, - 0x01, 0x00, 0x08, 0x4a, 0x80, 0xb5, 0x12, 0x88, - 0x90, 0x42, 0x06, 0xd2, 0xc9, 0x68, 0xc0, 0x00, - 0x09, 0x18, 0x14, 0x20, 0x01, 0xf0, 0xdb, 0xfb, - 0x80, 0xbd, 0x04, 0x21, 0x14, 0x20, 0xef, 0xf7, - 0x0e, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x58, 0x75, - 0x01, 0x00, 0x01, 0x49, 0xc8, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x58, 0x75, 0x01, 0x00, 0x80, 0xb5, - 0x06, 0x22, 0x44, 0x30, 0xee, 0xf7, 0x3c, 0x00, - 0xa4, 0x1e, 0x01, 0x00, 0xab, 0xfa, 0x00, 0x28, - 0x01, 0xd1, 0x01, 0x20, 0x80, 0xbd, 0x00, 0x20, - 0x80, 0xbd, 0x00, 0x00, 0x1c, 0xb5, 0x14, 0x4c, - 0x20, 0x69, 0x00, 0x28, 0x23, 0xd0, 0x20, 0x78, - 0x0a, 0x28, 0x01, 0xd0, 0x00, 0xf0, 0xfc, 0xf8, - 0x00, 0x20, 0x60, 0x61, 0x0f, 0x48, 0x40, 0x79, - 0xa0, 0x70, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, - 0x15, 0xd1, 0xfd, 0xf7, 0xed, 0xfe, 0x01, 0x90, - 0x3c, 0x00, 0xe0, 0x1e, 0x01, 0x00, 0xfd, 0xf7, - 0x82, 0xfe, 0x00, 0x90, 0x00, 0xab, 0x18, 0x79, - 0x19, 0x78, 0x40, 0x1a, 0x18, 0x71, 0x58, 0x79, - 0x59, 0x78, 0x40, 0x1a, 0x58, 0x71, 0x01, 0x98, - 0xf2, 0xf7, 0x89, 0xfe, 0x05, 0x20, 0x20, 0x70, - 0x00, 0xf0, 0xbf, 0xf9, 0x1c, 0xbd, 0x7c, 0x78, - 0x01, 0x00, 0x0c, 0x5a, 0x01, 0x00, 0x08, 0xb5, - 0x04, 0x4a, 0x00, 0x90, 0x14, 0x32, 0x00, 0x20, - 0x02, 0x4b, 0x3c, 0x00, 0x1c, 0x1f, 0x01, 0x00, - 0x02, 0x49, 0xf1, 0xf7, 0x7d, 0xf9, 0x08, 0xbd, - 0x2c, 0x75, 0x01, 0x00, 0xb1, 0xa8, 0x00, 0x00, - 0xb0, 0xb5, 0x00, 0x28, 0x06, 0xd0, 0x01, 0x28, - 0x06, 0xd0, 0x02, 0x28, 0x07, 0xd1, 0x0c, 0x4c, - 0x01, 0x25, 0x07, 0xe0, 0x0b, 0x4c, 0x04, 0xe0, - 0x0a, 0x4c, 0x2a, 0x3c, 0x01, 0xe0, 0x08, 0x4c, - 0xb6, 0x34, 0x00, 0x25, 0x00, 0xf0, 0x2c, 0xff, - 0x07, 0x49, 0x89, 0x6e, 0x3c, 0x00, 0x58, 0x1f, - 0x01, 0x00, 0x09, 0x19, 0x09, 0x1a, 0xa1, 0x42, - 0x00, 0xd9, 0x00, 0x21, 0x2a, 0x1c, 0x16, 0x20, - 0x01, 0xf0, 0x31, 0xfb, 0xb0, 0xbd, 0x71, 0x02, - 0x00, 0x00, 0x0c, 0x05, 0x00, 0x00, 0xa4, 0x6c, - 0x01, 0x00, 0x8c, 0xb5, 0x00, 0xab, 0x8e, 0x21, - 0x19, 0x80, 0xfc, 0xf7, 0x38, 0xf9, 0x01, 0x90, - 0x68, 0x46, 0xfb, 0xf7, 0xa6, 0xfa, 0x8c, 0xbd, - 0x00, 0x00, 0xbf, 0xb5, 0x13, 0x4a, 0x3c, 0x00, - 0x94, 0x1f, 0x01, 0x00, 0x01, 0x91, 0x0d, 0x1c, - 0x11, 0x7c, 0x88, 0x43, 0x04, 0x1c, 0x21, 0x43, - 0x08, 0x1c, 0x10, 0x74, 0xa0, 0x07, 0x0b, 0xd5, - 0x0e, 0x48, 0x00, 0x90, 0x01, 0x20, 0x02, 0x90, - 0x00, 0xf0, 0xfc, 0xfe, 0x0c, 0x49, 0x40, 0x18, - 0x03, 0x90, 0x68, 0x46, 0xf9, 0xf7, 0x6a, 0xff, - 0xe0, 0x07, 0x0c, 0xd5, 0xf1, 0xf7, 0x2c, 0xfd, - 0x00, 0x28, 0x03, 0xd0, 0x07, 0x48, 0x85, 0x42, - 0x3c, 0x00, 0xd0, 0x1f, 0x01, 0x00, 0x00, 0xd2, - 0x01, 0x90, 0x06, 0x48, 0x00, 0x90, 0x68, 0x46, - 0xf9, 0xf7, 0x09, 0xff, 0xbf, 0xbd, 0x78, 0x69, - 0x01, 0x00, 0x81, 0xea, 0x00, 0x00, 0x10, 0x27, - 0x00, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x75, 0xea, - 0x00, 0x00, 0x10, 0xb5, 0x0a, 0x4c, 0x60, 0x69, - 0x00, 0x28, 0x0e, 0xd1, 0x01, 0x20, 0x60, 0x61, - 0xa1, 0x68, 0x07, 0x48, 0xfd, 0xf7, 0xcb, 0xf9, - 0x00, 0x21, 0x3c, 0x00, 0x0c, 0x20, 0x01, 0x00, - 0xa0, 0x68, 0xf9, 0xf7, 0xd1, 0xfb, 0x01, 0x22, - 0x07, 0x20, 0x04, 0x49, 0x01, 0xf0, 0xd8, 0xfa, - 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0x34, 0x63, 0x01, 0x00, 0x98, 0x3a, 0x00, 0x00, - 0x10, 0xb5, 0x0c, 0x1c, 0x11, 0x1c, 0x06, 0x4a, - 0x00, 0x2b, 0x10, 0x70, 0x03, 0xd0, 0x00, 0x28, - 0x02, 0xd1, 0xf9, 0xf7, 0xf5, 0xfd, 0x10, 0xbd, - 0x20, 0x1c, 0xf9, 0xf7, 0x3c, 0x00, 0x48, 0x20, - 0x01, 0x00, 0x01, 0xfe, 0x10, 0xbd, 0xa0, 0x79, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4c, 0x05, 0x1c, - 0xe3, 0x6a, 0x20, 0x1f, 0x01, 0x33, 0xe3, 0x62, - 0x00, 0x88, 0x00, 0x29, 0x06, 0xd0, 0xa1, 0x68, - 0x89, 0x18, 0x21, 0x61, 0x05, 0x4a, 0x00, 0xf0, - 0xfc, 0xfe, 0x01, 0xe0, 0x00, 0xf0, 0xcf, 0xfe, - 0x25, 0x77, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x55, 0xe3, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x20, 0x01, 0x00, 0x01, 0x1c, 0x03, 0x48, - 0x80, 0xb5, 0x40, 0x88, 0xff, 0xf7, 0xec, 0xfe, - 0x80, 0xbd, 0x00, 0x00, 0x98, 0x7c, 0x01, 0x00, - 0x03, 0x48, 0x80, 0xb5, 0xc1, 0x68, 0x18, 0x38, - 0x80, 0x88, 0xff, 0xf7, 0xe1, 0xfe, 0x80, 0xbd, - 0x70, 0x7c, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x21, - 0x16, 0x20, 0x01, 0xf0, 0xbf, 0xfa, 0x01, 0x21, - 0x16, 0x20, 0x01, 0xf0, 0xbb, 0xfa, 0x80, 0xbd, - 0x3c, 0x00, 0xc0, 0x20, 0x01, 0x00, 0x10, 0xb5, - 0x0b, 0x4c, 0x20, 0x78, 0x0a, 0x28, 0x10, 0xd0, - 0x01, 0x20, 0x60, 0x61, 0x0a, 0x21, 0x13, 0x20, - 0x01, 0xf0, 0xaf, 0xfa, 0x0a, 0x20, 0x60, 0x70, - 0x20, 0x70, 0xfd, 0xf7, 0x3c, 0xfb, 0x01, 0x20, - 0xfd, 0xf7, 0xe9, 0xfb, 0x00, 0x20, 0xfa, 0xf7, - 0xc4, 0xf9, 0x10, 0xbd, 0x00, 0x00, 0x7c, 0x78, - 0x01, 0x00, 0x10, 0xb5, 0x0c, 0x4c, 0x00, 0x20, - 0x0b, 0x49, 0x3c, 0x00, 0xfc, 0x20, 0x01, 0x00, - 0x20, 0x63, 0xe0, 0x62, 0x50, 0x39, 0x88, 0x61, - 0x20, 0x70, 0x08, 0x48, 0x38, 0x21, 0x0c, 0x38, - 0x00, 0x7a, 0x08, 0x55, 0x81, 0x21, 0x18, 0x20, - 0x01, 0xf0, 0x8e, 0xfa, 0x20, 0x69, 0x01, 0x28, - 0x02, 0xd1, 0x00, 0x20, 0xf5, 0xf7, 0x3e, 0xfb, - 0x10, 0xbd, 0x00, 0x00, 0xf4, 0x6e, 0x01, 0x00, - 0xb0, 0xb5, 0x1c, 0x4c, 0x00, 0x25, 0x2c, 0x22, - 0x01, 0x1d, 0x20, 0x1c, 0x3c, 0x00, 0x38, 0x21, - 0x01, 0x00, 0x9a, 0xb0, 0xee, 0xf7, 0x39, 0xfa, - 0x18, 0x49, 0x2c, 0x31, 0x08, 0x1c, 0x00, 0x7a, - 0x8a, 0x69, 0x00, 0x2a, 0x13, 0xd1, 0x02, 0x28, - 0x03, 0xd1, 0xa0, 0x68, 0x00, 0x28, 0x20, 0xd0, - 0x04, 0xe0, 0x00, 0x28, 0x1d, 0xd1, 0x60, 0x68, - 0x00, 0x28, 0x1a, 0xd0, 0x80, 0x02, 0x88, 0x61, - 0x0e, 0x48, 0x69, 0x46, 0x24, 0x38, 0x00, 0x68, - 0xef, 0xf7, 0xcb, 0xfb, 0x11, 0xe0, 0x3c, 0x00, - 0x74, 0x21, 0x01, 0x00, 0x00, 0x22, 0x02, 0x28, - 0x03, 0xd1, 0xa0, 0x68, 0x00, 0x28, 0x09, 0xd1, - 0x04, 0xe0, 0x00, 0x28, 0x08, 0xd1, 0x60, 0x68, - 0x00, 0x28, 0x03, 0xd1, 0x8a, 0x61, 0xff, 0xf7, - 0xb1, 0xff, 0x01, 0xe0, 0x80, 0x02, 0x88, 0x61, - 0x28, 0x1c, 0x1a, 0xb0, 0xb0, 0xbd, 0x00, 0x00, - 0xc8, 0x6e, 0x01, 0x00, 0xf8, 0xb5, 0x0c, 0x49, - 0x02, 0x20, 0x48, 0x60, 0x0b, 0x49, 0x00, 0x05, - 0x3c, 0x00, 0xb0, 0x21, 0x01, 0x00, 0x08, 0x60, - 0x0b, 0x4f, 0xb8, 0x68, 0xf9, 0x68, 0x7c, 0x68, - 0x45, 0x1a, 0x2e, 0x1c, 0x04, 0xe0, 0xa0, 0x68, - 0x61, 0x68, 0xee, 0xf7, 0x09, 0xf9, 0x24, 0x68, - 0x01, 0x3d, 0xf8, 0xd2, 0x7c, 0x60, 0xf8, 0x68, - 0x80, 0x19, 0xf8, 0x60, 0xf8, 0xbd, 0x40, 0x20, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x44, 0xe3, - 0x01, 0x00, 0xf8, 0xb5, 0x1f, 0x4e, 0x04, 0x1c, - 0x30, 0x69, 0x3c, 0x00, 0xec, 0x21, 0x01, 0x00, - 0x01, 0x21, 0xf9, 0xf7, 0x99, 0xfa, 0x1d, 0x49, - 0x60, 0x00, 0x40, 0x18, 0x10, 0x38, 0x81, 0x7b, - 0x1b, 0x4a, 0x51, 0x72, 0xc0, 0x7b, 0x10, 0x74, - 0x1a, 0x4f, 0x1b, 0x4d, 0x0e, 0x2c, 0x0a, 0xd1, - 0x01, 0x22, 0x02, 0x21, 0x08, 0x20, 0x01, 0xf0, - 0xf3, 0xfb, 0x03, 0x20, 0xff, 0x21, 0x41, 0x31, - 0x39, 0x86, 0x14, 0x21, 0x08, 0xe0, 0x02, 0x22, - 0x01, 0x21, 0x08, 0x20, 0x3c, 0x00, 0x28, 0x22, - 0x01, 0x00, 0x01, 0xf0, 0xe8, 0xfb, 0x12, 0x49, - 0x02, 0x20, 0x39, 0x86, 0x10, 0x21, 0xa9, 0x71, - 0xe8, 0x71, 0x10, 0x48, 0x11, 0x4a, 0x00, 0x19, - 0x10, 0x38, 0xc0, 0x7b, 0x00, 0x28, 0x03, 0xd0, - 0x01, 0x21, 0x51, 0x73, 0x10, 0x73, 0x01, 0xe0, - 0x00, 0x20, 0x50, 0x73, 0x00, 0x21, 0x20, 0x1c, - 0xfd, 0xf7, 0xe5, 0xfd, 0x30, 0x69, 0xf9, 0xf7, - 0x08, 0xfb, 0xf8, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x22, 0x01, 0x00, 0x40, 0x7c, 0x01, 0x00, - 0x76, 0x46, 0x01, 0x00, 0x0c, 0x80, 0x07, 0x00, - 0x30, 0x80, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, - 0xff, 0x01, 0x00, 0x00, 0x5c, 0x57, 0x01, 0x00, - 0xd0, 0x80, 0x07, 0x00, 0x10, 0xb5, 0x15, 0x4c, - 0x14, 0x4a, 0x21, 0x78, 0x00, 0x20, 0x18, 0x32, - 0x05, 0x29, 0x1d, 0xd0, 0x06, 0x29, 0x1b, 0xd0, - 0x07, 0x29, 0x01, 0xd0, 0x08, 0x29, 0x06, 0xd1, - 0x3c, 0x00, 0xa0, 0x22, 0x01, 0x00, 0x91, 0x68, - 0x05, 0x20, 0x10, 0x29, 0x00, 0xdb, 0x06, 0x20, - 0x20, 0x70, 0x01, 0x20, 0xa1, 0x78, 0x00, 0x28, - 0x61, 0x70, 0x0b, 0xd0, 0x00, 0x20, 0xfa, 0xf7, - 0xdc, 0xf8, 0x00, 0x21, 0x60, 0x78, 0xf4, 0xf7, - 0x3c, 0xfa, 0x0a, 0x22, 0x1e, 0x21, 0x13, 0x20, - 0x01, 0xf0, 0x7f, 0xf9, 0x10, 0xbd, 0xd1, 0x69, - 0x07, 0x20, 0x10, 0x29, 0xe8, 0xdb, 0x08, 0x20, - 0xe6, 0xe7, 0x3c, 0x00, 0xdc, 0x22, 0x01, 0x00, - 0x7c, 0x78, 0x01, 0x00, 0xb0, 0xb5, 0x0d, 0x1c, - 0x01, 0x1c, 0x04, 0x1c, 0x44, 0x31, 0x00, 0x20, - 0xf6, 0xf7, 0x40, 0xfa, 0x30, 0x34, 0x00, 0x2d, - 0x07, 0xd0, 0x0e, 0xc8, 0x0e, 0xc4, 0x08, 0xc8, - 0x10, 0x38, 0x08, 0xc4, 0xf4, 0xf7, 0xc4, 0xf9, - 0xb0, 0xbd, 0x1e, 0xcc, 0x1e, 0xc0, 0xb0, 0xbd, - 0xf8, 0xb5, 0x08, 0x1c, 0x11, 0x1c, 0xf4, 0xf7, - 0x87, 0xfa, 0x08, 0x4c, 0x3c, 0x00, 0x18, 0x23, - 0x01, 0x00, 0x00, 0x25, 0x08, 0x4e, 0x08, 0x4f, - 0x06, 0xe0, 0x30, 0x6b, 0x00, 0x28, 0x03, 0xd0, - 0x35, 0x63, 0x20, 0x68, 0xee, 0xf7, 0x55, 0xf8, - 0x38, 0x68, 0x00, 0x28, 0xf5, 0xd0, 0xf8, 0xbd, - 0x00, 0x00, 0x5c, 0x5b, 0x01, 0x00, 0xe4, 0xfe, - 0x01, 0x00, 0x84, 0x5a, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x06, 0x00, 0x0e, 0x00, 0xf0, 0x07, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x0a, 0x1c, 0x3c, 0x00, - 0x54, 0x23, 0x01, 0x00, 0x23, 0x21, 0x01, 0xf0, - 0x2b, 0xfa, 0x80, 0xbd, 0xb0, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, - 0x23, 0x20, 0xee, 0xf7, 0x9b, 0xff, 0x06, 0x49, - 0xa0, 0x00, 0x08, 0x58, 0x04, 0xe0, 0x12, 0xc8, - 0x28, 0x1c, 0xee, 0xf7, 0x2e, 0xf8, 0x20, 0x1c, - 0x00, 0x28, 0xf8, 0xd1, 0xb0, 0xbd, 0x00, 0x00, - 0x68, 0x5b, 0x01, 0x00, 0xf8, 0xb5, 0x0e, 0x1c, - 0x3c, 0x00, 0x90, 0x23, 0x01, 0x00, 0x00, 0x25, - 0x04, 0x1c, 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, - 0x23, 0x20, 0xee, 0xf7, 0x82, 0xff, 0x13, 0x48, - 0xa7, 0x00, 0xc4, 0x59, 0x08, 0xe0, 0x20, 0x68, - 0xb0, 0x42, 0x03, 0xd1, 0x03, 0x21, 0x23, 0x20, - 0xee, 0xf7, 0x77, 0xff, 0x25, 0x1c, 0x64, 0x68, - 0x00, 0x2c, 0xf4, 0xd1, 0x0c, 0x4a, 0x04, 0x3a, - 0x10, 0x68, 0x00, 0x28, 0x01, 0xd0, 0x41, 0x68, - 0x11, 0x60, 0x3c, 0x00, 0xcc, 0x23, 0x01, 0x00, - 0x00, 0x28, 0x04, 0xd1, 0x02, 0x21, 0x23, 0x20, - 0xee, 0xf7, 0x66, 0xff, 0xf8, 0xbd, 0x00, 0x21, - 0x41, 0x60, 0x06, 0x60, 0x00, 0x2d, 0x01, 0xd0, - 0x68, 0x60, 0xf7, 0xe7, 0x01, 0x49, 0xc8, 0x51, - 0xf4, 0xe7, 0x00, 0x00, 0x68, 0x5b, 0x01, 0x00, - 0x70, 0xb5, 0x0e, 0x1c, 0x05, 0x1c, 0x00, 0x24, - 0x12, 0x28, 0x03, 0xd3, 0x01, 0x21, 0x23, 0x20, - 0xee, 0xf7, 0x4e, 0xff, 0x3c, 0x00, 0x08, 0x24, - 0x01, 0x00, 0x0d, 0x4b, 0xaa, 0x00, 0x98, 0x58, - 0x04, 0xe0, 0x01, 0x68, 0xb1, 0x42, 0x04, 0xd0, - 0x04, 0x1c, 0x40, 0x68, 0x00, 0x28, 0xf8, 0xd1, - 0x70, 0xbd, 0x00, 0x28, 0xfc, 0xd0, 0x00, 0x2c, - 0x41, 0x68, 0x01, 0xd1, 0x99, 0x50, 0x00, 0xe0, - 0x61, 0x60, 0x00, 0x21, 0x03, 0x4a, 0x01, 0x60, - 0x04, 0x3a, 0x11, 0x68, 0x41, 0x60, 0x10, 0x60, - 0x70, 0xbd, 0x68, 0x5b, 0x01, 0x00, 0x3c, 0x00, - 0x44, 0x24, 0x01, 0x00, 0xf3, 0xb5, 0x81, 0xb0, - 0x00, 0x28, 0x17, 0xd0, 0x01, 0x78, 0xff, 0x29, - 0x14, 0xd0, 0x45, 0x78, 0x44, 0x19, 0x02, 0x34, - 0x80, 0x27, 0x01, 0x3c, 0x26, 0x78, 0x01, 0x3d, - 0xbe, 0x43, 0x30, 0x1c, 0xf8, 0xf7, 0x82, 0xfc, - 0x01, 0x21, 0x81, 0x40, 0x02, 0x98, 0x01, 0x40, - 0x02, 0xd0, 0x3e, 0x43, 0x30, 0x1c, 0x20, 0x70, - 0x00, 0x2d, 0xee, 0xd1, 0xfe, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x24, 0x01, 0x00, 0x10, 0x4b, - 0x10, 0xb5, 0x59, 0x68, 0x41, 0x1a, 0x0f, 0x29, - 0x0d, 0xdc, 0x0e, 0x22, 0xd2, 0x43, 0x91, 0x42, - 0x09, 0xdb, 0x1a, 0x1c, 0x92, 0x68, 0x00, 0x29, - 0x01, 0xdd, 0x00, 0x2a, 0x03, 0xda, 0x00, 0x29, - 0x0d, 0xda, 0x00, 0x2a, 0x0b, 0xdc, 0x04, 0x33, - 0x03, 0xc3, 0xfd, 0xf7, 0x10, 0xfd, 0x04, 0x1c, - 0xfd, 0xf7, 0x13, 0xfd, 0x00, 0x28, 0x02, 0xd0, - 0x20, 0x1c, 0x3c, 0x00, 0xbc, 0x24, 0x01, 0x00, - 0xff, 0xf7, 0x92, 0xfe, 0x10, 0xbd, 0x00, 0x00, - 0x18, 0x63, 0x01, 0x00, 0xf8, 0xb5, 0x64, 0x4c, - 0x07, 0x1c, 0x60, 0x78, 0xa1, 0x78, 0x88, 0x42, - 0x0f, 0xd1, 0x08, 0x1c, 0xfd, 0xf7, 0xce, 0xf8, - 0xe0, 0x60, 0x04, 0x20, 0x60, 0x70, 0x0a, 0x22, - 0x1e, 0x21, 0x13, 0x20, 0x01, 0xf0, 0x70, 0xf8, - 0x00, 0x21, 0x60, 0x78, 0xf4, 0xf7, 0x24, 0xf9, - 0xf8, 0xbd, 0x04, 0x28, 0x3c, 0x00, 0xf8, 0x24, - 0x01, 0x00, 0x6e, 0xd1, 0x58, 0x4e, 0xfd, 0xf7, - 0xbc, 0xf8, 0x00, 0x90, 0x71, 0x78, 0x04, 0x1c, - 0x00, 0x20, 0x05, 0x29, 0x21, 0xd2, 0x01, 0xa3, - 0x5b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, 0x0b, 0x0f, - 0x14, 0x1a, 0x02, 0x00, 0x51, 0x48, 0x51, 0x49, - 0x60, 0x43, 0x41, 0x18, 0x7d, 0x20, 0xc0, 0x00, - 0xee, 0xf7, 0x87, 0xf8, 0x11, 0xe0, 0x87, 0x20, - 0x60, 0x43, 0x4d, 0x49, 0x02, 0xe0, 0x3c, 0x00, - 0x34, 0x25, 0x01, 0x00, 0x45, 0x20, 0x4d, 0x49, - 0x60, 0x43, 0x40, 0x18, 0x08, 0xe0, 0x4c, 0x48, - 0xcd, 0x21, 0x09, 0x01, 0x60, 0x43, 0x40, 0x1a, - 0x02, 0xe0, 0x46, 0x20, 0x60, 0x43, 0x82, 0x38, - 0x06, 0x06, 0x48, 0x48, 0x07, 0x21, 0x00, 0x79, - 0x36, 0x16, 0x08, 0x1a, 0x00, 0x19, 0x00, 0x90, - 0x68, 0x46, 0xfe, 0xf7, 0x5f, 0xfd, 0x38, 0x1c, - 0xfd, 0xf7, 0x2e, 0xfb, 0x00, 0x99, 0x42, 0x4a, - 0x3c, 0x00, 0x70, 0x25, 0x01, 0x00, 0x49, 0x00, - 0x51, 0x5a, 0x48, 0x43, 0x39, 0x49, 0x04, 0x1c, - 0x88, 0x78, 0x00, 0x28, 0x01, 0xd0, 0x01, 0x28, - 0x1e, 0xd1, 0x35, 0x49, 0x00, 0x28, 0x03, 0xd1, - 0x3a, 0x48, 0x05, 0x78, 0x04, 0x20, 0x02, 0xe0, - 0x38, 0x48, 0x45, 0x78, 0x0c, 0x20, 0x30, 0x49, - 0xc9, 0x68, 0x49, 0x1b, 0x08, 0x18, 0x00, 0x90, - 0x68, 0x46, 0xfe, 0xf7, 0x3e, 0xfd, 0x00, 0x98, - 0x33, 0x49, 0x3c, 0x00, 0xac, 0x25, 0x01, 0x00, - 0x40, 0x00, 0x20, 0x31, 0x08, 0x5a, 0x2a, 0x49, - 0x44, 0x43, 0xc8, 0x68, 0xa8, 0x42, 0x01, 0xd9, - 0x01, 0x25, 0x00, 0xe0, 0x00, 0x25, 0x2e, 0x48, - 0x21, 0x18, 0x40, 0x00, 0xee, 0xf7, 0xa2, 0xf8, - 0x04, 0x1c, 0x00, 0x2d, 0x03, 0xd0, 0xfd, 0xf7, - 0xc3, 0xfa, 0x02, 0xe0, 0x3d, 0xe0, 0xfd, 0xf7, - 0xf3, 0xfa, 0x00, 0x2f, 0x02, 0xd1, 0x25, 0x48, - 0x0e, 0x38, 0x01, 0xe0, 0x3c, 0x00, 0xe8, 0x25, - 0x01, 0x00, 0x23, 0x48, 0x0a, 0x38, 0x01, 0x68, - 0x61, 0x1a, 0xcb, 0x1c, 0x01, 0xdb, 0x03, 0x29, - 0x00, 0xdd, 0x04, 0x60, 0x01, 0x68, 0xa1, 0x42, - 0x01, 0xd2, 0x01, 0x31, 0x04, 0xe0, 0xa1, 0x42, - 0x03, 0xd9, 0x00, 0x29, 0x01, 0xd0, 0x01, 0x39, - 0x01, 0x60, 0x01, 0x68, 0x38, 0x1c, 0xfd, 0xf7, - 0xc0, 0xfb, 0x10, 0x4c, 0x0a, 0x20, 0x60, 0x70, - 0x0a, 0x22, 0x13, 0x20, 0xa1, 0x68, 0x3c, 0x00, - 0x24, 0x26, 0x01, 0x00, 0x00, 0xf0, 0xd2, 0xff, - 0x60, 0x68, 0x00, 0xf0, 0xf7, 0xfa, 0x00, 0x28, - 0x00, 0xd1, 0x5f, 0xe7, 0x00, 0xf0, 0xba, 0xfb, - 0x11, 0x49, 0x00, 0x23, 0x40, 0x18, 0x0e, 0x49, - 0x60, 0x60, 0x1e, 0x39, 0xc8, 0x56, 0xb0, 0x42, - 0xf3, 0xd0, 0x0e, 0x70, 0x31, 0x1c, 0x00, 0x20, - 0xff, 0xf7, 0x84, 0xfe, 0x4e, 0xe7, 0xff, 0xf7, - 0x15, 0xfe, 0x4b, 0xe7, 0x7c, 0x78, 0x01, 0x00, - 0x3c, 0x00, 0x60, 0x26, 0x01, 0x00, 0x60, 0xd7, - 0xff, 0xff, 0x60, 0x8f, 0x01, 0x00, 0x54, 0x0b, - 0x00, 0x00, 0xc9, 0x09, 0x00, 0x00, 0x8e, 0xfe, - 0xff, 0xff, 0x0c, 0x5a, 0x01, 0x00, 0x12, 0x5a, - 0x01, 0x00, 0x20, 0xa1, 0x07, 0x00, 0x40, 0x42, - 0x0f, 0x00, 0x30, 0xb5, 0x0c, 0x4b, 0xfe, 0x24, - 0x1b, 0x88, 0x04, 0x40, 0xc0, 0x07, 0x5d, 0x07, - 0x6d, 0x0f, 0xdb, 0x08, 0xc0, 0x0f, 0x9c, 0x42, - 0x0b, 0xd8, 0x3c, 0x00, 0x9c, 0x26, 0x01, 0x00, - 0xa2, 0x18, 0x04, 0x3a, 0x9a, 0x42, 0x07, 0xd3, - 0x1a, 0x1b, 0x89, 0x5c, 0x01, 0x22, 0xaa, 0x40, - 0x11, 0x40, 0x01, 0xd0, 0x02, 0x21, 0x08, 0x43, - 0x30, 0xbd, 0x00, 0x00, 0xfa, 0x60, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x28, 0x03, 0xd0, 0x01, 0x1c, - 0x14, 0x20, 0xf5, 0xf7, 0xff, 0xfa, 0x80, 0xbd, - 0xb0, 0xb5, 0x04, 0x1c, 0xf7, 0xf7, 0x08, 0xfd, - 0x13, 0x4d, 0x00, 0x28, 0x3c, 0x00, 0xd8, 0x26, - 0x01, 0x00, 0x1d, 0xd1, 0xa0, 0x07, 0x16, 0xd5, - 0x02, 0x20, 0x84, 0x43, 0x11, 0x48, 0x01, 0x22, - 0x2a, 0x62, 0x40, 0x68, 0x00, 0x28, 0x13, 0xd0, - 0xf2, 0xf7, 0x51, 0xf9, 0x00, 0x28, 0x0f, 0xd1, - 0x0b, 0x48, 0xe4, 0x30, 0x80, 0x7a, 0x01, 0x28, - 0x00, 0xd0, 0x00, 0x22, 0x11, 0x1c, 0x01, 0x20, - 0xf2, 0xf7, 0xa5, 0xf9, 0x04, 0xe0, 0x00, 0xf0, - 0x4e, 0xfb, 0xe8, 0x61, 0xf2, 0xf7, 0x3c, 0x00, - 0x14, 0x27, 0x01, 0x00, 0x6b, 0xf9, 0xa9, 0x6a, - 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, 0xed, 0xf7, - 0x5c, 0xfe, 0xb0, 0xbd, 0x60, 0x6c, 0x01, 0x00, - 0xb0, 0x57, 0x01, 0x00, 0x20, 0x48, 0xb0, 0xb5, - 0x81, 0x68, 0x01, 0x29, 0x04, 0xd1, 0x00, 0x78, - 0x00, 0x28, 0x01, 0xd1, 0xfd, 0xf7, 0x72, 0xfd, - 0x1b, 0x4d, 0x80, 0x3d, 0x2c, 0x1c, 0x70, 0x34, - 0x20, 0x78, 0x03, 0x38, 0x05, 0x28, 0x18, 0xd2, - 0x3c, 0x00, 0x50, 0x27, 0x01, 0x00, 0x01, 0xa3, - 0x1b, 0x5c, 0x5b, 0x00, 0x9f, 0x44, 0x04, 0x15, - 0x27, 0x27, 0x27, 0x00, 0xfb, 0xf7, 0xf1, 0xff, - 0x60, 0x7b, 0x01, 0x1c, 0xff, 0x31, 0x61, 0x73, - 0x00, 0x28, 0xf7, 0xd1, 0x04, 0x20, 0x20, 0x70, - 0xa8, 0x89, 0xf8, 0xf7, 0xda, 0xf9, 0x01, 0x1c, - 0x00, 0x22, 0x0f, 0x20, 0x00, 0xf0, 0x25, 0xff, - 0xb0, 0xbd, 0xef, 0xf7, 0xce, 0xff, 0x6a, 0x21, - 0x49, 0x5b, 0x3c, 0x00, 0x8c, 0x27, 0x01, 0x00, - 0x88, 0x42, 0x0b, 0xd0, 0xe8, 0x89, 0xf8, 0xf7, - 0xcb, 0xf9, 0x01, 0x1c, 0x00, 0x23, 0x00, 0x22, - 0x0f, 0x20, 0x00, 0xf0, 0xf7, 0xff, 0x07, 0x20, - 0x20, 0x70, 0xb0, 0xbd, 0xfd, 0xf7, 0x3a, 0xfe, - 0xb0, 0xbd, 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, - 0xf0, 0xb5, 0x85, 0xb0, 0x04, 0x1c, 0x03, 0x80, - 0x18, 0x0c, 0x60, 0x80, 0x0d, 0x1c, 0x51, 0x78, - 0x10, 0x78, 0x09, 0x02, 0x3c, 0x00, 0xc8, 0x27, - 0x01, 0x00, 0x48, 0x40, 0xa0, 0x80, 0xd1, 0x78, - 0x90, 0x78, 0x09, 0x02, 0x48, 0x40, 0xe0, 0x80, - 0x51, 0x79, 0x10, 0x79, 0x09, 0x02, 0x48, 0x40, - 0x20, 0x81, 0x68, 0x46, 0x1a, 0x49, 0x14, 0x22, - 0xed, 0xf7, 0xe3, 0xfe, 0x00, 0x23, 0x00, 0x20, - 0xd9, 0x07, 0xc9, 0x0f, 0x8c, 0x46, 0x42, 0x00, - 0x56, 0x07, 0x76, 0x0f, 0x61, 0x46, 0x89, 0x19, - 0x49, 0x00, 0x6e, 0x5c, 0x49, 0x19, 0x3c, 0x00, - 0x04, 0x28, 0x01, 0x00, 0x49, 0x78, 0x6f, 0x46, - 0x09, 0x02, 0x4e, 0x40, 0x81, 0x00, 0x79, 0x58, - 0x0f, 0x4f, 0x49, 0x00, 0x61, 0x5a, 0x01, 0x30, - 0x4e, 0x40, 0x31, 0x06, 0x36, 0x0a, 0x76, 0x00, - 0xc9, 0x0d, 0x79, 0x5a, 0xf6, 0x19, 0x01, 0x27, - 0x7f, 0x02, 0xf6, 0x19, 0x36, 0x88, 0x71, 0x40, - 0xa6, 0x5a, 0x89, 0x19, 0xa1, 0x52, 0x05, 0x28, - 0xdc, 0xdb, 0x20, 0x89, 0xc0, 0x18, 0x01, 0x33, - 0x3c, 0x00, 0x40, 0x28, 0x01, 0x00, 0x08, 0x2b, - 0x20, 0x81, 0xd2, 0xdb, 0x05, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xd8, 0x56, 0x01, 0x00, 0xd8, 0x52, - 0x01, 0x00, 0xf0, 0xb5, 0x05, 0x1c, 0x0c, 0x1c, - 0x1e, 0x1c, 0x00, 0x20, 0x89, 0xb0, 0x41, 0x00, - 0x53, 0x5a, 0x01, 0x30, 0x06, 0xaf, 0x7b, 0x52, - 0x05, 0x28, 0xf8, 0xdb, 0x10, 0x89, 0x00, 0xab, - 0x3a, 0x49, 0x80, 0x19, 0x58, 0x84, 0x68, 0x46, - 0x18, 0x22, 0x3c, 0x00, 0x7c, 0x28, 0x01, 0x00, - 0xed, 0xf7, 0x98, 0xfe, 0x00, 0x20, 0x41, 0x00, - 0x0a, 0x19, 0x52, 0x78, 0x63, 0x5c, 0x6f, 0x46, - 0x12, 0x02, 0x53, 0x40, 0x82, 0x00, 0xba, 0x58, - 0x06, 0xaf, 0x52, 0x00, 0xba, 0x5a, 0x31, 0x4f, - 0x01, 0x30, 0x53, 0x40, 0x1a, 0x06, 0x1b, 0x0a, - 0x5b, 0x00, 0xd2, 0x0d, 0xba, 0x5a, 0xdb, 0x19, - 0x01, 0x27, 0x7f, 0x02, 0xdb, 0x19, 0x1b, 0x88, - 0x5a, 0x40, 0x06, 0xab, 0x3c, 0x00, 0xb8, 0x28, - 0x01, 0x00, 0x5b, 0x5a, 0xd2, 0x18, 0x06, 0xab, - 0x5a, 0x52, 0x06, 0x28, 0xde, 0xdb, 0x61, 0x7b, - 0x20, 0x7b, 0x00, 0xab, 0x09, 0x02, 0x48, 0x40, - 0x59, 0x8c, 0x48, 0x40, 0x41, 0x08, 0xc0, 0x03, - 0x48, 0x40, 0x19, 0x8b, 0x40, 0x18, 0x18, 0x83, - 0xe1, 0x7b, 0xa0, 0x7b, 0x09, 0x02, 0x48, 0x40, - 0x19, 0x8b, 0x48, 0x40, 0x41, 0x08, 0xc0, 0x03, - 0x48, 0x40, 0x59, 0x8b, 0x40, 0x18, 0x3c, 0x00, - 0xf4, 0x28, 0x01, 0x00, 0x58, 0x83, 0x02, 0x20, - 0x41, 0x00, 0x06, 0xaa, 0x8a, 0x18, 0x20, 0x3a, - 0xd2, 0x8b, 0x01, 0x30, 0x53, 0x08, 0xd2, 0x03, - 0x5a, 0x40, 0x06, 0xab, 0x5b, 0x5a, 0xd2, 0x18, - 0x06, 0xab, 0x5a, 0x52, 0x06, 0x28, 0xef, 0xdb, - 0x30, 0x0a, 0x28, 0x70, 0x70, 0x04, 0x40, 0x0e, - 0x20, 0x21, 0x08, 0x43, 0x68, 0x70, 0xae, 0x70, - 0x61, 0x78, 0x20, 0x78, 0x00, 0xab, 0x09, 0x02, - 0x3c, 0x00, 0x30, 0x29, 0x01, 0x00, 0x48, 0x40, - 0x59, 0x8c, 0x48, 0x40, 0xc0, 0x05, 0x00, 0x0e, - 0xe8, 0x70, 0x00, 0x20, 0x41, 0x00, 0x06, 0xaa, - 0x53, 0x5a, 0x4a, 0x19, 0x01, 0x30, 0x13, 0x71, - 0x06, 0xab, 0x59, 0x5a, 0x09, 0x0a, 0x51, 0x71, - 0x06, 0x28, 0xf3, 0xdb, 0x09, 0xb0, 0xf0, 0xbd, - 0x00, 0x00, 0xec, 0x56, 0x01, 0x00, 0xd8, 0x52, - 0x01, 0x00, 0xf0, 0xb5, 0x46, 0x68, 0x05, 0x1c, - 0x60, 0x30, 0x3c, 0x00, 0x6c, 0x29, 0x01, 0x00, - 0x85, 0xb0, 0x04, 0x90, 0x60, 0xe0, 0x68, 0x68, - 0x0c, 0x21, 0x07, 0x69, 0x00, 0x20, 0xee, 0xf7, - 0x2d, 0xfe, 0x70, 0x61, 0x01, 0x89, 0x04, 0x39, - 0x09, 0x04, 0x09, 0x0c, 0x01, 0x81, 0x70, 0x69, - 0x00, 0x68, 0x40, 0x18, 0x04, 0x21, 0xee, 0xf7, - 0x21, 0xfe, 0xf0, 0x61, 0x70, 0x69, 0x20, 0x21, - 0x04, 0x68, 0x04, 0x98, 0x04, 0x22, 0x40, 0x7b, - 0x80, 0x01, 0x08, 0x43, 0x3c, 0x00, 0xa8, 0x29, - 0x01, 0x00, 0xe0, 0x70, 0x28, 0x69, 0x40, 0x89, - 0xa0, 0x70, 0x28, 0x69, 0x40, 0x89, 0x00, 0x0a, - 0x20, 0x70, 0x29, 0x69, 0x0c, 0x31, 0xa0, 0x18, - 0xed, 0xf7, 0x9b, 0xfd, 0x20, 0x78, 0x20, 0x21, - 0x40, 0x06, 0x40, 0x0e, 0x08, 0x43, 0x60, 0x70, - 0x28, 0x69, 0x0a, 0x30, 0x01, 0x88, 0x01, 0x31, - 0x09, 0x04, 0x09, 0x0c, 0x01, 0x80, 0x04, 0xd1, - 0x28, 0x69, 0x0c, 0x30, 0x01, 0x68, 0x3c, 0x00, - 0xe4, 0x29, 0x01, 0x00, 0x01, 0x31, 0x01, 0x60, - 0x35, 0x62, 0x61, 0x79, 0x20, 0x79, 0x09, 0x02, - 0x40, 0x18, 0xa1, 0x79, 0x09, 0x04, 0x40, 0x18, - 0xe1, 0x79, 0x09, 0x06, 0x43, 0x18, 0x00, 0x93, - 0xa0, 0x78, 0x21, 0x78, 0x09, 0x02, 0x40, 0x18, - 0x04, 0x04, 0x24, 0x0c, 0x10, 0x20, 0xee, 0xf7, - 0x13, 0xff, 0xb0, 0x61, 0x28, 0x69, 0x3a, 0x1c, - 0x01, 0x68, 0x00, 0x9b, 0x01, 0xa8, 0x0a, 0x32, - 0x3c, 0x00, 0x20, 0x2a, 0x01, 0x00, 0xff, 0xf7, - 0xc8, 0xfe, 0x28, 0x69, 0x23, 0x1c, 0x01, 0x68, - 0xb0, 0x69, 0x01, 0xaa, 0xff, 0xf7, 0x11, 0xff, - 0x36, 0x68, 0x00, 0x2e, 0x9c, 0xd1, 0x03, 0x49, - 0x04, 0x48, 0x6a, 0x68, 0xf7, 0xf7, 0x63, 0xfb, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xfd, 0x6b, - 0x00, 0x00, 0xa0, 0x6a, 0x01, 0x00, 0x01, 0x38, - 0x07, 0x49, 0x40, 0x00, 0x09, 0x5c, 0x00, 0x29, - 0x06, 0xd0, 0x3c, 0x00, 0x5c, 0x2a, 0x01, 0x00, - 0x04, 0x49, 0x1c, 0x39, 0x08, 0x5c, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0xe6, 0x78, 0x01, 0x00, - 0xfe, 0xb5, 0x05, 0x1c, 0x00, 0x20, 0x02, 0x90, - 0x13, 0x48, 0x17, 0x1c, 0x00, 0x68, 0x0c, 0x1c, - 0x86, 0x78, 0x30, 0x1c, 0xfd, 0xf7, 0x28, 0xfa, - 0x00, 0x28, 0x01, 0xd1, 0x02, 0x98, 0xfe, 0xbd, - 0x00, 0x2d, 0x08, 0xd1, 0x3c, 0x00, 0x98, 0x2a, - 0x01, 0x00, 0x20, 0x68, 0x00, 0xab, 0x18, 0x71, - 0x60, 0x68, 0x58, 0x71, 0xa0, 0x68, 0x98, 0x71, - 0x03, 0x20, 0x38, 0x80, 0x29, 0x1c, 0x30, 0x1c, - 0x01, 0xaa, 0x00, 0xf0, 0x0e, 0xf8, 0x00, 0x2d, - 0xec, 0xd0, 0x00, 0xab, 0x19, 0x79, 0x21, 0x60, - 0x59, 0x79, 0x61, 0x60, 0x99, 0x79, 0xa1, 0x60, - 0x0c, 0x21, 0x39, 0x80, 0xe2, 0xe7, 0xf8, 0x6b, - 0x01, 0x00, 0xf8, 0xb5, 0x15, 0x1c, 0x3c, 0x00, - 0xd4, 0x2a, 0x01, 0x00, 0x42, 0x1e, 0x01, 0x38, - 0x47, 0x00, 0x3f, 0x18, 0x1f, 0x48, 0x3e, 0x18, - 0x00, 0x29, 0x06, 0xd0, 0x01, 0x24, 0x03, 0x22, - 0x31, 0x1c, 0x28, 0x1c, 0xed, 0xf7, 0x04, 0xfd, - 0x32, 0xe0, 0x68, 0x78, 0x01, 0x24, 0x00, 0x28, - 0x05, 0xd0, 0x29, 0x78, 0x08, 0x18, 0x01, 0x38, - 0x0e, 0x28, 0x00, 0xd9, 0x00, 0x24, 0x00, 0x2c, - 0x26, 0xd0, 0x00, 0x2a, 0x07, 0xd1, 0x2a, 0x21, - 0x3c, 0x00, 0x10, 0x2b, 0x01, 0x00, 0x12, 0x48, - 0xed, 0xf7, 0x9f, 0xfc, 0x1c, 0x21, 0x11, 0x48, - 0xed, 0xf7, 0x9b, 0xfc, 0x0f, 0x48, 0x03, 0x22, - 0x29, 0x1c, 0x30, 0x1c, 0xed, 0xf7, 0xe7, 0xfc, - 0x0c, 0x48, 0x71, 0x78, 0xc0, 0x5d, 0xb2, 0x78, - 0x00, 0x29, 0x0e, 0xd0, 0x00, 0x2a, 0x0c, 0xd0, - 0x01, 0x22, 0x43, 0x18, 0x08, 0x4d, 0x06, 0xe0, - 0x41, 0x00, 0x49, 0x19, 0x10, 0x39, 0x8a, 0x73, - 0xb7, 0x78, 0x3c, 0x00, 0x4c, 0x2b, 0x01, 0x00, - 0x01, 0x30, 0xcf, 0x73, 0x83, 0x42, 0xf6, 0xd8, - 0xfe, 0xf7, 0x60, 0xf8, 0x20, 0x1c, 0xf8, 0xbd, - 0xeb, 0x62, 0x01, 0x00, 0xca, 0x78, 0x01, 0x00, - 0x70, 0xb5, 0x05, 0x1c, 0x1c, 0x48, 0x00, 0x23, - 0xc0, 0x56, 0x43, 0x1c, 0x32, 0xd1, 0xa8, 0x7a, - 0xf8, 0xf7, 0x0c, 0xf9, 0x00, 0x26, 0x00, 0x28, - 0x18, 0x4c, 0x08, 0xd0, 0xe8, 0x69, 0xe1, 0x6b, - 0x00, 0x29, 0x0b, 0xd1, 0x3c, 0x00, 0x88, 0x2b, - 0x01, 0x00, 0x66, 0x63, 0x01, 0x21, 0xe1, 0x63, - 0xa6, 0x63, 0x06, 0xe0, 0xa8, 0x69, 0xe1, 0x6b, - 0x00, 0x29, 0x02, 0xd0, 0x66, 0x63, 0xa6, 0x63, - 0xe6, 0x63, 0xa1, 0x6b, 0x01, 0x31, 0xa1, 0x63, - 0x82, 0x03, 0x01, 0xd5, 0x0e, 0x4a, 0x10, 0x43, - 0xe2, 0x6b, 0x00, 0x2a, 0x00, 0xd0, 0x40, 0x42, - 0x62, 0x6b, 0x10, 0x18, 0x60, 0x63, 0x08, 0x29, - 0x0b, 0xd1, 0x00, 0x28, 0x01, 0xdd, 0x3c, 0x00, - 0xc4, 0x2b, 0x01, 0x00, 0x01, 0x20, 0x03, 0xe0, - 0x00, 0x28, 0x03, 0xda, 0x00, 0x20, 0xc0, 0x43, - 0xef, 0xf7, 0x62, 0xfe, 0x66, 0x63, 0xa6, 0x63, - 0x70, 0xbd, 0x00, 0x00, 0xf4, 0x6b, 0x01, 0x00, - 0x84, 0x6a, 0x01, 0x00, 0x00, 0x00, 0xfe, 0xff, - 0x0c, 0x21, 0x05, 0x4a, 0x41, 0x43, 0x89, 0x18, - 0x80, 0xb5, 0x89, 0x78, 0x00, 0x29, 0x01, 0xd1, - 0xf3, 0xf7, 0xf2, 0xfa, 0x80, 0xbd, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x2c, 0x01, 0x00, 0x60, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x1c, 0x00, 0x20, - 0xf7, 0xf7, 0x03, 0xfa, 0x80, 0xbd, 0x80, 0xb5, - 0x01, 0x1c, 0x01, 0x20, 0xf7, 0xf7, 0xfd, 0xf9, - 0x80, 0xbd, 0x02, 0x49, 0x89, 0x68, 0x40, 0x1a, - 0xc0, 0x0f, 0x70, 0x47, 0x00, 0x00, 0x00, 0x01, - 0x07, 0x00, 0x02, 0x49, 0x89, 0x68, 0x08, 0x1a, - 0xc0, 0x17, 0x01, 0x30, 0x70, 0x47, 0x00, 0x01, - 0x07, 0x00, 0x3c, 0x00, 0x3c, 0x2c, 0x01, 0x00, - 0x05, 0x49, 0x4a, 0x68, 0x01, 0x23, 0x1a, 0x43, - 0x4a, 0x60, 0x8a, 0x68, 0x10, 0x18, 0x88, 0x60, - 0x48, 0x68, 0x98, 0x43, 0x48, 0x60, 0x70, 0x47, - 0x00, 0x01, 0x07, 0x00, 0x10, 0xb5, 0x15, 0x4b, - 0x00, 0x21, 0x0a, 0x01, 0x9a, 0x58, 0x00, 0x2a, - 0x17, 0xd1, 0x01, 0x24, 0x0a, 0x01, 0x9c, 0x50, - 0xd2, 0x18, 0x10, 0x73, 0x00, 0x23, 0x53, 0x73, - 0x02, 0x23, 0x01, 0x28, 0x3c, 0x00, 0x78, 0x2c, - 0x01, 0x00, 0x0e, 0x4a, 0x05, 0xd1, 0xc8, 0x00, - 0x80, 0x18, 0x10, 0x30, 0x02, 0x78, 0x9a, 0x43, - 0x04, 0xe0, 0xc8, 0x00, 0x80, 0x18, 0x10, 0x30, - 0x02, 0x78, 0x1a, 0x43, 0x02, 0x70, 0x02, 0xe0, - 0x01, 0x31, 0x08, 0x29, 0xe0, 0xdb, 0x08, 0x29, - 0x04, 0xd1, 0x01, 0x21, 0x99, 0x20, 0xee, 0xf7, - 0xfe, 0xfa, 0x03, 0x49, 0x08, 0x04, 0x00, 0x0c, - 0x10, 0xbd, 0xac, 0x73, 0x01, 0x00, 0x3c, 0x00, - 0xb4, 0x2c, 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, - 0xff, 0xff, 0x00, 0x00, 0xf7, 0xb5, 0x19, 0x4f, - 0x19, 0x4e, 0x0c, 0x1c, 0xc1, 0x00, 0xc9, 0x19, - 0xb2, 0x68, 0x10, 0x31, 0x81, 0xb0, 0x01, 0x3a, - 0x4a, 0x60, 0x0b, 0x78, 0x1d, 0x1c, 0x0d, 0x22, - 0x93, 0x43, 0x0b, 0x70, 0x01, 0x22, 0x82, 0x40, - 0x3a, 0x73, 0x12, 0x4b, 0x00, 0x01, 0x03, 0x9a, - 0xc0, 0x18, 0x82, 0x60, 0x10, 0x4a, 0x10, 0x1c, - 0x3c, 0x00, 0xf0, 0x2c, 0x01, 0x00, 0x20, 0x30, - 0x87, 0x79, 0x00, 0xab, 0x1f, 0x70, 0xc0, 0x79, - 0x58, 0x70, 0xb0, 0x68, 0x03, 0x30, 0x00, 0x23, - 0x26, 0x1a, 0x01, 0xd5, 0x04, 0x1c, 0x01, 0x23, - 0x4c, 0x60, 0x0d, 0x70, 0x00, 0x2b, 0x04, 0xd0, - 0x20, 0x1c, 0xff, 0xf7, 0x8a, 0xff, 0x00, 0x28, - 0xfa, 0xd0, 0x00, 0xab, 0x18, 0x88, 0xd0, 0x84, - 0xff, 0xbd, 0x00, 0x60, 0x07, 0x00, 0x00, 0x01, - 0x07, 0x00, 0x3c, 0x00, 0x2c, 0x2d, 0x01, 0x00, - 0xac, 0x73, 0x01, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x30, 0xb5, 0x00, 0x20, 0xc0, 0x43, 0x0b, 0x4c, - 0x09, 0x4b, 0x00, 0x22, 0xd1, 0x00, 0x09, 0x19, - 0x0d, 0x7c, 0xed, 0x07, 0x07, 0xd5, 0x49, 0x69, - 0x9d, 0x68, 0x49, 0x1b, 0x00, 0xd5, 0x00, 0x21, - 0x81, 0x42, 0x00, 0xd2, 0x08, 0x1c, 0x01, 0x32, - 0x08, 0x2a, 0xef, 0xdb, 0x30, 0xbd, 0x00, 0x00, - 0x00, 0x01, 0x07, 0x00, 0x3c, 0x00, 0x68, 0x2d, - 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, 0xb0, 0xb5, - 0x08, 0x28, 0x0b, 0xd2, 0x08, 0x4d, 0x04, 0x01, - 0x29, 0x59, 0x00, 0x29, 0x04, 0xd0, 0x00, 0xf0, - 0x4a, 0xf8, 0x00, 0x20, 0x28, 0x51, 0xb0, 0xbd, - 0x02, 0x21, 0x00, 0xe0, 0x03, 0x21, 0x99, 0x20, - 0xee, 0xf7, 0x89, 0xfa, 0xb0, 0xbd, 0xac, 0x73, - 0x01, 0x00, 0x03, 0x49, 0x00, 0x01, 0x40, 0x18, - 0x41, 0x7b, 0x08, 0x22, 0x11, 0x43, 0x3c, 0x00, - 0xa4, 0x2d, 0x01, 0x00, 0x41, 0x73, 0x70, 0x47, - 0xac, 0x73, 0x01, 0x00, 0x01, 0x48, 0x80, 0x68, - 0x70, 0x47, 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, - 0x70, 0xb5, 0x0b, 0x4e, 0x09, 0x4d, 0x00, 0x22, - 0xd0, 0x00, 0x84, 0x19, 0x20, 0x7c, 0xc0, 0x07, - 0x07, 0xd5, 0x60, 0x69, 0xff, 0xf7, 0x26, 0xff, - 0x00, 0x28, 0x02, 0xd0, 0xa8, 0x68, 0x32, 0x30, - 0x60, 0x61, 0x01, 0x32, 0x08, 0x2a, 0xef, 0xdb, - 0x3c, 0x00, 0xe0, 0x2d, 0x01, 0x00, 0x70, 0xbd, - 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x02, 0x4a, 0xc0, 0x00, 0x80, 0x18, - 0x01, 0x74, 0x70, 0x47, 0x00, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x04, 0x49, 0xc0, 0x00, 0x41, 0x18, - 0x08, 0x7c, 0x08, 0x23, 0x02, 0x1c, 0x9a, 0x43, - 0x0a, 0x74, 0x70, 0x47, 0x00, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x70, 0xb5, 0x08, 0x28, 0x17, 0xd2, - 0x0e, 0x49, 0x3c, 0x00, 0x1c, 0x2e, 0x01, 0x00, - 0x8a, 0x68, 0x0e, 0x4d, 0x01, 0x3a, 0xc1, 0x00, - 0x49, 0x19, 0x4a, 0x61, 0x0c, 0x4b, 0x9a, 0x79, - 0x10, 0x31, 0x0c, 0x78, 0x0d, 0x26, 0xb4, 0x43, - 0x0c, 0x70, 0x01, 0x21, 0x81, 0x40, 0x29, 0x73, - 0x9a, 0x71, 0x09, 0x4a, 0x07, 0x49, 0x00, 0x01, - 0x80, 0x18, 0x41, 0x60, 0x70, 0xbd, 0x05, 0x21, - 0x99, 0x20, 0xee, 0xf7, 0x29, 0xfa, 0x70, 0xbd, - 0x00, 0x01, 0x07, 0x00, 0x3c, 0x00, 0x58, 0x2e, - 0x01, 0x00, 0x00, 0x60, 0x07, 0x00, 0x20, 0x10, - 0x07, 0x00, 0xd1, 0x75, 0x00, 0x00, 0xac, 0x73, - 0x01, 0x00, 0xf8, 0xb5, 0x9e, 0x46, 0x1a, 0x4b, - 0x94, 0x46, 0x9b, 0x68, 0x1a, 0x4c, 0xc2, 0x00, - 0x12, 0x19, 0x01, 0x3b, 0x53, 0x61, 0x15, 0x1c, - 0x18, 0x4c, 0xa6, 0x79, 0x2a, 0x1c, 0x10, 0x32, - 0x13, 0x78, 0x0d, 0x27, 0xbb, 0x43, 0x13, 0x70, - 0x01, 0x27, 0x12, 0x4b, 0x87, 0x40, 0x3c, 0x00, - 0x94, 0x2e, 0x01, 0x00, 0x1f, 0x73, 0xa6, 0x71, - 0x12, 0x4e, 0x00, 0x01, 0x80, 0x19, 0x63, 0x46, - 0x43, 0x60, 0x73, 0x46, 0x83, 0x60, 0x13, 0x78, - 0x40, 0x7b, 0xa6, 0x79, 0x01, 0x27, 0x18, 0x43, - 0x38, 0x43, 0x14, 0x35, 0x00, 0xab, 0x1e, 0x70, - 0xe4, 0x79, 0x5c, 0x70, 0x06, 0x4b, 0x9b, 0x68, - 0x03, 0x33, 0xcc, 0x1a, 0x00, 0xd5, 0x19, 0x1c, - 0x29, 0x60, 0x10, 0x70, 0x00, 0xab, 0x18, 0x88, - 0x3c, 0x00, 0xd0, 0x2e, 0x01, 0x00, 0x03, 0x4c, - 0x20, 0x3c, 0xe0, 0x84, 0xf8, 0xbd, 0x00, 0x01, - 0x07, 0x00, 0x00, 0x60, 0x07, 0x00, 0x20, 0x10, - 0x07, 0x00, 0xac, 0x73, 0x01, 0x00, 0x00, 0xb5, - 0x01, 0x1c, 0xff, 0xf7, 0x5e, 0xff, 0x42, 0x18, - 0x10, 0x1c, 0xff, 0xf7, 0x92, 0xfe, 0x00, 0x28, - 0xfa, 0xd0, 0x00, 0xbd, 0x00, 0x00, 0x89, 0x1a, - 0x40, 0x1a, 0x99, 0x18, 0x88, 0x42, 0x01, 0xd8, - 0x01, 0x20, 0x3c, 0x00, 0x0c, 0x2f, 0x01, 0x00, - 0x70, 0x47, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0xf8, 0xb5, 0x0f, 0x1c, 0x04, 0x1c, 0x00, 0x28, - 0x01, 0xd1, 0xee, 0xf7, 0xef, 0xf9, 0x21, 0x1c, - 0x01, 0x20, 0xff, 0xf7, 0x19, 0xfa, 0x41, 0x20, - 0x00, 0x5d, 0x00, 0x28, 0x01, 0xd1, 0x00, 0x25, - 0x04, 0xe0, 0x02, 0x28, 0x01, 0xd1, 0x05, 0x25, - 0x00, 0xe0, 0x01, 0x25, 0xe0, 0x68, 0xee, 0xf7, - 0x29, 0xfb, 0xa6, 0x6b, 0x3c, 0x00, 0x48, 0x2f, - 0x01, 0x00, 0x00, 0x2e, 0x10, 0xd0, 0x00, 0x2f, - 0x06, 0xd0, 0x2f, 0x20, 0x02, 0x5d, 0x20, 0x6a, - 0x41, 0x6b, 0x28, 0x1c, 0xed, 0xf7, 0x44, 0xfa, - 0xa0, 0x69, 0x00, 0x28, 0x01, 0xd0, 0xee, 0xf7, - 0x46, 0xfc, 0x20, 0x6a, 0xee, 0xf7, 0x43, 0xfc, - 0x20, 0x1c, 0xee, 0xf7, 0x40, 0xfc, 0x30, 0x1c, - 0xf8, 0xbd, 0xb0, 0xb5, 0x04, 0x1c, 0xc0, 0x6b, - 0x00, 0x28, 0x09, 0xd0, 0x20, 0x69, 0x3c, 0x00, - 0x84, 0x2f, 0x01, 0x00, 0x00, 0x8b, 0xee, 0xf7, - 0x55, 0xf9, 0x00, 0x28, 0x03, 0xd0, 0x21, 0x1c, - 0x06, 0x20, 0xff, 0xf7, 0xe3, 0xf9, 0x08, 0x4d, - 0x20, 0x1c, 0xa9, 0x6d, 0xff, 0xf7, 0xba, 0xff, - 0x00, 0x28, 0x07, 0xd0, 0xe8, 0x68, 0x01, 0x30, - 0xe8, 0x60, 0x28, 0x6a, 0x01, 0x38, 0x28, 0x62, - 0xfc, 0xf7, 0x78, 0xf8, 0xb0, 0xbd, 0x00, 0x00, - 0xc4, 0x69, 0x01, 0x00, 0x10, 0xb5, 0x06, 0x4c, - 0x3c, 0x00, 0xc0, 0x2f, 0x01, 0x00, 0xe1, 0x6d, - 0xff, 0xf7, 0xa7, 0xff, 0x00, 0x28, 0x04, 0xd0, - 0xe0, 0x69, 0x01, 0x38, 0xe0, 0x61, 0xfc, 0xf7, - 0x68, 0xf8, 0x10, 0xbd, 0x00, 0x00, 0xc4, 0x69, - 0x01, 0x00, 0x0c, 0x23, 0x0c, 0x49, 0x58, 0x43, - 0x40, 0x18, 0x10, 0xb5, 0x44, 0x68, 0xa1, 0x68, - 0x00, 0x29, 0x02, 0xd0, 0x20, 0x1c, 0xed, 0xf7, - 0xf3, 0xf9, 0xe0, 0x6b, 0x00, 0x28, 0x08, 0xd0, - 0x20, 0x69, 0x3c, 0x00, 0xfc, 0x2f, 0x01, 0x00, - 0x00, 0x8b, 0xee, 0xf7, 0x19, 0xf9, 0x00, 0x28, - 0x02, 0xd0, 0x20, 0x1c, 0xf9, 0xf7, 0x26, 0xf9, - 0x10, 0xbd, 0x00, 0x00, 0x60, 0x7b, 0x01, 0x00, - 0xf8, 0xb5, 0x22, 0x49, 0x48, 0x68, 0x80, 0x00, - 0x06, 0xd4, 0x01, 0x20, 0x40, 0x07, 0x08, 0x60, - 0x4a, 0x69, 0x92, 0x00, 0x00, 0xd4, 0x48, 0x60, - 0x1d, 0x4f, 0x78, 0x7e, 0xc3, 0x06, 0x01, 0x20, - 0x02, 0x1c, 0xdb, 0x0e, 0x3c, 0x00, 0x38, 0x30, - 0x01, 0x00, 0x9a, 0x40, 0x0a, 0x60, 0x79, 0x69, - 0x8c, 0x68, 0x8c, 0x60, 0x21, 0x07, 0x89, 0x0f, - 0x09, 0xd0, 0x21, 0x07, 0x04, 0xd5, 0x0b, 0x21, - 0x9e, 0x20, 0xee, 0xf7, 0x28, 0xf9, 0x00, 0xe0, - 0x78, 0x64, 0x0c, 0x20, 0x84, 0x43, 0x12, 0x48, - 0x3d, 0x68, 0x06, 0x5d, 0x6c, 0x68, 0x2c, 0x34, - 0x06, 0xe0, 0xa0, 0x68, 0x00, 0x68, 0xa0, 0x60, - 0xe9, 0x68, 0x28, 0x1c, 0xed, 0xf7, 0x3c, 0x00, - 0x74, 0x30, 0x01, 0x00, 0xb2, 0xf9, 0x01, 0x3e, - 0xf6, 0xd2, 0xa0, 0x68, 0x80, 0x68, 0x00, 0x28, - 0x0d, 0xd0, 0x40, 0x89, 0x00, 0x28, 0x0a, 0xd0, - 0x78, 0x6c, 0x00, 0x28, 0x07, 0xd1, 0x78, 0x69, - 0x80, 0x68, 0x80, 0x07, 0x03, 0xd1, 0x0c, 0x21, - 0x9e, 0x20, 0xee, 0xf7, 0x03, 0xf9, 0xf8, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0xcc, 0x6d, 0x01, 0x00, - 0xb4, 0x44, 0x01, 0x00, 0x09, 0x49, 0x80, 0xb5, - 0x3c, 0x00, 0xb0, 0x30, 0x01, 0x00, 0x08, 0x7e, - 0xc2, 0x06, 0xd2, 0x0e, 0x01, 0x20, 0x90, 0x40, - 0x07, 0x4a, 0x10, 0x60, 0x00, 0x20, 0x0a, 0x69, - 0xc0, 0x43, 0x90, 0x60, 0x08, 0x68, 0x24, 0x31, - 0x06, 0xc9, 0x03, 0x69, 0xed, 0xf7, 0x86, 0xf9, - 0x80, 0xbd, 0xcc, 0x6d, 0x01, 0x00, 0x00, 0x10, - 0x07, 0x00, 0xf8, 0xb5, 0x44, 0x68, 0x06, 0x1c, - 0x2c, 0x34, 0x20, 0x68, 0x0d, 0x1c, 0x80, 0x68, - 0x00, 0x90, 0x3c, 0x00, 0xec, 0x30, 0x01, 0x00, - 0x00, 0x28, 0x00, 0xd0, 0xc5, 0x60, 0x20, 0x68, - 0x00, 0x68, 0x20, 0x60, 0x40, 0x68, 0x00, 0x28, - 0x03, 0xd0, 0x0a, 0x21, 0x9e, 0x20, 0xee, 0xf7, - 0xcf, 0xf8, 0x20, 0x68, 0x45, 0x60, 0x28, 0x1c, - 0x02, 0xe0, 0x00, 0x22, 0x42, 0x60, 0x08, 0x1c, - 0xc1, 0x68, 0x00, 0x29, 0xf9, 0xd1, 0x71, 0x68, - 0x60, 0x27, 0x0b, 0x1c, 0x40, 0x33, 0x9c, 0x46, - 0x9b, 0x78, 0xca, 0x7e, 0x3c, 0x00, 0x28, 0x31, - 0x01, 0x00, 0x5b, 0x01, 0x12, 0x07, 0x12, 0x0f, - 0x3b, 0x40, 0x1a, 0x43, 0x8b, 0x8f, 0xff, 0x27, - 0x3f, 0x04, 0x1b, 0x04, 0x3b, 0x40, 0x1a, 0x43, - 0x90, 0x23, 0x1a, 0x43, 0x42, 0x60, 0x63, 0x46, - 0x9a, 0x78, 0x01, 0x32, 0xd2, 0x07, 0xd2, 0x0f, - 0x9a, 0x70, 0x89, 0x6b, 0xc1, 0x60, 0x21, 0x68, - 0x88, 0x60, 0x00, 0x98, 0x00, 0x28, 0x01, 0xd0, - 0x00, 0x98, 0xc5, 0x60, 0x0a, 0x4f, 0x3c, 0x00, - 0x64, 0x31, 0x01, 0x00, 0xbd, 0x79, 0xa0, 0x69, - 0x00, 0x28, 0x0c, 0xd0, 0x00, 0x22, 0xa2, 0x61, - 0x74, 0x68, 0x60, 0x69, 0xef, 0xf7, 0x2e, 0xff, - 0xe0, 0x6a, 0x61, 0x69, 0x40, 0x68, 0x48, 0x60, - 0x61, 0x69, 0x01, 0x20, 0x08, 0x60, 0xbd, 0x71, - 0xf8, 0xbd, 0x00, 0x00, 0x20, 0x10, 0x07, 0x00, - 0xfe, 0xb5, 0x44, 0x68, 0x0f, 0x1c, 0x01, 0x94, - 0x2c, 0x34, 0x20, 0x1c, 0x12, 0x30, 0x02, 0x90, - 0x3c, 0x00, 0xa0, 0x31, 0x01, 0x00, 0x2c, 0xe0, - 0x0c, 0x20, 0xee, 0xf7, 0x00, 0xfb, 0x05, 0x1c, - 0x60, 0x68, 0x00, 0x28, 0x1d, 0xd1, 0x02, 0x98, - 0x00, 0x21, 0x00, 0x90, 0x00, 0x20, 0xee, 0xf7, - 0x0e, 0xfa, 0x06, 0x1c, 0x00, 0x98, 0x04, 0x21, - 0xee, 0xf7, 0x09, 0xfa, 0x01, 0x1c, 0x01, 0x98, - 0xc0, 0x7e, 0x00, 0x07, 0x00, 0x0f, 0xd0, 0x30, - 0x70, 0x60, 0x01, 0x98, 0xc0, 0x7e, 0x00, 0x07, - 0x00, 0x0f, 0x3c, 0x00, 0xdc, 0x31, 0x01, 0x00, - 0xf0, 0x30, 0x48, 0x60, 0x30, 0x1c, 0xee, 0xf7, - 0x19, 0xf9, 0x65, 0x60, 0xe6, 0x60, 0x01, 0xe0, - 0x20, 0x68, 0x05, 0x60, 0x60, 0x68, 0x28, 0x60, - 0x25, 0x60, 0x00, 0x20, 0x68, 0x60, 0xa8, 0x60, - 0x38, 0x1c, 0xff, 0x30, 0x00, 0x06, 0x00, 0x0e, - 0x39, 0x1c, 0x07, 0x1c, 0x00, 0x29, 0xca, 0xd1, - 0x60, 0x68, 0xa0, 0x60, 0xfe, 0xbd, 0x00, 0x00, - 0xff, 0xb5, 0x05, 0x1c, 0x3c, 0x00, 0x18, 0x32, - 0x01, 0x00, 0x08, 0x1c, 0x00, 0x26, 0x81, 0xb0, - 0xf4, 0xf7, 0x2f, 0xfe, 0x04, 0x1c, 0x02, 0xd0, - 0x60, 0x68, 0xff, 0x28, 0x01, 0xd1, 0x06, 0x26, - 0x28, 0xe0, 0x21, 0x1c, 0x20, 0x31, 0x0a, 0x78, - 0x01, 0x2a, 0x01, 0xd1, 0x03, 0x26, 0x21, 0xe0, - 0x01, 0x27, 0x25, 0x60, 0x0f, 0x70, 0x11, 0xc5, - 0x1d, 0x48, 0x08, 0x3d, 0x68, 0x61, 0x03, 0x98, - 0x6a, 0x46, 0xe8, 0x60, 0x04, 0x98, 0x3c, 0x00, - 0x54, 0x32, 0x01, 0x00, 0x28, 0x61, 0x1a, 0x48, - 0xa8, 0x61, 0x1a, 0x48, 0xe8, 0x61, 0x1a, 0x48, - 0x28, 0x62, 0x1a, 0x48, 0x68, 0x62, 0x20, 0x7e, - 0xa1, 0x68, 0xed, 0xf7, 0xb3, 0xfe, 0x00, 0x28, - 0x06, 0xd1, 0x60, 0x7e, 0xe1, 0x68, 0x6a, 0x46, - 0xed, 0xf7, 0xac, 0xfe, 0x00, 0x28, 0x07, 0xd0, - 0x04, 0x26, 0x31, 0x1c, 0x9e, 0x20, 0xee, 0xf7, - 0x0d, 0xf8, 0x30, 0x1c, 0x05, 0xb0, 0xf0, 0xbd, - 0x3c, 0x00, 0x90, 0x32, 0x01, 0x00, 0x6a, 0x46, - 0x0f, 0x49, 0x1d, 0x20, 0xed, 0xf7, 0x9d, 0xfe, - 0x01, 0x21, 0x0d, 0x48, 0x49, 0x07, 0x01, 0x60, - 0x22, 0x7e, 0x3b, 0x1c, 0xd2, 0x06, 0xd2, 0x0e, - 0x93, 0x40, 0x43, 0x60, 0x62, 0x7e, 0xd2, 0x06, - 0xd2, 0x0e, 0x97, 0x40, 0x47, 0x60, 0x41, 0x60, - 0xe6, 0xe7, 0x31, 0x33, 0x01, 0x00, 0xd9, 0x32, - 0x01, 0x00, 0x91, 0x31, 0x01, 0x00, 0xdd, 0x30, - 0x01, 0x00, 0x3c, 0x00, 0xcc, 0x32, 0x01, 0x00, - 0xfd, 0x32, 0x01, 0x00, 0x71, 0x33, 0x01, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x42, 0x68, 0x2c, 0x32, - 0x50, 0x68, 0x43, 0x68, 0x0b, 0x60, 0x81, 0x68, - 0x4b, 0x89, 0x0b, 0x81, 0x83, 0x68, 0x00, 0x21, - 0xd9, 0x60, 0x41, 0x60, 0x81, 0x60, 0x00, 0x68, - 0x50, 0x60, 0x00, 0x20, 0x70, 0x47, 0x00, 0x00, - 0x70, 0xb5, 0x42, 0x68, 0xff, 0x26, 0x91, 0x87, - 0x10, 0x6b, 0x0c, 0x04, 0x3c, 0x00, 0x08, 0x33, - 0x01, 0x00, 0x05, 0x1c, 0x36, 0x04, 0x34, 0x40, - 0x43, 0x68, 0x59, 0x68, 0xb1, 0x43, 0x21, 0x43, - 0x59, 0x60, 0x00, 0x68, 0xa8, 0x42, 0xf7, 0xd1, - 0x10, 0x6b, 0x51, 0x69, 0x40, 0x68, 0x48, 0x60, - 0x51, 0x69, 0x01, 0x20, 0x08, 0x60, 0x70, 0xbd, - 0x00, 0x00, 0xb0, 0xb5, 0x43, 0x68, 0x08, 0x1c, - 0x59, 0x62, 0x9a, 0x62, 0x00, 0x25, 0x0a, 0xe0, - 0x45, 0x81, 0xc4, 0x68, 0x2a, 0x1c, 0x3c, 0x00, - 0x44, 0x33, 0x01, 0x00, 0x00, 0x2c, 0x03, 0xd1, - 0x9a, 0x7e, 0x12, 0x07, 0x12, 0x0f, 0x10, 0x32, - 0x42, 0x60, 0x20, 0x1c, 0x00, 0x28, 0xf2, 0xd1, - 0x18, 0x69, 0x41, 0x60, 0x19, 0x69, 0x01, 0x20, - 0x08, 0x60, 0x02, 0x48, 0x00, 0x68, 0xed, 0xf7, - 0x37, 0xf8, 0xb0, 0xbd, 0x5c, 0x5b, 0x01, 0x00, - 0x01, 0x20, 0x05, 0x49, 0x40, 0x07, 0x80, 0xb5, - 0x88, 0x60, 0x04, 0x48, 0x01, 0x68, 0x0d, 0x20, - 0x3c, 0x00, 0x80, 0x33, 0x01, 0x00, 0xfe, 0xf7, - 0xe6, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0xc4, 0x60, 0x01, 0x00, 0xf8, 0xb5, - 0x0e, 0x4f, 0x0c, 0x4e, 0x00, 0x24, 0x48, 0x20, - 0x60, 0x43, 0xc5, 0x19, 0x48, 0x21, 0x28, 0x1c, - 0xed, 0xf7, 0x7b, 0xf8, 0x1c, 0x20, 0x60, 0x43, - 0x81, 0x19, 0x28, 0x1d, 0x1c, 0x22, 0xed, 0xf7, - 0xfe, 0xf8, 0x1c, 0x23, 0xe8, 0x56, 0x05, 0x49, - 0xfb, 0xf7, 0x3c, 0x00, 0xbc, 0x33, 0x01, 0x00, - 0xcd, 0xf8, 0x01, 0x34, 0x01, 0x2c, 0xe9, 0xd3, - 0xf8, 0xbd, 0x00, 0x00, 0xb8, 0x44, 0x01, 0x00, - 0xcc, 0x6d, 0x01, 0x00, 0x15, 0x32, 0x01, 0x00, - 0xff, 0xb5, 0x05, 0x1c, 0x0a, 0x30, 0x06, 0x1c, - 0x81, 0xb0, 0xf2, 0xf7, 0xdd, 0xf8, 0x18, 0x4f, - 0x04, 0x1c, 0x39, 0x88, 0xef, 0xf7, 0xbc, 0xfc, - 0x32, 0x88, 0x78, 0x68, 0x02, 0x80, 0x72, 0x88, - 0x02, 0x30, 0x02, 0x80, 0x3c, 0x00, 0xf8, 0x33, - 0x01, 0x00, 0xb1, 0x88, 0x12, 0x4e, 0x41, 0x80, - 0x28, 0x88, 0x08, 0x36, 0x40, 0x05, 0x00, 0x28, - 0x05, 0xda, 0x69, 0x88, 0x03, 0x9a, 0x20, 0x1c, - 0xf7, 0xf7, 0x01, 0xfd, 0x00, 0xe0, 0x00, 0x20, - 0x70, 0x80, 0xf8, 0xf7, 0x5e, 0xfc, 0x01, 0x21, - 0x09, 0x03, 0x00, 0x28, 0x30, 0x88, 0x01, 0xd0, - 0x88, 0x43, 0x00, 0xe0, 0x08, 0x43, 0x30, 0x80, - 0x05, 0x48, 0x00, 0x22, 0x00, 0x21, 0x3c, 0x00, - 0x34, 0x34, 0x01, 0x00, 0x14, 0x30, 0xef, 0xf7, - 0x65, 0xfc, 0x20, 0x1c, 0xf9, 0xf7, 0x74, 0xf8, - 0x05, 0xb0, 0xf0, 0xbd, 0xb0, 0x7a, 0x01, 0x00, - 0x10, 0xb5, 0x0e, 0x4c, 0x60, 0x68, 0xf8, 0xf7, - 0x95, 0xf9, 0x20, 0x68, 0x00, 0x6a, 0x00, 0x28, - 0x13, 0xd1, 0xf8, 0xf7, 0xbf, 0xfc, 0x00, 0x28, - 0x08, 0xd0, 0x21, 0x68, 0x01, 0x20, 0x08, 0x62, - 0x1f, 0x21, 0x00, 0x22, 0x83, 0x20, 0x00, 0xf0, - 0x3c, 0x00, 0x70, 0x34, 0x01, 0x00, 0x9f, 0xf9, - 0x02, 0xe0, 0x60, 0x68, 0xf8, 0xf7, 0x21, 0xfa, - 0xff, 0xf7, 0x97, 0xfc, 0x21, 0x68, 0x08, 0x61, - 0x10, 0xbd, 0x14, 0x7a, 0x01, 0x00, 0xfe, 0xb5, - 0x1b, 0x4e, 0x0f, 0x1c, 0x1d, 0x1c, 0x14, 0x1c, - 0xb0, 0x60, 0x08, 0x1c, 0xf7, 0xf7, 0x2b, 0xff, - 0xb0, 0x80, 0x34, 0x73, 0x35, 0x62, 0x38, 0x1c, - 0x01, 0xaa, 0x02, 0xa9, 0xf7, 0xf7, 0x25, 0xff, - 0x00, 0xab, 0x3c, 0x00, 0xac, 0x34, 0x01, 0x00, - 0x18, 0x7a, 0x01, 0x28, 0x18, 0xd1, 0x18, 0x79, - 0x0b, 0x28, 0x08, 0xd1, 0x30, 0x7f, 0x24, 0x23, - 0x0f, 0x49, 0x58, 0x43, 0x40, 0x18, 0x80, 0x68, - 0xec, 0xf7, 0x88, 0xff, 0xfe, 0xbd, 0x00, 0xab, - 0x18, 0x79, 0x0a, 0x28, 0x08, 0xd1, 0xf7, 0xf7, - 0x39, 0xfd, 0x07, 0x1c, 0x29, 0x1c, 0x20, 0x1c, - 0xf7, 0xf7, 0x16, 0xfd, 0x38, 0x18, 0xb0, 0x80, - 0x30, 0x7f, 0x24, 0x23, 0x3c, 0x00, 0xe8, 0x34, - 0x01, 0x00, 0x04, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x40, 0x68, 0xec, 0xf7, 0x72, 0xff, 0xe8, 0xe7, - 0x00, 0x00, 0xd4, 0x79, 0x01, 0x00, 0x94, 0x46, - 0x01, 0x00, 0xb0, 0xb5, 0xff, 0xf7, 0x53, 0xfc, - 0x04, 0x1c, 0xfb, 0xf7, 0xfc, 0xfa, 0x0c, 0x4d, - 0x29, 0x68, 0x09, 0x69, 0x09, 0x1b, 0x0c, 0x1a, - 0x02, 0x21, 0x1f, 0x20, 0x00, 0xf0, 0x8b, 0xf8, - 0x14, 0x2c, 0x06, 0xdd, 0x02, 0x22, 0x3c, 0x00, - 0x24, 0x35, 0x01, 0x00, 0x21, 0x1c, 0x1f, 0x20, - 0x00, 0xf0, 0x50, 0xf8, 0x01, 0x20, 0xb0, 0xbd, - 0x29, 0x68, 0x01, 0x20, 0x89, 0x6a, 0x00, 0x29, - 0xf9, 0xd0, 0x00, 0x20, 0xb0, 0xbd, 0x00, 0x00, - 0x14, 0x7a, 0x01, 0x00, 0xf8, 0xb5, 0x1a, 0x4d, - 0x07, 0x1c, 0xae, 0x79, 0x01, 0x21, 0x19, 0x4c, - 0x00, 0x20, 0x22, 0x68, 0x00, 0x2a, 0x14, 0xd1, - 0xae, 0x71, 0xa2, 0x68, 0xd0, 0x68, 0x06, 0xca, - 0x3c, 0x00, 0x60, 0x35, 0x01, 0x00, 0xec, 0xf7, - 0x3c, 0xff, 0xae, 0x79, 0x00, 0x21, 0x13, 0x4a, - 0x50, 0x69, 0x01, 0x30, 0x50, 0x61, 0xa0, 0x68, - 0x80, 0x68, 0xa0, 0x60, 0x62, 0x68, 0x90, 0x42, - 0x06, 0xd1, 0x01, 0x20, 0x20, 0x60, 0x03, 0xe0, - 0x01, 0x30, 0x0c, 0x34, 0x03, 0x28, 0xe3, 0xdb, - 0x00, 0x2f, 0x08, 0xd1, 0x00, 0x29, 0x0a, 0xd0, - 0x0a, 0x48, 0x40, 0x68, 0x00, 0x28, 0x06, 0xd0, - 0xfa, 0xf7, 0x3c, 0x00, 0x9c, 0x35, 0x01, 0x00, - 0xf5, 0xff, 0x03, 0xe0, 0x01, 0x2f, 0x03, 0xd0, - 0x00, 0x29, 0x01, 0xd1, 0xae, 0x71, 0xce, 0xe7, - 0xae, 0x71, 0xf8, 0xbd, 0x20, 0x10, 0x07, 0x00, - 0x18, 0xd9, 0x01, 0x00, 0xa8, 0x60, 0x01, 0x00, - 0x70, 0x5d, 0x01, 0x00, 0x80, 0xb5, 0x01, 0x23, - 0xf5, 0xf7, 0x7c, 0xf8, 0x80, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0x00, 0x23, 0xf5, 0xf7, 0x76, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x35, - 0x01, 0x00, 0xf8, 0xb5, 0x13, 0x4b, 0x00, 0x24, - 0x1b, 0x88, 0x98, 0x42, 0x1b, 0xd2, 0x11, 0x4b, - 0xc0, 0x00, 0xc0, 0x18, 0x45, 0x68, 0x06, 0x68, - 0x28, 0x68, 0x00, 0x28, 0x17, 0xd1, 0x0e, 0x4f, - 0xa8, 0x68, 0x43, 0x68, 0xb3, 0x42, 0x09, 0xd1, - 0xc3, 0x68, 0x8b, 0x42, 0x06, 0xd1, 0x03, 0x68, - 0x93, 0x42, 0x01, 0xd0, 0x53, 0x1c, 0x01, 0xd1, - 0x01, 0x24, 0x47, 0x60, 0x80, 0x68, 0x3c, 0x00, - 0x14, 0x36, 0x01, 0x00, 0x6b, 0x68, 0x83, 0x42, - 0xee, 0xd1, 0x03, 0xe0, 0x01, 0x21, 0x80, 0x20, - 0xed, 0xf7, 0x40, 0xfe, 0x20, 0x1c, 0xf8, 0xbd, - 0x56, 0x57, 0x01, 0x00, 0x84, 0x5d, 0x01, 0x00, - 0x29, 0xe3, 0x00, 0x00, 0xf8, 0xb5, 0x17, 0x4f, - 0x0a, 0x1c, 0xbe, 0x79, 0x16, 0x4d, 0x00, 0x23, - 0x6c, 0x68, 0x07, 0xe0, 0x21, 0x68, 0x91, 0x42, - 0x02, 0xd1, 0x21, 0x79, 0x81, 0x42, 0x04, 0xd0, - 0x3c, 0x00, 0x50, 0x36, 0x01, 0x00, 0x23, 0x1c, - 0xe4, 0x68, 0x00, 0x2c, 0xf5, 0xd1, 0x17, 0xe0, - 0x00, 0x2c, 0x15, 0xd0, 0x00, 0x2b, 0x0d, 0xd1, - 0xe3, 0x68, 0x0d, 0x48, 0x6b, 0x60, 0x00, 0x88, - 0x00, 0x2b, 0x02, 0xd1, 0xff, 0xf7, 0xd1, 0xfb, - 0x06, 0xe0, 0x0a, 0x4a, 0x99, 0x68, 0xff, 0xf7, - 0xf6, 0xfb, 0x01, 0xe0, 0xe0, 0x68, 0xd8, 0x60, - 0x28, 0x68, 0xe0, 0x60, 0x2c, 0x60, 0x02, 0xe0, - 0x01, 0x21, 0x3c, 0x00, 0x8c, 0x36, 0x01, 0x00, - 0xff, 0xf7, 0xa4, 0xff, 0xbe, 0x71, 0xf8, 0xbd, - 0x20, 0x10, 0x07, 0x00, 0x7c, 0x5d, 0x01, 0x00, - 0x2c, 0x74, 0x01, 0x00, 0x21, 0x38, 0x01, 0x00, - 0x70, 0xb5, 0x09, 0x4e, 0xb5, 0x79, 0xf9, 0xf7, - 0xaf, 0xfe, 0x04, 0x1c, 0x09, 0xd0, 0x20, 0x1c, - 0xed, 0xf7, 0x0c, 0xfb, 0x05, 0x49, 0x8a, 0x68, - 0x80, 0x18, 0x88, 0x60, 0x08, 0x68, 0x01, 0x30, - 0x08, 0x60, 0xb5, 0x71, 0x3c, 0x00, 0xc8, 0x36, - 0x01, 0x00, 0x20, 0x1c, 0x70, 0xbd, 0x20, 0x10, - 0x07, 0x00, 0xa8, 0x60, 0x01, 0x00, 0x09, 0x48, - 0x80, 0xb5, 0x40, 0x68, 0x02, 0x1c, 0x0b, 0xe0, - 0x01, 0x69, 0x00, 0x29, 0x07, 0xd0, 0x82, 0x42, - 0x04, 0xd0, 0x81, 0x68, 0x05, 0x48, 0x00, 0x88, - 0xff, 0xf7, 0xe5, 0xfa, 0x80, 0xbd, 0xc0, 0x68, - 0x00, 0x28, 0xf1, 0xd1, 0x80, 0xbd, 0x7c, 0x5d, - 0x01, 0x00, 0x2c, 0x74, 0x01, 0x00, 0x3c, 0x00, - 0x04, 0x37, 0x01, 0x00, 0x05, 0x48, 0x80, 0xb5, - 0x42, 0x68, 0x00, 0x2a, 0x04, 0xd0, 0x04, 0x48, - 0x00, 0x88, 0x91, 0x68, 0xff, 0xf7, 0xd2, 0xfa, - 0x80, 0xbd, 0x00, 0x00, 0x7c, 0x5d, 0x01, 0x00, - 0x2c, 0x74, 0x01, 0x00, 0x05, 0x48, 0x01, 0x68, - 0x00, 0x29, 0x04, 0xd0, 0xc0, 0x68, 0x00, 0x28, - 0x01, 0xd0, 0x01, 0x20, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x00, 0x00, 0x18, 0xd9, 0x01, 0x00, - 0x3c, 0x00, 0x40, 0x37, 0x01, 0x00, 0x80, 0xb5, - 0xf6, 0xf7, 0xd1, 0xfa, 0x80, 0xbd, 0x13, 0x1c, - 0x0d, 0x4a, 0xb0, 0xb5, 0x12, 0x88, 0x90, 0x42, - 0x0f, 0xd2, 0x03, 0x29, 0x0d, 0xd2, 0x0a, 0x4a, - 0xc0, 0x00, 0x14, 0x58, 0x0a, 0x4d, 0xac, 0x42, - 0x07, 0xd1, 0x13, 0x50, 0x0c, 0x23, 0x59, 0x43, - 0x08, 0x4b, 0xc9, 0x18, 0x80, 0x18, 0x41, 0x60, - 0xb0, 0xbd, 0x02, 0x21, 0x80, 0x20, 0xed, 0xf7, - 0x94, 0xfd, 0x3c, 0x00, 0x7c, 0x37, 0x01, 0x00, - 0xb0, 0xbd, 0x00, 0x00, 0x56, 0x57, 0x01, 0x00, - 0x84, 0x5d, 0x01, 0x00, 0x09, 0xa0, 0x00, 0x00, - 0x18, 0xd9, 0x01, 0x00, 0xf8, 0xb5, 0x0f, 0x1c, - 0x1e, 0x1c, 0x15, 0x1c, 0x04, 0x1c, 0x11, 0x1c, - 0xff, 0xf7, 0x4a, 0xff, 0x33, 0x1c, 0x2a, 0x1c, - 0x39, 0x1c, 0x20, 0x1c, 0xf4, 0xf7, 0x8a, 0xff, - 0xf8, 0xbd, 0x00, 0x00, 0xf7, 0xb5, 0x94, 0x46, - 0xff, 0x29, 0x21, 0xd0, 0x3c, 0x00, 0xb8, 0x37, - 0x01, 0x00, 0x15, 0x48, 0x00, 0x88, 0x81, 0x42, - 0x21, 0xd2, 0x14, 0x4a, 0x15, 0x4e, 0xc8, 0x00, - 0x85, 0x18, 0xb4, 0x79, 0x68, 0x68, 0x02, 0x68, - 0x00, 0x2a, 0x03, 0xd1, 0x03, 0x1d, 0x0c, 0xcb, - 0x9a, 0x42, 0x11, 0xd0, 0x43, 0x68, 0x9a, 0x68, - 0x42, 0x60, 0x0e, 0x4a, 0x17, 0x69, 0x01, 0x37, - 0x17, 0x61, 0xb4, 0x71, 0x00, 0x22, 0x02, 0x60, - 0x00, 0x98, 0xd8, 0x60, 0x60, 0x46, 0x3c, 0x00, - 0xf4, 0x37, 0x01, 0x00, 0x18, 0x60, 0x19, 0x74, - 0x28, 0x68, 0x58, 0x60, 0xfe, 0xbd, 0xb4, 0x71, - 0x06, 0x21, 0x00, 0xe0, 0x07, 0x21, 0x80, 0x20, - 0xed, 0xf7, 0x4c, 0xfd, 0xf6, 0xe7, 0x00, 0x00, - 0x56, 0x57, 0x01, 0x00, 0x84, 0x5d, 0x01, 0x00, - 0x20, 0x10, 0x07, 0x00, 0xa8, 0x60, 0x01, 0x00, - 0xb0, 0xb5, 0x14, 0x4d, 0x6c, 0x68, 0x00, 0x2c, - 0x01, 0xd0, 0x84, 0x42, 0x04, 0xd0, 0x0c, 0x21, - 0x3c, 0x00, 0x30, 0x38, 0x01, 0x00, 0x80, 0x20, - 0xed, 0xf7, 0x37, 0xfd, 0xb0, 0xbd, 0xff, 0xf7, - 0xb8, 0xfa, 0xa1, 0x68, 0x40, 0x1a, 0x0d, 0x49, - 0x88, 0x42, 0x03, 0xda, 0x10, 0x21, 0x80, 0x20, - 0xed, 0xf7, 0x2b, 0xfd, 0x21, 0x79, 0x22, 0x68, - 0x01, 0x20, 0xff, 0xf7, 0xac, 0xff, 0xe3, 0x68, - 0x6b, 0x60, 0x00, 0x2b, 0x05, 0xd0, 0x07, 0x48, - 0x06, 0x4a, 0x00, 0x88, 0x99, 0x68, 0xff, 0xf7, - 0xfe, 0xfa, 0x3c, 0x00, 0x6c, 0x38, 0x01, 0x00, - 0x28, 0x68, 0xe0, 0x60, 0x2c, 0x60, 0xb0, 0xbd, - 0x7c, 0x5d, 0x01, 0x00, 0x18, 0xfc, 0xff, 0xff, - 0x21, 0x38, 0x01, 0x00, 0x2c, 0x74, 0x01, 0x00, - 0xb0, 0xb5, 0x15, 0x4c, 0x08, 0x20, 0x21, 0x1c, - 0x80, 0x31, 0x08, 0x70, 0x13, 0x4a, 0x41, 0x04, - 0x11, 0x60, 0x13, 0x48, 0x00, 0x68, 0x13, 0x4d, - 0x6b, 0x69, 0x18, 0x40, 0x01, 0xd1, 0x10, 0x20, - 0x00, 0xe0, 0x00, 0x20, 0x3c, 0x00, 0xa8, 0x38, - 0x01, 0x00, 0xa8, 0x23, 0x5b, 0x5d, 0x18, 0x43, - 0x23, 0x1c, 0x40, 0x33, 0x18, 0x73, 0x51, 0x60, - 0x20, 0x78, 0x80, 0x08, 0x80, 0x00, 0x20, 0x70, - 0x00, 0x20, 0xff, 0xf7, 0x12, 0xfb, 0xff, 0xf7, - 0x72, 0xfa, 0x64, 0x30, 0x28, 0x66, 0x01, 0x38, - 0xa0, 0x61, 0x20, 0x78, 0x03, 0x21, 0x08, 0x43, - 0x20, 0x70, 0xb0, 0xbd, 0x00, 0x00, 0x00, 0x90, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00, - 0xe4, 0x38, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, - 0xa4, 0x6c, 0x01, 0x00, 0x38, 0xb5, 0x0a, 0x4c, - 0x21, 0x1c, 0x20, 0x31, 0x8a, 0x79, 0x00, 0xab, - 0x1a, 0x70, 0xc9, 0x79, 0x07, 0x4d, 0x59, 0x70, - 0x69, 0x78, 0x88, 0x42, 0x03, 0xd1, 0xf8, 0xf7, - 0x13, 0xfc, 0xff, 0x20, 0x68, 0x70, 0x00, 0xab, - 0x18, 0x88, 0xe0, 0x84, 0x38, 0xbd, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x4c, 0x7b, 0x01, 0x00, - 0x3c, 0x00, 0x20, 0x39, 0x01, 0x00, 0xf8, 0xb5, - 0x0b, 0x1c, 0x06, 0x1c, 0x04, 0x1d, 0x7f, 0x33, - 0x14, 0xd0, 0x33, 0x68, 0x5d, 0x18, 0x35, 0x60, - 0x23, 0x88, 0x1f, 0x18, 0x06, 0x23, 0xff, 0x56, - 0xeb, 0x1b, 0x33, 0x60, 0x23, 0x88, 0x18, 0x18, - 0x81, 0x71, 0x20, 0x88, 0x01, 0x30, 0x00, 0x04, - 0x00, 0x0c, 0x20, 0x80, 0x90, 0x42, 0x01, 0xd3, - 0x00, 0x20, 0x20, 0x80, 0x10, 0x1c, 0x31, 0x68, - 0xec, 0xf7, 0x3c, 0x00, 0x5c, 0x39, 0x01, 0x00, - 0x6d, 0xfe, 0xf8, 0xbd, 0x0e, 0x49, 0x0a, 0x7c, - 0x83, 0x78, 0x1a, 0x43, 0x0a, 0x74, 0x42, 0x78, - 0x83, 0x78, 0x9a, 0x43, 0x0b, 0x7c, 0x93, 0x43, - 0x0b, 0x74, 0x8a, 0x7c, 0x43, 0x78, 0x1a, 0x43, - 0x8a, 0x74, 0x8a, 0x7c, 0x03, 0x78, 0x9a, 0x43, - 0x8a, 0x74, 0x02, 0x78, 0x43, 0x78, 0x1a, 0x43, - 0x4b, 0x7c, 0x1a, 0x43, 0x4a, 0x74, 0x4a, 0x7c, - 0xc0, 0x78, 0x82, 0x43, 0x3c, 0x00, 0x98, 0x39, - 0x01, 0x00, 0x4a, 0x74, 0x70, 0x47, 0x10, 0x00, - 0x07, 0x00, 0xb0, 0xb5, 0x06, 0x4d, 0x00, 0x24, - 0x20, 0x06, 0x00, 0x0e, 0xed, 0xf7, 0xf7, 0xf8, - 0xa1, 0x00, 0x69, 0x58, 0x08, 0x71, 0x01, 0x34, - 0x04, 0x2c, 0xf5, 0xdb, 0xb0, 0xbd, 0x10, 0x7b, - 0x01, 0x00, 0x0b, 0x48, 0x0c, 0x49, 0x7d, 0x23, - 0x42, 0x69, 0xdb, 0x00, 0x00, 0x2a, 0xc8, 0x6b, - 0x07, 0xd0, 0xc0, 0x18, 0x1a, 0x01, 0x3c, 0x00, - 0xd4, 0x39, 0x01, 0x00, 0x90, 0x42, 0xc8, 0x63, - 0x01, 0xd9, 0x07, 0x48, 0xc8, 0x63, 0x70, 0x47, - 0xff, 0x38, 0xf5, 0x38, 0xc8, 0x63, 0x98, 0x42, - 0xf9, 0xd2, 0xcb, 0x63, 0x70, 0x47, 0x00, 0x00, - 0xf4, 0x68, 0x01, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0x70, 0x17, 0x00, 0x00, 0x70, 0xb5, 0x0d, 0x1c, - 0x04, 0x1c, 0x16, 0x1c, 0xfb, 0xf7, 0xf6, 0xfa, - 0xb0, 0x43, 0x28, 0x43, 0x01, 0x1c, 0x20, 0x1c, - 0x3c, 0x00, 0x10, 0x3a, 0x01, 0x00, 0x00, 0xf0, - 0xcc, 0xfa, 0x70, 0xbd, 0x00, 0x00, 0x80, 0xb5, - 0x0b, 0x4a, 0x00, 0x29, 0x09, 0xd0, 0x02, 0x29, - 0x0f, 0xd1, 0x01, 0x1c, 0x08, 0x48, 0xd2, 0x78, - 0x38, 0x30, 0xff, 0xf7, 0x78, 0xff, 0x06, 0x49, - 0x06, 0xe0, 0x01, 0x1c, 0x04, 0x48, 0x12, 0x79, - 0x20, 0x30, 0xff, 0xf7, 0x70, 0xff, 0x03, 0x49, - 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0xac, 0x7c, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x3a, 0x01, 0x00, - 0xc8, 0x67, 0x01, 0x00, 0xc4, 0x67, 0x01, 0x00, - 0x80, 0xb5, 0x0b, 0x4a, 0x00, 0x29, 0x09, 0xd0, - 0x02, 0x29, 0x0f, 0xd1, 0x01, 0x1c, 0x08, 0x48, - 0x52, 0x79, 0x68, 0x30, 0xff, 0xf7, 0x5a, 0xff, - 0x06, 0x49, 0x06, 0xe0, 0x01, 0x1c, 0x04, 0x48, - 0x92, 0x79, 0x50, 0x30, 0xff, 0xf7, 0x52, 0xff, - 0x03, 0x49, 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, - 0xac, 0x7c, 0x01, 0x00, 0x3c, 0x00, 0x88, 0x3a, - 0x01, 0x00, 0xd0, 0x67, 0x01, 0x00, 0xcc, 0x67, - 0x01, 0x00, 0x08, 0xb5, 0x04, 0x21, 0x00, 0x91, - 0x81, 0x7e, 0x43, 0x68, 0x03, 0x29, 0x06, 0xd1, - 0x01, 0x1c, 0x0c, 0x31, 0x01, 0x20, 0x6a, 0x46, - 0xec, 0xf7, 0x9a, 0xfc, 0x08, 0xbd, 0x19, 0x68, - 0xc1, 0x60, 0xfb, 0xe7, 0x00, 0x00, 0x10, 0xb5, - 0x03, 0x1c, 0x00, 0x20, 0x08, 0x4c, 0x00, 0x21, - 0xca, 0x00, 0x12, 0x19, 0x92, 0x78, 0x3c, 0x00, - 0xc4, 0x3a, 0x01, 0x00, 0x9a, 0x42, 0x03, 0xd1, - 0xc8, 0x00, 0x00, 0x19, 0x40, 0x68, 0x10, 0xbd, - 0x01, 0x31, 0x09, 0x06, 0x09, 0x16, 0x06, 0x29, - 0xf1, 0xdb, 0x10, 0xbd, 0xcc, 0x5a, 0x01, 0x00, - 0xf8, 0xb5, 0x0f, 0x1c, 0x16, 0x1c, 0x00, 0x25, - 0xfe, 0xf7, 0x8e, 0xf9, 0x04, 0x1c, 0x0a, 0xd0, - 0x4a, 0x20, 0x00, 0x5d, 0x05, 0x28, 0x06, 0xd1, - 0x38, 0x1c, 0xf1, 0xf7, 0x81, 0xfe, 0x00, 0x28, - 0x3c, 0x00, 0x00, 0x3b, 0x01, 0x00, 0x01, 0xd0, - 0x01, 0x25, 0x34, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x70, 0xb5, 0x0d, 0x1c, 0x16, 0x1c, - 0x00, 0x24, 0xfe, 0xf7, 0x78, 0xf9, 0x00, 0x28, - 0x0b, 0xd0, 0x4a, 0x21, 0x09, 0x5c, 0x05, 0x29, - 0x07, 0xd1, 0x01, 0x69, 0x00, 0x29, 0x04, 0xd1, - 0x30, 0x60, 0xf1, 0xf7, 0x04, 0xfd, 0x01, 0x24, - 0x28, 0x60, 0x20, 0x1c, 0x70, 0xbd, 0xf8, 0xb5, - 0x06, 0x1c, 0x3c, 0x00, 0x3c, 0x3b, 0x01, 0x00, - 0x00, 0x25, 0x0c, 0x1c, 0x08, 0x1c, 0xf1, 0xf7, - 0x5d, 0xfe, 0x00, 0x28, 0x01, 0xd0, 0x00, 0x21, - 0x05, 0xe0, 0x20, 0x1c, 0xf1, 0xf7, 0x74, 0xfe, - 0x00, 0x28, 0x14, 0xd0, 0x01, 0x21, 0x30, 0x1c, - 0xf4, 0xf7, 0x80, 0xfb, 0x00, 0x90, 0x00, 0x28, - 0x0d, 0xd0, 0x08, 0x4f, 0x01, 0x25, 0x06, 0x22, - 0x31, 0x1c, 0x38, 0x1c, 0xec, 0xf7, 0xc2, 0xfc, - 0x06, 0x22, 0x21, 0x1c, 0x3c, 0x00, 0x78, 0x3b, - 0x01, 0x00, 0xb8, 0x18, 0xec, 0xf7, 0xbd, 0xfc, - 0x00, 0x98, 0xf8, 0x60, 0x28, 0x1c, 0xf8, 0xbd, - 0x00, 0x00, 0x70, 0x7c, 0x01, 0x00, 0x00, 0x21, - 0x00, 0x28, 0x06, 0xd0, 0x42, 0x78, 0x07, 0x2a, - 0x03, 0xd1, 0xc0, 0x79, 0x01, 0x28, 0x00, 0xd1, - 0x01, 0x21, 0x08, 0x1c, 0x70, 0x47, 0xf8, 0xb5, - 0x05, 0x1c, 0x00, 0x27, 0x16, 0x4e, 0xf1, 0xf7, - 0x28, 0xfe, 0x00, 0x28, 0x07, 0xd0, 0x3c, 0x00, - 0xb4, 0x3b, 0x01, 0x00, 0xf1, 0xf7, 0xc0, 0xfb, - 0x00, 0x28, 0x10, 0xd1, 0x00, 0x24, 0xf1, 0xf7, - 0xbb, 0xfc, 0x06, 0xe0, 0xf1, 0xf7, 0x02, 0xfe, - 0x00, 0x28, 0x08, 0xd0, 0x01, 0x24, 0xf1, 0xf7, - 0x99, 0xfd, 0x01, 0x1c, 0x06, 0x22, 0x30, 0x1c, - 0xec, 0xf7, 0x8e, 0xfc, 0x01, 0x27, 0x00, 0x2f, - 0x0d, 0xd0, 0x21, 0x1c, 0x28, 0x1c, 0xf4, 0xf7, - 0x3b, 0xfb, 0x01, 0x1c, 0x05, 0x48, 0x06, 0x22, - 0x3c, 0x00, 0xf0, 0x3b, 0x01, 0x00, 0x06, 0x38, - 0xc1, 0x60, 0x29, 0x1c, 0xec, 0xf7, 0x7f, 0xfc, - 0x01, 0x20, 0xf8, 0xbd, 0x00, 0x20, 0xfc, 0xe7, - 0x00, 0x00, 0x76, 0x7c, 0x01, 0x00, 0xf0, 0xb5, - 0x07, 0x1c, 0x00, 0x68, 0x02, 0x21, 0x04, 0x68, - 0x78, 0x69, 0x87, 0xb0, 0x01, 0x40, 0x00, 0x25, - 0x00, 0x29, 0x05, 0x91, 0x74, 0x4e, 0x12, 0xd0, - 0x22, 0x88, 0x01, 0x21, 0x13, 0x05, 0x02, 0xd4, - 0xc0, 0x07, 0x3c, 0x00, 0x2c, 0x3c, 0x01, 0x00, - 0xc1, 0x17, 0x01, 0x31, 0x6f, 0x48, 0x00, 0x29, - 0x00, 0x68, 0x01, 0xd0, 0x01, 0x30, 0x04, 0xe0, - 0x11, 0x06, 0x89, 0x0e, 0x2d, 0x29, 0x01, 0xd1, - 0x03, 0x30, 0x30, 0x60, 0x20, 0x88, 0x80, 0x07, - 0x67, 0xd1, 0x78, 0x69, 0xc0, 0x07, 0x64, 0xd5, - 0x03, 0xaa, 0x04, 0xa9, 0x20, 0x1c, 0xf7, 0xf7, - 0x4b, 0xfb, 0x00, 0xab, 0x18, 0x7c, 0x00, 0x28, - 0x07, 0xd0, 0x18, 0x7c, 0x3c, 0x00, 0x68, 0x3c, - 0x01, 0x00, 0x02, 0x28, 0x58, 0xd1, 0x18, 0x7b, - 0x40, 0x07, 0x40, 0x0f, 0x04, 0x28, 0x53, 0xd8, - 0x20, 0x79, 0x05, 0x99, 0xc0, 0x07, 0xc0, 0x17, - 0x01, 0x30, 0x02, 0x90, 0x00, 0x29, 0x02, 0xd1, - 0x02, 0x98, 0x00, 0x28, 0x48, 0xd1, 0x05, 0x99, - 0x00, 0x29, 0x04, 0xd0, 0x20, 0x88, 0x00, 0x05, - 0x01, 0xd4, 0x00, 0x20, 0x30, 0x60, 0xc0, 0x20, - 0xed, 0xf7, 0xcb, 0xfd, 0x05, 0x1c, 0x3c, 0x00, - 0xa4, 0x3c, 0x01, 0x00, 0x20, 0x1c, 0x0a, 0x30, - 0x06, 0x90, 0xfe, 0xf7, 0xad, 0xf8, 0x06, 0x1c, - 0x28, 0x1c, 0x08, 0x30, 0x23, 0x88, 0x02, 0x1d, - 0x11, 0x1d, 0xdb, 0x05, 0x06, 0xd5, 0x06, 0x9b, - 0x03, 0x60, 0x20, 0x1c, 0x10, 0x30, 0x10, 0x60, - 0x20, 0x1d, 0x0e, 0xe0, 0x23, 0x1d, 0x13, 0x60, - 0x22, 0x88, 0x92, 0x05, 0x05, 0xd5, 0x22, 0x1c, - 0x10, 0x32, 0x02, 0x60, 0x06, 0x9b, 0x0b, 0x60, - 0x3c, 0x00, 0xe0, 0x3c, 0x01, 0x00, 0x04, 0xe0, - 0x06, 0x9b, 0x03, 0x60, 0x20, 0x1c, 0x10, 0x30, - 0x08, 0x60, 0x28, 0x69, 0xf1, 0xf7, 0x43, 0xfc, - 0x00, 0x28, 0x08, 0xd0, 0x01, 0x28, 0x12, 0xd0, - 0x02, 0x28, 0x58, 0xd1, 0x00, 0xab, 0x18, 0x7c, - 0x00, 0x28, 0x54, 0xd1, 0x12, 0xe0, 0x00, 0xab, - 0x18, 0x7c, 0x02, 0x28, 0x0b, 0xd1, 0x00, 0x2e, - 0x4d, 0xd0, 0x4b, 0x20, 0x80, 0x5d, 0x02, 0x28, - 0x49, 0xd1, 0x3c, 0x00, 0x1c, 0x3d, 0x01, 0x00, - 0x07, 0xe0, 0x63, 0xe0, 0x00, 0xab, 0x18, 0x7c, - 0x00, 0x28, 0x02, 0xd1, 0x38, 0x1c, 0xfe, 0xf7, - 0x1b, 0xff, 0x20, 0x88, 0x41, 0x04, 0x30, 0x48, - 0x11, 0xd5, 0x00, 0x2e, 0x52, 0xd0, 0x00, 0xab, - 0x19, 0x7c, 0x00, 0x29, 0x26, 0xd0, 0x02, 0x99, - 0x00, 0x29, 0x02, 0xd0, 0xb0, 0x6a, 0x00, 0x78, - 0x00, 0xe0, 0x00, 0x78, 0x01, 0x28, 0x1d, 0xd0, - 0x03, 0x28, 0x43, 0xd1, 0x3c, 0x00, 0x58, 0x3d, - 0x01, 0x00, 0x1a, 0xe0, 0x00, 0xab, 0x19, 0x7c, - 0x02, 0x29, 0x16, 0xd1, 0x19, 0x7b, 0x04, 0x29, - 0x13, 0xd0, 0x19, 0x7b, 0x0c, 0x29, 0x10, 0xd0, - 0x22, 0x49, 0x09, 0x68, 0x00, 0x29, 0x0c, 0xd0, - 0x00, 0x2e, 0x0a, 0xd0, 0x02, 0x99, 0x00, 0x29, - 0x02, 0xd0, 0xb0, 0x6a, 0x00, 0x78, 0x00, 0xe0, - 0x00, 0x78, 0x01, 0x28, 0x29, 0xd0, 0x03, 0x28, - 0x27, 0xd0, 0x28, 0x22, 0x39, 0x1c, 0x3c, 0x00, - 0x94, 0x3d, 0x01, 0x00, 0x28, 0x1c, 0x88, 0x30, - 0xec, 0xf7, 0x0a, 0xfc, 0x00, 0xab, 0x19, 0x7c, - 0x28, 0x1c, 0x80, 0x30, 0x01, 0x71, 0x19, 0x7b, - 0x41, 0x71, 0x6c, 0x60, 0x6e, 0x61, 0x1b, 0xe0, - 0x05, 0x99, 0x00, 0x29, 0x14, 0xd0, 0x11, 0x48, - 0x84, 0x6c, 0x00, 0x2c, 0x10, 0xd0, 0x00, 0x22, - 0x00, 0x2e, 0x04, 0xd0, 0x40, 0x36, 0xb0, 0x7a, - 0x05, 0x28, 0x00, 0xd1, 0x01, 0x22, 0x00, 0x92, - 0x3c, 0x00, 0xd0, 0x3d, 0x01, 0x00, 0xf8, 0x7a, - 0xba, 0x7a, 0x29, 0x69, 0xc3, 0x07, 0xdb, 0x0f, - 0x06, 0x98, 0xec, 0xf7, 0x00, 0xfb, 0x28, 0x1c, - 0xed, 0xf7, 0x07, 0xfd, 0x00, 0x25, 0x28, 0x1c, - 0x07, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0xc4, 0x6a, - 0x01, 0x00, 0x68, 0x61, 0x01, 0x00, 0x28, 0x61, - 0x01, 0x00, 0xc4, 0x69, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x20, 0xff, 0xf7, 0x70, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x3e, 0x01, 0x00, - 0xb0, 0xb5, 0x1d, 0x4d, 0x01, 0x28, 0x17, 0xd0, - 0xa2, 0x28, 0x06, 0xd0, 0xa3, 0x28, 0x03, 0xd1, - 0x01, 0x21, 0x15, 0x20, 0xff, 0xf7, 0x08, 0xfc, - 0xb0, 0xbd, 0x00, 0x29, 0x01, 0xd1, 0x17, 0x48, - 0x02, 0xe0, 0x7d, 0x20, 0xc0, 0x00, 0x48, 0x43, - 0x00, 0x23, 0x01, 0x22, 0x01, 0x1c, 0x28, 0x60, - 0x15, 0x20, 0xff, 0xf7, 0xa7, 0xfc, 0xb0, 0xbd, - 0x01, 0x29, 0x04, 0xd0, 0x3c, 0x00, 0x48, 0x3e, - 0x01, 0x00, 0x02, 0x29, 0xfa, 0xd1, 0x00, 0xf0, - 0x2a, 0xf8, 0xb0, 0xbd, 0x6c, 0x68, 0xf5, 0xf7, - 0xde, 0xfc, 0xfe, 0xf7, 0xa8, 0xff, 0x68, 0x60, - 0x00, 0x2c, 0x09, 0xd0, 0x29, 0x68, 0x0a, 0x23, - 0x59, 0x43, 0x00, 0x1b, 0x88, 0x42, 0x03, 0xd9, - 0x01, 0x21, 0x15, 0x20, 0xed, 0xf7, 0x17, 0xfa, - 0x01, 0x22, 0x15, 0x20, 0x29, 0x68, 0xff, 0xf7, - 0xa6, 0xfb, 0xb0, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x3e, 0x01, 0x00, 0x04, 0x79, 0x01, 0x00, - 0x00, 0x87, 0x93, 0x03, 0x01, 0x20, 0x04, 0x49, - 0x40, 0x03, 0x80, 0xb5, 0x08, 0x60, 0x03, 0x21, - 0x15, 0x20, 0xed, 0xf7, 0x03, 0xfa, 0x80, 0xbd, - 0x00, 0x10, 0x07, 0x00, 0x07, 0x48, 0x80, 0xb5, - 0xbe, 0x21, 0x01, 0x73, 0x01, 0x7a, 0x10, 0x22, - 0x11, 0x43, 0x01, 0x72, 0x00, 0x23, 0x02, 0x22, - 0x15, 0x20, 0x03, 0x49, 0xff, 0xf7, 0x68, 0xfc, - 0x3c, 0x00, 0xc0, 0x3e, 0x01, 0x00, 0x80, 0xbd, - 0x00, 0x00, 0x00, 0x03, 0x07, 0x00, 0x80, 0x9f, - 0xd5, 0x00, 0x80, 0xb5, 0x00, 0x28, 0x03, 0xd0, - 0x0a, 0x1c, 0x15, 0x21, 0xa2, 0x20, 0x02, 0xe0, - 0x00, 0x22, 0x15, 0x21, 0xa3, 0x20, 0xff, 0xf7, - 0x66, 0xfc, 0x80, 0xbd, 0x00, 0x00, 0x10, 0xb5, - 0x00, 0xf0, 0x19, 0xf8, 0x0a, 0x48, 0xbe, 0x21, - 0x01, 0x73, 0x03, 0x7a, 0x10, 0x22, 0x93, 0x43, - 0x01, 0x24, 0x3c, 0x00, 0xfc, 0x3e, 0x01, 0x00, - 0x23, 0x43, 0x03, 0x72, 0x01, 0x73, 0x01, 0x7a, - 0x91, 0x43, 0x20, 0x22, 0x11, 0x43, 0x01, 0x72, - 0x02, 0x22, 0x15, 0x20, 0x02, 0x49, 0xff, 0xf7, - 0x5b, 0xfb, 0x10, 0xbd, 0x00, 0x03, 0x07, 0x00, - 0x80, 0x9f, 0xd5, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x15, 0x20, 0xff, 0xf7, 0x85, 0xfb, 0x04, 0x48, - 0xbe, 0x21, 0x01, 0x73, 0x01, 0x7a, 0x11, 0x22, - 0x91, 0x43, 0x01, 0x72, 0x3c, 0x00, 0x38, 0x3f, - 0x01, 0x00, 0x80, 0xbd, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x00, 0xf8, 0xb5, 0x06, 0x1c, 0x05, 0x1c, - 0x60, 0x36, 0x00, 0x27, 0x44, 0x68, 0x22, 0xe0, - 0x08, 0x21, 0x00, 0x20, 0xed, 0xf7, 0x41, 0xfb, - 0x60, 0x61, 0x01, 0x89, 0x04, 0x39, 0x09, 0x04, - 0x09, 0x0c, 0x01, 0x81, 0x60, 0x69, 0x00, 0x68, - 0x40, 0x18, 0x04, 0x21, 0xed, 0xf7, 0x35, 0xfb, - 0xe0, 0x61, 0x60, 0x69, 0x71, 0x7b, 0x3c, 0x00, - 0x74, 0x3f, 0x01, 0x00, 0x00, 0x68, 0x89, 0x01, - 0xc1, 0x70, 0x29, 0x69, 0x0c, 0x31, 0x03, 0x22, - 0xec, 0xf7, 0xba, 0xfa, 0x28, 0x69, 0x0c, 0x30, - 0x01, 0x68, 0x01, 0x31, 0x01, 0x60, 0x25, 0x62, - 0xa7, 0x61, 0x24, 0x68, 0x00, 0x2c, 0xda, 0xd1, - 0x02, 0x49, 0x03, 0x48, 0x6a, 0x68, 0xf6, 0xf7, - 0xb3, 0xf8, 0xf8, 0xbd, 0xfd, 0x6b, 0x00, 0x00, - 0xa0, 0x6a, 0x01, 0x00, 0x80, 0xb5, 0x00, 0x07, - 0x3c, 0x00, 0xb0, 0x3f, 0x01, 0x00, 0x00, 0x09, - 0x09, 0x02, 0x09, 0x0a, 0x08, 0x43, 0x02, 0x49, - 0x08, 0x60, 0xff, 0xf7, 0x20, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x60, 0x00, 0x07, 0x00, 0x08, 0x00, - 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xe8, 0x03, - 0x00, 0x00, 0x10, 0x00, 0x14, 0x00, 0xc8, 0x00, - 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x1c, 0x00, - 0x14, 0x00, 0xc8, 0x00, 0x00, 0x00, 0xe8, 0x03, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x3f, 0x01, 0x00, - 0x24, 0x01, 0x07, 0x00, 0x32, 0x00, 0x00, 0x00, - 0xe8, 0x03, 0x00, 0x00, 0x40, 0x06, 0x01, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x41, 0x6e, 0x62, 0x69, 0x7e, 0x64, 0x61, 0x6f, - 0x6f, 0x00, 0x00, 0x00, 0x52, 0x65, 0x6c, 0x65, - 0x61, 0x73, 0x65, 0x20, 0x36, 0x5f, 0x37, 0x5f, - 0x31, 0x35, 0x20, 0x42, 0x75, 0x69, 0x6c, 0x64, - 0x20, 0x32, 0x3a, 0x35, 0x3c, 0x00, 0x28, 0x40, - 0x01, 0x00, 0x32, 0x39, 0x38, 0x20, 0x53, 0x65, - 0x70, 0x20, 0x30, 0x34, 0x20, 0x32, 0x30, 0x30, - 0x39, 0x20, 0x31, 0x37, 0x3a, 0x31, 0x33, 0x3a, - 0x32, 0x30, 0x20, 0x28, 0x48, 0x57, 0x3d, 0x34, - 0x3a, 0x33, 0x2c, 0x42, 0x54, 0x43, 0x4f, 0x45, - 0x58, 0x29, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, - 0x1c, 0x00, 0x10, 0x20, 0x30, 0x40, 0x50, 0x60, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3c, 0x00, - 0x64, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x70, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0xd0, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x7c, 0x15, 0x15, 0x00, - 0x3c, 0x00, 0xa0, 0x40, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x70, 0x17, - 0x1e, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x28, 0x23, 0x16, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0xf8, 0x2a, - 0x0b, 0x00, 0x3c, 0x00, 0xdc, 0x40, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, - 0xe0, 0x2e, 0x12, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x00, 0x50, 0x46, 0x0e, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0xf0, 0x55, 0x08, 0x00, 0x3c, 0x00, 0x18, 0x41, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x00, 0x00, 0xc0, 0x5d, 0x0e, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0xe8, 0x80, - 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x42, 0x00, - 0x00, 0x00, 0xa0, 0x8c, 0x0a, 0x00, 0x3c, 0x00, - 0x54, 0x41, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x00, 0x00, 0x80, 0xbb, 0x0a, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, - 0xf0, 0xd2, 0x0a, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x6c, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x90, 0x00, - 0x3c, 0x00, 0x90, 0x41, 0x01, 0x00, 0xc0, 0x00, - 0x90, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00, - 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, 0xc0, 0x00, - 0x90, 0x00, 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, - 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00, - 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x14, 0x00, - 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, - 0x10, 0x00, 0xc0, 0x00, 0x90, 0x00, 0x60, 0x00, - 0x48, 0x00, 0x3c, 0x00, 0xcc, 0x41, 0x01, 0x00, - 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x14, 0x00, 0x10, 0x00, 0x60, 0x00, 0x48, 0x00, - 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x60, 0x00, 0x48, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x14, 0x00, 0x10, 0x00, 0x14, 0x00, 0x10, 0x00, - 0x02, 0x00, 0x04, 0x01, 0x0b, 0x02, 0x0c, 0x03, - 0x12, 0x04, 0x16, 0x05, 0x3c, 0x00, 0x08, 0x42, - 0x01, 0x00, 0x18, 0x06, 0x00, 0x0e, 0x00, 0x0e, - 0x24, 0x07, 0x00, 0x0e, 0x2c, 0x08, 0x30, 0x09, - 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x42, 0x0a, - 0x00, 0x0e, 0x48, 0x0b, 0x00, 0x0e, 0x00, 0x0e, - 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x0e, 0x60, 0x0c, - 0x00, 0x0e, 0x00, 0x0e, 0x6c, 0x0d, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0xc0, 0xff, 0xff, 0xff, 0x3c, 0x00, - 0x44, 0x42, 0x01, 0x00, 0xb6, 0xff, 0xff, 0xff, - 0xd3, 0xff, 0xff, 0xff, 0xc9, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 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, 0x51, 0xb0, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x51, 0xb0, 0x00, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x59, 0xaf, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x42, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xa5, 0xaf, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x4d, 0xaf, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x45, 0xb0, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xd5, 0xaf, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xad, 0xb0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x42, 0x01, 0x00, - 0x95, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x95, 0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x99, 0xb0, 0x00, 0x00, 0x0c, 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, 0x3c, 0x00, 0xf8, 0x42, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, 0x17, - 0x01, 0x00, 0x35, 0x17, 0x01, 0x00, 0x21, 0x17, - 0x01, 0x00, 0xd9, 0x9c, 0x00, 0x00, 0x49, 0x17, - 0x01, 0x00, 0x3d, 0x17, 0x01, 0x00, 0xd1, 0x9c, - 0x00, 0x00, 0xd1, 0x9c, 0x00, 0x00, 0x1d, 0x1a, - 0x01, 0x00, 0xd1, 0x9c, 0x00, 0x00, 0x01, 0x1a, - 0x01, 0x00, 0x31, 0x1a, 0x01, 0x00, 0x25, 0x1a, - 0x01, 0x00, 0x3d, 0x17, 0x01, 0x00, 0x3c, 0x00, - 0x34, 0x43, 0x01, 0x00, 0x81, 0x1a, 0x01, 0x00, - 0xd1, 0x9c, 0x00, 0x00, 0x79, 0x17, 0x01, 0x00, - 0xd9, 0x9c, 0x00, 0x00, 0x5d, 0x17, 0x01, 0x00, - 0xa1, 0x17, 0x01, 0x00, 0x95, 0x17, 0x01, 0x00, - 0x81, 0x17, 0x01, 0x00, 0x21, 0x18, 0x01, 0x00, - 0xf5, 0x17, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x00, - 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x43, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, - 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x19, 0x1c, - 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x85, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x85, 0x41, - 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x85, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x35, 0x1b, - 0x01, 0x00, 0x3c, 0x00, 0xac, 0x43, 0x01, 0x00, - 0x9d, 0x1b, 0x01, 0x00, 0x01, 0x1c, 0x01, 0x00, - 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, - 0x89, 0x41, 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, - 0x65, 0x18, 0x01, 0x00, 0x29, 0x18, 0x01, 0x00, - 0x39, 0x18, 0x01, 0x00, 0xbd, 0x18, 0x01, 0x00, - 0x89, 0x41, 0x00, 0x00, 0x4d, 0x18, 0x01, 0x00, - 0xa5, 0x18, 0x01, 0x00, 0x85, 0x41, 0x00, 0x00, - 0x01, 0x19, 0x01, 0x00, 0x3c, 0x00, 0xe8, 0x43, - 0x01, 0x00, 0xd9, 0x18, 0x01, 0x00, 0xed, 0x18, - 0x01, 0x00, 0x15, 0x19, 0x01, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x85, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0x89, 0x41, 0x00, 0x00, 0x69, 0x1c, - 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x71, 0x1c, - 0x01, 0x00, 0x89, 0x41, 0x00, 0x00, 0x89, 0x41, - 0x00, 0x00, 0xfd, 0xdb, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x44, 0x01, 0x00, 0x1d, 0x7c, 0x00, 0x00, - 0x00, 0x00, 0x80, 0x00, 0xf5, 0xda, 0x00, 0x00, - 0x14, 0x00, 0x81, 0x00, 0xfd, 0xdd, 0x00, 0x00, - 0x08, 0x00, 0x82, 0x00, 0xc5, 0xdd, 0x00, 0x00, - 0x38, 0x00, 0x83, 0x00, 0x45, 0xdc, 0x00, 0x00, - 0x10, 0x00, 0x84, 0x00, 0x99, 0xdc, 0x00, 0x00, - 0x0c, 0x00, 0x86, 0x00, 0x39, 0xdc, 0x00, 0x00, - 0x10, 0x00, 0x88, 0x00, 0x11, 0xde, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x44, 0x01, 0x00, 0x10, 0x00, - 0x8a, 0x00, 0x35, 0xdd, 0x00, 0x00, 0x0c, 0x00, - 0x8c, 0x00, 0xad, 0xdf, 0x00, 0x00, 0x1c, 0x00, - 0x8e, 0x00, 0xc9, 0xde, 0x00, 0x00, 0x38, 0x00, - 0x8f, 0x00, 0xed, 0xdc, 0x00, 0x00, 0x38, 0x00, - 0x90, 0x00, 0x75, 0xdf, 0x00, 0x00, 0x0c, 0x00, - 0x91, 0x00, 0x8d, 0xdc, 0x00, 0x00, 0x0c, 0x00, - 0x93, 0x00, 0xb9, 0xdd, 0x00, 0x00, 0x0c, 0x00, - 0x94, 0x00, 0x3c, 0x00, 0x9c, 0x44, 0x01, 0x00, - 0x00, 0x08, 0x08, 0x08, 0x10, 0x0c, 0x0c, 0x0c, - 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x0c, 0x08, 0x08, - 0x08, 0x08, 0x14, 0x08, 0x08, 0x14, 0x00, 0x30, - 0x00, 0x01, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, - 0xad, 0x30, 0x01, 0x00, 0x15, 0x30, 0x01, 0x00, - 0x20, 0x30, 0x07, 0x00, 0x30, 0x30, 0x07, 0x00, - 0x06, 0x07, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x44, - 0x01, 0x00, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, - 0xff, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x80, 0xc9, 0x02, 0x00, 0x94, 0x3f, - 0x03, 0x00, 0xe0, 0x8b, 0x5a, 0x00, 0x05, 0x3a, - 0x85, 0x00, 0xc8, 0xf2, 0x06, 0x00, 0xf8, 0x4c, - 0x56, 0x00, 0x20, 0xa7, 0x3d, 0x00, 0xb7, 0x4a, - 0x00, 0x00, 0xb7, 0x4a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x45, 0x01, 0x00, 0x01, 0x01, 0x01, 0x02, - 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, - 0x05, 0x06, 0x00, 0x00, 0x2d, 0x7c, 0x00, 0x00, - 0x00, 0x00, 0xff, 0x00, 0xfd, 0x95, 0x00, 0x00, - 0x08, 0x00, 0xff, 0x00, 0xed, 0x97, 0x00, 0x00, - 0x08, 0x00, 0x82, 0x00, 0xcd, 0x95, 0x00, 0x00, - 0x0c, 0x00, 0x83, 0x00, 0x4d, 0x96, 0x00, 0x00, - 0x0c, 0x00, 0x85, 0x00, 0x2d, 0x7c, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x45, 0x01, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x3d, 0x96, 0x00, 0x00, 0x0c, 0x00, - 0x89, 0x00, 0xd9, 0x97, 0x00, 0x00, 0x08, 0x00, - 0x8a, 0x00, 0x91, 0x95, 0x00, 0x00, 0x08, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, - 0xff, 0x00, 0x3c, 0x00, 0x8c, 0x45, 0x01, 0x00, - 0xf9, 0x97, 0x00, 0x00, 0x08, 0x00, 0x8d, 0x00, - 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0x2d, 0x7c, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, - 0xc9, 0x97, 0x00, 0x00, 0x30, 0x00, 0x90, 0x00, - 0x11, 0x95, 0x00, 0x00, 0x18, 0x00, 0x91, 0x00, - 0x15, 0x96, 0x00, 0x00, 0x08, 0x00, 0x92, 0x00, - 0x59, 0x95, 0x00, 0x00, 0x3c, 0x00, 0x93, 0x00, - 0x29, 0x96, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x45, - 0x01, 0x00, 0x08, 0x00, 0x94, 0x00, 0xa1, 0x95, - 0x00, 0x00, 0x08, 0x00, 0x95, 0x00, 0x81, 0x97, - 0x00, 0x00, 0x0c, 0x00, 0x96, 0x00, 0x6d, 0x97, - 0x00, 0x00, 0x10, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x10, - 0x08, 0x00, 0x00, 0x08, 0x00, 0x10, 0x3c, 0x00, - 0x04, 0x46, 0x01, 0x00, 0x08, 0x0c, 0x0c, 0x0c, - 0x0c, 0x1c, 0x0c, 0x0c, 0x08, 0x00, 0x00, 0x00, - 0x0d, 0x8b, 0x00, 0x00, 0xf5, 0x8a, 0x00, 0x00, - 0xe9, 0x8a, 0x00, 0x00, 0x01, 0x8b, 0x00, 0x00, - 0x14, 0x08, 0x0c, 0x0c, 0x10, 0x0c, 0x00, 0x00, - 0xb1, 0x98, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x19, 0x99, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, - 0x3d, 0x7c, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x46, 0x01, 0x00, 0x3d, 0x99, - 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x09, 0x99, - 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x3d, 0x7c, - 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x01, - 0x04, 0x04, 0x08, 0x08, 0x81, 0x37, 0x80, 0xf3, - 0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0xaa, 0xaa, - 0x03, 0x00, 0x00, 0xf8, 0x6d, 0xa9, 0x6d, 0xa9, - 0x6e, 0xa9, 0x3c, 0x00, 0x7c, 0x46, 0x01, 0x00, - 0x6e, 0xa8, 0x6e, 0xa8, 0x6e, 0xa8, 0x6f, 0xa7, - 0x6f, 0xa7, 0x6f, 0xa7, 0x6f, 0xa6, 0x6f, 0xa6, - 0x70, 0xa6, 0x70, 0xa5, 0x70, 0xa4, 0x00, 0x00, - 0xb5, 0x1b, 0x01, 0x00, 0xc9, 0x1b, 0x01, 0x00, - 0xe1, 0x1b, 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, - 0xa5, 0x1b, 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, - 0x89, 0x1b, 0x01, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x46, - 0x01, 0x00, 0xd1, 0x1a, 0x01, 0x00, 0xe5, 0x1a, - 0x01, 0x00, 0x05, 0x1b, 0x01, 0x00, 0x25, 0x1b, - 0x01, 0x00, 0xb1, 0x1a, 0x01, 0x00, 0xe5, 0x9c, - 0x00, 0x00, 0x9d, 0x1a, 0x01, 0x00, 0xd5, 0x9c, - 0x00, 0x00, 0xc1, 0x1a, 0x01, 0x00, 0x89, 0x19, - 0x01, 0x00, 0xa9, 0x19, 0x01, 0x00, 0xc9, 0x19, - 0x01, 0x00, 0xf1, 0x19, 0x01, 0x00, 0x79, 0x19, - 0x01, 0x00, 0xe5, 0x9c, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x46, 0x01, 0x00, 0x65, 0x19, 0x01, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0x55, 0x1c, 0x01, 0x00, - 0x45, 0x1c, 0x01, 0x00, 0x45, 0x1c, 0x01, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0xd5, 0x9c, 0x00, 0x00, 0xd5, 0x9c, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x47, 0x01, 0x00, 0xd5, 0x9c, - 0x00, 0x00, 0x55, 0x19, 0x01, 0x00, 0xe5, 0x9c, - 0x00, 0x00, 0x41, 0x19, 0x01, 0x00, 0x31, 0x19, - 0x01, 0x00, 0xd5, 0x9c, 0x00, 0x00, 0x02, 0x05, - 0x0a, 0x00, 0x00, 0x00, 0x02, 0x04, 0x0a, 0x00, - 0x00, 0x00, 0xc5, 0x20, 0x00, 0x00, 0x21, 0x21, - 0x00, 0x00, 0x25, 0x21, 0x00, 0x00, 0x39, 0x21, - 0x00, 0x00, 0x49, 0x21, 0x00, 0x00, 0x55, 0x21, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x47, 0x01, 0x00, - 0x61, 0x21, 0x00, 0x00, 0xed, 0x21, 0x00, 0x00, - 0x0d, 0x22, 0x00, 0x00, 0x21, 0x22, 0x00, 0x00, - 0x3d, 0x22, 0x00, 0x00, 0x49, 0x22, 0x00, 0x00, - 0xc5, 0x22, 0x00, 0x00, 0xe1, 0x22, 0x00, 0x00, - 0xf5, 0x22, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00, - 0xe9, 0x1f, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00, - 0xe9, 0x1f, 0x00, 0x00, 0xe9, 0x1f, 0x00, 0x00, - 0x11, 0x23, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x47, - 0x01, 0x00, 0x1d, 0x23, 0x00, 0x00, 0x89, 0x23, - 0x00, 0x00, 0xa5, 0x23, 0x00, 0x00, 0xb9, 0x23, - 0x00, 0x00, 0x11, 0x20, 0x00, 0x00, 0x1d, 0x20, - 0x00, 0x00, 0x6d, 0x20, 0x00, 0x00, 0x8d, 0x20, - 0x00, 0x00, 0xb9, 0x20, 0x00, 0x00, 0x00, 0x01, - 0x02, 0x03, 0x03, 0x05, 0x06, 0x06, 0x08, 0x09, - 0x08, 0x09, 0x09, 0x09, 0xc4, 0x80, 0xca, 0x80, - 0x80, 0x80, 0x80, 0x80, 0xd0, 0x80, 0x3c, 0x00, - 0xe4, 0x47, 0x01, 0x00, 0xd6, 0xd9, 0xdc, 0xdf, - 0xe2, 0x80, 0x80, 0x80, 0xe5, 0xe8, 0x80, 0x80, - 0x80, 0x80, 0xeb, 0xee, 0xf1, 0xf4, 0xf7, 0xfa, - 0xfd, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, - 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, - 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, - 0x0c, 0x00, 0x0e, 0x00, 0x10, 0x00, 0x11, 0x00, - 0x13, 0x00, 0x16, 0x00, 0x18, 0x00, 0x1b, 0x00, - 0x3c, 0x00, 0x20, 0x48, 0x01, 0x00, 0x1e, 0x00, - 0x22, 0x00, 0x26, 0x00, 0x2b, 0x00, 0x30, 0x00, - 0x36, 0x00, 0x3c, 0x00, 0x44, 0x00, 0x4c, 0x00, - 0x55, 0x00, 0x5f, 0x00, 0x6b, 0x00, 0x78, 0x00, - 0x86, 0x00, 0x97, 0x00, 0xa9, 0x00, 0xbe, 0x00, - 0xd5, 0x00, 0xef, 0x00, 0xff, 0x7f, 0x0c, 0x00, - 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfe, 0xff, - 0xfc, 0xff, 0xfb, 0xff, 0xfa, 0xff, 0xf9, 0xff, - 0xf8, 0xff, 0x3c, 0x00, 0x5c, 0x48, 0x01, 0x00, - 0xf7, 0xff, 0xf6, 0xff, 0xf5, 0xff, 0xf4, 0xff, - 0xf3, 0xff, 0xf2, 0xff, 0xf1, 0xff, 0xf0, 0xff, - 0xef, 0xff, 0xee, 0xff, 0xed, 0xff, 0xec, 0xff, - 0xeb, 0xff, 0xea, 0xff, 0xe9, 0xff, 0xe8, 0xff, - 0xe7, 0xff, 0xe6, 0xff, 0xe5, 0xff, 0xe4, 0xff, - 0xe3, 0xff, 0xe2, 0xff, 0xe1, 0xff, 0xe0, 0xff, - 0xdf, 0xff, 0xde, 0xff, 0xdd, 0xff, 0xdc, 0xff, - 0xdc, 0xff, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x48, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xb1, 0x7c, 0x41, 0x00, 0x11, 0x5a, - 0x40, 0xe2, 0xb2, 0x7c, 0x41, 0x00, 0x05, 0x5a, - 0x40, 0xe2, 0xaf, 0x7c, 0x41, 0x00, 0xf9, 0x59, - 0x40, 0xe2, 0xb0, 0x7c, 0x41, 0x00, 0xed, 0x59, - 0x40, 0xe2, 0x24, 0x67, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x5c, 0x67, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x0a, 0x61, 0x01, 0x00, 0x3c, 0x00, - 0xd4, 0x48, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x0e, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x32, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x6a, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x0b, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x0f, 0x61, 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, - 0x40, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x78, 0x67, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0x3c, 0x00, 0x10, 0x49, 0x01, 0x00, 0x0c, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x10, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x4e, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x86, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x0d, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0x11, 0x61, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe3, 0xc0, 0x48, - 0x01, 0x00, 0x04, 0x00, 0x00, 0x0a, 0xe0, 0x48, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x49, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x00, 0x49, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x20, 0x49, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x18, 0x67, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x28, 0x75, 0x01, 0x01, - 0x7d, 0xa9, 0x40, 0xe2, 0x2c, 0x75, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x20, 0x75, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x44, 0x75, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x88, 0x49, - 0x01, 0x00, 0xf0, 0x59, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x24, 0x75, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0xb8, 0x7c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x8d, 0xa9, 0x00, 0x00, 0x01, 0x00, - 0x00, 0xda, 0x1d, 0x75, 0x01, 0x00, 0x01, 0x00, - 0x00, 0xe2, 0xc4, 0x67, 0x01, 0x00, 0x3c, 0x00, - 0xc4, 0x49, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x21, 0x59, 0x00, 0x00, 0x0e, 0x00, 0x00, 0xd9, - 0xc8, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xcc, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xd0, 0x67, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x65, 0xd9, 0x00, 0x00, 0x04, 0x00, 0x00, 0xda, - 0xa5, 0xd9, 0x00, 0x00, 0x04, 0x00, 0x00, 0xda, - 0x3c, 0x00, 0x00, 0x4a, 0x01, 0x00, 0x01, 0x59, - 0x00, 0x00, 0x01, 0x00, 0x00, 0xda, 0x32, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x6a, 0x67, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, 0x11, 0x59, - 0x00, 0x00, 0x01, 0x00, 0x00, 0xda, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x48, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xa0, 0x48, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x40, 0x49, - 0x01, 0x00, 0x3c, 0x00, 0x3c, 0x4a, 0x01, 0x00, - 0x05, 0x00, 0x00, 0x0a, 0x68, 0x49, 0x01, 0x00, - 0x09, 0x00, 0x00, 0x0a, 0x6c, 0x57, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x38, 0x61, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xac, 0x6e, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0xb0, 0x6e, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x70, 0x57, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x78, 0x4a, - 0x01, 0x00, 0xe8, 0x59, 0x01, 0x00, 0x08, 0x00, - 0x00, 0xe3, 0xdc, 0x58, 0x01, 0x14, 0x4d, 0xfd, - 0x40, 0xe3, 0x2c, 0x59, 0x01, 0x14, 0x39, 0xfd, - 0x40, 0xe3, 0xc0, 0x58, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x64, 0x73, 0x41, 0x00, 0x3d, 0x2e, - 0x44, 0xe2, 0x7c, 0x59, 0x01, 0x14, 0x3c, 0x00, - 0xb4, 0x4a, 0x01, 0x00, 0x9d, 0x2f, 0x44, 0xe3, - 0x5c, 0x57, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe2, - 0x79, 0x2e, 0x04, 0x00, 0x01, 0x00, 0x00, 0xdb, - 0xa0, 0x58, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe3, - 0xa2, 0x58, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe3, - 0xa0, 0x57, 0x01, 0x00, 0x0e, 0x00, 0x00, 0xe3, - 0xd1, 0x88, 0x01, 0x00, 0x01, 0x00, 0x00, 0xda, - 0x1d, 0x89, 0x01, 0x00, 0x04, 0x00, 0x00, 0xda, - 0x3c, 0x00, 0xf0, 0x4a, 0x01, 0x00, 0x95, 0x88, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xdb, 0x31, 0x2f, - 0x04, 0x00, 0x0e, 0x00, 0x00, 0xd9, 0xc5, 0x2e, - 0x04, 0x00, 0x0e, 0x00, 0x00, 0xd9, 0x68, 0x6c, - 0x01, 0x01, 0x15, 0xd5, 0x40, 0xe2, 0xc0, 0x57, - 0x01, 0x00, 0x08, 0x00, 0x00, 0xe3, 0xc8, 0x57, - 0x01, 0x00, 0x34, 0x00, 0x00, 0xe3, 0x9c, 0x6c, - 0x01, 0x00, 0x08, 0x00, 0x00, 0xe3, 0xb0, 0x58, - 0x01, 0x03, 0x3c, 0x00, 0x2c, 0x4b, 0x01, 0x00, - 0xe9, 0xd4, 0x40, 0xe2, 0xbc, 0x58, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x9d, 0xa3, 0x00, 0x00, - 0x60, 0x00, 0x00, 0xd9, 0x70, 0x79, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x78, 0x79, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x7c, 0x5a, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x5d, 0x1c, 0x00, 0x00, - 0x11, 0x00, 0x00, 0xd9, 0x24, 0x6e, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x68, 0x4b, - 0x01, 0x00, 0x18, 0x58, 0x01, 0x05, 0xd5, 0xd5, - 0x40, 0xe3, 0xfc, 0x57, 0x01, 0x00, 0x14, 0x00, - 0x00, 0xe3, 0x04, 0x8e, 0x01, 0x03, 0xe5, 0xd5, - 0x40, 0xe3, 0x00, 0x5b, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x18, 0x5b, 0x01, 0x00, 0x40, 0x00, - 0x00, 0xe2, 0xd4, 0x67, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x8d, 0x37, 0x00, 0x00, 0x04, 0x00, - 0x00, 0xdb, 0xbd, 0x36, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x4b, 0x01, 0x00, 0x04, 0x00, 0x00, 0xdb, - 0xfc, 0x60, 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, - 0x90, 0x7d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x70, 0x69, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xb0, 0x49, 0x01, 0x00, 0x1a, 0x00, 0x00, 0x0a, - 0x90, 0x4b, 0x01, 0x00, 0x06, 0x00, 0x00, 0x0a, - 0xa4, 0x58, 0x81, 0x00, 0x05, 0xfd, 0x40, 0xe3, - 0x3c, 0x00, 0xe0, 0x4b, 0x01, 0x00, 0x80, 0x4a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0x0a, 0x0c, 0x5a, - 0x81, 0x01, 0x25, 0x2d, 0x44, 0xe3, 0xe0, 0x4a, - 0x01, 0x00, 0x03, 0x00, 0x00, 0x0a, 0x18, 0x63, - 0x41, 0x00, 0xfd, 0xbb, 0x40, 0xe2, 0x08, 0x57, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0x9c, 0x48, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x4a, - 0x01, 0x00, 0x3c, 0x00, 0x1c, 0x4c, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x0a, 0xcc, 0x74, 0x01, 0x00, - 0x03, 0x00, 0x00, 0xe3, 0x65, 0x73, 0x41, 0x00, - 0xa9, 0x2e, 0x44, 0xe2, 0xf6, 0x59, 0x01, 0x01, - 0xd1, 0x2c, 0x44, 0xe3, 0x08, 0x4b, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x0a, 0x07, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x6a, 0x28, 0x4b, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x0a, 0x88, 0x7d, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x58, 0x4c, - 0x01, 0x00, 0x00, 0x75, 0x01, 0x04, 0x65, 0x6f, - 0x40, 0xe3, 0xbc, 0x78, 0x01, 0x00, 0x0e, 0x00, - 0x00, 0xe3, 0x38, 0x4b, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x0a, 0x04, 0x57, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x62, 0x58, 0x4b, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x80, 0x4b, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x68, 0x4b, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x8c, 0x7d, 0x01, 0x00, 0x3c, 0x00, - 0x94, 0x4c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x39, 0x2d, 0x04, 0x00, 0x04, 0x00, 0x00, 0xdb, - 0x94, 0x7d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x10, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x64, - 0xa8, 0x4c, 0x01, 0x00, 0x04, 0x00, 0x00, 0x0a, - 0x3c, 0x00, 0xd0, 0x4c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x4c, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0xd0, 0x4c, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x7a, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0xe8, 0x7a, - 0x01, 0x00, 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xed, 0x7a, - 0x01, 0x00, 0x3c, 0x00, 0x0c, 0x4d, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0xee, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf3, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0xf4, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf9, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0xfa, 0x7a, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe2, 0x3c, 0x00, 0x48, 0x4d, - 0x01, 0x00, 0xe8, 0x4c, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x00, 0x4d, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x18, 0x4d, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x30, 0x4d, 0x01, 0x00, 0x03, 0x00, - 0x00, 0x0a, 0x90, 0x5c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x94, 0x5c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x98, 0x5c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x9c, 0x5c, 0x01, 0x00, 0x3c, 0x00, - 0x84, 0x4d, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xa0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xa4, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xa8, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xac, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xb0, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xb4, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0xb8, 0x5c, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x3c, 0x00, 0xc0, 0x4d, 0x01, 0x00, 0xbc, 0x5c, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xc0, 0x5c, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xc4, 0x5c, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x90, 0x5c, - 0x01, 0x00, 0x38, 0x00, 0x00, 0xe3, 0x68, 0x4d, - 0x01, 0x00, 0x0e, 0x00, 0x00, 0x0a, 0xd8, 0x4d, - 0x01, 0x00, 0x02, 0x00, 0x00, 0xfa, 0x12, 0x61, - 0x81, 0x01, 0x31, 0xd5, 0x40, 0xe3, 0x06, 0x61, - 0x01, 0x00, 0x3c, 0x00, 0xfc, 0x4d, 0x01, 0x00, - 0x02, 0x00, 0x00, 0xe2, 0x0b, 0x61, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe3, 0x0f, 0x61, 0x01, 0x00, - 0x01, 0x00, 0x00, 0xe3, 0x08, 0x61, 0x01, 0x00, - 0x02, 0x00, 0x00, 0xe2, 0x50, 0x7b, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x4e, 0x01, 0x00, - 0x0e, 0x00, 0x00, 0x64, 0x9c, 0x57, 0x01, 0x01, - 0x91, 0x88, 0x41, 0xe3, 0x3c, 0x00, 0x38, 0x4e, - 0x01, 0x00, 0x6e, 0x41, 0x67, 0x6f, 0xe2, 0x65, - 0x60, 0x69, 0x6f, 0x20, 0x41, 0x42, 0x00, 0x00, - 0x00, 0x00, 0xf0, 0x4d, 0x01, 0x00, 0x09, 0x00, - 0x00, 0x0a, 0x48, 0x4e, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x0a, 0xe8, 0x4d, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x48, 0x4d, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x0a, 0x28, 0x61, 0x01, 0x01, 0x3c, 0x00, - 0x74, 0x4e, 0x01, 0x00, 0xbd, 0xd5, 0x40, 0xe2, - 0x69, 0x61, 0x41, 0x00, 0x85, 0xd5, 0x40, 0xe2, - 0x30, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x34, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x3c, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x34, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x44, 0x61, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x3c, 0x00, 0xb0, 0x4e, 0x01, 0x00, 0x70, 0x4e, - 0x01, 0x00, 0x08, 0x00, 0x00, 0x0a, 0x18, 0x61, - 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, 0x1c, 0x61, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0x20, 0x61, - 0x01, 0x00, 0x02, 0x00, 0x00, 0xe2, 0x24, 0x61, - 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, 0xb8, 0x4e, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xc8, 0x4e, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0xd8, 0x4e, - 0x01, 0x00, 0x3c, 0x00, 0xec, 0x4e, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x0a, 0x96, 0x48, 0x01, 0x00, - 0x06, 0x00, 0x00, 0xe3, 0xe0, 0x62, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x9b, 0x7d, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x62, 0x9c, 0x7d, 0x01, 0x00, - 0x02, 0x00, 0x00, 0x62, 0x60, 0x7c, 0x01, 0x00, - 0x04, 0x00, 0x00, 0xe2, 0x01, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x3c, 0x00, 0x28, 0x4f, - 0x01, 0x00, 0x2d, 0x63, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x49, 0xd5, 0x00, 0x00, 0x0e, 0x00, - 0x00, 0xd9, 0xf4, 0x67, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x62, 0x46, 0x7d, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x62, 0x9c, 0x7c, 0x01, 0x00, 0x04, 0x00, - 0x00, 0xe2, 0x98, 0x7c, 0x01, 0x00, 0x3c, 0x00, - 0x64, 0x4f, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62, - 0xa0, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62, - 0x58, 0x7c, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62, - 0x64, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62, - 0x5a, 0x7c, 0x01, 0x00, 0x02, 0x00, 0x00, 0x62, - 0x6a, 0x7c, 0x01, 0x00, 0x06, 0x00, 0x00, 0x62, - 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0xe4, 0x62, 0x01, 0x00, 0x04, 0x00, 0x00, 0xe2, - 0x3c, 0x00, 0xa0, 0x4f, 0x01, 0x00, 0xe8, 0x62, - 0x01, 0x00, 0x03, 0x00, 0x00, 0xe2, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x01, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x4f, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x3c, 0x00, 0x18, 0x50, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0xf0, 0x4e, 0x01, 0x00, 0x2a, 0x00, - 0x00, 0x0a, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x3c, 0x00, - 0x54, 0x50, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x02, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, - 0x05, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, - 0x3c, 0x00, 0x90, 0x50, 0x01, 0x00, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x06, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x07, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x08, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, - 0x01, 0x00, 0x0c, 0x00, 0x00, 0xdb, 0x09, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x50, 0x01, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x0a, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x0b, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x0c, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, - 0x0c, 0x00, 0x00, 0xdb, 0x3c, 0x00, 0x08, 0x51, - 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0xdb, 0x0e, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x00, 0x6a, 0x75, 0x2a, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0xdb, 0x48, 0x50, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x58, 0x50, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x68, 0x50, 0x01, 0x00, 0x02, 0x00, - 0x00, 0x0a, 0x78, 0x50, 0x01, 0x00, 0x3c, 0x00, - 0x44, 0x51, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0x88, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0x98, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xa8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xb8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xc8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xd8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0xe8, 0x50, 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, - 0x3c, 0x00, 0x80, 0x51, 0x01, 0x00, 0xf8, 0x50, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x08, 0x51, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x18, 0x51, - 0x01, 0x00, 0x02, 0x00, 0x00, 0x0a, 0x40, 0x50, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0xe8, 0x4e, - 0x01, 0x00, 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x4e, - 0x01, 0x00, 0x3c, 0x00, 0xbc, 0x51, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x28, 0x51, 0x01, 0x00, - 0x0e, 0x00, 0x00, 0x0a, 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, 0x3c, 0x00, 0xf8, 0x51, - 0x01, 0x00, 0x98, 0x51, 0x01, 0x00, 0x0c, 0x00, - 0x00, 0x0a, 0x50, 0x4e, 0x01, 0x00, 0x04, 0x00, - 0x00, 0x0a, 0xe0, 0x4c, 0x01, 0x00, 0x01, 0x00, - 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x4b, 0x01, 0x00, 0x1d, 0x00, - 0x00, 0x0a, 0xf8, 0x51, 0x01, 0x00, 0x05, 0x00, - 0x00, 0x0a, 0x24, 0x80, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1d, 0x80, 0x07, 0x00, 0x3c, 0x00, - 0x34, 0x52, 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0x07, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0x24, 0x80, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x80, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0x07, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x24, 0x80, 0x07, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x1d, 0x80, 0x07, 0x00, 0x20, 0x00, 0x00, 0x00, - 0x2a, 0x80, 0x07, 0x00, 0x6a, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x52, 0x01, 0x00, 0x00, 0x01, - 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, - 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, - 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x01, 0x63, - 0x00, 0x00, 0xa1, 0x63, 0x00, 0x00, 0xc5, 0x63, - 0x00, 0x00, 0xb1, 0x62, 0x00, 0x00, 0xc5, 0x63, - 0x00, 0x00, 0x21, 0x63, 0x00, 0x00, 0x4d, 0x63, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x52, 0x01, 0x00, - 0xa1, 0x63, 0x00, 0x00, 0x01, 0x63, 0x00, 0x00, - 0xa1, 0x63, 0x00, 0x00, 0x06, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, - 0x05, 0x05, 0x03, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0f, 0x0f, 0x10, - 0x11, 0x00, 0x00, 0x00, 0xa5, 0xc6, 0x84, 0xf8, - 0x99, 0xee, 0x8d, 0xf6, 0x0d, 0xff, 0xbd, 0xd6, - 0xb1, 0xde, 0x54, 0x91, 0x3c, 0x00, 0xe8, 0x52, - 0x01, 0x00, 0x50, 0x60, 0x03, 0x02, 0xa9, 0xce, - 0x7d, 0x56, 0x19, 0xe7, 0x62, 0xb5, 0xe6, 0x4d, - 0x9a, 0xec, 0x45, 0x8f, 0x9d, 0x1f, 0x40, 0x89, - 0x87, 0xfa, 0x15, 0xef, 0xeb, 0xb2, 0xc9, 0x8e, - 0x0b, 0xfb, 0xec, 0x41, 0x67, 0xb3, 0xfd, 0x5f, - 0xea, 0x45, 0xbf, 0x23, 0xf7, 0x53, 0x96, 0xe4, - 0x5b, 0x9b, 0xc2, 0x75, 0x1c, 0xe1, 0xae, 0x3d, - 0x6a, 0x4c, 0x5a, 0x6c, 0x41, 0x7e, 0x3c, 0x00, - 0x24, 0x53, 0x01, 0x00, 0x02, 0xf5, 0x4f, 0x83, - 0x5c, 0x68, 0xf4, 0x51, 0x34, 0xd1, 0x08, 0xf9, - 0x93, 0xe2, 0x73, 0xab, 0x53, 0x62, 0x3f, 0x2a, - 0x0c, 0x08, 0x52, 0x95, 0x65, 0x46, 0x5e, 0x9d, - 0x28, 0x30, 0xa1, 0x37, 0x0f, 0x0a, 0xb5, 0x2f, - 0x09, 0x0e, 0x36, 0x24, 0x9b, 0x1b, 0x3d, 0xdf, - 0x26, 0xcd, 0x69, 0x4e, 0xcd, 0x7f, 0x9f, 0xea, - 0x1b, 0x12, 0x9e, 0x1d, 0x74, 0x58, 0x2e, 0x34, - 0x3c, 0x00, 0x60, 0x53, 0x01, 0x00, 0x2d, 0x36, - 0xb2, 0xdc, 0xee, 0xb4, 0xfb, 0x5b, 0xf6, 0xa4, - 0x4d, 0x76, 0x61, 0xb7, 0xce, 0x7d, 0x7b, 0x52, - 0x3e, 0xdd, 0x71, 0x5e, 0x97, 0x13, 0xf5, 0xa6, - 0x68, 0xb9, 0x00, 0x00, 0x2c, 0xc1, 0x60, 0x40, - 0x1f, 0xe3, 0xc8, 0x79, 0xed, 0xb6, 0xbe, 0xd4, - 0x46, 0x8d, 0xd9, 0x67, 0x4b, 0x72, 0xde, 0x94, - 0xd4, 0x98, 0xe8, 0xb0, 0x4a, 0x85, 0x6b, 0xbb, - 0x2a, 0xc5, 0x3c, 0x00, 0x9c, 0x53, 0x01, 0x00, - 0xe5, 0x4f, 0x16, 0xed, 0xc5, 0x86, 0xd7, 0x9a, - 0x55, 0x66, 0x94, 0x11, 0xcf, 0x8a, 0x10, 0xe9, - 0x06, 0x04, 0x81, 0xfe, 0xf0, 0xa0, 0x44, 0x78, - 0xba, 0x25, 0xe3, 0x4b, 0xf3, 0xa2, 0xfe, 0x5d, - 0xc0, 0x80, 0x8a, 0x05, 0xad, 0x3f, 0xbc, 0x21, - 0x48, 0x70, 0x04, 0xf1, 0xdf, 0x63, 0xc1, 0x77, - 0x75, 0xaf, 0x63, 0x42, 0x30, 0x20, 0x1a, 0xe5, - 0x0e, 0xfd, 0x6d, 0xbf, 0x3c, 0x00, 0xd8, 0x53, - 0x01, 0x00, 0x4c, 0x81, 0x14, 0x18, 0x35, 0x26, - 0x2f, 0xc3, 0xe1, 0xbe, 0xa2, 0x35, 0xcc, 0x88, - 0x39, 0x2e, 0x57, 0x93, 0xf2, 0x55, 0x82, 0xfc, - 0x47, 0x7a, 0xac, 0xc8, 0xe7, 0xba, 0x2b, 0x32, - 0x95, 0xe6, 0xa0, 0xc0, 0x98, 0x19, 0xd1, 0x9e, - 0x7f, 0xa3, 0x66, 0x44, 0x7e, 0x54, 0xab, 0x3b, - 0x83, 0x0b, 0xca, 0x8c, 0x29, 0xc7, 0xd3, 0x6b, - 0x3c, 0x28, 0x79, 0xa7, 0xe2, 0xbc, 0x3c, 0x00, - 0x14, 0x54, 0x01, 0x00, 0x1d, 0x16, 0x76, 0xad, - 0x3b, 0xdb, 0x56, 0x64, 0x4e, 0x74, 0x1e, 0x14, - 0xdb, 0x92, 0x0a, 0x0c, 0x6c, 0x48, 0xe4, 0xb8, - 0x5d, 0x9f, 0x6e, 0xbd, 0xef, 0x43, 0xa6, 0xc4, - 0xa8, 0x39, 0xa4, 0x31, 0x37, 0xd3, 0x8b, 0xf2, - 0x32, 0xd5, 0x43, 0x8b, 0x59, 0x6e, 0xb7, 0xda, - 0x8c, 0x01, 0x64, 0xb1, 0xd2, 0x9c, 0xe0, 0x49, - 0xb4, 0xd8, 0xfa, 0xac, 0x07, 0xf3, 0x25, 0xcf, - 0x3c, 0x00, 0x50, 0x54, 0x01, 0x00, 0xaf, 0xca, - 0x8e, 0xf4, 0xe9, 0x47, 0x18, 0x10, 0xd5, 0x6f, - 0x88, 0xf0, 0x6f, 0x4a, 0x72, 0x5c, 0x24, 0x38, - 0xf1, 0x57, 0xc7, 0x73, 0x51, 0x97, 0x23, 0xcb, - 0x7c, 0xa1, 0x9c, 0xe8, 0x21, 0x3e, 0xdd, 0x96, - 0xdc, 0x61, 0x86, 0x0d, 0x85, 0x0f, 0x90, 0xe0, - 0x42, 0x7c, 0xc4, 0x71, 0xaa, 0xcc, 0xd8, 0x90, - 0x05, 0x06, 0x01, 0xf7, 0x12, 0x1c, 0xa3, 0xc2, - 0x5f, 0x6a, 0x3c, 0x00, 0x8c, 0x54, 0x01, 0x00, - 0xf9, 0xae, 0xd0, 0x69, 0x91, 0x17, 0x58, 0x99, - 0x27, 0x3a, 0xb9, 0x27, 0x38, 0xd9, 0x13, 0xeb, - 0xb3, 0x2b, 0x33, 0x22, 0xbb, 0xd2, 0x70, 0xa9, - 0x89, 0x07, 0xa7, 0x33, 0xb6, 0x2d, 0x22, 0x3c, - 0x92, 0x15, 0x20, 0xc9, 0x49, 0x87, 0xff, 0xaa, - 0x78, 0x50, 0x7a, 0xa5, 0x8f, 0x03, 0xf8, 0x59, - 0x80, 0x09, 0x17, 0x1a, 0xda, 0x65, 0x31, 0xd7, - 0xc6, 0x84, 0xb8, 0xd0, 0x3c, 0x00, 0xc8, 0x54, - 0x01, 0x00, 0xc3, 0x82, 0xb0, 0x29, 0x77, 0x5a, - 0x11, 0x1e, 0xcb, 0x7b, 0xfc, 0xa8, 0xd6, 0x6d, - 0x3a, 0x2c, 0xc6, 0xa5, 0xf8, 0x84, 0xee, 0x99, - 0xf6, 0x8d, 0xff, 0x0d, 0xd6, 0xbd, 0xde, 0xb1, - 0x91, 0x54, 0x60, 0x50, 0x02, 0x03, 0xce, 0xa9, - 0x56, 0x7d, 0xe7, 0x19, 0xb5, 0x62, 0x4d, 0xe6, - 0xec, 0x9a, 0x8f, 0x45, 0x1f, 0x9d, 0x89, 0x40, - 0xfa, 0x87, 0xef, 0x15, 0xb2, 0xeb, 0x3c, 0x00, - 0x04, 0x55, 0x01, 0x00, 0x8e, 0xc9, 0xfb, 0x0b, - 0x41, 0xec, 0xb3, 0x67, 0x5f, 0xfd, 0x45, 0xea, - 0x23, 0xbf, 0x53, 0xf7, 0xe4, 0x96, 0x9b, 0x5b, - 0x75, 0xc2, 0xe1, 0x1c, 0x3d, 0xae, 0x4c, 0x6a, - 0x6c, 0x5a, 0x7e, 0x41, 0xf5, 0x02, 0x83, 0x4f, - 0x68, 0x5c, 0x51, 0xf4, 0xd1, 0x34, 0xf9, 0x08, - 0xe2, 0x93, 0xab, 0x73, 0x62, 0x53, 0x2a, 0x3f, - 0x08, 0x0c, 0x95, 0x52, 0x46, 0x65, 0x9d, 0x5e, - 0x3c, 0x00, 0x40, 0x55, 0x01, 0x00, 0x30, 0x28, - 0x37, 0xa1, 0x0a, 0x0f, 0x2f, 0xb5, 0x0e, 0x09, - 0x24, 0x36, 0x1b, 0x9b, 0xdf, 0x3d, 0xcd, 0x26, - 0x4e, 0x69, 0x7f, 0xcd, 0xea, 0x9f, 0x12, 0x1b, - 0x1d, 0x9e, 0x58, 0x74, 0x34, 0x2e, 0x36, 0x2d, - 0xdc, 0xb2, 0xb4, 0xee, 0x5b, 0xfb, 0xa4, 0xf6, - 0x76, 0x4d, 0xb7, 0x61, 0x7d, 0xce, 0x52, 0x7b, - 0xdd, 0x3e, 0x5e, 0x71, 0x13, 0x97, 0xa6, 0xf5, - 0xb9, 0x68, 0x3c, 0x00, 0x7c, 0x55, 0x01, 0x00, - 0x00, 0x00, 0xc1, 0x2c, 0x40, 0x60, 0xe3, 0x1f, - 0x79, 0xc8, 0xb6, 0xed, 0xd4, 0xbe, 0x8d, 0x46, - 0x67, 0xd9, 0x72, 0x4b, 0x94, 0xde, 0x98, 0xd4, - 0xb0, 0xe8, 0x85, 0x4a, 0xbb, 0x6b, 0xc5, 0x2a, - 0x4f, 0xe5, 0xed, 0x16, 0x86, 0xc5, 0x9a, 0xd7, - 0x66, 0x55, 0x11, 0x94, 0x8a, 0xcf, 0xe9, 0x10, - 0x04, 0x06, 0xfe, 0x81, 0xa0, 0xf0, 0x78, 0x44, - 0x25, 0xba, 0x4b, 0xe3, 0x3c, 0x00, 0xb8, 0x55, - 0x01, 0x00, 0xa2, 0xf3, 0x5d, 0xfe, 0x80, 0xc0, - 0x05, 0x8a, 0x3f, 0xad, 0x21, 0xbc, 0x70, 0x48, - 0xf1, 0x04, 0x63, 0xdf, 0x77, 0xc1, 0xaf, 0x75, - 0x42, 0x63, 0x20, 0x30, 0xe5, 0x1a, 0xfd, 0x0e, - 0xbf, 0x6d, 0x81, 0x4c, 0x18, 0x14, 0x26, 0x35, - 0xc3, 0x2f, 0xbe, 0xe1, 0x35, 0xa2, 0x88, 0xcc, - 0x2e, 0x39, 0x93, 0x57, 0x55, 0xf2, 0xfc, 0x82, - 0x7a, 0x47, 0xc8, 0xac, 0xba, 0xe7, 0x3c, 0x00, - 0xf4, 0x55, 0x01, 0x00, 0x32, 0x2b, 0xe6, 0x95, - 0xc0, 0xa0, 0x19, 0x98, 0x9e, 0xd1, 0xa3, 0x7f, - 0x44, 0x66, 0x54, 0x7e, 0x3b, 0xab, 0x0b, 0x83, - 0x8c, 0xca, 0xc7, 0x29, 0x6b, 0xd3, 0x28, 0x3c, - 0xa7, 0x79, 0xbc, 0xe2, 0x16, 0x1d, 0xad, 0x76, - 0xdb, 0x3b, 0x64, 0x56, 0x74, 0x4e, 0x14, 0x1e, - 0x92, 0xdb, 0x0c, 0x0a, 0x48, 0x6c, 0xb8, 0xe4, - 0x9f, 0x5d, 0xbd, 0x6e, 0x43, 0xef, 0xc4, 0xa6, - 0x3c, 0x00, 0x30, 0x56, 0x01, 0x00, 0x39, 0xa8, - 0x31, 0xa4, 0xd3, 0x37, 0xf2, 0x8b, 0xd5, 0x32, - 0x8b, 0x43, 0x6e, 0x59, 0xda, 0xb7, 0x01, 0x8c, - 0xb1, 0x64, 0x9c, 0xd2, 0x49, 0xe0, 0xd8, 0xb4, - 0xac, 0xfa, 0xf3, 0x07, 0xcf, 0x25, 0xca, 0xaf, - 0xf4, 0x8e, 0x47, 0xe9, 0x10, 0x18, 0x6f, 0xd5, - 0xf0, 0x88, 0x4a, 0x6f, 0x5c, 0x72, 0x38, 0x24, - 0x57, 0xf1, 0x73, 0xc7, 0x97, 0x51, 0xcb, 0x23, - 0xa1, 0x7c, 0x3c, 0x00, 0x6c, 0x56, 0x01, 0x00, - 0xe8, 0x9c, 0x3e, 0x21, 0x96, 0xdd, 0x61, 0xdc, - 0x0d, 0x86, 0x0f, 0x85, 0xe0, 0x90, 0x7c, 0x42, - 0x71, 0xc4, 0xcc, 0xaa, 0x90, 0xd8, 0x06, 0x05, - 0xf7, 0x01, 0x1c, 0x12, 0xc2, 0xa3, 0x6a, 0x5f, - 0xae, 0xf9, 0x69, 0xd0, 0x17, 0x91, 0x99, 0x58, - 0x3a, 0x27, 0x27, 0xb9, 0xd9, 0x38, 0xeb, 0x13, - 0x2b, 0xb3, 0x22, 0x33, 0xd2, 0xbb, 0xa9, 0x70, - 0x07, 0x89, 0x33, 0xa7, 0x3c, 0x00, 0xa8, 0x56, - 0x01, 0x00, 0x2d, 0xb6, 0x3c, 0x22, 0x15, 0x92, - 0xc9, 0x20, 0x87, 0x49, 0xaa, 0xff, 0x50, 0x78, - 0xa5, 0x7a, 0x03, 0x8f, 0x59, 0xf8, 0x09, 0x80, - 0x1a, 0x17, 0x65, 0xda, 0xd7, 0x31, 0x84, 0xc6, - 0xd0, 0xb8, 0x82, 0xc3, 0x29, 0xb0, 0x5a, 0x77, - 0x1e, 0x11, 0x7b, 0xcb, 0xa8, 0xfc, 0x6d, 0xd6, - 0x2c, 0x3a, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x56, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x01, 0x72, 0x65, 0x71, 0x45, 0x72, 0x72, 0x52, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x57, 0x01, 0x00, 0xc4, 0x8e, - 0x01, 0x00, 0x24, 0x9a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x24, 0x9a, - 0x01, 0x00, 0xa4, 0xb2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xa4, 0xb2, - 0x01, 0x00, 0x14, 0xc8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x10, 0x20, - 0x30, 0x40, 0x50, 0xbb, 0x30, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x57, 0x01, 0x00, - 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x22, - 0x24, 0x26, 0x28, 0x2a, 0x2b, 0x2c, 0x01, 0x00, - 0x70, 0x17, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x0d, 0x25, 0x00, 0x00, 0x41, 0x3f, 0x01, 0x00, - 0x65, 0x29, 0x01, 0x00, 0x0d, 0x25, 0x00, 0x00, - 0xf5, 0x5e, 0x00, 0x00, 0x41, 0x3f, 0x01, 0x00, - 0x41, 0x3f, 0x01, 0x00, 0x02, 0x04, 0x0b, 0x0c, - 0x12, 0x16, 0x18, 0x24, 0x3c, 0x00, 0x98, 0x57, - 0x01, 0x00, 0x30, 0x48, 0x60, 0x6c, 0x01, 0x00, - 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x02, 0x10, 0x12, 0x11, 0x00, - 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x57, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x93, 0x04, 0x00, - 0x40, 0x42, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0xdf, 0x40, 0xcf, 0xfd, 0x00, 0x40, 0x83, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x58, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x00, 0x80, 0x81, 0x00, 0x00, - 0x80, 0x00, 0xbf, 0xff, 0x7f, 0x7e, 0x01, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x6f, - 0x01, 0x00, 0x3c, 0x00, 0x4c, 0x58, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xb8, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xf8, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x38, 0x71, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x78, 0x71, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x90, 0x71, 0x01, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x58, - 0x01, 0x00, 0xa8, 0x71, 0x01, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x05, 0x0a, 0x01, 0x06, 0x0b, - 0x02, 0x07, 0x0c, 0x03, 0x08, 0x0d, 0x04, 0x09, - 0x00, 0x00, 0x03, 0x03, 0x01, 0x01, 0x00, 0x04, - 0x00, 0x04, 0x04, 0x06, 0x16, 0x1e, 0x1f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xff, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x00, - 0xc4, 0x58, 0x01, 0x00, 0x18, 0x18, 0x18, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, - 0x61, 0x8b, 0x4a, 0x00, 0x61, 0x8f, 0x4a, 0x00, - 0x61, 0x8b, 0x4a, 0x00, 0x05, 0xe3, 0xc0, 0x00, - 0x05, 0xcb, 0xc0, 0x00, 0x05, 0xbb, 0xc0, 0x00, - 0x85, 0xba, 0xc0, 0x00, 0x85, 0xa2, 0xc0, 0x00, - 0x85, 0x92, 0xc0, 0x00, 0x85, 0x8a, 0xc0, 0x00, - 0x85, 0x7a, 0xc0, 0x00, 0x45, 0x89, 0xc0, 0x00, - 0x3c, 0x00, 0x00, 0x59, 0x01, 0x00, 0x45, 0x71, - 0xc0, 0x00, 0x45, 0x69, 0xc0, 0x00, 0x45, 0x61, - 0xc0, 0x00, 0x45, 0x59, 0xc0, 0x00, 0x45, 0x51, - 0xc0, 0x00, 0x45, 0x49, 0xc0, 0x00, 0x45, 0x41, - 0xc0, 0x00, 0x45, 0x39, 0xc0, 0x00, 0x45, 0x31, - 0xc0, 0x00, 0x45, 0x29, 0xc0, 0x00, 0x45, 0x21, - 0xc0, 0x00, 0x60, 0x2d, 0x06, 0x00, 0x60, 0x2d, - 0x06, 0x00, 0x60, 0x2d, 0x06, 0x00, 0x60, 0x2d, - 0x06, 0x00, 0x3c, 0x00, 0x3c, 0x59, 0x01, 0x00, - 0x60, 0x2d, 0x06, 0x00, 0x60, 0x28, 0x06, 0x00, - 0x50, 0x26, 0x06, 0x00, 0x50, 0x21, 0x06, 0x00, - 0x50, 0x1f, 0x06, 0x00, 0x50, 0x1c, 0x06, 0x00, - 0x50, 0x1a, 0x06, 0x00, 0x50, 0x18, 0x06, 0x00, - 0x50, 0x16, 0x06, 0x00, 0x50, 0x14, 0x06, 0x00, - 0x50, 0x12, 0x06, 0x00, 0x50, 0x10, 0x06, 0x00, - 0x50, 0x0e, 0x06, 0x00, 0x50, 0x0c, 0x06, 0x00, - 0x50, 0x0a, 0x06, 0x00, 0x3c, 0x00, 0x78, 0x59, - 0x01, 0x00, 0x2b, 0x0b, 0x06, 0x00, 0x1d, 0x75, - 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x75, - 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x75, - 0xc0, 0x00, 0x1d, 0x75, 0xc0, 0x00, 0x1d, 0x6d, - 0xc0, 0x00, 0xdd, 0x5b, 0xc0, 0x00, 0xdd, 0x4b, - 0xc0, 0x00, 0xdd, 0x43, 0xc0, 0x00, 0xdd, 0x3b, - 0xc0, 0x00, 0xdd, 0x33, 0xc0, 0x00, 0xdd, 0x2b, - 0xc0, 0x00, 0xdd, 0x23, 0xc0, 0x00, 0x3c, 0x00, - 0xb4, 0x59, 0x01, 0x00, 0xdd, 0x1b, 0xc0, 0x00, - 0xdd, 0x13, 0xc0, 0x00, 0xdd, 0x13, 0xc0, 0x00, - 0xdd, 0x13, 0xc0, 0x00, 0xdd, 0x13, 0xc0, 0x00, - 0xdd, 0x13, 0xc0, 0x00, 0x05, 0x05, 0x05, 0x04, - 0x04, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x05, 0x05, 0x05, 0x04, 0x04, 0x03, - 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x88, 0x13, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x59, 0x01, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x5b, 0x00, 0x40, 0x02, - 0xe0, 0xfd, 0xf2, 0x00, 0xb8, 0xfc, 0xa4, 0x01, - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x03, 0x0b, 0x9f, 0x5f, 0x07, 0x01, - 0x2a, 0x04, 0x21, 0x04, 0x17, 0x04, 0x0e, 0x04, - 0x04, 0x04, 0xfb, 0x03, 0xf1, 0x03, 0xe8, 0x03, - 0xc9, 0x03, 0xaa, 0x03, 0x8a, 0x03, 0x6b, 0x03, - 0x4c, 0x03, 0x3c, 0x00, 0x2c, 0x5a, 0x01, 0x00, - 0x2d, 0x03, 0x0e, 0x03, 0xee, 0x02, 0xec, 0x02, - 0x01, 0x03, 0x16, 0x03, 0x2b, 0x03, 0x40, 0x03, - 0x55, 0x03, 0x6a, 0x03, 0x7f, 0x03, 0x94, 0x03, - 0xa9, 0x03, 0xbe, 0x03, 0xd3, 0x03, 0xe8, 0x03, - 0xbe, 0x03, 0x94, 0x03, 0x6a, 0x03, 0x00, 0x02, - 0x04, 0x06, 0x07, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x00, 0x03, 0x3c, 0x00, 0x68, 0x5a, - 0x01, 0x00, 0x05, 0x08, 0x0b, 0x0e, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x01, 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, 0x3c, 0x00, - 0xa4, 0x5a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x5a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x5b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x5b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x5b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x5b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x5c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x5c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x5c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x5c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x5c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x5d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x5d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x5d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x5d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x5e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x5e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x5e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x5e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x5f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x5f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x5f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x5f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x60, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x60, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x60, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x60, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x60, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x61, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x61, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x61, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x61, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x62, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x62, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x62, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x62, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x63, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x63, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x63, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x63, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x64, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0x64, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x64, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x64, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x65, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x65, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x65, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x65, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x66, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x66, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x66, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x66, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x67, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0x67, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x67, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0x67, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x68, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x68, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x68, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0x68, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x68, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0x69, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x69, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x69, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x69, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x6a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x6a, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x6a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x6a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x6b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x6b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x6b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x6b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x6b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x6c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x6c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x6c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x6c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x6d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x6d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x6d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x6d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x6e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x6e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x6e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x6e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x6f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x6f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x6f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x6f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x70, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x70, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x70, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x70, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x71, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x71, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x71, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x71, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x72, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x72, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x72, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x72, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0x73, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x73, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0x73, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x73, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x73, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x74, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x74, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x74, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x74, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x75, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x75, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x75, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x75, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x76, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0x76, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x76, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0x76, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x77, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x77, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x77, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0x77, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x77, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0x78, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x78, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x78, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x78, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x79, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x79, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x79, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x79, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x7a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x7a, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x7a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x7a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x7a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x7b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x7b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x7b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x7b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x7c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x7c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x7c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x7c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x7d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x7d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x7d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x7d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x7e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x7e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x7e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x7e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x7e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x7f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x7f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x7f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x7f, - 0x01, 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, 0x70, 0xb5, 0x01, 0x25, 0x07, 0x4e, - 0xad, 0x03, 0x75, 0x61, 0x0a, 0x20, 0xfa, 0xf7, - 0x6c, 0xff, 0x30, 0x68, 0x80, 0x03, 0xc4, 0x0f, - 0xb5, 0x61, 0x0a, 0x20, 0xfa, 0xf7, 0x65, 0xff, - 0x20, 0x1c, 0x70, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x80, 0x01, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x70, 0xb5, 0x01, 0x25, 0x6d, 0x04, 0x00, 0x28, - 0x10, 0x4c, 0x01, 0xd0, 0x65, 0x61, 0x00, 0xe0, - 0xa5, 0x61, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, - 0xa0, 0x68, 0x28, 0x43, 0xa0, 0x60, 0x0a, 0x20, - 0xfa, 0xf7, 0x4e, 0xff, 0x01, 0x26, 0xb6, 0x03, - 0x66, 0x61, 0x0a, 0x20, 0xfa, 0xf7, 0x48, 0xff, - 0xa6, 0x61, 0x01, 0x20, 0xfa, 0xf7, 0x44, 0xff, - 0x3c, 0x00, 0x60, 0x80, 0x01, 0x00, 0xa0, 0x68, - 0xa8, 0x43, 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, - 0x60, 0x60, 0x0a, 0x20, 0xfa, 0xf7, 0x3b, 0xff, - 0x70, 0xbd, 0x10, 0x00, 0x07, 0x00, 0x70, 0xb5, - 0x01, 0x25, 0x10, 0x4c, 0x6d, 0x04, 0x65, 0x61, - 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, 0xa0, 0x68, - 0x28, 0x43, 0xa0, 0x60, 0xee, 0x08, 0xa6, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0x28, 0xff, 0x66, 0x61, - 0x0a, 0x20, 0x3c, 0x00, 0x9c, 0x80, 0x01, 0x00, - 0xfa, 0xf7, 0x24, 0xff, 0xa5, 0x61, 0x0a, 0x20, - 0xfa, 0xf7, 0x20, 0xff, 0xa6, 0x61, 0x0a, 0x20, - 0xfa, 0xf7, 0x1c, 0xff, 0xa0, 0x68, 0xa8, 0x43, - 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, - 0x70, 0xbd, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, - 0x70, 0xb5, 0x01, 0x25, 0x0e, 0x4c, 0x6d, 0x04, - 0xa5, 0x61, 0x60, 0x68, 0x28, 0x43, 0x60, 0x60, - 0xa0, 0x68, 0x28, 0x43, 0x3c, 0x00, 0xd8, 0x80, - 0x01, 0x00, 0xa0, 0x60, 0xee, 0x08, 0x66, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0x02, 0xff, 0x65, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0xfe, 0xfe, 0xa6, 0x61, - 0x0a, 0x20, 0xfa, 0xf7, 0xfa, 0xfe, 0xa0, 0x68, - 0xa8, 0x43, 0xa0, 0x60, 0x60, 0x68, 0x28, 0x43, - 0x60, 0x60, 0x70, 0xbd, 0x00, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x70, 0xb5, 0x05, 0x1c, 0x00, 0x24, - 0x80, 0x26, 0x28, 0x1c, 0x30, 0x40, 0x3c, 0x00, - 0x14, 0x81, 0x01, 0x00, 0xff, 0xf7, 0x88, 0xff, - 0x68, 0x06, 0x05, 0x0e, 0x01, 0x34, 0x08, 0x2c, - 0xf6, 0xdb, 0xff, 0xf7, 0x6d, 0xff, 0x70, 0xbd, - 0x80, 0xb5, 0x02, 0x1c, 0x0b, 0x21, 0x80, 0x20, - 0xfb, 0xf7, 0x3e, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0xf8, 0xb5, 0x12, 0x48, 0x00, 0x25, 0x07, 0x1c, - 0xff, 0x37, 0x06, 0x1d, 0x01, 0x37, 0x28, 0x1c, - 0xf9, 0xf7, 0xea, 0xfd, 0x04, 0x1c, 0x17, 0xd0, - 0x3c, 0x00, 0x50, 0x81, 0x01, 0x00, 0x20, 0x69, - 0x00, 0x28, 0x04, 0xd0, 0xe0, 0x6a, 0x00, 0x28, - 0x03, 0xd0, 0x00, 0x20, 0xe0, 0x62, 0x25, 0x1c, - 0xf0, 0xe7, 0x7b, 0x68, 0x00, 0x2b, 0x05, 0xd0, - 0x32, 0x1c, 0x21, 0x1c, 0x44, 0x31, 0x01, 0x20, - 0xe8, 0xf7, 0x34, 0xf9, 0x20, 0x1c, 0x44, 0x30, - 0xf9, 0xf7, 0x37, 0xfe, 0xe2, 0xe7, 0xf8, 0xbd, - 0x00, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x11, 0x48, - 0x70, 0xb5, 0x3c, 0x00, 0x8c, 0x81, 0x01, 0x00, - 0x00, 0x68, 0xff, 0x28, 0x1d, 0xd1, 0xff, 0x20, - 0x32, 0x30, 0xfa, 0xf7, 0xa7, 0xfe, 0x0e, 0x4d, - 0x6c, 0x68, 0x0e, 0x48, 0xfa, 0xf7, 0xa2, 0xfe, - 0x68, 0x68, 0x24, 0x1a, 0x01, 0x20, 0x00, 0xf0, - 0x95, 0xfd, 0x6e, 0x68, 0x09, 0x48, 0xfa, 0xf7, - 0x99, 0xfe, 0x68, 0x68, 0x21, 0x1c, 0x0a, 0x39, - 0x30, 0x1a, 0x88, 0x42, 0x02, 0xd3, 0x0a, 0x34, - 0xa0, 0x42, 0x02, 0xd9, 0x3c, 0x00, 0xc8, 0x81, - 0x01, 0x00, 0x00, 0x20, 0x00, 0xf0, 0x85, 0xfd, - 0x70, 0xbd, 0xf4, 0x74, 0x01, 0x00, 0x00, 0x03, - 0x07, 0x00, 0x93, 0x03, 0x00, 0x00, 0x70, 0xb5, - 0x00, 0xf0, 0x4d, 0xf8, 0x01, 0x20, 0xed, 0xf7, - 0x34, 0xf9, 0x11, 0x4d, 0x18, 0x21, 0x68, 0x60, - 0x00, 0x20, 0xe9, 0xf7, 0xf2, 0xf9, 0x28, 0x60, - 0x04, 0x68, 0x80, 0x20, 0x20, 0x80, 0x00, 0x26, - 0x06, 0x22, 0xff, 0x21, 0x20, 0x1d, 0x3c, 0x00, - 0x04, 0x82, 0x01, 0x00, 0x66, 0x80, 0xe8, 0xf7, - 0x0b, 0xfa, 0x20, 0x1c, 0x0a, 0x30, 0x09, 0x49, - 0xf2, 0xf7, 0x2e, 0xfd, 0x20, 0x1c, 0x10, 0x30, - 0x07, 0x49, 0xf2, 0xf7, 0x29, 0xfd, 0xe6, 0x82, - 0x03, 0xcd, 0xe9, 0xf7, 0xf9, 0xf8, 0x02, 0x49, - 0x01, 0x20, 0x14, 0x39, 0x88, 0x60, 0x70, 0xbd, - 0x90, 0xd9, 0x01, 0x00, 0x12, 0x61, 0x01, 0x00, - 0x24, 0xf7, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x82, 0x01, 0x00, 0x10, 0xb5, - 0x06, 0x4c, 0x00, 0x22, 0x02, 0x20, 0xe1, 0x68, - 0xf0, 0xf7, 0x11, 0xfb, 0x60, 0x78, 0x02, 0x28, - 0x01, 0xd1, 0x00, 0xf0, 0x1a, 0xf9, 0x10, 0xbd, - 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, 0x80, 0xb5, - 0xa1, 0x20, 0xff, 0xf7, 0x50, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0x40, 0x00, 0x0e, 0x21, 0x08, 0x40, - 0x80, 0xb5, 0xa0, 0x30, 0xff, 0xf7, 0x47, 0xff, - 0x80, 0xbd, 0x3c, 0x00, 0x7c, 0x82, 0x01, 0x00, - 0x10, 0xb5, 0x05, 0x4c, 0x20, 0x68, 0x00, 0x28, - 0x04, 0xd0, 0xe9, 0xf7, 0x87, 0xf9, 0x00, 0x20, - 0x20, 0x60, 0x60, 0x60, 0x10, 0xbd, 0x00, 0x00, - 0x90, 0xd9, 0x01, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0x01, 0x21, 0x07, 0x4a, 0x21, 0x61, 0x02, 0x20, - 0x10, 0x70, 0x61, 0x61, 0x00, 0xf0, 0xd6, 0xfc, - 0x00, 0xf0, 0xc8, 0xfb, 0x20, 0x1c, 0xed, 0xf7, - 0x9f, 0xfa, 0x10, 0xbd, 0x3c, 0x00, 0xb8, 0x82, - 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x7c, 0xd9, - 0x01, 0x00, 0x70, 0xb5, 0x02, 0x1c, 0x08, 0x1c, - 0x02, 0x25, 0x00, 0x2a, 0x13, 0x4e, 0x14, 0xd0, - 0x00, 0xf0, 0x11, 0xfc, 0x30, 0x78, 0x01, 0x21, - 0x08, 0x43, 0x30, 0x70, 0x30, 0x78, 0x28, 0x43, - 0x30, 0x70, 0x00, 0x20, 0x7d, 0x21, 0x49, 0x01, - 0xb2, 0x79, 0x92, 0x07, 0x00, 0xd5, 0x01, 0x34, - 0x01, 0x30, 0x88, 0x42, 0xf8, 0xdb, 0x3c, 0x00, - 0xf4, 0x82, 0x01, 0x00, 0x20, 0x1c, 0x70, 0xbd, - 0x30, 0x78, 0xa8, 0x43, 0x30, 0x70, 0x30, 0x78, - 0x40, 0x08, 0x40, 0x00, 0x30, 0x70, 0x05, 0x49, - 0x48, 0x68, 0x01, 0x22, 0x12, 0x04, 0x90, 0x43, - 0x48, 0x60, 0x01, 0x20, 0x70, 0xbd, 0x00, 0x00, - 0x88, 0x00, 0x07, 0x00, 0x6c, 0x00, 0x07, 0x00, - 0xff, 0xb5, 0x09, 0xae, 0x00, 0x20, 0x60, 0xce, - 0x28, 0x60, 0x00, 0x23, 0x9c, 0x46, 0x30, 0x60, - 0x3c, 0x00, 0x30, 0x83, 0x01, 0x00, 0x69, 0x46, - 0x01, 0xaa, 0x17, 0xe0, 0xdb, 0x07, 0x0e, 0xd5, - 0x12, 0x4b, 0x1c, 0x56, 0x63, 0x1c, 0x0a, 0xd0, - 0x01, 0x27, 0x2b, 0x68, 0xa7, 0x40, 0x3b, 0x43, - 0x2b, 0x60, 0x13, 0x68, 0xdb, 0x07, 0x02, 0xd5, - 0x33, 0x68, 0x3b, 0x43, 0x33, 0x60, 0x0b, 0x68, - 0x5b, 0x08, 0x0b, 0x60, 0x13, 0x68, 0x5b, 0x08, - 0x13, 0x60, 0x01, 0x30, 0x0b, 0x68, 0x00, 0x2b, - 0x01, 0xd0, 0x3c, 0x00, 0x6c, 0x83, 0x01, 0x00, - 0x22, 0x28, 0xe2, 0xd3, 0x63, 0x46, 0x01, 0x33, - 0x20, 0x20, 0x02, 0x2b, 0x9c, 0x46, 0x02, 0xa9, - 0x03, 0xaa, 0xf2, 0xdb, 0xff, 0xbd, 0x00, 0x00, - 0xb4, 0x8d, 0x01, 0x00, 0xb0, 0xb5, 0x04, 0x1c, - 0x0d, 0x1c, 0x1e, 0x21, 0x00, 0x22, 0x03, 0x20, - 0x05, 0x4b, 0xf9, 0xf7, 0xb3, 0xf8, 0x21, 0x1c, - 0x03, 0x20, 0xf9, 0xf7, 0xf5, 0xf8, 0x29, 0x1c, - 0x03, 0x20, 0xf9, 0xf7, 0x3c, 0x00, 0xa8, 0x83, - 0x01, 0x00, 0xf1, 0xf8, 0xb0, 0xbd, 0x80, 0x38, - 0x01, 0x00, 0xb0, 0xb5, 0x1c, 0x4c, 0x1c, 0x4d, - 0x21, 0x78, 0x02, 0x29, 0x09, 0xd0, 0x03, 0x29, - 0x19, 0xd0, 0x04, 0x29, 0x1f, 0xd0, 0x05, 0x29, - 0x23, 0xd1, 0x00, 0x20, 0x00, 0xf0, 0x17, 0xfb, - 0x23, 0xe0, 0x68, 0x61, 0x14, 0x48, 0x1c, 0x30, - 0xc1, 0x68, 0x02, 0x69, 0x89, 0x18, 0xc1, 0x60, - 0x00, 0xf0, 0x2f, 0xfb, 0xe0, 0x68, 0x3c, 0x00, - 0xe4, 0x83, 0x01, 0x00, 0x01, 0x38, 0xe0, 0x60, - 0x16, 0xd1, 0x32, 0x20, 0xe0, 0x60, 0xff, 0xf7, - 0xa3, 0xfe, 0x11, 0xe0, 0x00, 0x20, 0x00, 0xf0, - 0x01, 0xfb, 0x00, 0xf0, 0x2d, 0xfc, 0x01, 0x20, - 0x20, 0x70, 0x09, 0xe0, 0x00, 0x20, 0x00, 0xf0, - 0xf9, 0xfa, 0xff, 0xf7, 0x45, 0xff, 0x03, 0xe0, - 0x05, 0x21, 0x0b, 0x20, 0xe8, 0xf7, 0x46, 0xff, - 0x68, 0x69, 0x61, 0x68, 0xe7, 0xf7, 0xdd, 0xff, - 0x3c, 0x00, 0x20, 0x84, 0x01, 0x00, 0xb0, 0xbd, - 0x00, 0x00, 0x7c, 0xd9, 0x01, 0x00, 0x20, 0xf7, - 0x01, 0x00, 0xf7, 0xb5, 0x04, 0x1c, 0x17, 0x1c, - 0xff, 0xf7, 0x21, 0xfe, 0x20, 0x0a, 0xff, 0xf7, - 0x18, 0xff, 0x20, 0x06, 0x00, 0x0e, 0xff, 0xf7, - 0x62, 0xfe, 0xff, 0xf7, 0x18, 0xfe, 0xa1, 0x20, - 0xff, 0xf7, 0x5d, 0xfe, 0x00, 0x25, 0x16, 0xe0, - 0x00, 0x20, 0x00, 0x24, 0x40, 0x06, 0x06, 0x0e, - 0xff, 0xf7, 0x3c, 0x00, 0x5c, 0x84, 0x01, 0x00, - 0xd1, 0xfd, 0x00, 0x06, 0x00, 0x0e, 0x30, 0x43, - 0x01, 0x34, 0x08, 0x2c, 0xf5, 0xdb, 0x29, 0x1c, - 0x01, 0x9a, 0x01, 0x35, 0xbd, 0x42, 0x50, 0x54, - 0x01, 0xda, 0x00, 0x20, 0x00, 0xe0, 0x01, 0x20, - 0xff, 0xf7, 0xd4, 0xfd, 0xbd, 0x42, 0xe6, 0xdb, - 0xff, 0xf7, 0x1e, 0xfe, 0xfe, 0xbd, 0x00, 0x00, - 0x80, 0xb5, 0xff, 0xf7, 0x19, 0xfe, 0x09, 0x21, - 0x89, 0x03, 0x00, 0x22, 0x3c, 0x00, 0x98, 0x84, - 0x01, 0x00, 0x02, 0x20, 0xf0, 0xf7, 0xe9, 0xf9, - 0x80, 0xbd, 0x09, 0x21, 0x89, 0x03, 0x80, 0xb5, - 0x00, 0x22, 0x02, 0x20, 0xf0, 0xf7, 0xc9, 0xf9, - 0x01, 0x21, 0x09, 0x48, 0x89, 0x03, 0x81, 0x61, - 0x42, 0x68, 0x0a, 0x43, 0x42, 0x60, 0x82, 0x68, - 0x11, 0x43, 0x81, 0x60, 0x01, 0x21, 0x49, 0x04, - 0x81, 0x61, 0x82, 0x68, 0x8a, 0x43, 0x82, 0x60, - 0x42, 0x68, 0x11, 0x43, 0x41, 0x60, 0x3c, 0x00, - 0xd4, 0x84, 0x01, 0x00, 0x80, 0xbd, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0xf0, 0xb5, 0x04, 0x1c, - 0xc0, 0x68, 0x7b, 0x4e, 0x05, 0x68, 0x30, 0x78, - 0x85, 0xb0, 0x01, 0x28, 0x01, 0xd0, 0x02, 0x28, - 0x72, 0xd1, 0x00, 0x21, 0x20, 0x69, 0xf2, 0xf7, - 0x41, 0xf9, 0x76, 0x49, 0xf2, 0xf7, 0x24, 0xfc, - 0x00, 0x28, 0x69, 0xd0, 0x20, 0x1c, 0x20, 0x30, - 0x41, 0x7a, 0x08, 0x29, 0x02, 0xd1, 0x72, 0x4a, - 0x3c, 0x00, 0x10, 0x85, 0x01, 0x00, 0x00, 0x21, - 0x51, 0x61, 0x00, 0x7a, 0x22, 0x6a, 0x18, 0x21, - 0xf2, 0xf7, 0xc9, 0xfb, 0xe1, 0x6a, 0x37, 0x1c, - 0x40, 0x18, 0x6c, 0x49, 0x02, 0x90, 0x30, 0x78, - 0x0e, 0x1c, 0xff, 0x36, 0x0a, 0x1d, 0x01, 0x36, - 0x01, 0x28, 0x04, 0x92, 0x07, 0xd0, 0x65, 0x4a, - 0x02, 0x99, 0x1c, 0x32, 0x28, 0x1c, 0xed, 0xf7, - 0xe2, 0xfb, 0x00, 0x28, 0x6b, 0xd0, 0x32, 0x21, - 0x20, 0x69, 0x3c, 0x00, 0x4c, 0x85, 0x01, 0x00, - 0xf2, 0xf7, 0x16, 0xf9, 0x01, 0x90, 0x20, 0x69, - 0x01, 0x21, 0xf2, 0xf7, 0x11, 0xf9, 0x01, 0x1c, - 0x5e, 0x48, 0x01, 0x23, 0x01, 0x9a, 0xed, 0xf7, - 0x07, 0xfc, 0x00, 0x28, 0x04, 0xd1, 0x5b, 0x48, - 0xed, 0xf7, 0x92, 0xfa, 0x00, 0x21, 0xb9, 0x60, - 0x56, 0x48, 0x1c, 0x30, 0x81, 0x68, 0xea, 0xf7, - 0x19, 0xfc, 0x20, 0x1c, 0x14, 0x30, 0x03, 0x90, - 0x04, 0x99, 0xf2, 0xf7, 0x3c, 0x00, 0x88, 0x85, - 0x01, 0x00, 0xd5, 0xfb, 0x00, 0x28, 0x05, 0xd1, - 0x00, 0x22, 0xba, 0x60, 0x04, 0x98, 0x03, 0x99, - 0xf2, 0xf7, 0x6b, 0xfb, 0x4f, 0x49, 0x28, 0x89, - 0x09, 0x88, 0x88, 0x42, 0x03, 0xd0, 0x00, 0x22, - 0x4c, 0x49, 0xba, 0x60, 0x08, 0x80, 0x03, 0x21, - 0x20, 0x69, 0xf2, 0xf7, 0xe4, 0xf8, 0x00, 0x28, - 0x10, 0xd0, 0x46, 0x49, 0x82, 0x78, 0x20, 0x31, - 0x0b, 0x79, 0x94, 0x46, 0x9a, 0x42, 0x3c, 0x00, - 0xc4, 0x85, 0x01, 0x00, 0x09, 0xd0, 0x00, 0x22, - 0xba, 0x60, 0x62, 0x46, 0x0a, 0x71, 0x80, 0x78, - 0x01, 0x21, 0xf3, 0xf7, 0x05, 0xf9, 0x00, 0xe0, - 0x77, 0xe0, 0x06, 0x21, 0x20, 0x69, 0xf2, 0xf7, - 0xcd, 0xf8, 0x00, 0x28, 0x08, 0xd0, 0x81, 0x78, - 0x3a, 0x48, 0x40, 0x30, 0x82, 0x88, 0x91, 0x42, - 0x02, 0xd0, 0x00, 0x22, 0xba, 0x60, 0x81, 0x80, - 0x2a, 0x21, 0x20, 0x69, 0xf2, 0xf7, 0xbe, 0xf8, - 0x3c, 0x00, 0x00, 0x86, 0x01, 0x00, 0x00, 0x28, - 0x0d, 0xd0, 0x80, 0x78, 0xf1, 0x69, 0x33, 0x4a, - 0x81, 0x42, 0x08, 0xd0, 0x00, 0x21, 0xb9, 0x60, - 0xf0, 0x61, 0x10, 0x1c, 0xed, 0xf7, 0x09, 0xfb, - 0x2f, 0x48, 0xed, 0xf7, 0xfa, 0xfa, 0x38, 0x78, - 0x3b, 0x1c, 0x01, 0x28, 0x17, 0xd1, 0x02, 0x20, - 0x18, 0x70, 0x2a, 0x4f, 0x01, 0x23, 0x3b, 0x61, - 0x27, 0x4b, 0x03, 0xcd, 0x1c, 0x33, 0x08, 0x3d, - 0x02, 0x9a, 0x3c, 0x00, 0x3c, 0x86, 0x01, 0x00, - 0xed, 0xf7, 0xb0, 0xfa, 0x38, 0x1c, 0xed, 0xf7, - 0xd7, 0xf8, 0x32, 0x68, 0x00, 0x2a, 0x03, 0xd0, - 0x00, 0x21, 0x01, 0x20, 0xe7, 0xf7, 0xc4, 0xfe, - 0x00, 0xf0, 0xf4, 0xf9, 0x20, 0x1c, 0xf9, 0xf7, - 0xd5, 0xfb, 0x07, 0x1c, 0x11, 0xd1, 0x20, 0x1c, - 0xf9, 0xf7, 0x88, 0xfb, 0x07, 0x1c, 0x2e, 0xd0, - 0x01, 0x23, 0x3b, 0x61, 0x68, 0x89, 0x40, 0x21, - 0xc8, 0x53, 0x73, 0x68, 0x3c, 0x00, 0x78, 0x86, - 0x01, 0x00, 0x00, 0x2b, 0x04, 0xd0, 0x21, 0x1c, - 0x00, 0x20, 0x04, 0x9a, 0xe7, 0xf7, 0xac, 0xfe, - 0x01, 0x23, 0xfb, 0x62, 0x20, 0x69, 0x32, 0x21, - 0xf2, 0xf7, 0x75, 0xf8, 0x05, 0x1c, 0x20, 0x69, - 0x01, 0x21, 0xf2, 0xf7, 0x70, 0xf8, 0x0e, 0x4e, - 0x01, 0x1c, 0x2a, 0x1c, 0x30, 0x1c, 0xed, 0xf7, - 0xc0, 0xfb, 0x00, 0x28, 0x0e, 0xd1, 0x32, 0x21, - 0x20, 0x69, 0xf2, 0xf7, 0x64, 0xf8, 0x3c, 0x00, - 0xb4, 0x86, 0x01, 0x00, 0x05, 0x1c, 0x20, 0x69, - 0x01, 0x21, 0xf2, 0xf7, 0x5f, 0xf8, 0x01, 0x1c, - 0x3b, 0x1c, 0x2a, 0x1c, 0x30, 0x1c, 0xed, 0xf7, - 0xd7, 0xfa, 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, - 0x7c, 0xd9, 0x01, 0x00, 0x40, 0xf8, 0x01, 0x00, - 0x20, 0xf7, 0x01, 0x00, 0x02, 0x1c, 0x08, 0x1c, - 0x80, 0x2a, 0x80, 0xb5, 0x06, 0xd0, 0x81, 0x2a, - 0x03, 0xd0, 0x04, 0x21, 0x0b, 0x20, 0xe8, 0xf7, - 0x3c, 0x00, 0xf0, 0x86, 0x01, 0x00, 0xd9, 0xfd, - 0x80, 0xbd, 0xff, 0xf7, 0x5c, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x03, 0x48, 0x81, 0x78, 0xff, 0x29, - 0x01, 0xd0, 0x00, 0x79, 0x70, 0x47, 0x00, 0x20, - 0x70, 0x47, 0x80, 0xf8, 0x01, 0x00, 0x30, 0xb5, - 0x89, 0xb0, 0x00, 0x93, 0x0e, 0x4d, 0x13, 0x1c, - 0x04, 0x1c, 0x2a, 0x1c, 0xec, 0xf7, 0x25, 0xfd, - 0x01, 0xa9, 0x06, 0xa8, 0xa2, 0x68, 0xec, 0xf7, - 0xce, 0xfe, 0x3c, 0x00, 0x2c, 0x87, 0x01, 0x00, - 0x01, 0xaa, 0x06, 0xa9, 0x28, 0x1c, 0x63, 0x6a, - 0xed, 0xf7, 0x44, 0xfa, 0x04, 0x1c, 0x01, 0x28, - 0x04, 0xd1, 0x28, 0x1c, 0xed, 0xf7, 0x2c, 0xf8, - 0x00, 0xf0, 0x4a, 0xf8, 0x20, 0x1c, 0x09, 0xb0, - 0x30, 0xbd, 0x00, 0x00, 0x20, 0xf7, 0x01, 0x00, - 0x80, 0xb5, 0xed, 0xf7, 0x2b, 0xf8, 0x00, 0xf0, - 0x7d, 0xf8, 0x02, 0x48, 0xed, 0xf7, 0x02, 0xfa, - 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x87, - 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0x28, 0x0b, 0xd1, 0x06, 0x48, 0xed, 0xf7, - 0xf8, 0xf9, 0x00, 0xf0, 0x6e, 0xf8, 0x01, 0x20, - 0xed, 0xf7, 0xeb, 0xfa, 0x03, 0x49, 0x03, 0x20, - 0xf9, 0xf7, 0x35, 0xfe, 0x80, 0xbd, 0x20, 0xf7, - 0x01, 0x00, 0x6d, 0x87, 0x01, 0x00, 0xb0, 0xb5, - 0x10, 0x4d, 0x04, 0x1c, 0x13, 0x1c, 0x2a, 0x1c, - 0x88, 0xb0, 0xec, 0xf7, 0x02, 0xfd, 0x3c, 0x00, - 0xa4, 0x87, 0x01, 0x00, 0x21, 0x1c, 0x0a, 0x31, - 0x06, 0x22, 0x28, 0x1d, 0xe7, 0xf7, 0xa4, 0xfe, - 0x69, 0x46, 0x05, 0xa8, 0x62, 0x69, 0xec, 0xf7, - 0x87, 0xfe, 0x28, 0x1c, 0xec, 0xf7, 0xee, 0xff, - 0x7f, 0x23, 0xdb, 0x43, 0x28, 0x1c, 0x6a, 0x46, - 0x05, 0xa9, 0xed, 0xf7, 0xf9, 0xf9, 0x00, 0xf0, - 0x1d, 0xf8, 0x08, 0xb0, 0xb0, 0xbd, 0x00, 0x00, - 0x20, 0xf7, 0x01, 0x00, 0x0a, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0xe0, 0x87, 0x01, 0x00, 0x01, 0x78, - 0x00, 0x29, 0x06, 0xd0, 0x02, 0x29, 0x01, 0xd0, - 0x05, 0x29, 0x07, 0xd1, 0x03, 0x21, 0x01, 0x70, - 0x80, 0xbd, 0x01, 0x21, 0x01, 0x70, 0x00, 0xf0, - 0x2e, 0xfa, 0x80, 0xbd, 0x03, 0x21, 0x0b, 0x20, - 0xe8, 0xf7, 0x4f, 0xfd, 0x80, 0xbd, 0x7c, 0xd9, - 0x01, 0x00, 0x09, 0x49, 0x80, 0xb5, 0x08, 0x78, - 0x00, 0x28, 0x06, 0xd0, 0x02, 0x28, 0x01, 0xd0, - 0x05, 0x28, 0x3c, 0x00, 0x1c, 0x88, 0x01, 0x00, - 0x05, 0xd1, 0x04, 0x20, 0x08, 0x70, 0x80, 0xbd, - 0xff, 0xf7, 0x38, 0xfd, 0x80, 0xbd, 0x02, 0x21, - 0x0b, 0x20, 0xe8, 0xf7, 0x39, 0xfd, 0x80, 0xbd, - 0x7c, 0xd9, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x0b, 0x20, 0x04, 0x4a, 0xfa, 0xf7, 0x82, 0xff, - 0xf6, 0xf7, 0x86, 0xfd, 0x02, 0x49, 0x08, 0x61, - 0x80, 0xbd, 0x00, 0x00, 0xdd, 0x86, 0x01, 0x00, - 0x7c, 0xd9, 0x01, 0x00, 0x3c, 0x00, 0x58, 0x88, - 0x01, 0x00, 0x0c, 0x48, 0x80, 0xb5, 0x01, 0x78, - 0x06, 0x29, 0x0e, 0xd2, 0x02, 0xa3, 0x5b, 0x5c, - 0x5b, 0x00, 0x9f, 0x44, 0x00, 0x00, 0x06, 0x03, - 0x07, 0x07, 0x07, 0x06, 0x00, 0x20, 0x00, 0xf0, - 0xc2, 0xf8, 0x80, 0xbd, 0x05, 0x21, 0x01, 0x70, - 0x80, 0xbd, 0x04, 0x21, 0x0b, 0x20, 0xe8, 0xf7, - 0x0e, 0xfd, 0x80, 0xbd, 0x00, 0x00, 0x7c, 0xd9, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x88, 0x01, 0x00, 0x10, 0xb5, 0x0d, 0x4b, - 0x04, 0x1c, 0x18, 0x1c, 0x10, 0x30, 0x00, 0x2c, - 0x08, 0xd0, 0xdb, 0x88, 0x5b, 0x04, 0x5b, 0x0c, - 0x0b, 0x80, 0x80, 0x7b, 0x48, 0x80, 0x04, 0x20, - 0x10, 0x80, 0x08, 0xe0, 0xda, 0x88, 0x01, 0x24, - 0xe4, 0x03, 0x22, 0x40, 0x0c, 0x88, 0x22, 0x43, - 0xda, 0x80, 0x49, 0x88, 0x81, 0x73, 0x01, 0x20, - 0x10, 0xbd, 0x00, 0x00, 0x30, 0x00, 0x07, 0x00, - 0x3c, 0x00, 0xd0, 0x88, 0x01, 0x00, 0x70, 0xb5, - 0x10, 0x4e, 0x02, 0x1c, 0x00, 0x23, 0xf0, 0x56, - 0x00, 0x2a, 0x02, 0xd0, 0x08, 0x70, 0x01, 0x24, - 0x15, 0xe0, 0x00, 0x23, 0xcd, 0x56, 0x85, 0x42, - 0x01, 0xd1, 0x01, 0x20, 0x70, 0xbd, 0x28, 0x1c, - 0x00, 0xf0, 0x5f, 0xf9, 0x04, 0x1c, 0x0a, 0xd0, - 0x07, 0x48, 0x35, 0x70, 0x00, 0x68, 0x00, 0x28, - 0x03, 0xd0, 0x00, 0x21, 0x0a, 0x20, 0xf9, 0xf7, - 0x28, 0xfd, 0x3c, 0x00, 0x0c, 0x89, 0x01, 0x00, - 0x00, 0xf0, 0x16, 0xfa, 0x20, 0x1c, 0x70, 0xbd, - 0xf4, 0x6b, 0x01, 0x00, 0x3c, 0xd9, 0x01, 0x00, - 0x03, 0x1c, 0x08, 0x1c, 0x00, 0x2b, 0x80, 0xb5, - 0x06, 0xd0, 0x04, 0x21, 0x11, 0x80, 0x04, 0x22, - 0x04, 0x49, 0xe7, 0xf7, 0xe3, 0xfd, 0x02, 0xe0, - 0x00, 0x68, 0x00, 0xf0, 0xcf, 0xf9, 0x01, 0x20, - 0x80, 0xbd, 0x00, 0x00, 0xf4, 0x74, 0x01, 0x00, - 0x10, 0xb5, 0xff, 0xf7, 0x3c, 0x00, 0x48, 0x89, - 0x01, 0x00, 0x97, 0xfb, 0xff, 0xf7, 0x89, 0xfc, - 0x04, 0x1c, 0xff, 0xf7, 0xb8, 0xfb, 0xff, 0xf7, - 0x84, 0xfc, 0x00, 0x2c, 0x02, 0xd1, 0x01, 0x28, - 0x00, 0xd1, 0x10, 0xbd, 0x00, 0x20, 0x10, 0xbd, - 0x00, 0x00, 0xf8, 0xb5, 0x20, 0x4f, 0x04, 0x1c, - 0x78, 0x78, 0x0e, 0x1c, 0x02, 0x28, 0x2e, 0xd0, - 0x1e, 0x4a, 0xf9, 0x68, 0x91, 0x61, 0x14, 0x23, - 0x1d, 0x49, 0x58, 0x43, 0x40, 0x18, 0x3c, 0x00, - 0x84, 0x89, 0x01, 0x00, 0x41, 0x7b, 0xb8, 0x78, - 0xf8, 0xf7, 0x14, 0xfe, 0x00, 0xf0, 0x8a, 0xf9, - 0x00, 0x25, 0x04, 0xe0, 0x00, 0x21, 0xb8, 0x78, - 0xf8, 0xf7, 0x0c, 0xfe, 0x01, 0x35, 0x78, 0x78, - 0x14, 0x23, 0x14, 0x49, 0x58, 0x43, 0x40, 0x18, - 0x80, 0x7a, 0xa8, 0x42, 0xf2, 0xdc, 0x00, 0x25, - 0x08, 0xe0, 0x00, 0x21, 0xb8, 0x78, 0xf8, 0xf7, - 0xfd, 0xfd, 0x0f, 0x48, 0x00, 0x68, 0x20, 0x70, - 0x3c, 0x00, 0xc0, 0x89, 0x01, 0x00, 0x01, 0x34, - 0x01, 0x35, 0xb5, 0x42, 0xf4, 0xdb, 0x09, 0x4a, - 0xf8, 0x68, 0x50, 0x61, 0x78, 0x78, 0x02, 0x28, - 0x06, 0xd1, 0xb8, 0x68, 0x32, 0x1c, 0x21, 0x1c, - 0x00, 0x04, 0x00, 0x0c, 0xff, 0xf7, 0x25, 0xfd, - 0xb8, 0x68, 0x80, 0x19, 0xb8, 0x60, 0xf8, 0xbd, - 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, 0x10, 0x00, - 0x07, 0x00, 0x64, 0x8d, 0x01, 0x00, 0x30, 0x20, - 0x07, 0x00, 0x3c, 0x00, 0xfc, 0x89, 0x01, 0x00, - 0x70, 0xb5, 0x06, 0x1c, 0x0c, 0x4d, 0x00, 0x24, - 0x2c, 0x70, 0xff, 0xf7, 0x39, 0xfc, 0x0a, 0x48, - 0x18, 0x21, 0x1c, 0x30, 0xac, 0x60, 0xe7, 0xf7, - 0x43, 0xfd, 0x08, 0x48, 0x44, 0x61, 0xf9, 0xf7, - 0x63, 0xf9, 0x00, 0x2e, 0x06, 0xd1, 0x06, 0x48, - 0x29, 0x69, 0xf6, 0xf7, 0xa7, 0xfc, 0x00, 0x20, - 0xec, 0xf7, 0xb0, 0xfe, 0x70, 0xbd, 0x00, 0x00, - 0x7c, 0xd9, 0x01, 0x00, 0x3c, 0x00, 0x38, 0x8a, - 0x01, 0x00, 0x20, 0xf7, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0x30, 0xb5, 0x12, 0x4c, 0x85, 0xb0, - 0x20, 0x68, 0x00, 0x28, 0x1c, 0xd0, 0x0f, 0x48, - 0x14, 0x38, 0x80, 0x68, 0x00, 0x28, 0x01, 0xd1, - 0xff, 0xf7, 0xc1, 0xfb, 0x20, 0x68, 0x00, 0x23, - 0x00, 0x68, 0x01, 0xaa, 0x04, 0x30, 0x01, 0x21, - 0xec, 0xf7, 0xd1, 0xfd, 0x08, 0x49, 0x08, 0x4a, - 0x08, 0x31, 0x0c, 0x31, 0x00, 0x92, 0x3c, 0x00, - 0x74, 0x8a, 0x01, 0x00, 0x03, 0xc9, 0x00, 0xab, - 0x45, 0x18, 0x99, 0x7b, 0x01, 0x9a, 0x20, 0x68, - 0x2b, 0x1c, 0xf2, 0xf7, 0x2b, 0xfe, 0x05, 0xb0, - 0x30, 0xbd, 0x00, 0x00, 0x90, 0xd9, 0x01, 0x00, - 0x29, 0x81, 0x01, 0x00, 0x10, 0xb5, 0x13, 0x4c, - 0x14, 0x23, 0x60, 0x70, 0x58, 0x43, 0x12, 0x4b, - 0xc1, 0x18, 0x8a, 0x88, 0xe2, 0x80, 0x18, 0x58, - 0xe0, 0x60, 0x08, 0x7a, 0xa0, 0x70, 0xff, 0x28, - 0x3c, 0x00, 0xb0, 0x8a, 0x01, 0x00, 0x12, 0xd0, - 0x00, 0x22, 0x08, 0x21, 0x0d, 0x4b, 0xf8, 0xf7, - 0x22, 0xfd, 0x00, 0x22, 0x02, 0x20, 0xe1, 0x68, - 0xef, 0xf7, 0xbd, 0xfe, 0x0a, 0x49, 0xe0, 0x68, - 0x48, 0x61, 0x4a, 0x68, 0x02, 0x43, 0x4a, 0x60, - 0x8a, 0x68, 0x10, 0x43, 0x88, 0x60, 0x60, 0x78, - 0x02, 0x28, 0x01, 0xd1, 0xff, 0xf7, 0xdf, 0xfc, - 0x10, 0xbd, 0x40, 0xd9, 0x01, 0x00, 0x64, 0x8d, - 0x01, 0x00, 0x3c, 0x00, 0xec, 0x8a, 0x01, 0x00, - 0xb8, 0x0b, 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, - 0xfe, 0x30, 0x00, 0x06, 0x00, 0x0e, 0x06, 0x21, - 0x15, 0x4b, 0x41, 0x43, 0x58, 0x5c, 0x82, 0x06, - 0x14, 0x48, 0x92, 0x0e, 0x42, 0x71, 0xc9, 0x18, - 0x4a, 0x78, 0xd2, 0x06, 0xd2, 0x0e, 0x02, 0x71, - 0x42, 0x78, 0x0c, 0x23, 0x1a, 0x43, 0x42, 0x70, - 0x42, 0x78, 0x8b, 0x78, 0x92, 0x08, 0x92, 0x00, - 0x9b, 0x07, 0x9b, 0x0f, 0x3c, 0x00, 0x28, 0x8b, - 0x01, 0x00, 0x1a, 0x43, 0x42, 0x70, 0x02, 0x78, - 0xc0, 0x23, 0x9a, 0x43, 0x40, 0x32, 0x02, 0x70, - 0x02, 0x78, 0x38, 0x23, 0x1a, 0x43, 0x02, 0x70, - 0x02, 0x78, 0xc9, 0x78, 0x04, 0x23, 0x9a, 0x43, - 0x89, 0x00, 0x19, 0x40, 0x11, 0x43, 0x01, 0x70, - 0x01, 0x20, 0x70, 0x47, 0x00, 0x00, 0xd8, 0x8d, - 0x01, 0x00, 0x88, 0x00, 0x07, 0x00, 0x8f, 0xb5, - 0x00, 0x20, 0x02, 0x90, 0x03, 0x90, 0x3c, 0x00, - 0x64, 0x8b, 0x01, 0x00, 0x07, 0x48, 0x02, 0xaa, - 0x03, 0xa9, 0x00, 0x91, 0x01, 0x92, 0x43, 0x89, - 0x02, 0x89, 0x03, 0xc8, 0xff, 0xf7, 0xd4, 0xfb, - 0x03, 0x98, 0x02, 0x99, 0xff, 0xf7, 0x04, 0xfc, - 0x8f, 0xbd, 0x00, 0x00, 0x04, 0x8e, 0x01, 0x00, - 0x08, 0x49, 0x4a, 0x78, 0x00, 0x2a, 0x03, 0xd1, - 0x88, 0x80, 0x00, 0x20, 0x88, 0x60, 0x70, 0x47, - 0x14, 0x23, 0x5a, 0x43, 0x04, 0x4b, 0xd2, 0x18, - 0x3c, 0x00, 0xa0, 0x8b, 0x01, 0x00, 0xd2, 0x88, - 0x42, 0x43, 0xc8, 0x88, 0x42, 0x43, 0x8a, 0x60, - 0x70, 0x47, 0x40, 0xd9, 0x01, 0x00, 0x64, 0x8d, - 0x01, 0x00, 0xf8, 0xb5, 0x25, 0x4e, 0x04, 0x1c, - 0x30, 0x7a, 0x40, 0x08, 0x40, 0x00, 0x30, 0x72, - 0xb0, 0x7a, 0x00, 0x20, 0xb0, 0x72, 0x01, 0x27, - 0x01, 0x2c, 0x20, 0x4d, 0x01, 0xd0, 0xfc, 0x42, - 0x13, 0xd1, 0x30, 0x7b, 0x38, 0x43, 0x30, 0x73, - 0x00, 0x22, 0x3c, 0x00, 0xdc, 0x8b, 0x01, 0x00, - 0x21, 0x1c, 0x00, 0x20, 0xff, 0xf7, 0x6e, 0xfb, - 0x63, 0x1c, 0x01, 0xd1, 0x3f, 0x21, 0xe9, 0x73, - 0xb1, 0x7a, 0xa0, 0x22, 0x11, 0x43, 0xb1, 0x72, - 0x31, 0x7a, 0x39, 0x43, 0x31, 0x72, 0xf8, 0xbd, - 0x30, 0x7b, 0x40, 0x08, 0x40, 0x00, 0x30, 0x73, - 0x01, 0x22, 0x21, 0x1c, 0x01, 0x20, 0xff, 0xf7, - 0x59, 0xfb, 0x01, 0x20, 0x00, 0x21, 0xe9, 0x73, - 0xb1, 0x7a, 0x02, 0x22, 0x3c, 0x00, 0x18, 0x8c, - 0x01, 0x00, 0x11, 0x43, 0xb1, 0x72, 0xb1, 0x7a, - 0x04, 0x22, 0x11, 0x43, 0xb1, 0x72, 0xb1, 0x7a, - 0x30, 0x22, 0x11, 0x43, 0xb1, 0x72, 0x31, 0x7a, - 0x39, 0x43, 0x31, 0x72, 0x08, 0x49, 0x4a, 0x68, - 0x80, 0x23, 0x9a, 0x43, 0x4a, 0x60, 0x0a, 0x68, - 0x1a, 0x43, 0x0a, 0x60, 0x31, 0x7b, 0x39, 0x43, - 0x31, 0x73, 0xd7, 0xe7, 0x00, 0x00, 0x88, 0x00, - 0x07, 0x00, 0x40, 0x00, 0x07, 0x00, 0x3c, 0x00, - 0x54, 0x8c, 0x01, 0x00, 0x6c, 0x00, 0x07, 0x00, - 0xb0, 0xb5, 0x0e, 0x4d, 0x0e, 0x48, 0x29, 0x69, - 0xf6, 0xf7, 0x9e, 0xfb, 0x0d, 0x48, 0xec, 0xf7, - 0x93, 0xfd, 0x0d, 0x48, 0x09, 0x4c, 0x00, 0x88, - 0x1c, 0x34, 0xa0, 0x82, 0xf1, 0xf7, 0x5a, 0xff, - 0x20, 0x61, 0xfa, 0xf7, 0x97, 0xf8, 0x02, 0x1c, - 0x23, 0x1c, 0x00, 0x21, 0x00, 0x20, 0xec, 0xf7, - 0x8b, 0xff, 0x32, 0x20, 0xe8, 0x60, 0xff, 0xf7, - 0x3c, 0x00, 0x90, 0x8c, 0x01, 0x00, 0xa5, 0xfa, - 0xb0, 0xbd, 0x7c, 0xd9, 0x01, 0x00, 0x34, 0x63, - 0x01, 0x00, 0xdd, 0x84, 0x01, 0x00, 0x20, 0xf7, - 0x01, 0x00, 0xb0, 0xb5, 0x0a, 0x4d, 0x68, 0x78, - 0x00, 0x28, 0x0e, 0xd0, 0x14, 0x23, 0x08, 0x49, - 0x58, 0x43, 0x40, 0x18, 0x44, 0x7a, 0x06, 0xe0, - 0xa8, 0x68, 0xe0, 0x40, 0x01, 0x06, 0x09, 0x0e, - 0xa8, 0x78, 0xf8, 0xf7, 0x76, 0xfc, 0x08, 0x3c, - 0xf6, 0xd5, 0x3c, 0x00, 0xcc, 0x8c, 0x01, 0x00, - 0xb0, 0xbd, 0x00, 0x00, 0x40, 0xd9, 0x01, 0x00, - 0x64, 0x8d, 0x01, 0x00, 0x01, 0x1c, 0x14, 0x48, - 0xb0, 0xb5, 0x01, 0x60, 0x13, 0x48, 0x02, 0x7f, - 0x02, 0x23, 0x9a, 0x43, 0x02, 0x77, 0x02, 0x7f, - 0x01, 0x24, 0x22, 0x43, 0x02, 0x77, 0x10, 0x4d, - 0x00, 0x29, 0x0c, 0xd0, 0x01, 0x22, 0x00, 0x21, - 0x03, 0x20, 0xef, 0xf7, 0x9f, 0xfd, 0x0d, 0x49, - 0x48, 0x7c, 0xa0, 0x43, 0x3c, 0x00, 0x08, 0x8d, - 0x01, 0x00, 0x48, 0x74, 0x68, 0x7a, 0x20, 0x43, - 0x68, 0x72, 0xb0, 0xbd, 0x01, 0x7f, 0x21, 0x43, - 0x01, 0x77, 0x68, 0x7a, 0x40, 0x08, 0x40, 0x00, - 0x68, 0x72, 0x01, 0x22, 0x00, 0x21, 0x03, 0x20, - 0xef, 0xf7, 0xb1, 0xfd, 0xb0, 0xbd, 0xf4, 0x74, - 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0x88, 0x00, - 0x07, 0x00, 0x10, 0x00, 0x07, 0x00, 0x10, 0xb5, - 0x07, 0x4c, 0x21, 0x1c, 0x00, 0x20, 0x3c, 0x00, - 0x44, 0x8d, 0x01, 0x00, 0xf9, 0xf7, 0x56, 0xfb, - 0x05, 0x48, 0x00, 0x23, 0xc0, 0x56, 0x01, 0x28, - 0x03, 0xdd, 0x21, 0x1c, 0x00, 0x20, 0xf9, 0xf7, - 0x19, 0xfb, 0x10, 0xbd, 0x65, 0x1a, 0x00, 0x00, - 0xf4, 0x6b, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x08, 0x01, 0x01, 0x00, 0x02, 0x18, 0x04, 0xff, - 0x82, 0xe8, 0xd7, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, - 0x3c, 0x00, 0x80, 0x8d, 0x01, 0x00, 0x00, 0x18, - 0x00, 0x06, 0x02, 0x03, 0x05, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, - 0x01, 0x00, 0xff, 0x10, 0x00, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x20, 0x00, 0x01, 0x00, 0x02, 0x10, - 0x00, 0x06, 0x02, 0x03, 0x05, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x04, 0x05, 0x06, 0x07, 0x08, 0x0c, - 0x0d, 0x0e, 0x3c, 0x00, 0xbc, 0x8d, 0x01, 0x00, - 0xff, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1b, - 0x1c, 0x1d, 0xff, 0x1a, 0x11, 0x13, 0x12, 0x0f, - 0x10, 0xff, 0x02, 0x00, 0xff, 0x01, 0x03, 0x09, - 0x0a, 0x0b, 0x00, 0x00, 0x30, 0x0d, 0x02, 0x00, - 0x00, 0x00, 0x28, 0x0e, 0x03, 0x00, 0x00, 0x00, - 0x1e, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0d, - 0x02, 0x01, 0x00, 0x00, 0x1e, 0x0c, 0x00, 0x01, - 0x00, 0x00, 0x23, 0x0d, 0x3c, 0x00, 0xf8, 0x8d, - 0x01, 0x00, 0x02, 0x01, 0x00, 0x00, 0x1d, 0x0d, - 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, - 0xfb, 0x6d, 0x00, 0x00, 0x80, 0x00, 0x02, 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, 0x3c, 0x00, - 0x34, 0x8e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x8e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x8e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x8e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x8f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x8f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x8f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x8f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x90, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x90, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x90, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x90, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0x91, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0x91, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0x91, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0x91, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0x92, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0x92, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0x92, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0x92, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0x93, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0x93, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0x93, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0x93, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0x94, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0x94, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0x94, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0x94, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0x95, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0x95, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0x95, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0x95, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0x95, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0x96, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0x96, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0x96, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0x96, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0x97, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0x97, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0x97, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0x97, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0x98, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0x98, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0x98, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0x98, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0x98, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0x99, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0x99, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0x99, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0x99, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0x9a, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0x9a, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0x9a, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0x9a, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0x9b, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0x9b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0x9b, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0x9b, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0x9c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0x9c, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0x9c, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0x9c, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x9c, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0x9d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0x9d, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0x9d, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0x9d, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0x9e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0x9e, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0x9e, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0x9e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0x9f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0x9f, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0x9f, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0x9f, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xa0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xa0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xa0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xa0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xa1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xa1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xa1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xa1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xa2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xa2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xa2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xa2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xa3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xa3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xa3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xa3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xa4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xa4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xa4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xa4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xa4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xa5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xa5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xa5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xa5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xa6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xa6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xa6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xa6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xa7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xa7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xa7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xa7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xa7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xa8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xa8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xa8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xa8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xa9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xa9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xa9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xa9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xaa, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xaa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xaa, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xaa, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xab, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xab, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xab, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xab, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xab, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xac, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xac, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xac, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xac, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xad, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xad, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xad, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xad, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xae, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xae, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xae, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xae, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xaf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xaf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xaf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xaf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xaf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xb0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xb0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xb0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xb0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xb1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xb1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xb1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xb1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xb2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xb2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xb2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xb2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xb3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xb3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xb3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xb3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xb4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xb4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xb4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xb4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xb5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xb5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xb5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xb5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xb6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xb6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xb6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xb6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xb6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xb7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xb7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xb7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xb7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xb8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xb8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xb8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xb8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xb9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xb9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xb9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xb9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xba, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xba, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xba, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xba, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xba, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xbb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xbb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xbb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xbb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xbc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xbc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xbc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xbc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xbd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xbd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xbd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xbd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xbe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xbe, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xbe, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xbe, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xbe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xbf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xbf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xbf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xbf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xc0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xc0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xc0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xc1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xc1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xc1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xc1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xc2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xc2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xc2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xc2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xc2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xc3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xc3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xc3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xc4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xc4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xc4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xc5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xc5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xc5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xc5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xc5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xc6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xc6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xc6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xc7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xc7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xc7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xc7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xc8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xc8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xc8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xc8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xc9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xc9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xc9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xc9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xca, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xca, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xca, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xca, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xcb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xcb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xcb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xcb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xcc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xcc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xcc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xcc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xcd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xcd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xcd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xcd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xce, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xce, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xce, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xce, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xcf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xcf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xcf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xcf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xd0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xd0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xd0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xd0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xd1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xd1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xd1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xd1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xd1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xd2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xd2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xd2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xd2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xd3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xd3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xd3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xd3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xd4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xd4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xd4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xd4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xd4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xd5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xd5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xd5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xd5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xd6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xd6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xd6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xd6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xd7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xd7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xd7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xd7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xd8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xd8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xd8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xd8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xd8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xd9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xd9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xd9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xd9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xda, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xda, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xda, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xda, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xdb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xdb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xdb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xdb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xdc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xdc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xdc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xdd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xdd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xdd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xdd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xde, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xde, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xde, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xde, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xdf, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xdf, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xdf, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xdf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xe0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xe0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xe0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xe1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xe1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xe1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xe1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xe2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xe2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xe2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xe2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xe3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xe3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xe3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xe3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xe4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xe4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xe4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xe4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xe5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xe5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xe5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xe5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xe6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xe6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xe6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xe6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xe7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xe7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xe7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xe7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xe7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xe8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xe8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xe8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xe9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xe9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xe9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xe9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xea, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xea, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xea, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xea, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xeb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xeb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xeb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xeb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xeb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xec, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xec, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xec, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xec, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xed, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xed, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xed, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xed, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xee, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xee, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xee, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xee, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xef, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xef, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xef, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xef, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xef, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xf0, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x68, 0xf0, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xa4, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xe0, 0xf0, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x1c, 0xf1, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x58, 0xf1, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x94, 0xf1, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xd0, 0xf1, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x0c, 0xf2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x48, 0xf2, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x84, 0xf2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xc0, 0xf2, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xfc, 0xf2, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x38, 0xf3, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x74, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xb0, 0xf3, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xec, 0xf3, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x28, 0xf4, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x64, 0xf4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xa0, 0xf4, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xdc, 0xf4, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x18, 0xf5, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x54, 0xf5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x90, 0xf5, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xcc, 0xf5, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x08, 0xf6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x44, 0xf6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x80, 0xf6, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xbc, 0xf6, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf8, 0xf6, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x34, 0xf7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x70, 0xf7, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0xac, 0xf7, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xe8, 0xf7, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x24, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x60, 0xf8, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x9c, 0xf8, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xd8, 0xf8, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x14, 0xf9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x50, 0xf9, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x8c, 0xf9, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xc8, 0xf9, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x04, 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x40, 0xfa, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x7c, 0xfa, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xb8, 0xfa, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xf4, 0xfa, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x30, 0xfb, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x6c, 0xfb, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xa8, 0xfb, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xe4, 0xfb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x20, 0xfc, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x5c, 0xfc, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x98, 0xfc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xd4, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x10, 0xfd, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x4c, 0xfd, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x88, 0xfd, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xc4, 0xfd, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x3c, 0xfe, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x78, 0xfe, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0xb4, 0xfe, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3c, 0x00, 0xf0, 0xfe, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x2c, 0xff, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x68, 0xff, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x10, 0x04, 0x00, 0x70, 0xb5, 0x2b, 0x48, - 0x06, 0x21, 0x81, 0x75, 0xc1, 0x75, 0x01, 0x7e, - 0x49, 0x08, 0x49, 0x00, 0x01, 0x76, 0x01, 0x7e, - 0x02, 0x22, 0x91, 0x43, 0x01, 0x76, 0x26, 0x49, - 0x0b, 0x78, 0x5b, 0x08, 0x5b, 0x00, 0x0b, 0x70, - 0x04, 0x23, 0x8b, 0x70, 0x0c, 0x23, 0x43, 0x76, - 0x20, 0x23, 0x03, 0x75, 0x1a, 0x24, 0x44, 0x75, - 0x24, 0x24, 0x84, 0x76, 0x10, 0x24, 0xc4, 0x76, - 0x3c, 0x00, 0x3c, 0x10, 0x04, 0x00, 0x2a, 0x25, - 0x4d, 0x70, 0x05, 0x7a, 0x30, 0x26, 0xb5, 0x43, - 0x20, 0x35, 0x05, 0x72, 0x85, 0x7a, 0x6d, 0x08, - 0x6d, 0x00, 0x85, 0x72, 0x85, 0x7a, 0x95, 0x43, - 0x85, 0x72, 0x85, 0x7a, 0x04, 0x26, 0x35, 0x43, - 0x85, 0x72, 0x85, 0x7a, 0x08, 0x26, 0x35, 0x43, - 0x85, 0x72, 0x85, 0x7a, 0xa5, 0x43, 0x85, 0x72, - 0x05, 0x7b, 0x2c, 0x43, 0x04, 0x73, 0x04, 0x7b, - 0x1c, 0x43, 0x3c, 0x00, 0x78, 0x10, 0x04, 0x00, - 0x04, 0x73, 0x04, 0x7b, 0x40, 0x25, 0x2c, 0x43, - 0x04, 0x73, 0x84, 0x7a, 0x23, 0x43, 0x83, 0x72, - 0x83, 0x7a, 0xab, 0x43, 0x83, 0x72, 0x03, 0x7b, - 0x80, 0x24, 0x23, 0x43, 0x03, 0x73, 0x08, 0x78, - 0x90, 0x43, 0x08, 0x70, 0x08, 0x78, 0x01, 0x22, - 0x10, 0x43, 0x08, 0x70, 0x08, 0x78, 0x04, 0x22, - 0x90, 0x43, 0x08, 0x70, 0x70, 0xbd, 0x00, 0x00, - 0x0c, 0x80, 0x07, 0x00, 0x3c, 0x00, 0xb4, 0x10, - 0x04, 0x00, 0x80, 0x80, 0x07, 0x00, 0x01, 0x49, - 0x04, 0x20, 0x48, 0x73, 0x70, 0x47, 0x40, 0x80, - 0x07, 0x00, 0x03, 0x49, 0x80, 0xb5, 0x00, 0x20, - 0x08, 0x80, 0x00, 0xf0, 0x0a, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xfc, 0x6b, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x67, 0xfb, - 0x80, 0xbd, 0x80, 0xb5, 0x0a, 0x49, 0x18, 0x20, - 0xc1, 0xf7, 0x3b, 0xfa, 0x09, 0x49, 0x3c, 0x00, - 0xf0, 0x10, 0x04, 0x00, 0x02, 0x20, 0xc1, 0xf7, - 0x37, 0xfa, 0x08, 0x49, 0x1f, 0x20, 0xc1, 0xf7, - 0x33, 0xfa, 0x07, 0x49, 0x1c, 0x20, 0xc1, 0xf7, - 0x2f, 0xfa, 0x06, 0x49, 0x03, 0x20, 0xc1, 0xf7, - 0x2b, 0xfa, 0x80, 0xbd, 0x99, 0x2a, 0x00, 0x00, - 0x41, 0x25, 0x00, 0x00, 0x55, 0x25, 0x00, 0x00, - 0x5d, 0x25, 0x00, 0x00, 0x39, 0x25, 0x00, 0x00, - 0x80, 0xb5, 0xbf, 0xf7, 0x91, 0xfd, 0x80, 0xbd, - 0x3c, 0x00, 0x2c, 0x11, 0x04, 0x00, 0x80, 0xb5, - 0x05, 0x4a, 0x05, 0x49, 0x0a, 0x20, 0xbf, 0xf7, - 0x4e, 0xff, 0x01, 0x20, 0x04, 0x49, 0x80, 0x02, - 0x08, 0x60, 0x48, 0x60, 0x80, 0xbd, 0xb4, 0x74, - 0x01, 0x00, 0xb1, 0x64, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x91, 0xfe, - 0x80, 0xbd, 0x80, 0xb5, 0x05, 0x4a, 0x05, 0x49, - 0x1b, 0x20, 0xbf, 0xf7, 0x38, 0xff, 0x01, 0x20, - 0x04, 0x49, 0x3c, 0x00, 0x68, 0x11, 0x04, 0x00, - 0xc0, 0x06, 0x08, 0x60, 0x48, 0x60, 0x80, 0xbd, - 0xb8, 0x74, 0x01, 0x00, 0x2d, 0x6e, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0x80, 0xb5, 0x04, 0x48, - 0x00, 0xf0, 0x80, 0xfe, 0x03, 0x49, 0x00, 0x20, - 0x48, 0x60, 0x88, 0x60, 0x80, 0xbd, 0x00, 0x00, - 0x41, 0x4b, 0x00, 0x00, 0xbc, 0x74, 0x01, 0x00, - 0x80, 0xb5, 0xc5, 0xf7, 0xd5, 0xfe, 0xce, 0xf7, - 0xd9, 0xf8, 0x03, 0x49, 0x3c, 0x00, 0xa4, 0x11, - 0x04, 0x00, 0x08, 0x60, 0x03, 0x49, 0x0a, 0x20, - 0xd1, 0xf7, 0xef, 0xf8, 0x80, 0xbd, 0xbc, 0x74, - 0x01, 0x00, 0x49, 0x6e, 0x00, 0x00, 0x80, 0xb5, - 0x01, 0x22, 0x20, 0x21, 0x06, 0x20, 0xc8, 0xf7, - 0x56, 0xfc, 0xbf, 0xf7, 0x70, 0xfe, 0x03, 0x49, - 0x00, 0x20, 0x08, 0x60, 0x20, 0x21, 0x02, 0x48, - 0xbf, 0xf7, 0x63, 0xf9, 0x80, 0xbd, 0xcc, 0x5c, - 0x01, 0x00, 0x64, 0x6d, 0x01, 0x00, 0x3c, 0x00, - 0xe0, 0x11, 0x04, 0x00, 0x08, 0x48, 0x80, 0xb5, - 0x00, 0x68, 0x00, 0x28, 0x05, 0xd0, 0x06, 0x48, - 0x54, 0x30, 0x42, 0x6a, 0x00, 0x21, 0xbf, 0xf7, - 0xf3, 0xf8, 0x04, 0x4a, 0x04, 0x49, 0x03, 0x20, - 0xbf, 0xf7, 0xac, 0xfd, 0x80, 0xbd, 0x00, 0x00, - 0x50, 0x6d, 0x01, 0x00, 0x89, 0x98, 0x00, 0x00, - 0x91, 0x98, 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x03, 0xf8, 0x00, 0xf0, 0x19, 0xf8, 0x80, 0xbd, - 0x3c, 0x00, 0x1c, 0x12, 0x04, 0x00, 0x10, 0xb5, - 0x09, 0x4c, 0x60, 0x21, 0x20, 0x1c, 0xbf, 0xf7, - 0x3a, 0xf9, 0x00, 0x20, 0xc0, 0x43, 0xa0, 0x60, - 0x20, 0x60, 0xff, 0x20, 0x02, 0x30, 0xe0, 0x84, - 0x20, 0x22, 0x20, 0x1c, 0x40, 0x30, 0x02, 0x49, - 0xbf, 0xf7, 0x5b, 0xf9, 0x10, 0xbd, 0x00, 0x10, - 0x07, 0x00, 0x70, 0x52, 0x01, 0x00, 0x00, 0x20, - 0x0a, 0x49, 0xc0, 0x43, 0x88, 0x60, 0x09, 0x4b, - 0x0a, 0x49, 0x3c, 0x00, 0x58, 0x12, 0x04, 0x00, - 0x00, 0x20, 0x82, 0x00, 0x01, 0x30, 0x00, 0x06, - 0x00, 0x0e, 0x20, 0x28, 0x99, 0x50, 0xf8, 0xd3, - 0x06, 0x49, 0x04, 0x4a, 0x08, 0x1c, 0x10, 0x30, - 0x08, 0x3a, 0x03, 0xc2, 0x70, 0x47, 0x00, 0x00, - 0x00, 0x10, 0x07, 0x00, 0xe0, 0x7e, 0x01, 0x00, - 0x75, 0x75, 0x00, 0x00, 0x00, 0xa0, 0x07, 0x00, - 0x04, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x0c, 0x38, 0x3c, 0x00, 0x94, 0x12, - 0x04, 0x00, 0x01, 0x21, 0x41, 0x60, 0x70, 0x47, - 0x00, 0x00, 0x70, 0x78, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x03, 0x48, 0x00, 0x21, 0x00, 0x22, - 0x00, 0x23, 0x0e, 0xc0, 0x08, 0xc0, 0x70, 0x47, - 0x00, 0x00, 0x88, 0x5a, 0x01, 0x00, 0x04, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x48, 0x61, 0x02, 0x48, - 0x40, 0x21, 0x1c, 0x30, 0xbf, 0xf7, 0xe9, 0xf8, - 0x80, 0xbd, 0xfc, 0x5a, 0x01, 0x00, 0x3c, 0x00, - 0xd0, 0x12, 0x04, 0x00, 0x80, 0xb5, 0xce, 0xf7, - 0x3f, 0xf8, 0x03, 0x49, 0x88, 0x61, 0x03, 0x49, - 0x03, 0x20, 0xd1, 0xf7, 0x55, 0xf8, 0x80, 0xbd, - 0xfc, 0x5a, 0x01, 0x00, 0x0d, 0x17, 0x01, 0x00, - 0x80, 0xb5, 0xc0, 0xf7, 0xa5, 0xf9, 0x80, 0xbd, - 0xfe, 0xb5, 0x6c, 0x49, 0x00, 0x20, 0x00, 0x90, - 0xc8, 0x78, 0x6b, 0x4c, 0x6b, 0x4f, 0x43, 0x07, - 0xc0, 0x06, 0xc0, 0x17, 0xdb, 0x0e, 0xe3, 0x58, - 0x3c, 0x00, 0x0c, 0x13, 0x04, 0x00, 0x01, 0x30, - 0x38, 0x62, 0x3b, 0x61, 0x08, 0x1c, 0x80, 0x78, - 0x66, 0x4e, 0x03, 0x22, 0x41, 0x07, 0xa0, 0x36, - 0x02, 0x96, 0x49, 0x0f, 0x31, 0x72, 0x89, 0x00, - 0x61, 0x58, 0x3c, 0x1c, 0x61, 0x61, 0x01, 0x91, - 0xc0, 0x06, 0xc0, 0x0f, 0x78, 0x62, 0x20, 0x1c, - 0x00, 0x27, 0x87, 0x61, 0x00, 0x20, 0x21, 0x1c, - 0xc8, 0x61, 0x59, 0x48, 0x59, 0x49, 0x00, 0x78, - 0x09, 0x79, 0x3c, 0x00, 0x48, 0x13, 0x04, 0x00, - 0x5a, 0x4c, 0x4e, 0x07, 0x76, 0x0f, 0x71, 0x1c, - 0x8c, 0x46, 0xb1, 0x00, 0x8e, 0x46, 0x56, 0x49, - 0x80, 0x31, 0x00, 0x28, 0x24, 0xd0, 0x52, 0x4f, - 0x01, 0x28, 0x7f, 0x78, 0x1a, 0xd0, 0x02, 0x28, - 0x71, 0xd1, 0x4f, 0x48, 0x00, 0x2f, 0x0c, 0xd0, - 0x01, 0x2f, 0x6c, 0xd1, 0x40, 0x79, 0x4d, 0x4d, - 0x40, 0x07, 0x40, 0x0f, 0x82, 0x00, 0xaa, 0x58, - 0x4b, 0x4d, 0x01, 0x30, 0x3c, 0x00, 0x84, 0x13, - 0x04, 0x00, 0xea, 0x61, 0xa0, 0x73, 0x04, 0x22, - 0x4b, 0x48, 0x48, 0x4d, 0xc8, 0x61, 0x4a, 0x48, - 0x00, 0x2f, 0x00, 0xd0, 0x4a, 0x48, 0x2f, 0x1c, - 0x11, 0xe0, 0x42, 0x48, 0x00, 0x2f, 0x55, 0xd1, - 0x07, 0x70, 0x02, 0x27, 0x47, 0x70, 0x3f, 0x48, - 0x40, 0x78, 0x00, 0x28, 0x10, 0xd0, 0x01, 0x28, - 0x01, 0xd0, 0x02, 0x28, 0x4a, 0xd1, 0x3f, 0x48, - 0x3d, 0x4f, 0xc8, 0x61, 0x3f, 0x48, 0x3c, 0x00, - 0xc0, 0x13, 0x04, 0x00, 0x88, 0x61, 0x3a, 0x49, - 0x70, 0x46, 0x08, 0x58, 0x35, 0x1c, 0xb8, 0x61, - 0x60, 0x46, 0x60, 0x73, 0x04, 0xe0, 0x3c, 0x48, - 0x02, 0x22, 0x88, 0x61, 0x3b, 0x48, 0xc8, 0x61, - 0x00, 0x20, 0x32, 0x49, 0x06, 0xe0, 0x0e, 0x18, - 0xb6, 0x78, 0x76, 0x07, 0x76, 0x0f, 0x04, 0x2e, - 0x2f, 0xd8, 0x01, 0x30, 0x90, 0x42, 0xf6, 0xd3, - 0xc8, 0x79, 0x2e, 0x4f, 0xc0, 0x07, 0xc0, 0x0f, - 0x3c, 0x00, 0xfc, 0x13, 0x04, 0x00, 0xf8, 0x60, - 0x33, 0x48, 0x41, 0x68, 0x19, 0x43, 0x41, 0x60, - 0x81, 0x68, 0x19, 0x43, 0x81, 0x60, 0x01, 0x9a, - 0xb9, 0x69, 0x8c, 0x46, 0x11, 0x43, 0xfa, 0x69, - 0x86, 0x68, 0x11, 0x43, 0x8e, 0x43, 0x86, 0x60, - 0x46, 0x68, 0x31, 0x43, 0x41, 0x60, 0x01, 0x99, - 0x0b, 0x43, 0x18, 0x1c, 0x61, 0x46, 0x08, 0x43, - 0x10, 0x43, 0x01, 0x1c, 0x00, 0x22, 0x02, 0x20, - 0xc7, 0xf7, 0x3c, 0x00, 0x38, 0x14, 0x04, 0x00, - 0x03, 0xfa, 0x1e, 0x4e, 0x40, 0x3e, 0x70, 0x78, - 0xc0, 0x08, 0xc0, 0x00, 0x28, 0x43, 0x70, 0x70, - 0x70, 0x1c, 0x01, 0x78, 0x00, 0xe0, 0x29, 0xe0, - 0x08, 0x25, 0xa9, 0x43, 0x01, 0x70, 0x01, 0x20, - 0xc0, 0x43, 0xb0, 0x80, 0x00, 0x21, 0x01, 0x20, - 0xcf, 0xf7, 0x6c, 0xfc, 0x30, 0x1c, 0x80, 0x30, - 0x81, 0x78, 0x09, 0x09, 0x09, 0x01, 0x81, 0x70, - 0x0f, 0x21, 0x01, 0x70, 0x3c, 0x00, 0x74, 0x14, - 0x04, 0x00, 0x16, 0x4a, 0x69, 0x04, 0x11, 0x60, - 0x51, 0x60, 0x02, 0x9e, 0x10, 0x21, 0x32, 0x7a, - 0x7b, 0x6a, 0x00, 0x2b, 0x00, 0xd1, 0x00, 0x21, - 0x11, 0x43, 0x21, 0x73, 0x81, 0x78, 0x29, 0x43, - 0x81, 0x70, 0xe0, 0x78, 0x01, 0x21, 0x08, 0x43, - 0xe0, 0x70, 0xd2, 0xf7, 0xf2, 0xf9, 0x01, 0x20, - 0x00, 0x90, 0x00, 0x98, 0xfe, 0xbd, 0xc0, 0x57, - 0x01, 0x00, 0x6c, 0x43, 0x01, 0x00, 0x3c, 0x00, - 0xb0, 0x14, 0x04, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x40, 0x90, 0x07, 0x00, 0xc9, 0x1d, 0x00, 0x00, - 0x81, 0x1d, 0x00, 0x00, 0xa5, 0x1d, 0x00, 0x00, - 0x99, 0x1d, 0x00, 0x00, 0xf1, 0x1d, 0x00, 0x00, - 0x10, 0x00, 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x03, 0x49, 0x00, 0x20, 0x88, 0x62, 0x08, 0x70, - 0x48, 0x70, 0x08, 0x71, 0x08, 0x62, 0x70, 0x47, - 0xac, 0x7e, 0x01, 0x00, 0x80, 0xb5, 0x01, 0x21, - 0x3c, 0x00, 0xec, 0x14, 0x04, 0x00, 0x00, 0x20, - 0xcd, 0xf7, 0x69, 0xff, 0x80, 0xbd, 0xb0, 0xb5, - 0x0f, 0x48, 0xc0, 0xf7, 0x18, 0xfc, 0x0e, 0x4d, - 0x03, 0x20, 0x28, 0x70, 0x0d, 0x49, 0x0d, 0x48, - 0x0c, 0x39, 0x48, 0x60, 0x0d, 0x48, 0x0a, 0x4c, - 0x88, 0x60, 0x40, 0x21, 0x18, 0x34, 0x20, 0x1c, - 0xbe, 0xf7, 0xc1, 0xff, 0xff, 0x21, 0x68, 0x68, - 0x09, 0x06, 0x08, 0x43, 0x20, 0x60, 0xff, 0x21, - 0x06, 0x22, 0x3c, 0x00, 0x28, 0x15, 0x04, 0x00, - 0x20, 0x1d, 0xbf, 0xf7, 0x79, 0xf8, 0x01, 0x20, - 0xe0, 0x60, 0xb0, 0xbd, 0xc0, 0xa8, 0x13, 0x0a, - 0x20, 0x6e, 0x01, 0x00, 0xc0, 0xa8, 0x13, 0x01, - 0xff, 0xff, 0xff, 0x00, 0x80, 0xb5, 0x02, 0x49, - 0x01, 0x20, 0xc8, 0xf7, 0x45, 0xff, 0x80, 0xbd, - 0x9d, 0x1c, 0x00, 0x00, 0x98, 0xb5, 0x0c, 0x4c, - 0x00, 0x20, 0x60, 0x60, 0xe0, 0x60, 0x0b, 0x4b, - 0x0b, 0x49, 0x82, 0x00, 0x3c, 0x00, 0x64, 0x15, - 0x04, 0x00, 0x01, 0x30, 0x20, 0x28, 0x99, 0x50, - 0xfa, 0xdb, 0x6a, 0x46, 0x09, 0x49, 0x05, 0x20, - 0xbf, 0xf7, 0x2f, 0xfd, 0x00, 0x20, 0xc0, 0x43, - 0x20, 0x60, 0x06, 0x49, 0x20, 0x20, 0x08, 0x60, - 0x48, 0x60, 0x98, 0xbd, 0x00, 0x00, 0x00, 0x40, - 0x07, 0x00, 0x30, 0x74, 0x01, 0x00, 0xa9, 0x75, - 0x00, 0x00, 0xb5, 0x9f, 0x00, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x05, 0x49, 0x00, 0x20, 0x3c, 0x00, - 0xa0, 0x15, 0x04, 0x00, 0x08, 0x60, 0x05, 0x48, - 0x81, 0x78, 0x28, 0x22, 0x91, 0x43, 0x81, 0x70, - 0x81, 0x78, 0x11, 0x43, 0x81, 0x70, 0x70, 0x47, - 0x78, 0x6e, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x41, 0x48, 0x10, 0xb5, - 0x00, 0x68, 0x02, 0x21, 0x88, 0x43, 0x3f, 0x49, - 0x08, 0x60, 0x08, 0x1c, 0x00, 0x68, 0x02, 0x21, - 0x08, 0x43, 0x3c, 0x49, 0x08, 0x60, 0x3c, 0x48, - 0x3c, 0x00, 0xdc, 0x15, 0x04, 0x00, 0x40, 0x68, - 0x80, 0x21, 0x88, 0x43, 0x3a, 0x49, 0x48, 0x60, - 0x08, 0x1c, 0x00, 0x68, 0x80, 0x21, 0x08, 0x43, - 0x37, 0x49, 0x08, 0x60, 0x37, 0x48, 0x01, 0x7a, - 0x01, 0x24, 0x21, 0x43, 0x01, 0x72, 0x01, 0x7a, - 0x02, 0x22, 0x11, 0x43, 0x01, 0x72, 0x01, 0x7a, - 0x04, 0x22, 0x91, 0x43, 0x01, 0x72, 0x01, 0x7a, - 0x08, 0x22, 0x11, 0x43, 0x01, 0x72, 0x01, 0x7b, - 0x21, 0x43, 0x3c, 0x00, 0x18, 0x16, 0x04, 0x00, - 0x01, 0x73, 0x01, 0x7b, 0x02, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x01, 0x7b, 0x04, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x01, 0x7b, 0x08, 0x22, 0x11, 0x43, - 0x01, 0x73, 0x2e, 0x21, 0x41, 0x73, 0x81, 0x7b, - 0x38, 0x22, 0x91, 0x43, 0x28, 0x31, 0x81, 0x73, - 0x20, 0x21, 0x41, 0x74, 0x81, 0x7b, 0xc9, 0x08, - 0xc9, 0x00, 0x03, 0x31, 0x81, 0x73, 0x22, 0x21, - 0xc1, 0x73, 0x20, 0x49, 0x3c, 0x00, 0x54, 0x16, - 0x04, 0x00, 0x09, 0x7a, 0x41, 0x72, 0x1e, 0x49, - 0x49, 0x7a, 0x01, 0x74, 0x3c, 0x22, 0x02, 0x77, - 0x01, 0x1c, 0x10, 0x31, 0x4a, 0x73, 0x50, 0x23, - 0x8b, 0x73, 0x5a, 0x23, 0xcb, 0x73, 0x0d, 0x23, - 0x01, 0x1c, 0x20, 0x31, 0x0b, 0x70, 0x17, 0x4b, - 0x43, 0x84, 0x0e, 0x23, 0x4b, 0x70, 0x00, 0x21, - 0x41, 0x82, 0x30, 0x21, 0x01, 0x70, 0x05, 0x21, - 0x41, 0x70, 0x04, 0x21, 0x41, 0x71, 0x3c, 0x00, - 0x90, 0x16, 0x04, 0x00, 0x84, 0x71, 0xc4, 0x71, - 0x0c, 0x21, 0x01, 0x71, 0xf8, 0x21, 0x41, 0x80, - 0x0f, 0x49, 0xca, 0x72, 0x8a, 0x72, 0x03, 0x22, - 0x0a, 0x72, 0x09, 0x22, 0x4a, 0x72, 0x08, 0x22, - 0x0a, 0x73, 0x02, 0x7a, 0x40, 0x23, 0x1a, 0x43, - 0x02, 0x72, 0x4c, 0x73, 0xff, 0xf7, 0xa2, 0xfc, - 0x08, 0x48, 0x01, 0x78, 0x21, 0x43, 0x01, 0x70, - 0x10, 0xbd, 0x00, 0x00, 0xf0, 0x00, 0x07, 0x00, - 0x3c, 0x00, 0xcc, 0x16, 0x04, 0x00, 0xf4, 0x00, - 0x07, 0x00, 0x0c, 0x80, 0x07, 0x00, 0x76, 0x46, - 0x01, 0x00, 0x24, 0x09, 0x00, 0x00, 0x80, 0x80, - 0x07, 0x00, 0xa0, 0x80, 0x07, 0x00, 0x80, 0xb5, - 0x18, 0x21, 0x09, 0x48, 0xbe, 0xf7, 0xd7, 0xfe, - 0x08, 0x48, 0x00, 0x21, 0x3c, 0x38, 0x41, 0x60, - 0x81, 0x60, 0xc1, 0x60, 0x01, 0x61, 0x41, 0x61, - 0x81, 0x61, 0x01, 0x21, 0x01, 0x62, 0xff, 0xf7, - 0x5c, 0xff, 0x3c, 0x00, 0x08, 0x17, 0x04, 0x00, - 0xc0, 0xf7, 0x6c, 0xff, 0x80, 0xbd, 0x00, 0x00, - 0x24, 0x7e, 0x01, 0x00, 0xb0, 0xb5, 0x21, 0x48, - 0x00, 0x68, 0x40, 0x08, 0x1f, 0x49, 0x40, 0x00, - 0x08, 0x60, 0x08, 0x1c, 0x00, 0x68, 0x01, 0x21, - 0x08, 0x43, 0x1c, 0x49, 0x08, 0x60, 0x1c, 0x4a, - 0x10, 0x79, 0x01, 0x21, 0x08, 0x43, 0x10, 0x71, - 0x10, 0x79, 0x02, 0x21, 0x88, 0x43, 0x10, 0x71, - 0x00, 0xf0, 0x6c, 0xf8, 0x3c, 0x00, 0x44, 0x17, - 0x04, 0x00, 0x10, 0x7a, 0x01, 0x21, 0x08, 0x43, - 0x10, 0x72, 0x10, 0x7a, 0xfe, 0x21, 0x88, 0x43, - 0x0a, 0x30, 0x10, 0x72, 0x28, 0x20, 0x90, 0x72, - 0x5a, 0x20, 0xd0, 0x72, 0x11, 0x4d, 0x14, 0x20, - 0x28, 0x77, 0x2c, 0x1c, 0x10, 0x34, 0xa0, 0x73, - 0x16, 0x20, 0xa8, 0x75, 0x18, 0x20, 0xe8, 0x75, - 0xff, 0xf7, 0xa1, 0xfc, 0x0c, 0x48, 0x68, 0x86, - 0xe0, 0x7b, 0x40, 0x06, 0x40, 0x0e, 0x3c, 0x00, - 0x80, 0x17, 0x04, 0x00, 0x0e, 0x21, 0x08, 0x43, - 0xe0, 0x73, 0xe0, 0x7b, 0x80, 0x21, 0x08, 0x43, - 0xe0, 0x73, 0x07, 0x48, 0x41, 0x79, 0x04, 0x22, - 0x11, 0x43, 0x41, 0x71, 0xb0, 0xbd, 0x00, 0x00, - 0xf0, 0x00, 0x07, 0x00, 0x00, 0x80, 0x07, 0x00, - 0x30, 0x80, 0x07, 0x00, 0xff, 0x01, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x80, 0xb5, 0xff, 0xf7, - 0xaf, 0xff, 0x00, 0x20, 0x14, 0x49, 0xc0, 0x43, - 0x3c, 0x00, 0xbc, 0x17, 0x04, 0x00, 0x88, 0x60, - 0xc1, 0xf7, 0x0b, 0xf9, 0x13, 0x49, 0x00, 0x20, - 0x48, 0x62, 0xc8, 0x60, 0x48, 0x61, 0x08, 0x61, - 0x88, 0x61, 0xc8, 0x61, 0x0f, 0x4b, 0x08, 0x62, - 0x0f, 0x4a, 0x08, 0x63, 0x38, 0x33, 0x1a, 0x80, - 0x01, 0x22, 0x5a, 0x71, 0x0b, 0x4a, 0x40, 0x32, - 0xd0, 0x60, 0x13, 0x60, 0x08, 0x23, 0x13, 0x81, - 0x50, 0x60, 0x09, 0x4a, 0x8a, 0x62, 0xff, 0x22, - 0x0a, 0x70, 0x3c, 0x00, 0xf8, 0x17, 0x04, 0x00, - 0x48, 0x70, 0x05, 0x48, 0x00, 0x21, 0x00, 0x22, - 0x50, 0x30, 0x00, 0x23, 0x0e, 0xc0, 0xc1, 0xf7, - 0xff, 0xf8, 0x80, 0xbd, 0x00, 0x30, 0x07, 0x00, - 0x04, 0x6c, 0x01, 0x00, 0xbe, 0xba, 0x00, 0x00, - 0x85, 0x75, 0x00, 0x00, 0x03, 0x48, 0x10, 0x21, - 0x81, 0x71, 0x02, 0x21, 0xc1, 0x71, 0x30, 0x21, - 0x41, 0x72, 0x70, 0x47, 0x00, 0x80, 0x07, 0x00, - 0x70, 0x47, 0x00, 0x00, 0x3c, 0x00, 0x34, 0x18, - 0x04, 0x00, 0x00, 0xb5, 0xc1, 0xf7, 0xdb, 0xfb, - 0x00, 0xbd, 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, - 0xcd, 0xf7, 0x87, 0xfd, 0x01, 0x49, 0x88, 0x60, - 0x80, 0xbd, 0x50, 0xd9, 0x01, 0x00, 0x80, 0xb5, - 0x06, 0x21, 0x05, 0x48, 0xbe, 0xf7, 0xfd, 0xfd, - 0x04, 0x49, 0x00, 0x20, 0x04, 0x39, 0x08, 0x60, - 0x00, 0xf0, 0x67, 0xf8, 0x00, 0xf0, 0x03, 0xf8, - 0x80, 0xbd, 0xec, 0x67, 0x01, 0x00, 0x3c, 0x00, - 0x70, 0x18, 0x04, 0x00, 0x10, 0xb5, 0x07, 0x4c, - 0x2c, 0x21, 0x20, 0x1c, 0xbe, 0xf7, 0x10, 0xfe, - 0x01, 0x20, 0x20, 0x70, 0x03, 0x49, 0x00, 0x20, - 0x1c, 0x39, 0xc8, 0x60, 0x08, 0x61, 0x88, 0x61, - 0x10, 0xbd, 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, - 0x80, 0xb5, 0xcd, 0xf7, 0x5d, 0xfd, 0x09, 0x49, - 0x88, 0x60, 0x09, 0x49, 0x08, 0x20, 0xd0, 0xf7, - 0x73, 0xfd, 0x08, 0x49, 0x09, 0x20, 0xd0, 0xf7, - 0x3c, 0x00, 0xac, 0x18, 0x04, 0x00, 0x6f, 0xfd, - 0x07, 0x49, 0x11, 0x20, 0xd0, 0xf7, 0x6b, 0xfd, - 0x06, 0x48, 0xc2, 0xf7, 0x74, 0xf9, 0x80, 0xbd, - 0x00, 0x00, 0x78, 0x69, 0x01, 0x00, 0x21, 0x35, - 0x00, 0x00, 0xa1, 0x38, 0x00, 0x00, 0x45, 0x34, - 0x00, 0x00, 0xbd, 0x26, 0x01, 0x00, 0x80, 0xb5, - 0x86, 0xb0, 0x0f, 0x48, 0xc4, 0xf7, 0x45, 0xf9, - 0x00, 0xf0, 0x45, 0xf8, 0xff, 0xf7, 0xd7, 0xff, - 0xff, 0xf7, 0x3c, 0x00, 0xe8, 0x18, 0x04, 0x00, - 0xab, 0xff, 0x0c, 0x49, 0x03, 0x20, 0xd0, 0xf7, - 0x4d, 0xfd, 0x0b, 0x48, 0x69, 0x46, 0x00, 0x90, - 0x00, 0x20, 0x01, 0x90, 0x09, 0x48, 0x04, 0x90, - 0x09, 0x48, 0x02, 0x90, 0x09, 0x48, 0x03, 0x90, - 0x09, 0x48, 0x05, 0x90, 0x00, 0x20, 0xc4, 0xf7, - 0xcf, 0xf8, 0x06, 0xb0, 0x80, 0xbd, 0x00, 0x00, - 0xf4, 0x67, 0x01, 0x00, 0x45, 0x35, 0x00, 0x00, - 0x95, 0x32, 0x00, 0x00, 0x3c, 0x00, 0x24, 0x19, - 0x04, 0x00, 0xa0, 0x7d, 0x01, 0x00, 0xfd, 0x32, - 0x00, 0x00, 0xcd, 0x31, 0x00, 0x00, 0x45, 0x7d, - 0x01, 0x00, 0x10, 0xb5, 0xcd, 0xf7, 0xd5, 0xfc, - 0x09, 0x48, 0x09, 0x4c, 0x30, 0x21, 0x60, 0x61, - 0x08, 0x48, 0x74, 0x30, 0xbe, 0xf7, 0xa9, 0xfd, - 0x00, 0x20, 0xa0, 0x62, 0x06, 0x49, 0x20, 0x61, - 0xe1, 0x63, 0x60, 0x64, 0xa0, 0x64, 0x14, 0x21, - 0x21, 0x65, 0x60, 0x62, 0x10, 0xbd, 0x3c, 0x00, - 0x60, 0x19, 0x04, 0x00, 0xb9, 0x75, 0x00, 0x00, - 0x44, 0x7d, 0x01, 0x00, 0x70, 0x17, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x09, 0x20, 0x04, 0x4a, - 0xd1, 0xf7, 0xe8, 0xfe, 0xcd, 0xf7, 0xec, 0xfc, - 0x02, 0x49, 0x08, 0x63, 0x80, 0xbd, 0x00, 0x00, - 0x39, 0x39, 0x00, 0x00, 0x44, 0x7d, 0x01, 0x00, - 0x80, 0xb5, 0xac, 0x21, 0x03, 0x48, 0xbe, 0xf7, - 0x83, 0xfd, 0x00, 0xf0, 0x51, 0xf8, 0x00, 0xf0, - 0x3c, 0x00, 0x9c, 0x19, 0x04, 0x00, 0x49, 0xf8, - 0x80, 0xbd, 0xa4, 0x6c, 0x01, 0x00, 0x08, 0xb5, - 0x00, 0xf0, 0x4d, 0xf8, 0x00, 0xf0, 0x45, 0xf8, - 0x00, 0x21, 0x16, 0x20, 0x18, 0x4a, 0xd1, 0xf7, - 0xc8, 0xfe, 0x17, 0x4a, 0x04, 0x21, 0x10, 0x1c, - 0x40, 0x30, 0x01, 0x70, 0x00, 0x21, 0x81, 0x70, - 0x11, 0x21, 0xc1, 0x80, 0x14, 0x49, 0x01, 0x81, - 0x10, 0x1c, 0x80, 0x30, 0xc1, 0x78, 0x08, 0x22, - 0x91, 0x43, 0x3c, 0x00, 0xd8, 0x19, 0x04, 0x00, - 0xc1, 0x70, 0xc1, 0x78, 0x11, 0x43, 0xc1, 0x70, - 0x6a, 0x46, 0x0f, 0x49, 0x14, 0x20, 0xbf, 0xf7, - 0xf5, 0xfa, 0x0e, 0x49, 0x07, 0x20, 0xd0, 0xf7, - 0xcd, 0xfc, 0x0d, 0x49, 0x0f, 0x20, 0xd0, 0xf7, - 0xc9, 0xfc, 0xcd, 0xf7, 0xab, 0xfc, 0x0b, 0x49, - 0x08, 0x60, 0x0a, 0x48, 0x44, 0x38, 0x80, 0x68, - 0x00, 0x28, 0x02, 0xd0, 0x00, 0x20, 0xc6, 0xf7, - 0x6f, 0xf9, 0x08, 0xbd, 0x3c, 0x00, 0x14, 0x1a, - 0x04, 0x00, 0xb5, 0x3b, 0x00, 0x00, 0x00, 0x90, - 0x07, 0x00, 0xe7, 0xfd, 0x00, 0x00, 0x8d, 0x41, - 0x00, 0x00, 0xcd, 0x48, 0x00, 0x00, 0xd9, 0x49, - 0x00, 0x00, 0xa4, 0x6c, 0x01, 0x00, 0x80, 0xb5, - 0x00, 0xf0, 0x6f, 0xfc, 0x80, 0xbd, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x61, 0xfc, - 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, 0xb0, 0xb5, - 0x30, 0x21, 0x0c, 0x48, 0xbe, 0xf7, 0x3c, 0x00, - 0x50, 0x1a, 0x04, 0x00, 0x25, 0xfd, 0x0b, 0x4c, - 0x00, 0x25, 0x0a, 0x48, 0x84, 0x3c, 0x38, 0x22, - 0x03, 0x21, 0x70, 0x38, 0x65, 0x60, 0xbe, 0xf7, - 0xdd, 0xfd, 0x06, 0x48, 0x38, 0x22, 0x01, 0x21, - 0x38, 0x38, 0xbe, 0xf7, 0xd7, 0xfd, 0x0e, 0x20, - 0xa5, 0x60, 0x60, 0x70, 0x20, 0x70, 0x00, 0xf0, - 0x1d, 0xf8, 0xb0, 0xbd, 0x94, 0x67, 0x01, 0x00, - 0x04, 0x49, 0x00, 0xb5, 0x01, 0x20, 0x48, 0x60, - 0x3c, 0x00, 0x8c, 0x1a, 0x04, 0x00, 0x88, 0x60, - 0xc8, 0x60, 0xc3, 0xf7, 0xf8, 0xff, 0x00, 0xbd, - 0x00, 0x00, 0xd4, 0x67, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x0a, 0x20, 0x02, 0x4a, 0xd1, 0xf7, - 0x50, 0xfe, 0x80, 0xbd, 0x00, 0x00, 0x1d, 0x5a, - 0x00, 0x00, 0x80, 0xb5, 0x00, 0xf0, 0x05, 0xf8, - 0x80, 0xbd, 0x80, 0xb5, 0x00, 0xf0, 0xfd, 0xfb, - 0x80, 0xbd, 0x80, 0xb5, 0x02, 0x49, 0x04, 0x20, - 0xd0, 0xf7, 0x3c, 0x00, 0xc8, 0x1a, 0x04, 0x00, - 0x61, 0xfc, 0x80, 0xbd, 0x65, 0x1f, 0x00, 0x00, - 0x00, 0x21, 0x17, 0x48, 0xc9, 0x43, 0x80, 0xb5, - 0x16, 0x4b, 0x01, 0x70, 0x18, 0x1c, 0x10, 0x22, - 0x20, 0x30, 0x02, 0x71, 0x00, 0x22, 0x10, 0x33, - 0x9a, 0x73, 0x42, 0x79, 0x04, 0x23, 0x1a, 0x43, - 0x42, 0x71, 0x42, 0x79, 0x18, 0x23, 0x9a, 0x43, - 0x08, 0x32, 0x42, 0x71, 0x08, 0x1c, 0xd7, 0xf7, - 0x59, 0xf8, 0x00, 0x28, 0x3c, 0x00, 0x04, 0x1b, - 0x04, 0x00, 0x03, 0xd1, 0x01, 0x21, 0x9a, 0x20, - 0xbf, 0xf7, 0xcb, 0xfb, 0x50, 0x20, 0x09, 0x49, - 0x50, 0x22, 0x0a, 0x60, 0xc8, 0x60, 0x88, 0x60, - 0x48, 0x60, 0x08, 0x61, 0x01, 0x20, 0x48, 0x61, - 0x00, 0x20, 0xd7, 0xf7, 0xd8, 0xf8, 0x04, 0x49, - 0xff, 0x20, 0x08, 0x60, 0x80, 0xbd, 0xf4, 0x6b, - 0x01, 0x00, 0x30, 0x00, 0x07, 0x00, 0x04, 0x02, - 0x07, 0x00, 0xf4, 0x74, 0x01, 0x00, 0x3c, 0x00, - 0x40, 0x1b, 0x04, 0x00, 0x80, 0xb5, 0xd7, 0xf7, - 0xfb, 0xf8, 0x80, 0xbd, 0x10, 0xb5, 0xff, 0xf7, - 0xab, 0xfb, 0xbf, 0xf7, 0xdd, 0xfb, 0x81, 0x48, - 0xcd, 0xf7, 0x98, 0xfa, 0x00, 0x24, 0x23, 0x1c, - 0x04, 0x22, 0x04, 0x21, 0x00, 0x20, 0x01, 0xf0, - 0x39, 0xfa, 0x00, 0x28, 0x01, 0xd0, 0xbf, 0xf7, - 0xc9, 0xfb, 0x23, 0x1c, 0x00, 0x22, 0xff, 0x21, - 0x00, 0x20, 0x01, 0xf0, 0x2f, 0xfa, 0x00, 0x28, - 0x3c, 0x00, 0x7c, 0x1b, 0x04, 0x00, 0x01, 0xd0, - 0xbf, 0xf7, 0xbf, 0xfb, 0x23, 0x1c, 0x00, 0x22, - 0xff, 0x21, 0x00, 0x20, 0x01, 0xf0, 0x25, 0xfa, - 0x00, 0x28, 0x01, 0xd0, 0xbf, 0xf7, 0xb5, 0xfb, - 0xc4, 0xf7, 0x27, 0xff, 0x70, 0x48, 0x84, 0x70, - 0x6f, 0x49, 0x7f, 0x20, 0x88, 0x70, 0x6e, 0x49, - 0x0c, 0x60, 0x03, 0x20, 0x08, 0x60, 0x6b, 0x48, - 0x44, 0x70, 0x6c, 0x48, 0x04, 0x80, 0x69, 0x48, - 0xc0, 0x78, 0x3c, 0x00, 0xb8, 0x1b, 0x04, 0x00, - 0x08, 0x21, 0x08, 0x43, 0x67, 0x49, 0xc8, 0x70, - 0x08, 0x1c, 0xc0, 0x78, 0x04, 0x21, 0x08, 0x43, - 0x64, 0x49, 0xc8, 0x70, 0x01, 0xf0, 0x7e, 0xfa, - 0xff, 0xf7, 0x7e, 0xff, 0xff, 0xf7, 0x2c, 0xfe, - 0x01, 0xf0, 0x46, 0xfb, 0xff, 0xf7, 0x18, 0xfb, - 0x01, 0xf0, 0x52, 0xfa, 0xff, 0xf7, 0x82, 0xfb, - 0x5f, 0x48, 0xc1, 0x68, 0x10, 0x22, 0x91, 0x43, - 0xc1, 0x60, 0x01, 0x69, 0x3c, 0x00, 0xf4, 0x1b, - 0x04, 0x00, 0x5d, 0x4a, 0x11, 0x43, 0x01, 0x61, - 0x01, 0x69, 0xd2, 0x0a, 0x91, 0x43, 0x01, 0x61, - 0xc1, 0x68, 0x5a, 0x4a, 0x11, 0x43, 0xc1, 0x60, - 0x81, 0x6a, 0x59, 0x4a, 0x11, 0x43, 0x81, 0x62, - 0x00, 0xf0, 0x77, 0xf9, 0x01, 0xf0, 0x1f, 0xf8, - 0x00, 0xf0, 0x93, 0xfa, 0x01, 0xf0, 0x99, 0xfb, - 0x00, 0xf0, 0xf1, 0xff, 0x00, 0xf0, 0x99, 0xfc, - 0x00, 0xf0, 0xdd, 0xfc, 0x00, 0xf0, 0x3c, 0x00, - 0x30, 0x1c, 0x04, 0x00, 0x83, 0xfc, 0xff, 0xf7, - 0xb3, 0xfc, 0x01, 0xf0, 0x31, 0xfa, 0x01, 0xf0, - 0x71, 0xfa, 0xff, 0xf7, 0x87, 0xfa, 0xff, 0xf7, - 0x9b, 0xfa, 0x01, 0x21, 0x01, 0x20, 0x4b, 0x4a, - 0xd1, 0xf7, 0x7c, 0xfd, 0x01, 0x21, 0x02, 0x20, - 0x49, 0x4a, 0xd1, 0xf7, 0x77, 0xfd, 0x02, 0x21, - 0x03, 0x20, 0x48, 0x4a, 0xd1, 0xf7, 0x72, 0xfd, - 0x02, 0x21, 0x04, 0x20, 0x46, 0x4a, 0xd1, 0xf7, - 0x3c, 0x00, 0x6c, 0x1c, 0x04, 0x00, 0x6d, 0xfd, - 0x02, 0x21, 0x05, 0x20, 0x45, 0x4a, 0xd1, 0xf7, - 0x68, 0xfd, 0x02, 0x21, 0x06, 0x20, 0x43, 0x4a, - 0xd1, 0xf7, 0x63, 0xfd, 0x01, 0x21, 0x07, 0x20, - 0x42, 0x4a, 0xd1, 0xf7, 0x5e, 0xfd, 0x02, 0x21, - 0x17, 0x20, 0x40, 0x4a, 0xd1, 0xf7, 0x59, 0xfd, - 0x02, 0x21, 0x08, 0x20, 0x3f, 0x4a, 0xd1, 0xf7, - 0x54, 0xfd, 0xff, 0xf7, 0xc8, 0xfd, 0x3d, 0x48, - 0x04, 0x60, 0x3c, 0x00, 0xa8, 0x1c, 0x04, 0x00, - 0x44, 0x60, 0xff, 0xf7, 0x17, 0xfa, 0xff, 0xf7, - 0x09, 0xfa, 0xff, 0xf7, 0x4f, 0xfc, 0x00, 0xf0, - 0x43, 0xf9, 0xff, 0xf7, 0x33, 0xfa, 0xff, 0xf7, - 0xfb, 0xfa, 0x01, 0xf0, 0x85, 0xf8, 0x01, 0xf0, - 0xeb, 0xf9, 0x01, 0xf0, 0x23, 0xfa, 0x01, 0xf0, - 0x71, 0xf9, 0x00, 0xf0, 0xe3, 0xff, 0xff, 0xf7, - 0x6f, 0xfa, 0x00, 0xf0, 0xaf, 0xf9, 0x00, 0xf0, - 0xbd, 0xf9, 0x00, 0xf0, 0x3c, 0x00, 0xe4, 0x1c, - 0x04, 0x00, 0xad, 0xfc, 0x00, 0xf0, 0x9b, 0xfe, - 0xff, 0xf7, 0xcd, 0xfa, 0xff, 0xf7, 0xab, 0xfe, - 0x00, 0xf0, 0xc3, 0xf9, 0xff, 0xf7, 0xab, 0xfd, - 0x00, 0xf0, 0x8d, 0xff, 0x00, 0xf0, 0x21, 0xff, - 0x00, 0xf0, 0x65, 0xf9, 0x00, 0xf0, 0x97, 0xf9, - 0x00, 0xf0, 0xfd, 0xfe, 0x00, 0xf0, 0xe5, 0xfe, - 0x00, 0xf0, 0x3f, 0xf9, 0x00, 0xf0, 0x73, 0xf9, - 0xff, 0xf7, 0x37, 0xfe, 0x00, 0xf0, 0x3c, 0x00, - 0x20, 0x1d, 0x04, 0x00, 0x21, 0xf9, 0x00, 0xf0, - 0x73, 0xfb, 0xff, 0xf7, 0xe5, 0xfb, 0x00, 0xf0, - 0xd3, 0xfb, 0xff, 0xf7, 0xa9, 0xfe, 0x00, 0xf0, - 0xbb, 0xfb, 0x00, 0xf0, 0x09, 0xff, 0x00, 0xf0, - 0xdb, 0xf9, 0x18, 0x48, 0xc9, 0xf7, 0x56, 0xf8, - 0x17, 0x48, 0xc9, 0xf7, 0x2b, 0xf8, 0x00, 0x22, - 0x01, 0x21, 0xf0, 0x20, 0xd1, 0xf7, 0x2e, 0xfd, - 0x00, 0x20, 0x10, 0xbd, 0xa9, 0x69, 0x00, 0x00, - 0x3c, 0x00, 0x5c, 0x1d, 0x04, 0x00, 0x00, 0x00, - 0x07, 0x00, 0xf0, 0x00, 0x07, 0x00, 0x2c, 0x00, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0x3c, 0x00, - 0x08, 0x00, 0xc0, 0x3f, 0x74, 0x38, 0xfc, 0xdf, - 0x7f, 0x38, 0x55, 0x69, 0x00, 0x00, 0xe5, 0x13, - 0x00, 0x00, 0x61, 0x0c, 0x00, 0x00, 0x6d, 0x0c, - 0x00, 0x00, 0x3d, 0x0c, 0x00, 0x00, 0xf1, 0x0d, - 0x00, 0x00, 0xc5, 0x33, 0x00, 0x00, 0x3d, 0x0f, - 0x00, 0x00, 0x3c, 0x00, 0x98, 0x1d, 0x04, 0x00, - 0xad, 0xd8, 0x00, 0x00, 0x80, 0x00, 0x07, 0x00, - 0x50, 0x57, 0x01, 0x00, 0x04, 0x40, 0x01, 0x00, - 0x80, 0xb5, 0x01, 0xf0, 0xa9, 0xf9, 0x00, 0xf0, - 0xc9, 0xf8, 0xff, 0xf7, 0xc5, 0xfe, 0x01, 0xf0, - 0x03, 0xfb, 0x01, 0xf0, 0x93, 0xfa, 0xff, 0xf7, - 0xcb, 0xf9, 0x2c, 0x48, 0xff, 0xf7, 0xe8, 0xf9, - 0x00, 0xf0, 0xaa, 0xf8, 0x00, 0xf0, 0x58, 0xff, - 0xff, 0xf7, 0x34, 0xfd, 0x3c, 0x00, 0xd4, 0x1d, - 0x04, 0x00, 0xff, 0xf7, 0xf2, 0xfb, 0xff, 0xf7, - 0x7a, 0xfa, 0xff, 0xf7, 0x00, 0xfa, 0x00, 0xf0, - 0x34, 0xf9, 0x00, 0xf0, 0x3c, 0xf9, 0x01, 0xf0, - 0xe2, 0xf8, 0xff, 0xf7, 0x7a, 0xf9, 0xff, 0xf7, - 0x72, 0xf9, 0xff, 0xf7, 0x9a, 0xf9, 0x01, 0xf0, - 0x66, 0xf9, 0x01, 0xf0, 0x8e, 0xf9, 0x01, 0xf0, - 0xe0, 0xf8, 0x00, 0xf0, 0x06, 0xff, 0x00, 0xf0, - 0xf0, 0xfb, 0x00, 0xf0, 0x46, 0xfb, 0x3c, 0x00, - 0x10, 0x1e, 0x04, 0x00, 0x00, 0xf0, 0xbc, 0xff, - 0x00, 0xf0, 0xe4, 0xfc, 0x00, 0xf0, 0x20, 0xfe, - 0xff, 0xf7, 0x40, 0xfa, 0xff, 0xf7, 0x46, 0xfe, - 0xff, 0xf7, 0x56, 0xfd, 0x00, 0xf0, 0x2c, 0xf9, - 0x00, 0xf0, 0xfa, 0xfe, 0x00, 0xf0, 0x8a, 0xfe, - 0x00, 0xf0, 0xd4, 0xf8, 0x00, 0xf0, 0xb4, 0xf8, - 0x00, 0xf0, 0x78, 0xfe, 0x00, 0xf0, 0x4e, 0xfe, - 0x00, 0xf0, 0xde, 0xf8, 0xff, 0xf7, 0xac, 0xfd, - 0x3c, 0x00, 0x4c, 0x1e, 0x04, 0x00, 0x00, 0xf0, - 0x8c, 0xf8, 0x00, 0xf0, 0xf8, 0xfa, 0xff, 0xf7, - 0x76, 0xfb, 0xff, 0xf7, 0x20, 0xfe, 0x01, 0xf0, - 0xa6, 0xfa, 0x00, 0xf0, 0x48, 0xfb, 0x00, 0xf0, - 0x7c, 0xfe, 0x00, 0xf0, 0x5c, 0xf9, 0xbe, 0xf7, - 0x57, 0xfd, 0x00, 0x20, 0x80, 0xbd, 0x80, 0x38, - 0x01, 0x00, 0x01, 0x49, 0x00, 0x20, 0x08, 0x60, - 0x70, 0x47, 0xa8, 0x7e, 0x01, 0x00, 0x10, 0xb5, - 0x04, 0x1c, 0x3c, 0x00, 0x88, 0x1e, 0x04, 0x00, - 0x01, 0xd1, 0xbf, 0xf7, 0x39, 0xfa, 0x0f, 0x48, - 0x7d, 0x21, 0xc9, 0x00, 0x84, 0x60, 0x01, 0x80, - 0x0d, 0x49, 0x01, 0x61, 0x80, 0x21, 0x41, 0x80, - 0x00, 0x21, 0xc1, 0x60, 0x01, 0x62, 0x0b, 0x48, - 0x41, 0x80, 0x14, 0x21, 0x81, 0x80, 0x07, 0x21, - 0x41, 0x81, 0x06, 0x4a, 0x46, 0x23, 0x04, 0x32, - 0x05, 0x24, 0x13, 0x70, 0x54, 0x70, 0x0a, 0x21, - 0x91, 0x70, 0x81, 0x76, 0x3c, 0x00, 0xc4, 0x1e, - 0x04, 0x00, 0x03, 0x76, 0x04, 0x81, 0x10, 0xbd, - 0x00, 0x00, 0xc8, 0x74, 0x01, 0x00, 0x00, 0x87, - 0x93, 0x03, 0x30, 0x00, 0x07, 0x00, 0x09, 0x48, - 0x80, 0xb5, 0x01, 0x69, 0x42, 0x69, 0x11, 0x43, - 0x82, 0x69, 0xc0, 0x69, 0x11, 0x43, 0x01, 0x43, - 0x00, 0x22, 0x03, 0x20, 0xc6, 0xf7, 0xbf, 0xfc, - 0xcc, 0xf7, 0x1b, 0xfa, 0x00, 0x20, 0xc2, 0xf7, - 0x92, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x3c, 0x00, - 0x00, 0x1f, 0x04, 0x00, 0xa4, 0x6c, 0x01, 0x00, - 0x05, 0x48, 0x80, 0xb5, 0x00, 0x21, 0x81, 0x60, - 0x02, 0x21, 0xc1, 0x60, 0x03, 0x39, 0x41, 0x60, - 0xc7, 0xf7, 0x3a, 0xff, 0x80, 0xbd, 0x00, 0x00, - 0x40, 0x20, 0x07, 0x00, 0x08, 0xb5, 0x6a, 0x46, - 0x04, 0x49, 0x15, 0x20, 0xbf, 0xf7, 0x54, 0xf8, - 0x01, 0x20, 0x03, 0x49, 0x40, 0x05, 0x08, 0x60, - 0x48, 0x60, 0x08, 0xbd, 0xa5, 0x21, 0x01, 0x00, - 0x3c, 0x00, 0x3c, 0x1f, 0x04, 0x00, 0x00, 0x10, - 0x07, 0x00, 0x70, 0x47, 0x00, 0x00, 0x06, 0x48, - 0x80, 0xb5, 0x80, 0x68, 0xc0, 0x01, 0x80, 0x0f, - 0x05, 0xd1, 0x03, 0x22, 0xc1, 0x43, 0xc6, 0xf7, - 0xba, 0xfc, 0xd6, 0xf7, 0x00, 0xfe, 0x80, 0xbd, - 0x00, 0x00, 0x10, 0x00, 0x07, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x2a, 0x20, - 0x06, 0x4a, 0xd1, 0xf7, 0xea, 0xfb, 0x00, 0x22, - 0x07, 0x20, 0x3c, 0x00, 0x78, 0x1f, 0x04, 0x00, - 0x04, 0x49, 0xbe, 0xf7, 0xed, 0xfe, 0x04, 0x48, - 0xc7, 0xf7, 0x58, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0x8d, 0x89, 0x00, 0x00, 0xd5, 0x9b, 0x00, 0x00, - 0x10, 0x46, 0x01, 0x00, 0x02, 0x48, 0x00, 0x21, - 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, 0x70, 0x47, - 0x80, 0x6e, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x2c, 0x20, 0x06, 0x4a, 0xd1, 0xf7, 0xcc, 0xfb, - 0x00, 0x22, 0x00, 0x20, 0x3c, 0x00, 0xb4, 0x1f, - 0x04, 0x00, 0x04, 0x49, 0xbe, 0xf7, 0xcf, 0xfe, - 0x04, 0x49, 0x02, 0x20, 0xc8, 0xf7, 0x0b, 0xfa, - 0x80, 0xbd, 0x05, 0x8a, 0x00, 0x00, 0xe9, 0x9b, - 0x00, 0x00, 0xb1, 0x8b, 0x00, 0x00, 0x02, 0x48, - 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, - 0x70, 0x47, 0x10, 0x75, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x2b, 0x20, 0x04, 0x4a, 0xd1, 0xf7, - 0xae, 0xfb, 0x00, 0x22, 0x02, 0x20, 0x3c, 0x00, - 0xf0, 0x1f, 0x04, 0x00, 0x02, 0x49, 0xbe, 0xf7, - 0xb1, 0xfe, 0x80, 0xbd, 0x2d, 0x8a, 0x00, 0x00, - 0x8d, 0x8c, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x2d, 0x20, 0x07, 0x4a, - 0xd1, 0xf7, 0x9c, 0xfb, 0x00, 0x22, 0x01, 0x20, - 0x05, 0x49, 0xbe, 0xf7, 0x9f, 0xfe, 0x05, 0x48, - 0xcb, 0xf7, 0x56, 0xfa, 0x04, 0x48, 0xcc, 0xf7, - 0xf7, 0xf8, 0x80, 0xbd, 0xad, 0x8a, 0x00, 0x00, - 0x3c, 0x00, 0x2c, 0x20, 0x04, 0x00, 0x21, 0xe2, - 0x00, 0x00, 0xf9, 0xdf, 0x00, 0x00, 0x20, 0x44, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x02, 0x49, - 0x00, 0x20, 0x08, 0x60, 0x01, 0x20, 0x48, 0x60, - 0x70, 0x47, 0xac, 0x79, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x49, 0x0d, 0x20, 0xd0, 0xf7, 0x9b, 0xf9, - 0x80, 0xbd, 0x61, 0x98, 0x00, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x80, 0xb5, 0xcd, 0xf7, 0x77, 0xf9, - 0x03, 0x49, 0x3c, 0x00, 0x68, 0x20, 0x04, 0x00, - 0x08, 0x60, 0x01, 0x1c, 0x02, 0x48, 0xcd, 0xf7, - 0x97, 0xf9, 0x80, 0xbd, 0xa8, 0x79, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x29, 0xf8, 0x80, 0xbd, 0x80, 0xb5, 0x86, 0xb0, - 0x0c, 0x48, 0xc3, 0xf7, 0x6d, 0xfd, 0xd6, 0xf7, - 0xd3, 0xfb, 0x0b, 0x48, 0x0d, 0x49, 0x00, 0x90, - 0x0a, 0x48, 0x04, 0x91, 0x01, 0x90, 0x0a, 0x48, - 0x69, 0x46, 0x02, 0x90, 0x3c, 0x00, 0xa4, 0x20, - 0x04, 0x00, 0x00, 0x20, 0x03, 0x90, 0x05, 0x90, - 0x01, 0x20, 0xc3, 0xf7, 0x00, 0xfd, 0x07, 0x49, - 0x03, 0x20, 0xd0, 0xf7, 0x6a, 0xf9, 0x06, 0xb0, - 0x80, 0xbd, 0x20, 0xf7, 0x01, 0x00, 0x11, 0x87, - 0x01, 0x00, 0x95, 0x87, 0x01, 0x00, 0x55, 0x87, - 0x01, 0x00, 0x98, 0xd9, 0x01, 0x00, 0x6d, 0x87, - 0x01, 0x00, 0x80, 0xb5, 0x01, 0x20, 0xd6, 0xf7, - 0x90, 0xfc, 0x03, 0x49, 0x00, 0x20, 0x3c, 0x00, - 0xe0, 0x20, 0x04, 0x00, 0x08, 0x60, 0x48, 0x60, - 0x02, 0x48, 0x14, 0x39, 0x48, 0x60, 0x80, 0xbd, - 0x90, 0xd9, 0x01, 0x00, 0x3d, 0x82, 0x01, 0x00, - 0x70, 0xb5, 0x00, 0x26, 0x09, 0x4c, 0x09, 0x4d, - 0x26, 0x60, 0x66, 0x60, 0x44, 0x21, 0x50, 0x35, - 0x28, 0x1c, 0xa6, 0x61, 0xbe, 0xf7, 0xc8, 0xf9, - 0x14, 0x20, 0xe0, 0x60, 0xe8, 0x63, 0x28, 0x20, - 0xe8, 0x61, 0xa0, 0x60, 0x28, 0x64, 0x2e, 0x70, - 0x3c, 0x00, 0x1c, 0x21, 0x04, 0x00, 0x70, 0xbd, - 0x00, 0x00, 0xa4, 0x6e, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x18, 0x20, 0x04, 0x4a, 0xd1, 0xf7, - 0x0c, 0xfb, 0x03, 0x49, 0x08, 0x20, 0xd0, 0xf7, - 0x2a, 0xf9, 0x80, 0xbd, 0x00, 0x00, 0x15, 0x9c, - 0x00, 0x00, 0x69, 0x9c, 0x00, 0x00, 0xfe, 0xb5, - 0x26, 0x4d, 0x28, 0x78, 0xc0, 0x07, 0x0c, 0xd4, - 0x25, 0x49, 0x00, 0x20, 0x08, 0x70, 0x28, 0x70, - 0x24, 0x48, 0x3c, 0x00, 0x58, 0x21, 0x04, 0x00, - 0x81, 0x78, 0x49, 0x08, 0x49, 0x00, 0x81, 0x70, - 0x81, 0x78, 0x01, 0x22, 0x11, 0x43, 0x81, 0x70, - 0x00, 0x24, 0xff, 0x26, 0x1f, 0x4f, 0x01, 0x36, - 0x21, 0x1c, 0x01, 0xa8, 0xc6, 0xf7, 0x32, 0xf8, - 0x00, 0xab, 0x18, 0x79, 0x01, 0x28, 0x1f, 0xd0, - 0x02, 0x28, 0x19, 0xd0, 0x03, 0x28, 0x1e, 0xd1, - 0xb8, 0x68, 0x00, 0x21, 0xb0, 0x43, 0xb8, 0x60, - 0x78, 0x68, 0x30, 0x43, 0x3c, 0x00, 0x94, 0x21, - 0x04, 0x00, 0x78, 0x60, 0x3a, 0x68, 0x32, 0x40, - 0xa0, 0x20, 0x05, 0xe0, 0x3b, 0x68, 0x33, 0x40, - 0x93, 0x42, 0x01, 0xd0, 0x01, 0x21, 0x01, 0xe0, - 0x01, 0x38, 0xf7, 0xd2, 0x78, 0x68, 0xb0, 0x43, - 0x78, 0x60, 0x00, 0x29, 0x03, 0xd0, 0x01, 0xa8, - 0x00, 0xf0, 0x27, 0xff, 0x02, 0xe0, 0x01, 0xa8, - 0x00, 0xf0, 0x45, 0xff, 0x01, 0x34, 0x24, 0x06, - 0x24, 0x16, 0x06, 0x2c, 0xcf, 0xdb, 0x3c, 0x00, - 0xd0, 0x21, 0x04, 0x00, 0x04, 0x49, 0x02, 0x22, - 0x08, 0x78, 0x10, 0x43, 0x08, 0x70, 0x28, 0x70, - 0xfe, 0xbd, 0x00, 0x00, 0x04, 0x00, 0x07, 0x00, - 0xe0, 0x60, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, - 0x10, 0x00, 0x07, 0x00, 0xb0, 0xb5, 0x00, 0x20, - 0x15, 0x23, 0x14, 0x49, 0x01, 0x25, 0x42, 0x00, - 0x8d, 0x54, 0x52, 0x18, 0x01, 0x30, 0x0e, 0x28, - 0x53, 0x70, 0xf8, 0xd3, 0x0f, 0x48, 0x1c, 0x22, - 0x3c, 0x00, 0x0c, 0x22, 0x04, 0x00, 0x1c, 0x38, - 0xbe, 0xf7, 0x73, 0xf9, 0x0d, 0x48, 0x0e, 0x21, - 0x2a, 0x38, 0xbe, 0xf7, 0x1c, 0xf9, 0x0b, 0x49, - 0x00, 0x20, 0x08, 0x60, 0x0b, 0x4c, 0x2a, 0x21, - 0x20, 0x1c, 0xbe, 0xf7, 0x14, 0xf9, 0x25, 0x70, - 0x0e, 0x20, 0x60, 0x70, 0x17, 0x20, 0xa0, 0x70, - 0x07, 0x48, 0x53, 0x21, 0x01, 0x70, 0x45, 0x21, - 0x41, 0x70, 0x20, 0x21, 0x81, 0x70, 0xb0, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x48, 0x22, 0x04, 0x00, - 0xe6, 0x78, 0x01, 0x00, 0xe4, 0x62, 0x01, 0x00, - 0xeb, 0x62, 0x01, 0x00, 0xe8, 0x62, 0x01, 0x00, - 0x0c, 0x49, 0x0d, 0x48, 0x00, 0x22, 0x41, 0x60, - 0x0c, 0x49, 0x81, 0x60, 0x0c, 0x49, 0xc1, 0x60, - 0x0c, 0x49, 0x01, 0x61, 0x0c, 0x49, 0x41, 0x61, - 0x0c, 0x49, 0x82, 0x61, 0xc1, 0x61, 0x0c, 0x49, - 0x01, 0x62, 0x0c, 0x49, 0x41, 0x62, 0x0c, 0x49, - 0x81, 0x62, 0x0c, 0x49, 0x3c, 0x00, 0x84, 0x22, - 0x04, 0x00, 0xc1, 0x62, 0xc2, 0x63, 0x70, 0x47, - 0x00, 0x00, 0xc9, 0x75, 0x00, 0x00, 0x28, 0x7a, - 0x01, 0x00, 0xc1, 0x75, 0x00, 0x00, 0x81, 0x75, - 0x00, 0x00, 0x99, 0x75, 0x00, 0x00, 0xcd, 0x75, - 0x00, 0x00, 0x89, 0x75, 0x00, 0x00, 0x91, 0x75, - 0x00, 0x00, 0xb5, 0x75, 0x00, 0x00, 0x8d, 0x75, - 0x00, 0x00, 0xc5, 0x75, 0x00, 0x00, 0xb0, 0xb5, - 0x0e, 0x48, 0x0e, 0x49, 0x08, 0x60, 0x3c, 0x00, - 0xc0, 0x22, 0x04, 0x00, 0x08, 0x31, 0xc0, 0xf7, - 0x43, 0xfe, 0x0c, 0x49, 0x00, 0x25, 0x48, 0x60, - 0x0b, 0x48, 0x0a, 0x4c, 0x05, 0x60, 0x0b, 0x48, - 0x80, 0x3c, 0x05, 0x60, 0x10, 0x20, 0x20, 0x71, - 0xe0, 0x70, 0xa0, 0x71, 0x60, 0x71, 0x27, 0x20, - 0xc0, 0x43, 0xc3, 0xf7, 0xf7, 0xfb, 0x28, 0x20, - 0xc3, 0xf7, 0xfc, 0xfb, 0x25, 0x72, 0xb0, 0xbd, - 0xff, 0x3f, 0x00, 0x00, 0x2c, 0x7d, 0x01, 0x00, - 0x3c, 0x00, 0xfc, 0x22, 0x04, 0x00, 0x1c, 0x67, - 0x01, 0x00, 0x20, 0x67, 0x01, 0x00, 0x80, 0xb5, - 0x2c, 0x21, 0x01, 0x48, 0xbe, 0xf7, 0xc7, 0xf8, - 0x80, 0xbd, 0x3c, 0x7e, 0x01, 0x00, 0x80, 0xb5, - 0x38, 0x21, 0x01, 0x48, 0xbe, 0xf7, 0xbf, 0xf8, - 0x80, 0xbd, 0x68, 0x7e, 0x01, 0x00, 0x80, 0xb5, - 0x02, 0x21, 0x0e, 0x20, 0x02, 0x4a, 0xd1, 0xf7, - 0x0c, 0xfa, 0x80, 0xbd, 0x00, 0x00, 0x21, 0xe0, - 0x00, 0x00, 0x3c, 0x00, 0x38, 0x23, 0x04, 0x00, - 0x70, 0x47, 0x00, 0x00, 0xf0, 0xb5, 0x85, 0xb0, - 0x00, 0x27, 0x00, 0xab, 0x2f, 0x4e, 0x1f, 0x81, - 0x00, 0x25, 0x00, 0x24, 0x28, 0x1c, 0xd6, 0xf7, - 0xa1, 0xfb, 0x02, 0x2d, 0x03, 0xd1, 0xd6, 0xf7, - 0xf5, 0xfa, 0x00, 0x28, 0x0c, 0xd0, 0x01, 0x24, - 0x01, 0x2d, 0x03, 0xd1, 0x07, 0x20, 0x00, 0xab, - 0x18, 0x71, 0x01, 0xe0, 0x00, 0xab, 0x1f, 0x71, - 0x00, 0xab, 0x18, 0x79, 0x3c, 0x00, 0x74, 0x23, - 0x04, 0x00, 0xd6, 0xf7, 0x08, 0xfc, 0x00, 0x2c, - 0x39, 0xd0, 0x08, 0x21, 0x03, 0xa8, 0xd6, 0xf7, - 0xf2, 0xfa, 0x00, 0xab, 0x18, 0x7b, 0xfe, 0x28, - 0x31, 0xd1, 0x58, 0x7b, 0x01, 0x28, 0x2a, 0xd1, - 0x02, 0x21, 0x02, 0xa8, 0xd6, 0xf7, 0xe7, 0xfa, - 0x00, 0xab, 0x18, 0x89, 0x00, 0x28, 0x26, 0xd0, - 0x18, 0x89, 0x18, 0x49, 0x88, 0x42, 0x22, 0xd0, - 0x19, 0x89, 0x00, 0x20, 0xbf, 0xf7, 0x3c, 0x00, - 0xb0, 0x23, 0x04, 0x00, 0x13, 0xf9, 0x04, 0x1c, - 0x00, 0x69, 0x00, 0xab, 0x19, 0x89, 0xd6, 0xf7, - 0xd5, 0xfa, 0x20, 0x68, 0x00, 0xab, 0x1a, 0x89, - 0x01, 0x1c, 0x08, 0x31, 0x08, 0x3a, 0xcb, 0xf7, - 0xa1, 0xf9, 0x00, 0x28, 0x06, 0xd0, 0x02, 0x28, - 0x04, 0xd0, 0x02, 0x21, 0x94, 0x20, 0x37, 0x60, - 0xbe, 0xf7, 0x62, 0xff, 0x20, 0x1c, 0xbf, 0xf7, - 0xc7, 0xf8, 0xd4, 0xe7, 0x01, 0x21, 0x94, 0x20, - 0x3c, 0x00, 0xec, 0x23, 0x04, 0x00, 0xbe, 0xf7, - 0x5a, 0xff, 0xd5, 0xf7, 0x26, 0xff, 0x01, 0x35, - 0x2d, 0x06, 0x2d, 0x0e, 0x04, 0x2d, 0xa5, 0xd3, - 0x05, 0xb0, 0xf0, 0xbd, 0x00, 0x00, 0x58, 0x57, - 0x01, 0x00, 0xff, 0xff, 0x00, 0x00, 0x0a, 0x48, - 0x00, 0x21, 0x02, 0x1c, 0x18, 0x32, 0x80, 0xb5, - 0x09, 0x4b, 0x02, 0xe0, 0x01, 0x60, 0x83, 0x80, - 0x08, 0x30, 0x82, 0x42, 0xfa, 0xd1, 0x04, 0x48, - 0x6c, 0x21, 0x3c, 0x00, 0x28, 0x24, 0x04, 0x00, - 0x6c, 0x38, 0xbe, 0xf7, 0x37, 0xf8, 0x04, 0x49, - 0x02, 0x20, 0xc7, 0xf7, 0xd1, 0xff, 0x80, 0xbd, - 0x7c, 0x79, 0x01, 0x00, 0xfc, 0x05, 0x00, 0x00, - 0x9d, 0x75, 0x00, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x26, 0x20, 0x0d, 0x4a, 0xd1, 0xf7, 0x7c, 0xf9, - 0x0c, 0x48, 0xc8, 0xf7, 0x73, 0xff, 0x0c, 0x48, - 0xc8, 0xf7, 0x76, 0xff, 0x0b, 0x49, 0x10, 0x20, - 0xcf, 0xf7, 0x94, 0xff, 0x3c, 0x00, 0x64, 0x24, - 0x04, 0x00, 0x0a, 0x49, 0x0c, 0x20, 0xcf, 0xf7, - 0x90, 0xff, 0x09, 0x49, 0x00, 0x20, 0xc7, 0xf7, - 0xb2, 0xff, 0xcc, 0xf7, 0x6e, 0xff, 0x07, 0x49, - 0x08, 0x60, 0x80, 0xbd, 0x00, 0x00, 0x9d, 0xa6, - 0x00, 0x00, 0xa9, 0xa4, 0x00, 0x00, 0x81, 0xa4, - 0x00, 0x00, 0x31, 0xa7, 0x00, 0x00, 0xb9, 0x6d, - 0x00, 0x00, 0xbd, 0xa6, 0x00, 0x00, 0x0c, 0x79, - 0x01, 0x00, 0x02, 0x49, 0x08, 0x78, 0x3c, 0x00, - 0xa0, 0x24, 0x04, 0x00, 0x40, 0x08, 0x40, 0x00, - 0x08, 0x70, 0x70, 0x47, 0x58, 0x00, 0x07, 0x00, - 0x00, 0x21, 0x08, 0x48, 0x80, 0xb5, 0x41, 0x61, - 0x81, 0x61, 0x01, 0x70, 0x41, 0x70, 0x41, 0x60, - 0x81, 0x60, 0x14, 0x22, 0xc2, 0x60, 0x01, 0x61, - 0x42, 0x62, 0xc1, 0x61, 0xff, 0xf7, 0x04, 0xf8, - 0x80, 0xbd, 0x00, 0x00, 0x1c, 0x75, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x1d, 0x20, 0x04, 0x4a, - 0x3c, 0x00, 0xdc, 0x24, 0x04, 0x00, 0xd1, 0xf7, - 0x34, 0xf9, 0x03, 0x49, 0x08, 0x20, 0xcf, 0xf7, - 0x52, 0xff, 0x80, 0xbd, 0x00, 0x00, 0x11, 0xe3, - 0x00, 0x00, 0x09, 0xe4, 0x00, 0x00, 0x80, 0xb5, - 0x01, 0x21, 0x25, 0x20, 0x0a, 0x4a, 0xd1, 0xf7, - 0x24, 0xf9, 0xcc, 0xf7, 0x28, 0xff, 0x08, 0x49, - 0x08, 0x62, 0x08, 0x49, 0x01, 0x20, 0xcf, 0xf7, - 0x3e, 0xff, 0x07, 0x49, 0x02, 0x20, 0xcf, 0xf7, - 0x3a, 0xff, 0x3c, 0x00, 0x18, 0x25, 0x04, 0x00, - 0xfe, 0xf7, 0xe6, 0xff, 0x05, 0x48, 0xc1, 0xf7, - 0xe1, 0xf9, 0x80, 0xbd, 0x29, 0xa9, 0x00, 0x00, - 0x1c, 0x75, 0x01, 0x00, 0xa1, 0xaa, 0x00, 0x00, - 0x2d, 0x19, 0x00, 0x00, 0x45, 0xa8, 0x00, 0x00, - 0x10, 0xb5, 0x06, 0x4c, 0x0c, 0x22, 0x22, 0x70, - 0xa0, 0x18, 0x05, 0x49, 0xbd, 0xf7, 0xd8, 0xff, - 0x00, 0x20, 0xc8, 0xf7, 0x85, 0xfb, 0x01, 0x20, - 0xa0, 0x60, 0x10, 0xbd, 0x3c, 0x00, 0x54, 0x25, - 0x04, 0x00, 0xa4, 0x69, 0x01, 0x00, 0x90, 0x57, - 0x01, 0x00, 0xb0, 0xb5, 0x1f, 0x4c, 0x00, 0x25, - 0x65, 0x80, 0x01, 0x20, 0x20, 0x70, 0x0a, 0x20, - 0xa0, 0x80, 0x90, 0x20, 0xe0, 0x80, 0x30, 0x20, - 0x20, 0x81, 0x90, 0x20, 0x60, 0x81, 0x30, 0x20, - 0xa0, 0x81, 0x17, 0x48, 0x04, 0x22, 0x07, 0x21, - 0x12, 0x30, 0xbe, 0xf7, 0x4c, 0xf8, 0x14, 0x48, - 0x04, 0x22, 0x05, 0x21, 0x16, 0x30, 0x3c, 0x00, - 0x90, 0x25, 0x04, 0x00, 0xbe, 0xf7, 0x46, 0xf8, - 0x12, 0x48, 0x11, 0x4a, 0xe0, 0x81, 0x20, 0x82, - 0x70, 0x32, 0x15, 0x70, 0x55, 0x70, 0x00, 0x20, - 0x3c, 0x23, 0x41, 0x01, 0x43, 0x43, 0x89, 0x18, - 0xf4, 0x31, 0x9b, 0x18, 0x01, 0x30, 0x04, 0x28, - 0x59, 0x60, 0xf5, 0xdb, 0x08, 0x48, 0x06, 0x22, - 0x1a, 0x30, 0x09, 0x49, 0xbd, 0xf7, 0x9a, 0xff, - 0x07, 0x48, 0x05, 0x4c, 0x0c, 0x30, 0x0f, 0xc8, - 0x3c, 0x00, 0xcc, 0x25, 0x04, 0x00, 0x20, 0x34, - 0x0f, 0xc4, 0x20, 0x21, 0x20, 0x1c, 0xbd, 0xf7, - 0x62, 0xff, 0xb0, 0xbd, 0x00, 0x00, 0xf8, 0x60, - 0x01, 0x00, 0x2c, 0x09, 0x00, 0x00, 0x58, 0x40, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x07, 0x48, - 0x10, 0xb5, 0x00, 0x68, 0x00, 0x28, 0x08, 0xd0, - 0x06, 0x48, 0xbe, 0xf7, 0x9c, 0xfe, 0x04, 0x1c, - 0xff, 0xf7, 0x9d, 0xfe, 0x20, 0x1c, 0xbe, 0xf7, - 0x96, 0xfe, 0x3c, 0x00, 0x08, 0x26, 0x04, 0x00, - 0x10, 0xbd, 0x00, 0x00, 0x58, 0x57, 0x01, 0x00, - 0xb5, 0xad, 0x00, 0x00, 0x04, 0x49, 0x80, 0xb5, - 0x00, 0x20, 0x88, 0x70, 0x02, 0x21, 0x20, 0x20, - 0x02, 0x4a, 0xd1, 0xf7, 0x91, 0xf8, 0x80, 0xbd, - 0xb4, 0x79, 0x01, 0x00, 0x25, 0xb5, 0x00, 0x00, - 0x80, 0xb5, 0xcc, 0xf7, 0x8f, 0xfe, 0x01, 0x49, - 0x48, 0x61, 0x80, 0xbd, 0xb4, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x18, 0x21, 0x3c, 0x00, 0x44, 0x26, - 0x04, 0x00, 0x14, 0x48, 0xbd, 0xf7, 0x29, 0xff, - 0x14, 0x48, 0x01, 0x21, 0x01, 0x70, 0x00, 0x21, - 0xc1, 0x60, 0x41, 0x70, 0x01, 0x61, 0x00, 0xf0, - 0x02, 0xf9, 0x00, 0xf0, 0xaa, 0xf8, 0x00, 0xf0, - 0x1e, 0xf8, 0x00, 0xf0, 0xba, 0xf9, 0x00, 0xf0, - 0xcc, 0xf9, 0x00, 0xf0, 0x20, 0xf9, 0x00, 0xf0, - 0x64, 0xf9, 0x00, 0xf0, 0xce, 0xf9, 0x00, 0xf0, - 0xfc, 0xf8, 0x00, 0xf0, 0x82, 0xf9, 0x3c, 0x00, - 0x80, 0x26, 0x04, 0x00, 0x00, 0xf0, 0x28, 0xf8, - 0x00, 0xf0, 0x6e, 0xf8, 0x00, 0xf0, 0x4a, 0xf8, - 0xff, 0xf7, 0xc2, 0xff, 0x00, 0xf0, 0x72, 0xf9, - 0x80, 0xbd, 0x00, 0x00, 0x40, 0x7c, 0x01, 0x00, - 0x18, 0x63, 0x01, 0x00, 0xb0, 0xb5, 0x08, 0x4c, - 0x00, 0x25, 0x08, 0x48, 0x25, 0x77, 0x20, 0x60, - 0xce, 0xf7, 0xf0, 0xfd, 0x00, 0x20, 0xe5, 0x62, - 0xd0, 0xf7, 0xd0, 0xfa, 0x21, 0x1f, 0x08, 0x80, - 0x3c, 0x00, 0xbc, 0x26, 0x04, 0x00, 0xd0, 0xf7, - 0x6c, 0xfb, 0xb0, 0xbd, 0x00, 0x00, 0xd4, 0x79, - 0x01, 0x00, 0x95, 0x75, 0x00, 0x00, 0x80, 0xb5, - 0xcc, 0xf7, 0xc1, 0xfc, 0x80, 0xbd, 0x05, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x08, 0x70, 0x48, 0x70, - 0x03, 0x48, 0x04, 0x49, 0x03, 0x4a, 0x08, 0x30, - 0xcc, 0xf7, 0x27, 0xfe, 0x80, 0xbd, 0x2c, 0x63, - 0x01, 0x00, 0xed, 0xbc, 0x00, 0x00, 0x4d, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0xf8, 0x26, 0x04, 0x00, - 0x80, 0xb5, 0xcc, 0xf7, 0x2b, 0xfe, 0x05, 0x49, - 0x48, 0x60, 0x01, 0x1c, 0x04, 0x48, 0xcc, 0xf7, - 0x4b, 0xfe, 0x04, 0x49, 0x03, 0x20, 0xcf, 0xf7, - 0x3d, 0xfe, 0x80, 0xbd, 0x2c, 0x63, 0x01, 0x00, - 0xc4, 0x60, 0x01, 0x00, 0xc1, 0xbc, 0x00, 0x00, - 0x04, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x08, 0xc0, 0x02, 0x49, 0x10, 0x38, - 0x01, 0x60, 0x70, 0x47, 0x3c, 0x00, 0x34, 0x27, - 0x04, 0x00, 0x04, 0x7a, 0x01, 0x00, 0x1c, 0xe6, - 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x09, 0xfe, - 0x05, 0x49, 0x05, 0x4a, 0x48, 0x60, 0x02, 0x21, - 0x24, 0x20, 0xd0, 0xf7, 0xfc, 0xff, 0x03, 0x48, - 0xc9, 0xf7, 0x6b, 0xfd, 0x80, 0xbd, 0x04, 0x7a, - 0x01, 0x00, 0x69, 0xbe, 0x00, 0x00, 0x71, 0xeb, - 0x00, 0x00, 0x10, 0xb5, 0x04, 0x4c, 0x14, 0x21, - 0x20, 0x1c, 0xbd, 0xf7, 0x96, 0xfe, 0x3c, 0x00, - 0x70, 0x27, 0x04, 0x00, 0x02, 0x48, 0x20, 0x60, - 0x10, 0xbd, 0x00, 0x00, 0x14, 0x7a, 0x01, 0x00, - 0xec, 0xe5, 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, - 0xe7, 0xfd, 0x07, 0x49, 0x07, 0x4a, 0x48, 0x60, - 0x02, 0x21, 0x1f, 0x20, 0xd0, 0xf7, 0xda, 0xff, - 0x05, 0x49, 0x01, 0x20, 0x08, 0x60, 0x05, 0x49, - 0x0c, 0x20, 0xcf, 0xf7, 0xf5, 0xfd, 0x80, 0xbd, - 0x14, 0x7a, 0x01, 0x00, 0xd5, 0xbf, 0x00, 0x00, - 0x3c, 0x00, 0xac, 0x27, 0x04, 0x00, 0x80, 0x5a, - 0x01, 0x00, 0x85, 0xff, 0x00, 0x00, 0x80, 0xb5, - 0xff, 0xf7, 0x4f, 0xfd, 0x01, 0x21, 0x21, 0x20, - 0x02, 0x4a, 0xd0, 0xf7, 0xc2, 0xff, 0x80, 0xbd, - 0x00, 0x00, 0xc9, 0xc1, 0x00, 0x00, 0x80, 0xb5, - 0xcc, 0xf7, 0xc1, 0xfd, 0x02, 0x49, 0x08, 0x63, - 0xc9, 0xf7, 0x57, 0xfd, 0x80, 0xbd, 0x28, 0x7a, - 0x01, 0x00, 0x10, 0xb5, 0xcc, 0xf7, 0xb7, 0xfd, - 0x16, 0x4c, 0x3c, 0x00, 0xe8, 0x27, 0x04, 0x00, - 0x20, 0x61, 0xcc, 0xf7, 0xb3, 0xfd, 0x60, 0x61, - 0x14, 0x48, 0x15, 0x49, 0x08, 0x60, 0x16, 0x49, - 0x14, 0x48, 0x08, 0x60, 0xcc, 0xf7, 0xaa, 0xfd, - 0x14, 0x49, 0x08, 0x60, 0x00, 0xf0, 0x34, 0xf8, - 0xff, 0xf7, 0xe0, 0xff, 0xff, 0xf7, 0x5e, 0xff, - 0x00, 0xf0, 0x04, 0xf9, 0x00, 0xf0, 0x8e, 0xf8, - 0xff, 0xf7, 0x6e, 0xff, 0xff, 0xf7, 0xb0, 0xff, - 0xff, 0xf7, 0x8c, 0xff, 0x3c, 0x00, 0x24, 0x28, - 0x04, 0x00, 0xff, 0xf7, 0x04, 0xff, 0x00, 0xf0, - 0xaa, 0xf8, 0x0a, 0x48, 0xbf, 0xf7, 0xbd, 0xff, - 0xc9, 0xf7, 0xbb, 0xfd, 0x09, 0x49, 0x00, 0x20, - 0xcf, 0xf7, 0xa7, 0xfd, 0x10, 0xbd, 0x40, 0x7c, - 0x01, 0x00, 0x7d, 0xb7, 0x00, 0x00, 0x18, 0x7e, - 0x01, 0x00, 0xbd, 0xb8, 0x00, 0x00, 0x1c, 0x7e, - 0x01, 0x00, 0x20, 0x7e, 0x01, 0x00, 0xb9, 0xba, - 0x00, 0x00, 0x81, 0x24, 0x01, 0x00, 0x3c, 0x00, - 0x60, 0x28, 0x04, 0x00, 0x80, 0xb5, 0x38, 0x21, - 0x01, 0x48, 0xbd, 0xf7, 0x19, 0xfe, 0x80, 0xbd, - 0x90, 0x5c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0xb0, 0xb5, 0x0c, 0x4c, 0x0b, 0x4d, 0x00, 0x20, - 0x0c, 0x34, 0x60, 0x60, 0x25, 0x60, 0xe0, 0x60, - 0x0a, 0x20, 0x20, 0x81, 0x28, 0x1c, 0xc8, 0xf7, - 0x3f, 0xfd, 0x28, 0x1c, 0xc8, 0xf7, 0x3a, 0xfd, - 0x08, 0x3d, 0x68, 0x60, 0x04, 0x48, 0xc9, 0xf7, - 0x3c, 0x00, 0x9c, 0x28, 0x04, 0x00, 0x1b, 0xfd, - 0x20, 0x1c, 0xc0, 0xf7, 0x6e, 0xfa, 0x28, 0x80, - 0xb0, 0xbd, 0xb8, 0x7a, 0x01, 0x00, 0xd5, 0x33, - 0x01, 0x00, 0xf8, 0xb5, 0x1f, 0x4e, 0x1d, 0x4c, - 0x00, 0x20, 0x0c, 0x21, 0x41, 0x43, 0x82, 0x00, - 0x01, 0x30, 0x09, 0x19, 0x08, 0x31, 0x00, 0x06, - 0x00, 0x0e, 0x04, 0x28, 0xb1, 0x50, 0xf4, 0xd3, - 0x18, 0x48, 0x0c, 0x38, 0x30, 0x61, 0xce, 0xf7, - 0xf4, 0xf9, 0x3c, 0x00, 0xd8, 0x28, 0x04, 0x00, - 0x14, 0x4c, 0xa0, 0x78, 0x00, 0x09, 0x00, 0x01, - 0xa0, 0x70, 0x00, 0x27, 0xe7, 0x70, 0x67, 0x70, - 0x00, 0x24, 0xa5, 0x00, 0x70, 0x59, 0x07, 0x70, - 0x20, 0x1c, 0xbe, 0xf7, 0x53, 0xf9, 0x71, 0x59, - 0x08, 0x71, 0x00, 0x21, 0x20, 0x1c, 0xce, 0xf7, - 0x7d, 0xf9, 0x01, 0x34, 0x24, 0x06, 0x24, 0x0e, - 0x04, 0x2c, 0xee, 0xd3, 0x07, 0x4c, 0x20, 0x78, - 0x00, 0x09, 0x00, 0x01, 0x3c, 0x00, 0x14, 0x29, - 0x04, 0x00, 0x0a, 0x30, 0x20, 0x70, 0x20, 0x78, - 0xf0, 0x21, 0x88, 0x43, 0x30, 0x30, 0x20, 0x70, - 0xa0, 0x78, 0x0f, 0x21, 0x08, 0x43, 0xa0, 0x70, - 0xf8, 0xbd, 0x00, 0x50, 0x07, 0x00, 0x10, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x9f, 0xfb, - 0x80, 0xbd, 0xb0, 0xb5, 0x0c, 0x4c, 0x0b, 0x4d, - 0x00, 0x20, 0x0c, 0x34, 0x60, 0x60, 0x25, 0x60, - 0xe0, 0x60, 0x0a, 0x20, 0x20, 0x81, 0x3c, 0x00, - 0x50, 0x29, 0x04, 0x00, 0x28, 0x1c, 0xc8, 0xf7, - 0xe1, 0xfc, 0x28, 0x1c, 0xc8, 0xf7, 0xd4, 0xfc, - 0x08, 0x3d, 0x68, 0x60, 0x20, 0x1c, 0xc0, 0xf7, - 0x0d, 0xfa, 0x28, 0x80, 0x02, 0x48, 0xc9, 0xf7, - 0x9b, 0xfc, 0xb0, 0xbd, 0x2c, 0x7b, 0x01, 0x00, - 0x49, 0x00, 0x01, 0x00, 0x80, 0xb5, 0xca, 0xf7, - 0x2f, 0xf8, 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, - 0xb0, 0xb5, 0x12, 0x4d, 0x3c, 0x21, 0x28, 0x1c, - 0x3c, 0x00, 0x8c, 0x29, 0x04, 0x00, 0xbd, 0xf7, - 0x86, 0xfd, 0x0f, 0x48, 0x28, 0x21, 0x3c, 0x30, - 0xbd, 0xf7, 0x81, 0xfd, 0x0d, 0x48, 0x00, 0x21, - 0x14, 0x38, 0x01, 0x61, 0xc1, 0x60, 0xff, 0x21, - 0x01, 0x70, 0x41, 0x70, 0x0a, 0x49, 0x0a, 0x4a, - 0x41, 0x60, 0x01, 0x21, 0x0c, 0x20, 0xd0, 0xf7, - 0xc8, 0xfe, 0x2c, 0x1c, 0x30, 0x34, 0x0c, 0x3d, - 0x00, 0x20, 0xd0, 0xf7, 0x4a, 0xf9, 0x20, 0x80, - 0x0c, 0x3c, 0x3c, 0x00, 0xc8, 0x29, 0x04, 0x00, - 0xac, 0x42, 0xf8, 0xd1, 0xb0, 0xbd, 0x00, 0x00, - 0x60, 0x7b, 0x01, 0x00, 0x20, 0xa1, 0x07, 0x00, - 0x35, 0xcd, 0x00, 0x00, 0x08, 0x49, 0x00, 0x20, - 0x0c, 0x22, 0x42, 0x43, 0x52, 0x18, 0x10, 0x71, - 0x01, 0x30, 0x05, 0x28, 0xf8, 0xdb, 0x04, 0x48, - 0x00, 0x21, 0x08, 0x38, 0x01, 0x70, 0x41, 0x60, - 0xff, 0x21, 0x41, 0x70, 0x70, 0x47, 0x00, 0x00, - 0x74, 0x7a, 0x01, 0x00, 0x3c, 0x00, 0x04, 0x2a, - 0x04, 0x00, 0x80, 0xb5, 0x78, 0x21, 0x01, 0x48, - 0xbd, 0xf7, 0x47, 0xfd, 0x80, 0xbd, 0xc4, 0x7b, - 0x01, 0x00, 0x80, 0xb5, 0xca, 0xf7, 0x97, 0xfa, - 0x80, 0xbd, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, - 0x0b, 0x4c, 0xff, 0x21, 0x05, 0x31, 0x20, 0x1c, - 0xbd, 0xf7, 0x37, 0xfd, 0x09, 0x48, 0xf0, 0x21, - 0x08, 0x51, 0x20, 0x1c, 0x40, 0x30, 0xc5, 0xf7, - 0x8e, 0xf9, 0x6c, 0x21, 0x06, 0x48, 0x3c, 0x00, - 0x40, 0x2a, 0x04, 0x00, 0xbd, 0xf7, 0x2c, 0xfd, - 0x04, 0x48, 0xc0, 0x21, 0x6c, 0x30, 0xbd, 0xf7, - 0x27, 0xfd, 0x10, 0xbd, 0xc4, 0x69, 0x01, 0x00, - 0xb0, 0xd9, 0x01, 0x00, 0xc8, 0x6a, 0x01, 0x00, - 0xb0, 0xb5, 0x0b, 0x4d, 0x00, 0x24, 0x1c, 0x20, - 0x60, 0x43, 0x40, 0x19, 0x6c, 0x30, 0xc3, 0xf7, - 0x0f, 0xfe, 0x01, 0x34, 0x04, 0x2c, 0xf6, 0xdb, - 0xcc, 0xf7, 0x6e, 0xfc, 0xa8, 0x63, 0xc7, 0xf7, - 0x3c, 0x00, 0x7c, 0x2a, 0x04, 0x00, 0x75, 0xf9, - 0x04, 0x48, 0xc9, 0xf7, 0x1c, 0xfc, 0x03, 0x48, - 0xcf, 0xf7, 0x03, 0xfa, 0xb0, 0xbd, 0xc4, 0x69, - 0x01, 0x00, 0xfd, 0x80, 0x00, 0x00, 0xe1, 0x22, - 0x01, 0x00, 0x10, 0xb5, 0x05, 0x4c, 0x00, 0x20, - 0x20, 0x80, 0x03, 0x48, 0x06, 0x21, 0x08, 0x30, - 0xbd, 0xf7, 0xd5, 0xfc, 0x14, 0x20, 0x60, 0x60, - 0x10, 0xbd, 0x98, 0x7c, 0x01, 0x00, 0x10, 0xb5, - 0x08, 0x4c, 0x3c, 0x00, 0xb8, 0x2a, 0x04, 0x00, - 0x00, 0x20, 0x20, 0x80, 0x60, 0x80, 0x06, 0x48, - 0x06, 0x21, 0x0c, 0x30, 0xbd, 0xf7, 0xc6, 0xfc, - 0x03, 0x48, 0x06, 0x21, 0x12, 0x30, 0xbd, 0xf7, - 0xc1, 0xfc, 0x14, 0x20, 0xa0, 0x60, 0x10, 0xbd, - 0x58, 0x7c, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x0d, 0x20, 0x05, 0x4a, - 0xd0, 0xf7, 0x2e, 0xfe, 0x04, 0x48, 0xc8, 0xf7, - 0x1f, 0xfc, 0x04, 0x48, 0x3c, 0x00, 0xf4, 0x2a, - 0x04, 0x00, 0xca, 0xf7, 0x44, 0xfc, 0x80, 0xbd, - 0x00, 0x00, 0x31, 0xd4, 0x00, 0x00, 0x51, 0xb1, - 0x00, 0x00, 0x09, 0xb1, 0x00, 0x00, 0x08, 0x49, - 0x80, 0xb5, 0x00, 0x20, 0x08, 0x60, 0xff, 0xf7, - 0xd0, 0xff, 0xff, 0xf7, 0xc0, 0xff, 0xff, 0xf7, - 0x04, 0xfc, 0x00, 0xf0, 0x4a, 0xf8, 0xff, 0xf7, - 0x0a, 0xfc, 0x00, 0xf0, 0x3c, 0xf8, 0x80, 0xbd, - 0x00, 0x00, 0xe4, 0x65, 0x01, 0x00, 0x3c, 0x00, - 0x30, 0x2b, 0x04, 0x00, 0x80, 0xb5, 0x00, 0xf0, - 0x29, 0xf8, 0x00, 0xf0, 0x1b, 0xf8, 0x00, 0xf0, - 0x51, 0xf8, 0x00, 0xf0, 0x31, 0xf8, 0x80, 0xbd, - 0x70, 0x47, 0x00, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x80, 0xb5, 0xff, 0x21, 0x89, 0x31, 0x02, 0x48, - 0xbd, 0xf7, 0xa2, 0xfc, 0x80, 0xbd, 0x00, 0x00, - 0xdc, 0x71, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x49, - 0x08, 0x20, 0xcf, 0xf7, 0x11, 0xfc, 0x80, 0xbd, - 0x3c, 0x00, 0x6c, 0x2b, 0x04, 0x00, 0x59, 0xd9, - 0x00, 0x00, 0x80, 0xb5, 0x03, 0x48, 0xcf, 0xf7, - 0x4c, 0xf9, 0x02, 0x49, 0x48, 0x80, 0x80, 0xbd, - 0x00, 0x00, 0x8d, 0x1f, 0x00, 0x00, 0x98, 0x7c, - 0x01, 0x00, 0x80, 0xb5, 0x03, 0x48, 0xcf, 0xf7, - 0x40, 0xf9, 0x02, 0x49, 0x88, 0x80, 0x80, 0xbd, - 0x00, 0x00, 0xd5, 0x23, 0x00, 0x00, 0x58, 0x7c, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x80, 0xb5, - 0x02, 0x48, 0x3c, 0x00, 0xa8, 0x2b, 0x04, 0x00, - 0xca, 0xf7, 0xe4, 0xfb, 0x80, 0xbd, 0x00, 0x00, - 0x71, 0xe0, 0x00, 0x00, 0x80, 0xb5, 0xcc, 0xf7, - 0xa5, 0xfb, 0x02, 0x21, 0x0f, 0x20, 0x06, 0x4a, - 0xd0, 0xf7, 0xc2, 0xfd, 0x14, 0x21, 0x05, 0x48, - 0xbd, 0xf7, 0x68, 0xfc, 0x03, 0x48, 0x78, 0x21, - 0x14, 0x30, 0xbd, 0xf7, 0x63, 0xfc, 0x80, 0xbd, - 0x35, 0xe2, 0x00, 0x00, 0x84, 0x66, 0x01, 0x00, - 0x80, 0xb5, 0xcc, 0xf7, 0x3c, 0x00, 0xe4, 0x2b, - 0x04, 0x00, 0xb7, 0xfb, 0x05, 0x49, 0x08, 0x61, - 0x05, 0x49, 0x0e, 0x20, 0xcf, 0xf7, 0xcd, 0xfb, - 0x04, 0x49, 0x08, 0x20, 0xcf, 0xf7, 0xc9, 0xfb, - 0x80, 0xbd, 0xec, 0x65, 0x01, 0x00, 0x01, 0x02, - 0x01, 0x00, 0xc1, 0x2e, 0x00, 0x00, 0x01, 0x49, - 0x00, 0x20, 0x08, 0x70, 0x70, 0x47, 0x40, 0xd9, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x01, 0x49, - 0x00, 0x20, 0x08, 0x70, 0x70, 0x47, 0x3c, 0x00, - 0x20, 0x2c, 0x04, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x07, 0x48, 0xc8, 0xf7, 0xf2, 0xff, - 0x06, 0x49, 0x48, 0x60, 0x06, 0x48, 0xc0, 0xf7, - 0x07, 0xfb, 0x06, 0x48, 0xc0, 0xf7, 0x86, 0xfb, - 0x05, 0x48, 0xc9, 0xf7, 0xa3, 0xfa, 0x80, 0xbd, - 0xa9, 0xe4, 0x00, 0x00, 0xa0, 0x79, 0x01, 0x00, - 0xb9, 0xe4, 0x00, 0x00, 0x85, 0x2e, 0x00, 0x00, - 0x81, 0xe4, 0x00, 0x00, 0x07, 0x48, 0x80, 0xb5, - 0x3c, 0x00, 0x5c, 0x2c, 0x04, 0x00, 0x00, 0x21, - 0x00, 0x22, 0x00, 0x23, 0x0e, 0xc0, 0x08, 0xc0, - 0x10, 0x38, 0xc8, 0x21, 0x01, 0x60, 0x00, 0x21, - 0x0c, 0x38, 0x02, 0x4a, 0xcc, 0xf7, 0x61, 0xfb, - 0x80, 0xbd, 0xd0, 0x60, 0x01, 0x00, 0xfd, 0xe5, - 0x00, 0x00, 0x80, 0xb5, 0xcc, 0xf7, 0x67, 0xfb, - 0x04, 0x49, 0x08, 0x60, 0x01, 0x1c, 0x02, 0x48, - 0x04, 0x30, 0xcc, 0xf7, 0x86, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0x3c, 0x00, 0x98, 0x2c, 0x04, 0x00, - 0xc0, 0x60, 0x01, 0x00, 0x09, 0x48, 0x80, 0xb5, - 0x0a, 0x21, 0x01, 0x70, 0x41, 0x70, 0x08, 0x49, - 0x08, 0x4a, 0x81, 0x60, 0x00, 0x21, 0xc1, 0x60, - 0x52, 0x79, 0x82, 0x70, 0x01, 0x61, 0x41, 0x61, - 0x28, 0x21, 0x18, 0x30, 0xbd, 0xf7, 0xee, 0xfb, - 0x80, 0xbd, 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, - 0xa0, 0x86, 0x01, 0x00, 0x0c, 0x5a, 0x01, 0x00, - 0xf8, 0xb5, 0x0f, 0x49, 0x3c, 0x00, 0xd4, 0x2c, - 0x04, 0x00, 0x0f, 0x48, 0x0d, 0x88, 0x4f, 0x88, - 0x06, 0x79, 0x00, 0x24, 0x30, 0x1b, 0x68, 0x43, - 0x68, 0x23, 0x0c, 0x49, 0x58, 0x43, 0x41, 0x18, - 0x7d, 0x20, 0xc0, 0x00, 0xbd, 0xf7, 0x0f, 0xfd, - 0x61, 0x00, 0x09, 0x4a, 0xa6, 0x42, 0x50, 0x52, - 0x00, 0xd1, 0x3d, 0x1c, 0x01, 0x34, 0x24, 0x06, - 0x24, 0x0e, 0x10, 0x2c, 0xea, 0xd3, 0x05, 0x49, - 0x01, 0x20, 0x08, 0x61, 0xf8, 0xbd, 0x3c, 0x00, - 0x10, 0x2d, 0x04, 0x00, 0xf6, 0x59, 0x01, 0x00, - 0x0c, 0x5a, 0x01, 0x00, 0x34, 0x44, 0x0f, 0x00, - 0x12, 0x5a, 0x01, 0x00, 0x7c, 0x78, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0xf0, 0xe7, 0xfa, 0x02, 0x49, - 0x01, 0x20, 0x08, 0x61, 0x80, 0xbd, 0x00, 0x00, - 0x7c, 0x78, 0x01, 0x00, 0x10, 0xb5, 0x04, 0x1c, - 0x08, 0x1c, 0x0f, 0x49, 0x49, 0x79, 0x00, 0x29, - 0x01, 0xd1, 0x0e, 0x4b, 0x00, 0xe0, 0x0e, 0x4b, - 0x3c, 0x00, 0x4c, 0x2d, 0x04, 0x00, 0x00, 0x2c, - 0x07, 0xd0, 0x04, 0x21, 0x11, 0x80, 0x0a, 0x1c, - 0x01, 0x24, 0x19, 0x1c, 0xbd, 0xf7, 0xcd, 0xfb, - 0x0a, 0xe0, 0x01, 0x24, 0x01, 0x1c, 0x18, 0x1c, - 0x12, 0x88, 0xbd, 0xf7, 0xc6, 0xfb, 0x00, 0xf0, - 0xc4, 0xfa, 0x05, 0x49, 0x01, 0x20, 0x08, 0x61, - 0x20, 0x1c, 0x10, 0xbd, 0x00, 0x00, 0x0c, 0x5a, - 0x01, 0x00, 0xfe, 0x59, 0x01, 0x00, 0xfa, 0x59, - 0x01, 0x00, 0x3c, 0x00, 0x88, 0x2d, 0x04, 0x00, - 0x7c, 0x78, 0x01, 0x00, 0x0d, 0x48, 0x8c, 0xb5, - 0xc1, 0x88, 0x00, 0xab, 0x0c, 0x4a, 0x99, 0x80, - 0x01, 0x89, 0x04, 0x20, 0xd9, 0x80, 0x18, 0x80, - 0x02, 0x21, 0x13, 0x20, 0xd0, 0xf7, 0xd0, 0xfc, - 0x00, 0xf0, 0xa6, 0xfa, 0x07, 0x49, 0x01, 0x20, - 0x08, 0x61, 0xff, 0xf7, 0x8d, 0xff, 0x6a, 0x46, - 0x01, 0xa9, 0x00, 0x20, 0xff, 0xf7, 0xbc, 0xff, - 0x8c, 0xbd, 0x00, 0x00, 0x3c, 0x00, 0xc4, 0x2d, - 0x04, 0x00, 0xf4, 0x59, 0x01, 0x00, 0x95, 0xf9, - 0x00, 0x00, 0x7c, 0x78, 0x01, 0x00, 0xf8, 0xb5, - 0x13, 0x4e, 0x01, 0x25, 0xb5, 0x70, 0x05, 0x20, - 0xf0, 0x70, 0x11, 0x49, 0x10, 0x48, 0x0e, 0xc9, - 0x2c, 0x30, 0x0e, 0xc0, 0x00, 0x20, 0x70, 0x61, - 0x0f, 0x48, 0x0f, 0x49, 0x10, 0x4f, 0x00, 0x24, - 0x48, 0x60, 0xa0, 0x00, 0x39, 0x58, 0x20, 0x1c, - 0xd1, 0xf7, 0xd7, 0xf8, 0x01, 0x34, 0x3c, 0x00, - 0x00, 0x2e, 0x04, 0x00, 0x10, 0x2c, 0xf7, 0xd3, - 0x06, 0x4c, 0x0b, 0x4a, 0x20, 0x34, 0x20, 0x1c, - 0x0a, 0x49, 0xb5, 0x60, 0xcc, 0xf7, 0x92, 0xfa, - 0xcc, 0xf7, 0x9e, 0xfa, 0x30, 0x61, 0x20, 0x60, - 0xf8, 0xbd, 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, - 0xb0, 0x58, 0x01, 0x00, 0x04, 0x18, 0x02, 0x00, - 0x60, 0x00, 0x07, 0x00, 0xd4, 0x44, 0x01, 0x00, - 0x45, 0xfa, 0x00, 0x00, 0x71, 0xfa, 0x00, 0x00, - 0x3c, 0x00, 0x3c, 0x2e, 0x04, 0x00, 0x0c, 0x49, - 0x30, 0xb5, 0x00, 0x23, 0xcc, 0x56, 0x0b, 0x4b, - 0x00, 0x20, 0xf0, 0x25, 0x1a, 0x5c, 0x11, 0x07, - 0x09, 0x0f, 0x09, 0x19, 0x0f, 0x29, 0x01, 0xdd, - 0x0f, 0x21, 0x02, 0xe0, 0x00, 0x29, 0x00, 0xda, - 0x00, 0x21, 0x2a, 0x40, 0x51, 0x18, 0x19, 0x54, - 0x01, 0x30, 0x0e, 0x28, 0xee, 0xdb, 0x30, 0xbd, - 0x00, 0x00, 0x64, 0x73, 0x01, 0x00, 0xc0, 0x58, - 0x01, 0x00, 0x3c, 0x00, 0x78, 0x2e, 0x04, 0x00, - 0xb0, 0xb5, 0x0d, 0x1c, 0x00, 0x28, 0x08, 0xd0, - 0x01, 0x24, 0x14, 0x80, 0x05, 0x20, 0xcc, 0xf7, - 0xb5, 0xf8, 0x80, 0x03, 0xc0, 0x0f, 0x28, 0x70, - 0x07, 0xe0, 0x28, 0x78, 0x01, 0x22, 0x41, 0x04, - 0x52, 0x04, 0x05, 0x20, 0xd0, 0xf7, 0xae, 0xfd, - 0x01, 0x24, 0x20, 0x1c, 0xb0, 0xbd, 0x00, 0x00, - 0x98, 0xb5, 0x05, 0x4c, 0x60, 0x68, 0xcc, 0xf7, - 0xf5, 0xfd, 0x00, 0x90, 0x3c, 0x00, 0xb4, 0x2e, - 0x04, 0x00, 0x00, 0xab, 0x18, 0x88, 0xe0, 0x80, - 0xce, 0xf7, 0xfb, 0xff, 0x98, 0xbd, 0xa0, 0x58, - 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, 0x08, 0x1c, - 0x00, 0x24, 0x00, 0x2b, 0x17, 0x4d, 0x07, 0xd0, - 0x0e, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x01, 0x24, - 0x29, 0x1c, 0xbd, 0xf7, 0x0c, 0xfb, 0x22, 0xe0, - 0x11, 0x88, 0x04, 0x29, 0x17, 0xd1, 0x01, 0x1c, - 0x68, 0x46, 0x12, 0x88, 0xbd, 0xf7, 0x3c, 0x00, - 0xf0, 0x2e, 0x04, 0x00, 0x03, 0xfb, 0x00, 0x98, - 0x00, 0x28, 0x01, 0xdb, 0x32, 0x30, 0x00, 0xe0, - 0x32, 0x38, 0x00, 0x90, 0x01, 0x1c, 0x64, 0x20, - 0xbd, 0xf7, 0x98, 0xfb, 0x01, 0x06, 0x09, 0x16, - 0x00, 0x90, 0x0e, 0x22, 0x28, 0x1c, 0xbd, 0xf7, - 0x85, 0xfb, 0x06, 0xe0, 0x0e, 0x29, 0x05, 0xd1, - 0x0a, 0x1c, 0x01, 0x1c, 0x28, 0x1c, 0xbd, 0xf7, - 0xe9, 0xfa, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd, - 0x3c, 0x00, 0x2c, 0x2f, 0x04, 0x00, 0xda, 0x59, - 0x01, 0x00, 0x38, 0xb5, 0x03, 0x1c, 0x08, 0x1c, - 0x00, 0x24, 0x00, 0x2b, 0x17, 0x4d, 0x07, 0xd0, - 0x0e, 0x21, 0x11, 0x80, 0x0a, 0x1c, 0x01, 0x24, - 0x29, 0x1c, 0xbd, 0xf7, 0xd6, 0xfa, 0x22, 0xe0, - 0x11, 0x88, 0x04, 0x29, 0x17, 0xd1, 0x01, 0x1c, - 0x68, 0x46, 0x12, 0x88, 0xbd, 0xf7, 0xcd, 0xfa, - 0x00, 0x98, 0x00, 0x28, 0x01, 0xdb, 0x32, 0x30, - 0x00, 0xe0, 0x3c, 0x00, 0x68, 0x2f, 0x04, 0x00, - 0x32, 0x38, 0x00, 0x90, 0x01, 0x1c, 0x64, 0x20, - 0xbd, 0xf7, 0x62, 0xfb, 0x01, 0x06, 0x09, 0x16, - 0x00, 0x90, 0x0e, 0x22, 0x28, 0x1c, 0xbd, 0xf7, - 0x4f, 0xfb, 0x06, 0xe0, 0x0e, 0x29, 0x05, 0xd1, - 0x0a, 0x1c, 0x01, 0x1c, 0x28, 0x1c, 0xbd, 0xf7, - 0xb3, 0xfa, 0x01, 0x24, 0x20, 0x1c, 0x38, 0xbd, - 0xcc, 0x59, 0x01, 0x00, 0x03, 0x48, 0x80, 0xb5, - 0x01, 0x78, 0x00, 0x20, 0x3c, 0x00, 0xa4, 0x2f, - 0x04, 0x00, 0xcc, 0xf7, 0xb4, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xa6, 0x58, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x02, 0x49, 0x03, 0x20, 0x08, 0x70, - 0x00, 0x20, 0x48, 0x70, 0x70, 0x47, 0x9c, 0x73, - 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, 0x11, 0x20, - 0x02, 0x4a, 0xd0, 0xf7, 0xbc, 0xfb, 0x80, 0xbd, - 0x00, 0x00, 0xa1, 0xfe, 0x00, 0x00, 0xf0, 0xb5, - 0x0b, 0x4f, 0x1c, 0x1c, 0x00, 0x23, 0x3c, 0x00, - 0xe0, 0x2f, 0x04, 0x00, 0xfd, 0x56, 0x2b, 0x1c, - 0x06, 0x2d, 0x01, 0xd1, 0x01, 0x20, 0xf0, 0xbd, - 0x06, 0x4e, 0x05, 0x1c, 0xd8, 0x00, 0x34, 0x36, - 0x35, 0x54, 0x80, 0x19, 0x41, 0x70, 0x82, 0x70, - 0x44, 0x60, 0x58, 0x1c, 0x38, 0x70, 0x00, 0x20, - 0xf0, 0xbd, 0x00, 0x00, 0x98, 0x5a, 0x01, 0x00, - 0x10, 0xb5, 0x04, 0x1c, 0x0c, 0x48, 0x00, 0xf0, - 0x21, 0xf9, 0x60, 0x78, 0xff, 0x28, 0x04, 0xd0, - 0x3c, 0x00, 0x1c, 0x30, 0x04, 0x00, 0x01, 0x23, - 0xe0, 0x56, 0x06, 0x21, 0x00, 0xf0, 0xcd, 0xf8, - 0x08, 0x4a, 0x01, 0x21, 0x10, 0x78, 0x08, 0x43, - 0x07, 0x49, 0x08, 0x70, 0x20, 0x23, 0x18, 0x43, - 0x08, 0x70, 0x80, 0x23, 0x18, 0x43, 0x10, 0x70, - 0x08, 0x70, 0x10, 0xbd, 0x00, 0x00, 0x91, 0x9b, - 0x00, 0x00, 0xe0, 0x60, 0x01, 0x00, 0x04, 0x00, - 0x07, 0x00, 0x10, 0xb5, 0x0a, 0x49, 0x04, 0x1c, - 0x08, 0x78, 0x3c, 0x00, 0x58, 0x30, 0x04, 0x00, - 0x40, 0x08, 0x40, 0x00, 0x08, 0x70, 0x08, 0x49, - 0x08, 0x70, 0x08, 0x48, 0x00, 0xf0, 0xf8, 0xf8, - 0x60, 0x78, 0xff, 0x28, 0x04, 0xd0, 0x01, 0x23, - 0xe0, 0x56, 0x05, 0x21, 0x00, 0xf0, 0xa4, 0xf8, - 0x10, 0xbd, 0x00, 0x00, 0xe0, 0x60, 0x01, 0x00, - 0x04, 0x00, 0x07, 0x00, 0x91, 0x9b, 0x00, 0x00, - 0x03, 0x48, 0x00, 0x21, 0x00, 0x22, 0x00, 0x23, - 0x0e, 0xc0, 0x08, 0xc0, 0x3c, 0x00, 0x94, 0x30, - 0x04, 0x00, 0x70, 0x47, 0x00, 0x00, 0xe8, 0x60, - 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, 0x10, 0xb5, - 0x07, 0x4c, 0x00, 0x20, 0x60, 0x60, 0x20, 0x80, - 0xe0, 0x60, 0x02, 0x21, 0x14, 0x20, 0x04, 0x4a, - 0xd0, 0xf7, 0x49, 0xfb, 0x02, 0x48, 0x10, 0x30, - 0xa0, 0x60, 0x10, 0xbd, 0x00, 0x00, 0x58, 0x75, - 0x01, 0x00, 0x05, 0x1d, 0x01, 0x00, 0x70, 0x47, - 0x00, 0x00, 0x10, 0xb5, 0x48, 0x21, 0x3c, 0x00, - 0xd0, 0x30, 0x04, 0x00, 0x0a, 0x48, 0xbd, 0xf7, - 0xe3, 0xf9, 0x09, 0x4c, 0xe0, 0x21, 0x48, 0x34, - 0x20, 0x1c, 0xbd, 0xf7, 0xdd, 0xf9, 0x00, 0x20, - 0xc1, 0x00, 0x09, 0x19, 0x0a, 0x1c, 0x08, 0x32, - 0x01, 0x30, 0x1b, 0x28, 0x4a, 0x60, 0xf7, 0xd3, - 0x01, 0x48, 0x04, 0x38, 0x04, 0x60, 0x10, 0xbd, - 0x68, 0x5b, 0x01, 0x00, 0x80, 0xb5, 0x02, 0x21, - 0x23, 0x20, 0x02, 0x4a, 0xd0, 0xf7, 0x1e, 0xfb, - 0x3c, 0x00, 0x0c, 0x31, 0x04, 0x00, 0x80, 0xbd, - 0x00, 0x00, 0x45, 0x23, 0x01, 0x00, 0x80, 0xb5, - 0xff, 0xf7, 0x6b, 0xf8, 0x80, 0xbd, 0x70, 0x47, - 0x00, 0x00, 0xf8, 0xb5, 0x01, 0x20, 0x1d, 0x49, - 0xc0, 0x07, 0x48, 0x60, 0x1d, 0x49, 0xff, 0x20, - 0x08, 0x73, 0x1c, 0x4e, 0x10, 0x20, 0x30, 0x60, - 0x05, 0x01, 0x35, 0x60, 0x1b, 0x4c, 0x80, 0x21, - 0x20, 0x1c, 0xbd, 0xf7, 0xac, 0xf9, 0x00, 0x21, - 0x19, 0x4a, 0x3c, 0x00, 0x48, 0x31, 0x04, 0x00, - 0x15, 0x4f, 0x00, 0x20, 0x0b, 0x01, 0x1b, 0x19, - 0x5a, 0x60, 0xcb, 0x00, 0xdb, 0x19, 0x18, 0x74, - 0x01, 0x31, 0x08, 0x29, 0xf6, 0xdb, 0x0f, 0x4c, - 0xfa, 0x21, 0x21, 0x80, 0x12, 0x49, 0x61, 0x80, - 0xa0, 0x60, 0x6a, 0x46, 0x11, 0x49, 0x04, 0x20, - 0xbd, 0xf7, 0x30, 0xff, 0x6a, 0x46, 0x10, 0x49, - 0x08, 0x20, 0xbd, 0xf7, 0x2b, 0xff, 0x10, 0x20, - 0x70, 0x60, 0x75, 0x60, 0x3c, 0x00, 0x84, 0x31, - 0x04, 0x00, 0x60, 0x68, 0x02, 0x21, 0x08, 0x43, - 0x60, 0x60, 0x0b, 0x49, 0x06, 0x4a, 0x08, 0x1c, - 0x10, 0x30, 0x08, 0x3a, 0x03, 0xc2, 0xf8, 0xbd, - 0x00, 0x00, 0x00, 0x01, 0x07, 0x00, 0x00, 0x60, - 0x07, 0x00, 0x00, 0x10, 0x07, 0x00, 0xac, 0x73, - 0x01, 0x00, 0xd1, 0x75, 0x00, 0x00, 0x20, 0x4e, - 0x00, 0x00, 0x05, 0x2c, 0x01, 0x00, 0x11, 0x2c, - 0x01, 0x00, 0x00, 0xa0, 0x07, 0x00, 0x3c, 0x00, - 0xc0, 0x31, 0x04, 0x00, 0x70, 0xb5, 0x0e, 0x1c, - 0x00, 0x24, 0xc4, 0xf7, 0x5b, 0xfe, 0x00, 0x28, - 0x3b, 0xd0, 0x45, 0x68, 0xff, 0x2d, 0x38, 0xd0, - 0x0c, 0x2e, 0x28, 0xd2, 0x01, 0xa3, 0x9b, 0x5d, - 0x5b, 0x00, 0x9f, 0x44, 0x05, 0x07, 0x09, 0x0b, - 0x0d, 0x10, 0x13, 0x16, 0x18, 0x1b, 0x1e, 0x21, - 0x18, 0x24, 0x20, 0xe0, 0x30, 0x24, 0x1e, 0xe0, - 0x60, 0x24, 0x1c, 0xe0, 0xc0, 0x24, 0x1a, 0xe0, - 0x3c, 0x00, 0xfc, 0x31, 0x04, 0x00, 0xff, 0x24, - 0x81, 0x34, 0x17, 0xe0, 0x09, 0x24, 0xa4, 0x01, - 0x14, 0xe0, 0x09, 0x24, 0xe4, 0x01, 0x11, 0xe0, - 0x0f, 0x4c, 0x0f, 0xe0, 0x09, 0x24, 0x24, 0x02, - 0x0c, 0xe0, 0x09, 0x24, 0x64, 0x02, 0x09, 0xe0, - 0x03, 0x24, 0xe4, 0x02, 0x06, 0xe0, 0x09, 0x24, - 0xa4, 0x02, 0x03, 0xe0, 0x09, 0x21, 0x9e, 0x20, - 0xbe, 0xf7, 0x39, 0xf8, 0x60, 0x00, 0x00, 0x19, - 0x40, 0x08, 0x3c, 0x00, 0x38, 0x32, 0x04, 0x00, - 0x05, 0x49, 0x80, 0x04, 0x40, 0x18, 0x05, 0x4a, - 0xa9, 0x00, 0x89, 0x18, 0x48, 0x60, 0x64, 0x20, - 0x60, 0x43, 0x70, 0xbd, 0xdc, 0x07, 0x00, 0x00, - 0x80, 0x38, 0x01, 0x00, 0x04, 0x00, 0x07, 0x00, - 0x02, 0x49, 0x80, 0xb5, 0x08, 0x60, 0xd0, 0xf7, - 0x97, 0xf8, 0x80, 0xbd, 0x5c, 0x5b, 0x01, 0x00, - 0xf8, 0xb5, 0x00, 0x26, 0x17, 0x4c, 0x17, 0x4b, - 0x19, 0x49, 0x26, 0x70, 0x3c, 0x00, 0x74, 0x32, - 0x04, 0x00, 0x00, 0x20, 0x14, 0x33, 0x0d, 0x88, - 0x15, 0x4e, 0x15, 0x4a, 0x04, 0xe0, 0xc1, 0x00, - 0xcf, 0x18, 0x7a, 0x60, 0x5e, 0x50, 0x01, 0x30, - 0xa8, 0x42, 0xf8, 0xdb, 0xc6, 0xf7, 0x2b, 0xfd, - 0xff, 0x21, 0x11, 0x4d, 0xa5, 0x31, 0x28, 0x1c, - 0xbd, 0xf7, 0xff, 0xf8, 0x00, 0x21, 0x28, 0x1c, - 0x02, 0x1c, 0x14, 0x32, 0xc2, 0x60, 0x10, 0x1c, - 0x01, 0x31, 0x14, 0x29, 0xf8, 0xdb, 0x3c, 0x00, - 0xb0, 0x32, 0x04, 0x00, 0x00, 0x26, 0xc6, 0x60, - 0x05, 0x48, 0x0c, 0x30, 0x60, 0xc0, 0x09, 0x48, - 0x18, 0x21, 0xbd, 0xf7, 0xed, 0xf8, 0x01, 0x20, - 0x04, 0x34, 0x41, 0xc4, 0x00, 0x20, 0xf8, 0xbd, - 0x70, 0x5d, 0x01, 0x00, 0x09, 0xa0, 0x00, 0x00, - 0x30, 0xd9, 0x01, 0x00, 0x56, 0x57, 0x01, 0x00, - 0x04, 0x5f, 0x01, 0x00, 0xa8, 0x60, 0x01, 0x00, - 0x80, 0xb5, 0x00, 0x20, 0xcf, 0xf7, 0xb6, 0xfc, - 0x3c, 0x00, 0xec, 0x32, 0x04, 0x00, 0x01, 0x49, - 0x08, 0x80, 0x80, 0xbd, 0x00, 0x00, 0x2c, 0x74, - 0x01, 0x00, 0x11, 0x48, 0xf8, 0xb5, 0x41, 0x79, - 0x00, 0x29, 0x02, 0xd1, 0x05, 0x78, 0x0f, 0x4e, - 0x01, 0xe0, 0x45, 0x78, 0x0f, 0x4e, 0x02, 0x23, - 0xf7, 0x5e, 0x00, 0x24, 0x60, 0x1b, 0x78, 0x43, - 0x64, 0x23, 0x0c, 0x49, 0x58, 0x43, 0x41, 0x18, - 0x7d, 0x20, 0xc0, 0x00, 0xbd, 0xf7, 0xf5, 0xf9, - 0x61, 0x00, 0x3c, 0x00, 0x28, 0x33, 0x04, 0x00, - 0x09, 0x4a, 0xac, 0x42, 0x50, 0x52, 0x01, 0xd1, - 0x00, 0x23, 0xf7, 0x5e, 0x01, 0x34, 0x24, 0x06, - 0x24, 0x0e, 0x10, 0x2c, 0xe9, 0xd3, 0xf8, 0xbd, - 0x0c, 0x5a, 0x01, 0x00, 0xfe, 0x59, 0x01, 0x00, - 0xfa, 0x59, 0x01, 0x00, 0x34, 0x44, 0x0f, 0x00, - 0x32, 0x5a, 0x01, 0x00, 0x38, 0xb5, 0x10, 0x4c, - 0xbe, 0x25, 0x25, 0x73, 0x20, 0x7a, 0x18, 0x21, - 0x88, 0x43, 0x20, 0x72, 0x3c, 0x00, 0x64, 0x33, - 0x04, 0x00, 0x6a, 0x46, 0x0d, 0x49, 0x0d, 0x20, - 0xbd, 0xf7, 0x33, 0xfe, 0x01, 0x20, 0x0b, 0x49, - 0x40, 0x03, 0x08, 0x60, 0x48, 0x60, 0x25, 0x73, - 0x2d, 0x20, 0xc0, 0x03, 0x20, 0x60, 0x25, 0x73, - 0x20, 0x7a, 0x10, 0x21, 0x08, 0x43, 0x20, 0x72, - 0x06, 0x48, 0x06, 0x49, 0x08, 0x60, 0x00, 0x20, - 0x48, 0x60, 0x38, 0xbd, 0x00, 0x00, 0x00, 0x03, - 0x07, 0x00, 0x8d, 0x3e, 0x01, 0x00, 0x24, 0x00, - 0xa0, 0x33, 0x04, 0x00, 0x00, 0x10, 0x07, 0x00, - 0x00, 0x87, 0x93, 0x03, 0x04, 0x79, 0x01, 0x00, - 0x80, 0xb5, 0x02, 0x21, 0x15, 0x20, 0x02, 0x4a, - 0xd0, 0xf7, 0xc8, 0xf9, 0x80, 0xbd, 0x00, 0x00, - 0x0d, 0x3e, 0x01, 0x00, 0x70, 0x47, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x60, 0x04, 0x00, 0x44, 0x00, - 0x00, 0x00, 0x04, 0x00, 0x40, 0x20, 0x07, 0x00, - 0xff, 0xff, 0xff, 0xff, -}; -const uint32_t fw_len = sizeof(fw_buf) / sizeof(fw_buf[0]); diff --git a/libraries/WiFi/extras/wifi_dnld/wifi_dnld.cproj b/libraries/WiFi/extras/wifi_dnld/wifi_dnld.cproj deleted file mode 100644 index 790db3c67b7..00000000000 --- a/libraries/WiFi/extras/wifi_dnld/wifi_dnld.cproj +++ /dev/null @@ -1,495 +0,0 @@ - - - - 2.0 - 6.0 - com.Atmel.AVRGCC32 - eb9606bc-de32-4edd-9cda-ae3bf36977a2 - wifi_dnld - AT32uc3a1256 - none - Importer - Executable - C - wifi_dnld - .elf - $(MSBuildProjectDirectory)\$(Configuration) - Native - - true - false - - 0 - 3.5.0 - - - - - True - True - True - True - false - false - - - BOARD=ARDUINO - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src - - - -fdata-sections - true - false - false - false - false - true - false - false - false - false - - false - false - true - false - false - false - false - -c -fmessage-length=0 - false - true - false - false - false - false - - - newlib_addons-at32ucr2-speed_opt - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - true - false - false - false - false - true - true - - - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - -Wa,-g - - - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - false - - - - - - - True - True - True - True - false - false - - - BOARD=ARDUINO - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - ../src - - - -fdata-sections - true - false - false - false - false - true - false - false - false - false - Maximum (-g3) - - false - false - true - false - false - false - false - -c -fmessage-length=0 - false - true - false - false - false - false - - - newlib_addons-at32ucr2-speed_opt - - - - - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - true - false - false - false - false - true - true - - - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - Default (-g) - -Wa,-g - - - ../src/SOFTWARE_FRAMEWORK/UTILS/DEBUG - ../src/SOFTWARE_FRAMEWORK/SERVICES/MEMORY/CTRL_ACCESS - ../src/CONFIG - ../src/SOFTWARE_FRAMEWORK/COMPONENTS/MEMORY/DATA_FLASH/AT45DBX - ../src/SOFTWARE_FRAMEWORK/DRIVERS/USART - ../src/SOFTWARE_FRAMEWORK/DRIVERS/SPI - ../src/SOFTWARE_FRAMEWORK/DRIVERS/PM - ../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO - ../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC - ../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE - ../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR - ../src/SOFTWARE_FRAMEWORK/UTILS - ../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC - ../src/SOFTWARE_FRAMEWORK/BOARDS - - - false - false - Default (-Wa,-g) - - - - - - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - - - - compile - - - compile - - - compile - - - compile - - - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - compile - - - - compile - - - compile - - - - compile - - - compile - - - - - - compile - - - compile - - - - compile - - - compile - - - compile - - - - compile - - - compile - - - compile - - - compile - - - - - compile - - - - compile - - - compile - - - compile - - - compile - - - compile - - - - - - - compile - - - - - compile - - - - compile - - - compile - - - compile - - - compile - - - - - compile - - - \ No newline at end of file diff --git a/libraries/WiFi/extras/wifishield.atsln b/libraries/WiFi/extras/wifishield.atsln deleted file mode 100644 index e9a149ba152..00000000000 --- a/libraries/WiFi/extras/wifishield.atsln +++ /dev/null @@ -1,36 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Atmel Studio Solution File, Format Version 11.00 -Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "wifi_dnld", "wifi_dnld\wifi_dnld.cproj", "{EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}" -EndProject -Project("{54F91283-7BC4-4236-8FF9-10F437C3AD48}") = "wifiHD", "wifiHD\wifiHD.cproj", "{417E15DB-488A-4B56-8D4E-FBE832B2B649}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug_512|AVR = Debug_512|AVR - Debug|AVR = Debug|AVR - Release_512|AVR = Release_512|AVR - Release|AVR = Release|AVR - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Debug_512|AVR.ActiveCfg = Debug|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Debug_512|AVR.Build.0 = Debug|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Debug|AVR.ActiveCfg = Debug|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Debug|AVR.Build.0 = Debug|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Release_512|AVR.ActiveCfg = Release|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Release_512|AVR.Build.0 = Release|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Release|AVR.ActiveCfg = Release|AVR - {EB9606BC-DE32-4EDD-9CDA-AE3BF36977A2}.Release|AVR.Build.0 = Release|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Debug_512|AVR.ActiveCfg = Debug_512|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Debug_512|AVR.Build.0 = Debug_512|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Debug|AVR.ActiveCfg = Debug|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Debug|AVR.Build.0 = Debug|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Release_512|AVR.ActiveCfg = Release_512|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Release_512|AVR.Build.0 = Release_512|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Release|AVR.ActiveCfg = Release|AVR - {417E15DB-488A-4B56-8D4E-FBE832B2B649}.Release|AVR.Build.0 = Release|AVR - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/libraries/WiFi/keywords.txt b/libraries/WiFi/keywords.txt deleted file mode 100644 index 341114d951f..00000000000 --- a/libraries/WiFi/keywords.txt +++ /dev/null @@ -1,59 +0,0 @@ -####################################### -# Syntax Coloring Map For WiFi -####################################### - -####################################### -# Library (KEYWORD1) -####################################### - -WiFi KEYWORD1 WiFi -WiFiUdp KEYWORD1 WiFiUDPConstructor - -####################################### -# Datatypes (KEYWORD1) -####################################### - -Client KEYWORD1 WiFiClientConstructor -Server KEYWORD1 WiFiServerConstructor - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -firmwareVersion KEYWORD2 -status KEYWORD2 -connect KEYWORD2 -write KEYWORD2 -available KEYWORD2 -config KEYWORD2 -setDNS KEYWORD2 -read KEYWORD2 -flush KEYWORD2 -stop KEYWORD2 -connected KEYWORD2 -begin KEYWORD2 -disconnect KEYWORD2 -macAddress KEYWORD2 -localIP KEYWORD2 -subnetMask KEYWORD2 -gatewayIP KEYWORD2 -SSID KEYWORD2 -BSSID KEYWORD2 -RSSI KEYWORD2 -encryptionType KEYWORD2 -getResult KEYWORD2 -getSocket KEYWORD2 -WiFiClient KEYWORD2 WiFiClient -WiFiServer KEYWORD2 WiFiServer -WiFiUDP KEYWORD2 WiFiUDPConstructor -beginPacket KEYWORD2 -endPacket KEYWORD2 -parsePacket KEYWORD2 -remoteIP KEYWORD2 -remotePort KEYWORD2 - - -####################################### -# Constants (LITERAL1) -####################################### - diff --git a/libraries/WiFi/library.properties b/libraries/WiFi/library.properties deleted file mode 100644 index 94e83080095..00000000000 --- a/libraries/WiFi/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=WiFi -version=1.2.7 -author=Arduino -maintainer=Arduino -sentence=Enables network connection (local and Internet) using the Arduino WiFi shield. -paragraph=With this library you can instantiate Servers, Clients and send/receive UDP packets through WiFi. The shield can connect either to open or encrypted networks (WEP, WPA). The IP address can be assigned statically or through a DHCP. The library can also manage DNS. -category=Communication -url=http://www.arduino.cc/en/Reference/WiFi -architectures=* diff --git a/libraries/WiFi/src/WiFi.cpp b/libraries/WiFi/src/WiFi.cpp deleted file mode 100644 index 88b18b0d252..00000000000 --- a/libraries/WiFi/src/WiFi.cpp +++ /dev/null @@ -1,248 +0,0 @@ -/* - WiFi.cpp - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino LLC. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#include "utility/wifi_drv.h" -#include "WiFi.h" - -extern "C" { - #include "utility/wl_definitions.h" - #include "utility/wl_types.h" - #include "utility/debug.h" -} - -// XXX: don't make assumptions about the value of MAX_SOCK_NUM. -int16_t WiFiClass::_state[MAX_SOCK_NUM] = { NA_STATE, NA_STATE, NA_STATE, NA_STATE }; -uint16_t WiFiClass::_server_port[MAX_SOCK_NUM] = { 0, 0, 0, 0 }; - -WiFiClass::WiFiClass() -{ -} - -void WiFiClass::init() -{ - WiFiDrv::wifiDriverInit(); -} - -uint8_t WiFiClass::getSocket() -{ - for (uint8_t i = 0; i < MAX_SOCK_NUM; ++i) - { - if (WiFiClass::_server_port[i] == 0) - { - return i; - } - } - return NO_SOCKET_AVAIL; -} - -char* WiFiClass::firmwareVersion() -{ - return WiFiDrv::getFwVersion(); -} - -int WiFiClass::begin(char* ssid) -{ - uint8_t status = WL_IDLE_STATUS; - uint8_t attempts = WL_MAX_ATTEMPT_CONNECTION; - - if (WiFiDrv::wifiSetNetwork(ssid, strlen(ssid)) != WL_FAILURE) - { - do - { - delay(WL_DELAY_START_CONNECTION); - status = WiFiDrv::getConnectionStatus(); - } - while ((( status == WL_IDLE_STATUS)||(status == WL_SCAN_COMPLETED))&&(--attempts>0)); - }else - { - status = WL_CONNECT_FAILED; - } - return status; -} - -int WiFiClass::begin(char* ssid, uint8_t key_idx, const char *key) -{ - uint8_t status = WL_IDLE_STATUS; - uint8_t attempts = WL_MAX_ATTEMPT_CONNECTION; - - // set encryption key - if (WiFiDrv::wifiSetKey(ssid, strlen(ssid), key_idx, key, strlen(key)) != WL_FAILURE) - { - do - { - delay(WL_DELAY_START_CONNECTION); - status = WiFiDrv::getConnectionStatus(); - }while ((( status == WL_IDLE_STATUS)||(status == WL_SCAN_COMPLETED))&&(--attempts>0)); - }else{ - status = WL_CONNECT_FAILED; - } - return status; -} - -int WiFiClass::begin(char* ssid, const char *passphrase) -{ - uint8_t status = WL_IDLE_STATUS; - uint8_t attempts = WL_MAX_ATTEMPT_CONNECTION; - - // set passphrase - if (WiFiDrv::wifiSetPassphrase(ssid, strlen(ssid), passphrase, strlen(passphrase))!= WL_FAILURE) - { - do - { - delay(WL_DELAY_START_CONNECTION); - status = WiFiDrv::getConnectionStatus(); - } - while ((( status == WL_IDLE_STATUS)||(status == WL_SCAN_COMPLETED))&&(--attempts>0)); - }else{ - status = WL_CONNECT_FAILED; - } - return status; -} - -void WiFiClass::config(IPAddress local_ip) -{ - WiFiDrv::config(1, (uint32_t)local_ip, 0, 0); -} - -void WiFiClass::config(IPAddress local_ip, IPAddress dns_server) -{ - WiFiDrv::config(1, (uint32_t)local_ip, 0, 0); - WiFiDrv::setDNS(1, (uint32_t)dns_server, 0); -} - -void WiFiClass::config(IPAddress local_ip, IPAddress dns_server, IPAddress gateway) -{ - WiFiDrv::config(2, (uint32_t)local_ip, (uint32_t)gateway, 0); - WiFiDrv::setDNS(1, (uint32_t)dns_server, 0); -} - -void WiFiClass::config(IPAddress local_ip, IPAddress dns_server, IPAddress gateway, IPAddress subnet) -{ - WiFiDrv::config(3, (uint32_t)local_ip, (uint32_t)gateway, (uint32_t)subnet); - WiFiDrv::setDNS(1, (uint32_t)dns_server, 0); -} - -void WiFiClass::setDNS(IPAddress dns_server1) -{ - WiFiDrv::setDNS(1, (uint32_t)dns_server1, 0); -} - -void WiFiClass::setDNS(IPAddress dns_server1, IPAddress dns_server2) -{ - WiFiDrv::setDNS(2, (uint32_t)dns_server1, (uint32_t)dns_server2); -} - -int WiFiClass::disconnect() -{ - return WiFiDrv::disconnect(); -} - -uint8_t* WiFiClass::macAddress(uint8_t* mac) -{ - uint8_t* _mac = WiFiDrv::getMacAddress(); - memcpy(mac, _mac, WL_MAC_ADDR_LENGTH); - return mac; -} - -IPAddress WiFiClass::localIP() -{ - IPAddress ret; - WiFiDrv::getIpAddress(ret); - return ret; -} - -IPAddress WiFiClass::subnetMask() -{ - IPAddress ret; - WiFiDrv::getSubnetMask(ret); - return ret; -} - -IPAddress WiFiClass::gatewayIP() -{ - IPAddress ret; - WiFiDrv::getGatewayIP(ret); - return ret; -} - -char* WiFiClass::SSID() -{ - return WiFiDrv::getCurrentSSID(); -} - -uint8_t* WiFiClass::BSSID(uint8_t* bssid) -{ - uint8_t* _bssid = WiFiDrv::getCurrentBSSID(); - memcpy(bssid, _bssid, WL_MAC_ADDR_LENGTH); - return bssid; -} - -int32_t WiFiClass::RSSI() -{ - return WiFiDrv::getCurrentRSSI(); -} - -uint8_t WiFiClass::encryptionType() -{ - return WiFiDrv::getCurrentEncryptionType(); -} - - -int8_t WiFiClass::scanNetworks() -{ - uint8_t attempts = 10; - uint8_t numOfNetworks = 0; - - if (WiFiDrv::startScanNetworks() == WL_FAILURE) - return WL_FAILURE; - do - { - delay(2000); - numOfNetworks = WiFiDrv::getScanNetworks(); - } - while (( numOfNetworks == 0)&&(--attempts>0)); - return numOfNetworks; -} - -char* WiFiClass::SSID(uint8_t networkItem) -{ - return WiFiDrv::getSSIDNetoworks(networkItem); -} - -int32_t WiFiClass::RSSI(uint8_t networkItem) -{ - return WiFiDrv::getRSSINetoworks(networkItem); -} - -uint8_t WiFiClass::encryptionType(uint8_t networkItem) -{ - return WiFiDrv::getEncTypeNetowrks(networkItem); -} - -uint8_t WiFiClass::status() -{ - return WiFiDrv::getConnectionStatus(); -} - -int WiFiClass::hostByName(const char* aHostname, IPAddress& aResult) -{ - return WiFiDrv::getHostByName(aHostname, aResult); -} - -WiFiClass WiFi; diff --git a/libraries/WiFi/src/WiFi.h b/libraries/WiFi/src/WiFi.h deleted file mode 100644 index ef494285e41..00000000000 --- a/libraries/WiFi/src/WiFi.h +++ /dev/null @@ -1,246 +0,0 @@ -/* - WiFi.h - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino LLC. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef WiFi_h -#define WiFi_h - -#include - -extern "C" { - #include "utility/wl_definitions.h" - #include "utility/wl_types.h" -} - -#include "IPAddress.h" -#include "WiFiClient.h" -#include "WiFiServer.h" - -class WiFiClass -{ -private: - - static void init(); -public: - static int16_t _state[MAX_SOCK_NUM]; - static uint16_t _server_port[MAX_SOCK_NUM]; - - WiFiClass(); - - /* - * Get the first socket available - */ - static uint8_t getSocket(); - - /* - * Get firmware version - */ - static char* firmwareVersion(); - - - /* Start Wifi connection for OPEN networks - * - * param ssid: Pointer to the SSID string. - */ - int begin(char* ssid); - - /* Start Wifi connection with WEP encryption. - * Configure a key into the device. The key type (WEP-40, WEP-104) - * is determined by the size of the key (5 bytes for WEP-40, 13 bytes for WEP-104). - * - * param ssid: Pointer to the SSID string. - * param key_idx: The key index to set. Valid values are 0-3. - * param key: Key input buffer. - */ - int begin(char* ssid, uint8_t key_idx, const char* key); - - /* Start Wifi connection with passphrase - * the most secure supported mode will be automatically selected - * - * param ssid: Pointer to the SSID string. - * param passphrase: Passphrase. Valid characters in a passphrase - * must be between ASCII 32-126 (decimal). - */ - int begin(char* ssid, const char *passphrase); - - /* Change Ip configuration settings disabling the dhcp client - * - * param local_ip: Static ip configuration - */ - void config(IPAddress local_ip); - - /* Change Ip configuration settings disabling the dhcp client - * - * param local_ip: Static ip configuration - * param dns_server: IP configuration for DNS server 1 - */ - void config(IPAddress local_ip, IPAddress dns_server); - - /* Change Ip configuration settings disabling the dhcp client - * - * param local_ip: Static ip configuration - * param dns_server: IP configuration for DNS server 1 - * param gateway : Static gateway configuration - */ - void config(IPAddress local_ip, IPAddress dns_server, IPAddress gateway); - - /* Change Ip configuration settings disabling the dhcp client - * - * param local_ip: Static ip configuration - * param dns_server: IP configuration for DNS server 1 - * param gateway: Static gateway configuration - * param subnet: Static Subnet mask - */ - void config(IPAddress local_ip, IPAddress dns_server, IPAddress gateway, IPAddress subnet); - - /* Change DNS Ip configuration - * - * param dns_server1: ip configuration for DNS server 1 - */ - void setDNS(IPAddress dns_server1); - - /* Change DNS Ip configuration - * - * param dns_server1: ip configuration for DNS server 1 - * param dns_server2: ip configuration for DNS server 2 - * - */ - void setDNS(IPAddress dns_server1, IPAddress dns_server2); - - /* - * Disconnect from the network - * - * return: one value of wl_status_t enum - */ - int disconnect(void); - - /* - * Get the interface MAC address. - * - * return: pointer to uint8_t array with length WL_MAC_ADDR_LENGTH - */ - uint8_t* macAddress(uint8_t* mac); - - /* - * Get the interface IP address. - * - * return: Ip address value - */ - IPAddress localIP(); - - /* - * Get the interface subnet mask address. - * - * return: subnet mask address value - */ - IPAddress subnetMask(); - - /* - * Get the gateway ip address. - * - * return: gateway ip address value - */ - IPAddress gatewayIP(); - - /* - * Return the current SSID associated with the network - * - * return: ssid string - */ - char* SSID(); - - /* - * Return the current BSSID associated with the network. - * It is the MAC address of the Access Point - * - * return: pointer to uint8_t array with length WL_MAC_ADDR_LENGTH - */ - uint8_t* BSSID(uint8_t* bssid); - - /* - * Return the current RSSI /Received Signal Strength in dBm) - * associated with the network - * - * return: signed value - */ - int32_t RSSI(); - - /* - * Return the Encryption Type associated with the network - * - * return: one value of wl_enc_type enum - */ - uint8_t encryptionType(); - - /* - * Start scan WiFi networks available - * - * return: Number of discovered networks - */ - int8_t scanNetworks(); - - /* - * Return the SSID discovered during the network scan. - * - * param networkItem: specify from which network item want to get the information - * - * return: ssid string of the specified item on the networks scanned list - */ - char* SSID(uint8_t networkItem); - - /* - * Return the encryption type of the networks discovered during the scanNetworks - * - * param networkItem: specify from which network item want to get the information - * - * return: encryption type (enum wl_enc_type) of the specified item on the networks scanned list - */ - uint8_t encryptionType(uint8_t networkItem); - - /* - * Return the RSSI of the networks discovered during the scanNetworks - * - * param networkItem: specify from which network item want to get the information - * - * return: signed value of RSSI of the specified item on the networks scanned list - */ - int32_t RSSI(uint8_t networkItem); - - /* - * Return Connection status. - * - * return: one of the value defined in wl_status_t - */ - uint8_t status(); - - /* - * Resolve the given hostname to an IP address. - * param aHostname: Name to be resolved - * param aResult: IPAddress structure to store the returned IP address - * result: 1 if aIPAddrString was successfully converted to an IP address, - * else error code - */ - int hostByName(const char* aHostname, IPAddress& aResult); - - friend class WiFiClient; - friend class WiFiServer; -}; - -extern WiFiClass WiFi; - -#endif diff --git a/libraries/WiFi/src/WiFiClient.cpp b/libraries/WiFi/src/WiFiClient.cpp deleted file mode 100644 index eb8e6af1dec..00000000000 --- a/libraries/WiFi/src/WiFiClient.cpp +++ /dev/null @@ -1,199 +0,0 @@ -/* - WiFiClient.cpp - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino LLC. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -extern "C" { - #include "utility/wl_definitions.h" - #include "utility/wl_types.h" - #include "string.h" - #include "utility/debug.h" -} - -#include "WiFi.h" -#include "WiFiClient.h" -#include "WiFiServer.h" -#include "utility/server_drv.h" - - -uint16_t WiFiClient::_srcport = 1024; - -WiFiClient::WiFiClient() : _sock(MAX_SOCK_NUM) { -} - -WiFiClient::WiFiClient(uint8_t sock) : _sock(sock) { -} - -int WiFiClient::connect(const char* host, uint16_t port) { - IPAddress remote_addr; - if (WiFi.hostByName(host, remote_addr)) - { - return connect(remote_addr, port); - } - return 0; -} - -int WiFiClient::connect(IPAddress ip, uint16_t port) { - _sock = getFirstSocket(); - if (_sock != NO_SOCKET_AVAIL) - { - ServerDrv::startClient(uint32_t(ip), port, _sock); - WiFiClass::_state[_sock] = _sock; - - unsigned long start = millis(); - - // wait 4 second for the connection to close - while (!connected() && millis() - start < 10000) - delay(1); - - if (!connected()) - { - return 0; - } - }else{ - Serial.println("No Socket available"); - return 0; - } - return 1; -} - -size_t WiFiClient::write(uint8_t b) { - return write(&b, 1); -} - -size_t WiFiClient::write(const uint8_t *buf, size_t size) { - if (_sock >= MAX_SOCK_NUM) - { - setWriteError(); - return 0; - } - if (size==0) - { - setWriteError(); - return 0; - } - - - if (!ServerDrv::sendData(_sock, buf, size)) - { - setWriteError(); - return 0; - } - if (!ServerDrv::checkDataSent(_sock)) - { - setWriteError(); - return 0; - } - - return size; -} - -int WiFiClient::available() { - if (_sock != 255) - { - return ServerDrv::availData(_sock); - } - - return 0; -} - -int WiFiClient::read() { - uint8_t b; - if (!available()) - return -1; - - ServerDrv::getData(_sock, &b); - return b; -} - - -int WiFiClient::read(uint8_t* buf, size_t size) { - // sizeof(size_t) is architecture dependent - // but we need a 16 bit data type here - uint16_t _size = size; - if (!ServerDrv::getDataBuf(_sock, buf, &_size)) - return -1; - return 0; -} - -int WiFiClient::peek() { - uint8_t b; - if (!available()) - return -1; - - ServerDrv::getData(_sock, &b, 1); - return b; -} - -void WiFiClient::flush() { - // TODO: a real check to ensure transmission has been completed -} - -void WiFiClient::stop() { - - if (_sock == 255) - return; - - ServerDrv::stopClient(_sock); - WiFiClass::_state[_sock] = NA_STATE; - - int count = 0; - // wait maximum 5 secs for the connection to close - while (status() != CLOSED && ++count < 50) - delay(100); - - _sock = 255; -} - -uint8_t WiFiClient::connected() { - - if (_sock == 255) { - return 0; - } else { - uint8_t s = status(); - - return !(s == LISTEN || s == CLOSED || s == FIN_WAIT_1 || - s == FIN_WAIT_2 || s == TIME_WAIT || - s == SYN_SENT || s== SYN_RCVD || - (s == CLOSE_WAIT)); - } -} - -uint8_t WiFiClient::status() { - if (_sock == 255) { - return CLOSED; - } else { - return ServerDrv::getClientState(_sock); - } -} - -WiFiClient::operator bool() { - return _sock != 255; -} - -// Private Methods -uint8_t WiFiClient::getFirstSocket() -{ - for (int i = 0; i < MAX_SOCK_NUM; i++) { - if (WiFiClass::_state[i] == NA_STATE) - { - return i; - } - } - return SOCK_NOT_AVAIL; -} - diff --git a/libraries/WiFi/src/WiFiClient.h b/libraries/WiFi/src/WiFiClient.h deleted file mode 100644 index caac8fd6ecc..00000000000 --- a/libraries/WiFi/src/WiFiClient.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - WiFiClient.cpp - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino LLC. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef wificlient_h -#define wificlient_h -#include "Arduino.h" -#include "Print.h" -#include "Client.h" -#include "IPAddress.h" - -class WiFiClient : public Client { - -public: - WiFiClient(); - WiFiClient(uint8_t sock); - - uint8_t status(); - virtual int connect(IPAddress ip, uint16_t port); - virtual int connect(const char *host, uint16_t port); - virtual size_t write(uint8_t); - virtual size_t write(const uint8_t *buf, size_t size); - virtual int available(); - virtual int read(); - virtual int read(uint8_t *buf, size_t size); - virtual int peek(); - virtual void flush(); - virtual void stop(); - virtual uint8_t connected(); - virtual operator bool(); - - friend class WiFiServer; - - using Print::write; - -private: - static uint16_t _srcport; - uint8_t _sock; //not used - uint16_t _socket; - - uint8_t getFirstSocket(); -}; - -#endif diff --git a/libraries/WiFi/src/WiFiServer.cpp b/libraries/WiFi/src/WiFiServer.cpp deleted file mode 100644 index cab1dee8f87..00000000000 --- a/libraries/WiFi/src/WiFiServer.cpp +++ /dev/null @@ -1,108 +0,0 @@ -/* - WiFiServer.cpp - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino LLC. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#include -#include "utility/server_drv.h" - -extern "C" { - #include "utility/debug.h" -} - -#include "WiFi.h" -#include "WiFiClient.h" -#include "WiFiServer.h" - -WiFiServer::WiFiServer(uint16_t port) -{ - _port = port; -} - -void WiFiServer::begin() -{ - uint8_t _sock = WiFiClass::getSocket(); - if (_sock != NO_SOCKET_AVAIL) - { - ServerDrv::startServer(_port, _sock); - WiFiClass::_server_port[_sock] = _port; - WiFiClass::_state[_sock] = _sock; - } -} - -WiFiClient WiFiServer::available(byte* status) -{ - static int cycle_server_down = 0; - const int TH_SERVER_DOWN = 50; - - for (int sock = 0; sock < MAX_SOCK_NUM; sock++) - { - if (WiFiClass::_server_port[sock] == _port) - { - WiFiClient client(sock); - uint8_t _status = client.status(); - uint8_t _ser_status = this->status(); - - if (status != NULL) - *status = _status; - - //server not in listen state, restart it - if ((_ser_status == 0)&&(cycle_server_down++ > TH_SERVER_DOWN)) - { - ServerDrv::startServer(_port, sock); - cycle_server_down = 0; - } - - if (_status == ESTABLISHED) - { - return client; //TODO - } - } - } - - return WiFiClient(255); -} - -uint8_t WiFiServer::status() { - return ServerDrv::getServerState(0); -} - - -size_t WiFiServer::write(uint8_t b) -{ - return write(&b, 1); -} - -size_t WiFiServer::write(const uint8_t *buffer, size_t size) -{ - size_t n = 0; - - for (int sock = 0; sock < MAX_SOCK_NUM; sock++) - { - if (WiFiClass::_server_port[sock] != 0) - { - WiFiClient client(sock); - - if (WiFiClass::_server_port[sock] == _port && - client.status() == ESTABLISHED) - { - n+=client.write(buffer, size); - } - } - } - return n; -} diff --git a/libraries/WiFi/src/WiFiServer.h b/libraries/WiFi/src/WiFiServer.h deleted file mode 100644 index d2adea2161b..00000000000 --- a/libraries/WiFi/src/WiFiServer.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - WiFiServer.h - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino LLC. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef wifiserver_h -#define wifiserver_h - -extern "C" { - #include "utility/wl_definitions.h" -} - -#include "Server.h" - -class WiFiClient; - -class WiFiServer : public Server { -private: - uint16_t _port; - void* pcb; -public: - WiFiServer(uint16_t); - WiFiClient available(uint8_t* status = NULL); - void begin(); - virtual size_t write(uint8_t); - virtual size_t write(const uint8_t *buf, size_t size); - uint8_t status(); - - using Print::write; -}; - -#endif diff --git a/libraries/WiFi/src/WiFiUdp.cpp b/libraries/WiFi/src/WiFiUdp.cpp deleted file mode 100644 index 95402433950..00000000000 --- a/libraries/WiFi/src/WiFiUdp.cpp +++ /dev/null @@ -1,180 +0,0 @@ -/* - WiFiUdp.cpp - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino LLC. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -extern "C" { - #include "utility/debug.h" - #include "utility/wifi_spi.h" -} -#include -#include "utility/server_drv.h" -#include "utility/wifi_drv.h" - -#include "WiFi.h" -#include "WiFiUdp.h" -#include "WiFiClient.h" -#include "WiFiServer.h" - - -/* Constructor */ -WiFiUDP::WiFiUDP() : _sock(NO_SOCKET_AVAIL) {} - -/* Start WiFiUDP socket, listening at local port PORT */ -uint8_t WiFiUDP::begin(uint16_t port) { - - uint8_t sock = WiFiClass::getSocket(); - if (sock != NO_SOCKET_AVAIL) - { - ServerDrv::startServer(port, sock, UDP_MODE); - WiFiClass::_server_port[sock] = port; - _sock = sock; - _port = port; - return 1; - } - return 0; - -} - -/* return number of bytes available in the current packet, - will return zero if parsePacket hasn't been called yet */ -int WiFiUDP::available() { - if (_sock != NO_SOCKET_AVAIL) - { - return ServerDrv::availData(_sock); - } - return 0; -} - -/* Release any resources being used by this WiFiUDP instance */ -void WiFiUDP::stop() -{ - if (_sock == NO_SOCKET_AVAIL) - return; - - ServerDrv::stopClient(_sock); - - _sock = NO_SOCKET_AVAIL; -} - -int WiFiUDP::beginPacket(const char *host, uint16_t port) -{ - // Look up the host first - int ret = 0; - IPAddress remote_addr; - if (WiFi.hostByName(host, remote_addr)) - { - return beginPacket(remote_addr, port); - } - return ret; -} - -int WiFiUDP::beginPacket(IPAddress ip, uint16_t port) -{ - if (_sock == NO_SOCKET_AVAIL) - _sock = WiFiClass::getSocket(); - if (_sock != NO_SOCKET_AVAIL) - { - ServerDrv::startClient(uint32_t(ip), port, _sock, UDP_MODE); - WiFiClass::_state[_sock] = _sock; - return 1; - } - return 0; -} - -int WiFiUDP::endPacket() -{ - return ServerDrv::sendUdpData(_sock); -} - -size_t WiFiUDP::write(uint8_t byte) -{ - return write(&byte, 1); -} - -size_t WiFiUDP::write(const uint8_t *buffer, size_t size) -{ - ServerDrv::insertDataBuf(_sock, buffer, size); - return size; -} - -int WiFiUDP::parsePacket() -{ - return available(); -} - -int WiFiUDP::read() -{ - uint8_t b; - if (available()) - { - ServerDrv::getData(_sock, &b); - return b; - }else{ - return -1; - } -} - -int WiFiUDP::read(unsigned char* buffer, size_t len) -{ - if (available()) - { - uint16_t size = 0; - if (!ServerDrv::getDataBuf(_sock, buffer, &size)) - return -1; - // TODO check if the buffer is too smal respect to buffer size - return size; - }else{ - return -1; - } -} - -int WiFiUDP::peek() -{ - uint8_t b; - if (!available()) - return -1; - - ServerDrv::getData(_sock, &b, 1); - return b; -} - -void WiFiUDP::flush() -{ - // TODO: a real check to ensure transmission has been completed -} - -IPAddress WiFiUDP::remoteIP() -{ - uint8_t _remoteIp[4] = {0}; - uint8_t _remotePort[2] = {0}; - - WiFiDrv::getRemoteData(_sock, _remoteIp, _remotePort); - IPAddress ip(_remoteIp); - return ip; -} - -uint16_t WiFiUDP::remotePort() -{ - uint8_t _remoteIp[4] = {0}; - uint8_t _remotePort[2] = {0}; - - WiFiDrv::getRemoteData(_sock, _remoteIp, _remotePort); - uint16_t port = (_remotePort[0]<<8)+_remotePort[1]; - return port; -} - diff --git a/libraries/WiFi/src/WiFiUdp.h b/libraries/WiFi/src/WiFiUdp.h deleted file mode 100644 index 039b804dc38..00000000000 --- a/libraries/WiFi/src/WiFiUdp.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - WiFiUdp.h - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino LLC. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef wifiudp_h -#define wifiudp_h - -#include - -#define UDP_TX_PACKET_MAX_SIZE 24 - -class WiFiUDP : public UDP { -private: - uint8_t _sock; // socket ID for Wiz5100 - uint16_t _port; // local port to listen on - -public: - WiFiUDP(); // Constructor - virtual uint8_t begin(uint16_t); // initialize, start listening on specified port. Returns 1 if successful, 0 if there are no sockets available to use - virtual void stop(); // Finish with the UDP socket - - // Sending UDP packets - - // Start building up a packet to send to the remote host specific in ip and port - // Returns 1 if successful, 0 if there was a problem with the supplied IP address or port - virtual int beginPacket(IPAddress ip, uint16_t port); - // Start building up a packet to send to the remote host specific in host and port - // Returns 1 if successful, 0 if there was a problem resolving the hostname or port - virtual int beginPacket(const char *host, uint16_t port); - // Finish off this packet and send it - // Returns 1 if the packet was sent successfully, 0 if there was an error - virtual int endPacket(); - // Write a single byte into the packet - virtual size_t write(uint8_t); - // Write size bytes from buffer into the packet - virtual size_t write(const uint8_t *buffer, size_t size); - - using Print::write; - - // Start processing the next available incoming packet - // Returns the size of the packet in bytes, or 0 if no packets are available - virtual int parsePacket(); - // Number of bytes remaining in the current packet - virtual int available(); - // Read a single byte from the current packet - virtual int read(); - // Read up to len bytes from the current packet and place them into buffer - // Returns the number of bytes read, or 0 if none are available - virtual int read(unsigned char* buffer, size_t len); - // Read up to len characters from the current packet and place them into buffer - // Returns the number of characters read, or 0 if none are available - virtual int read(char* buffer, size_t len) { return read((unsigned char*)buffer, len); }; - // Return the next byte from the current packet without moving on to the next byte - virtual int peek(); - virtual void flush(); // Finish reading the current packet - - // Return the IP address of the host who sent the current incoming packet - virtual IPAddress remoteIP(); - // Return the port of the host who sent the current incoming packet - virtual uint16_t remotePort(); - - friend class WiFiDrv; -}; - -#endif diff --git a/libraries/WiFi/src/utility/debug.h b/libraries/WiFi/src/utility/debug.h deleted file mode 100644 index 5569e45d9e9..00000000000 --- a/libraries/WiFi/src/utility/debug.h +++ /dev/null @@ -1,95 +0,0 @@ -/* - debug.h - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ -//*********************************************/ -// -// File: debug.h -// -// Author: dlf (Metodo2 srl) -// -//********************************************/ - - -#ifndef Debug_H -#define Debug_H - -#include -#include - -#define PRINT_FILE_LINE() do { \ - Serial.print("[");Serial.print(__FILE__); \ - Serial.print("::");Serial.print(__LINE__);Serial.print("]");\ -}while (0); - -#ifdef _DEBUG_ - -#define INFO(format, args...) do { \ - char buf[250]; \ - sprintf(buf, format, args); \ - Serial.println(buf); \ -} while(0); - -#define INFO1(x) do { PRINT_FILE_LINE() Serial.print("-I-");\ - Serial.println(x); \ -}while (0); - - -#define INFO2(x,y) do { PRINT_FILE_LINE() Serial.print("-I-");\ - Serial.print(x,16);Serial.print(",");Serial.println(y,16); \ -}while (0); - - -#else -#define INFO1(x) do {} while(0); -#define INFO2(x,y) do {} while(0); -#define INFO(format, args...) do {} while(0); -#endif - -#if 0 -#define WARN(args) do { PRINT_FILE_LINE() \ - Serial.print("-W-"); Serial.println(args); \ -}while (0); -#else -#define WARN(args) do {} while (0); -#endif - -#if _DEBUG_SPI_ -#define DBG_PIN2 5 -#define DBG_PIN 4 - -#define START() digitalWrite(DBG_PIN2, HIGH); -#define END() digitalWrite(DBG_PIN2, LOW); -#define SET_TRIGGER() digitalWrite(DBG_PIN, HIGH); -#define RST_TRIGGER() digitalWrite(DBG_PIN, LOW); - -#define INIT_TRIGGER() pinMode(DBG_PIN, OUTPUT); \ - pinMode(DBG_PIN2, OUTPUT); \ - RST_TRIGGER() -#define TOGGLE_TRIGGER() SET_TRIGGER() \ - delayMicroseconds(2); \ - RST_TRIGGER() -#else -#define START() -#define END() -#define SET_TRIGGER() -#define RST_TRIGGER() -#define INIT_TRIGGER() -#define TOGGLE_TRIGGER() -#endif - -#endif diff --git a/libraries/WiFi/src/utility/server_drv.cpp b/libraries/WiFi/src/utility/server_drv.cpp deleted file mode 100644 index fc9647394ef..00000000000 --- a/libraries/WiFi/src/utility/server_drv.cpp +++ /dev/null @@ -1,327 +0,0 @@ -/* - server_drv.cpp - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -//#define _DEBUG_ - -#include "utility/server_drv.h" - -#include "Arduino.h" -#include "utility/spi_drv.h" - -extern "C" { -#include "utility/wl_types.h" -#include "utility/debug.h" -} - - -// Start server TCP on port specified -void ServerDrv::startServer(uint16_t port, uint8_t sock, uint8_t protMode) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(START_SERVER_TCP_CMD, PARAM_NUMS_3); - SpiDrv::sendParam(port); - SpiDrv::sendParam(&sock, 1); - SpiDrv::sendParam(&protMode, 1, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseCmd(START_SERVER_TCP_CMD, PARAM_NUMS_1, &_data, &_dataLen)) - { - WARN("error waitResponse"); - } - SpiDrv::spiSlaveDeselect(); -} - -// Start server TCP on port specified -void ServerDrv::startClient(uint32_t ipAddress, uint16_t port, uint8_t sock, uint8_t protMode) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(START_CLIENT_TCP_CMD, PARAM_NUMS_4); - SpiDrv::sendParam((uint8_t*)&ipAddress, sizeof(ipAddress)); - SpiDrv::sendParam(port); - SpiDrv::sendParam(&sock, 1); - SpiDrv::sendParam(&protMode, 1, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseCmd(START_CLIENT_TCP_CMD, PARAM_NUMS_1, &_data, &_dataLen)) - { - WARN("error waitResponse"); - } - SpiDrv::spiSlaveDeselect(); -} - -// Start server TCP on port specified -void ServerDrv::stopClient(uint8_t sock) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(STOP_CLIENT_TCP_CMD, PARAM_NUMS_1); - SpiDrv::sendParam(&sock, 1, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseCmd(STOP_CLIENT_TCP_CMD, PARAM_NUMS_1, &_data, &_dataLen)) - { - WARN("error waitResponse"); - } - SpiDrv::spiSlaveDeselect(); -} - - -uint8_t ServerDrv::getServerState(uint8_t sock) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(GET_STATE_TCP_CMD, PARAM_NUMS_1); - SpiDrv::sendParam(&sock, sizeof(sock), LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseCmd(GET_STATE_TCP_CMD, PARAM_NUMS_1, &_data, &_dataLen)) - { - WARN("error waitResponse"); - } - SpiDrv::spiSlaveDeselect(); - return _data; -} - -uint8_t ServerDrv::getClientState(uint8_t sock) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(GET_CLIENT_STATE_TCP_CMD, PARAM_NUMS_1); - SpiDrv::sendParam(&sock, sizeof(sock), LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseCmd(GET_CLIENT_STATE_TCP_CMD, PARAM_NUMS_1, &_data, &_dataLen)) - { - WARN("error waitResponse"); - } - SpiDrv::spiSlaveDeselect(); - return _data; -} - -uint16_t ServerDrv::availData(uint8_t sock) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(AVAIL_DATA_TCP_CMD, PARAM_NUMS_1); - SpiDrv::sendParam(&sock, sizeof(sock), LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _dataLen = 0; - uint16_t len = 0; - - SpiDrv::waitResponseCmd(AVAIL_DATA_TCP_CMD, PARAM_NUMS_1, (uint8_t*)&len, &_dataLen); - - SpiDrv::spiSlaveDeselect(); - - return len; -} - -bool ServerDrv::getData(uint8_t sock, uint8_t *data, uint8_t peek) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(GET_DATA_TCP_CMD, PARAM_NUMS_2); - SpiDrv::sendParam(&sock, sizeof(sock)); - SpiDrv::sendParam(peek, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseData8(GET_DATA_TCP_CMD, &_data, &_dataLen)) - { - WARN("error waitResponse"); - } - SpiDrv::spiSlaveDeselect(); - if (_dataLen!=0) - { - *data = _data; - return true; - } - return false; -} - -bool ServerDrv::getDataBuf(uint8_t sock, uint8_t *_data, uint16_t *_dataLen) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(GET_DATABUF_TCP_CMD, PARAM_NUMS_1); - SpiDrv::sendBuffer(&sock, sizeof(sock), LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - if (!SpiDrv::waitResponseData16(GET_DATABUF_TCP_CMD, _data, _dataLen)) - { - WARN("error waitResponse"); - } - SpiDrv::spiSlaveDeselect(); - if (*_dataLen!=0) - { - return true; - } - return false; -} - -bool ServerDrv::insertDataBuf(uint8_t sock, const uint8_t *data, uint16_t _len) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(INSERT_DATABUF_CMD, PARAM_NUMS_2); - SpiDrv::sendBuffer(&sock, sizeof(sock)); - SpiDrv::sendBuffer((uint8_t *)data, _len, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseData8(INSERT_DATABUF_CMD, &_data, &_dataLen)) - { - WARN("error waitResponse"); - } - SpiDrv::spiSlaveDeselect(); - if (_dataLen!=0) - { - return (_data == 1); - } - return false; -} - -bool ServerDrv::sendUdpData(uint8_t sock) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(SEND_DATA_UDP_CMD, PARAM_NUMS_1); - SpiDrv::sendParam(&sock, sizeof(sock), LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseData8(SEND_DATA_UDP_CMD, &_data, &_dataLen)) - { - WARN("error waitResponse"); - } - SpiDrv::spiSlaveDeselect(); - if (_dataLen!=0) - { - return (_data == 1); - } - return false; -} - - -bool ServerDrv::sendData(uint8_t sock, const uint8_t *data, uint16_t len) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(SEND_DATA_TCP_CMD, PARAM_NUMS_2); - SpiDrv::sendBuffer(&sock, sizeof(sock)); - SpiDrv::sendBuffer((uint8_t *)data, len, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseData8(SEND_DATA_TCP_CMD, &_data, &_dataLen)) - { - WARN("error waitResponse"); - } - SpiDrv::spiSlaveDeselect(); - if (_dataLen!=0) - { - return (_data == 1); - } - return false; -} - - -uint8_t ServerDrv::checkDataSent(uint8_t sock) -{ - const uint16_t TIMEOUT_DATA_SENT = 25; - uint16_t timeout = 0; - uint8_t _data = 0; - uint8_t _dataLen = 0; - - do { - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(DATA_SENT_TCP_CMD, PARAM_NUMS_1); - SpiDrv::sendParam(&sock, sizeof(sock), LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - if (!SpiDrv::waitResponseCmd(DATA_SENT_TCP_CMD, PARAM_NUMS_1, &_data, &_dataLen)) - { - WARN("error waitResponse isDataSent"); - } - SpiDrv::spiSlaveDeselect(); - - if (_data) timeout = 0; - else{ - ++timeout; - delay(100); - } - - }while((_data==0)&&(timeout -#include "utility/wifi_spi.h" - -typedef enum eProtMode {TCP_MODE, UDP_MODE}tProtMode; - -class ServerDrv -{ -public: - - // Start server TCP on port specified - static void startServer(uint16_t port, uint8_t sock, uint8_t protMode=TCP_MODE); - - static void startClient(uint32_t ipAddress, uint16_t port, uint8_t sock, uint8_t protMode=TCP_MODE); - - static void stopClient(uint8_t sock); - - static uint8_t getServerState(uint8_t sock); - - static uint8_t getClientState(uint8_t sock); - - static bool getData(uint8_t sock, uint8_t *data, uint8_t peek = 0); - - static bool getDataBuf(uint8_t sock, uint8_t *data, uint16_t *len); - - static bool insertDataBuf(uint8_t sock, const uint8_t *_data, uint16_t _dataLen); - - static bool sendData(uint8_t sock, const uint8_t *data, uint16_t len); - - static bool sendUdpData(uint8_t sock); - - static uint16_t availData(uint8_t sock); - - static uint8_t checkDataSent(uint8_t sock); -}; - -extern ServerDrv serverDrv; - -#endif diff --git a/libraries/WiFi/src/utility/spi_drv.cpp b/libraries/WiFi/src/utility/spi_drv.cpp deleted file mode 100644 index 2bf1bb71512..00000000000 --- a/libraries/WiFi/src/utility/spi_drv.cpp +++ /dev/null @@ -1,496 +0,0 @@ -/* - spi_drv.cpp - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#include "Arduino.h" -#include -#include "utility/spi_drv.h" -#include "pins_arduino.h" -//#define _DEBUG_ -extern "C" { -#include "utility/debug.h" -} - -#define DATAOUT 11 // MOSI -#define DATAIN 12 // MISO -#define SPICLOCK 13 // sck -#define SLAVESELECT 10 // ss -#define SLAVEREADY 7 // handshake pin -#define WIFILED 9 // led on wifi shield - -#define DELAY_SPI(X) { int ii=0; do { asm volatile("nop"); } while (++ii < (X*F_CPU/16000000)); } -#define DELAY_TRANSFER() DELAY_SPI(10) - -void SpiDrv::begin() -{ - SPI.begin(); - pinMode(SLAVESELECT, OUTPUT); - pinMode(SLAVEREADY, INPUT); - pinMode(WIFILED, OUTPUT); - - // digitalWrite(SCK, LOW); - // digitalWrite(MOSI, LOW); - digitalWrite(SS, HIGH); - digitalWrite(SLAVESELECT, HIGH); - digitalWrite(WIFILED, LOW); - -#ifdef _DEBUG_ - INIT_TRIGGER() -#endif -} - -void SpiDrv::end() { - SPI.end(); -} - -void SpiDrv::spiSlaveSelect() -{ - digitalWrite(SLAVESELECT,LOW); -} - - -void SpiDrv::spiSlaveDeselect() -{ - digitalWrite(SLAVESELECT,HIGH); -} - - -char SpiDrv::spiTransfer(volatile char data) -{ - char result = SPI.transfer(data); - DELAY_TRANSFER(); - - return result; // return the received byte -} - -int SpiDrv::waitSpiChar(unsigned char waitChar) -{ - int timeout = TIMEOUT_CHAR; - unsigned char _readChar = 0; - do{ - _readChar = readChar(); //get data byte - if (_readChar == ERR_CMD) - { - WARN("Err cmd received\n"); - return -1; - } - }while((timeout-- > 0) && (_readChar != waitChar)); - return (_readChar == waitChar); -} - -int SpiDrv::readAndCheckChar(char checkChar, char* readChar) -{ - getParam((uint8_t*)readChar); - - return (*readChar == checkChar); -} - -char SpiDrv::readChar() -{ - uint8_t readChar = 0; - getParam(&readChar); - return readChar; -} - -#define WAIT_START_CMD(x) waitSpiChar(START_CMD) - -#define IF_CHECK_START_CMD(x) \ - if (!WAIT_START_CMD(_data)) \ - { \ - TOGGLE_TRIGGER() \ - WARN("Error waiting START_CMD"); \ - return 0; \ - }else \ - -#define CHECK_DATA(check, x) \ - if (!readAndCheckChar(check, &x)) \ - { \ - TOGGLE_TRIGGER() \ - WARN("Reply error"); \ - INFO2(check, (uint8_t)x); \ - return 0; \ - }else \ - -#define waitSlaveReady() (digitalRead(SLAVEREADY) == LOW) -#define waitSlaveSign() (digitalRead(SLAVEREADY) == HIGH) -#define waitSlaveSignalH() while(digitalRead(SLAVEREADY) != HIGH){} -#define waitSlaveSignalL() while(digitalRead(SLAVEREADY) != LOW){} - -void SpiDrv::waitForSlaveSign() -{ - while (!waitSlaveSign()); -} - -void SpiDrv::waitForSlaveReady() -{ - while (!waitSlaveReady()); -} - -void SpiDrv::getParam(uint8_t* param) -{ - // Get Params data - *param = spiTransfer(DUMMY_DATA); - DELAY_TRANSFER(); -} - -int SpiDrv::waitResponseCmd(uint8_t cmd, uint8_t numParam, uint8_t* param, uint8_t* param_len) -{ - char _data = 0; - int ii = 0; - - IF_CHECK_START_CMD(_data) - { - CHECK_DATA(cmd | REPLY_FLAG, _data){}; - - CHECK_DATA(numParam, _data); - { - readParamLen8(param_len); - for (ii=0; ii<(*param_len); ++ii) - { - // Get Params data - //param[ii] = spiTransfer(DUMMY_DATA); - getParam(¶m[ii]); - } - } - - readAndCheckChar(END_CMD, &_data); - } - - return 1; -} -/* -int SpiDrv::waitResponse(uint8_t cmd, uint8_t numParam, uint8_t* param, uint16_t* param_len) -{ - char _data = 0; - int i =0, ii = 0; - - IF_CHECK_START_CMD(_data) - { - CHECK_DATA(cmd | REPLY_FLAG, _data){}; - - CHECK_DATA(numParam, _data); - { - readParamLen16(param_len); - for (ii=0; ii<(*param_len); ++ii) - { - // Get Params data - param[ii] = spiTransfer(DUMMY_DATA); - } - } - - readAndCheckChar(END_CMD, &_data); - } - - return 1; -} -*/ - -int SpiDrv::waitResponseData16(uint8_t cmd, uint8_t* param, uint16_t* param_len) -{ - char _data = 0; - uint16_t ii = 0; - - IF_CHECK_START_CMD(_data) - { - CHECK_DATA(cmd | REPLY_FLAG, _data){}; - - uint8_t numParam = readChar(); - if (numParam != 0) - { - readParamLen16(param_len); - for (ii=0; ii<(*param_len); ++ii) - { - // Get Params data - param[ii] = spiTransfer(DUMMY_DATA); - } - } - - readAndCheckChar(END_CMD, &_data); - } - - return 1; -} - -int SpiDrv::waitResponseData8(uint8_t cmd, uint8_t* param, uint8_t* param_len) -{ - char _data = 0; - int ii = 0; - - IF_CHECK_START_CMD(_data) - { - CHECK_DATA(cmd | REPLY_FLAG, _data){}; - - uint8_t numParam = readChar(); - if (numParam != 0) - { - readParamLen8(param_len); - for (ii=0; ii<(*param_len); ++ii) - { - // Get Params data - param[ii] = spiTransfer(DUMMY_DATA); - } - } - - readAndCheckChar(END_CMD, &_data); - } - - return 1; -} - -int SpiDrv::waitResponseParams(uint8_t cmd, uint8_t numParam, tParam* params) -{ - char _data = 0; - int i =0, ii = 0; - - - IF_CHECK_START_CMD(_data) - { - CHECK_DATA(cmd | REPLY_FLAG, _data){}; - - uint8_t _numParam = readChar(); - if (_numParam != 0) - { - for (i=0; i<_numParam; ++i) - { - params[i].paramLen = readParamLen8(); - for (ii=0; ii maxNumParams) - { - numParam = maxNumParams; - } - *numParamRead = numParam; - if (numParam != 0) - { - for (i=0; i maxNumParams) - { - numParam = maxNumParams; - } - *numParamRead = numParam; - if (numParam != 0) - { - for (i=0; i>8)); - spiTransfer((uint8_t)(param_len & 0xff)); -} - -uint8_t SpiDrv::readParamLen8(uint8_t* param_len) -{ - uint8_t _param_len = spiTransfer(DUMMY_DATA); - if (param_len != NULL) - { - *param_len = _param_len; - } - return _param_len; -} - -uint16_t SpiDrv::readParamLen16(uint16_t* param_len) -{ - uint16_t _param_len = spiTransfer(DUMMY_DATA)<<8 | (spiTransfer(DUMMY_DATA)& 0xff); - if (param_len != NULL) - { - *param_len = _param_len; - } - return _param_len; -} - - -void SpiDrv::sendBuffer(uint8_t* param, uint16_t param_len, uint8_t lastParam) -{ - uint16_t i = 0; - - // Send Spi paramLen - sendParamLen16(param_len); - - // Send Spi param data - for (i=0; i>8)); - spiTransfer((uint8_t)(param & 0xff)); - - // if lastParam==1 Send Spi END CMD - if (lastParam == 1) - spiTransfer(END_CMD); -} - -/* Cmd Struct Message */ -/* _________________________________________________________________________________ */ -/*| START CMD | C/R | CMD |[TOT LEN]| N.PARAM | PARAM LEN | PARAM | .. | END CMD | */ -/*|___________|______|______|_________|_________|___________|________|____|_________| */ -/*| 8 bit | 1bit | 7bit | 8bit | 8bit | 8bit | nbytes | .. | 8bit | */ -/*|___________|______|______|_________|_________|___________|________|____|_________| */ - -void SpiDrv::sendCmd(uint8_t cmd, uint8_t numParam) -{ - // Send Spi START CMD - spiTransfer(START_CMD); - - //waitForSlaveSign(); - //wait the interrupt trigger on slave - delayMicroseconds(SPI_START_CMD_DELAY); - - // Send Spi C + cmd - spiTransfer(cmd & ~(REPLY_FLAG)); - - // Send Spi totLen - //spiTransfer(totLen); - - // Send Spi numParam - spiTransfer(numParam); - - // If numParam == 0 send END CMD - if (numParam == 0) - spiTransfer(END_CMD); - -} - -SpiDrv spiDrv; diff --git a/libraries/WiFi/src/utility/spi_drv.h b/libraries/WiFi/src/utility/spi_drv.h deleted file mode 100644 index ab8d97d66b9..00000000000 --- a/libraries/WiFi/src/utility/spi_drv.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - spi_drv.h - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef SPI_Drv_h -#define SPI_Drv_h - -#include -#include "utility/wifi_spi.h" - -#define SPI_START_CMD_DELAY 10 - -#define NO_LAST_PARAM 0 -#define LAST_PARAM 1 - -#define DUMMY_DATA 0xFF - -#define WAIT_FOR_SLAVE_SELECT() \ - if (!initialized) { \ - SpiDrv::begin(); \ - initialized = true; \ - } \ - SpiDrv::waitForSlaveReady(); \ - SpiDrv::spiSlaveSelect(); - -static bool initialized = false; - -class SpiDrv -{ -private: - //static bool waitSlaveReady(); - static void waitForSlaveSign(); - static void getParam(uint8_t* param); -public: - - static void begin(); - - static void end(); - - static void spiDriverInit(); - - static void spiSlaveSelect(); - - static void spiSlaveDeselect(); - - static char spiTransfer(volatile char data); - - static void waitForSlaveReady(); - - //static int waitSpiChar(char waitChar, char* readChar); - - static int waitSpiChar(unsigned char waitChar); - - static int readAndCheckChar(char checkChar, char* readChar); - - static char readChar(); - - static int waitResponseParams(uint8_t cmd, uint8_t numParam, tParam* params); - - static int waitResponseCmd(uint8_t cmd, uint8_t numParam, uint8_t* param, uint8_t* param_len); - - static int waitResponseData8(uint8_t cmd, uint8_t* param, uint8_t* param_len); - - static int waitResponseData16(uint8_t cmd, uint8_t* param, uint16_t* param_len); - /* - static int waitResponse(uint8_t cmd, tParam* params, uint8_t* numParamRead, uint8_t maxNumParams); - - static int waitResponse(uint8_t cmd, uint8_t numParam, uint8_t* param, uint16_t* param_len); -*/ - static int waitResponse(uint8_t cmd, uint8_t* numParamRead, uint8_t** params, uint8_t maxNumParams); - - static void sendParam(uint8_t* param, uint8_t param_len, uint8_t lastParam = NO_LAST_PARAM); - - static void sendParamLen8(uint8_t param_len); - - static void sendParamLen16(uint16_t param_len); - - static uint8_t readParamLen8(uint8_t* param_len = NULL); - - static uint16_t readParamLen16(uint16_t* param_len = NULL); - - static void sendBuffer(uint8_t* param, uint16_t param_len, uint8_t lastParam = NO_LAST_PARAM); - - static void sendParam(uint16_t param, uint8_t lastParam = NO_LAST_PARAM); - - static void sendCmd(uint8_t cmd, uint8_t numParam); -}; - -extern SpiDrv spiDrv; - -#endif diff --git a/libraries/WiFi/src/utility/wifi_drv.cpp b/libraries/WiFi/src/utility/wifi_drv.cpp deleted file mode 100644 index bee61bf2176..00000000000 --- a/libraries/WiFi/src/utility/wifi_drv.cpp +++ /dev/null @@ -1,579 +0,0 @@ -/* - wifi_drv.cpp - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#include -#include -#include - -#include "Arduino.h" -#include "utility/spi_drv.h" -#include "utility/wifi_drv.h" - -#define _DEBUG_ - -extern "C" { -#include "utility/wifi_spi.h" -#include "utility/wl_types.h" -#include "utility/debug.h" -} - -// Array of data to cache the information related to the networks discovered -char WiFiDrv::_networkSsid[][WL_SSID_MAX_LENGTH] = {{"1"},{"2"},{"3"},{"4"},{"5"}}; -int32_t WiFiDrv::_networkRssi[WL_NETWORKS_LIST_MAXNUM] = { 0 }; -uint8_t WiFiDrv::_networkEncr[WL_NETWORKS_LIST_MAXNUM] = { 0 }; - -// Cached values of retrieved data -char WiFiDrv::_ssid[] = {0}; -uint8_t WiFiDrv::_bssid[] = {0}; -uint8_t WiFiDrv::_mac[] = {0}; -uint8_t WiFiDrv::_localIp[] = {0}; -uint8_t WiFiDrv::_subnetMask[] = {0}; -uint8_t WiFiDrv::_gatewayIp[] = {0}; -// Firmware version -char WiFiDrv::fwVersion[] = {0}; - - -// Private Methods - -void WiFiDrv::getNetworkData(uint8_t *ip, uint8_t *mask, uint8_t *gwip) -{ - tParam params[PARAM_NUMS_3] = { {0, (char*)ip}, {0, (char*)mask}, {0, (char*)gwip}}; - - WAIT_FOR_SLAVE_SELECT(); - - // Send Command - SpiDrv::sendCmd(GET_IPADDR_CMD, PARAM_NUMS_1); - - uint8_t _dummy = DUMMY_DATA; - SpiDrv::sendParam(&_dummy, sizeof(_dummy), LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - SpiDrv::waitResponseParams(GET_IPADDR_CMD, PARAM_NUMS_3, params); - - SpiDrv::spiSlaveDeselect(); -} - -void WiFiDrv::getRemoteData(uint8_t sock, uint8_t *ip, uint8_t *port) -{ - tParam params[PARAM_NUMS_2] = { {0, (char*)ip}, {0, (char*)port} }; - - WAIT_FOR_SLAVE_SELECT(); - - // Send Command - SpiDrv::sendCmd(GET_REMOTE_DATA_CMD, PARAM_NUMS_1); - SpiDrv::sendParam(&sock, sizeof(sock), LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - SpiDrv::waitResponseParams(GET_REMOTE_DATA_CMD, PARAM_NUMS_2, params); - - SpiDrv::spiSlaveDeselect(); -} - - -// Public Methods - - -void WiFiDrv::wifiDriverInit() -{ - SpiDrv::begin(); -} - -int8_t WiFiDrv::wifiSetNetwork(char* ssid, uint8_t ssid_len) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(SET_NET_CMD, PARAM_NUMS_1); - SpiDrv::sendParam((uint8_t*)ssid, ssid_len, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseCmd(SET_NET_CMD, PARAM_NUMS_1, &_data, &_dataLen)) - { - WARN("error waitResponse"); - _data = WL_FAILURE; - } - SpiDrv::spiSlaveDeselect(); - - return(_data == WIFI_SPI_ACK) ? WL_SUCCESS : WL_FAILURE; -} - -int8_t WiFiDrv::wifiSetPassphrase(char* ssid, uint8_t ssid_len, const char *passphrase, const uint8_t len) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(SET_PASSPHRASE_CMD, PARAM_NUMS_2); - SpiDrv::sendParam((uint8_t*)ssid, ssid_len, NO_LAST_PARAM); - SpiDrv::sendParam((uint8_t*)passphrase, len, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseCmd(SET_PASSPHRASE_CMD, PARAM_NUMS_1, &_data, &_dataLen)) - { - WARN("error waitResponse"); - _data = WL_FAILURE; - } - SpiDrv::spiSlaveDeselect(); - return _data; -} - - -int8_t WiFiDrv::wifiSetKey(char* ssid, uint8_t ssid_len, uint8_t key_idx, const void *key, const uint8_t len) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(SET_KEY_CMD, PARAM_NUMS_3); - SpiDrv::sendParam((uint8_t*)ssid, ssid_len, NO_LAST_PARAM); - SpiDrv::sendParam(&key_idx, KEY_IDX_LEN, NO_LAST_PARAM); - SpiDrv::sendParam((uint8_t*)key, len, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseCmd(SET_KEY_CMD, PARAM_NUMS_1, &_data, &_dataLen)) - { - WARN("error waitResponse"); - _data = WL_FAILURE; - } - SpiDrv::spiSlaveDeselect(); - return _data; -} - -void WiFiDrv::config(uint8_t validParams, uint32_t local_ip, uint32_t gateway, uint32_t subnet) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(SET_IP_CONFIG_CMD, PARAM_NUMS_4); - SpiDrv::sendParam((uint8_t*)&validParams, 1, NO_LAST_PARAM); - SpiDrv::sendParam((uint8_t*)&local_ip, 4, NO_LAST_PARAM); - SpiDrv::sendParam((uint8_t*)&gateway, 4, NO_LAST_PARAM); - SpiDrv::sendParam((uint8_t*)&subnet, 4, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseCmd(SET_IP_CONFIG_CMD, PARAM_NUMS_1, &_data, &_dataLen)) - { - WARN("error waitResponse"); - _data = WL_FAILURE; - } - SpiDrv::spiSlaveDeselect(); -} - -void WiFiDrv::setDNS(uint8_t validParams, uint32_t dns_server1, uint32_t dns_server2) -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(SET_DNS_CONFIG_CMD, PARAM_NUMS_3); - SpiDrv::sendParam((uint8_t*)&validParams, 1, NO_LAST_PARAM); - SpiDrv::sendParam((uint8_t*)&dns_server1, 4, NO_LAST_PARAM); - SpiDrv::sendParam((uint8_t*)&dns_server2, 4, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseCmd(SET_DNS_CONFIG_CMD, PARAM_NUMS_1, &_data, &_dataLen)) - { - WARN("error waitResponse"); - _data = WL_FAILURE; - } - SpiDrv::spiSlaveDeselect(); -} - - - -int8_t WiFiDrv::disconnect() -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(DISCONNECT_CMD, PARAM_NUMS_1); - - uint8_t _dummy = DUMMY_DATA; - SpiDrv::sendParam(&_dummy, 1, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - int8_t result = SpiDrv::waitResponseCmd(DISCONNECT_CMD, PARAM_NUMS_1, &_data, &_dataLen); - - SpiDrv::spiSlaveDeselect(); - - return result; -} - -uint8_t WiFiDrv::getConnectionStatus() -{ - WAIT_FOR_SLAVE_SELECT(); - - // Send Command - SpiDrv::sendCmd(GET_CONN_STATUS_CMD, PARAM_NUMS_0); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = -1; - uint8_t _dataLen = 0; - SpiDrv::waitResponseCmd(GET_CONN_STATUS_CMD, PARAM_NUMS_1, &_data, &_dataLen); - - SpiDrv::spiSlaveDeselect(); - - return _data; -} - -uint8_t* WiFiDrv::getMacAddress() -{ - WAIT_FOR_SLAVE_SELECT(); - - // Send Command - SpiDrv::sendCmd(GET_MACADDR_CMD, PARAM_NUMS_1); - - uint8_t _dummy = DUMMY_DATA; - SpiDrv::sendParam(&_dummy, 1, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _dataLen = 0; - SpiDrv::waitResponseCmd(GET_MACADDR_CMD, PARAM_NUMS_1, _mac, &_dataLen); - - SpiDrv::spiSlaveDeselect(); - - return _mac; -} - -void WiFiDrv::getIpAddress(IPAddress& ip) -{ - getNetworkData(_localIp, _subnetMask, _gatewayIp); - ip = _localIp; -} - - void WiFiDrv::getSubnetMask(IPAddress& mask) - { - getNetworkData(_localIp, _subnetMask, _gatewayIp); - mask = _subnetMask; - } - - void WiFiDrv::getGatewayIP(IPAddress& ip) - { - getNetworkData(_localIp, _subnetMask, _gatewayIp); - ip = _gatewayIp; - } - -char* WiFiDrv::getCurrentSSID() -{ - WAIT_FOR_SLAVE_SELECT(); - - // Send Command - SpiDrv::sendCmd(GET_CURR_SSID_CMD, PARAM_NUMS_1); - - uint8_t _dummy = DUMMY_DATA; - SpiDrv::sendParam(&_dummy, 1, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _dataLen = 0; - SpiDrv::waitResponseCmd(GET_CURR_SSID_CMD, PARAM_NUMS_1, (uint8_t*)_ssid, &_dataLen); - - SpiDrv::spiSlaveDeselect(); - - return _ssid; -} - -uint8_t* WiFiDrv::getCurrentBSSID() -{ - WAIT_FOR_SLAVE_SELECT(); - - // Send Command - SpiDrv::sendCmd(GET_CURR_BSSID_CMD, PARAM_NUMS_1); - - uint8_t _dummy = DUMMY_DATA; - SpiDrv::sendParam(&_dummy, 1, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _dataLen = 0; - SpiDrv::waitResponseCmd(GET_CURR_BSSID_CMD, PARAM_NUMS_1, _bssid, &_dataLen); - - SpiDrv::spiSlaveDeselect(); - - return _bssid; -} - -int32_t WiFiDrv::getCurrentRSSI() -{ - WAIT_FOR_SLAVE_SELECT(); - - // Send Command - SpiDrv::sendCmd(GET_CURR_RSSI_CMD, PARAM_NUMS_1); - - uint8_t _dummy = DUMMY_DATA; - SpiDrv::sendParam(&_dummy, 1, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _dataLen = 0; - int32_t rssi = 0; - SpiDrv::waitResponseCmd(GET_CURR_RSSI_CMD, PARAM_NUMS_1, (uint8_t*)&rssi, &_dataLen); - - SpiDrv::spiSlaveDeselect(); - - return rssi; -} - -uint8_t WiFiDrv::getCurrentEncryptionType() -{ - WAIT_FOR_SLAVE_SELECT(); - - // Send Command - SpiDrv::sendCmd(GET_CURR_ENCT_CMD, PARAM_NUMS_1); - - uint8_t _dummy = DUMMY_DATA; - SpiDrv::sendParam(&_dummy, 1, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t dataLen = 0; - uint8_t encType = 0; - SpiDrv::waitResponseCmd(GET_CURR_ENCT_CMD, PARAM_NUMS_1, (uint8_t*)&encType, &dataLen); - - SpiDrv::spiSlaveDeselect(); - - return encType; -} - -int8_t WiFiDrv::startScanNetworks() -{ - WAIT_FOR_SLAVE_SELECT(); - - // Send Command - SpiDrv::sendCmd(START_SCAN_NETWORKS, PARAM_NUMS_0); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - - if (!SpiDrv::waitResponseCmd(START_SCAN_NETWORKS, PARAM_NUMS_1, &_data, &_dataLen)) - { - WARN("error waitResponse"); - _data = WL_FAILURE; - } - - SpiDrv::spiSlaveDeselect(); - - return (_data == WL_FAILURE)? _data : WL_SUCCESS; -} - - -uint8_t WiFiDrv::getScanNetworks() -{ - WAIT_FOR_SLAVE_SELECT(); - - // Send Command - SpiDrv::sendCmd(SCAN_NETWORKS, PARAM_NUMS_0); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t ssidListNum = 0; - SpiDrv::waitResponse(SCAN_NETWORKS, &ssidListNum, (uint8_t**)_networkSsid, WL_NETWORKS_LIST_MAXNUM); - - SpiDrv::spiSlaveDeselect(); - - return ssidListNum; -} - -char* WiFiDrv::getSSIDNetoworks(uint8_t networkItem) -{ - if (networkItem >= WL_NETWORKS_LIST_MAXNUM) - return NULL; - - return _networkSsid[networkItem]; -} - -uint8_t WiFiDrv::getEncTypeNetowrks(uint8_t networkItem) -{ - if (networkItem >= WL_NETWORKS_LIST_MAXNUM) - return NULL; - - WAIT_FOR_SLAVE_SELECT(); - - // Send Command - SpiDrv::sendCmd(GET_IDX_ENCT_CMD, PARAM_NUMS_1); - - SpiDrv::sendParam(&networkItem, 1, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t dataLen = 0; - uint8_t encType = 0; - SpiDrv::waitResponseCmd(GET_IDX_ENCT_CMD, PARAM_NUMS_1, (uint8_t*)&encType, &dataLen); - - SpiDrv::spiSlaveDeselect(); - - return encType; -} - -int32_t WiFiDrv::getRSSINetoworks(uint8_t networkItem) -{ - if (networkItem >= WL_NETWORKS_LIST_MAXNUM) - return NULL; - int32_t networkRssi = 0; - - WAIT_FOR_SLAVE_SELECT(); - - // Send Command - SpiDrv::sendCmd(GET_IDX_RSSI_CMD, PARAM_NUMS_1); - - SpiDrv::sendParam(&networkItem, 1, LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t dataLen = 0; - SpiDrv::waitResponseCmd(GET_IDX_RSSI_CMD, PARAM_NUMS_1, (uint8_t*)&networkRssi, &dataLen); - - SpiDrv::spiSlaveDeselect(); - - return networkRssi; -} - -uint8_t WiFiDrv::reqHostByName(const char* aHostname) -{ - WAIT_FOR_SLAVE_SELECT(); - - // Send Command - SpiDrv::sendCmd(REQ_HOST_BY_NAME_CMD, PARAM_NUMS_1); - SpiDrv::sendParam((uint8_t*)aHostname, strlen(aHostname), LAST_PARAM); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _data = 0; - uint8_t _dataLen = 0; - uint8_t result = SpiDrv::waitResponseCmd(REQ_HOST_BY_NAME_CMD, PARAM_NUMS_1, &_data, &_dataLen); - - SpiDrv::spiSlaveDeselect(); - - return result; -} - -int WiFiDrv::getHostByName(IPAddress& aResult) -{ - uint8_t _ipAddr[WL_IPV4_LENGTH]; - IPAddress dummy(0xFF,0xFF,0xFF,0xFF); - int result = 0; - - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(GET_HOST_BY_NAME_CMD, PARAM_NUMS_0); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseCmd(GET_HOST_BY_NAME_CMD, PARAM_NUMS_1, _ipAddr, &_dataLen)) - { - WARN("error waitResponse"); - }else{ - aResult = _ipAddr; - result = (aResult != dummy); - } - SpiDrv::spiSlaveDeselect(); - return result; -} - -int WiFiDrv::getHostByName(const char* aHostname, IPAddress& aResult) -{ - uint8_t retry = 10; - if (reqHostByName(aHostname)) - { - while(!getHostByName(aResult) && --retry > 0) - { - delay(1000); - } - }else{ - return 0; - } - return (retry>0); -} - -char* WiFiDrv::getFwVersion() -{ - WAIT_FOR_SLAVE_SELECT(); - // Send Command - SpiDrv::sendCmd(GET_FW_VERSION_CMD, PARAM_NUMS_0); - - //Wait the reply elaboration - SpiDrv::waitForSlaveReady(); - - // Wait for reply - uint8_t _dataLen = 0; - if (!SpiDrv::waitResponseCmd(GET_FW_VERSION_CMD, PARAM_NUMS_1, (uint8_t*)fwVersion, &_dataLen)) - { - WARN("error waitResponse"); - } - SpiDrv::spiSlaveDeselect(); - return fwVersion; -} - -WiFiDrv wiFiDrv; diff --git a/libraries/WiFi/src/utility/wifi_drv.h b/libraries/WiFi/src/utility/wifi_drv.h deleted file mode 100644 index 423865f8364..00000000000 --- a/libraries/WiFi/src/utility/wifi_drv.h +++ /dev/null @@ -1,267 +0,0 @@ -/* - wifi_drv.h - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef WiFi_Drv_h -#define WiFi_Drv_h - -#include -#include "utility/wifi_spi.h" -#include "IPAddress.h" -#include "WiFiUdp.h" - -// Key index length -#define KEY_IDX_LEN 1 -// 5 secs of delay to have the connection established -#define WL_DELAY_START_CONNECTION 5000 -// firmware version string length -#define WL_FW_VER_LENGTH 6 - -class WiFiDrv -{ -private: - // settings of requested network - static char _networkSsid[WL_NETWORKS_LIST_MAXNUM][WL_SSID_MAX_LENGTH]; - static int32_t _networkRssi[WL_NETWORKS_LIST_MAXNUM]; - static uint8_t _networkEncr[WL_NETWORKS_LIST_MAXNUM]; - - // firmware version string in the format a.b.c - static char fwVersion[WL_FW_VER_LENGTH]; - - // settings of current selected network - static char _ssid[WL_SSID_MAX_LENGTH]; - static uint8_t _bssid[WL_MAC_ADDR_LENGTH]; - static uint8_t _mac[WL_MAC_ADDR_LENGTH]; - static uint8_t _localIp[WL_IPV4_LENGTH]; - static uint8_t _subnetMask[WL_IPV4_LENGTH]; - static uint8_t _gatewayIp[WL_IPV4_LENGTH]; - - /* - * Get network Data information - */ - static void getNetworkData(uint8_t *ip, uint8_t *mask, uint8_t *gwip); - - static uint8_t reqHostByName(const char* aHostname); - - static int getHostByName(IPAddress& aResult); - - /* - * Get remote Data information on UDP socket - */ - static void getRemoteData(uint8_t sock, uint8_t *ip, uint8_t *port); - -public: - - /* - * Driver initialization - */ - static void wifiDriverInit(); - - /* - * Set the desired network which the connection manager should try to - * connect to. - * - * The ssid of the desired network should be specified. - * - * param ssid: The ssid of the desired network. - * param ssid_len: Lenght of ssid string. - * return: WL_SUCCESS or WL_FAILURE - */ - static int8_t wifiSetNetwork(char* ssid, uint8_t ssid_len); - - /* Start Wifi connection with passphrase - * the most secure supported mode will be automatically selected - * - * param ssid: Pointer to the SSID string. - * param ssid_len: Lenght of ssid string. - * param passphrase: Passphrase. Valid characters in a passphrase - * must be between ASCII 32-126 (decimal). - * param len: Lenght of passphrase string. - * return: WL_SUCCESS or WL_FAILURE - */ - static int8_t wifiSetPassphrase(char* ssid, uint8_t ssid_len, const char *passphrase, const uint8_t len); - - /* Start Wifi connection with WEP encryption. - * Configure a key into the device. The key type (WEP-40, WEP-104) - * is determined by the size of the key (5 bytes for WEP-40, 13 bytes for WEP-104). - * - * param ssid: Pointer to the SSID string. - * param ssid_len: Lenght of ssid string. - * param key_idx: The key index to set. Valid values are 0-3. - * param key: Key input buffer. - * param len: Lenght of key string. - * return: WL_SUCCESS or WL_FAILURE - */ - static int8_t wifiSetKey(char* ssid, uint8_t ssid_len, uint8_t key_idx, const void *key, const uint8_t len); - - /* Set ip configuration disabling dhcp client - * - * param validParams: set the number of parameters that we want to change - * i.e. validParams = 1 means that we'll change only ip address - * validParams = 3 means that we'll change ip address, gateway and netmask - * param local_ip: Static ip configuration - * param gateway: Static gateway configuration - * param subnet: Static subnet mask configuration - */ - static void config(uint8_t validParams, uint32_t local_ip, uint32_t gateway, uint32_t subnet); - - /* Set DNS ip configuration - * - * param validParams: set the number of parameters that we want to change - * i.e. validParams = 1 means that we'll change only dns_server1 - * validParams = 2 means that we'll change dns_server1 and dns_server2 - * param dns_server1: Static DNS server1 configuration - * param dns_server2: Static DNS server2 configuration - */ - static void setDNS(uint8_t validParams, uint32_t dns_server1, uint32_t dns_server2); - - /* - * Disconnect from the network - * - * return: WL_SUCCESS or WL_FAILURE - */ - static int8_t disconnect(); - - /* - * Disconnect from the network - * - * return: one value of wl_status_t enum - */ - static uint8_t getConnectionStatus(); - - /* - * Get the interface MAC address. - * - * return: pointer to uint8_t array with length WL_MAC_ADDR_LENGTH - */ - static uint8_t* getMacAddress(); - - /* - * Get the interface IP address. - * - * return: copy the ip address value in IPAddress object - */ - static void getIpAddress(IPAddress& ip); - - /* - * Get the interface subnet mask address. - * - * return: copy the subnet mask address value in IPAddress object - */ - static void getSubnetMask(IPAddress& mask); - - /* - * Get the gateway ip address. - * - * return: copy the gateway ip address value in IPAddress object - */ - static void getGatewayIP(IPAddress& ip); - - /* - * Return the current SSID associated with the network - * - * return: ssid string - */ - static char* getCurrentSSID(); - - /* - * Return the current BSSID associated with the network. - * It is the MAC address of the Access Point - * - * return: pointer to uint8_t array with length WL_MAC_ADDR_LENGTH - */ - static uint8_t* getCurrentBSSID(); - - /* - * Return the current RSSI /Received Signal Strength in dBm) - * associated with the network - * - * return: signed value - */ - static int32_t getCurrentRSSI(); - - /* - * Return the Encryption Type associated with the network - * - * return: one value of wl_enc_type enum - */ - static uint8_t getCurrentEncryptionType(); - - /* - * Start scan WiFi networks available - * - * return: Number of discovered networks - */ - static int8_t startScanNetworks(); - - /* - * Get the networks available - * - * return: Number of discovered networks - */ - static uint8_t getScanNetworks(); - - /* - * Return the SSID discovered during the network scan. - * - * param networkItem: specify from which network item want to get the information - * - * return: ssid string of the specified item on the networks scanned list - */ - static char* getSSIDNetoworks(uint8_t networkItem); - - /* - * Return the RSSI of the networks discovered during the scanNetworks - * - * param networkItem: specify from which network item want to get the information - * - * return: signed value of RSSI of the specified item on the networks scanned list - */ - static int32_t getRSSINetoworks(uint8_t networkItem); - - /* - * Return the encryption type of the networks discovered during the scanNetworks - * - * param networkItem: specify from which network item want to get the information - * - * return: encryption type (enum wl_enc_type) of the specified item on the networks scanned list - */ - static uint8_t getEncTypeNetowrks(uint8_t networkItem); - - /* - * Resolve the given hostname to an IP address. - * param aHostname: Name to be resolved - * param aResult: IPAddress structure to store the returned IP address - * result: 1 if aIPAddrString was successfully converted to an IP address, - * else error code - */ - static int getHostByName(const char* aHostname, IPAddress& aResult); - - /* - * Get the firmware version - * result: version as string with this format a.b.c - */ - static char* getFwVersion(); - - friend class WiFiUDP; - -}; - -extern WiFiDrv wiFiDrv; - -#endif diff --git a/libraries/WiFi/src/utility/wifi_spi.h b/libraries/WiFi/src/utility/wifi_spi.h deleted file mode 100644 index d0cc754e525..00000000000 --- a/libraries/WiFi/src/utility/wifi_spi.h +++ /dev/null @@ -1,173 +0,0 @@ -/* - wifi_spi.h - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ - -#ifndef WiFi_Spi_h -#define WiFi_Spi_h - -#include -#include "utility/wl_definitions.h" - -#define CMD_FLAG 0 -#define REPLY_FLAG 1<<7 -#define DATA_FLAG 0x40 - -#define WIFI_SPI_ACK 1 -#define WIFI_SPI_ERR 0xFF - -#define TIMEOUT_CHAR 1000 - -//#define MAX_SOCK_NUM 4 /**< Maxmium number of socket */ -#define NO_SOCKET_AVAIL 255 - -#define START_CMD 0xE0 -#define END_CMD 0xEE -#define ERR_CMD 0xEF -#define CMD_POS 1 // Position of Command OpCode on SPI stream -#define PARAM_LEN_POS 2 // Position of Param len on SPI stream - - -enum { - SET_NET_CMD = 0x10, - SET_PASSPHRASE_CMD = 0x11, - SET_KEY_CMD = 0x12, - TEST_CMD = 0x13, - SET_IP_CONFIG_CMD = 0x14, - SET_DNS_CONFIG_CMD = 0x15, - - GET_CONN_STATUS_CMD = 0x20, - GET_IPADDR_CMD = 0x21, - GET_MACADDR_CMD = 0x22, - GET_CURR_SSID_CMD = 0x23, - GET_CURR_BSSID_CMD = 0x24, - GET_CURR_RSSI_CMD = 0x25, - GET_CURR_ENCT_CMD = 0x26, - SCAN_NETWORKS = 0x27, - START_SERVER_TCP_CMD= 0x28, - GET_STATE_TCP_CMD = 0x29, - DATA_SENT_TCP_CMD = 0x2A, - AVAIL_DATA_TCP_CMD = 0x2B, - GET_DATA_TCP_CMD = 0x2C, - START_CLIENT_TCP_CMD= 0x2D, - STOP_CLIENT_TCP_CMD = 0x2E, - GET_CLIENT_STATE_TCP_CMD= 0x2F, - DISCONNECT_CMD = 0x30, - GET_IDX_SSID_CMD = 0x31, - GET_IDX_RSSI_CMD = 0x32, - GET_IDX_ENCT_CMD = 0x33, - REQ_HOST_BY_NAME_CMD= 0x34, - GET_HOST_BY_NAME_CMD= 0x35, - START_SCAN_NETWORKS = 0x36, - GET_FW_VERSION_CMD = 0x37, - GET_TEST_CMD = 0x38, - SEND_DATA_UDP_CMD = 0x39, - GET_REMOTE_DATA_CMD = 0x3A, - - // All command with DATA_FLAG 0x40 send a 16bit Len - - SEND_DATA_TCP_CMD = 0x44, - GET_DATABUF_TCP_CMD = 0x45, - INSERT_DATABUF_CMD = 0x46, -}; - - -enum wl_tcp_state { - CLOSED = 0, - LISTEN = 1, - SYN_SENT = 2, - SYN_RCVD = 3, - ESTABLISHED = 4, - FIN_WAIT_1 = 5, - FIN_WAIT_2 = 6, - CLOSE_WAIT = 7, - CLOSING = 8, - LAST_ACK = 9, - TIME_WAIT = 10 -}; - - -enum numParams{ - PARAM_NUMS_0, - PARAM_NUMS_1, - PARAM_NUMS_2, - PARAM_NUMS_3, - PARAM_NUMS_4, - PARAM_NUMS_5, - MAX_PARAM_NUMS -}; - -#define MAX_PARAMS MAX_PARAM_NUMS-1 -#define PARAM_LEN_SIZE 1 - -typedef struct __attribute__((__packed__)) -{ - uint8_t paramLen; - char* param; -}tParam; - -typedef struct __attribute__((__packed__)) -{ - uint16_t dataLen; - char* data; -}tDataParam; - - -typedef struct __attribute__((__packed__)) -{ - unsigned char cmd; - unsigned char tcmd; - unsigned char nParam; - tParam params[MAX_PARAMS]; -}tSpiMsg; - -typedef struct __attribute__((__packed__)) -{ - unsigned char cmd; - unsigned char tcmd; - unsigned char nParam; - tDataParam params[MAX_PARAMS]; -}tSpiMsgData; - - -typedef struct __attribute__((__packed__)) -{ - unsigned char cmd; - unsigned char tcmd; - //unsigned char totLen; - unsigned char nParam; -}tSpiHdr; - -typedef struct __attribute__((__packed__)) -{ - uint8_t paramLen; - uint32_t param; -}tLongParam; - -typedef struct __attribute__((__packed__)) -{ - uint8_t paramLen; - uint16_t param; -}tIntParam; - -typedef struct __attribute__((__packed__)) -{ - uint8_t paramLen; - uint8_t param; -}tByteParam; - -#endif diff --git a/libraries/WiFi/src/utility/wl_definitions.h b/libraries/WiFi/src/utility/wl_definitions.h deleted file mode 100644 index 70d1de451a8..00000000000 --- a/libraries/WiFi/src/utility/wl_definitions.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - wl_definitions.h - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ -/* - * wl_definitions.h - * - * Created on: Mar 6, 2011 - * Author: dlafauci - */ - -#ifndef WL_DEFINITIONS_H_ -#define WL_DEFINITIONS_H_ - -// Maximum size of a SSID -#define WL_SSID_MAX_LENGTH 32 -// Length of passphrase. Valid lengths are 8-63. -#define WL_WPA_KEY_MAX_LENGTH 63 -// Length of key in bytes. Valid values are 5 and 13. -#define WL_WEP_KEY_MAX_LENGTH 13 -// Size of a MAC-address or BSSID -#define WL_MAC_ADDR_LENGTH 6 -// Size of a MAC-address or BSSID -#define WL_IPV4_LENGTH 4 -// Maximum size of a SSID list -#define WL_NETWORKS_LIST_MAXNUM 10 -// Maxmium number of socket -#define MAX_SOCK_NUM 4 -// Socket not available constant -#define SOCK_NOT_AVAIL 255 -// Default state value for Wifi state field -#define NA_STATE -1 -//Maximum number of attempts to establish wifi connection -#define WL_MAX_ATTEMPT_CONNECTION 10 - -typedef enum { - WL_NO_SHIELD = 255, - WL_IDLE_STATUS = 0, - WL_NO_SSID_AVAIL, - WL_SCAN_COMPLETED, - WL_CONNECTED, - WL_CONNECT_FAILED, - WL_CONNECTION_LOST, - WL_DISCONNECTED -} wl_status_t; - -/* Encryption modes */ -enum wl_enc_type { /* Values map to 802.11 encryption suites... */ - ENC_TYPE_WEP = 5, - ENC_TYPE_TKIP = 2, - ENC_TYPE_CCMP = 4, - /* ... except these two, 7 and 8 are reserved in 802.11-2007 */ - ENC_TYPE_NONE = 7, - ENC_TYPE_AUTO = 8 -}; - - -#endif /* WL_DEFINITIONS_H_ */ diff --git a/libraries/WiFi/src/utility/wl_types.h b/libraries/WiFi/src/utility/wl_types.h deleted file mode 100644 index b9fd5fa0a1e..00000000000 --- a/libraries/WiFi/src/utility/wl_types.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - wl_types.h - Library for Arduino Wifi shield. - Copyright (c) 2011-2014 Arduino. All right reserved. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library 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 - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -*/ -/* - * wl_types.h - * - * Created on: Jul 30, 2010 - * Author: dlafauci - */ - - -#ifndef _WL_TYPES_H_ -#define _WL_TYPES_H_ - -#include - -typedef enum { - WL_FAILURE = -1, - WL_SUCCESS = 1, -} wl_error_code_t; - -/* Authentication modes */ -enum wl_auth_mode { - AUTH_MODE_INVALID, - AUTH_MODE_AUTO, - AUTH_MODE_OPEN_SYSTEM, - AUTH_MODE_SHARED_KEY, - AUTH_MODE_WPA, - AUTH_MODE_WPA2, - AUTH_MODE_WPA_PSK, - AUTH_MODE_WPA2_PSK -}; - -#endif //_WL_TYPES_H_